VkPresentInfoKHR
The VkPresentInfoKHR
structure is defined as:
typedef struct VkPresentInfoKHR {
VkStructureType sType;
const void* pNext;
uint32_t waitSemaphoreCount;
const VkSemaphore* pWaitSemaphores;
uint32_t swapchainCount;
const VkSwapchainKHR* pSwapchains;
const uint32_t* pImageIndices;
VkResult* pResults;
} VkPresentInfoKHR;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
or a pointer to a structure extending this structure.waitSemaphoreCount
is the number of semaphores to wait for before issuing the present request. The number may be zero.pWaitSemaphores
isNULL
or a pointer to an array of VkSemaphore objects withwaitSemaphoreCount
entries, and specifies the semaphores to wait for before issuing the present request.swapchainCount
is the number of swapchains being presented to by this command.pSwapchains
is a pointer to an array of VkSwapchainKHR objects withswapchainCount
entries.pImageIndices
is a pointer to an array of indices into the array of each swapchain’s presentable images, withswapchainCount
entries. Each entry in this array identifies the image to present on the corresponding entry in thepSwapchains
array.pResults
is a pointer to an array of VkResult typed elements withswapchainCount
entries. Applications that do not need per-swapchain results can useNULL
forpResults
. If non-NULL
, each entry inpResults
will be set to the VkResult for presenting the swapchain corresponding to the same index inpSwapchains
.
Before an application can present an image, the image’s layout must be
transitioned to the VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
layout, or for a shared presentable image the
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
layout.
When transitioning the image to
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
or
VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
, there is no need to delay subsequent
processing, or perform any visibility operations (as vkQueuePresentKHR
performs automatic visibility operations).
To achieve this, the dstAccessMask
member of the
VkImageMemoryBarrier should be 0
, and the dstStageMask
parameter should be VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
.
Valid Usage
VUID-VkPresentInfoKHR-pSwapchain-09231
Elements of pSwapchain
must be unique
VUID-VkPresentInfoKHR-pImageIndices-01430
Each element of pImageIndices
must be the index of a presentable
image acquired from the swapchain specified by the corresponding element
of the pSwapchains
array, and the presented image subresource
must be in the VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
layout at the time the operation is executed on a VkDevice
VUID-VkPresentInfoKHR-pNext-06235
If a VkPresentIdKHR structure is included in the pNext
chain, and the presentId
feature is not
enabled, each presentIds
entry in that structure must be NULL
VUID-VkPresentInfoKHR-swapchainMaintenance1-10158
If the swapchainMaintenance1
feature is not enabled, then the pNext
chain must not include a
VkSwapchainPresentFenceInfoEXT structure
VUID-VkPresentInfoKHR-pSwapchains-09199
If any element of the pSwapchains
array has been created with
VkSwapchainPresentModesCreateInfoEXT, all of the elements of this
array must be created with VkSwapchainPresentModesCreateInfoEXT
Valid Usage (Implicit)
VUID-VkPresentInfoKHR-sType-sType
sType
must be VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
VUID-VkPresentInfoKHR-pNext-pNext
Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDeviceGroupPresentInfoKHR, VkDisplayPresentInfoKHR, VkFrameBoundaryEXT, VkPresentFrameTokenGGP, VkPresentIdKHR, VkPresentRegionsKHR, VkPresentTimesInfoGOOGLE, VkSwapchainPresentFenceInfoEXT, or VkSwapchainPresentModeInfoEXT
VUID-VkPresentInfoKHR-sType-unique
The sType
value of each struct in the pNext
chain must be unique
VUID-VkPresentInfoKHR-pWaitSemaphores-parameter
If waitSemaphoreCount
is not 0
, pWaitSemaphores
must be a valid pointer to an array of waitSemaphoreCount
valid VkSemaphore handles
VUID-VkPresentInfoKHR-pSwapchains-parameter
pSwapchains
must be a valid pointer to an array of swapchainCount
valid VkSwapchainKHR handles
VUID-VkPresentInfoKHR-pImageIndices-parameter
pImageIndices
must be a valid pointer to an array of swapchainCount
uint32_t
values
VUID-VkPresentInfoKHR-pResults-parameter
If pResults
is not NULL
, pResults
must be a valid pointer to an array of swapchainCount
VkResult values
VUID-VkPresentInfoKHR-swapchainCount-arraylength
swapchainCount
must be greater than 0
VUID-VkPresentInfoKHR-commonparent
Both of the elements of pSwapchains
, and the elements of pWaitSemaphores
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice