Class KHRCalibratedTimestamps

java.lang.Object
org.lwjgl.vulkan.KHRCalibratedTimestamps

public class KHRCalibratedTimestamps extends Object
This extension provides an interface to query calibrated timestamps obtained quasi simultaneously from two time domains.
Name String
VK_KHR_calibrated_timestamps
Extension Type
Device extension
Registered Extension Number
544
Revision
1
Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 or Version 1.1
Contact
Extension Proposal
VK_EXT_calibrated_timestamps
Other Extension Metadata
Last Modified Date
2023-07-12
IP Status
No known IP claims.
Contributors
  • Matthaeus G. Chajdas, AMD
  • Alan Harrison, AMD
  • Derrick Owens, AMD
  • Daniel Rakos, RasterGrid
  • Faith Ekstrand, Intel
  • Keith Packard, Valve
  • Field Details

    • VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION

      public static final int VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION
      The extension specification version.
      See Also:
    • VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME

      public static final String VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME
      The extension name.
      See Also:
    • VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR

      public static final int VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR
      Extends VkStructureType.
      See Also:
  • Method Details

    • nvkGetPhysicalDeviceCalibrateableTimeDomainsKHR

      public static int nvkGetPhysicalDeviceCalibrateableTimeDomainsKHR(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice, long pTimeDomainCount, long pTimeDomains)
      Parameters:
      pTimeDomainCount - a pointer to an integer related to the number of calibrateable time domains available or queried, as described below.
    • vkGetPhysicalDeviceCalibrateableTimeDomainsKHR

      public static int vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(org.lwjgl.vulkan.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 vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(
           VkPhysicalDevice                            physicalDevice,
           uint32_t*                                   pTimeDomainCount,
           VkTimeDomainKHR*                            pTimeDomains);

      or the equivalent command

      
       VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
           VkPhysicalDevice                            physicalDevice,
           uint32_t*                                   pTimeDomainCount,
           VkTimeDomainKHR*                            pTimeDomains);
      Description

      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 application 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, and INCOMPLETE will be returned instead of SUCCESS, to indicate that not all the available time domains were returned.

      Valid Usage (Implicit)
      • physicalDevice must be a valid VkPhysicalDevice handle
      • pTimeDomainCount must be a valid pointer to a uint32_t value
      • If the value referenced by pTimeDomainCount is not 0, and pTimeDomains is not NULL, pTimeDomains must be a valid pointer to an array of pTimeDomainCount VkTimeDomainKHR 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 - either NULL or a pointer to an array of VkTimeDomainKHR values, indicating the supported calibrateable time domains.
    • nvkGetCalibratedTimestampsKHR

      public static int nvkGetCalibratedTimestampsKHR(org.lwjgl.vulkan.VkDevice device, int timestampCount, long pTimestampInfos, long pTimestamps, long pMaxDeviation)
      Unsafe version of: GetCalibratedTimestampsKHR
      Parameters:
      timestampCount - the number of timestamps to query.
    • vkGetCalibratedTimestampsKHR

      public static int vkGetCalibratedTimestampsKHR(org.lwjgl.vulkan.VkDevice device, VkCalibratedTimestampInfoKHR.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 vkGetCalibratedTimestampsKHR(
           VkDevice                                    device,
           uint32_t                                    timestampCount,
           const VkCalibratedTimestampInfoKHR*         pTimestampInfos,
           uint64_t*                                   pTimestamps,
           uint64_t*                                   pMaxDeviation);

      or the equivalent command

      
       VkResult vkGetCalibratedTimestampsEXT(
           VkDevice                                    device,
           uint32_t                                    timestampCount,
           const VkCalibratedTimestampInfoKHR*         pTimestampInfos,
           uint64_t*                                   pTimestamps,
           uint64_t*                                   pMaxDeviation);
      Description
      Note

      The maximum deviation may vary between calls to vkGetCalibratedTimestampsKHR 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
      Valid Usage (Implicit)
      • device must be a valid VkDevice handle
      • pTimestampInfos must be a valid pointer to an array of timestampCount valid VkCalibratedTimestampInfoKHR structures
      • pTimestamps must be a valid pointer to an array of timestampCount uint64_t values
      • pMaxDeviation must be a valid pointer to a uint64_t value
      • timestampCount must be greater than 0
      Return Codes
      On success, this command returns
      On failure, this command returns
      See Also

      VkCalibratedTimestampInfoKHR

      Parameters:
      device - the logical device used to perform the query.
      pTimestampInfos - a pointer to an array of timestampCount VkCalibratedTimestampInfoKHR 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.
    • vkGetPhysicalDeviceCalibrateableTimeDomainsKHR

      public static int vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(org.lwjgl.vulkan.VkPhysicalDevice physicalDevice, int[] pTimeDomainCount, int @Nullable [] pTimeDomains)
    • vkGetCalibratedTimestampsKHR

      public static int vkGetCalibratedTimestampsKHR(org.lwjgl.vulkan.VkDevice device, VkCalibratedTimestampInfoKHR.Buffer pTimestampInfos, long[] pTimestamps, long[] pMaxDeviation)
      Array version of: GetCalibratedTimestampsKHR