Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Issue 2811813004: Surface Synchronization: Distinguish between dependencies and references (Closed)

Created:
3 years, 8 months ago by Fady Samuel
Modified:
3 years, 8 months ago
Reviewers:
vmpstr, piman
CC:
chromium-reviews, mlamouri+watch-content_chromium.org, Ian Vollick, jam, jbauman+watch_chromium.org, darin-cc_chromium.org, kalyank, piman+watch_chromium.org, cc-bugs_chromium.org, danakj+watch_chromium.org
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Surface Synchronization: Distinguish between dependencies and references This CL simplifies the relationship between surface synchronization and surface references. With this CL, surface references represent the DAG of surfaces known to the display compositor. In the context of surface synchronization, the reference DAG consists of the set of active CompositorFrames' fallback surface IDs. CompositorFrameMetadata's |embedded_surfaces| field represents surface *dependencies*. A surface dependency is a surface ID that a given CompositorFrame will block on until it is available or a deadline hits. With this CL, surface dependencies and surface references are tracked differently. |embedded_surfaces| represent dependencies whereas |referenced_surfaces| represent surface references. With surface synchronization, a side channel is assumed to exist (e.g. browser => renderer) that allocates a LocalSurfaceId for the child and passes that LocalSurfaceId along to the child. If a child submits a CompositorFrame to the display compositor, a temporary (root) reference, that is then passed along to the window server / browser and then to the parent. The parent can then claim ownership of that reference by embedding it as a fallback surface. In other words, surface synchronization will now use the existing surface reference control flow. It's just the time it takes for a temporary reference to be embedded by a parent might take a little longer due to surface synchronization. Tests have been updated to take into account this change. BUG=672962 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel Review-Url: https://codereview.chromium.org/2811813004 Cr-Commit-Position: refs/heads/master@{#463863} Committed: https://chromium.googlesource.com/chromium/src/+/23724703cfbba977e4628436698c59bdba5c2b05

Patch Set 1 #

Patch Set 2 : More cleanup #

Patch Set 3 : Reverted change in issue 2685393003 #

Patch Set 4 : Replace DisplayCompositorLockingReferencesFromPendingAndActiveFrames with OnlyActiveFramesAffectSur… #

Patch Set 5 : Fix remaining CompositorFrameSinkSupportTests #

Patch Set 6 : Update remaining tests to correspond to new behavior #

Total comments: 8

