// Copyright 2023 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.hardware.display;

/// Type of the internal value in [`fuchsia.hardware.display/BufferCollectionId`].
alias BufferCollectionIdValue = uint64;

/// Identifies a sysmem BufferCollection owned by a Display Coordinator client.
///
/// Values are managed by [`fuchsia.hardware.display/Coordinator`] clients, to
/// facilitate feed-forward dataflow.
///
/// Each value uniquely identifies a [`fuchsia.sysmem/BufferCollection`] (as
/// well as its token [`fuchsia.sysmem/BufferCollectionToken`]) imported to the
/// Display Coordinator device within a Coordinator connection. The identifier
/// of a BufferCollection destroyed via
/// [`fuchsia.hardware.display/Coordinator.ReleaseBufferCollection`] can be
/// reused in a subsequent
/// [`fuchsia.hardware.display/Coordinator.ImportBufferCollection`] call.
type BufferCollectionId = struct {
    value BufferCollectionIdValue;
};
