Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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 join this conversation on GitHub. Already have an account? Sign in to comment
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
4 participants