Use the frame size to cull (flutter/engine#35973)

This commit is contained in:
Dan Field 2022-09-07 16:18:10 -07:00 committed by GitHub
parent df4edae1fa
commit 4f14c3d127
16 changed files with 103 additions and 54 deletions

View File

@ -6,7 +6,6 @@
#include <limits>
#include "flutter/flow/layers/layer.h"
#include "flutter/fml/logging.h"
#include "flutter/fml/trace_event.h"
#include "third_party/skia/include/utils/SkNWayCanvas.h"
@ -16,6 +15,7 @@ namespace flutter {
SurfaceFrame::SurfaceFrame(sk_sp<SkSurface> surface,
FramebufferInfo framebuffer_info,
const SubmitCallback& submit_callback,
SkISize frame_size,
std::unique_ptr<GLContextResult> context_result,
bool display_list_fallback)
: surface_(surface),
@ -26,7 +26,9 @@ SurfaceFrame::SurfaceFrame(sk_sp<SkSurface> surface,
if (surface_) {
canvas_ = surface_->getCanvas();
} else if (display_list_fallback) {
dl_recorder_ = sk_make_sp<DisplayListCanvasRecorder>(kGiantRect);
FML_DCHECK(!frame_size.isEmpty());
dl_recorder_ =
sk_make_sp<DisplayListCanvasRecorder>(SkRect::Make(frame_size));
canvas_ = dl_recorder_.get();
}
}

View File

@ -57,6 +57,7 @@ class SurfaceFrame {
SurfaceFrame(sk_sp<SkSurface> surface,
FramebufferInfo framebuffer_info,
const SubmitCallback& submit_callback,
SkISize frame_size,
std::unique_ptr<GLContextResult> context_result = nullptr,
bool display_list_fallback = false);

View File

@ -13,10 +13,12 @@ TEST(FlowTest, SurfaceFrameDoesNotSubmitInDtor) {
SurfaceFrame::FramebufferInfo framebuffer_info;
auto surface_frame = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) {
/*submit_callback=*/
[](const SurfaceFrame&, SkCanvas*) {
EXPECT_FALSE(true);
return true;
});
},
SkISize::Make(800, 600));
surface_frame.reset();
}
@ -25,6 +27,7 @@ TEST(FlowTest, SurfaceFrameDoesNotHaveEmptyCanvas) {
SurfaceFrame frame(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600),
/*context_result=*/nullptr, /*display_list_fallback=*/true);
EXPECT_FALSE(frame.SkiaCanvas()->getLocalClipBounds().isEmpty());

View File

