agx: switch to demote internally
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29179>
This commit is contained in:
committed by
Marge Bot
parent
35d6f4a394
commit
765bf9a25b
@@ -107,7 +107,7 @@ agx_nir_lower_cull_distance_fs(nir_shader *s, unsigned nr_distances)
|
||||
}
|
||||
|
||||
/* Emulate primitive culling by discarding fragments */
|
||||
nir_discard_if(b, culled);
|
||||
nir_demote_if(b, culled);
|
||||
|
||||
s->info.inputs_read |= BITFIELD64_RANGE(VARYING_SLOT_CULL_PRIMITIVE,
|
||||
DIV_ROUND_UP(nr_distances, 4));
|
||||
|
||||
@@ -84,7 +84,9 @@ static bool
|
||||
lower_discard(nir_builder *b, nir_intrinsic_instr *intr, UNUSED void *data)
|
||||
{
|
||||
if (intr->intrinsic != nir_intrinsic_discard &&
|
||||
intr->intrinsic != nir_intrinsic_discard_if)
|
||||
intr->intrinsic != nir_intrinsic_discard_if &&
|
||||
intr->intrinsic != nir_intrinsic_demote &&
|
||||
intr->intrinsic != nir_intrinsic_demote_if)
|
||||
return false;
|
||||
|
||||
b->cursor = nir_before_instr(&intr->instr);
|
||||
@@ -93,7 +95,8 @@ 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_discard_if)
|
||||
if (intr->intrinsic == nir_intrinsic_discard_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 */
|
||||
|
||||
@@ -47,7 +47,7 @@ agx_nir_lower_poly_stipple(nir_shader *s)
|
||||
nir_imm_int(b, 1));
|
||||
|
||||
/* Discard fragments where the pattern is 0 */
|
||||
nir_discard_if(b, nir_ieq_imm(b, bit, 0));
|
||||
nir_demote_if(b, nir_ieq_imm(b, bit, 0));
|
||||
s->info.fs.uses_discard = true;
|
||||
|
||||
nir_metadata_preserve(b->impl,
|
||||
|
||||
Reference in New Issue
Block a user