From 35e3f4ee922a2f5a08dd2adc7b1799e6bf71bc37 Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Thu, 22 May 2025 12:31:37 +0800 Subject: [PATCH] nir: fix PRIMITIVE_INDICES mistreated as varying MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's a sysval in mesh shader, but it share the same slot number with VARYING_SLOT_TESS_LEVEL_INNER. Reviewed-by: Timur Kristóf Reviewed-by: Marek Olšák Part-of: --- src/compiler/nir/nir.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index afa1e01c7a5..5ad77d0b0ff 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -3507,7 +3507,10 @@ nir_slot_is_varying(gl_varying_slot slot, gl_shader_stage next_shader) slot == VARYING_SLOT_LAYER || slot == VARYING_SLOT_VIEWPORT || slot == VARYING_SLOT_TESS_LEVEL_OUTER || - slot == VARYING_SLOT_TESS_LEVEL_INNER || + /* VARYING_SLOT_PRIMITIVE_INDICES = VARYING_SLOT_TESS_LEVEL_INNER, + * VARYING_SLOT_PRIMITIVE_INDICES is sysval in mesh shader. + */ + (slot == VARYING_SLOT_TESS_LEVEL_INNER && at_most_before_gs) || (slot == VARYING_SLOT_VIEW_INDEX && exactly_before_fs); }