Module: Mesa
Branch: master
Commit: 53b2523c6ed8202ba44596bee7ec7ba8420c4e92
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=53b2523c6ed8202ba44596bee7ec7ba8420c4e92

Author: Eric Anholt <e...@anholt.net>
Date:   Tue Dec  8 17:18:37 2015 -0800

vc4: Fix handling of sample_mask output.

I apparently broke this in a late refactor, in such a way that I decided
its tests were some of those interminable ones that I should just
blacklist from my testing.  As a result, the refactors related to it were
totally wrong.

---

 src/gallium/drivers/vc4/vc4_nir_lower_blend.c |    9 ++++-----
 src/gallium/drivers/vc4/vc4_nir_lower_io.c    |    3 ++-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/vc4/vc4_nir_lower_blend.c 
b/src/gallium/drivers/vc4/vc4_nir_lower_blend.c
index 4b10cb7..a1ec4c7 100644
--- a/src/gallium/drivers/vc4/vc4_nir_lower_blend.c
+++ b/src/gallium/drivers/vc4/vc4_nir_lower_blend.c
@@ -589,10 +589,10 @@ vc4_nir_next_output_driver_location(nir_shader *s)
 {
         int maxloc = -1;
 
-        nir_foreach_variable(var, &s->inputs)
-                maxloc = MAX2(maxloc, var->data.driver_location);
+        nir_foreach_variable(var, &s->outputs)
+                maxloc = MAX2(maxloc, (int)var->data.driver_location);
 
-        return maxloc;
+        return maxloc + 1;
 }
 
 static void
@@ -605,12 +605,11 @@ vc4_nir_store_sample_mask(struct vc4_compile *c, 
nir_builder *b,
         sample_mask->data.driver_location =
                 vc4_nir_next_output_driver_location(c->s);
         sample_mask->data.location = FRAG_RESULT_SAMPLE_MASK;
-        exec_list_push_tail(&c->s->outputs, &sample_mask->node);
 
         nir_intrinsic_instr *intr =
                 nir_intrinsic_instr_create(c->s, nir_intrinsic_store_output);
         intr->num_components = 1;
-        intr->const_index[0] = sample_mask->data.location;
+        intr->const_index[0] = sample_mask->data.driver_location;
 
         intr->src[0] = nir_src_for_ssa(val);
         intr->src[1] = nir_src_for_ssa(nir_imm_int(b, 0));
diff --git a/src/gallium/drivers/vc4/vc4_nir_lower_io.c 
b/src/gallium/drivers/vc4/vc4_nir_lower_io.c
index a46af77..465b288 100644
--- a/src/gallium/drivers/vc4/vc4_nir_lower_io.c
+++ b/src/gallium/drivers/vc4/vc4_nir_lower_io.c
@@ -326,7 +326,8 @@ vc4_nir_lower_output(struct vc4_compile *c, nir_builder *b,
         /* Color output is lowered by vc4_nir_lower_blend(). */
         if (c->stage == QSTAGE_FRAG &&
             (output_var->data.location == FRAG_RESULT_COLOR ||
-             output_var->data.location == FRAG_RESULT_DATA0)) {
+             output_var->data.location == FRAG_RESULT_DATA0 ||
+             output_var->data.location == FRAG_RESULT_SAMPLE_MASK)) {
                 intr->const_index[0] *= 4;
                 return;
         }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to