7 #include "flutter/fml/trace_event.h"
11 #include "third_party/vulkan-deps/vulkan-headers/src/include/vulkan/vulkan_enums.hpp"
21 ANativeWindow* window,
27 std::make_shared<android::SurfaceControl>(window,
"ImpellerSurface")),
28 enable_msaa_(enable_msaa),
37 return impl_ ? impl_->IsValid() :
false;
46 TRACE_EVENT0(
"impeller", __FUNCTION__);
47 return impl_->AcquireNextDrawable();
54 : vk::Format::eUndefined;
59 std::shared_ptr<CommandBuffer> cmd_buffer)
const {
60 return impl_->AddFinalCommandBuffer(cmd_buffer);
65 if (impl_ && impl_->GetSize() == size) {
68 TRACE_EVENT0(
"impeller", __FUNCTION__);
75 if (!impl || !impl->IsValid()) {
79 impl_ = std::move(impl);
static std::shared_ptr< AHBSwapchainImplVK > Create(const std::weak_ptr< Context > &context, std::weak_ptr< android::SurfaceControl > surface_control, const CreateTransactionCB &cb, const ISize &size, bool enable_msaa)
Create a swapchain of a specific size whose images will be presented to the provided surface control.
static bool IsAvailableOnPlatform()
void UpdateSurfaceSize(const ISize &size) override
Mark the current swapchain configuration as dirty, forcing it to be recreated on the next frame.
bool IsValid() const override
void AddFinalCommandBuffer(std::shared_ptr< CommandBuffer > cmd_buffer) const override
vk::Format GetSurfaceFormat() const override
~AHBSwapchainVK() override
std::unique_ptr< Surface > AcquireNextDrawable() override
AHBSwapchainVK(const AHBSwapchainVK &)=delete
static bool IsAvailableOnPlatform()
static bool IsAvailableOnPlatform()
std::function< android::SurfaceTransaction()> CreateTransactionCB
constexpr PixelFormat ToPixelFormat(vk::Format format)
constexpr vk::Format ToVKImageFormat(PixelFormat format)