1 /* $Id: get.c,v 1.97 2002/10/24 23:57:20 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.
33 #include "extensions.h"
38 #include "texcompress.h"
39 #include "math/m_matrix.h"
43 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
44 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
45 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
48 /* Needed for an Amiga compiler */
49 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
50 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
52 /* all other compilers */
53 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
54 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
58 /* Check if named extension is enabled, if not generate error and return */
60 #define CHECK_EXTENSION_B(EXTNAME, PNAME) \
61 if (!ctx->Extensions.EXTNAME) { \
62 _mesa_error(ctx, GL_INVALID_VALUE, \
63 "glGetBooleanv(0x%x)", (int) PNAME); \
67 #define CHECK_EXTENSION_I(EXTNAME, PNAME) \
68 if (!ctx->Extensions.EXTNAME) { \
69 _mesa_error(ctx, GL_INVALID_VALUE, \
70 "glGetIntegerv(0x%x)", (int) PNAME); \
74 #define CHECK_EXTENSION_F(EXTNAME, PNAME) \
75 if (!ctx->Extensions.EXTNAME) { \
76 _mesa_error(ctx, GL_INVALID_VALUE, \
77 "glGetFloatv(0x%x)", (int) PNAME); \
81 #define CHECK_EXTENSION_D(EXTNAME, PNAME) \
82 if (!ctx->Extensions.EXTNAME) { \
83 _mesa_error(ctx, GL_INVALID_VALUE, \
84 "glGetDoublev(0x%x)", (int) PNAME); \
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
= ctx
->Color
.AlphaRef
? GL_TRUE
: GL_FALSE
;
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_PACK_INVERT_MESA
:
659 *params
= ctx
->Pack
.Invert
;
661 case GL_PERSPECTIVE_CORRECTION_HINT
:
662 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
664 case GL_PIXEL_MAP_A_TO_A_SIZE
:
665 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
667 case GL_PIXEL_MAP_B_TO_B_SIZE
:
668 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
670 case GL_PIXEL_MAP_G_TO_G_SIZE
:
671 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
673 case GL_PIXEL_MAP_I_TO_A_SIZE
:
674 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
676 case GL_PIXEL_MAP_I_TO_B_SIZE
:
677 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
679 case GL_PIXEL_MAP_I_TO_G_SIZE
:
680 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
682 case GL_PIXEL_MAP_I_TO_I_SIZE
:
683 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
685 case GL_PIXEL_MAP_I_TO_R_SIZE
:
686 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
688 case GL_PIXEL_MAP_R_TO_R_SIZE
:
689 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
691 case GL_PIXEL_MAP_S_TO_S_SIZE
:
692 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
695 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
697 case GL_POINT_SIZE_GRANULARITY
:
698 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
700 case GL_POINT_SIZE_RANGE
:
701 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
702 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
704 case GL_ALIASED_POINT_SIZE_RANGE
:
705 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
706 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
708 case GL_POINT_SMOOTH
:
709 *params
= ctx
->Point
.SmoothFlag
;
711 case GL_POINT_SMOOTH_HINT
:
712 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
714 case GL_POINT_SIZE_MIN_EXT
:
715 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
717 case GL_POINT_SIZE_MAX_EXT
:
718 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
720 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
721 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
723 case GL_DISTANCE_ATTENUATION_EXT
:
724 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
725 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
726 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
728 case GL_POLYGON_MODE
:
729 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
730 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
732 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
733 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
735 case GL_POLYGON_OFFSET_FACTOR
:
736 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
738 case GL_POLYGON_OFFSET_UNITS
:
739 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
741 case GL_POLYGON_SMOOTH
:
742 *params
= ctx
->Polygon
.SmoothFlag
;
744 case GL_POLYGON_SMOOTH_HINT
:
745 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
747 case GL_POLYGON_STIPPLE
:
748 *params
= ctx
->Polygon
.StippleFlag
;
750 case GL_PROJECTION_MATRIX
:
752 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrixStack
.Top
->m
[i
]);
755 case GL_PROJECTION_STACK_DEPTH
:
756 *params
= INT_TO_BOOL(ctx
->ProjectionMatrixStack
.Depth
+ 1);
759 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
762 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
765 *params
= INT_TO_BOOL( ctx
->Visual
.redBits
);
768 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
771 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
773 case GL_RESCALE_NORMAL
:
774 *params
= ctx
->Transform
.RescaleNormals
;
777 *params
= ctx
->Visual
.rgbMode
;
780 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
781 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
782 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
783 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
785 case GL_SCISSOR_TEST
:
786 *params
= ctx
->Scissor
.Enabled
;
788 case GL_SELECTION_BUFFER_SIZE
:
789 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
792 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
794 case GL_SHARED_TEXTURE_PALETTE_EXT
:
795 *params
= ctx
->Texture
.SharedPalette
;
797 case GL_STENCIL_BITS
:
798 *params
= INT_TO_BOOL(ctx
->Visual
.stencilBits
);
800 case GL_STENCIL_CLEAR_VALUE
:
801 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
803 case GL_STENCIL_FAIL
:
804 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
806 case GL_STENCIL_FUNC
:
807 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
809 case GL_STENCIL_PASS_DEPTH_FAIL
:
810 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
812 case GL_STENCIL_PASS_DEPTH_PASS
:
813 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
816 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
818 case GL_STENCIL_TEST
:
819 *params
= ctx
->Stencil
.Enabled
;
821 case GL_STENCIL_VALUE_MASK
:
822 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
824 case GL_STENCIL_WRITEMASK
:
825 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
828 *params
= ctx
->Visual
.stereoMode
;
830 case GL_SUBPIXEL_BITS
:
831 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
834 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
837 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
840 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
842 case GL_TEXTURE_BINDING_1D
:
843 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
845 case GL_TEXTURE_BINDING_2D
:
846 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
848 case GL_TEXTURE_BINDING_3D
:
849 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
851 case GL_TEXTURE_ENV_COLOR
:
853 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
854 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
855 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
856 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
859 case GL_TEXTURE_ENV_MODE
:
860 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
862 case GL_TEXTURE_GEN_S
:
863 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
865 case GL_TEXTURE_GEN_T
:
866 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
868 case GL_TEXTURE_GEN_R
:
869 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
871 case GL_TEXTURE_GEN_Q
:
872 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
874 case GL_TEXTURE_MATRIX
:
877 FLOAT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
]);
880 case GL_TEXTURE_STACK_DEPTH
:
881 *params
= INT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
883 case GL_UNPACK_ALIGNMENT
:
884 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
886 case GL_UNPACK_LSB_FIRST
:
887 *params
= ctx
->Unpack
.LsbFirst
;
889 case GL_UNPACK_ROW_LENGTH
:
890 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
892 case GL_UNPACK_SKIP_PIXELS
:
893 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
895 case GL_UNPACK_SKIP_ROWS
:
896 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
898 case GL_UNPACK_SWAP_BYTES
:
899 *params
= ctx
->Unpack
.SwapBytes
;
901 case GL_UNPACK_SKIP_IMAGES_EXT
:
902 *params
= ctx
->Unpack
.SkipImages
;
904 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
905 *params
= ctx
->Unpack
.ImageHeight
;
907 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
908 *params
= ctx
->Unpack
.ClientStorage
;
911 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
912 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
913 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
914 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
917 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
920 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
922 case GL_VERTEX_ARRAY
:
923 *params
= ctx
->Array
.Vertex
.Enabled
;
925 case GL_VERTEX_ARRAY_SIZE
:
926 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
928 case GL_VERTEX_ARRAY_TYPE
:
929 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
931 case GL_VERTEX_ARRAY_STRIDE
:
932 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
934 case GL_VERTEX_ARRAY_COUNT_EXT
:
935 *params
= INT_TO_BOOL(0);
937 case GL_NORMAL_ARRAY
:
938 *params
= ctx
->Array
.Normal
.Enabled
;
940 case GL_NORMAL_ARRAY_TYPE
:
941 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
943 case GL_NORMAL_ARRAY_STRIDE
:
944 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
946 case GL_NORMAL_ARRAY_COUNT_EXT
:
947 *params
= INT_TO_BOOL(0);
950 *params
= ctx
->Array
.Color
.Enabled
;
952 case GL_COLOR_ARRAY_SIZE
:
953 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
955 case GL_COLOR_ARRAY_TYPE
:
956 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
958 case GL_COLOR_ARRAY_STRIDE
:
959 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
961 case GL_COLOR_ARRAY_COUNT_EXT
:
962 *params
= INT_TO_BOOL(0);
965 *params
= ctx
->Array
.Index
.Enabled
;
967 case GL_INDEX_ARRAY_TYPE
:
968 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
970 case GL_INDEX_ARRAY_STRIDE
:
971 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
973 case GL_INDEX_ARRAY_COUNT_EXT
:
974 *params
= INT_TO_BOOL(0);
976 case GL_TEXTURE_COORD_ARRAY
:
977 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
979 case GL_TEXTURE_COORD_ARRAY_SIZE
:
980 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
982 case GL_TEXTURE_COORD_ARRAY_TYPE
:
983 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
985 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
986 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
988 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
989 *params
= INT_TO_BOOL(0);
991 case GL_EDGE_FLAG_ARRAY
:
992 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
994 case GL_EDGE_FLAG_ARRAY_STRIDE
:
995 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
997 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
998 *params
= INT_TO_BOOL(0);
1001 /* GL_ARB_multitexture */
1002 case GL_MAX_TEXTURE_UNITS_ARB
:
1003 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1004 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureUnits
);
1006 case GL_ACTIVE_TEXTURE_ARB
:
1007 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1008 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1010 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1011 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1012 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1015 /* GL_ARB_texture_cube_map */
1016 case GL_TEXTURE_CUBE_MAP_ARB
:
1017 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1018 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1020 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1021 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1022 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
1024 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1025 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1026 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
1029 /* GL_ARB_texture_compression */
1030 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1031 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1032 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1034 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1035 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1036 *params
= INT_TO_BOOL(_mesa_get_compressed_formats(ctx
, NULL
));
1038 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1039 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1043 n
= _mesa_get_compressed_formats(ctx
, formats
);
1044 for (i
= 0; i
< n
; i
++)
1045 params
[i
] = INT_TO_BOOL(formats
[i
]);
1049 /* GL_EXT_compiled_vertex_array */
1050 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1051 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1053 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1054 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1057 /* GL_ARB_transpose_matrix */
1058 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1062 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
1063 for (i
=0;i
<16;i
++) {
1064 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1068 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1072 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
1073 for (i
=0;i
<16;i
++) {
1074 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1078 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1082 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
1083 for (i
=0;i
<16;i
++) {
1084 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1088 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1092 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
1093 for (i
=0;i
<16;i
++) {
1094 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1099 /* GL_HP_occlusion_test */
1100 case GL_OCCLUSION_TEST_HP
:
1101 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1102 *params
= ctx
->Depth
.OcclusionTest
;
1104 case GL_OCCLUSION_TEST_RESULT_HP
:
1105 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1106 if (ctx
->Depth
.OcclusionTest
)
1107 *params
= ctx
->OcclusionResult
;
1109 *params
= ctx
->OcclusionResultSaved
;
1110 /* reset flag now */
1111 ctx
->OcclusionResult
= GL_FALSE
;
1112 ctx
->OcclusionResultSaved
= GL_FALSE
;
1115 /* GL_SGIS_pixel_texture */
1116 case GL_PIXEL_TEXTURE_SGIS
:
1117 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1120 /* GL_SGIX_pixel_texture */
1121 case GL_PIXEL_TEX_GEN_SGIX
:
1122 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1124 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1125 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1128 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1129 case GL_COLOR_MATRIX_SGI
:
1130 for (i
=0;i
<16;i
++) {
1131 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrixStack
.Top
->m
[i
]);
1134 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1135 *params
= INT_TO_BOOL(ctx
->ColorMatrixStack
.Depth
+ 1);
1137 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1138 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1140 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1141 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1143 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1144 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1146 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1147 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1149 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1150 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1152 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1153 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1155 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1156 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1158 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1159 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1161 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1162 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1165 /* GL_EXT_convolution (also in 1.2 imaging) */
1166 case GL_CONVOLUTION_1D_EXT
:
1167 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1168 *params
= ctx
->Pixel
.Convolution1DEnabled
;
1170 case GL_CONVOLUTION_2D
:
1171 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1172 *params
= ctx
->Pixel
.Convolution2DEnabled
;
1174 case GL_SEPARABLE_2D
:
1175 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1176 *params
= ctx
->Pixel
.Separable2DEnabled
;
1178 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1179 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1180 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1182 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1183 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1184 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1186 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1187 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1188 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1190 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1191 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1192 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1194 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1195 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1196 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1198 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1199 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1200 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1202 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1203 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1204 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1206 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1207 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1208 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1211 /* GL_EXT_histogram (also in 1.2 imaging) */
1213 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1214 *params
= ctx
->Pixel
.HistogramEnabled
;
1217 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1218 *params
= ctx
->Pixel
.MinMaxEnabled
;
1221 /* GL_SGI_color_table (also in 1.2 imaging */
1222 case GL_COLOR_TABLE_SGI
:
1223 *params
= ctx
->Pixel
.ColorTableEnabled
;
1225 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1226 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1228 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1229 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1232 /* GL_EXT_secondary_color */
1233 case GL_COLOR_SUM_EXT
:
1234 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1235 *params
= ctx
->Fog
.ColorSumEnabled
;
1237 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1238 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1239 FLUSH_CURRENT(ctx
, 0);
1240 params
[0] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1241 params
[1] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1242 params
[2] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1244 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1245 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1246 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1248 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1249 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1250 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1252 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1253 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1254 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1256 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1257 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1258 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1261 /* GL_EXT_fog_coord */
1262 case GL_CURRENT_FOG_COORDINATE_EXT
:
1263 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1264 FLUSH_CURRENT(ctx
, 0);
1265 *params
= FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1267 case GL_FOG_COORDINATE_ARRAY_EXT
:
1268 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1269 *params
= ctx
->Array
.FogCoord
.Enabled
;
1271 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1272 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1273 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1275 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1276 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1277 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1280 /* GL_EXT_texture_lod_bias */
1281 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1282 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureLodBias
);
1285 /* GL_EXT_texture_filter_anisotropic */
1286 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1287 CHECK_EXTENSION_B(EXT_texture_filter_anisotropic
, pname
);
1288 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureMaxAnisotropy
);
1291 /* GL_ARB_multisample */
1292 case GL_MULTISAMPLE_ARB
:
1293 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1294 *params
= ctx
->Multisample
.Enabled
;
1296 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1297 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1298 *params
= ctx
->Multisample
.SampleAlphaToCoverage
;
1300 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1301 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1302 *params
= ctx
->Multisample
.SampleAlphaToOne
;
1304 case GL_SAMPLE_COVERAGE_ARB
:
1305 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1306 *params
= ctx
->Multisample
.SampleCoverage
;
1308 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1309 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1310 *params
= FLOAT_TO_BOOL(ctx
->Multisample
.SampleCoverageValue
);
1312 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1313 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1314 *params
= ctx
->Multisample
.SampleCoverageInvert
;
1316 case GL_SAMPLE_BUFFERS_ARB
:
1317 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1318 *params
= 0; /* XXX fix someday */
1320 case GL_SAMPLES_ARB
:
1321 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1322 *params
= 0; /* XXX fix someday */
1325 /* GL_IBM_rasterpos_clip */
1326 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1327 CHECK_EXTENSION_B(IBM_rasterpos_clip
, pname
);
1328 *params
= ctx
->Transform
.RasterPositionUnclipped
;
1331 /* GL_NV_point_sprite */
1332 case GL_POINT_SPRITE_NV
:
1333 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
1334 *params
= ctx
->Point
.PointSprite
;
1336 case GL_POINT_SPRITE_R_MODE_NV
:
1337 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
1338 *params
= ENUM_TO_BOOL(ctx
->Point
.SpriteRMode
);
1341 /* GL_SGIS_generate_mipmap */
1342 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1343 CHECK_EXTENSION_B(SGIS_generate_mipmap
, pname
);
1344 *params
= ENUM_TO_BOOL(ctx
->Hint
.GenerateMipmap
);
1347 #if FEATURE_NV_vertex_program
1348 case GL_VERTEX_PROGRAM_NV
:
1349 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1350 *params
= ctx
->VertexProgram
.Enabled
;
1352 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
1353 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1354 *params
= ctx
->VertexProgram
.PointSizeEnabled
;
1356 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
1357 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1358 *params
= ctx
->VertexProgram
.TwoSideEnabled
;
1360 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
1361 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1362 *params
= (MAX_PROGRAM_STACK_DEPTH
> 0) ? GL_TRUE
: GL_FALSE
;
1364 case GL_MAX_TRACK_MATRICES_NV
:
1365 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1366 *params
= (MAX_PROGRAM_MATRICES
> 0) ? GL_TRUE
: GL_FALSE
;
1368 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
1369 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1370 *params
= (ctx
->CurrentStack
->Depth
> 0) ? GL_TRUE
: GL_FALSE
;
1372 case GL_CURRENT_MATRIX_NV
:
1373 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1374 *params
= (ctx
->Transform
.MatrixMode
!= 0) ? GL_TRUE
: GL_FALSE
;
1376 case GL_VERTEX_PROGRAM_BINDING_NV
:
1377 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1378 *params
= (ctx
->VertexProgram
.CurrentID
!= 0) ? GL_TRUE
: GL_FALSE
;
1380 case GL_PROGRAM_ERROR_POSITION_NV
:
1381 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1382 *params
= (ctx
->VertexProgram
.ErrorPos
!= 0) ? GL_TRUE
: GL_FALSE
;
1384 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1385 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1386 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1387 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1388 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1389 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1390 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1391 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1392 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1393 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1394 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1395 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1396 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1397 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1398 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1399 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1400 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1402 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
1403 *params
= ctx
->Array
.VertexAttrib
[n
].Enabled
;
1406 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1407 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1408 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1409 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1410 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1411 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1412 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1413 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1414 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1415 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1416 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1417 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1418 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1419 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1420 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1421 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1422 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1424 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
1425 *params
= ctx
->Eval
.Map1Attrib
[n
];
1428 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
1429 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
1430 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
1431 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
1432 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
1433 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
1434 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
1435 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
1436 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
1437 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
1438 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
1439 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
1440 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
1441 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
1442 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
1443 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
1444 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1446 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
1447 *params
= ctx
->Eval
.Map2Attrib
[n
];
1450 #endif /* FEATURE_NV_vertex_program */
1452 /* GL_NV_texture_rectangle */
1453 case GL_TEXTURE_RECTANGLE_NV
:
1454 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1455 *params
= _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1457 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1458 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1459 *params
= INT_TO_BOOL(textureUnit
->CurrentRect
->Name
);
1461 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1462 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1463 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureRectSize
);
1466 /* GL_EXT_stencil_two_side */
1467 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
1468 CHECK_EXTENSION_B(EXT_stencil_two_side
, pname
);
1469 *params
= ctx
->Stencil
.TestTwoSide
;
1471 case GL_ACTIVE_STENCIL_FACE_EXT
:
1472 CHECK_EXTENSION_B(EXT_stencil_two_side
, pname
);
1473 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ActiveFace
? GL_FRONT
: GL_BACK
);
1477 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv(pname=0x%x)", pname
);
1483 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1485 GET_CURRENT_CONTEXT(ctx
);
1487 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1488 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1489 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1494 /* We need this in order to get correct results for
1495 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
1497 FLUSH_VERTICES(ctx
, 0);
1499 if (MESA_VERBOSE
& VERBOSE_API
)
1500 _mesa_debug(ctx
, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname
));
1502 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1506 case GL_ACCUM_RED_BITS
:
1507 *params
= (GLdouble
) ctx
->Visual
.accumRedBits
;
1509 case GL_ACCUM_GREEN_BITS
:
1510 *params
= (GLdouble
) ctx
->Visual
.accumGreenBits
;
1512 case GL_ACCUM_BLUE_BITS
:
1513 *params
= (GLdouble
) ctx
->Visual
.accumBlueBits
;
1515 case GL_ACCUM_ALPHA_BITS
:
1516 *params
= (GLdouble
) ctx
->Visual
.accumAlphaBits
;
1518 case GL_ACCUM_CLEAR_VALUE
:
1519 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1520 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1521 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1522 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1525 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1528 *params
= (GLdouble
) ctx
->Visual
.alphaBits
;
1530 case GL_ALPHA_SCALE
:
1531 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1534 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1536 case GL_ALPHA_TEST_FUNC
:
1537 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1539 case GL_ALPHA_TEST_REF
:
1540 *params
= (GLdouble
) ctx
->Color
.AlphaRef
;
1542 case GL_ATTRIB_STACK_DEPTH
:
1543 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1545 case GL_AUTO_NORMAL
:
1546 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1548 case GL_AUX_BUFFERS
:
1549 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1552 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1555 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1558 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1560 case GL_BLEND_SRC_RGB_EXT
:
1561 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1563 case GL_BLEND_DST_RGB_EXT
:
1564 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1566 case GL_BLEND_SRC_ALPHA_EXT
:
1567 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1569 case GL_BLEND_DST_ALPHA_EXT
:
1570 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1572 case GL_BLEND_EQUATION_EXT
:
1573 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1575 case GL_BLEND_COLOR_EXT
:
1576 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1577 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1578 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1579 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1582 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1585 *params
= (GLdouble
) ctx
->Visual
.blueBits
;
1588 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1590 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1591 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1593 case GL_CLIP_PLANE0
:
1594 case GL_CLIP_PLANE1
:
1595 case GL_CLIP_PLANE2
:
1596 case GL_CLIP_PLANE3
:
1597 case GL_CLIP_PLANE4
:
1598 case GL_CLIP_PLANE5
:
1599 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
1604 case GL_COLOR_CLEAR_VALUE
:
1605 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1606 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1607 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1608 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1610 case GL_COLOR_MATERIAL
:
1611 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1613 case GL_COLOR_MATERIAL_FACE
:
1614 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1616 case GL_COLOR_MATERIAL_PARAMETER
:
1617 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1619 case GL_COLOR_WRITEMASK
:
1620 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1621 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1622 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1623 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1626 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1628 case GL_CULL_FACE_MODE
:
1629 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1631 case GL_CURRENT_COLOR
:
1632 FLUSH_CURRENT(ctx
, 0);
1633 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
1634 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
1635 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
1636 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
1638 case GL_CURRENT_INDEX
:
1639 FLUSH_CURRENT(ctx
, 0);
1640 *params
= (GLdouble
) ctx
->Current
.Index
;
1642 case GL_CURRENT_NORMAL
:
1643 FLUSH_CURRENT(ctx
, 0);
1644 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
1645 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
1646 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
1648 case GL_CURRENT_RASTER_COLOR
:
1649 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1650 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1651 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1652 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1654 case GL_CURRENT_RASTER_DISTANCE
:
1655 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1657 case GL_CURRENT_RASTER_INDEX
:
1658 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1660 case GL_CURRENT_RASTER_POSITION
:
1661 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1662 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1663 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1664 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1666 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1667 params
[0] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
1668 params
[1] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
1669 params
[2] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
1670 params
[3] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
1672 case GL_CURRENT_RASTER_POSITION_VALID
:
1673 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1675 case GL_CURRENT_TEXTURE_COORDS
:
1676 FLUSH_CURRENT(ctx
, 0);
1677 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
1678 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
1679 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
1680 params
[3] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
1683 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1686 *params
= (GLdouble
) ctx
->Visual
.depthBits
;
1688 case GL_DEPTH_CLEAR_VALUE
:
1689 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1692 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1694 case GL_DEPTH_RANGE
:
1695 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1696 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1698 case GL_DEPTH_SCALE
:
1699 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1702 *params
= (GLdouble
) ctx
->Depth
.Test
;
1704 case GL_DEPTH_WRITEMASK
:
1705 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1708 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1710 case GL_DOUBLEBUFFER
:
1711 *params
= (GLdouble
) ctx
->Visual
.doubleBufferMode
;
1713 case GL_DRAW_BUFFER
:
1714 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1717 FLUSH_CURRENT(ctx
, 0);
1718 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1720 case GL_FEEDBACK_BUFFER_SIZE
:
1721 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1723 case GL_FEEDBACK_BUFFER_TYPE
:
1724 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1727 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1730 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1731 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1732 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1733 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1735 case GL_FOG_DENSITY
:
1736 *params
= (GLdouble
) ctx
->Fog
.Density
;
1739 *params
= (GLdouble
) ctx
->Fog
.End
;
1742 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1745 *params
= (GLdouble
) ctx
->Fog
.Index
;
1748 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1751 *params
= (GLdouble
) ctx
->Fog
.Start
;
1754 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1757 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1760 *params
= (GLdouble
) ctx
->Visual
.greenBits
;
1762 case GL_GREEN_SCALE
:
1763 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1766 *params
= (GLdouble
) ctx
->Visual
.indexBits
;
1768 case GL_INDEX_CLEAR_VALUE
:
1769 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1772 *params
= ctx
->Visual
.rgbMode
? 0.0 : 1.0;
1774 case GL_INDEX_OFFSET
:
1775 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1777 case GL_INDEX_SHIFT
:
1778 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1780 case GL_INDEX_WRITEMASK
:
1781 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1791 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1794 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1796 case GL_LIGHT_MODEL_AMBIENT
:
1797 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1798 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1799 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1800 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1802 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1803 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1805 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1806 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1808 case GL_LIGHT_MODEL_TWO_SIDE
:
1809 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1811 case GL_LINE_SMOOTH
:
1812 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1814 case GL_LINE_SMOOTH_HINT
:
1815 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1817 case GL_LINE_STIPPLE
:
1818 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1820 case GL_LINE_STIPPLE_PATTERN
:
1821 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1823 case GL_LINE_STIPPLE_REPEAT
:
1824 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1827 *params
= (GLdouble
) ctx
->Line
.Width
;
1829 case GL_LINE_WIDTH_GRANULARITY
:
1830 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1832 case GL_LINE_WIDTH_RANGE
:
1833 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1834 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1836 case GL_ALIASED_LINE_WIDTH_RANGE
:
1837 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1838 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1841 *params
= (GLdouble
) ctx
->List
.ListBase
;
1844 *params
= (GLdouble
) ctx
->CurrentListNum
;
1847 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1848 : ENUM_TO_DOUBLE(GL_COMPILE
);
1850 case GL_INDEX_LOGIC_OP
:
1851 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1853 case GL_COLOR_LOGIC_OP
:
1854 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1856 case GL_LOGIC_OP_MODE
:
1857 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1859 case GL_MAP1_COLOR_4
:
1860 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1862 case GL_MAP1_GRID_DOMAIN
:
1863 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1864 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1866 case GL_MAP1_GRID_SEGMENTS
:
1867 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1870 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1872 case GL_MAP1_NORMAL
:
1873 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1875 case GL_MAP1_TEXTURE_COORD_1
:
1876 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1878 case GL_MAP1_TEXTURE_COORD_2
:
1879 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1881 case GL_MAP1_TEXTURE_COORD_3
:
1882 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1884 case GL_MAP1_TEXTURE_COORD_4
:
1885 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1887 case GL_MAP1_VERTEX_3
:
1888 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1890 case GL_MAP1_VERTEX_4
:
1891 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1893 case GL_MAP2_COLOR_4
:
1894 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1896 case GL_MAP2_GRID_DOMAIN
:
1897 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1898 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1899 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1900 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1902 case GL_MAP2_GRID_SEGMENTS
:
1903 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1904 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1907 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1909 case GL_MAP2_NORMAL
:
1910 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1912 case GL_MAP2_TEXTURE_COORD_1
:
1913 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1915 case GL_MAP2_TEXTURE_COORD_2
:
1916 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1918 case GL_MAP2_TEXTURE_COORD_3
:
1919 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1921 case GL_MAP2_TEXTURE_COORD_4
:
1922 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1924 case GL_MAP2_VERTEX_3
:
1925 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1927 case GL_MAP2_VERTEX_4
:
1928 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1931 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1933 case GL_MAP_STENCIL
:
1934 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1936 case GL_MATRIX_MODE
:
1937 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1939 case GL_MAX_ATTRIB_STACK_DEPTH
:
1940 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1942 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1943 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1945 case GL_MAX_CLIP_PLANES
:
1946 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
1948 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1949 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1951 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1952 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1954 case GL_MAX_EVAL_ORDER
:
1955 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1958 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
1960 case GL_MAX_LIST_NESTING
:
1961 *params
= (GLdouble
) MAX_LIST_NESTING
;
1963 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1964 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1966 case GL_MAX_NAME_STACK_DEPTH
:
1967 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1969 case GL_MAX_PIXEL_MAP_TABLE
:
1970 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1972 case GL_MAX_PROJECTION_STACK_DEPTH
:
1973 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1975 case GL_MAX_TEXTURE_SIZE
:
1976 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
1978 case GL_MAX_3D_TEXTURE_SIZE
:
1979 *params
= (GLdouble
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
1981 case GL_MAX_TEXTURE_STACK_DEPTH
:
1982 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1984 case GL_MAX_VIEWPORT_DIMS
:
1985 params
[0] = (GLdouble
) MAX_WIDTH
;
1986 params
[1] = (GLdouble
) MAX_HEIGHT
;
1988 case GL_MODELVIEW_MATRIX
:
1989 for (i
=0;i
<16;i
++) {
1990 params
[i
] = (GLdouble
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
1993 case GL_MODELVIEW_STACK_DEPTH
:
1994 *params
= (GLdouble
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
1996 case GL_NAME_STACK_DEPTH
:
1997 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
2000 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
2002 case GL_PACK_ALIGNMENT
:
2003 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
2005 case GL_PACK_LSB_FIRST
:
2006 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
2008 case GL_PACK_ROW_LENGTH
:
2009 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
2011 case GL_PACK_SKIP_PIXELS
:
2012 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
2014 case GL_PACK_SKIP_ROWS
:
2015 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
2017 case GL_PACK_SWAP_BYTES
:
2018 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
2020 case GL_PACK_SKIP_IMAGES_EXT
:
2021 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
2023 case GL_PACK_IMAGE_HEIGHT_EXT
:
2024 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
2026 case GL_PACK_INVERT_MESA
:
2027 *params
= (GLdouble
) ctx
->Pack
.Invert
;
2029 case GL_PERSPECTIVE_CORRECTION_HINT
:
2030 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
2032 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2033 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
2035 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2036 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
2038 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2039 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
2041 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2042 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
2044 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2045 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
2047 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2048 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
2050 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2051 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
2053 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2054 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
2056 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2057 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
2059 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2060 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
2063 *params
= (GLdouble
) ctx
->Point
.Size
;
2065 case GL_POINT_SIZE_GRANULARITY
:
2066 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
2068 case GL_POINT_SIZE_RANGE
:
2069 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
2070 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
2072 case GL_ALIASED_POINT_SIZE_RANGE
:
2073 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
2074 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
2076 case GL_POINT_SMOOTH
:
2077 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
2079 case GL_POINT_SMOOTH_HINT
:
2080 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
2082 case GL_POINT_SIZE_MIN_EXT
:
2083 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
2085 case GL_POINT_SIZE_MAX_EXT
:
2086 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
2088 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2089 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
2091 case GL_DISTANCE_ATTENUATION_EXT
:
2092 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
2093 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
2094 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
2096 case GL_POLYGON_MODE
:
2097 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
2098 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
2100 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
2101 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2103 case GL_POLYGON_OFFSET_FACTOR
:
2104 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
2106 case GL_POLYGON_OFFSET_UNITS
:
2107 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2109 case GL_POLYGON_SMOOTH
:
2110 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
2112 case GL_POLYGON_SMOOTH_HINT
:
2113 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
2115 case GL_POLYGON_STIPPLE
:
2116 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
2118 case GL_PROJECTION_MATRIX
:
2119 for (i
=0;i
<16;i
++) {
2120 params
[i
] = (GLdouble
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
2123 case GL_PROJECTION_STACK_DEPTH
:
2124 *params
= (GLdouble
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
2126 case GL_READ_BUFFER
:
2127 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
2130 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
2133 *params
= (GLdouble
) ctx
->Visual
.redBits
;
2136 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
2138 case GL_RENDER_MODE
:
2139 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
2141 case GL_RESCALE_NORMAL
:
2142 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
2145 *params
= (GLdouble
) ctx
->Visual
.rgbMode
;
2147 case GL_SCISSOR_BOX
:
2148 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
2149 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
2150 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
2151 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
2153 case GL_SCISSOR_TEST
:
2154 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
2156 case GL_SELECTION_BUFFER_SIZE
:
2157 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
2159 case GL_SHADE_MODEL
:
2160 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
2162 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2163 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
2165 case GL_STENCIL_BITS
:
2166 *params
= (GLdouble
) ctx
->Visual
.stencilBits
;
2168 case GL_STENCIL_CLEAR_VALUE
:
2169 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
2171 case GL_STENCIL_FAIL
:
2172 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
2174 case GL_STENCIL_FUNC
:
2175 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
2177 case GL_STENCIL_PASS_DEPTH_FAIL
:
2178 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
2180 case GL_STENCIL_PASS_DEPTH_PASS
:
2181 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
2183 case GL_STENCIL_REF
:
2184 *params
= (GLdouble
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
2186 case GL_STENCIL_TEST
:
2187 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2189 case GL_STENCIL_VALUE_MASK
:
2190 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
2192 case GL_STENCIL_WRITEMASK
:
2193 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
2196 *params
= (GLdouble
) ctx
->Visual
.stereoMode
;
2198 case GL_SUBPIXEL_BITS
:
2199 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2202 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2205 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2208 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2210 case GL_TEXTURE_BINDING_1D
:
2211 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2213 case GL_TEXTURE_BINDING_2D
:
2214 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2216 case GL_TEXTURE_BINDING_3D
:
2217 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2219 case GL_TEXTURE_ENV_COLOR
:
2220 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2221 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2222 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2223 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2225 case GL_TEXTURE_ENV_MODE
:
2226 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2228 case GL_TEXTURE_GEN_S
:
2229 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2231 case GL_TEXTURE_GEN_T
:
2232 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2234 case GL_TEXTURE_GEN_R
:
2235 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2237 case GL_TEXTURE_GEN_Q
:
2238 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2240 case GL_TEXTURE_MATRIX
:
2241 for (i
=0;i
<16;i
++) {
2242 params
[i
] = (GLdouble
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
2245 case GL_TEXTURE_STACK_DEPTH
:
2246 *params
= (GLdouble
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
2248 case GL_UNPACK_ALIGNMENT
:
2249 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2251 case GL_UNPACK_LSB_FIRST
:
2252 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2254 case GL_UNPACK_ROW_LENGTH
:
2255 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2257 case GL_UNPACK_SKIP_PIXELS
:
2258 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2260 case GL_UNPACK_SKIP_ROWS
:
2261 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2263 case GL_UNPACK_SWAP_BYTES
:
2264 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2266 case GL_UNPACK_SKIP_IMAGES_EXT
:
2267 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2269 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2270 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2272 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
2273 *params
= (GLdouble
) ctx
->Unpack
.ClientStorage
;
2276 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2277 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2278 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2279 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2282 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2285 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2287 case GL_VERTEX_ARRAY
:
2288 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2290 case GL_VERTEX_ARRAY_SIZE
:
2291 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2293 case GL_VERTEX_ARRAY_TYPE
:
2294 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2296 case GL_VERTEX_ARRAY_STRIDE
:
2297 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2299 case GL_VERTEX_ARRAY_COUNT_EXT
:
2302 case GL_NORMAL_ARRAY
:
2303 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2305 case GL_NORMAL_ARRAY_TYPE
:
2306 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2308 case GL_NORMAL_ARRAY_STRIDE
:
2309 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2311 case GL_NORMAL_ARRAY_COUNT_EXT
:
2314 case GL_COLOR_ARRAY
:
2315 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2317 case GL_COLOR_ARRAY_SIZE
:
2318 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2320 case GL_COLOR_ARRAY_TYPE
:
2321 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2323 case GL_COLOR_ARRAY_STRIDE
:
2324 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2326 case GL_COLOR_ARRAY_COUNT_EXT
:
2329 case GL_INDEX_ARRAY
:
2330 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2332 case GL_INDEX_ARRAY_TYPE
:
2333 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2335 case GL_INDEX_ARRAY_STRIDE
:
2336 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2338 case GL_INDEX_ARRAY_COUNT_EXT
:
2341 case GL_TEXTURE_COORD_ARRAY
:
2342 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2344 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2345 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2347 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2348 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2350 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2351 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2353 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2356 case GL_EDGE_FLAG_ARRAY
:
2357 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2359 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2360 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2362 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2366 /* GL_ARB_multitexture */
2367 case GL_MAX_TEXTURE_UNITS_ARB
:
2368 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2369 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2371 case GL_ACTIVE_TEXTURE_ARB
:
2372 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2373 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2375 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2376 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2377 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2380 /* GL_ARB_texture_cube_map */
2381 case GL_TEXTURE_CUBE_MAP_ARB
:
2382 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2383 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2385 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2386 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2387 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2389 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2390 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2391 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
2394 /* GL_ARB_texture_compression */
2395 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2396 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2397 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2399 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2400 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2401 *params
= (GLdouble
) _mesa_get_compressed_formats(ctx
, NULL
);
2403 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2404 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2408 n
= _mesa_get_compressed_formats(ctx
, formats
);
2409 for (i
= 0; i
< n
; i
++)
2410 params
[i
] = (GLdouble
) formats
[i
];
2414 /* GL_EXT_compiled_vertex_array */
2415 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2416 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2418 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2419 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2422 /* GL_ARB_transpose_matrix */
2423 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2427 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
2428 for (i
=0;i
<16;i
++) {
2429 params
[i
] = (GLdouble
) tm
[i
];
2433 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2437 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
2438 for (i
=0;i
<16;i
++) {
2439 params
[i
] = (GLdouble
) tm
[i
];
2443 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2447 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
2448 for (i
=0;i
<16;i
++) {
2449 params
[i
] = (GLdouble
) tm
[i
];
2453 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2457 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
2458 for (i
=0;i
<16;i
++) {
2459 params
[i
] = (GLdouble
) tm
[i
];
2464 /* GL_HP_occlusion_test */
2465 case GL_OCCLUSION_TEST_HP
:
2466 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2467 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2469 case GL_OCCLUSION_TEST_RESULT_HP
:
2470 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2471 if (ctx
->Depth
.OcclusionTest
)
2472 *params
= (GLdouble
) ctx
->OcclusionResult
;
2474 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2475 /* reset flag now */
2476 ctx
->OcclusionResult
= GL_FALSE
;
2477 ctx
->OcclusionResultSaved
= GL_FALSE
;
2480 /* GL_SGIS_pixel_texture */
2481 case GL_PIXEL_TEXTURE_SGIS
:
2482 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2485 /* GL_SGIX_pixel_texture */
2486 case GL_PIXEL_TEX_GEN_SGIX
:
2487 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2489 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2490 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2493 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2494 case GL_COLOR_MATRIX_SGI
:
2495 for (i
=0;i
<16;i
++) {
2496 params
[i
] = (GLdouble
) ctx
->ColorMatrixStack
.Top
->m
[i
];
2499 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2500 *params
= (GLdouble
) (ctx
->ColorMatrixStack
.Depth
+ 1);
2502 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2503 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2505 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2506 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2508 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2509 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2511 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2512 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2514 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2515 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2517 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2518 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2520 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2521 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2523 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2524 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2526 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2527 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2530 /* GL_EXT_convolution (also in 1.2 imaging) */
2531 case GL_CONVOLUTION_1D_EXT
:
2532 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2533 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2535 case GL_CONVOLUTION_2D
:
2536 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2537 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2539 case GL_SEPARABLE_2D
:
2540 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2541 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2543 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2544 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2545 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2547 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2548 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2549 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2551 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2552 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2553 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2555 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2556 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2557 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2559 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2560 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2561 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2563 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2564 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2565 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2567 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2568 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2569 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2571 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2572 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2573 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2576 /* GL_EXT_histogram (also in 1.2 imaging) */
2578 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2579 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
2582 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2583 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
2586 /* GL_SGI_color_table (also in 1.2 imaging */
2587 case GL_COLOR_TABLE_SGI
:
2588 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2590 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2591 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2593 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2594 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2597 /* GL_EXT_secondary_color */
2598 case GL_COLOR_SUM_EXT
:
2599 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2600 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2602 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2603 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2604 FLUSH_CURRENT(ctx
, 0);
2605 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
2606 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
2607 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
2609 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2610 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2611 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2613 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2614 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2615 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2617 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2618 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2619 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2621 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2622 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2623 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2626 /* GL_EXT_fog_coord */
2627 case GL_CURRENT_FOG_COORDINATE_EXT
:
2628 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2629 FLUSH_CURRENT(ctx
, 0);
2630 *params
= (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
2632 case GL_FOG_COORDINATE_ARRAY_EXT
:
2633 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2634 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2636 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2637 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2638 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2640 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2641 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2642 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2645 /* GL_EXT_texture_lod_bias */
2646 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
2647 *params
= (GLdouble
) ctx
->Const
.MaxTextureLodBias
;
2650 /* GL_EXT_texture_filter_anisotropic */
2651 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
2652 CHECK_EXTENSION_D(EXT_texture_filter_anisotropic
, pname
);
2653 *params
= (GLdouble
) ctx
->Const
.MaxTextureMaxAnisotropy
;
2656 /* GL_ARB_multisample */
2657 case GL_MULTISAMPLE_ARB
:
2658 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2659 *params
= (GLdouble
) ctx
->Multisample
.Enabled
;
2661 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
2662 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2663 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToCoverage
;
2665 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
2666 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2667 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToOne
;
2669 case GL_SAMPLE_COVERAGE_ARB
:
2670 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2671 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverage
;
2673 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
2674 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2675 *params
= ctx
->Multisample
.SampleCoverageValue
;
2677 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
2678 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2679 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverageInvert
;
2681 case GL_SAMPLE_BUFFERS_ARB
:
2682 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2683 *params
= 0.0; /* XXX fix someday */
2685 case GL_SAMPLES_ARB
:
2686 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2687 *params
= 0.0; /* XXX fix someday */
2690 /* GL_IBM_rasterpos_clip */
2691 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
2692 CHECK_EXTENSION_D(IBM_rasterpos_clip
, pname
);
2693 *params
= (GLdouble
) ctx
->Transform
.RasterPositionUnclipped
;
2696 /* GL_NV_point_sprite */
2697 case GL_POINT_SPRITE_NV
:
2698 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
2699 *params
= (GLdouble
) ctx
->Point
.PointSprite
;
2701 case GL_POINT_SPRITE_R_MODE_NV
:
2702 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
2703 *params
= (GLdouble
) ctx
->Point
.SpriteRMode
;
2706 /* GL_SGIS_generate_mipmap */
2707 case GL_GENERATE_MIPMAP_HINT_SGIS
:
2708 CHECK_EXTENSION_D(SGIS_generate_mipmap
, pname
);
2709 *params
= (GLdouble
) ctx
->Hint
.GenerateMipmap
;
2712 #if FEATURE_NV_vertex_program
2713 case GL_VERTEX_PROGRAM_NV
:
2714 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2715 *params
= (GLdouble
) ctx
->VertexProgram
.Enabled
;
2717 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
2718 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2719 *params
= (GLdouble
) ctx
->VertexProgram
.PointSizeEnabled
;
2721 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
2722 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2723 *params
= (GLdouble
) ctx
->VertexProgram
.TwoSideEnabled
;
2725 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
2726 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2727 *params
= (GLdouble
) MAX_PROGRAM_STACK_DEPTH
;
2729 case GL_MAX_TRACK_MATRICES_NV
:
2730 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2731 *params
= (GLdouble
) MAX_PROGRAM_MATRICES
;
2733 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
2734 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2735 *params
= (GLdouble
) ctx
->CurrentStack
->Depth
;
2737 case GL_CURRENT_MATRIX_NV
:
2738 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2739 *params
= (GLdouble
) ctx
->Transform
.MatrixMode
;
2741 case GL_VERTEX_PROGRAM_BINDING_NV
:
2742 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2743 *params
= (GLdouble
) ctx
->VertexProgram
.CurrentID
;
2745 case GL_PROGRAM_ERROR_POSITION_NV
:
2746 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2747 *params
= (GLdouble
) ctx
->VertexProgram
.ErrorPos
;
2749 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
2750 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
2751 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
2752 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
2753 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
2754 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
2755 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
2756 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
2757 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
2758 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
2759 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
2760 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
2761 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
2762 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
2763 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
2764 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
2765 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2767 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
2768 *params
= (GLdouble
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
2771 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
2772 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
2773 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
2774 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
2775 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
2776 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
2777 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
2778 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
2779 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
2780 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
2781 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
2782 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
2783 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
2784 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
2785 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
2786 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
2787 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
2789 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
2790 *params
= (GLdouble
) ctx
->Eval
.Map1Attrib
[n
];
2793 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
2794 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
2795 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
2796 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
2797 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
2798 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
2799 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
2800 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
2801 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
2802 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
2803 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
2804 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
2805 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
2806 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
2807 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
2808 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
2809 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
2811 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
2812 *params
= (GLdouble
) ctx
->Eval
.Map2Attrib
[n
];
2815 #endif /* FEATURE_NV_vertex_program */
2817 /* GL_NV_texture_rectangle */
2818 case GL_TEXTURE_RECTANGLE_NV
:
2819 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2820 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
2822 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
2823 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2824 *params
= (GLdouble
) textureUnit
->CurrentRect
->Name
;
2826 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
2827 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2828 *params
= (GLdouble
) ctx
->Const
.MaxTextureRectSize
;
2831 /* GL_EXT_stencil_two_side */
2832 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
2833 CHECK_EXTENSION_D(EXT_stencil_two_side
, pname
);
2834 *params
= (GLdouble
) ctx
->Stencil
.TestTwoSide
;
2836 case GL_ACTIVE_STENCIL_FACE_EXT
:
2837 CHECK_EXTENSION_D(EXT_stencil_two_side
, pname
);
2838 *params
= (GLdouble
) (ctx
->Stencil
.ActiveFace
? GL_FRONT
: GL_BACK
);
2842 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev(pname=0x%x)", pname
);
2848 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2850 GET_CURRENT_CONTEXT(ctx
);
2852 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2853 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2854 ASSERT_OUTSIDE_BEGIN_END(ctx
);
2859 /* We need this in order to get correct results for
2860 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
2862 FLUSH_VERTICES(ctx
, 0);
2864 if (MESA_VERBOSE
& VERBOSE_API
)
2865 _mesa_debug(ctx
, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname
));
2867 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2871 case GL_ACCUM_RED_BITS
:
2872 *params
= (GLfloat
) ctx
->Visual
.accumRedBits
;
2874 case GL_ACCUM_GREEN_BITS
:
2875 *params
= (GLfloat
) ctx
->Visual
.accumGreenBits
;
2877 case GL_ACCUM_BLUE_BITS
:
2878 *params
= (GLfloat
) ctx
->Visual
.accumBlueBits
;
2880 case GL_ACCUM_ALPHA_BITS
:
2881 *params
= (GLfloat
) ctx
->Visual
.accumAlphaBits
;
2883 case GL_ACCUM_CLEAR_VALUE
:
2884 params
[0] = ctx
->Accum
.ClearColor
[0];
2885 params
[1] = ctx
->Accum
.ClearColor
[1];
2886 params
[2] = ctx
->Accum
.ClearColor
[2];
2887 params
[3] = ctx
->Accum
.ClearColor
[3];
2890 *params
= ctx
->Pixel
.AlphaBias
;
2893 *params
= (GLfloat
) ctx
->Visual
.alphaBits
;
2895 case GL_ALPHA_SCALE
:
2896 *params
= ctx
->Pixel
.AlphaScale
;
2899 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2901 case GL_ALPHA_TEST_FUNC
:
2902 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2904 case GL_ALPHA_TEST_REF
:
2905 *params
= (GLfloat
) ctx
->Color
.AlphaRef
;
2907 case GL_ATTRIB_STACK_DEPTH
:
2908 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2910 case GL_AUTO_NORMAL
:
2911 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2913 case GL_AUX_BUFFERS
:
2914 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2917 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2920 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2923 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2925 case GL_BLEND_SRC_RGB_EXT
:
2926 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2928 case GL_BLEND_DST_RGB_EXT
:
2929 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2931 case GL_BLEND_SRC_ALPHA_EXT
:
2932 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2934 case GL_BLEND_DST_ALPHA_EXT
:
2935 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2937 case GL_BLEND_EQUATION_EXT
:
2938 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2940 case GL_BLEND_COLOR_EXT
:
2941 params
[0] = ctx
->Color
.BlendColor
[0];
2942 params
[1] = ctx
->Color
.BlendColor
[1];
2943 params
[2] = ctx
->Color
.BlendColor
[2];
2944 params
[3] = ctx
->Color
.BlendColor
[3];
2947 *params
= ctx
->Pixel
.BlueBias
;
2950 *params
= (GLfloat
) ctx
->Visual
.blueBits
;
2953 *params
= ctx
->Pixel
.BlueScale
;
2955 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2956 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2958 case GL_CLIP_PLANE0
:
2959 case GL_CLIP_PLANE1
:
2960 case GL_CLIP_PLANE2
:
2961 case GL_CLIP_PLANE3
:
2962 case GL_CLIP_PLANE4
:
2963 case GL_CLIP_PLANE5
:
2964 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
2969 case GL_COLOR_CLEAR_VALUE
:
2970 params
[0] = ctx
->Color
.ClearColor
[0];
2971 params
[1] = ctx
->Color
.ClearColor
[1];
2972 params
[2] = ctx
->Color
.ClearColor
[2];
2973 params
[3] = ctx
->Color
.ClearColor
[3];
2975 case GL_COLOR_MATERIAL
:
2976 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2978 case GL_COLOR_MATERIAL_FACE
:
2979 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2981 case GL_COLOR_MATERIAL_PARAMETER
:
2982 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2984 case GL_COLOR_WRITEMASK
:
2985 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2986 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2987 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2988 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2991 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2993 case GL_CULL_FACE_MODE
:
2994 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2996 case GL_CURRENT_COLOR
:
2997 FLUSH_CURRENT(ctx
, 0);
2998 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
2999 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
3000 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
3001 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
3003 case GL_CURRENT_INDEX
:
3004 FLUSH_CURRENT(ctx
, 0);
3005 *params
= (GLfloat
) ctx
->Current
.Index
;
3007 case GL_CURRENT_NORMAL
:
3008 FLUSH_CURRENT(ctx
, 0);
3009 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
3010 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
3011 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
3013 case GL_CURRENT_RASTER_COLOR
:
3014 params
[0] = ctx
->Current
.RasterColor
[0];
3015 params
[1] = ctx
->Current
.RasterColor
[1];
3016 params
[2] = ctx
->Current
.RasterColor
[2];
3017 params
[3] = ctx
->Current
.RasterColor
[3];
3019 case GL_CURRENT_RASTER_DISTANCE
:
3020 params
[0] = ctx
->Current
.RasterDistance
;
3022 case GL_CURRENT_RASTER_INDEX
:
3023 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
3025 case GL_CURRENT_RASTER_POSITION
:
3026 params
[0] = ctx
->Current
.RasterPos
[0];
3027 params
[1] = ctx
->Current
.RasterPos
[1];
3028 params
[2] = ctx
->Current
.RasterPos
[2];
3029 params
[3] = ctx
->Current
.RasterPos
[3];
3031 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3032 params
[0] = ctx
->Current
.RasterTexCoords
[texUnit
][0];
3033 params
[1] = ctx
->Current
.RasterTexCoords
[texUnit
][1];
3034 params
[2] = ctx
->Current
.RasterTexCoords
[texUnit
][2];
3035 params
[3] = ctx
->Current
.RasterTexCoords
[texUnit
][3];
3037 case GL_CURRENT_RASTER_POSITION_VALID
:
3038 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
3040 case GL_CURRENT_TEXTURE_COORDS
:
3041 FLUSH_CURRENT(ctx
, 0);
3042 params
[0] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
3043 params
[1] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
3044 params
[2] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
3045 params
[3] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
3048 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
3051 *params
= (GLfloat
) ctx
->Visual
.depthBits
;
3053 case GL_DEPTH_CLEAR_VALUE
:
3054 *params
= (GLfloat
) ctx
->Depth
.Clear
;
3057 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
3059 case GL_DEPTH_RANGE
:
3060 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
3061 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
3063 case GL_DEPTH_SCALE
:
3064 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
3067 *params
= (GLfloat
) ctx
->Depth
.Test
;
3069 case GL_DEPTH_WRITEMASK
:
3070 *params
= (GLfloat
) ctx
->Depth
.Mask
;
3073 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
3075 case GL_DOUBLEBUFFER
:
3076 *params
= (GLfloat
) ctx
->Visual
.doubleBufferMode
;
3078 case GL_DRAW_BUFFER
:
3079 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
3082 FLUSH_CURRENT(ctx
, 0);
3083 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
3085 case GL_FEEDBACK_BUFFER_SIZE
:
3086 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
3088 case GL_FEEDBACK_BUFFER_TYPE
:
3089 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
3092 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
3095 params
[0] = ctx
->Fog
.Color
[0];
3096 params
[1] = ctx
->Fog
.Color
[1];
3097 params
[2] = ctx
->Fog
.Color
[2];
3098 params
[3] = ctx
->Fog
.Color
[3];
3100 case GL_FOG_DENSITY
:
3101 *params
= ctx
->Fog
.Density
;
3104 *params
= ctx
->Fog
.End
;
3107 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
3110 *params
= ctx
->Fog
.Index
;
3113 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
3116 *params
= ctx
->Fog
.Start
;
3119 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
3122 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
3125 *params
= (GLfloat
) ctx
->Visual
.greenBits
;
3127 case GL_GREEN_SCALE
:
3128 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
3131 *params
= (GLfloat
) ctx
->Visual
.indexBits
;
3133 case GL_INDEX_CLEAR_VALUE
:
3134 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
3137 *params
= ctx
->Visual
.rgbMode
? 0.0F
: 1.0F
;
3139 case GL_INDEX_OFFSET
:
3140 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
3142 case GL_INDEX_SHIFT
:
3143 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
3145 case GL_INDEX_WRITEMASK
:
3146 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
3156 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3159 *params
= (GLfloat
) ctx
->Light
.Enabled
;
3161 case GL_LIGHT_MODEL_AMBIENT
:
3162 params
[0] = ctx
->Light
.Model
.Ambient
[0];
3163 params
[1] = ctx
->Light
.Model
.Ambient
[1];
3164 params
[2] = ctx
->Light
.Model
.Ambient
[2];
3165 params
[3] = ctx
->Light
.Model
.Ambient
[3];
3167 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3168 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
3170 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3171 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
3173 case GL_LIGHT_MODEL_TWO_SIDE
:
3174 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
3176 case GL_LINE_SMOOTH
:
3177 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
3179 case GL_LINE_SMOOTH_HINT
:
3180 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
3182 case GL_LINE_STIPPLE
:
3183 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
3185 case GL_LINE_STIPPLE_PATTERN
:
3186 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
3188 case GL_LINE_STIPPLE_REPEAT
:
3189 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
3192 *params
= (GLfloat
) ctx
->Line
.Width
;
3194 case GL_LINE_WIDTH_GRANULARITY
:
3195 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
3197 case GL_LINE_WIDTH_RANGE
:
3198 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
3199 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
3201 case GL_ALIASED_LINE_WIDTH_RANGE
:
3202 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
3203 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
3206 *params
= (GLfloat
) ctx
->List
.ListBase
;
3209 *params
= (GLfloat
) ctx
->CurrentListNum
;
3212 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
3213 : ENUM_TO_FLOAT(GL_COMPILE
);
3215 case GL_INDEX_LOGIC_OP
:
3216 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
3218 case GL_COLOR_LOGIC_OP
:
3219 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
3221 case GL_LOGIC_OP_MODE
:
3222 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
3224 case GL_MAP1_COLOR_4
:
3225 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
3227 case GL_MAP1_GRID_DOMAIN
:
3228 params
[0] = ctx
->Eval
.MapGrid1u1
;
3229 params
[1] = ctx
->Eval
.MapGrid1u2
;
3231 case GL_MAP1_GRID_SEGMENTS
:
3232 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
3235 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
3237 case GL_MAP1_NORMAL
:
3238 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
3240 case GL_MAP1_TEXTURE_COORD_1
:
3241 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
3243 case GL_MAP1_TEXTURE_COORD_2
:
3244 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
3246 case GL_MAP1_TEXTURE_COORD_3
:
3247 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
3249 case GL_MAP1_TEXTURE_COORD_4
:
3250 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
3252 case GL_MAP1_VERTEX_3
:
3253 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
3255 case GL_MAP1_VERTEX_4
:
3256 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
3258 case GL_MAP2_COLOR_4
:
3259 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
3261 case GL_MAP2_GRID_DOMAIN
:
3262 params
[0] = ctx
->Eval
.MapGrid2u1
;
3263 params
[1] = ctx
->Eval
.MapGrid2u2
;
3264 params
[2] = ctx
->Eval
.MapGrid2v1
;
3265 params
[3] = ctx
->Eval
.MapGrid2v2
;
3267 case GL_MAP2_GRID_SEGMENTS
:
3268 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
3269 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
3272 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
3274 case GL_MAP2_NORMAL
:
3275 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
3277 case GL_MAP2_TEXTURE_COORD_1
:
3278 *params
= ctx
->Eval
.Map2TextureCoord1
;
3280 case GL_MAP2_TEXTURE_COORD_2
:
3281 *params
= ctx
->Eval
.Map2TextureCoord2
;
3283 case GL_MAP2_TEXTURE_COORD_3
:
3284 *params
= ctx
->Eval
.Map2TextureCoord3
;
3286 case GL_MAP2_TEXTURE_COORD_4
:
3287 *params
= ctx
->Eval
.Map2TextureCoord4
;
3289 case GL_MAP2_VERTEX_3
:
3290 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
3292 case GL_MAP2_VERTEX_4
:
3293 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
3296 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
3298 case GL_MAP_STENCIL
:
3299 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
3301 case GL_MATRIX_MODE
:
3302 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
3304 case GL_MAX_ATTRIB_STACK_DEPTH
:
3305 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
3307 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3308 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3310 case GL_MAX_CLIP_PLANES
:
3311 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
3313 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3314 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3316 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3317 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3319 case GL_MAX_EVAL_ORDER
:
3320 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3323 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3325 case GL_MAX_LIST_NESTING
:
3326 *params
= (GLfloat
) MAX_LIST_NESTING
;
3328 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3329 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3331 case GL_MAX_NAME_STACK_DEPTH
:
3332 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3334 case GL_MAX_PIXEL_MAP_TABLE
:
3335 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3337 case GL_MAX_PROJECTION_STACK_DEPTH
:
3338 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3340 case GL_MAX_TEXTURE_SIZE
:
3341 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
3343 case GL_MAX_3D_TEXTURE_SIZE
:
3344 *params
= (GLfloat
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
3346 case GL_MAX_TEXTURE_STACK_DEPTH
:
3347 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3349 case GL_MAX_VIEWPORT_DIMS
:
3350 params
[0] = (GLfloat
) MAX_WIDTH
;
3351 params
[1] = (GLfloat
) MAX_HEIGHT
;
3353 case GL_MODELVIEW_MATRIX
:
3354 for (i
=0;i
<16;i
++) {
3355 params
[i
] = ctx
->ModelviewMatrixStack
.Top
->m
[i
];
3358 case GL_MODELVIEW_STACK_DEPTH
:
3359 *params
= (GLfloat
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
3361 case GL_NAME_STACK_DEPTH
:
3362 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3365 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3367 case GL_PACK_ALIGNMENT
:
3368 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3370 case GL_PACK_LSB_FIRST
:
3371 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3373 case GL_PACK_ROW_LENGTH
:
3374 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3376 case GL_PACK_SKIP_PIXELS
:
3377 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3379 case GL_PACK_SKIP_ROWS
:
3380 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3382 case GL_PACK_SWAP_BYTES
:
3383 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3385 case GL_PACK_SKIP_IMAGES_EXT
:
3386 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3388 case GL_PACK_IMAGE_HEIGHT_EXT
:
3389 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3391 case GL_PACK_INVERT_MESA
:
3392 *params
= (GLfloat
) ctx
->Pack
.Invert
;
3394 case GL_PERSPECTIVE_CORRECTION_HINT
:
3395 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3397 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3398 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3400 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3401 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3403 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3404 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3406 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3407 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3409 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3410 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3412 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3413 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3415 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3416 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3418 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3419 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3421 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3422 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3424 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3425 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3428 *params
= (GLfloat
) ctx
->Point
.Size
;
3430 case GL_POINT_SIZE_GRANULARITY
:
3431 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3433 case GL_POINT_SIZE_RANGE
:
3434 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3435 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3437 case GL_ALIASED_POINT_SIZE_RANGE
:
3438 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3439 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3441 case GL_POINT_SMOOTH
:
3442 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3444 case GL_POINT_SMOOTH_HINT
:
3445 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3447 case GL_POINT_SIZE_MIN_EXT
:
3448 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3450 case GL_POINT_SIZE_MAX_EXT
:
3451 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3453 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3454 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3456 case GL_DISTANCE_ATTENUATION_EXT
:
3457 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3458 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3459 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3461 case GL_POLYGON_MODE
:
3462 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3463 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3465 #ifdef GL_EXT_polygon_offset
3466 case GL_POLYGON_OFFSET_BIAS_EXT
:
3467 *params
= ctx
->Polygon
.OffsetUnits
;
3470 case GL_POLYGON_OFFSET_FACTOR
:
3471 *params
= ctx
->Polygon
.OffsetFactor
;
3473 case GL_POLYGON_OFFSET_UNITS
:
3474 *params
= ctx
->Polygon
.OffsetUnits
;
3476 case GL_POLYGON_SMOOTH
:
3477 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3479 case GL_POLYGON_SMOOTH_HINT
:
3480 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3482 case GL_POLYGON_STIPPLE
:
3483 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3485 case GL_PROJECTION_MATRIX
:
3486 for (i
=0;i
<16;i
++) {
3487 params
[i
] = ctx
->ProjectionMatrixStack
.Top
->m
[i
];
3490 case GL_PROJECTION_STACK_DEPTH
:
3491 *params
= (GLfloat
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
3493 case GL_READ_BUFFER
:
3494 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3497 *params
= ctx
->Pixel
.RedBias
;
3500 *params
= (GLfloat
) ctx
->Visual
.redBits
;
3503 *params
= ctx
->Pixel
.RedScale
;
3505 case GL_RENDER_MODE
:
3506 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3508 case GL_RESCALE_NORMAL
:
3509 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3512 *params
= (GLfloat
) ctx
->Visual
.rgbMode
;
3514 case GL_SCISSOR_BOX
:
3515 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3516 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3517 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3518 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3520 case GL_SCISSOR_TEST
:
3521 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3523 case GL_SELECTION_BUFFER_SIZE
:
3524 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3526 case GL_SHADE_MODEL
:
3527 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3529 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3530 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3532 case GL_STENCIL_BITS
:
3533 *params
= (GLfloat
) ctx
->Visual
.stencilBits
;
3535 case GL_STENCIL_CLEAR_VALUE
:
3536 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3538 case GL_STENCIL_FAIL
:
3539 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
3541 case GL_STENCIL_FUNC
:
3542 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
3544 case GL_STENCIL_PASS_DEPTH_FAIL
:
3545 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
3547 case GL_STENCIL_PASS_DEPTH_PASS
:
3548 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
3550 case GL_STENCIL_REF
:
3551 *params
= (GLfloat
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
3553 case GL_STENCIL_TEST
:
3554 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3556 case GL_STENCIL_VALUE_MASK
:
3557 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
3559 case GL_STENCIL_WRITEMASK
:
3560 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
3563 *params
= (GLfloat
) ctx
->Visual
.stereoMode
;
3565 case GL_SUBPIXEL_BITS
:
3566 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3569 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0F
: 0.0F
;
3572 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0F
: 0.0F
;
3575 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0F
: 0.0F
;
3577 case GL_TEXTURE_BINDING_1D
:
3578 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3580 case GL_TEXTURE_BINDING_2D
:
3581 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3583 case GL_TEXTURE_BINDING_3D
:
3584 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3586 case GL_TEXTURE_ENV_COLOR
:
3587 params
[0] = textureUnit
->EnvColor
[0];
3588 params
[1] = textureUnit
->EnvColor
[1];
3589 params
[2] = textureUnit
->EnvColor
[2];
3590 params
[3] = textureUnit
->EnvColor
[3];
3592 case GL_TEXTURE_ENV_MODE
:
3593 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3595 case GL_TEXTURE_GEN_S
:
3596 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0F
: 0.0F
;
3598 case GL_TEXTURE_GEN_T
:
3599 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0F
: 0.0F
;
3601 case GL_TEXTURE_GEN_R
:
3602 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0F
: 0.0F
;
3604 case GL_TEXTURE_GEN_Q
:
3605 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0F
: 0.0F
;
3607 case GL_TEXTURE_MATRIX
:
3608 for (i
=0;i
<16;i
++) {
3609 params
[i
] = ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
3612 case GL_TEXTURE_STACK_DEPTH
:
3613 *params
= (GLfloat
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
3615 case GL_UNPACK_ALIGNMENT
:
3616 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3618 case GL_UNPACK_LSB_FIRST
:
3619 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3621 case GL_UNPACK_ROW_LENGTH
:
3622 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3624 case GL_UNPACK_SKIP_PIXELS
:
3625 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3627 case GL_UNPACK_SKIP_ROWS
:
3628 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3630 case GL_UNPACK_SWAP_BYTES
:
3631 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3633 case GL_UNPACK_SKIP_IMAGES_EXT
:
3634 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3636 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3637 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3639 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
3640 *params
= (GLfloat
) ctx
->Unpack
.ClientStorage
;
3643 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3644 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3645 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3646 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3649 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3652 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3654 case GL_VERTEX_ARRAY
:
3655 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3657 case GL_VERTEX_ARRAY_SIZE
:
3658 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3660 case GL_VERTEX_ARRAY_TYPE
:
3661 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3663 case GL_VERTEX_ARRAY_STRIDE
:
3664 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3666 case GL_VERTEX_ARRAY_COUNT_EXT
:
3669 case GL_NORMAL_ARRAY
:
3670 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3672 case GL_NORMAL_ARRAY_TYPE
:
3673 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3675 case GL_NORMAL_ARRAY_STRIDE
:
3676 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3678 case GL_NORMAL_ARRAY_COUNT_EXT
:
3681 case GL_COLOR_ARRAY
:
3682 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3684 case GL_COLOR_ARRAY_SIZE
:
3685 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3687 case GL_COLOR_ARRAY_TYPE
:
3688 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3690 case GL_COLOR_ARRAY_STRIDE
:
3691 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3693 case GL_COLOR_ARRAY_COUNT_EXT
:
3696 case GL_INDEX_ARRAY
:
3697 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3699 case GL_INDEX_ARRAY_TYPE
:
3700 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3702 case GL_INDEX_ARRAY_STRIDE
:
3703 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3705 case GL_INDEX_ARRAY_COUNT_EXT
:
3708 case GL_TEXTURE_COORD_ARRAY
:
3709 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3711 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3712 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3714 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3715 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3717 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3718 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3720 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3723 case GL_EDGE_FLAG_ARRAY
:
3724 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3726 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3727 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3729 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3733 /* GL_ARB_multitexture */
3734 case GL_MAX_TEXTURE_UNITS_ARB
:
3735 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3736 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3738 case GL_ACTIVE_TEXTURE_ARB
:
3739 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3740 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3742 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3743 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3744 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3747 /* GL_ARB_texture_cube_map */
3748 case GL_TEXTURE_CUBE_MAP_ARB
:
3749 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3750 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3752 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3753 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3754 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3756 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3757 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3758 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
3761 /* GL_ARB_texture_compression */
3762 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3763 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3764 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3766 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3767 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3768 *params
= (GLfloat
) _mesa_get_compressed_formats(ctx
, NULL
);
3770 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3771 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3775 n
= _mesa_get_compressed_formats(ctx
, formats
);
3776 for (i
= 0; i
< n
; i
++)
3777 params
[i
] = (GLfloat
) formats
[i
];
3781 /* GL_EXT_compiled_vertex_array */
3782 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3783 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
3784 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3786 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3787 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
3788 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3791 /* GL_ARB_transpose_matrix */
3792 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3793 _math_transposef(params
, ctx
->ColorMatrixStack
.Top
->m
);
3795 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3796 _math_transposef(params
, ctx
->ModelviewMatrixStack
.Top
->m
);
3798 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3799 _math_transposef(params
, ctx
->ProjectionMatrixStack
.Top
->m
);
3801 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3802 _math_transposef(params
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
3805 /* GL_HP_occlusion_test */
3806 case GL_OCCLUSION_TEST_HP
:
3807 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
3808 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3810 case GL_OCCLUSION_TEST_RESULT_HP
:
3811 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
3812 if (ctx
->Depth
.OcclusionTest
)
3813 *params
= (GLfloat
) ctx
->OcclusionResult
;
3815 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3816 /* reset flag now */
3817 ctx
->OcclusionResult
= GL_FALSE
;
3818 ctx
->OcclusionResultSaved
= GL_FALSE
;
3821 /* GL_SGIS_pixel_texture */
3822 case GL_PIXEL_TEXTURE_SGIS
:
3823 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3826 /* GL_SGIX_pixel_texture */
3827 case GL_PIXEL_TEX_GEN_SGIX
:
3828 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3830 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3831 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3834 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3835 case GL_COLOR_MATRIX_SGI
:
3836 for (i
=0;i
<16;i
++) {
3837 params
[i
] = ctx
->ColorMatrixStack
.Top
->m
[i
];
3840 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3841 *params
= (GLfloat
) (ctx
->ColorMatrixStack
.Depth
+ 1);
3843 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3844 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3846 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3847 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3849 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3850 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3852 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3853 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3855 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3856 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3858 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3859 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3861 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3862 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3864 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3865 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3867 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3868 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3871 /* GL_EXT_convolution (also in 1.2 imaging) */
3872 case GL_CONVOLUTION_1D_EXT
:
3873 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3874 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
3876 case GL_CONVOLUTION_2D
:
3877 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3878 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
3880 case GL_SEPARABLE_2D
:
3881 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3882 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
3884 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3885 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3886 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3888 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3889 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3890 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3892 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3893 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3894 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3896 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3897 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3898 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3900 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3901 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3902 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3904 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3905 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3906 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3908 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3909 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3910 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3912 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3913 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3914 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3917 /* GL_EXT_histogram (also in 1.2 imaging) */
3919 CHECK_EXTENSION_F(EXT_histogram
, pname
);
3920 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
3923 CHECK_EXTENSION_F(EXT_histogram
, pname
);
3924 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
3927 /* GL_SGI_color_table (also in 1.2 imaging */
3928 case GL_COLOR_TABLE_SGI
:
3929 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3931 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3932 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3934 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3935 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3938 /* GL_EXT_secondary_color */
3939 case GL_COLOR_SUM_EXT
:
3940 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3941 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3943 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3944 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3945 FLUSH_CURRENT(ctx
, 0);
3946 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
3947 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
3948 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
3950 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3951 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3952 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3954 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3955 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3956 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3958 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3959 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3960 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3962 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3963 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3964 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3967 /* GL_EXT_fog_coord */
3968 case GL_CURRENT_FOG_COORDINATE_EXT
:
3969 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3970 FLUSH_CURRENT(ctx
, 0);
3971 *params
= (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
3973 case GL_FOG_COORDINATE_ARRAY_EXT
:
3974 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3975 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3977 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3978 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3979 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3981 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3982 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3983 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3986 /* GL_EXT_texture_lod_bias */
3987 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3988 *params
= ctx
->Const
.MaxTextureLodBias
;
3991 /* GL_EXT_texture_filter_anisotropic */
3992 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3993 CHECK_EXTENSION_F(EXT_texture_filter_anisotropic
, pname
);
3994 *params
= ctx
->Const
.MaxTextureMaxAnisotropy
;
3997 /* GL_ARB_multisample */
3998 case GL_MULTISAMPLE_ARB
:
3999 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4000 *params
= (GLfloat
) ctx
->Multisample
.Enabled
;
4002 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
4003 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4004 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToCoverage
;
4006 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
4007 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4008 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToOne
;
4010 case GL_SAMPLE_COVERAGE_ARB
:
4011 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4012 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverage
;
4014 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
4015 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4016 *params
= ctx
->Multisample
.SampleCoverageValue
;
4018 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
4019 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4020 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverageInvert
;
4022 case GL_SAMPLE_BUFFERS_ARB
:
4023 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4024 *params
= 0.0; /* XXX fix someday */
4026 case GL_SAMPLES_ARB
:
4027 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4028 *params
= 0.0; /* XXX fix someday */
4031 /* GL_IBM_rasterpos_clip */
4032 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
4033 CHECK_EXTENSION_F(IBM_rasterpos_clip
, pname
);
4034 *params
= (GLfloat
) ctx
->Transform
.RasterPositionUnclipped
;
4037 /* GL_NV_point_sprite */
4038 case GL_POINT_SPRITE_NV
:
4039 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
4040 *params
= (GLfloat
) ctx
->Point
.PointSprite
;
4042 case GL_POINT_SPRITE_R_MODE_NV
:
4043 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
4044 *params
= (GLfloat
) ctx
->Point
.SpriteRMode
;
4047 /* GL_SGIS_generate_mipmap */
4048 case GL_GENERATE_MIPMAP_HINT_SGIS
:
4049 CHECK_EXTENSION_F(SGIS_generate_mipmap
, pname
);
4050 *params
= (GLfloat
) ctx
->Hint
.GenerateMipmap
;
4053 #if FEATURE_NV_vertex_program
4054 case GL_VERTEX_PROGRAM_NV
:
4055 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4056 *params
= (GLfloat
) ctx
->VertexProgram
.Enabled
;
4058 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
4059 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4060 *params
= (GLfloat
) ctx
->VertexProgram
.PointSizeEnabled
;
4062 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
4063 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4064 *params
= (GLfloat
) ctx
->VertexProgram
.TwoSideEnabled
;
4066 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
4067 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4068 *params
= (GLfloat
) MAX_PROGRAM_STACK_DEPTH
;
4070 case GL_MAX_TRACK_MATRICES_NV
:
4071 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4072 *params
= (GLfloat
) MAX_PROGRAM_MATRICES
;
4074 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
4075 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4076 *params
= (GLfloat
) ctx
->CurrentStack
->Depth
;
4078 case GL_CURRENT_MATRIX_NV
:
4079 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4080 *params
= (GLfloat
) ctx
->Transform
.MatrixMode
;
4082 case GL_VERTEX_PROGRAM_BINDING_NV
:
4083 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4084 *params
= (GLfloat
) ctx
->VertexProgram
.CurrentID
;
4086 case GL_PROGRAM_ERROR_POSITION_NV
:
4087 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4088 *params
= (GLfloat
) ctx
->VertexProgram
.ErrorPos
;
4090 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
4091 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
4092 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
4093 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
4094 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
4095 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
4096 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
4097 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
4098 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
4099 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
4100 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
4101 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
4102 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
4103 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
4104 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
4105 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
4106 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4108 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
4109 *params
= (GLfloat
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
4112 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
4113 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
4114 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
4115 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
4116 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
4117 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
4118 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
4119 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
4120 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
4121 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
4122 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
4123 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
4124 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
4125 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
4126 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
4127 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
4128 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
4130 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
4131 *params
= (GLfloat
) ctx
->Eval
.Map1Attrib
[n
];
4134 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
4135 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
4136 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
4137 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
4138 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
4139 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
4140 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
4141 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
4142 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
4143 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
4144 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
4145 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
4146 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
4147 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
4148 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
4149 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
4150 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
4152 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
4153 *params
= (GLfloat
) ctx
->Eval
.Map2Attrib
[n
];
4157 /* GL_NV_texture_rectangle */
4158 case GL_TEXTURE_RECTANGLE_NV
:
4159 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4160 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
4162 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
4163 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4164 *params
= (GLfloat
) textureUnit
->CurrentRect
->Name
;
4166 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
4167 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4168 *params
= (GLfloat
) ctx
->Const
.MaxTextureRectSize
;
4170 #endif /* FEATURE_NV_vertex_program */
4172 /* GL_EXT_stencil_two_side */
4173 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
4174 CHECK_EXTENSION_F(EXT_stencil_two_side
, pname
);
4175 *params
= (GLfloat
) ctx
->Stencil
.TestTwoSide
;
4177 case GL_ACTIVE_STENCIL_FACE_EXT
:
4178 CHECK_EXTENSION_F(EXT_stencil_two_side
, pname
);
4179 *params
= (GLfloat
) (ctx
->Stencil
.ActiveFace
? GL_FRONT
: GL_BACK
);
4183 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv(0x%x)", pname
);
4189 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
4191 GET_CURRENT_CONTEXT(ctx
);
4193 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4194 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
4195 ASSERT_OUTSIDE_BEGIN_END(ctx
);
4200 /* We need this in order to get correct results for
4201 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
4203 FLUSH_VERTICES(ctx
, 0);
4205 if (MESA_VERBOSE
& VERBOSE_API
)
4206 _mesa_debug(ctx
, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname
));
4208 if (ctx
->Driver
.GetIntegerv
4209 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
4213 case GL_ACCUM_RED_BITS
:
4214 *params
= (GLint
) ctx
->Visual
.accumRedBits
;
4216 case GL_ACCUM_GREEN_BITS
:
4217 *params
= (GLint
) ctx
->Visual
.accumGreenBits
;
4219 case GL_ACCUM_BLUE_BITS
:
4220 *params
= (GLint
) ctx
->Visual
.accumBlueBits
;
4222 case GL_ACCUM_ALPHA_BITS
:
4223 *params
= (GLint
) ctx
->Visual
.accumAlphaBits
;
4225 case GL_ACCUM_CLEAR_VALUE
:
4226 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
4227 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
4228 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
4229 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
4232 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
4235 *params
= ctx
->Visual
.alphaBits
;
4237 case GL_ALPHA_SCALE
:
4238 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
4241 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
4243 case GL_ALPHA_TEST_REF
:
4244 *params
= FLOAT_TO_INT(ctx
->Color
.AlphaRef
);
4246 case GL_ALPHA_TEST_FUNC
:
4247 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
4249 case GL_ATTRIB_STACK_DEPTH
:
4250 *params
= (GLint
) (ctx
->AttribStackDepth
);
4252 case GL_AUTO_NORMAL
:
4253 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
4255 case GL_AUX_BUFFERS
:
4256 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
4259 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
4262 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4265 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4267 case GL_BLEND_SRC_RGB_EXT
:
4268 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4270 case GL_BLEND_DST_RGB_EXT
:
4271 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4273 case GL_BLEND_SRC_ALPHA_EXT
:
4274 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
4276 case GL_BLEND_DST_ALPHA_EXT
:
4277 *params
= (GLint
) ctx
->Color
.BlendDstA
;
4279 case GL_BLEND_EQUATION_EXT
:
4280 *params
= (GLint
) ctx
->Color
.BlendEquation
;
4282 case GL_BLEND_COLOR_EXT
:
4283 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
4284 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
4285 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
4286 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
4289 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
4292 *params
= (GLint
) ctx
->Visual
.blueBits
;
4295 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
4297 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
4298 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
4300 case GL_CLIP_PLANE0
:
4301 case GL_CLIP_PLANE1
:
4302 case GL_CLIP_PLANE2
:
4303 case GL_CLIP_PLANE3
:
4304 case GL_CLIP_PLANE4
:
4305 case GL_CLIP_PLANE5
:
4306 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
4311 case GL_COLOR_CLEAR_VALUE
:
4312 params
[0] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[0]) );
4313 params
[1] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[1]) );
4314 params
[2] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[2]) );
4315 params
[3] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[3]) );
4317 case GL_COLOR_MATERIAL
:
4318 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
4320 case GL_COLOR_MATERIAL_FACE
:
4321 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
4323 case GL_COLOR_MATERIAL_PARAMETER
:
4324 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
4326 case GL_COLOR_WRITEMASK
:
4327 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
4328 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
4329 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
4330 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
4333 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
4335 case GL_CULL_FACE_MODE
:
4336 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
4338 case GL_CURRENT_COLOR
:
4339 FLUSH_CURRENT(ctx
, 0);
4340 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4341 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4342 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4343 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4345 case GL_CURRENT_INDEX
:
4346 FLUSH_CURRENT(ctx
, 0);
4347 *params
= (GLint
) ctx
->Current
.Index
;
4349 case GL_CURRENT_NORMAL
:
4350 FLUSH_CURRENT(ctx
, 0);
4351 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4352 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4353 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4355 case GL_CURRENT_RASTER_COLOR
:
4356 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
4357 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
4358 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
4359 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
4361 case GL_CURRENT_RASTER_DISTANCE
:
4362 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
4364 case GL_CURRENT_RASTER_INDEX
:
4365 *params
= (GLint
) ctx
->Current
.RasterIndex
;
4367 case GL_CURRENT_RASTER_POSITION
:
4368 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
4369 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
4370 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
4371 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
4373 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4374 params
[0] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
4375 params
[1] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
4376 params
[2] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
4377 params
[3] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
4379 case GL_CURRENT_RASTER_POSITION_VALID
:
4380 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
4382 case GL_CURRENT_TEXTURE_COORDS
:
4383 FLUSH_CURRENT(ctx
, 0);
4384 params
[0] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
4385 params
[1] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
4386 params
[2] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
4387 params
[3] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
4390 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
4393 *params
= ctx
->Visual
.depthBits
;
4395 case GL_DEPTH_CLEAR_VALUE
:
4396 *params
= (GLint
) ctx
->Depth
.Clear
;
4399 *params
= (GLint
) ctx
->Depth
.Func
;
4401 case GL_DEPTH_RANGE
:
4402 params
[0] = (GLint
) ctx
->Viewport
.Near
;
4403 params
[1] = (GLint
) ctx
->Viewport
.Far
;
4405 case GL_DEPTH_SCALE
:
4406 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
4409 *params
= (GLint
) ctx
->Depth
.Test
;
4411 case GL_DEPTH_WRITEMASK
:
4412 *params
= (GLint
) ctx
->Depth
.Mask
;
4415 *params
= (GLint
) ctx
->Color
.DitherFlag
;
4417 case GL_DOUBLEBUFFER
:
4418 *params
= (GLint
) ctx
->Visual
.doubleBufferMode
;
4420 case GL_DRAW_BUFFER
:
4421 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
4424 FLUSH_CURRENT(ctx
, 0);
4425 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
4427 case GL_FEEDBACK_BUFFER_SIZE
:
4428 *params
= ctx
->Feedback
.BufferSize
;
4430 case GL_FEEDBACK_BUFFER_TYPE
:
4431 *params
= ctx
->Feedback
.Type
;
4434 *params
= (GLint
) ctx
->Fog
.Enabled
;
4437 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
4438 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
4439 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
4440 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
4442 case GL_FOG_DENSITY
:
4443 *params
= (GLint
) ctx
->Fog
.Density
;
4446 *params
= (GLint
) ctx
->Fog
.End
;
4449 *params
= (GLint
) ctx
->Hint
.Fog
;
4452 *params
= (GLint
) ctx
->Fog
.Index
;
4455 *params
= (GLint
) ctx
->Fog
.Mode
;
4458 *params
= (GLint
) ctx
->Fog
.Start
;
4461 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
4464 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
4467 *params
= (GLint
) ctx
->Visual
.greenBits
;
4469 case GL_GREEN_SCALE
:
4470 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
4473 *params
= (GLint
) ctx
->Visual
.indexBits
;
4475 case GL_INDEX_CLEAR_VALUE
:
4476 *params
= (GLint
) ctx
->Color
.ClearIndex
;
4479 *params
= ctx
->Visual
.rgbMode
? 0 : 1;
4481 case GL_INDEX_OFFSET
:
4482 *params
= ctx
->Pixel
.IndexOffset
;
4484 case GL_INDEX_SHIFT
:
4485 *params
= ctx
->Pixel
.IndexShift
;
4487 case GL_INDEX_WRITEMASK
:
4488 *params
= (GLint
) ctx
->Color
.IndexMask
;
4498 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
4501 *params
= (GLint
) ctx
->Light
.Enabled
;
4503 case GL_LIGHT_MODEL_AMBIENT
:
4504 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
4505 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
4506 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
4507 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
4509 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4510 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
4512 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4513 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
4515 case GL_LIGHT_MODEL_TWO_SIDE
:
4516 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
4518 case GL_LINE_SMOOTH
:
4519 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
4521 case GL_LINE_SMOOTH_HINT
:
4522 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
4524 case GL_LINE_STIPPLE
:
4525 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4527 case GL_LINE_STIPPLE_PATTERN
:
4528 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4530 case GL_LINE_STIPPLE_REPEAT
:
4531 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4534 *params
= (GLint
) ctx
->Line
.Width
;
4536 case GL_LINE_WIDTH_GRANULARITY
:
4537 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4539 case GL_LINE_WIDTH_RANGE
:
4540 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4541 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4543 case GL_ALIASED_LINE_WIDTH_RANGE
:
4544 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4545 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4548 *params
= (GLint
) ctx
->List
.ListBase
;
4551 *params
= (GLint
) ctx
->CurrentListNum
;
4554 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4555 : (GLint
) GL_COMPILE
;
4557 case GL_INDEX_LOGIC_OP
:
4558 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4560 case GL_COLOR_LOGIC_OP
:
4561 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4563 case GL_LOGIC_OP_MODE
:
4564 *params
= (GLint
) ctx
->Color
.LogicOp
;
4566 case GL_MAP1_COLOR_4
:
4567 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4569 case GL_MAP1_GRID_DOMAIN
:
4570 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4571 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4573 case GL_MAP1_GRID_SEGMENTS
:
4574 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4577 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4579 case GL_MAP1_NORMAL
:
4580 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4582 case GL_MAP1_TEXTURE_COORD_1
:
4583 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4585 case GL_MAP1_TEXTURE_COORD_2
:
4586 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4588 case GL_MAP1_TEXTURE_COORD_3
:
4589 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4591 case GL_MAP1_TEXTURE_COORD_4
:
4592 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4594 case GL_MAP1_VERTEX_3
:
4595 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4597 case GL_MAP1_VERTEX_4
:
4598 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4600 case GL_MAP2_COLOR_4
:
4601 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4603 case GL_MAP2_GRID_DOMAIN
:
4604 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4605 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4606 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4607 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4609 case GL_MAP2_GRID_SEGMENTS
:
4610 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4611 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4614 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4616 case GL_MAP2_NORMAL
:
4617 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4619 case GL_MAP2_TEXTURE_COORD_1
:
4620 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4622 case GL_MAP2_TEXTURE_COORD_2
:
4623 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4625 case GL_MAP2_TEXTURE_COORD_3
:
4626 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4628 case GL_MAP2_TEXTURE_COORD_4
:
4629 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4631 case GL_MAP2_VERTEX_3
:
4632 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4634 case GL_MAP2_VERTEX_4
:
4635 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4638 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4640 case GL_MAP_STENCIL
:
4641 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4643 case GL_MATRIX_MODE
:
4644 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4646 case GL_MAX_ATTRIB_STACK_DEPTH
:
4647 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4649 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4650 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4652 case GL_MAX_CLIP_PLANES
:
4653 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
4655 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4656 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4658 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4659 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4661 case GL_MAX_EVAL_ORDER
:
4662 *params
= (GLint
) MAX_EVAL_ORDER
;
4665 *params
= (GLint
) ctx
->Const
.MaxLights
;
4667 case GL_MAX_LIST_NESTING
:
4668 *params
= (GLint
) MAX_LIST_NESTING
;
4670 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4671 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4673 case GL_MAX_NAME_STACK_DEPTH
:
4674 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4676 case GL_MAX_PIXEL_MAP_TABLE
:
4677 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4679 case GL_MAX_PROJECTION_STACK_DEPTH
:
4680 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4682 case GL_MAX_TEXTURE_SIZE
:
4683 *params
= (1 << (ctx
->Const
.MaxTextureLevels
- 1));
4685 case GL_MAX_3D_TEXTURE_SIZE
:
4686 *params
= (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
4688 case GL_MAX_TEXTURE_STACK_DEPTH
:
4689 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4691 case GL_MAX_VIEWPORT_DIMS
:
4692 params
[0] = (GLint
) MAX_WIDTH
;
4693 params
[1] = (GLint
) MAX_HEIGHT
;
4695 case GL_MODELVIEW_MATRIX
:
4696 for (i
=0;i
<16;i
++) {
4697 params
[i
] = (GLint
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
4700 case GL_MODELVIEW_STACK_DEPTH
:
4701 *params
= (GLint
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
4703 case GL_NAME_STACK_DEPTH
:
4704 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4707 *params
= (GLint
) ctx
->Transform
.Normalize
;
4709 case GL_PACK_ALIGNMENT
:
4710 *params
= ctx
->Pack
.Alignment
;
4712 case GL_PACK_LSB_FIRST
:
4713 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4715 case GL_PACK_ROW_LENGTH
:
4716 *params
= ctx
->Pack
.RowLength
;
4718 case GL_PACK_SKIP_PIXELS
:
4719 *params
= ctx
->Pack
.SkipPixels
;
4721 case GL_PACK_SKIP_ROWS
:
4722 *params
= ctx
->Pack
.SkipRows
;
4724 case GL_PACK_SWAP_BYTES
:
4725 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4727 case GL_PACK_SKIP_IMAGES_EXT
:
4728 *params
= ctx
->Pack
.SkipImages
;
4730 case GL_PACK_IMAGE_HEIGHT_EXT
:
4731 *params
= ctx
->Pack
.ImageHeight
;
4733 case GL_PACK_INVERT_MESA
:
4734 *params
= ctx
->Pack
.Invert
;
4736 case GL_PERSPECTIVE_CORRECTION_HINT
:
4737 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4739 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4740 *params
= ctx
->Pixel
.MapAtoAsize
;
4742 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4743 *params
= ctx
->Pixel
.MapBtoBsize
;
4745 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4746 *params
= ctx
->Pixel
.MapGtoGsize
;
4748 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4749 *params
= ctx
->Pixel
.MapItoAsize
;
4751 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4752 *params
= ctx
->Pixel
.MapItoBsize
;
4754 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4755 *params
= ctx
->Pixel
.MapItoGsize
;
4757 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4758 *params
= ctx
->Pixel
.MapItoIsize
;
4760 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4761 *params
= ctx
->Pixel
.MapItoRsize
;
4763 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4764 *params
= ctx
->Pixel
.MapRtoRsize
;
4766 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4767 *params
= ctx
->Pixel
.MapStoSsize
;
4770 *params
= (GLint
) ctx
->Point
.Size
;
4772 case GL_POINT_SIZE_GRANULARITY
:
4773 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4775 case GL_POINT_SIZE_RANGE
:
4776 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4777 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4779 case GL_ALIASED_POINT_SIZE_RANGE
:
4780 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4781 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4783 case GL_POINT_SMOOTH
:
4784 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4786 case GL_POINT_SMOOTH_HINT
:
4787 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4789 case GL_POINT_SIZE_MIN_EXT
:
4790 *params
= (GLint
) (ctx
->Point
.MinSize
);
4792 case GL_POINT_SIZE_MAX_EXT
:
4793 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4795 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4796 *params
= (GLint
) (ctx
->Point
.Threshold
);
4798 case GL_DISTANCE_ATTENUATION_EXT
:
4799 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4800 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4801 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4803 case GL_POLYGON_MODE
:
4804 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4805 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4807 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4808 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4810 case GL_POLYGON_OFFSET_FACTOR
:
4811 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4813 case GL_POLYGON_OFFSET_UNITS
:
4814 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4816 case GL_POLYGON_SMOOTH
:
4817 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4819 case GL_POLYGON_SMOOTH_HINT
:
4820 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4822 case GL_POLYGON_STIPPLE
:
4823 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4825 case GL_PROJECTION_MATRIX
:
4826 for (i
=0;i
<16;i
++) {
4827 params
[i
] = (GLint
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
4830 case GL_PROJECTION_STACK_DEPTH
:
4831 *params
= (GLint
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
4833 case GL_READ_BUFFER
:
4834 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4837 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4840 *params
= (GLint
) ctx
->Visual
.redBits
;
4843 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4845 case GL_RENDER_MODE
:
4846 *params
= (GLint
) ctx
->RenderMode
;
4848 case GL_RESCALE_NORMAL
:
4849 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
4852 *params
= (GLint
) ctx
->Visual
.rgbMode
;
4854 case GL_SCISSOR_BOX
:
4855 params
[0] = (GLint
) ctx
->Scissor
.X
;
4856 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4857 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4858 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4860 case GL_SCISSOR_TEST
:
4861 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4863 case GL_SELECTION_BUFFER_SIZE
:
4864 *params
= (GLint
) ctx
->Select
.BufferSize
;
4866 case GL_SHADE_MODEL
:
4867 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4869 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4870 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4872 case GL_STENCIL_BITS
:
4873 *params
= ctx
->Visual
.stencilBits
;
4875 case GL_STENCIL_CLEAR_VALUE
:
4876 *params
= (GLint
) ctx
->Stencil
.Clear
;
4878 case GL_STENCIL_FAIL
:
4879 *params
= (GLint
) ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
];
4881 case GL_STENCIL_FUNC
:
4882 *params
= (GLint
) ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
];
4884 case GL_STENCIL_PASS_DEPTH_FAIL
:
4885 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
];
4887 case GL_STENCIL_PASS_DEPTH_PASS
:
4888 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
];
4890 case GL_STENCIL_REF
:
4891 *params
= (GLint
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
4893 case GL_STENCIL_TEST
:
4894 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4896 case GL_STENCIL_VALUE_MASK
:
4897 *params
= (GLint
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
4899 case GL_STENCIL_WRITEMASK
:
4900 *params
= (GLint
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
4903 *params
= (GLint
) ctx
->Visual
.stereoMode
;
4905 case GL_SUBPIXEL_BITS
:
4906 *params
= ctx
->Const
.SubPixelBits
;
4909 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4912 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4915 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4917 case GL_TEXTURE_BINDING_1D
:
4918 *params
= textureUnit
->Current1D
->Name
;
4920 case GL_TEXTURE_BINDING_2D
:
4921 *params
= textureUnit
->Current2D
->Name
;
4923 case GL_TEXTURE_BINDING_3D
:
4924 *params
= textureUnit
->Current3D
->Name
;
4926 case GL_TEXTURE_ENV_COLOR
:
4927 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4928 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4929 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4930 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4932 case GL_TEXTURE_ENV_MODE
:
4933 *params
= (GLint
) textureUnit
->EnvMode
;
4935 case GL_TEXTURE_GEN_S
:
4936 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4938 case GL_TEXTURE_GEN_T
:
4939 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4941 case GL_TEXTURE_GEN_R
:
4942 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4944 case GL_TEXTURE_GEN_Q
:
4945 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4947 case GL_TEXTURE_MATRIX
:
4948 for (i
=0;i
<16;i
++) {
4949 params
[i
] = (GLint
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
4952 case GL_TEXTURE_STACK_DEPTH
:
4953 *params
= (GLint
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
4955 case GL_UNPACK_ALIGNMENT
:
4956 *params
= ctx
->Unpack
.Alignment
;
4958 case GL_UNPACK_LSB_FIRST
:
4959 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4961 case GL_UNPACK_ROW_LENGTH
:
4962 *params
= ctx
->Unpack
.RowLength
;
4964 case GL_UNPACK_SKIP_PIXELS
:
4965 *params
= ctx
->Unpack
.SkipPixels
;
4967 case GL_UNPACK_SKIP_ROWS
:
4968 *params
= ctx
->Unpack
.SkipRows
;
4970 case GL_UNPACK_SWAP_BYTES
:
4971 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4973 case GL_UNPACK_SKIP_IMAGES_EXT
:
4974 *params
= ctx
->Unpack
.SkipImages
;
4976 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4977 *params
= ctx
->Unpack
.ImageHeight
;
4979 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
4980 *params
= ctx
->Unpack
.ClientStorage
;
4983 params
[0] = (GLint
) ctx
->Viewport
.X
;
4984 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4985 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4986 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4989 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4992 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4994 case GL_VERTEX_ARRAY
:
4995 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4997 case GL_VERTEX_ARRAY_SIZE
:
4998 *params
= ctx
->Array
.Vertex
.Size
;
5000 case GL_VERTEX_ARRAY_TYPE
:
5001 *params
= ctx
->Array
.Vertex
.Type
;
5003 case GL_VERTEX_ARRAY_STRIDE
:
5004 *params
= ctx
->Array
.Vertex
.Stride
;
5006 case GL_VERTEX_ARRAY_COUNT_EXT
:
5009 case GL_NORMAL_ARRAY
:
5010 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
5012 case GL_NORMAL_ARRAY_TYPE
:
5013 *params
= ctx
->Array
.Normal
.Type
;
5015 case GL_NORMAL_ARRAY_STRIDE
:
5016 *params
= ctx
->Array
.Normal
.Stride
;
5018 case GL_NORMAL_ARRAY_COUNT_EXT
:
5021 case GL_COLOR_ARRAY
:
5022 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
5024 case GL_COLOR_ARRAY_SIZE
:
5025 *params
= ctx
->Array
.Color
.Size
;
5027 case GL_COLOR_ARRAY_TYPE
:
5028 *params
= ctx
->Array
.Color
.Type
;
5030 case GL_COLOR_ARRAY_STRIDE
:
5031 *params
= ctx
->Array
.Color
.Stride
;
5033 case GL_COLOR_ARRAY_COUNT_EXT
:
5036 case GL_INDEX_ARRAY
:
5037 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
5039 case GL_INDEX_ARRAY_TYPE
:
5040 *params
= ctx
->Array
.Index
.Type
;
5042 case GL_INDEX_ARRAY_STRIDE
:
5043 *params
= ctx
->Array
.Index
.Stride
;
5045 case GL_INDEX_ARRAY_COUNT_EXT
:
5048 case GL_TEXTURE_COORD_ARRAY
:
5049 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
5051 case GL_TEXTURE_COORD_ARRAY_SIZE
:
5052 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
5054 case GL_TEXTURE_COORD_ARRAY_TYPE
:
5055 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
5057 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
5058 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
5060 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
5063 case GL_EDGE_FLAG_ARRAY
:
5064 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
5066 case GL_EDGE_FLAG_ARRAY_STRIDE
:
5067 *params
= ctx
->Array
.EdgeFlag
.Stride
;
5069 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
5073 /* GL_ARB_multitexture */
5074 case GL_MAX_TEXTURE_UNITS_ARB
:
5075 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5076 *params
= ctx
->Const
.MaxTextureUnits
;
5078 case GL_ACTIVE_TEXTURE_ARB
:
5079 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5080 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
5082 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
5083 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5084 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
5087 /* GL_ARB_texture_cube_map */
5088 case GL_TEXTURE_CUBE_MAP_ARB
:
5089 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5090 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
5092 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
5093 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5094 *params
= textureUnit
->CurrentCubeMap
->Name
;
5096 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
5097 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5098 *params
= (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
5101 /* GL_ARB_texture_compression */
5102 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
5103 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5104 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
5106 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
5107 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5108 *params
= (GLint
) _mesa_get_compressed_formats(ctx
, NULL
);
5110 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
5111 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5112 (void) _mesa_get_compressed_formats(ctx
, params
);
5115 /* GL_EXT_compiled_vertex_array */
5116 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
5117 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5118 *params
= ctx
->Array
.LockFirst
;
5120 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
5121 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5122 *params
= ctx
->Array
.LockCount
;
5125 /* GL_ARB_transpose_matrix */
5126 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
5130 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
5131 for (i
=0;i
<16;i
++) {
5132 params
[i
] = (GLint
) tm
[i
];
5136 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
5140 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
5141 for (i
=0;i
<16;i
++) {
5142 params
[i
] = (GLint
) tm
[i
];
5146 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
5150 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
5151 for (i
=0;i
<16;i
++) {
5152 params
[i
] = (GLint
) tm
[i
];
5156 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
5160 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
5161 for (i
=0;i
<16;i
++) {
5162 params
[i
] = (GLint
) tm
[i
];
5167 /* GL_HP_occlusion_test */
5168 case GL_OCCLUSION_TEST_HP
:
5169 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5170 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
5172 case GL_OCCLUSION_TEST_RESULT_HP
:
5173 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5174 if (ctx
->Depth
.OcclusionTest
)
5175 *params
= (GLint
) ctx
->OcclusionResult
;
5177 *params
= (GLint
) ctx
->OcclusionResultSaved
;
5178 /* reset flag now */
5179 ctx
->OcclusionResult
= GL_FALSE
;
5180 ctx
->OcclusionResultSaved
= GL_FALSE
;
5183 /* GL_SGIS_pixel_texture */
5184 case GL_PIXEL_TEXTURE_SGIS
:
5185 CHECK_EXTENSION_I(SGIS_pixel_texture
, pname
);
5186 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5189 /* GL_SGIX_pixel_texture */
5190 case GL_PIXEL_TEX_GEN_SGIX
:
5191 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5192 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5194 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
5195 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5196 *params
= (GLint
) pixel_texgen_mode(ctx
);
5199 /* GL_SGI_color_matrix (also in 1.2 imaging) */
5200 case GL_COLOR_MATRIX_SGI
:
5201 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5202 for (i
=0;i
<16;i
++) {
5203 params
[i
] = (GLint
) ctx
->ColorMatrixStack
.Top
->m
[i
];
5206 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5207 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5208 *params
= ctx
->ColorMatrixStack
.Depth
+ 1;
5210 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5211 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5212 *params
= MAX_COLOR_STACK_DEPTH
;
5214 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5215 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5216 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
5218 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5219 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5220 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
5222 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5223 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5224 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
5226 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5227 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5228 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
5230 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5231 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5232 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
5234 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5235 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5236 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
5238 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5239 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5240 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
5242 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5243 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5244 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
5247 /* GL_EXT_convolution (also in 1.2 imaging) */
5248 case GL_CONVOLUTION_1D_EXT
:
5249 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5250 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
5252 case GL_CONVOLUTION_2D
:
5253 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5254 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
5256 case GL_SEPARABLE_2D
:
5257 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5258 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
5260 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5261 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5262 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
5264 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5265 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5266 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
5268 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5269 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5270 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
5272 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5273 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5274 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
5276 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5277 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5278 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
5280 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5281 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5282 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
5284 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5285 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5286 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5288 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5289 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5290 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5293 /* GL_EXT_histogram (also in 1.2 imaging) */
5295 CHECK_EXTENSION_I(EXT_histogram
, pname
);
5296 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
5299 CHECK_EXTENSION_I(EXT_histogram
, pname
);
5300 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
5303 /* GL_SGI_color_table (also in 1.2 imaging */
5304 case GL_COLOR_TABLE_SGI
:
5305 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5306 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
5308 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5309 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5310 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
5312 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5313 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5314 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
5318 /* GL_EXT_secondary_color */
5319 case GL_COLOR_SUM_EXT
:
5320 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5321 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
5323 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5324 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5325 FLUSH_CURRENT(ctx
, 0);
5326 params
[0] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]) );
5327 params
[1] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]) );
5328 params
[2] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]) );
5330 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5331 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5332 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
5334 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5335 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5336 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
5338 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5339 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5340 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5342 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5343 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5344 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5347 /* GL_EXT_fog_coord */
5348 case GL_CURRENT_FOG_COORDINATE_EXT
:
5349 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5350 FLUSH_CURRENT(ctx
, 0);
5351 *params
= (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
5353 case GL_FOG_COORDINATE_ARRAY_EXT
:
5354 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5355 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
5357 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5358 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5359 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
5361 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5362 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5363 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
5366 /* GL_EXT_texture_lod_bias */
5367 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5368 *params
= (GLint
) ctx
->Const
.MaxTextureLodBias
;
5371 /* GL_EXT_texture_filter_anisotropic */
5372 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5373 CHECK_EXTENSION_I(EXT_texture_filter_anisotropic
, pname
);
5374 *params
= (GLint
) ctx
->Const
.MaxTextureMaxAnisotropy
;
5377 /* GL_ARB_multisample */
5378 case GL_MULTISAMPLE_ARB
:
5379 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5380 *params
= (GLint
) ctx
->Multisample
.Enabled
;
5382 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5383 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5384 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToCoverage
;
5386 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5387 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5388 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToOne
;
5390 case GL_SAMPLE_COVERAGE_ARB
:
5391 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5392 *params
= (GLint
) ctx
->Multisample
.SampleCoverage
;
5394 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5395 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5396 *params
= (GLint
) ctx
->Multisample
.SampleCoverageValue
;
5398 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5399 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5400 *params
= (GLint
) ctx
->Multisample
.SampleCoverageInvert
;
5402 case GL_SAMPLE_BUFFERS_ARB
:
5403 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5404 *params
= 0; /* XXX fix someday */
5406 case GL_SAMPLES_ARB
:
5407 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5408 *params
= 0; /* XXX fix someday */
5411 /* GL_IBM_rasterpos_clip */
5412 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5413 CHECK_EXTENSION_I(IBM_rasterpos_clip
, pname
);
5414 *params
= (GLint
) ctx
->Transform
.RasterPositionUnclipped
;
5417 /* GL_NV_point_sprite */
5418 case GL_POINT_SPRITE_NV
:
5419 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
5420 *params
= (GLint
) ctx
->Point
.PointSprite
;
5422 case GL_POINT_SPRITE_R_MODE_NV
:
5423 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
5424 *params
= (GLint
) ctx
->Point
.SpriteRMode
;
5427 /* GL_SGIS_generate_mipmap */
5428 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5429 CHECK_EXTENSION_I(SGIS_generate_mipmap
, pname
);
5430 *params
= (GLint
) ctx
->Hint
.GenerateMipmap
;
5433 #if FEATURE_NV_vertex_program
5434 case GL_VERTEX_PROGRAM_NV
:
5435 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5436 *params
= (GLint
) ctx
->VertexProgram
.Enabled
;
5438 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
5439 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5440 *params
= (GLint
) ctx
->VertexProgram
.PointSizeEnabled
;
5442 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
5443 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5444 *params
= (GLint
) ctx
->VertexProgram
.TwoSideEnabled
;
5446 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
5447 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5448 *params
= MAX_PROGRAM_STACK_DEPTH
;
5450 case GL_MAX_TRACK_MATRICES_NV
:
5451 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5452 *params
= MAX_PROGRAM_MATRICES
;
5454 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
5455 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5456 *params
= ctx
->CurrentStack
->Depth
;
5458 case GL_CURRENT_MATRIX_NV
:
5459 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5460 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
5462 case GL_VERTEX_PROGRAM_BINDING_NV
:
5463 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5464 *params
= (GLint
) ctx
->VertexProgram
.CurrentID
;
5466 case GL_PROGRAM_ERROR_POSITION_NV
:
5467 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5468 *params
= (GLint
) ctx
->VertexProgram
.ErrorPos
;
5470 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
5471 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
5472 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
5473 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
5474 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
5475 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
5476 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
5477 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
5478 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
5479 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
5480 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
5481 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
5482 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
5483 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
5484 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
5485 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
5486 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5488 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
5489 *params
= (GLint
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
5492 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
5493 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
5494 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
5495 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
5496 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
5497 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
5498 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
5499 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
5500 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
5501 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
5502 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
5503 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
5504 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
5505 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
5506 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
5507 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
5508 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
5510 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
5511 *params
= (GLint
) ctx
->Eval
.Map1Attrib
[n
];
5514 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
5515 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
5516 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
5517 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
5518 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
5519 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
5520 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
5521 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
5522 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
5523 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
5524 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
5525 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
5526 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
5527 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
5528 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
5529 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
5530 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
5532 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
5533 *params
= (GLint
) ctx
->Eval
.Map2Attrib
[n
];
5537 /* GL_NV_texture_rectangle */
5538 case GL_TEXTURE_RECTANGLE_NV
:
5539 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5540 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
5542 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
5543 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5544 *params
= (GLint
) textureUnit
->CurrentRect
->Name
;
5546 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
5547 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5548 *params
= (GLint
) ctx
->Const
.MaxTextureRectSize
;
5550 #endif /* FEATURE_NV_vertex_program */
5552 /* GL_EXT_stencil_two_side */
5553 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
5554 CHECK_EXTENSION_I(EXT_stencil_two_side
, pname
);
5555 *params
= (GLint
) ctx
->Stencil
.TestTwoSide
;
5557 case GL_ACTIVE_STENCIL_FACE_EXT
:
5558 CHECK_EXTENSION_I(EXT_stencil_two_side
, pname
);
5559 *params
= (GLint
) (ctx
->Stencil
.ActiveFace
? GL_FRONT
: GL_BACK
);
5563 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv(pname=0x%x)", pname
);
5570 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
5572 GET_CURRENT_CONTEXT(ctx
);
5573 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
5574 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5579 if (MESA_VERBOSE
& VERBOSE_API
)
5580 _mesa_debug(ctx
, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname
));
5582 if (ctx
->Driver
.GetPointerv
5583 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
5587 case GL_VERTEX_ARRAY_POINTER
:
5588 *params
= ctx
->Array
.Vertex
.Ptr
;
5590 case GL_NORMAL_ARRAY_POINTER
:
5591 *params
= ctx
->Array
.Normal
.Ptr
;
5593 case GL_COLOR_ARRAY_POINTER
:
5594 *params
= ctx
->Array
.Color
.Ptr
;
5596 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
5597 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
5599 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
5600 *params
= ctx
->Array
.FogCoord
.Ptr
;
5602 case GL_INDEX_ARRAY_POINTER
:
5603 *params
= ctx
->Array
.Index
.Ptr
;
5605 case GL_TEXTURE_COORD_ARRAY_POINTER
:
5606 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
5608 case GL_EDGE_FLAG_ARRAY_POINTER
:
5609 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
5611 case GL_FEEDBACK_BUFFER_POINTER
:
5612 *params
= ctx
->Feedback
.Buffer
;
5614 case GL_SELECTION_BUFFER_POINTER
:
5615 *params
= ctx
->Select
.Buffer
;
5618 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
5626 _mesa_GetString( GLenum name
)
5628 GET_CURRENT_CONTEXT(ctx
);
5629 static const char *vendor
= "Brian Paul";
5630 static const char *renderer
= "Mesa";
5631 static const char *version_1_2
= "1.2 Mesa 4.1";
5632 static const char *version_1_3
= "1.3 Mesa 4.1";
5633 static const char *version_1_4
= "1.3 Mesa 4.1"; /* change to 1.4 in 5.0 */
5635 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5637 /* this is a required driver function */
5638 assert(ctx
->Driver
.GetString
);
5640 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
5646 return (const GLubyte
*) vendor
;
5648 return (const GLubyte
*) renderer
;
5650 if (ctx
->Extensions
.ARB_multisample
&&
5651 ctx
->Extensions
.ARB_multitexture
&&
5652 ctx
->Extensions
.ARB_texture_border_clamp
&&
5653 ctx
->Extensions
.ARB_texture_compression
&&
5654 ctx
->Extensions
.ARB_texture_cube_map
&&
5655 ctx
->Extensions
.EXT_texture_env_add
&&
5656 ctx
->Extensions
.ARB_texture_env_combine
&&
5657 ctx
->Extensions
.ARB_texture_env_dot3
) {
5658 if (ctx
->Extensions
.ARB_depth_texture
&&
5659 ctx
->Extensions
.ARB_shadow
&&
5660 ctx
->Extensions
.ARB_texture_env_crossbar
&&
5661 ctx
->Extensions
.ARB_texture_mirrored_repeat
&&
5662 ctx
->Extensions
.ARB_window_pos
&&
5663 ctx
->Extensions
.EXT_blend_color
&&
5664 ctx
->Extensions
.EXT_blend_func_separate
&&
5665 ctx
->Extensions
.EXT_blend_logic_op
&&
5666 ctx
->Extensions
.EXT_blend_minmax
&&
5667 ctx
->Extensions
.EXT_blend_subtract
&&
5668 ctx
->Extensions
.EXT_fog_coord
&&
5669 ctx
->Extensions
.EXT_multi_draw_arrays
&&
5670 ctx
->Extensions
.EXT_point_parameters
&& /*aka ARB*/
5671 ctx
->Extensions
.EXT_secondary_color
&&
5672 ctx
->Extensions
.EXT_stencil_wrap
&&
5673 ctx
->Extensions
.SGIS_generate_mipmap
) {
5674 return (const GLubyte
*) version_1_4
;
5677 return (const GLubyte
*) version_1_3
;
5681 return (const GLubyte
*) version_1_2
;
5684 return (const GLubyte
*) _mesa_extensions_get_string(ctx
);
5686 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
5687 return (const GLubyte
*) 0;
5694 * Execute a glGetError command
5697 _mesa_GetError( void )
5699 GET_CURRENT_CONTEXT(ctx
);
5700 GLenum e
= ctx
->ErrorValue
;
5701 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5703 if (MESA_VERBOSE
& VERBOSE_API
)
5704 _mesa_debug(ctx
, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e
));
5706 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;