syntax = "proto2"; package NV.Nvtx; import "Nvtx/NvtxCategories.proto"; enum NvtxMethod { // Every feature counts Method 0 as invalid. The array of categories.size() is always > 1. NvtxMethodInvalid = 0; NvtxMethodRequestStateMessage = 1; NvtxMethodReplyStateMessage = 2; // ONLY ADD AT THE END OF THIS LIST. DO NOT RE-ORDER. } message NvtxRequestStateMessage { message TypeInfo { optional NvtxCategory Category = 1 [default = NvtxCategoryState]; optional NvtxMethod Method = 2 [default = NvtxMethodRequestStateMessage]; } } enum NvtxColorType { NvtxColorTypeUnknown = 0; NvtxColorTypeArgb = 1; } enum NvtxPayloadType { NvtxPayloadTypeUnknown = 0; NvtxPayloadTypeUint64 = 1; NvtxPayloadTypeInt64 = 2; NvtxPayloadTypeDouble = 3; NvtxPayloadTypeUint32 = 4; NvtxPayloadTypeInt32 = 5; NvtxPayloadTypeFloat = 6; NvtxPayloadTypeJson = 7; // stored in StrValue NvtxPayloadTypeJsonRegistered = 8; // stored in ULLValue } message NvtxPayload { required NvtxPayloadType PayloadType = 1 [default = NvtxPayloadTypeUnknown]; optional uint64 ULLValue = 2; optional int64 LLValue = 3; optional double DoubleValue = 4; optional uint32 UValue = 5; optional int32 IValue = 6; optional float FValue = 7; optional string StrValue = 8; } enum NvtxMessageType { NvtxMessageTypeUnknown = 0; NvtxMessageTypeAscii = 1; NvtxMessageTypeUnicode = 2; NvtxMessageTypeRegistered = 3; } // While updating this, also update CmdlineProfilerOptions.h enum NvtxPushPopRangeScope { Thread = 0; Process = 1; } message NvtxMessage { required NvtxMessageType MessageType = 1 [default = NvtxMessageTypeUnknown]; optional string message = 2; optional uint64 handle = 3; } message NvtxColor { required NvtxColorType ColorType = 1 [default = NvtxColorTypeUnknown]; optional uint32 Color = 2; } message NvtxEventAttributes { required uint32 Version = 1; required uint32 Category = 2; required NvtxColor Color = 3; required NvtxPayload Payload = 4; required NvtxMessage Message = 5; } message NvtxPushPopRange { required string Name = 1; optional NvtxEventAttributes Attributes = 2; optional uint64 LastApiCallId = 3; optional uint64 Id = 4; } message NvtxStartEndRange { required uint64 Id = 1; required string Name = 2; optional NvtxEventAttributes Attributes = 3; optional uint64 LastApiCallId = 4; optional uint32 StartTID = 5; } message NvtxPushPopDomain { required uint64 Id = 1; repeated NvtxPushPopRange Stack = 3; } message NvtxStartEndDomain { required uint64 Id = 1; repeated NvtxStartEndRange Ranges = 3; } message NvtxRegisteredString { required uint64 Id = 1; required string Value = 2; } message NvtxDomainInfo { required uint64 Id = 1; required string Name = 2; repeated NvtxRegisteredString Strings = 3; repeated NvtxNameTable NameTables = 4; } message NvtxThread { required uint32 TID = 1; repeated NvtxPushPopDomain PushPopDomains = 2; } enum NvtxNameFamily { NvtxNameFamilyUnknown = 0; NvtxNameFamilyCategory = 1; NvtxNameFamilyOsThread = 2; NvtxNameFamilyCudaDevice = 3; NvtxNameFamilyCudaContext = 4; NvtxNameFamilyCudaStream = 5; NvtxNameFamilyCudaEvent = 6; NvtxNameFamilyClDevice = 7; NvtxNameFamilyClContext = 8; NvtxNameFamilyClCommandQueue = 10; NvtxNameFamilyClMemObject = 11; NvtxNameFamilyClSampler = 12; NvtxNameFamilyClProgram = 13; NvtxNameFamilyClEvent = 14; NvtxNameFamilyCudaRtDevice = 15; NvtxNameFamilyCudaRtStream = 16; NvtxNameFamilyCudaRtEvent = 17; } message NvtxNameTable { required NvtxNameFamily Family = 1; repeated NvtxRegisteredString Mappings = 2; } message NvtxState { repeated NvtxDomainInfo Domains = 1; repeated NvtxThread Threads = 2; repeated NvtxStartEndDomain StartEndDomains = 3; optional uint64 DefaultDomain = 4; optional NvtxPushPopRangeScope PushPopRangeScope = 5; } message NvtxReplyStateMessage { message TypeInfo { optional NvtxCategory Category = 1 [default = NvtxCategoryState]; optional NvtxMethod Method = 2 [default = NvtxMethodReplyStateMessage]; } optional NvtxState State = 1; }