pco/usclib: switch to common defs

Signed-off-by: Simon Perretta <simon.perretta@imgtec.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37439>
This commit is contained in:
Simon Perretta 2025-08-19 11:47:01 +01:00
parent 116d8573d4
commit 61a7a5958d
6 changed files with 41 additions and 23 deletions

View file

@ -335,7 +335,7 @@ enum_map(OM_SCHEDSWAP.t, F_SCHED_CTRL, [
('swap', 'swap'),
])
enum_map(OM_MTX_OP.t, F_LR, [
enum_map(OM_MUTEX_OP.t, F_LR, [
('release', 'release'),
('release_sleep', 'release_sleep'),
('release_wakeup', 'release_wakeup'),
@ -1764,7 +1764,7 @@ encode_map(O_BR_NEXT,
encode_map(O_MUTEX,
encodings=[
(I_MUTEX, [
('lr', OM_MTX_OP),
('lr', OM_MUTEX_OP),
('id', ('pco_ref_get_imm', SRC(0))),
])
],

View file

@ -113,6 +113,25 @@ DRC = enum_type('drc', [
('pending', '?'),
])
MUTEX_ID = enum_type('mutex_id', [
'atomic_emu',
'barrier',
'rsvd_2',
'rsvd_3',
'rsvd_4',
'rsvd_5',
'rsvd_6',
'rsvd_7',
'rsvd_8',
'rsvd_9',
'rsvd_a',
'rsvd_b',
'rsvd_c',
'rsvd_d',
'rsvd_e',
'rsvd_f'
])
# Ref mods.
RM_ONEMINUS = ref_mod('oneminus', BaseType.bool)
RM_CLAMP = ref_mod('clamp', BaseType.bool)
@ -321,7 +340,7 @@ OM_FRED_PART = op_mod_enum('fred_part', [
'b',
])
OM_MTX_OP = op_mod_enum('mtx_op', [
OM_MUTEX_OP = op_mod_enum('mutex_op', [
('release', 'release'),
('release_sleep', 'release.sleep'),
('release_wakeup', 'release.wakeup'),
@ -448,7 +467,7 @@ O_BR = hw_op('br', [OM_EXEC_CND, OM_BRANCH_CND, OM_LINK], has_target_cf_node=Tru
O_BR_NEXT = hw_op('br.next', [OM_EXEC_CND])
O_MUTEX = hw_op('mutex', [OM_MTX_OP], 0, 1)
O_MUTEX = hw_op('mutex', [OM_MUTEX_OP], 0, 1)
# Combination (> 1 instructions per group).
O_SCMP = hw_op('scmp', OM_ALU + [OM_TST_OP_MAIN], 1, 2, [], [[RM_ABS, RM_NEG], [RM_ABS, RM_NEG]])

View file

@ -1870,7 +1870,7 @@ static pco_instr *trans_intr(trans_ctx *tctx, nir_intrinsic_instr *intr)
case nir_intrinsic_mutex_pco:
instr = pco_mutex(&tctx->b,
pco_ref_imm8(nir_intrinsic_mutex_id_pco(intr)),
.mtx_op = nir_intrinsic_mutex_op_pco(intr));
.mutex_op = nir_intrinsic_mutex_op_pco(intr));
break;
case nir_intrinsic_load_instance_num_pco:

View file

@ -3,25 +3,12 @@
* SPDX-License-Identifier: MIT
*/
#ifndef PCO_LIBCL_H
#define PCO_LIBCL_H
#include "compiler/libcl/libcl.h"
#include "compiler/shader_enums.h"
enum pco_mutex_id {
PCO_MUTEX_ID_ATOMIC_EMU,
PCO_MUTEX_ID_BARRIER,
_PCO_MUTEX_ID_COUNT,
};
static_assert(_PCO_MUTEX_ID_COUNT <= 16, "Too many mutex IDs.");
enum pco_mutex_op {
PCO_MUTEX_OP_RELEASE,
PCO_MUTEX_OP_RELEASE_SLEEP,
PCO_MUTEX_OP_RELEASE_WAKEUP,
PCO_MUTEX_OP_LOCK,
};
#define ROGUE_MAX_INSTANCES_PER_TASK 32
#include "pco/pco_common.h"
void nir_mutex_pco(enum pco_mutex_id mutex_id, enum pco_mutex_op mutex_op);
uint32_t nir_load_instance_num_pco(void);
@ -51,3 +38,4 @@ void nir_store_shared(uint32_t value,
uint write_mask,
uint align_mul,
uint align_offset);
#endif /* PCO_LIBCL_H */

View file

@ -17,7 +17,10 @@ pco_usclib_spv = custom_target(
'-I' + join_paths(meson.project_source_root(), 'include'),
'-I' + join_paths(meson.project_source_root(), 'src/compiler/libcl'),
'-I' + join_paths(meson.current_source_dir(), '.'),
'-I' + join_paths(meson.current_source_dir(), '../../../'),
'-I' + join_paths(meson.current_source_dir(), '../..'),
'-I' + join_paths(meson.current_source_dir(), '../../include'),
'-I' + join_paths(meson.current_source_dir(), '../../..'),
'-I' + join_paths(meson.current_build_dir(), '../..'),
cl_args,
],
depfile : 'pco_usclib.h.d',

View file

@ -3,6 +3,14 @@
* SPDX-License-Identifier: MIT
*/
#ifndef __pvr_address_type
#define __pvr_address_type uint64_t
#define __pvr_get_address(addr) addr
#define __pvr_make_address(addr) addr
#endif /* __pvr_address_type */
#include "csbgen/rogue_cdm.h"
#include "hwdef/rogue_hw_defs.h"
#include "libcl.h"
uint32_t