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

This commit is contained in:
Conor McCarthy 2023-05-26 16:44:01 +10:00 committed by Alexandre Julliard
parent a2b3f70d8e
commit d46250a59b
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

@ -3378,11 +3378,11 @@ static void spirv_compiler_emit_dereference_register(struct spirv_compiler *comp
} }
else else
{ {
if (reg->idx[1].rel_addr || (reg->idx[1].offset == ~0u && reg->idx[0].rel_addr)) if (reg->idx_count && reg->idx[reg->idx_count - 1].rel_addr)
FIXME("Relative addressing not implemented.\n"); FIXME("Relative addressing not implemented.\n");
/* Handle arrayed registers, e.g. v[3][0]. */ /* Handle arrayed registers, e.g. v[3][0]. */
if (reg->idx[1].offset != ~0u && !register_is_descriptor(reg)) if (reg->idx_count > 1 && !register_is_descriptor(reg))
indexes[index_count++] = spirv_compiler_emit_register_addressing(compiler, &reg->idx[0]); indexes[index_count++] = spirv_compiler_emit_register_addressing(compiler, &reg->idx[0]);
} }