From f434c5c93401f78837910383d85697810e25e353 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 17 Nov 2025 16:31:59 +0100 Subject: [PATCH] ac/spm: add cache counters configuration for GFX12 This is for the cache counters prior to RGP 2.6. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/common/ac_spm.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/amd/common/ac_spm.c b/src/amd/common/ac_spm.c index 01149ff0a85..1ae258a7cb7 100644 --- a/src/amd/common/ac_spm.c +++ b/src/amd/common/ac_spm.c @@ -83,6 +83,28 @@ static struct ac_spm_counter_create_info gfx11_spm_counters[] = { {&gfx103_num_gl2c_misses}, }; +/* GFX12+ */ +static struct ac_spm_counter_descr gfx12_num_scache_hits = {SQ_WGP, 0x146}; +static struct ac_spm_counter_descr gfx12_num_scache_misses = {SQ_WGP, 0x147}; +static struct ac_spm_counter_descr gfx12_num_scache_misses_dup = {SQ_WGP, 0x148}; +static struct ac_spm_counter_descr gfx12_num_icache_hits = {SQ_WGP, 0x12e}; +static struct ac_spm_counter_descr gfx12_num_icache_misses = {SQ_WGP, 0x12f}; +static struct ac_spm_counter_descr gfx12_num_icache_misses_dup = {SQ_WGP, 0x130}; +static struct ac_spm_counter_descr gfx12_num_gl2c_misses = {GL2C, 0x2a}; + +static struct ac_spm_counter_create_info gfx12_spm_counters[] = { + {&gfx10_num_l2_hits}, + {&gfx11_num_l2_misses}, + {&gfx12_num_scache_hits}, + {&gfx12_num_scache_misses}, + {&gfx12_num_scache_misses_dup}, + {&gfx12_num_icache_hits}, + {&gfx12_num_icache_misses}, + {&gfx12_num_icache_misses_dup}, + {&gfx10_num_gl2c_hits}, + {&gfx12_num_gl2c_misses}, +}; + static struct ac_spm_block_select * ac_spm_get_block_select(struct ac_spm *spm, const struct ac_pc_block *block) { @@ -492,6 +514,10 @@ bool ac_init_spm(const struct radeon_info *info, create_info_count = ARRAY_SIZE(gfx11_spm_counters); create_info = gfx11_spm_counters; break; + case GFX12: + create_info_count = ARRAY_SIZE(gfx12_spm_counters); + create_info = gfx12_spm_counters; + break; default: fprintf(stderr, "radv: Failed to initialize SPM because SPM counters aren't implemented.\n"); return false; /* not implemented */