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

Launch VizDisplayCompositor on desktop platforms

Project Member Reported by danakj@chromium.org, Jun 6 2017

Issue description

This is a high level bug for shipping the VizDisplayCompositor feature on all desktop (Linux, Windows, Mac) platforms. VizDisplayCompositor moves the display compositor from browser process to GPU process.

Most work items are contained in  crbug.com/787097 , getting VizDisplayCompositor ready to finch trial on desktop platforms, since the feature will be nearly complete at that point.

Other blocking bugs here should be work items that don't strictly block a finch trial but do block a full launch to stable, such as testing or perf concerns.
 
Blockedon: 689696 657959 670710 676384
Components: MUS
Labels: -Type-Bug Type-Feature
Status: Available (was: Untriaged)
Some related things:

https://bugs.chromium.org/p/chromium/issues/detail?id=722935 : Determine Viz Layering
https://bugs.chromium.org/p/chromium/issues/detail?id=711146 : Clarify RendererSettings and Unify between Chrome and Mus

Blockedon: 730213
Blockedon: 601869
Blockedon: 730660
Blockedon: 732507
Project Member

Comment 8 by bugdroid1@chromium.org, Jun 12 2017

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

commit ea6969825e1264bf84d00ead0c7f8e849e06f570
Author: fsamuel <fsamuel@chromium.org>
Date: Mon Jun 12 21:14:32 2017

BrowserMainLoop owns FrameSinkManagerHost

A world with the display compositor in the GPU process is a world
without GpuProcessTransportFactory and ImageTransportFactory.
ImageTransportFactory is a singleton. This CL makes FrameSinkManagerHost
owned by BrowserMainLoop that can be accessed from both content/ and ui/
and does not depend on ImageTransportFactory/GpuProcessTransportFactory.

BUG=730193

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

