Structures

VkPresentInfoKHR

Structure describing parameters of a queue presentation

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 is NULL 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 is NULL or a pointer to an array of VkSemaphore objects with waitSemaphoreCount 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 with swapchainCount entries.
  • pImageIndices is a pointer to an array of indices into the array of each swapchain’s presentable images, with swapchainCount entries. Each entry in this array identifies the image to present on the corresponding entry in the pSwapchains array.
  • pResults is a pointer to an array of VkResult typed elements with swapchainCount entries. Applications that do not need per-swapchain results can use NULL for pResults. If non-NULL, each entry in pResults will be set to the VkResult for presenting the swapchain corresponding to the same index in pSwapchains.

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-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