3838#include " servers/rendering/renderer_rd/uniform_set_cache_rd.h"
3939#include " servers/rendering/rendering_device.h"
4040#include " servers/rendering/rendering_server_default.h"
41+ #include " servers/xr/xr_interface.h"
4142
4243#define PRELOAD_PIPELINES_ON_SURFACE_CACHE_CONSTRUCTION 1
4344
@@ -211,24 +212,16 @@ RID RenderForwardMobile::RenderBufferDataForwardMobile::get_color_fbs(Framebuffe
211212 uint32_t view_count = render_buffers->get_view_count ();
212213
213214 RID vrs_texture;
214- void *rasterization_rate_map = nullptr ;
215215#ifndef XR_DISABLED
216216 RS::ViewportVRSMode vrs_mode = render_buffers->get_vrs_mode ();
217217 if (vrs_mode == RS::VIEWPORT_VRS_XR) {
218218 Ref<XRInterface> xr_interface = XRServer::get_singleton ()->get_primary_interface ();
219219 if (xr_interface.is_valid ()) {
220- if (RD::get_singleton ()->vrs_get_method () == RD::VRS_METHOD_FRAGMENT_DENSITY_MAP && xr_interface->get_vrs_texture_format () == XRInterface::XR_VRS_TEXTURE_FORMAT_FRAGMENT_DENSITY_MAP) {
220+ bool use_vrs_fragment_density_map = RD::get_singleton ()->vrs_get_method () == RD::VRS_METHOD_FRAGMENT_DENSITY_MAP && xr_interface->get_vrs_texture_format () == XRInterface::XR_VRS_TEXTURE_FORMAT_FRAGMENT_DENSITY_MAP;
221+ bool use_vrs_rasterization_rate_map = RD::get_singleton ()->vrs_get_method () == RD::VRS_METHOD_RASTERIZATION_RATE_MAP && xr_interface->get_vrs_texture_format () == XRInterface::XR_VRS_TEXTURE_FORMAT_RASTERIZATION_RATE_MAP;
222+ if (use_vrs_fragment_density_map || use_vrs_rasterization_rate_map) {
221223 vrs_texture = xr_interface->get_vrs_texture ();
222224 }
223- #ifdef VISIONOS_ENABLED
224- if (xr_interface->get_vrs_texture_format () == XRInterface::XR_VRS_TEXTURE_FORMAT_RASTERIZATION_RATE_MAP) {
225- RID rasterization_rate_map_rid = xr_interface->get_vrs_texture ();
226- RD::Texture *texture = RenderingDevice::get_singleton ()->texture_owner .get_or_null (rasterization_rate_map_rid);
227- if (texture) {
228- rasterization_rate_map = (void *)texture->driver_id .id ;
229- }
230- }
231- #endif
232225 }
233226 }
234227#endif // XR_DISABLED
@@ -256,7 +249,6 @@ RID RenderForwardMobile::RenderBufferDataForwardMobile::get_color_fbs(Framebuffe
256249 RD::FramebufferPass pass;
257250 pass.color_attachments .push_back (0 );
258251 pass.depth_attachment = 1 ;
259- pass.rasterization_rate_map = rasterization_rate_map;
260252
261253 if (use_msaa) {
262254 // Add resolve
@@ -277,7 +269,6 @@ RID RenderForwardMobile::RenderBufferDataForwardMobile::get_color_fbs(Framebuffe
277269 RD::FramebufferPass pass;
278270 pass.color_attachments .push_back (0 );
279271 pass.depth_attachment = 1 ;
280- pass.rasterization_rate_map = rasterization_rate_map;
281272
282273 if (use_msaa) {
283274 // add resolve
@@ -304,8 +295,6 @@ RID RenderForwardMobile::RenderBufferDataForwardMobile::get_color_fbs(Framebuffe
304295 RD::FramebufferPass blit_pass;
305296 blit_pass.input_attachments .push_back (color_buffer_id); // Read from our (resolved) color buffer
306297 blit_pass.color_attachments .push_back (target_buffer_id); // Write into our target buffer
307- // this doesn't need VRS nor rasterization_rate_map
308- blit_pass.rasterization_rate_map = nullptr ;
309298 passes.push_back (blit_pass);
310299
311300 return FramebufferCacheRD::get_singleton ()->get_cache_multipass (textures, passes, view_count);
@@ -1209,11 +1198,6 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
12091198 }
12101199
12111200 RD::DrawListID draw_list = RD::get_singleton ()->draw_list_begin (framebuffer, load_color ? RD::DRAW_CLEAR_DEPTH : (RD::DRAW_CLEAR_COLOR_0 | RD::DRAW_CLEAR_DEPTH), c, 0 .0f , 0 , p_render_data->render_region , breadcrumb);
1212- if (p_render_data->xr_viewports .size () == 2 ) {
1213- RD::get_singleton ()->draw_list_set_viewports (draw_list, p_render_data->xr_viewports );
1214- RD::get_singleton ()->draw_list_set_empty_scissor (draw_list);
1215- }
1216-
12171201 RD::FramebufferFormatID fb_format = RD::get_singleton ()->framebuffer_get_format (framebuffer);
12181202
12191203 if (copy_canvas) {
0 commit comments