From d94cd1efad89953a360bcd8835a066104da00003 Mon Sep 17 00:00:00 2001
From: Nuno Silva <[EMAIL REDACTED]>
Date: Tue, 16 Dec 2025 01:57:49 +0000
Subject: [PATCH] GPU: Ensure Vulkan doesn't pass unsupported feature
structures for requested vulkan version (#14662)
---
src/gpu/vulkan/SDL_gpu_vulkan.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/gpu/vulkan/SDL_gpu_vulkan.c b/src/gpu/vulkan/SDL_gpu_vulkan.c
index d61fe578da799..10798a1d8fe9b 100644
--- a/src/gpu/vulkan/SDL_gpu_vulkan.c
+++ b/src/gpu/vulkan/SDL_gpu_vulkan.c
@@ -12254,13 +12254,15 @@ 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 : NULL;
features->desiredVulkan11DeviceFeatures.pNext = &features->desiredVulkan12DeviceFeatures;
- features->desiredVulkan12DeviceFeatures.pNext = &features->desiredVulkan13DeviceFeatures;
- 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 {