agx: set discard_is_demote

this is simpler/more correct.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29861>
This commit is contained in:
Alyssa Rosenzweig 2024-06-17 16:58:20 -04:00
parent 7dd73290fb
commit 27e3495902
2 changed files with 3 additions and 5 deletions

View file

@ -301,4 +301,5 @@ static const nir_shader_compiler_options agx_nir_options = {
.lower_doubles_options = (nir_lower_doubles_options)(~0),
.lower_fquantize2f16 = true,
.compact_arrays = true,
.discard_is_demote = true,
};

View file

@ -83,9 +83,7 @@ lower_zs_emit(nir_block *block, bool force_early_z)
static bool
lower_discard(nir_builder *b, nir_intrinsic_instr *intr, UNUSED void *data)
{
if (intr->intrinsic != nir_intrinsic_terminate &&
intr->intrinsic != nir_intrinsic_terminate_if &&
intr->intrinsic != nir_intrinsic_demote &&
if (intr->intrinsic != nir_intrinsic_demote &&
intr->intrinsic != nir_intrinsic_demote_if)
return false;
@ -95,8 +93,7 @@ lower_discard(nir_builder *b, nir_intrinsic_instr *intr, UNUSED void *data)
nir_def *no_samples = nir_imm_intN_t(b, 0, 16);
nir_def *killed_samples = all_samples;
if (intr->intrinsic == nir_intrinsic_terminate_if ||
intr->intrinsic == nir_intrinsic_demote_if)
if (intr->intrinsic == nir_intrinsic_demote_if)
killed_samples = nir_bcsel(b, intr->src[0].ssa, all_samples, no_samples);
/* This will get lowered later as needed */