ac/sqtt: add helpers for initializing ac_thread_trace_data
This is common between RADV and RadeonSI. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22594>
This commit is contained in:

committed by
Marge Bot

parent
23f3aa3491
commit
94ce6540d8
@@ -62,6 +62,32 @@ ac_thread_trace_get_data_va(const struct radeon_info *rad_info,
|
||||
return va + ac_thread_trace_get_data_offset(rad_info, data, se);
|
||||
}
|
||||
|
||||
void
|
||||
ac_thread_trace_init(struct ac_thread_trace_data *data)
|
||||
{
|
||||
list_inithead(&data->rgp_pso_correlation.record);
|
||||
simple_mtx_init(&data->rgp_pso_correlation.lock, mtx_plain);
|
||||
|
||||
list_inithead(&data->rgp_loader_events.record);
|
||||
simple_mtx_init(&data->rgp_loader_events.lock, mtx_plain);
|
||||
|
||||
list_inithead(&data->rgp_code_object.record);
|
||||
simple_mtx_init(&data->rgp_code_object.lock, mtx_plain);
|
||||
}
|
||||
|
||||
void
|
||||
ac_thread_trace_finish(struct ac_thread_trace_data *data)
|
||||
{
|
||||
assert(data->rgp_pso_correlation.record_count == 0);
|
||||
simple_mtx_destroy(&data->rgp_pso_correlation.lock);
|
||||
|
||||
assert(data->rgp_loader_events.record_count == 0);
|
||||
simple_mtx_destroy(&data->rgp_loader_events.lock);
|
||||
|
||||
assert(data->rgp_code_object.record_count == 0);
|
||||
simple_mtx_destroy(&data->rgp_code_object.lock);
|
||||
}
|
||||
|
||||
bool
|
||||
ac_is_thread_trace_complete(struct radeon_info *rad_info,
|
||||
const struct ac_thread_trace_data *data,
|
||||
|
@@ -99,6 +99,12 @@ uint64_t
|
||||
ac_thread_trace_get_data_va(const struct radeon_info *rad_info,
|
||||
const struct ac_thread_trace_data *data, uint64_t va, unsigned se);
|
||||
|
||||
void
|
||||
ac_thread_trace_init(struct ac_thread_trace_data *data);
|
||||
|
||||
void
|
||||
ac_thread_trace_finish(struct ac_thread_trace_data *data);
|
||||
|
||||
bool
|
||||
ac_is_thread_trace_complete(struct radeon_info *rad_info,
|
||||
const struct ac_thread_trace_data *data,
|
||||
|
@@ -571,14 +571,7 @@ radv_thread_trace_init(struct radv_device *device)
|
||||
if (!radv_device_acquire_performance_counters(device))
|
||||
return false;
|
||||
|
||||
list_inithead(&thread_trace_data->rgp_pso_correlation.record);
|
||||
simple_mtx_init(&thread_trace_data->rgp_pso_correlation.lock, mtx_plain);
|
||||
|
||||
list_inithead(&thread_trace_data->rgp_loader_events.record);
|
||||
simple_mtx_init(&thread_trace_data->rgp_loader_events.lock, mtx_plain);
|
||||
|
||||
list_inithead(&thread_trace_data->rgp_code_object.record);
|
||||
simple_mtx_init(&thread_trace_data->rgp_code_object.lock, mtx_plain);
|
||||
ac_thread_trace_init(thread_trace_data);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -600,14 +593,7 @@ radv_thread_trace_finish(struct radv_device *device)
|
||||
ws->cs_destroy(device->thread_trace.stop_cs[i]);
|
||||
}
|
||||
|
||||
assert(thread_trace_data->rgp_pso_correlation.record_count == 0);
|
||||
simple_mtx_destroy(&thread_trace_data->rgp_pso_correlation.lock);
|
||||
|
||||
assert(thread_trace_data->rgp_loader_events.record_count == 0);
|
||||
simple_mtx_destroy(&thread_trace_data->rgp_loader_events.lock);
|
||||
|
||||
assert(thread_trace_data->rgp_code_object.record_count == 0);
|
||||
simple_mtx_destroy(&thread_trace_data->rgp_code_object.lock);
|
||||
ac_thread_trace_finish(thread_trace_data);
|
||||
}
|
||||
|
||||
static bool
|
||||
|
@@ -720,14 +720,7 @@ si_init_thread_trace(struct si_context *sctx)
|
||||
if (!si_thread_trace_init_bo(sctx))
|
||||
return false;
|
||||
|
||||
list_inithead(&sctx->thread_trace->rgp_pso_correlation.record);
|
||||
simple_mtx_init(&sctx->thread_trace->rgp_pso_correlation.lock, mtx_plain);
|
||||
|
||||
list_inithead(&sctx->thread_trace->rgp_loader_events.record);
|
||||
simple_mtx_init(&sctx->thread_trace->rgp_loader_events.lock, mtx_plain);
|
||||
|
||||
list_inithead(&sctx->thread_trace->rgp_code_object.record);
|
||||
simple_mtx_init(&sctx->thread_trace->rgp_code_object.lock, mtx_plain);
|
||||
ac_thread_trace_init(sctx->thread_trace);
|
||||
|
||||
if (sctx->gfx_level >= GFX10 &&
|
||||
debug_get_bool_option("AMD_THREAD_TRACE_SPM", sctx->gfx_level < GFX11)) {
|
||||
@@ -764,14 +757,12 @@ si_destroy_thread_trace(struct si_context *sctx)
|
||||
list_del(&record->list);
|
||||
free(record);
|
||||
}
|
||||
simple_mtx_destroy(&sctx->thread_trace->rgp_pso_correlation.lock);
|
||||
|
||||
list_for_each_entry_safe(struct rgp_loader_events_record, record,
|
||||
&loader_events->record, list) {
|
||||
list_del(&record->list);
|
||||
free(record);
|
||||
}
|
||||
simple_mtx_destroy(&sctx->thread_trace->rgp_loader_events.lock);
|
||||
|
||||
list_for_each_entry_safe(struct rgp_code_object_record, record,
|
||||
&code_object->record, list) {
|
||||
@@ -786,7 +777,8 @@ si_destroy_thread_trace(struct si_context *sctx)
|
||||
list_del(&record->list);
|
||||
free(record);
|
||||
}
|
||||
simple_mtx_destroy(&sctx->thread_trace->rgp_code_object.lock);
|
||||
|
||||
ac_thread_trace_finish(sctx->thread_trace);
|
||||
|
||||
hash_table_foreach(sctx->thread_trace->pipeline_bos->table, entry) {
|
||||
struct si_sqtt_fake_pipeline *pipeline = (struct si_sqtt_fake_pipeline *)entry->data;
|
||||
|
Reference in New Issue
Block a user