// 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 the contents of buffers are represented.
/// Buffers of each type are described by their own tables.
struct BufferFormat {
    /// Since this struct used to be a single member union, we kept the tag
    /// to avoid any wire format changes. The tag must be set to `0`,
    /// no other value is correct.
    uint32 tag = 0;
    ImageFormat image;
};
