Skip to content

Commit de654d9

Browse files
committed
OpenXR: Fix composition layers not having correct play space
1 parent 9c7e403 commit de654d9

8 files changed

+4
-25
lines changed

modules/openxr/extensions/openxr_composition_layer_extension.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ XrCompositionLayerBaseHeader *OpenXRViewportCompositionLayerProvider::get_compos
209209
switch (composition_layer->type) {
210210
case XR_TYPE_COMPOSITION_LAYER_QUAD: {
211211
XrCompositionLayerQuad *quad_layer = (XrCompositionLayerQuad *)composition_layer;
212+
quad_layer->space = openxr_api->get_play_space();
212213
quad_layer->subImage.swapchain = swapchain_info.get_swapchain();
213214
quad_layer->subImage.imageArrayIndex = 0;
214215
quad_layer->subImage.imageRect.offset.x = 0;
@@ -219,6 +220,7 @@ XrCompositionLayerBaseHeader *OpenXRViewportCompositionLayerProvider::get_compos
219220

220221
case XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR: {
221222
XrCompositionLayerCylinderKHR *cylinder_layer = (XrCompositionLayerCylinderKHR *)composition_layer;
223+
cylinder_layer->space = openxr_api->get_play_space();
222224
cylinder_layer->subImage.swapchain = swapchain_info.get_swapchain();
223225
cylinder_layer->subImage.imageArrayIndex = 0;
224226
cylinder_layer->subImage.imageRect.offset.x = 0;
@@ -229,6 +231,7 @@ XrCompositionLayerBaseHeader *OpenXRViewportCompositionLayerProvider::get_compos
229231

230232
case XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR: {
231233
XrCompositionLayerEquirect2KHR *equirect_layer = (XrCompositionLayerEquirect2KHR *)composition_layer;
234+
equirect_layer->space = openxr_api->get_play_space();
232235
equirect_layer->subImage.swapchain = swapchain_info.get_swapchain();
233236
equirect_layer->subImage.imageArrayIndex = 0;
234237
equirect_layer->subImage.imageRect.offset.x = 0;

modules/openxr/openxr_api.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2302,7 +2302,7 @@ void OpenXRAPI::end_frame() {
23022302
};
23032303
result = xrEndFrame(session, &frame_end_info);
23042304
if (XR_FAILED(result)) {
2305-
print_line("OpenXR: failed to end frame! [", get_error_string(result), "]");
2305+
print_line("OpenXR: rendering skipped and failed to end frame! [", get_error_string(result), "]");
23062306
return;
23072307
}
23082308

modules/openxr/scene/openxr_composition_layer_cylinder.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,6 @@ void OpenXRCompositionLayerCylinder::_bind_methods() {
7676
ADD_PROPERTY(PropertyInfo(Variant::INT, "fallback_segments", PROPERTY_HINT_NONE, ""), "set_fallback_segments", "get_fallback_segments");
7777
}
7878

79-
void OpenXRCompositionLayerCylinder::_on_openxr_session_begun() {
80-
OpenXRCompositionLayer::_on_openxr_session_begun();
81-
if (openxr_api) {
82-
composition_layer.space = openxr_api->get_play_space();
83-
}
84-
}
85-
8679
Ref<Mesh> OpenXRCompositionLayerCylinder::_create_fallback_mesh() {
8780
Ref<ArrayMesh> mesh;
8881
mesh.instantiate();

modules/openxr/scene/openxr_composition_layer_cylinder.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ class OpenXRCompositionLayerCylinder : public OpenXRCompositionLayer {
5050

5151
void _notification(int p_what);
5252

53-
virtual void _on_openxr_session_begun() override;
5453
virtual Ref<Mesh> _create_fallback_mesh() override;
5554

5655
public:

modules/openxr/scene/openxr_composition_layer_equirect.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,6 @@ void OpenXRCompositionLayerEquirect::_bind_methods() {
8181
ADD_PROPERTY(PropertyInfo(Variant::INT, "fallback_segments", PROPERTY_HINT_NONE, ""), "set_fallback_segments", "get_fallback_segments");
8282
}
8383

84-
void OpenXRCompositionLayerEquirect::_on_openxr_session_begun() {
85-
OpenXRCompositionLayer::_on_openxr_session_begun();
86-
if (openxr_api) {
87-
composition_layer.space = openxr_api->get_play_space();
88-
}
89-
}
90-
9184
Ref<Mesh> OpenXRCompositionLayerEquirect::_create_fallback_mesh() {
9285
Ref<ArrayMesh> mesh;
9386
mesh.instantiate();

modules/openxr/scene/openxr_composition_layer_equirect.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ class OpenXRCompositionLayerEquirect : public OpenXRCompositionLayer {
5151

5252
void _notification(int p_what);
5353

54-
virtual void _on_openxr_session_begun() override;
5554
virtual Ref<Mesh> _create_fallback_mesh() override;
5655

5756
public:

modules/openxr/scene/openxr_composition_layer_quad.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,6 @@ void OpenXRCompositionLayerQuad::_bind_methods() {
6262
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "quad_size", PROPERTY_HINT_NONE, ""), "set_quad_size", "get_quad_size");
6363
}
6464

65-
void OpenXRCompositionLayerQuad::_on_openxr_session_begun() {
66-
OpenXRCompositionLayer::_on_openxr_session_begun();
67-
if (openxr_api) {
68-
composition_layer.space = openxr_api->get_play_space();
69-
}
70-
}
71-
7265
Ref<Mesh> OpenXRCompositionLayerQuad::_create_fallback_mesh() {
7366
Ref<QuadMesh> mesh;
7467
mesh.instantiate();

modules/openxr/scene/openxr_composition_layer_quad.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ class OpenXRCompositionLayerQuad : public OpenXRCompositionLayer {
4747

4848
void _notification(int p_what);
4949

50-
virtual void _on_openxr_session_begun() override;
5150
virtual Ref<Mesh> _create_fallback_mesh() override;
5251

5352
public:

0 commit comments

Comments
 (0)