diff --git a/drivers/d3d12/rendering_shader_container_d3d12.cpp b/drivers/d3d12/rendering_shader_container_d3d12.cpp index 21a24f952d..d4fe32e280 100644 --- a/drivers/d3d12/rendering_shader_container_d3d12.cpp +++ b/drivers/d3d12/rendering_shader_container_d3d12.cpp @@ -66,6 +66,9 @@ GODOT_MSVC_WARNING_IGNORE(4806) // "'&': unsafe operation: no value of type 'boo #include extern "C" { #include + +void dxil_reassign_driver_locations(nir_shader *s, nir_variable_mode modes, + uint64_t other_stage_mask, const BITSET_WORD *other_stage_frac_mask); } GODOT_GCC_WARNING_POP @@ -430,6 +433,10 @@ bool RenderingShaderContainerD3D12::_convert_spirv_to_nir(Spandata.location = VARYING_SLOT_POS; shader->info.inputs_read |= VARYING_BIT_POS; + + if (prev_shader) { + dxil_reassign_driver_locations(shader, nir_var_shader_in, prev_shader->info.outputs_written, NULL); + dxil_reassign_driver_locations(prev_shader, nir_var_shader_out, shader->info.inputs_read, NULL); + } } } - if (prev_shader) { - dxil_spirv_metadata dxil_metadata = {}; - dxil_spirv_nir_link(shader, prev_shader, &dxil_runtime_conf, &dxil_metadata); - } } return true;