i915g: Handle fragment depth being in OUT[1] not OUT[0].
authorEmma Anholt <emma@anholt.net>
Sun, 13 Jun 2021 16:39:23 +0000 (09:39 -0700)
committerMarge Bot <eric+marge@anholt.net>
Fri, 18 Jun 2021 04:30:43 +0000 (04:30 +0000)
Prevents regressions when switching to nir-to-tgsi which orders the
outputs differently.

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11329>

src/gallium/drivers/i915/i915_fpc_translate.c

index cbcaeea..46ddff5 100644 (file)
@@ -1186,8 +1186,10 @@ i915_fini_compile(struct i915_context *i915, struct i915_fp_compile *p)
 static void
 i915_fixup_depth_write(struct i915_fp_compile *p)
 {
-   /* XXX assuming pos/depth is always in output[0] */
-   if (p->shader->info.num_outputs != 0 && p->shader->info.output_semantic_name[0] == TGSI_SEMANTIC_POSITION) {
+   for (int i = 0; i < p->shader->info.num_outputs; i++) {
+      if (p->shader->info.output_semantic_name[i] != TGSI_SEMANTIC_POSITION)
+         continue;
+
       const uint depth = UREG(REG_TYPE_OD, 0);
 
       i915_emit_arith(p,