// Copyright 2016 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 "ui/gfx/mojom/native_handle_types.mojom";

// gfx::BufferFormat
enum BufferFormat {
  R_8,
  R_16,
  RG_88,
  BGR_565,
  RGBA_4444,
  RGBX_8888,
  RGBA_8888,
  BGRX_8888,
  BGRA_1010102,
  RGBA_1010102,
  BGRA_8888,
  RGBA_F16,
  YVU_420,
  YUV_420_BIPLANAR,
  P010,
};

// gfx::BufferUsage
enum BufferUsage {
  GPU_READ,
  SCANOUT,
  SCANOUT_CAMERA_READ_WRITE,
  CAMERA_AND_CPU_READ_WRITE,
  SCANOUT_CPU_READ_WRITE,
  SCANOUT_VDA_WRITE,
  PROTECTED_SCANOUT_VDA_WRITE,
  GPU_READ_CPU_READ_WRITE,
  SCANOUT_VEA_CPU_READ,
  VEA_READ_CAMERA_AND_CPU_READ_WRITE,
  SCANOUT_FRONT_RENDERING,
};

struct BufferUsageAndFormat {
  BufferUsage usage;
  BufferFormat format;
};

enum BufferPlane {
  DEFAULT,
  Y,
  UV,
  U,
  V,
};

// gfx::GpuMemoryBufferId
[Stable]
struct GpuMemoryBufferId {
  int32 id;
};

// gfx::GpuMemoryBufferHandle
struct GpuMemoryBufferHandle {
  GpuMemoryBufferId id;
  uint32 offset;
  uint32 stride;
  GpuMemoryBufferPlatformHandle? platform_handle;
};
