This repository was archived by the owner on Feb 25, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6k
Split DisplayListBuilder into DlCanvas optimizer and DlOp recorder classes #44718
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
It looks like a lot of new code, but really most of it came from just slicing the old DisplayListBuilder in 2 (I hoped to copy from dl_builder.{cc,h} into the 2 new files to get git to see the family resemblance and create diffs along those lines, but I don't think that git-magic was successful). Other things that caused lots of diffs for no great reason:
|
chinmaygarde
approved these changes
Aug 17, 2023
engine-flutter-autoroll
added a commit
to engine-flutter-autoroll/flutter
that referenced
this pull request
Aug 21, 2023
fluttermirroringbot
pushed a commit
to flutter/flutter
that referenced
this pull request
Aug 21, 2023
…132937) flutter/engine@e7d7451...36ab259 2023-08-21 [email protected] Split DisplayListBuilder into DlCanvas optimizer and DlOp recorder classes (flutter/engine#44718) 2023-08-21 [email protected] Roll Skia from d2369dac4a1d to fca8fac08117 (1 revision) (flutter/engine#44888) 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
auto-submit bot
pushed a commit
that referenced
this pull request
Aug 25, 2023
…order classes #44718" (#45085) Fixes: flutter/flutter#133200
8 tasks
gaaclarke
pushed a commit
to gaaclarke/engine
that referenced
this pull request
Aug 30, 2023
…asses (flutter#44718) DisplayListBuilder grew over time from a class that implemented a developer-unfriendly stateful API into one that implemented both the developer-friendly DlCanvas API as well as its original stateful API. Over time, the stateful API was buried under a "testing only" facade. In the meantime, the optimization features that it applies to the DlCanvas calls before it records the operations in a DlOp store are useful without the recording process and so I've been wanting to break those into 2 parts for a while with the goal of removing all stateful APIs from DisplayListBuilder (see flutter/flutter#108303). This PR takes a major step along that direction by splitting DisplayListBuilder into essentially a convenience class that marries 2 new classes together to achieve its old functionality: - `DlCanvasToReceiver` - a class that implements DlCanvas, optimizes common situations, and then sends commands to any object that implements `DlOpReceiver` - `DlOpRecorder` - an implementation of DlOpReceiver that records the operations in a buffer from which to create a `DisplayList` object - `DisplayListBuilder` now inherits from DlCanvasToReceiver to get the optimizations and provides it with an instance of `DlOpRecorder` as the receiver that it will send its results to - Similarly, a `DlCanvasToReceiver` instance could be directed to an `impeller:DlDispatcher` to achieve a more straight-through path from the DlCanvas interface to impeller Pictures.
gaaclarke
pushed a commit
to gaaclarke/engine
that referenced
this pull request
Aug 30, 2023
…order classes" (flutter#44968) Reverts flutter#44718 A rendering issue was discovered in internal testing (b/296975714)
gaaclarke
pushed a commit
to gaaclarke/engine
that referenced
this pull request
Aug 30, 2023
zanderso
added a commit
to zanderso/engine
that referenced
this pull request
Aug 31, 2023
…DlOp recorder classes flutter#44718" (flutter#45085)" This reverts commit 1382d6d.
XilaiZhang
added a commit
to XilaiZhang/engine
that referenced
this pull request
Sep 11, 2023
…DlOp recorder classes flutter#44718" (flutter#45085)" This reverts commit 1382d6d.
XilaiZhang
added a commit
to XilaiZhang/engine
that referenced
this pull request
Sep 11, 2023
…DlOp recorder classes flutter#44718" (flutter#45085)" This reverts commit 1382d6d.
XilaiZhang
added a commit
that referenced
this pull request
Sep 11, 2023
XilaiZhang
added a commit
that referenced
this pull request
Sep 11, 2023
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
DisplayListBuilder grew over time from a class that implemented a developer-unfriendly stateful API into one that implemented both the developer-friendly DlCanvas API as well as its original stateful API. Over time, the stateful API was buried under a "testing only" facade.
In the meantime, the optimization features that it applies to the DlCanvas calls before it records the operations in a DlOp store are useful without the recording process and so I've been wanting to break those into 2 parts for a while with the goal of removing all stateful APIs from DisplayListBuilder (see flutter/flutter#108303).
This PR takes a major step along that direction by splitting DisplayListBuilder into essentially a convenience class that marries 2 new classes together to achieve its old functionality:
DlCanvasToReceiver
- a class that implements DlCanvas, optimizes common situations, and then sends commands to any object that implementsDlOpReceiver
DlOpRecorder
- an implementation of DlOpReceiver that records the operations in a buffer from which to create aDisplayList
objectDisplayListBuilder
now inherits from DlCanvasToReceiver to get the optimizations and provides it with an instance ofDlOpRecorder
as the receiver that it will send its results toDlCanvasToReceiver
instance could be directed to animpeller:DlDispatcher
to achieve a more straight-through path from the DlCanvas interface to impeller Pictures.