-
Notifications
You must be signed in to change notification settings - Fork 29.7k
WIP: Only repaint views that need to be painted #164322
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
Conversation
This comment was marked as outdated.
This comment was marked as outdated.
|
@goderbauer, does this seems like it's going good direction? I haven't had much time to play with it, but on the surface it seems to fix the issue: multiview-fixed.mov |
justinmc
left a comment
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.
The original direct for loop was added in one of @goderbauer's original multiview PRs:
Looking at those lines, it seems reasonable that it was indeed just an oversight I think?
705e9c1 to
8a85763
Compare
d8ac4bc to
8fda595
Compare
This comment was marked as outdated.
This comment was marked as outdated.
|
It looks like this PR breaks both external texture rendering and platform view rendering on Android: If you want instructions on running/debugging these locally: |
|
Golden file changes are available for triage from new commit, Click here to view. For more guidance, visit Writing a golden file test for Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
|
This needs additional work to support external textures.
|
|
I think we'll need to wire We'll also need to make sure that Android embedder calls Stretch goal: |
|
Its sort of a design goal of MarkTextureFrameAvailable that it bypasses the UI thread if possible, to reduce the framerate and workload for android applications with animating platform views. So making that roundtrip back to UI seems like a step backwards. I'm not actually sure why skipping the repaint is causing a black screen though. the engine should happily enough use the previous layer tree. |
|
I think I didn't explain it well. This seems to be the situation with platform views on Android. Instead of just rendering previous layer tree, a frame is scheduled by the embedder. |
|
hmmmmmmm. I guess we could post messages to both raster and UI task but that feels ... hacky. (Honestly the whole external texture interop feels hacky anyway...) |
|
Consider the following example with multiview: View1 has external texture that has new frame but no dirty render objects With this PR, we would only recompose View2, since there are no dirty render objects in View1. |
|
I guess post thread merge, the texture is actually going to be marked dirty on the combined platform/ui thread, so calling back into UI doesn't seem that bad |
|
This pull request executed golden file tests, but it has not been updated in a while (20+ days). Test results from Gold expire after as many days, so this pull request will need to be updated with a fresh commit in order to get results from Gold. For more guidance, visit Writing a golden file test for Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
|
Greetings from stale PR triage! 👋 |
|
There are issues with it. I'll close it for now. |


Fixes #164320
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.