mesa: more transform feedback infrastructure
[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 "get.h"
11 #include "macros.h"
12 #include "mtypes.h"
13 #include "state.h"
14 #include "texcompress.h"
15 #include "framebuffer.h"
16
17
18 #define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
19
20 #define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
21
22 #define INT64_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
23 #define INT64_TO_INT(I) ( (GLint)((I > INT_MAX) ? INT_MAX : ((I < INT_MIN) ? INT_MIN : (I))) )
24
25 #define BOOLEAN_TO_INT(B) ( (GLint) (B) )
26 #define BOOLEAN_TO_INT64(B) ( (GLint64) (B) )
27 #define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F )
28
29 #define ENUM_TO_INT64(E) ( (GLint64) (E) )
30
31
32 /*
33 * Check if named extension is enabled, if not generate error and return.
34 */
35 #define CHECK_EXT1(EXT1) \
36 if (!ctx->Extensions.EXT1) { \
37 goto invalid_enum_error; \
38 }
39
40 /*
41 * Check if either of two extensions is enabled.
42 */
43 #define CHECK_EXT2(EXT1, EXT2) \
44 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \
45 goto invalid_enum_error; \
46 }
47
48 /*
49 * Check if either of three extensions is enabled.
50 */
51 #define CHECK_EXT3(EXT1, EXT2, EXT3) \
52 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
53 !ctx->Extensions.EXT3) { \
54 goto invalid_enum_error; \
55 }
56
57 /*
58 * Check if either of four extensions is enabled.
59 */
60 #define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4) \
61 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
62 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \
63 goto invalid_enum_error; \
64 }
65
66 /*
67 * Check GL version.
68 */
69 #define CHECK_VERSION(VERSION) \
70 if (version < VERSION) { \
71 goto invalid_enum_error; \
72 }
73
74
75 void GLAPIENTRY
76 _mesa_GetBooleanv( GLenum pname, GLboolean *params )
77 {
78 GET_CURRENT_CONTEXT(ctx);
79 const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
80 ASSERT_OUTSIDE_BEGIN_END(ctx);
81 (void) version;
82
83 if (!params)
84 return;
85
86 switch (pname) {
87 case GL_ACCUM_RED_BITS:
88 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits);
89 break;
90 case GL_ACCUM_GREEN_BITS:
91 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits);
92 break;
93 case GL_ACCUM_BLUE_BITS:
94 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits);
95 break;
96 case GL_ACCUM_ALPHA_BITS:
97 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits);
98 break;
99 case GL_ACCUM_CLEAR_VALUE:
100 params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]);
101 params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]);
102 params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]);
103 params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]);
104 break;
105 case GL_ALPHA_BIAS:
106 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias);
107 break;
108 case GL_ALPHA_BITS:
109 if (ctx->NewState & _NEW_BUFFERS)
110 _mesa_update_state(ctx);
111 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits);
112 break;
113 case GL_ALPHA_SCALE:
114 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale);
115 break;
116 case GL_ALPHA_TEST:
117 params[0] = ctx->Color.AlphaEnabled;
118 break;
119 case GL_ALPHA_TEST_FUNC:
120 params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc);
121 break;
122 case GL_ALPHA_TEST_REF:
123 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef);
124 break;
125 case GL_ATTRIB_STACK_DEPTH:
126 params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth);
127 break;
128 case GL_AUTO_NORMAL:
129 params[0] = ctx->Eval.AutoNormal;
130 break;
131 case GL_AUX_BUFFERS:
132 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers);
133 break;
134 case GL_BLEND:
135 params[0] = (ctx->Color.BlendEnabled & 1);
136 break;
137 case GL_BLEND_DST:
138 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
139 break;
140 case GL_BLEND_SRC:
141 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
142 break;
143 case GL_BLEND_SRC_RGB_EXT:
144 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
145 break;
146 case GL_BLEND_DST_RGB_EXT:
147 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
148 break;
149 case GL_BLEND_SRC_ALPHA_EXT:
150 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA);
151 break;
152 case GL_BLEND_DST_ALPHA_EXT:
153 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA);
154 break;
155 case GL_BLEND_EQUATION:
156 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB );
157 break;
158 case GL_BLEND_EQUATION_ALPHA_EXT:
159 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA );
160 break;
161 case GL_BLEND_COLOR_EXT:
162 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]);
163 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]);
164 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]);
165 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]);
166 break;
167 case GL_BLUE_BIAS:
168 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias);
169 break;
170 case GL_BLUE_BITS:
171 if (ctx->NewState & _NEW_BUFFERS)
172 _mesa_update_state(ctx);
173 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits);
174 break;
175 case GL_BLUE_SCALE:
176 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale);
177 break;
178 case GL_CLIENT_ATTRIB_STACK_DEPTH:
179 params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth);
180 break;
181 case GL_CLIP_PLANE0:
182 params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1;
183 break;
184 case GL_CLIP_PLANE1:
185 params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1;
186 break;
187 case GL_CLIP_PLANE2:
188 params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1;
189 break;
190 case GL_CLIP_PLANE3:
191 params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1;
192 break;
193 case GL_CLIP_PLANE4:
194 params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1;
195 break;
196 case GL_CLIP_PLANE5:
197 params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1;
198 break;
199 case GL_COLOR_CLEAR_VALUE:
200 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]);
201 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]);
202 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]);
203 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]);
204 break;
205 case GL_COLOR_MATERIAL:
206 params[0] = ctx->Light.ColorMaterialEnabled;
207 break;
208 case GL_COLOR_MATERIAL_FACE:
209 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace);
210 break;
211 case GL_COLOR_MATERIAL_PARAMETER:
212 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode);
213 break;
214 case GL_COLOR_WRITEMASK:
215 params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0);
216 params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0);
217 params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0);
218 params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0);
219 break;
220 case GL_CULL_FACE:
221 params[0] = ctx->Polygon.CullFlag;
222 break;
223 case GL_CULL_FACE_MODE:
224 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode);
225 break;
226 case GL_CURRENT_COLOR:
227 FLUSH_CURRENT(ctx, 0);
228 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
229 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
230 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
231 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
232 break;
233 case GL_CURRENT_INDEX:
234 FLUSH_CURRENT(ctx, 0);
235 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
236 break;
237 case GL_CURRENT_NORMAL:
238 FLUSH_CURRENT(ctx, 0);
239 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
240 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
241 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
242 break;
243 case GL_CURRENT_RASTER_COLOR:
244 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]);
245 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]);
246 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]);
247 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]);
248 break;
249 case GL_CURRENT_RASTER_DISTANCE:
250 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance);
251 break;
252 case GL_CURRENT_RASTER_INDEX:
253 params[0] = FLOAT_TO_BOOLEAN(1.0);
254 break;
255 case GL_CURRENT_RASTER_POSITION:
256 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]);
257 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]);
258 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]);
259 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]);
260 break;
261 case GL_CURRENT_RASTER_SECONDARY_COLOR:
262 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]);
263 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]);
264 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]);
265 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]);
266 break;
267 case GL_CURRENT_RASTER_TEXTURE_COORDS:
268 {
269 const GLuint unit = ctx->Texture.CurrentUnit;
270 if (unit >= ctx->Const.MaxTextureCoordUnits) {
271 _mesa_error(ctx, GL_INVALID_OPERATION,
272 "glGet(raster tex coords, unit %u)", unit);
273 return;
274 }
275 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[unit][0]);
276 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[unit][1]);
277 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[unit][2]);
278 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[unit][3]);
279 }
280 break;
281 case GL_CURRENT_RASTER_POSITION_VALID:
282 params[0] = ctx->Current.RasterPosValid;
283 break;
284 case GL_CURRENT_TEXTURE_COORDS:
285 {
286 const GLuint unit = ctx->Texture.CurrentUnit;
287 if (unit >= ctx->Const.MaxTextureCoordUnits) {
288 _mesa_error(ctx, GL_INVALID_OPERATION,
289 "glGet(current tex coords, unit %u)", unit);
290 return;
291 }
292 FLUSH_CURRENT(ctx, 0);
293 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]);
294 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]);
295 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]);
296 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]);
297 }
298 break;
299 case GL_DEPTH_BIAS:
300 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias);
301 break;
302 case GL_DEPTH_BITS:
303 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits);
304 break;
305 case GL_DEPTH_CLEAR_VALUE:
306 params[0] = FLOAT_TO_BOOLEAN(((GLfloat) ctx->Depth.Clear));
307 break;
308 case GL_DEPTH_FUNC:
309 params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func);
310 break;
311 case GL_DEPTH_RANGE:
312 params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near);
313 params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far);
314 break;
315 case GL_DEPTH_SCALE:
316 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale);
317 break;
318 case GL_DEPTH_TEST:
319 params[0] = ctx->Depth.Test;
320 break;
321 case GL_DEPTH_WRITEMASK:
322 params[0] = ctx->Depth.Mask;
323 break;
324 case GL_DITHER:
325 params[0] = ctx->Color.DitherFlag;
326 break;
327 case GL_DOUBLEBUFFER:
328 params[0] = ctx->DrawBuffer->Visual.doubleBufferMode;
329 break;
330 case GL_DRAW_BUFFER:
331 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
332 break;
333 case GL_EDGE_FLAG:
334 FLUSH_CURRENT(ctx, 0);
335 params[0] = (ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0);
336 break;
337 case GL_FEEDBACK_BUFFER_SIZE:
338 params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize);
339 break;
340 case GL_FEEDBACK_BUFFER_TYPE:
341 params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type);
342 break;
343 case GL_FOG:
344 params[0] = ctx->Fog.Enabled;
345 break;
346 case GL_FOG_COLOR:
347 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]);
348 params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]);
349 params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]);
350 params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]);
351 break;
352 case GL_FOG_DENSITY:
353 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density);
354 break;
355 case GL_FOG_END:
356 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End);
357 break;
358 case GL_FOG_HINT:
359 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog);
360 break;
361 case GL_FOG_INDEX:
362 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index);
363 break;
364 case GL_FOG_MODE:
365 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode);
366 break;
367 case GL_FOG_START:
368 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start);
369 break;
370 case GL_FRONT_FACE:
371 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace);
372 break;
373 case GL_GREEN_BIAS:
374 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias);
375 break;
376 case GL_GREEN_BITS:
377 if (ctx->NewState & _NEW_BUFFERS)
378 _mesa_update_state(ctx);
379 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits);
380 break;
381 case GL_GREEN_SCALE:
382 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale);
383 break;
384 case GL_INDEX_BITS:
385 if (ctx->NewState & _NEW_BUFFERS)
386 _mesa_update_state(ctx);
387 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits);
388 break;
389 case GL_INDEX_CLEAR_VALUE:
390 params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex);
391 break;
392 case GL_INDEX_MODE:
393 params[0] = GL_FALSE;
394 break;
395 case GL_INDEX_OFFSET:
396 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset);
397 break;
398 case GL_INDEX_SHIFT:
399 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift);
400 break;
401 case GL_INDEX_WRITEMASK:
402 params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask);
403 break;
404 case GL_LIGHT0:
405 params[0] = ctx->Light.Light[0].Enabled;
406 break;
407 case GL_LIGHT1:
408 params[0] = ctx->Light.Light[1].Enabled;
409 break;
410 case GL_LIGHT2:
411 params[0] = ctx->Light.Light[2].Enabled;
412 break;
413 case GL_LIGHT3:
414 params[0] = ctx->Light.Light[3].Enabled;
415 break;
416 case GL_LIGHT4:
417 params[0] = ctx->Light.Light[4].Enabled;
418 break;
419 case GL_LIGHT5:
420 params[0] = ctx->Light.Light[5].Enabled;
421 break;
422 case GL_LIGHT6:
423 params[0] = ctx->Light.Light[6].Enabled;
424 break;
425 case GL_LIGHT7:
426 params[0] = ctx->Light.Light[7].Enabled;
427 break;
428 case GL_LIGHTING:
429 params[0] = ctx->Light.Enabled;
430 break;
431 case GL_LIGHT_MODEL_AMBIENT:
432 params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]);
433 params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]);
434 params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]);
435 params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]);
436 break;
437 case GL_LIGHT_MODEL_COLOR_CONTROL:
438 params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl);
439 break;
440 case GL_LIGHT_MODEL_LOCAL_VIEWER:
441 params[0] = ctx->Light.Model.LocalViewer;
442 break;
443 case GL_LIGHT_MODEL_TWO_SIDE:
444 params[0] = ctx->Light.Model.TwoSide;
445 break;
446 case GL_LINE_SMOOTH:
447 params[0] = ctx->Line.SmoothFlag;
448 break;
449 case GL_LINE_SMOOTH_HINT:
450 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth);
451 break;
452 case GL_LINE_STIPPLE:
453 params[0] = ctx->Line.StippleFlag;
454 break;
455 case GL_LINE_STIPPLE_PATTERN:
456 params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern);
457 break;
458 case GL_LINE_STIPPLE_REPEAT:
459 params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor);
460 break;
461 case GL_LINE_WIDTH:
462 params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width);
463 break;
464 case GL_LINE_WIDTH_GRANULARITY:
465 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity);
466 break;
467 case GL_LINE_WIDTH_RANGE:
468 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA);
469 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA);
470 break;
471 case GL_ALIASED_LINE_WIDTH_RANGE:
472 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth);
473 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth);
474 break;
475 case GL_LIST_BASE:
476 params[0] = INT_TO_BOOLEAN(ctx->List.ListBase);
477 break;
478 case GL_LIST_INDEX:
479 params[0] = INT_TO_BOOLEAN((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
480 break;
481 case GL_LIST_MODE:
482 {
483 GLenum mode;
484 if (!ctx->CompileFlag)
485 mode = 0;
486 else if (ctx->ExecuteFlag)
487 mode = GL_COMPILE_AND_EXECUTE;
488 else
489 mode = GL_COMPILE;
490 params[0] = ENUM_TO_BOOLEAN(mode);
491 }
492 break;
493 case GL_INDEX_LOGIC_OP:
494 params[0] = ctx->Color.IndexLogicOpEnabled;
495 break;
496 case GL_COLOR_LOGIC_OP:
497 params[0] = ctx->Color.ColorLogicOpEnabled;
498 break;
499 case GL_LOGIC_OP_MODE:
500 params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp);
501 break;
502 case GL_MAP1_COLOR_4:
503 params[0] = ctx->Eval.Map1Color4;
504 break;
505 case GL_MAP1_GRID_DOMAIN:
506 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1);
507 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2);
508 break;
509 case GL_MAP1_GRID_SEGMENTS:
510 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un);
511 break;
512 case GL_MAP1_INDEX:
513 params[0] = ctx->Eval.Map1Index;
514 break;
515 case GL_MAP1_NORMAL:
516 params[0] = ctx->Eval.Map1Normal;
517 break;
518 case GL_MAP1_TEXTURE_COORD_1:
519 params[0] = ctx->Eval.Map1TextureCoord1;
520 break;
521 case GL_MAP1_TEXTURE_COORD_2:
522 params[0] = ctx->Eval.Map1TextureCoord2;
523 break;
524 case GL_MAP1_TEXTURE_COORD_3:
525 params[0] = ctx->Eval.Map1TextureCoord3;
526 break;
527 case GL_MAP1_TEXTURE_COORD_4:
528 params[0] = ctx->Eval.Map1TextureCoord4;
529 break;
530 case GL_MAP1_VERTEX_3:
531 params[0] = ctx->Eval.Map1Vertex3;
532 break;
533 case GL_MAP1_VERTEX_4:
534 params[0] = ctx->Eval.Map1Vertex4;
535 break;
536 case GL_MAP2_COLOR_4:
537 params[0] = ctx->Eval.Map2Color4;
538 break;
539 case GL_MAP2_GRID_DOMAIN:
540 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1);
541 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2);
542 params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1);
543 params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2);
544 break;
545 case GL_MAP2_GRID_SEGMENTS:
546 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un);
547 params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn);
548 break;
549 case GL_MAP2_INDEX:
550 params[0] = ctx->Eval.Map2Index;
551 break;
552 case GL_MAP2_NORMAL:
553 params[0] = ctx->Eval.Map2Normal;
554 break;
555 case GL_MAP2_TEXTURE_COORD_1:
556 params[0] = ctx->Eval.Map2TextureCoord1;
557 break;
558 case GL_MAP2_TEXTURE_COORD_2:
559 params[0] = ctx->Eval.Map2TextureCoord2;
560 break;
561 case GL_MAP2_TEXTURE_COORD_3:
562 params[0] = ctx->Eval.Map2TextureCoord3;
563 break;
564 case GL_MAP2_TEXTURE_COORD_4:
565 params[0] = ctx->Eval.Map2TextureCoord4;
566 break;
567 case GL_MAP2_VERTEX_3:
568 params[0] = ctx->Eval.Map2Vertex3;
569 break;
570 case GL_MAP2_VERTEX_4:
571 params[0] = ctx->Eval.Map2Vertex4;
572 break;
573 case GL_MAP_COLOR:
574 params[0] = ctx->Pixel.MapColorFlag;
575 break;
576 case GL_MAP_STENCIL:
577 params[0] = ctx->Pixel.MapStencilFlag;
578 break;
579 case GL_MATRIX_MODE:
580 params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode);
581 break;
582 case GL_MAX_ATTRIB_STACK_DEPTH:
583 params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH);
584 break;
585 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
586 params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH);
587 break;
588 case GL_MAX_CLIP_PLANES:
589 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes);
590 break;
591 case GL_MAX_ELEMENTS_VERTICES:
592 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
593 break;
594 case GL_MAX_ELEMENTS_INDICES:
595 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
596 break;
597 case GL_MAX_EVAL_ORDER:
598 params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER);
599 break;
600 case GL_MAX_LIGHTS:
601 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights);
602 break;
603 case GL_MAX_LIST_NESTING:
604 params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING);
605 break;
606 case GL_MAX_MODELVIEW_STACK_DEPTH:
607 params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH);
608 break;
609 case GL_MAX_NAME_STACK_DEPTH:
610 params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH);
611 break;
612 case GL_MAX_PIXEL_MAP_TABLE:
613 params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE);
614 break;
615 case GL_MAX_PROJECTION_STACK_DEPTH:
616 params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH);
617 break;
618 case GL_MAX_TEXTURE_SIZE:
619 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1));
620 break;
621 case GL_MAX_3D_TEXTURE_SIZE:
622 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1));
623 break;
624 case GL_MAX_TEXTURE_STACK_DEPTH:
625 params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH);
626 break;
627 case GL_MAX_VIEWPORT_DIMS:
628 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth);
629 params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight);
630 break;
631 case GL_MODELVIEW_MATRIX:
632 {
633 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
634 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
635 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
636 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
637 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
638 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
639 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
640 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
641 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
642 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
643 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
644 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
645 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
646 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
647 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
648 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
649 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
650 }
651 break;
652 case GL_MODELVIEW_STACK_DEPTH:
653 params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1);
654 break;
655 case GL_NAME_STACK_DEPTH:
656 params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth);
657 break;
658 case GL_NORMALIZE:
659 params[0] = ctx->Transform.Normalize;
660 break;
661 case GL_PACK_ALIGNMENT:
662 params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment);
663 break;
664 case GL_PACK_LSB_FIRST:
665 params[0] = ctx->Pack.LsbFirst;
666 break;
667 case GL_PACK_ROW_LENGTH:
668 params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength);
669 break;
670 case GL_PACK_SKIP_PIXELS:
671 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels);
672 break;
673 case GL_PACK_SKIP_ROWS:
674 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows);
675 break;
676 case GL_PACK_SWAP_BYTES:
677 params[0] = ctx->Pack.SwapBytes;
678 break;
679 case GL_PACK_SKIP_IMAGES_EXT:
680 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages);
681 break;
682 case GL_PACK_IMAGE_HEIGHT_EXT:
683 params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight);
684 break;
685 case GL_PACK_INVERT_MESA:
686 params[0] = ctx->Pack.Invert;
687 break;
688 case GL_PERSPECTIVE_CORRECTION_HINT:
689 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection);
690 break;
691 case GL_PIXEL_MAP_A_TO_A_SIZE:
692 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.AtoA.Size);
693 break;
694 case GL_PIXEL_MAP_B_TO_B_SIZE:
695 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.BtoB.Size);
696 break;
697 case GL_PIXEL_MAP_G_TO_G_SIZE:
698 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.GtoG.Size);
699 break;
700 case GL_PIXEL_MAP_I_TO_A_SIZE:
701 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoA.Size);
702 break;
703 case GL_PIXEL_MAP_I_TO_B_SIZE:
704 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoB.Size);
705 break;
706 case GL_PIXEL_MAP_I_TO_G_SIZE:
707 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoG.Size);
708 break;
709 case GL_PIXEL_MAP_I_TO_I_SIZE:
710 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoI.Size);
711 break;
712 case GL_PIXEL_MAP_I_TO_R_SIZE:
713 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoR.Size);
714 break;
715 case GL_PIXEL_MAP_R_TO_R_SIZE:
716 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.RtoR.Size);
717 break;
718 case GL_PIXEL_MAP_S_TO_S_SIZE:
719 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.StoS.Size);
720 break;
721 case GL_POINT_SIZE:
722 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size);
723 break;
724 case GL_POINT_SIZE_GRANULARITY:
725 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity);
726 break;
727 case GL_POINT_SIZE_RANGE:
728 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA);
729 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA);
730 break;
731 case GL_ALIASED_POINT_SIZE_RANGE:
732 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize);
733 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize);
734 break;
735 case GL_POINT_SMOOTH:
736 params[0] = ctx->Point.SmoothFlag;
737 break;
738 case GL_POINT_SMOOTH_HINT:
739 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth);
740 break;
741 case GL_POINT_SIZE_MIN_EXT:
742 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize);
743 break;
744 case GL_POINT_SIZE_MAX_EXT:
745 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize);
746 break;
747 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
748 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold);
749 break;
750 case GL_DISTANCE_ATTENUATION_EXT:
751 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]);
752 params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]);
753 params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]);
754 break;
755 case GL_POLYGON_MODE:
756 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode);
757 params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode);
758 break;
759 case GL_POLYGON_OFFSET_BIAS_EXT:
760 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits);
761 break;
762 case GL_POLYGON_OFFSET_FACTOR:
763 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor );
764 break;
765 case GL_POLYGON_OFFSET_UNITS:
766 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits );
767 break;
768 case GL_POLYGON_OFFSET_POINT:
769 params[0] = ctx->Polygon.OffsetPoint;
770 break;
771 case GL_POLYGON_OFFSET_LINE:
772 params[0] = ctx->Polygon.OffsetLine;
773 break;
774 case GL_POLYGON_OFFSET_FILL:
775 params[0] = ctx->Polygon.OffsetFill;
776 break;
777 case GL_POLYGON_SMOOTH:
778 params[0] = ctx->Polygon.SmoothFlag;
779 break;
780 case GL_POLYGON_SMOOTH_HINT:
781 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth);
782 break;
783 case GL_POLYGON_STIPPLE:
784 params[0] = ctx->Polygon.StippleFlag;
785 break;
786 case GL_PROJECTION_MATRIX:
787 {
788 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
789 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
790 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
791 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
792 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
793 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
794 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
795 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
796 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
797 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
798 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
799 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
800 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
801 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
802 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
803 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
804 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
805 }
806 break;
807 case GL_PROJECTION_STACK_DEPTH:
808 params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1);
809 break;
810 case GL_READ_BUFFER:
811 params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer);
812 break;
813 case GL_RED_BIAS:
814 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias);
815 break;
816 case GL_RED_BITS:
817 if (ctx->NewState & _NEW_BUFFERS)
818 _mesa_update_state(ctx);
819 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.redBits);
820 break;
821 case GL_RED_SCALE:
822 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale);
823 break;
824 case GL_RENDER_MODE:
825 params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode);
826 break;
827 case GL_RESCALE_NORMAL:
828 params[0] = ctx->Transform.RescaleNormals;
829 break;
830 case GL_RGBA_MODE:
831 params[0] = GL_TRUE;
832 break;
833 case GL_SCISSOR_BOX:
834 params[0] = INT_TO_BOOLEAN(ctx->Scissor.X);
835 params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y);
836 params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width);
837 params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height);
838 break;
839 case GL_SCISSOR_TEST:
840 params[0] = ctx->Scissor.Enabled;
841 break;
842 case GL_SELECTION_BUFFER_SIZE:
843 params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize);
844 break;
845 case GL_SHADE_MODEL:
846 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel);
847 break;
848 case GL_SHARED_TEXTURE_PALETTE_EXT:
849 params[0] = ctx->Texture.SharedPalette;
850 break;
851 case GL_STENCIL_BITS:
852 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits);
853 break;
854 case GL_STENCIL_CLEAR_VALUE:
855 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear);
856 break;
857 case GL_STENCIL_FAIL:
858 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
859 break;
860 case GL_STENCIL_FUNC:
861 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
862 break;
863 case GL_STENCIL_PASS_DEPTH_FAIL:
864 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
865 break;
866 case GL_STENCIL_PASS_DEPTH_PASS:
867 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
868 break;
869 case GL_STENCIL_REF:
870 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
871 break;
872 case GL_STENCIL_TEST:
873 params[0] = ctx->Stencil.Enabled;
874 break;
875 case GL_STENCIL_VALUE_MASK:
876 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
877 break;
878 case GL_STENCIL_WRITEMASK:
879 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
880 break;
881 case GL_STEREO:
882 params[0] = ctx->DrawBuffer->Visual.stereoMode;
883 break;
884 case GL_SUBPIXEL_BITS:
885 params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits);
886 break;
887 case GL_TEXTURE_1D:
888 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D);
889 break;
890 case GL_TEXTURE_2D:
891 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D);
892 break;
893 case GL_TEXTURE_3D:
894 params[0] = _mesa_IsEnabled(GL_TEXTURE_3D);
895 break;
896 case GL_TEXTURE_1D_ARRAY_EXT:
897 CHECK_EXT1(MESA_texture_array);
898 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT);
899 break;
900 case GL_TEXTURE_2D_ARRAY_EXT:
901 CHECK_EXT1(MESA_texture_array);
902 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT);
903 break;
904 case GL_TEXTURE_BINDING_1D:
905 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
906 break;
907 case GL_TEXTURE_BINDING_2D:
908 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
909 break;
910 case GL_TEXTURE_BINDING_3D:
911 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
912 break;
913 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
914 CHECK_EXT1(MESA_texture_array);
915 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
916 break;
917 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
918 CHECK_EXT1(MESA_texture_array);
919 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
920 break;
921 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
922 CHECK_EXT1(MESA_texture_array);
923 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayTextureLayers);
924 break;
925 case GL_TEXTURE_GEN_S:
926 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0);
927 break;
928 case GL_TEXTURE_GEN_T:
929 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0);
930 break;
931 case GL_TEXTURE_GEN_R:
932 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0);
933 break;
934 case GL_TEXTURE_GEN_Q:
935 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0);
936 break;
937 case GL_TEXTURE_MATRIX:
938 {
939 const GLfloat *matrix;
940 const GLuint unit = ctx->Texture.CurrentUnit;
941 if (unit >= ctx->Const.MaxTextureCoordUnits) {
942 _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
943 unit);
944 return;
945 }
946 matrix = ctx->TextureMatrixStack[unit].Top->m;
947 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
948 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
949 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
950 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
951 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
952 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
953 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
954 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
955 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
956 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
957 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
958 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
959 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
960 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
961 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
962 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
963 }
964 break;
965 case GL_TEXTURE_STACK_DEPTH:
966 {
967 const GLuint unit = ctx->Texture.CurrentUnit;
968 if (unit >= ctx->Const.MaxTextureCoordUnits) {
969 _mesa_error(ctx, GL_INVALID_OPERATION,
970 "glGet(texture stack depth, unit %u)", unit);
971 return;
972 }
973 params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[unit].Depth + 1);
974 }
975 break;
976 case GL_UNPACK_ALIGNMENT:
977 params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment);
978 break;
979 case GL_UNPACK_LSB_FIRST:
980 params[0] = ctx->Unpack.LsbFirst;
981 break;
982 case GL_UNPACK_ROW_LENGTH:
983 params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength);
984 break;
985 case GL_UNPACK_SKIP_PIXELS:
986 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels);
987 break;
988 case GL_UNPACK_SKIP_ROWS:
989 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows);
990 break;
991 case GL_UNPACK_SWAP_BYTES:
992 params[0] = ctx->Unpack.SwapBytes;
993 break;
994 case GL_UNPACK_SKIP_IMAGES_EXT:
995 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages);
996 break;
997 case GL_UNPACK_IMAGE_HEIGHT_EXT:
998 params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight);
999 break;
1000 case GL_UNPACK_CLIENT_STORAGE_APPLE:
1001 params[0] = ctx->Unpack.ClientStorage;
1002 break;
1003 case GL_VIEWPORT:
1004 params[0] = INT_TO_BOOLEAN(ctx->Viewport.X);
1005 params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y);
1006 params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width);
1007 params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height);
1008 break;
1009 case GL_ZOOM_X:
1010 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX);
1011 break;
1012 case GL_ZOOM_Y:
1013 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY);
1014 break;
1015 case GL_VERTEX_ARRAY:
1016 params[0] = ctx->Array.ArrayObj->Vertex.Enabled;
1017 break;
1018 case GL_VERTEX_ARRAY_SIZE:
1019 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size);
1020 break;
1021 case GL_VERTEX_ARRAY_TYPE:
1022 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type);
1023 break;
1024 case GL_VERTEX_ARRAY_STRIDE:
1025 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride);
1026 break;
1027 case GL_VERTEX_ARRAY_COUNT_EXT:
1028 params[0] = INT_TO_BOOLEAN(0);
1029 break;
1030 case GL_NORMAL_ARRAY:
1031 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled);
1032 break;
1033 case GL_NORMAL_ARRAY_TYPE:
1034 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type);
1035 break;
1036 case GL_NORMAL_ARRAY_STRIDE:
1037 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride);
1038 break;
1039 case GL_NORMAL_ARRAY_COUNT_EXT:
1040 params[0] = INT_TO_BOOLEAN(0);
1041 break;
1042 case GL_COLOR_ARRAY:
1043 params[0] = ctx->Array.ArrayObj->Color.Enabled;
1044 break;
1045 case GL_COLOR_ARRAY_SIZE:
1046 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size);
1047 break;
1048 case GL_COLOR_ARRAY_TYPE:
1049 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type);
1050 break;
1051 case GL_COLOR_ARRAY_STRIDE:
1052 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride);
1053 break;
1054 case GL_COLOR_ARRAY_COUNT_EXT:
1055 params[0] = INT_TO_BOOLEAN(0);
1056 break;
1057 case GL_INDEX_ARRAY:
1058 params[0] = ctx->Array.ArrayObj->Index.Enabled;
1059 break;
1060 case GL_INDEX_ARRAY_TYPE:
1061 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type);
1062 break;
1063 case GL_INDEX_ARRAY_STRIDE:
1064 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride);
1065 break;
1066 case GL_INDEX_ARRAY_COUNT_EXT:
1067 params[0] = INT_TO_BOOLEAN(0);
1068 break;
1069 case GL_TEXTURE_COORD_ARRAY:
1070 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled;
1071 break;
1072 case GL_TEXTURE_COORD_ARRAY_SIZE:
1073 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
1074 break;
1075 case GL_TEXTURE_COORD_ARRAY_TYPE:
1076 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
1077 break;
1078 case GL_TEXTURE_COORD_ARRAY_STRIDE:
1079 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
1080 break;
1081 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
1082 params[0] = INT_TO_BOOLEAN(0);
1083 break;
1084 case GL_EDGE_FLAG_ARRAY:
1085 params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled;
1086 break;
1087 case GL_EDGE_FLAG_ARRAY_STRIDE:
1088 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride);
1089 break;
1090 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
1091 params[0] = INT_TO_BOOLEAN(0);
1092 break;
1093 case GL_MAX_TEXTURE_UNITS_ARB:
1094 CHECK_EXT1(ARB_multitexture);
1095 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits);
1096 break;
1097 case GL_ACTIVE_TEXTURE_ARB:
1098 CHECK_EXT1(ARB_multitexture);
1099 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
1100 break;
1101 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
1102 CHECK_EXT1(ARB_multitexture);
1103 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
1104 break;
1105 case GL_TEXTURE_CUBE_MAP_ARB:
1106 CHECK_EXT1(ARB_texture_cube_map);
1107 params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
1108 break;
1109 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
1110 CHECK_EXT1(ARB_texture_cube_map);
1111 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
1112 break;
1113 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
1114 CHECK_EXT1(ARB_texture_cube_map);
1115 params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
1116 break;
1117 case GL_TEXTURE_COMPRESSION_HINT_ARB:
1118 params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
1119 break;
1120 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
1121 params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
1122 break;
1123 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
1124 {
1125 GLint formats[100];
1126 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
1127 ASSERT(n <= 100);
1128 for (i = 0; i < n; i++)
1129 params[i] = ENUM_TO_BOOLEAN(formats[i]);
1130 }
1131 break;
1132 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
1133 CHECK_EXT1(EXT_compiled_vertex_array);
1134 params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst);
1135 break;
1136 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
1137 CHECK_EXT1(EXT_compiled_vertex_array);
1138 params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount);
1139 break;
1140 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
1141 {
1142 const GLfloat *matrix = ctx->ColorMatrixStack.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_MODELVIEW_MATRIX_ARB:
1162 {
1163 const GLfloat *matrix = ctx->ModelviewMatrixStack.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_TRANSPOSE_PROJECTION_MATRIX_ARB:
1183 {
1184 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
1185 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1186 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1187 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1188 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1189 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1190 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1191 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1192 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1193 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1194 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1195 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1196 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1197 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1198 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1199 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1200 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1201 }
1202 break;
1203 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
1204 {
1205 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
1206 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1207 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1208 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1209 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1210 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1211 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1212 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1213 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1214 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1215 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1216 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1217 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1218 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1219 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1220 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1221 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1222 }
1223 break;
1224 case GL_COLOR_MATRIX_SGI:
1225 {
1226 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
1227 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1228 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
1229 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
1230 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
1231 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
1232 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1233 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
1234 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
1235 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
1236 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
1237 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1238 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
1239 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
1240 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
1241 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
1242 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1243 }
1244 break;
1245 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
1246 params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1);
1247 break;
1248 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
1249 params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH);
1250 break;
1251 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
1252 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]);
1253 break;
1254 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
1255 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]);
1256 break;
1257 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
1258 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]);
1259 break;
1260 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
1261 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]);
1262 break;
1263 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
1264 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]);
1265 break;
1266 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
1267 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]);
1268 break;
1269 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
1270 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]);
1271 break;
1272 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
1273 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]);
1274 break;
1275 case GL_CONVOLUTION_1D_EXT:
1276 CHECK_EXT1(EXT_convolution);
1277 params[0] = ctx->Pixel.Convolution1DEnabled;
1278 break;
1279 case GL_CONVOLUTION_2D_EXT:
1280 CHECK_EXT1(EXT_convolution);
1281 params[0] = ctx->Pixel.Convolution2DEnabled;
1282 break;
1283 case GL_SEPARABLE_2D_EXT:
1284 CHECK_EXT1(EXT_convolution);
1285 params[0] = ctx->Pixel.Separable2DEnabled;
1286 break;
1287 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
1288 CHECK_EXT1(EXT_convolution);
1289 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]);
1290 break;
1291 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
1292 CHECK_EXT1(EXT_convolution);
1293 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]);
1294 break;
1295 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
1296 CHECK_EXT1(EXT_convolution);
1297 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]);
1298 break;
1299 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
1300 CHECK_EXT1(EXT_convolution);
1301 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]);
1302 break;
1303 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
1304 CHECK_EXT1(EXT_convolution);
1305 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]);
1306 break;
1307 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
1308 CHECK_EXT1(EXT_convolution);
1309 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]);
1310 break;
1311 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
1312 CHECK_EXT1(EXT_convolution);
1313 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]);
1314 break;
1315 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
1316 CHECK_EXT1(EXT_convolution);
1317 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]);
1318 break;
1319 case GL_HISTOGRAM:
1320 CHECK_EXT1(EXT_histogram);
1321 params[0] = ctx->Pixel.HistogramEnabled;
1322 break;
1323 case GL_MINMAX:
1324 CHECK_EXT1(EXT_histogram);
1325 params[0] = ctx->Pixel.MinMaxEnabled;
1326 break;
1327 case GL_COLOR_TABLE_SGI:
1328 CHECK_EXT1(SGI_color_table);
1329 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION];
1330 break;
1331 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
1332 CHECK_EXT1(SGI_color_table);
1333 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION];
1334 break;
1335 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
1336 CHECK_EXT1(SGI_color_table);
1337 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX];
1338 break;
1339 case GL_TEXTURE_COLOR_TABLE_SGI:
1340 CHECK_EXT1(SGI_texture_color_table);
1341 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled;
1342 break;
1343 case GL_COLOR_SUM_EXT:
1344 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program);
1345 params[0] = ctx->Fog.ColorSumEnabled;
1346 break;
1347 case GL_CURRENT_SECONDARY_COLOR_EXT:
1348 CHECK_EXT1(EXT_secondary_color);
1349 FLUSH_CURRENT(ctx, 0);
1350 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
1351 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
1352 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
1353 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
1354 break;
1355 case GL_SECONDARY_COLOR_ARRAY_EXT:
1356 CHECK_EXT1(EXT_secondary_color);
1357 params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled;
1358 break;
1359 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
1360 CHECK_EXT1(EXT_secondary_color);
1361 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type);
1362 break;
1363 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
1364 CHECK_EXT1(EXT_secondary_color);
1365 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride);
1366 break;
1367 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
1368 CHECK_EXT1(EXT_secondary_color);
1369 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size);
1370 break;
1371 case GL_CURRENT_FOG_COORDINATE_EXT:
1372 CHECK_EXT1(EXT_fog_coord);
1373 FLUSH_CURRENT(ctx, 0);
1374 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
1375 break;
1376 case GL_FOG_COORDINATE_ARRAY_EXT:
1377 CHECK_EXT1(EXT_fog_coord);
1378 params[0] = ctx->Array.ArrayObj->FogCoord.Enabled;
1379 break;
1380 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
1381 CHECK_EXT1(EXT_fog_coord);
1382 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type);
1383 break;
1384 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
1385 CHECK_EXT1(EXT_fog_coord);
1386 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride);
1387 break;
1388 case GL_FOG_COORDINATE_SOURCE_EXT:
1389 CHECK_EXT1(EXT_fog_coord);
1390 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource);
1391 break;
1392 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
1393 CHECK_EXT1(EXT_texture_lod_bias);
1394 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias);
1395 break;
1396 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
1397 CHECK_EXT1(EXT_texture_filter_anisotropic);
1398 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy);
1399 break;
1400 case GL_MULTISAMPLE_ARB:
1401 params[0] = ctx->Multisample.Enabled;
1402 break;
1403 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
1404 params[0] = ctx->Multisample.SampleAlphaToCoverage;
1405 break;
1406 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
1407 params[0] = ctx->Multisample.SampleAlphaToOne;
1408 break;
1409 case GL_SAMPLE_COVERAGE_ARB:
1410 params[0] = ctx->Multisample.SampleCoverage;
1411 break;
1412 case GL_SAMPLE_COVERAGE_VALUE_ARB:
1413 params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue);
1414 break;
1415 case GL_SAMPLE_COVERAGE_INVERT_ARB:
1416 params[0] = ctx->Multisample.SampleCoverageInvert;
1417 break;
1418 case GL_SAMPLE_BUFFERS_ARB:
1419 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers);
1420 break;
1421 case GL_SAMPLES_ARB:
1422 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples);
1423 break;
1424 case GL_RASTER_POSITION_UNCLIPPED_IBM:
1425 CHECK_EXT1(IBM_rasterpos_clip);
1426 params[0] = ctx->Transform.RasterPositionUnclipped;
1427 break;
1428 case GL_POINT_SPRITE_NV:
1429 CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
1430 params[0] = ctx->Point.PointSprite;
1431 break;
1432 case GL_POINT_SPRITE_R_MODE_NV:
1433 CHECK_EXT1(NV_point_sprite);
1434 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode);
1435 break;
1436 case GL_POINT_SPRITE_COORD_ORIGIN:
1437 CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
1438 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin);
1439 break;
1440 case GL_GENERATE_MIPMAP_HINT_SGIS:
1441 CHECK_EXT1(SGIS_generate_mipmap);
1442 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap);
1443 break;
1444 case GL_VERTEX_PROGRAM_BINDING_NV:
1445 CHECK_EXT1(NV_vertex_program);
1446 params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
1447 break;
1448 case GL_VERTEX_ATTRIB_ARRAY0_NV:
1449 CHECK_EXT1(NV_vertex_program);
1450 params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled;
1451 break;
1452 case GL_VERTEX_ATTRIB_ARRAY1_NV:
1453 CHECK_EXT1(NV_vertex_program);
1454 params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled;
1455 break;
1456 case GL_VERTEX_ATTRIB_ARRAY2_NV:
1457 CHECK_EXT1(NV_vertex_program);
1458 params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled;
1459 break;
1460 case GL_VERTEX_ATTRIB_ARRAY3_NV:
1461 CHECK_EXT1(NV_vertex_program);
1462 params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled;
1463 break;
1464 case GL_VERTEX_ATTRIB_ARRAY4_NV:
1465 CHECK_EXT1(NV_vertex_program);
1466 params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled;
1467 break;
1468 case GL_VERTEX_ATTRIB_ARRAY5_NV:
1469 CHECK_EXT1(NV_vertex_program);
1470 params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled;
1471 break;
1472 case GL_VERTEX_ATTRIB_ARRAY6_NV:
1473 CHECK_EXT1(NV_vertex_program);
1474 params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled;
1475 break;
1476 case GL_VERTEX_ATTRIB_ARRAY7_NV:
1477 CHECK_EXT1(NV_vertex_program);
1478 params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled;
1479 break;
1480 case GL_VERTEX_ATTRIB_ARRAY8_NV:
1481 CHECK_EXT1(NV_vertex_program);
1482 params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled;
1483 break;
1484 case GL_VERTEX_ATTRIB_ARRAY9_NV:
1485 CHECK_EXT1(NV_vertex_program);
1486 params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled;
1487 break;
1488 case GL_VERTEX_ATTRIB_ARRAY10_NV:
1489 CHECK_EXT1(NV_vertex_program);
1490 params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled;
1491 break;
1492 case GL_VERTEX_ATTRIB_ARRAY11_NV:
1493 CHECK_EXT1(NV_vertex_program);
1494 params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled;
1495 break;
1496 case GL_VERTEX_ATTRIB_ARRAY12_NV:
1497 CHECK_EXT1(NV_vertex_program);
1498 params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled;
1499 break;
1500 case GL_VERTEX_ATTRIB_ARRAY13_NV:
1501 CHECK_EXT1(NV_vertex_program);
1502 params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled;
1503 break;
1504 case GL_VERTEX_ATTRIB_ARRAY14_NV:
1505 CHECK_EXT1(NV_vertex_program);
1506 params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled;
1507 break;
1508 case GL_VERTEX_ATTRIB_ARRAY15_NV:
1509 CHECK_EXT1(NV_vertex_program);
1510 params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled;
1511 break;
1512 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
1513 CHECK_EXT1(NV_vertex_program);
1514 params[0] = ctx->Eval.Map1Attrib[0];
1515 break;
1516 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
1517 CHECK_EXT1(NV_vertex_program);
1518 params[0] = ctx->Eval.Map1Attrib[1];
1519 break;
1520 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
1521 CHECK_EXT1(NV_vertex_program);
1522 params[0] = ctx->Eval.Map1Attrib[2];
1523 break;
1524 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
1525 CHECK_EXT1(NV_vertex_program);
1526 params[0] = ctx->Eval.Map1Attrib[3];
1527 break;
1528 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
1529 CHECK_EXT1(NV_vertex_program);
1530 params[0] = ctx->Eval.Map1Attrib[4];
1531 break;
1532 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
1533 CHECK_EXT1(NV_vertex_program);
1534 params[0] = ctx->Eval.Map1Attrib[5];
1535 break;
1536 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
1537 CHECK_EXT1(NV_vertex_program);
1538 params[0] = ctx->Eval.Map1Attrib[6];
1539 break;
1540 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
1541 CHECK_EXT1(NV_vertex_program);
1542 params[0] = ctx->Eval.Map1Attrib[7];
1543 break;
1544 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
1545 CHECK_EXT1(NV_vertex_program);
1546 params[0] = ctx->Eval.Map1Attrib[8];
1547 break;
1548 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
1549 CHECK_EXT1(NV_vertex_program);
1550 params[0] = ctx->Eval.Map1Attrib[9];
1551 break;
1552 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
1553 CHECK_EXT1(NV_vertex_program);
1554 params[0] = ctx->Eval.Map1Attrib[10];
1555 break;
1556 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
1557 CHECK_EXT1(NV_vertex_program);
1558 params[0] = ctx->Eval.Map1Attrib[11];
1559 break;
1560 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
1561 CHECK_EXT1(NV_vertex_program);
1562 params[0] = ctx->Eval.Map1Attrib[12];
1563 break;
1564 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
1565 CHECK_EXT1(NV_vertex_program);
1566 params[0] = ctx->Eval.Map1Attrib[13];
1567 break;
1568 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
1569 CHECK_EXT1(NV_vertex_program);
1570 params[0] = ctx->Eval.Map1Attrib[14];
1571 break;
1572 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
1573 CHECK_EXT1(NV_vertex_program);
1574 params[0] = ctx->Eval.Map1Attrib[15];
1575 break;
1576 case GL_FRAGMENT_PROGRAM_NV:
1577 CHECK_EXT1(NV_fragment_program);
1578 params[0] = ctx->FragmentProgram.Enabled;
1579 break;
1580 case GL_FRAGMENT_PROGRAM_BINDING_NV:
1581 CHECK_EXT1(NV_fragment_program);
1582 params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
1583 break;
1584 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
1585 CHECK_EXT1(NV_fragment_program);
1586 params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
1587 break;
1588 case GL_TEXTURE_RECTANGLE_NV:
1589 CHECK_EXT1(NV_texture_rectangle);
1590 params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV);
1591 break;
1592 case GL_TEXTURE_BINDING_RECTANGLE_NV:
1593 CHECK_EXT1(NV_texture_rectangle);
1594 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
1595 break;
1596 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
1597 CHECK_EXT1(NV_texture_rectangle);
1598 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize);
1599 break;
1600 case GL_STENCIL_TEST_TWO_SIDE_EXT:
1601 CHECK_EXT1(EXT_stencil_two_side);
1602 params[0] = ctx->Stencil.TestTwoSide;
1603 break;
1604 case GL_ACTIVE_STENCIL_FACE_EXT:
1605 CHECK_EXT1(EXT_stencil_two_side);
1606 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
1607 break;
1608 case GL_MAX_SHININESS_NV:
1609 CHECK_EXT1(NV_light_max_exponent);
1610 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess);
1611 break;
1612 case GL_MAX_SPOT_EXPONENT_NV:
1613 CHECK_EXT1(NV_light_max_exponent);
1614 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent);
1615 break;
1616 case GL_ARRAY_BUFFER_BINDING_ARB:
1617 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name);
1618 break;
1619 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
1620 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
1621 break;
1622 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
1623 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name);
1624 break;
1625 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
1626 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name);
1627 break;
1628 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
1629 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name);
1630 break;
1631 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
1632 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
1633 break;
1634 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
1635 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
1636 break;
1637 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
1638 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
1639 break;
1640 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
1641 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
1642 break;
1643 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
1644 params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name);
1645 break;
1646 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
1647 CHECK_EXT1(EXT_pixel_buffer_object);
1648 params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name);
1649 break;
1650 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
1651 CHECK_EXT1(EXT_pixel_buffer_object);
1652 params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name);
1653 break;
1654 case GL_VERTEX_PROGRAM_ARB:
1655 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
1656 params[0] = ctx->VertexProgram.Enabled;
1657 break;
1658 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
1659 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
1660 params[0] = ctx->VertexProgram.PointSizeEnabled;
1661 break;
1662 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
1663 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
1664 params[0] = ctx->VertexProgram.TwoSideEnabled;
1665 break;
1666 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
1667 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
1668 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth);
1669 break;
1670 case GL_MAX_PROGRAM_MATRICES_ARB:
1671 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
1672 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices);
1673 break;
1674 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
1675 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
1676 params[0] = ctx->CurrentStack->Depth + 1;
1677 break;
1678 case GL_CURRENT_MATRIX_ARB:
1679 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program);
1680 {
1681 const GLfloat *matrix = ctx->CurrentStack->Top->m;
1682 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1683 params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
1684 params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
1685 params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
1686 params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
1687 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1688 params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
1689 params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
1690 params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
1691 params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
1692 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1693 params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
1694 params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
1695 params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
1696 params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
1697 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1698 }
1699 break;
1700 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
1701 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program);
1702 {
1703 const GLfloat *matrix = ctx->CurrentStack->Top->m;
1704 params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
1705 params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
1706 params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
1707 params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
1708 params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
1709 params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
1710 params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
1711 params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
1712 params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
1713 params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
1714 params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
1715 params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
1716 params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
1717 params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
1718 params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
1719 params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
1720 }
1721 break;
1722 case GL_MAX_VERTEX_ATTRIBS_ARB:
1723 CHECK_EXT1(ARB_vertex_program);
1724 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs);
1725 break;
1726 case GL_PROGRAM_ERROR_POSITION_ARB:
1727 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program);
1728 params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos);
1729 break;
1730 case GL_FRAGMENT_PROGRAM_ARB:
1731 CHECK_EXT1(ARB_fragment_program);
1732 params[0] = ctx->FragmentProgram.Enabled;
1733 break;
1734 case GL_MAX_TEXTURE_COORDS_ARB:
1735 CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
1736 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits);
1737 break;
1738 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
1739 CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
1740 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits);
1741 break;
1742 case GL_DEPTH_BOUNDS_TEST_EXT:
1743 CHECK_EXT1(EXT_depth_bounds_test);
1744 params[0] = ctx->Depth.BoundsTest;
1745 break;
1746 case GL_DEPTH_BOUNDS_EXT:
1747 CHECK_EXT1(EXT_depth_bounds_test);
1748 params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
1749 params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
1750 break;
1751 case GL_DEPTH_CLAMP:
1752 CHECK_EXT1(ARB_depth_clamp);
1753 params[0] = ctx->Transform.DepthClamp;
1754 break;
1755 case GL_MAX_DRAW_BUFFERS_ARB:
1756 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
1757 break;
1758 case GL_DRAW_BUFFER0_ARB:
1759 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
1760 break;
1761 case GL_DRAW_BUFFER1_ARB:
1762 {
1763 GLenum buffer;
1764 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1765 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1766 return;
1767 }
1768 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
1769 params[0] = ENUM_TO_BOOLEAN(buffer);
1770 }
1771 break;
1772 case GL_DRAW_BUFFER2_ARB:
1773 {
1774 GLenum buffer;
1775 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1776 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1777 return;
1778 }
1779 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
1780 params[0] = ENUM_TO_BOOLEAN(buffer);
1781 }
1782 break;
1783 case GL_DRAW_BUFFER3_ARB:
1784 {
1785 GLenum buffer;
1786 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
1787 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
1788 return;
1789 }
1790 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
1791 params[0] = ENUM_TO_BOOLEAN(buffer);
1792 }
1793 break;
1794 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
1795 CHECK_EXT1(OES_read_format);
1796 if (ctx->NewState & _NEW_BUFFERS)
1797 _mesa_update_state(ctx);
1798 params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_type(ctx));
1799 break;
1800 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1801 CHECK_EXT1(OES_read_format);
1802 if (ctx->NewState & _NEW_BUFFERS)
1803 _mesa_update_state(ctx);
1804 params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_format(ctx));
1805 break;
1806 case GL_NUM_FRAGMENT_REGISTERS_ATI:
1807 CHECK_EXT1(ATI_fragment_shader);
1808 params[0] = INT_TO_BOOLEAN(6);
1809 break;
1810 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
1811 CHECK_EXT1(ATI_fragment_shader);
1812 params[0] = INT_TO_BOOLEAN(8);
1813 break;
1814 case GL_NUM_PASSES_ATI:
1815 CHECK_EXT1(ATI_fragment_shader);
1816 params[0] = INT_TO_BOOLEAN(2);
1817 break;
1818 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
1819 CHECK_EXT1(ATI_fragment_shader);
1820 params[0] = INT_TO_BOOLEAN(8);
1821 break;
1822 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
1823 CHECK_EXT1(ATI_fragment_shader);
1824 params[0] = INT_TO_BOOLEAN(16);
1825 break;
1826 case GL_COLOR_ALPHA_PAIRING_ATI:
1827 CHECK_EXT1(ATI_fragment_shader);
1828 params[0] = GL_TRUE;
1829 break;
1830 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
1831 CHECK_EXT1(ATI_fragment_shader);
1832 params[0] = INT_TO_BOOLEAN(3);
1833 break;
1834 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
1835 CHECK_EXT1(ATI_fragment_shader);
1836 params[0] = INT_TO_BOOLEAN(3);
1837 break;
1838 case GL_STENCIL_BACK_FUNC:
1839 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
1840 break;
1841 case GL_STENCIL_BACK_VALUE_MASK:
1842 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
1843 break;
1844 case GL_STENCIL_BACK_WRITEMASK:
1845 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]);
1846 break;
1847 case GL_STENCIL_BACK_REF:
1848 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
1849 break;
1850 case GL_STENCIL_BACK_FAIL:
1851 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
1852 break;
1853 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
1854 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
1855 break;
1856 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
1857 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
1858 break;
1859 case GL_FRAMEBUFFER_BINDING_EXT:
1860 CHECK_EXT1(EXT_framebuffer_object);
1861 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
1862 break;
1863 case GL_RENDERBUFFER_BINDING_EXT:
1864 CHECK_EXT1(EXT_framebuffer_object);
1865 params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
1866 break;
1867 case GL_MAX_COLOR_ATTACHMENTS_EXT:
1868 CHECK_EXT1(EXT_framebuffer_object);
1869 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
1870 break;
1871 case GL_MAX_RENDERBUFFER_SIZE_EXT:
1872 CHECK_EXT1(EXT_framebuffer_object);
1873 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
1874 break;
1875 case GL_READ_FRAMEBUFFER_BINDING_EXT:
1876 CHECK_EXT1(EXT_framebuffer_blit);
1877 params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name);
1878 break;
1879 case GL_PROVOKING_VERTEX_EXT:
1880 CHECK_EXT1(EXT_provoking_vertex);
1881 params[0] = ctx->Light.ProvokingVertex;
1882 break;
1883 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
1884 CHECK_EXT1(EXT_provoking_vertex);
1885 params[0] = ctx->Const.QuadsFollowProvokingVertexConvention;
1886 break;
1887 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
1888 CHECK_EXT1(ARB_fragment_shader);
1889 params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents);
1890 break;
1891 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
1892 CHECK_EXT1(ARB_fragment_shader);
1893 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
1894 break;
1895 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
1896 CHECK_EXT1(ARB_vertex_shader);
1897 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents);
1898 break;
1899 case GL_MAX_VARYING_FLOATS_ARB:
1900 CHECK_EXT1(ARB_vertex_shader);
1901 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4);
1902 break;
1903 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
1904 CHECK_EXT1(ARB_vertex_shader);
1905 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits);
1906 break;
1907 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
1908 CHECK_EXT1(ARB_vertex_shader);
1909 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxCombinedTextureImageUnits);
1910 break;
1911 case GL_CURRENT_PROGRAM:
1912 CHECK_EXT1(ARB_shader_objects);
1913 params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
1914 break;
1915 case GL_MAX_SAMPLES:
1916 CHECK_EXT1(ARB_framebuffer_object);
1917 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxSamples);
1918 break;
1919 case GL_VERTEX_ARRAY_BINDING_APPLE:
1920 CHECK_EXT1(APPLE_vertex_array_object);
1921 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Name);
1922 break;
1923 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
1924 CHECK_EXT1(ARB_seamless_cube_map);
1925 params[0] = ctx->Texture.CubeMapSeamless;
1926 break;
1927 case GL_MAX_SERVER_WAIT_TIMEOUT:
1928 CHECK_EXT1(ARB_sync);
1929 params[0] = INT64_TO_BOOLEAN(ctx->Const.MaxServerWaitTimeout);
1930 break;
1931 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
1932 CHECK_EXT1(EXT_transform_feedback);
1933 params[0] = INT_TO_BOOLEAN(ctx->TransformFeedback.CurrentBuffer->Name);
1934 break;
1935 case GL_RASTERIZER_DISCARD:
1936 CHECK_EXT1(EXT_transform_feedback);
1937 params[0] = ctx->TransformFeedback.RasterDiscard;
1938 break;
1939 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
1940 CHECK_EXT1(EXT_transform_feedback);
1941 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackInterleavedComponents);
1942 break;
1943 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
1944 CHECK_EXT1(EXT_transform_feedback);
1945 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackSeparateAttribs);
1946 break;
1947 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
1948 CHECK_EXT1(EXT_transform_feedback);
1949 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackSeparateComponents);
1950 break;
1951 case GL_NUM_EXTENSIONS:
1952 CHECK_VERSION(30);
1953 params[0] = INT_TO_BOOLEAN(_mesa_get_extension_count(ctx));
1954 break;
1955 case GL_MAJOR_VERSION:
1956 CHECK_VERSION(30);
1957 params[0] = INT_TO_BOOLEAN(ctx->VersionMajor);
1958 break;
1959 case GL_MINOR_VERSION:
1960 CHECK_VERSION(30);
1961 params[0] = INT_TO_BOOLEAN(ctx->VersionMinor);
1962 break;
1963 case GL_CONTEXT_FLAGS:
1964 CHECK_VERSION(30);
1965 params[0] = INT_TO_BOOLEAN(ctx->Const.ContextFlags);
1966 break;
1967 case GL_PRIMITIVE_RESTART:
1968 CHECK_VERSION(31);
1969 params[0] = ctx->Array.PrimitiveRestart;
1970 break;
1971 case GL_PRIMITIVE_RESTART_INDEX:
1972 CHECK_VERSION(31);
1973 params[0] = INT_TO_BOOLEAN(ctx->Array.RestartIndex);
1974 break;
1975 case GL_CONTEXT_PROFILE_MASK:
1976 CHECK_VERSION(32);
1977 params[0] = INT_TO_BOOLEAN(ctx->Const.ProfileMask);
1978 break;
1979 default:
1980 goto invalid_enum_error;
1981 }
1982 return;
1983
1984 invalid_enum_error:
1985 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
1986 }
1987
1988 void GLAPIENTRY
1989 _mesa_GetFloatv( GLenum pname, GLfloat *params )
1990 {
1991 GET_CURRENT_CONTEXT(ctx);
1992 const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
1993 ASSERT_OUTSIDE_BEGIN_END(ctx);
1994 (void) version;
1995
1996 if (!params)
1997 return;
1998
1999 switch (pname) {
2000 case GL_ACCUM_RED_BITS:
2001 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
2002 break;
2003 case GL_ACCUM_GREEN_BITS:
2004 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
2005 break;
2006 case GL_ACCUM_BLUE_BITS:
2007 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
2008 break;
2009 case GL_ACCUM_ALPHA_BITS:
2010 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
2011 break;
2012 case GL_ACCUM_CLEAR_VALUE:
2013 params[0] = ctx->Accum.ClearColor[0];
2014 params[1] = ctx->Accum.ClearColor[1];
2015 params[2] = ctx->Accum.ClearColor[2];
2016 params[3] = ctx->Accum.ClearColor[3];
2017 break;
2018 case GL_ALPHA_BIAS:
2019 params[0] = ctx->Pixel.AlphaBias;
2020 break;
2021 case GL_ALPHA_BITS:
2022 if (ctx->NewState & _NEW_BUFFERS)
2023 _mesa_update_state(ctx);
2024 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
2025 break;
2026 case GL_ALPHA_SCALE:
2027 params[0] = ctx->Pixel.AlphaScale;
2028 break;
2029 case GL_ALPHA_TEST:
2030 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
2031 break;
2032 case GL_ALPHA_TEST_FUNC:
2033 params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
2034 break;
2035 case GL_ALPHA_TEST_REF:
2036 params[0] = ctx->Color.AlphaRef;
2037 break;
2038 case GL_ATTRIB_STACK_DEPTH:
2039 params[0] = (GLfloat)(ctx->AttribStackDepth);
2040 break;
2041 case GL_AUTO_NORMAL:
2042 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
2043 break;
2044 case GL_AUX_BUFFERS:
2045 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
2046 break;
2047 case GL_BLEND:
2048 params[0] = BOOLEAN_TO_FLOAT((ctx->Color.BlendEnabled & 1));
2049 break;
2050 case GL_BLEND_DST:
2051 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
2052 break;
2053 case GL_BLEND_SRC:
2054 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
2055 break;
2056 case GL_BLEND_SRC_RGB_EXT:
2057 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
2058 break;
2059 case GL_BLEND_DST_RGB_EXT:
2060 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
2061 break;
2062 case GL_BLEND_SRC_ALPHA_EXT:
2063 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
2064 break;
2065 case GL_BLEND_DST_ALPHA_EXT:
2066 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
2067 break;
2068 case GL_BLEND_EQUATION:
2069 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
2070 break;
2071 case GL_BLEND_EQUATION_ALPHA_EXT:
2072 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
2073 break;
2074 case GL_BLEND_COLOR_EXT:
2075 params[0] = ctx->Color.BlendColor[0];
2076 params[1] = ctx->Color.BlendColor[1];
2077 params[2] = ctx->Color.BlendColor[2];
2078 params[3] = ctx->Color.BlendColor[3];
2079 break;
2080 case GL_BLUE_BIAS:
2081 params[0] = ctx->Pixel.BlueBias;
2082 break;
2083 case GL_BLUE_BITS:
2084 if (ctx->NewState & _NEW_BUFFERS)
2085 _mesa_update_state(ctx);
2086 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
2087 break;
2088 case GL_BLUE_SCALE:
2089 params[0] = ctx->Pixel.BlueScale;
2090 break;
2091 case GL_CLIENT_ATTRIB_STACK_DEPTH:
2092 params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
2093 break;
2094 case GL_CLIP_PLANE0:
2095 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
2096 break;
2097 case GL_CLIP_PLANE1:
2098 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
2099 break;
2100 case GL_CLIP_PLANE2:
2101 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
2102 break;
2103 case GL_CLIP_PLANE3:
2104 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
2105 break;
2106 case GL_CLIP_PLANE4:
2107 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
2108 break;
2109 case GL_CLIP_PLANE5:
2110 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
2111 break;
2112 case GL_COLOR_CLEAR_VALUE:
2113 params[0] = ctx->Color.ClearColor[0];
2114 params[1] = ctx->Color.ClearColor[1];
2115 params[2] = ctx->Color.ClearColor[2];
2116 params[3] = ctx->Color.ClearColor[3];
2117 break;
2118 case GL_COLOR_MATERIAL:
2119 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
2120 break;
2121 case GL_COLOR_MATERIAL_FACE:
2122 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
2123 break;
2124 case GL_COLOR_MATERIAL_PARAMETER:
2125 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
2126 break;
2127 case GL_COLOR_WRITEMASK:
2128 params[0] = (GLfloat)(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0);
2129 params[1] = (GLfloat)(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0);
2130 params[2] = (GLfloat)(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0);
2131 params[3] = (GLfloat)(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0);
2132 break;
2133 case GL_CULL_FACE:
2134 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
2135 break;
2136 case GL_CULL_FACE_MODE:
2137 params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
2138 break;
2139 case GL_CURRENT_COLOR:
2140 FLUSH_CURRENT(ctx, 0);
2141 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
2142 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
2143 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
2144 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
2145 break;
2146 case GL_CURRENT_INDEX:
2147 FLUSH_CURRENT(ctx, 0);
2148 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
2149 break;
2150 case GL_CURRENT_NORMAL:
2151 FLUSH_CURRENT(ctx, 0);
2152 params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
2153 params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
2154 params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
2155 break;
2156 case GL_CURRENT_RASTER_COLOR:
2157 params[0] = ctx->Current.RasterColor[0];
2158 params[1] = ctx->Current.RasterColor[1];
2159 params[2] = ctx->Current.RasterColor[2];
2160 params[3] = ctx->Current.RasterColor[3];
2161 break;
2162 case GL_CURRENT_RASTER_DISTANCE:
2163 params[0] = ctx->Current.RasterDistance;
2164 break;
2165 case GL_CURRENT_RASTER_INDEX:
2166 params[0] = 1.0;
2167 break;
2168 case GL_CURRENT_RASTER_POSITION:
2169 params[0] = ctx->Current.RasterPos[0];
2170 params[1] = ctx->Current.RasterPos[1];
2171 params[2] = ctx->Current.RasterPos[2];
2172 params[3] = ctx->Current.RasterPos[3];
2173 break;
2174 case GL_CURRENT_RASTER_SECONDARY_COLOR:
2175 params[0] = ctx->Current.RasterSecondaryColor[0];
2176 params[1] = ctx->Current.RasterSecondaryColor[1];
2177 params[2] = ctx->Current.RasterSecondaryColor[2];
2178 params[3] = ctx->Current.RasterSecondaryColor[3];
2179 break;
2180 case GL_CURRENT_RASTER_TEXTURE_COORDS:
2181 {
2182 const GLuint unit = ctx->Texture.CurrentUnit;
2183 if (unit >= ctx->Const.MaxTextureCoordUnits) {
2184 _mesa_error(ctx, GL_INVALID_OPERATION,
2185 "glGet(raster tex coords, unit %u)", unit);
2186 return;
2187 }
2188 params[0] = ctx->Current.RasterTexCoords[unit][0];
2189 params[1] = ctx->Current.RasterTexCoords[unit][1];
2190 params[2] = ctx->Current.RasterTexCoords[unit][2];
2191 params[3] = ctx->Current.RasterTexCoords[unit][3];
2192 }
2193 break;
2194 case GL_CURRENT_RASTER_POSITION_VALID:
2195 params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
2196 break;
2197 case GL_CURRENT_TEXTURE_COORDS:
2198 {
2199 const GLuint unit = ctx->Texture.CurrentUnit;
2200 if (unit >= ctx->Const.MaxTextureCoordUnits) {
2201 _mesa_error(ctx, GL_INVALID_OPERATION,
2202 "glGet(current tex coords, unit %u)", unit);
2203 return;
2204 }
2205 FLUSH_CURRENT(ctx, 0);
2206 params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0];
2207 params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1];
2208 params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2];
2209 params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3];
2210 }
2211 break;
2212 case GL_DEPTH_BIAS:
2213 params[0] = ctx->Pixel.DepthBias;
2214 break;
2215 case GL_DEPTH_BITS:
2216 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
2217 break;
2218 case GL_DEPTH_CLEAR_VALUE:
2219 params[0] = ((GLfloat) ctx->Depth.Clear);
2220 break;
2221 case GL_DEPTH_FUNC:
2222 params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
2223 break;
2224 case GL_DEPTH_RANGE:
2225 params[0] = ctx->Viewport.Near;
2226 params[1] = ctx->Viewport.Far;
2227 break;
2228 case GL_DEPTH_SCALE:
2229 params[0] = ctx->Pixel.DepthScale;
2230 break;
2231 case GL_DEPTH_TEST:
2232 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
2233 break;
2234 case GL_DEPTH_WRITEMASK:
2235 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
2236 break;
2237 case GL_DITHER:
2238 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
2239 break;
2240 case GL_DOUBLEBUFFER:
2241 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
2242 break;
2243 case GL_DRAW_BUFFER:
2244 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
2245 break;
2246 case GL_EDGE_FLAG:
2247 FLUSH_CURRENT(ctx, 0);
2248 params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
2249 break;
2250 case GL_FEEDBACK_BUFFER_SIZE:
2251 params[0] = (GLfloat)(ctx->Feedback.BufferSize);
2252 break;
2253 case GL_FEEDBACK_BUFFER_TYPE:
2254 params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
2255 break;
2256 case GL_FOG:
2257 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
2258 break;
2259 case GL_FOG_COLOR:
2260 params[0] = ctx->Fog.Color[0];
2261 params[1] = ctx->Fog.Color[1];
2262 params[2] = ctx->Fog.Color[2];
2263 params[3] = ctx->Fog.Color[3];
2264 break;
2265 case GL_FOG_DENSITY:
2266 params[0] = ctx->Fog.Density;
2267 break;
2268 case GL_FOG_END:
2269 params[0] = ctx->Fog.End;
2270 break;
2271 case GL_FOG_HINT:
2272 params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
2273 break;
2274 case GL_FOG_INDEX:
2275 params[0] = ctx->Fog.Index;
2276 break;
2277 case GL_FOG_MODE:
2278 params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
2279 break;
2280 case GL_FOG_START:
2281 params[0] = ctx->Fog.Start;
2282 break;
2283 case GL_FRONT_FACE:
2284 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
2285 break;
2286 case GL_GREEN_BIAS:
2287 params[0] = ctx->Pixel.GreenBias;
2288 break;
2289 case GL_GREEN_BITS:
2290 if (ctx->NewState & _NEW_BUFFERS)
2291 _mesa_update_state(ctx);
2292 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
2293 break;
2294 case GL_GREEN_SCALE:
2295 params[0] = ctx->Pixel.GreenScale;
2296 break;
2297 case GL_INDEX_BITS:
2298 if (ctx->NewState & _NEW_BUFFERS)
2299 _mesa_update_state(ctx);
2300 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
2301 break;
2302 case GL_INDEX_CLEAR_VALUE:
2303 params[0] = (GLfloat)(ctx->Color.ClearIndex);
2304 break;
2305 case GL_INDEX_MODE:
2306 params[0] = BOOLEAN_TO_FLOAT(GL_FALSE);
2307 break;
2308 case GL_INDEX_OFFSET:
2309 params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
2310 break;
2311 case GL_INDEX_SHIFT:
2312 params[0] = (GLfloat)(ctx->Pixel.IndexShift);
2313 break;
2314 case GL_INDEX_WRITEMASK:
2315 params[0] = (GLfloat)(ctx->Color.IndexMask);
2316 break;
2317 case GL_LIGHT0:
2318 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
2319 break;
2320 case GL_LIGHT1:
2321 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
2322 break;
2323 case GL_LIGHT2:
2324 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
2325 break;
2326 case GL_LIGHT3:
2327 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
2328 break;
2329 case GL_LIGHT4:
2330 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
2331 break;
2332 case GL_LIGHT5:
2333 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
2334 break;
2335 case GL_LIGHT6:
2336 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
2337 break;
2338 case GL_LIGHT7:
2339 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
2340 break;
2341 case GL_LIGHTING:
2342 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
2343 break;
2344 case GL_LIGHT_MODEL_AMBIENT:
2345 params[0] = ctx->Light.Model.Ambient[0];
2346 params[1] = ctx->Light.Model.Ambient[1];
2347 params[2] = ctx->Light.Model.Ambient[2];
2348 params[3] = ctx->Light.Model.Ambient[3];
2349 break;
2350 case GL_LIGHT_MODEL_COLOR_CONTROL:
2351 params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
2352 break;
2353 case GL_LIGHT_MODEL_LOCAL_VIEWER:
2354 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
2355 break;
2356 case GL_LIGHT_MODEL_TWO_SIDE:
2357 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
2358 break;
2359 case GL_LINE_SMOOTH:
2360 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
2361 break;
2362 case GL_LINE_SMOOTH_HINT:
2363 params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
2364 break;
2365 case GL_LINE_STIPPLE:
2366 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
2367 break;
2368 case GL_LINE_STIPPLE_PATTERN:
2369 params[0] = (GLfloat)(ctx->Line.StipplePattern);
2370 break;
2371 case GL_LINE_STIPPLE_REPEAT:
2372 params[0] = (GLfloat)(ctx->Line.StippleFactor);
2373 break;
2374 case GL_LINE_WIDTH:
2375 params[0] = ctx->Line.Width;
2376 break;
2377 case GL_LINE_WIDTH_GRANULARITY:
2378 params[0] = ctx->Const.LineWidthGranularity;
2379 break;
2380 case GL_LINE_WIDTH_RANGE:
2381 params[0] = ctx->Const.MinLineWidthAA;
2382 params[1] = ctx->Const.MaxLineWidthAA;
2383 break;
2384 case GL_ALIASED_LINE_WIDTH_RANGE:
2385 params[0] = ctx->Const.MinLineWidth;
2386 params[1] = ctx->Const.MaxLineWidth;
2387 break;
2388 case GL_LIST_BASE:
2389 params[0] = (GLfloat)(ctx->List.ListBase);
2390 break;
2391 case GL_LIST_INDEX:
2392 params[0] = (GLfloat)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
2393 break;
2394 case GL_LIST_MODE:
2395 {
2396 GLenum mode;
2397 if (!ctx->CompileFlag)
2398 mode = 0;
2399 else if (ctx->ExecuteFlag)
2400 mode = GL_COMPILE_AND_EXECUTE;
2401 else
2402 mode = GL_COMPILE;
2403 params[0] = ENUM_TO_FLOAT(mode);
2404 }
2405 break;
2406 case GL_INDEX_LOGIC_OP:
2407 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
2408 break;
2409 case GL_COLOR_LOGIC_OP:
2410 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
2411 break;
2412 case GL_LOGIC_OP_MODE:
2413 params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
2414 break;
2415 case GL_MAP1_COLOR_4:
2416 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
2417 break;
2418 case GL_MAP1_GRID_DOMAIN:
2419 params[0] = ctx->Eval.MapGrid1u1;
2420 params[1] = ctx->Eval.MapGrid1u2;
2421 break;
2422 case GL_MAP1_GRID_SEGMENTS:
2423 params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
2424 break;
2425 case GL_MAP1_INDEX:
2426 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
2427 break;
2428 case GL_MAP1_NORMAL:
2429 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
2430 break;
2431 case GL_MAP1_TEXTURE_COORD_1:
2432 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
2433 break;
2434 case GL_MAP1_TEXTURE_COORD_2:
2435 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
2436 break;
2437 case GL_MAP1_TEXTURE_COORD_3:
2438 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
2439 break;
2440 case GL_MAP1_TEXTURE_COORD_4:
2441 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
2442 break;
2443 case GL_MAP1_VERTEX_3:
2444 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
2445 break;
2446 case GL_MAP1_VERTEX_4:
2447 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
2448 break;
2449 case GL_MAP2_COLOR_4:
2450 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
2451 break;
2452 case GL_MAP2_GRID_DOMAIN:
2453 params[0] = ctx->Eval.MapGrid2u1;
2454 params[1] = ctx->Eval.MapGrid2u2;
2455 params[2] = ctx->Eval.MapGrid2v1;
2456 params[3] = ctx->Eval.MapGrid2v2;
2457 break;
2458 case GL_MAP2_GRID_SEGMENTS:
2459 params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
2460 params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
2461 break;
2462 case GL_MAP2_INDEX:
2463 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
2464 break;
2465 case GL_MAP2_NORMAL:
2466 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
2467 break;
2468 case GL_MAP2_TEXTURE_COORD_1:
2469 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
2470 break;
2471 case GL_MAP2_TEXTURE_COORD_2:
2472 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
2473 break;
2474 case GL_MAP2_TEXTURE_COORD_3:
2475 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
2476 break;
2477 case GL_MAP2_TEXTURE_COORD_4:
2478 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
2479 break;
2480 case GL_MAP2_VERTEX_3:
2481 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
2482 break;
2483 case GL_MAP2_VERTEX_4:
2484 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
2485 break;
2486 case GL_MAP_COLOR:
2487 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
2488 break;
2489 case GL_MAP_STENCIL:
2490 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
2491 break;
2492 case GL_MATRIX_MODE:
2493 params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
2494 break;
2495 case GL_MAX_ATTRIB_STACK_DEPTH:
2496 params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
2497 break;
2498 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
2499 params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
2500 break;
2501 case GL_MAX_CLIP_PLANES:
2502 params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
2503 break;
2504 case GL_MAX_ELEMENTS_VERTICES:
2505 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2506 break;
2507 case GL_MAX_ELEMENTS_INDICES:
2508 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2509 break;
2510 case GL_MAX_EVAL_ORDER:
2511 params[0] = (GLfloat)(MAX_EVAL_ORDER);
2512 break;
2513 case GL_MAX_LIGHTS:
2514 params[0] = (GLfloat)(ctx->Const.MaxLights);
2515 break;
2516 case GL_MAX_LIST_NESTING:
2517 params[0] = (GLfloat)(MAX_LIST_NESTING);
2518 break;
2519 case GL_MAX_MODELVIEW_STACK_DEPTH:
2520 params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
2521 break;
2522 case GL_MAX_NAME_STACK_DEPTH:
2523 params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
2524 break;
2525 case GL_MAX_PIXEL_MAP_TABLE:
2526 params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
2527 break;
2528 case GL_MAX_PROJECTION_STACK_DEPTH:
2529 params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
2530 break;
2531 case GL_MAX_TEXTURE_SIZE:
2532 params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
2533 break;
2534 case GL_MAX_3D_TEXTURE_SIZE:
2535 params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
2536 break;
2537 case GL_MAX_TEXTURE_STACK_DEPTH:
2538 params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
2539 break;
2540 case GL_MAX_VIEWPORT_DIMS:
2541 params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
2542 params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
2543 break;
2544 case GL_MODELVIEW_MATRIX:
2545 {
2546 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
2547 params[0] = matrix[0];
2548 params[1] = matrix[1];
2549 params[2] = matrix[2];
2550 params[3] = matrix[3];
2551 params[4] = matrix[4];
2552 params[5] = matrix[5];
2553 params[6] = matrix[6];
2554 params[7] = matrix[7];
2555 params[8] = matrix[8];
2556 params[9] = matrix[9];
2557 params[10] = matrix[10];
2558 params[11] = matrix[11];
2559 params[12] = matrix[12];
2560 params[13] = matrix[13];
2561 params[14] = matrix[14];
2562 params[15] = matrix[15];
2563 }
2564 break;
2565 case GL_MODELVIEW_STACK_DEPTH:
2566 params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
2567 break;
2568 case GL_NAME_STACK_DEPTH:
2569 params[0] = (GLfloat)(ctx->Select.NameStackDepth);
2570 break;
2571 case GL_NORMALIZE:
2572 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
2573 break;
2574 case GL_PACK_ALIGNMENT:
2575 params[0] = (GLfloat)(ctx->Pack.Alignment);
2576 break;
2577 case GL_PACK_LSB_FIRST:
2578 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
2579 break;
2580 case GL_PACK_ROW_LENGTH:
2581 params[0] = (GLfloat)(ctx->Pack.RowLength);
2582 break;
2583 case GL_PACK_SKIP_PIXELS:
2584 params[0] = (GLfloat)(ctx->Pack.SkipPixels);
2585 break;
2586 case GL_PACK_SKIP_ROWS:
2587 params[0] = (GLfloat)(ctx->Pack.SkipRows);
2588 break;
2589 case GL_PACK_SWAP_BYTES:
2590 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
2591 break;
2592 case GL_PACK_SKIP_IMAGES_EXT:
2593 params[0] = (GLfloat)(ctx->Pack.SkipImages);
2594 break;
2595 case GL_PACK_IMAGE_HEIGHT_EXT:
2596 params[0] = (GLfloat)(ctx->Pack.ImageHeight);
2597 break;
2598 case GL_PACK_INVERT_MESA:
2599 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
2600 break;
2601 case GL_PERSPECTIVE_CORRECTION_HINT:
2602 params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
2603 break;
2604 case GL_PIXEL_MAP_A_TO_A_SIZE:
2605 params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size);
2606 break;
2607 case GL_PIXEL_MAP_B_TO_B_SIZE:
2608 params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size);
2609 break;
2610 case GL_PIXEL_MAP_G_TO_G_SIZE:
2611 params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size);
2612 break;
2613 case GL_PIXEL_MAP_I_TO_A_SIZE:
2614 params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size);
2615 break;
2616 case GL_PIXEL_MAP_I_TO_B_SIZE:
2617 params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size);
2618 break;
2619 case GL_PIXEL_MAP_I_TO_G_SIZE:
2620 params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size);
2621 break;
2622 case GL_PIXEL_MAP_I_TO_I_SIZE:
2623 params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size);
2624 break;
2625 case GL_PIXEL_MAP_I_TO_R_SIZE:
2626 params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size);
2627 break;
2628 case GL_PIXEL_MAP_R_TO_R_SIZE:
2629 params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size);
2630 break;
2631 case GL_PIXEL_MAP_S_TO_S_SIZE:
2632 params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size);
2633 break;
2634 case GL_POINT_SIZE:
2635 params[0] = ctx->Point.Size;
2636 break;
2637 case GL_POINT_SIZE_GRANULARITY:
2638 params[0] = ctx->Const.PointSizeGranularity;
2639 break;
2640 case GL_POINT_SIZE_RANGE:
2641 params[0] = ctx->Const.MinPointSizeAA;
2642 params[1] = ctx->Const.MaxPointSizeAA;
2643 break;
2644 case GL_ALIASED_POINT_SIZE_RANGE:
2645 params[0] = ctx->Const.MinPointSize;
2646 params[1] = ctx->Const.MaxPointSize;
2647 break;
2648 case GL_POINT_SMOOTH:
2649 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
2650 break;
2651 case GL_POINT_SMOOTH_HINT:
2652 params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
2653 break;
2654 case GL_POINT_SIZE_MIN_EXT:
2655 params[0] = ctx->Point.MinSize;
2656 break;
2657 case GL_POINT_SIZE_MAX_EXT:
2658 params[0] = ctx->Point.MaxSize;
2659 break;
2660 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
2661 params[0] = ctx->Point.Threshold;
2662 break;
2663 case GL_DISTANCE_ATTENUATION_EXT:
2664 params[0] = ctx->Point.Params[0];
2665 params[1] = ctx->Point.Params[1];
2666 params[2] = ctx->Point.Params[2];
2667 break;
2668 case GL_POLYGON_MODE:
2669 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
2670 params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
2671 break;
2672 case GL_POLYGON_OFFSET_BIAS_EXT:
2673 params[0] = ctx->Polygon.OffsetUnits;
2674 break;
2675 case GL_POLYGON_OFFSET_FACTOR:
2676 params[0] = ctx->Polygon.OffsetFactor ;
2677 break;
2678 case GL_POLYGON_OFFSET_UNITS:
2679 params[0] = ctx->Polygon.OffsetUnits ;
2680 break;
2681 case GL_POLYGON_OFFSET_POINT:
2682 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint);
2683 break;
2684 case GL_POLYGON_OFFSET_LINE:
2685 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine);
2686 break;
2687 case GL_POLYGON_OFFSET_FILL:
2688 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill);
2689 break;
2690 case GL_POLYGON_SMOOTH:
2691 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
2692 break;
2693 case GL_POLYGON_SMOOTH_HINT:
2694 params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
2695 break;
2696 case GL_POLYGON_STIPPLE:
2697 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
2698 break;
2699 case GL_PROJECTION_MATRIX:
2700 {
2701 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
2702 params[0] = matrix[0];
2703 params[1] = matrix[1];
2704 params[2] = matrix[2];
2705 params[3] = matrix[3];
2706 params[4] = matrix[4];
2707 params[5] = matrix[5];
2708 params[6] = matrix[6];
2709 params[7] = matrix[7];
2710 params[8] = matrix[8];
2711 params[9] = matrix[9];
2712 params[10] = matrix[10];
2713 params[11] = matrix[11];
2714 params[12] = matrix[12];
2715 params[13] = matrix[13];
2716 params[14] = matrix[14];
2717 params[15] = matrix[15];
2718 }
2719 break;
2720 case GL_PROJECTION_STACK_DEPTH:
2721 params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
2722 break;
2723 case GL_READ_BUFFER:
2724 params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
2725 break;
2726 case GL_RED_BIAS:
2727 params[0] = ctx->Pixel.RedBias;
2728 break;
2729 case GL_RED_BITS:
2730 if (ctx->NewState & _NEW_BUFFERS)
2731 _mesa_update_state(ctx);
2732 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits);
2733 break;
2734 case GL_RED_SCALE:
2735 params[0] = ctx->Pixel.RedScale;
2736 break;
2737 case GL_RENDER_MODE:
2738 params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
2739 break;
2740 case GL_RESCALE_NORMAL:
2741 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
2742 break;
2743 case GL_RGBA_MODE:
2744 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
2745 break;
2746 case GL_SCISSOR_BOX:
2747 params[0] = (GLfloat)(ctx->Scissor.X);
2748 params[1] = (GLfloat)(ctx->Scissor.Y);
2749 params[2] = (GLfloat)(ctx->Scissor.Width);
2750 params[3] = (GLfloat)(ctx->Scissor.Height);
2751 break;
2752 case GL_SCISSOR_TEST:
2753 params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
2754 break;
2755 case GL_SELECTION_BUFFER_SIZE:
2756 params[0] = (GLfloat)(ctx->Select.BufferSize);
2757 break;
2758 case GL_SHADE_MODEL:
2759 params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
2760 break;
2761 case GL_SHARED_TEXTURE_PALETTE_EXT:
2762 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
2763 break;
2764 case GL_STENCIL_BITS:
2765 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
2766 break;
2767 case GL_STENCIL_CLEAR_VALUE:
2768 params[0] = (GLfloat)(ctx->Stencil.Clear);
2769 break;
2770 case GL_STENCIL_FAIL:
2771 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
2772 break;
2773 case GL_STENCIL_FUNC:
2774 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
2775 break;
2776 case GL_STENCIL_PASS_DEPTH_FAIL:
2777 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
2778 break;
2779 case GL_STENCIL_PASS_DEPTH_PASS:
2780 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
2781 break;
2782 case GL_STENCIL_REF:
2783 params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
2784 break;
2785 case GL_STENCIL_TEST:
2786 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
2787 break;
2788 case GL_STENCIL_VALUE_MASK:
2789 params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
2790 break;
2791 case GL_STENCIL_WRITEMASK:
2792 params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
2793 break;
2794 case GL_STEREO:
2795 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
2796 break;
2797 case GL_SUBPIXEL_BITS:
2798 params[0] = (GLfloat)(ctx->Const.SubPixelBits);
2799 break;
2800 case GL_TEXTURE_1D:
2801 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
2802 break;
2803 case GL_TEXTURE_2D:
2804 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
2805 break;
2806 case GL_TEXTURE_3D:
2807 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
2808 break;
2809 case GL_TEXTURE_1D_ARRAY_EXT:
2810 CHECK_EXT1(MESA_texture_array);
2811 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
2812 break;
2813 case GL_TEXTURE_2D_ARRAY_EXT:
2814 CHECK_EXT1(MESA_texture_array);
2815 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
2816 break;
2817 case GL_TEXTURE_BINDING_1D:
2818 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
2819 break;
2820 case GL_TEXTURE_BINDING_2D:
2821 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
2822 break;
2823 case GL_TEXTURE_BINDING_3D:
2824 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
2825 break;
2826 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
2827 CHECK_EXT1(MESA_texture_array);
2828 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
2829 break;
2830 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
2831 CHECK_EXT1(MESA_texture_array);
2832 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
2833 break;
2834 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
2835 CHECK_EXT1(MESA_texture_array);
2836 params[0] = (GLfloat)(ctx->Const.MaxArrayTextureLayers);
2837 break;
2838 case GL_TEXTURE_GEN_S:
2839 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
2840 break;
2841 case GL_TEXTURE_GEN_T:
2842 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
2843 break;
2844 case GL_TEXTURE_GEN_R:
2845 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
2846 break;
2847 case GL_TEXTURE_GEN_Q:
2848 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
2849 break;
2850 case GL_TEXTURE_MATRIX:
2851 {
2852 const GLfloat *matrix;
2853 const GLuint unit = ctx->Texture.CurrentUnit;
2854 if (unit >= ctx->Const.MaxTextureCoordUnits) {
2855 _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
2856 unit);
2857 return;
2858 }
2859 matrix = ctx->TextureMatrixStack[unit].Top->m;
2860 params[0] = matrix[0];
2861 params[1] = matrix[1];
2862 params[2] = matrix[2];
2863 params[3] = matrix[3];
2864 params[4] = matrix[4];
2865 params[5] = matrix[5];
2866 params[6] = matrix[6];
2867 params[7] = matrix[7];
2868 params[8] = matrix[8];
2869 params[9] = matrix[9];
2870 params[10] = matrix[10];
2871 params[11] = matrix[11];
2872 params[12] = matrix[12];
2873 params[13] = matrix[13];
2874 params[14] = matrix[14];
2875 params[15] = matrix[15];
2876 }
2877 break;
2878 case GL_TEXTURE_STACK_DEPTH:
2879 {
2880 const GLuint unit = ctx->Texture.CurrentUnit;
2881 if (unit >= ctx->Const.MaxTextureCoordUnits) {
2882 _mesa_error(ctx, GL_INVALID_OPERATION,
2883 "glGet(texture stack depth, unit %u)", unit);
2884 return;
2885 }
2886 params[0] = (GLfloat)(ctx->TextureMatrixStack[unit].Depth + 1);
2887 }
2888 break;
2889 case GL_UNPACK_ALIGNMENT:
2890 params[0] = (GLfloat)(ctx->Unpack.Alignment);
2891 break;
2892 case GL_UNPACK_LSB_FIRST:
2893 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
2894 break;
2895 case GL_UNPACK_ROW_LENGTH:
2896 params[0] = (GLfloat)(ctx->Unpack.RowLength);
2897 break;
2898 case GL_UNPACK_SKIP_PIXELS:
2899 params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
2900 break;
2901 case GL_UNPACK_SKIP_ROWS:
2902 params[0] = (GLfloat)(ctx->Unpack.SkipRows);
2903 break;
2904 case GL_UNPACK_SWAP_BYTES:
2905 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
2906 break;
2907 case GL_UNPACK_SKIP_IMAGES_EXT:
2908 params[0] = (GLfloat)(ctx->Unpack.SkipImages);
2909 break;
2910 case GL_UNPACK_IMAGE_HEIGHT_EXT:
2911 params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
2912 break;
2913 case GL_UNPACK_CLIENT_STORAGE_APPLE:
2914 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
2915 break;
2916 case GL_VIEWPORT:
2917 params[0] = (GLfloat)(ctx->Viewport.X);
2918 params[1] = (GLfloat)(ctx->Viewport.Y);
2919 params[2] = (GLfloat)(ctx->Viewport.Width);
2920 params[3] = (GLfloat)(ctx->Viewport.Height);
2921 break;
2922 case GL_ZOOM_X:
2923 params[0] = ctx->Pixel.ZoomX;
2924 break;
2925 case GL_ZOOM_Y:
2926 params[0] = ctx->Pixel.ZoomY;
2927 break;
2928 case GL_VERTEX_ARRAY:
2929 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
2930 break;
2931 case GL_VERTEX_ARRAY_SIZE:
2932 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
2933 break;
2934 case GL_VERTEX_ARRAY_TYPE:
2935 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
2936 break;
2937 case GL_VERTEX_ARRAY_STRIDE:
2938 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
2939 break;
2940 case GL_VERTEX_ARRAY_COUNT_EXT:
2941 params[0] = (GLfloat)(0);
2942 break;
2943 case GL_NORMAL_ARRAY:
2944 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
2945 break;
2946 case GL_NORMAL_ARRAY_TYPE:
2947 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
2948 break;
2949 case GL_NORMAL_ARRAY_STRIDE:
2950 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
2951 break;
2952 case GL_NORMAL_ARRAY_COUNT_EXT:
2953 params[0] = (GLfloat)(0);
2954 break;
2955 case GL_COLOR_ARRAY:
2956 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
2957 break;
2958 case GL_COLOR_ARRAY_SIZE:
2959 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
2960 break;
2961 case GL_COLOR_ARRAY_TYPE:
2962 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
2963 break;
2964 case GL_COLOR_ARRAY_STRIDE:
2965 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
2966 break;
2967 case GL_COLOR_ARRAY_COUNT_EXT:
2968 params[0] = (GLfloat)(0);
2969 break;
2970 case GL_INDEX_ARRAY:
2971 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
2972 break;
2973 case GL_INDEX_ARRAY_TYPE:
2974 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
2975 break;
2976 case GL_INDEX_ARRAY_STRIDE:
2977 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
2978 break;
2979 case GL_INDEX_ARRAY_COUNT_EXT:
2980 params[0] = (GLfloat)(0);
2981 break;
2982 case GL_TEXTURE_COORD_ARRAY:
2983 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
2984 break;
2985 case GL_TEXTURE_COORD_ARRAY_SIZE:
2986 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
2987 break;
2988 case GL_TEXTURE_COORD_ARRAY_TYPE:
2989 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
2990 break;
2991 case GL_TEXTURE_COORD_ARRAY_STRIDE:
2992 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
2993 break;
2994 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
2995 params[0] = (GLfloat)(0);
2996 break;
2997 case GL_EDGE_FLAG_ARRAY:
2998 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
2999 break;
3000 case GL_EDGE_FLAG_ARRAY_STRIDE:
3001 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
3002 break;
3003 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
3004 params[0] = (GLfloat)(0);
3005 break;
3006 case GL_MAX_TEXTURE_UNITS_ARB:
3007 CHECK_EXT1(ARB_multitexture);
3008 params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
3009 break;
3010 case GL_ACTIVE_TEXTURE_ARB:
3011 CHECK_EXT1(ARB_multitexture);
3012 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
3013 break;
3014 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
3015 CHECK_EXT1(ARB_multitexture);
3016 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
3017 break;
3018 case GL_TEXTURE_CUBE_MAP_ARB:
3019 CHECK_EXT1(ARB_texture_cube_map);
3020 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
3021 break;
3022 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
3023 CHECK_EXT1(ARB_texture_cube_map);
3024 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
3025 break;
3026 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
3027 CHECK_EXT1(ARB_texture_cube_map);
3028 params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
3029 break;
3030 case GL_TEXTURE_COMPRESSION_HINT_ARB:
3031 params[0] = (GLfloat)(ctx->Hint.TextureCompression);
3032 break;
3033 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
3034 params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
3035 break;
3036 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
3037 {
3038 GLint formats[100];
3039 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
3040 ASSERT(n <= 100);
3041 for (i = 0; i < n; i++)
3042 params[i] = ENUM_TO_FLOAT(formats[i]);
3043 }
3044 break;
3045 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
3046 CHECK_EXT1(EXT_compiled_vertex_array);
3047 params[0] = (GLfloat)(ctx->Array.LockFirst);
3048 break;
3049 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
3050 CHECK_EXT1(EXT_compiled_vertex_array);
3051 params[0] = (GLfloat)(ctx->Array.LockCount);
3052 break;
3053 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
3054 {
3055 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
3056 params[0] = matrix[0];
3057 params[1] = matrix[4];
3058 params[2] = matrix[8];
3059 params[3] = matrix[12];
3060 params[4] = matrix[1];
3061 params[5] = matrix[5];
3062 params[6] = matrix[9];
3063 params[7] = matrix[13];
3064 params[8] = matrix[2];
3065 params[9] = matrix[6];
3066 params[10] = matrix[10];
3067 params[11] = matrix[14];
3068 params[12] = matrix[3];
3069 params[13] = matrix[7];
3070 params[14] = matrix[11];
3071 params[15] = matrix[15];
3072 }
3073 break;
3074 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
3075 {
3076 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
3077 params[0] = matrix[0];
3078 params[1] = matrix[4];
3079 params[2] = matrix[8];
3080 params[3] = matrix[12];
3081 params[4] = matrix[1];
3082 params[5] = matrix[5];
3083 params[6] = matrix[9];
3084 params[7] = matrix[13];
3085 params[8] = matrix[2];
3086 params[9] = matrix[6];
3087 params[10] = matrix[10];
3088 params[11] = matrix[14];
3089 params[12] = matrix[3];
3090 params[13] = matrix[7];
3091 params[14] = matrix[11];
3092 params[15] = matrix[15];
3093 }
3094 break;
3095 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
3096 {
3097 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
3098 params[0] = matrix[0];
3099 params[1] = matrix[4];
3100 params[2] = matrix[8];
3101 params[3] = matrix[12];
3102 params[4] = matrix[1];
3103 params[5] = matrix[5];
3104 params[6] = matrix[9];
3105 params[7] = matrix[13];
3106 params[8] = matrix[2];
3107 params[9] = matrix[6];
3108 params[10] = matrix[10];
3109 params[11] = matrix[14];
3110 params[12] = matrix[3];
3111 params[13] = matrix[7];
3112 params[14] = matrix[11];
3113 params[15] = matrix[15];
3114 }
3115 break;
3116 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
3117 {
3118 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
3119 params[0] = matrix[0];
3120 params[1] = matrix[4];
3121 params[2] = matrix[8];
3122 params[3] = matrix[12];
3123 params[4] = matrix[1];
3124 params[5] = matrix[5];
3125 params[6] = matrix[9];
3126 params[7] = matrix[13];
3127 params[8] = matrix[2];
3128 params[9] = matrix[6];
3129 params[10] = matrix[10];
3130 params[11] = matrix[14];
3131 params[12] = matrix[3];
3132 params[13] = matrix[7];
3133 params[14] = matrix[11];
3134 params[15] = matrix[15];
3135 }
3136 break;
3137 case GL_COLOR_MATRIX_SGI:
3138 {
3139 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
3140 params[0] = matrix[0];
3141 params[1] = matrix[1];
3142 params[2] = matrix[2];
3143 params[3] = matrix[3];
3144 params[4] = matrix[4];
3145 params[5] = matrix[5];
3146 params[6] = matrix[6];
3147 params[7] = matrix[7];
3148 params[8] = matrix[8];
3149 params[9] = matrix[9];
3150 params[10] = matrix[10];
3151 params[11] = matrix[11];
3152 params[12] = matrix[12];
3153 params[13] = matrix[13];
3154 params[14] = matrix[14];
3155 params[15] = matrix[15];
3156 }
3157 break;
3158 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
3159 params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
3160 break;
3161 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
3162 params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
3163 break;
3164 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
3165 params[0] = ctx->Pixel.PostColorMatrixScale[0];
3166 break;
3167 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
3168 params[0] = ctx->Pixel.PostColorMatrixScale[1];
3169 break;
3170 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
3171 params[0] = ctx->Pixel.PostColorMatrixScale[2];
3172 break;
3173 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
3174 params[0] = ctx->Pixel.PostColorMatrixScale[3];
3175 break;
3176 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
3177 params[0] = ctx->Pixel.PostColorMatrixBias[0];
3178 break;
3179 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
3180 params[0] = ctx->Pixel.PostColorMatrixBias[1];
3181 break;
3182 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
3183 params[0] = ctx->Pixel.PostColorMatrixBias[2];
3184 break;
3185 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
3186 params[0] = ctx->Pixel.PostColorMatrixBias[3];
3187 break;
3188 case GL_CONVOLUTION_1D_EXT:
3189 CHECK_EXT1(EXT_convolution);
3190 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
3191 break;
3192 case GL_CONVOLUTION_2D_EXT:
3193 CHECK_EXT1(EXT_convolution);
3194 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
3195 break;
3196 case GL_SEPARABLE_2D_EXT:
3197 CHECK_EXT1(EXT_convolution);
3198 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
3199 break;
3200 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
3201 CHECK_EXT1(EXT_convolution);
3202 params[0] = ctx->Pixel.PostConvolutionScale[0];
3203 break;
3204 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
3205 CHECK_EXT1(EXT_convolution);
3206 params[0] = ctx->Pixel.PostConvolutionScale[1];
3207 break;
3208 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
3209 CHECK_EXT1(EXT_convolution);
3210 params[0] = ctx->Pixel.PostConvolutionScale[2];
3211 break;
3212 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
3213 CHECK_EXT1(EXT_convolution);
3214 params[0] = ctx->Pixel.PostConvolutionScale[3];
3215 break;
3216 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
3217 CHECK_EXT1(EXT_convolution);
3218 params[0] = ctx->Pixel.PostConvolutionBias[0];
3219 break;
3220 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
3221 CHECK_EXT1(EXT_convolution);
3222 params[0] = ctx->Pixel.PostConvolutionBias[1];
3223 break;
3224 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
3225 CHECK_EXT1(EXT_convolution);
3226 params[0] = ctx->Pixel.PostConvolutionBias[2];
3227 break;
3228 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
3229 CHECK_EXT1(EXT_convolution);
3230 params[0] = ctx->Pixel.PostConvolutionBias[3];
3231 break;
3232 case GL_HISTOGRAM:
3233 CHECK_EXT1(EXT_histogram);
3234 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
3235 break;
3236 case GL_MINMAX:
3237 CHECK_EXT1(EXT_histogram);
3238 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
3239 break;
3240 case GL_COLOR_TABLE_SGI:
3241 CHECK_EXT1(SGI_color_table);
3242 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
3243 break;
3244 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
3245 CHECK_EXT1(SGI_color_table);
3246 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
3247 break;
3248 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
3249 CHECK_EXT1(SGI_color_table);
3250 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
3251 break;
3252 case GL_TEXTURE_COLOR_TABLE_SGI:
3253 CHECK_EXT1(SGI_texture_color_table);
3254 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
3255 break;
3256 case GL_COLOR_SUM_EXT:
3257 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program);
3258 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
3259 break;
3260 case GL_CURRENT_SECONDARY_COLOR_EXT:
3261 CHECK_EXT1(EXT_secondary_color);
3262 FLUSH_CURRENT(ctx, 0);
3263 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
3264 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
3265 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
3266 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
3267 break;
3268 case GL_SECONDARY_COLOR_ARRAY_EXT:
3269 CHECK_EXT1(EXT_secondary_color);
3270 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
3271 break;
3272 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
3273 CHECK_EXT1(EXT_secondary_color);
3274 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
3275 break;
3276 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
3277 CHECK_EXT1(EXT_secondary_color);
3278 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
3279 break;
3280 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
3281 CHECK_EXT1(EXT_secondary_color);
3282 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
3283 break;
3284 case GL_CURRENT_FOG_COORDINATE_EXT:
3285 CHECK_EXT1(EXT_fog_coord);
3286 FLUSH_CURRENT(ctx, 0);
3287 params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
3288 break;
3289 case GL_FOG_COORDINATE_ARRAY_EXT:
3290 CHECK_EXT1(EXT_fog_coord);
3291 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
3292 break;
3293 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
3294 CHECK_EXT1(EXT_fog_coord);
3295 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
3296 break;
3297 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
3298 CHECK_EXT1(EXT_fog_coord);
3299 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
3300 break;
3301 case GL_FOG_COORDINATE_SOURCE_EXT:
3302 CHECK_EXT1(EXT_fog_coord);
3303 params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
3304 break;
3305 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
3306 CHECK_EXT1(EXT_texture_lod_bias);
3307 params[0] = ctx->Const.MaxTextureLodBias;
3308 break;
3309 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
3310 CHECK_EXT1(EXT_texture_filter_anisotropic);
3311 params[0] = ctx->Const.MaxTextureMaxAnisotropy;
3312 break;
3313 case GL_MULTISAMPLE_ARB:
3314 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
3315 break;
3316 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
3317 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
3318 break;
3319 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
3320 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
3321 break;
3322 case GL_SAMPLE_COVERAGE_ARB:
3323 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
3324 break;
3325 case GL_SAMPLE_COVERAGE_VALUE_ARB:
3326 params[0] = ctx->Multisample.SampleCoverageValue;
3327 break;
3328 case GL_SAMPLE_COVERAGE_INVERT_ARB:
3329 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
3330 break;
3331 case GL_SAMPLE_BUFFERS_ARB:
3332 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
3333 break;
3334 case GL_SAMPLES_ARB:
3335 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
3336 break;
3337 case GL_RASTER_POSITION_UNCLIPPED_IBM:
3338 CHECK_EXT1(IBM_rasterpos_clip);
3339 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
3340 break;
3341 case GL_POINT_SPRITE_NV:
3342 CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
3343 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
3344 break;
3345 case GL_POINT_SPRITE_R_MODE_NV:
3346 CHECK_EXT1(NV_point_sprite);
3347 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
3348 break;
3349 case GL_POINT_SPRITE_COORD_ORIGIN:
3350 CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
3351 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
3352 break;
3353 case GL_GENERATE_MIPMAP_HINT_SGIS:
3354 CHECK_EXT1(SGIS_generate_mipmap);
3355 params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
3356 break;
3357 case GL_VERTEX_PROGRAM_BINDING_NV:
3358 CHECK_EXT1(NV_vertex_program);
3359 params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
3360 break;
3361 case GL_VERTEX_ATTRIB_ARRAY0_NV:
3362 CHECK_EXT1(NV_vertex_program);
3363 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
3364 break;
3365 case GL_VERTEX_ATTRIB_ARRAY1_NV:
3366 CHECK_EXT1(NV_vertex_program);
3367 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
3368 break;
3369 case GL_VERTEX_ATTRIB_ARRAY2_NV:
3370 CHECK_EXT1(NV_vertex_program);
3371 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
3372 break;
3373 case GL_VERTEX_ATTRIB_ARRAY3_NV:
3374 CHECK_EXT1(NV_vertex_program);
3375 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
3376 break;
3377 case GL_VERTEX_ATTRIB_ARRAY4_NV:
3378 CHECK_EXT1(NV_vertex_program);
3379 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
3380 break;
3381 case GL_VERTEX_ATTRIB_ARRAY5_NV:
3382 CHECK_EXT1(NV_vertex_program);
3383 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
3384 break;
3385 case GL_VERTEX_ATTRIB_ARRAY6_NV:
3386 CHECK_EXT1(NV_vertex_program);
3387 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
3388 break;
3389 case GL_VERTEX_ATTRIB_ARRAY7_NV:
3390 CHECK_EXT1(NV_vertex_program);
3391 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
3392 break;
3393 case GL_VERTEX_ATTRIB_ARRAY8_NV:
3394 CHECK_EXT1(NV_vertex_program);
3395 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
3396 break;
3397 case GL_VERTEX_ATTRIB_ARRAY9_NV:
3398 CHECK_EXT1(NV_vertex_program);
3399 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
3400 break;
3401 case GL_VERTEX_ATTRIB_ARRAY10_NV:
3402 CHECK_EXT1(NV_vertex_program);
3403 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
3404 break;
3405 case GL_VERTEX_ATTRIB_ARRAY11_NV:
3406 CHECK_EXT1(NV_vertex_program);
3407 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
3408 break;
3409 case GL_VERTEX_ATTRIB_ARRAY12_NV:
3410 CHECK_EXT1(NV_vertex_program);
3411 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
3412 break;
3413 case GL_VERTEX_ATTRIB_ARRAY13_NV:
3414 CHECK_EXT1(NV_vertex_program);
3415 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
3416 break;
3417 case GL_VERTEX_ATTRIB_ARRAY14_NV:
3418 CHECK_EXT1(NV_vertex_program);
3419 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
3420 break;
3421 case GL_VERTEX_ATTRIB_ARRAY15_NV:
3422 CHECK_EXT1(NV_vertex_program);
3423 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
3424 break;
3425 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
3426 CHECK_EXT1(NV_vertex_program);
3427 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
3428 break;
3429 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
3430 CHECK_EXT1(NV_vertex_program);
3431 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
3432 break;
3433 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
3434 CHECK_EXT1(NV_vertex_program);
3435 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
3436 break;
3437 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
3438 CHECK_EXT1(NV_vertex_program);
3439 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
3440 break;
3441 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
3442 CHECK_EXT1(NV_vertex_program);
3443 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
3444 break;
3445 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
3446 CHECK_EXT1(NV_vertex_program);
3447 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
3448 break;
3449 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
3450 CHECK_EXT1(NV_vertex_program);
3451 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
3452 break;
3453 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
3454 CHECK_EXT1(NV_vertex_program);
3455 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
3456 break;
3457 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
3458 CHECK_EXT1(NV_vertex_program);
3459 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
3460 break;
3461 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
3462 CHECK_EXT1(NV_vertex_program);
3463 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
3464 break;
3465 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
3466 CHECK_EXT1(NV_vertex_program);
3467 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
3468 break;
3469 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
3470 CHECK_EXT1(NV_vertex_program);
3471 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
3472 break;
3473 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
3474 CHECK_EXT1(NV_vertex_program);
3475 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
3476 break;
3477 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
3478 CHECK_EXT1(NV_vertex_program);
3479 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
3480 break;
3481 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
3482 CHECK_EXT1(NV_vertex_program);
3483 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
3484 break;
3485 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
3486 CHECK_EXT1(NV_vertex_program);
3487 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
3488 break;
3489 case GL_FRAGMENT_PROGRAM_NV:
3490 CHECK_EXT1(NV_fragment_program);
3491 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3492 break;
3493 case GL_FRAGMENT_PROGRAM_BINDING_NV:
3494 CHECK_EXT1(NV_fragment_program);
3495 params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
3496 break;
3497 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
3498 CHECK_EXT1(NV_fragment_program);
3499 params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
3500 break;
3501 case GL_TEXTURE_RECTANGLE_NV:
3502 CHECK_EXT1(NV_texture_rectangle);
3503 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
3504 break;
3505 case GL_TEXTURE_BINDING_RECTANGLE_NV:
3506 CHECK_EXT1(NV_texture_rectangle);
3507 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
3508 break;
3509 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
3510 CHECK_EXT1(NV_texture_rectangle);
3511 params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
3512 break;
3513 case GL_STENCIL_TEST_TWO_SIDE_EXT:
3514 CHECK_EXT1(EXT_stencil_two_side);
3515 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
3516 break;
3517 case GL_ACTIVE_STENCIL_FACE_EXT:
3518 CHECK_EXT1(EXT_stencil_two_side);
3519 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
3520 break;
3521 case GL_MAX_SHININESS_NV:
3522 CHECK_EXT1(NV_light_max_exponent);
3523 params[0] = ctx->Const.MaxShininess;
3524 break;
3525 case GL_MAX_SPOT_EXPONENT_NV:
3526 CHECK_EXT1(NV_light_max_exponent);
3527 params[0] = ctx->Const.MaxSpotExponent;
3528 break;
3529 case GL_ARRAY_BUFFER_BINDING_ARB:
3530 params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
3531 break;
3532 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
3533 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
3534 break;
3535 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
3536 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
3537 break;
3538 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
3539 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
3540 break;
3541 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
3542 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
3543 break;
3544 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
3545 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
3546 break;
3547 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
3548 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
3549 break;
3550 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
3551 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
3552 break;
3553 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
3554 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
3555 break;
3556 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
3557 params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
3558 break;
3559 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
3560 CHECK_EXT1(EXT_pixel_buffer_object);
3561 params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
3562 break;
3563 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
3564 CHECK_EXT1(EXT_pixel_buffer_object);
3565 params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
3566 break;
3567 case GL_VERTEX_PROGRAM_ARB:
3568 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
3569 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
3570 break;
3571 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
3572 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
3573 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
3574 break;
3575 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
3576 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
3577 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
3578 break;
3579 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
3580 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
3581 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
3582 break;
3583 case GL_MAX_PROGRAM_MATRICES_ARB:
3584 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
3585 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
3586 break;
3587 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
3588 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
3589 params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
3590 break;
3591 case GL_CURRENT_MATRIX_ARB:
3592 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program);
3593 {
3594 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3595 params[0] = matrix[0];
3596 params[1] = matrix[1];
3597 params[2] = matrix[2];
3598 params[3] = matrix[3];
3599 params[4] = matrix[4];
3600 params[5] = matrix[5];
3601 params[6] = matrix[6];
3602 params[7] = matrix[7];
3603 params[8] = matrix[8];
3604 params[9] = matrix[9];
3605 params[10] = matrix[10];
3606 params[11] = matrix[11];
3607 params[12] = matrix[12];
3608 params[13] = matrix[13];
3609 params[14] = matrix[14];
3610 params[15] = matrix[15];
3611 }
3612 break;
3613 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
3614 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program);
3615 {
3616 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3617 params[0] = matrix[0];
3618 params[1] = matrix[4];
3619 params[2] = matrix[8];
3620 params[3] = matrix[12];
3621 params[4] = matrix[1];
3622 params[5] = matrix[5];
3623 params[6] = matrix[9];
3624 params[7] = matrix[13];
3625 params[8] = matrix[2];
3626 params[9] = matrix[6];
3627 params[10] = matrix[10];
3628 params[11] = matrix[14];
3629 params[12] = matrix[3];
3630 params[13] = matrix[7];
3631 params[14] = matrix[11];
3632 params[15] = matrix[15];
3633 }
3634 break;
3635 case GL_MAX_VERTEX_ATTRIBS_ARB:
3636 CHECK_EXT1(ARB_vertex_program);
3637 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
3638 break;
3639 case GL_PROGRAM_ERROR_POSITION_ARB:
3640 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program);
3641 params[0] = (GLfloat)(ctx->Program.ErrorPos);
3642 break;
3643 case GL_FRAGMENT_PROGRAM_ARB:
3644 CHECK_EXT1(ARB_fragment_program);
3645 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3646 break;
3647 case GL_MAX_TEXTURE_COORDS_ARB:
3648 CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
3649 params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
3650 break;
3651 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
3652 CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
3653 params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
3654 break;
3655 case GL_DEPTH_BOUNDS_TEST_EXT:
3656 CHECK_EXT1(EXT_depth_bounds_test);
3657 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
3658 break;
3659 case GL_DEPTH_BOUNDS_EXT:
3660 CHECK_EXT1(EXT_depth_bounds_test);
3661 params[0] = ctx->Depth.BoundsMin;
3662 params[1] = ctx->Depth.BoundsMax;
3663 break;
3664 case GL_DEPTH_CLAMP:
3665 CHECK_EXT1(ARB_depth_clamp);
3666 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.DepthClamp);
3667 break;
3668 case GL_MAX_DRAW_BUFFERS_ARB:
3669 params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
3670 break;
3671 case GL_DRAW_BUFFER0_ARB:
3672 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
3673 break;
3674 case GL_DRAW_BUFFER1_ARB:
3675 {
3676 GLenum buffer;
3677 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3678 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3679 return;
3680 }
3681 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
3682 params[0] = ENUM_TO_FLOAT(buffer);
3683 }
3684 break;
3685 case GL_DRAW_BUFFER2_ARB:
3686 {
3687 GLenum buffer;
3688 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3689 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3690 return;
3691 }
3692 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
3693 params[0] = ENUM_TO_FLOAT(buffer);
3694 }
3695 break;
3696 case GL_DRAW_BUFFER3_ARB:
3697 {
3698 GLenum buffer;
3699 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3700 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3701 return;
3702 }
3703 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
3704 params[0] = ENUM_TO_FLOAT(buffer);
3705 }
3706 break;
3707 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
3708 CHECK_EXT1(OES_read_format);
3709 if (ctx->NewState & _NEW_BUFFERS)
3710 _mesa_update_state(ctx);
3711 params[0] = (GLfloat)(_mesa_get_color_read_type(ctx));
3712 break;
3713 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
3714 CHECK_EXT1(OES_read_format);
3715 if (ctx->NewState & _NEW_BUFFERS)
3716 _mesa_update_state(ctx);
3717 params[0] = (GLfloat)(_mesa_get_color_read_format(ctx));
3718 break;
3719 case GL_NUM_FRAGMENT_REGISTERS_ATI:
3720 CHECK_EXT1(ATI_fragment_shader);
3721 params[0] = (GLfloat)(6);
3722 break;
3723 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
3724 CHECK_EXT1(ATI_fragment_shader);
3725 params[0] = (GLfloat)(8);
3726 break;
3727 case GL_NUM_PASSES_ATI:
3728 CHECK_EXT1(ATI_fragment_shader);
3729 params[0] = (GLfloat)(2);
3730 break;
3731 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
3732 CHECK_EXT1(ATI_fragment_shader);
3733 params[0] = (GLfloat)(8);
3734 break;
3735 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
3736 CHECK_EXT1(ATI_fragment_shader);
3737 params[0] = (GLfloat)(16);
3738 break;
3739 case GL_COLOR_ALPHA_PAIRING_ATI:
3740 CHECK_EXT1(ATI_fragment_shader);
3741 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
3742 break;
3743 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
3744 CHECK_EXT1(ATI_fragment_shader);
3745 params[0] = (GLfloat)(3);
3746 break;
3747 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
3748 CHECK_EXT1(ATI_fragment_shader);
3749 params[0] = (GLfloat)(3);
3750 break;
3751 case GL_STENCIL_BACK_FUNC:
3752 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
3753 break;
3754 case GL_STENCIL_BACK_VALUE_MASK:
3755 params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
3756 break;
3757 case GL_STENCIL_BACK_WRITEMASK:
3758 params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]);
3759 break;
3760 case GL_STENCIL_BACK_REF:
3761 params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
3762 break;
3763 case GL_STENCIL_BACK_FAIL:
3764 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
3765 break;
3766 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
3767 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
3768 break;
3769 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
3770 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
3771 break;
3772 case GL_FRAMEBUFFER_BINDING_EXT:
3773 CHECK_EXT1(EXT_framebuffer_object);
3774 params[0] = (GLfloat)(ctx->DrawBuffer->Name);
3775 break;
3776 case GL_RENDERBUFFER_BINDING_EXT:
3777 CHECK_EXT1(EXT_framebuffer_object);
3778 params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
3779 break;
3780 case GL_MAX_COLOR_ATTACHMENTS_EXT:
3781 CHECK_EXT1(EXT_framebuffer_object);
3782 params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
3783 break;
3784 case GL_MAX_RENDERBUFFER_SIZE_EXT:
3785 CHECK_EXT1(EXT_framebuffer_object);
3786 params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
3787 break;
3788 case GL_READ_FRAMEBUFFER_BINDING_EXT:
3789 CHECK_EXT1(EXT_framebuffer_blit);
3790 params[0] = (GLfloat)(ctx->ReadBuffer->Name);
3791 break;
3792 case GL_PROVOKING_VERTEX_EXT:
3793 CHECK_EXT1(EXT_provoking_vertex);
3794 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ProvokingVertex);
3795 break;
3796 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
3797 CHECK_EXT1(EXT_provoking_vertex);
3798 params[0] = BOOLEAN_TO_FLOAT(ctx->Const.QuadsFollowProvokingVertexConvention);
3799 break;
3800 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
3801 CHECK_EXT1(ARB_fragment_shader);
3802 params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents);
3803 break;
3804 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
3805 CHECK_EXT1(ARB_fragment_shader);
3806 params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
3807 break;
3808 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
3809 CHECK_EXT1(ARB_vertex_shader);
3810 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents);
3811 break;
3812 case GL_MAX_VARYING_FLOATS_ARB:
3813 CHECK_EXT1(ARB_vertex_shader);
3814 params[0] = (GLfloat)(ctx->Const.MaxVarying * 4);
3815 break;
3816 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
3817 CHECK_EXT1(ARB_vertex_shader);
3818 params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits);
3819 break;
3820 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
3821 CHECK_EXT1(ARB_vertex_shader);
3822 params[0] = (GLfloat)(ctx->Const.MaxCombinedTextureImageUnits);
3823 break;
3824 case GL_CURRENT_PROGRAM:
3825 CHECK_EXT1(ARB_shader_objects);
3826 params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
3827 break;
3828 case GL_MAX_SAMPLES:
3829 CHECK_EXT1(ARB_framebuffer_object);
3830 params[0] = (GLfloat)(ctx->Const.MaxSamples);
3831 break;
3832 case GL_VERTEX_ARRAY_BINDING_APPLE:
3833 CHECK_EXT1(APPLE_vertex_array_object);
3834 params[0] = (GLfloat)(ctx->Array.ArrayObj->Name);
3835 break;
3836 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
3837 CHECK_EXT1(ARB_seamless_cube_map);
3838 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.CubeMapSeamless);
3839 break;
3840 case GL_MAX_SERVER_WAIT_TIMEOUT:
3841 CHECK_EXT1(ARB_sync);
3842 params[0] = (GLfloat)(ctx->Const.MaxServerWaitTimeout);
3843 break;
3844 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
3845 CHECK_EXT1(EXT_transform_feedback);
3846 params[0] = (GLfloat)(ctx->TransformFeedback.CurrentBuffer->Name);
3847 break;
3848 case GL_RASTERIZER_DISCARD:
3849 CHECK_EXT1(EXT_transform_feedback);
3850 params[0] = BOOLEAN_TO_FLOAT(ctx->TransformFeedback.RasterDiscard);
3851 break;
3852 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
3853 CHECK_EXT1(EXT_transform_feedback);
3854 params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackInterleavedComponents);
3855 break;
3856 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
3857 CHECK_EXT1(EXT_transform_feedback);
3858 params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackSeparateAttribs);
3859 break;
3860 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
3861 CHECK_EXT1(EXT_transform_feedback);
3862 params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackSeparateComponents);
3863 break;
3864 case GL_NUM_EXTENSIONS:
3865 CHECK_VERSION(30);
3866 params[0] = (GLfloat)(_mesa_get_extension_count(ctx));
3867 break;
3868 case GL_MAJOR_VERSION:
3869 CHECK_VERSION(30);
3870 params[0] = (GLfloat)(ctx->VersionMajor);
3871 break;
3872 case GL_MINOR_VERSION:
3873 CHECK_VERSION(30);
3874 params[0] = (GLfloat)(ctx->VersionMinor);
3875 break;
3876 case GL_CONTEXT_FLAGS:
3877 CHECK_VERSION(30);
3878 params[0] = (GLfloat)(ctx->Const.ContextFlags);
3879 break;
3880 case GL_PRIMITIVE_RESTART:
3881 CHECK_VERSION(31);
3882 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.PrimitiveRestart);
3883 break;
3884 case GL_PRIMITIVE_RESTART_INDEX:
3885 CHECK_VERSION(31);
3886 params[0] = (GLfloat)(ctx->Array.RestartIndex);
3887 break;
3888 case GL_CONTEXT_PROFILE_MASK:
3889 CHECK_VERSION(32);
3890 params[0] = (GLfloat)(ctx->Const.ProfileMask);
3891 break;
3892 default:
3893 goto invalid_enum_error;
3894 }
3895 return;
3896
3897 invalid_enum_error:
3898 _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
3899 }
3900
3901 void GLAPIENTRY
3902 _mesa_GetIntegerv( GLenum pname, GLint *params )
3903 {
3904 GET_CURRENT_CONTEXT(ctx);
3905 const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
3906 ASSERT_OUTSIDE_BEGIN_END(ctx);
3907 (void) version;
3908
3909 if (!params)
3910 return;
3911
3912 switch (pname) {
3913 case GL_ACCUM_RED_BITS:
3914 params[0] = ctx->DrawBuffer->Visual.accumRedBits;
3915 break;
3916 case GL_ACCUM_GREEN_BITS:
3917 params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
3918 break;
3919 case GL_ACCUM_BLUE_BITS:
3920 params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
3921 break;
3922 case GL_ACCUM_ALPHA_BITS:
3923 params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
3924 break;
3925 case GL_ACCUM_CLEAR_VALUE:
3926 params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
3927 params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
3928 params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
3929 params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
3930 break;
3931 case GL_ALPHA_BIAS:
3932 params[0] = IROUND(ctx->Pixel.AlphaBias);
3933 break;
3934 case GL_ALPHA_BITS:
3935 if (ctx->NewState & _NEW_BUFFERS)
3936 _mesa_update_state(ctx);
3937 params[0] = ctx->DrawBuffer->Visual.alphaBits;
3938 break;
3939 case GL_ALPHA_SCALE:
3940 params[0] = IROUND(ctx->Pixel.AlphaScale);
3941 break;
3942 case GL_ALPHA_TEST:
3943 params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
3944 break;
3945 case GL_ALPHA_TEST_FUNC:
3946 params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
3947 break;
3948 case GL_ALPHA_TEST_REF:
3949 params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
3950 break;
3951 case GL_ATTRIB_STACK_DEPTH:
3952 params[0] = ctx->AttribStackDepth;
3953 break;
3954 case GL_AUTO_NORMAL:
3955 params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
3956 break;
3957 case GL_AUX_BUFFERS:
3958 params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
3959 break;
3960 case GL_BLEND:
3961 params[0] = BOOLEAN_TO_INT((ctx->Color.BlendEnabled & 1));
3962 break;
3963 case GL_BLEND_DST:
3964 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3965 break;
3966 case GL_BLEND_SRC:
3967 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3968 break;
3969 case GL_BLEND_SRC_RGB_EXT:
3970 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3971 break;
3972 case GL_BLEND_DST_RGB_EXT:
3973 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3974 break;
3975 case GL_BLEND_SRC_ALPHA_EXT:
3976 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
3977 break;
3978 case GL_BLEND_DST_ALPHA_EXT:
3979 params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
3980 break;
3981 case GL_BLEND_EQUATION:
3982 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
3983 break;
3984 case GL_BLEND_EQUATION_ALPHA_EXT:
3985 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
3986 break;
3987 case GL_BLEND_COLOR_EXT:
3988 params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
3989 params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
3990 params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
3991 params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
3992 break;
3993 case GL_BLUE_BIAS:
3994 params[0] = IROUND(ctx->Pixel.BlueBias);
3995 break;
3996 case GL_BLUE_BITS:
3997 if (ctx->NewState & _NEW_BUFFERS)
3998 _mesa_update_state(ctx);
3999 params[0] = ctx->DrawBuffer->Visual.blueBits;
4000 break;
4001 case GL_BLUE_SCALE:
4002 params[0] = IROUND(ctx->Pixel.BlueScale);
4003 break;
4004 case GL_CLIENT_ATTRIB_STACK_DEPTH:
4005 params[0] = ctx->ClientAttribStackDepth;
4006 break;
4007 case GL_CLIP_PLANE0:
4008 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
4009 break;
4010 case GL_CLIP_PLANE1:
4011 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
4012 break;
4013 case GL_CLIP_PLANE2:
4014 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
4015 break;
4016 case GL_CLIP_PLANE3:
4017 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
4018 break;
4019 case GL_CLIP_PLANE4:
4020 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
4021 break;
4022 case GL_CLIP_PLANE5:
4023 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
4024 break;
4025 case GL_COLOR_CLEAR_VALUE:
4026 params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
4027 params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
4028 params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
4029 params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
4030 break;
4031 case GL_COLOR_MATERIAL:
4032 params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
4033 break;
4034 case GL_COLOR_MATERIAL_FACE:
4035 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
4036 break;
4037 case GL_COLOR_MATERIAL_PARAMETER:
4038 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
4039 break;
4040 case GL_COLOR_WRITEMASK:
4041 params[0] = ctx->Color.ColorMask[0][RCOMP] ? 1 : 0;
4042 params[1] = ctx->Color.ColorMask[0][GCOMP] ? 1 : 0;
4043 params[2] = ctx->Color.ColorMask[0][BCOMP] ? 1 : 0;
4044 params[3] = ctx->Color.ColorMask[0][ACOMP] ? 1 : 0;
4045 break;
4046 case GL_CULL_FACE:
4047 params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
4048 break;
4049 case GL_CULL_FACE_MODE:
4050 params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
4051 break;
4052 case GL_CURRENT_COLOR:
4053 FLUSH_CURRENT(ctx, 0);
4054 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
4055 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
4056 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
4057 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
4058 break;
4059 case GL_CURRENT_INDEX:
4060 FLUSH_CURRENT(ctx, 0);
4061 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
4062 break;
4063 case GL_CURRENT_NORMAL:
4064 FLUSH_CURRENT(ctx, 0);
4065 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
4066 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
4067 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
4068 break;
4069 case GL_CURRENT_RASTER_COLOR:
4070 params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
4071 params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
4072 params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
4073 params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
4074 break;
4075 case GL_CURRENT_RASTER_DISTANCE:
4076 params[0] = IROUND(ctx->Current.RasterDistance);
4077 break;
4078 case GL_CURRENT_RASTER_INDEX:
4079 params[0] = IROUND(1.0);
4080 break;
4081 case GL_CURRENT_RASTER_POSITION:
4082 params[0] = IROUND(ctx->Current.RasterPos[0]);
4083 params[1] = IROUND(ctx->Current.RasterPos[1]);
4084 params[2] = IROUND(ctx->Current.RasterPos[2]);
4085 params[3] = IROUND(ctx->Current.RasterPos[3]);
4086 break;
4087 case GL_CURRENT_RASTER_SECONDARY_COLOR:
4088 params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
4089 params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
4090 params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
4091 params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
4092 break;
4093 case GL_CURRENT_RASTER_TEXTURE_COORDS:
4094 {
4095 const GLuint unit = ctx->Texture.CurrentUnit;
4096 if (unit >= ctx->Const.MaxTextureCoordUnits) {
4097 _mesa_error(ctx, GL_INVALID_OPERATION,
4098 "glGet(raster tex coords, unit %u)", unit);
4099 return;
4100 }
4101 params[0] = IROUND(ctx->Current.RasterTexCoords[unit][0]);
4102 params[1] = IROUND(ctx->Current.RasterTexCoords[unit][1]);
4103 params[2] = IROUND(ctx->Current.RasterTexCoords[unit][2]);
4104 params[3] = IROUND(ctx->Current.RasterTexCoords[unit][3]);
4105 }
4106 break;
4107 case GL_CURRENT_RASTER_POSITION_VALID:
4108 params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
4109 break;
4110 case GL_CURRENT_TEXTURE_COORDS:
4111 {
4112 const GLuint unit = ctx->Texture.CurrentUnit;
4113 if (unit >= ctx->Const.MaxTextureCoordUnits) {
4114 _mesa_error(ctx, GL_INVALID_OPERATION,
4115 "glGet(current tex coords, unit %u)", unit);
4116 return;
4117 }
4118 FLUSH_CURRENT(ctx, 0);
4119 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]);
4120 params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]);
4121 params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]);
4122 params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]);
4123 }
4124 break;
4125 case GL_DEPTH_BIAS:
4126 params[0] = IROUND(ctx->Pixel.DepthBias);
4127 break;
4128 case GL_DEPTH_BITS:
4129 params[0] = ctx->DrawBuffer->Visual.depthBits;
4130 break;
4131 case GL_DEPTH_CLEAR_VALUE:
4132 params[0] = FLOAT_TO_INT(((GLfloat) ctx->Depth.Clear));
4133 break;
4134 case GL_DEPTH_FUNC:
4135 params[0] = ENUM_TO_INT(ctx->Depth.Func);
4136 break;
4137 case GL_DEPTH_RANGE:
4138 params[0] = FLOAT_TO_INT(ctx->Viewport.Near);
4139 params[1] = FLOAT_TO_INT(ctx->Viewport.Far);
4140 break;
4141 case GL_DEPTH_SCALE:
4142 params[0] = IROUND(ctx->Pixel.DepthScale);
4143 break;
4144 case GL_DEPTH_TEST:
4145 params[0] = BOOLEAN_TO_INT(ctx->Depth.Test);
4146 break;
4147 case GL_DEPTH_WRITEMASK:
4148 params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask);
4149 break;
4150 case GL_DITHER:
4151 params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag);
4152 break;
4153 case GL_DOUBLEBUFFER:
4154 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode);
4155 break;
4156 case GL_DRAW_BUFFER:
4157 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
4158 break;
4159 case GL_EDGE_FLAG:
4160 FLUSH_CURRENT(ctx, 0);
4161 params[0] = BOOLEAN_TO_INT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
4162 break;
4163 case GL_FEEDBACK_BUFFER_SIZE:
4164 params[0] = ctx->Feedback.BufferSize;
4165 break;
4166 case GL_FEEDBACK_BUFFER_TYPE:
4167 params[0] = ENUM_TO_INT(ctx->Feedback.Type);
4168 break;
4169 case GL_FOG:
4170 params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled);
4171 break;
4172 case GL_FOG_COLOR:
4173 params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]);
4174 params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]);
4175 params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]);
4176 params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]);
4177 break;
4178 case GL_FOG_DENSITY:
4179 params[0] = IROUND(ctx->Fog.Density);
4180 break;
4181 case GL_FOG_END:
4182 params[0] = IROUND(ctx->Fog.End);
4183 break;
4184 case GL_FOG_HINT:
4185 params[0] = ENUM_TO_INT(ctx->Hint.Fog);
4186 break;
4187 case GL_FOG_INDEX:
4188 params[0] = IROUND(ctx->Fog.Index);
4189 break;
4190 case GL_FOG_MODE:
4191 params[0] = ENUM_TO_INT(ctx->Fog.Mode);
4192 break;
4193 case GL_FOG_START:
4194 params[0] = IROUND(ctx->Fog.Start);
4195 break;
4196 case GL_FRONT_FACE:
4197 params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace);
4198 break;
4199 case GL_GREEN_BIAS:
4200 params[0] = IROUND(ctx->Pixel.GreenBias);
4201 break;
4202 case GL_GREEN_BITS:
4203 if (ctx->NewState & _NEW_BUFFERS)
4204 _mesa_update_state(ctx);
4205 params[0] = ctx->DrawBuffer->Visual.greenBits;
4206 break;
4207 case GL_GREEN_SCALE:
4208 params[0] = IROUND(ctx->Pixel.GreenScale);
4209 break;
4210 case GL_INDEX_BITS:
4211 if (ctx->NewState & _NEW_BUFFERS)
4212 _mesa_update_state(ctx);
4213 params[0] = ctx->DrawBuffer->Visual.indexBits;
4214 break;
4215 case GL_INDEX_CLEAR_VALUE:
4216 params[0] = ctx->Color.ClearIndex;
4217 break;
4218 case GL_INDEX_MODE:
4219 params[0] = BOOLEAN_TO_INT(GL_FALSE);
4220 break;
4221 case GL_INDEX_OFFSET:
4222 params[0] = ctx->Pixel.IndexOffset;
4223 break;
4224 case GL_INDEX_SHIFT:
4225 params[0] = ctx->Pixel.IndexShift;
4226 break;
4227 case GL_INDEX_WRITEMASK:
4228 params[0] = ctx->Color.IndexMask;
4229 break;
4230 case GL_LIGHT0:
4231 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled);
4232 break;
4233 case GL_LIGHT1:
4234 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled);
4235 break;
4236 case GL_LIGHT2:
4237 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled);
4238 break;
4239 case GL_LIGHT3:
4240 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled);
4241 break;
4242 case GL_LIGHT4:
4243 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled);
4244 break;
4245 case GL_LIGHT5:
4246 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled);
4247 break;
4248 case GL_LIGHT6:
4249 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled);
4250 break;
4251 case GL_LIGHT7:
4252 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled);
4253 break;
4254 case GL_LIGHTING:
4255 params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled);
4256 break;
4257 case GL_LIGHT_MODEL_AMBIENT:
4258 params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]);
4259 params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]);
4260 params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]);
4261 params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]);
4262 break;
4263 case GL_LIGHT_MODEL_COLOR_CONTROL:
4264 params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl);
4265 break;
4266 case GL_LIGHT_MODEL_LOCAL_VIEWER:
4267 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer);
4268 break;
4269 case GL_LIGHT_MODEL_TWO_SIDE:
4270 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide);
4271 break;
4272 case GL_LINE_SMOOTH:
4273 params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag);
4274 break;
4275 case GL_LINE_SMOOTH_HINT:
4276 params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth);
4277 break;
4278 case GL_LINE_STIPPLE:
4279 params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag);
4280 break;
4281 case GL_LINE_STIPPLE_PATTERN:
4282 params[0] = ctx->Line.StipplePattern;
4283 break;
4284 case GL_LINE_STIPPLE_REPEAT:
4285 params[0] = ctx->Line.StippleFactor;
4286 break;
4287 case GL_LINE_WIDTH:
4288 params[0] = IROUND(ctx->Line.Width);
4289 break;
4290 case GL_LINE_WIDTH_GRANULARITY:
4291 params[0] = IROUND(ctx->Const.LineWidthGranularity);
4292 break;
4293 case GL_LINE_WIDTH_RANGE:
4294 params[0] = IROUND(ctx->Const.MinLineWidthAA);
4295 params[1] = IROUND(ctx->Const.MaxLineWidthAA);
4296 break;
4297 case GL_ALIASED_LINE_WIDTH_RANGE:
4298 params[0] = IROUND(ctx->Const.MinLineWidth);
4299 params[1] = IROUND(ctx->Const.MaxLineWidth);
4300 break;
4301 case GL_LIST_BASE:
4302 params[0] = ctx->List.ListBase;
4303 break;
4304 case GL_LIST_INDEX:
4305 params[0] = (ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0);
4306 break;
4307 case GL_LIST_MODE:
4308 {
4309 GLenum mode;
4310 if (!ctx->CompileFlag)
4311 mode = 0;
4312 else if (ctx->ExecuteFlag)
4313 mode = GL_COMPILE_AND_EXECUTE;
4314 else
4315 mode = GL_COMPILE;
4316 params[0] = ENUM_TO_INT(mode);
4317 }
4318 break;
4319 case GL_INDEX_LOGIC_OP:
4320 params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled);
4321 break;
4322 case GL_COLOR_LOGIC_OP:
4323 params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled);
4324 break;
4325 case GL_LOGIC_OP_MODE:
4326 params[0] = ENUM_TO_INT(ctx->Color.LogicOp);
4327 break;
4328 case GL_MAP1_COLOR_4:
4329 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4);
4330 break;
4331 case GL_MAP1_GRID_DOMAIN:
4332 params[0] = IROUND(ctx->Eval.MapGrid1u1);
4333 params[1] = IROUND(ctx->Eval.MapGrid1u2);
4334 break;
4335 case GL_MAP1_GRID_SEGMENTS:
4336 params[0] = ctx->Eval.MapGrid1un;
4337 break;
4338 case GL_MAP1_INDEX:
4339 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index);
4340 break;
4341 case GL_MAP1_NORMAL:
4342 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal);
4343 break;
4344 case GL_MAP1_TEXTURE_COORD_1:
4345 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1);
4346 break;
4347 case GL_MAP1_TEXTURE_COORD_2:
4348 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2);
4349 break;
4350 case GL_MAP1_TEXTURE_COORD_3:
4351 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3);
4352 break;
4353 case GL_MAP1_TEXTURE_COORD_4:
4354 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4);
4355 break;
4356 case GL_MAP1_VERTEX_3:
4357 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3);
4358 break;
4359 case GL_MAP1_VERTEX_4:
4360 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4);
4361 break;
4362 case GL_MAP2_COLOR_4:
4363 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4);
4364 break;
4365 case GL_MAP2_GRID_DOMAIN:
4366 params[0] = IROUND(ctx->Eval.MapGrid2u1);
4367 params[1] = IROUND(ctx->Eval.MapGrid2u2);
4368 params[2] = IROUND(ctx->Eval.MapGrid2v1);
4369 params[3] = IROUND(ctx->Eval.MapGrid2v2);
4370 break;
4371 case GL_MAP2_GRID_SEGMENTS:
4372 params[0] = ctx->Eval.MapGrid2un;
4373 params[1] = ctx->Eval.MapGrid2vn;
4374 break;
4375 case GL_MAP2_INDEX:
4376 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index);
4377 break;
4378 case GL_MAP2_NORMAL:
4379 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal);
4380 break;
4381 case GL_MAP2_TEXTURE_COORD_1:
4382 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1);
4383 break;
4384 case GL_MAP2_TEXTURE_COORD_2:
4385 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2);
4386 break;
4387 case GL_MAP2_TEXTURE_COORD_3:
4388 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3);
4389 break;
4390 case GL_MAP2_TEXTURE_COORD_4:
4391 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4);
4392 break;
4393 case GL_MAP2_VERTEX_3:
4394 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3);
4395 break;
4396 case GL_MAP2_VERTEX_4:
4397 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4);
4398 break;
4399 case GL_MAP_COLOR:
4400 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag);
4401 break;
4402 case GL_MAP_STENCIL:
4403 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag);
4404 break;
4405 case GL_MATRIX_MODE:
4406 params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode);
4407 break;
4408 case GL_MAX_ATTRIB_STACK_DEPTH:
4409 params[0] = MAX_ATTRIB_STACK_DEPTH;
4410 break;
4411 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
4412 params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
4413 break;
4414 case GL_MAX_CLIP_PLANES:
4415 params[0] = ctx->Const.MaxClipPlanes;
4416 break;
4417 case GL_MAX_ELEMENTS_VERTICES:
4418 params[0] = ctx->Const.MaxArrayLockSize;
4419 break;
4420 case GL_MAX_ELEMENTS_INDICES:
4421 params[0] = ctx->Const.MaxArrayLockSize;
4422 break;
4423 case GL_MAX_EVAL_ORDER:
4424 params[0] = MAX_EVAL_ORDER;
4425 break;
4426 case GL_MAX_LIGHTS:
4427 params[0] = ctx->Const.MaxLights;
4428 break;
4429 case GL_MAX_LIST_NESTING:
4430 params[0] = MAX_LIST_NESTING;
4431 break;
4432 case GL_MAX_MODELVIEW_STACK_DEPTH:
4433 params[0] = MAX_MODELVIEW_STACK_DEPTH;
4434 break;
4435 case GL_MAX_NAME_STACK_DEPTH:
4436 params[0] = MAX_NAME_STACK_DEPTH;
4437 break;
4438 case GL_MAX_PIXEL_MAP_TABLE:
4439 params[0] = MAX_PIXEL_MAP_TABLE;
4440 break;
4441 case GL_MAX_PROJECTION_STACK_DEPTH:
4442 params[0] = MAX_PROJECTION_STACK_DEPTH;
4443 break;
4444 case GL_MAX_TEXTURE_SIZE:
4445 params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
4446 break;
4447 case GL_MAX_3D_TEXTURE_SIZE:
4448 params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
4449 break;
4450 case GL_MAX_TEXTURE_STACK_DEPTH:
4451 params[0] = MAX_TEXTURE_STACK_DEPTH;
4452 break;
4453 case GL_MAX_VIEWPORT_DIMS:
4454 params[0] = ctx->Const.MaxViewportWidth;
4455 params[1] = ctx->Const.MaxViewportHeight;
4456 break;
4457 case GL_MODELVIEW_MATRIX:
4458 {
4459 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4460 params[0] = IROUND(matrix[0]);
4461 params[1] = IROUND(matrix[1]);
4462 params[2] = IROUND(matrix[2]);
4463 params[3] = IROUND(matrix[3]);
4464 params[4] = IROUND(matrix[4]);
4465 params[5] = IROUND(matrix[5]);
4466 params[6] = IROUND(matrix[6]);
4467 params[7] = IROUND(matrix[7]);
4468 params[8] = IROUND(matrix[8]);
4469 params[9] = IROUND(matrix[9]);
4470 params[10] = IROUND(matrix[10]);
4471 params[11] = IROUND(matrix[11]);
4472 params[12] = IROUND(matrix[12]);
4473 params[13] = IROUND(matrix[13]);
4474 params[14] = IROUND(matrix[14]);
4475 params[15] = IROUND(matrix[15]);
4476 }
4477 break;
4478 case GL_MODELVIEW_STACK_DEPTH:
4479 params[0] = ctx->ModelviewMatrixStack.Depth + 1;
4480 break;
4481 case GL_NAME_STACK_DEPTH:
4482 params[0] = ctx->Select.NameStackDepth;
4483 break;
4484 case GL_NORMALIZE:
4485 params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize);
4486 break;
4487 case GL_PACK_ALIGNMENT:
4488 params[0] = ctx->Pack.Alignment;
4489 break;
4490 case GL_PACK_LSB_FIRST:
4491 params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst);
4492 break;
4493 case GL_PACK_ROW_LENGTH:
4494 params[0] = ctx->Pack.RowLength;
4495 break;
4496 case GL_PACK_SKIP_PIXELS:
4497 params[0] = ctx->Pack.SkipPixels;
4498 break;
4499 case GL_PACK_SKIP_ROWS:
4500 params[0] = ctx->Pack.SkipRows;
4501 break;
4502 case GL_PACK_SWAP_BYTES:
4503 params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes);
4504 break;
4505 case GL_PACK_SKIP_IMAGES_EXT:
4506 params[0] = ctx->Pack.SkipImages;
4507 break;
4508 case GL_PACK_IMAGE_HEIGHT_EXT:
4509 params[0] = ctx->Pack.ImageHeight;
4510 break;
4511 case GL_PACK_INVERT_MESA:
4512 params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert);
4513 break;
4514 case GL_PERSPECTIVE_CORRECTION_HINT:
4515 params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection);
4516 break;
4517 case GL_PIXEL_MAP_A_TO_A_SIZE:
4518 params[0] = ctx->PixelMaps.AtoA.Size;
4519 break;
4520 case GL_PIXEL_MAP_B_TO_B_SIZE:
4521 params[0] = ctx->PixelMaps.BtoB.Size;
4522 break;
4523 case GL_PIXEL_MAP_G_TO_G_SIZE:
4524 params[0] = ctx->PixelMaps.GtoG.Size;
4525 break;
4526 case GL_PIXEL_MAP_I_TO_A_SIZE:
4527 params[0] = ctx->PixelMaps.ItoA.Size;
4528 break;
4529 case GL_PIXEL_MAP_I_TO_B_SIZE:
4530 params[0] = ctx->PixelMaps.ItoB.Size;
4531 break;
4532 case GL_PIXEL_MAP_I_TO_G_SIZE:
4533 params[0] = ctx->PixelMaps.ItoG.Size;
4534 break;
4535 case GL_PIXEL_MAP_I_TO_I_SIZE:
4536 params[0] = ctx->PixelMaps.ItoI.Size;
4537 break;
4538 case GL_PIXEL_MAP_I_TO_R_SIZE:
4539 params[0] = ctx->PixelMaps.ItoR.Size;
4540 break;
4541 case GL_PIXEL_MAP_R_TO_R_SIZE:
4542 params[0] = ctx->PixelMaps.RtoR.Size;
4543 break;
4544 case GL_PIXEL_MAP_S_TO_S_SIZE:
4545 params[0] = ctx->PixelMaps.StoS.Size;
4546 break;
4547 case GL_POINT_SIZE:
4548 params[0] = IROUND(ctx->Point.Size);
4549 break;
4550 case GL_POINT_SIZE_GRANULARITY:
4551 params[0] = IROUND(ctx->Const.PointSizeGranularity);
4552 break;
4553 case GL_POINT_SIZE_RANGE:
4554 params[0] = IROUND(ctx->Const.MinPointSizeAA);
4555 params[1] = IROUND(ctx->Const.MaxPointSizeAA);
4556 break;
4557 case GL_ALIASED_POINT_SIZE_RANGE:
4558 params[0] = IROUND(ctx->Const.MinPointSize);
4559 params[1] = IROUND(ctx->Const.MaxPointSize);
4560 break;
4561 case GL_POINT_SMOOTH:
4562 params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag);
4563 break;
4564 case GL_POINT_SMOOTH_HINT:
4565 params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth);
4566 break;
4567 case GL_POINT_SIZE_MIN_EXT:
4568 params[0] = IROUND(ctx->Point.MinSize);
4569 break;
4570 case GL_POINT_SIZE_MAX_EXT:
4571 params[0] = IROUND(ctx->Point.MaxSize);
4572 break;
4573 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
4574 params[0] = IROUND(ctx->Point.Threshold);
4575 break;
4576 case GL_DISTANCE_ATTENUATION_EXT:
4577 params[0] = IROUND(ctx->Point.Params[0]);
4578 params[1] = IROUND(ctx->Point.Params[1]);
4579 params[2] = IROUND(ctx->Point.Params[2]);
4580 break;
4581 case GL_POLYGON_MODE:
4582 params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode);
4583 params[1] = ENUM_TO_INT(ctx->Polygon.BackMode);
4584 break;
4585 case GL_POLYGON_OFFSET_BIAS_EXT:
4586 params[0] = IROUND(ctx->Polygon.OffsetUnits);
4587 break;
4588 case GL_POLYGON_OFFSET_FACTOR:
4589 params[0] = IROUND(ctx->Polygon.OffsetFactor );
4590 break;
4591 case GL_POLYGON_OFFSET_UNITS:
4592 params[0] = IROUND(ctx->Polygon.OffsetUnits );
4593 break;
4594 case GL_POLYGON_OFFSET_POINT:
4595 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetPoint);
4596 break;
4597 case GL_POLYGON_OFFSET_LINE:
4598 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetLine);
4599 break;
4600 case GL_POLYGON_OFFSET_FILL:
4601 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetFill);
4602 break;
4603 case GL_POLYGON_SMOOTH:
4604 params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag);
4605 break;
4606 case GL_POLYGON_SMOOTH_HINT:
4607 params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth);
4608 break;
4609 case GL_POLYGON_STIPPLE:
4610 params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag);
4611 break;
4612 case GL_PROJECTION_MATRIX:
4613 {
4614 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
4615 params[0] = IROUND(matrix[0]);
4616 params[1] = IROUND(matrix[1]);
4617 params[2] = IROUND(matrix[2]);
4618 params[3] = IROUND(matrix[3]);
4619 params[4] = IROUND(matrix[4]);
4620 params[5] = IROUND(matrix[5]);
4621 params[6] = IROUND(matrix[6]);
4622 params[7] = IROUND(matrix[7]);
4623 params[8] = IROUND(matrix[8]);
4624 params[9] = IROUND(matrix[9]);
4625 params[10] = IROUND(matrix[10]);
4626 params[11] = IROUND(matrix[11]);
4627 params[12] = IROUND(matrix[12]);
4628 params[13] = IROUND(matrix[13]);
4629 params[14] = IROUND(matrix[14]);
4630 params[15] = IROUND(matrix[15]);
4631 }
4632 break;
4633 case GL_PROJECTION_STACK_DEPTH:
4634 params[0] = ctx->ProjectionMatrixStack.Depth + 1;
4635 break;
4636 case GL_READ_BUFFER:
4637 params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer);
4638 break;
4639 case GL_RED_BIAS:
4640 params[0] = IROUND(ctx->Pixel.RedBias);
4641 break;
4642 case GL_RED_BITS:
4643 if (ctx->NewState & _NEW_BUFFERS)
4644 _mesa_update_state(ctx);
4645 params[0] = ctx->DrawBuffer->Visual.redBits;
4646 break;
4647 case GL_RED_SCALE:
4648 params[0] = IROUND(ctx->Pixel.RedScale);
4649 break;
4650 case GL_RENDER_MODE:
4651 params[0] = ENUM_TO_INT(ctx->RenderMode);
4652 break;
4653 case GL_RESCALE_NORMAL:
4654 params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals);
4655 break;
4656 case GL_RGBA_MODE:
4657 params[0] = BOOLEAN_TO_INT(GL_TRUE);
4658 break;
4659 case GL_SCISSOR_BOX:
4660 params[0] = ctx->Scissor.X;
4661 params[1] = ctx->Scissor.Y;
4662 params[2] = ctx->Scissor.Width;
4663 params[3] = ctx->Scissor.Height;
4664 break;
4665 case GL_SCISSOR_TEST:
4666 params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled);
4667 break;
4668 case GL_SELECTION_BUFFER_SIZE:
4669 params[0] = ctx->Select.BufferSize;
4670 break;
4671 case GL_SHADE_MODEL:
4672 params[0] = ENUM_TO_INT(ctx->Light.ShadeModel);
4673 break;
4674 case GL_SHARED_TEXTURE_PALETTE_EXT:
4675 params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette);
4676 break;
4677 case GL_STENCIL_BITS:
4678 params[0] = ctx->DrawBuffer->Visual.stencilBits;
4679 break;
4680 case GL_STENCIL_CLEAR_VALUE:
4681 params[0] = ctx->Stencil.Clear;
4682 break;
4683 case GL_STENCIL_FAIL:
4684 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
4685 break;
4686 case GL_STENCIL_FUNC:
4687 params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
4688 break;
4689 case GL_STENCIL_PASS_DEPTH_FAIL:
4690 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
4691 break;
4692 case GL_STENCIL_PASS_DEPTH_PASS:
4693 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
4694 break;
4695 case GL_STENCIL_REF:
4696 params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
4697 break;
4698 case GL_STENCIL_TEST:
4699 params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled);
4700 break;
4701 case GL_STENCIL_VALUE_MASK:
4702 params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
4703 break;
4704 case GL_STENCIL_WRITEMASK:
4705 params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
4706 break;
4707 case GL_STEREO:
4708 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode);
4709 break;
4710 case GL_SUBPIXEL_BITS:
4711 params[0] = ctx->Const.SubPixelBits;
4712 break;
4713 case GL_TEXTURE_1D:
4714 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D));
4715 break;
4716 case GL_TEXTURE_2D:
4717 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D));
4718 break;
4719 case GL_TEXTURE_3D:
4720 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D));
4721 break;
4722 case GL_TEXTURE_1D_ARRAY_EXT:
4723 CHECK_EXT1(MESA_texture_array);
4724 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
4725 break;
4726 case GL_TEXTURE_2D_ARRAY_EXT:
4727 CHECK_EXT1(MESA_texture_array);
4728 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
4729 break;
4730 case GL_TEXTURE_BINDING_1D:
4731 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name;
4732 break;
4733 case GL_TEXTURE_BINDING_2D:
4734 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name;
4735 break;
4736 case GL_TEXTURE_BINDING_3D:
4737 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name;
4738 break;
4739 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
4740 CHECK_EXT1(MESA_texture_array);
4741 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name;
4742 break;
4743 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
4744 CHECK_EXT1(MESA_texture_array);
4745 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name;
4746 break;
4747 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
4748 CHECK_EXT1(MESA_texture_array);
4749 params[0] = ctx->Const.MaxArrayTextureLayers;
4750 break;
4751 case GL_TEXTURE_GEN_S:
4752 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
4753 break;
4754 case GL_TEXTURE_GEN_T:
4755 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
4756 break;
4757 case GL_TEXTURE_GEN_R:
4758 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
4759 break;
4760 case GL_TEXTURE_GEN_Q:
4761 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
4762 break;
4763 case GL_TEXTURE_MATRIX:
4764 {
4765 const GLfloat *matrix;
4766 const GLuint unit = ctx->Texture.CurrentUnit;
4767 if (unit >= ctx->Const.MaxTextureCoordUnits) {
4768 _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
4769 unit);
4770 return;
4771 }
4772 matrix = ctx->TextureMatrixStack[unit].Top->m;
4773 params[0] = IROUND(matrix[0]);
4774 params[1] = IROUND(matrix[1]);
4775 params[2] = IROUND(matrix[2]);
4776 params[3] = IROUND(matrix[3]);
4777 params[4] = IROUND(matrix[4]);
4778 params[5] = IROUND(matrix[5]);
4779 params[6] = IROUND(matrix[6]);
4780 params[7] = IROUND(matrix[7]);
4781 params[8] = IROUND(matrix[8]);
4782 params[9] = IROUND(matrix[9]);
4783 params[10] = IROUND(matrix[10]);
4784 params[11] = IROUND(matrix[11]);
4785 params[12] = IROUND(matrix[12]);
4786 params[13] = IROUND(matrix[13]);
4787 params[14] = IROUND(matrix[14]);
4788 params[15] = IROUND(matrix[15]);
4789 }
4790 break;
4791 case GL_TEXTURE_STACK_DEPTH:
4792 {
4793 const GLuint unit = ctx->Texture.CurrentUnit;
4794 if (unit >= ctx->Const.MaxTextureCoordUnits) {
4795 _mesa_error(ctx, GL_INVALID_OPERATION,
4796 "glGet(texture stack depth, unit %u)", unit);
4797 return;
4798 }
4799 params[0] = ctx->TextureMatrixStack[unit].Depth + 1;
4800 }
4801 break;
4802 case GL_UNPACK_ALIGNMENT:
4803 params[0] = ctx->Unpack.Alignment;
4804 break;
4805 case GL_UNPACK_LSB_FIRST:
4806 params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst);
4807 break;
4808 case GL_UNPACK_ROW_LENGTH:
4809 params[0] = ctx->Unpack.RowLength;
4810 break;
4811 case GL_UNPACK_SKIP_PIXELS:
4812 params[0] = ctx->Unpack.SkipPixels;
4813 break;
4814 case GL_UNPACK_SKIP_ROWS:
4815 params[0] = ctx->Unpack.SkipRows;
4816 break;
4817 case GL_UNPACK_SWAP_BYTES:
4818 params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes);
4819 break;
4820 case GL_UNPACK_SKIP_IMAGES_EXT:
4821 params[0] = ctx->Unpack.SkipImages;
4822 break;
4823 case GL_UNPACK_IMAGE_HEIGHT_EXT:
4824 params[0] = ctx->Unpack.ImageHeight;
4825 break;
4826 case GL_UNPACK_CLIENT_STORAGE_APPLE:
4827 params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage);
4828 break;
4829 case GL_VIEWPORT:
4830 params[0] = ctx->Viewport.X;
4831 params[1] = ctx->Viewport.Y;
4832 params[2] = ctx->Viewport.Width;
4833 params[3] = ctx->Viewport.Height;
4834 break;
4835 case GL_ZOOM_X:
4836 params[0] = IROUND(ctx->Pixel.ZoomX);
4837 break;
4838 case GL_ZOOM_Y:
4839 params[0] = IROUND(ctx->Pixel.ZoomY);
4840 break;
4841 case GL_VERTEX_ARRAY:
4842 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled);
4843 break;
4844 case GL_VERTEX_ARRAY_SIZE:
4845 params[0] = ctx->Array.ArrayObj->Vertex.Size;
4846 break;
4847 case GL_VERTEX_ARRAY_TYPE:
4848 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type);
4849 break;
4850 case GL_VERTEX_ARRAY_STRIDE:
4851 params[0] = ctx->Array.ArrayObj->Vertex.Stride;
4852 break;
4853 case GL_VERTEX_ARRAY_COUNT_EXT:
4854 params[0] = 0;
4855 break;
4856 case GL_NORMAL_ARRAY:
4857 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled);
4858 break;
4859 case GL_NORMAL_ARRAY_TYPE:
4860 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type);
4861 break;
4862 case GL_NORMAL_ARRAY_STRIDE:
4863 params[0] = ctx->Array.ArrayObj->Normal.Stride;
4864 break;
4865 case GL_NORMAL_ARRAY_COUNT_EXT:
4866 params[0] = 0;
4867 break;
4868 case GL_COLOR_ARRAY:
4869 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled);
4870 break;
4871 case GL_COLOR_ARRAY_SIZE:
4872 params[0] = ctx->Array.ArrayObj->Color.Size;
4873 break;
4874 case GL_COLOR_ARRAY_TYPE:
4875 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type);
4876 break;
4877 case GL_COLOR_ARRAY_STRIDE:
4878 params[0] = ctx->Array.ArrayObj->Color.Stride;
4879 break;
4880 case GL_COLOR_ARRAY_COUNT_EXT:
4881 params[0] = 0;
4882 break;
4883 case GL_INDEX_ARRAY:
4884 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled);
4885 break;
4886 case GL_INDEX_ARRAY_TYPE:
4887 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type);
4888 break;
4889 case GL_INDEX_ARRAY_STRIDE:
4890 params[0] = ctx->Array.ArrayObj->Index.Stride;
4891 break;
4892 case GL_INDEX_ARRAY_COUNT_EXT:
4893 params[0] = 0;
4894 break;
4895 case GL_TEXTURE_COORD_ARRAY:
4896 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
4897 break;
4898 case GL_TEXTURE_COORD_ARRAY_SIZE:
4899 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
4900 break;
4901 case GL_TEXTURE_COORD_ARRAY_TYPE:
4902 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
4903 break;
4904 case GL_TEXTURE_COORD_ARRAY_STRIDE:
4905 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
4906 break;
4907 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
4908 params[0] = 0;
4909 break;
4910 case GL_EDGE_FLAG_ARRAY:
4911 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
4912 break;
4913 case GL_EDGE_FLAG_ARRAY_STRIDE:
4914 params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
4915 break;
4916 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
4917 params[0] = 0;
4918 break;
4919 case GL_MAX_TEXTURE_UNITS_ARB:
4920 CHECK_EXT1(ARB_multitexture);
4921 params[0] = ctx->Const.MaxTextureUnits;
4922 break;
4923 case GL_ACTIVE_TEXTURE_ARB:
4924 CHECK_EXT1(ARB_multitexture);
4925 params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
4926 break;
4927 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
4928 CHECK_EXT1(ARB_multitexture);
4929 params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
4930 break;
4931 case GL_TEXTURE_CUBE_MAP_ARB:
4932 CHECK_EXT1(ARB_texture_cube_map);
4933 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
4934 break;
4935 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
4936 CHECK_EXT1(ARB_texture_cube_map);
4937 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name;
4938 break;
4939 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
4940 CHECK_EXT1(ARB_texture_cube_map);
4941 params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
4942 break;
4943 case GL_TEXTURE_COMPRESSION_HINT_ARB:
4944 params[0] = ctx->Hint.TextureCompression;
4945 break;
4946 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
4947 params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
4948 break;
4949 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
4950 {
4951 GLint formats[100];
4952 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
4953 ASSERT(n <= 100);
4954 for (i = 0; i < n; i++)
4955 params[i] = ENUM_TO_INT(formats[i]);
4956 }
4957 break;
4958 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
4959 CHECK_EXT1(EXT_compiled_vertex_array);
4960 params[0] = ctx->Array.LockFirst;
4961 break;
4962 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
4963 CHECK_EXT1(EXT_compiled_vertex_array);
4964 params[0] = ctx->Array.LockCount;
4965 break;
4966 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
4967 {
4968 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
4969 params[0] = IROUND(matrix[0]);
4970 params[1] = IROUND(matrix[4]);
4971 params[2] = IROUND(matrix[8]);
4972 params[3] = IROUND(matrix[12]);
4973 params[4] = IROUND(matrix[1]);
4974 params[5] = IROUND(matrix[5]);
4975 params[6] = IROUND(matrix[9]);
4976 params[7] = IROUND(matrix[13]);
4977 params[8] = IROUND(matrix[2]);
4978 params[9] = IROUND(matrix[6]);
4979 params[10] = IROUND(matrix[10]);
4980 params[11] = IROUND(matrix[14]);
4981 params[12] = IROUND(matrix[3]);
4982 params[13] = IROUND(matrix[7]);
4983 params[14] = IROUND(matrix[11]);
4984 params[15] = IROUND(matrix[15]);
4985 }
4986 break;
4987 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
4988 {
4989 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4990 params[0] = IROUND(matrix[0]);
4991 params[1] = IROUND(matrix[4]);
4992 params[2] = IROUND(matrix[8]);
4993 params[3] = IROUND(matrix[12]);
4994 params[4] = IROUND(matrix[1]);
4995 params[5] = IROUND(matrix[5]);
4996 params[6] = IROUND(matrix[9]);
4997 params[7] = IROUND(matrix[13]);
4998 params[8] = IROUND(matrix[2]);
4999 params[9] = IROUND(matrix[6]);
5000 params[10] = IROUND(matrix[10]);
5001 params[11] = IROUND(matrix[14]);
5002 params[12] = IROUND(matrix[3]);
5003 params[13] = IROUND(matrix[7]);
5004 params[14] = IROUND(matrix[11]);
5005 params[15] = IROUND(matrix[15]);
5006 }
5007 break;
5008 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
5009 {
5010 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
5011 params[0] = IROUND(matrix[0]);
5012 params[1] = IROUND(matrix[4]);
5013 params[2] = IROUND(matrix[8]);
5014 params[3] = IROUND(matrix[12]);
5015 params[4] = IROUND(matrix[1]);
5016 params[5] = IROUND(matrix[5]);
5017 params[6] = IROUND(matrix[9]);
5018 params[7] = IROUND(matrix[13]);
5019 params[8] = IROUND(matrix[2]);
5020 params[9] = IROUND(matrix[6]);
5021 params[10] = IROUND(matrix[10]);
5022 params[11] = IROUND(matrix[14]);
5023 params[12] = IROUND(matrix[3]);
5024 params[13] = IROUND(matrix[7]);
5025 params[14] = IROUND(matrix[11]);
5026 params[15] = IROUND(matrix[15]);
5027 }
5028 break;
5029 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
5030 {
5031 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
5032 params[0] = IROUND(matrix[0]);
5033 params[1] = IROUND(matrix[4]);
5034 params[2] = IROUND(matrix[8]);
5035 params[3] = IROUND(matrix[12]);
5036 params[4] = IROUND(matrix[1]);
5037 params[5] = IROUND(matrix[5]);
5038 params[6] = IROUND(matrix[9]);
5039 params[7] = IROUND(matrix[13]);
5040 params[8] = IROUND(matrix[2]);
5041 params[9] = IROUND(matrix[6]);
5042 params[10] = IROUND(matrix[10]);
5043 params[11] = IROUND(matrix[14]);
5044 params[12] = IROUND(matrix[3]);
5045 params[13] = IROUND(matrix[7]);
5046 params[14] = IROUND(matrix[11]);
5047 params[15] = IROUND(matrix[15]);
5048 }
5049 break;
5050 case GL_COLOR_MATRIX_SGI:
5051 {
5052 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
5053 params[0] = IROUND(matrix[0]);
5054 params[1] = IROUND(matrix[1]);
5055 params[2] = IROUND(matrix[2]);
5056 params[3] = IROUND(matrix[3]);
5057 params[4] = IROUND(matrix[4]);
5058 params[5] = IROUND(matrix[5]);
5059 params[6] = IROUND(matrix[6]);
5060 params[7] = IROUND(matrix[7]);
5061 params[8] = IROUND(matrix[8]);
5062 params[9] = IROUND(matrix[9]);
5063 params[10] = IROUND(matrix[10]);
5064 params[11] = IROUND(matrix[11]);
5065 params[12] = IROUND(matrix[12]);
5066 params[13] = IROUND(matrix[13]);
5067 params[14] = IROUND(matrix[14]);
5068 params[15] = IROUND(matrix[15]);
5069 }
5070 break;
5071 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
5072 params[0] = ctx->ColorMatrixStack.Depth + 1;
5073 break;
5074 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
5075 params[0] = MAX_COLOR_STACK_DEPTH;
5076 break;
5077 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
5078 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
5079 break;
5080 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
5081 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
5082 break;
5083 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
5084 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
5085 break;
5086 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
5087 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
5088 break;
5089 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
5090 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
5091 break;
5092 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
5093 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
5094 break;
5095 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
5096 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
5097 break;
5098 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
5099 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
5100 break;
5101 case GL_CONVOLUTION_1D_EXT:
5102 CHECK_EXT1(EXT_convolution);
5103 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
5104 break;
5105 case GL_CONVOLUTION_2D_EXT:
5106 CHECK_EXT1(EXT_convolution);
5107 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
5108 break;
5109 case GL_SEPARABLE_2D_EXT:
5110 CHECK_EXT1(EXT_convolution);
5111 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
5112 break;
5113 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
5114 CHECK_EXT1(EXT_convolution);
5115 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
5116 break;
5117 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
5118 CHECK_EXT1(EXT_convolution);
5119 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
5120 break;
5121 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
5122 CHECK_EXT1(EXT_convolution);
5123 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
5124 break;
5125 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
5126 CHECK_EXT1(EXT_convolution);
5127 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
5128 break;
5129 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
5130 CHECK_EXT1(EXT_convolution);
5131 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
5132 break;
5133 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
5134 CHECK_EXT1(EXT_convolution);
5135 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
5136 break;
5137 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
5138 CHECK_EXT1(EXT_convolution);
5139 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
5140 break;
5141 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
5142 CHECK_EXT1(EXT_convolution);
5143 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
5144 break;
5145 case GL_HISTOGRAM:
5146 CHECK_EXT1(EXT_histogram);
5147 params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
5148 break;
5149 case GL_MINMAX:
5150 CHECK_EXT1(EXT_histogram);
5151 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
5152 break;
5153 case GL_COLOR_TABLE_SGI:
5154 CHECK_EXT1(SGI_color_table);
5155 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
5156 break;
5157 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
5158 CHECK_EXT1(SGI_color_table);
5159 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
5160 break;
5161 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
5162 CHECK_EXT1(SGI_color_table);
5163 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
5164 break;
5165 case GL_TEXTURE_COLOR_TABLE_SGI:
5166 CHECK_EXT1(SGI_texture_color_table);
5167 params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
5168 break;
5169 case GL_COLOR_SUM_EXT:
5170 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program);
5171 params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
5172 break;
5173 case GL_CURRENT_SECONDARY_COLOR_EXT:
5174 CHECK_EXT1(EXT_secondary_color);
5175 FLUSH_CURRENT(ctx, 0);
5176 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
5177 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
5178 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
5179 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
5180 break;
5181 case GL_SECONDARY_COLOR_ARRAY_EXT:
5182 CHECK_EXT1(EXT_secondary_color);
5183 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
5184 break;
5185 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
5186 CHECK_EXT1(EXT_secondary_color);
5187 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
5188 break;
5189 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
5190 CHECK_EXT1(EXT_secondary_color);
5191 params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
5192 break;
5193 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
5194 CHECK_EXT1(EXT_secondary_color);
5195 params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
5196 break;
5197 case GL_CURRENT_FOG_COORDINATE_EXT:
5198 CHECK_EXT1(EXT_fog_coord);
5199 FLUSH_CURRENT(ctx, 0);
5200 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
5201 break;
5202 case GL_FOG_COORDINATE_ARRAY_EXT:
5203 CHECK_EXT1(EXT_fog_coord);
5204 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
5205 break;
5206 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
5207 CHECK_EXT1(EXT_fog_coord);
5208 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
5209 break;
5210 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
5211 CHECK_EXT1(EXT_fog_coord);
5212 params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
5213 break;
5214 case GL_FOG_COORDINATE_SOURCE_EXT:
5215 CHECK_EXT1(EXT_fog_coord);
5216 params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
5217 break;
5218 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
5219 CHECK_EXT1(EXT_texture_lod_bias);
5220 params[0] = IROUND(ctx->Const.MaxTextureLodBias);
5221 break;
5222 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
5223 CHECK_EXT1(EXT_texture_filter_anisotropic);
5224 params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
5225 break;
5226 case GL_MULTISAMPLE_ARB:
5227 params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
5228 break;
5229 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
5230 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
5231 break;
5232 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
5233 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
5234 break;
5235 case GL_SAMPLE_COVERAGE_ARB:
5236 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
5237 break;
5238 case GL_SAMPLE_COVERAGE_VALUE_ARB:
5239 params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
5240 break;
5241 case GL_SAMPLE_COVERAGE_INVERT_ARB:
5242 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
5243 break;
5244 case GL_SAMPLE_BUFFERS_ARB:
5245 params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
5246 break;
5247 case GL_SAMPLES_ARB:
5248 params[0] = ctx->DrawBuffer->Visual.samples;
5249 break;
5250 case GL_RASTER_POSITION_UNCLIPPED_IBM:
5251 CHECK_EXT1(IBM_rasterpos_clip);
5252 params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
5253 break;
5254 case GL_POINT_SPRITE_NV:
5255 CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
5256 params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
5257 break;
5258 case GL_POINT_SPRITE_R_MODE_NV:
5259 CHECK_EXT1(NV_point_sprite);
5260 params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
5261 break;
5262 case GL_POINT_SPRITE_COORD_ORIGIN:
5263 CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
5264 params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
5265 break;
5266 case GL_GENERATE_MIPMAP_HINT_SGIS:
5267 CHECK_EXT1(SGIS_generate_mipmap);
5268 params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
5269 break;
5270 case GL_VERTEX_PROGRAM_BINDING_NV:
5271 CHECK_EXT1(NV_vertex_program);
5272 params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
5273 break;
5274 case GL_VERTEX_ATTRIB_ARRAY0_NV:
5275 CHECK_EXT1(NV_vertex_program);
5276 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
5277 break;
5278 case GL_VERTEX_ATTRIB_ARRAY1_NV:
5279 CHECK_EXT1(NV_vertex_program);
5280 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
5281 break;
5282 case GL_VERTEX_ATTRIB_ARRAY2_NV:
5283 CHECK_EXT1(NV_vertex_program);
5284 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
5285 break;
5286 case GL_VERTEX_ATTRIB_ARRAY3_NV:
5287 CHECK_EXT1(NV_vertex_program);
5288 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
5289 break;
5290 case GL_VERTEX_ATTRIB_ARRAY4_NV:
5291 CHECK_EXT1(NV_vertex_program);
5292 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
5293 break;
5294 case GL_VERTEX_ATTRIB_ARRAY5_NV:
5295 CHECK_EXT1(NV_vertex_program);
5296 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
5297 break;
5298 case GL_VERTEX_ATTRIB_ARRAY6_NV:
5299 CHECK_EXT1(NV_vertex_program);
5300 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
5301 break;
5302 case GL_VERTEX_ATTRIB_ARRAY7_NV:
5303 CHECK_EXT1(NV_vertex_program);
5304 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
5305 break;
5306 case GL_VERTEX_ATTRIB_ARRAY8_NV:
5307 CHECK_EXT1(NV_vertex_program);
5308 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
5309 break;
5310 case GL_VERTEX_ATTRIB_ARRAY9_NV:
5311 CHECK_EXT1(NV_vertex_program);
5312 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
5313 break;
5314 case GL_VERTEX_ATTRIB_ARRAY10_NV:
5315 CHECK_EXT1(NV_vertex_program);
5316 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
5317 break;
5318 case GL_VERTEX_ATTRIB_ARRAY11_NV:
5319 CHECK_EXT1(NV_vertex_program);
5320 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
5321 break;
5322 case GL_VERTEX_ATTRIB_ARRAY12_NV:
5323 CHECK_EXT1(NV_vertex_program);
5324 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
5325 break;
5326 case GL_VERTEX_ATTRIB_ARRAY13_NV:
5327 CHECK_EXT1(NV_vertex_program);
5328 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
5329 break;
5330 case GL_VERTEX_ATTRIB_ARRAY14_NV:
5331 CHECK_EXT1(NV_vertex_program);
5332 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
5333 break;
5334 case GL_VERTEX_ATTRIB_ARRAY15_NV:
5335 CHECK_EXT1(NV_vertex_program);
5336 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
5337 break;
5338 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
5339 CHECK_EXT1(NV_vertex_program);
5340 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
5341 break;
5342 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
5343 CHECK_EXT1(NV_vertex_program);
5344 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
5345 break;
5346 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
5347 CHECK_EXT1(NV_vertex_program);
5348 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
5349 break;
5350 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
5351 CHECK_EXT1(NV_vertex_program);
5352 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
5353 break;
5354 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
5355 CHECK_EXT1(NV_vertex_program);
5356 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
5357 break;
5358 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
5359 CHECK_EXT1(NV_vertex_program);
5360 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
5361 break;
5362 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
5363 CHECK_EXT1(NV_vertex_program);
5364 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
5365 break;
5366 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
5367 CHECK_EXT1(NV_vertex_program);
5368 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
5369 break;
5370 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
5371 CHECK_EXT1(NV_vertex_program);
5372 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
5373 break;
5374 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
5375 CHECK_EXT1(NV_vertex_program);
5376 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
5377 break;
5378 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
5379 CHECK_EXT1(NV_vertex_program);
5380 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
5381 break;
5382 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
5383 CHECK_EXT1(NV_vertex_program);
5384 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
5385 break;
5386 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
5387 CHECK_EXT1(NV_vertex_program);
5388 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
5389 break;
5390 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
5391 CHECK_EXT1(NV_vertex_program);
5392 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
5393 break;
5394 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
5395 CHECK_EXT1(NV_vertex_program);
5396 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
5397 break;
5398 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
5399 CHECK_EXT1(NV_vertex_program);
5400 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
5401 break;
5402 case GL_FRAGMENT_PROGRAM_NV:
5403 CHECK_EXT1(NV_fragment_program);
5404 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5405 break;
5406 case GL_FRAGMENT_PROGRAM_BINDING_NV:
5407 CHECK_EXT1(NV_fragment_program);
5408 params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
5409 break;
5410 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
5411 CHECK_EXT1(NV_fragment_program);
5412 params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
5413 break;
5414 case GL_TEXTURE_RECTANGLE_NV:
5415 CHECK_EXT1(NV_texture_rectangle);
5416 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
5417 break;
5418 case GL_TEXTURE_BINDING_RECTANGLE_NV:
5419 CHECK_EXT1(NV_texture_rectangle);
5420 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name;
5421 break;
5422 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
5423 CHECK_EXT1(NV_texture_rectangle);
5424 params[0] = ctx->Const.MaxTextureRectSize;
5425 break;
5426 case GL_STENCIL_TEST_TWO_SIDE_EXT:
5427 CHECK_EXT1(EXT_stencil_two_side);
5428 params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
5429 break;
5430 case GL_ACTIVE_STENCIL_FACE_EXT:
5431 CHECK_EXT1(EXT_stencil_two_side);
5432 params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
5433 break;
5434 case GL_MAX_SHININESS_NV:
5435 CHECK_EXT1(NV_light_max_exponent);
5436 params[0] = IROUND(ctx->Const.MaxShininess);
5437 break;
5438 case GL_MAX_SPOT_EXPONENT_NV:
5439 CHECK_EXT1(NV_light_max_exponent);
5440 params[0] = IROUND(ctx->Const.MaxSpotExponent);
5441 break;
5442 case GL_ARRAY_BUFFER_BINDING_ARB:
5443 params[0] = ctx->Array.ArrayBufferObj->Name;
5444 break;
5445 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
5446 params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
5447 break;
5448 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
5449 params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
5450 break;
5451 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
5452 params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
5453 break;
5454 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
5455 params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
5456 break;
5457 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
5458 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
5459 break;
5460 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
5461 params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
5462 break;
5463 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
5464 params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
5465 break;
5466 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
5467 params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
5468 break;
5469 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
5470 params[0] = ctx->Array.ElementArrayBufferObj->Name;
5471 break;
5472 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
5473 CHECK_EXT1(EXT_pixel_buffer_object);
5474 params[0] = ctx->Pack.BufferObj->Name;
5475 break;
5476 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
5477 CHECK_EXT1(EXT_pixel_buffer_object);
5478 params[0] = ctx->Unpack.BufferObj->Name;
5479 break;
5480 case GL_VERTEX_PROGRAM_ARB:
5481 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
5482 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
5483 break;
5484 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
5485 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
5486 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
5487 break;
5488 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
5489 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
5490 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
5491 break;
5492 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
5493 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
5494 params[0] = ctx->Const.MaxProgramMatrixStackDepth;
5495 break;
5496 case GL_MAX_PROGRAM_MATRICES_ARB:
5497 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
5498 params[0] = ctx->Const.MaxProgramMatrices;
5499 break;
5500 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
5501 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
5502 params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
5503 break;
5504 case GL_CURRENT_MATRIX_ARB:
5505 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program);
5506 {
5507 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5508 params[0] = IROUND(matrix[0]);
5509 params[1] = IROUND(matrix[1]);
5510 params[2] = IROUND(matrix[2]);
5511 params[3] = IROUND(matrix[3]);
5512 params[4] = IROUND(matrix[4]);
5513 params[5] = IROUND(matrix[5]);
5514 params[6] = IROUND(matrix[6]);
5515 params[7] = IROUND(matrix[7]);
5516 params[8] = IROUND(matrix[8]);
5517 params[9] = IROUND(matrix[9]);
5518 params[10] = IROUND(matrix[10]);
5519 params[11] = IROUND(matrix[11]);
5520 params[12] = IROUND(matrix[12]);
5521 params[13] = IROUND(matrix[13]);
5522 params[14] = IROUND(matrix[14]);
5523 params[15] = IROUND(matrix[15]);
5524 }
5525 break;
5526 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
5527 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program);
5528 {
5529 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5530 params[0] = IROUND(matrix[0]);
5531 params[1] = IROUND(matrix[4]);
5532 params[2] = IROUND(matrix[8]);
5533 params[3] = IROUND(matrix[12]);
5534 params[4] = IROUND(matrix[1]);
5535 params[5] = IROUND(matrix[5]);
5536 params[6] = IROUND(matrix[9]);
5537 params[7] = IROUND(matrix[13]);
5538 params[8] = IROUND(matrix[2]);
5539 params[9] = IROUND(matrix[6]);
5540 params[10] = IROUND(matrix[10]);
5541 params[11] = IROUND(matrix[14]);
5542 params[12] = IROUND(matrix[3]);
5543 params[13] = IROUND(matrix[7]);
5544 params[14] = IROUND(matrix[11]);
5545 params[15] = IROUND(matrix[15]);
5546 }
5547 break;
5548 case GL_MAX_VERTEX_ATTRIBS_ARB:
5549 CHECK_EXT1(ARB_vertex_program);
5550 params[0] = ctx->Const.VertexProgram.MaxAttribs;
5551 break;
5552 case GL_PROGRAM_ERROR_POSITION_ARB:
5553 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program);
5554 params[0] = ctx->Program.ErrorPos;
5555 break;
5556 case GL_FRAGMENT_PROGRAM_ARB:
5557 CHECK_EXT1(ARB_fragment_program);
5558 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5559 break;
5560 case GL_MAX_TEXTURE_COORDS_ARB:
5561 CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
5562 params[0] = ctx->Const.MaxTextureCoordUnits;
5563 break;
5564 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
5565 CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
5566 params[0] = ctx->Const.MaxTextureImageUnits;
5567 break;
5568 case GL_DEPTH_BOUNDS_TEST_EXT:
5569 CHECK_EXT1(EXT_depth_bounds_test);
5570 params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
5571 break;
5572 case GL_DEPTH_BOUNDS_EXT:
5573 CHECK_EXT1(EXT_depth_bounds_test);
5574 params[0] = IROUND(ctx->Depth.BoundsMin);
5575 params[1] = IROUND(ctx->Depth.BoundsMax);
5576 break;
5577 case GL_DEPTH_CLAMP:
5578 CHECK_EXT1(ARB_depth_clamp);
5579 params[0] = BOOLEAN_TO_INT(ctx->Transform.DepthClamp);
5580 break;
5581 case GL_MAX_DRAW_BUFFERS_ARB:
5582 params[0] = ctx->Const.MaxDrawBuffers;
5583 break;
5584 case GL_DRAW_BUFFER0_ARB:
5585 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
5586 break;
5587 case GL_DRAW_BUFFER1_ARB:
5588 {
5589 GLenum buffer;
5590 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5591 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5592 return;
5593 }
5594 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
5595 params[0] = ENUM_TO_INT(buffer);
5596 }
5597 break;
5598 case GL_DRAW_BUFFER2_ARB:
5599 {
5600 GLenum buffer;
5601 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5602 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5603 return;
5604 }
5605 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
5606 params[0] = ENUM_TO_INT(buffer);
5607 }
5608 break;
5609 case GL_DRAW_BUFFER3_ARB:
5610 {
5611 GLenum buffer;
5612 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5613 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5614 return;
5615 }
5616 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
5617 params[0] = ENUM_TO_INT(buffer);
5618 }
5619 break;
5620 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
5621 CHECK_EXT1(OES_read_format);
5622 if (ctx->NewState & _NEW_BUFFERS)
5623 _mesa_update_state(ctx);
5624 params[0] = _mesa_get_color_read_type(ctx);
5625 break;
5626 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
5627 CHECK_EXT1(OES_read_format);
5628 if (ctx->NewState & _NEW_BUFFERS)
5629 _mesa_update_state(ctx);
5630 params[0] = _mesa_get_color_read_format(ctx);
5631 break;
5632 case GL_NUM_FRAGMENT_REGISTERS_ATI:
5633 CHECK_EXT1(ATI_fragment_shader);
5634 params[0] = 6;
5635 break;
5636 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
5637 CHECK_EXT1(ATI_fragment_shader);
5638 params[0] = 8;
5639 break;
5640 case GL_NUM_PASSES_ATI:
5641 CHECK_EXT1(ATI_fragment_shader);
5642 params[0] = 2;
5643 break;
5644 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
5645 CHECK_EXT1(ATI_fragment_shader);
5646 params[0] = 8;
5647 break;
5648 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
5649 CHECK_EXT1(ATI_fragment_shader);
5650 params[0] = 16;
5651 break;
5652 case GL_COLOR_ALPHA_PAIRING_ATI:
5653 CHECK_EXT1(ATI_fragment_shader);
5654 params[0] = BOOLEAN_TO_INT(GL_TRUE);
5655 break;
5656 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
5657 CHECK_EXT1(ATI_fragment_shader);
5658 params[0] = 3;
5659 break;
5660 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
5661 CHECK_EXT1(ATI_fragment_shader);
5662 params[0] = 3;
5663 break;
5664 case GL_STENCIL_BACK_FUNC:
5665 params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
5666 break;
5667 case GL_STENCIL_BACK_VALUE_MASK:
5668 params[0] = ctx->Stencil.ValueMask[1];
5669 break;
5670 case GL_STENCIL_BACK_WRITEMASK:
5671 params[0] = ctx->Stencil.WriteMask[1];
5672 break;
5673 case GL_STENCIL_BACK_REF:
5674 params[0] = ctx->Stencil.Ref[1];
5675 break;
5676 case GL_STENCIL_BACK_FAIL:
5677 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
5678 break;
5679 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
5680 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
5681 break;
5682 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
5683 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
5684 break;
5685 case GL_FRAMEBUFFER_BINDING_EXT:
5686 CHECK_EXT1(EXT_framebuffer_object);
5687 params[0] = ctx->DrawBuffer->Name;
5688 break;
5689 case GL_RENDERBUFFER_BINDING_EXT:
5690 CHECK_EXT1(EXT_framebuffer_object);
5691 params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
5692 break;
5693 case GL_MAX_COLOR_ATTACHMENTS_EXT:
5694 CHECK_EXT1(EXT_framebuffer_object);
5695 params[0] = ctx->Const.MaxColorAttachments;
5696 break;
5697 case GL_MAX_RENDERBUFFER_SIZE_EXT:
5698 CHECK_EXT1(EXT_framebuffer_object);
5699 params[0] = ctx->Const.MaxRenderbufferSize;
5700 break;
5701 case GL_READ_FRAMEBUFFER_BINDING_EXT:
5702 CHECK_EXT1(EXT_framebuffer_blit);
5703 params[0] = ctx->ReadBuffer->Name;
5704 break;
5705 case GL_PROVOKING_VERTEX_EXT:
5706 CHECK_EXT1(EXT_provoking_vertex);
5707 params[0] = BOOLEAN_TO_INT(ctx->Light.ProvokingVertex);
5708 break;
5709 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
5710 CHECK_EXT1(EXT_provoking_vertex);
5711 params[0] = BOOLEAN_TO_INT(ctx->Const.QuadsFollowProvokingVertexConvention);
5712 break;
5713 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
5714 CHECK_EXT1(ARB_fragment_shader);
5715 params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
5716 break;
5717 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
5718 CHECK_EXT1(ARB_fragment_shader);
5719 params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
5720 break;
5721 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
5722 CHECK_EXT1(ARB_vertex_shader);
5723 params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
5724 break;
5725 case GL_MAX_VARYING_FLOATS_ARB:
5726 CHECK_EXT1(ARB_vertex_shader);
5727 params[0] = ctx->Const.MaxVarying * 4;
5728 break;
5729 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
5730 CHECK_EXT1(ARB_vertex_shader);
5731 params[0] = ctx->Const.MaxVertexTextureImageUnits;
5732 break;
5733 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
5734 CHECK_EXT1(ARB_vertex_shader);
5735 params[0] = ctx->Const.MaxCombinedTextureImageUnits;
5736 break;
5737 case GL_CURRENT_PROGRAM:
5738 CHECK_EXT1(ARB_shader_objects);
5739 params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
5740 break;
5741 case GL_MAX_SAMPLES:
5742 CHECK_EXT1(ARB_framebuffer_object);
5743 params[0] = ctx->Const.MaxSamples;
5744 break;
5745 case GL_VERTEX_ARRAY_BINDING_APPLE:
5746 CHECK_EXT1(APPLE_vertex_array_object);
5747 params[0] = ctx->Array.ArrayObj->Name;
5748 break;
5749 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
5750 CHECK_EXT1(ARB_seamless_cube_map);
5751 params[0] = BOOLEAN_TO_INT(ctx->Texture.CubeMapSeamless);
5752 break;
5753 case GL_MAX_SERVER_WAIT_TIMEOUT:
5754 CHECK_EXT1(ARB_sync);
5755 params[0] = INT64_TO_INT(ctx->Const.MaxServerWaitTimeout);
5756 break;
5757 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
5758 CHECK_EXT1(EXT_transform_feedback);
5759 params[0] = ctx->TransformFeedback.CurrentBuffer->Name;
5760 break;
5761 case GL_RASTERIZER_DISCARD:
5762 CHECK_EXT1(EXT_transform_feedback);
5763 params[0] = BOOLEAN_TO_INT(ctx->TransformFeedback.RasterDiscard);
5764 break;
5765 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
5766 CHECK_EXT1(EXT_transform_feedback);
5767 params[0] = ctx->Const.MaxTransformFeedbackInterleavedComponents;
5768 break;
5769 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
5770 CHECK_EXT1(EXT_transform_feedback);
5771 params[0] = ctx->Const.MaxTransformFeedbackSeparateAttribs;
5772 break;
5773 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
5774 CHECK_EXT1(EXT_transform_feedback);
5775 params[0] = ctx->Const.MaxTransformFeedbackSeparateComponents;
5776 break;
5777 case GL_NUM_EXTENSIONS:
5778 CHECK_VERSION(30);
5779 params[0] = _mesa_get_extension_count(ctx);
5780 break;
5781 case GL_MAJOR_VERSION:
5782 CHECK_VERSION(30);
5783 params[0] = ctx->VersionMajor;
5784 break;
5785 case GL_MINOR_VERSION:
5786 CHECK_VERSION(30);
5787 params[0] = ctx->VersionMinor;
5788 break;
5789 case GL_CONTEXT_FLAGS:
5790 CHECK_VERSION(30);
5791 params[0] = ctx->Const.ContextFlags;
5792 break;
5793 case GL_PRIMITIVE_RESTART:
5794 CHECK_VERSION(31);
5795 params[0] = BOOLEAN_TO_INT(ctx->Array.PrimitiveRestart);
5796 break;
5797 case GL_PRIMITIVE_RESTART_INDEX:
5798 CHECK_VERSION(31);
5799 params[0] = ctx->Array.RestartIndex;
5800 break;
5801 case GL_CONTEXT_PROFILE_MASK:
5802 CHECK_VERSION(32);
5803 params[0] = ctx->Const.ProfileMask;
5804 break;
5805 default:
5806 goto invalid_enum_error;
5807 }
5808 return;
5809
5810 invalid_enum_error:
5811 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
5812 }
5813
5814 #if FEATURE_ARB_sync
5815 void GLAPIENTRY
5816 _mesa_GetInteger64v( GLenum pname, GLint64 *params )
5817 {
5818 GET_CURRENT_CONTEXT(ctx);
5819 const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
5820 ASSERT_OUTSIDE_BEGIN_END(ctx);
5821 (void) version;
5822
5823 if (!params)
5824 return;
5825
5826 switch (pname) {
5827 case GL_ACCUM_RED_BITS:
5828 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumRedBits);
5829 break;
5830 case GL_ACCUM_GREEN_BITS:
5831 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumGreenBits);
5832 break;
5833 case GL_ACCUM_BLUE_BITS:
5834 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumBlueBits);
5835 break;
5836 case GL_ACCUM_ALPHA_BITS:
5837 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumAlphaBits);
5838 break;
5839 case GL_ACCUM_CLEAR_VALUE:
5840 params[0] = FLOAT_TO_INT64(ctx->Accum.ClearColor[0]);
5841 params[1] = FLOAT_TO_INT64(ctx->Accum.ClearColor[1]);
5842 params[2] = FLOAT_TO_INT64(ctx->Accum.ClearColor[2]);
5843 params[3] = FLOAT_TO_INT64(ctx->Accum.ClearColor[3]);
5844 break;
5845 case GL_ALPHA_BIAS:
5846 params[0] = IROUND64(ctx->Pixel.AlphaBias);
5847 break;
5848 case GL_ALPHA_BITS:
5849 if (ctx->NewState & _NEW_BUFFERS)
5850 _mesa_update_state(ctx);
5851 params[0] = (GLint64)(ctx->DrawBuffer->Visual.alphaBits);
5852 break;
5853 case GL_ALPHA_SCALE:
5854 params[0] = IROUND64(ctx->Pixel.AlphaScale);
5855 break;
5856 case GL_ALPHA_TEST:
5857 params[0] = BOOLEAN_TO_INT64(ctx->Color.AlphaEnabled);
5858 break;
5859 case GL_ALPHA_TEST_FUNC:
5860 params[0] = ENUM_TO_INT64(ctx->Color.AlphaFunc);
5861 break;
5862 case GL_ALPHA_TEST_REF:
5863 params[0] = FLOAT_TO_INT64(ctx->Color.AlphaRef);
5864 break;
5865 case GL_ATTRIB_STACK_DEPTH:
5866 params[0] = (GLint64)(ctx->AttribStackDepth);
5867 break;
5868 case GL_AUTO_NORMAL:
5869 params[0] = BOOLEAN_TO_INT64(ctx->Eval.AutoNormal);
5870 break;
5871 case GL_AUX_BUFFERS:
5872 params[0] = (GLint64)(ctx->DrawBuffer->Visual.numAuxBuffers);
5873 break;
5874 case GL_BLEND:
5875 params[0] = BOOLEAN_TO_INT64((ctx->Color.BlendEnabled & 1));
5876 break;
5877 case GL_BLEND_DST:
5878 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB);
5879 break;
5880 case GL_BLEND_SRC:
5881 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB);
5882 break;
5883 case GL_BLEND_SRC_RGB_EXT:
5884 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB);
5885 break;
5886 case GL_BLEND_DST_RGB_EXT:
5887 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB);
5888 break;
5889 case GL_BLEND_SRC_ALPHA_EXT:
5890 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcA);
5891 break;
5892 case GL_BLEND_DST_ALPHA_EXT:
5893 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstA);
5894 break;
5895 case GL_BLEND_EQUATION:
5896 params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationRGB );
5897 break;
5898 case GL_BLEND_EQUATION_ALPHA_EXT:
5899 params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationA );
5900 break;
5901 case GL_BLEND_COLOR_EXT:
5902 params[0] = FLOAT_TO_INT64(ctx->Color.BlendColor[0]);
5903 params[1] = FLOAT_TO_INT64(ctx->Color.BlendColor[1]);
5904 params[2] = FLOAT_TO_INT64(ctx->Color.BlendColor[2]);
5905 params[3] = FLOAT_TO_INT64(ctx->Color.BlendColor[3]);
5906 break;
5907 case GL_BLUE_BIAS:
5908 params[0] = IROUND64(ctx->Pixel.BlueBias);
5909 break;
5910 case GL_BLUE_BITS:
5911 if (ctx->NewState & _NEW_BUFFERS)
5912 _mesa_update_state(ctx);
5913 params[0] = (GLint64)(ctx->DrawBuffer->Visual.blueBits);
5914 break;
5915 case GL_BLUE_SCALE:
5916 params[0] = IROUND64(ctx->Pixel.BlueScale);
5917 break;
5918 case GL_CLIENT_ATTRIB_STACK_DEPTH:
5919 params[0] = (GLint64)(ctx->ClientAttribStackDepth);
5920 break;
5921 case GL_CLIP_PLANE0:
5922 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
5923 break;
5924 case GL_CLIP_PLANE1:
5925 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
5926 break;
5927 case GL_CLIP_PLANE2:
5928 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
5929 break;
5930 case GL_CLIP_PLANE3:
5931 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
5932 break;
5933 case GL_CLIP_PLANE4:
5934 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
5935 break;
5936 case GL_CLIP_PLANE5:
5937 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
5938 break;
5939 case GL_COLOR_CLEAR_VALUE:
5940 params[0] = FLOAT_TO_INT64(ctx->Color.ClearColor[0]);
5941 params[1] = FLOAT_TO_INT64(ctx->Color.ClearColor[1]);
5942 params[2] = FLOAT_TO_INT64(ctx->Color.ClearColor[2]);
5943 params[3] = FLOAT_TO_INT64(ctx->Color.ClearColor[3]);
5944 break;
5945 case GL_COLOR_MATERIAL:
5946 params[0] = BOOLEAN_TO_INT64(ctx->Light.ColorMaterialEnabled);
5947 break;
5948 case GL_COLOR_MATERIAL_FACE:
5949 params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialFace);
5950 break;
5951 case GL_COLOR_MATERIAL_PARAMETER:
5952 params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialMode);
5953 break;
5954 case GL_COLOR_WRITEMASK:
5955 params[0] = (GLint64)(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0);
5956 params[1] = (GLint64)(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0);
5957 params[2] = (GLint64)(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0);
5958 params[3] = (GLint64)(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0);
5959 break;
5960 case GL_CULL_FACE:
5961 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.CullFlag);
5962 break;
5963 case GL_CULL_FACE_MODE:
5964 params[0] = ENUM_TO_INT64(ctx->Polygon.CullFaceMode);
5965 break;
5966 case GL_CURRENT_COLOR:
5967 FLUSH_CURRENT(ctx, 0);
5968 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
5969 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
5970 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
5971 params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
5972 break;
5973 case GL_CURRENT_INDEX:
5974 FLUSH_CURRENT(ctx, 0);
5975 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
5976 break;
5977 case GL_CURRENT_NORMAL:
5978 FLUSH_CURRENT(ctx, 0);
5979 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
5980 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
5981 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
5982 break;
5983 case GL_CURRENT_RASTER_COLOR:
5984 params[0] = FLOAT_TO_INT64(ctx->Current.RasterColor[0]);
5985 params[1] = FLOAT_TO_INT64(ctx->Current.RasterColor[1]);
5986 params[2] = FLOAT_TO_INT64(ctx->Current.RasterColor[2]);
5987 params[3] = FLOAT_TO_INT64(ctx->Current.RasterColor[3]);
5988 break;
5989 case GL_CURRENT_RASTER_DISTANCE:
5990 params[0] = IROUND64(ctx->Current.RasterDistance);
5991 break;
5992 case GL_CURRENT_RASTER_INDEX:
5993 params[0] = IROUND64(1.0);
5994 break;
5995 case GL_CURRENT_RASTER_POSITION:
5996 params[0] = IROUND64(ctx->Current.RasterPos[0]);
5997 params[1] = IROUND64(ctx->Current.RasterPos[1]);
5998 params[2] = IROUND64(ctx->Current.RasterPos[2]);
5999 params[3] = IROUND64(ctx->Current.RasterPos[3]);
6000 break;
6001 case GL_CURRENT_RASTER_SECONDARY_COLOR:
6002 params[0] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[0]);
6003 params[1] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[1]);
6004 params[2] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[2]);
6005 params[3] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[3]);
6006 break;
6007 case GL_CURRENT_RASTER_TEXTURE_COORDS:
6008 {
6009 const GLuint unit = ctx->Texture.CurrentUnit;
6010 if (unit >= ctx->Const.MaxTextureCoordUnits) {
6011 _mesa_error(ctx, GL_INVALID_OPERATION,
6012 "glGet(raster tex coords, unit %u)", unit);
6013 return;
6014 }
6015 params[0] = IROUND64(ctx->Current.RasterTexCoords[unit][0]);
6016 params[1] = IROUND64(ctx->Current.RasterTexCoords[unit][1]);
6017 params[2] = IROUND64(ctx->Current.RasterTexCoords[unit][2]);
6018 params[3] = IROUND64(ctx->Current.RasterTexCoords[unit][3]);
6019 }
6020 break;
6021 case GL_CURRENT_RASTER_POSITION_VALID:
6022 params[0] = BOOLEAN_TO_INT64(ctx->Current.RasterPosValid);
6023 break;
6024 case GL_CURRENT_TEXTURE_COORDS:
6025 {
6026 const GLuint unit = ctx->Texture.CurrentUnit;
6027 if (unit >= ctx->Const.MaxTextureCoordUnits) {
6028 _mesa_error(ctx, GL_INVALID_OPERATION,
6029 "glGet(current tex coords, unit %u)", unit);
6030 return;
6031 }
6032 FLUSH_CURRENT(ctx, 0);
6033 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]);
6034 params[1] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]);
6035 params[2] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]);
6036 params[3] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]);
6037 }
6038 break;
6039 case GL_DEPTH_BIAS:
6040 params[0] = IROUND64(ctx->Pixel.DepthBias);
6041 break;
6042 case GL_DEPTH_BITS:
6043 params[0] = (GLint64)(ctx->DrawBuffer->Visual.depthBits);
6044 break;
6045 case GL_DEPTH_CLEAR_VALUE:
6046 params[0] = FLOAT_TO_INT64(((GLfloat) ctx->Depth.Clear));
6047 break;
6048 case GL_DEPTH_FUNC:
6049 params[0] = ENUM_TO_INT64(ctx->Depth.Func);
6050 break;
6051 case GL_DEPTH_RANGE:
6052 params[0] = FLOAT_TO_INT64(ctx->Viewport.Near);
6053 params[1] = FLOAT_TO_INT64(ctx->Viewport.Far);
6054 break;
6055 case GL_DEPTH_SCALE:
6056 params[0] = IROUND64(ctx->Pixel.DepthScale);
6057 break;
6058 case GL_DEPTH_TEST:
6059 params[0] = BOOLEAN_TO_INT64(ctx->Depth.Test);
6060 break;
6061 case GL_DEPTH_WRITEMASK:
6062 params[0] = BOOLEAN_TO_INT64(ctx->Depth.Mask);
6063 break;
6064 case GL_DITHER:
6065 params[0] = BOOLEAN_TO_INT64(ctx->Color.DitherFlag);
6066 break;
6067 case GL_DOUBLEBUFFER:
6068 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.doubleBufferMode);
6069 break;
6070 case GL_DRAW_BUFFER:
6071 params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]);
6072 break;
6073 case GL_EDGE_FLAG:
6074 FLUSH_CURRENT(ctx, 0);
6075 params[0] = BOOLEAN_TO_INT64((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
6076 break;
6077 case GL_FEEDBACK_BUFFER_SIZE:
6078 params[0] = (GLint64)(ctx->Feedback.BufferSize);
6079 break;
6080 case GL_FEEDBACK_BUFFER_TYPE:
6081 params[0] = ENUM_TO_INT64(ctx->Feedback.Type);
6082 break;
6083 case GL_FOG:
6084 params[0] = BOOLEAN_TO_INT64(ctx->Fog.Enabled);
6085 break;
6086 case GL_FOG_COLOR:
6087 params[0] = FLOAT_TO_INT64(ctx->Fog.Color[0]);
6088 params[1] = FLOAT_TO_INT64(ctx->Fog.Color[1]);
6089 params[2] = FLOAT_TO_INT64(ctx->Fog.Color[2]);
6090 params[3] = FLOAT_TO_INT64(ctx->Fog.Color[3]);
6091 break;
6092 case GL_FOG_DENSITY:
6093 params[0] = IROUND64(ctx->Fog.Density);
6094 break;
6095 case GL_FOG_END:
6096 params[0] = IROUND64(ctx->Fog.End);
6097 break;
6098 case GL_FOG_HINT:
6099 params[0] = ENUM_TO_INT64(ctx->Hint.Fog);
6100 break;
6101 case GL_FOG_INDEX:
6102 params[0] = IROUND64(ctx->Fog.Index);
6103 break;
6104 case GL_FOG_MODE:
6105 params[0] = ENUM_TO_INT64(ctx->Fog.Mode);
6106 break;
6107 case GL_FOG_START:
6108 params[0] = IROUND64(ctx->Fog.Start);
6109 break;
6110 case GL_FRONT_FACE:
6111 params[0] = ENUM_TO_INT64(ctx->Polygon.FrontFace);
6112 break;
6113 case GL_GREEN_BIAS:
6114 params[0] = IROUND64(ctx->Pixel.GreenBias);
6115 break;
6116 case GL_GREEN_BITS:
6117 if (ctx->NewState & _NEW_BUFFERS)
6118 _mesa_update_state(ctx);
6119 params[0] = (GLint64)(ctx->DrawBuffer->Visual.greenBits);
6120 break;
6121 case GL_GREEN_SCALE:
6122 params[0] = IROUND64(ctx->Pixel.GreenScale);
6123 break;
6124 case GL_INDEX_BITS:
6125 if (ctx->NewState & _NEW_BUFFERS)
6126 _mesa_update_state(ctx);
6127 params[0] = (GLint64)(ctx->DrawBuffer->Visual.indexBits);
6128 break;
6129 case GL_INDEX_CLEAR_VALUE:
6130 params[0] = (GLint64)(ctx->Color.ClearIndex);
6131 break;
6132 case GL_INDEX_MODE:
6133 params[0] = BOOLEAN_TO_INT64(GL_FALSE);
6134 break;
6135 case GL_INDEX_OFFSET:
6136 params[0] = (GLint64)(ctx->Pixel.IndexOffset);
6137 break;
6138 case GL_INDEX_SHIFT:
6139 params[0] = (GLint64)(ctx->Pixel.IndexShift);
6140 break;
6141 case GL_INDEX_WRITEMASK:
6142 params[0] = (GLint64)(ctx->Color.IndexMask);
6143 break;
6144 case GL_LIGHT0:
6145 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[0].Enabled);
6146 break;
6147 case GL_LIGHT1:
6148 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[1].Enabled);
6149 break;
6150 case GL_LIGHT2:
6151 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[2].Enabled);
6152 break;
6153 case GL_LIGHT3:
6154 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[3].Enabled);
6155 break;
6156 case GL_LIGHT4:
6157 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[4].Enabled);
6158 break;
6159 case GL_LIGHT5:
6160 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[5].Enabled);
6161 break;
6162 case GL_LIGHT6:
6163 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[6].Enabled);
6164 break;
6165 case GL_LIGHT7:
6166 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[7].Enabled);
6167 break;
6168 case GL_LIGHTING:
6169 params[0] = BOOLEAN_TO_INT64(ctx->Light.Enabled);
6170 break;
6171 case GL_LIGHT_MODEL_AMBIENT:
6172 params[0] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[0]);
6173 params[1] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[1]);
6174 params[2] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[2]);
6175 params[3] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[3]);
6176 break;
6177 case GL_LIGHT_MODEL_COLOR_CONTROL:
6178 params[0] = ENUM_TO_INT64(ctx->Light.Model.ColorControl);
6179 break;
6180 case GL_LIGHT_MODEL_LOCAL_VIEWER:
6181 params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.LocalViewer);
6182 break;
6183 case GL_LIGHT_MODEL_TWO_SIDE:
6184 params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.TwoSide);
6185 break;
6186 case GL_LINE_SMOOTH:
6187 params[0] = BOOLEAN_TO_INT64(ctx->Line.SmoothFlag);
6188 break;
6189 case GL_LINE_SMOOTH_HINT:
6190 params[0] = ENUM_TO_INT64(ctx->Hint.LineSmooth);
6191 break;
6192 case GL_LINE_STIPPLE:
6193 params[0] = BOOLEAN_TO_INT64(ctx->Line.StippleFlag);
6194 break;
6195 case GL_LINE_STIPPLE_PATTERN:
6196 params[0] = (GLint64)(ctx->Line.StipplePattern);
6197 break;
6198 case GL_LINE_STIPPLE_REPEAT:
6199 params[0] = (GLint64)(ctx->Line.StippleFactor);
6200 break;
6201 case GL_LINE_WIDTH:
6202 params[0] = IROUND64(ctx->Line.Width);
6203 break;
6204 case GL_LINE_WIDTH_GRANULARITY:
6205 params[0] = IROUND64(ctx->Const.LineWidthGranularity);
6206 break;
6207 case GL_LINE_WIDTH_RANGE:
6208 params[0] = IROUND64(ctx->Const.MinLineWidthAA);
6209 params[1] = IROUND64(ctx->Const.MaxLineWidthAA);
6210 break;
6211 case GL_ALIASED_LINE_WIDTH_RANGE:
6212 params[0] = IROUND64(ctx->Const.MinLineWidth);
6213 params[1] = IROUND64(ctx->Const.MaxLineWidth);
6214 break;
6215 case GL_LIST_BASE:
6216 params[0] = (GLint64)(ctx->List.ListBase);
6217 break;
6218 case GL_LIST_INDEX:
6219 params[0] = (GLint64)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
6220 break;
6221 case GL_LIST_MODE:
6222 {
6223 GLenum mode;
6224 if (!ctx->CompileFlag)
6225 mode = 0;
6226 else if (ctx->ExecuteFlag)
6227 mode = GL_COMPILE_AND_EXECUTE;
6228 else
6229 mode = GL_COMPILE;
6230 params[0] = ENUM_TO_INT64(mode);
6231 }
6232 break;
6233 case GL_INDEX_LOGIC_OP:
6234 params[0] = BOOLEAN_TO_INT64(ctx->Color.IndexLogicOpEnabled);
6235 break;
6236 case GL_COLOR_LOGIC_OP:
6237 params[0] = BOOLEAN_TO_INT64(ctx->Color.ColorLogicOpEnabled);
6238 break;
6239 case GL_LOGIC_OP_MODE:
6240 params[0] = ENUM_TO_INT64(ctx->Color.LogicOp);
6241 break;
6242 case GL_MAP1_COLOR_4:
6243 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Color4);
6244 break;
6245 case GL_MAP1_GRID_DOMAIN:
6246 params[0] = IROUND64(ctx->Eval.MapGrid1u1);
6247 params[1] = IROUND64(ctx->Eval.MapGrid1u2);
6248 break;
6249 case GL_MAP1_GRID_SEGMENTS:
6250 params[0] = (GLint64)(ctx->Eval.MapGrid1un);
6251 break;
6252 case GL_MAP1_INDEX:
6253 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Index);
6254 break;
6255 case GL_MAP1_NORMAL:
6256 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Normal);
6257 break;
6258 case GL_MAP1_TEXTURE_COORD_1:
6259 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord1);
6260 break;
6261 case GL_MAP1_TEXTURE_COORD_2:
6262 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord2);
6263 break;
6264 case GL_MAP1_TEXTURE_COORD_3:
6265 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord3);
6266 break;
6267 case GL_MAP1_TEXTURE_COORD_4:
6268 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord4);
6269 break;
6270 case GL_MAP1_VERTEX_3:
6271 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex3);
6272 break;
6273 case GL_MAP1_VERTEX_4:
6274 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex4);
6275 break;
6276 case GL_MAP2_COLOR_4:
6277 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Color4);
6278 break;
6279 case GL_MAP2_GRID_DOMAIN:
6280 params[0] = IROUND64(ctx->Eval.MapGrid2u1);
6281 params[1] = IROUND64(ctx->Eval.MapGrid2u2);
6282 params[2] = IROUND64(ctx->Eval.MapGrid2v1);
6283 params[3] = IROUND64(ctx->Eval.MapGrid2v2);
6284 break;
6285 case GL_MAP2_GRID_SEGMENTS:
6286 params[0] = (GLint64)(ctx->Eval.MapGrid2un);
6287 params[1] = (GLint64)(ctx->Eval.MapGrid2vn);
6288 break;
6289 case GL_MAP2_INDEX:
6290 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Index);
6291 break;
6292 case GL_MAP2_NORMAL:
6293 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Normal);
6294 break;
6295 case GL_MAP2_TEXTURE_COORD_1:
6296 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord1);
6297 break;
6298 case GL_MAP2_TEXTURE_COORD_2:
6299 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord2);
6300 break;
6301 case GL_MAP2_TEXTURE_COORD_3:
6302 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord3);
6303 break;
6304 case GL_MAP2_TEXTURE_COORD_4:
6305 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord4);
6306 break;
6307 case GL_MAP2_VERTEX_3:
6308 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex3);
6309 break;
6310 case GL_MAP2_VERTEX_4:
6311 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex4);
6312 break;
6313 case GL_MAP_COLOR:
6314 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapColorFlag);
6315 break;
6316 case GL_MAP_STENCIL:
6317 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapStencilFlag);
6318 break;
6319 case GL_MATRIX_MODE:
6320 params[0] = ENUM_TO_INT64(ctx->Transform.MatrixMode);
6321 break;
6322 case GL_MAX_ATTRIB_STACK_DEPTH:
6323 params[0] = (GLint64)(MAX_ATTRIB_STACK_DEPTH);
6324 break;
6325 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
6326 params[0] = (GLint64)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
6327 break;
6328 case GL_MAX_CLIP_PLANES:
6329 params[0] = (GLint64)(ctx->Const.MaxClipPlanes);
6330 break;
6331 case GL_MAX_ELEMENTS_VERTICES:
6332 params[0] = (GLint64)(ctx->Const.MaxArrayLockSize);
6333 break;
6334 case GL_MAX_ELEMENTS_INDICES:
6335 params[0] = (GLint64)(ctx->Const.MaxArrayLockSize);
6336 break;
6337 case GL_MAX_EVAL_ORDER:
6338 params[0] = (GLint64)(MAX_EVAL_ORDER);
6339 break;
6340 case GL_MAX_LIGHTS:
6341 params[0] = (GLint64)(ctx->Const.MaxLights);
6342 break;
6343 case GL_MAX_LIST_NESTING:
6344 params[0] = (GLint64)(MAX_LIST_NESTING);
6345 break;
6346 case GL_MAX_MODELVIEW_STACK_DEPTH:
6347 params[0] = (GLint64)(MAX_MODELVIEW_STACK_DEPTH);
6348 break;
6349 case GL_MAX_NAME_STACK_DEPTH:
6350 params[0] = (GLint64)(MAX_NAME_STACK_DEPTH);
6351 break;
6352 case GL_MAX_PIXEL_MAP_TABLE:
6353 params[0] = (GLint64)(MAX_PIXEL_MAP_TABLE);
6354 break;
6355 case GL_MAX_PROJECTION_STACK_DEPTH:
6356 params[0] = (GLint64)(MAX_PROJECTION_STACK_DEPTH);
6357 break;
6358 case GL_MAX_TEXTURE_SIZE:
6359 params[0] = (GLint64)(1 << (ctx->Const.MaxTextureLevels - 1));
6360 break;
6361 case GL_MAX_3D_TEXTURE_SIZE:
6362 params[0] = (GLint64)(1 << (ctx->Const.Max3DTextureLevels - 1));
6363 break;
6364 case GL_MAX_TEXTURE_STACK_DEPTH:
6365 params[0] = (GLint64)(MAX_TEXTURE_STACK_DEPTH);
6366 break;
6367 case GL_MAX_VIEWPORT_DIMS:
6368 params[0] = (GLint64)(ctx->Const.MaxViewportWidth);
6369 params[1] = (GLint64)(ctx->Const.MaxViewportHeight);
6370 break;
6371 case GL_MODELVIEW_MATRIX:
6372 {
6373 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
6374 params[0] = IROUND64(matrix[0]);
6375 params[1] = IROUND64(matrix[1]);
6376 params[2] = IROUND64(matrix[2]);
6377 params[3] = IROUND64(matrix[3]);
6378 params[4] = IROUND64(matrix[4]);
6379 params[5] = IROUND64(matrix[5]);
6380 params[6] = IROUND64(matrix[6]);
6381 params[7] = IROUND64(matrix[7]);
6382 params[8] = IROUND64(matrix[8]);
6383 params[9] = IROUND64(matrix[9]);
6384 params[10] = IROUND64(matrix[10]);
6385 params[11] = IROUND64(matrix[11]);
6386 params[12] = IROUND64(matrix[12]);
6387 params[13] = IROUND64(matrix[13]);
6388 params[14] = IROUND64(matrix[14]);
6389 params[15] = IROUND64(matrix[15]);
6390 }
6391 break;
6392 case GL_MODELVIEW_STACK_DEPTH:
6393 params[0] = (GLint64)(ctx->ModelviewMatrixStack.Depth + 1);
6394 break;
6395 case GL_NAME_STACK_DEPTH:
6396 params[0] = (GLint64)(ctx->Select.NameStackDepth);
6397 break;
6398 case GL_NORMALIZE:
6399 params[0] = BOOLEAN_TO_INT64(ctx->Transform.Normalize);
6400 break;
6401 case GL_PACK_ALIGNMENT:
6402 params[0] = (GLint64)(ctx->Pack.Alignment);
6403 break;
6404 case GL_PACK_LSB_FIRST:
6405 params[0] = BOOLEAN_TO_INT64(ctx->Pack.LsbFirst);
6406 break;
6407 case GL_PACK_ROW_LENGTH:
6408 params[0] = (GLint64)(ctx->Pack.RowLength);
6409 break;
6410 case GL_PACK_SKIP_PIXELS:
6411 params[0] = (GLint64)(ctx->Pack.SkipPixels);
6412 break;
6413 case GL_PACK_SKIP_ROWS:
6414 params[0] = (GLint64)(ctx->Pack.SkipRows);
6415 break;
6416 case GL_PACK_SWAP_BYTES:
6417 params[0] = BOOLEAN_TO_INT64(ctx->Pack.SwapBytes);
6418 break;
6419 case GL_PACK_SKIP_IMAGES_EXT:
6420 params[0] = (GLint64)(ctx->Pack.SkipImages);
6421 break;
6422 case GL_PACK_IMAGE_HEIGHT_EXT:
6423 params[0] = (GLint64)(ctx->Pack.ImageHeight);
6424 break;
6425 case GL_PACK_INVERT_MESA:
6426 params[0] = BOOLEAN_TO_INT64(ctx->Pack.Invert);
6427 break;
6428 case GL_PERSPECTIVE_CORRECTION_HINT:
6429 params[0] = ENUM_TO_INT64(ctx->Hint.PerspectiveCorrection);
6430 break;
6431 case GL_PIXEL_MAP_A_TO_A_SIZE:
6432 params[0] = (GLint64)(ctx->PixelMaps.AtoA.Size);
6433 break;
6434 case GL_PIXEL_MAP_B_TO_B_SIZE:
6435 params[0] = (GLint64)(ctx->PixelMaps.BtoB.Size);
6436 break;
6437 case GL_PIXEL_MAP_G_TO_G_SIZE:
6438 params[0] = (GLint64)(ctx->PixelMaps.GtoG.Size);
6439 break;
6440 case GL_PIXEL_MAP_I_TO_A_SIZE:
6441 params[0] = (GLint64)(ctx->PixelMaps.ItoA.Size);
6442 break;
6443 case GL_PIXEL_MAP_I_TO_B_SIZE:
6444 params[0] = (GLint64)(ctx->PixelMaps.ItoB.Size);
6445 break;
6446 case GL_PIXEL_MAP_I_TO_G_SIZE:
6447 params[0] = (GLint64)(ctx->PixelMaps.ItoG.Size);
6448 break;
6449 case GL_PIXEL_MAP_I_TO_I_SIZE:
6450 params[0] = (GLint64)(ctx->PixelMaps.ItoI.Size);
6451 break;
6452 case GL_PIXEL_MAP_I_TO_R_SIZE:
6453 params[0] = (GLint64)(ctx->PixelMaps.ItoR.Size);
6454 break;
6455 case GL_PIXEL_MAP_R_TO_R_SIZE:
6456 params[0] = (GLint64)(ctx->PixelMaps.RtoR.Size);
6457 break;
6458 case GL_PIXEL_MAP_S_TO_S_SIZE:
6459 params[0] = (GLint64)(ctx->PixelMaps.StoS.Size);
6460 break;
6461 case GL_POINT_SIZE:
6462 params[0] = IROUND64(ctx->Point.Size);
6463 break;
6464 case GL_POINT_SIZE_GRANULARITY:
6465 params[0] = IROUND64(ctx->Const.PointSizeGranularity);
6466 break;
6467 case GL_POINT_SIZE_RANGE:
6468 params[0] = IROUND64(ctx->Const.MinPointSizeAA);
6469 params[1] = IROUND64(ctx->Const.MaxPointSizeAA);
6470 break;
6471 case GL_ALIASED_POINT_SIZE_RANGE:
6472 params[0] = IROUND64(ctx->Const.MinPointSize);
6473 params[1] = IROUND64(ctx->Const.MaxPointSize);
6474 break;
6475 case GL_POINT_SMOOTH:
6476 params[0] = BOOLEAN_TO_INT64(ctx->Point.SmoothFlag);
6477 break;
6478 case GL_POINT_SMOOTH_HINT:
6479 params[0] = ENUM_TO_INT64(ctx->Hint.PointSmooth);
6480 break;
6481 case GL_POINT_SIZE_MIN_EXT:
6482 params[0] = IROUND64(ctx->Point.MinSize);
6483 break;
6484 case GL_POINT_SIZE_MAX_EXT:
6485 params[0] = IROUND64(ctx->Point.MaxSize);
6486 break;
6487 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
6488 params[0] = IROUND64(ctx->Point.Threshold);
6489 break;
6490 case GL_DISTANCE_ATTENUATION_EXT:
6491 params[0] = IROUND64(ctx->Point.Params[0]);
6492 params[1] = IROUND64(ctx->Point.Params[1]);
6493 params[2] = IROUND64(ctx->Point.Params[2]);
6494 break;
6495 case GL_POLYGON_MODE:
6496 params[0] = ENUM_TO_INT64(ctx->Polygon.FrontMode);
6497 params[1] = ENUM_TO_INT64(ctx->Polygon.BackMode);
6498 break;
6499 case GL_POLYGON_OFFSET_BIAS_EXT:
6500 params[0] = IROUND64(ctx->Polygon.OffsetUnits);
6501 break;
6502 case GL_POLYGON_OFFSET_FACTOR:
6503 params[0] = IROUND64(ctx->Polygon.OffsetFactor );
6504 break;
6505 case GL_POLYGON_OFFSET_UNITS:
6506 params[0] = IROUND64(ctx->Polygon.OffsetUnits );
6507 break;
6508 case GL_POLYGON_OFFSET_POINT:
6509 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetPoint);
6510 break;
6511 case GL_POLYGON_OFFSET_LINE:
6512 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetLine);
6513 break;
6514 case GL_POLYGON_OFFSET_FILL:
6515 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetFill);
6516 break;
6517 case GL_POLYGON_SMOOTH:
6518 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.SmoothFlag);
6519 break;
6520 case GL_POLYGON_SMOOTH_HINT:
6521 params[0] = ENUM_TO_INT64(ctx->Hint.PolygonSmooth);
6522 break;
6523 case GL_POLYGON_STIPPLE:
6524 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.StippleFlag);
6525 break;
6526 case GL_PROJECTION_MATRIX:
6527 {
6528 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
6529 params[0] = IROUND64(matrix[0]);
6530 params[1] = IROUND64(matrix[1]);
6531 params[2] = IROUND64(matrix[2]);
6532 params[3] = IROUND64(matrix[3]);
6533 params[4] = IROUND64(matrix[4]);
6534 params[5] = IROUND64(matrix[5]);
6535 params[6] = IROUND64(matrix[6]);
6536 params[7] = IROUND64(matrix[7]);
6537 params[8] = IROUND64(matrix[8]);
6538 params[9] = IROUND64(matrix[9]);
6539 params[10] = IROUND64(matrix[10]);
6540 params[11] = IROUND64(matrix[11]);
6541 params[12] = IROUND64(matrix[12]);
6542 params[13] = IROUND64(matrix[13]);
6543 params[14] = IROUND64(matrix[14]);
6544 params[15] = IROUND64(matrix[15]);
6545 }
6546 break;
6547 case GL_PROJECTION_STACK_DEPTH:
6548 params[0] = (GLint64)(ctx->ProjectionMatrixStack.Depth + 1);
6549 break;
6550 case GL_READ_BUFFER:
6551 params[0] = ENUM_TO_INT64(ctx->ReadBuffer->ColorReadBuffer);
6552 break;
6553 case GL_RED_BIAS:
6554 params[0] = IROUND64(ctx->Pixel.RedBias);
6555 break;
6556 case GL_RED_BITS:
6557 if (ctx->NewState & _NEW_BUFFERS)
6558 _mesa_update_state(ctx);
6559 params[0] = (GLint64)(ctx->DrawBuffer->Visual.redBits);
6560 break;
6561 case GL_RED_SCALE:
6562 params[0] = IROUND64(ctx->Pixel.RedScale);
6563 break;
6564 case GL_RENDER_MODE:
6565 params[0] = ENUM_TO_INT64(ctx->RenderMode);
6566 break;
6567 case GL_RESCALE_NORMAL:
6568 params[0] = BOOLEAN_TO_INT64(ctx->Transform.RescaleNormals);
6569 break;
6570 case GL_RGBA_MODE:
6571 params[0] = BOOLEAN_TO_INT64(GL_TRUE);
6572 break;
6573 case GL_SCISSOR_BOX:
6574 params[0] = (GLint64)(ctx->Scissor.X);
6575 params[1] = (GLint64)(ctx->Scissor.Y);
6576 params[2] = (GLint64)(ctx->Scissor.Width);
6577 params[3] = (GLint64)(ctx->Scissor.Height);
6578 break;
6579 case GL_SCISSOR_TEST:
6580 params[0] = BOOLEAN_TO_INT64(ctx->Scissor.Enabled);
6581 break;
6582 case GL_SELECTION_BUFFER_SIZE:
6583 params[0] = (GLint64)(ctx->Select.BufferSize);
6584 break;
6585 case GL_SHADE_MODEL:
6586 params[0] = ENUM_TO_INT64(ctx->Light.ShadeModel);
6587 break;
6588 case GL_SHARED_TEXTURE_PALETTE_EXT:
6589 params[0] = BOOLEAN_TO_INT64(ctx->Texture.SharedPalette);
6590 break;
6591 case GL_STENCIL_BITS:
6592 params[0] = (GLint64)(ctx->DrawBuffer->Visual.stencilBits);
6593 break;
6594 case GL_STENCIL_CLEAR_VALUE:
6595 params[0] = (GLint64)(ctx->Stencil.Clear);
6596 break;
6597 case GL_STENCIL_FAIL:
6598 params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
6599 break;
6600 case GL_STENCIL_FUNC:
6601 params[0] = ENUM_TO_INT64(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
6602 break;
6603 case GL_STENCIL_PASS_DEPTH_FAIL:
6604 params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
6605 break;
6606 case GL_STENCIL_PASS_DEPTH_PASS:
6607 params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
6608 break;
6609 case GL_STENCIL_REF:
6610 params[0] = (GLint64)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
6611 break;
6612 case GL_STENCIL_TEST:
6613 params[0] = BOOLEAN_TO_INT64(ctx->Stencil.Enabled);
6614 break;
6615 case GL_STENCIL_VALUE_MASK:
6616 params[0] = (GLint64)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
6617 break;
6618 case GL_STENCIL_WRITEMASK:
6619 params[0] = (GLint64)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
6620 break;
6621 case GL_STEREO:
6622 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.stereoMode);
6623 break;
6624 case GL_SUBPIXEL_BITS:
6625 params[0] = (GLint64)(ctx->Const.SubPixelBits);
6626 break;
6627 case GL_TEXTURE_1D:
6628 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D));
6629 break;
6630 case GL_TEXTURE_2D:
6631 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D));
6632 break;
6633 case GL_TEXTURE_3D:
6634 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D));
6635 break;
6636 case GL_TEXTURE_1D_ARRAY_EXT:
6637 CHECK_EXT1(MESA_texture_array);
6638 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
6639 break;
6640 case GL_TEXTURE_2D_ARRAY_EXT:
6641 CHECK_EXT1(MESA_texture_array);
6642 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
6643 break;
6644 case GL_TEXTURE_BINDING_1D:
6645 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
6646 break;
6647 case GL_TEXTURE_BINDING_2D:
6648 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
6649 break;
6650 case GL_TEXTURE_BINDING_3D:
6651 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
6652 break;
6653 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
6654 CHECK_EXT1(MESA_texture_array);
6655 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
6656 break;
6657 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
6658 CHECK_EXT1(MESA_texture_array);
6659 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
6660 break;
6661 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
6662 CHECK_EXT1(MESA_texture_array);
6663 params[0] = (GLint64)(ctx->Const.MaxArrayTextureLayers);
6664 break;
6665 case GL_TEXTURE_GEN_S:
6666 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
6667 break;
6668 case GL_TEXTURE_GEN_T:
6669 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
6670 break;
6671 case GL_TEXTURE_GEN_R:
6672 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
6673 break;
6674 case GL_TEXTURE_GEN_Q:
6675 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
6676 break;
6677 case GL_TEXTURE_MATRIX:
6678 {
6679 const GLfloat *matrix;
6680 const GLuint unit = ctx->Texture.CurrentUnit;
6681 if (unit >= ctx->Const.MaxTextureCoordUnits) {
6682 _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
6683 unit);
6684 return;
6685 }
6686 matrix = ctx->TextureMatrixStack[unit].Top->m;
6687 params[0] = IROUND64(matrix[0]);
6688 params[1] = IROUND64(matrix[1]);
6689 params[2] = IROUND64(matrix[2]);
6690 params[3] = IROUND64(matrix[3]);
6691 params[4] = IROUND64(matrix[4]);
6692 params[5] = IROUND64(matrix[5]);
6693 params[6] = IROUND64(matrix[6]);
6694 params[7] = IROUND64(matrix[7]);
6695 params[8] = IROUND64(matrix[8]);
6696 params[9] = IROUND64(matrix[9]);
6697 params[10] = IROUND64(matrix[10]);
6698 params[11] = IROUND64(matrix[11]);
6699 params[12] = IROUND64(matrix[12]);
6700 params[13] = IROUND64(matrix[13]);
6701 params[14] = IROUND64(matrix[14]);
6702 params[15] = IROUND64(matrix[15]);
6703 }
6704 break;
6705 case GL_TEXTURE_STACK_DEPTH:
6706 {
6707 const GLuint unit = ctx->Texture.CurrentUnit;
6708 if (unit >= ctx->Const.MaxTextureCoordUnits) {
6709 _mesa_error(ctx, GL_INVALID_OPERATION,
6710 "glGet(texture stack depth, unit %u)", unit);
6711 return;
6712 }
6713 params[0] = (GLint64)(ctx->TextureMatrixStack[unit].Depth + 1);
6714 }
6715 break;
6716 case GL_UNPACK_ALIGNMENT:
6717 params[0] = (GLint64)(ctx->Unpack.Alignment);
6718 break;
6719 case GL_UNPACK_LSB_FIRST:
6720 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.LsbFirst);
6721 break;
6722 case GL_UNPACK_ROW_LENGTH:
6723 params[0] = (GLint64)(ctx->Unpack.RowLength);
6724 break;
6725 case GL_UNPACK_SKIP_PIXELS:
6726 params[0] = (GLint64)(ctx->Unpack.SkipPixels);
6727 break;
6728 case GL_UNPACK_SKIP_ROWS:
6729 params[0] = (GLint64)(ctx->Unpack.SkipRows);
6730 break;
6731 case GL_UNPACK_SWAP_BYTES:
6732 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.SwapBytes);
6733 break;
6734 case GL_UNPACK_SKIP_IMAGES_EXT:
6735 params[0] = (GLint64)(ctx->Unpack.SkipImages);
6736 break;
6737 case GL_UNPACK_IMAGE_HEIGHT_EXT:
6738 params[0] = (GLint64)(ctx->Unpack.ImageHeight);
6739 break;
6740 case GL_UNPACK_CLIENT_STORAGE_APPLE:
6741 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.ClientStorage);
6742 break;
6743 case GL_VIEWPORT:
6744 params[0] = (GLint64)(ctx->Viewport.X);
6745 params[1] = (GLint64)(ctx->Viewport.Y);
6746 params[2] = (GLint64)(ctx->Viewport.Width);
6747 params[3] = (GLint64)(ctx->Viewport.Height);
6748 break;
6749 case GL_ZOOM_X:
6750 params[0] = IROUND64(ctx->Pixel.ZoomX);
6751 break;
6752 case GL_ZOOM_Y:
6753 params[0] = IROUND64(ctx->Pixel.ZoomY);
6754 break;
6755 case GL_VERTEX_ARRAY:
6756 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Vertex.Enabled);
6757 break;
6758 case GL_VERTEX_ARRAY_SIZE:
6759 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.Size);
6760 break;
6761 case GL_VERTEX_ARRAY_TYPE:
6762 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Vertex.Type);
6763 break;
6764 case GL_VERTEX_ARRAY_STRIDE:
6765 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.Stride);
6766 break;
6767 case GL_VERTEX_ARRAY_COUNT_EXT:
6768 params[0] = (GLint64)(0);
6769 break;
6770 case GL_NORMAL_ARRAY:
6771 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Enabled);
6772 break;
6773 case GL_NORMAL_ARRAY_TYPE:
6774 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Type);
6775 break;
6776 case GL_NORMAL_ARRAY_STRIDE:
6777 params[0] = (GLint64)(ctx->Array.ArrayObj->Normal.Stride);
6778 break;
6779 case GL_NORMAL_ARRAY_COUNT_EXT:
6780 params[0] = (GLint64)(0);
6781 break;
6782 case GL_COLOR_ARRAY:
6783 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Color.Enabled);
6784 break;
6785 case GL_COLOR_ARRAY_SIZE:
6786 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.Size);
6787 break;
6788 case GL_COLOR_ARRAY_TYPE:
6789 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Color.Type);
6790 break;
6791 case GL_COLOR_ARRAY_STRIDE:
6792 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.Stride);
6793 break;
6794 case GL_COLOR_ARRAY_COUNT_EXT:
6795 params[0] = (GLint64)(0);
6796 break;
6797 case GL_INDEX_ARRAY:
6798 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Index.Enabled);
6799 break;
6800 case GL_INDEX_ARRAY_TYPE:
6801 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Index.Type);
6802 break;
6803 case GL_INDEX_ARRAY_STRIDE:
6804 params[0] = (GLint64)(ctx->Array.ArrayObj->Index.Stride);
6805 break;
6806 case GL_INDEX_ARRAY_COUNT_EXT:
6807 params[0] = (GLint64)(0);
6808 break;
6809 case GL_TEXTURE_COORD_ARRAY:
6810 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
6811 break;
6812 case GL_TEXTURE_COORD_ARRAY_SIZE:
6813 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
6814 break;
6815 case GL_TEXTURE_COORD_ARRAY_TYPE:
6816 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
6817 break;
6818 case GL_TEXTURE_COORD_ARRAY_STRIDE:
6819 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
6820 break;
6821 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
6822 params[0] = (GLint64)(0);
6823 break;
6824 case GL_EDGE_FLAG_ARRAY:
6825 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->EdgeFlag.Enabled);
6826 break;
6827 case GL_EDGE_FLAG_ARRAY_STRIDE:
6828 params[0] = (GLint64)(ctx->Array.ArrayObj->EdgeFlag.Stride);
6829 break;
6830 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
6831 params[0] = (GLint64)(0);
6832 break;
6833 case GL_MAX_TEXTURE_UNITS_ARB:
6834 CHECK_EXT1(ARB_multitexture);
6835 params[0] = (GLint64)(ctx->Const.MaxTextureUnits);
6836 break;
6837 case GL_ACTIVE_TEXTURE_ARB:
6838 CHECK_EXT1(ARB_multitexture);
6839 params[0] = (GLint64)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
6840 break;
6841 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
6842 CHECK_EXT1(ARB_multitexture);
6843 params[0] = (GLint64)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
6844 break;
6845 case GL_TEXTURE_CUBE_MAP_ARB:
6846 CHECK_EXT1(ARB_texture_cube_map);
6847 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
6848 break;
6849 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
6850 CHECK_EXT1(ARB_texture_cube_map);
6851 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
6852 break;
6853 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
6854 CHECK_EXT1(ARB_texture_cube_map);
6855 params[0] = (GLint64)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
6856 break;
6857 case GL_TEXTURE_COMPRESSION_HINT_ARB:
6858 params[0] = (GLint64)(ctx->Hint.TextureCompression);
6859 break;
6860 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
6861 params[0] = (GLint64)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
6862 break;
6863 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
6864 {
6865 GLint formats[100];
6866 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
6867 ASSERT(n <= 100);
6868 for (i = 0; i < n; i++)
6869 params[i] = ENUM_TO_INT64(formats[i]);
6870 }
6871 break;
6872 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
6873 CHECK_EXT1(EXT_compiled_vertex_array);
6874 params[0] = (GLint64)(ctx->Array.LockFirst);
6875 break;
6876 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
6877 CHECK_EXT1(EXT_compiled_vertex_array);
6878 params[0] = (GLint64)(ctx->Array.LockCount);
6879 break;
6880 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
6881 {
6882 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
6883 params[0] = IROUND64(matrix[0]);
6884 params[1] = IROUND64(matrix[4]);
6885 params[2] = IROUND64(matrix[8]);
6886 params[3] = IROUND64(matrix[12]);
6887 params[4] = IROUND64(matrix[1]);
6888 params[5] = IROUND64(matrix[5]);
6889 params[6] = IROUND64(matrix[9]);
6890 params[7] = IROUND64(matrix[13]);
6891 params[8] = IROUND64(matrix[2]);
6892 params[9] = IROUND64(matrix[6]);
6893 params[10] = IROUND64(matrix[10]);
6894 params[11] = IROUND64(matrix[14]);
6895 params[12] = IROUND64(matrix[3]);
6896 params[13] = IROUND64(matrix[7]);
6897 params[14] = IROUND64(matrix[11]);
6898 params[15] = IROUND64(matrix[15]);
6899 }
6900 break;
6901 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
6902 {
6903 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
6904 params[0] = IROUND64(matrix[0]);
6905 params[1] = IROUND64(matrix[4]);
6906 params[2] = IROUND64(matrix[8]);
6907 params[3] = IROUND64(matrix[12]);
6908 params[4] = IROUND64(matrix[1]);
6909 params[5] = IROUND64(matrix[5]);
6910 params[6] = IROUND64(matrix[9]);
6911 params[7] = IROUND64(matrix[13]);
6912 params[8] = IROUND64(matrix[2]);
6913 params[9] = IROUND64(matrix[6]);
6914 params[10] = IROUND64(matrix[10]);
6915 params[11] = IROUND64(matrix[14]);
6916 params[12] = IROUND64(matrix[3]);
6917 params[13] = IROUND64(matrix[7]);
6918 params[14] = IROUND64(matrix[11]);
6919 params[15] = IROUND64(matrix[15]);
6920 }
6921 break;
6922 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
6923 {
6924 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
6925 params[0] = IROUND64(matrix[0]);
6926 params[1] = IROUND64(matrix[4]);
6927 params[2] = IROUND64(matrix[8]);
6928 params[3] = IROUND64(matrix[12]);
6929 params[4] = IROUND64(matrix[1]);
6930 params[5] = IROUND64(matrix[5]);
6931 params[6] = IROUND64(matrix[9]);
6932 params[7] = IROUND64(matrix[13]);
6933 params[8] = IROUND64(matrix[2]);
6934 params[9] = IROUND64(matrix[6]);
6935 params[10] = IROUND64(matrix[10]);
6936 params[11] = IROUND64(matrix[14]);
6937 params[12] = IROUND64(matrix[3]);
6938 params[13] = IROUND64(matrix[7]);
6939 params[14] = IROUND64(matrix[11]);
6940 params[15] = IROUND64(matrix[15]);
6941 }
6942 break;
6943 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
6944 {
6945 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
6946 params[0] = IROUND64(matrix[0]);
6947 params[1] = IROUND64(matrix[4]);
6948 params[2] = IROUND64(matrix[8]);
6949 params[3] = IROUND64(matrix[12]);
6950 params[4] = IROUND64(matrix[1]);
6951 params[5] = IROUND64(matrix[5]);
6952 params[6] = IROUND64(matrix[9]);
6953 params[7] = IROUND64(matrix[13]);
6954 params[8] = IROUND64(matrix[2]);
6955 params[9] = IROUND64(matrix[6]);
6956 params[10] = IROUND64(matrix[10]);
6957 params[11] = IROUND64(matrix[14]);
6958 params[12] = IROUND64(matrix[3]);
6959 params[13] = IROUND64(matrix[7]);
6960 params[14] = IROUND64(matrix[11]);
6961 params[15] = IROUND64(matrix[15]);
6962 }
6963 break;
6964 case GL_COLOR_MATRIX_SGI:
6965 {
6966 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
6967 params[0] = IROUND64(matrix[0]);
6968 params[1] = IROUND64(matrix[1]);
6969 params[2] = IROUND64(matrix[2]);
6970 params[3] = IROUND64(matrix[3]);
6971 params[4] = IROUND64(matrix[4]);
6972 params[5] = IROUND64(matrix[5]);
6973 params[6] = IROUND64(matrix[6]);
6974 params[7] = IROUND64(matrix[7]);
6975 params[8] = IROUND64(matrix[8]);
6976 params[9] = IROUND64(matrix[9]);
6977 params[10] = IROUND64(matrix[10]);
6978 params[11] = IROUND64(matrix[11]);
6979 params[12] = IROUND64(matrix[12]);
6980 params[13] = IROUND64(matrix[13]);
6981 params[14] = IROUND64(matrix[14]);
6982 params[15] = IROUND64(matrix[15]);
6983 }
6984 break;
6985 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
6986 params[0] = (GLint64)(ctx->ColorMatrixStack.Depth + 1);
6987 break;
6988 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
6989 params[0] = (GLint64)(MAX_COLOR_STACK_DEPTH);
6990 break;
6991 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
6992 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[0]);
6993 break;
6994 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
6995 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[1]);
6996 break;
6997 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
6998 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[2]);
6999 break;
7000 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
7001 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[3]);
7002 break;
7003 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
7004 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[0]);
7005 break;
7006 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
7007 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[1]);
7008 break;
7009 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
7010 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[2]);
7011 break;
7012 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
7013 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[3]);
7014 break;
7015 case GL_CONVOLUTION_1D_EXT:
7016 CHECK_EXT1(EXT_convolution);
7017 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution1DEnabled);
7018 break;
7019 case GL_CONVOLUTION_2D_EXT:
7020 CHECK_EXT1(EXT_convolution);
7021 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution2DEnabled);
7022 break;
7023 case GL_SEPARABLE_2D_EXT:
7024 CHECK_EXT1(EXT_convolution);
7025 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Separable2DEnabled);
7026 break;
7027 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
7028 CHECK_EXT1(EXT_convolution);
7029 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[0]);
7030 break;
7031 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
7032 CHECK_EXT1(EXT_convolution);
7033 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[1]);
7034 break;
7035 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
7036 CHECK_EXT1(EXT_convolution);
7037 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[2]);
7038 break;
7039 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
7040 CHECK_EXT1(EXT_convolution);
7041 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[3]);
7042 break;
7043 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
7044 CHECK_EXT1(EXT_convolution);
7045 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[0]);
7046 break;
7047 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
7048 CHECK_EXT1(EXT_convolution);
7049 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[1]);
7050 break;
7051 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
7052 CHECK_EXT1(EXT_convolution);
7053 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[2]);
7054 break;
7055 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
7056 CHECK_EXT1(EXT_convolution);
7057 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[3]);
7058 break;
7059 case GL_HISTOGRAM:
7060 CHECK_EXT1(EXT_histogram);
7061 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.HistogramEnabled);
7062 break;
7063 case GL_MINMAX:
7064 CHECK_EXT1(EXT_histogram);
7065 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MinMaxEnabled);
7066 break;
7067 case GL_COLOR_TABLE_SGI:
7068 CHECK_EXT1(SGI_color_table);
7069 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
7070 break;
7071 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
7072 CHECK_EXT1(SGI_color_table);
7073 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
7074 break;
7075 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
7076 CHECK_EXT1(SGI_color_table);
7077 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
7078 break;
7079 case GL_TEXTURE_COLOR_TABLE_SGI:
7080 CHECK_EXT1(SGI_texture_color_table);
7081 params[0] = BOOLEAN_TO_INT64(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
7082 break;
7083 case GL_COLOR_SUM_EXT:
7084 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program);
7085 params[0] = BOOLEAN_TO_INT64(ctx->Fog.ColorSumEnabled);
7086 break;
7087 case GL_CURRENT_SECONDARY_COLOR_EXT:
7088 CHECK_EXT1(EXT_secondary_color);
7089 FLUSH_CURRENT(ctx, 0);
7090 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
7091 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
7092 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
7093 params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
7094 break;
7095 case GL_SECONDARY_COLOR_ARRAY_EXT:
7096 CHECK_EXT1(EXT_secondary_color);
7097 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Enabled);
7098 break;
7099 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
7100 CHECK_EXT1(EXT_secondary_color);
7101 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Type);
7102 break;
7103 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
7104 CHECK_EXT1(EXT_secondary_color);
7105 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.Stride);
7106 break;
7107 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
7108 CHECK_EXT1(EXT_secondary_color);
7109 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.Size);
7110 break;
7111 case GL_CURRENT_FOG_COORDINATE_EXT:
7112 CHECK_EXT1(EXT_fog_coord);
7113 FLUSH_CURRENT(ctx, 0);
7114 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
7115 break;
7116 case GL_FOG_COORDINATE_ARRAY_EXT:
7117 CHECK_EXT1(EXT_fog_coord);
7118 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->FogCoord.Enabled);
7119 break;
7120 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
7121 CHECK_EXT1(EXT_fog_coord);
7122 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->FogCoord.Type);
7123 break;
7124 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
7125 CHECK_EXT1(EXT_fog_coord);
7126 params[0] = (GLint64)(ctx->Array.ArrayObj->FogCoord.Stride);
7127 break;
7128 case GL_FOG_COORDINATE_SOURCE_EXT:
7129 CHECK_EXT1(EXT_fog_coord);
7130 params[0] = ENUM_TO_INT64(ctx->Fog.FogCoordinateSource);
7131 break;
7132 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
7133 CHECK_EXT1(EXT_texture_lod_bias);
7134 params[0] = IROUND64(ctx->Const.MaxTextureLodBias);
7135 break;
7136 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
7137 CHECK_EXT1(EXT_texture_filter_anisotropic);
7138 params[0] = IROUND64(ctx->Const.MaxTextureMaxAnisotropy);
7139 break;
7140 case GL_MULTISAMPLE_ARB:
7141 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.Enabled);
7142 break;
7143 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
7144 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToCoverage);
7145 break;
7146 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
7147 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToOne);
7148 break;
7149 case GL_SAMPLE_COVERAGE_ARB:
7150 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverage);
7151 break;
7152 case GL_SAMPLE_COVERAGE_VALUE_ARB:
7153 params[0] = IROUND64(ctx->Multisample.SampleCoverageValue);
7154 break;
7155 case GL_SAMPLE_COVERAGE_INVERT_ARB:
7156 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverageInvert);
7157 break;
7158 case GL_SAMPLE_BUFFERS_ARB:
7159 params[0] = (GLint64)(ctx->DrawBuffer->Visual.sampleBuffers);
7160 break;
7161 case GL_SAMPLES_ARB:
7162 params[0] = (GLint64)(ctx->DrawBuffer->Visual.samples);
7163 break;
7164 case GL_RASTER_POSITION_UNCLIPPED_IBM:
7165 CHECK_EXT1(IBM_rasterpos_clip);
7166 params[0] = BOOLEAN_TO_INT64(ctx->Transform.RasterPositionUnclipped);
7167 break;
7168 case GL_POINT_SPRITE_NV:
7169 CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
7170 params[0] = BOOLEAN_TO_INT64(ctx->Point.PointSprite);
7171 break;
7172 case GL_POINT_SPRITE_R_MODE_NV:
7173 CHECK_EXT1(NV_point_sprite);
7174 params[0] = ENUM_TO_INT64(ctx->Point.SpriteRMode);
7175 break;
7176 case GL_POINT_SPRITE_COORD_ORIGIN:
7177 CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
7178 params[0] = ENUM_TO_INT64(ctx->Point.SpriteOrigin);
7179 break;
7180 case GL_GENERATE_MIPMAP_HINT_SGIS:
7181 CHECK_EXT1(SGIS_generate_mipmap);
7182 params[0] = ENUM_TO_INT64(ctx->Hint.GenerateMipmap);
7183 break;
7184 case GL_VERTEX_PROGRAM_BINDING_NV:
7185 CHECK_EXT1(NV_vertex_program);
7186 params[0] = (GLint64)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
7187 break;
7188 case GL_VERTEX_ATTRIB_ARRAY0_NV:
7189 CHECK_EXT1(NV_vertex_program);
7190 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
7191 break;
7192 case GL_VERTEX_ATTRIB_ARRAY1_NV:
7193 CHECK_EXT1(NV_vertex_program);
7194 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
7195 break;
7196 case GL_VERTEX_ATTRIB_ARRAY2_NV:
7197 CHECK_EXT1(NV_vertex_program);
7198 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
7199 break;
7200 case GL_VERTEX_ATTRIB_ARRAY3_NV:
7201 CHECK_EXT1(NV_vertex_program);
7202 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
7203 break;
7204 case GL_VERTEX_ATTRIB_ARRAY4_NV:
7205 CHECK_EXT1(NV_vertex_program);
7206 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
7207 break;
7208 case GL_VERTEX_ATTRIB_ARRAY5_NV:
7209 CHECK_EXT1(NV_vertex_program);
7210 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
7211 break;
7212 case GL_VERTEX_ATTRIB_ARRAY6_NV:
7213 CHECK_EXT1(NV_vertex_program);
7214 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
7215 break;
7216 case GL_VERTEX_ATTRIB_ARRAY7_NV:
7217 CHECK_EXT1(NV_vertex_program);
7218 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
7219 break;
7220 case GL_VERTEX_ATTRIB_ARRAY8_NV:
7221 CHECK_EXT1(NV_vertex_program);
7222 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
7223 break;
7224 case GL_VERTEX_ATTRIB_ARRAY9_NV:
7225 CHECK_EXT1(NV_vertex_program);
7226 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
7227 break;
7228 case GL_VERTEX_ATTRIB_ARRAY10_NV:
7229 CHECK_EXT1(NV_vertex_program);
7230 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
7231 break;
7232 case GL_VERTEX_ATTRIB_ARRAY11_NV:
7233 CHECK_EXT1(NV_vertex_program);
7234 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
7235 break;
7236 case GL_VERTEX_ATTRIB_ARRAY12_NV:
7237 CHECK_EXT1(NV_vertex_program);
7238 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
7239 break;
7240 case GL_VERTEX_ATTRIB_ARRAY13_NV:
7241 CHECK_EXT1(NV_vertex_program);
7242 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
7243 break;
7244 case GL_VERTEX_ATTRIB_ARRAY14_NV:
7245 CHECK_EXT1(NV_vertex_program);
7246 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
7247 break;
7248 case GL_VERTEX_ATTRIB_ARRAY15_NV:
7249 CHECK_EXT1(NV_vertex_program);
7250 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
7251 break;
7252 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
7253 CHECK_EXT1(NV_vertex_program);
7254 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[0]);
7255 break;
7256 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
7257 CHECK_EXT1(NV_vertex_program);
7258 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[1]);
7259 break;
7260 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
7261 CHECK_EXT1(NV_vertex_program);
7262 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[2]);
7263 break;
7264 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
7265 CHECK_EXT1(NV_vertex_program);
7266 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[3]);
7267 break;
7268 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
7269 CHECK_EXT1(NV_vertex_program);
7270 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[4]);
7271 break;
7272 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
7273 CHECK_EXT1(NV_vertex_program);
7274 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[5]);
7275 break;
7276 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
7277 CHECK_EXT1(NV_vertex_program);
7278 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[6]);
7279 break;
7280 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
7281 CHECK_EXT1(NV_vertex_program);
7282 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[7]);
7283 break;
7284 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
7285 CHECK_EXT1(NV_vertex_program);
7286 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[8]);
7287 break;
7288 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
7289 CHECK_EXT1(NV_vertex_program);
7290 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[9]);
7291 break;
7292 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
7293 CHECK_EXT1(NV_vertex_program);
7294 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[10]);
7295 break;
7296 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
7297 CHECK_EXT1(NV_vertex_program);
7298 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[11]);
7299 break;
7300 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
7301 CHECK_EXT1(NV_vertex_program);
7302 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[12]);
7303 break;
7304 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
7305 CHECK_EXT1(NV_vertex_program);
7306 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[13]);
7307 break;
7308 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
7309 CHECK_EXT1(NV_vertex_program);
7310 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[14]);
7311 break;
7312 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
7313 CHECK_EXT1(NV_vertex_program);
7314 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[15]);
7315 break;
7316 case GL_FRAGMENT_PROGRAM_NV:
7317 CHECK_EXT1(NV_fragment_program);
7318 params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled);
7319 break;
7320 case GL_FRAGMENT_PROGRAM_BINDING_NV:
7321 CHECK_EXT1(NV_fragment_program);
7322 params[0] = (GLint64)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
7323 break;
7324 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
7325 CHECK_EXT1(NV_fragment_program);
7326 params[0] = (GLint64)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
7327 break;
7328 case GL_TEXTURE_RECTANGLE_NV:
7329 CHECK_EXT1(NV_texture_rectangle);
7330 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
7331 break;
7332 case GL_TEXTURE_BINDING_RECTANGLE_NV:
7333 CHECK_EXT1(NV_texture_rectangle);
7334 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
7335 break;
7336 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
7337 CHECK_EXT1(NV_texture_rectangle);
7338 params[0] = (GLint64)(ctx->Const.MaxTextureRectSize);
7339 break;
7340 case GL_STENCIL_TEST_TWO_SIDE_EXT:
7341 CHECK_EXT1(EXT_stencil_two_side);
7342 params[0] = BOOLEAN_TO_INT64(ctx->Stencil.TestTwoSide);
7343 break;
7344 case GL_ACTIVE_STENCIL_FACE_EXT:
7345 CHECK_EXT1(EXT_stencil_two_side);
7346 params[0] = ENUM_TO_INT64(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
7347 break;
7348 case GL_MAX_SHININESS_NV:
7349 CHECK_EXT1(NV_light_max_exponent);
7350 params[0] = IROUND64(ctx->Const.MaxShininess);
7351 break;
7352 case GL_MAX_SPOT_EXPONENT_NV:
7353 CHECK_EXT1(NV_light_max_exponent);
7354 params[0] = IROUND64(ctx->Const.MaxSpotExponent);
7355 break;
7356 case GL_ARRAY_BUFFER_BINDING_ARB:
7357 params[0] = (GLint64)(ctx->Array.ArrayBufferObj->Name);
7358 break;
7359 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
7360 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
7361 break;
7362 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
7363 params[0] = (GLint64)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
7364 break;
7365 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
7366 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.BufferObj->Name);
7367 break;
7368 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
7369 params[0] = (GLint64)(ctx->Array.ArrayObj->Index.BufferObj->Name);
7370 break;
7371 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
7372 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
7373 break;
7374 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
7375 params[0] = (GLint64)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
7376 break;
7377 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
7378 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
7379 break;
7380 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
7381 params[0] = (GLint64)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
7382 break;
7383 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
7384 params[0] = (GLint64)(ctx->Array.ElementArrayBufferObj->Name);
7385 break;
7386 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
7387 CHECK_EXT1(EXT_pixel_buffer_object);
7388 params[0] = (GLint64)(ctx->Pack.BufferObj->Name);
7389 break;
7390 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
7391 CHECK_EXT1(EXT_pixel_buffer_object);
7392 params[0] = (GLint64)(ctx->Unpack.BufferObj->Name);
7393 break;
7394 case GL_VERTEX_PROGRAM_ARB:
7395 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
7396 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.Enabled);
7397 break;
7398 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
7399 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
7400 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.PointSizeEnabled);
7401 break;
7402 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
7403 CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
7404 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.TwoSideEnabled);
7405 break;
7406 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
7407 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
7408 params[0] = (GLint64)(ctx->Const.MaxProgramMatrixStackDepth);
7409 break;
7410 case GL_MAX_PROGRAM_MATRICES_ARB:
7411 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
7412 params[0] = (GLint64)(ctx->Const.MaxProgramMatrices);
7413 break;
7414 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
7415 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
7416 params[0] = BOOLEAN_TO_INT64(ctx->CurrentStack->Depth + 1);
7417 break;
7418 case GL_CURRENT_MATRIX_ARB:
7419 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program);
7420 {
7421 const GLfloat *matrix = ctx->CurrentStack->Top->m;
7422 params[0] = IROUND64(matrix[0]);
7423 params[1] = IROUND64(matrix[1]);
7424 params[2] = IROUND64(matrix[2]);
7425 params[3] = IROUND64(matrix[3]);
7426 params[4] = IROUND64(matrix[4]);
7427 params[5] = IROUND64(matrix[5]);
7428 params[6] = IROUND64(matrix[6]);
7429 params[7] = IROUND64(matrix[7]);
7430 params[8] = IROUND64(matrix[8]);
7431 params[9] = IROUND64(matrix[9]);
7432 params[10] = IROUND64(matrix[10]);
7433 params[11] = IROUND64(matrix[11]);
7434 params[12] = IROUND64(matrix[12]);
7435 params[13] = IROUND64(matrix[13]);
7436 params[14] = IROUND64(matrix[14]);
7437 params[15] = IROUND64(matrix[15]);
7438 }
7439 break;
7440 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
7441 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program);
7442 {
7443 const GLfloat *matrix = ctx->CurrentStack->Top->m;
7444 params[0] = IROUND64(matrix[0]);
7445 params[1] = IROUND64(matrix[4]);
7446 params[2] = IROUND64(matrix[8]);
7447 params[3] = IROUND64(matrix[12]);
7448 params[4] = IROUND64(matrix[1]);
7449 params[5] = IROUND64(matrix[5]);
7450 params[6] = IROUND64(matrix[9]);
7451 params[7] = IROUND64(matrix[13]);
7452 params[8] = IROUND64(matrix[2]);
7453 params[9] = IROUND64(matrix[6]);
7454 params[10] = IROUND64(matrix[10]);
7455 params[11] = IROUND64(matrix[14]);
7456 params[12] = IROUND64(matrix[3]);
7457 params[13] = IROUND64(matrix[7]);
7458 params[14] = IROUND64(matrix[11]);
7459 params[15] = IROUND64(matrix[15]);
7460 }
7461 break;
7462 case GL_MAX_VERTEX_ATTRIBS_ARB:
7463 CHECK_EXT1(ARB_vertex_program);
7464 params[0] = (GLint64)(ctx->Const.VertexProgram.MaxAttribs);
7465 break;
7466 case GL_PROGRAM_ERROR_POSITION_ARB:
7467 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program);
7468 params[0] = (GLint64)(ctx->Program.ErrorPos);
7469 break;
7470 case GL_FRAGMENT_PROGRAM_ARB:
7471 CHECK_EXT1(ARB_fragment_program);
7472 params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled);
7473 break;
7474 case GL_MAX_TEXTURE_COORDS_ARB:
7475 CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
7476 params[0] = (GLint64)(ctx->Const.MaxTextureCoordUnits);
7477 break;
7478 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
7479 CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
7480 params[0] = (GLint64)(ctx->Const.MaxTextureImageUnits);
7481 break;
7482 case GL_DEPTH_BOUNDS_TEST_EXT:
7483 CHECK_EXT1(EXT_depth_bounds_test);
7484 params[0] = BOOLEAN_TO_INT64(ctx->Depth.BoundsTest);
7485 break;
7486 case GL_DEPTH_BOUNDS_EXT:
7487 CHECK_EXT1(EXT_depth_bounds_test);
7488 params[0] = IROUND64(ctx->Depth.BoundsMin);
7489 params[1] = IROUND64(ctx->Depth.BoundsMax);
7490 break;
7491 case GL_DEPTH_CLAMP:
7492 CHECK_EXT1(ARB_depth_clamp);
7493 params[0] = BOOLEAN_TO_INT64(ctx->Transform.DepthClamp);
7494 break;
7495 case GL_MAX_DRAW_BUFFERS_ARB:
7496 params[0] = (GLint64)(ctx->Const.MaxDrawBuffers);
7497 break;
7498 case GL_DRAW_BUFFER0_ARB:
7499 params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]);
7500 break;
7501 case GL_DRAW_BUFFER1_ARB:
7502 {
7503 GLenum buffer;
7504 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7505 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7506 return;
7507 }
7508 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
7509 params[0] = ENUM_TO_INT64(buffer);
7510 }
7511 break;
7512 case GL_DRAW_BUFFER2_ARB:
7513 {
7514 GLenum buffer;
7515 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7516 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7517 return;
7518 }
7519 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
7520 params[0] = ENUM_TO_INT64(buffer);
7521 }
7522 break;
7523 case GL_DRAW_BUFFER3_ARB:
7524 {
7525 GLenum buffer;
7526 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7527 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7528 return;
7529 }
7530 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
7531 params[0] = ENUM_TO_INT64(buffer);
7532 }
7533 break;
7534 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
7535 CHECK_EXT1(OES_read_format);
7536 if (ctx->NewState & _NEW_BUFFERS)
7537 _mesa_update_state(ctx);
7538 params[0] = (GLint64)(_mesa_get_color_read_type(ctx));
7539 break;
7540 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
7541 CHECK_EXT1(OES_read_format);
7542 if (ctx->NewState & _NEW_BUFFERS)
7543 _mesa_update_state(ctx);
7544 params[0] = (GLint64)(_mesa_get_color_read_format(ctx));
7545 break;
7546 case GL_NUM_FRAGMENT_REGISTERS_ATI:
7547 CHECK_EXT1(ATI_fragment_shader);
7548 params[0] = (GLint64)(6);
7549 break;
7550 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
7551 CHECK_EXT1(ATI_fragment_shader);
7552 params[0] = (GLint64)(8);
7553 break;
7554 case GL_NUM_PASSES_ATI:
7555 CHECK_EXT1(ATI_fragment_shader);
7556 params[0] = (GLint64)(2);
7557 break;
7558 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
7559 CHECK_EXT1(ATI_fragment_shader);
7560 params[0] = (GLint64)(8);
7561 break;
7562 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
7563 CHECK_EXT1(ATI_fragment_shader);
7564 params[0] = (GLint64)(16);
7565 break;
7566 case GL_COLOR_ALPHA_PAIRING_ATI:
7567 CHECK_EXT1(ATI_fragment_shader);
7568 params[0] = BOOLEAN_TO_INT64(GL_TRUE);
7569 break;
7570 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
7571 CHECK_EXT1(ATI_fragment_shader);
7572 params[0] = (GLint64)(3);
7573 break;
7574 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
7575 CHECK_EXT1(ATI_fragment_shader);
7576 params[0] = (GLint64)(3);
7577 break;
7578 case GL_STENCIL_BACK_FUNC:
7579 params[0] = ENUM_TO_INT64(ctx->Stencil.Function[1]);
7580 break;
7581 case GL_STENCIL_BACK_VALUE_MASK:
7582 params[0] = (GLint64)(ctx->Stencil.ValueMask[1]);
7583 break;
7584 case GL_STENCIL_BACK_WRITEMASK:
7585 params[0] = (GLint64)(ctx->Stencil.WriteMask[1]);
7586 break;
7587 case GL_STENCIL_BACK_REF:
7588 params[0] = (GLint64)(ctx->Stencil.Ref[1]);
7589 break;
7590 case GL_STENCIL_BACK_FAIL:
7591 params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[1]);
7592 break;
7593 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
7594 params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[1]);
7595 break;
7596 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
7597 params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[1]);
7598 break;
7599 case GL_FRAMEBUFFER_BINDING_EXT:
7600 CHECK_EXT1(EXT_framebuffer_object);
7601 params[0] = (GLint64)(ctx->DrawBuffer->Name);
7602 break;
7603 case GL_RENDERBUFFER_BINDING_EXT:
7604 CHECK_EXT1(EXT_framebuffer_object);
7605 params[0] = (GLint64)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
7606 break;
7607 case GL_MAX_COLOR_ATTACHMENTS_EXT:
7608 CHECK_EXT1(EXT_framebuffer_object);
7609 params[0] = (GLint64)(ctx->Const.MaxColorAttachments);
7610 break;
7611 case GL_MAX_RENDERBUFFER_SIZE_EXT:
7612 CHECK_EXT1(EXT_framebuffer_object);
7613 params[0] = (GLint64)(ctx->Const.MaxRenderbufferSize);
7614 break;
7615 case GL_READ_FRAMEBUFFER_BINDING_EXT:
7616 CHECK_EXT1(EXT_framebuffer_blit);
7617 params[0] = (GLint64)(ctx->ReadBuffer->Name);
7618 break;
7619 case GL_PROVOKING_VERTEX_EXT:
7620 CHECK_EXT1(EXT_provoking_vertex);
7621 params[0] = BOOLEAN_TO_INT64(ctx->Light.ProvokingVertex);
7622 break;
7623 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
7624 CHECK_EXT1(EXT_provoking_vertex);
7625 params[0] = BOOLEAN_TO_INT64(ctx->Const.QuadsFollowProvokingVertexConvention);
7626 break;
7627 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
7628 CHECK_EXT1(ARB_fragment_shader);
7629 params[0] = (GLint64)(ctx->Const.FragmentProgram.MaxUniformComponents);
7630 break;
7631 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
7632 CHECK_EXT1(ARB_fragment_shader);
7633 params[0] = ENUM_TO_INT64(ctx->Hint.FragmentShaderDerivative);
7634 break;
7635 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
7636 CHECK_EXT1(ARB_vertex_shader);
7637 params[0] = (GLint64)(ctx->Const.VertexProgram.MaxUniformComponents);
7638 break;
7639 case GL_MAX_VARYING_FLOATS_ARB:
7640 CHECK_EXT1(ARB_vertex_shader);
7641 params[0] = (GLint64)(ctx->Const.MaxVarying * 4);
7642 break;
7643 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
7644 CHECK_EXT1(ARB_vertex_shader);
7645 params[0] = (GLint64)(ctx->Const.MaxVertexTextureImageUnits);
7646 break;
7647 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
7648 CHECK_EXT1(ARB_vertex_shader);
7649 params[0] = (GLint64)(ctx->Const.MaxCombinedTextureImageUnits);
7650 break;
7651 case GL_CURRENT_PROGRAM:
7652 CHECK_EXT1(ARB_shader_objects);
7653 params[0] = (GLint64)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
7654 break;
7655 case GL_MAX_SAMPLES:
7656 CHECK_EXT1(ARB_framebuffer_object);
7657 params[0] = (GLint64)(ctx->Const.MaxSamples);
7658 break;
7659 case GL_VERTEX_ARRAY_BINDING_APPLE:
7660 CHECK_EXT1(APPLE_vertex_array_object);
7661 params[0] = (GLint64)(ctx->Array.ArrayObj->Name);
7662 break;
7663 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
7664 CHECK_EXT1(ARB_seamless_cube_map);
7665 params[0] = BOOLEAN_TO_INT64(ctx->Texture.CubeMapSeamless);
7666 break;
7667 case GL_MAX_SERVER_WAIT_TIMEOUT:
7668 CHECK_EXT1(ARB_sync);
7669 params[0] = ctx->Const.MaxServerWaitTimeout;
7670 break;
7671 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
7672 CHECK_EXT1(EXT_transform_feedback);
7673 params[0] = (GLint64)(ctx->TransformFeedback.CurrentBuffer->Name);
7674 break;
7675 case GL_RASTERIZER_DISCARD:
7676 CHECK_EXT1(EXT_transform_feedback);
7677 params[0] = BOOLEAN_TO_INT64(ctx->TransformFeedback.RasterDiscard);
7678 break;
7679 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
7680 CHECK_EXT1(EXT_transform_feedback);
7681 params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackInterleavedComponents);
7682 break;
7683 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
7684 CHECK_EXT1(EXT_transform_feedback);
7685 params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackSeparateAttribs);
7686 break;
7687 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
7688 CHECK_EXT1(EXT_transform_feedback);
7689 params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackSeparateComponents);
7690 break;
7691 case GL_NUM_EXTENSIONS:
7692 CHECK_VERSION(30);
7693 params[0] = (GLint64)(_mesa_get_extension_count(ctx));
7694 break;
7695 case GL_MAJOR_VERSION:
7696 CHECK_VERSION(30);
7697 params[0] = (GLint64)(ctx->VersionMajor);
7698 break;
7699 case GL_MINOR_VERSION:
7700 CHECK_VERSION(30);
7701 params[0] = (GLint64)(ctx->VersionMinor);
7702 break;
7703 case GL_CONTEXT_FLAGS:
7704 CHECK_VERSION(30);
7705 params[0] = (GLint64)(ctx->Const.ContextFlags);
7706 break;
7707 case GL_PRIMITIVE_RESTART:
7708 CHECK_VERSION(31);
7709 params[0] = BOOLEAN_TO_INT64(ctx->Array.PrimitiveRestart);
7710 break;
7711 case GL_PRIMITIVE_RESTART_INDEX:
7712 CHECK_VERSION(31);
7713 params[0] = (GLint64)(ctx->Array.RestartIndex);
7714 break;
7715 case GL_CONTEXT_PROFILE_MASK:
7716 CHECK_VERSION(32);
7717 params[0] = (GLint64)(ctx->Const.ProfileMask);
7718 break;
7719 default:
7720 goto invalid_enum_error;
7721 }
7722 return;
7723
7724 invalid_enum_error:
7725 _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64v(pname=0x%x)", pname);
7726 }
7727 #endif /* FEATURE_ARB_sync */
7728
7729
7730 void GLAPIENTRY
7731 _mesa_GetDoublev( GLenum pname, GLdouble *params )
7732 {
7733 const GLfloat magic = -1234.5F;
7734 GLfloat values[16];
7735 GLuint i;
7736
7737 if (!params)
7738 return;
7739
7740 /* Init temp array to magic numbers so we can figure out how many values
7741 * are returned by the GetFloatv() call.
7742 */
7743 for (i = 0; i < 16; i++)
7744 values[i] = magic;
7745
7746 _mesa_GetFloatv(pname, values);
7747
7748 for (i = 0; i < 16 && values[i] != magic; i++)
7749 params[i] = (GLdouble) values[i];
7750 }
7751
7752 void GLAPIENTRY
7753 _mesa_GetBooleanIndexedv( GLenum pname, GLuint index, GLboolean *params )
7754 {
7755 GET_CURRENT_CONTEXT(ctx);
7756 const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
7757 ASSERT_OUTSIDE_BEGIN_END(ctx);
7758 (void) version;
7759
7760 if (!params)
7761 return;
7762
7763 switch (pname) {
7764 case GL_BLEND:
7765 CHECK_EXT1(EXT_draw_buffers2);
7766 if (index >= ctx->Const.MaxDrawBuffers) {
7767 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7768 return;
7769 }
7770 params[0] = INT_TO_BOOLEAN(((ctx->Color.BlendEnabled >> index) & 1));
7771 break;
7772 case GL_COLOR_WRITEMASK:
7773 CHECK_EXT1(EXT_draw_buffers2);
7774 if (index >= ctx->Const.MaxDrawBuffers) {
7775 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7776 return;
7777 }
7778 params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][RCOMP] ? 1 : 0);
7779 params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][GCOMP] ? 1 : 0);
7780 params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][BCOMP] ? 1 : 0);
7781 params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][ACOMP] ? 1 : 0);
7782 break;
7783 case GL_TRANSFORM_FEEDBACK_BUFFER_START:
7784 CHECK_EXT1(EXT_transform_feedback);
7785 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7786 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7787 return;
7788 }
7789 params[0] = INT64_TO_BOOLEAN(ctx->TransformFeedback.CurrentObject->Offset[index]);
7790 break;
7791 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
7792 CHECK_EXT1(EXT_transform_feedback);
7793 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7794 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7795 return;
7796 }
7797 params[0] = INT64_TO_BOOLEAN(ctx->TransformFeedback.CurrentObject->Size[index]);
7798 break;
7799 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
7800 CHECK_EXT1(EXT_transform_feedback);
7801 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7802 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7803 return;
7804 }
7805 params[0] = INT_TO_BOOLEAN(ctx->TransformFeedback.CurrentObject->Buffers[index]->Name);
7806 break;
7807 default:
7808 goto invalid_enum_error;
7809 }
7810 return;
7811
7812 invalid_enum_error:
7813 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanIndexedv(pname=0x%x)", pname);
7814 }
7815
7816 void GLAPIENTRY
7817 _mesa_GetIntegerIndexedv( GLenum pname, GLuint index, GLint *params )
7818 {
7819 GET_CURRENT_CONTEXT(ctx);
7820 const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
7821 ASSERT_OUTSIDE_BEGIN_END(ctx);
7822 (void) version;
7823
7824 if (!params)
7825 return;
7826
7827 switch (pname) {
7828 case GL_BLEND:
7829 CHECK_EXT1(EXT_draw_buffers2);
7830 if (index >= ctx->Const.MaxDrawBuffers) {
7831 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7832 return;
7833 }
7834 params[0] = ((ctx->Color.BlendEnabled >> index) & 1);
7835 break;
7836 case GL_COLOR_WRITEMASK:
7837 CHECK_EXT1(EXT_draw_buffers2);
7838 if (index >= ctx->Const.MaxDrawBuffers) {
7839 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7840 return;
7841 }
7842 params[0] = ctx->Color.ColorMask[index][RCOMP] ? 1 : 0;
7843 params[1] = ctx->Color.ColorMask[index][GCOMP] ? 1 : 0;
7844 params[2] = ctx->Color.ColorMask[index][BCOMP] ? 1 : 0;
7845 params[3] = ctx->Color.ColorMask[index][ACOMP] ? 1 : 0;
7846 break;
7847 case GL_TRANSFORM_FEEDBACK_BUFFER_START:
7848 CHECK_EXT1(EXT_transform_feedback);
7849 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7850 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7851 return;
7852 }
7853 params[0] = INT64_TO_INT(ctx->TransformFeedback.CurrentObject->Offset[index]);
7854 break;
7855 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
7856 CHECK_EXT1(EXT_transform_feedback);
7857 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7858 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7859 return;
7860 }
7861 params[0] = INT64_TO_INT(ctx->TransformFeedback.CurrentObject->Size[index]);
7862 break;
7863 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
7864 CHECK_EXT1(EXT_transform_feedback);
7865 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7866 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7867 return;
7868 }
7869 params[0] = ctx->TransformFeedback.CurrentObject->Buffers[index]->Name;
7870 break;
7871 default:
7872 goto invalid_enum_error;
7873 }
7874 return;
7875
7876 invalid_enum_error:
7877 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerIndexedv(pname=0x%x)", pname);
7878 }
7879
7880 #if FEATURE_ARB_sync
7881 void GLAPIENTRY
7882 _mesa_GetInteger64Indexedv( GLenum pname, GLuint index, GLint64 *params )
7883 {
7884 GET_CURRENT_CONTEXT(ctx);
7885 const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
7886 ASSERT_OUTSIDE_BEGIN_END(ctx);
7887 (void) version;
7888
7889 if (!params)
7890 return;
7891
7892 switch (pname) {
7893 case GL_BLEND:
7894 CHECK_EXT1(EXT_draw_buffers2);
7895 if (index >= ctx->Const.MaxDrawBuffers) {
7896 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7897 return;
7898 }
7899 params[0] = (GLint64)(((ctx->Color.BlendEnabled >> index) & 1));
7900 break;
7901 case GL_COLOR_WRITEMASK:
7902 CHECK_EXT1(EXT_draw_buffers2);
7903 if (index >= ctx->Const.MaxDrawBuffers) {
7904 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7905 return;
7906 }
7907 params[0] = (GLint64)(ctx->Color.ColorMask[index][RCOMP] ? 1 : 0);
7908 params[1] = (GLint64)(ctx->Color.ColorMask[index][GCOMP] ? 1 : 0);
7909 params[2] = (GLint64)(ctx->Color.ColorMask[index][BCOMP] ? 1 : 0);
7910 params[3] = (GLint64)(ctx->Color.ColorMask[index][ACOMP] ? 1 : 0);
7911 break;
7912 case GL_TRANSFORM_FEEDBACK_BUFFER_START:
7913 CHECK_EXT1(EXT_transform_feedback);
7914 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7915 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7916 return;
7917 }
7918 params[0] = ctx->TransformFeedback.CurrentObject->Offset[index];
7919 break;
7920 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
7921 CHECK_EXT1(EXT_transform_feedback);
7922 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7923 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7924 return;
7925 }
7926 params[0] = ctx->TransformFeedback.CurrentObject->Size[index];
7927 break;
7928 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
7929 CHECK_EXT1(EXT_transform_feedback);
7930 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7931 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7932 return;
7933 }
7934 params[0] = (GLint64)(ctx->TransformFeedback.CurrentObject->Buffers[index]->Name);
7935 break;
7936 default:
7937 goto invalid_enum_error;
7938 }
7939 return;
7940
7941 invalid_enum_error:
7942 _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64Indexedv(pname=0x%x)", pname);
7943 }
7944 #endif /* FEATURE_ARB_sync */
7945