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: