aco: fix a hardware bug for MRTZ exports on GFX6
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 23 Jan 2020 16:51:09 +0000 (17:51 +0100)
committerMarge Bot <eric+marge@anholt.net>
Fri, 24 Jan 2020 18:34:27 +0000 (18:34 +0000)
GFX6 (except OLAND and HAINAN) has a bug that it only looks at
the X writemask component.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3533>

src/amd/compiler/aco_instruction_selection.cpp

index 7e3226635a38541f81558b0187e03451fa40ab6e..60344d299ca7763cf191c6ffdb37bf6eacbe468c 100644 (file)
@@ -8364,6 +8364,15 @@ static void export_fs_mrt_z(isel_context *ctx)
       }
    }
 
+   /* GFX6 (except OLAND and HAINAN) has a bug that it only looks at the X
+    * writemask component.
+    */
+   if (ctx->options->chip_class == GFX6 &&
+       ctx->options->family != CHIP_OLAND &&
+       ctx->options->family != CHIP_HAINAN) {
+            enabled_channels |= 0x1;
+   }
+
    bld.exp(aco_opcode::exp, values[0], values[1], values[2], values[3],
            enabled_channels, V_008DFC_SQ_EXP_MRTZ, compr);
 }