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 if (ctx->NewState & _NEW_BUFFERS)
1795 _mesa_update_state(ctx);
1796 params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_type(ctx));
1797 break;
1798 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
1799 CHECK_EXT1(OES_read_format, "GetBooleanv");
1800 if (ctx->NewState & _NEW_BUFFERS)
1801 _mesa_update_state(ctx);
1802 params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_format(ctx));
1803 break;
1804 case GL_NUM_FRAGMENT_REGISTERS_ATI:
1805 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1806 params[0] = INT_TO_BOOLEAN(6);
1807 break;
1808 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
1809 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1810 params[0] = INT_TO_BOOLEAN(8);
1811 break;
1812 case GL_NUM_PASSES_ATI:
1813 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1814 params[0] = INT_TO_BOOLEAN(2);
1815 break;
1816 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
1817 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1818 params[0] = INT_TO_BOOLEAN(8);
1819 break;
1820 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
1821 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1822 params[0] = INT_TO_BOOLEAN(16);
1823 break;
1824 case GL_COLOR_ALPHA_PAIRING_ATI:
1825 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1826 params[0] = GL_TRUE;
1827 break;
1828 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
1829 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1830 params[0] = INT_TO_BOOLEAN(3);
1831 break;
1832 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
1833 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
1834 params[0] = INT_TO_BOOLEAN(3);
1835 break;
1836 case GL_STENCIL_BACK_FUNC:
1837 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
1838 break;
1839 case GL_STENCIL_BACK_VALUE_MASK:
1840 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
1841 break;
1842 case GL_STENCIL_BACK_WRITEMASK:
1843 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]);
1844 break;
1845 case GL_STENCIL_BACK_REF:
1846 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
1847 break;
1848 case GL_STENCIL_BACK_FAIL:
1849 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
1850 break;
1851 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
1852 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
1853 break;
1854 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
1855 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
1856 break;
1857 case GL_FRAMEBUFFER_BINDING_EXT:
1858 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1859 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
1860 break;
1861 case GL_RENDERBUFFER_BINDING_EXT:
1862 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1863 params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
1864 break;
1865 case GL_MAX_COLOR_ATTACHMENTS_EXT:
1866 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1867 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
1868 break;
1869 case GL_MAX_RENDERBUFFER_SIZE_EXT:
1870 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
1871 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
1872 break;
1873 case GL_READ_FRAMEBUFFER_BINDING_EXT:
1874 CHECK_EXT1(EXT_framebuffer_blit, "GetBooleanv");
1875 params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name);
1876 break;
1877 case GL_PROVOKING_VERTEX_EXT:
1878 CHECK_EXT1(EXT_provoking_vertex, "GetBooleanv");
1879 params[0] = ctx->Light.ProvokingVertex;
1880 break;
1881 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
1882 CHECK_EXT1(EXT_provoking_vertex, "GetBooleanv");
1883 params[0] = ctx->Const.QuadsFollowProvokingVertexConvention;
1884 break;
1885 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
1886 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
1887 params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents);
1888 break;
1889 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
1890 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
1891 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
1892 break;
1893 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
1894 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1895 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents);
1896 break;
1897 case GL_MAX_VARYING_FLOATS_ARB:
1898 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1899 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4);
1900 break;
1901 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
1902 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1903 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits);
1904 break;
1905 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
1906 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
1907 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxCombinedTextureImageUnits);
1908 break;
1909 case GL_CURRENT_PROGRAM:
1910 CHECK_EXT1(ARB_shader_objects, "GetBooleanv");
1911 params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
1912 break;
1913 case GL_MAX_SAMPLES:
1914 CHECK_EXT1(ARB_framebuffer_object, "GetBooleanv");
1915 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxSamples);
1916 break;
1917 case GL_VERTEX_ARRAY_BINDING_APPLE:
1918 CHECK_EXT1(APPLE_vertex_array_object, "GetBooleanv");
1919 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Name);
1920 break;
1921 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
1922 CHECK_EXT1(ARB_seamless_cube_map, "GetBooleanv");
1923 params[0] = ctx->Texture.CubeMapSeamless;
1924 break;
1925 case GL_MAX_SERVER_WAIT_TIMEOUT:
1926 CHECK_EXT1(ARB_sync, "GetBooleanv");
1927 params[0] = INT64_TO_BOOLEAN(ctx->Const.MaxServerWaitTimeout);
1928 break;
1929 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
1930 CHECK_EXT1(EXT_transform_feedback, "GetBooleanv");
1931 params[0] = INT_TO_BOOLEAN(ctx->TransformFeedback.CurrentBuffer->Name);
1932 break;
1933 case GL_RASTERIZER_DISCARD:
1934 CHECK_EXT1(EXT_transform_feedback, "GetBooleanv");
1935 params[0] = ctx->TransformFeedback.RasterDiscard;
1936 break;
1937 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
1938 CHECK_EXT1(EXT_transform_feedback, "GetBooleanv");
1939 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackInterleavedComponents);
1940 break;
1941 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
1942 CHECK_EXT1(EXT_transform_feedback, "GetBooleanv");
1943 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackSeparateAttribs);
1944 break;
1945 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
1946 CHECK_EXT1(EXT_transform_feedback, "GetBooleanv");
1947 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackSeparateComponents);
1948 break;
1949 case GL_NUM_EXTENSIONS:
1950 params[0] = INT_TO_BOOLEAN(_mesa_get_extension_count(ctx));
1951 break;
1952 case GL_MAJOR_VERSION:
1953 params[0] = INT_TO_BOOLEAN(ctx->VersionMajor);
1954 break;
1955 case GL_MINOR_VERSION:
1956 params[0] = INT_TO_BOOLEAN(ctx->VersionMinor);
1957 break;
1958 case GL_CONTEXT_FLAGS:
1959 params[0] = INT_TO_BOOLEAN(ctx->Const.ContextFlags);
1960 break;
1961 default:
1962 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
1963 }
1964 }
1965
1966 void GLAPIENTRY
1967 _mesa_GetFloatv( GLenum pname, GLfloat *params )
1968 {
1969 GET_CURRENT_CONTEXT(ctx);
1970 ASSERT_OUTSIDE_BEGIN_END(ctx);
1971
1972 if (!params)
1973 return;
1974
1975 if (ctx->Driver.GetFloatv &&
1976 ctx->Driver.GetFloatv(ctx, pname, params))
1977 return;
1978
1979 switch (pname) {
1980 case GL_ACCUM_RED_BITS:
1981 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
1982 break;
1983 case GL_ACCUM_GREEN_BITS:
1984 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
1985 break;
1986 case GL_ACCUM_BLUE_BITS:
1987 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
1988 break;
1989 case GL_ACCUM_ALPHA_BITS:
1990 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
1991 break;
1992 case GL_ACCUM_CLEAR_VALUE:
1993 params[0] = ctx->Accum.ClearColor[0];
1994 params[1] = ctx->Accum.ClearColor[1];
1995 params[2] = ctx->Accum.ClearColor[2];
1996 params[3] = ctx->Accum.ClearColor[3];
1997 break;
1998 case GL_ALPHA_BIAS:
1999 params[0] = ctx->Pixel.AlphaBias;
2000 break;
2001 case GL_ALPHA_BITS:
2002 if (ctx->NewState & _NEW_BUFFERS)
2003 _mesa_update_state(ctx);
2004 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
2005 break;
2006 case GL_ALPHA_SCALE:
2007 params[0] = ctx->Pixel.AlphaScale;
2008 break;
2009 case GL_ALPHA_TEST:
2010 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
2011 break;
2012 case GL_ALPHA_TEST_FUNC:
2013 params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
2014 break;
2015 case GL_ALPHA_TEST_REF:
2016 params[0] = ctx->Color.AlphaRef;
2017 break;
2018 case GL_ATTRIB_STACK_DEPTH:
2019 params[0] = (GLfloat)(ctx->AttribStackDepth);
2020 break;
2021 case GL_AUTO_NORMAL:
2022 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
2023 break;
2024 case GL_AUX_BUFFERS:
2025 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
2026 break;
2027 case GL_BLEND:
2028 params[0] = BOOLEAN_TO_FLOAT((ctx->Color.BlendEnabled & 1));
2029 break;
2030 case GL_BLEND_DST:
2031 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
2032 break;
2033 case GL_BLEND_SRC:
2034 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
2035 break;
2036 case GL_BLEND_SRC_RGB_EXT:
2037 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
2038 break;
2039 case GL_BLEND_DST_RGB_EXT:
2040 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
2041 break;
2042 case GL_BLEND_SRC_ALPHA_EXT:
2043 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
2044 break;
2045 case GL_BLEND_DST_ALPHA_EXT:
2046 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
2047 break;
2048 case GL_BLEND_EQUATION:
2049 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
2050 break;
2051 case GL_BLEND_EQUATION_ALPHA_EXT:
2052 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
2053 break;
2054 case GL_BLEND_COLOR_EXT:
2055 params[0] = ctx->Color.BlendColor[0];
2056 params[1] = ctx->Color.BlendColor[1];
2057 params[2] = ctx->Color.BlendColor[2];
2058 params[3] = ctx->Color.BlendColor[3];
2059 break;
2060 case GL_BLUE_BIAS:
2061 params[0] = ctx->Pixel.BlueBias;
2062 break;
2063 case GL_BLUE_BITS:
2064 if (ctx->NewState & _NEW_BUFFERS)
2065 _mesa_update_state(ctx);
2066 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
2067 break;
2068 case GL_BLUE_SCALE:
2069 params[0] = ctx->Pixel.BlueScale;
2070 break;
2071 case GL_CLIENT_ATTRIB_STACK_DEPTH:
2072 params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
2073 break;
2074 case GL_CLIP_PLANE0:
2075 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
2076 break;
2077 case GL_CLIP_PLANE1:
2078 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
2079 break;
2080 case GL_CLIP_PLANE2:
2081 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
2082 break;
2083 case GL_CLIP_PLANE3:
2084 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
2085 break;
2086 case GL_CLIP_PLANE4:
2087 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
2088 break;
2089 case GL_CLIP_PLANE5:
2090 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
2091 break;
2092 case GL_COLOR_CLEAR_VALUE:
2093 params[0] = ctx->Color.ClearColor[0];
2094 params[1] = ctx->Color.ClearColor[1];
2095 params[2] = ctx->Color.ClearColor[2];
2096 params[3] = ctx->Color.ClearColor[3];
2097 break;
2098 case GL_COLOR_MATERIAL:
2099 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
2100 break;
2101 case GL_COLOR_MATERIAL_FACE:
2102 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
2103 break;
2104 case GL_COLOR_MATERIAL_PARAMETER:
2105 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
2106 break;
2107 case GL_COLOR_WRITEMASK:
2108 params[0] = (GLfloat)(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0);
2109 params[1] = (GLfloat)(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0);
2110 params[2] = (GLfloat)(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0);
2111 params[3] = (GLfloat)(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0);
2112 break;
2113 case GL_CULL_FACE:
2114 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
2115 break;
2116 case GL_CULL_FACE_MODE:
2117 params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
2118 break;
2119 case GL_CURRENT_COLOR:
2120 FLUSH_CURRENT(ctx, 0);
2121 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
2122 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
2123 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
2124 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
2125 break;
2126 case GL_CURRENT_INDEX:
2127 FLUSH_CURRENT(ctx, 0);
2128 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
2129 break;
2130 case GL_CURRENT_NORMAL:
2131 FLUSH_CURRENT(ctx, 0);
2132 params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
2133 params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
2134 params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
2135 break;
2136 case GL_CURRENT_RASTER_COLOR:
2137 params[0] = ctx->Current.RasterColor[0];
2138 params[1] = ctx->Current.RasterColor[1];
2139 params[2] = ctx->Current.RasterColor[2];
2140 params[3] = ctx->Current.RasterColor[3];
2141 break;
2142 case GL_CURRENT_RASTER_DISTANCE:
2143 params[0] = ctx->Current.RasterDistance;
2144 break;
2145 case GL_CURRENT_RASTER_INDEX:
2146 params[0] = 1.0;
2147 break;
2148 case GL_CURRENT_RASTER_POSITION:
2149 params[0] = ctx->Current.RasterPos[0];
2150 params[1] = ctx->Current.RasterPos[1];
2151 params[2] = ctx->Current.RasterPos[2];
2152 params[3] = ctx->Current.RasterPos[3];
2153 break;
2154 case GL_CURRENT_RASTER_SECONDARY_COLOR:
2155 params[0] = ctx->Current.RasterSecondaryColor[0];
2156 params[1] = ctx->Current.RasterSecondaryColor[1];
2157 params[2] = ctx->Current.RasterSecondaryColor[2];
2158 params[3] = ctx->Current.RasterSecondaryColor[3];
2159 break;
2160 case GL_CURRENT_RASTER_TEXTURE_COORDS:
2161 {
2162 const GLuint unit = ctx->Texture.CurrentUnit;
2163 if (unit >= ctx->Const.MaxTextureCoordUnits) {
2164 _mesa_error(ctx, GL_INVALID_OPERATION,
2165 "glGet(raster tex coords, unit %u)", unit);
2166 return;
2167 }
2168 params[0] = ctx->Current.RasterTexCoords[unit][0];
2169 params[1] = ctx->Current.RasterTexCoords[unit][1];
2170 params[2] = ctx->Current.RasterTexCoords[unit][2];
2171 params[3] = ctx->Current.RasterTexCoords[unit][3];
2172 }
2173 break;
2174 case GL_CURRENT_RASTER_POSITION_VALID:
2175 params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
2176 break;
2177 case GL_CURRENT_TEXTURE_COORDS:
2178 {
2179 const GLuint unit = ctx->Texture.CurrentUnit;
2180 if (unit >= ctx->Const.MaxTextureCoordUnits) {
2181 _mesa_error(ctx, GL_INVALID_OPERATION,
2182 "glGet(current tex coords, unit %u)", unit);
2183 return;
2184 }
2185 FLUSH_CURRENT(ctx, 0);
2186 params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0];
2187 params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1];
2188 params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2];
2189 params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3];
2190 }
2191 break;
2192 case GL_DEPTH_BIAS:
2193 params[0] = ctx->Pixel.DepthBias;
2194 break;
2195 case GL_DEPTH_BITS:
2196 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
2197 break;
2198 case GL_DEPTH_CLEAR_VALUE:
2199 params[0] = ((GLfloat) ctx->Depth.Clear);
2200 break;
2201 case GL_DEPTH_FUNC:
2202 params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
2203 break;
2204 case GL_DEPTH_RANGE:
2205 params[0] = ctx->Viewport.Near;
2206 params[1] = ctx->Viewport.Far;
2207 break;
2208 case GL_DEPTH_SCALE:
2209 params[0] = ctx->Pixel.DepthScale;
2210 break;
2211 case GL_DEPTH_TEST:
2212 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
2213 break;
2214 case GL_DEPTH_WRITEMASK:
2215 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
2216 break;
2217 case GL_DITHER:
2218 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
2219 break;
2220 case GL_DOUBLEBUFFER:
2221 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
2222 break;
2223 case GL_DRAW_BUFFER:
2224 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
2225 break;
2226 case GL_EDGE_FLAG:
2227 FLUSH_CURRENT(ctx, 0);
2228 params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
2229 break;
2230 case GL_FEEDBACK_BUFFER_SIZE:
2231 params[0] = (GLfloat)(ctx->Feedback.BufferSize);
2232 break;
2233 case GL_FEEDBACK_BUFFER_TYPE:
2234 params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
2235 break;
2236 case GL_FOG:
2237 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
2238 break;
2239 case GL_FOG_COLOR:
2240 params[0] = ctx->Fog.Color[0];
2241 params[1] = ctx->Fog.Color[1];
2242 params[2] = ctx->Fog.Color[2];
2243 params[3] = ctx->Fog.Color[3];
2244 break;
2245 case GL_FOG_DENSITY:
2246 params[0] = ctx->Fog.Density;
2247 break;
2248 case GL_FOG_END:
2249 params[0] = ctx->Fog.End;
2250 break;
2251 case GL_FOG_HINT:
2252 params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
2253 break;
2254 case GL_FOG_INDEX:
2255 params[0] = ctx->Fog.Index;
2256 break;
2257 case GL_FOG_MODE:
2258 params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
2259 break;
2260 case GL_FOG_START:
2261 params[0] = ctx->Fog.Start;
2262 break;
2263 case GL_FRONT_FACE:
2264 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
2265 break;
2266 case GL_GREEN_BIAS:
2267 params[0] = ctx->Pixel.GreenBias;
2268 break;
2269 case GL_GREEN_BITS:
2270 if (ctx->NewState & _NEW_BUFFERS)
2271 _mesa_update_state(ctx);
2272 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
2273 break;
2274 case GL_GREEN_SCALE:
2275 params[0] = ctx->Pixel.GreenScale;
2276 break;
2277 case GL_INDEX_BITS:
2278 if (ctx->NewState & _NEW_BUFFERS)
2279 _mesa_update_state(ctx);
2280 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
2281 break;
2282 case GL_INDEX_CLEAR_VALUE:
2283 params[0] = (GLfloat)(ctx->Color.ClearIndex);
2284 break;
2285 case GL_INDEX_MODE:
2286 params[0] = BOOLEAN_TO_FLOAT(GL_FALSE);
2287 break;
2288 case GL_INDEX_OFFSET:
2289 params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
2290 break;
2291 case GL_INDEX_SHIFT:
2292 params[0] = (GLfloat)(ctx->Pixel.IndexShift);
2293 break;
2294 case GL_INDEX_WRITEMASK:
2295 params[0] = (GLfloat)(ctx->Color.IndexMask);
2296 break;
2297 case GL_LIGHT0:
2298 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
2299 break;
2300 case GL_LIGHT1:
2301 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
2302 break;
2303 case GL_LIGHT2:
2304 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
2305 break;
2306 case GL_LIGHT3:
2307 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
2308 break;
2309 case GL_LIGHT4:
2310 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
2311 break;
2312 case GL_LIGHT5:
2313 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
2314 break;
2315 case GL_LIGHT6:
2316 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
2317 break;
2318 case GL_LIGHT7:
2319 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
2320 break;
2321 case GL_LIGHTING:
2322 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
2323 break;
2324 case GL_LIGHT_MODEL_AMBIENT:
2325 params[0] = ctx->Light.Model.Ambient[0];
2326 params[1] = ctx->Light.Model.Ambient[1];
2327 params[2] = ctx->Light.Model.Ambient[2];
2328 params[3] = ctx->Light.Model.Ambient[3];
2329 break;
2330 case GL_LIGHT_MODEL_COLOR_CONTROL:
2331 params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
2332 break;
2333 case GL_LIGHT_MODEL_LOCAL_VIEWER:
2334 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
2335 break;
2336 case GL_LIGHT_MODEL_TWO_SIDE:
2337 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
2338 break;
2339 case GL_LINE_SMOOTH:
2340 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
2341 break;
2342 case GL_LINE_SMOOTH_HINT:
2343 params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
2344 break;
2345 case GL_LINE_STIPPLE:
2346 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
2347 break;
2348 case GL_LINE_STIPPLE_PATTERN:
2349 params[0] = (GLfloat)(ctx->Line.StipplePattern);
2350 break;
2351 case GL_LINE_STIPPLE_REPEAT:
2352 params[0] = (GLfloat)(ctx->Line.StippleFactor);
2353 break;
2354 case GL_LINE_WIDTH:
2355 params[0] = ctx->Line.Width;
2356 break;
2357 case GL_LINE_WIDTH_GRANULARITY:
2358 params[0] = ctx->Const.LineWidthGranularity;
2359 break;
2360 case GL_LINE_WIDTH_RANGE:
2361 params[0] = ctx->Const.MinLineWidthAA;
2362 params[1] = ctx->Const.MaxLineWidthAA;
2363 break;
2364 case GL_ALIASED_LINE_WIDTH_RANGE:
2365 params[0] = ctx->Const.MinLineWidth;
2366 params[1] = ctx->Const.MaxLineWidth;
2367 break;
2368 case GL_LIST_BASE:
2369 params[0] = (GLfloat)(ctx->List.ListBase);
2370 break;
2371 case GL_LIST_INDEX:
2372 params[0] = (GLfloat)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
2373 break;
2374 case GL_LIST_MODE:
2375 {
2376 GLenum mode;
2377 if (!ctx->CompileFlag)
2378 mode = 0;
2379 else if (ctx->ExecuteFlag)
2380 mode = GL_COMPILE_AND_EXECUTE;
2381 else
2382 mode = GL_COMPILE;
2383 params[0] = ENUM_TO_FLOAT(mode);
2384 }
2385 break;
2386 case GL_INDEX_LOGIC_OP:
2387 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
2388 break;
2389 case GL_COLOR_LOGIC_OP:
2390 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
2391 break;
2392 case GL_LOGIC_OP_MODE:
2393 params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
2394 break;
2395 case GL_MAP1_COLOR_4:
2396 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
2397 break;
2398 case GL_MAP1_GRID_DOMAIN:
2399 params[0] = ctx->Eval.MapGrid1u1;
2400 params[1] = ctx->Eval.MapGrid1u2;
2401 break;
2402 case GL_MAP1_GRID_SEGMENTS:
2403 params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
2404 break;
2405 case GL_MAP1_INDEX:
2406 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
2407 break;
2408 case GL_MAP1_NORMAL:
2409 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
2410 break;
2411 case GL_MAP1_TEXTURE_COORD_1:
2412 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
2413 break;
2414 case GL_MAP1_TEXTURE_COORD_2:
2415 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
2416 break;
2417 case GL_MAP1_TEXTURE_COORD_3:
2418 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
2419 break;
2420 case GL_MAP1_TEXTURE_COORD_4:
2421 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
2422 break;
2423 case GL_MAP1_VERTEX_3:
2424 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
2425 break;
2426 case GL_MAP1_VERTEX_4:
2427 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
2428 break;
2429 case GL_MAP2_COLOR_4:
2430 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
2431 break;
2432 case GL_MAP2_GRID_DOMAIN:
2433 params[0] = ctx->Eval.MapGrid2u1;
2434 params[1] = ctx->Eval.MapGrid2u2;
2435 params[2] = ctx->Eval.MapGrid2v1;
2436 params[3] = ctx->Eval.MapGrid2v2;
2437 break;
2438 case GL_MAP2_GRID_SEGMENTS:
2439 params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
2440 params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
2441 break;
2442 case GL_MAP2_INDEX:
2443 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
2444 break;
2445 case GL_MAP2_NORMAL:
2446 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
2447 break;
2448 case GL_MAP2_TEXTURE_COORD_1:
2449 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
2450 break;
2451 case GL_MAP2_TEXTURE_COORD_2:
2452 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
2453 break;
2454 case GL_MAP2_TEXTURE_COORD_3:
2455 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
2456 break;
2457 case GL_MAP2_TEXTURE_COORD_4:
2458 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
2459 break;
2460 case GL_MAP2_VERTEX_3:
2461 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
2462 break;
2463 case GL_MAP2_VERTEX_4:
2464 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
2465 break;
2466 case GL_MAP_COLOR:
2467 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
2468 break;
2469 case GL_MAP_STENCIL:
2470 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
2471 break;
2472 case GL_MATRIX_MODE:
2473 params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
2474 break;
2475 case GL_MAX_ATTRIB_STACK_DEPTH:
2476 params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
2477 break;
2478 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
2479 params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
2480 break;
2481 case GL_MAX_CLIP_PLANES:
2482 params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
2483 break;
2484 case GL_MAX_ELEMENTS_VERTICES:
2485 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2486 break;
2487 case GL_MAX_ELEMENTS_INDICES:
2488 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
2489 break;
2490 case GL_MAX_EVAL_ORDER:
2491 params[0] = (GLfloat)(MAX_EVAL_ORDER);
2492 break;
2493 case GL_MAX_LIGHTS:
2494 params[0] = (GLfloat)(ctx->Const.MaxLights);
2495 break;
2496 case GL_MAX_LIST_NESTING:
2497 params[0] = (GLfloat)(MAX_LIST_NESTING);
2498 break;
2499 case GL_MAX_MODELVIEW_STACK_DEPTH:
2500 params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
2501 break;
2502 case GL_MAX_NAME_STACK_DEPTH:
2503 params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
2504 break;
2505 case GL_MAX_PIXEL_MAP_TABLE:
2506 params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
2507 break;
2508 case GL_MAX_PROJECTION_STACK_DEPTH:
2509 params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
2510 break;
2511 case GL_MAX_TEXTURE_SIZE:
2512 params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
2513 break;
2514 case GL_MAX_3D_TEXTURE_SIZE:
2515 params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
2516 break;
2517 case GL_MAX_TEXTURE_STACK_DEPTH:
2518 params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
2519 break;
2520 case GL_MAX_VIEWPORT_DIMS:
2521 params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
2522 params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
2523 break;
2524 case GL_MODELVIEW_MATRIX:
2525 {
2526 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
2527 params[0] = matrix[0];
2528 params[1] = matrix[1];
2529 params[2] = matrix[2];
2530 params[3] = matrix[3];
2531 params[4] = matrix[4];
2532 params[5] = matrix[5];
2533 params[6] = matrix[6];
2534 params[7] = matrix[7];
2535 params[8] = matrix[8];
2536 params[9] = matrix[9];
2537 params[10] = matrix[10];
2538 params[11] = matrix[11];
2539 params[12] = matrix[12];
2540 params[13] = matrix[13];
2541 params[14] = matrix[14];
2542 params[15] = matrix[15];
2543 }
2544 break;
2545 case GL_MODELVIEW_STACK_DEPTH:
2546 params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
2547 break;
2548 case GL_NAME_STACK_DEPTH:
2549 params[0] = (GLfloat)(ctx->Select.NameStackDepth);
2550 break;
2551 case GL_NORMALIZE:
2552 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
2553 break;
2554 case GL_PACK_ALIGNMENT:
2555 params[0] = (GLfloat)(ctx->Pack.Alignment);
2556 break;
2557 case GL_PACK_LSB_FIRST:
2558 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
2559 break;
2560 case GL_PACK_ROW_LENGTH:
2561 params[0] = (GLfloat)(ctx->Pack.RowLength);
2562 break;
2563 case GL_PACK_SKIP_PIXELS:
2564 params[0] = (GLfloat)(ctx->Pack.SkipPixels);
2565 break;
2566 case GL_PACK_SKIP_ROWS:
2567 params[0] = (GLfloat)(ctx->Pack.SkipRows);
2568 break;
2569 case GL_PACK_SWAP_BYTES:
2570 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
2571 break;
2572 case GL_PACK_SKIP_IMAGES_EXT:
2573 params[0] = (GLfloat)(ctx->Pack.SkipImages);
2574 break;
2575 case GL_PACK_IMAGE_HEIGHT_EXT:
2576 params[0] = (GLfloat)(ctx->Pack.ImageHeight);
2577 break;
2578 case GL_PACK_INVERT_MESA:
2579 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
2580 break;
2581 case GL_PERSPECTIVE_CORRECTION_HINT:
2582 params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
2583 break;
2584 case GL_PIXEL_MAP_A_TO_A_SIZE:
2585 params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size);
2586 break;
2587 case GL_PIXEL_MAP_B_TO_B_SIZE:
2588 params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size);
2589 break;
2590 case GL_PIXEL_MAP_G_TO_G_SIZE:
2591 params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size);
2592 break;
2593 case GL_PIXEL_MAP_I_TO_A_SIZE:
2594 params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size);
2595 break;
2596 case GL_PIXEL_MAP_I_TO_B_SIZE:
2597 params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size);
2598 break;
2599 case GL_PIXEL_MAP_I_TO_G_SIZE:
2600 params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size);
2601 break;
2602 case GL_PIXEL_MAP_I_TO_I_SIZE:
2603 params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size);
2604 break;
2605 case GL_PIXEL_MAP_I_TO_R_SIZE:
2606 params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size);
2607 break;
2608 case GL_PIXEL_MAP_R_TO_R_SIZE:
2609 params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size);
2610 break;
2611 case GL_PIXEL_MAP_S_TO_S_SIZE:
2612 params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size);
2613 break;
2614 case GL_POINT_SIZE:
2615 params[0] = ctx->Point.Size;
2616 break;
2617 case GL_POINT_SIZE_GRANULARITY:
2618 params[0] = ctx->Const.PointSizeGranularity;
2619 break;
2620 case GL_POINT_SIZE_RANGE:
2621 params[0] = ctx->Const.MinPointSizeAA;
2622 params[1] = ctx->Const.MaxPointSizeAA;
2623 break;
2624 case GL_ALIASED_POINT_SIZE_RANGE:
2625 params[0] = ctx->Const.MinPointSize;
2626 params[1] = ctx->Const.MaxPointSize;
2627 break;
2628 case GL_POINT_SMOOTH:
2629 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
2630 break;
2631 case GL_POINT_SMOOTH_HINT:
2632 params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
2633 break;
2634 case GL_POINT_SIZE_MIN_EXT:
2635 params[0] = ctx->Point.MinSize;
2636 break;
2637 case GL_POINT_SIZE_MAX_EXT:
2638 params[0] = ctx->Point.MaxSize;
2639 break;
2640 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
2641 params[0] = ctx->Point.Threshold;
2642 break;
2643 case GL_DISTANCE_ATTENUATION_EXT:
2644 params[0] = ctx->Point.Params[0];
2645 params[1] = ctx->Point.Params[1];
2646 params[2] = ctx->Point.Params[2];
2647 break;
2648 case GL_POLYGON_MODE:
2649 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
2650 params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
2651 break;
2652 case GL_POLYGON_OFFSET_BIAS_EXT:
2653 params[0] = ctx->Polygon.OffsetUnits;
2654 break;
2655 case GL_POLYGON_OFFSET_FACTOR:
2656 params[0] = ctx->Polygon.OffsetFactor ;
2657 break;
2658 case GL_POLYGON_OFFSET_UNITS:
2659 params[0] = ctx->Polygon.OffsetUnits ;
2660 break;
2661 case GL_POLYGON_OFFSET_POINT:
2662 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint);
2663 break;
2664 case GL_POLYGON_OFFSET_LINE:
2665 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine);
2666 break;
2667 case GL_POLYGON_OFFSET_FILL:
2668 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill);
2669 break;
2670 case GL_POLYGON_SMOOTH:
2671 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
2672 break;
2673 case GL_POLYGON_SMOOTH_HINT:
2674 params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
2675 break;
2676 case GL_POLYGON_STIPPLE:
2677 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
2678 break;
2679 case GL_PROJECTION_MATRIX:
2680 {
2681 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
2682 params[0] = matrix[0];
2683 params[1] = matrix[1];
2684 params[2] = matrix[2];
2685 params[3] = matrix[3];
2686 params[4] = matrix[4];
2687 params[5] = matrix[5];
2688 params[6] = matrix[6];
2689 params[7] = matrix[7];
2690 params[8] = matrix[8];
2691 params[9] = matrix[9];
2692 params[10] = matrix[10];
2693 params[11] = matrix[11];
2694 params[12] = matrix[12];
2695 params[13] = matrix[13];
2696 params[14] = matrix[14];
2697 params[15] = matrix[15];
2698 }
2699 break;
2700 case GL_PROJECTION_STACK_DEPTH:
2701 params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
2702 break;
2703 case GL_READ_BUFFER:
2704 params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
2705 break;
2706 case GL_RED_BIAS:
2707 params[0] = ctx->Pixel.RedBias;
2708 break;
2709 case GL_RED_BITS:
2710 if (ctx->NewState & _NEW_BUFFERS)
2711 _mesa_update_state(ctx);
2712 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits);
2713 break;
2714 case GL_RED_SCALE:
2715 params[0] = ctx->Pixel.RedScale;
2716 break;
2717 case GL_RENDER_MODE:
2718 params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
2719 break;
2720 case GL_RESCALE_NORMAL:
2721 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
2722 break;
2723 case GL_RGBA_MODE:
2724 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
2725 break;
2726 case GL_SCISSOR_BOX:
2727 params[0] = (GLfloat)(ctx->Scissor.X);
2728 params[1] = (GLfloat)(ctx->Scissor.Y);
2729 params[2] = (GLfloat)(ctx->Scissor.Width);
2730 params[3] = (GLfloat)(ctx->Scissor.Height);
2731 break;
2732 case GL_SCISSOR_TEST:
2733 params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
2734 break;
2735 case GL_SELECTION_BUFFER_SIZE:
2736 params[0] = (GLfloat)(ctx->Select.BufferSize);
2737 break;
2738 case GL_SHADE_MODEL:
2739 params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
2740 break;
2741 case GL_SHARED_TEXTURE_PALETTE_EXT:
2742 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
2743 break;
2744 case GL_STENCIL_BITS:
2745 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
2746 break;
2747 case GL_STENCIL_CLEAR_VALUE:
2748 params[0] = (GLfloat)(ctx->Stencil.Clear);
2749 break;
2750 case GL_STENCIL_FAIL:
2751 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
2752 break;
2753 case GL_STENCIL_FUNC:
2754 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
2755 break;
2756 case GL_STENCIL_PASS_DEPTH_FAIL:
2757 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
2758 break;
2759 case GL_STENCIL_PASS_DEPTH_PASS:
2760 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
2761 break;
2762 case GL_STENCIL_REF:
2763 params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
2764 break;
2765 case GL_STENCIL_TEST:
2766 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
2767 break;
2768 case GL_STENCIL_VALUE_MASK:
2769 params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
2770 break;
2771 case GL_STENCIL_WRITEMASK:
2772 params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
2773 break;
2774 case GL_STEREO:
2775 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
2776 break;
2777 case GL_SUBPIXEL_BITS:
2778 params[0] = (GLfloat)(ctx->Const.SubPixelBits);
2779 break;
2780 case GL_TEXTURE_1D:
2781 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
2782 break;
2783 case GL_TEXTURE_2D:
2784 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
2785 break;
2786 case GL_TEXTURE_3D:
2787 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
2788 break;
2789 case GL_TEXTURE_1D_ARRAY_EXT:
2790 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2791 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
2792 break;
2793 case GL_TEXTURE_2D_ARRAY_EXT:
2794 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2795 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
2796 break;
2797 case GL_TEXTURE_BINDING_1D:
2798 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
2799 break;
2800 case GL_TEXTURE_BINDING_2D:
2801 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
2802 break;
2803 case GL_TEXTURE_BINDING_3D:
2804 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
2805 break;
2806 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
2807 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2808 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
2809 break;
2810 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
2811 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2812 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
2813 break;
2814 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
2815 CHECK_EXT1(MESA_texture_array, "GetFloatv");
2816 params[0] = (GLfloat)(ctx->Const.MaxArrayTextureLayers);
2817 break;
2818 case GL_TEXTURE_GEN_S:
2819 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
2820 break;
2821 case GL_TEXTURE_GEN_T:
2822 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
2823 break;
2824 case GL_TEXTURE_GEN_R:
2825 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
2826 break;
2827 case GL_TEXTURE_GEN_Q:
2828 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
2829 break;
2830 case GL_TEXTURE_MATRIX:
2831 {
2832 const GLfloat *matrix;
2833 const GLuint unit = ctx->Texture.CurrentUnit;
2834 if (unit >= ctx->Const.MaxTextureCoordUnits) {
2835 _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
2836 unit);
2837 return;
2838 }
2839 matrix = ctx->TextureMatrixStack[unit].Top->m;
2840 params[0] = matrix[0];
2841 params[1] = matrix[1];
2842 params[2] = matrix[2];
2843 params[3] = matrix[3];
2844 params[4] = matrix[4];
2845 params[5] = matrix[5];
2846 params[6] = matrix[6];
2847 params[7] = matrix[7];
2848 params[8] = matrix[8];
2849 params[9] = matrix[9];
2850 params[10] = matrix[10];
2851 params[11] = matrix[11];
2852 params[12] = matrix[12];
2853 params[13] = matrix[13];
2854 params[14] = matrix[14];
2855 params[15] = matrix[15];
2856 }
2857 break;
2858 case GL_TEXTURE_STACK_DEPTH:
2859 {
2860 const GLuint unit = ctx->Texture.CurrentUnit;
2861 if (unit >= ctx->Const.MaxTextureCoordUnits) {
2862 _mesa_error(ctx, GL_INVALID_OPERATION,
2863 "glGet(texture stack depth, unit %u)", unit);
2864 return;
2865 }
2866 params[0] = (GLfloat)(ctx->TextureMatrixStack[unit].Depth + 1);
2867 }
2868 break;
2869 case GL_UNPACK_ALIGNMENT:
2870 params[0] = (GLfloat)(ctx->Unpack.Alignment);
2871 break;
2872 case GL_UNPACK_LSB_FIRST:
2873 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
2874 break;
2875 case GL_UNPACK_ROW_LENGTH:
2876 params[0] = (GLfloat)(ctx->Unpack.RowLength);
2877 break;
2878 case GL_UNPACK_SKIP_PIXELS:
2879 params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
2880 break;
2881 case GL_UNPACK_SKIP_ROWS:
2882 params[0] = (GLfloat)(ctx->Unpack.SkipRows);
2883 break;
2884 case GL_UNPACK_SWAP_BYTES:
2885 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
2886 break;
2887 case GL_UNPACK_SKIP_IMAGES_EXT:
2888 params[0] = (GLfloat)(ctx->Unpack.SkipImages);
2889 break;
2890 case GL_UNPACK_IMAGE_HEIGHT_EXT:
2891 params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
2892 break;
2893 case GL_UNPACK_CLIENT_STORAGE_APPLE:
2894 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
2895 break;
2896 case GL_VIEWPORT:
2897 params[0] = (GLfloat)(ctx->Viewport.X);
2898 params[1] = (GLfloat)(ctx->Viewport.Y);
2899 params[2] = (GLfloat)(ctx->Viewport.Width);
2900 params[3] = (GLfloat)(ctx->Viewport.Height);
2901 break;
2902 case GL_ZOOM_X:
2903 params[0] = ctx->Pixel.ZoomX;
2904 break;
2905 case GL_ZOOM_Y:
2906 params[0] = ctx->Pixel.ZoomY;
2907 break;
2908 case GL_VERTEX_ARRAY:
2909 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
2910 break;
2911 case GL_VERTEX_ARRAY_SIZE:
2912 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
2913 break;
2914 case GL_VERTEX_ARRAY_TYPE:
2915 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
2916 break;
2917 case GL_VERTEX_ARRAY_STRIDE:
2918 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
2919 break;
2920 case GL_VERTEX_ARRAY_COUNT_EXT:
2921 params[0] = (GLfloat)(0);
2922 break;
2923 case GL_NORMAL_ARRAY:
2924 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
2925 break;
2926 case GL_NORMAL_ARRAY_TYPE:
2927 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
2928 break;
2929 case GL_NORMAL_ARRAY_STRIDE:
2930 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
2931 break;
2932 case GL_NORMAL_ARRAY_COUNT_EXT:
2933 params[0] = (GLfloat)(0);
2934 break;
2935 case GL_COLOR_ARRAY:
2936 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
2937 break;
2938 case GL_COLOR_ARRAY_SIZE:
2939 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
2940 break;
2941 case GL_COLOR_ARRAY_TYPE:
2942 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
2943 break;
2944 case GL_COLOR_ARRAY_STRIDE:
2945 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
2946 break;
2947 case GL_COLOR_ARRAY_COUNT_EXT:
2948 params[0] = (GLfloat)(0);
2949 break;
2950 case GL_INDEX_ARRAY:
2951 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
2952 break;
2953 case GL_INDEX_ARRAY_TYPE:
2954 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
2955 break;
2956 case GL_INDEX_ARRAY_STRIDE:
2957 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
2958 break;
2959 case GL_INDEX_ARRAY_COUNT_EXT:
2960 params[0] = (GLfloat)(0);
2961 break;
2962 case GL_TEXTURE_COORD_ARRAY:
2963 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
2964 break;
2965 case GL_TEXTURE_COORD_ARRAY_SIZE:
2966 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
2967 break;
2968 case GL_TEXTURE_COORD_ARRAY_TYPE:
2969 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
2970 break;
2971 case GL_TEXTURE_COORD_ARRAY_STRIDE:
2972 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
2973 break;
2974 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
2975 params[0] = (GLfloat)(0);
2976 break;
2977 case GL_EDGE_FLAG_ARRAY:
2978 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
2979 break;
2980 case GL_EDGE_FLAG_ARRAY_STRIDE:
2981 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
2982 break;
2983 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
2984 params[0] = (GLfloat)(0);
2985 break;
2986 case GL_MAX_TEXTURE_UNITS_ARB:
2987 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2988 params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
2989 break;
2990 case GL_ACTIVE_TEXTURE_ARB:
2991 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2992 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
2993 break;
2994 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
2995 CHECK_EXT1(ARB_multitexture, "GetFloatv");
2996 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
2997 break;
2998 case GL_TEXTURE_CUBE_MAP_ARB:
2999 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
3000 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
3001 break;
3002 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
3003 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
3004 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
3005 break;
3006 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
3007 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
3008 params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
3009 break;
3010 case GL_TEXTURE_COMPRESSION_HINT_ARB:
3011 params[0] = (GLfloat)(ctx->Hint.TextureCompression);
3012 break;
3013 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
3014 params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
3015 break;
3016 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
3017 {
3018 GLint formats[100];
3019 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
3020 ASSERT(n <= 100);
3021 for (i = 0; i < n; i++)
3022 params[i] = ENUM_TO_FLOAT(formats[i]);
3023 }
3024 break;
3025 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
3026 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
3027 params[0] = (GLfloat)(ctx->Array.LockFirst);
3028 break;
3029 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
3030 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
3031 params[0] = (GLfloat)(ctx->Array.LockCount);
3032 break;
3033 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
3034 {
3035 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
3036 params[0] = matrix[0];
3037 params[1] = matrix[4];
3038 params[2] = matrix[8];
3039 params[3] = matrix[12];
3040 params[4] = matrix[1];
3041 params[5] = matrix[5];
3042 params[6] = matrix[9];
3043 params[7] = matrix[13];
3044 params[8] = matrix[2];
3045 params[9] = matrix[6];
3046 params[10] = matrix[10];
3047 params[11] = matrix[14];
3048 params[12] = matrix[3];
3049 params[13] = matrix[7];
3050 params[14] = matrix[11];
3051 params[15] = matrix[15];
3052 }
3053 break;
3054 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
3055 {
3056 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
3057 params[0] = matrix[0];
3058 params[1] = matrix[4];
3059 params[2] = matrix[8];
3060 params[3] = matrix[12];
3061 params[4] = matrix[1];
3062 params[5] = matrix[5];
3063 params[6] = matrix[9];
3064 params[7] = matrix[13];
3065 params[8] = matrix[2];
3066 params[9] = matrix[6];
3067 params[10] = matrix[10];
3068 params[11] = matrix[14];
3069 params[12] = matrix[3];
3070 params[13] = matrix[7];
3071 params[14] = matrix[11];
3072 params[15] = matrix[15];
3073 }
3074 break;
3075 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
3076 {
3077 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
3078 params[0] = matrix[0];
3079 params[1] = matrix[4];
3080 params[2] = matrix[8];
3081 params[3] = matrix[12];
3082 params[4] = matrix[1];
3083 params[5] = matrix[5];
3084 params[6] = matrix[9];
3085 params[7] = matrix[13];
3086 params[8] = matrix[2];
3087 params[9] = matrix[6];
3088 params[10] = matrix[10];
3089 params[11] = matrix[14];
3090 params[12] = matrix[3];
3091 params[13] = matrix[7];
3092 params[14] = matrix[11];
3093 params[15] = matrix[15];
3094 }
3095 break;
3096 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
3097 {
3098 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
3099 params[0] = matrix[0];
3100 params[1] = matrix[4];
3101 params[2] = matrix[8];
3102 params[3] = matrix[12];
3103 params[4] = matrix[1];
3104 params[5] = matrix[5];
3105 params[6] = matrix[9];
3106 params[7] = matrix[13];
3107 params[8] = matrix[2];
3108 params[9] = matrix[6];
3109 params[10] = matrix[10];
3110 params[11] = matrix[14];
3111 params[12] = matrix[3];
3112 params[13] = matrix[7];
3113 params[14] = matrix[11];
3114 params[15] = matrix[15];
3115 }
3116 break;
3117 case GL_COLOR_MATRIX_SGI:
3118 {
3119 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
3120 params[0] = matrix[0];
3121 params[1] = matrix[1];
3122 params[2] = matrix[2];
3123 params[3] = matrix[3];
3124 params[4] = matrix[4];
3125 params[5] = matrix[5];
3126 params[6] = matrix[6];
3127 params[7] = matrix[7];
3128 params[8] = matrix[8];
3129 params[9] = matrix[9];
3130 params[10] = matrix[10];
3131 params[11] = matrix[11];
3132 params[12] = matrix[12];
3133 params[13] = matrix[13];
3134 params[14] = matrix[14];
3135 params[15] = matrix[15];
3136 }
3137 break;
3138 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
3139 params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
3140 break;
3141 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
3142 params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
3143 break;
3144 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
3145 params[0] = ctx->Pixel.PostColorMatrixScale[0];
3146 break;
3147 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
3148 params[0] = ctx->Pixel.PostColorMatrixScale[1];
3149 break;
3150 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
3151 params[0] = ctx->Pixel.PostColorMatrixScale[2];
3152 break;
3153 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
3154 params[0] = ctx->Pixel.PostColorMatrixScale[3];
3155 break;
3156 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
3157 params[0] = ctx->Pixel.PostColorMatrixBias[0];
3158 break;
3159 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
3160 params[0] = ctx->Pixel.PostColorMatrixBias[1];
3161 break;
3162 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
3163 params[0] = ctx->Pixel.PostColorMatrixBias[2];
3164 break;
3165 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
3166 params[0] = ctx->Pixel.PostColorMatrixBias[3];
3167 break;
3168 case GL_CONVOLUTION_1D_EXT:
3169 CHECK_EXT1(EXT_convolution, "GetFloatv");
3170 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
3171 break;
3172 case GL_CONVOLUTION_2D_EXT:
3173 CHECK_EXT1(EXT_convolution, "GetFloatv");
3174 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
3175 break;
3176 case GL_SEPARABLE_2D_EXT:
3177 CHECK_EXT1(EXT_convolution, "GetFloatv");
3178 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
3179 break;
3180 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
3181 CHECK_EXT1(EXT_convolution, "GetFloatv");
3182 params[0] = ctx->Pixel.PostConvolutionScale[0];
3183 break;
3184 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
3185 CHECK_EXT1(EXT_convolution, "GetFloatv");
3186 params[0] = ctx->Pixel.PostConvolutionScale[1];
3187 break;
3188 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
3189 CHECK_EXT1(EXT_convolution, "GetFloatv");
3190 params[0] = ctx->Pixel.PostConvolutionScale[2];
3191 break;
3192 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
3193 CHECK_EXT1(EXT_convolution, "GetFloatv");
3194 params[0] = ctx->Pixel.PostConvolutionScale[3];
3195 break;
3196 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
3197 CHECK_EXT1(EXT_convolution, "GetFloatv");
3198 params[0] = ctx->Pixel.PostConvolutionBias[0];
3199 break;
3200 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
3201 CHECK_EXT1(EXT_convolution, "GetFloatv");
3202 params[0] = ctx->Pixel.PostConvolutionBias[1];
3203 break;
3204 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
3205 CHECK_EXT1(EXT_convolution, "GetFloatv");
3206 params[0] = ctx->Pixel.PostConvolutionBias[2];
3207 break;
3208 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
3209 CHECK_EXT1(EXT_convolution, "GetFloatv");
3210 params[0] = ctx->Pixel.PostConvolutionBias[3];
3211 break;
3212 case GL_HISTOGRAM:
3213 CHECK_EXT1(EXT_histogram, "GetFloatv");
3214 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
3215 break;
3216 case GL_MINMAX:
3217 CHECK_EXT1(EXT_histogram, "GetFloatv");
3218 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
3219 break;
3220 case GL_COLOR_TABLE_SGI:
3221 CHECK_EXT1(SGI_color_table, "GetFloatv");
3222 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
3223 break;
3224 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
3225 CHECK_EXT1(SGI_color_table, "GetFloatv");
3226 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
3227 break;
3228 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
3229 CHECK_EXT1(SGI_color_table, "GetFloatv");
3230 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
3231 break;
3232 case GL_TEXTURE_COLOR_TABLE_SGI:
3233 CHECK_EXT1(SGI_texture_color_table, "GetFloatv");
3234 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
3235 break;
3236 case GL_COLOR_SUM_EXT:
3237 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv");
3238 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
3239 break;
3240 case GL_CURRENT_SECONDARY_COLOR_EXT:
3241 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3242 FLUSH_CURRENT(ctx, 0);
3243 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
3244 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
3245 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
3246 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
3247 break;
3248 case GL_SECONDARY_COLOR_ARRAY_EXT:
3249 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3250 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
3251 break;
3252 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
3253 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3254 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
3255 break;
3256 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
3257 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3258 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
3259 break;
3260 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
3261 CHECK_EXT1(EXT_secondary_color, "GetFloatv");
3262 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
3263 break;
3264 case GL_CURRENT_FOG_COORDINATE_EXT:
3265 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3266 FLUSH_CURRENT(ctx, 0);
3267 params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
3268 break;
3269 case GL_FOG_COORDINATE_ARRAY_EXT:
3270 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3271 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
3272 break;
3273 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
3274 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3275 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
3276 break;
3277 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
3278 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3279 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
3280 break;
3281 case GL_FOG_COORDINATE_SOURCE_EXT:
3282 CHECK_EXT1(EXT_fog_coord, "GetFloatv");
3283 params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
3284 break;
3285 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
3286 CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv");
3287 params[0] = ctx->Const.MaxTextureLodBias;
3288 break;
3289 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
3290 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv");
3291 params[0] = ctx->Const.MaxTextureMaxAnisotropy;
3292 break;
3293 case GL_MULTISAMPLE_ARB:
3294 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
3295 break;
3296 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
3297 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
3298 break;
3299 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
3300 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
3301 break;
3302 case GL_SAMPLE_COVERAGE_ARB:
3303 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
3304 break;
3305 case GL_SAMPLE_COVERAGE_VALUE_ARB:
3306 params[0] = ctx->Multisample.SampleCoverageValue;
3307 break;
3308 case GL_SAMPLE_COVERAGE_INVERT_ARB:
3309 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
3310 break;
3311 case GL_SAMPLE_BUFFERS_ARB:
3312 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
3313 break;
3314 case GL_SAMPLES_ARB:
3315 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
3316 break;
3317 case GL_RASTER_POSITION_UNCLIPPED_IBM:
3318 CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv");
3319 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
3320 break;
3321 case GL_POINT_SPRITE_NV:
3322 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
3323 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
3324 break;
3325 case GL_POINT_SPRITE_R_MODE_NV:
3326 CHECK_EXT1(NV_point_sprite, "GetFloatv");
3327 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
3328 break;
3329 case GL_POINT_SPRITE_COORD_ORIGIN:
3330 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
3331 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
3332 break;
3333 case GL_GENERATE_MIPMAP_HINT_SGIS:
3334 CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv");
3335 params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
3336 break;
3337 case GL_VERTEX_PROGRAM_BINDING_NV:
3338 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3339 params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
3340 break;
3341 case GL_VERTEX_ATTRIB_ARRAY0_NV:
3342 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3343 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
3344 break;
3345 case GL_VERTEX_ATTRIB_ARRAY1_NV:
3346 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3347 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
3348 break;
3349 case GL_VERTEX_ATTRIB_ARRAY2_NV:
3350 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3351 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
3352 break;
3353 case GL_VERTEX_ATTRIB_ARRAY3_NV:
3354 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3355 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
3356 break;
3357 case GL_VERTEX_ATTRIB_ARRAY4_NV:
3358 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3359 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
3360 break;
3361 case GL_VERTEX_ATTRIB_ARRAY5_NV:
3362 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3363 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
3364 break;
3365 case GL_VERTEX_ATTRIB_ARRAY6_NV:
3366 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3367 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
3368 break;
3369 case GL_VERTEX_ATTRIB_ARRAY7_NV:
3370 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3371 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
3372 break;
3373 case GL_VERTEX_ATTRIB_ARRAY8_NV:
3374 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3375 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
3376 break;
3377 case GL_VERTEX_ATTRIB_ARRAY9_NV:
3378 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3379 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
3380 break;
3381 case GL_VERTEX_ATTRIB_ARRAY10_NV:
3382 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3383 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
3384 break;
3385 case GL_VERTEX_ATTRIB_ARRAY11_NV:
3386 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3387 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
3388 break;
3389 case GL_VERTEX_ATTRIB_ARRAY12_NV:
3390 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3391 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
3392 break;
3393 case GL_VERTEX_ATTRIB_ARRAY13_NV:
3394 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3395 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
3396 break;
3397 case GL_VERTEX_ATTRIB_ARRAY14_NV:
3398 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3399 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
3400 break;
3401 case GL_VERTEX_ATTRIB_ARRAY15_NV:
3402 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3403 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
3404 break;
3405 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
3406 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3407 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
3408 break;
3409 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
3410 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3411 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
3412 break;
3413 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
3414 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3415 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
3416 break;
3417 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
3418 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3419 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
3420 break;
3421 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
3422 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3423 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
3424 break;
3425 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
3426 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3427 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
3428 break;
3429 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
3430 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3431 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
3432 break;
3433 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
3434 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3435 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
3436 break;
3437 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
3438 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3439 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
3440 break;
3441 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
3442 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3443 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
3444 break;
3445 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
3446 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3447 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
3448 break;
3449 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
3450 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3451 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
3452 break;
3453 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
3454 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3455 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
3456 break;
3457 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
3458 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3459 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
3460 break;
3461 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
3462 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3463 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
3464 break;
3465 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
3466 CHECK_EXT1(NV_vertex_program, "GetFloatv");
3467 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
3468 break;
3469 case GL_FRAGMENT_PROGRAM_NV:
3470 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3471 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3472 break;
3473 case GL_FRAGMENT_PROGRAM_BINDING_NV:
3474 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3475 params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
3476 break;
3477 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
3478 CHECK_EXT1(NV_fragment_program, "GetFloatv");
3479 params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
3480 break;
3481 case GL_TEXTURE_RECTANGLE_NV:
3482 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3483 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
3484 break;
3485 case GL_TEXTURE_BINDING_RECTANGLE_NV:
3486 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3487 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
3488 break;
3489 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
3490 CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
3491 params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
3492 break;
3493 case GL_STENCIL_TEST_TWO_SIDE_EXT:
3494 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
3495 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
3496 break;
3497 case GL_ACTIVE_STENCIL_FACE_EXT:
3498 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
3499 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
3500 break;
3501 case GL_MAX_SHININESS_NV:
3502 CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
3503 params[0] = ctx->Const.MaxShininess;
3504 break;
3505 case GL_MAX_SPOT_EXPONENT_NV:
3506 CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
3507 params[0] = ctx->Const.MaxSpotExponent;
3508 break;
3509 case GL_ARRAY_BUFFER_BINDING_ARB:
3510 params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
3511 break;
3512 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
3513 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
3514 break;
3515 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
3516 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
3517 break;
3518 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
3519 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
3520 break;
3521 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
3522 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
3523 break;
3524 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
3525 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
3526 break;
3527 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
3528 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
3529 break;
3530 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
3531 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
3532 break;
3533 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
3534 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
3535 break;
3536 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
3537 params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
3538 break;
3539 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
3540 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
3541 params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
3542 break;
3543 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
3544 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
3545 params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
3546 break;
3547 case GL_VERTEX_PROGRAM_ARB:
3548 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3549 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
3550 break;
3551 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
3552 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3553 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
3554 break;
3555 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
3556 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
3557 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
3558 break;
3559 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
3560 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3561 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
3562 break;
3563 case GL_MAX_PROGRAM_MATRICES_ARB:
3564 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3565 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
3566 break;
3567 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
3568 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
3569 params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
3570 break;
3571 case GL_CURRENT_MATRIX_ARB:
3572 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv");
3573 {
3574 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3575 params[0] = matrix[0];
3576 params[1] = matrix[1];
3577 params[2] = matrix[2];
3578 params[3] = matrix[3];
3579 params[4] = matrix[4];
3580 params[5] = matrix[5];
3581 params[6] = matrix[6];
3582 params[7] = matrix[7];
3583 params[8] = matrix[8];
3584 params[9] = matrix[9];
3585 params[10] = matrix[10];
3586 params[11] = matrix[11];
3587 params[12] = matrix[12];
3588 params[13] = matrix[13];
3589 params[14] = matrix[14];
3590 params[15] = matrix[15];
3591 }
3592 break;
3593 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
3594 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv");
3595 {
3596 const GLfloat *matrix = ctx->CurrentStack->Top->m;
3597 params[0] = matrix[0];
3598 params[1] = matrix[4];
3599 params[2] = matrix[8];
3600 params[3] = matrix[12];
3601 params[4] = matrix[1];
3602 params[5] = matrix[5];
3603 params[6] = matrix[9];
3604 params[7] = matrix[13];
3605 params[8] = matrix[2];
3606 params[9] = matrix[6];
3607 params[10] = matrix[10];
3608 params[11] = matrix[14];
3609 params[12] = matrix[3];
3610 params[13] = matrix[7];
3611 params[14] = matrix[11];
3612 params[15] = matrix[15];
3613 }
3614 break;
3615 case GL_MAX_VERTEX_ATTRIBS_ARB:
3616 CHECK_EXT1(ARB_vertex_program, "GetFloatv");
3617 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
3618 break;
3619 case GL_PROGRAM_ERROR_POSITION_ARB:
3620 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv");
3621 params[0] = (GLfloat)(ctx->Program.ErrorPos);
3622 break;
3623 case GL_FRAGMENT_PROGRAM_ARB:
3624 CHECK_EXT1(ARB_fragment_program, "GetFloatv");
3625 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
3626 break;
3627 case GL_MAX_TEXTURE_COORDS_ARB:
3628 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
3629 params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
3630 break;
3631 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
3632 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
3633 params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
3634 break;
3635 case GL_DEPTH_BOUNDS_TEST_EXT:
3636 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
3637 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
3638 break;
3639 case GL_DEPTH_BOUNDS_EXT:
3640 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
3641 params[0] = ctx->Depth.BoundsMin;
3642 params[1] = ctx->Depth.BoundsMax;
3643 break;
3644 case GL_DEPTH_CLAMP:
3645 CHECK_EXT1(ARB_depth_clamp, "GetFloatv");
3646 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.DepthClamp);
3647 break;
3648 case GL_MAX_DRAW_BUFFERS_ARB:
3649 params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
3650 break;
3651 case GL_DRAW_BUFFER0_ARB:
3652 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
3653 break;
3654 case GL_DRAW_BUFFER1_ARB:
3655 {
3656 GLenum buffer;
3657 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3658 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3659 return;
3660 }
3661 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
3662 params[0] = ENUM_TO_FLOAT(buffer);
3663 }
3664 break;
3665 case GL_DRAW_BUFFER2_ARB:
3666 {
3667 GLenum buffer;
3668 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3669 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3670 return;
3671 }
3672 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
3673 params[0] = ENUM_TO_FLOAT(buffer);
3674 }
3675 break;
3676 case GL_DRAW_BUFFER3_ARB:
3677 {
3678 GLenum buffer;
3679 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
3680 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
3681 return;
3682 }
3683 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
3684 params[0] = ENUM_TO_FLOAT(buffer);
3685 }
3686 break;
3687 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
3688 CHECK_EXT1(OES_read_format, "GetFloatv");
3689 if (ctx->NewState & _NEW_BUFFERS)
3690 _mesa_update_state(ctx);
3691 params[0] = (GLfloat)(_mesa_get_color_read_type(ctx));
3692 break;
3693 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
3694 CHECK_EXT1(OES_read_format, "GetFloatv");
3695 if (ctx->NewState & _NEW_BUFFERS)
3696 _mesa_update_state(ctx);
3697 params[0] = (GLfloat)(_mesa_get_color_read_format(ctx));
3698 break;
3699 case GL_NUM_FRAGMENT_REGISTERS_ATI:
3700 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3701 params[0] = (GLfloat)(6);
3702 break;
3703 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
3704 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3705 params[0] = (GLfloat)(8);
3706 break;
3707 case GL_NUM_PASSES_ATI:
3708 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3709 params[0] = (GLfloat)(2);
3710 break;
3711 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
3712 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3713 params[0] = (GLfloat)(8);
3714 break;
3715 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
3716 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3717 params[0] = (GLfloat)(16);
3718 break;
3719 case GL_COLOR_ALPHA_PAIRING_ATI:
3720 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3721 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
3722 break;
3723 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
3724 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3725 params[0] = (GLfloat)(3);
3726 break;
3727 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
3728 CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
3729 params[0] = (GLfloat)(3);
3730 break;
3731 case GL_STENCIL_BACK_FUNC:
3732 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
3733 break;
3734 case GL_STENCIL_BACK_VALUE_MASK:
3735 params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
3736 break;
3737 case GL_STENCIL_BACK_WRITEMASK:
3738 params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]);
3739 break;
3740 case GL_STENCIL_BACK_REF:
3741 params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
3742 break;
3743 case GL_STENCIL_BACK_FAIL:
3744 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
3745 break;
3746 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
3747 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
3748 break;
3749 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
3750 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
3751 break;
3752 case GL_FRAMEBUFFER_BINDING_EXT:
3753 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3754 params[0] = (GLfloat)(ctx->DrawBuffer->Name);
3755 break;
3756 case GL_RENDERBUFFER_BINDING_EXT:
3757 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3758 params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
3759 break;
3760 case GL_MAX_COLOR_ATTACHMENTS_EXT:
3761 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3762 params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
3763 break;
3764 case GL_MAX_RENDERBUFFER_SIZE_EXT:
3765 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
3766 params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
3767 break;
3768 case GL_READ_FRAMEBUFFER_BINDING_EXT:
3769 CHECK_EXT1(EXT_framebuffer_blit, "GetFloatv");
3770 params[0] = (GLfloat)(ctx->ReadBuffer->Name);
3771 break;
3772 case GL_PROVOKING_VERTEX_EXT:
3773 CHECK_EXT1(EXT_provoking_vertex, "GetFloatv");
3774 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ProvokingVertex);
3775 break;
3776 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
3777 CHECK_EXT1(EXT_provoking_vertex, "GetFloatv");
3778 params[0] = BOOLEAN_TO_FLOAT(ctx->Const.QuadsFollowProvokingVertexConvention);
3779 break;
3780 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
3781 CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
3782 params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents);
3783 break;
3784 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
3785 CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
3786 params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
3787 break;
3788 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
3789 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3790 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents);
3791 break;
3792 case GL_MAX_VARYING_FLOATS_ARB:
3793 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3794 params[0] = (GLfloat)(ctx->Const.MaxVarying * 4);
3795 break;
3796 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
3797 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3798 params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits);
3799 break;
3800 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
3801 CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
3802 params[0] = (GLfloat)(ctx->Const.MaxCombinedTextureImageUnits);
3803 break;
3804 case GL_CURRENT_PROGRAM:
3805 CHECK_EXT1(ARB_shader_objects, "GetFloatv");
3806 params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
3807 break;
3808 case GL_MAX_SAMPLES:
3809 CHECK_EXT1(ARB_framebuffer_object, "GetFloatv");
3810 params[0] = (GLfloat)(ctx->Const.MaxSamples);
3811 break;
3812 case GL_VERTEX_ARRAY_BINDING_APPLE:
3813 CHECK_EXT1(APPLE_vertex_array_object, "GetFloatv");
3814 params[0] = (GLfloat)(ctx->Array.ArrayObj->Name);
3815 break;
3816 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
3817 CHECK_EXT1(ARB_seamless_cube_map, "GetFloatv");
3818 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.CubeMapSeamless);
3819 break;
3820 case GL_MAX_SERVER_WAIT_TIMEOUT:
3821 CHECK_EXT1(ARB_sync, "GetFloatv");
3822 params[0] = (GLfloat)(ctx->Const.MaxServerWaitTimeout);
3823 break;
3824 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
3825 CHECK_EXT1(EXT_transform_feedback, "GetFloatv");
3826 params[0] = (GLfloat)(ctx->TransformFeedback.CurrentBuffer->Name);
3827 break;
3828 case GL_RASTERIZER_DISCARD:
3829 CHECK_EXT1(EXT_transform_feedback, "GetFloatv");
3830 params[0] = BOOLEAN_TO_FLOAT(ctx->TransformFeedback.RasterDiscard);
3831 break;
3832 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
3833 CHECK_EXT1(EXT_transform_feedback, "GetFloatv");
3834 params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackInterleavedComponents);
3835 break;
3836 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
3837 CHECK_EXT1(EXT_transform_feedback, "GetFloatv");
3838 params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackSeparateAttribs);
3839 break;
3840 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
3841 CHECK_EXT1(EXT_transform_feedback, "GetFloatv");
3842 params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackSeparateComponents);
3843 break;
3844 case GL_NUM_EXTENSIONS:
3845 params[0] = (GLfloat)(_mesa_get_extension_count(ctx));
3846 break;
3847 case GL_MAJOR_VERSION:
3848 params[0] = (GLfloat)(ctx->VersionMajor);
3849 break;
3850 case GL_MINOR_VERSION:
3851 params[0] = (GLfloat)(ctx->VersionMinor);
3852 break;
3853 case GL_CONTEXT_FLAGS:
3854 params[0] = (GLfloat)(ctx->Const.ContextFlags);
3855 break;
3856 default:
3857 _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
3858 }
3859 }
3860
3861 void GLAPIENTRY
3862 _mesa_GetIntegerv( GLenum pname, GLint *params )
3863 {
3864 GET_CURRENT_CONTEXT(ctx);
3865 ASSERT_OUTSIDE_BEGIN_END(ctx);
3866
3867 if (!params)
3868 return;
3869
3870 if (ctx->Driver.GetIntegerv &&
3871 ctx->Driver.GetIntegerv(ctx, pname, params))
3872 return;
3873
3874 switch (pname) {
3875 case GL_ACCUM_RED_BITS:
3876 params[0] = ctx->DrawBuffer->Visual.accumRedBits;
3877 break;
3878 case GL_ACCUM_GREEN_BITS:
3879 params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
3880 break;
3881 case GL_ACCUM_BLUE_BITS:
3882 params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
3883 break;
3884 case GL_ACCUM_ALPHA_BITS:
3885 params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
3886 break;
3887 case GL_ACCUM_CLEAR_VALUE:
3888 params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
3889 params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
3890 params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
3891 params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
3892 break;
3893 case GL_ALPHA_BIAS:
3894 params[0] = IROUND(ctx->Pixel.AlphaBias);
3895 break;
3896 case GL_ALPHA_BITS:
3897 if (ctx->NewState & _NEW_BUFFERS)
3898 _mesa_update_state(ctx);
3899 params[0] = ctx->DrawBuffer->Visual.alphaBits;
3900 break;
3901 case GL_ALPHA_SCALE:
3902 params[0] = IROUND(ctx->Pixel.AlphaScale);
3903 break;
3904 case GL_ALPHA_TEST:
3905 params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
3906 break;
3907 case GL_ALPHA_TEST_FUNC:
3908 params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
3909 break;
3910 case GL_ALPHA_TEST_REF:
3911 params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
3912 break;
3913 case GL_ATTRIB_STACK_DEPTH:
3914 params[0] = ctx->AttribStackDepth;
3915 break;
3916 case GL_AUTO_NORMAL:
3917 params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
3918 break;
3919 case GL_AUX_BUFFERS:
3920 params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
3921 break;
3922 case GL_BLEND:
3923 params[0] = BOOLEAN_TO_INT((ctx->Color.BlendEnabled & 1));
3924 break;
3925 case GL_BLEND_DST:
3926 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3927 break;
3928 case GL_BLEND_SRC:
3929 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3930 break;
3931 case GL_BLEND_SRC_RGB_EXT:
3932 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
3933 break;
3934 case GL_BLEND_DST_RGB_EXT:
3935 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
3936 break;
3937 case GL_BLEND_SRC_ALPHA_EXT:
3938 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
3939 break;
3940 case GL_BLEND_DST_ALPHA_EXT:
3941 params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
3942 break;
3943 case GL_BLEND_EQUATION:
3944 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
3945 break;
3946 case GL_BLEND_EQUATION_ALPHA_EXT:
3947 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
3948 break;
3949 case GL_BLEND_COLOR_EXT:
3950 params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
3951 params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
3952 params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
3953 params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
3954 break;
3955 case GL_BLUE_BIAS:
3956 params[0] = IROUND(ctx->Pixel.BlueBias);
3957 break;
3958 case GL_BLUE_BITS:
3959 if (ctx->NewState & _NEW_BUFFERS)
3960 _mesa_update_state(ctx);
3961 params[0] = ctx->DrawBuffer->Visual.blueBits;
3962 break;
3963 case GL_BLUE_SCALE:
3964 params[0] = IROUND(ctx->Pixel.BlueScale);
3965 break;
3966 case GL_CLIENT_ATTRIB_STACK_DEPTH:
3967 params[0] = ctx->ClientAttribStackDepth;
3968 break;
3969 case GL_CLIP_PLANE0:
3970 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
3971 break;
3972 case GL_CLIP_PLANE1:
3973 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
3974 break;
3975 case GL_CLIP_PLANE2:
3976 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
3977 break;
3978 case GL_CLIP_PLANE3:
3979 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
3980 break;
3981 case GL_CLIP_PLANE4:
3982 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
3983 break;
3984 case GL_CLIP_PLANE5:
3985 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
3986 break;
3987 case GL_COLOR_CLEAR_VALUE:
3988 params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
3989 params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
3990 params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
3991 params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
3992 break;
3993 case GL_COLOR_MATERIAL:
3994 params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
3995 break;
3996 case GL_COLOR_MATERIAL_FACE:
3997 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
3998 break;
3999 case GL_COLOR_MATERIAL_PARAMETER:
4000 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
4001 break;
4002 case GL_COLOR_WRITEMASK:
4003 params[0] = ctx->Color.ColorMask[0][RCOMP] ? 1 : 0;
4004 params[1] = ctx->Color.ColorMask[0][GCOMP] ? 1 : 0;
4005 params[2] = ctx->Color.ColorMask[0][BCOMP] ? 1 : 0;
4006 params[3] = ctx->Color.ColorMask[0][ACOMP] ? 1 : 0;
4007 break;
4008 case GL_CULL_FACE:
4009 params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
4010 break;
4011 case GL_CULL_FACE_MODE:
4012 params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
4013 break;
4014 case GL_CURRENT_COLOR:
4015 FLUSH_CURRENT(ctx, 0);
4016 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
4017 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
4018 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
4019 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
4020 break;
4021 case GL_CURRENT_INDEX:
4022 FLUSH_CURRENT(ctx, 0);
4023 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
4024 break;
4025 case GL_CURRENT_NORMAL:
4026 FLUSH_CURRENT(ctx, 0);
4027 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
4028 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
4029 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
4030 break;
4031 case GL_CURRENT_RASTER_COLOR:
4032 params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
4033 params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
4034 params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
4035 params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
4036 break;
4037 case GL_CURRENT_RASTER_DISTANCE:
4038 params[0] = IROUND(ctx->Current.RasterDistance);
4039 break;
4040 case GL_CURRENT_RASTER_INDEX:
4041 params[0] = IROUND(1.0);
4042 break;
4043 case GL_CURRENT_RASTER_POSITION:
4044 params[0] = IROUND(ctx->Current.RasterPos[0]);
4045 params[1] = IROUND(ctx->Current.RasterPos[1]);
4046 params[2] = IROUND(ctx->Current.RasterPos[2]);
4047 params[3] = IROUND(ctx->Current.RasterPos[3]);
4048 break;
4049 case GL_CURRENT_RASTER_SECONDARY_COLOR:
4050 params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
4051 params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
4052 params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
4053 params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
4054 break;
4055 case GL_CURRENT_RASTER_TEXTURE_COORDS:
4056 {
4057 const GLuint unit = ctx->Texture.CurrentUnit;
4058 if (unit >= ctx->Const.MaxTextureCoordUnits) {
4059 _mesa_error(ctx, GL_INVALID_OPERATION,
4060 "glGet(raster tex coords, unit %u)", unit);
4061 return;
4062 }
4063 params[0] = IROUND(ctx->Current.RasterTexCoords[unit][0]);
4064 params[1] = IROUND(ctx->Current.RasterTexCoords[unit][1]);
4065 params[2] = IROUND(ctx->Current.RasterTexCoords[unit][2]);
4066 params[3] = IROUND(ctx->Current.RasterTexCoords[unit][3]);
4067 }
4068 break;
4069 case GL_CURRENT_RASTER_POSITION_VALID:
4070 params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
4071 break;
4072 case GL_CURRENT_TEXTURE_COORDS:
4073 {
4074 const GLuint unit = ctx->Texture.CurrentUnit;
4075 if (unit >= ctx->Const.MaxTextureCoordUnits) {
4076 _mesa_error(ctx, GL_INVALID_OPERATION,
4077 "glGet(current tex coords, unit %u)", unit);
4078 return;
4079 }
4080 FLUSH_CURRENT(ctx, 0);
4081 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]);
4082 params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]);
4083 params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]);
4084 params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]);
4085 }
4086 break;
4087 case GL_DEPTH_BIAS:
4088 params[0] = IROUND(ctx->Pixel.DepthBias);
4089 break;
4090 case GL_DEPTH_BITS:
4091 params[0] = ctx->DrawBuffer->Visual.depthBits;
4092 break;
4093 case GL_DEPTH_CLEAR_VALUE:
4094 params[0] = FLOAT_TO_INT(((GLfloat) ctx->Depth.Clear));
4095 break;
4096 case GL_DEPTH_FUNC:
4097 params[0] = ENUM_TO_INT(ctx->Depth.Func);
4098 break;
4099 case GL_DEPTH_RANGE:
4100 params[0] = FLOAT_TO_INT(ctx->Viewport.Near);
4101 params[1] = FLOAT_TO_INT(ctx->Viewport.Far);
4102 break;
4103 case GL_DEPTH_SCALE:
4104 params[0] = IROUND(ctx->Pixel.DepthScale);
4105 break;
4106 case GL_DEPTH_TEST:
4107 params[0] = BOOLEAN_TO_INT(ctx->Depth.Test);
4108 break;
4109 case GL_DEPTH_WRITEMASK:
4110 params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask);
4111 break;
4112 case GL_DITHER:
4113 params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag);
4114 break;
4115 case GL_DOUBLEBUFFER:
4116 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode);
4117 break;
4118 case GL_DRAW_BUFFER:
4119 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
4120 break;
4121 case GL_EDGE_FLAG:
4122 FLUSH_CURRENT(ctx, 0);
4123 params[0] = BOOLEAN_TO_INT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
4124 break;
4125 case GL_FEEDBACK_BUFFER_SIZE:
4126 params[0] = ctx->Feedback.BufferSize;
4127 break;
4128 case GL_FEEDBACK_BUFFER_TYPE:
4129 params[0] = ENUM_TO_INT(ctx->Feedback.Type);
4130 break;
4131 case GL_FOG:
4132 params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled);
4133 break;
4134 case GL_FOG_COLOR:
4135 params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]);
4136 params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]);
4137 params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]);
4138 params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]);
4139 break;
4140 case GL_FOG_DENSITY:
4141 params[0] = IROUND(ctx->Fog.Density);
4142 break;
4143 case GL_FOG_END:
4144 params[0] = IROUND(ctx->Fog.End);
4145 break;
4146 case GL_FOG_HINT:
4147 params[0] = ENUM_TO_INT(ctx->Hint.Fog);
4148 break;
4149 case GL_FOG_INDEX:
4150 params[0] = IROUND(ctx->Fog.Index);
4151 break;
4152 case GL_FOG_MODE:
4153 params[0] = ENUM_TO_INT(ctx->Fog.Mode);
4154 break;
4155 case GL_FOG_START:
4156 params[0] = IROUND(ctx->Fog.Start);
4157 break;
4158 case GL_FRONT_FACE:
4159 params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace);
4160 break;
4161 case GL_GREEN_BIAS:
4162 params[0] = IROUND(ctx->Pixel.GreenBias);
4163 break;
4164 case GL_GREEN_BITS:
4165 if (ctx->NewState & _NEW_BUFFERS)
4166 _mesa_update_state(ctx);
4167 params[0] = ctx->DrawBuffer->Visual.greenBits;
4168 break;
4169 case GL_GREEN_SCALE:
4170 params[0] = IROUND(ctx->Pixel.GreenScale);
4171 break;
4172 case GL_INDEX_BITS:
4173 if (ctx->NewState & _NEW_BUFFERS)
4174 _mesa_update_state(ctx);
4175 params[0] = ctx->DrawBuffer->Visual.indexBits;
4176 break;
4177 case GL_INDEX_CLEAR_VALUE:
4178 params[0] = ctx->Color.ClearIndex;
4179 break;
4180 case GL_INDEX_MODE:
4181 params[0] = BOOLEAN_TO_INT(GL_FALSE);
4182 break;
4183 case GL_INDEX_OFFSET:
4184 params[0] = ctx->Pixel.IndexOffset;
4185 break;
4186 case GL_INDEX_SHIFT:
4187 params[0] = ctx->Pixel.IndexShift;
4188 break;
4189 case GL_INDEX_WRITEMASK:
4190 params[0] = ctx->Color.IndexMask;
4191 break;
4192 case GL_LIGHT0:
4193 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled);
4194 break;
4195 case GL_LIGHT1:
4196 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled);
4197 break;
4198 case GL_LIGHT2:
4199 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled);
4200 break;
4201 case GL_LIGHT3:
4202 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled);
4203 break;
4204 case GL_LIGHT4:
4205 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled);
4206 break;
4207 case GL_LIGHT5:
4208 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled);
4209 break;
4210 case GL_LIGHT6:
4211 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled);
4212 break;
4213 case GL_LIGHT7:
4214 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled);
4215 break;
4216 case GL_LIGHTING:
4217 params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled);
4218 break;
4219 case GL_LIGHT_MODEL_AMBIENT:
4220 params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]);
4221 params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]);
4222 params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]);
4223 params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]);
4224 break;
4225 case GL_LIGHT_MODEL_COLOR_CONTROL:
4226 params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl);
4227 break;
4228 case GL_LIGHT_MODEL_LOCAL_VIEWER:
4229 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer);
4230 break;
4231 case GL_LIGHT_MODEL_TWO_SIDE:
4232 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide);
4233 break;
4234 case GL_LINE_SMOOTH:
4235 params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag);
4236 break;
4237 case GL_LINE_SMOOTH_HINT:
4238 params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth);
4239 break;
4240 case GL_LINE_STIPPLE:
4241 params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag);
4242 break;
4243 case GL_LINE_STIPPLE_PATTERN:
4244 params[0] = ctx->Line.StipplePattern;
4245 break;
4246 case GL_LINE_STIPPLE_REPEAT:
4247 params[0] = ctx->Line.StippleFactor;
4248 break;
4249 case GL_LINE_WIDTH:
4250 params[0] = IROUND(ctx->Line.Width);
4251 break;
4252 case GL_LINE_WIDTH_GRANULARITY:
4253 params[0] = IROUND(ctx->Const.LineWidthGranularity);
4254 break;
4255 case GL_LINE_WIDTH_RANGE:
4256 params[0] = IROUND(ctx->Const.MinLineWidthAA);
4257 params[1] = IROUND(ctx->Const.MaxLineWidthAA);
4258 break;
4259 case GL_ALIASED_LINE_WIDTH_RANGE:
4260 params[0] = IROUND(ctx->Const.MinLineWidth);
4261 params[1] = IROUND(ctx->Const.MaxLineWidth);
4262 break;
4263 case GL_LIST_BASE:
4264 params[0] = ctx->List.ListBase;
4265 break;
4266 case GL_LIST_INDEX:
4267 params[0] = (ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0);
4268 break;
4269 case GL_LIST_MODE:
4270 {
4271 GLenum mode;
4272 if (!ctx->CompileFlag)
4273 mode = 0;
4274 else if (ctx->ExecuteFlag)
4275 mode = GL_COMPILE_AND_EXECUTE;
4276 else
4277 mode = GL_COMPILE;
4278 params[0] = ENUM_TO_INT(mode);
4279 }
4280 break;
4281 case GL_INDEX_LOGIC_OP:
4282 params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled);
4283 break;
4284 case GL_COLOR_LOGIC_OP:
4285 params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled);
4286 break;
4287 case GL_LOGIC_OP_MODE:
4288 params[0] = ENUM_TO_INT(ctx->Color.LogicOp);
4289 break;
4290 case GL_MAP1_COLOR_4:
4291 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4);
4292 break;
4293 case GL_MAP1_GRID_DOMAIN:
4294 params[0] = IROUND(ctx->Eval.MapGrid1u1);
4295 params[1] = IROUND(ctx->Eval.MapGrid1u2);
4296 break;
4297 case GL_MAP1_GRID_SEGMENTS:
4298 params[0] = ctx->Eval.MapGrid1un;
4299 break;
4300 case GL_MAP1_INDEX:
4301 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index);
4302 break;
4303 case GL_MAP1_NORMAL:
4304 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal);
4305 break;
4306 case GL_MAP1_TEXTURE_COORD_1:
4307 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1);
4308 break;
4309 case GL_MAP1_TEXTURE_COORD_2:
4310 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2);
4311 break;
4312 case GL_MAP1_TEXTURE_COORD_3:
4313 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3);
4314 break;
4315 case GL_MAP1_TEXTURE_COORD_4:
4316 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4);
4317 break;
4318 case GL_MAP1_VERTEX_3:
4319 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3);
4320 break;
4321 case GL_MAP1_VERTEX_4:
4322 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4);
4323 break;
4324 case GL_MAP2_COLOR_4:
4325 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4);
4326 break;
4327 case GL_MAP2_GRID_DOMAIN:
4328 params[0] = IROUND(ctx->Eval.MapGrid2u1);
4329 params[1] = IROUND(ctx->Eval.MapGrid2u2);
4330 params[2] = IROUND(ctx->Eval.MapGrid2v1);
4331 params[3] = IROUND(ctx->Eval.MapGrid2v2);
4332 break;
4333 case GL_MAP2_GRID_SEGMENTS:
4334 params[0] = ctx->Eval.MapGrid2un;
4335 params[1] = ctx->Eval.MapGrid2vn;
4336 break;
4337 case GL_MAP2_INDEX:
4338 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index);
4339 break;
4340 case GL_MAP2_NORMAL:
4341 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal);
4342 break;
4343 case GL_MAP2_TEXTURE_COORD_1:
4344 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1);
4345 break;
4346 case GL_MAP2_TEXTURE_COORD_2:
4347 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2);
4348 break;
4349 case GL_MAP2_TEXTURE_COORD_3:
4350 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3);
4351 break;
4352 case GL_MAP2_TEXTURE_COORD_4:
4353 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4);
4354 break;
4355 case GL_MAP2_VERTEX_3:
4356 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3);
4357 break;
4358 case GL_MAP2_VERTEX_4:
4359 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4);
4360 break;
4361 case GL_MAP_COLOR:
4362 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag);
4363 break;
4364 case GL_MAP_STENCIL:
4365 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag);
4366 break;
4367 case GL_MATRIX_MODE:
4368 params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode);
4369 break;
4370 case GL_MAX_ATTRIB_STACK_DEPTH:
4371 params[0] = MAX_ATTRIB_STACK_DEPTH;
4372 break;
4373 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
4374 params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
4375 break;
4376 case GL_MAX_CLIP_PLANES:
4377 params[0] = ctx->Const.MaxClipPlanes;
4378 break;
4379 case GL_MAX_ELEMENTS_VERTICES:
4380 params[0] = ctx->Const.MaxArrayLockSize;
4381 break;
4382 case GL_MAX_ELEMENTS_INDICES:
4383 params[0] = ctx->Const.MaxArrayLockSize;
4384 break;
4385 case GL_MAX_EVAL_ORDER:
4386 params[0] = MAX_EVAL_ORDER;
4387 break;
4388 case GL_MAX_LIGHTS:
4389 params[0] = ctx->Const.MaxLights;
4390 break;
4391 case GL_MAX_LIST_NESTING:
4392 params[0] = MAX_LIST_NESTING;
4393 break;
4394 case GL_MAX_MODELVIEW_STACK_DEPTH:
4395 params[0] = MAX_MODELVIEW_STACK_DEPTH;
4396 break;
4397 case GL_MAX_NAME_STACK_DEPTH:
4398 params[0] = MAX_NAME_STACK_DEPTH;
4399 break;
4400 case GL_MAX_PIXEL_MAP_TABLE:
4401 params[0] = MAX_PIXEL_MAP_TABLE;
4402 break;
4403 case GL_MAX_PROJECTION_STACK_DEPTH:
4404 params[0] = MAX_PROJECTION_STACK_DEPTH;
4405 break;
4406 case GL_MAX_TEXTURE_SIZE:
4407 params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
4408 break;
4409 case GL_MAX_3D_TEXTURE_SIZE:
4410 params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
4411 break;
4412 case GL_MAX_TEXTURE_STACK_DEPTH:
4413 params[0] = MAX_TEXTURE_STACK_DEPTH;
4414 break;
4415 case GL_MAX_VIEWPORT_DIMS:
4416 params[0] = ctx->Const.MaxViewportWidth;
4417 params[1] = ctx->Const.MaxViewportHeight;
4418 break;
4419 case GL_MODELVIEW_MATRIX:
4420 {
4421 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4422 params[0] = IROUND(matrix[0]);
4423 params[1] = IROUND(matrix[1]);
4424 params[2] = IROUND(matrix[2]);
4425 params[3] = IROUND(matrix[3]);
4426 params[4] = IROUND(matrix[4]);
4427 params[5] = IROUND(matrix[5]);
4428 params[6] = IROUND(matrix[6]);
4429 params[7] = IROUND(matrix[7]);
4430 params[8] = IROUND(matrix[8]);
4431 params[9] = IROUND(matrix[9]);
4432 params[10] = IROUND(matrix[10]);
4433 params[11] = IROUND(matrix[11]);
4434 params[12] = IROUND(matrix[12]);
4435 params[13] = IROUND(matrix[13]);
4436 params[14] = IROUND(matrix[14]);
4437 params[15] = IROUND(matrix[15]);
4438 }
4439 break;
4440 case GL_MODELVIEW_STACK_DEPTH:
4441 params[0] = ctx->ModelviewMatrixStack.Depth + 1;
4442 break;
4443 case GL_NAME_STACK_DEPTH:
4444 params[0] = ctx->Select.NameStackDepth;
4445 break;
4446 case GL_NORMALIZE:
4447 params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize);
4448 break;
4449 case GL_PACK_ALIGNMENT:
4450 params[0] = ctx->Pack.Alignment;
4451 break;
4452 case GL_PACK_LSB_FIRST:
4453 params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst);
4454 break;
4455 case GL_PACK_ROW_LENGTH:
4456 params[0] = ctx->Pack.RowLength;
4457 break;
4458 case GL_PACK_SKIP_PIXELS:
4459 params[0] = ctx->Pack.SkipPixels;
4460 break;
4461 case GL_PACK_SKIP_ROWS:
4462 params[0] = ctx->Pack.SkipRows;
4463 break;
4464 case GL_PACK_SWAP_BYTES:
4465 params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes);
4466 break;
4467 case GL_PACK_SKIP_IMAGES_EXT:
4468 params[0] = ctx->Pack.SkipImages;
4469 break;
4470 case GL_PACK_IMAGE_HEIGHT_EXT:
4471 params[0] = ctx->Pack.ImageHeight;
4472 break;
4473 case GL_PACK_INVERT_MESA:
4474 params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert);
4475 break;
4476 case GL_PERSPECTIVE_CORRECTION_HINT:
4477 params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection);
4478 break;
4479 case GL_PIXEL_MAP_A_TO_A_SIZE:
4480 params[0] = ctx->PixelMaps.AtoA.Size;
4481 break;
4482 case GL_PIXEL_MAP_B_TO_B_SIZE:
4483 params[0] = ctx->PixelMaps.BtoB.Size;
4484 break;
4485 case GL_PIXEL_MAP_G_TO_G_SIZE:
4486 params[0] = ctx->PixelMaps.GtoG.Size;
4487 break;
4488 case GL_PIXEL_MAP_I_TO_A_SIZE:
4489 params[0] = ctx->PixelMaps.ItoA.Size;
4490 break;
4491 case GL_PIXEL_MAP_I_TO_B_SIZE:
4492 params[0] = ctx->PixelMaps.ItoB.Size;
4493 break;
4494 case GL_PIXEL_MAP_I_TO_G_SIZE:
4495 params[0] = ctx->PixelMaps.ItoG.Size;
4496 break;
4497 case GL_PIXEL_MAP_I_TO_I_SIZE:
4498 params[0] = ctx->PixelMaps.ItoI.Size;
4499 break;
4500 case GL_PIXEL_MAP_I_TO_R_SIZE:
4501 params[0] = ctx->PixelMaps.ItoR.Size;
4502 break;
4503 case GL_PIXEL_MAP_R_TO_R_SIZE:
4504 params[0] = ctx->PixelMaps.RtoR.Size;
4505 break;
4506 case GL_PIXEL_MAP_S_TO_S_SIZE:
4507 params[0] = ctx->PixelMaps.StoS.Size;
4508 break;
4509 case GL_POINT_SIZE:
4510 params[0] = IROUND(ctx->Point.Size);
4511 break;
4512 case GL_POINT_SIZE_GRANULARITY:
4513 params[0] = IROUND(ctx->Const.PointSizeGranularity);
4514 break;
4515 case GL_POINT_SIZE_RANGE:
4516 params[0] = IROUND(ctx->Const.MinPointSizeAA);
4517 params[1] = IROUND(ctx->Const.MaxPointSizeAA);
4518 break;
4519 case GL_ALIASED_POINT_SIZE_RANGE:
4520 params[0] = IROUND(ctx->Const.MinPointSize);
4521 params[1] = IROUND(ctx->Const.MaxPointSize);
4522 break;
4523 case GL_POINT_SMOOTH:
4524 params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag);
4525 break;
4526 case GL_POINT_SMOOTH_HINT:
4527 params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth);
4528 break;
4529 case GL_POINT_SIZE_MIN_EXT:
4530 params[0] = IROUND(ctx->Point.MinSize);
4531 break;
4532 case GL_POINT_SIZE_MAX_EXT:
4533 params[0] = IROUND(ctx->Point.MaxSize);
4534 break;
4535 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
4536 params[0] = IROUND(ctx->Point.Threshold);
4537 break;
4538 case GL_DISTANCE_ATTENUATION_EXT:
4539 params[0] = IROUND(ctx->Point.Params[0]);
4540 params[1] = IROUND(ctx->Point.Params[1]);
4541 params[2] = IROUND(ctx->Point.Params[2]);
4542 break;
4543 case GL_POLYGON_MODE:
4544 params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode);
4545 params[1] = ENUM_TO_INT(ctx->Polygon.BackMode);
4546 break;
4547 case GL_POLYGON_OFFSET_BIAS_EXT:
4548 params[0] = IROUND(ctx->Polygon.OffsetUnits);
4549 break;
4550 case GL_POLYGON_OFFSET_FACTOR:
4551 params[0] = IROUND(ctx->Polygon.OffsetFactor );
4552 break;
4553 case GL_POLYGON_OFFSET_UNITS:
4554 params[0] = IROUND(ctx->Polygon.OffsetUnits );
4555 break;
4556 case GL_POLYGON_OFFSET_POINT:
4557 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetPoint);
4558 break;
4559 case GL_POLYGON_OFFSET_LINE:
4560 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetLine);
4561 break;
4562 case GL_POLYGON_OFFSET_FILL:
4563 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetFill);
4564 break;
4565 case GL_POLYGON_SMOOTH:
4566 params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag);
4567 break;
4568 case GL_POLYGON_SMOOTH_HINT:
4569 params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth);
4570 break;
4571 case GL_POLYGON_STIPPLE:
4572 params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag);
4573 break;
4574 case GL_PROJECTION_MATRIX:
4575 {
4576 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
4577 params[0] = IROUND(matrix[0]);
4578 params[1] = IROUND(matrix[1]);
4579 params[2] = IROUND(matrix[2]);
4580 params[3] = IROUND(matrix[3]);
4581 params[4] = IROUND(matrix[4]);
4582 params[5] = IROUND(matrix[5]);
4583 params[6] = IROUND(matrix[6]);
4584 params[7] = IROUND(matrix[7]);
4585 params[8] = IROUND(matrix[8]);
4586 params[9] = IROUND(matrix[9]);
4587 params[10] = IROUND(matrix[10]);
4588 params[11] = IROUND(matrix[11]);
4589 params[12] = IROUND(matrix[12]);
4590 params[13] = IROUND(matrix[13]);
4591 params[14] = IROUND(matrix[14]);
4592 params[15] = IROUND(matrix[15]);
4593 }
4594 break;
4595 case GL_PROJECTION_STACK_DEPTH:
4596 params[0] = ctx->ProjectionMatrixStack.Depth + 1;
4597 break;
4598 case GL_READ_BUFFER:
4599 params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer);
4600 break;
4601 case GL_RED_BIAS:
4602 params[0] = IROUND(ctx->Pixel.RedBias);
4603 break;
4604 case GL_RED_BITS:
4605 if (ctx->NewState & _NEW_BUFFERS)
4606 _mesa_update_state(ctx);
4607 params[0] = ctx->DrawBuffer->Visual.redBits;
4608 break;
4609 case GL_RED_SCALE:
4610 params[0] = IROUND(ctx->Pixel.RedScale);
4611 break;
4612 case GL_RENDER_MODE:
4613 params[0] = ENUM_TO_INT(ctx->RenderMode);
4614 break;
4615 case GL_RESCALE_NORMAL:
4616 params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals);
4617 break;
4618 case GL_RGBA_MODE:
4619 params[0] = BOOLEAN_TO_INT(GL_TRUE);
4620 break;
4621 case GL_SCISSOR_BOX:
4622 params[0] = ctx->Scissor.X;
4623 params[1] = ctx->Scissor.Y;
4624 params[2] = ctx->Scissor.Width;
4625 params[3] = ctx->Scissor.Height;
4626 break;
4627 case GL_SCISSOR_TEST:
4628 params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled);
4629 break;
4630 case GL_SELECTION_BUFFER_SIZE:
4631 params[0] = ctx->Select.BufferSize;
4632 break;
4633 case GL_SHADE_MODEL:
4634 params[0] = ENUM_TO_INT(ctx->Light.ShadeModel);
4635 break;
4636 case GL_SHARED_TEXTURE_PALETTE_EXT:
4637 params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette);
4638 break;
4639 case GL_STENCIL_BITS:
4640 params[0] = ctx->DrawBuffer->Visual.stencilBits;
4641 break;
4642 case GL_STENCIL_CLEAR_VALUE:
4643 params[0] = ctx->Stencil.Clear;
4644 break;
4645 case GL_STENCIL_FAIL:
4646 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
4647 break;
4648 case GL_STENCIL_FUNC:
4649 params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
4650 break;
4651 case GL_STENCIL_PASS_DEPTH_FAIL:
4652 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
4653 break;
4654 case GL_STENCIL_PASS_DEPTH_PASS:
4655 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
4656 break;
4657 case GL_STENCIL_REF:
4658 params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
4659 break;
4660 case GL_STENCIL_TEST:
4661 params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled);
4662 break;
4663 case GL_STENCIL_VALUE_MASK:
4664 params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
4665 break;
4666 case GL_STENCIL_WRITEMASK:
4667 params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
4668 break;
4669 case GL_STEREO:
4670 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode);
4671 break;
4672 case GL_SUBPIXEL_BITS:
4673 params[0] = ctx->Const.SubPixelBits;
4674 break;
4675 case GL_TEXTURE_1D:
4676 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D));
4677 break;
4678 case GL_TEXTURE_2D:
4679 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D));
4680 break;
4681 case GL_TEXTURE_3D:
4682 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D));
4683 break;
4684 case GL_TEXTURE_1D_ARRAY_EXT:
4685 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4686 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
4687 break;
4688 case GL_TEXTURE_2D_ARRAY_EXT:
4689 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4690 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
4691 break;
4692 case GL_TEXTURE_BINDING_1D:
4693 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name;
4694 break;
4695 case GL_TEXTURE_BINDING_2D:
4696 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name;
4697 break;
4698 case GL_TEXTURE_BINDING_3D:
4699 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name;
4700 break;
4701 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
4702 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4703 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name;
4704 break;
4705 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
4706 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4707 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name;
4708 break;
4709 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
4710 CHECK_EXT1(MESA_texture_array, "GetIntegerv");
4711 params[0] = ctx->Const.MaxArrayTextureLayers;
4712 break;
4713 case GL_TEXTURE_GEN_S:
4714 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
4715 break;
4716 case GL_TEXTURE_GEN_T:
4717 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
4718 break;
4719 case GL_TEXTURE_GEN_R:
4720 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
4721 break;
4722 case GL_TEXTURE_GEN_Q:
4723 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
4724 break;
4725 case GL_TEXTURE_MATRIX:
4726 {
4727 const GLfloat *matrix;
4728 const GLuint unit = ctx->Texture.CurrentUnit;
4729 if (unit >= ctx->Const.MaxTextureCoordUnits) {
4730 _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
4731 unit);
4732 return;
4733 }
4734 matrix = ctx->TextureMatrixStack[unit].Top->m;
4735 params[0] = IROUND(matrix[0]);
4736 params[1] = IROUND(matrix[1]);
4737 params[2] = IROUND(matrix[2]);
4738 params[3] = IROUND(matrix[3]);
4739 params[4] = IROUND(matrix[4]);
4740 params[5] = IROUND(matrix[5]);
4741 params[6] = IROUND(matrix[6]);
4742 params[7] = IROUND(matrix[7]);
4743 params[8] = IROUND(matrix[8]);
4744 params[9] = IROUND(matrix[9]);
4745 params[10] = IROUND(matrix[10]);
4746 params[11] = IROUND(matrix[11]);
4747 params[12] = IROUND(matrix[12]);
4748 params[13] = IROUND(matrix[13]);
4749 params[14] = IROUND(matrix[14]);
4750 params[15] = IROUND(matrix[15]);
4751 }
4752 break;
4753 case GL_TEXTURE_STACK_DEPTH:
4754 {
4755 const GLuint unit = ctx->Texture.CurrentUnit;
4756 if (unit >= ctx->Const.MaxTextureCoordUnits) {
4757 _mesa_error(ctx, GL_INVALID_OPERATION,
4758 "glGet(texture stack depth, unit %u)", unit);
4759 return;
4760 }
4761 params[0] = ctx->TextureMatrixStack[unit].Depth + 1;
4762 }
4763 break;
4764 case GL_UNPACK_ALIGNMENT:
4765 params[0] = ctx->Unpack.Alignment;
4766 break;
4767 case GL_UNPACK_LSB_FIRST:
4768 params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst);
4769 break;
4770 case GL_UNPACK_ROW_LENGTH:
4771 params[0] = ctx->Unpack.RowLength;
4772 break;
4773 case GL_UNPACK_SKIP_PIXELS:
4774 params[0] = ctx->Unpack.SkipPixels;
4775 break;
4776 case GL_UNPACK_SKIP_ROWS:
4777 params[0] = ctx->Unpack.SkipRows;
4778 break;
4779 case GL_UNPACK_SWAP_BYTES:
4780 params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes);
4781 break;
4782 case GL_UNPACK_SKIP_IMAGES_EXT:
4783 params[0] = ctx->Unpack.SkipImages;
4784 break;
4785 case GL_UNPACK_IMAGE_HEIGHT_EXT:
4786 params[0] = ctx->Unpack.ImageHeight;
4787 break;
4788 case GL_UNPACK_CLIENT_STORAGE_APPLE:
4789 params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage);
4790 break;
4791 case GL_VIEWPORT:
4792 params[0] = ctx->Viewport.X;
4793 params[1] = ctx->Viewport.Y;
4794 params[2] = ctx->Viewport.Width;
4795 params[3] = ctx->Viewport.Height;
4796 break;
4797 case GL_ZOOM_X:
4798 params[0] = IROUND(ctx->Pixel.ZoomX);
4799 break;
4800 case GL_ZOOM_Y:
4801 params[0] = IROUND(ctx->Pixel.ZoomY);
4802 break;
4803 case GL_VERTEX_ARRAY:
4804 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled);
4805 break;
4806 case GL_VERTEX_ARRAY_SIZE:
4807 params[0] = ctx->Array.ArrayObj->Vertex.Size;
4808 break;
4809 case GL_VERTEX_ARRAY_TYPE:
4810 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type);
4811 break;
4812 case GL_VERTEX_ARRAY_STRIDE:
4813 params[0] = ctx->Array.ArrayObj->Vertex.Stride;
4814 break;
4815 case GL_VERTEX_ARRAY_COUNT_EXT:
4816 params[0] = 0;
4817 break;
4818 case GL_NORMAL_ARRAY:
4819 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled);
4820 break;
4821 case GL_NORMAL_ARRAY_TYPE:
4822 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type);
4823 break;
4824 case GL_NORMAL_ARRAY_STRIDE:
4825 params[0] = ctx->Array.ArrayObj->Normal.Stride;
4826 break;
4827 case GL_NORMAL_ARRAY_COUNT_EXT:
4828 params[0] = 0;
4829 break;
4830 case GL_COLOR_ARRAY:
4831 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled);
4832 break;
4833 case GL_COLOR_ARRAY_SIZE:
4834 params[0] = ctx->Array.ArrayObj->Color.Size;
4835 break;
4836 case GL_COLOR_ARRAY_TYPE:
4837 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type);
4838 break;
4839 case GL_COLOR_ARRAY_STRIDE:
4840 params[0] = ctx->Array.ArrayObj->Color.Stride;
4841 break;
4842 case GL_COLOR_ARRAY_COUNT_EXT:
4843 params[0] = 0;
4844 break;
4845 case GL_INDEX_ARRAY:
4846 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled);
4847 break;
4848 case GL_INDEX_ARRAY_TYPE:
4849 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type);
4850 break;
4851 case GL_INDEX_ARRAY_STRIDE:
4852 params[0] = ctx->Array.ArrayObj->Index.Stride;
4853 break;
4854 case GL_INDEX_ARRAY_COUNT_EXT:
4855 params[0] = 0;
4856 break;
4857 case GL_TEXTURE_COORD_ARRAY:
4858 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
4859 break;
4860 case GL_TEXTURE_COORD_ARRAY_SIZE:
4861 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
4862 break;
4863 case GL_TEXTURE_COORD_ARRAY_TYPE:
4864 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
4865 break;
4866 case GL_TEXTURE_COORD_ARRAY_STRIDE:
4867 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
4868 break;
4869 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
4870 params[0] = 0;
4871 break;
4872 case GL_EDGE_FLAG_ARRAY:
4873 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
4874 break;
4875 case GL_EDGE_FLAG_ARRAY_STRIDE:
4876 params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
4877 break;
4878 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
4879 params[0] = 0;
4880 break;
4881 case GL_MAX_TEXTURE_UNITS_ARB:
4882 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4883 params[0] = ctx->Const.MaxTextureUnits;
4884 break;
4885 case GL_ACTIVE_TEXTURE_ARB:
4886 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4887 params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
4888 break;
4889 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
4890 CHECK_EXT1(ARB_multitexture, "GetIntegerv");
4891 params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
4892 break;
4893 case GL_TEXTURE_CUBE_MAP_ARB:
4894 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4895 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
4896 break;
4897 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
4898 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4899 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name;
4900 break;
4901 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
4902 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
4903 params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
4904 break;
4905 case GL_TEXTURE_COMPRESSION_HINT_ARB:
4906 params[0] = ctx->Hint.TextureCompression;
4907 break;
4908 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
4909 params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
4910 break;
4911 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
4912 {
4913 GLint formats[100];
4914 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
4915 ASSERT(n <= 100);
4916 for (i = 0; i < n; i++)
4917 params[i] = ENUM_TO_INT(formats[i]);
4918 }
4919 break;
4920 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
4921 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
4922 params[0] = ctx->Array.LockFirst;
4923 break;
4924 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
4925 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
4926 params[0] = ctx->Array.LockCount;
4927 break;
4928 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
4929 {
4930 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
4931 params[0] = IROUND(matrix[0]);
4932 params[1] = IROUND(matrix[4]);
4933 params[2] = IROUND(matrix[8]);
4934 params[3] = IROUND(matrix[12]);
4935 params[4] = IROUND(matrix[1]);
4936 params[5] = IROUND(matrix[5]);
4937 params[6] = IROUND(matrix[9]);
4938 params[7] = IROUND(matrix[13]);
4939 params[8] = IROUND(matrix[2]);
4940 params[9] = IROUND(matrix[6]);
4941 params[10] = IROUND(matrix[10]);
4942 params[11] = IROUND(matrix[14]);
4943 params[12] = IROUND(matrix[3]);
4944 params[13] = IROUND(matrix[7]);
4945 params[14] = IROUND(matrix[11]);
4946 params[15] = IROUND(matrix[15]);
4947 }
4948 break;
4949 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
4950 {
4951 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
4952 params[0] = IROUND(matrix[0]);
4953 params[1] = IROUND(matrix[4]);
4954 params[2] = IROUND(matrix[8]);
4955 params[3] = IROUND(matrix[12]);
4956 params[4] = IROUND(matrix[1]);
4957 params[5] = IROUND(matrix[5]);
4958 params[6] = IROUND(matrix[9]);
4959 params[7] = IROUND(matrix[13]);
4960 params[8] = IROUND(matrix[2]);
4961 params[9] = IROUND(matrix[6]);
4962 params[10] = IROUND(matrix[10]);
4963 params[11] = IROUND(matrix[14]);
4964 params[12] = IROUND(matrix[3]);
4965 params[13] = IROUND(matrix[7]);
4966 params[14] = IROUND(matrix[11]);
4967 params[15] = IROUND(matrix[15]);
4968 }
4969 break;
4970 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
4971 {
4972 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
4973 params[0] = IROUND(matrix[0]);
4974 params[1] = IROUND(matrix[4]);
4975 params[2] = IROUND(matrix[8]);
4976 params[3] = IROUND(matrix[12]);
4977 params[4] = IROUND(matrix[1]);
4978 params[5] = IROUND(matrix[5]);
4979 params[6] = IROUND(matrix[9]);
4980 params[7] = IROUND(matrix[13]);
4981 params[8] = IROUND(matrix[2]);
4982 params[9] = IROUND(matrix[6]);
4983 params[10] = IROUND(matrix[10]);
4984 params[11] = IROUND(matrix[14]);
4985 params[12] = IROUND(matrix[3]);
4986 params[13] = IROUND(matrix[7]);
4987 params[14] = IROUND(matrix[11]);
4988 params[15] = IROUND(matrix[15]);
4989 }
4990 break;
4991 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
4992 {
4993 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
4994 params[0] = IROUND(matrix[0]);
4995 params[1] = IROUND(matrix[4]);
4996 params[2] = IROUND(matrix[8]);
4997 params[3] = IROUND(matrix[12]);
4998 params[4] = IROUND(matrix[1]);
4999 params[5] = IROUND(matrix[5]);
5000 params[6] = IROUND(matrix[9]);
5001 params[7] = IROUND(matrix[13]);
5002 params[8] = IROUND(matrix[2]);
5003 params[9] = IROUND(matrix[6]);
5004 params[10] = IROUND(matrix[10]);
5005 params[11] = IROUND(matrix[14]);
5006 params[12] = IROUND(matrix[3]);
5007 params[13] = IROUND(matrix[7]);
5008 params[14] = IROUND(matrix[11]);
5009 params[15] = IROUND(matrix[15]);
5010 }
5011 break;
5012 case GL_COLOR_MATRIX_SGI:
5013 {
5014 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
5015 params[0] = IROUND(matrix[0]);
5016 params[1] = IROUND(matrix[1]);
5017 params[2] = IROUND(matrix[2]);
5018 params[3] = IROUND(matrix[3]);
5019 params[4] = IROUND(matrix[4]);
5020 params[5] = IROUND(matrix[5]);
5021 params[6] = IROUND(matrix[6]);
5022 params[7] = IROUND(matrix[7]);
5023 params[8] = IROUND(matrix[8]);
5024 params[9] = IROUND(matrix[9]);
5025 params[10] = IROUND(matrix[10]);
5026 params[11] = IROUND(matrix[11]);
5027 params[12] = IROUND(matrix[12]);
5028 params[13] = IROUND(matrix[13]);
5029 params[14] = IROUND(matrix[14]);
5030 params[15] = IROUND(matrix[15]);
5031 }
5032 break;
5033 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
5034 params[0] = ctx->ColorMatrixStack.Depth + 1;
5035 break;
5036 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
5037 params[0] = MAX_COLOR_STACK_DEPTH;
5038 break;
5039 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
5040 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
5041 break;
5042 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
5043 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
5044 break;
5045 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
5046 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
5047 break;
5048 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
5049 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
5050 break;
5051 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
5052 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
5053 break;
5054 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
5055 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
5056 break;
5057 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
5058 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
5059 break;
5060 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
5061 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
5062 break;
5063 case GL_CONVOLUTION_1D_EXT:
5064 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5065 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
5066 break;
5067 case GL_CONVOLUTION_2D_EXT:
5068 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5069 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
5070 break;
5071 case GL_SEPARABLE_2D_EXT:
5072 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5073 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
5074 break;
5075 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
5076 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5077 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
5078 break;
5079 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
5080 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5081 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
5082 break;
5083 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
5084 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5085 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
5086 break;
5087 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
5088 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5089 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
5090 break;
5091 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
5092 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5093 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
5094 break;
5095 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
5096 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5097 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
5098 break;
5099 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
5100 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5101 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
5102 break;
5103 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
5104 CHECK_EXT1(EXT_convolution, "GetIntegerv");
5105 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
5106 break;
5107 case GL_HISTOGRAM:
5108 CHECK_EXT1(EXT_histogram, "GetIntegerv");
5109 params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
5110 break;
5111 case GL_MINMAX:
5112 CHECK_EXT1(EXT_histogram, "GetIntegerv");
5113 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
5114 break;
5115 case GL_COLOR_TABLE_SGI:
5116 CHECK_EXT1(SGI_color_table, "GetIntegerv");
5117 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
5118 break;
5119 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
5120 CHECK_EXT1(SGI_color_table, "GetIntegerv");
5121 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
5122 break;
5123 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
5124 CHECK_EXT1(SGI_color_table, "GetIntegerv");
5125 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
5126 break;
5127 case GL_TEXTURE_COLOR_TABLE_SGI:
5128 CHECK_EXT1(SGI_texture_color_table, "GetIntegerv");
5129 params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
5130 break;
5131 case GL_COLOR_SUM_EXT:
5132 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv");
5133 params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
5134 break;
5135 case GL_CURRENT_SECONDARY_COLOR_EXT:
5136 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5137 FLUSH_CURRENT(ctx, 0);
5138 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
5139 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
5140 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
5141 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
5142 break;
5143 case GL_SECONDARY_COLOR_ARRAY_EXT:
5144 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5145 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
5146 break;
5147 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
5148 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5149 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
5150 break;
5151 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
5152 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5153 params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
5154 break;
5155 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
5156 CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
5157 params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
5158 break;
5159 case GL_CURRENT_FOG_COORDINATE_EXT:
5160 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5161 FLUSH_CURRENT(ctx, 0);
5162 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
5163 break;
5164 case GL_FOG_COORDINATE_ARRAY_EXT:
5165 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5166 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
5167 break;
5168 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
5169 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5170 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
5171 break;
5172 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
5173 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5174 params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
5175 break;
5176 case GL_FOG_COORDINATE_SOURCE_EXT:
5177 CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
5178 params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
5179 break;
5180 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
5181 CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv");
5182 params[0] = IROUND(ctx->Const.MaxTextureLodBias);
5183 break;
5184 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
5185 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv");
5186 params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
5187 break;
5188 case GL_MULTISAMPLE_ARB:
5189 params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
5190 break;
5191 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
5192 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
5193 break;
5194 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
5195 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
5196 break;
5197 case GL_SAMPLE_COVERAGE_ARB:
5198 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
5199 break;
5200 case GL_SAMPLE_COVERAGE_VALUE_ARB:
5201 params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
5202 break;
5203 case GL_SAMPLE_COVERAGE_INVERT_ARB:
5204 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
5205 break;
5206 case GL_SAMPLE_BUFFERS_ARB:
5207 params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
5208 break;
5209 case GL_SAMPLES_ARB:
5210 params[0] = ctx->DrawBuffer->Visual.samples;
5211 break;
5212 case GL_RASTER_POSITION_UNCLIPPED_IBM:
5213 CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv");
5214 params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
5215 break;
5216 case GL_POINT_SPRITE_NV:
5217 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
5218 params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
5219 break;
5220 case GL_POINT_SPRITE_R_MODE_NV:
5221 CHECK_EXT1(NV_point_sprite, "GetIntegerv");
5222 params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
5223 break;
5224 case GL_POINT_SPRITE_COORD_ORIGIN:
5225 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
5226 params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
5227 break;
5228 case GL_GENERATE_MIPMAP_HINT_SGIS:
5229 CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv");
5230 params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
5231 break;
5232 case GL_VERTEX_PROGRAM_BINDING_NV:
5233 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5234 params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
5235 break;
5236 case GL_VERTEX_ATTRIB_ARRAY0_NV:
5237 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5238 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
5239 break;
5240 case GL_VERTEX_ATTRIB_ARRAY1_NV:
5241 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5242 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
5243 break;
5244 case GL_VERTEX_ATTRIB_ARRAY2_NV:
5245 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5246 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
5247 break;
5248 case GL_VERTEX_ATTRIB_ARRAY3_NV:
5249 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5250 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
5251 break;
5252 case GL_VERTEX_ATTRIB_ARRAY4_NV:
5253 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5254 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
5255 break;
5256 case GL_VERTEX_ATTRIB_ARRAY5_NV:
5257 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5258 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
5259 break;
5260 case GL_VERTEX_ATTRIB_ARRAY6_NV:
5261 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5262 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
5263 break;
5264 case GL_VERTEX_ATTRIB_ARRAY7_NV:
5265 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5266 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
5267 break;
5268 case GL_VERTEX_ATTRIB_ARRAY8_NV:
5269 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5270 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
5271 break;
5272 case GL_VERTEX_ATTRIB_ARRAY9_NV:
5273 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5274 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
5275 break;
5276 case GL_VERTEX_ATTRIB_ARRAY10_NV:
5277 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5278 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
5279 break;
5280 case GL_VERTEX_ATTRIB_ARRAY11_NV:
5281 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5282 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
5283 break;
5284 case GL_VERTEX_ATTRIB_ARRAY12_NV:
5285 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5286 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
5287 break;
5288 case GL_VERTEX_ATTRIB_ARRAY13_NV:
5289 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5290 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
5291 break;
5292 case GL_VERTEX_ATTRIB_ARRAY14_NV:
5293 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5294 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
5295 break;
5296 case GL_VERTEX_ATTRIB_ARRAY15_NV:
5297 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5298 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
5299 break;
5300 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
5301 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5302 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
5303 break;
5304 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
5305 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5306 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
5307 break;
5308 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
5309 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5310 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
5311 break;
5312 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
5313 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5314 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
5315 break;
5316 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
5317 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5318 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
5319 break;
5320 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
5321 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5322 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
5323 break;
5324 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
5325 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5326 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
5327 break;
5328 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
5329 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5330 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
5331 break;
5332 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
5333 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5334 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
5335 break;
5336 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
5337 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5338 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
5339 break;
5340 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
5341 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5342 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
5343 break;
5344 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
5345 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5346 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
5347 break;
5348 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
5349 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5350 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
5351 break;
5352 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
5353 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5354 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
5355 break;
5356 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
5357 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5358 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
5359 break;
5360 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
5361 CHECK_EXT1(NV_vertex_program, "GetIntegerv");
5362 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
5363 break;
5364 case GL_FRAGMENT_PROGRAM_NV:
5365 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5366 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5367 break;
5368 case GL_FRAGMENT_PROGRAM_BINDING_NV:
5369 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5370 params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
5371 break;
5372 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
5373 CHECK_EXT1(NV_fragment_program, "GetIntegerv");
5374 params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
5375 break;
5376 case GL_TEXTURE_RECTANGLE_NV:
5377 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5378 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
5379 break;
5380 case GL_TEXTURE_BINDING_RECTANGLE_NV:
5381 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5382 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name;
5383 break;
5384 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
5385 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
5386 params[0] = ctx->Const.MaxTextureRectSize;
5387 break;
5388 case GL_STENCIL_TEST_TWO_SIDE_EXT:
5389 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
5390 params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
5391 break;
5392 case GL_ACTIVE_STENCIL_FACE_EXT:
5393 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
5394 params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
5395 break;
5396 case GL_MAX_SHININESS_NV:
5397 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
5398 params[0] = IROUND(ctx->Const.MaxShininess);
5399 break;
5400 case GL_MAX_SPOT_EXPONENT_NV:
5401 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
5402 params[0] = IROUND(ctx->Const.MaxSpotExponent);
5403 break;
5404 case GL_ARRAY_BUFFER_BINDING_ARB:
5405 params[0] = ctx->Array.ArrayBufferObj->Name;
5406 break;
5407 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
5408 params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
5409 break;
5410 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
5411 params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
5412 break;
5413 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
5414 params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
5415 break;
5416 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
5417 params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
5418 break;
5419 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
5420 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
5421 break;
5422 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
5423 params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
5424 break;
5425 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
5426 params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
5427 break;
5428 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
5429 params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
5430 break;
5431 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
5432 params[0] = ctx->Array.ElementArrayBufferObj->Name;
5433 break;
5434 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
5435 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
5436 params[0] = ctx->Pack.BufferObj->Name;
5437 break;
5438 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
5439 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
5440 params[0] = ctx->Unpack.BufferObj->Name;
5441 break;
5442 case GL_VERTEX_PROGRAM_ARB:
5443 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5444 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
5445 break;
5446 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
5447 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5448 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
5449 break;
5450 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
5451 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
5452 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
5453 break;
5454 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
5455 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5456 params[0] = ctx->Const.MaxProgramMatrixStackDepth;
5457 break;
5458 case GL_MAX_PROGRAM_MATRICES_ARB:
5459 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5460 params[0] = ctx->Const.MaxProgramMatrices;
5461 break;
5462 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
5463 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
5464 params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
5465 break;
5466 case GL_CURRENT_MATRIX_ARB:
5467 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5468 {
5469 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5470 params[0] = IROUND(matrix[0]);
5471 params[1] = IROUND(matrix[1]);
5472 params[2] = IROUND(matrix[2]);
5473 params[3] = IROUND(matrix[3]);
5474 params[4] = IROUND(matrix[4]);
5475 params[5] = IROUND(matrix[5]);
5476 params[6] = IROUND(matrix[6]);
5477 params[7] = IROUND(matrix[7]);
5478 params[8] = IROUND(matrix[8]);
5479 params[9] = IROUND(matrix[9]);
5480 params[10] = IROUND(matrix[10]);
5481 params[11] = IROUND(matrix[11]);
5482 params[12] = IROUND(matrix[12]);
5483 params[13] = IROUND(matrix[13]);
5484 params[14] = IROUND(matrix[14]);
5485 params[15] = IROUND(matrix[15]);
5486 }
5487 break;
5488 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
5489 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv");
5490 {
5491 const GLfloat *matrix = ctx->CurrentStack->Top->m;
5492 params[0] = IROUND(matrix[0]);
5493 params[1] = IROUND(matrix[4]);
5494 params[2] = IROUND(matrix[8]);
5495 params[3] = IROUND(matrix[12]);
5496 params[4] = IROUND(matrix[1]);
5497 params[5] = IROUND(matrix[5]);
5498 params[6] = IROUND(matrix[9]);
5499 params[7] = IROUND(matrix[13]);
5500 params[8] = IROUND(matrix[2]);
5501 params[9] = IROUND(matrix[6]);
5502 params[10] = IROUND(matrix[10]);
5503 params[11] = IROUND(matrix[14]);
5504 params[12] = IROUND(matrix[3]);
5505 params[13] = IROUND(matrix[7]);
5506 params[14] = IROUND(matrix[11]);
5507 params[15] = IROUND(matrix[15]);
5508 }
5509 break;
5510 case GL_MAX_VERTEX_ATTRIBS_ARB:
5511 CHECK_EXT1(ARB_vertex_program, "GetIntegerv");
5512 params[0] = ctx->Const.VertexProgram.MaxAttribs;
5513 break;
5514 case GL_PROGRAM_ERROR_POSITION_ARB:
5515 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv");
5516 params[0] = ctx->Program.ErrorPos;
5517 break;
5518 case GL_FRAGMENT_PROGRAM_ARB:
5519 CHECK_EXT1(ARB_fragment_program, "GetIntegerv");
5520 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
5521 break;
5522 case GL_MAX_TEXTURE_COORDS_ARB:
5523 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5524 params[0] = ctx->Const.MaxTextureCoordUnits;
5525 break;
5526 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
5527 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
5528 params[0] = ctx->Const.MaxTextureImageUnits;
5529 break;
5530 case GL_DEPTH_BOUNDS_TEST_EXT:
5531 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
5532 params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
5533 break;
5534 case GL_DEPTH_BOUNDS_EXT:
5535 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
5536 params[0] = IROUND(ctx->Depth.BoundsMin);
5537 params[1] = IROUND(ctx->Depth.BoundsMax);
5538 break;
5539 case GL_DEPTH_CLAMP:
5540 CHECK_EXT1(ARB_depth_clamp, "GetIntegerv");
5541 params[0] = BOOLEAN_TO_INT(ctx->Transform.DepthClamp);
5542 break;
5543 case GL_MAX_DRAW_BUFFERS_ARB:
5544 params[0] = ctx->Const.MaxDrawBuffers;
5545 break;
5546 case GL_DRAW_BUFFER0_ARB:
5547 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
5548 break;
5549 case GL_DRAW_BUFFER1_ARB:
5550 {
5551 GLenum buffer;
5552 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5553 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5554 return;
5555 }
5556 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
5557 params[0] = ENUM_TO_INT(buffer);
5558 }
5559 break;
5560 case GL_DRAW_BUFFER2_ARB:
5561 {
5562 GLenum buffer;
5563 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5564 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5565 return;
5566 }
5567 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
5568 params[0] = ENUM_TO_INT(buffer);
5569 }
5570 break;
5571 case GL_DRAW_BUFFER3_ARB:
5572 {
5573 GLenum buffer;
5574 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
5575 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
5576 return;
5577 }
5578 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
5579 params[0] = ENUM_TO_INT(buffer);
5580 }
5581 break;
5582 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
5583 CHECK_EXT1(OES_read_format, "GetIntegerv");
5584 if (ctx->NewState & _NEW_BUFFERS)
5585 _mesa_update_state(ctx);
5586 params[0] = _mesa_get_color_read_type(ctx);
5587 break;
5588 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
5589 CHECK_EXT1(OES_read_format, "GetIntegerv");
5590 if (ctx->NewState & _NEW_BUFFERS)
5591 _mesa_update_state(ctx);
5592 params[0] = _mesa_get_color_read_format(ctx);
5593 break;
5594 case GL_NUM_FRAGMENT_REGISTERS_ATI:
5595 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5596 params[0] = 6;
5597 break;
5598 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
5599 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5600 params[0] = 8;
5601 break;
5602 case GL_NUM_PASSES_ATI:
5603 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5604 params[0] = 2;
5605 break;
5606 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
5607 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5608 params[0] = 8;
5609 break;
5610 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
5611 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5612 params[0] = 16;
5613 break;
5614 case GL_COLOR_ALPHA_PAIRING_ATI:
5615 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5616 params[0] = BOOLEAN_TO_INT(GL_TRUE);
5617 break;
5618 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
5619 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5620 params[0] = 3;
5621 break;
5622 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
5623 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
5624 params[0] = 3;
5625 break;
5626 case GL_STENCIL_BACK_FUNC:
5627 params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
5628 break;
5629 case GL_STENCIL_BACK_VALUE_MASK:
5630 params[0] = ctx->Stencil.ValueMask[1];
5631 break;
5632 case GL_STENCIL_BACK_WRITEMASK:
5633 params[0] = ctx->Stencil.WriteMask[1];
5634 break;
5635 case GL_STENCIL_BACK_REF:
5636 params[0] = ctx->Stencil.Ref[1];
5637 break;
5638 case GL_STENCIL_BACK_FAIL:
5639 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
5640 break;
5641 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
5642 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
5643 break;
5644 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
5645 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
5646 break;
5647 case GL_FRAMEBUFFER_BINDING_EXT:
5648 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5649 params[0] = ctx->DrawBuffer->Name;
5650 break;
5651 case GL_RENDERBUFFER_BINDING_EXT:
5652 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5653 params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
5654 break;
5655 case GL_MAX_COLOR_ATTACHMENTS_EXT:
5656 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5657 params[0] = ctx->Const.MaxColorAttachments;
5658 break;
5659 case GL_MAX_RENDERBUFFER_SIZE_EXT:
5660 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
5661 params[0] = ctx->Const.MaxRenderbufferSize;
5662 break;
5663 case GL_READ_FRAMEBUFFER_BINDING_EXT:
5664 CHECK_EXT1(EXT_framebuffer_blit, "GetIntegerv");
5665 params[0] = ctx->ReadBuffer->Name;
5666 break;
5667 case GL_PROVOKING_VERTEX_EXT:
5668 CHECK_EXT1(EXT_provoking_vertex, "GetIntegerv");
5669 params[0] = BOOLEAN_TO_INT(ctx->Light.ProvokingVertex);
5670 break;
5671 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
5672 CHECK_EXT1(EXT_provoking_vertex, "GetIntegerv");
5673 params[0] = BOOLEAN_TO_INT(ctx->Const.QuadsFollowProvokingVertexConvention);
5674 break;
5675 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
5676 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
5677 params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
5678 break;
5679 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
5680 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
5681 params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
5682 break;
5683 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
5684 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5685 params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
5686 break;
5687 case GL_MAX_VARYING_FLOATS_ARB:
5688 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5689 params[0] = ctx->Const.MaxVarying * 4;
5690 break;
5691 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
5692 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5693 params[0] = ctx->Const.MaxVertexTextureImageUnits;
5694 break;
5695 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
5696 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
5697 params[0] = ctx->Const.MaxCombinedTextureImageUnits;
5698 break;
5699 case GL_CURRENT_PROGRAM:
5700 CHECK_EXT1(ARB_shader_objects, "GetIntegerv");
5701 params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
5702 break;
5703 case GL_MAX_SAMPLES:
5704 CHECK_EXT1(ARB_framebuffer_object, "GetIntegerv");
5705 params[0] = ctx->Const.MaxSamples;
5706 break;
5707 case GL_VERTEX_ARRAY_BINDING_APPLE:
5708 CHECK_EXT1(APPLE_vertex_array_object, "GetIntegerv");
5709 params[0] = ctx->Array.ArrayObj->Name;
5710 break;
5711 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
5712 CHECK_EXT1(ARB_seamless_cube_map, "GetIntegerv");
5713 params[0] = BOOLEAN_TO_INT(ctx->Texture.CubeMapSeamless);
5714 break;
5715 case GL_MAX_SERVER_WAIT_TIMEOUT:
5716 CHECK_EXT1(ARB_sync, "GetIntegerv");
5717 params[0] = INT64_TO_INT(ctx->Const.MaxServerWaitTimeout);
5718 break;
5719 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
5720 CHECK_EXT1(EXT_transform_feedback, "GetIntegerv");
5721 params[0] = ctx->TransformFeedback.CurrentBuffer->Name;
5722 break;
5723 case GL_RASTERIZER_DISCARD:
5724 CHECK_EXT1(EXT_transform_feedback, "GetIntegerv");
5725 params[0] = BOOLEAN_TO_INT(ctx->TransformFeedback.RasterDiscard);
5726 break;
5727 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
5728 CHECK_EXT1(EXT_transform_feedback, "GetIntegerv");
5729 params[0] = ctx->Const.MaxTransformFeedbackInterleavedComponents;
5730 break;
5731 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
5732 CHECK_EXT1(EXT_transform_feedback, "GetIntegerv");
5733 params[0] = ctx->Const.MaxTransformFeedbackSeparateAttribs;
5734 break;
5735 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
5736 CHECK_EXT1(EXT_transform_feedback, "GetIntegerv");
5737 params[0] = ctx->Const.MaxTransformFeedbackSeparateComponents;
5738 break;
5739 case GL_NUM_EXTENSIONS:
5740 params[0] = _mesa_get_extension_count(ctx);
5741 break;
5742 case GL_MAJOR_VERSION:
5743 params[0] = ctx->VersionMajor;
5744 break;
5745 case GL_MINOR_VERSION:
5746 params[0] = ctx->VersionMinor;
5747 break;
5748 case GL_CONTEXT_FLAGS:
5749 params[0] = ctx->Const.ContextFlags;
5750 break;
5751 default:
5752 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
5753 }
5754 }
5755
5756 #if FEATURE_ARB_sync
5757 void GLAPIENTRY
5758 _mesa_GetInteger64v( GLenum pname, GLint64 *params )
5759 {
5760 GET_CURRENT_CONTEXT(ctx);
5761 ASSERT_OUTSIDE_BEGIN_END(ctx);
5762
5763 if (!params)
5764 return;
5765
5766 if (ctx->Driver.GetInteger64v &&
5767 ctx->Driver.GetInteger64v(ctx, pname, params))
5768 return;
5769
5770 switch (pname) {
5771 case GL_ACCUM_RED_BITS:
5772 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumRedBits);
5773 break;
5774 case GL_ACCUM_GREEN_BITS:
5775 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumGreenBits);
5776 break;
5777 case GL_ACCUM_BLUE_BITS:
5778 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumBlueBits);
5779 break;
5780 case GL_ACCUM_ALPHA_BITS:
5781 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumAlphaBits);
5782 break;
5783 case GL_ACCUM_CLEAR_VALUE:
5784 params[0] = FLOAT_TO_INT64(ctx->Accum.ClearColor[0]);
5785 params[1] = FLOAT_TO_INT64(ctx->Accum.ClearColor[1]);
5786 params[2] = FLOAT_TO_INT64(ctx->Accum.ClearColor[2]);
5787 params[3] = FLOAT_TO_INT64(ctx->Accum.ClearColor[3]);
5788 break;
5789 case GL_ALPHA_BIAS:
5790 params[0] = IROUND64(ctx->Pixel.AlphaBias);
5791 break;
5792 case GL_ALPHA_BITS:
5793 if (ctx->NewState & _NEW_BUFFERS)
5794 _mesa_update_state(ctx);
5795 params[0] = (GLint64)(ctx->DrawBuffer->Visual.alphaBits);
5796 break;
5797 case GL_ALPHA_SCALE:
5798 params[0] = IROUND64(ctx->Pixel.AlphaScale);
5799 break;
5800 case GL_ALPHA_TEST:
5801 params[0] = BOOLEAN_TO_INT64(ctx->Color.AlphaEnabled);
5802 break;
5803 case GL_ALPHA_TEST_FUNC:
5804 params[0] = ENUM_TO_INT64(ctx->Color.AlphaFunc);
5805 break;
5806 case GL_ALPHA_TEST_REF:
5807 params[0] = FLOAT_TO_INT64(ctx->Color.AlphaRef);
5808 break;
5809 case GL_ATTRIB_STACK_DEPTH:
5810 params[0] = (GLint64)(ctx->AttribStackDepth);
5811 break;
5812 case GL_AUTO_NORMAL:
5813 params[0] = BOOLEAN_TO_INT64(ctx->Eval.AutoNormal);
5814 break;
5815 case GL_AUX_BUFFERS:
5816 params[0] = (GLint64)(ctx->DrawBuffer->Visual.numAuxBuffers);
5817 break;
5818 case GL_BLEND:
5819 params[0] = BOOLEAN_TO_INT64((ctx->Color.BlendEnabled & 1));
5820 break;
5821 case GL_BLEND_DST:
5822 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB);
5823 break;
5824 case GL_BLEND_SRC:
5825 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB);
5826 break;
5827 case GL_BLEND_SRC_RGB_EXT:
5828 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB);
5829 break;
5830 case GL_BLEND_DST_RGB_EXT:
5831 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB);
5832 break;
5833 case GL_BLEND_SRC_ALPHA_EXT:
5834 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcA);
5835 break;
5836 case GL_BLEND_DST_ALPHA_EXT:
5837 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstA);
5838 break;
5839 case GL_BLEND_EQUATION:
5840 params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationRGB );
5841 break;
5842 case GL_BLEND_EQUATION_ALPHA_EXT:
5843 params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationA );
5844 break;
5845 case GL_BLEND_COLOR_EXT:
5846 params[0] = FLOAT_TO_INT64(ctx->Color.BlendColor[0]);
5847 params[1] = FLOAT_TO_INT64(ctx->Color.BlendColor[1]);
5848 params[2] = FLOAT_TO_INT64(ctx->Color.BlendColor[2]);
5849 params[3] = FLOAT_TO_INT64(ctx->Color.BlendColor[3]);
5850 break;
5851 case GL_BLUE_BIAS:
5852 params[0] = IROUND64(ctx->Pixel.BlueBias);
5853 break;
5854 case GL_BLUE_BITS:
5855 if (ctx->NewState & _NEW_BUFFERS)
5856 _mesa_update_state(ctx);
5857 params[0] = (GLint64)(ctx->DrawBuffer->Visual.blueBits);
5858 break;
5859 case GL_BLUE_SCALE:
5860 params[0] = IROUND64(ctx->Pixel.BlueScale);
5861 break;
5862 case GL_CLIENT_ATTRIB_STACK_DEPTH:
5863 params[0] = (GLint64)(ctx->ClientAttribStackDepth);
5864 break;
5865 case GL_CLIP_PLANE0:
5866 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
5867 break;
5868 case GL_CLIP_PLANE1:
5869 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
5870 break;
5871 case GL_CLIP_PLANE2:
5872 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
5873 break;
5874 case GL_CLIP_PLANE3:
5875 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
5876 break;
5877 case GL_CLIP_PLANE4:
5878 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
5879 break;
5880 case GL_CLIP_PLANE5:
5881 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
5882 break;
5883 case GL_COLOR_CLEAR_VALUE:
5884 params[0] = FLOAT_TO_INT64(ctx->Color.ClearColor[0]);
5885 params[1] = FLOAT_TO_INT64(ctx->Color.ClearColor[1]);
5886 params[2] = FLOAT_TO_INT64(ctx->Color.ClearColor[2]);
5887 params[3] = FLOAT_TO_INT64(ctx->Color.ClearColor[3]);
5888 break;
5889 case GL_COLOR_MATERIAL:
5890 params[0] = BOOLEAN_TO_INT64(ctx->Light.ColorMaterialEnabled);
5891 break;
5892 case GL_COLOR_MATERIAL_FACE:
5893 params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialFace);
5894 break;
5895 case GL_COLOR_MATERIAL_PARAMETER:
5896 params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialMode);
5897 break;
5898 case GL_COLOR_WRITEMASK:
5899 params[0] = (GLint64)(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0);
5900 params[1] = (GLint64)(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0);
5901 params[2] = (GLint64)(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0);
5902 params[3] = (GLint64)(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0);
5903 break;
5904 case GL_CULL_FACE:
5905 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.CullFlag);
5906 break;
5907 case GL_CULL_FACE_MODE:
5908 params[0] = ENUM_TO_INT64(ctx->Polygon.CullFaceMode);
5909 break;
5910 case GL_CURRENT_COLOR:
5911 FLUSH_CURRENT(ctx, 0);
5912 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
5913 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
5914 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
5915 params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
5916 break;
5917 case GL_CURRENT_INDEX:
5918 FLUSH_CURRENT(ctx, 0);
5919 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
5920 break;
5921 case GL_CURRENT_NORMAL:
5922 FLUSH_CURRENT(ctx, 0);
5923 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
5924 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
5925 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
5926 break;
5927 case GL_CURRENT_RASTER_COLOR:
5928 params[0] = FLOAT_TO_INT64(ctx->Current.RasterColor[0]);
5929 params[1] = FLOAT_TO_INT64(ctx->Current.RasterColor[1]);
5930 params[2] = FLOAT_TO_INT64(ctx->Current.RasterColor[2]);
5931 params[3] = FLOAT_TO_INT64(ctx->Current.RasterColor[3]);
5932 break;
5933 case GL_CURRENT_RASTER_DISTANCE:
5934 params[0] = IROUND64(ctx->Current.RasterDistance);
5935 break;
5936 case GL_CURRENT_RASTER_INDEX:
5937 params[0] = IROUND64(1.0);
5938 break;
5939 case GL_CURRENT_RASTER_POSITION:
5940 params[0] = IROUND64(ctx->Current.RasterPos[0]);
5941 params[1] = IROUND64(ctx->Current.RasterPos[1]);
5942 params[2] = IROUND64(ctx->Current.RasterPos[2]);
5943 params[3] = IROUND64(ctx->Current.RasterPos[3]);
5944 break;
5945 case GL_CURRENT_RASTER_SECONDARY_COLOR:
5946 params[0] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[0]);
5947 params[1] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[1]);
5948 params[2] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[2]);
5949 params[3] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[3]);
5950 break;
5951 case GL_CURRENT_RASTER_TEXTURE_COORDS:
5952 {
5953 const GLuint unit = ctx->Texture.CurrentUnit;
5954 if (unit >= ctx->Const.MaxTextureCoordUnits) {
5955 _mesa_error(ctx, GL_INVALID_OPERATION,
5956 "glGet(raster tex coords, unit %u)", unit);
5957 return;
5958 }
5959 params[0] = IROUND64(ctx->Current.RasterTexCoords[unit][0]);
5960 params[1] = IROUND64(ctx->Current.RasterTexCoords[unit][1]);
5961 params[2] = IROUND64(ctx->Current.RasterTexCoords[unit][2]);
5962 params[3] = IROUND64(ctx->Current.RasterTexCoords[unit][3]);
5963 }
5964 break;
5965 case GL_CURRENT_RASTER_POSITION_VALID:
5966 params[0] = BOOLEAN_TO_INT64(ctx->Current.RasterPosValid);
5967 break;
5968 case GL_CURRENT_TEXTURE_COORDS:
5969 {
5970 const GLuint unit = ctx->Texture.CurrentUnit;
5971 if (unit >= ctx->Const.MaxTextureCoordUnits) {
5972 _mesa_error(ctx, GL_INVALID_OPERATION,
5973 "glGet(current tex coords, unit %u)", unit);
5974 return;
5975 }
5976 FLUSH_CURRENT(ctx, 0);
5977 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]);
5978 params[1] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]);
5979 params[2] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]);
5980 params[3] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]);
5981 }
5982 break;
5983 case GL_DEPTH_BIAS:
5984 params[0] = IROUND64(ctx->Pixel.DepthBias);
5985 break;
5986 case GL_DEPTH_BITS:
5987 params[0] = (GLint64)(ctx->DrawBuffer->Visual.depthBits);
5988 break;
5989 case GL_DEPTH_CLEAR_VALUE:
5990 params[0] = FLOAT_TO_INT64(((GLfloat) ctx->Depth.Clear));
5991 break;
5992 case GL_DEPTH_FUNC:
5993 params[0] = ENUM_TO_INT64(ctx->Depth.Func);
5994 break;
5995 case GL_DEPTH_RANGE:
5996 params[0] = FLOAT_TO_INT64(ctx->Viewport.Near);
5997 params[1] = FLOAT_TO_INT64(ctx->Viewport.Far);
5998 break;
5999 case GL_DEPTH_SCALE:
6000 params[0] = IROUND64(ctx->Pixel.DepthScale);
6001 break;
6002 case GL_DEPTH_TEST:
6003 params[0] = BOOLEAN_TO_INT64(ctx->Depth.Test);
6004 break;
6005 case GL_DEPTH_WRITEMASK:
6006 params[0] = BOOLEAN_TO_INT64(ctx->Depth.Mask);
6007 break;
6008 case GL_DITHER:
6009 params[0] = BOOLEAN_TO_INT64(ctx->Color.DitherFlag);
6010 break;
6011 case GL_DOUBLEBUFFER:
6012 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.doubleBufferMode);
6013 break;
6014 case GL_DRAW_BUFFER:
6015 params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]);
6016 break;
6017 case GL_EDGE_FLAG:
6018 FLUSH_CURRENT(ctx, 0);
6019 params[0] = BOOLEAN_TO_INT64((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
6020 break;
6021 case GL_FEEDBACK_BUFFER_SIZE:
6022 params[0] = (GLint64)(ctx->Feedback.BufferSize);
6023 break;
6024 case GL_FEEDBACK_BUFFER_TYPE:
6025 params[0] = ENUM_TO_INT64(ctx->Feedback.Type);
6026 break;
6027 case GL_FOG:
6028 params[0] = BOOLEAN_TO_INT64(ctx->Fog.Enabled);
6029 break;
6030 case GL_FOG_COLOR:
6031 params[0] = FLOAT_TO_INT64(ctx->Fog.Color[0]);
6032 params[1] = FLOAT_TO_INT64(ctx->Fog.Color[1]);
6033 params[2] = FLOAT_TO_INT64(ctx->Fog.Color[2]);
6034 params[3] = FLOAT_TO_INT64(ctx->Fog.Color[3]);
6035 break;
6036 case GL_FOG_DENSITY:
6037 params[0] = IROUND64(ctx->Fog.Density);
6038 break;
6039 case GL_FOG_END:
6040 params[0] = IROUND64(ctx->Fog.End);
6041 break;
6042 case GL_FOG_HINT:
6043 params[0] = ENUM_TO_INT64(ctx->Hint.Fog);
6044 break;
6045 case GL_FOG_INDEX:
6046 params[0] = IROUND64(ctx->Fog.Index);
6047 break;
6048 case GL_FOG_MODE:
6049 params[0] = ENUM_TO_INT64(ctx->Fog.Mode);
6050 break;
6051 case GL_FOG_START:
6052 params[0] = IROUND64(ctx->Fog.Start);
6053 break;
6054 case GL_FRONT_FACE:
6055 params[0] = ENUM_TO_INT64(ctx->Polygon.FrontFace);
6056 break;
6057 case GL_GREEN_BIAS:
6058 params[0] = IROUND64(ctx->Pixel.GreenBias);
6059 break;
6060 case GL_GREEN_BITS:
6061 if (ctx->NewState & _NEW_BUFFERS)
6062 _mesa_update_state(ctx);
6063 params[0] = (GLint64)(ctx->DrawBuffer->Visual.greenBits);
6064 break;
6065 case GL_GREEN_SCALE:
6066 params[0] = IROUND64(ctx->Pixel.GreenScale);
6067 break;
6068 case GL_INDEX_BITS:
6069 if (ctx->NewState & _NEW_BUFFERS)
6070 _mesa_update_state(ctx);
6071 params[0] = (GLint64)(ctx->DrawBuffer->Visual.indexBits);
6072 break;
6073 case GL_INDEX_CLEAR_VALUE:
6074 params[0] = (GLint64)(ctx->Color.ClearIndex);
6075 break;
6076 case GL_INDEX_MODE:
6077 params[0] = BOOLEAN_TO_INT64(GL_FALSE);
6078 break;
6079 case GL_INDEX_OFFSET:
6080 params[0] = (GLint64)(ctx->Pixel.IndexOffset);
6081 break;
6082 case GL_INDEX_SHIFT:
6083 params[0] = (GLint64)(ctx->Pixel.IndexShift);
6084 break;
6085 case GL_INDEX_WRITEMASK:
6086 params[0] = (GLint64)(ctx->Color.IndexMask);
6087 break;
6088 case GL_LIGHT0:
6089 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[0].Enabled);
6090 break;
6091 case GL_LIGHT1:
6092 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[1].Enabled);
6093 break;
6094 case GL_LIGHT2:
6095 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[2].Enabled);
6096 break;
6097 case GL_LIGHT3:
6098 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[3].Enabled);
6099 break;
6100 case GL_LIGHT4:
6101 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[4].Enabled);
6102 break;
6103 case GL_LIGHT5:
6104 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[5].Enabled);
6105 break;
6106 case GL_LIGHT6:
6107 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[6].Enabled);
6108 break;
6109 case GL_LIGHT7:
6110 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[7].Enabled);
6111 break;
6112 case GL_LIGHTING:
6113 params[0] = BOOLEAN_TO_INT64(ctx->Light.Enabled);
6114 break;
6115 case GL_LIGHT_MODEL_AMBIENT:
6116 params[0] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[0]);
6117 params[1] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[1]);
6118 params[2] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[2]);
6119 params[3] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[3]);
6120 break;
6121 case GL_LIGHT_MODEL_COLOR_CONTROL:
6122 params[0] = ENUM_TO_INT64(ctx->Light.Model.ColorControl);
6123 break;
6124 case GL_LIGHT_MODEL_LOCAL_VIEWER:
6125 params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.LocalViewer);
6126 break;
6127 case GL_LIGHT_MODEL_TWO_SIDE:
6128 params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.TwoSide);
6129 break;
6130 case GL_LINE_SMOOTH:
6131 params[0] = BOOLEAN_TO_INT64(ctx->Line.SmoothFlag);
6132 break;
6133 case GL_LINE_SMOOTH_HINT:
6134 params[0] = ENUM_TO_INT64(ctx->Hint.LineSmooth);
6135 break;
6136 case GL_LINE_STIPPLE:
6137 params[0] = BOOLEAN_TO_INT64(ctx->Line.StippleFlag);
6138 break;
6139 case GL_LINE_STIPPLE_PATTERN:
6140 params[0] = (GLint64)(ctx->Line.StipplePattern);
6141 break;
6142 case GL_LINE_STIPPLE_REPEAT:
6143 params[0] = (GLint64)(ctx->Line.StippleFactor);
6144 break;
6145 case GL_LINE_WIDTH:
6146 params[0] = IROUND64(ctx->Line.Width);
6147 break;
6148 case GL_LINE_WIDTH_GRANULARITY:
6149 params[0] = IROUND64(ctx->Const.LineWidthGranularity);
6150 break;
6151 case GL_LINE_WIDTH_RANGE:
6152 params[0] = IROUND64(ctx->Const.MinLineWidthAA);
6153 params[1] = IROUND64(ctx->Const.MaxLineWidthAA);
6154 break;
6155 case GL_ALIASED_LINE_WIDTH_RANGE:
6156 params[0] = IROUND64(ctx->Const.MinLineWidth);
6157 params[1] = IROUND64(ctx->Const.MaxLineWidth);
6158 break;
6159 case GL_LIST_BASE:
6160 params[0] = (GLint64)(ctx->List.ListBase);
6161 break;
6162 case GL_LIST_INDEX:
6163 params[0] = (GLint64)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
6164 break;
6165 case GL_LIST_MODE:
6166 {
6167 GLenum mode;
6168 if (!ctx->CompileFlag)
6169 mode = 0;
6170 else if (ctx->ExecuteFlag)
6171 mode = GL_COMPILE_AND_EXECUTE;
6172 else
6173 mode = GL_COMPILE;
6174 params[0] = ENUM_TO_INT64(mode);
6175 }
6176 break;
6177 case GL_INDEX_LOGIC_OP:
6178 params[0] = BOOLEAN_TO_INT64(ctx->Color.IndexLogicOpEnabled);
6179 break;
6180 case GL_COLOR_LOGIC_OP:
6181 params[0] = BOOLEAN_TO_INT64(ctx->Color.ColorLogicOpEnabled);
6182 break;
6183 case GL_LOGIC_OP_MODE:
6184 params[0] = ENUM_TO_INT64(ctx->Color.LogicOp);
6185 break;
6186 case GL_MAP1_COLOR_4:
6187 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Color4);
6188 break;
6189 case GL_MAP1_GRID_DOMAIN:
6190 params[0] = IROUND64(ctx->Eval.MapGrid1u1);
6191 params[1] = IROUND64(ctx->Eval.MapGrid1u2);
6192 break;
6193 case GL_MAP1_GRID_SEGMENTS:
6194 params[0] = (GLint64)(ctx->Eval.MapGrid1un);
6195 break;
6196 case GL_MAP1_INDEX:
6197 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Index);
6198 break;
6199 case GL_MAP1_NORMAL:
6200 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Normal);
6201 break;
6202 case GL_MAP1_TEXTURE_COORD_1:
6203 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord1);
6204 break;
6205 case GL_MAP1_TEXTURE_COORD_2:
6206 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord2);
6207 break;
6208 case GL_MAP1_TEXTURE_COORD_3:
6209 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord3);
6210 break;
6211 case GL_MAP1_TEXTURE_COORD_4:
6212 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord4);
6213 break;
6214 case GL_MAP1_VERTEX_3:
6215 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex3);
6216 break;
6217 case GL_MAP1_VERTEX_4:
6218 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex4);
6219 break;
6220 case GL_MAP2_COLOR_4:
6221 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Color4);
6222 break;
6223 case GL_MAP2_GRID_DOMAIN:
6224 params[0] = IROUND64(ctx->Eval.MapGrid2u1);
6225 params[1] = IROUND64(ctx->Eval.MapGrid2u2);
6226 params[2] = IROUND64(ctx->Eval.MapGrid2v1);
6227 params[3] = IROUND64(ctx->Eval.MapGrid2v2);
6228 break;
6229 case GL_MAP2_GRID_SEGMENTS:
6230 params[0] = (GLint64)(ctx->Eval.MapGrid2un);
6231 params[1] = (GLint64)(ctx->Eval.MapGrid2vn);
6232 break;
6233 case GL_MAP2_INDEX:
6234 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Index);
6235 break;
6236 case GL_MAP2_NORMAL:
6237 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Normal);
6238 break;
6239 case GL_MAP2_TEXTURE_COORD_1:
6240 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord1);
6241 break;
6242 case GL_MAP2_TEXTURE_COORD_2:
6243 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord2);
6244 break;
6245 case GL_MAP2_TEXTURE_COORD_3:
6246 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord3);
6247 break;
6248 case GL_MAP2_TEXTURE_COORD_4:
6249 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord4);
6250 break;
6251 case GL_MAP2_VERTEX_3:
6252 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex3);
6253 break;
6254 case GL_MAP2_VERTEX_4:
6255 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex4);
6256 break;
6257 case GL_MAP_COLOR:
6258 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapColorFlag);
6259 break;
6260 case GL_MAP_STENCIL:
6261 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapStencilFlag);
6262 break;
6263 case GL_MATRIX_MODE:
6264 params[0] = ENUM_TO_INT64(ctx->Transform.MatrixMode);
6265 break;
6266 case GL_MAX_ATTRIB_STACK_DEPTH:
6267 params[0] = (GLint64)(MAX_ATTRIB_STACK_DEPTH);
6268 break;
6269 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
6270 params[0] = (GLint64)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
6271 break;
6272 case GL_MAX_CLIP_PLANES:
6273 params[0] = (GLint64)(ctx->Const.MaxClipPlanes);
6274 break;
6275 case GL_MAX_ELEMENTS_VERTICES:
6276 params[0] = (GLint64)(ctx->Const.MaxArrayLockSize);
6277 break;
6278 case GL_MAX_ELEMENTS_INDICES:
6279 params[0] = (GLint64)(ctx->Const.MaxArrayLockSize);
6280 break;
6281 case GL_MAX_EVAL_ORDER:
6282 params[0] = (GLint64)(MAX_EVAL_ORDER);
6283 break;
6284 case GL_MAX_LIGHTS:
6285 params[0] = (GLint64)(ctx->Const.MaxLights);
6286 break;
6287 case GL_MAX_LIST_NESTING:
6288 params[0] = (GLint64)(MAX_LIST_NESTING);
6289 break;
6290 case GL_MAX_MODELVIEW_STACK_DEPTH:
6291 params[0] = (GLint64)(MAX_MODELVIEW_STACK_DEPTH);
6292 break;
6293 case GL_MAX_NAME_STACK_DEPTH:
6294 params[0] = (GLint64)(MAX_NAME_STACK_DEPTH);
6295 break;
6296 case GL_MAX_PIXEL_MAP_TABLE:
6297 params[0] = (GLint64)(MAX_PIXEL_MAP_TABLE);
6298 break;
6299 case GL_MAX_PROJECTION_STACK_DEPTH:
6300 params[0] = (GLint64)(MAX_PROJECTION_STACK_DEPTH);
6301 break;
6302 case GL_MAX_TEXTURE_SIZE:
6303 params[0] = (GLint64)(1 << (ctx->Const.MaxTextureLevels - 1));
6304 break;
6305 case GL_MAX_3D_TEXTURE_SIZE:
6306 params[0] = (GLint64)(1 << (ctx->Const.Max3DTextureLevels - 1));
6307 break;
6308 case GL_MAX_TEXTURE_STACK_DEPTH:
6309 params[0] = (GLint64)(MAX_TEXTURE_STACK_DEPTH);
6310 break;
6311 case GL_MAX_VIEWPORT_DIMS:
6312 params[0] = (GLint64)(ctx->Const.MaxViewportWidth);
6313 params[1] = (GLint64)(ctx->Const.MaxViewportHeight);
6314 break;
6315 case GL_MODELVIEW_MATRIX:
6316 {
6317 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
6318 params[0] = IROUND64(matrix[0]);
6319 params[1] = IROUND64(matrix[1]);
6320 params[2] = IROUND64(matrix[2]);
6321 params[3] = IROUND64(matrix[3]);
6322 params[4] = IROUND64(matrix[4]);
6323 params[5] = IROUND64(matrix[5]);
6324 params[6] = IROUND64(matrix[6]);
6325 params[7] = IROUND64(matrix[7]);
6326 params[8] = IROUND64(matrix[8]);
6327 params[9] = IROUND64(matrix[9]);
6328 params[10] = IROUND64(matrix[10]);
6329 params[11] = IROUND64(matrix[11]);
6330 params[12] = IROUND64(matrix[12]);
6331 params[13] = IROUND64(matrix[13]);
6332 params[14] = IROUND64(matrix[14]);
6333 params[15] = IROUND64(matrix[15]);
6334 }
6335 break;
6336 case GL_MODELVIEW_STACK_DEPTH:
6337 params[0] = (GLint64)(ctx->ModelviewMatrixStack.Depth + 1);
6338 break;
6339 case GL_NAME_STACK_DEPTH:
6340 params[0] = (GLint64)(ctx->Select.NameStackDepth);
6341 break;
6342 case GL_NORMALIZE:
6343 params[0] = BOOLEAN_TO_INT64(ctx->Transform.Normalize);
6344 break;
6345 case GL_PACK_ALIGNMENT:
6346 params[0] = (GLint64)(ctx->Pack.Alignment);
6347 break;
6348 case GL_PACK_LSB_FIRST:
6349 params[0] = BOOLEAN_TO_INT64(ctx->Pack.LsbFirst);
6350 break;
6351 case GL_PACK_ROW_LENGTH:
6352 params[0] = (GLint64)(ctx->Pack.RowLength);
6353 break;
6354 case GL_PACK_SKIP_PIXELS:
6355 params[0] = (GLint64)(ctx->Pack.SkipPixels);
6356 break;
6357 case GL_PACK_SKIP_ROWS:
6358 params[0] = (GLint64)(ctx->Pack.SkipRows);
6359 break;
6360 case GL_PACK_SWAP_BYTES:
6361 params[0] = BOOLEAN_TO_INT64(ctx->Pack.SwapBytes);
6362 break;
6363 case GL_PACK_SKIP_IMAGES_EXT:
6364 params[0] = (GLint64)(ctx->Pack.SkipImages);
6365 break;
6366 case GL_PACK_IMAGE_HEIGHT_EXT:
6367 params[0] = (GLint64)(ctx->Pack.ImageHeight);
6368 break;
6369 case GL_PACK_INVERT_MESA:
6370 params[0] = BOOLEAN_TO_INT64(ctx->Pack.Invert);
6371 break;
6372 case GL_PERSPECTIVE_CORRECTION_HINT:
6373 params[0] = ENUM_TO_INT64(ctx->Hint.PerspectiveCorrection);
6374 break;
6375 case GL_PIXEL_MAP_A_TO_A_SIZE:
6376 params[0] = (GLint64)(ctx->PixelMaps.AtoA.Size);
6377 break;
6378 case GL_PIXEL_MAP_B_TO_B_SIZE:
6379 params[0] = (GLint64)(ctx->PixelMaps.BtoB.Size);
6380 break;
6381 case GL_PIXEL_MAP_G_TO_G_SIZE:
6382 params[0] = (GLint64)(ctx->PixelMaps.GtoG.Size);
6383 break;
6384 case GL_PIXEL_MAP_I_TO_A_SIZE:
6385 params[0] = (GLint64)(ctx->PixelMaps.ItoA.Size);
6386 break;
6387 case GL_PIXEL_MAP_I_TO_B_SIZE:
6388 params[0] = (GLint64)(ctx->PixelMaps.ItoB.Size);
6389 break;
6390 case GL_PIXEL_MAP_I_TO_G_SIZE:
6391 params[0] = (GLint64)(ctx->PixelMaps.ItoG.Size);
6392 break;
6393 case GL_PIXEL_MAP_I_TO_I_SIZE:
6394 params[0] = (GLint64)(ctx->PixelMaps.ItoI.Size);
6395 break;
6396 case GL_PIXEL_MAP_I_TO_R_SIZE:
6397 params[0] = (GLint64)(ctx->PixelMaps.ItoR.Size);
6398 break;
6399 case GL_PIXEL_MAP_R_TO_R_SIZE:
6400 params[0] = (GLint64)(ctx->PixelMaps.RtoR.Size);
6401 break;
6402 case GL_PIXEL_MAP_S_TO_S_SIZE:
6403 params[0] = (GLint64)(ctx->PixelMaps.StoS.Size);
6404 break;
6405 case GL_POINT_SIZE:
6406 params[0] = IROUND64(ctx->Point.Size);
6407 break;
6408 case GL_POINT_SIZE_GRANULARITY:
6409 params[0] = IROUND64(ctx->Const.PointSizeGranularity);
6410 break;
6411 case GL_POINT_SIZE_RANGE:
6412 params[0] = IROUND64(ctx->Const.MinPointSizeAA);
6413 params[1] = IROUND64(ctx->Const.MaxPointSizeAA);
6414 break;
6415 case GL_ALIASED_POINT_SIZE_RANGE:
6416 params[0] = IROUND64(ctx->Const.MinPointSize);
6417 params[1] = IROUND64(ctx->Const.MaxPointSize);
6418 break;
6419 case GL_POINT_SMOOTH:
6420 params[0] = BOOLEAN_TO_INT64(ctx->Point.SmoothFlag);
6421 break;
6422 case GL_POINT_SMOOTH_HINT:
6423 params[0] = ENUM_TO_INT64(ctx->Hint.PointSmooth);
6424 break;
6425 case GL_POINT_SIZE_MIN_EXT:
6426 params[0] = IROUND64(ctx->Point.MinSize);
6427 break;
6428 case GL_POINT_SIZE_MAX_EXT:
6429 params[0] = IROUND64(ctx->Point.MaxSize);
6430 break;
6431 case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
6432 params[0] = IROUND64(ctx->Point.Threshold);
6433 break;
6434 case GL_DISTANCE_ATTENUATION_EXT:
6435 params[0] = IROUND64(ctx->Point.Params[0]);
6436 params[1] = IROUND64(ctx->Point.Params[1]);
6437 params[2] = IROUND64(ctx->Point.Params[2]);
6438 break;
6439 case GL_POLYGON_MODE:
6440 params[0] = ENUM_TO_INT64(ctx->Polygon.FrontMode);
6441 params[1] = ENUM_TO_INT64(ctx->Polygon.BackMode);
6442 break;
6443 case GL_POLYGON_OFFSET_BIAS_EXT:
6444 params[0] = IROUND64(ctx->Polygon.OffsetUnits);
6445 break;
6446 case GL_POLYGON_OFFSET_FACTOR:
6447 params[0] = IROUND64(ctx->Polygon.OffsetFactor );
6448 break;
6449 case GL_POLYGON_OFFSET_UNITS:
6450 params[0] = IROUND64(ctx->Polygon.OffsetUnits );
6451 break;
6452 case GL_POLYGON_OFFSET_POINT:
6453 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetPoint);
6454 break;
6455 case GL_POLYGON_OFFSET_LINE:
6456 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetLine);
6457 break;
6458 case GL_POLYGON_OFFSET_FILL:
6459 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetFill);
6460 break;
6461 case GL_POLYGON_SMOOTH:
6462 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.SmoothFlag);
6463 break;
6464 case GL_POLYGON_SMOOTH_HINT:
6465 params[0] = ENUM_TO_INT64(ctx->Hint.PolygonSmooth);
6466 break;
6467 case GL_POLYGON_STIPPLE:
6468 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.StippleFlag);
6469 break;
6470 case GL_PROJECTION_MATRIX:
6471 {
6472 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
6473 params[0] = IROUND64(matrix[0]);
6474 params[1] = IROUND64(matrix[1]);
6475 params[2] = IROUND64(matrix[2]);
6476 params[3] = IROUND64(matrix[3]);
6477 params[4] = IROUND64(matrix[4]);
6478 params[5] = IROUND64(matrix[5]);
6479 params[6] = IROUND64(matrix[6]);
6480 params[7] = IROUND64(matrix[7]);
6481 params[8] = IROUND64(matrix[8]);
6482 params[9] = IROUND64(matrix[9]);
6483 params[10] = IROUND64(matrix[10]);
6484 params[11] = IROUND64(matrix[11]);
6485 params[12] = IROUND64(matrix[12]);
6486 params[13] = IROUND64(matrix[13]);
6487 params[14] = IROUND64(matrix[14]);
6488 params[15] = IROUND64(matrix[15]);
6489 }
6490 break;
6491 case GL_PROJECTION_STACK_DEPTH:
6492 params[0] = (GLint64)(ctx->ProjectionMatrixStack.Depth + 1);
6493 break;
6494 case GL_READ_BUFFER:
6495 params[0] = ENUM_TO_INT64(ctx->ReadBuffer->ColorReadBuffer);
6496 break;
6497 case GL_RED_BIAS:
6498 params[0] = IROUND64(ctx->Pixel.RedBias);
6499 break;
6500 case GL_RED_BITS:
6501 if (ctx->NewState & _NEW_BUFFERS)
6502 _mesa_update_state(ctx);
6503 params[0] = (GLint64)(ctx->DrawBuffer->Visual.redBits);
6504 break;
6505 case GL_RED_SCALE:
6506 params[0] = IROUND64(ctx->Pixel.RedScale);
6507 break;
6508 case GL_RENDER_MODE:
6509 params[0] = ENUM_TO_INT64(ctx->RenderMode);
6510 break;
6511 case GL_RESCALE_NORMAL:
6512 params[0] = BOOLEAN_TO_INT64(ctx->Transform.RescaleNormals);
6513 break;
6514 case GL_RGBA_MODE:
6515 params[0] = BOOLEAN_TO_INT64(GL_TRUE);
6516 break;
6517 case GL_SCISSOR_BOX:
6518 params[0] = (GLint64)(ctx->Scissor.X);
6519 params[1] = (GLint64)(ctx->Scissor.Y);
6520 params[2] = (GLint64)(ctx->Scissor.Width);
6521 params[3] = (GLint64)(ctx->Scissor.Height);
6522 break;
6523 case GL_SCISSOR_TEST:
6524 params[0] = BOOLEAN_TO_INT64(ctx->Scissor.Enabled);
6525 break;
6526 case GL_SELECTION_BUFFER_SIZE:
6527 params[0] = (GLint64)(ctx->Select.BufferSize);
6528 break;
6529 case GL_SHADE_MODEL:
6530 params[0] = ENUM_TO_INT64(ctx->Light.ShadeModel);
6531 break;
6532 case GL_SHARED_TEXTURE_PALETTE_EXT:
6533 params[0] = BOOLEAN_TO_INT64(ctx->Texture.SharedPalette);
6534 break;
6535 case GL_STENCIL_BITS:
6536 params[0] = (GLint64)(ctx->DrawBuffer->Visual.stencilBits);
6537 break;
6538 case GL_STENCIL_CLEAR_VALUE:
6539 params[0] = (GLint64)(ctx->Stencil.Clear);
6540 break;
6541 case GL_STENCIL_FAIL:
6542 params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
6543 break;
6544 case GL_STENCIL_FUNC:
6545 params[0] = ENUM_TO_INT64(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
6546 break;
6547 case GL_STENCIL_PASS_DEPTH_FAIL:
6548 params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
6549 break;
6550 case GL_STENCIL_PASS_DEPTH_PASS:
6551 params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
6552 break;
6553 case GL_STENCIL_REF:
6554 params[0] = (GLint64)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
6555 break;
6556 case GL_STENCIL_TEST:
6557 params[0] = BOOLEAN_TO_INT64(ctx->Stencil.Enabled);
6558 break;
6559 case GL_STENCIL_VALUE_MASK:
6560 params[0] = (GLint64)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
6561 break;
6562 case GL_STENCIL_WRITEMASK:
6563 params[0] = (GLint64)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
6564 break;
6565 case GL_STEREO:
6566 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.stereoMode);
6567 break;
6568 case GL_SUBPIXEL_BITS:
6569 params[0] = (GLint64)(ctx->Const.SubPixelBits);
6570 break;
6571 case GL_TEXTURE_1D:
6572 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D));
6573 break;
6574 case GL_TEXTURE_2D:
6575 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D));
6576 break;
6577 case GL_TEXTURE_3D:
6578 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D));
6579 break;
6580 case GL_TEXTURE_1D_ARRAY_EXT:
6581 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6582 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
6583 break;
6584 case GL_TEXTURE_2D_ARRAY_EXT:
6585 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6586 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
6587 break;
6588 case GL_TEXTURE_BINDING_1D:
6589 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
6590 break;
6591 case GL_TEXTURE_BINDING_2D:
6592 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
6593 break;
6594 case GL_TEXTURE_BINDING_3D:
6595 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
6596 break;
6597 case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
6598 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6599 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
6600 break;
6601 case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
6602 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6603 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
6604 break;
6605 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
6606 CHECK_EXT1(MESA_texture_array, "GetInteger64v");
6607 params[0] = (GLint64)(ctx->Const.MaxArrayTextureLayers);
6608 break;
6609 case GL_TEXTURE_GEN_S:
6610 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
6611 break;
6612 case GL_TEXTURE_GEN_T:
6613 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
6614 break;
6615 case GL_TEXTURE_GEN_R:
6616 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
6617 break;
6618 case GL_TEXTURE_GEN_Q:
6619 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
6620 break;
6621 case GL_TEXTURE_MATRIX:
6622 {
6623 const GLfloat *matrix;
6624 const GLuint unit = ctx->Texture.CurrentUnit;
6625 if (unit >= ctx->Const.MaxTextureCoordUnits) {
6626 _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
6627 unit);
6628 return;
6629 }
6630 matrix = ctx->TextureMatrixStack[unit].Top->m;
6631 params[0] = IROUND64(matrix[0]);
6632 params[1] = IROUND64(matrix[1]);
6633 params[2] = IROUND64(matrix[2]);
6634 params[3] = IROUND64(matrix[3]);
6635 params[4] = IROUND64(matrix[4]);
6636 params[5] = IROUND64(matrix[5]);
6637 params[6] = IROUND64(matrix[6]);
6638 params[7] = IROUND64(matrix[7]);
6639 params[8] = IROUND64(matrix[8]);
6640 params[9] = IROUND64(matrix[9]);
6641 params[10] = IROUND64(matrix[10]);
6642 params[11] = IROUND64(matrix[11]);
6643 params[12] = IROUND64(matrix[12]);
6644 params[13] = IROUND64(matrix[13]);
6645 params[14] = IROUND64(matrix[14]);
6646 params[15] = IROUND64(matrix[15]);
6647 }
6648 break;
6649 case GL_TEXTURE_STACK_DEPTH:
6650 {
6651 const GLuint unit = ctx->Texture.CurrentUnit;
6652 if (unit >= ctx->Const.MaxTextureCoordUnits) {
6653 _mesa_error(ctx, GL_INVALID_OPERATION,
6654 "glGet(texture stack depth, unit %u)", unit);
6655 return;
6656 }
6657 params[0] = (GLint64)(ctx->TextureMatrixStack[unit].Depth + 1);
6658 }
6659 break;
6660 case GL_UNPACK_ALIGNMENT:
6661 params[0] = (GLint64)(ctx->Unpack.Alignment);
6662 break;
6663 case GL_UNPACK_LSB_FIRST:
6664 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.LsbFirst);
6665 break;
6666 case GL_UNPACK_ROW_LENGTH:
6667 params[0] = (GLint64)(ctx->Unpack.RowLength);
6668 break;
6669 case GL_UNPACK_SKIP_PIXELS:
6670 params[0] = (GLint64)(ctx->Unpack.SkipPixels);
6671 break;
6672 case GL_UNPACK_SKIP_ROWS:
6673 params[0] = (GLint64)(ctx->Unpack.SkipRows);
6674 break;
6675 case GL_UNPACK_SWAP_BYTES:
6676 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.SwapBytes);
6677 break;
6678 case GL_UNPACK_SKIP_IMAGES_EXT:
6679 params[0] = (GLint64)(ctx->Unpack.SkipImages);
6680 break;
6681 case GL_UNPACK_IMAGE_HEIGHT_EXT:
6682 params[0] = (GLint64)(ctx->Unpack.ImageHeight);
6683 break;
6684 case GL_UNPACK_CLIENT_STORAGE_APPLE:
6685 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.ClientStorage);
6686 break;
6687 case GL_VIEWPORT:
6688 params[0] = (GLint64)(ctx->Viewport.X);
6689 params[1] = (GLint64)(ctx->Viewport.Y);
6690 params[2] = (GLint64)(ctx->Viewport.Width);
6691 params[3] = (GLint64)(ctx->Viewport.Height);
6692 break;
6693 case GL_ZOOM_X:
6694 params[0] = IROUND64(ctx->Pixel.ZoomX);
6695 break;
6696 case GL_ZOOM_Y:
6697 params[0] = IROUND64(ctx->Pixel.ZoomY);
6698 break;
6699 case GL_VERTEX_ARRAY:
6700 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Vertex.Enabled);
6701 break;
6702 case GL_VERTEX_ARRAY_SIZE:
6703 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.Size);
6704 break;
6705 case GL_VERTEX_ARRAY_TYPE:
6706 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Vertex.Type);
6707 break;
6708 case GL_VERTEX_ARRAY_STRIDE:
6709 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.Stride);
6710 break;
6711 case GL_VERTEX_ARRAY_COUNT_EXT:
6712 params[0] = (GLint64)(0);
6713 break;
6714 case GL_NORMAL_ARRAY:
6715 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Enabled);
6716 break;
6717 case GL_NORMAL_ARRAY_TYPE:
6718 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Type);
6719 break;
6720 case GL_NORMAL_ARRAY_STRIDE:
6721 params[0] = (GLint64)(ctx->Array.ArrayObj->Normal.Stride);
6722 break;
6723 case GL_NORMAL_ARRAY_COUNT_EXT:
6724 params[0] = (GLint64)(0);
6725 break;
6726 case GL_COLOR_ARRAY:
6727 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Color.Enabled);
6728 break;
6729 case GL_COLOR_ARRAY_SIZE:
6730 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.Size);
6731 break;
6732 case GL_COLOR_ARRAY_TYPE:
6733 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Color.Type);
6734 break;
6735 case GL_COLOR_ARRAY_STRIDE:
6736 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.Stride);
6737 break;
6738 case GL_COLOR_ARRAY_COUNT_EXT:
6739 params[0] = (GLint64)(0);
6740 break;
6741 case GL_INDEX_ARRAY:
6742 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Index.Enabled);
6743 break;
6744 case GL_INDEX_ARRAY_TYPE:
6745 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Index.Type);
6746 break;
6747 case GL_INDEX_ARRAY_STRIDE:
6748 params[0] = (GLint64)(ctx->Array.ArrayObj->Index.Stride);
6749 break;
6750 case GL_INDEX_ARRAY_COUNT_EXT:
6751 params[0] = (GLint64)(0);
6752 break;
6753 case GL_TEXTURE_COORD_ARRAY:
6754 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
6755 break;
6756 case GL_TEXTURE_COORD_ARRAY_SIZE:
6757 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
6758 break;
6759 case GL_TEXTURE_COORD_ARRAY_TYPE:
6760 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
6761 break;
6762 case GL_TEXTURE_COORD_ARRAY_STRIDE:
6763 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
6764 break;
6765 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
6766 params[0] = (GLint64)(0);
6767 break;
6768 case GL_EDGE_FLAG_ARRAY:
6769 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->EdgeFlag.Enabled);
6770 break;
6771 case GL_EDGE_FLAG_ARRAY_STRIDE:
6772 params[0] = (GLint64)(ctx->Array.ArrayObj->EdgeFlag.Stride);
6773 break;
6774 case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
6775 params[0] = (GLint64)(0);
6776 break;
6777 case GL_MAX_TEXTURE_UNITS_ARB:
6778 CHECK_EXT1(ARB_multitexture, "GetInteger64v");
6779 params[0] = (GLint64)(ctx->Const.MaxTextureUnits);
6780 break;
6781 case GL_ACTIVE_TEXTURE_ARB:
6782 CHECK_EXT1(ARB_multitexture, "GetInteger64v");
6783 params[0] = (GLint64)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
6784 break;
6785 case GL_CLIENT_ACTIVE_TEXTURE_ARB:
6786 CHECK_EXT1(ARB_multitexture, "GetInteger64v");
6787 params[0] = (GLint64)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
6788 break;
6789 case GL_TEXTURE_CUBE_MAP_ARB:
6790 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v");
6791 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
6792 break;
6793 case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
6794 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v");
6795 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
6796 break;
6797 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
6798 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v");
6799 params[0] = (GLint64)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
6800 break;
6801 case GL_TEXTURE_COMPRESSION_HINT_ARB:
6802 params[0] = (GLint64)(ctx->Hint.TextureCompression);
6803 break;
6804 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
6805 params[0] = (GLint64)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
6806 break;
6807 case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
6808 {
6809 GLint formats[100];
6810 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
6811 ASSERT(n <= 100);
6812 for (i = 0; i < n; i++)
6813 params[i] = ENUM_TO_INT64(formats[i]);
6814 }
6815 break;
6816 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
6817 CHECK_EXT1(EXT_compiled_vertex_array, "GetInteger64v");
6818 params[0] = (GLint64)(ctx->Array.LockFirst);
6819 break;
6820 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
6821 CHECK_EXT1(EXT_compiled_vertex_array, "GetInteger64v");
6822 params[0] = (GLint64)(ctx->Array.LockCount);
6823 break;
6824 case GL_TRANSPOSE_COLOR_MATRIX_ARB:
6825 {
6826 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
6827 params[0] = IROUND64(matrix[0]);
6828 params[1] = IROUND64(matrix[4]);
6829 params[2] = IROUND64(matrix[8]);
6830 params[3] = IROUND64(matrix[12]);
6831 params[4] = IROUND64(matrix[1]);
6832 params[5] = IROUND64(matrix[5]);
6833 params[6] = IROUND64(matrix[9]);
6834 params[7] = IROUND64(matrix[13]);
6835 params[8] = IROUND64(matrix[2]);
6836 params[9] = IROUND64(matrix[6]);
6837 params[10] = IROUND64(matrix[10]);
6838 params[11] = IROUND64(matrix[14]);
6839 params[12] = IROUND64(matrix[3]);
6840 params[13] = IROUND64(matrix[7]);
6841 params[14] = IROUND64(matrix[11]);
6842 params[15] = IROUND64(matrix[15]);
6843 }
6844 break;
6845 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
6846 {
6847 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
6848 params[0] = IROUND64(matrix[0]);
6849 params[1] = IROUND64(matrix[4]);
6850 params[2] = IROUND64(matrix[8]);
6851 params[3] = IROUND64(matrix[12]);
6852 params[4] = IROUND64(matrix[1]);
6853 params[5] = IROUND64(matrix[5]);
6854 params[6] = IROUND64(matrix[9]);
6855 params[7] = IROUND64(matrix[13]);
6856 params[8] = IROUND64(matrix[2]);
6857 params[9] = IROUND64(matrix[6]);
6858 params[10] = IROUND64(matrix[10]);
6859 params[11] = IROUND64(matrix[14]);
6860 params[12] = IROUND64(matrix[3]);
6861 params[13] = IROUND64(matrix[7]);
6862 params[14] = IROUND64(matrix[11]);
6863 params[15] = IROUND64(matrix[15]);
6864 }
6865 break;
6866 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
6867 {
6868 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
6869 params[0] = IROUND64(matrix[0]);
6870 params[1] = IROUND64(matrix[4]);
6871 params[2] = IROUND64(matrix[8]);
6872 params[3] = IROUND64(matrix[12]);
6873 params[4] = IROUND64(matrix[1]);
6874 params[5] = IROUND64(matrix[5]);
6875 params[6] = IROUND64(matrix[9]);
6876 params[7] = IROUND64(matrix[13]);
6877 params[8] = IROUND64(matrix[2]);
6878 params[9] = IROUND64(matrix[6]);
6879 params[10] = IROUND64(matrix[10]);
6880 params[11] = IROUND64(matrix[14]);
6881 params[12] = IROUND64(matrix[3]);
6882 params[13] = IROUND64(matrix[7]);
6883 params[14] = IROUND64(matrix[11]);
6884 params[15] = IROUND64(matrix[15]);
6885 }
6886 break;
6887 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
6888 {
6889 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
6890 params[0] = IROUND64(matrix[0]);
6891 params[1] = IROUND64(matrix[4]);
6892 params[2] = IROUND64(matrix[8]);
6893 params[3] = IROUND64(matrix[12]);
6894 params[4] = IROUND64(matrix[1]);
6895 params[5] = IROUND64(matrix[5]);
6896 params[6] = IROUND64(matrix[9]);
6897 params[7] = IROUND64(matrix[13]);
6898 params[8] = IROUND64(matrix[2]);
6899 params[9] = IROUND64(matrix[6]);
6900 params[10] = IROUND64(matrix[10]);
6901 params[11] = IROUND64(matrix[14]);
6902 params[12] = IROUND64(matrix[3]);
6903 params[13] = IROUND64(matrix[7]);
6904 params[14] = IROUND64(matrix[11]);
6905 params[15] = IROUND64(matrix[15]);
6906 }
6907 break;
6908 case GL_COLOR_MATRIX_SGI:
6909 {
6910 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
6911 params[0] = IROUND64(matrix[0]);
6912 params[1] = IROUND64(matrix[1]);
6913 params[2] = IROUND64(matrix[2]);
6914 params[3] = IROUND64(matrix[3]);
6915 params[4] = IROUND64(matrix[4]);
6916 params[5] = IROUND64(matrix[5]);
6917 params[6] = IROUND64(matrix[6]);
6918 params[7] = IROUND64(matrix[7]);
6919 params[8] = IROUND64(matrix[8]);
6920 params[9] = IROUND64(matrix[9]);
6921 params[10] = IROUND64(matrix[10]);
6922 params[11] = IROUND64(matrix[11]);
6923 params[12] = IROUND64(matrix[12]);
6924 params[13] = IROUND64(matrix[13]);
6925 params[14] = IROUND64(matrix[14]);
6926 params[15] = IROUND64(matrix[15]);
6927 }
6928 break;
6929 case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
6930 params[0] = (GLint64)(ctx->ColorMatrixStack.Depth + 1);
6931 break;
6932 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
6933 params[0] = (GLint64)(MAX_COLOR_STACK_DEPTH);
6934 break;
6935 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
6936 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[0]);
6937 break;
6938 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
6939 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[1]);
6940 break;
6941 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
6942 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[2]);
6943 break;
6944 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
6945 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[3]);
6946 break;
6947 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
6948 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[0]);
6949 break;
6950 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
6951 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[1]);
6952 break;
6953 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
6954 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[2]);
6955 break;
6956 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
6957 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[3]);
6958 break;
6959 case GL_CONVOLUTION_1D_EXT:
6960 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6961 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution1DEnabled);
6962 break;
6963 case GL_CONVOLUTION_2D_EXT:
6964 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6965 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution2DEnabled);
6966 break;
6967 case GL_SEPARABLE_2D_EXT:
6968 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6969 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Separable2DEnabled);
6970 break;
6971 case GL_POST_CONVOLUTION_RED_SCALE_EXT:
6972 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6973 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[0]);
6974 break;
6975 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
6976 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6977 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[1]);
6978 break;
6979 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
6980 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6981 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[2]);
6982 break;
6983 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
6984 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6985 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[3]);
6986 break;
6987 case GL_POST_CONVOLUTION_RED_BIAS_EXT:
6988 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6989 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[0]);
6990 break;
6991 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
6992 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6993 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[1]);
6994 break;
6995 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
6996 CHECK_EXT1(EXT_convolution, "GetInteger64v");
6997 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[2]);
6998 break;
6999 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
7000 CHECK_EXT1(EXT_convolution, "GetInteger64v");
7001 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[3]);
7002 break;
7003 case GL_HISTOGRAM:
7004 CHECK_EXT1(EXT_histogram, "GetInteger64v");
7005 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.HistogramEnabled);
7006 break;
7007 case GL_MINMAX:
7008 CHECK_EXT1(EXT_histogram, "GetInteger64v");
7009 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MinMaxEnabled);
7010 break;
7011 case GL_COLOR_TABLE_SGI:
7012 CHECK_EXT1(SGI_color_table, "GetInteger64v");
7013 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
7014 break;
7015 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
7016 CHECK_EXT1(SGI_color_table, "GetInteger64v");
7017 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
7018 break;
7019 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
7020 CHECK_EXT1(SGI_color_table, "GetInteger64v");
7021 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
7022 break;
7023 case GL_TEXTURE_COLOR_TABLE_SGI:
7024 CHECK_EXT1(SGI_texture_color_table, "GetInteger64v");
7025 params[0] = BOOLEAN_TO_INT64(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
7026 break;
7027 case GL_COLOR_SUM_EXT:
7028 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetInteger64v");
7029 params[0] = BOOLEAN_TO_INT64(ctx->Fog.ColorSumEnabled);
7030 break;
7031 case GL_CURRENT_SECONDARY_COLOR_EXT:
7032 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
7033 FLUSH_CURRENT(ctx, 0);
7034 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
7035 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
7036 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
7037 params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
7038 break;
7039 case GL_SECONDARY_COLOR_ARRAY_EXT:
7040 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
7041 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Enabled);
7042 break;
7043 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
7044 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
7045 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Type);
7046 break;
7047 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
7048 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
7049 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.Stride);
7050 break;
7051 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
7052 CHECK_EXT1(EXT_secondary_color, "GetInteger64v");
7053 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.Size);
7054 break;
7055 case GL_CURRENT_FOG_COORDINATE_EXT:
7056 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
7057 FLUSH_CURRENT(ctx, 0);
7058 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
7059 break;
7060 case GL_FOG_COORDINATE_ARRAY_EXT:
7061 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
7062 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->FogCoord.Enabled);
7063 break;
7064 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
7065 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
7066 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->FogCoord.Type);
7067 break;
7068 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
7069 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
7070 params[0] = (GLint64)(ctx->Array.ArrayObj->FogCoord.Stride);
7071 break;
7072 case GL_FOG_COORDINATE_SOURCE_EXT:
7073 CHECK_EXT1(EXT_fog_coord, "GetInteger64v");
7074 params[0] = ENUM_TO_INT64(ctx->Fog.FogCoordinateSource);
7075 break;
7076 case GL_MAX_TEXTURE_LOD_BIAS_EXT:
7077 CHECK_EXT1(EXT_texture_lod_bias, "GetInteger64v");
7078 params[0] = IROUND64(ctx->Const.MaxTextureLodBias);
7079 break;
7080 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
7081 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetInteger64v");
7082 params[0] = IROUND64(ctx->Const.MaxTextureMaxAnisotropy);
7083 break;
7084 case GL_MULTISAMPLE_ARB:
7085 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.Enabled);
7086 break;
7087 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
7088 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToCoverage);
7089 break;
7090 case GL_SAMPLE_ALPHA_TO_ONE_ARB:
7091 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToOne);
7092 break;
7093 case GL_SAMPLE_COVERAGE_ARB:
7094 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverage);
7095 break;
7096 case GL_SAMPLE_COVERAGE_VALUE_ARB:
7097 params[0] = IROUND64(ctx->Multisample.SampleCoverageValue);
7098 break;
7099 case GL_SAMPLE_COVERAGE_INVERT_ARB:
7100 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverageInvert);
7101 break;
7102 case GL_SAMPLE_BUFFERS_ARB:
7103 params[0] = (GLint64)(ctx->DrawBuffer->Visual.sampleBuffers);
7104 break;
7105 case GL_SAMPLES_ARB:
7106 params[0] = (GLint64)(ctx->DrawBuffer->Visual.samples);
7107 break;
7108 case GL_RASTER_POSITION_UNCLIPPED_IBM:
7109 CHECK_EXT1(IBM_rasterpos_clip, "GetInteger64v");
7110 params[0] = BOOLEAN_TO_INT64(ctx->Transform.RasterPositionUnclipped);
7111 break;
7112 case GL_POINT_SPRITE_NV:
7113 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetInteger64v");
7114 params[0] = BOOLEAN_TO_INT64(ctx->Point.PointSprite);
7115 break;
7116 case GL_POINT_SPRITE_R_MODE_NV:
7117 CHECK_EXT1(NV_point_sprite, "GetInteger64v");
7118 params[0] = ENUM_TO_INT64(ctx->Point.SpriteRMode);
7119 break;
7120 case GL_POINT_SPRITE_COORD_ORIGIN:
7121 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetInteger64v");
7122 params[0] = ENUM_TO_INT64(ctx->Point.SpriteOrigin);
7123 break;
7124 case GL_GENERATE_MIPMAP_HINT_SGIS:
7125 CHECK_EXT1(SGIS_generate_mipmap, "GetInteger64v");
7126 params[0] = ENUM_TO_INT64(ctx->Hint.GenerateMipmap);
7127 break;
7128 case GL_VERTEX_PROGRAM_BINDING_NV:
7129 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7130 params[0] = (GLint64)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
7131 break;
7132 case GL_VERTEX_ATTRIB_ARRAY0_NV:
7133 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7134 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
7135 break;
7136 case GL_VERTEX_ATTRIB_ARRAY1_NV:
7137 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7138 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
7139 break;
7140 case GL_VERTEX_ATTRIB_ARRAY2_NV:
7141 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7142 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
7143 break;
7144 case GL_VERTEX_ATTRIB_ARRAY3_NV:
7145 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7146 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
7147 break;
7148 case GL_VERTEX_ATTRIB_ARRAY4_NV:
7149 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7150 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
7151 break;
7152 case GL_VERTEX_ATTRIB_ARRAY5_NV:
7153 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7154 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
7155 break;
7156 case GL_VERTEX_ATTRIB_ARRAY6_NV:
7157 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7158 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
7159 break;
7160 case GL_VERTEX_ATTRIB_ARRAY7_NV:
7161 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7162 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
7163 break;
7164 case GL_VERTEX_ATTRIB_ARRAY8_NV:
7165 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7166 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
7167 break;
7168 case GL_VERTEX_ATTRIB_ARRAY9_NV:
7169 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7170 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
7171 break;
7172 case GL_VERTEX_ATTRIB_ARRAY10_NV:
7173 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7174 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
7175 break;
7176 case GL_VERTEX_ATTRIB_ARRAY11_NV:
7177 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7178 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
7179 break;
7180 case GL_VERTEX_ATTRIB_ARRAY12_NV:
7181 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7182 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
7183 break;
7184 case GL_VERTEX_ATTRIB_ARRAY13_NV:
7185 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7186 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
7187 break;
7188 case GL_VERTEX_ATTRIB_ARRAY14_NV:
7189 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7190 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
7191 break;
7192 case GL_VERTEX_ATTRIB_ARRAY15_NV:
7193 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7194 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
7195 break;
7196 case GL_MAP1_VERTEX_ATTRIB0_4_NV:
7197 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7198 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[0]);
7199 break;
7200 case GL_MAP1_VERTEX_ATTRIB1_4_NV:
7201 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7202 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[1]);
7203 break;
7204 case GL_MAP1_VERTEX_ATTRIB2_4_NV:
7205 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7206 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[2]);
7207 break;
7208 case GL_MAP1_VERTEX_ATTRIB3_4_NV:
7209 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7210 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[3]);
7211 break;
7212 case GL_MAP1_VERTEX_ATTRIB4_4_NV:
7213 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7214 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[4]);
7215 break;
7216 case GL_MAP1_VERTEX_ATTRIB5_4_NV:
7217 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7218 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[5]);
7219 break;
7220 case GL_MAP1_VERTEX_ATTRIB6_4_NV:
7221 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7222 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[6]);
7223 break;
7224 case GL_MAP1_VERTEX_ATTRIB7_4_NV:
7225 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7226 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[7]);
7227 break;
7228 case GL_MAP1_VERTEX_ATTRIB8_4_NV:
7229 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7230 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[8]);
7231 break;
7232 case GL_MAP1_VERTEX_ATTRIB9_4_NV:
7233 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7234 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[9]);
7235 break;
7236 case GL_MAP1_VERTEX_ATTRIB10_4_NV:
7237 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7238 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[10]);
7239 break;
7240 case GL_MAP1_VERTEX_ATTRIB11_4_NV:
7241 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7242 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[11]);
7243 break;
7244 case GL_MAP1_VERTEX_ATTRIB12_4_NV:
7245 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7246 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[12]);
7247 break;
7248 case GL_MAP1_VERTEX_ATTRIB13_4_NV:
7249 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7250 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[13]);
7251 break;
7252 case GL_MAP1_VERTEX_ATTRIB14_4_NV:
7253 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7254 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[14]);
7255 break;
7256 case GL_MAP1_VERTEX_ATTRIB15_4_NV:
7257 CHECK_EXT1(NV_vertex_program, "GetInteger64v");
7258 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[15]);
7259 break;
7260 case GL_FRAGMENT_PROGRAM_NV:
7261 CHECK_EXT1(NV_fragment_program, "GetInteger64v");
7262 params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled);
7263 break;
7264 case GL_FRAGMENT_PROGRAM_BINDING_NV:
7265 CHECK_EXT1(NV_fragment_program, "GetInteger64v");
7266 params[0] = (GLint64)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
7267 break;
7268 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
7269 CHECK_EXT1(NV_fragment_program, "GetInteger64v");
7270 params[0] = (GLint64)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
7271 break;
7272 case GL_TEXTURE_RECTANGLE_NV:
7273 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v");
7274 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
7275 break;
7276 case GL_TEXTURE_BINDING_RECTANGLE_NV:
7277 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v");
7278 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
7279 break;
7280 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
7281 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v");
7282 params[0] = (GLint64)(ctx->Const.MaxTextureRectSize);
7283 break;
7284 case GL_STENCIL_TEST_TWO_SIDE_EXT:
7285 CHECK_EXT1(EXT_stencil_two_side, "GetInteger64v");
7286 params[0] = BOOLEAN_TO_INT64(ctx->Stencil.TestTwoSide);
7287 break;
7288 case GL_ACTIVE_STENCIL_FACE_EXT:
7289 CHECK_EXT1(EXT_stencil_two_side, "GetInteger64v");
7290 params[0] = ENUM_TO_INT64(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
7291 break;
7292 case GL_MAX_SHININESS_NV:
7293 CHECK_EXT1(NV_light_max_exponent, "GetInteger64v");
7294 params[0] = IROUND64(ctx->Const.MaxShininess);
7295 break;
7296 case GL_MAX_SPOT_EXPONENT_NV:
7297 CHECK_EXT1(NV_light_max_exponent, "GetInteger64v");
7298 params[0] = IROUND64(ctx->Const.MaxSpotExponent);
7299 break;
7300 case GL_ARRAY_BUFFER_BINDING_ARB:
7301 params[0] = (GLint64)(ctx->Array.ArrayBufferObj->Name);
7302 break;
7303 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
7304 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
7305 break;
7306 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
7307 params[0] = (GLint64)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
7308 break;
7309 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
7310 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.BufferObj->Name);
7311 break;
7312 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
7313 params[0] = (GLint64)(ctx->Array.ArrayObj->Index.BufferObj->Name);
7314 break;
7315 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
7316 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
7317 break;
7318 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
7319 params[0] = (GLint64)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
7320 break;
7321 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
7322 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
7323 break;
7324 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
7325 params[0] = (GLint64)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
7326 break;
7327 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
7328 params[0] = (GLint64)(ctx->Array.ElementArrayBufferObj->Name);
7329 break;
7330 case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
7331 CHECK_EXT1(EXT_pixel_buffer_object, "GetInteger64v");
7332 params[0] = (GLint64)(ctx->Pack.BufferObj->Name);
7333 break;
7334 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
7335 CHECK_EXT1(EXT_pixel_buffer_object, "GetInteger64v");
7336 params[0] = (GLint64)(ctx->Unpack.BufferObj->Name);
7337 break;
7338 case GL_VERTEX_PROGRAM_ARB:
7339 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v");
7340 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.Enabled);
7341 break;
7342 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
7343 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v");
7344 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.PointSizeEnabled);
7345 break;
7346 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
7347 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v");
7348 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.TwoSideEnabled);
7349 break;
7350 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
7351 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v");
7352 params[0] = (GLint64)(ctx->Const.MaxProgramMatrixStackDepth);
7353 break;
7354 case GL_MAX_PROGRAM_MATRICES_ARB:
7355 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v");
7356 params[0] = (GLint64)(ctx->Const.MaxProgramMatrices);
7357 break;
7358 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
7359 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v");
7360 params[0] = BOOLEAN_TO_INT64(ctx->CurrentStack->Depth + 1);
7361 break;
7362 case GL_CURRENT_MATRIX_ARB:
7363 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetInteger64v");
7364 {
7365 const GLfloat *matrix = ctx->CurrentStack->Top->m;
7366 params[0] = IROUND64(matrix[0]);
7367 params[1] = IROUND64(matrix[1]);
7368 params[2] = IROUND64(matrix[2]);
7369 params[3] = IROUND64(matrix[3]);
7370 params[4] = IROUND64(matrix[4]);
7371 params[5] = IROUND64(matrix[5]);
7372 params[6] = IROUND64(matrix[6]);
7373 params[7] = IROUND64(matrix[7]);
7374 params[8] = IROUND64(matrix[8]);
7375 params[9] = IROUND64(matrix[9]);
7376 params[10] = IROUND64(matrix[10]);
7377 params[11] = IROUND64(matrix[11]);
7378 params[12] = IROUND64(matrix[12]);
7379 params[13] = IROUND64(matrix[13]);
7380 params[14] = IROUND64(matrix[14]);
7381 params[15] = IROUND64(matrix[15]);
7382 }
7383 break;
7384 case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
7385 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetInteger64v");
7386 {
7387 const GLfloat *matrix = ctx->CurrentStack->Top->m;
7388 params[0] = IROUND64(matrix[0]);
7389 params[1] = IROUND64(matrix[4]);
7390 params[2] = IROUND64(matrix[8]);
7391 params[3] = IROUND64(matrix[12]);
7392 params[4] = IROUND64(matrix[1]);
7393 params[5] = IROUND64(matrix[5]);
7394 params[6] = IROUND64(matrix[9]);
7395 params[7] = IROUND64(matrix[13]);
7396 params[8] = IROUND64(matrix[2]);
7397 params[9] = IROUND64(matrix[6]);
7398 params[10] = IROUND64(matrix[10]);
7399 params[11] = IROUND64(matrix[14]);
7400 params[12] = IROUND64(matrix[3]);
7401 params[13] = IROUND64(matrix[7]);
7402 params[14] = IROUND64(matrix[11]);
7403 params[15] = IROUND64(matrix[15]);
7404 }
7405 break;
7406 case GL_MAX_VERTEX_ATTRIBS_ARB:
7407 CHECK_EXT1(ARB_vertex_program, "GetInteger64v");
7408 params[0] = (GLint64)(ctx->Const.VertexProgram.MaxAttribs);
7409 break;
7410 case GL_PROGRAM_ERROR_POSITION_ARB:
7411 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetInteger64v");
7412 params[0] = (GLint64)(ctx->Program.ErrorPos);
7413 break;
7414 case GL_FRAGMENT_PROGRAM_ARB:
7415 CHECK_EXT1(ARB_fragment_program, "GetInteger64v");
7416 params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled);
7417 break;
7418 case GL_MAX_TEXTURE_COORDS_ARB:
7419 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetInteger64v");
7420 params[0] = (GLint64)(ctx->Const.MaxTextureCoordUnits);
7421 break;
7422 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
7423 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetInteger64v");
7424 params[0] = (GLint64)(ctx->Const.MaxTextureImageUnits);
7425 break;
7426 case GL_DEPTH_BOUNDS_TEST_EXT:
7427 CHECK_EXT1(EXT_depth_bounds_test, "GetInteger64v");
7428 params[0] = BOOLEAN_TO_INT64(ctx->Depth.BoundsTest);
7429 break;
7430 case GL_DEPTH_BOUNDS_EXT:
7431 CHECK_EXT1(EXT_depth_bounds_test, "GetInteger64v");
7432 params[0] = IROUND64(ctx->Depth.BoundsMin);
7433 params[1] = IROUND64(ctx->Depth.BoundsMax);
7434 break;
7435 case GL_DEPTH_CLAMP:
7436 CHECK_EXT1(ARB_depth_clamp, "GetInteger64v");
7437 params[0] = BOOLEAN_TO_INT64(ctx->Transform.DepthClamp);
7438 break;
7439 case GL_MAX_DRAW_BUFFERS_ARB:
7440 params[0] = (GLint64)(ctx->Const.MaxDrawBuffers);
7441 break;
7442 case GL_DRAW_BUFFER0_ARB:
7443 params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]);
7444 break;
7445 case GL_DRAW_BUFFER1_ARB:
7446 {
7447 GLenum buffer;
7448 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7449 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7450 return;
7451 }
7452 buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
7453 params[0] = ENUM_TO_INT64(buffer);
7454 }
7455 break;
7456 case GL_DRAW_BUFFER2_ARB:
7457 {
7458 GLenum buffer;
7459 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7460 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7461 return;
7462 }
7463 buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
7464 params[0] = ENUM_TO_INT64(buffer);
7465 }
7466 break;
7467 case GL_DRAW_BUFFER3_ARB:
7468 {
7469 GLenum buffer;
7470 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
7471 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
7472 return;
7473 }
7474 buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
7475 params[0] = ENUM_TO_INT64(buffer);
7476 }
7477 break;
7478 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
7479 CHECK_EXT1(OES_read_format, "GetInteger64v");
7480 if (ctx->NewState & _NEW_BUFFERS)
7481 _mesa_update_state(ctx);
7482 params[0] = (GLint64)(_mesa_get_color_read_type(ctx));
7483 break;
7484 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
7485 CHECK_EXT1(OES_read_format, "GetInteger64v");
7486 if (ctx->NewState & _NEW_BUFFERS)
7487 _mesa_update_state(ctx);
7488 params[0] = (GLint64)(_mesa_get_color_read_format(ctx));
7489 break;
7490 case GL_NUM_FRAGMENT_REGISTERS_ATI:
7491 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7492 params[0] = (GLint64)(6);
7493 break;
7494 case GL_NUM_FRAGMENT_CONSTANTS_ATI:
7495 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7496 params[0] = (GLint64)(8);
7497 break;
7498 case GL_NUM_PASSES_ATI:
7499 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7500 params[0] = (GLint64)(2);
7501 break;
7502 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
7503 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7504 params[0] = (GLint64)(8);
7505 break;
7506 case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
7507 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7508 params[0] = (GLint64)(16);
7509 break;
7510 case GL_COLOR_ALPHA_PAIRING_ATI:
7511 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7512 params[0] = BOOLEAN_TO_INT64(GL_TRUE);
7513 break;
7514 case GL_NUM_LOOPBACK_COMPONENTS_ATI:
7515 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7516 params[0] = (GLint64)(3);
7517 break;
7518 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
7519 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v");
7520 params[0] = (GLint64)(3);
7521 break;
7522 case GL_STENCIL_BACK_FUNC:
7523 params[0] = ENUM_TO_INT64(ctx->Stencil.Function[1]);
7524 break;
7525 case GL_STENCIL_BACK_VALUE_MASK:
7526 params[0] = (GLint64)(ctx->Stencil.ValueMask[1]);
7527 break;
7528 case GL_STENCIL_BACK_WRITEMASK:
7529 params[0] = (GLint64)(ctx->Stencil.WriteMask[1]);
7530 break;
7531 case GL_STENCIL_BACK_REF:
7532 params[0] = (GLint64)(ctx->Stencil.Ref[1]);
7533 break;
7534 case GL_STENCIL_BACK_FAIL:
7535 params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[1]);
7536 break;
7537 case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
7538 params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[1]);
7539 break;
7540 case GL_STENCIL_BACK_PASS_DEPTH_PASS:
7541 params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[1]);
7542 break;
7543 case GL_FRAMEBUFFER_BINDING_EXT:
7544 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v");
7545 params[0] = (GLint64)(ctx->DrawBuffer->Name);
7546 break;
7547 case GL_RENDERBUFFER_BINDING_EXT:
7548 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v");
7549 params[0] = (GLint64)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
7550 break;
7551 case GL_MAX_COLOR_ATTACHMENTS_EXT:
7552 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v");
7553 params[0] = (GLint64)(ctx->Const.MaxColorAttachments);
7554 break;
7555 case GL_MAX_RENDERBUFFER_SIZE_EXT:
7556 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v");
7557 params[0] = (GLint64)(ctx->Const.MaxRenderbufferSize);
7558 break;
7559 case GL_READ_FRAMEBUFFER_BINDING_EXT:
7560 CHECK_EXT1(EXT_framebuffer_blit, "GetInteger64v");
7561 params[0] = (GLint64)(ctx->ReadBuffer->Name);
7562 break;
7563 case GL_PROVOKING_VERTEX_EXT:
7564 CHECK_EXT1(EXT_provoking_vertex, "GetInteger64v");
7565 params[0] = BOOLEAN_TO_INT64(ctx->Light.ProvokingVertex);
7566 break;
7567 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
7568 CHECK_EXT1(EXT_provoking_vertex, "GetInteger64v");
7569 params[0] = BOOLEAN_TO_INT64(ctx->Const.QuadsFollowProvokingVertexConvention);
7570 break;
7571 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
7572 CHECK_EXT1(ARB_fragment_shader, "GetInteger64v");
7573 params[0] = (GLint64)(ctx->Const.FragmentProgram.MaxUniformComponents);
7574 break;
7575 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
7576 CHECK_EXT1(ARB_fragment_shader, "GetInteger64v");
7577 params[0] = ENUM_TO_INT64(ctx->Hint.FragmentShaderDerivative);
7578 break;
7579 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
7580 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v");
7581 params[0] = (GLint64)(ctx->Const.VertexProgram.MaxUniformComponents);
7582 break;
7583 case GL_MAX_VARYING_FLOATS_ARB:
7584 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v");
7585 params[0] = (GLint64)(ctx->Const.MaxVarying * 4);
7586 break;
7587 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
7588 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v");
7589 params[0] = (GLint64)(ctx->Const.MaxVertexTextureImageUnits);
7590 break;
7591 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
7592 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v");
7593 params[0] = (GLint64)(ctx->Const.MaxCombinedTextureImageUnits);
7594 break;
7595 case GL_CURRENT_PROGRAM:
7596 CHECK_EXT1(ARB_shader_objects, "GetInteger64v");
7597 params[0] = (GLint64)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
7598 break;
7599 case GL_MAX_SAMPLES:
7600 CHECK_EXT1(ARB_framebuffer_object, "GetInteger64v");
7601 params[0] = (GLint64)(ctx->Const.MaxSamples);
7602 break;
7603 case GL_VERTEX_ARRAY_BINDING_APPLE:
7604 CHECK_EXT1(APPLE_vertex_array_object, "GetInteger64v");
7605 params[0] = (GLint64)(ctx->Array.ArrayObj->Name);
7606 break;
7607 case GL_TEXTURE_CUBE_MAP_SEAMLESS:
7608 CHECK_EXT1(ARB_seamless_cube_map, "GetInteger64v");
7609 params[0] = BOOLEAN_TO_INT64(ctx->Texture.CubeMapSeamless);
7610 break;
7611 case GL_MAX_SERVER_WAIT_TIMEOUT:
7612 CHECK_EXT1(ARB_sync, "GetInteger64v");
7613 params[0] = ctx->Const.MaxServerWaitTimeout;
7614 break;
7615 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
7616 CHECK_EXT1(EXT_transform_feedback, "GetInteger64v");
7617 params[0] = (GLint64)(ctx->TransformFeedback.CurrentBuffer->Name);
7618 break;
7619 case GL_RASTERIZER_DISCARD:
7620 CHECK_EXT1(EXT_transform_feedback, "GetInteger64v");
7621 params[0] = BOOLEAN_TO_INT64(ctx->TransformFeedback.RasterDiscard);
7622 break;
7623 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
7624 CHECK_EXT1(EXT_transform_feedback, "GetInteger64v");
7625 params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackInterleavedComponents);
7626 break;
7627 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
7628 CHECK_EXT1(EXT_transform_feedback, "GetInteger64v");
7629 params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackSeparateAttribs);
7630 break;
7631 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
7632 CHECK_EXT1(EXT_transform_feedback, "GetInteger64v");
7633 params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackSeparateComponents);
7634 break;
7635 case GL_NUM_EXTENSIONS:
7636 params[0] = (GLint64)(_mesa_get_extension_count(ctx));
7637 break;
7638 case GL_MAJOR_VERSION:
7639 params[0] = (GLint64)(ctx->VersionMajor);
7640 break;
7641 case GL_MINOR_VERSION:
7642 params[0] = (GLint64)(ctx->VersionMinor);
7643 break;
7644 case GL_CONTEXT_FLAGS:
7645 params[0] = (GLint64)(ctx->Const.ContextFlags);
7646 break;
7647 default:
7648 _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64v(pname=0x%x)", pname);
7649 }
7650 }
7651 #endif /* FEATURE_ARB_sync */
7652
7653
7654 void GLAPIENTRY
7655 _mesa_GetDoublev( GLenum pname, GLdouble *params )
7656 {
7657 const GLfloat magic = -1234.5F;
7658 GLfloat values[16];
7659 GLuint i;
7660
7661 if (!params)
7662 return;
7663
7664 /* Init temp array to magic numbers so we can figure out how many values
7665 * are returned by the GetFloatv() call.
7666 */
7667 for (i = 0; i < 16; i++)
7668 values[i] = magic;
7669
7670 _mesa_GetFloatv(pname, values);
7671
7672 for (i = 0; i < 16 && values[i] != magic; i++)
7673 params[i] = (GLdouble) values[i];
7674 }
7675
7676 void GLAPIENTRY
7677 _mesa_GetBooleanIndexedv( GLenum pname, GLuint index, GLboolean *params )
7678 {
7679 GET_CURRENT_CONTEXT(ctx);
7680 ASSERT_OUTSIDE_BEGIN_END(ctx);
7681
7682 if (!params)
7683 return;
7684
7685 switch (pname) {
7686 case GL_BLEND:
7687 CHECK_EXT1(EXT_draw_buffers2, "GetBooleanIndexedv");
7688 if (index >= ctx->Const.MaxDrawBuffers) {
7689 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7690 return;
7691 }
7692 params[0] = INT_TO_BOOLEAN(((ctx->Color.BlendEnabled >> index) & 1));
7693 break;
7694 case GL_COLOR_WRITEMASK:
7695 CHECK_EXT1(EXT_draw_buffers2, "GetBooleanIndexedv");
7696 if (index >= ctx->Const.MaxDrawBuffers) {
7697 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7698 return;
7699 }
7700 params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][RCOMP] ? 1 : 0);
7701 params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][GCOMP] ? 1 : 0);
7702 params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][BCOMP] ? 1 : 0);
7703 params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][ACOMP] ? 1 : 0);
7704 break;
7705 case GL_TRANSFORM_FEEDBACK_BUFFER_START:
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] = INT64_TO_BOOLEAN(ctx->TransformFeedback.Offset[index]);
7712 break;
7713 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
7714 CHECK_EXT1(EXT_transform_feedback, "GetBooleanIndexedv");
7715 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7716 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7717 return;
7718 }
7719 params[0] = INT64_TO_BOOLEAN(ctx->TransformFeedback.Size[index]);
7720 break;
7721 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
7722 CHECK_EXT1(EXT_transform_feedback, "GetBooleanIndexedv");
7723 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7724 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
7725 return;
7726 }
7727 params[0] = INT_TO_BOOLEAN(ctx->TransformFeedback.Buffers[index]->Name);
7728 break;
7729 default:
7730 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanIndexedv(pname=0x%x)", pname);
7731 }
7732 }
7733
7734 void GLAPIENTRY
7735 _mesa_GetIntegerIndexedv( GLenum pname, GLuint index, GLint *params )
7736 {
7737 GET_CURRENT_CONTEXT(ctx);
7738 ASSERT_OUTSIDE_BEGIN_END(ctx);
7739
7740 if (!params)
7741 return;
7742
7743 switch (pname) {
7744 case GL_BLEND:
7745 CHECK_EXT1(EXT_draw_buffers2, "GetIntegerIndexedv");
7746 if (index >= ctx->Const.MaxDrawBuffers) {
7747 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7748 return;
7749 }
7750 params[0] = ((ctx->Color.BlendEnabled >> index) & 1);
7751 break;
7752 case GL_COLOR_WRITEMASK:
7753 CHECK_EXT1(EXT_draw_buffers2, "GetIntegerIndexedv");
7754 if (index >= ctx->Const.MaxDrawBuffers) {
7755 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7756 return;
7757 }
7758 params[0] = ctx->Color.ColorMask[index][RCOMP] ? 1 : 0;
7759 params[1] = ctx->Color.ColorMask[index][GCOMP] ? 1 : 0;
7760 params[2] = ctx->Color.ColorMask[index][BCOMP] ? 1 : 0;
7761 params[3] = ctx->Color.ColorMask[index][ACOMP] ? 1 : 0;
7762 break;
7763 case GL_TRANSFORM_FEEDBACK_BUFFER_START:
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] = INT64_TO_INT(ctx->TransformFeedback.Offset[index]);
7770 break;
7771 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
7772 CHECK_EXT1(EXT_transform_feedback, "GetIntegerIndexedv");
7773 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7774 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7775 return;
7776 }
7777 params[0] = INT64_TO_INT(ctx->TransformFeedback.Size[index]);
7778 break;
7779 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
7780 CHECK_EXT1(EXT_transform_feedback, "GetIntegerIndexedv");
7781 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7782 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
7783 return;
7784 }
7785 params[0] = ctx->TransformFeedback.Buffers[index]->Name;
7786 break;
7787 default:
7788 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerIndexedv(pname=0x%x)", pname);
7789 }
7790 }
7791
7792 #if FEATURE_ARB_sync
7793 void GLAPIENTRY
7794 _mesa_GetInteger64Indexedv( GLenum pname, GLuint index, GLint64 *params )
7795 {
7796 GET_CURRENT_CONTEXT(ctx);
7797 ASSERT_OUTSIDE_BEGIN_END(ctx);
7798
7799 if (!params)
7800 return;
7801
7802 switch (pname) {
7803 case GL_BLEND:
7804 CHECK_EXT1(EXT_draw_buffers2, "GetInteger64Indexedv");
7805 if (index >= ctx->Const.MaxDrawBuffers) {
7806 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7807 return;
7808 }
7809 params[0] = (GLint64)(((ctx->Color.BlendEnabled >> index) & 1));
7810 break;
7811 case GL_COLOR_WRITEMASK:
7812 CHECK_EXT1(EXT_draw_buffers2, "GetInteger64Indexedv");
7813 if (index >= ctx->Const.MaxDrawBuffers) {
7814 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7815 return;
7816 }
7817 params[0] = (GLint64)(ctx->Color.ColorMask[index][RCOMP] ? 1 : 0);
7818 params[1] = (GLint64)(ctx->Color.ColorMask[index][GCOMP] ? 1 : 0);
7819 params[2] = (GLint64)(ctx->Color.ColorMask[index][BCOMP] ? 1 : 0);
7820 params[3] = (GLint64)(ctx->Color.ColorMask[index][ACOMP] ? 1 : 0);
7821 break;
7822 case GL_TRANSFORM_FEEDBACK_BUFFER_START:
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] = ctx->TransformFeedback.Offset[index];
7829 break;
7830 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
7831 CHECK_EXT1(EXT_transform_feedback, "GetInteger64Indexedv");
7832 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7833 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7834 return;
7835 }
7836 params[0] = ctx->TransformFeedback.Size[index];
7837 break;
7838 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
7839 CHECK_EXT1(EXT_transform_feedback, "GetInteger64Indexedv");
7840 if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
7841 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
7842 return;
7843 }
7844 params[0] = (GLint64)(ctx->TransformFeedback.Buffers[index]->Name);
7845 break;
7846 default:
7847 _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64Indexedv(pname=0x%x)", pname);
7848 }
7849 }
7850 #endif /* FEATURE_ARB_sync */
7851