Module: Mesa Branch: main Commit: d64765c200104320577b9410616e8189f31c58d9 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d64765c200104320577b9410616e8189f31c58d9
Author: Corentin Noël <[email protected]> Date: Wed Sep 20 17:41:05 2023 +0200 util/perf: Remove the tracing categories The slow category remains unused in Mesa currently, readd it once we have a use for it. Signed-off-by: Corentin Noël <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25308> --- src/util/perf/cpu_trace.h | 73 +++++++++++++++++---------------------------- src/util/perf/u_perfetto.cc | 61 +++++++++---------------------------- src/util/perf/u_perfetto.h | 25 +++++----------- 3 files changed, 49 insertions(+), 110 deletions(-) diff --git a/src/util/perf/cpu_trace.h b/src/util/perf/cpu_trace.h index 796dcaf0f3c..cfa75849e38 100644 --- a/src/util/perf/cpu_trace.h +++ b/src/util/perf/cpu_trace.h @@ -13,19 +13,19 @@ #if defined(HAVE_PERFETTO) -/* note that util_perfetto_is_category_enabled always returns false util +/* note that util_perfetto_is_tracing_enabled always returns false util * util_perfetto_init is called */ -#define _MESA_TRACE_BEGIN(category, name) \ +#define _MESA_TRACE_BEGIN(name) \ do { \ - if (unlikely(util_perfetto_is_category_enabled(category))) \ - util_perfetto_trace_begin(category, name); \ + if (unlikely(util_perfetto_is_tracing_enabled())) \ + util_perfetto_trace_begin(name); \ } while (0) -#define _MESA_TRACE_END(category) \ +#define _MESA_TRACE_END() \ do { \ - if (unlikely(util_perfetto_is_category_enabled(category))) \ - util_perfetto_trace_end(category); \ + if (unlikely(util_perfetto_is_tracing_enabled())) \ + util_perfetto_trace_end(); \ } while (0) /* NOTE: for now disable atrace for C++ to workaround a ndk bug with ordering @@ -37,14 +37,14 @@ #include <cutils/trace.h> -#define _MESA_TRACE_BEGIN(category, name) \ +#define _MESA_TRACE_BEGIN(name) \ atrace_begin(ATRACE_TAG_GRAPHICS, name) -#define _MESA_TRACE_END(category) atrace_end(ATRACE_TAG_GRAPHICS) +#define _MESA_TRACE_END() atrace_end(ATRACE_TAG_GRAPHICS) #else -#define _MESA_TRACE_BEGIN(category, name) -#define _MESA_TRACE_END(category) +#define _MESA_TRACE_BEGIN(name) +#define _MESA_TRACE_END() #endif /* HAVE_PERFETTO */ @@ -61,16 +61,16 @@ #endif /* HAVE_GPUVIS */ -#define _MESA_COMBINED_TRACE_BEGIN(category, name) \ +#define _MESA_COMBINED_TRACE_BEGIN(name) \ do { \ - _MESA_TRACE_BEGIN(category, name); \ + _MESA_TRACE_BEGIN(name); \ _MESA_GPUVIS_TRACE_BEGIN(name); \ } while (0) -#define _MESA_COMBINED_TRACE_END(category) \ +#define _MESA_COMBINED_TRACE_END() \ do { \ _MESA_GPUVIS_TRACE_END(); \ - _MESA_TRACE_END(category); \ + _MESA_TRACE_END(); \ } while (0) #if __has_attribute(cleanup) && __has_attribute(unused) @@ -86,53 +86,34 @@ * * to work. */ -#define _MESA_TRACE_SCOPE(category, name) \ +#define _MESA_TRACE_SCOPE(name) \ int _MESA_TRACE_SCOPE_VAR(__LINE__) \ __attribute__((cleanup(_mesa_trace_scope_end), unused)) = \ - _mesa_trace_scope_begin(category, name) + _mesa_trace_scope_begin(name) static inline int -_mesa_trace_scope_begin(enum util_perfetto_category category, - const char *name) +_mesa_trace_scope_begin(const char *name) { - _MESA_COMBINED_TRACE_BEGIN(category, name); - return category; + _MESA_COMBINED_TRACE_BEGIN(name); + return 0; } static inline void -_mesa_trace_scope_end(int *scope) +_mesa_trace_scope_end(UNUSED int *scope) { - /* we save the category in the scope variable */ - _MESA_COMBINED_TRACE_END((enum util_perfetto_category) * scope); + _MESA_COMBINED_TRACE_END(); } #else -#define _MESA_TRACE_SCOPE(category, name) +#define _MESA_TRACE_SCOPE(name) #endif /* __has_attribute(cleanup) && __has_attribute(unused) */ -/* These use the default category. Drivers or subsystems can use these, or - * define their own categories/macros. - */ -#define MESA_TRACE_BEGIN(name) \ - _MESA_COMBINED_TRACE_BEGIN(UTIL_PERFETTO_CATEGORY_DEFAULT, name) -#define MESA_TRACE_END() \ - _MESA_COMBINED_TRACE_END(UTIL_PERFETTO_CATEGORY_DEFAULT) -#define MESA_TRACE_SCOPE(name) \ - _MESA_TRACE_SCOPE(UTIL_PERFETTO_CATEGORY_DEFAULT, name) -#define MESA_TRACE_FUNC() \ - _MESA_TRACE_SCOPE(UTIL_PERFETTO_CATEGORY_DEFAULT, __func__) - -/* these use the slow category */ -#define MESA_TRACE_BEGIN_SLOW(name) \ - _MESA_COMBINED_TRACE_BEGIN(UTIL_PERFETTO_CATEGORY_SLOW, name) -#define MESA_TRACE_END_SLOW() \ - _MESA_COMBINED_TRACE_END(UTIL_PERFETTO_CATEGORY_SLOW) -#define MESA_TRACE_SCOPE_SLOW(name) \ - _MESA_TRACE_SCOPE(UTIL_PERFETTO_CATEGORY_SLOW, name) -#define MESA_TRACE_FUNC_SLOW() \ - _MESA_TRACE_SCOPE(UTIL_PERFETTO_CATEGORY_SLOW, __func__) +#define MESA_TRACE_BEGIN(name) _MESA_COMBINED_TRACE_BEGIN(name) +#define MESA_TRACE_END() _MESA_COMBINED_TRACE_END() +#define MESA_TRACE_SCOPE(name) _MESA_TRACE_SCOPE(name) +#define MESA_TRACE_FUNC() _MESA_TRACE_SCOPE(__func__) static inline void util_cpu_trace_init() diff --git a/src/util/perf/u_perfetto.cc b/src/util/perf/u_perfetto.cc index 10facb38645..897e29cc4f8 100644 --- a/src/util/perf/u_perfetto.cc +++ b/src/util/perf/u_perfetto.cc @@ -30,69 +30,36 @@ /* perfetto requires string literals */ #define UTIL_PERFETTO_CATEGORY_DEFAULT_STR "mesa.default" -#define UTIL_PERFETTO_CATEGORY_SLOW_STR "mesa.slow" PERFETTO_DEFINE_CATEGORIES( perfetto::Category(UTIL_PERFETTO_CATEGORY_DEFAULT_STR) - .SetDescription("Mesa default events"), - perfetto::Category(UTIL_PERFETTO_CATEGORY_SLOW_STR) - .SetDescription("Mesa slow events") - .SetTags("slow")); + .SetDescription("Mesa default events")); PERFETTO_TRACK_EVENT_STATIC_STORAGE(); -int util_perfetto_category_states[UTIL_PERFETTO_CATEGORY_COUNT]; +int util_perfetto_tracing_state; static void -util_perfetto_update_category_states(void) +util_perfetto_update_tracing_state(void) { -#define UPDATE_CATEGORY(cat) \ - p_atomic_set( \ - &util_perfetto_category_states[UTIL_PERFETTO_CATEGORY_##cat], \ - TRACE_EVENT_CATEGORY_ENABLED(UTIL_PERFETTO_CATEGORY_##cat##_STR)) - UPDATE_CATEGORY(DEFAULT); - UPDATE_CATEGORY(SLOW); -#undef UPDATE_CATEGORY + p_atomic_set(&util_perfetto_tracing_state, + TRACE_EVENT_CATEGORY_ENABLED(UTIL_PERFETTO_CATEGORY_DEFAULT_STR)); } void -util_perfetto_trace_begin(enum util_perfetto_category category, - const char *name) +util_perfetto_trace_begin(const char *name) { -#define TRACE_BEGIN(cat, name) \ - TRACE_EVENT_BEGIN( \ - UTIL_PERFETTO_CATEGORY_##cat##_STR, nullptr, \ - [&](perfetto::EventContext ctx) { ctx.event()->set_name(name); }) - switch (category) { - case UTIL_PERFETTO_CATEGORY_DEFAULT: - TRACE_BEGIN(DEFAULT, name); - break; - case UTIL_PERFETTO_CATEGORY_SLOW: - TRACE_BEGIN(SLOW, name); - break; - default: - unreachable("bad perfetto category"); - } -#undef TRACE_BEGIN + TRACE_EVENT_BEGIN( + UTIL_PERFETTO_CATEGORY_DEFAULT_STR, nullptr, + [&](perfetto::EventContext ctx) { ctx.event()->set_name(name); }); } void -util_perfetto_trace_end(enum util_perfetto_category category) +util_perfetto_trace_end(void) { -#define TRACE_END(cat) TRACE_EVENT_END(UTIL_PERFETTO_CATEGORY_##cat##_STR) - switch (category) { - case UTIL_PERFETTO_CATEGORY_DEFAULT: - TRACE_END(DEFAULT); - break; - case UTIL_PERFETTO_CATEGORY_SLOW: - TRACE_END(SLOW); - break; - default: - unreachable("bad perfetto category"); - } -#undef TRACE_END + TRACE_EVENT_END(UTIL_PERFETTO_CATEGORY_DEFAULT_STR); - util_perfetto_update_category_states(); + util_perfetto_update_tracing_state(); } class UtilPerfettoObserver : public perfetto::TrackEventSessionObserver { @@ -101,11 +68,11 @@ class UtilPerfettoObserver : public perfetto::TrackEventSessionObserver { void OnStart(const perfetto::DataSourceBase::StartArgs &) override { - util_perfetto_update_category_states(); + util_perfetto_update_tracing_state(); } /* XXX There is no PostStop callback. We have to call - * util_perfetto_update_category_states occasionally to poll. + * util_perfetto_update_tracing_state occasionally to poll. */ }; diff --git a/src/util/perf/u_perfetto.h b/src/util/perf/u_perfetto.h index d90c33a061d..75ae00186a0 100644 --- a/src/util/perf/u_perfetto.h +++ b/src/util/perf/u_perfetto.h @@ -30,29 +30,21 @@ extern "C" { #endif -enum util_perfetto_category { - UTIL_PERFETTO_CATEGORY_DEFAULT, - UTIL_PERFETTO_CATEGORY_SLOW, - - UTIL_PERFETTO_CATEGORY_COUNT, -}; - #ifdef HAVE_PERFETTO -extern int util_perfetto_category_states[UTIL_PERFETTO_CATEGORY_COUNT]; +extern int util_perfetto_tracing_state; void util_perfetto_init(void); static inline bool -util_perfetto_is_category_enabled(enum util_perfetto_category category) +util_perfetto_is_tracing_enabled(void) { - return p_atomic_read_relaxed(&util_perfetto_category_states[category]); + return p_atomic_read_relaxed(&util_perfetto_tracing_state); } -void util_perfetto_trace_begin(enum util_perfetto_category category, - const char *name); +void util_perfetto_trace_begin(const char *name); -void util_perfetto_trace_end(enum util_perfetto_category category); +void util_perfetto_trace_end(void); #else /* HAVE_PERFETTO */ @@ -62,19 +54,18 @@ util_perfetto_init(void) } static inline bool -util_perfetto_is_category_enabled(enum util_perfetto_category category) +util_perfetto_is_tracing_enabled(void) { return false; } static inline void -util_perfetto_trace_begin(enum util_perfetto_category category, - const char *name) +util_perfetto_trace_begin(const char *name) { } static inline void -util_perfetto_trace_end(enum util_perfetto_category category) +util_perfetto_trace_end(void) { }
