• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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