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