7 #include "flutter/fml/trace_event.h"
11 #include "third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_enums.hpp"
21 ANativeWindow* window,
22 const vk::UniqueSurfaceKHR& surface,
27 std::make_shared<android::SurfaceControl>(window,
"ImpellerSurface")),
28 enable_msaa_(enable_msaa) {
29 const auto [caps_result, surface_caps] =
32 if (caps_result == vk::Result::eSuccess) {
33 swapchain_image_count_ =
34 std::clamp(surface_caps.minImageCount + 1u,
35 surface_caps.minImageCount,
36 surface_caps.maxImageCount == 0u
37 ? surface_caps.minImageCount + 1u
38 : surface_caps.maxImageCount
49 return impl_ ? impl_->IsValid() :
false;
58 TRACE_EVENT0(
"impeller", __FUNCTION__);
59 return impl_->AcquireNextDrawable();
66 : vk::Format::eUndefined;
71 if (impl_ && impl_->GetSize() == size) {
74 TRACE_EVENT0(
"impeller", __FUNCTION__);
79 swapchain_image_count_
81 if (!impl || !impl->IsValid()) {
85 impl_ = std::move(impl);