Mesa (master): nir: Fix overlapping vars in nir_assign_io_var_locations()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Sep 25 15:08:04 UTC 2019


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

Author: Connor Abbott <cwabbott0 at gmail.com>
Date:   Tue Sep 24 17:29:53 2019 +0200

nir: Fix overlapping vars in nir_assign_io_var_locations()

When handling two variables with overlapping locations, we process the
one with lower location first, and then extend the location ->
driver_location map to guarantee that it's contiguous for the second
variable too. But the loop had the wrong bound, so we weren't extending
the map 100%, which could lead to problems later such as an incorrect
num_inputs. The loop index i is an index into the slots of the variable,
so we need to stop at the final slot of the variable (var_size) instead
of the number of unassigned slots.

This fixes
spec at arb_enhanced_layouts@execution at component-layout@vs-fs-array-interleave-range
on radeonsi NIR.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/compiler/nir/nir_linking_helpers.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/compiler/nir/nir_linking_helpers.c b/src/compiler/nir/nir_linking_helpers.c
index 28d2774cae2..8d7302c93c1 100644
--- a/src/compiler/nir/nir_linking_helpers.c
+++ b/src/compiler/nir/nir_linking_helpers.c
@@ -1079,7 +1079,7 @@ nir_assign_io_var_locations(struct exec_list *var_list, unsigned *size,
          if (last_slot_location > location) {
             unsigned num_unallocated_slots = last_slot_location - location;
             unsigned first_unallocated_slot = var_size - num_unallocated_slots;
-            for (unsigned i = first_unallocated_slot; i < num_unallocated_slots; i++) {
+            for (unsigned i = first_unallocated_slot; i < var_size; i++) {
                assigned_locations[var->data.location + i] = location;
                location++;
             }




More information about the mesa-commit mailing list