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