[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/browser_main_loop.cc
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/browser_main_loop.h
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/compositor/gpu_process_transport_factory.h
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/compositor/surface_utils.cc
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/renderer_host/offscreen_canvas_provider_impl.cc
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/renderer_host/offscreen_canvas_provider_impl.h
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/renderer_host/offscreen_canvas_provider_impl_unittest.cc
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/renderer_host/offscreen_canvas_surface_impl.h
[modify] https://crrev.com/ea6969825e1264bf84d00ead0c7f8e849e06f570/content/browser/renderer_host/render_process_host_impl.cc

Comment 9 by danakj@chromium.org, Jun 12 2017

Blockedon: -689696
Blockedon: -732507
Blocking: 601863
Blockedon: -670710
Blockedon: -601869
Blockedon: 717514
Components: -MUS Internals>MUS
Labels: OS-Linux

Comment 17 by xing...@intel.com, Jun 22 2017

Cc: xing...@intel.com

Comment 18 by fsamuel@google.com, Sep 13 2017

Blockedon: 764732
Blockedon: -676384 -657959
As discussed offline, doesn't sound like issue 657959 or  issue 676384  blocks this work anymore. Updating accordingly.
Blockedon: 770833
Blockedon: 771331
Blockedon: 771336
Blockedon: 771337
Blockedon: 771354
Blockedon: 771357
Blockedon: 771360
Blockedon: 771367
Blockedon: 772524

Comment 29 by fsamuel@google.com, Oct 10 2017

Blocking: 773453

Comment 30 by fsamuel@google.com, Oct 10 2017

Blockedon: -770833

Comment 31 by fsamuel@google.com, Oct 10 2017

Blockedon: -730660
Blockedon: 770833
Summary: Get viz on desktop functioning (was: Get mus-gpu on desktop functioning)
Blockedon: 760181
Blockedon: 760320
Blockedon: -770833
Blockedon: 787097
Blockedon: -772524
Summary: Launch VizDisplayCompositor on desktop platforms (was: Get viz on desktop functioning)
Description: Show this description
Blockedon: -771354
Blocking: -773453
Blockedon: -771336
Blockedon: -771367
Blockedon: -771337
Blockedon: -771360
Blockedon: 717261
Blockedon: 778753
Cc: piman@chromium.org varkha@chromium.org
 Issue 732572  has been merged into this issue.
Blocking: 811979

Comment 51 by piman@chromium.org, Feb 14 2018

Blocking: -811979

Comment 52 by piman@chromium.org, Feb 14 2018

Blockedon: 811979
Blockedon: 812322
Blockedon: 787814
Components: -Internals>MUS Internals>Services>WindowService
Blockedon: 772524
Blockedon: -811979
Blockedon: 813929
Blockedon: 825861
Blockedon: 825906

Comment 61 by sahel@chromium.org, Apr 17 2018

Blocking: 833985
Blockedon: 772576
Blockedon: 837362
Blockedon: -825861
Blockedon: 837669
Blockedon: 775030
Blockedon: 782886
Project Member

Comment 68 by bugdroid1@chromium.org, Jun 19 2018

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

commit 306b51ebfdaaaabccc3fcce55a71209932aa243b
Author: Saman Sami <samans@chromium.org>
Date: Tue Jun 19 17:35:02 2018

Move code from SubmitCompositorFrame to OnFirstSurfaceActivation

Also clean up the code and re-enable
RenderWidgetHostViewGuestSurfaceTest.TestGuestSurface.

Bug: 730193, 844469
Change-Id: I20f17fda6094b1ffb6bbb1482ccd14f6c20175ea
Reviewed-on: https://chromium-review.googlesource.com/1104798
Commit-Queue: Saman Sami <samans@chromium.org>
Reviewed-by: Fady Samuel <fsamuel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568514}
[modify] https://crrev.com/306b51ebfdaaaabccc3fcce55a71209932aa243b/content/browser/browser_plugin/browser_plugin_guest.cc
[modify] https://crrev.com/306b51ebfdaaaabccc3fcce55a71209932aa243b/content/browser/browser_plugin/browser_plugin_guest.h
[modify] https://crrev.com/306b51ebfdaaaabccc3fcce55a71209932aa243b/content/browser/frame_host/render_widget_host_view_guest.cc
[modify] https://crrev.com/306b51ebfdaaaabccc3fcce55a71209932aa243b/content/browser/frame_host/render_widget_host_view_guest.h
[modify] https://crrev.com/306b51ebfdaaaabccc3fcce55a71209932aa243b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
[modify] https://crrev.com/306b51ebfdaaaabccc3fcce55a71209932aa243b/content/browser/renderer_host/render_widget_host_view_child_frame.cc
[modify] https://crrev.com/306b51ebfdaaaabccc3fcce55a71209932aa243b/content/browser/renderer_host/render_widget_host_view_child_frame.h
[modify] https://crrev.com/306b51ebfdaaaabccc3fcce55a71209932aa243b/content/browser/renderer_host/render_widget_host_view_child_frame_unittest.cc

Blockedon: 859168
Blockedon: 860763
Blockedon: 865153
Blockedon: 865597
Blockedon: 835922
Blockedon: 781247
Blockedon: 841801
Blockedon: 845593
Blockedon: -771331
Blockedon: -717261
@samans: In comment #68 you moved the ProcessFrameSwappedCallbacks() call from SubmitCompositorFrame to OnFirstSurfaceActivation. This breaks the documented usage of RegisterFrameSwappedCallback, which is as follows:

  // This functions registers single-use callbacks that want to be notified when
  // the next frame is swapped. The callback is triggered by
  // SubmitCompositorFrame, which is the appropriate time to request pixel
  // readback for the frame that is about to be drawn. Once called, the callback
  // pointer is released.
  // TODO( crbug.com/787941 ): This should be removed because it doesn't work when
  // VIZ display compositing is enabled. The public CopyFromSurface() API does
  // not make guarantees that it will succeed before the first frame is
  // composited.

I understand from the TODO that you plan to remove FrameSwappedCallbacks, but in the mean time perhaps we shouldn't break the contract for this method? Thanks.
Cc: -varkha@chromium.org
Owner: kylec...@chromium.org
Blockedon: 890013
Blockedon: 890767
Blockedon: 778749
Blockedon: 895588
Blockedon: 900564
Blockedon: 900569
Project Member

Comment 87 by bugdroid1@chromium.org, Dec 5

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

