diff --git a/shell/platform/darwin/ios/ios_surface_metal_impeller.mm b/shell/platform/darwin/ios/ios_surface_metal_impeller.mm index 1aba7895cb2f3..31dcd7a5e99aa 100644 --- a/shell/platform/darwin/ios/ios_surface_metal_impeller.mm +++ b/shell/platform/darwin/ios/ios_surface_metal_impeller.mm @@ -48,6 +48,12 @@ if (!CGSizeEqualToSize(drawable_size, layer.drawableSize)) { layer.drawableSize = drawable_size; } + + // When there are platform views in the scene, the drawable needs to be presented in the same + // transaction as the one created for platform views. When the drawable are being presented from + // the raster thread, there is no such transaction. + layer.presentsWithTransaction = [[NSThread currentThread] isMainThread]; + return layer; }