blob: ba09b5b55d343b92db92c62535b1ec04d8709b81 [file] [log] [blame]
// Copyright 2019-2021 The Khronos Group, Inc.
//
// SPDX-License-Identifier: CC-BY-4.0
[open,refpage='vkWaitForPresentKHR',desc='Wait for presentation',type='protos']
--
When the <<features-presentWait, pname:presentWait>> feature is enabled, an
application can: wait for an image to be presented to the user by first
specifying a presentId for the target presentation by adding a
sname:VkPresentIdKHR structure to the pname:pNext chain of the
slink:VkPresentInfoKHR structure and then waiting for that presentation to
complete by calling:
include::{generated}/api/protos/vkWaitForPresentKHR.txt[]
* pname:device is the device associated with pname:swapchain.
* pname:swapchain is the non-retired swapchain on which an image was
queued for presentation.
* pname:presentId is the presentation presentId to wait for.
* pname:timeout is the timeout period in units of nanoseconds.
pname:timeout is adjusted to the closest value allowed by the
implementation-dependent timeout accuracy, which may: be substantially
longer than one nanosecond, and may: be longer than the requested
period.
fname:vkWaitForPresentKHR waits for the presentId associated with
pname:swapchain to be increased in value so that it is at least equal to
pname:presentId.
For ename:VK_PRESENT_MODE_MAILBOX_KHR (or other present mode where images
may be replaced in the presentation queue) any wait of this type associated
with such an image must: be signaled no later than a wait associated with
the replacing image would be signaled.
When the presentation has completed, the presentId associated with the
related pname:pSwapchains entry will be increased in value so that it is at
least equal to the value provided in the sname:VkPresentIdKHR structure.
There is no requirement for any precise timing relationship between the
presentation of the image to the user and the update of the presentId value,
but implementations should: make this as close as possible to the
presentation of the first pixel in the new image to the user.
The call to fname:vkWaitForPresentKHR will block until either the presentId
associated with pname:swapchain is greater than or equal to pname:presentId,
or pname:timeout nanoseconds passes.
When the swapchain becomes OUT_OF_DATE, the call will either return
ename:VK_SUCCESS (if the image was delivered to the presentation engine and
may have been presented to the user) or will return early with status
ename:VK_ERROR_OUT_OF_DATE_KHR (if the image was not presented to the user).
As an exception to the normal rules for objects which are externally
synchronized, the pname:swapchain passed to fname:vkWaitForPresentKHR may:
be simultaneously used by other threads in calls to functions other than
flink:vkDestroySwapchainKHR.
Access to the swapchain data associated with this extension must: be atomic
within the implementation.
.Valid Usage
****
* [[VUID-vkWaitForPresentKHR-swapchain-04997]]
pname:swapchain must: not be in the retired state
* [[VUID-vkWaitForPresentKHR-presentWait-06234]]
The <<features-presentWait, pname:presentWait>> feature must: be enabled
****
include::{generated}/validity/protos/vkWaitForPresentKHR.txt[]
--