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

Issue 686861 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Feature



Sign in to add a comment

OffscreenCanvas should use GpuCompositorFrameSink

Project Member Reported by fsam...@chromium.org, Jan 30 2017

Issue description

In an effort to unify all CompositorFrameSink things, OffscreenCanvasCompositorFrameSink should be replaced with GpuCompositorFrameSink (or perhaps GpuOffscreenCompositorFrameSink) in components/display_compositor allowing OffscreenCanvas to start sharing code with Mus.
 

Comment 1 by enne@chromium.org, Jan 30 2017

Labels: -Type-Bug Type-Feature
Status: Available (was: Untriaged)

Comment 2 by samans@chromium.org, Jan 31 2017

Cc: samans@chromium.org

Comment 3 by xing...@intel.com, Feb 10 2017

Cc: xing...@intel.com
Project Member

Comment 4 by bugdroid1@chromium.org, Feb 15 2017

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

commit ac6bbf510624dc7116c6ad4ce489a42b9e6111aa
Author: xing.xu <xing.xu@intel.com>
Date: Wed Feb 15 01:12:32 2017

Replace OffscreenCanvasSurfaceClient with DisplayCompositorClient

This is part of moving OffscreenCanvas into new display compositor.

BUG= 686861 , 664547 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/cc/ipc/BUILD.gn
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/components/display_compositor/BUILD.gn
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/content/browser/renderer_host/offscreen_canvas_surface_factory_impl.cc
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/content/browser/renderer_host/offscreen_canvas_surface_factory_impl.h
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/content/browser/renderer_host/offscreen_canvas_surface_impl.h
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/content/browser/renderer_host/offscreen_canvas_surface_manager_unittest.cc
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/services/ui/gpu/interfaces/BUILD.gn
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/services/ui/surfaces/BUILD.gn
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/services/ui/ws/BUILD.gn
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.h
[modify] https://crrev.com/ac6bbf510624dc7116c6ad4ce489a42b9e6111aa/third_party/WebKit/public/platform/modules/offscreencanvas/offscreen_canvas_surface.mojom

Project Member

Comment 5 by bugdroid1@chromium.org, Mar 9 2017

Owner: kylec...@chromium.org
Project Member

Comment 7 by bugdroid1@chromium.org, Apr 13 2017

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

commit 30b894d4f8a1c58183749fb7e0982f53dba0ba40
Author: kylechar <kylechar@chromium.org>
Date: Thu Apr 13 12:09:25 2017

Convert offscreen canvas to use FrameSinkManagerHost.

This CL switches the content/browser/ part of offscreen canvas to use
FrameSinkManagerHost instead of directly accessing SurfaceMananger.

OffscreenCanvasProvider(Impl) exists for the renderer to request other
interfaces from the browser. The renderer uses it create both a
OffscreenCanvasSurface and MojoCompositorFrameSink. This is a
simplification of OffscreenCanvasCompositorFrameSinkProvider and
OffscreenCanvasSurfaceFactory interfaces.

RenderProcessHostImpl creates a single OffscreenCanvasProviderImpl on
demand and uses it for all offscreen canvas requests from the renderer.

The renderer will first request a OffscreenCanvasSurface and specify the
FrameSinkId. This always happens from the main renderer thread. A
OffscreenCanvasSurfaceImpl will be created for the browser side of this
connection.

The renderer will then likely request MojoCompositorFrameSink for the
FrameSinkId, from either the main thread or a worker thread. This
request is forwarded to MojoFrameSinkManager. This sets up two
connections. There is a MojoCompositorFrameSink from
MojoFrameSinkManager to the renderer. This is used to submit
CompositorFrames. There is MojoCompositorFrameSinkPrivate from
OffscreenCanvasSurfaceImpl to MojoFrameSinkManager. This gives the
browser control over the CompositorFrameSink created in
MojoFrameSinkManager.

The render can close the OffscreenCanvasSurface and
MojoCompositorFrameSink connections in any order. The assumption is they
will both be closed at approximately the same time.

The remaining direct access to SurfaceManager by offscreen canvas code
is blocked on other features being completed.

BUG= 664547 , 686861 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation

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

[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/BUILD.gn
[delete] https://crrev.com/6044a51d3e0eff211412224d21f62777db7641a4/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc
[delete] https://crrev.com/6044a51d3e0eff211412224d21f62777db7641a4/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.h
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_manager.cc
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_manager.h
[delete] https://crrev.com/6044a51d3e0eff211412224d21f62777db7641a4/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_provider_impl.cc
[delete] https://crrev.com/6044a51d3e0eff211412224d21f62777db7641a4/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink_provider_impl.h
[add] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/renderer_host/offscreen_canvas_provider_impl.cc
[add] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/renderer_host/offscreen_canvas_provider_impl.h
[delete] https://crrev.com/6044a51d3e0eff211412224d21f62777db7641a4/content/browser/renderer_host/offscreen_canvas_surface_factory_impl.cc
[delete] https://crrev.com/6044a51d3e0eff211412224d21f62777db7641a4/content/browser/renderer_host/offscreen_canvas_surface_factory_impl.h
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/renderer_host/offscreen_canvas_surface_impl.h
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/browser/renderer_host/render_process_host_impl.h
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp
[modify] https://crrev.com/30b894d4f8a1c58183749fb7e0982f53dba0ba40/third_party/WebKit/public/platform/modules/offscreencanvas/offscreen_canvas_surface.mojom

Status: Fixed (was: Available)
Blocking: -601863
Components: -Internals>MUS Internals>Services>WindowService

Sign in to add a comment