From fce9dbc4938c8c63d3918a23fe9e94370e40e206 Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Mon, 22 Sep 2025 12:49:27 +0200 Subject: [PATCH] tu/perfetto: Init perfetto datasources once Signed-off-by: Danylo Piliaiev Part-of: --- src/freedreno/vulkan/tu_perfetto.cc | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/freedreno/vulkan/tu_perfetto.cc b/src/freedreno/vulkan/tu_perfetto.cc index 8effc177c33..88a10ff6de3 100644 --- a/src/freedreno/vulkan/tu_perfetto.cc +++ b/src/freedreno/vulkan/tu_perfetto.cc @@ -355,14 +355,16 @@ PERFETTO_DEFINE_DATA_SOURCE_STATIC_MEMBERS(TuMemoryDataSource); extern "C" { #endif +static once_flag tu_perfetto_init_once_flag = ONCE_FLAG_INIT; + void -tu_perfetto_init(void) +tu_perfetto_init_once() { { - perfetto::DataSourceDescriptor dsd; + perfetto::DataSourceDescriptor dsd; #if DETECT_OS_ANDROID - // Android tooling expects this data source name - dsd.set_name("gpu.renderstages"); + // Android tooling expects this data source name + dsd.set_name("gpu.renderstages"); #else dsd.set_name("gpu.renderstages.msm"); #endif @@ -370,12 +372,18 @@ tu_perfetto_init(void) } { - perfetto::DataSourceDescriptor dsd; - dsd.set_name("gpu.memory.msm"); - TuMemoryDataSource::Register(dsd); + perfetto::DataSourceDescriptor dsd; + dsd.set_name("gpu.memory.msm"); + TuMemoryDataSource::Register(dsd); } } +void +tu_perfetto_init(void) +{ + call_once(&tu_perfetto_init_once_flag, tu_perfetto_init_once); +} + uint64_t tu_perfetto_begin_submit() {