1// Copyright 2016-2023 The Khronos Group Inc. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5include::{generated}/meta/{refprefix}VK_KHR_device_group.adoc[] 6 7=== Other Extension Metadata 8 9*Last Modified Date*:: 10 2017-10-10 11*IP Status*:: 12 No known IP claims. 13*Interactions and External Dependencies*:: 14 - This extension requires 15 {spirv}/KHR/SPV_KHR_device_group.html[`SPV_KHR_device_group`] 16 - Promoted to Vulkan 1.1 Core 17*Contributors*:: 18 - Jeff Bolz, NVIDIA 19 - Tobias Hector, Imagination Technologies 20 21=== Description 22 23This extension provides functionality to use a logical device that consists 24of multiple physical devices, as created with the 25`apiext:VK_KHR_device_group_creation` extension. 26A device group can allocate memory across the subdevices, bind memory from 27one subdevice to a resource on another subdevice, record command buffers 28where some work executes on an arbitrary subset of the subdevices, and 29potentially present a swapchain image from one or more subdevices. 30 31=== Promotion to Vulkan 1.1 32 33ifdef::VK_KHR_swapchain[] 34The following enums, types and commands are included as interactions with 35`apiext:VK_KHR_swapchain`: 36 37 * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR 38 * ename:VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR 39 * ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR 40 * ename:VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR 41 * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR 42 * ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR 43 * ename:VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR 44 * elink:VkDeviceGroupPresentModeFlagBitsKHR 45 * slink:VkDeviceGroupPresentCapabilitiesKHR 46 * slink:VkImageSwapchainCreateInfoKHR 47 * slink:VkBindImageMemorySwapchainInfoKHR 48 * slink:VkAcquireNextImageInfoKHR 49 * slink:VkDeviceGroupPresentInfoKHR 50 * slink:VkDeviceGroupSwapchainCreateInfoKHR 51 * flink:vkGetDeviceGroupPresentCapabilitiesKHR 52 * flink:vkGetDeviceGroupSurfacePresentModesKHR 53 * flink:vkGetPhysicalDevicePresentRectanglesKHR 54 * flink:vkAcquireNextImage2KHR 55 56If Vulkan 1.1 and `apiext:VK_KHR_swapchain` are supported, these are 57included by `VK_KHR_swapchain`. 58endif::VK_KHR_swapchain[] 59 60The base functionality in this extension is included in core Vulkan 1.1, 61with the KHR suffix omitted. 62The original type, enum and command names are still available as aliases of 63the core functionality. 64 65include::{generated}/interfaces/VK_KHR_device_group.adoc[] 66 67=== New Built-in Variables 68 69 * <<interfaces-builtin-variables-deviceindex,code:DeviceIndex>> 70 71=== New SPIR-V Capabilities 72 73 * <<spirvenv-capabilities-table-DeviceGroup, code:DeviceGroup>> 74 75=== Version History 76 77 * Revision 1, 2016-10-19 (Jeff Bolz) 78 ** Internal revisions 79 * Revision 2, 2017-05-19 (Tobias Hector) 80 ** Removed extended memory bind functions to VK_KHR_bind_memory2, added 81 dependency on that extension, and device-group-specific structs for 82 those functions. 83 * Revision 3, 2017-10-06 (Ian Elliott) 84 ** Corrected Vulkan 1.1 interactions with the WSI extensions. 85 All Vulkan 1.1 WSI interactions are with the VK_KHR_swapchain 86 extension. 87 * Revision 4, 2017-10-10 (Jeff Bolz) 88 ** Rename "`SFR`" bits and structure members to use the phrase "`split 89 instance bind regions`". 90