diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 2ae88f5d06d..8d6dad5f87a 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -1012,6 +1012,7 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state) case nir_intrinsic_dpas_intel: case nir_intrinsic_convert_cmat_intel: case nir_intrinsic_load_coverage_mask_intel: + case nir_intrinsic_load_dispatch_mask_intel: case nir_intrinsic_isberd_nv: case nir_intrinsic_isbewr_nv: case nir_intrinsic_vild_nv: diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index 2bcbcca5a37..bdbc0868edb 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -2646,6 +2646,9 @@ system_value("simd_width_intel", 1) # IndirectDataStartAddress system_value("indirect_address_intel", 1) +# The dispatch mask as provided in the FS payload. +system_value("dispatch_mask_intel", 1) + # The raw coverage mask as provided in the FS payload. # The semantics of it depend on the HW state. system_value("coverage_mask_intel", 1) diff --git a/src/intel/compiler/jay/jay_from_nir.c b/src/intel/compiler/jay/jay_from_nir.c index 7217a8e6410..e3a20d02748 100644 --- a/src/intel/compiler/jay/jay_from_nir.c +++ b/src/intel/compiler/jay/jay_from_nir.c @@ -1327,7 +1327,7 @@ jay_emit_intrinsic(struct nir_to_jay_state *nj, nir_intrinsic_instr *intr) JAY_TYPE_U32; break; - case nir_intrinsic_load_coverage_mask_intel: { + case nir_intrinsic_load_dispatch_mask_intel: { jay_def mask = jay_extract(nj->payload.u0, 15); if (nj->s->dispatch_width == 32) { diff --git a/src/intel/compiler/jay/jay_nir.c b/src/intel/compiler/jay/jay_nir.c index 98e9f2f735a..2f5f3551eb0 100644 --- a/src/intel/compiler/jay/jay_nir.c +++ b/src/intel/compiler/jay/jay_nir.c @@ -51,7 +51,7 @@ lower_helper_invocation(nir_builder *b, nir_intrinsic_instr *intr, void *_) /* TODO: Is this right for multisampling? */ b->cursor = nir_before_instr(&intr->instr); nir_def *active = - nir_inot(b, nir_inverse_ballot(b, nir_load_coverage_mask_intel(b))); + nir_inot(b, nir_inverse_ballot(b, nir_load_dispatch_mask_intel(b))); nir_def_replace(&intr->def, active); return true;