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