21#if defined(NVTX_AS_SYSTEM_HEADER)
23#pragma clang system_header
24#elif defined(__GNUC__) || defined(__NVCOMPILER)
25#pragma GCC system_header
26#elif defined(_MSC_VER)
43#ifndef NVTX_EXT_PAYLOAD_COMPATID
44#define NVTX_EXT_PAYLOAD_COMPATID 0x0104
51#ifndef NVTX_EXT_PAYLOAD_MODULEID
52#define NVTX_EXT_PAYLOAD_MODULEID 2
58#ifndef NVTX_PAYLOAD_TYPE_EXT
59#define NVTX_PAYLOAD_TYPE_EXT (NVTX_STATIC_CAST(int32_t, 0xDFBD0009))
65#ifndef NVTX_PAYLOAD_ENTRY_FLAGS_V1
66#define NVTX_PAYLOAD_ENTRY_FLAGS_V1
68#define NVTX_PAYLOAD_ENTRY_FLAG_UNUSED 0
73#define NVTX_PAYLOAD_ENTRY_FLAG_POINTER (1 << 1)
78#define NVTX_PAYLOAD_ENTRY_FLAG_OFFSET_FROM_BASE (1 << 2)
83#define NVTX_PAYLOAD_ENTRY_FLAG_OFFSET_FROM_HERE (1 << 3)
88#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_FIXED_SIZE (1 << 4)
93#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_ZERO_TERMINATED (2 << 4)
109#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_LENGTH_INDEX (3 << 4)
118#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_LENGTH_PAYLOAD_INDEX (4 << 4)
127#define NVTX_PAYLOAD_ENTRY_FLAG_DEEP_COPY (1 << 8)
132#define NVTX_PAYLOAD_ENTRY_FLAG_HIDE (1 << 9)
137#define NVTX_PAYLOAD_ENTRY_FLAG_EVENT_MESSAGE (1 << 10)
145#define NVTX_PAYLOAD_ENTRY_FLAG_TIMESTAMP (2 << 10)
150#define NVTX_PAYLOAD_ENTRY_FLAG_RANGE_BEGIN (1 << 12)
151#define NVTX_PAYLOAD_ENTRY_FLAG_RANGE_END (2 << 12)
152#define NVTX_PAYLOAD_ENTRY_FLAG_MARK (3 << 12)
153#define NVTX_PAYLOAD_ENTRY_FLAG_COUNTER (4 << 12)
171#define NVTX_PAYLOAD_ENTRY_FLAG_IS_ARRAY (\
172 NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_FIXED_SIZE | \
173 NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_ZERO_TERMINATED | \
174 NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_LENGTH_INDEX)
176#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_TYPE(F) \
177 ((F) & NVTX_PAYLOAD_ENTRY_FLAG_IS_ARRAY)
192#ifndef NVTX_PAYLOAD_ENTRY_TYPES_V1
193#define NVTX_PAYLOAD_ENTRY_TYPES_V1
195#define NVTX_PAYLOAD_ENTRY_TYPE_INVALID 0
200#define NVTX_PAYLOAD_ENTRY_TYPE_CHAR 1
201#define NVTX_PAYLOAD_ENTRY_TYPE_UCHAR 2
202#define NVTX_PAYLOAD_ENTRY_TYPE_SHORT 3
203#define NVTX_PAYLOAD_ENTRY_TYPE_USHORT 4
204#define NVTX_PAYLOAD_ENTRY_TYPE_INT 5
205#define NVTX_PAYLOAD_ENTRY_TYPE_UINT 6
206#define NVTX_PAYLOAD_ENTRY_TYPE_LONG 7
207#define NVTX_PAYLOAD_ENTRY_TYPE_ULONG 8
208#define NVTX_PAYLOAD_ENTRY_TYPE_LONGLONG 9
209#define NVTX_PAYLOAD_ENTRY_TYPE_ULONGLONG 10
214#define NVTX_PAYLOAD_ENTRY_TYPE_INT8 11
215#define NVTX_PAYLOAD_ENTRY_TYPE_UINT8 12
216#define NVTX_PAYLOAD_ENTRY_TYPE_INT16 13
217#define NVTX_PAYLOAD_ENTRY_TYPE_UINT16 14
218#define NVTX_PAYLOAD_ENTRY_TYPE_INT32 15
219#define NVTX_PAYLOAD_ENTRY_TYPE_UINT32 16
220#define NVTX_PAYLOAD_ENTRY_TYPE_INT64 17
221#define NVTX_PAYLOAD_ENTRY_TYPE_UINT64 18
226#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT 19
227#define NVTX_PAYLOAD_ENTRY_TYPE_DOUBLE 20
228#define NVTX_PAYLOAD_ENTRY_TYPE_LONGDOUBLE 21
233#define NVTX_PAYLOAD_ENTRY_TYPE_SIZE 22
239#define NVTX_PAYLOAD_ENTRY_TYPE_ADDRESS 23
244#define NVTX_PAYLOAD_ENTRY_TYPE_WCHAR 24
245#define NVTX_PAYLOAD_ENTRY_TYPE_CHAR8 25
246#define NVTX_PAYLOAD_ENTRY_TYPE_CHAR16 26
247#define NVTX_PAYLOAD_ENTRY_TYPE_CHAR32 27
252#define NVTX_PAYLOAD_ENTRY_TYPE_INFO_ARRAY_SIZE (NVTX_PAYLOAD_ENTRY_TYPE_CHAR32 + 1)
258#define NVTX_PAYLOAD_ENTRY_TYPE_BYTE 32
266#define NVTX_PAYLOAD_ENTRY_TYPE_INT128 33
267#define NVTX_PAYLOAD_ENTRY_TYPE_UINT128 34
269#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT16 42
270#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT32 43
271#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT64 44
272#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT128 45
274#define NVTX_PAYLOAD_ENTRY_TYPE_BF16 50
275#define NVTX_PAYLOAD_ENTRY_TYPE_TF32 52
280#define NVTX_PAYLOAD_ENTRY_TYPE_CATEGORY 68
281#define NVTX_PAYLOAD_ENTRY_TYPE_COLOR_ARGB 69
286#define NVTX_PAYLOAD_ENTRY_TYPE_SCOPE_ID 70
291#define NVTX_PAYLOAD_ENTRY_TYPE_PID_UINT32 71
292#define NVTX_PAYLOAD_ENTRY_TYPE_PID_UINT64 72
297#define NVTX_PAYLOAD_ENTRY_TYPE_TID_UINT32 73
298#define NVTX_PAYLOAD_ENTRY_TYPE_TID_UINT64 74
315#define NVTX_PAYLOAD_ENTRY_TYPE_CSTRING 75
316#define NVTX_PAYLOAD_ENTRY_TYPE_CSTRING_UTF8 76
317#define NVTX_PAYLOAD_ENTRY_TYPE_CSTRING_UTF16 77
318#define NVTX_PAYLOAD_ENTRY_TYPE_CSTRING_UTF32 78
324#define NVTX_PAYLOAD_ENTRY_TYPE_NVTX_REGISTERED_STRING_HANDLE 80
331#define NVTX_PAYLOAD_ENTRY_TYPE_UNION_SELECTOR 100
342#define NVTX_TYPE_PAYLOAD_SCHEMA_REFERENCED 1022
351#define NVTX_TYPE_PAYLOAD_SCHEMA_RAW 1023
354#define NVTX_PAYLOAD_SCHEMA_ID_STATIC_START (1 << 24)
357#define NVTX_PAYLOAD_SCHEMA_ID_DYNAMIC_START (NVTX_STATIC_CAST(uint64_t, 1) << 32)
365#ifndef NVTX_PAYLOAD_SCHEMA_TYPES_V1
366#define NVTX_PAYLOAD_SCHEMA_TYPES_V1
374#define NVTX_PAYLOAD_SCHEMA_TYPE_INVALID 0
375#define NVTX_PAYLOAD_SCHEMA_TYPE_STATIC 1
376#define NVTX_PAYLOAD_SCHEMA_TYPE_DYNAMIC 2
377#define NVTX_PAYLOAD_SCHEMA_TYPE_UNION 3
378#define NVTX_PAYLOAD_SCHEMA_TYPE_UNION_WITH_INTERNAL_SELECTOR 4
383#ifndef NVTX_PAYLOAD_SCHEMA_FLAGS_V1
384#define NVTX_PAYLOAD_SCHEMA_FLAGS_V1
391#define NVTX_PAYLOAD_SCHEMA_FLAG_NONE 0
397#define NVTX_PAYLOAD_SCHEMA_FLAG_DEEP_COPY (1 << 1)
405#define NVTX_PAYLOAD_SCHEMA_FLAG_REFERENCED (1 << 2)
411#define NVTX_PAYLOAD_SCHEMA_FLAG_COUNTER_GROUP (1 << 3)
417#define NVTX_PAYLOAD_SCHEMA_FLAG_RANGE_PUSHPOP (2 << 3)
418#define NVTX_PAYLOAD_SCHEMA_FLAG_RANGE_STARTEND (3 << 3)
419#define NVTX_PAYLOAD_SCHEMA_FLAG_MARK (4 << 3)
424#ifndef NVTX_PAYLOAD_SCHEMA_ATTR_FIELDS_V1
425#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELDS_V1
431#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_NAME (1 << 1)
432#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_TYPE (1 << 2)
433#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_FLAGS (1 << 3)
434#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_ENTRIES (1 << 4)
435#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_NUM_ENTRIES (1 << 5)
436#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_STATIC_SIZE (1 << 6)
437#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_ALIGNMENT (1 << 7)
438#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_SCHEMA_ID (1 << 8)
439#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_EXTENSION (1 << 9)
444#ifndef NVTX_PAYLOAD_ENUM_ATTR_FIELDS_V1
445#define NVTX_PAYLOAD_ENUM_ATTR_FIELDS_V1
451#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_NAME (1 << 1)
452#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_ENTRIES (1 << 2)
453#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_NUM_ENTRIES (1 << 3)
454#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_SIZE (1 << 4)
455#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_SCHEMA_ID (1 << 5)
456#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_EXTENSION (1 << 6)
464#ifndef NVTX_SCOPES_V1
465#define NVTX_SCOPES_V1
467#define NVTX_SCOPE_NONE 0
468#define NVTX_SCOPE_ROOT 1
471#define NVTX_SCOPE_CURRENT_HW_MACHINE 2
472#define NVTX_SCOPE_CURRENT_HW_SOCKET 3
473#define NVTX_SCOPE_CURRENT_HW_CPU_PHYSICAL 4
474#define NVTX_SCOPE_CURRENT_HW_CPU_LOGICAL 5
476#define NVTX_SCOPE_CURRENT_HW_INNERMOST 15
479#define NVTX_SCOPE_CURRENT_HYPERVISOR 16
480#define NVTX_SCOPE_CURRENT_VM 17
481#define NVTX_SCOPE_CURRENT_KERNEL 18
482#define NVTX_SCOPE_CURRENT_CONTAINER 19
483#define NVTX_SCOPE_CURRENT_OS 20
486#define NVTX_SCOPE_CURRENT_SW_PROCESS 21
487#define NVTX_SCOPE_CURRENT_SW_THREAD 22
489#define NVTX_SCOPE_CURRENT_SW_INNERMOST 31
492#define NVTX_SCOPE_ID_STATIC_START (1 << 24)
495#define NVTX_SCOPE_ID_DYNAMIC_START (NVTX_STATIC_CAST(uint64_t, 1) << 32)
507#define NVTX_TIMESTAMP_TYPE_NONE 0
510#define NVTX_TIMESTAMP_TYPE_TOOL_PROVIDED 1
513#define NVTX_TIMESTAMP_TYPE_CPU_TSC 10
514#define NVTX_TIMESTAMP_TYPE_CPU_TSC_NONVIRTUALIZED 11
515#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_REALTIME 12
516#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_REALTIME_COARSE 13
517#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_MONOTONIC 14
518#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_MONOTONIC_RAW 15
519#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_MONOTONIC_COARSE 16
520#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_BOOTTIME 17
521#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_PROCESS_CPUTIME_ID 18
522#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_THREAD_CPUTIME_ID 19
524#define NVTX_TIMESTAMP_TYPE_WIN_QPC 30
525#define NVTX_TIMESTAMP_TYPE_WIN_GSTAFT 31
526#define NVTX_TIMESTAMP_TYPE_WIN_GSTAFTP 32
528#define NVTX_TIMESTAMP_TYPE_C_TIME 40
529#define NVTX_TIMESTAMP_TYPE_C_CLOCK 41
530#define NVTX_TIMESTAMP_TYPE_C_TIMESPEC_GET 42
532#define NVTX_TIMESTAMP_TYPE_CPP_STEADY_CLOCK 50
533#define NVTX_TIMESTAMP_TYPE_CPP_HIGH_RESOLUTION_CLOCK 51
534#define NVTX_TIMESTAMP_TYPE_CPP_SYSTEM_CLOCK 52
535#define NVTX_TIMESTAMP_TYPE_CPP_UTC_CLOCK 53
536#define NVTX_TIMESTAMP_TYPE_CPP_TAI_CLOCK 54
537#define NVTX_TIMESTAMP_TYPE_CPP_GPS_CLOCK 55
538#define NVTX_TIMESTAMP_TYPE_CPP_FILE_CLOCK 56
541#define NVTX_TIMESTAMP_TYPE_GPU_GLOBALTIMER 80
544#define NVTX_TIME_DOMAIN_ID_NONE 0
547#define NVTX_TIME_DOMAIN_ID_STATIC_START (1 << 24)
550#define NVTX_TIME_DOMAIN_ID_DYNAMIC_START (NVTX_STATIC_CAST(uint64_t, 1) << 32)
553#define NVTX_TIMER_FLAG_NONE 0
554#define NVTX_TIMER_FLAG_CLOCK_MONOTONIC (1 << 1)
555#define NVTX_TIMER_FLAG_CLOCK_STEADY (1 << 2)
558#define NVTX_TIMER_START_UNKNOWN 0
559#define NVTX_TIMER_START_SYSTEM_BOOT 1
560#define NVTX_TIMER_START_VM_BOOT 2
561#define NVTX_TIMER_START_UNIX_EPOCH 3
562#define NVTX_TIMER_START_WIN_FILETIME 4
568#define NVTX_TIMER_SOURCE_SAFE_CALL_AFTER_PROCESS_TEARDOWN 0
569#define NVTX_TIMER_SOURCE_UNSAFE_CALL_AFTER_PROCESS_TEARDOWN 1
573#ifndef NVTX_BATCH_FLAGS_V1
574#define NVTX_BATCH_FLAGS_V1
581#define NVTX_BATCH_FLAG_TIME_SORTED 0
582#define NVTX_BATCH_FLAG_TIME_SORTED_PARTIALLY (1 << 1)
583#define NVTX_BATCH_FLAG_TIME_SORTED_PER_SCOPE (2 << 1)
584#define NVTX_BATCH_FLAG_UNSORTED (3 << 1)
592#ifndef NVTX_PAYLOAD_TYPEDEFS_V1
593#define NVTX_PAYLOAD_TYPEDEFS_V1
602typedef struct nvtxPayloadEntryTypeInfo_v1
624typedef struct nvtxPayloadData_v1
651typedef struct nvtxSemanticsHeader_v1
656 const struct nvtxSemanticsHeader_v1* next;
675typedef struct nvtxPayloadSchemaEntry_v1
758typedef struct nvtxPayloadSchemaAttr_v1
846typedef struct nvtxPayloadEnum_v1
870typedef struct nvtxPayloadEnumAttr_v1
911typedef struct nvtxScopeAttr_v1
946#ifndef NVTX_PAYLOAD_TYPEDEFS_DEFERRED_V1
947#define NVTX_PAYLOAD_TYPEDEFS_DEFERRED_V1
950typedef struct nvtxTimeDomainAttr_v1
976typedef struct nvtxSyncPoint_v1
989typedef struct nvtxEventBatch_v1
1027#ifndef NVTX_PAYLOAD_API_FUNCTIONS_V1
1028#define NVTX_PAYLOAD_API_FUNCTIONS_V1
1036NVTX_DECLSPEC uint64_t NVTX_API nvtxPayloadSchemaRegister(
1037 nvtxDomainHandle_t domain,
1046NVTX_DECLSPEC uint64_t NVTX_API nvtxPayloadEnumRegister(
1047 nvtxDomainHandle_t domain,
1059NVTX_DECLSPEC uint64_t NVTX_API nvtxScopeRegister(
1060 nvtxDomainHandle_t domain,
1074NVTX_DECLSPEC
void NVTX_API nvtxMarkPayload(
1075 nvtxDomainHandle_t domain,
1090NVTX_DECLSPEC
int NVTX_API nvtxRangePushPayload(
1091 nvtxDomainHandle_t domain,
1109NVTX_DECLSPEC
int NVTX_API nvtxRangePopPayload(
1110 nvtxDomainHandle_t domain,
1124NVTX_DECLSPEC nvtxRangeId_t NVTX_API nvtxRangeStartPayload(
1125 nvtxDomainHandle_t domain,
1141NVTX_DECLSPEC
void NVTX_API nvtxRangeEndPayload(
1142 nvtxDomainHandle_t domain,
1153NVTX_DECLSPEC uint8_t NVTX_API nvtxDomainIsEnabled(
1154 nvtxDomainHandle_t domain);
1158#ifndef NVTX_PAYLOAD_API_FUNCTIONS_DEFERRED_V1
1159#define NVTX_PAYLOAD_API_FUNCTIONS_DEFERRED_V1
1166NVTX_DECLSPEC int64_t NVTX_API nvtxTimestampGet(
void);
1177NVTX_DECLSPEC uint64_t NVTX_API nvtxTimeDomainRegister(
1178 nvtxDomainHandle_t domain,
1192NVTX_DECLSPEC
void NVTX_API nvtxTimerSource(
1193 nvtxDomainHandle_t domain,
1194 uint64_t timeDomainId,
1196 int64_t (*timestampProviderFn)(
void));
1209NVTX_DECLSPEC
void NVTX_API nvtxTimerSourceWithData(
1210 nvtxDomainHandle_t domain,
1211 uint64_t timeDomainId,
1213 int64_t (*timestampProviderFn)(
void* data),
1230NVTX_DECLSPEC
void NVTX_API nvtxTimeSyncPoint(
1231 nvtxDomainHandle_t domain,
1232 uint64_t timeDomainId1,
1233 uint64_t timeDomainId2,
1235 int64_t timestamp2);
1248NVTX_DECLSPEC
void NVTX_API nvtxTimeSyncPointTable(
1249 nvtxDomainHandle_t domain,
1250 uint64_t timeDomainIdSrc,
1251 uint64_t timeDomainIdDst,
1267NVTX_DECLSPEC
void NVTX_API nvtxTimestampConversionFactor(
1268 nvtxDomainHandle_t domain,
1269 uint64_t timeDomainIdSrc,
1270 uint64_t timeDomainIdDst,
1272 int64_t timestampSrc,
1273 int64_t timestampDst);
1282NVTX_DECLSPEC
void NVTX_API nvtxEventSubmit(
1283 nvtxDomainHandle_t domain,
1285 size_t numPayloads);
1293NVTX_DECLSPEC
void NVTX_API nvtxEventBatchSubmit(
1294 nvtxDomainHandle_t domain,
1310#ifndef NVTX_PAYLOAD_CALLBACK_ID_V1
1311#define NVTX_PAYLOAD_CALLBACK_ID_V1
1313#define NVTX3EXT_CBID_nvtxPayloadSchemaRegister 0
1314#define NVTX3EXT_CBID_nvtxPayloadEnumRegister 1
1315#define NVTX3EXT_CBID_nvtxMarkPayload 2
1316#define NVTX3EXT_CBID_nvtxRangePushPayload 3
1317#define NVTX3EXT_CBID_nvtxRangePopPayload 4
1318#define NVTX3EXT_CBID_nvtxRangeStartPayload 5
1319#define NVTX3EXT_CBID_nvtxRangeEndPayload 6
1320#define NVTX3EXT_CBID_nvtxDomainIsEnabled 7
1321#define NVTX3EXT_CBID_nvtxScopeRegister 12
1325#ifndef NVTX_PAYLOAD_CALLBACK_ID_DEFERRED_V1
1326#define NVTX_PAYLOAD_CALLBACK_ID_DEFERRED_V1
1328#define NVTX3EXT_CBID_nvtxTimestampGet 8
1329#define NVTX3EXT_CBID_nvtxTimeDomainRegister 9
1330#define NVTX3EXT_CBID_nvtxTimerSource 10
1331#define NVTX3EXT_CBID_nvtxTimerSourceWithData 11
1332#define NVTX3EXT_CBID_nvtxTimeSyncPoint 13
1333#define NVTX3EXT_CBID_nvtxTimeSyncPointTable 14
1334#define NVTX3EXT_CBID_nvtxTimestampConversionFactor 15
1335#define NVTX3EXT_CBID_nvtxEventSubmit 16
1336#define NVTX3EXT_CBID_nvtxEventBatchSubmit 17
1343#ifndef NVTX_POINTER_AS_PAYLOAD_ULLVALUE
1345# define NVTX_POINTER_AS_PAYLOAD_ULLVALUE(p) \
1346 static_cast<uint64_t>(reinterpret_cast<uintptr_t>(p))
1348#define NVTX_POINTER_AS_PAYLOAD_ULLVALUE(p) (NVTX_STATIC_CAST(uint64_t, NVTX_STATIC_CAST(uintptr_t, p))
1352#ifndef NVTX_PAYLOAD_EVTATTR_SET_DATA
1362#define NVTX_PAYLOAD_EVTATTR_SET_DATA(evtAttr, pldata_addr, schema_id, pl_addr, sz) \
1363 (pldata_addr)->schemaId = schema_id; \
1364 (pldata_addr)->size = sz; \
1365 (pldata_addr)->payload = pl_addr; \
1366 (evtAttr).payload.ullValue = NVTX_POINTER_AS_PAYLOAD_ULLVALUE(pldata_addr); \
1367 (evtAttr).payloadType = NVTX_PAYLOAD_TYPE_EXT; \
1368 (evtAttr).reserved0 = 1;
1371#ifndef NVTX_PAYLOAD_EVTATTR_SET_MULTIPLE
1378#define NVTX_PAYLOAD_EVTATTR_SET_MULTIPLE(evtAttr, pldata) \
1379 (evtAttr).payloadType = NVTX_PAYLOAD_TYPE_EXT; \
1380 (evtAttr).reserved0 = sizeof(pldata)/sizeof(nvtxPayloadData_t); \
1381 (evtAttr).payload.ullValue = NVTX_POINTER_AS_PAYLOAD_ULLVALUE(pldata);
1384#ifndef NVTX_PAYLOAD_EVTATTR_SET
1390#define NVTX_PAYLOAD_EVTATTR_SET(evtAttr, schema_id, pl_addr, sz) \
1391 nvtxPayloadData_t _NVTX_PAYLOAD_DATA_VAR[] = \
1392 {{schema_id, sz, pl_addr}}; \
1393 (evtAttr)->payload.ullValue = \
1394 NVTX_POINTER_AS_PAYLOAD_ULLVALUE(_NVTX_PAYLOAD_DATA_VAR); \
1395 (evtAttr)->payloadType = NVTX_PAYLOAD_TYPE_EXT; \
1396 (evtAttr)->reserved0 = 1;
1399#ifndef nvtxPayloadRangePush
1409#define nvtxPayloadRangePush(domain, evtAttr, schemaId, plAddr, size) \
1411 NVTX_PAYLOAD_EVTATTR_SET(evtAttr, schemaId, plAddr, size) \
1412 nvtxDomainRangePushEx(domain, evtAttr); \
1416#ifndef nvtxPayloadMark
1426#define nvtxPayloadMark(domain, evtAttr, schemaId, plAddr, size) \
1428 NVTX_PAYLOAD_EVTATTR_SET(evtAttr, schemaId, plAddr, size) \
1429 nvtxDomainMarkEx(domain, evtAttr); \
1434#ifndef NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIERS_V1
1435#define NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIERS_V1
1436#define NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID) \
1437 NAME##_v##VERSION##_bpl##COMPATID
1438#define NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIER_L2(NAME, VERSION, COMPATID) \
1439 NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID)
1440#define NVTX_EXT_PAYLOAD_VERSIONED_ID(NAME) \
1441 NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIER_L2(NAME, NVTX_VERSION, NVTX_EXT_PAYLOAD_COMPATID)
1445#pragma GCC visibility push(internal)
1449#define NVTX_EXT_TYPES_GUARD
1450#include "nvtxDetail/nvtxExtTypes.h"
1451#undef NVTX_EXT_TYPES_GUARD
1454#define NVTX_EXT_IMPL_PAYLOAD_GUARD
1455#include "nvtxDetail/nvtxExtImplPayload_v1.h"
1456#undef NVTX_EXT_IMPL_PAYLOAD_GUARD
1460#pragma GCC visibility pop
Helper struct to submit a batch of events (marks or ranges).
Binary payload data, size and decoding information.
Size and alignment information for predefined payload entry types.
This type is used to describe an enumeration.
NVTX payload enumeration type attributes.
const nvtxPayloadEnum_t * entries
NVTX payload schema attributes.
uint64_t type
Payload schema type. (Mandatory).
size_t payloadStaticSize
The binary payload size in bytes for static payload schemas.
size_t packAlign
The byte alignment for packed structures.
const char * name
Name of the payload schema. (Optional)
uint64_t fieldMask
Mask of valid fields in this struct.
uint64_t flags
Payload schema flags. (Optional)
const nvtxPayloadSchemaEntry_t * entries
Entries of a payload schema. (Mandatory).
size_t numEntries
Number of entries in the payload schema. (Mandatory)
uint64_t arrayOrUnionDetail
String length, array length or member selector for union types.
uint64_t type
Predefined payload schema entry type or custom schema ID.
uint64_t offset
Offset in the binary payload data (in bytes).
const char * description
Description of the payload entry. (Optional)
const nvtxSemanticsHeader_t * semantics
Additional semantics of the payload entry.
const char * name
Name or label of the payload entry. (Optional)
const void * reserved
Reserved for future use. Do not use it!
uint64_t flags
Flags to augment the basic type.