Requires support for Vulkan 1.0
VK_KHR_swapchainto be enabled for any device-level functionality
Ian Elliott ianelliottus
- Last Modified Date
- IP Status
No known IP claims.
Ian Elliott, Google
Jesse Hall, Google
Alon Or-bach, Samsung
James Jones, NVIDIA
Daniel Rakos, AMD
Ray Smith, ARM
Mika Isojarvi, Google
Jeff Juliano, NVIDIA
Jeff Bolz, NVIDIA
This device extension extends vkQueuePresentKHR, from the
VK_KHR_swapchain extension, allowing an application to specify a
list of rectangular, modified regions of each image to present.
This should be used in situations where an application is only changing a
small portion of the presentable images within a swapchain, since it enables
the presentation engine to avoid wasting time presenting parts of the
surface that have not changed.
This extension is leveraged from the
1) How should we handle steroescopic-3D swapchains? We need to add a layer
for each rectangle.
One approach is to create another struct containing the VkRect2D plus
layer, and have VkPresentRegionsKHR point to an array of that struct.
Another approach is to have two parallel arrays,
pLayers[i] must be used
Which approach should we use, and if the array of a new structure, what
should that be called?
2) Where is the origin of the VkRectLayerKHR?
RESOLVED: The upper left corner of the presentable image(s) of the swapchain, per the definition of framebuffer coordinates.
3) Does the rectangular region, VkRectLayerKHR, specify pixels of the swapchain’s image(s), or of the surface?
RESOLVED: Of the image(s). Some presentation engines may scale the pixels of a swapchain’s image(s) to the size of the surface. The size of the swapchain’s image(s) will be consistent, where the size of the surface may vary over time.
4) What if all of the rectangles for a given swapchain contain a width and/or height of zero?
RESOLVED: The application is indicating that no pixels changed since the last present. The presentation engine may use such a hint and not update any pixels for the swapchain. However, all other semantics of vkQueuePresentKHR must still be honored, including waiting for semaphores to signal.
5) When the swapchain is created with
preTransform set to a value other than
VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, should the rectangular region,
VkRectLayerKHR, be transformed to align with the
RESOLVED: No. The rectangular region in VkRectLayerKHR should not be transformed. As such, it may not align with the extents of the swapchain’s image(s). It is the responsibility of the presentation engine to transform the rectangular region. This matches the behavior of the Android presentation engine, which set the precedent.
Revision 1, 2016-11-02 (Ian Elliott)
Revision 2, 2021-03-18 (Ian Elliott)
Clarified alignment of rectangles for presentation engines that support transformed swapchains.
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.