commit 73a59e05c556d9bf3f9ac16dfc5f11862f08ab4b
Author: kylechar <kylechar@chromium.org>
Date: Wed Dec 05 15:59:08 2018

Set VizDisplayCompositor feature enabled on desktop platforms.

In preparation for launching OOP-D on stable switch the
VizDisplayCompositor feature from disabled to enabled by default. This
is following with the finch best practices.

OOP-D is still disabled by default on Android and Chrome OS. Android
should get switched over shortly after fixing a few failing tests.
Chrome OS isn't ready to launch yet.

Bug: 730193
Change-Id: I6f55d40492291321d13925dd685181bdfda9f3d2
Reviewed-on: https://chromium-review.googlesource.com/c/1361930
Reviewed-by: Saman Sami <samans@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613979}
[modify] https://crrev.com/73a59e05c556d9bf3f9ac16dfc5f11862f08ab4b/components/viz/common/features.cc

Project Member

Comment 88 by bugdroid1@chromium.org, Dec 5

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

commit 5f44ca54503e75becb625da8004e933a368c6d58
Author: Roger McFarlane <rogerm@chromium.org>
Date: Wed Dec 05 21:37:04 2018

Revert "Set VizDisplayCompositor feature enabled on desktop platforms."

This reverts commit 73a59e05c556d9bf3f9ac16dfc5f11862f08ab4b.

Reason for revert:  crbug.com/912289 

Findit identified the culprit r613979 as introducing flaky test(s)
summarized in https://findit-for-me.appspot.com/waterfall/flake/flake-culprit?key=ag9zfmZpbmRpdC1mb3ItbWVyQwsSDEZsYWtlQ3VscHJpdCIxY2hyb21pdW0vNzNhNTllMDVjNTU2ZDliZjNmOWFjMTZkZmM1ZjExODYyZjA4YWI0Ygw

Original change's description:
> Set VizDisplayCompositor feature enabled on desktop platforms.
> 
> In preparation for launching OOP-D on stable switch the
> VizDisplayCompositor feature from disabled to enabled by default. This
> is following with the finch best practices.
> 
> OOP-D is still disabled by default on Android and Chrome OS. Android
> should get switched over shortly after fixing a few failing tests.
> Chrome OS isn't ready to launch yet.
> 
> Bug: 730193
> Change-Id: I6f55d40492291321d13925dd685181bdfda9f3d2
> Reviewed-on: https://chromium-review.googlesource.com/c/1361930
> Reviewed-by: Saman Sami <samans@chromium.org>
> Commit-Queue: kylechar <kylechar@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#613979}

TBR=kylechar@chromium.org,samans@chromium.org

Change-Id: I55c67764c69656bdbe4dbb58051a8f94e9f9d579
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 730193
Reviewed-on: https://chromium-review.googlesource.com/c/1363808
Reviewed-by: Roger McFarlane <rogerm@chromium.org>
Commit-Queue: Roger McFarlane <rogerm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#614107}
[modify] https://crrev.com/5f44ca54503e75becb625da8004e933a368c6d58/components/viz/common/features.cc

Project Member

Comment 89 by bugdroid1@chromium.org, Dec 13

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

commit f1ef4405b08f701d2bdae9494e0cdf92506de98e
Author: kylechar <kylechar@chromium.org>
Date: Thu Dec 13 13:10:29 2018

Set VizDisplayCompositor feature enabled on desktop platforms.

In preparation for launching OOP-D on stable switch the
VizDisplayCompositor feature from disabled to enabled by default. This
is following with the finch best practices.

This is a reland of https://crrev.com/c/1361930 which was reverted for
flaky tests. Fixes have been landed for the flaky tests.

Bug: 730193
Change-Id: I7dd8869dc942f579a336bca1a2b383a9b2d42a93
Reviewed-on: https://chromium-review.googlesource.com/c/1374207
Reviewed-by: Jonathan Ross <jonross@chromium.org>
Commit-Queue: Jonathan Ross <jonross@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616285}
[modify] https://crrev.com/f1ef4405b08f701d2bdae9494e0cdf92506de98e/components/viz/common/features.cc

Project Member

Comment 90 by bugdroid1@chromium.org, Dec 13

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

