Surface synchronization: Design and Implement Guttering strategy |
||
Issue descriptionGuttering is a bit subtle with surface synchronization: it's usually determined by the child except on the first frame, in which case it's determined by the parent. For the first frame generated, the parent has a primary SurfaceInfo for the child client, but doesn't have a fallback SurfaceInfo. In that case, it's possible that at aggregation time, a CompositorFrame isn't ready from the child and we need a default behavior. That default behavior is to show a gutter the size of the primary SurfaceDrawQuad instead. The color of that quad should be determined by the parent, defaulting to white, likely. Once a fallback is available, the gutter color will come from the fallback. Two SolidColorDrawQuads will be generated at aggregation time equal to the size of the difference between the primary and fallback surfaces: One for the bottom gutter and one for the right. This is similar to what's done in DelegatedFrameHost today.
,
Sep 19 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/720af21468343b19123f8f883d68c01a8097fafa commit 720af21468343b19123f8f883d68c01a8097fafa Author: Fady Samuel <fsamuel@chromium.org> Date: Tue Sep 19 08:19:25 2017 SurfaceAggregator: Place a SolidColorDrawQuad if surface missing This is a generalization to the 669444 CL. If a fallback SurfaceDrawQuad is provided but the Surface is unavailable at aggregation time then put a SolidColorDrawQuad in its place. For release builds without DCHECK, use the default background color provided by the parent. For DCHECK builds, use Magneta to highlight that this is a bug. Bug: 766013 Change-Id: Ide73d60cd4f47b8e905f5011f67561811cf70aaa Reviewed-on: https://chromium-review.googlesource.com/671158 Reviewed-by: kylechar <kylechar@chromium.org> Commit-Queue: Fady Samuel <fsamuel@chromium.org> Cr-Commit-Position: refs/heads/master@{#502799} [modify] https://crrev.com/720af21468343b19123f8f883d68c01a8097fafa/components/viz/service/display/surface_aggregator.cc [modify] https://crrev.com/720af21468343b19123f8f883d68c01a8097fafa/components/viz/service/display/surface_aggregator_unittest.cc
,
Sep 19 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e494fc874f455309c9b025727b40a837bf713971 commit e494fc874f455309c9b025727b40a837bf713971 Author: Fady Samuel <fsamuel@chromium.org> Date: Tue Sep 19 20:17:42 2017 Simplify transparent backgrounds Prior to this CL, there were two ways to specify transparent backgrounds: 1. LayerTreeHost::SetHasTransparentBackground(true) 2. LayerTreeHost::SetBackgroundColor(SK_ColorTRANSPARENT) The former avoided filling the background of the LayerTreeHost with SolidColorDrawQuads, while the latter would cause transparent gutter in DelegatedFrameHost, and fill the background with *transparent* SolidColorDrawQuads. This CL unifies this into 2. Setting SK_ColorTRANSPARENT as the background color will now avoid generating extra SolidColorDrawQuads. After this CL, guttering can be implemented in Viz based on the background color specified in CompositorFrameMetadata if that color is not Sk_ColorTRANSPARENT. If the color is transparent, like in top level windows in Mus+Ash, the embedder (Ash in this case) will perform the guttering (in order to avoid obscuring the window decorations). Bug: 766013 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Change-Id: Iaca9a230ba42cbd8cf70b8fb833af5e8b5e145ea Reviewed-on: https://chromium-review.googlesource.com/669646 Reviewed-by: Scott Violet <sky@chromium.org> Reviewed-by: Khushal <khushalsagar@chromium.org> Reviewed-by: Alexandre Elias <aelias@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Jeremy Roman <jbroman@chromium.org> Commit-Queue: Fady Samuel <fsamuel@chromium.org> Cr-Commit-Position: refs/heads/master@{#502936} [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/cc/trees/layer_tree_host.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/cc/trees/layer_tree_host.h [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/cc/trees/layer_tree_host_impl.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/cc/trees/layer_tree_host_impl_unittest.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/cc/trees/layer_tree_impl.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/cc/trees/layer_tree_impl.h [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/chrome/browser/android/compositor/compositor_view.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/chromecast/graphics/cast_window_manager_aura.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/content/browser/android/content_view_render_view.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/content/browser/renderer_host/browser_compositor_view_mac.h [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/content/browser/renderer_host/browser_compositor_view_mac.mm [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/content/browser/renderer_host/compositor_impl_android.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/content/browser/renderer_host/compositor_impl_android.h [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/content/browser/renderer_host/render_widget_host_view_mac.mm [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/content/public/browser/android/compositor.h [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/content/renderer/gpu/render_widget_compositor.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.cpp [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/ui/aura/mus/window_tree_host_mus.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/ui/compositor/compositor.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/ui/compositor/compositor.h [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/ui/views/cocoa/bridged_native_widget.mm [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc [modify] https://crrev.com/e494fc874f455309c9b025727b40a837bf713971/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
,
Sep 21 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f994250960da54843339d16c790feb9693c31083 commit f994250960da54843339d16c790feb9693c31083 Author: Fady Samuel <fsamuel@chromium.org> Date: Thu Sep 21 13:43:03 2017 Surface synchronization: Implement gutter in SurfaceAggregator This CL implements gutter in SurfaceAggregator. If the primary surface is unavailable at aggregation time, then SurfaceAggregator will compute the difference in size between the primary and fallback surfaces, and produce two SolidColorDrawQuads (right gutter and bottom gutter) to fill in the space. SurfaceAggregator uses the root_background_color in CompositorFrameMetadata as the fill color for the gutter SolidColorDrawQuads. With this change, we only need to inject gutter in the embedder for top level windows in Mus+Ash. Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Change-Id: Ie2f7c4f1fc610d992f5483f8f5c0fdcea7b2b402 Bug: 766013 Reviewed-on: https://chromium-review.googlesource.com/673274 Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Commit-Queue: Fady Samuel <fsamuel@chromium.org> Cr-Commit-Position: refs/heads/master@{#503433} [modify] https://crrev.com/f994250960da54843339d16c790feb9693c31083/components/viz/service/display/surface_aggregator.cc [modify] https://crrev.com/f994250960da54843339d16c790feb9693c31083/components/viz/service/display/surface_aggregator.h [modify] https://crrev.com/f994250960da54843339d16c790feb9693c31083/components/viz/service/display/surface_aggregator_unittest.cc [modify] https://crrev.com/f994250960da54843339d16c790feb9693c31083/ui/aura/mus/client_surface_embedder.cc [modify] https://crrev.com/f994250960da54843339d16c790feb9693c31083/ui/aura/mus/client_surface_embedder.h [modify] https://crrev.com/f994250960da54843339d16c790feb9693c31083/ui/aura/mus/window_port_mus.cc [modify] https://crrev.com/f994250960da54843339d16c790feb9693c31083/ui/aura/mus/window_tree_client_unittest.cc
,
Nov 7 2017
|
||
►
Sign in to add a comment |
||
Comment 1 by bugdroid1@chromium.org
, Sep 19 2017