From 0471a272bf0ae46b46224d37287b1f3fa9b906ba Mon Sep 17 00:00:00 2001 From: Nuno Silva Date: Mon, 15 Dec 2025 23:44:59 +0000 Subject: [PATCH 1/2] GPU: Ensure Vulkan doesn't pass unsupported feature structures for requested vulkan version --- src/gpu/vulkan/SDL_gpu_vulkan.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c index d61fe578da799..9e393a1949537 100644 --- a/src/gpu/vulkan/SDL_gpu_vulkan.c +++ b/src/gpu/vulkan/SDL_gpu_vulkan.c @@ -12254,12 +12254,14 @@ static Uint8 VULKAN_INTERNAL_CreateLogicalDevice( deviceCreateInfo.ppEnabledExtensionNames = deviceExtensions; 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.features = features->desiredVulkan10DeviceFeatures; - featureList.pNext = &features->desiredVulkan11DeviceFeatures; + featureList.pNext = minor > 1 ? &features->desiredVulkan11DeviceFeatures : (void *)deviceCreateInfo.pNext; features->desiredVulkan11DeviceFeatures.pNext = &features->desiredVulkan12DeviceFeatures; - features->desiredVulkan12DeviceFeatures.pNext = &features->desiredVulkan13DeviceFeatures; + features->desiredVulkan12DeviceFeatures.pNext = minor > 2 ? &features->desiredVulkan13DeviceFeatures : (void *)deviceCreateInfo.pNext; features->desiredVulkan13DeviceFeatures.pNext = (void *)deviceCreateInfo.pNext; deviceCreateInfo.pEnabledFeatures = NULL; deviceCreateInfo.pNext = &featureList; From 03f47320f4a59e0e3277e7cb959aa7d33974dc03 Mon Sep 17 00:00:00 2001 From: Nuno Silva Date: Tue, 16 Dec 2025 00:21:26 +0000 Subject: [PATCH 2/2] GPU: Clear out incorrect feature list pointers --- src/gpu/vulkan/SDL_gpu_vulkan.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c index 9e393a1949537..10798a1d8fe9b 100644 --- a/src/gpu/vulkan/SDL_gpu_vulkan.c +++ b/src/gpu/vulkan/SDL_gpu_vulkan.c @@ -12259,10 +12259,10 @@ static Uint8 VULKAN_INTERNAL_CreateLogicalDevice( if (features->usesCustomVulkanOptions && minor > 0) { featureList.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; featureList.features = features->desiredVulkan10DeviceFeatures; - featureList.pNext = minor > 1 ? &features->desiredVulkan11DeviceFeatures : (void *)deviceCreateInfo.pNext; + featureList.pNext = minor > 1 ? &features->desiredVulkan11DeviceFeatures : NULL; features->desiredVulkan11DeviceFeatures.pNext = &features->desiredVulkan12DeviceFeatures; - features->desiredVulkan12DeviceFeatures.pNext = minor > 2 ? &features->desiredVulkan13DeviceFeatures : (void *)deviceCreateInfo.pNext; - features->desiredVulkan13DeviceFeatures.pNext = (void *)deviceCreateInfo.pNext; + features->desiredVulkan12DeviceFeatures.pNext = minor > 2 ? &features->desiredVulkan13DeviceFeatures : NULL; + features->desiredVulkan13DeviceFeatures.pNext = NULL; deviceCreateInfo.pEnabledFeatures = NULL; deviceCreateInfo.pNext = &featureList; } else {