commit 1d0245e6c9ca024badf77cebfb2365111d2b52c7
Author: kylechar <kylechar@chromium.org>
Date: Thu Dec 13 14:53:02 2018

Revert "Set VizDisplayCompositor feature enabled on desktop platforms."

This reverts commit f1ef4405b08f701d2bdae9494e0cdf92506de98e.

Reason for revert: Mac timeouts in webkit_layout_tests

Original change's description:
> Set VizDisplayCompositor feature enabled on desktop platforms.
> 
> In preparation for launching OOP-D on stable switch the
> VizDisplayCompositor feature from disabled to enabled by default. This
> is following with the finch best practices.
> 
> This is a reland of https://crrev.com/c/1361930 which was reverted for
> flaky tests. Fixes have been landed for the flaky tests.
> 
> Bug: 730193
> Change-Id: I7dd8869dc942f579a336bca1a2b383a9b2d42a93
> Reviewed-on: https://chromium-review.googlesource.com/c/1374207
> Reviewed-by: Jonathan Ross <jonross@chromium.org>
> Commit-Queue: Jonathan Ross <jonross@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#616285}

TBR=jonross@chromium.org,kylechar@chromium.org

Change-Id: I091b87b72e83d8a99c4da7dd14b026711bbfac23
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 730193
Reviewed-on: https://chromium-review.googlesource.com/c/1375634
Reviewed-by: kylechar <kylechar@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616315}
[modify] https://crrev.com/1d0245e6c9ca024badf77cebfb2365111d2b52c7/components/viz/common/features.cc

Project Member

Comment 91 by bugdroid1@chromium.org, Dec 13

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

commit 5cfdf95659510cd0c5c85de4c94ff9d951b1315a
Author: kylechar <kylechar@chromium.org>
Date: Thu Dec 13 17:00:48 2018

Reland "Set VizDisplayCompositor feature enabled on desktop platforms."

This is a reland of f1ef4405b08f701d2bdae9494e0cdf92506de98eS. Not
enabled on mac as it causes timeouts in webkit_layout_tests.

Original change's description:
> Set VizDisplayCompositor feature enabled on desktop platforms.
>
> In preparation for launching OOP-D on stable switch the
> VizDisplayCompositor feature from disabled to enabled by default. This
> is following with the finch best practices.
>
> This is a reland of https://crrev.com/c/1361930 which was reverted for
> flaky tests. Fixes have been landed for the flaky tests.
>
> Bug: 730193
> Change-Id: I7dd8869dc942f579a336bca1a2b383a9b2d42a93
> Reviewed-on: https://chromium-review.googlesource.com/c/1374207
> Reviewed-by: Jonathan Ross <jonross@chromium.org>
> Commit-Queue: Jonathan Ross <jonross@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#616285}

Bug: 730193
Change-Id: I1eefea03b980e0b3d124e90a0deaa1a583008216
Reviewed-on: https://chromium-review.googlesource.com/c/1375639
Reviewed-by: Jonathan Ross <jonross@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616337}
[modify] https://crrev.com/5cfdf95659510cd0c5c85de4c94ff9d951b1315a/components/viz/common/features.cc

I forgot to include this crbug in the CL description but https://crrev.com/c/1382634 just landed to re-enable mac OOP-D by default.
Status: Assigned (was: Available)
https://chromium-review.googlesource.com/c/chromium/src/+/1374207 appears to break rendering on Fuchsia, most likely because Vulkan-based rasterization isn't yet enabled and Viz can't handle software rasterization with Vulkan compositing.  This is the error message:

[FATAL:scenic_surface_factory.cc(156)] Software output not supported from GPU process
Perhaps we just need to enable gpu rasterization by default on Fuchsia here: https://cs.chromium.org/chromium/src/gpu/config/gpu_finch_features.cc?q=gpu_finch_Features&sq=package:chromium&dr=C&l=20

That configuration also seems to work (gpu rasterization + oop-d compositing).
It's probably worth doing that sooner than later. OOPR depends on that currently I believe which is what vulkan needs.
Ignore comment #95 - I wasn't able to get gpu rasterization + OOP-D to work.

Sign in to add a comment