public class EXTCalibratedTimestamps
extends java.lang.Object
VK_EXT_calibrated_timestamps| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME
The extension name.
|
static int |
VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION
The extension specification version.
|
static int |
VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
Extends
VkStructureType. |
static int |
VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT
VkTimeDomainEXT - Supported time domains
|
static int |
VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT
VkTimeDomainEXT - Supported time domains
|
static int |
VK_TIME_DOMAIN_DEVICE_EXT
VkTimeDomainEXT - Supported time domains
|
static int |
VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
VkTimeDomainEXT - Supported time domains
|
| Modifier and Type | Method and Description |
|---|---|
static int |
nvkGetCalibratedTimestampsEXT(org.lwjgl.vulkan.VkDevice device,
int timestampCount,
long pTimestampInfos,
long pTimestamps,
long pMaxDeviation)
Unsafe version of:
GetCalibratedTimestampsEXT |
static int |
nvkGetPhysicalDeviceCalibrateableTimeDomainsEXT(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice,
long pTimeDomainCount,
long pTimeDomains)
Unsafe version of:
GetPhysicalDeviceCalibrateableTimeDomainsEXT |
static int |
vkGetCalibratedTimestampsEXT(org.lwjgl.vulkan.VkDevice device,
VkCalibratedTimestampInfoEXT.Buffer pTimestampInfos,
long[] pTimestamps,
long[] pMaxDeviation)
Array version of:
GetCalibratedTimestampsEXT |
static int |
vkGetCalibratedTimestampsEXT(org.lwjgl.vulkan.VkDevice device,
VkCalibratedTimestampInfoEXT.Buffer pTimestampInfos,
java.nio.LongBuffer pTimestamps,
java.nio.LongBuffer pMaxDeviation)
Query calibrated timestamps.
|
static int |
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice,
int[] pTimeDomainCount,
int[] pTimeDomains)
Array version of:
GetPhysicalDeviceCalibrateableTimeDomainsEXT |
static int |
vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice,
java.nio.IntBuffer pTimeDomainCount,
java.nio.IntBuffer pTimeDomains)
Query calibrateable time domains.
|
public static final int VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION
public static final java.lang.String VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME
public static final int VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
VkStructureType.public static final int VK_TIME_DOMAIN_DEVICE_EXT
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 using CmdWriteTimestamp and are defined to be incrementing according to the timestampPeriod 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:
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;
VkCalibratedTimestampInfoEXT, GetPhysicalDeviceCalibrateableTimeDomainsEXT
public static final int VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT
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 using CmdWriteTimestamp and are defined to be incrementing according to the timestampPeriod 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:
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;
VkCalibratedTimestampInfoEXT, GetPhysicalDeviceCalibrateableTimeDomainsEXT
public static final int VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT
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 using CmdWriteTimestamp and are defined to be incrementing according to the timestampPeriod 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:
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;
VkCalibratedTimestampInfoEXT, GetPhysicalDeviceCalibrateableTimeDomainsEXT
public static final int VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT
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 using CmdWriteTimestamp and are defined to be incrementing according to the timestampPeriod 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:
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;
VkCalibratedTimestampInfoEXT, GetPhysicalDeviceCalibrateableTimeDomainsEXT
public static int nvkGetPhysicalDeviceCalibrateableTimeDomainsEXT(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice,
long pTimeDomainCount,
long pTimeDomains)
GetPhysicalDeviceCalibrateableTimeDomainsEXTpTimeDomainCount - a pointer to an integer related to the number of calibrateable time domains available or queried, as described below.public static int vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice,
java.nio.IntBuffer pTimeDomainCount,
@Nullable
java.nio.IntBuffer pTimeDomains)
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);
If pTimeDomains is NULL, then the number of calibrateable time domains supported for the given physicalDevice is returned in pTimeDomainCount. Otherwise, pTimeDomainCount must point to a variable set by the user to the number of elements in the pTimeDomains array, and on return the variable is overwritten with the number of values actually written to pTimeDomains. If the value of pTimeDomainCount is less than the number of calibrateable time domains supported, at most pTimeDomainCount values will be written to pTimeDomains. If pTimeDomainCount is smaller than the number of calibrateable time domains supported for the given physicalDevice, INCOMPLETE will be returned instead of SUCCESS to indicate that not all the available values were returned.
physicalDevice must be a valid VkPhysicalDevice handlepTimeDomainCount must be a valid pointer to a uint32_t valuepTimeDomainCount is not 0, and pTimeDomains is not NULL, pTimeDomains must be a valid pointer to an array of pTimeDomainCount VkTimeDomainEXT valuesphysicalDevice - 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 - either NULL or a pointer to an array of VkTimeDomainEXT values, indicating the supported calibrateable time domains.public static int nvkGetCalibratedTimestampsEXT(org.lwjgl.vulkan.VkDevice device,
int timestampCount,
long pTimestampInfos,
long pTimestamps,
long pMaxDeviation)
GetCalibratedTimestampsEXTtimestampCount - the number of timestamps to query.public static int vkGetCalibratedTimestampsEXT(org.lwjgl.vulkan.VkDevice device,
VkCalibratedTimestampInfoEXT.Buffer pTimestampInfos,
java.nio.LongBuffer pTimestamps,
java.nio.LongBuffer pMaxDeviation)
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);
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 devation 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.
device must be a valid VkDevice handlepTimestampInfos must be a valid pointer to an array of timestampCount valid VkCalibratedTimestampInfoEXT structurespTimestamps must be a valid pointer to an array of timestampCount uint64_t valuespMaxDeviation must be a valid pointer to a uint64_t valuetimestampCount must be greater than 0device - the logical device used to perform the query.pTimestampInfos - a pointer to an array of timestampCount VkCalibratedTimestampInfoEXT structures, describing the time domains the calibrated timestamps should be captured from.pTimestamps - a pointer to an array of timestampCount 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.public static int vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice,
int[] pTimeDomainCount,
@Nullable
int[] pTimeDomains)
GetPhysicalDeviceCalibrateableTimeDomainsEXTpublic static int vkGetCalibratedTimestampsEXT(org.lwjgl.vulkan.VkDevice device,
VkCalibratedTimestampInfoEXT.Buffer pTimestampInfos,
long[] pTimestamps,
long[] pMaxDeviation)
GetCalibratedTimestampsEXTCopyright LWJGL. All Rights Reserved. License terms.