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