From f4bc938a4ddb10c0c76eb56a9fd68633ebda011e Mon Sep 17 00:00:00 2001 From: Simon Perretta Date: Wed, 2 Jul 2025 13:27:26 +0100 Subject: [PATCH] pco: support render target/layer id intrinsic Signed-off-by: Simon Perretta Acked-by: Erik Faye-Lund Part-of: --- src/imagination/pco/pco_trans_nir.c | 6 ++++++ src/imagination/vulkan/pvr_pipeline.c | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/imagination/pco/pco_trans_nir.c b/src/imagination/pco/pco_trans_nir.c index 42bbc2fe01b..a81ea6f0501 100644 --- a/src/imagination/pco/pco_trans_nir.c +++ b/src/imagination/pco/pco_trans_nir.c @@ -1426,6 +1426,12 @@ static pco_instr *trans_intr(trans_ctx *tctx, nir_intrinsic_instr *intr) pco_ref_hwreg(PCO_SR_SAMP_NUM, PCO_REG_CLASS_SPEC)); break; + case nir_intrinsic_load_layer_id: + instr = pco_mov(&tctx->b, + dest, + pco_ref_hwreg(PCO_SR_RENDER_TGT_ID, PCO_REG_CLASS_SPEC)); + break; + case nir_intrinsic_load_face_ccw_pco: instr = pco_mov(&tctx->b, dest, diff --git a/src/imagination/vulkan/pvr_pipeline.c b/src/imagination/vulkan/pvr_pipeline.c index ad7fcdfc1fa..2581538cd05 100644 --- a/src/imagination/vulkan/pvr_pipeline.c +++ b/src/imagination/vulkan/pvr_pipeline.c @@ -1751,7 +1751,13 @@ static void pvr_alloc_fs_sysvals(pco_data *data, nir_shader *nir) } /* Clear built-in sysvals. */ - BITSET_CLEAR(system_values_read, SYSTEM_VALUE_SAMPLE_ID); + gl_system_value builtin_sys_vals[] = { + SYSTEM_VALUE_SAMPLE_ID, + SYSTEM_VALUE_LAYER_ID, + }; + + for (unsigned u = 0; u < ARRAY_SIZE(builtin_sys_vals); ++u) + BITSET_CLEAR(system_values_read, builtin_sys_vals[u]); assert(BITSET_IS_EMPTY(system_values_read)); }