From f46e04a1c4a46e4e3da1bf9f144fe76b16bf11c8 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Sun, 13 Sep 2020 20:12:12 +0200 Subject: [PATCH] r600/sfn: Fix source swizzle for gradient queries Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp b/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp index a6c4a34f90a..76d4993e61a 100644 --- a/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp @@ -1248,9 +1248,13 @@ bool EmitAluInstruction::emit_tex_fdd(const nir_alu_instr& instr, TexInstruction std::array writemask = {0,1,2,3}; int ncomp = nir_src_num_components(instr.src[0].src); - auto src = vec_from_nir_with_fetch_constant(instr.src[0].src, (1 << ncomp) - 1, {0,1,2,3}); + GPRVector::Swizzle src_swz; + for (auto i = 0; i < 4; ++i) { + src_swz[i] = instr.src[0].swizzle[i]; + } + auto src = vec_from_nir_with_fetch_constant(instr.src[0].src, (1 << ncomp) - 1, src_swz); if (instr.src[0].abs || instr.src[0].negate) { GPRVector tmp = get_temp_vec4();