-
Notifications
You must be signed in to change notification settings - Fork 6.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
aw: Implement new invalidation heurstic
This CL has to main changes: Add an uncommitted queue to viz::Surface. Uncommitted is a new state before the frame becomes pending. When a frame is submitted it goes to uncommitted queue and go to active or pending on commit. Queue length is limited and CF that doesn't fit are returned to the client. Queue length zero means everything is committed automatically. Hook this up to webview and implement new invalidation heuristic. Key moments: * All renderer embedded clients are forced to be frame behind. This means when we draw for Frame N, we commit their compositor frames for frame N-1. * We start observing begin frames when clients do and keep observing them until we know there is nothing to draw. * On BF we check if there any visible surfaces that had pending activation dependency. In this case we always invalidate, to make sure we embed everything. * If everything if embedded we check if there are uncommitted frames that we didn't invalidate for. If so, we invalidate. * If we got BF when no clients need it and we didn't invalidate we unsubscribe. * If we received new CF while we don't subscribe for BF, we will request BF and invalidate if needed. This is to ensure last frame of slow clients or clients that submit without BF are still drawn. * For overlays we commit frame immediately. Bug: 1233542 Change-Id: Ib6a4dd26b129ad2f022cfd1ccf7ace21b9f7ed94 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3514852 Reviewed-by: Bo Liu <boliu@chromium.org> Commit-Queue: Vasiliy Telezhnikov <vasilyt@chromium.org> Reviewed-by: Kyle Charbonneau <kylechar@chromium.org> Cr-Commit-Position: refs/heads/main@{#1002676}
- Loading branch information
Showing
22 changed files
with
594 additions
and
73 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.