Rumba C++ SDK
Profiler.h
Go to the documentation of this file.
1 /*
2 
3  *
4  ***
5  *****
6  ********************* Mercenaries Engineering SARL
7  ***************** Copyright (C) 2025
8  *************
9  ********* http://www.mercenaries-engineering.com
10  ***********
11  **** ****
12  ** **
13 
14 */
15 #pragma once
16 
17 #include "Export.h"
18 
19 #ifdef TRACY_ENABLE
20 
21 #include <tracy/Tracy.hpp>
22 
23 #define PROFILE ZoneScopedN
24 
25 #else
26 
27 #define PROFILE
28 
29 #define TracyNoop
30 
31 #define ZoneNamed(x,y)
32 #define ZoneNamedN(x,y,z)
33 #define ZoneNamedC(x,y,z)
34 #define ZoneNamedNC(x,y,z,w)
35 
36 #define ZoneTransient(x,y)
37 #define ZoneTransientN(x,y,z)
38 
39 #define ZoneScoped
40 #define ZoneScopedN(x)
41 #define ZoneScopedC(x)
42 #define ZoneScopedNC(x,y)
43 
44 #define ZoneText(x,y)
45 #define ZoneTextV(x,y,z)
46 #define ZoneTextF(x,...)
47 #define ZoneTextVF(x,y,...)
48 #define ZoneName(x,y)
49 #define ZoneNameV(x,y,z)
50 #define ZoneNameF(x,...)
51 #define ZoneNameVF(x,y,...)
52 #define ZoneColor(x)
53 #define ZoneColorV(x,y)
54 #define ZoneValue(x)
55 #define ZoneValueV(x,y)
56 #define ZoneIsActive false
57 #define ZoneIsActiveV(x) false
58 
59 #define FrameMark
60 #define FrameMarkNamed(x)
61 #define FrameMarkStart(x)
62 #define FrameMarkEnd(x)
63 
64 #define FrameImage(x,y,z,w,a)
65 
66 #define TracyLockable( type, varname ) type varname
67 #define TracyLockableN( type, varname, desc ) type varname
68 #define TracySharedLockable( type, varname ) type varname
69 #define TracySharedLockableN( type, varname, desc ) type varname
70 #define LockableBase( type ) type
71 #define SharedLockableBase( type ) type
72 #define LockMark(x) (void)x
73 #define LockableName(x,y,z)
74 
75 #define TracyPlot(x,y)
76 #define TracyPlotConfig(x,y,z,w,a)
77 
78 #define TracyMessage(x,y)
79 #define TracyMessageL(x)
80 #define TracyMessageC(x,y,z)
81 #define TracyMessageLC(x,y)
82 #define TracyAppInfo(x,y)
83 
84 #define TracyAlloc(x,y)
85 #define TracyFree(x)
86 #define TracyMemoryDiscard(x)
87 #define TracySecureAlloc(x,y)
88 #define TracySecureFree(x)
89 #define TracySecureMemoryDiscard(x)
90 
91 #define TracyAllocN(x,y,z)
92 #define TracyFreeN(x,y)
93 #define TracySecureAllocN(x,y,z)
94 #define TracySecureFreeN(x,y)
95 
96 #define ZoneNamedS(x,y,z)
97 #define ZoneNamedNS(x,y,z,w)
98 #define ZoneNamedCS(x,y,z,w)
99 #define ZoneNamedNCS(x,y,z,w,a)
100 
101 #define ZoneTransientS(x,y,z)
102 #define ZoneTransientNS(x,y,z,w)
103 
104 #define ZoneScopedS(x)
105 #define ZoneScopedNS(x,y)
106 #define ZoneScopedCS(x,y)
107 #define ZoneScopedNCS(x,y,z)
108 
109 #define TracyAllocS(x,y,z)
110 #define TracyFreeS(x,y)
111 #define TracyMemoryDiscardS(x,y)
112 #define TracySecureAllocS(x,y,z)
113 #define TracySecureFreeS(x,y)
114 #define TracySecureMemoryDiscardS(x,y)
115 
116 #define TracyAllocNS(x,y,z,w)
117 #define TracyFreeNS(x,y,z)
118 #define TracySecureAllocNS(x,y,z,w)
119 #define TracySecureFreeNS(x,y,z)
120 
121 #define TracyMessageS(x,y,z)
122 #define TracyMessageLS(x,y)
123 #define TracyMessageCS(x,y,z,w)
124 #define TracyMessageLCS(x,y,z)
125 
126 #define TracySourceCallbackRegister(x,y)
127 #define TracyParameterRegister(x,y)
128 #define TracyParameterSetup(x,y,z,w)
129 #define TracyIsConnected false
130 #define TracyIsStarted false
131 #define TracySetProgramName(x)
132 
133 #define TracyFiberEnter(x)
134 #define TracyFiberEnterHint(x,y)
135 #define TracyFiberLeave
136 
137 #endif
138 
139 namespace maquina
140 {
141 
142 // Called once at the beginning of the frame
144 MAQUINA_EXPORT void profile_frame_start();
145 
146 // Called once at the beginning of each viewport rendering
148 MAQUINA_EXPORT void profile_viewport_start(bool main_window);
149 
150 // Called once at the end of each viewport rendering
152 MAQUINA_EXPORT void profile_viewport_end(bool main_window);
153 
154 // Start a profile zone
156 MAQUINA_EXPORT void profile_zone_start(int line, const std::string& source, const std::string& function, const std::string& name, int color);
157 
158 // End a profile zone, must match the start
160 MAQUINA_EXPORT void profile_zone_end();
161 
162 // Return true if maquina is compiled in profiling mode
164 MAQUINA_EXPORT bool is_profiling();
165 
166 }
This version of the SDK is unstable, i-e, it may change with no warning.
Definition: AddCurveAction.h:20
#define MAQUINA_EXPORT
Definition: Export.h:31