| // 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[] |
| -- |