r600: fix texture gather swizzling.
authorDave Airlie <airlied@redhat.com>
Thu, 8 Feb 2018 06:19:28 +0000 (16:19 +1000)
committerDave Airlie <airlied@redhat.com>
Thu, 8 Feb 2018 23:32:20 +0000 (09:32 +1000)
This fixes:
KHR-GL45.texture_gather.swizzle
on cayman and redwood.

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

index 358fc4c33d92d469d3cfb65e695cf8577136752a..903a66302632f38161324b112778b8045a287468 100644 (file)
@@ -7976,15 +7976,15 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
                tex.inst_mod = texture_component_select;
 
                if (ctx->bc->chip_class == CAYMAN) {
-               /* GATHER4 result order is different from TGSI TG4 */
-                       tex.dst_sel_x = (inst->Dst[0].Register.WriteMask & 2) ? 0 : 7;
-                       tex.dst_sel_y = (inst->Dst[0].Register.WriteMask & 4) ? 1 : 7;
-                       tex.dst_sel_z = (inst->Dst[0].Register.WriteMask & 1) ? 2 : 7;
+                       tex.dst_sel_x = (inst->Dst[0].Register.WriteMask & 1) ? 0 : 7;
+                       tex.dst_sel_y = (inst->Dst[0].Register.WriteMask & 2) ? 1 : 7;
+                       tex.dst_sel_z = (inst->Dst[0].Register.WriteMask & 4) ? 2 : 7;
                        tex.dst_sel_w = (inst->Dst[0].Register.WriteMask & 8) ? 3 : 7;
                } else {
-                       tex.dst_sel_x = (inst->Dst[0].Register.WriteMask & 2) ? 1 : 7;
-                       tex.dst_sel_y = (inst->Dst[0].Register.WriteMask & 4) ? 2 : 7;
-                       tex.dst_sel_z = (inst->Dst[0].Register.WriteMask & 1) ? 0 : 7;
+                       /* GATHER4 result order is different from TGSI TG4 */
+                       tex.dst_sel_x = (inst->Dst[0].Register.WriteMask & 1) ? 1 : 7;
+                       tex.dst_sel_y = (inst->Dst[0].Register.WriteMask & 2) ? 2 : 7;
+                       tex.dst_sel_z = (inst->Dst[0].Register.WriteMask & 4) ? 0 : 7;
                        tex.dst_sel_w = (inst->Dst[0].Register.WriteMask & 8) ? 3 : 7;
                }
        }