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