Module: Mesa
Branch: main
Commit: 3b1f82c7778a713748fa8236f7cdd3c4770fe591
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b1f82c7778a713748fa8236f7cdd3c4770fe591

Author: Gert Wollny <[email protected]>
Date:   Fri Apr 30 22:18:16 2021 +0200

r600/sfn: Fix ssbo/image atomic swap for Cayman

Signed-off-by: Gert Wollny <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10608>

---

 src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp 
b/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp
index d9aabf651a9..33b0e6b5702 100644
--- a/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_emitssboinstruction.cpp
@@ -419,8 +419,7 @@ EmitSSBOInstruction::emit_ssbo_atomic_op(const 
nir_intrinsic_instr *intrin)
    if (intrin->intrinsic == nir_intrinsic_ssbo_atomic_comp_swap) {
       emit_instruction(new AluInstruction(op1_mov, 
m_rat_return_address.reg_i(0),
                                           from_nir(intrin->src[3], 0), 
{alu_write}));
-      // TODO: cayman wants channel 2 here
-      emit_instruction(new AluInstruction(op1_mov, 
m_rat_return_address.reg_i(3),
+      emit_instruction(new AluInstruction(op1_mov, 
m_rat_return_address.reg_i(get_chip_class() == CAYMAN ? 2 : 3),
                                           from_nir(intrin->src[2], 0), 
{alu_last_instr, alu_write}));
    } else {
       emit_instruction(new AluInstruction(op1_mov, 
m_rat_return_address.reg_i(0),
@@ -491,7 +490,7 @@ EmitSSBOInstruction::emit_image_load(const 
nir_intrinsic_instr *intrin)
       if (intrin->intrinsic == nir_intrinsic_image_atomic_comp_swap) {
          emit_instruction(new AluInstruction(op1_mov, 
m_rat_return_address.reg_i(0),
                                              from_nir(intrin->src[4], 0), 
{alu_write}));
-         emit_instruction(new AluInstruction(op1_mov, 
m_rat_return_address.reg_i(3),
+         emit_instruction(new AluInstruction(op1_mov, 
m_rat_return_address.reg_i(get_chip_class() == CAYMAN ? 2 : 3),
                                              from_nir(intrin->src[3], 0), 
{alu_last_instr, alu_write}));
       } else {
          emit_instruction(new AluInstruction(op1_mov, 
m_rat_return_address.reg_i(0),

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to