diff --git a/modules/openxr/openxr_api.cpp b/modules/openxr/openxr_api.cpp index 0af4bbd0a9c..51a12e772cd 100644 --- a/modules/openxr/openxr_api.cpp +++ b/modules/openxr/openxr_api.cpp @@ -2261,10 +2261,6 @@ void OpenXRAPI::pre_render() { create_main_swapchains(swapchain_size); } - for (OpenXRExtensionWrapper *wrapper : registered_extension_wrappers) { - wrapper->on_pre_render(); - } - void *view_locate_info_next_pointer = nullptr; for (OpenXRExtensionWrapper *extension : frame_info_extensions) { void *np = extension->set_view_locate_info_and_get_next_pointer(view_locate_info_next_pointer); @@ -2335,6 +2331,10 @@ void OpenXRAPI::pre_render() { // Reset this, we haven't found a viewport for output yet render_state.has_xr_viewport = false; + + for (OpenXRExtensionWrapper *wrapper : registered_extension_wrappers) { + wrapper->on_pre_render(); + } } bool OpenXRAPI::pre_draw_viewport(RID p_render_target) { diff --git a/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp b/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp index f01edd2d2df..4520ec8bb92 100644 --- a/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp +++ b/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp @@ -2655,6 +2655,22 @@ void TextureStorage::_texture_format_from_rd(RD::DataFormat p_rd_format, Texture r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B; r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A; } break; // astc 8x8 + case RD::DATA_FORMAT_D16_UNORM: { + r_format.image_format = Image::FORMAT_RH; + r_format.rd_format = RD::DATA_FORMAT_D16_UNORM; + r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R; + r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G; + r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B; + r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A; + } break; + case RD::DATA_FORMAT_D32_SFLOAT: { + r_format.image_format = Image::FORMAT_RF; + r_format.rd_format = RD::DATA_FORMAT_D32_SFLOAT; + r_format.swizzle_r = RD::TEXTURE_SWIZZLE_R; + r_format.swizzle_g = RD::TEXTURE_SWIZZLE_G; + r_format.swizzle_b = RD::TEXTURE_SWIZZLE_B; + r_format.swizzle_a = RD::TEXTURE_SWIZZLE_A; + } break; default: { ERR_FAIL_MSG("Unsupported image format"); diff --git a/servers/rendering/renderer_viewport.cpp b/servers/rendering/renderer_viewport.cpp index d84dced9e1d..f55ff85926e 100644 --- a/servers/rendering/renderer_viewport.cpp +++ b/servers/rendering/renderer_viewport.cpp @@ -732,9 +732,6 @@ void RendererViewport::draw_viewports(bool p_swap_buffers) { Ref xr_interface; XRServer *xr_server = XRServer::get_singleton(); if (xr_server != nullptr) { - // let our XR server know we're about to render our frames so we can get our frame timing - xr_server->pre_render(); - // retrieve the interface responsible for rendering xr_interface = xr_server->get_primary_interface(); } diff --git a/servers/rendering/rendering_server_default.cpp b/servers/rendering/rendering_server_default.cpp index 3a381401a23..09c532aa0bc 100644 --- a/servers/rendering/rendering_server_default.cpp +++ b/servers/rendering/rendering_server_default.cpp @@ -73,6 +73,15 @@ void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) { uint64_t time_usec = OS::get_singleton()->get_ticks_usec(); RENDER_TIMESTAMP("Prepare Render Frame"); + +#ifndef XR_DISABLED + XRServer *xr_server = XRServer::get_singleton(); + if (xr_server != nullptr) { + // Let XR server know we're about to render a frame. + xr_server->pre_render(); + } +#endif // XR_DISABLED + RSG::scene->update(); //update scenes stuff before updating instances RSG::canvas->update(); @@ -88,7 +97,6 @@ void RenderingServerDefault::_draw(bool p_swap_buffers, double frame_step) { RSG::rasterizer->end_frame(p_swap_buffers); #ifndef XR_DISABLED - XRServer *xr_server = XRServer::get_singleton(); if (xr_server != nullptr) { // let our XR server know we're done so we can get our frame timing xr_server->end_frame();