summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2021-01-04 14:38:35 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-01-05 09:23:24 +0000
commit2c3fabfafd6064e0678e52d211da4364e996ad13 (patch)
treee00731b1613a5c07b6fd3b99965255e447775d96 /src/gui
parent1176959b47ef81833998d41b822290d2788f9a4b (diff)
Handle maxImageCount 0 in QVulkanWindow
Take the logic we use in QRhi's Vulkan backend. Fixes: QTBUG-85791 Change-Id: Ifdc2b3d351af71fbc86e20abcede902303e41fc4 Reviewed-by: Andy Nichols <andy.nichols@qt.io> (cherry picked from commit f6cb24f4c0f1f48f9010ba78670577ff5643132f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/vulkan/qvulkanwindow.cpp8
-rw-r--r--src/gui/vulkan/qvulkanwindow_p.h2
2 files changed, 6 insertions, 4 deletions
diff --git a/src/gui/vulkan/qvulkanwindow.cpp b/src/gui/vulkan/qvulkanwindow.cpp
index 8f6d32b89e..c4316d453b 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 da9b5c9ae4..4f0d8f606e 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;