Skip to content

Commit ef089a6

Browse files
authored
[Impeller] Make Metal layers readable (flutter#41085)
Resolves flutter/flutter#124612. Doing this would also allow us to remove the final blit on iOS when advanced blends/backdrop filters are present (all of the facilities would remain in place for GLES + Vulkan though).
1 parent 2fbc99f commit ef089a6

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

shell/platform/darwin/ios/ios_surface_metal_impeller.mm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@
6161
layer.drawableSize = drawable_size;
6262
}
6363

64+
// Flutter needs to read from the color attachment in cases where there are effects such as
65+
// backdrop filters. Flutter plugins that create platform views may also read from the layer.
66+
layer.framebufferOnly = NO;
67+
6468
// When there are platform views in the scene, the drawable needs to be presented in the same
6569
// transaction as the one created for platform views. When the drawable are being presented from
6670
// the raster thread, there is no such transaction.

shell/platform/darwin/ios/ios_surface_metal_skia.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555

5656
layer.pixelFormat = MTLPixelFormatBGRA8Unorm;
5757
// Flutter needs to read from the color attachment in cases where there are effects such as
58-
// backdrop filters.
58+
// backdrop filters. Flutter plugins that create platform views may also read from the layer.
5959
layer.framebufferOnly = NO;
6060

6161
const auto drawable_size = CGSizeMake(frame_info.width(), frame_info.height());

0 commit comments

Comments
 (0)