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