-
Notifications
You must be signed in to change notification settings - Fork 6k
Raster cache should preserve RTree for overlay layers #42552
Conversation
cc @cyanglaz as this potentially affects unobstructed platform views on iOS. |
From PR review triage: It looks like this is ready for a review from @flar. |
Layer trees should never be rendered from cache with a PlatformView present (see LayerRasterCacheItem::PrerollFinalize). DisplayList layers will already have an rtree. Does that simplify the implementation here? |
66a2dcb
to
e95b027
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing really wrong in this review, just a couple of options for efficiency and a naming issue.
I have no idea if we should care about checkerboards in this stuff, so I'll leave the answer to that one to you. I will point out that checkerboards are a debugging tool, so performance isn't an issue, but would a developer want to have them on, but still have more precise interaction with their performance overlays?
I rebased my other branch on top of this and it seems to have regressed. Setting to WIP until I figure out why. |
Fixed by properly transforming local r-tree coordinates to screen space. I also updated the test to use a non-identity transform to catch this. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to go except for some typos in one of the comments.
9bf2b8f
to
dc7e36d
Compare
…128959) flutter/engine@9934c0d...48e0b4e 2023-06-15 [email protected] Roll Skia from 0b66c6928dcf to 2d531d020c26 (3 revisions) (flutter/engine#42883) 2023-06-15 [email protected] Raster cache should preserve RTree for overlay layers (flutter/engine#42552) 2023-06-15 [email protected] Roll Skia from c0c74b433117 to 0b66c6928dcf (1 revision) (flutter/engine#42879) 2023-06-15 [email protected] [Linux] Allow BasicMessageChannel sending and responding to null message (flutter/engine#42808) 2023-06-15 [email protected] Roll Skia from 12375fb6f3c8 to c0c74b433117 (1 revision) (flutter/engine#42876) 2023-06-15 [email protected] Roll Skia from d62221bd33a6 to 12375fb6f3c8 (1 revision) (flutter/engine#42873) 2023-06-15 [email protected] Roll Skia from e2e0256d4c6a to d62221bd33a6 (1 revision) (flutter/engine#42871) 2023-06-15 [email protected] Roll Skia from c3abd540c7f9 to e2e0256d4c6a (1 revision) (flutter/engine#42869) 2023-06-15 [email protected] Roll Fuchsia Linux SDK from uvmDF7KM34dWGdsuK... to 53EjCyuRu91oFTBf2... (flutter/engine#42868) 2023-06-15 [email protected] Roll Fuchsia Mac SDK from h3-8RUVrC889UXou7... to P7QA6bfO_Ij5dre7B... (flutter/engine#42867) 2023-06-15 [email protected] Roll Skia from 2718866006d2 to c3abd540c7f9 (1 revision) (flutter/engine#42866) 2023-06-15 [email protected] Roll Skia from 19051bc5fc90 to 2718866006d2 (33 revisions) (flutter/engine#42864) 2023-06-15 [email protected] Roll Dart SDK from 922c315b2c34 to 8eaed3382237 (1 revision) (flutter/engine#42862) 2023-06-15 [email protected] Add missing artifact to the android_arm64_profile config. (flutter/engine#42858) 2023-06-14 [email protected] Build skia with expat (flutter/engine#42859) 2023-06-14 [email protected] [ios] use interfaceOrientation orientation on iOS 13 and above (flutter/engine#42846) 2023-06-14 [email protected] Manual roll Dart SDK from f1387834bfd9 to 922c315b2c34 (4 revisions) (flutter/engine#42855) 2023-06-14 [email protected] [Impeller] Make interleaved layout (more) explicit in generated headers. (flutter/engine#42628) 2023-06-14 [email protected] Renamed validation layers build (flutter/engine#42826) 2023-06-14 [email protected] [ios] view controller based status bar (flutter/engine#42643) 2023-06-14 [email protected] Roll Skia from 6d5dc31d88e2 to 19051bc5fc90 (25 revisions) (flutter/engine#42828) 2023-06-14 [email protected] Roll Fuchsia Linux SDK from Xi3c5nti2LKnEOqYt... to uvmDF7KM34dWGdsuK... (flutter/engine#42842) 2023-06-14 [email protected] Fix generateLockfiles running directory for documentation (flutter/engine#42734) 2023-06-14 [email protected] Roll Fuchsia Mac SDK from Cld7-rm6ZmCOO8j-K... to h3-8RUVrC889UXou7... (flutter/engine#42839) 2023-06-14 [email protected] Roll ANGLE from 7e075469ff02 to 3a3a3c655a96 (8 revisions) (flutter/engine#42834) 2023-06-14 [email protected] Roll Dart SDK from c4e9794df8af to f1387834bfd9 (1 revision) (flutter/engine#42833) Also rolling transitive DEPS: fuchsia/sdk/core/linux-amd64 from Xi3c5nti2LKn to 53EjCyuRu91o fuchsia/sdk/core/mac-amd64 from Cld7-rm6ZmCO to P7QA6bfO_Ij5 If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Fixes flutter/flutter#116069
When raster cache paints to a layer over platform view, it will draw the individual rectangles from the content RTree, to ensure that the destination layer RTree is not clobbered. This is necessary for raster cache to not break unobstructed platform views and/or hit testing.
When raster cache paints in the root (bottom-most) layer the behavior it just copies the entire image as it did before. This is to minimise risk of performance regressions.
Pre-launch Checklist
///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.