// Copyright (c) 2016-2017 The Khronos Group Inc. // Copyright notice at https://www.khronos.org/registry/speccopyright.html [[VK_KHX_device_group_creation]] == VK_KHX_device_group_creation *Name String*:: +VK_KHX_device_group_creation+ *Extension Type*:: Instance extension *Registered Extension Number*:: 71 *Status*:: Draft. *Last Modified Date*:: 2016-10-19 *Revision*:: 1 *IP Status*:: No known IP claims. *Dependencies*:: - This extension is written against version 1.0 of the Vulkan API. *Contributors*:: - Jeff Bolz, NVIDIA *Contacts*:: - Jeff Bolz (jbolz 'at' nvidia.com) This extension provides instance-level commands to enumerate groups of physical devices, and to create a logical device from a subset of one of those groups. Such a logical device can then be used with new features in the VK_KHX_device_group extension. === New Object Types None. === New Enum Constants * Extending elink:VkStructureType: ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX * Extending elink:VkMemoryHeapFlagBits ** ename:VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX === New Enums None. === New Structures * slink:VkPhysicalDeviceGroupPropertiesKHX * slink:VkDeviceGroupDeviceCreateInfoKHX === New Functions * flink:vkEnumeratePhysicalDeviceGroupsKHX === Issues None. === Examples [source,c++] ---------------------------------------- VkDeviceCreateInfo devCreateInfo = { VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO }; // (not shown) fill out devCreateInfo as usual. uint32_t deviceGroupCount = 0; VkPhysicalDeviceGroupPropertiesKHX *props = NULL; // Query the number of device groups vkEnumeratePhysicalDeviceGroupsKHX(g_vkInstance, &deviceGroupCount, NULL); // Allocate and initialize structures to query the device groups props = (VkPhysicalDeviceGroupPropertiesKHX *)malloc(deviceGroupCount*sizeof(VkPhysicalDeviceGroupPropertiesKHX)); for (i = 0; i < deviceGroupCount; ++i) { props[i].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX; props[i].pNext = NULL; } vkEnumeratePhysicalDeviceGroupsKHX(g_vkInstance, &deviceGroupCount, props); // If the first device group has more than one physical device. create // a logical device using all of the physical devices. VkDeviceGroupDeviceCreateInfoKHX deviceGroupInfo = { VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX }; if (props[0].physicalDeviceCount > 1) { deviceGroupInfo.physicalDeviceCount = props[0].physicalDeviceCount; deviceGroupInfo.pPhysicalDevices = props[0].physicalDevices; devCreateInfo.pNext = &deviceGroupInfo; } vkCreateDevice(props[0].physicalDevices[0], &devCreateInfo, NULL, &g_vkDevice); free(props); ---------------------------------------- === Version History * Revision 1, 2016-10-19 (Jeff Bolz) - Internal revisions