3 * State query functions.
7 * Mesa 3-D graphics library
10 * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
12 * Permission is hereby granted, free of charge, to any person obtaining a
13 * copy of this software and associated documentation files (the "Software"),
14 * to deal in the Software without restriction, including without limitation
15 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16 * and/or sell copies of the Software, and to permit persons to whom the
17 * Software is furnished to do so, subject to the following conditions:
19 * The above copyright notice and this permission notice shall be included
20 * in all copies or substantial portions of the Software.
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
26 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
27 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 * Regarding GL_NV_light_max_exponent:
33 * Portions of this software may use or implement intellectual
34 * property owned and licensed by NVIDIA Corporation. NVIDIA disclaims
35 * any and all warranties with respect to such intellectual property,
36 * including any use thereof or modifications thereto.
44 #include "extensions.h"
48 #include "texcompress.h"
50 #include "math/m_matrix.h"
53 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
54 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
55 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
58 /* Needed for an Amiga compiler */
59 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
60 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
62 /* all other compilers */
63 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
64 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
68 /* Check if named extension is enabled, if not generate error and return */
70 #define CHECK1(E1, str, PNAME) \
71 if (!ctx->Extensions.E1) { \
72 _mesa_error(ctx, GL_INVALID_VALUE, \
73 "glGet" str "v(0x%x)", (int) PNAME); \
77 #define CHECK2(E1, E2, str, PNAME) \
78 if (!ctx->Extensions.E1 && !ctx->Extensions.E2) { \
79 _mesa_error(ctx, GL_INVALID_VALUE, \
80 "glGet" str "v(0x%x)", (int) PNAME); \
84 #define CHECK_EXTENSION_B(EXTNAME, PNAME) \
85 CHECK1(EXTNAME, "Boolean", PNAME )
87 #define CHECK_EXTENSION_I(EXTNAME, PNAME) \
88 CHECK1(EXTNAME, "Integer", PNAME )
90 #define CHECK_EXTENSION_F(EXTNAME, PNAME) \
91 CHECK1(EXTNAME, "Float", PNAME )
93 #define CHECK_EXTENSION_D(EXTNAME, PNAME) \
94 CHECK1(EXTNAME, "Double", PNAME )
96 #define CHECK_EXTENSION2_B(EXT1, EXT2, PNAME) \
97 CHECK2(EXT1, EXT2, "Boolean", PNAME)
99 #define CHECK_EXTENSION2_I(EXT1, EXT2, PNAME) \
100 CHECK2(EXT1, EXT2, "Integer", PNAME)
102 #define CHECK_EXTENSION2_F(EXT1, EXT2, PNAME) \
103 CHECK2(EXT1, EXT2, "Float", PNAME)
105 #define CHECK_EXTENSION2_D(EXT1, EXT2, PNAME) \
106 CHECK2(EXT1, EXT2, "Double", PNAME)
111 pixel_texgen_mode(const GLcontext
*ctx
)
113 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
114 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
122 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
133 * Get the value(s) of a selected parameter.
135 * \param pname parameter to be returned.
136 * \param params will hold the value(s) of the speficifed parameter.
138 * \sa glGetBooleanv().
140 * Tries to get the specified parameter via dd_function_table::GetBooleanv,
141 * otherwise gets the specified parameter from the current context, converting
142 * it value into GLboolean.
145 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
147 GET_CURRENT_CONTEXT(ctx
);
149 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
150 const GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
151 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
152 ASSERT_OUTSIDE_BEGIN_END(ctx
);
157 if (MESA_VERBOSE
& VERBOSE_API
)
158 _mesa_debug(ctx
, "glGetBooleanv %s\n", _mesa_lookup_enum_by_nr(pname
));
160 if (!ctx
->_CurrentProgram
) {
161 /* We need this in order to get correct results for
162 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
164 FLUSH_VERTICES(ctx
, 0);
167 if (ctx
->Driver
.GetBooleanv
168 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
172 case GL_ACCUM_RED_BITS
:
173 *params
= INT_TO_BOOL(ctx
->Visual
.accumRedBits
);
175 case GL_ACCUM_GREEN_BITS
:
176 *params
= INT_TO_BOOL(ctx
->Visual
.accumGreenBits
);
178 case GL_ACCUM_BLUE_BITS
:
179 *params
= INT_TO_BOOL(ctx
->Visual
.accumBlueBits
);
181 case GL_ACCUM_ALPHA_BITS
:
182 *params
= INT_TO_BOOL(ctx
->Visual
.accumAlphaBits
);
184 case GL_ACCUM_CLEAR_VALUE
:
185 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
186 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
187 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
188 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
191 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
194 *params
= INT_TO_BOOL(ctx
->Visual
.alphaBits
);
197 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
200 *params
= ctx
->Color
.AlphaEnabled
;
202 case GL_ALPHA_TEST_FUNC
:
203 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
205 case GL_ALPHA_TEST_REF
:
206 *params
= ctx
->Color
.AlphaRef
? GL_TRUE
: GL_FALSE
;
208 case GL_ATTRIB_STACK_DEPTH
:
209 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
212 *params
= ctx
->Eval
.AutoNormal
;
215 *params
= (ctx
->Visual
.numAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
218 *params
= ctx
->Color
.BlendEnabled
;
221 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
224 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
226 case GL_BLEND_SRC_RGB_EXT
:
227 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
229 case GL_BLEND_DST_RGB_EXT
:
230 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
232 case GL_BLEND_SRC_ALPHA_EXT
:
233 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
235 case GL_BLEND_DST_ALPHA_EXT
:
236 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
238 case GL_BLEND_EQUATION
:
239 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquationRGB
);
241 case GL_BLEND_EQUATION_ALPHA_EXT
:
242 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquationA
);
244 case GL_BLEND_COLOR_EXT
:
245 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
246 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
247 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
248 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
251 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
254 *params
= INT_TO_BOOL( ctx
->Visual
.blueBits
);
257 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
259 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
260 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
268 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
273 case GL_COLOR_CLEAR_VALUE
:
274 params
[0] = ctx
->Color
.ClearColor
[0] ? GL_TRUE
: GL_FALSE
;
275 params
[1] = ctx
->Color
.ClearColor
[1] ? GL_TRUE
: GL_FALSE
;
276 params
[2] = ctx
->Color
.ClearColor
[2] ? GL_TRUE
: GL_FALSE
;
277 params
[3] = ctx
->Color
.ClearColor
[3] ? GL_TRUE
: GL_FALSE
;
279 case GL_COLOR_MATERIAL
:
280 *params
= ctx
->Light
.ColorMaterialEnabled
;
282 case GL_COLOR_MATERIAL_FACE
:
283 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
285 case GL_COLOR_MATERIAL_PARAMETER
:
286 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
288 case GL_COLOR_WRITEMASK
:
289 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
290 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
291 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
292 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
295 *params
= ctx
->Polygon
.CullFlag
;
297 case GL_CULL_FACE_MODE
:
298 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
300 case GL_CURRENT_COLOR
:
301 FLUSH_CURRENT(ctx
, 0);
302 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
303 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
304 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
305 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
307 case GL_CURRENT_INDEX
:
308 FLUSH_CURRENT(ctx
, 0);
309 *params
= FLOAT_TO_BOOL(ctx
->Current
.Index
);
311 case GL_CURRENT_NORMAL
:
312 FLUSH_CURRENT(ctx
, 0);
313 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
314 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
315 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
317 case GL_CURRENT_RASTER_COLOR
:
318 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
319 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
320 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
321 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
323 case GL_CURRENT_RASTER_DISTANCE
:
324 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
326 case GL_CURRENT_RASTER_INDEX
:
327 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
329 case GL_CURRENT_RASTER_POSITION
:
330 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
331 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
332 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
333 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
335 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
336 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][0]);
337 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][1]);
338 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][2]);
339 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][3]);
341 case GL_CURRENT_RASTER_POSITION_VALID
:
342 *params
= ctx
->Current
.RasterPosValid
;
344 case GL_CURRENT_TEXTURE_COORDS
:
345 FLUSH_CURRENT(ctx
, 0);
346 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0]);
347 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1]);
348 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2]);
349 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3]);
352 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
355 *params
= INT_TO_BOOL(ctx
->Visual
.depthBits
);
357 case GL_DEPTH_CLEAR_VALUE
:
358 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
361 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
364 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
365 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
368 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
371 *params
= ctx
->Depth
.Test
;
373 case GL_DEPTH_WRITEMASK
:
374 *params
= ctx
->Depth
.Mask
;
377 *params
= ctx
->Color
.DitherFlag
;
379 case GL_DOUBLEBUFFER
:
380 *params
= ctx
->Visual
.doubleBufferMode
;
383 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
[0]);
386 FLUSH_CURRENT(ctx
, 0);
387 *params
= ctx
->Current
.EdgeFlag
;
389 case GL_FEEDBACK_BUFFER_SIZE
:
390 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
392 case GL_FEEDBACK_BUFFER_TYPE
:
393 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
396 *params
= ctx
->Fog
.Enabled
;
399 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
400 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
401 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
402 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
405 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
408 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
411 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
414 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
417 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
420 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
423 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
426 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
429 *params
= INT_TO_BOOL( ctx
->Visual
.greenBits
);
432 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
435 *params
= INT_TO_BOOL( ctx
->Visual
.indexBits
);
437 case GL_INDEX_CLEAR_VALUE
:
438 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
441 *params
= ctx
->Visual
.rgbMode
? GL_FALSE
: GL_TRUE
;
443 case GL_INDEX_OFFSET
:
444 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
447 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
449 case GL_INDEX_WRITEMASK
:
450 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
460 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
463 *params
= ctx
->Light
.Enabled
;
465 case GL_LIGHT_MODEL_AMBIENT
:
466 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
467 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
468 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
469 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
471 case GL_LIGHT_MODEL_COLOR_CONTROL
:
472 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
474 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
475 *params
= ctx
->Light
.Model
.LocalViewer
;
477 case GL_LIGHT_MODEL_TWO_SIDE
:
478 *params
= ctx
->Light
.Model
.TwoSide
;
481 *params
= ctx
->Line
.SmoothFlag
;
483 case GL_LINE_SMOOTH_HINT
:
484 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
486 case GL_LINE_STIPPLE
:
487 *params
= ctx
->Line
.StippleFlag
;
489 case GL_LINE_STIPPLE_PATTERN
:
490 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
492 case GL_LINE_STIPPLE_REPEAT
:
493 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
496 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
498 case GL_LINE_WIDTH_GRANULARITY
:
499 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
501 case GL_LINE_WIDTH_RANGE
:
502 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
503 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
505 case GL_ALIASED_LINE_WIDTH_RANGE
:
506 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
507 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
510 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
513 *params
= INT_TO_BOOL( ctx
->ListState
.CurrentListNum
);
516 if (!ctx
->CompileFlag
)
518 else if (ctx
->ExecuteFlag
)
519 *params
= ENUM_TO_BOOL(GL_COMPILE_AND_EXECUTE
);
521 *params
= ENUM_TO_BOOL(GL_COMPILE
);
523 case GL_INDEX_LOGIC_OP
:
524 *params
= ctx
->Color
.IndexLogicOpEnabled
;
526 case GL_COLOR_LOGIC_OP
:
527 *params
= ctx
->Color
.ColorLogicOpEnabled
;
529 case GL_LOGIC_OP_MODE
:
530 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
532 case GL_MAP1_COLOR_4
:
533 *params
= ctx
->Eval
.Map1Color4
;
535 case GL_MAP1_GRID_DOMAIN
:
536 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
537 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
539 case GL_MAP1_GRID_SEGMENTS
:
540 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
543 *params
= ctx
->Eval
.Map1Index
;
546 *params
= ctx
->Eval
.Map1Normal
;
548 case GL_MAP1_TEXTURE_COORD_1
:
549 *params
= ctx
->Eval
.Map1TextureCoord1
;
551 case GL_MAP1_TEXTURE_COORD_2
:
552 *params
= ctx
->Eval
.Map1TextureCoord2
;
554 case GL_MAP1_TEXTURE_COORD_3
:
555 *params
= ctx
->Eval
.Map1TextureCoord3
;
557 case GL_MAP1_TEXTURE_COORD_4
:
558 *params
= ctx
->Eval
.Map1TextureCoord4
;
560 case GL_MAP1_VERTEX_3
:
561 *params
= ctx
->Eval
.Map1Vertex3
;
563 case GL_MAP1_VERTEX_4
:
564 *params
= ctx
->Eval
.Map1Vertex4
;
566 case GL_MAP2_COLOR_4
:
567 *params
= ctx
->Eval
.Map2Color4
;
569 case GL_MAP2_GRID_DOMAIN
:
570 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
571 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
572 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
573 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
575 case GL_MAP2_GRID_SEGMENTS
:
576 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
577 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
580 *params
= ctx
->Eval
.Map2Index
;
583 *params
= ctx
->Eval
.Map2Normal
;
585 case GL_MAP2_TEXTURE_COORD_1
:
586 *params
= ctx
->Eval
.Map2TextureCoord1
;
588 case GL_MAP2_TEXTURE_COORD_2
:
589 *params
= ctx
->Eval
.Map2TextureCoord2
;
591 case GL_MAP2_TEXTURE_COORD_3
:
592 *params
= ctx
->Eval
.Map2TextureCoord3
;
594 case GL_MAP2_TEXTURE_COORD_4
:
595 *params
= ctx
->Eval
.Map2TextureCoord4
;
597 case GL_MAP2_VERTEX_3
:
598 *params
= ctx
->Eval
.Map2Vertex3
;
600 case GL_MAP2_VERTEX_4
:
601 *params
= ctx
->Eval
.Map2Vertex4
;
604 *params
= ctx
->Pixel
.MapColorFlag
;
607 *params
= ctx
->Pixel
.MapStencilFlag
;
610 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
612 case GL_MAX_ATTRIB_STACK_DEPTH
:
613 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
615 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
616 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
618 case GL_MAX_CLIP_PLANES
:
619 *params
= INT_TO_BOOL(ctx
->Const
.MaxClipPlanes
);
621 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
622 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
624 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
625 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
627 case GL_MAX_EVAL_ORDER
:
628 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
631 *params
= INT_TO_BOOL(ctx
->Const
.MaxLights
);
633 case GL_MAX_LIST_NESTING
:
634 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
636 case GL_MAX_MODELVIEW_STACK_DEPTH
:
637 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
639 case GL_MAX_NAME_STACK_DEPTH
:
640 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
642 case GL_MAX_PIXEL_MAP_TABLE
:
643 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
645 case GL_MAX_PROJECTION_STACK_DEPTH
:
646 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
648 case GL_MAX_TEXTURE_SIZE
:
649 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxTextureLevels
- 1));
651 case GL_MAX_3D_TEXTURE_SIZE
:
652 *params
= INT_TO_BOOL(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
654 case GL_MAX_TEXTURE_STACK_DEPTH
:
655 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
657 case GL_MAX_VIEWPORT_DIMS
:
658 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
659 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
661 case GL_MODELVIEW_MATRIX
:
663 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelviewMatrixStack
.Top
->m
[i
]);
666 case GL_MODELVIEW_STACK_DEPTH
:
667 *params
= INT_TO_BOOL(ctx
->ModelviewMatrixStack
.Depth
+ 1);
669 case GL_NAME_STACK_DEPTH
:
670 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
673 *params
= ctx
->Transform
.Normalize
;
675 case GL_PACK_ALIGNMENT
:
676 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
678 case GL_PACK_LSB_FIRST
:
679 *params
= ctx
->Pack
.LsbFirst
;
681 case GL_PACK_ROW_LENGTH
:
682 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
684 case GL_PACK_SKIP_PIXELS
:
685 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
687 case GL_PACK_SKIP_ROWS
:
688 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
690 case GL_PACK_SWAP_BYTES
:
691 *params
= ctx
->Pack
.SwapBytes
;
693 case GL_PACK_SKIP_IMAGES_EXT
:
694 *params
= ctx
->Pack
.SkipImages
;
696 case GL_PACK_IMAGE_HEIGHT_EXT
:
697 *params
= ctx
->Pack
.ImageHeight
;
699 case GL_PACK_INVERT_MESA
:
700 *params
= ctx
->Pack
.Invert
;
702 case GL_PERSPECTIVE_CORRECTION_HINT
:
703 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
705 case GL_PIXEL_MAP_A_TO_A_SIZE
:
706 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
708 case GL_PIXEL_MAP_B_TO_B_SIZE
:
709 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
711 case GL_PIXEL_MAP_G_TO_G_SIZE
:
712 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
714 case GL_PIXEL_MAP_I_TO_A_SIZE
:
715 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
717 case GL_PIXEL_MAP_I_TO_B_SIZE
:
718 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
720 case GL_PIXEL_MAP_I_TO_G_SIZE
:
721 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
723 case GL_PIXEL_MAP_I_TO_I_SIZE
:
724 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
726 case GL_PIXEL_MAP_I_TO_R_SIZE
:
727 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
729 case GL_PIXEL_MAP_R_TO_R_SIZE
:
730 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
732 case GL_PIXEL_MAP_S_TO_S_SIZE
:
733 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
736 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
738 case GL_POINT_SIZE_GRANULARITY
:
739 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
741 case GL_POINT_SIZE_RANGE
:
742 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
743 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
745 case GL_ALIASED_POINT_SIZE_RANGE
:
746 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
747 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
749 case GL_POINT_SMOOTH
:
750 *params
= ctx
->Point
.SmoothFlag
;
752 case GL_POINT_SMOOTH_HINT
:
753 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
755 case GL_POINT_SIZE_MIN_EXT
:
756 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
758 case GL_POINT_SIZE_MAX_EXT
:
759 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
761 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
762 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
764 case GL_DISTANCE_ATTENUATION_EXT
:
765 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
766 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
767 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
769 case GL_POLYGON_MODE
:
770 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
771 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
773 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
774 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
776 case GL_POLYGON_OFFSET_FACTOR
:
777 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
779 case GL_POLYGON_OFFSET_UNITS
:
780 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
782 case GL_POLYGON_SMOOTH
:
783 *params
= ctx
->Polygon
.SmoothFlag
;
785 case GL_POLYGON_SMOOTH_HINT
:
786 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
788 case GL_POLYGON_STIPPLE
:
789 *params
= ctx
->Polygon
.StippleFlag
;
791 case GL_PROJECTION_MATRIX
:
793 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrixStack
.Top
->m
[i
]);
796 case GL_PROJECTION_STACK_DEPTH
:
797 *params
= INT_TO_BOOL(ctx
->ProjectionMatrixStack
.Depth
+ 1);
800 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
803 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
806 *params
= INT_TO_BOOL( ctx
->Visual
.redBits
);
809 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
812 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
814 case GL_RESCALE_NORMAL
:
815 *params
= ctx
->Transform
.RescaleNormals
;
818 *params
= ctx
->Visual
.rgbMode
;
821 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
822 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
823 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
824 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
826 case GL_SCISSOR_TEST
:
827 *params
= ctx
->Scissor
.Enabled
;
829 case GL_SELECTION_BUFFER_SIZE
:
830 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
833 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
835 case GL_SHARED_TEXTURE_PALETTE_EXT
:
836 *params
= ctx
->Texture
.SharedPalette
;
838 case GL_STENCIL_BITS
:
839 *params
= INT_TO_BOOL(ctx
->Visual
.stencilBits
);
841 case GL_STENCIL_CLEAR_VALUE
:
842 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
844 case GL_STENCIL_FAIL
:
845 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
847 case GL_STENCIL_FUNC
:
848 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
850 case GL_STENCIL_PASS_DEPTH_FAIL
:
851 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
853 case GL_STENCIL_PASS_DEPTH_PASS
:
854 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
857 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
859 case GL_STENCIL_TEST
:
860 *params
= ctx
->Stencil
.Enabled
;
862 case GL_STENCIL_VALUE_MASK
:
863 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
865 case GL_STENCIL_WRITEMASK
:
866 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
869 *params
= ctx
->Visual
.stereoMode
;
871 case GL_SUBPIXEL_BITS
:
872 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
875 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
878 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
881 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
883 case GL_TEXTURE_BINDING_1D
:
884 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
886 case GL_TEXTURE_BINDING_2D
:
887 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
889 case GL_TEXTURE_BINDING_3D
:
890 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
892 case GL_TEXTURE_ENV_COLOR
:
894 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
895 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
896 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
897 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
900 case GL_TEXTURE_ENV_MODE
:
901 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
903 case GL_TEXTURE_GEN_S
:
904 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
906 case GL_TEXTURE_GEN_T
:
907 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
909 case GL_TEXTURE_GEN_R
:
910 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
912 case GL_TEXTURE_GEN_Q
:
913 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
915 case GL_TEXTURE_MATRIX
:
918 FLOAT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
]);
921 case GL_TEXTURE_STACK_DEPTH
:
922 *params
= INT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
924 case GL_UNPACK_ALIGNMENT
:
925 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
927 case GL_UNPACK_LSB_FIRST
:
928 *params
= ctx
->Unpack
.LsbFirst
;
930 case GL_UNPACK_ROW_LENGTH
:
931 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
933 case GL_UNPACK_SKIP_PIXELS
:
934 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
936 case GL_UNPACK_SKIP_ROWS
:
937 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
939 case GL_UNPACK_SWAP_BYTES
:
940 *params
= ctx
->Unpack
.SwapBytes
;
942 case GL_UNPACK_SKIP_IMAGES_EXT
:
943 *params
= ctx
->Unpack
.SkipImages
;
945 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
946 *params
= ctx
->Unpack
.ImageHeight
;
948 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
949 *params
= ctx
->Unpack
.ClientStorage
;
952 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
953 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
954 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
955 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
958 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
961 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
963 case GL_VERTEX_ARRAY
:
964 *params
= ctx
->Array
.Vertex
.Enabled
;
966 case GL_VERTEX_ARRAY_SIZE
:
967 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
969 case GL_VERTEX_ARRAY_TYPE
:
970 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
972 case GL_VERTEX_ARRAY_STRIDE
:
973 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
975 case GL_VERTEX_ARRAY_COUNT_EXT
:
976 *params
= INT_TO_BOOL(0);
978 case GL_NORMAL_ARRAY
:
979 *params
= ctx
->Array
.Normal
.Enabled
;
981 case GL_NORMAL_ARRAY_TYPE
:
982 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
984 case GL_NORMAL_ARRAY_STRIDE
:
985 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
987 case GL_NORMAL_ARRAY_COUNT_EXT
:
988 *params
= INT_TO_BOOL(0);
991 *params
= ctx
->Array
.Color
.Enabled
;
993 case GL_COLOR_ARRAY_SIZE
:
994 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
996 case GL_COLOR_ARRAY_TYPE
:
997 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
999 case GL_COLOR_ARRAY_STRIDE
:
1000 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
1002 case GL_COLOR_ARRAY_COUNT_EXT
:
1003 *params
= INT_TO_BOOL(0);
1005 case GL_INDEX_ARRAY
:
1006 *params
= ctx
->Array
.Index
.Enabled
;
1008 case GL_INDEX_ARRAY_TYPE
:
1009 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
1011 case GL_INDEX_ARRAY_STRIDE
:
1012 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
1014 case GL_INDEX_ARRAY_COUNT_EXT
:
1015 *params
= INT_TO_BOOL(0);
1017 case GL_TEXTURE_COORD_ARRAY
:
1018 *params
= ctx
->Array
.TexCoord
[clientUnit
].Enabled
;
1020 case GL_TEXTURE_COORD_ARRAY_SIZE
:
1021 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[clientUnit
].Size
);
1023 case GL_TEXTURE_COORD_ARRAY_TYPE
:
1024 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[clientUnit
].Type
);
1026 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
1027 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[clientUnit
].Stride
);
1029 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
1030 *params
= INT_TO_BOOL(0);
1032 case GL_EDGE_FLAG_ARRAY
:
1033 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
1035 case GL_EDGE_FLAG_ARRAY_STRIDE
:
1036 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
1038 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1039 *params
= INT_TO_BOOL(0);
1042 /* GL_ARB_multitexture */
1043 case GL_MAX_TEXTURE_UNITS_ARB
:
1044 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1045 *params
= INT_TO_BOOL(MIN2(ctx
->Const
.MaxTextureImageUnits
,
1046 ctx
->Const
.MaxTextureCoordUnits
));
1048 case GL_ACTIVE_TEXTURE_ARB
:
1049 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1050 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1052 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1053 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1054 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ clientUnit
);
1057 /* GL_ARB_texture_cube_map */
1058 case GL_TEXTURE_CUBE_MAP_ARB
:
1059 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1060 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1062 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1063 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1064 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
1066 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1067 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1068 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
1071 /* GL_ARB_texture_compression */
1072 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1073 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1074 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1076 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1077 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1078 *params
= INT_TO_BOOL(_mesa_get_compressed_formats(ctx
, NULL
));
1080 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1081 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1085 n
= _mesa_get_compressed_formats(ctx
, formats
);
1086 for (i
= 0; i
< n
; i
++)
1087 params
[i
] = INT_TO_BOOL(formats
[i
]);
1091 /* GL_EXT_compiled_vertex_array */
1092 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1093 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1095 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1096 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1099 /* GL_ARB_transpose_matrix */
1100 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1104 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
1105 for (i
=0;i
<16;i
++) {
1106 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1110 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1114 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
1115 for (i
=0;i
<16;i
++) {
1116 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1120 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1124 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
1125 for (i
=0;i
<16;i
++) {
1126 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1130 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1134 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
1135 for (i
=0;i
<16;i
++) {
1136 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1141 /* GL_HP_occlusion_test */
1142 case GL_OCCLUSION_TEST_HP
:
1143 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1144 *params
= ctx
->Depth
.OcclusionTest
;
1146 case GL_OCCLUSION_TEST_RESULT_HP
:
1147 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1148 if (ctx
->Depth
.OcclusionTest
)
1149 *params
= ctx
->OcclusionResult
;
1151 *params
= ctx
->OcclusionResultSaved
;
1152 /* reset flag now */
1153 ctx
->OcclusionResult
= GL_FALSE
;
1154 ctx
->OcclusionResultSaved
= GL_FALSE
;
1157 /* GL_SGIS_pixel_texture */
1158 case GL_PIXEL_TEXTURE_SGIS
:
1159 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1162 /* GL_SGIX_pixel_texture */
1163 case GL_PIXEL_TEX_GEN_SGIX
:
1164 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1166 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1167 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1170 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1171 case GL_COLOR_MATRIX_SGI
:
1172 for (i
=0;i
<16;i
++) {
1173 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrixStack
.Top
->m
[i
]);
1176 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1177 *params
= INT_TO_BOOL(ctx
->ColorMatrixStack
.Depth
+ 1);
1179 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1180 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1182 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1183 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1185 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1186 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1188 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1189 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1191 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1192 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1194 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1195 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1197 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1198 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1200 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1201 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1203 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1204 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1207 /* GL_EXT_convolution (also in 1.2 imaging) */
1208 case GL_CONVOLUTION_1D_EXT
:
1209 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1210 *params
= ctx
->Pixel
.Convolution1DEnabled
;
1212 case GL_CONVOLUTION_2D
:
1213 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1214 *params
= ctx
->Pixel
.Convolution2DEnabled
;
1216 case GL_SEPARABLE_2D
:
1217 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1218 *params
= ctx
->Pixel
.Separable2DEnabled
;
1220 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1221 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1222 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1224 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1225 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1226 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1228 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1229 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1230 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1232 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1233 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1234 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1236 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1237 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1238 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1240 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1241 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1242 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1244 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1245 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1246 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1248 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1249 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1250 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1253 /* GL_EXT_histogram (also in 1.2 imaging) */
1255 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1256 *params
= ctx
->Pixel
.HistogramEnabled
;
1259 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1260 *params
= ctx
->Pixel
.MinMaxEnabled
;
1263 /* GL_SGI_color_table (also in 1.2 imaging */
1264 case GL_COLOR_TABLE_SGI
:
1265 *params
= ctx
->Pixel
.ColorTableEnabled
;
1267 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1268 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1270 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1271 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1274 /* GL_SGI_texture_color_table */
1275 case GL_TEXTURE_COLOR_TABLE_SGI
:
1276 CHECK_EXTENSION_B(SGI_texture_color_table
, pname
);
1277 *params
= textureUnit
->ColorTableEnabled
;
1280 /* GL_EXT_secondary_color */
1281 case GL_COLOR_SUM_EXT
:
1282 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1283 *params
= ctx
->Fog
.ColorSumEnabled
;
1285 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1286 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1287 FLUSH_CURRENT(ctx
, 0);
1288 params
[0] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1289 params
[1] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1290 params
[2] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1291 params
[3] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
1293 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1294 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1295 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1297 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1298 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1299 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1301 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1302 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1303 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1305 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1306 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1307 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Size
);
1310 /* GL_EXT_fog_coord */
1311 case GL_CURRENT_FOG_COORDINATE_EXT
:
1312 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1313 FLUSH_CURRENT(ctx
, 0);
1314 *params
= FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1316 case GL_FOG_COORDINATE_ARRAY_EXT
:
1317 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1318 *params
= ctx
->Array
.FogCoord
.Enabled
;
1320 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1321 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1322 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1324 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1325 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1326 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1328 case GL_FOG_COORDINATE_SOURCE_EXT
:
1329 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1330 *params
= ENUM_TO_BOOL(ctx
->Fog
.FogCoordinateSource
);
1333 /* GL_EXT_texture_lod_bias */
1334 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1335 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureLodBias
);
1338 /* GL_EXT_texture_filter_anisotropic */
1339 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1340 CHECK_EXTENSION_B(EXT_texture_filter_anisotropic
, pname
);
1341 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureMaxAnisotropy
);
1344 /* GL_ARB_multisample */
1345 case GL_MULTISAMPLE_ARB
:
1346 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1347 *params
= ctx
->Multisample
.Enabled
;
1349 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1350 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1351 *params
= ctx
->Multisample
.SampleAlphaToCoverage
;
1353 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1354 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1355 *params
= ctx
->Multisample
.SampleAlphaToOne
;
1357 case GL_SAMPLE_COVERAGE_ARB
:
1358 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1359 *params
= ctx
->Multisample
.SampleCoverage
;
1361 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1362 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1363 *params
= FLOAT_TO_BOOL(ctx
->Multisample
.SampleCoverageValue
);
1365 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1366 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1367 *params
= ctx
->Multisample
.SampleCoverageInvert
;
1369 case GL_SAMPLE_BUFFERS_ARB
:
1370 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1371 *params
= 0; /* XXX fix someday */
1373 case GL_SAMPLES_ARB
:
1374 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1375 *params
= 0; /* XXX fix someday */
1378 /* GL_IBM_rasterpos_clip */
1379 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1380 CHECK_EXTENSION_B(IBM_rasterpos_clip
, pname
);
1381 *params
= ctx
->Transform
.RasterPositionUnclipped
;
1384 /* GL_NV_point_sprite */
1385 case GL_POINT_SPRITE_NV
:
1386 CHECK_EXTENSION2_B(NV_point_sprite
, ARB_point_sprite
, pname
);
1387 *params
= ctx
->Point
.PointSprite
;
1389 case GL_POINT_SPRITE_R_MODE_NV
:
1390 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
1391 *params
= ENUM_TO_BOOL(ctx
->Point
.SpriteRMode
);
1393 case GL_POINT_SPRITE_COORD_ORIGIN
:
1394 CHECK_EXTENSION_B(ARB_point_sprite
, pname
);
1395 *params
= ENUM_TO_BOOL(ctx
->Point
.SpriteOrigin
);
1398 /* GL_SGIS_generate_mipmap */
1399 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1400 CHECK_EXTENSION_B(SGIS_generate_mipmap
, pname
);
1401 *params
= ENUM_TO_BOOL(ctx
->Hint
.GenerateMipmap
);
1404 #if FEATURE_NV_vertex_program
1405 case GL_VERTEX_PROGRAM_NV
:
1406 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1407 *params
= ctx
->VertexProgram
.Enabled
;
1409 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
1410 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1411 *params
= ctx
->VertexProgram
.PointSizeEnabled
;
1413 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
1414 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1415 *params
= ctx
->VertexProgram
.TwoSideEnabled
;
1417 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
1418 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1419 *params
= (ctx
->Const
.MaxProgramMatrixStackDepth
> 0) ? GL_TRUE
: GL_FALSE
;
1421 case GL_MAX_TRACK_MATRICES_NV
:
1422 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1423 *params
= (ctx
->Const
.MaxProgramMatrices
> 0) ? GL_TRUE
: GL_FALSE
;
1425 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
1426 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1429 case GL_CURRENT_MATRIX_NV
:
1430 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1431 for (i
= 0; i
< 16; i
++)
1432 params
[i
] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[i
]);
1434 case GL_VERTEX_PROGRAM_BINDING_NV
:
1435 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1436 if (ctx
->VertexProgram
.Current
&&
1437 ctx
->VertexProgram
.Current
->Base
.Id
!= 0)
1442 case GL_PROGRAM_ERROR_POSITION_NV
:
1443 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1444 *params
= (ctx
->Program
.ErrorPos
!= 0) ? GL_TRUE
: GL_FALSE
;
1446 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1447 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1448 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1449 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1450 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1451 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1452 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1453 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1454 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1455 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1456 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1457 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1458 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1459 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1460 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1461 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1462 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1464 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
1465 *params
= ctx
->Array
.VertexAttrib
[n
].Enabled
;
1468 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1469 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1470 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1471 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1472 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1473 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1474 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1475 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1476 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1477 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1478 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1479 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1480 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1481 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1482 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1483 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1484 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1486 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
1487 *params
= ctx
->Eval
.Map1Attrib
[n
];
1490 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
1491 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
1492 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
1493 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
1494 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
1495 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
1496 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
1497 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
1498 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
1499 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
1500 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
1501 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
1502 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
1503 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
1504 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
1505 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
1506 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1508 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
1509 *params
= ctx
->Eval
.Map2Attrib
[n
];
1512 #endif /* FEATURE_NV_vertex_program */
1514 #if FEATURE_NV_fragment_program
1515 case GL_FRAGMENT_PROGRAM_NV
:
1516 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1517 *params
= ctx
->FragmentProgram
.Enabled
;
1519 case GL_MAX_TEXTURE_COORDS_NV
:
1520 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1521 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureCoordUnits
);
1523 case GL_MAX_TEXTURE_IMAGE_UNITS_NV
:
1524 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1525 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureImageUnits
);
1527 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
1528 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1529 if (ctx
->VertexProgram
.Current
&&
1530 ctx
->VertexProgram
.Current
->Base
.Id
!= 0)
1535 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
1536 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1537 *params
= MAX_NV_FRAGMENT_PROGRAM_PARAMS
? GL_TRUE
: GL_FALSE
;
1539 #endif /* FEATURE_NV_fragment_program */
1541 /* GL_NV_texture_rectangle */
1542 case GL_TEXTURE_RECTANGLE_NV
:
1543 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1544 *params
= _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1546 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1547 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1548 *params
= INT_TO_BOOL(textureUnit
->CurrentRect
->Name
);
1550 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1551 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1552 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureRectSize
);
1555 /* GL_EXT_stencil_two_side */
1556 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
1557 CHECK_EXTENSION_B(EXT_stencil_two_side
, pname
);
1558 *params
= ctx
->Stencil
.TestTwoSide
;
1560 case GL_ACTIVE_STENCIL_FACE_EXT
:
1561 CHECK_EXTENSION_B(EXT_stencil_two_side
, pname
);
1562 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
1565 /* GL_NV_light_max_exponent */
1566 case GL_MAX_SHININESS_NV
:
1567 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxShininess
);
1569 case GL_MAX_SPOT_EXPONENT_NV
:
1570 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxSpotExponent
);
1573 #if FEATURE_ARB_vertex_buffer_object
1574 case GL_ARRAY_BUFFER_BINDING_ARB
:
1575 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1576 *params
= INT_TO_BOOL(ctx
->Array
.ArrayBufferObj
->Name
);
1578 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
1579 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1580 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.BufferObj
->Name
);
1582 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
1583 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1584 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.BufferObj
->Name
);
1586 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1587 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1588 *params
= INT_TO_BOOL(ctx
->Array
.Color
.BufferObj
->Name
);
1590 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
1591 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1592 *params
= INT_TO_BOOL(ctx
->Array
.Index
.BufferObj
->Name
);
1594 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
1595 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1596 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[clientUnit
].BufferObj
->Name
);
1598 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
1599 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1600 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.BufferObj
->Name
);
1602 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1603 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1604 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.BufferObj
->Name
);
1606 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
1607 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1608 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.BufferObj
->Name
);
1610 /*case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB: - not supported */
1611 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
1612 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1613 *params
= INT_TO_BOOL(ctx
->Array
.ElementArrayBufferObj
->Name
);
1616 #if FEATURE_EXT_pixel_buffer_object
1617 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
1618 CHECK_EXTENSION_B(EXT_pixel_buffer_object
, pname
);
1619 *params
= INT_TO_BOOL(ctx
->Pack
.BufferObj
->Name
);
1621 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
1622 CHECK_EXTENSION_B(EXT_pixel_buffer_object
, pname
);
1623 *params
= INT_TO_BOOL(ctx
->Unpack
.BufferObj
->Name
);
1627 #if FEATURE_ARB_vertex_program
1628 /* GL_NV_vertex_program and GL_ARB_fragment_program define others */
1629 case GL_MAX_VERTEX_ATTRIBS_ARB
:
1630 CHECK_EXTENSION_B(ARB_vertex_program
, pname
);
1631 *params
= (ctx
->Const
.MaxVertexProgramAttribs
> 0) ? GL_TRUE
: GL_FALSE
;
1635 #if FEATURE_ARB_fragment_program
1636 case GL_FRAGMENT_PROGRAM_ARB
:
1637 CHECK_EXTENSION_B(ARB_fragment_program
, pname
);
1638 *params
= ctx
->FragmentProgram
.Enabled
;
1640 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
1641 CHECK_EXTENSION_B(ARB_fragment_program
, pname
);
1642 params
[0] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[0]);
1643 params
[1] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[4]);
1644 params
[2] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[8]);
1645 params
[3] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[12]);
1646 params
[4] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[1]);
1647 params
[5] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[5]);
1648 params
[6] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[9]);
1649 params
[7] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[13]);
1650 params
[8] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[2]);
1651 params
[9] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[6]);
1652 params
[10] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[10]);
1653 params
[11] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[14]);
1654 params
[12] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[3]);
1655 params
[13] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[7]);
1656 params
[14] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[11]);
1657 params
[15] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[15]);
1659 /* Remaining ARB_fragment_program queries alias with
1660 * the GL_NV_fragment_program queries.
1664 /* GL_EXT_depth_bounds_test */
1665 case GL_DEPTH_BOUNDS_TEST_EXT
:
1666 CHECK_EXTENSION_B(EXT_depth_bounds_test
, pname
);
1667 params
[0] = ctx
->Depth
.BoundsTest
;
1669 case GL_DEPTH_BOUNDS_EXT
:
1670 CHECK_EXTENSION_B(EXT_depth_bounds_test
, pname
);
1671 params
[0] = FLOAT_TO_BOOL(ctx
->Depth
.BoundsMin
);
1672 params
[1] = FLOAT_TO_BOOL(ctx
->Depth
.BoundsMax
);
1675 #if FEATURE_MESA_program_debug
1676 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA
:
1677 CHECK_EXTENSION_B(MESA_program_debug
, pname
);
1678 *params
= ctx
->FragmentProgram
.CallbackEnabled
;
1680 case GL_VERTEX_PROGRAM_CALLBACK_MESA
:
1681 CHECK_EXTENSION_B(MESA_program_debug
, pname
);
1682 *params
= ctx
->VertexProgram
.CallbackEnabled
;
1684 case GL_FRAGMENT_PROGRAM_POSITION_MESA
:
1685 CHECK_EXTENSION_B(MESA_program_debug
, pname
);
1686 *params
= INT_TO_BOOL(ctx
->FragmentProgram
.CurrentPosition
);
1688 case GL_VERTEX_PROGRAM_POSITION_MESA
:
1689 CHECK_EXTENSION_B(MESA_program_debug
, pname
);
1690 *params
= INT_TO_BOOL(ctx
->VertexProgram
.CurrentPosition
);
1694 case GL_MAX_DRAW_BUFFERS_ARB
:
1695 CHECK_EXTENSION_B(ARB_draw_buffers
, pname
);
1696 *params
= INT_TO_BOOL(ctx
->Const
.MaxDrawBuffers
);
1698 case GL_DRAW_BUFFER0_ARB
:
1699 case GL_DRAW_BUFFER1_ARB
:
1700 case GL_DRAW_BUFFER2_ARB
:
1701 case GL_DRAW_BUFFER3_ARB
:
1702 case GL_DRAW_BUFFER4_ARB
:
1703 case GL_DRAW_BUFFER5_ARB
:
1704 case GL_DRAW_BUFFER6_ARB
:
1705 case GL_DRAW_BUFFER7_ARB
:
1706 case GL_DRAW_BUFFER8_ARB
:
1707 case GL_DRAW_BUFFER9_ARB
:
1708 case GL_DRAW_BUFFER10_ARB
:
1709 case GL_DRAW_BUFFER11_ARB
:
1710 case GL_DRAW_BUFFER12_ARB
:
1711 case GL_DRAW_BUFFER13_ARB
:
1712 case GL_DRAW_BUFFER14_ARB
:
1713 case GL_DRAW_BUFFER15_ARB
:
1714 CHECK_EXTENSION_B(ARB_draw_buffers
, pname
);
1716 GLuint i
= pname
- GL_DRAW_BUFFER0_ARB
;
1717 if (i
>= ctx
->Const
.MaxDrawBuffers
) {
1718 _mesa_error(ctx
, GL_INVALID_ENUM
,
1719 "glGetBooleanv(GL_DRAW_BUFFERx_ARB)");
1722 *params
= INT_TO_BOOL(ctx
->Color
.DrawBuffer
[i
]);
1726 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
1727 *params
= INT_TO_BOOL(ctx
->Const
.ColorReadType
);
1729 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
1730 *params
= INT_TO_BOOL(ctx
->Const
.ColorReadFormat
);
1734 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv(pname=0x%x)", pname
);
1740 * Get the value(s) of a selected parameter.
1742 * \param pname parameter to be returned.
1743 * \param params will hold the value(s) of the speficifed parameter.
1745 * \sa glGetDoublev().
1747 * Tries to get the specified parameter via dd_function_table::GetDoublev,
1748 * otherwise gets the specified parameter from the current context, converting
1749 * it value into GLdouble.
1752 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1754 GET_CURRENT_CONTEXT(ctx
);
1756 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
1757 const GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1758 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1759 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1764 if (MESA_VERBOSE
& VERBOSE_API
)
1765 _mesa_debug(ctx
, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname
));
1767 if (!ctx
->_CurrentProgram
) {
1768 /* We need this in order to get correct results for
1769 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
1771 FLUSH_VERTICES(ctx
, 0);
1774 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1778 case GL_ACCUM_RED_BITS
:
1779 *params
= (GLdouble
) ctx
->Visual
.accumRedBits
;
1781 case GL_ACCUM_GREEN_BITS
:
1782 *params
= (GLdouble
) ctx
->Visual
.accumGreenBits
;
1784 case GL_ACCUM_BLUE_BITS
:
1785 *params
= (GLdouble
) ctx
->Visual
.accumBlueBits
;
1787 case GL_ACCUM_ALPHA_BITS
:
1788 *params
= (GLdouble
) ctx
->Visual
.accumAlphaBits
;
1790 case GL_ACCUM_CLEAR_VALUE
:
1791 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1792 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1793 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1794 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1797 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1800 *params
= (GLdouble
) ctx
->Visual
.alphaBits
;
1802 case GL_ALPHA_SCALE
:
1803 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1806 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1808 case GL_ALPHA_TEST_FUNC
:
1809 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1811 case GL_ALPHA_TEST_REF
:
1812 *params
= (GLdouble
) ctx
->Color
.AlphaRef
;
1814 case GL_ATTRIB_STACK_DEPTH
:
1815 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1817 case GL_AUTO_NORMAL
:
1818 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1820 case GL_AUX_BUFFERS
:
1821 *params
= (GLdouble
) ctx
->Visual
.numAuxBuffers
;
1824 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1827 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1830 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1832 case GL_BLEND_SRC_RGB_EXT
:
1833 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1835 case GL_BLEND_DST_RGB_EXT
:
1836 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1838 case GL_BLEND_SRC_ALPHA_EXT
:
1839 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1841 case GL_BLEND_DST_ALPHA_EXT
:
1842 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1844 case GL_BLEND_EQUATION
:
1845 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquationRGB
);
1847 case GL_BLEND_EQUATION_ALPHA_EXT
:
1848 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquationA
);
1850 case GL_BLEND_COLOR_EXT
:
1851 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1852 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1853 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1854 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1857 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1860 *params
= (GLdouble
) ctx
->Visual
.blueBits
;
1863 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1865 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1866 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1868 case GL_CLIP_PLANE0
:
1869 case GL_CLIP_PLANE1
:
1870 case GL_CLIP_PLANE2
:
1871 case GL_CLIP_PLANE3
:
1872 case GL_CLIP_PLANE4
:
1873 case GL_CLIP_PLANE5
:
1874 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
1879 case GL_COLOR_CLEAR_VALUE
:
1880 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1881 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1882 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1883 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1885 case GL_COLOR_MATERIAL
:
1886 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1888 case GL_COLOR_MATERIAL_FACE
:
1889 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1891 case GL_COLOR_MATERIAL_PARAMETER
:
1892 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1894 case GL_COLOR_WRITEMASK
:
1895 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1896 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1897 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1898 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1901 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1903 case GL_CULL_FACE_MODE
:
1904 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1906 case GL_CURRENT_COLOR
:
1907 FLUSH_CURRENT(ctx
, 0);
1908 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
1909 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
1910 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
1911 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
1913 case GL_CURRENT_INDEX
:
1914 FLUSH_CURRENT(ctx
, 0);
1915 *params
= (GLdouble
) ctx
->Current
.Index
;
1917 case GL_CURRENT_NORMAL
:
1918 FLUSH_CURRENT(ctx
, 0);
1919 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
1920 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
1921 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
1923 case GL_CURRENT_RASTER_COLOR
:
1924 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1925 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1926 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1927 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1929 case GL_CURRENT_RASTER_DISTANCE
:
1930 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1932 case GL_CURRENT_RASTER_INDEX
:
1933 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1935 case GL_CURRENT_RASTER_POSITION
:
1936 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1937 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1938 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1939 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1941 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1942 params
[0] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
1943 params
[1] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
1944 params
[2] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
1945 params
[3] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
1947 case GL_CURRENT_RASTER_POSITION_VALID
:
1948 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1950 case GL_CURRENT_TEXTURE_COORDS
:
1951 FLUSH_CURRENT(ctx
, 0);
1952 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
1953 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
1954 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
1955 params
[3] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
1958 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1961 *params
= (GLdouble
) ctx
->Visual
.depthBits
;
1963 case GL_DEPTH_CLEAR_VALUE
:
1964 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1967 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1969 case GL_DEPTH_RANGE
:
1970 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1971 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1973 case GL_DEPTH_SCALE
:
1974 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1977 *params
= (GLdouble
) ctx
->Depth
.Test
;
1979 case GL_DEPTH_WRITEMASK
:
1980 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1983 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1985 case GL_DOUBLEBUFFER
:
1986 *params
= (GLdouble
) ctx
->Visual
.doubleBufferMode
;
1988 case GL_DRAW_BUFFER
:
1989 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
[0]);
1992 FLUSH_CURRENT(ctx
, 0);
1993 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1995 case GL_FEEDBACK_BUFFER_SIZE
:
1996 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1998 case GL_FEEDBACK_BUFFER_TYPE
:
1999 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
2002 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
2005 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
2006 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
2007 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
2008 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
2010 case GL_FOG_DENSITY
:
2011 *params
= (GLdouble
) ctx
->Fog
.Density
;
2014 *params
= (GLdouble
) ctx
->Fog
.End
;
2017 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
2020 *params
= (GLdouble
) ctx
->Fog
.Index
;
2023 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
2026 *params
= (GLdouble
) ctx
->Fog
.Start
;
2029 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
2032 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
2035 *params
= (GLdouble
) ctx
->Visual
.greenBits
;
2037 case GL_GREEN_SCALE
:
2038 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
2041 *params
= (GLdouble
) ctx
->Visual
.indexBits
;
2043 case GL_INDEX_CLEAR_VALUE
:
2044 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
2047 *params
= ctx
->Visual
.rgbMode
? 0.0 : 1.0;
2049 case GL_INDEX_OFFSET
:
2050 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
2052 case GL_INDEX_SHIFT
:
2053 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
2055 case GL_INDEX_WRITEMASK
:
2056 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
2066 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
2069 *params
= (GLdouble
) ctx
->Light
.Enabled
;
2071 case GL_LIGHT_MODEL_AMBIENT
:
2072 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
2073 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
2074 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
2075 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
2077 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2078 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
2080 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2081 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
2083 case GL_LIGHT_MODEL_TWO_SIDE
:
2084 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
2086 case GL_LINE_SMOOTH
:
2087 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
2089 case GL_LINE_SMOOTH_HINT
:
2090 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
2092 case GL_LINE_STIPPLE
:
2093 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
2095 case GL_LINE_STIPPLE_PATTERN
:
2096 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
2098 case GL_LINE_STIPPLE_REPEAT
:
2099 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
2102 *params
= (GLdouble
) ctx
->Line
.Width
;
2104 case GL_LINE_WIDTH_GRANULARITY
:
2105 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
2107 case GL_LINE_WIDTH_RANGE
:
2108 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
2109 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
2111 case GL_ALIASED_LINE_WIDTH_RANGE
:
2112 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
2113 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
2116 *params
= (GLdouble
) ctx
->List
.ListBase
;
2119 *params
= (GLdouble
) ctx
->ListState
.CurrentListNum
;
2122 if (!ctx
->CompileFlag
)
2124 else if (ctx
->ExecuteFlag
)
2125 *params
= ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
);
2127 *params
= ENUM_TO_DOUBLE(GL_COMPILE
);
2129 case GL_INDEX_LOGIC_OP
:
2130 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
2132 case GL_COLOR_LOGIC_OP
:
2133 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
2135 case GL_LOGIC_OP_MODE
:
2136 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
2138 case GL_MAP1_COLOR_4
:
2139 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
2141 case GL_MAP1_GRID_DOMAIN
:
2142 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
2143 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
2145 case GL_MAP1_GRID_SEGMENTS
:
2146 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
2149 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
2151 case GL_MAP1_NORMAL
:
2152 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
2154 case GL_MAP1_TEXTURE_COORD_1
:
2155 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
2157 case GL_MAP1_TEXTURE_COORD_2
:
2158 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
2160 case GL_MAP1_TEXTURE_COORD_3
:
2161 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
2163 case GL_MAP1_TEXTURE_COORD_4
:
2164 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
2166 case GL_MAP1_VERTEX_3
:
2167 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
2169 case GL_MAP1_VERTEX_4
:
2170 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
2172 case GL_MAP2_COLOR_4
:
2173 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
2175 case GL_MAP2_GRID_DOMAIN
:
2176 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
2177 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
2178 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
2179 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
2181 case GL_MAP2_GRID_SEGMENTS
:
2182 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
2183 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
2186 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
2188 case GL_MAP2_NORMAL
:
2189 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
2191 case GL_MAP2_TEXTURE_COORD_1
:
2192 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
2194 case GL_MAP2_TEXTURE_COORD_2
:
2195 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
2197 case GL_MAP2_TEXTURE_COORD_3
:
2198 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
2200 case GL_MAP2_TEXTURE_COORD_4
:
2201 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
2203 case GL_MAP2_VERTEX_3
:
2204 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
2206 case GL_MAP2_VERTEX_4
:
2207 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
2210 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
2212 case GL_MAP_STENCIL
:
2213 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
2215 case GL_MATRIX_MODE
:
2216 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
2218 case GL_MAX_ATTRIB_STACK_DEPTH
:
2219 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
2221 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2222 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
2224 case GL_MAX_CLIP_PLANES
:
2225 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
2227 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
2228 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
2230 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
2231 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
2233 case GL_MAX_EVAL_ORDER
:
2234 *params
= (GLdouble
) MAX_EVAL_ORDER
;
2237 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
2239 case GL_MAX_LIST_NESTING
:
2240 *params
= (GLdouble
) MAX_LIST_NESTING
;
2242 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2243 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
2245 case GL_MAX_NAME_STACK_DEPTH
:
2246 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
2248 case GL_MAX_PIXEL_MAP_TABLE
:
2249 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
2251 case GL_MAX_PROJECTION_STACK_DEPTH
:
2252 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
2254 case GL_MAX_TEXTURE_SIZE
:
2255 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
2257 case GL_MAX_3D_TEXTURE_SIZE
:
2258 *params
= (GLdouble
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
2260 case GL_MAX_TEXTURE_STACK_DEPTH
:
2261 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
2263 case GL_MAX_VIEWPORT_DIMS
:
2264 params
[0] = (GLdouble
) MAX_WIDTH
;
2265 params
[1] = (GLdouble
) MAX_HEIGHT
;
2267 case GL_MODELVIEW_MATRIX
:
2268 for (i
=0;i
<16;i
++) {
2269 params
[i
] = (GLdouble
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
2272 case GL_MODELVIEW_STACK_DEPTH
:
2273 *params
= (GLdouble
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
2275 case GL_NAME_STACK_DEPTH
:
2276 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
2279 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
2281 case GL_PACK_ALIGNMENT
:
2282 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
2284 case GL_PACK_LSB_FIRST
:
2285 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
2287 case GL_PACK_ROW_LENGTH
:
2288 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
2290 case GL_PACK_SKIP_PIXELS
:
2291 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
2293 case GL_PACK_SKIP_ROWS
:
2294 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
2296 case GL_PACK_SWAP_BYTES
:
2297 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
2299 case GL_PACK_SKIP_IMAGES_EXT
:
2300 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
2302 case GL_PACK_IMAGE_HEIGHT_EXT
:
2303 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
2305 case GL_PACK_INVERT_MESA
:
2306 *params
= (GLdouble
) ctx
->Pack
.Invert
;
2308 case GL_PERSPECTIVE_CORRECTION_HINT
:
2309 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
2311 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2312 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
2314 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2315 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
2317 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2318 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
2320 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2321 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
2323 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2324 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
2326 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2327 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
2329 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2330 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
2332 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2333 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
2335 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2336 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
2338 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2339 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
2342 *params
= (GLdouble
) ctx
->Point
.Size
;
2344 case GL_POINT_SIZE_GRANULARITY
:
2345 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
2347 case GL_POINT_SIZE_RANGE
:
2348 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
2349 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
2351 case GL_ALIASED_POINT_SIZE_RANGE
:
2352 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
2353 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
2355 case GL_POINT_SMOOTH
:
2356 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
2358 case GL_POINT_SMOOTH_HINT
:
2359 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
2361 case GL_POINT_SIZE_MIN_EXT
:
2362 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
2364 case GL_POINT_SIZE_MAX_EXT
:
2365 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
2367 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2368 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
2370 case GL_DISTANCE_ATTENUATION_EXT
:
2371 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
2372 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
2373 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
2375 case GL_POLYGON_MODE
:
2376 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
2377 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
2379 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
2380 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2382 case GL_POLYGON_OFFSET_FACTOR
:
2383 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
2385 case GL_POLYGON_OFFSET_UNITS
:
2386 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2388 case GL_POLYGON_SMOOTH
:
2389 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
2391 case GL_POLYGON_SMOOTH_HINT
:
2392 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
2394 case GL_POLYGON_STIPPLE
:
2395 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
2397 case GL_PROJECTION_MATRIX
:
2398 for (i
=0;i
<16;i
++) {
2399 params
[i
] = (GLdouble
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
2402 case GL_PROJECTION_STACK_DEPTH
:
2403 *params
= (GLdouble
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
2405 case GL_READ_BUFFER
:
2406 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
2409 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
2412 *params
= (GLdouble
) ctx
->Visual
.redBits
;
2415 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
2417 case GL_RENDER_MODE
:
2418 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
2420 case GL_RESCALE_NORMAL
:
2421 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
2424 *params
= (GLdouble
) ctx
->Visual
.rgbMode
;
2426 case GL_SCISSOR_BOX
:
2427 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
2428 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
2429 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
2430 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
2432 case GL_SCISSOR_TEST
:
2433 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
2435 case GL_SELECTION_BUFFER_SIZE
:
2436 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
2438 case GL_SHADE_MODEL
:
2439 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
2441 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2442 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
2444 case GL_STENCIL_BITS
:
2445 *params
= (GLdouble
) ctx
->Visual
.stencilBits
;
2447 case GL_STENCIL_CLEAR_VALUE
:
2448 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
2450 case GL_STENCIL_FAIL
:
2451 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
2453 case GL_STENCIL_FUNC
:
2454 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
2456 case GL_STENCIL_PASS_DEPTH_FAIL
:
2457 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
2459 case GL_STENCIL_PASS_DEPTH_PASS
:
2460 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
2462 case GL_STENCIL_REF
:
2463 *params
= (GLdouble
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
2465 case GL_STENCIL_TEST
:
2466 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2468 case GL_STENCIL_VALUE_MASK
:
2469 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
2471 case GL_STENCIL_WRITEMASK
:
2472 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
2475 *params
= (GLdouble
) ctx
->Visual
.stereoMode
;
2477 case GL_SUBPIXEL_BITS
:
2478 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2481 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2484 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2487 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2489 case GL_TEXTURE_BINDING_1D
:
2490 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2492 case GL_TEXTURE_BINDING_2D
:
2493 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2495 case GL_TEXTURE_BINDING_3D
:
2496 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2498 case GL_TEXTURE_ENV_COLOR
:
2499 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2500 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2501 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2502 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2504 case GL_TEXTURE_ENV_MODE
:
2505 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2507 case GL_TEXTURE_GEN_S
:
2508 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2510 case GL_TEXTURE_GEN_T
:
2511 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2513 case GL_TEXTURE_GEN_R
:
2514 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2516 case GL_TEXTURE_GEN_Q
:
2517 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2519 case GL_TEXTURE_MATRIX
:
2520 for (i
=0;i
<16;i
++) {
2521 params
[i
] = (GLdouble
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
2524 case GL_TEXTURE_STACK_DEPTH
:
2525 *params
= (GLdouble
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
2527 case GL_UNPACK_ALIGNMENT
:
2528 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2530 case GL_UNPACK_LSB_FIRST
:
2531 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2533 case GL_UNPACK_ROW_LENGTH
:
2534 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2536 case GL_UNPACK_SKIP_PIXELS
:
2537 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2539 case GL_UNPACK_SKIP_ROWS
:
2540 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2542 case GL_UNPACK_SWAP_BYTES
:
2543 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2545 case GL_UNPACK_SKIP_IMAGES_EXT
:
2546 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2548 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2549 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2551 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
2552 *params
= (GLdouble
) ctx
->Unpack
.ClientStorage
;
2555 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2556 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2557 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2558 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2561 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2564 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2566 case GL_VERTEX_ARRAY
:
2567 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2569 case GL_VERTEX_ARRAY_SIZE
:
2570 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2572 case GL_VERTEX_ARRAY_TYPE
:
2573 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2575 case GL_VERTEX_ARRAY_STRIDE
:
2576 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2578 case GL_VERTEX_ARRAY_COUNT_EXT
:
2581 case GL_NORMAL_ARRAY
:
2582 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2584 case GL_NORMAL_ARRAY_TYPE
:
2585 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2587 case GL_NORMAL_ARRAY_STRIDE
:
2588 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2590 case GL_NORMAL_ARRAY_COUNT_EXT
:
2593 case GL_COLOR_ARRAY
:
2594 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2596 case GL_COLOR_ARRAY_SIZE
:
2597 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2599 case GL_COLOR_ARRAY_TYPE
:
2600 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2602 case GL_COLOR_ARRAY_STRIDE
:
2603 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2605 case GL_COLOR_ARRAY_COUNT_EXT
:
2608 case GL_INDEX_ARRAY
:
2609 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2611 case GL_INDEX_ARRAY_TYPE
:
2612 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2614 case GL_INDEX_ARRAY_STRIDE
:
2615 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2617 case GL_INDEX_ARRAY_COUNT_EXT
:
2620 case GL_TEXTURE_COORD_ARRAY
:
2621 *params
= (GLdouble
) ctx
->Array
.TexCoord
[clientUnit
].Enabled
;
2623 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2624 *params
= (GLdouble
) ctx
->Array
.TexCoord
[clientUnit
].Size
;
2626 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2627 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[clientUnit
].Type
);
2629 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2630 *params
= (GLdouble
) ctx
->Array
.TexCoord
[clientUnit
].Stride
;
2632 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2635 case GL_EDGE_FLAG_ARRAY
:
2636 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2638 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2639 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2641 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2645 /* GL_ARB_multitexture */
2646 case GL_MAX_TEXTURE_UNITS_ARB
:
2647 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2648 *params
= (GLdouble
) MIN2(ctx
->Const
.MaxTextureImageUnits
,
2649 ctx
->Const
.MaxTextureCoordUnits
);
2651 case GL_ACTIVE_TEXTURE_ARB
:
2652 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2653 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2655 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2656 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2657 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ clientUnit
);
2660 /* GL_ARB_texture_cube_map */
2661 case GL_TEXTURE_CUBE_MAP_ARB
:
2662 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2663 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2665 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2666 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2667 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2669 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2670 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2671 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
2674 /* GL_ARB_texture_compression */
2675 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2676 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2677 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2679 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2680 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2681 *params
= (GLdouble
) _mesa_get_compressed_formats(ctx
, NULL
);
2683 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2684 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2688 n
= _mesa_get_compressed_formats(ctx
, formats
);
2689 for (i
= 0; i
< n
; i
++)
2690 params
[i
] = (GLdouble
) formats
[i
];
2694 /* GL_EXT_compiled_vertex_array */
2695 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2696 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2698 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2699 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2702 /* GL_ARB_transpose_matrix */
2703 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2707 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
2708 for (i
=0;i
<16;i
++) {
2709 params
[i
] = (GLdouble
) tm
[i
];
2713 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2717 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
2718 for (i
=0;i
<16;i
++) {
2719 params
[i
] = (GLdouble
) tm
[i
];
2723 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2727 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
2728 for (i
=0;i
<16;i
++) {
2729 params
[i
] = (GLdouble
) tm
[i
];
2733 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2737 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
2738 for (i
=0;i
<16;i
++) {
2739 params
[i
] = (GLdouble
) tm
[i
];
2744 /* GL_HP_occlusion_test */
2745 case GL_OCCLUSION_TEST_HP
:
2746 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2747 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2749 case GL_OCCLUSION_TEST_RESULT_HP
:
2750 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2751 if (ctx
->Depth
.OcclusionTest
)
2752 *params
= (GLdouble
) ctx
->OcclusionResult
;
2754 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2755 /* reset flag now */
2756 ctx
->OcclusionResult
= GL_FALSE
;
2757 ctx
->OcclusionResultSaved
= GL_FALSE
;
2760 /* GL_SGIS_pixel_texture */
2761 case GL_PIXEL_TEXTURE_SGIS
:
2762 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2765 /* GL_SGIX_pixel_texture */
2766 case GL_PIXEL_TEX_GEN_SGIX
:
2767 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2769 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2770 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2773 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2774 case GL_COLOR_MATRIX_SGI
:
2775 for (i
=0;i
<16;i
++) {
2776 params
[i
] = (GLdouble
) ctx
->ColorMatrixStack
.Top
->m
[i
];
2779 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2780 *params
= (GLdouble
) (ctx
->ColorMatrixStack
.Depth
+ 1);
2782 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2783 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2785 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2786 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2788 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2789 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2791 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2792 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2794 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2795 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2797 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2798 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2800 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2801 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2803 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2804 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2806 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2807 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2810 /* GL_EXT_convolution (also in 1.2 imaging) */
2811 case GL_CONVOLUTION_1D_EXT
:
2812 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2813 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2815 case GL_CONVOLUTION_2D
:
2816 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2817 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2819 case GL_SEPARABLE_2D
:
2820 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2821 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2823 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2824 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2825 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2827 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2828 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2829 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2831 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2832 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2833 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2835 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2836 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2837 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2839 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2840 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2841 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2843 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2844 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2845 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2847 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2848 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2849 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2851 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2852 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2853 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2856 /* GL_EXT_histogram (also in 1.2 imaging) */
2858 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2859 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
2862 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2863 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
2866 /* GL_SGI_color_table (also in 1.2 imaging */
2867 case GL_COLOR_TABLE_SGI
:
2868 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2870 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2871 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2873 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2874 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2877 /* GL_SGI_texture_color_table */
2878 case GL_TEXTURE_COLOR_TABLE_SGI
:
2879 CHECK_EXTENSION_D(SGI_texture_color_table
, pname
);
2880 *params
= (GLdouble
) textureUnit
->ColorTableEnabled
;
2883 /* GL_EXT_secondary_color */
2884 case GL_COLOR_SUM_EXT
:
2885 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2886 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2888 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2889 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2890 FLUSH_CURRENT(ctx
, 0);
2891 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
2892 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
2893 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
2894 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3];
2896 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2897 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2898 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2900 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2901 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2902 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2904 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2905 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2906 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2908 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2909 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2910 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Size
;
2913 /* GL_EXT_fog_coord */
2914 case GL_CURRENT_FOG_COORDINATE_EXT
:
2915 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2916 FLUSH_CURRENT(ctx
, 0);
2917 *params
= (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
2919 case GL_FOG_COORDINATE_ARRAY_EXT
:
2920 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2921 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2923 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2924 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2925 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2927 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2928 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2929 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2931 case GL_FOG_COORDINATE_SOURCE_EXT
:
2932 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2933 *params
= (GLdouble
) ctx
->Fog
.FogCoordinateSource
;
2936 /* GL_EXT_texture_lod_bias */
2937 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
2938 *params
= (GLdouble
) ctx
->Const
.MaxTextureLodBias
;
2941 /* GL_EXT_texture_filter_anisotropic */
2942 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
2943 CHECK_EXTENSION_D(EXT_texture_filter_anisotropic
, pname
);
2944 *params
= (GLdouble
) ctx
->Const
.MaxTextureMaxAnisotropy
;
2947 /* GL_ARB_multisample */
2948 case GL_MULTISAMPLE_ARB
:
2949 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2950 *params
= (GLdouble
) ctx
->Multisample
.Enabled
;
2952 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
2953 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2954 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToCoverage
;
2956 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
2957 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2958 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToOne
;
2960 case GL_SAMPLE_COVERAGE_ARB
:
2961 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2962 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverage
;
2964 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
2965 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2966 *params
= ctx
->Multisample
.SampleCoverageValue
;
2968 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
2969 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2970 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverageInvert
;
2972 case GL_SAMPLE_BUFFERS_ARB
:
2973 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2974 *params
= 0.0; /* XXX fix someday */
2976 case GL_SAMPLES_ARB
:
2977 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2978 *params
= 0.0; /* XXX fix someday */
2981 /* GL_IBM_rasterpos_clip */
2982 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
2983 CHECK_EXTENSION_D(IBM_rasterpos_clip
, pname
);
2984 *params
= (GLdouble
) ctx
->Transform
.RasterPositionUnclipped
;
2987 /* GL_NV_point_sprite */
2988 case GL_POINT_SPRITE_NV
:
2989 CHECK_EXTENSION2_D(NV_point_sprite
, ARB_point_sprite
, pname
);
2990 *params
= (GLdouble
) ctx
->Point
.PointSprite
;
2992 case GL_POINT_SPRITE_R_MODE_NV
:
2993 CHECK_EXTENSION_D(NV_point_sprite
, pname
);
2994 *params
= (GLdouble
) ctx
->Point
.SpriteRMode
;
2996 case GL_POINT_SPRITE_COORD_ORIGIN
:
2997 CHECK_EXTENSION_D(ARB_point_sprite
, pname
);
2998 *params
= (GLdouble
) ctx
->Point
.SpriteOrigin
;
3001 /* GL_SGIS_generate_mipmap */
3002 case GL_GENERATE_MIPMAP_HINT_SGIS
:
3003 CHECK_EXTENSION_D(SGIS_generate_mipmap
, pname
);
3004 *params
= (GLdouble
) ctx
->Hint
.GenerateMipmap
;
3007 #if FEATURE_NV_vertex_program
3008 case GL_VERTEX_PROGRAM_NV
:
3009 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3010 *params
= (GLdouble
) ctx
->VertexProgram
.Enabled
;
3012 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
3013 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3014 *params
= (GLdouble
) ctx
->VertexProgram
.PointSizeEnabled
;
3016 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
3017 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3018 *params
= (GLdouble
) ctx
->VertexProgram
.TwoSideEnabled
;
3020 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
3021 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3022 *params
= (GLdouble
) ctx
->Const
.MaxProgramMatrixStackDepth
;
3024 case GL_MAX_TRACK_MATRICES_NV
:
3025 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3026 *params
= (GLdouble
) ctx
->Const
.MaxProgramMatrices
;
3028 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
3029 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3030 *params
= (GLdouble
) ctx
->CurrentStack
->Depth
+ 1;
3032 case GL_CURRENT_MATRIX_NV
:
3033 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3034 for (i
= 0; i
< 16; i
++)
3035 params
[i
] = (GLdouble
) ctx
->CurrentStack
->Top
->m
[i
];
3037 case GL_VERTEX_PROGRAM_BINDING_NV
:
3038 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3039 if (ctx
->VertexProgram
.Current
)
3040 *params
= (GLdouble
) ctx
->VertexProgram
.Current
->Base
.Id
;
3044 case GL_PROGRAM_ERROR_POSITION_NV
:
3045 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3046 *params
= (GLdouble
) ctx
->Program
.ErrorPos
;
3048 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
3049 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
3050 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
3051 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
3052 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
3053 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
3054 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
3055 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
3056 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
3057 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
3058 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
3059 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
3060 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
3061 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
3062 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
3063 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
3064 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
3066 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
3067 *params
= (GLdouble
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
3070 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
3071 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
3072 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
3073 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
3074 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
3075 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
3076 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
3077 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
3078 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
3079 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
3080 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
3081 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
3082 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
3083 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
3084 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
3085 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
3086 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
3088 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
3089 *params
= (GLdouble
) ctx
->Eval
.Map1Attrib
[n
];
3092 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
3093 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
3094 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
3095 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
3096 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
3097 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
3098 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
3099 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
3100 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
3101 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
3102 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
3103 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
3104 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
3105 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
3106 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
3107 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
3108 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
3110 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
3111 *params
= (GLdouble
) ctx
->Eval
.Map2Attrib
[n
];
3114 #endif /* FEATURE_NV_vertex_program */
3116 #if FEATURE_NV_fragment_program
3117 case GL_FRAGMENT_PROGRAM_NV
:
3118 CHECK_EXTENSION_D(NV_fragment_program
, pname
);
3119 *params
= (GLdouble
) ctx
->FragmentProgram
.Enabled
;
3121 case GL_MAX_TEXTURE_COORDS_NV
:
3122 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
3123 *params
= (GLdouble
) ctx
->Const
.MaxTextureCoordUnits
;
3125 case GL_MAX_TEXTURE_IMAGE_UNITS_NV
:
3126 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
3127 *params
= (GLdouble
) ctx
->Const
.MaxTextureImageUnits
;
3129 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
3130 CHECK_EXTENSION_D(NV_fragment_program
, pname
);
3131 if (ctx
->FragmentProgram
.Current
)
3132 *params
= (GLdouble
) ctx
->FragmentProgram
.Current
->Base
.Id
;
3136 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
3137 CHECK_EXTENSION_D(NV_fragment_program
, pname
);
3138 *params
= (GLdouble
) MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
3140 #endif /* FEATURE_NV_fragment_program */
3142 /* GL_NV_texture_rectangle */
3143 case GL_TEXTURE_RECTANGLE_NV
:
3144 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
3145 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
3147 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
3148 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
3149 *params
= (GLdouble
) textureUnit
->CurrentRect
->Name
;
3151 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
3152 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
3153 *params
= (GLdouble
) ctx
->Const
.MaxTextureRectSize
;
3156 /* GL_EXT_stencil_two_side */
3157 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
3158 CHECK_EXTENSION_D(EXT_stencil_two_side
, pname
);
3159 *params
= (GLdouble
) ctx
->Stencil
.TestTwoSide
;
3161 case GL_ACTIVE_STENCIL_FACE_EXT
:
3162 CHECK_EXTENSION_D(EXT_stencil_two_side
, pname
);
3163 *params
= (GLdouble
) (ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
3166 /* GL_NV_light_max_exponent */
3167 case GL_MAX_SHININESS_NV
:
3168 *params
= (GLdouble
) ctx
->Const
.MaxShininess
;
3170 case GL_MAX_SPOT_EXPONENT_NV
:
3171 *params
= (GLdouble
) ctx
->Const
.MaxSpotExponent
;
3174 #if FEATURE_ARB_vertex_buffer_object
3175 case GL_ARRAY_BUFFER_BINDING_ARB
:
3176 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3177 *params
= (GLdouble
) ctx
->Array
.ArrayBufferObj
->Name
;
3179 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
3180 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3181 *params
= (GLdouble
) ctx
->Array
.Vertex
.BufferObj
->Name
;
3183 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
3184 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3185 *params
= (GLdouble
) ctx
->Array
.Normal
.BufferObj
->Name
;
3187 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3188 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3189 *params
= (GLdouble
) ctx
->Array
.Color
.BufferObj
->Name
;
3191 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
3192 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3193 *params
= (GLdouble
) ctx
->Array
.Index
.BufferObj
->Name
;
3195 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
3196 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3197 *params
= (GLdouble
) ctx
->Array
.TexCoord
[clientUnit
].BufferObj
->Name
;
3199 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
3200 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3201 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.BufferObj
->Name
;
3203 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3204 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3205 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.BufferObj
->Name
;
3207 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
3208 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3209 *params
= (GLdouble
) ctx
->Array
.FogCoord
.BufferObj
->Name
;
3211 /*case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB: - not supported */
3212 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
3213 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3214 *params
= (GLdouble
) ctx
->Array
.ElementArrayBufferObj
->Name
;
3217 #if FEATURE_EXT_pixel_buffer_object
3218 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
3219 CHECK_EXTENSION_D(EXT_pixel_buffer_object
, pname
);
3220 *params
= (GLdouble
) ctx
->Pack
.BufferObj
->Name
;
3222 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
3223 CHECK_EXTENSION_D(EXT_pixel_buffer_object
, pname
);
3224 *params
= (GLdouble
) ctx
->Unpack
.BufferObj
->Name
;
3228 #if FEATURE_ARB_vertex_program
3229 /* GL_NV_vertex_program and GL_ARB_fragment_program define others */
3230 case GL_MAX_VERTEX_ATTRIBS_ARB
:
3231 CHECK_EXTENSION_D(ARB_vertex_program
, pname
);
3232 *params
= (GLdouble
) ctx
->Const
.MaxVertexProgramAttribs
;
3236 #if FEATURE_ARB_fragment_program
3237 case GL_FRAGMENT_PROGRAM_ARB
:
3238 CHECK_EXTENSION_D(ARB_fragment_program
, pname
);
3239 *params
= (GLdouble
) ctx
->FragmentProgram
.Enabled
;
3241 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
3242 CHECK_EXTENSION_D(ARB_fragment_program
, pname
);
3243 params
[0] = ctx
->CurrentStack
->Top
->m
[0];
3244 params
[1] = ctx
->CurrentStack
->Top
->m
[4];
3245 params
[2] = ctx
->CurrentStack
->Top
->m
[8];
3246 params
[3] = ctx
->CurrentStack
->Top
->m
[12];
3247 params
[4] = ctx
->CurrentStack
->Top
->m
[1];
3248 params
[5] = ctx
->CurrentStack
->Top
->m
[5];
3249 params
[6] = ctx
->CurrentStack
->Top
->m
[9];
3250 params
[7] = ctx
->CurrentStack
->Top
->m
[13];
3251 params
[8] = ctx
->CurrentStack
->Top
->m
[2];
3252 params
[9] = ctx
->CurrentStack
->Top
->m
[6];
3253 params
[10] = ctx
->CurrentStack
->Top
->m
[10];
3254 params
[11] = ctx
->CurrentStack
->Top
->m
[14];
3255 params
[12] = ctx
->CurrentStack
->Top
->m
[3];
3256 params
[13] = ctx
->CurrentStack
->Top
->m
[7];
3257 params
[14] = ctx
->CurrentStack
->Top
->m
[11];
3258 params
[15] = ctx
->CurrentStack
->Top
->m
[15];
3260 /* Remaining ARB_fragment_program queries alias with
3261 * the GL_NV_fragment_program queries.
3265 /* GL_EXT_depth_bounds_test */
3266 case GL_DEPTH_BOUNDS_TEST_EXT
:
3267 CHECK_EXTENSION_D(EXT_depth_bounds_test
, pname
);
3268 params
[0] = (GLdouble
) ctx
->Depth
.BoundsTest
;
3270 case GL_DEPTH_BOUNDS_EXT
:
3271 CHECK_EXTENSION_D(EXT_depth_bounds_test
, pname
);
3272 params
[0] = ctx
->Depth
.BoundsMin
;
3273 params
[1] = ctx
->Depth
.BoundsMax
;
3276 #if FEATURE_MESA_program_debug
3277 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA
:
3278 CHECK_EXTENSION_D(MESA_program_debug
, pname
);
3279 *params
= (GLdouble
) ctx
->FragmentProgram
.CallbackEnabled
;
3281 case GL_VERTEX_PROGRAM_CALLBACK_MESA
:
3282 CHECK_EXTENSION_D(MESA_program_debug
, pname
);
3283 *params
= (GLdouble
) ctx
->VertexProgram
.CallbackEnabled
;
3285 case GL_FRAGMENT_PROGRAM_POSITION_MESA
:
3286 CHECK_EXTENSION_D(MESA_program_debug
, pname
);
3287 *params
= (GLdouble
) ctx
->FragmentProgram
.CurrentPosition
;
3289 case GL_VERTEX_PROGRAM_POSITION_MESA
:
3290 CHECK_EXTENSION_D(MESA_program_debug
, pname
);
3291 *params
= (GLdouble
) ctx
->VertexProgram
.CurrentPosition
;
3295 case GL_MAX_DRAW_BUFFERS_ARB
:
3296 CHECK_EXTENSION_D(ARB_draw_buffers
, pname
);
3297 *params
= (GLdouble
) ctx
->Const
.MaxDrawBuffers
;
3299 case GL_DRAW_BUFFER0_ARB
:
3300 case GL_DRAW_BUFFER1_ARB
:
3301 case GL_DRAW_BUFFER2_ARB
:
3302 case GL_DRAW_BUFFER3_ARB
:
3303 case GL_DRAW_BUFFER4_ARB
:
3304 case GL_DRAW_BUFFER5_ARB
:
3305 case GL_DRAW_BUFFER6_ARB
:
3306 case GL_DRAW_BUFFER7_ARB
:
3307 case GL_DRAW_BUFFER8_ARB
:
3308 case GL_DRAW_BUFFER9_ARB
:
3309 case GL_DRAW_BUFFER10_ARB
:
3310 case GL_DRAW_BUFFER11_ARB
:
3311 case GL_DRAW_BUFFER12_ARB
:
3312 case GL_DRAW_BUFFER13_ARB
:
3313 case GL_DRAW_BUFFER14_ARB
:
3314 case GL_DRAW_BUFFER15_ARB
:
3315 CHECK_EXTENSION_D(ARB_draw_buffers
, pname
);
3317 GLuint i
= pname
- GL_DRAW_BUFFER0_ARB
;
3318 if (i
>= ctx
->Const
.MaxDrawBuffers
) {
3319 _mesa_error(ctx
, GL_INVALID_ENUM
,
3320 "glGetDoublev(GL_DRAW_BUFFERx_ARB)");
3323 *params
= (GLdouble
) ctx
->Color
.DrawBuffer
[i
];
3327 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
3328 *params
= (GLdouble
) ctx
->Const
.ColorReadType
;
3330 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
3331 *params
= (GLdouble
) ctx
->Const
.ColorReadFormat
;
3335 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev(pname=0x%x)", pname
);
3341 * Get the value(s) of a selected parameter.
3343 * \param pname parameter to be returned.
3344 * \param params will hold the value(s) of the speficifed parameter.
3346 * \sa glGetFloatv().
3348 * Tries to get the specified parameter via dd_function_table::GetFloatv,
3349 * otherwise gets the specified parameter from the current context, converting
3350 * it value into GLfloat.
3353 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
3355 GET_CURRENT_CONTEXT(ctx
);
3357 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
3358 const GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3359 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3360 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3365 if (MESA_VERBOSE
& VERBOSE_API
)
3366 _mesa_debug(ctx
, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname
));
3368 if (!ctx
->_CurrentProgram
) {
3369 /* We need this in order to get correct results for
3370 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
3372 FLUSH_VERTICES(ctx
, 0);
3375 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
3379 case GL_ACCUM_RED_BITS
:
3380 *params
= (GLfloat
) ctx
->Visual
.accumRedBits
;
3382 case GL_ACCUM_GREEN_BITS
:
3383 *params
= (GLfloat
) ctx
->Visual
.accumGreenBits
;
3385 case GL_ACCUM_BLUE_BITS
:
3386 *params
= (GLfloat
) ctx
->Visual
.accumBlueBits
;
3388 case GL_ACCUM_ALPHA_BITS
:
3389 *params
= (GLfloat
) ctx
->Visual
.accumAlphaBits
;
3391 case GL_ACCUM_CLEAR_VALUE
:
3392 params
[0] = ctx
->Accum
.ClearColor
[0];
3393 params
[1] = ctx
->Accum
.ClearColor
[1];
3394 params
[2] = ctx
->Accum
.ClearColor
[2];
3395 params
[3] = ctx
->Accum
.ClearColor
[3];
3398 *params
= ctx
->Pixel
.AlphaBias
;
3401 *params
= (GLfloat
) ctx
->Visual
.alphaBits
;
3403 case GL_ALPHA_SCALE
:
3404 *params
= ctx
->Pixel
.AlphaScale
;
3407 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
3409 case GL_ALPHA_TEST_FUNC
:
3410 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
3412 case GL_ALPHA_TEST_REF
:
3413 *params
= (GLfloat
) ctx
->Color
.AlphaRef
;
3415 case GL_ATTRIB_STACK_DEPTH
:
3416 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
3418 case GL_AUTO_NORMAL
:
3419 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
3421 case GL_AUX_BUFFERS
:
3422 *params
= (GLfloat
) ctx
->Visual
.numAuxBuffers
;
3425 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
3428 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
3431 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
3433 case GL_BLEND_SRC_RGB_EXT
:
3434 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
3436 case GL_BLEND_DST_RGB_EXT
:
3437 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
3439 case GL_BLEND_SRC_ALPHA_EXT
:
3440 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
3442 case GL_BLEND_DST_ALPHA_EXT
:
3443 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
3445 case GL_BLEND_EQUATION
:
3446 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquationRGB
);
3448 case GL_BLEND_EQUATION_ALPHA_EXT
:
3449 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquationA
);
3451 case GL_BLEND_COLOR_EXT
:
3452 params
[0] = ctx
->Color
.BlendColor
[0];
3453 params
[1] = ctx
->Color
.BlendColor
[1];
3454 params
[2] = ctx
->Color
.BlendColor
[2];
3455 params
[3] = ctx
->Color
.BlendColor
[3];
3458 *params
= ctx
->Pixel
.BlueBias
;
3461 *params
= (GLfloat
) ctx
->Visual
.blueBits
;
3464 *params
= ctx
->Pixel
.BlueScale
;
3466 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3467 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
3469 case GL_CLIP_PLANE0
:
3470 case GL_CLIP_PLANE1
:
3471 case GL_CLIP_PLANE2
:
3472 case GL_CLIP_PLANE3
:
3473 case GL_CLIP_PLANE4
:
3474 case GL_CLIP_PLANE5
:
3475 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
3480 case GL_COLOR_CLEAR_VALUE
:
3481 params
[0] = ctx
->Color
.ClearColor
[0];
3482 params
[1] = ctx
->Color
.ClearColor
[1];
3483 params
[2] = ctx
->Color
.ClearColor
[2];
3484 params
[3] = ctx
->Color
.ClearColor
[3];
3486 case GL_COLOR_MATERIAL
:
3487 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
3489 case GL_COLOR_MATERIAL_FACE
:
3490 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
3492 case GL_COLOR_MATERIAL_PARAMETER
:
3493 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
3495 case GL_COLOR_WRITEMASK
:
3496 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
3497 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
3498 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
3499 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
3502 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
3504 case GL_CULL_FACE_MODE
:
3505 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
3507 case GL_CURRENT_COLOR
:
3508 FLUSH_CURRENT(ctx
, 0);
3509 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
3510 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
3511 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
3512 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
3514 case GL_CURRENT_INDEX
:
3515 FLUSH_CURRENT(ctx
, 0);
3516 *params
= (GLfloat
) ctx
->Current
.Index
;
3518 case GL_CURRENT_NORMAL
:
3519 FLUSH_CURRENT(ctx
, 0);
3520 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
3521 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
3522 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
3524 case GL_CURRENT_RASTER_COLOR
:
3525 params
[0] = ctx
->Current
.RasterColor
[0];
3526 params
[1] = ctx
->Current
.RasterColor
[1];
3527 params
[2] = ctx
->Current
.RasterColor
[2];
3528 params
[3] = ctx
->Current
.RasterColor
[3];
3530 case GL_CURRENT_RASTER_DISTANCE
:
3531 params
[0] = ctx
->Current
.RasterDistance
;
3533 case GL_CURRENT_RASTER_INDEX
:
3534 *params
= ctx
->Current
.RasterIndex
;
3536 case GL_CURRENT_RASTER_POSITION
:
3537 params
[0] = ctx
->Current
.RasterPos
[0];
3538 params
[1] = ctx
->Current
.RasterPos
[1];
3539 params
[2] = ctx
->Current
.RasterPos
[2];
3540 params
[3] = ctx
->Current
.RasterPos
[3];
3542 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3543 params
[0] = ctx
->Current
.RasterTexCoords
[texUnit
][0];
3544 params
[1] = ctx
->Current
.RasterTexCoords
[texUnit
][1];
3545 params
[2] = ctx
->Current
.RasterTexCoords
[texUnit
][2];
3546 params
[3] = ctx
->Current
.RasterTexCoords
[texUnit
][3];
3548 case GL_CURRENT_RASTER_POSITION_VALID
:
3549 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
3551 case GL_CURRENT_TEXTURE_COORDS
:
3552 FLUSH_CURRENT(ctx
, 0);
3553 params
[0] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
3554 params
[1] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
3555 params
[2] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
3556 params
[3] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
3559 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
3562 *params
= (GLfloat
) ctx
->Visual
.depthBits
;
3564 case GL_DEPTH_CLEAR_VALUE
:
3565 *params
= (GLfloat
) ctx
->Depth
.Clear
;
3568 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
3570 case GL_DEPTH_RANGE
:
3571 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
3572 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
3574 case GL_DEPTH_SCALE
:
3575 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
3578 *params
= (GLfloat
) ctx
->Depth
.Test
;
3580 case GL_DEPTH_WRITEMASK
:
3581 *params
= (GLfloat
) ctx
->Depth
.Mask
;
3584 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
3586 case GL_DOUBLEBUFFER
:
3587 *params
= (GLfloat
) ctx
->Visual
.doubleBufferMode
;
3589 case GL_DRAW_BUFFER
:
3590 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
[0]);
3593 FLUSH_CURRENT(ctx
, 0);
3594 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
3596 case GL_FEEDBACK_BUFFER_SIZE
:
3597 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
3599 case GL_FEEDBACK_BUFFER_TYPE
:
3600 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
3603 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
3606 params
[0] = ctx
->Fog
.Color
[0];
3607 params
[1] = ctx
->Fog
.Color
[1];
3608 params
[2] = ctx
->Fog
.Color
[2];
3609 params
[3] = ctx
->Fog
.Color
[3];
3611 case GL_FOG_DENSITY
:
3612 *params
= ctx
->Fog
.Density
;
3615 *params
= ctx
->Fog
.End
;
3618 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
3621 *params
= ctx
->Fog
.Index
;
3624 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
3627 *params
= ctx
->Fog
.Start
;
3630 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
3633 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
3636 *params
= (GLfloat
) ctx
->Visual
.greenBits
;
3638 case GL_GREEN_SCALE
:
3639 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
3642 *params
= (GLfloat
) ctx
->Visual
.indexBits
;
3644 case GL_INDEX_CLEAR_VALUE
:
3645 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
3648 *params
= ctx
->Visual
.rgbMode
? 0.0F
: 1.0F
;
3650 case GL_INDEX_OFFSET
:
3651 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
3653 case GL_INDEX_SHIFT
:
3654 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
3656 case GL_INDEX_WRITEMASK
:
3657 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
3667 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3670 *params
= (GLfloat
) ctx
->Light
.Enabled
;
3672 case GL_LIGHT_MODEL_AMBIENT
:
3673 params
[0] = ctx
->Light
.Model
.Ambient
[0];
3674 params
[1] = ctx
->Light
.Model
.Ambient
[1];
3675 params
[2] = ctx
->Light
.Model
.Ambient
[2];
3676 params
[3] = ctx
->Light
.Model
.Ambient
[3];
3678 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3679 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
3681 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3682 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
3684 case GL_LIGHT_MODEL_TWO_SIDE
:
3685 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
3687 case GL_LINE_SMOOTH
:
3688 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
3690 case GL_LINE_SMOOTH_HINT
:
3691 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
3693 case GL_LINE_STIPPLE
:
3694 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
3696 case GL_LINE_STIPPLE_PATTERN
:
3697 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
3699 case GL_LINE_STIPPLE_REPEAT
:
3700 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
3703 *params
= (GLfloat
) ctx
->Line
.Width
;
3705 case GL_LINE_WIDTH_GRANULARITY
:
3706 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
3708 case GL_LINE_WIDTH_RANGE
:
3709 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
3710 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
3712 case GL_ALIASED_LINE_WIDTH_RANGE
:
3713 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
3714 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
3717 *params
= (GLfloat
) ctx
->List
.ListBase
;
3720 *params
= (GLfloat
) ctx
->ListState
.CurrentListNum
;
3723 if (!ctx
->CompileFlag
)
3725 else if (ctx
->ExecuteFlag
)
3726 *params
= ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
);
3728 *params
= ENUM_TO_FLOAT(GL_COMPILE
);
3730 case GL_INDEX_LOGIC_OP
:
3731 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
3733 case GL_COLOR_LOGIC_OP
:
3734 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
3736 case GL_LOGIC_OP_MODE
:
3737 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
3739 case GL_MAP1_COLOR_4
:
3740 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
3742 case GL_MAP1_GRID_DOMAIN
:
3743 params
[0] = ctx
->Eval
.MapGrid1u1
;
3744 params
[1] = ctx
->Eval
.MapGrid1u2
;
3746 case GL_MAP1_GRID_SEGMENTS
:
3747 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
3750 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
3752 case GL_MAP1_NORMAL
:
3753 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
3755 case GL_MAP1_TEXTURE_COORD_1
:
3756 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
3758 case GL_MAP1_TEXTURE_COORD_2
:
3759 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
3761 case GL_MAP1_TEXTURE_COORD_3
:
3762 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
3764 case GL_MAP1_TEXTURE_COORD_4
:
3765 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
3767 case GL_MAP1_VERTEX_3
:
3768 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
3770 case GL_MAP1_VERTEX_4
:
3771 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
3773 case GL_MAP2_COLOR_4
:
3774 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
3776 case GL_MAP2_GRID_DOMAIN
:
3777 params
[0] = ctx
->Eval
.MapGrid2u1
;
3778 params
[1] = ctx
->Eval
.MapGrid2u2
;
3779 params
[2] = ctx
->Eval
.MapGrid2v1
;
3780 params
[3] = ctx
->Eval
.MapGrid2v2
;
3782 case GL_MAP2_GRID_SEGMENTS
:
3783 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
3784 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
3787 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
3789 case GL_MAP2_NORMAL
:
3790 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
3792 case GL_MAP2_TEXTURE_COORD_1
:
3793 *params
= ctx
->Eval
.Map2TextureCoord1
;
3795 case GL_MAP2_TEXTURE_COORD_2
:
3796 *params
= ctx
->Eval
.Map2TextureCoord2
;
3798 case GL_MAP2_TEXTURE_COORD_3
:
3799 *params
= ctx
->Eval
.Map2TextureCoord3
;
3801 case GL_MAP2_TEXTURE_COORD_4
:
3802 *params
= ctx
->Eval
.Map2TextureCoord4
;
3804 case GL_MAP2_VERTEX_3
:
3805 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
3807 case GL_MAP2_VERTEX_4
:
3808 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
3811 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
3813 case GL_MAP_STENCIL
:
3814 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
3816 case GL_MATRIX_MODE
:
3817 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
3819 case GL_MAX_ATTRIB_STACK_DEPTH
:
3820 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
3822 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3823 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3825 case GL_MAX_CLIP_PLANES
:
3826 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
3828 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3829 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3831 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3832 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3834 case GL_MAX_EVAL_ORDER
:
3835 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3838 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3840 case GL_MAX_LIST_NESTING
:
3841 *params
= (GLfloat
) MAX_LIST_NESTING
;
3843 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3844 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3846 case GL_MAX_NAME_STACK_DEPTH
:
3847 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3849 case GL_MAX_PIXEL_MAP_TABLE
:
3850 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3852 case GL_MAX_PROJECTION_STACK_DEPTH
:
3853 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3855 case GL_MAX_TEXTURE_SIZE
:
3856 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
3858 case GL_MAX_3D_TEXTURE_SIZE
:
3859 *params
= (GLfloat
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
3861 case GL_MAX_TEXTURE_STACK_DEPTH
:
3862 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3864 case GL_MAX_VIEWPORT_DIMS
:
3865 params
[0] = (GLfloat
) MAX_WIDTH
;
3866 params
[1] = (GLfloat
) MAX_HEIGHT
;
3868 case GL_MODELVIEW_MATRIX
:
3869 for (i
=0;i
<16;i
++) {
3870 params
[i
] = ctx
->ModelviewMatrixStack
.Top
->m
[i
];
3873 case GL_MODELVIEW_STACK_DEPTH
:
3874 *params
= (GLfloat
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
3876 case GL_NAME_STACK_DEPTH
:
3877 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3880 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3882 case GL_PACK_ALIGNMENT
:
3883 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3885 case GL_PACK_LSB_FIRST
:
3886 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3888 case GL_PACK_ROW_LENGTH
:
3889 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3891 case GL_PACK_SKIP_PIXELS
:
3892 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3894 case GL_PACK_SKIP_ROWS
:
3895 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3897 case GL_PACK_SWAP_BYTES
:
3898 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3900 case GL_PACK_SKIP_IMAGES_EXT
:
3901 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3903 case GL_PACK_IMAGE_HEIGHT_EXT
:
3904 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3906 case GL_PACK_INVERT_MESA
:
3907 *params
= (GLfloat
) ctx
->Pack
.Invert
;
3909 case GL_PERSPECTIVE_CORRECTION_HINT
:
3910 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3912 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3913 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3915 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3916 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3918 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3919 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3921 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3922 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3924 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3925 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3927 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3928 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3930 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3931 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3933 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3934 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3936 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3937 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3939 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3940 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3943 *params
= (GLfloat
) ctx
->Point
.Size
;
3945 case GL_POINT_SIZE_GRANULARITY
:
3946 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3948 case GL_POINT_SIZE_RANGE
:
3949 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3950 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3952 case GL_ALIASED_POINT_SIZE_RANGE
:
3953 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3954 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3956 case GL_POINT_SMOOTH
:
3957 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3959 case GL_POINT_SMOOTH_HINT
:
3960 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3962 case GL_POINT_SIZE_MIN_EXT
:
3963 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3965 case GL_POINT_SIZE_MAX_EXT
:
3966 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3968 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3969 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3971 case GL_DISTANCE_ATTENUATION_EXT
:
3972 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3973 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3974 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3976 case GL_POLYGON_MODE
:
3977 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3978 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3980 #ifdef GL_EXT_polygon_offset
3981 case GL_POLYGON_OFFSET_BIAS_EXT
:
3982 *params
= ctx
->Polygon
.OffsetUnits
;
3985 case GL_POLYGON_OFFSET_FACTOR
:
3986 *params
= ctx
->Polygon
.OffsetFactor
;
3988 case GL_POLYGON_OFFSET_UNITS
:
3989 *params
= ctx
->Polygon
.OffsetUnits
;
3991 case GL_POLYGON_SMOOTH
:
3992 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3994 case GL_POLYGON_SMOOTH_HINT
:
3995 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3997 case GL_POLYGON_STIPPLE
:
3998 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
4000 case GL_PROJECTION_MATRIX
:
4001 for (i
=0;i
<16;i
++) {
4002 params
[i
] = ctx
->ProjectionMatrixStack
.Top
->m
[i
];
4005 case GL_PROJECTION_STACK_DEPTH
:
4006 *params
= (GLfloat
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
4008 case GL_READ_BUFFER
:
4009 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
4012 *params
= ctx
->Pixel
.RedBias
;
4015 *params
= (GLfloat
) ctx
->Visual
.redBits
;
4018 *params
= ctx
->Pixel
.RedScale
;
4020 case GL_RENDER_MODE
:
4021 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
4023 case GL_RESCALE_NORMAL
:
4024 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
4027 *params
= (GLfloat
) ctx
->Visual
.rgbMode
;
4029 case GL_SCISSOR_BOX
:
4030 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
4031 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
4032 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
4033 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
4035 case GL_SCISSOR_TEST
:
4036 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
4038 case GL_SELECTION_BUFFER_SIZE
:
4039 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
4041 case GL_SHADE_MODEL
:
4042 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
4044 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4045 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
4047 case GL_STENCIL_BITS
:
4048 *params
= (GLfloat
) ctx
->Visual
.stencilBits
;
4050 case GL_STENCIL_CLEAR_VALUE
:
4051 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
4053 case GL_STENCIL_FAIL
:
4054 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
4056 case GL_STENCIL_FUNC
:
4057 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
4059 case GL_STENCIL_PASS_DEPTH_FAIL
:
4060 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
4062 case GL_STENCIL_PASS_DEPTH_PASS
:
4063 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
4065 case GL_STENCIL_REF
:
4066 *params
= (GLfloat
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
4068 case GL_STENCIL_TEST
:
4069 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
4071 case GL_STENCIL_VALUE_MASK
:
4072 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
4074 case GL_STENCIL_WRITEMASK
:
4075 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
4078 *params
= (GLfloat
) ctx
->Visual
.stereoMode
;
4080 case GL_SUBPIXEL_BITS
:
4081 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
4084 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0F
: 0.0F
;
4087 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0F
: 0.0F
;
4090 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0F
: 0.0F
;
4092 case GL_TEXTURE_BINDING_1D
:
4093 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
4095 case GL_TEXTURE_BINDING_2D
:
4096 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
4098 case GL_TEXTURE_BINDING_3D
:
4099 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
4101 case GL_TEXTURE_ENV_COLOR
:
4102 params
[0] = textureUnit
->EnvColor
[0];
4103 params
[1] = textureUnit
->EnvColor
[1];
4104 params
[2] = textureUnit
->EnvColor
[2];
4105 params
[3] = textureUnit
->EnvColor
[3];
4107 case GL_TEXTURE_ENV_MODE
:
4108 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
4110 case GL_TEXTURE_GEN_S
:
4111 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0F
: 0.0F
;
4113 case GL_TEXTURE_GEN_T
:
4114 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0F
: 0.0F
;
4116 case GL_TEXTURE_GEN_R
:
4117 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0F
: 0.0F
;
4119 case GL_TEXTURE_GEN_Q
:
4120 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0F
: 0.0F
;
4122 case GL_TEXTURE_MATRIX
:
4123 for (i
=0;i
<16;i
++) {
4124 params
[i
] = ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
4127 case GL_TEXTURE_STACK_DEPTH
:
4128 *params
= (GLfloat
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
4130 case GL_UNPACK_ALIGNMENT
:
4131 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
4133 case GL_UNPACK_LSB_FIRST
:
4134 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
4136 case GL_UNPACK_ROW_LENGTH
:
4137 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
4139 case GL_UNPACK_SKIP_PIXELS
:
4140 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
4142 case GL_UNPACK_SKIP_ROWS
:
4143 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
4145 case GL_UNPACK_SWAP_BYTES
:
4146 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
4148 case GL_UNPACK_SKIP_IMAGES_EXT
:
4149 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
4151 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4152 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
4154 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
4155 *params
= (GLfloat
) ctx
->Unpack
.ClientStorage
;
4158 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
4159 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
4160 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
4161 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
4164 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
4167 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
4169 case GL_VERTEX_ARRAY
:
4170 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
4172 case GL_VERTEX_ARRAY_SIZE
:
4173 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
4175 case GL_VERTEX_ARRAY_TYPE
:
4176 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
4178 case GL_VERTEX_ARRAY_STRIDE
:
4179 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
4181 case GL_VERTEX_ARRAY_COUNT_EXT
:
4184 case GL_NORMAL_ARRAY
:
4185 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
4187 case GL_NORMAL_ARRAY_TYPE
:
4188 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
4190 case GL_NORMAL_ARRAY_STRIDE
:
4191 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
4193 case GL_NORMAL_ARRAY_COUNT_EXT
:
4196 case GL_COLOR_ARRAY
:
4197 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
4199 case GL_COLOR_ARRAY_SIZE
:
4200 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
4202 case GL_COLOR_ARRAY_TYPE
:
4203 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
4205 case GL_COLOR_ARRAY_STRIDE
:
4206 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
4208 case GL_COLOR_ARRAY_COUNT_EXT
:
4211 case GL_INDEX_ARRAY
:
4212 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
4214 case GL_INDEX_ARRAY_TYPE
:
4215 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
4217 case GL_INDEX_ARRAY_STRIDE
:
4218 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
4220 case GL_INDEX_ARRAY_COUNT_EXT
:
4223 case GL_TEXTURE_COORD_ARRAY
:
4224 *params
= (GLfloat
) ctx
->Array
.TexCoord
[clientUnit
].Enabled
;
4226 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4227 *params
= (GLfloat
) ctx
->Array
.TexCoord
[clientUnit
].Size
;
4229 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4230 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[clientUnit
].Type
);
4232 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4233 *params
= (GLfloat
) ctx
->Array
.TexCoord
[clientUnit
].Stride
;
4235 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4238 case GL_EDGE_FLAG_ARRAY
:
4239 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
4241 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4242 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
4244 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4248 /* GL_ARB_multitexture */
4249 case GL_MAX_TEXTURE_UNITS_ARB
:
4250 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
4251 *params
= (GLfloat
) MIN2(ctx
->Const
.MaxTextureImageUnits
,
4252 ctx
->Const
.MaxTextureCoordUnits
);
4254 case GL_ACTIVE_TEXTURE_ARB
:
4255 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
4256 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
4258 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4259 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
4260 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ clientUnit
);
4263 /* GL_ARB_texture_cube_map */
4264 case GL_TEXTURE_CUBE_MAP_ARB
:
4265 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
4266 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4268 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4269 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
4270 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
4272 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4273 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
4274 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
4277 /* GL_ARB_texture_compression */
4278 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4279 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
4280 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
4282 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4283 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
4284 *params
= (GLfloat
) _mesa_get_compressed_formats(ctx
, NULL
);
4286 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4287 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
4291 n
= _mesa_get_compressed_formats(ctx
, formats
);
4292 for (i
= 0; i
< n
; i
++)
4293 params
[i
] = (GLfloat
) formats
[i
];
4297 /* GL_EXT_compiled_vertex_array */
4298 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4299 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
4300 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
4302 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4303 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
4304 *params
= (GLfloat
) ctx
->Array
.LockCount
;
4307 /* GL_ARB_transpose_matrix */
4308 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4309 _math_transposef(params
, ctx
->ColorMatrixStack
.Top
->m
);
4311 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4312 _math_transposef(params
, ctx
->ModelviewMatrixStack
.Top
->m
);
4314 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4315 _math_transposef(params
, ctx
->ProjectionMatrixStack
.Top
->m
);
4317 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4318 _math_transposef(params
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
4321 /* GL_HP_occlusion_test */
4322 case GL_OCCLUSION_TEST_HP
:
4323 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
4324 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
4326 case GL_OCCLUSION_TEST_RESULT_HP
:
4327 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
4328 if (ctx
->Depth
.OcclusionTest
)
4329 *params
= (GLfloat
) ctx
->OcclusionResult
;
4331 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
4332 /* reset flag now */
4333 ctx
->OcclusionResult
= GL_FALSE
;
4334 ctx
->OcclusionResultSaved
= GL_FALSE
;
4337 /* GL_SGIS_pixel_texture */
4338 case GL_PIXEL_TEXTURE_SGIS
:
4339 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
4342 /* GL_SGIX_pixel_texture */
4343 case GL_PIXEL_TEX_GEN_SGIX
:
4344 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
4346 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4347 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
4350 /* GL_SGI_color_matrix (also in 1.2 imaging) */
4351 case GL_COLOR_MATRIX_SGI
:
4352 for (i
=0;i
<16;i
++) {
4353 params
[i
] = ctx
->ColorMatrixStack
.Top
->m
[i
];
4356 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
4357 *params
= (GLfloat
) (ctx
->ColorMatrixStack
.Depth
+ 1);
4359 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
4360 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
4362 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
4363 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
4365 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
4366 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
4368 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
4369 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
4371 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
4372 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
4374 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
4375 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
4377 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
4378 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
4380 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
4381 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
4383 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
4384 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
4387 /* GL_EXT_convolution (also in 1.2 imaging) */
4388 case GL_CONVOLUTION_1D_EXT
:
4389 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4390 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
4392 case GL_CONVOLUTION_2D
:
4393 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4394 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
4396 case GL_SEPARABLE_2D
:
4397 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4398 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
4400 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
4401 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4402 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
4404 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
4405 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4406 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
4408 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
4409 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4410 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
4412 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
4413 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4414 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
4416 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
4417 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4418 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
4420 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
4421 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4422 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
4424 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
4425 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4426 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
4428 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
4429 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4430 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
4433 /* GL_EXT_histogram (also in 1.2 imaging) */
4435 CHECK_EXTENSION_F(EXT_histogram
, pname
);
4436 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
4439 CHECK_EXTENSION_F(EXT_histogram
, pname
);
4440 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
4443 /* GL_SGI_color_table (also in 1.2 imaging */
4444 case GL_COLOR_TABLE_SGI
:
4445 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
4447 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
4448 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
4450 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
4451 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
4454 /* GL_SGI_texture_color_table */
4455 case GL_TEXTURE_COLOR_TABLE_SGI
:
4456 CHECK_EXTENSION_F(SGI_texture_color_table
, pname
);
4457 *params
= (GLfloat
) textureUnit
->ColorTableEnabled
;
4460 /* GL_EXT_secondary_color */
4461 case GL_COLOR_SUM_EXT
:
4462 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4463 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
4465 case GL_CURRENT_SECONDARY_COLOR_EXT
:
4466 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4467 FLUSH_CURRENT(ctx
, 0);
4468 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
4469 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
4470 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
4471 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3];
4473 case GL_SECONDARY_COLOR_ARRAY_EXT
:
4474 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4475 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
4477 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
4478 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4479 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
4481 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
4482 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4483 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
4485 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
4486 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4487 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Size
;
4490 /* GL_EXT_fog_coord */
4491 case GL_CURRENT_FOG_COORDINATE_EXT
:
4492 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4493 FLUSH_CURRENT(ctx
, 0);
4494 *params
= (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
4496 case GL_FOG_COORDINATE_ARRAY_EXT
:
4497 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4498 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
4500 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
4501 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4502 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
4504 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
4505 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4506 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
4508 case GL_FOG_COORDINATE_SOURCE_EXT
:
4509 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4510 *params
= (GLfloat
) ctx
->Fog
.FogCoordinateSource
;
4513 /* GL_EXT_texture_lod_bias */
4514 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
4515 *params
= ctx
->Const
.MaxTextureLodBias
;
4518 /* GL_EXT_texture_filter_anisotropic */
4519 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
4520 CHECK_EXTENSION_F(EXT_texture_filter_anisotropic
, pname
);
4521 *params
= ctx
->Const
.MaxTextureMaxAnisotropy
;
4524 /* GL_ARB_multisample */
4525 case GL_MULTISAMPLE_ARB
:
4526 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4527 *params
= (GLfloat
) ctx
->Multisample
.Enabled
;
4529 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
4530 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4531 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToCoverage
;
4533 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
4534 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4535 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToOne
;
4537 case GL_SAMPLE_COVERAGE_ARB
:
4538 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4539 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverage
;
4541 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
4542 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4543 *params
= ctx
->Multisample
.SampleCoverageValue
;
4545 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
4546 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4547 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverageInvert
;
4549 case GL_SAMPLE_BUFFERS_ARB
:
4550 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4551 *params
= 0.0; /* XXX fix someday */
4553 case GL_SAMPLES_ARB
:
4554 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4555 *params
= 0.0; /* XXX fix someday */
4558 /* GL_IBM_rasterpos_clip */
4559 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
4560 CHECK_EXTENSION_F(IBM_rasterpos_clip
, pname
);
4561 *params
= (GLfloat
) ctx
->Transform
.RasterPositionUnclipped
;
4564 /* GL_NV_point_sprite */
4565 case GL_POINT_SPRITE_NV
:
4566 CHECK_EXTENSION2_F(NV_point_sprite
, ARB_point_sprite
, pname
);
4567 *params
= (GLfloat
) ctx
->Point
.PointSprite
;
4569 case GL_POINT_SPRITE_R_MODE_NV
:
4570 CHECK_EXTENSION_F(NV_point_sprite
, pname
);
4571 *params
= (GLfloat
) ctx
->Point
.SpriteRMode
;
4573 case GL_POINT_SPRITE_COORD_ORIGIN
:
4574 CHECK_EXTENSION_F(ARB_point_sprite
, pname
);
4575 *params
= (GLfloat
) ctx
->Point
.SpriteOrigin
;
4578 /* GL_SGIS_generate_mipmap */
4579 case GL_GENERATE_MIPMAP_HINT_SGIS
:
4580 CHECK_EXTENSION_F(SGIS_generate_mipmap
, pname
);
4581 *params
= (GLfloat
) ctx
->Hint
.GenerateMipmap
;
4584 #if FEATURE_NV_vertex_program
4585 case GL_VERTEX_PROGRAM_NV
:
4586 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4587 *params
= (GLfloat
) ctx
->VertexProgram
.Enabled
;
4589 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
4590 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4591 *params
= (GLfloat
) ctx
->VertexProgram
.PointSizeEnabled
;
4593 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
4594 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4595 *params
= (GLfloat
) ctx
->VertexProgram
.TwoSideEnabled
;
4597 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
4598 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4599 *params
= (GLfloat
) ctx
->Const
.MaxProgramMatrixStackDepth
;
4601 case GL_MAX_TRACK_MATRICES_NV
:
4602 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4603 *params
= (GLfloat
) ctx
->Const
.MaxProgramMatrices
;
4605 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
4606 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4607 *params
= (GLfloat
) ctx
->CurrentStack
->Depth
+ 1;
4609 case GL_CURRENT_MATRIX_NV
:
4610 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4611 for (i
= 0; i
< 16; i
++)
4612 params
[i
] = ctx
->CurrentStack
->Top
->m
[i
];
4614 case GL_VERTEX_PROGRAM_BINDING_NV
:
4615 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4616 if (ctx
->VertexProgram
.Current
)
4617 *params
= (GLfloat
) ctx
->VertexProgram
.Current
->Base
.Id
;
4621 case GL_PROGRAM_ERROR_POSITION_NV
:
4622 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4623 *params
= (GLfloat
) ctx
->Program
.ErrorPos
;
4625 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
4626 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
4627 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
4628 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
4629 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
4630 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
4631 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
4632 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
4633 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
4634 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
4635 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
4636 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
4637 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
4638 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
4639 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
4640 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
4641 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4643 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
4644 *params
= (GLfloat
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
4647 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
4648 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
4649 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
4650 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
4651 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
4652 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
4653 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
4654 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
4655 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
4656 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
4657 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
4658 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
4659 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
4660 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
4661 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
4662 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
4663 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4665 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
4666 *params
= (GLfloat
) ctx
->Eval
.Map1Attrib
[n
];
4669 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
4670 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
4671 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
4672 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
4673 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
4674 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
4675 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
4676 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
4677 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
4678 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
4679 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
4680 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
4681 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
4682 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
4683 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
4684 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
4685 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4687 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
4688 *params
= (GLfloat
) ctx
->Eval
.Map2Attrib
[n
];
4691 #endif /* FEATURE_NV_vertex_program */
4693 #if FEATURE_NV_fragment_program
4694 case GL_FRAGMENT_PROGRAM_NV
:
4695 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4696 *params
= (GLfloat
) ctx
->FragmentProgram
.Enabled
;
4698 case GL_MAX_TEXTURE_COORDS_NV
:
4699 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4700 *params
= (GLfloat
) ctx
->Const
.MaxTextureCoordUnits
;
4702 case GL_MAX_TEXTURE_IMAGE_UNITS_NV
:
4703 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4704 *params
= (GLfloat
) ctx
->Const
.MaxTextureImageUnits
;
4706 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
4707 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4708 if (ctx
->FragmentProgram
.Current
)
4709 *params
= (GLfloat
) ctx
->FragmentProgram
.Current
->Base
.Id
;
4713 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
4714 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4715 *params
= (GLfloat
) MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
4717 #endif /* FEATURE_NV_fragment_program */
4719 /* GL_NV_texture_rectangle */
4720 case GL_TEXTURE_RECTANGLE_NV
:
4721 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4722 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
4724 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
4725 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4726 *params
= (GLfloat
) textureUnit
->CurrentRect
->Name
;
4728 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
4729 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4730 *params
= (GLfloat
) ctx
->Const
.MaxTextureRectSize
;
4733 /* GL_EXT_stencil_two_side */
4734 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
4735 CHECK_EXTENSION_F(EXT_stencil_two_side
, pname
);
4736 *params
= (GLfloat
) ctx
->Stencil
.TestTwoSide
;
4738 case GL_ACTIVE_STENCIL_FACE_EXT
:
4739 CHECK_EXTENSION_F(EXT_stencil_two_side
, pname
);
4740 *params
= (GLfloat
) (ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
4743 /* GL_NV_light_max_exponent */
4744 case GL_MAX_SHININESS_NV
:
4745 *params
= ctx
->Const
.MaxShininess
;
4747 case GL_MAX_SPOT_EXPONENT_NV
:
4748 *params
= ctx
->Const
.MaxSpotExponent
;
4751 #if FEATURE_ARB_vertex_buffer_object
4752 case GL_ARRAY_BUFFER_BINDING_ARB
:
4753 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4754 *params
= (GLfloat
) ctx
->Array
.ArrayBufferObj
->Name
;
4756 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
4757 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4758 *params
= (GLfloat
) ctx
->Array
.Vertex
.BufferObj
->Name
;
4760 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
4761 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4762 *params
= (GLfloat
) ctx
->Array
.Normal
.BufferObj
->Name
;
4764 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
4765 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4766 *params
= (GLfloat
) ctx
->Array
.Color
.BufferObj
->Name
;
4768 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
4769 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4770 *params
= (GLfloat
) ctx
->Array
.Index
.BufferObj
->Name
;
4772 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
4773 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4774 *params
= (GLfloat
) ctx
->Array
.TexCoord
[clientUnit
].BufferObj
->Name
;
4776 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
4777 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4778 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.BufferObj
->Name
;
4780 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
4781 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4782 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.BufferObj
->Name
;
4784 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
4785 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4786 *params
= (GLfloat
) ctx
->Array
.FogCoord
.BufferObj
->Name
;
4788 /*case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB: - not supported */
4789 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
4790 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4791 *params
= (GLfloat
) ctx
->Array
.ElementArrayBufferObj
->Name
;
4794 #if FEATURE_EXT_pixel_buffer_object
4795 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
4796 CHECK_EXTENSION_F(EXT_pixel_buffer_object
, pname
);
4797 *params
= (GLfloat
) ctx
->Pack
.BufferObj
->Name
;
4799 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
4800 CHECK_EXTENSION_F(EXT_pixel_buffer_object
, pname
);
4801 *params
= (GLfloat
) ctx
->Unpack
.BufferObj
->Name
;
4805 #if FEATURE_ARB_vertex_program
4806 /* GL_NV_vertex_program and GL_ARB_fragment_program define others */
4807 case GL_MAX_VERTEX_ATTRIBS_ARB
:
4808 CHECK_EXTENSION_F(ARB_vertex_program
, pname
);
4809 *params
= (GLfloat
) ctx
->Const
.MaxVertexProgramAttribs
;
4813 #if FEATURE_ARB_fragment_program
4814 case GL_FRAGMENT_PROGRAM_ARB
:
4815 CHECK_EXTENSION_F(ARB_fragment_program
, pname
);
4816 *params
= (GLfloat
) ctx
->FragmentProgram
.Enabled
;
4818 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
4819 CHECK_EXTENSION_F(ARB_fragment_program
, pname
);
4820 params
[0] = ctx
->CurrentStack
->Top
->m
[0];
4821 params
[1] = ctx
->CurrentStack
->Top
->m
[4];
4822 params
[2] = ctx
->CurrentStack
->Top
->m
[8];
4823 params
[3] = ctx
->CurrentStack
->Top
->m
[12];
4824 params
[4] = ctx
->CurrentStack
->Top
->m
[1];
4825 params
[5] = ctx
->CurrentStack
->Top
->m
[5];
4826 params
[6] = ctx
->CurrentStack
->Top
->m
[9];
4827 params
[7] = ctx
->CurrentStack
->Top
->m
[13];
4828 params
[8] = ctx
->CurrentStack
->Top
->m
[2];
4829 params
[9] = ctx
->CurrentStack
->Top
->m
[6];
4830 params
[10] = ctx
->CurrentStack
->Top
->m
[10];
4831 params
[11] = ctx
->CurrentStack
->Top
->m
[14];
4832 params
[12] = ctx
->CurrentStack
->Top
->m
[3];
4833 params
[13] = ctx
->CurrentStack
->Top
->m
[7];
4834 params
[14] = ctx
->CurrentStack
->Top
->m
[11];
4835 params
[15] = ctx
->CurrentStack
->Top
->m
[15];
4837 /* Remaining ARB_fragment_program queries alias with
4838 * the GL_NV_fragment_program queries.
4842 /* GL_EXT_depth_bounds_test */
4843 case GL_DEPTH_BOUNDS_TEST_EXT
:
4844 CHECK_EXTENSION_F(EXT_depth_bounds_test
, pname
);
4845 params
[0] = (GLfloat
) ctx
->Depth
.BoundsTest
;
4847 case GL_DEPTH_BOUNDS_EXT
:
4848 CHECK_EXTENSION_F(EXT_depth_bounds_test
, pname
);
4849 params
[0] = ctx
->Depth
.BoundsMin
;
4850 params
[1] = ctx
->Depth
.BoundsMax
;
4853 #if FEATURE_MESA_program_debug
4854 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA
:
4855 CHECK_EXTENSION_F(MESA_program_debug
, pname
);
4856 *params
= (GLfloat
) ctx
->FragmentProgram
.CallbackEnabled
;
4858 case GL_VERTEX_PROGRAM_CALLBACK_MESA
:
4859 CHECK_EXTENSION_F(MESA_program_debug
, pname
);
4860 *params
= (GLfloat
) ctx
->VertexProgram
.CallbackEnabled
;
4862 case GL_FRAGMENT_PROGRAM_POSITION_MESA
:
4863 CHECK_EXTENSION_F(MESA_program_debug
, pname
);
4864 *params
= (GLfloat
) ctx
->FragmentProgram
.CurrentPosition
;
4866 case GL_VERTEX_PROGRAM_POSITION_MESA
:
4867 CHECK_EXTENSION_F(MESA_program_debug
, pname
);
4868 *params
= (GLfloat
) ctx
->VertexProgram
.CurrentPosition
;
4872 case GL_MAX_DRAW_BUFFERS_ARB
:
4873 CHECK_EXTENSION_F(ARB_draw_buffers
, pname
);
4874 *params
= (GLfloat
) ctx
->Const
.MaxDrawBuffers
;
4876 case GL_DRAW_BUFFER0_ARB
:
4877 case GL_DRAW_BUFFER1_ARB
:
4878 case GL_DRAW_BUFFER2_ARB
:
4879 case GL_DRAW_BUFFER3_ARB
:
4880 case GL_DRAW_BUFFER4_ARB
:
4881 case GL_DRAW_BUFFER5_ARB
:
4882 case GL_DRAW_BUFFER6_ARB
:
4883 case GL_DRAW_BUFFER7_ARB
:
4884 case GL_DRAW_BUFFER8_ARB
:
4885 case GL_DRAW_BUFFER9_ARB
:
4886 case GL_DRAW_BUFFER10_ARB
:
4887 case GL_DRAW_BUFFER11_ARB
:
4888 case GL_DRAW_BUFFER12_ARB
:
4889 case GL_DRAW_BUFFER13_ARB
:
4890 case GL_DRAW_BUFFER14_ARB
:
4891 case GL_DRAW_BUFFER15_ARB
:
4892 CHECK_EXTENSION_F(ARB_draw_buffers
, pname
);
4894 GLuint i
= pname
- GL_DRAW_BUFFER0_ARB
;
4895 if (i
>= ctx
->Const
.MaxDrawBuffers
) {
4896 _mesa_error(ctx
, GL_INVALID_ENUM
,
4897 "glGetFloatv(GL_DRAW_BUFFERx_ARB)");
4900 *params
= (GLfloat
) ctx
->Color
.DrawBuffer
[i
];
4904 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
4905 *params
= (GLfloat
) ctx
->Const
.ColorReadType
;
4907 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
4908 *params
= (GLfloat
) ctx
->Const
.ColorReadFormat
;
4912 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv(0x%x)", pname
);
4918 * Get the value(s) of a selected parameter.
4920 * \param pname parameter to be returned.
4921 * \param params will hold the value(s) of the speficifed parameter.
4923 * \sa glGetIntegerv().
4925 * Tries to get the specified parameter via dd_function_table::GetIntegerv,
4926 * otherwise gets the specified parameter from the current context, converting
4927 * it value into GLinteger.
4930 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
4932 GET_CURRENT_CONTEXT(ctx
);
4934 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
4935 const GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4936 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
4937 ASSERT_OUTSIDE_BEGIN_END(ctx
);
4942 if (MESA_VERBOSE
& VERBOSE_API
)
4943 _mesa_debug(ctx
, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname
));
4945 if (!ctx
->_CurrentProgram
) {
4946 /* We need this in order to get correct results for
4947 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
4949 FLUSH_VERTICES(ctx
, 0);
4952 if (ctx
->Driver
.GetIntegerv
4953 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
4957 case GL_ACCUM_RED_BITS
:
4958 *params
= (GLint
) ctx
->Visual
.accumRedBits
;
4960 case GL_ACCUM_GREEN_BITS
:
4961 *params
= (GLint
) ctx
->Visual
.accumGreenBits
;
4963 case GL_ACCUM_BLUE_BITS
:
4964 *params
= (GLint
) ctx
->Visual
.accumBlueBits
;
4966 case GL_ACCUM_ALPHA_BITS
:
4967 *params
= (GLint
) ctx
->Visual
.accumAlphaBits
;
4969 case GL_ACCUM_CLEAR_VALUE
:
4970 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
4971 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
4972 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
4973 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
4976 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
4979 *params
= ctx
->Visual
.alphaBits
;
4981 case GL_ALPHA_SCALE
:
4982 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
4985 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
4987 case GL_ALPHA_TEST_REF
:
4988 *params
= FLOAT_TO_INT(ctx
->Color
.AlphaRef
);
4990 case GL_ALPHA_TEST_FUNC
:
4991 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
4993 case GL_ATTRIB_STACK_DEPTH
:
4994 *params
= (GLint
) (ctx
->AttribStackDepth
);
4996 case GL_AUTO_NORMAL
:
4997 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
4999 case GL_AUX_BUFFERS
:
5000 *params
= (GLint
) ctx
->Visual
.numAuxBuffers
;
5003 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
5006 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
5009 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
5011 case GL_BLEND_SRC_RGB_EXT
:
5012 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
5014 case GL_BLEND_DST_RGB_EXT
:
5015 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
5017 case GL_BLEND_SRC_ALPHA_EXT
:
5018 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
5020 case GL_BLEND_DST_ALPHA_EXT
:
5021 *params
= (GLint
) ctx
->Color
.BlendDstA
;
5023 case GL_BLEND_EQUATION
:
5024 *params
= (GLint
) ctx
->Color
.BlendEquationRGB
;
5026 case GL_BLEND_EQUATION_ALPHA_EXT
:
5027 *params
= (GLint
) ctx
->Color
.BlendEquationA
;
5029 case GL_BLEND_COLOR_EXT
:
5030 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
5031 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
5032 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
5033 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
5036 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
5039 *params
= (GLint
) ctx
->Visual
.blueBits
;
5042 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
5044 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
5045 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
5047 case GL_CLIP_PLANE0
:
5048 case GL_CLIP_PLANE1
:
5049 case GL_CLIP_PLANE2
:
5050 case GL_CLIP_PLANE3
:
5051 case GL_CLIP_PLANE4
:
5052 case GL_CLIP_PLANE5
:
5053 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
5058 case GL_COLOR_CLEAR_VALUE
:
5059 params
[0] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[0]) );
5060 params
[1] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[1]) );
5061 params
[2] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[2]) );
5062 params
[3] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[3]) );
5064 case GL_COLOR_MATERIAL
:
5065 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
5067 case GL_COLOR_MATERIAL_FACE
:
5068 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
5070 case GL_COLOR_MATERIAL_PARAMETER
:
5071 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
5073 case GL_COLOR_WRITEMASK
:
5074 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
5075 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
5076 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
5077 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
5080 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
5082 case GL_CULL_FACE_MODE
:
5083 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
5085 case GL_CURRENT_COLOR
:
5086 FLUSH_CURRENT(ctx
, 0);
5087 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
5088 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
5089 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
5090 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
5092 case GL_CURRENT_INDEX
:
5093 FLUSH_CURRENT(ctx
, 0);
5094 *params
= (GLint
) ctx
->Current
.Index
;
5096 case GL_CURRENT_NORMAL
:
5097 FLUSH_CURRENT(ctx
, 0);
5098 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
5099 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
5100 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
5102 case GL_CURRENT_RASTER_COLOR
:
5103 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
5104 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
5105 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
5106 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
5108 case GL_CURRENT_RASTER_DISTANCE
:
5109 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
5111 case GL_CURRENT_RASTER_INDEX
:
5112 *params
= (GLint
) ctx
->Current
.RasterIndex
;
5114 case GL_CURRENT_RASTER_POSITION
:
5115 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
5116 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
5117 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
5118 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
5120 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
5121 params
[0] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
5122 params
[1] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
5123 params
[2] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
5124 params
[3] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
5126 case GL_CURRENT_RASTER_POSITION_VALID
:
5127 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
5129 case GL_CURRENT_TEXTURE_COORDS
:
5130 FLUSH_CURRENT(ctx
, 0);
5131 params
[0] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
5132 params
[1] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
5133 params
[2] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
5134 params
[3] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
5137 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
5140 *params
= ctx
->Visual
.depthBits
;
5142 case GL_DEPTH_CLEAR_VALUE
:
5143 *params
= (GLint
) ctx
->Depth
.Clear
;
5146 *params
= (GLint
) ctx
->Depth
.Func
;
5148 case GL_DEPTH_RANGE
:
5149 params
[0] = (GLint
) ctx
->Viewport
.Near
;
5150 params
[1] = (GLint
) ctx
->Viewport
.Far
;
5152 case GL_DEPTH_SCALE
:
5153 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
5156 *params
= (GLint
) ctx
->Depth
.Test
;
5158 case GL_DEPTH_WRITEMASK
:
5159 *params
= (GLint
) ctx
->Depth
.Mask
;
5162 *params
= (GLint
) ctx
->Color
.DitherFlag
;
5164 case GL_DOUBLEBUFFER
:
5165 *params
= (GLint
) ctx
->Visual
.doubleBufferMode
;
5167 case GL_DRAW_BUFFER
:
5168 *params
= (GLint
) ctx
->Color
.DrawBuffer
[0];
5171 FLUSH_CURRENT(ctx
, 0);
5172 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
5174 case GL_FEEDBACK_BUFFER_SIZE
:
5175 *params
= ctx
->Feedback
.BufferSize
;
5177 case GL_FEEDBACK_BUFFER_TYPE
:
5178 *params
= ctx
->Feedback
.Type
;
5181 *params
= (GLint
) ctx
->Fog
.Enabled
;
5184 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
5185 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
5186 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
5187 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
5189 case GL_FOG_DENSITY
:
5190 *params
= (GLint
) ctx
->Fog
.Density
;
5193 *params
= (GLint
) ctx
->Fog
.End
;
5196 *params
= (GLint
) ctx
->Hint
.Fog
;
5199 *params
= (GLint
) ctx
->Fog
.Index
;
5202 *params
= (GLint
) ctx
->Fog
.Mode
;
5205 *params
= (GLint
) ctx
->Fog
.Start
;
5208 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
5211 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
5214 *params
= (GLint
) ctx
->Visual
.greenBits
;
5216 case GL_GREEN_SCALE
:
5217 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
5220 *params
= (GLint
) ctx
->Visual
.indexBits
;
5222 case GL_INDEX_CLEAR_VALUE
:
5223 *params
= (GLint
) ctx
->Color
.ClearIndex
;
5226 *params
= ctx
->Visual
.rgbMode
? 0 : 1;
5228 case GL_INDEX_OFFSET
:
5229 *params
= ctx
->Pixel
.IndexOffset
;
5231 case GL_INDEX_SHIFT
:
5232 *params
= ctx
->Pixel
.IndexShift
;
5234 case GL_INDEX_WRITEMASK
:
5235 *params
= (GLint
) ctx
->Color
.IndexMask
;
5245 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
5248 *params
= (GLint
) ctx
->Light
.Enabled
;
5250 case GL_LIGHT_MODEL_AMBIENT
:
5251 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
5252 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
5253 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
5254 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
5256 case GL_LIGHT_MODEL_COLOR_CONTROL
:
5257 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
5259 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
5260 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
5262 case GL_LIGHT_MODEL_TWO_SIDE
:
5263 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
5265 case GL_LINE_SMOOTH
:
5266 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
5268 case GL_LINE_SMOOTH_HINT
:
5269 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
5271 case GL_LINE_STIPPLE
:
5272 *params
= (GLint
) ctx
->Line
.StippleFlag
;
5274 case GL_LINE_STIPPLE_PATTERN
:
5275 *params
= (GLint
) ctx
->Line
.StipplePattern
;
5277 case GL_LINE_STIPPLE_REPEAT
:
5278 *params
= (GLint
) ctx
->Line
.StippleFactor
;
5281 *params
= (GLint
) ctx
->Line
.Width
;
5283 case GL_LINE_WIDTH_GRANULARITY
:
5284 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
5286 case GL_LINE_WIDTH_RANGE
:
5287 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
5288 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
5290 case GL_ALIASED_LINE_WIDTH_RANGE
:
5291 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
5292 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
5295 *params
= (GLint
) ctx
->List
.ListBase
;
5298 *params
= (GLint
) ctx
->ListState
.CurrentListNum
;
5301 if (!ctx
->CompileFlag
)
5303 else if (ctx
->ExecuteFlag
)
5304 *params
= (GLint
) GL_COMPILE_AND_EXECUTE
;
5306 *params
= (GLint
) GL_COMPILE
;
5308 case GL_INDEX_LOGIC_OP
:
5309 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
5311 case GL_COLOR_LOGIC_OP
:
5312 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
5314 case GL_LOGIC_OP_MODE
:
5315 *params
= (GLint
) ctx
->Color
.LogicOp
;
5317 case GL_MAP1_COLOR_4
:
5318 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
5320 case GL_MAP1_GRID_DOMAIN
:
5321 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
5322 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
5324 case GL_MAP1_GRID_SEGMENTS
:
5325 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
5328 *params
= (GLint
) ctx
->Eval
.Map1Index
;
5330 case GL_MAP1_NORMAL
:
5331 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
5333 case GL_MAP1_TEXTURE_COORD_1
:
5334 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
5336 case GL_MAP1_TEXTURE_COORD_2
:
5337 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
5339 case GL_MAP1_TEXTURE_COORD_3
:
5340 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
5342 case GL_MAP1_TEXTURE_COORD_4
:
5343 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
5345 case GL_MAP1_VERTEX_3
:
5346 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
5348 case GL_MAP1_VERTEX_4
:
5349 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
5351 case GL_MAP2_COLOR_4
:
5352 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
5354 case GL_MAP2_GRID_DOMAIN
:
5355 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
5356 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
5357 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
5358 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
5360 case GL_MAP2_GRID_SEGMENTS
:
5361 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
5362 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
5365 *params
= (GLint
) ctx
->Eval
.Map2Index
;
5367 case GL_MAP2_NORMAL
:
5368 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
5370 case GL_MAP2_TEXTURE_COORD_1
:
5371 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
5373 case GL_MAP2_TEXTURE_COORD_2
:
5374 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
5376 case GL_MAP2_TEXTURE_COORD_3
:
5377 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
5379 case GL_MAP2_TEXTURE_COORD_4
:
5380 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
5382 case GL_MAP2_VERTEX_3
:
5383 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
5385 case GL_MAP2_VERTEX_4
:
5386 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
5389 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
5391 case GL_MAP_STENCIL
:
5392 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
5394 case GL_MATRIX_MODE
:
5395 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
5397 case GL_MAX_ATTRIB_STACK_DEPTH
:
5398 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
5400 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
5401 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
5403 case GL_MAX_CLIP_PLANES
:
5404 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
5406 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
5407 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
5409 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
5410 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
5412 case GL_MAX_EVAL_ORDER
:
5413 *params
= (GLint
) MAX_EVAL_ORDER
;
5416 *params
= (GLint
) ctx
->Const
.MaxLights
;
5418 case GL_MAX_LIST_NESTING
:
5419 *params
= (GLint
) MAX_LIST_NESTING
;
5421 case GL_MAX_MODELVIEW_STACK_DEPTH
:
5422 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
5424 case GL_MAX_NAME_STACK_DEPTH
:
5425 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
5427 case GL_MAX_PIXEL_MAP_TABLE
:
5428 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
5430 case GL_MAX_PROJECTION_STACK_DEPTH
:
5431 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
5433 case GL_MAX_TEXTURE_SIZE
:
5434 *params
= (1 << (ctx
->Const
.MaxTextureLevels
- 1));
5436 case GL_MAX_3D_TEXTURE_SIZE
:
5437 *params
= (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
5439 case GL_MAX_TEXTURE_STACK_DEPTH
:
5440 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
5442 case GL_MAX_VIEWPORT_DIMS
:
5443 params
[0] = (GLint
) MAX_WIDTH
;
5444 params
[1] = (GLint
) MAX_HEIGHT
;
5446 case GL_MODELVIEW_MATRIX
:
5447 for (i
=0;i
<16;i
++) {
5448 params
[i
] = (GLint
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
5451 case GL_MODELVIEW_STACK_DEPTH
:
5452 *params
= (GLint
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
5454 case GL_NAME_STACK_DEPTH
:
5455 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
5458 *params
= (GLint
) ctx
->Transform
.Normalize
;
5460 case GL_PACK_ALIGNMENT
:
5461 *params
= ctx
->Pack
.Alignment
;
5463 case GL_PACK_LSB_FIRST
:
5464 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
5466 case GL_PACK_ROW_LENGTH
:
5467 *params
= ctx
->Pack
.RowLength
;
5469 case GL_PACK_SKIP_PIXELS
:
5470 *params
= ctx
->Pack
.SkipPixels
;
5472 case GL_PACK_SKIP_ROWS
:
5473 *params
= ctx
->Pack
.SkipRows
;
5475 case GL_PACK_SWAP_BYTES
:
5476 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
5478 case GL_PACK_SKIP_IMAGES_EXT
:
5479 *params
= ctx
->Pack
.SkipImages
;
5481 case GL_PACK_IMAGE_HEIGHT_EXT
:
5482 *params
= ctx
->Pack
.ImageHeight
;
5484 case GL_PACK_INVERT_MESA
:
5485 *params
= ctx
->Pack
.Invert
;
5487 case GL_PERSPECTIVE_CORRECTION_HINT
:
5488 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
5490 case GL_PIXEL_MAP_A_TO_A_SIZE
:
5491 *params
= ctx
->Pixel
.MapAtoAsize
;
5493 case GL_PIXEL_MAP_B_TO_B_SIZE
:
5494 *params
= ctx
->Pixel
.MapBtoBsize
;
5496 case GL_PIXEL_MAP_G_TO_G_SIZE
:
5497 *params
= ctx
->Pixel
.MapGtoGsize
;
5499 case GL_PIXEL_MAP_I_TO_A_SIZE
:
5500 *params
= ctx
->Pixel
.MapItoAsize
;
5502 case GL_PIXEL_MAP_I_TO_B_SIZE
:
5503 *params
= ctx
->Pixel
.MapItoBsize
;
5505 case GL_PIXEL_MAP_I_TO_G_SIZE
:
5506 *params
= ctx
->Pixel
.MapItoGsize
;
5508 case GL_PIXEL_MAP_I_TO_I_SIZE
:
5509 *params
= ctx
->Pixel
.MapItoIsize
;
5511 case GL_PIXEL_MAP_I_TO_R_SIZE
:
5512 *params
= ctx
->Pixel
.MapItoRsize
;
5514 case GL_PIXEL_MAP_R_TO_R_SIZE
:
5515 *params
= ctx
->Pixel
.MapRtoRsize
;
5517 case GL_PIXEL_MAP_S_TO_S_SIZE
:
5518 *params
= ctx
->Pixel
.MapStoSsize
;
5521 *params
= (GLint
) ctx
->Point
.Size
;
5523 case GL_POINT_SIZE_GRANULARITY
:
5524 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
5526 case GL_POINT_SIZE_RANGE
:
5527 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
5528 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
5530 case GL_ALIASED_POINT_SIZE_RANGE
:
5531 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
5532 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
5534 case GL_POINT_SMOOTH
:
5535 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
5537 case GL_POINT_SMOOTH_HINT
:
5538 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
5540 case GL_POINT_SIZE_MIN_EXT
:
5541 *params
= (GLint
) (ctx
->Point
.MinSize
);
5543 case GL_POINT_SIZE_MAX_EXT
:
5544 *params
= (GLint
) (ctx
->Point
.MaxSize
);
5546 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
5547 *params
= (GLint
) (ctx
->Point
.Threshold
);
5549 case GL_DISTANCE_ATTENUATION_EXT
:
5550 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
5551 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
5552 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
5554 case GL_POLYGON_MODE
:
5555 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
5556 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
5558 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
5559 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
5561 case GL_POLYGON_OFFSET_FACTOR
:
5562 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
5564 case GL_POLYGON_OFFSET_UNITS
:
5565 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
5567 case GL_POLYGON_SMOOTH
:
5568 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
5570 case GL_POLYGON_SMOOTH_HINT
:
5571 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
5573 case GL_POLYGON_STIPPLE
:
5574 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
5576 case GL_PROJECTION_MATRIX
:
5577 for (i
=0;i
<16;i
++) {
5578 params
[i
] = (GLint
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
5581 case GL_PROJECTION_STACK_DEPTH
:
5582 *params
= (GLint
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
5584 case GL_READ_BUFFER
:
5585 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
5588 *params
= (GLint
) ctx
->Pixel
.RedBias
;
5591 *params
= (GLint
) ctx
->Visual
.redBits
;
5594 *params
= (GLint
) ctx
->Pixel
.RedScale
;
5596 case GL_RENDER_MODE
:
5597 *params
= (GLint
) ctx
->RenderMode
;
5599 case GL_RESCALE_NORMAL
:
5600 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
5603 *params
= (GLint
) ctx
->Visual
.rgbMode
;
5605 case GL_SCISSOR_BOX
:
5606 params
[0] = (GLint
) ctx
->Scissor
.X
;
5607 params
[1] = (GLint
) ctx
->Scissor
.Y
;
5608 params
[2] = (GLint
) ctx
->Scissor
.Width
;
5609 params
[3] = (GLint
) ctx
->Scissor
.Height
;
5611 case GL_SCISSOR_TEST
:
5612 *params
= (GLint
) ctx
->Scissor
.Enabled
;
5614 case GL_SELECTION_BUFFER_SIZE
:
5615 *params
= (GLint
) ctx
->Select
.BufferSize
;
5617 case GL_SHADE_MODEL
:
5618 *params
= (GLint
) ctx
->Light
.ShadeModel
;
5620 case GL_SHARED_TEXTURE_PALETTE_EXT
:
5621 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
5623 case GL_STENCIL_BITS
:
5624 *params
= ctx
->Visual
.stencilBits
;
5626 case GL_STENCIL_CLEAR_VALUE
:
5627 *params
= (GLint
) ctx
->Stencil
.Clear
;
5629 case GL_STENCIL_FAIL
:
5630 *params
= (GLint
) ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
];
5632 case GL_STENCIL_FUNC
:
5633 *params
= (GLint
) ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
];
5635 case GL_STENCIL_PASS_DEPTH_FAIL
:
5636 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
];
5638 case GL_STENCIL_PASS_DEPTH_PASS
:
5639 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
];
5641 case GL_STENCIL_REF
:
5642 *params
= (GLint
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
5644 case GL_STENCIL_TEST
:
5645 *params
= (GLint
) ctx
->Stencil
.Enabled
;
5647 case GL_STENCIL_VALUE_MASK
:
5648 *params
= (GLint
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
5650 case GL_STENCIL_WRITEMASK
:
5651 *params
= (GLint
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
5654 *params
= (GLint
) ctx
->Visual
.stereoMode
;
5656 case GL_SUBPIXEL_BITS
:
5657 *params
= ctx
->Const
.SubPixelBits
;
5660 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
5663 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
5666 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
5668 case GL_TEXTURE_BINDING_1D
:
5669 *params
= textureUnit
->Current1D
->Name
;
5671 case GL_TEXTURE_BINDING_2D
:
5672 *params
= textureUnit
->Current2D
->Name
;
5674 case GL_TEXTURE_BINDING_3D
:
5675 *params
= textureUnit
->Current3D
->Name
;
5677 case GL_TEXTURE_ENV_COLOR
:
5678 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
5679 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
5680 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
5681 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
5683 case GL_TEXTURE_ENV_MODE
:
5684 *params
= (GLint
) textureUnit
->EnvMode
;
5686 case GL_TEXTURE_GEN_S
:
5687 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
5689 case GL_TEXTURE_GEN_T
:
5690 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
5692 case GL_TEXTURE_GEN_R
:
5693 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
5695 case GL_TEXTURE_GEN_Q
:
5696 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
5698 case GL_TEXTURE_MATRIX
:
5699 for (i
=0;i
<16;i
++) {
5700 params
[i
] = (GLint
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
5703 case GL_TEXTURE_STACK_DEPTH
:
5704 *params
= (GLint
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
5706 case GL_UNPACK_ALIGNMENT
:
5707 *params
= ctx
->Unpack
.Alignment
;
5709 case GL_UNPACK_LSB_FIRST
:
5710 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
5712 case GL_UNPACK_ROW_LENGTH
:
5713 *params
= ctx
->Unpack
.RowLength
;
5715 case GL_UNPACK_SKIP_PIXELS
:
5716 *params
= ctx
->Unpack
.SkipPixels
;
5718 case GL_UNPACK_SKIP_ROWS
:
5719 *params
= ctx
->Unpack
.SkipRows
;
5721 case GL_UNPACK_SWAP_BYTES
:
5722 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
5724 case GL_UNPACK_SKIP_IMAGES_EXT
:
5725 *params
= ctx
->Unpack
.SkipImages
;
5727 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
5728 *params
= ctx
->Unpack
.ImageHeight
;
5730 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
5731 *params
= ctx
->Unpack
.ClientStorage
;
5734 params
[0] = (GLint
) ctx
->Viewport
.X
;
5735 params
[1] = (GLint
) ctx
->Viewport
.Y
;
5736 params
[2] = (GLint
) ctx
->Viewport
.Width
;
5737 params
[3] = (GLint
) ctx
->Viewport
.Height
;
5740 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
5743 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
5745 case GL_VERTEX_ARRAY
:
5746 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
5748 case GL_VERTEX_ARRAY_SIZE
:
5749 *params
= ctx
->Array
.Vertex
.Size
;
5751 case GL_VERTEX_ARRAY_TYPE
:
5752 *params
= ctx
->Array
.Vertex
.Type
;
5754 case GL_VERTEX_ARRAY_STRIDE
:
5755 *params
= ctx
->Array
.Vertex
.Stride
;
5757 case GL_VERTEX_ARRAY_COUNT_EXT
:
5760 case GL_NORMAL_ARRAY
:
5761 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
5763 case GL_NORMAL_ARRAY_TYPE
:
5764 *params
= ctx
->Array
.Normal
.Type
;
5766 case GL_NORMAL_ARRAY_STRIDE
:
5767 *params
= ctx
->Array
.Normal
.Stride
;
5769 case GL_NORMAL_ARRAY_COUNT_EXT
:
5772 case GL_COLOR_ARRAY
:
5773 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
5775 case GL_COLOR_ARRAY_SIZE
:
5776 *params
= ctx
->Array
.Color
.Size
;
5778 case GL_COLOR_ARRAY_TYPE
:
5779 *params
= ctx
->Array
.Color
.Type
;
5781 case GL_COLOR_ARRAY_STRIDE
:
5782 *params
= ctx
->Array
.Color
.Stride
;
5784 case GL_COLOR_ARRAY_COUNT_EXT
:
5787 case GL_INDEX_ARRAY
:
5788 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
5790 case GL_INDEX_ARRAY_TYPE
:
5791 *params
= ctx
->Array
.Index
.Type
;
5793 case GL_INDEX_ARRAY_STRIDE
:
5794 *params
= ctx
->Array
.Index
.Stride
;
5796 case GL_INDEX_ARRAY_COUNT_EXT
:
5799 case GL_TEXTURE_COORD_ARRAY
:
5800 *params
= (GLint
) ctx
->Array
.TexCoord
[clientUnit
].Enabled
;
5802 case GL_TEXTURE_COORD_ARRAY_SIZE
:
5803 *params
= ctx
->Array
.TexCoord
[clientUnit
].Size
;
5805 case GL_TEXTURE_COORD_ARRAY_TYPE
:
5806 *params
= ctx
->Array
.TexCoord
[clientUnit
].Type
;
5808 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
5809 *params
= ctx
->Array
.TexCoord
[clientUnit
].Stride
;
5811 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
5814 case GL_EDGE_FLAG_ARRAY
:
5815 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
5817 case GL_EDGE_FLAG_ARRAY_STRIDE
:
5818 *params
= ctx
->Array
.EdgeFlag
.Stride
;
5820 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
5824 /* GL_ARB_multitexture */
5825 case GL_MAX_TEXTURE_UNITS_ARB
:
5826 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5827 *params
= MIN2(ctx
->Const
.MaxTextureImageUnits
,
5828 ctx
->Const
.MaxTextureCoordUnits
);
5830 case GL_ACTIVE_TEXTURE_ARB
:
5831 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5832 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
5834 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
5835 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5836 *params
= GL_TEXTURE0_ARB
+ clientUnit
;
5839 /* GL_ARB_texture_cube_map */
5840 case GL_TEXTURE_CUBE_MAP_ARB
:
5841 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5842 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
5844 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
5845 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5846 *params
= textureUnit
->CurrentCubeMap
->Name
;
5848 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
5849 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5850 *params
= (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
5853 /* GL_ARB_texture_compression */
5854 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
5855 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5856 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
5858 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
5859 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5860 *params
= (GLint
) _mesa_get_compressed_formats(ctx
, NULL
);
5862 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
5863 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5864 (void) _mesa_get_compressed_formats(ctx
, params
);
5867 /* GL_EXT_compiled_vertex_array */
5868 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
5869 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5870 *params
= ctx
->Array
.LockFirst
;
5872 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
5873 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5874 *params
= ctx
->Array
.LockCount
;
5877 /* GL_ARB_transpose_matrix */
5878 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
5882 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
5883 for (i
=0;i
<16;i
++) {
5884 params
[i
] = (GLint
) tm
[i
];
5888 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
5892 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
5893 for (i
=0;i
<16;i
++) {
5894 params
[i
] = (GLint
) tm
[i
];
5898 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
5902 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
5903 for (i
=0;i
<16;i
++) {
5904 params
[i
] = (GLint
) tm
[i
];
5908 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
5912 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
5913 for (i
=0;i
<16;i
++) {
5914 params
[i
] = (GLint
) tm
[i
];
5919 /* GL_HP_occlusion_test */
5920 case GL_OCCLUSION_TEST_HP
:
5921 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5922 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
5924 case GL_OCCLUSION_TEST_RESULT_HP
:
5925 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5926 if (ctx
->Depth
.OcclusionTest
)
5927 *params
= (GLint
) ctx
->OcclusionResult
;
5929 *params
= (GLint
) ctx
->OcclusionResultSaved
;
5930 /* reset flag now */
5931 ctx
->OcclusionResult
= GL_FALSE
;
5932 ctx
->OcclusionResultSaved
= GL_FALSE
;
5935 /* GL_SGIS_pixel_texture */
5936 case GL_PIXEL_TEXTURE_SGIS
:
5937 CHECK_EXTENSION_I(SGIS_pixel_texture
, pname
);
5938 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5941 /* GL_SGIX_pixel_texture */
5942 case GL_PIXEL_TEX_GEN_SGIX
:
5943 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5944 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5946 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
5947 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5948 *params
= (GLint
) pixel_texgen_mode(ctx
);
5951 /* GL_SGI_color_matrix (also in 1.2 imaging) */
5952 case GL_COLOR_MATRIX_SGI
:
5953 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5954 for (i
=0;i
<16;i
++) {
5955 params
[i
] = (GLint
) ctx
->ColorMatrixStack
.Top
->m
[i
];
5958 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5959 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5960 *params
= ctx
->ColorMatrixStack
.Depth
+ 1;
5962 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5963 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5964 *params
= MAX_COLOR_STACK_DEPTH
;
5966 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5967 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5968 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
5970 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5971 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5972 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
5974 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5975 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5976 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
5978 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5979 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5980 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
5982 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5983 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5984 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
5986 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5987 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5988 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
5990 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5991 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5992 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
5994 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5995 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5996 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
5999 /* GL_EXT_convolution (also in 1.2 imaging) */
6000 case GL_CONVOLUTION_1D_EXT
:
6001 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6002 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
6004 case GL_CONVOLUTION_2D
:
6005 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6006 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
6008 case GL_SEPARABLE_2D
:
6009 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6010 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
6012 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
6013 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6014 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
6016 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
6017 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6018 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
6020 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
6021 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6022 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
6024 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
6025 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6026 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
6028 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
6029 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6030 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
6032 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
6033 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6034 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
6036 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
6037 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6038 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
6040 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
6041 CHECK_EXTENSION_I(EXT_convolution
, pname
);
6042 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
6045 /* GL_EXT_histogram (also in 1.2 imaging) */
6047 CHECK_EXTENSION_I(EXT_histogram
, pname
);
6048 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
6051 CHECK_EXTENSION_I(EXT_histogram
, pname
);
6052 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
6055 /* GL_SGI_color_table (also in 1.2 imaging */
6056 case GL_COLOR_TABLE_SGI
:
6057 CHECK_EXTENSION_I(SGI_color_table
, pname
);
6058 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
6060 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
6061 CHECK_EXTENSION_I(SGI_color_table
, pname
);
6062 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
6064 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
6065 CHECK_EXTENSION_I(SGI_color_table
, pname
);
6066 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
6069 /* GL_SGI_texture_color_table */
6070 case GL_TEXTURE_COLOR_TABLE_SGI
:
6071 CHECK_EXTENSION_I(SGI_texture_color_table
, pname
);
6072 *params
= (GLint
) textureUnit
->ColorTableEnabled
;
6075 /* GL_EXT_secondary_color */
6076 case GL_COLOR_SUM_EXT
:
6077 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
6078 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
6080 case GL_CURRENT_SECONDARY_COLOR_EXT
:
6081 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
6082 FLUSH_CURRENT(ctx
, 0);
6083 params
[0] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]) );
6084 params
[1] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]) );
6085 params
[2] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]) );
6086 params
[3] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]) );
6088 case GL_SECONDARY_COLOR_ARRAY_EXT
:
6089 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
6090 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
6092 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
6093 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
6094 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
6096 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
6097 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
6098 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
6100 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
6101 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
6102 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Size
;
6105 /* GL_EXT_fog_coord */
6106 case GL_CURRENT_FOG_COORDINATE_EXT
:
6107 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
6108 FLUSH_CURRENT(ctx
, 0);
6109 *params
= (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
6111 case GL_FOG_COORDINATE_ARRAY_EXT
:
6112 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
6113 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
6115 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
6116 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
6117 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
6119 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
6120 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
6121 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
6123 case GL_FOG_COORDINATE_SOURCE_EXT
:
6124 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
6125 *params
= (GLint
) ctx
->Fog
.FogCoordinateSource
;
6128 /* GL_EXT_texture_lod_bias */
6129 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
6130 *params
= (GLint
) ctx
->Const
.MaxTextureLodBias
;
6133 /* GL_EXT_texture_filter_anisotropic */
6134 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
6135 CHECK_EXTENSION_I(EXT_texture_filter_anisotropic
, pname
);
6136 *params
= (GLint
) ctx
->Const
.MaxTextureMaxAnisotropy
;
6139 /* GL_ARB_multisample */
6140 case GL_MULTISAMPLE_ARB
:
6141 CHECK_EXTENSION_I(ARB_multisample
, pname
);
6142 *params
= (GLint
) ctx
->Multisample
.Enabled
;
6144 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
6145 CHECK_EXTENSION_I(ARB_multisample
, pname
);
6146 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToCoverage
;
6148 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
6149 CHECK_EXTENSION_I(ARB_multisample
, pname
);
6150 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToOne
;
6152 case GL_SAMPLE_COVERAGE_ARB
:
6153 CHECK_EXTENSION_I(ARB_multisample
, pname
);
6154 *params
= (GLint
) ctx
->Multisample
.SampleCoverage
;
6156 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
6157 CHECK_EXTENSION_I(ARB_multisample
, pname
);
6158 *params
= (GLint
) ctx
->Multisample
.SampleCoverageValue
;
6160 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
6161 CHECK_EXTENSION_I(ARB_multisample
, pname
);
6162 *params
= (GLint
) ctx
->Multisample
.SampleCoverageInvert
;
6164 case GL_SAMPLE_BUFFERS_ARB
:
6165 CHECK_EXTENSION_I(ARB_multisample
, pname
);
6166 *params
= 0; /* XXX fix someday */
6168 case GL_SAMPLES_ARB
:
6169 CHECK_EXTENSION_I(ARB_multisample
, pname
);
6170 *params
= 0; /* XXX fix someday */
6173 /* GL_IBM_rasterpos_clip */
6174 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
6175 CHECK_EXTENSION_I(IBM_rasterpos_clip
, pname
);
6176 *params
= (GLint
) ctx
->Transform
.RasterPositionUnclipped
;
6179 /* GL_NV_point_sprite */
6180 case GL_POINT_SPRITE_NV
:
6181 CHECK_EXTENSION2_I(NV_point_sprite
, ARB_point_sprite
, pname
);
6182 *params
= (GLint
) ctx
->Point
.PointSprite
;
6184 case GL_POINT_SPRITE_R_MODE_NV
:
6185 CHECK_EXTENSION_I(NV_point_sprite
, pname
);
6186 *params
= (GLint
) ctx
->Point
.SpriteRMode
;
6188 case GL_POINT_SPRITE_COORD_ORIGIN
:
6189 CHECK_EXTENSION_I(ARB_point_sprite
, pname
);
6190 *params
= (GLint
) ctx
->Point
.SpriteOrigin
;
6193 /* GL_SGIS_generate_mipmap */
6194 case GL_GENERATE_MIPMAP_HINT_SGIS
:
6195 CHECK_EXTENSION_I(SGIS_generate_mipmap
, pname
);
6196 *params
= (GLint
) ctx
->Hint
.GenerateMipmap
;
6199 #if FEATURE_NV_vertex_program
6200 case GL_VERTEX_PROGRAM_NV
:
6201 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6202 *params
= (GLint
) ctx
->VertexProgram
.Enabled
;
6204 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
6205 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6206 *params
= (GLint
) ctx
->VertexProgram
.PointSizeEnabled
;
6208 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
6209 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6210 *params
= (GLint
) ctx
->VertexProgram
.TwoSideEnabled
;
6212 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
6213 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6214 *params
= ctx
->Const
.MaxProgramMatrixStackDepth
;
6216 case GL_MAX_TRACK_MATRICES_NV
:
6217 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6218 *params
= ctx
->Const
.MaxProgramMatrices
;
6220 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
6221 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6222 *params
= ctx
->CurrentStack
->Depth
+ 1;
6224 case GL_CURRENT_MATRIX_NV
:
6225 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6226 for (i
= 0; i
< 16; i
++)
6227 params
[i
] = (GLint
) ctx
->CurrentStack
->Top
->m
[i
];
6229 case GL_VERTEX_PROGRAM_BINDING_NV
:
6230 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6231 if (ctx
->VertexProgram
.Current
)
6232 *params
= (GLint
) ctx
->VertexProgram
.Current
->Base
.Id
;
6236 case GL_PROGRAM_ERROR_POSITION_NV
:
6237 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6238 *params
= (GLint
) ctx
->Program
.ErrorPos
;
6240 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
6241 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
6242 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
6243 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
6244 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
6245 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
6246 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
6247 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
6248 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
6249 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
6250 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
6251 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
6252 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
6253 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
6254 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
6255 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
6256 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6258 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
6259 *params
= (GLint
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
6262 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
6263 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
6264 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
6265 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
6266 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
6267 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
6268 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
6269 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
6270 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
6271 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
6272 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
6273 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
6274 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
6275 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
6276 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
6277 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
6278 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6280 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
6281 *params
= (GLint
) ctx
->Eval
.Map1Attrib
[n
];
6284 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
6285 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
6286 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
6287 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
6288 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
6289 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
6290 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
6291 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
6292 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
6293 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
6294 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
6295 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
6296 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
6297 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
6298 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
6299 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
6300 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6302 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
6303 *params
= (GLint
) ctx
->Eval
.Map2Attrib
[n
];
6306 #endif /* FEATURE_NV_vertex_program */
6308 #if FEATURE_NV_fragment_program
6309 case GL_FRAGMENT_PROGRAM_NV
:
6310 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6311 *params
= (GLint
) ctx
->FragmentProgram
.Enabled
;
6313 case GL_MAX_TEXTURE_COORDS_NV
:
6314 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6315 *params
= (GLint
) ctx
->Const
.MaxTextureCoordUnits
;
6317 case GL_MAX_TEXTURE_IMAGE_UNITS_NV
:
6318 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6319 *params
= (GLint
) ctx
->Const
.MaxTextureImageUnits
;
6321 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
6322 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6323 if (ctx
->FragmentProgram
.Current
)
6324 *params
= (GLint
) ctx
->FragmentProgram
.Current
->Base
.Id
;
6328 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
6329 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6330 *params
= MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
6332 #endif /* FEATURE_NV_fragment_program */
6334 /* GL_NV_texture_rectangle */
6335 case GL_TEXTURE_RECTANGLE_NV
:
6336 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
6337 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
6339 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
6340 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
6341 *params
= (GLint
) textureUnit
->CurrentRect
->Name
;
6343 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
6344 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
6345 *params
= (GLint
) ctx
->Const
.MaxTextureRectSize
;
6348 /* GL_EXT_stencil_two_side */
6349 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
6350 CHECK_EXTENSION_I(EXT_stencil_two_side
, pname
);
6351 *params
= (GLint
) ctx
->Stencil
.TestTwoSide
;
6353 case GL_ACTIVE_STENCIL_FACE_EXT
:
6354 CHECK_EXTENSION_I(EXT_stencil_two_side
, pname
);
6355 *params
= (GLint
) (ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
6358 /* GL_NV_light_max_exponent */
6359 case GL_MAX_SHININESS_NV
:
6360 *params
= (GLint
) ctx
->Const
.MaxShininess
;
6362 case GL_MAX_SPOT_EXPONENT_NV
:
6363 *params
= (GLint
) ctx
->Const
.MaxSpotExponent
;
6366 #if FEATURE_ARB_vertex_buffer_object
6367 case GL_ARRAY_BUFFER_BINDING_ARB
:
6368 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6369 *params
= (GLint
) ctx
->Array
.ArrayBufferObj
->Name
;
6371 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
6372 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6373 *params
= (GLint
) ctx
->Array
.Vertex
.BufferObj
->Name
;
6375 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
6376 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6377 *params
= (GLint
) ctx
->Array
.Normal
.BufferObj
->Name
;
6379 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
6380 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6381 *params
= (GLint
) ctx
->Array
.Color
.BufferObj
->Name
;
6383 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
6384 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6385 *params
= (GLint
) ctx
->Array
.Index
.BufferObj
->Name
;
6387 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
6388 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6389 *params
= (GLint
) ctx
->Array
.TexCoord
[clientUnit
].BufferObj
->Name
;
6391 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
6392 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6393 *params
= (GLint
) ctx
->Array
.EdgeFlag
.BufferObj
->Name
;
6395 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
6396 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6397 *params
= (GLint
) ctx
->Array
.SecondaryColor
.BufferObj
->Name
;
6399 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
6400 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6401 *params
= (GLint
) ctx
->Array
.FogCoord
.BufferObj
->Name
;
6403 /*case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB: - not supported */
6404 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
6405 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6406 *params
= (GLint
) ctx
->Array
.ElementArrayBufferObj
->Name
;
6409 #if FEATURE_EXT_pixel_buffer_object
6410 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
6411 CHECK_EXTENSION_I(EXT_pixel_buffer_object
, pname
);
6412 *params
= (GLint
) ctx
->Pack
.BufferObj
->Name
;
6414 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
6415 CHECK_EXTENSION_I(EXT_pixel_buffer_object
, pname
);
6416 *params
= (GLint
) ctx
->Unpack
.BufferObj
->Name
;
6420 #if FEATURE_ARB_vertex_program
6421 /* GL_NV_vertex_program and GL_ARB_fragment_program define others */
6422 case GL_MAX_VERTEX_ATTRIBS_ARB
:
6423 CHECK_EXTENSION_I(ARB_vertex_program
, pname
);
6424 *params
= (GLint
) ctx
->Const
.MaxVertexProgramAttribs
;
6428 #if FEATURE_ARB_fragment_program
6429 case GL_FRAGMENT_PROGRAM_ARB
:
6430 CHECK_EXTENSION_I(ARB_fragment_program
, pname
);
6431 *params
= ctx
->FragmentProgram
.Enabled
;
6433 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
6434 CHECK_EXTENSION_I(ARB_fragment_program
, pname
);
6435 params
[0] = (GLint
) ctx
->CurrentStack
->Top
->m
[0];
6436 params
[1] = (GLint
) ctx
->CurrentStack
->Top
->m
[4];
6437 params
[2] = (GLint
) ctx
->CurrentStack
->Top
->m
[8];
6438 params
[3] = (GLint
) ctx
->CurrentStack
->Top
->m
[12];
6439 params
[4] = (GLint
) ctx
->CurrentStack
->Top
->m
[1];
6440 params
[5] = (GLint
) ctx
->CurrentStack
->Top
->m
[5];
6441 params
[6] = (GLint
) ctx
->CurrentStack
->Top
->m
[9];
6442 params
[7] = (GLint
) ctx
->CurrentStack
->Top
->m
[13];
6443 params
[8] = (GLint
) ctx
->CurrentStack
->Top
->m
[2];
6444 params
[9] = (GLint
) ctx
->CurrentStack
->Top
->m
[6];
6445 params
[10] = (GLint
) ctx
->CurrentStack
->Top
->m
[10];
6446 params
[11] = (GLint
) ctx
->CurrentStack
->Top
->m
[14];
6447 params
[12] = (GLint
) ctx
->CurrentStack
->Top
->m
[3];
6448 params
[13] = (GLint
) ctx
->CurrentStack
->Top
->m
[7];
6449 params
[14] = (GLint
) ctx
->CurrentStack
->Top
->m
[11];
6450 params
[15] = (GLint
) ctx
->CurrentStack
->Top
->m
[15];
6452 /* Remaining ARB_fragment_program queries alias with
6453 * the GL_NV_fragment_program queries.
6457 /* GL_EXT_depth_bounds_test */
6458 case GL_DEPTH_BOUNDS_TEST_EXT
:
6459 CHECK_EXTENSION_I(EXT_depth_bounds_test
, pname
);
6460 params
[0] = ctx
->Depth
.BoundsTest
;
6462 case GL_DEPTH_BOUNDS_EXT
:
6463 CHECK_EXTENSION_I(EXT_depth_bounds_test
, pname
);
6464 params
[0] = (GLint
) ctx
->Depth
.BoundsMin
;
6465 params
[1] = (GLint
) ctx
->Depth
.BoundsMax
;
6468 #if FEATURE_MESA_program_debug
6469 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA
:
6470 CHECK_EXTENSION_I(MESA_program_debug
, pname
);
6471 *params
= (GLint
) ctx
->FragmentProgram
.CallbackEnabled
;
6473 case GL_VERTEX_PROGRAM_CALLBACK_MESA
:
6474 CHECK_EXTENSION_I(MESA_program_debug
, pname
);
6475 *params
= (GLint
) ctx
->VertexProgram
.CallbackEnabled
;
6477 case GL_FRAGMENT_PROGRAM_POSITION_MESA
:
6478 CHECK_EXTENSION_I(MESA_program_debug
, pname
);
6479 *params
= (GLint
) ctx
->FragmentProgram
.CurrentPosition
;
6481 case GL_VERTEX_PROGRAM_POSITION_MESA
:
6482 CHECK_EXTENSION_I(MESA_program_debug
, pname
);
6483 *params
= (GLint
) ctx
->VertexProgram
.CurrentPosition
;
6487 case GL_MAX_DRAW_BUFFERS_ARB
:
6488 CHECK_EXTENSION_I(ARB_draw_buffers
, pname
);
6489 *params
= ctx
->Const
.MaxDrawBuffers
;
6491 case GL_DRAW_BUFFER0_ARB
:
6492 case GL_DRAW_BUFFER1_ARB
:
6493 case GL_DRAW_BUFFER2_ARB
:
6494 case GL_DRAW_BUFFER3_ARB
:
6495 case GL_DRAW_BUFFER4_ARB
:
6496 case GL_DRAW_BUFFER5_ARB
:
6497 case GL_DRAW_BUFFER6_ARB
:
6498 case GL_DRAW_BUFFER7_ARB
:
6499 case GL_DRAW_BUFFER8_ARB
:
6500 case GL_DRAW_BUFFER9_ARB
:
6501 case GL_DRAW_BUFFER10_ARB
:
6502 case GL_DRAW_BUFFER11_ARB
:
6503 case GL_DRAW_BUFFER12_ARB
:
6504 case GL_DRAW_BUFFER13_ARB
:
6505 case GL_DRAW_BUFFER14_ARB
:
6506 case GL_DRAW_BUFFER15_ARB
:
6507 CHECK_EXTENSION_I(ARB_draw_buffers
, pname
);
6509 GLuint i
= pname
- GL_DRAW_BUFFER0_ARB
;
6510 if (i
>= ctx
->Const
.MaxDrawBuffers
) {
6511 _mesa_error(ctx
, GL_INVALID_ENUM
,
6512 "glGetIntegerv(GL_DRAW_BUFFERx_ARB)");
6515 *params
= (GLint
) ctx
->Color
.DrawBuffer
[i
];
6519 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
6520 *params
= ctx
->Const
.ColorReadType
;
6522 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
6523 *params
= ctx
->Const
.ColorReadFormat
;
6527 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv(pname=0x%x)", pname
);
6533 * Get the address of a selected pointer.
6535 * \param pname array or buffer to be returned.
6536 * \param params will hold the pointer speficifed by \p pname.
6538 * \sa glGetPointerv().
6540 * Tries to get the specified pointer via dd_function_table::GetPointerv,
6541 * otherwise gets the specified pointer from the current context.
6544 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
6546 GET_CURRENT_CONTEXT(ctx
);
6547 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
6548 ASSERT_OUTSIDE_BEGIN_END(ctx
);
6553 if (MESA_VERBOSE
& VERBOSE_API
)
6554 _mesa_debug(ctx
, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname
));
6556 if (ctx
->Driver
.GetPointerv
6557 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
6561 case GL_VERTEX_ARRAY_POINTER
:
6562 *params
= (GLvoid
*) ctx
->Array
.Vertex
.Ptr
;
6564 case GL_NORMAL_ARRAY_POINTER
:
6565 *params
= (GLvoid
*) ctx
->Array
.Normal
.Ptr
;
6567 case GL_COLOR_ARRAY_POINTER
:
6568 *params
= (GLvoid
*) ctx
->Array
.Color
.Ptr
;
6570 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
6571 *params
= (GLvoid
*) ctx
->Array
.SecondaryColor
.Ptr
;
6573 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
6574 *params
= (GLvoid
*) ctx
->Array
.FogCoord
.Ptr
;
6576 case GL_INDEX_ARRAY_POINTER
:
6577 *params
= (GLvoid
*) ctx
->Array
.Index
.Ptr
;
6579 case GL_TEXTURE_COORD_ARRAY_POINTER
:
6580 *params
= (GLvoid
*) ctx
->Array
.TexCoord
[clientUnit
].Ptr
;
6582 case GL_EDGE_FLAG_ARRAY_POINTER
:
6583 *params
= (GLvoid
*) ctx
->Array
.EdgeFlag
.Ptr
;
6585 case GL_FEEDBACK_BUFFER_POINTER
:
6586 *params
= ctx
->Feedback
.Buffer
;
6588 case GL_SELECTION_BUFFER_POINTER
:
6589 *params
= ctx
->Select
.Buffer
;
6591 #if FEATURE_MESA_program_debug
6592 case GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA
:
6593 if (!ctx
->Extensions
.MESA_program_debug
) {
6594 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetPointerv");
6597 *params
= *(GLvoid
**) &ctx
->FragmentProgram
.Callback
;
6599 case GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA
:
6600 if (!ctx
->Extensions
.MESA_program_debug
) {
6601 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetPointerv");
6604 *params
= ctx
->FragmentProgram
.CallbackData
;
6606 case GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA
:
6607 if (!ctx
->Extensions
.MESA_program_debug
) {
6608 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetPointerv");
6611 *params
= *(GLvoid
**) &ctx
->VertexProgram
.Callback
;
6613 case GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA
:
6614 if (!ctx
->Extensions
.MESA_program_debug
) {
6615 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetPointerv");
6618 *params
= ctx
->VertexProgram
.CallbackData
;
6622 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
6629 * Get a string describing the current GL connection.
6631 * \param name name symbolic constant.
6633 * \sa glGetString().
6635 * Tries to get the string from dd_function_table::GetString, otherwise returns
6636 * the hardcoded strings.
6638 const GLubyte
* GLAPIENTRY
6639 _mesa_GetString( GLenum name
)
6641 GET_CURRENT_CONTEXT(ctx
);
6642 static const char *vendor
= "Brian Paul";
6643 static const char *renderer
= "Mesa";
6644 static const char *version_1_2
= "1.2 Mesa " MESA_VERSION_STRING
;
6645 static const char *version_1_3
= "1.3 Mesa " MESA_VERSION_STRING
;
6646 static const char *version_1_4
= "1.4 Mesa " MESA_VERSION_STRING
;
6647 static const char *version_1_5
= "1.5 Mesa " MESA_VERSION_STRING
;
6648 static const char *version_2_0
= "1.5 Mesa " MESA_VERSION_STRING
;/*XXX FIX*/
6650 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
6652 /* this is a required driver function */
6653 assert(ctx
->Driver
.GetString
);
6655 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
6661 return (const GLubyte
*) vendor
;
6663 return (const GLubyte
*) renderer
;
6665 if (ctx
->Extensions
.ARB_multisample
&&
6666 ctx
->Extensions
.ARB_multitexture
&&
6667 ctx
->Extensions
.ARB_texture_border_clamp
&&
6668 ctx
->Extensions
.ARB_texture_compression
&&
6669 ctx
->Extensions
.ARB_texture_cube_map
&&
6670 ctx
->Extensions
.EXT_texture_env_add
&&
6671 ctx
->Extensions
.ARB_texture_env_combine
&&
6672 ctx
->Extensions
.ARB_texture_env_dot3
) {
6673 if (ctx
->Extensions
.ARB_depth_texture
&&
6674 ctx
->Extensions
.ARB_shadow
&&
6675 ctx
->Extensions
.ARB_texture_env_crossbar
&&
6676 ctx
->Extensions
.ARB_texture_mirrored_repeat
&&
6677 ctx
->Extensions
.ARB_window_pos
&&
6678 ctx
->Extensions
.EXT_blend_color
&&
6679 ctx
->Extensions
.EXT_blend_func_separate
&&
6680 ctx
->Extensions
.EXT_blend_logic_op
&&
6681 ctx
->Extensions
.EXT_blend_minmax
&&
6682 ctx
->Extensions
.EXT_blend_subtract
&&
6683 ctx
->Extensions
.EXT_fog_coord
&&
6684 ctx
->Extensions
.EXT_multi_draw_arrays
&&
6685 ctx
->Extensions
.EXT_point_parameters
&& /*aka ARB*/
6686 ctx
->Extensions
.EXT_secondary_color
&&
6687 ctx
->Extensions
.EXT_stencil_wrap
&&
6688 ctx
->Extensions
.EXT_texture_lod_bias
&&
6689 ctx
->Extensions
.SGIS_generate_mipmap
) {
6690 if (ctx
->Extensions
.ARB_occlusion_query
&&
6691 ctx
->Extensions
.ARB_vertex_buffer_object
&&
6692 ctx
->Extensions
.EXT_shadow_funcs
) {
6693 if (ctx
->Extensions
.ARB_draw_buffers
&&
6694 ctx
->Extensions
.ARB_point_sprite
&&
6695 ctx
->Extensions
.ARB_texture_non_power_of_two
&&
6696 ctx
->Extensions
.EXT_stencil_two_side
) {
6697 return (const GLubyte
*) version_2_0
;
6700 return (const GLubyte
*) version_1_5
;
6704 return (const GLubyte
*) version_1_4
;
6708 return (const GLubyte
*) version_1_3
;
6712 return (const GLubyte
*) version_1_2
;
6715 if (!ctx
->Extensions
.String
)
6716 ctx
->Extensions
.String
= _mesa_make_extension_string(ctx
);
6717 return (const GLubyte
*) ctx
->Extensions
.String
;
6718 #if FEATURE_NV_fragment_program
6719 case GL_PROGRAM_ERROR_STRING_NV
:
6720 if (ctx
->Extensions
.NV_fragment_program
) {
6721 return (const GLubyte
*) ctx
->Program
.ErrorString
;
6726 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
6727 return (const GLubyte
*) 0;
6734 * Execute a glGetError() command.
6736 * \return error number.
6738 * Returns __GLcontextRec::ErrorValue.
6741 _mesa_GetError( void )
6743 GET_CURRENT_CONTEXT(ctx
);
6744 GLenum e
= ctx
->ErrorValue
;
6745 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
6747 if (MESA_VERBOSE
& VERBOSE_API
)
6748 _mesa_debug(ctx
, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e
));
6750 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;