mesa: remove driver hooks for GetFloat/Integer/Doublev, etc
[mesa.git] / src / mesa / main / get_gen.py
1 #!/usr/bin/env python
2
3 # Mesa 3-D graphics library
4 #
5 # Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
6 #
7 # Permission is hereby granted, free of charge, to any person obtaining a
8 # copy of this software and associated documentation files (the "Software"),
9 # to deal in the Software without restriction, including without limitation
10 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 # and/or sell copies of the Software, and to permit persons to whom the
12 # Software is furnished to do so, subject to the following conditions:
13 #
14 # The above copyright notice and this permission notice shall be included
15 # in all copies or substantial portions of the Software.
16 #
17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 # BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
24
25 # This script is used to generate the get.c file:
26 # python get_gen.py > get.c
27
28
29 import string
30 import sys
31
32
33 GLint = 1
34 GLenum = 2
35 GLfloat = 3
36 GLdouble = 4
37 GLboolean = 5
38 GLfloatN = 6 # A normalized value, such as a color or depth range
39 GLint64 = 7
40
41
42 TypeStrings = {
43 GLint : "GLint",
44 GLenum : "GLenum",
45 GLfloat : "GLfloat",
46 GLdouble : "GLdouble",
47 GLboolean : "GLboolean",
48 GLint64 : "GLint64"
49 }
50
51
52 NoState = None
53 NoExt = None
54 FlushCurrent = 1
55
56
57 # Each entry is a tuple of:
58 # - the GL state name, such as GL_CURRENT_COLOR
59 # - the state datatype, one of GLint, GLfloat, GLboolean or GLenum
60 # - list of code fragments to get the state, such as ["ctx->Foo.Bar"]
61 # - optional extra code or empty string. If present, "CONVERSION" will be
62 # replaced by ENUM_TO_FLOAT, INT_TO_FLOAT, etc.
63 # - state flags: either NoExt, FlushCurrent or "_NEW_xxx"
64 # if NoExt, do nothing special
65 # if FlushCurrent, emit FLUSH_CURRENT() call
66 # if "_NEW_xxx", call _mesa_update_state() if that dirty state flag is set
67 # - optional extensions to check, or NoExt
68 #
69 StateVars = [
70 ( "GL_ACCUM_RED_BITS", GLint, ["ctx->DrawBuffer->Visual.accumRedBits"],
71 "", NoState, NoExt ),
72 ( "GL_ACCUM_GREEN_BITS", GLint, ["ctx->DrawBuffer->Visual.accumGreenBits"],
73 "", NoState, NoExt ),
74 ( "GL_ACCUM_BLUE_BITS", GLint, ["ctx->DrawBuffer->Visual.accumBlueBits"],
75 "", NoState, NoExt ),
76 ( "GL_ACCUM_ALPHA_BITS", GLint, ["ctx->DrawBuffer->Visual.accumAlphaBits"],
77 "", NoState, NoExt ),
78 ( "GL_ACCUM_CLEAR_VALUE", GLfloatN,
79 [ "ctx->Accum.ClearColor[0]",
80 "ctx->Accum.ClearColor[1]",
81 "ctx->Accum.ClearColor[2]",
82 "ctx->Accum.ClearColor[3]" ],
83 "", NoState, NoExt ),
84 ( "GL_ALPHA_BIAS", GLfloat, ["ctx->Pixel.AlphaBias"], "", NoState, NoExt ),
85 ( "GL_ALPHA_BITS", GLint, ["ctx->DrawBuffer->Visual.alphaBits"],
86 "", "_NEW_BUFFERS", NoExt ),
87 ( "GL_ALPHA_SCALE", GLfloat, ["ctx->Pixel.AlphaScale"], "", NoState, NoExt ),
88 ( "GL_ALPHA_TEST", GLboolean, ["ctx->Color.AlphaEnabled"], "", NoState, NoExt ),
89 ( "GL_ALPHA_TEST_FUNC", GLenum, ["ctx->Color.AlphaFunc"], "", NoState, NoExt ),
90 ( "GL_ALPHA_TEST_REF", GLfloatN, ["ctx->Color.AlphaRef"], "", NoState, NoExt ),
91 ( "GL_ATTRIB_STACK_DEPTH", GLint, ["ctx->AttribStackDepth"], "", NoState, NoExt ),
92 ( "GL_AUTO_NORMAL", GLboolean, ["ctx->Eval.AutoNormal"], "", NoState, NoExt ),
93 ( "GL_AUX_BUFFERS", GLint, ["ctx->DrawBuffer->Visual.numAuxBuffers"],
94 "", NoState, NoExt ),
95 ( "GL_BLEND", GLboolean, ["(ctx->Color.BlendEnabled & 1)"], "", NoState, NoExt ),
96 ( "GL_BLEND_DST", GLenum, ["ctx->Color.BlendDstRGB"], "", NoState, NoExt ),
97 ( "GL_BLEND_SRC", GLenum, ["ctx->Color.BlendSrcRGB"], "", NoState, NoExt ),
98 ( "GL_BLEND_SRC_RGB_EXT", GLenum, ["ctx->Color.BlendSrcRGB"], "", NoState, NoExt ),
99 ( "GL_BLEND_DST_RGB_EXT", GLenum, ["ctx->Color.BlendDstRGB"], "", NoState, NoExt ),
100 ( "GL_BLEND_SRC_ALPHA_EXT", GLenum, ["ctx->Color.BlendSrcA"], "", NoState, NoExt ),
101 ( "GL_BLEND_DST_ALPHA_EXT", GLenum, ["ctx->Color.BlendDstA"], "", NoState, NoExt ),
102 ( "GL_BLEND_EQUATION", GLenum, ["ctx->Color.BlendEquationRGB "], "", NoState, NoExt),
103 ( "GL_BLEND_EQUATION_ALPHA_EXT", GLenum, ["ctx->Color.BlendEquationA "],
104 "", NoState, NoExt ),
105 ( "GL_BLEND_COLOR_EXT", GLfloatN,
106 [ "ctx->Color.BlendColor[0]",
107 "ctx->Color.BlendColor[1]",
108 "ctx->Color.BlendColor[2]",
109 "ctx->Color.BlendColor[3]"], "", NoState, NoExt ),
110 ( "GL_BLUE_BIAS", GLfloat, ["ctx->Pixel.BlueBias"], "", NoState, NoExt ),
111 ( "GL_BLUE_BITS", GLint, ["ctx->DrawBuffer->Visual.blueBits"], "", "_NEW_BUFFERS", NoExt ),
112 ( "GL_BLUE_SCALE", GLfloat, ["ctx->Pixel.BlueScale"], "", NoState, NoExt ),
113 ( "GL_CLIENT_ATTRIB_STACK_DEPTH", GLint,
114 ["ctx->ClientAttribStackDepth"], "", NoState, NoExt ),
115 ( "GL_CLIP_PLANE0", GLboolean,
116 [ "(ctx->Transform.ClipPlanesEnabled >> 0) & 1" ], "", NoState, NoExt ),
117 ( "GL_CLIP_PLANE1", GLboolean,
118 [ "(ctx->Transform.ClipPlanesEnabled >> 1) & 1" ], "", NoState, NoExt ),
119 ( "GL_CLIP_PLANE2", GLboolean,
120 [ "(ctx->Transform.ClipPlanesEnabled >> 2) & 1" ], "", NoState, NoExt ),
121 ( "GL_CLIP_PLANE3", GLboolean,
122 [ "(ctx->Transform.ClipPlanesEnabled >> 3) & 1" ], "", NoState, NoExt ),
123 ( "GL_CLIP_PLANE4", GLboolean,
124 [ "(ctx->Transform.ClipPlanesEnabled >> 4) & 1" ], "", NoState, NoExt ),
125 ( "GL_CLIP_PLANE5", GLboolean,
126 [ "(ctx->Transform.ClipPlanesEnabled >> 5) & 1" ], "", NoState, NoExt ),
127 ( "GL_COLOR_CLEAR_VALUE", GLfloatN,
128 [ "ctx->Color.ClearColor[0]",
129 "ctx->Color.ClearColor[1]",
130 "ctx->Color.ClearColor[2]",
131 "ctx->Color.ClearColor[3]" ], "", NoState, NoExt ),
132 ( "GL_COLOR_MATERIAL", GLboolean,
133 ["ctx->Light.ColorMaterialEnabled"], "", NoState, NoExt ),
134 ( "GL_COLOR_MATERIAL_FACE", GLenum,
135 ["ctx->Light.ColorMaterialFace"], "", NoState, NoExt ),
136 ( "GL_COLOR_MATERIAL_PARAMETER", GLenum,
137 ["ctx->Light.ColorMaterialMode"], "", NoState, NoExt ),
138 ( "GL_COLOR_WRITEMASK", GLint,
139 [ "ctx->Color.ColorMask[0][RCOMP] ? 1 : 0",
140 "ctx->Color.ColorMask[0][GCOMP] ? 1 : 0",
141 "ctx->Color.ColorMask[0][BCOMP] ? 1 : 0",
142 "ctx->Color.ColorMask[0][ACOMP] ? 1 : 0" ], "", NoState, NoExt ),
143 ( "GL_CULL_FACE", GLboolean, ["ctx->Polygon.CullFlag"], "", NoState, NoExt ),
144 ( "GL_CULL_FACE_MODE", GLenum, ["ctx->Polygon.CullFaceMode"], "", NoState, NoExt ),
145 ( "GL_CURRENT_COLOR", GLfloatN,
146 [ "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]",
147 "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]",
148 "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]",
149 "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]" ],
150 "", FlushCurrent, NoExt ),
151 ( "GL_CURRENT_INDEX", GLfloat,
152 [ "ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]" ],
153 "", FlushCurrent, NoExt ),
154 ( "GL_CURRENT_NORMAL", GLfloatN,
155 [ "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]",
156 "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]",
157 "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]"],
158 "", FlushCurrent, NoExt ),
159 ( "GL_CURRENT_RASTER_COLOR", GLfloatN,
160 ["ctx->Current.RasterColor[0]",
161 "ctx->Current.RasterColor[1]",
162 "ctx->Current.RasterColor[2]",
163 "ctx->Current.RasterColor[3]"], "", NoState, NoExt ),
164 ( "GL_CURRENT_RASTER_DISTANCE", GLfloat,
165 ["ctx->Current.RasterDistance"], "", NoState, NoExt ),
166 ( "GL_CURRENT_RASTER_INDEX", GLfloat,
167 ["1.0"], "", NoState, NoExt ),
168 ( "GL_CURRENT_RASTER_POSITION", GLfloat,
169 ["ctx->Current.RasterPos[0]",
170 "ctx->Current.RasterPos[1]",
171 "ctx->Current.RasterPos[2]",
172 "ctx->Current.RasterPos[3]"], "", NoState, NoExt ),
173 ( "GL_CURRENT_RASTER_SECONDARY_COLOR", GLfloatN,
174 ["ctx->Current.RasterSecondaryColor[0]",
175 "ctx->Current.RasterSecondaryColor[1]",
176 "ctx->Current.RasterSecondaryColor[2]",
177 "ctx->Current.RasterSecondaryColor[3]"], "", NoState, NoExt ),
178 ( "GL_CURRENT_RASTER_TEXTURE_COORDS", GLfloat,
179 ["ctx->Current.RasterTexCoords[unit][0]",
180 "ctx->Current.RasterTexCoords[unit][1]",
181 "ctx->Current.RasterTexCoords[unit][2]",
182 "ctx->Current.RasterTexCoords[unit][3]"],
183 """const GLuint unit = ctx->Texture.CurrentUnit;
184 if (unit >= ctx->Const.MaxTextureCoordUnits) {
185 _mesa_error(ctx, GL_INVALID_OPERATION,
186 "glGet(raster tex coords, unit %u)", unit);
187 return;
188 }""",
189 NoState, NoExt ),
190 ( "GL_CURRENT_RASTER_POSITION_VALID", GLboolean,
191 ["ctx->Current.RasterPosValid"], "", NoState, NoExt ),
192 ( "GL_CURRENT_TEXTURE_COORDS", GLfloat,
193 ["ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]",
194 "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]",
195 "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]",
196 "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]"],
197 """const GLuint unit = ctx->Texture.CurrentUnit;
198 if (unit >= ctx->Const.MaxTextureCoordUnits) {
199 _mesa_error(ctx, GL_INVALID_OPERATION,
200 "glGet(current tex coords, unit %u)", unit);
201 return;
202 }
203 FLUSH_CURRENT(ctx, 0);""",
204 NoState, NoExt ),
205 ( "GL_DEPTH_BIAS", GLfloat, ["ctx->Pixel.DepthBias"], "", NoState, NoExt ),
206 ( "GL_DEPTH_BITS", GLint, ["ctx->DrawBuffer->Visual.depthBits"],
207 "", NoState, NoExt ),
208 ( "GL_DEPTH_CLEAR_VALUE", GLfloatN, ["((GLfloat) ctx->Depth.Clear)"], "", NoState, NoExt ),
209 ( "GL_DEPTH_FUNC", GLenum, ["ctx->Depth.Func"], "", NoState, NoExt ),
210 ( "GL_DEPTH_RANGE", GLfloatN,
211 [ "ctx->Viewport.Near", "ctx->Viewport.Far" ], "", NoState, NoExt ),
212 ( "GL_DEPTH_SCALE", GLfloat, ["ctx->Pixel.DepthScale"], "", NoState, NoExt ),
213 ( "GL_DEPTH_TEST", GLboolean, ["ctx->Depth.Test"], "", NoState, NoExt ),
214 ( "GL_DEPTH_WRITEMASK", GLboolean, ["ctx->Depth.Mask"], "", NoState, NoExt ),
215 ( "GL_DITHER", GLboolean, ["ctx->Color.DitherFlag"], "", NoState, NoExt ),
216 ( "GL_DOUBLEBUFFER", GLboolean,
217 ["ctx->DrawBuffer->Visual.doubleBufferMode"], "", NoState, NoExt ),
218 ( "GL_DRAW_BUFFER", GLenum, ["ctx->DrawBuffer->ColorDrawBuffer[0]"], "", NoState, NoExt ),
219 ( "GL_EDGE_FLAG", GLboolean, ["(ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0)"],
220 "", FlushCurrent, NoExt ),
221 ( "GL_FEEDBACK_BUFFER_SIZE", GLint, ["ctx->Feedback.BufferSize"], "", NoState, NoExt ),
222 ( "GL_FEEDBACK_BUFFER_TYPE", GLenum, ["ctx->Feedback.Type"], "", NoState, NoExt ),
223 ( "GL_FOG", GLboolean, ["ctx->Fog.Enabled"], "", NoState, NoExt ),
224 ( "GL_FOG_COLOR", GLfloatN,
225 [ "ctx->Fog.Color[0]",
226 "ctx->Fog.Color[1]",
227 "ctx->Fog.Color[2]",
228 "ctx->Fog.Color[3]" ], "", NoState, NoExt ),
229 ( "GL_FOG_DENSITY", GLfloat, ["ctx->Fog.Density"], "", NoState, NoExt ),
230 ( "GL_FOG_END", GLfloat, ["ctx->Fog.End"], "", NoState, NoExt ),
231 ( "GL_FOG_HINT", GLenum, ["ctx->Hint.Fog"], "", NoState, NoExt ),
232 ( "GL_FOG_INDEX", GLfloat, ["ctx->Fog.Index"], "", NoState, NoExt ),
233 ( "GL_FOG_MODE", GLenum, ["ctx->Fog.Mode"], "", NoState, NoExt ),
234 ( "GL_FOG_START", GLfloat, ["ctx->Fog.Start"], "", NoState, NoExt ),
235 ( "GL_FRONT_FACE", GLenum, ["ctx->Polygon.FrontFace"], "", NoState, NoExt ),
236 ( "GL_GREEN_BIAS", GLfloat, ["ctx->Pixel.GreenBias"], "", NoState, NoExt ),
237 ( "GL_GREEN_BITS", GLint, ["ctx->DrawBuffer->Visual.greenBits"],
238 "", "_NEW_BUFFERS", NoExt ),
239 ( "GL_GREEN_SCALE", GLfloat, ["ctx->Pixel.GreenScale"], "", NoState, NoExt ),
240 ( "GL_INDEX_BITS", GLint, ["ctx->DrawBuffer->Visual.indexBits"],
241 "", "_NEW_BUFFERS", NoExt ),
242 ( "GL_INDEX_CLEAR_VALUE", GLint, ["ctx->Color.ClearIndex"], "", NoState, NoExt ),
243 ( "GL_INDEX_MODE", GLboolean, ["GL_FALSE"],
244 "", NoState, NoExt ),
245 ( "GL_INDEX_OFFSET", GLint, ["ctx->Pixel.IndexOffset"], "", NoState, NoExt ),
246 ( "GL_INDEX_SHIFT", GLint, ["ctx->Pixel.IndexShift"], "", NoState, NoExt ),
247 ( "GL_INDEX_WRITEMASK", GLint, ["ctx->Color.IndexMask"], "", NoState, NoExt ),
248 ( "GL_LIGHT0", GLboolean, ["ctx->Light.Light[0].Enabled"], "", NoState, NoExt ),
249 ( "GL_LIGHT1", GLboolean, ["ctx->Light.Light[1].Enabled"], "", NoState, NoExt ),
250 ( "GL_LIGHT2", GLboolean, ["ctx->Light.Light[2].Enabled"], "", NoState, NoExt ),
251 ( "GL_LIGHT3", GLboolean, ["ctx->Light.Light[3].Enabled"], "", NoState, NoExt ),
252 ( "GL_LIGHT4", GLboolean, ["ctx->Light.Light[4].Enabled"], "", NoState, NoExt ),
253 ( "GL_LIGHT5", GLboolean, ["ctx->Light.Light[5].Enabled"], "", NoState, NoExt ),
254 ( "GL_LIGHT6", GLboolean, ["ctx->Light.Light[6].Enabled"], "", NoState, NoExt ),
255 ( "GL_LIGHT7", GLboolean, ["ctx->Light.Light[7].Enabled"], "", NoState, NoExt ),
256 ( "GL_LIGHTING", GLboolean, ["ctx->Light.Enabled"], "", NoState, NoExt ),
257 ( "GL_LIGHT_MODEL_AMBIENT", GLfloatN,
258 ["ctx->Light.Model.Ambient[0]",
259 "ctx->Light.Model.Ambient[1]",
260 "ctx->Light.Model.Ambient[2]",
261 "ctx->Light.Model.Ambient[3]"], "", NoState, NoExt ),
262 ( "GL_LIGHT_MODEL_COLOR_CONTROL", GLenum,
263 ["ctx->Light.Model.ColorControl"], "", NoState, NoExt ),
264 ( "GL_LIGHT_MODEL_LOCAL_VIEWER", GLboolean,
265 ["ctx->Light.Model.LocalViewer"], "", NoState, NoExt ),
266 ( "GL_LIGHT_MODEL_TWO_SIDE", GLboolean, ["ctx->Light.Model.TwoSide"], "", NoState, NoExt ),
267 ( "GL_LINE_SMOOTH", GLboolean, ["ctx->Line.SmoothFlag"], "", NoState, NoExt ),
268 ( "GL_LINE_SMOOTH_HINT", GLenum, ["ctx->Hint.LineSmooth"], "", NoState, NoExt ),
269 ( "GL_LINE_STIPPLE", GLboolean, ["ctx->Line.StippleFlag"], "", NoState, NoExt ),
270 ( "GL_LINE_STIPPLE_PATTERN", GLint, ["ctx->Line.StipplePattern"], "", NoState, NoExt ),
271 ( "GL_LINE_STIPPLE_REPEAT", GLint, ["ctx->Line.StippleFactor"], "", NoState, NoExt ),
272 ( "GL_LINE_WIDTH", GLfloat, ["ctx->Line.Width"], "", NoState, NoExt ),
273 ( "GL_LINE_WIDTH_GRANULARITY", GLfloat,
274 ["ctx->Const.LineWidthGranularity"], "", NoState, NoExt ),
275 ( "GL_LINE_WIDTH_RANGE", GLfloat,
276 ["ctx->Const.MinLineWidthAA",
277 "ctx->Const.MaxLineWidthAA"], "", NoState, NoExt ),
278 ( "GL_ALIASED_LINE_WIDTH_RANGE", GLfloat,
279 ["ctx->Const.MinLineWidth",
280 "ctx->Const.MaxLineWidth"], "", NoState, NoExt ),
281 ( "GL_LIST_BASE", GLint, ["ctx->List.ListBase"], "", NoState, NoExt ),
282 ( "GL_LIST_INDEX", GLint, ["(ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0)"], "", NoState, NoExt ),
283 ( "GL_LIST_MODE", GLenum, ["mode"],
284 """GLenum mode;
285 if (!ctx->CompileFlag)
286 mode = 0;
287 else if (ctx->ExecuteFlag)
288 mode = GL_COMPILE_AND_EXECUTE;
289 else
290 mode = GL_COMPILE;""", NoState, NoExt ),
291 ( "GL_INDEX_LOGIC_OP", GLboolean, ["ctx->Color.IndexLogicOpEnabled"], "", NoState, NoExt ),
292 ( "GL_COLOR_LOGIC_OP", GLboolean, ["ctx->Color.ColorLogicOpEnabled"], "", NoState, NoExt ),
293 ( "GL_LOGIC_OP_MODE", GLenum, ["ctx->Color.LogicOp"], "", NoState, NoExt ),
294 ( "GL_MAP1_COLOR_4", GLboolean, ["ctx->Eval.Map1Color4"], "", NoState, NoExt ),
295 ( "GL_MAP1_GRID_DOMAIN", GLfloat,
296 ["ctx->Eval.MapGrid1u1",
297 "ctx->Eval.MapGrid1u2"], "", NoState, NoExt ),
298 ( "GL_MAP1_GRID_SEGMENTS", GLint, ["ctx->Eval.MapGrid1un"], "", NoState, NoExt ),
299 ( "GL_MAP1_INDEX", GLboolean, ["ctx->Eval.Map1Index"], "", NoState, NoExt ),
300 ( "GL_MAP1_NORMAL", GLboolean, ["ctx->Eval.Map1Normal"], "", NoState, NoExt ),
301 ( "GL_MAP1_TEXTURE_COORD_1", GLboolean, ["ctx->Eval.Map1TextureCoord1"], "", NoState, NoExt ),
302 ( "GL_MAP1_TEXTURE_COORD_2", GLboolean, ["ctx->Eval.Map1TextureCoord2"], "", NoState, NoExt ),
303 ( "GL_MAP1_TEXTURE_COORD_3", GLboolean, ["ctx->Eval.Map1TextureCoord3"], "", NoState, NoExt ),
304 ( "GL_MAP1_TEXTURE_COORD_4", GLboolean, ["ctx->Eval.Map1TextureCoord4"], "", NoState, NoExt ),
305 ( "GL_MAP1_VERTEX_3", GLboolean, ["ctx->Eval.Map1Vertex3"], "", NoState, NoExt ),
306 ( "GL_MAP1_VERTEX_4", GLboolean, ["ctx->Eval.Map1Vertex4"], "", NoState, NoExt ),
307 ( "GL_MAP2_COLOR_4", GLboolean, ["ctx->Eval.Map2Color4"], "", NoState, NoExt ),
308 ( "GL_MAP2_GRID_DOMAIN", GLfloat,
309 ["ctx->Eval.MapGrid2u1",
310 "ctx->Eval.MapGrid2u2",
311 "ctx->Eval.MapGrid2v1",
312 "ctx->Eval.MapGrid2v2"], "", NoState, NoExt ),
313 ( "GL_MAP2_GRID_SEGMENTS", GLint,
314 ["ctx->Eval.MapGrid2un",
315 "ctx->Eval.MapGrid2vn"], "", NoState, NoExt ),
316 ( "GL_MAP2_INDEX", GLboolean, ["ctx->Eval.Map2Index"], "", NoState, NoExt ),
317 ( "GL_MAP2_NORMAL", GLboolean, ["ctx->Eval.Map2Normal"], "", NoState, NoExt ),
318 ( "GL_MAP2_TEXTURE_COORD_1", GLboolean, ["ctx->Eval.Map2TextureCoord1"], "", NoState, NoExt ),
319 ( "GL_MAP2_TEXTURE_COORD_2", GLboolean, ["ctx->Eval.Map2TextureCoord2"], "", NoState, NoExt ),
320 ( "GL_MAP2_TEXTURE_COORD_3", GLboolean, ["ctx->Eval.Map2TextureCoord3"], "", NoState, NoExt ),
321 ( "GL_MAP2_TEXTURE_COORD_4", GLboolean, ["ctx->Eval.Map2TextureCoord4"], "", NoState, NoExt ),
322 ( "GL_MAP2_VERTEX_3", GLboolean, ["ctx->Eval.Map2Vertex3"], "", NoState, NoExt ),
323 ( "GL_MAP2_VERTEX_4", GLboolean, ["ctx->Eval.Map2Vertex4"], "", NoState, NoExt ),
324 ( "GL_MAP_COLOR", GLboolean, ["ctx->Pixel.MapColorFlag"], "", NoState, NoExt ),
325 ( "GL_MAP_STENCIL", GLboolean, ["ctx->Pixel.MapStencilFlag"], "", NoState, NoExt ),
326 ( "GL_MATRIX_MODE", GLenum, ["ctx->Transform.MatrixMode"], "", NoState, NoExt ),
327
328 ( "GL_MAX_ATTRIB_STACK_DEPTH", GLint, ["MAX_ATTRIB_STACK_DEPTH"], "", NoState, NoExt ),
329 ( "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH", GLint, ["MAX_CLIENT_ATTRIB_STACK_DEPTH"], "", NoState, NoExt ),
330 ( "GL_MAX_CLIP_PLANES", GLint, ["ctx->Const.MaxClipPlanes"], "", NoState, NoExt ),
331 ( "GL_MAX_ELEMENTS_VERTICES", GLint, ["ctx->Const.MaxArrayLockSize"], "", NoState, NoExt ),
332 ( "GL_MAX_ELEMENTS_INDICES", GLint, ["ctx->Const.MaxArrayLockSize"], "", NoState, NoExt ),
333 ( "GL_MAX_EVAL_ORDER", GLint, ["MAX_EVAL_ORDER"], "", NoState, NoExt ),
334 ( "GL_MAX_LIGHTS", GLint, ["ctx->Const.MaxLights"], "", NoState, NoExt ),
335 ( "GL_MAX_LIST_NESTING", GLint, ["MAX_LIST_NESTING"], "", NoState, NoExt ),
336 ( "GL_MAX_MODELVIEW_STACK_DEPTH", GLint, ["MAX_MODELVIEW_STACK_DEPTH"], "", NoState, NoExt ),
337 ( "GL_MAX_NAME_STACK_DEPTH", GLint, ["MAX_NAME_STACK_DEPTH"], "", NoState, NoExt ),
338 ( "GL_MAX_PIXEL_MAP_TABLE", GLint, ["MAX_PIXEL_MAP_TABLE"], "", NoState, NoExt ),
339 ( "GL_MAX_PROJECTION_STACK_DEPTH", GLint, ["MAX_PROJECTION_STACK_DEPTH"], "", NoState, NoExt ),
340 ( "GL_MAX_TEXTURE_SIZE", GLint, ["1 << (ctx->Const.MaxTextureLevels - 1)"], "", NoState, NoExt ),
341 ( "GL_MAX_3D_TEXTURE_SIZE", GLint, ["1 << (ctx->Const.Max3DTextureLevels - 1)"], "", NoState, NoExt ),
342 ( "GL_MAX_TEXTURE_STACK_DEPTH", GLint, ["MAX_TEXTURE_STACK_DEPTH"], "", NoState, NoExt ),
343 ( "GL_MAX_VIEWPORT_DIMS", GLint,
344 ["ctx->Const.MaxViewportWidth", "ctx->Const.MaxViewportHeight"],
345 "", NoState, NoExt ),
346 ( "GL_MODELVIEW_MATRIX", GLfloat,
347 [ "matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
348 "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
349 "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
350 "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
351 "const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;", NoState, NoExt ),
352 ( "GL_MODELVIEW_STACK_DEPTH", GLint, ["ctx->ModelviewMatrixStack.Depth + 1"], "", NoState, NoExt ),
353 ( "GL_NAME_STACK_DEPTH", GLint, ["ctx->Select.NameStackDepth"], "", NoState, NoExt ),
354 ( "GL_NORMALIZE", GLboolean, ["ctx->Transform.Normalize"], "", NoState, NoExt ),
355 ( "GL_PACK_ALIGNMENT", GLint, ["ctx->Pack.Alignment"], "", NoState, NoExt ),
356 ( "GL_PACK_LSB_FIRST", GLboolean, ["ctx->Pack.LsbFirst"], "", NoState, NoExt ),
357 ( "GL_PACK_ROW_LENGTH", GLint, ["ctx->Pack.RowLength"], "", NoState, NoExt ),
358 ( "GL_PACK_SKIP_PIXELS", GLint, ["ctx->Pack.SkipPixels"], "", NoState, NoExt ),
359 ( "GL_PACK_SKIP_ROWS", GLint, ["ctx->Pack.SkipRows"], "", NoState, NoExt ),
360 ( "GL_PACK_SWAP_BYTES", GLboolean, ["ctx->Pack.SwapBytes"], "", NoState, NoExt ),
361 ( "GL_PACK_SKIP_IMAGES_EXT", GLint, ["ctx->Pack.SkipImages"], "", NoState, NoExt ),
362 ( "GL_PACK_IMAGE_HEIGHT_EXT", GLint, ["ctx->Pack.ImageHeight"], "", NoState, NoExt ),
363 ( "GL_PACK_INVERT_MESA", GLboolean, ["ctx->Pack.Invert"], "", NoState, NoExt ),
364 ( "GL_PERSPECTIVE_CORRECTION_HINT", GLenum,
365 ["ctx->Hint.PerspectiveCorrection"], "", NoState, NoExt ),
366 ( "GL_PIXEL_MAP_A_TO_A_SIZE", GLint, ["ctx->PixelMaps.AtoA.Size"], "", NoState, NoExt ),
367 ( "GL_PIXEL_MAP_B_TO_B_SIZE", GLint, ["ctx->PixelMaps.BtoB.Size"], "", NoState, NoExt ),
368 ( "GL_PIXEL_MAP_G_TO_G_SIZE", GLint, ["ctx->PixelMaps.GtoG.Size"], "", NoState, NoExt ),
369 ( "GL_PIXEL_MAP_I_TO_A_SIZE", GLint, ["ctx->PixelMaps.ItoA.Size"], "", NoState, NoExt ),
370 ( "GL_PIXEL_MAP_I_TO_B_SIZE", GLint, ["ctx->PixelMaps.ItoB.Size"], "", NoState, NoExt ),
371 ( "GL_PIXEL_MAP_I_TO_G_SIZE", GLint, ["ctx->PixelMaps.ItoG.Size"], "", NoState, NoExt ),
372 ( "GL_PIXEL_MAP_I_TO_I_SIZE", GLint, ["ctx->PixelMaps.ItoI.Size"], "", NoState, NoExt ),
373 ( "GL_PIXEL_MAP_I_TO_R_SIZE", GLint, ["ctx->PixelMaps.ItoR.Size"], "", NoState, NoExt ),
374 ( "GL_PIXEL_MAP_R_TO_R_SIZE", GLint, ["ctx->PixelMaps.RtoR.Size"], "", NoState, NoExt ),
375 ( "GL_PIXEL_MAP_S_TO_S_SIZE", GLint, ["ctx->PixelMaps.StoS.Size"], "", NoState, NoExt ),
376 ( "GL_POINT_SIZE", GLfloat, ["ctx->Point.Size"], "", NoState, NoExt ),
377 ( "GL_POINT_SIZE_GRANULARITY", GLfloat,
378 ["ctx->Const.PointSizeGranularity"], "", NoState, NoExt ),
379 ( "GL_POINT_SIZE_RANGE", GLfloat,
380 ["ctx->Const.MinPointSizeAA",
381 "ctx->Const.MaxPointSizeAA"], "", NoState, NoExt ),
382 ( "GL_ALIASED_POINT_SIZE_RANGE", GLfloat,
383 ["ctx->Const.MinPointSize",
384 "ctx->Const.MaxPointSize"], "", NoState, NoExt ),
385 ( "GL_POINT_SMOOTH", GLboolean, ["ctx->Point.SmoothFlag"], "", NoState, NoExt ),
386 ( "GL_POINT_SMOOTH_HINT", GLenum, ["ctx->Hint.PointSmooth"], "", NoState, NoExt ),
387 ( "GL_POINT_SIZE_MIN_EXT", GLfloat, ["ctx->Point.MinSize"], "", NoState, NoExt ),
388 ( "GL_POINT_SIZE_MAX_EXT", GLfloat, ["ctx->Point.MaxSize"], "", NoState, NoExt ),
389 ( "GL_POINT_FADE_THRESHOLD_SIZE_EXT", GLfloat,
390 ["ctx->Point.Threshold"], "", NoState, NoExt ),
391 ( "GL_DISTANCE_ATTENUATION_EXT", GLfloat,
392 ["ctx->Point.Params[0]",
393 "ctx->Point.Params[1]",
394 "ctx->Point.Params[2]"], "", NoState, NoExt ),
395 ( "GL_POLYGON_MODE", GLenum,
396 ["ctx->Polygon.FrontMode",
397 "ctx->Polygon.BackMode"], "", NoState, NoExt ),
398 ( "GL_POLYGON_OFFSET_BIAS_EXT", GLfloat, ["ctx->Polygon.OffsetUnits"], "", NoState, NoExt ),
399 ( "GL_POLYGON_OFFSET_FACTOR", GLfloat, ["ctx->Polygon.OffsetFactor "], "", NoState, NoExt ),
400 ( "GL_POLYGON_OFFSET_UNITS", GLfloat, ["ctx->Polygon.OffsetUnits "], "", NoState, NoExt ),
401 ( "GL_POLYGON_OFFSET_POINT", GLboolean, ["ctx->Polygon.OffsetPoint"], "", NoState, NoExt ),
402 ( "GL_POLYGON_OFFSET_LINE", GLboolean, ["ctx->Polygon.OffsetLine"], "", NoState, NoExt ),
403 ( "GL_POLYGON_OFFSET_FILL", GLboolean, ["ctx->Polygon.OffsetFill"], "", NoState, NoExt ),
404 ( "GL_POLYGON_SMOOTH", GLboolean, ["ctx->Polygon.SmoothFlag"], "", NoState, NoExt ),
405 ( "GL_POLYGON_SMOOTH_HINT", GLenum, ["ctx->Hint.PolygonSmooth"], "", NoState, NoExt ),
406 ( "GL_POLYGON_STIPPLE", GLboolean, ["ctx->Polygon.StippleFlag"], "", NoState, NoExt ),
407 ( "GL_PROJECTION_MATRIX", GLfloat,
408 [ "matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
409 "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
410 "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
411 "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
412 "const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;", NoState, NoExt ),
413 ( "GL_PROJECTION_STACK_DEPTH", GLint,
414 ["ctx->ProjectionMatrixStack.Depth + 1"], "", NoState, NoExt ),
415 ( "GL_READ_BUFFER", GLenum, ["ctx->ReadBuffer->ColorReadBuffer"], "", NoState, NoExt ),
416 ( "GL_RED_BIAS", GLfloat, ["ctx->Pixel.RedBias"], "", NoState, NoExt ),
417 ( "GL_RED_BITS", GLint, ["ctx->DrawBuffer->Visual.redBits"], "", "_NEW_BUFFERS", NoExt ),
418 ( "GL_RED_SCALE", GLfloat, ["ctx->Pixel.RedScale"], "", NoState, NoExt ),
419 ( "GL_RENDER_MODE", GLenum, ["ctx->RenderMode"], "", NoState, NoExt ),
420 ( "GL_RESCALE_NORMAL", GLboolean,
421 ["ctx->Transform.RescaleNormals"], "", NoState, NoExt ),
422 ( "GL_RGBA_MODE", GLboolean, ["GL_TRUE"],
423 "", NoState, NoExt ),
424 ( "GL_SCISSOR_BOX", GLint,
425 ["ctx->Scissor.X",
426 "ctx->Scissor.Y",
427 "ctx->Scissor.Width",
428 "ctx->Scissor.Height"], "", NoState, NoExt ),
429 ( "GL_SCISSOR_TEST", GLboolean, ["ctx->Scissor.Enabled"], "", NoState, NoExt ),
430 ( "GL_SELECTION_BUFFER_SIZE", GLint, ["ctx->Select.BufferSize"], "", NoState, NoExt ),
431 ( "GL_SHADE_MODEL", GLenum, ["ctx->Light.ShadeModel"], "", NoState, NoExt ),
432 ( "GL_SHARED_TEXTURE_PALETTE_EXT", GLboolean,
433 ["ctx->Texture.SharedPalette"], "", NoState, NoExt ),
434 ( "GL_STENCIL_BITS", GLint, ["ctx->DrawBuffer->Visual.stencilBits"], "", NoState, NoExt ),
435 ( "GL_STENCIL_CLEAR_VALUE", GLint, ["ctx->Stencil.Clear"], "", NoState, NoExt ),
436 ( "GL_STENCIL_FAIL", GLenum,
437 ["ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
438 ( "GL_STENCIL_FUNC", GLenum,
439 ["ctx->Stencil.Function[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
440 ( "GL_STENCIL_PASS_DEPTH_FAIL", GLenum,
441 ["ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
442 ( "GL_STENCIL_PASS_DEPTH_PASS", GLenum,
443 ["ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
444 ( "GL_STENCIL_REF", GLint,
445 ["ctx->Stencil.Ref[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
446 ( "GL_STENCIL_TEST", GLboolean, ["ctx->Stencil.Enabled"], "", NoState, NoExt ),
447 ( "GL_STENCIL_VALUE_MASK", GLint,
448 ["ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
449 ( "GL_STENCIL_WRITEMASK", GLint,
450 ["ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
451 ( "GL_STEREO", GLboolean, ["ctx->DrawBuffer->Visual.stereoMode"],
452 "", NoState, NoExt ),
453 ( "GL_SUBPIXEL_BITS", GLint, ["ctx->Const.SubPixelBits"], "", NoState, NoExt ),
454 ( "GL_TEXTURE_1D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_1D)"], "", NoState, NoExt ),
455 ( "GL_TEXTURE_2D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D)"], "", NoState, NoExt ),
456 ( "GL_TEXTURE_3D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_3D)"], "", NoState, NoExt ),
457 ( "GL_TEXTURE_1D_ARRAY_EXT", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)"], "", NoState, ["MESA_texture_array"] ),
458 ( "GL_TEXTURE_2D_ARRAY_EXT", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)"], "", NoState, ["MESA_texture_array"] ),
459 ( "GL_TEXTURE_BINDING_1D", GLint,
460 ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name"], "", NoState, NoExt ),
461 ( "GL_TEXTURE_BINDING_2D", GLint,
462 ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name"], "", NoState, NoExt ),
463 ( "GL_TEXTURE_BINDING_3D", GLint,
464 ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name"], "", NoState, NoExt ),
465 ( "GL_TEXTURE_BINDING_1D_ARRAY_EXT", GLint,
466 ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name"], "", NoState, ["MESA_texture_array"] ),
467 ( "GL_TEXTURE_BINDING_2D_ARRAY_EXT", GLint,
468 ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name"], "", NoState, ["MESA_texture_array"] ),
469 ( "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT", GLint,
470 ["ctx->Const.MaxArrayTextureLayers"], "", NoState, ["MESA_texture_array"] ),
471 ( "GL_TEXTURE_GEN_S", GLboolean,
472 ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)"], "", NoState, NoExt ),
473 ( "GL_TEXTURE_GEN_T", GLboolean,
474 ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0)"], "", NoState, NoExt ),
475 ( "GL_TEXTURE_GEN_R", GLboolean,
476 ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0)"], "", NoState, NoExt ),
477 ( "GL_TEXTURE_GEN_Q", GLboolean,
478 ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0)"], "", NoState, NoExt ),
479 ( "GL_TEXTURE_MATRIX", GLfloat,
480 ["matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
481 "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
482 "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
483 "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
484 """const GLfloat *matrix;
485 const GLuint unit = ctx->Texture.CurrentUnit;
486 if (unit >= ctx->Const.MaxTextureCoordUnits) {
487 _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
488 unit);
489 return;
490 }
491 matrix = ctx->TextureMatrixStack[unit].Top->m;""",
492 NoState, NoExt ),
493 ( "GL_TEXTURE_STACK_DEPTH", GLint,
494 ["ctx->TextureMatrixStack[unit].Depth + 1"],
495 """const GLuint unit = ctx->Texture.CurrentUnit;
496 if (unit >= ctx->Const.MaxTextureCoordUnits) {
497 _mesa_error(ctx, GL_INVALID_OPERATION,
498 "glGet(texture stack depth, unit %u)", unit);
499 return;
500 }""",
501 NoState, NoExt ),
502 ( "GL_UNPACK_ALIGNMENT", GLint, ["ctx->Unpack.Alignment"], "", NoState, NoExt ),
503 ( "GL_UNPACK_LSB_FIRST", GLboolean, ["ctx->Unpack.LsbFirst"], "", NoState, NoExt ),
504 ( "GL_UNPACK_ROW_LENGTH", GLint, ["ctx->Unpack.RowLength"], "", NoState, NoExt ),
505 ( "GL_UNPACK_SKIP_PIXELS", GLint, ["ctx->Unpack.SkipPixels"], "", NoState, NoExt ),
506 ( "GL_UNPACK_SKIP_ROWS", GLint, ["ctx->Unpack.SkipRows"], "", NoState, NoExt ),
507 ( "GL_UNPACK_SWAP_BYTES", GLboolean, ["ctx->Unpack.SwapBytes"], "", NoState, NoExt ),
508 ( "GL_UNPACK_SKIP_IMAGES_EXT", GLint, ["ctx->Unpack.SkipImages"], "", NoState, NoExt ),
509 ( "GL_UNPACK_IMAGE_HEIGHT_EXT", GLint, ["ctx->Unpack.ImageHeight"], "", NoState, NoExt ),
510 ( "GL_UNPACK_CLIENT_STORAGE_APPLE", GLboolean, ["ctx->Unpack.ClientStorage"], "", NoState, NoExt ),
511 ( "GL_VIEWPORT", GLint, [ "ctx->Viewport.X", "ctx->Viewport.Y",
512 "ctx->Viewport.Width", "ctx->Viewport.Height" ], "", NoState, NoExt ),
513 ( "GL_ZOOM_X", GLfloat, ["ctx->Pixel.ZoomX"], "", NoState, NoExt ),
514 ( "GL_ZOOM_Y", GLfloat, ["ctx->Pixel.ZoomY"], "", NoState, NoExt ),
515
516 # Vertex arrays
517 ( "GL_VERTEX_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Vertex.Enabled"], "", NoState, NoExt ),
518 ( "GL_VERTEX_ARRAY_SIZE", GLint, ["ctx->Array.ArrayObj->Vertex.Size"], "", NoState, NoExt ),
519 ( "GL_VERTEX_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Vertex.Type"], "", NoState, NoExt ),
520 ( "GL_VERTEX_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Vertex.Stride"], "", NoState, NoExt ),
521 ( "GL_VERTEX_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
522 ( "GL_NORMAL_ARRAY", GLenum, ["ctx->Array.ArrayObj->Normal.Enabled"], "", NoState, NoExt ),
523 ( "GL_NORMAL_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Normal.Type"], "", NoState, NoExt ),
524 ( "GL_NORMAL_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Normal.Stride"], "", NoState, NoExt ),
525 ( "GL_NORMAL_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
526 ( "GL_COLOR_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Color.Enabled"], "", NoState, NoExt ),
527 ( "GL_COLOR_ARRAY_SIZE", GLint, ["ctx->Array.ArrayObj->Color.Size"], "", NoState, NoExt ),
528 ( "GL_COLOR_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Color.Type"], "", NoState, NoExt ),
529 ( "GL_COLOR_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Color.Stride"], "", NoState, NoExt ),
530 ( "GL_COLOR_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
531 ( "GL_INDEX_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Index.Enabled"], "", NoState, NoExt ),
532 ( "GL_INDEX_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Index.Type"], "", NoState, NoExt ),
533 ( "GL_INDEX_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Index.Stride"], "", NoState, NoExt ),
534 ( "GL_INDEX_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
535 ( "GL_TEXTURE_COORD_ARRAY", GLboolean,
536 ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled"], "", NoState, NoExt ),
537 ( "GL_TEXTURE_COORD_ARRAY_SIZE", GLint,
538 ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size"], "", NoState, NoExt ),
539 ( "GL_TEXTURE_COORD_ARRAY_TYPE", GLenum,
540 ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type"], "", NoState, NoExt ),
541 ( "GL_TEXTURE_COORD_ARRAY_STRIDE", GLint,
542 ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride"], "", NoState, NoExt ),
543 ( "GL_TEXTURE_COORD_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
544 ( "GL_EDGE_FLAG_ARRAY", GLboolean, ["ctx->Array.ArrayObj->EdgeFlag.Enabled"], "", NoState, NoExt ),
545 ( "GL_EDGE_FLAG_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->EdgeFlag.Stride"], "", NoState, NoExt ),
546 ( "GL_EDGE_FLAG_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
547
548 # GL_ARB_multitexture
549 ( "GL_MAX_TEXTURE_UNITS_ARB", GLint,
550 ["ctx->Const.MaxTextureUnits"], "", NoState, ["ARB_multitexture"] ),
551 ( "GL_ACTIVE_TEXTURE_ARB", GLint,
552 [ "GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit"], "", NoState, ["ARB_multitexture"] ),
553 ( "GL_CLIENT_ACTIVE_TEXTURE_ARB", GLint,
554 ["GL_TEXTURE0_ARB + ctx->Array.ActiveTexture"], "", NoState, ["ARB_multitexture"] ),
555
556 # GL_ARB_texture_cube_map
557 ( "GL_TEXTURE_CUBE_MAP_ARB", GLboolean,
558 ["_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)"], "", NoState, ["ARB_texture_cube_map"] ),
559 ( "GL_TEXTURE_BINDING_CUBE_MAP_ARB", GLint,
560 ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name"],
561 "", NoState, ["ARB_texture_cube_map"] ),
562 ( "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", GLint,
563 ["(1 << (ctx->Const.MaxCubeTextureLevels - 1))"],
564 "", NoState, ["ARB_texture_cube_map"]),
565
566 # GL_ARB_texture_compression */
567 ( "GL_TEXTURE_COMPRESSION_HINT_ARB", GLint,
568 ["ctx->Hint.TextureCompression"], "", NoState, NoExt ),
569 ( "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", GLint,
570 ["_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)"],
571 "", NoState, NoExt ),
572 ( "GL_COMPRESSED_TEXTURE_FORMATS_ARB", GLenum,
573 [],
574 """GLint formats[100];
575 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
576 ASSERT(n <= 100);
577 for (i = 0; i < n; i++)
578 params[i] = CONVERSION(formats[i]);""",
579 NoState, NoExt ),
580
581 # GL_EXT_compiled_vertex_array
582 ( "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", GLint, ["ctx->Array.LockFirst"],
583 "", NoState, ["EXT_compiled_vertex_array"] ),
584 ( "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", GLint, ["ctx->Array.LockCount"],
585 "", NoState, ["EXT_compiled_vertex_array"] ),
586
587 # GL_ARB_transpose_matrix
588 ( "GL_TRANSPOSE_COLOR_MATRIX_ARB", GLfloat,
589 ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
590 "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
591 "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
592 "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
593 "const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;",
594 NoState, NoExt ),
595 ( "GL_TRANSPOSE_MODELVIEW_MATRIX_ARB", GLfloat,
596 ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
597 "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
598 "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
599 "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
600 "const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;",
601 NoState, NoExt ),
602 ( "GL_TRANSPOSE_PROJECTION_MATRIX_ARB", GLfloat,
603 ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
604 "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
605 "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
606 "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
607 "const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;",
608 NoState, NoExt ),
609 ( "GL_TRANSPOSE_TEXTURE_MATRIX_ARB", GLfloat,
610 ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
611 "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
612 "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
613 "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
614 "const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;",
615 NoState, NoExt ),
616
617 # GL_SGI_color_matrix (also in 1.2 imaging)
618 ( "GL_COLOR_MATRIX_SGI", GLfloat,
619 ["matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
620 "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
621 "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
622 "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
623 "const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;",
624 NoState, NoExt ),
625 ( "GL_COLOR_MATRIX_STACK_DEPTH_SGI", GLint,
626 ["ctx->ColorMatrixStack.Depth + 1"], "", NoState, NoExt ),
627 ( "GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI", GLint,
628 ["MAX_COLOR_STACK_DEPTH"], "", NoState, NoExt ),
629 ( "GL_POST_COLOR_MATRIX_RED_SCALE_SGI", GLfloat,
630 ["ctx->Pixel.PostColorMatrixScale[0]"], "", NoState, NoExt ),
631 ( "GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI", GLfloat,
632 ["ctx->Pixel.PostColorMatrixScale[1]"], "", NoState, NoExt ),
633 ( "GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI", GLfloat,
634 ["ctx->Pixel.PostColorMatrixScale[2]"], "", NoState, NoExt ),
635 ( "GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI", GLfloat,
636 ["ctx->Pixel.PostColorMatrixScale[3]"], "", NoState, NoExt ),
637 ( "GL_POST_COLOR_MATRIX_RED_BIAS_SGI", GLfloat,
638 ["ctx->Pixel.PostColorMatrixBias[0]"], "", NoState, NoExt ),
639 ( "GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI", GLfloat,
640 ["ctx->Pixel.PostColorMatrixBias[1]"], "", NoState, NoExt ),
641 ( "GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI", GLfloat,
642 ["ctx->Pixel.PostColorMatrixBias[2]"], "", NoState, NoExt ),
643 ( "GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI", GLfloat,
644 ["ctx->Pixel.PostColorMatrixBias[3]"], "", NoState, NoExt ),
645
646 # GL_EXT_convolution (also in 1.2 imaging)
647 ( "GL_CONVOLUTION_1D_EXT", GLboolean,
648 ["ctx->Pixel.Convolution1DEnabled"], "", NoState, ["EXT_convolution"] ),
649 ( "GL_CONVOLUTION_2D_EXT", GLboolean,
650 ["ctx->Pixel.Convolution2DEnabled"], "", NoState, ["EXT_convolution"] ),
651 ( "GL_SEPARABLE_2D_EXT", GLboolean,
652 ["ctx->Pixel.Separable2DEnabled"], "", NoState, ["EXT_convolution"] ),
653 ( "GL_POST_CONVOLUTION_RED_SCALE_EXT", GLfloat,
654 ["ctx->Pixel.PostConvolutionScale[0]"], "", NoState, ["EXT_convolution"] ),
655 ( "GL_POST_CONVOLUTION_GREEN_SCALE_EXT", GLfloat,
656 ["ctx->Pixel.PostConvolutionScale[1]"], "", NoState, ["EXT_convolution"] ),
657 ( "GL_POST_CONVOLUTION_BLUE_SCALE_EXT", GLfloat,
658 ["ctx->Pixel.PostConvolutionScale[2]"], "", NoState, ["EXT_convolution"] ),
659 ( "GL_POST_CONVOLUTION_ALPHA_SCALE_EXT", GLfloat,
660 ["ctx->Pixel.PostConvolutionScale[3]"], "", NoState, ["EXT_convolution"] ),
661 ( "GL_POST_CONVOLUTION_RED_BIAS_EXT", GLfloat,
662 ["ctx->Pixel.PostConvolutionBias[0]"], "", NoState, ["EXT_convolution"] ),
663 ( "GL_POST_CONVOLUTION_GREEN_BIAS_EXT", GLfloat,
664 ["ctx->Pixel.PostConvolutionBias[1]"], "", NoState, ["EXT_convolution"] ),
665 ( "GL_POST_CONVOLUTION_BLUE_BIAS_EXT", GLfloat,
666 ["ctx->Pixel.PostConvolutionBias[2]"], "", NoState, ["EXT_convolution"] ),
667 ( "GL_POST_CONVOLUTION_ALPHA_BIAS_EXT", GLfloat,
668 ["ctx->Pixel.PostConvolutionBias[3]"], "", NoState, ["EXT_convolution"] ),
669
670 # GL_EXT_histogram / GL_ARB_imaging
671 ( "GL_HISTOGRAM", GLboolean,
672 [ "ctx->Pixel.HistogramEnabled" ], "", NoState, ["EXT_histogram"] ),
673 ( "GL_MINMAX", GLboolean,
674 [ "ctx->Pixel.MinMaxEnabled" ], "", NoState, ["EXT_histogram"] ),
675
676 # GL_SGI_color_table / GL_ARB_imaging
677 ( "GL_COLOR_TABLE_SGI", GLboolean,
678 ["ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]"], "",
679 NoState, ["SGI_color_table"] ),
680 ( "GL_POST_CONVOLUTION_COLOR_TABLE_SGI", GLboolean,
681 ["ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]"], "",
682 NoState, ["SGI_color_table"] ),
683 ( "GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI", GLboolean,
684 ["ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]"], "",
685 NoState, ["SGI_color_table"] ),
686
687 # GL_SGI_texture_color_table
688 ( "GL_TEXTURE_COLOR_TABLE_SGI", GLboolean,
689 ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled"],
690 "", NoState, ["SGI_texture_color_table"] ),
691
692 # GL_EXT_secondary_color
693 ( "GL_COLOR_SUM_EXT", GLboolean,
694 ["ctx->Fog.ColorSumEnabled"], "", NoState,
695 ["EXT_secondary_color", "ARB_vertex_program"] ),
696 ( "GL_CURRENT_SECONDARY_COLOR_EXT", GLfloatN,
697 ["ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]",
698 "ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]",
699 "ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]",
700 "ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]"],
701 "", FlushCurrent, ["EXT_secondary_color"] ),
702 ( "GL_SECONDARY_COLOR_ARRAY_EXT", GLboolean,
703 ["ctx->Array.ArrayObj->SecondaryColor.Enabled"],
704 "", NoState, ["EXT_secondary_color"] ),
705 ( "GL_SECONDARY_COLOR_ARRAY_TYPE_EXT", GLenum,
706 ["ctx->Array.ArrayObj->SecondaryColor.Type"],
707 "", NoState, ["EXT_secondary_color"] ),
708 ( "GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT", GLint,
709 ["ctx->Array.ArrayObj->SecondaryColor.Stride"],
710 "", NoState, ["EXT_secondary_color"] ),
711 ( "GL_SECONDARY_COLOR_ARRAY_SIZE_EXT", GLint,
712 ["ctx->Array.ArrayObj->SecondaryColor.Size"],
713 "", NoState, ["EXT_secondary_color"] ),
714
715 # GL_EXT_fog_coord
716 ( "GL_CURRENT_FOG_COORDINATE_EXT", GLfloat,
717 ["ctx->Current.Attrib[VERT_ATTRIB_FOG][0]"],
718 "", FlushCurrent, ["EXT_fog_coord"] ),
719 ( "GL_FOG_COORDINATE_ARRAY_EXT", GLboolean,
720 ["ctx->Array.ArrayObj->FogCoord.Enabled"],
721 "", NoState, ["EXT_fog_coord"] ),
722 ( "GL_FOG_COORDINATE_ARRAY_TYPE_EXT", GLenum,
723 ["ctx->Array.ArrayObj->FogCoord.Type"],
724 "", NoState, ["EXT_fog_coord"] ),
725 ( "GL_FOG_COORDINATE_ARRAY_STRIDE_EXT", GLint,
726 ["ctx->Array.ArrayObj->FogCoord.Stride"],
727 "", NoState, ["EXT_fog_coord"] ),
728 ( "GL_FOG_COORDINATE_SOURCE_EXT", GLenum,
729 ["ctx->Fog.FogCoordinateSource"],
730 "", NoState, ["EXT_fog_coord"] ),
731
732 # GL_EXT_texture_lod_bias
733 ( "GL_MAX_TEXTURE_LOD_BIAS_EXT", GLfloat,
734 ["ctx->Const.MaxTextureLodBias"], "", NoState, ["EXT_texture_lod_bias"]),
735
736 # GL_EXT_texture_filter_anisotropic
737 ( "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", GLfloat,
738 ["ctx->Const.MaxTextureMaxAnisotropy"],
739 "", NoState, ["EXT_texture_filter_anisotropic"]),
740
741 # GL_ARB_multisample
742 ( "GL_MULTISAMPLE_ARB", GLboolean,
743 ["ctx->Multisample.Enabled"], "", NoState, NoExt ),
744 ( "GL_SAMPLE_ALPHA_TO_COVERAGE_ARB", GLboolean,
745 ["ctx->Multisample.SampleAlphaToCoverage"], "", NoState, NoExt ),
746 ( "GL_SAMPLE_ALPHA_TO_ONE_ARB", GLboolean,
747 ["ctx->Multisample.SampleAlphaToOne"], "", NoState, NoExt ),
748 ( "GL_SAMPLE_COVERAGE_ARB", GLboolean,
749 ["ctx->Multisample.SampleCoverage"], "", NoState, NoExt ),
750 ( "GL_SAMPLE_COVERAGE_VALUE_ARB", GLfloat,
751 ["ctx->Multisample.SampleCoverageValue"], "", NoState, NoExt ),
752 ( "GL_SAMPLE_COVERAGE_INVERT_ARB", GLboolean,
753 ["ctx->Multisample.SampleCoverageInvert"], "", NoState, NoExt ),
754 ( "GL_SAMPLE_BUFFERS_ARB", GLint,
755 ["ctx->DrawBuffer->Visual.sampleBuffers"], "", NoState, NoExt ),
756 ( "GL_SAMPLES_ARB", GLint,
757 ["ctx->DrawBuffer->Visual.samples"], "", NoState, NoExt ),
758
759 # GL_IBM_rasterpos_clip
760 ( "GL_RASTER_POSITION_UNCLIPPED_IBM", GLboolean,
761 ["ctx->Transform.RasterPositionUnclipped"],
762 "", NoState, ["IBM_rasterpos_clip"] ),
763
764 # GL_NV_point_sprite
765 ( "GL_POINT_SPRITE_NV", GLboolean, ["ctx->Point.PointSprite"], # == GL_POINT_SPRITE_ARB
766 "", NoState, ["NV_point_sprite", "ARB_point_sprite"] ),
767 ( "GL_POINT_SPRITE_R_MODE_NV", GLenum, ["ctx->Point.SpriteRMode"],
768 "", NoState, ["NV_point_sprite"] ),
769 ( "GL_POINT_SPRITE_COORD_ORIGIN", GLenum, ["ctx->Point.SpriteOrigin"],
770 "", NoState, ["NV_point_sprite", "ARB_point_sprite"] ),
771
772 # GL_SGIS_generate_mipmap
773 ( "GL_GENERATE_MIPMAP_HINT_SGIS", GLenum, ["ctx->Hint.GenerateMipmap"],
774 "", NoState, ["SGIS_generate_mipmap"] ),
775
776 # GL_NV_vertex_program
777 ( "GL_VERTEX_PROGRAM_BINDING_NV", GLint,
778 ["(ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0)"],
779 "", NoState, ["NV_vertex_program"] ),
780 ( "GL_VERTEX_ATTRIB_ARRAY0_NV", GLboolean,
781 ["ctx->Array.ArrayObj->VertexAttrib[0].Enabled"],
782 "", NoState, ["NV_vertex_program"] ),
783 ( "GL_VERTEX_ATTRIB_ARRAY1_NV", GLboolean,
784 ["ctx->Array.ArrayObj->VertexAttrib[1].Enabled"],
785 "", NoState, ["NV_vertex_program"] ),
786 ( "GL_VERTEX_ATTRIB_ARRAY2_NV", GLboolean,
787 ["ctx->Array.ArrayObj->VertexAttrib[2].Enabled"],
788 "", NoState, ["NV_vertex_program"] ),
789 ( "GL_VERTEX_ATTRIB_ARRAY3_NV", GLboolean,
790 ["ctx->Array.ArrayObj->VertexAttrib[3].Enabled"],
791 "", NoState, ["NV_vertex_program"] ),
792 ( "GL_VERTEX_ATTRIB_ARRAY4_NV", GLboolean,
793 ["ctx->Array.ArrayObj->VertexAttrib[4].Enabled"],
794 "", NoState, ["NV_vertex_program"] ),
795 ( "GL_VERTEX_ATTRIB_ARRAY5_NV", GLboolean,
796 ["ctx->Array.ArrayObj->VertexAttrib[5].Enabled"],
797 "", NoState, ["NV_vertex_program"] ),
798 ( "GL_VERTEX_ATTRIB_ARRAY6_NV", GLboolean,
799 ["ctx->Array.ArrayObj->VertexAttrib[6].Enabled"],
800 "", NoState, ["NV_vertex_program"] ),
801 ( "GL_VERTEX_ATTRIB_ARRAY7_NV", GLboolean,
802 ["ctx->Array.ArrayObj->VertexAttrib[7].Enabled"],
803 "", NoState, ["NV_vertex_program"] ),
804 ( "GL_VERTEX_ATTRIB_ARRAY8_NV", GLboolean,
805 ["ctx->Array.ArrayObj->VertexAttrib[8].Enabled"],
806 "", NoState, ["NV_vertex_program"] ),
807 ( "GL_VERTEX_ATTRIB_ARRAY9_NV", GLboolean,
808 ["ctx->Array.ArrayObj->VertexAttrib[9].Enabled"],
809 "", NoState, ["NV_vertex_program"] ),
810 ( "GL_VERTEX_ATTRIB_ARRAY10_NV", GLboolean,
811 ["ctx->Array.ArrayObj->VertexAttrib[10].Enabled"],
812 "", NoState, ["NV_vertex_program"] ),
813 ( "GL_VERTEX_ATTRIB_ARRAY11_NV", GLboolean,
814 ["ctx->Array.ArrayObj->VertexAttrib[11].Enabled"],
815 "", NoState, ["NV_vertex_program"] ),
816 ( "GL_VERTEX_ATTRIB_ARRAY12_NV", GLboolean,
817 ["ctx->Array.ArrayObj->VertexAttrib[12].Enabled"],
818 "", NoState, ["NV_vertex_program"] ),
819 ( "GL_VERTEX_ATTRIB_ARRAY13_NV", GLboolean,
820 ["ctx->Array.ArrayObj->VertexAttrib[13].Enabled"],
821 "", NoState, ["NV_vertex_program"] ),
822 ( "GL_VERTEX_ATTRIB_ARRAY14_NV", GLboolean,
823 ["ctx->Array.ArrayObj->VertexAttrib[14].Enabled"],
824 "", NoState, ["NV_vertex_program"] ),
825 ( "GL_VERTEX_ATTRIB_ARRAY15_NV", GLboolean,
826 ["ctx->Array.ArrayObj->VertexAttrib[15].Enabled"],
827 "", NoState, ["NV_vertex_program"] ),
828 ( "GL_MAP1_VERTEX_ATTRIB0_4_NV", GLboolean,
829 ["ctx->Eval.Map1Attrib[0]"], "", NoState, ["NV_vertex_program"] ),
830 ( "GL_MAP1_VERTEX_ATTRIB1_4_NV", GLboolean,
831 ["ctx->Eval.Map1Attrib[1]"], "", NoState, ["NV_vertex_program"] ),
832 ( "GL_MAP1_VERTEX_ATTRIB2_4_NV", GLboolean,
833 ["ctx->Eval.Map1Attrib[2]"], "", NoState, ["NV_vertex_program"] ),
834 ( "GL_MAP1_VERTEX_ATTRIB3_4_NV", GLboolean,
835 ["ctx->Eval.Map1Attrib[3]"], "", NoState, ["NV_vertex_program"] ),
836 ( "GL_MAP1_VERTEX_ATTRIB4_4_NV", GLboolean,
837 ["ctx->Eval.Map1Attrib[4]"], "", NoState, ["NV_vertex_program"] ),
838 ( "GL_MAP1_VERTEX_ATTRIB5_4_NV", GLboolean,
839 ["ctx->Eval.Map1Attrib[5]"], "", NoState, ["NV_vertex_program"] ),
840 ( "GL_MAP1_VERTEX_ATTRIB6_4_NV", GLboolean,
841 ["ctx->Eval.Map1Attrib[6]"], "", NoState, ["NV_vertex_program"] ),
842 ( "GL_MAP1_VERTEX_ATTRIB7_4_NV", GLboolean,
843 ["ctx->Eval.Map1Attrib[7]"], "", NoState, ["NV_vertex_program"] ),
844 ( "GL_MAP1_VERTEX_ATTRIB8_4_NV", GLboolean,
845 ["ctx->Eval.Map1Attrib[8]"], "", NoState, ["NV_vertex_program"] ),
846 ( "GL_MAP1_VERTEX_ATTRIB9_4_NV", GLboolean,
847 ["ctx->Eval.Map1Attrib[9]"], "", NoState, ["NV_vertex_program"] ),
848 ( "GL_MAP1_VERTEX_ATTRIB10_4_NV", GLboolean,
849 ["ctx->Eval.Map1Attrib[10]"], "", NoState, ["NV_vertex_program"] ),
850 ( "GL_MAP1_VERTEX_ATTRIB11_4_NV", GLboolean,
851 ["ctx->Eval.Map1Attrib[11]"], "", NoState, ["NV_vertex_program"] ),
852 ( "GL_MAP1_VERTEX_ATTRIB12_4_NV", GLboolean,
853 ["ctx->Eval.Map1Attrib[12]"], "", NoState, ["NV_vertex_program"] ),
854 ( "GL_MAP1_VERTEX_ATTRIB13_4_NV", GLboolean,
855 ["ctx->Eval.Map1Attrib[13]"], "", NoState, ["NV_vertex_program"] ),
856 ( "GL_MAP1_VERTEX_ATTRIB14_4_NV", GLboolean,
857 ["ctx->Eval.Map1Attrib[14]"], "", NoState, ["NV_vertex_program"] ),
858 ( "GL_MAP1_VERTEX_ATTRIB15_4_NV", GLboolean,
859 ["ctx->Eval.Map1Attrib[15]"], "", NoState, ["NV_vertex_program"] ),
860
861 # GL_NV_fragment_program
862 ( "GL_FRAGMENT_PROGRAM_NV", GLboolean,
863 ["ctx->FragmentProgram.Enabled"], "", NoState, ["NV_fragment_program"] ),
864 ( "GL_FRAGMENT_PROGRAM_BINDING_NV", GLint,
865 ["ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0"],
866 "", NoState, ["NV_fragment_program"] ),
867 ( "GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV", GLint,
868 ["MAX_NV_FRAGMENT_PROGRAM_PARAMS"], "", NoState, ["NV_fragment_program"] ),
869
870 # GL_NV_texture_rectangle
871 ( "GL_TEXTURE_RECTANGLE_NV", GLboolean,
872 ["_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV)"], "", NoState, ["NV_texture_rectangle"] ),
873 ( "GL_TEXTURE_BINDING_RECTANGLE_NV", GLint,
874 ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name"],
875 "", NoState, ["NV_texture_rectangle"] ),
876 ( "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV", GLint,
877 ["ctx->Const.MaxTextureRectSize"], "", NoState, ["NV_texture_rectangle"] ),
878
879 # GL_EXT_stencil_two_side
880 ( "GL_STENCIL_TEST_TWO_SIDE_EXT", GLboolean,
881 ["ctx->Stencil.TestTwoSide"], "", NoState, ["EXT_stencil_two_side"] ),
882 ( "GL_ACTIVE_STENCIL_FACE_EXT", GLenum,
883 ["ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT"],
884 "", NoState, ["EXT_stencil_two_side"] ),
885
886 # GL_NV_light_max_exponent
887 ( "GL_MAX_SHININESS_NV", GLfloat,
888 ["ctx->Const.MaxShininess"], "", NoState, ["NV_light_max_exponent"] ),
889 ( "GL_MAX_SPOT_EXPONENT_NV", GLfloat,
890 ["ctx->Const.MaxSpotExponent"], "", NoState, ["NV_light_max_exponent"] ),
891
892 # GL_ARB_vertex_buffer_object
893 ( "GL_ARRAY_BUFFER_BINDING_ARB", GLint,
894 ["ctx->Array.ArrayBufferObj->Name"], "", NoState, NoExt ),
895 ( "GL_VERTEX_ARRAY_BUFFER_BINDING_ARB", GLint,
896 ["ctx->Array.ArrayObj->Vertex.BufferObj->Name"], "", NoState, NoExt ),
897 ( "GL_NORMAL_ARRAY_BUFFER_BINDING_ARB", GLint,
898 ["ctx->Array.ArrayObj->Normal.BufferObj->Name"], "", NoState, NoExt ),
899 ( "GL_COLOR_ARRAY_BUFFER_BINDING_ARB", GLint,
900 ["ctx->Array.ArrayObj->Color.BufferObj->Name"], "", NoState, NoExt ),
901 ( "GL_INDEX_ARRAY_BUFFER_BINDING_ARB", GLint,
902 ["ctx->Array.ArrayObj->Index.BufferObj->Name"], "", NoState, NoExt ),
903 ( "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB", GLint,
904 ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name"],
905 "", NoState, NoExt ),
906 ( "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB", GLint,
907 ["ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name"], "", NoState, NoExt ),
908 ( "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB", GLint,
909 ["ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name"],
910 "", NoState, NoExt ),
911 ( "GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB", GLint,
912 ["ctx->Array.ArrayObj->FogCoord.BufferObj->Name"],
913 "", NoState, NoExt ),
914 # GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB - not supported
915 ( "GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB", GLint,
916 ["ctx->Array.ElementArrayBufferObj->Name"],
917 "", NoState, NoExt ),
918
919 # GL_EXT_pixel_buffer_object
920 ( "GL_PIXEL_PACK_BUFFER_BINDING_EXT", GLint,
921 ["ctx->Pack.BufferObj->Name"], "", NoState, ["EXT_pixel_buffer_object"] ),
922 ( "GL_PIXEL_UNPACK_BUFFER_BINDING_EXT", GLint,
923 ["ctx->Unpack.BufferObj->Name"], "", NoState, ["EXT_pixel_buffer_object"] ),
924
925 # GL_ARB_vertex_program
926 ( "GL_VERTEX_PROGRAM_ARB", GLboolean, # == GL_VERTEX_PROGRAM_NV
927 ["ctx->VertexProgram.Enabled"], "", NoState,
928 ["ARB_vertex_program", "NV_vertex_program"] ),
929 ( "GL_VERTEX_PROGRAM_POINT_SIZE_ARB", GLboolean, # == GL_VERTEX_PROGRAM_POINT_SIZE_NV
930 ["ctx->VertexProgram.PointSizeEnabled"], "", NoState,
931 ["ARB_vertex_program", "NV_vertex_program"] ),
932 ( "GL_VERTEX_PROGRAM_TWO_SIDE_ARB", GLboolean, # == GL_VERTEX_PROGRAM_TWO_SIDE_NV
933 ["ctx->VertexProgram.TwoSideEnabled"], "", NoState,
934 ["ARB_vertex_program", "NV_vertex_program"] ),
935 ( "GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB", GLint, # == GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
936 ["ctx->Const.MaxProgramMatrixStackDepth"], "", NoState,
937 ["ARB_vertex_program", "ARB_fragment_program", "NV_vertex_program"] ),
938 ( "GL_MAX_PROGRAM_MATRICES_ARB", GLint, # == GL_MAX_TRACK_MATRICES_NV
939 ["ctx->Const.MaxProgramMatrices"], "", NoState,
940 ["ARB_vertex_program", "ARB_fragment_program", "NV_vertex_program"] ),
941 ( "GL_CURRENT_MATRIX_STACK_DEPTH_ARB", GLboolean, # == GL_CURRENT_MATRIX_STACK_DEPTH_NV
942 ["ctx->CurrentStack->Depth + 1"], "", NoState,
943 ["ARB_vertex_program", "ARB_fragment_program", "NV_vertex_program"] ),
944 ( "GL_CURRENT_MATRIX_ARB", GLfloat, # == GL_CURRENT_MATRIX_NV
945 ["matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
946 "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
947 "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
948 "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
949 "const GLfloat *matrix = ctx->CurrentStack->Top->m;", NoState,
950 ["ARB_vertex_program", "ARB_fragment_program", "NV_fragment_program"] ),
951 ( "GL_TRANSPOSE_CURRENT_MATRIX_ARB", GLfloat,
952 ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
953 "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
954 "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
955 "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
956 "const GLfloat *matrix = ctx->CurrentStack->Top->m;", NoState,
957 ["ARB_vertex_program", "ARB_fragment_program"] ),
958 ( "GL_MAX_VERTEX_ATTRIBS_ARB", GLint,
959 ["ctx->Const.VertexProgram.MaxAttribs"], "", NoState, ["ARB_vertex_program"] ),
960 ( "GL_PROGRAM_ERROR_POSITION_ARB", GLint, # == GL_PROGRAM_ERROR_POSITION_NV
961 ["ctx->Program.ErrorPos"], "", NoState, ["NV_vertex_program",
962 "ARB_vertex_program", "NV_fragment_program", "ARB_fragment_program"] ),
963
964 # GL_ARB_fragment_program
965 ( "GL_FRAGMENT_PROGRAM_ARB", GLboolean,
966 ["ctx->FragmentProgram.Enabled"], "", NoState, ["ARB_fragment_program"] ),
967 ( "GL_MAX_TEXTURE_COORDS_ARB", GLint, # == GL_MAX_TEXTURE_COORDS_NV
968 ["ctx->Const.MaxTextureCoordUnits"], "", NoState,
969 ["ARB_fragment_program", "NV_fragment_program"] ),
970 ( "GL_MAX_TEXTURE_IMAGE_UNITS_ARB", GLint, # == GL_MAX_TEXTURE_IMAGE_UNITS_NV
971 ["ctx->Const.MaxTextureImageUnits"], "", NoState,
972 ["ARB_fragment_program", "NV_fragment_program"] ),
973
974 # GL_EXT_depth_bounds_test
975 ( "GL_DEPTH_BOUNDS_TEST_EXT", GLboolean,
976 ["ctx->Depth.BoundsTest"], "", NoState, ["EXT_depth_bounds_test"] ),
977 ( "GL_DEPTH_BOUNDS_EXT", GLfloat,
978 ["ctx->Depth.BoundsMin", "ctx->Depth.BoundsMax"],
979 "", NoState, ["EXT_depth_bounds_test"] ),
980
981 # GL_ARB_depth_clamp
982 ( "GL_DEPTH_CLAMP", GLboolean, ["ctx->Transform.DepthClamp"], "",
983 NoState, ["ARB_depth_clamp"] ),
984
985 # GL_ARB_draw_buffers
986 ( "GL_MAX_DRAW_BUFFERS_ARB", GLint,
987 ["ctx->Const.MaxDrawBuffers"], "", NoState, NoExt ),
988 ( "GL_DRAW_BUFFER0_ARB", GLenum,
989 ["ctx->DrawBuffer->ColorDrawBuffer[0]"], "", NoState, NoExt ),
990 ( "GL_DRAW_BUFFER1_ARB", GLenum,
991 ["buffer"],
992 """GLenum buffer;
993 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
994 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
995 return;
996 }
997 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];""", NoState, NoExt ),
998 ( "GL_DRAW_BUFFER2_ARB", GLenum,
999 ["buffer"],
1000 """GLenum buffer;
1001 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1002 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1003 return;
1004 }
1005 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];""", NoState, NoExt ),
1006 ( "GL_DRAW_BUFFER3_ARB", GLenum,
1007 ["buffer"],
1008 """GLenum buffer;
1009 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1010 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1011 return;
1012 }
1013 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];""", NoState, NoExt ),
1014 # XXX Add more GL_DRAW_BUFFERn_ARB entries as needed in the future
1015
1016 # GL_OES_read_format
1017 ( "GL_IMPLEMENTATION_COLOR_READ_TYPE_OES", GLint,
1018 ["_mesa_get_color_read_type(ctx)"], "", "_NEW_BUFFERS", ["OES_read_format"] ),
1019 ( "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", GLint,
1020 ["_mesa_get_color_read_format(ctx)"], "", "_NEW_BUFFERS", ["OES_read_format"] ),
1021
1022 # GL_ATI_fragment_shader
1023 ( "GL_NUM_FRAGMENT_REGISTERS_ATI", GLint, ["6"],
1024 "", NoState, ["ATI_fragment_shader"] ),
1025 ( "GL_NUM_FRAGMENT_CONSTANTS_ATI", GLint, ["8"],
1026 "", NoState, ["ATI_fragment_shader"] ),
1027 ( "GL_NUM_PASSES_ATI", GLint, ["2"],
1028 "", NoState, ["ATI_fragment_shader"] ),
1029 ( "GL_NUM_INSTRUCTIONS_PER_PASS_ATI", GLint, ["8"],
1030 "", NoState, ["ATI_fragment_shader"] ),
1031 ( "GL_NUM_INSTRUCTIONS_TOTAL_ATI", GLint, ["16"],
1032 "", NoState, ["ATI_fragment_shader"] ),
1033 ( "GL_COLOR_ALPHA_PAIRING_ATI", GLboolean, ["GL_TRUE"],
1034 "", NoState, ["ATI_fragment_shader"] ),
1035 ( "GL_NUM_LOOPBACK_COMPONENTS_ATI", GLint, ["3"],
1036 "", NoState, ["ATI_fragment_shader"] ),
1037 ( "GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI", GLint, ["3"],
1038 "", NoState, ["ATI_fragment_shader"] ),
1039
1040 # OpenGL 2.0
1041 ( "GL_STENCIL_BACK_FUNC", GLenum, ["ctx->Stencil.Function[1]"],
1042 "", NoState, NoExt ),
1043 ( "GL_STENCIL_BACK_VALUE_MASK", GLint, ["ctx->Stencil.ValueMask[1]"],
1044 "", NoState, NoExt ),
1045 ( "GL_STENCIL_BACK_WRITEMASK", GLint, ["ctx->Stencil.WriteMask[1]"],
1046 "", NoState, NoExt ),
1047 ( "GL_STENCIL_BACK_REF", GLint, ["ctx->Stencil.Ref[1]"],
1048 "", NoState, NoExt ),
1049 ( "GL_STENCIL_BACK_FAIL", GLenum, ["ctx->Stencil.FailFunc[1]"],
1050 "", NoState, NoExt ),
1051 ( "GL_STENCIL_BACK_PASS_DEPTH_FAIL", GLenum, ["ctx->Stencil.ZFailFunc[1]"],
1052 "", NoState, NoExt ),
1053 ( "GL_STENCIL_BACK_PASS_DEPTH_PASS", GLenum, ["ctx->Stencil.ZPassFunc[1]"],
1054 "", NoState, NoExt ),
1055
1056 # GL_EXT_framebuffer_object
1057 ( "GL_FRAMEBUFFER_BINDING_EXT", GLint, ["ctx->DrawBuffer->Name"], "",
1058 NoState, ["EXT_framebuffer_object"] ),
1059 ( "GL_RENDERBUFFER_BINDING_EXT", GLint,
1060 ["ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0"], "",
1061 NoState, ["EXT_framebuffer_object"] ),
1062 ( "GL_MAX_COLOR_ATTACHMENTS_EXT", GLint,
1063 ["ctx->Const.MaxColorAttachments"], "",
1064 NoState, ["EXT_framebuffer_object"] ),
1065 ( "GL_MAX_RENDERBUFFER_SIZE_EXT", GLint,
1066 ["ctx->Const.MaxRenderbufferSize"], "",
1067 NoState, ["EXT_framebuffer_object"] ),
1068
1069 # GL_EXT_framebuffer_blit
1070 # NOTE: GL_DRAW_FRAMEBUFFER_BINDING_EXT == GL_FRAMEBUFFER_BINDING_EXT
1071 ( "GL_READ_FRAMEBUFFER_BINDING_EXT", GLint, ["ctx->ReadBuffer->Name"], "",
1072 NoState, ["EXT_framebuffer_blit"] ),
1073
1074 # GL_EXT_provoking_vertex
1075 ( "GL_PROVOKING_VERTEX_EXT", GLboolean,
1076 ["ctx->Light.ProvokingVertex"], "", NoState, ["EXT_provoking_vertex"] ),
1077 ( "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT", GLboolean,
1078 ["ctx->Const.QuadsFollowProvokingVertexConvention"], "",
1079 NoState, ["EXT_provoking_vertex"] ),
1080
1081 # GL_ARB_fragment_shader
1082 ( "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", GLint,
1083 ["ctx->Const.FragmentProgram.MaxUniformComponents"], "",
1084 NoState, ["ARB_fragment_shader"] ),
1085 ( "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", GLenum,
1086 ["ctx->Hint.FragmentShaderDerivative"],
1087 "", NoState, ["ARB_fragment_shader"] ),
1088
1089 # GL_ARB_vertex_shader
1090 ( "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", GLint,
1091 ["ctx->Const.VertexProgram.MaxUniformComponents"], "",
1092 NoState, ["ARB_vertex_shader"] ),
1093 ( "GL_MAX_VARYING_FLOATS_ARB", GLint,
1094 ["ctx->Const.MaxVarying * 4"], "", NoState, ["ARB_vertex_shader"] ),
1095 ( "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", GLint,
1096 ["ctx->Const.MaxVertexTextureImageUnits"],
1097 "", NoState, ["ARB_vertex_shader"] ),
1098 ( "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", GLint,
1099 ["ctx->Const.MaxCombinedTextureImageUnits"],
1100 "", NoState, ["ARB_vertex_shader"] ),
1101
1102 # GL_ARB_shader_objects
1103 # Actually, this token isn't part of GL_ARB_shader_objects, but is
1104 # close enough for now.
1105 ( "GL_CURRENT_PROGRAM", GLint,
1106 ["ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0"],
1107 "", NoState, ["ARB_shader_objects"] ),
1108
1109 # GL_ARB_framebuffer_object
1110 ( "GL_MAX_SAMPLES", GLint, ["ctx->Const.MaxSamples"], "",
1111 NoState, ["ARB_framebuffer_object"] ),
1112
1113 # GL_APPLE_vertex_array_object
1114 ( "GL_VERTEX_ARRAY_BINDING_APPLE", GLint, ["ctx->Array.ArrayObj->Name"], "",
1115 NoState, ["APPLE_vertex_array_object"] ),
1116
1117 # GL_ARB_seamless_cube_map
1118 ( "GL_TEXTURE_CUBE_MAP_SEAMLESS", GLboolean, ["ctx->Texture.CubeMapSeamless"], "",
1119 NoState, ["ARB_seamless_cube_map"] ),
1120
1121 # GL_ARB_sync
1122 ( "GL_MAX_SERVER_WAIT_TIMEOUT", GLint64, ["ctx->Const.MaxServerWaitTimeout"], "",
1123 NoState, ["ARB_sync"] ),
1124
1125 # GL_EXT_transform_feedback
1126 ( "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", GLint,
1127 ["ctx->TransformFeedback.CurrentBuffer->Name"], "",
1128 NoState, ["EXT_transform_feedback"] ),
1129 ( "GL_RASTERIZER_DISCARD", GLboolean,
1130 ["ctx->TransformFeedback.RasterDiscard"], "",
1131 NoState, ["EXT_transform_feedback"] ),
1132 ( "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", GLint,
1133 ["ctx->Const.MaxTransformFeedbackInterleavedComponents"], "",
1134 NoState, ["EXT_transform_feedback"] ),
1135 ( "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", GLint,
1136 ["ctx->Const.MaxTransformFeedbackSeparateAttribs"], "",
1137 NoState, ["EXT_transform_feedback"] ),
1138 ( "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", GLint,
1139 ["ctx->Const.MaxTransformFeedbackSeparateComponents"], "",
1140 NoState, ["EXT_transform_feedback"] ),
1141
1142 # GL 3.0
1143 ( "GL_NUM_EXTENSIONS", GLint,
1144 ["_mesa_get_extension_count(ctx)"], "", NoState, "30" ),
1145 ( "GL_MAJOR_VERSION", GLint,
1146 ["ctx->VersionMajor"], "", NoState, "30" ),
1147 ( "GL_MINOR_VERSION", GLint,
1148 ["ctx->VersionMinor"], "", NoState, "30" ),
1149 ( "GL_CONTEXT_FLAGS", GLint,
1150 ["ctx->Const.ContextFlags"], "", NoState, "30" ),
1151
1152 # GL 3.1
1153 ( "GL_PRIMITIVE_RESTART", GLboolean,
1154 ["ctx->Array.PrimitiveRestart"], "", NoState, "31" ),
1155 ( "GL_PRIMITIVE_RESTART_INDEX", GLint,
1156 ["ctx->Array.RestartIndex"], "", NoState, "31" ),
1157
1158 # GL 3.2
1159 ( "GL_CONTEXT_PROFILE_MASK", GLint, ["ctx->Const.ProfileMask"], "",
1160 NoState, "32" )
1161
1162 ]
1163
1164
1165 # These are queried via glGetIntegetIndexdvEXT() or glGetIntegeri_v()
1166 # The tuples are the same as above, with one exception: the "optional"
1167 # code field is instead the max legal index value.
1168 IndexedStateVars = [
1169 # GL_EXT_draw_buffers2 / GL3
1170 ( "GL_BLEND", GLint, ["((ctx->Color.BlendEnabled >> index) & 1)"],
1171 "ctx->Const.MaxDrawBuffers", NoState, ["EXT_draw_buffers2"] ),
1172 ( "GL_COLOR_WRITEMASK", GLint,
1173 [ "ctx->Color.ColorMask[index][RCOMP] ? 1 : 0",
1174 "ctx->Color.ColorMask[index][GCOMP] ? 1 : 0",
1175 "ctx->Color.ColorMask[index][BCOMP] ? 1 : 0",
1176 "ctx->Color.ColorMask[index][ACOMP] ? 1 : 0" ],
1177 "ctx->Const.MaxDrawBuffers", NoState, ["EXT_draw_buffers2"] ),
1178
1179 # GL_EXT_transform_feedback
1180 ( "GL_TRANSFORM_FEEDBACK_BUFFER_START", GLint64,
1181 ["ctx->TransformFeedback.Offset[index]"],
1182 "ctx->Const.MaxTransformFeedbackSeparateAttribs",
1183 NoState, ["EXT_transform_feedback"] ),
1184 ( "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE", GLint64,
1185 ["ctx->TransformFeedback.Size[index]"],
1186 "ctx->Const.MaxTransformFeedbackSeparateAttribs",
1187 NoState, ["EXT_transform_feedback"] ),
1188 ( "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", GLint,
1189 ["ctx->TransformFeedback.Buffers[index]->Name"],
1190 "ctx->Const.MaxTransformFeedbackSeparateAttribs",
1191 NoState, ["EXT_transform_feedback"] ),
1192
1193 # XXX more to come...
1194 ]
1195
1196
1197
1198 def ConversionFunc(fromType, toType):
1199 """Return the name of the macro to convert between two data types."""
1200 if fromType == toType:
1201 return ""
1202 elif fromType == GLfloat and toType == GLint:
1203 return "IROUND"
1204 elif fromType == GLfloat and toType == GLint64:
1205 return "IROUND64"
1206 elif fromType == GLfloatN and toType == GLfloat:
1207 return ""
1208 elif fromType == GLint and toType == GLfloat: # but not GLfloatN!
1209 return "(GLfloat)"
1210 elif fromType == GLint and toType == GLint64:
1211 return "(GLint64)"
1212 elif fromType == GLint64 and toType == GLfloat: # but not GLfloatN!
1213 return "(GLfloat)"
1214 else:
1215 if fromType == GLfloatN:
1216 fromType = GLfloat
1217 fromStr = TypeStrings[fromType]
1218 fromStr = string.upper(fromStr[2:])
1219 toStr = TypeStrings[toType]
1220 toStr = string.upper(toStr[2:])
1221 return fromStr + "_TO_" + toStr
1222
1223
1224 def EmitGetFunction(stateVars, returnType, indexed):
1225 """Emit the code to implement glGetBooleanv, glGetIntegerv or glGetFloatv."""
1226 assert (returnType == GLboolean or
1227 returnType == GLint or
1228 returnType == GLint64 or
1229 returnType == GLfloat)
1230
1231 strType = TypeStrings[returnType]
1232 # Capitalize first letter of return type
1233 if indexed:
1234 if returnType == GLint:
1235 function = "GetIntegerIndexedv"
1236 elif returnType == GLboolean:
1237 function = "GetBooleanIndexedv"
1238 elif returnType == GLint64:
1239 function = "GetInteger64Indexedv"
1240 else:
1241 function = "Foo"
1242 else:
1243 if returnType == GLint:
1244 function = "GetIntegerv"
1245 elif returnType == GLboolean:
1246 function = "GetBooleanv"
1247 elif returnType == GLfloat:
1248 function = "GetFloatv"
1249 elif returnType == GLint64:
1250 function = "GetInteger64v"
1251 else:
1252 sys.exit(1)
1253
1254 if returnType == GLint64:
1255 print "#if FEATURE_ARB_sync"
1256
1257 print "void GLAPIENTRY"
1258 if indexed:
1259 print "_mesa_%s( GLenum pname, GLuint index, %s *params )" % (function, strType)
1260 else:
1261 print "_mesa_%s( GLenum pname, %s *params )" % (function, strType)
1262 print "{"
1263 print " GET_CURRENT_CONTEXT(ctx);"
1264 print " const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;"
1265 print " ASSERT_OUTSIDE_BEGIN_END(ctx);"
1266 print " (void) version;"
1267 print ""
1268 print " if (!params)"
1269 print " return;"
1270 print ""
1271 print " switch (pname) {"
1272
1273 for state in stateVars:
1274 if indexed:
1275 (name, varType, state, indexMax, dirtyFlags, extensions) = state
1276 optionalCode = 0
1277 else:
1278 (name, varType, state, optionalCode, dirtyFlags, extensions) = state
1279 indexMax = 0
1280 print " case " + name + ":"
1281
1282 # Do extension check
1283 if extensions:
1284 if extensions == "30" or extensions == "31" or extensions == "32":
1285 print (' CHECK_VERSION(%s);' % extensions)
1286 elif len(extensions) == 1:
1287 print (' CHECK_EXT1(%s);' % extensions[0])
1288 elif len(extensions) == 2:
1289 print (' CHECK_EXT2(%s, %s);' % (extensions[0], extensions[1]))
1290 elif len(extensions) == 3:
1291 print (' CHECK_EXT3(%s, %s, %s);' %
1292 (extensions[0], extensions[1], extensions[2]))
1293 else:
1294 assert len(extensions) == 4
1295 print (' CHECK_EXT4(%s, %s, %s, %s);' %
1296 (extensions[0], extensions[1], extensions[2], extensions[3]))
1297
1298 # Do dirty state check
1299 if dirtyFlags:
1300 if dirtyFlags == FlushCurrent:
1301 print (' FLUSH_CURRENT(ctx, 0);')
1302 else:
1303 print (' if (ctx->NewState & %s)' % dirtyFlags)
1304 print (' _mesa_update_state(ctx);')
1305
1306 # Do index validation for glGet*Indexed() calls
1307 if indexMax:
1308 print (' if (index >= %s) {' % indexMax)
1309 print (' _mesa_error(ctx, GL_INVALID_VALUE, "gl%s(index=%%u), index", pname);' % function)
1310 print (' return;')
1311 print (' }')
1312
1313 conversion = ConversionFunc(varType, returnType)
1314 if optionalCode:
1315 optionalCode = string.replace(optionalCode, "CONVERSION", conversion);
1316 print " {"
1317 print " " + optionalCode
1318 n = len(state)
1319 for i in range(n):
1320 if conversion:
1321 print " params[%d] = %s(%s);" % (i, conversion, state[i])
1322 else:
1323 print " params[%d] = %s;" % (i, state[i])
1324 if optionalCode:
1325 print " }"
1326 print " break;"
1327
1328 print " default:"
1329 print " goto invalid_enum_error;"
1330 print " }"
1331 print " return;"
1332 print ""
1333 print "invalid_enum_error:"
1334 print ' _mesa_error(ctx, GL_INVALID_ENUM, "gl%s(pname=0x%%x)", pname);' % function
1335 print "}"
1336 if returnType == GLint64:
1337 print "#endif /* FEATURE_ARB_sync */"
1338 print ""
1339 return
1340
1341
1342
1343 def EmitHeader():
1344 """Print the get.c file header."""
1345 print """
1346 /***
1347 *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py
1348 ***/
1349
1350 #include "glheader.h"
1351 #include "context.h"
1352 #include "enable.h"
1353 #include "extensions.h"
1354 #include "get.h"
1355 #include "macros.h"
1356 #include "mtypes.h"
1357 #include "state.h"
1358 #include "texcompress.h"
1359 #include "framebuffer.h"
1360
1361
1362 #define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
1363
1364 #define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
1365
1366 #define INT64_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
1367 #define INT64_TO_INT(I) ( (GLint)((I > INT_MAX) ? INT_MAX : ((I < INT_MIN) ? INT_MIN : (I))) )
1368
1369 #define BOOLEAN_TO_INT(B) ( (GLint) (B) )
1370 #define BOOLEAN_TO_INT64(B) ( (GLint64) (B) )
1371 #define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F )
1372
1373 #define ENUM_TO_INT64(E) ( (GLint64) (E) )
1374
1375
1376 /*
1377 * Check if named extension is enabled, if not generate error and return.
1378 */
1379 #define CHECK_EXT1(EXT1) \\
1380 if (!ctx->Extensions.EXT1) { \\
1381 goto invalid_enum_error; \\
1382 }
1383
1384 /*
1385 * Check if either of two extensions is enabled.
1386 */
1387 #define CHECK_EXT2(EXT1, EXT2) \\
1388 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \\
1389 goto invalid_enum_error; \\
1390 }
1391
1392 /*
1393 * Check if either of three extensions is enabled.
1394 */
1395 #define CHECK_EXT3(EXT1, EXT2, EXT3) \\
1396 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \\
1397 !ctx->Extensions.EXT3) { \\
1398 goto invalid_enum_error; \\
1399 }
1400
1401 /*
1402 * Check if either of four extensions is enabled.
1403 */
1404 #define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4) \\
1405 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \\
1406 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \\
1407 goto invalid_enum_error; \\
1408 }
1409
1410 /*
1411 * Check GL version.
1412 */
1413 #define CHECK_VERSION(VERSION) \\
1414 if (version < VERSION) { \\
1415 goto invalid_enum_error; \\
1416 }
1417
1418 """
1419 return
1420
1421
1422
1423 def EmitGetDoublev():
1424 print """
1425 void GLAPIENTRY
1426 _mesa_GetDoublev( GLenum pname, GLdouble *params )
1427 {
1428 const GLfloat magic = -1234.5F;
1429 GLfloat values[16];
1430 GLuint i;
1431
1432 if (!params)
1433 return;
1434
1435 /* Init temp array to magic numbers so we can figure out how many values
1436 * are returned by the GetFloatv() call.
1437 */
1438 for (i = 0; i < 16; i++)
1439 values[i] = magic;
1440
1441 _mesa_GetFloatv(pname, values);
1442
1443 for (i = 0; i < 16 && values[i] != magic; i++)
1444 params[i] = (GLdouble) values[i];
1445 }
1446 """
1447
1448
1449
1450
1451 EmitHeader()
1452 # XXX Maybe sort the StateVars list
1453 EmitGetFunction(StateVars, GLboolean, 0)
1454 EmitGetFunction(StateVars, GLfloat, 0)
1455 EmitGetFunction(StateVars, GLint, 0)
1456 EmitGetFunction(StateVars, GLint64, 0)
1457 EmitGetDoublev()
1458
1459 EmitGetFunction(IndexedStateVars, GLboolean, 1)
1460 EmitGetFunction(IndexedStateVars, GLint, 1)
1461 EmitGetFunction(IndexedStateVars, GLint64, 1)
1462