r600/cayman: looks like cmpxchg moved to Z
authorDave Airlie <airlied@redhat.com>
Mon, 27 Nov 2017 06:39:49 +0000 (06:39 +0000)
committerDave Airlie <airlied@redhat.com>
Fri, 1 Dec 2017 03:59:17 +0000 (03:59 +0000)
On cayman it appears the cmp component is now in Z.

Fixes:
arb_shader_image_load_store-dead-fragments on cayman.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_shader.c

index 55320cf860d419c32c0e14e9e53a63318546d4ea..ae8326fdd142c8800f69026d1c90559761277954 100644 (file)
@@ -8083,9 +8083,12 @@ static int tgsi_atomic_op_rat(struct r600_shader_ctx *ctx)
                        return r;
 
                memset(&alu, 0, sizeof(struct r600_bytecode_alu));
-              alu.op = ALU_OP1_MOV;
+               alu.op = ALU_OP1_MOV;
                alu.dst.sel = ctx->thread_id_gpr;
-               alu.dst.chan = 3;
+               if (ctx->bc->chip_class == CAYMAN)
+                       alu.dst.chan = 2;
+               else
+                       alu.dst.chan = 3;
                alu.dst.write = 1;
                r600_bytecode_src(&alu.src[0], &ctx->src[2], 0);
                alu.last = 1;