1 /* $Id: get.c,v 1.83 2002/06/18 16:53:46 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36 #include "extensions.h"
42 #include "math/m_matrix.h"
47 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
48 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
49 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
52 /* Needed for an Amiga compiler */
53 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
54 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
56 /* all other compilers */
57 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
58 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
62 /* Check if named extension is enabled, if not generate error and return */
64 #define CHECK_EXTENSION_B(EXTNAME, PNAME) \
65 if (!ctx->Extensions.EXTNAME) { \
67 sprintf(s, "glGetBooleanv(0x%x)", (int) PNAME); \
68 _mesa_error(ctx, GL_INVALID_VALUE, s); \
72 #define CHECK_EXTENSION_I(EXTNAME, PNAME) \
73 if (!ctx->Extensions.EXTNAME) { \
75 sprintf(s, "glGetIntegerv(0x%x)", (int) PNAME); \
76 _mesa_error(ctx, GL_INVALID_VALUE, s); \
80 #define CHECK_EXTENSION_F(EXTNAME, PNAME) \
81 if (!ctx->Extensions.EXTNAME) { \
83 sprintf(s, "glGetFloatv(0x%x)", (int) PNAME); \
84 _mesa_error(ctx, GL_INVALID_VALUE, s); \
88 #define CHECK_EXTENSION_D(EXTNAME, PNAME) \
89 if (!ctx->Extensions.EXTNAME) { \
91 sprintf(s, "glGetDoublev(0x%x)", (int) PNAME); \
92 _mesa_error(ctx, GL_INVALID_VALUE, s); \
100 pixel_texgen_mode(const GLcontext
*ctx
)
102 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
103 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
111 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
122 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
124 GET_CURRENT_CONTEXT(ctx
);
126 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
127 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
128 ASSERT_OUTSIDE_BEGIN_END(ctx
);
133 /* We need this in order to get correct results for
134 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
136 FLUSH_VERTICES(ctx
, 0);
138 if (MESA_VERBOSE
& VERBOSE_API
)
139 _mesa_debug(ctx
, "glGetBooleanv %s\n", _mesa_lookup_enum_by_nr(pname
));
141 if (ctx
->Driver
.GetBooleanv
142 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
146 case GL_ACCUM_RED_BITS
:
147 *params
= INT_TO_BOOL(ctx
->Visual
.accumRedBits
);
149 case GL_ACCUM_GREEN_BITS
:
150 *params
= INT_TO_BOOL(ctx
->Visual
.accumGreenBits
);
152 case GL_ACCUM_BLUE_BITS
:
153 *params
= INT_TO_BOOL(ctx
->Visual
.accumBlueBits
);
155 case GL_ACCUM_ALPHA_BITS
:
156 *params
= INT_TO_BOOL(ctx
->Visual
.accumAlphaBits
);
158 case GL_ACCUM_CLEAR_VALUE
:
159 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
160 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
161 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
162 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
165 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
168 *params
= INT_TO_BOOL(ctx
->Visual
.alphaBits
);
171 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
174 *params
= ctx
->Color
.AlphaEnabled
;
176 case GL_ALPHA_TEST_FUNC
:
177 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
179 case GL_ALPHA_TEST_REF
:
180 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
182 case GL_ATTRIB_STACK_DEPTH
:
183 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
186 *params
= ctx
->Eval
.AutoNormal
;
189 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
192 *params
= ctx
->Color
.BlendEnabled
;
195 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
198 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
200 case GL_BLEND_SRC_RGB_EXT
:
201 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
203 case GL_BLEND_DST_RGB_EXT
:
204 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
206 case GL_BLEND_SRC_ALPHA_EXT
:
207 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
209 case GL_BLEND_DST_ALPHA_EXT
:
210 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
212 case GL_BLEND_EQUATION_EXT
:
213 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
215 case GL_BLEND_COLOR_EXT
:
216 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
217 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
218 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
219 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
222 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
225 *params
= INT_TO_BOOL( ctx
->Visual
.blueBits
);
228 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
230 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
231 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
239 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
244 case GL_COLOR_CLEAR_VALUE
:
245 params
[0] = ctx
->Color
.ClearColor
[0] ? GL_TRUE
: GL_FALSE
;
246 params
[1] = ctx
->Color
.ClearColor
[1] ? GL_TRUE
: GL_FALSE
;
247 params
[2] = ctx
->Color
.ClearColor
[2] ? GL_TRUE
: GL_FALSE
;
248 params
[3] = ctx
->Color
.ClearColor
[3] ? GL_TRUE
: GL_FALSE
;
250 case GL_COLOR_MATERIAL
:
251 *params
= ctx
->Light
.ColorMaterialEnabled
;
253 case GL_COLOR_MATERIAL_FACE
:
254 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
256 case GL_COLOR_MATERIAL_PARAMETER
:
257 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
259 case GL_COLOR_WRITEMASK
:
260 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
261 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
262 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
263 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
266 *params
= ctx
->Polygon
.CullFlag
;
268 case GL_CULL_FACE_MODE
:
269 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
271 case GL_CURRENT_COLOR
:
272 FLUSH_CURRENT(ctx
, 0);
273 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
274 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
275 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
276 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
278 case GL_CURRENT_INDEX
:
279 FLUSH_CURRENT(ctx
, 0);
280 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
282 case GL_CURRENT_NORMAL
:
283 FLUSH_CURRENT(ctx
, 0);
284 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
285 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
286 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
288 case GL_CURRENT_RASTER_COLOR
:
289 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
290 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
291 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
292 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
294 case GL_CURRENT_RASTER_DISTANCE
:
295 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
297 case GL_CURRENT_RASTER_INDEX
:
298 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
300 case GL_CURRENT_RASTER_POSITION
:
301 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
302 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
303 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
304 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
306 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
307 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][0]);
308 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][1]);
309 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][2]);
310 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][3]);
312 case GL_CURRENT_RASTER_POSITION_VALID
:
313 *params
= ctx
->Current
.RasterPosValid
;
315 case GL_CURRENT_TEXTURE_COORDS
:
316 FLUSH_CURRENT(ctx
, 0);
317 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0]);
318 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1]);
319 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2]);
320 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3]);
323 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
326 *params
= INT_TO_BOOL(ctx
->Visual
.depthBits
);
328 case GL_DEPTH_CLEAR_VALUE
:
329 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
332 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
335 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
336 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
339 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
342 *params
= ctx
->Depth
.Test
;
344 case GL_DEPTH_WRITEMASK
:
345 *params
= ctx
->Depth
.Mask
;
348 *params
= ctx
->Color
.DitherFlag
;
350 case GL_DOUBLEBUFFER
:
351 *params
= ctx
->Visual
.doubleBufferMode
;
354 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
357 FLUSH_CURRENT(ctx
, 0);
358 *params
= ctx
->Current
.EdgeFlag
;
360 case GL_FEEDBACK_BUFFER_SIZE
:
361 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
363 case GL_FEEDBACK_BUFFER_TYPE
:
364 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
367 *params
= ctx
->Fog
.Enabled
;
370 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
371 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
372 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
373 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
376 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
379 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
382 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
385 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
388 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
391 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
394 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
397 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
400 *params
= INT_TO_BOOL( ctx
->Visual
.greenBits
);
403 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
406 *params
= INT_TO_BOOL( ctx
->Visual
.indexBits
);
408 case GL_INDEX_CLEAR_VALUE
:
409 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
412 *params
= ctx
->Visual
.rgbMode
? GL_FALSE
: GL_TRUE
;
414 case GL_INDEX_OFFSET
:
415 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
418 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
420 case GL_INDEX_WRITEMASK
:
421 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
431 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
434 *params
= ctx
->Light
.Enabled
;
436 case GL_LIGHT_MODEL_AMBIENT
:
437 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
438 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
439 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
440 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
442 case GL_LIGHT_MODEL_COLOR_CONTROL
:
443 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
445 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
446 *params
= ctx
->Light
.Model
.LocalViewer
;
448 case GL_LIGHT_MODEL_TWO_SIDE
:
449 *params
= ctx
->Light
.Model
.TwoSide
;
452 *params
= ctx
->Line
.SmoothFlag
;
454 case GL_LINE_SMOOTH_HINT
:
455 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
457 case GL_LINE_STIPPLE
:
458 *params
= ctx
->Line
.StippleFlag
;
460 case GL_LINE_STIPPLE_PATTERN
:
461 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
463 case GL_LINE_STIPPLE_REPEAT
:
464 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
467 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
469 case GL_LINE_WIDTH_GRANULARITY
:
470 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
472 case GL_LINE_WIDTH_RANGE
:
473 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
474 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
476 case GL_ALIASED_LINE_WIDTH_RANGE
:
477 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
478 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
481 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
484 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
487 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
488 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
490 case GL_INDEX_LOGIC_OP
:
491 *params
= ctx
->Color
.IndexLogicOpEnabled
;
493 case GL_COLOR_LOGIC_OP
:
494 *params
= ctx
->Color
.ColorLogicOpEnabled
;
496 case GL_LOGIC_OP_MODE
:
497 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
499 case GL_MAP1_COLOR_4
:
500 *params
= ctx
->Eval
.Map1Color4
;
502 case GL_MAP1_GRID_DOMAIN
:
503 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
504 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
506 case GL_MAP1_GRID_SEGMENTS
:
507 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
510 *params
= ctx
->Eval
.Map1Index
;
513 *params
= ctx
->Eval
.Map1Normal
;
515 case GL_MAP1_TEXTURE_COORD_1
:
516 *params
= ctx
->Eval
.Map1TextureCoord1
;
518 case GL_MAP1_TEXTURE_COORD_2
:
519 *params
= ctx
->Eval
.Map1TextureCoord2
;
521 case GL_MAP1_TEXTURE_COORD_3
:
522 *params
= ctx
->Eval
.Map1TextureCoord3
;
524 case GL_MAP1_TEXTURE_COORD_4
:
525 *params
= ctx
->Eval
.Map1TextureCoord4
;
527 case GL_MAP1_VERTEX_3
:
528 *params
= ctx
->Eval
.Map1Vertex3
;
530 case GL_MAP1_VERTEX_4
:
531 *params
= ctx
->Eval
.Map1Vertex4
;
533 case GL_MAP2_COLOR_4
:
534 *params
= ctx
->Eval
.Map2Color4
;
536 case GL_MAP2_GRID_DOMAIN
:
537 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
538 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
539 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
540 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
542 case GL_MAP2_GRID_SEGMENTS
:
543 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
544 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
547 *params
= ctx
->Eval
.Map2Index
;
550 *params
= ctx
->Eval
.Map2Normal
;
552 case GL_MAP2_TEXTURE_COORD_1
:
553 *params
= ctx
->Eval
.Map2TextureCoord1
;
555 case GL_MAP2_TEXTURE_COORD_2
:
556 *params
= ctx
->Eval
.Map2TextureCoord2
;
558 case GL_MAP2_TEXTURE_COORD_3
:
559 *params
= ctx
->Eval
.Map2TextureCoord3
;
561 case GL_MAP2_TEXTURE_COORD_4
:
562 *params
= ctx
->Eval
.Map2TextureCoord4
;
564 case GL_MAP2_VERTEX_3
:
565 *params
= ctx
->Eval
.Map2Vertex3
;
567 case GL_MAP2_VERTEX_4
:
568 *params
= ctx
->Eval
.Map2Vertex4
;
571 *params
= ctx
->Pixel
.MapColorFlag
;
574 *params
= ctx
->Pixel
.MapStencilFlag
;
577 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
579 case GL_MAX_ATTRIB_STACK_DEPTH
:
580 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
582 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
583 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
585 case GL_MAX_CLIP_PLANES
:
586 *params
= INT_TO_BOOL(ctx
->Const
.MaxClipPlanes
);
588 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
589 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
591 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
592 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
594 case GL_MAX_EVAL_ORDER
:
595 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
598 *params
= INT_TO_BOOL(ctx
->Const
.MaxLights
);
600 case GL_MAX_LIST_NESTING
:
601 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
603 case GL_MAX_MODELVIEW_STACK_DEPTH
:
604 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
606 case GL_MAX_NAME_STACK_DEPTH
:
607 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
609 case GL_MAX_PIXEL_MAP_TABLE
:
610 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
612 case GL_MAX_PROJECTION_STACK_DEPTH
:
613 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
615 case GL_MAX_TEXTURE_SIZE
:
616 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxTextureLevels
- 1));
618 case GL_MAX_3D_TEXTURE_SIZE
:
619 *params
= INT_TO_BOOL(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
621 case GL_MAX_TEXTURE_STACK_DEPTH
:
622 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
624 case GL_MAX_VIEWPORT_DIMS
:
625 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
626 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
628 case GL_MODELVIEW_MATRIX
:
630 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelviewMatrixStack
.Top
->m
[i
]);
633 case GL_MODELVIEW_STACK_DEPTH
:
634 *params
= INT_TO_BOOL(ctx
->ModelviewMatrixStack
.Depth
+ 1);
636 case GL_NAME_STACK_DEPTH
:
637 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
640 *params
= ctx
->Transform
.Normalize
;
642 case GL_PACK_ALIGNMENT
:
643 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
645 case GL_PACK_LSB_FIRST
:
646 *params
= ctx
->Pack
.LsbFirst
;
648 case GL_PACK_ROW_LENGTH
:
649 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
651 case GL_PACK_SKIP_PIXELS
:
652 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
654 case GL_PACK_SKIP_ROWS
:
655 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
657 case GL_PACK_SWAP_BYTES
:
658 *params
= ctx
->Pack
.SwapBytes
;
660 case GL_PACK_SKIP_IMAGES_EXT
:
661 *params
= ctx
->Pack
.SkipImages
;
663 case GL_PACK_IMAGE_HEIGHT_EXT
:
664 *params
= ctx
->Pack
.ImageHeight
;
666 case GL_PERSPECTIVE_CORRECTION_HINT
:
667 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
669 case GL_PIXEL_MAP_A_TO_A_SIZE
:
670 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
672 case GL_PIXEL_MAP_B_TO_B_SIZE
:
673 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
675 case GL_PIXEL_MAP_G_TO_G_SIZE
:
676 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
678 case GL_PIXEL_MAP_I_TO_A_SIZE
:
679 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
681 case GL_PIXEL_MAP_I_TO_B_SIZE
:
682 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
684 case GL_PIXEL_MAP_I_TO_G_SIZE
:
685 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
687 case GL_PIXEL_MAP_I_TO_I_SIZE
:
688 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
690 case GL_PIXEL_MAP_I_TO_R_SIZE
:
691 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
693 case GL_PIXEL_MAP_R_TO_R_SIZE
:
694 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
696 case GL_PIXEL_MAP_S_TO_S_SIZE
:
697 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
700 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
702 case GL_POINT_SIZE_GRANULARITY
:
703 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
705 case GL_POINT_SIZE_RANGE
:
706 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
707 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
709 case GL_ALIASED_POINT_SIZE_RANGE
:
710 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
711 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
713 case GL_POINT_SMOOTH
:
714 *params
= ctx
->Point
.SmoothFlag
;
716 case GL_POINT_SMOOTH_HINT
:
717 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
719 case GL_POINT_SIZE_MIN_EXT
:
720 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
722 case GL_POINT_SIZE_MAX_EXT
:
723 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
725 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
726 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
728 case GL_DISTANCE_ATTENUATION_EXT
:
729 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
730 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
731 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
733 case GL_POLYGON_MODE
:
734 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
735 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
737 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
738 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
740 case GL_POLYGON_OFFSET_FACTOR
:
741 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
743 case GL_POLYGON_OFFSET_UNITS
:
744 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
746 case GL_POLYGON_SMOOTH
:
747 *params
= ctx
->Polygon
.SmoothFlag
;
749 case GL_POLYGON_SMOOTH_HINT
:
750 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
752 case GL_POLYGON_STIPPLE
:
753 *params
= ctx
->Polygon
.StippleFlag
;
755 case GL_PROJECTION_MATRIX
:
757 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrixStack
.Top
->m
[i
]);
760 case GL_PROJECTION_STACK_DEPTH
:
761 *params
= INT_TO_BOOL(ctx
->ProjectionMatrixStack
.Depth
+ 1);
764 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
767 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
770 *params
= INT_TO_BOOL( ctx
->Visual
.redBits
);
773 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
776 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
778 case GL_RESCALE_NORMAL
:
779 *params
= ctx
->Transform
.RescaleNormals
;
782 *params
= ctx
->Visual
.rgbMode
;
785 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
786 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
787 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
788 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
790 case GL_SCISSOR_TEST
:
791 *params
= ctx
->Scissor
.Enabled
;
793 case GL_SELECTION_BUFFER_SIZE
:
794 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
797 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
799 case GL_SHARED_TEXTURE_PALETTE_EXT
:
800 *params
= ctx
->Texture
.SharedPalette
;
802 case GL_STENCIL_BITS
:
803 *params
= INT_TO_BOOL(ctx
->Visual
.stencilBits
);
805 case GL_STENCIL_CLEAR_VALUE
:
806 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
808 case GL_STENCIL_FAIL
:
809 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
);
811 case GL_STENCIL_FUNC
:
812 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
);
814 case GL_STENCIL_PASS_DEPTH_FAIL
:
815 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
);
817 case GL_STENCIL_PASS_DEPTH_PASS
:
818 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
);
821 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
);
823 case GL_STENCIL_TEST
:
824 *params
= ctx
->Stencil
.Enabled
;
826 case GL_STENCIL_VALUE_MASK
:
827 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
);
829 case GL_STENCIL_WRITEMASK
:
830 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
);
833 *params
= ctx
->Visual
.stereoMode
;
835 case GL_SUBPIXEL_BITS
:
836 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
839 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
842 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
845 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
847 case GL_TEXTURE_BINDING_1D
:
848 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
850 case GL_TEXTURE_BINDING_2D
:
851 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
853 case GL_TEXTURE_BINDING_3D
:
854 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
856 case GL_TEXTURE_ENV_COLOR
:
858 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
859 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
860 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
861 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
864 case GL_TEXTURE_ENV_MODE
:
865 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
867 case GL_TEXTURE_GEN_S
:
868 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
870 case GL_TEXTURE_GEN_T
:
871 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
873 case GL_TEXTURE_GEN_R
:
874 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
876 case GL_TEXTURE_GEN_Q
:
877 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
879 case GL_TEXTURE_MATRIX
:
882 FLOAT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
]);
885 case GL_TEXTURE_STACK_DEPTH
:
886 *params
= INT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
888 case GL_UNPACK_ALIGNMENT
:
889 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
891 case GL_UNPACK_LSB_FIRST
:
892 *params
= ctx
->Unpack
.LsbFirst
;
894 case GL_UNPACK_ROW_LENGTH
:
895 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
897 case GL_UNPACK_SKIP_PIXELS
:
898 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
900 case GL_UNPACK_SKIP_ROWS
:
901 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
903 case GL_UNPACK_SWAP_BYTES
:
904 *params
= ctx
->Unpack
.SwapBytes
;
906 case GL_UNPACK_SKIP_IMAGES_EXT
:
907 *params
= ctx
->Unpack
.SkipImages
;
909 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
910 *params
= ctx
->Unpack
.ImageHeight
;
913 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
914 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
915 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
916 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
919 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
922 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
924 case GL_VERTEX_ARRAY
:
925 *params
= ctx
->Array
.Vertex
.Enabled
;
927 case GL_VERTEX_ARRAY_SIZE
:
928 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
930 case GL_VERTEX_ARRAY_TYPE
:
931 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
933 case GL_VERTEX_ARRAY_STRIDE
:
934 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
936 case GL_VERTEX_ARRAY_COUNT_EXT
:
937 *params
= INT_TO_BOOL(0);
939 case GL_NORMAL_ARRAY
:
940 *params
= ctx
->Array
.Normal
.Enabled
;
942 case GL_NORMAL_ARRAY_TYPE
:
943 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
945 case GL_NORMAL_ARRAY_STRIDE
:
946 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
948 case GL_NORMAL_ARRAY_COUNT_EXT
:
949 *params
= INT_TO_BOOL(0);
952 *params
= ctx
->Array
.Color
.Enabled
;
954 case GL_COLOR_ARRAY_SIZE
:
955 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
957 case GL_COLOR_ARRAY_TYPE
:
958 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
960 case GL_COLOR_ARRAY_STRIDE
:
961 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
963 case GL_COLOR_ARRAY_COUNT_EXT
:
964 *params
= INT_TO_BOOL(0);
967 *params
= ctx
->Array
.Index
.Enabled
;
969 case GL_INDEX_ARRAY_TYPE
:
970 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
972 case GL_INDEX_ARRAY_STRIDE
:
973 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
975 case GL_INDEX_ARRAY_COUNT_EXT
:
976 *params
= INT_TO_BOOL(0);
978 case GL_TEXTURE_COORD_ARRAY
:
979 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
981 case GL_TEXTURE_COORD_ARRAY_SIZE
:
982 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
984 case GL_TEXTURE_COORD_ARRAY_TYPE
:
985 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
987 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
988 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
990 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
991 *params
= INT_TO_BOOL(0);
993 case GL_EDGE_FLAG_ARRAY
:
994 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
996 case GL_EDGE_FLAG_ARRAY_STRIDE
:
997 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
999 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1000 *params
= INT_TO_BOOL(0);
1003 /* GL_ARB_multitexture */
1004 case GL_MAX_TEXTURE_UNITS_ARB
:
1005 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1006 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureUnits
);
1008 case GL_ACTIVE_TEXTURE_ARB
:
1009 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1010 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1012 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1013 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1014 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1017 /* GL_ARB_texture_cube_map */
1018 case GL_TEXTURE_CUBE_MAP_ARB
:
1019 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1020 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1022 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1023 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1024 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
1026 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1027 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1028 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
1031 /* GL_ARB_texture_compression */
1032 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1033 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1034 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1036 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1037 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1038 *params
= INT_TO_BOOL(ctx
->Const
.NumCompressedTextureFormats
);
1040 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1041 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1044 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
1045 params
[i
] = INT_TO_BOOL(ctx
->Const
.CompressedTextureFormats
[i
]);
1049 /* GL_EXT_compiled_vertex_array */
1050 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1051 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1053 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1054 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1057 /* GL_ARB_transpose_matrix */
1058 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1062 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
1063 for (i
=0;i
<16;i
++) {
1064 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1068 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1072 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
1073 for (i
=0;i
<16;i
++) {
1074 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1078 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1082 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
1083 for (i
=0;i
<16;i
++) {
1084 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1088 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1092 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
1093 for (i
=0;i
<16;i
++) {
1094 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1099 /* GL_HP_occlusion_test */
1100 case GL_OCCLUSION_TEST_HP
:
1101 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1102 *params
= ctx
->Depth
.OcclusionTest
;
1104 case GL_OCCLUSION_TEST_RESULT_HP
:
1105 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1106 if (ctx
->Depth
.OcclusionTest
)
1107 *params
= ctx
->OcclusionResult
;
1109 *params
= ctx
->OcclusionResultSaved
;
1110 /* reset flag now */
1111 ctx
->OcclusionResult
= GL_FALSE
;
1112 ctx
->OcclusionResultSaved
= GL_FALSE
;
1115 /* GL_SGIS_pixel_texture */
1116 case GL_PIXEL_TEXTURE_SGIS
:
1117 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1120 /* GL_SGIX_pixel_texture */
1121 case GL_PIXEL_TEX_GEN_SGIX
:
1122 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1124 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1125 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1128 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1129 case GL_COLOR_MATRIX_SGI
:
1130 for (i
=0;i
<16;i
++) {
1131 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrixStack
.Top
->m
[i
]);
1134 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1135 *params
= INT_TO_BOOL(ctx
->ColorMatrixStack
.Depth
+ 1);
1137 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1138 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1140 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1141 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1143 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1144 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1146 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1147 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1149 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1150 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1152 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1153 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1155 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1156 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1158 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1159 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1161 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1162 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1165 /* GL_EXT_convolution (also in 1.2 imaging) */
1166 case GL_CONVOLUTION_1D_EXT
:
1167 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1168 *params
= ctx
->Pixel
.Convolution1DEnabled
;
1170 case GL_CONVOLUTION_2D
:
1171 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1172 *params
= ctx
->Pixel
.Convolution2DEnabled
;
1174 case GL_SEPARABLE_2D
:
1175 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1176 *params
= ctx
->Pixel
.Separable2DEnabled
;
1178 case GL_MAX_CONVOLUTION_WIDTH
:
1179 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1180 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionWidth
);
1182 case GL_MAX_CONVOLUTION_HEIGHT
:
1183 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1184 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionHeight
);
1186 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1187 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1188 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1190 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1191 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1192 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1194 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1195 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1196 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1198 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1199 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1200 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1202 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1203 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1204 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1206 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1207 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1208 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1210 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1211 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1212 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1214 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1215 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1216 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1219 /* GL_EXT_histogram (also in 1.2 imaging) */
1221 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1222 *params
= ctx
->Pixel
.HistogramEnabled
;
1225 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1226 *params
= ctx
->Pixel
.MinMaxEnabled
;
1229 /* GL_SGI_color_table (also in 1.2 imaging */
1230 case GL_COLOR_TABLE_SGI
:
1231 *params
= ctx
->Pixel
.ColorTableEnabled
;
1233 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1234 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1236 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1237 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1240 /* GL_EXT_secondary_color */
1241 case GL_COLOR_SUM_EXT
:
1242 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1243 *params
= ctx
->Fog
.ColorSumEnabled
;
1245 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1246 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1247 FLUSH_CURRENT(ctx
, 0);
1248 params
[0] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1249 params
[1] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1250 params
[2] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1252 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1253 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1254 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1256 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1257 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1258 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1260 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1261 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1262 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1264 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1265 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1266 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1269 /* GL_EXT_fog_coord */
1270 case GL_CURRENT_FOG_COORDINATE_EXT
:
1271 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1272 FLUSH_CURRENT(ctx
, 0);
1273 *params
= FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1275 case GL_FOG_COORDINATE_ARRAY_EXT
:
1276 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1277 *params
= ctx
->Array
.FogCoord
.Enabled
;
1279 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1280 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1281 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1283 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1284 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1285 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1288 /* GL_EXT_texture_lod_bias */
1289 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1290 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureLodBias
);
1293 /* GL_EXT_texture_filter_anisotropic */
1294 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1295 CHECK_EXTENSION_B(EXT_texture_filter_anisotropic
, pname
);
1296 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureMaxAnisotropy
);
1299 /* GL_ARB_multisample */
1300 case GL_MULTISAMPLE_ARB
:
1301 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1302 *params
= ctx
->Multisample
.Enabled
;
1304 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1305 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1306 *params
= ctx
->Multisample
.SampleAlphaToCoverage
;
1308 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1309 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1310 *params
= ctx
->Multisample
.SampleAlphaToOne
;
1312 case GL_SAMPLE_COVERAGE_ARB
:
1313 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1314 *params
= ctx
->Multisample
.SampleCoverage
;
1316 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1317 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1318 *params
= FLOAT_TO_BOOL(ctx
->Multisample
.SampleCoverageValue
);
1320 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1321 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1322 *params
= ctx
->Multisample
.SampleCoverageInvert
;
1324 case GL_SAMPLE_BUFFERS_ARB
:
1325 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1326 *params
= 0; /* XXX fix someday */
1328 case GL_SAMPLES_ARB
:
1329 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1330 *params
= 0; /* XXX fix someday */
1333 /* GL_IBM_rasterpos_clip */
1334 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1335 CHECK_EXTENSION_B(IBM_rasterpos_clip
, pname
);
1336 *params
= ctx
->Transform
.RasterPositionUnclipped
;
1339 /* GL_NV_point_sprite */
1340 case GL_POINT_SPRITE_NV
:
1341 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
1342 *params
= ctx
->Point
.PointSprite
;
1344 case GL_POINT_SPRITE_R_MODE_NV
:
1345 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
1346 *params
= ENUM_TO_BOOL(ctx
->Point
.SpriteRMode
);
1349 /* GL_SGIS_generate_mipmap */
1350 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1351 CHECK_EXTENSION_B(SGIS_generate_mipmap
, pname
);
1352 *params
= ENUM_TO_BOOL(ctx
->Hint
.GenerateMipmap
);
1355 /* GL_NV_vertex_program */
1356 case GL_VERTEX_PROGRAM_NV
:
1357 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1358 *params
= ctx
->VertexProgram
.Enabled
;
1360 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
1361 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1362 *params
= ctx
->VertexProgram
.PointSizeEnabled
;
1364 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
1365 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1366 *params
= ctx
->VertexProgram
.TwoSideEnabled
;
1368 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
1369 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1370 *params
= (MAX_PROGRAM_STACK_DEPTH
> 0) ? GL_TRUE
: GL_FALSE
;
1372 case GL_MAX_TRACK_MATRICES_NV
:
1373 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1374 *params
= (MAX_PROGRAM_MATRICES
> 0) ? GL_TRUE
: GL_FALSE
;
1376 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
1377 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1378 *params
= (ctx
->CurrentStack
->Depth
> 0) ? GL_TRUE
: GL_FALSE
;
1380 case GL_CURRENT_MATRIX_NV
:
1381 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1382 *params
= (ctx
->Transform
.MatrixMode
!= 0) ? GL_TRUE
: GL_FALSE
;
1384 case GL_VERTEX_PROGRAM_BINDING_NV
:
1385 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1386 *params
= (ctx
->VertexProgram
.CurrentID
!= 0) ? GL_TRUE
: GL_FALSE
;
1388 case GL_PROGRAM_ERROR_POSITION_NV
:
1389 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1390 *params
= (ctx
->VertexProgram
.ErrorPos
!= 0) ? GL_TRUE
: GL_FALSE
;
1392 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1393 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1394 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1395 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1396 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1397 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1398 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1399 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1400 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1401 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1402 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1403 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1404 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1405 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1406 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1407 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1408 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1410 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
1411 *params
= ctx
->Array
.VertexAttrib
[n
].Enabled
;
1414 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1415 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1416 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1417 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1418 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1419 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1420 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1421 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1422 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1423 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1424 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1425 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1426 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1427 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1428 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1429 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1430 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1432 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
1433 *params
= ctx
->Eval
.Map1Attrib
[n
];
1436 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
1437 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
1438 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
1439 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
1440 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
1441 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
1442 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
1443 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
1444 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
1445 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
1446 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
1447 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
1448 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
1449 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
1450 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
1451 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
1452 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1454 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
1455 *params
= ctx
->Eval
.Map2Attrib
[n
];
1459 /* GL_NV_texture_rectangle */
1460 case GL_TEXTURE_RECTANGLE_NV
:
1461 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1462 *params
= _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1464 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1465 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1466 *params
= INT_TO_BOOL(textureUnit
->CurrentRect
->Name
);
1468 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1469 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1470 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureRectSize
);
1476 sprintf(s
, "glGetBooleanv(pname=0x%x)", pname
);
1477 _mesa_error( ctx
, GL_INVALID_ENUM
, s
);
1484 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1486 GET_CURRENT_CONTEXT(ctx
);
1488 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1489 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1490 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1495 /* We need this in order to get correct results for
1496 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
1498 FLUSH_VERTICES(ctx
, 0);
1500 if (MESA_VERBOSE
& VERBOSE_API
)
1501 _mesa_debug(ctx
, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname
));
1503 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1507 case GL_ACCUM_RED_BITS
:
1508 *params
= (GLdouble
) ctx
->Visual
.accumRedBits
;
1510 case GL_ACCUM_GREEN_BITS
:
1511 *params
= (GLdouble
) ctx
->Visual
.accumGreenBits
;
1513 case GL_ACCUM_BLUE_BITS
:
1514 *params
= (GLdouble
) ctx
->Visual
.accumBlueBits
;
1516 case GL_ACCUM_ALPHA_BITS
:
1517 *params
= (GLdouble
) ctx
->Visual
.accumAlphaBits
;
1519 case GL_ACCUM_CLEAR_VALUE
:
1520 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1521 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1522 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1523 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1526 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1529 *params
= (GLdouble
) ctx
->Visual
.alphaBits
;
1531 case GL_ALPHA_SCALE
:
1532 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1535 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1537 case GL_ALPHA_TEST_FUNC
:
1538 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1540 case GL_ALPHA_TEST_REF
:
1541 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
1543 case GL_ATTRIB_STACK_DEPTH
:
1544 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1546 case GL_AUTO_NORMAL
:
1547 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1549 case GL_AUX_BUFFERS
:
1550 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1553 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1556 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1559 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1561 case GL_BLEND_SRC_RGB_EXT
:
1562 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1564 case GL_BLEND_DST_RGB_EXT
:
1565 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1567 case GL_BLEND_SRC_ALPHA_EXT
:
1568 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1570 case GL_BLEND_DST_ALPHA_EXT
:
1571 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1573 case GL_BLEND_EQUATION_EXT
:
1574 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1576 case GL_BLEND_COLOR_EXT
:
1577 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1578 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1579 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1580 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1583 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1586 *params
= (GLdouble
) ctx
->Visual
.blueBits
;
1589 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1591 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1592 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1594 case GL_CLIP_PLANE0
:
1595 case GL_CLIP_PLANE1
:
1596 case GL_CLIP_PLANE2
:
1597 case GL_CLIP_PLANE3
:
1598 case GL_CLIP_PLANE4
:
1599 case GL_CLIP_PLANE5
:
1600 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
1605 case GL_COLOR_CLEAR_VALUE
:
1606 params
[0] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[0]);
1607 params
[1] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[1]);
1608 params
[2] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[2]);
1609 params
[3] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[3]);
1611 case GL_COLOR_MATERIAL
:
1612 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1614 case GL_COLOR_MATERIAL_FACE
:
1615 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1617 case GL_COLOR_MATERIAL_PARAMETER
:
1618 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1620 case GL_COLOR_WRITEMASK
:
1621 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1622 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1623 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1624 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1627 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1629 case GL_CULL_FACE_MODE
:
1630 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1632 case GL_CURRENT_COLOR
:
1633 FLUSH_CURRENT(ctx
, 0);
1634 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
1635 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
1636 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
1637 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
1639 case GL_CURRENT_INDEX
:
1640 FLUSH_CURRENT(ctx
, 0);
1641 *params
= (GLdouble
) ctx
->Current
.Index
;
1643 case GL_CURRENT_NORMAL
:
1644 FLUSH_CURRENT(ctx
, 0);
1645 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
1646 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
1647 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
1649 case GL_CURRENT_RASTER_COLOR
:
1650 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1651 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1652 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1653 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1655 case GL_CURRENT_RASTER_DISTANCE
:
1656 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1658 case GL_CURRENT_RASTER_INDEX
:
1659 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1661 case GL_CURRENT_RASTER_POSITION
:
1662 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1663 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1664 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1665 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1667 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1668 params
[0] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
1669 params
[1] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
1670 params
[2] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
1671 params
[3] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
1673 case GL_CURRENT_RASTER_POSITION_VALID
:
1674 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1676 case GL_CURRENT_TEXTURE_COORDS
:
1677 FLUSH_CURRENT(ctx
, 0);
1678 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
1679 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
1680 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
1681 params
[3] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
1684 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1687 *params
= (GLdouble
) ctx
->Visual
.depthBits
;
1689 case GL_DEPTH_CLEAR_VALUE
:
1690 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1693 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1695 case GL_DEPTH_RANGE
:
1696 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1697 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1699 case GL_DEPTH_SCALE
:
1700 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1703 *params
= (GLdouble
) ctx
->Depth
.Test
;
1705 case GL_DEPTH_WRITEMASK
:
1706 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1709 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1711 case GL_DOUBLEBUFFER
:
1712 *params
= (GLdouble
) ctx
->Visual
.doubleBufferMode
;
1714 case GL_DRAW_BUFFER
:
1715 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1718 FLUSH_CURRENT(ctx
, 0);
1719 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1721 case GL_FEEDBACK_BUFFER_SIZE
:
1722 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1724 case GL_FEEDBACK_BUFFER_TYPE
:
1725 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1728 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1731 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1732 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1733 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1734 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1736 case GL_FOG_DENSITY
:
1737 *params
= (GLdouble
) ctx
->Fog
.Density
;
1740 *params
= (GLdouble
) ctx
->Fog
.End
;
1743 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1746 *params
= (GLdouble
) ctx
->Fog
.Index
;
1749 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1752 *params
= (GLdouble
) ctx
->Fog
.Start
;
1755 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1758 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1761 *params
= (GLdouble
) ctx
->Visual
.greenBits
;
1763 case GL_GREEN_SCALE
:
1764 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1767 *params
= (GLdouble
) ctx
->Visual
.indexBits
;
1769 case GL_INDEX_CLEAR_VALUE
:
1770 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1773 *params
= ctx
->Visual
.rgbMode
? 0.0 : 1.0;
1775 case GL_INDEX_OFFSET
:
1776 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1778 case GL_INDEX_SHIFT
:
1779 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1781 case GL_INDEX_WRITEMASK
:
1782 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1792 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1795 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1797 case GL_LIGHT_MODEL_AMBIENT
:
1798 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1799 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1800 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1801 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1803 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1804 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1806 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1807 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1809 case GL_LIGHT_MODEL_TWO_SIDE
:
1810 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1812 case GL_LINE_SMOOTH
:
1813 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1815 case GL_LINE_SMOOTH_HINT
:
1816 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1818 case GL_LINE_STIPPLE
:
1819 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1821 case GL_LINE_STIPPLE_PATTERN
:
1822 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1824 case GL_LINE_STIPPLE_REPEAT
:
1825 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1828 *params
= (GLdouble
) ctx
->Line
.Width
;
1830 case GL_LINE_WIDTH_GRANULARITY
:
1831 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1833 case GL_LINE_WIDTH_RANGE
:
1834 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1835 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1837 case GL_ALIASED_LINE_WIDTH_RANGE
:
1838 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1839 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1842 *params
= (GLdouble
) ctx
->List
.ListBase
;
1845 *params
= (GLdouble
) ctx
->CurrentListNum
;
1848 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1849 : ENUM_TO_DOUBLE(GL_COMPILE
);
1851 case GL_INDEX_LOGIC_OP
:
1852 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1854 case GL_COLOR_LOGIC_OP
:
1855 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1857 case GL_LOGIC_OP_MODE
:
1858 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1860 case GL_MAP1_COLOR_4
:
1861 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1863 case GL_MAP1_GRID_DOMAIN
:
1864 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1865 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1867 case GL_MAP1_GRID_SEGMENTS
:
1868 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1871 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1873 case GL_MAP1_NORMAL
:
1874 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1876 case GL_MAP1_TEXTURE_COORD_1
:
1877 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1879 case GL_MAP1_TEXTURE_COORD_2
:
1880 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1882 case GL_MAP1_TEXTURE_COORD_3
:
1883 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1885 case GL_MAP1_TEXTURE_COORD_4
:
1886 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1888 case GL_MAP1_VERTEX_3
:
1889 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1891 case GL_MAP1_VERTEX_4
:
1892 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1894 case GL_MAP2_COLOR_4
:
1895 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1897 case GL_MAP2_GRID_DOMAIN
:
1898 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1899 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1900 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1901 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1903 case GL_MAP2_GRID_SEGMENTS
:
1904 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1905 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1908 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1910 case GL_MAP2_NORMAL
:
1911 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1913 case GL_MAP2_TEXTURE_COORD_1
:
1914 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1916 case GL_MAP2_TEXTURE_COORD_2
:
1917 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1919 case GL_MAP2_TEXTURE_COORD_3
:
1920 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1922 case GL_MAP2_TEXTURE_COORD_4
:
1923 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1925 case GL_MAP2_VERTEX_3
:
1926 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1928 case GL_MAP2_VERTEX_4
:
1929 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1932 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1934 case GL_MAP_STENCIL
:
1935 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1937 case GL_MATRIX_MODE
:
1938 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1940 case GL_MAX_ATTRIB_STACK_DEPTH
:
1941 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1943 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1944 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1946 case GL_MAX_CLIP_PLANES
:
1947 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
1949 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1950 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1952 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1953 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1955 case GL_MAX_EVAL_ORDER
:
1956 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1959 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
1961 case GL_MAX_LIST_NESTING
:
1962 *params
= (GLdouble
) MAX_LIST_NESTING
;
1964 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1965 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1967 case GL_MAX_NAME_STACK_DEPTH
:
1968 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1970 case GL_MAX_PIXEL_MAP_TABLE
:
1971 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1973 case GL_MAX_PROJECTION_STACK_DEPTH
:
1974 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1976 case GL_MAX_TEXTURE_SIZE
:
1977 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
1979 case GL_MAX_3D_TEXTURE_SIZE
:
1980 *params
= (GLdouble
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
1982 case GL_MAX_TEXTURE_STACK_DEPTH
:
1983 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1985 case GL_MAX_VIEWPORT_DIMS
:
1986 params
[0] = (GLdouble
) MAX_WIDTH
;
1987 params
[1] = (GLdouble
) MAX_HEIGHT
;
1989 case GL_MODELVIEW_MATRIX
:
1990 for (i
=0;i
<16;i
++) {
1991 params
[i
] = (GLdouble
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
1994 case GL_MODELVIEW_STACK_DEPTH
:
1995 *params
= (GLdouble
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
1997 case GL_NAME_STACK_DEPTH
:
1998 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
2001 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
2003 case GL_PACK_ALIGNMENT
:
2004 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
2006 case GL_PACK_LSB_FIRST
:
2007 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
2009 case GL_PACK_ROW_LENGTH
:
2010 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
2012 case GL_PACK_SKIP_PIXELS
:
2013 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
2015 case GL_PACK_SKIP_ROWS
:
2016 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
2018 case GL_PACK_SWAP_BYTES
:
2019 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
2021 case GL_PACK_SKIP_IMAGES_EXT
:
2022 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
2024 case GL_PACK_IMAGE_HEIGHT_EXT
:
2025 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
2027 case GL_PERSPECTIVE_CORRECTION_HINT
:
2028 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
2030 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2031 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
2033 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2034 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
2036 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2037 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
2039 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2040 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
2042 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2043 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
2045 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2046 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
2048 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2049 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
2051 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2052 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
2054 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2055 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
2057 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2058 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
2061 *params
= (GLdouble
) ctx
->Point
.Size
;
2063 case GL_POINT_SIZE_GRANULARITY
:
2064 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
2066 case GL_POINT_SIZE_RANGE
:
2067 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
2068 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
2070 case GL_ALIASED_POINT_SIZE_RANGE
:
2071 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
2072 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
2074 case GL_POINT_SMOOTH
:
2075 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
2077 case GL_POINT_SMOOTH_HINT
:
2078 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
2080 case GL_POINT_SIZE_MIN_EXT
:
2081 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
2083 case GL_POINT_SIZE_MAX_EXT
:
2084 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
2086 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2087 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
2089 case GL_DISTANCE_ATTENUATION_EXT
:
2090 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
2091 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
2092 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
2094 case GL_POLYGON_MODE
:
2095 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
2096 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
2098 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
2099 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2101 case GL_POLYGON_OFFSET_FACTOR
:
2102 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
2104 case GL_POLYGON_OFFSET_UNITS
:
2105 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2107 case GL_POLYGON_SMOOTH
:
2108 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
2110 case GL_POLYGON_SMOOTH_HINT
:
2111 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
2113 case GL_POLYGON_STIPPLE
:
2114 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
2116 case GL_PROJECTION_MATRIX
:
2117 for (i
=0;i
<16;i
++) {
2118 params
[i
] = (GLdouble
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
2121 case GL_PROJECTION_STACK_DEPTH
:
2122 *params
= (GLdouble
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
2124 case GL_READ_BUFFER
:
2125 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
2128 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
2131 *params
= (GLdouble
) ctx
->Visual
.redBits
;
2134 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
2136 case GL_RENDER_MODE
:
2137 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
2139 case GL_RESCALE_NORMAL
:
2140 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
2143 *params
= (GLdouble
) ctx
->Visual
.rgbMode
;
2145 case GL_SCISSOR_BOX
:
2146 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
2147 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
2148 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
2149 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
2151 case GL_SCISSOR_TEST
:
2152 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
2154 case GL_SELECTION_BUFFER_SIZE
:
2155 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
2157 case GL_SHADE_MODEL
:
2158 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
2160 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2161 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
2163 case GL_STENCIL_BITS
:
2164 *params
= (GLdouble
) ctx
->Visual
.stencilBits
;
2166 case GL_STENCIL_CLEAR_VALUE
:
2167 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
2169 case GL_STENCIL_FAIL
:
2170 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
2172 case GL_STENCIL_FUNC
:
2173 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
2175 case GL_STENCIL_PASS_DEPTH_FAIL
:
2176 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
2178 case GL_STENCIL_PASS_DEPTH_PASS
:
2179 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
2181 case GL_STENCIL_REF
:
2182 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
2184 case GL_STENCIL_TEST
:
2185 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2187 case GL_STENCIL_VALUE_MASK
:
2188 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
2190 case GL_STENCIL_WRITEMASK
:
2191 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
2194 *params
= (GLdouble
) ctx
->Visual
.stereoMode
;
2196 case GL_SUBPIXEL_BITS
:
2197 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2200 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2203 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2206 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2208 case GL_TEXTURE_BINDING_1D
:
2209 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2211 case GL_TEXTURE_BINDING_2D
:
2212 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2214 case GL_TEXTURE_BINDING_3D
:
2215 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2217 case GL_TEXTURE_ENV_COLOR
:
2218 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2219 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2220 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2221 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2223 case GL_TEXTURE_ENV_MODE
:
2224 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2226 case GL_TEXTURE_GEN_S
:
2227 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2229 case GL_TEXTURE_GEN_T
:
2230 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2232 case GL_TEXTURE_GEN_R
:
2233 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2235 case GL_TEXTURE_GEN_Q
:
2236 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2238 case GL_TEXTURE_MATRIX
:
2239 for (i
=0;i
<16;i
++) {
2240 params
[i
] = (GLdouble
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
2243 case GL_TEXTURE_STACK_DEPTH
:
2244 *params
= (GLdouble
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
2246 case GL_UNPACK_ALIGNMENT
:
2247 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2249 case GL_UNPACK_LSB_FIRST
:
2250 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2252 case GL_UNPACK_ROW_LENGTH
:
2253 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2255 case GL_UNPACK_SKIP_PIXELS
:
2256 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2258 case GL_UNPACK_SKIP_ROWS
:
2259 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2261 case GL_UNPACK_SWAP_BYTES
:
2262 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2264 case GL_UNPACK_SKIP_IMAGES_EXT
:
2265 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2267 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2268 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2271 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2272 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2273 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2274 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2277 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2280 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2282 case GL_VERTEX_ARRAY
:
2283 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2285 case GL_VERTEX_ARRAY_SIZE
:
2286 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2288 case GL_VERTEX_ARRAY_TYPE
:
2289 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2291 case GL_VERTEX_ARRAY_STRIDE
:
2292 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2294 case GL_VERTEX_ARRAY_COUNT_EXT
:
2297 case GL_NORMAL_ARRAY
:
2298 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2300 case GL_NORMAL_ARRAY_TYPE
:
2301 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2303 case GL_NORMAL_ARRAY_STRIDE
:
2304 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2306 case GL_NORMAL_ARRAY_COUNT_EXT
:
2309 case GL_COLOR_ARRAY
:
2310 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2312 case GL_COLOR_ARRAY_SIZE
:
2313 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2315 case GL_COLOR_ARRAY_TYPE
:
2316 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2318 case GL_COLOR_ARRAY_STRIDE
:
2319 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2321 case GL_COLOR_ARRAY_COUNT_EXT
:
2324 case GL_INDEX_ARRAY
:
2325 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2327 case GL_INDEX_ARRAY_TYPE
:
2328 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2330 case GL_INDEX_ARRAY_STRIDE
:
2331 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2333 case GL_INDEX_ARRAY_COUNT_EXT
:
2336 case GL_TEXTURE_COORD_ARRAY
:
2337 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2339 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2340 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2342 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2343 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2345 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2346 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2348 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2351 case GL_EDGE_FLAG_ARRAY
:
2352 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2354 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2355 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2357 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2361 /* GL_ARB_multitexture */
2362 case GL_MAX_TEXTURE_UNITS_ARB
:
2363 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2364 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2366 case GL_ACTIVE_TEXTURE_ARB
:
2367 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2368 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2370 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2371 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2372 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2375 /* GL_ARB_texture_cube_map */
2376 case GL_TEXTURE_CUBE_MAP_ARB
:
2377 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2378 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2380 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2381 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2382 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2384 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2385 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2386 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
2389 /* GL_ARB_texture_compression */
2390 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2391 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2392 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2394 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2395 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2396 *params
= (GLdouble
) ctx
->Const
.NumCompressedTextureFormats
;
2398 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2399 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2402 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
2403 params
[i
] = (GLdouble
) ctx
->Const
.CompressedTextureFormats
[i
];
2407 /* GL_EXT_compiled_vertex_array */
2408 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2409 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2411 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2412 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2415 /* GL_ARB_transpose_matrix */
2416 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2420 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
2421 for (i
=0;i
<16;i
++) {
2422 params
[i
] = (GLdouble
) tm
[i
];
2426 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2430 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
2431 for (i
=0;i
<16;i
++) {
2432 params
[i
] = (GLdouble
) tm
[i
];
2436 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2440 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
2441 for (i
=0;i
<16;i
++) {
2442 params
[i
] = (GLdouble
) tm
[i
];
2446 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2450 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
2451 for (i
=0;i
<16;i
++) {
2452 params
[i
] = (GLdouble
) tm
[i
];
2457 /* GL_HP_occlusion_test */
2458 case GL_OCCLUSION_TEST_HP
:
2459 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2460 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2462 case GL_OCCLUSION_TEST_RESULT_HP
:
2463 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2464 if (ctx
->Depth
.OcclusionTest
)
2465 *params
= (GLdouble
) ctx
->OcclusionResult
;
2467 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2468 /* reset flag now */
2469 ctx
->OcclusionResult
= GL_FALSE
;
2470 ctx
->OcclusionResultSaved
= GL_FALSE
;
2473 /* GL_SGIS_pixel_texture */
2474 case GL_PIXEL_TEXTURE_SGIS
:
2475 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2478 /* GL_SGIX_pixel_texture */
2479 case GL_PIXEL_TEX_GEN_SGIX
:
2480 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2482 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2483 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2486 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2487 case GL_COLOR_MATRIX_SGI
:
2488 for (i
=0;i
<16;i
++) {
2489 params
[i
] = (GLdouble
) ctx
->ColorMatrixStack
.Top
->m
[i
];
2492 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2493 *params
= (GLdouble
) (ctx
->ColorMatrixStack
.Depth
+ 1);
2495 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2496 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2498 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2499 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2501 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2502 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2504 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2505 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2507 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2508 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2510 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2511 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2513 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2514 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2516 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2517 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2519 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2520 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2523 /* GL_EXT_convolution (also in 1.2 imaging) */
2524 case GL_CONVOLUTION_1D_EXT
:
2525 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2526 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2528 case GL_CONVOLUTION_2D
:
2529 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2530 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2532 case GL_SEPARABLE_2D
:
2533 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2534 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2536 case GL_MAX_CONVOLUTION_WIDTH
:
2537 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2538 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionWidth
;
2540 case GL_MAX_CONVOLUTION_HEIGHT
:
2541 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2542 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionHeight
;
2544 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2545 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2546 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2548 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2549 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2550 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2552 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2553 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2554 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2556 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2557 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2558 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2560 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2561 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2562 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2564 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2565 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2566 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2568 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2569 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2570 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2572 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2573 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2574 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2577 /* GL_EXT_histogram (also in 1.2 imaging) */
2579 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2580 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
2583 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2584 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
2587 /* GL_SGI_color_table (also in 1.2 imaging */
2588 case GL_COLOR_TABLE_SGI
:
2589 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2591 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2592 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2594 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2595 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2598 /* GL_EXT_secondary_color */
2599 case GL_COLOR_SUM_EXT
:
2600 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2601 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2603 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2604 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2605 FLUSH_CURRENT(ctx
, 0);
2606 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
2607 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
2608 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
2610 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2611 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2612 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2614 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2615 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2616 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2618 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2619 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2620 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2622 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2623 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2624 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2627 /* GL_EXT_fog_coord */
2628 case GL_CURRENT_FOG_COORDINATE_EXT
:
2629 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2630 FLUSH_CURRENT(ctx
, 0);
2631 *params
= (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
2633 case GL_FOG_COORDINATE_ARRAY_EXT
:
2634 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2635 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2637 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2638 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2639 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2641 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2642 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2643 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2646 /* GL_EXT_texture_lod_bias */
2647 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
2648 *params
= (GLdouble
) ctx
->Const
.MaxTextureLodBias
;
2651 /* GL_EXT_texture_filter_anisotropic */
2652 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
2653 CHECK_EXTENSION_D(EXT_texture_filter_anisotropic
, pname
);
2654 *params
= (GLdouble
) ctx
->Const
.MaxTextureMaxAnisotropy
;
2657 /* GL_ARB_multisample */
2658 case GL_MULTISAMPLE_ARB
:
2659 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2660 *params
= (GLdouble
) ctx
->Multisample
.Enabled
;
2662 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
2663 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2664 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToCoverage
;
2666 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
2667 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2668 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToOne
;
2670 case GL_SAMPLE_COVERAGE_ARB
:
2671 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2672 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverage
;
2674 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
2675 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2676 *params
= ctx
->Multisample
.SampleCoverageValue
;
2678 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
2679 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2680 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverageInvert
;
2682 case GL_SAMPLE_BUFFERS_ARB
:
2683 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2684 *params
= 0.0; /* XXX fix someday */
2686 case GL_SAMPLES_ARB
:
2687 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2688 *params
= 0.0; /* XXX fix someday */
2691 /* GL_IBM_rasterpos_clip */
2692 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
2693 CHECK_EXTENSION_D(IBM_rasterpos_clip
, pname
);
2694 *params
= (GLdouble
) ctx
->Transform
.RasterPositionUnclipped
;
2697 /* GL_NV_point_sprite */
2698 case GL_POINT_SPRITE_NV
:
2699 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
2700 *params
= (GLdouble
) ctx
->Point
.PointSprite
;
2702 case GL_POINT_SPRITE_R_MODE_NV
:
2703 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
2704 *params
= (GLdouble
) ctx
->Point
.SpriteRMode
;
2707 /* GL_SGIS_generate_mipmap */
2708 case GL_GENERATE_MIPMAP_HINT_SGIS
:
2709 CHECK_EXTENSION_D(SGIS_generate_mipmap
, pname
);
2710 *params
= (GLdouble
) ctx
->Hint
.GenerateMipmap
;
2713 /* GL_NV_vertex_program */
2714 case GL_VERTEX_PROGRAM_NV
:
2715 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2716 *params
= (GLdouble
) ctx
->VertexProgram
.Enabled
;
2718 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
2719 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2720 *params
= (GLdouble
) ctx
->VertexProgram
.PointSizeEnabled
;
2722 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
2723 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2724 *params
= (GLdouble
) ctx
->VertexProgram
.TwoSideEnabled
;
2726 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
2727 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2728 *params
= (GLdouble
) MAX_PROGRAM_STACK_DEPTH
;
2730 case GL_MAX_TRACK_MATRICES_NV
:
2731 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2732 *params
= (GLdouble
) MAX_PROGRAM_MATRICES
;
2734 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
2735 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2736 *params
= (GLdouble
) ctx
->CurrentStack
->Depth
;
2738 case GL_CURRENT_MATRIX_NV
:
2739 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2740 *params
= (GLdouble
) ctx
->Transform
.MatrixMode
;
2742 case GL_VERTEX_PROGRAM_BINDING_NV
:
2743 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2744 *params
= (GLdouble
) ctx
->VertexProgram
.CurrentID
;
2746 case GL_PROGRAM_ERROR_POSITION_NV
:
2747 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2748 *params
= (GLdouble
) ctx
->VertexProgram
.ErrorPos
;
2750 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
2751 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
2752 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
2753 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
2754 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
2755 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
2756 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
2757 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
2758 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
2759 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
2760 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
2761 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
2762 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
2763 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
2764 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
2765 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
2766 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2768 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
2769 *params
= (GLdouble
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
2772 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
2773 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
2774 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
2775 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
2776 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
2777 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
2778 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
2779 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
2780 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
2781 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
2782 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
2783 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
2784 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
2785 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
2786 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
2787 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
2788 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
2790 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
2791 *params
= (GLdouble
) ctx
->Eval
.Map1Attrib
[n
];
2794 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
2795 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
2796 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
2797 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
2798 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
2799 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
2800 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
2801 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
2802 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
2803 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
2804 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
2805 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
2806 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
2807 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
2808 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
2809 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
2810 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
2812 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
2813 *params
= (GLdouble
) ctx
->Eval
.Map2Attrib
[n
];
2817 /* GL_NV_texture_rectangle */
2818 case GL_TEXTURE_RECTANGLE_NV
:
2819 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2820 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
2822 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
2823 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2824 *params
= (GLdouble
) textureUnit
->CurrentRect
->Name
;
2826 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
2827 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
2828 *params
= (GLdouble
) ctx
->Const
.MaxTextureRectSize
;
2834 sprintf(s
, "glGetDoublev(pname=0x%x)", pname
);
2835 _mesa_error( ctx
, GL_INVALID_ENUM
, s
);
2842 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2844 GET_CURRENT_CONTEXT(ctx
);
2846 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2847 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2848 ASSERT_OUTSIDE_BEGIN_END(ctx
);
2853 /* We need this in order to get correct results for
2854 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
2856 FLUSH_VERTICES(ctx
, 0);
2858 if (MESA_VERBOSE
& VERBOSE_API
)
2859 _mesa_debug(ctx
, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname
));
2861 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2865 case GL_ACCUM_RED_BITS
:
2866 *params
= (GLfloat
) ctx
->Visual
.accumRedBits
;
2868 case GL_ACCUM_GREEN_BITS
:
2869 *params
= (GLfloat
) ctx
->Visual
.accumGreenBits
;
2871 case GL_ACCUM_BLUE_BITS
:
2872 *params
= (GLfloat
) ctx
->Visual
.accumBlueBits
;
2874 case GL_ACCUM_ALPHA_BITS
:
2875 *params
= (GLfloat
) ctx
->Visual
.accumAlphaBits
;
2877 case GL_ACCUM_CLEAR_VALUE
:
2878 params
[0] = ctx
->Accum
.ClearColor
[0];
2879 params
[1] = ctx
->Accum
.ClearColor
[1];
2880 params
[2] = ctx
->Accum
.ClearColor
[2];
2881 params
[3] = ctx
->Accum
.ClearColor
[3];
2884 *params
= ctx
->Pixel
.AlphaBias
;
2887 *params
= (GLfloat
) ctx
->Visual
.alphaBits
;
2889 case GL_ALPHA_SCALE
:
2890 *params
= ctx
->Pixel
.AlphaScale
;
2893 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2895 case GL_ALPHA_TEST_FUNC
:
2896 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2898 case GL_ALPHA_TEST_REF
:
2899 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
2901 case GL_ATTRIB_STACK_DEPTH
:
2902 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2904 case GL_AUTO_NORMAL
:
2905 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2907 case GL_AUX_BUFFERS
:
2908 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2911 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2914 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2917 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2919 case GL_BLEND_SRC_RGB_EXT
:
2920 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2922 case GL_BLEND_DST_RGB_EXT
:
2923 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2925 case GL_BLEND_SRC_ALPHA_EXT
:
2926 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2928 case GL_BLEND_DST_ALPHA_EXT
:
2929 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2931 case GL_BLEND_EQUATION_EXT
:
2932 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2934 case GL_BLEND_COLOR_EXT
:
2935 params
[0] = ctx
->Color
.BlendColor
[0];
2936 params
[1] = ctx
->Color
.BlendColor
[1];
2937 params
[2] = ctx
->Color
.BlendColor
[2];
2938 params
[3] = ctx
->Color
.BlendColor
[3];
2941 *params
= ctx
->Pixel
.BlueBias
;
2944 *params
= (GLfloat
) ctx
->Visual
.blueBits
;
2947 *params
= ctx
->Pixel
.BlueScale
;
2949 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2950 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2952 case GL_CLIP_PLANE0
:
2953 case GL_CLIP_PLANE1
:
2954 case GL_CLIP_PLANE2
:
2955 case GL_CLIP_PLANE3
:
2956 case GL_CLIP_PLANE4
:
2957 case GL_CLIP_PLANE5
:
2958 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
2963 case GL_COLOR_CLEAR_VALUE
:
2964 params
[0] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[0]);
2965 params
[1] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[1]);
2966 params
[2] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[2]);
2967 params
[3] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[3]);
2969 case GL_COLOR_MATERIAL
:
2970 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2972 case GL_COLOR_MATERIAL_FACE
:
2973 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2975 case GL_COLOR_MATERIAL_PARAMETER
:
2976 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2978 case GL_COLOR_WRITEMASK
:
2979 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2980 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2981 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2982 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2985 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2987 case GL_CULL_FACE_MODE
:
2988 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2990 case GL_CURRENT_COLOR
:
2991 FLUSH_CURRENT(ctx
, 0);
2992 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
2993 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
2994 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
2995 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
2997 case GL_CURRENT_INDEX
:
2998 FLUSH_CURRENT(ctx
, 0);
2999 *params
= (GLfloat
) ctx
->Current
.Index
;
3001 case GL_CURRENT_NORMAL
:
3002 FLUSH_CURRENT(ctx
, 0);
3003 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
3004 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
3005 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
3007 case GL_CURRENT_RASTER_COLOR
:
3008 params
[0] = ctx
->Current
.RasterColor
[0];
3009 params
[1] = ctx
->Current
.RasterColor
[1];
3010 params
[2] = ctx
->Current
.RasterColor
[2];
3011 params
[3] = ctx
->Current
.RasterColor
[3];
3013 case GL_CURRENT_RASTER_DISTANCE
:
3014 params
[0] = ctx
->Current
.RasterDistance
;
3016 case GL_CURRENT_RASTER_INDEX
:
3017 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
3019 case GL_CURRENT_RASTER_POSITION
:
3020 params
[0] = ctx
->Current
.RasterPos
[0];
3021 params
[1] = ctx
->Current
.RasterPos
[1];
3022 params
[2] = ctx
->Current
.RasterPos
[2];
3023 params
[3] = ctx
->Current
.RasterPos
[3];
3025 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3026 params
[0] = ctx
->Current
.RasterTexCoords
[texUnit
][0];
3027 params
[1] = ctx
->Current
.RasterTexCoords
[texUnit
][1];
3028 params
[2] = ctx
->Current
.RasterTexCoords
[texUnit
][2];
3029 params
[3] = ctx
->Current
.RasterTexCoords
[texUnit
][3];
3031 case GL_CURRENT_RASTER_POSITION_VALID
:
3032 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
3034 case GL_CURRENT_TEXTURE_COORDS
:
3035 FLUSH_CURRENT(ctx
, 0);
3036 params
[0] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
3037 params
[1] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
3038 params
[2] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
3039 params
[3] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
3042 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
3045 *params
= (GLfloat
) ctx
->Visual
.depthBits
;
3047 case GL_DEPTH_CLEAR_VALUE
:
3048 *params
= (GLfloat
) ctx
->Depth
.Clear
;
3051 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
3053 case GL_DEPTH_RANGE
:
3054 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
3055 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
3057 case GL_DEPTH_SCALE
:
3058 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
3061 *params
= (GLfloat
) ctx
->Depth
.Test
;
3063 case GL_DEPTH_WRITEMASK
:
3064 *params
= (GLfloat
) ctx
->Depth
.Mask
;
3067 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
3069 case GL_DOUBLEBUFFER
:
3070 *params
= (GLfloat
) ctx
->Visual
.doubleBufferMode
;
3072 case GL_DRAW_BUFFER
:
3073 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
3076 FLUSH_CURRENT(ctx
, 0);
3077 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
3079 case GL_FEEDBACK_BUFFER_SIZE
:
3080 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
3082 case GL_FEEDBACK_BUFFER_TYPE
:
3083 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
3086 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
3089 params
[0] = ctx
->Fog
.Color
[0];
3090 params
[1] = ctx
->Fog
.Color
[1];
3091 params
[2] = ctx
->Fog
.Color
[2];
3092 params
[3] = ctx
->Fog
.Color
[3];
3094 case GL_FOG_DENSITY
:
3095 *params
= ctx
->Fog
.Density
;
3098 *params
= ctx
->Fog
.End
;
3101 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
3104 *params
= ctx
->Fog
.Index
;
3107 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
3110 *params
= ctx
->Fog
.Start
;
3113 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
3116 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
3119 *params
= (GLfloat
) ctx
->Visual
.greenBits
;
3121 case GL_GREEN_SCALE
:
3122 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
3125 *params
= (GLfloat
) ctx
->Visual
.indexBits
;
3127 case GL_INDEX_CLEAR_VALUE
:
3128 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
3131 *params
= ctx
->Visual
.rgbMode
? 0.0F
: 1.0F
;
3133 case GL_INDEX_OFFSET
:
3134 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
3136 case GL_INDEX_SHIFT
:
3137 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
3139 case GL_INDEX_WRITEMASK
:
3140 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
3150 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3153 *params
= (GLfloat
) ctx
->Light
.Enabled
;
3155 case GL_LIGHT_MODEL_AMBIENT
:
3156 params
[0] = ctx
->Light
.Model
.Ambient
[0];
3157 params
[1] = ctx
->Light
.Model
.Ambient
[1];
3158 params
[2] = ctx
->Light
.Model
.Ambient
[2];
3159 params
[3] = ctx
->Light
.Model
.Ambient
[3];
3161 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3162 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
3164 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3165 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
3167 case GL_LIGHT_MODEL_TWO_SIDE
:
3168 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
3170 case GL_LINE_SMOOTH
:
3171 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
3173 case GL_LINE_SMOOTH_HINT
:
3174 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
3176 case GL_LINE_STIPPLE
:
3177 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
3179 case GL_LINE_STIPPLE_PATTERN
:
3180 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
3182 case GL_LINE_STIPPLE_REPEAT
:
3183 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
3186 *params
= (GLfloat
) ctx
->Line
.Width
;
3188 case GL_LINE_WIDTH_GRANULARITY
:
3189 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
3191 case GL_LINE_WIDTH_RANGE
:
3192 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
3193 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
3195 case GL_ALIASED_LINE_WIDTH_RANGE
:
3196 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
3197 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
3200 *params
= (GLfloat
) ctx
->List
.ListBase
;
3203 *params
= (GLfloat
) ctx
->CurrentListNum
;
3206 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
3207 : ENUM_TO_FLOAT(GL_COMPILE
);
3209 case GL_INDEX_LOGIC_OP
:
3210 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
3212 case GL_COLOR_LOGIC_OP
:
3213 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
3215 case GL_LOGIC_OP_MODE
:
3216 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
3218 case GL_MAP1_COLOR_4
:
3219 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
3221 case GL_MAP1_GRID_DOMAIN
:
3222 params
[0] = ctx
->Eval
.MapGrid1u1
;
3223 params
[1] = ctx
->Eval
.MapGrid1u2
;
3225 case GL_MAP1_GRID_SEGMENTS
:
3226 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
3229 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
3231 case GL_MAP1_NORMAL
:
3232 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
3234 case GL_MAP1_TEXTURE_COORD_1
:
3235 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
3237 case GL_MAP1_TEXTURE_COORD_2
:
3238 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
3240 case GL_MAP1_TEXTURE_COORD_3
:
3241 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
3243 case GL_MAP1_TEXTURE_COORD_4
:
3244 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
3246 case GL_MAP1_VERTEX_3
:
3247 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
3249 case GL_MAP1_VERTEX_4
:
3250 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
3252 case GL_MAP2_COLOR_4
:
3253 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
3255 case GL_MAP2_GRID_DOMAIN
:
3256 params
[0] = ctx
->Eval
.MapGrid2u1
;
3257 params
[1] = ctx
->Eval
.MapGrid2u2
;
3258 params
[2] = ctx
->Eval
.MapGrid2v1
;
3259 params
[3] = ctx
->Eval
.MapGrid2v2
;
3261 case GL_MAP2_GRID_SEGMENTS
:
3262 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
3263 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
3266 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
3268 case GL_MAP2_NORMAL
:
3269 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
3271 case GL_MAP2_TEXTURE_COORD_1
:
3272 *params
= ctx
->Eval
.Map2TextureCoord1
;
3274 case GL_MAP2_TEXTURE_COORD_2
:
3275 *params
= ctx
->Eval
.Map2TextureCoord2
;
3277 case GL_MAP2_TEXTURE_COORD_3
:
3278 *params
= ctx
->Eval
.Map2TextureCoord3
;
3280 case GL_MAP2_TEXTURE_COORD_4
:
3281 *params
= ctx
->Eval
.Map2TextureCoord4
;
3283 case GL_MAP2_VERTEX_3
:
3284 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
3286 case GL_MAP2_VERTEX_4
:
3287 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
3290 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
3292 case GL_MAP_STENCIL
:
3293 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
3295 case GL_MATRIX_MODE
:
3296 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
3298 case GL_MAX_ATTRIB_STACK_DEPTH
:
3299 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
3301 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3302 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3304 case GL_MAX_CLIP_PLANES
:
3305 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
3307 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3308 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3310 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3311 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3313 case GL_MAX_EVAL_ORDER
:
3314 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3317 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3319 case GL_MAX_LIST_NESTING
:
3320 *params
= (GLfloat
) MAX_LIST_NESTING
;
3322 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3323 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3325 case GL_MAX_NAME_STACK_DEPTH
:
3326 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3328 case GL_MAX_PIXEL_MAP_TABLE
:
3329 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3331 case GL_MAX_PROJECTION_STACK_DEPTH
:
3332 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3334 case GL_MAX_TEXTURE_SIZE
:
3335 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
3337 case GL_MAX_3D_TEXTURE_SIZE
:
3338 *params
= (GLfloat
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
3340 case GL_MAX_TEXTURE_STACK_DEPTH
:
3341 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3343 case GL_MAX_VIEWPORT_DIMS
:
3344 params
[0] = (GLfloat
) MAX_WIDTH
;
3345 params
[1] = (GLfloat
) MAX_HEIGHT
;
3347 case GL_MODELVIEW_MATRIX
:
3348 for (i
=0;i
<16;i
++) {
3349 params
[i
] = ctx
->ModelviewMatrixStack
.Top
->m
[i
];
3352 case GL_MODELVIEW_STACK_DEPTH
:
3353 *params
= (GLfloat
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
3355 case GL_NAME_STACK_DEPTH
:
3356 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3359 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3361 case GL_PACK_ALIGNMENT
:
3362 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3364 case GL_PACK_LSB_FIRST
:
3365 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3367 case GL_PACK_ROW_LENGTH
:
3368 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3370 case GL_PACK_SKIP_PIXELS
:
3371 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3373 case GL_PACK_SKIP_ROWS
:
3374 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3376 case GL_PACK_SWAP_BYTES
:
3377 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3379 case GL_PACK_SKIP_IMAGES_EXT
:
3380 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3382 case GL_PACK_IMAGE_HEIGHT_EXT
:
3383 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3385 case GL_PERSPECTIVE_CORRECTION_HINT
:
3386 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3388 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3389 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3391 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3392 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3394 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3395 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3397 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3398 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3400 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3401 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3403 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3404 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3406 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3407 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3409 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3410 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3412 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3413 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3415 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3416 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3419 *params
= (GLfloat
) ctx
->Point
.Size
;
3421 case GL_POINT_SIZE_GRANULARITY
:
3422 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3424 case GL_POINT_SIZE_RANGE
:
3425 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3426 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3428 case GL_ALIASED_POINT_SIZE_RANGE
:
3429 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3430 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3432 case GL_POINT_SMOOTH
:
3433 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3435 case GL_POINT_SMOOTH_HINT
:
3436 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3438 case GL_POINT_SIZE_MIN_EXT
:
3439 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3441 case GL_POINT_SIZE_MAX_EXT
:
3442 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3444 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3445 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3447 case GL_DISTANCE_ATTENUATION_EXT
:
3448 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3449 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3450 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3452 case GL_POLYGON_MODE
:
3453 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3454 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3456 #ifdef GL_EXT_polygon_offset
3457 case GL_POLYGON_OFFSET_BIAS_EXT
:
3458 *params
= ctx
->Polygon
.OffsetUnits
;
3461 case GL_POLYGON_OFFSET_FACTOR
:
3462 *params
= ctx
->Polygon
.OffsetFactor
;
3464 case GL_POLYGON_OFFSET_UNITS
:
3465 *params
= ctx
->Polygon
.OffsetUnits
;
3467 case GL_POLYGON_SMOOTH
:
3468 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3470 case GL_POLYGON_SMOOTH_HINT
:
3471 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3473 case GL_POLYGON_STIPPLE
:
3474 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3476 case GL_PROJECTION_MATRIX
:
3477 for (i
=0;i
<16;i
++) {
3478 params
[i
] = ctx
->ProjectionMatrixStack
.Top
->m
[i
];
3481 case GL_PROJECTION_STACK_DEPTH
:
3482 *params
= (GLfloat
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
3484 case GL_READ_BUFFER
:
3485 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3488 *params
= ctx
->Pixel
.RedBias
;
3491 *params
= (GLfloat
) ctx
->Visual
.redBits
;
3494 *params
= ctx
->Pixel
.RedScale
;
3496 case GL_RENDER_MODE
:
3497 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3499 case GL_RESCALE_NORMAL
:
3500 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3503 *params
= (GLfloat
) ctx
->Visual
.rgbMode
;
3505 case GL_SCISSOR_BOX
:
3506 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3507 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3508 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3509 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3511 case GL_SCISSOR_TEST
:
3512 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3514 case GL_SELECTION_BUFFER_SIZE
:
3515 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3517 case GL_SHADE_MODEL
:
3518 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3520 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3521 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3523 case GL_STENCIL_BITS
:
3524 *params
= (GLfloat
) ctx
->Visual
.stencilBits
;
3526 case GL_STENCIL_CLEAR_VALUE
:
3527 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3529 case GL_STENCIL_FAIL
:
3530 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
3532 case GL_STENCIL_FUNC
:
3533 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
3535 case GL_STENCIL_PASS_DEPTH_FAIL
:
3536 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
3538 case GL_STENCIL_PASS_DEPTH_PASS
:
3539 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
3541 case GL_STENCIL_REF
:
3542 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
3544 case GL_STENCIL_TEST
:
3545 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3547 case GL_STENCIL_VALUE_MASK
:
3548 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
3550 case GL_STENCIL_WRITEMASK
:
3551 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
3554 *params
= (GLfloat
) ctx
->Visual
.stereoMode
;
3556 case GL_SUBPIXEL_BITS
:
3557 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3560 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0F
: 0.0F
;
3563 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0F
: 0.0F
;
3566 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0F
: 0.0F
;
3568 case GL_TEXTURE_BINDING_1D
:
3569 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3571 case GL_TEXTURE_BINDING_2D
:
3572 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3574 case GL_TEXTURE_BINDING_3D
:
3575 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3577 case GL_TEXTURE_ENV_COLOR
:
3578 params
[0] = textureUnit
->EnvColor
[0];
3579 params
[1] = textureUnit
->EnvColor
[1];
3580 params
[2] = textureUnit
->EnvColor
[2];
3581 params
[3] = textureUnit
->EnvColor
[3];
3583 case GL_TEXTURE_ENV_MODE
:
3584 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3586 case GL_TEXTURE_GEN_S
:
3587 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0F
: 0.0F
;
3589 case GL_TEXTURE_GEN_T
:
3590 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0F
: 0.0F
;
3592 case GL_TEXTURE_GEN_R
:
3593 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0F
: 0.0F
;
3595 case GL_TEXTURE_GEN_Q
:
3596 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0F
: 0.0F
;
3598 case GL_TEXTURE_MATRIX
:
3599 for (i
=0;i
<16;i
++) {
3600 params
[i
] = ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
3603 case GL_TEXTURE_STACK_DEPTH
:
3604 *params
= (GLfloat
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
3606 case GL_UNPACK_ALIGNMENT
:
3607 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3609 case GL_UNPACK_LSB_FIRST
:
3610 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3612 case GL_UNPACK_ROW_LENGTH
:
3613 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3615 case GL_UNPACK_SKIP_PIXELS
:
3616 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3618 case GL_UNPACK_SKIP_ROWS
:
3619 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3621 case GL_UNPACK_SWAP_BYTES
:
3622 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3624 case GL_UNPACK_SKIP_IMAGES_EXT
:
3625 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3627 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3628 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3631 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3632 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3633 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3634 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3637 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3640 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3642 case GL_VERTEX_ARRAY
:
3643 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3645 case GL_VERTEX_ARRAY_SIZE
:
3646 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3648 case GL_VERTEX_ARRAY_TYPE
:
3649 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3651 case GL_VERTEX_ARRAY_STRIDE
:
3652 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3654 case GL_VERTEX_ARRAY_COUNT_EXT
:
3657 case GL_NORMAL_ARRAY
:
3658 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3660 case GL_NORMAL_ARRAY_TYPE
:
3661 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3663 case GL_NORMAL_ARRAY_STRIDE
:
3664 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3666 case GL_NORMAL_ARRAY_COUNT_EXT
:
3669 case GL_COLOR_ARRAY
:
3670 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3672 case GL_COLOR_ARRAY_SIZE
:
3673 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3675 case GL_COLOR_ARRAY_TYPE
:
3676 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3678 case GL_COLOR_ARRAY_STRIDE
:
3679 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3681 case GL_COLOR_ARRAY_COUNT_EXT
:
3684 case GL_INDEX_ARRAY
:
3685 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3687 case GL_INDEX_ARRAY_TYPE
:
3688 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3690 case GL_INDEX_ARRAY_STRIDE
:
3691 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3693 case GL_INDEX_ARRAY_COUNT_EXT
:
3696 case GL_TEXTURE_COORD_ARRAY
:
3697 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3699 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3700 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3702 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3703 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3705 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3706 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3708 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3711 case GL_EDGE_FLAG_ARRAY
:
3712 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3714 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3715 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3717 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3721 /* GL_ARB_multitexture */
3722 case GL_MAX_TEXTURE_UNITS_ARB
:
3723 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3724 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3726 case GL_ACTIVE_TEXTURE_ARB
:
3727 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3728 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3730 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3731 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
3732 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3735 /* GL_ARB_texture_cube_map */
3736 case GL_TEXTURE_CUBE_MAP_ARB
:
3737 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3738 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3740 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3741 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3742 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3744 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3745 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
3746 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
3749 /* GL_ARB_texture_compression */
3750 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3751 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3752 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3754 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3755 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3756 *params
= (GLfloat
) ctx
->Const
.NumCompressedTextureFormats
;
3758 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3759 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
3762 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
3763 params
[i
] = (GLfloat
) ctx
->Const
.CompressedTextureFormats
[i
];
3767 /* GL_EXT_compiled_vertex_array */
3768 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3769 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
3770 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3772 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3773 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
3774 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3777 /* GL_ARB_transpose_matrix */
3778 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3779 _math_transposef(params
, ctx
->ColorMatrixStack
.Top
->m
);
3781 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3782 _math_transposef(params
, ctx
->ModelviewMatrixStack
.Top
->m
);
3784 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3785 _math_transposef(params
, ctx
->ProjectionMatrixStack
.Top
->m
);
3787 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3788 _math_transposef(params
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
3791 /* GL_HP_occlusion_test */
3792 case GL_OCCLUSION_TEST_HP
:
3793 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
3794 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3796 case GL_OCCLUSION_TEST_RESULT_HP
:
3797 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
3798 if (ctx
->Depth
.OcclusionTest
)
3799 *params
= (GLfloat
) ctx
->OcclusionResult
;
3801 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3802 /* reset flag now */
3803 ctx
->OcclusionResult
= GL_FALSE
;
3804 ctx
->OcclusionResultSaved
= GL_FALSE
;
3807 /* GL_SGIS_pixel_texture */
3808 case GL_PIXEL_TEXTURE_SGIS
:
3809 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3812 /* GL_SGIX_pixel_texture */
3813 case GL_PIXEL_TEX_GEN_SGIX
:
3814 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3816 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3817 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3820 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3821 case GL_COLOR_MATRIX_SGI
:
3822 for (i
=0;i
<16;i
++) {
3823 params
[i
] = ctx
->ColorMatrixStack
.Top
->m
[i
];
3826 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3827 *params
= (GLfloat
) (ctx
->ColorMatrixStack
.Depth
+ 1);
3829 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3830 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3832 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3833 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3835 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3836 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3838 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3839 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3841 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3842 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3844 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3845 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3847 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3848 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3850 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3851 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3853 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3854 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3857 /* GL_EXT_convolution (also in 1.2 imaging) */
3858 case GL_CONVOLUTION_1D_EXT
:
3859 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3860 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
3862 case GL_CONVOLUTION_2D
:
3863 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3864 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
3866 case GL_SEPARABLE_2D
:
3867 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3868 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
3870 case GL_MAX_CONVOLUTION_WIDTH
:
3871 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3872 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionWidth
;
3874 case GL_MAX_CONVOLUTION_HEIGHT
:
3875 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3876 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionHeight
;
3878 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3879 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3880 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3882 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3883 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3884 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3886 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3887 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3888 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3890 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3891 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3892 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3894 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3895 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3896 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3898 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3899 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3900 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3902 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3903 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3904 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3906 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3907 CHECK_EXTENSION_F(EXT_convolution
, pname
);
3908 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3911 /* GL_EXT_histogram (also in 1.2 imaging) */
3913 CHECK_EXTENSION_F(EXT_histogram
, pname
);
3914 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
3917 CHECK_EXTENSION_F(EXT_histogram
, pname
);
3918 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
3921 /* GL_SGI_color_table (also in 1.2 imaging */
3922 case GL_COLOR_TABLE_SGI
:
3923 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3925 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3926 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3928 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3929 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3932 /* GL_EXT_secondary_color */
3933 case GL_COLOR_SUM_EXT
:
3934 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3935 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3937 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3938 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3939 FLUSH_CURRENT(ctx
, 0);
3940 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
3941 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
3942 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
3944 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3945 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3946 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3948 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3949 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3950 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3952 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3953 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3954 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3956 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3957 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
3958 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3961 /* GL_EXT_fog_coord */
3962 case GL_CURRENT_FOG_COORDINATE_EXT
:
3963 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3964 FLUSH_CURRENT(ctx
, 0);
3965 *params
= (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
3967 case GL_FOG_COORDINATE_ARRAY_EXT
:
3968 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3969 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3971 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3972 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3973 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3975 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3976 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
3977 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3980 /* GL_EXT_texture_lod_bias */
3981 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3982 *params
= ctx
->Const
.MaxTextureLodBias
;
3985 /* GL_EXT_texture_filter_anisotropic */
3986 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3987 CHECK_EXTENSION_F(EXT_texture_filter_anisotropic
, pname
);
3988 *params
= ctx
->Const
.MaxTextureMaxAnisotropy
;
3991 /* GL_ARB_multisample */
3992 case GL_MULTISAMPLE_ARB
:
3993 CHECK_EXTENSION_F(ARB_multisample
, pname
);
3994 *params
= (GLfloat
) ctx
->Multisample
.Enabled
;
3996 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
3997 CHECK_EXTENSION_F(ARB_multisample
, pname
);
3998 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToCoverage
;
4000 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
4001 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4002 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToOne
;
4004 case GL_SAMPLE_COVERAGE_ARB
:
4005 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4006 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverage
;
4008 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
4009 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4010 *params
= ctx
->Multisample
.SampleCoverageValue
;
4012 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
4013 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4014 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverageInvert
;
4016 case GL_SAMPLE_BUFFERS_ARB
:
4017 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4018 *params
= 0.0; /* XXX fix someday */
4020 case GL_SAMPLES_ARB
:
4021 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4022 *params
= 0.0; /* XXX fix someday */
4025 /* GL_IBM_rasterpos_clip */
4026 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
4027 CHECK_EXTENSION_F(IBM_rasterpos_clip
, pname
);
4028 *params
= (GLfloat
) ctx
->Transform
.RasterPositionUnclipped
;
4031 /* GL_NV_point_sprite */
4032 case GL_POINT_SPRITE_NV
:
4033 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
4034 *params
= (GLfloat
) ctx
->Point
.PointSprite
;
4036 case GL_POINT_SPRITE_R_MODE_NV
:
4037 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
4038 *params
= (GLfloat
) ctx
->Point
.SpriteRMode
;
4041 /* GL_SGIS_generate_mipmap */
4042 case GL_GENERATE_MIPMAP_HINT_SGIS
:
4043 CHECK_EXTENSION_F(SGIS_generate_mipmap
, pname
);
4044 *params
= (GLfloat
) ctx
->Hint
.GenerateMipmap
;
4047 /* GL_NV_vertex_program */
4048 case GL_VERTEX_PROGRAM_NV
:
4049 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4050 *params
= (GLfloat
) ctx
->VertexProgram
.Enabled
;
4052 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
4053 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4054 *params
= (GLfloat
) ctx
->VertexProgram
.PointSizeEnabled
;
4056 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
4057 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4058 *params
= (GLfloat
) ctx
->VertexProgram
.TwoSideEnabled
;
4060 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
4061 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4062 *params
= (GLfloat
) MAX_PROGRAM_STACK_DEPTH
;
4064 case GL_MAX_TRACK_MATRICES_NV
:
4065 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4066 *params
= (GLfloat
) MAX_PROGRAM_MATRICES
;
4068 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
4069 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4070 *params
= (GLfloat
) ctx
->CurrentStack
->Depth
;
4072 case GL_CURRENT_MATRIX_NV
:
4073 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4074 *params
= (GLfloat
) ctx
->Transform
.MatrixMode
;
4076 case GL_VERTEX_PROGRAM_BINDING_NV
:
4077 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4078 *params
= (GLfloat
) ctx
->VertexProgram
.CurrentID
;
4080 case GL_PROGRAM_ERROR_POSITION_NV
:
4081 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4082 *params
= (GLfloat
) ctx
->VertexProgram
.ErrorPos
;
4084 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
4085 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
4086 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
4087 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
4088 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
4089 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
4090 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
4091 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
4092 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
4093 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
4094 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
4095 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
4096 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
4097 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
4098 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
4099 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
4100 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4102 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
4103 *params
= (GLfloat
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
4106 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
4107 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
4108 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
4109 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
4110 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
4111 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
4112 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
4113 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
4114 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
4115 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
4116 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
4117 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
4118 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
4119 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
4120 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
4121 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
4122 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
4124 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
4125 *params
= (GLfloat
) ctx
->Eval
.Map1Attrib
[n
];
4128 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
4129 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
4130 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
4131 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
4132 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
4133 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
4134 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
4135 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
4136 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
4137 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
4138 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
4139 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
4140 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
4141 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
4142 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
4143 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
4144 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
4146 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
4147 *params
= (GLfloat
) ctx
->Eval
.Map2Attrib
[n
];
4151 /* GL_NV_texture_rectangle */
4152 case GL_TEXTURE_RECTANGLE_NV
:
4153 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4154 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
4156 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
4157 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4158 *params
= (GLfloat
) textureUnit
->CurrentRect
->Name
;
4160 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
4161 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4162 *params
= (GLfloat
) ctx
->Const
.MaxTextureRectSize
;
4168 sprintf(s
, "glGetFloatv(0x%x)", pname
);
4169 _mesa_error(ctx
, GL_INVALID_ENUM
, s
);
4176 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
4178 GET_CURRENT_CONTEXT(ctx
);
4180 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4181 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
4182 ASSERT_OUTSIDE_BEGIN_END(ctx
);
4187 /* We need this in order to get correct results for
4188 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
4190 FLUSH_VERTICES(ctx
, 0);
4192 if (MESA_VERBOSE
& VERBOSE_API
)
4193 _mesa_debug(ctx
, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname
));
4195 if (ctx
->Driver
.GetIntegerv
4196 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
4200 case GL_ACCUM_RED_BITS
:
4201 *params
= (GLint
) ctx
->Visual
.accumRedBits
;
4203 case GL_ACCUM_GREEN_BITS
:
4204 *params
= (GLint
) ctx
->Visual
.accumGreenBits
;
4206 case GL_ACCUM_BLUE_BITS
:
4207 *params
= (GLint
) ctx
->Visual
.accumBlueBits
;
4209 case GL_ACCUM_ALPHA_BITS
:
4210 *params
= (GLint
) ctx
->Visual
.accumAlphaBits
;
4212 case GL_ACCUM_CLEAR_VALUE
:
4213 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
4214 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
4215 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
4216 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
4219 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
4222 *params
= ctx
->Visual
.alphaBits
;
4224 case GL_ALPHA_SCALE
:
4225 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
4228 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
4230 case GL_ALPHA_TEST_REF
:
4231 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
4233 case GL_ALPHA_TEST_FUNC
:
4234 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
4236 case GL_ATTRIB_STACK_DEPTH
:
4237 *params
= (GLint
) (ctx
->AttribStackDepth
);
4239 case GL_AUTO_NORMAL
:
4240 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
4242 case GL_AUX_BUFFERS
:
4243 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
4246 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
4249 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4252 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4254 case GL_BLEND_SRC_RGB_EXT
:
4255 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4257 case GL_BLEND_DST_RGB_EXT
:
4258 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4260 case GL_BLEND_SRC_ALPHA_EXT
:
4261 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
4263 case GL_BLEND_DST_ALPHA_EXT
:
4264 *params
= (GLint
) ctx
->Color
.BlendDstA
;
4266 case GL_BLEND_EQUATION_EXT
:
4267 *params
= (GLint
) ctx
->Color
.BlendEquation
;
4269 case GL_BLEND_COLOR_EXT
:
4270 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
4271 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
4272 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
4273 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
4276 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
4279 *params
= (GLint
) ctx
->Visual
.blueBits
;
4282 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
4284 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
4285 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
4287 case GL_CLIP_PLANE0
:
4288 case GL_CLIP_PLANE1
:
4289 case GL_CLIP_PLANE2
:
4290 case GL_CLIP_PLANE3
:
4291 case GL_CLIP_PLANE4
:
4292 case GL_CLIP_PLANE5
:
4293 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
4298 case GL_COLOR_CLEAR_VALUE
:
4299 params
[0] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[0]) );
4300 params
[1] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[1]) );
4301 params
[2] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[2]) );
4302 params
[3] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[3]) );
4304 case GL_COLOR_MATERIAL
:
4305 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
4307 case GL_COLOR_MATERIAL_FACE
:
4308 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
4310 case GL_COLOR_MATERIAL_PARAMETER
:
4311 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
4313 case GL_COLOR_WRITEMASK
:
4314 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
4315 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
4316 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
4317 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
4320 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
4322 case GL_CULL_FACE_MODE
:
4323 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
4325 case GL_CURRENT_COLOR
:
4326 FLUSH_CURRENT(ctx
, 0);
4327 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4328 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4329 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4330 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4332 case GL_CURRENT_INDEX
:
4333 FLUSH_CURRENT(ctx
, 0);
4334 *params
= (GLint
) ctx
->Current
.Index
;
4336 case GL_CURRENT_NORMAL
:
4337 FLUSH_CURRENT(ctx
, 0);
4338 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4339 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4340 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4342 case GL_CURRENT_RASTER_COLOR
:
4343 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
4344 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
4345 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
4346 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
4348 case GL_CURRENT_RASTER_DISTANCE
:
4349 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
4351 case GL_CURRENT_RASTER_INDEX
:
4352 *params
= (GLint
) ctx
->Current
.RasterIndex
;
4354 case GL_CURRENT_RASTER_POSITION
:
4355 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
4356 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
4357 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
4358 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
4360 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4361 params
[0] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
4362 params
[1] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
4363 params
[2] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
4364 params
[3] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
4366 case GL_CURRENT_RASTER_POSITION_VALID
:
4367 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
4369 case GL_CURRENT_TEXTURE_COORDS
:
4370 FLUSH_CURRENT(ctx
, 0);
4371 params
[0] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
4372 params
[1] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
4373 params
[2] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
4374 params
[3] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
4377 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
4380 *params
= ctx
->Visual
.depthBits
;
4382 case GL_DEPTH_CLEAR_VALUE
:
4383 *params
= (GLint
) ctx
->Depth
.Clear
;
4386 *params
= (GLint
) ctx
->Depth
.Func
;
4388 case GL_DEPTH_RANGE
:
4389 params
[0] = (GLint
) ctx
->Viewport
.Near
;
4390 params
[1] = (GLint
) ctx
->Viewport
.Far
;
4392 case GL_DEPTH_SCALE
:
4393 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
4396 *params
= (GLint
) ctx
->Depth
.Test
;
4398 case GL_DEPTH_WRITEMASK
:
4399 *params
= (GLint
) ctx
->Depth
.Mask
;
4402 *params
= (GLint
) ctx
->Color
.DitherFlag
;
4404 case GL_DOUBLEBUFFER
:
4405 *params
= (GLint
) ctx
->Visual
.doubleBufferMode
;
4407 case GL_DRAW_BUFFER
:
4408 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
4411 FLUSH_CURRENT(ctx
, 0);
4412 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
4414 case GL_FEEDBACK_BUFFER_SIZE
:
4415 *params
= ctx
->Feedback
.BufferSize
;
4417 case GL_FEEDBACK_BUFFER_TYPE
:
4418 *params
= ctx
->Feedback
.Type
;
4421 *params
= (GLint
) ctx
->Fog
.Enabled
;
4424 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
4425 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
4426 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
4427 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
4429 case GL_FOG_DENSITY
:
4430 *params
= (GLint
) ctx
->Fog
.Density
;
4433 *params
= (GLint
) ctx
->Fog
.End
;
4436 *params
= (GLint
) ctx
->Hint
.Fog
;
4439 *params
= (GLint
) ctx
->Fog
.Index
;
4442 *params
= (GLint
) ctx
->Fog
.Mode
;
4445 *params
= (GLint
) ctx
->Fog
.Start
;
4448 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
4451 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
4454 *params
= (GLint
) ctx
->Visual
.greenBits
;
4456 case GL_GREEN_SCALE
:
4457 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
4460 *params
= (GLint
) ctx
->Visual
.indexBits
;
4462 case GL_INDEX_CLEAR_VALUE
:
4463 *params
= (GLint
) ctx
->Color
.ClearIndex
;
4466 *params
= ctx
->Visual
.rgbMode
? 0 : 1;
4468 case GL_INDEX_OFFSET
:
4469 *params
= ctx
->Pixel
.IndexOffset
;
4471 case GL_INDEX_SHIFT
:
4472 *params
= ctx
->Pixel
.IndexShift
;
4474 case GL_INDEX_WRITEMASK
:
4475 *params
= (GLint
) ctx
->Color
.IndexMask
;
4485 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
4488 *params
= (GLint
) ctx
->Light
.Enabled
;
4490 case GL_LIGHT_MODEL_AMBIENT
:
4491 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
4492 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
4493 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
4494 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
4496 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4497 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
4499 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4500 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
4502 case GL_LIGHT_MODEL_TWO_SIDE
:
4503 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
4505 case GL_LINE_SMOOTH
:
4506 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
4508 case GL_LINE_SMOOTH_HINT
:
4509 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
4511 case GL_LINE_STIPPLE
:
4512 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4514 case GL_LINE_STIPPLE_PATTERN
:
4515 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4517 case GL_LINE_STIPPLE_REPEAT
:
4518 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4521 *params
= (GLint
) ctx
->Line
.Width
;
4523 case GL_LINE_WIDTH_GRANULARITY
:
4524 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4526 case GL_LINE_WIDTH_RANGE
:
4527 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4528 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4530 case GL_ALIASED_LINE_WIDTH_RANGE
:
4531 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4532 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4535 *params
= (GLint
) ctx
->List
.ListBase
;
4538 *params
= (GLint
) ctx
->CurrentListNum
;
4541 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4542 : (GLint
) GL_COMPILE
;
4544 case GL_INDEX_LOGIC_OP
:
4545 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4547 case GL_COLOR_LOGIC_OP
:
4548 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4550 case GL_LOGIC_OP_MODE
:
4551 *params
= (GLint
) ctx
->Color
.LogicOp
;
4553 case GL_MAP1_COLOR_4
:
4554 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4556 case GL_MAP1_GRID_DOMAIN
:
4557 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4558 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4560 case GL_MAP1_GRID_SEGMENTS
:
4561 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4564 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4566 case GL_MAP1_NORMAL
:
4567 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4569 case GL_MAP1_TEXTURE_COORD_1
:
4570 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4572 case GL_MAP1_TEXTURE_COORD_2
:
4573 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4575 case GL_MAP1_TEXTURE_COORD_3
:
4576 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4578 case GL_MAP1_TEXTURE_COORD_4
:
4579 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4581 case GL_MAP1_VERTEX_3
:
4582 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4584 case GL_MAP1_VERTEX_4
:
4585 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4587 case GL_MAP2_COLOR_4
:
4588 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4590 case GL_MAP2_GRID_DOMAIN
:
4591 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4592 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4593 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4594 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4596 case GL_MAP2_GRID_SEGMENTS
:
4597 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4598 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4601 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4603 case GL_MAP2_NORMAL
:
4604 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4606 case GL_MAP2_TEXTURE_COORD_1
:
4607 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4609 case GL_MAP2_TEXTURE_COORD_2
:
4610 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4612 case GL_MAP2_TEXTURE_COORD_3
:
4613 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4615 case GL_MAP2_TEXTURE_COORD_4
:
4616 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4618 case GL_MAP2_VERTEX_3
:
4619 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4621 case GL_MAP2_VERTEX_4
:
4622 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4625 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4627 case GL_MAP_STENCIL
:
4628 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4630 case GL_MATRIX_MODE
:
4631 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4633 case GL_MAX_ATTRIB_STACK_DEPTH
:
4634 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4636 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4637 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4639 case GL_MAX_CLIP_PLANES
:
4640 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
4642 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4643 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4645 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4646 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4648 case GL_MAX_EVAL_ORDER
:
4649 *params
= (GLint
) MAX_EVAL_ORDER
;
4652 *params
= (GLint
) ctx
->Const
.MaxLights
;
4654 case GL_MAX_LIST_NESTING
:
4655 *params
= (GLint
) MAX_LIST_NESTING
;
4657 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4658 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4660 case GL_MAX_NAME_STACK_DEPTH
:
4661 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4663 case GL_MAX_PIXEL_MAP_TABLE
:
4664 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4666 case GL_MAX_PROJECTION_STACK_DEPTH
:
4667 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4669 case GL_MAX_TEXTURE_SIZE
:
4670 *params
= (1 << (ctx
->Const
.MaxTextureLevels
- 1));
4672 case GL_MAX_3D_TEXTURE_SIZE
:
4673 *params
= (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
4675 case GL_MAX_TEXTURE_STACK_DEPTH
:
4676 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4678 case GL_MAX_VIEWPORT_DIMS
:
4679 params
[0] = (GLint
) MAX_WIDTH
;
4680 params
[1] = (GLint
) MAX_HEIGHT
;
4682 case GL_MODELVIEW_MATRIX
:
4683 for (i
=0;i
<16;i
++) {
4684 params
[i
] = (GLint
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
4687 case GL_MODELVIEW_STACK_DEPTH
:
4688 *params
= (GLint
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
4690 case GL_NAME_STACK_DEPTH
:
4691 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4694 *params
= (GLint
) ctx
->Transform
.Normalize
;
4696 case GL_PACK_ALIGNMENT
:
4697 *params
= ctx
->Pack
.Alignment
;
4699 case GL_PACK_LSB_FIRST
:
4700 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4702 case GL_PACK_ROW_LENGTH
:
4703 *params
= ctx
->Pack
.RowLength
;
4705 case GL_PACK_SKIP_PIXELS
:
4706 *params
= ctx
->Pack
.SkipPixels
;
4708 case GL_PACK_SKIP_ROWS
:
4709 *params
= ctx
->Pack
.SkipRows
;
4711 case GL_PACK_SWAP_BYTES
:
4712 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4714 case GL_PACK_SKIP_IMAGES_EXT
:
4715 *params
= ctx
->Pack
.SkipImages
;
4717 case GL_PACK_IMAGE_HEIGHT_EXT
:
4718 *params
= ctx
->Pack
.ImageHeight
;
4720 case GL_PERSPECTIVE_CORRECTION_HINT
:
4721 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4723 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4724 *params
= ctx
->Pixel
.MapAtoAsize
;
4726 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4727 *params
= ctx
->Pixel
.MapBtoBsize
;
4729 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4730 *params
= ctx
->Pixel
.MapGtoGsize
;
4732 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4733 *params
= ctx
->Pixel
.MapItoAsize
;
4735 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4736 *params
= ctx
->Pixel
.MapItoBsize
;
4738 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4739 *params
= ctx
->Pixel
.MapItoGsize
;
4741 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4742 *params
= ctx
->Pixel
.MapItoIsize
;
4744 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4745 *params
= ctx
->Pixel
.MapItoRsize
;
4747 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4748 *params
= ctx
->Pixel
.MapRtoRsize
;
4750 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4751 *params
= ctx
->Pixel
.MapStoSsize
;
4754 *params
= (GLint
) ctx
->Point
.Size
;
4756 case GL_POINT_SIZE_GRANULARITY
:
4757 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4759 case GL_POINT_SIZE_RANGE
:
4760 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4761 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4763 case GL_ALIASED_POINT_SIZE_RANGE
:
4764 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4765 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4767 case GL_POINT_SMOOTH
:
4768 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4770 case GL_POINT_SMOOTH_HINT
:
4771 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4773 case GL_POINT_SIZE_MIN_EXT
:
4774 *params
= (GLint
) (ctx
->Point
.MinSize
);
4776 case GL_POINT_SIZE_MAX_EXT
:
4777 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4779 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4780 *params
= (GLint
) (ctx
->Point
.Threshold
);
4782 case GL_DISTANCE_ATTENUATION_EXT
:
4783 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4784 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4785 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4787 case GL_POLYGON_MODE
:
4788 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4789 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4791 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4792 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4794 case GL_POLYGON_OFFSET_FACTOR
:
4795 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4797 case GL_POLYGON_OFFSET_UNITS
:
4798 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4800 case GL_POLYGON_SMOOTH
:
4801 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4803 case GL_POLYGON_SMOOTH_HINT
:
4804 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4806 case GL_POLYGON_STIPPLE
:
4807 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4809 case GL_PROJECTION_MATRIX
:
4810 for (i
=0;i
<16;i
++) {
4811 params
[i
] = (GLint
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
4814 case GL_PROJECTION_STACK_DEPTH
:
4815 *params
= (GLint
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
4817 case GL_READ_BUFFER
:
4818 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4821 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4824 *params
= (GLint
) ctx
->Visual
.redBits
;
4827 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4829 case GL_RENDER_MODE
:
4830 *params
= (GLint
) ctx
->RenderMode
;
4832 case GL_RESCALE_NORMAL
:
4833 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
4836 *params
= (GLint
) ctx
->Visual
.rgbMode
;
4838 case GL_SCISSOR_BOX
:
4839 params
[0] = (GLint
) ctx
->Scissor
.X
;
4840 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4841 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4842 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4844 case GL_SCISSOR_TEST
:
4845 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4847 case GL_SELECTION_BUFFER_SIZE
:
4848 *params
= (GLint
) ctx
->Select
.BufferSize
;
4850 case GL_SHADE_MODEL
:
4851 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4853 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4854 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4856 case GL_STENCIL_BITS
:
4857 *params
= ctx
->Visual
.stencilBits
;
4859 case GL_STENCIL_CLEAR_VALUE
:
4860 *params
= (GLint
) ctx
->Stencil
.Clear
;
4862 case GL_STENCIL_FAIL
:
4863 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
4865 case GL_STENCIL_FUNC
:
4866 *params
= (GLint
) ctx
->Stencil
.Function
;
4868 case GL_STENCIL_PASS_DEPTH_FAIL
:
4869 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
4871 case GL_STENCIL_PASS_DEPTH_PASS
:
4872 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
4874 case GL_STENCIL_REF
:
4875 *params
= (GLint
) ctx
->Stencil
.Ref
;
4877 case GL_STENCIL_TEST
:
4878 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4880 case GL_STENCIL_VALUE_MASK
:
4881 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
4883 case GL_STENCIL_WRITEMASK
:
4884 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
4887 *params
= (GLint
) ctx
->Visual
.stereoMode
;
4889 case GL_SUBPIXEL_BITS
:
4890 *params
= ctx
->Const
.SubPixelBits
;
4893 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4896 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4899 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4901 case GL_TEXTURE_BINDING_1D
:
4902 *params
= textureUnit
->Current1D
->Name
;
4904 case GL_TEXTURE_BINDING_2D
:
4905 *params
= textureUnit
->Current2D
->Name
;
4907 case GL_TEXTURE_BINDING_3D
:
4908 *params
= textureUnit
->Current3D
->Name
;
4910 case GL_TEXTURE_ENV_COLOR
:
4911 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4912 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4913 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4914 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4916 case GL_TEXTURE_ENV_MODE
:
4917 *params
= (GLint
) textureUnit
->EnvMode
;
4919 case GL_TEXTURE_GEN_S
:
4920 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4922 case GL_TEXTURE_GEN_T
:
4923 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4925 case GL_TEXTURE_GEN_R
:
4926 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4928 case GL_TEXTURE_GEN_Q
:
4929 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4931 case GL_TEXTURE_MATRIX
:
4932 for (i
=0;i
<16;i
++) {
4933 params
[i
] = (GLint
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
4936 case GL_TEXTURE_STACK_DEPTH
:
4937 *params
= (GLint
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
4939 case GL_UNPACK_ALIGNMENT
:
4940 *params
= ctx
->Unpack
.Alignment
;
4942 case GL_UNPACK_LSB_FIRST
:
4943 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4945 case GL_UNPACK_ROW_LENGTH
:
4946 *params
= ctx
->Unpack
.RowLength
;
4948 case GL_UNPACK_SKIP_PIXELS
:
4949 *params
= ctx
->Unpack
.SkipPixels
;
4951 case GL_UNPACK_SKIP_ROWS
:
4952 *params
= ctx
->Unpack
.SkipRows
;
4954 case GL_UNPACK_SWAP_BYTES
:
4955 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4957 case GL_UNPACK_SKIP_IMAGES_EXT
:
4958 *params
= ctx
->Unpack
.SkipImages
;
4960 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4961 *params
= ctx
->Unpack
.ImageHeight
;
4964 params
[0] = (GLint
) ctx
->Viewport
.X
;
4965 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4966 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4967 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4970 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4973 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4975 case GL_VERTEX_ARRAY
:
4976 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4978 case GL_VERTEX_ARRAY_SIZE
:
4979 *params
= ctx
->Array
.Vertex
.Size
;
4981 case GL_VERTEX_ARRAY_TYPE
:
4982 *params
= ctx
->Array
.Vertex
.Type
;
4984 case GL_VERTEX_ARRAY_STRIDE
:
4985 *params
= ctx
->Array
.Vertex
.Stride
;
4987 case GL_VERTEX_ARRAY_COUNT_EXT
:
4990 case GL_NORMAL_ARRAY
:
4991 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
4993 case GL_NORMAL_ARRAY_TYPE
:
4994 *params
= ctx
->Array
.Normal
.Type
;
4996 case GL_NORMAL_ARRAY_STRIDE
:
4997 *params
= ctx
->Array
.Normal
.Stride
;
4999 case GL_NORMAL_ARRAY_COUNT_EXT
:
5002 case GL_COLOR_ARRAY
:
5003 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
5005 case GL_COLOR_ARRAY_SIZE
:
5006 *params
= ctx
->Array
.Color
.Size
;
5008 case GL_COLOR_ARRAY_TYPE
:
5009 *params
= ctx
->Array
.Color
.Type
;
5011 case GL_COLOR_ARRAY_STRIDE
:
5012 *params
= ctx
->Array
.Color
.Stride
;
5014 case GL_COLOR_ARRAY_COUNT_EXT
:
5017 case GL_INDEX_ARRAY
:
5018 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
5020 case GL_INDEX_ARRAY_TYPE
:
5021 *params
= ctx
->Array
.Index
.Type
;
5023 case GL_INDEX_ARRAY_STRIDE
:
5024 *params
= ctx
->Array
.Index
.Stride
;
5026 case GL_INDEX_ARRAY_COUNT_EXT
:
5029 case GL_TEXTURE_COORD_ARRAY
:
5030 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
5032 case GL_TEXTURE_COORD_ARRAY_SIZE
:
5033 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
5035 case GL_TEXTURE_COORD_ARRAY_TYPE
:
5036 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
5038 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
5039 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
5041 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
5044 case GL_EDGE_FLAG_ARRAY
:
5045 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
5047 case GL_EDGE_FLAG_ARRAY_STRIDE
:
5048 *params
= ctx
->Array
.EdgeFlag
.Stride
;
5050 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
5054 /* GL_ARB_multitexture */
5055 case GL_MAX_TEXTURE_UNITS_ARB
:
5056 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5057 *params
= ctx
->Const
.MaxTextureUnits
;
5059 case GL_ACTIVE_TEXTURE_ARB
:
5060 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5061 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
5063 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
5064 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5065 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
5068 /* GL_ARB_texture_cube_map */
5069 case GL_TEXTURE_CUBE_MAP_ARB
:
5070 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5071 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
5073 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
5074 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5075 *params
= textureUnit
->CurrentCubeMap
->Name
;
5077 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
5078 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5079 *params
= (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
5082 /* GL_ARB_texture_compression */
5083 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
5084 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5085 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
5087 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
5088 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5089 *params
= (GLint
) ctx
->Const
.NumCompressedTextureFormats
;
5091 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
5092 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5095 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
5096 params
[i
] = (GLint
) ctx
->Const
.CompressedTextureFormats
[i
];
5100 /* GL_EXT_compiled_vertex_array */
5101 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
5102 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5103 *params
= ctx
->Array
.LockFirst
;
5105 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
5106 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5107 *params
= ctx
->Array
.LockCount
;
5110 /* GL_ARB_transpose_matrix */
5111 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
5115 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
5116 for (i
=0;i
<16;i
++) {
5117 params
[i
] = (GLint
) tm
[i
];
5121 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
5125 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
5126 for (i
=0;i
<16;i
++) {
5127 params
[i
] = (GLint
) tm
[i
];
5131 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
5135 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
5136 for (i
=0;i
<16;i
++) {
5137 params
[i
] = (GLint
) tm
[i
];
5141 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
5145 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
5146 for (i
=0;i
<16;i
++) {
5147 params
[i
] = (GLint
) tm
[i
];
5152 /* GL_HP_occlusion_test */
5153 case GL_OCCLUSION_TEST_HP
:
5154 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5155 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
5157 case GL_OCCLUSION_TEST_RESULT_HP
:
5158 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5159 if (ctx
->Depth
.OcclusionTest
)
5160 *params
= (GLint
) ctx
->OcclusionResult
;
5162 *params
= (GLint
) ctx
->OcclusionResultSaved
;
5163 /* reset flag now */
5164 ctx
->OcclusionResult
= GL_FALSE
;
5165 ctx
->OcclusionResultSaved
= GL_FALSE
;
5168 /* GL_SGIS_pixel_texture */
5169 case GL_PIXEL_TEXTURE_SGIS
:
5170 CHECK_EXTENSION_I(SGIS_pixel_texture
, pname
);
5171 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5174 /* GL_SGIX_pixel_texture */
5175 case GL_PIXEL_TEX_GEN_SGIX
:
5176 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5177 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5179 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
5180 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5181 *params
= (GLint
) pixel_texgen_mode(ctx
);
5184 /* GL_SGI_color_matrix (also in 1.2 imaging) */
5185 case GL_COLOR_MATRIX_SGI
:
5186 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5187 for (i
=0;i
<16;i
++) {
5188 params
[i
] = (GLint
) ctx
->ColorMatrixStack
.Top
->m
[i
];
5191 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5192 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5193 *params
= ctx
->ColorMatrixStack
.Depth
+ 1;
5195 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5196 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5197 *params
= MAX_COLOR_STACK_DEPTH
;
5199 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5200 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5201 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
5203 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5204 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5205 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
5207 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5208 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5209 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
5211 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5212 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5213 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
5215 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5216 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5217 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
5219 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5220 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5221 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
5223 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5224 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5225 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
5227 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5228 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5229 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
5232 /* GL_EXT_convolution (also in 1.2 imaging) */
5233 case GL_CONVOLUTION_1D_EXT
:
5234 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5235 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
5237 case GL_CONVOLUTION_2D
:
5238 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5239 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
5241 case GL_SEPARABLE_2D
:
5242 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5243 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
5245 case GL_MAX_CONVOLUTION_WIDTH
:
5246 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5247 *params
= ctx
->Const
.MaxConvolutionWidth
;
5249 case GL_MAX_CONVOLUTION_HEIGHT
:
5250 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5251 *params
= ctx
->Const
.MaxConvolutionHeight
;
5253 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5254 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5255 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
5257 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5258 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5259 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
5261 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5262 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5263 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
5265 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5266 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5267 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
5269 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5270 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5271 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
5273 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5274 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5275 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
5277 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5278 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5279 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5281 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5282 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5283 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5286 /* GL_EXT_histogram (also in 1.2 imaging) */
5288 CHECK_EXTENSION_I(EXT_histogram
, pname
);
5289 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
5292 CHECK_EXTENSION_I(EXT_histogram
, pname
);
5293 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
5296 /* GL_SGI_color_table (also in 1.2 imaging */
5297 case GL_COLOR_TABLE_SGI
:
5298 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5299 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
5301 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5302 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5303 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
5305 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5306 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5307 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
5311 /* GL_EXT_secondary_color */
5312 case GL_COLOR_SUM_EXT
:
5313 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5314 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
5316 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5317 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5318 FLUSH_CURRENT(ctx
, 0);
5319 params
[0] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]) );
5320 params
[1] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]) );
5321 params
[2] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]) );
5323 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5324 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5325 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
5327 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5328 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5329 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
5331 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5332 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5333 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5335 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5336 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5337 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5340 /* GL_EXT_fog_coord */
5341 case GL_CURRENT_FOG_COORDINATE_EXT
:
5342 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5343 FLUSH_CURRENT(ctx
, 0);
5344 *params
= (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
5346 case GL_FOG_COORDINATE_ARRAY_EXT
:
5347 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5348 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
5350 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5351 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5352 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
5354 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5355 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5356 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
5359 /* GL_EXT_texture_lod_bias */
5360 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5361 *params
= (GLint
) ctx
->Const
.MaxTextureLodBias
;
5364 /* GL_EXT_texture_filter_anisotropic */
5365 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5366 CHECK_EXTENSION_I(EXT_texture_filter_anisotropic
, pname
);
5367 *params
= (GLint
) ctx
->Const
.MaxTextureMaxAnisotropy
;
5370 /* GL_ARB_multisample */
5371 case GL_MULTISAMPLE_ARB
:
5372 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5373 *params
= (GLint
) ctx
->Multisample
.Enabled
;
5375 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5376 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5377 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToCoverage
;
5379 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5380 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5381 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToOne
;
5383 case GL_SAMPLE_COVERAGE_ARB
:
5384 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5385 *params
= (GLint
) ctx
->Multisample
.SampleCoverage
;
5387 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5388 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5389 *params
= (GLint
) ctx
->Multisample
.SampleCoverageValue
;
5391 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5392 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5393 *params
= (GLint
) ctx
->Multisample
.SampleCoverageInvert
;
5395 case GL_SAMPLE_BUFFERS_ARB
:
5396 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5397 *params
= 0; /* XXX fix someday */
5399 case GL_SAMPLES_ARB
:
5400 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5401 *params
= 0; /* XXX fix someday */
5404 /* GL_IBM_rasterpos_clip */
5405 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5406 CHECK_EXTENSION_I(IBM_rasterpos_clip
, pname
);
5407 *params
= (GLint
) ctx
->Transform
.RasterPositionUnclipped
;
5410 /* GL_NV_point_sprite */
5411 case GL_POINT_SPRITE_NV
:
5412 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
5413 *params
= (GLint
) ctx
->Point
.PointSprite
;
5415 case GL_POINT_SPRITE_R_MODE_NV
:
5416 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
5417 *params
= (GLint
) ctx
->Point
.SpriteRMode
;
5420 /* GL_SGIS_generate_mipmap */
5421 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5422 CHECK_EXTENSION_I(SGIS_generate_mipmap
, pname
);
5423 *params
= (GLint
) ctx
->Hint
.GenerateMipmap
;
5426 /* GL_NV_vertex_program */
5427 case GL_VERTEX_PROGRAM_NV
:
5428 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5429 *params
= (GLint
) ctx
->VertexProgram
.Enabled
;
5431 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
5432 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5433 *params
= (GLint
) ctx
->VertexProgram
.PointSizeEnabled
;
5435 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
5436 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5437 *params
= (GLint
) ctx
->VertexProgram
.TwoSideEnabled
;
5439 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
5440 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5441 *params
= MAX_PROGRAM_STACK_DEPTH
;
5443 case GL_MAX_TRACK_MATRICES_NV
:
5444 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5445 *params
= MAX_PROGRAM_MATRICES
;
5447 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
5448 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5449 *params
= ctx
->CurrentStack
->Depth
;
5451 case GL_CURRENT_MATRIX_NV
:
5452 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5453 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
5455 case GL_VERTEX_PROGRAM_BINDING_NV
:
5456 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5457 *params
= (GLint
) ctx
->VertexProgram
.CurrentID
;
5459 case GL_PROGRAM_ERROR_POSITION_NV
:
5460 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5461 *params
= (GLint
) ctx
->VertexProgram
.ErrorPos
;
5463 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
5464 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
5465 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
5466 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
5467 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
5468 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
5469 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
5470 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
5471 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
5472 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
5473 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
5474 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
5475 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
5476 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
5477 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
5478 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
5479 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5481 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
5482 *params
= (GLint
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
5485 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
5486 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
5487 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
5488 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
5489 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
5490 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
5491 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
5492 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
5493 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
5494 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
5495 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
5496 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
5497 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
5498 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
5499 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
5500 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
5501 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
5503 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
5504 *params
= (GLint
) ctx
->Eval
.Map1Attrib
[n
];
5507 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
5508 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
5509 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
5510 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
5511 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
5512 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
5513 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
5514 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
5515 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
5516 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
5517 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
5518 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
5519 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
5520 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
5521 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
5522 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
5523 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
5525 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
5526 *params
= (GLint
) ctx
->Eval
.Map2Attrib
[n
];
5530 /* GL_NV_texture_rectangle */
5531 case GL_TEXTURE_RECTANGLE_NV
:
5532 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5533 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
5535 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
5536 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5537 *params
= (GLint
) textureUnit
->CurrentRect
->Name
;
5539 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
5540 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
5541 *params
= (GLint
) ctx
->Const
.MaxTextureRectSize
;
5547 sprintf(s
, "glGetIntegerv(pname=0x%x)", pname
);
5548 _mesa_error( ctx
, GL_INVALID_ENUM
, s
);
5556 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
5558 GET_CURRENT_CONTEXT(ctx
);
5559 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
5560 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5565 if (MESA_VERBOSE
& VERBOSE_API
)
5566 _mesa_debug(ctx
, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname
));
5568 if (ctx
->Driver
.GetPointerv
5569 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
5573 case GL_VERTEX_ARRAY_POINTER
:
5574 *params
= ctx
->Array
.Vertex
.Ptr
;
5576 case GL_NORMAL_ARRAY_POINTER
:
5577 *params
= ctx
->Array
.Normal
.Ptr
;
5579 case GL_COLOR_ARRAY_POINTER
:
5580 *params
= ctx
->Array
.Color
.Ptr
;
5582 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
5583 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
5585 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
5586 *params
= ctx
->Array
.FogCoord
.Ptr
;
5588 case GL_INDEX_ARRAY_POINTER
:
5589 *params
= ctx
->Array
.Index
.Ptr
;
5591 case GL_TEXTURE_COORD_ARRAY_POINTER
:
5592 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
5594 case GL_EDGE_FLAG_ARRAY_POINTER
:
5595 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
5597 case GL_FEEDBACK_BUFFER_POINTER
:
5598 *params
= ctx
->Feedback
.Buffer
;
5600 case GL_SELECTION_BUFFER_POINTER
:
5601 *params
= ctx
->Select
.Buffer
;
5604 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
5612 _mesa_GetString( GLenum name
)
5614 GET_CURRENT_CONTEXT(ctx
);
5615 static const char *vendor
= "Brian Paul";
5616 static const char *renderer
= "Mesa";
5617 static const char *version_1_2
= "1.2 Mesa 4.1 beta";
5618 static const char *version_1_3
= "1.3 Mesa 4.1 beta";
5620 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5622 /* this is a required driver function */
5623 assert(ctx
->Driver
.GetString
);
5625 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
5631 return (const GLubyte
*) vendor
;
5633 return (const GLubyte
*) renderer
;
5635 if (ctx
->Extensions
.ARB_multitexture
&&
5636 ctx
->Extensions
.ARB_multisample
&&
5637 ctx
->Extensions
.ARB_texture_border_clamp
&&
5638 ctx
->Extensions
.ARB_texture_compression
&&
5639 ctx
->Extensions
.EXT_texture_env_add
&&
5640 ctx
->Extensions
.ARB_texture_env_combine
&&
5641 ctx
->Extensions
.ARB_texture_env_dot3
)
5642 return (const GLubyte
*) version_1_3
;
5644 return (const GLubyte
*) version_1_2
;
5646 return (const GLubyte
*) _mesa_extensions_get_string(ctx
);
5648 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
5649 return (const GLubyte
*) 0;
5656 * Execute a glGetError command
5659 _mesa_GetError( void )
5661 GET_CURRENT_CONTEXT(ctx
);
5662 GLenum e
= ctx
->ErrorValue
;
5663 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5665 if (MESA_VERBOSE
& VERBOSE_API
)
5666 _mesa_debug(ctx
, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e
));
5668 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;