// 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.
type BufferFormat = struct {
    /// 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.
    @allow_deprecated_struct_defaults
    tag uint32 = 0;
    image ImageFormat;
};
