// Copyright (c) 2016-2018 Khronos Group. This work is licensed under a // Creative Commons Attribution 4.0 International License; see // http://creativecommons.org/licenses/by/4.0/ include::meta/VK_KHX_device_group.txt[] *Last Modified Date*:: 2017-05-19 *IP Status*:: No known IP claims. *Contributors*:: - Jeff Bolz, NVIDIA - Tobias Hector, Imagination Technologies This extension provides functionality to use a logical device that consists of multiple physical devices, as created with the `<>` 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. === New Object Types None. === New Enum Constants * Extending elink:VkStructureType: ** ename:VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX ** ename:VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX ** ename:VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX ** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX ** ename:VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX * Extending elink:VkImageCreateFlagBits ** ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX * Extending elink:VkPipelineCreateFlagBits ** ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX ** ename:VK_PIPELINE_CREATE_DISPATCH_BASE_KHX * Extending elink:VkDependencyFlagBits ** ename:VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX * Extending elink:VkSwapchainCreateFlagBitsKHR ** ename:VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX === New Enums * slink:VkPeerMemoryFeatureFlagBitsKHX * slink:VkMemoryAllocateFlagBitsKHX * slink:VkDeviceGroupPresentModeFlagBitsKHX === New Structures * slink:VkMemoryAllocateFlagsInfoKHX * slink:VkDeviceGroupRenderPassBeginInfoKHX * slink:VkDeviceGroupCommandBufferBeginInfoKHX * slink:VkDeviceGroupSubmitInfoKHX * slink:VkDeviceGroupBindSparseInfoKHX * slink:VkDeviceGroupPresentCapabilitiesKHX * slink:VkImageSwapchainCreateInfoKHX * slink:VkBindImageMemorySwapchainInfoKHX * slink:VkAcquireNextImageInfoKHX * slink:VkDeviceGroupPresentInfoKHX * slink:VkDeviceGroupSwapchainCreateInfoKHX * slink:VkBindBufferMemoryDeviceGroupInfoKHX * slink:VkBindImageMemoryDeviceGroupInfoKHX === New Functions * flink:vkGetDeviceGroupPeerMemoryFeaturesKHX * flink:vkCmdSetDeviceMaskKHX * flink:vkGetDeviceGroupPresentCapabilitiesKHX * flink:vkGetDeviceGroupSurfacePresentModesKHX * flink:vkAcquireNextImage2KHX * flink:vkCmdDispatchBaseKHX * flink:vkGetPhysicalDevicePresentRectanglesKHX === New Built-In Variables * <> === New SPIR-V Capabilities * <> === Issues None. === Examples TODO === Version History * 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 1, 2016-10-19 (Jeff Bolz) - Internal revisions