diff --git a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c index c96572bd5a9..8a99e9682b9 100644 --- a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c +++ b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c @@ -637,7 +637,9 @@ static bool lower_intrinsic(nir_builder *b, nir_instr *instr, struct lower_abi_s /* Load point coordinates (x, y) which are written by the hw after the interpolated inputs */ replacement = nir_load_interpolated_input(b, 2, 32, interp_param, nir_imm_int(b, 0), .base = si_get_ps_num_interp(shader), - .component = 2); + .component = 2, + /* This tells si_nir_scan_shader that it's PARAM_GEN */ + .io_semantics.no_varying = 1); break; } case nir_intrinsic_load_poly_line_smooth_enabled: diff --git a/src/gallium/drivers/radeonsi/si_shader_info.c b/src/gallium/drivers/radeonsi/si_shader_info.c index f14ff069cbc..5f6007898db 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.c +++ b/src/gallium/drivers/radeonsi/si_shader_info.c @@ -260,6 +260,10 @@ static void scan_io_usage(const nir_shader *nir, struct si_shader_info *info, semantic = nir_intrinsic_io_semantics(intr).location; if (nir->info.stage == MESA_SHADER_FRAGMENT && is_input) { + /* The PARAM_GEN input shouldn't be scanned. */ + if (nir_intrinsic_io_semantics(intr).no_varying) + return; + /* Gather color PS inputs. We can only get here after lowering colors in monolithic * shaders. This must match what we do for nir_intrinsic_load_color0/1. */