From 0e4d5b171aca4f215781669d78d41c211ff5992e Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 14 Sep 2023 15:49:05 +0200 Subject: [PATCH] radv,radeonsi: make sure to emit GRBM_GFX_INDEX before SQ select registers This was missing, but not sure if it was required given that only the first SE is currently sampled. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_spm.c | 6 +++++- src/gallium/drivers/radeonsi/si_perfcounter.c | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_spm.c b/src/amd/vulkan/radv_spm.c index bdea139..ab620f9 100644 --- a/src/amd/vulkan/radv_spm.c +++ b/src/amd/vulkan/radv_spm.c @@ -65,7 +65,11 @@ radv_emit_spm_counters(struct radv_device *device, struct radeon_cmdbuf *cs, enu const enum amd_gfx_level gfx_level = device->physical_device->rad_info.gfx_level; struct ac_spm *spm = &device->spm; - radeon_check_space(device->ws, cs, spm->num_used_sq_block_sel * 3); + radeon_check_space(device->ws, cs, 3 + spm->num_used_sq_block_sel * 3); + + radeon_set_uconfig_reg( + cs, R_030800_GRBM_GFX_INDEX, + S_030800_SH_BROADCAST_WRITES(1) | S_030800_INSTANCE_BROADCAST_WRITES(1) | S_030800_SE_INDEX(0)); for (uint32_t b = 0; b < spm->num_used_sq_block_sel; b++) { struct ac_spm_block_select *sq_block_sel = &spm->sq_block_sel[b]; diff --git a/src/gallium/drivers/radeonsi/si_perfcounter.c b/src/gallium/drivers/radeonsi/si_perfcounter.c index 42a3f9f..de0fa34 100644 --- a/src/gallium/drivers/radeonsi/si_perfcounter.c +++ b/src/gallium/drivers/radeonsi/si_perfcounter.c @@ -733,6 +733,11 @@ si_emit_spm_counters(struct si_context *sctx, struct radeon_cmdbuf *cs) radeon_begin(cs); + radeon_set_uconfig_reg(R_030800_GRBM_GFX_INDEX, + S_030800_SH_BROADCAST_WRITES(1) | + S_030800_INSTANCE_BROADCAST_WRITES(1) | + S_030800_SE_INDEX(0)); + for (uint32_t b = 0; b < spm->num_used_sq_block_sel; b++) { struct ac_spm_block_select *sq_block_sel = &spm->sq_block_sel[b]; const struct ac_spm_counter_select *cntr_sel = &sq_block_sel->counters[0]; -- 2.7.4