diff --git a/source/lib/rocprof-sys/library/tracing.hpp b/source/lib/rocprof-sys/library/tracing.hpp index 80eb801d0c..324c959a66 100644 --- a/source/lib/rocprof-sys/library/tracing.hpp +++ b/source/lib/rocprof-sys/library/tracing.hpp @@ -101,6 +101,20 @@ template auto& get_category_stack(); +template +auto +get_perfetto_string(T& name) +{ + if constexpr(std::is_const_v) + { + return ::perfetto::StaticString{ name }; + } + else + { + return ::perfetto::DynamicString{ name }; + } +} + template inline void push_perfetto(CategoryT, const char*, Args&&...); @@ -387,15 +401,13 @@ push_perfetto(CategoryT, const char* name, Args&&... args) uint64_t _ts = now(); if(config::get_perfetto_annotations()) { - TRACE_EVENT_BEGIN(trait::name::value, - ::perfetto::StaticString(name), _ts, "begin_ns", _ts, - std::forward(args)...); + TRACE_EVENT_BEGIN(trait::name::value, get_perfetto_string(name), + _ts, "begin_ns", _ts, std::forward(args)...); } else { - TRACE_EVENT_BEGIN(trait::name::value, - ::perfetto::StaticString(name), _ts, - std::forward(args)...); + TRACE_EVENT_BEGIN(trait::name::value, get_perfetto_string(name), + _ts, std::forward(args)...); } } else @@ -418,7 +430,7 @@ push_perfetto(CategoryT, const char* name, Args&&... args) ++get_tracing_stack(); uint64_t _ts = now(); TRACE_EVENT_BEGIN( - trait::name::value, ::perfetto::StaticString(name), _ts, + trait::name::value, get_perfetto_string(name), _ts, std::forward(args)..., [&](::perfetto::EventContext ctx) { if(config::get_perfetto_annotations()) { @@ -527,7 +539,7 @@ push_perfetto_ts(CategoryT, const char* name, uint64_t _ts, Args&&... args) if(category_push_disabled()) return; ++get_tracing_stack(); - TRACE_EVENT_BEGIN(trait::name::value, ::perfetto::StaticString(name), _ts, + TRACE_EVENT_BEGIN(trait::name::value, get_perfetto_string(name), _ts, std::forward(args)...); } @@ -555,8 +567,8 @@ push_perfetto_track(CategoryT, const char* name, ::perfetto::Track _track, uint6 if(category_push_disabled()) return; ++get_tracing_stack(); - TRACE_EVENT_BEGIN(trait::name::value, ::perfetto::StaticString(name), - _track, _ts, std::forward(args)...); + TRACE_EVENT_BEGIN(trait::name::value, get_perfetto_string(name), _track, + _ts, std::forward(args)...); } template @@ -588,15 +600,13 @@ mark_perfetto(CategoryT, const char* name, Args&&... args) uint64_t _ts = now(); if(config::get_perfetto_annotations()) { - TRACE_EVENT_INSTANT(trait::name::value, - ::perfetto::StaticString(name), _ts, "ns", _ts, - std::forward(args)...); + TRACE_EVENT_INSTANT(trait::name::value, get_perfetto_string(name), + _ts, "ns", _ts, std::forward(args)...); } else { - TRACE_EVENT_INSTANT(trait::name::value, - ::perfetto::StaticString(name), _ts, - std::forward(args)...); + TRACE_EVENT_INSTANT(trait::name::value, get_perfetto_string(name), + _ts, std::forward(args)...); } } else @@ -617,14 +627,14 @@ mark_perfetto(CategoryT, const char* name, Args&&... args) else { uint64_t _ts = now(); - TRACE_EVENT_INSTANT( - trait::name::value, ::perfetto::StaticString(name), _ts, - std::forward(args)..., [&](::perfetto::EventContext ctx) { - if(config::get_perfetto_annotations()) - { - tracing::add_perfetto_annotation(ctx, "ns", _ts); - } - }); + TRACE_EVENT_INSTANT(trait::name::value, get_perfetto_string(name), + _ts, std::forward(args)..., + [&](::perfetto::EventContext ctx) { + if(config::get_perfetto_annotations()) + { + tracing::add_perfetto_annotation(ctx, "ns", _ts); + } + }); } } } @@ -636,8 +646,8 @@ mark_perfetto_ts(CategoryT, const char* name, uint64_t _ts, Args&&... args) // skip if category is disabled if(category_mark_disabled()) return; - TRACE_EVENT_INSTANT(trait::name::value, ::perfetto::StaticString(name), - _ts, std::forward(args)...); + TRACE_EVENT_INSTANT(trait::name::value, get_perfetto_string(name), _ts, + std::forward(args)...); } template @@ -648,8 +658,8 @@ mark_perfetto_track(CategoryT, const char* name, ::perfetto::Track _track, uint6 // skip if category is disabled if(category_mark_disabled()) return; - TRACE_EVENT_INSTANT(trait::name::value, ::perfetto::DynamicString{ name }, - _track, _ts, std::forward(args)...); + TRACE_EVENT_INSTANT(trait::name::value, get_perfetto_string(name), _track, + _ts, std::forward(args)...); } template