Merge branch 'mesa_7_5_branch'
[mesa.git] / src / mesa / main / get.c
1
2 /***
3 *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py
4 ***/
5
6 #include "glheader.h"
7 #include "context.h"
8 #include "enable.h"
9 #include "extensions.h"
10 #include "fbobject.h"
11 #include "get.h"
12 #include "macros.h"
13 #include "mtypes.h"
14 #include "state.h"
15 #include "texcompress.h"
16
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.CurrentList ? ctx->ListState.CurrentList->Name : 0));
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].CurrentTex[TEXTURE_1D_INDEX]->Name);
888 break;
889 case GL_TEXTURE_BINDING_2D:
890 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
891 break;
892 case GL_TEXTURE_BINDING_3D:
893 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->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].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->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].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->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].CurrentTex[TEXTURE_CUBE_INDEX]->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 params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
1082 break;
1083 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
1084 params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
1085 break;
1086 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
1087 {
1088 GLint formats[100];
1089 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
1090 ASSERT(n <= 100);
1091 for (i = 0; i < n; i++)
1092 params[i] = ENUM_TO_BOOLEAN(formats[i]);
1093 }
1094 break;
1095 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
1096 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
1097 params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst);
1098 break;
1099 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
1100 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
1101 params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount);
1102 break;
1103 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
1104 {
1105 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
1106 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1107 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1108 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1109 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1110 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1111 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1112 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1113 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1114 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1115 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1116 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1117 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1118 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1119 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1120 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1121 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1122 }
1123 break;
1124 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
1125 {
1126 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
1127 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1128 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1129 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1130 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1131 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1132 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1133 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1134 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1135 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1136 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1137 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1138 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1139 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1140 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1141 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1142 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1143 }
1144 break;
1145 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
1146 {
1147 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
1148 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1149 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1150 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1151 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1152 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1153 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1154 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1155 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1156 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1157 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1158 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1159 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1160 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1161 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1162 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1163 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1164 }
1165 break;
1166 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
1167 {
1168 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
1169 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1170 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1171 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1172 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1173 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1174 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1175 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1176 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1177 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1178 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1179 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1180 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1181 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1182 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1183 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1184 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1185 }
1186 break;
1187 case GL_COLOR_MATRIX_SGI:
1188 {
1189 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
1190 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1191 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
1192 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
1193 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
1194 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
1195 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1196 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
1197 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
1198 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
1199 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
1200 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1201 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
1202 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
1203 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
1204 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
1205 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1206 }
1207 break;
1208 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
1209 params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1);
1210 break;
1211 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
1212 params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH);
1213 break;
1214 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
1215 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]);
1216 break;
1217 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
1218 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]);
1219 break;
1220 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
1221 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]);
1222 break;
1223 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
1224 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]);
1225 break;
1226 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
1227 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]);
1228 break;
1229 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
1230 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]);
1231 break;
1232 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
1233 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]);
1234 break;
1235 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
1236 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]);
1237 break;
1238 case GL_CONVOLUTION_1D_EXT:
1239 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1240 params[0] = ctx->Pixel.Convolution1DEnabled;
1241 break;
1242 case GL_CONVOLUTION_2D_EXT:
1243 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1244 params[0] = ctx->Pixel.Convolution2DEnabled;
1245 break;
1246 case GL_SEPARABLE_2D_EXT:
1247 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1248 params[0] = ctx->Pixel.Separable2DEnabled;
1249 break;
1250 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
1251 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1252 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]);
1253 break;
1254 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
1255 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1256 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]);
1257 break;
1258 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
1259 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1260 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]);
1261 break;
1262 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
1263 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1264 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]);
1265 break;
1266 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
1267 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1268 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]);
1269 break;
1270 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
1271 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1272 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]);
1273 break;
1274 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
1275 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1276 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]);
1277 break;
1278 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
1279 CHECK_EXT1(EXT_convolution, "GetBooleanv");
1280 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]);
1281 break;
1282 case GL_HISTOGRAM:
1283 CHECK_EXT1(EXT_histogram, "GetBooleanv");
1284 params[0] = ctx->Pixel.HistogramEnabled;
1285 break;
1286 case GL_MINMAX:
1287 CHECK_EXT1(EXT_histogram, "GetBooleanv");
1288 params[0] = ctx->Pixel.MinMaxEnabled;
1289 break;
1290 case GL_COLOR_TABLE_SGI:
1291 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1292 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION];
1293 break;
1294 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
1295 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1296 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION];
1297 break;
1298 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
1299 CHECK_EXT1(SGI_color_table, "GetBooleanv");
1300 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX];
1301 break;
1302 case GL_TEXTURE_COLOR_TABLE_SGI:
1303 CHECK_EXT1(SGI_texture_color_table, "GetBooleanv");
1304 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled;
1305 break;
1306 case GL_COLOR_SUM_EXT:
1307 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetBooleanv");
1308 params[0] = ctx->Fog.ColorSumEnabled;
1309 break;
1310 case GL_CURRENT_SECONDARY_COLOR_EXT:
1311 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1312 {
1313 FLUSH_CURRENT(ctx, 0);
1314 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
1315 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
1316 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
1317 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
1318 }
1319 break;
1320 case GL_SECONDARY_COLOR_ARRAY_EXT:
1321 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1322 params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled;
1323 break;
1324 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
1325 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1326 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type);
1327 break;
1328 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
1329 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1330 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride);
1331 break;
1332 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
1333 CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
1334 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size);
1335 break;
1336 case GL_CURRENT_FOG_COORDINATE_EXT:
1337 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1338 {
1339 FLUSH_CURRENT(ctx, 0);
1340 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
1341 }
1342 break;
1343 case GL_FOG_COORDINATE_ARRAY_EXT:
1344 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1345 params[0] = ctx->Array.ArrayObj->FogCoord.Enabled;
1346 break;
1347 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
1348 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1349 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type);
1350 break;
1351 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
1352 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1353 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride);
1354 break;
1355 case GL_FOG_COORDINATE_SOURCE_EXT:
1356 CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
1357 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource);
1358 break;
1359 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
1360 CHECK_EXT1(EXT_texture_lod_bias, "GetBooleanv");
1361 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias);
1362 break;
1363 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
1364 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetBooleanv");
1365 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy);
1366 break;
1367 case GL_MULTISAMPLE_ARB:
1368 params[0] = ctx->Multisample.Enabled;
1369 break;
1370 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
1371 params[0] = ctx->Multisample.SampleAlphaToCoverage;
1372 break;
1373 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
1374 params[0] = ctx->Multisample.SampleAlphaToOne;
1375 break;
1376 case GL_SAMPLE_COVERAGE_ARB:
1377 params[0] = ctx->Multisample.SampleCoverage;
1378 break;
1379 case GL_SAMPLE_COVERAGE_VALUE_ARB:
1380 params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue);
1381 break;
1382 case GL_SAMPLE_COVERAGE_INVERT_ARB:
1383 params[0] = ctx->Multisample.SampleCoverageInvert;
1384 break;
1385 case GL_SAMPLE_BUFFERS_ARB:
1386 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers);
1387 break;
1388 case GL_SAMPLES_ARB:
1389 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples);
1390 break;
1391 case GL_RASTER_POSITION_UNCLIPPED_IBM:
1392 CHECK_EXT1(IBM_rasterpos_clip, "GetBooleanv");
1393 params[0] = ctx->Transform.RasterPositionUnclipped;
1394 break;
1395 case GL_POINT_SPRITE_NV:
1396 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
1397 params[0] = ctx->Point.PointSprite;
1398 break;
1399 case GL_POINT_SPRITE_R_MODE_NV:
1400 CHECK_EXT1(NV_point_sprite, "GetBooleanv");
1401 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode);
1402 break;
1403 case GL_POINT_SPRITE_COORD_ORIGIN:
1404 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
1405 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin);
1406 break;
1407 case GL_GENERATE_MIPMAP_HINT_SGIS:
1408 CHECK_EXT1(SGIS_generate_mipmap, "GetBooleanv");
1409 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap);
1410 break;
1411 case GL_VERTEX_PROGRAM_BINDING_NV:
1412 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1413 params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
1414 break;
1415 case GL_VERTEX_ATTRIB_ARRAY0_NV:
1416 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1417 params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled;
1418 break;
1419 case GL_VERTEX_ATTRIB_ARRAY1_NV:
1420 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1421 params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled;
1422 break;
1423 case GL_VERTEX_ATTRIB_ARRAY2_NV:
1424 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1425 params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled;
1426 break;
1427 case GL_VERTEX_ATTRIB_ARRAY3_NV:
1428 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1429 params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled;
1430 break;
1431 case GL_VERTEX_ATTRIB_ARRAY4_NV:
1432 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1433 params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled;
1434 break;
1435 case GL_VERTEX_ATTRIB_ARRAY5_NV:
1436 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1437 params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled;
1438 break;
1439 case GL_VERTEX_ATTRIB_ARRAY6_NV:
1440 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1441 params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled;
1442 break;
1443 case GL_VERTEX_ATTRIB_ARRAY7_NV:
1444 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1445 params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled;
1446 break;
1447 case GL_VERTEX_ATTRIB_ARRAY8_NV:
1448 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1449 params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled;
1450 break;
1451 case GL_VERTEX_ATTRIB_ARRAY9_NV:
1452 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1453 params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled;
1454 break;
1455 case GL_VERTEX_ATTRIB_ARRAY10_NV:
1456 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1457 params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled;
1458 break;
1459 case GL_VERTEX_ATTRIB_ARRAY11_NV:
1460 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1461 params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled;
1462 break;
1463 case GL_VERTEX_ATTRIB_ARRAY12_NV:
1464 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1465 params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled;
1466 break;
1467 case GL_VERTEX_ATTRIB_ARRAY13_NV:
1468 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1469 params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled;
1470 break;
1471 case GL_VERTEX_ATTRIB_ARRAY14_NV:
1472 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1473 params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled;
1474 break;
1475 case GL_VERTEX_ATTRIB_ARRAY15_NV:
1476 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1477 params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled;
1478 break;
1479 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
1480 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1481 params[0] = ctx->Eval.Map1Attrib[0];
1482 break;
1483 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
1484 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1485 params[0] = ctx->Eval.Map1Attrib[1];
1486 break;
1487 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
1488 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1489 params[0] = ctx->Eval.Map1Attrib[2];
1490 break;
1491 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
1492 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1493 params[0] = ctx->Eval.Map1Attrib[3];
1494 break;
1495 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
1496 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1497 params[0] = ctx->Eval.Map1Attrib[4];
1498 break;
1499 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
1500 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1501 params[0] = ctx->Eval.Map1Attrib[5];
1502 break;
1503 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
1504 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1505 params[0] = ctx->Eval.Map1Attrib[6];
1506 break;
1507 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
1508 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1509 params[0] = ctx->Eval.Map1Attrib[7];
1510 break;
1511 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
1512 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1513 params[0] = ctx->Eval.Map1Attrib[8];
1514 break;
1515 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
1516 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1517 params[0] = ctx->Eval.Map1Attrib[9];
1518 break;
1519 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
1520 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1521 params[0] = ctx->Eval.Map1Attrib[10];
1522 break;
1523 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
1524 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1525 params[0] = ctx->Eval.Map1Attrib[11];
1526 break;
1527 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
1528 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1529 params[0] = ctx->Eval.Map1Attrib[12];
1530 break;
1531 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
1532 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1533 params[0] = ctx->Eval.Map1Attrib[13];
1534 break;
1535 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
1536 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1537 params[0] = ctx->Eval.Map1Attrib[14];
1538 break;
1539 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
1540 CHECK_EXT1(NV_vertex_program, "GetBooleanv");
1541 params[0] = ctx->Eval.Map1Attrib[15];
1542 break;
1543 case GL_FRAGMENT_PROGRAM_NV:
1544 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1545 params[0] = ctx->FragmentProgram.Enabled;
1546 break;
1547 case GL_FRAGMENT_PROGRAM_BINDING_NV:
1548 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1549 params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
1550 break;
1551 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
1552 CHECK_EXT1(NV_fragment_program, "GetBooleanv");
1553 params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
1554 break;
1555 case GL_TEXTURE_RECTANGLE_NV:
1556 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1557 params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV);
1558 break;
1559 case GL_TEXTURE_BINDING_RECTANGLE_NV:
1560 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1561 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
1562 break;
1563 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
1564 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
1565 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize);
1566 break;
1567 case GL_STENCIL_TEST_TWO_SIDE_EXT:
1568 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
1569 params[0] = ctx->Stencil.TestTwoSide;
1570 break;
1571 case GL_ACTIVE_STENCIL_FACE_EXT:
1572 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
1573 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
1574 break;
1575 case GL_MAX_SHININESS_NV:
1576 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
1577 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess);
1578 break;
1579 case GL_MAX_SPOT_EXPONENT_NV:
1580 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
1581 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent);
1582 break;
1583 case GL_ARRAY_BUFFER_BINDING_ARB:
1584 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name);
1585 break;
1586 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
1587 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
1588 break;
1589 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
1590 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name);
1591 break;
1592 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
1593 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name);
1594 break;
1595 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
1596 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name);
1597 break;
1598 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
1599 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
1600 break;
1601 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
1602 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
1603 break;
1604 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
1605 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
1606 break;
1607 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
1608 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
1609 break;
1610 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
1611 params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name);
1612 break;
1613 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
1614 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
1615 params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name);
1616 break;
1617 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
1618 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
1619 params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name);
1620 break;
1621 case GL_VERTEX_PROGRAM_ARB:
1622 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1623 params[0] = ctx->VertexProgram.Enabled;
1624 break;
1625 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
1626 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1627 params[0] = ctx->VertexProgram.PointSizeEnabled;
1628 break;
1629 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
1630 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
1631 params[0] = ctx->VertexProgram.TwoSideEnabled;
1632 break;
1633 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
1634 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1635 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth);
1636 break;
1637 case GL_MAX_PROGRAM_MATRICES_ARB:
1638 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1639 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices);
1640 break;
1641 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
1642 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
1643 params[0] = ctx->CurrentStack->Depth + 1;
1644 break;
1645 case GL_CURRENT_MATRIX_ARB:
1646 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1647 {
1648 const GLfloat *matrix = ctx->CurrentStack->Top->m;
1649 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1650 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
1651 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
1652 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
1653 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
1654 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1655 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
1656 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
1657 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
1658 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
1659 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1660 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
1661 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
1662 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
1663 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
1664 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1665 }
1666 break;
1667 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
1668 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetBooleanv");
1669 {
1670 const GLfloat *matrix = ctx->CurrentStack->Top->m;
1671 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1672 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1673 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1674 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1675 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1676 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1677 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1678 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1679 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1680 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1681 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1682 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1683 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1684 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1685 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1686 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1687 }
1688 break;
1689 case GL_MAX_VERTEX_ATTRIBS_ARB:
1690 CHECK_EXT1(ARB_vertex_program, "GetBooleanv");
1691 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs);
1692 break;
1693 case GL_PROGRAM_ERROR_POSITION_ARB:
1694 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetBooleanv");
1695 params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos);
1696 break;
1697 case GL_FRAGMENT_PROGRAM_ARB:
1698 CHECK_EXT1(ARB_fragment_program, "GetBooleanv");
1699 params[0] = ctx->FragmentProgram.Enabled;
1700 break;
1701 case GL_MAX_TEXTURE_COORDS_ARB:
1702 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1703 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits);
1704 break;
1705 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
1706 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
1707 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits);
1708 break;
1709 case GL_DEPTH_BOUNDS_TEST_EXT:
1710 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
1711 params[0] = ctx->Depth.BoundsTest;
1712 break;
1713 case GL_DEPTH_BOUNDS_EXT:
1714 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
1715 params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
1716 params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
1717 break;
1718 case GL_MAX_DRAW_BUFFERS_ARB:
1719 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
1720 break;
1721 case GL_DRAW_BUFFER0_ARB:
1722 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
1723 break;
1724 case GL_DRAW_BUFFER1_ARB:
1725 {
1726 GLenum buffer;
1727 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1728 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1729 return;
1730 }
1731 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
1732 params[0] = ENUM_TO_BOOLEAN(buffer);
1733 }
1734 break;
1735 case GL_DRAW_BUFFER2_ARB:
1736 {
1737 GLenum buffer;
1738 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1739 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1740 return;
1741 }
1742 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
1743 params[0] = ENUM_TO_BOOLEAN(buffer);
1744 }
1745 break;
1746 case GL_DRAW_BUFFER3_ARB:
1747 {
1748 GLenum buffer;
1749 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1750 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1751 return;
1752 }
1753 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
1754 params[0] = ENUM_TO_BOOLEAN(buffer);
1755 }
1756 break;
1757 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
1758 CHECK_EXT1(OES_read_format, "GetBooleanv");
1759 params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadType);
1760 break;
1761 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1762 CHECK_EXT1(OES_read_format, "GetBooleanv");
1763 params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadFormat);
1764 break;
1765 case GL_NUM_FRAGMENT_REGISTERS_ATI:
1766 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1767 params[0] = INT_TO_BOOLEAN(6);
1768 break;
1769 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
1770 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1771 params[0] = INT_TO_BOOLEAN(8);
1772 break;
1773 case GL_NUM_PASSES_ATI:
1774 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1775 params[0] = INT_TO_BOOLEAN(2);
1776 break;
1777 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
1778 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1779 params[0] = INT_TO_BOOLEAN(8);
1780 break;
1781 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
1782 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1783 params[0] = INT_TO_BOOLEAN(16);
1784 break;
1785 case GL_COLOR_ALPHA_PAIRING_ATI:
1786 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1787 params[0] = GL_TRUE;
1788 break;
1789 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
1790 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1791 params[0] = INT_TO_BOOLEAN(3);
1792 break;
1793 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
1794 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1795 params[0] = INT_TO_BOOLEAN(3);
1796 break;
1797 case GL_STENCIL_BACK_FUNC:
1798 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
1799 break;
1800 case GL_STENCIL_BACK_VALUE_MASK:
1801 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
1802 break;
1803 case GL_STENCIL_BACK_WRITEMASK:
1804 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]);
1805 break;
1806 case GL_STENCIL_BACK_REF:
1807 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
1808 break;
1809 case GL_STENCIL_BACK_FAIL:
1810 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
1811 break;
1812 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
1813 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
1814 break;
1815 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
1816 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
1817 break;
1818 case GL_FRAMEBUFFER_BINDING_EXT:
1819 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1820 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
1821 break;
1822 case GL_RENDERBUFFER_BINDING_EXT:
1823 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1824 params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
1825 break;
1826 case GL_MAX_COLOR_ATTACHMENTS_EXT:
1827 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1828 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
1829 break;
1830 case GL_MAX_RENDERBUFFER_SIZE_EXT:
1831 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1832 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
1833 break;
1834 case GL_READ_FRAMEBUFFER_BINDING_EXT:
1835 CHECK_EXT1(EXT_framebuffer_blit, "GetBooleanv");
1836 params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name);
1837 break;
1838 case GL_PROVOKING_VERTEX_EXT:
1839 CHECK_EXT1(EXT_provoking_vertex, "GetBooleanv");
1840 params[0] = ctx->Light.ProvokingVertex;
1841 break;
1842 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
1843 CHECK_EXT1(EXT_provoking_vertex, "GetBooleanv");
1844 params[0] = ctx->Const.QuadsFollowProvokingVertexConvention;
1845 break;
1846 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
1847 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
1848 params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents);
1849 break;
1850 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
1851 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
1852 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
1853 break;
1854 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
1855 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1856 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents);
1857 break;
1858 case GL_MAX_VARYING_FLOATS_ARB:
1859 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1860 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4);
1861 break;
1862 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
1863 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1864 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits);
1865 break;
1866 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
1867 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1868 params[0] = INT_TO_BOOLEAN(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
1869 break;
1870 case GL_CURRENT_PROGRAM:
1871 CHECK_EXT1(ARB_shader_objects, "GetBooleanv");
1872 params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
1873 break;
1874 case GL_MAX_SAMPLES:
1875 CHECK_EXT1(ARB_framebuffer_object, "GetBooleanv");
1876 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxSamples);
1877 break;
1878 case GL_VERTEX_ARRAY_BINDING_APPLE:
1879 CHECK_EXT1(APPLE_vertex_array_object, "GetBooleanv");
1880 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Name);
1881 break;
1882 default:
1883 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
1884 }
1885 }
1886
1887 void GLAPIENTRY
1888 _mesa_GetFloatv( GLenum pname, GLfloat *params )
1889 {
1890 GET_CURRENT_CONTEXT(ctx);
1891 ASSERT_OUTSIDE_BEGIN_END(ctx);
1892
1893 if (!params)
1894 return;
1895
1896 if (ctx->NewState)
1897 _mesa_update_state(ctx);
1898
1899 if (ctx->Driver.GetFloatv &&
1900 ctx->Driver.GetFloatv(ctx, pname, params))
1901 return;
1902
1903 switch (pname) {
1904 case GL_ACCUM_RED_BITS:
1905 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
1906 break;
1907 case GL_ACCUM_GREEN_BITS:
1908 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
1909 break;
1910 case GL_ACCUM_BLUE_BITS:
1911 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
1912 break;
1913 case GL_ACCUM_ALPHA_BITS:
1914 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
1915 break;
1916 case GL_ACCUM_CLEAR_VALUE:
1917 params[0] = ctx->Accum.ClearColor[0];
1918 params[1] = ctx->Accum.ClearColor[1];
1919 params[2] = ctx->Accum.ClearColor[2];
1920 params[3] = ctx->Accum.ClearColor[3];
1921 break;
1922 case GL_ALPHA_BIAS:
1923 params[0] = ctx->Pixel.AlphaBias;
1924 break;
1925 case GL_ALPHA_BITS:
1926 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
1927 break;
1928 case GL_ALPHA_SCALE:
1929 params[0] = ctx->Pixel.AlphaScale;
1930 break;
1931 case GL_ALPHA_TEST:
1932 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
1933 break;
1934 case GL_ALPHA_TEST_FUNC:
1935 params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
1936 break;
1937 case GL_ALPHA_TEST_REF:
1938 params[0] = ctx->Color.AlphaRef;
1939 break;
1940 case GL_ATTRIB_STACK_DEPTH:
1941 params[0] = (GLfloat)(ctx->AttribStackDepth);
1942 break;
1943 case GL_AUTO_NORMAL:
1944 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
1945 break;
1946 case GL_AUX_BUFFERS:
1947 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
1948 break;
1949 case GL_BLEND:
1950 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.BlendEnabled);
1951 break;
1952 case GL_BLEND_DST:
1953 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
1954 break;
1955 case GL_BLEND_SRC:
1956 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
1957 break;
1958 case GL_BLEND_SRC_RGB_EXT:
1959 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
1960 break;
1961 case GL_BLEND_DST_RGB_EXT:
1962 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
1963 break;
1964 case GL_BLEND_SRC_ALPHA_EXT:
1965 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
1966 break;
1967 case GL_BLEND_DST_ALPHA_EXT:
1968 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
1969 break;
1970 case GL_BLEND_EQUATION:
1971 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
1972 break;
1973 case GL_BLEND_EQUATION_ALPHA_EXT:
1974 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
1975 break;
1976 case GL_BLEND_COLOR_EXT:
1977 params[0] = ctx->Color.BlendColor[0];
1978 params[1] = ctx->Color.BlendColor[1];
1979 params[2] = ctx->Color.BlendColor[2];
1980 params[3] = ctx->Color.BlendColor[3];
1981 break;
1982 case GL_BLUE_BIAS:
1983 params[0] = ctx->Pixel.BlueBias;
1984 break;
1985 case GL_BLUE_BITS:
1986 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
1987 break;
1988 case GL_BLUE_SCALE:
1989 params[0] = ctx->Pixel.BlueScale;
1990 break;
1991 case GL_CLIENT_ATTRIB_STACK_DEPTH:
1992 params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
1993 break;
1994 case GL_CLIP_PLANE0:
1995 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
1996 break;
1997 case GL_CLIP_PLANE1:
1998 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
1999 break;
2000 case GL_CLIP_PLANE2:
2001 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
2002 break;
2003 case GL_CLIP_PLANE3:
2004 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
2005 break;
2006 case GL_CLIP_PLANE4:
2007 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
2008 break;
2009 case GL_CLIP_PLANE5:
2010 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
2011 break;
2012 case GL_COLOR_CLEAR_VALUE:
2013 params[0] = ctx->Color.ClearColor[0];
2014 params[1] = ctx->Color.ClearColor[1];
2015 params[2] = ctx->Color.ClearColor[2];
2016 params[3] = ctx->Color.ClearColor[3];
2017 break;
2018 case GL_COLOR_MATERIAL:
2019 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
2020 break;
2021 case GL_COLOR_MATERIAL_FACE:
2022 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
2023 break;
2024 case GL_COLOR_MATERIAL_PARAMETER:
2025 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
2026 break;
2027 case GL_COLOR_WRITEMASK:
2028 params[0] = (GLfloat)(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
2029 params[1] = (GLfloat)(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
2030 params[2] = (GLfloat)(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
2031 params[3] = (GLfloat)(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
2032 break;
2033 case GL_CULL_FACE:
2034 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
2035 break;
2036 case GL_CULL_FACE_MODE:
2037 params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
2038 break;
2039 case GL_CURRENT_COLOR:
2040 {
2041 FLUSH_CURRENT(ctx, 0);
2042 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
2043 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
2044 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
2045 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
2046 }
2047 break;
2048 case GL_CURRENT_INDEX:
2049 {
2050 FLUSH_CURRENT(ctx, 0);
2051 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
2052 }
2053 break;
2054 case GL_CURRENT_NORMAL:
2055 {
2056 FLUSH_CURRENT(ctx, 0);
2057 params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
2058 params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
2059 params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
2060 }
2061 break;
2062 case GL_CURRENT_RASTER_COLOR:
2063 params[0] = ctx->Current.RasterColor[0];
2064 params[1] = ctx->Current.RasterColor[1];
2065 params[2] = ctx->Current.RasterColor[2];
2066 params[3] = ctx->Current.RasterColor[3];
2067 break;
2068 case GL_CURRENT_RASTER_DISTANCE:
2069 params[0] = ctx->Current.RasterDistance;
2070 break;
2071 case GL_CURRENT_RASTER_INDEX:
2072 params[0] = ctx->Current.RasterIndex;
2073 break;
2074 case GL_CURRENT_RASTER_POSITION:
2075 params[0] = ctx->Current.RasterPos[0];
2076 params[1] = ctx->Current.RasterPos[1];
2077 params[2] = ctx->Current.RasterPos[2];
2078 params[3] = ctx->Current.RasterPos[3];
2079 break;
2080 case GL_CURRENT_RASTER_SECONDARY_COLOR:
2081 params[0] = ctx->Current.RasterSecondaryColor[0];
2082 params[1] = ctx->Current.RasterSecondaryColor[1];
2083 params[2] = ctx->Current.RasterSecondaryColor[2];
2084 params[3] = ctx->Current.RasterSecondaryColor[3];
2085 break;
2086 case GL_CURRENT_RASTER_TEXTURE_COORDS:
2087 {
2088 const GLuint texUnit = ctx->Texture.CurrentUnit;
2089 params[0] = ctx->Current.RasterTexCoords[texUnit][0];
2090 params[1] = ctx->Current.RasterTexCoords[texUnit][1];
2091 params[2] = ctx->Current.RasterTexCoords[texUnit][2];
2092 params[3] = ctx->Current.RasterTexCoords[texUnit][3];
2093 }
2094 break;
2095 case GL_CURRENT_RASTER_POSITION_VALID:
2096 params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
2097 break;
2098 case GL_CURRENT_TEXTURE_COORDS:
2099 {
2100 const GLuint texUnit = ctx->Texture.CurrentUnit;
2101 params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
2102 params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
2103 params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
2104 params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
2105 }
2106 break;
2107 case GL_DEPTH_BIAS:
2108 params[0] = ctx->Pixel.DepthBias;
2109 break;
2110 case GL_DEPTH_BITS:
2111 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
2112 break;
2113 case GL_DEPTH_CLEAR_VALUE:
2114 params[0] = ((GLfloat) ctx->Depth.Clear);
2115 break;
2116 case GL_DEPTH_FUNC:
2117 params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
2118 break;
2119 case GL_DEPTH_RANGE:
2120 params[0] = ctx->Viewport.Near;
2121 params[1] = ctx->Viewport.Far;
2122 break;
2123 case GL_DEPTH_SCALE:
2124 params[0] = ctx->Pixel.DepthScale;
2125 break;
2126 case GL_DEPTH_TEST:
2127 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
2128 break;
2129 case GL_DEPTH_WRITEMASK:
2130 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
2131 break;
2132 case GL_DITHER:
2133 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
2134 break;
2135 case GL_DOUBLEBUFFER:
2136 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
2137 break;
2138 case GL_DRAW_BUFFER:
2139 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
2140 break;
2141 case GL_EDGE_FLAG:
2142 {
2143 FLUSH_CURRENT(ctx, 0);
2144 params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
2145 }
2146 break;
2147 case GL_FEEDBACK_BUFFER_SIZE:
2148 params[0] = (GLfloat)(ctx->Feedback.BufferSize);
2149 break;
2150 case GL_FEEDBACK_BUFFER_TYPE:
2151 params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
2152 break;
2153 case GL_FOG:
2154 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
2155 break;
2156 case GL_FOG_COLOR:
2157 params[0] = ctx->Fog.Color[0];
2158 params[1] = ctx->Fog.Color[1];
2159 params[2] = ctx->Fog.Color[2];
2160 params[3] = ctx->Fog.Color[3];
2161 break;
2162 case GL_FOG_DENSITY:
2163 params[0] = ctx->Fog.Density;
2164 break;
2165 case GL_FOG_END:
2166 params[0] = ctx->Fog.End;
2167 break;
2168 case GL_FOG_HINT:
2169 params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
2170 break;
2171 case GL_FOG_INDEX:
2172 params[0] = ctx->Fog.Index;
2173 break;
2174 case GL_FOG_MODE:
2175 params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
2176 break;
2177 case GL_FOG_START:
2178 params[0] = ctx->Fog.Start;
2179 break;
2180 case GL_FRONT_FACE:
2181 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
2182 break;
2183 case GL_GREEN_BIAS:
2184 params[0] = ctx->Pixel.GreenBias;
2185 break;
2186 case GL_GREEN_BITS:
2187 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
2188 break;
2189 case GL_GREEN_SCALE:
2190 params[0] = ctx->Pixel.GreenScale;
2191 break;
2192 case GL_INDEX_BITS:
2193 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
2194 break;
2195 case GL_INDEX_CLEAR_VALUE:
2196 params[0] = (GLfloat)(ctx->Color.ClearIndex);
2197 break;
2198 case GL_INDEX_MODE:
2199 params[0] = BOOLEAN_TO_FLOAT(!ctx->DrawBuffer->Visual.rgbMode);
2200 break;
2201 case GL_INDEX_OFFSET:
2202 params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
2203 break;
2204 case GL_INDEX_SHIFT:
2205 params[0] = (GLfloat)(ctx->Pixel.IndexShift);
2206 break;
2207 case GL_INDEX_WRITEMASK:
2208 params[0] = (GLfloat)(ctx->Color.IndexMask);
2209 break;
2210 case GL_LIGHT0:
2211 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
2212 break;
2213 case GL_LIGHT1:
2214 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
2215 break;
2216 case GL_LIGHT2:
2217 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
2218 break;
2219 case GL_LIGHT3:
2220 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
2221 break;
2222 case GL_LIGHT4:
2223 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
2224 break;
2225 case GL_LIGHT5:
2226 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
2227 break;
2228 case GL_LIGHT6:
2229 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
2230 break;
2231 case GL_LIGHT7:
2232 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
2233 break;
2234 case GL_LIGHTING:
2235 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
2236 break;
2237 case GL_LIGHT_MODEL_AMBIENT:
2238 params[0] = ctx->Light.Model.Ambient[0];
2239 params[1] = ctx->Light.Model.Ambient[1];
2240 params[2] = ctx->Light.Model.Ambient[2];
2241 params[3] = ctx->Light.Model.Ambient[3];
2242 break;
2243 case GL_LIGHT_MODEL_COLOR_CONTROL:
2244 params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
2245 break;
2246 case GL_LIGHT_MODEL_LOCAL_VIEWER:
2247 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
2248 break;
2249 case GL_LIGHT_MODEL_TWO_SIDE:
2250 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
2251 break;
2252 case GL_LINE_SMOOTH:
2253 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
2254 break;
2255 case GL_LINE_SMOOTH_HINT:
2256 params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
2257 break;
2258 case GL_LINE_STIPPLE:
2259 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
2260 break;
2261 case GL_LINE_STIPPLE_PATTERN:
2262 params[0] = (GLfloat)(ctx->Line.StipplePattern);
2263 break;
2264 case GL_LINE_STIPPLE_REPEAT:
2265 params[0] = (GLfloat)(ctx->Line.StippleFactor);
2266 break;
2267 case GL_LINE_WIDTH:
2268 params[0] = ctx->Line.Width;
2269 break;
2270 case GL_LINE_WIDTH_GRANULARITY:
2271 params[0] = ctx->Const.LineWidthGranularity;
2272 break;
2273 case GL_LINE_WIDTH_RANGE:
2274 params[0] = ctx->Const.MinLineWidthAA;
2275 params[1] = ctx->Const.MaxLineWidthAA;
2276 break;
2277 case GL_ALIASED_LINE_WIDTH_RANGE:
2278 params[0] = ctx->Const.MinLineWidth;
2279 params[1] = ctx->Const.MaxLineWidth;
2280 break;
2281 case GL_LIST_BASE:
2282 params[0] = (GLfloat)(ctx->List.ListBase);
2283 break;
2284 case GL_LIST_INDEX:
2285 params[0] = (GLfloat)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
2286 break;
2287 case GL_LIST_MODE:
2288 {
2289 GLenum mode;
2290 if (!ctx->CompileFlag)
2291 mode = 0;
2292 else if (ctx->ExecuteFlag)
2293 mode = GL_COMPILE_AND_EXECUTE;
2294 else
2295 mode = GL_COMPILE;
2296 params[0] = ENUM_TO_FLOAT(mode);
2297 }
2298 break;
2299 case GL_INDEX_LOGIC_OP:
2300 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
2301 break;
2302 case GL_COLOR_LOGIC_OP:
2303 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
2304 break;
2305 case GL_LOGIC_OP_MODE:
2306 params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
2307 break;
2308 case GL_MAP1_COLOR_4:
2309 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
2310 break;
2311 case GL_MAP1_GRID_DOMAIN:
2312 params[0] = ctx->Eval.MapGrid1u1;
2313 params[1] = ctx->Eval.MapGrid1u2;
2314 break;
2315 case GL_MAP1_GRID_SEGMENTS:
2316 params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
2317 break;
2318 case GL_MAP1_INDEX:
2319 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
2320 break;
2321 case GL_MAP1_NORMAL:
2322 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
2323 break;
2324 case GL_MAP1_TEXTURE_COORD_1:
2325 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
2326 break;
2327 case GL_MAP1_TEXTURE_COORD_2:
2328 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
2329 break;
2330 case GL_MAP1_TEXTURE_COORD_3:
2331 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
2332 break;
2333 case GL_MAP1_TEXTURE_COORD_4:
2334 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
2335 break;
2336 case GL_MAP1_VERTEX_3:
2337 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
2338 break;
2339 case GL_MAP1_VERTEX_4:
2340 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
2341 break;
2342 case GL_MAP2_COLOR_4:
2343 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
2344 break;
2345 case GL_MAP2_GRID_DOMAIN:
2346 params[0] = ctx->Eval.MapGrid2u1;
2347 params[1] = ctx->Eval.MapGrid2u2;
2348 params[2] = ctx->Eval.MapGrid2v1;
2349 params[3] = ctx->Eval.MapGrid2v2;
2350 break;
2351 case GL_MAP2_GRID_SEGMENTS:
2352 params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
2353 params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
2354 break;
2355 case GL_MAP2_INDEX:
2356 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
2357 break;
2358 case GL_MAP2_NORMAL:
2359 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
2360 break;
2361 case GL_MAP2_TEXTURE_COORD_1:
2362 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
2363 break;
2364 case GL_MAP2_TEXTURE_COORD_2:
2365 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
2366 break;
2367 case GL_MAP2_TEXTURE_COORD_3:
2368 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
2369 break;
2370 case GL_MAP2_TEXTURE_COORD_4:
2371 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
2372 break;
2373 case GL_MAP2_VERTEX_3:
2374 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
2375 break;
2376 case GL_MAP2_VERTEX_4:
2377 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
2378 break;
2379 case GL_MAP_COLOR:
2380 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
2381 break;
2382 case GL_MAP_STENCIL:
2383 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
2384 break;
2385 case GL_MATRIX_MODE:
2386 params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
2387 break;
2388 case GL_MAX_ATTRIB_STACK_DEPTH:
2389 params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
2390 break;
2391 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
2392 params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
2393 break;
2394 case GL_MAX_CLIP_PLANES:
2395 params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
2396 break;
2397 case GL_MAX_ELEMENTS_VERTICES:
2398 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2399 break;
2400 case GL_MAX_ELEMENTS_INDICES:
2401 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2402 break;
2403 case GL_MAX_EVAL_ORDER:
2404 params[0] = (GLfloat)(MAX_EVAL_ORDER);
2405 break;
2406 case GL_MAX_LIGHTS:
2407 params[0] = (GLfloat)(ctx->Const.MaxLights);
2408 break;
2409 case GL_MAX_LIST_NESTING:
2410 params[0] = (GLfloat)(MAX_LIST_NESTING);
2411 break;
2412 case GL_MAX_MODELVIEW_STACK_DEPTH:
2413 params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
2414 break;
2415 case GL_MAX_NAME_STACK_DEPTH:
2416 params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
2417 break;
2418 case GL_MAX_PIXEL_MAP_TABLE:
2419 params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
2420 break;
2421 case GL_MAX_PROJECTION_STACK_DEPTH:
2422 params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
2423 break;
2424 case GL_MAX_TEXTURE_SIZE:
2425 params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
2426 break;
2427 case GL_MAX_3D_TEXTURE_SIZE:
2428 params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
2429 break;
2430 case GL_MAX_TEXTURE_STACK_DEPTH:
2431 params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
2432 break;
2433 case GL_MAX_VIEWPORT_DIMS:
2434 params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
2435 params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
2436 break;
2437 case GL_MODELVIEW_MATRIX:
2438 {
2439 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
2440 params[0] = matrix[0];
2441 params[1] = matrix[1];
2442 params[2] = matrix[2];
2443 params[3] = matrix[3];
2444 params[4] = matrix[4];
2445 params[5] = matrix[5];
2446 params[6] = matrix[6];
2447 params[7] = matrix[7];
2448 params[8] = matrix[8];
2449 params[9] = matrix[9];
2450 params[10] = matrix[10];
2451 params[11] = matrix[11];
2452 params[12] = matrix[12];
2453 params[13] = matrix[13];
2454 params[14] = matrix[14];
2455 params[15] = matrix[15];
2456 }
2457 break;
2458 case GL_MODELVIEW_STACK_DEPTH:
2459 params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
2460 break;
2461 case GL_NAME_STACK_DEPTH:
2462 params[0] = (GLfloat)(ctx->Select.NameStackDepth);
2463 break;
2464 case GL_NORMALIZE:
2465 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
2466 break;
2467 case GL_PACK_ALIGNMENT:
2468 params[0] = (GLfloat)(ctx->Pack.Alignment);
2469 break;
2470 case GL_PACK_LSB_FIRST:
2471 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
2472 break;
2473 case GL_PACK_ROW_LENGTH:
2474 params[0] = (GLfloat)(ctx->Pack.RowLength);
2475 break;
2476 case GL_PACK_SKIP_PIXELS:
2477 params[0] = (GLfloat)(ctx->Pack.SkipPixels);
2478 break;
2479 case GL_PACK_SKIP_ROWS:
2480 params[0] = (GLfloat)(ctx->Pack.SkipRows);
2481 break;
2482 case GL_PACK_SWAP_BYTES:
2483 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
2484 break;
2485 case GL_PACK_SKIP_IMAGES_EXT:
2486 params[0] = (GLfloat)(ctx->Pack.SkipImages);
2487 break;
2488 case GL_PACK_IMAGE_HEIGHT_EXT:
2489 params[0] = (GLfloat)(ctx->Pack.ImageHeight);
2490 break;
2491 case GL_PACK_INVERT_MESA:
2492 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
2493 break;
2494 case GL_PERSPECTIVE_CORRECTION_HINT:
2495 params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
2496 break;
2497 case GL_PIXEL_MAP_A_TO_A_SIZE:
2498 params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size);
2499 break;
2500 case GL_PIXEL_MAP_B_TO_B_SIZE:
2501 params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size);
2502 break;
2503 case GL_PIXEL_MAP_G_TO_G_SIZE:
2504 params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size);
2505 break;
2506 case GL_PIXEL_MAP_I_TO_A_SIZE:
2507 params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size);
2508 break;
2509 case GL_PIXEL_MAP_I_TO_B_SIZE:
2510 params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size);
2511 break;
2512 case GL_PIXEL_MAP_I_TO_G_SIZE:
2513 params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size);
2514 break;
2515 case GL_PIXEL_MAP_I_TO_I_SIZE:
2516 params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size);
2517 break;
2518 case GL_PIXEL_MAP_I_TO_R_SIZE:
2519 params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size);
2520 break;
2521 case GL_PIXEL_MAP_R_TO_R_SIZE:
2522 params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size);
2523 break;
2524 case GL_PIXEL_MAP_S_TO_S_SIZE:
2525 params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size);
2526 break;
2527 case GL_POINT_SIZE:
2528 params[0] = ctx->Point.Size;
2529 break;
2530 case GL_POINT_SIZE_GRANULARITY:
2531 params[0] = ctx->Const.PointSizeGranularity;
2532 break;
2533 case GL_POINT_SIZE_RANGE:
2534 params[0] = ctx->Const.MinPointSizeAA;
2535 params[1] = ctx->Const.MaxPointSizeAA;
2536 break;
2537 case GL_ALIASED_POINT_SIZE_RANGE:
2538 params[0] = ctx->Const.MinPointSize;
2539 params[1] = ctx->Const.MaxPointSize;
2540 break;
2541 case GL_POINT_SMOOTH:
2542 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
2543 break;
2544 case GL_POINT_SMOOTH_HINT:
2545 params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
2546 break;
2547 case GL_POINT_SIZE_MIN_EXT:
2548 params[0] = ctx->Point.MinSize;
2549 break;
2550 case GL_POINT_SIZE_MAX_EXT:
2551 params[0] = ctx->Point.MaxSize;
2552 break;
2553 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
2554 params[0] = ctx->Point.Threshold;
2555 break;
2556 case GL_DISTANCE_ATTENUATION_EXT:
2557 params[0] = ctx->Point.Params[0];
2558 params[1] = ctx->Point.Params[1];
2559 params[2] = ctx->Point.Params[2];
2560 break;
2561 case GL_POLYGON_MODE:
2562 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
2563 params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
2564 break;
2565 case GL_POLYGON_OFFSET_BIAS_EXT:
2566 params[0] = ctx->Polygon.OffsetUnits;
2567 break;
2568 case GL_POLYGON_OFFSET_FACTOR:
2569 params[0] = ctx->Polygon.OffsetFactor ;
2570 break;
2571 case GL_POLYGON_OFFSET_UNITS:
2572 params[0] = ctx->Polygon.OffsetUnits ;
2573 break;
2574 case GL_POLYGON_OFFSET_POINT:
2575 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint);
2576 break;
2577 case GL_POLYGON_OFFSET_LINE:
2578 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine);
2579 break;
2580 case GL_POLYGON_OFFSET_FILL:
2581 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill);
2582 break;
2583 case GL_POLYGON_SMOOTH:
2584 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
2585 break;
2586 case GL_POLYGON_SMOOTH_HINT:
2587 params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
2588 break;
2589 case GL_POLYGON_STIPPLE:
2590 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
2591 break;
2592 case GL_PROJECTION_MATRIX:
2593 {
2594 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
2595 params[0] = matrix[0];
2596 params[1] = matrix[1];
2597 params[2] = matrix[2];
2598 params[3] = matrix[3];
2599 params[4] = matrix[4];
2600 params[5] = matrix[5];
2601 params[6] = matrix[6];
2602 params[7] = matrix[7];
2603 params[8] = matrix[8];
2604 params[9] = matrix[9];
2605 params[10] = matrix[10];
2606 params[11] = matrix[11];
2607 params[12] = matrix[12];
2608 params[13] = matrix[13];
2609 params[14] = matrix[14];
2610 params[15] = matrix[15];
2611 }
2612 break;
2613 case GL_PROJECTION_STACK_DEPTH:
2614 params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
2615 break;
2616 case GL_READ_BUFFER:
2617 params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
2618 break;
2619 case GL_RED_BIAS:
2620 params[0] = ctx->Pixel.RedBias;
2621 break;
2622 case GL_RED_BITS:
2623 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits);
2624 break;
2625 case GL_RED_SCALE:
2626 params[0] = ctx->Pixel.RedScale;
2627 break;
2628 case GL_RENDER_MODE:
2629 params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
2630 break;
2631 case GL_RESCALE_NORMAL:
2632 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
2633 break;
2634 case GL_RGBA_MODE:
2635 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.rgbMode);
2636 break;
2637 case GL_SCISSOR_BOX:
2638 params[0] = (GLfloat)(ctx->Scissor.X);
2639 params[1] = (GLfloat)(ctx->Scissor.Y);
2640 params[2] = (GLfloat)(ctx->Scissor.Width);
2641 params[3] = (GLfloat)(ctx->Scissor.Height);
2642 break;
2643 case GL_SCISSOR_TEST:
2644 params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
2645 break;
2646 case GL_SELECTION_BUFFER_SIZE:
2647 params[0] = (GLfloat)(ctx->Select.BufferSize);
2648 break;
2649 case GL_SHADE_MODEL:
2650 params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
2651 break;
2652 case GL_SHARED_TEXTURE_PALETTE_EXT:
2653 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
2654 break;
2655 case GL_STENCIL_BITS:
2656 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
2657 break;
2658 case GL_STENCIL_CLEAR_VALUE:
2659 params[0] = (GLfloat)(ctx->Stencil.Clear);
2660 break;
2661 case GL_STENCIL_FAIL:
2662 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
2663 break;
2664 case GL_STENCIL_FUNC:
2665 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
2666 break;
2667 case GL_STENCIL_PASS_DEPTH_FAIL:
2668 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
2669 break;
2670 case GL_STENCIL_PASS_DEPTH_PASS:
2671 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
2672 break;
2673 case GL_STENCIL_REF:
2674 params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
2675 break;
2676 case GL_STENCIL_TEST:
2677 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
2678 break;
2679 case GL_STENCIL_VALUE_MASK:
2680 params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
2681 break;
2682 case GL_STENCIL_WRITEMASK:
2683 params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
2684 break;
2685 case GL_STEREO:
2686 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
2687 break;
2688 case GL_SUBPIXEL_BITS:
2689 params[0] = (GLfloat)(ctx->Const.SubPixelBits);
2690 break;
2691 case GL_TEXTURE_1D:
2692 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
2693 break;
2694 case GL_TEXTURE_2D:
2695 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
2696 break;
2697 case GL_TEXTURE_3D:
2698 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
2699 break;
2700 case GL_TEXTURE_1D_ARRAY_EXT:
2701 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2702 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
2703 break;
2704 case GL_TEXTURE_2D_ARRAY_EXT:
2705 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2706 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
2707 break;
2708 case GL_TEXTURE_BINDING_1D:
2709 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
2710 break;
2711 case GL_TEXTURE_BINDING_2D:
2712 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
2713 break;
2714 case GL_TEXTURE_BINDING_3D:
2715 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
2716 break;
2717 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
2718 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2719 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
2720 break;
2721 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
2722 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2723 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
2724 break;
2725 case GL_TEXTURE_GEN_S:
2726 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
2727 break;
2728 case GL_TEXTURE_GEN_T:
2729 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
2730 break;
2731 case GL_TEXTURE_GEN_R:
2732 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
2733 break;
2734 case GL_TEXTURE_GEN_Q:
2735 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
2736 break;
2737 case GL_TEXTURE_MATRIX:
2738 {
2739 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
2740 params[0] = matrix[0];
2741 params[1] = matrix[1];
2742 params[2] = matrix[2];
2743 params[3] = matrix[3];
2744 params[4] = matrix[4];
2745 params[5] = matrix[5];
2746 params[6] = matrix[6];
2747 params[7] = matrix[7];
2748 params[8] = matrix[8];
2749 params[9] = matrix[9];
2750 params[10] = matrix[10];
2751 params[11] = matrix[11];
2752 params[12] = matrix[12];
2753 params[13] = matrix[13];
2754 params[14] = matrix[14];
2755 params[15] = matrix[15];
2756 }
2757 break;
2758 case GL_TEXTURE_STACK_DEPTH:
2759 params[0] = (GLfloat)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
2760 break;
2761 case GL_UNPACK_ALIGNMENT:
2762 params[0] = (GLfloat)(ctx->Unpack.Alignment);
2763 break;
2764 case GL_UNPACK_LSB_FIRST:
2765 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
2766 break;
2767 case GL_UNPACK_ROW_LENGTH:
2768 params[0] = (GLfloat)(ctx->Unpack.RowLength);
2769 break;
2770 case GL_UNPACK_SKIP_PIXELS:
2771 params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
2772 break;
2773 case GL_UNPACK_SKIP_ROWS:
2774 params[0] = (GLfloat)(ctx->Unpack.SkipRows);
2775 break;
2776 case GL_UNPACK_SWAP_BYTES:
2777 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
2778 break;
2779 case GL_UNPACK_SKIP_IMAGES_EXT:
2780 params[0] = (GLfloat)(ctx->Unpack.SkipImages);
2781 break;
2782 case GL_UNPACK_IMAGE_HEIGHT_EXT:
2783 params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
2784 break;
2785 case GL_UNPACK_CLIENT_STORAGE_APPLE:
2786 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
2787 break;
2788 case GL_VIEWPORT:
2789 params[0] = (GLfloat)(ctx->Viewport.X);
2790 params[1] = (GLfloat)(ctx->Viewport.Y);
2791 params[2] = (GLfloat)(ctx->Viewport.Width);
2792 params[3] = (GLfloat)(ctx->Viewport.Height);
2793 break;
2794 case GL_ZOOM_X:
2795 params[0] = ctx->Pixel.ZoomX;
2796 break;
2797 case GL_ZOOM_Y:
2798 params[0] = ctx->Pixel.ZoomY;
2799 break;
2800 case GL_VERTEX_ARRAY:
2801 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
2802 break;
2803 case GL_VERTEX_ARRAY_SIZE:
2804 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
2805 break;
2806 case GL_VERTEX_ARRAY_TYPE:
2807 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
2808 break;
2809 case GL_VERTEX_ARRAY_STRIDE:
2810 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
2811 break;
2812 case GL_VERTEX_ARRAY_COUNT_EXT:
2813 params[0] = (GLfloat)(0);
2814 break;
2815 case GL_NORMAL_ARRAY:
2816 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
2817 break;
2818 case GL_NORMAL_ARRAY_TYPE:
2819 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
2820 break;
2821 case GL_NORMAL_ARRAY_STRIDE:
2822 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
2823 break;
2824 case GL_NORMAL_ARRAY_COUNT_EXT:
2825 params[0] = (GLfloat)(0);
2826 break;
2827 case GL_COLOR_ARRAY:
2828 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
2829 break;
2830 case GL_COLOR_ARRAY_SIZE:
2831 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
2832 break;
2833 case GL_COLOR_ARRAY_TYPE:
2834 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
2835 break;
2836 case GL_COLOR_ARRAY_STRIDE:
2837 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
2838 break;
2839 case GL_COLOR_ARRAY_COUNT_EXT:
2840 params[0] = (GLfloat)(0);
2841 break;
2842 case GL_INDEX_ARRAY:
2843 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
2844 break;
2845 case GL_INDEX_ARRAY_TYPE:
2846 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
2847 break;
2848 case GL_INDEX_ARRAY_STRIDE:
2849 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
2850 break;
2851 case GL_INDEX_ARRAY_COUNT_EXT:
2852 params[0] = (GLfloat)(0);
2853 break;
2854 case GL_TEXTURE_COORD_ARRAY:
2855 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
2856 break;
2857 case GL_TEXTURE_COORD_ARRAY_SIZE:
2858 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
2859 break;
2860 case GL_TEXTURE_COORD_ARRAY_TYPE:
2861 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
2862 break;
2863 case GL_TEXTURE_COORD_ARRAY_STRIDE:
2864 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
2865 break;
2866 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
2867 params[0] = (GLfloat)(0);
2868 break;
2869 case GL_EDGE_FLAG_ARRAY:
2870 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
2871 break;
2872 case GL_EDGE_FLAG_ARRAY_STRIDE:
2873 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
2874 break;
2875 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
2876 params[0] = (GLfloat)(0);
2877 break;
2878 case GL_MAX_TEXTURE_UNITS_ARB:
2879 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2880 params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
2881 break;
2882 case GL_ACTIVE_TEXTURE_ARB:
2883 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2884 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
2885 break;
2886 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
2887 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2888 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
2889 break;
2890 case GL_TEXTURE_CUBE_MAP_ARB:
2891 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2892 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
2893 break;
2894 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
2895 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2896 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
2897 break;
2898 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
2899 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
2900 params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
2901 break;
2902 case GL_TEXTURE_COMPRESSION_HINT_ARB:
2903 params[0] = (GLfloat)(ctx->Hint.TextureCompression);
2904 break;
2905 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
2906 params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
2907 break;
2908 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
2909 {
2910 GLint formats[100];
2911 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
2912 ASSERT(n <= 100);
2913 for (i = 0; i < n; i++)
2914 params[i] = ENUM_TO_FLOAT(formats[i]);
2915 }
2916 break;
2917 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
2918 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
2919 params[0] = (GLfloat)(ctx->Array.LockFirst);
2920 break;
2921 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
2922 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
2923 params[0] = (GLfloat)(ctx->Array.LockCount);
2924 break;
2925 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
2926 {
2927 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
2928 params[0] = matrix[0];
2929 params[1] = matrix[4];
2930 params[2] = matrix[8];
2931 params[3] = matrix[12];
2932 params[4] = matrix[1];
2933 params[5] = matrix[5];
2934 params[6] = matrix[9];
2935 params[7] = matrix[13];
2936 params[8] = matrix[2];
2937 params[9] = matrix[6];
2938 params[10] = matrix[10];
2939 params[11] = matrix[14];
2940 params[12] = matrix[3];
2941 params[13] = matrix[7];
2942 params[14] = matrix[11];
2943 params[15] = matrix[15];
2944 }
2945 break;
2946 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
2947 {
2948 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
2949 params[0] = matrix[0];
2950 params[1] = matrix[4];
2951 params[2] = matrix[8];
2952 params[3] = matrix[12];
2953 params[4] = matrix[1];
2954 params[5] = matrix[5];
2955 params[6] = matrix[9];
2956 params[7] = matrix[13];
2957 params[8] = matrix[2];
2958 params[9] = matrix[6];
2959 params[10] = matrix[10];
2960 params[11] = matrix[14];
2961 params[12] = matrix[3];
2962 params[13] = matrix[7];
2963 params[14] = matrix[11];
2964 params[15] = matrix[15];
2965 }
2966 break;
2967 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
2968 {
2969 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
2970 params[0] = matrix[0];
2971 params[1] = matrix[4];
2972 params[2] = matrix[8];
2973 params[3] = matrix[12];
2974 params[4] = matrix[1];
2975 params[5] = matrix[5];
2976 params[6] = matrix[9];
2977 params[7] = matrix[13];
2978 params[8] = matrix[2];
2979 params[9] = matrix[6];
2980 params[10] = matrix[10];
2981 params[11] = matrix[14];
2982 params[12] = matrix[3];
2983 params[13] = matrix[7];
2984 params[14] = matrix[11];
2985 params[15] = matrix[15];
2986 }
2987 break;
2988 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
2989 {
2990 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
2991 params[0] = matrix[0];
2992 params[1] = matrix[4];
2993 params[2] = matrix[8];
2994 params[3] = matrix[12];
2995 params[4] = matrix[1];
2996 params[5] = matrix[5];
2997 params[6] = matrix[9];
2998 params[7] = matrix[13];
2999 params[8] = matrix[2];
3000 params[9] = matrix[6];
3001 params[10] = matrix[10];
3002 params[11] = matrix[14];
3003 params[12] = matrix[3];
3004 params[13] = matrix[7];
3005 params[14] = matrix[11];
3006 params[15] = matrix[15];
3007 }
3008 break;
3009 case GL_COLOR_MATRIX_SGI:
3010 {
3011 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
3012 params[0] = matrix[0];
3013 params[1] = matrix[1];
3014 params[2] = matrix[2];
3015 params[3] = matrix[3];
3016 params[4] = matrix[4];
3017 params[5] = matrix[5];
3018 params[6] = matrix[6];
3019 params[7] = matrix[7];
3020 params[8] = matrix[8];
3021 params[9] = matrix[9];
3022 params[10] = matrix[10];
3023 params[11] = matrix[11];
3024 params[12] = matrix[12];
3025 params[13] = matrix[13];
3026 params[14] = matrix[14];
3027 params[15] = matrix[15];
3028 }
3029 break;
3030 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
3031 params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
3032 break;
3033 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
3034 params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
3035 break;
3036 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
3037 params[0] = ctx->Pixel.PostColorMatrixScale[0];
3038 break;
3039 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
3040 params[0] = ctx->Pixel.PostColorMatrixScale[1];
3041 break;
3042 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
3043 params[0] = ctx->Pixel.PostColorMatrixScale[2];
3044 break;
3045 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
3046 params[0] = ctx->Pixel.PostColorMatrixScale[3];
3047 break;
3048 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
3049 params[0] = ctx->Pixel.PostColorMatrixBias[0];
3050 break;
3051 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
3052 params[0] = ctx->Pixel.PostColorMatrixBias[1];
3053 break;
3054 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
3055 params[0] = ctx->Pixel.PostColorMatrixBias[2];
3056 break;
3057 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
3058 params[0] = ctx->Pixel.PostColorMatrixBias[3];
3059 break;
3060 case GL_CONVOLUTION_1D_EXT:
3061 CHECK_EXT1(EXT_convolution, "GetFloatv");
3062 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
3063 break;
3064 case GL_CONVOLUTION_2D_EXT:
3065 CHECK_EXT1(EXT_convolution, "GetFloatv");
3066 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
3067 break;
3068 case GL_SEPARABLE_2D_EXT:
3069 CHECK_EXT1(EXT_convolution, "GetFloatv");
3070 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
3071 break;
3072 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
3073 CHECK_EXT1(EXT_convolution, "GetFloatv");
3074 params[0] = ctx->Pixel.PostConvolutionScale[0];
3075 break;
3076 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
3077 CHECK_EXT1(EXT_convolution, "GetFloatv");
3078 params[0] = ctx->Pixel.PostConvolutionScale[1];
3079 break;
3080 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
3081 CHECK_EXT1(EXT_convolution, "GetFloatv");
3082 params[0] = ctx->Pixel.PostConvolutionScale[2];
3083 break;
3084 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
3085 CHECK_EXT1(EXT_convolution, "GetFloatv");
3086 params[0] = ctx->Pixel.PostConvolutionScale[3];
3087 break;
3088 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
3089 CHECK_EXT1(EXT_convolution, "GetFloatv");
3090 params[0] = ctx->Pixel.PostConvolutionBias[0];
3091 break;
3092 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
3093 CHECK_EXT1(EXT_convolution, "GetFloatv");
3094 params[0] = ctx->Pixel.PostConvolutionBias[1];
3095 break;
3096 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
3097 CHECK_EXT1(EXT_convolution, "GetFloatv");
3098 params[0] = ctx->Pixel.PostConvolutionBias[2];
3099 break;
3100 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
3101 CHECK_EXT1(EXT_convolution, "GetFloatv");
3102 params[0] = ctx->Pixel.PostConvolutionBias[3];
3103 break;
3104 case GL_HISTOGRAM:
3105 CHECK_EXT1(EXT_histogram, "GetFloatv");
3106 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
3107 break;
3108 case GL_MINMAX:
3109 CHECK_EXT1(EXT_histogram, "GetFloatv");
3110 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
3111 break;
3112 case GL_COLOR_TABLE_SGI:
3113 CHECK_EXT1(SGI_color_table, "GetFloatv");
3114 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
3115 break;
3116 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
3117 CHECK_EXT1(SGI_color_table, "GetFloatv");
3118 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
3119 break;
3120 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
3121 CHECK_EXT1(SGI_color_table, "GetFloatv");
3122 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
3123 break;
3124 case GL_TEXTURE_COLOR_TABLE_SGI:
3125 CHECK_EXT1(SGI_texture_color_table, "GetFloatv");
3126 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
3127 break;
3128 case GL_COLOR_SUM_EXT:
3129 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv");
3130 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
3131 break;
3132 case GL_CURRENT_SECONDARY_COLOR_EXT:
3133 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3134 {
3135 FLUSH_CURRENT(ctx, 0);
3136 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
3137 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
3138 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
3139 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
3140 }
3141 break;
3142 case GL_SECONDARY_COLOR_ARRAY_EXT:
3143 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3144 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
3145 break;
3146 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
3147 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3148 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
3149 break;
3150 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
3151 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3152 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
3153 break;
3154 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
3155 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3156 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
3157 break;
3158 case GL_CURRENT_FOG_COORDINATE_EXT:
3159 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3160 {
3161 FLUSH_CURRENT(ctx, 0);
3162 params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
3163 }
3164 break;
3165 case GL_FOG_COORDINATE_ARRAY_EXT:
3166 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3167 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
3168 break;
3169 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
3170 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3171 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
3172 break;
3173 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
3174 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3175 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
3176 break;
3177 case GL_FOG_COORDINATE_SOURCE_EXT:
3178 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3179 params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
3180 break;
3181 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
3182 CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv");
3183 params[0] = ctx->Const.MaxTextureLodBias;
3184 break;
3185 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
3186 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv");
3187 params[0] = ctx->Const.MaxTextureMaxAnisotropy;
3188 break;
3189 case GL_MULTISAMPLE_ARB:
3190 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
3191 break;
3192 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
3193 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
3194 break;
3195 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
3196 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
3197 break;
3198 case GL_SAMPLE_COVERAGE_ARB:
3199 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
3200 break;
3201 case GL_SAMPLE_COVERAGE_VALUE_ARB:
3202 params[0] = ctx->Multisample.SampleCoverageValue;
3203 break;
3204 case GL_SAMPLE_COVERAGE_INVERT_ARB:
3205 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
3206 break;
3207 case GL_SAMPLE_BUFFERS_ARB:
3208 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
3209 break;
3210 case GL_SAMPLES_ARB:
3211 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
3212 break;
3213 case GL_RASTER_POSITION_UNCLIPPED_IBM:
3214 CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv");
3215 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
3216 break;
3217 case GL_POINT_SPRITE_NV:
3218 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
3219 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
3220 break;
3221 case GL_POINT_SPRITE_R_MODE_NV:
3222 CHECK_EXT1(NV_point_sprite, "GetFloatv");
3223 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
3224 break;
3225 case GL_POINT_SPRITE_COORD_ORIGIN:
3226 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
3227 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
3228 break;
3229 case GL_GENERATE_MIPMAP_HINT_SGIS:
3230 CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv");
3231 params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
3232 break;
3233 case GL_VERTEX_PROGRAM_BINDING_NV:
3234 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3235 params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
3236 break;
3237 case GL_VERTEX_ATTRIB_ARRAY0_NV:
3238 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3239 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
3240 break;
3241 case GL_VERTEX_ATTRIB_ARRAY1_NV:
3242 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3243 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
3244 break;
3245 case GL_VERTEX_ATTRIB_ARRAY2_NV:
3246 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3247 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
3248 break;
3249 case GL_VERTEX_ATTRIB_ARRAY3_NV:
3250 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3251 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
3252 break;
3253 case GL_VERTEX_ATTRIB_ARRAY4_NV:
3254 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3255 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
3256 break;
3257 case GL_VERTEX_ATTRIB_ARRAY5_NV:
3258 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3259 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
3260 break;
3261 case GL_VERTEX_ATTRIB_ARRAY6_NV:
3262 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3263 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
3264 break;
3265 case GL_VERTEX_ATTRIB_ARRAY7_NV:
3266 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3267 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
3268 break;
3269 case GL_VERTEX_ATTRIB_ARRAY8_NV:
3270 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3271 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
3272 break;
3273 case GL_VERTEX_ATTRIB_ARRAY9_NV:
3274 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3275 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
3276 break;
3277 case GL_VERTEX_ATTRIB_ARRAY10_NV:
3278 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3279 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
3280 break;
3281 case GL_VERTEX_ATTRIB_ARRAY11_NV:
3282 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3283 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
3284 break;
3285 case GL_VERTEX_ATTRIB_ARRAY12_NV:
3286 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3287 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
3288 break;
3289 case GL_VERTEX_ATTRIB_ARRAY13_NV:
3290 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3291 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
3292 break;
3293 case GL_VERTEX_ATTRIB_ARRAY14_NV:
3294 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3295 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
3296 break;
3297 case GL_VERTEX_ATTRIB_ARRAY15_NV:
3298 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3299 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
3300 break;
3301 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
3302 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3303 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
3304 break;
3305 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
3306 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3307 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
3308 break;
3309 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
3310 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3311 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
3312 break;
3313 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
3314 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3315 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
3316 break;
3317 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
3318 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3319 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
3320 break;
3321 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
3322 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3323 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
3324 break;
3325 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
3326 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3327 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
3328 break;
3329 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
3330 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3331 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
3332 break;
3333 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
3334 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3335 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
3336 break;
3337 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
3338 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3339 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
3340 break;
3341 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
3342 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3343 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
3344 break;
3345 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
3346 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3347 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
3348 break;
3349 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
3350 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3351 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
3352 break;
3353 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
3354 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3355 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
3356 break;
3357 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
3358 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3359 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
3360 break;
3361 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
3362 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3363 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
3364 break;
3365 case GL_FRAGMENT_PROGRAM_NV:
3366 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3367 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3368 break;
3369 case GL_FRAGMENT_PROGRAM_BINDING_NV:
3370 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3371 params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
3372 break;
3373 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
3374 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3375 params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
3376 break;
3377 case GL_TEXTURE_RECTANGLE_NV:
3378 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3379 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
3380 break;
3381 case GL_TEXTURE_BINDING_RECTANGLE_NV:
3382 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3383 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
3384 break;
3385 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
3386 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3387 params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
3388 break;
3389 case GL_STENCIL_TEST_TWO_SIDE_EXT:
3390 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
3391 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
3392 break;
3393 case GL_ACTIVE_STENCIL_FACE_EXT:
3394 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
3395 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
3396 break;
3397 case GL_MAX_SHININESS_NV:
3398 CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
3399 params[0] = ctx->Const.MaxShininess;
3400 break;
3401 case GL_MAX_SPOT_EXPONENT_NV:
3402 CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
3403 params[0] = ctx->Const.MaxSpotExponent;
3404 break;
3405 case GL_ARRAY_BUFFER_BINDING_ARB:
3406 params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
3407 break;
3408 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
3409 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
3410 break;
3411 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
3412 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
3413 break;
3414 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
3415 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
3416 break;
3417 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
3418 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
3419 break;
3420 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
3421 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
3422 break;
3423 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
3424 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
3425 break;
3426 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
3427 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
3428 break;
3429 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
3430 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
3431 break;
3432 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
3433 params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
3434 break;
3435 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
3436 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
3437 params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
3438 break;
3439 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
3440 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
3441 params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
3442 break;
3443 case GL_VERTEX_PROGRAM_ARB:
3444 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3445 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
3446 break;
3447 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
3448 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3449 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
3450 break;
3451 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
3452 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3453 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
3454 break;
3455 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
3456 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3457 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
3458 break;
3459 case GL_MAX_PROGRAM_MATRICES_ARB:
3460 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3461 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
3462 break;
3463 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
3464 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3465 params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
3466 break;
3467 case GL_CURRENT_MATRIX_ARB:
3468 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv");
3469 {
3470 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3471 params[0] = matrix[0];
3472 params[1] = matrix[1];
3473 params[2] = matrix[2];
3474 params[3] = matrix[3];
3475 params[4] = matrix[4];
3476 params[5] = matrix[5];
3477 params[6] = matrix[6];
3478 params[7] = matrix[7];
3479 params[8] = matrix[8];
3480 params[9] = matrix[9];
3481 params[10] = matrix[10];
3482 params[11] = matrix[11];
3483 params[12] = matrix[12];
3484 params[13] = matrix[13];
3485 params[14] = matrix[14];
3486 params[15] = matrix[15];
3487 }
3488 break;
3489 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
3490 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv");
3491 {
3492 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3493 params[0] = matrix[0];
3494 params[1] = matrix[4];
3495 params[2] = matrix[8];
3496 params[3] = matrix[12];
3497 params[4] = matrix[1];
3498 params[5] = matrix[5];
3499 params[6] = matrix[9];
3500 params[7] = matrix[13];
3501 params[8] = matrix[2];
3502 params[9] = matrix[6];
3503 params[10] = matrix[10];
3504 params[11] = matrix[14];
3505 params[12] = matrix[3];
3506 params[13] = matrix[7];
3507 params[14] = matrix[11];
3508 params[15] = matrix[15];
3509 }
3510 break;
3511 case GL_MAX_VERTEX_ATTRIBS_ARB:
3512 CHECK_EXT1(ARB_vertex_program, "GetFloatv");
3513 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
3514 break;
3515 case GL_PROGRAM_ERROR_POSITION_ARB:
3516 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv");
3517 params[0] = (GLfloat)(ctx->Program.ErrorPos);
3518 break;
3519 case GL_FRAGMENT_PROGRAM_ARB:
3520 CHECK_EXT1(ARB_fragment_program, "GetFloatv");
3521 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3522 break;
3523 case GL_MAX_TEXTURE_COORDS_ARB:
3524 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
3525 params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
3526 break;
3527 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
3528 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
3529 params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
3530 break;
3531 case GL_DEPTH_BOUNDS_TEST_EXT:
3532 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
3533 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
3534 break;
3535 case GL_DEPTH_BOUNDS_EXT:
3536 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
3537 params[0] = ctx->Depth.BoundsMin;
3538 params[1] = ctx->Depth.BoundsMax;
3539 break;
3540 case GL_MAX_DRAW_BUFFERS_ARB:
3541 params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
3542 break;
3543 case GL_DRAW_BUFFER0_ARB:
3544 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
3545 break;
3546 case GL_DRAW_BUFFER1_ARB:
3547 {
3548 GLenum buffer;
3549 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3550 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3551 return;
3552 }
3553 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
3554 params[0] = ENUM_TO_FLOAT(buffer);
3555 }
3556 break;
3557 case GL_DRAW_BUFFER2_ARB:
3558 {
3559 GLenum buffer;
3560 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3561 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3562 return;
3563 }
3564 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
3565 params[0] = ENUM_TO_FLOAT(buffer);
3566 }
3567 break;
3568 case GL_DRAW_BUFFER3_ARB:
3569 {
3570 GLenum buffer;
3571 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3572 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3573 return;
3574 }
3575 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
3576 params[0] = ENUM_TO_FLOAT(buffer);
3577 }
3578 break;
3579 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
3580 CHECK_EXT1(OES_read_format, "GetFloatv");
3581 params[0] = (GLfloat)(ctx->Const.ColorReadType);
3582 break;
3583 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
3584 CHECK_EXT1(OES_read_format, "GetFloatv");
3585 params[0] = (GLfloat)(ctx->Const.ColorReadFormat);
3586 break;
3587 case GL_NUM_FRAGMENT_REGISTERS_ATI:
3588 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3589 params[0] = (GLfloat)(6);
3590 break;
3591 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
3592 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3593 params[0] = (GLfloat)(8);
3594 break;
3595 case GL_NUM_PASSES_ATI:
3596 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3597 params[0] = (GLfloat)(2);
3598 break;
3599 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
3600 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3601 params[0] = (GLfloat)(8);
3602 break;
3603 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
3604 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3605 params[0] = (GLfloat)(16);
3606 break;
3607 case GL_COLOR_ALPHA_PAIRING_ATI:
3608 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3609 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
3610 break;
3611 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
3612 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3613 params[0] = (GLfloat)(3);
3614 break;
3615 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
3616 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3617 params[0] = (GLfloat)(3);
3618 break;
3619 case GL_STENCIL_BACK_FUNC:
3620 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
3621 break;
3622 case GL_STENCIL_BACK_VALUE_MASK:
3623 params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
3624 break;
3625 case GL_STENCIL_BACK_WRITEMASK:
3626 params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]);
3627 break;
3628 case GL_STENCIL_BACK_REF:
3629 params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
3630 break;
3631 case GL_STENCIL_BACK_FAIL:
3632 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
3633 break;
3634 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
3635 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
3636 break;
3637 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
3638 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
3639 break;
3640 case GL_FRAMEBUFFER_BINDING_EXT:
3641 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3642 params[0] = (GLfloat)(ctx->DrawBuffer->Name);
3643 break;
3644 case GL_RENDERBUFFER_BINDING_EXT:
3645 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3646 params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
3647 break;
3648 case GL_MAX_COLOR_ATTACHMENTS_EXT:
3649 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3650 params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
3651 break;
3652 case GL_MAX_RENDERBUFFER_SIZE_EXT:
3653 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3654 params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
3655 break;
3656 case GL_READ_FRAMEBUFFER_BINDING_EXT:
3657 CHECK_EXT1(EXT_framebuffer_blit, "GetFloatv");
3658 params[0] = (GLfloat)(ctx->ReadBuffer->Name);
3659 break;
3660 case GL_PROVOKING_VERTEX_EXT:
3661 CHECK_EXT1(EXT_provoking_vertex, "GetFloatv");
3662 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ProvokingVertex);
3663 break;
3664 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
3665 CHECK_EXT1(EXT_provoking_vertex, "GetFloatv");
3666 params[0] = BOOLEAN_TO_FLOAT(ctx->Const.QuadsFollowProvokingVertexConvention);
3667 break;
3668 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
3669 CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
3670 params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents);
3671 break;
3672 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
3673 CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
3674 params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
3675 break;
3676 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
3677 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3678 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents);
3679 break;
3680 case GL_MAX_VARYING_FLOATS_ARB:
3681 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3682 params[0] = (GLfloat)(ctx->Const.MaxVarying * 4);
3683 break;
3684 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
3685 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3686 params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits);
3687 break;
3688 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
3689 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3690 params[0] = (GLfloat)(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
3691 break;
3692 case GL_CURRENT_PROGRAM:
3693 CHECK_EXT1(ARB_shader_objects, "GetFloatv");
3694 params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
3695 break;
3696 case GL_MAX_SAMPLES:
3697 CHECK_EXT1(ARB_framebuffer_object, "GetFloatv");
3698 params[0] = (GLfloat)(ctx->Const.MaxSamples);
3699 break;
3700 case GL_VERTEX_ARRAY_BINDING_APPLE:
3701 CHECK_EXT1(APPLE_vertex_array_object, "GetFloatv");
3702 params[0] = (GLfloat)(ctx->Array.ArrayObj->Name);
3703 break;
3704 default:
3705 _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
3706 }
3707 }
3708
3709 void GLAPIENTRY
3710 _mesa_GetIntegerv( GLenum pname, GLint *params )
3711 {
3712 GET_CURRENT_CONTEXT(ctx);
3713 ASSERT_OUTSIDE_BEGIN_END(ctx);
3714
3715 if (!params)
3716 return;
3717
3718 if (ctx->NewState)
3719 _mesa_update_state(ctx);
3720
3721 if (ctx->Driver.GetIntegerv &&
3722 ctx->Driver.GetIntegerv(ctx, pname, params))
3723 return;
3724
3725 switch (pname) {
3726 case GL_ACCUM_RED_BITS:
3727 params[0] = ctx->DrawBuffer->Visual.accumRedBits;
3728 break;
3729 case GL_ACCUM_GREEN_BITS:
3730 params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
3731 break;
3732 case GL_ACCUM_BLUE_BITS:
3733 params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
3734 break;
3735 case GL_ACCUM_ALPHA_BITS:
3736 params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
3737 break;
3738 case GL_ACCUM_CLEAR_VALUE:
3739 params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
3740 params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
3741 params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
3742 params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
3743 break;
3744 case GL_ALPHA_BIAS:
3745 params[0] = IROUND(ctx->Pixel.AlphaBias);
3746 break;
3747 case GL_ALPHA_BITS:
3748 params[0] = ctx->DrawBuffer->Visual.alphaBits;
3749 break;
3750 case GL_ALPHA_SCALE:
3751 params[0] = IROUND(ctx->Pixel.AlphaScale);
3752 break;
3753 case GL_ALPHA_TEST:
3754 params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
3755 break;
3756 case GL_ALPHA_TEST_FUNC:
3757 params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
3758 break;
3759 case GL_ALPHA_TEST_REF:
3760 params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
3761 break;
3762 case GL_ATTRIB_STACK_DEPTH:
3763 params[0] = ctx->AttribStackDepth;
3764 break;
3765 case GL_AUTO_NORMAL:
3766 params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
3767 break;
3768 case GL_AUX_BUFFERS:
3769 params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
3770 break;
3771 case GL_BLEND:
3772 params[0] = BOOLEAN_TO_INT(ctx->Color.BlendEnabled);
3773 break;
3774 case GL_BLEND_DST:
3775 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3776 break;
3777 case GL_BLEND_SRC:
3778 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3779 break;
3780 case GL_BLEND_SRC_RGB_EXT:
3781 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3782 break;
3783 case GL_BLEND_DST_RGB_EXT:
3784 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3785 break;
3786 case GL_BLEND_SRC_ALPHA_EXT:
3787 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
3788 break;
3789 case GL_BLEND_DST_ALPHA_EXT:
3790 params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
3791 break;
3792 case GL_BLEND_EQUATION:
3793 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
3794 break;
3795 case GL_BLEND_EQUATION_ALPHA_EXT:
3796 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
3797 break;
3798 case GL_BLEND_COLOR_EXT:
3799 params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
3800 params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
3801 params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
3802 params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
3803 break;
3804 case GL_BLUE_BIAS:
3805 params[0] = IROUND(ctx->Pixel.BlueBias);
3806 break;
3807 case GL_BLUE_BITS:
3808 params[0] = ctx->DrawBuffer->Visual.blueBits;
3809 break;
3810 case GL_BLUE_SCALE:
3811 params[0] = IROUND(ctx->Pixel.BlueScale);
3812 break;
3813 case GL_CLIENT_ATTRIB_STACK_DEPTH:
3814 params[0] = ctx->ClientAttribStackDepth;
3815 break;
3816 case GL_CLIP_PLANE0:
3817 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
3818 break;
3819 case GL_CLIP_PLANE1:
3820 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
3821 break;
3822 case GL_CLIP_PLANE2:
3823 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
3824 break;
3825 case GL_CLIP_PLANE3:
3826 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
3827 break;
3828 case GL_CLIP_PLANE4:
3829 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
3830 break;
3831 case GL_CLIP_PLANE5:
3832 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
3833 break;
3834 case GL_COLOR_CLEAR_VALUE:
3835 params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
3836 params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
3837 params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
3838 params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
3839 break;
3840 case GL_COLOR_MATERIAL:
3841 params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
3842 break;
3843 case GL_COLOR_MATERIAL_FACE:
3844 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
3845 break;
3846 case GL_COLOR_MATERIAL_PARAMETER:
3847 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
3848 break;
3849 case GL_COLOR_WRITEMASK:
3850 params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0;
3851 params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0;
3852 params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0;
3853 params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0;
3854 break;
3855 case GL_CULL_FACE:
3856 params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
3857 break;
3858 case GL_CULL_FACE_MODE:
3859 params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
3860 break;
3861 case GL_CURRENT_COLOR:
3862 {
3863 FLUSH_CURRENT(ctx, 0);
3864 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
3865 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
3866 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
3867 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
3868 }
3869 break;
3870 case GL_CURRENT_INDEX:
3871 {
3872 FLUSH_CURRENT(ctx, 0);
3873 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
3874 }
3875 break;
3876 case GL_CURRENT_NORMAL:
3877 {
3878 FLUSH_CURRENT(ctx, 0);
3879 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
3880 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
3881 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
3882 }
3883 break;
3884 case GL_CURRENT_RASTER_COLOR:
3885 params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
3886 params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
3887 params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
3888 params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
3889 break;
3890 case GL_CURRENT_RASTER_DISTANCE:
3891 params[0] = IROUND(ctx->Current.RasterDistance);
3892 break;
3893 case GL_CURRENT_RASTER_INDEX:
3894 params[0] = IROUND(ctx->Current.RasterIndex);
3895 break;
3896 case GL_CURRENT_RASTER_POSITION:
3897 params[0] = IROUND(ctx->Current.RasterPos[0]);
3898 params[1] = IROUND(ctx->Current.RasterPos[1]);
3899 params[2] = IROUND(ctx->Current.RasterPos[2]);
3900 params[3] = IROUND(ctx->Current.RasterPos[3]);
3901 break;
3902 case GL_CURRENT_RASTER_SECONDARY_COLOR:
3903 params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
3904 params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
3905 params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
3906 params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
3907 break;
3908 case GL_CURRENT_RASTER_TEXTURE_COORDS:
3909 {
3910 const GLuint texUnit = ctx->Texture.CurrentUnit;
3911 params[0] = IROUND(ctx->Current.RasterTexCoords[texUnit][0]);
3912 params[1] = IROUND(ctx->Current.RasterTexCoords[texUnit][1]);
3913 params[2] = IROUND(ctx->Current.RasterTexCoords[texUnit][2]);
3914 params[3] = IROUND(ctx->Current.RasterTexCoords[texUnit][3]);
3915 }
3916 break;
3917 case GL_CURRENT_RASTER_POSITION_VALID:
3918 params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
3919 break;
3920 case GL_CURRENT_TEXTURE_COORDS:
3921 {
3922 const GLuint texUnit = ctx->Texture.CurrentUnit;
3923 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
3924 params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
3925 params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
3926 params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
3927 }
3928 break;
3929 case GL_DEPTH_BIAS:
3930 params[0] = IROUND(ctx->Pixel.DepthBias);
3931 break;
3932 case GL_DEPTH_BITS:
3933 params[0] = ctx->DrawBuffer->Visual.depthBits;
3934 break;
3935 case GL_DEPTH_CLEAR_VALUE:
3936 params[0] = FLOAT_TO_INT(((GLfloat) ctx->Depth.Clear));
3937 break;
3938 case GL_DEPTH_FUNC:
3939 params[0] = ENUM_TO_INT(ctx->Depth.Func);
3940 break;
3941 case GL_DEPTH_RANGE:
3942 params[0] = FLOAT_TO_INT(ctx->Viewport.Near);
3943 params[1] = FLOAT_TO_INT(ctx->Viewport.Far);
3944 break;
3945 case GL_DEPTH_SCALE:
3946 params[0] = IROUND(ctx->Pixel.DepthScale);
3947 break;
3948 case GL_DEPTH_TEST:
3949 params[0] = BOOLEAN_TO_INT(ctx->Depth.Test);
3950 break;
3951 case GL_DEPTH_WRITEMASK:
3952 params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask);
3953 break;
3954 case GL_DITHER:
3955 params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag);
3956 break;
3957 case GL_DOUBLEBUFFER:
3958 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode);
3959 break;
3960 case GL_DRAW_BUFFER:
3961 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
3962 break;
3963 case GL_EDGE_FLAG:
3964 {
3965 FLUSH_CURRENT(ctx, 0);
3966 params[0] = BOOLEAN_TO_INT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
3967 }
3968 break;
3969 case GL_FEEDBACK_BUFFER_SIZE:
3970 params[0] = ctx->Feedback.BufferSize;
3971 break;
3972 case GL_FEEDBACK_BUFFER_TYPE:
3973 params[0] = ENUM_TO_INT(ctx->Feedback.Type);
3974 break;
3975 case GL_FOG:
3976 params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled);
3977 break;
3978 case GL_FOG_COLOR:
3979 params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]);
3980 params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]);
3981 params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]);
3982 params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]);
3983 break;
3984 case GL_FOG_DENSITY:
3985 params[0] = IROUND(ctx->Fog.Density);
3986 break;
3987 case GL_FOG_END:
3988 params[0] = IROUND(ctx->Fog.End);
3989 break;
3990 case GL_FOG_HINT:
3991 params[0] = ENUM_TO_INT(ctx->Hint.Fog);
3992 break;
3993 case GL_FOG_INDEX:
3994 params[0] = IROUND(ctx->Fog.Index);
3995 break;
3996 case GL_FOG_MODE:
3997 params[0] = ENUM_TO_INT(ctx->Fog.Mode);
3998 break;
3999 case GL_FOG_START:
4000 params[0] = IROUND(ctx->Fog.Start);
4001 break;
4002 case GL_FRONT_FACE:
4003 params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace);
4004 break;
4005 case GL_GREEN_BIAS:
4006 params[0] = IROUND(ctx->Pixel.GreenBias);
4007 break;
4008 case GL_GREEN_BITS:
4009 params[0] = ctx->DrawBuffer->Visual.greenBits;
4010 break;
4011 case GL_GREEN_SCALE:
4012 params[0] = IROUND(ctx->Pixel.GreenScale);
4013 break;
4014 case GL_INDEX_BITS:
4015 params[0] = ctx->DrawBuffer->Visual.indexBits;
4016 break;
4017 case GL_INDEX_CLEAR_VALUE:
4018 params[0] = ctx->Color.ClearIndex;
4019 break;
4020 case GL_INDEX_MODE:
4021 params[0] = BOOLEAN_TO_INT(!ctx->DrawBuffer->Visual.rgbMode);
4022 break;
4023 case GL_INDEX_OFFSET:
4024 params[0] = ctx->Pixel.IndexOffset;
4025 break;
4026 case GL_INDEX_SHIFT:
4027 params[0] = ctx->Pixel.IndexShift;
4028 break;
4029 case GL_INDEX_WRITEMASK:
4030 params[0] = ctx->Color.IndexMask;
4031 break;
4032 case GL_LIGHT0:
4033 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled);
4034 break;
4035 case GL_LIGHT1:
4036 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled);
4037 break;
4038 case GL_LIGHT2:
4039 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled);
4040 break;
4041 case GL_LIGHT3:
4042 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled);
4043 break;
4044 case GL_LIGHT4:
4045 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled);
4046 break;
4047 case GL_LIGHT5:
4048 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled);
4049 break;
4050 case GL_LIGHT6:
4051 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled);
4052 break;
4053 case GL_LIGHT7:
4054 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled);
4055 break;
4056 case GL_LIGHTING:
4057 params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled);
4058 break;
4059 case GL_LIGHT_MODEL_AMBIENT:
4060 params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]);
4061 params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]);
4062 params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]);
4063 params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]);
4064 break;
4065 case GL_LIGHT_MODEL_COLOR_CONTROL:
4066 params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl);
4067 break;
4068 case GL_LIGHT_MODEL_LOCAL_VIEWER:
4069 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer);
4070 break;
4071 case GL_LIGHT_MODEL_TWO_SIDE:
4072 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide);
4073 break;
4074 case GL_LINE_SMOOTH:
4075 params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag);
4076 break;
4077 case GL_LINE_SMOOTH_HINT:
4078 params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth);
4079 break;
4080 case GL_LINE_STIPPLE:
4081 params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag);
4082 break;
4083 case GL_LINE_STIPPLE_PATTERN:
4084 params[0] = ctx->Line.StipplePattern;
4085 break;
4086 case GL_LINE_STIPPLE_REPEAT:
4087 params[0] = ctx->Line.StippleFactor;
4088 break;
4089 case GL_LINE_WIDTH:
4090 params[0] = IROUND(ctx->Line.Width);
4091 break;
4092 case GL_LINE_WIDTH_GRANULARITY:
4093 params[0] = IROUND(ctx->Const.LineWidthGranularity);
4094 break;
4095 case GL_LINE_WIDTH_RANGE:
4096 params[0] = IROUND(ctx->Const.MinLineWidthAA);
4097 params[1] = IROUND(ctx->Const.MaxLineWidthAA);
4098 break;
4099 case GL_ALIASED_LINE_WIDTH_RANGE:
4100 params[0] = IROUND(ctx->Const.MinLineWidth);
4101 params[1] = IROUND(ctx->Const.MaxLineWidth);
4102 break;
4103 case GL_LIST_BASE:
4104 params[0] = ctx->List.ListBase;
4105 break;
4106 case GL_LIST_INDEX:
4107 params[0] = (ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0);
4108 break;
4109 case GL_LIST_MODE:
4110 {
4111 GLenum mode;
4112 if (!ctx->CompileFlag)
4113 mode = 0;
4114 else if (ctx->ExecuteFlag)
4115 mode = GL_COMPILE_AND_EXECUTE;
4116 else
4117 mode = GL_COMPILE;
4118 params[0] = ENUM_TO_INT(mode);
4119 }
4120 break;
4121 case GL_INDEX_LOGIC_OP:
4122 params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled);
4123 break;
4124 case GL_COLOR_LOGIC_OP:
4125 params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled);
4126 break;
4127 case GL_LOGIC_OP_MODE:
4128 params[0] = ENUM_TO_INT(ctx->Color.LogicOp);
4129 break;
4130 case GL_MAP1_COLOR_4:
4131 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4);
4132 break;
4133 case GL_MAP1_GRID_DOMAIN:
4134 params[0] = IROUND(ctx->Eval.MapGrid1u1);
4135 params[1] = IROUND(ctx->Eval.MapGrid1u2);
4136 break;
4137 case GL_MAP1_GRID_SEGMENTS:
4138 params[0] = ctx->Eval.MapGrid1un;
4139 break;
4140 case GL_MAP1_INDEX:
4141 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index);
4142 break;
4143 case GL_MAP1_NORMAL:
4144 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal);
4145 break;
4146 case GL_MAP1_TEXTURE_COORD_1:
4147 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1);
4148 break;
4149 case GL_MAP1_TEXTURE_COORD_2:
4150 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2);
4151 break;
4152 case GL_MAP1_TEXTURE_COORD_3:
4153 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3);
4154 break;
4155 case GL_MAP1_TEXTURE_COORD_4:
4156 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4);
4157 break;
4158 case GL_MAP1_VERTEX_3:
4159 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3);
4160 break;
4161 case GL_MAP1_VERTEX_4:
4162 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4);
4163 break;
4164 case GL_MAP2_COLOR_4:
4165 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4);
4166 break;
4167 case GL_MAP2_GRID_DOMAIN:
4168 params[0] = IROUND(ctx->Eval.MapGrid2u1);
4169 params[1] = IROUND(ctx->Eval.MapGrid2u2);
4170 params[2] = IROUND(ctx->Eval.MapGrid2v1);
4171 params[3] = IROUND(ctx->Eval.MapGrid2v2);
4172 break;
4173 case GL_MAP2_GRID_SEGMENTS:
4174 params[0] = ctx->Eval.MapGrid2un;
4175 params[1] = ctx->Eval.MapGrid2vn;
4176 break;
4177 case GL_MAP2_INDEX:
4178 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index);
4179 break;
4180 case GL_MAP2_NORMAL:
4181 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal);
4182 break;
4183 case GL_MAP2_TEXTURE_COORD_1:
4184 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1);
4185 break;
4186 case GL_MAP2_TEXTURE_COORD_2:
4187 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2);
4188 break;
4189 case GL_MAP2_TEXTURE_COORD_3:
4190 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3);
4191 break;
4192 case GL_MAP2_TEXTURE_COORD_4:
4193 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4);
4194 break;
4195 case GL_MAP2_VERTEX_3:
4196 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3);
4197 break;
4198 case GL_MAP2_VERTEX_4:
4199 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4);
4200 break;
4201 case GL_MAP_COLOR:
4202 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag);
4203 break;
4204 case GL_MAP_STENCIL:
4205 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag);
4206 break;
4207 case GL_MATRIX_MODE:
4208 params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode);
4209 break;
4210 case GL_MAX_ATTRIB_STACK_DEPTH:
4211 params[0] = MAX_ATTRIB_STACK_DEPTH;
4212 break;
4213 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
4214 params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
4215 break;
4216 case GL_MAX_CLIP_PLANES:
4217 params[0] = ctx->Const.MaxClipPlanes;
4218 break;
4219 case GL_MAX_ELEMENTS_VERTICES:
4220 params[0] = ctx->Const.MaxArrayLockSize;
4221 break;
4222 case GL_MAX_ELEMENTS_INDICES:
4223 params[0] = ctx->Const.MaxArrayLockSize;
4224 break;
4225 case GL_MAX_EVAL_ORDER:
4226 params[0] = MAX_EVAL_ORDER;
4227 break;
4228 case GL_MAX_LIGHTS:
4229 params[0] = ctx->Const.MaxLights;
4230 break;
4231 case GL_MAX_LIST_NESTING:
4232 params[0] = MAX_LIST_NESTING;
4233 break;
4234 case GL_MAX_MODELVIEW_STACK_DEPTH:
4235 params[0] = MAX_MODELVIEW_STACK_DEPTH;
4236 break;
4237 case GL_MAX_NAME_STACK_DEPTH:
4238 params[0] = MAX_NAME_STACK_DEPTH;
4239 break;
4240 case GL_MAX_PIXEL_MAP_TABLE:
4241 params[0] = MAX_PIXEL_MAP_TABLE;
4242 break;
4243 case GL_MAX_PROJECTION_STACK_DEPTH:
4244 params[0] = MAX_PROJECTION_STACK_DEPTH;
4245 break;
4246 case GL_MAX_TEXTURE_SIZE:
4247 params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
4248 break;
4249 case GL_MAX_3D_TEXTURE_SIZE:
4250 params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
4251 break;
4252 case GL_MAX_TEXTURE_STACK_DEPTH:
4253 params[0] = MAX_TEXTURE_STACK_DEPTH;
4254 break;
4255 case GL_MAX_VIEWPORT_DIMS:
4256 params[0] = ctx->Const.MaxViewportWidth;
4257 params[1] = ctx->Const.MaxViewportHeight;
4258 break;
4259 case GL_MODELVIEW_MATRIX:
4260 {
4261 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4262 params[0] = IROUND(matrix[0]);
4263 params[1] = IROUND(matrix[1]);
4264 params[2] = IROUND(matrix[2]);
4265 params[3] = IROUND(matrix[3]);
4266 params[4] = IROUND(matrix[4]);
4267 params[5] = IROUND(matrix[5]);
4268 params[6] = IROUND(matrix[6]);
4269 params[7] = IROUND(matrix[7]);
4270 params[8] = IROUND(matrix[8]);
4271 params[9] = IROUND(matrix[9]);
4272 params[10] = IROUND(matrix[10]);
4273 params[11] = IROUND(matrix[11]);
4274 params[12] = IROUND(matrix[12]);
4275 params[13] = IROUND(matrix[13]);
4276 params[14] = IROUND(matrix[14]);
4277 params[15] = IROUND(matrix[15]);
4278 }
4279 break;
4280 case GL_MODELVIEW_STACK_DEPTH:
4281 params[0] = ctx->ModelviewMatrixStack.Depth + 1;
4282 break;
4283 case GL_NAME_STACK_DEPTH:
4284 params[0] = ctx->Select.NameStackDepth;
4285 break;
4286 case GL_NORMALIZE:
4287 params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize);
4288 break;
4289 case GL_PACK_ALIGNMENT:
4290 params[0] = ctx->Pack.Alignment;
4291 break;
4292 case GL_PACK_LSB_FIRST:
4293 params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst);
4294 break;
4295 case GL_PACK_ROW_LENGTH:
4296 params[0] = ctx->Pack.RowLength;
4297 break;
4298 case GL_PACK_SKIP_PIXELS:
4299 params[0] = ctx->Pack.SkipPixels;
4300 break;
4301 case GL_PACK_SKIP_ROWS:
4302 params[0] = ctx->Pack.SkipRows;
4303 break;
4304 case GL_PACK_SWAP_BYTES:
4305 params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes);
4306 break;
4307 case GL_PACK_SKIP_IMAGES_EXT:
4308 params[0] = ctx->Pack.SkipImages;
4309 break;
4310 case GL_PACK_IMAGE_HEIGHT_EXT:
4311 params[0] = ctx->Pack.ImageHeight;
4312 break;
4313 case GL_PACK_INVERT_MESA:
4314 params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert);
4315 break;
4316 case GL_PERSPECTIVE_CORRECTION_HINT:
4317 params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection);
4318 break;
4319 case GL_PIXEL_MAP_A_TO_A_SIZE:
4320 params[0] = ctx->PixelMaps.AtoA.Size;
4321 break;
4322 case GL_PIXEL_MAP_B_TO_B_SIZE:
4323 params[0] = ctx->PixelMaps.BtoB.Size;
4324 break;
4325 case GL_PIXEL_MAP_G_TO_G_SIZE:
4326 params[0] = ctx->PixelMaps.GtoG.Size;
4327 break;
4328 case GL_PIXEL_MAP_I_TO_A_SIZE:
4329 params[0] = ctx->PixelMaps.ItoA.Size;
4330 break;
4331 case GL_PIXEL_MAP_I_TO_B_SIZE:
4332 params[0] = ctx->PixelMaps.ItoB.Size;
4333 break;
4334 case GL_PIXEL_MAP_I_TO_G_SIZE:
4335 params[0] = ctx->PixelMaps.ItoG.Size;
4336 break;
4337 case GL_PIXEL_MAP_I_TO_I_SIZE:
4338 params[0] = ctx->PixelMaps.ItoI.Size;
4339 break;
4340 case GL_PIXEL_MAP_I_TO_R_SIZE:
4341 params[0] = ctx->PixelMaps.ItoR.Size;
4342 break;
4343 case GL_PIXEL_MAP_R_TO_R_SIZE:
4344 params[0] = ctx->PixelMaps.RtoR.Size;
4345 break;
4346 case GL_PIXEL_MAP_S_TO_S_SIZE:
4347 params[0] = ctx->PixelMaps.StoS.Size;
4348 break;
4349 case GL_POINT_SIZE:
4350 params[0] = IROUND(ctx->Point.Size);
4351 break;
4352 case GL_POINT_SIZE_GRANULARITY:
4353 params[0] = IROUND(ctx->Const.PointSizeGranularity);
4354 break;
4355 case GL_POINT_SIZE_RANGE:
4356 params[0] = IROUND(ctx->Const.MinPointSizeAA);
4357 params[1] = IROUND(ctx->Const.MaxPointSizeAA);
4358 break;
4359 case GL_ALIASED_POINT_SIZE_RANGE:
4360 params[0] = IROUND(ctx->Const.MinPointSize);
4361 params[1] = IROUND(ctx->Const.MaxPointSize);
4362 break;
4363 case GL_POINT_SMOOTH:
4364 params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag);
4365 break;
4366 case GL_POINT_SMOOTH_HINT:
4367 params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth);
4368 break;
4369 case GL_POINT_SIZE_MIN_EXT:
4370 params[0] = IROUND(ctx->Point.MinSize);
4371 break;
4372 case GL_POINT_SIZE_MAX_EXT:
4373 params[0] = IROUND(ctx->Point.MaxSize);
4374 break;
4375 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
4376 params[0] = IROUND(ctx->Point.Threshold);
4377 break;
4378 case GL_DISTANCE_ATTENUATION_EXT:
4379 params[0] = IROUND(ctx->Point.Params[0]);
4380 params[1] = IROUND(ctx->Point.Params[1]);
4381 params[2] = IROUND(ctx->Point.Params[2]);
4382 break;
4383 case GL_POLYGON_MODE:
4384 params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode);
4385 params[1] = ENUM_TO_INT(ctx->Polygon.BackMode);
4386 break;
4387 case GL_POLYGON_OFFSET_BIAS_EXT:
4388 params[0] = IROUND(ctx->Polygon.OffsetUnits);
4389 break;
4390 case GL_POLYGON_OFFSET_FACTOR:
4391 params[0] = IROUND(ctx->Polygon.OffsetFactor );
4392 break;
4393 case GL_POLYGON_OFFSET_UNITS:
4394 params[0] = IROUND(ctx->Polygon.OffsetUnits );
4395 break;
4396 case GL_POLYGON_OFFSET_POINT:
4397 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetPoint);
4398 break;
4399 case GL_POLYGON_OFFSET_LINE:
4400 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetLine);
4401 break;
4402 case GL_POLYGON_OFFSET_FILL:
4403 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetFill);
4404 break;
4405 case GL_POLYGON_SMOOTH:
4406 params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag);
4407 break;
4408 case GL_POLYGON_SMOOTH_HINT:
4409 params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth);
4410 break;
4411 case GL_POLYGON_STIPPLE:
4412 params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag);
4413 break;
4414 case GL_PROJECTION_MATRIX:
4415 {
4416 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
4417 params[0] = IROUND(matrix[0]);
4418 params[1] = IROUND(matrix[1]);
4419 params[2] = IROUND(matrix[2]);
4420 params[3] = IROUND(matrix[3]);
4421 params[4] = IROUND(matrix[4]);
4422 params[5] = IROUND(matrix[5]);
4423 params[6] = IROUND(matrix[6]);
4424 params[7] = IROUND(matrix[7]);
4425 params[8] = IROUND(matrix[8]);
4426 params[9] = IROUND(matrix[9]);
4427 params[10] = IROUND(matrix[10]);
4428 params[11] = IROUND(matrix[11]);
4429 params[12] = IROUND(matrix[12]);
4430 params[13] = IROUND(matrix[13]);
4431 params[14] = IROUND(matrix[14]);
4432 params[15] = IROUND(matrix[15]);
4433 }
4434 break;
4435 case GL_PROJECTION_STACK_DEPTH:
4436 params[0] = ctx->ProjectionMatrixStack.Depth + 1;
4437 break;
4438 case GL_READ_BUFFER:
4439 params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer);
4440 break;
4441 case GL_RED_BIAS:
4442 params[0] = IROUND(ctx->Pixel.RedBias);
4443 break;
4444 case GL_RED_BITS:
4445 params[0] = ctx->DrawBuffer->Visual.redBits;
4446 break;
4447 case GL_RED_SCALE:
4448 params[0] = IROUND(ctx->Pixel.RedScale);
4449 break;
4450 case GL_RENDER_MODE:
4451 params[0] = ENUM_TO_INT(ctx->RenderMode);
4452 break;
4453 case GL_RESCALE_NORMAL:
4454 params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals);
4455 break;
4456 case GL_RGBA_MODE:
4457 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.rgbMode);
4458 break;
4459 case GL_SCISSOR_BOX:
4460 params[0] = ctx->Scissor.X;
4461 params[1] = ctx->Scissor.Y;
4462 params[2] = ctx->Scissor.Width;
4463 params[3] = ctx->Scissor.Height;
4464 break;
4465 case GL_SCISSOR_TEST:
4466 params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled);
4467 break;
4468 case GL_SELECTION_BUFFER_SIZE:
4469 params[0] = ctx->Select.BufferSize;
4470 break;
4471 case GL_SHADE_MODEL:
4472 params[0] = ENUM_TO_INT(ctx->Light.ShadeModel);
4473 break;
4474 case GL_SHARED_TEXTURE_PALETTE_EXT:
4475 params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette);
4476 break;
4477 case GL_STENCIL_BITS:
4478 params[0] = ctx->DrawBuffer->Visual.stencilBits;
4479 break;
4480 case GL_STENCIL_CLEAR_VALUE:
4481 params[0] = ctx->Stencil.Clear;
4482 break;
4483 case GL_STENCIL_FAIL:
4484 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
4485 break;
4486 case GL_STENCIL_FUNC:
4487 params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
4488 break;
4489 case GL_STENCIL_PASS_DEPTH_FAIL:
4490 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
4491 break;
4492 case GL_STENCIL_PASS_DEPTH_PASS:
4493 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
4494 break;
4495 case GL_STENCIL_REF:
4496 params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
4497 break;
4498 case GL_STENCIL_TEST:
4499 params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled);
4500 break;
4501 case GL_STENCIL_VALUE_MASK:
4502 params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
4503 break;
4504 case GL_STENCIL_WRITEMASK:
4505 params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
4506 break;
4507 case GL_STEREO:
4508 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode);
4509 break;
4510 case GL_SUBPIXEL_BITS:
4511 params[0] = ctx->Const.SubPixelBits;
4512 break;
4513 case GL_TEXTURE_1D:
4514 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D));
4515 break;
4516 case GL_TEXTURE_2D:
4517 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D));
4518 break;
4519 case GL_TEXTURE_3D:
4520 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D));
4521 break;
4522 case GL_TEXTURE_1D_ARRAY_EXT:
4523 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4524 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
4525 break;
4526 case GL_TEXTURE_2D_ARRAY_EXT:
4527 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4528 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
4529 break;
4530 case GL_TEXTURE_BINDING_1D:
4531 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name;
4532 break;
4533 case GL_TEXTURE_BINDING_2D:
4534 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name;
4535 break;
4536 case GL_TEXTURE_BINDING_3D:
4537 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name;
4538 break;
4539 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
4540 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4541 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name;
4542 break;
4543 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
4544 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4545 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name;
4546 break;
4547 case GL_TEXTURE_GEN_S:
4548 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
4549 break;
4550 case GL_TEXTURE_GEN_T:
4551 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
4552 break;
4553 case GL_TEXTURE_GEN_R:
4554 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
4555 break;
4556 case GL_TEXTURE_GEN_Q:
4557 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
4558 break;
4559 case GL_TEXTURE_MATRIX:
4560 {
4561 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
4562 params[0] = IROUND(matrix[0]);
4563 params[1] = IROUND(matrix[1]);
4564 params[2] = IROUND(matrix[2]);
4565 params[3] = IROUND(matrix[3]);
4566 params[4] = IROUND(matrix[4]);
4567 params[5] = IROUND(matrix[5]);
4568 params[6] = IROUND(matrix[6]);
4569 params[7] = IROUND(matrix[7]);
4570 params[8] = IROUND(matrix[8]);
4571 params[9] = IROUND(matrix[9]);
4572 params[10] = IROUND(matrix[10]);
4573 params[11] = IROUND(matrix[11]);
4574 params[12] = IROUND(matrix[12]);
4575 params[13] = IROUND(matrix[13]);
4576 params[14] = IROUND(matrix[14]);
4577 params[15] = IROUND(matrix[15]);
4578 }
4579 break;
4580 case GL_TEXTURE_STACK_DEPTH:
4581 params[0] = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1;
4582 break;
4583 case GL_UNPACK_ALIGNMENT:
4584 params[0] = ctx->Unpack.Alignment;
4585 break;
4586 case GL_UNPACK_LSB_FIRST:
4587 params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst);
4588 break;
4589 case GL_UNPACK_ROW_LENGTH:
4590 params[0] = ctx->Unpack.RowLength;
4591 break;
4592 case GL_UNPACK_SKIP_PIXELS:
4593 params[0] = ctx->Unpack.SkipPixels;
4594 break;
4595 case GL_UNPACK_SKIP_ROWS:
4596 params[0] = ctx->Unpack.SkipRows;
4597 break;
4598 case GL_UNPACK_SWAP_BYTES:
4599 params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes);
4600 break;
4601 case GL_UNPACK_SKIP_IMAGES_EXT:
4602 params[0] = ctx->Unpack.SkipImages;
4603 break;
4604 case GL_UNPACK_IMAGE_HEIGHT_EXT:
4605 params[0] = ctx->Unpack.ImageHeight;
4606 break;
4607 case GL_UNPACK_CLIENT_STORAGE_APPLE:
4608 params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage);
4609 break;
4610 case GL_VIEWPORT:
4611 params[0] = ctx->Viewport.X;
4612 params[1] = ctx->Viewport.Y;
4613 params[2] = ctx->Viewport.Width;
4614 params[3] = ctx->Viewport.Height;
4615 break;
4616 case GL_ZOOM_X:
4617 params[0] = IROUND(ctx->Pixel.ZoomX);
4618 break;
4619 case GL_ZOOM_Y:
4620 params[0] = IROUND(ctx->Pixel.ZoomY);
4621 break;
4622 case GL_VERTEX_ARRAY:
4623 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled);
4624 break;
4625 case GL_VERTEX_ARRAY_SIZE:
4626 params[0] = ctx->Array.ArrayObj->Vertex.Size;
4627 break;
4628 case GL_VERTEX_ARRAY_TYPE:
4629 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type);
4630 break;
4631 case GL_VERTEX_ARRAY_STRIDE:
4632 params[0] = ctx->Array.ArrayObj->Vertex.Stride;
4633 break;
4634 case GL_VERTEX_ARRAY_COUNT_EXT:
4635 params[0] = 0;
4636 break;
4637 case GL_NORMAL_ARRAY:
4638 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled);
4639 break;
4640 case GL_NORMAL_ARRAY_TYPE:
4641 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type);
4642 break;
4643 case GL_NORMAL_ARRAY_STRIDE:
4644 params[0] = ctx->Array.ArrayObj->Normal.Stride;
4645 break;
4646 case GL_NORMAL_ARRAY_COUNT_EXT:
4647 params[0] = 0;
4648 break;
4649 case GL_COLOR_ARRAY:
4650 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled);
4651 break;
4652 case GL_COLOR_ARRAY_SIZE:
4653 params[0] = ctx->Array.ArrayObj->Color.Size;
4654 break;
4655 case GL_COLOR_ARRAY_TYPE:
4656 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type);
4657 break;
4658 case GL_COLOR_ARRAY_STRIDE:
4659 params[0] = ctx->Array.ArrayObj->Color.Stride;
4660 break;
4661 case GL_COLOR_ARRAY_COUNT_EXT:
4662 params[0] = 0;
4663 break;
4664 case GL_INDEX_ARRAY:
4665 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled);
4666 break;
4667 case GL_INDEX_ARRAY_TYPE:
4668 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type);
4669 break;
4670 case GL_INDEX_ARRAY_STRIDE:
4671 params[0] = ctx->Array.ArrayObj->Index.Stride;
4672 break;
4673 case GL_INDEX_ARRAY_COUNT_EXT:
4674 params[0] = 0;
4675 break;
4676 case GL_TEXTURE_COORD_ARRAY:
4677 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
4678 break;
4679 case GL_TEXTURE_COORD_ARRAY_SIZE:
4680 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
4681 break;
4682 case GL_TEXTURE_COORD_ARRAY_TYPE:
4683 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
4684 break;
4685 case GL_TEXTURE_COORD_ARRAY_STRIDE:
4686 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
4687 break;
4688 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
4689 params[0] = 0;
4690 break;
4691 case GL_EDGE_FLAG_ARRAY:
4692 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
4693 break;
4694 case GL_EDGE_FLAG_ARRAY_STRIDE:
4695 params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
4696 break;
4697 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
4698 params[0] = 0;
4699 break;
4700 case GL_MAX_TEXTURE_UNITS_ARB:
4701 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4702 params[0] = ctx->Const.MaxTextureUnits;
4703 break;
4704 case GL_ACTIVE_TEXTURE_ARB:
4705 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4706 params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
4707 break;
4708 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
4709 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4710 params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
4711 break;
4712 case GL_TEXTURE_CUBE_MAP_ARB:
4713 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4714 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
4715 break;
4716 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
4717 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4718 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name;
4719 break;
4720 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
4721 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4722 params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
4723 break;
4724 case GL_TEXTURE_COMPRESSION_HINT_ARB:
4725 params[0] = ctx->Hint.TextureCompression;
4726 break;
4727 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
4728 params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
4729 break;
4730 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
4731 {
4732 GLint formats[100];
4733 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
4734 ASSERT(n <= 100);
4735 for (i = 0; i < n; i++)
4736 params[i] = ENUM_TO_INT(formats[i]);
4737 }
4738 break;
4739 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
4740 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
4741 params[0] = ctx->Array.LockFirst;
4742 break;
4743 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
4744 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
4745 params[0] = ctx->Array.LockCount;
4746 break;
4747 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
4748 {
4749 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
4750 params[0] = IROUND(matrix[0]);
4751 params[1] = IROUND(matrix[4]);
4752 params[2] = IROUND(matrix[8]);
4753 params[3] = IROUND(matrix[12]);
4754 params[4] = IROUND(matrix[1]);
4755 params[5] = IROUND(matrix[5]);
4756 params[6] = IROUND(matrix[9]);
4757 params[7] = IROUND(matrix[13]);
4758 params[8] = IROUND(matrix[2]);
4759 params[9] = IROUND(matrix[6]);
4760 params[10] = IROUND(matrix[10]);
4761 params[11] = IROUND(matrix[14]);
4762 params[12] = IROUND(matrix[3]);
4763 params[13] = IROUND(matrix[7]);
4764 params[14] = IROUND(matrix[11]);
4765 params[15] = IROUND(matrix[15]);
4766 }
4767 break;
4768 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
4769 {
4770 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4771 params[0] = IROUND(matrix[0]);
4772 params[1] = IROUND(matrix[4]);
4773 params[2] = IROUND(matrix[8]);
4774 params[3] = IROUND(matrix[12]);
4775 params[4] = IROUND(matrix[1]);
4776 params[5] = IROUND(matrix[5]);
4777 params[6] = IROUND(matrix[9]);
4778 params[7] = IROUND(matrix[13]);
4779 params[8] = IROUND(matrix[2]);
4780 params[9] = IROUND(matrix[6]);
4781 params[10] = IROUND(matrix[10]);
4782 params[11] = IROUND(matrix[14]);
4783 params[12] = IROUND(matrix[3]);
4784 params[13] = IROUND(matrix[7]);
4785 params[14] = IROUND(matrix[11]);
4786 params[15] = IROUND(matrix[15]);
4787 }
4788 break;
4789 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
4790 {
4791 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
4792 params[0] = IROUND(matrix[0]);
4793 params[1] = IROUND(matrix[4]);
4794 params[2] = IROUND(matrix[8]);
4795 params[3] = IROUND(matrix[12]);
4796 params[4] = IROUND(matrix[1]);
4797 params[5] = IROUND(matrix[5]);
4798 params[6] = IROUND(matrix[9]);
4799 params[7] = IROUND(matrix[13]);
4800 params[8] = IROUND(matrix[2]);
4801 params[9] = IROUND(matrix[6]);
4802 params[10] = IROUND(matrix[10]);
4803 params[11] = IROUND(matrix[14]);
4804 params[12] = IROUND(matrix[3]);
4805 params[13] = IROUND(matrix[7]);
4806 params[14] = IROUND(matrix[11]);
4807 params[15] = IROUND(matrix[15]);
4808 }
4809 break;
4810 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
4811 {
4812 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
4813 params[0] = IROUND(matrix[0]);
4814 params[1] = IROUND(matrix[4]);
4815 params[2] = IROUND(matrix[8]);
4816 params[3] = IROUND(matrix[12]);
4817 params[4] = IROUND(matrix[1]);
4818 params[5] = IROUND(matrix[5]);
4819 params[6] = IROUND(matrix[9]);
4820 params[7] = IROUND(matrix[13]);
4821 params[8] = IROUND(matrix[2]);
4822 params[9] = IROUND(matrix[6]);
4823 params[10] = IROUND(matrix[10]);
4824 params[11] = IROUND(matrix[14]);
4825 params[12] = IROUND(matrix[3]);
4826 params[13] = IROUND(matrix[7]);
4827 params[14] = IROUND(matrix[11]);
4828 params[15] = IROUND(matrix[15]);
4829 }
4830 break;
4831 case GL_COLOR_MATRIX_SGI:
4832 {
4833 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
4834 params[0] = IROUND(matrix[0]);
4835 params[1] = IROUND(matrix[1]);
4836 params[2] = IROUND(matrix[2]);
4837 params[3] = IROUND(matrix[3]);
4838 params[4] = IROUND(matrix[4]);
4839 params[5] = IROUND(matrix[5]);
4840 params[6] = IROUND(matrix[6]);
4841 params[7] = IROUND(matrix[7]);
4842 params[8] = IROUND(matrix[8]);
4843 params[9] = IROUND(matrix[9]);
4844 params[10] = IROUND(matrix[10]);
4845 params[11] = IROUND(matrix[11]);
4846 params[12] = IROUND(matrix[12]);
4847 params[13] = IROUND(matrix[13]);
4848 params[14] = IROUND(matrix[14]);
4849 params[15] = IROUND(matrix[15]);
4850 }
4851 break;
4852 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
4853 params[0] = ctx->ColorMatrixStack.Depth + 1;
4854 break;
4855 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
4856 params[0] = MAX_COLOR_STACK_DEPTH;
4857 break;
4858 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
4859 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
4860 break;
4861 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
4862 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
4863 break;
4864 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
4865 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
4866 break;
4867 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
4868 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
4869 break;
4870 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
4871 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
4872 break;
4873 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
4874 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
4875 break;
4876 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
4877 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
4878 break;
4879 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
4880 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
4881 break;
4882 case GL_CONVOLUTION_1D_EXT:
4883 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4884 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
4885 break;
4886 case GL_CONVOLUTION_2D_EXT:
4887 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4888 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
4889 break;
4890 case GL_SEPARABLE_2D_EXT:
4891 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4892 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
4893 break;
4894 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
4895 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4896 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
4897 break;
4898 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
4899 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4900 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
4901 break;
4902 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
4903 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4904 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
4905 break;
4906 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
4907 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4908 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
4909 break;
4910 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
4911 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4912 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
4913 break;
4914 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
4915 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4916 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
4917 break;
4918 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
4919 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4920 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
4921 break;
4922 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
4923 CHECK_EXT1(EXT_convolution, "GetIntegerv");
4924 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
4925 break;
4926 case GL_HISTOGRAM:
4927 CHECK_EXT1(EXT_histogram, "GetIntegerv");
4928 params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
4929 break;
4930 case GL_MINMAX:
4931 CHECK_EXT1(EXT_histogram, "GetIntegerv");
4932 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
4933 break;
4934 case GL_COLOR_TABLE_SGI:
4935 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4936 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
4937 break;
4938 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
4939 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4940 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
4941 break;
4942 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
4943 CHECK_EXT1(SGI_color_table, "GetIntegerv");
4944 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
4945 break;
4946 case GL_TEXTURE_COLOR_TABLE_SGI:
4947 CHECK_EXT1(SGI_texture_color_table, "GetIntegerv");
4948 params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
4949 break;
4950 case GL_COLOR_SUM_EXT:
4951 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv");
4952 params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
4953 break;
4954 case GL_CURRENT_SECONDARY_COLOR_EXT:
4955 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4956 {
4957 FLUSH_CURRENT(ctx, 0);
4958 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
4959 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
4960 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
4961 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
4962 }
4963 break;
4964 case GL_SECONDARY_COLOR_ARRAY_EXT:
4965 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4966 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
4967 break;
4968 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
4969 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4970 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
4971 break;
4972 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
4973 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4974 params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
4975 break;
4976 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
4977 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
4978 params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
4979 break;
4980 case GL_CURRENT_FOG_COORDINATE_EXT:
4981 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
4982 {
4983 FLUSH_CURRENT(ctx, 0);
4984 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
4985 }
4986 break;
4987 case GL_FOG_COORDINATE_ARRAY_EXT:
4988 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
4989 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
4990 break;
4991 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
4992 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
4993 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
4994 break;
4995 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
4996 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
4997 params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
4998 break;
4999 case GL_FOG_COORDINATE_SOURCE_EXT:
5000 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5001 params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
5002 break;
5003 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
5004 CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv");
5005 params[0] = IROUND(ctx->Const.MaxTextureLodBias);
5006 break;
5007 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
5008 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv");
5009 params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
5010 break;
5011 case GL_MULTISAMPLE_ARB:
5012 params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
5013 break;
5014 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
5015 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
5016 break;
5017 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
5018 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
5019 break;
5020 case GL_SAMPLE_COVERAGE_ARB:
5021 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
5022 break;
5023 case GL_SAMPLE_COVERAGE_VALUE_ARB:
5024 params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
5025 break;
5026 case GL_SAMPLE_COVERAGE_INVERT_ARB:
5027 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
5028 break;
5029 case GL_SAMPLE_BUFFERS_ARB:
5030 params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
5031 break;
5032 case GL_SAMPLES_ARB:
5033 params[0] = ctx->DrawBuffer->Visual.samples;
5034 break;
5035 case GL_RASTER_POSITION_UNCLIPPED_IBM:
5036 CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv");
5037 params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
5038 break;
5039 case GL_POINT_SPRITE_NV:
5040 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
5041 params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
5042 break;
5043 case GL_POINT_SPRITE_R_MODE_NV:
5044 CHECK_EXT1(NV_point_sprite, "GetIntegerv");
5045 params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
5046 break;
5047 case GL_POINT_SPRITE_COORD_ORIGIN:
5048 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
5049 params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
5050 break;
5051 case GL_GENERATE_MIPMAP_HINT_SGIS:
5052 CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv");
5053 params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
5054 break;
5055 case GL_VERTEX_PROGRAM_BINDING_NV:
5056 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5057 params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
5058 break;
5059 case GL_VERTEX_ATTRIB_ARRAY0_NV:
5060 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5061 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
5062 break;
5063 case GL_VERTEX_ATTRIB_ARRAY1_NV:
5064 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5065 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
5066 break;
5067 case GL_VERTEX_ATTRIB_ARRAY2_NV:
5068 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5069 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
5070 break;
5071 case GL_VERTEX_ATTRIB_ARRAY3_NV:
5072 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5073 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
5074 break;
5075 case GL_VERTEX_ATTRIB_ARRAY4_NV:
5076 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5077 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
5078 break;
5079 case GL_VERTEX_ATTRIB_ARRAY5_NV:
5080 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5081 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
5082 break;
5083 case GL_VERTEX_ATTRIB_ARRAY6_NV:
5084 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5085 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
5086 break;
5087 case GL_VERTEX_ATTRIB_ARRAY7_NV:
5088 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5089 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
5090 break;
5091 case GL_VERTEX_ATTRIB_ARRAY8_NV:
5092 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5093 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
5094 break;
5095 case GL_VERTEX_ATTRIB_ARRAY9_NV:
5096 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5097 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
5098 break;
5099 case GL_VERTEX_ATTRIB_ARRAY10_NV:
5100 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5101 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
5102 break;
5103 case GL_VERTEX_ATTRIB_ARRAY11_NV:
5104 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5105 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
5106 break;
5107 case GL_VERTEX_ATTRIB_ARRAY12_NV:
5108 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5109 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
5110 break;
5111 case GL_VERTEX_ATTRIB_ARRAY13_NV:
5112 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5113 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
5114 break;
5115 case GL_VERTEX_ATTRIB_ARRAY14_NV:
5116 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5117 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
5118 break;
5119 case GL_VERTEX_ATTRIB_ARRAY15_NV:
5120 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5121 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
5122 break;
5123 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
5124 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5125 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
5126 break;
5127 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
5128 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5129 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
5130 break;
5131 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
5132 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5133 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
5134 break;
5135 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
5136 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5137 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
5138 break;
5139 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
5140 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5141 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
5142 break;
5143 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
5144 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5145 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
5146 break;
5147 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
5148 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5149 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
5150 break;
5151 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
5152 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5153 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
5154 break;
5155 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
5156 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5157 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
5158 break;
5159 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
5160 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5161 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
5162 break;
5163 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
5164 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5165 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
5166 break;
5167 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
5168 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5169 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
5170 break;
5171 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
5172 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5173 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
5174 break;
5175 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
5176 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5177 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
5178 break;
5179 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
5180 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5181 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
5182 break;
5183 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
5184 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5185 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
5186 break;
5187 case GL_FRAGMENT_PROGRAM_NV:
5188 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5189 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5190 break;
5191 case GL_FRAGMENT_PROGRAM_BINDING_NV:
5192 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5193 params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
5194 break;
5195 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
5196 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5197 params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
5198 break;
5199 case GL_TEXTURE_RECTANGLE_NV:
5200 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5201 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
5202 break;
5203 case GL_TEXTURE_BINDING_RECTANGLE_NV:
5204 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5205 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name;
5206 break;
5207 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
5208 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5209 params[0] = ctx->Const.MaxTextureRectSize;
5210 break;
5211 case GL_STENCIL_TEST_TWO_SIDE_EXT:
5212 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
5213 params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
5214 break;
5215 case GL_ACTIVE_STENCIL_FACE_EXT:
5216 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
5217 params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
5218 break;
5219 case GL_MAX_SHININESS_NV:
5220 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
5221 params[0] = IROUND(ctx->Const.MaxShininess);
5222 break;
5223 case GL_MAX_SPOT_EXPONENT_NV:
5224 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
5225 params[0] = IROUND(ctx->Const.MaxSpotExponent);
5226 break;
5227 case GL_ARRAY_BUFFER_BINDING_ARB:
5228 params[0] = ctx->Array.ArrayBufferObj->Name;
5229 break;
5230 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
5231 params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
5232 break;
5233 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
5234 params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
5235 break;
5236 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
5237 params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
5238 break;
5239 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
5240 params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
5241 break;
5242 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
5243 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
5244 break;
5245 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
5246 params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
5247 break;
5248 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
5249 params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
5250 break;
5251 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
5252 params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
5253 break;
5254 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
5255 params[0] = ctx->Array.ElementArrayBufferObj->Name;
5256 break;
5257 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
5258 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
5259 params[0] = ctx->Pack.BufferObj->Name;
5260 break;
5261 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
5262 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
5263 params[0] = ctx->Unpack.BufferObj->Name;
5264 break;
5265 case GL_VERTEX_PROGRAM_ARB:
5266 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5267 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
5268 break;
5269 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
5270 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5271 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
5272 break;
5273 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
5274 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5275 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
5276 break;
5277 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
5278 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5279 params[0] = ctx->Const.MaxProgramMatrixStackDepth;
5280 break;
5281 case GL_MAX_PROGRAM_MATRICES_ARB:
5282 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5283 params[0] = ctx->Const.MaxProgramMatrices;
5284 break;
5285 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
5286 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5287 params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
5288 break;
5289 case GL_CURRENT_MATRIX_ARB:
5290 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5291 {
5292 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5293 params[0] = IROUND(matrix[0]);
5294 params[1] = IROUND(matrix[1]);
5295 params[2] = IROUND(matrix[2]);
5296 params[3] = IROUND(matrix[3]);
5297 params[4] = IROUND(matrix[4]);
5298 params[5] = IROUND(matrix[5]);
5299 params[6] = IROUND(matrix[6]);
5300 params[7] = IROUND(matrix[7]);
5301 params[8] = IROUND(matrix[8]);
5302 params[9] = IROUND(matrix[9]);
5303 params[10] = IROUND(matrix[10]);
5304 params[11] = IROUND(matrix[11]);
5305 params[12] = IROUND(matrix[12]);
5306 params[13] = IROUND(matrix[13]);
5307 params[14] = IROUND(matrix[14]);
5308 params[15] = IROUND(matrix[15]);
5309 }
5310 break;
5311 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
5312 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv");
5313 {
5314 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5315 params[0] = IROUND(matrix[0]);
5316 params[1] = IROUND(matrix[4]);
5317 params[2] = IROUND(matrix[8]);
5318 params[3] = IROUND(matrix[12]);
5319 params[4] = IROUND(matrix[1]);
5320 params[5] = IROUND(matrix[5]);
5321 params[6] = IROUND(matrix[9]);
5322 params[7] = IROUND(matrix[13]);
5323 params[8] = IROUND(matrix[2]);
5324 params[9] = IROUND(matrix[6]);
5325 params[10] = IROUND(matrix[10]);
5326 params[11] = IROUND(matrix[14]);
5327 params[12] = IROUND(matrix[3]);
5328 params[13] = IROUND(matrix[7]);
5329 params[14] = IROUND(matrix[11]);
5330 params[15] = IROUND(matrix[15]);
5331 }
5332 break;
5333 case GL_MAX_VERTEX_ATTRIBS_ARB:
5334 CHECK_EXT1(ARB_vertex_program, "GetIntegerv");
5335 params[0] = ctx->Const.VertexProgram.MaxAttribs;
5336 break;
5337 case GL_PROGRAM_ERROR_POSITION_ARB:
5338 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv");
5339 params[0] = ctx->Program.ErrorPos;
5340 break;
5341 case GL_FRAGMENT_PROGRAM_ARB:
5342 CHECK_EXT1(ARB_fragment_program, "GetIntegerv");
5343 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5344 break;
5345 case GL_MAX_TEXTURE_COORDS_ARB:
5346 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5347 params[0] = ctx->Const.MaxTextureCoordUnits;
5348 break;
5349 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
5350 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5351 params[0] = ctx->Const.MaxTextureImageUnits;
5352 break;
5353 case GL_DEPTH_BOUNDS_TEST_EXT:
5354 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
5355 params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
5356 break;
5357 case GL_DEPTH_BOUNDS_EXT:
5358 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
5359 params[0] = IROUND(ctx->Depth.BoundsMin);
5360 params[1] = IROUND(ctx->Depth.BoundsMax);
5361 break;
5362 case GL_MAX_DRAW_BUFFERS_ARB:
5363 params[0] = ctx->Const.MaxDrawBuffers;
5364 break;
5365 case GL_DRAW_BUFFER0_ARB:
5366 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
5367 break;
5368 case GL_DRAW_BUFFER1_ARB:
5369 {
5370 GLenum buffer;
5371 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5372 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5373 return;
5374 }
5375 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
5376 params[0] = ENUM_TO_INT(buffer);
5377 }
5378 break;
5379 case GL_DRAW_BUFFER2_ARB:
5380 {
5381 GLenum buffer;
5382 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5383 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5384 return;
5385 }
5386 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
5387 params[0] = ENUM_TO_INT(buffer);
5388 }
5389 break;
5390 case GL_DRAW_BUFFER3_ARB:
5391 {
5392 GLenum buffer;
5393 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5394 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5395 return;
5396 }
5397 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
5398 params[0] = ENUM_TO_INT(buffer);
5399 }
5400 break;
5401 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
5402 CHECK_EXT1(OES_read_format, "GetIntegerv");
5403 params[0] = ctx->Const.ColorReadType;
5404 break;
5405 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
5406 CHECK_EXT1(OES_read_format, "GetIntegerv");
5407 params[0] = ctx->Const.ColorReadFormat;
5408 break;
5409 case GL_NUM_FRAGMENT_REGISTERS_ATI:
5410 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5411 params[0] = 6;
5412 break;
5413 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
5414 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5415 params[0] = 8;
5416 break;
5417 case GL_NUM_PASSES_ATI:
5418 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5419 params[0] = 2;
5420 break;
5421 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
5422 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5423 params[0] = 8;
5424 break;
5425 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
5426 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5427 params[0] = 16;
5428 break;
5429 case GL_COLOR_ALPHA_PAIRING_ATI:
5430 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5431 params[0] = BOOLEAN_TO_INT(GL_TRUE);
5432 break;
5433 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
5434 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5435 params[0] = 3;
5436 break;
5437 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
5438 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5439 params[0] = 3;
5440 break;
5441 case GL_STENCIL_BACK_FUNC:
5442 params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
5443 break;
5444 case GL_STENCIL_BACK_VALUE_MASK:
5445 params[0] = ctx->Stencil.ValueMask[1];
5446 break;
5447 case GL_STENCIL_BACK_WRITEMASK:
5448 params[0] = ctx->Stencil.WriteMask[1];
5449 break;
5450 case GL_STENCIL_BACK_REF:
5451 params[0] = ctx->Stencil.Ref[1];
5452 break;
5453 case GL_STENCIL_BACK_FAIL:
5454 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
5455 break;
5456 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
5457 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
5458 break;
5459 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
5460 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
5461 break;
5462 case GL_FRAMEBUFFER_BINDING_EXT:
5463 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5464 params[0] = ctx->DrawBuffer->Name;
5465 break;
5466 case GL_RENDERBUFFER_BINDING_EXT:
5467 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5468 params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
5469 break;
5470 case GL_MAX_COLOR_ATTACHMENTS_EXT:
5471 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5472 params[0] = ctx->Const.MaxColorAttachments;
5473 break;
5474 case GL_MAX_RENDERBUFFER_SIZE_EXT:
5475 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5476 params[0] = ctx->Const.MaxRenderbufferSize;
5477 break;
5478 case GL_READ_FRAMEBUFFER_BINDING_EXT:
5479 CHECK_EXT1(EXT_framebuffer_blit, "GetIntegerv");
5480 params[0] = ctx->ReadBuffer->Name;
5481 break;
5482 case GL_PROVOKING_VERTEX_EXT:
5483 CHECK_EXT1(EXT_provoking_vertex, "GetIntegerv");
5484 params[0] = BOOLEAN_TO_INT(ctx->Light.ProvokingVertex);
5485 break;
5486 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
5487 CHECK_EXT1(EXT_provoking_vertex, "GetIntegerv");
5488 params[0] = BOOLEAN_TO_INT(ctx->Const.QuadsFollowProvokingVertexConvention);
5489 break;
5490 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
5491 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
5492 params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
5493 break;
5494 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
5495 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
5496 params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
5497 break;
5498 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
5499 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5500 params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
5501 break;
5502 case GL_MAX_VARYING_FLOATS_ARB:
5503 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5504 params[0] = ctx->Const.MaxVarying * 4;
5505 break;
5506 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
5507 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5508 params[0] = ctx->Const.MaxVertexTextureImageUnits;
5509 break;
5510 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
5511 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5512 params[0] = MAX_COMBINED_TEXTURE_IMAGE_UNITS;
5513 break;
5514 case GL_CURRENT_PROGRAM:
5515 CHECK_EXT1(ARB_shader_objects, "GetIntegerv");
5516 params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
5517 break;
5518 case GL_MAX_SAMPLES:
5519 CHECK_EXT1(ARB_framebuffer_object, "GetIntegerv");
5520 params[0] = ctx->Const.MaxSamples;
5521 break;
5522 case GL_VERTEX_ARRAY_BINDING_APPLE:
5523 CHECK_EXT1(APPLE_vertex_array_object, "GetIntegerv");
5524 params[0] = ctx->Array.ArrayObj->Name;
5525 break;
5526 default:
5527 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
5528 }
5529 }
5530
5531
5532 void GLAPIENTRY
5533 _mesa_GetDoublev( GLenum pname, GLdouble *params )
5534 {
5535 const GLfloat magic = -1234.5F;
5536 GLfloat values[16];
5537 GLuint i;
5538
5539 if (!params)
5540 return;
5541
5542 /* Init temp array to magic numbers so we can figure out how many values
5543 * are returned by the GetFloatv() call.
5544 */
5545 for (i = 0; i < 16; i++)
5546 values[i] = magic;
5547
5548 _mesa_GetFloatv(pname, values);
5549
5550 for (i = 0; i < 16 && values[i] != magic; i++)
5551 params[i] = (GLdouble) values[i];
5552 }
5553