1813870fd9588de101f68728507cff726d7513695Brian Paul/*
2813870fd9588de101f68728507cff726d7513695Brian Paul * Mesa 3-D graphics library
3813870fd9588de101f68728507cff726d7513695Brian Paul * Version:  7.7
4813870fd9588de101f68728507cff726d7513695Brian Paul *
5813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
6813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (c) 2008-2009  VMware, Inc.
7813870fd9588de101f68728507cff726d7513695Brian Paul *
8813870fd9588de101f68728507cff726d7513695Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a
9813870fd9588de101f68728507cff726d7513695Brian Paul * copy of this software and associated documentation files (the "Software"),
10813870fd9588de101f68728507cff726d7513695Brian Paul * to deal in the Software without restriction, including without limitation
11813870fd9588de101f68728507cff726d7513695Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12813870fd9588de101f68728507cff726d7513695Brian Paul * and/or sell copies of the Software, and to permit persons to whom the
13813870fd9588de101f68728507cff726d7513695Brian Paul * Software is furnished to do so, subject to the following conditions:
14813870fd9588de101f68728507cff726d7513695Brian Paul *
15813870fd9588de101f68728507cff726d7513695Brian Paul * The above copyright notice and this permission notice shall be included
16813870fd9588de101f68728507cff726d7513695Brian Paul * in all copies or substantial portions of the Software.
17813870fd9588de101f68728507cff726d7513695Brian Paul *
18813870fd9588de101f68728507cff726d7513695Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19813870fd9588de101f68728507cff726d7513695Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20813870fd9588de101f68728507cff726d7513695Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21813870fd9588de101f68728507cff726d7513695Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22813870fd9588de101f68728507cff726d7513695Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23813870fd9588de101f68728507cff726d7513695Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24813870fd9588de101f68728507cff726d7513695Brian Paul */
25813870fd9588de101f68728507cff726d7513695Brian Paul
26813870fd9588de101f68728507cff726d7513695Brian Paul
27c28d78f8324cfc17936af63c258a1cc55d590d60Brian Paul#include "imports.h"
28813870fd9588de101f68728507cff726d7513695Brian Paul#include "formats.h"
293a6f9d0f47861b1c618366d679ad8ddd9a06b323Brian Paul#include "mfeatures.h"
30488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul#include "macros.h"
319ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen#include "glformats.h"
32813870fd9588de101f68728507cff726d7513695Brian Paul
33813870fd9588de101f68728507cff726d7513695Brian Paul
34813870fd9588de101f68728507cff726d7513695Brian Paul/**
35be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Information about texture formats.
36be0765cd6ec47cf068775197f312a1123e044566Brian Paul */
37be0765cd6ec47cf068775197f312a1123e044566Brian Paulstruct gl_format_info
38be0765cd6ec47cf068775197f312a1123e044566Brian Paul{
39be0765cd6ec47cf068775197f312a1123e044566Brian Paul   gl_format Name;
40be0765cd6ec47cf068775197f312a1123e044566Brian Paul
41bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   /** text name for debugging */
42bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   const char *StrName;
43bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
44be0765cd6ec47cf068775197f312a1123e044566Brian Paul   /**
452d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt    * Base format is one of GL_RED, GL_RG, GL_RGB, GL_RGBA, GL_ALPHA,
462d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt    * GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_YCBCR_MESA,
4755d232a81566cf7ab8855c42e2ef1a280276a04cIan Romanick    * GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_DEPTH_STENCIL, GL_DUDV_ATI.
48be0765cd6ec47cf068775197f312a1123e044566Brian Paul    */
49be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLenum BaseFormat;
50be0765cd6ec47cf068775197f312a1123e044566Brian Paul
51be0765cd6ec47cf068775197f312a1123e044566Brian Paul   /**
5282fff5f3edfd2f6396a872a12d753b2ab90edd7bBrian Paul    * Logical data type: one of  GL_UNSIGNED_NORMALIZED, GL_SIGNED_NORMALIZED,
53abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul    * GL_UNSIGNED_INT, GL_INT, GL_FLOAT.
54be0765cd6ec47cf068775197f312a1123e044566Brian Paul    */
55be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLenum DataType;
56be0765cd6ec47cf068775197f312a1123e044566Brian Paul
57be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte RedBits;
58be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte GreenBits;
59be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte BlueBits;
60be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte AlphaBits;
61be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte LuminanceBits;
62be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte IntensityBits;
63be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte IndexBits;
64be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte DepthBits;
65be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte StencilBits;
66be0765cd6ec47cf068775197f312a1123e044566Brian Paul
67be0765cd6ec47cf068775197f312a1123e044566Brian Paul   /**
68be0765cd6ec47cf068775197f312a1123e044566Brian Paul    * To describe compressed formats.  If not compressed, Width=Height=1.
69be0765cd6ec47cf068775197f312a1123e044566Brian Paul    */
70be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte BlockWidth, BlockHeight;
71be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte BytesPerBlock;
72be0765cd6ec47cf068775197f312a1123e044566Brian Paul};
73be0765cd6ec47cf068775197f312a1123e044566Brian Paul
74be0765cd6ec47cf068775197f312a1123e044566Brian Paul
75be0765cd6ec47cf068775197f312a1123e044566Brian Paul/**
76813870fd9588de101f68728507cff726d7513695Brian Paul * Info about each format.
77813870fd9588de101f68728507cff726d7513695Brian Paul * These must be in the same order as the MESA_FORMAT_* enums so that
78813870fd9588de101f68728507cff726d7513695Brian Paul * we can do lookups without searching.
79813870fd9588de101f68728507cff726d7513695Brian Paul */
80813870fd9588de101f68728507cff726d7513695Brian Paulstatic struct gl_format_info format_info[MESA_FORMAT_COUNT] =
81813870fd9588de101f68728507cff726d7513695Brian Paul{
82813870fd9588de101f68728507cff726d7513695Brian Paul   {
83e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      MESA_FORMAT_NONE,            /* Name */
84bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_NONE",          /* StrName */
85e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      GL_NONE,                     /* BaseFormat */
86e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      GL_NONE,                     /* DataType */
87e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
88e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
89e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      0, 0, 0                      /* BlockWidth/Height,Bytes */
90e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul   },
91e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul   {
92813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA8888,        /* Name */
93bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA8888",      /* StrName */
94813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
95813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
96813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,                  /* Red/Green/Blue/AlphaBits */
97813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
98813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
99813870fd9588de101f68728507cff726d7513695Brian Paul   },
100813870fd9588de101f68728507cff726d7513695Brian Paul   {
101813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA8888_REV,    /* Name */
102bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA8888_REV",  /* StrName */
103813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
104813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
105813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,                  /* Red/Green/Blue/AlphaBits */
106813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
107813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
108813870fd9588de101f68728507cff726d7513695Brian Paul   },
109813870fd9588de101f68728507cff726d7513695Brian Paul   {
110813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB8888,        /* Name */
111bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB8888",      /* StrName */
112813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
113813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
114813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,                  /* Red/Green/Blue/AlphaBits */
115813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
116813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
117813870fd9588de101f68728507cff726d7513695Brian Paul   },
118813870fd9588de101f68728507cff726d7513695Brian Paul   {
119813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB8888_REV,    /* Name */
120bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB8888_REV",  /* StrName */
121813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
122813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
123813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,                  /* Red/Green/Blue/AlphaBits */
124813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
125813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
126813870fd9588de101f68728507cff726d7513695Brian Paul   },
127813870fd9588de101f68728507cff726d7513695Brian Paul   {
128d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      MESA_FORMAT_RGBX8888,        /* Name */
129d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      "MESA_FORMAT_RGBX8888",      /* StrName */
130d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      GL_RGB,                      /* BaseFormat */
131d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      GL_UNSIGNED_NORMALIZED,      /* DataType */
132d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
133d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
134d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      1, 1, 4                      /* BlockWidth/Height,Bytes */
135d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   },
136d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   {
137d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      MESA_FORMAT_RGBX8888_REV,    /* Name */
138d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      "MESA_FORMAT_RGBX8888_REV",  /* StrName */
139d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      GL_RGB,                      /* BaseFormat */
140d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      GL_UNSIGNED_NORMALIZED,      /* DataType */
141d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
142d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
143d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      1, 1, 4                      /* BlockWidth/Height,Bytes */
144d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   },
145d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   {
14674d61d03b54d72217d463c248468cdcd09320efcBrian Paul      MESA_FORMAT_XRGB8888,        /* Name */
147bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_XRGB8888",      /* StrName */
14874d61d03b54d72217d463c248468cdcd09320efcBrian Paul      GL_RGB,                      /* BaseFormat */
14974d61d03b54d72217d463c248468cdcd09320efcBrian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
15074d61d03b54d72217d463c248468cdcd09320efcBrian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
15174d61d03b54d72217d463c248468cdcd09320efcBrian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
15274d61d03b54d72217d463c248468cdcd09320efcBrian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
15374d61d03b54d72217d463c248468cdcd09320efcBrian Paul   },
15474d61d03b54d72217d463c248468cdcd09320efcBrian Paul   {
1552d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      MESA_FORMAT_XRGB8888_REV,    /* Name */
1562d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      "MESA_FORMAT_XRGB8888_REV",  /* StrName */
1572d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      GL_RGB,                      /* BaseFormat */
1582d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      GL_UNSIGNED_NORMALIZED,      /* DataType */
1592d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
1602d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
1612d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      1, 1, 4                      /* BlockWidth/Height,Bytes */
1622d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer   },
1632d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer   {
164813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB888,          /* Name */
165bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB888",        /* StrName */
166813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
167813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
168813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
169813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
170813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3                      /* BlockWidth/Height,Bytes */
171813870fd9588de101f68728507cff726d7513695Brian Paul   },
172813870fd9588de101f68728507cff726d7513695Brian Paul   {
173813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_BGR888,          /* Name */
174bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_BGR888",        /* StrName */
175813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
176813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
177813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
178813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
179813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3                      /* BlockWidth/Height,Bytes */
180813870fd9588de101f68728507cff726d7513695Brian Paul   },
181813870fd9588de101f68728507cff726d7513695Brian Paul   {
182813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB565,          /* Name */
183bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB565",        /* StrName */
184813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
185813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
186813870fd9588de101f68728507cff726d7513695Brian Paul      5, 6, 5, 0,                  /* Red/Green/Blue/AlphaBits */
187813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
188813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
189813870fd9588de101f68728507cff726d7513695Brian Paul   },
190813870fd9588de101f68728507cff726d7513695Brian Paul   {
191813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB565_REV,      /* Name */
192bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB565_REV",    /* StrName */
193813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
194813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
195813870fd9588de101f68728507cff726d7513695Brian Paul      5, 6, 5, 0,                  /* Red/Green/Blue/AlphaBits */
196813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
197813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
198813870fd9588de101f68728507cff726d7513695Brian Paul   },
199813870fd9588de101f68728507cff726d7513695Brian Paul   {
200813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB4444,        /* Name */
201bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB4444",      /* StrName */
202813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
203813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
204813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,                  /* Red/Green/Blue/AlphaBits */
205813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
206813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
207813870fd9588de101f68728507cff726d7513695Brian Paul   },
208813870fd9588de101f68728507cff726d7513695Brian Paul   {
209813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB4444_REV,    /* Name */
210bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB4444_REV",  /* StrName */
211813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
212813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
213813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,                  /* Red/Green/Blue/AlphaBits */
214813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
215813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
216813870fd9588de101f68728507cff726d7513695Brian Paul   },
217813870fd9588de101f68728507cff726d7513695Brian Paul   {
218813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA5551,        /* Name */
219bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA5551",      /* StrName */
220813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
221813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
222813870fd9588de101f68728507cff726d7513695Brian Paul      5, 5, 5, 1,                  /* Red/Green/Blue/AlphaBits */
223813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
224813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
225813870fd9588de101f68728507cff726d7513695Brian Paul   },
226813870fd9588de101f68728507cff726d7513695Brian Paul   {
227813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB1555,        /* Name */
228bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB1555",      /* StrName */
229813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
230813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
231813870fd9588de101f68728507cff726d7513695Brian Paul      5, 5, 5, 1,                  /* Red/Green/Blue/AlphaBits */
232813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
233813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
234813870fd9588de101f68728507cff726d7513695Brian Paul   },
235813870fd9588de101f68728507cff726d7513695Brian Paul   {
236813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB1555_REV,    /* Name */
237bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB1555_REV",  /* StrName */
238813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
239813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
240813870fd9588de101f68728507cff726d7513695Brian Paul      5, 5, 5, 1,                  /* Red/Green/Blue/AlphaBits */
241813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
242813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
243813870fd9588de101f68728507cff726d7513695Brian Paul   },
244813870fd9588de101f68728507cff726d7513695Brian Paul   {
245bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      MESA_FORMAT_AL44,            /* Name */
246bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      "MESA_FORMAT_AL44",          /* StrName */
247bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      GL_LUMINANCE_ALPHA,          /* BaseFormat */
248bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
249bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      0, 0, 0, 4,                  /* Red/Green/Blue/AlphaBits */
250bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      4, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
251bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      1, 1, 1                      /* BlockWidth/Height,Bytes */
252bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák   },
253bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák   {
254813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_AL88,            /* Name */
255bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_AL88",          /* StrName */
256813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,          /* BaseFormat */
257813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
258813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
259813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
260813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
261813870fd9588de101f68728507cff726d7513695Brian Paul   },
262813870fd9588de101f68728507cff726d7513695Brian Paul   {
263813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_AL88_REV,        /* Name */
264bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_AL88_REV",      /* StrName */
265813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,          /* BaseFormat */
266813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
267813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
268813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
269813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
270813870fd9588de101f68728507cff726d7513695Brian Paul   },
271813870fd9588de101f68728507cff726d7513695Brian Paul   {
272eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      MESA_FORMAT_AL1616,          /* Name */
273eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      "MESA_FORMAT_AL1616",        /* StrName */
274eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_LUMINANCE_ALPHA,          /* BaseFormat */
275eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_UNSIGNED_NORMALIZED,      /* DataType */
276eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
277eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
278eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      1, 1, 4                      /* BlockWidth/Height,Bytes */
279eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   },
280eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   {
281eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      MESA_FORMAT_AL1616_REV,      /* Name */
282eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      "MESA_FORMAT_AL1616_REV",    /* StrName */
283eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_LUMINANCE_ALPHA,          /* BaseFormat */
284eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_UNSIGNED_NORMALIZED,      /* DataType */
285eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
286eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
287eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      1, 1, 4                      /* BlockWidth/Height,Bytes */
288eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   },
289eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   {
290813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB332,          /* Name */
291bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB332",        /* StrName */
292813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
293813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
294813870fd9588de101f68728507cff726d7513695Brian Paul      3, 3, 2, 0,                  /* Red/Green/Blue/AlphaBits */
295813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
296813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
297813870fd9588de101f68728507cff726d7513695Brian Paul   },
298813870fd9588de101f68728507cff726d7513695Brian Paul   {
299813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_A8,              /* Name */
300bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_A8",            /* StrName */
301813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,                    /* BaseFormat */
302813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
303813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
304813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
305813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
306813870fd9588de101f68728507cff726d7513695Brian Paul   },
307813870fd9588de101f68728507cff726d7513695Brian Paul   {
308eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      MESA_FORMAT_A16,             /* Name */
309eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      "MESA_FORMAT_A16",           /* StrName */
310eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      GL_ALPHA,                    /* BaseFormat */
311eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
312eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
313eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
314eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
315eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   },
316eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   {
317813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_L8,              /* Name */
318bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_L8",            /* StrName */
319813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE,                /* BaseFormat */
320813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
321813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
322813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
323813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
324813870fd9588de101f68728507cff726d7513695Brian Paul   },
325813870fd9588de101f68728507cff726d7513695Brian Paul   {
326bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      MESA_FORMAT_L16,             /* Name */
327bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      "MESA_FORMAT_L16",           /* StrName */
328bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      GL_LUMINANCE,                /* BaseFormat */
329bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
330bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
331bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
332bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
333bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   },
334bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   {
335813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_I8,              /* Name */
336bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_I8",            /* StrName */
337813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,                /* BaseFormat */
338813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
339813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
340813870fd9588de101f68728507cff726d7513695Brian Paul      0, 8, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
341813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
342813870fd9588de101f68728507cff726d7513695Brian Paul   },
343813870fd9588de101f68728507cff726d7513695Brian Paul   {
344fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      MESA_FORMAT_I16,             /* Name */
345fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      "MESA_FORMAT_I16",           /* StrName */
346fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      GL_INTENSITY,                /* BaseFormat */
347fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
348fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
349fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      0, 16, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
350fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
351fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   },
352fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   {
353813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_YCBCR,           /* Name */
354bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_YCBCR",         /* StrName */
355813870fd9588de101f68728507cff726d7513695Brian Paul      GL_YCBCR_MESA,               /* BaseFormat */
356813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
357813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
358813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
359813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
360813870fd9588de101f68728507cff726d7513695Brian Paul   },
361813870fd9588de101f68728507cff726d7513695Brian Paul   {
362813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_YCBCR_REV,       /* Name */
363bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_YCBCR_REV",     /* StrName */
364813870fd9588de101f68728507cff726d7513695Brian Paul      GL_YCBCR_MESA,               /* BaseFormat */
365813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
366813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
367813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
368813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
369813870fd9588de101f68728507cff726d7513695Brian Paul   },
370813870fd9588de101f68728507cff726d7513695Brian Paul   {
3715d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_R8,
3725d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_R8",
3735d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RED,
3745d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3755d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      8, 0, 0, 0,
3765d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3775d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 1
3785d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3795d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
3800a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul      MESA_FORMAT_GR88,
3810a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul      "MESA_FORMAT_GR88",
3825d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
3835d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3845d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      8, 8, 0, 0,
3855d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3865d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 2
3875d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3885d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
389b4aecc4e1861e60e40e14868719219084967e46dBrian Paul      MESA_FORMAT_RG88,
390b4aecc4e1861e60e40e14868719219084967e46dBrian Paul      "MESA_FORMAT_RG88",
3915d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
3925d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3935d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      8, 8, 0, 0,
3945d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3955d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 2
3965d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3975d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
3985d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_R16,
3995d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_R16",
4005d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RED,
4015d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
4025d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      16, 0, 0, 0,
4035d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
4045d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 2
4055d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
4065d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
4075d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_RG1616,
4085d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_RG1616",
4095d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
4105d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
4115d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      16, 16, 0, 0,
4125d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
4135d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 4
4145d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
4155d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
4165d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_RG1616_REV,
4175d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_RG1616_REV",
4185d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
4195d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
4205d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      16, 16, 0, 0,
4215d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
4225d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 4
4235d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
4245d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
425621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      MESA_FORMAT_ARGB2101010,
426621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      "MESA_FORMAT_ARGB2101010",
427621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      GL_RGBA,
428621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      GL_UNSIGNED_NORMALIZED,
429621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      10, 10, 10, 2,
430621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      0, 0, 0, 0, 0,
431621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      1, 1, 4
432621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   },
433621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   {
434813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z24_S8,          /* Name */
435bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z24_S8",        /* StrName */
436813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_STENCIL,            /* BaseFormat */
437755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
438813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
439813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 24, 8,              /* Lum/Int/Index/Depth/StencilBits */
440813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
441813870fd9588de101f68728507cff726d7513695Brian Paul   },
442813870fd9588de101f68728507cff726d7513695Brian Paul   {
443813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_S8_Z24,          /* Name */
444bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_S8_Z24",        /* StrName */
445813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_STENCIL,            /* BaseFormat */
446755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
447813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
448813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 24, 8,              /* Lum/Int/Index/Depth/StencilBits */
449813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
450813870fd9588de101f68728507cff726d7513695Brian Paul   },
451813870fd9588de101f68728507cff726d7513695Brian Paul   {
452813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z16,             /* Name */
453bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z16",           /* StrName */
454813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
455755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
456813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
457813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16, 0,              /* Lum/Int/Index/Depth/StencilBits */
458813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
459813870fd9588de101f68728507cff726d7513695Brian Paul   },
460813870fd9588de101f68728507cff726d7513695Brian Paul   {
461e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      MESA_FORMAT_X8_Z24,          /* Name */
462bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_X8_Z24",        /* StrName */
463e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
464755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
465e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
466e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      0, 0, 0, 24, 0,              /* Lum/Int/Index/Depth/StencilBits */
467e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
468e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   },
469e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   {
470c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      MESA_FORMAT_Z24_X8,          /* Name */
471c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      "MESA_FORMAT_Z24_X8",        /* StrName */
472c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      GL_DEPTH_COMPONENT,          /* BaseFormat */
473755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
474c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
475c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      0, 0, 0, 24, 0,              /* Lum/Int/Index/Depth/StencilBits */
476c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      1, 1, 4                      /* BlockWidth/Height,Bytes */
477c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   },
478c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   {
479813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z32,             /* Name */
480bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z32",           /* StrName */
481813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
482755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
483813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
484813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32, 0,              /* Lum/Int/Index/Depth/StencilBits */
485813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
486813870fd9588de101f68728507cff726d7513695Brian Paul   },
487813870fd9588de101f68728507cff726d7513695Brian Paul   {
488813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_S8,              /* Name */
489bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_S8",            /* StrName */
490813870fd9588de101f68728507cff726d7513695Brian Paul      GL_STENCIL_INDEX,            /* BaseFormat */
491813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_INT,             /* DataType */
492813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
493813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 8,               /* Lum/Int/Index/Depth/StencilBits */
494813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
495813870fd9588de101f68728507cff726d7513695Brian Paul   },
496813870fd9588de101f68728507cff726d7513695Brian Paul   {
497813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGB8,
498bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGB8",
499813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
500813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
501813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,
502813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
503813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3
504813870fd9588de101f68728507cff726d7513695Brian Paul   },
505813870fd9588de101f68728507cff726d7513695Brian Paul   {
506813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA8,
507bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA8",
508813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
509813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
510813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
511813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
512813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
513813870fd9588de101f68728507cff726d7513695Brian Paul   },
514813870fd9588de101f68728507cff726d7513695Brian Paul   {
515813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SARGB8,
516bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SARGB8",
517813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
518813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
519813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
520813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
521813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
522813870fd9588de101f68728507cff726d7513695Brian Paul   },
523813870fd9588de101f68728507cff726d7513695Brian Paul   {
524813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SL8,
525bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SL8",
52671cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      GL_LUMINANCE,
527813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
52871cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      0, 0, 0, 0,
529813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,
53071cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      1, 1, 1
531813870fd9588de101f68728507cff726d7513695Brian Paul   },
532813870fd9588de101f68728507cff726d7513695Brian Paul   {
533813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SLA8,
534bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SLA8",
535813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
536813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
537813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,
538813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,
539813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
540813870fd9588de101f68728507cff726d7513695Brian Paul   },
541813870fd9588de101f68728507cff726d7513695Brian Paul   {
542813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGB_DXT1,       /* Name */
543bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGB_DXT1",     /* StrName */
544813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
545813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
546813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/Blue/AlphaBits */
547813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
548813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
549813870fd9588de101f68728507cff726d7513695Brian Paul   },
550813870fd9588de101f68728507cff726d7513695Brian Paul   {
551813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA_DXT1,
552bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT1",
553813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
554813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
555813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
556813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
557813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
558813870fd9588de101f68728507cff726d7513695Brian Paul   },
559813870fd9588de101f68728507cff726d7513695Brian Paul   {
560813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA_DXT3,
561bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT3",
562813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
563813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
564813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
565813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
566813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
567813870fd9588de101f68728507cff726d7513695Brian Paul   },
568813870fd9588de101f68728507cff726d7513695Brian Paul   {
569813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA_DXT5,
570bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT5",
571813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
572813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
573813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
574813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
575813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
576813870fd9588de101f68728507cff726d7513695Brian Paul   },
577813870fd9588de101f68728507cff726d7513695Brian Paul
578813870fd9588de101f68728507cff726d7513695Brian Paul   {
579813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FXT1,
580bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FXT1",
581813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
582813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
583c02cd82b463661def7842f910dc561313559df80Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/BlueBits */
584813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
585813870fd9588de101f68728507cff726d7513695Brian Paul      8, 4, 16                     /* 16 bytes per 8x4 block */
586813870fd9588de101f68728507cff726d7513695Brian Paul   },
587813870fd9588de101f68728507cff726d7513695Brian Paul   {
588813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FXT1,
589bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FXT1",
590813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
591813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
592c02cd82b463661def7842f910dc561313559df80Brian Paul      4, 4, 4, 1,                  /* approx Red/Green/Blue/AlphaBits */
593813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
594813870fd9588de101f68728507cff726d7513695Brian Paul      8, 4, 16                     /* 16 bytes per 8x4 block */
595813870fd9588de101f68728507cff726d7513695Brian Paul   },
596813870fd9588de101f68728507cff726d7513695Brian Paul
597813870fd9588de101f68728507cff726d7513695Brian Paul   {
598813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_DXT1,        /* Name */
599bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_DXT1",      /* StrName */
600813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
601813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
602813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/Blue/AlphaBits */
603813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
604813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
605813870fd9588de101f68728507cff726d7513695Brian Paul   },
606813870fd9588de101f68728507cff726d7513695Brian Paul   {
607813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_DXT1,
608bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT1",
609813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
610813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
611813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
612813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
613813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
614813870fd9588de101f68728507cff726d7513695Brian Paul   },
615813870fd9588de101f68728507cff726d7513695Brian Paul   {
616813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_DXT3,
617bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT3",
618813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
619813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
620813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
621813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
622813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
623813870fd9588de101f68728507cff726d7513695Brian Paul   },
624813870fd9588de101f68728507cff726d7513695Brian Paul   {
625813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_DXT5,
626bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT5",
627813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
628813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
629813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
630813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
631813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
632813870fd9588de101f68728507cff726d7513695Brian Paul   },
633813870fd9588de101f68728507cff726d7513695Brian Paul   {
634813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FLOAT32,
635bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FLOAT32",
636813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
637813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
638813870fd9588de101f68728507cff726d7513695Brian Paul      32, 32, 32, 32,
639813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
640813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 16
641813870fd9588de101f68728507cff726d7513695Brian Paul   },
642813870fd9588de101f68728507cff726d7513695Brian Paul   {
643813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FLOAT16,
644bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FLOAT16",
645813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
646813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
647813870fd9588de101f68728507cff726d7513695Brian Paul      16, 16, 16, 16,
648813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
649813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 8
650813870fd9588de101f68728507cff726d7513695Brian Paul   },
651813870fd9588de101f68728507cff726d7513695Brian Paul   {
652813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FLOAT32,
653bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FLOAT32",
654813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
655813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
656813870fd9588de101f68728507cff726d7513695Brian Paul      32, 32, 32, 0,
657813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
658813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 12
659813870fd9588de101f68728507cff726d7513695Brian Paul   },
660813870fd9588de101f68728507cff726d7513695Brian Paul   {
661813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FLOAT16,
662bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FLOAT16",
663813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
664813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
665813870fd9588de101f68728507cff726d7513695Brian Paul      16, 16, 16, 0,
666813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
667813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 6
668813870fd9588de101f68728507cff726d7513695Brian Paul   },
669813870fd9588de101f68728507cff726d7513695Brian Paul   {
670813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ALPHA_FLOAT32,
671bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ALPHA_FLOAT32",
672813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,
673813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
674813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32,
675813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
676813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
677813870fd9588de101f68728507cff726d7513695Brian Paul   },
678813870fd9588de101f68728507cff726d7513695Brian Paul   {
679813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ALPHA_FLOAT16,
680bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ALPHA_FLOAT16",
681813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,
682813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
683813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16,
684813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
685813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
686813870fd9588de101f68728507cff726d7513695Brian Paul   },
687813870fd9588de101f68728507cff726d7513695Brian Paul   {
688813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_FLOAT32,
689bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_FLOAT32",
69019648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák      GL_LUMINANCE,
691813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
692813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
693813870fd9588de101f68728507cff726d7513695Brian Paul      32, 0, 0, 0, 0,
694813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
695813870fd9588de101f68728507cff726d7513695Brian Paul   },
696813870fd9588de101f68728507cff726d7513695Brian Paul   {
697813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_FLOAT16,
698bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_FLOAT16",
69919648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák      GL_LUMINANCE,
700813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
701813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
702813870fd9588de101f68728507cff726d7513695Brian Paul      16, 0, 0, 0, 0,
703813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
704813870fd9588de101f68728507cff726d7513695Brian Paul   },
705813870fd9588de101f68728507cff726d7513695Brian Paul   {
706813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
707bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32",
708813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
709813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
710813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32,
711813870fd9588de101f68728507cff726d7513695Brian Paul      32, 0, 0, 0, 0,
712813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 8
713813870fd9588de101f68728507cff726d7513695Brian Paul   },
714813870fd9588de101f68728507cff726d7513695Brian Paul   {
715813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
716bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16",
717813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
718813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
719813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16,
720813870fd9588de101f68728507cff726d7513695Brian Paul      16, 0, 0, 0, 0,
721813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
722813870fd9588de101f68728507cff726d7513695Brian Paul   },
723813870fd9588de101f68728507cff726d7513695Brian Paul   {
724813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_INTENSITY_FLOAT32,
725bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_INTENSITY_FLOAT32",
726813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,
727813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
728813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
729813870fd9588de101f68728507cff726d7513695Brian Paul      0, 32, 0, 0, 0,
730813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
731813870fd9588de101f68728507cff726d7513695Brian Paul   },
732813870fd9588de101f68728507cff726d7513695Brian Paul   {
733813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_INTENSITY_FLOAT16,
734bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_INTENSITY_FLOAT16",
735813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,
736813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
737813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
738813870fd9588de101f68728507cff726d7513695Brian Paul      0, 16, 0, 0, 0,
739813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
740813870fd9588de101f68728507cff726d7513695Brian Paul   },
7410ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   {
7420ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      MESA_FORMAT_R_FLOAT32,
7430ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      "MESA_FORMAT_R_FLOAT32",
7440ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_RED,
7450ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_FLOAT,
7460ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      32, 0, 0, 0,
7470ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      0, 0, 0, 0, 0,
7480ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      1, 1, 4
7490ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   },
7500ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   {
7510ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      MESA_FORMAT_R_FLOAT16,
7520ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      "MESA_FORMAT_R_FLOAT16",
7530ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_RED,
7540ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_FLOAT,
7550ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      16, 0, 0, 0,
7560ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      0, 0, 0, 0, 0,
7570ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      1, 1, 2
7580ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   },
7590ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   {
7600ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      MESA_FORMAT_RG_FLOAT32,
7610ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      "MESA_FORMAT_RG_FLOAT32",
7620ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_RG,
7630ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_FLOAT,
7640ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      32, 32, 0, 0,
7650ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      0, 0, 0, 0, 0,
7660ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      1, 1, 8
7670ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   },
7680ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   {
7690ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      MESA_FORMAT_RG_FLOAT16,
7700ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      "MESA_FORMAT_RG_FLOAT16",
7710ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_RG,
7720ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_FLOAT,
7730ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      16, 16, 0, 0,
7740ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      0, 0, 0, 0, 0,
7750ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      1, 1, 4
7760ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   },
777abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
778abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   /* unnormalized signed int formats */
7797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   /* unnormalized unsigned int formats */
7807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
7817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_UINT8,
7827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_UINT8",
7837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
7847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
7857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 8,
7867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
7877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
7887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
7897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
7907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_UINT16,
7917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_UINT16",
7927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
7937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
7947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 16,
7957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
7967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
7977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
7987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
7997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_UINT32,
8007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_UINT32",
8017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
8027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 32,
8047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
8057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
8067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_INT8,
8097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_INT8",
8107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
8117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 8,
8137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
8147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
8157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_INT16,
8187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_INT16",
8197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
8207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 16,
8227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
8237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
8247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_INT32,
8277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_INT32",
8287a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
8297a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8307a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 32,
8317a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
8327a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
8337a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8347a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8357a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_UINT8,
8367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_UINT8",
8377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 8, 0, 0, 0,
8417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
8427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_UINT16,
8457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_UINT16",
8467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 16, 0, 0, 0,
8507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
8517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_UINT32,
8547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_UINT32",
8557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 32, 0, 0, 0,
8597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
8607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_INT8,
8637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_INT8",
8647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8677a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 8, 0, 0, 0,
8687a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
8697a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_INT16,
8727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_INT16",
8737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 16, 0, 0, 0,
8777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
8787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_INT32,
8817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_INT32",
8827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 32, 0, 0, 0,
8867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
8877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_UINT8,
8907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_UINT8",
8917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
8927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0, 0,
8957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
8967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_UINT16,
8997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_UINT16",
9007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0, 0,
9047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
9057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_UINT32,
9087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_UINT32",
9097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0, 0,
9137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
9147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_INT8,
9177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_INT8",
9187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0, 0,
9227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
9237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_INT16,
9267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_INT16",
9277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9287a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9297a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9307a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0, 0,
9317a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
9327a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9337a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9347a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_INT32,
9357a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_INT32",
9367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0, 0,
9407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
9417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_UINT8,
9447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_UINT8",
9457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 8,
9487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0, 0,
9497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
9507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_UINT16,
9537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_UINT16",
9547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 16,
9577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0, 0,
9587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
9597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_UINT32,
9627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_UINT32",
9637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 32,
9667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0, 0,
9677a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 8
9687a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9697a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_INT8,
9717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_INT8",
9727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 8,
9757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0, 0,
9767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
9777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_INT16,
9807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_INT16",
9817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 16,
9847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0, 0,
9857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
9867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_INT32,
9897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_INT32",
9907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 32,
9937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0, 0,
9947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 8
9957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
9977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_INT8,
9997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_INT8",
10007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
10017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0,
10037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
10057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_INT8,
10087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_INT8",
10097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
10107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 8, 0, 0,
10127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
10147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_INT8,
10177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_INT8",
10187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
10197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 8, 8, 0,
10217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 3
10237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
1024abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
1025abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT8,
1026abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT8",
1027abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1028abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
1029abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      8, 8, 8, 8,
1030abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1031abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 4
1032abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1033abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
10347a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_INT16,
10357a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_INT16",
10367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
10377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0,
10397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
10417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_INT16,
10447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_INT16",
10457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
10467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 16, 0, 0,
10487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
10507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_INT16,
10537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_INT16",
10547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
10557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 16, 16, 0,
10577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 6
10597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
1061abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT16,
1062abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT16",
1063abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1064abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
1065abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      16, 16, 16, 16,
1066abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1067abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 8
1068abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1069abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
10707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_INT32,
10717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_INT32",
10727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
10737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0,
10757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
10777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_INT32,
10807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_INT32",
10817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
10827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 32, 0, 0,
10847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 8
10867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_INT32,
10897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_INT32",
10907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
10917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 32, 32, 0,
10937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 12
10957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
1097abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT32,
1098abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT32",
1099abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1100abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
1101abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      32, 32, 32, 32,
1102abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1103abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 16
1104abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
11057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_UINT8,
11077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_UINT8",
11087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
11097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0,
11117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
11137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_UINT8,
11167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_UINT8",
11177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
11187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 8, 0, 0,
11207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
11227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_UINT8,
11257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_UINT8",
11267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
11277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11287a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 8, 8, 0,
11297a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11307a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 3
11317a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
1132abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
1133abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT8,
1134abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT8",
1135abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1136abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
1137abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      8, 8, 8, 8,
1138abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1139abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 4
1140abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1141abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
11427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_UINT16,
11437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_UINT16",
11447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
11457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0,
11477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
11497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_UINT16,
11527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_UINT16",
11537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
11547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 16, 0, 0,
11567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
11587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_UINT16,
11617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_UINT16",
11627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
11637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 16, 16, 0,
11657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 6
11677a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11687a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
1169abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT16,
1170abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT16",
1171abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1172abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
1173abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      16, 16, 16, 16,
1174abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1175abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 8
1176abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1177abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
11787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_UINT32,
11797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_UINT32",
11807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
11817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0,
11837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
11857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_UINT32,
11887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_UINT32",
11897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
11907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 32, 0, 0,
11927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 8
11947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_UINT32,
11977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_UINT32",
11987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
11997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
12007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 32, 32, 0,
12017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
12027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 12
12037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
12047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
1205abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT32,
1206abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT32",
1207abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1208abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
1209abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      32, 32, 32, 32,
1210abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1211abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 16
1212abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1213abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
1214abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
1215813870fd9588de101f68728507cff726d7513695Brian Paul   {
1216813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_DUDV8,
1217bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_DUDV8",
1218813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DUDV_ATI,
1219813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
1220813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
1221813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
1222813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
1223813870fd9588de101f68728507cff726d7513695Brian Paul   },
122484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul
122584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   /* Signed 8 bits / channel */
122684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
122784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_R8,        /* Name */
122884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_R8",      /* StrName */
12290073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RED,                       /* BaseFormat */
123084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,         /* DataType */
123184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 0, 0, 0,                   /* Red/Green/Blue/AlphaBits */
123284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,                /* Lum/Int/Index/Depth/StencilBits */
123384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 1                       /* BlockWidth/Height,Bytes */
123484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
123584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
12360be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_RG88_REV,
12370be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_RG88_REV",
12380073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RG,
123984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
124084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 8, 0, 0,
124184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
124284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 2
124384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
124484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
124584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_RGBX8888,
124684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_RGBX8888",
12470073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RGB,
124884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
124984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 8, 8, 0,
125084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
125184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 4                       /* 4 bpp, but no alpha */
125284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
1253813870fd9588de101f68728507cff726d7513695Brian Paul   {
1254813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SIGNED_RGBA8888,
1255bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA8888",
1256813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
1257813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
1258813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
1259813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
1260813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
1261813870fd9588de101f68728507cff726d7513695Brian Paul   },
1262813870fd9588de101f68728507cff726d7513695Brian Paul   {
1263813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SIGNED_RGBA8888_REV,
1264bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA8888_REV",
1265813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
1266813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
1267813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
1268813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
1269813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
1270813870fd9588de101f68728507cff726d7513695Brian Paul   },
127184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul
127284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   /* Signed 16 bits / channel */
127384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
12740be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_R16,
12750be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_R16",
12760073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RED,
127784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
127884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 0, 0, 0,
127984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
128084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 2
128184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
128284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
12830be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_GR1616,
12840be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_GR1616",
12850073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RG,
128684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
128784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 16, 0, 0,
128884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
128984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 4
129084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
129184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
129284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_RGB_16,
129384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_RGB_16",
12940073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RGB,
129584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
129684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 16, 16, 0,
129784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
129884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 6
129984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
1300c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul   {
1301c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      MESA_FORMAT_SIGNED_RGBA_16,
1302bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA_16",
1303c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      GL_RGBA,
1304c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      GL_SIGNED_NORMALIZED,
1305c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      16, 16, 16, 16,
1306c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      0, 0, 0, 0, 0,
1307c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      1, 1, 8
130817e96718946486ef77927fcf3bb299d8bff32b98Brian Paul   },
130917e96718946486ef77927fcf3bb299d8bff32b98Brian Paul   {
131017e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      MESA_FORMAT_RGBA_16,
131117e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      "MESA_FORMAT_RGBA_16",
131217e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      GL_RGBA,
131317e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      GL_UNSIGNED_NORMALIZED,
131417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      16, 16, 16, 16,
131517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      0, 0, 0, 0, 0,
131617e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      1, 1, 8
13178d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13188d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
13198d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_RED_RGTC1,
13208d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_RED_RGTC1",
13218d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RED,
13228d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_UNSIGNED_NORMALIZED,
1323f8d40deea5c4abbbf93c2c572ce668a5a25f95e2Kenneth Graunke     8, 0, 0, 0,
13248d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
13258d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 8                     /* 8 bytes per 4x4 block */
13268d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13278d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
13288d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_SIGNED_RED_RGTC1,
13298d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_SIGNED_RED_RGTC1",
13308d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RED,
13318d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_SIGNED_NORMALIZED,
1332f8d40deea5c4abbbf93c2c572ce668a5a25f95e2Kenneth Graunke     8, 0, 0, 0,
13338d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
13348d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 8                     /* 8 bytes per 4x4 block */
13358d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13368d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
13378d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_RG_RGTC2,
13388d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_RG_RGTC2",
13398d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RG,
13408d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_UNSIGNED_NORMALIZED,
1341f8d40deea5c4abbbf93c2c572ce668a5a25f95e2Kenneth Graunke     8, 8, 0, 0,
13428d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
13438d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 16                     /* 16 bytes per 4x4 block */
13448d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13458d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
13468d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_SIGNED_RG_RGTC2,
13478d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_SIGNED_RG_RGTC2",
13488d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RG,
13498d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_SIGNED_NORMALIZED,
1350f8d40deea5c4abbbf93c2c572ce668a5a25f95e2Kenneth Graunke     8, 8, 0, 0,
13518d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
13528d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 16                     /* 16 bytes per 4x4 block */
13538d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13547d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
13557d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_L_LATC1,
13567d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_L_LATC1",
13577d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE,
13587d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_UNSIGNED_NORMALIZED,
13597d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 0,
13607d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
13617d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 8                     /* 8 bytes per 4x4 block */
13627d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
13637d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
13647d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_SIGNED_L_LATC1,
13657d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_SIGNED_L_LATC1",
13667d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE,
13677d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_SIGNED_NORMALIZED,
13687d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 0,
13697d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
13707d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 8                     /* 8 bytes per 4x4 block */
13717d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
13727d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
13737d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_LA_LATC2,
13747d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_LA_LATC2",
13757d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE_ALPHA,
13767d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_UNSIGNED_NORMALIZED,
13777d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 4,
13787d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
13797d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 16                     /* 16 bytes per 4x4 block */
13807d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
13817d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
13827d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_SIGNED_LA_LATC2,
13837d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_SIGNED_LA_LATC2",
13847d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE_ALPHA,
13857d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_SIGNED_NORMALIZED,
13867d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 4,
13877d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
13887d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 16                     /* 16 bytes per 4x4 block */
13897d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
13900be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák
1391d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   {
1392d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      MESA_FORMAT_ETC1_RGB8,
1393d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      "MESA_FORMAT_ETC1_RGB8",
1394d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      GL_RGB,
1395d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      GL_UNSIGNED_NORMALIZED,
1396d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      8, 8, 8, 0,
1397d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      0, 0, 0, 0, 0,
1398d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      4, 4, 8                     /* 8 bytes per 4x4 block */
1399d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   },
1400d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu
14010be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   /* Signed formats from EXT_texture_snorm that are not in GL3.1 */
14020be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14030be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_A8,
14040be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_A8",
14050be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_ALPHA,
14060be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14070be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 8,
14080be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0, 0,
14090be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
14100be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14110be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14120be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_L8,
14130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_L8",
14140be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE,
14150be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14160be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
14170be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      8, 0, 0, 0, 0,
14180be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
14190be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14200be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14210be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_AL88,
14220be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_AL88",
14230be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE_ALPHA,
14240be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14250be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 8,
14260be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      8, 0, 0, 0, 0,
14270be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
14280be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14290be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14300be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_I8,
14310be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_I8",
14320be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_INTENSITY,
14330be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14340be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
14350be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 8, 0, 0, 0,
14360be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
14370be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14380be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14390be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_A16,
14400be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_A16",
14410be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_ALPHA,
14420be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14430be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 16,
14440be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0, 0,
14450be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
14460be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14470be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14480be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_L16,
14490be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_L16",
14500be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE,
14510be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14520be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
14530be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      16, 0, 0, 0, 0,
14540be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
14550be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14560be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14570be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_AL1616,
14580be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_AL1616",
14590be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE_ALPHA,
14600be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14610be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 16,
14620be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      16, 0, 0, 0, 0,
14630be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 4
14640be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14650be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14660be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_I16,
14670be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_I16",
14680be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_INTENSITY,
14690be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14700be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
14710be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 16, 0, 0, 0,
14720be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
14739d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák   },
14749d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák   {
14759d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      MESA_FORMAT_RGB9_E5_FLOAT,
14769d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      "MESA_FORMAT_RGB9_E5",
14779d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      GL_RGB,
14789d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      GL_FLOAT,
14799d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      9, 9, 9, 0,
14809d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      0, 0, 0, 0, 0,
14819d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      1, 1, 4
14829d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák   },
1483631d23daa91c569bf268a2191bd466df73a64263Marek Olšák   {
1484631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      MESA_FORMAT_R11_G11_B10_FLOAT,
1485631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      "MESA_FORMAT_R11_G11_B10_FLOAT",
1486631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      GL_RGB,
1487631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      GL_FLOAT,
1488631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      11, 11, 10, 0,
1489631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      0, 0, 0, 0, 0,
1490631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      1, 1, 4
1491631d23daa91c569bf268a2191bd466df73a64263Marek Olšák   },
14921165280cbd37dee1e499358633478ab869de21dfMarek Olšák   /* ARB_depth_buffer_float */
14931165280cbd37dee1e499358633478ab869de21dfMarek Olšák   {
14941165280cbd37dee1e499358633478ab869de21dfMarek Olšák      MESA_FORMAT_Z32_FLOAT,       /* Name */
14951165280cbd37dee1e499358633478ab869de21dfMarek Olšák      "MESA_FORMAT_Z32_FLOAT",     /* StrName */
14961165280cbd37dee1e499358633478ab869de21dfMarek Olšák      GL_DEPTH_COMPONENT,          /* BaseFormat */
14971165280cbd37dee1e499358633478ab869de21dfMarek Olšák      GL_FLOAT,                    /* DataType */
14981165280cbd37dee1e499358633478ab869de21dfMarek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
14991165280cbd37dee1e499358633478ab869de21dfMarek Olšák      0, 0, 0, 32, 0,              /* Lum/Int/Index/Depth/StencilBits */
15001165280cbd37dee1e499358633478ab869de21dfMarek Olšák      1, 1, 4                      /* BlockWidth/Height,Bytes */
15011165280cbd37dee1e499358633478ab869de21dfMarek Olšák   },
15021165280cbd37dee1e499358633478ab869de21dfMarek Olšák   {
15031165280cbd37dee1e499358633478ab869de21dfMarek Olšák      MESA_FORMAT_Z32_FLOAT_X24S8, /* Name */
15041165280cbd37dee1e499358633478ab869de21dfMarek Olšák      "MESA_FORMAT_Z32_FLOAT_X24S8", /* StrName */
15051165280cbd37dee1e499358633478ab869de21dfMarek Olšák      GL_DEPTH_STENCIL,            /* BaseFormat */
1506ed945b0bc73356ff8aa4f73616738e5926f73599Eric Anholt      /* DataType here is used to answer GL_TEXTURE_DEPTH_TYPE queries, and is
1507ed945b0bc73356ff8aa4f73616738e5926f73599Eric Anholt       * never used for stencil because stencil is always GL_UNSIGNED_INT.
1508ed945b0bc73356ff8aa4f73616738e5926f73599Eric Anholt       */
1509ed945b0bc73356ff8aa4f73616738e5926f73599Eric Anholt      GL_FLOAT,                    /* DataType */
15101165280cbd37dee1e499358633478ab869de21dfMarek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
15111165280cbd37dee1e499358633478ab869de21dfMarek Olšák      0, 0, 0, 32, 8,              /* Lum/Int/Index/Depth/StencilBits */
15121165280cbd37dee1e499358633478ab869de21dfMarek Olšák      1, 1, 8                      /* BlockWidth/Height,Bytes */
15131165280cbd37dee1e499358633478ab869de21dfMarek Olšák   },
1514f449be660e70aac2aefd2ce84581e137de25520bDave Airlie   {
1515f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      MESA_FORMAT_ARGB2101010_UINT,
1516f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      "MESA_FORMAT_ARGB2101010_UINT",
1517f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      GL_RGBA,
1518f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      GL_UNSIGNED_INT,
1519f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      10, 10, 10, 2,
1520f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      0, 0, 0, 0, 0,
1521f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      1, 1, 4
1522f449be660e70aac2aefd2ce84581e137de25520bDave Airlie   },
1523749c9060aca85277c388377d15fd6323ba20b78eJordan Justen   {
1524749c9060aca85277c388377d15fd6323ba20b78eJordan Justen      MESA_FORMAT_ABGR2101010_UINT,
1525749c9060aca85277c388377d15fd6323ba20b78eJordan Justen      "MESA_FORMAT_ABGR2101010_UINT",
1526749c9060aca85277c388377d15fd6323ba20b78eJordan Justen      GL_RGBA,
1527749c9060aca85277c388377d15fd6323ba20b78eJordan Justen      GL_UNSIGNED_INT,
1528749c9060aca85277c388377d15fd6323ba20b78eJordan Justen      10, 10, 10, 2,
1529749c9060aca85277c388377d15fd6323ba20b78eJordan Justen      0, 0, 0, 0, 0,
1530749c9060aca85277c388377d15fd6323ba20b78eJordan Justen      1, 1, 4
1531749c9060aca85277c388377d15fd6323ba20b78eJordan Justen   },
1532813870fd9588de101f68728507cff726d7513695Brian Paul};
1533813870fd9588de101f68728507cff726d7513695Brian Paul
1534813870fd9588de101f68728507cff726d7513695Brian Paul
1535813870fd9588de101f68728507cff726d7513695Brian Paul
1536813870fd9588de101f68728507cff726d7513695Brian Paulstatic const struct gl_format_info *
1537813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_info(gl_format format)
1538813870fd9588de101f68728507cff726d7513695Brian Paul{
1539813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = &format_info[format];
1540813870fd9588de101f68728507cff726d7513695Brian Paul   assert(info->Name == format);
1541813870fd9588de101f68728507cff726d7513695Brian Paul   return info;
1542813870fd9588de101f68728507cff726d7513695Brian Paul}
1543813870fd9588de101f68728507cff726d7513695Brian Paul
1544813870fd9588de101f68728507cff726d7513695Brian Paul
1545bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul/** Return string name of format (for debugging) */
1546bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulconst char *
1547bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format)
1548bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul{
1549bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1550bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   return info->StrName;
1551bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul}
1552bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1553bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1554bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1555eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1556eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bytes needed to store a block of pixels in the given format.
1557eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Normally, a block is 1x1 (a single pixel).  But for compressed formats
1558eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * a block may be 4x4 or 8x4, etc.
1559e8b1c6d6f55f5be3bef25084fdd8b6127517e137Adam Jackson *
1560e8b1c6d6f55f5be3bef25084fdd8b6127517e137Adam Jackson * Note: not GLuint, so as not to coerce math to unsigned. cf. fdo #37351
1561eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
1562e8b1c6d6f55f5be3bef25084fdd8b6127517e137Adam JacksonGLint
1563813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format)
1564813870fd9588de101f68728507cff726d7513695Brian Paul{
1565813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1566813870fd9588de101f68728507cff726d7513695Brian Paul   ASSERT(info->BytesPerBlock);
1567db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul   ASSERT(info->BytesPerBlock <= MAX_PIXEL_BYTES ||
1568db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul          _mesa_is_format_compressed(format));
1569813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BytesPerBlock;
1570813870fd9588de101f68728507cff726d7513695Brian Paul}
1571813870fd9588de101f68728507cff726d7513695Brian Paul
1572813870fd9588de101f68728507cff726d7513695Brian Paul
1573eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1574eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bits per component for the given format.
1575eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param format  one of MESA_FORMAT_x
1576eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param pname  the component, such as GL_RED_BITS, GL_TEXTURE_BLUE_BITS, etc.
1577eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
15785978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLint
15795978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname)
15805978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{
15815978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
15825978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
15835978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   switch (pname) {
1584edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RED_BITS:
15855978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_RED_SIZE:
1586edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_RED_SIZE_EXT:
1587edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:
15885978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->RedBits;
1589edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_GREEN_BITS:
15905978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_GREEN_SIZE:
1591edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_GREEN_SIZE_EXT:
1592edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
15935978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->GreenBits;
1594edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_BLUE_BITS:
15955978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_BLUE_SIZE:
1596edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_BLUE_SIZE_EXT:
1597edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
15985978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->BlueBits;
1599edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_ALPHA_BITS:
16005978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_ALPHA_SIZE:
1601edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_ALPHA_SIZE_EXT:
1602edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
16035978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->AlphaBits;
16045978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_INTENSITY_SIZE:
16055978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->IntensityBits;
16065978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_LUMINANCE_SIZE:
16075978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->LuminanceBits;
1608edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_INDEX_BITS:
16095978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->IndexBits;
1610edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_DEPTH_BITS:
16115978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_DEPTH_SIZE_ARB:
1612edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_DEPTH_SIZE_EXT:
1613edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
16145978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->DepthBits;
1615edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_STENCIL_BITS:
16165978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_STENCIL_SIZE_EXT:
1617edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_STENCIL_SIZE_EXT:
1618edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
16195978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->StencilBits;
16205978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   default:
16215978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      _mesa_problem(NULL, "bad pname in _mesa_get_format_bits()");
16225978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return 0;
16235978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   }
16245978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul}
16255978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
16265978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
1627488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian PaulGLuint
1628488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul_mesa_get_format_max_bits(gl_format format)
1629488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul{
1630488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1631488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   GLuint max = MAX2(info->RedBits, info->GreenBits);
1632488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->BlueBits);
1633488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->AlphaBits);
1634488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->LuminanceBits);
1635488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->IntensityBits);
1636488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->DepthBits);
1637488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->StencilBits);
1638488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   return max;
1639488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul}
1640488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul
1641488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul
1642eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1643eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the data type (or more specifically, the data representation)
1644eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * for the given format.
1645eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * The return value will be one of:
1646eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1]
1647eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_SIGNED_NORMALIZED = signed int representing [-1, 1]
1648eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_UNSIGNED_INT = an ordinary unsigned integer
1649f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul *    GL_INT = an ordinary signed integer
1650eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_FLOAT = an ordinary float
1651eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
16525978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLenum
16535978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format)
16545978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{
16555978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
16565978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   return info->DataType;
16575978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul}
16585978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
16595978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
1660eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
166155d232a81566cf7ab8855c42e2ef1a280276a04cIan Romanick * Return the basic format for the given type.  The result will be one of
166255d232a81566cf7ab8855c42e2ef1a280276a04cIan Romanick * GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_INTENSITY,
166355d232a81566cf7ab8855c42e2ef1a280276a04cIan Romanick * GL_YCBCR_MESA, GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_DEPTH_STENCIL.
1664eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
1665813870fd9588de101f68728507cff726d7513695Brian PaulGLenum
1666813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format)
1667813870fd9588de101f68728507cff726d7513695Brian Paul{
1668813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1669813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BaseFormat;
1670813870fd9588de101f68728507cff726d7513695Brian Paul}
1671813870fd9588de101f68728507cff726d7513695Brian Paul
1672813870fd9588de101f68728507cff726d7513695Brian Paul
16737b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul/**
16747b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * Return the block size (in pixels) for the given format.  Normally
16757b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * the block size is 1x1.  But compressed formats will have block sizes
16767b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * of 4x4 or 8x4 pixels, etc.
16777b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bw  returns block width in pixels
16787b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bh  returns block height in pixels
16797b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul */
16807b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulvoid
16817b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh)
16827b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul{
16837b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
16847b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   *bw = info->BlockWidth;
16857b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   *bh = info->BlockHeight;
16867b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul}
16877b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul
16887b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul
1689eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** Is the given format a compressed format? */
1690813870fd9588de101f68728507cff726d7513695Brian PaulGLboolean
1691813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format)
1692813870fd9588de101f68728507cff726d7513695Brian Paul{
1693813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1694813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BlockWidth > 1 || info->BlockHeight > 1;
1695813870fd9588de101f68728507cff726d7513695Brian Paul}
1696813870fd9588de101f68728507cff726d7513695Brian Paul
1697813870fd9588de101f68728507cff726d7513695Brian Paul
1698813870fd9588de101f68728507cff726d7513695Brian Paul/**
1699e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler * Determine if the given format represents a packed depth/stencil buffer.
1700e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler */
1701e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick BowlerGLboolean
1702e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler_mesa_is_format_packed_depth_stencil(gl_format format)
1703e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler{
1704f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler   const struct gl_format_info *info = _mesa_get_format_info(format);
1705e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1706f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler   return info->BaseFormat == GL_DEPTH_STENCIL;
1707e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler}
1708e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1709e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1710e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler/**
1711ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul * Is the given format a signed/unsigned integer color format?
1712f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul */
1713f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian PaulGLboolean
1714412b9608838b872bc294569b3ee913343a7e66f6Brian Paul_mesa_is_format_integer_color(gl_format format)
1715f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul{
1716f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1717ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul   return (info->DataType == GL_INT || info->DataType == GL_UNSIGNED_INT) &&
1718ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_DEPTH_COMPONENT &&
1719ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_DEPTH_STENCIL &&
1720ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_STENCIL_INDEX;
1721f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul}
1722f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul
1723f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul
1724f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul/**
17259ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen * Is the given format an unsigned integer format?
17269ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen */
17279ad8f431b2a47060bf05517246ab0fa8d249c800Jordan JustenGLboolean
17289ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen_mesa_is_format_unsigned(gl_format format)
17299ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen{
17309ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen   const struct gl_format_info *info = _mesa_get_format_info(format);
17319ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen   return _mesa_is_type_unsigned(info->DataType);
17329ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen}
17339ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen
17349ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen
17359ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen/**
1736f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * Return color encoding for given format.
1737f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * \return GL_LINEAR or GL_SRGB
1738f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul */
1739f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian PaulGLenum
1740f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format)
1741f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul{
1742f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   /* XXX this info should be encoded in gl_format_info */
1743f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   switch (format) {
1744f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGB8:
1745f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA8:
1746f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SARGB8:
1747f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SL8:
1748f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SLA8:
1749f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGB_DXT1:
1750f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT1:
1751f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT3:
1752f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT5:
1753f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul      return GL_SRGB;
1754f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   default:
1755f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul      return GL_LINEAR;
1756f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   }
1757f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul}
1758f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul
1759aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul
1760aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul/**
1761aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For an sRGB format, return the corresponding linear color space format.
1762aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For non-sRGB formats, return the format as-is.
1763aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul */
1764edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airliegl_format
1765edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie_mesa_get_srgb_format_linear(gl_format format)
1766edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie{
1767edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   switch (format) {
1768edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGB8:
1769edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGB888;
1770edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1771edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA8:
1772edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA8888;
1773edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1774edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SARGB8:
1775edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_ARGB8888;
1776edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1777edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SL8:
1778edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_L8;
1779edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1780edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SLA8:
1781edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_AL88;
1782edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1783edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGB_DXT1:
1784edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGB_DXT1;
1785edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1786edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT1:
1787edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT1;
1788edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1789edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT3:
1790edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT3;
1791edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1792edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT5:
1793edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT5;
1794edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1795edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   default:
1796edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1797edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   }
1798edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   return format;
1799edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie}
1800edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie
1801f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul
1802f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul/**
18039a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul * If the given format is a compressed format, return a corresponding
18049a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul * uncompressed format.
18059a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul */
18069a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paulgl_format
18079a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul_mesa_get_uncompressed_format(gl_format format)
18089a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul{
18099a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   switch (format) {
18109a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGB_FXT1:
18119a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGB888;
18129a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGBA_FXT1:
18139a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGBA8888;
18149a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGB_DXT1:
18159a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SRGB_DXT1:
18169a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGB888;
18179a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGBA_DXT1:
18189a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SRGBA_DXT1:
18199a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGBA8888;
18209a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGBA_DXT3:
18219a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SRGBA_DXT3:
18229a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGBA8888;
18239a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGBA_DXT5:
18249a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SRGBA_DXT5:
18259a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGBA8888;
18269a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RED_RGTC1:
18279a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_R8;
18289a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SIGNED_RED_RGTC1:
18299a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_SIGNED_R8;
18309a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RG_RGTC2:
18310a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul      return MESA_FORMAT_GR88;
18329a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SIGNED_RG_RGTC2:
18339a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_SIGNED_RG88_REV;
18349a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_L_LATC1:
18359a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_L8;
18369a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SIGNED_L_LATC1:
18379a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_SIGNED_L8;
18389a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_LA_LATC2:
18399a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_AL88;
18409a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SIGNED_LA_LATC2:
18419a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_SIGNED_AL88;
1842d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   case MESA_FORMAT_ETC1_RGB8:
1843d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      return MESA_FORMAT_RGB888;
18449a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   default:
18459a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul#ifdef DEBUG
18469a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      assert(!_mesa_is_format_compressed(format));
18479a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul#endif
18489a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return format;
18499a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   }
18509a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul}
18519a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul
18529a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul
18539a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian PaulGLuint
18549a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul_mesa_format_num_components(gl_format format)
18559a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul{
18569a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
18579a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   return ((info->RedBits > 0) +
18589a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->GreenBits > 0) +
18599a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->BlueBits > 0) +
18609a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->AlphaBits > 0) +
18619a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->LuminanceBits > 0) +
18629a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->IntensityBits > 0) +
18639a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->DepthBits > 0) +
18649a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->StencilBits > 0));
18659a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul}
18669a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul
18679a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul
18689a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul/**
18691c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * Return number of bytes needed to store an image of the given size
18701c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * in the given format.
18711c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul */
18721c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian PaulGLuint
18731c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width,
18741c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul                        GLsizei height, GLsizei depth)
18751c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul{
18761c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1877040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   /* Strictly speaking, a conditional isn't needed here */
18781c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
18797bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul      /* compressed format (2D only for now) */
18801c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint bw = info->BlockWidth, bh = info->BlockHeight;
18811c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint wblocks = (width + bw - 1) / bw;
18821c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint hblocks = (height + bh - 1) / bh;
1883040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint sz = wblocks * hblocks * info->BytesPerBlock;
188413b0af721a6ff9e98d47a2c0a740fe843c034016Marek Olšák      return sz * depth;
18851c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   }
18861c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   else {
18871c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      /* non-compressed */
18881c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint sz = width * height * depth * info->BytesPerBlock;
18891c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      return sz;
18901c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   }
18911c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul}
18921c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
18931c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
189474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul/**
189574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * Same as _mesa_format_image_size() but returns a 64-bit value to
189674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * accomodate very large textures.
189774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul */
189874c324fdbaebb7accaee668f2bc54af4699d0025Brian Pauluint64_t
189974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul_mesa_format_image_size64(gl_format format, GLsizei width,
190074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                          GLsizei height, GLsizei depth)
190174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul{
190274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
190374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   /* Strictly speaking, a conditional isn't needed here */
190474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
190574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      /* compressed format (2D only for now) */
190674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t bw = info->BlockWidth, bh = info->BlockHeight;
190774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t wblocks = (width + bw - 1) / bw;
190874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t hblocks = (height + bh - 1) / bh;
190974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t sz = wblocks * hblocks * info->BytesPerBlock;
191013b0af721a6ff9e98d47a2c0a740fe843c034016Marek Olšák      return sz * depth;
191174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   }
191274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   else {
191374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      /* non-compressed */
191474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t sz = ((uint64_t) width *
191574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           (uint64_t) height *
191674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           (uint64_t) depth *
191774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           info->BytesPerBlock);
191874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      return sz;
191974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   }
192074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul}
192174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul
192274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul
19231c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
1924040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian PaulGLint
1925040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width)
1926040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul{
1927040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1928040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   /* Strictly speaking, a conditional isn't needed here */
1929040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
1930040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      /* compressed format */
1931040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint bw = info->BlockWidth;
1932040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint wblocks = (width + bw - 1) / bw;
1933040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLint stride = wblocks * info->BytesPerBlock;
1934040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      return stride;
1935040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   }
1936040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   else {
1937040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLint stride = width * info->BytesPerBlock;
1938040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      return stride;
1939040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   }
1940040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul}
1941040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul
1942040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul
1943d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul/**
1944d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * Debug/test: check that all formats are handled in the
1945d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * _mesa_format_to_type_and_comps() function.  When new pixel formats
1946d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * are added to Mesa, that function needs to be updated.
1947d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * This is a no-op after the first call.
1948d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul */
1949d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulstatic void
1950d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulcheck_format_to_type_and_comps(void)
1951d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul{
1952d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   gl_format f;
1953d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
1954d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   for (f = MESA_FORMAT_NONE + 1; f < MESA_FORMAT_COUNT; f++) {
1955d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      GLenum datatype = 0;
1956d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      GLuint comps = 0;
1957d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      /* This function will emit a problem/warning if the format is
1958d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul       * not handled.
1959d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul       */
1960d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      _mesa_format_to_type_and_comps(f, &datatype, &comps);
1961d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   }
1962d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul}
1963d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
19641c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
19651c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul/**
1966813870fd9588de101f68728507cff726d7513695Brian Paul * Do sanity checking of the format info table.
1967813870fd9588de101f68728507cff726d7513695Brian Paul */
1968813870fd9588de101f68728507cff726d7513695Brian Paulvoid
1969813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void)
1970813870fd9588de101f68728507cff726d7513695Brian Paul{
1971813870fd9588de101f68728507cff726d7513695Brian Paul   GLuint i;
1972813870fd9588de101f68728507cff726d7513695Brian Paul
19736bf5daf331f13ec9503615a2578247e72b7d2cbbBrian Paul   STATIC_ASSERT(Elements(format_info) == MESA_FORMAT_COUNT);
1974813870fd9588de101f68728507cff726d7513695Brian Paul
1975813870fd9588de101f68728507cff726d7513695Brian Paul   for (i = 0; i < MESA_FORMAT_COUNT; i++) {
1976813870fd9588de101f68728507cff726d7513695Brian Paul      const struct gl_format_info *info = _mesa_get_format_info(i);
1977813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info);
1978813870fd9588de101f68728507cff726d7513695Brian Paul
1979813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info->Name == i);
1980813870fd9588de101f68728507cff726d7513695Brian Paul
1981e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      if (info->Name == MESA_FORMAT_NONE)
1982e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul         continue;
1983e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul
1984813870fd9588de101f68728507cff726d7513695Brian Paul      if (info->BlockWidth == 1 && info->BlockHeight == 1) {
1985813870fd9588de101f68728507cff726d7513695Brian Paul         if (info->RedBits > 0) {
1986813870fd9588de101f68728507cff726d7513695Brian Paul            GLuint t = info->RedBits + info->GreenBits
1987813870fd9588de101f68728507cff726d7513695Brian Paul               + info->BlueBits + info->AlphaBits;
19880073f50cd47c48c706b4524364b9c0594804febfBrian Paul            assert(t / 8 <= info->BytesPerBlock);
19896e0584932b3e556a0aecd2ca36f5ae41dc40a919Vinson Lee            (void) t;
1990813870fd9588de101f68728507cff726d7513695Brian Paul         }
1991813870fd9588de101f68728507cff726d7513695Brian Paul      }
1992813870fd9588de101f68728507cff726d7513695Brian Paul
1993813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info->DataType == GL_UNSIGNED_NORMALIZED ||
1994813870fd9588de101f68728507cff726d7513695Brian Paul             info->DataType == GL_SIGNED_NORMALIZED ||
1995813870fd9588de101f68728507cff726d7513695Brian Paul             info->DataType == GL_UNSIGNED_INT ||
19960073f50cd47c48c706b4524364b9c0594804febfBrian Paul             info->DataType == GL_INT ||
1997e134eaa2c5619b47e944e33d053ee23c61da7aa9Marek Olšák             info->DataType == GL_FLOAT ||
1998ceb04b32baf13bbd62cf80496e5751612287ef15Marek Olšák             /* Z32_FLOAT_X24S8 has DataType of GL_NONE */
1999e134eaa2c5619b47e944e33d053ee23c61da7aa9Marek Olšák             info->DataType == GL_NONE);
2000813870fd9588de101f68728507cff726d7513695Brian Paul
2001813870fd9588de101f68728507cff726d7513695Brian Paul      if (info->BaseFormat == GL_RGB) {
2002813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits > 0);
2003813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits > 0);
2004813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits > 0);
2005813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
2006813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
2007813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
2008813870fd9588de101f68728507cff726d7513695Brian Paul      }
2009813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_RGBA) {
2010813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits > 0);
2011813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits > 0);
2012813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits > 0);
2013813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits > 0);
2014813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
2015813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
2016813870fd9588de101f68728507cff726d7513695Brian Paul      }
20175d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      else if (info->BaseFormat == GL_RG) {
20185d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->RedBits > 0);
20195d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->GreenBits > 0);
20205d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->BlueBits == 0);
20215d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->AlphaBits == 0);
20225d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->LuminanceBits == 0);
20235d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->IntensityBits == 0);
20245d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      }
20255d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      else if (info->BaseFormat == GL_RED) {
20265d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->RedBits > 0);
20275d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->GreenBits == 0);
20285d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->BlueBits == 0);
20295d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->AlphaBits == 0);
20305d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->LuminanceBits == 0);
20315d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->IntensityBits == 0);
20325d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      }
2033813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_LUMINANCE) {
2034813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits == 0);
2035813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits == 0);
2036813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits == 0);
2037813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
2038813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits > 0);
2039813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
2040813870fd9588de101f68728507cff726d7513695Brian Paul      }
2041813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_INTENSITY) {
2042813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits == 0);
2043813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits == 0);
2044813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits == 0);
2045813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
2046813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
2047813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits > 0);
2048813870fd9588de101f68728507cff726d7513695Brian Paul      }
2049813870fd9588de101f68728507cff726d7513695Brian Paul   }
2050d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
2051d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   check_format_to_type_and_comps();
2052813870fd9588de101f68728507cff726d7513695Brian Paul}
2053813870fd9588de101f68728507cff726d7513695Brian Paul
2054813870fd9588de101f68728507cff726d7513695Brian Paul
2055019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2056813870fd9588de101f68728507cff726d7513695Brian Paul/**
2057019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Return datatype and number of components per texel for the given gl_format.
2058019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Only used for mipmap generation code.
2059813870fd9588de101f68728507cff726d7513695Brian Paul */
2060813870fd9588de101f68728507cff726d7513695Brian Paulvoid
2061019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format,
2062019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul                               GLenum *datatype, GLuint *comps)
2063813870fd9588de101f68728507cff726d7513695Brian Paul{
2064019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   switch (format) {
2065019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA8888:
2066019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA8888_REV:
2067019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB8888:
2068019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB8888_REV:
2069d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   case MESA_FORMAT_RGBX8888:
2070d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   case MESA_FORMAT_RGBX8888_REV:
207174d61d03b54d72217d463c248468cdcd09320efcBrian Paul   case MESA_FORMAT_XRGB8888:
207279c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_XRGB8888_REV:
2073019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2074019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2075019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2076019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB888:
2077019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_BGR888:
2078019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2079019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2080019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2081019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB565:
2082019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB565_REV:
2083019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_5_6_5;
2084019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2085019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2086019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2087019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB4444:
2088019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB4444_REV:
2089019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_4_4_4_4;
2090019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2091019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2092019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2093019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB1555:
2094019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB1555_REV:
2095019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV;
2096019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2097019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2098019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2099621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   case MESA_FORMAT_ARGB2101010:
2100621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      *datatype = GL_UNSIGNED_INT_2_10_10_10_REV;
2101621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      *comps = 4;
2102621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      return;
2103621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák
210479c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_RGBA5551:
210579c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_UNSIGNED_SHORT_5_5_5_1;
210679c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 4;
210779c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
210879c65410c132c22b67b7635cee740dea9a736f80Brian Paul
21094d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák   case MESA_FORMAT_AL44:
21104d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      *datatype = MESA_UNSIGNED_BYTE_4_4;
21114d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      *comps = 2;
21124d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      return;
21134d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák
2114019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_AL88:
2115019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_AL88_REV:
21160a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul   case MESA_FORMAT_GR88:
2117b4aecc4e1861e60e40e14868719219084967e46dBrian Paul   case MESA_FORMAT_RG88:
2118019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2119019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
2120019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2121eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick
2122eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   case MESA_FORMAT_AL1616:
2123eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   case MESA_FORMAT_AL1616_REV:
21245d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_RG1616:
21255d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_RG1616_REV:
2126eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      *datatype = GL_UNSIGNED_SHORT;
2127eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      *comps = 2;
2128eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      return;
2129eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick
21305d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_R16:
2131eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   case MESA_FORMAT_A16:
2132bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   case MESA_FORMAT_L16:
2133fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   case MESA_FORMAT_I16:
21345d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      *datatype = GL_UNSIGNED_SHORT;
21355d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      *comps = 1;
21365d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      return;
21375d1387b2da3626326410804026f8b92f1a121fdcIan Romanick
2138019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB332:
2139019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE_3_3_2;
2140019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2141019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2142019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2143019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_A8:
2144019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_L8:
2145019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_I8:
21465d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_R8:
214779c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_S8:
2148813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_BYTE;
2149813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 1;
2150019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2151019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2152019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_YCBCR:
2153019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_YCBCR_REV:
2154019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT;
2155813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 2;
2156019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2157019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2158019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z24_S8:
215923c6eb035ba63d39652a10107f323d47b86b90f1Brian Paul      *datatype = GL_UNSIGNED_INT_24_8_MESA;
216023c6eb035ba63d39652a10107f323d47b86b90f1Brian Paul      *comps = 2;
2161019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2162019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2163019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_S8_Z24:
216423c6eb035ba63d39652a10107f323d47b86b90f1Brian Paul      *datatype = GL_UNSIGNED_INT_8_24_REV_MESA;
216523c6eb035ba63d39652a10107f323d47b86b90f1Brian Paul      *comps = 2;
2166019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2167019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2168019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z16:
2169813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_SHORT;
2170019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2171019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2172019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2173e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   case MESA_FORMAT_X8_Z24:
2174e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      *datatype = GL_UNSIGNED_INT;
2175e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      *comps = 1;
2176e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      return;
2177e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul
2178c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   case MESA_FORMAT_Z24_X8:
2179c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      *datatype = GL_UNSIGNED_INT;
2180c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      *comps = 1;
2181c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      return;
2182c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca
2183019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z32:
2184019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_INT;
2185019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2186019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2187019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
21881165280cbd37dee1e499358633478ab869de21dfMarek Olšák   case MESA_FORMAT_Z32_FLOAT:
21891165280cbd37dee1e499358633478ab869de21dfMarek Olšák      *datatype = GL_FLOAT;
21901165280cbd37dee1e499358633478ab869de21dfMarek Olšák      *comps = 1;
21911165280cbd37dee1e499358633478ab869de21dfMarek Olšák      return;
21921165280cbd37dee1e499358633478ab869de21dfMarek Olšák
21931165280cbd37dee1e499358633478ab869de21dfMarek Olšák   case MESA_FORMAT_Z32_FLOAT_X24S8:
21941165280cbd37dee1e499358633478ab869de21dfMarek Olšák      *datatype = GL_FLOAT_32_UNSIGNED_INT_24_8_REV;
21951165280cbd37dee1e499358633478ab869de21dfMarek Olšák      *comps = 1;
21961165280cbd37dee1e499358633478ab869de21dfMarek Olšák      return;
21971165280cbd37dee1e499358633478ab869de21dfMarek Olšák
2198019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_DUDV8:
2199019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_BYTE;
2200813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 2;
2201019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2202019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
220379c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_SIGNED_R8:
22040be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_A8:
22050be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_L8:
22060be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_I8:
220779c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_BYTE;
220879c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 1;
220979c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
22100be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_RG88_REV:
22110be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_AL88:
221279c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_BYTE;
221379c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 2;
221479c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
2215019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SIGNED_RGBA8888:
2216019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SIGNED_RGBA8888_REV:
221779c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_SIGNED_RGBX8888:
2218813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_BYTE;
2219019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2220019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2221880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul
222279c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_RGBA_16:
222379c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_UNSIGNED_SHORT;
222479c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 4;
222579c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
222679c65410c132c22b67b7635cee740dea9a736f80Brian Paul
22270be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_R16:
22280be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_A16:
22290be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_L16:
22300be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_I16:
2231880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
2232880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 1;
2233880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
22340be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_GR1616:
22350be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_AL1616:
2236880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
2237880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 2;
2238880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
2239880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul   case MESA_FORMAT_SIGNED_RGB_16:
2240880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
2241880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 3;
2242880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
2243c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul   case MESA_FORMAT_SIGNED_RGBA_16:
2244c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      *datatype = GL_SHORT;
2245c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      *comps = 4;
2246c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      return;
2247019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2248019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB
2249019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGB8:
2250019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2251019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2252019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2253019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA8:
2254019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SARGB8:
2255019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2256019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2257019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2258019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SL8:
2259019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2260813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 1;
2261019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2262019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SLA8:
2263019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2264019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
2265019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2266019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
2267019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2268019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_fxt1
2269019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FXT1:
2270019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FXT1:
2271019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
2272019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_s3tc
2273019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_DXT1:
2274019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT1:
2275019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT3:
2276019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT5:
2277019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB
2278019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGB_DXT1:
2279019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT1:
2280019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT3:
2281019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT5:
2282019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
228369c78bf2c21c239d6064847dd0628f3526d68f9bIan Romanick#endif
22848d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_RED_RGTC1:
22858d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_SIGNED_RED_RGTC1:
22868d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_RG_RGTC2:
22878d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_SIGNED_RG_RGTC2:
22887d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_L_LATC1:
22897d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_SIGNED_L_LATC1:
22907d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_LA_LATC2:
22917d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_SIGNED_LA_LATC2:
2292d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   case MESA_FORMAT_ETC1_RGB8:
2293019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      /* XXX generate error instead? */
2294813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_BYTE;
2295019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 0;
2296019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2297019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2298019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FLOAT32:
2299019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
2300019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2301019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2302019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FLOAT16:
2303019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
2304019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2305019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2306019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FLOAT32:
2307019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
2308019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2309019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2310019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FLOAT16:
2311019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
2312019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2313019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2314019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
23150ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   case MESA_FORMAT_RG_FLOAT32:
2316019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
2317019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
2318019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2319019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
23200ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   case MESA_FORMAT_RG_FLOAT16:
2321019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
2322019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
2323019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2324019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ALPHA_FLOAT32:
2325019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_FLOAT32:
2326019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_INTENSITY_FLOAT32:
23270ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   case MESA_FORMAT_R_FLOAT32:
2328019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
2329019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2330019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2331019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ALPHA_FLOAT16:
2332019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_FLOAT16:
2333019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_INTENSITY_FLOAT16:
23340ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   case MESA_FORMAT_R_FLOAT16:
2335019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
2336019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2337019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2338019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
23397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_UINT8:
23407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_UINT8:
23417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_UINT8:
23427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
23437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_UINT8:
23467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
23477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
23507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_UINT16:
23517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_UINT16:
23527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_UINT16:
23537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
23547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_UINT16:
23577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
23587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_UINT32:
23617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_UINT32:
23627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_UINT32:
23637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
23647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_UINT32:
23677a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
23687a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23697a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_INT8:
23717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_INT8:
23727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_INT8:
23737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
23747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_INT8:
23777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
23787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
23817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_INT16:
23827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_INT16:
23837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_INT16:
23847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
23857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_INT16:
23887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
23897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
23927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_INT32:
23937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_INT32:
23947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_INT32:
23957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
23967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_INT32:
23997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
24007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
24037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_INT8:
24047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
24057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_INT8:
24087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
24097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_INT8:
24127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
24137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2415abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT8:
2416abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_BYTE;
2417abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2418abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
24197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_INT16:
24207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
24217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_INT16:
24247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
24257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_INT16:
24287a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
24297a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24307a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2431abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT16:
2432abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_SHORT;
2433abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2434abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
24357a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_INT32:
24367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
24377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_INT32:
24407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
24417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_INT32:
24447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
24457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2447abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT32:
2448abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_INT;
2449abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2450abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
2451abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
2452abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   /**
2453abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul    * \name Non-normalized unsigned integer formats.
2454abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul    */
24557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_UINT8:
24567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
24577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_UINT8:
24607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
24617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_UINT8:
24647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
24657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2467abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT8:
2468abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_BYTE;
2469abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2470abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
24717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_UINT16:
24727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
24737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_UINT16:
24767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
24777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_UINT16:
24807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
24817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2483abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT16:
2484abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_SHORT;
2485abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2486abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
24877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_UINT32:
24887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
24897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_UINT32:
24927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
24937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_UINT32:
24967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
24977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2499abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT32:
2500abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_INT;
2501abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2502abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
2503abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
25049d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák   case MESA_FORMAT_RGB9_E5_FLOAT:
25059d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      *datatype = GL_UNSIGNED_INT_5_9_9_9_REV;
25069d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      *comps = 3;
25079d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      return;
25089d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák
2509631d23daa91c569bf268a2191bd466df73a64263Marek Olšák   case MESA_FORMAT_R11_G11_B10_FLOAT:
2510631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      *datatype = GL_UNSIGNED_INT_10F_11F_11F_REV;
2511631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      *comps = 3;
2512631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      return;
2513631d23daa91c569bf268a2191bd466df73a64263Marek Olšák
2514f449be660e70aac2aefd2ce84581e137de25520bDave Airlie   case MESA_FORMAT_ARGB2101010_UINT:
2515749c9060aca85277c388377d15fd6323ba20b78eJordan Justen   case MESA_FORMAT_ABGR2101010_UINT:
2516f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      *datatype = GL_UNSIGNED_INT_2_10_10_10_REV;
2517f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      *comps = 4;
2518f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      return;
2519f449be660e70aac2aefd2ce84581e137de25520bDave Airlie
252079c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_COUNT:
2521a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee      assert(0);
2522a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee      return;
2523a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee
2524a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee   case MESA_FORMAT_NONE:
252579c65410c132c22b67b7635cee740dea9a736f80Brian Paul   /* For debug builds, warn if any formats are not handled */
2526280750c5cabfc5f312c3abe0424f57b2edeb53dfVinson Lee#ifdef DEBUG
2527019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   default:
252879c65410c132c22b67b7635cee740dea9a736f80Brian Paul#endif
2529c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul      _mesa_problem(NULL, "bad format %s in _mesa_format_to_type_and_comps",
2530c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul                    _mesa_get_format_name(format));
2531019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = 0;
2532019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2533813870fd9588de101f68728507cff726d7513695Brian Paul   }
2534813870fd9588de101f68728507cff726d7513695Brian Paul}
25355f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25365f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt/**
25374ff212aac3764565675c9c83af378671162bc4f2Brian Paul * Check if a gl_format exactly matches a GL formaat/type combination
25384ff212aac3764565675c9c83af378671162bc4f2Brian Paul * such that we can use memcpy() from one to the other.
253906aa607ba76d940c48556935259c2a34eac7a8dcBrian Paul * \param gl_format  a MESA_FORMAT_x value
254006aa607ba76d940c48556935259c2a34eac7a8dcBrian Paul * \param format  the user-specified image format
254106aa607ba76d940c48556935259c2a34eac7a8dcBrian Paul * \param type  the user-specified image datatype
254206aa607ba76d940c48556935259c2a34eac7a8dcBrian Paul * \param swapBytes  typically the current pixel pack/unpack byteswap state
25434ff212aac3764565675c9c83af378671162bc4f2Brian Paul * \return GL_TRUE if the formats match, GL_FALSE otherwise.
25445f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt */
25455f140bceda4c11b68c16ce175533f496434ff9a3Eric AnholtGLboolean
25465f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt_mesa_format_matches_format_and_type(gl_format gl_format,
254706aa607ba76d940c48556935259c2a34eac7a8dcBrian Paul				     GLenum format, GLenum type,
254806aa607ba76d940c48556935259c2a34eac7a8dcBrian Paul                                     GLboolean swapBytes)
25495f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt{
25505f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   const GLboolean littleEndian = _mesa_little_endian();
25515f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25525f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   /* Note: When reading a GL format/type combination, the format lists channel
25535f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt    * assignments from most significant channel in the type to least
25544ff212aac3764565675c9c83af378671162bc4f2Brian Paul    * significant.  A type with _REV indicates that the assignments are
25554ff212aac3764565675c9c83af378671162bc4f2Brian Paul    * swapped, so they are listed from least significant to most significant.
25565f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt    *
25574ff212aac3764565675c9c83af378671162bc4f2Brian Paul    * For sanity, please keep this switch statement ordered the same as the
25584ff212aac3764565675c9c83af378671162bc4f2Brian Paul    * enums in formats.h.
25595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt    */
25605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25615f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   switch (gl_format) {
25625f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25635f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_NONE:
25645f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_COUNT:
25655f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
25665f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25675f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA8888:
256851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8 && !swapBytes)
256951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
257051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
257151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8_REV && swapBytes)
2572952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2573952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2574952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && !littleEndian)
2575952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2576952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
257751aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_ABGR_EXT && type == GL_UNSIGNED_INT_8_8_8_8_REV
257851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul          && !swapBytes)
257951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
258051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
258151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_ABGR_EXT && type == GL_UNSIGNED_INT_8_8_8_8
258251aab798a3386cc1493fe879802f693ca1fa565eBrian Paul          && swapBytes)
2583952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2584952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2585952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_ABGR_EXT && type == GL_UNSIGNED_BYTE && littleEndian)
2586952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2587952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2588952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      return GL_FALSE;
25895f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25905f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA8888_REV:
259151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8_REV &&
259251aab798a3386cc1493fe879802f693ca1fa565eBrian Paul          !swapBytes)
259351aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
259451aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
259551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8 && swapBytes)
259651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
259751aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
259851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && littleEndian)
259951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
260051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
260151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_ABGR_EXT && type == GL_UNSIGNED_INT_8_8_8_8 &&
260251aab798a3386cc1493fe879802f693ca1fa565eBrian Paul          !swapBytes)
260351aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
260451aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
260551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_ABGR_EXT && type == GL_UNSIGNED_INT_8_8_8_8_REV &&
260651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul          swapBytes)
260751aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
260851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
260951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_ABGR_EXT && type == GL_UNSIGNED_BYTE && !littleEndian)
261051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
261151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
261251aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return GL_FALSE;
26135f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26145f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB8888:
261551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV &&
261651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul          !swapBytes)
261751aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
261851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
261951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8 && swapBytes)
2620952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2621952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2622952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_BYTE && littleEndian)
2623952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2624952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2625952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      return GL_FALSE;
26265f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26275f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB8888_REV:
262851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8 && !swapBytes)
262951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         return GL_TRUE;
263051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
263151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV &&
263251aab798a3386cc1493fe879802f693ca1fa565eBrian Paul          swapBytes)
2633952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2634952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2635952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_BYTE && !littleEndian)
2636952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2637952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2638952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      return GL_FALSE;
26395f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
2640d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   case MESA_FORMAT_RGBX8888:
2641d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   case MESA_FORMAT_RGBX8888_REV:
2642d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      return GL_FALSE;
2643d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu
26445f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_XRGB8888:
26455f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_XRGB8888_REV:
26465f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26475f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26485f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB888:
2649b019228d6bb00291315f2a4045fb30af89715433Brian Paul      return format == GL_BGR && type == GL_UNSIGNED_BYTE && littleEndian;
26505f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26515f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_BGR888:
2652966720f507f71d2dce1f3499d7b29d98b615effeBrian Paul      return format == GL_RGB && type == GL_UNSIGNED_BYTE && littleEndian;
26535f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26545f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB565:
265551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RGB && type == GL_UNSIGNED_SHORT_5_6_5 && !swapBytes;
265651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
26575f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB565_REV:
26585f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      /* Some of the 16-bit MESA_FORMATs that would seem to correspond to
26595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt       * GL_UNSIGNED_SHORT_* are byte-swapped instead of channel-reversed,
26605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt       * according to formats.h, so they can't be matched.
26615f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt       */
26625f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26635f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26645f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB4444:
266551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_BGRA && type == GL_UNSIGNED_SHORT_4_4_4_4_REV &&
266651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
266751aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
26685f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB4444_REV:
26695f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26705f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26715f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA5551:
267251aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RGBA && type == GL_UNSIGNED_SHORT_5_5_5_1 &&
267351aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
26745f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26755f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB1555:
267651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_BGRA && type == GL_UNSIGNED_SHORT_1_5_5_5_REV &&
267751aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
267851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
26795f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB1555_REV:
26805f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26815f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26825f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL44:
26835f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26845f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL88:
26855f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE && littleEndian;
26865f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL88_REV:
26875f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26885f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26895f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL1616:
269051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_SHORT && littleEndian && !swapBytes;
26915f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL1616_REV:
26925f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26935f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26945f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB332:
26955f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGB && type == GL_UNSIGNED_BYTE_3_3_2;
26965f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26975f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_A8:
26985f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_ALPHA && type == GL_UNSIGNED_BYTE;
26995f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_A16:
270051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_ALPHA && type == GL_UNSIGNED_SHORT &&
270151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         littleEndian && !swapBytes;
27025f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_L8:
27035f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE && type == GL_UNSIGNED_BYTE;
27045f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_L16:
270551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_LUMINANCE && type == GL_UNSIGNED_SHORT &&
270651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         littleEndian && !swapBytes;
27075f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_I8:
27085f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_INTENSITY && type == GL_UNSIGNED_BYTE;
27095f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_I16:
271051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_INTENSITY && type == GL_UNSIGNED_SHORT &&
271151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         littleEndian && !swapBytes;
27125f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27135f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_YCBCR:
27145f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_YCBCR_REV:
27155f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27165f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27175f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R8:
27185f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RED && type == GL_UNSIGNED_BYTE;
27190a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul   case MESA_FORMAT_GR88:
2720c3a57841a3b51dc463b7fa5ca94b897917a86f20Brian Paul      return format == GL_RG && type == GL_UNSIGNED_BYTE && littleEndian;
2721b4aecc4e1861e60e40e14868719219084967e46dBrian Paul   case MESA_FORMAT_RG88:
27225f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27235f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27245f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R16:
272551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RED && type == GL_UNSIGNED_SHORT && littleEndian &&
272651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
27275f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG1616:
272851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RG && type == GL_UNSIGNED_SHORT && littleEndian &&
272951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
27305f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG1616_REV:
27315f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27325f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27335f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB2101010:
273451aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_BGRA && type == GL_UNSIGNED_INT_2_10_10_10_REV &&
273551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
27365f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27375f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z24_S8:
273851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_DEPTH_STENCIL && type == GL_UNSIGNED_INT_24_8 &&
273951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
27405f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z24_X8:
27415f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_S8_Z24:
27425f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27435f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27445f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z16:
274551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_DEPTH_COMPONENT && type == GL_UNSIGNED_SHORT &&
274651aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
27475f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27485f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_X8_Z24:
27495f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27505f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27515f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z32:
275251aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_DEPTH_COMPONENT && type == GL_UNSIGNED_INT &&
275351aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
27545f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27555f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_S8:
275694a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      return format == GL_STENCIL_INDEX && type == GL_UNSIGNED_BYTE;
27575f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27585f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGB8:
27595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGBA8:
27605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SARGB8:
27615f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SL8:
27625f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SLA8:
27635f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGB_DXT1:
27645f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGBA_DXT1:
27655f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGBA_DXT3:
27665f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGBA_DXT5:
27675f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27685f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27695f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_FXT1:
27705f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_FXT1:
27715f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_DXT1:
27725f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_DXT1:
27735f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_DXT3:
27745f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_DXT5:
27755f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27765f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27775f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_FLOAT32:
277851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RGBA && type == GL_FLOAT && !swapBytes;
27795f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_FLOAT16:
278051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RGBA && type == GL_HALF_FLOAT && !swapBytes;
27815f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27825f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_FLOAT32:
278351aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RGB && type == GL_FLOAT && !swapBytes;
27845f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_FLOAT16:
278551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RGB && type == GL_HALF_FLOAT && !swapBytes;
27865f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27875f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_FLOAT32:
278851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_ALPHA && type == GL_FLOAT && !swapBytes;
27895f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_FLOAT16:
279051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_ALPHA && type == GL_HALF_FLOAT && !swapBytes;
27915f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27925f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_FLOAT32:
279351aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_LUMINANCE && type == GL_FLOAT && !swapBytes;
27945f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_FLOAT16:
279551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_LUMINANCE && type == GL_HALF_FLOAT && !swapBytes;
27965f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27975f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
279851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_LUMINANCE_ALPHA && type == GL_FLOAT && !swapBytes;
27995f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
280051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_LUMINANCE_ALPHA && type == GL_HALF_FLOAT && !swapBytes;
28015f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28025f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_FLOAT32:
280351aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_INTENSITY && type == GL_FLOAT && !swapBytes;
28045f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_FLOAT16:
280551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_INTENSITY && type == GL_HALF_FLOAT && !swapBytes;
28065f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28075f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_FLOAT32:
280851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RED && type == GL_FLOAT && !swapBytes;
28095f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_FLOAT16:
281051aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RED && type == GL_HALF_FLOAT && !swapBytes;
28115f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28125f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_FLOAT32:
281351aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RG && type == GL_FLOAT && !swapBytes;
28145f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_FLOAT16:
281551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RG && type == GL_HALF_FLOAT && !swapBytes;
28165f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28175f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      /* FINISHME: What do we want to do for GL_EXT_texture_integer? */
28185f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_UINT8:
28195f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_UINT16:
28205f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_UINT32:
28215f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_INT8:
28225f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_INT16:
28235f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_INT32:
28245f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28255f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28265f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_UINT8:
28275f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_UINT16:
28285f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_UINT32:
28295f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_INT8:
28305f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_INT16:
28315f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_INT32:
28325f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28335f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28345f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_UINT8:
28355f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_UINT16:
28365f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_UINT32:
28375f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_INT8:
28385f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_INT16:
28395f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_INT32:
28405f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28415f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28425f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_UINT8:
28435f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_UINT16:
28445f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_UINT32:
28455f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_INT8:
28465f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_INT16:
28475f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_INT32:
28485f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28495f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28505f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_INT8:
28515f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_INT8:
28525f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_INT8:
28535f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_INT8:
28545f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_INT16:
28555f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_INT16:
28565f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_INT16:
28575f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_INT16:
28585f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_INT32:
28595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_INT32:
28605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_INT32:
28615f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_INT32:
28625f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28635f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28645f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_UINT8:
28655f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_UINT8:
28665f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_UINT8:
28675f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_UINT8:
28685f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_UINT16:
28695f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_UINT16:
28705f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_UINT16:
28715f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_UINT16:
28725f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_UINT32:
28735f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_UINT32:
28745f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_UINT32:
28755f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_UINT32:
28765f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28775f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28785f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_DUDV8:
28795f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_R8:
28805f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RG88_REV:
28815f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGBX8888:
288294a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      return GL_FALSE;
288394a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul
28845f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGBA8888:
288594a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      if (format == GL_RGBA && type == GL_BYTE && !littleEndian)
288694a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul         return GL_TRUE;
288794a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul
288894a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      if (format == GL_ABGR_EXT && type == GL_BYTE && littleEndian)
288994a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul         return GL_TRUE;
289094a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul
289194a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      return GL_FALSE;
289294a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul
28935f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGBA8888_REV:
289494a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      if (format == GL_RGBA && type == GL_BYTE && littleEndian)
289594a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul         return GL_TRUE;
289694a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul
289794a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      if (format == GL_ABGR_EXT && type == GL_BYTE && !littleEndian)
289894a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul         return GL_TRUE;
289994a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul
290094a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      return GL_FALSE;
290194a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul
29025f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_R16:
29035f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_GR1616:
29045f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGB_16:
29055f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGBA_16:
29065f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_16:
29075f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      /* FINISHME: SNORM */
29085f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
29095f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
29105f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RED_RGTC1:
29115f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RED_RGTC1:
29125f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_RGTC2:
29135f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RG_RGTC2:
29145f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
29155f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
29165f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_L_LATC1:
29175f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_L_LATC1:
29185f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LA_LATC2:
29195f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_LA_LATC2:
29205f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
29215f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
2922d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   case MESA_FORMAT_ETC1_RGB8:
2923d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      return GL_FALSE;
2924d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu
29255f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_A8:
29265f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_L8:
29275f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_AL88:
29285f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_I8:
29295f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_A16:
29305f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_L16:
29315f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_AL1616:
29325f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_I16:
29335f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      /* FINISHME: SNORM */
29345f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
29355f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
2936f449be660e70aac2aefd2ce84581e137de25520bDave Airlie   case MESA_FORMAT_ARGB2101010_UINT:
293794a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul      return (format == GL_BGRA_INTEGER_EXT &&
293894a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul              type == GL_UNSIGNED_INT_2_10_10_10_REV &&
293994a0d38c240625202d21a7c4522ad8a1c9bc1a89Brian Paul              !swapBytes);
2940f449be660e70aac2aefd2ce84581e137de25520bDave Airlie
2941749c9060aca85277c388377d15fd6323ba20b78eJordan Justen   case MESA_FORMAT_ABGR2101010_UINT:
2942749c9060aca85277c388377d15fd6323ba20b78eJordan Justen      return (format == GL_RGBA_INTEGER_EXT &&
2943749c9060aca85277c388377d15fd6323ba20b78eJordan Justen              type == GL_UNSIGNED_INT_2_10_10_10_REV &&
2944749c9060aca85277c388377d15fd6323ba20b78eJordan Justen              !swapBytes);
2945749c9060aca85277c388377d15fd6323ba20b78eJordan Justen
29465f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB9_E5_FLOAT:
294751aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RGB && type == GL_UNSIGNED_INT_5_9_9_9_REV &&
294851aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
294951aab798a3386cc1493fe879802f693ca1fa565eBrian Paul
29505f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R11_G11_B10_FLOAT:
295151aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_RGB && type == GL_UNSIGNED_INT_10F_11F_11F_REV &&
295251aab798a3386cc1493fe879802f693ca1fa565eBrian Paul         !swapBytes;
29535f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
29545f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z32_FLOAT:
295551aab798a3386cc1493fe879802f693ca1fa565eBrian Paul      return format == GL_DEPTH_COMPONENT && type == GL_FLOAT && !swapBytes;
29565f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
29575f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z32_FLOAT_X24S8:
29585f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
29595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   }
29605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
29615f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   return GL_FALSE;
29625f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt}
29639ad8f431b2a47060bf05517246ab0fa8d249c800Jordan Justen
2964