// Copyright 2020 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.sysmem2;

/// The upper 8 bits are a vendor code.  The lower 56 bits are
/// vendor-defined.  See format_modifier.fidl for potentially-valid values.
///
/// These values can be valid values for the |format_modifier_value| field.
///
/// The values are defined this way for compatibility reasons.
const uint64 FORMAT_MODIFIER_NONE = 0x0000000000000000;

const uint64 FORMAT_MODIFIER_VENDOR_NONE = 0x0000000000000000;
const uint64 FORMAT_MODIFIER_VENDOR_INTEL = 0x0100000000000000;
const uint64 FORMAT_MODIFIER_VENDOR_AMD = 0x0200000000000000;
const uint64 FORMAT_MODIFIER_VENDOR_NVIDIA = 0x0300000000000000;
const uint64 FORMAT_MODIFIER_VENDOR_SAMSUNG = 0x0400000000000000;
const uint64 FORMAT_MODIFIER_VENDOR_QCOM = 0x0500000000000000;
const uint64 FORMAT_MODIFIER_VENDOR_VIVANTE = 0x0600000000000000;
const uint64 FORMAT_MODIFIER_VENDOR_BROADCOM = 0x0700000000000000;
const uint64 FORMAT_MODIFIER_VENDOR_ARM = 0x0800000000000000;

const uint64 FORMAT_MODIFIER_VALUE_RESERVED = 0x00FFFFFFFFFFFFFF;

const uint64 FORMAT_MODIFIER_INVALID = FORMAT_MODIFIER_VALUE_RESERVED;

const uint64 FORMAT_MODIFIER_LINEAR = 0x0000000000000000;

//
// Fill in (compatible) values below as needed.
//

// Intel format modifier values
const uint64 FORMAT_MODIFIER_INTEL_I915_X_TILED = 0x0100000000000001;
const uint64 FORMAT_MODIFIER_INTEL_I915_Y_TILED = 0x0100000000000002;
const uint64 FORMAT_MODIFIER_INTEL_I915_YF_TILED = 0x0100000000000003;

// AMD format modifier values

// NVIDIA format modifier values

// SAMSUNG format modifier values

// QCOM format modifier values

// VIVANTE format modifier values

// BROADCOM format modifier values

// ARM format modifier values
// bit 0x10 is for using the YUV transform.
const uint64 FORMAT_MODIFIER_ARM_YUV_BIT = 0x10;
// bit 0x20 is for split-block formats.
const uint64 FORMAT_MODIFIER_ARM_SPLIT_BLOCK_BIT = 0x20;
// bit 0x40 is for sparse formats.
const uint64 FORMAT_MODIFIER_ARM_SPARSE_BIT = 0x40;
// bit 0x800 is for variants with buffer content hints.
const uint64 FORMAT_MODIFIER_ARM_BCH_BIT = 0x800;
// bit 0x1000 is for variants with a transaction elimination buffer allocated.
const uint64 FORMAT_MODIFIER_ARM_TE_BIT = 0x1000;
// Not all values are equally useful, so we only have format modifiers for some particularly interesting ones.

// To make the variants with bits set more consistent 0x0800000000000000 is reserved for linear.
const uint64 FORMAT_MODIFIER_ARM_AFBC_16X16 = 0x0800000000000001;
const uint64 FORMAT_MODIFIER_ARM_AFBC_32X8 = 0x0800000000000002;
// Variations with transaction elimination support 0x1000 should be set for these formats.
const uint64 FORMAT_MODIFIER_ARM_LINEAR_TE = 0x0800000000001000;
const uint64 FORMAT_MODIFIER_ARM_AFBC_16X16_TE = 0x0800000000001001;
const uint64 FORMAT_MODIFIER_ARM_AFBC_32X8_TE = 0x0800000000001002;

const uint64 FORMAT_MODIFIER_ARM_AFBC_16X16_SPLIT_BLOCK_SPARSE_YUV = 0x0800000000000071;
const uint64 FORMAT_MODIFIER_ARM_AFBC_16X16_SPLIT_BLOCK_SPARSE_YUV_TE = 0x0800000000001071;
