Chromium Code Reviews
DescriptionImplement service-side surface synchronization
This CL introduces the notion of a pending and active CompositorFrame
along with surface dependency tracking and resolution.
An active CompositorFrame is a frame that is a candidate for display. A
CompositorFrame is active if all its surface dependencies are active,
or the display compositor explicitly activated it after some set
deadline.
A pending CompositorFrame is a frame that has unresolved dependencies:
it refers to surface IDs that either do not yet exist in the display
compositor or don't have an active frame.
Surface::QueueFrame determines whether a frame refers to valid surface
IDs or not. If a CompositorFrame has unresolved dependencies then it's
marked as pending and the SurfaceDependencyTracker is asked to track
the resolution of its dependencies. SurfaceDependencyTracker will call
back into the Surface to report when a dependency has been activated.
For the time being (until SurfaceReference work is complete), the first
CompositorFrame submitted with unresolved dependencies will trigger a
global deadline. The deadline will be cleared if all dependencies are
resolved within the alloted time window. If dependencies are not
resolved before the deadline, then SurfaceDependencyTracker will
forcibly activate currently pending frames.
BUG=672962
TBR=reveman@chromium.org for trivial exo change.
TBR=tsepez@chromium.org for minor ipc change.
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel
Review-Url: https://codereview.chromium.org/2676373004
Cr-Commit-Position: refs/heads/master@{#449182}
Committed: https://chromium.googlesource.com/chromium/src/+/cb618a172eafc9c9d902ff7257a8e72d8bb764d7
Patch Set 1 #Patch Set 2 : Rename some things #Patch Set 3 : GetEligibleFrame => GetActiveFrame, HasFrame => HasActiveFrame #Patch Set 4 : Add a bunch of comments. TODO: Cleanup unit tests #Patch Set 5 : DisplayCompositorLockManager => SurfaceDependencyTracker. Added More Comments #
Total comments: 66
Patch Set 6 : respect_deadline => can_activate_without_dependencies #Patch Set 7 : Cleanup SurfaceManager #Patch Set 8 : Fix debug build of Chrome #Patch Set 9 : Addressed Vlad's comments #Patch Set 10 : Fix exo #Patch Set 11 : Fix Windows build and some broken unit tests #Patch Set 12 : Revert SurfaceIdAllocator change for real #Patch Set 13 : Rebase #Patch Set 14 : Use base::flat_set #
Total comments: 34
Patch Set 15 : Addressed Vlad and Rob's comments #Patch Set 16 : Add a missing comment #
Total comments: 1
Patch Set 17 : Better unit test name #
Total comments: 7
Messages
Total messages: 67 (53 generated)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||