From 3f55833939be4db0e606b6644263121dd36a4e72 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 14 Apr 2026 16:38:03 +0200 Subject: [PATCH] Fix crash on Vulkan when `vkGetPhysicalDeviceSurfaceFormatsKHR` returns `VK_INCOMPLETE` --- .../Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp b/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp index 1d8625c10..d270ea89e 100644 --- a/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp +++ b/Source/Engine/GraphicsDevice/Vulkan/GPUSwapChainVulkan.cpp @@ -232,11 +232,13 @@ bool GPUSwapChainVulkan::CreateSwapChain(int32 width, int32 height) VkSurfaceFormatKHR result; Platform::MemoryClear(&result, sizeof(result)); { - uint32 surfaceFormatsCount; - VALIDATE_VULKAN_RESULT(vkGetPhysicalDeviceSurfaceFormatsKHR(gpu, _surface, &surfaceFormatsCount, nullptr)); + uint32 surfaceFormatsCount = 0; + vkGetPhysicalDeviceSurfaceFormatsKHR(gpu, _surface, &surfaceFormatsCount, nullptr); Array> surfaceFormats; surfaceFormats.AddZeroed(surfaceFormatsCount); - VALIDATE_VULKAN_RESULT(vkGetPhysicalDeviceSurfaceFormatsKHR(gpu, _surface, &surfaceFormatsCount, surfaceFormats.Get())); + VkResult vkResult = vkGetPhysicalDeviceSurfaceFormatsKHR(gpu, _surface, &surfaceFormatsCount, surfaceFormats.Get()); + if (vkResult != VK_SUCCESS && vkResult != VK_INCOMPLETE) + RenderToolsVulkan::LogVkResult(vkResult, __FILE__, __LINE__); if (resultFormat != PixelFormat::Unknown) {