Module: Mesa
Branch: main
Commit: 90d9406436fdf27de180078fac4a25347bd84a3b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=90d9406436fdf27de180078fac4a25347bd84a3b

Author: Samuel Pitoiset <[email protected]>
Date:   Wed Sep 13 14:34:20 2023 +0200

ac/perfcounter: compute the number of global instances of TCP,SQ,GL1C and GL2C

This will be used by SPM.

Signed-off-by: Samuel Pitoiset <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25211>

---

 src/amd/common/ac_perfcounter.c | 12 ++++++++++++
 src/amd/common/ac_perfcounter.h |  1 +
 2 files changed, 13 insertions(+)

diff --git a/src/amd/common/ac_perfcounter.c b/src/amd/common/ac_perfcounter.c
index ee8b359c9e9..0af3031389c 100644
--- a/src/amd/common/ac_perfcounter.c
+++ b/src/amd/common/ac_perfcounter.c
@@ -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 {
diff --git a/src/amd/common/ac_perfcounter.h b/src/amd/common/ac_perfcounter.h
index 9a7c1889aaa..c198c4403ef 100644
--- a/src/amd/common/ac_perfcounter.h
+++ b/src/amd/common/ac_perfcounter.h
@@ -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;

Reply via email to