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