formats.c revision 952ca0785236729b69e154b3b48783fc4d9a5526
1813870fd9588de101f68728507cff726d7513695Brian Paul/*
2813870fd9588de101f68728507cff726d7513695Brian Paul * Mesa 3-D graphics library
3813870fd9588de101f68728507cff726d7513695Brian Paul * Version:  7.7
4813870fd9588de101f68728507cff726d7513695Brian Paul *
5813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
6813870fd9588de101f68728507cff726d7513695Brian Paul * Copyright (c) 2008-2009  VMware, Inc.
7813870fd9588de101f68728507cff726d7513695Brian Paul *
8813870fd9588de101f68728507cff726d7513695Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a
9813870fd9588de101f68728507cff726d7513695Brian Paul * copy of this software and associated documentation files (the "Software"),
10813870fd9588de101f68728507cff726d7513695Brian Paul * to deal in the Software without restriction, including without limitation
11813870fd9588de101f68728507cff726d7513695Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12813870fd9588de101f68728507cff726d7513695Brian Paul * and/or sell copies of the Software, and to permit persons to whom the
13813870fd9588de101f68728507cff726d7513695Brian Paul * Software is furnished to do so, subject to the following conditions:
14813870fd9588de101f68728507cff726d7513695Brian Paul *
15813870fd9588de101f68728507cff726d7513695Brian Paul * The above copyright notice and this permission notice shall be included
16813870fd9588de101f68728507cff726d7513695Brian Paul * in all copies or substantial portions of the Software.
17813870fd9588de101f68728507cff726d7513695Brian Paul *
18813870fd9588de101f68728507cff726d7513695Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19813870fd9588de101f68728507cff726d7513695Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20813870fd9588de101f68728507cff726d7513695Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
21813870fd9588de101f68728507cff726d7513695Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22813870fd9588de101f68728507cff726d7513695Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23813870fd9588de101f68728507cff726d7513695Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24813870fd9588de101f68728507cff726d7513695Brian Paul */
25813870fd9588de101f68728507cff726d7513695Brian Paul
26813870fd9588de101f68728507cff726d7513695Brian Paul
27c28d78f8324cfc17936af63c258a1cc55d590d60Brian Paul#include "imports.h"
28813870fd9588de101f68728507cff726d7513695Brian Paul#include "formats.h"
293a6f9d0f47861b1c618366d679ad8ddd9a06b323Brian Paul#include "mfeatures.h"
30488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul#include "macros.h"
31813870fd9588de101f68728507cff726d7513695Brian Paul
32813870fd9588de101f68728507cff726d7513695Brian Paul
33813870fd9588de101f68728507cff726d7513695Brian Paul/**
34be0765cd6ec47cf068775197f312a1123e044566Brian Paul * Information about texture formats.
35be0765cd6ec47cf068775197f312a1123e044566Brian Paul */
36be0765cd6ec47cf068775197f312a1123e044566Brian Paulstruct gl_format_info
37be0765cd6ec47cf068775197f312a1123e044566Brian Paul{
38be0765cd6ec47cf068775197f312a1123e044566Brian Paul   gl_format Name;
39be0765cd6ec47cf068775197f312a1123e044566Brian Paul
40bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   /** text name for debugging */
41bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   const char *StrName;
42bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
43be0765cd6ec47cf068775197f312a1123e044566Brian Paul   /**
442d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt    * Base format is one of GL_RED, GL_RG, GL_RGB, GL_RGBA, GL_ALPHA,
452d29349c0083134e3b9b9d2023368268b7dcc951Eric Anholt    * GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_INTENSITY, GL_YCBCR_MESA,
4655d232a81566cf7ab8855c42e2ef1a280276a04cIan Romanick    * GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_DEPTH_STENCIL, GL_DUDV_ATI.
47be0765cd6ec47cf068775197f312a1123e044566Brian Paul    */
48be0765cd6ec47cf068775197f312a1123e044566Brian Paul   GLenum BaseFormat;
49be0765cd6ec47cf068775197f312a1123e044566Brian Paul
50be0765cd6ec47cf068775197f312a1123e044566Brian Paul   /**
5182fff5f3edfd2f6396a872a12d753b2ab90edd7bBrian Paul    * Logical data type: one of  GL_UNSIGNED_NORMALIZED, GL_SIGNED_NORMALIZED,
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   {
127d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      MESA_FORMAT_RGBX8888,        /* Name */
128d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      "MESA_FORMAT_RGBX8888",      /* StrName */
129d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      GL_RGB,                      /* BaseFormat */
130d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      GL_UNSIGNED_NORMALIZED,      /* DataType */
131d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
132d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
133d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      1, 1, 4                      /* BlockWidth/Height,Bytes */
134d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   },
135d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   {
136d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      MESA_FORMAT_RGBX8888_REV,    /* Name */
137d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      "MESA_FORMAT_RGBX8888_REV",  /* StrName */
138d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      GL_RGB,                      /* BaseFormat */
139d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      GL_UNSIGNED_NORMALIZED,      /* DataType */
140d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
141d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
142d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      1, 1, 4                      /* BlockWidth/Height,Bytes */
143d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   },
144d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   {
14574d61d03b54d72217d463c248468cdcd09320efcBrian Paul      MESA_FORMAT_XRGB8888,        /* Name */
146bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_XRGB8888",      /* StrName */
14774d61d03b54d72217d463c248468cdcd09320efcBrian Paul      GL_RGB,                      /* BaseFormat */
14874d61d03b54d72217d463c248468cdcd09320efcBrian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
14974d61d03b54d72217d463c248468cdcd09320efcBrian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
15074d61d03b54d72217d463c248468cdcd09320efcBrian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
15174d61d03b54d72217d463c248468cdcd09320efcBrian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
15274d61d03b54d72217d463c248468cdcd09320efcBrian Paul   },
15374d61d03b54d72217d463c248468cdcd09320efcBrian Paul   {
1542d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      MESA_FORMAT_XRGB8888_REV,    /* Name */
1552d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      "MESA_FORMAT_XRGB8888_REV",  /* StrName */
1562d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      GL_RGB,                      /* BaseFormat */
1572d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      GL_UNSIGNED_NORMALIZED,      /* DataType */
1582d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
1592d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
1602d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer      1, 1, 4                      /* BlockWidth/Height,Bytes */
1612d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer   },
1622d0c2952566810ef1b277b49b064f4874a973112Michel Dänzer   {
163813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB888,          /* Name */
164bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB888",        /* StrName */
165813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
166813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
167813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
168813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
169813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3                      /* BlockWidth/Height,Bytes */
170813870fd9588de101f68728507cff726d7513695Brian Paul   },
171813870fd9588de101f68728507cff726d7513695Brian Paul   {
172813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_BGR888,          /* Name */
173bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_BGR888",        /* StrName */
174813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
175813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
176813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,                  /* Red/Green/Blue/AlphaBits */
177813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
178813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3                      /* BlockWidth/Height,Bytes */
179813870fd9588de101f68728507cff726d7513695Brian Paul   },
180813870fd9588de101f68728507cff726d7513695Brian Paul   {
181813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB565,          /* Name */
182bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB565",        /* StrName */
183813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
184813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
185813870fd9588de101f68728507cff726d7513695Brian Paul      5, 6, 5, 0,                  /* 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_RGB565_REV,      /* Name */
191bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB565_REV",    /* StrName */
192813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
193813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
194813870fd9588de101f68728507cff726d7513695Brian Paul      5, 6, 5, 0,                  /* 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_ARGB4444,        /* Name */
200bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB4444",      /* StrName */
201813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
202813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
203813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,                  /* 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_ARGB4444_REV,    /* Name */
209bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB4444_REV",  /* StrName */
210813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
211813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
212813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,                  /* 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_RGBA5551,        /* Name */
218bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA5551",      /* 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   {
226813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB1555,        /* Name */
227bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB1555",      /* StrName */
228813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
229813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
230813870fd9588de101f68728507cff726d7513695Brian Paul      5, 5, 5, 1,                  /* Red/Green/Blue/AlphaBits */
231813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
232813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
233813870fd9588de101f68728507cff726d7513695Brian Paul   },
234813870fd9588de101f68728507cff726d7513695Brian Paul   {
235813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ARGB1555_REV,    /* Name */
236bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ARGB1555_REV",  /* StrName */
237813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,                     /* BaseFormat */
238813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
239813870fd9588de101f68728507cff726d7513695Brian Paul      5, 5, 5, 1,                  /* Red/Green/Blue/AlphaBits */
240813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
241813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
242813870fd9588de101f68728507cff726d7513695Brian Paul   },
243813870fd9588de101f68728507cff726d7513695Brian Paul   {
244bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      MESA_FORMAT_AL44,            /* Name */
245bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      "MESA_FORMAT_AL44",          /* StrName */
246bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      GL_LUMINANCE_ALPHA,          /* BaseFormat */
247bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
248bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      0, 0, 0, 4,                  /* Red/Green/Blue/AlphaBits */
249bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      4, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
250bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák      1, 1, 1                      /* BlockWidth/Height,Bytes */
251bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák   },
252bae9d511f343c7bd5eb66d1d1d18d32b47e738e3Marek Olšák   {
253813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_AL88,            /* Name */
254bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_AL88",          /* StrName */
255813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,          /* BaseFormat */
256813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
257813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
258813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
259813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
260813870fd9588de101f68728507cff726d7513695Brian Paul   },
261813870fd9588de101f68728507cff726d7513695Brian Paul   {
262813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_AL88_REV,        /* Name */
263bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_AL88_REV",      /* StrName */
264813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,          /* BaseFormat */
265813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
266813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
267813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
268813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
269813870fd9588de101f68728507cff726d7513695Brian Paul   },
270813870fd9588de101f68728507cff726d7513695Brian Paul   {
271eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      MESA_FORMAT_AL1616,          /* Name */
272eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      "MESA_FORMAT_AL1616",        /* StrName */
273eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_LUMINANCE_ALPHA,          /* BaseFormat */
274eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_UNSIGNED_NORMALIZED,      /* DataType */
275eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
276eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
277eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      1, 1, 4                      /* BlockWidth/Height,Bytes */
278eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   },
279eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   {
280eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      MESA_FORMAT_AL1616_REV,      /* Name */
281eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      "MESA_FORMAT_AL1616_REV",    /* StrName */
282eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_LUMINANCE_ALPHA,          /* BaseFormat */
283eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      GL_UNSIGNED_NORMALIZED,      /* DataType */
284eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
285eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
286eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      1, 1, 4                      /* BlockWidth/Height,Bytes */
287eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   },
288eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   {
289813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB332,          /* Name */
290bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB332",        /* StrName */
291813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
292813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
293813870fd9588de101f68728507cff726d7513695Brian Paul      3, 3, 2, 0,                  /* Red/Green/Blue/AlphaBits */
294813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
295813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
296813870fd9588de101f68728507cff726d7513695Brian Paul   },
297813870fd9588de101f68728507cff726d7513695Brian Paul   {
298813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_A8,              /* Name */
299bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_A8",            /* StrName */
300813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,                    /* BaseFormat */
301813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
302813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,                  /* Red/Green/Blue/AlphaBits */
303813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
304813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
305813870fd9588de101f68728507cff726d7513695Brian Paul   },
306813870fd9588de101f68728507cff726d7513695Brian Paul   {
307eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      MESA_FORMAT_A16,             /* Name */
308eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      "MESA_FORMAT_A16",           /* StrName */
309eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      GL_ALPHA,                    /* BaseFormat */
310eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
311eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      0, 0, 0, 16,                 /* Red/Green/Blue/AlphaBits */
312eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
313eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
314eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   },
315eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   {
316813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_L8,              /* Name */
317bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_L8",            /* StrName */
318813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE,                /* BaseFormat */
319813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
320813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
321813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
322813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
323813870fd9588de101f68728507cff726d7513695Brian Paul   },
324813870fd9588de101f68728507cff726d7513695Brian Paul   {
325bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      MESA_FORMAT_L16,             /* Name */
326bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      "MESA_FORMAT_L16",           /* StrName */
327bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      GL_LUMINANCE,                /* BaseFormat */
328bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
329bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
330bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      16, 0, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
331bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
332bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   },
333bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   {
334813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_I8,              /* Name */
335bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_I8",            /* StrName */
336813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,                /* BaseFormat */
337813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
338813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
339813870fd9588de101f68728507cff726d7513695Brian Paul      0, 8, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
340813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
341813870fd9588de101f68728507cff726d7513695Brian Paul   },
342813870fd9588de101f68728507cff726d7513695Brian Paul   {
343fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      MESA_FORMAT_I16,             /* Name */
344fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      "MESA_FORMAT_I16",           /* StrName */
345fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      GL_INTENSITY,                /* BaseFormat */
346fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      GL_UNSIGNED_NORMALIZED,      /* DataType */
347fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
348fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      0, 16, 0, 0, 0,              /* Lum/Int/Index/Depth/StencilBits */
349fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák      1, 1, 2                      /* BlockWidth/Height,Bytes */
350fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   },
351fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   {
352813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_YCBCR,           /* Name */
353bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_YCBCR",         /* 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   {
361813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_YCBCR_REV,       /* Name */
362bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_YCBCR_REV",     /* StrName */
363813870fd9588de101f68728507cff726d7513695Brian Paul      GL_YCBCR_MESA,               /* BaseFormat */
364813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
365813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
366813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
367813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
368813870fd9588de101f68728507cff726d7513695Brian Paul   },
369813870fd9588de101f68728507cff726d7513695Brian Paul   {
3705d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_R8,
3715d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_R8",
3725d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RED,
3735d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3745d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      8, 0, 0, 0,
3755d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3765d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 1
3775d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3785d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
3790a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul      MESA_FORMAT_GR88,
3800a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul      "MESA_FORMAT_GR88",
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   {
388b4aecc4e1861e60e40e14868719219084967e46dBrian Paul      MESA_FORMAT_RG88,
389b4aecc4e1861e60e40e14868719219084967e46dBrian Paul      "MESA_FORMAT_RG88",
3905d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
3915d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
3925d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      8, 8, 0, 0,
3935d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
3945d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 2
3955d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
3965d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
3975d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_R16,
3985d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_R16",
3995d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RED,
4005d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
4015d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      16, 0, 0, 0,
4025d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
4035d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 2
4045d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
4055d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
4065d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_RG1616,
4075d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_RG1616",
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   {
4155d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      MESA_FORMAT_RG1616_REV,
4165d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      "MESA_FORMAT_RG1616_REV",
4175d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_RG,
4185d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      GL_UNSIGNED_NORMALIZED,
4195d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      16, 16, 0, 0,
4205d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      0, 0, 0, 0, 0,
4215d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      1, 1, 4
4225d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   },
4235d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   {
424621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      MESA_FORMAT_ARGB2101010,
425621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      "MESA_FORMAT_ARGB2101010",
426621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      GL_RGBA,
427621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      GL_UNSIGNED_NORMALIZED,
428621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      10, 10, 10, 2,
429621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      0, 0, 0, 0, 0,
430621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      1, 1, 4
431621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   },
432621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   {
433813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z24_S8,          /* Name */
434bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z24_S8",        /* StrName */
435813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_STENCIL,            /* BaseFormat */
436755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* 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_S8_Z24,          /* Name */
443bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_S8_Z24",        /* StrName */
444813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_STENCIL,            /* BaseFormat */
445755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
446813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
447813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 24, 8,              /* Lum/Int/Index/Depth/StencilBits */
448813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
449813870fd9588de101f68728507cff726d7513695Brian Paul   },
450813870fd9588de101f68728507cff726d7513695Brian Paul   {
451813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z16,             /* Name */
452bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z16",           /* StrName */
453813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
454755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
455813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
456813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16, 0,              /* Lum/Int/Index/Depth/StencilBits */
457813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2                      /* BlockWidth/Height,Bytes */
458813870fd9588de101f68728507cff726d7513695Brian Paul   },
459813870fd9588de101f68728507cff726d7513695Brian Paul   {
460e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      MESA_FORMAT_X8_Z24,          /* Name */
461bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_X8_Z24",        /* StrName */
462e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
463755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
464e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
465e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      0, 0, 0, 24, 0,              /* Lum/Int/Index/Depth/StencilBits */
466e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
467e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   },
468e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   {
469c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      MESA_FORMAT_Z24_X8,          /* Name */
470c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      "MESA_FORMAT_Z24_X8",        /* StrName */
471c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      GL_DEPTH_COMPONENT,          /* BaseFormat */
472755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
473c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
474c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      0, 0, 0, 24, 0,              /* Lum/Int/Index/Depth/StencilBits */
475c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      1, 1, 4                      /* BlockWidth/Height,Bytes */
476c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   },
477c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   {
478813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_Z32,             /* Name */
479bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_Z32",           /* StrName */
480813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DEPTH_COMPONENT,          /* BaseFormat */
481755f0a0a02c5cf3be7e69ad51b411711fcc0bc27Eric Anholt      GL_UNSIGNED_NORMALIZED,      /* DataType */
482813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
483813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32, 0,              /* Lum/Int/Index/Depth/StencilBits */
484813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4                      /* BlockWidth/Height,Bytes */
485813870fd9588de101f68728507cff726d7513695Brian Paul   },
486813870fd9588de101f68728507cff726d7513695Brian Paul   {
487813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_S8,              /* Name */
488bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_S8",            /* StrName */
489813870fd9588de101f68728507cff726d7513695Brian Paul      GL_STENCIL_INDEX,            /* BaseFormat */
490813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_INT,             /* DataType */
491813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
492813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 8,               /* Lum/Int/Index/Depth/StencilBits */
493813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 1                      /* BlockWidth/Height,Bytes */
494813870fd9588de101f68728507cff726d7513695Brian Paul   },
495813870fd9588de101f68728507cff726d7513695Brian Paul   {
496813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGB8,
497bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGB8",
498813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
499813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
500813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 0,
501813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
502813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 3
503813870fd9588de101f68728507cff726d7513695Brian Paul   },
504813870fd9588de101f68728507cff726d7513695Brian Paul   {
505813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA8,
506bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA8",
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_SARGB8,
515bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SARGB8",
516813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
517813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
518813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
519813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
520813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
521813870fd9588de101f68728507cff726d7513695Brian Paul   },
522813870fd9588de101f68728507cff726d7513695Brian Paul   {
523813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SL8,
524bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SL8",
52571cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      GL_LUMINANCE,
526813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
52771cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      0, 0, 0, 0,
528813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,
52971cd40bccf8dcbf628a7d7d3f7c877d547338c5aBrian Paul      1, 1, 1
530813870fd9588de101f68728507cff726d7513695Brian Paul   },
531813870fd9588de101f68728507cff726d7513695Brian Paul   {
532813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SLA8,
533bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SLA8",
534813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
535813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
536813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 8,
537813870fd9588de101f68728507cff726d7513695Brian Paul      8, 0, 0, 0, 0,
538813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
539813870fd9588de101f68728507cff726d7513695Brian Paul   },
540813870fd9588de101f68728507cff726d7513695Brian Paul   {
541813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGB_DXT1,       /* Name */
542bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGB_DXT1",     /* StrName */
543813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
544813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
545813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/Blue/AlphaBits */
546813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
547813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
548813870fd9588de101f68728507cff726d7513695Brian Paul   },
549813870fd9588de101f68728507cff726d7513695Brian Paul   {
550813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA_DXT1,
551bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT1",
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, 8                      /* 8 bytes per 4x4 block */
557813870fd9588de101f68728507cff726d7513695Brian Paul   },
558813870fd9588de101f68728507cff726d7513695Brian Paul   {
559813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SRGBA_DXT3,
560bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT3",
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      MESA_FORMAT_SRGBA_DXT5,
569bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SRGBA_DXT5",
570813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
571813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
572813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
573813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
574813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
575813870fd9588de101f68728507cff726d7513695Brian Paul   },
576813870fd9588de101f68728507cff726d7513695Brian Paul
577813870fd9588de101f68728507cff726d7513695Brian Paul   {
578813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FXT1,
579bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FXT1",
580813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
581813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
582c02cd82b463661def7842f910dc561313559df80Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/BlueBits */
583813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
584813870fd9588de101f68728507cff726d7513695Brian Paul      8, 4, 16                     /* 16 bytes per 8x4 block */
585813870fd9588de101f68728507cff726d7513695Brian Paul   },
586813870fd9588de101f68728507cff726d7513695Brian Paul   {
587813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FXT1,
588bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FXT1",
589813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
590813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
591c02cd82b463661def7842f910dc561313559df80Brian Paul      4, 4, 4, 1,                  /* approx Red/Green/Blue/AlphaBits */
592813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
593813870fd9588de101f68728507cff726d7513695Brian Paul      8, 4, 16                     /* 16 bytes per 8x4 block */
594813870fd9588de101f68728507cff726d7513695Brian Paul   },
595813870fd9588de101f68728507cff726d7513695Brian Paul
596813870fd9588de101f68728507cff726d7513695Brian Paul   {
597813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_DXT1,        /* Name */
598bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_DXT1",      /* StrName */
599813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,                      /* BaseFormat */
600813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,      /* DataType */
601813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 0,                  /* approx Red/Green/Blue/AlphaBits */
602813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,               /* Lum/Int/Index/Depth/StencilBits */
603813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 8                      /* 8 bytes per 4x4 block */
604813870fd9588de101f68728507cff726d7513695Brian Paul   },
605813870fd9588de101f68728507cff726d7513695Brian Paul   {
606813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_DXT1,
607bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT1",
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, 8                      /* 8 bytes per 4x4 block */
613813870fd9588de101f68728507cff726d7513695Brian Paul   },
614813870fd9588de101f68728507cff726d7513695Brian Paul   {
615813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_DXT3,
616bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT3",
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_DXT5,
625bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_DXT5",
626813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
627813870fd9588de101f68728507cff726d7513695Brian Paul      GL_UNSIGNED_NORMALIZED,
628813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 4, 4,
629813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
630813870fd9588de101f68728507cff726d7513695Brian Paul      4, 4, 16                     /* 16 bytes per 4x4 block */
631813870fd9588de101f68728507cff726d7513695Brian Paul   },
632813870fd9588de101f68728507cff726d7513695Brian Paul   {
633813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FLOAT32,
634bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FLOAT32",
635813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
636813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
637813870fd9588de101f68728507cff726d7513695Brian Paul      32, 32, 32, 32,
638813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
639813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 16
640813870fd9588de101f68728507cff726d7513695Brian Paul   },
641813870fd9588de101f68728507cff726d7513695Brian Paul   {
642813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGBA_FLOAT16,
643bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGBA_FLOAT16",
644813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
645813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
646813870fd9588de101f68728507cff726d7513695Brian Paul      16, 16, 16, 16,
647813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
648813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 8
649813870fd9588de101f68728507cff726d7513695Brian Paul   },
650813870fd9588de101f68728507cff726d7513695Brian Paul   {
651813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FLOAT32,
652bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FLOAT32",
653813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
654813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
655813870fd9588de101f68728507cff726d7513695Brian Paul      32, 32, 32, 0,
656813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
657813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 12
658813870fd9588de101f68728507cff726d7513695Brian Paul   },
659813870fd9588de101f68728507cff726d7513695Brian Paul   {
660813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_RGB_FLOAT16,
661bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_RGB_FLOAT16",
662813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGB,
663813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
664813870fd9588de101f68728507cff726d7513695Brian Paul      16, 16, 16, 0,
665813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
666813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 6
667813870fd9588de101f68728507cff726d7513695Brian Paul   },
668813870fd9588de101f68728507cff726d7513695Brian Paul   {
669813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ALPHA_FLOAT32,
670bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ALPHA_FLOAT32",
671813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,
672813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
673813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32,
674813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
675813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
676813870fd9588de101f68728507cff726d7513695Brian Paul   },
677813870fd9588de101f68728507cff726d7513695Brian Paul   {
678813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_ALPHA_FLOAT16,
679bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_ALPHA_FLOAT16",
680813870fd9588de101f68728507cff726d7513695Brian Paul      GL_ALPHA,
681813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
682813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16,
683813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
684813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
685813870fd9588de101f68728507cff726d7513695Brian Paul   },
686813870fd9588de101f68728507cff726d7513695Brian Paul   {
687813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_FLOAT32,
688bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_FLOAT32",
68919648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák      GL_LUMINANCE,
690813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
691813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
692813870fd9588de101f68728507cff726d7513695Brian Paul      32, 0, 0, 0, 0,
693813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
694813870fd9588de101f68728507cff726d7513695Brian Paul   },
695813870fd9588de101f68728507cff726d7513695Brian Paul   {
696813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_FLOAT16,
697bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_FLOAT16",
69819648fcf015e512283e93ab9de4a3e969d577e59Marek Olšák      GL_LUMINANCE,
699813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
700813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
701813870fd9588de101f68728507cff726d7513695Brian Paul      16, 0, 0, 0, 0,
702813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
703813870fd9588de101f68728507cff726d7513695Brian Paul   },
704813870fd9588de101f68728507cff726d7513695Brian Paul   {
705813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
706bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32",
707813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
708813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
709813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 32,
710813870fd9588de101f68728507cff726d7513695Brian Paul      32, 0, 0, 0, 0,
711813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 8
712813870fd9588de101f68728507cff726d7513695Brian Paul   },
713813870fd9588de101f68728507cff726d7513695Brian Paul   {
714813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
715bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16",
716813870fd9588de101f68728507cff726d7513695Brian Paul      GL_LUMINANCE_ALPHA,
717813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
718813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 16,
719813870fd9588de101f68728507cff726d7513695Brian Paul      16, 0, 0, 0, 0,
720813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
721813870fd9588de101f68728507cff726d7513695Brian Paul   },
722813870fd9588de101f68728507cff726d7513695Brian Paul   {
723813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_INTENSITY_FLOAT32,
724bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_INTENSITY_FLOAT32",
725813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,
726813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
727813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
728813870fd9588de101f68728507cff726d7513695Brian Paul      0, 32, 0, 0, 0,
729813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
730813870fd9588de101f68728507cff726d7513695Brian Paul   },
731813870fd9588de101f68728507cff726d7513695Brian Paul   {
732813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_INTENSITY_FLOAT16,
733bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_INTENSITY_FLOAT16",
734813870fd9588de101f68728507cff726d7513695Brian Paul      GL_INTENSITY,
735813870fd9588de101f68728507cff726d7513695Brian Paul      GL_FLOAT,
736813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
737813870fd9588de101f68728507cff726d7513695Brian Paul      0, 16, 0, 0, 0,
738813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
739813870fd9588de101f68728507cff726d7513695Brian Paul   },
7400ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   {
7410ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      MESA_FORMAT_R_FLOAT32,
7420ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      "MESA_FORMAT_R_FLOAT32",
7430ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_RED,
7440ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_FLOAT,
7450ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      32, 0, 0, 0,
7460ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      0, 0, 0, 0, 0,
7470ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      1, 1, 4
7480ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   },
7490ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   {
7500ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      MESA_FORMAT_R_FLOAT16,
7510ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      "MESA_FORMAT_R_FLOAT16",
7520ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_RED,
7530ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_FLOAT,
7540ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      16, 0, 0, 0,
7550ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      0, 0, 0, 0, 0,
7560ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      1, 1, 2
7570ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   },
7580ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   {
7590ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      MESA_FORMAT_RG_FLOAT32,
7600ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      "MESA_FORMAT_RG_FLOAT32",
7610ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_RG,
7620ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_FLOAT,
7630ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      32, 32, 0, 0,
7640ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      0, 0, 0, 0, 0,
7650ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      1, 1, 8
7660ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   },
7670ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   {
7680ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      MESA_FORMAT_RG_FLOAT16,
7690ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      "MESA_FORMAT_RG_FLOAT16",
7700ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_RG,
7710ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      GL_FLOAT,
7720ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      16, 16, 0, 0,
7730ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      0, 0, 0, 0, 0,
7740ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák      1, 1, 4
7750ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   },
776abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
777abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   /* unnormalized signed int formats */
7787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   /* unnormalized unsigned int formats */
7797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
7807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_UINT8,
7817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_UINT8",
7827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
7837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
7847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 8,
7857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
7867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
7877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
7887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
7897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_UINT16,
7907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_UINT16",
7917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
7927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
7937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 16,
7947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
7957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
7967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
7977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
7987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_UINT32,
7997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_UINT32",
8007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
8017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 32,
8037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
8047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
8057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_INT8,
8087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_INT8",
8097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
8107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 8,
8127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
8137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
8147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_INT16,
8177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_INT16",
8187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
8197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 16,
8217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
8227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
8237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_ALPHA_INT32,
8267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_ALPHA_INT32",
8277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_ALPHA,
8287a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8297a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 32,
8307a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
8317a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
8327a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8337a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8347a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_UINT8,
8357a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_UINT8",
8367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 8, 0, 0, 0,
8407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
8417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_UINT16,
8447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_UINT16",
8457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 16, 0, 0, 0,
8497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
8507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_UINT32,
8537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_UINT32",
8547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 32, 0, 0, 0,
8587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
8597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_INT8,
8627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_INT8",
8637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 8, 0, 0, 0,
8677a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
8687a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8697a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_INT16,
8717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_INT16",
8727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 16, 0, 0, 0,
8767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
8777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_INTENSITY_INT32,
8807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_INTENSITY_INT32",
8817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INTENSITY,
8827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
8837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 32, 0, 0, 0,
8857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
8867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_UINT8,
8897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_UINT8",
8907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
8917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
8927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
8937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0, 0,
8947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
8957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
8967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
8977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_UINT16,
8987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_UINT16",
8997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0, 0,
9037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
9047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_UINT32,
9077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_UINT32",
9087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0, 0,
9127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
9137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_INT8,
9167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_INT8",
9177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0, 0,
9217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
9227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_INT16,
9257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_INT16",
9267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9287a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9297a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0, 0,
9307a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
9317a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9327a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9337a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_INT32,
9347a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_INT32",
9357a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE,
9367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0,
9387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0, 0,
9397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
9407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_UINT8,
9437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_UINT8",
9447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 8,
9477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0, 0,
9487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
9497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_UINT16,
9527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_UINT16",
9537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 16,
9567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0, 0,
9577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
9587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_UINT32,
9617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_UINT32",
9627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
9647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 32,
9657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0, 0,
9667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 8
9677a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9687a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9697a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_INT8,
9707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_INT8",
9717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 8,
9747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0, 0,
9757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
9767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_INT16,
9797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_INT16",
9807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 16,
9837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0, 0,
9847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
9857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_LUMINANCE_ALPHA_INT32,
9887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_LUMINANCE_ALPHA_INT32",
9897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_LUMINANCE_ALPHA,
9907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
9917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 32,
9927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0, 0,
9937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 8
9947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
9957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
9967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
9977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_INT8,
9987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_INT8",
9997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
10007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0,
10027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
10047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_INT8,
10077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_INT8",
10087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
10097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 8, 0, 0,
10117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
10137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_INT8,
10167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_INT8",
10177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
10187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 8, 8, 0,
10207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 3
10227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
1023abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
1024abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT8,
1025abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT8",
1026abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1027abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
1028abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      8, 8, 8, 8,
1029abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1030abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 4
1031abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1032abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
10337a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_INT16,
10347a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_INT16",
10357a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
10367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0,
10387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
10407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_INT16,
10437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_INT16",
10447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
10457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 16, 0, 0,
10477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
10497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_INT16,
10527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_INT16",
10537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
10547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 16, 16, 0,
10567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 6
10587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
1060abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT16,
1061abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT16",
1062abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1063abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
1064abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      16, 16, 16, 16,
1065abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1066abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 8
1067abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1068abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
10697a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_INT32,
10707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_INT32",
10717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
10727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0,
10747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
10767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_INT32,
10797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_INT32",
10807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
10817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 32, 0, 0,
10837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 8
10857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
10877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_INT32,
10887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_INT32",
10897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
10907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_INT,
10917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 32, 32, 0,
10927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
10937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 12
10947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
10957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
1096abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_INT32,
1097abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_INT32",
1098abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1099abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_INT,
1100abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      32, 32, 32, 32,
1101abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1102abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 16
1103abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
11047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_UINT8,
11067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_UINT8",
11077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
11087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 0, 0, 0,
11107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 1
11127a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11137a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11147a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_UINT8,
11157a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_UINT8",
11167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
11177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 8, 0, 0,
11197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
11217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_UINT8,
11247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_UINT8",
11257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
11267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      8, 8, 8, 0,
11287a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11297a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 3
11307a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
1131abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
1132abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT8,
1133abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT8",
1134abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1135abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
1136abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      8, 8, 8, 8,
1137abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1138abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 4
1139abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1140abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
11417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_UINT16,
11427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_UINT16",
11437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
11447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 0, 0, 0,
11467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 2
11487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_UINT16,
11517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_UINT16",
11527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
11537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 16, 0, 0,
11557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
11577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_UINT16,
11607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_UINT16",
11617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
11627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      16, 16, 16, 0,
11647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 6
11667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11677a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
1168abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT16,
1169abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT16",
1170abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1171abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
1172abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      16, 16, 16, 16,
1173abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1174abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 8
1175abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1176abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   {
11777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_R_UINT32,
11787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_R_UINT32",
11797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RED,
11807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 0, 0, 0,
11827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 4
11847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RG_UINT32,
11877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RG_UINT32",
11887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RG,
11897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 32, 0, 0,
11917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
11927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 8
11937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
11947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
11957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      MESA_FORMAT_RGB_UINT32,
11967a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      "MESA_FORMAT_RGB_UINT32",
11977a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_RGB,
11987a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      GL_UNSIGNED_INT,
11997a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      32, 32, 32, 0,
12007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      0, 0, 0, 0, 0,
12017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      1, 1, 12
12027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   },
12037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   {
1204abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      MESA_FORMAT_RGBA_UINT32,
1205abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      "MESA_FORMAT_RGBA_UINT32",
1206abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_RGBA,
1207abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      GL_UNSIGNED_INT,
1208abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      32, 32, 32, 32,
1209abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      0, 0, 0, 0, 0,
1210abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      1, 1, 16
1211abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   },
1212abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
1213abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
1214813870fd9588de101f68728507cff726d7513695Brian Paul   {
1215813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_DUDV8,
1216bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_DUDV8",
1217813870fd9588de101f68728507cff726d7513695Brian Paul      GL_DUDV_ATI,
1218813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
1219813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0,
1220813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
1221813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 2
1222813870fd9588de101f68728507cff726d7513695Brian Paul   },
122384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul
122484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   /* Signed 8 bits / channel */
122584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
122684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_R8,        /* Name */
122784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_R8",      /* StrName */
12280073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RED,                       /* BaseFormat */
122984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,         /* DataType */
123084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 0, 0, 0,                   /* Red/Green/Blue/AlphaBits */
123184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,                /* Lum/Int/Index/Depth/StencilBits */
123284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 1                       /* BlockWidth/Height,Bytes */
123384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
123484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
12350be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_RG88_REV,
12360be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_RG88_REV",
12370073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RG,
123884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
123984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 8, 0, 0,
124084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
124184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 2
124284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
124384407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
124484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_RGBX8888,
124584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_RGBX8888",
12460073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RGB,
124784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
124884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      8, 8, 8, 0,
124984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
125084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 4                       /* 4 bpp, but no alpha */
125184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
1252813870fd9588de101f68728507cff726d7513695Brian Paul   {
1253813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SIGNED_RGBA8888,
1254bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA8888",
1255813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
1256813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
1257813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
1258813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
1259813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
1260813870fd9588de101f68728507cff726d7513695Brian Paul   },
1261813870fd9588de101f68728507cff726d7513695Brian Paul   {
1262813870fd9588de101f68728507cff726d7513695Brian Paul      MESA_FORMAT_SIGNED_RGBA8888_REV,
1263bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA8888_REV",
1264813870fd9588de101f68728507cff726d7513695Brian Paul      GL_RGBA,
1265813870fd9588de101f68728507cff726d7513695Brian Paul      GL_SIGNED_NORMALIZED,
1266813870fd9588de101f68728507cff726d7513695Brian Paul      8, 8, 8, 8,
1267813870fd9588de101f68728507cff726d7513695Brian Paul      0, 0, 0, 0, 0,
1268813870fd9588de101f68728507cff726d7513695Brian Paul      1, 1, 4
1269813870fd9588de101f68728507cff726d7513695Brian Paul   },
127084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul
127184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   /* Signed 16 bits / channel */
127284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
12730be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_R16,
12740be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_R16",
12750073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RED,
127684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
127784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 0, 0, 0,
127884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
127984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 2
128084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
128184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
12820be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_GR1616,
12830be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_GR1616",
12840073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RG,
128584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
128684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 16, 0, 0,
128784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
128884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 4
128984407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
129084407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   {
129184407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      MESA_FORMAT_SIGNED_RGB_16,
129284407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      "MESA_FORMAT_SIGNED_RGB_16",
12930073f50cd47c48c706b4524364b9c0594804febfBrian Paul      GL_RGB,
129484407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      GL_SIGNED_NORMALIZED,
129584407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      16, 16, 16, 0,
129684407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      0, 0, 0, 0, 0,
129784407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul      1, 1, 6
129884407d7365e101c36a83fd0a58c58b0c0c57db14Brian Paul   },
1299c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul   {
1300c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      MESA_FORMAT_SIGNED_RGBA_16,
1301bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul      "MESA_FORMAT_SIGNED_RGBA_16",
1302c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      GL_RGBA,
1303c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      GL_SIGNED_NORMALIZED,
1304c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      16, 16, 16, 16,
1305c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      0, 0, 0, 0, 0,
1306c13b9a141d77845517bf7cab20cff6115c31e67dBrian Paul      1, 1, 8
130717e96718946486ef77927fcf3bb299d8bff32b98Brian Paul   },
130817e96718946486ef77927fcf3bb299d8bff32b98Brian Paul   {
130917e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      MESA_FORMAT_RGBA_16,
131017e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      "MESA_FORMAT_RGBA_16",
131117e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      GL_RGBA,
131217e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      GL_UNSIGNED_NORMALIZED,
131317e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      16, 16, 16, 16,
131417e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      0, 0, 0, 0, 0,
131517e96718946486ef77927fcf3bb299d8bff32b98Brian Paul      1, 1, 8
13168d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13178d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
13188d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_RED_RGTC1,
13198d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_RED_RGTC1",
13208d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RED,
13218d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_UNSIGNED_NORMALIZED,
13228d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 0, 0, 0,
13238d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
13248d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 8                     /* 8 bytes per 4x4 block */
13258d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13268d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
13278d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_SIGNED_RED_RGTC1,
13288d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_SIGNED_RED_RGTC1",
13298d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RED,
13308d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_SIGNED_NORMALIZED,
13318d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 0, 0, 0,
13328d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
13338d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 8                     /* 8 bytes per 4x4 block */
13348d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13358d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
13368d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_RG_RGTC2,
13378d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_RG_RGTC2",
13388d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RG,
13398d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_UNSIGNED_NORMALIZED,
13408d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 0, 0,
13418d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
13428d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 16                     /* 16 bytes per 4x4 block */
13438d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13448d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   {
13458d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     MESA_FORMAT_SIGNED_RG_RGTC2,
13468d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     "MESA_FORMAT_SIGNED_RG_RGTC2",
13478d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_RG,
13488d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     GL_SIGNED_NORMALIZED,
13498d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 0, 0,
13508d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     0, 0, 0, 0, 0,
13518d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie     4, 4, 16                     /* 16 bytes per 4x4 block */
13528d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   },
13537d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
13547d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_L_LATC1,
13557d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_L_LATC1",
13567d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE,
13577d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_UNSIGNED_NORMALIZED,
13587d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 0,
13597d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
13607d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 8                     /* 8 bytes per 4x4 block */
13617d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
13627d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
13637d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_SIGNED_L_LATC1,
13647d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_SIGNED_L_LATC1",
13657d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE,
13667d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_SIGNED_NORMALIZED,
13677d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 0,
13687d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
13697d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 8                     /* 8 bytes per 4x4 block */
13707d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
13717d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
13727d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_LA_LATC2,
13737d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_LA_LATC2",
13747d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE_ALPHA,
13757d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_UNSIGNED_NORMALIZED,
13767d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 4,
13777d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
13787d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 16                     /* 16 bytes per 4x4 block */
13797d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
13807d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   {
13817d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     MESA_FORMAT_SIGNED_LA_LATC2,
13827d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     "MESA_FORMAT_SIGNED_LA_LATC2",
13837d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_LUMINANCE_ALPHA,
13847d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     GL_SIGNED_NORMALIZED,
13857d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     0, 0, 0, 4,
13867d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 0, 0, 0, 0,
13877d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák     4, 4, 16                     /* 16 bytes per 4x4 block */
13887d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   },
13890be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák
1390d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   {
1391d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      MESA_FORMAT_ETC1_RGB8,
1392d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      "MESA_FORMAT_ETC1_RGB8",
1393d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      GL_RGB,
1394d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      GL_UNSIGNED_NORMALIZED,
1395d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      8, 8, 8, 0,
1396d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      0, 0, 0, 0, 0,
1397d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      4, 4, 8                     /* 8 bytes per 4x4 block */
1398d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   },
1399d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu
14000be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   /* Signed formats from EXT_texture_snorm that are not in GL3.1 */
14010be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14020be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_A8,
14030be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_A8",
14040be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_ALPHA,
14050be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14060be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 8,
14070be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0, 0,
14080be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
14090be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14100be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14110be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_L8,
14120be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_L8",
14130be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE,
14140be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14150be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
14160be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      8, 0, 0, 0, 0,
14170be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
14180be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14190be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14200be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_AL88,
14210be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_AL88",
14220be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE_ALPHA,
14230be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14240be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 8,
14250be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      8, 0, 0, 0, 0,
14260be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
14270be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14280be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14290be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_I8,
14300be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_I8",
14310be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_INTENSITY,
14320be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14330be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
14340be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 8, 0, 0, 0,
14350be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 1
14360be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14370be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14380be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_A16,
14390be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_A16",
14400be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_ALPHA,
14410be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14420be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 16,
14430be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0, 0,
14440be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
14450be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14460be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14470be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_L16,
14480be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_L16",
14490be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE,
14500be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14510be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
14520be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      16, 0, 0, 0, 0,
14530be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
14540be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14550be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14560be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_AL1616,
14570be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_AL1616",
14580be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_LUMINANCE_ALPHA,
14590be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14600be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 16,
14610be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      16, 0, 0, 0, 0,
14620be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 4
14630be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   },
14640be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   {
14650be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      MESA_FORMAT_SIGNED_I16,
14660be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      "MESA_FORMAT_SIGNED_I16",
14670be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_INTENSITY,
14680be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      GL_SIGNED_NORMALIZED,
14690be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 0, 0, 0,
14700be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      0, 16, 0, 0, 0,
14710be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák      1, 1, 2
14729d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák   },
14739d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák   {
14749d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      MESA_FORMAT_RGB9_E5_FLOAT,
14759d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      "MESA_FORMAT_RGB9_E5",
14769d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      GL_RGB,
14779d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      GL_FLOAT,
14789d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      9, 9, 9, 0,
14799d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      0, 0, 0, 0, 0,
14809d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      1, 1, 4
14819d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák   },
1482631d23daa91c569bf268a2191bd466df73a64263Marek Olšák   {
1483631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      MESA_FORMAT_R11_G11_B10_FLOAT,
1484631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      "MESA_FORMAT_R11_G11_B10_FLOAT",
1485631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      GL_RGB,
1486631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      GL_FLOAT,
1487631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      11, 11, 10, 0,
1488631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      0, 0, 0, 0, 0,
1489631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      1, 1, 4
1490631d23daa91c569bf268a2191bd466df73a64263Marek Olšák   },
14911165280cbd37dee1e499358633478ab869de21dfMarek Olšák   /* ARB_depth_buffer_float */
14921165280cbd37dee1e499358633478ab869de21dfMarek Olšák   {
14931165280cbd37dee1e499358633478ab869de21dfMarek Olšák      MESA_FORMAT_Z32_FLOAT,       /* Name */
14941165280cbd37dee1e499358633478ab869de21dfMarek Olšák      "MESA_FORMAT_Z32_FLOAT",     /* StrName */
14951165280cbd37dee1e499358633478ab869de21dfMarek Olšák      GL_DEPTH_COMPONENT,          /* BaseFormat */
14961165280cbd37dee1e499358633478ab869de21dfMarek Olšák      GL_FLOAT,                    /* DataType */
14971165280cbd37dee1e499358633478ab869de21dfMarek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
14981165280cbd37dee1e499358633478ab869de21dfMarek Olšák      0, 0, 0, 32, 0,              /* Lum/Int/Index/Depth/StencilBits */
14991165280cbd37dee1e499358633478ab869de21dfMarek Olšák      1, 1, 4                      /* BlockWidth/Height,Bytes */
15001165280cbd37dee1e499358633478ab869de21dfMarek Olšák   },
15011165280cbd37dee1e499358633478ab869de21dfMarek Olšák   {
15021165280cbd37dee1e499358633478ab869de21dfMarek Olšák      MESA_FORMAT_Z32_FLOAT_X24S8, /* Name */
15031165280cbd37dee1e499358633478ab869de21dfMarek Olšák      "MESA_FORMAT_Z32_FLOAT_X24S8", /* StrName */
15041165280cbd37dee1e499358633478ab869de21dfMarek Olšák      GL_DEPTH_STENCIL,            /* BaseFormat */
1505ed945b0bc73356ff8aa4f73616738e5926f73599Eric Anholt      /* DataType here is used to answer GL_TEXTURE_DEPTH_TYPE queries, and is
1506ed945b0bc73356ff8aa4f73616738e5926f73599Eric Anholt       * never used for stencil because stencil is always GL_UNSIGNED_INT.
1507ed945b0bc73356ff8aa4f73616738e5926f73599Eric Anholt       */
1508ed945b0bc73356ff8aa4f73616738e5926f73599Eric Anholt      GL_FLOAT,                    /* DataType */
15091165280cbd37dee1e499358633478ab869de21dfMarek Olšák      0, 0, 0, 0,                  /* Red/Green/Blue/AlphaBits */
15101165280cbd37dee1e499358633478ab869de21dfMarek Olšák      0, 0, 0, 32, 8,              /* Lum/Int/Index/Depth/StencilBits */
15111165280cbd37dee1e499358633478ab869de21dfMarek Olšák      1, 1, 8                      /* BlockWidth/Height,Bytes */
15121165280cbd37dee1e499358633478ab869de21dfMarek Olšák   },
1513f449be660e70aac2aefd2ce84581e137de25520bDave Airlie   {
1514f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      MESA_FORMAT_ARGB2101010_UINT,
1515f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      "MESA_FORMAT_ARGB2101010_UINT",
1516f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      GL_RGBA,
1517f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      GL_UNSIGNED_INT,
1518f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      10, 10, 10, 2,
1519f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      0, 0, 0, 0, 0,
1520f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      1, 1, 4
1521f449be660e70aac2aefd2ce84581e137de25520bDave Airlie   },
1522813870fd9588de101f68728507cff726d7513695Brian Paul};
1523813870fd9588de101f68728507cff726d7513695Brian Paul
1524813870fd9588de101f68728507cff726d7513695Brian Paul
1525813870fd9588de101f68728507cff726d7513695Brian Paul
1526813870fd9588de101f68728507cff726d7513695Brian Paulstatic const struct gl_format_info *
1527813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_info(gl_format format)
1528813870fd9588de101f68728507cff726d7513695Brian Paul{
1529813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = &format_info[format];
1530813870fd9588de101f68728507cff726d7513695Brian Paul   assert(info->Name == format);
1531813870fd9588de101f68728507cff726d7513695Brian Paul   return info;
1532813870fd9588de101f68728507cff726d7513695Brian Paul}
1533813870fd9588de101f68728507cff726d7513695Brian Paul
1534813870fd9588de101f68728507cff726d7513695Brian Paul
1535bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul/** Return string name of format (for debugging) */
1536bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paulconst char *
1537bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul_mesa_get_format_name(gl_format format)
1538bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul{
1539bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1540bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul   return info->StrName;
1541bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul}
1542bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1543bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1544bee6794eb126bc8af87726a2456d0ebc36eb721dBrian Paul
1545eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1546eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bytes needed to store a block of pixels in the given format.
1547eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Normally, a block is 1x1 (a single pixel).  But for compressed formats
1548eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * a block may be 4x4 or 8x4, etc.
1549e8b1c6d6f55f5be3bef25084fdd8b6127517e137Adam Jackson *
1550e8b1c6d6f55f5be3bef25084fdd8b6127517e137Adam Jackson * Note: not GLuint, so as not to coerce math to unsigned. cf. fdo #37351
1551eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
1552e8b1c6d6f55f5be3bef25084fdd8b6127517e137Adam JacksonGLint
1553813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_bytes(gl_format format)
1554813870fd9588de101f68728507cff726d7513695Brian Paul{
1555813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1556813870fd9588de101f68728507cff726d7513695Brian Paul   ASSERT(info->BytesPerBlock);
1557db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul   ASSERT(info->BytesPerBlock <= MAX_PIXEL_BYTES ||
1558db247dd7b37e22bf9545d8cb8360e06d68e50912Brian Paul          _mesa_is_format_compressed(format));
1559813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BytesPerBlock;
1560813870fd9588de101f68728507cff726d7513695Brian Paul}
1561813870fd9588de101f68728507cff726d7513695Brian Paul
1562813870fd9588de101f68728507cff726d7513695Brian Paul
1563eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1564eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return bits per component for the given format.
1565eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param format  one of MESA_FORMAT_x
1566eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * \param pname  the component, such as GL_RED_BITS, GL_TEXTURE_BLUE_BITS, etc.
1567eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
15685978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLint
15695978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_bits(gl_format format, GLenum pname)
15705978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{
15715978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
15725978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
15735978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   switch (pname) {
1574edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RED_BITS:
15755978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_RED_SIZE:
1576edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_RED_SIZE_EXT:
1577edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE:
15785978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->RedBits;
1579edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_GREEN_BITS:
15805978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_GREEN_SIZE:
1581edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_GREEN_SIZE_EXT:
1582edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:
15835978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->GreenBits;
1584edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_BLUE_BITS:
15855978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_BLUE_SIZE:
1586edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_BLUE_SIZE_EXT:
1587edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:
15885978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->BlueBits;
1589edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_ALPHA_BITS:
15905978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_ALPHA_SIZE:
1591edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_ALPHA_SIZE_EXT:
1592edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:
15935978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->AlphaBits;
15945978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_INTENSITY_SIZE:
15955978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->IntensityBits;
15965978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_LUMINANCE_SIZE:
15975978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->LuminanceBits;
1598edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_INDEX_BITS:
15995978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->IndexBits;
1600edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_DEPTH_BITS:
16015978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_DEPTH_SIZE_ARB:
1602edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_DEPTH_SIZE_EXT:
1603edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:
16045978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->DepthBits;
1605edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_STENCIL_BITS:
16065978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   case GL_TEXTURE_STENCIL_SIZE_EXT:
1607edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_RENDERBUFFER_STENCIL_SIZE_EXT:
1608edfd2f7c4f942ed0c1aa1238ab0684ee7dd889a2Brian Paul   case GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:
16095978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return info->StencilBits;
16105978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   default:
16115978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      _mesa_problem(NULL, "bad pname in _mesa_get_format_bits()");
16125978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul      return 0;
16135978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   }
16145978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul}
16155978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
16165978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
1617488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian PaulGLuint
1618488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul_mesa_get_format_max_bits(gl_format format)
1619488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul{
1620488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1621488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   GLuint max = MAX2(info->RedBits, info->GreenBits);
1622488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->BlueBits);
1623488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->AlphaBits);
1624488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->LuminanceBits);
1625488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->IntensityBits);
1626488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->DepthBits);
1627488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   max = MAX2(max, info->StencilBits);
1628488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul   return max;
1629488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul}
1630488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul
1631488d7fc67d36bc0e5247f5d011e8ad4c2dceb5a7Brian Paul
1632eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
1633eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * Return the data type (or more specifically, the data representation)
1634eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * for the given format.
1635eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul * The return value will be one of:
1636eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_UNSIGNED_NORMALIZED = unsigned int representing [0,1]
1637eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_SIGNED_NORMALIZED = signed int representing [-1, 1]
1638eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_UNSIGNED_INT = an ordinary unsigned integer
1639f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul *    GL_INT = an ordinary signed integer
1640eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul *    GL_FLOAT = an ordinary float
1641eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
16425978cbdf7728df7952c9c04165ece23394a5fb95Brian PaulGLenum
16435978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul_mesa_get_format_datatype(gl_format format)
16445978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul{
16455978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
16465978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul   return info->DataType;
16475978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul}
16485978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
16495978cbdf7728df7952c9c04165ece23394a5fb95Brian Paul
1650eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/**
165155d232a81566cf7ab8855c42e2ef1a280276a04cIan Romanick * Return the basic format for the given type.  The result will be one of
165255d232a81566cf7ab8855c42e2ef1a280276a04cIan Romanick * GL_RGB, GL_RGBA, GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_INTENSITY,
165355d232a81566cf7ab8855c42e2ef1a280276a04cIan Romanick * GL_YCBCR_MESA, GL_DEPTH_COMPONENT, GL_STENCIL_INDEX, GL_DEPTH_STENCIL.
1654eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul */
1655813870fd9588de101f68728507cff726d7513695Brian PaulGLenum
1656813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_get_format_base_format(gl_format format)
1657813870fd9588de101f68728507cff726d7513695Brian Paul{
1658813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1659813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BaseFormat;
1660813870fd9588de101f68728507cff726d7513695Brian Paul}
1661813870fd9588de101f68728507cff726d7513695Brian Paul
1662813870fd9588de101f68728507cff726d7513695Brian Paul
16637b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul/**
16647b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * Return the block size (in pixels) for the given format.  Normally
16657b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * the block size is 1x1.  But compressed formats will have block sizes
16667b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * of 4x4 or 8x4 pixels, etc.
16677b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bw  returns block width in pixels
16687b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul * \param bh  returns block height in pixels
16697b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul */
16707b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paulvoid
16717b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul_mesa_get_format_block_size(gl_format format, GLuint *bw, GLuint *bh)
16727b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul{
16737b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
16747b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   *bw = info->BlockWidth;
16757b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul   *bh = info->BlockHeight;
16767b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul}
16777b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul
16787b16c43e436715bef9118fdb28ca8a9ad91b1e66Brian Paul
1679eb732b1bbb4e4bdd018ee9a1653a62fd8dce2d55Brian Paul/** Is the given format a compressed format? */
1680813870fd9588de101f68728507cff726d7513695Brian PaulGLboolean
1681813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_is_format_compressed(gl_format format)
1682813870fd9588de101f68728507cff726d7513695Brian Paul{
1683813870fd9588de101f68728507cff726d7513695Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1684813870fd9588de101f68728507cff726d7513695Brian Paul   return info->BlockWidth > 1 || info->BlockHeight > 1;
1685813870fd9588de101f68728507cff726d7513695Brian Paul}
1686813870fd9588de101f68728507cff726d7513695Brian Paul
1687813870fd9588de101f68728507cff726d7513695Brian Paul
1688813870fd9588de101f68728507cff726d7513695Brian Paul/**
1689e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler * Determine if the given format represents a packed depth/stencil buffer.
1690e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler */
1691e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick BowlerGLboolean
1692e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler_mesa_is_format_packed_depth_stencil(gl_format format)
1693e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler{
1694f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler   const struct gl_format_info *info = _mesa_get_format_info(format);
1695e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1696f57df7f2130dfe20a6f7e75cfc1f5d4e1717d098Nick Bowler   return info->BaseFormat == GL_DEPTH_STENCIL;
1697e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler}
1698e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1699e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler
1700e71a9042cb5e046072d2ea8fbd22a01de625bf8aNick Bowler/**
1701ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul * Is the given format a signed/unsigned integer color format?
1702f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul */
1703f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian PaulGLboolean
1704412b9608838b872bc294569b3ee913343a7e66f6Brian Paul_mesa_is_format_integer_color(gl_format format)
1705f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul{
1706f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1707ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul   return (info->DataType == GL_INT || info->DataType == GL_UNSIGNED_INT) &&
1708ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_DEPTH_COMPONENT &&
1709ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_DEPTH_STENCIL &&
1710ab50148fdafeb6496b4ab684e5b9a2355ccf542cBrian Paul      info->BaseFormat != GL_STENCIL_INDEX;
1711f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul}
1712f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul
1713f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul
1714f5ed39e7e6dd31ea60477475d97d8a5ce6946cccBrian Paul/**
1715f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * Return color encoding for given format.
1716f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul * \return GL_LINEAR or GL_SRGB
1717f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul */
1718f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian PaulGLenum
1719f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul_mesa_get_format_color_encoding(gl_format format)
1720f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul{
1721f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   /* XXX this info should be encoded in gl_format_info */
1722f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   switch (format) {
1723f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGB8:
1724f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA8:
1725f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SARGB8:
1726f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SL8:
1727f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SLA8:
1728f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGB_DXT1:
1729f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT1:
1730f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT3:
1731f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   case MESA_FORMAT_SRGBA_DXT5:
1732f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul      return GL_SRGB;
1733f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   default:
1734f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul      return GL_LINEAR;
1735f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul   }
1736f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul}
1737f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul
1738aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul
1739aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul/**
1740aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For an sRGB format, return the corresponding linear color space format.
1741aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul * For non-sRGB formats, return the format as-is.
1742aad7219f80e21739c521d58a6e32a14114ac0bb0Brian Paul */
1743edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airliegl_format
1744edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie_mesa_get_srgb_format_linear(gl_format format)
1745edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie{
1746edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   switch (format) {
1747edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGB8:
1748edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGB888;
1749edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1750edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA8:
1751edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA8888;
1752edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1753edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SARGB8:
1754edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_ARGB8888;
1755edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1756edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SL8:
1757edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_L8;
1758edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1759edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SLA8:
1760edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_AL88;
1761edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1762edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGB_DXT1:
1763edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGB_DXT1;
1764edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1765edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT1:
1766edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT1;
1767edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1768edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT3:
1769edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT3;
1770edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1771edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   case MESA_FORMAT_SRGBA_DXT5:
1772edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      format = MESA_FORMAT_RGBA_DXT5;
1773edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1774edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   default:
1775edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie      break;
1776edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   }
1777edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie   return format;
1778edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie}
1779edc2dd8e4788e556d445c9f59974ed95b33c2bbcDave Airlie
1780f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul
1781f7b5e616e07b5caa27e91bb5733a8a849d5963f6Brian Paul/**
17829a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul * If the given format is a compressed format, return a corresponding
17839a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul * uncompressed format.
17849a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul */
17859a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paulgl_format
17869a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul_mesa_get_uncompressed_format(gl_format format)
17879a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul{
17889a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   switch (format) {
17899a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGB_FXT1:
17909a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGB888;
17919a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGBA_FXT1:
17929a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGBA8888;
17939a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGB_DXT1:
17949a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SRGB_DXT1:
17959a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGB888;
17969a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGBA_DXT1:
17979a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SRGBA_DXT1:
17989a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGBA8888;
17999a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGBA_DXT3:
18009a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SRGBA_DXT3:
18019a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGBA8888;
18029a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RGBA_DXT5:
18039a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SRGBA_DXT5:
18049a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_RGBA8888;
18059a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RED_RGTC1:
18069a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_R8;
18079a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SIGNED_RED_RGTC1:
18089a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_SIGNED_R8;
18099a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_RG_RGTC2:
18100a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul      return MESA_FORMAT_GR88;
18119a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SIGNED_RG_RGTC2:
18129a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_SIGNED_RG88_REV;
18139a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_L_LATC1:
18149a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_L8;
18159a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SIGNED_L_LATC1:
18169a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_SIGNED_L8;
18179a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_LA_LATC2:
18189a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_AL88;
18199a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   case MESA_FORMAT_SIGNED_LA_LATC2:
18209a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return MESA_FORMAT_SIGNED_AL88;
1821d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   case MESA_FORMAT_ETC1_RGB8:
1822d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      return MESA_FORMAT_RGB888;
18239a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   default:
18249a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul#ifdef DEBUG
18259a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      assert(!_mesa_is_format_compressed(format));
18269a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul#endif
18279a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul      return format;
18289a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   }
18299a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul}
18309a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul
18319a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul
18329a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian PaulGLuint
18339a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul_mesa_format_num_components(gl_format format)
18349a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul{
18359a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
18369a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul   return ((info->RedBits > 0) +
18379a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->GreenBits > 0) +
18389a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->BlueBits > 0) +
18399a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->AlphaBits > 0) +
18409a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->LuminanceBits > 0) +
18419a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->IntensityBits > 0) +
18429a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->DepthBits > 0) +
18439a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul           (info->StencilBits > 0));
18449a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul}
18459a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul
18469a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul
18479a5b2899e058f3ec31a4eba5575eaa3fcfe1e3f5Brian Paul/**
18481c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * Return number of bytes needed to store an image of the given size
18491c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul * in the given format.
18501c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul */
18511c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian PaulGLuint
18521c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul_mesa_format_image_size(gl_format format, GLsizei width,
18531c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul                        GLsizei height, GLsizei depth)
18541c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul{
18551c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1856040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   /* Strictly speaking, a conditional isn't needed here */
18571c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
18587bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul      /* compressed format (2D only for now) */
18591c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint bw = info->BlockWidth, bh = info->BlockHeight;
18601c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint wblocks = (width + bw - 1) / bw;
18611c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint hblocks = (height + bh - 1) / bh;
1862040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint sz = wblocks * hblocks * info->BytesPerBlock;
18637bfbd88d2cc4c7e7c1c2fe02b0d223f4a3ea8db2Brian Paul      assert(depth == 1);
18641c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      return sz;
18651c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   }
18661c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   else {
18671c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      /* non-compressed */
18681c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      const GLuint sz = width * height * depth * info->BytesPerBlock;
18691c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul      return sz;
18701c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul   }
18711c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul}
18721c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
18731c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
187474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul/**
187574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * Same as _mesa_format_image_size() but returns a 64-bit value to
187674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul * accomodate very large textures.
187774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul */
187874c324fdbaebb7accaee668f2bc54af4699d0025Brian Pauluint64_t
187974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul_mesa_format_image_size64(gl_format format, GLsizei width,
188074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                          GLsizei height, GLsizei depth)
188174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul{
188274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
188374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   /* Strictly speaking, a conditional isn't needed here */
188474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
188574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      /* compressed format (2D only for now) */
188674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t bw = info->BlockWidth, bh = info->BlockHeight;
188774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t wblocks = (width + bw - 1) / bw;
188874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t hblocks = (height + bh - 1) / bh;
188974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t sz = wblocks * hblocks * info->BytesPerBlock;
189074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      assert(depth == 1);
189174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      return sz;
189274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   }
189374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   else {
189474c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      /* non-compressed */
189574c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      const uint64_t sz = ((uint64_t) width *
189674c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           (uint64_t) height *
189774c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           (uint64_t) depth *
189874c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul                           info->BytesPerBlock);
189974c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul      return sz;
190074c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul   }
190174c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul}
190274c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul
190374c324fdbaebb7accaee668f2bc54af4699d0025Brian Paul
19041c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
1905040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian PaulGLint
1906040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul_mesa_format_row_stride(gl_format format, GLsizei width)
1907040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul{
1908040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   const struct gl_format_info *info = _mesa_get_format_info(format);
1909040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   /* Strictly speaking, a conditional isn't needed here */
1910040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   if (info->BlockWidth > 1 || info->BlockHeight > 1) {
1911040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      /* compressed format */
1912040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint bw = info->BlockWidth;
1913040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLuint wblocks = (width + bw - 1) / bw;
1914040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLint stride = wblocks * info->BytesPerBlock;
1915040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      return stride;
1916040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   }
1917040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   else {
1918040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      const GLint stride = width * info->BytesPerBlock;
1919040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul      return stride;
1920040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul   }
1921040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul}
1922040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul
1923040fd7ed44c21a1faaa6475888e9365e8f0de42bBrian Paul
1924d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul/**
1925d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * Debug/test: check that all formats are handled in the
1926d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * _mesa_format_to_type_and_comps() function.  When new pixel formats
1927d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * are added to Mesa, that function needs to be updated.
1928d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul * This is a no-op after the first call.
1929d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul */
1930d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulstatic void
1931d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paulcheck_format_to_type_and_comps(void)
1932d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul{
1933d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   gl_format f;
1934d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
1935d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   for (f = MESA_FORMAT_NONE + 1; f < MESA_FORMAT_COUNT; f++) {
1936d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      GLenum datatype = 0;
1937d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      GLuint comps = 0;
1938d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      /* This function will emit a problem/warning if the format is
1939d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul       * not handled.
1940d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul       */
1941d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul      _mesa_format_to_type_and_comps(f, &datatype, &comps);
1942d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   }
1943d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul}
1944d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
19451c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul
19461c7ec97ec47f294dcfc0c6a87ee26bb3565f95d4Brian Paul/**
1947813870fd9588de101f68728507cff726d7513695Brian Paul * Do sanity checking of the format info table.
1948813870fd9588de101f68728507cff726d7513695Brian Paul */
1949813870fd9588de101f68728507cff726d7513695Brian Paulvoid
1950813870fd9588de101f68728507cff726d7513695Brian Paul_mesa_test_formats(void)
1951813870fd9588de101f68728507cff726d7513695Brian Paul{
1952813870fd9588de101f68728507cff726d7513695Brian Paul   GLuint i;
1953813870fd9588de101f68728507cff726d7513695Brian Paul
19546bf5daf331f13ec9503615a2578247e72b7d2cbbBrian Paul   STATIC_ASSERT(Elements(format_info) == MESA_FORMAT_COUNT);
1955813870fd9588de101f68728507cff726d7513695Brian Paul
1956813870fd9588de101f68728507cff726d7513695Brian Paul   for (i = 0; i < MESA_FORMAT_COUNT; i++) {
1957813870fd9588de101f68728507cff726d7513695Brian Paul      const struct gl_format_info *info = _mesa_get_format_info(i);
1958813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info);
1959813870fd9588de101f68728507cff726d7513695Brian Paul
1960813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info->Name == i);
1961813870fd9588de101f68728507cff726d7513695Brian Paul
1962e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul      if (info->Name == MESA_FORMAT_NONE)
1963e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul         continue;
1964e8eed5003b01fe8a4349711382411ac80b1c0aa3Brian Paul
1965813870fd9588de101f68728507cff726d7513695Brian Paul      if (info->BlockWidth == 1 && info->BlockHeight == 1) {
1966813870fd9588de101f68728507cff726d7513695Brian Paul         if (info->RedBits > 0) {
1967813870fd9588de101f68728507cff726d7513695Brian Paul            GLuint t = info->RedBits + info->GreenBits
1968813870fd9588de101f68728507cff726d7513695Brian Paul               + info->BlueBits + info->AlphaBits;
19690073f50cd47c48c706b4524364b9c0594804febfBrian Paul            assert(t / 8 <= info->BytesPerBlock);
19706e0584932b3e556a0aecd2ca36f5ae41dc40a919Vinson Lee            (void) t;
1971813870fd9588de101f68728507cff726d7513695Brian Paul         }
1972813870fd9588de101f68728507cff726d7513695Brian Paul      }
1973813870fd9588de101f68728507cff726d7513695Brian Paul
1974813870fd9588de101f68728507cff726d7513695Brian Paul      assert(info->DataType == GL_UNSIGNED_NORMALIZED ||
1975813870fd9588de101f68728507cff726d7513695Brian Paul             info->DataType == GL_SIGNED_NORMALIZED ||
1976813870fd9588de101f68728507cff726d7513695Brian Paul             info->DataType == GL_UNSIGNED_INT ||
19770073f50cd47c48c706b4524364b9c0594804febfBrian Paul             info->DataType == GL_INT ||
1978e134eaa2c5619b47e944e33d053ee23c61da7aa9Marek Olšák             info->DataType == GL_FLOAT ||
1979ceb04b32baf13bbd62cf80496e5751612287ef15Marek Olšák             /* Z32_FLOAT_X24S8 has DataType of GL_NONE */
1980e134eaa2c5619b47e944e33d053ee23c61da7aa9Marek Olšák             info->DataType == GL_NONE);
1981813870fd9588de101f68728507cff726d7513695Brian Paul
1982813870fd9588de101f68728507cff726d7513695Brian Paul      if (info->BaseFormat == GL_RGB) {
1983813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits > 0);
1984813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits > 0);
1985813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits > 0);
1986813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
1987813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
1988813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
1989813870fd9588de101f68728507cff726d7513695Brian Paul      }
1990813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_RGBA) {
1991813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits > 0);
1992813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits > 0);
1993813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits > 0);
1994813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits > 0);
1995813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
1996813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
1997813870fd9588de101f68728507cff726d7513695Brian Paul      }
19985d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      else if (info->BaseFormat == GL_RG) {
19995d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->RedBits > 0);
20005d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->GreenBits > 0);
20015d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->BlueBits == 0);
20025d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->AlphaBits == 0);
20035d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->LuminanceBits == 0);
20045d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->IntensityBits == 0);
20055d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      }
20065d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      else if (info->BaseFormat == GL_RED) {
20075d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->RedBits > 0);
20085d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->GreenBits == 0);
20095d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->BlueBits == 0);
20105d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->AlphaBits == 0);
20115d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->LuminanceBits == 0);
20125d1387b2da3626326410804026f8b92f1a121fdcIan Romanick         assert(info->IntensityBits == 0);
20135d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      }
2014813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_LUMINANCE) {
2015813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits == 0);
2016813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits == 0);
2017813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits == 0);
2018813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
2019813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits > 0);
2020813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits == 0);
2021813870fd9588de101f68728507cff726d7513695Brian Paul      }
2022813870fd9588de101f68728507cff726d7513695Brian Paul      else if (info->BaseFormat == GL_INTENSITY) {
2023813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->RedBits == 0);
2024813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->GreenBits == 0);
2025813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->BlueBits == 0);
2026813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->AlphaBits == 0);
2027813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->LuminanceBits == 0);
2028813870fd9588de101f68728507cff726d7513695Brian Paul         assert(info->IntensityBits > 0);
2029813870fd9588de101f68728507cff726d7513695Brian Paul      }
2030813870fd9588de101f68728507cff726d7513695Brian Paul   }
2031d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul
2032d92e56460e0b6b6057097fc12c7f947528e58c13Brian Paul   check_format_to_type_and_comps();
2033813870fd9588de101f68728507cff726d7513695Brian Paul}
2034813870fd9588de101f68728507cff726d7513695Brian Paul
2035813870fd9588de101f68728507cff726d7513695Brian Paul
2036019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2037813870fd9588de101f68728507cff726d7513695Brian Paul/**
2038019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Return datatype and number of components per texel for the given gl_format.
2039019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul * Only used for mipmap generation code.
2040813870fd9588de101f68728507cff726d7513695Brian Paul */
2041813870fd9588de101f68728507cff726d7513695Brian Paulvoid
2042019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul_mesa_format_to_type_and_comps(gl_format format,
2043019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul                               GLenum *datatype, GLuint *comps)
2044813870fd9588de101f68728507cff726d7513695Brian Paul{
2045019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   switch (format) {
2046019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA8888:
2047019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA8888_REV:
2048019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB8888:
2049019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB8888_REV:
2050d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   case MESA_FORMAT_RGBX8888:
2051d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   case MESA_FORMAT_RGBX8888_REV:
205274d61d03b54d72217d463c248468cdcd09320efcBrian Paul   case MESA_FORMAT_XRGB8888:
205379c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_XRGB8888_REV:
2054019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2055019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2056019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2057019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB888:
2058019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_BGR888:
2059019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2060019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2061019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2062019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB565:
2063019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB565_REV:
2064019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_5_6_5;
2065019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2066019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2067019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2068019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB4444:
2069019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB4444_REV:
2070019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_4_4_4_4;
2071019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2072019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2073019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2074019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB1555:
2075019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ARGB1555_REV:
2076019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT_1_5_5_5_REV;
2077019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2078019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2079019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2080621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák   case MESA_FORMAT_ARGB2101010:
2081621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      *datatype = GL_UNSIGNED_INT_2_10_10_10_REV;
2082621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      *comps = 4;
2083621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák      return;
2084621e5254ef6714520f106bd3707fe6ddc279aa0cMarek Olšák
208579c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_RGBA5551:
208679c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_UNSIGNED_SHORT_5_5_5_1;
208779c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 4;
208879c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
208979c65410c132c22b67b7635cee740dea9a736f80Brian Paul
20904d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák   case MESA_FORMAT_AL44:
20914d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      *datatype = MESA_UNSIGNED_BYTE_4_4;
20924d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      *comps = 2;
20934d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák      return;
20944d6994e40ebccf9428fc757d845e25c0e0c12cefMarek Olšák
2095019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_AL88:
2096019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_AL88_REV:
20970a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul   case MESA_FORMAT_GR88:
2098b4aecc4e1861e60e40e14868719219084967e46dBrian Paul   case MESA_FORMAT_RG88:
2099019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2100019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
2101019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2102eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick
2103eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   case MESA_FORMAT_AL1616:
2104eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick   case MESA_FORMAT_AL1616_REV:
21055d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_RG1616:
21065d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_RG1616_REV:
2107eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      *datatype = GL_UNSIGNED_SHORT;
2108eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      *comps = 2;
2109eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick      return;
2110eb437fabe017611e1f855fffa45f59cd38709be8Ian Romanick
21115d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_R16:
2112eb31837a0d4fa4fe115bb288ddb37cbedea954aeMarek Olšák   case MESA_FORMAT_A16:
2113bb5ace68ce9e8bd171a39162ed6bd93632bd6619Marek Olšák   case MESA_FORMAT_L16:
2114fd8aa7ac71699facf9839e2ae56b5e37579c6bccMarek Olšák   case MESA_FORMAT_I16:
21155d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      *datatype = GL_UNSIGNED_SHORT;
21165d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      *comps = 1;
21175d1387b2da3626326410804026f8b92f1a121fdcIan Romanick      return;
21185d1387b2da3626326410804026f8b92f1a121fdcIan Romanick
2119019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB332:
2120019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE_3_3_2;
2121019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2122019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2123019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2124019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_A8:
2125019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_L8:
2126019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_I8:
21275d1387b2da3626326410804026f8b92f1a121fdcIan Romanick   case MESA_FORMAT_R8:
212879c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_S8:
2129813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_BYTE;
2130813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 1;
2131019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2132019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2133019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_YCBCR:
2134019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_YCBCR_REV:
2135019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_SHORT;
2136813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 2;
2137019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2138019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2139019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z24_S8:
214023c6eb035ba63d39652a10107f323d47b86b90f1Brian Paul      *datatype = GL_UNSIGNED_INT_24_8_MESA;
214123c6eb035ba63d39652a10107f323d47b86b90f1Brian Paul      *comps = 2;
2142019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2143019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2144019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_S8_Z24:
214523c6eb035ba63d39652a10107f323d47b86b90f1Brian Paul      *datatype = GL_UNSIGNED_INT_8_24_REV_MESA;
214623c6eb035ba63d39652a10107f323d47b86b90f1Brian Paul      *comps = 2;
2147019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2148019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2149019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z16:
2150813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_SHORT;
2151019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2152019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2153019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2154e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul   case MESA_FORMAT_X8_Z24:
2155e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      *datatype = GL_UNSIGNED_INT;
2156e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      *comps = 1;
2157e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul      return;
2158e4c700dbbf2a802f32bf62256c801105998c3729Brian Paul
2159c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca   case MESA_FORMAT_Z24_X8:
2160c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      *datatype = GL_UNSIGNED_INT;
2161c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      *comps = 1;
2162c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca      return;
2163c6164ff155189007c02aabb31549f5f4dc767d1bJosé Fonseca
2164019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_Z32:
2165019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_INT;
2166019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2167019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2168019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
21691165280cbd37dee1e499358633478ab869de21dfMarek Olšák   case MESA_FORMAT_Z32_FLOAT:
21701165280cbd37dee1e499358633478ab869de21dfMarek Olšák      *datatype = GL_FLOAT;
21711165280cbd37dee1e499358633478ab869de21dfMarek Olšák      *comps = 1;
21721165280cbd37dee1e499358633478ab869de21dfMarek Olšák      return;
21731165280cbd37dee1e499358633478ab869de21dfMarek Olšák
21741165280cbd37dee1e499358633478ab869de21dfMarek Olšák   case MESA_FORMAT_Z32_FLOAT_X24S8:
21751165280cbd37dee1e499358633478ab869de21dfMarek Olšák      *datatype = GL_FLOAT_32_UNSIGNED_INT_24_8_REV;
21761165280cbd37dee1e499358633478ab869de21dfMarek Olšák      *comps = 1;
21771165280cbd37dee1e499358633478ab869de21dfMarek Olšák      return;
21781165280cbd37dee1e499358633478ab869de21dfMarek Olšák
2179019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_DUDV8:
2180019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_BYTE;
2181813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 2;
2182019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2183019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
218479c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_SIGNED_R8:
21850be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_A8:
21860be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_L8:
21870be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_I8:
218879c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_BYTE;
218979c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 1;
219079c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
21910be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_RG88_REV:
21920be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_AL88:
219379c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_BYTE;
219479c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 2;
219579c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
2196019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SIGNED_RGBA8888:
2197019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SIGNED_RGBA8888_REV:
219879c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_SIGNED_RGBX8888:
2199813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_BYTE;
2200019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2201019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2202880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul
220379c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_RGBA_16:
220479c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *datatype = GL_UNSIGNED_SHORT;
220579c65410c132c22b67b7635cee740dea9a736f80Brian Paul      *comps = 4;
220679c65410c132c22b67b7635cee740dea9a736f80Brian Paul      return;
220779c65410c132c22b67b7635cee740dea9a736f80Brian Paul
22080be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_R16:
22090be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_A16:
22100be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_L16:
22110be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_I16:
2212880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
2213880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 1;
2214880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
22150be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_GR1616:
22160be369975fdfa79bcb702d0c13aa0a221055f61bMarek Olšák   case MESA_FORMAT_SIGNED_AL1616:
2217880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
2218880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 2;
2219880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
2220880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul   case MESA_FORMAT_SIGNED_RGB_16:
2221880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *datatype = GL_SHORT;
2222880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      *comps = 3;
2223880e04ba74603eda3480006f21bc8c2b24ac2f8cBrian Paul      return;
2224c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul   case MESA_FORMAT_SIGNED_RGBA_16:
2225c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      *datatype = GL_SHORT;
2226c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      *comps = 4;
2227c5b725489243e6a94ca5e31306cdfa93619bd200Brian Paul      return;
2228019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2229019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB
2230019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGB8:
2231019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2232019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2233019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2234019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA8:
2235019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SARGB8:
2236019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2237019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2238019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2239019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SL8:
2240019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2241813870fd9588de101f68728507cff726d7513695Brian Paul      *comps = 1;
2242019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2243019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SLA8:
2244019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_UNSIGNED_BYTE;
2245019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
2246019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2247019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
2248019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2249019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_fxt1
2250019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FXT1:
2251019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FXT1:
2252019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
2253019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_texture_s3tc
2254019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_DXT1:
2255019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT1:
2256019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT3:
2257019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_DXT5:
2258019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#if FEATURE_EXT_texture_sRGB
2259019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGB_DXT1:
2260019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT1:
2261019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT3:
2262019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_SRGBA_DXT5:
2263019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul#endif
226469c78bf2c21c239d6064847dd0628f3526d68f9bIan Romanick#endif
22658d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_RED_RGTC1:
22668d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_SIGNED_RED_RGTC1:
22678d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_RG_RGTC2:
22688d47c919859e9cd90cfc04eb220ac8a5aa87048eDave Airlie   case MESA_FORMAT_SIGNED_RG_RGTC2:
22697d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_L_LATC1:
22707d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_SIGNED_L_LATC1:
22717d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_LA_LATC2:
22727d16e2c0cd70dc5a23b746dbc8e44c58366b5353Marek Olšák   case MESA_FORMAT_SIGNED_LA_LATC2:
2273d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   case MESA_FORMAT_ETC1_RGB8:
2274019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      /* XXX generate error instead? */
2275813870fd9588de101f68728507cff726d7513695Brian Paul      *datatype = GL_UNSIGNED_BYTE;
2276019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 0;
2277019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2278019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
2279019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FLOAT32:
2280019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
2281019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2282019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2283019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGBA_FLOAT16:
2284019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
2285019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 4;
2286019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2287019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FLOAT32:
2288019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
2289019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2290019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2291019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_RGB_FLOAT16:
2292019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
2293019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 3;
2294019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2295019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
22960ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   case MESA_FORMAT_RG_FLOAT32:
2297019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
2298019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
2299019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2300019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
23010ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   case MESA_FORMAT_RG_FLOAT16:
2302019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
2303019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 2;
2304019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2305019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ALPHA_FLOAT32:
2306019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_FLOAT32:
2307019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_INTENSITY_FLOAT32:
23080ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   case MESA_FORMAT_R_FLOAT32:
2309019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_FLOAT;
2310019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2311019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2312019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_ALPHA_FLOAT16:
2313019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_LUMINANCE_FLOAT16:
2314019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   case MESA_FORMAT_INTENSITY_FLOAT16:
23150ecbb0ab7472fe5cb33be13a8307e16f875254e5Marek Olšák   case MESA_FORMAT_R_FLOAT16:
2316019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = GL_HALF_FLOAT_ARB;
2317019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2318019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      return;
2319019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul
23207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_UINT8:
23217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_UINT8:
23227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_UINT8:
23237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
23247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_UINT8:
23277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
23287a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23297a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23307a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
23317a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_UINT16:
23327a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_UINT16:
23337a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_UINT16:
23347a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
23357a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_UINT16:
23387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
23397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_UINT32:
23427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_UINT32:
23437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_UINT32:
23447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
23457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_UINT32:
23487a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
23497a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23507a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23517a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_INT8:
23527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_INT8:
23537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_INT8:
23547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
23557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_INT8:
23587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
23597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
23627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_INT16:
23637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_INT16:
23647a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_INT16:
23657a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
23667a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23677a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23687a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_INT16:
23697a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
23707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
23737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_ALPHA_INT32:
23747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_INT32:
23757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_INTENSITY_INT32:
23767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
23777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_LUMINANCE_ALPHA_INT32:
23807a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
23817a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23827a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23837a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie
23847a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_INT8:
23857a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
23867a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
23877a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23887a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_INT8:
23897a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
23907a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
23917a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
23927a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_INT8:
23937a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_BYTE;
23947a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
23957a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2396abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT8:
2397abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_BYTE;
2398abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2399abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
24007a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_INT16:
24017a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
24027a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24037a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24047a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_INT16:
24057a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
24067a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24077a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24087a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_INT16:
24097a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_SHORT;
24107a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24117a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2412abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT16:
2413abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_SHORT;
2414abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2415abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
24167a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_INT32:
24177a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
24187a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24197a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24207a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_INT32:
24217a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
24227a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24237a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24247a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_INT32:
24257a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_INT;
24267a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24277a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2428abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_INT32:
2429abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_INT;
2430abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2431abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
2432abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
2433abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   /**
2434abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul    * \name Non-normalized unsigned integer formats.
2435abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul    */
24367a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_UINT8:
24377a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
24387a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24397a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24407a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_UINT8:
24417a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
24427a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24437a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24447a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_UINT8:
24457a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_BYTE;
24467a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24477a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2448abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT8:
2449abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_BYTE;
2450abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2451abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
24527a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_UINT16:
24537a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
24547a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24557a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24567a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_UINT16:
24577a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
24587a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24597a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24607a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_UINT16:
24617a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_SHORT;
24627a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24637a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2464abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT16:
2465abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_SHORT;
2466abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2467abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
24687a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_R_UINT32:
24697a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
24707a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 1;
24717a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24727a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RG_UINT32:
24737a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
24747a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 2;
24757a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
24767a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie   case MESA_FORMAT_RGB_UINT32:
24777a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *datatype = GL_UNSIGNED_INT;
24787a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      *comps = 3;
24797a41291c3aa13fc71cc87966b414551f5c7c0e6aDave Airlie      return;
2480abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul   case MESA_FORMAT_RGBA_UINT32:
2481abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *datatype = GL_UNSIGNED_INT;
2482abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      *comps = 4;
2483abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul      return;
2484abd5627a6a034885b0b01b995c73870da1361bb0Brian Paul
24859d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák   case MESA_FORMAT_RGB9_E5_FLOAT:
24869d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      *datatype = GL_UNSIGNED_INT_5_9_9_9_REV;
24879d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      *comps = 3;
24889d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák      return;
24899d7698c468f4ea7da8bb4ec00520c98f11cca0faMarek Olšák
2490631d23daa91c569bf268a2191bd466df73a64263Marek Olšák   case MESA_FORMAT_R11_G11_B10_FLOAT:
2491631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      *datatype = GL_UNSIGNED_INT_10F_11F_11F_REV;
2492631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      *comps = 3;
2493631d23daa91c569bf268a2191bd466df73a64263Marek Olšák      return;
2494631d23daa91c569bf268a2191bd466df73a64263Marek Olšák
2495f449be660e70aac2aefd2ce84581e137de25520bDave Airlie   case MESA_FORMAT_ARGB2101010_UINT:
2496f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      *datatype = GL_UNSIGNED_INT_2_10_10_10_REV;
2497f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      *comps = 4;
2498f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      return;
2499f449be660e70aac2aefd2ce84581e137de25520bDave Airlie
250079c65410c132c22b67b7635cee740dea9a736f80Brian Paul   case MESA_FORMAT_COUNT:
2501a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee      assert(0);
2502a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee      return;
2503a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee
2504a57e2c436bac4ce22d35681b45b513334dcb2fd9Vinson Lee   case MESA_FORMAT_NONE:
250579c65410c132c22b67b7635cee740dea9a736f80Brian Paul   /* For debug builds, warn if any formats are not handled */
2506280750c5cabfc5f312c3abe0424f57b2edeb53dfVinson Lee#ifdef DEBUG
2507019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul   default:
250879c65410c132c22b67b7635cee740dea9a736f80Brian Paul#endif
2509c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul      _mesa_problem(NULL, "bad format %s in _mesa_format_to_type_and_comps",
2510c9126d66fa8e535a53d45adda44c3275fa2e229fBrian Paul                    _mesa_get_format_name(format));
2511019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *datatype = 0;
2512019bc97bd900a84f5f999afdb42928e92d33814bBrian Paul      *comps = 1;
2513813870fd9588de101f68728507cff726d7513695Brian Paul   }
2514813870fd9588de101f68728507cff726d7513695Brian Paul}
25155f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25165f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt/**
25174ff212aac3764565675c9c83af378671162bc4f2Brian Paul * Check if a gl_format exactly matches a GL formaat/type combination
25184ff212aac3764565675c9c83af378671162bc4f2Brian Paul * such that we can use memcpy() from one to the other.
25195f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt *
25204ff212aac3764565675c9c83af378671162bc4f2Brian Paul * Note: this matching assumes that GL_PACK/UNPACK_SWAP_BYTES is unset.
25214ff212aac3764565675c9c83af378671162bc4f2Brian Paul *
25224ff212aac3764565675c9c83af378671162bc4f2Brian Paul * \return GL_TRUE if the formats match, GL_FALSE otherwise.
25235f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt */
25245f140bceda4c11b68c16ce175533f496434ff9a3Eric AnholtGLboolean
25255f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt_mesa_format_matches_format_and_type(gl_format gl_format,
25265f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt				     GLenum format, GLenum type)
25275f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt{
25285f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   const GLboolean littleEndian = _mesa_little_endian();
25295f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25305f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   /* Note: When reading a GL format/type combination, the format lists channel
25315f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt    * assignments from most significant channel in the type to least
25324ff212aac3764565675c9c83af378671162bc4f2Brian Paul    * significant.  A type with _REV indicates that the assignments are
25334ff212aac3764565675c9c83af378671162bc4f2Brian Paul    * swapped, so they are listed from least significant to most significant.
25345f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt    *
25354ff212aac3764565675c9c83af378671162bc4f2Brian Paul    * For sanity, please keep this switch statement ordered the same as the
25364ff212aac3764565675c9c83af378671162bc4f2Brian Paul    * enums in formats.h.
25375f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt    */
25385f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25395f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   switch (gl_format) {
25405f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25415f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_NONE:
25425f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_COUNT:
25435f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
25445f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25455f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA8888:
2546952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8)
2547952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2548952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2549952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_RGBA && type == GL_UNSIGNED_BYTE && !littleEndian)
2550952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2551952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2552952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_ABGR_EXT && type == GL_UNSIGNED_INT_8_8_8_8_REV)
2553952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2554952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2555952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_ABGR_EXT && type == GL_UNSIGNED_BYTE && littleEndian)
2556952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2557952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2558952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      return GL_FALSE;
25595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA8888_REV:
2561952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      return format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8_REV;
25625f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25635f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB8888:
2564952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV)
2565952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2566952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2567952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_BYTE && littleEndian)
2568952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2569952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2570952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      return GL_FALSE;
25715f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25725f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB8888_REV:
2573952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8)
2574952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2575952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2576952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      if (format == GL_BGRA && type == GL_UNSIGNED_BYTE && !littleEndian)
2577952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul         return GL_TRUE;
2578952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul
2579952ca0785236729b69e154b3b48783fc4d9a5526Brian Paul      return GL_FALSE;
25805f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
2581d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   case MESA_FORMAT_RGBX8888:
2582d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu   case MESA_FORMAT_RGBX8888_REV:
2583d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu      return GL_FALSE;
2584d4fcf67a3ac78c29448000486dadc2b4b1b2a56dChia-I Wu
25855f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_XRGB8888:
25865f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_XRGB8888_REV:
25875f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
25885f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25895f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB888:
2590b019228d6bb00291315f2a4045fb30af89715433Brian Paul      return format == GL_BGR && type == GL_UNSIGNED_BYTE && littleEndian;
25915f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25925f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_BGR888:
2593966720f507f71d2dce1f3499d7b29d98b615effeBrian Paul      return format == GL_RGB && type == GL_UNSIGNED_BYTE && littleEndian;
25945f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
25955f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB565:
25965f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGB && type == GL_UNSIGNED_SHORT_5_6_5;
25975f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB565_REV:
25985f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      /* Some of the 16-bit MESA_FORMATs that would seem to correspond to
25995f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt       * GL_UNSIGNED_SHORT_* are byte-swapped instead of channel-reversed,
26005f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt       * according to formats.h, so they can't be matched.
26015f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt       */
26025f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26035f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26045f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB4444:
26055f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_BGRA && type == GL_UNSIGNED_SHORT_4_4_4_4_REV;
26065f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB4444_REV:
26075f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26085f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26095f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA5551:
26105f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGBA && type == GL_UNSIGNED_SHORT_5_5_5_1;
26115f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26125f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB1555:
26135f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_BGRA && type == GL_UNSIGNED_SHORT_1_5_5_5_REV;
26145f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB1555_REV:
26155f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26165f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26175f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL44:
26185f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26195f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL88:
26205f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE && littleEndian;
26215f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL88_REV:
26225f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26235f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26245f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL1616:
26255f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_SHORT && littleEndian;
26265f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_AL1616_REV:
26275f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26285f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26295f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB332:
26305f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGB && type == GL_UNSIGNED_BYTE_3_3_2;
26315f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26325f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_A8:
26335f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_ALPHA && type == GL_UNSIGNED_BYTE;
26345f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_A16:
26355f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_ALPHA && type == GL_UNSIGNED_SHORT && littleEndian;
26365f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_L8:
26375f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE && type == GL_UNSIGNED_BYTE;
26385f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_L16:
26395f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE && type == GL_UNSIGNED_SHORT && littleEndian;
26405f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_I8:
26415f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_INTENSITY && type == GL_UNSIGNED_BYTE;
26425f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_I16:
26435f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_INTENSITY && type == GL_UNSIGNED_SHORT && littleEndian;
26445f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26455f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_YCBCR:
26465f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_YCBCR_REV:
26475f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26485f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26495f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R8:
26505f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RED && type == GL_UNSIGNED_BYTE;
26510a3c895f341ae458b09dcdc9cbd674600366a925Brian Paul   case MESA_FORMAT_GR88:
2652c3a57841a3b51dc463b7fa5ca94b897917a86f20Brian Paul      return format == GL_RG && type == GL_UNSIGNED_BYTE && littleEndian;
2653b4aecc4e1861e60e40e14868719219084967e46dBrian Paul   case MESA_FORMAT_RG88:
26545f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26555f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26565f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R16:
26575f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RED && type == GL_UNSIGNED_SHORT && littleEndian;
26585f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG1616:
26595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RG && type == GL_UNSIGNED_SHORT && littleEndian;
26605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG1616_REV:
26615f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26625f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26635f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ARGB2101010:
26645f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_BGRA && type == GL_UNSIGNED_INT_2_10_10_10_REV;
26655f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26665f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z24_S8:
26675f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_DEPTH_STENCIL && type == GL_UNSIGNED_INT_24_8;
26685f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z24_X8:
26695f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_S8_Z24:
26705f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26715f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26725f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z16:
26735f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_DEPTH_COMPONENT && type == GL_UNSIGNED_SHORT;
26745f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26755f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_X8_Z24:
26765f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26775f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26785f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z32:
26795f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_DEPTH_COMPONENT && type == GL_UNSIGNED_INT;
26805f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26815f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_S8:
26825f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26835f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26845f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGB8:
26855f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGBA8:
26865f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SARGB8:
26875f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SL8:
26885f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SLA8:
26895f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGB_DXT1:
26905f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGBA_DXT1:
26915f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGBA_DXT3:
26925f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SRGBA_DXT5:
26935f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
26945f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
26955f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_FXT1:
26965f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_FXT1:
26975f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_DXT1:
26985f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_DXT1:
26995f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_DXT3:
27005f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_DXT5:
27015f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27025f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27035f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_FLOAT32:
27045f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGBA && type == GL_FLOAT;
27055f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_FLOAT16:
27065f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGBA && type == GL_HALF_FLOAT;
27075f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27085f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_FLOAT32:
27095f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGB && type == GL_FLOAT;
27105f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_FLOAT16:
27115f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGB && type == GL_HALF_FLOAT;
27125f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27135f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_FLOAT32:
27145f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_ALPHA && type == GL_FLOAT;
27155f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_FLOAT16:
27165f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_ALPHA && type == GL_HALF_FLOAT;
27175f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27185f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_FLOAT32:
27195f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE && type == GL_FLOAT;
27205f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_FLOAT16:
27215f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE && type == GL_HALF_FLOAT;
27225f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27235f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
27245f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE_ALPHA && type == GL_FLOAT;
27255f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
27265f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_LUMINANCE_ALPHA && type == GL_HALF_FLOAT;
27275f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27285f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_FLOAT32:
27295f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_INTENSITY && type == GL_FLOAT;
27305f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_FLOAT16:
27315f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_INTENSITY && type == GL_HALF_FLOAT;
27325f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27335f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_FLOAT32:
27345f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RED && type == GL_FLOAT;
27355f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_FLOAT16:
27365f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RED && type == GL_HALF_FLOAT;
27375f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27385f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_FLOAT32:
27395f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RG && type == GL_FLOAT;
27405f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_FLOAT16:
27415f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RG && type == GL_HALF_FLOAT;
27425f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27435f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      /* FINISHME: What do we want to do for GL_EXT_texture_integer? */
27445f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_UINT8:
27455f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_UINT16:
27465f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_UINT32:
27475f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_INT8:
27485f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_INT16:
27495f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_ALPHA_INT32:
27505f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27515f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27525f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_UINT8:
27535f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_UINT16:
27545f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_UINT32:
27555f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_INT8:
27565f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_INT16:
27575f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_INTENSITY_INT32:
27585f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_UINT8:
27615f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_UINT16:
27625f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_UINT32:
27635f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_INT8:
27645f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_INT16:
27655f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_INT32:
27665f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27675f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27685f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_UINT8:
27695f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_UINT16:
27705f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_UINT32:
27715f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_INT8:
27725f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_INT16:
27735f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LUMINANCE_ALPHA_INT32:
27745f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27755f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27765f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_INT8:
27775f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_INT8:
27785f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_INT8:
27795f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_INT8:
27805f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_INT16:
27815f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_INT16:
27825f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_INT16:
27835f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_INT16:
27845f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_INT32:
27855f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_INT32:
27865f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_INT32:
27875f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_INT32:
27885f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
27895f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
27905f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_UINT8:
27915f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_UINT8:
27925f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_UINT8:
27935f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_UINT8:
27945f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_UINT16:
27955f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_UINT16:
27965f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_UINT16:
27975f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_UINT16:
27985f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R_UINT32:
27995f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_UINT32:
28005f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB_UINT32:
28015f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_UINT32:
28025f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28035f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28045f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_DUDV8:
28055f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_R8:
28065f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RG88_REV:
28075f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGBX8888:
28085f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGBA8888:
28095f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGBA8888_REV:
28105f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_R16:
28115f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_GR1616:
28125f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGB_16:
28135f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RGBA_16:
28145f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGBA_16:
28155f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      /* FINISHME: SNORM */
28165f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28175f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28185f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RED_RGTC1:
28195f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RED_RGTC1:
28205f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RG_RGTC2:
28215f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_RG_RGTC2:
28225f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28235f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28245f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_L_LATC1:
28255f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_L_LATC1:
28265f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_LA_LATC2:
28275f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_LA_LATC2:
28285f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28295f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
2830d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu   case MESA_FORMAT_ETC1_RGB8:
2831d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu      return GL_FALSE;
2832d4a38e86d4b4d66cca20ee63222f940cb73fa709Chia-I Wu
28335f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_A8:
28345f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_L8:
28355f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_AL88:
28365f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_I8:
28375f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_A16:
28385f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_L16:
28395f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_AL1616:
28405f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_SIGNED_I16:
28415f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      /* FINISHME: SNORM */
28425f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28435f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
2844f449be660e70aac2aefd2ce84581e137de25520bDave Airlie   case MESA_FORMAT_ARGB2101010_UINT:
2845f449be660e70aac2aefd2ce84581e137de25520bDave Airlie      return GL_FALSE;
2846f449be660e70aac2aefd2ce84581e137de25520bDave Airlie
28475f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_RGB9_E5_FLOAT:
28485f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGB && type == GL_UNSIGNED_INT_5_9_9_9_REV;
28495f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_R11_G11_B10_FLOAT:
28505f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_RGB && type == GL_UNSIGNED_INT_10F_11F_11F_REV;
28515f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28525f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z32_FLOAT:
28535f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return format == GL_DEPTH_COMPONENT && type == GL_FLOAT;
28545f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28555f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   case MESA_FORMAT_Z32_FLOAT_X24S8:
28565f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt      return GL_FALSE;
28575f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   }
28585f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt
28595f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt   return GL_FALSE;
28605f140bceda4c11b68c16ce175533f496434ff9a3Eric Anholt}
2861