1 /* $Id: get.c,v 1.96 2002/10/16 17:57:52 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36 #include "extensions.h"
41 #include "texcompress.h"
42 #include "math/m_matrix.h"
47 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
48 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
49 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
52 /* Needed for an Amiga compiler */
53 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
54 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
56 /* all other compilers */
57 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
58 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
62 /* Check if named extension is enabled, if not generate error and return */
64 #define CHECK_EXTENSION_B(EXTNAME, PNAME) \
65 if (!ctx->Extensions.EXTNAME) { \
66 _mesa_error(ctx, GL_INVALID_VALUE, \
67 "glGetBooleanv(0x%x)", (int) PNAME); \
71 #define CHECK_EXTENSION_I(EXTNAME, PNAME) \
72 if (!ctx->Extensions.EXTNAME) { \
73 _mesa_error(ctx, GL_INVALID_VALUE, \
74 "glGetIntegerv(0x%x)", (int) PNAME); \
78 #define CHECK_EXTENSION_F(EXTNAME, PNAME) \
79 if (!ctx->Extensions.EXTNAME) { \
80 _mesa_error(ctx, GL_INVALID_VALUE, \
81 "glGetFloatv(0x%x)", (int) PNAME); \
85 #define CHECK_EXTENSION_D(EXTNAME, PNAME) \
86 if (!ctx->Extensions.EXTNAME) { \
87 _mesa_error(ctx, GL_INVALID_VALUE, \
88 "glGetDoublev(0x%x)", (int) PNAME); \
96 pixel_texgen_mode(const GLcontext
*ctx
)
98 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
99 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
107 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
118 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
120 GET_CURRENT_CONTEXT(ctx
);
122 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
123 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
124 ASSERT_OUTSIDE_BEGIN_END(ctx
);
129 /* We need this in order to get correct results for
130 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
132 FLUSH_VERTICES(ctx
, 0);
134 if (MESA_VERBOSE
& VERBOSE_API
)
135 _mesa_debug(ctx
, "glGetBooleanv %s\n", _mesa_lookup_enum_by_nr(pname
));
137 if (ctx
->Driver
.GetBooleanv
138 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
142 case GL_ACCUM_RED_BITS
:
143 *params
= INT_TO_BOOL(ctx
->Visual
.accumRedBits
);
145 case GL_ACCUM_GREEN_BITS
:
146 *params
= INT_TO_BOOL(ctx
->Visual
.accumGreenBits
);
148 case GL_ACCUM_BLUE_BITS
:
149 *params
= INT_TO_BOOL(ctx
->Visual
.accumBlueBits
);
151 case GL_ACCUM_ALPHA_BITS
:
152 *params
= INT_TO_BOOL(ctx
->Visual
.accumAlphaBits
);
154 case GL_ACCUM_CLEAR_VALUE
:
155 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
156 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
157 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
158 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
161 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
164 *params
= INT_TO_BOOL(ctx
->Visual
.alphaBits
);
167 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
170 *params
= ctx
->Color
.AlphaEnabled
;
172 case GL_ALPHA_TEST_FUNC
:
173 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
175 case GL_ALPHA_TEST_REF
:
176 *params
= ctx
->Color
.AlphaRef
? GL_TRUE
: GL_FALSE
;
178 case GL_ATTRIB_STACK_DEPTH
:
179 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
182 *params
= ctx
->Eval
.AutoNormal
;
185 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
188 *params
= ctx
->Color
.BlendEnabled
;
191 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
194 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
196 case GL_BLEND_SRC_RGB_EXT
:
197 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
199 case GL_BLEND_DST_RGB_EXT
:
200 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
202 case GL_BLEND_SRC_ALPHA_EXT
:
203 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
205 case GL_BLEND_DST_ALPHA_EXT
:
206 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
208 case GL_BLEND_EQUATION_EXT
:
209 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
211 case GL_BLEND_COLOR_EXT
:
212 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
213 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
214 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
215 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
218 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
221 *params
= INT_TO_BOOL( ctx
->Visual
.blueBits
);
224 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
226 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
227 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
235 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
240 case GL_COLOR_CLEAR_VALUE
:
241 params
[0] = ctx
->Color
.ClearColor
[0] ? GL_TRUE
: GL_FALSE
;
242 params
[1] = ctx
->Color
.ClearColor
[1] ? GL_TRUE
: GL_FALSE
;
243 params
[2] = ctx
->Color
.ClearColor
[2] ? GL_TRUE
: GL_FALSE
;
244 params
[3] = ctx
->Color
.ClearColor
[3] ? GL_TRUE
: GL_FALSE
;
246 case GL_COLOR_MATERIAL
:
247 *params
= ctx
->Light
.ColorMaterialEnabled
;
249 case GL_COLOR_MATERIAL_FACE
:
250 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
252 case GL_COLOR_MATERIAL_PARAMETER
:
253 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
255 case GL_COLOR_WRITEMASK
:
256 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
257 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
258 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
259 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
262 *params
= ctx
->Polygon
.CullFlag
;
264 case GL_CULL_FACE_MODE
:
265 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
267 case GL_CURRENT_COLOR
:
268 FLUSH_CURRENT(ctx
, 0);
269 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
270 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
271 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
272 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
274 case GL_CURRENT_INDEX
:
275 FLUSH_CURRENT(ctx
, 0);
276 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
278 case GL_CURRENT_NORMAL
:
279 FLUSH_CURRENT(ctx
, 0);
280 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
281 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
282 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
284 case GL_CURRENT_RASTER_COLOR
:
285 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
286 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
287 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
288 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
290 case GL_CURRENT_RASTER_DISTANCE
:
291 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
293 case GL_CURRENT_RASTER_INDEX
:
294 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
296 case GL_CURRENT_RASTER_POSITION
:
297 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
298 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
299 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
300 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
302 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
303 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][0]);
304 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][1]);
305 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][2]);
306 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][3]);
308 case GL_CURRENT_RASTER_POSITION_VALID
:
309 *params
= ctx
->Current
.RasterPosValid
;
311 case GL_CURRENT_TEXTURE_COORDS
:
312 FLUSH_CURRENT(ctx
, 0);
313 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0]);
314 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1]);
315 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2]);
316 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3]);
319 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
322 *params
= INT_TO_BOOL(ctx
->Visual
.depthBits
);
324 case GL_DEPTH_CLEAR_VALUE
:
325 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
328 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
331 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
332 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
335 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
338 *params
= ctx
->Depth
.Test
;
340 case GL_DEPTH_WRITEMASK
:
341 *params
= ctx
->Depth
.Mask
;
344 *params
= ctx
->Color
.DitherFlag
;
346 case GL_DOUBLEBUFFER
:
347 *params
= ctx
->Visual
.doubleBufferMode
;
350 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
353 FLUSH_CURRENT(ctx
, 0);
354 *params
= ctx
->Current
.EdgeFlag
;
356 case GL_FEEDBACK_BUFFER_SIZE
:
357 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
359 case GL_FEEDBACK_BUFFER_TYPE
:
360 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
363 *params
= ctx
->Fog
.Enabled
;
366 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
367 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
368 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
369 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
372 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
375 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
378 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
381 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
384 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
387 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
390 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
393 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
396 *params
= INT_TO_BOOL( ctx
->Visual
.greenBits
);
399 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
402 *params
= INT_TO_BOOL( ctx
->Visual
.indexBits
);
404 case GL_INDEX_CLEAR_VALUE
:
405 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
408 *params
= ctx
->Visual
.rgbMode
? GL_FALSE
: GL_TRUE
;
410 case GL_INDEX_OFFSET
:
411 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
414 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
416 case GL_INDEX_WRITEMASK
:
417 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
427 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
430 *params
= ctx
->Light
.Enabled
;
432 case GL_LIGHT_MODEL_AMBIENT
:
433 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
434 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
435 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
436 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
438 case GL_LIGHT_MODEL_COLOR_CONTROL
:
439 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
441 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
442 *params
= ctx
->Light
.Model
.LocalViewer
;
444 case GL_LIGHT_MODEL_TWO_SIDE
:
445 *params
= ctx
->Light
.Model
.TwoSide
;
448 *params
= ctx
->Line
.SmoothFlag
;
450 case GL_LINE_SMOOTH_HINT
:
451 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
453 case GL_LINE_STIPPLE
:
454 *params
= ctx
->Line
.StippleFlag
;
456 case GL_LINE_STIPPLE_PATTERN
:
457 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
459 case GL_LINE_STIPPLE_REPEAT
:
460 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
463 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
465 case GL_LINE_WIDTH_GRANULARITY
:
466 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
468 case GL_LINE_WIDTH_RANGE
:
469 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
470 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
472 case GL_ALIASED_LINE_WIDTH_RANGE
:
473 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
474 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
477 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
480 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
483 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
484 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
486 case GL_INDEX_LOGIC_OP
:
487 *params
= ctx
->Color
.IndexLogicOpEnabled
;
489 case GL_COLOR_LOGIC_OP
:
490 *params
= ctx
->Color
.ColorLogicOpEnabled
;
492 case GL_LOGIC_OP_MODE
:
493 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
495 case GL_MAP1_COLOR_4
:
496 *params
= ctx
->Eval
.Map1Color4
;
498 case GL_MAP1_GRID_DOMAIN
:
499 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
500 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
502 case GL_MAP1_GRID_SEGMENTS
:
503 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
506 *params
= ctx
->Eval
.Map1Index
;
509 *params
= ctx
->Eval
.Map1Normal
;
511 case GL_MAP1_TEXTURE_COORD_1
:
512 *params
= ctx
->Eval
.Map1TextureCoord1
;
514 case GL_MAP1_TEXTURE_COORD_2
:
515 *params
= ctx
->Eval
.Map1TextureCoord2
;
517 case GL_MAP1_TEXTURE_COORD_3
:
518 *params
= ctx
->Eval
.Map1TextureCoord3
;
520 case GL_MAP1_TEXTURE_COORD_4
:
521 *params
= ctx
->Eval
.Map1TextureCoord4
;
523 case GL_MAP1_VERTEX_3
:
524 *params
= ctx
->Eval
.Map1Vertex3
;
526 case GL_MAP1_VERTEX_4
:
527 *params
= ctx
->Eval
.Map1Vertex4
;
529 case GL_MAP2_COLOR_4
:
530 *params
= ctx
->Eval
.Map2Color4
;
532 case GL_MAP2_GRID_DOMAIN
:
533 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
534 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
535 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
536 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
538 case GL_MAP2_GRID_SEGMENTS
:
539 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
540 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
543 *params
= ctx
->Eval
.Map2Index
;
546 *params
= ctx
->Eval
.Map2Normal
;
548 case GL_MAP2_TEXTURE_COORD_1
:
549 *params
= ctx
->Eval
.Map2TextureCoord1
;
551 case GL_MAP2_TEXTURE_COORD_2
:
552 *params
= ctx
->Eval
.Map2TextureCoord2
;
554 case GL_MAP2_TEXTURE_COORD_3
:
555 *params
= ctx
->Eval
.Map2TextureCoord3
;
557 case GL_MAP2_TEXTURE_COORD_4
:
558 *params
= ctx
->Eval
.Map2TextureCoord4
;
560 case GL_MAP2_VERTEX_3
:
561 *params
= ctx
->Eval
.Map2Vertex3
;
563 case GL_MAP2_VERTEX_4
:
564 *params
= ctx
->Eval
.Map2Vertex4
;
567 *params
= ctx
->Pixel
.MapColorFlag
;
570 *params
= ctx
->Pixel
.MapStencilFlag
;
573 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
575 case GL_MAX_ATTRIB_STACK_DEPTH
:
576 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
578 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
579 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
581 case GL_MAX_CLIP_PLANES
:
582 *params
= INT_TO_BOOL(ctx
->Const
.MaxClipPlanes
);
584 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
585 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
587 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
588 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
590 case GL_MAX_EVAL_ORDER
:
591 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
594 *params
= INT_TO_BOOL(ctx
->Const
.MaxLights
);
596 case GL_MAX_LIST_NESTING
:
597 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
599 case GL_MAX_MODELVIEW_STACK_DEPTH
:
600 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
602 case GL_MAX_NAME_STACK_DEPTH
:
603 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
605 case GL_MAX_PIXEL_MAP_TABLE
:
606 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
608 case GL_MAX_PROJECTION_STACK_DEPTH
:
609 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
611 case GL_MAX_TEXTURE_SIZE
:
612 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxTextureLevels
- 1));
614 case GL_MAX_3D_TEXTURE_SIZE
:
615 *params
= INT_TO_BOOL(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
617 case GL_MAX_TEXTURE_STACK_DEPTH
:
618 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
620 case GL_MAX_VIEWPORT_DIMS
:
621 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
622 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
624 case GL_MODELVIEW_MATRIX
:
626 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelviewMatrixStack
.Top
->m
[i
]);
629 case GL_MODELVIEW_STACK_DEPTH
:
630 *params
= INT_TO_BOOL(ctx
->ModelviewMatrixStack
.Depth
+ 1);
632 case GL_NAME_STACK_DEPTH
:
633 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
636 *params
= ctx
->Transform
.Normalize
;
638 case GL_PACK_ALIGNMENT
:
639 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
641 case GL_PACK_LSB_FIRST
:
642 *params
= ctx
->Pack
.LsbFirst
;
644 case GL_PACK_ROW_LENGTH
:
645 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
647 case GL_PACK_SKIP_PIXELS
:
648 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
650 case GL_PACK_SKIP_ROWS
:
651 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
653 case GL_PACK_SWAP_BYTES
:
654 *params
= ctx
->Pack
.SwapBytes
;
656 case GL_PACK_SKIP_IMAGES_EXT
:
657 *params
= ctx
->Pack
.SkipImages
;
659 case GL_PACK_IMAGE_HEIGHT_EXT
:
660 *params
= ctx
->Pack
.ImageHeight
;
662 case GL_PACK_INVERT_MESA
:
663 *params
= ctx
->Pack
.Invert
;
665 case GL_PERSPECTIVE_CORRECTION_HINT
:
666 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
668 case GL_PIXEL_MAP_A_TO_A_SIZE
:
669 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
671 case GL_PIXEL_MAP_B_TO_B_SIZE
:
672 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
674 case GL_PIXEL_MAP_G_TO_G_SIZE
:
675 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
677 case GL_PIXEL_MAP_I_TO_A_SIZE
:
678 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
680 case GL_PIXEL_MAP_I_TO_B_SIZE
:
681 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
683 case GL_PIXEL_MAP_I_TO_G_SIZE
:
684 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
686 case GL_PIXEL_MAP_I_TO_I_SIZE
:
687 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
689 case GL_PIXEL_MAP_I_TO_R_SIZE
:
690 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
692 case GL_PIXEL_MAP_R_TO_R_SIZE
:
693 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
695 case GL_PIXEL_MAP_S_TO_S_SIZE
:
696 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
699 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
701 case GL_POINT_SIZE_GRANULARITY
:
702 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
704 case GL_POINT_SIZE_RANGE
:
705 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
706 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
708 case GL_ALIASED_POINT_SIZE_RANGE
:
709 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
710 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
712 case GL_POINT_SMOOTH
:
713 *params
= ctx
->Point
.SmoothFlag
;
715 case GL_POINT_SMOOTH_HINT
:
716 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
718 case GL_POINT_SIZE_MIN_EXT
:
719 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
721 case GL_POINT_SIZE_MAX_EXT
:
722 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
724 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
725 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
727 case GL_DISTANCE_ATTENUATION_EXT
:
728 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
729 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
730 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
732 case GL_POLYGON_MODE
:
733 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
734 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
736 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
737 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
739 case GL_POLYGON_OFFSET_FACTOR
:
740 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
742 case GL_POLYGON_OFFSET_UNITS
:
743 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
745 case GL_POLYGON_SMOOTH
:
746 *params
= ctx
->Polygon
.SmoothFlag
;
748 case GL_POLYGON_SMOOTH_HINT
:
749 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
751 case GL_POLYGON_STIPPLE
:
752 *params
= ctx
->Polygon
.StippleFlag
;
754 case GL_PROJECTION_MATRIX
:
756 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrixStack
.Top
->m
[i
]);
759 case GL_PROJECTION_STACK_DEPTH
:
760 *params
= INT_TO_BOOL(ctx
->ProjectionMatrixStack
.Depth
+ 1);
763 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
766 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
769 *params
= INT_TO_BOOL( ctx
->Visual
.redBits
);
772 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
775 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
777 case GL_RESCALE_NORMAL
:
778 *params
= ctx
->Transform
.RescaleNormals
;
781 *params
= ctx
->Visual
.rgbMode
;
784 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
785 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
786 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
787 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
789 case GL_SCISSOR_TEST
:
790 *params
= ctx
->Scissor
.Enabled
;
792 case GL_SELECTION_BUFFER_SIZE
:
793 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
796 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
798 case GL_SHARED_TEXTURE_PALETTE_EXT
:
799 *params
= ctx
->Texture
.SharedPalette
;
801 case GL_STENCIL_BITS
:
802 *params
= INT_TO_BOOL(ctx
->Visual
.stencilBits
);
804 case GL_STENCIL_CLEAR_VALUE
:
805 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
807 case GL_STENCIL_FAIL
:
808 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
810 case GL_STENCIL_FUNC
:
811 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
813 case GL_STENCIL_PASS_DEPTH_FAIL
:
814 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
816 case GL_STENCIL_PASS_DEPTH_PASS
:
817 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
820 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
822 case GL_STENCIL_TEST
:
823 *params
= ctx
->Stencil
.Enabled
;
825 case GL_STENCIL_VALUE_MASK
:
826 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
828 case GL_STENCIL_WRITEMASK
:
829 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
832 *params
= ctx
->Visual
.stereoMode
;
834 case GL_SUBPIXEL_BITS
:
835 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
838 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
841 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
844 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
846 case GL_TEXTURE_BINDING_1D
:
847 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
849 case GL_TEXTURE_BINDING_2D
:
850 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
852 case GL_TEXTURE_BINDING_3D
:
853 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
855 case GL_TEXTURE_ENV_COLOR
:
857 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
858 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
859 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
860 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
863 case GL_TEXTURE_ENV_MODE
:
864 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
866 case GL_TEXTURE_GEN_S
:
867 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
869 case GL_TEXTURE_GEN_T
:
870 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
872 case GL_TEXTURE_GEN_R
:
873 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
875 case GL_TEXTURE_GEN_Q
:
876 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
878 case GL_TEXTURE_MATRIX
:
881 FLOAT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
]);
884 case GL_TEXTURE_STACK_DEPTH
:
885 *params
= INT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
887 case GL_UNPACK_ALIGNMENT
:
888 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
890 case GL_UNPACK_LSB_FIRST
:
891 *params
= ctx
->Unpack
.LsbFirst
;
893 case GL_UNPACK_ROW_LENGTH
:
894 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
896 case GL_UNPACK_SKIP_PIXELS
:
897 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
899 case GL_UNPACK_SKIP_ROWS
:
900 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
902 case GL_UNPACK_SWAP_BYTES
:
903 *params
= ctx
->Unpack
.SwapBytes
;
905 case GL_UNPACK_SKIP_IMAGES_EXT
:
906 *params
= ctx
->Unpack
.SkipImages
;
908 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
909 *params
= ctx
->Unpack
.ImageHeight
;
911 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
912 *params
= ctx
->Unpack
.ClientStorage
;
915 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
916 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
917 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
918 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
921 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
924 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
926 case GL_VERTEX_ARRAY
:
927 *params
= ctx
->Array
.Vertex
.Enabled
;
929 case GL_VERTEX_ARRAY_SIZE
:
930 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
932 case GL_VERTEX_ARRAY_TYPE
:
933 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
935 case GL_VERTEX_ARRAY_STRIDE
:
936 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
938 case GL_VERTEX_ARRAY_COUNT_EXT
:
939 *params
= INT_TO_BOOL(0);
941 case GL_NORMAL_ARRAY
:
942 *params
= ctx
->Array
.Normal
.Enabled
;
944 case GL_NORMAL_ARRAY_TYPE
:
945 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
947 case GL_NORMAL_ARRAY_STRIDE
:
948 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
950 case GL_NORMAL_ARRAY_COUNT_EXT
:
951 *params
= INT_TO_BOOL(0);
954 *params
= ctx
->Array
.Color
.Enabled
;
956 case GL_COLOR_ARRAY_SIZE
:
957 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
959 case GL_COLOR_ARRAY_TYPE
:
960 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
962 case GL_COLOR_ARRAY_STRIDE
:
963 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
965 case GL_COLOR_ARRAY_COUNT_EXT
:
966 *params
= INT_TO_BOOL(0);
969 *params
= ctx
->Array
.Index
.Enabled
;
971 case GL_INDEX_ARRAY_TYPE
:
972 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
974 case GL_INDEX_ARRAY_STRIDE
:
975 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
977 case GL_INDEX_ARRAY_COUNT_EXT
:
978 *params
= INT_TO_BOOL(0);
980 case GL_TEXTURE_COORD_ARRAY
:
981 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
983 case GL_TEXTURE_COORD_ARRAY_SIZE
:
984 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
986 case GL_TEXTURE_COORD_ARRAY_TYPE
:
987 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
989 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
990 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
992 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
993 *params
= INT_TO_BOOL(0);
995 case GL_EDGE_FLAG_ARRAY
:
996 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
998 case GL_EDGE_FLAG_ARRAY_STRIDE
:
999 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
1001 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1002 *params
= INT_TO_BOOL(0);
1005 /* GL_ARB_multitexture */
1006 case GL_MAX_TEXTURE_UNITS_ARB
:
1007 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1008 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureUnits
);
1010 case GL_ACTIVE_TEXTURE_ARB
:
1011 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1012 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1014 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1015 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1016 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1019 /* GL_ARB_texture_cube_map */
1020 case GL_TEXTURE_CUBE_MAP_ARB
:
1021 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1022 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1024 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1025 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1026 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
1028 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1029 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1030 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
1033 /* GL_ARB_texture_compression */
1034 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1035 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1036 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1038 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1039 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1040 *params
= INT_TO_BOOL(_mesa_get_compressed_formats(ctx
, NULL
));
1042 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1043 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1047 n
= _mesa_get_compressed_formats(ctx
, formats
);
1048 for (i
= 0; i
< n
; i
++)
1049 params
[i
] = INT_TO_BOOL(formats
[i
]);
1053 /* GL_EXT_compiled_vertex_array */
1054 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1055 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1057 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1058 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1061 /* GL_ARB_transpose_matrix */
1062 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1066 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
1067 for (i
=0;i
<16;i
++) {
1068 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1072 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1076 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
1077 for (i
=0;i
<16;i
++) {
1078 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1082 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1086 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
1087 for (i
=0;i
<16;i
++) {
1088 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1092 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1096 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
1097 for (i
=0;i
<16;i
++) {
1098 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1103 /* GL_HP_occlusion_test */
1104 case GL_OCCLUSION_TEST_HP
:
1105 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1106 *params
= ctx
->Depth
.OcclusionTest
;
1108 case GL_OCCLUSION_TEST_RESULT_HP
:
1109 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1110 if (ctx
->Depth
.OcclusionTest
)
1111 *params
= ctx
->OcclusionResult
;
1113 *params
= ctx
->OcclusionResultSaved
;
1114 /* reset flag now */
1115 ctx
->OcclusionResult
= GL_FALSE
;
1116 ctx
->OcclusionResultSaved
= GL_FALSE
;
1119 /* GL_SGIS_pixel_texture */
1120 case GL_PIXEL_TEXTURE_SGIS
:
1121 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1124 /* GL_SGIX_pixel_texture */
1125 case GL_PIXEL_TEX_GEN_SGIX
:
1126 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1128 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1129 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1132 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1133 case GL_COLOR_MATRIX_SGI
:
1134 for (i
=0;i
<16;i
++) {
1135 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrixStack
.Top
->m
[i
]);
1138 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1139 *params
= INT_TO_BOOL(ctx
->ColorMatrixStack
.Depth
+ 1);
1141 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1142 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1144 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1145 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1147 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1148 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1150 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1151 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1153 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1154 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1156 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1157 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1159 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1160 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1162 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1163 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1165 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1166 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1169 /* GL_EXT_convolution (also in 1.2 imaging) */
1170 case GL_CONVOLUTION_1D_EXT
:
1171 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1172 *params
= ctx
->Pixel
.Convolution1DEnabled
;
1174 case GL_CONVOLUTION_2D
:
1175 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1176 *params
= ctx
->Pixel
.Convolution2DEnabled
;
1178 case GL_SEPARABLE_2D
:
1179 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1180 *params
= ctx
->Pixel
.Separable2DEnabled
;
1182 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1183 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1184 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1186 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1187 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1188 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1190 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1191 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1192 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1194 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1195 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1196 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1198 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1199 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1200 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1202 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1203 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1204 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1206 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1207 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1208 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1210 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1211 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1212 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1215 /* GL_EXT_histogram (also in 1.2 imaging) */
1217 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1218 *params
= ctx
->Pixel
.HistogramEnabled
;
1221 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1222 *params
= ctx
->Pixel
.MinMaxEnabled
;
1225 /* GL_SGI_color_table (also in 1.2 imaging */
1226 case GL_COLOR_TABLE_SGI
:
1227 *params
= ctx
->Pixel
.ColorTableEnabled
;
1229 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1230 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1232 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1233 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1236 /* GL_EXT_secondary_color */
1237 case GL_COLOR_SUM_EXT
:
1238 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1239 *params
= ctx
->Fog
.ColorSumEnabled
;
1241 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1242 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1243 FLUSH_CURRENT(ctx
, 0);
1244 params
[0] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1245 params
[1] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1246 params
[2] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1248 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1249 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1250 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1252 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1253 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1254 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1256 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1257 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1258 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1260 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1261 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1262 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1265 /* GL_EXT_fog_coord */
1266 case GL_CURRENT_FOG_COORDINATE_EXT
:
1267 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1268 FLUSH_CURRENT(ctx
, 0);
1269 *params
= FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1271 case GL_FOG_COORDINATE_ARRAY_EXT
:
1272 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1273 *params
= ctx
->Array
.FogCoord
.Enabled
;
1275 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1276 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1277 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1279 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1280 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1281 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1284 /* GL_EXT_texture_lod_bias */
1285 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1286 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureLodBias
);
1289 /* GL_EXT_texture_filter_anisotropic */
1290 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1291 CHECK_EXTENSION_B(EXT_texture_filter_anisotropic
, pname
);
1292 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureMaxAnisotropy
);
1295 /* GL_ARB_multisample */
1296 case GL_MULTISAMPLE_ARB
:
1297 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1298 *params
= ctx
->Multisample
.Enabled
;
1300 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1301 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1302 *params
= ctx
->Multisample
.SampleAlphaToCoverage
;
1304 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1305 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1306 *params
= ctx
->Multisample
.SampleAlphaToOne
;
1308 case GL_SAMPLE_COVERAGE_ARB
:
1309 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1310 *params
= ctx
->Multisample
.SampleCoverage
;
1312 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1313 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1314 *params
= FLOAT_TO_BOOL(ctx
->Multisample
.SampleCoverageValue
);
1316 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1317 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1318 *params
= ctx
->Multisample
.SampleCoverageInvert
;
1320 case GL_SAMPLE_BUFFERS_ARB
:
1321 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1322 *params
= 0; /* XXX fix someday */
1324 case GL_SAMPLES_ARB
:
1325 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1326 *params
= 0; /* XXX fix someday */
1329 /* GL_IBM_rasterpos_clip */
1330 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1331 CHECK_EXTENSION_B(IBM_rasterpos_clip
, pname
);
1332 *params
= ctx
->Transform
.RasterPositionUnclipped
;
1335 /* GL_NV_point_sprite */
1336 case GL_POINT_SPRITE_NV
:
1337 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
1338 *params
= ctx
->Point
.PointSprite
;
1340 case GL_POINT_SPRITE_R_MODE_NV
:
1341 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
1342 *params
= ENUM_TO_BOOL(ctx
->Point
.SpriteRMode
);
1345 /* GL_SGIS_generate_mipmap */
1346 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1347 CHECK_EXTENSION_B(SGIS_generate_mipmap
, pname
);
1348 *params
= ENUM_TO_BOOL(ctx
->Hint
.GenerateMipmap
);
1351 #if FEATURE_NV_vertex_program
1352 case GL_VERTEX_PROGRAM_NV
:
1353 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1354 *params
= ctx
->VertexProgram
.Enabled
;
1356 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
1357 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1358 *params
= ctx
->VertexProgram
.PointSizeEnabled
;
1360 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
1361 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1362 *params
= ctx
->VertexProgram
.TwoSideEnabled
;
1364 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
1365 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1366 *params
= (MAX_PROGRAM_STACK_DEPTH
> 0) ? GL_TRUE
: GL_FALSE
;
1368 case GL_MAX_TRACK_MATRICES_NV
:
1369 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1370 *params
= (MAX_PROGRAM_MATRICES
> 0) ? GL_TRUE
: GL_FALSE
;
1372 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
1373 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1374 *params
= (ctx
->CurrentStack
->Depth
> 0) ? GL_TRUE
: GL_FALSE
;
1376 case GL_CURRENT_MATRIX_NV
:
1377 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1378 *params
= (ctx
->Transform
.MatrixMode
!= 0) ? GL_TRUE
: GL_FALSE
;
1380 case GL_VERTEX_PROGRAM_BINDING_NV
:
1381 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1382 *params
= (ctx
->VertexProgram
.CurrentID
!= 0) ? GL_TRUE
: GL_FALSE
;
1384 case GL_PROGRAM_ERROR_POSITION_NV
:
1385 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1386 *params
= (ctx
->VertexProgram
.ErrorPos
!= 0) ? GL_TRUE
: GL_FALSE
;
1388 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1389 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1390 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1391 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1392 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1393 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1394 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1395 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1396 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1397 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1398 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1399 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1400 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1401 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1402 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1403 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1404 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1406 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
1407 *params
= ctx
->Array
.VertexAttrib
[n
].Enabled
;
1410 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1411 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1412 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1413 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1414 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1415 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1416 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1417 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1418 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1419 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1420 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1421 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1422 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1423 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1424 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1425 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1426 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1428 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
1429 *params
= ctx
->Eval
.Map1Attrib
[n
];
1432 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
1433 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
1434 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
1435 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
1436 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
1437 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
1438 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
1439 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
1440 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
1441 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
1442 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
1443 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
1444 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
1445 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
1446 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
1447 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
1448 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1450 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
1451 *params
= ctx
->Eval
.Map2Attrib
[n
];
1454 #endif /* FEATURE_NV_vertex_program */
1456 /* GL_NV_texture_rectangle */
1457 case GL_TEXTURE_RECTANGLE_NV
:
1458 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1459 *params
= _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1461 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1462 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1463 *params
= INT_TO_BOOL(textureUnit
->CurrentRect
->Name
);
1465 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1466 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1467 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureRectSize
);
1470 /* GL_EXT_stencil_two_side */
1471 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
1472 CHECK_EXTENSION_B(EXT_stencil_two_side
, pname
);
1473 *params
= ctx
->Stencil
.TestTwoSide
;
1475 case GL_ACTIVE_STENCIL_FACE_EXT
:
1476 CHECK_EXTENSION_B(EXT_stencil_two_side
, pname
);
1477 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ActiveFace
? GL_FRONT
: GL_BACK
);
1481 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv(pname=0x%x)", pname
);
1487 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1489 GET_CURRENT_CONTEXT(ctx
);
1491 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1492 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1493 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1498 /* We need this in order to get correct results for
1499 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
1501 FLUSH_VERTICES(ctx
, 0);
1503 if (MESA_VERBOSE
& VERBOSE_API
)
1504 _mesa_debug(ctx
, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname
));
1506 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1510 case GL_ACCUM_RED_BITS
:
1511 *params
= (GLdouble
) ctx
->Visual
.accumRedBits
;
1513 case GL_ACCUM_GREEN_BITS
:
1514 *params
= (GLdouble
) ctx
->Visual
.accumGreenBits
;
1516 case GL_ACCUM_BLUE_BITS
:
1517 *params
= (GLdouble
) ctx
->Visual
.accumBlueBits
;
1519 case GL_ACCUM_ALPHA_BITS
:
1520 *params
= (GLdouble
) ctx
->Visual
.accumAlphaBits
;
1522 case GL_ACCUM_CLEAR_VALUE
:
1523 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1524 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1525 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1526 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1529 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1532 *params
= (GLdouble
) ctx
->Visual
.alphaBits
;
1534 case GL_ALPHA_SCALE
:
1535 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1538 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1540 case GL_ALPHA_TEST_FUNC
:
1541 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1543 case GL_ALPHA_TEST_REF
:
1544 *params
= (GLdouble
) ctx
->Color
.AlphaRef
;
1546 case GL_ATTRIB_STACK_DEPTH
:
1547 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1549 case GL_AUTO_NORMAL
:
1550 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1552 case GL_AUX_BUFFERS
:
1553 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1556 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1559 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1562 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1564 case GL_BLEND_SRC_RGB_EXT
:
1565 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1567 case GL_BLEND_DST_RGB_EXT
:
1568 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1570 case GL_BLEND_SRC_ALPHA_EXT
:
1571 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1573 case GL_BLEND_DST_ALPHA_EXT
:
1574 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1576 case GL_BLEND_EQUATION_EXT
:
1577 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1579 case GL_BLEND_COLOR_EXT
:
1580 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1581 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1582 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1583 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1586 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1589 *params
= (GLdouble
) ctx
->Visual
.blueBits
;
1592 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1594 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1595 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1597 case GL_CLIP_PLANE0
:
1598 case GL_CLIP_PLANE1
:
1599 case GL_CLIP_PLANE2
:
1600 case GL_CLIP_PLANE3
:
1601 case GL_CLIP_PLANE4
:
1602 case GL_CLIP_PLANE5
:
1603 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
1608 case GL_COLOR_CLEAR_VALUE
:
1609 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1610 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1611 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1612 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1614 case GL_COLOR_MATERIAL
:
1615 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1617 case GL_COLOR_MATERIAL_FACE
:
1618 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1620 case GL_COLOR_MATERIAL_PARAMETER
:
1621 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1623 case GL_COLOR_WRITEMASK
:
1624 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1625 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1626 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1627 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1630 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1632 case GL_CULL_FACE_MODE
:
1633 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1635 case GL_CURRENT_COLOR
:
1636 FLUSH_CURRENT(ctx
, 0);
1637 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
1638 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
1639 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
1640 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
1642 case GL_CURRENT_INDEX
:
1643 FLUSH_CURRENT(ctx
, 0);
1644 *params
= (GLdouble
) ctx
->Current
.Index
;
1646 case GL_CURRENT_NORMAL
:
1647 FLUSH_CURRENT(ctx
, 0);
1648 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
1649 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
1650 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
1652 case GL_CURRENT_RASTER_COLOR
:
1653 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1654 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1655 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1656 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1658 case GL_CURRENT_RASTER_DISTANCE
:
1659 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1661 case GL_CURRENT_RASTER_INDEX
:
1662 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1664 case GL_CURRENT_RASTER_POSITION
:
1665 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1666 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1667 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1668 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1670 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1671 params
[0] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
1672 params
[1] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
1673 params
[2] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
1674 params
[3] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
1676 case GL_CURRENT_RASTER_POSITION_VALID
:
1677 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1679 case GL_CURRENT_TEXTURE_COORDS
:
1680 FLUSH_CURRENT(ctx
, 0);
1681 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
1682 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
1683 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
1684 params
[3] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
1687 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1690 *params
= (GLdouble
) ctx
->Visual
.depthBits
;
1692 case GL_DEPTH_CLEAR_VALUE
:
1693 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1696 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1698 case GL_DEPTH_RANGE
:
1699 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1700 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1702 case GL_DEPTH_SCALE
:
1703 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1706 *params
= (GLdouble
) ctx
->Depth
.Test
;
1708 case GL_DEPTH_WRITEMASK
:
1709 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1712 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1714 case GL_DOUBLEBUFFER
:
1715 *params
= (GLdouble
) ctx
->Visual
.doubleBufferMode
;
1717 case GL_DRAW_BUFFER
:
1718 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1721 FLUSH_CURRENT(ctx
, 0);
1722 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1724 case GL_FEEDBACK_BUFFER_SIZE
:
1725 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1727 case GL_FEEDBACK_BUFFER_TYPE
:
1728 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1731 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1734 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1735 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1736 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1737 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1739 case GL_FOG_DENSITY
:
1740 *params
= (GLdouble
) ctx
->Fog
.Density
;
1743 *params
= (GLdouble
) ctx
->Fog
.End
;
1746 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1749 *params
= (GLdouble
) ctx
->Fog
.Index
;
1752 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1755 *params
= (GLdouble
) ctx
->Fog
.Start
;
1758 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1761 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1764 *params
= (GLdouble
) ctx
->Visual
.greenBits
;
1766 case GL_GREEN_SCALE
:
1767 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1770 *params
= (GLdouble
) ctx
->Visual
.indexBits
;
1772 case GL_INDEX_CLEAR_VALUE
:
1773 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1776 *params
= ctx
->Visual
.rgbMode
? 0.0 : 1.0;
1778 case GL_INDEX_OFFSET
:
1779 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1781 case GL_INDEX_SHIFT
:
1782 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1784 case GL_INDEX_WRITEMASK
:
1785 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1795 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1798 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1800 case GL_LIGHT_MODEL_AMBIENT
:
1801 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1802 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1803 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1804 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1806 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1807 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1809 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1810 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1812 case GL_LIGHT_MODEL_TWO_SIDE
:
1813 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1815 case GL_LINE_SMOOTH
:
1816 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1818 case GL_LINE_SMOOTH_HINT
:
1819 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1821 case GL_LINE_STIPPLE
:
1822 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1824 case GL_LINE_STIPPLE_PATTERN
:
1825 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1827 case GL_LINE_STIPPLE_REPEAT
:
1828 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1831 *params
= (GLdouble
) ctx
->Line
.Width
;
1833 case GL_LINE_WIDTH_GRANULARITY
:
1834 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1836 case GL_LINE_WIDTH_RANGE
:
1837 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1838 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1840 case GL_ALIASED_LINE_WIDTH_RANGE
:
1841 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1842 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1845 *params
= (GLdouble
) ctx
->List
.ListBase
;
1848 *params
= (GLdouble
) ctx
->CurrentListNum
;
1851 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1852 : ENUM_TO_DOUBLE(GL_COMPILE
);
1854 case GL_INDEX_LOGIC_OP
:
1855 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1857 case GL_COLOR_LOGIC_OP
:
1858 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1860 case GL_LOGIC_OP_MODE
:
1861 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1863 case GL_MAP1_COLOR_4
:
1864 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1866 case GL_MAP1_GRID_DOMAIN
:
1867 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1868 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1870 case GL_MAP1_GRID_SEGMENTS
:
1871 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1874 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1876 case GL_MAP1_NORMAL
:
1877 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1879 case GL_MAP1_TEXTURE_COORD_1
:
1880 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1882 case GL_MAP1_TEXTURE_COORD_2
:
1883 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1885 case GL_MAP1_TEXTURE_COORD_3
:
1886 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1888 case GL_MAP1_TEXTURE_COORD_4
:
1889 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1891 case GL_MAP1_VERTEX_3
:
1892 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1894 case GL_MAP1_VERTEX_4
:
1895 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1897 case GL_MAP2_COLOR_4
:
1898 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1900 case GL_MAP2_GRID_DOMAIN
:
1901 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1902 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1903 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1904 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1906 case GL_MAP2_GRID_SEGMENTS
:
1907 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1908 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1911 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1913 case GL_MAP2_NORMAL
:
1914 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1916 case GL_MAP2_TEXTURE_COORD_1
:
1917 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1919 case GL_MAP2_TEXTURE_COORD_2
:
1920 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1922 case GL_MAP2_TEXTURE_COORD_3
:
1923 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1925 case GL_MAP2_TEXTURE_COORD_4
:
1926 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1928 case GL_MAP2_VERTEX_3
:
1929 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1931 case GL_MAP2_VERTEX_4
:
1932 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1935 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1937 case GL_MAP_STENCIL
:
1938 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1940 case GL_MATRIX_MODE
:
1941 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1943 case GL_MAX_ATTRIB_STACK_DEPTH
:
1944 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1946 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1947 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1949 case GL_MAX_CLIP_PLANES
:
1950 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
1952 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1953 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1955 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1956 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1958 case GL_MAX_EVAL_ORDER
:
1959 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1962 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
1964 case GL_MAX_LIST_NESTING
:
1965 *params
= (GLdouble
) MAX_LIST_NESTING
;
1967 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1968 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1970 case GL_MAX_NAME_STACK_DEPTH
:
1971 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1973 case GL_MAX_PIXEL_MAP_TABLE
:
1974 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1976 case GL_MAX_PROJECTION_STACK_DEPTH
:
1977 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1979 case GL_MAX_TEXTURE_SIZE
:
1980 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
1982 case GL_MAX_3D_TEXTURE_SIZE
:
1983 *params
= (GLdouble
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
1985 case GL_MAX_TEXTURE_STACK_DEPTH
:
1986 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1988 case GL_MAX_VIEWPORT_DIMS
:
1989 params
[0] = (GLdouble
) MAX_WIDTH
;
1990 params
[1] = (GLdouble
) MAX_HEIGHT
;
1992 case GL_MODELVIEW_MATRIX
:
1993 for (i
=0;i
<16;i
++) {
1994 params
[i
] = (GLdouble
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
1997 case GL_MODELVIEW_STACK_DEPTH
:
1998 *params
= (GLdouble
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
2000 case GL_NAME_STACK_DEPTH
:
2001 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
2004 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
2006 case GL_PACK_ALIGNMENT
:
2007 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
2009 case GL_PACK_LSB_FIRST
:
2010 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
2012 case GL_PACK_ROW_LENGTH
:
2013 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
2015 case GL_PACK_SKIP_PIXELS
:
2016 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
2018 case GL_PACK_SKIP_ROWS
:
2019 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
2021 case GL_PACK_SWAP_BYTES
:
2022 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
2024 case GL_PACK_SKIP_IMAGES_EXT
:
2025 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
2027 case GL_PACK_IMAGE_HEIGHT_EXT
:
2028 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
2030 case GL_PACK_INVERT_MESA
:
2031 *params
= (GLdouble
) ctx
->Pack
.Invert
;
2033 case GL_PERSPECTIVE_CORRECTION_HINT
:
2034 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
2036 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2037 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
2039 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2040 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
2042 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2043 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
2045 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2046 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
2048 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2049 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
2051 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2052 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
2054 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2055 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
2057 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2058 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
2060 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2061 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
2063 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2064 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
2067 *params
= (GLdouble
) ctx
->Point
.Size
;
2069 case GL_POINT_SIZE_GRANULARITY
:
2070 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
2072 case GL_POINT_SIZE_RANGE
:
2073 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
2074 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
2076 case GL_ALIASED_POINT_SIZE_RANGE
:
2077 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
2078 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
2080 case GL_POINT_SMOOTH
:
2081 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
2083 case GL_POINT_SMOOTH_HINT
:
2084 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
2086 case GL_POINT_SIZE_MIN_EXT
:
2087 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
2089 case GL_POINT_SIZE_MAX_EXT
:
2090 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
2092 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2093 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
2095 case GL_DISTANCE_ATTENUATION_EXT
:
2096 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
2097 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
2098 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
2100 case GL_POLYGON_MODE
:
2101 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
2102 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
2104 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
2105 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2107 case GL_POLYGON_OFFSET_FACTOR
:
2108 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
2110 case GL_POLYGON_OFFSET_UNITS
:
2111 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2113 case GL_POLYGON_SMOOTH
:
2114 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
2116 case GL_POLYGON_SMOOTH_HINT
:
2117 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
2119 case GL_POLYGON_STIPPLE
:
2120 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
2122 case GL_PROJECTION_MATRIX
:
2123 for (i
=0;i
<16;i
++) {
2124 params
[i
] = (GLdouble
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
2127 case GL_PROJECTION_STACK_DEPTH
:
2128 *params
= (GLdouble
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
2130 case GL_READ_BUFFER
:
2131 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
2134 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
2137 *params
= (GLdouble
) ctx
->Visual
.redBits
;
2140 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
2142 case GL_RENDER_MODE
:
2143 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
2145 case GL_RESCALE_NORMAL
:
2146 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
2149 *params
= (GLdouble
) ctx
->Visual
.rgbMode
;
2151 case GL_SCISSOR_BOX
:
2152 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
2153 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
2154 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
2155 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
2157 case GL_SCISSOR_TEST
:
2158 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
2160 case GL_SELECTION_BUFFER_SIZE
:
2161 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
2163 case GL_SHADE_MODEL
:
2164 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
2166 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2167 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
2169 case GL_STENCIL_BITS
:
2170 *params
= (GLdouble
) ctx
->Visual
.stencilBits
;
2172 case GL_STENCIL_CLEAR_VALUE
:
2173 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
2175 case GL_STENCIL_FAIL
:
2176 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
2178 case GL_STENCIL_FUNC
:
2179 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
2181 case GL_STENCIL_PASS_DEPTH_FAIL
:
2182 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
2184 case GL_STENCIL_PASS_DEPTH_PASS
:
2185 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
2187 case GL_STENCIL_REF
:
2188 *params
= (GLdouble
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
2190 case GL_STENCIL_TEST
:
2191 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2193 case GL_STENCIL_VALUE_MASK
:
2194 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
2196 case GL_STENCIL_WRITEMASK
:
2197 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
2200 *params
= (GLdouble
) ctx
->Visual
.stereoMode
;
2202 case GL_SUBPIXEL_BITS
:
2203 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2206 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2209 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2212 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2214 case GL_TEXTURE_BINDING_1D
:
2215 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2217 case GL_TEXTURE_BINDING_2D
:
2218 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2220 case GL_TEXTURE_BINDING_3D
:
2221 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2223 case GL_TEXTURE_ENV_COLOR
:
2224 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2225 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2226 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2227 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2229 case GL_TEXTURE_ENV_MODE
:
2230 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2232 case GL_TEXTURE_GEN_S
:
2233 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2235 case GL_TEXTURE_GEN_T
:
2236 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2238 case GL_TEXTURE_GEN_R
:
2239 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2241 case GL_TEXTURE_GEN_Q
:
2242 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2244 case GL_TEXTURE_MATRIX
:
2245 for (i
=0;i
<16;i
++) {
2246 params
[i
] = (GLdouble
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
2249 case GL_TEXTURE_STACK_DEPTH
:
2250 *params
= (GLdouble
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
2252 case GL_UNPACK_ALIGNMENT
:
2253 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2255 case GL_UNPACK_LSB_FIRST
:
2256 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2258 case GL_UNPACK_ROW_LENGTH
:
2259 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2261 case GL_UNPACK_SKIP_PIXELS
:
2262 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2264 case GL_UNPACK_SKIP_ROWS
:
2265 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2267 case GL_UNPACK_SWAP_BYTES
:
2268 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2270 case GL_UNPACK_SKIP_IMAGES_EXT
:
2271 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2273 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2274 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2276 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
2277 *params
= (GLdouble
) ctx
->Unpack
.ClientStorage
;
2280 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2281 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2282 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2283 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2286 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2289 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2291 case GL_VERTEX_ARRAY
:
2292 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2294 case GL_VERTEX_ARRAY_SIZE
:
2295 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2297 case GL_VERTEX_ARRAY_TYPE
:
2298 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2300 case GL_VERTEX_ARRAY_STRIDE
:
2301 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2303 case GL_VERTEX_ARRAY_COUNT_EXT
:
2306 case GL_NORMAL_ARRAY
:
2307 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2309 case GL_NORMAL_ARRAY_TYPE
:
2310 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2312 case GL_NORMAL_ARRAY_STRIDE
:
2313 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2315 case GL_NORMAL_ARRAY_COUNT_EXT
:
2318 case GL_COLOR_ARRAY
:
2319 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2321 case GL_COLOR_ARRAY_SIZE
:
2322 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2324 case GL_COLOR_ARRAY_TYPE
:
2325 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2327 case GL_COLOR_ARRAY_STRIDE
:
2328 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2330 case GL_COLOR_ARRAY_COUNT_EXT
:
2333 case GL_INDEX_ARRAY
:
2334 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2336 case GL_INDEX_ARRAY_TYPE
:
2337 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2339 case GL_INDEX_ARRAY_STRIDE
:
2340 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2342 case GL_INDEX_ARRAY_COUNT_EXT
:
2345 case GL_TEXTURE_COORD_ARRAY
:
2346 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2348 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2349 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2351 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2352 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2354 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2355 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2357 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2360 case GL_EDGE_FLAG_ARRAY
:
2361 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2363 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2364 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2366 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2370 /* GL_ARB_multitexture */
2371 case GL_MAX_TEXTURE_UNITS_ARB
:
2372 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2373 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2375 case GL_ACTIVE_TEXTURE_ARB
:
2376 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2377 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2379 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2380 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2381 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2384 /* GL_ARB_texture_cube_map */
2385 case GL_TEXTURE_CUBE_MAP_ARB
:
2386 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2387 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2389 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2390 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2391 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2393 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2394 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2395 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
2398 /* GL_ARB_texture_compression */
2399 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2400 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2401 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2403 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2404 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2405 *params
= (GLdouble
) _mesa_get_compressed_formats(ctx
, NULL
);
2407 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2408 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2412 n
= _mesa_get_compressed_formats(ctx
, formats
);
2413 for (i
= 0; i
< n
; i
++)
2414 params
[i
] = (GLdouble
) formats
[i
];
2418 /* GL_EXT_compiled_vertex_array */
2419 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2420 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2422 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2423 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2426 /* GL_ARB_transpose_matrix */
2427 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2431 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
2432 for (i
=0;i
<16;i
++) {
2433 params
[i
] = (GLdouble
) tm
[i
];
2437 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2441 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
2442 for (i
=0;i
<16;i
++) {
2443 params
[i
] = (GLdouble
) tm
[i
];
2447 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2451 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
2452 for (i
=0;i
<16;i
++) {
2453 params
[i
] = (GLdouble
) tm
[i
];
2457 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2461 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
2462 for (i
=0;i
<16;i
++) {
2463 params
[i
] = (GLdouble
) tm
[i
];
2468 /* GL_HP_occlusion_test */
2469 case GL_OCCLUSION_TEST_HP
:
2470 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2471 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2473 case GL_OCCLUSION_TEST_RESULT_HP
:
2474 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2475 if (ctx
->Depth
.OcclusionTest
)
2476 *params
= (GLdouble
) ctx
->OcclusionResult
;
2478 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2479 /* reset flag now */
2480 ctx
->OcclusionResult
= GL_FALSE
;
2481 ctx
->OcclusionResultSaved
= GL_FALSE
;
2484 /* GL_SGIS_pixel_texture */
2485 case GL_PIXEL_TEXTURE_SGIS
:
2486 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2489 /* GL_SGIX_pixel_texture */
2490 case GL_PIXEL_TEX_GEN_SGIX
:
2491 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2493 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2494 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2497 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2498 case GL_COLOR_MATRIX_SGI
:
2499 for (i
=0;i
<16;i
++) {
2500 params
[i
] = (GLdouble
) ctx
->ColorMatrixStack
.Top
->m
[i
];
2503 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2504 *params
= (GLdouble
) (ctx
->ColorMatrixStack
.Depth
+ 1);
2506 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2507 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2509 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2510 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2512 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2513 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2515 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2516 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2518 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2519 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2521 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2522 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2524 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2525 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2527 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2528 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2530 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2531 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2534 /* GL_EXT_convolution (also in 1.2 imaging) */
2535 case GL_CONVOLUTION_1D_EXT
:
2536 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2537 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2539 case GL_CONVOLUTION_2D
:
2540 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2541 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2543 case GL_SEPARABLE_2D
:
2544 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2545 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2547 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2548 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2549 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2551 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2552 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2553 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2555 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2556 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2557 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2559 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2560 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2561 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2563 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2564 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2565 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2567 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2568 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2569 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2571 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2572 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2573 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2575 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2576 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2577 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2580 /* GL_EXT_histogram (also in 1.2 imaging) */
2582 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2583 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
2586 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2587 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
2590 /* GL_SGI_color_table (also in 1.2 imaging */
2591 case GL_COLOR_TABLE_SGI
:
2592 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2594 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2595 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2597 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2598 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2601 /* GL_EXT_secondary_color */
2602 case GL_COLOR_SUM_EXT
:
2603 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2604 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2606 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2607 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2608 FLUSH_CURRENT(ctx
, 0);
2609 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
2610 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
2611 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
2613 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2614 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2615 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2617 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2618 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2619 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2621 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2622 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2623 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2625 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2626 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2627 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2630 /* GL_EXT_fog_coord */
2631 case GL_CURRENT_FOG_COORDINATE_EXT
:
2632 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2633 FLUSH_CURRENT(ctx
, 0);
2634 *params
= (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
2636 case GL_FOG_COORDINATE_ARRAY_EXT
:
2637 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2638 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2640 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2641 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2642 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2644 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2645 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2646 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2649 /* GL_EXT_texture_lod_bias */
2650 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
2651 *params
= (GLdouble
) ctx
->Const
.MaxTextureLodBias
;
2654 /* GL_EXT_texture_filter_anisotropic */
2655 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
2656 CHECK_EXTENSION_D(EXT_texture_filter_anisotropic
, pname
);
2657 *params
= (GLdouble
) ctx
->Const
.MaxTextureMaxAnisotropy
;
2660 /* GL_ARB_multisample */
2661 case GL_MULTISAMPLE_ARB
:
2662 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2663 *params
= (GLdouble
) ctx
->Multisample
.Enabled
;
2665 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
2666 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2667 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToCoverage
;
2669 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
2670 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2671 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToOne
;
2673 case GL_SAMPLE_COVERAGE_ARB
:
2674 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2675 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverage
;
2677 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
2678 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2679 *params
= ctx
->Multisample
.SampleCoverageValue
;
2681 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
2682 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2683 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverageInvert
;
2685 case GL_SAMPLE_BUFFERS_ARB
:
2686 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2687 *params
= 0.0; /* XXX fix someday */
2689 case GL_SAMPLES_ARB
:
2690 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2691 *params
= 0.0; /* XXX fix someday */
2694 /* GL_IBM_rasterpos_clip */
2695 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
2696 CHECK_EXTENSION_D(IBM_rasterpos_clip
, pname
);
2697 *params
= (GLdouble
) ctx
->Transform
.RasterPositionUnclipped
;
2700 /* GL_NV_point_sprite */
2701 case GL_POINT_SPRITE_NV
:
2702 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
2703 *params
= (GLdouble
) ctx
->Point
.PointSprite
;
2705 case GL_POINT_SPRITE_R_MODE_NV
:
2706 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
2707 *params
= (GLdouble
) ctx
->Point
.SpriteRMode
;
2710 /* GL_SGIS_generate_mipmap */
2711 case GL_GENERATE_MIPMAP_HINT_SGIS
:
2712 CHECK_EXTENSION_D(SGIS_generate_mipmap
, pname
);
2713 *params
= (GLdouble
) ctx
->Hint
.GenerateMipmap
;
2716 #if FEATURE_NV_vertex_program
2717 case GL_VERTEX_PROGRAM_NV
:
2718 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2719 *params
= (GLdouble
) ctx
->VertexProgram
.Enabled
;
2721 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
2722 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2723 *params
= (GLdouble
) ctx
->VertexProgram
.PointSizeEnabled
;
2725 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
2726 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2727 *params
= (GLdouble
) ctx
->VertexProgram
.TwoSideEnabled
;
2729 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
2730 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2731 *params
= (GLdouble
) MAX_PROGRAM_STACK_DEPTH
;
2733 case GL_MAX_TRACK_MATRICES_NV
:
2734 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2735 *params
= (GLdouble
) MAX_PROGRAM_MATRICES
;
2737 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
2738 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2739 *params
= (GLdouble
) ctx
->CurrentStack
->Depth
;
2741 case GL_CURRENT_MATRIX_NV
:
2742 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2743 *params
= (GLdouble
) ctx
->Transform
.MatrixMode
;
2745 case GL_VERTEX_PROGRAM_BINDING_NV
:
2746 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2747 *params
= (GLdouble
) ctx
->VertexProgram
.CurrentID
;
2749 case GL_PROGRAM_ERROR_POSITION_NV
:
2750 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2751 *params
= (GLdouble
) ctx
->VertexProgram
.ErrorPos
;
2753 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
2754 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
2755 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
2756 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
2757 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
2758 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
2759 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
2760 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
2761 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
2762 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
2763 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
2764 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
2765 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
2766 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
2767 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
2768 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
2769 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2771 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
2772 *params
= (GLdouble
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
2775 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
2776 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
2777 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
2778 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
2779 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
2780 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
2781 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
2782 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
2783 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
2784 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
2785 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
2786 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
2787 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
2788 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
2789 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
2790 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
2791 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
2793 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
2794 *params
= (GLdouble
) ctx
->Eval
.Map1Attrib
[n
];
2797 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
2798 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
2799 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
2800 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
2801 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
2802 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
2803 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
2804 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
2805 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
2806 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
2807 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
2808 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
2809 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
2810 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
2811 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
2812 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
2813 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
2815 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
2816 *params
= (GLdouble
) ctx
->Eval
.Map2Attrib
[n
];
2819 #endif /* FEATURE_NV_vertex_program */
2821 /* GL_NV_texture_rectangle */
2822 case GL_TEXTURE_RECTANGLE_NV
:
2823 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2824 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
2826 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
2827 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2828 *params
= (GLdouble
) textureUnit
->CurrentRect
->Name
;
2830 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
2831 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2832 *params
= (GLdouble
) ctx
->Const
.MaxTextureRectSize
;
2835 /* GL_EXT_stencil_two_side */
2836 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
2837 CHECK_EXTENSION_D(EXT_stencil_two_side
, pname
);
2838 *params
= (GLdouble
) ctx
->Stencil
.TestTwoSide
;
2840 case GL_ACTIVE_STENCIL_FACE_EXT
:
2841 CHECK_EXTENSION_D(EXT_stencil_two_side
, pname
);
2842 *params
= (GLdouble
) (ctx
->Stencil
.ActiveFace
? GL_FRONT
: GL_BACK
);
2846 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev(pname=0x%x)", pname
);
2852 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2854 GET_CURRENT_CONTEXT(ctx
);
2856 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2857 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2858 ASSERT_OUTSIDE_BEGIN_END(ctx
);
2863 /* We need this in order to get correct results for
2864 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
2866 FLUSH_VERTICES(ctx
, 0);
2868 if (MESA_VERBOSE
& VERBOSE_API
)
2869 _mesa_debug(ctx
, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname
));
2871 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2875 case GL_ACCUM_RED_BITS
:
2876 *params
= (GLfloat
) ctx
->Visual
.accumRedBits
;
2878 case GL_ACCUM_GREEN_BITS
:
2879 *params
= (GLfloat
) ctx
->Visual
.accumGreenBits
;
2881 case GL_ACCUM_BLUE_BITS
:
2882 *params
= (GLfloat
) ctx
->Visual
.accumBlueBits
;
2884 case GL_ACCUM_ALPHA_BITS
:
2885 *params
= (GLfloat
) ctx
->Visual
.accumAlphaBits
;
2887 case GL_ACCUM_CLEAR_VALUE
:
2888 params
[0] = ctx
->Accum
.ClearColor
[0];
2889 params
[1] = ctx
->Accum
.ClearColor
[1];
2890 params
[2] = ctx
->Accum
.ClearColor
[2];
2891 params
[3] = ctx
->Accum
.ClearColor
[3];
2894 *params
= ctx
->Pixel
.AlphaBias
;
2897 *params
= (GLfloat
) ctx
->Visual
.alphaBits
;
2899 case GL_ALPHA_SCALE
:
2900 *params
= ctx
->Pixel
.AlphaScale
;
2903 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2905 case GL_ALPHA_TEST_FUNC
:
2906 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2908 case GL_ALPHA_TEST_REF
:
2909 *params
= (GLfloat
) ctx
->Color
.AlphaRef
;
2911 case GL_ATTRIB_STACK_DEPTH
:
2912 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2914 case GL_AUTO_NORMAL
:
2915 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2917 case GL_AUX_BUFFERS
:
2918 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2921 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2924 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2927 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2929 case GL_BLEND_SRC_RGB_EXT
:
2930 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2932 case GL_BLEND_DST_RGB_EXT
:
2933 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2935 case GL_BLEND_SRC_ALPHA_EXT
:
2936 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2938 case GL_BLEND_DST_ALPHA_EXT
:
2939 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2941 case GL_BLEND_EQUATION_EXT
:
2942 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2944 case GL_BLEND_COLOR_EXT
:
2945 params
[0] = ctx
->Color
.BlendColor
[0];
2946 params
[1] = ctx
->Color
.BlendColor
[1];
2947 params
[2] = ctx
->Color
.BlendColor
[2];
2948 params
[3] = ctx
->Color
.BlendColor
[3];
2951 *params
= ctx
->Pixel
.BlueBias
;
2954 *params
= (GLfloat
) ctx
->Visual
.blueBits
;
2957 *params
= ctx
->Pixel
.BlueScale
;
2959 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2960 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2962 case GL_CLIP_PLANE0
:
2963 case GL_CLIP_PLANE1
:
2964 case GL_CLIP_PLANE2
:
2965 case GL_CLIP_PLANE3
:
2966 case GL_CLIP_PLANE4
:
2967 case GL_CLIP_PLANE5
:
2968 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
2973 case GL_COLOR_CLEAR_VALUE
:
2974 params
[0] = ctx
->Color
.ClearColor
[0];
2975 params
[1] = ctx
->Color
.ClearColor
[1];
2976 params
[2] = ctx
->Color
.ClearColor
[2];
2977 params
[3] = ctx
->Color
.ClearColor
[3];
2979 case GL_COLOR_MATERIAL
:
2980 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2982 case GL_COLOR_MATERIAL_FACE
:
2983 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2985 case GL_COLOR_MATERIAL_PARAMETER
:
2986 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2988 case GL_COLOR_WRITEMASK
:
2989 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2990 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2991 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2992 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2995 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2997 case GL_CULL_FACE_MODE
:
2998 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
3000 case GL_CURRENT_COLOR
:
3001 FLUSH_CURRENT(ctx
, 0);
3002 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
3003 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
3004 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
3005 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
3007 case GL_CURRENT_INDEX
:
3008 FLUSH_CURRENT(ctx
, 0);
3009 *params
= (GLfloat
) ctx
->Current
.Index
;
3011 case GL_CURRENT_NORMAL
:
3012 FLUSH_CURRENT(ctx
, 0);
3013 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
3014 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
3015 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
3017 case GL_CURRENT_RASTER_COLOR
:
3018 params
[0] = ctx
->Current
.RasterColor
[0];
3019 params
[1] = ctx
->Current
.RasterColor
[1];
3020 params
[2] = ctx
->Current
.RasterColor
[2];
3021 params
[3] = ctx
->Current
.RasterColor
[3];
3023 case GL_CURRENT_RASTER_DISTANCE
:
3024 params
[0] = ctx
->Current
.RasterDistance
;
3026 case GL_CURRENT_RASTER_INDEX
:
3027 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
3029 case GL_CURRENT_RASTER_POSITION
:
3030 params
[0] = ctx
->Current
.RasterPos
[0];
3031 params
[1] = ctx
->Current
.RasterPos
[1];
3032 params
[2] = ctx
->Current
.RasterPos
[2];
3033 params
[3] = ctx
->Current
.RasterPos
[3];
3035 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3036 params
[0] = ctx
->Current
.RasterTexCoords
[texUnit
][0];
3037 params
[1] = ctx
->Current
.RasterTexCoords
[texUnit
][1];
3038 params
[2] = ctx
->Current
.RasterTexCoords
[texUnit
][2];
3039 params
[3] = ctx
->Current
.RasterTexCoords
[texUnit
][3];
3041 case GL_CURRENT_RASTER_POSITION_VALID
:
3042 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
3044 case GL_CURRENT_TEXTURE_COORDS
:
3045 FLUSH_CURRENT(ctx
, 0);
3046 params
[0] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
3047 params
[1] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
3048 params
[2] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
3049 params
[3] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
3052 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
3055 *params
= (GLfloat
) ctx
->Visual
.depthBits
;
3057 case GL_DEPTH_CLEAR_VALUE
:
3058 *params
= (GLfloat
) ctx
->Depth
.Clear
;
3061 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
3063 case GL_DEPTH_RANGE
:
3064 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
3065 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
3067 case GL_DEPTH_SCALE
:
3068 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
3071 *params
= (GLfloat
) ctx
->Depth
.Test
;
3073 case GL_DEPTH_WRITEMASK
:
3074 *params
= (GLfloat
) ctx
->Depth
.Mask
;
3077 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
3079 case GL_DOUBLEBUFFER
:
3080 *params
= (GLfloat
) ctx
->Visual
.doubleBufferMode
;
3082 case GL_DRAW_BUFFER
:
3083 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
3086 FLUSH_CURRENT(ctx
, 0);
3087 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
3089 case GL_FEEDBACK_BUFFER_SIZE
:
3090 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
3092 case GL_FEEDBACK_BUFFER_TYPE
:
3093 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
3096 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
3099 params
[0] = ctx
->Fog
.Color
[0];
3100 params
[1] = ctx
->Fog
.Color
[1];
3101 params
[2] = ctx
->Fog
.Color
[2];
3102 params
[3] = ctx
->Fog
.Color
[3];
3104 case GL_FOG_DENSITY
:
3105 *params
= ctx
->Fog
.Density
;
3108 *params
= ctx
->Fog
.End
;
3111 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
3114 *params
= ctx
->Fog
.Index
;
3117 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
3120 *params
= ctx
->Fog
.Start
;
3123 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
3126 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
3129 *params
= (GLfloat
) ctx
->Visual
.greenBits
;
3131 case GL_GREEN_SCALE
:
3132 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
3135 *params
= (GLfloat
) ctx
->Visual
.indexBits
;
3137 case GL_INDEX_CLEAR_VALUE
:
3138 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
3141 *params
= ctx
->Visual
.rgbMode
? 0.0F
: 1.0F
;
3143 case GL_INDEX_OFFSET
:
3144 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
3146 case GL_INDEX_SHIFT
:
3147 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
3149 case GL_INDEX_WRITEMASK
:
3150 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
3160 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3163 *params
= (GLfloat
) ctx
->Light
.Enabled
;
3165 case GL_LIGHT_MODEL_AMBIENT
:
3166 params
[0] = ctx
->Light
.Model
.Ambient
[0];
3167 params
[1] = ctx
->Light
.Model
.Ambient
[1];
3168 params
[2] = ctx
->Light
.Model
.Ambient
[2];
3169 params
[3] = ctx
->Light
.Model
.Ambient
[3];
3171 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3172 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
3174 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3175 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
3177 case GL_LIGHT_MODEL_TWO_SIDE
:
3178 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
3180 case GL_LINE_SMOOTH
:
3181 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
3183 case GL_LINE_SMOOTH_HINT
:
3184 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
3186 case GL_LINE_STIPPLE
:
3187 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
3189 case GL_LINE_STIPPLE_PATTERN
:
3190 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
3192 case GL_LINE_STIPPLE_REPEAT
:
3193 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
3196 *params
= (GLfloat
) ctx
->Line
.Width
;
3198 case GL_LINE_WIDTH_GRANULARITY
:
3199 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
3201 case GL_LINE_WIDTH_RANGE
:
3202 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
3203 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
3205 case GL_ALIASED_LINE_WIDTH_RANGE
:
3206 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
3207 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
3210 *params
= (GLfloat
) ctx
->List
.ListBase
;
3213 *params
= (GLfloat
) ctx
->CurrentListNum
;
3216 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
3217 : ENUM_TO_FLOAT(GL_COMPILE
);
3219 case GL_INDEX_LOGIC_OP
:
3220 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
3222 case GL_COLOR_LOGIC_OP
:
3223 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
3225 case GL_LOGIC_OP_MODE
:
3226 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
3228 case GL_MAP1_COLOR_4
:
3229 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
3231 case GL_MAP1_GRID_DOMAIN
:
3232 params
[0] = ctx
->Eval
.MapGrid1u1
;
3233 params
[1] = ctx
->Eval
.MapGrid1u2
;
3235 case GL_MAP1_GRID_SEGMENTS
:
3236 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
3239 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
3241 case GL_MAP1_NORMAL
:
3242 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
3244 case GL_MAP1_TEXTURE_COORD_1
:
3245 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
3247 case GL_MAP1_TEXTURE_COORD_2
:
3248 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
3250 case GL_MAP1_TEXTURE_COORD_3
:
3251 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
3253 case GL_MAP1_TEXTURE_COORD_4
:
3254 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
3256 case GL_MAP1_VERTEX_3
:
3257 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
3259 case GL_MAP1_VERTEX_4
:
3260 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
3262 case GL_MAP2_COLOR_4
:
3263 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
3265 case GL_MAP2_GRID_DOMAIN
:
3266 params
[0] = ctx
->Eval
.MapGrid2u1
;
3267 params
[1] = ctx
->Eval
.MapGrid2u2
;
3268 params
[2] = ctx
->Eval
.MapGrid2v1
;
3269 params
[3] = ctx
->Eval
.MapGrid2v2
;
3271 case GL_MAP2_GRID_SEGMENTS
:
3272 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
3273 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
3276 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
3278 case GL_MAP2_NORMAL
:
3279 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
3281 case GL_MAP2_TEXTURE_COORD_1
:
3282 *params
= ctx
->Eval
.Map2TextureCoord1
;
3284 case GL_MAP2_TEXTURE_COORD_2
:
3285 *params
= ctx
->Eval
.Map2TextureCoord2
;
3287 case GL_MAP2_TEXTURE_COORD_3
:
3288 *params
= ctx
->Eval
.Map2TextureCoord3
;
3290 case GL_MAP2_TEXTURE_COORD_4
:
3291 *params
= ctx
->Eval
.Map2TextureCoord4
;
3293 case GL_MAP2_VERTEX_3
:
3294 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
3296 case GL_MAP2_VERTEX_4
:
3297 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
3300 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
3302 case GL_MAP_STENCIL
:
3303 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
3305 case GL_MATRIX_MODE
:
3306 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
3308 case GL_MAX_ATTRIB_STACK_DEPTH
:
3309 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
3311 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3312 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3314 case GL_MAX_CLIP_PLANES
:
3315 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
3317 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3318 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3320 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3321 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3323 case GL_MAX_EVAL_ORDER
:
3324 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3327 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3329 case GL_MAX_LIST_NESTING
:
3330 *params
= (GLfloat
) MAX_LIST_NESTING
;
3332 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3333 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3335 case GL_MAX_NAME_STACK_DEPTH
:
3336 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3338 case GL_MAX_PIXEL_MAP_TABLE
:
3339 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3341 case GL_MAX_PROJECTION_STACK_DEPTH
:
3342 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3344 case GL_MAX_TEXTURE_SIZE
:
3345 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
3347 case GL_MAX_3D_TEXTURE_SIZE
:
3348 *params
= (GLfloat
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
3350 case GL_MAX_TEXTURE_STACK_DEPTH
:
3351 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3353 case GL_MAX_VIEWPORT_DIMS
:
3354 params
[0] = (GLfloat
) MAX_WIDTH
;
3355 params
[1] = (GLfloat
) MAX_HEIGHT
;
3357 case GL_MODELVIEW_MATRIX
:
3358 for (i
=0;i
<16;i
++) {
3359 params
[i
] = ctx
->ModelviewMatrixStack
.Top
->m
[i
];
3362 case GL_MODELVIEW_STACK_DEPTH
:
3363 *params
= (GLfloat
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
3365 case GL_NAME_STACK_DEPTH
:
3366 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3369 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3371 case GL_PACK_ALIGNMENT
:
3372 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3374 case GL_PACK_LSB_FIRST
:
3375 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3377 case GL_PACK_ROW_LENGTH
:
3378 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3380 case GL_PACK_SKIP_PIXELS
:
3381 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3383 case GL_PACK_SKIP_ROWS
:
3384 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3386 case GL_PACK_SWAP_BYTES
:
3387 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3389 case GL_PACK_SKIP_IMAGES_EXT
:
3390 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3392 case GL_PACK_IMAGE_HEIGHT_EXT
:
3393 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3395 case GL_PACK_INVERT_MESA
:
3396 *params
= (GLfloat
) ctx
->Pack
.Invert
;
3398 case GL_PERSPECTIVE_CORRECTION_HINT
:
3399 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3401 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3402 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3404 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3405 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3407 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3408 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3410 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3411 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3413 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3414 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3416 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3417 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3419 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3420 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3422 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3423 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3425 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3426 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3428 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3429 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3432 *params
= (GLfloat
) ctx
->Point
.Size
;
3434 case GL_POINT_SIZE_GRANULARITY
:
3435 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3437 case GL_POINT_SIZE_RANGE
:
3438 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3439 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3441 case GL_ALIASED_POINT_SIZE_RANGE
:
3442 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3443 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3445 case GL_POINT_SMOOTH
:
3446 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3448 case GL_POINT_SMOOTH_HINT
:
3449 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3451 case GL_POINT_SIZE_MIN_EXT
:
3452 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3454 case GL_POINT_SIZE_MAX_EXT
:
3455 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3457 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3458 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3460 case GL_DISTANCE_ATTENUATION_EXT
:
3461 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3462 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3463 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3465 case GL_POLYGON_MODE
:
3466 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3467 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3469 #ifdef GL_EXT_polygon_offset
3470 case GL_POLYGON_OFFSET_BIAS_EXT
:
3471 *params
= ctx
->Polygon
.OffsetUnits
;
3474 case GL_POLYGON_OFFSET_FACTOR
:
3475 *params
= ctx
->Polygon
.OffsetFactor
;
3477 case GL_POLYGON_OFFSET_UNITS
:
3478 *params
= ctx
->Polygon
.OffsetUnits
;
3480 case GL_POLYGON_SMOOTH
:
3481 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3483 case GL_POLYGON_SMOOTH_HINT
:
3484 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3486 case GL_POLYGON_STIPPLE
:
3487 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3489 case GL_PROJECTION_MATRIX
:
3490 for (i
=0;i
<16;i
++) {
3491 params
[i
] = ctx
->ProjectionMatrixStack
.Top
->m
[i
];
3494 case GL_PROJECTION_STACK_DEPTH
:
3495 *params
= (GLfloat
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
3497 case GL_READ_BUFFER
:
3498 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3501 *params
= ctx
->Pixel
.RedBias
;
3504 *params
= (GLfloat
) ctx
->Visual
.redBits
;
3507 *params
= ctx
->Pixel
.RedScale
;
3509 case GL_RENDER_MODE
:
3510 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3512 case GL_RESCALE_NORMAL
:
3513 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3516 *params
= (GLfloat
) ctx
->Visual
.rgbMode
;
3518 case GL_SCISSOR_BOX
:
3519 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3520 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3521 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3522 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3524 case GL_SCISSOR_TEST
:
3525 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3527 case GL_SELECTION_BUFFER_SIZE
:
3528 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3530 case GL_SHADE_MODEL
:
3531 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3533 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3534 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3536 case GL_STENCIL_BITS
:
3537 *params
= (GLfloat
) ctx
->Visual
.stencilBits
;
3539 case GL_STENCIL_CLEAR_VALUE
:
3540 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3542 case GL_STENCIL_FAIL
:
3543 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
3545 case GL_STENCIL_FUNC
:
3546 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
3548 case GL_STENCIL_PASS_DEPTH_FAIL
:
3549 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
3551 case GL_STENCIL_PASS_DEPTH_PASS
:
3552 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
3554 case GL_STENCIL_REF
:
3555 *params
= (GLfloat
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
3557 case GL_STENCIL_TEST
:
3558 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3560 case GL_STENCIL_VALUE_MASK
:
3561 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
3563 case GL_STENCIL_WRITEMASK
:
3564 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
3567 *params
= (GLfloat
) ctx
->Visual
.stereoMode
;
3569 case GL_SUBPIXEL_BITS
:
3570 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3573 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0F
: 0.0F
;
3576 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0F
: 0.0F
;
3579 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0F
: 0.0F
;
3581 case GL_TEXTURE_BINDING_1D
:
3582 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3584 case GL_TEXTURE_BINDING_2D
:
3585 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3587 case GL_TEXTURE_BINDING_3D
:
3588 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3590 case GL_TEXTURE_ENV_COLOR
:
3591 params
[0] = textureUnit
->EnvColor
[0];
3592 params
[1] = textureUnit
->EnvColor
[1];
3593 params
[2] = textureUnit
->EnvColor
[2];
3594 params
[3] = textureUnit
->EnvColor
[3];
3596 case GL_TEXTURE_ENV_MODE
:
3597 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3599 case GL_TEXTURE_GEN_S
:
3600 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0F
: 0.0F
;
3602 case GL_TEXTURE_GEN_T
:
3603 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0F
: 0.0F
;
3605 case GL_TEXTURE_GEN_R
:
3606 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0F
: 0.0F
;
3608 case GL_TEXTURE_GEN_Q
:
3609 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0F
: 0.0F
;
3611 case GL_TEXTURE_MATRIX
:
3612 for (i
=0;i
<16;i
++) {
3613 params
[i
] = ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
3616 case GL_TEXTURE_STACK_DEPTH
:
3617 *params
= (GLfloat
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
3619 case GL_UNPACK_ALIGNMENT
:
3620 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3622 case GL_UNPACK_LSB_FIRST
:
3623 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3625 case GL_UNPACK_ROW_LENGTH
:
3626 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3628 case GL_UNPACK_SKIP_PIXELS
:
3629 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3631 case GL_UNPACK_SKIP_ROWS
:
3632 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3634 case GL_UNPACK_SWAP_BYTES
:
3635 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3637 case GL_UNPACK_SKIP_IMAGES_EXT
:
3638 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3640 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3641 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3643 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
3644 *params
= (GLfloat
) ctx
->Unpack
.ClientStorage
;
3647 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3648 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3649 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3650 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3653 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3656 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3658 case GL_VERTEX_ARRAY
:
3659 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3661 case GL_VERTEX_ARRAY_SIZE
:
3662 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3664 case GL_VERTEX_ARRAY_TYPE
:
3665 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3667 case GL_VERTEX_ARRAY_STRIDE
:
3668 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3670 case GL_VERTEX_ARRAY_COUNT_EXT
:
3673 case GL_NORMAL_ARRAY
:
3674 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3676 case GL_NORMAL_ARRAY_TYPE
:
3677 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3679 case GL_NORMAL_ARRAY_STRIDE
:
3680 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3682 case GL_NORMAL_ARRAY_COUNT_EXT
:
3685 case GL_COLOR_ARRAY
:
3686 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3688 case GL_COLOR_ARRAY_SIZE
:
3689 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3691 case GL_COLOR_ARRAY_TYPE
:
3692 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3694 case GL_COLOR_ARRAY_STRIDE
:
3695 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3697 case GL_COLOR_ARRAY_COUNT_EXT
:
3700 case GL_INDEX_ARRAY
:
3701 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3703 case GL_INDEX_ARRAY_TYPE
:
3704 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3706 case GL_INDEX_ARRAY_STRIDE
:
3707 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3709 case GL_INDEX_ARRAY_COUNT_EXT
:
3712 case GL_TEXTURE_COORD_ARRAY
:
3713 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3715 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3716 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3718 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3719 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3721 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3722 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3724 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3727 case GL_EDGE_FLAG_ARRAY
:
3728 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3730 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3731 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3733 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3737 /* GL_ARB_multitexture */
3738 case GL_MAX_TEXTURE_UNITS_ARB
:
3739 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3740 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3742 case GL_ACTIVE_TEXTURE_ARB
:
3743 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3744 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3746 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3747 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3748 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3751 /* GL_ARB_texture_cube_map */
3752 case GL_TEXTURE_CUBE_MAP_ARB
:
3753 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3754 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3756 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3757 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3758 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3760 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3761 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3762 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
3765 /* GL_ARB_texture_compression */
3766 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3767 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3768 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3770 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3771 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3772 *params
= (GLfloat
) _mesa_get_compressed_formats(ctx
, NULL
);
3774 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3775 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3779 n
= _mesa_get_compressed_formats(ctx
, formats
);
3780 for (i
= 0; i
< n
; i
++)
3781 params
[i
] = (GLfloat
) formats
[i
];
3785 /* GL_EXT_compiled_vertex_array */
3786 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3787 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
3788 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3790 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3791 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
3792 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3795 /* GL_ARB_transpose_matrix */
3796 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3797 _math_transposef(params
, ctx
->ColorMatrixStack
.Top
->m
);
3799 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3800 _math_transposef(params
, ctx
->ModelviewMatrixStack
.Top
->m
);
3802 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3803 _math_transposef(params
, ctx
->ProjectionMatrixStack
.Top
->m
);
3805 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3806 _math_transposef(params
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
3809 /* GL_HP_occlusion_test */
3810 case GL_OCCLUSION_TEST_HP
:
3811 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
3812 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3814 case GL_OCCLUSION_TEST_RESULT_HP
:
3815 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
3816 if (ctx
->Depth
.OcclusionTest
)
3817 *params
= (GLfloat
) ctx
->OcclusionResult
;
3819 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3820 /* reset flag now */
3821 ctx
->OcclusionResult
= GL_FALSE
;
3822 ctx
->OcclusionResultSaved
= GL_FALSE
;
3825 /* GL_SGIS_pixel_texture */
3826 case GL_PIXEL_TEXTURE_SGIS
:
3827 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3830 /* GL_SGIX_pixel_texture */
3831 case GL_PIXEL_TEX_GEN_SGIX
:
3832 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3834 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3835 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3838 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3839 case GL_COLOR_MATRIX_SGI
:
3840 for (i
=0;i
<16;i
++) {
3841 params
[i
] = ctx
->ColorMatrixStack
.Top
->m
[i
];
3844 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3845 *params
= (GLfloat
) (ctx
->ColorMatrixStack
.Depth
+ 1);
3847 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3848 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3850 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3851 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3853 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3854 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3856 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3857 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3859 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3860 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3862 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3863 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3865 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3866 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3868 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3869 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3871 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3872 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3875 /* GL_EXT_convolution (also in 1.2 imaging) */
3876 case GL_CONVOLUTION_1D_EXT
:
3877 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3878 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
3880 case GL_CONVOLUTION_2D
:
3881 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3882 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
3884 case GL_SEPARABLE_2D
:
3885 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3886 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
3888 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3889 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3890 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3892 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3893 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3894 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3896 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3897 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3898 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3900 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3901 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3902 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3904 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3905 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3906 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3908 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3909 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3910 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3912 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3913 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3914 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3916 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3917 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3918 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3921 /* GL_EXT_histogram (also in 1.2 imaging) */
3923 CHECK_EXTENSION_F(EXT_histogram
, pname
);
3924 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
3927 CHECK_EXTENSION_F(EXT_histogram
, pname
);
3928 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
3931 /* GL_SGI_color_table (also in 1.2 imaging */
3932 case GL_COLOR_TABLE_SGI
:
3933 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3935 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3936 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3938 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3939 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3942 /* GL_EXT_secondary_color */
3943 case GL_COLOR_SUM_EXT
:
3944 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3945 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3947 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3948 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3949 FLUSH_CURRENT(ctx
, 0);
3950 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
3951 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
3952 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
3954 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3955 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3956 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3958 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3959 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3960 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3962 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3963 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3964 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3966 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3967 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3968 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3971 /* GL_EXT_fog_coord */
3972 case GL_CURRENT_FOG_COORDINATE_EXT
:
3973 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3974 FLUSH_CURRENT(ctx
, 0);
3975 *params
= (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
3977 case GL_FOG_COORDINATE_ARRAY_EXT
:
3978 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3979 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3981 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3982 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3983 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3985 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3986 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3987 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3990 /* GL_EXT_texture_lod_bias */
3991 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3992 *params
= ctx
->Const
.MaxTextureLodBias
;
3995 /* GL_EXT_texture_filter_anisotropic */
3996 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3997 CHECK_EXTENSION_F(EXT_texture_filter_anisotropic
, pname
);
3998 *params
= ctx
->Const
.MaxTextureMaxAnisotropy
;
4001 /* GL_ARB_multisample */
4002 case GL_MULTISAMPLE_ARB
:
4003 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4004 *params
= (GLfloat
) ctx
->Multisample
.Enabled
;
4006 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
4007 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4008 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToCoverage
;
4010 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
4011 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4012 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToOne
;
4014 case GL_SAMPLE_COVERAGE_ARB
:
4015 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4016 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverage
;
4018 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
4019 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4020 *params
= ctx
->Multisample
.SampleCoverageValue
;
4022 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
4023 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4024 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverageInvert
;
4026 case GL_SAMPLE_BUFFERS_ARB
:
4027 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4028 *params
= 0.0; /* XXX fix someday */
4030 case GL_SAMPLES_ARB
:
4031 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4032 *params
= 0.0; /* XXX fix someday */
4035 /* GL_IBM_rasterpos_clip */
4036 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
4037 CHECK_EXTENSION_F(IBM_rasterpos_clip
, pname
);
4038 *params
= (GLfloat
) ctx
->Transform
.RasterPositionUnclipped
;
4041 /* GL_NV_point_sprite */
4042 case GL_POINT_SPRITE_NV
:
4043 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
4044 *params
= (GLfloat
) ctx
->Point
.PointSprite
;
4046 case GL_POINT_SPRITE_R_MODE_NV
:
4047 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
4048 *params
= (GLfloat
) ctx
->Point
.SpriteRMode
;
4051 /* GL_SGIS_generate_mipmap */
4052 case GL_GENERATE_MIPMAP_HINT_SGIS
:
4053 CHECK_EXTENSION_F(SGIS_generate_mipmap
, pname
);
4054 *params
= (GLfloat
) ctx
->Hint
.GenerateMipmap
;
4057 #if FEATURE_NV_vertex_program
4058 case GL_VERTEX_PROGRAM_NV
:
4059 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4060 *params
= (GLfloat
) ctx
->VertexProgram
.Enabled
;
4062 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
4063 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4064 *params
= (GLfloat
) ctx
->VertexProgram
.PointSizeEnabled
;
4066 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
4067 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4068 *params
= (GLfloat
) ctx
->VertexProgram
.TwoSideEnabled
;
4070 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
4071 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4072 *params
= (GLfloat
) MAX_PROGRAM_STACK_DEPTH
;
4074 case GL_MAX_TRACK_MATRICES_NV
:
4075 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4076 *params
= (GLfloat
) MAX_PROGRAM_MATRICES
;
4078 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
4079 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4080 *params
= (GLfloat
) ctx
->CurrentStack
->Depth
;
4082 case GL_CURRENT_MATRIX_NV
:
4083 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4084 *params
= (GLfloat
) ctx
->Transform
.MatrixMode
;
4086 case GL_VERTEX_PROGRAM_BINDING_NV
:
4087 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4088 *params
= (GLfloat
) ctx
->VertexProgram
.CurrentID
;
4090 case GL_PROGRAM_ERROR_POSITION_NV
:
4091 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4092 *params
= (GLfloat
) ctx
->VertexProgram
.ErrorPos
;
4094 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
4095 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
4096 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
4097 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
4098 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
4099 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
4100 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
4101 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
4102 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
4103 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
4104 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
4105 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
4106 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
4107 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
4108 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
4109 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
4110 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4112 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
4113 *params
= (GLfloat
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
4116 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
4117 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
4118 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
4119 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
4120 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
4121 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
4122 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
4123 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
4124 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
4125 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
4126 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
4127 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
4128 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
4129 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
4130 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
4131 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
4132 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
4134 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
4135 *params
= (GLfloat
) ctx
->Eval
.Map1Attrib
[n
];
4138 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
4139 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
4140 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
4141 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
4142 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
4143 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
4144 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
4145 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
4146 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
4147 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
4148 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
4149 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
4150 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
4151 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
4152 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
4153 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
4154 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
4156 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
4157 *params
= (GLfloat
) ctx
->Eval
.Map2Attrib
[n
];
4161 /* GL_NV_texture_rectangle */
4162 case GL_TEXTURE_RECTANGLE_NV
:
4163 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4164 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
4166 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
4167 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4168 *params
= (GLfloat
) textureUnit
->CurrentRect
->Name
;
4170 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
4171 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4172 *params
= (GLfloat
) ctx
->Const
.MaxTextureRectSize
;
4174 #endif /* FEATURE_NV_vertex_program */
4176 /* GL_EXT_stencil_two_side */
4177 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
4178 CHECK_EXTENSION_F(EXT_stencil_two_side
, pname
);
4179 *params
= (GLfloat
) ctx
->Stencil
.TestTwoSide
;
4181 case GL_ACTIVE_STENCIL_FACE_EXT
:
4182 CHECK_EXTENSION_F(EXT_stencil_two_side
, pname
);
4183 *params
= (GLfloat
) (ctx
->Stencil
.ActiveFace
? GL_FRONT
: GL_BACK
);
4187 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv(0x%x)", pname
);
4193 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
4195 GET_CURRENT_CONTEXT(ctx
);
4197 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4198 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
4199 ASSERT_OUTSIDE_BEGIN_END(ctx
);
4204 /* We need this in order to get correct results for
4205 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
4207 FLUSH_VERTICES(ctx
, 0);
4209 if (MESA_VERBOSE
& VERBOSE_API
)
4210 _mesa_debug(ctx
, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname
));
4212 if (ctx
->Driver
.GetIntegerv
4213 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
4217 case GL_ACCUM_RED_BITS
:
4218 *params
= (GLint
) ctx
->Visual
.accumRedBits
;
4220 case GL_ACCUM_GREEN_BITS
:
4221 *params
= (GLint
) ctx
->Visual
.accumGreenBits
;
4223 case GL_ACCUM_BLUE_BITS
:
4224 *params
= (GLint
) ctx
->Visual
.accumBlueBits
;
4226 case GL_ACCUM_ALPHA_BITS
:
4227 *params
= (GLint
) ctx
->Visual
.accumAlphaBits
;
4229 case GL_ACCUM_CLEAR_VALUE
:
4230 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
4231 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
4232 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
4233 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
4236 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
4239 *params
= ctx
->Visual
.alphaBits
;
4241 case GL_ALPHA_SCALE
:
4242 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
4245 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
4247 case GL_ALPHA_TEST_REF
:
4248 *params
= FLOAT_TO_INT(ctx
->Color
.AlphaRef
);
4250 case GL_ALPHA_TEST_FUNC
:
4251 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
4253 case GL_ATTRIB_STACK_DEPTH
:
4254 *params
= (GLint
) (ctx
->AttribStackDepth
);
4256 case GL_AUTO_NORMAL
:
4257 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
4259 case GL_AUX_BUFFERS
:
4260 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
4263 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
4266 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4269 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4271 case GL_BLEND_SRC_RGB_EXT
:
4272 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4274 case GL_BLEND_DST_RGB_EXT
:
4275 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4277 case GL_BLEND_SRC_ALPHA_EXT
:
4278 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
4280 case GL_BLEND_DST_ALPHA_EXT
:
4281 *params
= (GLint
) ctx
->Color
.BlendDstA
;
4283 case GL_BLEND_EQUATION_EXT
:
4284 *params
= (GLint
) ctx
->Color
.BlendEquation
;
4286 case GL_BLEND_COLOR_EXT
:
4287 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
4288 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
4289 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
4290 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
4293 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
4296 *params
= (GLint
) ctx
->Visual
.blueBits
;
4299 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
4301 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
4302 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
4304 case GL_CLIP_PLANE0
:
4305 case GL_CLIP_PLANE1
:
4306 case GL_CLIP_PLANE2
:
4307 case GL_CLIP_PLANE3
:
4308 case GL_CLIP_PLANE4
:
4309 case GL_CLIP_PLANE5
:
4310 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
4315 case GL_COLOR_CLEAR_VALUE
:
4316 params
[0] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[0]) );
4317 params
[1] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[1]) );
4318 params
[2] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[2]) );
4319 params
[3] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[3]) );
4321 case GL_COLOR_MATERIAL
:
4322 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
4324 case GL_COLOR_MATERIAL_FACE
:
4325 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
4327 case GL_COLOR_MATERIAL_PARAMETER
:
4328 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
4330 case GL_COLOR_WRITEMASK
:
4331 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
4332 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
4333 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
4334 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
4337 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
4339 case GL_CULL_FACE_MODE
:
4340 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
4342 case GL_CURRENT_COLOR
:
4343 FLUSH_CURRENT(ctx
, 0);
4344 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4345 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4346 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4347 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4349 case GL_CURRENT_INDEX
:
4350 FLUSH_CURRENT(ctx
, 0);
4351 *params
= (GLint
) ctx
->Current
.Index
;
4353 case GL_CURRENT_NORMAL
:
4354 FLUSH_CURRENT(ctx
, 0);
4355 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4356 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4357 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4359 case GL_CURRENT_RASTER_COLOR
:
4360 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
4361 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
4362 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
4363 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
4365 case GL_CURRENT_RASTER_DISTANCE
:
4366 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
4368 case GL_CURRENT_RASTER_INDEX
:
4369 *params
= (GLint
) ctx
->Current
.RasterIndex
;
4371 case GL_CURRENT_RASTER_POSITION
:
4372 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
4373 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
4374 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
4375 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
4377 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4378 params
[0] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
4379 params
[1] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
4380 params
[2] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
4381 params
[3] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
4383 case GL_CURRENT_RASTER_POSITION_VALID
:
4384 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
4386 case GL_CURRENT_TEXTURE_COORDS
:
4387 FLUSH_CURRENT(ctx
, 0);
4388 params
[0] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
4389 params
[1] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
4390 params
[2] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
4391 params
[3] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
4394 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
4397 *params
= ctx
->Visual
.depthBits
;
4399 case GL_DEPTH_CLEAR_VALUE
:
4400 *params
= (GLint
) ctx
->Depth
.Clear
;
4403 *params
= (GLint
) ctx
->Depth
.Func
;
4405 case GL_DEPTH_RANGE
:
4406 params
[0] = (GLint
) ctx
->Viewport
.Near
;
4407 params
[1] = (GLint
) ctx
->Viewport
.Far
;
4409 case GL_DEPTH_SCALE
:
4410 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
4413 *params
= (GLint
) ctx
->Depth
.Test
;
4415 case GL_DEPTH_WRITEMASK
:
4416 *params
= (GLint
) ctx
->Depth
.Mask
;
4419 *params
= (GLint
) ctx
->Color
.DitherFlag
;
4421 case GL_DOUBLEBUFFER
:
4422 *params
= (GLint
) ctx
->Visual
.doubleBufferMode
;
4424 case GL_DRAW_BUFFER
:
4425 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
4428 FLUSH_CURRENT(ctx
, 0);
4429 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
4431 case GL_FEEDBACK_BUFFER_SIZE
:
4432 *params
= ctx
->Feedback
.BufferSize
;
4434 case GL_FEEDBACK_BUFFER_TYPE
:
4435 *params
= ctx
->Feedback
.Type
;
4438 *params
= (GLint
) ctx
->Fog
.Enabled
;
4441 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
4442 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
4443 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
4444 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
4446 case GL_FOG_DENSITY
:
4447 *params
= (GLint
) ctx
->Fog
.Density
;
4450 *params
= (GLint
) ctx
->Fog
.End
;
4453 *params
= (GLint
) ctx
->Hint
.Fog
;
4456 *params
= (GLint
) ctx
->Fog
.Index
;
4459 *params
= (GLint
) ctx
->Fog
.Mode
;
4462 *params
= (GLint
) ctx
->Fog
.Start
;
4465 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
4468 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
4471 *params
= (GLint
) ctx
->Visual
.greenBits
;
4473 case GL_GREEN_SCALE
:
4474 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
4477 *params
= (GLint
) ctx
->Visual
.indexBits
;
4479 case GL_INDEX_CLEAR_VALUE
:
4480 *params
= (GLint
) ctx
->Color
.ClearIndex
;
4483 *params
= ctx
->Visual
.rgbMode
? 0 : 1;
4485 case GL_INDEX_OFFSET
:
4486 *params
= ctx
->Pixel
.IndexOffset
;
4488 case GL_INDEX_SHIFT
:
4489 *params
= ctx
->Pixel
.IndexShift
;
4491 case GL_INDEX_WRITEMASK
:
4492 *params
= (GLint
) ctx
->Color
.IndexMask
;
4502 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
4505 *params
= (GLint
) ctx
->Light
.Enabled
;
4507 case GL_LIGHT_MODEL_AMBIENT
:
4508 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
4509 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
4510 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
4511 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
4513 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4514 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
4516 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4517 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
4519 case GL_LIGHT_MODEL_TWO_SIDE
:
4520 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
4522 case GL_LINE_SMOOTH
:
4523 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
4525 case GL_LINE_SMOOTH_HINT
:
4526 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
4528 case GL_LINE_STIPPLE
:
4529 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4531 case GL_LINE_STIPPLE_PATTERN
:
4532 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4534 case GL_LINE_STIPPLE_REPEAT
:
4535 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4538 *params
= (GLint
) ctx
->Line
.Width
;
4540 case GL_LINE_WIDTH_GRANULARITY
:
4541 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4543 case GL_LINE_WIDTH_RANGE
:
4544 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4545 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4547 case GL_ALIASED_LINE_WIDTH_RANGE
:
4548 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4549 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4552 *params
= (GLint
) ctx
->List
.ListBase
;
4555 *params
= (GLint
) ctx
->CurrentListNum
;
4558 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4559 : (GLint
) GL_COMPILE
;
4561 case GL_INDEX_LOGIC_OP
:
4562 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4564 case GL_COLOR_LOGIC_OP
:
4565 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4567 case GL_LOGIC_OP_MODE
:
4568 *params
= (GLint
) ctx
->Color
.LogicOp
;
4570 case GL_MAP1_COLOR_4
:
4571 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4573 case GL_MAP1_GRID_DOMAIN
:
4574 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4575 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4577 case GL_MAP1_GRID_SEGMENTS
:
4578 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4581 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4583 case GL_MAP1_NORMAL
:
4584 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4586 case GL_MAP1_TEXTURE_COORD_1
:
4587 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4589 case GL_MAP1_TEXTURE_COORD_2
:
4590 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4592 case GL_MAP1_TEXTURE_COORD_3
:
4593 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4595 case GL_MAP1_TEXTURE_COORD_4
:
4596 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4598 case GL_MAP1_VERTEX_3
:
4599 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4601 case GL_MAP1_VERTEX_4
:
4602 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4604 case GL_MAP2_COLOR_4
:
4605 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4607 case GL_MAP2_GRID_DOMAIN
:
4608 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4609 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4610 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4611 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4613 case GL_MAP2_GRID_SEGMENTS
:
4614 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4615 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4618 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4620 case GL_MAP2_NORMAL
:
4621 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4623 case GL_MAP2_TEXTURE_COORD_1
:
4624 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4626 case GL_MAP2_TEXTURE_COORD_2
:
4627 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4629 case GL_MAP2_TEXTURE_COORD_3
:
4630 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4632 case GL_MAP2_TEXTURE_COORD_4
:
4633 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4635 case GL_MAP2_VERTEX_3
:
4636 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4638 case GL_MAP2_VERTEX_4
:
4639 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4642 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4644 case GL_MAP_STENCIL
:
4645 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4647 case GL_MATRIX_MODE
:
4648 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4650 case GL_MAX_ATTRIB_STACK_DEPTH
:
4651 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4653 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4654 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4656 case GL_MAX_CLIP_PLANES
:
4657 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
4659 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4660 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4662 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4663 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4665 case GL_MAX_EVAL_ORDER
:
4666 *params
= (GLint
) MAX_EVAL_ORDER
;
4669 *params
= (GLint
) ctx
->Const
.MaxLights
;
4671 case GL_MAX_LIST_NESTING
:
4672 *params
= (GLint
) MAX_LIST_NESTING
;
4674 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4675 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4677 case GL_MAX_NAME_STACK_DEPTH
:
4678 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4680 case GL_MAX_PIXEL_MAP_TABLE
:
4681 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4683 case GL_MAX_PROJECTION_STACK_DEPTH
:
4684 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4686 case GL_MAX_TEXTURE_SIZE
:
4687 *params
= (1 << (ctx
->Const
.MaxTextureLevels
- 1));
4689 case GL_MAX_3D_TEXTURE_SIZE
:
4690 *params
= (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
4692 case GL_MAX_TEXTURE_STACK_DEPTH
:
4693 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4695 case GL_MAX_VIEWPORT_DIMS
:
4696 params
[0] = (GLint
) MAX_WIDTH
;
4697 params
[1] = (GLint
) MAX_HEIGHT
;
4699 case GL_MODELVIEW_MATRIX
:
4700 for (i
=0;i
<16;i
++) {
4701 params
[i
] = (GLint
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
4704 case GL_MODELVIEW_STACK_DEPTH
:
4705 *params
= (GLint
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
4707 case GL_NAME_STACK_DEPTH
:
4708 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4711 *params
= (GLint
) ctx
->Transform
.Normalize
;
4713 case GL_PACK_ALIGNMENT
:
4714 *params
= ctx
->Pack
.Alignment
;
4716 case GL_PACK_LSB_FIRST
:
4717 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4719 case GL_PACK_ROW_LENGTH
:
4720 *params
= ctx
->Pack
.RowLength
;
4722 case GL_PACK_SKIP_PIXELS
:
4723 *params
= ctx
->Pack
.SkipPixels
;
4725 case GL_PACK_SKIP_ROWS
:
4726 *params
= ctx
->Pack
.SkipRows
;
4728 case GL_PACK_SWAP_BYTES
:
4729 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4731 case GL_PACK_SKIP_IMAGES_EXT
:
4732 *params
= ctx
->Pack
.SkipImages
;
4734 case GL_PACK_IMAGE_HEIGHT_EXT
:
4735 *params
= ctx
->Pack
.ImageHeight
;
4737 case GL_PACK_INVERT_MESA
:
4738 *params
= ctx
->Pack
.Invert
;
4740 case GL_PERSPECTIVE_CORRECTION_HINT
:
4741 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4743 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4744 *params
= ctx
->Pixel
.MapAtoAsize
;
4746 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4747 *params
= ctx
->Pixel
.MapBtoBsize
;
4749 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4750 *params
= ctx
->Pixel
.MapGtoGsize
;
4752 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4753 *params
= ctx
->Pixel
.MapItoAsize
;
4755 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4756 *params
= ctx
->Pixel
.MapItoBsize
;
4758 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4759 *params
= ctx
->Pixel
.MapItoGsize
;
4761 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4762 *params
= ctx
->Pixel
.MapItoIsize
;
4764 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4765 *params
= ctx
->Pixel
.MapItoRsize
;
4767 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4768 *params
= ctx
->Pixel
.MapRtoRsize
;
4770 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4771 *params
= ctx
->Pixel
.MapStoSsize
;
4774 *params
= (GLint
) ctx
->Point
.Size
;
4776 case GL_POINT_SIZE_GRANULARITY
:
4777 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4779 case GL_POINT_SIZE_RANGE
:
4780 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4781 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4783 case GL_ALIASED_POINT_SIZE_RANGE
:
4784 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4785 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4787 case GL_POINT_SMOOTH
:
4788 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4790 case GL_POINT_SMOOTH_HINT
:
4791 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4793 case GL_POINT_SIZE_MIN_EXT
:
4794 *params
= (GLint
) (ctx
->Point
.MinSize
);
4796 case GL_POINT_SIZE_MAX_EXT
:
4797 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4799 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4800 *params
= (GLint
) (ctx
->Point
.Threshold
);
4802 case GL_DISTANCE_ATTENUATION_EXT
:
4803 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4804 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4805 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4807 case GL_POLYGON_MODE
:
4808 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4809 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4811 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4812 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4814 case GL_POLYGON_OFFSET_FACTOR
:
4815 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4817 case GL_POLYGON_OFFSET_UNITS
:
4818 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4820 case GL_POLYGON_SMOOTH
:
4821 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4823 case GL_POLYGON_SMOOTH_HINT
:
4824 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4826 case GL_POLYGON_STIPPLE
:
4827 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4829 case GL_PROJECTION_MATRIX
:
4830 for (i
=0;i
<16;i
++) {
4831 params
[i
] = (GLint
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
4834 case GL_PROJECTION_STACK_DEPTH
:
4835 *params
= (GLint
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
4837 case GL_READ_BUFFER
:
4838 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4841 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4844 *params
= (GLint
) ctx
->Visual
.redBits
;
4847 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4849 case GL_RENDER_MODE
:
4850 *params
= (GLint
) ctx
->RenderMode
;
4852 case GL_RESCALE_NORMAL
:
4853 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
4856 *params
= (GLint
) ctx
->Visual
.rgbMode
;
4858 case GL_SCISSOR_BOX
:
4859 params
[0] = (GLint
) ctx
->Scissor
.X
;
4860 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4861 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4862 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4864 case GL_SCISSOR_TEST
:
4865 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4867 case GL_SELECTION_BUFFER_SIZE
:
4868 *params
= (GLint
) ctx
->Select
.BufferSize
;
4870 case GL_SHADE_MODEL
:
4871 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4873 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4874 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4876 case GL_STENCIL_BITS
:
4877 *params
= ctx
->Visual
.stencilBits
;
4879 case GL_STENCIL_CLEAR_VALUE
:
4880 *params
= (GLint
) ctx
->Stencil
.Clear
;
4882 case GL_STENCIL_FAIL
:
4883 *params
= (GLint
) ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
];
4885 case GL_STENCIL_FUNC
:
4886 *params
= (GLint
) ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
];
4888 case GL_STENCIL_PASS_DEPTH_FAIL
:
4889 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
];
4891 case GL_STENCIL_PASS_DEPTH_PASS
:
4892 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
];
4894 case GL_STENCIL_REF
:
4895 *params
= (GLint
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
4897 case GL_STENCIL_TEST
:
4898 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4900 case GL_STENCIL_VALUE_MASK
:
4901 *params
= (GLint
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
4903 case GL_STENCIL_WRITEMASK
:
4904 *params
= (GLint
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
4907 *params
= (GLint
) ctx
->Visual
.stereoMode
;
4909 case GL_SUBPIXEL_BITS
:
4910 *params
= ctx
->Const
.SubPixelBits
;
4913 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4916 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4919 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4921 case GL_TEXTURE_BINDING_1D
:
4922 *params
= textureUnit
->Current1D
->Name
;
4924 case GL_TEXTURE_BINDING_2D
:
4925 *params
= textureUnit
->Current2D
->Name
;
4927 case GL_TEXTURE_BINDING_3D
:
4928 *params
= textureUnit
->Current3D
->Name
;
4930 case GL_TEXTURE_ENV_COLOR
:
4931 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4932 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4933 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4934 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4936 case GL_TEXTURE_ENV_MODE
:
4937 *params
= (GLint
) textureUnit
->EnvMode
;
4939 case GL_TEXTURE_GEN_S
:
4940 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4942 case GL_TEXTURE_GEN_T
:
4943 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4945 case GL_TEXTURE_GEN_R
:
4946 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4948 case GL_TEXTURE_GEN_Q
:
4949 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4951 case GL_TEXTURE_MATRIX
:
4952 for (i
=0;i
<16;i
++) {
4953 params
[i
] = (GLint
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
4956 case GL_TEXTURE_STACK_DEPTH
:
4957 *params
= (GLint
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
4959 case GL_UNPACK_ALIGNMENT
:
4960 *params
= ctx
->Unpack
.Alignment
;
4962 case GL_UNPACK_LSB_FIRST
:
4963 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4965 case GL_UNPACK_ROW_LENGTH
:
4966 *params
= ctx
->Unpack
.RowLength
;
4968 case GL_UNPACK_SKIP_PIXELS
:
4969 *params
= ctx
->Unpack
.SkipPixels
;
4971 case GL_UNPACK_SKIP_ROWS
:
4972 *params
= ctx
->Unpack
.SkipRows
;
4974 case GL_UNPACK_SWAP_BYTES
:
4975 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4977 case GL_UNPACK_SKIP_IMAGES_EXT
:
4978 *params
= ctx
->Unpack
.SkipImages
;
4980 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4981 *params
= ctx
->Unpack
.ImageHeight
;
4983 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
4984 *params
= ctx
->Unpack
.ClientStorage
;
4987 params
[0] = (GLint
) ctx
->Viewport
.X
;
4988 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4989 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4990 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4993 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4996 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4998 case GL_VERTEX_ARRAY
:
4999 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
5001 case GL_VERTEX_ARRAY_SIZE
:
5002 *params
= ctx
->Array
.Vertex
.Size
;
5004 case GL_VERTEX_ARRAY_TYPE
:
5005 *params
= ctx
->Array
.Vertex
.Type
;
5007 case GL_VERTEX_ARRAY_STRIDE
:
5008 *params
= ctx
->Array
.Vertex
.Stride
;
5010 case GL_VERTEX_ARRAY_COUNT_EXT
:
5013 case GL_NORMAL_ARRAY
:
5014 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
5016 case GL_NORMAL_ARRAY_TYPE
:
5017 *params
= ctx
->Array
.Normal
.Type
;
5019 case GL_NORMAL_ARRAY_STRIDE
:
5020 *params
= ctx
->Array
.Normal
.Stride
;
5022 case GL_NORMAL_ARRAY_COUNT_EXT
:
5025 case GL_COLOR_ARRAY
:
5026 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
5028 case GL_COLOR_ARRAY_SIZE
:
5029 *params
= ctx
->Array
.Color
.Size
;
5031 case GL_COLOR_ARRAY_TYPE
:
5032 *params
= ctx
->Array
.Color
.Type
;
5034 case GL_COLOR_ARRAY_STRIDE
:
5035 *params
= ctx
->Array
.Color
.Stride
;
5037 case GL_COLOR_ARRAY_COUNT_EXT
:
5040 case GL_INDEX_ARRAY
:
5041 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
5043 case GL_INDEX_ARRAY_TYPE
:
5044 *params
= ctx
->Array
.Index
.Type
;
5046 case GL_INDEX_ARRAY_STRIDE
:
5047 *params
= ctx
->Array
.Index
.Stride
;
5049 case GL_INDEX_ARRAY_COUNT_EXT
:
5052 case GL_TEXTURE_COORD_ARRAY
:
5053 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
5055 case GL_TEXTURE_COORD_ARRAY_SIZE
:
5056 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
5058 case GL_TEXTURE_COORD_ARRAY_TYPE
:
5059 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
5061 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
5062 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
5064 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
5067 case GL_EDGE_FLAG_ARRAY
:
5068 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
5070 case GL_EDGE_FLAG_ARRAY_STRIDE
:
5071 *params
= ctx
->Array
.EdgeFlag
.Stride
;
5073 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
5077 /* GL_ARB_multitexture */
5078 case GL_MAX_TEXTURE_UNITS_ARB
:
5079 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5080 *params
= ctx
->Const
.MaxTextureUnits
;
5082 case GL_ACTIVE_TEXTURE_ARB
:
5083 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5084 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
5086 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
5087 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5088 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
5091 /* GL_ARB_texture_cube_map */
5092 case GL_TEXTURE_CUBE_MAP_ARB
:
5093 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5094 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
5096 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
5097 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5098 *params
= textureUnit
->CurrentCubeMap
->Name
;
5100 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
5101 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5102 *params
= (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
5105 /* GL_ARB_texture_compression */
5106 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
5107 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5108 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
5110 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
5111 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5112 *params
= (GLint
) _mesa_get_compressed_formats(ctx
, NULL
);
5114 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
5115 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5116 (void) _mesa_get_compressed_formats(ctx
, params
);
5119 /* GL_EXT_compiled_vertex_array */
5120 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
5121 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5122 *params
= ctx
->Array
.LockFirst
;
5124 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
5125 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5126 *params
= ctx
->Array
.LockCount
;
5129 /* GL_ARB_transpose_matrix */
5130 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
5134 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
5135 for (i
=0;i
<16;i
++) {
5136 params
[i
] = (GLint
) tm
[i
];
5140 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
5144 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
5145 for (i
=0;i
<16;i
++) {
5146 params
[i
] = (GLint
) tm
[i
];
5150 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
5154 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
5155 for (i
=0;i
<16;i
++) {
5156 params
[i
] = (GLint
) tm
[i
];
5160 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
5164 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
5165 for (i
=0;i
<16;i
++) {
5166 params
[i
] = (GLint
) tm
[i
];
5171 /* GL_HP_occlusion_test */
5172 case GL_OCCLUSION_TEST_HP
:
5173 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5174 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
5176 case GL_OCCLUSION_TEST_RESULT_HP
:
5177 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5178 if (ctx
->Depth
.OcclusionTest
)
5179 *params
= (GLint
) ctx
->OcclusionResult
;
5181 *params
= (GLint
) ctx
->OcclusionResultSaved
;
5182 /* reset flag now */
5183 ctx
->OcclusionResult
= GL_FALSE
;
5184 ctx
->OcclusionResultSaved
= GL_FALSE
;
5187 /* GL_SGIS_pixel_texture */
5188 case GL_PIXEL_TEXTURE_SGIS
:
5189 CHECK_EXTENSION_I(SGIS_pixel_texture
, pname
);
5190 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5193 /* GL_SGIX_pixel_texture */
5194 case GL_PIXEL_TEX_GEN_SGIX
:
5195 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5196 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5198 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
5199 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5200 *params
= (GLint
) pixel_texgen_mode(ctx
);
5203 /* GL_SGI_color_matrix (also in 1.2 imaging) */
5204 case GL_COLOR_MATRIX_SGI
:
5205 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5206 for (i
=0;i
<16;i
++) {
5207 params
[i
] = (GLint
) ctx
->ColorMatrixStack
.Top
->m
[i
];
5210 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5211 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5212 *params
= ctx
->ColorMatrixStack
.Depth
+ 1;
5214 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5215 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5216 *params
= MAX_COLOR_STACK_DEPTH
;
5218 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5219 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5220 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
5222 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5223 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5224 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
5226 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5227 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5228 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
5230 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5231 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5232 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
5234 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5235 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5236 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
5238 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5239 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5240 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
5242 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5243 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5244 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
5246 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5247 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5248 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
5251 /* GL_EXT_convolution (also in 1.2 imaging) */
5252 case GL_CONVOLUTION_1D_EXT
:
5253 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5254 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
5256 case GL_CONVOLUTION_2D
:
5257 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5258 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
5260 case GL_SEPARABLE_2D
:
5261 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5262 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
5264 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5265 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5266 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
5268 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5269 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5270 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
5272 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5273 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5274 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
5276 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5277 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5278 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
5280 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5281 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5282 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
5284 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5285 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5286 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
5288 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5289 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5290 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5292 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5293 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5294 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5297 /* GL_EXT_histogram (also in 1.2 imaging) */
5299 CHECK_EXTENSION_I(EXT_histogram
, pname
);
5300 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
5303 CHECK_EXTENSION_I(EXT_histogram
, pname
);
5304 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
5307 /* GL_SGI_color_table (also in 1.2 imaging */
5308 case GL_COLOR_TABLE_SGI
:
5309 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5310 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
5312 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5313 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5314 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
5316 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5317 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5318 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
5322 /* GL_EXT_secondary_color */
5323 case GL_COLOR_SUM_EXT
:
5324 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5325 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
5327 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5328 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5329 FLUSH_CURRENT(ctx
, 0);
5330 params
[0] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]) );
5331 params
[1] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]) );
5332 params
[2] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]) );
5334 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5335 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5336 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
5338 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5339 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5340 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
5342 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5343 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5344 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5346 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5347 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5348 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5351 /* GL_EXT_fog_coord */
5352 case GL_CURRENT_FOG_COORDINATE_EXT
:
5353 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5354 FLUSH_CURRENT(ctx
, 0);
5355 *params
= (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
5357 case GL_FOG_COORDINATE_ARRAY_EXT
:
5358 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5359 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
5361 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5362 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5363 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
5365 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5366 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5367 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
5370 /* GL_EXT_texture_lod_bias */
5371 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5372 *params
= (GLint
) ctx
->Const
.MaxTextureLodBias
;
5375 /* GL_EXT_texture_filter_anisotropic */
5376 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5377 CHECK_EXTENSION_I(EXT_texture_filter_anisotropic
, pname
);
5378 *params
= (GLint
) ctx
->Const
.MaxTextureMaxAnisotropy
;
5381 /* GL_ARB_multisample */
5382 case GL_MULTISAMPLE_ARB
:
5383 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5384 *params
= (GLint
) ctx
->Multisample
.Enabled
;
5386 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5387 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5388 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToCoverage
;
5390 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5391 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5392 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToOne
;
5394 case GL_SAMPLE_COVERAGE_ARB
:
5395 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5396 *params
= (GLint
) ctx
->Multisample
.SampleCoverage
;
5398 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5399 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5400 *params
= (GLint
) ctx
->Multisample
.SampleCoverageValue
;
5402 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5403 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5404 *params
= (GLint
) ctx
->Multisample
.SampleCoverageInvert
;
5406 case GL_SAMPLE_BUFFERS_ARB
:
5407 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5408 *params
= 0; /* XXX fix someday */
5410 case GL_SAMPLES_ARB
:
5411 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5412 *params
= 0; /* XXX fix someday */
5415 /* GL_IBM_rasterpos_clip */
5416 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5417 CHECK_EXTENSION_I(IBM_rasterpos_clip
, pname
);
5418 *params
= (GLint
) ctx
->Transform
.RasterPositionUnclipped
;
5421 /* GL_NV_point_sprite */
5422 case GL_POINT_SPRITE_NV
:
5423 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
5424 *params
= (GLint
) ctx
->Point
.PointSprite
;
5426 case GL_POINT_SPRITE_R_MODE_NV
:
5427 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
5428 *params
= (GLint
) ctx
->Point
.SpriteRMode
;
5431 /* GL_SGIS_generate_mipmap */
5432 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5433 CHECK_EXTENSION_I(SGIS_generate_mipmap
, pname
);
5434 *params
= (GLint
) ctx
->Hint
.GenerateMipmap
;
5437 #if FEATURE_NV_vertex_program
5438 case GL_VERTEX_PROGRAM_NV
:
5439 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5440 *params
= (GLint
) ctx
->VertexProgram
.Enabled
;
5442 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
5443 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5444 *params
= (GLint
) ctx
->VertexProgram
.PointSizeEnabled
;
5446 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
5447 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5448 *params
= (GLint
) ctx
->VertexProgram
.TwoSideEnabled
;
5450 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
5451 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5452 *params
= MAX_PROGRAM_STACK_DEPTH
;
5454 case GL_MAX_TRACK_MATRICES_NV
:
5455 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5456 *params
= MAX_PROGRAM_MATRICES
;
5458 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
5459 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5460 *params
= ctx
->CurrentStack
->Depth
;
5462 case GL_CURRENT_MATRIX_NV
:
5463 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5464 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
5466 case GL_VERTEX_PROGRAM_BINDING_NV
:
5467 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5468 *params
= (GLint
) ctx
->VertexProgram
.CurrentID
;
5470 case GL_PROGRAM_ERROR_POSITION_NV
:
5471 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5472 *params
= (GLint
) ctx
->VertexProgram
.ErrorPos
;
5474 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
5475 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
5476 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
5477 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
5478 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
5479 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
5480 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
5481 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
5482 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
5483 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
5484 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
5485 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
5486 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
5487 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
5488 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
5489 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
5490 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5492 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
5493 *params
= (GLint
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
5496 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
5497 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
5498 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
5499 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
5500 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
5501 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
5502 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
5503 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
5504 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
5505 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
5506 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
5507 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
5508 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
5509 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
5510 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
5511 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
5512 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
5514 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
5515 *params
= (GLint
) ctx
->Eval
.Map1Attrib
[n
];
5518 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
5519 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
5520 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
5521 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
5522 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
5523 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
5524 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
5525 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
5526 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
5527 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
5528 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
5529 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
5530 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
5531 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
5532 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
5533 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
5534 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
5536 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
5537 *params
= (GLint
) ctx
->Eval
.Map2Attrib
[n
];
5541 /* GL_NV_texture_rectangle */
5542 case GL_TEXTURE_RECTANGLE_NV
:
5543 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5544 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
5546 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
5547 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5548 *params
= (GLint
) textureUnit
->CurrentRect
->Name
;
5550 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
5551 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5552 *params
= (GLint
) ctx
->Const
.MaxTextureRectSize
;
5554 #endif /* FEATURE_NV_vertex_program */
5556 /* GL_EXT_stencil_two_side */
5557 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
5558 CHECK_EXTENSION_I(EXT_stencil_two_side
, pname
);
5559 *params
= (GLint
) ctx
->Stencil
.TestTwoSide
;
5561 case GL_ACTIVE_STENCIL_FACE_EXT
:
5562 CHECK_EXTENSION_I(EXT_stencil_two_side
, pname
);
5563 *params
= (GLint
) (ctx
->Stencil
.ActiveFace
? GL_FRONT
: GL_BACK
);
5567 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv(pname=0x%x)", pname
);
5574 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
5576 GET_CURRENT_CONTEXT(ctx
);
5577 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
5578 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5583 if (MESA_VERBOSE
& VERBOSE_API
)
5584 _mesa_debug(ctx
, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname
));
5586 if (ctx
->Driver
.GetPointerv
5587 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
5591 case GL_VERTEX_ARRAY_POINTER
:
5592 *params
= ctx
->Array
.Vertex
.Ptr
;
5594 case GL_NORMAL_ARRAY_POINTER
:
5595 *params
= ctx
->Array
.Normal
.Ptr
;
5597 case GL_COLOR_ARRAY_POINTER
:
5598 *params
= ctx
->Array
.Color
.Ptr
;
5600 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
5601 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
5603 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
5604 *params
= ctx
->Array
.FogCoord
.Ptr
;
5606 case GL_INDEX_ARRAY_POINTER
:
5607 *params
= ctx
->Array
.Index
.Ptr
;
5609 case GL_TEXTURE_COORD_ARRAY_POINTER
:
5610 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
5612 case GL_EDGE_FLAG_ARRAY_POINTER
:
5613 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
5615 case GL_FEEDBACK_BUFFER_POINTER
:
5616 *params
= ctx
->Feedback
.Buffer
;
5618 case GL_SELECTION_BUFFER_POINTER
:
5619 *params
= ctx
->Select
.Buffer
;
5622 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
5630 _mesa_GetString( GLenum name
)
5632 GET_CURRENT_CONTEXT(ctx
);
5633 static const char *vendor
= "Brian Paul";
5634 static const char *renderer
= "Mesa";
5635 static const char *version_1_2
= "1.2 Mesa 4.1";
5636 static const char *version_1_3
= "1.3 Mesa 4.1";
5637 static const char *version_1_4
= "1.3 Mesa 4.1"; /* change to 1.4 in 5.0 */
5639 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5641 /* this is a required driver function */
5642 assert(ctx
->Driver
.GetString
);
5644 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
5650 return (const GLubyte
*) vendor
;
5652 return (const GLubyte
*) renderer
;
5654 if (ctx
->Extensions
.ARB_multisample
&&
5655 ctx
->Extensions
.ARB_multitexture
&&
5656 ctx
->Extensions
.ARB_texture_border_clamp
&&
5657 ctx
->Extensions
.ARB_texture_compression
&&
5658 ctx
->Extensions
.ARB_texture_cube_map
&&
5659 ctx
->Extensions
.EXT_texture_env_add
&&
5660 ctx
->Extensions
.ARB_texture_env_combine
&&
5661 ctx
->Extensions
.ARB_texture_env_dot3
) {
5662 if (ctx
->Extensions
.ARB_depth_texture
&&
5663 ctx
->Extensions
.ARB_shadow
&&
5664 ctx
->Extensions
.ARB_texture_env_crossbar
&&
5665 ctx
->Extensions
.ARB_texture_mirrored_repeat
&&
5666 ctx
->Extensions
.ARB_window_pos
&&
5667 ctx
->Extensions
.EXT_blend_color
&&
5668 ctx
->Extensions
.EXT_blend_func_separate
&&
5669 ctx
->Extensions
.EXT_blend_logic_op
&&
5670 ctx
->Extensions
.EXT_blend_minmax
&&
5671 ctx
->Extensions
.EXT_blend_subtract
&&
5672 ctx
->Extensions
.EXT_fog_coord
&&
5673 ctx
->Extensions
.EXT_multi_draw_arrays
&&
5674 ctx
->Extensions
.EXT_point_parameters
&& /*aka ARB*/
5675 ctx
->Extensions
.EXT_secondary_color
&&
5676 ctx
->Extensions
.EXT_stencil_wrap
&&
5677 ctx
->Extensions
.SGIS_generate_mipmap
) {
5678 return (const GLubyte
*) version_1_4
;
5681 return (const GLubyte
*) version_1_3
;
5685 return (const GLubyte
*) version_1_2
;
5688 return (const GLubyte
*) _mesa_extensions_get_string(ctx
);
5690 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
5691 return (const GLubyte
*) 0;
5698 * Execute a glGetError command
5701 _mesa_GetError( void )
5703 GET_CURRENT_CONTEXT(ctx
);
5704 GLenum e
= ctx
->ErrorValue
;
5705 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5707 if (MESA_VERBOSE
& VERBOSE_API
)
5708 _mesa_debug(ctx
, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e
));
5710 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;