pco: use vm/icm for tile buffer store coverage mask

Use the valid/input coverage masks for tile buffer store coverage masks
when running single/multi-sampled fragment shaders respectively.

Fixes: 297a0c269a ("pvr, pco: tile buffer support")

Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Reported-by: Nick Hamilton <nick.hamilton@imgtec.com>
Acked-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40456>
This commit is contained in:
Simon Perretta 2026-03-10 11:25:21 +00:00 committed by Marge Bot
parent 2e7a64c193
commit 8eee60fa78

View file

@ -657,14 +657,26 @@ trans_store_output_fs(trans_ctx *tctx, nir_intrinsic_instr *intr, pco_ref src)
pco_ref_new_ssa(tctx->func, pco_ref_get_bits(src), chans);
pco_comp(&tctx->b, data_comp, addr_data, pco_ref_val16(2));
pco_ref cov_mask_ss = pco_ref_new_ssa32(tctx->func);
pco_savmsk(&tctx->b,
cov_mask_ss,
pco_ref_null(),
.savmsk_mode = PCO_SAVMSK_MODE_VM);
pco_ref cov_mask_ms = pco_ref_new_ssa32(tctx->func);
pco_savmsk(&tctx->b,
cov_mask_ms,
pco_ref_null(),
.savmsk_mode = PCO_SAVMSK_MODE_ICM);
pco_ref cov_mask = pco_ref_new_ssa32(tctx->func);
pco_ref sample_id = pco_ref_hwreg(PCO_SR_SAMP_NUM, PCO_REG_CLASS_SPEC);
pco_shift(&tctx->b,
cov_mask,
pco_one,
sample_id,
pco_ref_null(),
.shiftop = PCO_SHIFTOP_LSL);
pco_csel(&tctx->b,
cov_mask,
fs_is_single_sampled(tctx),
cov_mask_ss,
cov_mask_ms,
.tst_op_main = PCO_TST_OP_MAIN_GZERO,
.tst_type_main = PCO_TST_TYPE_MAIN_U32);
return pco_st_tiled(&tctx->b,
data_comp,