ir3: Fixup dual-source blending slot
authorConnor Abbott <cwabbott0@gmail.com>
Thu, 14 May 2020 14:11:58 +0000 (16:11 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 14 May 2020 18:15:31 +0000 (18:15 +0000)
The hardware expects that where MRT0 and MRT1 would normally go are the
dual sources for MRT0, whereas GLSL has an extra "index" parameter that
indicates which source it is. Remap it when handling FS outputs.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5039>

src/freedreno/ir3/ir3_compiler_nir.c

index 9e1105bce08ee41efc1e24cb5db202b0ae0bc343..7ba65e1498e0375d96a0a10b0128819ab42b9904 100644 (file)
@@ -3112,6 +3112,7 @@ setup_output(struct ir3_context *ctx, nir_variable *out)
                        so->writes_smask = true;
                        break;
                default:
+                       slot += out->data.index; /* For dual-src blend */
                        if (slot >= FRAG_RESULT_DATA0)
                                break;
                        ir3_context_error(ctx, "unknown FS output name: %s\n",