From a2b3f70d8ecf89ef086b1274accfe424f508c1a6 Mon Sep 17 00:00:00 2001 From: Conor McCarthy Date: Fri, 26 May 2023 16:43:11 +1000 Subject: [PATCH] vkd3d-shader/spirv: Use the register index count in aggregate register dereferences. --- libs/vkd3d-shader/spirv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index f21e24f2..410f074b 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -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, ®->idx[1]); - if (reg->idx[1].offset != ~0u) + if (reg->idx_count > 1) indexes[index_count++] = spirv_compiler_emit_register_addressing(compiler, ®->idx[0]); if (!index_count) /* A register sysval which is an array in SPIR-V, e.g. SAMPLEMASK. */