From ac6ec5882368a5c055caa4e73c40110c6bb2d759 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Tue, 1 Aug 2023 22:30:04 -0700 Subject: [PATCH] [Impeller] Give a fixed timeout for acquireNextImageKHR. (flutter/engine#44241) Fixes https://github.com/flutter/flutter/issues/131610 Since we're not blocking on presentation, we can have multiple images pending. This is generally good, but for the backpressure from acquireNextImageKHR to be valid it needs to have a finite timeout. Pick a somewhat arbitrary but fairly long ms duration. See also: https://github.com/flutter/flutter/issues/131698 --- .../impeller/renderer/backend/vulkan/swapchain_impl_vk.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/engine/src/flutter/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc b/engine/src/flutter/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc index bb58edb7f31..504f2a538bc 100644 --- a/engine/src/flutter/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc +++ b/engine/src/flutter/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc @@ -343,10 +343,10 @@ SwapchainImplVK::AcquireResult SwapchainImplVK::AcquireNextDrawable() { /// Get the next image index. /// auto [acq_result, index] = context.GetDevice().acquireNextImageKHR( - *swapchain_, // swapchain - std::numeric_limits::max(), // timeout (nanoseconds) - *sync->render_ready, // signal semaphore - nullptr // fence + *swapchain_, // swapchain + 1'000'000'000, // timeout (ns) 1000ms + *sync->render_ready, // signal semaphore + nullptr // fence ); if (acq_result == vk::Result::eSuboptimalKHR) {