| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library ddk.protocol.display.capture; |
| |
| using zx; |
| |
| // using ZxUnownedHandle = uint32; |
| // TODO(bug:33170) replace with normal banjo type. |
| enum ZxUnownedHandle : uint32 { |
| }; |
| |
| [Layout = "ddk-interface"] |
| protocol DisplayCaptureInterface { |
| OnCaptureComplete() -> (); |
| }; |
| |
| [Layout = "ddk-protocol"] |
| protocol DisplayCaptureImpl { |
| /// The function will only be called once, and it will be called before any other |
| /// functions are called. |
| SetDisplayCaptureInterface(DisplayCaptureInterface intf) -> (); |
| |
| /// Import BufferCollection backed VMO pointed to by index. |
| /// Importing the VMO usually involves pinning the VMO and updating display |
| /// controller hardware registers with the physical address of the VMO to be |
| /// used for capture. Returns out_capture_handle which maps to the allocated |
| /// resource |
| ImportImageForCapture(ZxUnownedHandle collection, uint32 index) |
| -> (zx.status s, uint64 capture_handle); |
| |
| /// Starts capture into the resource mapped by capture_handle (non-blocking) |
| /// Only one active capture is allowed at a time. |
| /// A valid image must be displayed during capture. Otherwise unexpected hardware |
| /// behavior might occur. |
| /// Drivers should not leave display hardware in this unexpected state. |
| /// Drivers are expected to stop and/or abort capture if no valid |
| /// image is being displayed. |
| StartCapture(uint64 capture_handle) -> (zx.status s); |
| |
| /// Releases resources allocated by capture_handle. |
| /// Releasing resources from an active capture is not allowed and will cause |
| /// unexpected behavior. |
| ReleaseCapture(uint64 capture_handle) -> (zx.status s); |
| |
| /// Returns true if capture is completed. False otherwise. |
| IsCaptureCompleted() -> (bool b); |
| }; |
| |