ac/perfcounter: compute the number of global instances of TCP,SQ,GL1C and GL2C
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 13 Sep 2023 12:34:20 +0000 (14:34 +0200)
committerMarge Bot <emma+marge@anholt.net>
Thu, 14 Sep 2023 14:17:19 +0000 (14:17 +0000)
This will be used by SPM.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

src/amd/common/ac_perfcounter.c
src/amd/common/ac_perfcounter.h

index ee8b359..0af3031 100644 (file)
@@ -1182,6 +1182,18 @@ bool ac_init_perfcounters(const struct radeon_info *info,
          block->num_instances = MAX2(1, info->max_good_cu_per_sa);
       }
 
+      if (info->gfx_level >= GFX10) {
+         if (!strcmp(block->b->b->name, "TCP")) {
+            block->num_global_instances = MAX2(1, info->num_cu_per_sh) * info->num_se * info->max_sa_per_se;
+         } else if (!strcmp(block->b->b->name, "SQ")) {
+            block->num_global_instances = block->num_instances * info->num_se;
+         } else if (!strcmp(block->b->b->name, "GL1C")) {
+            block->num_global_instances = block->num_instances * info->num_se * info->max_sa_per_se;
+         } else if (!strcmp(block->b->b->name, "GL2C")) {
+            block->num_global_instances = info->num_tcc_blocks;
+         }
+      }
+
       if (ac_pc_block_has_per_instance_groups(pc, block)) {
          block->num_groups = block->num_instances;
       } else {
index 9a7c188..c198c44 100644 (file)
@@ -119,6 +119,7 @@ struct ac_pc_block_gfxdescr {
 struct ac_pc_block {
    const struct ac_pc_block_gfxdescr *b;
    unsigned num_instances;
+   unsigned num_global_instances;
 
    unsigned num_groups;
    char *group_names;