1bf215546Sopenharmony_ci/* 2bf215546Sopenharmony_ci * Mesa 3-D graphics library 3bf215546Sopenharmony_ci * 4bf215546Sopenharmony_ci * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. 5bf215546Sopenharmony_ci * Copyright (c) 2008-2009 VMware, Inc. 6bf215546Sopenharmony_ci * 7bf215546Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 8bf215546Sopenharmony_ci * copy of this software and associated documentation files (the "Software"), 9bf215546Sopenharmony_ci * to deal in the Software without restriction, including without limitation 10bf215546Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense, 11bf215546Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the 12bf215546Sopenharmony_ci * Software is furnished to do so, subject to the following conditions: 13bf215546Sopenharmony_ci * 14bf215546Sopenharmony_ci * The above copyright notice and this permission notice shall be included 15bf215546Sopenharmony_ci * in all copies or substantial portions of the Software. 16bf215546Sopenharmony_ci * 17bf215546Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18bf215546Sopenharmony_ci * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19bf215546Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20bf215546Sopenharmony_ci * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 21bf215546Sopenharmony_ci * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 22bf215546Sopenharmony_ci * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23bf215546Sopenharmony_ci * OTHER DEALINGS IN THE SOFTWARE. 24bf215546Sopenharmony_ci */ 25bf215546Sopenharmony_ci 26bf215546Sopenharmony_ci/* 27bf215546Sopenharmony_ci * Authors: 28bf215546Sopenharmony_ci * Brian Paul 29bf215546Sopenharmony_ci */ 30bf215546Sopenharmony_ci 31bf215546Sopenharmony_ci 32bf215546Sopenharmony_ci#ifndef FORMATS_H 33bf215546Sopenharmony_ci#define FORMATS_H 34bf215546Sopenharmony_ci 35bf215546Sopenharmony_ci 36bf215546Sopenharmony_ci#include <GL/gl.h> 37bf215546Sopenharmony_ci#include <stdbool.h> 38bf215546Sopenharmony_ci#include <stdint.h> 39bf215546Sopenharmony_ci#include "gallium/include/pipe/p_format.h" 40bf215546Sopenharmony_ci#include "util/u_endian.h" 41bf215546Sopenharmony_ci 42bf215546Sopenharmony_ci#ifdef __cplusplus 43bf215546Sopenharmony_ciextern "C" { 44bf215546Sopenharmony_ci#endif 45bf215546Sopenharmony_ci 46bf215546Sopenharmony_ci 47bf215546Sopenharmony_ci/** 48bf215546Sopenharmony_ci * OpenGL doesn't have GL_UNSIGNED_BYTE_4_4, so we must define our own type 49bf215546Sopenharmony_ci * for GL_LUMINANCE4_ALPHA4. 50bf215546Sopenharmony_ci */ 51bf215546Sopenharmony_ci#define MESA_UNSIGNED_BYTE_4_4 (GL_UNSIGNED_BYTE<<1) 52bf215546Sopenharmony_ci 53bf215546Sopenharmony_ci 54bf215546Sopenharmony_ci/** 55bf215546Sopenharmony_ci * Max number of bytes for any non-compressed pixel format below, or for 56bf215546Sopenharmony_ci * intermediate pixel storage in Mesa. This should never be less than 57bf215546Sopenharmony_ci * 16. Maybe 32 someday? 58bf215546Sopenharmony_ci */ 59bf215546Sopenharmony_ci#define MAX_PIXEL_BYTES 16 60bf215546Sopenharmony_ci 61bf215546Sopenharmony_ci/** 62bf215546Sopenharmony_ci * Specifies the layout of a pixel format. See the MESA_FORMAT 63bf215546Sopenharmony_ci * documentation below. 64bf215546Sopenharmony_ci */ 65bf215546Sopenharmony_cienum mesa_format_layout { 66bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_ARRAY, 67bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_PACKED, 68bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_S3TC, 69bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_RGTC, 70bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_LATC, 71bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_FXT1, 72bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_ETC1, 73bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_ETC2, 74bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_BPTC, 75bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_ASTC, 76bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_ATC, 77bf215546Sopenharmony_ci MESA_FORMAT_LAYOUT_OTHER, 78bf215546Sopenharmony_ci}; 79bf215546Sopenharmony_ci 80bf215546Sopenharmony_ci/** 81bf215546Sopenharmony_ci * An enum representing different possible swizzling values. This is used 82bf215546Sopenharmony_ci * to interpret the output of _mesa_get_format_swizzle 83bf215546Sopenharmony_ci */ 84bf215546Sopenharmony_cienum { 85bf215546Sopenharmony_ci MESA_FORMAT_SWIZZLE_X = 0, 86bf215546Sopenharmony_ci MESA_FORMAT_SWIZZLE_Y = 1, 87bf215546Sopenharmony_ci MESA_FORMAT_SWIZZLE_Z = 2, 88bf215546Sopenharmony_ci MESA_FORMAT_SWIZZLE_W = 3, 89bf215546Sopenharmony_ci MESA_FORMAT_SWIZZLE_ZERO = 4, 90bf215546Sopenharmony_ci MESA_FORMAT_SWIZZLE_ONE = 5, 91bf215546Sopenharmony_ci MESA_FORMAT_SWIZZLE_NONE = 6, 92bf215546Sopenharmony_ci}; 93bf215546Sopenharmony_ci 94bf215546Sopenharmony_ci/** 95bf215546Sopenharmony_ci * An uint32_t that encodes the information necessary to represent an 96bf215546Sopenharmony_ci * array format 97bf215546Sopenharmony_ci */ 98bf215546Sopenharmony_citypedef uint32_t mesa_array_format; 99bf215546Sopenharmony_ci 100bf215546Sopenharmony_ci/** 101bf215546Sopenharmony_ci * Encoding for valid array format data types 102bf215546Sopenharmony_ci */ 103bf215546Sopenharmony_cienum mesa_array_format_datatype { 104bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_UBYTE = 0x0, 105bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_USHORT = 0x1, 106bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_UINT = 0x2, 107bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_BYTE = 0x4, 108bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_SHORT = 0x5, 109bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_INT = 0x6, 110bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_HALF = 0xd, 111bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_FLOAT = 0xe, 112bf215546Sopenharmony_ci}; 113bf215546Sopenharmony_ci 114bf215546Sopenharmony_cienum mesa_array_format_base_format { 115bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_BASE_FORMAT_RGBA_VARIANTS = 0x0, 116bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_BASE_FORMAT_DEPTH = 0x1, 117bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_BASE_FORMAT_STENCIL = 0x2, 118bf215546Sopenharmony_ci}; 119bf215546Sopenharmony_ci 120bf215546Sopenharmony_ci/** 121bf215546Sopenharmony_ci * An enum useful to encode/decode information stored in a mesa_array_format 122bf215546Sopenharmony_ci */ 123bf215546Sopenharmony_cienum { 124bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_IS_SIGNED = 0x4, 125bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_IS_FLOAT = 0x8, 126bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_NORMALIZED = 0x10, 127bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_DATATYPE_MASK = 0xf, 128bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_MASK = 0x1f, 129bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_TYPE_SIZE_MASK = 0x3, 130bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_NUM_CHANS_MASK = 0xe0, 131bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_SWIZZLE_X_MASK = 0x00700, 132bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK = 0x03800, 133bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK = 0x1c000, 134bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_SWIZZLE_W_MASK = 0xe0000, 135bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_BASE_FORMAT_MASK = 0x300000, 136bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_BIT = 0x80000000 137bf215546Sopenharmony_ci}; 138bf215546Sopenharmony_ci 139bf215546Sopenharmony_ci#define MESA_ARRAY_FORMAT(BASE_FORMAT, SIZE, SIGNED, IS_FLOAT, NORM, NUM_CHANS, \ 140bf215546Sopenharmony_ci SWIZZLE_X, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_W) ( \ 141bf215546Sopenharmony_ci (((SIZE >> 1) ) & MESA_ARRAY_FORMAT_TYPE_SIZE_MASK) | \ 142bf215546Sopenharmony_ci (((SIGNED) << 2 ) & MESA_ARRAY_FORMAT_TYPE_IS_SIGNED) | \ 143bf215546Sopenharmony_ci (((IS_FLOAT) << 3 ) & MESA_ARRAY_FORMAT_TYPE_IS_FLOAT) | \ 144bf215546Sopenharmony_ci (((NORM) << 4 ) & MESA_ARRAY_FORMAT_TYPE_NORMALIZED) | \ 145bf215546Sopenharmony_ci (((NUM_CHANS) << 5 ) & MESA_ARRAY_FORMAT_NUM_CHANS_MASK) | \ 146bf215546Sopenharmony_ci (((SWIZZLE_X) << 8 ) & MESA_ARRAY_FORMAT_SWIZZLE_X_MASK) | \ 147bf215546Sopenharmony_ci (((SWIZZLE_Y) << 11) & MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK) | \ 148bf215546Sopenharmony_ci (((SWIZZLE_Z) << 14) & MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK) | \ 149bf215546Sopenharmony_ci (((SWIZZLE_W) << 17) & MESA_ARRAY_FORMAT_SWIZZLE_W_MASK) | \ 150bf215546Sopenharmony_ci (((BASE_FORMAT) << 20) & MESA_ARRAY_FORMAT_BASE_FORMAT_MASK) | \ 151bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_BIT) 152bf215546Sopenharmony_ci 153bf215546Sopenharmony_ci/** 154bf215546Sopenharmony_ci * Various helpers to access the data encoded in a mesa_array_format 155bf215546Sopenharmony_ci */ 156bf215546Sopenharmony_cistatic inline bool 157bf215546Sopenharmony_ci_mesa_array_format_is_signed(mesa_array_format f) 158bf215546Sopenharmony_ci{ 159bf215546Sopenharmony_ci return (f & MESA_ARRAY_FORMAT_TYPE_IS_SIGNED) != 0; 160bf215546Sopenharmony_ci} 161bf215546Sopenharmony_ci 162bf215546Sopenharmony_cistatic inline bool 163bf215546Sopenharmony_ci_mesa_array_format_is_float(mesa_array_format f) 164bf215546Sopenharmony_ci{ 165bf215546Sopenharmony_ci return (f & MESA_ARRAY_FORMAT_TYPE_IS_FLOAT) != 0; 166bf215546Sopenharmony_ci} 167bf215546Sopenharmony_ci 168bf215546Sopenharmony_cistatic inline bool 169bf215546Sopenharmony_ci_mesa_array_format_is_normalized(mesa_array_format f) 170bf215546Sopenharmony_ci{ 171bf215546Sopenharmony_ci return (f & MESA_ARRAY_FORMAT_TYPE_NORMALIZED) !=0; 172bf215546Sopenharmony_ci} 173bf215546Sopenharmony_ci 174bf215546Sopenharmony_cistatic inline enum mesa_array_format_base_format 175bf215546Sopenharmony_ci_mesa_array_format_get_base_format(mesa_array_format f) 176bf215546Sopenharmony_ci{ 177bf215546Sopenharmony_ci return (enum mesa_array_format_base_format) 178bf215546Sopenharmony_ci ((f & MESA_ARRAY_FORMAT_BASE_FORMAT_MASK) >> 20); 179bf215546Sopenharmony_ci} 180bf215546Sopenharmony_ci 181bf215546Sopenharmony_cistatic inline enum mesa_array_format_datatype 182bf215546Sopenharmony_ci_mesa_array_format_get_datatype(mesa_array_format f) 183bf215546Sopenharmony_ci{ 184bf215546Sopenharmony_ci return (enum mesa_array_format_datatype) 185bf215546Sopenharmony_ci (f & MESA_ARRAY_FORMAT_DATATYPE_MASK); 186bf215546Sopenharmony_ci} 187bf215546Sopenharmony_ci 188bf215546Sopenharmony_cistatic inline int 189bf215546Sopenharmony_ci_mesa_array_format_datatype_get_size(enum mesa_array_format_datatype type) 190bf215546Sopenharmony_ci{ 191bf215546Sopenharmony_ci return 1 << (type & MESA_ARRAY_FORMAT_TYPE_SIZE_MASK); 192bf215546Sopenharmony_ci} 193bf215546Sopenharmony_ci 194bf215546Sopenharmony_cistatic inline int 195bf215546Sopenharmony_ci_mesa_array_format_get_type_size(mesa_array_format f) 196bf215546Sopenharmony_ci{ 197bf215546Sopenharmony_ci return 1 << (f & MESA_ARRAY_FORMAT_TYPE_SIZE_MASK); 198bf215546Sopenharmony_ci} 199bf215546Sopenharmony_ci 200bf215546Sopenharmony_cistatic inline int 201bf215546Sopenharmony_ci_mesa_array_format_get_num_channels(mesa_array_format f) 202bf215546Sopenharmony_ci{ 203bf215546Sopenharmony_ci return (f & MESA_ARRAY_FORMAT_NUM_CHANS_MASK) >> 5; 204bf215546Sopenharmony_ci} 205bf215546Sopenharmony_ci 206bf215546Sopenharmony_cistatic inline void 207bf215546Sopenharmony_ci_mesa_array_format_get_swizzle(mesa_array_format f, uint8_t *swizzle) 208bf215546Sopenharmony_ci{ 209bf215546Sopenharmony_ci swizzle[0] = (f & MESA_ARRAY_FORMAT_SWIZZLE_X_MASK) >> 8; 210bf215546Sopenharmony_ci swizzle[1] = (f & MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK) >> 11; 211bf215546Sopenharmony_ci swizzle[2] = (f & MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK) >> 14; 212bf215546Sopenharmony_ci swizzle[3] = (f & MESA_ARRAY_FORMAT_SWIZZLE_W_MASK) >> 17; 213bf215546Sopenharmony_ci} 214bf215546Sopenharmony_ci 215bf215546Sopenharmony_cistatic inline void 216bf215546Sopenharmony_ci_mesa_array_format_set_swizzle(mesa_array_format *f, 217bf215546Sopenharmony_ci int32_t x, int32_t y, int32_t z, int32_t w) 218bf215546Sopenharmony_ci{ 219bf215546Sopenharmony_ci *f &= ~(MESA_ARRAY_FORMAT_SWIZZLE_X_MASK | 220bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK | 221bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK | 222bf215546Sopenharmony_ci MESA_ARRAY_FORMAT_SWIZZLE_W_MASK); 223bf215546Sopenharmony_ci 224bf215546Sopenharmony_ci *f |= ((x << 8 ) & MESA_ARRAY_FORMAT_SWIZZLE_X_MASK) | 225bf215546Sopenharmony_ci ((y << 11) & MESA_ARRAY_FORMAT_SWIZZLE_Y_MASK) | 226bf215546Sopenharmony_ci ((z << 14) & MESA_ARRAY_FORMAT_SWIZZLE_Z_MASK) | 227bf215546Sopenharmony_ci ((w << 17) & MESA_ARRAY_FORMAT_SWIZZLE_W_MASK); 228bf215546Sopenharmony_ci} 229bf215546Sopenharmony_ci 230bf215546Sopenharmony_ci/** 231bf215546Sopenharmony_ci * A helper to know if the format stored in a uint32_t is a mesa_format 232bf215546Sopenharmony_ci * or a mesa_array_format 233bf215546Sopenharmony_ci */ 234bf215546Sopenharmony_cistatic inline bool 235bf215546Sopenharmony_ci_mesa_format_is_mesa_array_format(uint32_t f) 236bf215546Sopenharmony_ci{ 237bf215546Sopenharmony_ci return (f & MESA_ARRAY_FORMAT_BIT) != 0; 238bf215546Sopenharmony_ci} 239bf215546Sopenharmony_ci 240bf215546Sopenharmony_ci/** 241bf215546Sopenharmony_ci * Mesa texture/renderbuffer image formats. These are just other names of the 242bf215546Sopenharmony_ci * gallium p_format.h formats. 243bf215546Sopenharmony_ci */ 244bf215546Sopenharmony_citypedef enum pipe_format mesa_format; 245bf215546Sopenharmony_ci 246bf215546Sopenharmony_ci /** 247bf215546Sopenharmony_ci * \name Basic hardware formats 248bf215546Sopenharmony_ci * 249bf215546Sopenharmony_ci * The mesa format name specification is as follows: 250bf215546Sopenharmony_ci * 251bf215546Sopenharmony_ci * There shall be 3 naming format base types: those for component array 252bf215546Sopenharmony_ci * formats (type A); those for compressed formats (type C); and those for 253bf215546Sopenharmony_ci * packed component formats (type P). With type A formats, color component 254bf215546Sopenharmony_ci * order does not change with endianess. Each format name shall begin with 255bf215546Sopenharmony_ci * MESA_FORMAT_, followed by a component label (from the Component Label 256bf215546Sopenharmony_ci * list below) for each component in the order that the component(s) occur 257bf215546Sopenharmony_ci * in the format, except for non-linear color formats where the first 258bf215546Sopenharmony_ci * letter shall be 'S'. For type P formats, each component label is 259bf215546Sopenharmony_ci * followed by the number of bits that represent it in the fundamental 260bf215546Sopenharmony_ci * data type used by the format. 261bf215546Sopenharmony_ci * 262bf215546Sopenharmony_ci * Following the listing of the component labels shall be an underscore; a 263bf215546Sopenharmony_ci * compression type followed by an underscore for Type C formats only; a 264bf215546Sopenharmony_ci * storage type from the list below; and a bit with for type A formats, 265bf215546Sopenharmony_ci * which is the bit width for each array element. 266bf215546Sopenharmony_ci * 267bf215546Sopenharmony_ci * 268bf215546Sopenharmony_ci * ---------- Format Base Type A: Array ---------- 269bf215546Sopenharmony_ci * MESA_FORMAT_[component list]_[storage type][array element bit width] 270bf215546Sopenharmony_ci * 271bf215546Sopenharmony_ci * examples: 272bf215546Sopenharmony_ci * MESA_FORMAT_A_SNORM8 - uchar[i] = A 273bf215546Sopenharmony_ci * MESA_FORMAT_RGBA_16 - ushort[i * 4 + 0] = R, ushort[i * 4 + 1] = G, 274bf215546Sopenharmony_ci * ushort[i * 4 + 2] = B, ushort[i * 4 + 3] = A 275bf215546Sopenharmony_ci * MESA_FORMAT_Z_UNORM32 - float[i] = Z 276bf215546Sopenharmony_ci * 277bf215546Sopenharmony_ci * 278bf215546Sopenharmony_ci * 279bf215546Sopenharmony_ci * ---------- Format Base Type C: Compressed ---------- 280bf215546Sopenharmony_ci * MESA_FORMAT_[component list*][_*][compression type][storage type*] 281bf215546Sopenharmony_ci * * where required 282bf215546Sopenharmony_ci * 283bf215546Sopenharmony_ci * examples: 284bf215546Sopenharmony_ci * MESA_FORMAT_RGB_ETC1 285bf215546Sopenharmony_ci * MESA_FORMAT_RGBA_ETC2 286bf215546Sopenharmony_ci * MESA_FORMAT_LATC1_UNORM 287bf215546Sopenharmony_ci * MESA_FORMAT_RGBA_FXT1 288bf215546Sopenharmony_ci * 289bf215546Sopenharmony_ci * 290bf215546Sopenharmony_ci * 291bf215546Sopenharmony_ci * ---------- Format Base Type P: Packed ---------- 292bf215546Sopenharmony_ci * MESA_FORMAT_[[component list,bit width][storage type*][_]][_][storage type**] 293bf215546Sopenharmony_ci * * when type differs between component 294bf215546Sopenharmony_ci * ** when type applies to all components 295bf215546Sopenharmony_ci * 296bf215546Sopenharmony_ci * examples: msb <------ TEXEL BITS -----------> lsb 297bf215546Sopenharmony_ci * MESA_FORMAT_A8B8G8R8_UNORM, RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA 298bf215546Sopenharmony_ci * MESA_FORMAT_R5G6B5_UNORM BBBB BGGG GGGR RRRR 299bf215546Sopenharmony_ci * MESA_FORMAT_B4G4R4X4_UNORM XXXX RRRR GGGG BBBB 300bf215546Sopenharmony_ci * MESA_FORMAT_Z32_FLOAT_S8X24_UINT 301bf215546Sopenharmony_ci * MESA_FORMAT_R10G10B10A2_UINT 302bf215546Sopenharmony_ci * MESA_FORMAT_R9G9B9E5_FLOAT 303bf215546Sopenharmony_ci * 304bf215546Sopenharmony_ci * 305bf215546Sopenharmony_ci * 306bf215546Sopenharmony_ci * ---------- Component Labels: ---------- 307bf215546Sopenharmony_ci * A - Alpha 308bf215546Sopenharmony_ci * B - Blue 309bf215546Sopenharmony_ci * DU - Delta U 310bf215546Sopenharmony_ci * DV - Delta V 311bf215546Sopenharmony_ci * E - Shared Exponent 312bf215546Sopenharmony_ci * G - Green 313bf215546Sopenharmony_ci * I - Intensity 314bf215546Sopenharmony_ci * L - Luminance 315bf215546Sopenharmony_ci * R - Red 316bf215546Sopenharmony_ci * S - Stencil (when not followed by RGB or RGBA) 317bf215546Sopenharmony_ci * U - Chrominance 318bf215546Sopenharmony_ci * V - Chrominance 319bf215546Sopenharmony_ci * Y - Luma 320bf215546Sopenharmony_ci * X - Packing bits 321bf215546Sopenharmony_ci * Z - Depth 322bf215546Sopenharmony_ci * 323bf215546Sopenharmony_ci * 324bf215546Sopenharmony_ci * 325bf215546Sopenharmony_ci * ---------- Type C Compression Types: ---------- 326bf215546Sopenharmony_ci * DXT1 - Color component labels shall be given 327bf215546Sopenharmony_ci * DXT3 - Color component labels shall be given 328bf215546Sopenharmony_ci * DXT5 - Color component labels shall be given 329bf215546Sopenharmony_ci * ETC1 - No other information required 330bf215546Sopenharmony_ci * ETC2 - No other information required 331bf215546Sopenharmony_ci * FXT1 - Color component labels shall be given 332bf215546Sopenharmony_ci * FXT3 - Color component labels shall be given 333bf215546Sopenharmony_ci * LATC1 - Fundamental data type shall be given 334bf215546Sopenharmony_ci * LATC2 - Fundamental data type shall be given 335bf215546Sopenharmony_ci * RGTC1 - Color component labels and data type shall be given 336bf215546Sopenharmony_ci * RGTC2 - Color component labels and data type shall be given 337bf215546Sopenharmony_ci * 338bf215546Sopenharmony_ci * 339bf215546Sopenharmony_ci * 340bf215546Sopenharmony_ci * ---------- Storage Types: ---------- 341bf215546Sopenharmony_ci * FLOAT 342bf215546Sopenharmony_ci * SINT 343bf215546Sopenharmony_ci * UINT 344bf215546Sopenharmony_ci * SNORM 345bf215546Sopenharmony_ci * UNORM 346bf215546Sopenharmony_ci * SRGB - RGB components, or L are UNORMs in sRGB color space. 347bf215546Sopenharmony_ci * Alpha, if present is linear. 348bf215546Sopenharmony_ci * 349bf215546Sopenharmony_ci */ 350bf215546Sopenharmony_ci 351bf215546Sopenharmony_ci#define MESA_FORMAT_NONE PIPE_FORMAT_NONE 352bf215546Sopenharmony_ci#define MESA_FORMAT_A8B8G8R8_UNORM PIPE_FORMAT_ABGR8888_UNORM 353bf215546Sopenharmony_ci#define MESA_FORMAT_X8B8G8R8_UNORM PIPE_FORMAT_XBGR8888_UNORM 354bf215546Sopenharmony_ci#define MESA_FORMAT_R8G8B8A8_UNORM PIPE_FORMAT_RGBA8888_UNORM 355bf215546Sopenharmony_ci#define MESA_FORMAT_R8G8B8X8_UNORM PIPE_FORMAT_RGBX8888_UNORM 356bf215546Sopenharmony_ci#define MESA_FORMAT_B8G8R8A8_UNORM PIPE_FORMAT_BGRA8888_UNORM 357bf215546Sopenharmony_ci#define MESA_FORMAT_B8G8R8X8_UNORM PIPE_FORMAT_BGRX8888_UNORM 358bf215546Sopenharmony_ci#define MESA_FORMAT_A8R8G8B8_UNORM PIPE_FORMAT_ARGB8888_UNORM 359bf215546Sopenharmony_ci#define MESA_FORMAT_X8R8G8B8_UNORM PIPE_FORMAT_XRGB8888_UNORM 360bf215546Sopenharmony_ci#define MESA_FORMAT_B5G6R5_UNORM PIPE_FORMAT_B5G6R5_UNORM 361bf215546Sopenharmony_ci#define MESA_FORMAT_R5G6B5_UNORM PIPE_FORMAT_R5G6B5_UNORM 362bf215546Sopenharmony_ci#define MESA_FORMAT_B4G4R4A4_UNORM PIPE_FORMAT_B4G4R4A4_UNORM 363bf215546Sopenharmony_ci#define MESA_FORMAT_B4G4R4X4_UNORM PIPE_FORMAT_B4G4R4X4_UNORM 364bf215546Sopenharmony_ci#define MESA_FORMAT_A4R4G4B4_UNORM PIPE_FORMAT_A4R4G4B4_UNORM 365bf215546Sopenharmony_ci#define MESA_FORMAT_A1B5G5R5_UNORM PIPE_FORMAT_A1B5G5R5_UNORM 366bf215546Sopenharmony_ci#define MESA_FORMAT_X1B5G5R5_UNORM PIPE_FORMAT_X1B5G5R5_UNORM 367bf215546Sopenharmony_ci#define MESA_FORMAT_B5G5R5A1_UNORM PIPE_FORMAT_B5G5R5A1_UNORM 368bf215546Sopenharmony_ci#define MESA_FORMAT_B5G5R5X1_UNORM PIPE_FORMAT_B5G5R5X1_UNORM 369bf215546Sopenharmony_ci#define MESA_FORMAT_A1R5G5B5_UNORM PIPE_FORMAT_A1R5G5B5_UNORM 370bf215546Sopenharmony_ci#define MESA_FORMAT_L4A4_UNORM PIPE_FORMAT_L4A4_UNORM 371bf215546Sopenharmony_ci#define MESA_FORMAT_B2G3R3_UNORM PIPE_FORMAT_B2G3R3_UNORM 372bf215546Sopenharmony_ci#define MESA_FORMAT_B10G10R10A2_UNORM PIPE_FORMAT_B10G10R10A2_UNORM 373bf215546Sopenharmony_ci#define MESA_FORMAT_B10G10R10X2_UNORM PIPE_FORMAT_B10G10R10X2_UNORM 374bf215546Sopenharmony_ci#define MESA_FORMAT_R10G10B10A2_UNORM PIPE_FORMAT_R10G10B10A2_UNORM 375bf215546Sopenharmony_ci#define MESA_FORMAT_R10G10B10X2_UNORM PIPE_FORMAT_R10G10B10X2_UNORM 376bf215546Sopenharmony_ci#define MESA_FORMAT_S8_UINT_Z24_UNORM PIPE_FORMAT_S8_UINT_Z24_UNORM 377bf215546Sopenharmony_ci#define MESA_FORMAT_X8_UINT_Z24_UNORM PIPE_FORMAT_X8Z24_UNORM 378bf215546Sopenharmony_ci#define MESA_FORMAT_Z24_UNORM_S8_UINT PIPE_FORMAT_Z24_UNORM_S8_UINT 379bf215546Sopenharmony_ci#define MESA_FORMAT_Z24_UNORM_X8_UINT PIPE_FORMAT_Z24X8_UNORM 380bf215546Sopenharmony_ci#define MESA_FORMAT_R3G3B2_UNORM PIPE_FORMAT_R3G3B2_UNORM 381bf215546Sopenharmony_ci#define MESA_FORMAT_A4B4G4R4_UNORM PIPE_FORMAT_A4B4G4R4_UNORM 382bf215546Sopenharmony_ci#define MESA_FORMAT_R4G4B4A4_UNORM PIPE_FORMAT_R4G4B4A4_UNORM 383bf215546Sopenharmony_ci#define MESA_FORMAT_R5G5B5A1_UNORM PIPE_FORMAT_R5G5B5A1_UNORM 384bf215546Sopenharmony_ci#define MESA_FORMAT_A2B10G10R10_UNORM PIPE_FORMAT_A2B10G10R10_UNORM 385bf215546Sopenharmony_ci#define MESA_FORMAT_A2R10G10B10_UNORM PIPE_FORMAT_A2R10G10B10_UNORM 386bf215546Sopenharmony_ci#define MESA_FORMAT_YCBCR PIPE_FORMAT_UYVY 387bf215546Sopenharmony_ci#define MESA_FORMAT_YCBCR_REV PIPE_FORMAT_YUYV 388bf215546Sopenharmony_ci#define MESA_FORMAT_RG_RB_UNORM8 PIPE_FORMAT_R8G8_R8B8_UNORM 389bf215546Sopenharmony_ci#define MESA_FORMAT_GR_BR_UNORM8 PIPE_FORMAT_G8R8_B8R8_UNORM 390bf215546Sopenharmony_ci#define MESA_FORMAT_A_UNORM8 PIPE_FORMAT_A8_UNORM 391bf215546Sopenharmony_ci#define MESA_FORMAT_A_UNORM16 PIPE_FORMAT_A16_UNORM 392bf215546Sopenharmony_ci#define MESA_FORMAT_L_UNORM8 PIPE_FORMAT_L8_UNORM 393bf215546Sopenharmony_ci#define MESA_FORMAT_L_UNORM16 PIPE_FORMAT_L16_UNORM 394bf215546Sopenharmony_ci#define MESA_FORMAT_LA_UNORM8 PIPE_FORMAT_L8A8_UNORM 395bf215546Sopenharmony_ci#define MESA_FORMAT_LA_UNORM16 PIPE_FORMAT_L16A16_UNORM 396bf215546Sopenharmony_ci#define MESA_FORMAT_I_UNORM8 PIPE_FORMAT_I8_UNORM 397bf215546Sopenharmony_ci#define MESA_FORMAT_I_UNORM16 PIPE_FORMAT_I16_UNORM 398bf215546Sopenharmony_ci#define MESA_FORMAT_R_UNORM8 PIPE_FORMAT_R8_UNORM 399bf215546Sopenharmony_ci#define MESA_FORMAT_R_UNORM16 PIPE_FORMAT_R16_UNORM 400bf215546Sopenharmony_ci#define MESA_FORMAT_RG_UNORM8 PIPE_FORMAT_R8G8_UNORM 401bf215546Sopenharmony_ci#define MESA_FORMAT_RG_UNORM16 PIPE_FORMAT_R16G16_UNORM 402bf215546Sopenharmony_ci#define MESA_FORMAT_BGR_UNORM8 PIPE_FORMAT_B8G8R8_UNORM 403bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_UNORM8 PIPE_FORMAT_R8G8B8_UNORM 404bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_UNORM16 PIPE_FORMAT_R16G16B16A16_UNORM 405bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_UNORM16 PIPE_FORMAT_R16G16B16X16_UNORM 406bf215546Sopenharmony_ci#define MESA_FORMAT_Z_UNORM16 PIPE_FORMAT_Z16_UNORM 407bf215546Sopenharmony_ci#define MESA_FORMAT_Z_UNORM32 PIPE_FORMAT_Z32_UNORM 408bf215546Sopenharmony_ci#define MESA_FORMAT_S_UINT8 PIPE_FORMAT_S8_UINT 409bf215546Sopenharmony_ci#define MESA_FORMAT_A8B8G8R8_SNORM PIPE_FORMAT_ABGR8888_SNORM 410bf215546Sopenharmony_ci#define MESA_FORMAT_X8B8G8R8_SNORM PIPE_FORMAT_XBGR8888_SNORM 411bf215546Sopenharmony_ci#define MESA_FORMAT_R8G8B8A8_SNORM PIPE_FORMAT_RGBA8888_SNORM 412bf215546Sopenharmony_ci#define MESA_FORMAT_R8G8B8X8_SNORM PIPE_FORMAT_RGBX8888_SNORM 413bf215546Sopenharmony_ci#define MESA_FORMAT_A_SNORM8 PIPE_FORMAT_A8_SNORM 414bf215546Sopenharmony_ci#define MESA_FORMAT_A_SNORM16 PIPE_FORMAT_A16_SNORM 415bf215546Sopenharmony_ci#define MESA_FORMAT_L_SNORM8 PIPE_FORMAT_L8_SNORM 416bf215546Sopenharmony_ci#define MESA_FORMAT_L_SNORM16 PIPE_FORMAT_L16_SNORM 417bf215546Sopenharmony_ci#define MESA_FORMAT_I_SNORM8 PIPE_FORMAT_I8_SNORM 418bf215546Sopenharmony_ci#define MESA_FORMAT_I_SNORM16 PIPE_FORMAT_I16_SNORM 419bf215546Sopenharmony_ci#define MESA_FORMAT_R_SNORM8 PIPE_FORMAT_R8_SNORM 420bf215546Sopenharmony_ci#define MESA_FORMAT_R_SNORM16 PIPE_FORMAT_R16_SNORM 421bf215546Sopenharmony_ci#define MESA_FORMAT_LA_SNORM8 PIPE_FORMAT_L8A8_SNORM 422bf215546Sopenharmony_ci#define MESA_FORMAT_LA_SNORM16 PIPE_FORMAT_L16A16_SNORM 423bf215546Sopenharmony_ci#define MESA_FORMAT_RG_SNORM8 PIPE_FORMAT_R8G8_SNORM 424bf215546Sopenharmony_ci#define MESA_FORMAT_RG_SNORM16 PIPE_FORMAT_R16G16_SNORM 425bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_SNORM16 PIPE_FORMAT_R16G16B16_SNORM 426bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_SNORM16 PIPE_FORMAT_R16G16B16A16_SNORM 427bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_SNORM16 PIPE_FORMAT_R16G16B16X16_SNORM 428bf215546Sopenharmony_ci#define MESA_FORMAT_A8B8G8R8_SRGB PIPE_FORMAT_ABGR8888_SRGB 429bf215546Sopenharmony_ci#define MESA_FORMAT_B8G8R8A8_SRGB PIPE_FORMAT_BGRA8888_SRGB 430bf215546Sopenharmony_ci#define MESA_FORMAT_A8R8G8B8_SRGB PIPE_FORMAT_ARGB8888_SRGB 431bf215546Sopenharmony_ci#define MESA_FORMAT_B8G8R8X8_SRGB PIPE_FORMAT_BGRX8888_SRGB 432bf215546Sopenharmony_ci#define MESA_FORMAT_X8R8G8B8_SRGB PIPE_FORMAT_XRGB8888_SRGB 433bf215546Sopenharmony_ci#define MESA_FORMAT_R8G8B8A8_SRGB PIPE_FORMAT_RGBA8888_SRGB 434bf215546Sopenharmony_ci#define MESA_FORMAT_R8G8B8X8_SRGB PIPE_FORMAT_RGBX8888_SRGB 435bf215546Sopenharmony_ci#define MESA_FORMAT_X8B8G8R8_SRGB PIPE_FORMAT_XBGR8888_SRGB 436bf215546Sopenharmony_ci#define MESA_FORMAT_R_SRGB8 PIPE_FORMAT_R8_SRGB 437bf215546Sopenharmony_ci#define MESA_FORMAT_RG_SRGB8 PIPE_FORMAT_R8G8_SRGB 438bf215546Sopenharmony_ci#define MESA_FORMAT_L_SRGB8 PIPE_FORMAT_L8_SRGB 439bf215546Sopenharmony_ci#define MESA_FORMAT_LA_SRGB8 PIPE_FORMAT_L8A8_SRGB 440bf215546Sopenharmony_ci#define MESA_FORMAT_BGR_SRGB8 PIPE_FORMAT_R8G8B8_SRGB 441bf215546Sopenharmony_ci#define MESA_FORMAT_R9G9B9E5_FLOAT PIPE_FORMAT_R9G9B9E5_FLOAT 442bf215546Sopenharmony_ci#define MESA_FORMAT_R11G11B10_FLOAT PIPE_FORMAT_R11G11B10_FLOAT 443bf215546Sopenharmony_ci#define MESA_FORMAT_Z32_FLOAT_S8X24_UINT PIPE_FORMAT_Z32_FLOAT_S8X24_UINT 444bf215546Sopenharmony_ci#define MESA_FORMAT_A_FLOAT16 PIPE_FORMAT_A16_FLOAT 445bf215546Sopenharmony_ci#define MESA_FORMAT_A_FLOAT32 PIPE_FORMAT_A32_FLOAT 446bf215546Sopenharmony_ci#define MESA_FORMAT_L_FLOAT16 PIPE_FORMAT_L16_FLOAT 447bf215546Sopenharmony_ci#define MESA_FORMAT_L_FLOAT32 PIPE_FORMAT_L32_FLOAT 448bf215546Sopenharmony_ci#define MESA_FORMAT_LA_FLOAT16 PIPE_FORMAT_L16A16_FLOAT 449bf215546Sopenharmony_ci#define MESA_FORMAT_LA_FLOAT32 PIPE_FORMAT_L32A32_FLOAT 450bf215546Sopenharmony_ci#define MESA_FORMAT_I_FLOAT16 PIPE_FORMAT_I16_FLOAT 451bf215546Sopenharmony_ci#define MESA_FORMAT_I_FLOAT32 PIPE_FORMAT_I32_FLOAT 452bf215546Sopenharmony_ci#define MESA_FORMAT_R_FLOAT16 PIPE_FORMAT_R16_FLOAT 453bf215546Sopenharmony_ci#define MESA_FORMAT_R_FLOAT32 PIPE_FORMAT_R32_FLOAT 454bf215546Sopenharmony_ci#define MESA_FORMAT_RG_FLOAT16 PIPE_FORMAT_R16G16_FLOAT 455bf215546Sopenharmony_ci#define MESA_FORMAT_RG_FLOAT32 PIPE_FORMAT_R32G32_FLOAT 456bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_FLOAT16 PIPE_FORMAT_R16G16B16_FLOAT 457bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_FLOAT32 PIPE_FORMAT_R32G32B32_FLOAT 458bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_FLOAT16 PIPE_FORMAT_R16G16B16A16_FLOAT 459bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_FLOAT32 PIPE_FORMAT_R32G32B32A32_FLOAT 460bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_FLOAT16 PIPE_FORMAT_R16G16B16X16_FLOAT 461bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_FLOAT32 PIPE_FORMAT_R32G32B32X32_FLOAT 462bf215546Sopenharmony_ci#define MESA_FORMAT_Z_FLOAT32 PIPE_FORMAT_Z32_FLOAT 463bf215546Sopenharmony_ci#define MESA_FORMAT_A8B8G8R8_UINT PIPE_FORMAT_ABGR8888_UINT 464bf215546Sopenharmony_ci#define MESA_FORMAT_A8R8G8B8_UINT PIPE_FORMAT_ARGB8888_UINT 465bf215546Sopenharmony_ci#define MESA_FORMAT_R8G8B8A8_UINT PIPE_FORMAT_RGBA8888_UINT 466bf215546Sopenharmony_ci#define MESA_FORMAT_B8G8R8A8_UINT PIPE_FORMAT_BGRA8888_UINT 467bf215546Sopenharmony_ci#define MESA_FORMAT_B10G10R10A2_UINT PIPE_FORMAT_B10G10R10A2_UINT 468bf215546Sopenharmony_ci#define MESA_FORMAT_R10G10B10A2_UINT PIPE_FORMAT_R10G10B10A2_UINT 469bf215546Sopenharmony_ci#define MESA_FORMAT_A2B10G10R10_UINT PIPE_FORMAT_A2B10G10R10_UINT 470bf215546Sopenharmony_ci#define MESA_FORMAT_A2R10G10B10_UINT PIPE_FORMAT_A2R10G10B10_UINT 471bf215546Sopenharmony_ci#define MESA_FORMAT_B5G6R5_UINT PIPE_FORMAT_B5G6R5_UINT 472bf215546Sopenharmony_ci#define MESA_FORMAT_R5G6B5_UINT PIPE_FORMAT_R5G6B5_UINT 473bf215546Sopenharmony_ci#define MESA_FORMAT_B2G3R3_UINT PIPE_FORMAT_B2G3R3_UINT 474bf215546Sopenharmony_ci#define MESA_FORMAT_R3G3B2_UINT PIPE_FORMAT_R3G3B2_UINT 475bf215546Sopenharmony_ci#define MESA_FORMAT_A4B4G4R4_UINT PIPE_FORMAT_A4B4G4R4_UINT 476bf215546Sopenharmony_ci#define MESA_FORMAT_R4G4B4A4_UINT PIPE_FORMAT_R4G4B4A4_UINT 477bf215546Sopenharmony_ci#define MESA_FORMAT_B4G4R4A4_UINT PIPE_FORMAT_B4G4R4A4_UINT 478bf215546Sopenharmony_ci#define MESA_FORMAT_A4R4G4B4_UINT PIPE_FORMAT_A4R4G4B4_UINT 479bf215546Sopenharmony_ci#define MESA_FORMAT_A1B5G5R5_UINT PIPE_FORMAT_A1B5G5R5_UINT 480bf215546Sopenharmony_ci#define MESA_FORMAT_B5G5R5A1_UINT PIPE_FORMAT_B5G5R5A1_UINT 481bf215546Sopenharmony_ci#define MESA_FORMAT_A1R5G5B5_UINT PIPE_FORMAT_A1R5G5B5_UINT 482bf215546Sopenharmony_ci#define MESA_FORMAT_R5G5B5A1_UINT PIPE_FORMAT_R5G5B5A1_UINT 483bf215546Sopenharmony_ci#define MESA_FORMAT_A_UINT8 PIPE_FORMAT_A8_UINT 484bf215546Sopenharmony_ci#define MESA_FORMAT_A_UINT16 PIPE_FORMAT_A16_UINT 485bf215546Sopenharmony_ci#define MESA_FORMAT_A_UINT32 PIPE_FORMAT_A32_UINT 486bf215546Sopenharmony_ci#define MESA_FORMAT_A_SINT8 PIPE_FORMAT_A8_SINT 487bf215546Sopenharmony_ci#define MESA_FORMAT_A_SINT16 PIPE_FORMAT_A16_SINT 488bf215546Sopenharmony_ci#define MESA_FORMAT_A_SINT32 PIPE_FORMAT_A32_SINT 489bf215546Sopenharmony_ci#define MESA_FORMAT_I_UINT8 PIPE_FORMAT_I8_UINT 490bf215546Sopenharmony_ci#define MESA_FORMAT_I_UINT16 PIPE_FORMAT_I16_UINT 491bf215546Sopenharmony_ci#define MESA_FORMAT_I_UINT32 PIPE_FORMAT_I32_UINT 492bf215546Sopenharmony_ci#define MESA_FORMAT_I_SINT8 PIPE_FORMAT_I8_SINT 493bf215546Sopenharmony_ci#define MESA_FORMAT_I_SINT16 PIPE_FORMAT_I16_SINT 494bf215546Sopenharmony_ci#define MESA_FORMAT_I_SINT32 PIPE_FORMAT_I32_SINT 495bf215546Sopenharmony_ci#define MESA_FORMAT_L_UINT8 PIPE_FORMAT_L8_UINT 496bf215546Sopenharmony_ci#define MESA_FORMAT_L_UINT16 PIPE_FORMAT_L16_UINT 497bf215546Sopenharmony_ci#define MESA_FORMAT_L_UINT32 PIPE_FORMAT_L32_UINT 498bf215546Sopenharmony_ci#define MESA_FORMAT_L_SINT8 PIPE_FORMAT_L8_SINT 499bf215546Sopenharmony_ci#define MESA_FORMAT_L_SINT16 PIPE_FORMAT_L16_SINT 500bf215546Sopenharmony_ci#define MESA_FORMAT_L_SINT32 PIPE_FORMAT_L32_SINT 501bf215546Sopenharmony_ci#define MESA_FORMAT_LA_UINT8 PIPE_FORMAT_L8A8_UINT 502bf215546Sopenharmony_ci#define MESA_FORMAT_LA_UINT16 PIPE_FORMAT_L16A16_UINT 503bf215546Sopenharmony_ci#define MESA_FORMAT_LA_UINT32 PIPE_FORMAT_L32A32_UINT 504bf215546Sopenharmony_ci#define MESA_FORMAT_LA_SINT8 PIPE_FORMAT_L8A8_SINT 505bf215546Sopenharmony_ci#define MESA_FORMAT_LA_SINT16 PIPE_FORMAT_L16A16_SINT 506bf215546Sopenharmony_ci#define MESA_FORMAT_LA_SINT32 PIPE_FORMAT_L32A32_SINT 507bf215546Sopenharmony_ci#define MESA_FORMAT_R_UINT8 PIPE_FORMAT_R8_UINT 508bf215546Sopenharmony_ci#define MESA_FORMAT_R_UINT16 PIPE_FORMAT_R16_UINT 509bf215546Sopenharmony_ci#define MESA_FORMAT_R_UINT32 PIPE_FORMAT_R32_UINT 510bf215546Sopenharmony_ci#define MESA_FORMAT_R_SINT8 PIPE_FORMAT_R8_SINT 511bf215546Sopenharmony_ci#define MESA_FORMAT_R_SINT16 PIPE_FORMAT_R16_SINT 512bf215546Sopenharmony_ci#define MESA_FORMAT_R_SINT32 PIPE_FORMAT_R32_SINT 513bf215546Sopenharmony_ci#define MESA_FORMAT_RG_UINT8 PIPE_FORMAT_R8G8_UINT 514bf215546Sopenharmony_ci#define MESA_FORMAT_RG_UINT16 PIPE_FORMAT_R16G16_UINT 515bf215546Sopenharmony_ci#define MESA_FORMAT_RG_UINT32 PIPE_FORMAT_R32G32_UINT 516bf215546Sopenharmony_ci#define MESA_FORMAT_RG_SINT8 PIPE_FORMAT_R8G8_SINT 517bf215546Sopenharmony_ci#define MESA_FORMAT_RG_SINT16 PIPE_FORMAT_R16G16_SINT 518bf215546Sopenharmony_ci#define MESA_FORMAT_RG_SINT32 PIPE_FORMAT_R32G32_SINT 519bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_UINT8 PIPE_FORMAT_R8G8B8_UINT 520bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_UINT16 PIPE_FORMAT_R16G16B16_UINT 521bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_UINT32 PIPE_FORMAT_R32G32B32_UINT 522bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_SINT8 PIPE_FORMAT_R8G8B8_SINT 523bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_SINT16 PIPE_FORMAT_R16G16B16_SINT 524bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_SINT32 PIPE_FORMAT_R32G32B32_SINT 525bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_UINT16 PIPE_FORMAT_R16G16B16A16_UINT 526bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_UINT32 PIPE_FORMAT_R32G32B32A32_UINT 527bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_SINT8 PIPE_FORMAT_R8G8B8A8_SINT 528bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_SINT16 PIPE_FORMAT_R16G16B16A16_SINT 529bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_SINT32 PIPE_FORMAT_R32G32B32A32_SINT 530bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_UINT8 PIPE_FORMAT_R8G8B8X8_UINT 531bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_UINT16 PIPE_FORMAT_R16G16B16X16_UINT 532bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_UINT32 PIPE_FORMAT_R32G32B32X32_UINT 533bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_SINT8 PIPE_FORMAT_R8G8B8X8_SINT 534bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_SINT16 PIPE_FORMAT_R16G16B16X16_SINT 535bf215546Sopenharmony_ci#define MESA_FORMAT_RGBX_SINT32 PIPE_FORMAT_R32G32B32X32_SINT 536bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_DXT1 PIPE_FORMAT_DXT1_RGB 537bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_DXT1 PIPE_FORMAT_DXT1_RGBA 538bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_DXT3 PIPE_FORMAT_DXT3_RGBA 539bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_DXT5 PIPE_FORMAT_DXT5_RGBA 540bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB_DXT1 PIPE_FORMAT_DXT1_SRGB 541bf215546Sopenharmony_ci#define MESA_FORMAT_SRGBA_DXT1 PIPE_FORMAT_DXT1_SRGBA 542bf215546Sopenharmony_ci#define MESA_FORMAT_SRGBA_DXT3 PIPE_FORMAT_DXT3_SRGBA 543bf215546Sopenharmony_ci#define MESA_FORMAT_SRGBA_DXT5 PIPE_FORMAT_DXT5_SRGBA 544bf215546Sopenharmony_ci#define MESA_FORMAT_RGB_FXT1 PIPE_FORMAT_FXT1_RGB 545bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_FXT1 PIPE_FORMAT_FXT1_RGBA 546bf215546Sopenharmony_ci#define MESA_FORMAT_R_RGTC1_UNORM PIPE_FORMAT_RGTC1_UNORM 547bf215546Sopenharmony_ci#define MESA_FORMAT_R_RGTC1_SNORM PIPE_FORMAT_RGTC1_SNORM 548bf215546Sopenharmony_ci#define MESA_FORMAT_RG_RGTC2_UNORM PIPE_FORMAT_RGTC2_UNORM 549bf215546Sopenharmony_ci#define MESA_FORMAT_RG_RGTC2_SNORM PIPE_FORMAT_RGTC2_SNORM 550bf215546Sopenharmony_ci#define MESA_FORMAT_L_LATC1_UNORM PIPE_FORMAT_LATC1_UNORM 551bf215546Sopenharmony_ci#define MESA_FORMAT_L_LATC1_SNORM PIPE_FORMAT_LATC1_SNORM 552bf215546Sopenharmony_ci#define MESA_FORMAT_LA_LATC2_UNORM PIPE_FORMAT_LATC2_UNORM 553bf215546Sopenharmony_ci#define MESA_FORMAT_LA_LATC2_SNORM PIPE_FORMAT_LATC2_SNORM 554bf215546Sopenharmony_ci#define MESA_FORMAT_ETC1_RGB8 PIPE_FORMAT_ETC1_RGB8 555bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_RGB8 PIPE_FORMAT_ETC2_RGB8 556bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_SRGB8 PIPE_FORMAT_ETC2_SRGB8 557bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_RGBA8_EAC PIPE_FORMAT_ETC2_RGBA8 558bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_SRGB8_ALPHA8_EAC PIPE_FORMAT_ETC2_SRGBA8 559bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_R11_EAC PIPE_FORMAT_ETC2_R11_UNORM 560bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_RG11_EAC PIPE_FORMAT_ETC2_RG11_UNORM 561bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_SIGNED_R11_EAC PIPE_FORMAT_ETC2_R11_SNORM 562bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_SIGNED_RG11_EAC PIPE_FORMAT_ETC2_RG11_SNORM 563bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_RGB8_PUNCHTHROUGH_ALPHA1 PIPE_FORMAT_ETC2_RGB8A1 564bf215546Sopenharmony_ci#define MESA_FORMAT_ETC2_SRGB8_PUNCHTHROUGH_ALPHA1 PIPE_FORMAT_ETC2_SRGB8A1 565bf215546Sopenharmony_ci#define MESA_FORMAT_BPTC_RGBA_UNORM PIPE_FORMAT_BPTC_RGBA_UNORM 566bf215546Sopenharmony_ci#define MESA_FORMAT_BPTC_SRGB_ALPHA_UNORM PIPE_FORMAT_BPTC_SRGBA 567bf215546Sopenharmony_ci#define MESA_FORMAT_BPTC_RGB_SIGNED_FLOAT PIPE_FORMAT_BPTC_RGB_FLOAT 568bf215546Sopenharmony_ci#define MESA_FORMAT_BPTC_RGB_UNSIGNED_FLOAT PIPE_FORMAT_BPTC_RGB_UFLOAT 569bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_4x4 PIPE_FORMAT_ASTC_4x4 570bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_5x4 PIPE_FORMAT_ASTC_5x4 571bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_5x5 PIPE_FORMAT_ASTC_5x5 572bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_6x5 PIPE_FORMAT_ASTC_6x5 573bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_6x6 PIPE_FORMAT_ASTC_6x6 574bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_8x5 PIPE_FORMAT_ASTC_8x5 575bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_8x6 PIPE_FORMAT_ASTC_8x6 576bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_8x8 PIPE_FORMAT_ASTC_8x8 577bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_10x5 PIPE_FORMAT_ASTC_10x5 578bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_10x6 PIPE_FORMAT_ASTC_10x6 579bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_10x8 PIPE_FORMAT_ASTC_10x8 580bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_10x10 PIPE_FORMAT_ASTC_10x10 581bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_12x10 PIPE_FORMAT_ASTC_12x10 582bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_12x12 PIPE_FORMAT_ASTC_12x12 583bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4 PIPE_FORMAT_ASTC_4x4_SRGB 584bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4 PIPE_FORMAT_ASTC_5x4_SRGB 585bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5 PIPE_FORMAT_ASTC_5x5_SRGB 586bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5 PIPE_FORMAT_ASTC_6x5_SRGB 587bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6 PIPE_FORMAT_ASTC_6x6_SRGB 588bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x5 PIPE_FORMAT_ASTC_8x5_SRGB 589bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x6 PIPE_FORMAT_ASTC_8x6_SRGB 590bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_8x8 PIPE_FORMAT_ASTC_8x8_SRGB 591bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x5 PIPE_FORMAT_ASTC_10x5_SRGB 592bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x6 PIPE_FORMAT_ASTC_10x6_SRGB 593bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x8 PIPE_FORMAT_ASTC_10x8_SRGB 594bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_10x10 PIPE_FORMAT_ASTC_10x10_SRGB 595bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x10 PIPE_FORMAT_ASTC_12x10_SRGB 596bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_12x12 PIPE_FORMAT_ASTC_12x12_SRGB 597bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_3x3x3 PIPE_FORMAT_ASTC_3x3x3 598bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_4x3x3 PIPE_FORMAT_ASTC_4x3x3 599bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_4x4x3 PIPE_FORMAT_ASTC_4x4x3 600bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_4x4x4 PIPE_FORMAT_ASTC_4x4x4 601bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_5x4x4 PIPE_FORMAT_ASTC_5x4x4 602bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_5x5x4 PIPE_FORMAT_ASTC_5x5x4 603bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_5x5x5 PIPE_FORMAT_ASTC_5x5x5 604bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_6x5x5 PIPE_FORMAT_ASTC_6x5x5 605bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_6x6x5 PIPE_FORMAT_ASTC_6x6x5 606bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_ASTC_6x6x6 PIPE_FORMAT_ASTC_6x6x6 607bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_3x3x3 PIPE_FORMAT_ASTC_3x3x3_SRGB 608bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x3x3 PIPE_FORMAT_ASTC_4x3x3_SRGB 609bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4x3 PIPE_FORMAT_ASTC_4x4x3_SRGB 610bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_4x4x4 PIPE_FORMAT_ASTC_4x4x4_SRGB 611bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x4x4 PIPE_FORMAT_ASTC_5x4x4_SRGB 612bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5x4 PIPE_FORMAT_ASTC_5x5x4_SRGB 613bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_5x5x5 PIPE_FORMAT_ASTC_5x5x5_SRGB 614bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x5x5 PIPE_FORMAT_ASTC_6x5x5_SRGB 615bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x5 PIPE_FORMAT_ASTC_6x6x5_SRGB 616bf215546Sopenharmony_ci#define MESA_FORMAT_SRGB8_ALPHA8_ASTC_6x6x6 PIPE_FORMAT_ASTC_6x6x6_SRGB 617bf215546Sopenharmony_ci#define MESA_FORMAT_ATC_RGB PIPE_FORMAT_ATC_RGB 618bf215546Sopenharmony_ci#define MESA_FORMAT_ATC_RGBA_EXPLICIT PIPE_FORMAT_ATC_RGBA_EXPLICIT 619bf215546Sopenharmony_ci#define MESA_FORMAT_ATC_RGBA_INTERPOLATED PIPE_FORMAT_ATC_RGBA_INTERPOLATED 620bf215546Sopenharmony_ci#define MESA_FORMAT_COUNT PIPE_FORMAT_COUNT 621bf215546Sopenharmony_ci 622bf215546Sopenharmony_ci/* Packed to array format adapters */ 623bf215546Sopenharmony_ci#if UTIL_ARCH_LITTLE_ENDIAN 624bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_UINT8 MESA_FORMAT_R8G8B8A8_UINT 625bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_UNORM8 MESA_FORMAT_R8G8B8A8_UNORM 626bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_SNORM8 MESA_FORMAT_R8G8B8A8_SNORM 627bf215546Sopenharmony_ci#else 628bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_UINT8 MESA_FORMAT_A8B8G8R8_UINT 629bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_UNORM8 MESA_FORMAT_A8B8G8R8_UNORM 630bf215546Sopenharmony_ci#define MESA_FORMAT_RGBA_SNORM8 MESA_FORMAT_A8B8G8R8_SNORM 631bf215546Sopenharmony_ci#endif 632bf215546Sopenharmony_ci 633bf215546Sopenharmony_ciextern const char * 634bf215546Sopenharmony_ci_mesa_get_format_name(mesa_format format); 635bf215546Sopenharmony_ci 636bf215546Sopenharmony_ciextern int 637bf215546Sopenharmony_ci_mesa_get_format_bytes(mesa_format format); 638bf215546Sopenharmony_ci 639bf215546Sopenharmony_ciextern GLint 640bf215546Sopenharmony_ci_mesa_get_format_bits(mesa_format format, GLenum pname); 641bf215546Sopenharmony_ci 642bf215546Sopenharmony_ciextern unsigned int 643bf215546Sopenharmony_ci_mesa_get_format_max_bits(mesa_format format); 644bf215546Sopenharmony_ci 645bf215546Sopenharmony_ciextern enum mesa_format_layout 646bf215546Sopenharmony_ci_mesa_get_format_layout(mesa_format format); 647bf215546Sopenharmony_ci 648bf215546Sopenharmony_ciextern GLenum 649bf215546Sopenharmony_ci_mesa_get_format_datatype(mesa_format format); 650bf215546Sopenharmony_ci 651bf215546Sopenharmony_ciextern GLenum 652bf215546Sopenharmony_ci_mesa_get_format_base_format(uint32_t format); 653bf215546Sopenharmony_ci 654bf215546Sopenharmony_ciextern void 655bf215546Sopenharmony_ci_mesa_get_format_block_size(mesa_format format, 656bf215546Sopenharmony_ci unsigned int *bw, unsigned int *bh); 657bf215546Sopenharmony_ci 658bf215546Sopenharmony_ciextern void 659bf215546Sopenharmony_ci_mesa_get_format_block_size_3d(mesa_format format, unsigned int *bw, 660bf215546Sopenharmony_ci unsigned int *bh, unsigned int *bd); 661bf215546Sopenharmony_ci 662bf215546Sopenharmony_ciextern mesa_array_format 663bf215546Sopenharmony_ci_mesa_array_format_flip_channels(mesa_array_format format); 664bf215546Sopenharmony_ci 665bf215546Sopenharmony_ciextern void 666bf215546Sopenharmony_ci_mesa_get_format_swizzle(mesa_format format, uint8_t swizzle_out[4]); 667bf215546Sopenharmony_ci 668bf215546Sopenharmony_ciextern uint32_t 669bf215546Sopenharmony_ci_mesa_format_to_array_format(mesa_format format); 670bf215546Sopenharmony_ci 671bf215546Sopenharmony_ciextern mesa_format 672bf215546Sopenharmony_ci_mesa_format_from_array_format(uint32_t array_format); 673bf215546Sopenharmony_ci 674bf215546Sopenharmony_ciextern bool 675bf215546Sopenharmony_ci_mesa_is_format_compressed(mesa_format format); 676bf215546Sopenharmony_ci 677bf215546Sopenharmony_ciextern bool 678bf215546Sopenharmony_ci_mesa_is_format_packed_depth_stencil(mesa_format format); 679bf215546Sopenharmony_ci 680bf215546Sopenharmony_ciextern bool 681bf215546Sopenharmony_ci_mesa_is_format_integer_color(mesa_format format); 682bf215546Sopenharmony_ci 683bf215546Sopenharmony_ciextern bool 684bf215546Sopenharmony_ci_mesa_is_format_unsigned(mesa_format format); 685bf215546Sopenharmony_ci 686bf215546Sopenharmony_ciextern bool 687bf215546Sopenharmony_ci_mesa_is_format_signed(mesa_format format); 688bf215546Sopenharmony_ci 689bf215546Sopenharmony_ciextern bool 690bf215546Sopenharmony_ci_mesa_is_format_integer(mesa_format format); 691bf215546Sopenharmony_ci 692bf215546Sopenharmony_ciextern bool 693bf215546Sopenharmony_ci_mesa_is_format_etc2(mesa_format format); 694bf215546Sopenharmony_ci 695bf215546Sopenharmony_cibool 696bf215546Sopenharmony_ci_mesa_is_format_astc_2d(mesa_format format); 697bf215546Sopenharmony_ci 698bf215546Sopenharmony_cibool 699bf215546Sopenharmony_ci_mesa_is_format_color_format(mesa_format format); 700bf215546Sopenharmony_ci 701bf215546Sopenharmony_cibool 702bf215546Sopenharmony_ci_mesa_is_format_srgb(mesa_format format); 703bf215546Sopenharmony_ci 704bf215546Sopenharmony_ciextern uint32_t 705bf215546Sopenharmony_ci_mesa_format_image_size(mesa_format format, int width, 706bf215546Sopenharmony_ci int height, int depth); 707bf215546Sopenharmony_ci 708bf215546Sopenharmony_ciextern uint64_t 709bf215546Sopenharmony_ci_mesa_format_image_size64(mesa_format format, int width, 710bf215546Sopenharmony_ci int height, int depth); 711bf215546Sopenharmony_ci 712bf215546Sopenharmony_ciextern int32_t 713bf215546Sopenharmony_ci_mesa_format_row_stride(mesa_format format, int width); 714bf215546Sopenharmony_ci 715bf215546Sopenharmony_ciextern void 716bf215546Sopenharmony_ci_mesa_uncompressed_format_to_type_and_comps(mesa_format format, 717bf215546Sopenharmony_ci GLenum *datatype, GLuint *comps); 718bf215546Sopenharmony_ci 719bf215546Sopenharmony_ciextern void 720bf215546Sopenharmony_ci_mesa_test_formats(void); 721bf215546Sopenharmony_ci 722bf215546Sopenharmony_ciextern mesa_format 723bf215546Sopenharmony_ci_mesa_get_srgb_format_linear(mesa_format format); 724bf215546Sopenharmony_ci 725bf215546Sopenharmony_ciextern mesa_format 726bf215546Sopenharmony_ci_mesa_get_intensity_format_red(mesa_format format); 727bf215546Sopenharmony_ci 728bf215546Sopenharmony_ciextern mesa_format 729bf215546Sopenharmony_ci_mesa_get_uncompressed_format(mesa_format format); 730bf215546Sopenharmony_ci 731bf215546Sopenharmony_ciextern unsigned int 732bf215546Sopenharmony_ci_mesa_format_num_components(mesa_format format); 733bf215546Sopenharmony_ci 734bf215546Sopenharmony_ciextern bool 735bf215546Sopenharmony_ci_mesa_format_has_color_component(mesa_format format, int component); 736bf215546Sopenharmony_ci 737bf215546Sopenharmony_cibool 738bf215546Sopenharmony_ci_mesa_format_matches_format_and_type(mesa_format mesa_format, 739bf215546Sopenharmony_ci GLenum format, GLenum type, 740bf215546Sopenharmony_ci bool swapBytes, GLenum *error); 741bf215546Sopenharmony_ci 742bf215546Sopenharmony_ci#ifdef __cplusplus 743bf215546Sopenharmony_ci} 744bf215546Sopenharmony_ci#endif 745bf215546Sopenharmony_ci 746bf215546Sopenharmony_ci#endif /* FORMATS_H */ 747