tracy/public/common/TracyQueue.hpp

920 lines
22 KiB
C++
Raw Normal View History

2017-09-10 18:06:52 +00:00
#ifndef __TRACYQUEUE_HPP__
#define __TRACYQUEUE_HPP__
2022-04-26 19:23:22 +00:00
#include <stddef.h>
2017-09-10 18:06:52 +00:00
#include <stdint.h>
namespace tracy
{
enum class QueueType : uint8_t
{
ZoneText,
2018-06-29 14:01:31 +00:00
ZoneName,
Message,
2019-05-10 18:17:44 +00:00
MessageColor,
2019-11-14 22:40:41 +00:00
MessageCallstack,
MessageColorCallstack,
MessageAppInfo,
ZoneBeginAllocSrcLoc,
ZoneBeginAllocSrcLocCallstack,
CallstackSerial,
2018-06-21 22:56:01 +00:00
Callstack,
2019-02-28 19:16:19 +00:00
CallstackAlloc,
2020-02-22 12:42:09 +00:00
CallstackSample,
CallstackSampleContextSwitch,
2019-06-06 19:39:54 +00:00
FrameImage,
ZoneBegin,
ZoneBeginCallstack,
ZoneEnd,
LockWait,
LockObtain,
LockRelease,
LockSharedWait,
LockSharedObtain,
LockSharedRelease,
2020-03-08 12:47:38 +00:00
LockName,
MemAlloc,
MemAllocNamed,
MemFree,
MemFreeNamed,
MemAllocCallstack,
MemAllocCallstackNamed,
MemFreeCallstack,
MemFreeCallstackNamed,
MemDiscard,
MemDiscardCallstack,
GpuZoneBegin,
GpuZoneBeginCallstack,
2021-01-15 19:13:09 +00:00
GpuZoneBeginAllocSrcLoc,
GpuZoneBeginAllocSrcLocCallstack,
GpuZoneEnd,
GpuZoneBeginSerial,
GpuZoneBeginCallstackSerial,
2021-01-15 19:13:09 +00:00
GpuZoneBeginAllocSrcLocSerial,
GpuZoneBeginAllocSrcLocCallstackSerial,
GpuZoneEndSerial,
PlotDataInt,
PlotDataFloat,
PlotDataDouble,
2019-10-25 17:13:11 +00:00
ContextSwitch,
ThreadWakeup,
2019-10-25 17:52:01 +00:00
GpuTime,
GpuContextName,
CallstackFrameSize,
SymbolInformation,
ExternalNameMetadata,
SymbolCodeMetadata,
SourceCodeMetadata,
2021-11-01 22:56:19 +00:00
FiberEnter,
FiberLeave,
2017-10-18 16:48:51 +00:00
Terminate,
2018-07-10 19:23:19 +00:00
KeepAlive,
ThreadContext,
2020-07-07 18:32:25 +00:00
GpuCalibration,
GpuTimeSync,
Crash,
2018-08-20 00:07:31 +00:00
CrashReport,
2019-01-14 21:16:14 +00:00
ZoneValidation,
ZoneColor,
ZoneValue,
FrameMarkMsg,
2018-08-05 00:09:59 +00:00
FrameMarkMsgStart,
FrameMarkMsgEnd,
FrameVsync,
SourceLocation,
2017-12-10 20:37:39 +00:00
LockAnnounce,
2018-12-16 19:37:48 +00:00
LockTerminate,
2017-10-06 14:32:32 +00:00
LockMark,
2017-10-15 11:06:49 +00:00
MessageLiteral,
2019-05-10 18:17:44 +00:00
MessageLiteralColor,
2019-11-14 22:40:41 +00:00
MessageLiteralCallstack,
MessageLiteralColorCallstack,
2017-11-11 18:44:09 +00:00
GpuNewContext,
2018-06-19 23:06:31 +00:00
CallstackFrame,
2019-02-21 20:59:02 +00:00
SysTimeReport,
2023-03-09 23:23:09 +00:00
SysPowerReport,
2019-08-17 20:32:41 +00:00
TidToPid,
HwSampleCpuCycle,
HwSampleInstructionRetired,
2021-05-20 00:15:06 +00:00
HwSampleCacheReference,
HwSampleCacheMiss,
HwSampleBranchRetired,
HwSampleBranchMiss,
2019-11-05 15:47:41 +00:00
PlotConfig,
ParamSetup,
AckServerQueryNoop,
AckSourceCodeNotAvailable,
AckSymbolCodeNotAvailable,
CpuTopology,
SingleStringData,
2020-07-25 23:32:49 +00:00
SecondStringData,
MemNamePayload,
2024-08-03 17:40:49 +00:00
ThreadGroupHint,
StringData,
ThreadName,
PlotName,
SourceLocationPayload,
2018-06-19 17:09:43 +00:00
CallstackPayload,
2019-02-28 19:30:07 +00:00
CallstackAllocPayload,
2018-08-04 18:48:21 +00:00
FrameName,
2019-06-06 19:39:54 +00:00
FrameImageData,
ExternalName,
2019-08-16 17:49:16 +00:00
ExternalThreadName,
SymbolCode,
SourceCode,
2021-11-03 17:57:30 +00:00
FiberName,
2017-09-11 23:14:04 +00:00
NUM_TYPES
2017-09-10 18:06:52 +00:00
};
#pragma pack( push, 1 )
2017-09-11 22:28:50 +00:00
struct QueueThreadContext
{
uint32_t thread;
};
2020-05-10 17:20:59 +00:00
struct QueueZoneBeginLean
2017-09-10 18:06:52 +00:00
{
int64_t time;
2020-05-10 17:20:59 +00:00
};
struct QueueZoneBegin : public QueueZoneBeginLean
{
2017-10-03 14:41:32 +00:00
uint64_t srcloc; // ptr
2017-09-10 18:06:52 +00:00
};
struct QueueZoneBeginThread : public QueueZoneBegin
{
uint32_t thread;
};
2017-09-10 18:06:52 +00:00
struct QueueZoneEnd
{
int64_t time;
2017-09-10 18:06:52 +00:00
};
struct QueueZoneEndThread : public QueueZoneEnd
{
uint32_t thread;
};
2019-01-14 21:16:14 +00:00
struct QueueZoneValidation
{
uint32_t id;
};
struct QueueZoneValidationThread : public QueueZoneValidation
2021-10-09 13:50:09 +00:00
{
uint32_t thread;
};
struct QueueZoneColor
{
uint8_t b;
uint8_t g;
uint8_t r;
};
struct QueueZoneColorThread : public QueueZoneColor
{
uint32_t thread;
};
struct QueueZoneValue
{
uint64_t value;
};
struct QueueZoneValueThread : public QueueZoneValue
{
uint32_t thread;
};
2017-10-03 14:41:32 +00:00
struct QueueStringTransfer
{
uint64_t ptr;
};
struct QueueFrameMark
{
int64_t time;
2018-08-04 13:03:47 +00:00
uint64_t name; // ptr
2017-10-03 14:41:32 +00:00
};
struct QueueFrameVsync
{
int64_t time;
uint32_t id;
};
2020-07-26 12:18:48 +00:00
struct QueueFrameImage
2019-06-06 19:39:54 +00:00
{
uint32_t frame;
2019-06-06 19:39:54 +00:00
uint16_t w;
uint16_t h;
2019-06-12 13:28:32 +00:00
uint8_t flip;
2019-06-06 19:39:54 +00:00
};
2020-07-26 12:18:48 +00:00
struct QueueFrameImageFat : public QueueFrameImage
2020-05-10 18:16:08 +00:00
{
uint64_t image; // ptr
};
struct QueueSourceLocation
{
uint64_t name;
uint64_t function; // ptr
uint64_t file; // ptr
uint32_t line;
uint8_t b;
uint8_t g;
uint8_t r;
};
struct QueueZoneTextFat
2017-09-27 00:18:17 +00:00
{
uint64_t text; // ptr
uint16_t size;
};
struct QueueZoneTextFatThread : public QueueZoneTextFat
{
uint32_t thread;
};
2017-12-10 20:37:39 +00:00
enum class LockType : uint8_t
{
2017-12-10 20:49:45 +00:00
Lockable,
SharedLockable
2017-12-10 20:37:39 +00:00
};
struct QueueLockAnnounce
{
uint32_t id;
2018-12-16 19:33:18 +00:00
int64_t time;
2017-12-10 20:37:39 +00:00
uint64_t lckloc; // ptr
LockType type;
};
2021-11-01 22:56:19 +00:00
struct QueueFiberEnter
{
int64_t time;
uint64_t fiber; // ptr
uint32_t thread;
2024-08-03 22:06:48 +00:00
int32_t groupHint;
2021-11-01 22:56:19 +00:00
};
struct QueueFiberLeave
{
int64_t time;
uint32_t thread;
};
2018-12-16 19:37:48 +00:00
struct QueueLockTerminate
{
uint32_t id;
int64_t time;
};
2017-10-04 14:16:27 +00:00
struct QueueLockWait
{
uint32_t thread;
uint32_t id;
2017-10-04 14:45:46 +00:00
int64_t time;
2017-10-04 14:16:27 +00:00
};
struct QueueLockObtain
{
uint32_t thread;
uint32_t id;
2017-10-04 14:45:46 +00:00
int64_t time;
2017-10-04 14:16:27 +00:00
};
struct QueueLockRelease
{
uint32_t id;
2017-10-04 14:45:46 +00:00
int64_t time;
2017-10-04 14:16:27 +00:00
};
struct QueueLockReleaseShared : public QueueLockRelease
{
uint32_t thread;
};
2017-10-06 14:32:32 +00:00
struct QueueLockMark
{
uint32_t thread;
uint32_t id;
2017-10-06 14:32:32 +00:00
uint64_t srcloc; // ptr
};
2020-03-08 12:47:38 +00:00
struct QueueLockName
{
uint32_t id;
2020-07-25 23:22:09 +00:00
};
struct QueueLockNameFat : public QueueLockName
{
2020-03-08 12:47:38 +00:00
uint64_t name; // ptr
2020-07-25 23:22:09 +00:00
uint16_t size;
2020-03-08 12:47:38 +00:00
};
struct QueuePlotDataBase
2017-10-13 00:21:29 +00:00
{
uint64_t name; // ptr
int64_t time;
2017-10-13 00:21:29 +00:00
};
struct QueuePlotDataInt : public QueuePlotDataBase
2017-10-13 00:07:03 +00:00
{
int64_t val;
};
struct QueuePlotDataFloat : public QueuePlotDataBase
{
float val;
};
struct QueuePlotDataDouble : public QueuePlotDataBase
{
double val;
2017-10-13 00:07:03 +00:00
};
2017-10-14 11:23:13 +00:00
struct QueueMessage
{
int64_t time;
};
2019-05-10 18:17:44 +00:00
struct QueueMessageColor : public QueueMessage
{
uint8_t b;
uint8_t g;
uint8_t r;
2019-05-10 18:17:44 +00:00
};
2020-07-25 23:15:11 +00:00
struct QueueMessageLiteral : public QueueMessage
{
uint64_t text; // ptr
};
2021-10-10 13:54:21 +00:00
struct QueueMessageLiteralThread : public QueueMessageLiteral
{
uint32_t thread;
};
2020-07-25 23:15:11 +00:00
struct QueueMessageColorLiteral : public QueueMessageColor
{
uint64_t text; // ptr
};
2021-10-10 13:54:21 +00:00
struct QueueMessageColorLiteralThread : public QueueMessageColorLiteral
{
uint32_t thread;
};
2020-07-21 18:22:59 +00:00
struct QueueMessageFat : public QueueMessage
{
2020-07-25 23:15:11 +00:00
uint64_t text; // ptr
2020-07-21 18:22:59 +00:00
uint16_t size;
};
2021-10-10 13:54:21 +00:00
struct QueueMessageFatThread : public QueueMessageFat
{
uint32_t thread;
};
2020-07-21 18:22:59 +00:00
struct QueueMessageColorFat : public QueueMessageColor
{
2020-07-25 23:15:11 +00:00
uint64_t text; // ptr
2020-07-21 18:22:59 +00:00
uint16_t size;
};
2021-10-10 13:54:21 +00:00
struct QueueMessageColorFatThread : public QueueMessageColorFat
{
uint32_t thread;
};
2020-05-27 16:16:53 +00:00
// Don't change order, only add new entries at the end, this is also used on trace dumps!
enum class GpuContextType : uint8_t
{
Invalid,
OpenGl,
Vulkan,
2020-06-09 05:50:20 +00:00
OpenCL,
2020-08-07 15:05:11 +00:00
Direct3D12,
2024-02-05 17:08:43 +00:00
Direct3D11,
2024-10-02 16:55:29 +00:00
Metal,
Custom
2020-05-27 16:16:53 +00:00
};
2020-07-07 18:32:25 +00:00
enum GpuContextFlags : uint8_t
{
GpuContextCalibration = 1 << 0
};
2017-11-11 18:44:09 +00:00
struct QueueGpuNewContext
{
2017-11-25 12:14:16 +00:00
int64_t cpuTime;
int64_t gpuTime;
uint32_t thread;
float period;
2018-06-22 13:10:23 +00:00
uint8_t context;
2020-07-07 18:32:25 +00:00
GpuContextFlags flags;
2020-05-27 16:16:53 +00:00
GpuContextType type;
2017-11-11 18:44:09 +00:00
};
2021-01-15 19:13:09 +00:00
struct QueueGpuZoneBeginLean
2017-11-11 20:09:48 +00:00
{
int64_t cpuTime;
uint32_t thread;
2018-06-22 13:57:54 +00:00
uint16_t queryId;
2018-06-22 13:10:23 +00:00
uint8_t context;
2017-11-11 20:09:48 +00:00
};
2021-01-15 19:13:09 +00:00
struct QueueGpuZoneBegin : public QueueGpuZoneBeginLean
{
uint64_t srcloc;
};
2017-11-11 20:09:48 +00:00
struct QueueGpuZoneEnd
{
int64_t cpuTime;
uint32_t thread;
2018-06-22 13:57:54 +00:00
uint16_t queryId;
2018-06-22 13:10:23 +00:00
uint8_t context;
2017-11-11 20:09:48 +00:00
};
2017-11-11 21:08:47 +00:00
struct QueueGpuTime
{
int64_t gpuTime;
2018-06-22 14:19:53 +00:00
uint16_t queryId;
2018-06-22 13:10:23 +00:00
uint8_t context;
2017-11-11 21:08:47 +00:00
};
2020-07-07 18:32:25 +00:00
struct QueueGpuCalibration
{
int64_t gpuTime;
int64_t cpuTime;
int64_t cpuDelta;
uint8_t context;
};
struct QueueGpuTimeSync
{
int64_t gpuTime;
int64_t cpuTime;
uint8_t context;
};
struct QueueGpuContextName
{
uint8_t context;
};
struct QueueGpuContextNameFat : public QueueGpuContextName
{
uint64_t ptr;
uint16_t size;
};
struct QueueMemNamePayload
{
uint64_t name;
};
2024-08-03 17:40:49 +00:00
struct QueueThreadGroupHint
{
uint32_t thread;
int32_t groupHint;
};
2018-03-31 19:56:05 +00:00
struct QueueMemAlloc
{
int64_t time;
uint32_t thread;
2018-03-31 19:56:05 +00:00
uint64_t ptr;
char size[6];
};
struct QueueMemFree
{
int64_t time;
uint32_t thread;
2018-03-31 19:56:05 +00:00
uint64_t ptr;
};
struct QueueMemDiscard
{
int64_t time;
uint32_t thread;
uint64_t name;
};
struct QueueCallstackFat
2018-06-21 22:56:01 +00:00
{
uint64_t ptr;
};
2021-10-10 14:14:17 +00:00
struct QueueCallstackFatThread : public QueueCallstackFat
{
uint32_t thread;
};
struct QueueCallstackAllocFat
{
uint64_t ptr;
uint64_t nativePtr;
};
2021-10-10 14:14:17 +00:00
struct QueueCallstackAllocFatThread : public QueueCallstackAllocFat
{
uint32_t thread;
};
struct QueueCallstackSample
2020-02-22 12:42:09 +00:00
{
int64_t time;
uint32_t thread;
2020-05-10 18:00:51 +00:00
};
struct QueueCallstackSampleFat : public QueueCallstackSample
2020-05-10 18:00:51 +00:00
{
2020-02-22 12:42:09 +00:00
uint64_t ptr;
};
struct QueueCallstackFrameSize
2018-06-19 23:06:31 +00:00
{
uint64_t ptr;
uint8_t size;
};
struct QueueCallstackFrameSizeFat : public QueueCallstackFrameSize
{
uint64_t data;
uint64_t imageName;
};
struct QueueCallstackFrame
{
2018-06-19 23:06:31 +00:00
uint32_t line;
2020-02-25 22:03:40 +00:00
uint64_t symAddr;
uint32_t symLen;
2018-06-19 23:06:31 +00:00
};
2020-02-27 11:49:48 +00:00
struct QueueSymbolInformation
{
uint32_t line;
uint64_t symAddr;
};
struct QueueSymbolInformationFat : public QueueSymbolInformation
{
uint64_t fileString;
uint8_t needFree;
};
2018-08-20 00:07:31 +00:00
struct QueueCrashReport
{
int64_t time;
uint64_t text; // ptr
};
2021-10-10 13:58:24 +00:00
struct QueueCrashReportThread
{
uint32_t thread;
};
2019-02-21 20:59:02 +00:00
struct QueueSysTime
{
int64_t time;
float sysTime;
};
2023-03-09 23:23:09 +00:00
struct QueueSysPower
{
int64_t time;
uint64_t delta;
uint64_t name; // ptr
};
struct QueueContextSwitch
{
int64_t time;
uint32_t oldThread;
uint32_t newThread;
uint8_t cpu;
uint8_t reason;
uint8_t state;
};
2019-08-17 15:05:29 +00:00
struct QueueThreadWakeup
{
int64_t time;
uint32_t thread;
2019-08-17 15:05:29 +00:00
};
2019-08-17 20:32:41 +00:00
struct QueueTidToPid
{
uint64_t tid;
uint64_t pid;
};
struct QueueHwSample
{
uint64_t ip;
2021-06-04 10:50:55 +00:00
int64_t time;
};
2019-11-05 15:47:41 +00:00
enum class PlotFormatType : uint8_t
{
Number,
Memory,
Percentage
};
struct QueuePlotConfig
{
uint64_t name; // ptr
uint8_t type;
uint8_t step;
uint8_t fill;
uint32_t color;
2019-11-05 15:47:41 +00:00
};
struct QueueParamSetup
{
uint32_t idx;
uint64_t name; // ptr
uint8_t isBool;
int32_t val;
};
struct QueueSourceCodeNotAvailable
{
uint32_t id;
};
struct QueueCpuTopology
{
uint32_t package;
2024-08-21 22:58:01 +00:00
uint32_t die;
uint32_t core;
uint32_t thread;
};
struct QueueExternalNameMetadata
{
uint64_t thread;
uint64_t name;
uint64_t threadName;
};
struct QueueSymbolCodeMetadata
{
uint64_t symbol;
uint64_t ptr;
uint32_t size;
};
struct QueueSourceCodeMetadata
{
uint64_t ptr;
uint32_t size;
uint32_t id;
};
struct QueueHeader
2017-09-10 18:06:52 +00:00
{
union
{
QueueType type;
uint8_t idx;
};
};
struct QueueItem
{
QueueHeader hdr;
2017-09-10 18:06:52 +00:00
union
{
QueueThreadContext threadCtx;
2017-09-10 18:06:52 +00:00
QueueZoneBegin zoneBegin;
2020-05-10 17:20:59 +00:00
QueueZoneBeginLean zoneBeginLean;
QueueZoneBeginThread zoneBeginThread;
2017-09-10 18:06:52 +00:00
QueueZoneEnd zoneEnd;
QueueZoneEndThread zoneEndThread;
2019-01-14 21:16:14 +00:00
QueueZoneValidation zoneValidation;
2021-10-09 13:50:09 +00:00
QueueZoneValidationThread zoneValidationThread;
QueueZoneColor zoneColor;
QueueZoneColorThread zoneColorThread;
QueueZoneValue zoneValue;
QueueZoneValueThread zoneValueThread;
2017-10-03 14:41:32 +00:00
QueueStringTransfer stringTransfer;
QueueFrameMark frameMark;
QueueFrameVsync frameVsync;
2019-06-06 19:39:54 +00:00
QueueFrameImage frameImage;
2020-07-26 12:18:48 +00:00
QueueFrameImageFat frameImageFat;
QueueSourceLocation srcloc;
QueueZoneTextFat zoneTextFat;
QueueZoneTextFatThread zoneTextFatThread;
2017-12-10 20:37:39 +00:00
QueueLockAnnounce lockAnnounce;
2018-12-16 19:37:48 +00:00
QueueLockTerminate lockTerminate;
2017-10-04 14:16:27 +00:00
QueueLockWait lockWait;
QueueLockObtain lockObtain;
QueueLockRelease lockRelease;
QueueLockReleaseShared lockReleaseShared;
2017-10-06 14:32:32 +00:00
QueueLockMark lockMark;
2020-03-08 12:47:38 +00:00
QueueLockName lockName;
2020-07-25 23:22:09 +00:00
QueueLockNameFat lockNameFat;
QueuePlotDataInt plotDataInt;
QueuePlotDataFloat plotDataFloat;
QueuePlotDataDouble plotDataDouble;
2017-10-14 11:23:13 +00:00
QueueMessage message;
2019-05-10 18:17:44 +00:00
QueueMessageColor messageColor;
2020-07-25 23:15:11 +00:00
QueueMessageLiteral messageLiteral;
2021-10-10 13:54:21 +00:00
QueueMessageLiteralThread messageLiteralThread;
2020-07-25 23:15:11 +00:00
QueueMessageColorLiteral messageColorLiteral;
2021-10-10 13:54:21 +00:00
QueueMessageColorLiteralThread messageColorLiteralThread;
2020-07-21 18:22:59 +00:00
QueueMessageFat messageFat;
2021-10-10 13:54:21 +00:00
QueueMessageFatThread messageFatThread;
2020-07-21 18:22:59 +00:00
QueueMessageColorFat messageColorFat;
2021-10-10 13:54:21 +00:00
QueueMessageColorFatThread messageColorFatThread;
2017-11-11 18:44:09 +00:00
QueueGpuNewContext gpuNewContext;
2017-11-11 20:09:48 +00:00
QueueGpuZoneBegin gpuZoneBegin;
2021-01-15 19:13:09 +00:00
QueueGpuZoneBeginLean gpuZoneBeginLean;
2017-11-11 20:09:48 +00:00
QueueGpuZoneEnd gpuZoneEnd;
2017-11-11 21:08:47 +00:00
QueueGpuTime gpuTime;
2020-07-07 18:32:25 +00:00
QueueGpuCalibration gpuCalibration;
QueueGpuTimeSync gpuTimeSync;
QueueGpuContextName gpuContextName;
QueueGpuContextNameFat gpuContextNameFat;
2018-03-31 19:56:05 +00:00
QueueMemAlloc memAlloc;
QueueMemFree memFree;
QueueMemDiscard memDiscard;
QueueMemNamePayload memName;
2024-08-03 17:40:49 +00:00
QueueThreadGroupHint threadGroupHint;
QueueCallstackFat callstackFat;
2021-10-10 14:14:17 +00:00
QueueCallstackFatThread callstackFatThread;
QueueCallstackAllocFat callstackAllocFat;
2021-10-10 14:14:17 +00:00
QueueCallstackAllocFatThread callstackAllocFatThread;
2020-02-22 12:42:09 +00:00
QueueCallstackSample callstackSample;
QueueCallstackSampleFat callstackSampleFat;
QueueCallstackFrameSize callstackFrameSize;
QueueCallstackFrameSizeFat callstackFrameSizeFat;
2018-06-19 23:06:31 +00:00
QueueCallstackFrame callstackFrame;
2020-02-27 11:49:48 +00:00
QueueSymbolInformation symbolInformation;
QueueSymbolInformationFat symbolInformationFat;
2018-08-20 00:07:31 +00:00
QueueCrashReport crashReport;
2021-10-10 13:58:24 +00:00
QueueCrashReportThread crashReportThread;
2019-02-21 20:59:02 +00:00
QueueSysTime sysTime;
2023-03-09 23:23:09 +00:00
QueueSysPower sysPower;
QueueContextSwitch contextSwitch;
2019-08-17 15:05:29 +00:00
QueueThreadWakeup threadWakeup;
2019-08-17 20:32:41 +00:00
QueueTidToPid tidToPid;
QueueHwSample hwSample;
2019-11-05 15:47:41 +00:00
QueuePlotConfig plotConfig;
QueueParamSetup paramSetup;
QueueCpuTopology cpuTopology;
QueueExternalNameMetadata externalNameMetadata;
QueueSymbolCodeMetadata symbolCodeMetadata;
QueueSourceCodeMetadata sourceCodeMetadata;
QueueSourceCodeNotAvailable sourceCodeNotAvailable;
2021-11-01 22:56:19 +00:00
QueueFiberEnter fiberEnter;
QueueFiberLeave fiberLeave;
2017-09-10 18:06:52 +00:00
};
};
#pragma pack( pop )
2017-09-11 22:28:50 +00:00
2017-09-10 18:06:52 +00:00
enum { QueueItemSize = sizeof( QueueItem ) };
2020-01-06 14:16:27 +00:00
static constexpr size_t QueueDataSize[] = {
sizeof( QueueHeader ), // zone text
sizeof( QueueHeader ), // zone name
sizeof( QueueHeader ) + sizeof( QueueMessage ),
2019-05-10 18:17:44 +00:00
sizeof( QueueHeader ) + sizeof( QueueMessageColor ),
2019-11-14 22:40:41 +00:00
sizeof( QueueHeader ) + sizeof( QueueMessage ), // callstack
sizeof( QueueHeader ) + sizeof( QueueMessageColor ), // callstack
sizeof( QueueHeader ) + sizeof( QueueMessage ), // app info
sizeof( QueueHeader ) + sizeof( QueueZoneBeginLean ), // allocated source location
sizeof( QueueHeader ) + sizeof( QueueZoneBeginLean ), // allocated source location, callstack
sizeof( QueueHeader ), // callstack memory
sizeof( QueueHeader ), // callstack
sizeof( QueueHeader ), // callstack alloc
sizeof( QueueHeader ) + sizeof( QueueCallstackSample ),
sizeof( QueueHeader ) + sizeof( QueueCallstackSample ), // context switch
2020-07-26 12:18:48 +00:00
sizeof( QueueHeader ) + sizeof( QueueFrameImage ),
sizeof( QueueHeader ) + sizeof( QueueZoneBegin ),
sizeof( QueueHeader ) + sizeof( QueueZoneBegin ), // callstack
sizeof( QueueHeader ) + sizeof( QueueZoneEnd ),
sizeof( QueueHeader ) + sizeof( QueueLockWait ),
sizeof( QueueHeader ) + sizeof( QueueLockObtain ),
sizeof( QueueHeader ) + sizeof( QueueLockRelease ),
sizeof( QueueHeader ) + sizeof( QueueLockWait ), // shared
sizeof( QueueHeader ) + sizeof( QueueLockObtain ), // shared
sizeof( QueueHeader ) + sizeof( QueueLockReleaseShared ),
2020-03-08 12:47:38 +00:00
sizeof( QueueHeader ) + sizeof( QueueLockName ),
sizeof( QueueHeader ) + sizeof( QueueMemAlloc ),
sizeof( QueueHeader ) + sizeof( QueueMemAlloc ), // named
sizeof( QueueHeader ) + sizeof( QueueMemFree ),
sizeof( QueueHeader ) + sizeof( QueueMemFree ), // named
sizeof( QueueHeader ) + sizeof( QueueMemAlloc ), // callstack
sizeof( QueueHeader ) + sizeof( QueueMemAlloc ), // callstack, named
sizeof( QueueHeader ) + sizeof( QueueMemFree ), // callstack
sizeof( QueueHeader ) + sizeof( QueueMemFree ), // callstack, named
sizeof( QueueHeader ) + sizeof( QueueMemDiscard ),
sizeof( QueueHeader ) + sizeof( QueueMemDiscard ), // callstack
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ),
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // callstack
2021-01-15 19:13:09 +00:00
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBeginLean ),// allocated source location
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBeginLean ),// allocated source location, callstack
sizeof( QueueHeader ) + sizeof( QueueGpuZoneEnd ),
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // serial
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBegin ), // serial, callstack
2021-01-15 19:13:09 +00:00
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBeginLean ),// serial, allocated source location
sizeof( QueueHeader ) + sizeof( QueueGpuZoneBeginLean ),// serial, allocated source location, callstack
sizeof( QueueHeader ) + sizeof( QueueGpuZoneEnd ), // serial
sizeof( QueueHeader ) + sizeof( QueuePlotDataInt ),
sizeof( QueueHeader ) + sizeof( QueuePlotDataFloat ),
sizeof( QueueHeader ) + sizeof( QueuePlotDataDouble ),
2019-10-25 17:13:11 +00:00
sizeof( QueueHeader ) + sizeof( QueueContextSwitch ),
sizeof( QueueHeader ) + sizeof( QueueThreadWakeup ),
2019-10-25 17:52:01 +00:00
sizeof( QueueHeader ) + sizeof( QueueGpuTime ),
sizeof( QueueHeader ) + sizeof( QueueGpuContextName ),
sizeof( QueueHeader ) + sizeof( QueueCallstackFrameSize ),
sizeof( QueueHeader ) + sizeof( QueueSymbolInformation ),
2021-11-01 22:56:19 +00:00
sizeof( QueueHeader ), // ExternalNameMetadata - not for wire transfer
sizeof( QueueHeader ), // SymbolCodeMetadata - not for wire transfer
sizeof( QueueHeader ), // SourceCodeMetadata - not for wire transfer
2021-11-01 22:56:19 +00:00
sizeof( QueueHeader ) + sizeof( QueueFiberEnter ),
sizeof( QueueHeader ) + sizeof( QueueFiberLeave ),
// above items must be first
2017-10-18 16:48:51 +00:00
sizeof( QueueHeader ), // terminate
2018-07-10 19:23:19 +00:00
sizeof( QueueHeader ), // keep alive
sizeof( QueueHeader ) + sizeof( QueueThreadContext ),
2020-07-07 18:32:25 +00:00
sizeof( QueueHeader ) + sizeof( QueueGpuCalibration ),
sizeof( QueueHeader ) + sizeof( QueueGpuTimeSync ),
sizeof( QueueHeader ), // crash
2018-08-20 00:07:31 +00:00
sizeof( QueueHeader ) + sizeof( QueueCrashReport ),
2019-01-14 21:16:14 +00:00
sizeof( QueueHeader ) + sizeof( QueueZoneValidation ),
sizeof( QueueHeader ) + sizeof( QueueZoneColor ),
sizeof( QueueHeader ) + sizeof( QueueZoneValue ),
2018-08-05 00:09:59 +00:00
sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // continuous frames
sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // start
sizeof( QueueHeader ) + sizeof( QueueFrameMark ), // end
sizeof( QueueHeader ) + sizeof( QueueFrameVsync ),
sizeof( QueueHeader ) + sizeof( QueueSourceLocation ),
2017-12-10 20:37:39 +00:00
sizeof( QueueHeader ) + sizeof( QueueLockAnnounce ),
2018-12-16 19:37:48 +00:00
sizeof( QueueHeader ) + sizeof( QueueLockTerminate ),
2017-10-06 14:32:32 +00:00
sizeof( QueueHeader ) + sizeof( QueueLockMark ),
2020-07-25 23:15:11 +00:00
sizeof( QueueHeader ) + sizeof( QueueMessageLiteral ),
sizeof( QueueHeader ) + sizeof( QueueMessageColorLiteral ),
sizeof( QueueHeader ) + sizeof( QueueMessageLiteral ), // callstack
sizeof( QueueHeader ) + sizeof( QueueMessageColorLiteral ), // callstack
2017-11-11 18:44:09 +00:00
sizeof( QueueHeader ) + sizeof( QueueGpuNewContext ),
2018-06-19 23:06:31 +00:00
sizeof( QueueHeader ) + sizeof( QueueCallstackFrame ),
2019-02-21 20:59:02 +00:00
sizeof( QueueHeader ) + sizeof( QueueSysTime ),
2023-03-09 23:23:09 +00:00
sizeof( QueueHeader ) + sizeof( QueueSysPower ),
2019-08-17 20:32:41 +00:00
sizeof( QueueHeader ) + sizeof( QueueTidToPid ),
sizeof( QueueHeader ) + sizeof( QueueHwSample ), // cpu cycle
sizeof( QueueHeader ) + sizeof( QueueHwSample ), // instruction retired
2021-05-20 00:15:06 +00:00
sizeof( QueueHeader ) + sizeof( QueueHwSample ), // cache reference
sizeof( QueueHeader ) + sizeof( QueueHwSample ), // cache miss
sizeof( QueueHeader ) + sizeof( QueueHwSample ), // branch retired
sizeof( QueueHeader ) + sizeof( QueueHwSample ), // branch miss
2019-11-05 15:47:41 +00:00
sizeof( QueueHeader ) + sizeof( QueuePlotConfig ),
sizeof( QueueHeader ) + sizeof( QueueParamSetup ),
sizeof( QueueHeader ), // server query acknowledgement
sizeof( QueueHeader ) + sizeof( QueueSourceCodeNotAvailable ),
sizeof( QueueHeader ), // symbol code not available
sizeof( QueueHeader ) + sizeof( QueueCpuTopology ),
sizeof( QueueHeader ), // single string data
2020-07-25 23:32:49 +00:00
sizeof( QueueHeader ), // second string data
sizeof( QueueHeader ) + sizeof( QueueMemNamePayload ),
2024-08-03 17:40:49 +00:00
sizeof( QueueHeader ) + sizeof( QueueThreadGroupHint ),
// keep all QueueStringTransfer below
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // string data
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // thread name
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // plot name
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // allocated source location payload
2018-06-19 17:09:43 +00:00
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // callstack payload
2019-02-28 19:30:07 +00:00
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // callstack alloc payload
2018-08-04 18:48:21 +00:00
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // frame name
2019-06-06 19:39:54 +00:00
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // frame image data
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // external name
2019-08-16 17:49:16 +00:00
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // external thread name
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // symbol code
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // source code
2021-11-03 17:57:30 +00:00
sizeof( QueueHeader ) + sizeof( QueueStringTransfer ), // fiber name
2017-09-11 23:14:04 +00:00
};
static_assert( QueueItemSize == 32, "Queue item size not 32 bytes" );
2017-09-11 23:14:04 +00:00
static_assert( sizeof( QueueDataSize ) / sizeof( size_t ) == (uint8_t)QueueType::NUM_TYPES, "QueueDataSize mismatch" );
static_assert( sizeof( void* ) <= sizeof( uint64_t ), "Pointer size > 8 bytes" );
static_assert( sizeof( void* ) == sizeof( uintptr_t ), "Pointer size != uintptr_t" );
2017-09-11 23:14:04 +00:00
}
2017-09-10 18:06:52 +00:00
#endif