mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2024-12-29 11:06:18 +00:00
u/trace_marker: Tracy support
This commit is contained in:
parent
4cecb768b1
commit
65e76e1277
|
@ -113,6 +113,11 @@ if(XRT_FEATURE_TRACING AND XRT_HAVE_PERCETTO)
|
||||||
target_link_libraries(aux_util PUBLIC percetto::percetto)
|
target_link_libraries(aux_util PUBLIC percetto::percetto)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Is basically used everywhere, only used in debugging.
|
||||||
|
if(XRT_FEATURE_TRACING AND XRT_HAVE_TRACY)
|
||||||
|
target_link_libraries(aux_util PUBLIC xrt-external-tracy)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Is basically used everywhere, so link with here.
|
# Is basically used everywhere, so link with here.
|
||||||
if(ANDROID)
|
if(ANDROID)
|
||||||
target_link_libraries(aux_util PUBLIC ${ANDROID_LOG_LIBRARY})
|
target_link_libraries(aux_util PUBLIC ${ANDROID_LOG_LIBRARY})
|
||||||
|
|
|
@ -30,6 +30,14 @@
|
||||||
#include <percetto.h>
|
#include <percetto.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(XRT_FEATURE_TRACING) && defined(XRT_HAVE_TRACY)
|
||||||
|
#define U_TRACE_TRACY
|
||||||
|
#include "tracy/TracyC.h"
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#include "tracy/Tracy.hpp"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -128,13 +136,94 @@ u_trace_marker_init(void);
|
||||||
#define U_TRACE_TARGET_SETUP(WHICH)
|
#define U_TRACE_TARGET_SETUP(WHICH)
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Tracy support.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#elif defined(XRT_HAVE_TRACY) // && XRT_FEATURE_TRACING
|
||||||
|
|
||||||
|
// Different wrappers for different cases.
|
||||||
|
#ifdef __cplusplus
|
||||||
|
|
||||||
|
#define U_TRACE_FUNC(CATEGORY) ZoneScoped
|
||||||
|
|
||||||
|
#define U_TRACE_IDENT(CATEGORY, IDENT) ZoneScopedN(#IDENT)
|
||||||
|
|
||||||
|
#elif !defined(XRT_OS_WINDOWS) // !__cplusplus
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
u_trace_scope_cleanup(TracyCZoneCtx *ctx_ptr)
|
||||||
|
{
|
||||||
|
TracyCZoneEnd(*ctx_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define U_TRACE_FUNC(CATEGORY) \
|
||||||
|
static const struct ___tracy_source_location_data __func_loc = { \
|
||||||
|
NULL, __func__, __FILE__, (uint32_t)__LINE__, 0, \
|
||||||
|
}; \
|
||||||
|
TracyCZoneCtx __attribute__((cleanup(u_trace_scope_cleanup))) ctx = \
|
||||||
|
___tracy_emit_zone_begin(&__func_loc, true); \
|
||||||
|
(void)ctx
|
||||||
|
|
||||||
|
#define U_TRACE_IDENT(CATEGORY, IDENT) \
|
||||||
|
static const struct ___tracy_source_location_data __##IDENT##_loc = { \
|
||||||
|
#IDENT, __func__, __FILE__, (uint32_t)__LINE__, 0, \
|
||||||
|
}; \
|
||||||
|
TracyCZoneCtx __attribute__((cleanup(u_trace_scope_cleanup))) ctx##IDENT = \
|
||||||
|
___tracy_emit_zone_begin(&__##IDENT##_loc, true); \
|
||||||
|
(void)ctx##IDENT
|
||||||
|
|
||||||
|
#else // !XRT_OS_WINDOWS && !__cplusplus
|
||||||
|
|
||||||
|
#define U_TRACE_FUNC(CATEGORY) \
|
||||||
|
do { \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
#define U_TRACE_IDENT(CATEGORY, IDENT) \
|
||||||
|
do { \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
#endif // !XRT_OS_WINDOWS && !__cplusplus
|
||||||
|
|
||||||
|
|
||||||
|
#define U_TRACE_EVENT_BEGIN_ON_TRACK(CATEGORY, TRACK, TIME, NAME) \
|
||||||
|
do { \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
#define U_TRACE_EVENT_BEGIN_ON_TRACK_DATA(CATEGORY, TRACK, TIME, NAME, ...) \
|
||||||
|
do { \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
#define U_TRACE_EVENT_END_ON_TRACK(CATEGORY, TRACK, TIME) \
|
||||||
|
do { \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
#define U_TRACE_INSTANT_ON_TRACK(CATEGORY, TRACK, TIME, NAME) \
|
||||||
|
do { \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
#define U_TRACE_CATEGORY_IS_ENABLED(_) (true) // All categories are always enabled with Tracy.
|
||||||
|
|
||||||
|
#define U_TRACE_SET_THREAD_NAME(STRING) \
|
||||||
|
do { \
|
||||||
|
/* To help with thread ordering and seeing when a thread is created. */ \
|
||||||
|
TracyCZoneN(created, "created", true); \
|
||||||
|
TracyCSetThreadName(STRING); \
|
||||||
|
TracyCZoneEnd(created); \
|
||||||
|
} while (false)
|
||||||
|
|
||||||
|
#define U_TRACE_TARGET_SETUP(WHICH)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* Percetto support.
|
* Percetto support.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#elif defined(XRT_HAVE_PERCETTO) // && XRT_FEATURE_TRACKING
|
#elif defined(XRT_HAVE_PERCETTO) // && XRT_FEATURE_TRACKING && !XRT_HAVE_TRACY
|
||||||
|
|
||||||
#ifndef XRT_OS_LINUX
|
#ifndef XRT_OS_LINUX
|
||||||
#error "Tracing only supported on Linux"
|
#error "Tracing only supported on Linux"
|
||||||
|
@ -190,7 +279,7 @@ PERCETTO_TRACK_DECLARE(pa_wait);
|
||||||
u_trace_marker_setup(WHICH); \
|
u_trace_marker_setup(WHICH); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // !XRT_FEATURE_TRACING && !XRT_HAVE_PERCETTO
|
#else // !XRT_FEATURE_TRACING && !XRT_HAVE_PERCETTO && !XRT_HAVE_TRACY
|
||||||
|
|
||||||
#error "Need to have Percetto/Perfetto"
|
#error "Need to have Percetto/Perfetto"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue