VR-Vantage 2.7 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
TracyQueue.hpp
Go to the documentation of this file.
1 #ifndef __TRACYQUEUE_HPP__
2 #define __TRACYQUEUE_HPP__
3 
4 #include <stdint.h>
5 
6 namespace tracy
7 {
8 
9 enum class QueueType : uint8_t
10 {
11  ZoneText,
12  ZoneName,
13  Message,
14  MessageColor,
15  MessageCallstack,
16  MessageColorCallstack,
17  MessageAppInfo,
18  ZoneBeginAllocSrcLoc,
19  ZoneBeginAllocSrcLocCallstack,
20  CallstackMemory,
21  Callstack,
22  CallstackAlloc,
23  CallstackSample,
24  FrameImage,
25  ZoneBegin,
26  ZoneBeginCallstack,
27  ZoneEnd,
28  LockWait,
29  LockObtain,
30  LockRelease,
31  LockSharedWait,
32  LockSharedObtain,
33  LockSharedRelease,
34  LockName,
35  MemAlloc,
36  MemFree,
37  MemAllocCallstack,
38  MemFreeCallstack,
39  GpuZoneBegin,
40  GpuZoneBeginCallstack,
41  GpuZoneEnd,
42  GpuZoneBeginSerial,
43  GpuZoneBeginCallstackSerial,
44  GpuZoneEndSerial,
45  PlotData,
46  ContextSwitch,
47  ThreadWakeup,
48  GpuTime,
49  Terminate,
50  KeepAlive,
51  ThreadContext,
52  GpuCalibration,
53  Crash,
54  CrashReport,
55  ZoneValidation,
56  ZoneValue,
57  FrameMarkMsg,
58  FrameMarkMsgStart,
59  FrameMarkMsgEnd,
60  SourceLocation,
61  LockAnnounce,
62  LockTerminate,
63  LockMark,
64  MessageLiteral,
65  MessageLiteralColor,
66  MessageLiteralCallstack,
67  MessageLiteralColorCallstack,
68  GpuNewContext,
69  CallstackFrameSize,
70  CallstackFrame,
71  SymbolInformation,
72  CodeInformation,
73  SysTimeReport,
74  TidToPid,
75  PlotConfig,
76  ParamSetup,
77  ParamPingback,
78  CpuTopology,
79  SingleStringData,
80  SecondStringData,
81  StringData,
82  ThreadName,
83  PlotName,
84  SourceLocationPayload,
85  CallstackPayload,
86  CallstackAllocPayload,
87  FrameName,
88  FrameImageData,
89  ExternalName,
90  ExternalThreadName,
91  SymbolCode,
92  NUM_TYPES
93 };
94 
95 #pragma pack( 1 )
96 
98 {
100 };
101 
103 {
105 };
106 
108 {
109  uint64_t srcloc; // ptr
110 };
111 
113 {
115 };
116 
118 {
120 };
121 
123 {
125 };
126 
128 {
130 };
131 
133 {
135  uint64_t name; // ptr
136 };
137 
139 {
144 };
145 
147 {
148  uint64_t image; // ptr
149 };
150 
152 {
154  uint64_t function; // ptr
155  uint64_t file; // ptr
160 };
161 
163 {
164  uint64_t text; // ptr
166 };
167 
168 enum class LockType : uint8_t
169 {
170  Lockable,
172 };
173 
175 {
178  uint64_t lckloc; // ptr
180 };
181 
183 {
186 };
187 
189 {
193 };
194 
196 {
200 };
201 
203 {
207 };
208 
210 {
213  uint64_t srcloc; // ptr
214 };
215 
217 {
219 };
220 
222 {
223  uint64_t name; // ptr
225 };
226 
227 enum class PlotDataType : uint8_t
228 {
229  Float,
230  Double,
231  Int
232 };
233 
235 {
236  uint64_t name; // ptr
239  union
240  {
241  double d;
242  float f;
244  } data;
245 };
246 
248 {
250 };
251 
253 {
257 };
258 
260 {
261  uint64_t text; // ptr
262 };
263 
265 {
266  uint64_t text; // ptr
267 };
268 
270 {
271  uint64_t text; // ptr
273 };
274 
276 {
277  uint64_t text; // ptr
279 };
280 
281 // Don't change order, only add new entries at the end, this is also used on trace dumps!
283 {
284  Invalid,
285  OpenGl,
286  Vulkan,
287  OpenCL,
288  Direct3D12
289 };
290 
292 {
294 };
295 
297 {
301  float period;
305 };
306 
308 {
314 };
315 
317 {
322 };
323 
325 {
329 };
330 
332 {
337 };
338 
340 {
344  char size[6];
345 };
346 
348 {
352 };
353 
355 {
357 };
358 
360 {
363 };
364 
366 {
369 };
370 
372 {
374 };
375 
377 {
380 };
381 
383 {
387 };
388 
390 {
393 };
394 
396 {
399 };
400 
402 {
404  uint64_t text; // ptr
405 };
406 
408 {
410  float sysTime;
411 };
412 
414 {
421 };
422 
424 {
427 };
428 
430 {
433 };
434 
436 {
437  Number,
438  Memory,
439  Percentage
440 };
441 
443 {
444  uint64_t name; // ptr
446 };
447 
449 {
451  uint64_t name; // ptr
454 };
455 
457 {
461 };
462 
464 {
465  union
466  {
469  };
470 };
471 
472 struct QueueItem
473 {
475  union
476  {
527  };
528 };
529 #pragma pack()
530 
531 
532 enum { QueueItemSize = sizeof( QueueItem ) };
533 
534 static constexpr size_t QueueDataSize[] = {
535  sizeof( QueueHeader ), // zone text
536  sizeof( QueueHeader ), // zone name
537  sizeof( QueueHeader ) + sizeof( QueueMessage ),
538  sizeof( QueueHeader ) + sizeof( QueueMessageColor ),
539  sizeof( QueueHeader ) + sizeof( QueueMessage ), // callstack
540  sizeof( QueueHeader ) + sizeof( QueueMessageColor ), // callstack
541  sizeof( QueueHeader ) + sizeof( QueueMessage ), // app info
542  sizeof( QueueHeader ) + sizeof( QueueZoneBeginLean ), // allocated source location
543  sizeof( QueueHeader ) + sizeof( QueueZoneBeginLean ), // allocated source location, callstack
544  sizeof( QueueHeader ), // callstack memory
545  sizeof( QueueHeader ), // callstack
546  sizeof( QueueHeader ), // callstack alloc
547  sizeof( QueueHeader ) + sizeof( QueueCallstackSample ),
548  sizeof( QueueHeader ) + sizeof( QueueFrameImage ),
549  sizeof( QueueHeader ) + sizeof( QueueZoneBegin ),
550  sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), // callstack
551  sizeof( QueueHeader ) + sizeof( QueueZoneEnd ),
552  sizeof( QueueHeader ) + sizeof( QueueLockWait ),
553  sizeof( QueueHeader ) + sizeof( QueueLockObtain ),
554  sizeof( QueueHeader ) + sizeof( QueueLockRelease ),
555  sizeof( QueueHeader ) + sizeof( QueueLockWait ), // shared
556  sizeof( QueueHeader ) + sizeof( QueueLockObtain ), // shared
557  sizeof( QueueHeader ) + sizeof( QueueLockRelease ), // shared
558  sizeof( QueueHeader ) + sizeof( QueueLockName ),
559  sizeof( QueueHeader ) + sizeof( QueueMemAlloc ),
560  sizeof( QueueHeader ) + sizeof( QueueMemFree ),
561  sizeof( QueueHeader ) + sizeof( QueueMemAlloc ), // callstack
562  sizeof( QueueHeader ) + sizeof( QueueMemFree ), // callstack
563  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ),
564  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // callstack
565  sizeof( QueueHeader ) + sizeof( QueueGpuZoneEnd ),
566  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // serial
567  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // serial, callstack
568  sizeof( QueueHeader ) + sizeof( QueueGpuZoneEnd ), // serial
569  sizeof( QueueHeader ) + sizeof( QueuePlotData ),
570  sizeof( QueueHeader ) + sizeof( QueueContextSwitch ),
571  sizeof( QueueHeader ) + sizeof( QueueThreadWakeup ),
572  sizeof( QueueHeader ) + sizeof( QueueGpuTime ),
573  // above items must be first
574  sizeof( QueueHeader ), // terminate
575  sizeof( QueueHeader ), // keep alive
576  sizeof( QueueHeader ) + sizeof( QueueThreadContext ),
577  sizeof( QueueHeader ) + sizeof( QueueGpuCalibration ),
578  sizeof( QueueHeader ), // crash
579  sizeof( QueueHeader ) + sizeof( QueueCrashReport ),
580  sizeof( QueueHeader ) + sizeof( QueueZoneValidation ),
581  sizeof( QueueHeader ) + sizeof( QueueZoneValue ),
582  sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // continuous frames
583  sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // start
584  sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // end
585  sizeof( QueueHeader ) + sizeof( QueueSourceLocation ),
586  sizeof( QueueHeader ) + sizeof( QueueLockAnnounce ),
587  sizeof( QueueHeader ) + sizeof( QueueLockTerminate ),
588  sizeof( QueueHeader ) + sizeof( QueueLockMark ),
589  sizeof( QueueHeader ) + sizeof( QueueMessageLiteral ),
590  sizeof( QueueHeader ) + sizeof( QueueMessageColorLiteral ),
591  sizeof( QueueHeader ) + sizeof( QueueMessageLiteral ), // callstack
592  sizeof( QueueHeader ) + sizeof( QueueMessageColorLiteral ), // callstack
593  sizeof( QueueHeader ) + sizeof( QueueGpuNewContext ),
594  sizeof( QueueHeader ) + sizeof( QueueCallstackFrameSize ),
595  sizeof( QueueHeader ) + sizeof( QueueCallstackFrame ),
596  sizeof( QueueHeader ) + sizeof( QueueSymbolInformation ),
597  sizeof( QueueHeader ) + sizeof( QueueCodeInformation ),
598  sizeof( QueueHeader ) + sizeof( QueueSysTime ),
599  sizeof( QueueHeader ) + sizeof( QueueTidToPid ),
600  sizeof( QueueHeader ) + sizeof( QueuePlotConfig ),
601  sizeof( QueueHeader ) + sizeof( QueueParamSetup ),
602  sizeof( QueueHeader ), // param pingback
603  sizeof( QueueHeader ) + sizeof( QueueCpuTopology ),
604  sizeof( QueueHeader ), // single string data
605  sizeof( QueueHeader ), // second string data
606  // keep all QueueStringTransfer below
607  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // string data
608  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // thread name
609  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // plot name
610  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // allocated source location payload
611  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // callstack payload
612  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // callstack alloc payload
613  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // frame name
614  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // frame image data
615  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // external name
616  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // external thread name
617  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // symbol code
618 };
619 
620 static_assert( QueueItemSize == 32, "Queue item size not 32 bytes" );
621 static_assert( sizeof( QueueDataSize ) / sizeof( size_t ) == (uint8_t)QueueType::NUM_TYPES, "QueueDataSize mismatch" );
622 static_assert( sizeof( void* ) <= sizeof( uint64_t ), "Pointer size > 8 bytes" );
623 static_assert( sizeof( void* ) == sizeof( uintptr_t ), "Pointer size != uintptr_t" );
624 
625 }
626 
627 #endif


Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)