From 3ffcae66a883564afa0f10d0b7b0af11da121e59 Mon Sep 17 00:00:00 2001 From: Stuart Carnie Date: Thu, 2 Oct 2025 10:02:18 +1000 Subject: [PATCH] Renderer: Fix missing shader_name; use forward declarations * Moving over to RenderingShaderContainer, missed setting shader_name * Use forward declaration reduces compile time when modifying rendering_shader_container.h from over 950s to about 10-15 --- editor/export/shader_baker_export_plugin.cpp | 1 + editor/export/shader_baker_export_plugin.h | 3 ++- servers/rendering/rendering_device.cpp | 1 + servers/rendering/rendering_device_driver.h | 4 +++- servers/rendering/rendering_shader_container.cpp | 2 ++ 5 files changed, 9 insertions(+), 2 deletions(-) diff --git a/editor/export/shader_baker_export_plugin.cpp b/editor/export/shader_baker_export_plugin.cpp index 55c9490e8d1..8da031a764f 100644 --- a/editor/export/shader_baker_export_plugin.cpp +++ b/editor/export/shader_baker_export_plugin.cpp @@ -37,6 +37,7 @@ #include "scene/3d/sprite_3d.h" #include "servers/rendering/renderer_rd/renderer_scene_render_rd.h" #include "servers/rendering/renderer_rd/storage_rd/material_storage.h" +#include "servers/rendering/rendering_shader_container.h" // Ensure that AlphaCut is the same between the two classes so we can share the code to detect transparency. static_assert(ENUM_MEMBERS_EQUAL(SpriteBase3D::ALPHA_CUT_DISABLED, Label3D::ALPHA_CUT_DISABLED)); diff --git a/editor/export/shader_baker_export_plugin.h b/editor/export/shader_baker_export_plugin.h index 46005ce1805..208814492a5 100644 --- a/editor/export/shader_baker_export_plugin.h +++ b/editor/export/shader_baker_export_plugin.h @@ -32,7 +32,8 @@ #include "editor/export/editor_export_plugin.h" #include "servers/rendering/renderer_rd/shader_rd.h" -#include "servers/rendering/rendering_shader_container.h" + +class RenderingShaderContainerFormat; class ShaderBakerExportPluginPlatform : public RefCounted { GDCLASS(ShaderBakerExportPluginPlatform, RefCounted); diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp index b6ebfcaab12..0cda4c6cde8 100644 --- a/servers/rendering/rendering_device.cpp +++ b/servers/rendering/rendering_device.cpp @@ -37,6 +37,7 @@ #include "core/config/project_settings.h" #include "core/io/dir_access.h" #include "modules/modules_enabled.gen.h" +#include "servers/rendering/rendering_shader_container.h" #ifdef MODULE_GLSLANG_ENABLED #include "modules/glslang/shader_compile.h" diff --git a/servers/rendering/rendering_device_driver.h b/servers/rendering/rendering_device_driver.h index ae048e7709a..a69988c994f 100644 --- a/servers/rendering/rendering_device_driver.h +++ b/servers/rendering/rendering_device_driver.h @@ -49,7 +49,9 @@ #include "core/variant/type_info.h" #include "servers/rendering/rendering_context_driver.h" #include "servers/rendering/rendering_device_commons.h" -#include "servers/rendering/rendering_shader_container.h" + +class RenderingShaderContainer; +class RenderingShaderContainerFormat; // These utilities help drivers avoid allocations. #define ALLOCA(m_size) ((m_size != 0) ? alloca(m_size) : nullptr) diff --git a/servers/rendering/rendering_shader_container.cpp b/servers/rendering/rendering_shader_container.cpp index 6b2db496904..089ddecfa2f 100644 --- a/servers/rendering/rendering_shader_container.cpp +++ b/servers/rendering/rendering_shader_container.cpp @@ -127,6 +127,8 @@ Error RenderingShaderContainer::reflect_spirv(const String &p_shader_name, Span< using RDC = RenderingDeviceCommons; RDC::ShaderReflection reflection; + shader_name = p_shader_name.utf8(); + const uint32_t spirv_size = p_spirv.size() + 0; r_refl.resize(spirv_size);