From d9942442f200bea0ef5b906f288a5234994767b5 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 17 Aug 2023 12:40:52 -0400 Subject: [PATCH] zink: handle patch variable locations for separate shaders better these don't overlap with other locations so they can keep whatever their current assignments are Part-of: --- src/gallium/drivers/zink/zink_compiler.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index 1e021b79564..cd6f061f891 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -4833,6 +4833,8 @@ fixup_io_locations(nir_shader *nir) continue; 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; else var->data.driver_location = var->data.location; } @@ -4858,7 +4860,10 @@ fixup_io_locations(nir_shader *nir) else size += glsl_count_vec4_slots(var->type, false, false); } - var->data.driver_location = slot; + if (var->data.patch) + var->data.driver_location = var->data.location - VARYING_SLOT_VAR0; + else + var->data.driver_location = slot; found = true; } slot += size;