Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 30ffbfa

Browse files
[Impeller] finish experimental canvas changes. (#54569)
Make sure the old dispatcher cannot be used if the new dispatcher is enabled. Migrate tests using old canvas to new canvas, mostly to make deleting the old one easier...
1 parent c5d2316 commit 30ffbfa

11 files changed

+331
-309
lines changed

display_list/testing/dl_test_surface_metal.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@ sk_sp<DlPixelData> DlMetalSurfaceProvider::ImpellerSnapshot(
8787
const sk_sp<DisplayList>& list,
8888
int width,
8989
int height) const {
90+
#if EXPERIMENTAL_CANVAS
91+
auto texture = DisplayListToTexture(list, {width, height}, *aiks_context_);
92+
return sk_make_sp<DlMetalPixelData>(
93+
snapshotter_->MakeScreenshot(*aiks_context_, texture));
94+
#else
9095
InitScreenShotter();
9196
impeller::DlDispatcher dispatcher;
9297
dispatcher.drawColor(flutter::DlColor::kTransparent(),
@@ -95,13 +100,19 @@ sk_sp<DlPixelData> DlMetalSurfaceProvider::ImpellerSnapshot(
95100
auto picture = dispatcher.EndRecordingAsPicture();
96101
return sk_make_sp<DlMetalPixelData>(snapshotter_->MakeScreenshot(
97102
*aiks_context_, picture, {width, height}, false));
103+
104+
#endif // EXPERIMENTAL_CANVAS
98105
}
99106

100107
sk_sp<DlImage> DlMetalSurfaceProvider::MakeImpellerImage(
101108
const sk_sp<DisplayList>& list,
102109
int width,
103110
int height) const {
104111
InitScreenShotter();
112+
#if EXPERIMENTAL_CANVAS
113+
return impeller::DlImageImpeller::Make(
114+
DisplayListToTexture(list, {width, height}, *aiks_context_));
115+
#else
105116
impeller::DlDispatcher dispatcher;
106117
dispatcher.drawColor(flutter::DlColor::kTransparent(),
107118
flutter::DlBlendMode::kSrc);
@@ -111,6 +122,8 @@ sk_sp<DlImage> DlMetalSurfaceProvider::MakeImpellerImage(
111122
picture.ToImage(*aiks_context_, {width, height});
112123
std::shared_ptr<impeller::Texture> texture = image->GetTexture();
113124
return impeller::DlImageImpeller::Make(texture);
125+
126+
#endif // EXPERIMENTAL_CANVAS
114127
}
115128

116129
void DlMetalSurfaceProvider::InitScreenShotter() const {

0 commit comments

Comments
 (0)