mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-24 16:50:22 +01:00
util: Optimize MESA_TRACE_FUNC()
Avoiding the vsnprintf speeds up drawoverhead -test 3 by 60+% !! Signed-off-by: Rob Clark <rob.clark@oss.qualcomm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36492>
This commit is contained in:
parent
b833bb2df4
commit
898fa317dd
1 changed files with 20 additions and 6 deletions
|
|
@ -130,6 +130,11 @@ struct mesa_trace_flow {
|
|||
*
|
||||
* to work.
|
||||
*/
|
||||
#define _MESA_TRACE_SCOPE_NAME(name) \
|
||||
void *_MESA_TRACE_SCOPE_VAR(__LINE__) \
|
||||
__attribute__((cleanup(_mesa_trace_scope_end), unused)) = \
|
||||
_mesa_trace_scope_begin_name(name)
|
||||
|
||||
#define _MESA_TRACE_SCOPE(format, ...) \
|
||||
void *_MESA_TRACE_SCOPE_VAR(__LINE__) \
|
||||
__attribute__((cleanup(_mesa_trace_scope_end), unused)) = \
|
||||
|
|
@ -140,12 +145,22 @@ struct mesa_trace_flow {
|
|||
__attribute__((cleanup(_mesa_trace_scope_end), unused)) = \
|
||||
_mesa_trace_scope_flow_begin(name, id)
|
||||
|
||||
|
||||
static inline void *
|
||||
_mesa_trace_scope_begin_name(const char *name)
|
||||
{
|
||||
void *scope = NULL;
|
||||
_MESA_TRACE_BEGIN(name);
|
||||
_MESA_GPUVIS_TRACE_BEGIN(name);
|
||||
scope = _MESA_SYSPROF_TRACE_BEGIN(name);
|
||||
return scope;
|
||||
}
|
||||
|
||||
__attribute__((format(printf, 1, 2)))
|
||||
static inline void *
|
||||
_mesa_trace_scope_begin(const char *format, ...)
|
||||
{
|
||||
char name[_MESA_TRACE_SCOPE_MAX_NAME_LENGTH];
|
||||
void *scope = NULL;
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
|
|
@ -154,10 +169,7 @@ _mesa_trace_scope_begin(const char *format, ...)
|
|||
va_end(args);
|
||||
assert(len < _MESA_TRACE_SCOPE_MAX_NAME_LENGTH);
|
||||
|
||||
_MESA_TRACE_BEGIN(name);
|
||||
_MESA_GPUVIS_TRACE_BEGIN(name);
|
||||
scope = _MESA_SYSPROF_TRACE_BEGIN(name);
|
||||
return scope;
|
||||
return _mesa_trace_scope_begin_name(name);
|
||||
}
|
||||
|
||||
static inline void *
|
||||
|
|
@ -188,12 +200,14 @@ _mesa_trace_scope_end(UNUSED void **scope)
|
|||
#else
|
||||
|
||||
#define _MESA_TRACE_SCOPE(format, ...)
|
||||
#define _MESA_TRACE_SCOPE_FLOW(func, id)
|
||||
#define _MESA_TRACE_SCOPE_NAME(name)
|
||||
|
||||
#endif /* __has_attribute(cleanup) && __has_attribute(unused) */
|
||||
|
||||
#define MESA_TRACE_SCOPE(format, ...) _MESA_TRACE_SCOPE(format, ##__VA_ARGS__)
|
||||
#define MESA_TRACE_SCOPE_FLOW(name, id) _MESA_TRACE_SCOPE_FLOW(name, id)
|
||||
#define MESA_TRACE_FUNC() _MESA_TRACE_SCOPE("%s", __func__)
|
||||
#define MESA_TRACE_FUNC() _MESA_TRACE_SCOPE_NAME(__func__)
|
||||
#define MESA_TRACE_FUNC_FLOW(id) _MESA_TRACE_SCOPE_FLOW(__func__, id)
|
||||
#define MESA_TRACE_SET_COUNTER(name, value) _MESA_TRACE_SET_COUNTER(name, value)
|
||||
#define MESA_TRACE_TIMESTAMP_BEGIN(name, track_id, flow_id, clock, timestamp) \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue