From 322309061d4fcf67fb4e278e18611ab6d1cfc4a5 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sat, 29 Sep 2018 21:28:15 -0400 Subject: [PATCH] Properly choose swapchain image format --- src/renderer.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/renderer.cpp b/src/renderer.cpp index 076074a..c917a42 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -39,6 +39,12 @@ RenderTarget* Renderer::createSurfaceRenderTarget(VkSurfaceKHR surface) { VkSurfaceFormatKHR* surfaceFormats = new VkSurfaceFormatKHR[surfaceFormatCount]; vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice_, surface, &surfaceFormatCount, surfaceFormats); + uint32_t chosenFormat = 0; + for(uint32_t i = 0; i < surfaceFormatCount; i++) { + if(surfaceFormats[i].colorSpace == VK_COLOR_SPACE_SRGB_NONLINEAR_KHR) + chosenFormat = i; + } + VkBool32 supported = false; vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice_, queueIndices.presentation, surface, &supported); @@ -46,8 +52,8 @@ RenderTarget* Renderer::createSurfaceRenderTarget(VkSurfaceKHR surface) { swapchainCreateInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; swapchainCreateInfo.surface = surface; swapchainCreateInfo.minImageCount = surfaceCapabilities.minImageCount; - swapchainCreateInfo.imageColorSpace = surfaceFormats[0].colorSpace; - swapchainCreateInfo.imageFormat = surfaceFormats[0].format; + swapchainCreateInfo.imageColorSpace = surfaceFormats[chosenFormat].colorSpace; + swapchainCreateInfo.imageFormat = surfaceFormats[chosenFormat].format; swapchainCreateInfo.imageExtent = surfaceCapabilities.currentExtent; swapchainCreateInfo.imageArrayLayers = 1; swapchainCreateInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;