From 753af683b583225cb1060890bfb84145c2620716 Mon Sep 17 00:00:00 2001 From: Ella Stanforth Date: Mon, 4 Aug 2025 09:59:22 +0100 Subject: [PATCH] pco: Switch to common alpha_to_coverage intrinsic Signed-off-by: Ella Stanforth Acked-by: Erik Faye-Lund Part-of: --- src/compiler/nir/nir_intrinsics.py | 2 -- src/imagination/pco/pco_nir_pvfio.c | 2 +- src/imagination/pco/pco_trans_nir.c | 11 +++++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index 975126e8459..76bccbd0e6f 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -2750,8 +2750,6 @@ intrinsic("flush_tile_buffer_pco", src_comp=[1, 1], indices=[BASE, RANGE]) intrinsic("dummy_load_store_pco", indices=[BASE]) -intrinsic("alpha_to_coverage_pco", src_comp=[1], dest_comp=1, flags=[CAN_REORDER], bit_sizes=[32]) - index("bool", "scale") index("bool", "roundzero") intrinsic("pack_pco", src_comp=[0], dest_comp=1, flags=[CAN_ELIMINATE, CAN_REORDER], indices=[FORMAT], bit_sizes=[32]) diff --git a/src/imagination/pco/pco_nir_pvfio.c b/src/imagination/pco/pco_nir_pvfio.c index 5176ffdf3db..b0bdca2064f 100644 --- a/src/imagination/pco/pco_nir_pvfio.c +++ b/src/imagination/pco/pco_nir_pvfio.c @@ -682,7 +682,7 @@ lower_alpha_to_coverage(nir_builder *b, nir_instr *instr, UNUSED void *cb_data) nir_def *alpha = input->num_components < 4 ? nir_imm_float(b, 1.0f) : nir_channel(b, input, 3); - nir_def *a2c_mask = nir_alpha_to_coverage_pco(b, alpha); + nir_def *a2c_mask = nir_u2u32(b, nir_alpha_to_coverage(b, alpha)); a2c_mask = nir_iand(b, a2c_mask, nir_load_savmsk_vm_pco(b)); diff --git a/src/imagination/pco/pco_trans_nir.c b/src/imagination/pco/pco_trans_nir.c index e1b4967ae68..d2737d7af0d 100644 --- a/src/imagination/pco/pco_trans_nir.c +++ b/src/imagination/pco/pco_trans_nir.c @@ -1859,9 +1859,12 @@ static pco_instr *trans_intr(trans_ctx *tctx, nir_intrinsic_instr *intr) break; } - case nir_intrinsic_alpha_to_coverage_pco: + case nir_intrinsic_alpha_to_coverage: assert(tctx->stage == MESA_SHADER_FRAGMENT); - instr = pco_pck(&tctx->b, dest, src[0], .pck_fmt = PCO_PCK_FMT_COV); + instr = pco_pck(&tctx->b, + pco_ref_bits(dest, 32), + src[0], + .pck_fmt = PCO_PCK_FMT_COV); break; case nir_intrinsic_mutex_pco: @@ -2800,6 +2803,10 @@ static pco_instr *trans_alu(trans_ctx *tctx, nir_alu_instr *alu) instr = pco_mov(&tctx->b, pco_ref_bits(dest, 32), src[0]); break; + case nir_op_u2u32: + instr = pco_mov(&tctx->b, dest, pco_ref_bits(src[0], 32)); + break; + case nir_op_f2i32_rtne: instr = pco_pck(&tctx->b, dest, src[0], .pck_fmt = PCO_PCK_FMT_S32); break;