vkAcquireNextImageKHR
To acquire an available presentable image to use, and retrieve the index of that image, call:
VkResult vkAcquireNextImageKHR(
VkDevice device,
VkSwapchainKHR swapchain,
uint64_t timeout,
VkSemaphore semaphore,
VkFence fence,
uint32_t* pImageIndex);
deviceis the device associated withswapchain.swapchainis the non-retired swapchain from which an image is being acquired.timeoutspecifies how long the function waits, in nanoseconds, if no image is available.semaphoreis VK_NULL_HANDLE or a semaphore to signal.fenceis VK_NULL_HANDLE or a fence to signal.pImageIndexis a pointer to auint32_tin which the index of the next image to use (i.e. an index into the array of images returned byvkGetSwapchainImagesKHR) is returned.
If the swapchain has been created with the
VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT flag, the image
whose index is returned in pImageIndex will be fully backed by memory
before this call returns to the application, as if it is bound completely
and contiguously to a single VkDeviceMemory object.
Valid Usage
VUID-vkAcquireNextImageKHR-swapchain-01285
swapchain must not be in the retired state
VUID-vkAcquireNextImageKHR-semaphore-01286
If semaphore is not VK_NULL_HANDLE, it must be unsignaled
VUID-vkAcquireNextImageKHR-semaphore-01779
If semaphore is not VK_NULL_HANDLE, it must not have any
uncompleted signal or wait operations pending
VUID-vkAcquireNextImageKHR-fence-01287
If fence is not VK_NULL_HANDLE, fence must be
unsignaled
VUID-vkAcquireNextImageKHR-fence-10066
If fence is not VK_NULL_HANDLE, fence must not be
associated with any other queue command that has not yet completed
execution on that queue
VUID-vkAcquireNextImageKHR-semaphore-01780
semaphore and fence must not both be equal to
VK_NULL_HANDLE
VUID-vkAcquireNextImageKHR-surface-07783
If forward progress cannot be
guaranteed for the surface used to create the swapchain
member of pAcquireInfo, timeout must not be UINT64_MAX
VUID-vkAcquireNextImageKHR-semaphore-03265
semaphore must have a VkSemaphoreType of
VK_SEMAPHORE_TYPE_BINARY
Valid Usage (Implicit)
VUID-vkAcquireNextImageKHR-device-parameter
device must be a valid VkDevice handle
VUID-vkAcquireNextImageKHR-swapchain-parameter
swapchain must be a valid VkSwapchainKHR handle
VUID-vkAcquireNextImageKHR-semaphore-parameter
If semaphore is not VK_NULL_HANDLE, semaphore must be a valid VkSemaphore handle
VUID-vkAcquireNextImageKHR-fence-parameter
If fence is not VK_NULL_HANDLE, fence must be a valid VkFence handle
VUID-vkAcquireNextImageKHR-pImageIndex-parameter
pImageIndex must be a valid pointer to a uint32_t value
VUID-vkAcquireNextImageKHR-swapchain-parent
swapchain must have been created, allocated, or retrieved from device
VUID-vkAcquireNextImageKHR-semaphore-parent
If semaphore is a valid handle, it must have been created, allocated, or retrieved from device
VUID-vkAcquireNextImageKHR-fence-parent
If fence is a valid handle, it must have been created, allocated, or retrieved from device
Host Synchronization
- Host access to
swapchainmust be externally synchronized - Host access to
semaphoremust be externally synchronized - Host access to
fencemust be externally synchronized ::