From 732b234ddba7ed697cb1ed351d56cc4a8b56539a Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 16 Dec 2021 23:20:31 -0600 Subject: [PATCH] radeonsi/nir: Check for VARYING_SLOT_PRIMITIVE_ID not SYSTEM_VALUE MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This function is called on load/store_input/output. It makes no sense for it to get a SYSTEM_VALUE enum. This only doesn't explode because SYSTEM_VALUE_PRIMITIVE_ID happens to be below VARYING_SLOT_VAR0 so it doesn't interact with any actual varyings. The next commit is going to add another system value which will push SYSTEM_VALUE_PRIMITIVE_ID up by one so it will equal VARYING_SLOT_VAR0 and then the first FS input will always get smashed to flat which isn't what we want. Fixes: b59bb9c07ae4 ("radeonsi: force flat for PrimID early in si_nir_scan_shader") Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_shader_nir.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index a3e49d8..5cd5cd3 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -148,7 +148,7 @@ static void scan_io_usage(struct si_shader_info *info, nir_intrinsic_instr *intr info->input[loc].semantic = semantic + i; - if (semantic == SYSTEM_VALUE_PRIMITIVE_ID) + if (semantic == VARYING_SLOT_PRIMITIVE_ID) info->input[loc].interpolate = INTERP_MODE_FLAT; else info->input[loc].interpolate = interp; -- 2.7.4