// Copyright 2020 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 gfx.mojom;

import "mojo/public/mojom/base/shared_memory.mojom";
import "mojo/public/mojom/base/unguessable_token.mojom";

// gfx::NativePixmapPlane
[EnableIf=supports_native_pixmap, Stable]
struct NativePixmapPlane {
  uint32 stride;
  uint64 offset;
  uint64 size;

  // A platform-specific handle the underlying memory object.
  handle<platform> buffer_handle;
};

// gfx::NativePixmapHandle
[EnableIf=supports_native_pixmap]
struct NativePixmapHandle {
  array<NativePixmapPlane> planes;

  [EnableIf=is_linux]
  uint64 modifier;
  [EnableIf=is_chromeos_ash]
  uint64 modifier;

  [EnableIf=is_fuchsia]
  mojo_base.mojom.UnguessableToken? buffer_collection_id;
  [EnableIf=is_fuchsia]
  uint32 buffer_index;
  [EnableIf=is_fuchsia]
  bool ram_coherency;
};

[EnableIf=is_android]
struct AHardwareBufferHandle {
  // The actual file descriptor used to wrap the AHardwareBuffer object for
  // serialization.
  handle<platform> buffer_handle;

  // A message pipe handle which tracks the lifetime of this
  // AHardwareBufferHandle. The sender may use this to observe the lifetime
  // remotely by watching the other end of this pipe. Useful for retaining a
  // sender-side AHB ref until the receiver deserializes the AHB and acquires
  // its own ref.
  handle<message_pipe> tracking_pipe;
};

[EnableIf=is_win]
struct DxgiHandle {
  // The actual buffer windows handle.
  handle<platform> buffer_handle;

  // Shared memory copy of all the data. Valid only if requested by the
  // consumer. It is included here because DXGI GMBs are unmappable except in
  // the GPU process. So without it the consumer if a CPU readable frame is
  // needed would resort to request a copy in the shared memory via GPU process.
  mojo_base.mojom.UnsafeSharedMemoryRegion? shared_memory_handle;
};

union GpuMemoryBufferPlatformHandle {
  mojo_base.mojom.UnsafeSharedMemoryRegion shared_memory_handle;

  [EnableIf=supports_native_pixmap]
  NativePixmapHandle native_pixmap_handle;

  [EnableIf=is_mac]
  handle<platform> mach_port;

  [EnableIf=is_win]
  DxgiHandle dxgi_handle;

  [EnableIf=is_android]
  AHardwareBufferHandle android_hardware_buffer_handle;
};