@ -158,7 +158,8 @@ TEST(RasterizerTest,
auto surface_frame = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled()).WillOnce(Return(true));
EXPECT_CALL(*surface, AcquireFrame(SkISize()))
.WillOnce(Return(ByMove(std::move(surface_frame))));
@ -226,7 +227,8 @@ TEST(
framebuffer_info.supports_readback = true;
auto surface_frame = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled()).WillOnce(Return(true));
EXPECT_CALL(*surface, AcquireFrame(SkISize()))
.WillOnce(Return(ByMove(std::move(surface_frame))));
@ -295,7 +297,8 @@ TEST(
auto surface_frame = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled()).WillOnce(Return(true));
EXPECT_CALL(*surface, AcquireFrame(SkISize()))
.WillOnce(Return(ByMove(std::move(surface_frame))));
@ -361,10 +364,12 @@ TEST(RasterizerTest,
auto surface_frame1 = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
auto surface_frame2 = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled())
.WillRepeatedly(Return(true));
// Prepare two frames for Draw() and DrawLastLayerTree().
@ -580,7 +585,8 @@ TEST(RasterizerTest,
framebuffer_info.supports_readback = true;
auto surface_frame = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, /*framebuffer_info=*/framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled()).WillOnce(Return(true));
ON_CALL(delegate, GetIsGpuDisabledSyncSwitch())
.WillByDefault(Return(is_gpu_disabled_sync_switch));
@ -636,7 +642,8 @@ TEST(
auto surface_frame = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, /*framebuffer_info=*/framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled()).WillOnce(Return(true));
ON_CALL(delegate, GetIsGpuDisabledSyncSwitch())
.WillByDefault(Return(is_gpu_disabled_sync_switch));
@ -693,7 +700,8 @@ TEST(
auto surface_frame = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, /*framebuffer_info=*/framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled()).WillOnce(Return(false));
EXPECT_CALL(delegate, GetIsGpuDisabledSyncSwitch())
.WillOnce(Return(is_gpu_disabled_sync_switch));
@ -749,7 +757,8 @@ TEST(
auto surface_frame = std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, /*framebuffer_info=*/framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; });
/*submit_callback=*/[](const SurfaceFrame&, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled()).WillOnce(Return(false));
EXPECT_CALL(delegate, GetIsGpuDisabledSyncSwitch())
.WillOnce(Return(is_gpu_disabled_sync_switch));
@ -809,9 +818,9 @@ TEST(RasterizerTest,
framebuffer_info.supports_readback = true;
return std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[](const SurfaceFrame& frame, SkCanvas*) {
return true;
});
/*submit_callback=*/
[](const SurfaceFrame& frame, SkCanvas*) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
}));
ON_CALL(*surface, MakeRenderContextCurrent())
.WillByDefault(::testing::Invoke(
@ -987,7 +996,8 @@ TEST(RasterizerTest, presentationTimeSetWhenVsyncTargetInFuture) {
framebuffer_info.supports_readback = true;
return std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[&](const SurfaceFrame& frame, SkCanvas*) {
/*submit_callback=*/
[&](const SurfaceFrame& frame, SkCanvas*) {
const auto pres_time = *frame.submit_info().presentation_time;
const auto diff = pres_time - first_timestamp;
int num_frames_submitted = frames_submitted++;
@ -995,7 +1005,8 @@ TEST(RasterizerTest, presentationTimeSetWhenVsyncTargetInFuture) {
num_frames_submitted * millis_16.ToMilliseconds());
submit_latch.CountDown();
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
}));
ON_CALL(*surface, MakeRenderContextCurrent())
@ -1066,13 +1077,15 @@ TEST(RasterizerTest, presentationTimeNotSetWhenVsyncTargetInPast) {
framebuffer_info.supports_readback = true;
return std::make_unique<SurfaceFrame>(
/*surface=*/nullptr, framebuffer_info,
/*submit_callback=*/[&](const SurfaceFrame& frame, SkCanvas*) {
/*submit_callback=*/
[&](const SurfaceFrame& frame, SkCanvas*) {
const std::optional<fml::TimePoint> pres_time =
frame.submit_info().presentation_time;
EXPECT_EQ(pres_time, std::nullopt);
submit_latch.CountDown();
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
}));
ON_CALL(*surface, MakeRenderContextCurrent())

View File

@ -193,7 +193,8 @@ ShellTestPlatformViewVulkan::OffScreenSurface::AcquireFrame(
framebuffer_info.supports_readback = true;
return std::make_unique<SurfaceFrame>(
std::move(surface), std::move(framebuffer_info), std::move(callback));
std::move(surface), std::move(framebuffer_info), std::move(callback),
/*frame_size=*/SkISize::Make(800, 600));
}
GrDirectContext* ShellTestPlatformViewVulkan::OffScreenSurface::GetContext() {

View File

@ -120,6 +120,7 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceGLImpeller::AcquireFrame(
nullptr, // surface
SurfaceFrame::FramebufferInfo{}, // framebuffer info
submit_callback, // submit callback
size, // frame size
std::move(context_switch), // context result
true // display list fallback
);

View File

@ -229,7 +229,8 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceGLSkia::AcquireFrame(
nullptr, std::move(framebuffer_info),
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
size);
}
const auto root_surface_transformation = GetRootTransformation();
@ -253,7 +254,7 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceGLSkia::AcquireFrame(
framebuffer_info.existing_damage = existing_damage_;
}
return std::make_unique<SurfaceFrame>(surface, std::move(framebuffer_info),
submit_callback,
submit_callback, size,
std::move(context_switch));
}

View File

@ -88,6 +88,7 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceMetalImpeller::AcquireFrame(const SkISiz
return std::make_unique<SurfaceFrame>(nullptr, // surface
SurfaceFrame::FramebufferInfo{}, // framebuffer info
submit_callback, // submit callback
frame_info, // frame size
nullptr, // context result
true // display list fallback
);

View File

@ -95,7 +95,7 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceMetalSkia::AcquireFrame(const SkISize& f
if (!render_to_surface_) {
return std::make_unique<SurfaceFrame>(
nullptr, SurfaceFrame::FramebufferInfo(),
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) { return true; });
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) { return true; }, frame_size);
}
PrecompileKnownSkSLsIfNecessary();
@ -187,7 +187,8 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceMetalSkia::AcquireFrameFromCAMetalLayer(
framebuffer_info.supports_partial_repaint = true;
}
return std::make_unique<SurfaceFrame>(std::move(surface), framebuffer_info, submit_callback);
return std::make_unique<SurfaceFrame>(std::move(surface), framebuffer_info, submit_callback,
frame_info);
}
std::unique_ptr<SurfaceFrame> GPUSurfaceMetalSkia::AcquireFrameFromMTLTexture(
@ -229,7 +230,7 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceMetalSkia::AcquireFrameFromMTLTexture(
framebuffer_info.supports_readback = true;
return std::make_unique<SurfaceFrame>(std::move(surface), std::move(framebuffer_info),
submit_callback);
submit_callback, frame_info);
}
// |Surface|

