Class EXTCalibratedTimestamps
VK_EXT_calibrated_timestamps
- Name String
VK_EXT_calibrated_timestamps
- Extension Type
- Device extension
- Registered Extension Number
- 185
- Revision
- 2
- Extension and Version Dependencies
VK_KHR_get_physical_device_properties2
or Version 1.1- Contact
- Daniel Rakos drakos-amd
- Extension Proposal
- VK_EXT_calibrated_timestamps
Other Extension Metadata
- Last Modified Date
- 2018-10-04
- IP Status
- No known IP claims.
- Contributors
- Matthaeus G. Chajdas, AMD
- Alan Harrison, AMD
- Derrick Owens, AMD
- Daniel Rakos, AMD
- Faith Ekstrand, Intel
- Keith Packard, Valve
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
The extension name.static final int
The extension specification version.static final int
ExtendsVkStructureType
.static final int
VkTimeDomainEXT - Supported time domainsstatic final int
VkTimeDomainEXT - Supported time domainsstatic final int
VkTimeDomainEXT - Supported time domainsstatic final int
VkTimeDomainEXT - Supported time domains -
Method Summary
Modifier and TypeMethodDescriptionstatic int
nvkGetCalibratedTimestampsEXT
(VkDevice device, int timestampCount, long pTimestampInfos, long pTimestamps, long pMaxDeviation) Unsafe version of:GetCalibratedTimestampsEXT
static int
nvkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(VkPhysicalDevice physicalDevice, long pTimeDomainCount, long pTimeDomains) Unsafe version of:GetPhysicalDeviceCalibrateableTimeDomainsEXT
static int
vkGetCalibratedTimestampsEXT
(VkDevice device, VkCalibratedTimestampInfoEXT.Buffer pTimestampInfos, long[] pTimestamps, long[] pMaxDeviation) Array version of:GetCalibratedTimestampsEXT
static int
vkGetCalibratedTimestampsEXT
(VkDevice device, VkCalibratedTimestampInfoEXT.Buffer pTimestampInfos, LongBuffer pTimestamps, LongBuffer pMaxDeviation) Query calibrated timestamps.static int
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(VkPhysicalDevice physicalDevice, int[] pTimeDomainCount, int[] pTimeDomains) Array version of:GetPhysicalDeviceCalibrateableTimeDomainsEXT
static int
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
(VkPhysicalDevice physicalDevice, IntBuffer pTimeDomainCount, IntBuffer pTimeDomains) Query calibrateable time domains.
-
Field Details
-
VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION
public static final int VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSIONThe extension specification version.- See Also:
-
VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME
The extension name.- See Also:
-
VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
public static final int VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXTExtendsVkStructureType
.- See Also:
-
VK_TIME_DOMAIN_DEVICE_EXT
public static final int VK_TIME_DOMAIN_DEVICE_EXTVkTimeDomainEXT - Supported time domainsDescription
TIME_DOMAIN_DEVICE_EXT
specifies the device time domain. Timestamp values in this time domain use the same units and are comparable with device timestamp values captured usingCmdWriteTimestamp
orCmdWriteTimestamp2
and are defined to be incrementing according to thetimestampPeriod
of the device.TIME_DOMAIN_CLOCK_MONOTONIC_EXT
specifies the CLOCK_MONOTONIC time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:
Note
An implementation supporting
VK_EXT_calibrated_timestamps
will use the same time domain for all itsVkQueue
so that timestamp values reported forTIME_DOMAIN_DEVICE_EXT
can be matched to any timestamp captured throughCmdWriteTimestamp
orCmdWriteTimestamp2
.struct timespec tv; clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull;
TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT
specifies the CLOCK_MONOTONIC_RAW time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:
struct timespec tv; clock_gettime(CLOCK_MONOTONIC_RAW, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull;
TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
specifies the performance counter (QPC) time domain available on Windows. Timestamp values in this time domain are in the same units as those provided by the Windows QueryPerformanceCounter API and are comparable with platform timestamp values captured using that API as computed by this example:
LARGE_INTEGER counter; QueryPerformanceCounter(&counter); return counter.QuadPart;
See Also
VkCalibratedTimestampInfoEXT
,GetPhysicalDeviceCalibrateableTimeDomainsEXT
- See Also:
-
VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT
public static final int VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXTVkTimeDomainEXT - Supported time domainsDescription
TIME_DOMAIN_DEVICE_EXT
specifies the device time domain. Timestamp values in this time domain use the same units and are comparable with device timestamp values captured usingCmdWriteTimestamp
orCmdWriteTimestamp2
and are defined to be incrementing according to thetimestampPeriod
of the device.TIME_DOMAIN_CLOCK_MONOTONIC_EXT
specifies the CLOCK_MONOTONIC time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:
Note
An implementation supporting
VK_EXT_calibrated_timestamps
will use the same time domain for all itsVkQueue
so that timestamp values reported forTIME_DOMAIN_DEVICE_EXT
can be matched to any timestamp captured throughCmdWriteTimestamp
orCmdWriteTimestamp2
.struct timespec tv; clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull;
TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT
specifies the CLOCK_MONOTONIC_RAW time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:
struct timespec tv; clock_gettime(CLOCK_MONOTONIC_RAW, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull;
TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
specifies the performance counter (QPC) time domain available on Windows. Timestamp values in this time domain are in the same units as those provided by the Windows QueryPerformanceCounter API and are comparable with platform timestamp values captured using that API as computed by this example:
LARGE_INTEGER counter; QueryPerformanceCounter(&counter); return counter.QuadPart;
See Also
VkCalibratedTimestampInfoEXT
,GetPhysicalDeviceCalibrateableTimeDomainsEXT
- See Also:
-
VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT
public static final int VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXTVkTimeDomainEXT - Supported time domainsDescription
TIME_DOMAIN_DEVICE_EXT
specifies the device time domain. Timestamp values in this time domain use the same units and are comparable with device timestamp values captured usingCmdWriteTimestamp
orCmdWriteTimestamp2
and are defined to be incrementing according to thetimestampPeriod
of the device.TIME_DOMAIN_CLOCK_MONOTONIC_EXT
specifies the CLOCK_MONOTONIC time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:
Note
An implementation supporting
VK_EXT_calibrated_timestamps
will use the same time domain for all itsVkQueue
so that timestamp values reported forTIME_DOMAIN_DEVICE_EXT
can be matched to any timestamp captured throughCmdWriteTimestamp
orCmdWriteTimestamp2
.struct timespec tv; clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull;
TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT
specifies the CLOCK_MONOTONIC_RAW time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:
struct timespec tv; clock_gettime(CLOCK_MONOTONIC_RAW, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull;
TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
specifies the performance counter (QPC) time domain available on Windows. Timestamp values in this time domain are in the same units as those provided by the Windows QueryPerformanceCounter API and are comparable with platform timestamp values captured using that API as computed by this example:
LARGE_INTEGER counter; QueryPerformanceCounter(&counter); return counter.QuadPart;
See Also
VkCalibratedTimestampInfoEXT
,GetPhysicalDeviceCalibrateableTimeDomainsEXT
- See Also:
-
VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
public static final int VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXTVkTimeDomainEXT - Supported time domainsDescription
TIME_DOMAIN_DEVICE_EXT
specifies the device time domain. Timestamp values in this time domain use the same units and are comparable with device timestamp values captured usingCmdWriteTimestamp
orCmdWriteTimestamp2
and are defined to be incrementing according to thetimestampPeriod
of the device.TIME_DOMAIN_CLOCK_MONOTONIC_EXT
specifies the CLOCK_MONOTONIC time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:
Note
An implementation supporting
VK_EXT_calibrated_timestamps
will use the same time domain for all itsVkQueue
so that timestamp values reported forTIME_DOMAIN_DEVICE_EXT
can be matched to any timestamp captured throughCmdWriteTimestamp
orCmdWriteTimestamp2
.struct timespec tv; clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull;
TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT
specifies the CLOCK_MONOTONIC_RAW time domain available on POSIX platforms. Timestamp values in this time domain are in units of nanoseconds and are comparable with platform timestamp values captured using the POSIX clock_gettime API as computed by this example:
struct timespec tv; clock_gettime(CLOCK_MONOTONIC_RAW, &tv); return tv.tv_nsec + tv.tv_sec*1000000000ull;
TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
specifies the performance counter (QPC) time domain available on Windows. Timestamp values in this time domain are in the same units as those provided by the Windows QueryPerformanceCounter API and are comparable with platform timestamp values captured using that API as computed by this example:
LARGE_INTEGER counter; QueryPerformanceCounter(&counter); return counter.QuadPart;
See Also
VkCalibratedTimestampInfoEXT
,GetPhysicalDeviceCalibrateableTimeDomainsEXT
- See Also:
-
-
Method Details
-
nvkGetPhysicalDeviceCalibrateableTimeDomainsEXT
public static int nvkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice, long pTimeDomainCount, long pTimeDomains) Unsafe version of:GetPhysicalDeviceCalibrateableTimeDomainsEXT
- Parameters:
pTimeDomainCount
- a pointer to an integer related to the number of calibrateable time domains available or queried, as described below.
-
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
public static int vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice, IntBuffer pTimeDomainCount, @Nullable IntBuffer pTimeDomains) Query calibrateable time domains.C Specification
To query the set of time domains for which a physical device supports timestamp calibration, call:
VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
Description
If
pTimeDomains
isNULL
, then the number of calibrateable time domains supported for the givenphysicalDevice
is returned inpTimeDomainCount
. Otherwise,pTimeDomainCount
must point to a variable set by the user to the number of elements in thepTimeDomains
array, and on return the variable is overwritten with the number of values actually written topTimeDomains
. If the value ofpTimeDomainCount
is less than the number of calibrateable time domains supported, at mostpTimeDomainCount
values will be written topTimeDomains
, andINCOMPLETE
will be returned instead ofSUCCESS
, to indicate that not all the available time domains were returned.Valid Usage (Implicit)
physicalDevice
must be a validVkPhysicalDevice
handlepTimeDomainCount
must be a valid pointer to auint32_t
value- If the value referenced by
pTimeDomainCount
is not 0, andpTimeDomains
is notNULL
,pTimeDomains
must be a valid pointer to an array ofpTimeDomainCount
VkTimeDomainEXT
values
Return Codes
- On success, this command returns
- On failure, this command returns
- Parameters:
physicalDevice
- the physical device from which to query the set of calibrateable time domains.pTimeDomainCount
- a pointer to an integer related to the number of calibrateable time domains available or queried, as described below.pTimeDomains
- eitherNULL
or a pointer to an array ofVkTimeDomainEXT
values, indicating the supported calibrateable time domains.
-
nvkGetCalibratedTimestampsEXT
public static int nvkGetCalibratedTimestampsEXT(VkDevice device, int timestampCount, long pTimestampInfos, long pTimestamps, long pMaxDeviation) Unsafe version of:GetCalibratedTimestampsEXT
- Parameters:
timestampCount
- the number of timestamps to query.
-
vkGetCalibratedTimestampsEXT
public static int vkGetCalibratedTimestampsEXT(VkDevice device, VkCalibratedTimestampInfoEXT.Buffer pTimestampInfos, LongBuffer pTimestamps, LongBuffer pMaxDeviation) Query calibrated timestamps.C Specification
In order to be able to correlate the time a particular operation took place at on timelines of different time domains (e.g. a device operation vs. a host operation), Vulkan allows querying calibrated timestamps from multiple time domains.
To query calibrated timestamps from a set of time domains, call:
VkResult vkGetCalibratedTimestampsEXT( VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
Description
Note
The maximum deviation may vary between calls to
vkGetCalibratedTimestampsEXT
even for the same set of time domains due to implementation and platform specific reasons. It is the application’s responsibility to assess whether the returned maximum deviation makes the timestamp values suitable for any particular purpose and can choose to re-issue the timestamp calibration call pursuing a lower deviation value.Calibrated timestamp values can be extrapolated to estimate future coinciding timestamp values, however, depending on the nature of the time domains and other properties of the platform extrapolating values over a sufficiently long period of time may no longer be accurate enough to fit any particular purpose, so applications are expected to re-calibrate the timestamps on a regular basis.
Valid Usage
- The
timeDomain
value of eachVkCalibratedTimestampInfoEXT
inpTimestampInfos
must be unique
Valid Usage (Implicit)
device
must be a validVkDevice
handlepTimestampInfos
must be a valid pointer to an array oftimestampCount
validVkCalibratedTimestampInfoEXT
structurespTimestamps
must be a valid pointer to an array oftimestampCount
uint64_t
valuespMaxDeviation
must be a valid pointer to auint64_t
valuetimestampCount
must be greater than 0
Return Codes
- On success, this command returns
- On failure, this command returns
See Also
- Parameters:
device
- the logical device used to perform the query.pTimestampInfos
- a pointer to an array oftimestampCount
VkCalibratedTimestampInfoEXT
structures, describing the time domains the calibrated timestamps should be captured from.pTimestamps
- a pointer to an array oftimestampCount
64-bit unsigned integer values in which the requested calibrated timestamp values are returned.pMaxDeviation
- a pointer to a 64-bit unsigned integer value in which the strictly positive maximum deviation, in nanoseconds, of the calibrated timestamp values is returned.
- The
-
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
public static int vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice, int[] pTimeDomainCount, @Nullable int[] pTimeDomains) Array version of:GetPhysicalDeviceCalibrateableTimeDomainsEXT
-
vkGetCalibratedTimestampsEXT
public static int vkGetCalibratedTimestampsEXT(VkDevice device, VkCalibratedTimestampInfoEXT.Buffer pTimestampInfos, long[] pTimestamps, long[] pMaxDeviation) Array version of:GetCalibratedTimestampsEXT
-