VR-Vantage 3.0 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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  CallstackSerial,
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  MemAllocNamed,
37  MemFree,
38  MemFreeNamed,
39  MemAllocCallstack,
40  MemAllocCallstackNamed,
41  MemFreeCallstack,
42  MemFreeCallstackNamed,
43  GpuZoneBegin,
44  GpuZoneBeginCallstack,
45  GpuZoneBeginAllocSrcLoc,
46  GpuZoneBeginAllocSrcLocCallstack,
47  GpuZoneEnd,
48  GpuZoneBeginSerial,
49  GpuZoneBeginCallstackSerial,
50  GpuZoneBeginAllocSrcLocSerial,
51  GpuZoneBeginAllocSrcLocCallstackSerial,
52  GpuZoneEndSerial,
53  PlotData,
54  ContextSwitch,
55  ThreadWakeup,
56  GpuTime,
57  GpuContextName,
58  Terminate,
59  KeepAlive,
60  ThreadContext,
61  GpuCalibration,
62  Crash,
63  CrashReport,
64  ZoneValidation,
65  ZoneColor,
66  ZoneValue,
67  FrameMarkMsg,
68  FrameMarkMsgStart,
69  FrameMarkMsgEnd,
70  SourceLocation,
71  LockAnnounce,
72  LockTerminate,
73  LockMark,
74  MessageLiteral,
75  MessageLiteralColor,
76  MessageLiteralCallstack,
77  MessageLiteralColorCallstack,
78  GpuNewContext,
79  CallstackFrameSize,
80  CallstackFrame,
81  SymbolInformation,
82  CodeInformation,
83  SysTimeReport,
84  TidToPid,
85  PlotConfig,
86  ParamSetup,
87  AckServerQueryNoop,
88  AckSourceCodeNotAvailable,
89  CpuTopology,
90  SingleStringData,
91  SecondStringData,
92  MemNamePayload,
93  StringData,
94  ThreadName,
95  PlotName,
96  SourceLocationPayload,
97  CallstackPayload,
98  CallstackAllocPayload,
99  FrameName,
100  FrameImageData,
101  ExternalName,
102  ExternalThreadName,
103  SymbolCode,
104  SourceCode,
105  NUM_TYPES
106 };
107 
108 #pragma pack( 1 )
109 
111 {
113 };
114 
116 {
118 };
119 
121 {
122  uint64_t srcloc; // ptr
123 };
124 
126 {
128 };
129 
131 {
133 };
134 
136 {
140 };
141 
143 {
145 };
146 
148 {
150 };
151 
153 {
155  uint64_t name; // ptr
156 };
157 
159 {
164 };
165 
167 {
168  uint64_t image; // ptr
169 };
170 
172 {
174  uint64_t function; // ptr
175  uint64_t file; // ptr
180 };
181 
183 {
184  uint64_t text; // ptr
186 };
187 
188 enum class LockType : uint8_t
189 {
190  Lockable,
192 };
193 
195 {
198  uint64_t lckloc; // ptr
200 };
201 
203 {
206 };
207 
209 {
213 };
214 
216 {
220 };
221 
223 {
227 };
228 
230 {
233  uint64_t srcloc; // ptr
234 };
235 
237 {
239 };
240 
242 {
243  uint64_t name; // ptr
245 };
246 
247 enum class PlotDataType : uint8_t
248 {
249  Float,
250  Double,
251  Int
252 };
253 
255 {
256  uint64_t name; // ptr
259  union
260  {
261  double d;
262  float f;
264  } data;
265 };
266 
268 {
270 };
271 
273 {
277 };
278 
280 {
281  uint64_t text; // ptr
282 };
283 
285 {
286  uint64_t text; // ptr
287 };
288 
290 {
291  uint64_t text; // ptr
293 };
294 
296 {
297  uint64_t text; // ptr
299 };
300 
301 // Don't change order, only add new entries at the end, this is also used on trace dumps!
303 {
304  Invalid,
305  OpenGl,
306  Vulkan,
307  OpenCL,
308  Direct3D12
309 };
310 
312 {
314 };
315 
317 {
321  float period;
325 };
326 
328 {
333 };
334 
336 {
338 };
339 
341 {
346 };
347 
349 {
353 };
354 
356 {
361 };
362 
364 {
366 };
367 
369 {
372 };
373 
375 {
377 };
378 
380 {
384  char size[6];
385 };
386 
388 {
392 };
393 
395 {
397 };
398 
400 {
403 };
404 
406 {
409 };
410 
412 {
414 };
415 
417 {
420 };
421 
423 {
427 };
428 
430 {
433 };
434 
436 {
439 };
440 
442 {
444  uint64_t text; // ptr
445 };
446 
448 {
450  float sysTime;
451 };
452 
454 {
461 };
462 
464 {
467 };
468 
470 {
473 };
474 
476 {
477  Number,
478  Memory,
479  Percentage
480 };
481 
483 {
484  uint64_t name; // ptr
486 };
487 
489 {
491  uint64_t name; // ptr
494 };
495 
497 {
501 };
502 
504 {
505  union
506  {
509  };
510 };
511 
512 struct QueueItem
513 {
515  union
516  {
572  };
573 };
574 #pragma pack()
575 
576 
577 enum { QueueItemSize = sizeof( QueueItem ) };
578 
579 static constexpr size_t QueueDataSize[] = {
580  sizeof( QueueHeader ), // zone text
581  sizeof( QueueHeader ), // zone name
582  sizeof( QueueHeader ) + sizeof( QueueMessage ),
583  sizeof( QueueHeader ) + sizeof( QueueMessageColor ),
584  sizeof( QueueHeader ) + sizeof( QueueMessage ), // callstack
585  sizeof( QueueHeader ) + sizeof( QueueMessageColor ), // callstack
586  sizeof( QueueHeader ) + sizeof( QueueMessage ), // app info
587  sizeof( QueueHeader ) + sizeof( QueueZoneBeginLean ), // allocated source location
588  sizeof( QueueHeader ) + sizeof( QueueZoneBeginLean ), // allocated source location, callstack
589  sizeof( QueueHeader ), // callstack memory
590  sizeof( QueueHeader ), // callstack
591  sizeof( QueueHeader ), // callstack alloc
592  sizeof( QueueHeader ) + sizeof( QueueCallstackSample ),
593  sizeof( QueueHeader ) + sizeof( QueueFrameImage ),
594  sizeof( QueueHeader ) + sizeof( QueueZoneBegin ),
595  sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), // callstack
596  sizeof( QueueHeader ) + sizeof( QueueZoneEnd ),
597  sizeof( QueueHeader ) + sizeof( QueueLockWait ),
598  sizeof( QueueHeader ) + sizeof( QueueLockObtain ),
599  sizeof( QueueHeader ) + sizeof( QueueLockRelease ),
600  sizeof( QueueHeader ) + sizeof( QueueLockWait ), // shared
601  sizeof( QueueHeader ) + sizeof( QueueLockObtain ), // shared
602  sizeof( QueueHeader ) + sizeof( QueueLockRelease ), // shared
603  sizeof( QueueHeader ) + sizeof( QueueLockName ),
604  sizeof( QueueHeader ) + sizeof( QueueMemAlloc ),
605  sizeof( QueueHeader ) + sizeof( QueueMemAlloc ), // named
606  sizeof( QueueHeader ) + sizeof( QueueMemFree ),
607  sizeof( QueueHeader ) + sizeof( QueueMemFree ), // named
608  sizeof( QueueHeader ) + sizeof( QueueMemAlloc ), // callstack
609  sizeof( QueueHeader ) + sizeof( QueueMemAlloc ), // callstack, named
610  sizeof( QueueHeader ) + sizeof( QueueMemFree ), // callstack
611  sizeof( QueueHeader ) + sizeof( QueueMemFree ), // callstack, named
612  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ),
613  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // callstack
614  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBeginLean ),// allocated source location
615  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBeginLean ),// allocated source location, callstack
616  sizeof( QueueHeader ) + sizeof( QueueGpuZoneEnd ),
617  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // serial
618  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // serial, callstack
619  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBeginLean ),// serial, allocated source location
620  sizeof( QueueHeader ) + sizeof( QueueGpuZoneBeginLean ),// serial, allocated source location, callstack
621  sizeof( QueueHeader ) + sizeof( QueueGpuZoneEnd ), // serial
622  sizeof( QueueHeader ) + sizeof( QueuePlotData ),
623  sizeof( QueueHeader ) + sizeof( QueueContextSwitch ),
624  sizeof( QueueHeader ) + sizeof( QueueThreadWakeup ),
625  sizeof( QueueHeader ) + sizeof( QueueGpuTime ),
626  sizeof( QueueHeader ) + sizeof( QueueGpuContextName ),
627  // above items must be first
628  sizeof( QueueHeader ), // terminate
629  sizeof( QueueHeader ), // keep alive
630  sizeof( QueueHeader ) + sizeof( QueueThreadContext ),
631  sizeof( QueueHeader ) + sizeof( QueueGpuCalibration ),
632  sizeof( QueueHeader ), // crash
633  sizeof( QueueHeader ) + sizeof( QueueCrashReport ),
634  sizeof( QueueHeader ) + sizeof( QueueZoneValidation ),
635  sizeof( QueueHeader ) + sizeof( QueueZoneColor ),
636  sizeof( QueueHeader ) + sizeof( QueueZoneValue ),
637  sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // continuous frames
638  sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // start
639  sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // end
640  sizeof( QueueHeader ) + sizeof( QueueSourceLocation ),
641  sizeof( QueueHeader ) + sizeof( QueueLockAnnounce ),
642  sizeof( QueueHeader ) + sizeof( QueueLockTerminate ),
643  sizeof( QueueHeader ) + sizeof( QueueLockMark ),
644  sizeof( QueueHeader ) + sizeof( QueueMessageLiteral ),
645  sizeof( QueueHeader ) + sizeof( QueueMessageColorLiteral ),
646  sizeof( QueueHeader ) + sizeof( QueueMessageLiteral ), // callstack
647  sizeof( QueueHeader ) + sizeof( QueueMessageColorLiteral ), // callstack
648  sizeof( QueueHeader ) + sizeof( QueueGpuNewContext ),
649  sizeof( QueueHeader ) + sizeof( QueueCallstackFrameSize ),
650  sizeof( QueueHeader ) + sizeof( QueueCallstackFrame ),
651  sizeof( QueueHeader ) + sizeof( QueueSymbolInformation ),
652  sizeof( QueueHeader ) + sizeof( QueueCodeInformation ),
653  sizeof( QueueHeader ) + sizeof( QueueSysTime ),
654  sizeof( QueueHeader ) + sizeof( QueueTidToPid ),
655  sizeof( QueueHeader ) + sizeof( QueuePlotConfig ),
656  sizeof( QueueHeader ) + sizeof( QueueParamSetup ),
657  sizeof( QueueHeader ), // server query acknowledgement
658  sizeof( QueueHeader ), // source code not available
659  sizeof( QueueHeader ) + sizeof( QueueCpuTopology ),
660  sizeof( QueueHeader ), // single string data
661  sizeof( QueueHeader ), // second string data
662  sizeof( QueueHeader ) + sizeof( QueueMemNamePayload ),
663  // keep all QueueStringTransfer below
664  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // string data
665  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // thread name
666  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // plot name
667  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // allocated source location payload
668  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // callstack payload
669  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // callstack alloc payload
670  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // frame name
671  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // frame image data
672  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // external name
673  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // external thread name
674  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // symbol code
675  sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // source code
676 };
677 
678 static_assert( QueueItemSize == 32, "Queue item size not 32 bytes" );
679 static_assert( sizeof( QueueDataSize ) / sizeof( size_t ) == (uint8_t)QueueType::NUM_TYPES, "QueueDataSize mismatch" );
680 static_assert( sizeof( void* ) <= sizeof( uint64_t ), "Pointer size > 8 bytes" );
681 static_assert( sizeof( void* ) == sizeof( uintptr_t ), "Pointer size != uintptr_t" );
682 
683 }
684 
685 #endif


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