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 <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25240>
This commit is contained in:
Samuel Pitoiset
2023-09-14 13:42:25 +02:00
committed by Marge Bot
parent 037d7d0f5b
commit 033e49995d
+15 -17
View File
@@ -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 ||