Module: Mesa
Branch: staging/23.3
Commit: 151cd31e05170d5571778ba406cff708651d7687
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=151cd31e05170d5571778ba406cff708651d7687

Author: Mike Blumenkrantz <michael.blumenkra...@gmail.com>
Date:   Wed Jan 10 12:22:56 2024 -0500

zink: fix separate shader patch variable location adjustment

in spirv, these start at location 0, not location 32

fixes #10414

Fixes: d9942442f20 ("zink: handle patch variable locations for separate shaders 
better")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26981>
(cherry picked from commit 565ee4fafc9490a4ee7eec117123444843376d1c)

---

 .pick_status.json                        | 2 +-
 src/gallium/drivers/zink/zink_compiler.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index a1d677d2073..feba6c3d211 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -564,7 +564,7 @@
         "description": "zink: fix separate shader patch variable location 
adjustment",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "d9942442f200bea0ef5b906f288a5234994767b5",
         "notes": null
diff --git a/src/gallium/drivers/zink/zink_compiler.c 
b/src/gallium/drivers/zink/zink_compiler.c
index 4400d686a0c..6f0d465b2ea 100644
--- a/src/gallium/drivers/zink/zink_compiler.c
+++ b/src/gallium/drivers/zink/zink_compiler.c
@@ -4912,7 +4912,7 @@ fixup_io_locations(nir_shader *nir)
             if (var->data.location == VARYING_SLOT_VAR0)
                var->data.driver_location = 0;
             else if (var->data.patch)
-               var->data.driver_location = var->data.location - 
VARYING_SLOT_VAR0;
+               var->data.driver_location = var->data.location - 
VARYING_SLOT_PATCH0;
             else
                var->data.driver_location = var->data.location;
          }
@@ -4939,7 +4939,7 @@ fixup_io_locations(nir_shader *nir)
                   size += glsl_count_vec4_slots(var->type, false, false);
             }
             if (var->data.patch)
-               var->data.driver_location = var->data.location - 
VARYING_SLOT_VAR0;
+               var->data.driver_location = var->data.location - 
VARYING_SLOT_PATCH0;
             else
                var->data.driver_location = slot;
             found = true;

Reply via email to