nir/lower_fragcolor: Fix driver_location assignment
authorAlyssa Rosenzweig <alyssa@collabora.com>
Thu, 22 Apr 2021 15:23:39 +0000 (11:23 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 23 Apr 2021 17:20:43 +0000 (17:20 +0000)
Fixes crash in
dEQP-GLES31.functional.shaders.framebuffer_fetch.basic.last_frag_data
when using this pass.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10411>

src/compiler/nir/nir_lower_fragcolor.c

index 8b67fcb..70ade5c 100644 (file)
@@ -88,7 +88,7 @@ lower_fragcolor_instr(nir_builder *b, nir_instr *intr, UNUSED void *data)
       nir_variable *out_color = nir_variable_create(b->shader, nir_var_shader_out,
                                                    out->type, name);
       out_color->data.location = FRAG_RESULT_DATA0 + i;
-      out_color->data.driver_location = i;
+      out_color->data.driver_location = b->shader->num_outputs++;
       out_color->data.index = out->data.index;
       nir_store_var(b, out_color, frag_color, writemask);
       b->shader->info.outputs_written |= BITFIELD64_BIT(FRAG_RESULT_DATA0 + i);