From 033e49995da6f04a52699d6549010963b18fdb5f Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 14 Sep 2023 13:42:25 +0200 Subject: [PATCH] ac/spm: use block flags to initialize instance mapping This simplify this a bit, ideally we would also have a per-SA flag for performance counters. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/common/ac_spm.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/amd/common/ac_spm.c b/src/amd/common/ac_spm.c index 1914d9fae58..39cc9c80ee9 100644 --- a/src/amd/common/ac_spm.c +++ b/src/amd/common/ac_spm.c @@ -152,25 +152,23 @@ ac_spm_init_instance_mapping(const struct radeon_info *info, { uint32_t instance_index = 0, se_index = 0, sa_index = 0; - switch (block->b->b->gpu_block) { - case GL2C: + if (block->b->b->flags & AC_PC_BLOCK_SE) { + if (block->b->b->gpu_block == SQ) { + /* Per-SE blocks. */ + se_index = counter->instance / block->num_instances; + instance_index = counter->instance % block->num_instances; + } else { + /* Per-SA blocks. */ + assert(block->b->b->gpu_block == GL1C || + block->b->b->gpu_block == TCP); + se_index = (counter->instance / block->num_instances) / info->max_sa_per_se; + sa_index = (counter->instance / block->num_instances) % info->max_sa_per_se; + instance_index = counter->instance % block->num_instances; + } + } else { /* Global blocks. */ + assert(block->b->b->gpu_block == GL2C); instance_index = counter->instance; - break; - case SQ: - /* Per-SE blocks. */ - se_index = counter->instance / block->num_instances; - instance_index = counter->instance % block->num_instances; - break; - case GL1C: - case TCP: - /* Per-SA blocks. */ - se_index = (counter->instance / block->num_instances) / info->max_sa_per_se; - sa_index = (counter->instance / block->num_instances) % info->max_sa_per_se; - instance_index = counter->instance % block->num_instances; - break; - default: - unreachable("invalid SPM block found"); } if (se_index >= info->num_se ||