// 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;

using zx;

// TODO(https://fxbug.dev/42107169): change struct to table
/// Information about a buffer collection and its buffers.
type BufferCollectionInfo = resource struct {
    /// The number of buffers in the collection.
    buffer_count uint32;

    /// Describes how the contents of buffers are represented.
    /// All buffers within the collection have the same format.
    format BufferFormat;

    /// VMO handles for each buffer in the collection.
    /// The VMOs are only present when the buffers are backed by VMOs.
    ///
    /// If present, all the VMOs after `buffer_count` are invalid handles.
    /// All buffer VMO handles have identical size and access rights.
    /// The VMO access rights are determined based on the usages which the
    /// client specified when allocating the buffer collection.  For example,
    /// a client which expressed a read-only usage will receive VMOs without
    /// write rights.
    vmos array<zx.Handle:<VMO, optional>, 64>;

    /// The size of each VMO provided.
    /// This property is only present when the buffers are backed by VMOs.
    @allow_deprecated_struct_defaults
    vmo_size uint64 = 0;
};
