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