From: Dave Airlie <airl...@redhat.com>

If we don't remap and output this code would trample the outputs
read bits.

This fixes a regression in
dEQP-VK.tessellation.shader_input_output.barrier

Fixes: 1c9c42d16b4c (nir: add varying component packing helpers)
Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 src/compiler/nir/nir_linking_helpers.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/compiler/nir/nir_linking_helpers.c 
b/src/compiler/nir/nir_linking_helpers.c
index 9f0122d..6459c6a 100644
--- a/src/compiler/nir/nir_linking_helpers.c
+++ b/src/compiler/nir/nir_linking_helpers.c
@@ -297,14 +297,15 @@ remap_slots_and_components(struct exec_list *var_list, 
gl_shader_stage stage,
 
          unsigned location = var->data.location - VARYING_SLOT_VAR0;
          struct varying_loc *new_loc = 
&remap[location][var->data.location_frac];
-         if (new_loc->location) {
-            uint64_t slots = (((uint64_t)1 << num_slots) - 1) << 
var->data.location;
-            if (slots & *slots_used)
-               used_across_stages = true;
 
-            if (slots & *out_slots_read)
-               outputs_read = true;
+         uint64_t slots = (((uint64_t)1 << num_slots) - 1) << 
var->data.location;
+         if (slots & *slots_used)
+            used_across_stages = true;
+
+         if (slots & *out_slots_read)
+            outputs_read = true;
 
+         if (new_loc->location) {
             var->data.location = new_loc->location;
             var->data.location_frac = new_loc->component;
          }
-- 
2.9.5

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to