blob: df84e55b4130437af6c860ca65f8252ed46000d3 [file] [log] [blame]
// 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_VENDOR_GOOGLE = 0x0900000000000000;
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;
// bit 0x2000 is for variants with tiled headers.
const uint64 FORMAT_MODIFIER_ARM_TILED_HEADER_BIT = 0x2000;
// 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_YUV_TILED_HEADER = 0x0800000000002011;
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;
const uint64 FORMAT_MODIFIER_ARM_AFBC_16X16_SPLIT_BLOCK_SPARSE_YUV_TILED_HEADER = 0x0800000000002071;
const uint64 FORMAT_MODIFIER_ARM_AFBC_16X16_SPLIT_BLOCK_SPARSE_YUV_TE_TILED_HEADER = 0x0800000000003071;
// GOOGLE format modifier values
const uint64 FORMAT_MODIFIER_GOOGLE_GOLDFISH_OPTIMAL = 0x0900000000000001;