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