| // Copyright 2014-2021 The Khronos Group, Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| [open,refpage='VkPresentRegionsKHR',desc='Structure hint of rectangular regions changed by vkQueuePresentKHR',type='structs'] |
| -- |
| When the `VK_KHR_incremental_present` extension is enabled, additional |
| fields can: be specified that allow an application to specify that only |
| certain rectangular regions of the presentable images of a swapchain are |
| changed. |
| This is an optimization hint that a presentation engine may: use to only |
| update the region of a surface that is actually changing. |
| The application still must: ensure that all pixels of a presented image |
| contain the desired values, in case the presentation engine ignores this |
| hint. |
| An application can: provide this hint by adding a sname:VkPresentRegionsKHR |
| structure to the pname:pNext chain of the sname:VkPresentInfoKHR structure. |
| |
| The sname:VkPresentRegionsKHR structure is defined as: |
| |
| include::{generated}/api/structs/VkPresentRegionsKHR.txt[] |
| |
| * pname:sType is the type of this structure. |
| * pname:pNext is `NULL` or a pointer to a structure extending this |
| structure. |
| * pname:swapchainCount is the number of swapchains being presented to by |
| this command. |
| * pname:pRegions is `NULL` or a pointer to an array of |
| sname:VkPresentRegionKHR elements with pname:swapchainCount entries. |
| If not `NULL`, each element of pname:pRegions contains the region that |
| has changed since the last present to the swapchain in the corresponding |
| entry in the sname:VkPresentInfoKHR::pname:pSwapchains array. |
| |
| .Valid Usage |
| **** |
| * [[VUID-VkPresentRegionsKHR-swapchainCount-01260]] |
| pname:swapchainCount must: be the same value as |
| sname:VkPresentInfoKHR::pname:swapchainCount, where |
| sname:VkPresentInfoKHR is included in the pname:pNext chain of this |
| sname:VkPresentRegionsKHR structure |
| **** |
| |
| include::{generated}/validity/structs/VkPresentRegionsKHR.txt[] |
| -- |
| |
| [open,refpage='VkPresentRegionKHR',desc='Structure containing rectangular region changed by vkQueuePresentKHR for a given VkImage',type='structs'] |
| -- |
| For a given image and swapchain, the region to present is specified by the |
| sname:VkPresentRegionKHR structure, which is defined as: |
| |
| include::{generated}/api/structs/VkPresentRegionKHR.txt[] |
| |
| * pname:rectangleCount is the number of rectangles in pname:pRectangles, |
| or zero if the entire image has changed and should be presented. |
| * pname:pRectangles is either `NULL` or a pointer to an array of |
| sname:VkRectLayerKHR structures. |
| The sname:VkRectLayerKHR structure is the framebuffer coordinates, plus |
| layer, of a portion of a presentable image that has changed and must: be |
| presented. |
| If non-`NULL`, each entry in pname:pRectangles is a rectangle of the |
| given image that has changed since the last image was presented to the |
| given swapchain. |
| The rectangles must: be specified relative to |
| slink:VkSurfaceCapabilitiesKHR::pname:currentTransform, regardless of |
| the swapchain's pname:preTransform. |
| The presentation engine will apply the pname:preTransform transformation |
| to the rectangles, along with any further transformation it applies to |
| the image content. |
| |
| include::{generated}/validity/structs/VkPresentRegionKHR.txt[] |
| -- |
| |
| [open,refpage='VkRectLayerKHR',desc='Structure containing a rectangle, including layer, changed by vkQueuePresentKHR for a given VkImage',type='structs'] |
| -- |
| The sname:VkRectLayerKHR structure is defined as: |
| |
| include::{generated}/api/structs/VkRectLayerKHR.txt[] |
| |
| * pname:offset is the origin of the rectangle, in pixels. |
| * pname:extent is the size of the rectangle, in pixels. |
| * pname:layer is the layer of the image. |
| For images with only one layer, the value of pname:layer must: be 0. |
| |
| Some platforms allow the size of a surface to change, and then scale the |
| pixels of the image to fit the surface. |
| sname:VkRectLayerKHR specifies pixels of the swapchain's image(s), which |
| will be constant for the life of the swapchain. |
| |
| .Valid Usage |
| **** |
| * [[VUID-VkRectLayerKHR-offset-04864]] |
| The sum of pname:offset and pname:extent, after being transformed |
| according to the pname:preTransform member of the |
| slink:VkSwapchainCreateInfoKHR structure, must: be no greater than the |
| pname:imageExtent member of the slink:VkSwapchainCreateInfoKHR structure |
| passed to flink:vkCreateSwapchainKHR |
| * [[VUID-VkRectLayerKHR-layer-01262]] |
| pname:layer must: be less than the pname:imageArrayLayers member of the |
| slink:VkSwapchainCreateInfoKHR structure passed to |
| flink:vkCreateSwapchainKHR |
| **** |
| |
| include::{generated}/validity/structs/VkRectLayerKHR.txt[] |
| -- |