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)
61#ifndef NVTX_EXT_PAYLOAD_COMPATID
62#define NVTX_EXT_PAYLOAD_COMPATID 0x0104
68#ifndef NVTX_EXT_PAYLOAD_MODULEID
69#define NVTX_EXT_PAYLOAD_MODULEID 2
75#ifndef NVTX_PAYLOAD_TYPE_EXT
76#define NVTX_PAYLOAD_TYPE_EXT (NVTX_STATIC_CAST(int32_t, 0xDFBD0009))
82#ifndef NVTX_PAYLOAD_ENTRY_FLAGS_V1
83#define NVTX_PAYLOAD_ENTRY_FLAGS_V1
85#define NVTX_PAYLOAD_ENTRY_FLAG_UNUSED 0
90#define NVTX_PAYLOAD_ENTRY_FLAG_POINTER (1 << 1)
95#define NVTX_PAYLOAD_ENTRY_FLAG_OFFSET_FROM_BASE (1 << 2)
100#define NVTX_PAYLOAD_ENTRY_FLAG_OFFSET_FROM_HERE (1 << 3)
105#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_FIXED_SIZE (1 << 4)
110#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_ZERO_TERMINATED (2 << 4)
130#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_LENGTH_INDEX (3 << 4)
144#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_LENGTH_PAYLOAD_INDEX (4 << 4)
154#define NVTX_PAYLOAD_ENTRY_FLAG_DEEP_COPY (1 << 8)
159#define NVTX_PAYLOAD_ENTRY_FLAG_HIDE (1 << 9)
167#define NVTX_PAYLOAD_ENTRY_FLAG_EVENT_MESSAGE (1 << 10)
175#define NVTX_PAYLOAD_ENTRY_FLAG_TIMESTAMP (2 << 10)
199#define NVTX_PAYLOAD_ENTRY_FLAG_RANGE_BEGIN (1 << 12)
201#define NVTX_PAYLOAD_ENTRY_FLAG_RANGE_END (2 << 12)
203#define NVTX_PAYLOAD_ENTRY_FLAG_MARK (3 << 12)
205#define NVTX_PAYLOAD_ENTRY_FLAG_COUNTER (4 << 12)
218#define NVTX_PAYLOAD_ENTRY_FLAG_IS_ARRAY \
219 (NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_FIXED_SIZE | NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_ZERO_TERMINATED | \
220 NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_LENGTH_INDEX | \
221 NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_LENGTH_PAYLOAD_INDEX)
223#define NVTX_PAYLOAD_ENTRY_FLAG_ARRAY_TYPE(F) ((F) & NVTX_PAYLOAD_ENTRY_FLAG_IS_ARRAY)
262#ifndef NVTX_PAYLOAD_ENTRY_TYPES_V1
263#define NVTX_PAYLOAD_ENTRY_TYPES_V1
265#define NVTX_PAYLOAD_ENTRY_TYPE_INVALID 0
270#define NVTX_PAYLOAD_ENTRY_TYPE_CHAR 1
271#define NVTX_PAYLOAD_ENTRY_TYPE_UCHAR 2
272#define NVTX_PAYLOAD_ENTRY_TYPE_SHORT 3
273#define NVTX_PAYLOAD_ENTRY_TYPE_USHORT 4
274#define NVTX_PAYLOAD_ENTRY_TYPE_INT 5
275#define NVTX_PAYLOAD_ENTRY_TYPE_UINT 6
276#define NVTX_PAYLOAD_ENTRY_TYPE_LONG 7
277#define NVTX_PAYLOAD_ENTRY_TYPE_ULONG 8
278#define NVTX_PAYLOAD_ENTRY_TYPE_LONGLONG 9
279#define NVTX_PAYLOAD_ENTRY_TYPE_ULONGLONG 10
284#define NVTX_PAYLOAD_ENTRY_TYPE_INT8 11
285#define NVTX_PAYLOAD_ENTRY_TYPE_UINT8 12
286#define NVTX_PAYLOAD_ENTRY_TYPE_INT16 13
287#define NVTX_PAYLOAD_ENTRY_TYPE_UINT16 14
288#define NVTX_PAYLOAD_ENTRY_TYPE_INT32 15
289#define NVTX_PAYLOAD_ENTRY_TYPE_UINT32 16
291#define NVTX_PAYLOAD_ENTRY_TYPE_INT64 17
292#define NVTX_PAYLOAD_ENTRY_TYPE_UINT64 18
297#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT 19
298#define NVTX_PAYLOAD_ENTRY_TYPE_DOUBLE 20
299#define NVTX_PAYLOAD_ENTRY_TYPE_LONGDOUBLE 21
304#define NVTX_PAYLOAD_ENTRY_TYPE_SIZE 22
310#define NVTX_PAYLOAD_ENTRY_TYPE_ADDRESS 23
315#define NVTX_PAYLOAD_ENTRY_TYPE_WCHAR 24
316#define NVTX_PAYLOAD_ENTRY_TYPE_CHAR8 25
317#define NVTX_PAYLOAD_ENTRY_TYPE_CHAR16 26
318#define NVTX_PAYLOAD_ENTRY_TYPE_CHAR32 27
323#define NVTX_PAYLOAD_ENTRY_TYPE_INFO_ARRAY_SIZE (NVTX_PAYLOAD_ENTRY_TYPE_CHAR32 + 1)
329#define NVTX_PAYLOAD_ENTRY_TYPE_BYTE 32
337#define NVTX_PAYLOAD_ENTRY_TYPE_INT128 33
338#define NVTX_PAYLOAD_ENTRY_TYPE_UINT128 34
345#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT16 42
346#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT32 43
347#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT64 44
348#define NVTX_PAYLOAD_ENTRY_TYPE_FLOAT128 45
350#define NVTX_PAYLOAD_ENTRY_TYPE_BF16 50
351#define NVTX_PAYLOAD_ENTRY_TYPE_TF32 52
358#define NVTX_PAYLOAD_ENTRY_TYPE_RANGE_ID 67
359#define NVTX_PAYLOAD_ENTRY_TYPE_CATEGORY 68
360#define NVTX_PAYLOAD_ENTRY_TYPE_COLOR_ARGB 69
365#define NVTX_PAYLOAD_ENTRY_TYPE_SCOPE_ID 70
370#define NVTX_PAYLOAD_ENTRY_TYPE_PID_UINT32 71
371#define NVTX_PAYLOAD_ENTRY_TYPE_PID_UINT64 72
376#define NVTX_PAYLOAD_ENTRY_TYPE_TID_UINT32 73
377#define NVTX_PAYLOAD_ENTRY_TYPE_TID_UINT64 74
405#define NVTX_PAYLOAD_ENTRY_TYPE_CSTRING 75
406#define NVTX_PAYLOAD_ENTRY_TYPE_CSTRING_UTF8 76
407#define NVTX_PAYLOAD_ENTRY_TYPE_CSTRING_UTF16 77
408#define NVTX_PAYLOAD_ENTRY_TYPE_CSTRING_UTF32 78
415#define NVTX_PAYLOAD_ENTRY_TYPE_NVTX_REGISTERED_STRING_HANDLE 80
422#define NVTX_PAYLOAD_ENTRY_TYPE_UNION_SELECTOR 100
433#define NVTX_TYPE_PAYLOAD_SCHEMA_REFERENCED 1022
442#define NVTX_TYPE_PAYLOAD_SCHEMA_RAW 1023
446#define NVTX_PAYLOAD_SCHEMA_ID_STATIC_START (1 << 24)
449#define NVTX_PAYLOAD_SCHEMA_ID_DYNAMIC_START (NVTX_STATIC_CAST(uint64_t, 1) << 32)
456#ifndef NVTX_PAYLOAD_SCHEMA_TYPES_V1
457#define NVTX_PAYLOAD_SCHEMA_TYPES_V1
483#define NVTX_PAYLOAD_SCHEMA_TYPE_INVALID 0
485#define NVTX_PAYLOAD_SCHEMA_TYPE_STATIC 1
487#define NVTX_PAYLOAD_SCHEMA_TYPE_DYNAMIC 2
489#define NVTX_PAYLOAD_SCHEMA_TYPE_UNION 3
491#define NVTX_PAYLOAD_SCHEMA_TYPE_UNION_WITH_INTERNAL_SELECTOR 4
495#ifndef NVTX_PAYLOAD_SCHEMA_FLAGS_V1
496#define NVTX_PAYLOAD_SCHEMA_FLAGS_V1
503#define NVTX_PAYLOAD_SCHEMA_FLAG_NONE 0
509#define NVTX_PAYLOAD_SCHEMA_FLAG_DEEP_COPY (1 << 1)
517#define NVTX_PAYLOAD_SCHEMA_FLAG_REFERENCED (1 << 2)
524#define NVTX_PAYLOAD_SCHEMA_FLAG_COUNTER_GROUP (1 << 3)
530#define NVTX_PAYLOAD_SCHEMA_FLAG_RANGE_PUSHPOP (2 << 3)
532#define NVTX_PAYLOAD_SCHEMA_FLAG_RANGE_STARTEND (3 << 3)
534#define NVTX_PAYLOAD_SCHEMA_FLAG_MARK (4 << 3)
535#define NVTX_PAYLOAD_SCHEMA_FLAG_RANGE_PUSH (5 << 3)
536#define NVTX_PAYLOAD_SCHEMA_FLAG_RANGE_POP (6 << 3)
537#define NVTX_PAYLOAD_SCHEMA_FLAG_RANGE_START (7 << 3)
538#define NVTX_PAYLOAD_SCHEMA_FLAG_RANGE_END (8 << 3)
542#ifndef NVTX_PAYLOAD_SCHEMA_ATTR_FIELDS_V1
543#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELDS_V1
552#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_NAME (1 << 1)
553#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_TYPE (1 << 2)
554#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_FLAGS (1 << 3)
555#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_ENTRIES (1 << 4)
556#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_NUM_ENTRIES (1 << 5)
557#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_STATIC_SIZE (1 << 6)
558#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_ALIGNMENT (1 << 7)
559#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_SCHEMA_ID (1 << 8)
560#define NVTX_PAYLOAD_SCHEMA_ATTR_FIELD_EXTENSION (1 << 9)
564#ifndef NVTX_PAYLOAD_ENUM_ATTR_FIELDS_V1
565#define NVTX_PAYLOAD_ENUM_ATTR_FIELDS_V1
574#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_NAME (1 << 1)
575#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_ENTRIES (1 << 2)
576#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_NUM_ENTRIES (1 << 3)
577#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_SIZE (1 << 4)
578#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_SCHEMA_ID (1 << 5)
579#define NVTX_PAYLOAD_ENUM_ATTR_FIELD_EXTENSION (1 << 6)
622#ifndef NVTX_SCOPES_V1
623#define NVTX_SCOPES_V1
626#define NVTX_SCOPE_NONE 0
627#define NVTX_SCOPE_ROOT 1
630#define NVTX_SCOPE_CURRENT_HW_MACHINE 2
631#define NVTX_SCOPE_CURRENT_HW_SOCKET 3
632#define NVTX_SCOPE_CURRENT_HW_CPU_PHYSICAL 4
633#define NVTX_SCOPE_CURRENT_HW_CPU_LOGICAL 5
635#define NVTX_SCOPE_CURRENT_HW_INNERMOST 15
638#define NVTX_SCOPE_CURRENT_HYPERVISOR 16
639#define NVTX_SCOPE_CURRENT_VM 17
640#define NVTX_SCOPE_CURRENT_KERNEL 18
641#define NVTX_SCOPE_CURRENT_CONTAINER 19
642#define NVTX_SCOPE_CURRENT_OS 20
645#define NVTX_SCOPE_CURRENT_SW_PROCESS 21
646#define NVTX_SCOPE_CURRENT_SW_THREAD 22
648#define NVTX_SCOPE_CURRENT_SW_INNERMOST 31
651#define NVTX_SCOPE_ID_STATIC_START (1 << 24)
654#define NVTX_SCOPE_ID_DYNAMIC_START (NVTX_STATIC_CAST(uint64_t, 1) << 32)
672#define NVTX_TIMESTAMP_TYPE_NONE 0
675#define NVTX_TIMESTAMP_TYPE_TOOL_PROVIDED 1
679#define NVTX_TIMESTAMP_TYPE_CPU_TSC 10
681#define NVTX_TIMESTAMP_TYPE_CPU_TSC_NONVIRTUALIZED 11
683#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_REALTIME 12
685#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_REALTIME_COARSE 13
687#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_MONOTONIC 14
689#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_MONOTONIC_RAW 15
691#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_MONOTONIC_COARSE 16
693#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_BOOTTIME 17
695#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_PROCESS_CPUTIME_ID 18
697#define NVTX_TIMESTAMP_TYPE_CPU_CLOCK_GETTIME_THREAD_CPUTIME_ID 19
700#define NVTX_TIMESTAMP_TYPE_WIN_QPC 30
701#define NVTX_TIMESTAMP_TYPE_WIN_GSTAFT 31
702#define NVTX_TIMESTAMP_TYPE_WIN_GSTAFTP 32
706#define NVTX_TIMESTAMP_TYPE_C_TIME 40
708#define NVTX_TIMESTAMP_TYPE_C_CLOCK 41
710#define NVTX_TIMESTAMP_TYPE_C_TIMESPEC_GET 42
714#define NVTX_TIMESTAMP_TYPE_CPP_STEADY_CLOCK 50
716#define NVTX_TIMESTAMP_TYPE_CPP_HIGH_RESOLUTION_CLOCK 51
718#define NVTX_TIMESTAMP_TYPE_CPP_SYSTEM_CLOCK 52
720#define NVTX_TIMESTAMP_TYPE_CPP_UTC_CLOCK 53
722#define NVTX_TIMESTAMP_TYPE_CPP_TAI_CLOCK 54
724#define NVTX_TIMESTAMP_TYPE_CPP_GPS_CLOCK 55
726#define NVTX_TIMESTAMP_TYPE_CPP_FILE_CLOCK 56
729#define NVTX_TIMESTAMP_TYPE_GPU_GLOBALTIMER 80
732#define NVTX_TIME_DOMAIN_ID_NONE 0
735#define NVTX_TIME_DOMAIN_ID_STATIC_START (1 << 24)
738#define NVTX_TIME_DOMAIN_ID_DYNAMIC_START (NVTX_STATIC_CAST(uint64_t, 1) << 32)
741#define NVTX_TIMER_FLAG_NONE 0
742#define NVTX_TIMER_FLAG_CLOCK_MONOTONIC (1 << 1)
743#define NVTX_TIMER_FLAG_CLOCK_STEADY (1 << 2)
746#define NVTX_TIMER_START_UNKNOWN 0
747#define NVTX_TIMER_START_SYSTEM_BOOT 1
748#define NVTX_TIMER_START_VM_BOOT 2
749#define NVTX_TIMER_START_UNIX_EPOCH 3
750#define NVTX_TIMER_START_WIN_FILETIME 4
756#define NVTX_TIMER_SOURCE_SAFE_CALL_AFTER_PROCESS_TEARDOWN 0
757#define NVTX_TIMER_SOURCE_UNSAFE_CALL_AFTER_PROCESS_TEARDOWN 1
761#ifndef NVTX_BATCH_FLAGS_V1
762#define NVTX_BATCH_FLAGS_V1
769#define NVTX_BATCH_FLAG_TIME_SORTED 0
770#define NVTX_BATCH_FLAG_TIME_SORTED_PARTIALLY (1 << 1)
771#define NVTX_BATCH_FLAG_TIME_SORTED_PER_SCOPE (2 << 1)
772#define NVTX_BATCH_FLAG_UNSORTED (3 << 1)
780#ifndef NVTX_PAYLOAD_TYPEDEFS_V1
781#define NVTX_PAYLOAD_TYPEDEFS_V1
798typedef struct nvtxPayloadEntryTypeInfo_v1
818typedef struct nvtxPayloadData_v1
867typedef struct nvtxSemanticsHeader_v1
872 const struct nvtxSemanticsHeader_v1*
next;
890typedef struct nvtxPayloadSchemaEntry_v1
996typedef struct nvtxPayloadSchemaAttr_v1
1088typedef struct nvtxPayloadEnum_v1
1109typedef struct nvtxPayloadEnumAttr_v1
1151typedef struct nvtxScopeAttr_v1
1221#ifndef NVTX_PAYLOAD_TYPEDEFS_DEFERRED_V1
1222#define NVTX_PAYLOAD_TYPEDEFS_DEFERRED_V1
1225typedef struct nvtxTimeDomainAttr_v1
1254typedef struct nvtxSyncPoint_v1
1269typedef struct nvtxEventBatch_v1
1328#ifndef NVTX_PAYLOAD_API_FUNCTIONS_V1
1329#define NVTX_PAYLOAD_API_FUNCTIONS_V1
1342NVTX_DECLSPEC uint64_t NVTX_API
1355NVTX_DECLSPEC uint64_t NVTX_API
1369NVTX_DECLSPEC uint64_t NVTX_API
1382NVTX_DECLSPEC
void NVTX_API
1398NVTX_DECLSPEC
int NVTX_API
1418NVTX_DECLSPEC
int NVTX_API
1449 nvtxDomainHandle_t domain,
1474#ifndef NVTX_PAYLOAD_API_FUNCTIONS_DEFERRED_V1
1475#define NVTX_PAYLOAD_API_FUNCTIONS_DEFERRED_V1
1493NVTX_DECLSPEC uint64_t NVTX_API
1508 nvtxDomainHandle_t domain,
1509 uint64_t timeDomainId,
1511 int64_t (*timestampProviderFn)(
void));
1525 nvtxDomainHandle_t domain,
1526 uint64_t timeDomainId,
1528 int64_t (*timestampProviderFn)(
void* data),
1546 nvtxDomainHandle_t domain,
1547 uint64_t timeDomainId1,
1548 uint64_t timeDomainId2,
1550 int64_t timestamp2);
1564 nvtxDomainHandle_t domain,
1565 uint64_t timeDomainIdSrc,
1566 uint64_t timeDomainIdDst,
1583 nvtxDomainHandle_t domain,
1584 uint64_t timeDomainIdSrc,
1585 uint64_t timeDomainIdDst,
1587 int64_t timestampSrc,
1588 int64_t timestampDst);
1600 nvtxDomainHandle_t domain,
const nvtxPayloadData_t* payloadData,
size_t numPayloads);
1608NVTX_DECLSPEC
void NVTX_API
1624#ifndef NVTX_PAYLOAD_CALLBACK_ID_V1
1625#define NVTX_PAYLOAD_CALLBACK_ID_V1
1627#define NVTX3EXT_CBID_nvtxPayloadSchemaRegister 0
1628#define NVTX3EXT_CBID_nvtxPayloadEnumRegister 1
1629#define NVTX3EXT_CBID_nvtxMarkPayload 2
1630#define NVTX3EXT_CBID_nvtxRangePushPayload 3
1631#define NVTX3EXT_CBID_nvtxRangePopPayload 4
1632#define NVTX3EXT_CBID_nvtxRangeStartPayload 5
1633#define NVTX3EXT_CBID_nvtxRangeEndPayload 6
1634#define NVTX3EXT_CBID_nvtxDomainIsEnabled 7
1635#define NVTX3EXT_CBID_nvtxScopeRegister 12
1639#ifndef NVTX_PAYLOAD_CALLBACK_ID_DEFERRED_V1
1640#define NVTX_PAYLOAD_CALLBACK_ID_DEFERRED_V1
1642#define NVTX3EXT_CBID_nvtxTimestampGet 8
1643#define NVTX3EXT_CBID_nvtxTimeDomainRegister 9
1644#define NVTX3EXT_CBID_nvtxTimerSource 10
1645#define NVTX3EXT_CBID_nvtxTimerSourceWithData 11
1646#define NVTX3EXT_CBID_nvtxTimeSyncPoint 13
1647#define NVTX3EXT_CBID_nvtxTimeSyncPointTable 14
1648#define NVTX3EXT_CBID_nvtxTimestampConversionFactor 15
1649#define NVTX3EXT_CBID_nvtxEventSubmit 16
1650#define NVTX3EXT_CBID_nvtxEventBatchSubmit 17
1657#ifndef NVTX_POINTER_AS_PAYLOAD_ULLVALUE
1659#define NVTX_POINTER_AS_PAYLOAD_ULLVALUE(p) static_cast<uint64_t>(reinterpret_cast<uintptr_t>(p))
1661#define NVTX_POINTER_AS_PAYLOAD_ULLVALUE(p) \
1662 (NVTX_STATIC_CAST(uint64_t, NVTX_STATIC_CAST(uintptr_t, p)))
1666#ifndef NVTX_PAYLOAD_EVTATTR_SET_DATA
1676#define NVTX_PAYLOAD_EVTATTR_SET_DATA(evtAttr, pldata_addr, schema_id, pl_addr, sz) \
1677 (pldata_addr)->schemaId = schema_id; \
1678 (pldata_addr)->size = sz; \
1679 (pldata_addr)->payload = pl_addr; \
1680 (evtAttr).payload.ullValue = NVTX_POINTER_AS_PAYLOAD_ULLVALUE(pldata_addr); \
1681 (evtAttr).payloadType = NVTX_PAYLOAD_TYPE_EXT; \
1682 (evtAttr).reserved0 = 1;
1685#ifndef NVTX_PAYLOAD_EVTATTR_SET_MULTIPLE
1692#define NVTX_PAYLOAD_EVTATTR_SET_MULTIPLE(evtAttr, pldata) \
1693 (evtAttr).payloadType = NVTX_PAYLOAD_TYPE_EXT; \
1694 (evtAttr).reserved0 = sizeof(pldata) / sizeof(nvtxPayloadData_t); \
1695 (evtAttr).payload.ullValue = NVTX_POINTER_AS_PAYLOAD_ULLVALUE(pldata);
1698#ifndef NVTX_PAYLOAD_EVTATTR_SET_MULTIPLE_N
1707#define NVTX_PAYLOAD_EVTATTR_SET_MULTIPLE_N(evtAttr, pldata, count) \
1708 (evtAttr).payloadType = NVTX_PAYLOAD_TYPE_EXT; \
1709 (evtAttr).reserved0 = NVTX_STATIC_CAST(int32_t, count); \
1710 (evtAttr).payload.ullValue = NVTX_POINTER_AS_PAYLOAD_ULLVALUE(pldata);
1713#ifndef NVTX_PAYLOAD_EVTATTR_SET
1719#define NVTX_PAYLOAD_EVTATTR_SET(evtAttr, schema_id, pl_addr, sz) \
1720 nvtxPayloadData_t _NVTX_PAYLOAD_DATA_VAR[] = {{schema_id, sz, pl_addr}}; \
1721 (evtAttr)->payload.ullValue = NVTX_POINTER_AS_PAYLOAD_ULLVALUE(_NVTX_PAYLOAD_DATA_VAR); \
1722 (evtAttr)->payloadType = NVTX_PAYLOAD_TYPE_EXT; \
1723 (evtAttr)->reserved0 = 1;
1726#ifndef nvtxPayloadRangePush
1736#define nvtxPayloadRangePush(domain, evtAttr, schemaId, plAddr, size) \
1739 NVTX_PAYLOAD_EVTATTR_SET(evtAttr, schemaId, plAddr, size) \
1740 nvtxDomainRangePushEx(domain, evtAttr); \
1744#ifndef nvtxPayloadMark
1754#define nvtxPayloadMark(domain, evtAttr, schemaId, plAddr, size) \
1757 NVTX_PAYLOAD_EVTATTR_SET(evtAttr, schemaId, plAddr, size) \
1758 nvtxDomainMarkEx(domain, evtAttr); \
1763#ifndef NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIERS_V1
1764#define NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIERS_V1
1765#define NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID) \
1766 NAME##_v##VERSION##_bpl##COMPATID
1767#define NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIER_L2(NAME, VERSION, COMPATID) \
1768 NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIER_L3(NAME, VERSION, COMPATID)
1769#define NVTX_EXT_PAYLOAD_VERSIONED_ID(NAME) \
1770 NVTX_EXT_PAYLOAD_VERSIONED_IDENTIFIER_L2(NAME, NVTX_VERSION, NVTX_EXT_PAYLOAD_COMPATID)
1774#pragma GCC visibility push(internal)
1778#define NVTX_EXT_TYPES_GUARD
1779#include "nvtxDetail/nvtxExtTypes.h"
1780#undef NVTX_EXT_TYPES_GUARD
1783#define NVTX_EXT_IMPL_PAYLOAD_GUARD
1784#include "nvtxDetail/nvtxExtImplPayload_v1.h"
1785#undef NVTX_EXT_IMPL_PAYLOAD_GUARD
1789#pragma GCC visibility pop
Helper struct to submit a batch of events (marks or ranges).
const void * events
Pointer to the array of deferred events.
const void * flexData
Flexible data blob referenced by events in the batch.
Binary payload data, size and decoding information.
uint64_t schemaId
The schema ID, which defines the layout of the binary data.
size_t size
Size of the payload (blob) in bytes.
Size and alignment information for predefined payload entry types.
Description of one enumeration value.
NVTX payload enumeration type attributes.
size_t sizeOfEnum
Size of the enumeration type in bytes. (Mandatory)
const nvtxPayloadEnum_t * entries
uint64_t schemaId
Unique identifier for this enum type.
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 schemaId
Unique identifier for this schema.
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, registered enum ID, or registered 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.
uint64_t flags
Flags to augment the basic type.
A pair of timestamps taken at the same instant in two different time domains. Used with nvtxTimeSyncP...