From d5109741f372173d6e13bdb6fff06c75def19439 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 5 May 2020 12:44:54 -0400 Subject: [PATCH] tgsi_to_nir: translate non-vec4 image stores correctly set the correct number of components for src data and the intrinsic Reviewed-by: Rob Clark Part-of: --- src/gallium/auxiliary/nir/tgsi_to_nir.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/nir/tgsi_to_nir.c b/src/gallium/auxiliary/nir/tgsi_to_nir.c index 34ececa..2865697 100644 --- a/src/gallium/auxiliary/nir/tgsi_to_nir.c +++ b/src/gallium/auxiliary/nir/tgsi_to_nir.c @@ -1846,12 +1846,15 @@ ttn_mem(struct ttn_compile *c, nir_alu_dest dest, nir_ssa_def **src) instr->src[3] = nir_src_for_ssa(nir_imm_int(b, 0)); /* LOD */ } + unsigned num_components = util_last_bit(tgsi_inst->Dst[0].Register.WriteMask); + if (tgsi_inst->Instruction.Opcode == TGSI_OPCODE_STORE) { - instr->src[3] = nir_src_for_ssa(nir_swizzle(b, src[1], SWIZ(X, Y, Z, W), 4)); + instr->src[3] = nir_src_for_ssa(nir_swizzle(b, src[1], SWIZ(X, Y, Z, W), + num_components)); instr->src[4] = nir_src_for_ssa(nir_imm_int(b, 0)); /* LOD */ } - instr->num_components = 4; + instr->num_components = num_components; } else { unreachable("unexpected file"); } -- 2.7.4