ac/spm: setup write broadcasting correctly

Based on PAL's PerfExperiment::BuildGrbmGfxIndex method.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15646>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2022-03-29 13:43:39 +02:00
parent 77116d34ea
commit ca40bad84a

View file

@ -26,6 +26,7 @@
#include "util/bitscan.h"
#include "util/u_memory.h"
#include "ac_perfcounter.h"
static struct ac_spm_block_select *
ac_spm_get_block_select(struct ac_spm_trace_data *spm_trace,
@ -55,6 +56,14 @@ ac_spm_get_block_select(struct ac_spm_trace_data *spm_trace,
new_block_sel->b = block;
new_block_sel->num_counters = block->b->b->num_spm_counters;
/* Broadcast global block writes to SEs and SAs */
if (!(block->b->b->flags & (AC_PC_BLOCK_SE | AC_PC_BLOCK_SHADER)))
new_block_sel->grbm_gfx_index = S_030800_SE_BROADCAST_WRITES(1) |
S_030800_SH_BROADCAST_WRITES(1);
/* Broadcast per SE block writes to SAs */
else if (block->b->b->flags & AC_PC_BLOCK_SE)
new_block_sel->grbm_gfx_index = S_030800_SH_BROADCAST_WRITES(1);
return new_block_sel;
}