View File

@ -35,7 +35,8 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceSoftware::AcquireFrame(
nullptr, std::move(framebuffer_info),
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
logical_size);
}
if (!IsValid()) {
@ -73,8 +74,8 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceSoftware::AcquireFrame(
return self->delegate_->PresentBackingStore(surface_frame.SkiaSurface());
};
return std::make_unique<SurfaceFrame>(backing_store,
std::move(framebuffer_info), on_submit);
return std::make_unique<SurfaceFrame>(
backing_store, std::move(framebuffer_info), on_submit, logical_size);
}
// |Surface|

View File

@ -43,7 +43,8 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceVulkan::AcquireFrame(
nullptr, SurfaceFrame::FramebufferInfo(),
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
frame_size);
}
FlutterVulkanImage image = delegate_->AcquireImage(frame_size);
@ -77,8 +78,9 @@ std::unique_ptr<SurfaceFrame> GPUSurfaceVulkan::AcquireFrame(
SurfaceFrame::FramebufferInfo framebuffer_info{.supports_readback = true};
return std::make_unique<SurfaceFrame>(
std::move(surface), std::move(framebuffer_info), std::move(callback));
return std::make_unique<SurfaceFrame>(std::move(surface),
std::move(framebuffer_info),
std::move(callback), frame_size);
}
SkMatrix GPUSurfaceVulkan::GetRootTransformation() const {

View File

@ -326,12 +326,14 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
auto surface_frame_2 = std::make_unique<SurfaceFrame>(
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
auto surface_mock = std::make_unique<SurfaceMock>();
EXPECT_CALL(*surface_mock, AcquireFrame(frame_size))
@ -366,7 +368,8 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
did_submit_frame = true;
}
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
embedder->SubmitFrame(gr_context.get(), std::move(surface_frame));
// Submits frame if no Android view in the current frame.
@ -433,7 +436,8 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
did_submit_frame = true;
}
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
embedder->SubmitFrame(gr_context.get(), std::move(surface_frame));
// Doesn't submit frame if there aren't Android views in the previous frame.
@ -498,7 +502,8 @@ TEST(AndroidExternalViewEmbedder, SubmitFrame) {
did_submit_frame = true;
}
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
embedder->SubmitFrame(gr_context.get(), std::move(surface_frame));
// Submits frame if there are Android views in the previous frame.
EXPECT_TRUE(did_submit_frame);
@ -526,7 +531,8 @@ TEST(AndroidExternalViewEmbedder, SubmitFrameOverlayComposition) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
auto surface_mock = std::make_unique<SurfaceMock>();
EXPECT_CALL(*surface_mock, AcquireFrame(frame_size))
@ -605,7 +611,8 @@ TEST(AndroidExternalViewEmbedder, SubmitFrameOverlayComposition) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) mutable {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
embedder->SubmitFrame(gr_context.get(), std::move(surface_frame));
@ -628,7 +635,8 @@ TEST(AndroidExternalViewEmbedder, SubmitFramePlatformViewWithoutAnyOverlay) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
auto surface_mock = std::make_unique<SurfaceMock>();
EXPECT_CALL(*surface_mock, AcquireFrame(frame_size))
@ -672,7 +680,8 @@ TEST(AndroidExternalViewEmbedder, SubmitFramePlatformViewWithoutAnyOverlay) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) mutable {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
embedder->SubmitFrame(gr_context.get(), std::move(surface_frame));
@ -715,7 +724,8 @@ TEST(AndroidExternalViewEmbedder, DestroyOverlayLayersOnSizeChange) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
auto surface_mock = std::make_unique<SurfaceMock>();
EXPECT_CALL(*surface_mock, AcquireFrame(frame_size))
@ -773,7 +783,8 @@ TEST(AndroidExternalViewEmbedder, DestroyOverlayLayersOnSizeChange) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
embedder->SubmitFrame(gr_context.get(), std::move(surface_frame));
EXPECT_CALL(*jni_mock, FlutterViewEndFrame());
@ -802,7 +813,8 @@ TEST(AndroidExternalViewEmbedder, DoesNotDestroyOverlayLayersOnSizeChange) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
auto surface_mock = std::make_unique<SurfaceMock>();
EXPECT_CALL(*surface_mock, AcquireFrame(frame_size))
@ -859,7 +871,8 @@ TEST(AndroidExternalViewEmbedder, DoesNotDestroyOverlayLayersOnSizeChange) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
embedder->SubmitFrame(gr_context.get(), std::move(surface_frame));
EXPECT_CALL(*jni_mock, FlutterViewEndFrame());
@ -926,7 +939,8 @@ TEST(AndroidExternalViewEmbedder, Teardown) {
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
/*frame_size=*/SkISize::Make(800, 600));
auto surface_mock = std::make_unique<SurfaceMock>();
EXPECT_CALL(*surface_mock, AcquireFrame(frame_size))
@ -969,7 +983,8 @@ TEST(AndroidExternalViewEmbedder, Teardown) {
SurfaceFrame::FramebufferInfo framebuffer_info;
auto surface_frame = std::make_unique<SurfaceFrame>(
SkSurface::MakeNull(1000, 1000), framebuffer_info,
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) { return true; });
[](const SurfaceFrame& surface_frame, SkCanvas* canvas) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
embedder->SubmitFrame(gr_context.get(), std::move(surface_frame));
embedder->EndFrame(/*should_resubmit_frame=*/false, raster_thread_merger);

View File

@ -1851,7 +1851,8 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
flutter::SurfaceFrame::FramebufferInfo framebuffer_info;
auto mock_surface = std::make_unique<flutter::SurfaceFrame>(
nullptr, framebuffer_info,
[](const flutter::SurfaceFrame& surface_frame, SkCanvas* canvas) { return false; });
[](const flutter::SurfaceFrame& surface_frame, SkCanvas* canvas) { return false; },
/*frame_size=*/SkISize::Make(800, 600));
XCTAssertFalse(
flutterPlatformViewsController->SubmitFrame(nullptr, nullptr, std::move(mock_surface)));
@ -1861,7 +1862,8 @@ fml::RefPtr<fml::TaskRunner> CreateNewThread(std::string name) {
flutterPlatformViewsController->CompositeEmbeddedView(2);
auto mock_surface_submit_true = std::make_unique<flutter::SurfaceFrame>(
nullptr, framebuffer_info,
[](const flutter::SurfaceFrame& surface_frame, SkCanvas* canvas) { return true; });
[](const flutter::SurfaceFrame& surface_frame, SkCanvas* canvas) { return true; },
/*frame_size=*/SkISize::Make(800, 600));
XCTAssertTrue(flutterPlatformViewsController->SubmitFrame(nullptr, nullptr,
std::move(mock_surface_submit_true)));
}

