xref: /third_party/mesa3d/src/mesa/main/formats.h (revision bf215546)
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