fc742c4a90d123992bb6ab49f338226f9939fbe1
[mesa.git] / src / mesa / main / get.c
1
2 /***
3 *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py
4 ***/
5
6 #include "glheader.h"
7 #include "context.h"
8 #include "enable.h"
9 #include "extensions.h"
10 #include "fbobject.h"
11 #include "get.h"
12 #include "macros.h"
13 #include "mtypes.h"
14 #include "state.h"
15 #include "texcompress.h"
16
17
18 #define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
19
20 #define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
21
22 #define BOOLEAN_TO_INT(B) ( (GLint) (B) )
23 #define BOOLEAN_TO_INT64(B) ( (GLint64) (B) )
24 #define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F )
25
26 #define ENUM_TO_INT64(E) ( (GLint64) (E) )
27
28
29 /*
30 * Check if named extension is enabled, if not generate error and return.
31 */
32 #define CHECK_EXT1(EXT1, FUNC) \
33 if (!ctx->Extensions.EXT1) { \
34 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
35 return; \
36 }
37
38 /*
39 * Check if either of two extensions is enabled.
40 */
41 #define CHECK_EXT2(EXT1, EXT2, FUNC) \
42 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \
43 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
44 return; \
45 }
46
47 /*
48 * Check if either of three extensions is enabled.
49 */
50 #define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \
51 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
52 !ctx->Extensions.EXT3) { \
53 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
54 return; \
55 }
56
57 /*
58 * Check if either of four extensions is enabled.
59 */
60 #define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \
61 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
62 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \
63 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
64 return; \
65 }
66
67
68 void GLAPIENTRY
69 _mesa_GetBooleanv( GLenum pname, GLboolean *params )
70 {
71 GET_CURRENT_CONTEXT(ctx);
72 ASSERT_OUTSIDE_BEGIN_END(ctx);
73
74 if (!params)
75 return;
76
77 if (ctx->NewState)
78 _mesa_update_state(ctx);
79
80 if (ctx->Driver.GetBooleanv &&
81 ctx->Driver.GetBooleanv(ctx, pname, params))
82 return;
83
84 switch (pname) {
85 case GL_ACCUM_RED_BITS:
86 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits);
87 break;
88 case GL_ACCUM_GREEN_BITS:
89 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits);
90 break;
91 case GL_ACCUM_BLUE_BITS:
92 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits);
93 break;
94 case GL_ACCUM_ALPHA_BITS:
95 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits);
96 break;
97 case GL_ACCUM_CLEAR_VALUE:
98 params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]);
99 params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]);
100 params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]);
101 params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]);
102 break;
103 case GL_ALPHA_BIAS:
104 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias);
105 break;
106 case GL_ALPHA_BITS:
107 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits);
108 break;
109 case GL_ALPHA_SCALE:
110 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale);
111 break;
112 case GL_ALPHA_TEST:
113 params[0] = ctx->Color.AlphaEnabled;
114 break;
115 case GL_ALPHA_TEST_FUNC:
116 params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc);
117 break;
118 case GL_ALPHA_TEST_REF:
119 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef);
120 break;
121 case GL_ATTRIB_STACK_DEPTH:
122 params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth);
123 break;
124 case GL_AUTO_NORMAL:
125 params[0] = ctx->Eval.AutoNormal;
126 break;
127 case GL_AUX_BUFFERS:
128 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers);
129 break;
130 case GL_BLEND:
131 params[0] = ctx->Color.BlendEnabled;
132 break;
133 case GL_BLEND_DST:
134 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
135 break;
136 case GL_BLEND_SRC:
137 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
138 break;
139 case GL_BLEND_SRC_RGB_EXT:
140 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
141 break;
142 case GL_BLEND_DST_RGB_EXT:
143 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
144 break;
145 case GL_BLEND_SRC_ALPHA_EXT:
146 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA);
147 break;
148 case GL_BLEND_DST_ALPHA_EXT:
149 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA);
150 break;
151 case GL_BLEND_EQUATION:
152 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB );
153 break;
154 case GL_BLEND_EQUATION_ALPHA_EXT:
155 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA );
156 break;
157 case GL_BLEND_COLOR_EXT:
158 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]);
159 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]);
160 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]);
161 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]);
162 break;
163 case GL_BLUE_BIAS:
164 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias);
165 break;
166 case GL_BLUE_BITS:
167 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits);
168 break;
169 case GL_BLUE_SCALE:
170 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale);
171 break;
172 case GL_CLIENT_ATTRIB_STACK_DEPTH:
173 params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth);
174 break;
175 case GL_CLIP_PLANE0:
176 params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1;
177 break;
178 case GL_CLIP_PLANE1:
179 params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1;
180 break;
181 case GL_CLIP_PLANE2:
182 params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1;
183 break;
184 case GL_CLIP_PLANE3:
185 params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1;
186 break;
187 case GL_CLIP_PLANE4:
188 params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1;
189 break;
190 case GL_CLIP_PLANE5:
191 params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1;
192 break;
193 case GL_COLOR_CLEAR_VALUE:
194 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]);
195 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]);
196 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]);
197 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]);
198 break;
199 case GL_COLOR_MATERIAL:
200 params[0] = ctx->Light.ColorMaterialEnabled;
201 break;
202 case GL_COLOR_MATERIAL_FACE:
203 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace);
204 break;
205 case GL_COLOR_MATERIAL_PARAMETER:
206 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode);
207 break;
208 case GL_COLOR_WRITEMASK:
209 params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
210 params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
211 params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
212 params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
213 break;
214 case GL_CULL_FACE:
215 params[0] = ctx->Polygon.CullFlag;
216 break;
217 case GL_CULL_FACE_MODE:
218 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode);
219 break;
220 case GL_CURRENT_COLOR:
221 {
222 FLUSH_CURRENT(ctx, 0);
223 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
224 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
225 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
226 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
227 }
228 break;
229 case GL_CURRENT_INDEX:
230 {
231 FLUSH_CURRENT(ctx, 0);
232 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
233 }
234 break;
235 case GL_CURRENT_NORMAL:
236 {
237 FLUSH_CURRENT(ctx, 0);
238 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
239 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
240 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
241 }
242 break;
243 case GL_CURRENT_RASTER_COLOR:
244 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]);
245 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]);
246 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]);
247 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]);
248 break;
249 case GL_CURRENT_RASTER_DISTANCE:
250 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance);
251 break;
252 case GL_CURRENT_RASTER_INDEX:
253 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterIndex);
254 break;
255 case GL_CURRENT_RASTER_POSITION:
256 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]);
257 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]);
258 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]);
259 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]);
260 break;
261 case GL_CURRENT_RASTER_SECONDARY_COLOR:
262 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]);
263 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]);
264 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]);
265 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]);
266 break;
267 case GL_CURRENT_RASTER_TEXTURE_COORDS:
268 {
269 const GLuint texUnit = ctx->Texture.CurrentUnit;
270 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][0]);
271 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][1]);
272 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][2]);
273 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][3]);
274 }
275 break;
276 case GL_CURRENT_RASTER_POSITION_VALID:
277 params[0] = ctx->Current.RasterPosValid;
278 break;
279 case GL_CURRENT_TEXTURE_COORDS:
280 {
281 const GLuint texUnit = ctx->Texture.CurrentUnit;
282 FLUSH_CURRENT(ctx, 0);
283 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
284 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
285 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
286 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
287 }
288 break;
289 case GL_DEPTH_BIAS:
290 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias);
291 break;
292 case GL_DEPTH_BITS:
293 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits);
294 break;
295 case GL_DEPTH_CLEAR_VALUE:
296 params[0] = FLOAT_TO_BOOLEAN(((GLfloat) ctx->Depth.Clear));
297 break;
298 case GL_DEPTH_FUNC:
299 params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func);
300 break;
301 case GL_DEPTH_RANGE:
302 params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near);
303 params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far);
304 break;
305 case GL_DEPTH_SCALE:
306 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale);
307 break;
308 case GL_DEPTH_TEST:
309 params[0] = ctx->Depth.Test;
310 break;
311 case GL_DEPTH_WRITEMASK:
312 params[0] = ctx->Depth.Mask;
313 break;
314 case GL_DITHER:
315 params[0] = ctx->Color.DitherFlag;
316 break;
317 case GL_DOUBLEBUFFER:
318 params[0] = ctx->DrawBuffer->Visual.doubleBufferMode;
319 break;
320 case GL_DRAW_BUFFER:
321 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
322 break;
323 case GL_EDGE_FLAG:
324 {
325 FLUSH_CURRENT(ctx, 0);
326 params[0] = (ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0);
327 }
328 break;
329 case GL_FEEDBACK_BUFFER_SIZE:
330 params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize);
331 break;
332 case GL_FEEDBACK_BUFFER_TYPE:
333 params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type);
334 break;
335 case GL_FOG:
336 params[0] = ctx->Fog.Enabled;
337 break;
338 case GL_FOG_COLOR:
339 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]);
340 params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]);
341 params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]);
342 params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]);
343 break;
344 case GL_FOG_DENSITY:
345 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density);
346 break;
347 case GL_FOG_END:
348 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End);
349 break;
350 case GL_FOG_HINT:
351 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog);
352 break;
353 case GL_FOG_INDEX:
354 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index);
355 break;
356 case GL_FOG_MODE:
357 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode);
358 break;
359 case GL_FOG_START:
360 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start);
361 break;
362 case GL_FRONT_FACE:
363 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace);
364 break;
365 case GL_GREEN_BIAS:
366 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias);
367 break;
368 case GL_GREEN_BITS:
369 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits);
370 break;
371 case GL_GREEN_SCALE:
372 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale);
373 break;
374 case GL_INDEX_BITS:
375 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits);
376 break;
377 case GL_INDEX_CLEAR_VALUE:
378 params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex);
379 break;
380 case GL_INDEX_MODE:
381 params[0] = !ctx->DrawBuffer->Visual.rgbMode;
382 break;
383 case GL_INDEX_OFFSET:
384 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset);
385 break;
386 case GL_INDEX_SHIFT:
387 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift);
388 break;
389 case GL_INDEX_WRITEMASK:
390 params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask);
391 break;
392 case GL_LIGHT0:
393 params[0] = ctx->Light.Light[0].Enabled;
394 break;
395 case GL_LIGHT1:
396 params[0] = ctx->Light.Light[1].Enabled;
397 break;
398 case GL_LIGHT2:
399 params[0] = ctx->Light.Light[2].Enabled;
400 break;
401 case GL_LIGHT3:
402 params[0] = ctx->Light.Light[3].Enabled;
403 break;
404 case GL_LIGHT4:
405 params[0] = ctx->Light.Light[4].Enabled;
406 break;
407 case GL_LIGHT5:
408 params[0] = ctx->Light.Light[5].Enabled;
409 break;
410 case GL_LIGHT6:
411 params[0] = ctx->Light.Light[6].Enabled;
412 break;
413 case GL_LIGHT7:
414 params[0] = ctx->Light.Light[7].Enabled;
415 break;
416 case GL_LIGHTING:
417 params[0] = ctx->Light.Enabled;
418 break;
419 case GL_LIGHT_MODEL_AMBIENT:
420 params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]);
421 params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]);
422 params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]);
423 params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]);
424 break;
425 case GL_LIGHT_MODEL_COLOR_CONTROL:
426 params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl);
427 break;
428 case GL_LIGHT_MODEL_LOCAL_VIEWER:
429 params[0] = ctx->Light.Model.LocalViewer;
430 break;
431 case GL_LIGHT_MODEL_TWO_SIDE:
432 params[0] = ctx->Light.Model.TwoSide;
433 break;
434 case GL_LINE_SMOOTH:
435 params[0] = ctx->Line.SmoothFlag;
436 break;
437 case GL_LINE_SMOOTH_HINT:
438 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth);
439 break;
440 case GL_LINE_STIPPLE:
441 params[0] = ctx->Line.StippleFlag;
442 break;
443 case GL_LINE_STIPPLE_PATTERN:
444 params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern);
445 break;
446 case GL_LINE_STIPPLE_REPEAT:
447 params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor);
448 break;
449 case GL_LINE_WIDTH:
450 params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width);
451 break;
452 case GL_LINE_WIDTH_GRANULARITY:
453 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity);
454 break;
455 case GL_LINE_WIDTH_RANGE:
456 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA);
457 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA);
458 break;
459 case GL_ALIASED_LINE_WIDTH_RANGE:
460 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth);
461 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth);
462 break;
463 case GL_LIST_BASE:
464 params[0] = INT_TO_BOOLEAN(ctx->List.ListBase);
465 break;
466 case GL_LIST_INDEX:
467 params[0] = INT_TO_BOOLEAN((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
468 break;
469 case GL_LIST_MODE:
470 {
471 GLenum mode;
472 if (!ctx->CompileFlag)
473 mode = 0;
474 else if (ctx->ExecuteFlag)
475 mode = GL_COMPILE_AND_EXECUTE;
476 else
477 mode = GL_COMPILE;
478 params[0] = ENUM_TO_BOOLEAN(mode);
479 }
480 break;
481 case GL_INDEX_LOGIC_OP:
482 params[0] = ctx->Color.IndexLogicOpEnabled;
483 break;
484 case GL_COLOR_LOGIC_OP:
485 params[0] = ctx->Color.ColorLogicOpEnabled;
486 break;
487 case GL_LOGIC_OP_MODE:
488 params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp);
489 break;
490 case GL_MAP1_COLOR_4:
491 params[0] = ctx->Eval.Map1Color4;
492 break;
493 case GL_MAP1_GRID_DOMAIN:
494 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1);
495 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2);
496 break;
497 case GL_MAP1_GRID_SEGMENTS:
498 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un);
499 break;
500 case GL_MAP1_INDEX:
501 params[0] = ctx->Eval.Map1Index;
502 break;
503 case GL_MAP1_NORMAL:
504 params[0] = ctx->Eval.Map1Normal;
505 break;
506 case GL_MAP1_TEXTURE_COORD_1:
507 params[0] = ctx->Eval.Map1TextureCoord1;
508 break;
509 case GL_MAP1_TEXTURE_COORD_2:
510 params[0] = ctx->Eval.Map1TextureCoord2;
511 break;
512 case GL_MAP1_TEXTURE_COORD_3:
513 params[0] = ctx->Eval.Map1TextureCoord3;
514 break;
515 case GL_MAP1_TEXTURE_COORD_4:
516 params[0] = ctx->Eval.Map1TextureCoord4;
517 break;
518 case GL_MAP1_VERTEX_3:
519 params[0] = ctx->Eval.Map1Vertex3;
520 break;
521 case GL_MAP1_VERTEX_4:
522 params[0] = ctx->Eval.Map1Vertex4;
523 break;
524 case GL_MAP2_COLOR_4:
525 params[0] = ctx->Eval.Map2Color4;
526 break;
527 case GL_MAP2_GRID_DOMAIN:
528 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1);
529 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2);
530 params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1);
531 params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2);
532 break;
533 case GL_MAP2_GRID_SEGMENTS:
534 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un);
535 params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn);
536 break;
537 case GL_MAP2_INDEX:
538 params[0] = ctx->Eval.Map2Index;
539 break;
540 case GL_MAP2_NORMAL:
541 params[0] = ctx->Eval.Map2Normal;
542 break;
543 case GL_MAP2_TEXTURE_COORD_1:
544 params[0] = ctx->Eval.Map2TextureCoord1;
545 break;
546 case GL_MAP2_TEXTURE_COORD_2:
547 params[0] = ctx->Eval.Map2TextureCoord2;
548 break;
549 case GL_MAP2_TEXTURE_COORD_3:
550 params[0] = ctx->Eval.Map2TextureCoord3;
551 break;
552 case GL_MAP2_TEXTURE_COORD_4:
553 params[0] = ctx->Eval.Map2TextureCoord4;
554 break;
555 case GL_MAP2_VERTEX_3:
556 params[0] = ctx->Eval.Map2Vertex3;
557 break;
558 case GL_MAP2_VERTEX_4:
559 params[0] = ctx->Eval.Map2Vertex4;
560 break;
561 case GL_MAP_COLOR:
562 params[0] = ctx->Pixel.MapColorFlag;
563 break;
564 case GL_MAP_STENCIL:
565 params[0] = ctx->Pixel.MapStencilFlag;
566 break;
567 case GL_MATRIX_MODE:
568 params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode);
569 break;
570 case GL_MAX_ATTRIB_STACK_DEPTH:
571 params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH);
572 break;
573 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
574 params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH);
575 break;
576 case GL_MAX_CLIP_PLANES:
577 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes);
578 break;
579 case GL_MAX_ELEMENTS_VERTICES:
580 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
581 break;
582 case GL_MAX_ELEMENTS_INDICES:
583 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
584 break;
585 case GL_MAX_EVAL_ORDER:
586 params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER);
587 break;
588 case GL_MAX_LIGHTS:
589 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights);
590 break;
591 case GL_MAX_LIST_NESTING:
592 params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING);
593 break;
594 case GL_MAX_MODELVIEW_STACK_DEPTH:
595 params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH);
596 break;
597 case GL_MAX_NAME_STACK_DEPTH:
598 params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH);
599 break;
600 case GL_MAX_PIXEL_MAP_TABLE:
601 params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE);
602 break;
603 case GL_MAX_PROJECTION_STACK_DEPTH:
604 params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH);
605 break;
606 case GL_MAX_TEXTURE_SIZE:
607 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1));
608 break;
609 case GL_MAX_3D_TEXTURE_SIZE:
610 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1));
611 break;
612 case GL_MAX_TEXTURE_STACK_DEPTH:
613 params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH);
614 break;
615 case GL_MAX_VIEWPORT_DIMS:
616 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth);
617 params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight);
618 break;
619 case GL_MODELVIEW_MATRIX:
620 {
621 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
622 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
623 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
624 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
625 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
626 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
627 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
628 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
629 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
630 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
631 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
632 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
633 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
634 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
635 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
636 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
637 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
638 }
639 break;
640 case GL_MODELVIEW_STACK_DEPTH:
641 params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1);
642 break;
643 case GL_NAME_STACK_DEPTH:
644 params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth);
645 break;
646 case GL_NORMALIZE:
647 params[0] = ctx->Transform.Normalize;
648 break;
649 case GL_PACK_ALIGNMENT:
650 params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment);
651 break;
652 case GL_PACK_LSB_FIRST:
653 params[0] = ctx->Pack.LsbFirst;
654 break;
655 case GL_PACK_ROW_LENGTH:
656 params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength);
657 break;
658 case GL_PACK_SKIP_PIXELS:
659 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels);
660 break;
661 case GL_PACK_SKIP_ROWS:
662 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows);
663 break;
664 case GL_PACK_SWAP_BYTES:
665 params[0] = ctx->Pack.SwapBytes;
666 break;
667 case GL_PACK_SKIP_IMAGES_EXT:
668 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages);
669 break;
670 case GL_PACK_IMAGE_HEIGHT_EXT:
671 params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight);
672 break;
673 case GL_PACK_INVERT_MESA:
674 params[0] = ctx->Pack.Invert;
675 break;
676 case GL_PERSPECTIVE_CORRECTION_HINT:
677 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection);
678 break;
679 case GL_PIXEL_MAP_A_TO_A_SIZE:
680 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.AtoA.Size);
681 break;
682 case GL_PIXEL_MAP_B_TO_B_SIZE:
683 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.BtoB.Size);
684 break;
685 case GL_PIXEL_MAP_G_TO_G_SIZE:
686 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.GtoG.Size);
687 break;
688 case GL_PIXEL_MAP_I_TO_A_SIZE:
689 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoA.Size);
690 break;
691 case GL_PIXEL_MAP_I_TO_B_SIZE:
692 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoB.Size);
693 break;
694 case GL_PIXEL_MAP_I_TO_G_SIZE:
695 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoG.Size);
696 break;
697 case GL_PIXEL_MAP_I_TO_I_SIZE:
698 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoI.Size);
699 break;
700 case GL_PIXEL_MAP_I_TO_R_SIZE:
701 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoR.Size);
702 break;
703 case GL_PIXEL_MAP_R_TO_R_SIZE:
704 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.RtoR.Size);
705 break;
706 case GL_PIXEL_MAP_S_TO_S_SIZE:
707 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.StoS.Size);
708 break;
709 case GL_POINT_SIZE:
710 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size);
711 break;
712 case GL_POINT_SIZE_GRANULARITY:
713 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity);
714 break;
715 case GL_POINT_SIZE_RANGE:
716 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA);
717 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA);
718 break;
719 case GL_ALIASED_POINT_SIZE_RANGE:
720 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize);
721 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize);
722 break;
723 case GL_POINT_SMOOTH:
724 params[0] = ctx->Point.SmoothFlag;
725 break;
726 case GL_POINT_SMOOTH_HINT:
727 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth);
728 break;
729 case GL_POINT_SIZE_MIN_EXT:
730 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize);
731 break;
732 case GL_POINT_SIZE_MAX_EXT:
733 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize);
734 break;
735 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
736 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold);
737 break;
738 case GL_DISTANCE_ATTENUATION_EXT:
739 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]);
740 params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]);
741 params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]);
742 break;
743 case GL_POLYGON_MODE:
744 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode);
745 params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode);
746 break;
747 case GL_POLYGON_OFFSET_BIAS_EXT:
748 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits);
749 break;
750 case GL_POLYGON_OFFSET_FACTOR:
751 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor );
752 break;
753 case GL_POLYGON_OFFSET_UNITS:
754 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits );
755 break;
756 case GL_POLYGON_OFFSET_POINT:
757 params[0] = ctx->Polygon.OffsetPoint;
758 break;
759 case GL_POLYGON_OFFSET_LINE:
760 params[0] = ctx->Polygon.OffsetLine;
761 break;
762 case GL_POLYGON_OFFSET_FILL:
763 params[0] = ctx->Polygon.OffsetFill;
764 break;
765 case GL_POLYGON_SMOOTH:
766 params[0] = ctx->Polygon.SmoothFlag;
767 break;
768 case GL_POLYGON_SMOOTH_HINT:
769 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth);
770 break;
771 case GL_POLYGON_STIPPLE:
772 params[0] = ctx->Polygon.StippleFlag;
773 break;
774 case GL_PROJECTION_MATRIX:
775 {
776 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
777 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
778 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
779 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
780 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
781 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
782 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
783 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
784 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
785 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
786 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
787 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
788 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
789 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
790 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
791 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
792 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
793 }
794 break;
795 case GL_PROJECTION_STACK_DEPTH:
796 params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1);
797 break;
798 case GL_READ_BUFFER:
799 params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer);
800 break;
801 case GL_RED_BIAS:
802 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias);
803 break;
804 case GL_RED_BITS:
805 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.redBits);
806 break;
807 case GL_RED_SCALE:
808 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale);
809 break;
810 case GL_RENDER_MODE:
811 params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode);
812 break;
813 case GL_RESCALE_NORMAL:
814 params[0] = ctx->Transform.RescaleNormals;
815 break;
816 case GL_RGBA_MODE:
817 params[0] = ctx->DrawBuffer->Visual.rgbMode;
818 break;
819 case GL_SCISSOR_BOX:
820 params[0] = INT_TO_BOOLEAN(ctx->Scissor.X);
821 params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y);
822 params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width);
823 params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height);
824 break;
825 case GL_SCISSOR_TEST:
826 params[0] = ctx->Scissor.Enabled;
827 break;
828 case GL_SELECTION_BUFFER_SIZE:
829 params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize);
830 break;
831 case GL_SHADE_MODEL:
832 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel);
833 break;
834 case GL_SHARED_TEXTURE_PALETTE_EXT:
835 params[0] = ctx->Texture.SharedPalette;
836 break;
837 case GL_STENCIL_BITS:
838 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits);
839 break;
840 case GL_STENCIL_CLEAR_VALUE:
841 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear);
842 break;
843 case GL_STENCIL_FAIL:
844 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
845 break;
846 case GL_STENCIL_FUNC:
847 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
848 break;
849 case GL_STENCIL_PASS_DEPTH_FAIL:
850 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
851 break;
852 case GL_STENCIL_PASS_DEPTH_PASS:
853 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
854 break;
855 case GL_STENCIL_REF:
856 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
857 break;
858 case GL_STENCIL_TEST:
859 params[0] = ctx->Stencil.Enabled;
860 break;
861 case GL_STENCIL_VALUE_MASK:
862 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
863 break;
864 case GL_STENCIL_WRITEMASK:
865 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
866 break;
867 case GL_STEREO:
868 params[0] = ctx->DrawBuffer->Visual.stereoMode;
869 break;
870 case GL_SUBPIXEL_BITS:
871 params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits);
872 break;
873 case GL_TEXTURE_1D:
874 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D);
875 break;
876 case GL_TEXTURE_2D:
877 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D);
878 break;
879 case GL_TEXTURE_3D:
880 params[0] = _mesa_IsEnabled(GL_TEXTURE_3D);
881 break;
882 case GL_TEXTURE_1D_ARRAY_EXT:
883 CHECK_EXT1(MESA_texture_array, "GetBooleanv");
884 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT);
885 break;
886 case GL_TEXTURE_2D_ARRAY_EXT:
887 CHECK_EXT1(MESA_texture_array, "GetBooleanv");
888 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT);
889 break;
890 case GL_TEXTURE_BINDING_1D:
891 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
892 break;
893 case GL_TEXTURE_BINDING_2D:
894 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
895 break;
896 case GL_TEXTURE_BINDING_3D:
897 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
898 break;
899 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
900 CHECK_EXT1(MESA_texture_array, "GetBooleanv");
901 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
902 break;
903 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
904 CHECK_EXT1(MESA_texture_array, "GetBooleanv");
905 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
906 break;
907 case GL_TEXTURE_GEN_S:
908 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0);
909 break;
910 case GL_TEXTURE_GEN_T:
911 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0);
912 break;
913 case GL_TEXTURE_GEN_R:
914 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0);
915 break;
916 case GL_TEXTURE_GEN_Q:
917 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0);
918 break;
919 case GL_TEXTURE_MATRIX:
920 {
921 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
922 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
923 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
924 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
925 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
926 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
927 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
928 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
929 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
930 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
931 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
932 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
933 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
934 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
935 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
936 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
937 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
938 }
939 break;
940 case GL_TEXTURE_STACK_DEPTH:
941 params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
942 break;
943 case GL_UNPACK_ALIGNMENT:
944 params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment);
945 break;
946 case GL_UNPACK_LSB_FIRST:
947 params[0] = ctx->Unpack.LsbFirst;
948 break;
949 case GL_UNPACK_ROW_LENGTH:
950 params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength);
951 break;
952 case GL_UNPACK_SKIP_PIXELS:
953 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels);
954 break;
955 case GL_UNPACK_SKIP_ROWS:
956 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows);
957 break;
958 case GL_UNPACK_SWAP_BYTES:
959 params[0] = ctx->Unpack.SwapBytes;
960 break;
961 case GL_UNPACK_SKIP_IMAGES_EXT:
962 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages);
963 break;
964 case GL_UNPACK_IMAGE_HEIGHT_EXT:
965 params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight);
966 break;
967 case GL_UNPACK_CLIENT_STORAGE_APPLE:
968 params[0] = ctx->Unpack.ClientStorage;
969 break;
970 case GL_VIEWPORT:
971 params[0] = INT_TO_BOOLEAN(ctx->Viewport.X);
972 params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y);
973 params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width);
974 params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height);
975 break;
976 case GL_ZOOM_X:
977 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX);
978 break;
979 case GL_ZOOM_Y:
980 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY);
981 break;
982 case GL_VERTEX_ARRAY:
983 params[0] = ctx->Array.ArrayObj->Vertex.Enabled;
984 break;
985 case GL_VERTEX_ARRAY_SIZE:
986 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size);
987 break;
988 case GL_VERTEX_ARRAY_TYPE:
989 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type);
990 break;
991 case GL_VERTEX_ARRAY_STRIDE:
992 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride);
993 break;
994 case GL_VERTEX_ARRAY_COUNT_EXT:
995 params[0] = INT_TO_BOOLEAN(0);
996 break;
997 case GL_NORMAL_ARRAY:
998 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled);
999 break;
1000 case GL_NORMAL_ARRAY_TYPE:
1001 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type);
1002 break;
1003 case GL_NORMAL_ARRAY_STRIDE:
1004 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride);
1005 break;
1006 case GL_NORMAL_ARRAY_COUNT_EXT:
1007 params[0] = INT_TO_BOOLEAN(0);
1008 break;
1009 case GL_COLOR_ARRAY:
1010 params[0] = ctx->Array.ArrayObj->Color.Enabled;
1011 break;
1012 case GL_COLOR_ARRAY_SIZE:
1013 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size);
1014 break;
1015 case GL_COLOR_ARRAY_TYPE:
1016 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type);
1017 break;
1018 case GL_COLOR_ARRAY_STRIDE:
1019 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride);
1020 break;
1021 case GL_COLOR_ARRAY_COUNT_EXT:
1022 params[0] = INT_TO_BOOLEAN(0);
1023 break;
1024 case GL_INDEX_ARRAY:
1025 params[0] = ctx->Array.ArrayObj->Index.Enabled;
1026 break;
1027 case GL_INDEX_ARRAY_TYPE:
1028 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type);
1029 break;
1030 case GL_INDEX_ARRAY_STRIDE:
1031 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride);
1032 break;
1033 case GL_INDEX_ARRAY_COUNT_EXT:
1034 params[0] = INT_TO_BOOLEAN(0);
1035 break;
1036 case GL_TEXTURE_COORD_ARRAY:
1037 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled;
1038 break;
1039 case GL_TEXTURE_COORD_ARRAY_SIZE:
1040 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
1041 break;
1042 case GL_TEXTURE_COORD_ARRAY_TYPE:
1043 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
1044 break;
1045 case GL_TEXTURE_COORD_ARRAY_STRIDE:
1046 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
1047 break;
1048 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
1049 params[0] = INT_TO_BOOLEAN(0);
1050 break;
1051 case GL_EDGE_FLAG_ARRAY:
1052 params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled;
1053 break;
1054 case GL_EDGE_FLAG_ARRAY_STRIDE:
1055 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride);
1056 break;
1057 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
1058 params[0] = INT_TO_BOOLEAN(0);
1059 break;
1060 case GL_MAX_TEXTURE_UNITS_ARB:
1061 CHECK_EXT1(ARB_multitexture, "GetBooleanv");
1062 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits);
1063 break;
1064 case GL_ACTIVE_TEXTURE_ARB:
1065 CHECK_EXT1(ARB_multitexture, "GetBooleanv");
1066 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
1067 break;
1068 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
1069 CHECK_EXT1(ARB_multitexture, "GetBooleanv");
1070 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
1071 break;
1072 case GL_TEXTURE_CUBE_MAP_ARB:
1073 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
1074 params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
1075 break;
1076 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
1077 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
1078 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
1079 break;
1080 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
1081 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
1082 params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
1083 break;
1084 case GL_TEXTURE_COMPRESSION_HINT_ARB:
1085 params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
1086 break;
1087 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
1088 params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
1089 break;
1090 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
1091 {
1092 GLint formats[100];
1093 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
1094 ASSERT(n <= 100);
1095 for (i = 0; i < n; i++)
1096 params[i] = ENUM_TO_BOOLEAN(formats[i]);
1097 }
1098 break;
1099 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
1100 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
1101 params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst);
1102 break;
1103 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
1104 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
1105 params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount);
1106 break;
1107 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
1108 {
1109 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
1110 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1111 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1112 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1113 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1114 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1115 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1116 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1117 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1118 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1119 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1120 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1121 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1122 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1123 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1124 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1125 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1126 }
1127 break;
1128 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
1129 {
1130 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
1131 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1132 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1133 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1134 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1135 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1136 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1137 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1138 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1139 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1140 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1141 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1142 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1143 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1144 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1145 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1146 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1147 }
1148 break;
1149 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
1150 {
1151 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
1152 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1153 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1154 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1155 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1156 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1157 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1158 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1159 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1160 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1161 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1162 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1163 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1164 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1165 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1166 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1167 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1168 }
1169 break;
1170 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
1171 {
1172 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
1173 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1174 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1175 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1176 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1177 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1178 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1179 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1180 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1181 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1182 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1183 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1184 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1185 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1186 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1187 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1188 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1189 }
1190 break;
1191 case GL_COLOR_MATRIX_SGI:
1192 {
1193 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
1194 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1195 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
1196 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
1197 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
1198 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
1199 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1200 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
1201 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
1202 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
1203 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
1204 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1205 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
1206 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
1207 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
1208 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
1209 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1210 }
1211 break;
1212 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
1213 params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1);
1214 break;
1215 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
1216 params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH);
1217 break;
1218 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
1219 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]);
1220 break;
1221 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
1222 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]);
1223 break;
1224 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
1225 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]);
1226 break;
1227 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
1228 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]);
1229 break;
1230 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
1231 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]);
1232 break;
1233 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
1234 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]);
1235 break;
1236 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
1237 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]);
1238 break;
1239 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
1240 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]);
1241 break;
1242 case GL_CONVOLUTION_1D_EXT:
1243 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1244 params[0] = ctx->Pixel.Convolution1DEnabled;
1245 break;
1246 case GL_CONVOLUTION_2D_EXT:
1247 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1248 params[0] = ctx->Pixel.Convolution2DEnabled;
1249 break;
1250 case GL_SEPARABLE_2D_EXT:
1251 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1252 params[0] = ctx->Pixel.Separable2DEnabled;
1253 break;
1254 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
1255 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1256 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]);
1257 break;
1258 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
1259 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1260 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]);
1261 break;
1262 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
1263 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1264 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]);
1265 break;
1266 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
1267 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1268 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]);
1269 break;
1270 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
1271 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1272 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]);
1273 break;
1274 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
1275 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1276 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]);
1277 break;
1278 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
1279 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1280 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]);
1281 break;
1282 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
1283 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1284 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]);
1285 break;
1286 case GL_HISTOGRAM:
1287 CHECK_EXT1(EXT_histogram, "GetBooleanv");
1288 params[0] = ctx->Pixel.HistogramEnabled;
1289 break;
1290 case GL_MINMAX:
1291 CHECK_EXT1(EXT_histogram, "GetBooleanv");
1292 params[0] = ctx->Pixel.MinMaxEnabled;
1293 break;
1294 case GL_COLOR_TABLE_SGI:
1295 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1296 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION];
1297 break;
1298 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
1299 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1300 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION];
1301 break;
1302 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
1303 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1304 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX];
1305 break;
1306 case GL_TEXTURE_COLOR_TABLE_SGI:
1307 CHECK_EXT1(SGI_texture_color_table, "GetBooleanv");
1308 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled;
1309 break;
1310 case GL_COLOR_SUM_EXT:
1311 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetBooleanv");
1312 params[0] = ctx->Fog.ColorSumEnabled;
1313 break;
1314 case GL_CURRENT_SECONDARY_COLOR_EXT:
1315 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1316 {
1317 FLUSH_CURRENT(ctx, 0);
1318 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
1319 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
1320 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
1321 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
1322 }
1323 break;
1324 case GL_SECONDARY_COLOR_ARRAY_EXT:
1325 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1326 params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled;
1327 break;
1328 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
1329 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1330 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type);
1331 break;
1332 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
1333 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1334 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride);
1335 break;
1336 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
1337 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1338 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size);
1339 break;
1340 case GL_CURRENT_FOG_COORDINATE_EXT:
1341 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1342 {
1343 FLUSH_CURRENT(ctx, 0);
1344 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
1345 }
1346 break;
1347 case GL_FOG_COORDINATE_ARRAY_EXT:
1348 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1349 params[0] = ctx->Array.ArrayObj->FogCoord.Enabled;
1350 break;
1351 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
1352 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1353 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type);
1354 break;
1355 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
1356 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1357 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride);
1358 break;
1359 case GL_FOG_COORDINATE_SOURCE_EXT:
1360 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1361 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource);
1362 break;
1363 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
1364 CHECK_EXT1(EXT_texture_lod_bias, "GetBooleanv");
1365 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias);
1366 break;
1367 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
1368 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetBooleanv");
1369 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy);
1370 break;
1371 case GL_MULTISAMPLE_ARB:
1372 params[0] = ctx->Multisample.Enabled;
1373 break;
1374 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
1375 params[0] = ctx->Multisample.SampleAlphaToCoverage;
1376 break;
1377 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
1378 params[0] = ctx->Multisample.SampleAlphaToOne;
1379 break;
1380 case GL_SAMPLE_COVERAGE_ARB:
1381 params[0] = ctx->Multisample.SampleCoverage;
1382 break;
1383 case GL_SAMPLE_COVERAGE_VALUE_ARB:
1384 params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue);
1385 break;
1386 case GL_SAMPLE_COVERAGE_INVERT_ARB:
1387 params[0] = ctx->Multisample.SampleCoverageInvert;
1388 break;
1389 case GL_SAMPLE_BUFFERS_ARB:
1390 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers);
1391 break;
1392 case GL_SAMPLES_ARB:
1393 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples);
1394 break;
1395 case GL_RASTER_POSITION_UNCLIPPED_IBM:
1396 CHECK_EXT1(IBM_rasterpos_clip, "GetBooleanv");
1397 params[0] = ctx->Transform.RasterPositionUnclipped;
1398 break;
1399 case GL_POINT_SPRITE_NV:
1400 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
1401 params[0] = ctx->Point.PointSprite;
1402 break;
1403 case GL_POINT_SPRITE_R_MODE_NV:
1404 CHECK_EXT1(NV_point_sprite, "GetBooleanv");
1405 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode);
1406 break;
1407 case GL_POINT_SPRITE_COORD_ORIGIN:
1408 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
1409 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin);
1410 break;
1411 case GL_GENERATE_MIPMAP_HINT_SGIS:
1412 CHECK_EXT1(SGIS_generate_mipmap, "GetBooleanv");
1413 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap);
1414 break;
1415 case GL_VERTEX_PROGRAM_BINDING_NV:
1416 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1417 params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
1418 break;
1419 case GL_VERTEX_ATTRIB_ARRAY0_NV:
1420 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1421 params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled;
1422 break;
1423 case GL_VERTEX_ATTRIB_ARRAY1_NV:
1424 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1425 params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled;
1426 break;
1427 case GL_VERTEX_ATTRIB_ARRAY2_NV:
1428 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1429 params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled;
1430 break;
1431 case GL_VERTEX_ATTRIB_ARRAY3_NV:
1432 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1433 params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled;
1434 break;
1435 case GL_VERTEX_ATTRIB_ARRAY4_NV:
1436 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1437 params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled;
1438 break;
1439 case GL_VERTEX_ATTRIB_ARRAY5_NV:
1440 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1441 params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled;
1442 break;
1443 case GL_VERTEX_ATTRIB_ARRAY6_NV:
1444 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1445 params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled;
1446 break;
1447 case GL_VERTEX_ATTRIB_ARRAY7_NV:
1448 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1449 params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled;
1450 break;
1451 case GL_VERTEX_ATTRIB_ARRAY8_NV:
1452 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1453 params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled;
1454 break;
1455 case GL_VERTEX_ATTRIB_ARRAY9_NV:
1456 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1457 params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled;
1458 break;
1459 case GL_VERTEX_ATTRIB_ARRAY10_NV:
1460 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1461 params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled;
1462 break;
1463 case GL_VERTEX_ATTRIB_ARRAY11_NV:
1464 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1465 params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled;
1466 break;
1467 case GL_VERTEX_ATTRIB_ARRAY12_NV:
1468 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1469 params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled;
1470 break;
1471 case GL_VERTEX_ATTRIB_ARRAY13_NV:
1472 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1473 params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled;
1474 break;
1475 case GL_VERTEX_ATTRIB_ARRAY14_NV:
1476 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1477 params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled;
1478 break;
1479 case GL_VERTEX_ATTRIB_ARRAY15_NV:
1480 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1481 params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled;
1482 break;
1483 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
1484 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1485 params[0] = ctx->Eval.Map1Attrib[0];
1486 break;
1487 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
1488 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1489 params[0] = ctx->Eval.Map1Attrib[1];
1490 break;
1491 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
1492 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1493 params[0] = ctx->Eval.Map1Attrib[2];
1494 break;
1495 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
1496 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1497 params[0] = ctx->Eval.Map1Attrib[3];
1498 break;
1499 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
1500 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1501 params[0] = ctx->Eval.Map1Attrib[4];
1502 break;
1503 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
1504 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1505 params[0] = ctx->Eval.Map1Attrib[5];
1506 break;
1507 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
1508 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1509 params[0] = ctx->Eval.Map1Attrib[6];
1510 break;
1511 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
1512 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1513 params[0] = ctx->Eval.Map1Attrib[7];
1514 break;
1515 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
1516 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1517 params[0] = ctx->Eval.Map1Attrib[8];
1518 break;
1519 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
1520 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1521 params[0] = ctx->Eval.Map1Attrib[9];
1522 break;
1523 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
1524 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1525 params[0] = ctx->Eval.Map1Attrib[10];
1526 break;
1527 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
1528 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1529 params[0] = ctx->Eval.Map1Attrib[11];
1530 break;
1531 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
1532 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1533 params[0] = ctx->Eval.Map1Attrib[12];
1534 break;
1535 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
1536 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1537 params[0] = ctx->Eval.Map1Attrib[13];
1538 break;
1539 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
1540 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1541 params[0] = ctx->Eval.Map1Attrib[14];
1542 break;
1543 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
1544 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1545 params[0] = ctx->Eval.Map1Attrib[15];
1546 break;
1547 case GL_FRAGMENT_PROGRAM_NV:
1548 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1549 params[0] = ctx->FragmentProgram.Enabled;
1550 break;
1551 case GL_FRAGMENT_PROGRAM_BINDING_NV:
1552 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1553 params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
1554 break;
1555 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
1556 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1557 params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
1558 break;
1559 case GL_TEXTURE_RECTANGLE_NV:
1560 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1561 params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV);
1562 break;
1563 case GL_TEXTURE_BINDING_RECTANGLE_NV:
1564 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1565 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
1566 break;
1567 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
1568 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1569 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize);
1570 break;
1571 case GL_STENCIL_TEST_TWO_SIDE_EXT:
1572 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
1573 params[0] = ctx->Stencil.TestTwoSide;
1574 break;
1575 case GL_ACTIVE_STENCIL_FACE_EXT:
1576 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
1577 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
1578 break;
1579 case GL_MAX_SHININESS_NV:
1580 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
1581 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess);
1582 break;
1583 case GL_MAX_SPOT_EXPONENT_NV:
1584 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
1585 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent);
1586 break;
1587 case GL_ARRAY_BUFFER_BINDING_ARB:
1588 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name);
1589 break;
1590 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
1591 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
1592 break;
1593 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
1594 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name);
1595 break;
1596 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
1597 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name);
1598 break;
1599 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
1600 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name);
1601 break;
1602 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
1603 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
1604 break;
1605 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
1606 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
1607 break;
1608 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
1609 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
1610 break;
1611 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
1612 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
1613 break;
1614 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
1615 params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name);
1616 break;
1617 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
1618 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
1619 params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name);
1620 break;
1621 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
1622 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
1623 params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name);
1624 break;
1625 case GL_VERTEX_PROGRAM_ARB:
1626 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1627 params[0] = ctx->VertexProgram.Enabled;
1628 break;
1629 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
1630 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1631 params[0] = ctx->VertexProgram.PointSizeEnabled;
1632 break;
1633 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
1634 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1635 params[0] = ctx->VertexProgram.TwoSideEnabled;
1636 break;
1637 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
1638 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1639 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth);
1640 break;
1641 case GL_MAX_PROGRAM_MATRICES_ARB:
1642 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1643 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices);
1644 break;
1645 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
1646 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1647 params[0] = ctx->CurrentStack->Depth + 1;
1648 break;
1649 case GL_CURRENT_MATRIX_ARB:
1650 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1651 {
1652 const GLfloat *matrix = ctx->CurrentStack->Top->m;
1653 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1654 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
1655 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
1656 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
1657 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
1658 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1659 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
1660 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
1661 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
1662 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
1663 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1664 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
1665 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
1666 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
1667 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
1668 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1669 }
1670 break;
1671 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
1672 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetBooleanv");
1673 {
1674 const GLfloat *matrix = ctx->CurrentStack->Top->m;
1675 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1676 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1677 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1678 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1679 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1680 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1681 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1682 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1683 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1684 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1685 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1686 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1687 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1688 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1689 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1690 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1691 }
1692 break;
1693 case GL_MAX_VERTEX_ATTRIBS_ARB:
1694 CHECK_EXT1(ARB_vertex_program, "GetBooleanv");
1695 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs);
1696 break;
1697 case GL_PROGRAM_ERROR_POSITION_ARB:
1698 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetBooleanv");
1699 params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos);
1700 break;
1701 case GL_FRAGMENT_PROGRAM_ARB:
1702 CHECK_EXT1(ARB_fragment_program, "GetBooleanv");
1703 params[0] = ctx->FragmentProgram.Enabled;
1704 break;
1705 case GL_MAX_TEXTURE_COORDS_ARB:
1706 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1707 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits);
1708 break;
1709 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
1710 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1711 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits);
1712 break;
1713 case GL_DEPTH_BOUNDS_TEST_EXT:
1714 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
1715 params[0] = ctx->Depth.BoundsTest;
1716 break;
1717 case GL_DEPTH_BOUNDS_EXT:
1718 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
1719 params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
1720 params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
1721 break;
1722 case GL_MAX_DRAW_BUFFERS_ARB:
1723 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
1724 break;
1725 case GL_DRAW_BUFFER0_ARB:
1726 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
1727 break;
1728 case GL_DRAW_BUFFER1_ARB:
1729 {
1730 GLenum buffer;
1731 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1732 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1733 return;
1734 }
1735 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
1736 params[0] = ENUM_TO_BOOLEAN(buffer);
1737 }
1738 break;
1739 case GL_DRAW_BUFFER2_ARB:
1740 {
1741 GLenum buffer;
1742 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1743 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1744 return;
1745 }
1746 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
1747 params[0] = ENUM_TO_BOOLEAN(buffer);
1748 }
1749 break;
1750 case GL_DRAW_BUFFER3_ARB:
1751 {
1752 GLenum buffer;
1753 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1754 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1755 return;
1756 }
1757 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
1758 params[0] = ENUM_TO_BOOLEAN(buffer);
1759 }
1760 break;
1761 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
1762 CHECK_EXT1(OES_read_format, "GetBooleanv");
1763 params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadType);
1764 break;
1765 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1766 CHECK_EXT1(OES_read_format, "GetBooleanv");
1767 params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadFormat);
1768 break;
1769 case GL_NUM_FRAGMENT_REGISTERS_ATI:
1770 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1771 params[0] = INT_TO_BOOLEAN(6);
1772 break;
1773 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
1774 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1775 params[0] = INT_TO_BOOLEAN(8);
1776 break;
1777 case GL_NUM_PASSES_ATI:
1778 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1779 params[0] = INT_TO_BOOLEAN(2);
1780 break;
1781 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
1782 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1783 params[0] = INT_TO_BOOLEAN(8);
1784 break;
1785 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
1786 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1787 params[0] = INT_TO_BOOLEAN(16);
1788 break;
1789 case GL_COLOR_ALPHA_PAIRING_ATI:
1790 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1791 params[0] = GL_TRUE;
1792 break;
1793 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
1794 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1795 params[0] = INT_TO_BOOLEAN(3);
1796 break;
1797 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
1798 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1799 params[0] = INT_TO_BOOLEAN(3);
1800 break;
1801 case GL_STENCIL_BACK_FUNC:
1802 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
1803 break;
1804 case GL_STENCIL_BACK_VALUE_MASK:
1805 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
1806 break;
1807 case GL_STENCIL_BACK_WRITEMASK:
1808 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]);
1809 break;
1810 case GL_STENCIL_BACK_REF:
1811 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
1812 break;
1813 case GL_STENCIL_BACK_FAIL:
1814 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
1815 break;
1816 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
1817 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
1818 break;
1819 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
1820 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
1821 break;
1822 case GL_FRAMEBUFFER_BINDING_EXT:
1823 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1824 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
1825 break;
1826 case GL_RENDERBUFFER_BINDING_EXT:
1827 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1828 params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
1829 break;
1830 case GL_MAX_COLOR_ATTACHMENTS_EXT:
1831 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1832 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
1833 break;
1834 case GL_MAX_RENDERBUFFER_SIZE_EXT:
1835 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1836 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
1837 break;
1838 case GL_READ_FRAMEBUFFER_BINDING_EXT:
1839 CHECK_EXT1(EXT_framebuffer_blit, "GetBooleanv");
1840 params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name);
1841 break;
1842 case GL_PROVOKING_VERTEX_EXT:
1843 CHECK_EXT1(EXT_provoking_vertex, "GetBooleanv");
1844 params[0] = ctx->Light.ProvokingVertex;
1845 break;
1846 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
1847 CHECK_EXT1(EXT_provoking_vertex, "GetBooleanv");
1848 params[0] = ctx->Const.QuadsFollowProvokingVertexConvention;
1849 break;
1850 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
1851 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
1852 params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents);
1853 break;
1854 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
1855 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
1856 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
1857 break;
1858 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
1859 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1860 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents);
1861 break;
1862 case GL_MAX_VARYING_FLOATS_ARB:
1863 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1864 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4);
1865 break;
1866 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
1867 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1868 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits);
1869 break;
1870 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
1871 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1872 params[0] = INT_TO_BOOLEAN(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
1873 break;
1874 case GL_CURRENT_PROGRAM:
1875 CHECK_EXT1(ARB_shader_objects, "GetBooleanv");
1876 params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
1877 break;
1878 case GL_MAX_SAMPLES:
1879 CHECK_EXT1(ARB_framebuffer_object, "GetBooleanv");
1880 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxSamples);
1881 break;
1882 case GL_VERTEX_ARRAY_BINDING_APPLE:
1883 CHECK_EXT1(APPLE_vertex_array_object, "GetBooleanv");
1884 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Name);
1885 break;
1886 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
1887 CHECK_EXT1(ARB_seamless_cube_map, "GetBooleanv");
1888 params[0] = ctx->Texture.CubeMapSeamless;
1889 break;
1890 default:
1891 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
1892 }
1893 }
1894
1895 void GLAPIENTRY
1896 _mesa_GetFloatv( GLenum pname, GLfloat *params )
1897 {
1898 GET_CURRENT_CONTEXT(ctx);
1899 ASSERT_OUTSIDE_BEGIN_END(ctx);
1900
1901 if (!params)
1902 return;
1903
1904 if (ctx->NewState)
1905 _mesa_update_state(ctx);
1906
1907 if (ctx->Driver.GetFloatv &&
1908 ctx->Driver.GetFloatv(ctx, pname, params))
1909 return;
1910
1911 switch (pname) {
1912 case GL_ACCUM_RED_BITS:
1913 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
1914 break;
1915 case GL_ACCUM_GREEN_BITS:
1916 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
1917 break;
1918 case GL_ACCUM_BLUE_BITS:
1919 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
1920 break;
1921 case GL_ACCUM_ALPHA_BITS:
1922 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
1923 break;
1924 case GL_ACCUM_CLEAR_VALUE:
1925 params[0] = ctx->Accum.ClearColor[0];
1926 params[1] = ctx->Accum.ClearColor[1];
1927 params[2] = ctx->Accum.ClearColor[2];
1928 params[3] = ctx->Accum.ClearColor[3];
1929 break;
1930 case GL_ALPHA_BIAS:
1931 params[0] = ctx->Pixel.AlphaBias;
1932 break;
1933 case GL_ALPHA_BITS:
1934 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
1935 break;
1936 case GL_ALPHA_SCALE:
1937 params[0] = ctx->Pixel.AlphaScale;
1938 break;
1939 case GL_ALPHA_TEST:
1940 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
1941 break;
1942 case GL_ALPHA_TEST_FUNC:
1943 params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
1944 break;
1945 case GL_ALPHA_TEST_REF:
1946 params[0] = ctx->Color.AlphaRef;
1947 break;
1948 case GL_ATTRIB_STACK_DEPTH:
1949 params[0] = (GLfloat)(ctx->AttribStackDepth);
1950 break;
1951 case GL_AUTO_NORMAL:
1952 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
1953 break;
1954 case GL_AUX_BUFFERS:
1955 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
1956 break;
1957 case GL_BLEND:
1958 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.BlendEnabled);
1959 break;
1960 case GL_BLEND_DST:
1961 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
1962 break;
1963 case GL_BLEND_SRC:
1964 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
1965 break;
1966 case GL_BLEND_SRC_RGB_EXT:
1967 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
1968 break;
1969 case GL_BLEND_DST_RGB_EXT:
1970 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
1971 break;
1972 case GL_BLEND_SRC_ALPHA_EXT:
1973 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
1974 break;
1975 case GL_BLEND_DST_ALPHA_EXT:
1976 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
1977 break;
1978 case GL_BLEND_EQUATION:
1979 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
1980 break;
1981 case GL_BLEND_EQUATION_ALPHA_EXT:
1982 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
1983 break;
1984 case GL_BLEND_COLOR_EXT:
1985 params[0] = ctx->Color.BlendColor[0];
1986 params[1] = ctx->Color.BlendColor[1];
1987 params[2] = ctx->Color.BlendColor[2];
1988 params[3] = ctx->Color.BlendColor[3];
1989 break;
1990 case GL_BLUE_BIAS:
1991 params[0] = ctx->Pixel.BlueBias;
1992 break;
1993 case GL_BLUE_BITS:
1994 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
1995 break;
1996 case GL_BLUE_SCALE:
1997 params[0] = ctx->Pixel.BlueScale;
1998 break;
1999 case GL_CLIENT_ATTRIB_STACK_DEPTH:
2000 params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
2001 break;
2002 case GL_CLIP_PLANE0:
2003 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
2004 break;
2005 case GL_CLIP_PLANE1:
2006 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
2007 break;
2008 case GL_CLIP_PLANE2:
2009 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
2010 break;
2011 case GL_CLIP_PLANE3:
2012 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
2013 break;
2014 case GL_CLIP_PLANE4:
2015 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
2016 break;
2017 case GL_CLIP_PLANE5:
2018 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
2019 break;
2020 case GL_COLOR_CLEAR_VALUE:
2021 params[0] = ctx->Color.ClearColor[0];
2022 params[1] = ctx->Color.ClearColor[1];
2023 params[2] = ctx->Color.ClearColor[2];
2024 params[3] = ctx->Color.ClearColor[3];
2025 break;
2026 case GL_COLOR_MATERIAL:
2027 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
2028 break;
2029 case GL_COLOR_MATERIAL_FACE:
2030 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
2031 break;
2032 case GL_COLOR_MATERIAL_PARAMETER:
2033 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
2034 break;
2035 case GL_COLOR_WRITEMASK:
2036 params[0] = (GLfloat)(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
2037 params[1] = (GLfloat)(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
2038 params[2] = (GLfloat)(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
2039 params[3] = (GLfloat)(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
2040 break;
2041 case GL_CULL_FACE:
2042 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
2043 break;
2044 case GL_CULL_FACE_MODE:
2045 params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
2046 break;
2047 case GL_CURRENT_COLOR:
2048 {
2049 FLUSH_CURRENT(ctx, 0);
2050 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
2051 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
2052 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
2053 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
2054 }
2055 break;
2056 case GL_CURRENT_INDEX:
2057 {
2058 FLUSH_CURRENT(ctx, 0);
2059 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
2060 }
2061 break;
2062 case GL_CURRENT_NORMAL:
2063 {
2064 FLUSH_CURRENT(ctx, 0);
2065 params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
2066 params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
2067 params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
2068 }
2069 break;
2070 case GL_CURRENT_RASTER_COLOR:
2071 params[0] = ctx->Current.RasterColor[0];
2072 params[1] = ctx->Current.RasterColor[1];
2073 params[2] = ctx->Current.RasterColor[2];
2074 params[3] = ctx->Current.RasterColor[3];
2075 break;
2076 case GL_CURRENT_RASTER_DISTANCE:
2077 params[0] = ctx->Current.RasterDistance;
2078 break;
2079 case GL_CURRENT_RASTER_INDEX:
2080 params[0] = ctx->Current.RasterIndex;
2081 break;
2082 case GL_CURRENT_RASTER_POSITION:
2083 params[0] = ctx->Current.RasterPos[0];
2084 params[1] = ctx->Current.RasterPos[1];
2085 params[2] = ctx->Current.RasterPos[2];
2086 params[3] = ctx->Current.RasterPos[3];
2087 break;
2088 case GL_CURRENT_RASTER_SECONDARY_COLOR:
2089 params[0] = ctx->Current.RasterSecondaryColor[0];
2090 params[1] = ctx->Current.RasterSecondaryColor[1];
2091 params[2] = ctx->Current.RasterSecondaryColor[2];
2092 params[3] = ctx->Current.RasterSecondaryColor[3];
2093 break;
2094 case GL_CURRENT_RASTER_TEXTURE_COORDS:
2095 {
2096 const GLuint texUnit = ctx->Texture.CurrentUnit;
2097 params[0] = ctx->Current.RasterTexCoords[texUnit][0];
2098 params[1] = ctx->Current.RasterTexCoords[texUnit][1];
2099 params[2] = ctx->Current.RasterTexCoords[texUnit][2];
2100 params[3] = ctx->Current.RasterTexCoords[texUnit][3];
2101 }
2102 break;
2103 case GL_CURRENT_RASTER_POSITION_VALID:
2104 params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
2105 break;
2106 case GL_CURRENT_TEXTURE_COORDS:
2107 {
2108 const GLuint texUnit = ctx->Texture.CurrentUnit;
2109 FLUSH_CURRENT(ctx, 0);
2110 params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
2111 params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
2112 params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
2113 params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
2114 }
2115 break;
2116 case GL_DEPTH_BIAS:
2117 params[0] = ctx->Pixel.DepthBias;
2118 break;
2119 case GL_DEPTH_BITS:
2120 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
2121 break;
2122 case GL_DEPTH_CLEAR_VALUE:
2123 params[0] = ((GLfloat) ctx->Depth.Clear);
2124 break;
2125 case GL_DEPTH_FUNC:
2126 params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
2127 break;
2128 case GL_DEPTH_RANGE:
2129 params[0] = ctx->Viewport.Near;
2130 params[1] = ctx->Viewport.Far;
2131 break;
2132 case GL_DEPTH_SCALE:
2133 params[0] = ctx->Pixel.DepthScale;
2134 break;
2135 case GL_DEPTH_TEST:
2136 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
2137 break;
2138 case GL_DEPTH_WRITEMASK:
2139 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
2140 break;
2141 case GL_DITHER:
2142 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
2143 break;
2144 case GL_DOUBLEBUFFER:
2145 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
2146 break;
2147 case GL_DRAW_BUFFER:
2148 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
2149 break;
2150 case GL_EDGE_FLAG:
2151 {
2152 FLUSH_CURRENT(ctx, 0);
2153 params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
2154 }
2155 break;
2156 case GL_FEEDBACK_BUFFER_SIZE:
2157 params[0] = (GLfloat)(ctx->Feedback.BufferSize);
2158 break;
2159 case GL_FEEDBACK_BUFFER_TYPE:
2160 params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
2161 break;
2162 case GL_FOG:
2163 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
2164 break;
2165 case GL_FOG_COLOR:
2166 params[0] = ctx->Fog.Color[0];
2167 params[1] = ctx->Fog.Color[1];
2168 params[2] = ctx->Fog.Color[2];
2169 params[3] = ctx->Fog.Color[3];
2170 break;
2171 case GL_FOG_DENSITY:
2172 params[0] = ctx->Fog.Density;
2173 break;
2174 case GL_FOG_END:
2175 params[0] = ctx->Fog.End;
2176 break;
2177 case GL_FOG_HINT:
2178 params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
2179 break;
2180 case GL_FOG_INDEX:
2181 params[0] = ctx->Fog.Index;
2182 break;
2183 case GL_FOG_MODE:
2184 params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
2185 break;
2186 case GL_FOG_START:
2187 params[0] = ctx->Fog.Start;
2188 break;
2189 case GL_FRONT_FACE:
2190 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
2191 break;
2192 case GL_GREEN_BIAS:
2193 params[0] = ctx->Pixel.GreenBias;
2194 break;
2195 case GL_GREEN_BITS:
2196 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
2197 break;
2198 case GL_GREEN_SCALE:
2199 params[0] = ctx->Pixel.GreenScale;
2200 break;
2201 case GL_INDEX_BITS:
2202 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
2203 break;
2204 case GL_INDEX_CLEAR_VALUE:
2205 params[0] = (GLfloat)(ctx->Color.ClearIndex);
2206 break;
2207 case GL_INDEX_MODE:
2208 params[0] = BOOLEAN_TO_FLOAT(!ctx->DrawBuffer->Visual.rgbMode);
2209 break;
2210 case GL_INDEX_OFFSET:
2211 params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
2212 break;
2213 case GL_INDEX_SHIFT:
2214 params[0] = (GLfloat)(ctx->Pixel.IndexShift);
2215 break;
2216 case GL_INDEX_WRITEMASK:
2217 params[0] = (GLfloat)(ctx->Color.IndexMask);
2218 break;
2219 case GL_LIGHT0:
2220 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
2221 break;
2222 case GL_LIGHT1:
2223 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
2224 break;
2225 case GL_LIGHT2:
2226 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
2227 break;
2228 case GL_LIGHT3:
2229 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
2230 break;
2231 case GL_LIGHT4:
2232 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
2233 break;
2234 case GL_LIGHT5:
2235 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
2236 break;
2237 case GL_LIGHT6:
2238 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
2239 break;
2240 case GL_LIGHT7:
2241 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
2242 break;
2243 case GL_LIGHTING:
2244 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
2245 break;
2246 case GL_LIGHT_MODEL_AMBIENT:
2247 params[0] = ctx->Light.Model.Ambient[0];
2248 params[1] = ctx->Light.Model.Ambient[1];
2249 params[2] = ctx->Light.Model.Ambient[2];
2250 params[3] = ctx->Light.Model.Ambient[3];
2251 break;
2252 case GL_LIGHT_MODEL_COLOR_CONTROL:
2253 params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
2254 break;
2255 case GL_LIGHT_MODEL_LOCAL_VIEWER:
2256 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
2257 break;
2258 case GL_LIGHT_MODEL_TWO_SIDE:
2259 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
2260 break;
2261 case GL_LINE_SMOOTH:
2262 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
2263 break;
2264 case GL_LINE_SMOOTH_HINT:
2265 params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
2266 break;
2267 case GL_LINE_STIPPLE:
2268 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
2269 break;
2270 case GL_LINE_STIPPLE_PATTERN:
2271 params[0] = (GLfloat)(ctx->Line.StipplePattern);
2272 break;
2273 case GL_LINE_STIPPLE_REPEAT:
2274 params[0] = (GLfloat)(ctx->Line.StippleFactor);
2275 break;
2276 case GL_LINE_WIDTH:
2277 params[0] = ctx->Line.Width;
2278 break;
2279 case GL_LINE_WIDTH_GRANULARITY:
2280 params[0] = ctx->Const.LineWidthGranularity;
2281 break;
2282 case GL_LINE_WIDTH_RANGE:
2283 params[0] = ctx->Const.MinLineWidthAA;
2284 params[1] = ctx->Const.MaxLineWidthAA;
2285 break;
2286 case GL_ALIASED_LINE_WIDTH_RANGE:
2287 params[0] = ctx->Const.MinLineWidth;
2288 params[1] = ctx->Const.MaxLineWidth;
2289 break;
2290 case GL_LIST_BASE:
2291 params[0] = (GLfloat)(ctx->List.ListBase);
2292 break;
2293 case GL_LIST_INDEX:
2294 params[0] = (GLfloat)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
2295 break;
2296 case GL_LIST_MODE:
2297 {
2298 GLenum mode;
2299 if (!ctx->CompileFlag)
2300 mode = 0;
2301 else if (ctx->ExecuteFlag)
2302 mode = GL_COMPILE_AND_EXECUTE;
2303 else
2304 mode = GL_COMPILE;
2305 params[0] = ENUM_TO_FLOAT(mode);
2306 }
2307 break;
2308 case GL_INDEX_LOGIC_OP:
2309 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
2310 break;
2311 case GL_COLOR_LOGIC_OP:
2312 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
2313 break;
2314 case GL_LOGIC_OP_MODE:
2315 params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
2316 break;
2317 case GL_MAP1_COLOR_4:
2318 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
2319 break;
2320 case GL_MAP1_GRID_DOMAIN:
2321 params[0] = ctx->Eval.MapGrid1u1;
2322 params[1] = ctx->Eval.MapGrid1u2;
2323 break;
2324 case GL_MAP1_GRID_SEGMENTS:
2325 params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
2326 break;
2327 case GL_MAP1_INDEX:
2328 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
2329 break;
2330 case GL_MAP1_NORMAL:
2331 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
2332 break;
2333 case GL_MAP1_TEXTURE_COORD_1:
2334 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
2335 break;
2336 case GL_MAP1_TEXTURE_COORD_2:
2337 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
2338 break;
2339 case GL_MAP1_TEXTURE_COORD_3:
2340 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
2341 break;
2342 case GL_MAP1_TEXTURE_COORD_4:
2343 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
2344 break;
2345 case GL_MAP1_VERTEX_3:
2346 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
2347 break;
2348 case GL_MAP1_VERTEX_4:
2349 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
2350 break;
2351 case GL_MAP2_COLOR_4:
2352 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
2353 break;
2354 case GL_MAP2_GRID_DOMAIN:
2355 params[0] = ctx->Eval.MapGrid2u1;
2356 params[1] = ctx->Eval.MapGrid2u2;
2357 params[2] = ctx->Eval.MapGrid2v1;
2358 params[3] = ctx->Eval.MapGrid2v2;
2359 break;
2360 case GL_MAP2_GRID_SEGMENTS:
2361 params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
2362 params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
2363 break;
2364 case GL_MAP2_INDEX:
2365 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
2366 break;
2367 case GL_MAP2_NORMAL:
2368 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
2369 break;
2370 case GL_MAP2_TEXTURE_COORD_1:
2371 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
2372 break;
2373 case GL_MAP2_TEXTURE_COORD_2:
2374 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
2375 break;
2376 case GL_MAP2_TEXTURE_COORD_3:
2377 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
2378 break;
2379 case GL_MAP2_TEXTURE_COORD_4:
2380 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
2381 break;
2382 case GL_MAP2_VERTEX_3:
2383 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
2384 break;
2385 case GL_MAP2_VERTEX_4:
2386 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
2387 break;
2388 case GL_MAP_COLOR:
2389 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
2390 break;
2391 case GL_MAP_STENCIL:
2392 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
2393 break;
2394 case GL_MATRIX_MODE:
2395 params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
2396 break;
2397 case GL_MAX_ATTRIB_STACK_DEPTH:
2398 params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
2399 break;
2400 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
2401 params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
2402 break;
2403 case GL_MAX_CLIP_PLANES:
2404 params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
2405 break;
2406 case GL_MAX_ELEMENTS_VERTICES:
2407 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2408 break;
2409 case GL_MAX_ELEMENTS_INDICES:
2410 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2411 break;
2412 case GL_MAX_EVAL_ORDER:
2413 params[0] = (GLfloat)(MAX_EVAL_ORDER);
2414 break;
2415 case GL_MAX_LIGHTS:
2416 params[0] = (GLfloat)(ctx->Const.MaxLights);
2417 break;
2418 case GL_MAX_LIST_NESTING:
2419 params[0] = (GLfloat)(MAX_LIST_NESTING);
2420 break;
2421 case GL_MAX_MODELVIEW_STACK_DEPTH:
2422 params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
2423 break;
2424 case GL_MAX_NAME_STACK_DEPTH:
2425 params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
2426 break;
2427 case GL_MAX_PIXEL_MAP_TABLE:
2428 params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
2429 break;
2430 case GL_MAX_PROJECTION_STACK_DEPTH:
2431 params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
2432 break;
2433 case GL_MAX_TEXTURE_SIZE:
2434 params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
2435 break;
2436 case GL_MAX_3D_TEXTURE_SIZE:
2437 params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
2438 break;
2439 case GL_MAX_TEXTURE_STACK_DEPTH:
2440 params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
2441 break;
2442 case GL_MAX_VIEWPORT_DIMS:
2443 params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
2444 params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
2445 break;
2446 case GL_MODELVIEW_MATRIX:
2447 {
2448 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
2449 params[0] = matrix[0];
2450 params[1] = matrix[1];
2451 params[2] = matrix[2];
2452 params[3] = matrix[3];
2453 params[4] = matrix[4];
2454 params[5] = matrix[5];
2455 params[6] = matrix[6];
2456 params[7] = matrix[7];
2457 params[8] = matrix[8];
2458 params[9] = matrix[9];
2459 params[10] = matrix[10];
2460 params[11] = matrix[11];
2461 params[12] = matrix[12];
2462 params[13] = matrix[13];
2463 params[14] = matrix[14];
2464 params[15] = matrix[15];
2465 }
2466 break;
2467 case GL_MODELVIEW_STACK_DEPTH:
2468 params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
2469 break;
2470 case GL_NAME_STACK_DEPTH:
2471 params[0] = (GLfloat)(ctx->Select.NameStackDepth);
2472 break;
2473 case GL_NORMALIZE:
2474 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
2475 break;
2476 case GL_PACK_ALIGNMENT:
2477 params[0] = (GLfloat)(ctx->Pack.Alignment);
2478 break;
2479 case GL_PACK_LSB_FIRST:
2480 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
2481 break;
2482 case GL_PACK_ROW_LENGTH:
2483 params[0] = (GLfloat)(ctx->Pack.RowLength);
2484 break;
2485 case GL_PACK_SKIP_PIXELS:
2486 params[0] = (GLfloat)(ctx->Pack.SkipPixels);
2487 break;
2488 case GL_PACK_SKIP_ROWS:
2489 params[0] = (GLfloat)(ctx->Pack.SkipRows);
2490 break;
2491 case GL_PACK_SWAP_BYTES:
2492 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
2493 break;
2494 case GL_PACK_SKIP_IMAGES_EXT:
2495 params[0] = (GLfloat)(ctx->Pack.SkipImages);
2496 break;
2497 case GL_PACK_IMAGE_HEIGHT_EXT:
2498 params[0] = (GLfloat)(ctx->Pack.ImageHeight);
2499 break;
2500 case GL_PACK_INVERT_MESA:
2501 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
2502 break;
2503 case GL_PERSPECTIVE_CORRECTION_HINT:
2504 params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
2505 break;
2506 case GL_PIXEL_MAP_A_TO_A_SIZE:
2507 params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size);
2508 break;
2509 case GL_PIXEL_MAP_B_TO_B_SIZE:
2510 params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size);
2511 break;
2512 case GL_PIXEL_MAP_G_TO_G_SIZE:
2513 params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size);
2514 break;
2515 case GL_PIXEL_MAP_I_TO_A_SIZE:
2516 params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size);
2517 break;
2518 case GL_PIXEL_MAP_I_TO_B_SIZE:
2519 params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size);
2520 break;
2521 case GL_PIXEL_MAP_I_TO_G_SIZE:
2522 params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size);
2523 break;
2524 case GL_PIXEL_MAP_I_TO_I_SIZE:
2525 params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size);
2526 break;
2527 case GL_PIXEL_MAP_I_TO_R_SIZE:
2528 params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size);
2529 break;
2530 case GL_PIXEL_MAP_R_TO_R_SIZE:
2531 params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size);
2532 break;
2533 case GL_PIXEL_MAP_S_TO_S_SIZE:
2534 params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size);
2535 break;
2536 case GL_POINT_SIZE:
2537 params[0] = ctx->Point.Size;
2538 break;
2539 case GL_POINT_SIZE_GRANULARITY:
2540 params[0] = ctx->Const.PointSizeGranularity;
2541 break;
2542 case GL_POINT_SIZE_RANGE:
2543 params[0] = ctx->Const.MinPointSizeAA;
2544 params[1] = ctx->Const.MaxPointSizeAA;
2545 break;
2546 case GL_ALIASED_POINT_SIZE_RANGE:
2547 params[0] = ctx->Const.MinPointSize;
2548 params[1] = ctx->Const.MaxPointSize;
2549 break;
2550 case GL_POINT_SMOOTH:
2551 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
2552 break;
2553 case GL_POINT_SMOOTH_HINT:
2554 params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
2555 break;
2556 case GL_POINT_SIZE_MIN_EXT:
2557 params[0] = ctx->Point.MinSize;
2558 break;
2559 case GL_POINT_SIZE_MAX_EXT:
2560 params[0] = ctx->Point.MaxSize;
2561 break;
2562 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
2563 params[0] = ctx->Point.Threshold;
2564 break;
2565 case GL_DISTANCE_ATTENUATION_EXT:
2566 params[0] = ctx->Point.Params[0];
2567 params[1] = ctx->Point.Params[1];
2568 params[2] = ctx->Point.Params[2];
2569 break;
2570 case GL_POLYGON_MODE:
2571 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
2572 params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
2573 break;
2574 case GL_POLYGON_OFFSET_BIAS_EXT:
2575 params[0] = ctx->Polygon.OffsetUnits;
2576 break;
2577 case GL_POLYGON_OFFSET_FACTOR:
2578 params[0] = ctx->Polygon.OffsetFactor ;
2579 break;
2580 case GL_POLYGON_OFFSET_UNITS:
2581 params[0] = ctx->Polygon.OffsetUnits ;
2582 break;
2583 case GL_POLYGON_OFFSET_POINT:
2584 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint);
2585 break;
2586 case GL_POLYGON_OFFSET_LINE:
2587 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine);
2588 break;
2589 case GL_POLYGON_OFFSET_FILL:
2590 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill);
2591 break;
2592 case GL_POLYGON_SMOOTH:
2593 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
2594 break;
2595 case GL_POLYGON_SMOOTH_HINT:
2596 params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
2597 break;
2598 case GL_POLYGON_STIPPLE:
2599 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
2600 break;
2601 case GL_PROJECTION_MATRIX:
2602 {
2603 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
2604 params[0] = matrix[0];
2605 params[1] = matrix[1];
2606 params[2] = matrix[2];
2607 params[3] = matrix[3];
2608 params[4] = matrix[4];
2609 params[5] = matrix[5];
2610 params[6] = matrix[6];
2611 params[7] = matrix[7];
2612 params[8] = matrix[8];
2613 params[9] = matrix[9];
2614 params[10] = matrix[10];
2615 params[11] = matrix[11];
2616 params[12] = matrix[12];
2617 params[13] = matrix[13];
2618 params[14] = matrix[14];
2619 params[15] = matrix[15];
2620 }
2621 break;
2622 case GL_PROJECTION_STACK_DEPTH:
2623 params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
2624 break;
2625 case GL_READ_BUFFER:
2626 params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
2627 break;
2628 case GL_RED_BIAS:
2629 params[0] = ctx->Pixel.RedBias;
2630 break;
2631 case GL_RED_BITS:
2632 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits);
2633 break;
2634 case GL_RED_SCALE:
2635 params[0] = ctx->Pixel.RedScale;
2636 break;
2637 case GL_RENDER_MODE:
2638 params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
2639 break;
2640 case GL_RESCALE_NORMAL:
2641 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
2642 break;
2643 case GL_RGBA_MODE:
2644 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.rgbMode);
2645 break;
2646 case GL_SCISSOR_BOX:
2647 params[0] = (GLfloat)(ctx->Scissor.X);
2648 params[1] = (GLfloat)(ctx->Scissor.Y);
2649 params[2] = (GLfloat)(ctx->Scissor.Width);
2650 params[3] = (GLfloat)(ctx->Scissor.Height);
2651 break;
2652 case GL_SCISSOR_TEST:
2653 params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
2654 break;
2655 case GL_SELECTION_BUFFER_SIZE:
2656 params[0] = (GLfloat)(ctx->Select.BufferSize);
2657 break;
2658 case GL_SHADE_MODEL:
2659 params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
2660 break;
2661 case GL_SHARED_TEXTURE_PALETTE_EXT:
2662 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
2663 break;
2664 case GL_STENCIL_BITS:
2665 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
2666 break;
2667 case GL_STENCIL_CLEAR_VALUE:
2668 params[0] = (GLfloat)(ctx->Stencil.Clear);
2669 break;
2670 case GL_STENCIL_FAIL:
2671 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
2672 break;
2673 case GL_STENCIL_FUNC:
2674 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
2675 break;
2676 case GL_STENCIL_PASS_DEPTH_FAIL:
2677 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
2678 break;
2679 case GL_STENCIL_PASS_DEPTH_PASS:
2680 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
2681 break;
2682 case GL_STENCIL_REF:
2683 params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
2684 break;
2685 case GL_STENCIL_TEST:
2686 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
2687 break;
2688 case GL_STENCIL_VALUE_MASK:
2689 params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
2690 break;
2691 case GL_STENCIL_WRITEMASK:
2692 params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
2693 break;
2694 case GL_STEREO:
2695 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
2696 break;
2697 case GL_SUBPIXEL_BITS:
2698 params[0] = (GLfloat)(ctx->Const.SubPixelBits);
2699 break;
2700 case GL_TEXTURE_1D:
2701 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
2702 break;
2703 case GL_TEXTURE_2D:
2704 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
2705 break;
2706 case GL_TEXTURE_3D:
2707 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
2708 break;
2709 case GL_TEXTURE_1D_ARRAY_EXT:
2710 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2711 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
2712 break;
2713 case GL_TEXTURE_2D_ARRAY_EXT:
2714 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2715 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
2716 break;
2717 case GL_TEXTURE_BINDING_1D:
2718 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
2719 break;
2720 case GL_TEXTURE_BINDING_2D:
2721 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
2722 break;
2723 case GL_TEXTURE_BINDING_3D:
2724 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
2725 break;
2726 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
2727 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2728 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
2729 break;
2730 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
2731 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2732 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
2733 break;
2734 case GL_TEXTURE_GEN_S:
2735 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
2736 break;
2737 case GL_TEXTURE_GEN_T:
2738 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
2739 break;
2740 case GL_TEXTURE_GEN_R:
2741 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
2742 break;
2743 case GL_TEXTURE_GEN_Q:
2744 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
2745 break;
2746 case GL_TEXTURE_MATRIX:
2747 {
2748 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
2749 params[0] = matrix[0];
2750 params[1] = matrix[1];
2751 params[2] = matrix[2];
2752 params[3] = matrix[3];
2753 params[4] = matrix[4];
2754 params[5] = matrix[5];
2755 params[6] = matrix[6];
2756 params[7] = matrix[7];
2757 params[8] = matrix[8];
2758 params[9] = matrix[9];
2759 params[10] = matrix[10];
2760 params[11] = matrix[11];
2761 params[12] = matrix[12];
2762 params[13] = matrix[13];
2763 params[14] = matrix[14];
2764 params[15] = matrix[15];
2765 }
2766 break;
2767 case GL_TEXTURE_STACK_DEPTH:
2768 params[0] = (GLfloat)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
2769 break;
2770 case GL_UNPACK_ALIGNMENT:
2771 params[0] = (GLfloat)(ctx->Unpack.Alignment);
2772 break;
2773 case GL_UNPACK_LSB_FIRST:
2774 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
2775 break;
2776 case GL_UNPACK_ROW_LENGTH:
2777 params[0] = (GLfloat)(ctx->Unpack.RowLength);
2778 break;
2779 case GL_UNPACK_SKIP_PIXELS:
2780 params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
2781 break;
2782 case GL_UNPACK_SKIP_ROWS:
2783 params[0] = (GLfloat)(ctx->Unpack.SkipRows);
2784 break;
2785 case GL_UNPACK_SWAP_BYTES:
2786 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
2787 break;
2788 case GL_UNPACK_SKIP_IMAGES_EXT:
2789 params[0] = (GLfloat)(ctx->Unpack.SkipImages);
2790 break;
2791 case GL_UNPACK_IMAGE_HEIGHT_EXT:
2792 params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
2793 break;
2794 case GL_UNPACK_CLIENT_STORAGE_APPLE:
2795 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
2796 break;
2797 case GL_VIEWPORT:
2798 params[0] = (GLfloat)(ctx->Viewport.X);
2799 params[1] = (GLfloat)(ctx->Viewport.Y);
2800 params[2] = (GLfloat)(ctx->Viewport.Width);
2801 params[3] = (GLfloat)(ctx->Viewport.Height);
2802 break;
2803 case GL_ZOOM_X:
2804 params[0] = ctx->Pixel.ZoomX;
2805 break;
2806 case GL_ZOOM_Y:
2807 params[0] = ctx->Pixel.ZoomY;
2808 break;
2809 case GL_VERTEX_ARRAY:
2810 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
2811 break;
2812 case GL_VERTEX_ARRAY_SIZE:
2813 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
2814 break;
2815 case GL_VERTEX_ARRAY_TYPE:
2816 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
2817 break;
2818 case GL_VERTEX_ARRAY_STRIDE:
2819 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
2820 break;
2821 case GL_VERTEX_ARRAY_COUNT_EXT:
2822 params[0] = (GLfloat)(0);
2823 break;
2824 case GL_NORMAL_ARRAY:
2825 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
2826 break;
2827 case GL_NORMAL_ARRAY_TYPE:
2828 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
2829 break;
2830 case GL_NORMAL_ARRAY_STRIDE:
2831 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
2832 break;
2833 case GL_NORMAL_ARRAY_COUNT_EXT:
2834 params[0] = (GLfloat)(0);
2835 break;
2836 case GL_COLOR_ARRAY:
2837 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
2838 break;
2839 case GL_COLOR_ARRAY_SIZE:
2840 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
2841 break;
2842 case GL_COLOR_ARRAY_TYPE:
2843 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
2844 break;
2845 case GL_COLOR_ARRAY_STRIDE:
2846 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
2847 break;
2848 case GL_COLOR_ARRAY_COUNT_EXT:
2849 params[0] = (GLfloat)(0);
2850 break;
2851 case GL_INDEX_ARRAY:
2852 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
2853 break;
2854 case GL_INDEX_ARRAY_TYPE:
2855 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
2856 break;
2857 case GL_INDEX_ARRAY_STRIDE:
2858 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
2859 break;
2860 case GL_INDEX_ARRAY_COUNT_EXT:
2861 params[0] = (GLfloat)(0);
2862 break;
2863 case GL_TEXTURE_COORD_ARRAY:
2864 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
2865 break;
2866 case GL_TEXTURE_COORD_ARRAY_SIZE:
2867 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
2868 break;
2869 case GL_TEXTURE_COORD_ARRAY_TYPE:
2870 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
2871 break;
2872 case GL_TEXTURE_COORD_ARRAY_STRIDE:
2873 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
2874 break;
2875 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
2876 params[0] = (GLfloat)(0);
2877 break;
2878 case GL_EDGE_FLAG_ARRAY:
2879 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
2880 break;
2881 case GL_EDGE_FLAG_ARRAY_STRIDE:
2882 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
2883 break;
2884 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
2885 params[0] = (GLfloat)(0);
2886 break;
2887 case GL_MAX_TEXTURE_UNITS_ARB:
2888 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2889 params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
2890 break;
2891 case GL_ACTIVE_TEXTURE_ARB:
2892 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2893 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
2894 break;
2895 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
2896 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2897 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
2898 break;
2899 case GL_TEXTURE_CUBE_MAP_ARB:
2900 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2901 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
2902 break;
2903 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
2904 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2905 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
2906 break;
2907 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
2908 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2909 params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
2910 break;
2911 case GL_TEXTURE_COMPRESSION_HINT_ARB:
2912 params[0] = (GLfloat)(ctx->Hint.TextureCompression);
2913 break;
2914 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
2915 params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
2916 break;
2917 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
2918 {
2919 GLint formats[100];
2920 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
2921 ASSERT(n <= 100);
2922 for (i = 0; i < n; i++)
2923 params[i] = ENUM_TO_FLOAT(formats[i]);
2924 }
2925 break;
2926 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
2927 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
2928 params[0] = (GLfloat)(ctx->Array.LockFirst);
2929 break;
2930 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
2931 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
2932 params[0] = (GLfloat)(ctx->Array.LockCount);
2933 break;
2934 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
2935 {
2936 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
2937 params[0] = matrix[0];
2938 params[1] = matrix[4];
2939 params[2] = matrix[8];
2940 params[3] = matrix[12];
2941 params[4] = matrix[1];
2942 params[5] = matrix[5];
2943 params[6] = matrix[9];
2944 params[7] = matrix[13];
2945 params[8] = matrix[2];
2946 params[9] = matrix[6];
2947 params[10] = matrix[10];
2948 params[11] = matrix[14];
2949 params[12] = matrix[3];
2950 params[13] = matrix[7];
2951 params[14] = matrix[11];
2952 params[15] = matrix[15];
2953 }
2954 break;
2955 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
2956 {
2957 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
2958 params[0] = matrix[0];
2959 params[1] = matrix[4];
2960 params[2] = matrix[8];
2961 params[3] = matrix[12];
2962 params[4] = matrix[1];
2963 params[5] = matrix[5];
2964 params[6] = matrix[9];
2965 params[7] = matrix[13];
2966 params[8] = matrix[2];
2967 params[9] = matrix[6];
2968 params[10] = matrix[10];
2969 params[11] = matrix[14];
2970 params[12] = matrix[3];
2971 params[13] = matrix[7];
2972 params[14] = matrix[11];
2973 params[15] = matrix[15];
2974 }
2975 break;
2976 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
2977 {
2978 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
2979 params[0] = matrix[0];
2980 params[1] = matrix[4];
2981 params[2] = matrix[8];
2982 params[3] = matrix[12];
2983 params[4] = matrix[1];
2984 params[5] = matrix[5];
2985 params[6] = matrix[9];
2986 params[7] = matrix[13];
2987 params[8] = matrix[2];
2988 params[9] = matrix[6];
2989 params[10] = matrix[10];
2990 params[11] = matrix[14];
2991 params[12] = matrix[3];
2992 params[13] = matrix[7];
2993 params[14] = matrix[11];
2994 params[15] = matrix[15];
2995 }
2996 break;
2997 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
2998 {
2999 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
3000 params[0] = matrix[0];
3001 params[1] = matrix[4];
3002 params[2] = matrix[8];
3003 params[3] = matrix[12];
3004 params[4] = matrix[1];
3005 params[5] = matrix[5];
3006 params[6] = matrix[9];
3007 params[7] = matrix[13];
3008 params[8] = matrix[2];
3009 params[9] = matrix[6];
3010 params[10] = matrix[10];
3011 params[11] = matrix[14];
3012 params[12] = matrix[3];
3013 params[13] = matrix[7];
3014 params[14] = matrix[11];
3015 params[15] = matrix[15];
3016 }
3017 break;
3018 case GL_COLOR_MATRIX_SGI:
3019 {
3020 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
3021 params[0] = matrix[0];
3022 params[1] = matrix[1];
3023 params[2] = matrix[2];
3024 params[3] = matrix[3];
3025 params[4] = matrix[4];
3026 params[5] = matrix[5];
3027 params[6] = matrix[6];
3028 params[7] = matrix[7];
3029 params[8] = matrix[8];
3030 params[9] = matrix[9];
3031 params[10] = matrix[10];
3032 params[11] = matrix[11];
3033 params[12] = matrix[12];
3034 params[13] = matrix[13];
3035 params[14] = matrix[14];
3036 params[15] = matrix[15];
3037 }
3038 break;
3039 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
3040 params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
3041 break;
3042 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
3043 params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
3044 break;
3045 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
3046 params[0] = ctx->Pixel.PostColorMatrixScale[0];
3047 break;
3048 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
3049 params[0] = ctx->Pixel.PostColorMatrixScale[1];
3050 break;
3051 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
3052 params[0] = ctx->Pixel.PostColorMatrixScale[2];
3053 break;
3054 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
3055 params[0] = ctx->Pixel.PostColorMatrixScale[3];
3056 break;
3057 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
3058 params[0] = ctx->Pixel.PostColorMatrixBias[0];
3059 break;
3060 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
3061 params[0] = ctx->Pixel.PostColorMatrixBias[1];
3062 break;
3063 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
3064 params[0] = ctx->Pixel.PostColorMatrixBias[2];
3065 break;
3066 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
3067 params[0] = ctx->Pixel.PostColorMatrixBias[3];
3068 break;
3069 case GL_CONVOLUTION_1D_EXT:
3070 CHECK_EXT1(EXT_convolution, "GetFloatv");
3071 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
3072 break;
3073 case GL_CONVOLUTION_2D_EXT:
3074 CHECK_EXT1(EXT_convolution, "GetFloatv");
3075 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
3076 break;
3077 case GL_SEPARABLE_2D_EXT:
3078 CHECK_EXT1(EXT_convolution, "GetFloatv");
3079 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
3080 break;
3081 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
3082 CHECK_EXT1(EXT_convolution, "GetFloatv");
3083 params[0] = ctx->Pixel.PostConvolutionScale[0];
3084 break;
3085 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
3086 CHECK_EXT1(EXT_convolution, "GetFloatv");
3087 params[0] = ctx->Pixel.PostConvolutionScale[1];
3088 break;
3089 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
3090 CHECK_EXT1(EXT_convolution, "GetFloatv");
3091 params[0] = ctx->Pixel.PostConvolutionScale[2];
3092 break;
3093 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
3094 CHECK_EXT1(EXT_convolution, "GetFloatv");
3095 params[0] = ctx->Pixel.PostConvolutionScale[3];
3096 break;
3097 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
3098 CHECK_EXT1(EXT_convolution, "GetFloatv");
3099 params[0] = ctx->Pixel.PostConvolutionBias[0];
3100 break;
3101 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
3102 CHECK_EXT1(EXT_convolution, "GetFloatv");
3103 params[0] = ctx->Pixel.PostConvolutionBias[1];
3104 break;
3105 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
3106 CHECK_EXT1(EXT_convolution, "GetFloatv");
3107 params[0] = ctx->Pixel.PostConvolutionBias[2];
3108 break;
3109 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
3110 CHECK_EXT1(EXT_convolution, "GetFloatv");
3111 params[0] = ctx->Pixel.PostConvolutionBias[3];
3112 break;
3113 case GL_HISTOGRAM:
3114 CHECK_EXT1(EXT_histogram, "GetFloatv");
3115 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
3116 break;
3117 case GL_MINMAX:
3118 CHECK_EXT1(EXT_histogram, "GetFloatv");
3119 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
3120 break;
3121 case GL_COLOR_TABLE_SGI:
3122 CHECK_EXT1(SGI_color_table, "GetFloatv");
3123 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
3124 break;
3125 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
3126 CHECK_EXT1(SGI_color_table, "GetFloatv");
3127 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
3128 break;
3129 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
3130 CHECK_EXT1(SGI_color_table, "GetFloatv");
3131 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
3132 break;
3133 case GL_TEXTURE_COLOR_TABLE_SGI:
3134 CHECK_EXT1(SGI_texture_color_table, "GetFloatv");
3135 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
3136 break;
3137 case GL_COLOR_SUM_EXT:
3138 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv");
3139 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
3140 break;
3141 case GL_CURRENT_SECONDARY_COLOR_EXT:
3142 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3143 {
3144 FLUSH_CURRENT(ctx, 0);
3145 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
3146 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
3147 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
3148 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
3149 }
3150 break;
3151 case GL_SECONDARY_COLOR_ARRAY_EXT:
3152 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3153 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
3154 break;
3155 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
3156 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3157 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
3158 break;
3159 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
3160 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3161 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
3162 break;
3163 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
3164 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3165 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
3166 break;
3167 case GL_CURRENT_FOG_COORDINATE_EXT:
3168 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3169 {
3170 FLUSH_CURRENT(ctx, 0);
3171 params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
3172 }
3173 break;
3174 case GL_FOG_COORDINATE_ARRAY_EXT:
3175 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3176 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
3177 break;
3178 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
3179 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3180 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
3181 break;
3182 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
3183 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3184 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
3185 break;
3186 case GL_FOG_COORDINATE_SOURCE_EXT:
3187 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3188 params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
3189 break;
3190 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
3191 CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv");
3192 params[0] = ctx->Const.MaxTextureLodBias;
3193 break;
3194 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
3195 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv");
3196 params[0] = ctx->Const.MaxTextureMaxAnisotropy;
3197 break;
3198 case GL_MULTISAMPLE_ARB:
3199 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
3200 break;
3201 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
3202 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
3203 break;
3204 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
3205 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
3206 break;
3207 case GL_SAMPLE_COVERAGE_ARB:
3208 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
3209 break;
3210 case GL_SAMPLE_COVERAGE_VALUE_ARB:
3211 params[0] = ctx->Multisample.SampleCoverageValue;
3212 break;
3213 case GL_SAMPLE_COVERAGE_INVERT_ARB:
3214 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
3215 break;
3216 case GL_SAMPLE_BUFFERS_ARB:
3217 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
3218 break;
3219 case GL_SAMPLES_ARB:
3220 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
3221 break;
3222 case GL_RASTER_POSITION_UNCLIPPED_IBM:
3223 CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv");
3224 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
3225 break;
3226 case GL_POINT_SPRITE_NV:
3227 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
3228 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
3229 break;
3230 case GL_POINT_SPRITE_R_MODE_NV:
3231 CHECK_EXT1(NV_point_sprite, "GetFloatv");
3232 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
3233 break;
3234 case GL_POINT_SPRITE_COORD_ORIGIN:
3235 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
3236 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
3237 break;
3238 case GL_GENERATE_MIPMAP_HINT_SGIS:
3239 CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv");
3240 params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
3241 break;
3242 case GL_VERTEX_PROGRAM_BINDING_NV:
3243 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3244 params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
3245 break;
3246 case GL_VERTEX_ATTRIB_ARRAY0_NV:
3247 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3248 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
3249 break;
3250 case GL_VERTEX_ATTRIB_ARRAY1_NV:
3251 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3252 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
3253 break;
3254 case GL_VERTEX_ATTRIB_ARRAY2_NV:
3255 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3256 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
3257 break;
3258 case GL_VERTEX_ATTRIB_ARRAY3_NV:
3259 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3260 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
3261 break;
3262 case GL_VERTEX_ATTRIB_ARRAY4_NV:
3263 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3264 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
3265 break;
3266 case GL_VERTEX_ATTRIB_ARRAY5_NV:
3267 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3268 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
3269 break;
3270 case GL_VERTEX_ATTRIB_ARRAY6_NV:
3271 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3272 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
3273 break;
3274 case GL_VERTEX_ATTRIB_ARRAY7_NV:
3275 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3276 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
3277 break;
3278 case GL_VERTEX_ATTRIB_ARRAY8_NV:
3279 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3280 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
3281 break;
3282 case GL_VERTEX_ATTRIB_ARRAY9_NV:
3283 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3284 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
3285 break;
3286 case GL_VERTEX_ATTRIB_ARRAY10_NV:
3287 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3288 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
3289 break;
3290 case GL_VERTEX_ATTRIB_ARRAY11_NV:
3291 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3292 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
3293 break;
3294 case GL_VERTEX_ATTRIB_ARRAY12_NV:
3295 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3296 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
3297 break;
3298 case GL_VERTEX_ATTRIB_ARRAY13_NV:
3299 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3300 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
3301 break;
3302 case GL_VERTEX_ATTRIB_ARRAY14_NV:
3303 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3304 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
3305 break;
3306 case GL_VERTEX_ATTRIB_ARRAY15_NV:
3307 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3308 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
3309 break;
3310 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
3311 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3312 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
3313 break;
3314 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
3315 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3316 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
3317 break;
3318 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
3319 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3320 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
3321 break;
3322 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
3323 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3324 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
3325 break;
3326 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
3327 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3328 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
3329 break;
3330 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
3331 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3332 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
3333 break;
3334 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
3335 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3336 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
3337 break;
3338 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
3339 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3340 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
3341 break;
3342 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
3343 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3344 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
3345 break;
3346 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
3347 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3348 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
3349 break;
3350 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
3351 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3352 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
3353 break;
3354 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
3355 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3356 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
3357 break;
3358 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
3359 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3360 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
3361 break;
3362 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
3363 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3364 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
3365 break;
3366 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
3367 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3368 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
3369 break;
3370 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
3371 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3372 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
3373 break;
3374 case GL_FRAGMENT_PROGRAM_NV:
3375 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3376 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3377 break;
3378 case GL_FRAGMENT_PROGRAM_BINDING_NV:
3379 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3380 params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
3381 break;
3382 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
3383 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3384 params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
3385 break;
3386 case GL_TEXTURE_RECTANGLE_NV:
3387 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3388 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
3389 break;
3390 case GL_TEXTURE_BINDING_RECTANGLE_NV:
3391 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3392 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
3393 break;
3394 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
3395 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3396 params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
3397 break;
3398 case GL_STENCIL_TEST_TWO_SIDE_EXT:
3399 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
3400 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
3401 break;
3402 case GL_ACTIVE_STENCIL_FACE_EXT:
3403 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
3404 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
3405 break;
3406 case GL_MAX_SHININESS_NV:
3407 CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
3408 params[0] = ctx->Const.MaxShininess;
3409 break;
3410 case GL_MAX_SPOT_EXPONENT_NV:
3411 CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
3412 params[0] = ctx->Const.MaxSpotExponent;
3413 break;
3414 case GL_ARRAY_BUFFER_BINDING_ARB:
3415 params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
3416 break;
3417 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
3418 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
3419 break;
3420 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
3421 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
3422 break;
3423 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
3424 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
3425 break;
3426 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
3427 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
3428 break;
3429 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
3430 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
3431 break;
3432 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
3433 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
3434 break;
3435 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
3436 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
3437 break;
3438 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
3439 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
3440 break;
3441 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
3442 params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
3443 break;
3444 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
3445 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
3446 params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
3447 break;
3448 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
3449 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
3450 params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
3451 break;
3452 case GL_VERTEX_PROGRAM_ARB:
3453 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3454 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
3455 break;
3456 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
3457 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3458 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
3459 break;
3460 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
3461 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3462 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
3463 break;
3464 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
3465 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3466 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
3467 break;
3468 case GL_MAX_PROGRAM_MATRICES_ARB:
3469 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3470 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
3471 break;
3472 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
3473 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3474 params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
3475 break;
3476 case GL_CURRENT_MATRIX_ARB:
3477 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv");
3478 {
3479 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3480 params[0] = matrix[0];
3481 params[1] = matrix[1];
3482 params[2] = matrix[2];
3483 params[3] = matrix[3];
3484 params[4] = matrix[4];
3485 params[5] = matrix[5];
3486 params[6] = matrix[6];
3487 params[7] = matrix[7];
3488 params[8] = matrix[8];
3489 params[9] = matrix[9];
3490 params[10] = matrix[10];
3491 params[11] = matrix[11];
3492 params[12] = matrix[12];
3493 params[13] = matrix[13];
3494 params[14] = matrix[14];
3495 params[15] = matrix[15];
3496 }
3497 break;
3498 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
3499 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv");
3500 {
3501 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3502 params[0] = matrix[0];
3503 params[1] = matrix[4];
3504 params[2] = matrix[8];
3505 params[3] = matrix[12];
3506 params[4] = matrix[1];
3507 params[5] = matrix[5];
3508 params[6] = matrix[9];
3509 params[7] = matrix[13];
3510 params[8] = matrix[2];
3511 params[9] = matrix[6];
3512 params[10] = matrix[10];
3513 params[11] = matrix[14];
3514 params[12] = matrix[3];
3515 params[13] = matrix[7];
3516 params[14] = matrix[11];
3517 params[15] = matrix[15];
3518 }
3519 break;
3520 case GL_MAX_VERTEX_ATTRIBS_ARB:
3521 CHECK_EXT1(ARB_vertex_program, "GetFloatv");
3522 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
3523 break;
3524 case GL_PROGRAM_ERROR_POSITION_ARB:
3525 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv");
3526 params[0] = (GLfloat)(ctx->Program.ErrorPos);
3527 break;
3528 case GL_FRAGMENT_PROGRAM_ARB:
3529 CHECK_EXT1(ARB_fragment_program, "GetFloatv");
3530 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3531 break;
3532 case GL_MAX_TEXTURE_COORDS_ARB:
3533 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
3534 params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
3535 break;
3536 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
3537 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
3538 params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
3539 break;
3540 case GL_DEPTH_BOUNDS_TEST_EXT:
3541 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
3542 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
3543 break;
3544 case GL_DEPTH_BOUNDS_EXT:
3545 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
3546 params[0] = ctx->Depth.BoundsMin;
3547 params[1] = ctx->Depth.BoundsMax;
3548 break;
3549 case GL_MAX_DRAW_BUFFERS_ARB:
3550 params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
3551 break;
3552 case GL_DRAW_BUFFER0_ARB:
3553 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
3554 break;
3555 case GL_DRAW_BUFFER1_ARB:
3556 {
3557 GLenum buffer;
3558 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3559 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3560 return;
3561 }
3562 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
3563 params[0] = ENUM_TO_FLOAT(buffer);
3564 }
3565 break;
3566 case GL_DRAW_BUFFER2_ARB:
3567 {
3568 GLenum buffer;
3569 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3570 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3571 return;
3572 }
3573 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
3574 params[0] = ENUM_TO_FLOAT(buffer);
3575 }
3576 break;
3577 case GL_DRAW_BUFFER3_ARB:
3578 {
3579 GLenum buffer;
3580 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3581 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3582 return;
3583 }
3584 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
3585 params[0] = ENUM_TO_FLOAT(buffer);
3586 }
3587 break;
3588 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
3589 CHECK_EXT1(OES_read_format, "GetFloatv");
3590 params[0] = (GLfloat)(ctx->Const.ColorReadType);
3591 break;
3592 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
3593 CHECK_EXT1(OES_read_format, "GetFloatv");
3594 params[0] = (GLfloat)(ctx->Const.ColorReadFormat);
3595 break;
3596 case GL_NUM_FRAGMENT_REGISTERS_ATI:
3597 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3598 params[0] = (GLfloat)(6);
3599 break;
3600 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
3601 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3602 params[0] = (GLfloat)(8);
3603 break;
3604 case GL_NUM_PASSES_ATI:
3605 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3606 params[0] = (GLfloat)(2);
3607 break;
3608 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
3609 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3610 params[0] = (GLfloat)(8);
3611 break;
3612 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
3613 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3614 params[0] = (GLfloat)(16);
3615 break;
3616 case GL_COLOR_ALPHA_PAIRING_ATI:
3617 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3618 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
3619 break;
3620 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
3621 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3622 params[0] = (GLfloat)(3);
3623 break;
3624 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
3625 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3626 params[0] = (GLfloat)(3);
3627 break;
3628 case GL_STENCIL_BACK_FUNC:
3629 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
3630 break;
3631 case GL_STENCIL_BACK_VALUE_MASK:
3632 params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
3633 break;
3634 case GL_STENCIL_BACK_WRITEMASK:
3635 params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]);
3636 break;
3637 case GL_STENCIL_BACK_REF:
3638 params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
3639 break;
3640 case GL_STENCIL_BACK_FAIL:
3641 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
3642 break;
3643 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
3644 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
3645 break;
3646 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
3647 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
3648 break;
3649 case GL_FRAMEBUFFER_BINDING_EXT:
3650 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3651 params[0] = (GLfloat)(ctx->DrawBuffer->Name);
3652 break;
3653 case GL_RENDERBUFFER_BINDING_EXT:
3654 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3655 params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
3656 break;
3657 case GL_MAX_COLOR_ATTACHMENTS_EXT:
3658 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3659 params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
3660 break;
3661 case GL_MAX_RENDERBUFFER_SIZE_EXT:
3662 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3663 params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
3664 break;
3665 case GL_READ_FRAMEBUFFER_BINDING_EXT:
3666 CHECK_EXT1(EXT_framebuffer_blit, "GetFloatv");
3667 params[0] = (GLfloat)(ctx->ReadBuffer->Name);
3668 break;
3669 case GL_PROVOKING_VERTEX_EXT:
3670 CHECK_EXT1(EXT_provoking_vertex, "GetFloatv");
3671 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ProvokingVertex);
3672 break;
3673 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
3674 CHECK_EXT1(EXT_provoking_vertex, "GetFloatv");
3675 params[0] = BOOLEAN_TO_FLOAT(ctx->Const.QuadsFollowProvokingVertexConvention);
3676 break;
3677 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
3678 CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
3679 params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents);
3680 break;
3681 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
3682 CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
3683 params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
3684 break;
3685 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
3686 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3687 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents);
3688 break;
3689 case GL_MAX_VARYING_FLOATS_ARB:
3690 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3691 params[0] = (GLfloat)(ctx->Const.MaxVarying * 4);
3692 break;
3693 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
3694 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3695 params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits);
3696 break;
3697 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
3698 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3699 params[0] = (GLfloat)(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
3700 break;
3701 case GL_CURRENT_PROGRAM:
3702 CHECK_EXT1(ARB_shader_objects, "GetFloatv");
3703 params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
3704 break;
3705 case GL_MAX_SAMPLES:
3706 CHECK_EXT1(ARB_framebuffer_object, "GetFloatv");
3707 params[0] = (GLfloat)(ctx->Const.MaxSamples);
3708 break;
3709 case GL_VERTEX_ARRAY_BINDING_APPLE:
3710 CHECK_EXT1(APPLE_vertex_array_object, "GetFloatv");
3711 params[0] = (GLfloat)(ctx->Array.ArrayObj->Name);
3712 break;
3713 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
3714 CHECK_EXT1(ARB_seamless_cube_map, "GetFloatv");
3715 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.CubeMapSeamless);
3716 break;
3717 default:
3718 _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
3719 }
3720 }
3721
3722 void GLAPIENTRY
3723 _mesa_GetIntegerv( GLenum pname, GLint *params )
3724 {
3725 GET_CURRENT_CONTEXT(ctx);
3726 ASSERT_OUTSIDE_BEGIN_END(ctx);
3727
3728 if (!params)
3729 return;
3730
3731 if (ctx->NewState)
3732 _mesa_update_state(ctx);
3733
3734 if (ctx->Driver.GetIntegerv &&
3735 ctx->Driver.GetIntegerv(ctx, pname, params))
3736 return;
3737
3738 switch (pname) {
3739 case GL_ACCUM_RED_BITS:
3740 params[0] = ctx->DrawBuffer->Visual.accumRedBits;
3741 break;
3742 case GL_ACCUM_GREEN_BITS:
3743 params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
3744 break;
3745 case GL_ACCUM_BLUE_BITS:
3746 params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
3747 break;
3748 case GL_ACCUM_ALPHA_BITS:
3749 params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
3750 break;
3751 case GL_ACCUM_CLEAR_VALUE:
3752 params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
3753 params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
3754 params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
3755 params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
3756 break;
3757 case GL_ALPHA_BIAS:
3758 params[0] = IROUND(ctx->Pixel.AlphaBias);
3759 break;
3760 case GL_ALPHA_BITS:
3761 params[0] = ctx->DrawBuffer->Visual.alphaBits;
3762 break;
3763 case GL_ALPHA_SCALE:
3764 params[0] = IROUND(ctx->Pixel.AlphaScale);
3765 break;
3766 case GL_ALPHA_TEST:
3767 params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
3768 break;
3769 case GL_ALPHA_TEST_FUNC:
3770 params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
3771 break;
3772 case GL_ALPHA_TEST_REF:
3773 params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
3774 break;
3775 case GL_ATTRIB_STACK_DEPTH:
3776 params[0] = ctx->AttribStackDepth;
3777 break;
3778 case GL_AUTO_NORMAL:
3779 params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
3780 break;
3781 case GL_AUX_BUFFERS:
3782 params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
3783 break;
3784 case GL_BLEND:
3785 params[0] = BOOLEAN_TO_INT(ctx->Color.BlendEnabled);
3786 break;
3787 case GL_BLEND_DST:
3788 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3789 break;
3790 case GL_BLEND_SRC:
3791 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3792 break;
3793 case GL_BLEND_SRC_RGB_EXT:
3794 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3795 break;
3796 case GL_BLEND_DST_RGB_EXT:
3797 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3798 break;
3799 case GL_BLEND_SRC_ALPHA_EXT:
3800 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
3801 break;
3802 case GL_BLEND_DST_ALPHA_EXT:
3803 params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
3804 break;
3805 case GL_BLEND_EQUATION:
3806 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
3807 break;
3808 case GL_BLEND_EQUATION_ALPHA_EXT:
3809 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
3810 break;
3811 case GL_BLEND_COLOR_EXT:
3812 params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
3813 params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
3814 params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
3815 params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
3816 break;
3817 case GL_BLUE_BIAS:
3818 params[0] = IROUND(ctx->Pixel.BlueBias);
3819 break;
3820 case GL_BLUE_BITS:
3821 params[0] = ctx->DrawBuffer->Visual.blueBits;
3822 break;
3823 case GL_BLUE_SCALE:
3824 params[0] = IROUND(ctx->Pixel.BlueScale);
3825 break;
3826 case GL_CLIENT_ATTRIB_STACK_DEPTH:
3827 params[0] = ctx->ClientAttribStackDepth;
3828 break;
3829 case GL_CLIP_PLANE0:
3830 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
3831 break;
3832 case GL_CLIP_PLANE1:
3833 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
3834 break;
3835 case GL_CLIP_PLANE2:
3836 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
3837 break;
3838 case GL_CLIP_PLANE3:
3839 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
3840 break;
3841 case GL_CLIP_PLANE4:
3842 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
3843 break;
3844 case GL_CLIP_PLANE5:
3845 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
3846 break;
3847 case GL_COLOR_CLEAR_VALUE:
3848 params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
3849 params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
3850 params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
3851 params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
3852 break;
3853 case GL_COLOR_MATERIAL:
3854 params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
3855 break;
3856 case GL_COLOR_MATERIAL_FACE:
3857 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
3858 break;
3859 case GL_COLOR_MATERIAL_PARAMETER:
3860 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
3861 break;
3862 case GL_COLOR_WRITEMASK:
3863 params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0;
3864 params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0;
3865 params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0;
3866 params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0;
3867 break;
3868 case GL_CULL_FACE:
3869 params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
3870 break;
3871 case GL_CULL_FACE_MODE:
3872 params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
3873 break;
3874 case GL_CURRENT_COLOR:
3875 {
3876 FLUSH_CURRENT(ctx, 0);
3877 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
3878 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
3879 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
3880 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
3881 }
3882 break;
3883 case GL_CURRENT_INDEX:
3884 {
3885 FLUSH_CURRENT(ctx, 0);
3886 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
3887 }
3888 break;
3889 case GL_CURRENT_NORMAL:
3890 {
3891 FLUSH_CURRENT(ctx, 0);
3892 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
3893 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
3894 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
3895 }
3896 break;
3897 case GL_CURRENT_RASTER_COLOR:
3898 params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
3899 params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
3900 params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
3901 params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
3902 break;
3903 case GL_CURRENT_RASTER_DISTANCE:
3904 params[0] = IROUND(ctx->Current.RasterDistance);
3905 break;
3906 case GL_CURRENT_RASTER_INDEX:
3907 params[0] = IROUND(ctx->Current.RasterIndex);
3908 break;
3909 case GL_CURRENT_RASTER_POSITION:
3910 params[0] = IROUND(ctx->Current.RasterPos[0]);
3911 params[1] = IROUND(ctx->Current.RasterPos[1]);
3912 params[2] = IROUND(ctx->Current.RasterPos[2]);
3913 params[3] = IROUND(ctx->Current.RasterPos[3]);
3914 break;
3915 case GL_CURRENT_RASTER_SECONDARY_COLOR:
3916 params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
3917 params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
3918 params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
3919 params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
3920 break;
3921 case GL_CURRENT_RASTER_TEXTURE_COORDS:
3922 {
3923 const GLuint texUnit = ctx->Texture.CurrentUnit;
3924 params[0] = IROUND(ctx->Current.RasterTexCoords[texUnit][0]);
3925 params[1] = IROUND(ctx->Current.RasterTexCoords[texUnit][1]);
3926 params[2] = IROUND(ctx->Current.RasterTexCoords[texUnit][2]);
3927 params[3] = IROUND(ctx->Current.RasterTexCoords[texUnit][3]);
3928 }
3929 break;
3930 case GL_CURRENT_RASTER_POSITION_VALID:
3931 params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
3932 break;
3933 case GL_CURRENT_TEXTURE_COORDS:
3934 {
3935 const GLuint texUnit = ctx->Texture.CurrentUnit;
3936 FLUSH_CURRENT(ctx, 0);
3937 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
3938 params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
3939 params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
3940 params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
3941 }
3942 break;
3943 case GL_DEPTH_BIAS:
3944 params[0] = IROUND(ctx->Pixel.DepthBias);
3945 break;
3946 case GL_DEPTH_BITS:
3947 params[0] = ctx->DrawBuffer->Visual.depthBits;
3948 break;
3949 case GL_DEPTH_CLEAR_VALUE:
3950 params[0] = FLOAT_TO_INT(((GLfloat) ctx->Depth.Clear));
3951 break;
3952 case GL_DEPTH_FUNC:
3953 params[0] = ENUM_TO_INT(ctx->Depth.Func);
3954 break;
3955 case GL_DEPTH_RANGE:
3956 params[0] = FLOAT_TO_INT(ctx->Viewport.Near);
3957 params[1] = FLOAT_TO_INT(ctx->Viewport.Far);
3958 break;
3959 case GL_DEPTH_SCALE:
3960 params[0] = IROUND(ctx->Pixel.DepthScale);
3961 break;
3962 case GL_DEPTH_TEST:
3963 params[0] = BOOLEAN_TO_INT(ctx->Depth.Test);
3964 break;
3965 case GL_DEPTH_WRITEMASK:
3966 params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask);
3967 break;
3968 case GL_DITHER:
3969 params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag);
3970 break;
3971 case GL_DOUBLEBUFFER:
3972 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode);
3973 break;
3974 case GL_DRAW_BUFFER:
3975 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
3976 break;
3977 case GL_EDGE_FLAG:
3978 {
3979 FLUSH_CURRENT(ctx, 0);
3980 params[0] = BOOLEAN_TO_INT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
3981 }
3982 break;
3983 case GL_FEEDBACK_BUFFER_SIZE:
3984 params[0] = ctx->Feedback.BufferSize;
3985 break;
3986 case GL_FEEDBACK_BUFFER_TYPE:
3987 params[0] = ENUM_TO_INT(ctx->Feedback.Type);
3988 break;
3989 case GL_FOG:
3990 params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled);
3991 break;
3992 case GL_FOG_COLOR:
3993 params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]);
3994 params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]);
3995 params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]);
3996 params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]);
3997 break;
3998 case GL_FOG_DENSITY:
3999 params[0] = IROUND(ctx->Fog.Density);
4000 break;
4001 case GL_FOG_END:
4002 params[0] = IROUND(ctx->Fog.End);
4003 break;
4004 case GL_FOG_HINT:
4005 params[0] = ENUM_TO_INT(ctx->Hint.Fog);
4006 break;
4007 case GL_FOG_INDEX:
4008 params[0] = IROUND(ctx->Fog.Index);
4009 break;
4010 case GL_FOG_MODE:
4011 params[0] = ENUM_TO_INT(ctx->Fog.Mode);
4012 break;
4013 case GL_FOG_START:
4014 params[0] = IROUND(ctx->Fog.Start);
4015 break;
4016 case GL_FRONT_FACE:
4017 params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace);
4018 break;
4019 case GL_GREEN_BIAS:
4020 params[0] = IROUND(ctx->Pixel.GreenBias);
4021 break;
4022 case GL_GREEN_BITS:
4023 params[0] = ctx->DrawBuffer->Visual.greenBits;
4024 break;
4025 case GL_GREEN_SCALE:
4026 params[0] = IROUND(ctx->Pixel.GreenScale);
4027 break;
4028 case GL_INDEX_BITS:
4029 params[0] = ctx->DrawBuffer->Visual.indexBits;
4030 break;
4031 case GL_INDEX_CLEAR_VALUE:
4032 params[0] = ctx->Color.ClearIndex;
4033 break;
4034 case GL_INDEX_MODE:
4035 params[0] = BOOLEAN_TO_INT(!ctx->DrawBuffer->Visual.rgbMode);
4036 break;
4037 case GL_INDEX_OFFSET:
4038 params[0] = ctx->Pixel.IndexOffset;
4039 break;
4040 case GL_INDEX_SHIFT:
4041 params[0] = ctx->Pixel.IndexShift;
4042 break;
4043 case GL_INDEX_WRITEMASK:
4044 params[0] = ctx->Color.IndexMask;
4045 break;
4046 case GL_LIGHT0:
4047 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled);
4048 break;
4049 case GL_LIGHT1:
4050 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled);
4051 break;
4052 case GL_LIGHT2:
4053 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled);
4054 break;
4055 case GL_LIGHT3:
4056 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled);
4057 break;
4058 case GL_LIGHT4:
4059 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled);
4060 break;
4061 case GL_LIGHT5:
4062 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled);
4063 break;
4064 case GL_LIGHT6:
4065 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled);
4066 break;
4067 case GL_LIGHT7:
4068 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled);
4069 break;
4070 case GL_LIGHTING:
4071 params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled);
4072 break;
4073 case GL_LIGHT_MODEL_AMBIENT:
4074 params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]);
4075 params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]);
4076 params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]);
4077 params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]);
4078 break;
4079 case GL_LIGHT_MODEL_COLOR_CONTROL:
4080 params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl);
4081 break;
4082 case GL_LIGHT_MODEL_LOCAL_VIEWER:
4083 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer);
4084 break;
4085 case GL_LIGHT_MODEL_TWO_SIDE:
4086 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide);
4087 break;
4088 case GL_LINE_SMOOTH:
4089 params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag);
4090 break;
4091 case GL_LINE_SMOOTH_HINT:
4092 params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth);
4093 break;
4094 case GL_LINE_STIPPLE:
4095 params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag);
4096 break;
4097 case GL_LINE_STIPPLE_PATTERN:
4098 params[0] = ctx->Line.StipplePattern;
4099 break;
4100 case GL_LINE_STIPPLE_REPEAT:
4101 params[0] = ctx->Line.StippleFactor;
4102 break;
4103 case GL_LINE_WIDTH:
4104 params[0] = IROUND(ctx->Line.Width);
4105 break;
4106 case GL_LINE_WIDTH_GRANULARITY:
4107 params[0] = IROUND(ctx->Const.LineWidthGranularity);
4108 break;
4109 case GL_LINE_WIDTH_RANGE:
4110 params[0] = IROUND(ctx->Const.MinLineWidthAA);
4111 params[1] = IROUND(ctx->Const.MaxLineWidthAA);
4112 break;
4113 case GL_ALIASED_LINE_WIDTH_RANGE:
4114 params[0] = IROUND(ctx->Const.MinLineWidth);
4115 params[1] = IROUND(ctx->Const.MaxLineWidth);
4116 break;
4117 case GL_LIST_BASE:
4118 params[0] = ctx->List.ListBase;
4119 break;
4120 case GL_LIST_INDEX:
4121 params[0] = (ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0);
4122 break;
4123 case GL_LIST_MODE:
4124 {
4125 GLenum mode;
4126 if (!ctx->CompileFlag)
4127 mode = 0;
4128 else if (ctx->ExecuteFlag)
4129 mode = GL_COMPILE_AND_EXECUTE;
4130 else
4131 mode = GL_COMPILE;
4132 params[0] = ENUM_TO_INT(mode);
4133 }
4134 break;
4135 case GL_INDEX_LOGIC_OP:
4136 params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled);
4137 break;
4138 case GL_COLOR_LOGIC_OP:
4139 params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled);
4140 break;
4141 case GL_LOGIC_OP_MODE:
4142 params[0] = ENUM_TO_INT(ctx->Color.LogicOp);
4143 break;
4144 case GL_MAP1_COLOR_4:
4145 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4);
4146 break;
4147 case GL_MAP1_GRID_DOMAIN:
4148 params[0] = IROUND(ctx->Eval.MapGrid1u1);
4149 params[1] = IROUND(ctx->Eval.MapGrid1u2);
4150 break;
4151 case GL_MAP1_GRID_SEGMENTS:
4152 params[0] = ctx->Eval.MapGrid1un;
4153 break;
4154 case GL_MAP1_INDEX:
4155 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index);
4156 break;
4157 case GL_MAP1_NORMAL:
4158 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal);
4159 break;
4160 case GL_MAP1_TEXTURE_COORD_1:
4161 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1);
4162 break;
4163 case GL_MAP1_TEXTURE_COORD_2:
4164 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2);
4165 break;
4166 case GL_MAP1_TEXTURE_COORD_3:
4167 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3);
4168 break;
4169 case GL_MAP1_TEXTURE_COORD_4:
4170 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4);
4171 break;
4172 case GL_MAP1_VERTEX_3:
4173 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3);
4174 break;
4175 case GL_MAP1_VERTEX_4:
4176 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4);
4177 break;
4178 case GL_MAP2_COLOR_4:
4179 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4);
4180 break;
4181 case GL_MAP2_GRID_DOMAIN:
4182 params[0] = IROUND(ctx->Eval.MapGrid2u1);
4183 params[1] = IROUND(ctx->Eval.MapGrid2u2);
4184 params[2] = IROUND(ctx->Eval.MapGrid2v1);
4185 params[3] = IROUND(ctx->Eval.MapGrid2v2);
4186 break;
4187 case GL_MAP2_GRID_SEGMENTS:
4188 params[0] = ctx->Eval.MapGrid2un;
4189 params[1] = ctx->Eval.MapGrid2vn;
4190 break;
4191 case GL_MAP2_INDEX:
4192 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index);
4193 break;
4194 case GL_MAP2_NORMAL:
4195 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal);
4196 break;
4197 case GL_MAP2_TEXTURE_COORD_1:
4198 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1);
4199 break;
4200 case GL_MAP2_TEXTURE_COORD_2:
4201 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2);
4202 break;
4203 case GL_MAP2_TEXTURE_COORD_3:
4204 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3);
4205 break;
4206 case GL_MAP2_TEXTURE_COORD_4:
4207 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4);
4208 break;
4209 case GL_MAP2_VERTEX_3:
4210 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3);
4211 break;
4212 case GL_MAP2_VERTEX_4:
4213 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4);
4214 break;
4215 case GL_MAP_COLOR:
4216 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag);
4217 break;
4218 case GL_MAP_STENCIL:
4219 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag);
4220 break;
4221 case GL_MATRIX_MODE:
4222 params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode);
4223 break;
4224 case GL_MAX_ATTRIB_STACK_DEPTH:
4225 params[0] = MAX_ATTRIB_STACK_DEPTH;
4226 break;
4227 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
4228 params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
4229 break;
4230 case GL_MAX_CLIP_PLANES:
4231 params[0] = ctx->Const.MaxClipPlanes;
4232 break;
4233 case GL_MAX_ELEMENTS_VERTICES:
4234 params[0] = ctx->Const.MaxArrayLockSize;
4235 break;
4236 case GL_MAX_ELEMENTS_INDICES:
4237 params[0] = ctx->Const.MaxArrayLockSize;
4238 break;
4239 case GL_MAX_EVAL_ORDER:
4240 params[0] = MAX_EVAL_ORDER;
4241 break;
4242 case GL_MAX_LIGHTS:
4243 params[0] = ctx->Const.MaxLights;
4244 break;
4245 case GL_MAX_LIST_NESTING:
4246 params[0] = MAX_LIST_NESTING;
4247 break;
4248 case GL_MAX_MODELVIEW_STACK_DEPTH:
4249 params[0] = MAX_MODELVIEW_STACK_DEPTH;
4250 break;
4251 case GL_MAX_NAME_STACK_DEPTH:
4252 params[0] = MAX_NAME_STACK_DEPTH;
4253 break;
4254 case GL_MAX_PIXEL_MAP_TABLE:
4255 params[0] = MAX_PIXEL_MAP_TABLE;
4256 break;
4257 case GL_MAX_PROJECTION_STACK_DEPTH:
4258 params[0] = MAX_PROJECTION_STACK_DEPTH;
4259 break;
4260 case GL_MAX_TEXTURE_SIZE:
4261 params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
4262 break;
4263 case GL_MAX_3D_TEXTURE_SIZE:
4264 params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
4265 break;
4266 case GL_MAX_TEXTURE_STACK_DEPTH:
4267 params[0] = MAX_TEXTURE_STACK_DEPTH;
4268 break;
4269 case GL_MAX_VIEWPORT_DIMS:
4270 params[0] = ctx->Const.MaxViewportWidth;
4271 params[1] = ctx->Const.MaxViewportHeight;
4272 break;
4273 case GL_MODELVIEW_MATRIX:
4274 {
4275 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4276 params[0] = IROUND(matrix[0]);
4277 params[1] = IROUND(matrix[1]);
4278 params[2] = IROUND(matrix[2]);
4279 params[3] = IROUND(matrix[3]);
4280 params[4] = IROUND(matrix[4]);
4281 params[5] = IROUND(matrix[5]);
4282 params[6] = IROUND(matrix[6]);
4283 params[7] = IROUND(matrix[7]);
4284 params[8] = IROUND(matrix[8]);
4285 params[9] = IROUND(matrix[9]);
4286 params[10] = IROUND(matrix[10]);
4287 params[11] = IROUND(matrix[11]);
4288 params[12] = IROUND(matrix[12]);
4289 params[13] = IROUND(matrix[13]);
4290 params[14] = IROUND(matrix[14]);
4291 params[15] = IROUND(matrix[15]);
4292 }
4293 break;
4294 case GL_MODELVIEW_STACK_DEPTH:
4295 params[0] = ctx->ModelviewMatrixStack.Depth + 1;
4296 break;
4297 case GL_NAME_STACK_DEPTH:
4298 params[0] = ctx->Select.NameStackDepth;
4299 break;
4300 case GL_NORMALIZE:
4301 params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize);
4302 break;
4303 case GL_PACK_ALIGNMENT:
4304 params[0] = ctx->Pack.Alignment;
4305 break;
4306 case GL_PACK_LSB_FIRST:
4307 params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst);
4308 break;
4309 case GL_PACK_ROW_LENGTH:
4310 params[0] = ctx->Pack.RowLength;
4311 break;
4312 case GL_PACK_SKIP_PIXELS:
4313 params[0] = ctx->Pack.SkipPixels;
4314 break;
4315 case GL_PACK_SKIP_ROWS:
4316 params[0] = ctx->Pack.SkipRows;
4317 break;
4318 case GL_PACK_SWAP_BYTES:
4319 params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes);
4320 break;
4321 case GL_PACK_SKIP_IMAGES_EXT:
4322 params[0] = ctx->Pack.SkipImages;
4323 break;
4324 case GL_PACK_IMAGE_HEIGHT_EXT:
4325 params[0] = ctx->Pack.ImageHeight;
4326 break;
4327 case GL_PACK_INVERT_MESA:
4328 params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert);
4329 break;
4330 case GL_PERSPECTIVE_CORRECTION_HINT:
4331 params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection);
4332 break;
4333 case GL_PIXEL_MAP_A_TO_A_SIZE:
4334 params[0] = ctx->PixelMaps.AtoA.Size;
4335 break;
4336 case GL_PIXEL_MAP_B_TO_B_SIZE:
4337 params[0] = ctx->PixelMaps.BtoB.Size;
4338 break;
4339 case GL_PIXEL_MAP_G_TO_G_SIZE:
4340 params[0] = ctx->PixelMaps.GtoG.Size;
4341 break;
4342 case GL_PIXEL_MAP_I_TO_A_SIZE:
4343 params[0] = ctx->PixelMaps.ItoA.Size;
4344 break;
4345 case GL_PIXEL_MAP_I_TO_B_SIZE:
4346 params[0] = ctx->PixelMaps.ItoB.Size;
4347 break;
4348 case GL_PIXEL_MAP_I_TO_G_SIZE:
4349 params[0] = ctx->PixelMaps.ItoG.Size;
4350 break;
4351 case GL_PIXEL_MAP_I_TO_I_SIZE:
4352 params[0] = ctx->PixelMaps.ItoI.Size;
4353 break;
4354 case GL_PIXEL_MAP_I_TO_R_SIZE:
4355 params[0] = ctx->PixelMaps.ItoR.Size;
4356 break;
4357 case GL_PIXEL_MAP_R_TO_R_SIZE:
4358 params[0] = ctx->PixelMaps.RtoR.Size;
4359 break;
4360 case GL_PIXEL_MAP_S_TO_S_SIZE:
4361 params[0] = ctx->PixelMaps.StoS.Size;
4362 break;
4363 case GL_POINT_SIZE:
4364 params[0] = IROUND(ctx->Point.Size);
4365 break;
4366 case GL_POINT_SIZE_GRANULARITY:
4367 params[0] = IROUND(ctx->Const.PointSizeGranularity);
4368 break;
4369 case GL_POINT_SIZE_RANGE:
4370 params[0] = IROUND(ctx->Const.MinPointSizeAA);
4371 params[1] = IROUND(ctx->Const.MaxPointSizeAA);
4372 break;
4373 case GL_ALIASED_POINT_SIZE_RANGE:
4374 params[0] = IROUND(ctx->Const.MinPointSize);
4375 params[1] = IROUND(ctx->Const.MaxPointSize);
4376 break;
4377 case GL_POINT_SMOOTH:
4378 params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag);
4379 break;
4380 case GL_POINT_SMOOTH_HINT:
4381 params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth);
4382 break;
4383 case GL_POINT_SIZE_MIN_EXT:
4384 params[0] = IROUND(ctx->Point.MinSize);
4385 break;
4386 case GL_POINT_SIZE_MAX_EXT:
4387 params[0] = IROUND(ctx->Point.MaxSize);
4388 break;
4389 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
4390 params[0] = IROUND(ctx->Point.Threshold);
4391 break;
4392 case GL_DISTANCE_ATTENUATION_EXT:
4393 params[0] = IROUND(ctx->Point.Params[0]);
4394 params[1] = IROUND(ctx->Point.Params[1]);
4395 params[2] = IROUND(ctx->Point.Params[2]);
4396 break;
4397 case GL_POLYGON_MODE:
4398 params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode);
4399 params[1] = ENUM_TO_INT(ctx->Polygon.BackMode);
4400 break;
4401 case GL_POLYGON_OFFSET_BIAS_EXT:
4402 params[0] = IROUND(ctx->Polygon.OffsetUnits);
4403 break;
4404 case GL_POLYGON_OFFSET_FACTOR:
4405 params[0] = IROUND(ctx->Polygon.OffsetFactor );
4406 break;
4407 case GL_POLYGON_OFFSET_UNITS:
4408 params[0] = IROUND(ctx->Polygon.OffsetUnits );
4409 break;
4410 case GL_POLYGON_OFFSET_POINT:
4411 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetPoint);
4412 break;
4413 case GL_POLYGON_OFFSET_LINE:
4414 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetLine);
4415 break;
4416 case GL_POLYGON_OFFSET_FILL:
4417 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetFill);
4418 break;
4419 case GL_POLYGON_SMOOTH:
4420 params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag);
4421 break;
4422 case GL_POLYGON_SMOOTH_HINT:
4423 params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth);
4424 break;
4425 case GL_POLYGON_STIPPLE:
4426 params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag);
4427 break;
4428 case GL_PROJECTION_MATRIX:
4429 {
4430 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
4431 params[0] = IROUND(matrix[0]);
4432 params[1] = IROUND(matrix[1]);
4433 params[2] = IROUND(matrix[2]);
4434 params[3] = IROUND(matrix[3]);
4435 params[4] = IROUND(matrix[4]);
4436 params[5] = IROUND(matrix[5]);
4437 params[6] = IROUND(matrix[6]);
4438 params[7] = IROUND(matrix[7]);
4439 params[8] = IROUND(matrix[8]);
4440 params[9] = IROUND(matrix[9]);
4441 params[10] = IROUND(matrix[10]);
4442 params[11] = IROUND(matrix[11]);
4443 params[12] = IROUND(matrix[12]);
4444 params[13] = IROUND(matrix[13]);
4445 params[14] = IROUND(matrix[14]);
4446 params[15] = IROUND(matrix[15]);
4447 }
4448 break;
4449 case GL_PROJECTION_STACK_DEPTH:
4450 params[0] = ctx->ProjectionMatrixStack.Depth + 1;
4451 break;
4452 case GL_READ_BUFFER:
4453 params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer);
4454 break;
4455 case GL_RED_BIAS:
4456 params[0] = IROUND(ctx->Pixel.RedBias);
4457 break;
4458 case GL_RED_BITS:
4459 params[0] = ctx->DrawBuffer->Visual.redBits;
4460 break;
4461 case GL_RED_SCALE:
4462 params[0] = IROUND(ctx->Pixel.RedScale);
4463 break;
4464 case GL_RENDER_MODE:
4465 params[0] = ENUM_TO_INT(ctx->RenderMode);
4466 break;
4467 case GL_RESCALE_NORMAL:
4468 params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals);
4469 break;
4470 case GL_RGBA_MODE:
4471 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.rgbMode);
4472 break;
4473 case GL_SCISSOR_BOX:
4474 params[0] = ctx->Scissor.X;
4475 params[1] = ctx->Scissor.Y;
4476 params[2] = ctx->Scissor.Width;
4477 params[3] = ctx->Scissor.Height;
4478 break;
4479 case GL_SCISSOR_TEST:
4480 params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled);
4481 break;
4482 case GL_SELECTION_BUFFER_SIZE:
4483 params[0] = ctx->Select.BufferSize;
4484 break;
4485 case GL_SHADE_MODEL:
4486 params[0] = ENUM_TO_INT(ctx->Light.ShadeModel);
4487 break;
4488 case GL_SHARED_TEXTURE_PALETTE_EXT:
4489 params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette);
4490 break;
4491 case GL_STENCIL_BITS:
4492 params[0] = ctx->DrawBuffer->Visual.stencilBits;
4493 break;
4494 case GL_STENCIL_CLEAR_VALUE:
4495 params[0] = ctx->Stencil.Clear;
4496 break;
4497 case GL_STENCIL_FAIL:
4498 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
4499 break;
4500 case GL_STENCIL_FUNC:
4501 params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
4502 break;
4503 case GL_STENCIL_PASS_DEPTH_FAIL:
4504 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
4505 break;
4506 case GL_STENCIL_PASS_DEPTH_PASS:
4507 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
4508 break;
4509 case GL_STENCIL_REF:
4510 params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
4511 break;
4512 case GL_STENCIL_TEST:
4513 params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled);
4514 break;
4515 case GL_STENCIL_VALUE_MASK:
4516 params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
4517 break;
4518 case GL_STENCIL_WRITEMASK:
4519 params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
4520 break;
4521 case GL_STEREO:
4522 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode);
4523 break;
4524 case GL_SUBPIXEL_BITS:
4525 params[0] = ctx->Const.SubPixelBits;
4526 break;
4527 case GL_TEXTURE_1D:
4528 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D));
4529 break;
4530 case GL_TEXTURE_2D:
4531 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D));
4532 break;
4533 case GL_TEXTURE_3D:
4534 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D));
4535 break;
4536 case GL_TEXTURE_1D_ARRAY_EXT:
4537 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4538 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
4539 break;
4540 case GL_TEXTURE_2D_ARRAY_EXT:
4541 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4542 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
4543 break;
4544 case GL_TEXTURE_BINDING_1D:
4545 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name;
4546 break;
4547 case GL_TEXTURE_BINDING_2D:
4548 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name;
4549 break;
4550 case GL_TEXTURE_BINDING_3D:
4551 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name;
4552 break;
4553 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
4554 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4555 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name;
4556 break;
4557 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
4558 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4559 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name;
4560 break;
4561 case GL_TEXTURE_GEN_S:
4562 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
4563 break;
4564 case GL_TEXTURE_GEN_T:
4565 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
4566 break;
4567 case GL_TEXTURE_GEN_R:
4568 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
4569 break;
4570 case GL_TEXTURE_GEN_Q:
4571 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
4572 break;
4573 case GL_TEXTURE_MATRIX:
4574 {
4575 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
4576 params[0] = IROUND(matrix[0]);
4577 params[1] = IROUND(matrix[1]);
4578 params[2] = IROUND(matrix[2]);
4579 params[3] = IROUND(matrix[3]);
4580 params[4] = IROUND(matrix[4]);
4581 params[5] = IROUND(matrix[5]);
4582 params[6] = IROUND(matrix[6]);
4583 params[7] = IROUND(matrix[7]);
4584 params[8] = IROUND(matrix[8]);
4585 params[9] = IROUND(matrix[9]);
4586 params[10] = IROUND(matrix[10]);
4587 params[11] = IROUND(matrix[11]);
4588 params[12] = IROUND(matrix[12]);
4589 params[13] = IROUND(matrix[13]);
4590 params[14] = IROUND(matrix[14]);
4591 params[15] = IROUND(matrix[15]);
4592 }
4593 break;
4594 case GL_TEXTURE_STACK_DEPTH:
4595 params[0] = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1;
4596 break;
4597 case GL_UNPACK_ALIGNMENT:
4598 params[0] = ctx->Unpack.Alignment;
4599 break;
4600 case GL_UNPACK_LSB_FIRST:
4601 params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst);
4602 break;
4603 case GL_UNPACK_ROW_LENGTH:
4604 params[0] = ctx->Unpack.RowLength;
4605 break;
4606 case GL_UNPACK_SKIP_PIXELS:
4607 params[0] = ctx->Unpack.SkipPixels;
4608 break;
4609 case GL_UNPACK_SKIP_ROWS:
4610 params[0] = ctx->Unpack.SkipRows;
4611 break;
4612 case GL_UNPACK_SWAP_BYTES:
4613 params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes);
4614 break;
4615 case GL_UNPACK_SKIP_IMAGES_EXT:
4616 params[0] = ctx->Unpack.SkipImages;
4617 break;
4618 case GL_UNPACK_IMAGE_HEIGHT_EXT:
4619 params[0] = ctx->Unpack.ImageHeight;
4620 break;
4621 case GL_UNPACK_CLIENT_STORAGE_APPLE:
4622 params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage);
4623 break;
4624 case GL_VIEWPORT:
4625 params[0] = ctx->Viewport.X;
4626 params[1] = ctx->Viewport.Y;
4627 params[2] = ctx->Viewport.Width;
4628 params[3] = ctx->Viewport.Height;
4629 break;
4630 case GL_ZOOM_X:
4631 params[0] = IROUND(ctx->Pixel.ZoomX);
4632 break;
4633 case GL_ZOOM_Y:
4634 params[0] = IROUND(ctx->Pixel.ZoomY);
4635 break;
4636 case GL_VERTEX_ARRAY:
4637 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled);
4638 break;
4639 case GL_VERTEX_ARRAY_SIZE:
4640 params[0] = ctx->Array.ArrayObj->Vertex.Size;
4641 break;
4642 case GL_VERTEX_ARRAY_TYPE:
4643 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type);
4644 break;
4645 case GL_VERTEX_ARRAY_STRIDE:
4646 params[0] = ctx->Array.ArrayObj->Vertex.Stride;
4647 break;
4648 case GL_VERTEX_ARRAY_COUNT_EXT:
4649 params[0] = 0;
4650 break;
4651 case GL_NORMAL_ARRAY:
4652 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled);
4653 break;
4654 case GL_NORMAL_ARRAY_TYPE:
4655 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type);
4656 break;
4657 case GL_NORMAL_ARRAY_STRIDE:
4658 params[0] = ctx->Array.ArrayObj->Normal.Stride;
4659 break;
4660 case GL_NORMAL_ARRAY_COUNT_EXT:
4661 params[0] = 0;
4662 break;
4663 case GL_COLOR_ARRAY:
4664 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled);
4665 break;
4666 case GL_COLOR_ARRAY_SIZE:
4667 params[0] = ctx->Array.ArrayObj->Color.Size;
4668 break;
4669 case GL_COLOR_ARRAY_TYPE:
4670 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type);
4671 break;
4672 case GL_COLOR_ARRAY_STRIDE:
4673 params[0] = ctx->Array.ArrayObj->Color.Stride;
4674 break;
4675 case GL_COLOR_ARRAY_COUNT_EXT:
4676 params[0] = 0;
4677 break;
4678 case GL_INDEX_ARRAY:
4679 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled);
4680 break;
4681 case GL_INDEX_ARRAY_TYPE:
4682 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type);
4683 break;
4684 case GL_INDEX_ARRAY_STRIDE:
4685 params[0] = ctx->Array.ArrayObj->Index.Stride;
4686 break;
4687 case GL_INDEX_ARRAY_COUNT_EXT:
4688 params[0] = 0;
4689 break;
4690 case GL_TEXTURE_COORD_ARRAY:
4691 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
4692 break;
4693 case GL_TEXTURE_COORD_ARRAY_SIZE:
4694 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
4695 break;
4696 case GL_TEXTURE_COORD_ARRAY_TYPE:
4697 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
4698 break;
4699 case GL_TEXTURE_COORD_ARRAY_STRIDE:
4700 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
4701 break;
4702 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
4703 params[0] = 0;
4704 break;
4705 case GL_EDGE_FLAG_ARRAY:
4706 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
4707 break;
4708 case GL_EDGE_FLAG_ARRAY_STRIDE:
4709 params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
4710 break;
4711 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
4712 params[0] = 0;
4713 break;
4714 case GL_MAX_TEXTURE_UNITS_ARB:
4715 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4716 params[0] = ctx->Const.MaxTextureUnits;
4717 break;
4718 case GL_ACTIVE_TEXTURE_ARB:
4719 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4720 params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
4721 break;
4722 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
4723 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4724 params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
4725 break;
4726 case GL_TEXTURE_CUBE_MAP_ARB:
4727 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4728 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
4729 break;
4730 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
4731 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4732 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name;
4733 break;
4734 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
4735 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4736 params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
4737 break;
4738 case GL_TEXTURE_COMPRESSION_HINT_ARB:
4739 params[0] = ctx->Hint.TextureCompression;
4740 break;
4741 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
4742 params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
4743 break;
4744 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
4745 {
4746 GLint formats[100];
4747 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
4748 ASSERT(n <= 100);
4749 for (i = 0; i < n; i++)
4750 params[i] = ENUM_TO_INT(formats[i]);
4751 }
4752 break;
4753 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
4754 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
4755 params[0] = ctx->Array.LockFirst;
4756 break;
4757 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
4758 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
4759 params[0] = ctx->Array.LockCount;
4760 break;
4761 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
4762 {
4763 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
4764 params[0] = IROUND(matrix[0]);
4765 params[1] = IROUND(matrix[4]);
4766 params[2] = IROUND(matrix[8]);
4767 params[3] = IROUND(matrix[12]);
4768 params[4] = IROUND(matrix[1]);
4769 params[5] = IROUND(matrix[5]);
4770 params[6] = IROUND(matrix[9]);
4771 params[7] = IROUND(matrix[13]);
4772 params[8] = IROUND(matrix[2]);
4773 params[9] = IROUND(matrix[6]);
4774 params[10] = IROUND(matrix[10]);
4775 params[11] = IROUND(matrix[14]);
4776 params[12] = IROUND(matrix[3]);
4777 params[13] = IROUND(matrix[7]);
4778 params[14] = IROUND(matrix[11]);
4779 params[15] = IROUND(matrix[15]);
4780 }
4781 break;
4782 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
4783 {
4784 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4785 params[0] = IROUND(matrix[0]);
4786 params[1] = IROUND(matrix[4]);
4787 params[2] = IROUND(matrix[8]);
4788 params[3] = IROUND(matrix[12]);
4789 params[4] = IROUND(matrix[1]);
4790 params[5] = IROUND(matrix[5]);
4791 params[6] = IROUND(matrix[9]);
4792 params[7] = IROUND(matrix[13]);
4793 params[8] = IROUND(matrix[2]);
4794 params[9] = IROUND(matrix[6]);
4795 params[10] = IROUND(matrix[10]);
4796 params[11] = IROUND(matrix[14]);
4797 params[12] = IROUND(matrix[3]);
4798 params[13] = IROUND(matrix[7]);
4799 params[14] = IROUND(matrix[11]);
4800 params[15] = IROUND(matrix[15]);
4801 }
4802 break;
4803 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
4804 {
4805 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
4806 params[0] = IROUND(matrix[0]);
4807 params[1] = IROUND(matrix[4]);
4808 params[2] = IROUND(matrix[8]);
4809 params[3] = IROUND(matrix[12]);
4810 params[4] = IROUND(matrix[1]);
4811 params[5] = IROUND(matrix[5]);
4812 params[6] = IROUND(matrix[9]);
4813 params[7] = IROUND(matrix[13]);
4814 params[8] = IROUND(matrix[2]);
4815 params[9] = IROUND(matrix[6]);
4816 params[10] = IROUND(matrix[10]);
4817 params[11] = IROUND(matrix[14]);
4818 params[12] = IROUND(matrix[3]);
4819 params[13] = IROUND(matrix[7]);
4820 params[14] = IROUND(matrix[11]);
4821 params[15] = IROUND(matrix[15]);
4822 }
4823 break;
4824 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
4825 {
4826 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
4827 params[0] = IROUND(matrix[0]);
4828 params[1] = IROUND(matrix[4]);
4829 params[2] = IROUND(matrix[8]);
4830 params[3] = IROUND(matrix[12]);
4831 params[4] = IROUND(matrix[1]);
4832 params[5] = IROUND(matrix[5]);
4833 params[6] = IROUND(matrix[9]);
4834 params[7] = IROUND(matrix[13]);
4835 params[8] = IROUND(matrix[2]);
4836 params[9] = IROUND(matrix[6]);
4837 params[10] = IROUND(matrix[10]);
4838 params[11] = IROUND(matrix[14]);
4839 params[12] = IROUND(matrix[3]);
4840 params[13] = IROUND(matrix[7]);
4841 params[14] = IROUND(matrix[11]);
4842 params[15] = IROUND(matrix[15]);
4843 }
4844 break;
4845 case GL_COLOR_MATRIX_SGI:
4846 {
4847 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
4848 params[0] = IROUND(matrix[0]);
4849 params[1] = IROUND(matrix[1]);
4850 params[2] = IROUND(matrix[2]);
4851 params[3] = IROUND(matrix[3]);
4852 params[4] = IROUND(matrix[4]);
4853 params[5] = IROUND(matrix[5]);
4854 params[6] = IROUND(matrix[6]);
4855 params[7] = IROUND(matrix[7]);
4856 params[8] = IROUND(matrix[8]);
4857 params[9] = IROUND(matrix[9]);
4858 params[10] = IROUND(matrix[10]);
4859 params[11] = IROUND(matrix[11]);
4860 params[12] = IROUND(matrix[12]);
4861 params[13] = IROUND(matrix[13]);
4862 params[14] = IROUND(matrix[14]);
4863 params[15] = IROUND(matrix[15]);
4864 }
4865 break;
4866 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
4867 params[0] = ctx->ColorMatrixStack.Depth + 1;
4868 break;
4869 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
4870 params[0] = MAX_COLOR_STACK_DEPTH;
4871 break;
4872 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
4873 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
4874 break;
4875 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
4876 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
4877 break;
4878 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
4879 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
4880 break;
4881 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
4882 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
4883 break;
4884 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
4885 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
4886 break;
4887 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
4888 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
4889 break;
4890 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
4891 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
4892 break;
4893 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
4894 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
4895 break;
4896 case GL_CONVOLUTION_1D_EXT:
4897 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4898 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
4899 break;
4900 case GL_CONVOLUTION_2D_EXT:
4901 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4902 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
4903 break;
4904 case GL_SEPARABLE_2D_EXT:
4905 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4906 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
4907 break;
4908 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
4909 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4910 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
4911 break;
4912 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
4913 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4914 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
4915 break;
4916 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
4917 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4918 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
4919 break;
4920 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
4921 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4922 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
4923 break;
4924 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
4925 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4926 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
4927 break;
4928 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
4929 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4930 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
4931 break;
4932 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
4933 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4934 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
4935 break;
4936 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
4937 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4938 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
4939 break;
4940 case GL_HISTOGRAM:
4941 CHECK_EXT1(EXT_histogram, "GetIntegerv");
4942 params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
4943 break;
4944 case GL_MINMAX:
4945 CHECK_EXT1(EXT_histogram, "GetIntegerv");
4946 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
4947 break;
4948 case GL_COLOR_TABLE_SGI:
4949 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4950 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
4951 break;
4952 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
4953 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4954 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
4955 break;
4956 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
4957 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4958 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
4959 break;
4960 case GL_TEXTURE_COLOR_TABLE_SGI:
4961 CHECK_EXT1(SGI_texture_color_table, "GetIntegerv");
4962 params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
4963 break;
4964 case GL_COLOR_SUM_EXT:
4965 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv");
4966 params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
4967 break;
4968 case GL_CURRENT_SECONDARY_COLOR_EXT:
4969 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4970 {
4971 FLUSH_CURRENT(ctx, 0);
4972 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
4973 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
4974 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
4975 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
4976 }
4977 break;
4978 case GL_SECONDARY_COLOR_ARRAY_EXT:
4979 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4980 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
4981 break;
4982 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
4983 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4984 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
4985 break;
4986 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
4987 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4988 params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
4989 break;
4990 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
4991 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4992 params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
4993 break;
4994 case GL_CURRENT_FOG_COORDINATE_EXT:
4995 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
4996 {
4997 FLUSH_CURRENT(ctx, 0);
4998 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
4999 }
5000 break;
5001 case GL_FOG_COORDINATE_ARRAY_EXT:
5002 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5003 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
5004 break;
5005 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
5006 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5007 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
5008 break;
5009 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
5010 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5011 params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
5012 break;
5013 case GL_FOG_COORDINATE_SOURCE_EXT:
5014 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5015 params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
5016 break;
5017 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
5018 CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv");
5019 params[0] = IROUND(ctx->Const.MaxTextureLodBias);
5020 break;
5021 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
5022 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv");
5023 params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
5024 break;
5025 case GL_MULTISAMPLE_ARB:
5026 params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
5027 break;
5028 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
5029 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
5030 break;
5031 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
5032 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
5033 break;
5034 case GL_SAMPLE_COVERAGE_ARB:
5035 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
5036 break;
5037 case GL_SAMPLE_COVERAGE_VALUE_ARB:
5038 params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
5039 break;
5040 case GL_SAMPLE_COVERAGE_INVERT_ARB:
5041 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
5042 break;
5043 case GL_SAMPLE_BUFFERS_ARB:
5044 params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
5045 break;
5046 case GL_SAMPLES_ARB:
5047 params[0] = ctx->DrawBuffer->Visual.samples;
5048 break;
5049 case GL_RASTER_POSITION_UNCLIPPED_IBM:
5050 CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv");
5051 params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
5052 break;
5053 case GL_POINT_SPRITE_NV:
5054 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
5055 params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
5056 break;
5057 case GL_POINT_SPRITE_R_MODE_NV:
5058 CHECK_EXT1(NV_point_sprite, "GetIntegerv");
5059 params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
5060 break;
5061 case GL_POINT_SPRITE_COORD_ORIGIN:
5062 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
5063 params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
5064 break;
5065 case GL_GENERATE_MIPMAP_HINT_SGIS:
5066 CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv");
5067 params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
5068 break;
5069 case GL_VERTEX_PROGRAM_BINDING_NV:
5070 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5071 params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
5072 break;
5073 case GL_VERTEX_ATTRIB_ARRAY0_NV:
5074 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5075 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
5076 break;
5077 case GL_VERTEX_ATTRIB_ARRAY1_NV:
5078 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5079 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
5080 break;
5081 case GL_VERTEX_ATTRIB_ARRAY2_NV:
5082 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5083 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
5084 break;
5085 case GL_VERTEX_ATTRIB_ARRAY3_NV:
5086 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5087 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
5088 break;
5089 case GL_VERTEX_ATTRIB_ARRAY4_NV:
5090 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5091 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
5092 break;
5093 case GL_VERTEX_ATTRIB_ARRAY5_NV:
5094 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5095 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
5096 break;
5097 case GL_VERTEX_ATTRIB_ARRAY6_NV:
5098 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5099 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
5100 break;
5101 case GL_VERTEX_ATTRIB_ARRAY7_NV:
5102 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5103 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
5104 break;
5105 case GL_VERTEX_ATTRIB_ARRAY8_NV:
5106 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5107 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
5108 break;
5109 case GL_VERTEX_ATTRIB_ARRAY9_NV:
5110 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5111 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
5112 break;
5113 case GL_VERTEX_ATTRIB_ARRAY10_NV:
5114 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5115 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
5116 break;
5117 case GL_VERTEX_ATTRIB_ARRAY11_NV:
5118 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5119 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
5120 break;
5121 case GL_VERTEX_ATTRIB_ARRAY12_NV:
5122 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5123 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
5124 break;
5125 case GL_VERTEX_ATTRIB_ARRAY13_NV:
5126 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5127 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
5128 break;
5129 case GL_VERTEX_ATTRIB_ARRAY14_NV:
5130 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5131 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
5132 break;
5133 case GL_VERTEX_ATTRIB_ARRAY15_NV:
5134 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5135 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
5136 break;
5137 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
5138 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5139 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
5140 break;
5141 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
5142 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5143 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
5144 break;
5145 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
5146 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5147 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
5148 break;
5149 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
5150 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5151 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
5152 break;
5153 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
5154 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5155 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
5156 break;
5157 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
5158 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5159 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
5160 break;
5161 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
5162 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5163 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
5164 break;
5165 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
5166 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5167 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
5168 break;
5169 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
5170 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5171 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
5172 break;
5173 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
5174 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5175 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
5176 break;
5177 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
5178 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5179 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
5180 break;
5181 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
5182 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5183 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
5184 break;
5185 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
5186 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5187 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
5188 break;
5189 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
5190 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5191 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
5192 break;
5193 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
5194 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5195 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
5196 break;
5197 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
5198 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5199 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
5200 break;
5201 case GL_FRAGMENT_PROGRAM_NV:
5202 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5203 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5204 break;
5205 case GL_FRAGMENT_PROGRAM_BINDING_NV:
5206 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5207 params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
5208 break;
5209 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
5210 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5211 params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
5212 break;
5213 case GL_TEXTURE_RECTANGLE_NV:
5214 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5215 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
5216 break;
5217 case GL_TEXTURE_BINDING_RECTANGLE_NV:
5218 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5219 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name;
5220 break;
5221 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
5222 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5223 params[0] = ctx->Const.MaxTextureRectSize;
5224 break;
5225 case GL_STENCIL_TEST_TWO_SIDE_EXT:
5226 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
5227 params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
5228 break;
5229 case GL_ACTIVE_STENCIL_FACE_EXT:
5230 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
5231 params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
5232 break;
5233 case GL_MAX_SHININESS_NV:
5234 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
5235 params[0] = IROUND(ctx->Const.MaxShininess);
5236 break;
5237 case GL_MAX_SPOT_EXPONENT_NV:
5238 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
5239 params[0] = IROUND(ctx->Const.MaxSpotExponent);
5240 break;
5241 case GL_ARRAY_BUFFER_BINDING_ARB:
5242 params[0] = ctx->Array.ArrayBufferObj->Name;
5243 break;
5244 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
5245 params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
5246 break;
5247 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
5248 params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
5249 break;
5250 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
5251 params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
5252 break;
5253 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
5254 params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
5255 break;
5256 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
5257 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
5258 break;
5259 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
5260 params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
5261 break;
5262 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
5263 params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
5264 break;
5265 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
5266 params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
5267 break;
5268 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
5269 params[0] = ctx->Array.ElementArrayBufferObj->Name;
5270 break;
5271 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
5272 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
5273 params[0] = ctx->Pack.BufferObj->Name;
5274 break;
5275 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
5276 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
5277 params[0] = ctx->Unpack.BufferObj->Name;
5278 break;
5279 case GL_VERTEX_PROGRAM_ARB:
5280 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5281 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
5282 break;
5283 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
5284 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5285 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
5286 break;
5287 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
5288 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5289 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
5290 break;
5291 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
5292 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5293 params[0] = ctx->Const.MaxProgramMatrixStackDepth;
5294 break;
5295 case GL_MAX_PROGRAM_MATRICES_ARB:
5296 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5297 params[0] = ctx->Const.MaxProgramMatrices;
5298 break;
5299 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
5300 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5301 params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
5302 break;
5303 case GL_CURRENT_MATRIX_ARB:
5304 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5305 {
5306 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5307 params[0] = IROUND(matrix[0]);
5308 params[1] = IROUND(matrix[1]);
5309 params[2] = IROUND(matrix[2]);
5310 params[3] = IROUND(matrix[3]);
5311 params[4] = IROUND(matrix[4]);
5312 params[5] = IROUND(matrix[5]);
5313 params[6] = IROUND(matrix[6]);
5314 params[7] = IROUND(matrix[7]);
5315 params[8] = IROUND(matrix[8]);
5316 params[9] = IROUND(matrix[9]);
5317 params[10] = IROUND(matrix[10]);
5318 params[11] = IROUND(matrix[11]);
5319 params[12] = IROUND(matrix[12]);
5320 params[13] = IROUND(matrix[13]);
5321 params[14] = IROUND(matrix[14]);
5322 params[15] = IROUND(matrix[15]);
5323 }
5324 break;
5325 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
5326 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv");
5327 {
5328 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5329 params[0] = IROUND(matrix[0]);
5330 params[1] = IROUND(matrix[4]);
5331 params[2] = IROUND(matrix[8]);
5332 params[3] = IROUND(matrix[12]);
5333 params[4] = IROUND(matrix[1]);
5334 params[5] = IROUND(matrix[5]);
5335 params[6] = IROUND(matrix[9]);
5336 params[7] = IROUND(matrix[13]);
5337 params[8] = IROUND(matrix[2]);
5338 params[9] = IROUND(matrix[6]);
5339 params[10] = IROUND(matrix[10]);
5340 params[11] = IROUND(matrix[14]);
5341 params[12] = IROUND(matrix[3]);
5342 params[13] = IROUND(matrix[7]);
5343 params[14] = IROUND(matrix[11]);
5344 params[15] = IROUND(matrix[15]);
5345 }
5346 break;
5347 case GL_MAX_VERTEX_ATTRIBS_ARB:
5348 CHECK_EXT1(ARB_vertex_program, "GetIntegerv");
5349 params[0] = ctx->Const.VertexProgram.MaxAttribs;
5350 break;
5351 case GL_PROGRAM_ERROR_POSITION_ARB:
5352 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv");
5353 params[0] = ctx->Program.ErrorPos;
5354 break;
5355 case GL_FRAGMENT_PROGRAM_ARB:
5356 CHECK_EXT1(ARB_fragment_program, "GetIntegerv");
5357 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5358 break;
5359 case GL_MAX_TEXTURE_COORDS_ARB:
5360 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5361 params[0] = ctx->Const.MaxTextureCoordUnits;
5362 break;
5363 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
5364 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5365 params[0] = ctx->Const.MaxTextureImageUnits;
5366 break;
5367 case GL_DEPTH_BOUNDS_TEST_EXT:
5368 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
5369 params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
5370 break;
5371 case GL_DEPTH_BOUNDS_EXT:
5372 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
5373 params[0] = IROUND(ctx->Depth.BoundsMin);
5374 params[1] = IROUND(ctx->Depth.BoundsMax);
5375 break;
5376 case GL_MAX_DRAW_BUFFERS_ARB:
5377 params[0] = ctx->Const.MaxDrawBuffers;
5378 break;
5379 case GL_DRAW_BUFFER0_ARB:
5380 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
5381 break;
5382 case GL_DRAW_BUFFER1_ARB:
5383 {
5384 GLenum buffer;
5385 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5386 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5387 return;
5388 }
5389 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
5390 params[0] = ENUM_TO_INT(buffer);
5391 }
5392 break;
5393 case GL_DRAW_BUFFER2_ARB:
5394 {
5395 GLenum buffer;
5396 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5397 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5398 return;
5399 }
5400 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
5401 params[0] = ENUM_TO_INT(buffer);
5402 }
5403 break;
5404 case GL_DRAW_BUFFER3_ARB:
5405 {
5406 GLenum buffer;
5407 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5408 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5409 return;
5410 }
5411 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
5412 params[0] = ENUM_TO_INT(buffer);
5413 }
5414 break;
5415 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
5416 CHECK_EXT1(OES_read_format, "GetIntegerv");
5417 params[0] = ctx->Const.ColorReadType;
5418 break;
5419 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
5420 CHECK_EXT1(OES_read_format, "GetIntegerv");
5421 params[0] = ctx->Const.ColorReadFormat;
5422 break;
5423 case GL_NUM_FRAGMENT_REGISTERS_ATI:
5424 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5425 params[0] = 6;
5426 break;
5427 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
5428 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5429 params[0] = 8;
5430 break;
5431 case GL_NUM_PASSES_ATI:
5432 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5433 params[0] = 2;
5434 break;
5435 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
5436 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5437 params[0] = 8;
5438 break;
5439 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
5440 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5441 params[0] = 16;
5442 break;
5443 case GL_COLOR_ALPHA_PAIRING_ATI:
5444 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5445 params[0] = BOOLEAN_TO_INT(GL_TRUE);
5446 break;
5447 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
5448 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5449 params[0] = 3;
5450 break;
5451 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
5452 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5453 params[0] = 3;
5454 break;
5455 case GL_STENCIL_BACK_FUNC:
5456 params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
5457 break;
5458 case GL_STENCIL_BACK_VALUE_MASK:
5459 params[0] = ctx->Stencil.ValueMask[1];
5460 break;
5461 case GL_STENCIL_BACK_WRITEMASK:
5462 params[0] = ctx->Stencil.WriteMask[1];
5463 break;
5464 case GL_STENCIL_BACK_REF:
5465 params[0] = ctx->Stencil.Ref[1];
5466 break;
5467 case GL_STENCIL_BACK_FAIL:
5468 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
5469 break;
5470 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
5471 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
5472 break;
5473 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
5474 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
5475 break;
5476 case GL_FRAMEBUFFER_BINDING_EXT:
5477 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5478 params[0] = ctx->DrawBuffer->Name;
5479 break;
5480 case GL_RENDERBUFFER_BINDING_EXT:
5481 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5482 params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
5483 break;
5484 case GL_MAX_COLOR_ATTACHMENTS_EXT:
5485 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5486 params[0] = ctx->Const.MaxColorAttachments;
5487 break;
5488 case GL_MAX_RENDERBUFFER_SIZE_EXT:
5489 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5490 params[0] = ctx->Const.MaxRenderbufferSize;
5491 break;
5492 case GL_READ_FRAMEBUFFER_BINDING_EXT:
5493 CHECK_EXT1(EXT_framebuffer_blit, "GetIntegerv");
5494 params[0] = ctx->ReadBuffer->Name;
5495 break;
5496 case GL_PROVOKING_VERTEX_EXT:
5497 CHECK_EXT1(EXT_provoking_vertex, "GetIntegerv");
5498 params[0] = BOOLEAN_TO_INT(ctx->Light.ProvokingVertex);
5499 break;
5500 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
5501 CHECK_EXT1(EXT_provoking_vertex, "GetIntegerv");
5502 params[0] = BOOLEAN_TO_INT(ctx->Const.QuadsFollowProvokingVertexConvention);
5503 break;
5504 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
5505 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
5506 params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
5507 break;
5508 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
5509 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
5510 params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
5511 break;
5512 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
5513 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5514 params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
5515 break;
5516 case GL_MAX_VARYING_FLOATS_ARB:
5517 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5518 params[0] = ctx->Const.MaxVarying * 4;
5519 break;
5520 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
5521 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5522 params[0] = ctx->Const.MaxVertexTextureImageUnits;
5523 break;
5524 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
5525 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5526 params[0] = MAX_COMBINED_TEXTURE_IMAGE_UNITS;
5527 break;
5528 case GL_CURRENT_PROGRAM:
5529 CHECK_EXT1(ARB_shader_objects, "GetIntegerv");
5530 params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
5531 break;
5532 case GL_MAX_SAMPLES:
5533 CHECK_EXT1(ARB_framebuffer_object, "GetIntegerv");
5534 params[0] = ctx->Const.MaxSamples;
5535 break;
5536 case GL_VERTEX_ARRAY_BINDING_APPLE:
5537 CHECK_EXT1(APPLE_vertex_array_object, "GetIntegerv");
5538 params[0] = ctx->Array.ArrayObj->Name;
5539 break;
5540 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
5541 CHECK_EXT1(ARB_seamless_cube_map, "GetIntegerv");
5542 params[0] = BOOLEAN_TO_INT(ctx->Texture.CubeMapSeamless);
5543 break;
5544 default:
5545 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
5546 }
5547 }
5548
5549 #if FEATURE_ARB_sync
5550 void GLAPIENTRY
5551 _mesa_GetInteger64v( GLenum pname, GLint64 *params )
5552 {
5553 GET_CURRENT_CONTEXT(ctx);
5554 ASSERT_OUTSIDE_BEGIN_END(ctx);
5555
5556 if (!params)
5557 return;
5558
5559 if (ctx->NewState)
5560 _mesa_update_state(ctx);
5561
5562 if (ctx->Driver.GetInteger64v &&
5563 ctx->Driver.GetInteger64v(ctx, pname, params))
5564 return;
5565
5566 switch (pname) {
5567 case GL_ACCUM_RED_BITS:
5568 params[0] = ctx->DrawBuffer->Visual.accumRedBits;
5569 break;
5570 case GL_ACCUM_GREEN_BITS:
5571 params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
5572 break;
5573 case GL_ACCUM_BLUE_BITS:
5574 params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
5575 break;
5576 case GL_ACCUM_ALPHA_BITS:
5577 params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
5578 break;
5579 case GL_ACCUM_CLEAR_VALUE:
5580 params[0] = FLOAT_TO_INT64(ctx->Accum.ClearColor[0]);
5581 params[1] = FLOAT_TO_INT64(ctx->Accum.ClearColor[1]);
5582 params[2] = FLOAT_TO_INT64(ctx->Accum.ClearColor[2]);
5583 params[3] = FLOAT_TO_INT64(ctx->Accum.ClearColor[3]);
5584 break;
5585 case GL_ALPHA_BIAS:
5586 params[0] = IROUND64(ctx->Pixel.AlphaBias);
5587 break;
5588 case GL_ALPHA_BITS:
5589 params[0] = ctx->DrawBuffer->Visual.alphaBits;
5590 break;
5591 case GL_ALPHA_SCALE:
5592 params[0] = IROUND64(ctx->Pixel.AlphaScale);
5593 break;
5594 case GL_ALPHA_TEST:
5595 params[0] = BOOLEAN_TO_INT64(ctx->Color.AlphaEnabled);
5596 break;
5597 case GL_ALPHA_TEST_FUNC:
5598 params[0] = ENUM_TO_INT64(ctx->Color.AlphaFunc);
5599 break;
5600 case GL_ALPHA_TEST_REF:
5601 params[0] = FLOAT_TO_INT64(ctx->Color.AlphaRef);
5602 break;
5603 case GL_ATTRIB_STACK_DEPTH:
5604 params[0] = ctx->AttribStackDepth;
5605 break;
5606 case GL_AUTO_NORMAL:
5607 params[0] = BOOLEAN_TO_INT64(ctx->Eval.AutoNormal);
5608 break;
5609 case GL_AUX_BUFFERS:
5610 params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
5611 break;
5612 case GL_BLEND:
5613 params[0] = BOOLEAN_TO_INT64(ctx->Color.BlendEnabled);
5614 break;
5615 case GL_BLEND_DST:
5616 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB);
5617 break;
5618 case GL_BLEND_SRC:
5619 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB);
5620 break;
5621 case GL_BLEND_SRC_RGB_EXT:
5622 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB);
5623 break;
5624 case GL_BLEND_DST_RGB_EXT:
5625 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB);
5626 break;
5627 case GL_BLEND_SRC_ALPHA_EXT:
5628 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcA);
5629 break;
5630 case GL_BLEND_DST_ALPHA_EXT:
5631 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstA);
5632 break;
5633 case GL_BLEND_EQUATION:
5634 params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationRGB );
5635 break;
5636 case GL_BLEND_EQUATION_ALPHA_EXT:
5637 params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationA );
5638 break;
5639 case GL_BLEND_COLOR_EXT:
5640 params[0] = FLOAT_TO_INT64(ctx->Color.BlendColor[0]);
5641 params[1] = FLOAT_TO_INT64(ctx->Color.BlendColor[1]);
5642 params[2] = FLOAT_TO_INT64(ctx->Color.BlendColor[2]);
5643 params[3] = FLOAT_TO_INT64(ctx->Color.BlendColor[3]);
5644 break;
5645 case GL_BLUE_BIAS:
5646 params[0] = IROUND64(ctx->Pixel.BlueBias);
5647 break;
5648 case GL_BLUE_BITS:
5649 params[0] = ctx->DrawBuffer->Visual.blueBits;
5650 break;
5651 case GL_BLUE_SCALE:
5652 params[0] = IROUND64(ctx->Pixel.BlueScale);
5653 break;
5654 case GL_CLIENT_ATTRIB_STACK_DEPTH:
5655 params[0] = ctx->ClientAttribStackDepth;
5656 break;
5657 case GL_CLIP_PLANE0:
5658 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
5659 break;
5660 case GL_CLIP_PLANE1:
5661 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
5662 break;
5663 case GL_CLIP_PLANE2:
5664 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
5665 break;
5666 case GL_CLIP_PLANE3:
5667 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
5668 break;
5669 case GL_CLIP_PLANE4:
5670 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
5671 break;
5672 case GL_CLIP_PLANE5:
5673 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
5674 break;
5675 case GL_COLOR_CLEAR_VALUE:
5676 params[0] = FLOAT_TO_INT64(ctx->Color.ClearColor[0]);
5677 params[1] = FLOAT_TO_INT64(ctx->Color.ClearColor[1]);
5678 params[2] = FLOAT_TO_INT64(ctx->Color.ClearColor[2]);
5679 params[3] = FLOAT_TO_INT64(ctx->Color.ClearColor[3]);
5680 break;
5681 case GL_COLOR_MATERIAL:
5682 params[0] = BOOLEAN_TO_INT64(ctx->Light.ColorMaterialEnabled);
5683 break;
5684 case GL_COLOR_MATERIAL_FACE:
5685 params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialFace);
5686 break;
5687 case GL_COLOR_MATERIAL_PARAMETER:
5688 params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialMode);
5689 break;
5690 case GL_COLOR_WRITEMASK:
5691 params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0;
5692 params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0;
5693 params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0;
5694 params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0;
5695 break;
5696 case GL_CULL_FACE:
5697 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.CullFlag);
5698 break;
5699 case GL_CULL_FACE_MODE:
5700 params[0] = ENUM_TO_INT64(ctx->Polygon.CullFaceMode);
5701 break;
5702 case GL_CURRENT_COLOR:
5703 {
5704 FLUSH_CURRENT(ctx, 0);
5705 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
5706 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
5707 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
5708 params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
5709 }
5710 break;
5711 case GL_CURRENT_INDEX:
5712 {
5713 FLUSH_CURRENT(ctx, 0);
5714 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
5715 }
5716 break;
5717 case GL_CURRENT_NORMAL:
5718 {
5719 FLUSH_CURRENT(ctx, 0);
5720 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
5721 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
5722 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
5723 }
5724 break;
5725 case GL_CURRENT_RASTER_COLOR:
5726 params[0] = FLOAT_TO_INT64(ctx->Current.RasterColor[0]);
5727 params[1] = FLOAT_TO_INT64(ctx->Current.RasterColor[1]);
5728 params[2] = FLOAT_TO_INT64(ctx->Current.RasterColor[2]);
5729 params[3] = FLOAT_TO_INT64(ctx->Current.RasterColor[3]);
5730 break;
5731 case GL_CURRENT_RASTER_DISTANCE:
5732 params[0] = IROUND64(ctx->Current.RasterDistance);
5733 break;
5734 case GL_CURRENT_RASTER_INDEX:
5735 params[0] = IROUND64(ctx->Current.RasterIndex);
5736 break;
5737 case GL_CURRENT_RASTER_POSITION:
5738 params[0] = IROUND64(ctx->Current.RasterPos[0]);
5739 params[1] = IROUND64(ctx->Current.RasterPos[1]);
5740 params[2] = IROUND64(ctx->Current.RasterPos[2]);
5741 params[3] = IROUND64(ctx->Current.RasterPos[3]);
5742 break;
5743 case GL_CURRENT_RASTER_SECONDARY_COLOR:
5744 params[0] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[0]);
5745 params[1] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[1]);
5746 params[2] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[2]);
5747 params[3] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[3]);
5748 break;
5749 case GL_CURRENT_RASTER_TEXTURE_COORDS:
5750 {
5751 const GLuint texUnit = ctx->Texture.CurrentUnit;
5752 params[0] = IROUND64(ctx->Current.RasterTexCoords[texUnit][0]);
5753 params[1] = IROUND64(ctx->Current.RasterTexCoords[texUnit][1]);
5754 params[2] = IROUND64(ctx->Current.RasterTexCoords[texUnit][2]);
5755 params[3] = IROUND64(ctx->Current.RasterTexCoords[texUnit][3]);
5756 }
5757 break;
5758 case GL_CURRENT_RASTER_POSITION_VALID:
5759 params[0] = BOOLEAN_TO_INT64(ctx->Current.RasterPosValid);
5760 break;
5761 case GL_CURRENT_TEXTURE_COORDS:
5762 {
5763 const GLuint texUnit = ctx->Texture.CurrentUnit;
5764 FLUSH_CURRENT(ctx, 0);
5765 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
5766 params[1] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
5767 params[2] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
5768 params[3] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
5769 }
5770 break;
5771 case GL_DEPTH_BIAS:
5772 params[0] = IROUND64(ctx->Pixel.DepthBias);
5773 break;
5774 case GL_DEPTH_BITS:
5775 params[0] = ctx->DrawBuffer->Visual.depthBits;
5776 break;
5777 case GL_DEPTH_CLEAR_VALUE:
5778 params[0] = FLOAT_TO_INT64(((GLfloat) ctx->Depth.Clear));
5779 break;
5780 case GL_DEPTH_FUNC:
5781 params[0] = ENUM_TO_INT64(ctx->Depth.Func);
5782 break;
5783 case GL_DEPTH_RANGE:
5784 params[0] = FLOAT_TO_INT64(ctx->Viewport.Near);
5785 params[1] = FLOAT_TO_INT64(ctx->Viewport.Far);
5786 break;
5787 case GL_DEPTH_SCALE:
5788 params[0] = IROUND64(ctx->Pixel.DepthScale);
5789 break;
5790 case GL_DEPTH_TEST:
5791 params[0] = BOOLEAN_TO_INT64(ctx->Depth.Test);
5792 break;
5793 case GL_DEPTH_WRITEMASK:
5794 params[0] = BOOLEAN_TO_INT64(ctx->Depth.Mask);
5795 break;
5796 case GL_DITHER:
5797 params[0] = BOOLEAN_TO_INT64(ctx->Color.DitherFlag);
5798 break;
5799 case GL_DOUBLEBUFFER:
5800 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.doubleBufferMode);
5801 break;
5802 case GL_DRAW_BUFFER:
5803 params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]);
5804 break;
5805 case GL_EDGE_FLAG:
5806 {
5807 FLUSH_CURRENT(ctx, 0);
5808 params[0] = BOOLEAN_TO_INT64((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
5809 }
5810 break;
5811 case GL_FEEDBACK_BUFFER_SIZE:
5812 params[0] = ctx->Feedback.BufferSize;
5813 break;
5814 case GL_FEEDBACK_BUFFER_TYPE:
5815 params[0] = ENUM_TO_INT64(ctx->Feedback.Type);
5816 break;
5817 case GL_FOG:
5818 params[0] = BOOLEAN_TO_INT64(ctx->Fog.Enabled);
5819 break;
5820 case GL_FOG_COLOR:
5821 params[0] = FLOAT_TO_INT64(ctx->Fog.Color[0]);
5822 params[1] = FLOAT_TO_INT64(ctx->Fog.Color[1]);
5823 params[2] = FLOAT_TO_INT64(ctx->Fog.Color[2]);
5824 params[3] = FLOAT_TO_INT64(ctx->Fog.Color[3]);
5825 break;
5826 case GL_FOG_DENSITY:
5827 params[0] = IROUND64(ctx->Fog.Density);
5828 break;
5829 case GL_FOG_END:
5830 params[0] = IROUND64(ctx->Fog.End);
5831 break;
5832 case GL_FOG_HINT:
5833 params[0] = ENUM_TO_INT64(ctx->Hint.Fog);
5834 break;
5835 case GL_FOG_INDEX:
5836 params[0] = IROUND64(ctx->Fog.Index);
5837 break;
5838 case GL_FOG_MODE:
5839 params[0] = ENUM_TO_INT64(ctx->Fog.Mode);
5840 break;
5841 case GL_FOG_START:
5842 params[0] = IROUND64(ctx->Fog.Start);
5843 break;
5844 case GL_FRONT_FACE:
5845 params[0] = ENUM_TO_INT64(ctx->Polygon.FrontFace);
5846 break;
5847 case GL_GREEN_BIAS:
5848 params[0] = IROUND64(ctx->Pixel.GreenBias);
5849 break;
5850 case GL_GREEN_BITS:
5851 params[0] = ctx->DrawBuffer->Visual.greenBits;
5852 break;
5853 case GL_GREEN_SCALE:
5854 params[0] = IROUND64(ctx->Pixel.GreenScale);
5855 break;
5856 case GL_INDEX_BITS:
5857 params[0] = ctx->DrawBuffer->Visual.indexBits;
5858 break;
5859 case GL_INDEX_CLEAR_VALUE:
5860 params[0] = ctx->Color.ClearIndex;
5861 break;
5862 case GL_INDEX_MODE:
5863 params[0] = BOOLEAN_TO_INT64(!ctx->DrawBuffer->Visual.rgbMode);
5864 break;
5865 case GL_INDEX_OFFSET:
5866 params[0] = ctx->Pixel.IndexOffset;
5867 break;
5868 case GL_INDEX_SHIFT:
5869 params[0] = ctx->Pixel.IndexShift;
5870 break;
5871 case GL_INDEX_WRITEMASK:
5872 params[0] = ctx->Color.IndexMask;
5873 break;
5874 case GL_LIGHT0:
5875 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[0].Enabled);
5876 break;
5877 case GL_LIGHT1:
5878 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[1].Enabled);
5879 break;
5880 case GL_LIGHT2:
5881 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[2].Enabled);
5882 break;
5883 case GL_LIGHT3:
5884 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[3].Enabled);
5885 break;
5886 case GL_LIGHT4:
5887 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[4].Enabled);
5888 break;
5889 case GL_LIGHT5:
5890 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[5].Enabled);
5891 break;
5892 case GL_LIGHT6:
5893 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[6].Enabled);
5894 break;
5895 case GL_LIGHT7:
5896 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[7].Enabled);
5897 break;
5898 case GL_LIGHTING:
5899 params[0] = BOOLEAN_TO_INT64(ctx->Light.Enabled);
5900 break;
5901 case GL_LIGHT_MODEL_AMBIENT:
5902 params[0] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[0]);
5903 params[1] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[1]);
5904 params[2] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[2]);
5905 params[3] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[3]);
5906 break;
5907 case GL_LIGHT_MODEL_COLOR_CONTROL:
5908 params[0] = ENUM_TO_INT64(ctx->Light.Model.ColorControl);
5909 break;
5910 case GL_LIGHT_MODEL_LOCAL_VIEWER:
5911 params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.LocalViewer);
5912 break;
5913 case GL_LIGHT_MODEL_TWO_SIDE:
5914 params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.TwoSide);
5915 break;
5916 case GL_LINE_SMOOTH:
5917 params[0] = BOOLEAN_TO_INT64(ctx->Line.SmoothFlag);
5918 break;
5919 case GL_LINE_SMOOTH_HINT:
5920 params[0] = ENUM_TO_INT64(ctx->Hint.LineSmooth);
5921 break;
5922 case GL_LINE_STIPPLE:
5923 params[0] = BOOLEAN_TO_INT64(ctx->Line.StippleFlag);
5924 break;
5925 case GL_LINE_STIPPLE_PATTERN:
5926 params[0] = ctx->Line.StipplePattern;
5927 break;
5928 case GL_LINE_STIPPLE_REPEAT:
5929 params[0] = ctx->Line.StippleFactor;
5930 break;
5931 case GL_LINE_WIDTH:
5932 params[0] = IROUND64(ctx->Line.Width);
5933 break;
5934 case GL_LINE_WIDTH_GRANULARITY:
5935 params[0] = IROUND64(ctx->Const.LineWidthGranularity);
5936 break;
5937 case GL_LINE_WIDTH_RANGE:
5938 params[0] = IROUND64(ctx->Const.MinLineWidthAA);
5939 params[1] = IROUND64(ctx->Const.MaxLineWidthAA);
5940 break;
5941 case GL_ALIASED_LINE_WIDTH_RANGE:
5942 params[0] = IROUND64(ctx->Const.MinLineWidth);
5943 params[1] = IROUND64(ctx->Const.MaxLineWidth);
5944 break;
5945 case GL_LIST_BASE:
5946 params[0] = ctx->List.ListBase;
5947 break;
5948 case GL_LIST_INDEX:
5949 params[0] = (ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0);
5950 break;
5951 case GL_LIST_MODE:
5952 {
5953 GLenum mode;
5954 if (!ctx->CompileFlag)
5955 mode = 0;
5956 else if (ctx->ExecuteFlag)
5957 mode = GL_COMPILE_AND_EXECUTE;
5958 else
5959 mode = GL_COMPILE;
5960 params[0] = ENUM_TO_INT64(mode);
5961 }
5962 break;
5963 case GL_INDEX_LOGIC_OP:
5964 params[0] = BOOLEAN_TO_INT64(ctx->Color.IndexLogicOpEnabled);
5965 break;
5966 case GL_COLOR_LOGIC_OP:
5967 params[0] = BOOLEAN_TO_INT64(ctx->Color.ColorLogicOpEnabled);
5968 break;
5969 case GL_LOGIC_OP_MODE:
5970 params[0] = ENUM_TO_INT64(ctx->Color.LogicOp);
5971 break;
5972 case GL_MAP1_COLOR_4:
5973 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Color4);
5974 break;
5975 case GL_MAP1_GRID_DOMAIN:
5976 params[0] = IROUND64(ctx->Eval.MapGrid1u1);
5977 params[1] = IROUND64(ctx->Eval.MapGrid1u2);
5978 break;
5979 case GL_MAP1_GRID_SEGMENTS:
5980 params[0] = ctx->Eval.MapGrid1un;
5981 break;
5982 case GL_MAP1_INDEX:
5983 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Index);
5984 break;
5985 case GL_MAP1_NORMAL:
5986 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Normal);
5987 break;
5988 case GL_MAP1_TEXTURE_COORD_1:
5989 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord1);
5990 break;
5991 case GL_MAP1_TEXTURE_COORD_2:
5992 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord2);
5993 break;
5994 case GL_MAP1_TEXTURE_COORD_3:
5995 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord3);
5996 break;
5997 case GL_MAP1_TEXTURE_COORD_4:
5998 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord4);
5999 break;
6000 case GL_MAP1_VERTEX_3:
6001 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex3);
6002 break;
6003 case GL_MAP1_VERTEX_4:
6004 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex4);
6005 break;
6006 case GL_MAP2_COLOR_4:
6007 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Color4);
6008 break;
6009 case GL_MAP2_GRID_DOMAIN:
6010 params[0] = IROUND64(ctx->Eval.MapGrid2u1);
6011 params[1] = IROUND64(ctx->Eval.MapGrid2u2);
6012 params[2] = IROUND64(ctx->Eval.MapGrid2v1);
6013 params[3] = IROUND64(ctx->Eval.MapGrid2v2);
6014 break;
6015 case GL_MAP2_GRID_SEGMENTS:
6016 params[0] = ctx->Eval.MapGrid2un;
6017 params[1] = ctx->Eval.MapGrid2vn;
6018 break;
6019 case GL_MAP2_INDEX:
6020 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Index);
6021 break;
6022 case GL_MAP2_NORMAL:
6023 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Normal);
6024 break;
6025 case GL_MAP2_TEXTURE_COORD_1:
6026 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord1);
6027 break;
6028 case GL_MAP2_TEXTURE_COORD_2:
6029 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord2);
6030 break;
6031 case GL_MAP2_TEXTURE_COORD_3:
6032 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord3);
6033 break;
6034 case GL_MAP2_TEXTURE_COORD_4:
6035 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord4);
6036 break;
6037 case GL_MAP2_VERTEX_3:
6038 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex3);
6039 break;
6040 case GL_MAP2_VERTEX_4:
6041 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex4);
6042 break;
6043 case GL_MAP_COLOR:
6044 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapColorFlag);
6045 break;
6046 case GL_MAP_STENCIL:
6047 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapStencilFlag);
6048 break;
6049 case GL_MATRIX_MODE:
6050 params[0] = ENUM_TO_INT64(ctx->Transform.MatrixMode);
6051 break;
6052 case GL_MAX_ATTRIB_STACK_DEPTH:
6053 params[0] = MAX_ATTRIB_STACK_DEPTH;
6054 break;
6055 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
6056 params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
6057 break;
6058 case GL_MAX_CLIP_PLANES:
6059 params[0] = ctx->Const.MaxClipPlanes;
6060 break;
6061 case GL_MAX_ELEMENTS_VERTICES:
6062 params[0] = ctx->Const.MaxArrayLockSize;
6063 break;
6064 case GL_MAX_ELEMENTS_INDICES:
6065 params[0] = ctx->Const.MaxArrayLockSize;
6066 break;
6067 case GL_MAX_EVAL_ORDER:
6068 params[0] = MAX_EVAL_ORDER;
6069 break;
6070 case GL_MAX_LIGHTS:
6071 params[0] = ctx->Const.MaxLights;
6072 break;
6073 case GL_MAX_LIST_NESTING:
6074 params[0] = MAX_LIST_NESTING;
6075 break;
6076 case GL_MAX_MODELVIEW_STACK_DEPTH:
6077 params[0] = MAX_MODELVIEW_STACK_DEPTH;
6078 break;
6079 case GL_MAX_NAME_STACK_DEPTH:
6080 params[0] = MAX_NAME_STACK_DEPTH;
6081 break;
6082 case GL_MAX_PIXEL_MAP_TABLE:
6083 params[0] = MAX_PIXEL_MAP_TABLE;
6084 break;
6085 case GL_MAX_PROJECTION_STACK_DEPTH:
6086 params[0] = MAX_PROJECTION_STACK_DEPTH;
6087 break;
6088 case GL_MAX_TEXTURE_SIZE:
6089 params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
6090 break;
6091 case GL_MAX_3D_TEXTURE_SIZE:
6092 params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
6093 break;
6094 case GL_MAX_TEXTURE_STACK_DEPTH:
6095 params[0] = MAX_TEXTURE_STACK_DEPTH;
6096 break;
6097 case GL_MAX_VIEWPORT_DIMS:
6098 params[0] = ctx->Const.MaxViewportWidth;
6099 params[1] = ctx->Const.MaxViewportHeight;
6100 break;
6101 case GL_MODELVIEW_MATRIX:
6102 {
6103 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
6104 params[0] = IROUND64(matrix[0]);
6105 params[1] = IROUND64(matrix[1]);
6106 params[2] = IROUND64(matrix[2]);
6107 params[3] = IROUND64(matrix[3]);
6108 params[4] = IROUND64(matrix[4]);
6109 params[5] = IROUND64(matrix[5]);
6110 params[6] = IROUND64(matrix[6]);
6111 params[7] = IROUND64(matrix[7]);
6112 params[8] = IROUND64(matrix[8]);
6113 params[9] = IROUND64(matrix[9]);
6114 params[10] = IROUND64(matrix[10]);
6115 params[11] = IROUND64(matrix[11]);
6116 params[12] = IROUND64(matrix[12]);
6117 params[13] = IROUND64(matrix[13]);
6118 params[14] = IROUND64(matrix[14]);
6119 params[15] = IROUND64(matrix[15]);
6120 }
6121 break;
6122 case GL_MODELVIEW_STACK_DEPTH:
6123 params[0] = ctx->ModelviewMatrixStack.Depth + 1;
6124 break;
6125 case GL_NAME_STACK_DEPTH:
6126 params[0] = ctx->Select.NameStackDepth;
6127 break;
6128 case GL_NORMALIZE:
6129 params[0] = BOOLEAN_TO_INT64(ctx->Transform.Normalize);
6130 break;
6131 case GL_PACK_ALIGNMENT:
6132 params[0] = ctx->Pack.Alignment;
6133 break;
6134 case GL_PACK_LSB_FIRST:
6135 params[0] = BOOLEAN_TO_INT64(ctx->Pack.LsbFirst);
6136 break;
6137 case GL_PACK_ROW_LENGTH:
6138 params[0] = ctx->Pack.RowLength;
6139 break;
6140 case GL_PACK_SKIP_PIXELS:
6141 params[0] = ctx->Pack.SkipPixels;
6142 break;
6143 case GL_PACK_SKIP_ROWS:
6144 params[0] = ctx->Pack.SkipRows;
6145 break;
6146 case GL_PACK_SWAP_BYTES:
6147 params[0] = BOOLEAN_TO_INT64(ctx->Pack.SwapBytes);
6148 break;
6149 case GL_PACK_SKIP_IMAGES_EXT:
6150 params[0] = ctx->Pack.SkipImages;
6151 break;
6152 case GL_PACK_IMAGE_HEIGHT_EXT:
6153 params[0] = ctx->Pack.ImageHeight;
6154 break;
6155 case GL_PACK_INVERT_MESA:
6156 params[0] = BOOLEAN_TO_INT64(ctx->Pack.Invert);
6157 break;
6158 case GL_PERSPECTIVE_CORRECTION_HINT:
6159 params[0] = ENUM_TO_INT64(ctx->Hint.PerspectiveCorrection);
6160 break;
6161 case GL_PIXEL_MAP_A_TO_A_SIZE:
6162 params[0] = ctx->PixelMaps.AtoA.Size;
6163 break;
6164 case GL_PIXEL_MAP_B_TO_B_SIZE:
6165 params[0] = ctx->PixelMaps.BtoB.Size;
6166 break;
6167 case GL_PIXEL_MAP_G_TO_G_SIZE:
6168 params[0] = ctx->PixelMaps.GtoG.Size;
6169 break;
6170 case GL_PIXEL_MAP_I_TO_A_SIZE:
6171 params[0] = ctx->PixelMaps.ItoA.Size;
6172 break;
6173 case GL_PIXEL_MAP_I_TO_B_SIZE:
6174 params[0] = ctx->PixelMaps.ItoB.Size;
6175 break;
6176 case GL_PIXEL_MAP_I_TO_G_SIZE:
6177 params[0] = ctx->PixelMaps.ItoG.Size;
6178 break;
6179 case GL_PIXEL_MAP_I_TO_I_SIZE:
6180 params[0] = ctx->PixelMaps.ItoI.Size;
6181 break;
6182 case GL_PIXEL_MAP_I_TO_R_SIZE:
6183 params[0] = ctx->PixelMaps.ItoR.Size;
6184 break;
6185 case GL_PIXEL_MAP_R_TO_R_SIZE:
6186 params[0] = ctx->PixelMaps.RtoR.Size;
6187 break;
6188 case GL_PIXEL_MAP_S_TO_S_SIZE:
6189 params[0] = ctx->PixelMaps.StoS.Size;
6190 break;
6191 case GL_POINT_SIZE:
6192 params[0] = IROUND64(ctx->Point.Size);
6193 break;
6194 case GL_POINT_SIZE_GRANULARITY:
6195 params[0] = IROUND64(ctx->Const.PointSizeGranularity);
6196 break;
6197 case GL_POINT_SIZE_RANGE:
6198 params[0] = IROUND64(ctx->Const.MinPointSizeAA);
6199 params[1] = IROUND64(ctx->Const.MaxPointSizeAA);
6200 break;
6201 case GL_ALIASED_POINT_SIZE_RANGE:
6202 params[0] = IROUND64(ctx->Const.MinPointSize);
6203 params[1] = IROUND64(ctx->Const.MaxPointSize);
6204 break;
6205 case GL_POINT_SMOOTH:
6206 params[0] = BOOLEAN_TO_INT64(ctx->Point.SmoothFlag);
6207 break;
6208 case GL_POINT_SMOOTH_HINT:
6209 params[0] = ENUM_TO_INT64(ctx->Hint.PointSmooth);
6210 break;
6211 case GL_POINT_SIZE_MIN_EXT:
6212 params[0] = IROUND64(ctx->Point.MinSize);
6213 break;
6214 case GL_POINT_SIZE_MAX_EXT:
6215 params[0] = IROUND64(ctx->Point.MaxSize);
6216 break;
6217 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
6218 params[0] = IROUND64(ctx->Point.Threshold);
6219 break;
6220 case GL_DISTANCE_ATTENUATION_EXT:
6221 params[0] = IROUND64(ctx->Point.Params[0]);
6222 params[1] = IROUND64(ctx->Point.Params[1]);
6223 params[2] = IROUND64(ctx->Point.Params[2]);
6224 break;
6225 case GL_POLYGON_MODE:
6226 params[0] = ENUM_TO_INT64(ctx->Polygon.FrontMode);
6227 params[1] = ENUM_TO_INT64(ctx->Polygon.BackMode);
6228 break;
6229 case GL_POLYGON_OFFSET_BIAS_EXT:
6230 params[0] = IROUND64(ctx->Polygon.OffsetUnits);
6231 break;
6232 case GL_POLYGON_OFFSET_FACTOR:
6233 params[0] = IROUND64(ctx->Polygon.OffsetFactor );
6234 break;
6235 case GL_POLYGON_OFFSET_UNITS:
6236 params[0] = IROUND64(ctx->Polygon.OffsetUnits );
6237 break;
6238 case GL_POLYGON_OFFSET_POINT:
6239 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetPoint);
6240 break;
6241 case GL_POLYGON_OFFSET_LINE:
6242 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetLine);
6243 break;
6244 case GL_POLYGON_OFFSET_FILL:
6245 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetFill);
6246 break;
6247 case GL_POLYGON_SMOOTH:
6248 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.SmoothFlag);
6249 break;
6250 case GL_POLYGON_SMOOTH_HINT:
6251 params[0] = ENUM_TO_INT64(ctx->Hint.PolygonSmooth);
6252 break;
6253 case GL_POLYGON_STIPPLE:
6254 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.StippleFlag);
6255 break;
6256 case GL_PROJECTION_MATRIX:
6257 {
6258 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
6259 params[0] = IROUND64(matrix[0]);
6260 params[1] = IROUND64(matrix[1]);
6261 params[2] = IROUND64(matrix[2]);
6262 params[3] = IROUND64(matrix[3]);
6263 params[4] = IROUND64(matrix[4]);
6264 params[5] = IROUND64(matrix[5]);
6265 params[6] = IROUND64(matrix[6]);
6266 params[7] = IROUND64(matrix[7]);
6267 params[8] = IROUND64(matrix[8]);
6268 params[9] = IROUND64(matrix[9]);
6269 params[10] = IROUND64(matrix[10]);
6270 params[11] = IROUND64(matrix[11]);
6271 params[12] = IROUND64(matrix[12]);
6272 params[13] = IROUND64(matrix[13]);
6273 params[14] = IROUND64(matrix[14]);
6274 params[15] = IROUND64(matrix[15]);
6275 }
6276 break;
6277 case GL_PROJECTION_STACK_DEPTH:
6278 params[0] = ctx->ProjectionMatrixStack.Depth + 1;
6279 break;
6280 case GL_READ_BUFFER:
6281 params[0] = ENUM_TO_INT64(ctx->ReadBuffer->ColorReadBuffer);
6282 break;
6283 case GL_RED_BIAS:
6284 params[0] = IROUND64(ctx->Pixel.RedBias);
6285 break;
6286 case GL_RED_BITS:
6287 params[0] = ctx->DrawBuffer->Visual.redBits;
6288 break;
6289 case GL_RED_SCALE:
6290 params[0] = IROUND64(ctx->Pixel.RedScale);
6291 break;
6292 case GL_RENDER_MODE:
6293 params[0] = ENUM_TO_INT64(ctx->RenderMode);
6294 break;
6295 case GL_RESCALE_NORMAL:
6296 params[0] = BOOLEAN_TO_INT64(ctx->Transform.RescaleNormals);
6297 break;
6298 case GL_RGBA_MODE:
6299 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.rgbMode);
6300 break;
6301 case GL_SCISSOR_BOX:
6302 params[0] = ctx->Scissor.X;
6303 params[1] = ctx->Scissor.Y;
6304 params[2] = ctx->Scissor.Width;
6305 params[3] = ctx->Scissor.Height;
6306 break;
6307 case GL_SCISSOR_TEST:
6308 params[0] = BOOLEAN_TO_INT64(ctx->Scissor.Enabled);
6309 break;
6310 case GL_SELECTION_BUFFER_SIZE:
6311 params[0] = ctx->Select.BufferSize;
6312 break;
6313 case GL_SHADE_MODEL:
6314 params[0] = ENUM_TO_INT64(ctx->Light.ShadeModel);
6315 break;
6316 case GL_SHARED_TEXTURE_PALETTE_EXT:
6317 params[0] = BOOLEAN_TO_INT64(ctx->Texture.SharedPalette);
6318 break;
6319 case GL_STENCIL_BITS:
6320 params[0] = ctx->DrawBuffer->Visual.stencilBits;
6321 break;
6322 case GL_STENCIL_CLEAR_VALUE:
6323 params[0] = ctx->Stencil.Clear;
6324 break;
6325 case GL_STENCIL_FAIL:
6326 params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
6327 break;
6328 case GL_STENCIL_FUNC:
6329 params[0] = ENUM_TO_INT64(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
6330 break;
6331 case GL_STENCIL_PASS_DEPTH_FAIL:
6332 params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
6333 break;
6334 case GL_STENCIL_PASS_DEPTH_PASS:
6335 params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
6336 break;
6337 case GL_STENCIL_REF:
6338 params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
6339 break;
6340 case GL_STENCIL_TEST:
6341 params[0] = BOOLEAN_TO_INT64(ctx->Stencil.Enabled);
6342 break;
6343 case GL_STENCIL_VALUE_MASK:
6344 params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
6345 break;
6346 case GL_STENCIL_WRITEMASK:
6347 params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
6348 break;
6349 case GL_STEREO:
6350 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.stereoMode);
6351 break;
6352 case GL_SUBPIXEL_BITS:
6353 params[0] = ctx->Const.SubPixelBits;
6354 break;
6355 case GL_TEXTURE_1D:
6356 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D));
6357 break;
6358 case GL_TEXTURE_2D:
6359 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D));
6360 break;
6361 case GL_TEXTURE_3D:
6362 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D));
6363 break;
6364 case GL_TEXTURE_1D_ARRAY_EXT:
6365 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6366 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
6367 break;
6368 case GL_TEXTURE_2D_ARRAY_EXT:
6369 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6370 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
6371 break;
6372 case GL_TEXTURE_BINDING_1D:
6373 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name;
6374 break;
6375 case GL_TEXTURE_BINDING_2D:
6376 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name;
6377 break;
6378 case GL_TEXTURE_BINDING_3D:
6379 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name;
6380 break;
6381 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
6382 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6383 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name;
6384 break;
6385 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
6386 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6387 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name;
6388 break;
6389 case GL_TEXTURE_GEN_S:
6390 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
6391 break;
6392 case GL_TEXTURE_GEN_T:
6393 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
6394 break;
6395 case GL_TEXTURE_GEN_R:
6396 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
6397 break;
6398 case GL_TEXTURE_GEN_Q:
6399 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
6400 break;
6401 case GL_TEXTURE_MATRIX:
6402 {
6403 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
6404 params[0] = IROUND64(matrix[0]);
6405 params[1] = IROUND64(matrix[1]);
6406 params[2] = IROUND64(matrix[2]);
6407 params[3] = IROUND64(matrix[3]);
6408 params[4] = IROUND64(matrix[4]);
6409 params[5] = IROUND64(matrix[5]);
6410 params[6] = IROUND64(matrix[6]);
6411 params[7] = IROUND64(matrix[7]);
6412 params[8] = IROUND64(matrix[8]);
6413 params[9] = IROUND64(matrix[9]);
6414 params[10] = IROUND64(matrix[10]);
6415 params[11] = IROUND64(matrix[11]);
6416 params[12] = IROUND64(matrix[12]);
6417 params[13] = IROUND64(matrix[13]);
6418 params[14] = IROUND64(matrix[14]);
6419 params[15] = IROUND64(matrix[15]);
6420 }
6421 break;
6422 case GL_TEXTURE_STACK_DEPTH:
6423 params[0] = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1;
6424 break;
6425 case GL_UNPACK_ALIGNMENT:
6426 params[0] = ctx->Unpack.Alignment;
6427 break;
6428 case GL_UNPACK_LSB_FIRST:
6429 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.LsbFirst);
6430 break;
6431 case GL_UNPACK_ROW_LENGTH:
6432 params[0] = ctx->Unpack.RowLength;
6433 break;
6434 case GL_UNPACK_SKIP_PIXELS:
6435 params[0] = ctx->Unpack.SkipPixels;
6436 break;
6437 case GL_UNPACK_SKIP_ROWS:
6438 params[0] = ctx->Unpack.SkipRows;
6439 break;
6440 case GL_UNPACK_SWAP_BYTES:
6441 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.SwapBytes);
6442 break;
6443 case GL_UNPACK_SKIP_IMAGES_EXT:
6444 params[0] = ctx->Unpack.SkipImages;
6445 break;
6446 case GL_UNPACK_IMAGE_HEIGHT_EXT:
6447 params[0] = ctx->Unpack.ImageHeight;
6448 break;
6449 case GL_UNPACK_CLIENT_STORAGE_APPLE:
6450 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.ClientStorage);
6451 break;
6452 case GL_VIEWPORT:
6453 params[0] = ctx->Viewport.X;
6454 params[1] = ctx->Viewport.Y;
6455 params[2] = ctx->Viewport.Width;
6456 params[3] = ctx->Viewport.Height;
6457 break;
6458 case GL_ZOOM_X:
6459 params[0] = IROUND64(ctx->Pixel.ZoomX);
6460 break;
6461 case GL_ZOOM_Y:
6462 params[0] = IROUND64(ctx->Pixel.ZoomY);
6463 break;
6464 case GL_VERTEX_ARRAY:
6465 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Vertex.Enabled);
6466 break;
6467 case GL_VERTEX_ARRAY_SIZE:
6468 params[0] = ctx->Array.ArrayObj->Vertex.Size;
6469 break;
6470 case GL_VERTEX_ARRAY_TYPE:
6471 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Vertex.Type);
6472 break;
6473 case GL_VERTEX_ARRAY_STRIDE:
6474 params[0] = ctx->Array.ArrayObj->Vertex.Stride;
6475 break;
6476 case GL_VERTEX_ARRAY_COUNT_EXT:
6477 params[0] = 0;
6478 break;
6479 case GL_NORMAL_ARRAY:
6480 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Enabled);
6481 break;
6482 case GL_NORMAL_ARRAY_TYPE:
6483 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Type);
6484 break;
6485 case GL_NORMAL_ARRAY_STRIDE:
6486 params[0] = ctx->Array.ArrayObj->Normal.Stride;
6487 break;
6488 case GL_NORMAL_ARRAY_COUNT_EXT:
6489 params[0] = 0;
6490 break;
6491 case GL_COLOR_ARRAY:
6492 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Color.Enabled);
6493 break;
6494 case GL_COLOR_ARRAY_SIZE:
6495 params[0] = ctx->Array.ArrayObj->Color.Size;
6496 break;
6497 case GL_COLOR_ARRAY_TYPE:
6498 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Color.Type);
6499 break;
6500 case GL_COLOR_ARRAY_STRIDE:
6501 params[0] = ctx->Array.ArrayObj->Color.Stride;
6502 break;
6503 case GL_COLOR_ARRAY_COUNT_EXT:
6504 params[0] = 0;
6505 break;
6506 case GL_INDEX_ARRAY:
6507 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Index.Enabled);
6508 break;
6509 case GL_INDEX_ARRAY_TYPE:
6510 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Index.Type);
6511 break;
6512 case GL_INDEX_ARRAY_STRIDE:
6513 params[0] = ctx->Array.ArrayObj->Index.Stride;
6514 break;
6515 case GL_INDEX_ARRAY_COUNT_EXT:
6516 params[0] = 0;
6517 break;
6518 case GL_TEXTURE_COORD_ARRAY:
6519 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
6520 break;
6521 case GL_TEXTURE_COORD_ARRAY_SIZE:
6522 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
6523 break;
6524 case GL_TEXTURE_COORD_ARRAY_TYPE:
6525 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
6526 break;
6527 case GL_TEXTURE_COORD_ARRAY_STRIDE:
6528 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
6529 break;
6530 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
6531 params[0] = 0;
6532 break;
6533 case GL_EDGE_FLAG_ARRAY:
6534 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->EdgeFlag.Enabled);
6535 break;
6536 case GL_EDGE_FLAG_ARRAY_STRIDE:
6537 params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
6538 break;
6539 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
6540 params[0] = 0;
6541 break;
6542 case GL_MAX_TEXTURE_UNITS_ARB:
6543 CHECK_EXT1(ARB_multitexture, "GetInteger64v");
6544 params[0] = ctx->Const.MaxTextureUnits;
6545 break;
6546 case GL_ACTIVE_TEXTURE_ARB:
6547 CHECK_EXT1(ARB_multitexture, "GetInteger64v");
6548 params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
6549 break;
6550 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
6551 CHECK_EXT1(ARB_multitexture, "GetInteger64v");
6552 params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
6553 break;
6554 case GL_TEXTURE_CUBE_MAP_ARB:
6555 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v");
6556 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
6557 break;
6558 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
6559 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v");
6560 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name;
6561 break;
6562 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
6563 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v");
6564 params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
6565 break;
6566 case GL_TEXTURE_COMPRESSION_HINT_ARB:
6567 params[0] = ctx->Hint.TextureCompression;
6568 break;
6569 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
6570 params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
6571 break;
6572 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
6573 {
6574 GLint formats[100];
6575 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
6576 ASSERT(n <= 100);
6577 for (i = 0; i < n; i++)
6578 params[i] = ENUM_TO_INT64(formats[i]);
6579 }
6580 break;
6581 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
6582 CHECK_EXT1(EXT_compiled_vertex_array, "GetInteger64v");
6583 params[0] = ctx->Array.LockFirst;
6584 break;
6585 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
6586 CHECK_EXT1(EXT_compiled_vertex_array, "GetInteger64v");
6587 params[0] = ctx->Array.LockCount;
6588 break;
6589 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
6590 {
6591 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
6592 params[0] = IROUND64(matrix[0]);
6593 params[1] = IROUND64(matrix[4]);
6594 params[2] = IROUND64(matrix[8]);
6595 params[3] = IROUND64(matrix[12]);
6596 params[4] = IROUND64(matrix[1]);
6597 params[5] = IROUND64(matrix[5]);
6598 params[6] = IROUND64(matrix[9]);
6599 params[7] = IROUND64(matrix[13]);
6600 params[8] = IROUND64(matrix[2]);
6601 params[9] = IROUND64(matrix[6]);
6602 params[10] = IROUND64(matrix[10]);
6603 params[11] = IROUND64(matrix[14]);
6604 params[12] = IROUND64(matrix[3]);
6605 params[13] = IROUND64(matrix[7]);
6606 params[14] = IROUND64(matrix[11]);
6607 params[15] = IROUND64(matrix[15]);
6608 }
6609 break;
6610 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
6611 {
6612 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
6613 params[0] = IROUND64(matrix[0]);
6614 params[1] = IROUND64(matrix[4]);
6615 params[2] = IROUND64(matrix[8]);
6616 params[3] = IROUND64(matrix[12]);
6617 params[4] = IROUND64(matrix[1]);
6618 params[5] = IROUND64(matrix[5]);
6619 params[6] = IROUND64(matrix[9]);
6620 params[7] = IROUND64(matrix[13]);
6621 params[8] = IROUND64(matrix[2]);
6622 params[9] = IROUND64(matrix[6]);
6623 params[10] = IROUND64(matrix[10]);
6624 params[11] = IROUND64(matrix[14]);
6625 params[12] = IROUND64(matrix[3]);
6626 params[13] = IROUND64(matrix[7]);
6627 params[14] = IROUND64(matrix[11]);
6628 params[15] = IROUND64(matrix[15]);
6629 }
6630 break;
6631 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
6632 {
6633 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
6634 params[0] = IROUND64(matrix[0]);
6635 params[1] = IROUND64(matrix[4]);
6636 params[2] = IROUND64(matrix[8]);
6637 params[3] = IROUND64(matrix[12]);
6638 params[4] = IROUND64(matrix[1]);
6639 params[5] = IROUND64(matrix[5]);
6640 params[6] = IROUND64(matrix[9]);
6641 params[7] = IROUND64(matrix[13]);
6642 params[8] = IROUND64(matrix[2]);
6643 params[9] = IROUND64(matrix[6]);
6644 params[10] = IROUND64(matrix[10]);
6645 params[11] = IROUND64(matrix[14]);
6646 params[12] = IROUND64(matrix[3]);
6647 params[13] = IROUND64(matrix[7]);
6648 params[14] = IROUND64(matrix[11]);
6649 params[15] = IROUND64(matrix[15]);
6650 }
6651 break;
6652 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
6653 {
6654 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
6655 params[0] = IROUND64(matrix[0]);
6656 params[1] = IROUND64(matrix[4]);
6657 params[2] = IROUND64(matrix[8]);
6658 params[3] = IROUND64(matrix[12]);
6659 params[4] = IROUND64(matrix[1]);
6660 params[5] = IROUND64(matrix[5]);
6661 params[6] = IROUND64(matrix[9]);
6662 params[7] = IROUND64(matrix[13]);
6663 params[8] = IROUND64(matrix[2]);
6664 params[9] = IROUND64(matrix[6]);
6665 params[10] = IROUND64(matrix[10]);
6666 params[11] = IROUND64(matrix[14]);
6667 params[12] = IROUND64(matrix[3]);
6668 params[13] = IROUND64(matrix[7]);
6669 params[14] = IROUND64(matrix[11]);
6670 params[15] = IROUND64(matrix[15]);
6671 }
6672 break;
6673 case GL_COLOR_MATRIX_SGI:
6674 {
6675 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
6676 params[0] = IROUND64(matrix[0]);
6677 params[1] = IROUND64(matrix[1]);
6678 params[2] = IROUND64(matrix[2]);
6679 params[3] = IROUND64(matrix[3]);
6680 params[4] = IROUND64(matrix[4]);
6681 params[5] = IROUND64(matrix[5]);
6682 params[6] = IROUND64(matrix[6]);
6683 params[7] = IROUND64(matrix[7]);
6684 params[8] = IROUND64(matrix[8]);
6685 params[9] = IROUND64(matrix[9]);
6686 params[10] = IROUND64(matrix[10]);
6687 params[11] = IROUND64(matrix[11]);
6688 params[12] = IROUND64(matrix[12]);
6689 params[13] = IROUND64(matrix[13]);
6690 params[14] = IROUND64(matrix[14]);
6691 params[15] = IROUND64(matrix[15]);
6692 }
6693 break;
6694 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
6695 params[0] = ctx->ColorMatrixStack.Depth + 1;
6696 break;
6697 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
6698 params[0] = MAX_COLOR_STACK_DEPTH;
6699 break;
6700 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
6701 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[0]);
6702 break;
6703 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
6704 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[1]);
6705 break;
6706 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
6707 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[2]);
6708 break;
6709 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
6710 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[3]);
6711 break;
6712 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
6713 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[0]);
6714 break;
6715 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
6716 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[1]);
6717 break;
6718 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
6719 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[2]);
6720 break;
6721 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
6722 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[3]);
6723 break;
6724 case GL_CONVOLUTION_1D_EXT:
6725 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6726 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution1DEnabled);
6727 break;
6728 case GL_CONVOLUTION_2D_EXT:
6729 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6730 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution2DEnabled);
6731 break;
6732 case GL_SEPARABLE_2D_EXT:
6733 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6734 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Separable2DEnabled);
6735 break;
6736 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
6737 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6738 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[0]);
6739 break;
6740 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
6741 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6742 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[1]);
6743 break;
6744 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
6745 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6746 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[2]);
6747 break;
6748 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
6749 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6750 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[3]);
6751 break;
6752 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
6753 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6754 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[0]);
6755 break;
6756 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
6757 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6758 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[1]);
6759 break;
6760 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
6761 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6762 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[2]);
6763 break;
6764 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
6765 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6766 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[3]);
6767 break;
6768 case GL_HISTOGRAM:
6769 CHECK_EXT1(EXT_histogram, "GetInteger64v");
6770 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.HistogramEnabled);
6771 break;
6772 case GL_MINMAX:
6773 CHECK_EXT1(EXT_histogram, "GetInteger64v");
6774 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MinMaxEnabled);
6775 break;
6776 case GL_COLOR_TABLE_SGI:
6777 CHECK_EXT1(SGI_color_table, "GetInteger64v");
6778 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
6779 break;
6780 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
6781 CHECK_EXT1(SGI_color_table, "GetInteger64v");
6782 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
6783 break;
6784 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
6785 CHECK_EXT1(SGI_color_table, "GetInteger64v");
6786 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
6787 break;
6788 case GL_TEXTURE_COLOR_TABLE_SGI:
6789 CHECK_EXT1(SGI_texture_color_table, "GetInteger64v");
6790 params[0] = BOOLEAN_TO_INT64(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
6791 break;
6792 case GL_COLOR_SUM_EXT:
6793 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetInteger64v");
6794 params[0] = BOOLEAN_TO_INT64(ctx->Fog.ColorSumEnabled);
6795 break;
6796 case GL_CURRENT_SECONDARY_COLOR_EXT:
6797 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
6798 {
6799 FLUSH_CURRENT(ctx, 0);
6800 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
6801 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
6802 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
6803 params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
6804 }
6805 break;
6806 case GL_SECONDARY_COLOR_ARRAY_EXT:
6807 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
6808 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Enabled);
6809 break;
6810 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
6811 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
6812 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Type);
6813 break;
6814 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
6815 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
6816 params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
6817 break;
6818 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
6819 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
6820 params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
6821 break;
6822 case GL_CURRENT_FOG_COORDINATE_EXT:
6823 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
6824 {
6825 FLUSH_CURRENT(ctx, 0);
6826 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
6827 }
6828 break;
6829 case GL_FOG_COORDINATE_ARRAY_EXT:
6830 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
6831 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->FogCoord.Enabled);
6832 break;
6833 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
6834 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
6835 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->FogCoord.Type);
6836 break;
6837 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
6838 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
6839 params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
6840 break;
6841 case GL_FOG_COORDINATE_SOURCE_EXT:
6842 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
6843 params[0] = ENUM_TO_INT64(ctx->Fog.FogCoordinateSource);
6844 break;
6845 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
6846 CHECK_EXT1(EXT_texture_lod_bias, "GetInteger64v");
6847 params[0] = IROUND64(ctx->Const.MaxTextureLodBias);
6848 break;
6849 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
6850 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetInteger64v");
6851 params[0] = IROUND64(ctx->Const.MaxTextureMaxAnisotropy);
6852 break;
6853 case GL_MULTISAMPLE_ARB:
6854 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.Enabled);
6855 break;
6856 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
6857 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToCoverage);
6858 break;
6859 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
6860 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToOne);
6861 break;
6862 case GL_SAMPLE_COVERAGE_ARB:
6863 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverage);
6864 break;
6865 case GL_SAMPLE_COVERAGE_VALUE_ARB:
6866 params[0] = IROUND64(ctx->Multisample.SampleCoverageValue);
6867 break;
6868 case GL_SAMPLE_COVERAGE_INVERT_ARB:
6869 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverageInvert);
6870 break;
6871 case GL_SAMPLE_BUFFERS_ARB:
6872 params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
6873 break;
6874 case GL_SAMPLES_ARB:
6875 params[0] = ctx->DrawBuffer->Visual.samples;
6876 break;
6877 case GL_RASTER_POSITION_UNCLIPPED_IBM:
6878 CHECK_EXT1(IBM_rasterpos_clip, "GetInteger64v");
6879 params[0] = BOOLEAN_TO_INT64(ctx->Transform.RasterPositionUnclipped);
6880 break;
6881 case GL_POINT_SPRITE_NV:
6882 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetInteger64v");
6883 params[0] = BOOLEAN_TO_INT64(ctx->Point.PointSprite);
6884 break;
6885 case GL_POINT_SPRITE_R_MODE_NV:
6886 CHECK_EXT1(NV_point_sprite, "GetInteger64v");
6887 params[0] = ENUM_TO_INT64(ctx->Point.SpriteRMode);
6888 break;
6889 case GL_POINT_SPRITE_COORD_ORIGIN:
6890 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetInteger64v");
6891 params[0] = ENUM_TO_INT64(ctx->Point.SpriteOrigin);
6892 break;
6893 case GL_GENERATE_MIPMAP_HINT_SGIS:
6894 CHECK_EXT1(SGIS_generate_mipmap, "GetInteger64v");
6895 params[0] = ENUM_TO_INT64(ctx->Hint.GenerateMipmap);
6896 break;
6897 case GL_VERTEX_PROGRAM_BINDING_NV:
6898 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6899 params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
6900 break;
6901 case GL_VERTEX_ATTRIB_ARRAY0_NV:
6902 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6903 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
6904 break;
6905 case GL_VERTEX_ATTRIB_ARRAY1_NV:
6906 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6907 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
6908 break;
6909 case GL_VERTEX_ATTRIB_ARRAY2_NV:
6910 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6911 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
6912 break;
6913 case GL_VERTEX_ATTRIB_ARRAY3_NV:
6914 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6915 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
6916 break;
6917 case GL_VERTEX_ATTRIB_ARRAY4_NV:
6918 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6919 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
6920 break;
6921 case GL_VERTEX_ATTRIB_ARRAY5_NV:
6922 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6923 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
6924 break;
6925 case GL_VERTEX_ATTRIB_ARRAY6_NV:
6926 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6927 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
6928 break;
6929 case GL_VERTEX_ATTRIB_ARRAY7_NV:
6930 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6931 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
6932 break;
6933 case GL_VERTEX_ATTRIB_ARRAY8_NV:
6934 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6935 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
6936 break;
6937 case GL_VERTEX_ATTRIB_ARRAY9_NV:
6938 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6939 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
6940 break;
6941 case GL_VERTEX_ATTRIB_ARRAY10_NV:
6942 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6943 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
6944 break;
6945 case GL_VERTEX_ATTRIB_ARRAY11_NV:
6946 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6947 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
6948 break;
6949 case GL_VERTEX_ATTRIB_ARRAY12_NV:
6950 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6951 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
6952 break;
6953 case GL_VERTEX_ATTRIB_ARRAY13_NV:
6954 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6955 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
6956 break;
6957 case GL_VERTEX_ATTRIB_ARRAY14_NV:
6958 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6959 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
6960 break;
6961 case GL_VERTEX_ATTRIB_ARRAY15_NV:
6962 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6963 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
6964 break;
6965 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
6966 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6967 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[0]);
6968 break;
6969 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
6970 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6971 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[1]);
6972 break;
6973 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
6974 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6975 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[2]);
6976 break;
6977 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
6978 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6979 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[3]);
6980 break;
6981 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
6982 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6983 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[4]);
6984 break;
6985 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
6986 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6987 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[5]);
6988 break;
6989 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
6990 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6991 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[6]);
6992 break;
6993 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
6994 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6995 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[7]);
6996 break;
6997 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
6998 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
6999 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[8]);
7000 break;
7001 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
7002 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7003 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[9]);
7004 break;
7005 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
7006 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7007 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[10]);
7008 break;
7009 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
7010 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7011 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[11]);
7012 break;
7013 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
7014 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7015 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[12]);
7016 break;
7017 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
7018 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7019 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[13]);
7020 break;
7021 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
7022 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7023 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[14]);
7024 break;
7025 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
7026 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7027 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[15]);
7028 break;
7029 case GL_FRAGMENT_PROGRAM_NV:
7030 CHECK_EXT1(NV_fragment_program, "GetInteger64v");
7031 params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled);
7032 break;
7033 case GL_FRAGMENT_PROGRAM_BINDING_NV:
7034 CHECK_EXT1(NV_fragment_program, "GetInteger64v");
7035 params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
7036 break;
7037 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
7038 CHECK_EXT1(NV_fragment_program, "GetInteger64v");
7039 params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
7040 break;
7041 case GL_TEXTURE_RECTANGLE_NV:
7042 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v");
7043 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
7044 break;
7045 case GL_TEXTURE_BINDING_RECTANGLE_NV:
7046 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v");
7047 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name;
7048 break;
7049 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
7050 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v");
7051 params[0] = ctx->Const.MaxTextureRectSize;
7052 break;
7053 case GL_STENCIL_TEST_TWO_SIDE_EXT:
7054 CHECK_EXT1(EXT_stencil_two_side, "GetInteger64v");
7055 params[0] = BOOLEAN_TO_INT64(ctx->Stencil.TestTwoSide);
7056 break;
7057 case GL_ACTIVE_STENCIL_FACE_EXT:
7058 CHECK_EXT1(EXT_stencil_two_side, "GetInteger64v");
7059 params[0] = ENUM_TO_INT64(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
7060 break;
7061 case GL_MAX_SHININESS_NV:
7062 CHECK_EXT1(NV_light_max_exponent, "GetInteger64v");
7063 params[0] = IROUND64(ctx->Const.MaxShininess);
7064 break;
7065 case GL_MAX_SPOT_EXPONENT_NV:
7066 CHECK_EXT1(NV_light_max_exponent, "GetInteger64v");
7067 params[0] = IROUND64(ctx->Const.MaxSpotExponent);
7068 break;
7069 case GL_ARRAY_BUFFER_BINDING_ARB:
7070 params[0] = ctx->Array.ArrayBufferObj->Name;
7071 break;
7072 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
7073 params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
7074 break;
7075 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
7076 params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
7077 break;
7078 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
7079 params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
7080 break;
7081 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
7082 params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
7083 break;
7084 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
7085 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
7086 break;
7087 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
7088 params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
7089 break;
7090 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
7091 params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
7092 break;
7093 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
7094 params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
7095 break;
7096 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
7097 params[0] = ctx->Array.ElementArrayBufferObj->Name;
7098 break;
7099 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
7100 CHECK_EXT1(EXT_pixel_buffer_object, "GetInteger64v");
7101 params[0] = ctx->Pack.BufferObj->Name;
7102 break;
7103 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
7104 CHECK_EXT1(EXT_pixel_buffer_object, "GetInteger64v");
7105 params[0] = ctx->Unpack.BufferObj->Name;
7106 break;
7107 case GL_VERTEX_PROGRAM_ARB:
7108 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v");
7109 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.Enabled);
7110 break;
7111 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
7112 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v");
7113 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.PointSizeEnabled);
7114 break;
7115 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
7116 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v");
7117 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.TwoSideEnabled);
7118 break;
7119 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
7120 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v");
7121 params[0] = ctx->Const.MaxProgramMatrixStackDepth;
7122 break;
7123 case GL_MAX_PROGRAM_MATRICES_ARB:
7124 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v");
7125 params[0] = ctx->Const.MaxProgramMatrices;
7126 break;
7127 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
7128 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v");
7129 params[0] = BOOLEAN_TO_INT64(ctx->CurrentStack->Depth + 1);
7130 break;
7131 case GL_CURRENT_MATRIX_ARB:
7132 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetInteger64v");
7133 {
7134 const GLfloat *matrix = ctx->CurrentStack->Top->m;
7135 params[0] = IROUND64(matrix[0]);
7136 params[1] = IROUND64(matrix[1]);
7137 params[2] = IROUND64(matrix[2]);
7138 params[3] = IROUND64(matrix[3]);
7139 params[4] = IROUND64(matrix[4]);
7140 params[5] = IROUND64(matrix[5]);
7141 params[6] = IROUND64(matrix[6]);
7142 params[7] = IROUND64(matrix[7]);
7143 params[8] = IROUND64(matrix[8]);
7144 params[9] = IROUND64(matrix[9]);
7145 params[10] = IROUND64(matrix[10]);
7146 params[11] = IROUND64(matrix[11]);
7147 params[12] = IROUND64(matrix[12]);
7148 params[13] = IROUND64(matrix[13]);
7149 params[14] = IROUND64(matrix[14]);
7150 params[15] = IROUND64(matrix[15]);
7151 }
7152 break;
7153 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
7154 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetInteger64v");
7155 {
7156 const GLfloat *matrix = ctx->CurrentStack->Top->m;
7157 params[0] = IROUND64(matrix[0]);
7158 params[1] = IROUND64(matrix[4]);
7159 params[2] = IROUND64(matrix[8]);
7160 params[3] = IROUND64(matrix[12]);
7161 params[4] = IROUND64(matrix[1]);
7162 params[5] = IROUND64(matrix[5]);
7163 params[6] = IROUND64(matrix[9]);
7164 params[7] = IROUND64(matrix[13]);
7165 params[8] = IROUND64(matrix[2]);
7166 params[9] = IROUND64(matrix[6]);
7167 params[10] = IROUND64(matrix[10]);
7168 params[11] = IROUND64(matrix[14]);
7169 params[12] = IROUND64(matrix[3]);
7170 params[13] = IROUND64(matrix[7]);
7171 params[14] = IROUND64(matrix[11]);
7172 params[15] = IROUND64(matrix[15]);
7173 }
7174 break;
7175 case GL_MAX_VERTEX_ATTRIBS_ARB:
7176 CHECK_EXT1(ARB_vertex_program, "GetInteger64v");
7177 params[0] = ctx->Const.VertexProgram.MaxAttribs;
7178 break;
7179 case GL_PROGRAM_ERROR_POSITION_ARB:
7180 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetInteger64v");
7181 params[0] = ctx->Program.ErrorPos;
7182 break;
7183 case GL_FRAGMENT_PROGRAM_ARB:
7184 CHECK_EXT1(ARB_fragment_program, "GetInteger64v");
7185 params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled);
7186 break;
7187 case GL_MAX_TEXTURE_COORDS_ARB:
7188 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetInteger64v");
7189 params[0] = ctx->Const.MaxTextureCoordUnits;
7190 break;
7191 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
7192 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetInteger64v");
7193 params[0] = ctx->Const.MaxTextureImageUnits;
7194 break;
7195 case GL_DEPTH_BOUNDS_TEST_EXT:
7196 CHECK_EXT1(EXT_depth_bounds_test, "GetInteger64v");
7197 params[0] = BOOLEAN_TO_INT64(ctx->Depth.BoundsTest);
7198 break;
7199 case GL_DEPTH_BOUNDS_EXT:
7200 CHECK_EXT1(EXT_depth_bounds_test, "GetInteger64v");
7201 params[0] = IROUND64(ctx->Depth.BoundsMin);
7202 params[1] = IROUND64(ctx->Depth.BoundsMax);
7203 break;
7204 case GL_MAX_DRAW_BUFFERS_ARB:
7205 params[0] = ctx->Const.MaxDrawBuffers;
7206 break;
7207 case GL_DRAW_BUFFER0_ARB:
7208 params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]);
7209 break;
7210 case GL_DRAW_BUFFER1_ARB:
7211 {
7212 GLenum buffer;
7213 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7214 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7215 return;
7216 }
7217 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
7218 params[0] = ENUM_TO_INT64(buffer);
7219 }
7220 break;
7221 case GL_DRAW_BUFFER2_ARB:
7222 {
7223 GLenum buffer;
7224 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7225 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7226 return;
7227 }
7228 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
7229 params[0] = ENUM_TO_INT64(buffer);
7230 }
7231 break;
7232 case GL_DRAW_BUFFER3_ARB:
7233 {
7234 GLenum buffer;
7235 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7236 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7237 return;
7238 }
7239 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
7240 params[0] = ENUM_TO_INT64(buffer);
7241 }
7242 break;
7243 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
7244 CHECK_EXT1(OES_read_format, "GetInteger64v");
7245 params[0] = ctx->Const.ColorReadType;
7246 break;
7247 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
7248 CHECK_EXT1(OES_read_format, "GetInteger64v");
7249 params[0] = ctx->Const.ColorReadFormat;
7250 break;
7251 case GL_NUM_FRAGMENT_REGISTERS_ATI:
7252 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7253 params[0] = 6;
7254 break;
7255 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
7256 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7257 params[0] = 8;
7258 break;
7259 case GL_NUM_PASSES_ATI:
7260 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7261 params[0] = 2;
7262 break;
7263 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
7264 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7265 params[0] = 8;
7266 break;
7267 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
7268 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7269 params[0] = 16;
7270 break;
7271 case GL_COLOR_ALPHA_PAIRING_ATI:
7272 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7273 params[0] = BOOLEAN_TO_INT64(GL_TRUE);
7274 break;
7275 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
7276 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7277 params[0] = 3;
7278 break;
7279 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
7280 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7281 params[0] = 3;
7282 break;
7283 case GL_STENCIL_BACK_FUNC:
7284 params[0] = ENUM_TO_INT64(ctx->Stencil.Function[1]);
7285 break;
7286 case GL_STENCIL_BACK_VALUE_MASK:
7287 params[0] = ctx->Stencil.ValueMask[1];
7288 break;
7289 case GL_STENCIL_BACK_WRITEMASK:
7290 params[0] = ctx->Stencil.WriteMask[1];
7291 break;
7292 case GL_STENCIL_BACK_REF:
7293 params[0] = ctx->Stencil.Ref[1];
7294 break;
7295 case GL_STENCIL_BACK_FAIL:
7296 params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[1]);
7297 break;
7298 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
7299 params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[1]);
7300 break;
7301 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
7302 params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[1]);
7303 break;
7304 case GL_FRAMEBUFFER_BINDING_EXT:
7305 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v");
7306 params[0] = ctx->DrawBuffer->Name;
7307 break;
7308 case GL_RENDERBUFFER_BINDING_EXT:
7309 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v");
7310 params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
7311 break;
7312 case GL_MAX_COLOR_ATTACHMENTS_EXT:
7313 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v");
7314 params[0] = ctx->Const.MaxColorAttachments;
7315 break;
7316 case GL_MAX_RENDERBUFFER_SIZE_EXT:
7317 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v");
7318 params[0] = ctx->Const.MaxRenderbufferSize;
7319 break;
7320 case GL_READ_FRAMEBUFFER_BINDING_EXT:
7321 CHECK_EXT1(EXT_framebuffer_blit, "GetInteger64v");
7322 params[0] = ctx->ReadBuffer->Name;
7323 break;
7324 case GL_PROVOKING_VERTEX_EXT:
7325 CHECK_EXT1(EXT_provoking_vertex, "GetInteger64v");
7326 params[0] = BOOLEAN_TO_INT64(ctx->Light.ProvokingVertex);
7327 break;
7328 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
7329 CHECK_EXT1(EXT_provoking_vertex, "GetInteger64v");
7330 params[0] = BOOLEAN_TO_INT64(ctx->Const.QuadsFollowProvokingVertexConvention);
7331 break;
7332 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
7333 CHECK_EXT1(ARB_fragment_shader, "GetInteger64v");
7334 params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
7335 break;
7336 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
7337 CHECK_EXT1(ARB_fragment_shader, "GetInteger64v");
7338 params[0] = ENUM_TO_INT64(ctx->Hint.FragmentShaderDerivative);
7339 break;
7340 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
7341 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v");
7342 params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
7343 break;
7344 case GL_MAX_VARYING_FLOATS_ARB:
7345 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v");
7346 params[0] = ctx->Const.MaxVarying * 4;
7347 break;
7348 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
7349 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v");
7350 params[0] = ctx->Const.MaxVertexTextureImageUnits;
7351 break;
7352 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
7353 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v");
7354 params[0] = MAX_COMBINED_TEXTURE_IMAGE_UNITS;
7355 break;
7356 case GL_CURRENT_PROGRAM:
7357 CHECK_EXT1(ARB_shader_objects, "GetInteger64v");
7358 params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
7359 break;
7360 case GL_MAX_SAMPLES:
7361 CHECK_EXT1(ARB_framebuffer_object, "GetInteger64v");
7362 params[0] = ctx->Const.MaxSamples;
7363 break;
7364 case GL_VERTEX_ARRAY_BINDING_APPLE:
7365 CHECK_EXT1(APPLE_vertex_array_object, "GetInteger64v");
7366 params[0] = ctx->Array.ArrayObj->Name;
7367 break;
7368 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
7369 CHECK_EXT1(ARB_seamless_cube_map, "GetInteger64v");
7370 params[0] = BOOLEAN_TO_INT64(ctx->Texture.CubeMapSeamless);
7371 break;
7372 default:
7373 _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64v(pname=0x%x)", pname);
7374 }
7375 }
7376 #endif /* FEATURE_ARB_sync */
7377
7378
7379 void GLAPIENTRY
7380 _mesa_GetDoublev( GLenum pname, GLdouble *params )
7381 {
7382 const GLfloat magic = -1234.5F;
7383 GLfloat values[16];
7384 GLuint i;
7385
7386 if (!params)
7387 return;
7388
7389 /* Init temp array to magic numbers so we can figure out how many values
7390 * are returned by the GetFloatv() call.
7391 */
7392 for (i = 0; i < 16; i++)
7393 values[i] = magic;
7394
7395 _mesa_GetFloatv(pname, values);
7396
7397 for (i = 0; i < 16 && values[i] != magic; i++)
7398 params[i] = (GLdouble) values[i];
7399 }
7400