VkPresentTimingInfoEXT
The VkPresentTimingInfoEXT structure is defined as:
typedef struct VkPresentTimingInfoEXT {
VkStructureType sType;
const void* pNext;
VkPresentTimingInfoFlagsEXT flags;
uint64_t targetTime;
uint64_t timeDomainId;
VkPresentStageFlagsEXT presentStageQueries;
VkPresentStageFlagsEXT targetTimeDomainPresentStage;
} VkPresentTimingInfoEXT;
pub struct PresentTimingInfoEXT {
s_type: vk::StructureType,
p_next: *const c_void,
flags: vk::PresentTimingInfoFlagsEXT,
target_time: u64,
time_domain_id: u64, // Time domain to interpret the target present time and collect present stages timings with
present_stage_queries: vk::PresentStageFlagsEXT, // Present stages to collect timing information for
target_time_domain_present_stage: vk::PresentStageFlagsEXT, // Target stage-local time domain's stage
}
sTypeis a VkStructureType value identifying this structure.pNextisNULLor a pointer to a structure extending this structure.flagsis a bitmask of VkPresentTimingInfoFlagBitsEXT specifying options for how to interpret the timing information.targetTimeis zero or a value specifying the target present time or duration, in nanoseconds, of the presentation request.timeDomainIdis the id of the time domain used to specify the absolute target present time and the timing results obtained in a subsequent vkGetPastPresentationTimingEXT call for the current presentation request.presentStageQueriesis a valid VkPresentStageFlagsEXT value indicating which present stages the presentation engine will collect timing information for.targetTimeDomainPresentStageis a valid VkPresentStageFlagsEXT specifying a single present stage used to interprettargetTime.
If targetTime is not zero, the implementation attempts to align the
VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT present stage of
that presentation request with the time specified in targetTime
according to the time domain used.
If VK_PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT is
not set in flags, it indicates that the application would strictly
prefer the image to not be visible before targetTime has lapsed.
If targetTime is not zero and timeDomainId is associated with a
VK_TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT time domain,
targetTimeDomainPresentStage is used to specify which present stage’s
time domain targetTime is specified for.
Otherwise, targetTimeDomainPresentStage is ignored.
targetTime with the actual physical event of the image
becoming visible on the display.
However, those timing capabilities may still be useful and result in
improved animation quality.As such, the presentAtAbsoluteTime
and presentAtRelativeTime features
do not provide a strict guarantee regarding the completion of the
VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT present stage
relative to the targetTime, and implementations must strive to make
it as consistent and accurate as possible.VK_PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT to
allow the implementation to compensate for small precision errors that may
cause an image to be displayed one refresh cycle later than intended.Valid Usage
VUID-VkPresentTimingInfoEXT-targetTime-12236
If targetTime is not zero and flags does not contain
VK_PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT, the
presentAtAbsoluteTime feature
must be enabled and the presentAtAbsoluteTimeSupported member of
the VkPresentTimingSurfaceCapabilitiesEXT returned by
vkGetPhysicalDeviceSurfaceCapabilities2KHR for the surface
associated with the swapchain must be VK_TRUE
VUID-VkPresentTimingInfoEXT-targetTime-12237
If targetTime is not zero and flags contains
VK_PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT, the
presentAtRelativeTime feature
must be enabled and the presentAtRelativeTimeSupported member of
the VkPresentTimingSurfaceCapabilitiesEXT returned by
vkGetPhysicalDeviceSurfaceCapabilities2KHR for the surface
associated with the swapchain must be VK_TRUE
VUID-VkPresentTimingInfoEXT-timeDomainId-12238
If timeDomainId is associated with a
VK_TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT time domain, and
targetTime is not zero, targetTimeDomainPresentStage must
be a single VkPresentStageFlagsEXT value
Valid Usage (Implicit)
VUID-VkPresentTimingInfoEXT-sType-sType
sType must be VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT
VUID-VkPresentTimingInfoEXT-pNext-pNext
pNext must be NULL
VUID-VkPresentTimingInfoEXT-flags-parameter
flags must be a valid combination of VkPresentTimingInfoFlagBitsEXT values
VUID-VkPresentTimingInfoEXT-presentStageQueries-parameter
presentStageQueries must be a valid combination of VkPresentStageFlagBitsEXT values
VUID-VkPresentTimingInfoEXT-targetTimeDomainPresentStage-parameter
targetTimeDomainPresentStage must be a valid combination of VkPresentStageFlagBitsEXT values