diff --git a/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc b/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc index 88d8c4b93a6b0..027c19ddb562b 100644 --- a/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc +++ b/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc @@ -188,7 +188,11 @@ SwapchainImplVK::SwapchainImplVK(const std::shared_ptr& context, caps.maxImageExtent.height), }; swapchain_info.minImageCount = std::clamp( - caps.minImageCount + 1u, caps.minImageCount, caps.maxImageCount); + caps.minImageCount + 1u, // preferred image count + caps.minImageCount, // min count cannot be zero + caps.maxImageCount == 0u ? caps.minImageCount + 1u + : caps.maxImageCount // max zero means no limit + ); swapchain_info.imageArrayLayers = 1u; swapchain_info.imageUsage = vk::ImageUsageFlagBits::eColorAttachment; swapchain_info.preTransform = caps.currentTransform;