19 std::shared_ptr<impeller::Context> context) {
20 if (!context || !context->IsValid()) {
24 auto renderer = std::make_shared<impeller::Renderer>(context);
25 if (!renderer->IsValid()) {
29 auto aiks_context = std::make_shared<impeller::AiksContext>(
31 if (!aiks_context->IsValid()) {
35 impeller_context_ = std::move(context);
36 impeller_renderer_ = std::move(renderer);
37 aiks_context_ = std::move(aiks_context);
58 FML_LOG(
ERROR) <<
"Vulkan surface was asked for an empty frame.";
63 std::unique_ptr<impeller::Surface>
surface = context_vk.AcquireNextSurface();
72 aiks_context = aiks_context_,
81 FML_LOG(
ERROR) <<
"Could not build display list for surface frame.";
86 surface->GetTargetRenderPassDescriptor().GetRenderTargetSize();
88 return renderer->Render(
93#if ENABLE_EXPERIMENTAL_CANVAS
96 display_list->Dispatch(
100 aiks_context->GetContentContext(), render_target,
103 display_list->Dispatch(
107 aiks_context->GetContentContext().GetTransientsBuffer().Reset();
108 aiks_context->GetContentContext()
115 display_list->Dispatch(
120 return aiks_context->Render(picture, render_target,
126 return std::make_unique<SurfaceFrame>(
Performs a first pass over the display list to collect all text frames.
static std::shared_ptr< TypographerContext > Make()