5#ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SWAPCHAIN_AHB_AHB_SWAPCHAIN_IMPL_VK_H_
6#define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_SWAPCHAIN_AHB_AHB_SWAPCHAIN_IMPL_VK_H_
10#include "flutter/fml/closure.h"
11#include "flutter/fml/synchronization/semaphore.h"
30 :
public std::enable_shared_from_this<AHBSwapchainImplVK> {
50 static std::shared_ptr<AHBSwapchainImplVK>
Create(
51 const std::weak_ptr<Context>& context,
52 std::weak_ptr<android::SurfaceControl> surface_control,
55 size_t swapchain_image_count);
93 using AutoSemaSignaler = std::shared_ptr<fml::ScopedCleanupClosure>;
95 std::weak_ptr<android::SurfaceControl> surface_control_;
97 std::shared_ptr<AHBTexturePoolVK> pool_;
98 std::shared_ptr<SwapchainTransientsVK> transients_;
101 Mutex currently_displayed_texture_mutex_;
102 std::shared_ptr<AHBTextureSourceVK> currently_displayed_texture_
103 IPLR_GUARDED_BY(currently_displayed_texture_mutex_);
104 std::shared_ptr<fml::Semaphore> pending_presents_;
105 bool is_valid_ =
false;
108 const std::weak_ptr<Context>& context,
109 std::weak_ptr<android::SurfaceControl> surface_control,
112 size_t swapchain_image_count);
114 bool Present(
const AutoSemaSignaler& signaler,
115 const std::shared_ptr<AHBTextureSourceVK>&
texture);
117 vk::UniqueSemaphore CreateRenderReadySemaphore(
118 const std::shared_ptr<fml::UniqueFD>& fd)
const;
120 bool SubmitWaitForRenderReady(
121 const std::shared_ptr<fml::UniqueFD>& render_ready_fence,
122 const std::shared_ptr<AHBTextureSourceVK>&
texture)
const;
124 std::shared_ptr<ExternalFenceVK> SubmitSignalForPresentReady(
125 const std::shared_ptr<AHBTextureSourceVK>&
texture)
const;
127 void OnTextureUpdatedOnSurfaceControl(
128 const AutoSemaSignaler& signaler,
129 std::shared_ptr<AHBTextureSourceVK>
texture,
130 ASurfaceTransactionStats*
stats);
The implementation of a swapchain at a specific size. Resizes to the surface will cause the instance ...
AHBSwapchainImplVK(const AHBSwapchainImplVK &)=delete
static std::shared_ptr< AHBSwapchainImplVK > Create(const std::weak_ptr< Context > &context, std::weak_ptr< android::SurfaceControl > surface_control, const ISize &size, bool enable_msaa, size_t swapchain_image_count)
Create a swapchain of a specific size whose images will be presented to the provided surface control.
std::unique_ptr< Surface > AcquireNextDrawable()
Acquire the next surface that can be used to present to the swapchain.
const android::HardwareBufferDescriptor & GetDescriptor() const
Get the descriptor used to create the hardware buffers that will be displayed on the surface control.
AHBSwapchainImplVK & operator=(const AHBSwapchainImplVK &)=delete
const ISize & GetSize() const
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
A descriptor use to specify hardware buffer allocations.