Vulkan Bindless Support Flag Validation Error + GPU Selection Bug
The Bindless Support Flag is something that was found by Justin on 1.3.277 where he was getting this validation error:
VUID-VkDeviceCreateInfo-pNext-02830(ERROR / SPEC): msgNum: 555635515 - Validation Error: [ VUID-VkDeviceCreateInfo-pNext-02830 ] Object 0: handle = 0x25a8407cc70, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0x211e533b | vkCreateDevice(): If the pNext chain includes a VkPhysicalDeviceVulkan12Features structure, then it must not include a VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES structure The Vulkan spec states: If the pNext chain includes a VkPhysicalDeviceVulkan12Features structure, then it must not include a VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceBufferDeviceAddressFeatures, or VkPhysicalDeviceVulkanMemoryModelFeatures structure (https://vulkan.lunarg.com/doc/view/1.3.261.1/windows/1.3-extensions/vkspec.html#VUID-VkDeviceCreateInfo-pNext-02830) Objects: 1 [0] 0x25a8407cc70, type: 1, name: NULL VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02833(ERROR / SPEC): msgNum: 1724500679 - Validation Error: [ VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02833 ] Object 0: handle = 0x25a8407cc70, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0x66c9cac7 | vkCreateDevice(): VK_EXT_descriptor_indexing is enabled but VkPhysicalDeviceVulkan12Features::descriptorIndexing is not VK_TRUE. The Vulkan spec states: If ppEnabledExtensionNames contains "VK_EXT_descriptor_indexing" and the pNext chain includes a VkPhysicalDeviceVulkan12Features structure, then VkPhysicalDeviceVulkan12Features::descriptorIndexing must be VK_TRUE (https://vulkan.lunarg.com/doc/view/1.3.261.1/windows/1.3-extensions/vkspec.html#VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02833) Objects: 1 [0] 0x25a8407cc70, type: 1, name: NULL VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013(ERROR / SPEC): msgNum: -1791811812 - Validation Error: [ VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013 ] | MessageID = 0x95331f1c | vkCreateDescriptorSetLayout(): pBindings[0] can't have VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT for VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER since descriptorBindingPartiallyBound is not enabled. The Vulkan spec states: If VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingPartiallyBound is not enabled, all elements of pBindingFlags must not include VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT (https://vulkan.lunarg.com/doc/view/1.3.261.1/windows/1.3-extensions/vkspec.html#VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013) Objects: 0
and the GPU selection error is due to the addition part of the algorithm not getting reset per GPU which I found because I realized it was selecting the last GPU in the array instead of the best gpu.