diff --git a/impeller/renderer/backend/vulkan/surface_context_vk.cc b/impeller/renderer/backend/vulkan/surface_context_vk.cc index 083d02c2b5ac9..a1cddaef6e924 100644 --- a/impeller/renderer/backend/vulkan/surface_context_vk.cc +++ b/impeller/renderer/backend/vulkan/surface_context_vk.cc @@ -69,13 +69,14 @@ bool SurfaceContextVK::SetWindowSurface(vk::UniqueSurfaceKHR surface) { std::unique_ptr SurfaceContextVK::AcquireNextSurface() { TRACE_EVENT0("impeller", __FUNCTION__); auto surface = swapchain_ ? swapchain_->AcquireNextDrawable() : nullptr; - auto pipeline_library = parent_->GetPipelineLibrary(); - if (surface && pipeline_library) { + if (!surface) { + return nullptr; + } + if (auto pipeline_library = parent_->GetPipelineLibrary()) { impeller::PipelineLibraryVK::Cast(*pipeline_library) .DidAcquireSurfaceFrame(); } - auto allocator = parent_->GetResourceAllocator(); - if (allocator) { + if (auto allocator = parent_->GetResourceAllocator()) { allocator->DidAcquireSurfaceFrame(); } return surface; diff --git a/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc b/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc index 7e563241f38bf..d9146d9056291 100644 --- a/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc +++ b/impeller/renderer/backend/vulkan/swapchain_impl_vk.cc @@ -375,15 +375,20 @@ SwapchainImplVK::AcquireResult SwapchainImplVK::AcquireNextDrawable() { nullptr // fence ); - if (acq_result == vk::Result::eErrorOutOfDateKHR) { - return AcquireResult{true /* out of date */}; - } - - if (acq_result != vk::Result::eSuccess && - acq_result != vk::Result::eSuboptimalKHR) { - VALIDATION_LOG << "Could not acquire next swapchain image: " - << vk::to_string(acq_result); - return {}; + switch (acq_result) { + case vk::Result::eSuccess: + // Keep going. + break; + case vk::Result::eSuboptimalKHR: + case vk::Result::eErrorOutOfDateKHR: + // A recoverable error. Just say we are out of date. + return AcquireResult{true /* out of date */}; + break; + default: + // An unrecoverable error. + VALIDATION_LOG << "Could not acquire next swapchain image: " + << vk::to_string(acq_result); + return AcquireResult{false /* out of date */}; } if (index >= images_.size()) {