| // 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; | 
 |  | 
 | [ForDeprecatedCBindings] | 
 | struct FormatModifier { | 
 |     /// The upper 8 bits are a vendor code as allocated in FormatModifierVendor | 
 |     /// enum.  The lower 56 bits are vendor-defined. | 
 |     /// | 
 |     /// This field and the values that go in this field are defined this way for | 
 |     /// compatibility reasons. | 
 |     uint64 value; | 
 | }; | 
 |  | 
 | 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; | 
 | // 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; |