1// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a 2// Creative Commons Attribution 4.0 International License; see 3// http://creativecommons.org/licenses/by/4.0/ 4 5include::meta/VK_KHR_incremental_present.txt[] 6 7*Last Modified Date*:: 8 2016-11-02 9*IP Status*:: 10 No known IP claims. 11*Contributors*:: 12 - Ian Elliott, Google 13 - Jesse Hall, Google 14 - Alon Or-bach, Samsung 15 - James Jones, NVIDIA 16 - Daniel Rakos, AMD 17 - Ray Smith, ARM 18 - Mika Isojarvi, Google 19 - Jeff Juliano, NVIDIA 20 - Jeff Bolz, NVIDIA 21 22This device extension extends slink:vkQueuePresentKHR, from the 23`<<VK_KHR_swapchain>>` extension, allowing an application to specify a list 24of rectangular, modified regions of each image to present. 25This should be used in situations where an application is only changing a 26small portion of the presentable images within a swapchain, since it enables 27the presentation engine to avoid wasting time presenting parts of the 28surface that haven't changed. 29 30This extension is leveraged from the +EGL_KHR_swap_buffers_with_damage+ 31extension. 32 33=== New Object Types 34 35None. 36 37=== New Enum Constants 38 39 * Extending elink:VkStructureType: 40 ** ename:VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR 41 42=== New Enums 43 44None. 45 46=== New Structures 47 48 * slink:VkRectLayerKHR 49 * slink:VkPresentRegionKHR 50 * slink:VkPresentRegionsKHR 51 52=== New Functions 53 54None. 55 56=== Examples 57 58None. 59 60=== Issues 61 621) How should we handle steroescopic-3D swapchains? We need to add a layer 63for each rectangle. 64One approach is to create another struct that contains the slink:VkRect2D 65plus layer, and have slink:VkPresentRegionsKHR point to an array of that 66struct. 67Another approach is to have two parallel arrays, ptext:pRectangles and 68ptext:pLayers, where ptext:pRectangles[i] and ptext:pLayers[i] must be used 69together. 70Which approach should we use, and if the array of a new structure, what 71should that be called? 72 73*RESOLVED*: Create a new structure, which is a slink:VkRect2D plus a layer, 74and will be called slink:VkRectLayerKHR. 75 762) Where is the origin of the slink:VkRectLayerKHR? 77 78*RESOLVED*: The upper left corner of the presentable image(s) of the 79swapchain, per the definition of framebuffer coordinates. 80 813) Does the rectangular region, slink:VkRectLayerKHR, specify pixels of the 82swapchain's image(s), or of the surface? 83 84*RESOLVED*: Of the image(s). 85Some presentation engines may scale the pixels of a swapchain's image(s) to 86the size of the surface. 87The size of the swapchain's image(s) will be consistent, where the size of 88the surface may vary over time. 89 904) What if all of the rectangles for a given swapchain contain a width 91and/or height of zero? 92 93*RESOLVED*: The application is indicating that no pixels changed since the 94last present. 95The presentation engine may use such a hint and not update any pixels for 96the swapchain. 97However, all other semantics of flink:vkQueuePresentKHR must still be 98honored, including waiting for semaphores to signal. 99 100=== Version History 101 102 * Revision 1, 2016-11-02 (Ian Elliott) 103 - Internal revisions 104