From 540e681454e1a791294488e66173b48faa40fcc6 Mon Sep 17 00:00:00 2001 From: Sasha Szpakowski Date: Sun, 5 Jul 2026 11:11:19 -0300 Subject: [PATCH] vulkan: fix validation errors when VK_EXT_full_screen_exclusive is used --- src/modules/graphics/vulkan/Graphics.cpp | 6 ++++++ src/modules/graphics/vulkan/Graphics.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/modules/graphics/vulkan/Graphics.cpp b/src/modules/graphics/vulkan/Graphics.cpp index 9aacff4a7..76a38dae0 100644 --- a/src/modules/graphics/vulkan/Graphics.cpp +++ b/src/modules/graphics/vulkan/Graphics.cpp @@ -108,6 +108,8 @@ static void checkOptionalInstanceExtensions(OptionalInstanceExtensions& ext) ext.physicalDeviceProperties2 = true; if (strcmp(extension.extensionName, VK_EXT_DEBUG_UTILS_EXTENSION_NAME) == 0) ext.debugInfo = true; + if (strcmp(extension.extensionName, VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME) == 0) + ext.surfaceCapabilities2 = true; } } @@ -160,6 +162,8 @@ Graphics::Graphics() extensions.push_back(VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); if (optionalInstanceExtensions.debugInfo) extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); + if (optionalInstanceExtensions.surfaceCapabilities2) + extensions.push_back(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME); createInfo.enabledExtensionCount = static_cast(extensions.size()); createInfo.ppEnabledExtensionNames = extensions.data(); @@ -1869,6 +1873,8 @@ void Graphics::createLogicalDevice() optionalDeviceExtensions.spirv14 = false; if (optionalDeviceExtensions.spirv14 && deviceApiVersion < VK_API_VERSION_1_1) optionalDeviceExtensions.spirv14 = false; + if (optionalDeviceExtensions.fullscreenExclusive && !optionalInstanceExtensions.surfaceCapabilities2) + optionalDeviceExtensions.fullscreenExclusive = false; VkPhysicalDeviceFeatures deviceFeatures{}; deviceFeatures.samplerAnisotropy = VK_TRUE; diff --git a/src/modules/graphics/vulkan/Graphics.h b/src/modules/graphics/vulkan/Graphics.h index 395cbc259..995b040b8 100644 --- a/src/modules/graphics/vulkan/Graphics.h +++ b/src/modules/graphics/vulkan/Graphics.h @@ -154,6 +154,9 @@ struct OptionalInstanceExtensions // VK_EXT_debug_info bool debugInfo = false; + + // VK_KHR_get_surface_capabilities2 + bool surfaceCapabilities2 = false; }; struct OptionalDeviceExtensions