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