Skip to content

Conversation

@goderbauer
Copy link
Member

@goderbauer goderbauer commented May 22, 2021

Fixes #71008
Fixes #83050
Fixes #58425

@flutter-dashboard flutter-dashboard bot added the framework flutter/packages/flutter repository. See also f: labels. label May 22, 2021
@google-cla google-cla bot added the cla: yes label May 22, 2021
@goderbauer goderbauer requested a review from jonahwilliams May 22, 2021 00:08
@skia-gold
Copy link

Gold has detected about 14 untriaged digest(s) on patchset 1.
View them at https://flutter-gold.skia.org/cl/github/83145

Copy link
Contributor

@jonahwilliams jonahwilliams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Fixing bugs and deleting code, what a PR

Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like a golden threshold is failing, but other than that LGTM.

@skia-gold
Copy link

Gold has detected about 21 new digest(s) on patchset 1.
View them at https://flutter-gold.skia.org/cl/github/83145

@goderbauer goderbauer merged commit 048baa7 into flutter:master Jun 4, 2021
@goderbauer goderbauer deleted the alwaysLayer branch June 4, 2021 00:32
renyou added a commit that referenced this pull request Jun 8, 2021
renyou added a commit that referenced this pull request Jun 8, 2021
@tvolkert
Copy link
Contributor

tvolkert commented Jun 8, 2021

FYI, this was reverted in #84187 because of Google bug b/190453741

@jonahwilliams
Copy link
Contributor

I wonder if this is raster cache related. Maybe we could work around it by pushing some other layer in place of the existing opacity layer - but at least we have benchmarks to check on!

@flar
Copy link
Contributor

flar commented Jun 10, 2021

I wonder if this is raster cache related. Maybe we could work around it by pushing some other layer in place of the existing opacity layer - but at least we have benchmarks to check on!

The layer coming and going basically causes a side effect that the composition of the pictures around the child are disrupted. When the layer is pushed then any Picture currently being built is ended, the children are rendered into their own picture and when they return that Picture is ended and a new one will be created for any content that follows.

When the layer is not pushed, then the preceding children will share a Picture with the children of the animated widget which will also share a Picture with the following children.

I think what we need to ensure is that the previous, descendant, and following content remain isolated regardless of the alpha. Pushing the opacity layer will always ensure this, but it can be managed simply by ensuring that the pictures are broken before and after the children are painted.

It would be even better if this whole sub-tree were treated as a RepaintBoundary - that would make sure that there is no sharing of Picture objects across this widget and also would prevent the changing opacity from causing adjacent children to repaint on either side.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

5 participants