blob: cc6f72d9f774576bed0e07c924d835352b4087c0 [file] [log] [blame]
// Copyright 2018 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.
library fuchsia.sysmem;
// Describes how an image is represented.
// TODO(ZX-2260): change struct to table
struct ImageFormat {
// Row width in pixels.
uint32 width;
// Number of rows.
uint32 height;
// Number of layers within a multi-layered image.
// Defaults to 1 if not specified.
uint32 layers = 1;
// Pixel format.
PixelFormat pixel_format;
// Color space.
ColorSpace color_space;
array<ImagePlane>:4 planes;
};
struct ImagePlane {
// Byte offset of the start of the plane from the beginning of the image.
uint32 byte_offset;
// Stride in bytes per row.
// Only meaningful for linear buffer formats.
uint32 bytes_per_row;
};
// Describes constraints for allocating images of some desired form.
// TODO(ZX-2260): change struct to table
struct ImageSpec {
// Minimum width in pixels.
uint32 min_width;
// Minimum height in pixels.
uint32 min_height;
// Number of layers within a multi-layered image.
// Defaults to 1 if not specified.
uint32 layers = 1;
// Pixel format.
PixelFormat pixel_format;
// Color space.
ColorSpace color_space;
// TODO(ZX-2270): Add tiling formats.
};