From eb670d6eafb59d4da456b0b4a7b5339d2b6c12ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 7 Mar 2024 09:19:08 -0500 Subject: [PATCH] nir/divergence_analysis: load_instance_id is convergent within a primitive MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Konstantin Seurer Reviewed-by: Timur Kristóf Part-of: --- src/compiler/nir/nir_divergence_analysis.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 7e49cd2f534..46cbab10a5d 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -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: