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

Improve platform views performance #31198

Merged
merged 32 commits into from
Feb 12, 2022
Merged

Improve platform views performance #31198

merged 32 commits into from
Feb 12, 2022

Conversation

blasten
Copy link

@blasten blasten commented Feb 2, 2022

Improves the performance of platform views by rendering to a TextureLayer
while a view is embedded to the Android view hierarchy.

This is possible because a View can be drawn to an arbitrary Canvas.
For example:

SurfaceTexture tx = new SurfaceTexture(0);
Surface surface = new Surface(tx);
FrameLayout view = new FrameLayout(context) {
    @Override
    public void draw(Canvas canvas) {
        final Canvas newCanvas = surface.lockHardwareCanvas();
        try {
            super.draw(newCanvas);
        } finally {
            surface.unlockCanvasAndPost(newCanvas);
        }
    }
}
// use texture in the GPU thread.

Surface#lockHardwareCanvas is available since API level 23.

This PR eliminates the Virtual Display backend implementation, and replaces it
for hybrid composition rendered as a texture layer.

This change should be transparent to clients that rely on Virtual Display implementations.

Next steps

In the current hybrid composition implementation, this change removes the need for
raster synchronization (e.g. thread merging and FlutterImageView).

Issue

flutter/flutter#96679

engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 12, 2022
zanderso added a commit that referenced this pull request Feb 12, 2022
zanderso added a commit that referenced this pull request Feb 13, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 13, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 13, 2022
blasten pushed a commit that referenced this pull request Feb 15, 2022
@blasten blasten deleted the pv branch February 19, 2022 03:06
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
platform-android waiting for tree to go green This PR is approved and tested, but waiting for the tree to be green to land.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants