ac/spm: use block flags to initialize instance mapping
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 14 Sep 2023 11:42:25 +0000 (13:42 +0200)
committerMarge Bot <emma+marge@anholt.net>
Mon, 18 Sep 2023 07:07:31 +0000 (07:07 +0000)
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>

src/amd/common/ac_spm.c

index 1914d9f..39cc9c8 100644 (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 ||