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

Issue 670364 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

GpuCompositorFrameSink should take in an optional cc::mojom::DisplayPrivateRequest

Project Member Reported by fsam...@chromium.org, Dec 1 2016

Issue description

ContextFactory needs to be able to talk to a cc::Display directly in some cases:

ContextFactory::SetDisplayVisible
ContextFactory::ResizeDisplay

for example.

We can put these potentially in a cc::mojom::DisplayPrivate interface that is passed along with CreateCompositorFrameSink.
 
Blocking: 601863
The longer term implication of this this CompositorFrameSink(Support) has a cc::Display. PerCompositorData moves into CompositorFrameSink(Support) basically and ContextFactory holds a MojoCompositorFrameSinkPrivatePtr for each ui::Compositor instead of PerCompositorData.
Blocking:
Components: MUS
Labels: displaycompositor
Stepping back a bit: Mus clients still use ContextFactory. ContextFactory should not know about cc::Display or even be able to call methods on cc::Display.

In a Mus world, only the window server (browser) should be able to manipulate the cc::Display via mojo.

Most of ContextFactory consists of privileged APIs that should not be used by clients. 

Comment 5 by staraz@chromium.org, Dec 12 2016

Owner: staraz@chromium.org
Status: Assigned (was: Untriaged)
We definitely need a Display mojo interface. I'm now thinking we need to split DisplayCompositor's API into two methods:

DisplayCompositor::CreateOffscreenCompositorFrameSink, and DisplayCompositor::CreateDisplayCompositorFrameSink.

CreateDisplayCompositorFrameSink takes in a SurfaceHandle and Display interface.

Ordering might be critical here between the CompositorFrameSink and Display interface, so they might need to be associated interfaces.

Cc: kylec...@chromium.org
The DisplayPrivatePtr will probably live on ServerWindowCompositorFrameSinkManager (I hate that name, we can rename later). FrameGenerator might make use of it perhaps for setting Colorspace and such: kylechar@ for more info. This will allow us to set display-specific settings from FrameGenerator or elsewhere...whatever makes sense. 
Project Member

Comment 8 by bugdroid1@chromium.org, Dec 15 2016

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

commit 2bed325a1f295c76f23182a8824847dd8fd60c4b
Author: staraz <staraz@chromium.org>
Date: Thu Dec 15 16:10:42 2016

Split cc::mojom::DisplayCompositor::CreateCompositorFrameSink() into CreateDisplayCompositorFrameSink() and CreateOffscreenCompositorFrameSink()

This is step one towards having a cc::Display mojo interface.

After this, a mojo interface for cc::Display will be added and
CreateDisplayCompositorFrameSink will take the interface as a parameter.

BUG= 670364 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/cc/ipc/display_compositor.mojom
[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/services/ui/surfaces/display_compositor.cc
[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/services/ui/surfaces/display_compositor.h
[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/services/ui/ws/frame_generator.cc
[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/services/ui/ws/server_window.cc
[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/services/ui/ws/server_window.h
[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/services/ui/ws/server_window_compositor_frame_sink_manager.cc
[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/services/ui/ws/server_window_compositor_frame_sink_manager.h
[modify] https://crrev.com/2bed325a1f295c76f23182a8824847dd8fd60c4b/services/ui/ws/window_tree.cc

Comment 9 by staraz@chromium.org, Dec 15 2016

Status: Started (was: Assigned)
Project Member

Comment 10 by bugdroid1@chromium.org, Dec 19 2016

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

commit e27afd717cd6d79d614cdfa3cfb202f12f169ddc
Author: staraz <staraz@chromium.org>
Date: Mon Dec 19 17:56:27 2016

Fixed bugs in ColorSpace typemap

Fixed typo in color_space.typemap

Added color_space.typemap to typemaps.gni

BUG= 670364 

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

[modify] https://crrev.com/e27afd717cd6d79d614cdfa3cfb202f12f169ddc/ui/gfx/mojo/color_space.typemap
[modify] https://crrev.com/e27afd717cd6d79d614cdfa3cfb202f12f169ddc/ui/gfx/typemaps.gni

Project Member

Comment 11 by bugdroid1@chromium.org, Dec 21 2016

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

commit dc7e15988c2612f4bdd66e29b238a4eb3fce5cee
Author: staraz <staraz@chromium.org>
Date: Wed Dec 21 20:03:45 2016

GpuCompositorFrameSink implements cc::mojom::DisplayPrivate

Added DisplayPrivate mojo interface to hide cc::Display from ContextFactory.

The intent of this change is to content mus-ws with mus-gpu for cc::Display
operations.

ColorSpace and OutputIsSecure and so on is passed along from display management
code which resides in Mus-ws. cc::Display lives in mus-gpu and so we need a mojo
interface for cc::Display.

Currently ash talks to cc::Display through ContextFactoryPrivate. This mojo
interface would eventually replace ContextFactoryPrivate or would be used by
ContextFactoryPrivate.

BUG= 670364 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

TBR=danakj@chromium.org

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

[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/cc/ipc/BUILD.gn
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/cc/ipc/display_compositor.mojom
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/cc/surfaces/compositor_frame_sink_support.h
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/surfaces/display_compositor.cc
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/surfaces/display_compositor.h
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/surfaces/gpu_compositor_frame_sink.cc
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/surfaces/gpu_compositor_frame_sink.h
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/ws/frame_generator.cc
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/ws/frame_generator.h
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/ws/server_window.cc
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/ws/server_window.h
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/ws/server_window_compositor_frame_sink_manager.cc
[modify] https://crrev.com/dc7e15988c2612f4bdd66e29b238a4eb3fce5cee/services/ui/ws/server_window_compositor_frame_sink_manager.h

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

Sign in to add a comment