View File

@ -36,7 +36,8 @@ std::unique_ptr<flutter::SurfaceFrame> Surface::AcquireFrame(
nullptr, std::move(framebuffer_info),
[](const flutter::SurfaceFrame& surface_frame, SkCanvas* canvas) {
return true;
});
},
size);
}
// |flutter::Surface|

View File

@ -288,7 +288,8 @@ void DrawSimpleFrame(FlatlandExternalViewEmbedder& external_view_embedder,
nullptr, std::make_unique<flutter::SurfaceFrame>(
nullptr, std::move(framebuffer_info),
[](const flutter::SurfaceFrame& surface_frame,
SkCanvas* canvas) { return true; }));
SkCanvas* canvas) { return true; },
frame_size));
}
void DrawFrameWithView(FlatlandExternalViewEmbedder& external_view_embedder,
@ -316,7 +317,8 @@ void DrawFrameWithView(FlatlandExternalViewEmbedder& external_view_embedder,
nullptr, std::make_unique<flutter::SurfaceFrame>(
nullptr, std::move(framebuffer_info),
[](const flutter::SurfaceFrame& surface_frame,
SkCanvas* canvas) { return true; }));
SkCanvas* canvas) { return true; },
frame_size));
}
}; // namespace

View File

@ -462,7 +462,8 @@ void DrawSimpleFrame(GfxExternalViewEmbedder& external_view_embedder,
nullptr, std::make_unique<flutter::SurfaceFrame>(
nullptr, framebuffer_info,
[](const flutter::SurfaceFrame& surface_frame,
SkCanvas* canvas) { return true; }));
SkCanvas* canvas) { return true; },
frame_size));
}
void DrawFrameWithView(GfxExternalViewEmbedder& external_view_embedder,
@ -489,7 +490,8 @@ void DrawFrameWithView(GfxExternalViewEmbedder& external_view_embedder,
nullptr, std::make_unique<flutter::SurfaceFrame>(
nullptr, framebuffer_info,
[](const flutter::SurfaceFrame& surface_frame,
SkCanvas* canvas) { return true; }));
SkCanvas* canvas) { return true; },
frame_size));
}
FramePresentedInfo MakeFramePresentedInfoForOnePresent(