Mesa (master): broadcom/vc5: Fix shader input/outputs for gallium' s new NIR linking.

Eric Anholt anholt at kemper.freedesktop.org
Thu Dec 14 22:38:01 UTC 2017


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

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Dec  6 11:30:02 2017 -0800

broadcom/vc5: Fix shader input/outputs for gallium's new NIR linking.

---

 src/broadcom/compiler/nir_to_vir.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index 7a31e242d1..6ec5db58a2 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -627,8 +627,9 @@ static void
 emit_fragment_input(struct v3d_compile *c, int attr, nir_variable *var)
 {
         for (int i = 0; i < glsl_get_vector_elements(var->type); i++) {
-                c->inputs[attr * 4 + i] =
-                        emit_fragment_varying(c, var, i);
+                int chan = var->data.location_frac + i;
+                c->inputs[attr * 4 + chan] =
+                        emit_fragment_varying(c, var, chan);
         }
 }
 
@@ -1482,8 +1483,11 @@ ntq_setup_outputs(struct v3d_compile *c)
                 assert(array_len == 1);
                 (void)array_len;
 
-                for (int i = 0; i < 4; i++)
-                        add_output(c, loc + i, var->data.location, i);
+                for (int i = 0; i < glsl_get_vector_elements(var->type); i++) {
+                        add_output(c, loc + var->data.location_frac + i,
+                                   var->data.location,
+                                   var->data.location_frac + i);
+                }
 
                 if (c->s->info.stage == MESA_SHADER_FRAGMENT) {
                         switch (var->data.location) {




More information about the mesa-commit mailing list