Patch Set 7 : Addressed Vlad's comments #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+115 lines, -209 lines) Patch
M cc/layers/surface_layer_impl.cc View 1 2 3 4 5 6 2 chunks +3 lines, -2 lines 0 comments Download
M cc/layers/surface_layer_impl_unittest.cc View 1 2 3 4 5 1 chunk +2 lines, -2 lines 0 comments Download
M cc/surfaces/compositor_frame_sink_support.h View 1 1 chunk +1 line, -2 lines 0 comments Download
M cc/surfaces/compositor_frame_sink_support.cc View 1 2 chunks +2 lines, -4 lines 0 comments Download
M cc/surfaces/compositor_frame_sink_support_unittest.cc View 1 2 3 4 8 chunks +55 lines, -87 lines 0 comments Download
M cc/surfaces/pending_frame_observer.h View 1 1 chunk +0 lines, -6 lines 0 comments Download
M cc/surfaces/referenced_surface_tracker.h View 1 chunk +1 line, -2 lines 0 comments Download
M cc/surfaces/referenced_surface_tracker.cc View 2 chunks +1 line, -7 lines 0 comments Download
M cc/surfaces/referenced_surface_tracker_unittest.cc View 9 chunks +12 lines, -23 lines 0 comments Download
M cc/surfaces/surface.h View 1 2 3 4 1 chunk +0 lines, -5 lines 0 comments Download
M cc/surfaces/surface.cc View 1 2 chunks +0 lines, -12 lines 0 comments Download
M cc/surfaces/surface_dependency_tracker.h View 1 1 chunk +0 lines, -4 lines 0 comments Download
M cc/surfaces/surface_dependency_tracker.cc View 1 1 chunk +0 lines, -5 lines 0 comments Download
M cc/surfaces/surface_factory.h View 1 1 chunk +0 lines, -4 lines 0 comments Download
M cc/surfaces/surface_factory.cc View 1 2 3 4 1 chunk +18 lines, -24 lines 0 comments Download
M cc/surfaces/surface_factory_client.h View 1 1 chunk +1 line, -2 lines 0 comments Download
M cc/surfaces/surface_manager.cc View 1 2 2 chunks +8 lines, -8 lines 0 comments Download
M cc/trees/layer_tree_host.cc View 1 chunk +1 line, -1 line 0 comments Download
M cc/trees/layer_tree_host_impl.cc View 1 2 3 4 5 6 1 chunk +7 lines, -6 lines 2 comments Download
M cc/trees/layer_tree_settings.h View 1 chunk +1 line, -1 line 0 comments Download
M content/renderer/gpu/render_widget_compositor.cc View 1 chunk +1 line, -1 line 0 comments Download
M ui/compositor/compositor.cc View 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 37 (27 generated)
Fady Samuel
PTAL Vlad! Thanks!
3 years, 8 months ago (2017-04-11 05:15:37 UTC) #17
vmpstr
Looks good, in your description when you say |embedded_clients|, do you mean |embedded_surfaces| in the ...
3 years, 8 months ago (2017-04-11 18:35:18 UTC) #20
Fady Samuel
Yea, I meant embedded_surfaces not embedded_clients. I've updated the description. Adding piman@...Antoine, please let me ...
3 years, 8 months ago (2017-04-11 19:39:24 UTC) #23
piman
https://codereview.chromium.org/2811813004/diff/120001/cc/trees/layer_tree_host_impl.cc File cc/trees/layer_tree_host_impl.cc (right): https://codereview.chromium.org/2811813004/diff/120001/cc/trees/layer_tree_host_impl.cc#newcode1631 cc/trees/layer_tree_host_impl.cc:1631: } Should we add a reference to the primary ...
3 years, 8 months ago (2017-04-12 00:09:34 UTC) #28
Fady Samuel
https://codereview.chromium.org/2811813004/diff/120001/cc/trees/layer_tree_host_impl.cc File cc/trees/layer_tree_host_impl.cc (right): https://codereview.chromium.org/2811813004/diff/120001/cc/trees/layer_tree_host_impl.cc#newcode1631 cc/trees/layer_tree_host_impl.cc:1631: } On 2017/04/12 00:09:34, piman wrote: > Should we ...
3 years, 8 months ago (2017-04-12 00:19:45 UTC) #29
piman
On Tue, Apr 11, 2017 at 5:19 PM, <fsamuel@chromium.org> wrote: > > https://codereview.chromium.org/2811813004/diff/120001/cc/ > trees/layer_tree_host_impl.cc ...
3 years, 8 months ago (2017-04-12 00:33:21 UTC) #30
piman
Talked in person, I got it now. LGTM.
3 years, 8 months ago (2017-04-12 00:40:08 UTC) #31
Fady Samuel
On 2017/04/12 00:40:08, piman wrote: > Talked in person, I got it now. LGTM. Thanks! ...
3 years, 8 months ago (2017-04-12 00:40:46 UTC) #32
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2811813004/120001
3 years, 8 months ago (2017-04-12 00:41:31 UTC) #34
commit-bot: I haz the power
3 years, 8 months ago (2017-04-12 00:57:04 UTC) #37
Message was sent while issue was closed.
Committed patchset #7 (id:120001) as
https://chromium.googlesource.com/chromium/src/+/23724703cfbba977e4628436698c...

Powered by Google App Engine
This is Rietveld 408576698