radeonsi: fix mesh shader outputs kill

Mesh shader uses store per vertex output for point size
and store per primitive output for layer id.

This fixes gpu-ratemeter run slow for kill point size
and layer id cases when mono shader is used which expect
to kill these outputs.

Also gather fragment shader per primitive input info
to kill mesh shader per primitive output.

Fixes: e6e21dfbf2 ("radeonsi: kill outputs for mesh shader")
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39644>
This commit is contained in:
Qiang Yu 2026-02-02 10:39:50 +08:00 committed by Marge Bot
parent 5b159025d7
commit f20cd07e21
2 changed files with 5 additions and 1 deletions

View file

@ -35,7 +35,10 @@ bool si_nir_kill_outputs(nir_shader *nir, const union si_shader_key *key)
continue;
nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
if (intr->intrinsic != nir_intrinsic_store_output)
if (intr->intrinsic != nir_intrinsic_store_output &&
/* for mesh shader outputs */
intr->intrinsic != nir_intrinsic_store_per_vertex_output &&
intr->intrinsic != nir_intrinsic_store_per_primitive_output)
continue;
/* No indirect indexing allowed. */

View file

@ -407,6 +407,7 @@ static void gather_instruction(const struct nir_shader *nir, struct si_shader_in
break;
case nir_intrinsic_load_input:
case nir_intrinsic_load_per_vertex_input:
case nir_intrinsic_load_per_primitive_input:
case nir_intrinsic_load_input_vertex:
case nir_intrinsic_load_interpolated_input:
gather_io_instrinsic(nir, info, intr, true);