Module: Mesa Branch: main Commit: d0a11c5b9e6f18c59a4a8599bf3fae61095a88e3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d0a11c5b9e6f18c59a4a8599bf3fae61095a88e3
Author: Samuel Pitoiset <[email protected]> Date: Wed Apr 26 14:08:44 2023 +0200 ac/sqtt: add ac_sqtt_se_is_disabled() helper It can be shared between RADV and RadeonSI. Signed-off-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22732> --- src/amd/common/ac_sqtt.c | 11 +++++++++++ src/amd/common/ac_sqtt.h | 2 ++ src/amd/vulkan/radv_sqtt.c | 17 +++-------------- src/gallium/drivers/radeonsi/si_sqtt.c | 18 +++--------------- 4 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/amd/common/ac_sqtt.c b/src/amd/common/ac_sqtt.c index 235ee18f59d..5e596fecf57 100644 --- a/src/amd/common/ac_sqtt.c +++ b/src/amd/common/ac_sqtt.c @@ -251,3 +251,14 @@ ac_sqtt_get_next_cmdbuf_id(struct ac_thread_trace_data *data, return cb_id; } + +bool +ac_sqtt_se_is_disabled(const struct radeon_info *info, unsigned se) +{ + /* FIXME: SQTT only works on SE0 for some unknown reasons. */ + if (info->gfx_level == GFX11) + return se != 0; + + /* No active CU on the SE means it is disabled. */ + return info->cu_mask[se][0] == 0; +} diff --git a/src/amd/common/ac_sqtt.h b/src/amd/common/ac_sqtt.h index 758ea61fc7b..a3b020846ab 100644 --- a/src/amd/common/ac_sqtt.h +++ b/src/amd/common/ac_sqtt.h @@ -560,4 +560,6 @@ bool ac_check_profile_state(const struct radeon_info *info); union rgp_sqtt_marker_cb_id ac_sqtt_get_next_cmdbuf_id(struct ac_thread_trace_data *data, enum amd_ip_type ip_type); +bool ac_sqtt_se_is_disabled(const struct radeon_info *info, unsigned se); + #endif diff --git a/src/amd/vulkan/radv_sqtt.c b/src/amd/vulkan/radv_sqtt.c index ab7c17b4650..0f5d4133f12 100644 --- a/src/amd/vulkan/radv_sqtt.c +++ b/src/amd/vulkan/radv_sqtt.c @@ -35,17 +35,6 @@ radv_is_instruction_timing_enabled(void) return debug_get_bool_option("RADV_THREAD_TRACE_INSTRUCTION_TIMING", true); } -static bool -radv_se_is_disabled(struct radv_device *device, unsigned se) -{ - /* FIXME: SQTT only works on SE0 for some unknown reasons. */ - if (device->physical_device->rad_info.gfx_level == GFX11 && se != 0) - return true; - - /* No active CU on the SE means it is disabled. */ - return device->physical_device->rad_info.cu_mask[se][0] == 0; -} - static uint32_t gfx11_get_thread_trace_ctrl(struct radv_device *device, bool enable) { @@ -102,7 +91,7 @@ radv_emit_thread_trace_start(struct radv_device *device, struct radeon_cmdbuf *c uint64_t shifted_va = data_va >> SQTT_BUFFER_ALIGN_SHIFT; int first_active_cu = ffs(device->physical_device->rad_info.cu_mask[se][0]); - if (radv_se_is_disabled(device, se)) + if (ac_sqtt_se_is_disabled(rad_info, se)) continue; /* Target SEx and SH0. */ @@ -353,7 +342,7 @@ radv_emit_thread_trace_stop(struct radv_device *device, struct radeon_cmdbuf *cs } for (unsigned se = 0; se < max_se; se++) { - if (radv_se_is_disabled(device, se)) + if (ac_sqtt_se_is_disabled(&device->physical_device->rad_info, se)) continue; /* Target SEi and SH0. */ @@ -835,7 +824,7 @@ radv_get_thread_trace(struct radv_queue *queue, struct ac_thread_trace *thread_t struct ac_thread_trace_se thread_trace_se = {0}; int first_active_cu = ffs(device->physical_device->rad_info.cu_mask[se][0]); - if (radv_se_is_disabled(device, se)) + if (ac_sqtt_se_is_disabled(rad_info, se)) continue; if (!ac_is_thread_trace_complete(&device->physical_device->rad_info, &device->thread_trace, diff --git a/src/gallium/drivers/radeonsi/si_sqtt.c b/src/gallium/drivers/radeonsi/si_sqtt.c index 3bbf3dcea40..5d2438ef1af 100644 --- a/src/gallium/drivers/radeonsi/si_sqtt.c +++ b/src/gallium/drivers/radeonsi/si_sqtt.c @@ -71,18 +71,6 @@ si_thread_trace_init_bo(struct si_context *sctx) return true; } -static bool -si_se_is_disabled(struct si_context* sctx, unsigned se) -{ - /* FIXME: SQTT only works on SE0 for some unknown reasons. */ - if (sctx->screen->info.gfx_level == GFX11) - return se != 0; - - /* No active CU on the SE means it is disabled. */ - return sctx->screen->info.cu_mask[se][0] == 0; -} - - static void si_emit_thread_trace_start(struct si_context* sctx, struct radeon_cmdbuf *cs, @@ -99,7 +87,7 @@ si_emit_thread_trace_start(struct si_context* sctx, uint64_t data_va = ac_thread_trace_get_data_va(&sctx->screen->info, sctx->thread_trace, va, se); uint64_t shifted_va = data_va >> SQTT_BUFFER_ALIGN_SHIFT; - if (si_se_is_disabled(sctx, se)) + if (ac_sqtt_se_is_disabled(&sctx->screen->info, se)) continue; /* Target SEx and SH0. */ @@ -390,7 +378,7 @@ si_emit_thread_trace_stop(struct si_context *sctx, } for (unsigned se = 0; se < max_se; se++) { - if (si_se_is_disabled(sctx, se)) + if (ac_sqtt_se_is_disabled(&sctx->screen->info, se)) continue; radeon_begin(cs); @@ -640,7 +628,7 @@ si_get_thread_trace(struct si_context *sctx, struct ac_thread_trace_se thread_trace_se = {0}; - if (si_se_is_disabled(sctx, se)) + if (ac_sqtt_se_is_disabled(&sctx->screen->info, se)) continue; if (!ac_is_thread_trace_complete(&sctx->screen->info, sctx->thread_trace, info)) {
