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