From b59bb9c07ae47f9f59bd7fcad6af77c591bb3611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 11 Aug 2021 00:12:05 -0400 Subject: [PATCH] radeonsi: force flat for PrimID early in si_nir_scan_shader Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_shader_nir.c | 6 +++++- src/gallium/drivers/radeonsi/si_state_shaders.c | 3 +-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index 8da24a4bd68..0da9054b561 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -114,7 +114,11 @@ static void scan_io_usage(struct si_shader_info *info, nir_intrinsic_instr *intr unsigned loc = driver_location + i; info->input_semantic[loc] = semantic + i; - info->input_interpolate[loc] = interp; + + if (semantic == SYSTEM_VALUE_PRIMITIVE_ID) + info->input_interpolate[loc] = INTERP_MODE_FLAT; + else + info->input_interpolate[loc] = interp; if (mask) { info->input_usage_mask[loc] |= mask; diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index b217ec7eb54..bec6524c451 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -3531,8 +3531,7 @@ static unsigned si_get_ps_input_cntl(struct si_context *sctx, struct si_shader * unsigned offset, ps_input_cntl = 0; if (interpolate == INTERP_MODE_FLAT || - (interpolate == INTERP_MODE_COLOR && rs->flatshade) || - semantic == VARYING_SLOT_PRIMITIVE_ID) + (interpolate == INTERP_MODE_COLOR && rs->flatshade)) ps_input_cntl |= S_028644_FLAT_SHADE(1); if (semantic == VARYING_SLOT_PNTC ||