vkd3d-shader/spirv: Use the register index count in aggregate register dereferences.

This commit is contained in:
Conor McCarthy 2023-05-26 16:43:11 +10:00 committed by Alexandre Julliard
parent ad08864134
commit a2b3f70d8e
Notes: Alexandre Julliard 2023-05-26 22:16:37 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/213

View File

@ -3368,9 +3368,9 @@ static void spirv_compiler_emit_dereference_register(struct spirv_compiler *comp
else if (register_info->is_aggregate)
{
/* Indices for these are swapped compared to the generated SPIR-V. */
if (reg->idx[2].offset != ~0u)
if (reg->idx_count > 2)
indexes[index_count++] = spirv_compiler_emit_register_addressing(compiler, &reg->idx[1]);
if (reg->idx[1].offset != ~0u)
if (reg->idx_count > 1)
indexes[index_count++] = spirv_compiler_emit_register_addressing(compiler, &reg->idx[0]);
if (!index_count)
/* A register sysval which is an array in SPIR-V, e.g. SAMPLEMASK. */