mesa: fix GL_DEPTH_CLEAR_VALUE casting
[mesa.git] / src / mesa / main / get.c
1
2 /***
3 *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py
4 ***/
5
6 #include "glheader.h"
7 #include "context.h"
8 #include "enable.h"
9 #include "extensions.h"
10 #include "fbobject.h"
11 #include "get.h"
12 #include "macros.h"
13 #include "mtypes.h"
14 #include "state.h"
15 #include "texcompress.h"
16
17
18 #define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
19
20 #define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
21
22 #define BOOLEAN_TO_INT(B) ( (GLint) (B) )
23 #define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F )
24
25
26 /*
27 * Check if named extension is enabled, if not generate error and return.
28 */
29 #define CHECK_EXT1(EXT1, FUNC) \
30 if (!ctx->Extensions.EXT1) { \
31 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
32 return; \
33 }
34
35 /*
36 * Check if either of two extensions is enabled.
37 */
38 #define CHECK_EXT2(EXT1, EXT2, FUNC) \
39 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \
40 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
41 return; \
42 }
43
44 /*
45 * Check if either of three extensions is enabled.
46 */
47 #define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \
48 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
49 !ctx->Extensions.EXT3) { \
50 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
51 return; \
52 }
53
54 /*
55 * Check if either of four extensions is enabled.
56 */
57 #define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \
58 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
59 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \
60 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
61 return; \
62 }
63
64
65 void GLAPIENTRY
66 _mesa_GetBooleanv( GLenum pname, GLboolean *params )
67 {
68 GET_CURRENT_CONTEXT(ctx);
69 ASSERT_OUTSIDE_BEGIN_END(ctx);
70
71 if (!params)
72 return;
73
74 if (ctx->NewState)
75 _mesa_update_state(ctx);
76
77 if (ctx->Driver.GetBooleanv &&
78 ctx->Driver.GetBooleanv(ctx, pname, params))
79 return;
80
81 switch (pname) {
82 case GL_ACCUM_RED_BITS:
83 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits);
84 break;
85 case GL_ACCUM_GREEN_BITS:
86 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits);
87 break;
88 case GL_ACCUM_BLUE_BITS:
89 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits);
90 break;
91 case GL_ACCUM_ALPHA_BITS:
92 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits);
93 break;
94 case GL_ACCUM_CLEAR_VALUE:
95 params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]);
96 params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]);
97 params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]);
98 params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]);
99 break;
100 case GL_ALPHA_BIAS:
101 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias);
102 break;
103 case GL_ALPHA_BITS:
104 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits);
105 break;
106 case GL_ALPHA_SCALE:
107 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale);
108 break;
109 case GL_ALPHA_TEST:
110 params[0] = ctx->Color.AlphaEnabled;
111 break;
112 case GL_ALPHA_TEST_FUNC:
113 params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc);
114 break;
115 case GL_ALPHA_TEST_REF:
116 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef);
117 break;
118 case GL_ATTRIB_STACK_DEPTH:
119 params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth);
120 break;
121 case GL_AUTO_NORMAL:
122 params[0] = ctx->Eval.AutoNormal;
123 break;
124 case GL_AUX_BUFFERS:
125 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers);
126 break;
127 case GL_BLEND:
128 params[0] = ctx->Color.BlendEnabled;
129 break;
130 case GL_BLEND_DST:
131 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
132 break;
133 case GL_BLEND_SRC:
134 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
135 break;
136 case GL_BLEND_SRC_RGB_EXT:
137 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
138 break;
139 case GL_BLEND_DST_RGB_EXT:
140 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
141 break;
142 case GL_BLEND_SRC_ALPHA_EXT:
143 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA);
144 break;
145 case GL_BLEND_DST_ALPHA_EXT:
146 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA);
147 break;
148 case GL_BLEND_EQUATION:
149 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB );
150 break;
151 case GL_BLEND_EQUATION_ALPHA_EXT:
152 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA );
153 break;
154 case GL_BLEND_COLOR_EXT:
155 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]);
156 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]);
157 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]);
158 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]);
159 break;
160 case GL_BLUE_BIAS:
161 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias);
162 break;
163 case GL_BLUE_BITS:
164 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits);
165 break;
166 case GL_BLUE_SCALE:
167 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale);
168 break;
169 case GL_CLIENT_ATTRIB_STACK_DEPTH:
170 params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth);
171 break;
172 case GL_CLIP_PLANE0:
173 params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1;
174 break;
175 case GL_CLIP_PLANE1:
176 params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1;
177 break;
178 case GL_CLIP_PLANE2:
179 params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1;
180 break;
181 case GL_CLIP_PLANE3:
182 params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1;
183 break;
184 case GL_CLIP_PLANE4:
185 params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1;
186 break;
187 case GL_CLIP_PLANE5:
188 params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1;
189 break;
190 case GL_COLOR_CLEAR_VALUE:
191 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]);
192 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]);
193 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]);
194 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]);
195 break;
196 case GL_COLOR_MATERIAL:
197 params[0] = ctx->Light.ColorMaterialEnabled;
198 break;
199 case GL_COLOR_MATERIAL_FACE:
200 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace);
201 break;
202 case GL_COLOR_MATERIAL_PARAMETER:
203 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode);
204 break;
205 case GL_COLOR_WRITEMASK:
206 params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
207 params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
208 params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
209 params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
210 break;
211 case GL_CULL_FACE:
212 params[0] = ctx->Polygon.CullFlag;
213 break;
214 case GL_CULL_FACE_MODE:
215 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode);
216 break;
217 case GL_CURRENT_COLOR:
218 {
219 FLUSH_CURRENT(ctx, 0);
220 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
221 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
222 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
223 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
224 }
225 break;
226 case GL_CURRENT_INDEX:
227 {
228 FLUSH_CURRENT(ctx, 0);
229 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
230 }
231 break;
232 case GL_CURRENT_NORMAL:
233 {
234 FLUSH_CURRENT(ctx, 0);
235 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
236 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
237 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
238 }
239 break;
240 case GL_CURRENT_RASTER_COLOR:
241 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]);
242 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]);
243 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]);
244 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]);
245 break;
246 case GL_CURRENT_RASTER_DISTANCE:
247 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance);
248 break;
249 case GL_CURRENT_RASTER_INDEX:
250 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterIndex);
251 break;
252 case GL_CURRENT_RASTER_POSITION:
253 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]);
254 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]);
255 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]);
256 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]);
257 break;
258 case GL_CURRENT_RASTER_SECONDARY_COLOR:
259 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]);
260 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]);
261 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]);
262 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]);
263 break;
264 case GL_CURRENT_RASTER_TEXTURE_COORDS:
265 {
266 const GLuint texUnit = ctx->Texture.CurrentUnit;
267 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][0]);
268 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][1]);
269 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][2]);
270 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][3]);
271 }
272 break;
273 case GL_CURRENT_RASTER_POSITION_VALID:
274 params[0] = ctx->Current.RasterPosValid;
275 break;
276 case GL_CURRENT_TEXTURE_COORDS:
277 {
278 const GLuint texUnit = ctx->Texture.CurrentUnit;
279 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
280 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
281 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
282 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
283 }
284 break;
285 case GL_DEPTH_BIAS:
286 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias);
287 break;
288 case GL_DEPTH_BITS:
289 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits);
290 break;
291 case GL_DEPTH_CLEAR_VALUE:
292 params[0] = FLOAT_TO_BOOLEAN(((GLfloat) ctx->Depth.Clear));
293 break;
294 case GL_DEPTH_FUNC:
295 params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func);
296 break;
297 case GL_DEPTH_RANGE:
298 params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near);
299 params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far);
300 break;
301 case GL_DEPTH_SCALE:
302 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale);
303 break;
304 case GL_DEPTH_TEST:
305 params[0] = ctx->Depth.Test;
306 break;
307 case GL_DEPTH_WRITEMASK:
308 params[0] = ctx->Depth.Mask;
309 break;
310 case GL_DITHER:
311 params[0] = ctx->Color.DitherFlag;
312 break;
313 case GL_DOUBLEBUFFER:
314 params[0] = ctx->DrawBuffer->Visual.doubleBufferMode;
315 break;
316 case GL_DRAW_BUFFER:
317 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
318 break;
319 case GL_EDGE_FLAG:
320 {
321 FLUSH_CURRENT(ctx, 0);
322 params[0] = (ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0);
323 }
324 break;
325 case GL_FEEDBACK_BUFFER_SIZE:
326 params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize);
327 break;
328 case GL_FEEDBACK_BUFFER_TYPE:
329 params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type);
330 break;
331 case GL_FOG:
332 params[0] = ctx->Fog.Enabled;
333 break;
334 case GL_FOG_COLOR:
335 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]);
336 params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]);
337 params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]);
338 params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]);
339 break;
340 case GL_FOG_DENSITY:
341 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density);
342 break;
343 case GL_FOG_END:
344 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End);
345 break;
346 case GL_FOG_HINT:
347 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog);
348 break;
349 case GL_FOG_INDEX:
350 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index);
351 break;
352 case GL_FOG_MODE:
353 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode);
354 break;
355 case GL_FOG_START:
356 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start);
357 break;
358 case GL_FRONT_FACE:
359 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace);
360 break;
361 case GL_GREEN_BIAS:
362 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias);
363 break;
364 case GL_GREEN_BITS:
365 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits);
366 break;
367 case GL_GREEN_SCALE:
368 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale);
369 break;
370 case GL_INDEX_BITS:
371 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits);
372 break;
373 case GL_INDEX_CLEAR_VALUE:
374 params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex);
375 break;
376 case GL_INDEX_MODE:
377 params[0] = !ctx->DrawBuffer->Visual.rgbMode;
378 break;
379 case GL_INDEX_OFFSET:
380 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset);
381 break;
382 case GL_INDEX_SHIFT:
383 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift);
384 break;
385 case GL_INDEX_WRITEMASK:
386 params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask);
387 break;
388 case GL_LIGHT0:
389 params[0] = ctx->Light.Light[0].Enabled;
390 break;
391 case GL_LIGHT1:
392 params[0] = ctx->Light.Light[1].Enabled;
393 break;
394 case GL_LIGHT2:
395 params[0] = ctx->Light.Light[2].Enabled;
396 break;
397 case GL_LIGHT3:
398 params[0] = ctx->Light.Light[3].Enabled;
399 break;
400 case GL_LIGHT4:
401 params[0] = ctx->Light.Light[4].Enabled;
402 break;
403 case GL_LIGHT5:
404 params[0] = ctx->Light.Light[5].Enabled;
405 break;
406 case GL_LIGHT6:
407 params[0] = ctx->Light.Light[6].Enabled;
408 break;
409 case GL_LIGHT7:
410 params[0] = ctx->Light.Light[7].Enabled;
411 break;
412 case GL_LIGHTING:
413 params[0] = ctx->Light.Enabled;
414 break;
415 case GL_LIGHT_MODEL_AMBIENT:
416 params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]);
417 params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]);
418 params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]);
419 params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]);
420 break;
421 case GL_LIGHT_MODEL_COLOR_CONTROL:
422 params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl);
423 break;
424 case GL_LIGHT_MODEL_LOCAL_VIEWER:
425 params[0] = ctx->Light.Model.LocalViewer;
426 break;
427 case GL_LIGHT_MODEL_TWO_SIDE:
428 params[0] = ctx->Light.Model.TwoSide;
429 break;
430 case GL_LINE_SMOOTH:
431 params[0] = ctx->Line.SmoothFlag;
432 break;
433 case GL_LINE_SMOOTH_HINT:
434 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth);
435 break;
436 case GL_LINE_STIPPLE:
437 params[0] = ctx->Line.StippleFlag;
438 break;
439 case GL_LINE_STIPPLE_PATTERN:
440 params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern);
441 break;
442 case GL_LINE_STIPPLE_REPEAT:
443 params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor);
444 break;
445 case GL_LINE_WIDTH:
446 params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width);
447 break;
448 case GL_LINE_WIDTH_GRANULARITY:
449 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity);
450 break;
451 case GL_LINE_WIDTH_RANGE:
452 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA);
453 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA);
454 break;
455 case GL_ALIASED_LINE_WIDTH_RANGE:
456 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth);
457 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth);
458 break;
459 case GL_LIST_BASE:
460 params[0] = INT_TO_BOOLEAN(ctx->List.ListBase);
461 break;
462 case GL_LIST_INDEX:
463 params[0] = INT_TO_BOOLEAN(ctx->ListState.CurrentListNum);
464 break;
465 case GL_LIST_MODE:
466 {
467 GLenum mode;
468 if (!ctx->CompileFlag)
469 mode = 0;
470 else if (ctx->ExecuteFlag)
471 mode = GL_COMPILE_AND_EXECUTE;
472 else
473 mode = GL_COMPILE;
474 params[0] = ENUM_TO_BOOLEAN(mode);
475 }
476 break;
477 case GL_INDEX_LOGIC_OP:
478 params[0] = ctx->Color.IndexLogicOpEnabled;
479 break;
480 case GL_COLOR_LOGIC_OP:
481 params[0] = ctx->Color.ColorLogicOpEnabled;
482 break;
483 case GL_LOGIC_OP_MODE:
484 params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp);
485 break;
486 case GL_MAP1_COLOR_4:
487 params[0] = ctx->Eval.Map1Color4;
488 break;
489 case GL_MAP1_GRID_DOMAIN:
490 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1);
491 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2);
492 break;
493 case GL_MAP1_GRID_SEGMENTS:
494 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un);
495 break;
496 case GL_MAP1_INDEX:
497 params[0] = ctx->Eval.Map1Index;
498 break;
499 case GL_MAP1_NORMAL:
500 params[0] = ctx->Eval.Map1Normal;
501 break;
502 case GL_MAP1_TEXTURE_COORD_1:
503 params[0] = ctx->Eval.Map1TextureCoord1;
504 break;
505 case GL_MAP1_TEXTURE_COORD_2:
506 params[0] = ctx->Eval.Map1TextureCoord2;
507 break;
508 case GL_MAP1_TEXTURE_COORD_3:
509 params[0] = ctx->Eval.Map1TextureCoord3;
510 break;
511 case GL_MAP1_TEXTURE_COORD_4:
512 params[0] = ctx->Eval.Map1TextureCoord4;
513 break;
514 case GL_MAP1_VERTEX_3:
515 params[0] = ctx->Eval.Map1Vertex3;
516 break;
517 case GL_MAP1_VERTEX_4:
518 params[0] = ctx->Eval.Map1Vertex4;
519 break;
520 case GL_MAP2_COLOR_4:
521 params[0] = ctx->Eval.Map2Color4;
522 break;
523 case GL_MAP2_GRID_DOMAIN:
524 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1);
525 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2);
526 params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1);
527 params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2);
528 break;
529 case GL_MAP2_GRID_SEGMENTS:
530 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un);
531 params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn);
532 break;
533 case GL_MAP2_INDEX:
534 params[0] = ctx->Eval.Map2Index;
535 break;
536 case GL_MAP2_NORMAL:
537 params[0] = ctx->Eval.Map2Normal;
538 break;
539 case GL_MAP2_TEXTURE_COORD_1:
540 params[0] = ctx->Eval.Map2TextureCoord1;
541 break;
542 case GL_MAP2_TEXTURE_COORD_2:
543 params[0] = ctx->Eval.Map2TextureCoord2;
544 break;
545 case GL_MAP2_TEXTURE_COORD_3:
546 params[0] = ctx->Eval.Map2TextureCoord3;
547 break;
548 case GL_MAP2_TEXTURE_COORD_4:
549 params[0] = ctx->Eval.Map2TextureCoord4;
550 break;
551 case GL_MAP2_VERTEX_3:
552 params[0] = ctx->Eval.Map2Vertex3;
553 break;
554 case GL_MAP2_VERTEX_4:
555 params[0] = ctx->Eval.Map2Vertex4;
556 break;
557 case GL_MAP_COLOR:
558 params[0] = ctx->Pixel.MapColorFlag;
559 break;
560 case GL_MAP_STENCIL:
561 params[0] = ctx->Pixel.MapStencilFlag;
562 break;
563 case GL_MATRIX_MODE:
564 params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode);
565 break;
566 case GL_MAX_ATTRIB_STACK_DEPTH:
567 params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH);
568 break;
569 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
570 params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH);
571 break;
572 case GL_MAX_CLIP_PLANES:
573 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes);
574 break;
575 case GL_MAX_ELEMENTS_VERTICES:
576 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
577 break;
578 case GL_MAX_ELEMENTS_INDICES:
579 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
580 break;
581 case GL_MAX_EVAL_ORDER:
582 params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER);
583 break;
584 case GL_MAX_LIGHTS:
585 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights);
586 break;
587 case GL_MAX_LIST_NESTING:
588 params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING);
589 break;
590 case GL_MAX_MODELVIEW_STACK_DEPTH:
591 params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH);
592 break;
593 case GL_MAX_NAME_STACK_DEPTH:
594 params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH);
595 break;
596 case GL_MAX_PIXEL_MAP_TABLE:
597 params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE);
598 break;
599 case GL_MAX_PROJECTION_STACK_DEPTH:
600 params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH);
601 break;
602 case GL_MAX_TEXTURE_SIZE:
603 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1));
604 break;
605 case GL_MAX_3D_TEXTURE_SIZE:
606 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1));
607 break;
608 case GL_MAX_TEXTURE_STACK_DEPTH:
609 params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH);
610 break;
611 case GL_MAX_VIEWPORT_DIMS:
612 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth);
613 params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight);
614 break;
615 case GL_MODELVIEW_MATRIX:
616 {
617 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
618 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
619 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
620 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
621 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
622 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
623 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
624 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
625 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
626 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
627 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
628 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
629 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
630 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
631 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
632 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
633 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
634 }
635 break;
636 case GL_MODELVIEW_STACK_DEPTH:
637 params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1);
638 break;
639 case GL_NAME_STACK_DEPTH:
640 params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth);
641 break;
642 case GL_NORMALIZE:
643 params[0] = ctx->Transform.Normalize;
644 break;
645 case GL_PACK_ALIGNMENT:
646 params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment);
647 break;
648 case GL_PACK_LSB_FIRST:
649 params[0] = ctx->Pack.LsbFirst;
650 break;
651 case GL_PACK_ROW_LENGTH:
652 params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength);
653 break;
654 case GL_PACK_SKIP_PIXELS:
655 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels);
656 break;
657 case GL_PACK_SKIP_ROWS:
658 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows);
659 break;
660 case GL_PACK_SWAP_BYTES:
661 params[0] = ctx->Pack.SwapBytes;
662 break;
663 case GL_PACK_SKIP_IMAGES_EXT:
664 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages);
665 break;
666 case GL_PACK_IMAGE_HEIGHT_EXT:
667 params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight);
668 break;
669 case GL_PACK_INVERT_MESA:
670 params[0] = ctx->Pack.Invert;
671 break;
672 case GL_PERSPECTIVE_CORRECTION_HINT:
673 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection);
674 break;
675 case GL_PIXEL_MAP_A_TO_A_SIZE:
676 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.AtoA.Size);
677 break;
678 case GL_PIXEL_MAP_B_TO_B_SIZE:
679 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.BtoB.Size);
680 break;
681 case GL_PIXEL_MAP_G_TO_G_SIZE:
682 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.GtoG.Size);
683 break;
684 case GL_PIXEL_MAP_I_TO_A_SIZE:
685 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoA.Size);
686 break;
687 case GL_PIXEL_MAP_I_TO_B_SIZE:
688 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoB.Size);
689 break;
690 case GL_PIXEL_MAP_I_TO_G_SIZE:
691 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoG.Size);
692 break;
693 case GL_PIXEL_MAP_I_TO_I_SIZE:
694 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoI.Size);
695 break;
696 case GL_PIXEL_MAP_I_TO_R_SIZE:
697 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoR.Size);
698 break;
699 case GL_PIXEL_MAP_R_TO_R_SIZE:
700 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.RtoR.Size);
701 break;
702 case GL_PIXEL_MAP_S_TO_S_SIZE:
703 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.StoS.Size);
704 break;
705 case GL_POINT_SIZE:
706 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size);
707 break;
708 case GL_POINT_SIZE_GRANULARITY:
709 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity);
710 break;
711 case GL_POINT_SIZE_RANGE:
712 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA);
713 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA);
714 break;
715 case GL_ALIASED_POINT_SIZE_RANGE:
716 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize);
717 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize);
718 break;
719 case GL_POINT_SMOOTH:
720 params[0] = ctx->Point.SmoothFlag;
721 break;
722 case GL_POINT_SMOOTH_HINT:
723 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth);
724 break;
725 case GL_POINT_SIZE_MIN_EXT:
726 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize);
727 break;
728 case GL_POINT_SIZE_MAX_EXT:
729 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize);
730 break;
731 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
732 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold);
733 break;
734 case GL_DISTANCE_ATTENUATION_EXT:
735 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]);
736 params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]);
737 params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]);
738 break;
739 case GL_POLYGON_MODE:
740 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode);
741 params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode);
742 break;
743 case GL_POLYGON_OFFSET_BIAS_EXT:
744 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits);
745 break;
746 case GL_POLYGON_OFFSET_FACTOR:
747 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor );
748 break;
749 case GL_POLYGON_OFFSET_UNITS:
750 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits );
751 break;
752 case GL_POLYGON_OFFSET_POINT:
753 params[0] = ctx->Polygon.OffsetPoint;
754 break;
755 case GL_POLYGON_OFFSET_LINE:
756 params[0] = ctx->Polygon.OffsetLine;
757 break;
758 case GL_POLYGON_OFFSET_FILL:
759 params[0] = ctx->Polygon.OffsetFill;
760 break;
761 case GL_POLYGON_SMOOTH:
762 params[0] = ctx->Polygon.SmoothFlag;
763 break;
764 case GL_POLYGON_SMOOTH_HINT:
765 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth);
766 break;
767 case GL_POLYGON_STIPPLE:
768 params[0] = ctx->Polygon.StippleFlag;
769 break;
770 case GL_PROJECTION_MATRIX:
771 {
772 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
773 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
774 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
775 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
776 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
777 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
778 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
779 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
780 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
781 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
782 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
783 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
784 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
785 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
786 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
787 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
788 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
789 }
790 break;
791 case GL_PROJECTION_STACK_DEPTH:
792 params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1);
793 break;
794 case GL_READ_BUFFER:
795 params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer);
796 break;
797 case GL_RED_BIAS:
798 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias);
799 break;
800 case GL_RED_BITS:
801 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.redBits);
802 break;
803 case GL_RED_SCALE:
804 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale);
805 break;
806 case GL_RENDER_MODE:
807 params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode);
808 break;
809 case GL_RESCALE_NORMAL:
810 params[0] = ctx->Transform.RescaleNormals;
811 break;
812 case GL_RGBA_MODE:
813 params[0] = ctx->DrawBuffer->Visual.rgbMode;
814 break;
815 case GL_SCISSOR_BOX:
816 params[0] = INT_TO_BOOLEAN(ctx->Scissor.X);
817 params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y);
818 params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width);
819 params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height);
820 break;
821 case GL_SCISSOR_TEST:
822 params[0] = ctx->Scissor.Enabled;
823 break;
824 case GL_SELECTION_BUFFER_SIZE:
825 params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize);
826 break;
827 case GL_SHADE_MODEL:
828 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel);
829 break;
830 case GL_SHARED_TEXTURE_PALETTE_EXT:
831 params[0] = ctx->Texture.SharedPalette;
832 break;
833 case GL_STENCIL_BITS:
834 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits);
835 break;
836 case GL_STENCIL_CLEAR_VALUE:
837 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear);
838 break;
839 case GL_STENCIL_FAIL:
840 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
841 break;
842 case GL_STENCIL_FUNC:
843 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
844 break;
845 case GL_STENCIL_PASS_DEPTH_FAIL:
846 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
847 break;
848 case GL_STENCIL_PASS_DEPTH_PASS:
849 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
850 break;
851 case GL_STENCIL_REF:
852 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
853 break;
854 case GL_STENCIL_TEST:
855 params[0] = ctx->Stencil.Enabled;
856 break;
857 case GL_STENCIL_VALUE_MASK:
858 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
859 break;
860 case GL_STENCIL_WRITEMASK:
861 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
862 break;
863 case GL_STEREO:
864 params[0] = ctx->DrawBuffer->Visual.stereoMode;
865 break;
866 case GL_SUBPIXEL_BITS:
867 params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits);
868 break;
869 case GL_TEXTURE_1D:
870 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D);
871 break;
872 case GL_TEXTURE_2D:
873 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D);
874 break;
875 case GL_TEXTURE_3D:
876 params[0] = _mesa_IsEnabled(GL_TEXTURE_3D);
877 break;
878 case GL_TEXTURE_1D_ARRAY_EXT:
879 CHECK_EXT1(MESA_texture_array, "GetBooleanv");
880 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT);
881 break;
882 case GL_TEXTURE_2D_ARRAY_EXT:
883 CHECK_EXT1(MESA_texture_array, "GetBooleanv");
884 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT);
885 break;
886 case GL_TEXTURE_BINDING_1D:
887 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name);
888 break;
889 case GL_TEXTURE_BINDING_2D:
890 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name);
891 break;
892 case GL_TEXTURE_BINDING_3D:
893 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name);
894 break;
895 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
896 CHECK_EXT1(MESA_texture_array, "GetBooleanv");
897 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1DArray->Name);
898 break;
899 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
900 CHECK_EXT1(MESA_texture_array, "GetBooleanv");
901 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2DArray->Name);
902 break;
903 case GL_TEXTURE_GEN_S:
904 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0);
905 break;
906 case GL_TEXTURE_GEN_T:
907 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0);
908 break;
909 case GL_TEXTURE_GEN_R:
910 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0);
911 break;
912 case GL_TEXTURE_GEN_Q:
913 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0);
914 break;
915 case GL_TEXTURE_MATRIX:
916 {
917 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
918 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
919 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
920 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
921 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
922 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
923 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
924 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
925 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
926 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
927 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
928 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
929 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
930 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
931 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
932 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
933 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
934 }
935 break;
936 case GL_TEXTURE_STACK_DEPTH:
937 params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
938 break;
939 case GL_UNPACK_ALIGNMENT:
940 params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment);
941 break;
942 case GL_UNPACK_LSB_FIRST:
943 params[0] = ctx->Unpack.LsbFirst;
944 break;
945 case GL_UNPACK_ROW_LENGTH:
946 params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength);
947 break;
948 case GL_UNPACK_SKIP_PIXELS:
949 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels);
950 break;
951 case GL_UNPACK_SKIP_ROWS:
952 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows);
953 break;
954 case GL_UNPACK_SWAP_BYTES:
955 params[0] = ctx->Unpack.SwapBytes;
956 break;
957 case GL_UNPACK_SKIP_IMAGES_EXT:
958 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages);
959 break;
960 case GL_UNPACK_IMAGE_HEIGHT_EXT:
961 params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight);
962 break;
963 case GL_UNPACK_CLIENT_STORAGE_APPLE:
964 params[0] = ctx->Unpack.ClientStorage;
965 break;
966 case GL_VIEWPORT:
967 params[0] = INT_TO_BOOLEAN(ctx->Viewport.X);
968 params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y);
969 params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width);
970 params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height);
971 break;
972 case GL_ZOOM_X:
973 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX);
974 break;
975 case GL_ZOOM_Y:
976 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY);
977 break;
978 case GL_VERTEX_ARRAY:
979 params[0] = ctx->Array.ArrayObj->Vertex.Enabled;
980 break;
981 case GL_VERTEX_ARRAY_SIZE:
982 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size);
983 break;
984 case GL_VERTEX_ARRAY_TYPE:
985 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type);
986 break;
987 case GL_VERTEX_ARRAY_STRIDE:
988 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride);
989 break;
990 case GL_VERTEX_ARRAY_COUNT_EXT:
991 params[0] = INT_TO_BOOLEAN(0);
992 break;
993 case GL_NORMAL_ARRAY:
994 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled);
995 break;
996 case GL_NORMAL_ARRAY_TYPE:
997 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type);
998 break;
999 case GL_NORMAL_ARRAY_STRIDE:
1000 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride);
1001 break;
1002 case GL_NORMAL_ARRAY_COUNT_EXT:
1003 params[0] = INT_TO_BOOLEAN(0);
1004 break;
1005 case GL_COLOR_ARRAY:
1006 params[0] = ctx->Array.ArrayObj->Color.Enabled;
1007 break;
1008 case GL_COLOR_ARRAY_SIZE:
1009 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size);
1010 break;
1011 case GL_COLOR_ARRAY_TYPE:
1012 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type);
1013 break;
1014 case GL_COLOR_ARRAY_STRIDE:
1015 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride);
1016 break;
1017 case GL_COLOR_ARRAY_COUNT_EXT:
1018 params[0] = INT_TO_BOOLEAN(0);
1019 break;
1020 case GL_INDEX_ARRAY:
1021 params[0] = ctx->Array.ArrayObj->Index.Enabled;
1022 break;
1023 case GL_INDEX_ARRAY_TYPE:
1024 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type);
1025 break;
1026 case GL_INDEX_ARRAY_STRIDE:
1027 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride);
1028 break;
1029 case GL_INDEX_ARRAY_COUNT_EXT:
1030 params[0] = INT_TO_BOOLEAN(0);
1031 break;
1032 case GL_TEXTURE_COORD_ARRAY:
1033 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled;
1034 break;
1035 case GL_TEXTURE_COORD_ARRAY_SIZE:
1036 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
1037 break;
1038 case GL_TEXTURE_COORD_ARRAY_TYPE:
1039 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
1040 break;
1041 case GL_TEXTURE_COORD_ARRAY_STRIDE:
1042 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
1043 break;
1044 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
1045 params[0] = INT_TO_BOOLEAN(0);
1046 break;
1047 case GL_EDGE_FLAG_ARRAY:
1048 params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled;
1049 break;
1050 case GL_EDGE_FLAG_ARRAY_STRIDE:
1051 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride);
1052 break;
1053 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
1054 params[0] = INT_TO_BOOLEAN(0);
1055 break;
1056 case GL_MAX_TEXTURE_UNITS_ARB:
1057 CHECK_EXT1(ARB_multitexture, "GetBooleanv");
1058 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits);
1059 break;
1060 case GL_ACTIVE_TEXTURE_ARB:
1061 CHECK_EXT1(ARB_multitexture, "GetBooleanv");
1062 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
1063 break;
1064 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
1065 CHECK_EXT1(ARB_multitexture, "GetBooleanv");
1066 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
1067 break;
1068 case GL_TEXTURE_CUBE_MAP_ARB:
1069 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
1070 params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
1071 break;
1072 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
1073 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
1074 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentCubeMap->Name);
1075 break;
1076 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
1077 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
1078 params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
1079 break;
1080 case GL_TEXTURE_COMPRESSION_HINT_ARB:
1081 CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
1082 params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
1083 break;
1084 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
1085 CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
1086 params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
1087 break;
1088 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
1089 CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
1090 {
1091 GLint formats[100];
1092 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
1093 ASSERT(n <= 100);
1094 for (i = 0; i < n; i++)
1095 params[i] = ENUM_TO_BOOLEAN(formats[i]);
1096 }
1097 break;
1098 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
1099 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
1100 params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst);
1101 break;
1102 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
1103 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
1104 params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount);
1105 break;
1106 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
1107 {
1108 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
1109 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1110 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1111 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1112 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1113 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1114 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1115 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1116 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1117 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1118 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1119 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1120 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1121 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1122 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1123 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1124 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1125 }
1126 break;
1127 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
1128 {
1129 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
1130 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1131 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1132 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1133 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1134 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1135 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1136 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1137 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1138 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1139 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1140 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1141 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1142 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1143 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1144 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1145 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1146 }
1147 break;
1148 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
1149 {
1150 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
1151 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1152 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1153 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1154 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1155 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1156 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1157 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1158 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1159 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1160 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1161 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1162 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1163 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1164 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1165 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1166 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1167 }
1168 break;
1169 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
1170 {
1171 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
1172 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1173 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1174 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1175 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1176 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1177 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1178 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1179 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1180 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1181 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1182 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1183 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1184 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1185 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1186 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1187 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1188 }
1189 break;
1190 case GL_COLOR_MATRIX_SGI:
1191 {
1192 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
1193 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1194 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
1195 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
1196 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
1197 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
1198 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1199 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
1200 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
1201 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
1202 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
1203 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1204 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
1205 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
1206 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
1207 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
1208 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1209 }
1210 break;
1211 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
1212 params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1);
1213 break;
1214 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
1215 params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH);
1216 break;
1217 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
1218 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]);
1219 break;
1220 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
1221 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]);
1222 break;
1223 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
1224 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]);
1225 break;
1226 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
1227 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]);
1228 break;
1229 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
1230 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]);
1231 break;
1232 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
1233 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]);
1234 break;
1235 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
1236 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]);
1237 break;
1238 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
1239 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]);
1240 break;
1241 case GL_CONVOLUTION_1D_EXT:
1242 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1243 params[0] = ctx->Pixel.Convolution1DEnabled;
1244 break;
1245 case GL_CONVOLUTION_2D_EXT:
1246 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1247 params[0] = ctx->Pixel.Convolution2DEnabled;
1248 break;
1249 case GL_SEPARABLE_2D_EXT:
1250 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1251 params[0] = ctx->Pixel.Separable2DEnabled;
1252 break;
1253 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
1254 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1255 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]);
1256 break;
1257 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
1258 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1259 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]);
1260 break;
1261 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
1262 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1263 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]);
1264 break;
1265 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
1266 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1267 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]);
1268 break;
1269 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
1270 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1271 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]);
1272 break;
1273 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
1274 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1275 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]);
1276 break;
1277 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
1278 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1279 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]);
1280 break;
1281 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
1282 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1283 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]);
1284 break;
1285 case GL_HISTOGRAM:
1286 CHECK_EXT1(EXT_histogram, "GetBooleanv");
1287 params[0] = ctx->Pixel.HistogramEnabled;
1288 break;
1289 case GL_MINMAX:
1290 CHECK_EXT1(EXT_histogram, "GetBooleanv");
1291 params[0] = ctx->Pixel.MinMaxEnabled;
1292 break;
1293 case GL_COLOR_TABLE_SGI:
1294 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1295 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION];
1296 break;
1297 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
1298 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1299 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION];
1300 break;
1301 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
1302 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1303 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX];
1304 break;
1305 case GL_TEXTURE_COLOR_TABLE_SGI:
1306 CHECK_EXT1(SGI_texture_color_table, "GetBooleanv");
1307 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled;
1308 break;
1309 case GL_COLOR_SUM_EXT:
1310 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetBooleanv");
1311 params[0] = ctx->Fog.ColorSumEnabled;
1312 break;
1313 case GL_CURRENT_SECONDARY_COLOR_EXT:
1314 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1315 {
1316 FLUSH_CURRENT(ctx, 0);
1317 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
1318 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
1319 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
1320 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
1321 }
1322 break;
1323 case GL_SECONDARY_COLOR_ARRAY_EXT:
1324 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1325 params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled;
1326 break;
1327 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
1328 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1329 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type);
1330 break;
1331 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
1332 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1333 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride);
1334 break;
1335 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
1336 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1337 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size);
1338 break;
1339 case GL_CURRENT_FOG_COORDINATE_EXT:
1340 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1341 {
1342 FLUSH_CURRENT(ctx, 0);
1343 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
1344 }
1345 break;
1346 case GL_FOG_COORDINATE_ARRAY_EXT:
1347 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1348 params[0] = ctx->Array.ArrayObj->FogCoord.Enabled;
1349 break;
1350 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
1351 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1352 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type);
1353 break;
1354 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
1355 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1356 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride);
1357 break;
1358 case GL_FOG_COORDINATE_SOURCE_EXT:
1359 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1360 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource);
1361 break;
1362 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
1363 CHECK_EXT1(EXT_texture_lod_bias, "GetBooleanv");
1364 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias);
1365 break;
1366 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
1367 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetBooleanv");
1368 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy);
1369 break;
1370 case GL_MULTISAMPLE_ARB:
1371 CHECK_EXT1(ARB_multisample, "GetBooleanv");
1372 params[0] = ctx->Multisample.Enabled;
1373 break;
1374 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
1375 CHECK_EXT1(ARB_multisample, "GetBooleanv");
1376 params[0] = ctx->Multisample.SampleAlphaToCoverage;
1377 break;
1378 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
1379 CHECK_EXT1(ARB_multisample, "GetBooleanv");
1380 params[0] = ctx->Multisample.SampleAlphaToOne;
1381 break;
1382 case GL_SAMPLE_COVERAGE_ARB:
1383 CHECK_EXT1(ARB_multisample, "GetBooleanv");
1384 params[0] = ctx->Multisample.SampleCoverage;
1385 break;
1386 case GL_SAMPLE_COVERAGE_VALUE_ARB:
1387 CHECK_EXT1(ARB_multisample, "GetBooleanv");
1388 params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue);
1389 break;
1390 case GL_SAMPLE_COVERAGE_INVERT_ARB:
1391 CHECK_EXT1(ARB_multisample, "GetBooleanv");
1392 params[0] = ctx->Multisample.SampleCoverageInvert;
1393 break;
1394 case GL_SAMPLE_BUFFERS_ARB:
1395 CHECK_EXT1(ARB_multisample, "GetBooleanv");
1396 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers);
1397 break;
1398 case GL_SAMPLES_ARB:
1399 CHECK_EXT1(ARB_multisample, "GetBooleanv");
1400 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples);
1401 break;
1402 case GL_RASTER_POSITION_UNCLIPPED_IBM:
1403 CHECK_EXT1(IBM_rasterpos_clip, "GetBooleanv");
1404 params[0] = ctx->Transform.RasterPositionUnclipped;
1405 break;
1406 case GL_POINT_SPRITE_NV:
1407 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
1408 params[0] = ctx->Point.PointSprite;
1409 break;
1410 case GL_POINT_SPRITE_R_MODE_NV:
1411 CHECK_EXT1(NV_point_sprite, "GetBooleanv");
1412 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode);
1413 break;
1414 case GL_POINT_SPRITE_COORD_ORIGIN:
1415 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
1416 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin);
1417 break;
1418 case GL_GENERATE_MIPMAP_HINT_SGIS:
1419 CHECK_EXT1(SGIS_generate_mipmap, "GetBooleanv");
1420 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap);
1421 break;
1422 case GL_VERTEX_PROGRAM_BINDING_NV:
1423 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1424 params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
1425 break;
1426 case GL_VERTEX_ATTRIB_ARRAY0_NV:
1427 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1428 params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled;
1429 break;
1430 case GL_VERTEX_ATTRIB_ARRAY1_NV:
1431 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1432 params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled;
1433 break;
1434 case GL_VERTEX_ATTRIB_ARRAY2_NV:
1435 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1436 params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled;
1437 break;
1438 case GL_VERTEX_ATTRIB_ARRAY3_NV:
1439 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1440 params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled;
1441 break;
1442 case GL_VERTEX_ATTRIB_ARRAY4_NV:
1443 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1444 params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled;
1445 break;
1446 case GL_VERTEX_ATTRIB_ARRAY5_NV:
1447 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1448 params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled;
1449 break;
1450 case GL_VERTEX_ATTRIB_ARRAY6_NV:
1451 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1452 params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled;
1453 break;
1454 case GL_VERTEX_ATTRIB_ARRAY7_NV:
1455 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1456 params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled;
1457 break;
1458 case GL_VERTEX_ATTRIB_ARRAY8_NV:
1459 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1460 params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled;
1461 break;
1462 case GL_VERTEX_ATTRIB_ARRAY9_NV:
1463 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1464 params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled;
1465 break;
1466 case GL_VERTEX_ATTRIB_ARRAY10_NV:
1467 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1468 params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled;
1469 break;
1470 case GL_VERTEX_ATTRIB_ARRAY11_NV:
1471 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1472 params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled;
1473 break;
1474 case GL_VERTEX_ATTRIB_ARRAY12_NV:
1475 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1476 params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled;
1477 break;
1478 case GL_VERTEX_ATTRIB_ARRAY13_NV:
1479 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1480 params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled;
1481 break;
1482 case GL_VERTEX_ATTRIB_ARRAY14_NV:
1483 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1484 params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled;
1485 break;
1486 case GL_VERTEX_ATTRIB_ARRAY15_NV:
1487 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1488 params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled;
1489 break;
1490 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
1491 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1492 params[0] = ctx->Eval.Map1Attrib[0];
1493 break;
1494 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
1495 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1496 params[0] = ctx->Eval.Map1Attrib[1];
1497 break;
1498 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
1499 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1500 params[0] = ctx->Eval.Map1Attrib[2];
1501 break;
1502 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
1503 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1504 params[0] = ctx->Eval.Map1Attrib[3];
1505 break;
1506 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
1507 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1508 params[0] = ctx->Eval.Map1Attrib[4];
1509 break;
1510 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
1511 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1512 params[0] = ctx->Eval.Map1Attrib[5];
1513 break;
1514 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
1515 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1516 params[0] = ctx->Eval.Map1Attrib[6];
1517 break;
1518 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
1519 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1520 params[0] = ctx->Eval.Map1Attrib[7];
1521 break;
1522 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
1523 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1524 params[0] = ctx->Eval.Map1Attrib[8];
1525 break;
1526 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
1527 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1528 params[0] = ctx->Eval.Map1Attrib[9];
1529 break;
1530 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
1531 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1532 params[0] = ctx->Eval.Map1Attrib[10];
1533 break;
1534 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
1535 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1536 params[0] = ctx->Eval.Map1Attrib[11];
1537 break;
1538 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
1539 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1540 params[0] = ctx->Eval.Map1Attrib[12];
1541 break;
1542 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
1543 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1544 params[0] = ctx->Eval.Map1Attrib[13];
1545 break;
1546 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
1547 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1548 params[0] = ctx->Eval.Map1Attrib[14];
1549 break;
1550 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
1551 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1552 params[0] = ctx->Eval.Map1Attrib[15];
1553 break;
1554 case GL_FRAGMENT_PROGRAM_NV:
1555 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1556 params[0] = ctx->FragmentProgram.Enabled;
1557 break;
1558 case GL_FRAGMENT_PROGRAM_BINDING_NV:
1559 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1560 params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
1561 break;
1562 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
1563 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1564 params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
1565 break;
1566 case GL_TEXTURE_RECTANGLE_NV:
1567 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1568 params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV);
1569 break;
1570 case GL_TEXTURE_BINDING_RECTANGLE_NV:
1571 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1572 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name);
1573 break;
1574 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
1575 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1576 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize);
1577 break;
1578 case GL_STENCIL_TEST_TWO_SIDE_EXT:
1579 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
1580 params[0] = ctx->Stencil.TestTwoSide;
1581 break;
1582 case GL_ACTIVE_STENCIL_FACE_EXT:
1583 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
1584 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
1585 break;
1586 case GL_MAX_SHININESS_NV:
1587 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
1588 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess);
1589 break;
1590 case GL_MAX_SPOT_EXPONENT_NV:
1591 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
1592 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent);
1593 break;
1594 case GL_ARRAY_BUFFER_BINDING_ARB:
1595 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1596 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name);
1597 break;
1598 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
1599 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1600 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
1601 break;
1602 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
1603 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1604 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name);
1605 break;
1606 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
1607 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1608 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name);
1609 break;
1610 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
1611 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1612 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name);
1613 break;
1614 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
1615 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1616 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
1617 break;
1618 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
1619 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1620 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
1621 break;
1622 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
1623 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1624 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
1625 break;
1626 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
1627 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1628 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
1629 break;
1630 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
1631 CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
1632 params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name);
1633 break;
1634 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
1635 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
1636 params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name);
1637 break;
1638 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
1639 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
1640 params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name);
1641 break;
1642 case GL_VERTEX_PROGRAM_ARB:
1643 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1644 params[0] = ctx->VertexProgram.Enabled;
1645 break;
1646 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
1647 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1648 params[0] = ctx->VertexProgram.PointSizeEnabled;
1649 break;
1650 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
1651 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1652 params[0] = ctx->VertexProgram.TwoSideEnabled;
1653 break;
1654 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
1655 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1656 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth);
1657 break;
1658 case GL_MAX_PROGRAM_MATRICES_ARB:
1659 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1660 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices);
1661 break;
1662 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
1663 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1664 params[0] = ctx->CurrentStack->Depth + 1;
1665 break;
1666 case GL_CURRENT_MATRIX_ARB:
1667 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1668 {
1669 const GLfloat *matrix = ctx->CurrentStack->Top->m;
1670 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1671 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
1672 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
1673 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
1674 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
1675 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1676 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
1677 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
1678 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
1679 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
1680 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1681 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
1682 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
1683 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
1684 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
1685 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1686 }
1687 break;
1688 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
1689 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetBooleanv");
1690 {
1691 const GLfloat *matrix = ctx->CurrentStack->Top->m;
1692 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1693 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1694 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1695 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1696 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1697 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1698 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1699 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1700 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1701 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1702 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1703 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1704 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1705 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1706 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1707 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1708 }
1709 break;
1710 case GL_MAX_VERTEX_ATTRIBS_ARB:
1711 CHECK_EXT1(ARB_vertex_program, "GetBooleanv");
1712 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs);
1713 break;
1714 case GL_PROGRAM_ERROR_POSITION_ARB:
1715 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetBooleanv");
1716 params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos);
1717 break;
1718 case GL_FRAGMENT_PROGRAM_ARB:
1719 CHECK_EXT1(ARB_fragment_program, "GetBooleanv");
1720 params[0] = ctx->FragmentProgram.Enabled;
1721 break;
1722 case GL_MAX_TEXTURE_COORDS_ARB:
1723 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1724 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits);
1725 break;
1726 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
1727 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1728 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits);
1729 break;
1730 case GL_DEPTH_BOUNDS_TEST_EXT:
1731 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
1732 params[0] = ctx->Depth.BoundsTest;
1733 break;
1734 case GL_DEPTH_BOUNDS_EXT:
1735 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
1736 params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
1737 params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
1738 break;
1739 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
1740 CHECK_EXT1(MESA_program_debug, "GetBooleanv");
1741 params[0] = ctx->FragmentProgram.CallbackEnabled;
1742 break;
1743 case GL_VERTEX_PROGRAM_CALLBACK_MESA:
1744 CHECK_EXT1(MESA_program_debug, "GetBooleanv");
1745 params[0] = ctx->VertexProgram.CallbackEnabled;
1746 break;
1747 case GL_FRAGMENT_PROGRAM_POSITION_MESA:
1748 CHECK_EXT1(MESA_program_debug, "GetBooleanv");
1749 params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.CurrentPosition);
1750 break;
1751 case GL_VERTEX_PROGRAM_POSITION_MESA:
1752 CHECK_EXT1(MESA_program_debug, "GetBooleanv");
1753 params[0] = INT_TO_BOOLEAN(ctx->VertexProgram.CurrentPosition);
1754 break;
1755 case GL_MAX_DRAW_BUFFERS_ARB:
1756 CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
1757 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
1758 break;
1759 case GL_DRAW_BUFFER0_ARB:
1760 CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
1761 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
1762 break;
1763 case GL_DRAW_BUFFER1_ARB:
1764 CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
1765 {
1766 GLenum buffer;
1767 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1768 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1769 return;
1770 }
1771 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
1772 params[0] = ENUM_TO_BOOLEAN(buffer);
1773 }
1774 break;
1775 case GL_DRAW_BUFFER2_ARB:
1776 CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
1777 {
1778 GLenum buffer;
1779 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1780 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1781 return;
1782 }
1783 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
1784 params[0] = ENUM_TO_BOOLEAN(buffer);
1785 }
1786 break;
1787 case GL_DRAW_BUFFER3_ARB:
1788 CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
1789 {
1790 GLenum buffer;
1791 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1792 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1793 return;
1794 }
1795 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
1796 params[0] = ENUM_TO_BOOLEAN(buffer);
1797 }
1798 break;
1799 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
1800 CHECK_EXT1(OES_read_format, "GetBooleanv");
1801 params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadType);
1802 break;
1803 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1804 CHECK_EXT1(OES_read_format, "GetBooleanv");
1805 params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadFormat);
1806 break;
1807 case GL_NUM_FRAGMENT_REGISTERS_ATI:
1808 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1809 params[0] = INT_TO_BOOLEAN(6);
1810 break;
1811 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
1812 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1813 params[0] = INT_TO_BOOLEAN(8);
1814 break;
1815 case GL_NUM_PASSES_ATI:
1816 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1817 params[0] = INT_TO_BOOLEAN(2);
1818 break;
1819 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
1820 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1821 params[0] = INT_TO_BOOLEAN(8);
1822 break;
1823 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
1824 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1825 params[0] = INT_TO_BOOLEAN(16);
1826 break;
1827 case GL_COLOR_ALPHA_PAIRING_ATI:
1828 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1829 params[0] = GL_TRUE;
1830 break;
1831 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
1832 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1833 params[0] = INT_TO_BOOLEAN(3);
1834 break;
1835 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
1836 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1837 params[0] = INT_TO_BOOLEAN(3);
1838 break;
1839 case GL_STENCIL_BACK_FUNC:
1840 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
1841 break;
1842 case GL_STENCIL_BACK_VALUE_MASK:
1843 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
1844 break;
1845 case GL_STENCIL_BACK_WRITEMASK:
1846 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]);
1847 break;
1848 case GL_STENCIL_BACK_REF:
1849 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
1850 break;
1851 case GL_STENCIL_BACK_FAIL:
1852 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
1853 break;
1854 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
1855 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
1856 break;
1857 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
1858 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
1859 break;
1860 case GL_FRAMEBUFFER_BINDING_EXT:
1861 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1862 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
1863 break;
1864 case GL_RENDERBUFFER_BINDING_EXT:
1865 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1866 params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
1867 break;
1868 case GL_MAX_COLOR_ATTACHMENTS_EXT:
1869 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1870 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
1871 break;
1872 case GL_MAX_RENDERBUFFER_SIZE_EXT:
1873 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1874 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
1875 break;
1876 case GL_READ_FRAMEBUFFER_BINDING_EXT:
1877 CHECK_EXT1(EXT_framebuffer_blit, "GetBooleanv");
1878 params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name);
1879 break;
1880 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
1881 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
1882 params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents);
1883 break;
1884 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
1885 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
1886 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
1887 break;
1888 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
1889 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1890 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents);
1891 break;
1892 case GL_MAX_VARYING_FLOATS_ARB:
1893 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1894 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4);
1895 break;
1896 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
1897 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1898 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits);
1899 break;
1900 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
1901 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1902 params[0] = INT_TO_BOOLEAN(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
1903 break;
1904 case GL_CURRENT_PROGRAM:
1905 CHECK_EXT1(ARB_shader_objects, "GetBooleanv");
1906 params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
1907 break;
1908 default:
1909 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
1910 }
1911 }
1912
1913 void GLAPIENTRY
1914 _mesa_GetFloatv( GLenum pname, GLfloat *params )
1915 {
1916 GET_CURRENT_CONTEXT(ctx);
1917 ASSERT_OUTSIDE_BEGIN_END(ctx);
1918
1919 if (!params)
1920 return;
1921
1922 if (ctx->NewState)
1923 _mesa_update_state(ctx);
1924
1925 if (ctx->Driver.GetFloatv &&
1926 ctx->Driver.GetFloatv(ctx, pname, params))
1927 return;
1928
1929 switch (pname) {
1930 case GL_ACCUM_RED_BITS:
1931 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
1932 break;
1933 case GL_ACCUM_GREEN_BITS:
1934 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
1935 break;
1936 case GL_ACCUM_BLUE_BITS:
1937 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
1938 break;
1939 case GL_ACCUM_ALPHA_BITS:
1940 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
1941 break;
1942 case GL_ACCUM_CLEAR_VALUE:
1943 params[0] = ctx->Accum.ClearColor[0];
1944 params[1] = ctx->Accum.ClearColor[1];
1945 params[2] = ctx->Accum.ClearColor[2];
1946 params[3] = ctx->Accum.ClearColor[3];
1947 break;
1948 case GL_ALPHA_BIAS:
1949 params[0] = ctx->Pixel.AlphaBias;
1950 break;
1951 case GL_ALPHA_BITS:
1952 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
1953 break;
1954 case GL_ALPHA_SCALE:
1955 params[0] = ctx->Pixel.AlphaScale;
1956 break;
1957 case GL_ALPHA_TEST:
1958 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
1959 break;
1960 case GL_ALPHA_TEST_FUNC:
1961 params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
1962 break;
1963 case GL_ALPHA_TEST_REF:
1964 params[0] = ctx->Color.AlphaRef;
1965 break;
1966 case GL_ATTRIB_STACK_DEPTH:
1967 params[0] = (GLfloat)(ctx->AttribStackDepth);
1968 break;
1969 case GL_AUTO_NORMAL:
1970 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
1971 break;
1972 case GL_AUX_BUFFERS:
1973 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
1974 break;
1975 case GL_BLEND:
1976 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.BlendEnabled);
1977 break;
1978 case GL_BLEND_DST:
1979 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
1980 break;
1981 case GL_BLEND_SRC:
1982 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
1983 break;
1984 case GL_BLEND_SRC_RGB_EXT:
1985 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
1986 break;
1987 case GL_BLEND_DST_RGB_EXT:
1988 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
1989 break;
1990 case GL_BLEND_SRC_ALPHA_EXT:
1991 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
1992 break;
1993 case GL_BLEND_DST_ALPHA_EXT:
1994 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
1995 break;
1996 case GL_BLEND_EQUATION:
1997 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
1998 break;
1999 case GL_BLEND_EQUATION_ALPHA_EXT:
2000 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
2001 break;
2002 case GL_BLEND_COLOR_EXT:
2003 params[0] = ctx->Color.BlendColor[0];
2004 params[1] = ctx->Color.BlendColor[1];
2005 params[2] = ctx->Color.BlendColor[2];
2006 params[3] = ctx->Color.BlendColor[3];
2007 break;
2008 case GL_BLUE_BIAS:
2009 params[0] = ctx->Pixel.BlueBias;
2010 break;
2011 case GL_BLUE_BITS:
2012 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
2013 break;
2014 case GL_BLUE_SCALE:
2015 params[0] = ctx->Pixel.BlueScale;
2016 break;
2017 case GL_CLIENT_ATTRIB_STACK_DEPTH:
2018 params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
2019 break;
2020 case GL_CLIP_PLANE0:
2021 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
2022 break;
2023 case GL_CLIP_PLANE1:
2024 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
2025 break;
2026 case GL_CLIP_PLANE2:
2027 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
2028 break;
2029 case GL_CLIP_PLANE3:
2030 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
2031 break;
2032 case GL_CLIP_PLANE4:
2033 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
2034 break;
2035 case GL_CLIP_PLANE5:
2036 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
2037 break;
2038 case GL_COLOR_CLEAR_VALUE:
2039 params[0] = ctx->Color.ClearColor[0];
2040 params[1] = ctx->Color.ClearColor[1];
2041 params[2] = ctx->Color.ClearColor[2];
2042 params[3] = ctx->Color.ClearColor[3];
2043 break;
2044 case GL_COLOR_MATERIAL:
2045 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
2046 break;
2047 case GL_COLOR_MATERIAL_FACE:
2048 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
2049 break;
2050 case GL_COLOR_MATERIAL_PARAMETER:
2051 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
2052 break;
2053 case GL_COLOR_WRITEMASK:
2054 params[0] = (GLfloat)(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
2055 params[1] = (GLfloat)(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
2056 params[2] = (GLfloat)(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
2057 params[3] = (GLfloat)(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
2058 break;
2059 case GL_CULL_FACE:
2060 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
2061 break;
2062 case GL_CULL_FACE_MODE:
2063 params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
2064 break;
2065 case GL_CURRENT_COLOR:
2066 {
2067 FLUSH_CURRENT(ctx, 0);
2068 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
2069 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
2070 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
2071 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
2072 }
2073 break;
2074 case GL_CURRENT_INDEX:
2075 {
2076 FLUSH_CURRENT(ctx, 0);
2077 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
2078 }
2079 break;
2080 case GL_CURRENT_NORMAL:
2081 {
2082 FLUSH_CURRENT(ctx, 0);
2083 params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
2084 params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
2085 params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
2086 }
2087 break;
2088 case GL_CURRENT_RASTER_COLOR:
2089 params[0] = ctx->Current.RasterColor[0];
2090 params[1] = ctx->Current.RasterColor[1];
2091 params[2] = ctx->Current.RasterColor[2];
2092 params[3] = ctx->Current.RasterColor[3];
2093 break;
2094 case GL_CURRENT_RASTER_DISTANCE:
2095 params[0] = ctx->Current.RasterDistance;
2096 break;
2097 case GL_CURRENT_RASTER_INDEX:
2098 params[0] = ctx->Current.RasterIndex;
2099 break;
2100 case GL_CURRENT_RASTER_POSITION:
2101 params[0] = ctx->Current.RasterPos[0];
2102 params[1] = ctx->Current.RasterPos[1];
2103 params[2] = ctx->Current.RasterPos[2];
2104 params[3] = ctx->Current.RasterPos[3];
2105 break;
2106 case GL_CURRENT_RASTER_SECONDARY_COLOR:
2107 params[0] = ctx->Current.RasterSecondaryColor[0];
2108 params[1] = ctx->Current.RasterSecondaryColor[1];
2109 params[2] = ctx->Current.RasterSecondaryColor[2];
2110 params[3] = ctx->Current.RasterSecondaryColor[3];
2111 break;
2112 case GL_CURRENT_RASTER_TEXTURE_COORDS:
2113 {
2114 const GLuint texUnit = ctx->Texture.CurrentUnit;
2115 params[0] = ctx->Current.RasterTexCoords[texUnit][0];
2116 params[1] = ctx->Current.RasterTexCoords[texUnit][1];
2117 params[2] = ctx->Current.RasterTexCoords[texUnit][2];
2118 params[3] = ctx->Current.RasterTexCoords[texUnit][3];
2119 }
2120 break;
2121 case GL_CURRENT_RASTER_POSITION_VALID:
2122 params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
2123 break;
2124 case GL_CURRENT_TEXTURE_COORDS:
2125 {
2126 const GLuint texUnit = ctx->Texture.CurrentUnit;
2127 params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
2128 params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
2129 params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
2130 params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
2131 }
2132 break;
2133 case GL_DEPTH_BIAS:
2134 params[0] = ctx->Pixel.DepthBias;
2135 break;
2136 case GL_DEPTH_BITS:
2137 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
2138 break;
2139 case GL_DEPTH_CLEAR_VALUE:
2140 params[0] = ((GLfloat) ctx->Depth.Clear);
2141 break;
2142 case GL_DEPTH_FUNC:
2143 params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
2144 break;
2145 case GL_DEPTH_RANGE:
2146 params[0] = ctx->Viewport.Near;
2147 params[1] = ctx->Viewport.Far;
2148 break;
2149 case GL_DEPTH_SCALE:
2150 params[0] = ctx->Pixel.DepthScale;
2151 break;
2152 case GL_DEPTH_TEST:
2153 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
2154 break;
2155 case GL_DEPTH_WRITEMASK:
2156 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
2157 break;
2158 case GL_DITHER:
2159 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
2160 break;
2161 case GL_DOUBLEBUFFER:
2162 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
2163 break;
2164 case GL_DRAW_BUFFER:
2165 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
2166 break;
2167 case GL_EDGE_FLAG:
2168 {
2169 FLUSH_CURRENT(ctx, 0);
2170 params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
2171 }
2172 break;
2173 case GL_FEEDBACK_BUFFER_SIZE:
2174 params[0] = (GLfloat)(ctx->Feedback.BufferSize);
2175 break;
2176 case GL_FEEDBACK_BUFFER_TYPE:
2177 params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
2178 break;
2179 case GL_FOG:
2180 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
2181 break;
2182 case GL_FOG_COLOR:
2183 params[0] = ctx->Fog.Color[0];
2184 params[1] = ctx->Fog.Color[1];
2185 params[2] = ctx->Fog.Color[2];
2186 params[3] = ctx->Fog.Color[3];
2187 break;
2188 case GL_FOG_DENSITY:
2189 params[0] = ctx->Fog.Density;
2190 break;
2191 case GL_FOG_END:
2192 params[0] = ctx->Fog.End;
2193 break;
2194 case GL_FOG_HINT:
2195 params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
2196 break;
2197 case GL_FOG_INDEX:
2198 params[0] = ctx->Fog.Index;
2199 break;
2200 case GL_FOG_MODE:
2201 params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
2202 break;
2203 case GL_FOG_START:
2204 params[0] = ctx->Fog.Start;
2205 break;
2206 case GL_FRONT_FACE:
2207 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
2208 break;
2209 case GL_GREEN_BIAS:
2210 params[0] = ctx->Pixel.GreenBias;
2211 break;
2212 case GL_GREEN_BITS:
2213 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
2214 break;
2215 case GL_GREEN_SCALE:
2216 params[0] = ctx->Pixel.GreenScale;
2217 break;
2218 case GL_INDEX_BITS:
2219 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
2220 break;
2221 case GL_INDEX_CLEAR_VALUE:
2222 params[0] = (GLfloat)(ctx->Color.ClearIndex);
2223 break;
2224 case GL_INDEX_MODE:
2225 params[0] = BOOLEAN_TO_FLOAT(!ctx->DrawBuffer->Visual.rgbMode);
2226 break;
2227 case GL_INDEX_OFFSET:
2228 params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
2229 break;
2230 case GL_INDEX_SHIFT:
2231 params[0] = (GLfloat)(ctx->Pixel.IndexShift);
2232 break;
2233 case GL_INDEX_WRITEMASK:
2234 params[0] = (GLfloat)(ctx->Color.IndexMask);
2235 break;
2236 case GL_LIGHT0:
2237 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
2238 break;
2239 case GL_LIGHT1:
2240 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
2241 break;
2242 case GL_LIGHT2:
2243 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
2244 break;
2245 case GL_LIGHT3:
2246 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
2247 break;
2248 case GL_LIGHT4:
2249 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
2250 break;
2251 case GL_LIGHT5:
2252 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
2253 break;
2254 case GL_LIGHT6:
2255 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
2256 break;
2257 case GL_LIGHT7:
2258 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
2259 break;
2260 case GL_LIGHTING:
2261 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
2262 break;
2263 case GL_LIGHT_MODEL_AMBIENT:
2264 params[0] = ctx->Light.Model.Ambient[0];
2265 params[1] = ctx->Light.Model.Ambient[1];
2266 params[2] = ctx->Light.Model.Ambient[2];
2267 params[3] = ctx->Light.Model.Ambient[3];
2268 break;
2269 case GL_LIGHT_MODEL_COLOR_CONTROL:
2270 params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
2271 break;
2272 case GL_LIGHT_MODEL_LOCAL_VIEWER:
2273 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
2274 break;
2275 case GL_LIGHT_MODEL_TWO_SIDE:
2276 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
2277 break;
2278 case GL_LINE_SMOOTH:
2279 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
2280 break;
2281 case GL_LINE_SMOOTH_HINT:
2282 params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
2283 break;
2284 case GL_LINE_STIPPLE:
2285 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
2286 break;
2287 case GL_LINE_STIPPLE_PATTERN:
2288 params[0] = (GLfloat)(ctx->Line.StipplePattern);
2289 break;
2290 case GL_LINE_STIPPLE_REPEAT:
2291 params[0] = (GLfloat)(ctx->Line.StippleFactor);
2292 break;
2293 case GL_LINE_WIDTH:
2294 params[0] = ctx->Line.Width;
2295 break;
2296 case GL_LINE_WIDTH_GRANULARITY:
2297 params[0] = ctx->Const.LineWidthGranularity;
2298 break;
2299 case GL_LINE_WIDTH_RANGE:
2300 params[0] = ctx->Const.MinLineWidthAA;
2301 params[1] = ctx->Const.MaxLineWidthAA;
2302 break;
2303 case GL_ALIASED_LINE_WIDTH_RANGE:
2304 params[0] = ctx->Const.MinLineWidth;
2305 params[1] = ctx->Const.MaxLineWidth;
2306 break;
2307 case GL_LIST_BASE:
2308 params[0] = (GLfloat)(ctx->List.ListBase);
2309 break;
2310 case GL_LIST_INDEX:
2311 params[0] = (GLfloat)(ctx->ListState.CurrentListNum);
2312 break;
2313 case GL_LIST_MODE:
2314 {
2315 GLenum mode;
2316 if (!ctx->CompileFlag)
2317 mode = 0;
2318 else if (ctx->ExecuteFlag)
2319 mode = GL_COMPILE_AND_EXECUTE;
2320 else
2321 mode = GL_COMPILE;
2322 params[0] = ENUM_TO_FLOAT(mode);
2323 }
2324 break;
2325 case GL_INDEX_LOGIC_OP:
2326 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
2327 break;
2328 case GL_COLOR_LOGIC_OP:
2329 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
2330 break;
2331 case GL_LOGIC_OP_MODE:
2332 params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
2333 break;
2334 case GL_MAP1_COLOR_4:
2335 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
2336 break;
2337 case GL_MAP1_GRID_DOMAIN:
2338 params[0] = ctx->Eval.MapGrid1u1;
2339 params[1] = ctx->Eval.MapGrid1u2;
2340 break;
2341 case GL_MAP1_GRID_SEGMENTS:
2342 params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
2343 break;
2344 case GL_MAP1_INDEX:
2345 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
2346 break;
2347 case GL_MAP1_NORMAL:
2348 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
2349 break;
2350 case GL_MAP1_TEXTURE_COORD_1:
2351 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
2352 break;
2353 case GL_MAP1_TEXTURE_COORD_2:
2354 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
2355 break;
2356 case GL_MAP1_TEXTURE_COORD_3:
2357 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
2358 break;
2359 case GL_MAP1_TEXTURE_COORD_4:
2360 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
2361 break;
2362 case GL_MAP1_VERTEX_3:
2363 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
2364 break;
2365 case GL_MAP1_VERTEX_4:
2366 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
2367 break;
2368 case GL_MAP2_COLOR_4:
2369 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
2370 break;
2371 case GL_MAP2_GRID_DOMAIN:
2372 params[0] = ctx->Eval.MapGrid2u1;
2373 params[1] = ctx->Eval.MapGrid2u2;
2374 params[2] = ctx->Eval.MapGrid2v1;
2375 params[3] = ctx->Eval.MapGrid2v2;
2376 break;
2377 case GL_MAP2_GRID_SEGMENTS:
2378 params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
2379 params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
2380 break;
2381 case GL_MAP2_INDEX:
2382 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
2383 break;
2384 case GL_MAP2_NORMAL:
2385 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
2386 break;
2387 case GL_MAP2_TEXTURE_COORD_1:
2388 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
2389 break;
2390 case GL_MAP2_TEXTURE_COORD_2:
2391 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
2392 break;
2393 case GL_MAP2_TEXTURE_COORD_3:
2394 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
2395 break;
2396 case GL_MAP2_TEXTURE_COORD_4:
2397 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
2398 break;
2399 case GL_MAP2_VERTEX_3:
2400 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
2401 break;
2402 case GL_MAP2_VERTEX_4:
2403 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
2404 break;
2405 case GL_MAP_COLOR:
2406 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
2407 break;
2408 case GL_MAP_STENCIL:
2409 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
2410 break;
2411 case GL_MATRIX_MODE:
2412 params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
2413 break;
2414 case GL_MAX_ATTRIB_STACK_DEPTH:
2415 params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
2416 break;
2417 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
2418 params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
2419 break;
2420 case GL_MAX_CLIP_PLANES:
2421 params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
2422 break;
2423 case GL_MAX_ELEMENTS_VERTICES:
2424 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2425 break;
2426 case GL_MAX_ELEMENTS_INDICES:
2427 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2428 break;
2429 case GL_MAX_EVAL_ORDER:
2430 params[0] = (GLfloat)(MAX_EVAL_ORDER);
2431 break;
2432 case GL_MAX_LIGHTS:
2433 params[0] = (GLfloat)(ctx->Const.MaxLights);
2434 break;
2435 case GL_MAX_LIST_NESTING:
2436 params[0] = (GLfloat)(MAX_LIST_NESTING);
2437 break;
2438 case GL_MAX_MODELVIEW_STACK_DEPTH:
2439 params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
2440 break;
2441 case GL_MAX_NAME_STACK_DEPTH:
2442 params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
2443 break;
2444 case GL_MAX_PIXEL_MAP_TABLE:
2445 params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
2446 break;
2447 case GL_MAX_PROJECTION_STACK_DEPTH:
2448 params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
2449 break;
2450 case GL_MAX_TEXTURE_SIZE:
2451 params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
2452 break;
2453 case GL_MAX_3D_TEXTURE_SIZE:
2454 params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
2455 break;
2456 case GL_MAX_TEXTURE_STACK_DEPTH:
2457 params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
2458 break;
2459 case GL_MAX_VIEWPORT_DIMS:
2460 params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
2461 params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
2462 break;
2463 case GL_MODELVIEW_MATRIX:
2464 {
2465 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
2466 params[0] = matrix[0];
2467 params[1] = matrix[1];
2468 params[2] = matrix[2];
2469 params[3] = matrix[3];
2470 params[4] = matrix[4];
2471 params[5] = matrix[5];
2472 params[6] = matrix[6];
2473 params[7] = matrix[7];
2474 params[8] = matrix[8];
2475 params[9] = matrix[9];
2476 params[10] = matrix[10];
2477 params[11] = matrix[11];
2478 params[12] = matrix[12];
2479 params[13] = matrix[13];
2480 params[14] = matrix[14];
2481 params[15] = matrix[15];
2482 }
2483 break;
2484 case GL_MODELVIEW_STACK_DEPTH:
2485 params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
2486 break;
2487 case GL_NAME_STACK_DEPTH:
2488 params[0] = (GLfloat)(ctx->Select.NameStackDepth);
2489 break;
2490 case GL_NORMALIZE:
2491 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
2492 break;
2493 case GL_PACK_ALIGNMENT:
2494 params[0] = (GLfloat)(ctx->Pack.Alignment);
2495 break;
2496 case GL_PACK_LSB_FIRST:
2497 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
2498 break;
2499 case GL_PACK_ROW_LENGTH:
2500 params[0] = (GLfloat)(ctx->Pack.RowLength);
2501 break;
2502 case GL_PACK_SKIP_PIXELS:
2503 params[0] = (GLfloat)(ctx->Pack.SkipPixels);
2504 break;
2505 case GL_PACK_SKIP_ROWS:
2506 params[0] = (GLfloat)(ctx->Pack.SkipRows);
2507 break;
2508 case GL_PACK_SWAP_BYTES:
2509 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
2510 break;
2511 case GL_PACK_SKIP_IMAGES_EXT:
2512 params[0] = (GLfloat)(ctx->Pack.SkipImages);
2513 break;
2514 case GL_PACK_IMAGE_HEIGHT_EXT:
2515 params[0] = (GLfloat)(ctx->Pack.ImageHeight);
2516 break;
2517 case GL_PACK_INVERT_MESA:
2518 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
2519 break;
2520 case GL_PERSPECTIVE_CORRECTION_HINT:
2521 params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
2522 break;
2523 case GL_PIXEL_MAP_A_TO_A_SIZE:
2524 params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size);
2525 break;
2526 case GL_PIXEL_MAP_B_TO_B_SIZE:
2527 params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size);
2528 break;
2529 case GL_PIXEL_MAP_G_TO_G_SIZE:
2530 params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size);
2531 break;
2532 case GL_PIXEL_MAP_I_TO_A_SIZE:
2533 params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size);
2534 break;
2535 case GL_PIXEL_MAP_I_TO_B_SIZE:
2536 params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size);
2537 break;
2538 case GL_PIXEL_MAP_I_TO_G_SIZE:
2539 params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size);
2540 break;
2541 case GL_PIXEL_MAP_I_TO_I_SIZE:
2542 params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size);
2543 break;
2544 case GL_PIXEL_MAP_I_TO_R_SIZE:
2545 params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size);
2546 break;
2547 case GL_PIXEL_MAP_R_TO_R_SIZE:
2548 params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size);
2549 break;
2550 case GL_PIXEL_MAP_S_TO_S_SIZE:
2551 params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size);
2552 break;
2553 case GL_POINT_SIZE:
2554 params[0] = ctx->Point.Size;
2555 break;
2556 case GL_POINT_SIZE_GRANULARITY:
2557 params[0] = ctx->Const.PointSizeGranularity;
2558 break;
2559 case GL_POINT_SIZE_RANGE:
2560 params[0] = ctx->Const.MinPointSizeAA;
2561 params[1] = ctx->Const.MaxPointSizeAA;
2562 break;
2563 case GL_ALIASED_POINT_SIZE_RANGE:
2564 params[0] = ctx->Const.MinPointSize;
2565 params[1] = ctx->Const.MaxPointSize;
2566 break;
2567 case GL_POINT_SMOOTH:
2568 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
2569 break;
2570 case GL_POINT_SMOOTH_HINT:
2571 params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
2572 break;
2573 case GL_POINT_SIZE_MIN_EXT:
2574 params[0] = ctx->Point.MinSize;
2575 break;
2576 case GL_POINT_SIZE_MAX_EXT:
2577 params[0] = ctx->Point.MaxSize;
2578 break;
2579 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
2580 params[0] = ctx->Point.Threshold;
2581 break;
2582 case GL_DISTANCE_ATTENUATION_EXT:
2583 params[0] = ctx->Point.Params[0];
2584 params[1] = ctx->Point.Params[1];
2585 params[2] = ctx->Point.Params[2];
2586 break;
2587 case GL_POLYGON_MODE:
2588 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
2589 params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
2590 break;
2591 case GL_POLYGON_OFFSET_BIAS_EXT:
2592 params[0] = ctx->Polygon.OffsetUnits;
2593 break;
2594 case GL_POLYGON_OFFSET_FACTOR:
2595 params[0] = ctx->Polygon.OffsetFactor ;
2596 break;
2597 case GL_POLYGON_OFFSET_UNITS:
2598 params[0] = ctx->Polygon.OffsetUnits ;
2599 break;
2600 case GL_POLYGON_OFFSET_POINT:
2601 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint);
2602 break;
2603 case GL_POLYGON_OFFSET_LINE:
2604 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine);
2605 break;
2606 case GL_POLYGON_OFFSET_FILL:
2607 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill);
2608 break;
2609 case GL_POLYGON_SMOOTH:
2610 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
2611 break;
2612 case GL_POLYGON_SMOOTH_HINT:
2613 params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
2614 break;
2615 case GL_POLYGON_STIPPLE:
2616 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
2617 break;
2618 case GL_PROJECTION_MATRIX:
2619 {
2620 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
2621 params[0] = matrix[0];
2622 params[1] = matrix[1];
2623 params[2] = matrix[2];
2624 params[3] = matrix[3];
2625 params[4] = matrix[4];
2626 params[5] = matrix[5];
2627 params[6] = matrix[6];
2628 params[7] = matrix[7];
2629 params[8] = matrix[8];
2630 params[9] = matrix[9];
2631 params[10] = matrix[10];
2632 params[11] = matrix[11];
2633 params[12] = matrix[12];
2634 params[13] = matrix[13];
2635 params[14] = matrix[14];
2636 params[15] = matrix[15];
2637 }
2638 break;
2639 case GL_PROJECTION_STACK_DEPTH:
2640 params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
2641 break;
2642 case GL_READ_BUFFER:
2643 params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
2644 break;
2645 case GL_RED_BIAS:
2646 params[0] = ctx->Pixel.RedBias;
2647 break;
2648 case GL_RED_BITS:
2649 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits);
2650 break;
2651 case GL_RED_SCALE:
2652 params[0] = ctx->Pixel.RedScale;
2653 break;
2654 case GL_RENDER_MODE:
2655 params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
2656 break;
2657 case GL_RESCALE_NORMAL:
2658 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
2659 break;
2660 case GL_RGBA_MODE:
2661 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.rgbMode);
2662 break;
2663 case GL_SCISSOR_BOX:
2664 params[0] = (GLfloat)(ctx->Scissor.X);
2665 params[1] = (GLfloat)(ctx->Scissor.Y);
2666 params[2] = (GLfloat)(ctx->Scissor.Width);
2667 params[3] = (GLfloat)(ctx->Scissor.Height);
2668 break;
2669 case GL_SCISSOR_TEST:
2670 params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
2671 break;
2672 case GL_SELECTION_BUFFER_SIZE:
2673 params[0] = (GLfloat)(ctx->Select.BufferSize);
2674 break;
2675 case GL_SHADE_MODEL:
2676 params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
2677 break;
2678 case GL_SHARED_TEXTURE_PALETTE_EXT:
2679 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
2680 break;
2681 case GL_STENCIL_BITS:
2682 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
2683 break;
2684 case GL_STENCIL_CLEAR_VALUE:
2685 params[0] = (GLfloat)(ctx->Stencil.Clear);
2686 break;
2687 case GL_STENCIL_FAIL:
2688 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
2689 break;
2690 case GL_STENCIL_FUNC:
2691 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
2692 break;
2693 case GL_STENCIL_PASS_DEPTH_FAIL:
2694 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
2695 break;
2696 case GL_STENCIL_PASS_DEPTH_PASS:
2697 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
2698 break;
2699 case GL_STENCIL_REF:
2700 params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
2701 break;
2702 case GL_STENCIL_TEST:
2703 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
2704 break;
2705 case GL_STENCIL_VALUE_MASK:
2706 params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
2707 break;
2708 case GL_STENCIL_WRITEMASK:
2709 params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
2710 break;
2711 case GL_STEREO:
2712 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
2713 break;
2714 case GL_SUBPIXEL_BITS:
2715 params[0] = (GLfloat)(ctx->Const.SubPixelBits);
2716 break;
2717 case GL_TEXTURE_1D:
2718 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
2719 break;
2720 case GL_TEXTURE_2D:
2721 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
2722 break;
2723 case GL_TEXTURE_3D:
2724 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
2725 break;
2726 case GL_TEXTURE_1D_ARRAY_EXT:
2727 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2728 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
2729 break;
2730 case GL_TEXTURE_2D_ARRAY_EXT:
2731 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2732 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
2733 break;
2734 case GL_TEXTURE_BINDING_1D:
2735 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1D->Name);
2736 break;
2737 case GL_TEXTURE_BINDING_2D:
2738 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name);
2739 break;
2740 case GL_TEXTURE_BINDING_3D:
2741 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->Name);
2742 break;
2743 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
2744 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2745 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current1DArray->Name);
2746 break;
2747 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
2748 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2749 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2DArray->Name);
2750 break;
2751 case GL_TEXTURE_GEN_S:
2752 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
2753 break;
2754 case GL_TEXTURE_GEN_T:
2755 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
2756 break;
2757 case GL_TEXTURE_GEN_R:
2758 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
2759 break;
2760 case GL_TEXTURE_GEN_Q:
2761 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
2762 break;
2763 case GL_TEXTURE_MATRIX:
2764 {
2765 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
2766 params[0] = matrix[0];
2767 params[1] = matrix[1];
2768 params[2] = matrix[2];
2769 params[3] = matrix[3];
2770 params[4] = matrix[4];
2771 params[5] = matrix[5];
2772 params[6] = matrix[6];
2773 params[7] = matrix[7];
2774 params[8] = matrix[8];
2775 params[9] = matrix[9];
2776 params[10] = matrix[10];
2777 params[11] = matrix[11];
2778 params[12] = matrix[12];
2779 params[13] = matrix[13];
2780 params[14] = matrix[14];
2781 params[15] = matrix[15];
2782 }
2783 break;
2784 case GL_TEXTURE_STACK_DEPTH:
2785 params[0] = (GLfloat)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
2786 break;
2787 case GL_UNPACK_ALIGNMENT:
2788 params[0] = (GLfloat)(ctx->Unpack.Alignment);
2789 break;
2790 case GL_UNPACK_LSB_FIRST:
2791 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
2792 break;
2793 case GL_UNPACK_ROW_LENGTH:
2794 params[0] = (GLfloat)(ctx->Unpack.RowLength);
2795 break;
2796 case GL_UNPACK_SKIP_PIXELS:
2797 params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
2798 break;
2799 case GL_UNPACK_SKIP_ROWS:
2800 params[0] = (GLfloat)(ctx->Unpack.SkipRows);
2801 break;
2802 case GL_UNPACK_SWAP_BYTES:
2803 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
2804 break;
2805 case GL_UNPACK_SKIP_IMAGES_EXT:
2806 params[0] = (GLfloat)(ctx->Unpack.SkipImages);
2807 break;
2808 case GL_UNPACK_IMAGE_HEIGHT_EXT:
2809 params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
2810 break;
2811 case GL_UNPACK_CLIENT_STORAGE_APPLE:
2812 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
2813 break;
2814 case GL_VIEWPORT:
2815 params[0] = (GLfloat)(ctx->Viewport.X);
2816 params[1] = (GLfloat)(ctx->Viewport.Y);
2817 params[2] = (GLfloat)(ctx->Viewport.Width);
2818 params[3] = (GLfloat)(ctx->Viewport.Height);
2819 break;
2820 case GL_ZOOM_X:
2821 params[0] = ctx->Pixel.ZoomX;
2822 break;
2823 case GL_ZOOM_Y:
2824 params[0] = ctx->Pixel.ZoomY;
2825 break;
2826 case GL_VERTEX_ARRAY:
2827 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
2828 break;
2829 case GL_VERTEX_ARRAY_SIZE:
2830 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
2831 break;
2832 case GL_VERTEX_ARRAY_TYPE:
2833 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
2834 break;
2835 case GL_VERTEX_ARRAY_STRIDE:
2836 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
2837 break;
2838 case GL_VERTEX_ARRAY_COUNT_EXT:
2839 params[0] = (GLfloat)(0);
2840 break;
2841 case GL_NORMAL_ARRAY:
2842 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
2843 break;
2844 case GL_NORMAL_ARRAY_TYPE:
2845 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
2846 break;
2847 case GL_NORMAL_ARRAY_STRIDE:
2848 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
2849 break;
2850 case GL_NORMAL_ARRAY_COUNT_EXT:
2851 params[0] = (GLfloat)(0);
2852 break;
2853 case GL_COLOR_ARRAY:
2854 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
2855 break;
2856 case GL_COLOR_ARRAY_SIZE:
2857 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
2858 break;
2859 case GL_COLOR_ARRAY_TYPE:
2860 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
2861 break;
2862 case GL_COLOR_ARRAY_STRIDE:
2863 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
2864 break;
2865 case GL_COLOR_ARRAY_COUNT_EXT:
2866 params[0] = (GLfloat)(0);
2867 break;
2868 case GL_INDEX_ARRAY:
2869 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
2870 break;
2871 case GL_INDEX_ARRAY_TYPE:
2872 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
2873 break;
2874 case GL_INDEX_ARRAY_STRIDE:
2875 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
2876 break;
2877 case GL_INDEX_ARRAY_COUNT_EXT:
2878 params[0] = (GLfloat)(0);
2879 break;
2880 case GL_TEXTURE_COORD_ARRAY:
2881 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
2882 break;
2883 case GL_TEXTURE_COORD_ARRAY_SIZE:
2884 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
2885 break;
2886 case GL_TEXTURE_COORD_ARRAY_TYPE:
2887 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
2888 break;
2889 case GL_TEXTURE_COORD_ARRAY_STRIDE:
2890 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
2891 break;
2892 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
2893 params[0] = (GLfloat)(0);
2894 break;
2895 case GL_EDGE_FLAG_ARRAY:
2896 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
2897 break;
2898 case GL_EDGE_FLAG_ARRAY_STRIDE:
2899 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
2900 break;
2901 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
2902 params[0] = (GLfloat)(0);
2903 break;
2904 case GL_MAX_TEXTURE_UNITS_ARB:
2905 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2906 params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
2907 break;
2908 case GL_ACTIVE_TEXTURE_ARB:
2909 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2910 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
2911 break;
2912 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
2913 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2914 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
2915 break;
2916 case GL_TEXTURE_CUBE_MAP_ARB:
2917 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2918 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
2919 break;
2920 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
2921 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2922 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentCubeMap->Name);
2923 break;
2924 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
2925 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2926 params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
2927 break;
2928 case GL_TEXTURE_COMPRESSION_HINT_ARB:
2929 CHECK_EXT1(ARB_texture_compression, "GetFloatv");
2930 params[0] = (GLfloat)(ctx->Hint.TextureCompression);
2931 break;
2932 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
2933 CHECK_EXT1(ARB_texture_compression, "GetFloatv");
2934 params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
2935 break;
2936 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
2937 CHECK_EXT1(ARB_texture_compression, "GetFloatv");
2938 {
2939 GLint formats[100];
2940 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
2941 ASSERT(n <= 100);
2942 for (i = 0; i < n; i++)
2943 params[i] = ENUM_TO_FLOAT(formats[i]);
2944 }
2945 break;
2946 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
2947 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
2948 params[0] = (GLfloat)(ctx->Array.LockFirst);
2949 break;
2950 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
2951 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
2952 params[0] = (GLfloat)(ctx->Array.LockCount);
2953 break;
2954 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
2955 {
2956 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
2957 params[0] = matrix[0];
2958 params[1] = matrix[4];
2959 params[2] = matrix[8];
2960 params[3] = matrix[12];
2961 params[4] = matrix[1];
2962 params[5] = matrix[5];
2963 params[6] = matrix[9];
2964 params[7] = matrix[13];
2965 params[8] = matrix[2];
2966 params[9] = matrix[6];
2967 params[10] = matrix[10];
2968 params[11] = matrix[14];
2969 params[12] = matrix[3];
2970 params[13] = matrix[7];
2971 params[14] = matrix[11];
2972 params[15] = matrix[15];
2973 }
2974 break;
2975 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
2976 {
2977 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
2978 params[0] = matrix[0];
2979 params[1] = matrix[4];
2980 params[2] = matrix[8];
2981 params[3] = matrix[12];
2982 params[4] = matrix[1];
2983 params[5] = matrix[5];
2984 params[6] = matrix[9];
2985 params[7] = matrix[13];
2986 params[8] = matrix[2];
2987 params[9] = matrix[6];
2988 params[10] = matrix[10];
2989 params[11] = matrix[14];
2990 params[12] = matrix[3];
2991 params[13] = matrix[7];
2992 params[14] = matrix[11];
2993 params[15] = matrix[15];
2994 }
2995 break;
2996 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
2997 {
2998 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
2999 params[0] = matrix[0];
3000 params[1] = matrix[4];
3001 params[2] = matrix[8];
3002 params[3] = matrix[12];
3003 params[4] = matrix[1];
3004 params[5] = matrix[5];
3005 params[6] = matrix[9];
3006 params[7] = matrix[13];
3007 params[8] = matrix[2];
3008 params[9] = matrix[6];
3009 params[10] = matrix[10];
3010 params[11] = matrix[14];
3011 params[12] = matrix[3];
3012 params[13] = matrix[7];
3013 params[14] = matrix[11];
3014 params[15] = matrix[15];
3015 }
3016 break;
3017 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
3018 {
3019 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
3020 params[0] = matrix[0];
3021 params[1] = matrix[4];
3022 params[2] = matrix[8];
3023 params[3] = matrix[12];
3024 params[4] = matrix[1];
3025 params[5] = matrix[5];
3026 params[6] = matrix[9];
3027 params[7] = matrix[13];
3028 params[8] = matrix[2];
3029 params[9] = matrix[6];
3030 params[10] = matrix[10];
3031 params[11] = matrix[14];
3032 params[12] = matrix[3];
3033 params[13] = matrix[7];
3034 params[14] = matrix[11];
3035 params[15] = matrix[15];
3036 }
3037 break;
3038 case GL_COLOR_MATRIX_SGI:
3039 {
3040 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
3041 params[0] = matrix[0];
3042 params[1] = matrix[1];
3043 params[2] = matrix[2];
3044 params[3] = matrix[3];
3045 params[4] = matrix[4];
3046 params[5] = matrix[5];
3047 params[6] = matrix[6];
3048 params[7] = matrix[7];
3049 params[8] = matrix[8];
3050 params[9] = matrix[9];
3051 params[10] = matrix[10];
3052 params[11] = matrix[11];
3053 params[12] = matrix[12];
3054 params[13] = matrix[13];
3055 params[14] = matrix[14];
3056 params[15] = matrix[15];
3057 }
3058 break;
3059 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
3060 params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
3061 break;
3062 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
3063 params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
3064 break;
3065 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
3066 params[0] = ctx->Pixel.PostColorMatrixScale[0];
3067 break;
3068 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
3069 params[0] = ctx->Pixel.PostColorMatrixScale[1];
3070 break;
3071 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
3072 params[0] = ctx->Pixel.PostColorMatrixScale[2];
3073 break;
3074 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
3075 params[0] = ctx->Pixel.PostColorMatrixScale[3];
3076 break;
3077 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
3078 params[0] = ctx->Pixel.PostColorMatrixBias[0];
3079 break;
3080 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
3081 params[0] = ctx->Pixel.PostColorMatrixBias[1];
3082 break;
3083 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
3084 params[0] = ctx->Pixel.PostColorMatrixBias[2];
3085 break;
3086 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
3087 params[0] = ctx->Pixel.PostColorMatrixBias[3];
3088 break;
3089 case GL_CONVOLUTION_1D_EXT:
3090 CHECK_EXT1(EXT_convolution, "GetFloatv");
3091 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
3092 break;
3093 case GL_CONVOLUTION_2D_EXT:
3094 CHECK_EXT1(EXT_convolution, "GetFloatv");
3095 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
3096 break;
3097 case GL_SEPARABLE_2D_EXT:
3098 CHECK_EXT1(EXT_convolution, "GetFloatv");
3099 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
3100 break;
3101 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
3102 CHECK_EXT1(EXT_convolution, "GetFloatv");
3103 params[0] = ctx->Pixel.PostConvolutionScale[0];
3104 break;
3105 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
3106 CHECK_EXT1(EXT_convolution, "GetFloatv");
3107 params[0] = ctx->Pixel.PostConvolutionScale[1];
3108 break;
3109 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
3110 CHECK_EXT1(EXT_convolution, "GetFloatv");
3111 params[0] = ctx->Pixel.PostConvolutionScale[2];
3112 break;
3113 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
3114 CHECK_EXT1(EXT_convolution, "GetFloatv");
3115 params[0] = ctx->Pixel.PostConvolutionScale[3];
3116 break;
3117 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
3118 CHECK_EXT1(EXT_convolution, "GetFloatv");
3119 params[0] = ctx->Pixel.PostConvolutionBias[0];
3120 break;
3121 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
3122 CHECK_EXT1(EXT_convolution, "GetFloatv");
3123 params[0] = ctx->Pixel.PostConvolutionBias[1];
3124 break;
3125 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
3126 CHECK_EXT1(EXT_convolution, "GetFloatv");
3127 params[0] = ctx->Pixel.PostConvolutionBias[2];
3128 break;
3129 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
3130 CHECK_EXT1(EXT_convolution, "GetFloatv");
3131 params[0] = ctx->Pixel.PostConvolutionBias[3];
3132 break;
3133 case GL_HISTOGRAM:
3134 CHECK_EXT1(EXT_histogram, "GetFloatv");
3135 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
3136 break;
3137 case GL_MINMAX:
3138 CHECK_EXT1(EXT_histogram, "GetFloatv");
3139 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
3140 break;
3141 case GL_COLOR_TABLE_SGI:
3142 CHECK_EXT1(SGI_color_table, "GetFloatv");
3143 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
3144 break;
3145 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
3146 CHECK_EXT1(SGI_color_table, "GetFloatv");
3147 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
3148 break;
3149 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
3150 CHECK_EXT1(SGI_color_table, "GetFloatv");
3151 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
3152 break;
3153 case GL_TEXTURE_COLOR_TABLE_SGI:
3154 CHECK_EXT1(SGI_texture_color_table, "GetFloatv");
3155 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
3156 break;
3157 case GL_COLOR_SUM_EXT:
3158 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv");
3159 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
3160 break;
3161 case GL_CURRENT_SECONDARY_COLOR_EXT:
3162 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3163 {
3164 FLUSH_CURRENT(ctx, 0);
3165 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
3166 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
3167 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
3168 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
3169 }
3170 break;
3171 case GL_SECONDARY_COLOR_ARRAY_EXT:
3172 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3173 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
3174 break;
3175 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
3176 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3177 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
3178 break;
3179 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
3180 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3181 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
3182 break;
3183 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
3184 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3185 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
3186 break;
3187 case GL_CURRENT_FOG_COORDINATE_EXT:
3188 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3189 {
3190 FLUSH_CURRENT(ctx, 0);
3191 params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
3192 }
3193 break;
3194 case GL_FOG_COORDINATE_ARRAY_EXT:
3195 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3196 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
3197 break;
3198 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
3199 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3200 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
3201 break;
3202 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
3203 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3204 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
3205 break;
3206 case GL_FOG_COORDINATE_SOURCE_EXT:
3207 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3208 params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
3209 break;
3210 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
3211 CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv");
3212 params[0] = ctx->Const.MaxTextureLodBias;
3213 break;
3214 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
3215 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv");
3216 params[0] = ctx->Const.MaxTextureMaxAnisotropy;
3217 break;
3218 case GL_MULTISAMPLE_ARB:
3219 CHECK_EXT1(ARB_multisample, "GetFloatv");
3220 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
3221 break;
3222 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
3223 CHECK_EXT1(ARB_multisample, "GetFloatv");
3224 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
3225 break;
3226 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
3227 CHECK_EXT1(ARB_multisample, "GetFloatv");
3228 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
3229 break;
3230 case GL_SAMPLE_COVERAGE_ARB:
3231 CHECK_EXT1(ARB_multisample, "GetFloatv");
3232 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
3233 break;
3234 case GL_SAMPLE_COVERAGE_VALUE_ARB:
3235 CHECK_EXT1(ARB_multisample, "GetFloatv");
3236 params[0] = ctx->Multisample.SampleCoverageValue;
3237 break;
3238 case GL_SAMPLE_COVERAGE_INVERT_ARB:
3239 CHECK_EXT1(ARB_multisample, "GetFloatv");
3240 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
3241 break;
3242 case GL_SAMPLE_BUFFERS_ARB:
3243 CHECK_EXT1(ARB_multisample, "GetFloatv");
3244 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
3245 break;
3246 case GL_SAMPLES_ARB:
3247 CHECK_EXT1(ARB_multisample, "GetFloatv");
3248 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
3249 break;
3250 case GL_RASTER_POSITION_UNCLIPPED_IBM:
3251 CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv");
3252 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
3253 break;
3254 case GL_POINT_SPRITE_NV:
3255 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
3256 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
3257 break;
3258 case GL_POINT_SPRITE_R_MODE_NV:
3259 CHECK_EXT1(NV_point_sprite, "GetFloatv");
3260 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
3261 break;
3262 case GL_POINT_SPRITE_COORD_ORIGIN:
3263 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
3264 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
3265 break;
3266 case GL_GENERATE_MIPMAP_HINT_SGIS:
3267 CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv");
3268 params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
3269 break;
3270 case GL_VERTEX_PROGRAM_BINDING_NV:
3271 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3272 params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
3273 break;
3274 case GL_VERTEX_ATTRIB_ARRAY0_NV:
3275 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3276 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
3277 break;
3278 case GL_VERTEX_ATTRIB_ARRAY1_NV:
3279 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3280 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
3281 break;
3282 case GL_VERTEX_ATTRIB_ARRAY2_NV:
3283 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3284 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
3285 break;
3286 case GL_VERTEX_ATTRIB_ARRAY3_NV:
3287 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3288 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
3289 break;
3290 case GL_VERTEX_ATTRIB_ARRAY4_NV:
3291 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3292 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
3293 break;
3294 case GL_VERTEX_ATTRIB_ARRAY5_NV:
3295 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3296 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
3297 break;
3298 case GL_VERTEX_ATTRIB_ARRAY6_NV:
3299 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3300 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
3301 break;
3302 case GL_VERTEX_ATTRIB_ARRAY7_NV:
3303 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3304 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
3305 break;
3306 case GL_VERTEX_ATTRIB_ARRAY8_NV:
3307 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3308 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
3309 break;
3310 case GL_VERTEX_ATTRIB_ARRAY9_NV:
3311 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3312 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
3313 break;
3314 case GL_VERTEX_ATTRIB_ARRAY10_NV:
3315 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3316 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
3317 break;
3318 case GL_VERTEX_ATTRIB_ARRAY11_NV:
3319 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3320 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
3321 break;
3322 case GL_VERTEX_ATTRIB_ARRAY12_NV:
3323 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3324 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
3325 break;
3326 case GL_VERTEX_ATTRIB_ARRAY13_NV:
3327 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3328 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
3329 break;
3330 case GL_VERTEX_ATTRIB_ARRAY14_NV:
3331 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3332 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
3333 break;
3334 case GL_VERTEX_ATTRIB_ARRAY15_NV:
3335 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3336 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
3337 break;
3338 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
3339 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3340 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
3341 break;
3342 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
3343 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3344 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
3345 break;
3346 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
3347 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3348 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
3349 break;
3350 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
3351 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3352 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
3353 break;
3354 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
3355 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3356 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
3357 break;
3358 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
3359 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3360 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
3361 break;
3362 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
3363 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3364 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
3365 break;
3366 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
3367 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3368 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
3369 break;
3370 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
3371 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3372 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
3373 break;
3374 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
3375 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3376 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
3377 break;
3378 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
3379 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3380 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
3381 break;
3382 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
3383 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3384 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
3385 break;
3386 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
3387 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3388 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
3389 break;
3390 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
3391 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3392 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
3393 break;
3394 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
3395 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3396 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
3397 break;
3398 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
3399 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3400 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
3401 break;
3402 case GL_FRAGMENT_PROGRAM_NV:
3403 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3404 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3405 break;
3406 case GL_FRAGMENT_PROGRAM_BINDING_NV:
3407 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3408 params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
3409 break;
3410 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
3411 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3412 params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
3413 break;
3414 case GL_TEXTURE_RECTANGLE_NV:
3415 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3416 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
3417 break;
3418 case GL_TEXTURE_BINDING_RECTANGLE_NV:
3419 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3420 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name);
3421 break;
3422 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
3423 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3424 params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
3425 break;
3426 case GL_STENCIL_TEST_TWO_SIDE_EXT:
3427 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
3428 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
3429 break;
3430 case GL_ACTIVE_STENCIL_FACE_EXT:
3431 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
3432 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
3433 break;
3434 case GL_MAX_SHININESS_NV:
3435 CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
3436 params[0] = ctx->Const.MaxShininess;
3437 break;
3438 case GL_MAX_SPOT_EXPONENT_NV:
3439 CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
3440 params[0] = ctx->Const.MaxSpotExponent;
3441 break;
3442 case GL_ARRAY_BUFFER_BINDING_ARB:
3443 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3444 params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
3445 break;
3446 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
3447 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3448 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
3449 break;
3450 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
3451 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3452 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
3453 break;
3454 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
3455 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3456 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
3457 break;
3458 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
3459 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3460 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
3461 break;
3462 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
3463 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3464 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
3465 break;
3466 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
3467 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3468 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
3469 break;
3470 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
3471 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3472 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
3473 break;
3474 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
3475 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3476 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
3477 break;
3478 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
3479 CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
3480 params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
3481 break;
3482 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
3483 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
3484 params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
3485 break;
3486 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
3487 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
3488 params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
3489 break;
3490 case GL_VERTEX_PROGRAM_ARB:
3491 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3492 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
3493 break;
3494 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
3495 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3496 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
3497 break;
3498 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
3499 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3500 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
3501 break;
3502 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
3503 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3504 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
3505 break;
3506 case GL_MAX_PROGRAM_MATRICES_ARB:
3507 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3508 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
3509 break;
3510 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
3511 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3512 params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
3513 break;
3514 case GL_CURRENT_MATRIX_ARB:
3515 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv");
3516 {
3517 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3518 params[0] = matrix[0];
3519 params[1] = matrix[1];
3520 params[2] = matrix[2];
3521 params[3] = matrix[3];
3522 params[4] = matrix[4];
3523 params[5] = matrix[5];
3524 params[6] = matrix[6];
3525 params[7] = matrix[7];
3526 params[8] = matrix[8];
3527 params[9] = matrix[9];
3528 params[10] = matrix[10];
3529 params[11] = matrix[11];
3530 params[12] = matrix[12];
3531 params[13] = matrix[13];
3532 params[14] = matrix[14];
3533 params[15] = matrix[15];
3534 }
3535 break;
3536 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
3537 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv");
3538 {
3539 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3540 params[0] = matrix[0];
3541 params[1] = matrix[4];
3542 params[2] = matrix[8];
3543 params[3] = matrix[12];
3544 params[4] = matrix[1];
3545 params[5] = matrix[5];
3546 params[6] = matrix[9];
3547 params[7] = matrix[13];
3548 params[8] = matrix[2];
3549 params[9] = matrix[6];
3550 params[10] = matrix[10];
3551 params[11] = matrix[14];
3552 params[12] = matrix[3];
3553 params[13] = matrix[7];
3554 params[14] = matrix[11];
3555 params[15] = matrix[15];
3556 }
3557 break;
3558 case GL_MAX_VERTEX_ATTRIBS_ARB:
3559 CHECK_EXT1(ARB_vertex_program, "GetFloatv");
3560 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
3561 break;
3562 case GL_PROGRAM_ERROR_POSITION_ARB:
3563 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv");
3564 params[0] = (GLfloat)(ctx->Program.ErrorPos);
3565 break;
3566 case GL_FRAGMENT_PROGRAM_ARB:
3567 CHECK_EXT1(ARB_fragment_program, "GetFloatv");
3568 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3569 break;
3570 case GL_MAX_TEXTURE_COORDS_ARB:
3571 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
3572 params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
3573 break;
3574 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
3575 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
3576 params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
3577 break;
3578 case GL_DEPTH_BOUNDS_TEST_EXT:
3579 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
3580 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
3581 break;
3582 case GL_DEPTH_BOUNDS_EXT:
3583 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
3584 params[0] = ctx->Depth.BoundsMin;
3585 params[1] = ctx->Depth.BoundsMax;
3586 break;
3587 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
3588 CHECK_EXT1(MESA_program_debug, "GetFloatv");
3589 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.CallbackEnabled);
3590 break;
3591 case GL_VERTEX_PROGRAM_CALLBACK_MESA:
3592 CHECK_EXT1(MESA_program_debug, "GetFloatv");
3593 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.CallbackEnabled);
3594 break;
3595 case GL_FRAGMENT_PROGRAM_POSITION_MESA:
3596 CHECK_EXT1(MESA_program_debug, "GetFloatv");
3597 params[0] = (GLfloat)(ctx->FragmentProgram.CurrentPosition);
3598 break;
3599 case GL_VERTEX_PROGRAM_POSITION_MESA:
3600 CHECK_EXT1(MESA_program_debug, "GetFloatv");
3601 params[0] = (GLfloat)(ctx->VertexProgram.CurrentPosition);
3602 break;
3603 case GL_MAX_DRAW_BUFFERS_ARB:
3604 CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
3605 params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
3606 break;
3607 case GL_DRAW_BUFFER0_ARB:
3608 CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
3609 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
3610 break;
3611 case GL_DRAW_BUFFER1_ARB:
3612 CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
3613 {
3614 GLenum buffer;
3615 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3616 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3617 return;
3618 }
3619 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
3620 params[0] = ENUM_TO_FLOAT(buffer);
3621 }
3622 break;
3623 case GL_DRAW_BUFFER2_ARB:
3624 CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
3625 {
3626 GLenum buffer;
3627 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3628 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3629 return;
3630 }
3631 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
3632 params[0] = ENUM_TO_FLOAT(buffer);
3633 }
3634 break;
3635 case GL_DRAW_BUFFER3_ARB:
3636 CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
3637 {
3638 GLenum buffer;
3639 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3640 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3641 return;
3642 }
3643 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
3644 params[0] = ENUM_TO_FLOAT(buffer);
3645 }
3646 break;
3647 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
3648 CHECK_EXT1(OES_read_format, "GetFloatv");
3649 params[0] = (GLfloat)(ctx->Const.ColorReadType);
3650 break;
3651 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
3652 CHECK_EXT1(OES_read_format, "GetFloatv");
3653 params[0] = (GLfloat)(ctx->Const.ColorReadFormat);
3654 break;
3655 case GL_NUM_FRAGMENT_REGISTERS_ATI:
3656 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3657 params[0] = (GLfloat)(6);
3658 break;
3659 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
3660 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3661 params[0] = (GLfloat)(8);
3662 break;
3663 case GL_NUM_PASSES_ATI:
3664 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3665 params[0] = (GLfloat)(2);
3666 break;
3667 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
3668 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3669 params[0] = (GLfloat)(8);
3670 break;
3671 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
3672 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3673 params[0] = (GLfloat)(16);
3674 break;
3675 case GL_COLOR_ALPHA_PAIRING_ATI:
3676 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3677 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
3678 break;
3679 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
3680 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3681 params[0] = (GLfloat)(3);
3682 break;
3683 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
3684 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3685 params[0] = (GLfloat)(3);
3686 break;
3687 case GL_STENCIL_BACK_FUNC:
3688 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
3689 break;
3690 case GL_STENCIL_BACK_VALUE_MASK:
3691 params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
3692 break;
3693 case GL_STENCIL_BACK_WRITEMASK:
3694 params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]);
3695 break;
3696 case GL_STENCIL_BACK_REF:
3697 params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
3698 break;
3699 case GL_STENCIL_BACK_FAIL:
3700 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
3701 break;
3702 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
3703 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
3704 break;
3705 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
3706 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
3707 break;
3708 case GL_FRAMEBUFFER_BINDING_EXT:
3709 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3710 params[0] = (GLfloat)(ctx->DrawBuffer->Name);
3711 break;
3712 case GL_RENDERBUFFER_BINDING_EXT:
3713 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3714 params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
3715 break;
3716 case GL_MAX_COLOR_ATTACHMENTS_EXT:
3717 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3718 params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
3719 break;
3720 case GL_MAX_RENDERBUFFER_SIZE_EXT:
3721 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3722 params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
3723 break;
3724 case GL_READ_FRAMEBUFFER_BINDING_EXT:
3725 CHECK_EXT1(EXT_framebuffer_blit, "GetFloatv");
3726 params[0] = (GLfloat)(ctx->ReadBuffer->Name);
3727 break;
3728 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
3729 CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
3730 params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents);
3731 break;
3732 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
3733 CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
3734 params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
3735 break;
3736 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
3737 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3738 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents);
3739 break;
3740 case GL_MAX_VARYING_FLOATS_ARB:
3741 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3742 params[0] = (GLfloat)(ctx->Const.MaxVarying * 4);
3743 break;
3744 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
3745 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3746 params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits);
3747 break;
3748 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
3749 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3750 params[0] = (GLfloat)(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
3751 break;
3752 case GL_CURRENT_PROGRAM:
3753 CHECK_EXT1(ARB_shader_objects, "GetFloatv");
3754 params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
3755 break;
3756 default:
3757 _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
3758 }
3759 }
3760
3761 void GLAPIENTRY
3762 _mesa_GetIntegerv( GLenum pname, GLint *params )
3763 {
3764 GET_CURRENT_CONTEXT(ctx);
3765 ASSERT_OUTSIDE_BEGIN_END(ctx);
3766
3767 if (!params)
3768 return;
3769
3770 if (ctx->NewState)
3771 _mesa_update_state(ctx);
3772
3773 if (ctx->Driver.GetIntegerv &&
3774 ctx->Driver.GetIntegerv(ctx, pname, params))
3775 return;
3776
3777 switch (pname) {
3778 case GL_ACCUM_RED_BITS:
3779 params[0] = ctx->DrawBuffer->Visual.accumRedBits;
3780 break;
3781 case GL_ACCUM_GREEN_BITS:
3782 params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
3783 break;
3784 case GL_ACCUM_BLUE_BITS:
3785 params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
3786 break;
3787 case GL_ACCUM_ALPHA_BITS:
3788 params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
3789 break;
3790 case GL_ACCUM_CLEAR_VALUE:
3791 params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
3792 params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
3793 params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
3794 params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
3795 break;
3796 case GL_ALPHA_BIAS:
3797 params[0] = IROUND(ctx->Pixel.AlphaBias);
3798 break;
3799 case GL_ALPHA_BITS:
3800 params[0] = ctx->DrawBuffer->Visual.alphaBits;
3801 break;
3802 case GL_ALPHA_SCALE:
3803 params[0] = IROUND(ctx->Pixel.AlphaScale);
3804 break;
3805 case GL_ALPHA_TEST:
3806 params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
3807 break;
3808 case GL_ALPHA_TEST_FUNC:
3809 params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
3810 break;
3811 case GL_ALPHA_TEST_REF:
3812 params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
3813 break;
3814 case GL_ATTRIB_STACK_DEPTH:
3815 params[0] = ctx->AttribStackDepth;
3816 break;
3817 case GL_AUTO_NORMAL:
3818 params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
3819 break;
3820 case GL_AUX_BUFFERS:
3821 params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
3822 break;
3823 case GL_BLEND:
3824 params[0] = BOOLEAN_TO_INT(ctx->Color.BlendEnabled);
3825 break;
3826 case GL_BLEND_DST:
3827 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3828 break;
3829 case GL_BLEND_SRC:
3830 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3831 break;
3832 case GL_BLEND_SRC_RGB_EXT:
3833 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3834 break;
3835 case GL_BLEND_DST_RGB_EXT:
3836 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3837 break;
3838 case GL_BLEND_SRC_ALPHA_EXT:
3839 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
3840 break;
3841 case GL_BLEND_DST_ALPHA_EXT:
3842 params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
3843 break;
3844 case GL_BLEND_EQUATION:
3845 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
3846 break;
3847 case GL_BLEND_EQUATION_ALPHA_EXT:
3848 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
3849 break;
3850 case GL_BLEND_COLOR_EXT:
3851 params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
3852 params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
3853 params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
3854 params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
3855 break;
3856 case GL_BLUE_BIAS:
3857 params[0] = IROUND(ctx->Pixel.BlueBias);
3858 break;
3859 case GL_BLUE_BITS:
3860 params[0] = ctx->DrawBuffer->Visual.blueBits;
3861 break;
3862 case GL_BLUE_SCALE:
3863 params[0] = IROUND(ctx->Pixel.BlueScale);
3864 break;
3865 case GL_CLIENT_ATTRIB_STACK_DEPTH:
3866 params[0] = ctx->ClientAttribStackDepth;
3867 break;
3868 case GL_CLIP_PLANE0:
3869 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
3870 break;
3871 case GL_CLIP_PLANE1:
3872 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
3873 break;
3874 case GL_CLIP_PLANE2:
3875 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
3876 break;
3877 case GL_CLIP_PLANE3:
3878 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
3879 break;
3880 case GL_CLIP_PLANE4:
3881 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
3882 break;
3883 case GL_CLIP_PLANE5:
3884 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
3885 break;
3886 case GL_COLOR_CLEAR_VALUE:
3887 params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
3888 params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
3889 params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
3890 params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
3891 break;
3892 case GL_COLOR_MATERIAL:
3893 params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
3894 break;
3895 case GL_COLOR_MATERIAL_FACE:
3896 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
3897 break;
3898 case GL_COLOR_MATERIAL_PARAMETER:
3899 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
3900 break;
3901 case GL_COLOR_WRITEMASK:
3902 params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0;
3903 params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0;
3904 params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0;
3905 params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0;
3906 break;
3907 case GL_CULL_FACE:
3908 params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
3909 break;
3910 case GL_CULL_FACE_MODE:
3911 params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
3912 break;
3913 case GL_CURRENT_COLOR:
3914 {
3915 FLUSH_CURRENT(ctx, 0);
3916 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
3917 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
3918 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
3919 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
3920 }
3921 break;
3922 case GL_CURRENT_INDEX:
3923 {
3924 FLUSH_CURRENT(ctx, 0);
3925 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
3926 }
3927 break;
3928 case GL_CURRENT_NORMAL:
3929 {
3930 FLUSH_CURRENT(ctx, 0);
3931 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
3932 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
3933 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
3934 }
3935 break;
3936 case GL_CURRENT_RASTER_COLOR:
3937 params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
3938 params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
3939 params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
3940 params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
3941 break;
3942 case GL_CURRENT_RASTER_DISTANCE:
3943 params[0] = IROUND(ctx->Current.RasterDistance);
3944 break;
3945 case GL_CURRENT_RASTER_INDEX:
3946 params[0] = IROUND(ctx->Current.RasterIndex);
3947 break;
3948 case GL_CURRENT_RASTER_POSITION:
3949 params[0] = IROUND(ctx->Current.RasterPos[0]);
3950 params[1] = IROUND(ctx->Current.RasterPos[1]);
3951 params[2] = IROUND(ctx->Current.RasterPos[2]);
3952 params[3] = IROUND(ctx->Current.RasterPos[3]);
3953 break;
3954 case GL_CURRENT_RASTER_SECONDARY_COLOR:
3955 params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
3956 params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
3957 params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
3958 params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
3959 break;
3960 case GL_CURRENT_RASTER_TEXTURE_COORDS:
3961 {
3962 const GLuint texUnit = ctx->Texture.CurrentUnit;
3963 params[0] = IROUND(ctx->Current.RasterTexCoords[texUnit][0]);
3964 params[1] = IROUND(ctx->Current.RasterTexCoords[texUnit][1]);
3965 params[2] = IROUND(ctx->Current.RasterTexCoords[texUnit][2]);
3966 params[3] = IROUND(ctx->Current.RasterTexCoords[texUnit][3]);
3967 }
3968 break;
3969 case GL_CURRENT_RASTER_POSITION_VALID:
3970 params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
3971 break;
3972 case GL_CURRENT_TEXTURE_COORDS:
3973 {
3974 const GLuint texUnit = ctx->Texture.CurrentUnit;
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.CurrentListNum;
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].Current1D->Name;
4584 break;
4585 case GL_TEXTURE_BINDING_2D:
4586 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current2D->Name;
4587 break;
4588 case GL_TEXTURE_BINDING_3D:
4589 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Current3D->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].Current1DArray->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].Current2DArray->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].CurrentCubeMap->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 CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
4778 params[0] = ctx->Hint.TextureCompression;
4779 break;
4780 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
4781 CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
4782 params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
4783 break;
4784 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
4785 CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
4786 {
4787 GLint formats[100];
4788 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
4789 ASSERT(n <= 100);
4790 for (i = 0; i < n; i++)
4791 params[i] = ENUM_TO_INT(formats[i]);
4792 }
4793 break;
4794 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
4795 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
4796 params[0] = ctx->Array.LockFirst;
4797 break;
4798 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
4799 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
4800 params[0] = ctx->Array.LockCount;
4801 break;
4802 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
4803 {
4804 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
4805 params[0] = IROUND(matrix[0]);
4806 params[1] = IROUND(matrix[4]);
4807 params[2] = IROUND(matrix[8]);
4808 params[3] = IROUND(matrix[12]);
4809 params[4] = IROUND(matrix[1]);
4810 params[5] = IROUND(matrix[5]);
4811 params[6] = IROUND(matrix[9]);
4812 params[7] = IROUND(matrix[13]);
4813 params[8] = IROUND(matrix[2]);
4814 params[9] = IROUND(matrix[6]);
4815 params[10] = IROUND(matrix[10]);
4816 params[11] = IROUND(matrix[14]);
4817 params[12] = IROUND(matrix[3]);
4818 params[13] = IROUND(matrix[7]);
4819 params[14] = IROUND(matrix[11]);
4820 params[15] = IROUND(matrix[15]);
4821 }
4822 break;
4823 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
4824 {
4825 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4826 params[0] = IROUND(matrix[0]);
4827 params[1] = IROUND(matrix[4]);
4828 params[2] = IROUND(matrix[8]);
4829 params[3] = IROUND(matrix[12]);
4830 params[4] = IROUND(matrix[1]);
4831 params[5] = IROUND(matrix[5]);
4832 params[6] = IROUND(matrix[9]);
4833 params[7] = IROUND(matrix[13]);
4834 params[8] = IROUND(matrix[2]);
4835 params[9] = IROUND(matrix[6]);
4836 params[10] = IROUND(matrix[10]);
4837 params[11] = IROUND(matrix[14]);
4838 params[12] = IROUND(matrix[3]);
4839 params[13] = IROUND(matrix[7]);
4840 params[14] = IROUND(matrix[11]);
4841 params[15] = IROUND(matrix[15]);
4842 }
4843 break;
4844 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
4845 {
4846 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
4847 params[0] = IROUND(matrix[0]);
4848 params[1] = IROUND(matrix[4]);
4849 params[2] = IROUND(matrix[8]);
4850 params[3] = IROUND(matrix[12]);
4851 params[4] = IROUND(matrix[1]);
4852 params[5] = IROUND(matrix[5]);
4853 params[6] = IROUND(matrix[9]);
4854 params[7] = IROUND(matrix[13]);
4855 params[8] = IROUND(matrix[2]);
4856 params[9] = IROUND(matrix[6]);
4857 params[10] = IROUND(matrix[10]);
4858 params[11] = IROUND(matrix[14]);
4859 params[12] = IROUND(matrix[3]);
4860 params[13] = IROUND(matrix[7]);
4861 params[14] = IROUND(matrix[11]);
4862 params[15] = IROUND(matrix[15]);
4863 }
4864 break;
4865 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
4866 {
4867 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
4868 params[0] = IROUND(matrix[0]);
4869 params[1] = IROUND(matrix[4]);
4870 params[2] = IROUND(matrix[8]);
4871 params[3] = IROUND(matrix[12]);
4872 params[4] = IROUND(matrix[1]);
4873 params[5] = IROUND(matrix[5]);
4874 params[6] = IROUND(matrix[9]);
4875 params[7] = IROUND(matrix[13]);
4876 params[8] = IROUND(matrix[2]);
4877 params[9] = IROUND(matrix[6]);
4878 params[10] = IROUND(matrix[10]);
4879 params[11] = IROUND(matrix[14]);
4880 params[12] = IROUND(matrix[3]);
4881 params[13] = IROUND(matrix[7]);
4882 params[14] = IROUND(matrix[11]);
4883 params[15] = IROUND(matrix[15]);
4884 }
4885 break;
4886 case GL_COLOR_MATRIX_SGI:
4887 {
4888 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
4889 params[0] = IROUND(matrix[0]);
4890 params[1] = IROUND(matrix[1]);
4891 params[2] = IROUND(matrix[2]);
4892 params[3] = IROUND(matrix[3]);
4893 params[4] = IROUND(matrix[4]);
4894 params[5] = IROUND(matrix[5]);
4895 params[6] = IROUND(matrix[6]);
4896 params[7] = IROUND(matrix[7]);
4897 params[8] = IROUND(matrix[8]);
4898 params[9] = IROUND(matrix[9]);
4899 params[10] = IROUND(matrix[10]);
4900 params[11] = IROUND(matrix[11]);
4901 params[12] = IROUND(matrix[12]);
4902 params[13] = IROUND(matrix[13]);
4903 params[14] = IROUND(matrix[14]);
4904 params[15] = IROUND(matrix[15]);
4905 }
4906 break;
4907 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
4908 params[0] = ctx->ColorMatrixStack.Depth + 1;
4909 break;
4910 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
4911 params[0] = MAX_COLOR_STACK_DEPTH;
4912 break;
4913 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
4914 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
4915 break;
4916 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
4917 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
4918 break;
4919 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
4920 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
4921 break;
4922 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
4923 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
4924 break;
4925 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
4926 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
4927 break;
4928 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
4929 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
4930 break;
4931 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
4932 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
4933 break;
4934 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
4935 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
4936 break;
4937 case GL_CONVOLUTION_1D_EXT:
4938 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4939 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
4940 break;
4941 case GL_CONVOLUTION_2D_EXT:
4942 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4943 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
4944 break;
4945 case GL_SEPARABLE_2D_EXT:
4946 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4947 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
4948 break;
4949 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
4950 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4951 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
4952 break;
4953 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
4954 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4955 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
4956 break;
4957 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
4958 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4959 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
4960 break;
4961 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
4962 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4963 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
4964 break;
4965 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
4966 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4967 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
4968 break;
4969 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
4970 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4971 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
4972 break;
4973 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
4974 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4975 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
4976 break;
4977 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
4978 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4979 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
4980 break;
4981 case GL_HISTOGRAM:
4982 CHECK_EXT1(EXT_histogram, "GetIntegerv");
4983 params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
4984 break;
4985 case GL_MINMAX:
4986 CHECK_EXT1(EXT_histogram, "GetIntegerv");
4987 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
4988 break;
4989 case GL_COLOR_TABLE_SGI:
4990 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4991 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
4992 break;
4993 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
4994 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4995 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
4996 break;
4997 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
4998 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4999 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
5000 break;
5001 case GL_TEXTURE_COLOR_TABLE_SGI:
5002 CHECK_EXT1(SGI_texture_color_table, "GetIntegerv");
5003 params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
5004 break;
5005 case GL_COLOR_SUM_EXT:
5006 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv");
5007 params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
5008 break;
5009 case GL_CURRENT_SECONDARY_COLOR_EXT:
5010 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5011 {
5012 FLUSH_CURRENT(ctx, 0);
5013 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
5014 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
5015 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
5016 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
5017 }
5018 break;
5019 case GL_SECONDARY_COLOR_ARRAY_EXT:
5020 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5021 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
5022 break;
5023 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
5024 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5025 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
5026 break;
5027 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
5028 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5029 params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
5030 break;
5031 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
5032 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5033 params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
5034 break;
5035 case GL_CURRENT_FOG_COORDINATE_EXT:
5036 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5037 {
5038 FLUSH_CURRENT(ctx, 0);
5039 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
5040 }
5041 break;
5042 case GL_FOG_COORDINATE_ARRAY_EXT:
5043 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5044 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
5045 break;
5046 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
5047 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5048 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
5049 break;
5050 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
5051 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5052 params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
5053 break;
5054 case GL_FOG_COORDINATE_SOURCE_EXT:
5055 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5056 params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
5057 break;
5058 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
5059 CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv");
5060 params[0] = IROUND(ctx->Const.MaxTextureLodBias);
5061 break;
5062 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
5063 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv");
5064 params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
5065 break;
5066 case GL_MULTISAMPLE_ARB:
5067 CHECK_EXT1(ARB_multisample, "GetIntegerv");
5068 params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
5069 break;
5070 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
5071 CHECK_EXT1(ARB_multisample, "GetIntegerv");
5072 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
5073 break;
5074 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
5075 CHECK_EXT1(ARB_multisample, "GetIntegerv");
5076 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
5077 break;
5078 case GL_SAMPLE_COVERAGE_ARB:
5079 CHECK_EXT1(ARB_multisample, "GetIntegerv");
5080 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
5081 break;
5082 case GL_SAMPLE_COVERAGE_VALUE_ARB:
5083 CHECK_EXT1(ARB_multisample, "GetIntegerv");
5084 params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
5085 break;
5086 case GL_SAMPLE_COVERAGE_INVERT_ARB:
5087 CHECK_EXT1(ARB_multisample, "GetIntegerv");
5088 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
5089 break;
5090 case GL_SAMPLE_BUFFERS_ARB:
5091 CHECK_EXT1(ARB_multisample, "GetIntegerv");
5092 params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
5093 break;
5094 case GL_SAMPLES_ARB:
5095 CHECK_EXT1(ARB_multisample, "GetIntegerv");
5096 params[0] = ctx->DrawBuffer->Visual.samples;
5097 break;
5098 case GL_RASTER_POSITION_UNCLIPPED_IBM:
5099 CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv");
5100 params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
5101 break;
5102 case GL_POINT_SPRITE_NV:
5103 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
5104 params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
5105 break;
5106 case GL_POINT_SPRITE_R_MODE_NV:
5107 CHECK_EXT1(NV_point_sprite, "GetIntegerv");
5108 params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
5109 break;
5110 case GL_POINT_SPRITE_COORD_ORIGIN:
5111 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
5112 params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
5113 break;
5114 case GL_GENERATE_MIPMAP_HINT_SGIS:
5115 CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv");
5116 params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
5117 break;
5118 case GL_VERTEX_PROGRAM_BINDING_NV:
5119 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5120 params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
5121 break;
5122 case GL_VERTEX_ATTRIB_ARRAY0_NV:
5123 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5124 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
5125 break;
5126 case GL_VERTEX_ATTRIB_ARRAY1_NV:
5127 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5128 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
5129 break;
5130 case GL_VERTEX_ATTRIB_ARRAY2_NV:
5131 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5132 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
5133 break;
5134 case GL_VERTEX_ATTRIB_ARRAY3_NV:
5135 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5136 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
5137 break;
5138 case GL_VERTEX_ATTRIB_ARRAY4_NV:
5139 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5140 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
5141 break;
5142 case GL_VERTEX_ATTRIB_ARRAY5_NV:
5143 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5144 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
5145 break;
5146 case GL_VERTEX_ATTRIB_ARRAY6_NV:
5147 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5148 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
5149 break;
5150 case GL_VERTEX_ATTRIB_ARRAY7_NV:
5151 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5152 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
5153 break;
5154 case GL_VERTEX_ATTRIB_ARRAY8_NV:
5155 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5156 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
5157 break;
5158 case GL_VERTEX_ATTRIB_ARRAY9_NV:
5159 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5160 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
5161 break;
5162 case GL_VERTEX_ATTRIB_ARRAY10_NV:
5163 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5164 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
5165 break;
5166 case GL_VERTEX_ATTRIB_ARRAY11_NV:
5167 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5168 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
5169 break;
5170 case GL_VERTEX_ATTRIB_ARRAY12_NV:
5171 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5172 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
5173 break;
5174 case GL_VERTEX_ATTRIB_ARRAY13_NV:
5175 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5176 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
5177 break;
5178 case GL_VERTEX_ATTRIB_ARRAY14_NV:
5179 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5180 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
5181 break;
5182 case GL_VERTEX_ATTRIB_ARRAY15_NV:
5183 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5184 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
5185 break;
5186 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
5187 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5188 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
5189 break;
5190 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
5191 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5192 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
5193 break;
5194 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
5195 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5196 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
5197 break;
5198 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
5199 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5200 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
5201 break;
5202 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
5203 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5204 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
5205 break;
5206 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
5207 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5208 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
5209 break;
5210 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
5211 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5212 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
5213 break;
5214 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
5215 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5216 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
5217 break;
5218 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
5219 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5220 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
5221 break;
5222 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
5223 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5224 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
5225 break;
5226 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
5227 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5228 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
5229 break;
5230 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
5231 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5232 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
5233 break;
5234 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
5235 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5236 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
5237 break;
5238 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
5239 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5240 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
5241 break;
5242 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
5243 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5244 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
5245 break;
5246 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
5247 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5248 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
5249 break;
5250 case GL_FRAGMENT_PROGRAM_NV:
5251 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5252 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5253 break;
5254 case GL_FRAGMENT_PROGRAM_BINDING_NV:
5255 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5256 params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
5257 break;
5258 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
5259 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5260 params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
5261 break;
5262 case GL_TEXTURE_RECTANGLE_NV:
5263 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5264 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
5265 break;
5266 case GL_TEXTURE_BINDING_RECTANGLE_NV:
5267 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5268 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentRect->Name;
5269 break;
5270 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
5271 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5272 params[0] = ctx->Const.MaxTextureRectSize;
5273 break;
5274 case GL_STENCIL_TEST_TWO_SIDE_EXT:
5275 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
5276 params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
5277 break;
5278 case GL_ACTIVE_STENCIL_FACE_EXT:
5279 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
5280 params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
5281 break;
5282 case GL_MAX_SHININESS_NV:
5283 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
5284 params[0] = IROUND(ctx->Const.MaxShininess);
5285 break;
5286 case GL_MAX_SPOT_EXPONENT_NV:
5287 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
5288 params[0] = IROUND(ctx->Const.MaxSpotExponent);
5289 break;
5290 case GL_ARRAY_BUFFER_BINDING_ARB:
5291 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5292 params[0] = ctx->Array.ArrayBufferObj->Name;
5293 break;
5294 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
5295 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5296 params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
5297 break;
5298 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
5299 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5300 params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
5301 break;
5302 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
5303 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5304 params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
5305 break;
5306 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
5307 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5308 params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
5309 break;
5310 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
5311 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5312 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
5313 break;
5314 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
5315 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5316 params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
5317 break;
5318 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
5319 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5320 params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
5321 break;
5322 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
5323 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5324 params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
5325 break;
5326 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
5327 CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
5328 params[0] = ctx->Array.ElementArrayBufferObj->Name;
5329 break;
5330 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
5331 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
5332 params[0] = ctx->Pack.BufferObj->Name;
5333 break;
5334 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
5335 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
5336 params[0] = ctx->Unpack.BufferObj->Name;
5337 break;
5338 case GL_VERTEX_PROGRAM_ARB:
5339 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5340 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
5341 break;
5342 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
5343 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5344 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
5345 break;
5346 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
5347 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5348 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
5349 break;
5350 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
5351 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5352 params[0] = ctx->Const.MaxProgramMatrixStackDepth;
5353 break;
5354 case GL_MAX_PROGRAM_MATRICES_ARB:
5355 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5356 params[0] = ctx->Const.MaxProgramMatrices;
5357 break;
5358 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
5359 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5360 params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
5361 break;
5362 case GL_CURRENT_MATRIX_ARB:
5363 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5364 {
5365 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5366 params[0] = IROUND(matrix[0]);
5367 params[1] = IROUND(matrix[1]);
5368 params[2] = IROUND(matrix[2]);
5369 params[3] = IROUND(matrix[3]);
5370 params[4] = IROUND(matrix[4]);
5371 params[5] = IROUND(matrix[5]);
5372 params[6] = IROUND(matrix[6]);
5373 params[7] = IROUND(matrix[7]);
5374 params[8] = IROUND(matrix[8]);
5375 params[9] = IROUND(matrix[9]);
5376 params[10] = IROUND(matrix[10]);
5377 params[11] = IROUND(matrix[11]);
5378 params[12] = IROUND(matrix[12]);
5379 params[13] = IROUND(matrix[13]);
5380 params[14] = IROUND(matrix[14]);
5381 params[15] = IROUND(matrix[15]);
5382 }
5383 break;
5384 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
5385 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv");
5386 {
5387 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5388 params[0] = IROUND(matrix[0]);
5389 params[1] = IROUND(matrix[4]);
5390 params[2] = IROUND(matrix[8]);
5391 params[3] = IROUND(matrix[12]);
5392 params[4] = IROUND(matrix[1]);
5393 params[5] = IROUND(matrix[5]);
5394 params[6] = IROUND(matrix[9]);
5395 params[7] = IROUND(matrix[13]);
5396 params[8] = IROUND(matrix[2]);
5397 params[9] = IROUND(matrix[6]);
5398 params[10] = IROUND(matrix[10]);
5399 params[11] = IROUND(matrix[14]);
5400 params[12] = IROUND(matrix[3]);
5401 params[13] = IROUND(matrix[7]);
5402 params[14] = IROUND(matrix[11]);
5403 params[15] = IROUND(matrix[15]);
5404 }
5405 break;
5406 case GL_MAX_VERTEX_ATTRIBS_ARB:
5407 CHECK_EXT1(ARB_vertex_program, "GetIntegerv");
5408 params[0] = ctx->Const.VertexProgram.MaxAttribs;
5409 break;
5410 case GL_PROGRAM_ERROR_POSITION_ARB:
5411 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv");
5412 params[0] = ctx->Program.ErrorPos;
5413 break;
5414 case GL_FRAGMENT_PROGRAM_ARB:
5415 CHECK_EXT1(ARB_fragment_program, "GetIntegerv");
5416 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5417 break;
5418 case GL_MAX_TEXTURE_COORDS_ARB:
5419 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5420 params[0] = ctx->Const.MaxTextureCoordUnits;
5421 break;
5422 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
5423 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5424 params[0] = ctx->Const.MaxTextureImageUnits;
5425 break;
5426 case GL_DEPTH_BOUNDS_TEST_EXT:
5427 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
5428 params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
5429 break;
5430 case GL_DEPTH_BOUNDS_EXT:
5431 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
5432 params[0] = IROUND(ctx->Depth.BoundsMin);
5433 params[1] = IROUND(ctx->Depth.BoundsMax);
5434 break;
5435 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
5436 CHECK_EXT1(MESA_program_debug, "GetIntegerv");
5437 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.CallbackEnabled);
5438 break;
5439 case GL_VERTEX_PROGRAM_CALLBACK_MESA:
5440 CHECK_EXT1(MESA_program_debug, "GetIntegerv");
5441 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.CallbackEnabled);
5442 break;
5443 case GL_FRAGMENT_PROGRAM_POSITION_MESA:
5444 CHECK_EXT1(MESA_program_debug, "GetIntegerv");
5445 params[0] = ctx->FragmentProgram.CurrentPosition;
5446 break;
5447 case GL_VERTEX_PROGRAM_POSITION_MESA:
5448 CHECK_EXT1(MESA_program_debug, "GetIntegerv");
5449 params[0] = ctx->VertexProgram.CurrentPosition;
5450 break;
5451 case GL_MAX_DRAW_BUFFERS_ARB:
5452 CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
5453 params[0] = ctx->Const.MaxDrawBuffers;
5454 break;
5455 case GL_DRAW_BUFFER0_ARB:
5456 CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
5457 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
5458 break;
5459 case GL_DRAW_BUFFER1_ARB:
5460 CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
5461 {
5462 GLenum buffer;
5463 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5464 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5465 return;
5466 }
5467 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
5468 params[0] = ENUM_TO_INT(buffer);
5469 }
5470 break;
5471 case GL_DRAW_BUFFER2_ARB:
5472 CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
5473 {
5474 GLenum buffer;
5475 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5476 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5477 return;
5478 }
5479 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
5480 params[0] = ENUM_TO_INT(buffer);
5481 }
5482 break;
5483 case GL_DRAW_BUFFER3_ARB:
5484 CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
5485 {
5486 GLenum buffer;
5487 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5488 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5489 return;
5490 }
5491 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
5492 params[0] = ENUM_TO_INT(buffer);
5493 }
5494 break;
5495 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
5496 CHECK_EXT1(OES_read_format, "GetIntegerv");
5497 params[0] = ctx->Const.ColorReadType;
5498 break;
5499 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
5500 CHECK_EXT1(OES_read_format, "GetIntegerv");
5501 params[0] = ctx->Const.ColorReadFormat;
5502 break;
5503 case GL_NUM_FRAGMENT_REGISTERS_ATI:
5504 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5505 params[0] = 6;
5506 break;
5507 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
5508 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5509 params[0] = 8;
5510 break;
5511 case GL_NUM_PASSES_ATI:
5512 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5513 params[0] = 2;
5514 break;
5515 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
5516 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5517 params[0] = 8;
5518 break;
5519 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
5520 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5521 params[0] = 16;
5522 break;
5523 case GL_COLOR_ALPHA_PAIRING_ATI:
5524 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5525 params[0] = BOOLEAN_TO_INT(GL_TRUE);
5526 break;
5527 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
5528 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5529 params[0] = 3;
5530 break;
5531 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
5532 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5533 params[0] = 3;
5534 break;
5535 case GL_STENCIL_BACK_FUNC:
5536 params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
5537 break;
5538 case GL_STENCIL_BACK_VALUE_MASK:
5539 params[0] = ctx->Stencil.ValueMask[1];
5540 break;
5541 case GL_STENCIL_BACK_WRITEMASK:
5542 params[0] = ctx->Stencil.WriteMask[1];
5543 break;
5544 case GL_STENCIL_BACK_REF:
5545 params[0] = ctx->Stencil.Ref[1];
5546 break;
5547 case GL_STENCIL_BACK_FAIL:
5548 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
5549 break;
5550 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
5551 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
5552 break;
5553 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
5554 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
5555 break;
5556 case GL_FRAMEBUFFER_BINDING_EXT:
5557 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5558 params[0] = ctx->DrawBuffer->Name;
5559 break;
5560 case GL_RENDERBUFFER_BINDING_EXT:
5561 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5562 params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
5563 break;
5564 case GL_MAX_COLOR_ATTACHMENTS_EXT:
5565 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5566 params[0] = ctx->Const.MaxColorAttachments;
5567 break;
5568 case GL_MAX_RENDERBUFFER_SIZE_EXT:
5569 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5570 params[0] = ctx->Const.MaxRenderbufferSize;
5571 break;
5572 case GL_READ_FRAMEBUFFER_BINDING_EXT:
5573 CHECK_EXT1(EXT_framebuffer_blit, "GetIntegerv");
5574 params[0] = ctx->ReadBuffer->Name;
5575 break;
5576 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
5577 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
5578 params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
5579 break;
5580 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
5581 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
5582 params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
5583 break;
5584 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
5585 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5586 params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
5587 break;
5588 case GL_MAX_VARYING_FLOATS_ARB:
5589 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5590 params[0] = ctx->Const.MaxVarying * 4;
5591 break;
5592 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
5593 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5594 params[0] = ctx->Const.MaxVertexTextureImageUnits;
5595 break;
5596 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
5597 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5598 params[0] = MAX_COMBINED_TEXTURE_IMAGE_UNITS;
5599 break;
5600 case GL_CURRENT_PROGRAM:
5601 CHECK_EXT1(ARB_shader_objects, "GetIntegerv");
5602 params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
5603 break;
5604 default:
5605 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
5606 }
5607 }
5608
5609
5610 void GLAPIENTRY
5611 _mesa_GetDoublev( GLenum pname, GLdouble *params )
5612 {
5613 const GLfloat magic = -1234.5F;
5614 GLfloat values[16];
5615 GLuint i;
5616
5617 if (!params)
5618 return;
5619
5620 /* Init temp array to magic numbers so we can figure out how many values
5621 * are returned by the GetFloatv() call.
5622 */
5623 for (i = 0; i < 16; i++)
5624 values[i] = magic;
5625
5626 _mesa_GetFloatv(pname, values);
5627
5628 for (i = 0; i < 16 && values[i] != magic; i++)
5629 params[i] = (GLdouble) values[i];
5630 }
5631