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