SWDEV-533856: Handle dynamic event for HIP api for perfetto (#225)

* SWDEV-533856: Handle dynamic event for HIP api for perfetto

* Refactor: Generalize function using template

* Format Source

---------

Co-authored-by: David Galiffi <David.Galiffi@amd.com>
Этот коммит содержится в:
habajpai-amd
2025-06-04 15:11:26 +05:30
коммит произвёл GitHub
родитель 650827c5ea
Коммит abecaa8bf8
+38 -28
Просмотреть файл
@@ -101,6 +101,20 @@ template <typename CategoryT>
auto&
get_category_stack();
template <typename T>
auto
get_perfetto_string(T& name)
{
if constexpr(std::is_const_v<T>)
{
return ::perfetto::StaticString{ name };
}
else
{
return ::perfetto::DynamicString{ name };
}
}
template <typename CategoryT, typename... Args>
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<CategoryT>::value,
::perfetto::StaticString(name), _ts, "begin_ns", _ts,
std::forward<Args>(args)...);
TRACE_EVENT_BEGIN(trait::name<CategoryT>::value, get_perfetto_string(name),
_ts, "begin_ns", _ts, std::forward<Args>(args)...);
}
else
{
TRACE_EVENT_BEGIN(trait::name<CategoryT>::value,
::perfetto::StaticString(name), _ts,
std::forward<Args>(args)...);
TRACE_EVENT_BEGIN(trait::name<CategoryT>::value, get_perfetto_string(name),
_ts, std::forward<Args>(args)...);
}
}
else
@@ -418,7 +430,7 @@ push_perfetto(CategoryT, const char* name, Args&&... args)
++get_tracing_stack<CategoryT>();
uint64_t _ts = now();
TRACE_EVENT_BEGIN(
trait::name<CategoryT>::value, ::perfetto::StaticString(name), _ts,
trait::name<CategoryT>::value, get_perfetto_string(name), _ts,
std::forward<Args>(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<CategoryT>()) return;
++get_tracing_stack<CategoryT>();
TRACE_EVENT_BEGIN(trait::name<CategoryT>::value, ::perfetto::StaticString(name), _ts,
TRACE_EVENT_BEGIN(trait::name<CategoryT>::value, get_perfetto_string(name), _ts,
std::forward<Args>(args)...);
}
@@ -555,8 +567,8 @@ push_perfetto_track(CategoryT, const char* name, ::perfetto::Track _track, uint6
if(category_push_disabled<CategoryT>()) return;
++get_tracing_stack<CategoryT>();
TRACE_EVENT_BEGIN(trait::name<CategoryT>::value, ::perfetto::StaticString(name),
_track, _ts, std::forward<Args>(args)...);
TRACE_EVENT_BEGIN(trait::name<CategoryT>::value, get_perfetto_string(name), _track,
_ts, std::forward<Args>(args)...);
}
template <typename CategoryT, typename... Args>
@@ -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<CategoryT>::value,
::perfetto::StaticString(name), _ts, "ns", _ts,
std::forward<Args>(args)...);
TRACE_EVENT_INSTANT(trait::name<CategoryT>::value, get_perfetto_string(name),
_ts, "ns", _ts, std::forward<Args>(args)...);
}
else
{
TRACE_EVENT_INSTANT(trait::name<CategoryT>::value,
::perfetto::StaticString(name), _ts,
std::forward<Args>(args)...);
TRACE_EVENT_INSTANT(trait::name<CategoryT>::value, get_perfetto_string(name),
_ts, std::forward<Args>(args)...);
}
}
else
@@ -617,14 +627,14 @@ mark_perfetto(CategoryT, const char* name, Args&&... args)
else
{
uint64_t _ts = now();
TRACE_EVENT_INSTANT(
trait::name<CategoryT>::value, ::perfetto::StaticString(name), _ts,
std::forward<Args>(args)..., [&](::perfetto::EventContext ctx) {
if(config::get_perfetto_annotations())
{
tracing::add_perfetto_annotation(ctx, "ns", _ts);
}
});
TRACE_EVENT_INSTANT(trait::name<CategoryT>::value, get_perfetto_string(name),
_ts, std::forward<Args>(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<CategoryT>()) return;
TRACE_EVENT_INSTANT(trait::name<CategoryT>::value, ::perfetto::StaticString(name),
_ts, std::forward<Args>(args)...);
TRACE_EVENT_INSTANT(trait::name<CategoryT>::value, get_perfetto_string(name), _ts,
std::forward<Args>(args)...);
}
template <typename CategoryT, typename... Args>
@@ -648,8 +658,8 @@ mark_perfetto_track(CategoryT, const char* name, ::perfetto::Track _track, uint6
// skip if category is disabled
if(category_mark_disabled<CategoryT>()) return;
TRACE_EVENT_INSTANT(trait::name<CategoryT>::value, ::perfetto::DynamicString{ name },
_track, _ts, std::forward<Args>(args)...);
TRACE_EVENT_INSTANT(trait::name<CategoryT>::value, get_perfetto_string(name), _track,
_ts, std::forward<Args>(args)...);
}
template <typename FuncT>