nir/divergence_analysis: load_instance_id is convergent within a primitive

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28049>
This commit is contained in:
Marek Olšák 2024-03-07 09:19:08 -05:00 committed by Marge Bot
parent 310b13b7f0
commit eb670d6eaf

View file

@ -331,6 +331,9 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state)
is_divergent = instr->src[0].ssa->divergent;
is_divergent |= !(options & nir_divergence_single_prim_per_subgroup);
break;
case nir_intrinsic_load_instance_id:
is_divergent = !state->vertex_divergence;
break;
case nir_intrinsic_load_primitive_id:
if (stage == MESA_SHADER_FRAGMENT)
is_divergent = !(options & nir_divergence_single_prim_per_subgroup);
@ -550,7 +553,6 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state)
case nir_intrinsic_load_sample_pos_or_center:
case nir_intrinsic_load_vertex_id_zero_base:
case nir_intrinsic_load_vertex_id:
case nir_intrinsic_load_instance_id:
case nir_intrinsic_load_invocation_id:
case nir_intrinsic_load_local_invocation_id:
case nir_intrinsic_load_local_invocation_index: