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