From 28c7684eb9a898089844376193d8332b5f58f3d8 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Mon, 28 Nov 2022 11:43:16 +0100 Subject: [PATCH] r600/sfn: always use four slots for Cayman trans ops This is a partial revert of ed6204eb0 (r600/sfn: only use 3 channels on Cayman for trans ops) The scheduler and/or optimizer passes generate faulty code when we use only three slots as decribed in the spec. So for now disable this optimization. Fixes: ed6204eb0 (r600/sfn: only use 3 channels on Cayman for trans ops) Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7774 Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp index 5c69c837b61..635ead4453e 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp @@ -2818,7 +2818,7 @@ emit_alu_trans_op1_cayman(const nir_alu_instr& alu, EAluOp opcode, Shader& shade auto pin = pin_for_components(alu); - unsigned ncomp = nir_dest_num_components(alu.dest.dest) == 4 ? 4 : 3; + unsigned ncomp = 4; //nir_dest_num_components(alu.dest.dest) == 4 ? 4 : 3; /* todo: Actually we need only three channels, but then we have * to make sure that we don't hava w dest */