From d3e0b3c96360dadaf67180a3f3732547be4f5573 Mon Sep 17 00:00:00 2001 From: "Pierre-Loup A. Griffais" Date: Tue, 10 Dec 2019 01:50:16 -0800 Subject: [PATCH] Select a non-SRGB swapchain format to fix washed out colors. Thanks Bas! --- src/rendervulkan.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/rendervulkan.cpp b/src/rendervulkan.cpp index 5eb2c3f..b5d93c6 100644 --- a/src/rendervulkan.cpp +++ b/src/rendervulkan.cpp @@ -621,14 +621,23 @@ int vulkan_init(void) } uint32_t imageCount = surfaceCaps.minImageCount + 1; + uint32_t surfaceFormat = 0; + for ( surfaceFormat = 0; surfaceFormat < formatCount; surfaceFormat++ ) + { + if ( surfaceFormats[ surfaceFormat ].format == VK_FORMAT_B8G8R8A8_UNORM ) + break; + } + + if ( surfaceFormat == formatCount ) + return 0; VkSwapchainCreateInfoKHR createInfo = {}; createInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; createInfo.surface = surface; createInfo.minImageCount = imageCount; - createInfo.imageFormat = surfaceFormats[0].format; - createInfo.imageColorSpace = surfaceFormats[0].colorSpace; + createInfo.imageFormat = surfaceFormats[ surfaceFormat ].format; + createInfo.imageColorSpace = surfaceFormats[surfaceFormat ].colorSpace; createInfo.imageExtent = { g_nOutputWidth, g_nOutputHeight }; createInfo.imageArrayLayers = 1; createInfo.imageUsage = VK_IMAGE_USAGE_STORAGE_BIT; @@ -656,7 +665,7 @@ int vulkan_init(void) createInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; createInfo.image = swapChainImages[ i ]; createInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; - createInfo.format = surfaceFormats[ 0 ].format; + createInfo.format = surfaceFormats[ surfaceFormat ].format; createInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; createInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; createInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY;