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

Issue 688042 link

Starred by 1 user

Issue metadata

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



Sign in to add a comment

CompositorFrameSinkSupport shouldn't know about cc::Display

Project Member Reported by fsam...@chromium.org, Feb 2 2017

Issue description

Now that FrameGenerator and GpuDisplayCompositorFrameSink has a separate DisplayPrivate interface and with this patch (https://codereview.chromium.org/2612083002/) moving more display functionality out of GpuCompositorFrameSink to GpuDisplayCompositorFrameSink, and also out of CompositorFrameSinkSupport, it seems like CompositorFrameSinkSupport shouldn't know about cc::Display at all.
 
Owner: staraz@chromium.org
Status: Assigned (was: Untriaged)
Project Member

Comment 2 by bugdroid1@chromium.org, Feb 10 2017

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

commit 04c49bf4845979aeff2c740a168de0a936b015af
Author: staraz <staraz@chromium.org>
Date: Fri Feb 10 23:10:31 2017

Move display_ From CompositorFrameSinkSupport To GpuDisplayCompositorFrameSink

With FrameGenerator and GpuDisplayCompositorFrameSink having a DisplayPrivate
interface, CompositorFrameSinkSupport doesn't need to know about cc::Display.

cc::Display::SetLocalSurfaceId() checks and early returns if
neither local surface id nor device scale factor has changed.
Therefore, FrameGenerator's calling SetLocalSurfaceId() before
every SubmitCompositorFrame() doesn't result in extra work.

This CL also fixes  bug 689869 . The bug was caused by
https://codereview.chromium.org/2612083002/.
In the previous CL, cc::Display::Initialize() was called inside
CompositorFrameSinkSupport(), where CompositorFrameSinkSupport
was passed as DisplayClient.
CompositorFrameSinkSupport::DisplayOutputSurfaceLost() wasn't
doing anything so the CompositorFrameSinkClient didn't get
notified when we lost CompositorFrameSink.

For  bug 676070 ,  689916  (flaky tests):
The two bugs are caused by CompositorFrameSinkSupport doesn't stop
observing BeginFrameSource when it should. By notifying client on output
surface lost correctly, DirectCompositorFrameSink detaches from client
and destroys CompositorFrameSinkSupport (and hence stop observing
BeginFrameSource) at the right time.

BUG= 688042 ,  689869 ,  676070 ,  689916 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/cc/ipc/display_compositor.mojom
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/cc/surfaces/compositor_frame_sink_support.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/cc/surfaces/compositor_frame_sink_support.h
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/cc/surfaces/compositor_frame_sink_support_unittest.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_compositor_frame_sink.h
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_display_compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_display_compositor_frame_sink.h
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/display_compositor/gpu_offscreen_compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/exo/compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/components/exo/surface.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/content/browser/renderer_host/offscreen_canvas_compositor_frame_sink.cc
[modify] https://crrev.com/04c49bf4845979aeff2c740a168de0a936b015af/services/ui/ws/frame_generator.cc

Can we close this? Any issues?

Comment 4 by staraz@chromium.org, Feb 13 2017

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

Sign in to add a comment