1 /* $Id: get.c,v 1.82 2002/06/15 03:03:08 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36 #include "extensions.h"
42 #include "math/m_matrix.h"
47 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
48 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
49 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
52 /* Needed for an Amiga compiler */
53 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
54 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
56 /* all other compilers */
57 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
58 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
62 /* Check if named extension is enabled, if not generate error and return */
64 #define CHECK_EXTENSION_B(EXTNAME) \
65 if (!ctx->Extensions.EXTNAME) { \
66 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanv"); \
70 #define CHECK_EXTENSION_I(EXTNAME) \
71 if (!ctx->Extensions.EXTNAME) { \
72 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerv"); \
76 #define CHECK_EXTENSION_F(EXTNAME) \
77 if (!ctx->Extensions.EXTNAME) { \
78 _mesa_error(ctx, GL_INVALID_VALUE, "glGetFloatv"); \
82 #define CHECK_EXTENSION_D(EXTNAME) \
83 if (!ctx->Extensions.EXTNAME) { \
84 _mesa_error(ctx, GL_INVALID_VALUE, "glGetDoublev"); \
92 pixel_texgen_mode(const GLcontext
*ctx
)
94 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
95 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
103 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
114 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
116 GET_CURRENT_CONTEXT(ctx
);
118 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
119 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
120 ASSERT_OUTSIDE_BEGIN_END(ctx
);
125 /* We need this in order to get correct results for
126 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
128 FLUSH_VERTICES(ctx
, 0);
130 if (MESA_VERBOSE
& VERBOSE_API
)
131 _mesa_debug(ctx
, "glGetBooleanv %s\n", _mesa_lookup_enum_by_nr(pname
));
133 if (ctx
->Driver
.GetBooleanv
134 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
138 case GL_ACCUM_RED_BITS
:
139 *params
= INT_TO_BOOL(ctx
->Visual
.accumRedBits
);
141 case GL_ACCUM_GREEN_BITS
:
142 *params
= INT_TO_BOOL(ctx
->Visual
.accumGreenBits
);
144 case GL_ACCUM_BLUE_BITS
:
145 *params
= INT_TO_BOOL(ctx
->Visual
.accumBlueBits
);
147 case GL_ACCUM_ALPHA_BITS
:
148 *params
= INT_TO_BOOL(ctx
->Visual
.accumAlphaBits
);
150 case GL_ACCUM_CLEAR_VALUE
:
151 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
152 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
153 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
154 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
157 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
160 *params
= INT_TO_BOOL(ctx
->Visual
.alphaBits
);
163 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
166 *params
= ctx
->Color
.AlphaEnabled
;
168 case GL_ALPHA_TEST_FUNC
:
169 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
171 case GL_ALPHA_TEST_REF
:
172 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
174 case GL_ATTRIB_STACK_DEPTH
:
175 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
178 *params
= ctx
->Eval
.AutoNormal
;
181 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
184 *params
= ctx
->Color
.BlendEnabled
;
187 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
190 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
192 case GL_BLEND_SRC_RGB_EXT
:
193 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
195 case GL_BLEND_DST_RGB_EXT
:
196 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
198 case GL_BLEND_SRC_ALPHA_EXT
:
199 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
201 case GL_BLEND_DST_ALPHA_EXT
:
202 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
204 case GL_BLEND_EQUATION_EXT
:
205 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
207 case GL_BLEND_COLOR_EXT
:
208 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
209 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
210 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
211 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
214 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
217 *params
= INT_TO_BOOL( ctx
->Visual
.blueBits
);
220 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
222 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
223 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
231 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
236 case GL_COLOR_CLEAR_VALUE
:
237 params
[0] = ctx
->Color
.ClearColor
[0] ? GL_TRUE
: GL_FALSE
;
238 params
[1] = ctx
->Color
.ClearColor
[1] ? GL_TRUE
: GL_FALSE
;
239 params
[2] = ctx
->Color
.ClearColor
[2] ? GL_TRUE
: GL_FALSE
;
240 params
[3] = ctx
->Color
.ClearColor
[3] ? GL_TRUE
: GL_FALSE
;
242 case GL_COLOR_MATERIAL
:
243 *params
= ctx
->Light
.ColorMaterialEnabled
;
245 case GL_COLOR_MATERIAL_FACE
:
246 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
248 case GL_COLOR_MATERIAL_PARAMETER
:
249 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
251 case GL_COLOR_WRITEMASK
:
252 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
253 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
254 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
255 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
258 *params
= ctx
->Polygon
.CullFlag
;
260 case GL_CULL_FACE_MODE
:
261 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
263 case GL_CURRENT_COLOR
:
264 FLUSH_CURRENT(ctx
, 0);
265 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
266 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
267 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
268 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
270 case GL_CURRENT_INDEX
:
271 FLUSH_CURRENT(ctx
, 0);
272 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
274 case GL_CURRENT_NORMAL
:
275 FLUSH_CURRENT(ctx
, 0);
276 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
277 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
278 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
280 case GL_CURRENT_RASTER_COLOR
:
281 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
282 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
283 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
284 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
286 case GL_CURRENT_RASTER_DISTANCE
:
287 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
289 case GL_CURRENT_RASTER_INDEX
:
290 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
292 case GL_CURRENT_RASTER_POSITION
:
293 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
294 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
295 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
296 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
298 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
299 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][0]);
300 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][1]);
301 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][2]);
302 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][3]);
304 case GL_CURRENT_RASTER_POSITION_VALID
:
305 *params
= ctx
->Current
.RasterPosValid
;
307 case GL_CURRENT_TEXTURE_COORDS
:
308 FLUSH_CURRENT(ctx
, 0);
309 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0]);
310 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1]);
311 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2]);
312 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3]);
315 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
318 *params
= INT_TO_BOOL(ctx
->Visual
.depthBits
);
320 case GL_DEPTH_CLEAR_VALUE
:
321 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
324 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
327 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
328 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
331 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
334 *params
= ctx
->Depth
.Test
;
336 case GL_DEPTH_WRITEMASK
:
337 *params
= ctx
->Depth
.Mask
;
340 *params
= ctx
->Color
.DitherFlag
;
342 case GL_DOUBLEBUFFER
:
343 *params
= ctx
->Visual
.doubleBufferMode
;
346 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
349 FLUSH_CURRENT(ctx
, 0);
350 *params
= ctx
->Current
.EdgeFlag
;
352 case GL_FEEDBACK_BUFFER_SIZE
:
353 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
355 case GL_FEEDBACK_BUFFER_TYPE
:
356 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
359 *params
= ctx
->Fog
.Enabled
;
362 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
363 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
364 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
365 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
368 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
371 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
374 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
377 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
380 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
383 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
386 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
389 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
392 *params
= INT_TO_BOOL( ctx
->Visual
.greenBits
);
395 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
398 *params
= INT_TO_BOOL( ctx
->Visual
.indexBits
);
400 case GL_INDEX_CLEAR_VALUE
:
401 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
404 *params
= ctx
->Visual
.rgbMode
? GL_FALSE
: GL_TRUE
;
406 case GL_INDEX_OFFSET
:
407 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
410 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
412 case GL_INDEX_WRITEMASK
:
413 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
423 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
426 *params
= ctx
->Light
.Enabled
;
428 case GL_LIGHT_MODEL_AMBIENT
:
429 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
430 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
431 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
432 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
434 case GL_LIGHT_MODEL_COLOR_CONTROL
:
435 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
437 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
438 *params
= ctx
->Light
.Model
.LocalViewer
;
440 case GL_LIGHT_MODEL_TWO_SIDE
:
441 *params
= ctx
->Light
.Model
.TwoSide
;
444 *params
= ctx
->Line
.SmoothFlag
;
446 case GL_LINE_SMOOTH_HINT
:
447 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
449 case GL_LINE_STIPPLE
:
450 *params
= ctx
->Line
.StippleFlag
;
452 case GL_LINE_STIPPLE_PATTERN
:
453 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
455 case GL_LINE_STIPPLE_REPEAT
:
456 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
459 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
461 case GL_LINE_WIDTH_GRANULARITY
:
462 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
464 case GL_LINE_WIDTH_RANGE
:
465 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
466 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
468 case GL_ALIASED_LINE_WIDTH_RANGE
:
469 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
470 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
473 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
476 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
479 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
480 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
482 case GL_INDEX_LOGIC_OP
:
483 *params
= ctx
->Color
.IndexLogicOpEnabled
;
485 case GL_COLOR_LOGIC_OP
:
486 *params
= ctx
->Color
.ColorLogicOpEnabled
;
488 case GL_LOGIC_OP_MODE
:
489 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
491 case GL_MAP1_COLOR_4
:
492 *params
= ctx
->Eval
.Map1Color4
;
494 case GL_MAP1_GRID_DOMAIN
:
495 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
496 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
498 case GL_MAP1_GRID_SEGMENTS
:
499 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
502 *params
= ctx
->Eval
.Map1Index
;
505 *params
= ctx
->Eval
.Map1Normal
;
507 case GL_MAP1_TEXTURE_COORD_1
:
508 *params
= ctx
->Eval
.Map1TextureCoord1
;
510 case GL_MAP1_TEXTURE_COORD_2
:
511 *params
= ctx
->Eval
.Map1TextureCoord2
;
513 case GL_MAP1_TEXTURE_COORD_3
:
514 *params
= ctx
->Eval
.Map1TextureCoord3
;
516 case GL_MAP1_TEXTURE_COORD_4
:
517 *params
= ctx
->Eval
.Map1TextureCoord4
;
519 case GL_MAP1_VERTEX_3
:
520 *params
= ctx
->Eval
.Map1Vertex3
;
522 case GL_MAP1_VERTEX_4
:
523 *params
= ctx
->Eval
.Map1Vertex4
;
525 case GL_MAP2_COLOR_4
:
526 *params
= ctx
->Eval
.Map2Color4
;
528 case GL_MAP2_GRID_DOMAIN
:
529 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
530 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
531 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
532 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
534 case GL_MAP2_GRID_SEGMENTS
:
535 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
536 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
539 *params
= ctx
->Eval
.Map2Index
;
542 *params
= ctx
->Eval
.Map2Normal
;
544 case GL_MAP2_TEXTURE_COORD_1
:
545 *params
= ctx
->Eval
.Map2TextureCoord1
;
547 case GL_MAP2_TEXTURE_COORD_2
:
548 *params
= ctx
->Eval
.Map2TextureCoord2
;
550 case GL_MAP2_TEXTURE_COORD_3
:
551 *params
= ctx
->Eval
.Map2TextureCoord3
;
553 case GL_MAP2_TEXTURE_COORD_4
:
554 *params
= ctx
->Eval
.Map2TextureCoord4
;
556 case GL_MAP2_VERTEX_3
:
557 *params
= ctx
->Eval
.Map2Vertex3
;
559 case GL_MAP2_VERTEX_4
:
560 *params
= ctx
->Eval
.Map2Vertex4
;
563 *params
= ctx
->Pixel
.MapColorFlag
;
566 *params
= ctx
->Pixel
.MapStencilFlag
;
569 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
571 case GL_MAX_ATTRIB_STACK_DEPTH
:
572 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
574 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
575 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
577 case GL_MAX_CLIP_PLANES
:
578 *params
= INT_TO_BOOL(ctx
->Const
.MaxClipPlanes
);
580 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
581 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
583 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
584 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
586 case GL_MAX_EVAL_ORDER
:
587 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
590 *params
= INT_TO_BOOL(ctx
->Const
.MaxLights
);
592 case GL_MAX_LIST_NESTING
:
593 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
595 case GL_MAX_MODELVIEW_STACK_DEPTH
:
596 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
598 case GL_MAX_NAME_STACK_DEPTH
:
599 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
601 case GL_MAX_PIXEL_MAP_TABLE
:
602 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
604 case GL_MAX_PROJECTION_STACK_DEPTH
:
605 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
607 case GL_MAX_TEXTURE_SIZE
:
608 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxTextureLevels
- 1));
610 case GL_MAX_3D_TEXTURE_SIZE
:
611 *params
= INT_TO_BOOL(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
613 case GL_MAX_TEXTURE_STACK_DEPTH
:
614 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
616 case GL_MAX_VIEWPORT_DIMS
:
617 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
618 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
620 case GL_MODELVIEW_MATRIX
:
622 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelviewMatrixStack
.Top
->m
[i
]);
625 case GL_MODELVIEW_STACK_DEPTH
:
626 *params
= INT_TO_BOOL(ctx
->ModelviewMatrixStack
.Depth
+ 1);
628 case GL_NAME_STACK_DEPTH
:
629 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
632 *params
= ctx
->Transform
.Normalize
;
634 case GL_PACK_ALIGNMENT
:
635 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
637 case GL_PACK_LSB_FIRST
:
638 *params
= ctx
->Pack
.LsbFirst
;
640 case GL_PACK_ROW_LENGTH
:
641 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
643 case GL_PACK_SKIP_PIXELS
:
644 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
646 case GL_PACK_SKIP_ROWS
:
647 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
649 case GL_PACK_SWAP_BYTES
:
650 *params
= ctx
->Pack
.SwapBytes
;
652 case GL_PACK_SKIP_IMAGES_EXT
:
653 *params
= ctx
->Pack
.SkipImages
;
655 case GL_PACK_IMAGE_HEIGHT_EXT
:
656 *params
= ctx
->Pack
.ImageHeight
;
658 case GL_PERSPECTIVE_CORRECTION_HINT
:
659 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
661 case GL_PIXEL_MAP_A_TO_A_SIZE
:
662 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
664 case GL_PIXEL_MAP_B_TO_B_SIZE
:
665 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
667 case GL_PIXEL_MAP_G_TO_G_SIZE
:
668 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
670 case GL_PIXEL_MAP_I_TO_A_SIZE
:
671 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
673 case GL_PIXEL_MAP_I_TO_B_SIZE
:
674 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
676 case GL_PIXEL_MAP_I_TO_G_SIZE
:
677 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
679 case GL_PIXEL_MAP_I_TO_I_SIZE
:
680 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
682 case GL_PIXEL_MAP_I_TO_R_SIZE
:
683 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
685 case GL_PIXEL_MAP_R_TO_R_SIZE
:
686 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
688 case GL_PIXEL_MAP_S_TO_S_SIZE
:
689 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
692 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
694 case GL_POINT_SIZE_GRANULARITY
:
695 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
697 case GL_POINT_SIZE_RANGE
:
698 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
699 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
701 case GL_ALIASED_POINT_SIZE_RANGE
:
702 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
703 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
705 case GL_POINT_SMOOTH
:
706 *params
= ctx
->Point
.SmoothFlag
;
708 case GL_POINT_SMOOTH_HINT
:
709 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
711 case GL_POINT_SIZE_MIN_EXT
:
712 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
714 case GL_POINT_SIZE_MAX_EXT
:
715 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
717 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
718 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
720 case GL_DISTANCE_ATTENUATION_EXT
:
721 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
722 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
723 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
725 case GL_POLYGON_MODE
:
726 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
727 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
729 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
730 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
732 case GL_POLYGON_OFFSET_FACTOR
:
733 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
735 case GL_POLYGON_OFFSET_UNITS
:
736 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
738 case GL_POLYGON_SMOOTH
:
739 *params
= ctx
->Polygon
.SmoothFlag
;
741 case GL_POLYGON_SMOOTH_HINT
:
742 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
744 case GL_POLYGON_STIPPLE
:
745 *params
= ctx
->Polygon
.StippleFlag
;
747 case GL_PROJECTION_MATRIX
:
749 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrixStack
.Top
->m
[i
]);
752 case GL_PROJECTION_STACK_DEPTH
:
753 *params
= INT_TO_BOOL(ctx
->ProjectionMatrixStack
.Depth
+ 1);
756 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
759 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
762 *params
= INT_TO_BOOL( ctx
->Visual
.redBits
);
765 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
768 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
770 case GL_RESCALE_NORMAL
:
771 *params
= ctx
->Transform
.RescaleNormals
;
774 *params
= ctx
->Visual
.rgbMode
;
777 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
778 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
779 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
780 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
782 case GL_SCISSOR_TEST
:
783 *params
= ctx
->Scissor
.Enabled
;
785 case GL_SELECTION_BUFFER_SIZE
:
786 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
789 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
791 case GL_SHARED_TEXTURE_PALETTE_EXT
:
792 *params
= ctx
->Texture
.SharedPalette
;
794 case GL_STENCIL_BITS
:
795 *params
= INT_TO_BOOL(ctx
->Visual
.stencilBits
);
797 case GL_STENCIL_CLEAR_VALUE
:
798 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
800 case GL_STENCIL_FAIL
:
801 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
);
803 case GL_STENCIL_FUNC
:
804 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
);
806 case GL_STENCIL_PASS_DEPTH_FAIL
:
807 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
);
809 case GL_STENCIL_PASS_DEPTH_PASS
:
810 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
);
813 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
);
815 case GL_STENCIL_TEST
:
816 *params
= ctx
->Stencil
.Enabled
;
818 case GL_STENCIL_VALUE_MASK
:
819 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
);
821 case GL_STENCIL_WRITEMASK
:
822 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
);
825 *params
= ctx
->Visual
.stereoMode
;
827 case GL_SUBPIXEL_BITS
:
828 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
831 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
834 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
837 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
839 case GL_TEXTURE_BINDING_1D
:
840 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
842 case GL_TEXTURE_BINDING_2D
:
843 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
845 case GL_TEXTURE_BINDING_3D
:
846 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
848 case GL_TEXTURE_ENV_COLOR
:
850 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
851 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
852 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
853 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
856 case GL_TEXTURE_ENV_MODE
:
857 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
859 case GL_TEXTURE_GEN_S
:
860 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
862 case GL_TEXTURE_GEN_T
:
863 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
865 case GL_TEXTURE_GEN_R
:
866 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
868 case GL_TEXTURE_GEN_Q
:
869 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
871 case GL_TEXTURE_MATRIX
:
874 FLOAT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
]);
877 case GL_TEXTURE_STACK_DEPTH
:
878 *params
= INT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
880 case GL_UNPACK_ALIGNMENT
:
881 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
883 case GL_UNPACK_LSB_FIRST
:
884 *params
= ctx
->Unpack
.LsbFirst
;
886 case GL_UNPACK_ROW_LENGTH
:
887 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
889 case GL_UNPACK_SKIP_PIXELS
:
890 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
892 case GL_UNPACK_SKIP_ROWS
:
893 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
895 case GL_UNPACK_SWAP_BYTES
:
896 *params
= ctx
->Unpack
.SwapBytes
;
898 case GL_UNPACK_SKIP_IMAGES_EXT
:
899 *params
= ctx
->Unpack
.SkipImages
;
901 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
902 *params
= ctx
->Unpack
.ImageHeight
;
905 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
906 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
907 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
908 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
911 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
914 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
916 case GL_VERTEX_ARRAY
:
917 *params
= ctx
->Array
.Vertex
.Enabled
;
919 case GL_VERTEX_ARRAY_SIZE
:
920 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
922 case GL_VERTEX_ARRAY_TYPE
:
923 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
925 case GL_VERTEX_ARRAY_STRIDE
:
926 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
928 case GL_VERTEX_ARRAY_COUNT_EXT
:
929 *params
= INT_TO_BOOL(0);
931 case GL_NORMAL_ARRAY
:
932 *params
= ctx
->Array
.Normal
.Enabled
;
934 case GL_NORMAL_ARRAY_TYPE
:
935 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
937 case GL_NORMAL_ARRAY_STRIDE
:
938 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
940 case GL_NORMAL_ARRAY_COUNT_EXT
:
941 *params
= INT_TO_BOOL(0);
944 *params
= ctx
->Array
.Color
.Enabled
;
946 case GL_COLOR_ARRAY_SIZE
:
947 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
949 case GL_COLOR_ARRAY_TYPE
:
950 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
952 case GL_COLOR_ARRAY_STRIDE
:
953 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
955 case GL_COLOR_ARRAY_COUNT_EXT
:
956 *params
= INT_TO_BOOL(0);
959 *params
= ctx
->Array
.Index
.Enabled
;
961 case GL_INDEX_ARRAY_TYPE
:
962 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
964 case GL_INDEX_ARRAY_STRIDE
:
965 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
967 case GL_INDEX_ARRAY_COUNT_EXT
:
968 *params
= INT_TO_BOOL(0);
970 case GL_TEXTURE_COORD_ARRAY
:
971 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
973 case GL_TEXTURE_COORD_ARRAY_SIZE
:
974 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
976 case GL_TEXTURE_COORD_ARRAY_TYPE
:
977 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
979 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
980 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
982 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
983 *params
= INT_TO_BOOL(0);
985 case GL_EDGE_FLAG_ARRAY
:
986 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
988 case GL_EDGE_FLAG_ARRAY_STRIDE
:
989 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
991 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
992 *params
= INT_TO_BOOL(0);
995 /* GL_ARB_multitexture */
996 case GL_MAX_TEXTURE_UNITS_ARB
:
997 *params
= ctx
->Const
.MaxTextureUnits
;
999 case GL_ACTIVE_TEXTURE_ARB
:
1000 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1002 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1003 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1006 /* GL_ARB_texture_cube_map */
1007 case GL_TEXTURE_CUBE_MAP_ARB
:
1008 CHECK_EXTENSION_B(ARB_texture_cube_map
);
1009 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1011 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1012 CHECK_EXTENSION_B(ARB_texture_cube_map
);
1013 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
1015 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1016 CHECK_EXTENSION_B(ARB_texture_cube_map
);
1017 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
1020 /* GL_ARB_texture_compression */
1021 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1022 CHECK_EXTENSION_B(ARB_texture_compression
);
1023 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1025 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1026 CHECK_EXTENSION_B(ARB_texture_compression
);
1027 *params
= INT_TO_BOOL(ctx
->Const
.NumCompressedTextureFormats
);
1029 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1030 CHECK_EXTENSION_B(ARB_texture_compression
);
1033 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
1034 params
[i
] = INT_TO_BOOL(ctx
->Const
.CompressedTextureFormats
[i
]);
1038 /* GL_EXT_compiled_vertex_array */
1039 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1040 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1042 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1043 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1046 /* GL_ARB_transpose_matrix */
1047 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1051 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
1052 for (i
=0;i
<16;i
++) {
1053 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1057 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1061 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
1062 for (i
=0;i
<16;i
++) {
1063 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1067 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1071 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
1072 for (i
=0;i
<16;i
++) {
1073 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1077 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1081 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
1082 for (i
=0;i
<16;i
++) {
1083 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1088 /* GL_HP_occlusion_test */
1089 case GL_OCCLUSION_TEST_HP
:
1090 CHECK_EXTENSION_B(HP_occlusion_test
);
1091 *params
= ctx
->Depth
.OcclusionTest
;
1093 case GL_OCCLUSION_TEST_RESULT_HP
:
1094 CHECK_EXTENSION_B(HP_occlusion_test
);
1095 if (ctx
->Depth
.OcclusionTest
)
1096 *params
= ctx
->OcclusionResult
;
1098 *params
= ctx
->OcclusionResultSaved
;
1099 /* reset flag now */
1100 ctx
->OcclusionResult
= GL_FALSE
;
1101 ctx
->OcclusionResultSaved
= GL_FALSE
;
1104 /* GL_SGIS_pixel_texture */
1105 case GL_PIXEL_TEXTURE_SGIS
:
1106 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1109 /* GL_SGIX_pixel_texture */
1110 case GL_PIXEL_TEX_GEN_SGIX
:
1111 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1113 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1114 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1117 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1118 case GL_COLOR_MATRIX_SGI
:
1119 for (i
=0;i
<16;i
++) {
1120 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrixStack
.Top
->m
[i
]);
1123 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1124 *params
= INT_TO_BOOL(ctx
->ColorMatrixStack
.Depth
+ 1);
1126 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1127 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1129 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1130 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1132 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1133 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1135 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1136 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1138 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1139 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1141 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1142 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1144 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1145 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1147 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1148 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1150 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1151 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1154 /* GL_EXT_convolution (also in 1.2 imaging) */
1155 case GL_CONVOLUTION_1D_EXT
:
1156 CHECK_EXTENSION_B(EXT_convolution
);
1157 *params
= ctx
->Pixel
.Convolution1DEnabled
;
1159 case GL_CONVOLUTION_2D
:
1160 CHECK_EXTENSION_B(EXT_convolution
);
1161 *params
= ctx
->Pixel
.Convolution2DEnabled
;
1163 case GL_SEPARABLE_2D
:
1164 CHECK_EXTENSION_B(EXT_convolution
);
1165 *params
= ctx
->Pixel
.Separable2DEnabled
;
1167 case GL_MAX_CONVOLUTION_WIDTH
:
1168 CHECK_EXTENSION_B(EXT_convolution
);
1169 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionWidth
);
1171 case GL_MAX_CONVOLUTION_HEIGHT
:
1172 CHECK_EXTENSION_B(EXT_convolution
);
1173 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionHeight
);
1175 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1176 CHECK_EXTENSION_B(EXT_convolution
);
1177 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1179 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1180 CHECK_EXTENSION_B(EXT_convolution
);
1181 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1183 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1184 CHECK_EXTENSION_B(EXT_convolution
);
1185 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1187 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1188 CHECK_EXTENSION_B(EXT_convolution
);
1189 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1191 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1192 CHECK_EXTENSION_B(EXT_convolution
);
1193 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1195 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1196 CHECK_EXTENSION_B(EXT_convolution
);
1197 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1199 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1200 CHECK_EXTENSION_B(EXT_convolution
);
1201 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1203 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1204 CHECK_EXTENSION_B(EXT_convolution
);
1205 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1208 /* GL_EXT_histogram (also in 1.2 imaging) */
1210 CHECK_EXTENSION_B(EXT_histogram
);
1211 *params
= ctx
->Pixel
.HistogramEnabled
;
1214 CHECK_EXTENSION_B(EXT_histogram
);
1215 *params
= ctx
->Pixel
.MinMaxEnabled
;
1218 /* GL_SGI_color_table (also in 1.2 imaging */
1219 case GL_COLOR_TABLE_SGI
:
1220 *params
= ctx
->Pixel
.ColorTableEnabled
;
1222 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1223 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1225 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1226 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1229 /* GL_EXT_secondary_color */
1230 case GL_COLOR_SUM_EXT
:
1231 CHECK_EXTENSION_B(EXT_secondary_color
);
1232 *params
= ctx
->Fog
.ColorSumEnabled
;
1234 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1235 CHECK_EXTENSION_B(EXT_secondary_color
);
1236 FLUSH_CURRENT(ctx
, 0);
1237 params
[0] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1238 params
[1] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1239 params
[2] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1241 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1242 CHECK_EXTENSION_B(EXT_secondary_color
);
1243 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1245 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1246 CHECK_EXTENSION_B(EXT_secondary_color
);
1247 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1249 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1250 CHECK_EXTENSION_B(EXT_secondary_color
);
1251 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1253 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1254 CHECK_EXTENSION_B(EXT_secondary_color
);
1255 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1258 /* GL_EXT_fog_coord */
1259 case GL_CURRENT_FOG_COORDINATE_EXT
:
1260 CHECK_EXTENSION_B(EXT_fog_coord
);
1261 FLUSH_CURRENT(ctx
, 0);
1262 *params
= FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1264 case GL_FOG_COORDINATE_ARRAY_EXT
:
1265 CHECK_EXTENSION_B(EXT_fog_coord
);
1266 *params
= ctx
->Array
.FogCoord
.Enabled
;
1268 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1269 CHECK_EXTENSION_B(EXT_fog_coord
);
1270 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1272 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1273 CHECK_EXTENSION_B(EXT_fog_coord
);
1274 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1277 /* GL_EXT_texture_lod_bias */
1278 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1279 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureLodBias
);
1282 /* GL_EXT_texture_filter_anisotropic */
1283 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1284 CHECK_EXTENSION_B(EXT_texture_filter_anisotropic
);
1285 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureMaxAnisotropy
);
1288 /* GL_ARB_multisample */
1289 case GL_MULTISAMPLE_ARB
:
1290 CHECK_EXTENSION_B(ARB_multisample
);
1291 *params
= ctx
->Multisample
.Enabled
;
1293 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1294 CHECK_EXTENSION_B(ARB_multisample
);
1295 *params
= ctx
->Multisample
.SampleAlphaToCoverage
;
1297 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1298 CHECK_EXTENSION_B(ARB_multisample
);
1299 *params
= ctx
->Multisample
.SampleAlphaToOne
;
1301 case GL_SAMPLE_COVERAGE_ARB
:
1302 CHECK_EXTENSION_B(ARB_multisample
);
1303 *params
= ctx
->Multisample
.SampleCoverage
;
1305 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1306 CHECK_EXTENSION_B(ARB_multisample
);
1307 *params
= FLOAT_TO_BOOL(ctx
->Multisample
.SampleCoverageValue
);
1309 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1310 CHECK_EXTENSION_B(ARB_multisample
);
1311 *params
= ctx
->Multisample
.SampleCoverageInvert
;
1313 case GL_SAMPLE_BUFFERS_ARB
:
1314 CHECK_EXTENSION_B(ARB_multisample
);
1315 *params
= 0; /* XXX fix someday */
1317 case GL_SAMPLES_ARB
:
1318 CHECK_EXTENSION_B(ARB_multisample
);
1319 *params
= 0; /* XXX fix someday */
1322 /* GL_IBM_rasterpos_clip */
1323 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1324 CHECK_EXTENSION_B(IBM_rasterpos_clip
);
1325 *params
= ctx
->Transform
.RasterPositionUnclipped
;
1328 /* GL_NV_point_sprite */
1329 case GL_POINT_SPRITE_NV
:
1330 CHECK_EXTENSION_B(NV_point_sprite
);
1331 *params
= ctx
->Point
.PointSprite
;
1333 case GL_POINT_SPRITE_R_MODE_NV
:
1334 CHECK_EXTENSION_B(NV_point_sprite
);
1335 *params
= ENUM_TO_BOOL(ctx
->Point
.SpriteRMode
);
1338 /* GL_SGIS_generate_mipmap */
1339 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1340 CHECK_EXTENSION_B(SGIS_generate_mipmap
);
1341 *params
= ENUM_TO_BOOL(ctx
->Hint
.GenerateMipmap
);
1344 /* GL_NV_vertex_program */
1345 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
1346 CHECK_EXTENSION_B(NV_vertex_program
);
1347 *params
= MAX_PROGRAM_STACK_DEPTH
;
1349 case GL_MAX_TRACK_MATRICES_NV
:
1350 CHECK_EXTENSION_B(NV_vertex_program
);
1351 *params
= MAX_PROGRAM_MATRICES
;
1353 case GL_VERTEX_PROGRAM_NV
:
1354 CHECK_EXTENSION_B(NV_vertex_program
);
1355 *params
= ctx
->VertexProgram
.Enabled
;
1357 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
1358 CHECK_EXTENSION_B(NV_vertex_program
);
1359 *params
= ctx
->VertexProgram
.PointSizeEnabled
;
1361 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
1362 CHECK_EXTENSION_B(NV_vertex_program
);
1363 *params
= ctx
->VertexProgram
.TwoSideEnabled
;
1365 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
1366 CHECK_EXTENSION_B(NV_vertex_program
);
1369 case GL_CURRENT_MATRIX_NV
:
1370 CHECK_EXTENSION_B(NV_vertex_program
);
1373 case GL_VERTEX_PROGRAM_BINDING_NV
:
1374 CHECK_EXTENSION_B(NV_vertex_program
);
1377 case GL_PROGRAM_ERROR_POSITION_NV
:
1378 CHECK_EXTENSION_B(NV_vertex_program
);
1381 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1382 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1383 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1384 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1385 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1386 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1387 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1388 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1389 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1390 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1391 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1392 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1393 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1394 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1395 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1396 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1397 CHECK_EXTENSION_B(NV_vertex_program
);
1399 GLuint n
= (GLint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
1400 *params
= ctx
->Array
.VertexAttrib
[n
].Enabled
;
1403 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1404 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1405 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1406 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1407 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1408 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1409 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1410 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1411 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1412 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1413 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1414 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1415 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1416 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1417 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1418 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1419 CHECK_EXTENSION_B(NV_vertex_program
);
1420 _mesa_problem(ctx
, "glGetBoolean NV token not implemented");
1423 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
1424 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
1425 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
1426 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
1427 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
1428 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
1429 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
1430 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
1431 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
1432 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
1433 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
1434 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
1435 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
1436 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
1437 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
1438 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
1439 CHECK_EXTENSION_B(NV_vertex_program
);
1440 _mesa_problem(ctx
, "glGetBoolean NV token not implemented");
1444 /* GL_NV_texture_rectangle */
1445 case GL_TEXTURE_RECTANGLE_NV
:
1446 CHECK_EXTENSION_B(NV_texture_rectangle
);
1447 *params
= _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1449 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1450 CHECK_EXTENSION_B(NV_texture_rectangle
);
1451 *params
= INT_TO_BOOL(textureUnit
->CurrentRect
->Name
);
1453 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1454 CHECK_EXTENSION_B(NV_texture_rectangle
);
1455 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureRectSize
);
1459 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1465 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1467 GET_CURRENT_CONTEXT(ctx
);
1469 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1470 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1471 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1476 /* We need this in order to get correct results for
1477 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
1479 FLUSH_VERTICES(ctx
, 0);
1481 if (MESA_VERBOSE
& VERBOSE_API
)
1482 _mesa_debug(ctx
, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname
));
1484 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1488 case GL_ACCUM_RED_BITS
:
1489 *params
= (GLdouble
) ctx
->Visual
.accumRedBits
;
1491 case GL_ACCUM_GREEN_BITS
:
1492 *params
= (GLdouble
) ctx
->Visual
.accumGreenBits
;
1494 case GL_ACCUM_BLUE_BITS
:
1495 *params
= (GLdouble
) ctx
->Visual
.accumBlueBits
;
1497 case GL_ACCUM_ALPHA_BITS
:
1498 *params
= (GLdouble
) ctx
->Visual
.accumAlphaBits
;
1500 case GL_ACCUM_CLEAR_VALUE
:
1501 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1502 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1503 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1504 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1507 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1510 *params
= (GLdouble
) ctx
->Visual
.alphaBits
;
1512 case GL_ALPHA_SCALE
:
1513 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1516 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1518 case GL_ALPHA_TEST_FUNC
:
1519 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1521 case GL_ALPHA_TEST_REF
:
1522 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
1524 case GL_ATTRIB_STACK_DEPTH
:
1525 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1527 case GL_AUTO_NORMAL
:
1528 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1530 case GL_AUX_BUFFERS
:
1531 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1534 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1537 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1540 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1542 case GL_BLEND_SRC_RGB_EXT
:
1543 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1545 case GL_BLEND_DST_RGB_EXT
:
1546 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1548 case GL_BLEND_SRC_ALPHA_EXT
:
1549 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1551 case GL_BLEND_DST_ALPHA_EXT
:
1552 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1554 case GL_BLEND_EQUATION_EXT
:
1555 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1557 case GL_BLEND_COLOR_EXT
:
1558 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1559 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1560 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1561 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1564 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1567 *params
= (GLdouble
) ctx
->Visual
.blueBits
;
1570 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1572 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1573 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1575 case GL_CLIP_PLANE0
:
1576 case GL_CLIP_PLANE1
:
1577 case GL_CLIP_PLANE2
:
1578 case GL_CLIP_PLANE3
:
1579 case GL_CLIP_PLANE4
:
1580 case GL_CLIP_PLANE5
:
1581 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
1586 case GL_COLOR_CLEAR_VALUE
:
1587 params
[0] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[0]);
1588 params
[1] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[1]);
1589 params
[2] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[2]);
1590 params
[3] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[3]);
1592 case GL_COLOR_MATERIAL
:
1593 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1595 case GL_COLOR_MATERIAL_FACE
:
1596 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1598 case GL_COLOR_MATERIAL_PARAMETER
:
1599 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1601 case GL_COLOR_WRITEMASK
:
1602 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1603 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1604 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1605 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1608 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1610 case GL_CULL_FACE_MODE
:
1611 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1613 case GL_CURRENT_COLOR
:
1614 FLUSH_CURRENT(ctx
, 0);
1615 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
1616 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
1617 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
1618 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
1620 case GL_CURRENT_INDEX
:
1621 FLUSH_CURRENT(ctx
, 0);
1622 *params
= (GLdouble
) ctx
->Current
.Index
;
1624 case GL_CURRENT_NORMAL
:
1625 FLUSH_CURRENT(ctx
, 0);
1626 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
1627 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
1628 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
1630 case GL_CURRENT_RASTER_COLOR
:
1631 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1632 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1633 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1634 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1636 case GL_CURRENT_RASTER_DISTANCE
:
1637 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1639 case GL_CURRENT_RASTER_INDEX
:
1640 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1642 case GL_CURRENT_RASTER_POSITION
:
1643 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1644 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1645 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1646 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1648 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1649 params
[0] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
1650 params
[1] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
1651 params
[2] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
1652 params
[3] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
1654 case GL_CURRENT_RASTER_POSITION_VALID
:
1655 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1657 case GL_CURRENT_TEXTURE_COORDS
:
1658 FLUSH_CURRENT(ctx
, 0);
1659 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
1660 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
1661 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
1662 params
[3] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
1665 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1668 *params
= (GLdouble
) ctx
->Visual
.depthBits
;
1670 case GL_DEPTH_CLEAR_VALUE
:
1671 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1674 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1676 case GL_DEPTH_RANGE
:
1677 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1678 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1680 case GL_DEPTH_SCALE
:
1681 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1684 *params
= (GLdouble
) ctx
->Depth
.Test
;
1686 case GL_DEPTH_WRITEMASK
:
1687 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1690 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1692 case GL_DOUBLEBUFFER
:
1693 *params
= (GLdouble
) ctx
->Visual
.doubleBufferMode
;
1695 case GL_DRAW_BUFFER
:
1696 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1699 FLUSH_CURRENT(ctx
, 0);
1700 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1702 case GL_FEEDBACK_BUFFER_SIZE
:
1703 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1705 case GL_FEEDBACK_BUFFER_TYPE
:
1706 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1709 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1712 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1713 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1714 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1715 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1717 case GL_FOG_DENSITY
:
1718 *params
= (GLdouble
) ctx
->Fog
.Density
;
1721 *params
= (GLdouble
) ctx
->Fog
.End
;
1724 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1727 *params
= (GLdouble
) ctx
->Fog
.Index
;
1730 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1733 *params
= (GLdouble
) ctx
->Fog
.Start
;
1736 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1739 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1742 *params
= (GLdouble
) ctx
->Visual
.greenBits
;
1744 case GL_GREEN_SCALE
:
1745 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1748 *params
= (GLdouble
) ctx
->Visual
.indexBits
;
1750 case GL_INDEX_CLEAR_VALUE
:
1751 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1754 *params
= ctx
->Visual
.rgbMode
? 0.0 : 1.0;
1756 case GL_INDEX_OFFSET
:
1757 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1759 case GL_INDEX_SHIFT
:
1760 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1762 case GL_INDEX_WRITEMASK
:
1763 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1773 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1776 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1778 case GL_LIGHT_MODEL_AMBIENT
:
1779 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1780 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1781 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1782 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1784 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1785 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1787 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1788 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1790 case GL_LIGHT_MODEL_TWO_SIDE
:
1791 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1793 case GL_LINE_SMOOTH
:
1794 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1796 case GL_LINE_SMOOTH_HINT
:
1797 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1799 case GL_LINE_STIPPLE
:
1800 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1802 case GL_LINE_STIPPLE_PATTERN
:
1803 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1805 case GL_LINE_STIPPLE_REPEAT
:
1806 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1809 *params
= (GLdouble
) ctx
->Line
.Width
;
1811 case GL_LINE_WIDTH_GRANULARITY
:
1812 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1814 case GL_LINE_WIDTH_RANGE
:
1815 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1816 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1818 case GL_ALIASED_LINE_WIDTH_RANGE
:
1819 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1820 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1823 *params
= (GLdouble
) ctx
->List
.ListBase
;
1826 *params
= (GLdouble
) ctx
->CurrentListNum
;
1829 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1830 : ENUM_TO_DOUBLE(GL_COMPILE
);
1832 case GL_INDEX_LOGIC_OP
:
1833 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1835 case GL_COLOR_LOGIC_OP
:
1836 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1838 case GL_LOGIC_OP_MODE
:
1839 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1841 case GL_MAP1_COLOR_4
:
1842 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1844 case GL_MAP1_GRID_DOMAIN
:
1845 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1846 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1848 case GL_MAP1_GRID_SEGMENTS
:
1849 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1852 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1854 case GL_MAP1_NORMAL
:
1855 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1857 case GL_MAP1_TEXTURE_COORD_1
:
1858 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1860 case GL_MAP1_TEXTURE_COORD_2
:
1861 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1863 case GL_MAP1_TEXTURE_COORD_3
:
1864 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1866 case GL_MAP1_TEXTURE_COORD_4
:
1867 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1869 case GL_MAP1_VERTEX_3
:
1870 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1872 case GL_MAP1_VERTEX_4
:
1873 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1875 case GL_MAP2_COLOR_4
:
1876 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1878 case GL_MAP2_GRID_DOMAIN
:
1879 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1880 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1881 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1882 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1884 case GL_MAP2_GRID_SEGMENTS
:
1885 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1886 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1889 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1891 case GL_MAP2_NORMAL
:
1892 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1894 case GL_MAP2_TEXTURE_COORD_1
:
1895 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1897 case GL_MAP2_TEXTURE_COORD_2
:
1898 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1900 case GL_MAP2_TEXTURE_COORD_3
:
1901 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1903 case GL_MAP2_TEXTURE_COORD_4
:
1904 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1906 case GL_MAP2_VERTEX_3
:
1907 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1909 case GL_MAP2_VERTEX_4
:
1910 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1913 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1915 case GL_MAP_STENCIL
:
1916 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1918 case GL_MATRIX_MODE
:
1919 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1921 case GL_MAX_ATTRIB_STACK_DEPTH
:
1922 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1924 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1925 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1927 case GL_MAX_CLIP_PLANES
:
1928 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
1930 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1931 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1933 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1934 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1936 case GL_MAX_EVAL_ORDER
:
1937 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1940 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
1942 case GL_MAX_LIST_NESTING
:
1943 *params
= (GLdouble
) MAX_LIST_NESTING
;
1945 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1946 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1948 case GL_MAX_NAME_STACK_DEPTH
:
1949 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1951 case GL_MAX_PIXEL_MAP_TABLE
:
1952 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1954 case GL_MAX_PROJECTION_STACK_DEPTH
:
1955 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1957 case GL_MAX_TEXTURE_SIZE
:
1958 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
1960 case GL_MAX_3D_TEXTURE_SIZE
:
1961 *params
= (GLdouble
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
1963 case GL_MAX_TEXTURE_STACK_DEPTH
:
1964 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1966 case GL_MAX_VIEWPORT_DIMS
:
1967 params
[0] = (GLdouble
) MAX_WIDTH
;
1968 params
[1] = (GLdouble
) MAX_HEIGHT
;
1970 case GL_MODELVIEW_MATRIX
:
1971 for (i
=0;i
<16;i
++) {
1972 params
[i
] = (GLdouble
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
1975 case GL_MODELVIEW_STACK_DEPTH
:
1976 *params
= (GLdouble
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
1978 case GL_NAME_STACK_DEPTH
:
1979 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1982 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1984 case GL_PACK_ALIGNMENT
:
1985 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1987 case GL_PACK_LSB_FIRST
:
1988 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1990 case GL_PACK_ROW_LENGTH
:
1991 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1993 case GL_PACK_SKIP_PIXELS
:
1994 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1996 case GL_PACK_SKIP_ROWS
:
1997 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1999 case GL_PACK_SWAP_BYTES
:
2000 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
2002 case GL_PACK_SKIP_IMAGES_EXT
:
2003 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
2005 case GL_PACK_IMAGE_HEIGHT_EXT
:
2006 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
2008 case GL_PERSPECTIVE_CORRECTION_HINT
:
2009 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
2011 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2012 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
2014 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2015 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
2017 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2018 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
2020 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2021 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
2023 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2024 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
2026 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2027 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
2029 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2030 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
2032 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2033 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
2035 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2036 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
2038 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2039 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
2042 *params
= (GLdouble
) ctx
->Point
.Size
;
2044 case GL_POINT_SIZE_GRANULARITY
:
2045 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
2047 case GL_POINT_SIZE_RANGE
:
2048 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
2049 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
2051 case GL_ALIASED_POINT_SIZE_RANGE
:
2052 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
2053 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
2055 case GL_POINT_SMOOTH
:
2056 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
2058 case GL_POINT_SMOOTH_HINT
:
2059 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
2061 case GL_POINT_SIZE_MIN_EXT
:
2062 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
2064 case GL_POINT_SIZE_MAX_EXT
:
2065 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
2067 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2068 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
2070 case GL_DISTANCE_ATTENUATION_EXT
:
2071 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
2072 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
2073 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
2075 case GL_POLYGON_MODE
:
2076 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
2077 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
2079 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
2080 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2082 case GL_POLYGON_OFFSET_FACTOR
:
2083 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
2085 case GL_POLYGON_OFFSET_UNITS
:
2086 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2088 case GL_POLYGON_SMOOTH
:
2089 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
2091 case GL_POLYGON_SMOOTH_HINT
:
2092 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
2094 case GL_POLYGON_STIPPLE
:
2095 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
2097 case GL_PROJECTION_MATRIX
:
2098 for (i
=0;i
<16;i
++) {
2099 params
[i
] = (GLdouble
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
2102 case GL_PROJECTION_STACK_DEPTH
:
2103 *params
= (GLdouble
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
2105 case GL_READ_BUFFER
:
2106 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
2109 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
2112 *params
= (GLdouble
) ctx
->Visual
.redBits
;
2115 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
2117 case GL_RENDER_MODE
:
2118 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
2120 case GL_RESCALE_NORMAL
:
2121 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
2124 *params
= (GLdouble
) ctx
->Visual
.rgbMode
;
2126 case GL_SCISSOR_BOX
:
2127 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
2128 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
2129 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
2130 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
2132 case GL_SCISSOR_TEST
:
2133 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
2135 case GL_SELECTION_BUFFER_SIZE
:
2136 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
2138 case GL_SHADE_MODEL
:
2139 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
2141 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2142 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
2144 case GL_STENCIL_BITS
:
2145 *params
= (GLdouble
) ctx
->Visual
.stencilBits
;
2147 case GL_STENCIL_CLEAR_VALUE
:
2148 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
2150 case GL_STENCIL_FAIL
:
2151 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
2153 case GL_STENCIL_FUNC
:
2154 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
2156 case GL_STENCIL_PASS_DEPTH_FAIL
:
2157 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
2159 case GL_STENCIL_PASS_DEPTH_PASS
:
2160 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
2162 case GL_STENCIL_REF
:
2163 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
2165 case GL_STENCIL_TEST
:
2166 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2168 case GL_STENCIL_VALUE_MASK
:
2169 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
2171 case GL_STENCIL_WRITEMASK
:
2172 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
2175 *params
= (GLdouble
) ctx
->Visual
.stereoMode
;
2177 case GL_SUBPIXEL_BITS
:
2178 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2181 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2184 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2187 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2189 case GL_TEXTURE_BINDING_1D
:
2190 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2192 case GL_TEXTURE_BINDING_2D
:
2193 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2195 case GL_TEXTURE_BINDING_3D
:
2196 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2198 case GL_TEXTURE_ENV_COLOR
:
2199 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2200 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2201 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2202 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2204 case GL_TEXTURE_ENV_MODE
:
2205 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2207 case GL_TEXTURE_GEN_S
:
2208 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2210 case GL_TEXTURE_GEN_T
:
2211 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2213 case GL_TEXTURE_GEN_R
:
2214 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2216 case GL_TEXTURE_GEN_Q
:
2217 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2219 case GL_TEXTURE_MATRIX
:
2220 for (i
=0;i
<16;i
++) {
2221 params
[i
] = (GLdouble
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
2224 case GL_TEXTURE_STACK_DEPTH
:
2225 *params
= (GLdouble
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
2227 case GL_UNPACK_ALIGNMENT
:
2228 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2230 case GL_UNPACK_LSB_FIRST
:
2231 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2233 case GL_UNPACK_ROW_LENGTH
:
2234 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2236 case GL_UNPACK_SKIP_PIXELS
:
2237 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2239 case GL_UNPACK_SKIP_ROWS
:
2240 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2242 case GL_UNPACK_SWAP_BYTES
:
2243 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2245 case GL_UNPACK_SKIP_IMAGES_EXT
:
2246 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2248 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2249 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2252 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2253 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2254 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2255 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2258 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2261 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2263 case GL_VERTEX_ARRAY
:
2264 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2266 case GL_VERTEX_ARRAY_SIZE
:
2267 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2269 case GL_VERTEX_ARRAY_TYPE
:
2270 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2272 case GL_VERTEX_ARRAY_STRIDE
:
2273 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2275 case GL_VERTEX_ARRAY_COUNT_EXT
:
2278 case GL_NORMAL_ARRAY
:
2279 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2281 case GL_NORMAL_ARRAY_TYPE
:
2282 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2284 case GL_NORMAL_ARRAY_STRIDE
:
2285 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2287 case GL_NORMAL_ARRAY_COUNT_EXT
:
2290 case GL_COLOR_ARRAY
:
2291 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2293 case GL_COLOR_ARRAY_SIZE
:
2294 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2296 case GL_COLOR_ARRAY_TYPE
:
2297 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2299 case GL_COLOR_ARRAY_STRIDE
:
2300 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2302 case GL_COLOR_ARRAY_COUNT_EXT
:
2305 case GL_INDEX_ARRAY
:
2306 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2308 case GL_INDEX_ARRAY_TYPE
:
2309 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2311 case GL_INDEX_ARRAY_STRIDE
:
2312 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2314 case GL_INDEX_ARRAY_COUNT_EXT
:
2317 case GL_TEXTURE_COORD_ARRAY
:
2318 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2320 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2321 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2323 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2324 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2326 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2327 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2329 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2332 case GL_EDGE_FLAG_ARRAY
:
2333 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2335 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2336 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2338 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2342 /* GL_ARB_multitexture */
2343 case GL_MAX_TEXTURE_UNITS_ARB
:
2344 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2346 case GL_ACTIVE_TEXTURE_ARB
:
2347 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2349 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2350 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2353 /* GL_ARB_texture_cube_map */
2354 case GL_TEXTURE_CUBE_MAP_ARB
:
2355 CHECK_EXTENSION_D(ARB_texture_cube_map
);
2356 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2358 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2359 CHECK_EXTENSION_D(ARB_texture_cube_map
);
2360 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2362 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2363 CHECK_EXTENSION_D(ARB_texture_cube_map
);
2364 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
2367 /* GL_ARB_texture_compression */
2368 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2369 CHECK_EXTENSION_D(ARB_texture_compression
);
2370 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2372 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2373 CHECK_EXTENSION_D(ARB_texture_compression
);
2374 *params
= (GLdouble
) ctx
->Const
.NumCompressedTextureFormats
;
2376 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2377 CHECK_EXTENSION_D(ARB_texture_compression
);
2380 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
2381 params
[i
] = (GLdouble
) ctx
->Const
.CompressedTextureFormats
[i
];
2385 /* GL_EXT_compiled_vertex_array */
2386 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2387 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2389 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2390 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2393 /* GL_ARB_transpose_matrix */
2394 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2398 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
2399 for (i
=0;i
<16;i
++) {
2400 params
[i
] = (GLdouble
) tm
[i
];
2404 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2408 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
2409 for (i
=0;i
<16;i
++) {
2410 params
[i
] = (GLdouble
) tm
[i
];
2414 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2418 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
2419 for (i
=0;i
<16;i
++) {
2420 params
[i
] = (GLdouble
) tm
[i
];
2424 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2428 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
2429 for (i
=0;i
<16;i
++) {
2430 params
[i
] = (GLdouble
) tm
[i
];
2435 /* GL_HP_occlusion_test */
2436 case GL_OCCLUSION_TEST_HP
:
2437 CHECK_EXTENSION_D(HP_occlusion_test
);
2438 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2440 case GL_OCCLUSION_TEST_RESULT_HP
:
2441 CHECK_EXTENSION_D(HP_occlusion_test
);
2442 if (ctx
->Depth
.OcclusionTest
)
2443 *params
= (GLdouble
) ctx
->OcclusionResult
;
2445 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2446 /* reset flag now */
2447 ctx
->OcclusionResult
= GL_FALSE
;
2448 ctx
->OcclusionResultSaved
= GL_FALSE
;
2451 /* GL_SGIS_pixel_texture */
2452 case GL_PIXEL_TEXTURE_SGIS
:
2453 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2456 /* GL_SGIX_pixel_texture */
2457 case GL_PIXEL_TEX_GEN_SGIX
:
2458 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2460 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2461 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2464 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2465 case GL_COLOR_MATRIX_SGI
:
2466 for (i
=0;i
<16;i
++) {
2467 params
[i
] = (GLdouble
) ctx
->ColorMatrixStack
.Top
->m
[i
];
2470 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2471 *params
= (GLdouble
) (ctx
->ColorMatrixStack
.Depth
+ 1);
2473 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2474 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2476 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2477 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2479 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2480 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2482 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2483 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2485 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2486 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2488 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2489 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2491 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2492 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2494 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2495 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2497 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2498 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2501 /* GL_EXT_convolution (also in 1.2 imaging) */
2502 case GL_CONVOLUTION_1D_EXT
:
2503 CHECK_EXTENSION_D(EXT_convolution
);
2504 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2506 case GL_CONVOLUTION_2D
:
2507 CHECK_EXTENSION_D(EXT_convolution
);
2508 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2510 case GL_SEPARABLE_2D
:
2511 CHECK_EXTENSION_D(EXT_convolution
);
2512 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2514 case GL_MAX_CONVOLUTION_WIDTH
:
2515 CHECK_EXTENSION_D(EXT_convolution
);
2516 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionWidth
;
2518 case GL_MAX_CONVOLUTION_HEIGHT
:
2519 CHECK_EXTENSION_D(EXT_convolution
);
2520 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionHeight
;
2522 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2523 CHECK_EXTENSION_D(EXT_convolution
);
2524 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2526 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2527 CHECK_EXTENSION_D(EXT_convolution
);
2528 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2530 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2531 CHECK_EXTENSION_D(EXT_convolution
);
2532 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2534 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2535 CHECK_EXTENSION_D(EXT_convolution
);
2536 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2538 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2539 CHECK_EXTENSION_D(EXT_convolution
);
2540 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2542 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2543 CHECK_EXTENSION_D(EXT_convolution
);
2544 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2546 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2547 CHECK_EXTENSION_D(EXT_convolution
);
2548 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2550 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2551 CHECK_EXTENSION_D(EXT_convolution
);
2552 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2555 /* GL_EXT_histogram (also in 1.2 imaging) */
2557 CHECK_EXTENSION_D(EXT_histogram
);
2558 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
2561 CHECK_EXTENSION_D(EXT_histogram
);
2562 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
2565 /* GL_SGI_color_table (also in 1.2 imaging */
2566 case GL_COLOR_TABLE_SGI
:
2567 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2569 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2570 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2572 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2573 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2576 /* GL_EXT_secondary_color */
2577 case GL_COLOR_SUM_EXT
:
2578 CHECK_EXTENSION_D(EXT_secondary_color
);
2579 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2581 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2582 CHECK_EXTENSION_D(EXT_secondary_color
);
2583 FLUSH_CURRENT(ctx
, 0);
2584 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
2585 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
2586 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
2588 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2589 CHECK_EXTENSION_D(EXT_secondary_color
);
2590 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2592 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2593 CHECK_EXTENSION_D(EXT_secondary_color
);
2594 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2596 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2597 CHECK_EXTENSION_D(EXT_secondary_color
);
2598 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2600 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2601 CHECK_EXTENSION_D(EXT_secondary_color
);
2602 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2605 /* GL_EXT_fog_coord */
2606 case GL_CURRENT_FOG_COORDINATE_EXT
:
2607 CHECK_EXTENSION_D(EXT_fog_coord
);
2608 FLUSH_CURRENT(ctx
, 0);
2609 *params
= (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
2611 case GL_FOG_COORDINATE_ARRAY_EXT
:
2612 CHECK_EXTENSION_D(EXT_fog_coord
);
2613 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2615 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2616 CHECK_EXTENSION_D(EXT_fog_coord
);
2617 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2619 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2620 CHECK_EXTENSION_D(EXT_fog_coord
);
2621 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2624 /* GL_EXT_texture_lod_bias */
2625 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
2626 *params
= (GLdouble
) ctx
->Const
.MaxTextureLodBias
;
2629 /* GL_EXT_texture_filter_anisotropic */
2630 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
2631 CHECK_EXTENSION_D(EXT_texture_filter_anisotropic
);
2632 *params
= (GLdouble
) ctx
->Const
.MaxTextureMaxAnisotropy
;
2635 /* GL_ARB_multisample */
2636 case GL_MULTISAMPLE_ARB
:
2637 CHECK_EXTENSION_D(ARB_multisample
);
2638 *params
= (GLdouble
) ctx
->Multisample
.Enabled
;
2640 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
2641 CHECK_EXTENSION_D(ARB_multisample
);
2642 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToCoverage
;
2644 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
2645 CHECK_EXTENSION_D(ARB_multisample
);
2646 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToOne
;
2648 case GL_SAMPLE_COVERAGE_ARB
:
2649 CHECK_EXTENSION_D(ARB_multisample
);
2650 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverage
;
2652 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
2653 CHECK_EXTENSION_D(ARB_multisample
);
2654 *params
= ctx
->Multisample
.SampleCoverageValue
;
2656 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
2657 CHECK_EXTENSION_D(ARB_multisample
);
2658 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverageInvert
;
2660 case GL_SAMPLE_BUFFERS_ARB
:
2661 CHECK_EXTENSION_D(ARB_multisample
);
2662 *params
= 0.0; /* XXX fix someday */
2664 case GL_SAMPLES_ARB
:
2665 CHECK_EXTENSION_D(ARB_multisample
);
2666 *params
= 0.0; /* XXX fix someday */
2669 /* GL_IBM_rasterpos_clip */
2670 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
2671 CHECK_EXTENSION_D(IBM_rasterpos_clip
);
2672 *params
= (GLdouble
) ctx
->Transform
.RasterPositionUnclipped
;
2675 /* GL_NV_point_sprite */
2676 case GL_POINT_SPRITE_NV
:
2677 CHECK_EXTENSION_B(NV_point_sprite
);
2678 *params
= (GLdouble
) ctx
->Point
.PointSprite
;
2680 case GL_POINT_SPRITE_R_MODE_NV
:
2681 CHECK_EXTENSION_B(NV_point_sprite
);
2682 *params
= (GLdouble
) ctx
->Point
.SpriteRMode
;
2685 /* GL_SGIS_generate_mipmap */
2686 case GL_GENERATE_MIPMAP_HINT_SGIS
:
2687 CHECK_EXTENSION_D(SGIS_generate_mipmap
);
2688 *params
= (GLdouble
) ctx
->Hint
.GenerateMipmap
;
2691 /* GL_NV_vertex_program */
2694 /* GL_NV_texture_rectangle */
2695 case GL_TEXTURE_RECTANGLE_NV
:
2696 CHECK_EXTENSION_D(NV_texture_rectangle
);
2697 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
2699 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
2700 CHECK_EXTENSION_D(NV_texture_rectangle
);
2701 *params
= (GLdouble
) textureUnit
->CurrentRect
->Name
;
2703 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
2704 CHECK_EXTENSION_D(NV_texture_rectangle
);
2705 *params
= (GLdouble
) ctx
->Const
.MaxTextureRectSize
;
2709 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2714 #define GET_FLOAT_ERROR \
2717 sprintf(s, "glGetFloatv(0x%x)", pname); \
2718 _mesa_error(ctx, GL_INVALID_ENUM, s); \
2722 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2724 GET_CURRENT_CONTEXT(ctx
);
2726 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2727 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2728 ASSERT_OUTSIDE_BEGIN_END(ctx
);
2733 /* We need this in order to get correct results for
2734 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
2736 FLUSH_VERTICES(ctx
, 0);
2738 if (MESA_VERBOSE
& VERBOSE_API
)
2739 _mesa_debug(ctx
, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname
));
2741 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2745 case GL_ACCUM_RED_BITS
:
2746 *params
= (GLfloat
) ctx
->Visual
.accumRedBits
;
2748 case GL_ACCUM_GREEN_BITS
:
2749 *params
= (GLfloat
) ctx
->Visual
.accumGreenBits
;
2751 case GL_ACCUM_BLUE_BITS
:
2752 *params
= (GLfloat
) ctx
->Visual
.accumBlueBits
;
2754 case GL_ACCUM_ALPHA_BITS
:
2755 *params
= (GLfloat
) ctx
->Visual
.accumAlphaBits
;
2757 case GL_ACCUM_CLEAR_VALUE
:
2758 params
[0] = ctx
->Accum
.ClearColor
[0];
2759 params
[1] = ctx
->Accum
.ClearColor
[1];
2760 params
[2] = ctx
->Accum
.ClearColor
[2];
2761 params
[3] = ctx
->Accum
.ClearColor
[3];
2764 *params
= ctx
->Pixel
.AlphaBias
;
2767 *params
= (GLfloat
) ctx
->Visual
.alphaBits
;
2769 case GL_ALPHA_SCALE
:
2770 *params
= ctx
->Pixel
.AlphaScale
;
2773 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2775 case GL_ALPHA_TEST_FUNC
:
2776 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2778 case GL_ALPHA_TEST_REF
:
2779 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
2781 case GL_ATTRIB_STACK_DEPTH
:
2782 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2784 case GL_AUTO_NORMAL
:
2785 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2787 case GL_AUX_BUFFERS
:
2788 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2791 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2794 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2797 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2799 case GL_BLEND_SRC_RGB_EXT
:
2800 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2802 case GL_BLEND_DST_RGB_EXT
:
2803 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2805 case GL_BLEND_SRC_ALPHA_EXT
:
2806 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2808 case GL_BLEND_DST_ALPHA_EXT
:
2809 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2811 case GL_BLEND_EQUATION_EXT
:
2812 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2814 case GL_BLEND_COLOR_EXT
:
2815 params
[0] = ctx
->Color
.BlendColor
[0];
2816 params
[1] = ctx
->Color
.BlendColor
[1];
2817 params
[2] = ctx
->Color
.BlendColor
[2];
2818 params
[3] = ctx
->Color
.BlendColor
[3];
2821 *params
= ctx
->Pixel
.BlueBias
;
2824 *params
= (GLfloat
) ctx
->Visual
.blueBits
;
2827 *params
= ctx
->Pixel
.BlueScale
;
2829 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2830 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2832 case GL_CLIP_PLANE0
:
2833 case GL_CLIP_PLANE1
:
2834 case GL_CLIP_PLANE2
:
2835 case GL_CLIP_PLANE3
:
2836 case GL_CLIP_PLANE4
:
2837 case GL_CLIP_PLANE5
:
2838 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
2843 case GL_COLOR_CLEAR_VALUE
:
2844 params
[0] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[0]);
2845 params
[1] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[1]);
2846 params
[2] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[2]);
2847 params
[3] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[3]);
2849 case GL_COLOR_MATERIAL
:
2850 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2852 case GL_COLOR_MATERIAL_FACE
:
2853 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2855 case GL_COLOR_MATERIAL_PARAMETER
:
2856 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2858 case GL_COLOR_WRITEMASK
:
2859 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2860 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2861 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2862 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2865 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2867 case GL_CULL_FACE_MODE
:
2868 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2870 case GL_CURRENT_COLOR
:
2871 FLUSH_CURRENT(ctx
, 0);
2872 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
2873 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
2874 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
2875 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
2877 case GL_CURRENT_INDEX
:
2878 FLUSH_CURRENT(ctx
, 0);
2879 *params
= (GLfloat
) ctx
->Current
.Index
;
2881 case GL_CURRENT_NORMAL
:
2882 FLUSH_CURRENT(ctx
, 0);
2883 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
2884 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
2885 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
2887 case GL_CURRENT_RASTER_COLOR
:
2888 params
[0] = ctx
->Current
.RasterColor
[0];
2889 params
[1] = ctx
->Current
.RasterColor
[1];
2890 params
[2] = ctx
->Current
.RasterColor
[2];
2891 params
[3] = ctx
->Current
.RasterColor
[3];
2893 case GL_CURRENT_RASTER_DISTANCE
:
2894 params
[0] = ctx
->Current
.RasterDistance
;
2896 case GL_CURRENT_RASTER_INDEX
:
2897 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2899 case GL_CURRENT_RASTER_POSITION
:
2900 params
[0] = ctx
->Current
.RasterPos
[0];
2901 params
[1] = ctx
->Current
.RasterPos
[1];
2902 params
[2] = ctx
->Current
.RasterPos
[2];
2903 params
[3] = ctx
->Current
.RasterPos
[3];
2905 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2906 params
[0] = ctx
->Current
.RasterTexCoords
[texUnit
][0];
2907 params
[1] = ctx
->Current
.RasterTexCoords
[texUnit
][1];
2908 params
[2] = ctx
->Current
.RasterTexCoords
[texUnit
][2];
2909 params
[3] = ctx
->Current
.RasterTexCoords
[texUnit
][3];
2911 case GL_CURRENT_RASTER_POSITION_VALID
:
2912 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2914 case GL_CURRENT_TEXTURE_COORDS
:
2915 FLUSH_CURRENT(ctx
, 0);
2916 params
[0] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
2917 params
[1] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
2918 params
[2] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
2919 params
[3] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
2922 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2925 *params
= (GLfloat
) ctx
->Visual
.depthBits
;
2927 case GL_DEPTH_CLEAR_VALUE
:
2928 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2931 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2933 case GL_DEPTH_RANGE
:
2934 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2935 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2937 case GL_DEPTH_SCALE
:
2938 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2941 *params
= (GLfloat
) ctx
->Depth
.Test
;
2943 case GL_DEPTH_WRITEMASK
:
2944 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2947 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2949 case GL_DOUBLEBUFFER
:
2950 *params
= (GLfloat
) ctx
->Visual
.doubleBufferMode
;
2952 case GL_DRAW_BUFFER
:
2953 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2956 FLUSH_CURRENT(ctx
, 0);
2957 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2959 case GL_FEEDBACK_BUFFER_SIZE
:
2960 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2962 case GL_FEEDBACK_BUFFER_TYPE
:
2963 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2966 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2969 params
[0] = ctx
->Fog
.Color
[0];
2970 params
[1] = ctx
->Fog
.Color
[1];
2971 params
[2] = ctx
->Fog
.Color
[2];
2972 params
[3] = ctx
->Fog
.Color
[3];
2974 case GL_FOG_DENSITY
:
2975 *params
= ctx
->Fog
.Density
;
2978 *params
= ctx
->Fog
.End
;
2981 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2984 *params
= ctx
->Fog
.Index
;
2987 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2990 *params
= ctx
->Fog
.Start
;
2993 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2996 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2999 *params
= (GLfloat
) ctx
->Visual
.greenBits
;
3001 case GL_GREEN_SCALE
:
3002 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
3005 *params
= (GLfloat
) ctx
->Visual
.indexBits
;
3007 case GL_INDEX_CLEAR_VALUE
:
3008 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
3011 *params
= ctx
->Visual
.rgbMode
? 0.0F
: 1.0F
;
3013 case GL_INDEX_OFFSET
:
3014 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
3016 case GL_INDEX_SHIFT
:
3017 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
3019 case GL_INDEX_WRITEMASK
:
3020 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
3030 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3033 *params
= (GLfloat
) ctx
->Light
.Enabled
;
3035 case GL_LIGHT_MODEL_AMBIENT
:
3036 params
[0] = ctx
->Light
.Model
.Ambient
[0];
3037 params
[1] = ctx
->Light
.Model
.Ambient
[1];
3038 params
[2] = ctx
->Light
.Model
.Ambient
[2];
3039 params
[3] = ctx
->Light
.Model
.Ambient
[3];
3041 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3042 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
3044 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3045 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
3047 case GL_LIGHT_MODEL_TWO_SIDE
:
3048 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
3050 case GL_LINE_SMOOTH
:
3051 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
3053 case GL_LINE_SMOOTH_HINT
:
3054 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
3056 case GL_LINE_STIPPLE
:
3057 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
3059 case GL_LINE_STIPPLE_PATTERN
:
3060 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
3062 case GL_LINE_STIPPLE_REPEAT
:
3063 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
3066 *params
= (GLfloat
) ctx
->Line
.Width
;
3068 case GL_LINE_WIDTH_GRANULARITY
:
3069 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
3071 case GL_LINE_WIDTH_RANGE
:
3072 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
3073 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
3075 case GL_ALIASED_LINE_WIDTH_RANGE
:
3076 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
3077 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
3080 *params
= (GLfloat
) ctx
->List
.ListBase
;
3083 *params
= (GLfloat
) ctx
->CurrentListNum
;
3086 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
3087 : ENUM_TO_FLOAT(GL_COMPILE
);
3089 case GL_INDEX_LOGIC_OP
:
3090 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
3092 case GL_COLOR_LOGIC_OP
:
3093 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
3095 case GL_LOGIC_OP_MODE
:
3096 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
3098 case GL_MAP1_COLOR_4
:
3099 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
3101 case GL_MAP1_GRID_DOMAIN
:
3102 params
[0] = ctx
->Eval
.MapGrid1u1
;
3103 params
[1] = ctx
->Eval
.MapGrid1u2
;
3105 case GL_MAP1_GRID_SEGMENTS
:
3106 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
3109 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
3111 case GL_MAP1_NORMAL
:
3112 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
3114 case GL_MAP1_TEXTURE_COORD_1
:
3115 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
3117 case GL_MAP1_TEXTURE_COORD_2
:
3118 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
3120 case GL_MAP1_TEXTURE_COORD_3
:
3121 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
3123 case GL_MAP1_TEXTURE_COORD_4
:
3124 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
3126 case GL_MAP1_VERTEX_3
:
3127 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
3129 case GL_MAP1_VERTEX_4
:
3130 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
3132 case GL_MAP2_COLOR_4
:
3133 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
3135 case GL_MAP2_GRID_DOMAIN
:
3136 params
[0] = ctx
->Eval
.MapGrid2u1
;
3137 params
[1] = ctx
->Eval
.MapGrid2u2
;
3138 params
[2] = ctx
->Eval
.MapGrid2v1
;
3139 params
[3] = ctx
->Eval
.MapGrid2v2
;
3141 case GL_MAP2_GRID_SEGMENTS
:
3142 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
3143 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
3146 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
3148 case GL_MAP2_NORMAL
:
3149 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
3151 case GL_MAP2_TEXTURE_COORD_1
:
3152 *params
= ctx
->Eval
.Map2TextureCoord1
;
3154 case GL_MAP2_TEXTURE_COORD_2
:
3155 *params
= ctx
->Eval
.Map2TextureCoord2
;
3157 case GL_MAP2_TEXTURE_COORD_3
:
3158 *params
= ctx
->Eval
.Map2TextureCoord3
;
3160 case GL_MAP2_TEXTURE_COORD_4
:
3161 *params
= ctx
->Eval
.Map2TextureCoord4
;
3163 case GL_MAP2_VERTEX_3
:
3164 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
3166 case GL_MAP2_VERTEX_4
:
3167 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
3170 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
3172 case GL_MAP_STENCIL
:
3173 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
3175 case GL_MATRIX_MODE
:
3176 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
3178 case GL_MAX_ATTRIB_STACK_DEPTH
:
3179 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
3181 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3182 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3184 case GL_MAX_CLIP_PLANES
:
3185 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
3187 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3188 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3190 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3191 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3193 case GL_MAX_EVAL_ORDER
:
3194 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3197 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3199 case GL_MAX_LIST_NESTING
:
3200 *params
= (GLfloat
) MAX_LIST_NESTING
;
3202 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3203 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3205 case GL_MAX_NAME_STACK_DEPTH
:
3206 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3208 case GL_MAX_PIXEL_MAP_TABLE
:
3209 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3211 case GL_MAX_PROJECTION_STACK_DEPTH
:
3212 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3214 case GL_MAX_TEXTURE_SIZE
:
3215 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
3217 case GL_MAX_3D_TEXTURE_SIZE
:
3218 *params
= (GLfloat
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
3220 case GL_MAX_TEXTURE_STACK_DEPTH
:
3221 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3223 case GL_MAX_VIEWPORT_DIMS
:
3224 params
[0] = (GLfloat
) MAX_WIDTH
;
3225 params
[1] = (GLfloat
) MAX_HEIGHT
;
3227 case GL_MODELVIEW_MATRIX
:
3228 for (i
=0;i
<16;i
++) {
3229 params
[i
] = ctx
->ModelviewMatrixStack
.Top
->m
[i
];
3232 case GL_MODELVIEW_STACK_DEPTH
:
3233 *params
= (GLfloat
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
3235 case GL_NAME_STACK_DEPTH
:
3236 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3239 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3241 case GL_PACK_ALIGNMENT
:
3242 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3244 case GL_PACK_LSB_FIRST
:
3245 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3247 case GL_PACK_ROW_LENGTH
:
3248 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3250 case GL_PACK_SKIP_PIXELS
:
3251 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3253 case GL_PACK_SKIP_ROWS
:
3254 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3256 case GL_PACK_SWAP_BYTES
:
3257 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3259 case GL_PACK_SKIP_IMAGES_EXT
:
3260 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3262 case GL_PACK_IMAGE_HEIGHT_EXT
:
3263 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3265 case GL_PERSPECTIVE_CORRECTION_HINT
:
3266 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3268 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3269 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3271 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3272 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3274 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3275 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3277 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3278 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3280 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3281 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3283 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3284 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3286 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3287 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3289 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3290 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3292 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3293 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3295 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3296 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3299 *params
= (GLfloat
) ctx
->Point
.Size
;
3301 case GL_POINT_SIZE_GRANULARITY
:
3302 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3304 case GL_POINT_SIZE_RANGE
:
3305 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3306 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3308 case GL_ALIASED_POINT_SIZE_RANGE
:
3309 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3310 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3312 case GL_POINT_SMOOTH
:
3313 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3315 case GL_POINT_SMOOTH_HINT
:
3316 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3318 case GL_POINT_SIZE_MIN_EXT
:
3319 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3321 case GL_POINT_SIZE_MAX_EXT
:
3322 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3324 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3325 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3327 case GL_DISTANCE_ATTENUATION_EXT
:
3328 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3329 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3330 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3332 case GL_POLYGON_MODE
:
3333 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3334 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3336 #ifdef GL_EXT_polygon_offset
3337 case GL_POLYGON_OFFSET_BIAS_EXT
:
3338 *params
= ctx
->Polygon
.OffsetUnits
;
3341 case GL_POLYGON_OFFSET_FACTOR
:
3342 *params
= ctx
->Polygon
.OffsetFactor
;
3344 case GL_POLYGON_OFFSET_UNITS
:
3345 *params
= ctx
->Polygon
.OffsetUnits
;
3347 case GL_POLYGON_SMOOTH
:
3348 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3350 case GL_POLYGON_SMOOTH_HINT
:
3351 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3353 case GL_POLYGON_STIPPLE
:
3354 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3356 case GL_PROJECTION_MATRIX
:
3357 for (i
=0;i
<16;i
++) {
3358 params
[i
] = ctx
->ProjectionMatrixStack
.Top
->m
[i
];
3361 case GL_PROJECTION_STACK_DEPTH
:
3362 *params
= (GLfloat
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
3364 case GL_READ_BUFFER
:
3365 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3368 *params
= ctx
->Pixel
.RedBias
;
3371 *params
= (GLfloat
) ctx
->Visual
.redBits
;
3374 *params
= ctx
->Pixel
.RedScale
;
3376 case GL_RENDER_MODE
:
3377 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3379 case GL_RESCALE_NORMAL
:
3380 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3383 *params
= (GLfloat
) ctx
->Visual
.rgbMode
;
3385 case GL_SCISSOR_BOX
:
3386 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3387 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3388 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3389 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3391 case GL_SCISSOR_TEST
:
3392 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3394 case GL_SELECTION_BUFFER_SIZE
:
3395 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3397 case GL_SHADE_MODEL
:
3398 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3400 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3401 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3403 case GL_STENCIL_BITS
:
3404 *params
= (GLfloat
) ctx
->Visual
.stencilBits
;
3406 case GL_STENCIL_CLEAR_VALUE
:
3407 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3409 case GL_STENCIL_FAIL
:
3410 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
3412 case GL_STENCIL_FUNC
:
3413 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
3415 case GL_STENCIL_PASS_DEPTH_FAIL
:
3416 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
3418 case GL_STENCIL_PASS_DEPTH_PASS
:
3419 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
3421 case GL_STENCIL_REF
:
3422 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
3424 case GL_STENCIL_TEST
:
3425 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3427 case GL_STENCIL_VALUE_MASK
:
3428 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
3430 case GL_STENCIL_WRITEMASK
:
3431 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
3434 *params
= (GLfloat
) ctx
->Visual
.stereoMode
;
3436 case GL_SUBPIXEL_BITS
:
3437 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3440 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0F
: 0.0F
;
3443 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0F
: 0.0F
;
3446 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0F
: 0.0F
;
3448 case GL_TEXTURE_BINDING_1D
:
3449 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3451 case GL_TEXTURE_BINDING_2D
:
3452 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3454 case GL_TEXTURE_BINDING_3D
:
3455 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3457 case GL_TEXTURE_ENV_COLOR
:
3458 params
[0] = textureUnit
->EnvColor
[0];
3459 params
[1] = textureUnit
->EnvColor
[1];
3460 params
[2] = textureUnit
->EnvColor
[2];
3461 params
[3] = textureUnit
->EnvColor
[3];
3463 case GL_TEXTURE_ENV_MODE
:
3464 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3466 case GL_TEXTURE_GEN_S
:
3467 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0F
: 0.0F
;
3469 case GL_TEXTURE_GEN_T
:
3470 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0F
: 0.0F
;
3472 case GL_TEXTURE_GEN_R
:
3473 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0F
: 0.0F
;
3475 case GL_TEXTURE_GEN_Q
:
3476 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0F
: 0.0F
;
3478 case GL_TEXTURE_MATRIX
:
3479 for (i
=0;i
<16;i
++) {
3480 params
[i
] = ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
3483 case GL_TEXTURE_STACK_DEPTH
:
3484 *params
= (GLfloat
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
3486 case GL_UNPACK_ALIGNMENT
:
3487 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3489 case GL_UNPACK_LSB_FIRST
:
3490 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3492 case GL_UNPACK_ROW_LENGTH
:
3493 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3495 case GL_UNPACK_SKIP_PIXELS
:
3496 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3498 case GL_UNPACK_SKIP_ROWS
:
3499 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3501 case GL_UNPACK_SWAP_BYTES
:
3502 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3504 case GL_UNPACK_SKIP_IMAGES_EXT
:
3505 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3507 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3508 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3511 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3512 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3513 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3514 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3517 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3520 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3522 case GL_VERTEX_ARRAY
:
3523 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3525 case GL_VERTEX_ARRAY_SIZE
:
3526 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3528 case GL_VERTEX_ARRAY_TYPE
:
3529 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3531 case GL_VERTEX_ARRAY_STRIDE
:
3532 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3534 case GL_VERTEX_ARRAY_COUNT_EXT
:
3537 case GL_NORMAL_ARRAY
:
3538 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3540 case GL_NORMAL_ARRAY_TYPE
:
3541 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3543 case GL_NORMAL_ARRAY_STRIDE
:
3544 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3546 case GL_NORMAL_ARRAY_COUNT_EXT
:
3549 case GL_COLOR_ARRAY
:
3550 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3552 case GL_COLOR_ARRAY_SIZE
:
3553 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3555 case GL_COLOR_ARRAY_TYPE
:
3556 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3558 case GL_COLOR_ARRAY_STRIDE
:
3559 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3561 case GL_COLOR_ARRAY_COUNT_EXT
:
3564 case GL_INDEX_ARRAY
:
3565 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3567 case GL_INDEX_ARRAY_TYPE
:
3568 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3570 case GL_INDEX_ARRAY_STRIDE
:
3571 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3573 case GL_INDEX_ARRAY_COUNT_EXT
:
3576 case GL_TEXTURE_COORD_ARRAY
:
3577 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3579 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3580 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3582 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3583 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3585 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3586 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3588 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3591 case GL_EDGE_FLAG_ARRAY
:
3592 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3594 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3595 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3597 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3601 /* GL_ARB_multitexture */
3602 case GL_MAX_TEXTURE_UNITS_ARB
:
3603 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3605 case GL_ACTIVE_TEXTURE_ARB
:
3606 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3608 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3609 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3612 /* GL_ARB_texture_cube_map */
3613 case GL_TEXTURE_CUBE_MAP_ARB
:
3614 CHECK_EXTENSION_F(ARB_texture_cube_map
);
3615 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3617 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3618 CHECK_EXTENSION_F(ARB_texture_cube_map
);
3619 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3621 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3622 CHECK_EXTENSION_F(ARB_texture_cube_map
);
3623 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
3626 /* GL_ARB_texture_compression */
3627 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3628 CHECK_EXTENSION_F(ARB_texture_compression
);
3629 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3631 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3632 CHECK_EXTENSION_F(ARB_texture_compression
);
3633 *params
= (GLfloat
) ctx
->Const
.NumCompressedTextureFormats
;
3635 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3636 CHECK_EXTENSION_F(ARB_texture_compression
);
3639 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
3640 params
[i
] = (GLfloat
) ctx
->Const
.CompressedTextureFormats
[i
];
3644 /* GL_EXT_compiled_vertex_array */
3645 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3646 CHECK_EXTENSION_F(EXT_compiled_vertex_array
);
3647 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3649 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3650 CHECK_EXTENSION_F(EXT_compiled_vertex_array
);
3651 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3654 /* GL_ARB_transpose_matrix */
3655 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3656 _math_transposef(params
, ctx
->ColorMatrixStack
.Top
->m
);
3658 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3659 _math_transposef(params
, ctx
->ModelviewMatrixStack
.Top
->m
);
3661 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3662 _math_transposef(params
, ctx
->ProjectionMatrixStack
.Top
->m
);
3664 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3665 _math_transposef(params
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
3668 /* GL_HP_occlusion_test */
3669 case GL_OCCLUSION_TEST_HP
:
3670 CHECK_EXTENSION_F(HP_occlusion_test
);
3671 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3673 case GL_OCCLUSION_TEST_RESULT_HP
:
3674 CHECK_EXTENSION_F(HP_occlusion_test
);
3675 if (ctx
->Depth
.OcclusionTest
)
3676 *params
= (GLfloat
) ctx
->OcclusionResult
;
3678 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3679 /* reset flag now */
3680 ctx
->OcclusionResult
= GL_FALSE
;
3681 ctx
->OcclusionResultSaved
= GL_FALSE
;
3684 /* GL_SGIS_pixel_texture */
3685 case GL_PIXEL_TEXTURE_SGIS
:
3686 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3689 /* GL_SGIX_pixel_texture */
3690 case GL_PIXEL_TEX_GEN_SGIX
:
3691 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3693 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3694 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3697 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3698 case GL_COLOR_MATRIX_SGI
:
3699 for (i
=0;i
<16;i
++) {
3700 params
[i
] = ctx
->ColorMatrixStack
.Top
->m
[i
];
3703 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3704 *params
= (GLfloat
) (ctx
->ColorMatrixStack
.Depth
+ 1);
3706 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3707 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3709 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3710 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3712 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3713 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3715 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3716 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3718 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3719 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3721 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3722 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3724 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3725 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3727 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3728 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3730 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3731 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3734 /* GL_EXT_convolution (also in 1.2 imaging) */
3735 case GL_CONVOLUTION_1D_EXT
:
3736 CHECK_EXTENSION_F(EXT_convolution
);
3737 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
3739 case GL_CONVOLUTION_2D
:
3740 CHECK_EXTENSION_F(EXT_convolution
);
3741 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
3743 case GL_SEPARABLE_2D
:
3744 CHECK_EXTENSION_F(EXT_convolution
);
3745 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
3747 case GL_MAX_CONVOLUTION_WIDTH
:
3748 CHECK_EXTENSION_F(EXT_convolution
);
3749 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionWidth
;
3751 case GL_MAX_CONVOLUTION_HEIGHT
:
3752 CHECK_EXTENSION_F(EXT_convolution
);
3753 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionHeight
;
3755 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3756 CHECK_EXTENSION_F(EXT_convolution
);
3757 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3759 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3760 CHECK_EXTENSION_F(EXT_convolution
);
3761 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3763 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3764 CHECK_EXTENSION_F(EXT_convolution
);
3765 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3767 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3768 CHECK_EXTENSION_F(EXT_convolution
);
3769 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3771 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3772 CHECK_EXTENSION_F(EXT_convolution
);
3773 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3775 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3776 CHECK_EXTENSION_F(EXT_convolution
);
3777 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3779 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3780 CHECK_EXTENSION_F(EXT_convolution
);
3781 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3783 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3784 CHECK_EXTENSION_F(EXT_convolution
);
3785 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3788 /* GL_EXT_histogram (also in 1.2 imaging) */
3790 CHECK_EXTENSION_F(EXT_histogram
);
3791 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
3794 CHECK_EXTENSION_F(EXT_histogram
);
3795 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
3798 /* GL_SGI_color_table (also in 1.2 imaging */
3799 case GL_COLOR_TABLE_SGI
:
3800 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3802 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3803 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3805 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3806 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3809 /* GL_EXT_secondary_color */
3810 case GL_COLOR_SUM_EXT
:
3811 CHECK_EXTENSION_F(EXT_secondary_color
);
3812 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3814 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3815 CHECK_EXTENSION_F(EXT_secondary_color
);
3816 FLUSH_CURRENT(ctx
, 0);
3817 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
3818 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
3819 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
3821 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3822 CHECK_EXTENSION_F(EXT_secondary_color
);
3823 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3825 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3826 CHECK_EXTENSION_F(EXT_secondary_color
);
3827 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3829 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3830 CHECK_EXTENSION_F(EXT_secondary_color
);
3831 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3833 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3834 CHECK_EXTENSION_F(EXT_secondary_color
);
3835 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3838 /* GL_EXT_fog_coord */
3839 case GL_CURRENT_FOG_COORDINATE_EXT
:
3840 CHECK_EXTENSION_F(EXT_fog_coord
);
3841 FLUSH_CURRENT(ctx
, 0);
3842 *params
= (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
3844 case GL_FOG_COORDINATE_ARRAY_EXT
:
3845 CHECK_EXTENSION_F(EXT_fog_coord
);
3846 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3848 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3849 CHECK_EXTENSION_F(EXT_fog_coord
);
3850 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3852 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3853 CHECK_EXTENSION_F(EXT_fog_coord
);
3854 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3857 /* GL_EXT_texture_lod_bias */
3858 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3859 *params
= ctx
->Const
.MaxTextureLodBias
;
3862 /* GL_EXT_texture_filter_anisotropic */
3863 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3864 CHECK_EXTENSION_F(EXT_texture_filter_anisotropic
);
3865 *params
= ctx
->Const
.MaxTextureMaxAnisotropy
;
3868 /* GL_ARB_multisample */
3869 case GL_MULTISAMPLE_ARB
:
3870 CHECK_EXTENSION_F(ARB_multisample
);
3871 *params
= (GLfloat
) ctx
->Multisample
.Enabled
;
3873 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
3874 CHECK_EXTENSION_F(ARB_multisample
);
3875 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToCoverage
;
3877 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
3878 CHECK_EXTENSION_F(ARB_multisample
);
3879 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToOne
;
3881 case GL_SAMPLE_COVERAGE_ARB
:
3882 CHECK_EXTENSION_F(ARB_multisample
);
3883 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverage
;
3885 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
3886 CHECK_EXTENSION_F(ARB_multisample
);
3887 *params
= ctx
->Multisample
.SampleCoverageValue
;
3889 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
3890 CHECK_EXTENSION_F(ARB_multisample
);
3891 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverageInvert
;
3893 case GL_SAMPLE_BUFFERS_ARB
:
3894 CHECK_EXTENSION_F(ARB_multisample
);
3895 *params
= 0.0; /* XXX fix someday */
3897 case GL_SAMPLES_ARB
:
3898 CHECK_EXTENSION_F(ARB_multisample
);
3899 *params
= 0.0; /* XXX fix someday */
3902 /* GL_IBM_rasterpos_clip */
3903 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
3904 CHECK_EXTENSION_F(IBM_rasterpos_clip
);
3905 *params
= (GLfloat
) ctx
->Transform
.RasterPositionUnclipped
;
3908 /* GL_NV_point_sprite */
3909 case GL_POINT_SPRITE_NV
:
3910 CHECK_EXTENSION_B(NV_point_sprite
);
3911 *params
= (GLfloat
) ctx
->Point
.PointSprite
;
3913 case GL_POINT_SPRITE_R_MODE_NV
:
3914 CHECK_EXTENSION_B(NV_point_sprite
);
3915 *params
= (GLfloat
) ctx
->Point
.SpriteRMode
;
3918 /* GL_SGIS_generate_mipmap */
3919 case GL_GENERATE_MIPMAP_HINT_SGIS
:
3920 CHECK_EXTENSION_F(SGIS_generate_mipmap
);
3921 *params
= (GLfloat
) ctx
->Hint
.GenerateMipmap
;
3924 /* GL_NV_vertex_program */
3927 /* GL_NV_texture_rectangle */
3928 case GL_TEXTURE_RECTANGLE_NV
:
3929 CHECK_EXTENSION_F(NV_texture_rectangle
);
3930 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
3932 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
3933 CHECK_EXTENSION_F(NV_texture_rectangle
);
3934 *params
= (GLfloat
) textureUnit
->CurrentRect
->Name
;
3936 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
3937 CHECK_EXTENSION_F(NV_texture_rectangle
);
3938 *params
= (GLfloat
) ctx
->Const
.MaxTextureRectSize
;
3948 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3950 GET_CURRENT_CONTEXT(ctx
);
3952 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3953 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3954 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3959 /* We need this in order to get correct results for
3960 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
3962 FLUSH_VERTICES(ctx
, 0);
3964 if (MESA_VERBOSE
& VERBOSE_API
)
3965 _mesa_debug(ctx
, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname
));
3967 if (ctx
->Driver
.GetIntegerv
3968 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
3972 case GL_ACCUM_RED_BITS
:
3973 *params
= (GLint
) ctx
->Visual
.accumRedBits
;
3975 case GL_ACCUM_GREEN_BITS
:
3976 *params
= (GLint
) ctx
->Visual
.accumGreenBits
;
3978 case GL_ACCUM_BLUE_BITS
:
3979 *params
= (GLint
) ctx
->Visual
.accumBlueBits
;
3981 case GL_ACCUM_ALPHA_BITS
:
3982 *params
= (GLint
) ctx
->Visual
.accumAlphaBits
;
3984 case GL_ACCUM_CLEAR_VALUE
:
3985 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
3986 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
3987 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
3988 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
3991 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
3994 *params
= ctx
->Visual
.alphaBits
;
3996 case GL_ALPHA_SCALE
:
3997 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
4000 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
4002 case GL_ALPHA_TEST_REF
:
4003 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
4005 case GL_ALPHA_TEST_FUNC
:
4006 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
4008 case GL_ATTRIB_STACK_DEPTH
:
4009 *params
= (GLint
) (ctx
->AttribStackDepth
);
4011 case GL_AUTO_NORMAL
:
4012 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
4014 case GL_AUX_BUFFERS
:
4015 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
4018 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
4021 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4024 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4026 case GL_BLEND_SRC_RGB_EXT
:
4027 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4029 case GL_BLEND_DST_RGB_EXT
:
4030 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4032 case GL_BLEND_SRC_ALPHA_EXT
:
4033 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
4035 case GL_BLEND_DST_ALPHA_EXT
:
4036 *params
= (GLint
) ctx
->Color
.BlendDstA
;
4038 case GL_BLEND_EQUATION_EXT
:
4039 *params
= (GLint
) ctx
->Color
.BlendEquation
;
4041 case GL_BLEND_COLOR_EXT
:
4042 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
4043 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
4044 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
4045 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
4048 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
4051 *params
= (GLint
) ctx
->Visual
.blueBits
;
4054 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
4056 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
4057 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
4059 case GL_CLIP_PLANE0
:
4060 case GL_CLIP_PLANE1
:
4061 case GL_CLIP_PLANE2
:
4062 case GL_CLIP_PLANE3
:
4063 case GL_CLIP_PLANE4
:
4064 case GL_CLIP_PLANE5
:
4065 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
4070 case GL_COLOR_CLEAR_VALUE
:
4071 params
[0] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[0]) );
4072 params
[1] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[1]) );
4073 params
[2] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[2]) );
4074 params
[3] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[3]) );
4076 case GL_COLOR_MATERIAL
:
4077 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
4079 case GL_COLOR_MATERIAL_FACE
:
4080 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
4082 case GL_COLOR_MATERIAL_PARAMETER
:
4083 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
4085 case GL_COLOR_WRITEMASK
:
4086 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
4087 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
4088 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
4089 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
4092 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
4094 case GL_CULL_FACE_MODE
:
4095 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
4097 case GL_CURRENT_COLOR
:
4098 FLUSH_CURRENT(ctx
, 0);
4099 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4100 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4101 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4102 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4104 case GL_CURRENT_INDEX
:
4105 FLUSH_CURRENT(ctx
, 0);
4106 *params
= (GLint
) ctx
->Current
.Index
;
4108 case GL_CURRENT_NORMAL
:
4109 FLUSH_CURRENT(ctx
, 0);
4110 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4111 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4112 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4114 case GL_CURRENT_RASTER_COLOR
:
4115 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
4116 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
4117 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
4118 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
4120 case GL_CURRENT_RASTER_DISTANCE
:
4121 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
4123 case GL_CURRENT_RASTER_INDEX
:
4124 *params
= (GLint
) ctx
->Current
.RasterIndex
;
4126 case GL_CURRENT_RASTER_POSITION
:
4127 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
4128 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
4129 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
4130 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
4132 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4133 params
[0] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
4134 params
[1] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
4135 params
[2] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
4136 params
[3] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
4138 case GL_CURRENT_RASTER_POSITION_VALID
:
4139 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
4141 case GL_CURRENT_TEXTURE_COORDS
:
4142 FLUSH_CURRENT(ctx
, 0);
4143 params
[0] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
4144 params
[1] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
4145 params
[2] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
4146 params
[3] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
4149 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
4152 *params
= ctx
->Visual
.depthBits
;
4154 case GL_DEPTH_CLEAR_VALUE
:
4155 *params
= (GLint
) ctx
->Depth
.Clear
;
4158 *params
= (GLint
) ctx
->Depth
.Func
;
4160 case GL_DEPTH_RANGE
:
4161 params
[0] = (GLint
) ctx
->Viewport
.Near
;
4162 params
[1] = (GLint
) ctx
->Viewport
.Far
;
4164 case GL_DEPTH_SCALE
:
4165 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
4168 *params
= (GLint
) ctx
->Depth
.Test
;
4170 case GL_DEPTH_WRITEMASK
:
4171 *params
= (GLint
) ctx
->Depth
.Mask
;
4174 *params
= (GLint
) ctx
->Color
.DitherFlag
;
4176 case GL_DOUBLEBUFFER
:
4177 *params
= (GLint
) ctx
->Visual
.doubleBufferMode
;
4179 case GL_DRAW_BUFFER
:
4180 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
4183 FLUSH_CURRENT(ctx
, 0);
4184 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
4186 case GL_FEEDBACK_BUFFER_SIZE
:
4187 *params
= ctx
->Feedback
.BufferSize
;
4189 case GL_FEEDBACK_BUFFER_TYPE
:
4190 *params
= ctx
->Feedback
.Type
;
4193 *params
= (GLint
) ctx
->Fog
.Enabled
;
4196 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
4197 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
4198 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
4199 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
4201 case GL_FOG_DENSITY
:
4202 *params
= (GLint
) ctx
->Fog
.Density
;
4205 *params
= (GLint
) ctx
->Fog
.End
;
4208 *params
= (GLint
) ctx
->Hint
.Fog
;
4211 *params
= (GLint
) ctx
->Fog
.Index
;
4214 *params
= (GLint
) ctx
->Fog
.Mode
;
4217 *params
= (GLint
) ctx
->Fog
.Start
;
4220 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
4223 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
4226 *params
= (GLint
) ctx
->Visual
.greenBits
;
4228 case GL_GREEN_SCALE
:
4229 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
4232 *params
= (GLint
) ctx
->Visual
.indexBits
;
4234 case GL_INDEX_CLEAR_VALUE
:
4235 *params
= (GLint
) ctx
->Color
.ClearIndex
;
4238 *params
= ctx
->Visual
.rgbMode
? 0 : 1;
4240 case GL_INDEX_OFFSET
:
4241 *params
= ctx
->Pixel
.IndexOffset
;
4243 case GL_INDEX_SHIFT
:
4244 *params
= ctx
->Pixel
.IndexShift
;
4246 case GL_INDEX_WRITEMASK
:
4247 *params
= (GLint
) ctx
->Color
.IndexMask
;
4257 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
4260 *params
= (GLint
) ctx
->Light
.Enabled
;
4262 case GL_LIGHT_MODEL_AMBIENT
:
4263 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
4264 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
4265 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
4266 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
4268 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4269 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
4271 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4272 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
4274 case GL_LIGHT_MODEL_TWO_SIDE
:
4275 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
4277 case GL_LINE_SMOOTH
:
4278 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
4280 case GL_LINE_SMOOTH_HINT
:
4281 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
4283 case GL_LINE_STIPPLE
:
4284 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4286 case GL_LINE_STIPPLE_PATTERN
:
4287 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4289 case GL_LINE_STIPPLE_REPEAT
:
4290 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4293 *params
= (GLint
) ctx
->Line
.Width
;
4295 case GL_LINE_WIDTH_GRANULARITY
:
4296 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4298 case GL_LINE_WIDTH_RANGE
:
4299 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4300 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4302 case GL_ALIASED_LINE_WIDTH_RANGE
:
4303 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4304 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4307 *params
= (GLint
) ctx
->List
.ListBase
;
4310 *params
= (GLint
) ctx
->CurrentListNum
;
4313 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4314 : (GLint
) GL_COMPILE
;
4316 case GL_INDEX_LOGIC_OP
:
4317 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4319 case GL_COLOR_LOGIC_OP
:
4320 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4322 case GL_LOGIC_OP_MODE
:
4323 *params
= (GLint
) ctx
->Color
.LogicOp
;
4325 case GL_MAP1_COLOR_4
:
4326 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4328 case GL_MAP1_GRID_DOMAIN
:
4329 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4330 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4332 case GL_MAP1_GRID_SEGMENTS
:
4333 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4336 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4338 case GL_MAP1_NORMAL
:
4339 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4341 case GL_MAP1_TEXTURE_COORD_1
:
4342 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4344 case GL_MAP1_TEXTURE_COORD_2
:
4345 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4347 case GL_MAP1_TEXTURE_COORD_3
:
4348 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4350 case GL_MAP1_TEXTURE_COORD_4
:
4351 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4353 case GL_MAP1_VERTEX_3
:
4354 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4356 case GL_MAP1_VERTEX_4
:
4357 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4359 case GL_MAP2_COLOR_4
:
4360 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4362 case GL_MAP2_GRID_DOMAIN
:
4363 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4364 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4365 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4366 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4368 case GL_MAP2_GRID_SEGMENTS
:
4369 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4370 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4373 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4375 case GL_MAP2_NORMAL
:
4376 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4378 case GL_MAP2_TEXTURE_COORD_1
:
4379 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4381 case GL_MAP2_TEXTURE_COORD_2
:
4382 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4384 case GL_MAP2_TEXTURE_COORD_3
:
4385 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4387 case GL_MAP2_TEXTURE_COORD_4
:
4388 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4390 case GL_MAP2_VERTEX_3
:
4391 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4393 case GL_MAP2_VERTEX_4
:
4394 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4397 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4399 case GL_MAP_STENCIL
:
4400 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4402 case GL_MATRIX_MODE
:
4403 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4405 case GL_MAX_ATTRIB_STACK_DEPTH
:
4406 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4408 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4409 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4411 case GL_MAX_CLIP_PLANES
:
4412 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
4414 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4415 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4417 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4418 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4420 case GL_MAX_EVAL_ORDER
:
4421 *params
= (GLint
) MAX_EVAL_ORDER
;
4424 *params
= (GLint
) ctx
->Const
.MaxLights
;
4426 case GL_MAX_LIST_NESTING
:
4427 *params
= (GLint
) MAX_LIST_NESTING
;
4429 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4430 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4432 case GL_MAX_NAME_STACK_DEPTH
:
4433 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4435 case GL_MAX_PIXEL_MAP_TABLE
:
4436 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4438 case GL_MAX_PROJECTION_STACK_DEPTH
:
4439 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4441 case GL_MAX_TEXTURE_SIZE
:
4442 *params
= (1 << (ctx
->Const
.MaxTextureLevels
- 1));
4444 case GL_MAX_3D_TEXTURE_SIZE
:
4445 *params
= (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
4447 case GL_MAX_TEXTURE_STACK_DEPTH
:
4448 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4450 case GL_MAX_VIEWPORT_DIMS
:
4451 params
[0] = (GLint
) MAX_WIDTH
;
4452 params
[1] = (GLint
) MAX_HEIGHT
;
4454 case GL_MODELVIEW_MATRIX
:
4455 for (i
=0;i
<16;i
++) {
4456 params
[i
] = (GLint
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
4459 case GL_MODELVIEW_STACK_DEPTH
:
4460 *params
= (GLint
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
4462 case GL_NAME_STACK_DEPTH
:
4463 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4466 *params
= (GLint
) ctx
->Transform
.Normalize
;
4468 case GL_PACK_ALIGNMENT
:
4469 *params
= ctx
->Pack
.Alignment
;
4471 case GL_PACK_LSB_FIRST
:
4472 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4474 case GL_PACK_ROW_LENGTH
:
4475 *params
= ctx
->Pack
.RowLength
;
4477 case GL_PACK_SKIP_PIXELS
:
4478 *params
= ctx
->Pack
.SkipPixels
;
4480 case GL_PACK_SKIP_ROWS
:
4481 *params
= ctx
->Pack
.SkipRows
;
4483 case GL_PACK_SWAP_BYTES
:
4484 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4486 case GL_PACK_SKIP_IMAGES_EXT
:
4487 *params
= ctx
->Pack
.SkipImages
;
4489 case GL_PACK_IMAGE_HEIGHT_EXT
:
4490 *params
= ctx
->Pack
.ImageHeight
;
4492 case GL_PERSPECTIVE_CORRECTION_HINT
:
4493 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4495 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4496 *params
= ctx
->Pixel
.MapAtoAsize
;
4498 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4499 *params
= ctx
->Pixel
.MapBtoBsize
;
4501 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4502 *params
= ctx
->Pixel
.MapGtoGsize
;
4504 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4505 *params
= ctx
->Pixel
.MapItoAsize
;
4507 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4508 *params
= ctx
->Pixel
.MapItoBsize
;
4510 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4511 *params
= ctx
->Pixel
.MapItoGsize
;
4513 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4514 *params
= ctx
->Pixel
.MapItoIsize
;
4516 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4517 *params
= ctx
->Pixel
.MapItoRsize
;
4519 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4520 *params
= ctx
->Pixel
.MapRtoRsize
;
4522 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4523 *params
= ctx
->Pixel
.MapStoSsize
;
4526 *params
= (GLint
) ctx
->Point
.Size
;
4528 case GL_POINT_SIZE_GRANULARITY
:
4529 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4531 case GL_POINT_SIZE_RANGE
:
4532 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4533 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4535 case GL_ALIASED_POINT_SIZE_RANGE
:
4536 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4537 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4539 case GL_POINT_SMOOTH
:
4540 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4542 case GL_POINT_SMOOTH_HINT
:
4543 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4545 case GL_POINT_SIZE_MIN_EXT
:
4546 *params
= (GLint
) (ctx
->Point
.MinSize
);
4548 case GL_POINT_SIZE_MAX_EXT
:
4549 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4551 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4552 *params
= (GLint
) (ctx
->Point
.Threshold
);
4554 case GL_DISTANCE_ATTENUATION_EXT
:
4555 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4556 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4557 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4559 case GL_POLYGON_MODE
:
4560 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4561 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4563 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4564 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4566 case GL_POLYGON_OFFSET_FACTOR
:
4567 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4569 case GL_POLYGON_OFFSET_UNITS
:
4570 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4572 case GL_POLYGON_SMOOTH
:
4573 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4575 case GL_POLYGON_SMOOTH_HINT
:
4576 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4578 case GL_POLYGON_STIPPLE
:
4579 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4581 case GL_PROJECTION_MATRIX
:
4582 for (i
=0;i
<16;i
++) {
4583 params
[i
] = (GLint
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
4586 case GL_PROJECTION_STACK_DEPTH
:
4587 *params
= (GLint
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
4589 case GL_READ_BUFFER
:
4590 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4593 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4596 *params
= (GLint
) ctx
->Visual
.redBits
;
4599 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4601 case GL_RENDER_MODE
:
4602 *params
= (GLint
) ctx
->RenderMode
;
4604 case GL_RESCALE_NORMAL
:
4605 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
4608 *params
= (GLint
) ctx
->Visual
.rgbMode
;
4610 case GL_SCISSOR_BOX
:
4611 params
[0] = (GLint
) ctx
->Scissor
.X
;
4612 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4613 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4614 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4616 case GL_SCISSOR_TEST
:
4617 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4619 case GL_SELECTION_BUFFER_SIZE
:
4620 *params
= (GLint
) ctx
->Select
.BufferSize
;
4622 case GL_SHADE_MODEL
:
4623 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4625 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4626 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4628 case GL_STENCIL_BITS
:
4629 *params
= ctx
->Visual
.stencilBits
;
4631 case GL_STENCIL_CLEAR_VALUE
:
4632 *params
= (GLint
) ctx
->Stencil
.Clear
;
4634 case GL_STENCIL_FAIL
:
4635 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
4637 case GL_STENCIL_FUNC
:
4638 *params
= (GLint
) ctx
->Stencil
.Function
;
4640 case GL_STENCIL_PASS_DEPTH_FAIL
:
4641 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
4643 case GL_STENCIL_PASS_DEPTH_PASS
:
4644 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
4646 case GL_STENCIL_REF
:
4647 *params
= (GLint
) ctx
->Stencil
.Ref
;
4649 case GL_STENCIL_TEST
:
4650 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4652 case GL_STENCIL_VALUE_MASK
:
4653 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
4655 case GL_STENCIL_WRITEMASK
:
4656 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
4659 *params
= (GLint
) ctx
->Visual
.stereoMode
;
4661 case GL_SUBPIXEL_BITS
:
4662 *params
= ctx
->Const
.SubPixelBits
;
4665 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4668 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4671 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4673 case GL_TEXTURE_BINDING_1D
:
4674 *params
= textureUnit
->Current1D
->Name
;
4676 case GL_TEXTURE_BINDING_2D
:
4677 *params
= textureUnit
->Current2D
->Name
;
4679 case GL_TEXTURE_BINDING_3D
:
4680 *params
= textureUnit
->Current3D
->Name
;
4682 case GL_TEXTURE_ENV_COLOR
:
4683 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4684 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4685 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4686 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4688 case GL_TEXTURE_ENV_MODE
:
4689 *params
= (GLint
) textureUnit
->EnvMode
;
4691 case GL_TEXTURE_GEN_S
:
4692 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4694 case GL_TEXTURE_GEN_T
:
4695 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4697 case GL_TEXTURE_GEN_R
:
4698 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4700 case GL_TEXTURE_GEN_Q
:
4701 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4703 case GL_TEXTURE_MATRIX
:
4704 for (i
=0;i
<16;i
++) {
4705 params
[i
] = (GLint
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
4708 case GL_TEXTURE_STACK_DEPTH
:
4709 *params
= (GLint
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
4711 case GL_UNPACK_ALIGNMENT
:
4712 *params
= ctx
->Unpack
.Alignment
;
4714 case GL_UNPACK_LSB_FIRST
:
4715 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4717 case GL_UNPACK_ROW_LENGTH
:
4718 *params
= ctx
->Unpack
.RowLength
;
4720 case GL_UNPACK_SKIP_PIXELS
:
4721 *params
= ctx
->Unpack
.SkipPixels
;
4723 case GL_UNPACK_SKIP_ROWS
:
4724 *params
= ctx
->Unpack
.SkipRows
;
4726 case GL_UNPACK_SWAP_BYTES
:
4727 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4729 case GL_UNPACK_SKIP_IMAGES_EXT
:
4730 *params
= ctx
->Unpack
.SkipImages
;
4732 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4733 *params
= ctx
->Unpack
.ImageHeight
;
4736 params
[0] = (GLint
) ctx
->Viewport
.X
;
4737 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4738 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4739 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4742 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4745 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4747 case GL_VERTEX_ARRAY
:
4748 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4750 case GL_VERTEX_ARRAY_SIZE
:
4751 *params
= ctx
->Array
.Vertex
.Size
;
4753 case GL_VERTEX_ARRAY_TYPE
:
4754 *params
= ctx
->Array
.Vertex
.Type
;
4756 case GL_VERTEX_ARRAY_STRIDE
:
4757 *params
= ctx
->Array
.Vertex
.Stride
;
4759 case GL_VERTEX_ARRAY_COUNT_EXT
:
4762 case GL_NORMAL_ARRAY
:
4763 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
4765 case GL_NORMAL_ARRAY_TYPE
:
4766 *params
= ctx
->Array
.Normal
.Type
;
4768 case GL_NORMAL_ARRAY_STRIDE
:
4769 *params
= ctx
->Array
.Normal
.Stride
;
4771 case GL_NORMAL_ARRAY_COUNT_EXT
:
4774 case GL_COLOR_ARRAY
:
4775 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
4777 case GL_COLOR_ARRAY_SIZE
:
4778 *params
= ctx
->Array
.Color
.Size
;
4780 case GL_COLOR_ARRAY_TYPE
:
4781 *params
= ctx
->Array
.Color
.Type
;
4783 case GL_COLOR_ARRAY_STRIDE
:
4784 *params
= ctx
->Array
.Color
.Stride
;
4786 case GL_COLOR_ARRAY_COUNT_EXT
:
4789 case GL_INDEX_ARRAY
:
4790 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
4792 case GL_INDEX_ARRAY_TYPE
:
4793 *params
= ctx
->Array
.Index
.Type
;
4795 case GL_INDEX_ARRAY_STRIDE
:
4796 *params
= ctx
->Array
.Index
.Stride
;
4798 case GL_INDEX_ARRAY_COUNT_EXT
:
4801 case GL_TEXTURE_COORD_ARRAY
:
4802 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
4804 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4805 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
4807 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4808 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
4810 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4811 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
4813 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4816 case GL_EDGE_FLAG_ARRAY
:
4817 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
4819 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4820 *params
= ctx
->Array
.EdgeFlag
.Stride
;
4822 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4826 /* GL_ARB_multitexture */
4827 case GL_MAX_TEXTURE_UNITS_ARB
:
4828 *params
= ctx
->Const
.MaxTextureUnits
;
4830 case GL_ACTIVE_TEXTURE_ARB
:
4831 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4833 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4834 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4837 /* GL_ARB_texture_cube_map */
4838 case GL_TEXTURE_CUBE_MAP_ARB
:
4839 CHECK_EXTENSION_I(ARB_texture_cube_map
);
4840 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4842 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4843 CHECK_EXTENSION_I(ARB_texture_cube_map
);
4844 *params
= textureUnit
->CurrentCubeMap
->Name
;
4846 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4847 CHECK_EXTENSION_I(ARB_texture_cube_map
);
4848 *params
= (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
4851 /* GL_ARB_texture_compression */
4852 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4853 CHECK_EXTENSION_I(ARB_texture_compression
);
4854 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
4856 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4857 CHECK_EXTENSION_I(ARB_texture_compression
);
4858 *params
= (GLint
) ctx
->Const
.NumCompressedTextureFormats
;
4860 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4861 CHECK_EXTENSION_I(ARB_texture_compression
);
4864 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
4865 params
[i
] = (GLint
) ctx
->Const
.CompressedTextureFormats
[i
];
4869 /* GL_EXT_compiled_vertex_array */
4870 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4871 CHECK_EXTENSION_I(EXT_compiled_vertex_array
);
4872 *params
= ctx
->Array
.LockFirst
;
4874 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4875 CHECK_EXTENSION_I(EXT_compiled_vertex_array
);
4876 *params
= ctx
->Array
.LockCount
;
4879 /* GL_ARB_transpose_matrix */
4880 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4884 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
4885 for (i
=0;i
<16;i
++) {
4886 params
[i
] = (GLint
) tm
[i
];
4890 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4894 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
4895 for (i
=0;i
<16;i
++) {
4896 params
[i
] = (GLint
) tm
[i
];
4900 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4904 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
4905 for (i
=0;i
<16;i
++) {
4906 params
[i
] = (GLint
) tm
[i
];
4910 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4914 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
4915 for (i
=0;i
<16;i
++) {
4916 params
[i
] = (GLint
) tm
[i
];
4921 /* GL_HP_occlusion_test */
4922 case GL_OCCLUSION_TEST_HP
:
4923 CHECK_EXTENSION_I(HP_occlusion_test
);
4924 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
4926 case GL_OCCLUSION_TEST_RESULT_HP
:
4927 CHECK_EXTENSION_I(HP_occlusion_test
);
4928 if (ctx
->Depth
.OcclusionTest
)
4929 *params
= (GLint
) ctx
->OcclusionResult
;
4931 *params
= (GLint
) ctx
->OcclusionResultSaved
;
4932 /* reset flag now */
4933 ctx
->OcclusionResult
= GL_FALSE
;
4934 ctx
->OcclusionResultSaved
= GL_FALSE
;
4937 /* GL_SGIS_pixel_texture */
4938 case GL_PIXEL_TEXTURE_SGIS
:
4939 CHECK_EXTENSION_I(SGIS_pixel_texture
);
4940 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4943 /* GL_SGIX_pixel_texture */
4944 case GL_PIXEL_TEX_GEN_SGIX
:
4945 CHECK_EXTENSION_I(SGIX_pixel_texture
);
4946 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4948 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4949 CHECK_EXTENSION_I(SGIX_pixel_texture
);
4950 *params
= (GLint
) pixel_texgen_mode(ctx
);
4953 /* GL_SGI_color_matrix (also in 1.2 imaging) */
4954 case GL_COLOR_MATRIX_SGI
:
4955 CHECK_EXTENSION_I(SGI_color_matrix
);
4956 for (i
=0;i
<16;i
++) {
4957 params
[i
] = (GLint
) ctx
->ColorMatrixStack
.Top
->m
[i
];
4960 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
4961 CHECK_EXTENSION_I(SGI_color_matrix
);
4962 *params
= ctx
->ColorMatrixStack
.Depth
+ 1;
4964 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
4965 CHECK_EXTENSION_I(SGI_color_matrix
);
4966 *params
= MAX_COLOR_STACK_DEPTH
;
4968 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
4969 CHECK_EXTENSION_I(SGI_color_matrix
);
4970 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
4972 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
4973 CHECK_EXTENSION_I(SGI_color_matrix
);
4974 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
4976 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
4977 CHECK_EXTENSION_I(SGI_color_matrix
);
4978 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
4980 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
4981 CHECK_EXTENSION_I(SGI_color_matrix
);
4982 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
4984 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
4985 CHECK_EXTENSION_I(SGI_color_matrix
);
4986 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
4988 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
4989 CHECK_EXTENSION_I(SGI_color_matrix
);
4990 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
4992 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
4993 CHECK_EXTENSION_I(SGI_color_matrix
);
4994 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
4996 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
4997 CHECK_EXTENSION_I(SGI_color_matrix
);
4998 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
5001 /* GL_EXT_convolution (also in 1.2 imaging) */
5002 case GL_CONVOLUTION_1D_EXT
:
5003 CHECK_EXTENSION_I(EXT_convolution
);
5004 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
5006 case GL_CONVOLUTION_2D
:
5007 CHECK_EXTENSION_I(EXT_convolution
);
5008 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
5010 case GL_SEPARABLE_2D
:
5011 CHECK_EXTENSION_I(EXT_convolution
);
5012 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
5014 case GL_MAX_CONVOLUTION_WIDTH
:
5015 CHECK_EXTENSION_I(EXT_convolution
);
5016 *params
= ctx
->Const
.MaxConvolutionWidth
;
5018 case GL_MAX_CONVOLUTION_HEIGHT
:
5019 CHECK_EXTENSION_I(EXT_convolution
);
5020 *params
= ctx
->Const
.MaxConvolutionHeight
;
5022 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5023 CHECK_EXTENSION_I(EXT_convolution
);
5024 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
5026 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5027 CHECK_EXTENSION_I(EXT_convolution
);
5028 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
5030 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5031 CHECK_EXTENSION_I(EXT_convolution
);
5032 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
5034 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5035 CHECK_EXTENSION_I(EXT_convolution
);
5036 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
5038 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5039 CHECK_EXTENSION_I(EXT_convolution
);
5040 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
5042 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5043 CHECK_EXTENSION_I(EXT_convolution
);
5044 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
5046 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5047 CHECK_EXTENSION_I(EXT_convolution
);
5048 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5050 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5051 CHECK_EXTENSION_I(EXT_convolution
);
5052 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5055 /* GL_EXT_histogram (also in 1.2 imaging) */
5057 CHECK_EXTENSION_I(EXT_histogram
);
5058 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
5061 CHECK_EXTENSION_I(EXT_histogram
);
5062 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
5065 /* GL_SGI_color_table (also in 1.2 imaging */
5066 case GL_COLOR_TABLE_SGI
:
5067 CHECK_EXTENSION_I(SGI_color_table
);
5068 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
5070 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5071 CHECK_EXTENSION_I(SGI_color_table
);
5072 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
5074 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5075 CHECK_EXTENSION_I(SGI_color_table
);
5076 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
5080 /* GL_EXT_secondary_color */
5081 case GL_COLOR_SUM_EXT
:
5082 CHECK_EXTENSION_I(EXT_secondary_color
);
5083 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
5085 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5086 CHECK_EXTENSION_I(EXT_secondary_color
);
5087 FLUSH_CURRENT(ctx
, 0);
5088 params
[0] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]) );
5089 params
[1] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]) );
5090 params
[2] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]) );
5092 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5093 CHECK_EXTENSION_I(EXT_secondary_color
);
5094 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
5096 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5097 CHECK_EXTENSION_I(EXT_secondary_color
);
5098 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
5100 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5101 CHECK_EXTENSION_I(EXT_secondary_color
);
5102 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5104 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5105 CHECK_EXTENSION_I(EXT_secondary_color
);
5106 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5109 /* GL_EXT_fog_coord */
5110 case GL_CURRENT_FOG_COORDINATE_EXT
:
5111 CHECK_EXTENSION_I(EXT_fog_coord
);
5112 FLUSH_CURRENT(ctx
, 0);
5113 *params
= (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
5115 case GL_FOG_COORDINATE_ARRAY_EXT
:
5116 CHECK_EXTENSION_I(EXT_fog_coord
);
5117 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
5119 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5120 CHECK_EXTENSION_I(EXT_fog_coord
);
5121 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
5123 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5124 CHECK_EXTENSION_I(EXT_fog_coord
);
5125 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
5128 /* GL_EXT_texture_lod_bias */
5129 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5130 *params
= (GLint
) ctx
->Const
.MaxTextureLodBias
;
5133 /* GL_EXT_texture_filter_anisotropic */
5134 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5135 CHECK_EXTENSION_I(EXT_texture_filter_anisotropic
);
5136 *params
= (GLint
) ctx
->Const
.MaxTextureMaxAnisotropy
;
5139 /* GL_ARB_multisample */
5140 case GL_MULTISAMPLE_ARB
:
5141 CHECK_EXTENSION_I(ARB_multisample
);
5142 *params
= (GLint
) ctx
->Multisample
.Enabled
;
5144 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5145 CHECK_EXTENSION_I(ARB_multisample
);
5146 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToCoverage
;
5148 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5149 CHECK_EXTENSION_I(ARB_multisample
);
5150 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToOne
;
5152 case GL_SAMPLE_COVERAGE_ARB
:
5153 CHECK_EXTENSION_I(ARB_multisample
);
5154 *params
= (GLint
) ctx
->Multisample
.SampleCoverage
;
5156 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5157 CHECK_EXTENSION_I(ARB_multisample
);
5158 *params
= (GLint
) ctx
->Multisample
.SampleCoverageValue
;
5160 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5161 CHECK_EXTENSION_I(ARB_multisample
);
5162 *params
= (GLint
) ctx
->Multisample
.SampleCoverageInvert
;
5164 case GL_SAMPLE_BUFFERS_ARB
:
5165 CHECK_EXTENSION_I(ARB_multisample
);
5166 *params
= 0; /* XXX fix someday */
5168 case GL_SAMPLES_ARB
:
5169 CHECK_EXTENSION_I(ARB_multisample
);
5170 *params
= 0; /* XXX fix someday */
5173 /* GL_IBM_rasterpos_clip */
5174 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5175 CHECK_EXTENSION_I(IBM_rasterpos_clip
);
5176 *params
= (GLint
) ctx
->Transform
.RasterPositionUnclipped
;
5179 /* GL_NV_point_sprite */
5180 case GL_POINT_SPRITE_NV
:
5181 CHECK_EXTENSION_B(NV_point_sprite
);
5182 *params
= (GLint
) ctx
->Point
.PointSprite
;
5184 case GL_POINT_SPRITE_R_MODE_NV
:
5185 CHECK_EXTENSION_B(NV_point_sprite
);
5186 *params
= (GLint
) ctx
->Point
.SpriteRMode
;
5189 /* GL_SGIS_generate_mipmap */
5190 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5191 CHECK_EXTENSION_I(SGIS_generate_mipmap
);
5192 *params
= (GLint
) ctx
->Hint
.GenerateMipmap
;
5195 /* GL_NV_vertex_program */
5198 /* GL_NV_texture_rectangle */
5199 case GL_TEXTURE_RECTANGLE_NV
:
5200 CHECK_EXTENSION_I(NV_texture_rectangle
);
5201 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
5203 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
5204 CHECK_EXTENSION_I(NV_texture_rectangle
);
5205 *params
= (GLint
) textureUnit
->CurrentRect
->Name
;
5207 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
5208 CHECK_EXTENSION_I(NV_texture_rectangle
);
5209 *params
= (GLint
) ctx
->Const
.MaxTextureRectSize
;
5213 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5220 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
5222 GET_CURRENT_CONTEXT(ctx
);
5223 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
5224 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5229 if (MESA_VERBOSE
& VERBOSE_API
)
5230 _mesa_debug(ctx
, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname
));
5232 if (ctx
->Driver
.GetPointerv
5233 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
5237 case GL_VERTEX_ARRAY_POINTER
:
5238 *params
= ctx
->Array
.Vertex
.Ptr
;
5240 case GL_NORMAL_ARRAY_POINTER
:
5241 *params
= ctx
->Array
.Normal
.Ptr
;
5243 case GL_COLOR_ARRAY_POINTER
:
5244 *params
= ctx
->Array
.Color
.Ptr
;
5246 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
5247 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
5249 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
5250 *params
= ctx
->Array
.FogCoord
.Ptr
;
5252 case GL_INDEX_ARRAY_POINTER
:
5253 *params
= ctx
->Array
.Index
.Ptr
;
5255 case GL_TEXTURE_COORD_ARRAY_POINTER
:
5256 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
5258 case GL_EDGE_FLAG_ARRAY_POINTER
:
5259 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
5261 case GL_FEEDBACK_BUFFER_POINTER
:
5262 *params
= ctx
->Feedback
.Buffer
;
5264 case GL_SELECTION_BUFFER_POINTER
:
5265 *params
= ctx
->Select
.Buffer
;
5268 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
5276 _mesa_GetString( GLenum name
)
5278 GET_CURRENT_CONTEXT(ctx
);
5279 static const char *vendor
= "Brian Paul";
5280 static const char *renderer
= "Mesa";
5281 static const char *version_1_2
= "1.2 Mesa 4.1 beta";
5282 static const char *version_1_3
= "1.3 Mesa 4.1 beta";
5284 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5286 /* this is a required driver function */
5287 assert(ctx
->Driver
.GetString
);
5289 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
5295 return (const GLubyte
*) vendor
;
5297 return (const GLubyte
*) renderer
;
5299 if (ctx
->Extensions
.ARB_multitexture
&&
5300 ctx
->Extensions
.ARB_multisample
&&
5301 ctx
->Extensions
.ARB_texture_border_clamp
&&
5302 ctx
->Extensions
.ARB_texture_compression
&&
5303 ctx
->Extensions
.EXT_texture_env_add
&&
5304 ctx
->Extensions
.ARB_texture_env_combine
&&
5305 ctx
->Extensions
.ARB_texture_env_dot3
)
5306 return (const GLubyte
*) version_1_3
;
5308 return (const GLubyte
*) version_1_2
;
5310 return (const GLubyte
*) _mesa_extensions_get_string(ctx
);
5312 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
5313 return (const GLubyte
*) 0;
5320 * Execute a glGetError command
5323 _mesa_GetError( void )
5325 GET_CURRENT_CONTEXT(ctx
);
5326 GLenum e
= ctx
->ErrorValue
;
5327 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5329 if (MESA_VERBOSE
& VERBOSE_API
)
5330 _mesa_debug(ctx
, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e
));
5332 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;