blob: 777036160fafd975e557ccee0ff4de9fe80781fc [file] [log] [blame]
// Copyright 2018 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 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.
};