From fc951855ed7b551410bf3f7d293f8a164a5c71e2 Mon Sep 17 00:00:00 2001 From: clayjohn Date: Wed, 17 Sep 2025 11:30:35 -0700 Subject: [PATCH] Move check for sky cubemap array back into the SkyRD initializer so it is set before being used. Previously it was moved out of this function becuase we relied on RenderingServer::get_video_adapter_name which wasn't available yet. However, that was unnecessary since it is just a wrapper around RenderingDevice::get_device_name() which is available. --- servers/rendering/renderer_rd/environment/sky.cpp | 15 ++++++--------- servers/rendering/renderer_rd/environment/sky.h | 4 +--- .../renderer_rd/renderer_compositor_rd.cpp | 5 ----- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/servers/rendering/renderer_rd/environment/sky.cpp b/servers/rendering/renderer_rd/environment/sky.cpp index 268b11b9bfa..069c6f4f914 100644 --- a/servers/rendering/renderer_rd/environment/sky.cpp +++ b/servers/rendering/renderer_rd/environment/sky.cpp @@ -727,6 +727,12 @@ SkyRD::SkyRD() { roughness_layers = GLOBAL_GET("rendering/reflections/sky_reflections/roughness_layers"); sky_ggx_samples_quality = GLOBAL_GET("rendering/reflections/sky_reflections/ggx_samples"); sky_use_cubemap_array = GLOBAL_GET("rendering/reflections/sky_reflections/texture_array_reflections"); +#if defined(MACOS_ENABLED) && defined(__x86_64__) + if (OS::get_singleton()->get_current_rendering_driver_name() == "vulkan" && RenderingDevice::get_singleton()->get_device_name().contains("Intel")) { + // Disable texture array reflections on macOS on Intel GPUs due to driver bugs. + sky_use_cubemap_array = false; + } +#endif } void SkyRD::init() { @@ -952,15 +958,6 @@ void SkyRD::set_texture_format(RD::DataFormat p_texture_format) { texture_format = p_texture_format; } -#if defined(MACOS_ENABLED) && defined(__x86_64__) -void SkyRD::check_cubemap_array() { - if (OS::get_singleton()->get_current_rendering_driver_name() == "vulkan" && RenderingServer::get_singleton()->get_video_adapter_name().contains("Intel")) { - // Disable texture array reflections on macOS on Intel GPUs due to driver bugs. - sky_use_cubemap_array = false; - } -} -#endif - SkyRD::~SkyRD() { // cleanup anything created in init... RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton(); diff --git a/servers/rendering/renderer_rd/environment/sky.h b/servers/rendering/renderer_rd/environment/sky.h index 94566431389..6c5dcb11aad 100644 --- a/servers/rendering/renderer_rd/environment/sky.h +++ b/servers/rendering/renderer_rd/environment/sky.h @@ -281,9 +281,7 @@ public: uint32_t sky_ggx_samples_quality; bool sky_use_cubemap_array; -#if defined(MACOS_ENABLED) && defined(__x86_64__) - void check_cubemap_array(); -#endif + Sky *dirty_sky_list = nullptr; mutable RID_Owner sky_owner; int roughness_layers; diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp index 8642d71789c..385122decac 100644 --- a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp +++ b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp @@ -159,11 +159,6 @@ void RendererCompositorRD::initialize() { blit.sampler = RD::get_singleton()->sampler_create(RD::SamplerState()); } -#if defined(MACOS_ENABLED) && defined(__x86_64__) - if (scene) { - scene->get_sky()->check_cubemap_array(); - } -#endif } uint64_t RendererCompositorRD::frame = 1;