New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 606053 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug
mus

Blocking:
issue 606056



Sign in to add a comment

Android WebView should use Display compositor for software draws

Project Member Reported by fsam...@chromium.org, Apr 22 2016

Issue description

Currently, in LayerTreeHostImpl, WebView runs in a resourceless draw mode which creates a temporary SoftwareRenderer. As part of the effort to use the display compositor everywhere, WebView should have a CompositorFrameSink that is either in-process or out-of-process and owns a cc::Display that it submits compositorframes to.

 
Blocking: 601863
Components: MUS

Comment 2 by danakj@chromium.org, Apr 22 2016

it will submit software frames to the software cc::Display. hardware frames will go OOP to the parent compositor.

(this all matches current behaviours)
Blocking: 606056

Comment 4 by danakj@chromium.org, Apr 28 2016

Summary: Android WebView should use Display compositor for software draws (was: Android WebView should use Display compositor)

Comment 5 by danakj@chromium.org, Jun 30 2016

Owner: danakj@chromium.org
Status: Started (was: Untriaged)

Comment 6 by danakj@chromium.org, Jun 30 2016

Everything is new and exciting in SynchronousOutputSurface, but I almost have this written, yay.

Bo can you explain fallback ticks? Do they happen while doing a software draw? Can I dcheck there isn't one running, or etc..

Comment 7 by boliu@chromium.org, Jun 30 2016

Fallback tick happens when an invalidate is sent up to the browser, but a real draw from browser does not come back within a timeout. It unblocks the cc scheduler which may be waiting for a frame N to be drawn at least once before committing frame N+1.

The result of the fallback tick is just thrown away in the renderer.

The ideal place to put this would be in the scheduler itself, but having arbitrary timeout seem to suck in cc code rather than webview-only code. Alternative is in synchronous compositor mode, don't wait for first frame to be drawn at all; but that potentially spins frames commit/raster/activation more frequently than having a longer timeout, and I don't have a good sense if that will be a problem in practice.

Comment 8 by boliu@chromium.org, Jun 30 2016

Actually switching to the display compositor would make the fallback tick faster. Just through away the delegated frame and skip the final composite step altogether? Although I don't really know how software composites work..

> Do they happen while doing a software draw? Can I dcheck there isn't one running, or etc..

Not exactly sure what you are asking here. Real draws and fallback tick can't nest.
Project Member

Comment 9 by bugdroid1@chromium.org, Jul 8 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/554c98ac020b61bd06fc498759ae24dfa321fe0f

commit 554c98ac020b61bd06fc498759ae24dfa321fe0f
Author: danakj <danakj@chromium.org>
Date: Fri Jul 08 00:25:07 2016

Use a cc::Display for WebView resourceless software draws.

R=boliu, enne
BUG= 606053 
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
NOTRY=true

Review-Url: https://codereview.chromium.org/2128113002
Cr-Commit-Position: refs/heads/master@{#404272}

[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/ipc/cc_param_traits_macros.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/ipc/compositor_frame_metadata.mojom
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/ipc/compositor_frame_metadata_struct_traits.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/ipc/compositor_frame_metadata_struct_traits.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/ipc/struct_traits_unittest.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/compositor_frame_metadata.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/compositor_frame_metadata.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/delegating_renderer.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/delegating_renderer.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/direct_renderer.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/direct_renderer.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/gl_renderer_unittest.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/overlay_unittest.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/renderer.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/software_renderer.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/software_renderer.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/output/software_renderer_unittest.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/surfaces/display.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/surfaces/display.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/test/fake_output_surface.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/test/pixel_test.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/test/pixel_test.h
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/content/renderer/android/synchronous_compositor_output_surface.cc
[modify] https://crrev.com/554c98ac020b61bd06fc498759ae24dfa321fe0f/content/renderer/android/synchronous_compositor_output_surface.h

Status: Fixed (was: Started)
Project Member

Comment 11 by bugdroid1@chromium.org, Jul 8 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ff780206ab470e7d81df417a082de848a27935b5

commit ff780206ab470e7d81df417a082de848a27935b5
Author: danakj <danakj@chromium.org>
Date: Fri Jul 08 01:07:26 2016

WebView: Immediately ack and return resources for fallback ticks.

R=boliu
BUG= 606053 

Review-Url: https://codereview.chromium.org/2130953002
Cr-Commit-Position: refs/heads/master@{#404290}

[modify] https://crrev.com/ff780206ab470e7d81df417a082de848a27935b5/content/renderer/android/synchronous_compositor_output_surface.cc

Blocking: -601863
Components: -MUS Internals>Services>WindowService

Sign in to add a comment