diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index a893c4760af..8ec94bb9601 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -3297,6 +3297,7 @@ typedef enum { nir_divergence_view_index_uniform = (1 << 3), nir_divergence_single_frag_shading_rate_per_subgroup = (1 << 4), nir_divergence_multiple_workgroup_per_compute_subgroup = (1 << 5), + nir_divergence_shader_record_ptr_uniform = (1 << 6), } nir_divergence_options; typedef enum { diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 9696c8b4246..44f9adc92c0 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -210,6 +210,9 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr) break; /* Intrinsics with divergence depending on shader stage and hardware */ + case nir_intrinsic_load_shader_record_ptr: + is_divergent = !(options & nir_divergence_shader_record_ptr_uniform); + break; case nir_intrinsic_load_frag_shading_rate: is_divergent = !(options & nir_divergence_single_frag_shading_rate_per_subgroup); break;