| // Copyright 2016-2021 The Khronos Group, Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_KHR_device_group.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2017-10-10 |
| *IP Status*:: |
| No known IP claims. |
| *Interactions and External Dependencies*:: |
| - Promoted to Vulkan 1.1 Core |
| *Contributors*:: |
| - Jeff Bolz, NVIDIA |
| - Tobias Hector, Imagination Technologies |
| |
| === Description |
| |
| This extension provides functionality to use a logical device that consists |
| of multiple physical devices, as created with the |
| `apiext:VK_KHR_device_group_creation` extension. |
| A device group can allocate memory across the subdevices, bind memory from |
| one subdevice to a resource on another subdevice, record command buffers |
| where some work executes on an arbitrary subset of the subdevices, and |
| potentially present a swapchain image from one or more subdevices. |
| |
| === Promotion to Vulkan 1.1 |
| |
| ifdef::VK_KHR_swapchain[] |
| The following enums, types and commands are included as interactions with |
| `apiext:VK_KHR_swapchain`: |
| |
| * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR |
| * ename:VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR |
| * ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR |
| * ename:VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR |
| * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR |
| * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR |
| * ename:VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR |
| * elink:VkDeviceGroupPresentModeFlagBitsKHR |
| * slink:VkDeviceGroupPresentCapabilitiesKHR |
| * slink:VkImageSwapchainCreateInfoKHR |
| * slink:VkBindImageMemorySwapchainInfoKHR |
| * slink:VkAcquireNextImageInfoKHR |
| * slink:VkDeviceGroupPresentInfoKHR |
| * slink:VkDeviceGroupSwapchainCreateInfoKHR |
| * flink:vkGetDeviceGroupPresentCapabilitiesKHR |
| * flink:vkGetDeviceGroupSurfacePresentModesKHR |
| * flink:vkGetPhysicalDevicePresentRectanglesKHR |
| * flink:vkAcquireNextImage2KHR |
| |
| If Vulkan 1.1 and `apiext:VK_KHR_swapchain` are supported, these are |
| included by `VK_KHR_swapchain`. |
| endif::VK_KHR_swapchain[] |
| |
| The base functionality in this extension is included in core Vulkan 1.1, |
| with the KHR suffix omitted. |
| The original type, enum and command names are still available as aliases of |
| the core functionality. |
| |
| include::{generated}/interfaces/VK_KHR_device_group.txt[] |
| |
| === New Built-in Variables |
| |
| * <<interfaces-builtin-variables-deviceindex,code:DeviceIndex>> |
| |
| === New SPIR-V Capabilities |
| |
| * <<spirvenv-capabilities-table-DeviceGroup,code:DeviceGroup>> |
| |
| === Version History |
| |
| * Revision 1, 2016-10-19 (Jeff Bolz) |
| - Internal revisions |
| * Revision 2, 2017-05-19 (Tobias Hector) |
| - Removed extended memory bind functions to VK_KHR_bind_memory2, added |
| dependency on that extension, and device-group-specific structs for |
| those functions. |
| * Revision 3, 2017-10-06 (Ian Elliott) |
| - Corrected Vulkan 1.1 interactions with the WSI extensions. |
| All Vulkan 1.1 WSI interactions are with the VK_KHR_swapchain |
| extension. |
| * Revision 4, 2017-10-10 (Jeff Bolz) |
| - Rename "`SFR`" bits and structure members to use the phrase "`split |
| instance bind regions`". |