| // 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 ui.ozone.mojom; |
| |
| import "mojo/public/mojom/base/file.mojom"; |
| import "mojo/public/mojom/base/file_path.mojom"; |
| import "ui/display/mojom/display_configuration_params.mojom"; |
| import "ui/display/mojom/display_constants.mojom"; |
| import "ui/display/mojom/display_mode.mojom"; |
| import "ui/display/mojom/display_snapshot.mojom"; |
| import "ui/display/mojom/gamma_ramp_rgb_entry.mojom"; |
| import "ui/gfx/geometry/mojom/geometry.mojom"; |
| import "ui/gfx/mojom/accelerated_widget.mojom"; |
| import "ui/ozone/public/mojom/device_cursor.mojom"; |
| |
| // The viz process on CrOS implements the DrmDevice |
| // service to let the viz host and clients manage DRM displays. |
| // All functions in DrmDevice are implemented by the lower privilege viz |
| // process. |
| interface DrmDevice { |
| // Creates scanout capable DRM buffers to back |widget|. |initial_bounds| is |
| // used to calculate the initial size of the DRM bufffer backing |widget| and |
| // it can be modified later by calling SetWindowBounds(). |
| CreateWindow(gfx.mojom.AcceleratedWidget widget, |
| gfx.mojom.Rect initial_bounds); |
| |
| // Destroys the DRM buffers backing |widget|. |
| DestroyWindow(gfx.mojom.AcceleratedWidget widget); |
| |
| // Sets the size of the DRM buffer for |widget|. |
| SetWindowBounds(gfx.mojom.AcceleratedWidget widget, gfx.mojom.Rect bounds); |
| |
| // Takes control of the display and invoke a provided callback with a boolean |
| // status. |
| TakeDisplayControl() => (bool success); |
| |
| // Releases control of the display and invoke a provided callback with a |
| // boolean status. |
| RelinquishDisplayControl() => (bool success); |
| |
| // Requests a callback providing a list of the available displays. |
| RefreshNativeDisplays() => |
| (array<display.mojom.DisplaySnapshot> display_snapshots); |
| |
| // Transfers ownership of a DRM device to the GPU process. |
| AddGraphicsDevice(mojo_base.mojom.FilePath path, |
| mojo_base.mojom.File file); |
| |
| // Instructs the GPU to abandon a DRM device. |
| RemoveGraphicsDevice(mojo_base.mojom.FilePath path); |
| |
| // Configures (Enables/Disables) DRM displays, returns whether or not the |
| // configuration was successful. |
| ConfigureNativeDisplays( |
| array<display.mojom.DisplayConfigurationParams> config_requests) => |
| (bool config_success); |
| |
| // Gets high-definition content protection (HDCP) (DRM as in |
| // digital rights management) state. |
| GetHDCPState(int64 display_id) => |
| (int64 display_id, bool success, display.mojom.HDCPState state, |
| display.mojom.ContentProtectionMethod protection_method); |
| |
| // Sets high-definition content protection (HDCP) (DRM as in |
| // digital rights management) state. |
| SetHDCPState(int64 display_id, display.mojom.HDCPState state, |
| display.mojom.ContentProtectionMethod protection_method) => |
| (int64 display_id, bool success); |
| |
| // Sets a 3x3 color transform matrix on the display hardware. |
| // TODO: Consider using a different type for the color matrix. |
| // https://crbug.com/846975. |
| SetColorMatrix(int64 display_id, array<float, 9> color_matrix); |
| |
| // Sets a color correction gamma lookup table. |
| SetGammaCorrection(int64 display_id, |
| array<display.mojom.GammaRampRGBEntry> degamma_lut, |
| array<display.mojom.GammaRampRGBEntry> gamma_lut); |
| |
| // Sets the state of the privacy screen feature. |
| SetPrivacyScreen(int64 display_id, bool enabled); |
| |
| // Provides a DeviceCursor interface. The provided interface needs to be |
| // associated because the AcceleratedWidgets referenced by its methods are |
| // registered via CreateWindow() in this interface. |
| GetDeviceCursor(pending_associated_receiver<DeviceCursor> cursor); |
| }; |