diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2021-01-04 14:38:35 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2021-01-26 09:57:35 +0100 |
commit | 87ce625b2bb845e41ebb766f43b801d448fed8b5 (patch) | |
tree | 5500b0bce83696cdb48c0f9ba97998892e28458c /src/gui | |
parent | 95d3fe5afa016410580fb995044cf1145c03470a (diff) |
Handle maxImageCount 0 in QVulkanWindow
Take the logic we use in QRhi's Vulkan backend.
Pick-to: 6.0 5.15
Fixes: QTBUG-85791
Change-Id: Ifdc2b3d351af71fbc86e20abcede902303e41fc4
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
(cherry picked from commit f6cb24f4c0f1f48f9010ba78670577ff5643132f)
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/vulkan/qvulkanwindow.cpp | 8 | ||||
-rw-r--r-- | src/gui/vulkan/qvulkanwindow_p.h | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/gui/vulkan/qvulkanwindow.cpp b/src/gui/vulkan/qvulkanwindow.cpp index cb89b0b1e6..cee1f2540f 100644 --- a/src/gui/vulkan/qvulkanwindow.cpp +++ b/src/gui/vulkan/qvulkanwindow.cpp @@ -1043,9 +1043,11 @@ void QVulkanWindowPrivate::recreateSwapChain() VkPhysicalDevice physDev = physDevs.at(physDevIndex); VkSurfaceCapabilitiesKHR surfaceCaps; vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physDev, surface, &surfaceCaps); - uint32_t reqBufferCount = swapChainBufferCount; - if (surfaceCaps.maxImageCount) - reqBufferCount = qBound(surfaceCaps.minImageCount, reqBufferCount, surfaceCaps.maxImageCount); + uint32_t reqBufferCount; + if (surfaceCaps.maxImageCount == 0) + reqBufferCount = qMax<uint32_t>(2, surfaceCaps.minImageCount); + else + reqBufferCount = qMax(qMin<uint32_t>(surfaceCaps.maxImageCount, 3), surfaceCaps.minImageCount); VkExtent2D bufferSize = surfaceCaps.currentExtent; if (bufferSize.width == uint32_t(-1)) { diff --git a/src/gui/vulkan/qvulkanwindow_p.h b/src/gui/vulkan/qvulkanwindow_p.h index 915e359673..336d1f098a 100644 --- a/src/gui/vulkan/qvulkanwindow_p.h +++ b/src/gui/vulkan/qvulkanwindow_p.h @@ -132,7 +132,7 @@ public: // rendering thread will get throttled to the presentation rate (vsync). // This is in effect Example 5 from the VK_KHR_swapchain spec. VkPresentModeKHR presentMode = VK_PRESENT_MODE_FIFO_KHR; - int swapChainBufferCount = 2; + int swapChainBufferCount = 0; int frameLag = 2; QSize swapChainImageSize; |