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