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