• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2016-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_device_group.txt[]
6
7*Last Modified Date*::
8    2017-10-06
9*IP Status*::
10    No known IP claims.
11*Interactions and External Dependencies*::
12  - Promoted to Vulkan 1.1 Core
13*Contributors*::
14  - Jeff Bolz, NVIDIA
15  - Tobias Hector, Imagination Technologies
16
17This extension provides functionality to use a logical device that consists
18of multiple physical devices, as created with the
19`<<VK_KHR_device_group_creation>>` extension.
20A device group can allocate memory across the subdevices, bind memory from
21one subdevice to a resource on another subdevice, record command buffers
22where some work executes on an arbitrary subset of the subdevices, and
23potentially present a swapchain image from one or more subdevices.
24
25=== New Object Types
26
27None.
28
29=== New Enum Constants
30
31  * Extending elink:VkStructureType:
32  ** ename:VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR
33  ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR
34  ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR
35  ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR
36  ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR
37ifdef::VK_KHR_swapchain[]
38  ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
39  ** ename:VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
40  ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
41  ** ename:VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
42  ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
43  ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
44endif::VK_KHR_swapchain[]
45  ** ename:VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR
46  ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR
47  * Extending elink:VkImageCreateFlagBits
48  ** ename:VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR
49  * Extending elink:VkPipelineCreateFlagBits
50  ** ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR
51  ** ename:VK_PIPELINE_CREATE_DISPATCH_BASE_KHR
52  * Extending elink:VkDependencyFlagBits
53  ** ename:VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR
54ifdef::VK_KHR_swapchain[]
55  * Extending elink:VkSwapchainCreateFlagBitsKHR
56  ** ename:VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR
57endif::VK_KHR_swapchain[]
58
59=== New Enums
60
61  * elink:VkPeerMemoryFeatureFlagBitsKHR
62  * elink:VkMemoryAllocateFlagBitsKHR
63ifdef::VK_KHR_swapchain[]
64  * elink:VkDeviceGroupPresentModeFlagBitsKHR
65endif::VK_KHR_swapchain[]
66
67=== New Structures
68
69  * slink:VkMemoryAllocateFlagsInfoKHR
70  * slink:VkDeviceGroupRenderPassBeginInfoKHR
71  * slink:VkDeviceGroupCommandBufferBeginInfoKHR
72  * slink:VkDeviceGroupSubmitInfoKHR
73  * slink:VkDeviceGroupBindSparseInfoKHR
74  * slink:VkBindBufferMemoryDeviceGroupInfoKHR
75  * slink:VkBindImageMemoryDeviceGroupInfoKHR
76ifdef::VK_KHR_swapchain[]
77  * slink:VkDeviceGroupPresentCapabilitiesKHR
78  * slink:VkImageSwapchainCreateInfoKHR
79  * slink:VkBindImageMemorySwapchainInfoKHR
80  * slink:VkAcquireNextImageInfoKHR
81  * slink:VkDeviceGroupPresentInfoKHR
82  * slink:VkDeviceGroupSwapchainCreateInfoKHR
83endif::VK_KHR_swapchain[]
84
85=== New Functions
86
87  * flink:vkGetDeviceGroupPeerMemoryFeaturesKHR
88  * flink:vkCmdSetDeviceMaskKHR
89  * flink:vkCmdDispatchBaseKHR
90ifdef::VK_KHR_swapchain[]
91  * flink:vkGetDeviceGroupPresentCapabilitiesKHR
92  * flink:vkGetDeviceGroupSurfacePresentModesKHR
93  * flink:vkGetPhysicalDevicePresentRectanglesKHR
94  * flink:vkAcquireNextImage2KHR
95endif::VK_KHR_swapchain[]
96
97=== New Built-In Variables
98
99  * <<interfaces-builtin-variables-deviceindex,code:DeviceIndex>>
100
101=== New SPIR-V Capabilities
102
103  * <<spirvenv-capabilities,code:DeviceGroup>>
104
105=== Promotion to Vulkan 1.1
106
107ifdef::VK_KHR_swapchain[]
108The following enums, types and commands are included as interactions with
109`<<VK_KHR_swapchain>>`:
110
111  * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
112  * ename:VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
113  * ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
114  * ename:VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
115  * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
116  * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
117  * ename:VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR
118  * elink:VkDeviceGroupPresentModeFlagBitsKHR
119  * slink:VkDeviceGroupPresentCapabilitiesKHR
120  * slink:VkImageSwapchainCreateInfoKHR
121  * slink:VkBindImageMemorySwapchainInfoKHR
122  * slink:VkAcquireNextImageInfoKHR
123  * slink:VkDeviceGroupPresentInfoKHR
124  * slink:VkDeviceGroupSwapchainCreateInfoKHR
125  * flink:vkGetDeviceGroupPresentCapabilitiesKHR
126  * flink:vkGetDeviceGroupSurfacePresentModesKHR
127  * flink:vkGetPhysicalDevicePresentRectanglesKHR
128  * flink:vkAcquireNextImage2KHR
129
130If Vulkan 1.1 and VK_KHR_swapchain are supported, these are included by
131VK_KHR_swapchain.
132endif::VK_KHR_swapchain[]
133
134The base functionality in this extension is included in core Vulkan 1.1,
135with the KHR suffix omitted.
136The original type, enum and command names are still available as aliases of
137the core functionality.
138
139=== Issues
140
141None.
142
143=== Examples
144
145TODO
146
147=== Version History
148
149 * Revision 1, 2016-10-19 (Jeff Bolz)
150   - Internal revisions
151 * Revision 2, 2017-05-19 (Tobias Hector)
152   - Removed extended memory bind functions to VK_KHR_bind_memory2, added
153     dependency on that extension, and device-group-specific structs for
154     those functions.
155 * Revision 3, 2017-10-06 (Ian Elliott)
156   - Corrected Vulkan 1.1 interactions with the WSI extensions.
157     All Vulkan 1.1 WSI interactions are with the VK_KHR_swapchain
158     extension.
159 * Revision 4, 2017-10-10 (Jeff Bolz)
160   - Rename "SFR" bits and structure members to use the phrase "split
161     instance bind regions".
162