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