Zrythm v2.0.0-alpha.1+31.4967fd053471
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
tracy.h
1// SPDX-FileCopyrightText: © 2026 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "zrythm-config.h"
7
8#include <string_view>
9
10#if ZRYTHM_TRACY
11# include <tracy/Tracy.hpp>
12#else
13# define ZoneScoped
14# define ZoneScopedN(name)
15# define ZoneScopedC(color)
16# define ZoneNamed(varname, active)
17# define ZoneNamedN(varname, name, active)
18# define ZoneText(txt, size)
19# define ZoneTextV(varname, txt, size)
20# define ZoneName(txt, size)
21# define ZoneValue(value)
22# define ZoneColor(color)
23# define FrameMark
24# define FrameMarkNamed(name)
25# define FrameMarkStart(name)
26# define FrameMarkEnd(name)
27# define TracyPlot(name, val)
28# define TracyPlotConfig(name, type, step, fill, color)
29# define TracyMessage(txt, size)
30# define TracyMessageL(txt)
31# define TracyAlloc(ptr, size)
32# define TracyFree(ptr)
33# define TracyAllocN(ptr, size, name)
34# define TracyFreeN(ptr, name)
35#endif
36
37class ScopedFrame
38{
39public:
40 explicit ScopedFrame (const char * name) : name_ (name)
41 {
42 FrameMarkStart (name_);
43 }
44 ~ScopedFrame () { FrameMarkEnd (name_); }
45
46 ScopedFrame (const ScopedFrame &) = delete;
47 ScopedFrame &operator= (const ScopedFrame &) = delete;
48 ScopedFrame (ScopedFrame &&) = delete;
49 ScopedFrame &operator= (ScopedFrame &&) = delete;
50
51private:
52 [[maybe_unused]] const char * name_;
53};
54
55namespace zrythm::utils
56{
57
58inline bool
59is_tracy_initialized ()
60{
61#if ZRYTHM_TRACY
62 return tracy::IsProfilerStarted ();
63#else
64 return false;
65#endif
66}
67
68inline void
69start_tracy ()
70{
71#if ZRYTHM_TRACY
72 tracy::StartupProfiler ();
73#endif
74}
75
76inline void
77stop_tracy ()
78{
79#if ZRYTHM_TRACY
80 tracy::ShutdownProfiler ();
81#endif
82}
83
84inline void
85set_thread_name (std::string_view name, int32_t group_hint = 0)
86{
87#if ZRYTHM_TRACY
88 tracy::SetThreadNameWithHint (name.data (), group_hint);
89#endif
90}
91
92} // namespace zrythm::utils
String utilities.