Update to latest ZVulkan

This commit is contained in:
dpjudas 2024-01-26 03:52:38 +01:00
commit d9c896a903
32 changed files with 14799 additions and 6220 deletions

File diff suppressed because it is too large Load diff

View file

@ -1915,6 +1915,12 @@ std::vector<VulkanCompatibleDevice> VulkanDeviceBuilder::FindDevices(const std::
if (sortA != sortB)
return sortA < sortB;
// Any driver that is emulating vulkan (i.e. via Direct3D 12) should only be chosen as the last option within each GPU type
sortA = a.Device->Properties.LayeredDriver.underlyingAPI;
sortB = b.Device->Properties.LayeredDriver.underlyingAPI;
if (sortA != sortB)
return sortA < sortB;
// Then sort by the device's unique ID so that vk_device uses a consistent order
int sortUUID = memcmp(a.Device->Properties.Properties.pipelineCacheUUID, b.Device->Properties.Properties.pipelineCacheUUID, VK_UUID_SIZE);
return sortUUID < 0;

View file

@ -200,11 +200,17 @@ std::vector<VulkanPhysicalDevice> VulkanInstance::GetPhysicalDevices(VkInstance
*next = &dev.Properties.DescriptorIndexing;
next = &dev.Properties.DescriptorIndexing.pNext;
}
if (checkForExtension(VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME))
{
*next = &dev.Properties.LayeredDriver;
next = &dev.Properties.LayeredDriver.pNext;
}
vkGetPhysicalDeviceProperties2(dev.Device, &deviceProperties2);
dev.Properties.Properties = deviceProperties2.properties;
dev.Properties.AccelerationStructure.pNext = nullptr;
dev.Properties.DescriptorIndexing.pNext = nullptr;
dev.Properties.LayeredDriver.pNext = nullptr;
VkPhysicalDeviceFeatures2 deviceFeatures2 = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 };