mesa: Remove unnecessary header.
[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)"], "", NoState, ["OES_read_format"] ),
1019 ( "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", GLint,
1020 ["_mesa_get_color_read_format(ctx)"], "", NoState, ["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 # GL3
1143 ( "GL_NUM_EXTENSIONS", GLint, ["_mesa_get_extension_count(ctx)"], "", NoState, NoExt ),
1144 ( "GL_MAJOR_VERSION", GLint, ["ctx->VersionMajor"], "", NoState, NoExt ),
1145 ( "GL_MINOR_VERSION", GLint, ["ctx->VersionMinor"], "", NoState, NoExt ),
1146 ( "GL_CONTEXT_FLAGS", GLint, ["ctx->Const.ContextFlags"], "", NoState, NoExt )
1147 ]
1148
1149
1150 # These are queried via glGetIntegetIndexdvEXT() or glGetIntegeri_v()
1151 # The tuples are the same as above, with one exception: the "optional"
1152 # code field is instead the max legal index value.
1153 IndexedStateVars = [
1154 # GL_EXT_draw_buffers2 / GL3
1155 ( "GL_BLEND", GLint, ["((ctx->Color.BlendEnabled >> index) & 1)"],
1156 "ctx->Const.MaxDrawBuffers", NoState, ["EXT_draw_buffers2"] ),
1157 ( "GL_COLOR_WRITEMASK", GLint,
1158 [ "ctx->Color.ColorMask[index][RCOMP] ? 1 : 0",
1159 "ctx->Color.ColorMask[index][GCOMP] ? 1 : 0",
1160 "ctx->Color.ColorMask[index][BCOMP] ? 1 : 0",
1161 "ctx->Color.ColorMask[index][ACOMP] ? 1 : 0" ],
1162 "ctx->Const.MaxDrawBuffers", NoState, ["EXT_draw_buffers2"] ),
1163
1164 # GL_EXT_transform_feedback
1165 ( "GL_TRANSFORM_FEEDBACK_BUFFER_START", GLint64,
1166 ["ctx->TransformFeedback.Offset[index]"],
1167 "ctx->Const.MaxTransformFeedbackSeparateAttribs",
1168 NoState, ["EXT_transform_feedback"] ),
1169 ( "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE", GLint64,
1170 ["ctx->TransformFeedback.Size[index]"],
1171 "ctx->Const.MaxTransformFeedbackSeparateAttribs",
1172 NoState, ["EXT_transform_feedback"] ),
1173 ( "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", GLint,
1174 ["ctx->TransformFeedback.Buffers[index]->Name"],
1175 "ctx->Const.MaxTransformFeedbackSeparateAttribs",
1176 NoState, ["EXT_transform_feedback"] ),
1177
1178 # XXX more to come...
1179 ]
1180
1181
1182
1183 def ConversionFunc(fromType, toType):
1184 """Return the name of the macro to convert between two data types."""
1185 if fromType == toType:
1186 return ""
1187 elif fromType == GLfloat and toType == GLint:
1188 return "IROUND"
1189 elif fromType == GLfloat and toType == GLint64:
1190 return "IROUND64"
1191 elif fromType == GLfloatN and toType == GLfloat:
1192 return ""
1193 elif fromType == GLint and toType == GLfloat: # but not GLfloatN!
1194 return "(GLfloat)"
1195 elif fromType == GLint and toType == GLint64:
1196 return "(GLint64)"
1197 elif fromType == GLint64 and toType == GLfloat: # but not GLfloatN!
1198 return "(GLfloat)"
1199 else:
1200 if fromType == GLfloatN:
1201 fromType = GLfloat
1202 fromStr = TypeStrings[fromType]
1203 fromStr = string.upper(fromStr[2:])
1204 toStr = TypeStrings[toType]
1205 toStr = string.upper(toStr[2:])
1206 return fromStr + "_TO_" + toStr
1207
1208
1209 def EmitGetFunction(stateVars, returnType, indexed):
1210 """Emit the code to implement glGetBooleanv, glGetIntegerv or glGetFloatv."""
1211 assert (returnType == GLboolean or
1212 returnType == GLint or
1213 returnType == GLint64 or
1214 returnType == GLfloat)
1215
1216 strType = TypeStrings[returnType]
1217 # Capitalize first letter of return type
1218 if indexed:
1219 if returnType == GLint:
1220 function = "GetIntegerIndexedv"
1221 elif returnType == GLboolean:
1222 function = "GetBooleanIndexedv"
1223 elif returnType == GLint64:
1224 function = "GetInteger64Indexedv"
1225 else:
1226 function = "Foo"
1227 else:
1228 if returnType == GLint:
1229 function = "GetIntegerv"
1230 elif returnType == GLboolean:
1231 function = "GetBooleanv"
1232 elif returnType == GLfloat:
1233 function = "GetFloatv"
1234 elif returnType == GLint64:
1235 function = "GetInteger64v"
1236 else:
1237 sys.exit(1)
1238
1239 if returnType == GLint64:
1240 print "#if FEATURE_ARB_sync"
1241
1242 print "void GLAPIENTRY"
1243 if indexed:
1244 print "_mesa_%s( GLenum pname, GLuint index, %s *params )" % (function, strType)
1245 else:
1246 print "_mesa_%s( GLenum pname, %s *params )" % (function, strType)
1247 print "{"
1248 print " GET_CURRENT_CONTEXT(ctx);"
1249 print " ASSERT_OUTSIDE_BEGIN_END(ctx);"
1250 print ""
1251 print " if (!params)"
1252 print " return;"
1253 print ""
1254 if indexed == 0:
1255 print " if (ctx->Driver.%s &&" % function
1256 print " ctx->Driver.%s(ctx, pname, params))" % function
1257 print " return;"
1258 print ""
1259 print " switch (pname) {"
1260
1261 for state in stateVars:
1262 if indexed:
1263 (name, varType, state, indexMax, dirtyFlags, extensions) = state
1264 optionalCode = 0
1265 else:
1266 (name, varType, state, optionalCode, dirtyFlags, extensions) = state
1267 indexMax = 0
1268 print " case " + name + ":"
1269
1270 # Do extension check
1271 if extensions:
1272 if len(extensions) == 1:
1273 print (' CHECK_EXT1(%s, "%s");' %
1274 (extensions[0], function))
1275 elif len(extensions) == 2:
1276 print (' CHECK_EXT2(%s, %s, "%s");' %
1277 (extensions[0], extensions[1], function))
1278 elif len(extensions) == 3:
1279 print (' CHECK_EXT3(%s, %s, %s, "%s");' %
1280 (extensions[0], extensions[1], extensions[2], function))
1281 else:
1282 assert len(extensions) == 4
1283 print (' CHECK_EXT4(%s, %s, %s, %s, "%s");' %
1284 (extensions[0], extensions[1], extensions[2], extensions[3], function))
1285
1286 # Do dirty state check
1287 if dirtyFlags:
1288 if dirtyFlags == FlushCurrent:
1289 print (' FLUSH_CURRENT(ctx, 0);')
1290 else:
1291 print (' if (ctx->NewState & %s)' % dirtyFlags)
1292 print (' _mesa_update_state(ctx);')
1293
1294 # Do index validation for glGet*Indexed() calls
1295 if indexMax:
1296 print (' if (index >= %s) {' % indexMax)
1297 print (' _mesa_error(ctx, GL_INVALID_VALUE, "gl%s(index=%%u), index", pname);' % function)
1298 print (' return;')
1299 print (' }')
1300
1301 conversion = ConversionFunc(varType, returnType)
1302 if optionalCode:
1303 optionalCode = string.replace(optionalCode, "CONVERSION", conversion);
1304 print " {"
1305 print " " + optionalCode
1306 n = len(state)
1307 for i in range(n):
1308 if conversion:
1309 print " params[%d] = %s(%s);" % (i, conversion, state[i])
1310 else:
1311 print " params[%d] = %s;" % (i, state[i])
1312 if optionalCode:
1313 print " }"
1314 print " break;"
1315
1316 print " default:"
1317 print ' _mesa_error(ctx, GL_INVALID_ENUM, "gl%s(pname=0x%%x)", pname);' % function
1318 print " }"
1319 print "}"
1320 if returnType == GLint64:
1321 print "#endif /* FEATURE_ARB_sync */"
1322 print ""
1323 return
1324
1325
1326
1327 def EmitHeader():
1328 """Print the get.c file header."""
1329 print """
1330 /***
1331 *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py
1332 ***/
1333
1334 #include "glheader.h"
1335 #include "context.h"
1336 #include "enable.h"
1337 #include "extensions.h"
1338 #include "get.h"
1339 #include "macros.h"
1340 #include "mtypes.h"
1341 #include "state.h"
1342 #include "texcompress.h"
1343 #include "framebuffer.h"
1344
1345
1346 #define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
1347
1348 #define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
1349
1350 #define INT64_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
1351 #define INT64_TO_INT(I) ( (GLint)((I > INT_MAX) ? INT_MAX : ((I < INT_MIN) ? INT_MIN : (I))) )
1352
1353 #define BOOLEAN_TO_INT(B) ( (GLint) (B) )
1354 #define BOOLEAN_TO_INT64(B) ( (GLint64) (B) )
1355 #define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F )
1356
1357 #define ENUM_TO_INT64(E) ( (GLint64) (E) )
1358
1359
1360 /*
1361 * Check if named extension is enabled, if not generate error and return.
1362 */
1363 #define CHECK_EXT1(EXT1, FUNC) \\
1364 if (!ctx->Extensions.EXT1) { \\
1365 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \\
1366 return; \\
1367 }
1368
1369 /*
1370 * Check if either of two extensions is enabled.
1371 */
1372 #define CHECK_EXT2(EXT1, EXT2, FUNC) \\
1373 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \\
1374 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \\
1375 return; \\
1376 }
1377
1378 /*
1379 * Check if either of three extensions is enabled.
1380 */
1381 #define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \\
1382 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \\
1383 !ctx->Extensions.EXT3) { \\
1384 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \\
1385 return; \\
1386 }
1387
1388 /*
1389 * Check if either of four extensions is enabled.
1390 */
1391 #define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \\
1392 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \\
1393 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \\
1394 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \\
1395 return; \\
1396 }
1397
1398 """
1399 return
1400
1401
1402
1403 def EmitGetDoublev():
1404 print """
1405 void GLAPIENTRY
1406 _mesa_GetDoublev( GLenum pname, GLdouble *params )
1407 {
1408 const GLfloat magic = -1234.5F;
1409 GLfloat values[16];
1410 GLuint i;
1411
1412 if (!params)
1413 return;
1414
1415 /* Init temp array to magic numbers so we can figure out how many values
1416 * are returned by the GetFloatv() call.
1417 */
1418 for (i = 0; i < 16; i++)
1419 values[i] = magic;
1420
1421 _mesa_GetFloatv(pname, values);
1422
1423 for (i = 0; i < 16 && values[i] != magic; i++)
1424 params[i] = (GLdouble) values[i];
1425 }
1426 """
1427
1428
1429
1430
1431 EmitHeader()
1432 # XXX Maybe sort the StateVars list
1433 EmitGetFunction(StateVars, GLboolean, 0)
1434 EmitGetFunction(StateVars, GLfloat, 0)
1435 EmitGetFunction(StateVars, GLint, 0)
1436 EmitGetFunction(StateVars, GLint64, 0)
1437 EmitGetDoublev()
1438
1439 EmitGetFunction(IndexedStateVars, GLboolean, 1)
1440 EmitGetFunction(IndexedStateVars, GLint, 1)
1441 EmitGetFunction(IndexedStateVars, GLint64, 1)
1442