Module: vkd3d Branch: master Commit: 1d45b7a4220800f1f4ad72096d8dc9a9f20a442a URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/1d45b7a4220800f1f4ad72096d8dc9... Author: Giovanni Mascellani <gmascellani(a)codeweavers.com> Date: Wed Jan 17 14:07:27 2024 +0100 vkd3d-shader/spirv: Normalise the shader before allocating registers. So registers are allocated after normalisation (which could require additional registers). --- libs/vkd3d-shader/spirv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 74db0c45..e8068f3a 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -9680,6 +9680,9 @@ static int spirv_compiler_generate_spirv(struct spirv_compiler *compiler, enum vkd3d_result result = VKD3D_OK; unsigned int i; + if ((result = vkd3d_shader_normalise(parser, compile_info)) < 0) + return result; + if (parser->shader_desc.temp_count) spirv_compiler_emit_temps(compiler, parser->shader_desc.temp_count); if (parser->shader_desc.ssa_count) @@ -9690,9 +9693,6 @@ static int spirv_compiler_generate_spirv(struct spirv_compiler *compiler, compiler->location.column = 0; compiler->location.line = 1; - if ((result = vkd3d_shader_normalise(parser, compile_info)) < 0) - return result; - if (parser->shader_desc.block_count && !spirv_compiler_init_blocks(compiler, parser->shader_desc.block_count)) return VKD3D_ERROR_OUT_OF_MEMORY;