formats.c revision 19648fcf015e512283e93ab9de4a3e969d577e59
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"
30813870fd9588de101f68728507cff726d7513695Brian Paul
31813870fd9588de101f68728507cff726d7513695Brian Paul
32813870fd9588de101f68728507cff726d7513695Brian Paul/**
33be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Information about texture formats.
34be0765cd6ec47cf068775197f312a1123e044566Brian Paul */
35be0765cd6ec47cf068775197f312a1123e044566Brian Paulstruct gl_format_info
36be0765cd6ec47cf068775197f312a1123e044566Brian Paul{
37be0765cd6ec47cf068775197f312a1123e044566Brian Paul   gl_format Name;
38be0765cd6ec47cf068775197f312a1123e044566Brian Paul
39bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   /** text name for debugging */
40bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   const char *StrName;
41bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
42be0765cd6ec47cf068775197f312a1123e044566Brian Paul   /**
432d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt    * Base format is one of GL_RED, GL_RG, GL_RGB, GL_RGBA, GL_ALPHA,
442d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt    * GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_YCBCR_MESA,
452d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt    * GL_COLOR_INDEX, GL_DEPTH_COMPONENT, GL_STENCIL_INDEX,
462d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt    * GL_DEPTH_STENCIL, GL_DUDV_ATI.
47be0765cd6ec47cf068775197f312a1123e044566Brian Paul    */
48be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLenum BaseFormat;
49be0765cd6ec47cf068775197f312a1123e044566Brian Paul
50be0765cd6ec47cf068775197f312a1123e044566Brian Paul   /**
51be0765cd6ec47cf068775197f312a1123e044566Brian Paul    * Logical data type: one of  GL_UNSIGNED_NORMALIZED, GL_SIGNED_NORMALED,
52abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul    * GL_UNSIGNED_INT, GL_INT, GL_FLOAT.
53be0765cd6ec47cf068775197f312a1123e044566Brian Paul    */
54be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLenum DataType;
55be0765cd6ec47cf068775197f312a1123e044566Brian Paul
56be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte RedBits;
57be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte GreenBits;
58be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte BlueBits;
59be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte AlphaBits;
60be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte LuminanceBits;
61be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte IntensityBits;
62be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte IndexBits;
63be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte DepthBits;
64be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte StencilBits;
65be0765cd6ec47cf068775197f312a1123e044566Brian Paul
66be0765cd6ec47cf068775197f312a1123e044566Brian Paul   /**
67be0765cd6ec47cf068775197f312a1123e044566Brian Paul    * To describe compressed formats.  If not compressed, Width=Height=1.
68be0765cd6ec47cf068775197f312a1123e044566Brian Paul    */
69be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte BlockWidth, BlockHeight;
70be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLubyte BytesPerBlock;
71be0765cd6ec47cf068775197f312a1123e044566Brian Paul};
72be0765cd6ec47cf068775197f312a1123e044566Brian Paul
73be0765cd6ec47cf068775197f312a1123e044566Brian Paul
74be0765cd6ec47cf068775197f312a1123e044566Brian Paul/**
75813870fd9588de101f68728507cff726d7513695Brian Paul * Info about each format.
76813870fd9588de101f68728507cff726d7513695Brian Paul * These must be in the same order as the MESA_FORMAT_* enums so that
77813870fd9588de101f68728507cff726d7513695Brian Paul * we can do lookups without searching.
78813870fd9588de101f68728507cff726d7513695Brian Paul */
79813870fd9588de101f68728507cff726d7513695Brian Paulstatic struct gl_format_info format_info[MESA_FORMAT_COUNT] =
80813870fd9588de101f68728507cff726d7513695Brian Paul{
81813870fd9588de101f68728507cff726d7513695Brian Paul   {
82e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      MESA_FORMAT_NONE,            /* Name */
83bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_NONE",          /* StrName */
84e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      GL_NONE,                     /* BaseFormat */
85e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      GL_NONE,                     /* DataType */
86e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
87e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
88e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      0, 0, 0                      /* BlockWidth/Height,Bytes */
89e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul   },
90e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul   {
91813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA8888,        /* Name */
92bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA8888",      /* StrName */
93813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
94813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
95813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,                  /* Red/Green/Blue/AlphaBits */
96813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
97813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
98813870fd9588de101f68728507cff726d7513695Brian Paul   },
99813870fd9588de101f68728507cff726d7513695Brian Paul   {
100813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA8888_REV,    /* Name */
101bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA8888_REV",  /* StrName */
102813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
103813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
104813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,                  /* Red/Green/Blue/AlphaBits */
105813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
106813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
107813870fd9588de101f68728507cff726d7513695Brian Paul   },
108813870fd9588de101f68728507cff726d7513695Brian Paul   {
109813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB8888,        /* Name */
110bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB8888",      /* StrName */
111813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
112813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
113813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,                  /* Red/Green/Blue/AlphaBits */
114813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
115813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
116813870fd9588de101f68728507cff726d7513695Brian Paul   },
117813870fd9588de101f68728507cff726d7513695Brian Paul   {
118813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB8888_REV,    /* Name */
119bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB8888_REV",  /* StrName */
120813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
121813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
122813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,                  /* Red/Green/Blue/AlphaBits */
123813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
124813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
125813870fd9588de101f68728507cff726d7513695Brian Paul   },
126813870fd9588de101f68728507cff726d7513695Brian Paul   {
12774d61d03b54d72217d463c248468cdcd09320efcBrian Paul      MESA_FORMAT_XRGB8888,        /* Name */
128bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_XRGB8888",      /* StrName */
12974d61d03b54d72217d463c248468cdcd09320efcBrian Paul      GL_RGB,                      /* BaseFormat */
13074d61d03b54d72217d463c248468cdcd09320efcBrian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
13174d61d03b54d72217d463c248468cdcd09320efcBrian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
13274d61d03b54d72217d463c248468cdcd09320efcBrian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
13374d61d03b54d72217d463c248468cdcd09320efcBrian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
13474d61d03b54d72217d463c248468cdcd09320efcBrian Paul   },
13574d61d03b54d72217d463c248468cdcd09320efcBrian Paul   {
1362d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      MESA_FORMAT_XRGB8888_REV,    /* Name */
1372d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      "MESA_FORMAT_XRGB8888_REV",  /* StrName */
1382d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      GL_RGB,                      /* BaseFormat */
1392d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      GL_UNSIGNED_NORMALIZED,      /* DataType */
1402d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
1412d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
1422d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      1, 1, 4                      /* BlockWidth/Height,Bytes */
1432d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer   },
1442d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer   {
145813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB888,          /* Name */
146bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB888",        /* StrName */
147813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
148813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
149813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
150813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
151813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3                      /* BlockWidth/Height,Bytes */
152813870fd9588de101f68728507cff726d7513695Brian Paul   },
153813870fd9588de101f68728507cff726d7513695Brian Paul   {
154813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_BGR888,          /* Name */
155bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_BGR888",        /* StrName */
156813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
157813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
158813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
159813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
160813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3                      /* BlockWidth/Height,Bytes */
161813870fd9588de101f68728507cff726d7513695Brian Paul   },
162813870fd9588de101f68728507cff726d7513695Brian Paul   {
163813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB565,          /* Name */
164bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB565",        /* StrName */
165813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
166813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
167813870fd9588de101f68728507cff726d7513695Brian Paul      5, 6, 5, 0,                  /* Red/Green/Blue/AlphaBits */
168813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
169813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
170813870fd9588de101f68728507cff726d7513695Brian Paul   },
171813870fd9588de101f68728507cff726d7513695Brian Paul   {
172813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB565_REV,      /* Name */
173bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB565_REV",    /* StrName */
174813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
175813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
176813870fd9588de101f68728507cff726d7513695Brian Paul      5, 6, 5, 0,                  /* Red/Green/Blue/AlphaBits */
177813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
178813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
179813870fd9588de101f68728507cff726d7513695Brian Paul   },
180813870fd9588de101f68728507cff726d7513695Brian Paul   {
181813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB4444,        /* Name */
182bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB4444",      /* StrName */
183813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
184813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
185813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,                  /* Red/Green/Blue/AlphaBits */
186813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
187813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
188813870fd9588de101f68728507cff726d7513695Brian Paul   },
189813870fd9588de101f68728507cff726d7513695Brian Paul   {
190813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB4444_REV,    /* Name */
191bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB4444_REV",  /* StrName */
192813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
193813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
194813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,                  /* Red/Green/Blue/AlphaBits */
195813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
196813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
197813870fd9588de101f68728507cff726d7513695Brian Paul   },
198813870fd9588de101f68728507cff726d7513695Brian Paul   {
199813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA5551,        /* Name */
200bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA5551",      /* StrName */
201813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
202813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
203813870fd9588de101f68728507cff726d7513695Brian Paul      5, 5, 5, 1,                  /* Red/Green/Blue/AlphaBits */
204813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
205813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
206813870fd9588de101f68728507cff726d7513695Brian Paul   },
207813870fd9588de101f68728507cff726d7513695Brian Paul   {
208813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB1555,        /* Name */
209bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB1555",      /* StrName */
210813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
211813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
212813870fd9588de101f68728507cff726d7513695Brian Paul      5, 5, 5, 1,                  /* Red/Green/Blue/AlphaBits */
213813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
214813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
215813870fd9588de101f68728507cff726d7513695Brian Paul   },
216813870fd9588de101f68728507cff726d7513695Brian Paul   {
217813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB1555_REV,    /* Name */
218bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB1555_REV",  /* StrName */
219813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
220813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
221813870fd9588de101f68728507cff726d7513695Brian Paul      5, 5, 5, 1,                  /* Red/Green/Blue/AlphaBits */
222813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
223813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
224813870fd9588de101f68728507cff726d7513695Brian Paul   },
225813870fd9588de101f68728507cff726d7513695Brian Paul   {
226bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      MESA_FORMAT_AL44,            /* Name */
227bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      "MESA_FORMAT_AL44",          /* StrName */
228bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      GL_LUMINANCE_ALPHA,          /* BaseFormat */
229bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
230bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      0, 0, 0, 4,                  /* Red/Green/Blue/AlphaBits */
231bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      4, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
232bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      1, 1, 1                      /* BlockWidth/Height,Bytes */
233bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák   },
234bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák   {
235813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_AL88,            /* Name */
236bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_AL88",          /* StrName */
237813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,          /* BaseFormat */
238813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
239813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
240813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
241813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
242813870fd9588de101f68728507cff726d7513695Brian Paul   },
243813870fd9588de101f68728507cff726d7513695Brian Paul   {
244813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_AL88_REV,        /* Name */
245bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_AL88_REV",      /* StrName */
246813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,          /* BaseFormat */
247813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
248813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
249813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
250813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
251813870fd9588de101f68728507cff726d7513695Brian Paul   },
252813870fd9588de101f68728507cff726d7513695Brian Paul   {
253eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      MESA_FORMAT_AL1616,          /* Name */
254eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      "MESA_FORMAT_AL1616",        /* StrName */
255eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_LUMINANCE_ALPHA,          /* BaseFormat */
256eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_UNSIGNED_NORMALIZED,      /* DataType */
257eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
258eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
259eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      1, 1, 4                      /* BlockWidth/Height,Bytes */
260eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   },
261eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   {
262eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      MESA_FORMAT_AL1616_REV,      /* Name */
263eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      "MESA_FORMAT_AL1616_REV",    /* StrName */
264eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_LUMINANCE_ALPHA,          /* BaseFormat */
265eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_UNSIGNED_NORMALIZED,      /* DataType */
266eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
267eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
268eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      1, 1, 4                      /* BlockWidth/Height,Bytes */
269eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   },
270eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   {
271813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB332,          /* Name */
272bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB332",        /* StrName */
273813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
274813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
275813870fd9588de101f68728507cff726d7513695Brian Paul      3, 3, 2, 0,                  /* Red/Green/Blue/AlphaBits */
276813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
277813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
278813870fd9588de101f68728507cff726d7513695Brian Paul   },
279813870fd9588de101f68728507cff726d7513695Brian Paul   {
280813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_A8,              /* Name */
281bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_A8",            /* StrName */
282813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,                    /* BaseFormat */
283813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
284813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
285813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
286813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
287813870fd9588de101f68728507cff726d7513695Brian Paul   },
288813870fd9588de101f68728507cff726d7513695Brian Paul   {
289eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      MESA_FORMAT_A16,             /* Name */
290eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      "MESA_FORMAT_A16",           /* StrName */
291eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      GL_ALPHA,                    /* BaseFormat */
292eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
293eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
294eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
295eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
296eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   },
297eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   {
298813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_L8,              /* Name */
299bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_L8",            /* StrName */
300813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE,                /* BaseFormat */
301813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
302813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
303813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
304813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
305813870fd9588de101f68728507cff726d7513695Brian Paul   },
306813870fd9588de101f68728507cff726d7513695Brian Paul   {
307bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      MESA_FORMAT_L16,             /* Name */
308bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      "MESA_FORMAT_L16",           /* StrName */
309bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      GL_LUMINANCE,                /* BaseFormat */
310bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
311bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
312bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
313bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
314bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   },
315bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   {
316813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_I8,              /* Name */
317bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_I8",            /* StrName */
318813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,                /* BaseFormat */
319813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
320813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
321813870fd9588de101f68728507cff726d7513695Brian Paul      0, 8, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
322813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
323813870fd9588de101f68728507cff726d7513695Brian Paul   },
324813870fd9588de101f68728507cff726d7513695Brian Paul   {
325fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      MESA_FORMAT_I16,             /* Name */
326fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      "MESA_FORMAT_I16",           /* StrName */
327fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      GL_INTENSITY,                /* BaseFormat */
328fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
329fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
330fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      0, 16, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
331fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
332fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   },
333fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   {
334813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_CI8,             /* Name */
335bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_CI8",           /* StrName */
336813870fd9588de101f68728507cff726d7513695Brian Paul      GL_COLOR_INDEX,              /* BaseFormat */
337813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_INT,             /* DataType */
338813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
339813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 8, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
340813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
341813870fd9588de101f68728507cff726d7513695Brian Paul   },
342813870fd9588de101f68728507cff726d7513695Brian Paul   {
343813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_YCBCR,           /* Name */
344bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_YCBCR",         /* StrName */
345813870fd9588de101f68728507cff726d7513695Brian Paul      GL_YCBCR_MESA,               /* BaseFormat */
346813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
347813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
348813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
349813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
350813870fd9588de101f68728507cff726d7513695Brian Paul   },
351813870fd9588de101f68728507cff726d7513695Brian Paul   {
352813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_YCBCR_REV,       /* Name */
353bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_YCBCR_REV",     /* StrName */
354813870fd9588de101f68728507cff726d7513695Brian Paul      GL_YCBCR_MESA,               /* BaseFormat */
355813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
356813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
357813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
358813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
359813870fd9588de101f68728507cff726d7513695Brian Paul   },
360813870fd9588de101f68728507cff726d7513695Brian Paul   {
3615d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_R8,
3625d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_R8",
3635d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RED,
3645d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3655d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      8, 0, 0, 0,
3665d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3675d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 1
3685d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3695d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
3705d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_RG88,
3715d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_RG88",
3725d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
3735d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3745d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      8, 8, 0, 0,
3755d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3765d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 2
3775d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3785d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
3795d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_RG88_REV,
3805d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_RG88_REV",
3815d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
3825d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3835d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      8, 8, 0, 0,
3845d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3855d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 2
3865d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3875d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
3885d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_R16,
3895d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_R16",
3905d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RED,
3915d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3925d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      16, 0, 0, 0,
3935d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3945d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 2
3955d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3965d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
3975d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_RG1616,
3985d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_RG1616",
3995d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
4005d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
4015d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      16, 16, 0, 0,
4025d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
4035d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 4
4045d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
4055d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
4065d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_RG1616_REV,
4075d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_RG1616_REV",
4085d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
4095d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
4105d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      16, 16, 0, 0,
4115d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
4125d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 4
4135d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
4145d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
415621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      MESA_FORMAT_ARGB2101010,
416621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      "MESA_FORMAT_ARGB2101010",
417621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      GL_RGBA,
418621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      GL_UNSIGNED_NORMALIZED,
419621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      10, 10, 10, 2,
420621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      0, 0, 0, 0, 0,
421621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      1, 1, 4
422621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   },
423621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   {
424813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z24_S8,          /* Name */
425bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z24_S8",        /* StrName */
426813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_STENCIL,            /* BaseFormat */
427813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_INT,             /* DataType */
428813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
429813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 24, 8,              /* Lum/Int/Index/Depth/StencilBits */
430813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
431813870fd9588de101f68728507cff726d7513695Brian Paul   },
432813870fd9588de101f68728507cff726d7513695Brian Paul   {
433813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_S8_Z24,          /* Name */
434bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_S8_Z24",        /* StrName */
435813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_STENCIL,            /* BaseFormat */
436813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_INT,             /* DataType */
437813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
438813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 24, 8,              /* Lum/Int/Index/Depth/StencilBits */
439813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
440813870fd9588de101f68728507cff726d7513695Brian Paul   },
441813870fd9588de101f68728507cff726d7513695Brian Paul   {
442813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z16,             /* Name */
443bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z16",           /* StrName */
444813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
445813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_INT,             /* DataType */
446813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
447813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16, 0,              /* Lum/Int/Index/Depth/StencilBits */
448813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
449813870fd9588de101f68728507cff726d7513695Brian Paul   },
450813870fd9588de101f68728507cff726d7513695Brian Paul   {
451e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      MESA_FORMAT_X8_Z24,          /* Name */
452bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_X8_Z24",        /* StrName */
453e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
454e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      GL_UNSIGNED_INT,             /* DataType */
455e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
456e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      0, 0, 0, 24, 0,              /* Lum/Int/Index/Depth/StencilBits */
457e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
458e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   },
459e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   {
460c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      MESA_FORMAT_Z24_X8,          /* Name */
461c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      "MESA_FORMAT_Z24_X8",        /* StrName */
462c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      GL_DEPTH_COMPONENT,          /* BaseFormat */
463c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      GL_UNSIGNED_INT,             /* DataType */
464c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
465c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      0, 0, 0, 24, 0,              /* Lum/Int/Index/Depth/StencilBits */
466c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      1, 1, 4                      /* BlockWidth/Height,Bytes */
467c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   },
468c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   {
469813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z32,             /* Name */
470bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z32",           /* StrName */
471813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
472813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_INT,             /* DataType */
473813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
474813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32, 0,              /* Lum/Int/Index/Depth/StencilBits */
475813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
476813870fd9588de101f68728507cff726d7513695Brian Paul   },
477813870fd9588de101f68728507cff726d7513695Brian Paul   {
478813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_S8,              /* Name */
479bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_S8",            /* StrName */
480813870fd9588de101f68728507cff726d7513695Brian Paul      GL_STENCIL_INDEX,            /* BaseFormat */
481813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_INT,             /* DataType */
482813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
483813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 8,               /* Lum/Int/Index/Depth/StencilBits */
484813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
485813870fd9588de101f68728507cff726d7513695Brian Paul   },
486813870fd9588de101f68728507cff726d7513695Brian Paul   {
487813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGB8,
488bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGB8",
489813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
490813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
491813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,
492813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
493813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3
494813870fd9588de101f68728507cff726d7513695Brian Paul   },
495813870fd9588de101f68728507cff726d7513695Brian Paul   {
496813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA8,
497bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA8",
498813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
499813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
500813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
501813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
502813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
503813870fd9588de101f68728507cff726d7513695Brian Paul   },
504813870fd9588de101f68728507cff726d7513695Brian Paul   {
505813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SARGB8,
506bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SARGB8",
507813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
508813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
509813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
510813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
511813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
512813870fd9588de101f68728507cff726d7513695Brian Paul   },
513813870fd9588de101f68728507cff726d7513695Brian Paul   {
514813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SL8,
515bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SL8",
51671cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      GL_LUMINANCE,
517813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
51871cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      0, 0, 0, 0,
519813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,
52071cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      1, 1, 1
521813870fd9588de101f68728507cff726d7513695Brian Paul   },
522813870fd9588de101f68728507cff726d7513695Brian Paul   {
523813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SLA8,
524bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SLA8",
525813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
526813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
527813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,
528813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,
529813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
530813870fd9588de101f68728507cff726d7513695Brian Paul   },
531813870fd9588de101f68728507cff726d7513695Brian Paul   {
532813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGB_DXT1,       /* Name */
533bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGB_DXT1",     /* StrName */
534813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
535813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
536813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/Blue/AlphaBits */
537813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
538813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
539813870fd9588de101f68728507cff726d7513695Brian Paul   },
540813870fd9588de101f68728507cff726d7513695Brian Paul   {
541813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA_DXT1,
542bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT1",
543813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
544813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
545813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
546813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
547813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
548813870fd9588de101f68728507cff726d7513695Brian Paul   },
549813870fd9588de101f68728507cff726d7513695Brian Paul   {
550813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA_DXT3,
551bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT3",
552813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
553813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
554813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
555813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
556813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
557813870fd9588de101f68728507cff726d7513695Brian Paul   },
558813870fd9588de101f68728507cff726d7513695Brian Paul   {
559813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA_DXT5,
560bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT5",
561813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
562813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
563813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
564813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
565813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
566813870fd9588de101f68728507cff726d7513695Brian Paul   },
567813870fd9588de101f68728507cff726d7513695Brian Paul
568813870fd9588de101f68728507cff726d7513695Brian Paul   {
569813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FXT1,
570bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FXT1",
571813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
572813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
573c02cd82b463661def7842f910dc561313559df80Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/BlueBits */
574813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
575813870fd9588de101f68728507cff726d7513695Brian Paul      8, 4, 16                     /* 16 bytes per 8x4 block */
576813870fd9588de101f68728507cff726d7513695Brian Paul   },
577813870fd9588de101f68728507cff726d7513695Brian Paul   {
578813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FXT1,
579bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FXT1",
580813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
581813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
582c02cd82b463661def7842f910dc561313559df80Brian Paul      4, 4, 4, 1,                  /* approx Red/Green/Blue/AlphaBits */
583813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
584813870fd9588de101f68728507cff726d7513695Brian Paul      8, 4, 16                     /* 16 bytes per 8x4 block */
585813870fd9588de101f68728507cff726d7513695Brian Paul   },
586813870fd9588de101f68728507cff726d7513695Brian Paul
587813870fd9588de101f68728507cff726d7513695Brian Paul   {
588813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_DXT1,        /* Name */
589bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_DXT1",      /* StrName */
590813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
591813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
592813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/Blue/AlphaBits */
593813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
594813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
595813870fd9588de101f68728507cff726d7513695Brian Paul   },
596813870fd9588de101f68728507cff726d7513695Brian Paul   {
597813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_DXT1,
598bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT1",
599813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
600813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
601813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
602813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
603813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
604813870fd9588de101f68728507cff726d7513695Brian Paul   },
605813870fd9588de101f68728507cff726d7513695Brian Paul   {
606813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_DXT3,
607bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT3",
608813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
609813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
610813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
611813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
612813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
613813870fd9588de101f68728507cff726d7513695Brian Paul   },
614813870fd9588de101f68728507cff726d7513695Brian Paul   {
615813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_DXT5,
616bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT5",
617813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
618813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
619813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
620813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
621813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
622813870fd9588de101f68728507cff726d7513695Brian Paul   },
623813870fd9588de101f68728507cff726d7513695Brian Paul   {
624813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FLOAT32,
625bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FLOAT32",
626813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
627813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
628813870fd9588de101f68728507cff726d7513695Brian Paul      32, 32, 32, 32,
629813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
630813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 16
631813870fd9588de101f68728507cff726d7513695Brian Paul   },
632813870fd9588de101f68728507cff726d7513695Brian Paul   {
633813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FLOAT16,
634bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FLOAT16",
635813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
636813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
637813870fd9588de101f68728507cff726d7513695Brian Paul      16, 16, 16, 16,
638813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
639813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 8
640813870fd9588de101f68728507cff726d7513695Brian Paul   },
641813870fd9588de101f68728507cff726d7513695Brian Paul   {
642813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FLOAT32,
643bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FLOAT32",
644813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
645813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
646813870fd9588de101f68728507cff726d7513695Brian Paul      32, 32, 32, 0,
647813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
648813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 12
649813870fd9588de101f68728507cff726d7513695Brian Paul   },
650813870fd9588de101f68728507cff726d7513695Brian Paul   {
651813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FLOAT16,
652bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FLOAT16",
653813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
654813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
655813870fd9588de101f68728507cff726d7513695Brian Paul      16, 16, 16, 0,
656813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
657813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 6
658813870fd9588de101f68728507cff726d7513695Brian Paul   },
659813870fd9588de101f68728507cff726d7513695Brian Paul   {
660813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ALPHA_FLOAT32,
661bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ALPHA_FLOAT32",
662813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,
663813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
664813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32,
665813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
666813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
667813870fd9588de101f68728507cff726d7513695Brian Paul   },
668813870fd9588de101f68728507cff726d7513695Brian Paul   {
669813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ALPHA_FLOAT16,
670bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ALPHA_FLOAT16",
671813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,
672813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
673813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16,
674813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
675813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
676813870fd9588de101f68728507cff726d7513695Brian Paul   },
677813870fd9588de101f68728507cff726d7513695Brian Paul   {
678813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_FLOAT32,
679bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_FLOAT32",
68019648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák      GL_LUMINANCE,
681813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
682813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
683813870fd9588de101f68728507cff726d7513695Brian Paul      32, 0, 0, 0, 0,
684813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
685813870fd9588de101f68728507cff726d7513695Brian Paul   },
686813870fd9588de101f68728507cff726d7513695Brian Paul   {
687813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_FLOAT16,
688bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_FLOAT16",
68919648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák      GL_LUMINANCE,
690813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
691813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
692813870fd9588de101f68728507cff726d7513695Brian Paul      16, 0, 0, 0, 0,
693813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
694813870fd9588de101f68728507cff726d7513695Brian Paul   },
695813870fd9588de101f68728507cff726d7513695Brian Paul   {
696813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
697bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32",
698813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
699813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
700813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32,
701813870fd9588de101f68728507cff726d7513695Brian Paul      32, 0, 0, 0, 0,
702813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 8
703813870fd9588de101f68728507cff726d7513695Brian Paul   },
704813870fd9588de101f68728507cff726d7513695Brian Paul   {
705813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
706bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16",
707813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
708813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
709813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16,
710813870fd9588de101f68728507cff726d7513695Brian Paul      16, 0, 0, 0, 0,
711813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
712813870fd9588de101f68728507cff726d7513695Brian Paul   },
713813870fd9588de101f68728507cff726d7513695Brian Paul   {
714813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_INTENSITY_FLOAT32,
715bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_INTENSITY_FLOAT32",
716813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,
717813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
718813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
719813870fd9588de101f68728507cff726d7513695Brian Paul      0, 32, 0, 0, 0,
720813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
721813870fd9588de101f68728507cff726d7513695Brian Paul   },
722813870fd9588de101f68728507cff726d7513695Brian Paul   {
723813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_INTENSITY_FLOAT16,
724bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_INTENSITY_FLOAT16",
725813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,
726813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
727813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
728813870fd9588de101f68728507cff726d7513695Brian Paul      0, 16, 0, 0, 0,
729813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
730813870fd9588de101f68728507cff726d7513695Brian Paul   },
731abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
732abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   /* unnormalized signed int formats */
733abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
734abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT8,
735abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT8",
736abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
737abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
738abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      8, 8, 8, 8,
739abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
740abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 4
741abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
742abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
743abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT16,
744abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT16",
745abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
746abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
747abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      16, 16, 16, 16,
748abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
749abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 8
750abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
751abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
752abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT32,
753abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT32",
754abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
755abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
756abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      32, 32, 32, 32,
757abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
758abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 16
759abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
760abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
761abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   /* unnormalized unsigned int formats */
762abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
763abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT8,
764abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT8",
765abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
766abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
767abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      8, 8, 8, 8,
768abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
769abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 4
770abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
771abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
772abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT16,
773abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT16",
774abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
775abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
776abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      16, 16, 16, 16,
777abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
778abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 8
779abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
780abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
781abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT32,
782abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT32",
783abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
784abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
785abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      32, 32, 32, 32,
786abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
787abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 16
788abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
789abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
790abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
791813870fd9588de101f68728507cff726d7513695Brian Paul   {
792813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_DUDV8,
793bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_DUDV8",
794813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DUDV_ATI,
795813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
796813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
797813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
798813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
799813870fd9588de101f68728507cff726d7513695Brian Paul   },
80084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul
80184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   /* Signed 8 bits / channel */
80284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
80384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_R8,        /* Name */
80484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_R8",      /* StrName */
8050073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RED,                       /* BaseFormat */
80684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,         /* DataType */
80784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 0, 0, 0,                   /* Red/Green/Blue/AlphaBits */
80884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,                /* Lum/Int/Index/Depth/StencilBits */
80984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 1                       /* BlockWidth/Height,Bytes */
81084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
81184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
8120be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_RG88_REV,
8130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_RG88_REV",
8140073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RG,
81584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
81684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 8, 0, 0,
81784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
81884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 2
81984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
82084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
82184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_RGBX8888,
82284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_RGBX8888",
8230073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RGB,
82484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
82584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 8, 8, 0,
82684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
82784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 4                       /* 4 bpp, but no alpha */
82884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
829813870fd9588de101f68728507cff726d7513695Brian Paul   {
830813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SIGNED_RGBA8888,
831bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA8888",
832813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
833813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
834813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
835813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
836813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
837813870fd9588de101f68728507cff726d7513695Brian Paul   },
838813870fd9588de101f68728507cff726d7513695Brian Paul   {
839813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SIGNED_RGBA8888_REV,
840bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA8888_REV",
841813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
842813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
843813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
844813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
845813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
846813870fd9588de101f68728507cff726d7513695Brian Paul   },
84784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul
84884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   /* Signed 16 bits / channel */
84984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
8500be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_R16,
8510be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_R16",
8520073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RED,
85384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
85484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 0, 0, 0,
85584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
85684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 2
85784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
85884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
8590be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_GR1616,
8600be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_GR1616",
8610073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RG,
86284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
86384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 16, 0, 0,
86484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
86584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 4
86684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
86784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
86884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_RGB_16,
86984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_RGB_16",
8700073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RGB,
87184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
87284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 16, 16, 0,
87384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
87484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 6
87584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
876c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul   {
877c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      MESA_FORMAT_SIGNED_RGBA_16,
878bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA_16",
879c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      GL_RGBA,
880c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      GL_SIGNED_NORMALIZED,
881c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      16, 16, 16, 16,
882c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      0, 0, 0, 0, 0,
883c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      1, 1, 8
88417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul   },
88517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul   {
88617e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      MESA_FORMAT_RGBA_16,
88717e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      "MESA_FORMAT_RGBA_16",
88817e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      GL_RGBA,
88917e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      GL_UNSIGNED_NORMALIZED,
89017e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      16, 16, 16, 16,
89117e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      0, 0, 0, 0, 0,
89217e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      1, 1, 8
8938d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
8948d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
8958d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_RED_RGTC1,
8968d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_RED_RGTC1",
8978d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RED,
8988d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_UNSIGNED_NORMALIZED,
8998d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 0, 0, 0,
9008d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
9018d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 8                     /* 8 bytes per 4x4 block */
9028d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
9038d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
9048d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_SIGNED_RED_RGTC1,
9058d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_SIGNED_RED_RGTC1",
9068d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RED,
9078d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_SIGNED_NORMALIZED,
9088d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 0, 0, 0,
9098d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
9108d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 8                     /* 8 bytes per 4x4 block */
9118d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
9128d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
9138d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_RG_RGTC2,
9148d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_RG_RGTC2",
9158d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RG,
9168d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_UNSIGNED_NORMALIZED,
9178d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 0, 0,
9188d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
9198d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 16                     /* 16 bytes per 4x4 block */
9208d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
9218d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
9228d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_SIGNED_RG_RGTC2,
9238d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_SIGNED_RG_RGTC2",
9248d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RG,
9258d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_SIGNED_NORMALIZED,
9268d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 0, 0,
9278d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
9288d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 16                     /* 16 bytes per 4x4 block */
9298d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
9307d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
9317d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_L_LATC1,
9327d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_L_LATC1",
9337d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE,
9347d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_UNSIGNED_NORMALIZED,
9357d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 0,
9367d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
9377d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 8                     /* 8 bytes per 4x4 block */
9387d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
9397d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
9407d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_SIGNED_L_LATC1,
9417d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_SIGNED_L_LATC1",
9427d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE,
9437d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_SIGNED_NORMALIZED,
9447d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 0,
9457d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
9467d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 8                     /* 8 bytes per 4x4 block */
9477d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
9487d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
9497d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_LA_LATC2,
9507d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_LA_LATC2",
9517d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE_ALPHA,
9527d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_UNSIGNED_NORMALIZED,
9537d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 4,
9547d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
9557d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 16                     /* 16 bytes per 4x4 block */
9567d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
9577d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
9587d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_SIGNED_LA_LATC2,
9597d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_SIGNED_LA_LATC2",
9607d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE_ALPHA,
9617d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_SIGNED_NORMALIZED,
9627d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 4,
9637d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
9647d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 16                     /* 16 bytes per 4x4 block */
9657d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
9660be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák
9670be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   /* Signed formats from EXT_texture_snorm that are not in GL3.1 */
9680be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
9690be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_A8,
9700be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_A8",
9710be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_ALPHA,
9720be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
9730be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 8,
9740be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0, 0,
9750be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
9760be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
9770be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
9780be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_L8,
9790be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_L8",
9800be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE,
9810be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
9820be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
9830be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      8, 0, 0, 0, 0,
9840be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
9850be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
9860be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
9870be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_AL88,
9880be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_AL88",
9890be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE_ALPHA,
9900be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
9910be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 8,
9920be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      8, 0, 0, 0, 0,
9930be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
9940be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
9950be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
9960be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_I8,
9970be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_I8",
9980be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_INTENSITY,
9990be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
10000be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
10010be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 8, 0, 0, 0,
10020be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
10030be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
10040be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
10050be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_A16,
10060be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_A16",
10070be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_ALPHA,
10080be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
10090be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 16,
10100be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0, 0,
10110be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
10120be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
10130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
10140be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_L16,
10150be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_L16",
10160be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE,
10170be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
10180be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
10190be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      16, 0, 0, 0, 0,
10200be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
10210be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
10220be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
10230be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_AL1616,
10240be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_AL1616",
10250be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE_ALPHA,
10260be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
10270be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 16,
10280be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      16, 0, 0, 0, 0,
10290be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 4
10300be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
10310be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
10320be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_I16,
10330be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_I16",
10340be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_INTENSITY,
10350be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
10360be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
10370be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 16, 0, 0, 0,
10380be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
10390be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   }
1040813870fd9588de101f68728507cff726d7513695Brian Paul};
1041813870fd9588de101f68728507cff726d7513695Brian Paul
1042813870fd9588de101f68728507cff726d7513695Brian Paul
1043813870fd9588de101f68728507cff726d7513695Brian Paul
1044813870fd9588de101f68728507cff726d7513695Brian Paulstatic const struct gl_format_info *
1045813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_info(gl_format format)
1046813870fd9588de101f68728507cff726d7513695Brian Paul{
1047813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = &format_info[format];
1048813870fd9588de101f68728507cff726d7513695Brian Paul   assert(info->Name == format);
1049813870fd9588de101f68728507cff726d7513695Brian Paul   return info;
1050813870fd9588de101f68728507cff726d7513695Brian Paul}
1051813870fd9588de101f68728507cff726d7513695Brian Paul
1052813870fd9588de101f68728507cff726d7513695Brian Paul
1053bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul/** Return string name of format (for debugging) */
1054bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulconst char *
1055bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format)
1056bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul{
1057bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1058bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   return info->StrName;
1059bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul}
1060bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1061bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1062bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1063eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1064eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bytes needed to store a block of pixels in the given format.
1065eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Normally, a block is 1x1 (a single pixel).  But for compressed formats
1066eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * a block may be 4x4 or 8x4, etc.
1067eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
1068813870fd9588de101f68728507cff726d7513695Brian PaulGLuint
1069813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format)
1070813870fd9588de101f68728507cff726d7513695Brian Paul{
1071813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1072813870fd9588de101f68728507cff726d7513695Brian Paul   ASSERT(info->BytesPerBlock);
1073813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BytesPerBlock;
1074813870fd9588de101f68728507cff726d7513695Brian Paul}
1075813870fd9588de101f68728507cff726d7513695Brian Paul
1076813870fd9588de101f68728507cff726d7513695Brian Paul
1077eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1078eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bits per component for the given format.
1079eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param format  one of MESA_FORMAT_x
1080eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param pname  the component, such as GL_RED_BITS, GL_TEXTURE_BLUE_BITS, etc.
1081eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
10825978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLint
10835978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname)
10845978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{
10855978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
10865978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
10875978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   switch (pname) {
1088edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RED_BITS:
10895978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_RED_SIZE:
1090edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_RED_SIZE_EXT:
1091edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:
10925978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->RedBits;
1093edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_GREEN_BITS:
10945978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_GREEN_SIZE:
1095edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_GREEN_SIZE_EXT:
1096edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
10975978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->GreenBits;
1098edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_BLUE_BITS:
10995978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_BLUE_SIZE:
1100edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_BLUE_SIZE_EXT:
1101edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
11025978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->BlueBits;
1103edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_ALPHA_BITS:
11045978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_ALPHA_SIZE:
1105edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_ALPHA_SIZE_EXT:
1106edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
11075978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->AlphaBits;
11085978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_INTENSITY_SIZE:
11095978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->IntensityBits;
11105978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_LUMINANCE_SIZE:
11115978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->LuminanceBits;
1112edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_INDEX_BITS:
11135978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_INDEX_SIZE_EXT:
11145978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->IndexBits;
1115edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_DEPTH_BITS:
11165978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_DEPTH_SIZE_ARB:
1117edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_DEPTH_SIZE_EXT:
1118edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
11195978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->DepthBits;
1120edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_STENCIL_BITS:
11215978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_STENCIL_SIZE_EXT:
1122edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_STENCIL_SIZE_EXT:
1123edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
11245978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->StencilBits;
11255978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   default:
11265978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      _mesa_problem(NULL, "bad pname in _mesa_get_format_bits()");
11275978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return 0;
11285978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   }
11295978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul}
11305978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
11315978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
1132eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1133eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the data type (or more specifically, the data representation)
1134eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * for the given format.
1135eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * The return value will be one of:
1136eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1]
1137eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_SIGNED_NORMALIZED = signed int representing [-1, 1]
1138eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_UNSIGNED_INT = an ordinary unsigned integer
1139f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul *    GL_INT = an ordinary signed integer
1140eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_FLOAT = an ordinary float
1141eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
11425978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLenum
11435978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format)
11445978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{
11455978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
11465978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   return info->DataType;
11475978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul}
11485978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
11495978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
1150eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1151eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the basic format for the given type.  The result will be
1152eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * one of GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA,
1153eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_INTENSITY, GL_YCBCR_MESA, GL_COLOR_INDEX, GL_DEPTH_COMPONENT,
1154eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * GL_STENCIL_INDEX, GL_DEPTH_STENCIL.
1155eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
1156813870fd9588de101f68728507cff726d7513695Brian PaulGLenum
1157813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format)
1158813870fd9588de101f68728507cff726d7513695Brian Paul{
1159813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1160813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BaseFormat;
1161813870fd9588de101f68728507cff726d7513695Brian Paul}
1162813870fd9588de101f68728507cff726d7513695Brian Paul
1163813870fd9588de101f68728507cff726d7513695Brian Paul
11647b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul/**
11657b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * Return the block size (in pixels) for the given format.  Normally
11667b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * the block size is 1x1.  But compressed formats will have block sizes
11677b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * of 4x4 or 8x4 pixels, etc.
11687b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bw  returns block width in pixels
11697b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bh  returns block height in pixels
11707b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul */
11717b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulvoid
11727b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh)
11737b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul{
11747b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
11757b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   *bw = info->BlockWidth;
11767b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   *bh = info->BlockHeight;
11777b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul}
11787b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul
11797b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul
1180eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** Is the given format a compressed format? */
1181813870fd9588de101f68728507cff726d7513695Brian PaulGLboolean
1182813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format)
1183813870fd9588de101f68728507cff726d7513695Brian Paul{
1184813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1185813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BlockWidth > 1 || info->BlockHeight > 1;
1186813870fd9588de101f68728507cff726d7513695Brian Paul}
1187813870fd9588de101f68728507cff726d7513695Brian Paul
1188813870fd9588de101f68728507cff726d7513695Brian Paul
1189813870fd9588de101f68728507cff726d7513695Brian Paul/**
1190e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler * Determine if the given format represents a packed depth/stencil buffer.
1191e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler */
1192e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick BowlerGLboolean
1193e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler_mesa_is_format_packed_depth_stencil(gl_format format)
1194e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler{
1195f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler   const struct gl_format_info *info = _mesa_get_format_info(format);
1196e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1197f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler   return info->BaseFormat == GL_DEPTH_STENCIL;
1198e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler}
1199e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1200e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1201e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler/**
1202ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul * Is the given format a signed/unsigned integer color format?
1203f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul */
1204f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian PaulGLboolean
1205412b9608838b872bc294569b3ee913343a7e66f6Brian Paul_mesa_is_format_integer_color(gl_format format)
1206f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul{
1207f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1208ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul   return (info->DataType == GL_INT || info->DataType == GL_UNSIGNED_INT) &&
1209ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_DEPTH_COMPONENT &&
1210ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_DEPTH_STENCIL &&
1211ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_STENCIL_INDEX;
1212f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul}
1213f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul
1214f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul
1215f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul/**
1216f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * Return color encoding for given format.
1217f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * \return GL_LINEAR or GL_SRGB
1218f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul */
1219f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian PaulGLenum
1220f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format)
1221f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul{
1222f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   /* XXX this info should be encoded in gl_format_info */
1223f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   switch (format) {
1224f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGB8:
1225f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA8:
1226f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SARGB8:
1227f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SL8:
1228f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SLA8:
1229f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGB_DXT1:
1230f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT1:
1231f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT3:
1232f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT5:
1233f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul      return GL_SRGB;
1234f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   default:
1235f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul      return GL_LINEAR;
1236f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   }
1237f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul}
1238f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul
1239aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul
1240aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul/**
1241aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For an sRGB format, return the corresponding linear color space format.
1242aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For non-sRGB formats, return the format as-is.
1243aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul */
1244edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airliegl_format
1245edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie_mesa_get_srgb_format_linear(gl_format format)
1246edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie{
1247edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   switch (format) {
1248edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGB8:
1249edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGB888;
1250edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1251edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA8:
1252edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA8888;
1253edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1254edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SARGB8:
1255edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_ARGB8888;
1256edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1257edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SL8:
1258edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_L8;
1259edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1260edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SLA8:
1261edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_AL88;
1262edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1263edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGB_DXT1:
1264edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGB_DXT1;
1265edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1266edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT1:
1267edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT1;
1268edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1269edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT3:
1270edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT3;
1271edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1272edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT5:
1273edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT5;
1274edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1275edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   default:
1276edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1277edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   }
1278edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   return format;
1279edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie}
1280edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie
1281f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul
1282f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul/**
12831c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * Return number of bytes needed to store an image of the given size
12841c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * in the given format.
12851c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul */
12861c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian PaulGLuint
12871c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width,
12881c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul                        GLsizei height, GLsizei depth)
12891c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul{
12901c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1291040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   /* Strictly speaking, a conditional isn't needed here */
12921c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
12937bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul      /* compressed format (2D only for now) */
12941c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint bw = info->BlockWidth, bh = info->BlockHeight;
12951c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint wblocks = (width + bw - 1) / bw;
12961c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint hblocks = (height + bh - 1) / bh;
1297040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint sz = wblocks * hblocks * info->BytesPerBlock;
12987bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul      assert(depth == 1);
12991c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      return sz;
13001c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   }
13011c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   else {
13021c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      /* non-compressed */
13031c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint sz = width * height * depth * info->BytesPerBlock;
13041c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      return sz;
13051c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   }
13061c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul}
13071c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
13081c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
130974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul/**
131074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * Same as _mesa_format_image_size() but returns a 64-bit value to
131174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * accomodate very large textures.
131274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul */
131374c324fdbaebb7accaee668f2bc54af4699d0025Brian Pauluint64_t
131474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul_mesa_format_image_size64(gl_format format, GLsizei width,
131574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                          GLsizei height, GLsizei depth)
131674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul{
131774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
131874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   /* Strictly speaking, a conditional isn't needed here */
131974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
132074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      /* compressed format (2D only for now) */
132174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t bw = info->BlockWidth, bh = info->BlockHeight;
132274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t wblocks = (width + bw - 1) / bw;
132374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t hblocks = (height + bh - 1) / bh;
132474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t sz = wblocks * hblocks * info->BytesPerBlock;
132574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      assert(depth == 1);
132674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      return sz;
132774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   }
132874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   else {
132974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      /* non-compressed */
133074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t sz = ((uint64_t) width *
133174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           (uint64_t) height *
133274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           (uint64_t) depth *
133374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           info->BytesPerBlock);
133474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      return sz;
133574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   }
133674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul}
133774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul
133874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul
13391c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
1340040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian PaulGLint
1341040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width)
1342040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul{
1343040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1344040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   /* Strictly speaking, a conditional isn't needed here */
1345040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
1346040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      /* compressed format */
1347040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint bw = info->BlockWidth;
1348040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint wblocks = (width + bw - 1) / bw;
1349040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLint stride = wblocks * info->BytesPerBlock;
1350040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      return stride;
1351040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   }
1352040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   else {
1353040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLint stride = width * info->BytesPerBlock;
1354040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      return stride;
1355040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   }
1356040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul}
1357040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul
1358040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul
1359d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul/**
1360d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * Debug/test: check that all formats are handled in the
1361d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * _mesa_format_to_type_and_comps() function.  When new pixel formats
1362d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * are added to Mesa, that function needs to be updated.
1363d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * This is a no-op after the first call.
1364d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul */
1365d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulstatic void
1366d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulcheck_format_to_type_and_comps(void)
1367d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul{
1368d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   gl_format f;
1369d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
1370d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   for (f = MESA_FORMAT_NONE + 1; f < MESA_FORMAT_COUNT; f++) {
1371d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      GLenum datatype = 0;
1372d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      GLuint comps = 0;
1373d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      /* This function will emit a problem/warning if the format is
1374d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul       * not handled.
1375d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul       */
1376d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      _mesa_format_to_type_and_comps(f, &datatype, &comps);
1377d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   }
1378d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul}
1379d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
13801c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
13811c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul/**
1382813870fd9588de101f68728507cff726d7513695Brian Paul * Do sanity checking of the format info table.
1383813870fd9588de101f68728507cff726d7513695Brian Paul */
1384813870fd9588de101f68728507cff726d7513695Brian Paulvoid
1385813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void)
1386813870fd9588de101f68728507cff726d7513695Brian Paul{
1387813870fd9588de101f68728507cff726d7513695Brian Paul   GLuint i;
1388813870fd9588de101f68728507cff726d7513695Brian Paul
1389813870fd9588de101f68728507cff726d7513695Brian Paul   assert(Elements(format_info) == MESA_FORMAT_COUNT);
1390813870fd9588de101f68728507cff726d7513695Brian Paul
1391813870fd9588de101f68728507cff726d7513695Brian Paul   for (i = 0; i < MESA_FORMAT_COUNT; i++) {
1392813870fd9588de101f68728507cff726d7513695Brian Paul      const struct gl_format_info *info = _mesa_get_format_info(i);
1393813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info);
1394813870fd9588de101f68728507cff726d7513695Brian Paul
1395813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info->Name == i);
1396813870fd9588de101f68728507cff726d7513695Brian Paul
1397e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      if (info->Name == MESA_FORMAT_NONE)
1398e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul         continue;
1399e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul
1400813870fd9588de101f68728507cff726d7513695Brian Paul      if (info->BlockWidth == 1 && info->BlockHeight == 1) {
1401813870fd9588de101f68728507cff726d7513695Brian Paul         if (info->RedBits > 0) {
1402813870fd9588de101f68728507cff726d7513695Brian Paul            GLuint t = info->RedBits + info->GreenBits
1403813870fd9588de101f68728507cff726d7513695Brian Paul               + info->BlueBits + info->AlphaBits;
14040073f50cd47c48c706b4524364b9c0594804febfBrian Paul            assert(t / 8 <= info->BytesPerBlock);
14056e0584932b3e556a0aecd2ca36f5ae41dc40a919Vinson Lee            (void) t;
1406813870fd9588de101f68728507cff726d7513695Brian Paul         }
1407813870fd9588de101f68728507cff726d7513695Brian Paul      }
1408813870fd9588de101f68728507cff726d7513695Brian Paul
1409813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info->DataType == GL_UNSIGNED_NORMALIZED ||
1410813870fd9588de101f68728507cff726d7513695Brian Paul             info->DataType == GL_SIGNED_NORMALIZED ||
1411813870fd9588de101f68728507cff726d7513695Brian Paul             info->DataType == GL_UNSIGNED_INT ||
14120073f50cd47c48c706b4524364b9c0594804febfBrian Paul             info->DataType == GL_INT ||
1413813870fd9588de101f68728507cff726d7513695Brian Paul             info->DataType == GL_FLOAT);
1414813870fd9588de101f68728507cff726d7513695Brian Paul
1415813870fd9588de101f68728507cff726d7513695Brian Paul      if (info->BaseFormat == GL_RGB) {
1416813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits > 0);
1417813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits > 0);
1418813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits > 0);
1419813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
1420813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
1421813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
1422813870fd9588de101f68728507cff726d7513695Brian Paul      }
1423813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_RGBA) {
1424813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits > 0);
1425813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits > 0);
1426813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits > 0);
1427813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits > 0);
1428813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
1429813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
1430813870fd9588de101f68728507cff726d7513695Brian Paul      }
14315d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      else if (info->BaseFormat == GL_RG) {
14325d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->RedBits > 0);
14335d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->GreenBits > 0);
14345d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->BlueBits == 0);
14355d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->AlphaBits == 0);
14365d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->LuminanceBits == 0);
14375d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->IntensityBits == 0);
14385d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      }
14395d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      else if (info->BaseFormat == GL_RED) {
14405d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->RedBits > 0);
14415d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->GreenBits == 0);
14425d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->BlueBits == 0);
14435d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->AlphaBits == 0);
14445d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->LuminanceBits == 0);
14455d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->IntensityBits == 0);
14465d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      }
1447813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_LUMINANCE) {
1448813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits == 0);
1449813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits == 0);
1450813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits == 0);
1451813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
1452813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits > 0);
1453813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
1454813870fd9588de101f68728507cff726d7513695Brian Paul      }
1455813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_INTENSITY) {
1456813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits == 0);
1457813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits == 0);
1458813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits == 0);
1459813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
1460813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
1461813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits > 0);
1462813870fd9588de101f68728507cff726d7513695Brian Paul      }
1463813870fd9588de101f68728507cff726d7513695Brian Paul   }
1464d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
1465d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   check_format_to_type_and_comps();
1466813870fd9588de101f68728507cff726d7513695Brian Paul}
1467813870fd9588de101f68728507cff726d7513695Brian Paul
1468813870fd9588de101f68728507cff726d7513695Brian Paul
1469019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1470813870fd9588de101f68728507cff726d7513695Brian Paul/**
1471019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Return datatype and number of components per texel for the given gl_format.
1472019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Only used for mipmap generation code.
1473813870fd9588de101f68728507cff726d7513695Brian Paul */
1474813870fd9588de101f68728507cff726d7513695Brian Paulvoid
1475019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format,
1476019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul                               GLenum *datatype, GLuint *comps)
1477813870fd9588de101f68728507cff726d7513695Brian Paul{
1478019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   switch (format) {
1479019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA8888:
1480019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA8888_REV:
1481019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB8888:
1482019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB8888_REV:
148374d61d03b54d72217d463c248468cdcd09320efcBrian Paul   case MESA_FORMAT_XRGB8888:
148479c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_XRGB8888_REV:
1485019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
1486019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
1487019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1488019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB888:
1489019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_BGR888:
1490019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
1491019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
1492019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1493019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB565:
1494019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB565_REV:
1495019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_5_6_5;
1496019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
1497019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1498019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1499019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB4444:
1500019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB4444_REV:
1501019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_4_4_4_4;
1502019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
1503019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1504019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1505019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB1555:
1506019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB1555_REV:
1507019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV;
1508019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
1509019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1510019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1511621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   case MESA_FORMAT_ARGB2101010:
1512621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      *datatype = GL_UNSIGNED_INT_2_10_10_10_REV;
1513621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      *comps = 4;
1514621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      return;
1515621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák
151679c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_RGBA5551:
151779c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_UNSIGNED_SHORT_5_5_5_1;
151879c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 4;
151979c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
152079c65410c132c22b67b7635cee740dea9a736f80Brian Paul
15214d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák   case MESA_FORMAT_AL44:
15224d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      *datatype = MESA_UNSIGNED_BYTE_4_4;
15234d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      *comps = 2;
15244d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      return;
15254d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák
1526019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_AL88:
1527019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_AL88_REV:
15285d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_RG88:
15295d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_RG88_REV:
1530019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
1531019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
1532019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1533eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick
1534eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   case MESA_FORMAT_AL1616:
1535eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   case MESA_FORMAT_AL1616_REV:
15365d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_RG1616:
15375d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_RG1616_REV:
1538eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      *datatype = GL_UNSIGNED_SHORT;
1539eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      *comps = 2;
1540eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      return;
1541eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick
15425d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_R16:
1543eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   case MESA_FORMAT_A16:
1544bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   case MESA_FORMAT_L16:
1545fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   case MESA_FORMAT_I16:
15465d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      *datatype = GL_UNSIGNED_SHORT;
15475d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      *comps = 1;
15485d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      return;
15495d1387b2da3626326410804026f8b92f1a121fdcIan Romanick
1550019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB332:
1551019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE_3_3_2;
1552019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
1553019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1554019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1555019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_A8:
1556019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_L8:
1557019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_I8:
1558019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_CI8:
15595d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_R8:
156079c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_S8:
1561813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_BYTE;
1562813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 1;
1563019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1564019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1565019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_YCBCR:
1566019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_YCBCR_REV:
1567019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT;
1568813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 2;
1569019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1570019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1571019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z24_S8:
1572019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_INT;
1573019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1; /* XXX OK? */
1574019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1575019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1576019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_S8_Z24:
1577019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_INT;
1578019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1; /* XXX OK? */
1579019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1580019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1581019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z16:
1582813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_SHORT;
1583019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
1584019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1585019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1586e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   case MESA_FORMAT_X8_Z24:
1587e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      *datatype = GL_UNSIGNED_INT;
1588e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      *comps = 1;
1589e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      return;
1590e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul
1591c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   case MESA_FORMAT_Z24_X8:
1592c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      *datatype = GL_UNSIGNED_INT;
1593c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      *comps = 1;
1594c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      return;
1595c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca
1596019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z32:
1597019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_INT;
1598019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
1599019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1600019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1601019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_DUDV8:
1602019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_BYTE;
1603813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 2;
1604019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1605019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
160679c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_SIGNED_R8:
16070be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_A8:
16080be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_L8:
16090be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_I8:
161079c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_BYTE;
161179c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 1;
161279c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
16130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_RG88_REV:
16140be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_AL88:
161579c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_BYTE;
161679c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 2;
161779c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
1618019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SIGNED_RGBA8888:
1619019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SIGNED_RGBA8888_REV:
162079c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_SIGNED_RGBX8888:
1621813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_BYTE;
1622019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
1623019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1624880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul
162579c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_RGBA_16:
162679c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_UNSIGNED_SHORT;
162779c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 4;
162879c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
162979c65410c132c22b67b7635cee740dea9a736f80Brian Paul
16300be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_R16:
16310be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_A16:
16320be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_L16:
16330be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_I16:
1634880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
1635880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 1;
1636880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
16370be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_GR1616:
16380be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_AL1616:
1639880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
1640880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 2;
1641880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
1642880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul   case MESA_FORMAT_SIGNED_RGB_16:
1643880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
1644880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 3;
1645880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
1646c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul   case MESA_FORMAT_SIGNED_RGBA_16:
1647c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      *datatype = GL_SHORT;
1648c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      *comps = 4;
1649c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      return;
1650019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1651019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB
1652019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGB8:
1653019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
1654019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
1655019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1656019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA8:
1657019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SARGB8:
1658019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
1659019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
1660019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1661019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SL8:
1662019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
1663813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 1;
1664019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1665019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SLA8:
1666019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
1667019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
1668019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1669019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
1670019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1671019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_fxt1
1672019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FXT1:
1673019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FXT1:
1674019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
1675019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_s3tc
1676019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_DXT1:
1677019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT1:
1678019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT3:
1679019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT5:
1680019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB
1681019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGB_DXT1:
1682019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT1:
1683019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT3:
1684019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT5:
1685019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
168669c78bf2c21c239d6064847dd0628f3526d68f9bIan Romanick#endif
16878d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_RED_RGTC1:
16888d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_SIGNED_RED_RGTC1:
16898d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_RG_RGTC2:
16908d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_SIGNED_RG_RGTC2:
16917d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_L_LATC1:
16927d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_SIGNED_L_LATC1:
16937d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_LA_LATC2:
16947d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_SIGNED_LA_LATC2:
1695019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      /* XXX generate error instead? */
1696813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_BYTE;
1697019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 0;
1698019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1699019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1700019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FLOAT32:
1701019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
1702019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
1703019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1704019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FLOAT16:
1705019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
1706019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
1707019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1708019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FLOAT32:
1709019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
1710019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
1711019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1712019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FLOAT16:
1713019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
1714019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
1715019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1716019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
1717019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
1718019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
1719019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1720019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
1721019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
1722019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
1723019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1724019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ALPHA_FLOAT32:
1725019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_FLOAT32:
1726019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_INTENSITY_FLOAT32:
1727019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
1728019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
1729019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1730019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ALPHA_FLOAT16:
1731019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_FLOAT16:
1732019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_INTENSITY_FLOAT16:
1733019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
1734019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
1735019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
1736019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
1737abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT8:
1738abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_BYTE;
1739abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
1740abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
1741abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT16:
1742abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_SHORT;
1743abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
1744abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
1745abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT32:
1746abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_INT;
1747abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
1748abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
1749abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
1750abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   /**
1751abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul    * \name Non-normalized unsigned integer formats.
1752abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul    */
1753abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT8:
1754abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_BYTE;
1755abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
1756abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
1757abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT16:
1758abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_SHORT;
1759abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
1760abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
1761abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT32:
1762abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_INT;
1763abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
1764abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
1765abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
176679c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_COUNT:
1767a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee      assert(0);
1768a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee      return;
1769a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee
1770a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee   case MESA_FORMAT_NONE:
177179c65410c132c22b67b7635cee740dea9a736f80Brian Paul   /* For debug builds, warn if any formats are not handled */
1772280750c5cabfc5f312c3abe0424f57b2edeb53dfVinson Lee#ifdef DEBUG
1773019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   default:
177479c65410c132c22b67b7635cee740dea9a736f80Brian Paul#endif
1775c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul      _mesa_problem(NULL, "bad format %s in _mesa_format_to_type_and_comps",
1776c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul                    _mesa_get_format_name(format));
1777019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = 0;
1778019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
1779813870fd9588de101f68728507cff726d7513695Brian Paul   }
1780813870fd9588de101f68728507cff726d7513695Brian Paul}
1781