Merge pull request #111013 from stuartcarnie/shader_container_ext

Renderer: Move `reflect_spirv` to `RenderingShaderContainer`
This commit is contained in:
Thaddeus Crews 2025-10-01 17:54:09 -05:00
commit 4594de69fd
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
12 changed files with 425 additions and 391 deletions

View file

@ -428,15 +428,10 @@ void ShaderBakerExportPlugin::_process_work_item(WorkItem p_work_item) {
Vector<RD::ShaderStageSPIRVData> spirv_data = ShaderRD::compile_stages(p_work_item.stage_sources);
ERR_FAIL_COND_MSG(spirv_data.is_empty(), "Unable to retrieve SPIR-V data for shader");
RD::ShaderReflection shader_refl;
Error err = RenderingDeviceCommons::reflect_spirv(spirv_data, shader_refl);
ERR_FAIL_COND_MSG(err != OK, "Unable to reflect SPIR-V data that was compiled");
Ref<RenderingShaderContainer> shader_container = shader_container_format->create_container();
shader_container->set_from_shader_reflection(p_work_item.shader_name, shader_refl);
// Compile shader binary from SPIR-V.
bool code_compiled = shader_container->set_code_from_spirv(spirv_data);
bool code_compiled = shader_container->set_code_from_spirv(p_work_item.shader_name, spirv_data);
ERR_FAIL_COND_MSG(!code_compiled, vformat("Failed to compile code to native for SPIR-V."));
PackedByteArray shader_bytes = shader_container->to_bytes();