naiveproxy/services/viz/privileged/interfaces/compositing/display_private.mojom
2018-12-09 21:59:24 -05:00

78 lines
3.2 KiB
Plaintext

// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module viz.mojom;
import "mojo/public/mojom/base/time.mojom";
import "ui/gfx/mojo/ca_layer_params.mojom";
import "ui/gfx/mojo/color_space.mojom";
import "ui/gfx/mojo/transform.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
import "ui/latency/mojo/latency_info.mojom";
import "services/viz/privileged/interfaces/compositing/layered_window_updater.mojom";
// See ui/compositor/compositor.h: ContextFactoryPrivate.
// The DisplayPrivate is used by privileged clients to talk to Display.
// DisplayPrivate would eventually replace or be used by ContextFactoryPrivate.
interface DisplayPrivate {
SetDisplayVisible(bool visible);
// Attempts to immediately swap a frame with the current size if possible,
// then will no longer swap until Resize() is called with a non-empty size.
[Sync] DisableSwapUntilResize() => ();
// Resizes the display.
Resize(gfx.mojom.Size size);
// Sets the matrix that will be used to transform the output color of the
// display. This only works in GPU compositing.
SetDisplayColorMatrix(gfx.mojom.Transform color_matrix);
SetDisplayColorSpace(gfx.mojom.ColorSpace blending_color_space,
gfx.mojom.ColorSpace device_color_space);
SetOutputIsSecure(bool secure);
// Locks the vsync interval used to generate BeginFrames for this display to
// |interval|. Changes to vsync interval from other sources will be ignored.
// This will do nothing if the display is using an external BeginFrame source.
SetAuthoritativeVSyncInterval(mojo_base.mojom.TimeDelta interval);
// Updates vsync parameters used to generate BeginFrames for this display.
// This will do nothing if the display is using an external BeginFrame source.
SetDisplayVSyncParameters(
mojo_base.mojom.TimeTicks timebase,
mojo_base.mojom.TimeDelta interval);
// Attempts to immediately draw and swap a frame if possible. Note that this
// is not a sync IPC, as all current uses are during tear down of the root
// compositor frame sink and are immediately followed by a call to
// FrameSinkManager::DestroyCompositorFrameSink which is an associated sync
// IPC. If this function is needed in cases where ordering isn't guaranteed
// by other means, it should be made sync.
ForceImmediateDrawAndSwapIfPossible();
// Notifies the display to pause VSync signals. Used for VR.
[EnableIf=is_android]
SetVSyncPaused(bool paused);
};
interface DisplayClient {
// Notifies that a swap has occured after some latency info with snapshot
// component reached the display.
DidSwapAfterSnapshotRequestReceived(array<ui.mojom.LatencyInfo> latency_info);
[EnableIf=is_mac]
OnDisplayReceivedCALayerParams(gfx.mojom.CALayerParams ca_layer_params);
// Creates a LayeredWindowUpdater implementation to draw into a layered
// window.
[EnableIf=is_win]
CreateLayeredWindowUpdater(LayeredWindowUpdater& layered_window_updater);
// Notifies that a swap has occurred and provides information about the pixel
// size of the swapped frame.
[EnableIf=is_android]
DidCompleteSwapWithSize(gfx.mojom.Size size);
};