GPU: Ensure Vulkan doesn't pass unsupported feature structures for requested vulkan version (#14662)

This commit is contained in:
Nuno Silva
2025-12-16 01:57:49 +00:00
committed by GitHub
parent 09a2283b53
commit d94cd1efad

View File

@@ -12254,13 +12254,15 @@ static Uint8 VULKAN_INTERNAL_CreateLogicalDevice(
deviceCreateInfo.ppEnabledExtensionNames = deviceExtensions; deviceCreateInfo.ppEnabledExtensionNames = deviceExtensions;
VkPhysicalDeviceFeatures2 featureList; VkPhysicalDeviceFeatures2 featureList;
if (features->usesCustomVulkanOptions) { int minor = VK_VERSION_MINOR(features->desiredApiVersion);
if (features->usesCustomVulkanOptions && minor > 0) {
featureList.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; featureList.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
featureList.features = features->desiredVulkan10DeviceFeatures; featureList.features = features->desiredVulkan10DeviceFeatures;
featureList.pNext = &features->desiredVulkan11DeviceFeatures; featureList.pNext = minor > 1 ? &features->desiredVulkan11DeviceFeatures : NULL;
features->desiredVulkan11DeviceFeatures.pNext = &features->desiredVulkan12DeviceFeatures; features->desiredVulkan11DeviceFeatures.pNext = &features->desiredVulkan12DeviceFeatures;
features->desiredVulkan12DeviceFeatures.pNext = &features->desiredVulkan13DeviceFeatures; features->desiredVulkan12DeviceFeatures.pNext = minor > 2 ? &features->desiredVulkan13DeviceFeatures : NULL;
features->desiredVulkan13DeviceFeatures.pNext = (void *)deviceCreateInfo.pNext; features->desiredVulkan13DeviceFeatures.pNext = NULL;
deviceCreateInfo.pEnabledFeatures = NULL; deviceCreateInfo.pEnabledFeatures = NULL;
deviceCreateInfo.pNext = &featureList; deviceCreateInfo.pNext = &featureList;
} else { } else {