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