3 * State query functions.
7 * Mesa 3-D graphics library
10 * Copyright (C) 1999-2003 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.
36 #include "extensions.h"
40 #include "texcompress.h"
42 #include "math/m_matrix.h"
45 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
46 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
47 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
50 /* Needed for an Amiga compiler */
51 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
52 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
54 /* all other compilers */
55 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
56 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
60 /* Check if named extension is enabled, if not generate error and return */
62 #define CHECK1(E1, str, PNAME) \
63 if (!ctx->Extensions.E1) { \
64 _mesa_error(ctx, GL_INVALID_VALUE, \
65 "glGet" str "v(0x%x)", (int) PNAME); \
69 #define CHECK2(E1, E2, str, PNAME) \
70 if (!ctx->Extensions.E1 && !ctx->Extensions.E2) { \
71 _mesa_error(ctx, GL_INVALID_VALUE, \
72 "glGet" str "v(0x%x)", (int) PNAME); \
76 #define CHECK_EXTENSION_B(EXTNAME, PNAME) \
77 CHECK1(EXTNAME, "Boolean", PNAME )
79 #define CHECK_EXTENSION_I(EXTNAME, PNAME) \
80 CHECK1(EXTNAME, "Integer", PNAME )
82 #define CHECK_EXTENSION_F(EXTNAME, PNAME) \
83 CHECK1(EXTNAME, "Float", PNAME )
85 #define CHECK_EXTENSION_D(EXTNAME, PNAME) \
86 CHECK1(EXTNAME, "Double", PNAME )
88 #define CHECK_EXTENSION2_B(EXT1, EXT2, PNAME) \
89 CHECK2(EXT1, EXT2, "Boolean", PNAME)
91 #define CHECK_EXTENSION2_I(EXT1, EXT2, PNAME) \
92 CHECK2(EXT1, EXT2, "Integer", PNAME)
94 #define CHECK_EXTENSION2_F(EXT1, EXT2, PNAME) \
95 CHECK2(EXT1, EXT2, "Float", PNAME)
97 #define CHECK_EXTENSION2_D(EXT1, EXT2, PNAME) \
98 CHECK2(EXT1, EXT2, "Double", PNAME)
103 pixel_texgen_mode(const GLcontext
*ctx
)
105 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
106 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
114 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
125 * Get the value(s) of a selected parameter.
127 * \param pname parameter to be returned.
128 * \param params will hold the value(s) of the speficifed parameter.
130 * \sa glGetBooleanv().
132 * Tries to get the specified parameter via dd_function_table::GetBooleanv,
133 * otherwise gets the specified parameter from the current context, converting
134 * it value into GLboolean.
137 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
139 GET_CURRENT_CONTEXT(ctx
);
141 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
142 const GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
143 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
144 ASSERT_OUTSIDE_BEGIN_END(ctx
);
149 if (MESA_VERBOSE
& VERBOSE_API
)
150 _mesa_debug(ctx
, "glGetBooleanv %s\n", _mesa_lookup_enum_by_nr(pname
));
152 if (!ctx
->_CurrentProgram
) {
153 /* We need this in order to get correct results for
154 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
156 FLUSH_VERTICES(ctx
, 0);
159 if (ctx
->Driver
.GetBooleanv
160 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
164 case GL_ACCUM_RED_BITS
:
165 *params
= INT_TO_BOOL(ctx
->Visual
.accumRedBits
);
167 case GL_ACCUM_GREEN_BITS
:
168 *params
= INT_TO_BOOL(ctx
->Visual
.accumGreenBits
);
170 case GL_ACCUM_BLUE_BITS
:
171 *params
= INT_TO_BOOL(ctx
->Visual
.accumBlueBits
);
173 case GL_ACCUM_ALPHA_BITS
:
174 *params
= INT_TO_BOOL(ctx
->Visual
.accumAlphaBits
);
176 case GL_ACCUM_CLEAR_VALUE
:
177 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
178 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
179 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
180 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
183 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
186 *params
= INT_TO_BOOL(ctx
->Visual
.alphaBits
);
189 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
192 *params
= ctx
->Color
.AlphaEnabled
;
194 case GL_ALPHA_TEST_FUNC
:
195 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
197 case GL_ALPHA_TEST_REF
:
198 *params
= ctx
->Color
.AlphaRef
? GL_TRUE
: GL_FALSE
;
200 case GL_ATTRIB_STACK_DEPTH
:
201 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
204 *params
= ctx
->Eval
.AutoNormal
;
207 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
210 *params
= ctx
->Color
.BlendEnabled
;
213 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
216 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
218 case GL_BLEND_SRC_RGB_EXT
:
219 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
221 case GL_BLEND_DST_RGB_EXT
:
222 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
224 case GL_BLEND_SRC_ALPHA_EXT
:
225 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
227 case GL_BLEND_DST_ALPHA_EXT
:
228 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
230 case GL_BLEND_EQUATION_EXT
:
231 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
233 case GL_BLEND_COLOR_EXT
:
234 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
235 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
236 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
237 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
240 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
243 *params
= INT_TO_BOOL( ctx
->Visual
.blueBits
);
246 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
248 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
249 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
257 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
262 case GL_COLOR_CLEAR_VALUE
:
263 params
[0] = ctx
->Color
.ClearColor
[0] ? GL_TRUE
: GL_FALSE
;
264 params
[1] = ctx
->Color
.ClearColor
[1] ? GL_TRUE
: GL_FALSE
;
265 params
[2] = ctx
->Color
.ClearColor
[2] ? GL_TRUE
: GL_FALSE
;
266 params
[3] = ctx
->Color
.ClearColor
[3] ? GL_TRUE
: GL_FALSE
;
268 case GL_COLOR_MATERIAL
:
269 *params
= ctx
->Light
.ColorMaterialEnabled
;
271 case GL_COLOR_MATERIAL_FACE
:
272 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
274 case GL_COLOR_MATERIAL_PARAMETER
:
275 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
277 case GL_COLOR_WRITEMASK
:
278 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
279 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
280 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
281 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
284 *params
= ctx
->Polygon
.CullFlag
;
286 case GL_CULL_FACE_MODE
:
287 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
289 case GL_CURRENT_COLOR
:
290 FLUSH_CURRENT(ctx
, 0);
291 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
292 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
293 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
294 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
296 case GL_CURRENT_INDEX
:
297 FLUSH_CURRENT(ctx
, 0);
298 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
300 case GL_CURRENT_NORMAL
:
301 FLUSH_CURRENT(ctx
, 0);
302 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
303 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
304 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
306 case GL_CURRENT_RASTER_COLOR
:
307 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
308 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
309 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
310 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
312 case GL_CURRENT_RASTER_DISTANCE
:
313 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
315 case GL_CURRENT_RASTER_INDEX
:
316 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
318 case GL_CURRENT_RASTER_POSITION
:
319 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
320 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
321 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
322 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
324 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
325 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][0]);
326 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][1]);
327 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][2]);
328 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterTexCoords
[texUnit
][3]);
330 case GL_CURRENT_RASTER_POSITION_VALID
:
331 *params
= ctx
->Current
.RasterPosValid
;
333 case GL_CURRENT_TEXTURE_COORDS
:
334 FLUSH_CURRENT(ctx
, 0);
335 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0]);
336 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1]);
337 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2]);
338 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3]);
341 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
344 *params
= INT_TO_BOOL(ctx
->Visual
.depthBits
);
346 case GL_DEPTH_CLEAR_VALUE
:
347 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
350 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
353 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
354 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
357 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
360 *params
= ctx
->Depth
.Test
;
362 case GL_DEPTH_WRITEMASK
:
363 *params
= ctx
->Depth
.Mask
;
366 *params
= ctx
->Color
.DitherFlag
;
368 case GL_DOUBLEBUFFER
:
369 *params
= ctx
->Visual
.doubleBufferMode
;
372 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
375 FLUSH_CURRENT(ctx
, 0);
376 *params
= ctx
->Current
.EdgeFlag
;
378 case GL_FEEDBACK_BUFFER_SIZE
:
379 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
381 case GL_FEEDBACK_BUFFER_TYPE
:
382 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
385 *params
= ctx
->Fog
.Enabled
;
388 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
389 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
390 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
391 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
394 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
397 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
400 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
403 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
406 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
409 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
412 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
415 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
418 *params
= INT_TO_BOOL( ctx
->Visual
.greenBits
);
421 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
424 *params
= INT_TO_BOOL( ctx
->Visual
.indexBits
);
426 case GL_INDEX_CLEAR_VALUE
:
427 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
430 *params
= ctx
->Visual
.rgbMode
? GL_FALSE
: GL_TRUE
;
432 case GL_INDEX_OFFSET
:
433 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
436 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
438 case GL_INDEX_WRITEMASK
:
439 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
449 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
452 *params
= ctx
->Light
.Enabled
;
454 case GL_LIGHT_MODEL_AMBIENT
:
455 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
456 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
457 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
458 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
460 case GL_LIGHT_MODEL_COLOR_CONTROL
:
461 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
463 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
464 *params
= ctx
->Light
.Model
.LocalViewer
;
466 case GL_LIGHT_MODEL_TWO_SIDE
:
467 *params
= ctx
->Light
.Model
.TwoSide
;
470 *params
= ctx
->Line
.SmoothFlag
;
472 case GL_LINE_SMOOTH_HINT
:
473 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
475 case GL_LINE_STIPPLE
:
476 *params
= ctx
->Line
.StippleFlag
;
478 case GL_LINE_STIPPLE_PATTERN
:
479 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
481 case GL_LINE_STIPPLE_REPEAT
:
482 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
485 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
487 case GL_LINE_WIDTH_GRANULARITY
:
488 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
490 case GL_LINE_WIDTH_RANGE
:
491 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
492 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
494 case GL_ALIASED_LINE_WIDTH_RANGE
:
495 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
496 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
499 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
502 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
505 if (!ctx
->CompileFlag
)
507 else if (ctx
->ExecuteFlag
)
508 *params
= ENUM_TO_BOOL(GL_COMPILE_AND_EXECUTE
);
510 *params
= ENUM_TO_BOOL(GL_COMPILE
);
512 case GL_INDEX_LOGIC_OP
:
513 *params
= ctx
->Color
.IndexLogicOpEnabled
;
515 case GL_COLOR_LOGIC_OP
:
516 *params
= ctx
->Color
.ColorLogicOpEnabled
;
518 case GL_LOGIC_OP_MODE
:
519 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
521 case GL_MAP1_COLOR_4
:
522 *params
= ctx
->Eval
.Map1Color4
;
524 case GL_MAP1_GRID_DOMAIN
:
525 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
526 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
528 case GL_MAP1_GRID_SEGMENTS
:
529 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
532 *params
= ctx
->Eval
.Map1Index
;
535 *params
= ctx
->Eval
.Map1Normal
;
537 case GL_MAP1_TEXTURE_COORD_1
:
538 *params
= ctx
->Eval
.Map1TextureCoord1
;
540 case GL_MAP1_TEXTURE_COORD_2
:
541 *params
= ctx
->Eval
.Map1TextureCoord2
;
543 case GL_MAP1_TEXTURE_COORD_3
:
544 *params
= ctx
->Eval
.Map1TextureCoord3
;
546 case GL_MAP1_TEXTURE_COORD_4
:
547 *params
= ctx
->Eval
.Map1TextureCoord4
;
549 case GL_MAP1_VERTEX_3
:
550 *params
= ctx
->Eval
.Map1Vertex3
;
552 case GL_MAP1_VERTEX_4
:
553 *params
= ctx
->Eval
.Map1Vertex4
;
555 case GL_MAP2_COLOR_4
:
556 *params
= ctx
->Eval
.Map2Color4
;
558 case GL_MAP2_GRID_DOMAIN
:
559 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
560 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
561 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
562 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
564 case GL_MAP2_GRID_SEGMENTS
:
565 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
566 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
569 *params
= ctx
->Eval
.Map2Index
;
572 *params
= ctx
->Eval
.Map2Normal
;
574 case GL_MAP2_TEXTURE_COORD_1
:
575 *params
= ctx
->Eval
.Map2TextureCoord1
;
577 case GL_MAP2_TEXTURE_COORD_2
:
578 *params
= ctx
->Eval
.Map2TextureCoord2
;
580 case GL_MAP2_TEXTURE_COORD_3
:
581 *params
= ctx
->Eval
.Map2TextureCoord3
;
583 case GL_MAP2_TEXTURE_COORD_4
:
584 *params
= ctx
->Eval
.Map2TextureCoord4
;
586 case GL_MAP2_VERTEX_3
:
587 *params
= ctx
->Eval
.Map2Vertex3
;
589 case GL_MAP2_VERTEX_4
:
590 *params
= ctx
->Eval
.Map2Vertex4
;
593 *params
= ctx
->Pixel
.MapColorFlag
;
596 *params
= ctx
->Pixel
.MapStencilFlag
;
599 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
601 case GL_MAX_ATTRIB_STACK_DEPTH
:
602 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
604 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
605 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
607 case GL_MAX_CLIP_PLANES
:
608 *params
= INT_TO_BOOL(ctx
->Const
.MaxClipPlanes
);
610 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
611 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
613 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
614 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
616 case GL_MAX_EVAL_ORDER
:
617 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
620 *params
= INT_TO_BOOL(ctx
->Const
.MaxLights
);
622 case GL_MAX_LIST_NESTING
:
623 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
625 case GL_MAX_MODELVIEW_STACK_DEPTH
:
626 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
628 case GL_MAX_NAME_STACK_DEPTH
:
629 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
631 case GL_MAX_PIXEL_MAP_TABLE
:
632 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
634 case GL_MAX_PROJECTION_STACK_DEPTH
:
635 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
637 case GL_MAX_TEXTURE_SIZE
:
638 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxTextureLevels
- 1));
640 case GL_MAX_3D_TEXTURE_SIZE
:
641 *params
= INT_TO_BOOL(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
643 case GL_MAX_TEXTURE_STACK_DEPTH
:
644 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
646 case GL_MAX_VIEWPORT_DIMS
:
647 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
648 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
650 case GL_MODELVIEW_MATRIX
:
652 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelviewMatrixStack
.Top
->m
[i
]);
655 case GL_MODELVIEW_STACK_DEPTH
:
656 *params
= INT_TO_BOOL(ctx
->ModelviewMatrixStack
.Depth
+ 1);
658 case GL_NAME_STACK_DEPTH
:
659 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
662 *params
= ctx
->Transform
.Normalize
;
664 case GL_PACK_ALIGNMENT
:
665 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
667 case GL_PACK_LSB_FIRST
:
668 *params
= ctx
->Pack
.LsbFirst
;
670 case GL_PACK_ROW_LENGTH
:
671 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
673 case GL_PACK_SKIP_PIXELS
:
674 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
676 case GL_PACK_SKIP_ROWS
:
677 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
679 case GL_PACK_SWAP_BYTES
:
680 *params
= ctx
->Pack
.SwapBytes
;
682 case GL_PACK_SKIP_IMAGES_EXT
:
683 *params
= ctx
->Pack
.SkipImages
;
685 case GL_PACK_IMAGE_HEIGHT_EXT
:
686 *params
= ctx
->Pack
.ImageHeight
;
688 case GL_PACK_INVERT_MESA
:
689 *params
= ctx
->Pack
.Invert
;
691 case GL_PERSPECTIVE_CORRECTION_HINT
:
692 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
694 case GL_PIXEL_MAP_A_TO_A_SIZE
:
695 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
697 case GL_PIXEL_MAP_B_TO_B_SIZE
:
698 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
700 case GL_PIXEL_MAP_G_TO_G_SIZE
:
701 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
703 case GL_PIXEL_MAP_I_TO_A_SIZE
:
704 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
706 case GL_PIXEL_MAP_I_TO_B_SIZE
:
707 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
709 case GL_PIXEL_MAP_I_TO_G_SIZE
:
710 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
712 case GL_PIXEL_MAP_I_TO_I_SIZE
:
713 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
715 case GL_PIXEL_MAP_I_TO_R_SIZE
:
716 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
718 case GL_PIXEL_MAP_R_TO_R_SIZE
:
719 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
721 case GL_PIXEL_MAP_S_TO_S_SIZE
:
722 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
725 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
727 case GL_POINT_SIZE_GRANULARITY
:
728 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
730 case GL_POINT_SIZE_RANGE
:
731 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
732 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
734 case GL_ALIASED_POINT_SIZE_RANGE
:
735 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
736 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
738 case GL_POINT_SMOOTH
:
739 *params
= ctx
->Point
.SmoothFlag
;
741 case GL_POINT_SMOOTH_HINT
:
742 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
744 case GL_POINT_SIZE_MIN_EXT
:
745 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
747 case GL_POINT_SIZE_MAX_EXT
:
748 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
750 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
751 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
753 case GL_DISTANCE_ATTENUATION_EXT
:
754 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
755 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
756 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
758 case GL_POLYGON_MODE
:
759 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
760 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
762 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
763 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
765 case GL_POLYGON_OFFSET_FACTOR
:
766 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
768 case GL_POLYGON_OFFSET_UNITS
:
769 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
771 case GL_POLYGON_SMOOTH
:
772 *params
= ctx
->Polygon
.SmoothFlag
;
774 case GL_POLYGON_SMOOTH_HINT
:
775 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
777 case GL_POLYGON_STIPPLE
:
778 *params
= ctx
->Polygon
.StippleFlag
;
780 case GL_PROJECTION_MATRIX
:
782 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrixStack
.Top
->m
[i
]);
785 case GL_PROJECTION_STACK_DEPTH
:
786 *params
= INT_TO_BOOL(ctx
->ProjectionMatrixStack
.Depth
+ 1);
789 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
792 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
795 *params
= INT_TO_BOOL( ctx
->Visual
.redBits
);
798 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
801 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
803 case GL_RESCALE_NORMAL
:
804 *params
= ctx
->Transform
.RescaleNormals
;
807 *params
= ctx
->Visual
.rgbMode
;
810 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
811 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
812 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
813 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
815 case GL_SCISSOR_TEST
:
816 *params
= ctx
->Scissor
.Enabled
;
818 case GL_SELECTION_BUFFER_SIZE
:
819 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
822 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
824 case GL_SHARED_TEXTURE_PALETTE_EXT
:
825 *params
= ctx
->Texture
.SharedPalette
;
827 case GL_STENCIL_BITS
:
828 *params
= INT_TO_BOOL(ctx
->Visual
.stencilBits
);
830 case GL_STENCIL_CLEAR_VALUE
:
831 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
833 case GL_STENCIL_FAIL
:
834 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
836 case GL_STENCIL_FUNC
:
837 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
839 case GL_STENCIL_PASS_DEPTH_FAIL
:
840 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
842 case GL_STENCIL_PASS_DEPTH_PASS
:
843 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
846 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
848 case GL_STENCIL_TEST
:
849 *params
= ctx
->Stencil
.Enabled
;
851 case GL_STENCIL_VALUE_MASK
:
852 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
854 case GL_STENCIL_WRITEMASK
:
855 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
858 *params
= ctx
->Visual
.stereoMode
;
860 case GL_SUBPIXEL_BITS
:
861 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
864 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
867 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
870 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
872 case GL_TEXTURE_BINDING_1D
:
873 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
875 case GL_TEXTURE_BINDING_2D
:
876 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
878 case GL_TEXTURE_BINDING_3D
:
879 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
881 case GL_TEXTURE_ENV_COLOR
:
883 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
884 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
885 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
886 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
889 case GL_TEXTURE_ENV_MODE
:
890 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
892 case GL_TEXTURE_GEN_S
:
893 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
895 case GL_TEXTURE_GEN_T
:
896 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
898 case GL_TEXTURE_GEN_R
:
899 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
901 case GL_TEXTURE_GEN_Q
:
902 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
904 case GL_TEXTURE_MATRIX
:
907 FLOAT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
]);
910 case GL_TEXTURE_STACK_DEPTH
:
911 *params
= INT_TO_BOOL(ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
913 case GL_UNPACK_ALIGNMENT
:
914 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
916 case GL_UNPACK_LSB_FIRST
:
917 *params
= ctx
->Unpack
.LsbFirst
;
919 case GL_UNPACK_ROW_LENGTH
:
920 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
922 case GL_UNPACK_SKIP_PIXELS
:
923 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
925 case GL_UNPACK_SKIP_ROWS
:
926 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
928 case GL_UNPACK_SWAP_BYTES
:
929 *params
= ctx
->Unpack
.SwapBytes
;
931 case GL_UNPACK_SKIP_IMAGES_EXT
:
932 *params
= ctx
->Unpack
.SkipImages
;
934 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
935 *params
= ctx
->Unpack
.ImageHeight
;
937 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
938 *params
= ctx
->Unpack
.ClientStorage
;
941 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
942 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
943 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
944 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
947 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
950 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
952 case GL_VERTEX_ARRAY
:
953 *params
= ctx
->Array
.Vertex
.Enabled
;
955 case GL_VERTEX_ARRAY_SIZE
:
956 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
958 case GL_VERTEX_ARRAY_TYPE
:
959 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
961 case GL_VERTEX_ARRAY_STRIDE
:
962 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
964 case GL_VERTEX_ARRAY_COUNT_EXT
:
965 *params
= INT_TO_BOOL(0);
967 case GL_NORMAL_ARRAY
:
968 *params
= ctx
->Array
.Normal
.Enabled
;
970 case GL_NORMAL_ARRAY_TYPE
:
971 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
973 case GL_NORMAL_ARRAY_STRIDE
:
974 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
976 case GL_NORMAL_ARRAY_COUNT_EXT
:
977 *params
= INT_TO_BOOL(0);
980 *params
= ctx
->Array
.Color
.Enabled
;
982 case GL_COLOR_ARRAY_SIZE
:
983 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
985 case GL_COLOR_ARRAY_TYPE
:
986 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
988 case GL_COLOR_ARRAY_STRIDE
:
989 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
991 case GL_COLOR_ARRAY_COUNT_EXT
:
992 *params
= INT_TO_BOOL(0);
995 *params
= ctx
->Array
.Index
.Enabled
;
997 case GL_INDEX_ARRAY_TYPE
:
998 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
1000 case GL_INDEX_ARRAY_STRIDE
:
1001 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
1003 case GL_INDEX_ARRAY_COUNT_EXT
:
1004 *params
= INT_TO_BOOL(0);
1006 case GL_TEXTURE_COORD_ARRAY
:
1007 *params
= ctx
->Array
.TexCoord
[clientUnit
].Enabled
;
1009 case GL_TEXTURE_COORD_ARRAY_SIZE
:
1010 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[clientUnit
].Size
);
1012 case GL_TEXTURE_COORD_ARRAY_TYPE
:
1013 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[clientUnit
].Type
);
1015 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
1016 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[clientUnit
].Stride
);
1018 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
1019 *params
= INT_TO_BOOL(0);
1021 case GL_EDGE_FLAG_ARRAY
:
1022 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
1024 case GL_EDGE_FLAG_ARRAY_STRIDE
:
1025 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
1027 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1028 *params
= INT_TO_BOOL(0);
1031 /* GL_ARB_multitexture */
1032 case GL_MAX_TEXTURE_UNITS_ARB
:
1033 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1034 *params
= INT_TO_BOOL(MIN2(ctx
->Const
.MaxTextureImageUnits
,
1035 ctx
->Const
.MaxTextureCoordUnits
));
1037 case GL_ACTIVE_TEXTURE_ARB
:
1038 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1039 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1041 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1042 CHECK_EXTENSION_B(ARB_multitexture
, pname
);
1043 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ clientUnit
);
1046 /* GL_ARB_texture_cube_map */
1047 case GL_TEXTURE_CUBE_MAP_ARB
:
1048 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1049 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1051 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1052 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1053 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
1055 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1056 CHECK_EXTENSION_B(ARB_texture_cube_map
, pname
);
1057 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
1060 /* GL_ARB_texture_compression */
1061 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1062 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1063 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1065 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1066 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1067 *params
= INT_TO_BOOL(_mesa_get_compressed_formats(ctx
, NULL
));
1069 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1070 CHECK_EXTENSION_B(ARB_texture_compression
, pname
);
1074 n
= _mesa_get_compressed_formats(ctx
, formats
);
1075 for (i
= 0; i
< n
; i
++)
1076 params
[i
] = INT_TO_BOOL(formats
[i
]);
1080 /* GL_EXT_compiled_vertex_array */
1081 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1082 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1084 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1085 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1088 /* GL_ARB_transpose_matrix */
1089 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1093 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
1094 for (i
=0;i
<16;i
++) {
1095 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1099 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1103 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
1104 for (i
=0;i
<16;i
++) {
1105 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1109 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1113 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
1114 for (i
=0;i
<16;i
++) {
1115 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1119 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1123 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
1124 for (i
=0;i
<16;i
++) {
1125 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1130 /* GL_HP_occlusion_test */
1131 case GL_OCCLUSION_TEST_HP
:
1132 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1133 *params
= ctx
->Depth
.OcclusionTest
;
1135 case GL_OCCLUSION_TEST_RESULT_HP
:
1136 CHECK_EXTENSION_B(HP_occlusion_test
, pname
);
1137 if (ctx
->Depth
.OcclusionTest
)
1138 *params
= ctx
->OcclusionResult
;
1140 *params
= ctx
->OcclusionResultSaved
;
1141 /* reset flag now */
1142 ctx
->OcclusionResult
= GL_FALSE
;
1143 ctx
->OcclusionResultSaved
= GL_FALSE
;
1146 /* GL_SGIS_pixel_texture */
1147 case GL_PIXEL_TEXTURE_SGIS
:
1148 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1151 /* GL_SGIX_pixel_texture */
1152 case GL_PIXEL_TEX_GEN_SGIX
:
1153 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1155 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1156 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1159 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1160 case GL_COLOR_MATRIX_SGI
:
1161 for (i
=0;i
<16;i
++) {
1162 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrixStack
.Top
->m
[i
]);
1165 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1166 *params
= INT_TO_BOOL(ctx
->ColorMatrixStack
.Depth
+ 1);
1168 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1169 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1171 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1172 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1174 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1175 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1177 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1178 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1180 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1181 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1183 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1184 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1186 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1187 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1189 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1190 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1192 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1193 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1196 /* GL_EXT_convolution (also in 1.2 imaging) */
1197 case GL_CONVOLUTION_1D_EXT
:
1198 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1199 *params
= ctx
->Pixel
.Convolution1DEnabled
;
1201 case GL_CONVOLUTION_2D
:
1202 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1203 *params
= ctx
->Pixel
.Convolution2DEnabled
;
1205 case GL_SEPARABLE_2D
:
1206 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1207 *params
= ctx
->Pixel
.Separable2DEnabled
;
1209 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1210 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1211 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1213 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1214 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1215 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1217 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1218 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1219 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1221 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1222 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1223 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1225 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1226 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1227 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1229 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1230 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1231 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1233 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1234 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1235 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1237 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1238 CHECK_EXTENSION_B(EXT_convolution
, pname
);
1239 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1242 /* GL_EXT_histogram (also in 1.2 imaging) */
1244 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1245 *params
= ctx
->Pixel
.HistogramEnabled
;
1248 CHECK_EXTENSION_B(EXT_histogram
, pname
);
1249 *params
= ctx
->Pixel
.MinMaxEnabled
;
1252 /* GL_SGI_color_table (also in 1.2 imaging */
1253 case GL_COLOR_TABLE_SGI
:
1254 *params
= ctx
->Pixel
.ColorTableEnabled
;
1256 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1257 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1259 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1260 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1263 /* GL_SGI_texture_color_table */
1264 case GL_TEXTURE_COLOR_TABLE_SGI
:
1265 CHECK_EXTENSION_B(SGI_texture_color_table
, pname
);
1266 *params
= textureUnit
->ColorTableEnabled
;
1269 /* GL_EXT_secondary_color */
1270 case GL_COLOR_SUM_EXT
:
1271 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1272 *params
= ctx
->Fog
.ColorSumEnabled
;
1274 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1275 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1276 FLUSH_CURRENT(ctx
, 0);
1277 params
[0] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1278 params
[1] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1279 params
[2] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1280 params
[3] = INT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
1282 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1283 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1284 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1286 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1287 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1288 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1290 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1291 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1292 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1294 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1295 CHECK_EXTENSION_B(EXT_secondary_color
, pname
);
1296 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Size
);
1299 /* GL_EXT_fog_coord */
1300 case GL_CURRENT_FOG_COORDINATE_EXT
:
1301 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1302 FLUSH_CURRENT(ctx
, 0);
1303 *params
= FLOAT_TO_BOOL(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1305 case GL_FOG_COORDINATE_ARRAY_EXT
:
1306 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1307 *params
= ctx
->Array
.FogCoord
.Enabled
;
1309 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1310 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1311 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1313 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1314 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1315 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1317 case GL_FOG_COORDINATE_SOURCE_EXT
:
1318 CHECK_EXTENSION_B(EXT_fog_coord
, pname
);
1319 *params
= ENUM_TO_BOOL(ctx
->Fog
.FogCoordinateSource
);
1322 /* GL_EXT_texture_lod_bias */
1323 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1324 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureLodBias
);
1327 /* GL_EXT_texture_filter_anisotropic */
1328 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1329 CHECK_EXTENSION_B(EXT_texture_filter_anisotropic
, pname
);
1330 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureMaxAnisotropy
);
1333 /* GL_ARB_multisample */
1334 case GL_MULTISAMPLE_ARB
:
1335 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1336 *params
= ctx
->Multisample
.Enabled
;
1338 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1339 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1340 *params
= ctx
->Multisample
.SampleAlphaToCoverage
;
1342 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1343 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1344 *params
= ctx
->Multisample
.SampleAlphaToOne
;
1346 case GL_SAMPLE_COVERAGE_ARB
:
1347 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1348 *params
= ctx
->Multisample
.SampleCoverage
;
1350 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1351 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1352 *params
= FLOAT_TO_BOOL(ctx
->Multisample
.SampleCoverageValue
);
1354 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1355 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1356 *params
= ctx
->Multisample
.SampleCoverageInvert
;
1358 case GL_SAMPLE_BUFFERS_ARB
:
1359 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1360 *params
= 0; /* XXX fix someday */
1362 case GL_SAMPLES_ARB
:
1363 CHECK_EXTENSION_B(ARB_multisample
, pname
);
1364 *params
= 0; /* XXX fix someday */
1367 /* GL_IBM_rasterpos_clip */
1368 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1369 CHECK_EXTENSION_B(IBM_rasterpos_clip
, pname
);
1370 *params
= ctx
->Transform
.RasterPositionUnclipped
;
1373 /* GL_NV_point_sprite */
1374 case GL_POINT_SPRITE_NV
:
1375 CHECK_EXTENSION2_B(NV_point_sprite
, ARB_point_sprite
, pname
);
1376 *params
= ctx
->Point
.PointSprite
;
1378 case GL_POINT_SPRITE_R_MODE_NV
:
1379 CHECK_EXTENSION_B(NV_point_sprite
, pname
);
1380 *params
= ENUM_TO_BOOL(ctx
->Point
.SpriteRMode
);
1383 /* GL_SGIS_generate_mipmap */
1384 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1385 CHECK_EXTENSION_B(SGIS_generate_mipmap
, pname
);
1386 *params
= ENUM_TO_BOOL(ctx
->Hint
.GenerateMipmap
);
1389 #if FEATURE_NV_vertex_program
1390 case GL_VERTEX_PROGRAM_NV
:
1391 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1392 *params
= ctx
->VertexProgram
.Enabled
;
1394 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
1395 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1396 *params
= ctx
->VertexProgram
.PointSizeEnabled
;
1398 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
1399 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1400 *params
= ctx
->VertexProgram
.TwoSideEnabled
;
1402 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
1403 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1404 *params
= (ctx
->Const
.MaxProgramMatrixStackDepth
> 0) ? GL_TRUE
: GL_FALSE
;
1406 case GL_MAX_TRACK_MATRICES_NV
:
1407 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1408 *params
= (ctx
->Const
.MaxProgramMatrices
> 0) ? GL_TRUE
: GL_FALSE
;
1410 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
1411 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1414 case GL_CURRENT_MATRIX_NV
:
1415 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1416 for (i
= 0; i
< 16; i
++)
1417 params
[i
] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[i
]);
1419 case GL_VERTEX_PROGRAM_BINDING_NV
:
1420 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1421 if (ctx
->VertexProgram
.Current
&&
1422 ctx
->VertexProgram
.Current
->Base
.Id
!= 0)
1427 case GL_PROGRAM_ERROR_POSITION_NV
:
1428 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1429 *params
= (ctx
->Program
.ErrorPos
!= 0) ? GL_TRUE
: GL_FALSE
;
1431 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1432 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1433 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1434 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1435 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1436 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1437 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1438 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1439 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1440 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1441 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1442 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1443 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1444 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1445 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1446 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1447 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1449 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
1450 *params
= ctx
->Array
.VertexAttrib
[n
].Enabled
;
1453 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1454 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1455 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1456 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1457 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1458 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1459 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1460 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1461 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1462 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1463 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1464 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1465 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1466 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1467 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1468 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1469 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1471 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
1472 *params
= ctx
->Eval
.Map1Attrib
[n
];
1475 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
1476 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
1477 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
1478 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
1479 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
1480 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
1481 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
1482 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
1483 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
1484 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
1485 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
1486 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
1487 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
1488 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
1489 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
1490 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
1491 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
1493 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
1494 *params
= ctx
->Eval
.Map2Attrib
[n
];
1497 #endif /* FEATURE_NV_vertex_program */
1499 #if FEATURE_NV_fragment_program
1500 case GL_FRAGMENT_PROGRAM_NV
:
1501 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1502 *params
= ctx
->FragmentProgram
.Enabled
;
1504 case GL_MAX_TEXTURE_COORDS_NV
:
1505 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1506 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureCoordUnits
);
1508 case GL_MAX_TEXTURE_IMAGE_UNITS_NV
:
1509 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1510 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureImageUnits
);
1512 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
1513 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1514 if (ctx
->VertexProgram
.Current
&&
1515 ctx
->VertexProgram
.Current
->Base
.Id
!= 0)
1520 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
1521 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
1522 *params
= MAX_NV_FRAGMENT_PROGRAM_PARAMS
? GL_TRUE
: GL_FALSE
;
1524 #endif /* FEATURE_NV_fragment_program */
1526 /* GL_NV_texture_rectangle */
1527 case GL_TEXTURE_RECTANGLE_NV
:
1528 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1529 *params
= _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1531 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1532 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1533 *params
= INT_TO_BOOL(textureUnit
->CurrentRect
->Name
);
1535 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1536 CHECK_EXTENSION_B(NV_texture_rectangle
, pname
);
1537 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureRectSize
);
1540 /* GL_EXT_stencil_two_side */
1541 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
1542 CHECK_EXTENSION_B(EXT_stencil_two_side
, pname
);
1543 *params
= ctx
->Stencil
.TestTwoSide
;
1545 case GL_ACTIVE_STENCIL_FACE_EXT
:
1546 CHECK_EXTENSION_B(EXT_stencil_two_side
, pname
);
1547 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
1550 /* GL_NV_light_max_exponent */
1551 case GL_MAX_SHININESS_NV
:
1552 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxShininess
);
1554 case GL_MAX_SPOT_EXPONENT_NV
:
1555 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxSpotExponent
);
1558 #if FEATURE_ARB_vertex_buffer_object
1559 case GL_ARRAY_BUFFER_BINDING_ARB
:
1560 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1561 *params
= INT_TO_BOOL(ctx
->Array
.ArrayBufferObj
->Name
);
1563 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
1564 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1565 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.BufferObj
->Name
);
1567 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
1568 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1569 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.BufferObj
->Name
);
1571 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1572 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1573 *params
= INT_TO_BOOL(ctx
->Array
.Color
.BufferObj
->Name
);
1575 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
1576 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1577 *params
= INT_TO_BOOL(ctx
->Array
.Index
.BufferObj
->Name
);
1579 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
1580 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1581 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[clientUnit
].BufferObj
->Name
);
1583 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
1584 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1585 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.BufferObj
->Name
);
1587 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1588 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1589 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.BufferObj
->Name
);
1591 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
1592 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1593 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.BufferObj
->Name
);
1595 /*case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB: - not supported */
1596 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
1597 CHECK_EXTENSION_B(ARB_vertex_buffer_object
, pname
);
1598 *params
= INT_TO_BOOL(ctx
->Array
.ElementArrayBufferObj
->Name
);
1602 #if FEATURE_ARB_fragment_program
1603 case GL_FRAGMENT_PROGRAM_ARB
:
1604 CHECK_EXTENSION_B(ARB_fragment_program
, pname
);
1605 *params
= ctx
->FragmentProgram
.Enabled
;
1607 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
1608 CHECK_EXTENSION_B(ARB_fragment_program
, pname
);
1609 params
[0] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[0]);
1610 params
[1] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[4]);
1611 params
[2] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[8]);
1612 params
[3] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[12]);
1613 params
[4] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[1]);
1614 params
[5] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[5]);
1615 params
[6] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[9]);
1616 params
[7] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[13]);
1617 params
[8] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[2]);
1618 params
[9] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[6]);
1619 params
[10] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[10]);
1620 params
[11] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[14]);
1621 params
[12] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[3]);
1622 params
[13] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[7]);
1623 params
[14] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[11]);
1624 params
[15] = FLOAT_TO_BOOL(ctx
->CurrentStack
->Top
->m
[15]);
1626 /* Remaining ARB_fragment_program queries alias with
1627 * the GL_NV_fragment_program queries.
1631 /* GL_EXT_depth_bounds_test */
1632 case GL_DEPTH_BOUNDS_TEST_EXT
:
1633 CHECK_EXTENSION_B(EXT_depth_bounds_test
, pname
);
1634 params
[0] = ctx
->Depth
.BoundsTest
;
1636 case GL_DEPTH_BOUNDS_EXT
:
1637 CHECK_EXTENSION_B(EXT_depth_bounds_test
, pname
);
1638 params
[0] = FLOAT_TO_BOOL(ctx
->Depth
.BoundsMin
);
1639 params
[1] = FLOAT_TO_BOOL(ctx
->Depth
.BoundsMax
);
1642 #if FEATURE_MESA_program_debug
1643 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA
:
1644 CHECK_EXTENSION_B(MESA_program_debug
, pname
);
1645 *params
= ctx
->FragmentProgram
.CallbackEnabled
;
1647 case GL_VERTEX_PROGRAM_CALLBACK_MESA
:
1648 CHECK_EXTENSION_B(MESA_program_debug
, pname
);
1649 *params
= ctx
->VertexProgram
.CallbackEnabled
;
1651 case GL_FRAGMENT_PROGRAM_POSITION_MESA
:
1652 CHECK_EXTENSION_B(MESA_program_debug
, pname
);
1653 *params
= INT_TO_BOOL(ctx
->FragmentProgram
.CurrentPosition
);
1655 case GL_VERTEX_PROGRAM_POSITION_MESA
:
1656 CHECK_EXTENSION_B(MESA_program_debug
, pname
);
1657 *params
= INT_TO_BOOL(ctx
->VertexProgram
.CurrentPosition
);
1662 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv(pname=0x%x)", pname
);
1668 * Get the value(s) of a selected parameter.
1670 * \param pname parameter to be returned.
1671 * \param params will hold the value(s) of the speficifed parameter.
1673 * \sa glGetDoublev().
1675 * Tries to get the specified parameter via dd_function_table::GetDoublev,
1676 * otherwise gets the specified parameter from the current context, converting
1677 * it value into GLdouble.
1680 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1682 GET_CURRENT_CONTEXT(ctx
);
1684 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
1685 const GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1686 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1687 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1692 if (MESA_VERBOSE
& VERBOSE_API
)
1693 _mesa_debug(ctx
, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname
));
1695 if (!ctx
->_CurrentProgram
) {
1696 /* We need this in order to get correct results for
1697 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
1699 FLUSH_VERTICES(ctx
, 0);
1702 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1706 case GL_ACCUM_RED_BITS
:
1707 *params
= (GLdouble
) ctx
->Visual
.accumRedBits
;
1709 case GL_ACCUM_GREEN_BITS
:
1710 *params
= (GLdouble
) ctx
->Visual
.accumGreenBits
;
1712 case GL_ACCUM_BLUE_BITS
:
1713 *params
= (GLdouble
) ctx
->Visual
.accumBlueBits
;
1715 case GL_ACCUM_ALPHA_BITS
:
1716 *params
= (GLdouble
) ctx
->Visual
.accumAlphaBits
;
1718 case GL_ACCUM_CLEAR_VALUE
:
1719 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1720 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1721 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1722 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1725 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1728 *params
= (GLdouble
) ctx
->Visual
.alphaBits
;
1730 case GL_ALPHA_SCALE
:
1731 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1734 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1736 case GL_ALPHA_TEST_FUNC
:
1737 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1739 case GL_ALPHA_TEST_REF
:
1740 *params
= (GLdouble
) ctx
->Color
.AlphaRef
;
1742 case GL_ATTRIB_STACK_DEPTH
:
1743 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1745 case GL_AUTO_NORMAL
:
1746 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1748 case GL_AUX_BUFFERS
:
1749 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1752 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1755 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1758 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1760 case GL_BLEND_SRC_RGB_EXT
:
1761 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1763 case GL_BLEND_DST_RGB_EXT
:
1764 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1766 case GL_BLEND_SRC_ALPHA_EXT
:
1767 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1769 case GL_BLEND_DST_ALPHA_EXT
:
1770 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1772 case GL_BLEND_EQUATION_EXT
:
1773 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1775 case GL_BLEND_COLOR_EXT
:
1776 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1777 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1778 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1779 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1782 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1785 *params
= (GLdouble
) ctx
->Visual
.blueBits
;
1788 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1790 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1791 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1793 case GL_CLIP_PLANE0
:
1794 case GL_CLIP_PLANE1
:
1795 case GL_CLIP_PLANE2
:
1796 case GL_CLIP_PLANE3
:
1797 case GL_CLIP_PLANE4
:
1798 case GL_CLIP_PLANE5
:
1799 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
1804 case GL_COLOR_CLEAR_VALUE
:
1805 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1806 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1807 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1808 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1810 case GL_COLOR_MATERIAL
:
1811 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1813 case GL_COLOR_MATERIAL_FACE
:
1814 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1816 case GL_COLOR_MATERIAL_PARAMETER
:
1817 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1819 case GL_COLOR_WRITEMASK
:
1820 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1821 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1822 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1823 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1826 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1828 case GL_CULL_FACE_MODE
:
1829 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1831 case GL_CURRENT_COLOR
:
1832 FLUSH_CURRENT(ctx
, 0);
1833 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
1834 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
1835 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
1836 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
1838 case GL_CURRENT_INDEX
:
1839 FLUSH_CURRENT(ctx
, 0);
1840 *params
= (GLdouble
) ctx
->Current
.Index
;
1842 case GL_CURRENT_NORMAL
:
1843 FLUSH_CURRENT(ctx
, 0);
1844 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
1845 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
1846 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
1848 case GL_CURRENT_RASTER_COLOR
:
1849 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1850 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1851 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1852 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1854 case GL_CURRENT_RASTER_DISTANCE
:
1855 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1857 case GL_CURRENT_RASTER_INDEX
:
1858 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1860 case GL_CURRENT_RASTER_POSITION
:
1861 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1862 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1863 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1864 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1866 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1867 params
[0] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
1868 params
[1] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
1869 params
[2] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
1870 params
[3] = (GLdouble
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
1872 case GL_CURRENT_RASTER_POSITION_VALID
:
1873 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1875 case GL_CURRENT_TEXTURE_COORDS
:
1876 FLUSH_CURRENT(ctx
, 0);
1877 params
[0] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
1878 params
[1] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
1879 params
[2] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
1880 params
[3] = (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
1883 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1886 *params
= (GLdouble
) ctx
->Visual
.depthBits
;
1888 case GL_DEPTH_CLEAR_VALUE
:
1889 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1892 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1894 case GL_DEPTH_RANGE
:
1895 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1896 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1898 case GL_DEPTH_SCALE
:
1899 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1902 *params
= (GLdouble
) ctx
->Depth
.Test
;
1904 case GL_DEPTH_WRITEMASK
:
1905 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1908 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1910 case GL_DOUBLEBUFFER
:
1911 *params
= (GLdouble
) ctx
->Visual
.doubleBufferMode
;
1913 case GL_DRAW_BUFFER
:
1914 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1917 FLUSH_CURRENT(ctx
, 0);
1918 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1920 case GL_FEEDBACK_BUFFER_SIZE
:
1921 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1923 case GL_FEEDBACK_BUFFER_TYPE
:
1924 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1927 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1930 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1931 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1932 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1933 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1935 case GL_FOG_DENSITY
:
1936 *params
= (GLdouble
) ctx
->Fog
.Density
;
1939 *params
= (GLdouble
) ctx
->Fog
.End
;
1942 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1945 *params
= (GLdouble
) ctx
->Fog
.Index
;
1948 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1951 *params
= (GLdouble
) ctx
->Fog
.Start
;
1954 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1957 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1960 *params
= (GLdouble
) ctx
->Visual
.greenBits
;
1962 case GL_GREEN_SCALE
:
1963 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1966 *params
= (GLdouble
) ctx
->Visual
.indexBits
;
1968 case GL_INDEX_CLEAR_VALUE
:
1969 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1972 *params
= ctx
->Visual
.rgbMode
? 0.0 : 1.0;
1974 case GL_INDEX_OFFSET
:
1975 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1977 case GL_INDEX_SHIFT
:
1978 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1980 case GL_INDEX_WRITEMASK
:
1981 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1991 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1994 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1996 case GL_LIGHT_MODEL_AMBIENT
:
1997 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1998 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1999 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
2000 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
2002 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2003 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
2005 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2006 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
2008 case GL_LIGHT_MODEL_TWO_SIDE
:
2009 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
2011 case GL_LINE_SMOOTH
:
2012 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
2014 case GL_LINE_SMOOTH_HINT
:
2015 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
2017 case GL_LINE_STIPPLE
:
2018 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
2020 case GL_LINE_STIPPLE_PATTERN
:
2021 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
2023 case GL_LINE_STIPPLE_REPEAT
:
2024 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
2027 *params
= (GLdouble
) ctx
->Line
.Width
;
2029 case GL_LINE_WIDTH_GRANULARITY
:
2030 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
2032 case GL_LINE_WIDTH_RANGE
:
2033 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
2034 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
2036 case GL_ALIASED_LINE_WIDTH_RANGE
:
2037 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
2038 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
2041 *params
= (GLdouble
) ctx
->List
.ListBase
;
2044 *params
= (GLdouble
) ctx
->CurrentListNum
;
2047 if (!ctx
->CompileFlag
)
2049 else if (ctx
->ExecuteFlag
)
2050 *params
= ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
);
2052 *params
= ENUM_TO_DOUBLE(GL_COMPILE
);
2054 case GL_INDEX_LOGIC_OP
:
2055 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
2057 case GL_COLOR_LOGIC_OP
:
2058 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
2060 case GL_LOGIC_OP_MODE
:
2061 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
2063 case GL_MAP1_COLOR_4
:
2064 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
2066 case GL_MAP1_GRID_DOMAIN
:
2067 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
2068 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
2070 case GL_MAP1_GRID_SEGMENTS
:
2071 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
2074 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
2076 case GL_MAP1_NORMAL
:
2077 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
2079 case GL_MAP1_TEXTURE_COORD_1
:
2080 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
2082 case GL_MAP1_TEXTURE_COORD_2
:
2083 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
2085 case GL_MAP1_TEXTURE_COORD_3
:
2086 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
2088 case GL_MAP1_TEXTURE_COORD_4
:
2089 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
2091 case GL_MAP1_VERTEX_3
:
2092 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
2094 case GL_MAP1_VERTEX_4
:
2095 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
2097 case GL_MAP2_COLOR_4
:
2098 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
2100 case GL_MAP2_GRID_DOMAIN
:
2101 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
2102 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
2103 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
2104 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
2106 case GL_MAP2_GRID_SEGMENTS
:
2107 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
2108 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
2111 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
2113 case GL_MAP2_NORMAL
:
2114 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
2116 case GL_MAP2_TEXTURE_COORD_1
:
2117 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
2119 case GL_MAP2_TEXTURE_COORD_2
:
2120 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
2122 case GL_MAP2_TEXTURE_COORD_3
:
2123 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
2125 case GL_MAP2_TEXTURE_COORD_4
:
2126 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
2128 case GL_MAP2_VERTEX_3
:
2129 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
2131 case GL_MAP2_VERTEX_4
:
2132 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
2135 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
2137 case GL_MAP_STENCIL
:
2138 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
2140 case GL_MATRIX_MODE
:
2141 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
2143 case GL_MAX_ATTRIB_STACK_DEPTH
:
2144 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
2146 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2147 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
2149 case GL_MAX_CLIP_PLANES
:
2150 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
2152 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
2153 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
2155 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
2156 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
2158 case GL_MAX_EVAL_ORDER
:
2159 *params
= (GLdouble
) MAX_EVAL_ORDER
;
2162 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
2164 case GL_MAX_LIST_NESTING
:
2165 *params
= (GLdouble
) MAX_LIST_NESTING
;
2167 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2168 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
2170 case GL_MAX_NAME_STACK_DEPTH
:
2171 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
2173 case GL_MAX_PIXEL_MAP_TABLE
:
2174 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
2176 case GL_MAX_PROJECTION_STACK_DEPTH
:
2177 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
2179 case GL_MAX_TEXTURE_SIZE
:
2180 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
2182 case GL_MAX_3D_TEXTURE_SIZE
:
2183 *params
= (GLdouble
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
2185 case GL_MAX_TEXTURE_STACK_DEPTH
:
2186 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
2188 case GL_MAX_VIEWPORT_DIMS
:
2189 params
[0] = (GLdouble
) MAX_WIDTH
;
2190 params
[1] = (GLdouble
) MAX_HEIGHT
;
2192 case GL_MODELVIEW_MATRIX
:
2193 for (i
=0;i
<16;i
++) {
2194 params
[i
] = (GLdouble
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
2197 case GL_MODELVIEW_STACK_DEPTH
:
2198 *params
= (GLdouble
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
2200 case GL_NAME_STACK_DEPTH
:
2201 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
2204 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
2206 case GL_PACK_ALIGNMENT
:
2207 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
2209 case GL_PACK_LSB_FIRST
:
2210 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
2212 case GL_PACK_ROW_LENGTH
:
2213 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
2215 case GL_PACK_SKIP_PIXELS
:
2216 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
2218 case GL_PACK_SKIP_ROWS
:
2219 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
2221 case GL_PACK_SWAP_BYTES
:
2222 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
2224 case GL_PACK_SKIP_IMAGES_EXT
:
2225 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
2227 case GL_PACK_IMAGE_HEIGHT_EXT
:
2228 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
2230 case GL_PACK_INVERT_MESA
:
2231 *params
= (GLdouble
) ctx
->Pack
.Invert
;
2233 case GL_PERSPECTIVE_CORRECTION_HINT
:
2234 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
2236 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2237 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
2239 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2240 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
2242 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2243 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
2245 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2246 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
2248 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2249 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
2251 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2252 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
2254 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2255 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
2257 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2258 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
2260 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2261 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
2263 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2264 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
2267 *params
= (GLdouble
) ctx
->Point
.Size
;
2269 case GL_POINT_SIZE_GRANULARITY
:
2270 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
2272 case GL_POINT_SIZE_RANGE
:
2273 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
2274 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
2276 case GL_ALIASED_POINT_SIZE_RANGE
:
2277 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
2278 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
2280 case GL_POINT_SMOOTH
:
2281 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
2283 case GL_POINT_SMOOTH_HINT
:
2284 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
2286 case GL_POINT_SIZE_MIN_EXT
:
2287 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
2289 case GL_POINT_SIZE_MAX_EXT
:
2290 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
2292 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2293 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
2295 case GL_DISTANCE_ATTENUATION_EXT
:
2296 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
2297 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
2298 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
2300 case GL_POLYGON_MODE
:
2301 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
2302 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
2304 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
2305 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2307 case GL_POLYGON_OFFSET_FACTOR
:
2308 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
2310 case GL_POLYGON_OFFSET_UNITS
:
2311 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2313 case GL_POLYGON_SMOOTH
:
2314 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
2316 case GL_POLYGON_SMOOTH_HINT
:
2317 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
2319 case GL_POLYGON_STIPPLE
:
2320 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
2322 case GL_PROJECTION_MATRIX
:
2323 for (i
=0;i
<16;i
++) {
2324 params
[i
] = (GLdouble
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
2327 case GL_PROJECTION_STACK_DEPTH
:
2328 *params
= (GLdouble
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
2330 case GL_READ_BUFFER
:
2331 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
2334 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
2337 *params
= (GLdouble
) ctx
->Visual
.redBits
;
2340 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
2342 case GL_RENDER_MODE
:
2343 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
2345 case GL_RESCALE_NORMAL
:
2346 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
2349 *params
= (GLdouble
) ctx
->Visual
.rgbMode
;
2351 case GL_SCISSOR_BOX
:
2352 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
2353 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
2354 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
2355 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
2357 case GL_SCISSOR_TEST
:
2358 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
2360 case GL_SELECTION_BUFFER_SIZE
:
2361 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
2363 case GL_SHADE_MODEL
:
2364 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
2366 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2367 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
2369 case GL_STENCIL_BITS
:
2370 *params
= (GLdouble
) ctx
->Visual
.stencilBits
;
2372 case GL_STENCIL_CLEAR_VALUE
:
2373 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
2375 case GL_STENCIL_FAIL
:
2376 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
2378 case GL_STENCIL_FUNC
:
2379 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
2381 case GL_STENCIL_PASS_DEPTH_FAIL
:
2382 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
2384 case GL_STENCIL_PASS_DEPTH_PASS
:
2385 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
2387 case GL_STENCIL_REF
:
2388 *params
= (GLdouble
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
2390 case GL_STENCIL_TEST
:
2391 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2393 case GL_STENCIL_VALUE_MASK
:
2394 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
2396 case GL_STENCIL_WRITEMASK
:
2397 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
2400 *params
= (GLdouble
) ctx
->Visual
.stereoMode
;
2402 case GL_SUBPIXEL_BITS
:
2403 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2406 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2409 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2412 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2414 case GL_TEXTURE_BINDING_1D
:
2415 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2417 case GL_TEXTURE_BINDING_2D
:
2418 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2420 case GL_TEXTURE_BINDING_3D
:
2421 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2423 case GL_TEXTURE_ENV_COLOR
:
2424 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2425 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2426 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2427 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2429 case GL_TEXTURE_ENV_MODE
:
2430 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2432 case GL_TEXTURE_GEN_S
:
2433 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2435 case GL_TEXTURE_GEN_T
:
2436 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2438 case GL_TEXTURE_GEN_R
:
2439 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2441 case GL_TEXTURE_GEN_Q
:
2442 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2444 case GL_TEXTURE_MATRIX
:
2445 for (i
=0;i
<16;i
++) {
2446 params
[i
] = (GLdouble
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
2449 case GL_TEXTURE_STACK_DEPTH
:
2450 *params
= (GLdouble
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
2452 case GL_UNPACK_ALIGNMENT
:
2453 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2455 case GL_UNPACK_LSB_FIRST
:
2456 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2458 case GL_UNPACK_ROW_LENGTH
:
2459 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2461 case GL_UNPACK_SKIP_PIXELS
:
2462 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2464 case GL_UNPACK_SKIP_ROWS
:
2465 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2467 case GL_UNPACK_SWAP_BYTES
:
2468 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2470 case GL_UNPACK_SKIP_IMAGES_EXT
:
2471 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2473 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2474 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2476 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
2477 *params
= (GLdouble
) ctx
->Unpack
.ClientStorage
;
2480 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2481 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2482 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2483 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2486 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2489 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2491 case GL_VERTEX_ARRAY
:
2492 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2494 case GL_VERTEX_ARRAY_SIZE
:
2495 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2497 case GL_VERTEX_ARRAY_TYPE
:
2498 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2500 case GL_VERTEX_ARRAY_STRIDE
:
2501 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2503 case GL_VERTEX_ARRAY_COUNT_EXT
:
2506 case GL_NORMAL_ARRAY
:
2507 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2509 case GL_NORMAL_ARRAY_TYPE
:
2510 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2512 case GL_NORMAL_ARRAY_STRIDE
:
2513 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2515 case GL_NORMAL_ARRAY_COUNT_EXT
:
2518 case GL_COLOR_ARRAY
:
2519 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2521 case GL_COLOR_ARRAY_SIZE
:
2522 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2524 case GL_COLOR_ARRAY_TYPE
:
2525 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2527 case GL_COLOR_ARRAY_STRIDE
:
2528 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2530 case GL_COLOR_ARRAY_COUNT_EXT
:
2533 case GL_INDEX_ARRAY
:
2534 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2536 case GL_INDEX_ARRAY_TYPE
:
2537 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2539 case GL_INDEX_ARRAY_STRIDE
:
2540 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2542 case GL_INDEX_ARRAY_COUNT_EXT
:
2545 case GL_TEXTURE_COORD_ARRAY
:
2546 *params
= (GLdouble
) ctx
->Array
.TexCoord
[clientUnit
].Enabled
;
2548 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2549 *params
= (GLdouble
) ctx
->Array
.TexCoord
[clientUnit
].Size
;
2551 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2552 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[clientUnit
].Type
);
2554 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2555 *params
= (GLdouble
) ctx
->Array
.TexCoord
[clientUnit
].Stride
;
2557 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2560 case GL_EDGE_FLAG_ARRAY
:
2561 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2563 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2564 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2566 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2570 /* GL_ARB_multitexture */
2571 case GL_MAX_TEXTURE_UNITS_ARB
:
2572 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2573 *params
= (GLdouble
) MIN2(ctx
->Const
.MaxTextureImageUnits
,
2574 ctx
->Const
.MaxTextureCoordUnits
);
2576 case GL_ACTIVE_TEXTURE_ARB
:
2577 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2578 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2580 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2581 CHECK_EXTENSION_D(ARB_multitexture
, pname
);
2582 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ clientUnit
);
2585 /* GL_ARB_texture_cube_map */
2586 case GL_TEXTURE_CUBE_MAP_ARB
:
2587 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2588 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2590 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2591 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2592 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2594 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2595 CHECK_EXTENSION_D(ARB_texture_cube_map
, pname
);
2596 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
2599 /* GL_ARB_texture_compression */
2600 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2601 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2602 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2604 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2605 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2606 *params
= (GLdouble
) _mesa_get_compressed_formats(ctx
, NULL
);
2608 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2609 CHECK_EXTENSION_D(ARB_texture_compression
, pname
);
2613 n
= _mesa_get_compressed_formats(ctx
, formats
);
2614 for (i
= 0; i
< n
; i
++)
2615 params
[i
] = (GLdouble
) formats
[i
];
2619 /* GL_EXT_compiled_vertex_array */
2620 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2621 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2623 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2624 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2627 /* GL_ARB_transpose_matrix */
2628 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2632 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
2633 for (i
=0;i
<16;i
++) {
2634 params
[i
] = (GLdouble
) tm
[i
];
2638 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2642 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
2643 for (i
=0;i
<16;i
++) {
2644 params
[i
] = (GLdouble
) tm
[i
];
2648 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2652 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
2653 for (i
=0;i
<16;i
++) {
2654 params
[i
] = (GLdouble
) tm
[i
];
2658 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2662 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
2663 for (i
=0;i
<16;i
++) {
2664 params
[i
] = (GLdouble
) tm
[i
];
2669 /* GL_HP_occlusion_test */
2670 case GL_OCCLUSION_TEST_HP
:
2671 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2672 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2674 case GL_OCCLUSION_TEST_RESULT_HP
:
2675 CHECK_EXTENSION_D(HP_occlusion_test
, pname
);
2676 if (ctx
->Depth
.OcclusionTest
)
2677 *params
= (GLdouble
) ctx
->OcclusionResult
;
2679 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2680 /* reset flag now */
2681 ctx
->OcclusionResult
= GL_FALSE
;
2682 ctx
->OcclusionResultSaved
= GL_FALSE
;
2685 /* GL_SGIS_pixel_texture */
2686 case GL_PIXEL_TEXTURE_SGIS
:
2687 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2690 /* GL_SGIX_pixel_texture */
2691 case GL_PIXEL_TEX_GEN_SGIX
:
2692 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2694 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2695 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2698 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2699 case GL_COLOR_MATRIX_SGI
:
2700 for (i
=0;i
<16;i
++) {
2701 params
[i
] = (GLdouble
) ctx
->ColorMatrixStack
.Top
->m
[i
];
2704 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2705 *params
= (GLdouble
) (ctx
->ColorMatrixStack
.Depth
+ 1);
2707 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2708 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2710 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2711 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2713 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2714 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2716 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2717 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2719 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2720 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2722 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2723 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2725 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2726 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2728 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2729 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2731 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2732 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2735 /* GL_EXT_convolution (also in 1.2 imaging) */
2736 case GL_CONVOLUTION_1D_EXT
:
2737 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2738 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2740 case GL_CONVOLUTION_2D
:
2741 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2742 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2744 case GL_SEPARABLE_2D
:
2745 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2746 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2748 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2749 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2750 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2752 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2753 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2754 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2756 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2757 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2758 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2760 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2761 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2762 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2764 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2765 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2766 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2768 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2769 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2770 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2772 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2773 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2774 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2776 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2777 CHECK_EXTENSION_D(EXT_convolution
, pname
);
2778 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2781 /* GL_EXT_histogram (also in 1.2 imaging) */
2783 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2784 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
2787 CHECK_EXTENSION_D(EXT_histogram
, pname
);
2788 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
2791 /* GL_SGI_color_table (also in 1.2 imaging */
2792 case GL_COLOR_TABLE_SGI
:
2793 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2795 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2796 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2798 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2799 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2802 /* GL_SGI_texture_color_table */
2803 case GL_TEXTURE_COLOR_TABLE_SGI
:
2804 CHECK_EXTENSION_D(SGI_texture_color_table
, pname
);
2805 *params
= (GLdouble
) textureUnit
->ColorTableEnabled
;
2808 /* GL_EXT_secondary_color */
2809 case GL_COLOR_SUM_EXT
:
2810 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2811 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2813 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2814 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2815 FLUSH_CURRENT(ctx
, 0);
2816 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
2817 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
2818 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
2819 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3];
2821 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2822 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2823 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2825 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2826 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2827 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2829 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2830 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2831 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2833 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2834 CHECK_EXTENSION_D(EXT_secondary_color
, pname
);
2835 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Size
;
2838 /* GL_EXT_fog_coord */
2839 case GL_CURRENT_FOG_COORDINATE_EXT
:
2840 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2841 FLUSH_CURRENT(ctx
, 0);
2842 *params
= (GLdouble
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
2844 case GL_FOG_COORDINATE_ARRAY_EXT
:
2845 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2846 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2848 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2849 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2850 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2852 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2853 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2854 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2856 case GL_FOG_COORDINATE_SOURCE_EXT
:
2857 CHECK_EXTENSION_D(EXT_fog_coord
, pname
);
2858 *params
= (GLdouble
) ctx
->Fog
.FogCoordinateSource
;
2861 /* GL_EXT_texture_lod_bias */
2862 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
2863 *params
= (GLdouble
) ctx
->Const
.MaxTextureLodBias
;
2866 /* GL_EXT_texture_filter_anisotropic */
2867 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
2868 CHECK_EXTENSION_D(EXT_texture_filter_anisotropic
, pname
);
2869 *params
= (GLdouble
) ctx
->Const
.MaxTextureMaxAnisotropy
;
2872 /* GL_ARB_multisample */
2873 case GL_MULTISAMPLE_ARB
:
2874 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2875 *params
= (GLdouble
) ctx
->Multisample
.Enabled
;
2877 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
2878 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2879 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToCoverage
;
2881 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
2882 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2883 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToOne
;
2885 case GL_SAMPLE_COVERAGE_ARB
:
2886 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2887 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverage
;
2889 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
2890 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2891 *params
= ctx
->Multisample
.SampleCoverageValue
;
2893 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
2894 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2895 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverageInvert
;
2897 case GL_SAMPLE_BUFFERS_ARB
:
2898 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2899 *params
= 0.0; /* XXX fix someday */
2901 case GL_SAMPLES_ARB
:
2902 CHECK_EXTENSION_D(ARB_multisample
, pname
);
2903 *params
= 0.0; /* XXX fix someday */
2906 /* GL_IBM_rasterpos_clip */
2907 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
2908 CHECK_EXTENSION_D(IBM_rasterpos_clip
, pname
);
2909 *params
= (GLdouble
) ctx
->Transform
.RasterPositionUnclipped
;
2912 /* GL_NV_point_sprite */
2913 case GL_POINT_SPRITE_NV
:
2914 CHECK_EXTENSION2_D(NV_point_sprite
, ARB_point_sprite
, pname
);
2915 *params
= (GLdouble
) ctx
->Point
.PointSprite
;
2917 case GL_POINT_SPRITE_R_MODE_NV
:
2918 CHECK_EXTENSION_D(NV_point_sprite
, pname
);
2919 *params
= (GLdouble
) ctx
->Point
.SpriteRMode
;
2922 /* GL_SGIS_generate_mipmap */
2923 case GL_GENERATE_MIPMAP_HINT_SGIS
:
2924 CHECK_EXTENSION_D(SGIS_generate_mipmap
, pname
);
2925 *params
= (GLdouble
) ctx
->Hint
.GenerateMipmap
;
2928 #if FEATURE_NV_vertex_program
2929 case GL_VERTEX_PROGRAM_NV
:
2930 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2931 *params
= (GLdouble
) ctx
->VertexProgram
.Enabled
;
2933 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
2934 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2935 *params
= (GLdouble
) ctx
->VertexProgram
.PointSizeEnabled
;
2937 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
2938 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2939 *params
= (GLdouble
) ctx
->VertexProgram
.TwoSideEnabled
;
2941 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
2942 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2943 *params
= (GLdouble
) ctx
->Const
.MaxProgramMatrixStackDepth
;
2945 case GL_MAX_TRACK_MATRICES_NV
:
2946 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2947 *params
= (GLdouble
) ctx
->Const
.MaxProgramMatrices
;
2949 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
2950 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2951 *params
= (GLdouble
) ctx
->CurrentStack
->Depth
+ 1;
2953 case GL_CURRENT_MATRIX_NV
:
2954 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2955 for (i
= 0; i
< 16; i
++)
2956 params
[i
] = (GLdouble
) ctx
->CurrentStack
->Top
->m
[i
];
2958 case GL_VERTEX_PROGRAM_BINDING_NV
:
2959 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2960 if (ctx
->VertexProgram
.Current
)
2961 *params
= (GLdouble
) ctx
->VertexProgram
.Current
->Base
.Id
;
2965 case GL_PROGRAM_ERROR_POSITION_NV
:
2966 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2967 *params
= (GLdouble
) ctx
->Program
.ErrorPos
;
2969 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
2970 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
2971 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
2972 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
2973 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
2974 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
2975 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
2976 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
2977 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
2978 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
2979 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
2980 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
2981 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
2982 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
2983 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
2984 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
2985 CHECK_EXTENSION_D(NV_vertex_program
, pname
);
2987 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
2988 *params
= (GLdouble
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
2991 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
2992 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
2993 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
2994 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
2995 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
2996 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
2997 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
2998 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
2999 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
3000 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
3001 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
3002 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
3003 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
3004 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
3005 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
3006 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
3007 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
3009 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
3010 *params
= (GLdouble
) ctx
->Eval
.Map1Attrib
[n
];
3013 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
3014 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
3015 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
3016 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
3017 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
3018 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
3019 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
3020 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
3021 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
3022 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
3023 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
3024 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
3025 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
3026 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
3027 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
3028 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
3029 CHECK_EXTENSION_B(NV_vertex_program
, pname
);
3031 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
3032 *params
= (GLdouble
) ctx
->Eval
.Map2Attrib
[n
];
3035 #endif /* FEATURE_NV_vertex_program */
3037 #if FEATURE_NV_fragment_program
3038 case GL_FRAGMENT_PROGRAM_NV
:
3039 CHECK_EXTENSION_D(NV_fragment_program
, pname
);
3040 *params
= (GLdouble
) ctx
->FragmentProgram
.Enabled
;
3042 case GL_MAX_TEXTURE_COORDS_NV
:
3043 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
3044 *params
= (GLdouble
) ctx
->Const
.MaxTextureCoordUnits
;
3046 case GL_MAX_TEXTURE_IMAGE_UNITS_NV
:
3047 CHECK_EXTENSION_B(NV_fragment_program
, pname
);
3048 *params
= (GLdouble
) ctx
->Const
.MaxTextureImageUnits
;
3050 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
3051 CHECK_EXTENSION_D(NV_fragment_program
, pname
);
3052 if (ctx
->FragmentProgram
.Current
)
3053 *params
= (GLdouble
) ctx
->FragmentProgram
.Current
->Base
.Id
;
3057 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
3058 CHECK_EXTENSION_D(NV_fragment_program
, pname
);
3059 *params
= (GLdouble
) MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
3061 #endif /* FEATURE_NV_fragment_program */
3063 /* GL_NV_texture_rectangle */
3064 case GL_TEXTURE_RECTANGLE_NV
:
3065 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
3066 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
3068 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
3069 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
3070 *params
= (GLdouble
) textureUnit
->CurrentRect
->Name
;
3072 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
3073 CHECK_EXTENSION_D(NV_texture_rectangle
, pname
);
3074 *params
= (GLdouble
) ctx
->Const
.MaxTextureRectSize
;
3077 /* GL_EXT_stencil_two_side */
3078 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
3079 CHECK_EXTENSION_D(EXT_stencil_two_side
, pname
);
3080 *params
= (GLdouble
) ctx
->Stencil
.TestTwoSide
;
3082 case GL_ACTIVE_STENCIL_FACE_EXT
:
3083 CHECK_EXTENSION_D(EXT_stencil_two_side
, pname
);
3084 *params
= (GLdouble
) (ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
3087 /* GL_NV_light_max_exponent */
3088 case GL_MAX_SHININESS_NV
:
3089 *params
= (GLdouble
) ctx
->Const
.MaxShininess
;
3091 case GL_MAX_SPOT_EXPONENT_NV
:
3092 *params
= (GLdouble
) ctx
->Const
.MaxSpotExponent
;
3095 #if FEATURE_ARB_vertex_buffer_object
3096 case GL_ARRAY_BUFFER_BINDING_ARB
:
3097 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3098 *params
= (GLdouble
) ctx
->Array
.ArrayBufferObj
->Name
;
3100 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
3101 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3102 *params
= (GLdouble
) ctx
->Array
.Vertex
.BufferObj
->Name
;
3104 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
3105 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3106 *params
= (GLdouble
) ctx
->Array
.Normal
.BufferObj
->Name
;
3108 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3109 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3110 *params
= (GLdouble
) ctx
->Array
.Color
.BufferObj
->Name
;
3112 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
3113 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3114 *params
= (GLdouble
) ctx
->Array
.Index
.BufferObj
->Name
;
3116 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
3117 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3118 *params
= (GLdouble
) ctx
->Array
.TexCoord
[clientUnit
].BufferObj
->Name
;
3120 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
3121 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3122 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.BufferObj
->Name
;
3124 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3125 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3126 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.BufferObj
->Name
;
3128 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
3129 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3130 *params
= (GLdouble
) ctx
->Array
.FogCoord
.BufferObj
->Name
;
3132 /*case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB: - not supported */
3133 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
3134 CHECK_EXTENSION_D(ARB_vertex_buffer_object
, pname
);
3135 *params
= (GLdouble
) ctx
->Array
.ElementArrayBufferObj
->Name
;
3139 #if FEATURE_ARB_fragment_program
3140 case GL_FRAGMENT_PROGRAM_ARB
:
3141 CHECK_EXTENSION_D(ARB_fragment_program
, pname
);
3142 *params
= (GLdouble
) ctx
->FragmentProgram
.Enabled
;
3144 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
3145 CHECK_EXTENSION_D(ARB_fragment_program
, pname
);
3146 params
[0] = ctx
->CurrentStack
->Top
->m
[0];
3147 params
[1] = ctx
->CurrentStack
->Top
->m
[4];
3148 params
[2] = ctx
->CurrentStack
->Top
->m
[8];
3149 params
[3] = ctx
->CurrentStack
->Top
->m
[12];
3150 params
[4] = ctx
->CurrentStack
->Top
->m
[1];
3151 params
[5] = ctx
->CurrentStack
->Top
->m
[5];
3152 params
[6] = ctx
->CurrentStack
->Top
->m
[9];
3153 params
[7] = ctx
->CurrentStack
->Top
->m
[13];
3154 params
[8] = ctx
->CurrentStack
->Top
->m
[2];
3155 params
[9] = ctx
->CurrentStack
->Top
->m
[6];
3156 params
[10] = ctx
->CurrentStack
->Top
->m
[10];
3157 params
[11] = ctx
->CurrentStack
->Top
->m
[14];
3158 params
[12] = ctx
->CurrentStack
->Top
->m
[3];
3159 params
[13] = ctx
->CurrentStack
->Top
->m
[7];
3160 params
[14] = ctx
->CurrentStack
->Top
->m
[11];
3161 params
[15] = ctx
->CurrentStack
->Top
->m
[15];
3163 /* Remaining ARB_fragment_program queries alias with
3164 * the GL_NV_fragment_program queries.
3168 /* GL_EXT_depth_bounds_test */
3169 case GL_DEPTH_BOUNDS_TEST_EXT
:
3170 CHECK_EXTENSION_D(EXT_depth_bounds_test
, pname
);
3171 params
[0] = (GLdouble
) ctx
->Depth
.BoundsTest
;
3173 case GL_DEPTH_BOUNDS_EXT
:
3174 CHECK_EXTENSION_D(EXT_depth_bounds_test
, pname
);
3175 params
[0] = ctx
->Depth
.BoundsMin
;
3176 params
[1] = ctx
->Depth
.BoundsMax
;
3179 #if FEATURE_MESA_program_debug
3180 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA
:
3181 CHECK_EXTENSION_D(MESA_program_debug
, pname
);
3182 *params
= (GLdouble
) ctx
->FragmentProgram
.CallbackEnabled
;
3184 case GL_VERTEX_PROGRAM_CALLBACK_MESA
:
3185 CHECK_EXTENSION_D(MESA_program_debug
, pname
);
3186 *params
= (GLdouble
) ctx
->VertexProgram
.CallbackEnabled
;
3188 case GL_FRAGMENT_PROGRAM_POSITION_MESA
:
3189 CHECK_EXTENSION_D(MESA_program_debug
, pname
);
3190 *params
= (GLdouble
) ctx
->FragmentProgram
.CurrentPosition
;
3192 case GL_VERTEX_PROGRAM_POSITION_MESA
:
3193 CHECK_EXTENSION_D(MESA_program_debug
, pname
);
3194 *params
= (GLdouble
) ctx
->VertexProgram
.CurrentPosition
;
3199 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev(pname=0x%x)", pname
);
3205 * Get the value(s) of a selected parameter.
3207 * \param pname parameter to be returned.
3208 * \param params will hold the value(s) of the speficifed parameter.
3210 * \sa glGetFloatv().
3212 * Tries to get the specified parameter via dd_function_table::GetFloatv,
3213 * otherwise gets the specified parameter from the current context, converting
3214 * it value into GLfloat.
3217 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
3219 GET_CURRENT_CONTEXT(ctx
);
3221 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
3222 const GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3223 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3224 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3229 if (MESA_VERBOSE
& VERBOSE_API
)
3230 _mesa_debug(ctx
, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname
));
3232 if (!ctx
->_CurrentProgram
) {
3233 /* We need this in order to get correct results for
3234 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
3236 FLUSH_VERTICES(ctx
, 0);
3239 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
3243 case GL_ACCUM_RED_BITS
:
3244 *params
= (GLfloat
) ctx
->Visual
.accumRedBits
;
3246 case GL_ACCUM_GREEN_BITS
:
3247 *params
= (GLfloat
) ctx
->Visual
.accumGreenBits
;
3249 case GL_ACCUM_BLUE_BITS
:
3250 *params
= (GLfloat
) ctx
->Visual
.accumBlueBits
;
3252 case GL_ACCUM_ALPHA_BITS
:
3253 *params
= (GLfloat
) ctx
->Visual
.accumAlphaBits
;
3255 case GL_ACCUM_CLEAR_VALUE
:
3256 params
[0] = ctx
->Accum
.ClearColor
[0];
3257 params
[1] = ctx
->Accum
.ClearColor
[1];
3258 params
[2] = ctx
->Accum
.ClearColor
[2];
3259 params
[3] = ctx
->Accum
.ClearColor
[3];
3262 *params
= ctx
->Pixel
.AlphaBias
;
3265 *params
= (GLfloat
) ctx
->Visual
.alphaBits
;
3267 case GL_ALPHA_SCALE
:
3268 *params
= ctx
->Pixel
.AlphaScale
;
3271 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
3273 case GL_ALPHA_TEST_FUNC
:
3274 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
3276 case GL_ALPHA_TEST_REF
:
3277 *params
= (GLfloat
) ctx
->Color
.AlphaRef
;
3279 case GL_ATTRIB_STACK_DEPTH
:
3280 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
3282 case GL_AUTO_NORMAL
:
3283 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
3285 case GL_AUX_BUFFERS
:
3286 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
3289 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
3292 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
3295 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
3297 case GL_BLEND_SRC_RGB_EXT
:
3298 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
3300 case GL_BLEND_DST_RGB_EXT
:
3301 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
3303 case GL_BLEND_SRC_ALPHA_EXT
:
3304 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
3306 case GL_BLEND_DST_ALPHA_EXT
:
3307 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
3309 case GL_BLEND_EQUATION_EXT
:
3310 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
3312 case GL_BLEND_COLOR_EXT
:
3313 params
[0] = ctx
->Color
.BlendColor
[0];
3314 params
[1] = ctx
->Color
.BlendColor
[1];
3315 params
[2] = ctx
->Color
.BlendColor
[2];
3316 params
[3] = ctx
->Color
.BlendColor
[3];
3319 *params
= ctx
->Pixel
.BlueBias
;
3322 *params
= (GLfloat
) ctx
->Visual
.blueBits
;
3325 *params
= ctx
->Pixel
.BlueScale
;
3327 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3328 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
3330 case GL_CLIP_PLANE0
:
3331 case GL_CLIP_PLANE1
:
3332 case GL_CLIP_PLANE2
:
3333 case GL_CLIP_PLANE3
:
3334 case GL_CLIP_PLANE4
:
3335 case GL_CLIP_PLANE5
:
3336 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
3341 case GL_COLOR_CLEAR_VALUE
:
3342 params
[0] = ctx
->Color
.ClearColor
[0];
3343 params
[1] = ctx
->Color
.ClearColor
[1];
3344 params
[2] = ctx
->Color
.ClearColor
[2];
3345 params
[3] = ctx
->Color
.ClearColor
[3];
3347 case GL_COLOR_MATERIAL
:
3348 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
3350 case GL_COLOR_MATERIAL_FACE
:
3351 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
3353 case GL_COLOR_MATERIAL_PARAMETER
:
3354 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
3356 case GL_COLOR_WRITEMASK
:
3357 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
3358 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
3359 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
3360 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
3363 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
3365 case GL_CULL_FACE_MODE
:
3366 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
3368 case GL_CURRENT_COLOR
:
3369 FLUSH_CURRENT(ctx
, 0);
3370 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
3371 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
3372 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
3373 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
3375 case GL_CURRENT_INDEX
:
3376 FLUSH_CURRENT(ctx
, 0);
3377 *params
= (GLfloat
) ctx
->Current
.Index
;
3379 case GL_CURRENT_NORMAL
:
3380 FLUSH_CURRENT(ctx
, 0);
3381 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
3382 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
3383 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
3385 case GL_CURRENT_RASTER_COLOR
:
3386 params
[0] = ctx
->Current
.RasterColor
[0];
3387 params
[1] = ctx
->Current
.RasterColor
[1];
3388 params
[2] = ctx
->Current
.RasterColor
[2];
3389 params
[3] = ctx
->Current
.RasterColor
[3];
3391 case GL_CURRENT_RASTER_DISTANCE
:
3392 params
[0] = ctx
->Current
.RasterDistance
;
3394 case GL_CURRENT_RASTER_INDEX
:
3395 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
3397 case GL_CURRENT_RASTER_POSITION
:
3398 params
[0] = ctx
->Current
.RasterPos
[0];
3399 params
[1] = ctx
->Current
.RasterPos
[1];
3400 params
[2] = ctx
->Current
.RasterPos
[2];
3401 params
[3] = ctx
->Current
.RasterPos
[3];
3403 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3404 params
[0] = ctx
->Current
.RasterTexCoords
[texUnit
][0];
3405 params
[1] = ctx
->Current
.RasterTexCoords
[texUnit
][1];
3406 params
[2] = ctx
->Current
.RasterTexCoords
[texUnit
][2];
3407 params
[3] = ctx
->Current
.RasterTexCoords
[texUnit
][3];
3409 case GL_CURRENT_RASTER_POSITION_VALID
:
3410 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
3412 case GL_CURRENT_TEXTURE_COORDS
:
3413 FLUSH_CURRENT(ctx
, 0);
3414 params
[0] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
3415 params
[1] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
3416 params
[2] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
3417 params
[3] = (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
3420 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
3423 *params
= (GLfloat
) ctx
->Visual
.depthBits
;
3425 case GL_DEPTH_CLEAR_VALUE
:
3426 *params
= (GLfloat
) ctx
->Depth
.Clear
;
3429 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
3431 case GL_DEPTH_RANGE
:
3432 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
3433 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
3435 case GL_DEPTH_SCALE
:
3436 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
3439 *params
= (GLfloat
) ctx
->Depth
.Test
;
3441 case GL_DEPTH_WRITEMASK
:
3442 *params
= (GLfloat
) ctx
->Depth
.Mask
;
3445 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
3447 case GL_DOUBLEBUFFER
:
3448 *params
= (GLfloat
) ctx
->Visual
.doubleBufferMode
;
3450 case GL_DRAW_BUFFER
:
3451 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
3454 FLUSH_CURRENT(ctx
, 0);
3455 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
3457 case GL_FEEDBACK_BUFFER_SIZE
:
3458 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
3460 case GL_FEEDBACK_BUFFER_TYPE
:
3461 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
3464 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
3467 params
[0] = ctx
->Fog
.Color
[0];
3468 params
[1] = ctx
->Fog
.Color
[1];
3469 params
[2] = ctx
->Fog
.Color
[2];
3470 params
[3] = ctx
->Fog
.Color
[3];
3472 case GL_FOG_DENSITY
:
3473 *params
= ctx
->Fog
.Density
;
3476 *params
= ctx
->Fog
.End
;
3479 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
3482 *params
= ctx
->Fog
.Index
;
3485 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
3488 *params
= ctx
->Fog
.Start
;
3491 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
3494 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
3497 *params
= (GLfloat
) ctx
->Visual
.greenBits
;
3499 case GL_GREEN_SCALE
:
3500 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
3503 *params
= (GLfloat
) ctx
->Visual
.indexBits
;
3505 case GL_INDEX_CLEAR_VALUE
:
3506 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
3509 *params
= ctx
->Visual
.rgbMode
? 0.0F
: 1.0F
;
3511 case GL_INDEX_OFFSET
:
3512 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
3514 case GL_INDEX_SHIFT
:
3515 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
3517 case GL_INDEX_WRITEMASK
:
3518 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
3528 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3531 *params
= (GLfloat
) ctx
->Light
.Enabled
;
3533 case GL_LIGHT_MODEL_AMBIENT
:
3534 params
[0] = ctx
->Light
.Model
.Ambient
[0];
3535 params
[1] = ctx
->Light
.Model
.Ambient
[1];
3536 params
[2] = ctx
->Light
.Model
.Ambient
[2];
3537 params
[3] = ctx
->Light
.Model
.Ambient
[3];
3539 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3540 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
3542 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3543 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
3545 case GL_LIGHT_MODEL_TWO_SIDE
:
3546 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
3548 case GL_LINE_SMOOTH
:
3549 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
3551 case GL_LINE_SMOOTH_HINT
:
3552 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
3554 case GL_LINE_STIPPLE
:
3555 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
3557 case GL_LINE_STIPPLE_PATTERN
:
3558 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
3560 case GL_LINE_STIPPLE_REPEAT
:
3561 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
3564 *params
= (GLfloat
) ctx
->Line
.Width
;
3566 case GL_LINE_WIDTH_GRANULARITY
:
3567 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
3569 case GL_LINE_WIDTH_RANGE
:
3570 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
3571 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
3573 case GL_ALIASED_LINE_WIDTH_RANGE
:
3574 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
3575 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
3578 *params
= (GLfloat
) ctx
->List
.ListBase
;
3581 *params
= (GLfloat
) ctx
->CurrentListNum
;
3584 if (!ctx
->CompileFlag
)
3586 else if (ctx
->ExecuteFlag
)
3587 *params
= ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
);
3589 *params
= ENUM_TO_FLOAT(GL_COMPILE
);
3591 case GL_INDEX_LOGIC_OP
:
3592 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
3594 case GL_COLOR_LOGIC_OP
:
3595 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
3597 case GL_LOGIC_OP_MODE
:
3598 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
3600 case GL_MAP1_COLOR_4
:
3601 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
3603 case GL_MAP1_GRID_DOMAIN
:
3604 params
[0] = ctx
->Eval
.MapGrid1u1
;
3605 params
[1] = ctx
->Eval
.MapGrid1u2
;
3607 case GL_MAP1_GRID_SEGMENTS
:
3608 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
3611 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
3613 case GL_MAP1_NORMAL
:
3614 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
3616 case GL_MAP1_TEXTURE_COORD_1
:
3617 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
3619 case GL_MAP1_TEXTURE_COORD_2
:
3620 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
3622 case GL_MAP1_TEXTURE_COORD_3
:
3623 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
3625 case GL_MAP1_TEXTURE_COORD_4
:
3626 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
3628 case GL_MAP1_VERTEX_3
:
3629 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
3631 case GL_MAP1_VERTEX_4
:
3632 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
3634 case GL_MAP2_COLOR_4
:
3635 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
3637 case GL_MAP2_GRID_DOMAIN
:
3638 params
[0] = ctx
->Eval
.MapGrid2u1
;
3639 params
[1] = ctx
->Eval
.MapGrid2u2
;
3640 params
[2] = ctx
->Eval
.MapGrid2v1
;
3641 params
[3] = ctx
->Eval
.MapGrid2v2
;
3643 case GL_MAP2_GRID_SEGMENTS
:
3644 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
3645 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
3648 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
3650 case GL_MAP2_NORMAL
:
3651 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
3653 case GL_MAP2_TEXTURE_COORD_1
:
3654 *params
= ctx
->Eval
.Map2TextureCoord1
;
3656 case GL_MAP2_TEXTURE_COORD_2
:
3657 *params
= ctx
->Eval
.Map2TextureCoord2
;
3659 case GL_MAP2_TEXTURE_COORD_3
:
3660 *params
= ctx
->Eval
.Map2TextureCoord3
;
3662 case GL_MAP2_TEXTURE_COORD_4
:
3663 *params
= ctx
->Eval
.Map2TextureCoord4
;
3665 case GL_MAP2_VERTEX_3
:
3666 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
3668 case GL_MAP2_VERTEX_4
:
3669 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
3672 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
3674 case GL_MAP_STENCIL
:
3675 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
3677 case GL_MATRIX_MODE
:
3678 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
3680 case GL_MAX_ATTRIB_STACK_DEPTH
:
3681 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
3683 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3684 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3686 case GL_MAX_CLIP_PLANES
:
3687 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
3689 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3690 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3692 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3693 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3695 case GL_MAX_EVAL_ORDER
:
3696 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3699 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3701 case GL_MAX_LIST_NESTING
:
3702 *params
= (GLfloat
) MAX_LIST_NESTING
;
3704 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3705 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3707 case GL_MAX_NAME_STACK_DEPTH
:
3708 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3710 case GL_MAX_PIXEL_MAP_TABLE
:
3711 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3713 case GL_MAX_PROJECTION_STACK_DEPTH
:
3714 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3716 case GL_MAX_TEXTURE_SIZE
:
3717 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
3719 case GL_MAX_3D_TEXTURE_SIZE
:
3720 *params
= (GLfloat
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
3722 case GL_MAX_TEXTURE_STACK_DEPTH
:
3723 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3725 case GL_MAX_VIEWPORT_DIMS
:
3726 params
[0] = (GLfloat
) MAX_WIDTH
;
3727 params
[1] = (GLfloat
) MAX_HEIGHT
;
3729 case GL_MODELVIEW_MATRIX
:
3730 for (i
=0;i
<16;i
++) {
3731 params
[i
] = ctx
->ModelviewMatrixStack
.Top
->m
[i
];
3734 case GL_MODELVIEW_STACK_DEPTH
:
3735 *params
= (GLfloat
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
3737 case GL_NAME_STACK_DEPTH
:
3738 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3741 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3743 case GL_PACK_ALIGNMENT
:
3744 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3746 case GL_PACK_LSB_FIRST
:
3747 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3749 case GL_PACK_ROW_LENGTH
:
3750 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3752 case GL_PACK_SKIP_PIXELS
:
3753 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3755 case GL_PACK_SKIP_ROWS
:
3756 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3758 case GL_PACK_SWAP_BYTES
:
3759 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3761 case GL_PACK_SKIP_IMAGES_EXT
:
3762 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3764 case GL_PACK_IMAGE_HEIGHT_EXT
:
3765 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3767 case GL_PACK_INVERT_MESA
:
3768 *params
= (GLfloat
) ctx
->Pack
.Invert
;
3770 case GL_PERSPECTIVE_CORRECTION_HINT
:
3771 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3773 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3774 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3776 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3777 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3779 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3780 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3782 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3783 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3785 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3786 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3788 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3789 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3791 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3792 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3794 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3795 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3797 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3798 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3800 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3801 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3804 *params
= (GLfloat
) ctx
->Point
.Size
;
3806 case GL_POINT_SIZE_GRANULARITY
:
3807 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3809 case GL_POINT_SIZE_RANGE
:
3810 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3811 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3813 case GL_ALIASED_POINT_SIZE_RANGE
:
3814 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3815 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3817 case GL_POINT_SMOOTH
:
3818 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3820 case GL_POINT_SMOOTH_HINT
:
3821 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3823 case GL_POINT_SIZE_MIN_EXT
:
3824 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3826 case GL_POINT_SIZE_MAX_EXT
:
3827 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3829 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3830 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3832 case GL_DISTANCE_ATTENUATION_EXT
:
3833 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3834 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3835 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3837 case GL_POLYGON_MODE
:
3838 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3839 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3841 #ifdef GL_EXT_polygon_offset
3842 case GL_POLYGON_OFFSET_BIAS_EXT
:
3843 *params
= ctx
->Polygon
.OffsetUnits
;
3846 case GL_POLYGON_OFFSET_FACTOR
:
3847 *params
= ctx
->Polygon
.OffsetFactor
;
3849 case GL_POLYGON_OFFSET_UNITS
:
3850 *params
= ctx
->Polygon
.OffsetUnits
;
3852 case GL_POLYGON_SMOOTH
:
3853 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3855 case GL_POLYGON_SMOOTH_HINT
:
3856 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3858 case GL_POLYGON_STIPPLE
:
3859 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3861 case GL_PROJECTION_MATRIX
:
3862 for (i
=0;i
<16;i
++) {
3863 params
[i
] = ctx
->ProjectionMatrixStack
.Top
->m
[i
];
3866 case GL_PROJECTION_STACK_DEPTH
:
3867 *params
= (GLfloat
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
3869 case GL_READ_BUFFER
:
3870 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3873 *params
= ctx
->Pixel
.RedBias
;
3876 *params
= (GLfloat
) ctx
->Visual
.redBits
;
3879 *params
= ctx
->Pixel
.RedScale
;
3881 case GL_RENDER_MODE
:
3882 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3884 case GL_RESCALE_NORMAL
:
3885 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3888 *params
= (GLfloat
) ctx
->Visual
.rgbMode
;
3890 case GL_SCISSOR_BOX
:
3891 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3892 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3893 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3894 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3896 case GL_SCISSOR_TEST
:
3897 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3899 case GL_SELECTION_BUFFER_SIZE
:
3900 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3902 case GL_SHADE_MODEL
:
3903 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3905 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3906 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3908 case GL_STENCIL_BITS
:
3909 *params
= (GLfloat
) ctx
->Visual
.stencilBits
;
3911 case GL_STENCIL_CLEAR_VALUE
:
3912 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3914 case GL_STENCIL_FAIL
:
3915 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
3917 case GL_STENCIL_FUNC
:
3918 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
3920 case GL_STENCIL_PASS_DEPTH_FAIL
:
3921 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
3923 case GL_STENCIL_PASS_DEPTH_PASS
:
3924 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
3926 case GL_STENCIL_REF
:
3927 *params
= (GLfloat
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
3929 case GL_STENCIL_TEST
:
3930 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3932 case GL_STENCIL_VALUE_MASK
:
3933 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
3935 case GL_STENCIL_WRITEMASK
:
3936 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
3939 *params
= (GLfloat
) ctx
->Visual
.stereoMode
;
3941 case GL_SUBPIXEL_BITS
:
3942 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3945 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0F
: 0.0F
;
3948 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0F
: 0.0F
;
3951 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0F
: 0.0F
;
3953 case GL_TEXTURE_BINDING_1D
:
3954 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3956 case GL_TEXTURE_BINDING_2D
:
3957 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3959 case GL_TEXTURE_BINDING_3D
:
3960 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3962 case GL_TEXTURE_ENV_COLOR
:
3963 params
[0] = textureUnit
->EnvColor
[0];
3964 params
[1] = textureUnit
->EnvColor
[1];
3965 params
[2] = textureUnit
->EnvColor
[2];
3966 params
[3] = textureUnit
->EnvColor
[3];
3968 case GL_TEXTURE_ENV_MODE
:
3969 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3971 case GL_TEXTURE_GEN_S
:
3972 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0F
: 0.0F
;
3974 case GL_TEXTURE_GEN_T
:
3975 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0F
: 0.0F
;
3977 case GL_TEXTURE_GEN_R
:
3978 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0F
: 0.0F
;
3980 case GL_TEXTURE_GEN_Q
:
3981 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0F
: 0.0F
;
3983 case GL_TEXTURE_MATRIX
:
3984 for (i
=0;i
<16;i
++) {
3985 params
[i
] = ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
3988 case GL_TEXTURE_STACK_DEPTH
:
3989 *params
= (GLfloat
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
3991 case GL_UNPACK_ALIGNMENT
:
3992 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3994 case GL_UNPACK_LSB_FIRST
:
3995 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3997 case GL_UNPACK_ROW_LENGTH
:
3998 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
4000 case GL_UNPACK_SKIP_PIXELS
:
4001 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
4003 case GL_UNPACK_SKIP_ROWS
:
4004 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
4006 case GL_UNPACK_SWAP_BYTES
:
4007 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
4009 case GL_UNPACK_SKIP_IMAGES_EXT
:
4010 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
4012 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4013 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
4015 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
4016 *params
= (GLfloat
) ctx
->Unpack
.ClientStorage
;
4019 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
4020 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
4021 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
4022 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
4025 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
4028 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
4030 case GL_VERTEX_ARRAY
:
4031 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
4033 case GL_VERTEX_ARRAY_SIZE
:
4034 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
4036 case GL_VERTEX_ARRAY_TYPE
:
4037 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
4039 case GL_VERTEX_ARRAY_STRIDE
:
4040 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
4042 case GL_VERTEX_ARRAY_COUNT_EXT
:
4045 case GL_NORMAL_ARRAY
:
4046 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
4048 case GL_NORMAL_ARRAY_TYPE
:
4049 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
4051 case GL_NORMAL_ARRAY_STRIDE
:
4052 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
4054 case GL_NORMAL_ARRAY_COUNT_EXT
:
4057 case GL_COLOR_ARRAY
:
4058 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
4060 case GL_COLOR_ARRAY_SIZE
:
4061 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
4063 case GL_COLOR_ARRAY_TYPE
:
4064 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
4066 case GL_COLOR_ARRAY_STRIDE
:
4067 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
4069 case GL_COLOR_ARRAY_COUNT_EXT
:
4072 case GL_INDEX_ARRAY
:
4073 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
4075 case GL_INDEX_ARRAY_TYPE
:
4076 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
4078 case GL_INDEX_ARRAY_STRIDE
:
4079 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
4081 case GL_INDEX_ARRAY_COUNT_EXT
:
4084 case GL_TEXTURE_COORD_ARRAY
:
4085 *params
= (GLfloat
) ctx
->Array
.TexCoord
[clientUnit
].Enabled
;
4087 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4088 *params
= (GLfloat
) ctx
->Array
.TexCoord
[clientUnit
].Size
;
4090 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4091 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[clientUnit
].Type
);
4093 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4094 *params
= (GLfloat
) ctx
->Array
.TexCoord
[clientUnit
].Stride
;
4096 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4099 case GL_EDGE_FLAG_ARRAY
:
4100 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
4102 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4103 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
4105 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4109 /* GL_ARB_multitexture */
4110 case GL_MAX_TEXTURE_UNITS_ARB
:
4111 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
4112 *params
= (GLfloat
) MIN2(ctx
->Const
.MaxTextureImageUnits
,
4113 ctx
->Const
.MaxTextureCoordUnits
);
4115 case GL_ACTIVE_TEXTURE_ARB
:
4116 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
4117 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
4119 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4120 CHECK_EXTENSION_F(ARB_multitexture
, pname
);
4121 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ clientUnit
);
4124 /* GL_ARB_texture_cube_map */
4125 case GL_TEXTURE_CUBE_MAP_ARB
:
4126 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
4127 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4129 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4130 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
4131 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
4133 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4134 CHECK_EXTENSION_F(ARB_texture_cube_map
, pname
);
4135 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
4138 /* GL_ARB_texture_compression */
4139 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4140 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
4141 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
4143 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4144 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
4145 *params
= (GLfloat
) _mesa_get_compressed_formats(ctx
, NULL
);
4147 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4148 CHECK_EXTENSION_F(ARB_texture_compression
, pname
);
4152 n
= _mesa_get_compressed_formats(ctx
, formats
);
4153 for (i
= 0; i
< n
; i
++)
4154 params
[i
] = (GLfloat
) formats
[i
];
4158 /* GL_EXT_compiled_vertex_array */
4159 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4160 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
4161 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
4163 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4164 CHECK_EXTENSION_F(EXT_compiled_vertex_array
, pname
);
4165 *params
= (GLfloat
) ctx
->Array
.LockCount
;
4168 /* GL_ARB_transpose_matrix */
4169 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4170 _math_transposef(params
, ctx
->ColorMatrixStack
.Top
->m
);
4172 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4173 _math_transposef(params
, ctx
->ModelviewMatrixStack
.Top
->m
);
4175 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4176 _math_transposef(params
, ctx
->ProjectionMatrixStack
.Top
->m
);
4178 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4179 _math_transposef(params
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
4182 /* GL_HP_occlusion_test */
4183 case GL_OCCLUSION_TEST_HP
:
4184 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
4185 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
4187 case GL_OCCLUSION_TEST_RESULT_HP
:
4188 CHECK_EXTENSION_F(HP_occlusion_test
, pname
);
4189 if (ctx
->Depth
.OcclusionTest
)
4190 *params
= (GLfloat
) ctx
->OcclusionResult
;
4192 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
4193 /* reset flag now */
4194 ctx
->OcclusionResult
= GL_FALSE
;
4195 ctx
->OcclusionResultSaved
= GL_FALSE
;
4198 /* GL_SGIS_pixel_texture */
4199 case GL_PIXEL_TEXTURE_SGIS
:
4200 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
4203 /* GL_SGIX_pixel_texture */
4204 case GL_PIXEL_TEX_GEN_SGIX
:
4205 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
4207 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4208 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
4211 /* GL_SGI_color_matrix (also in 1.2 imaging) */
4212 case GL_COLOR_MATRIX_SGI
:
4213 for (i
=0;i
<16;i
++) {
4214 params
[i
] = ctx
->ColorMatrixStack
.Top
->m
[i
];
4217 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
4218 *params
= (GLfloat
) (ctx
->ColorMatrixStack
.Depth
+ 1);
4220 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
4221 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
4223 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
4224 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
4226 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
4227 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
4229 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
4230 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
4232 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
4233 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
4235 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
4236 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
4238 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
4239 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
4241 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
4242 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
4244 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
4245 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
4248 /* GL_EXT_convolution (also in 1.2 imaging) */
4249 case GL_CONVOLUTION_1D_EXT
:
4250 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4251 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
4253 case GL_CONVOLUTION_2D
:
4254 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4255 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
4257 case GL_SEPARABLE_2D
:
4258 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4259 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
4261 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
4262 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4263 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
4265 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
4266 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4267 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
4269 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
4270 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4271 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
4273 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
4274 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4275 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
4277 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
4278 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4279 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
4281 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
4282 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4283 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
4285 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
4286 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4287 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
4289 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
4290 CHECK_EXTENSION_F(EXT_convolution
, pname
);
4291 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
4294 /* GL_EXT_histogram (also in 1.2 imaging) */
4296 CHECK_EXTENSION_F(EXT_histogram
, pname
);
4297 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
4300 CHECK_EXTENSION_F(EXT_histogram
, pname
);
4301 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
4304 /* GL_SGI_color_table (also in 1.2 imaging */
4305 case GL_COLOR_TABLE_SGI
:
4306 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
4308 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
4309 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
4311 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
4312 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
4315 /* GL_SGI_texture_color_table */
4316 case GL_TEXTURE_COLOR_TABLE_SGI
:
4317 CHECK_EXTENSION_F(SGI_texture_color_table
, pname
);
4318 *params
= (GLfloat
) textureUnit
->ColorTableEnabled
;
4321 /* GL_EXT_secondary_color */
4322 case GL_COLOR_SUM_EXT
:
4323 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4324 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
4326 case GL_CURRENT_SECONDARY_COLOR_EXT
:
4327 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4328 FLUSH_CURRENT(ctx
, 0);
4329 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
4330 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
4331 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
4332 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3];
4334 case GL_SECONDARY_COLOR_ARRAY_EXT
:
4335 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4336 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
4338 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
4339 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4340 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
4342 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
4343 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4344 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
4346 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
4347 CHECK_EXTENSION_F(EXT_secondary_color
, pname
);
4348 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Size
;
4351 /* GL_EXT_fog_coord */
4352 case GL_CURRENT_FOG_COORDINATE_EXT
:
4353 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4354 FLUSH_CURRENT(ctx
, 0);
4355 *params
= (GLfloat
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
4357 case GL_FOG_COORDINATE_ARRAY_EXT
:
4358 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4359 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
4361 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
4362 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4363 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
4365 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
4366 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4367 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
4369 case GL_FOG_COORDINATE_SOURCE_EXT
:
4370 CHECK_EXTENSION_F(EXT_fog_coord
, pname
);
4371 *params
= (GLfloat
) ctx
->Fog
.FogCoordinateSource
;
4374 /* GL_EXT_texture_lod_bias */
4375 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
4376 *params
= ctx
->Const
.MaxTextureLodBias
;
4379 /* GL_EXT_texture_filter_anisotropic */
4380 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
4381 CHECK_EXTENSION_F(EXT_texture_filter_anisotropic
, pname
);
4382 *params
= ctx
->Const
.MaxTextureMaxAnisotropy
;
4385 /* GL_ARB_multisample */
4386 case GL_MULTISAMPLE_ARB
:
4387 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4388 *params
= (GLfloat
) ctx
->Multisample
.Enabled
;
4390 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
4391 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4392 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToCoverage
;
4394 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
4395 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4396 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToOne
;
4398 case GL_SAMPLE_COVERAGE_ARB
:
4399 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4400 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverage
;
4402 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
4403 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4404 *params
= ctx
->Multisample
.SampleCoverageValue
;
4406 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
4407 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4408 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverageInvert
;
4410 case GL_SAMPLE_BUFFERS_ARB
:
4411 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4412 *params
= 0.0; /* XXX fix someday */
4414 case GL_SAMPLES_ARB
:
4415 CHECK_EXTENSION_F(ARB_multisample
, pname
);
4416 *params
= 0.0; /* XXX fix someday */
4419 /* GL_IBM_rasterpos_clip */
4420 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
4421 CHECK_EXTENSION_F(IBM_rasterpos_clip
, pname
);
4422 *params
= (GLfloat
) ctx
->Transform
.RasterPositionUnclipped
;
4425 /* GL_NV_point_sprite */
4426 case GL_POINT_SPRITE_NV
:
4427 CHECK_EXTENSION2_F(NV_point_sprite
, ARB_point_sprite
, pname
);
4428 *params
= (GLfloat
) ctx
->Point
.PointSprite
;
4430 case GL_POINT_SPRITE_R_MODE_NV
:
4431 CHECK_EXTENSION_F(NV_point_sprite
, pname
);
4432 *params
= (GLfloat
) ctx
->Point
.SpriteRMode
;
4435 /* GL_SGIS_generate_mipmap */
4436 case GL_GENERATE_MIPMAP_HINT_SGIS
:
4437 CHECK_EXTENSION_F(SGIS_generate_mipmap
, pname
);
4438 *params
= (GLfloat
) ctx
->Hint
.GenerateMipmap
;
4441 #if FEATURE_NV_vertex_program
4442 case GL_VERTEX_PROGRAM_NV
:
4443 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4444 *params
= (GLfloat
) ctx
->VertexProgram
.Enabled
;
4446 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
4447 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4448 *params
= (GLfloat
) ctx
->VertexProgram
.PointSizeEnabled
;
4450 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
4451 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4452 *params
= (GLfloat
) ctx
->VertexProgram
.TwoSideEnabled
;
4454 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
4455 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4456 *params
= (GLfloat
) ctx
->Const
.MaxProgramMatrixStackDepth
;
4458 case GL_MAX_TRACK_MATRICES_NV
:
4459 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4460 *params
= (GLfloat
) ctx
->Const
.MaxProgramMatrices
;
4462 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
4463 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4464 *params
= (GLfloat
) ctx
->CurrentStack
->Depth
+ 1;
4466 case GL_CURRENT_MATRIX_NV
:
4467 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4468 for (i
= 0; i
< 16; i
++)
4469 params
[i
] = ctx
->CurrentStack
->Top
->m
[i
];
4471 case GL_VERTEX_PROGRAM_BINDING_NV
:
4472 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4473 if (ctx
->VertexProgram
.Current
)
4474 *params
= (GLfloat
) ctx
->VertexProgram
.Current
->Base
.Id
;
4478 case GL_PROGRAM_ERROR_POSITION_NV
:
4479 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4480 *params
= (GLfloat
) ctx
->Program
.ErrorPos
;
4482 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
4483 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
4484 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
4485 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
4486 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
4487 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
4488 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
4489 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
4490 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
4491 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
4492 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
4493 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
4494 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
4495 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
4496 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
4497 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
4498 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4500 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
4501 *params
= (GLfloat
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
4504 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
4505 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
4506 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
4507 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
4508 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
4509 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
4510 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
4511 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
4512 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
4513 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
4514 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
4515 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
4516 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
4517 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
4518 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
4519 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
4520 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4522 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
4523 *params
= (GLfloat
) ctx
->Eval
.Map1Attrib
[n
];
4526 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
4527 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
4528 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
4529 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
4530 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
4531 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
4532 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
4533 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
4534 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
4535 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
4536 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
4537 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
4538 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
4539 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
4540 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
4541 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
4542 CHECK_EXTENSION_F(NV_vertex_program
, pname
);
4544 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
4545 *params
= (GLfloat
) ctx
->Eval
.Map2Attrib
[n
];
4548 #endif /* FEATURE_NV_vertex_program */
4550 #if FEATURE_NV_fragment_program
4551 case GL_FRAGMENT_PROGRAM_NV
:
4552 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4553 *params
= (GLfloat
) ctx
->FragmentProgram
.Enabled
;
4555 case GL_MAX_TEXTURE_COORDS_NV
:
4556 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4557 *params
= (GLfloat
) ctx
->Const
.MaxTextureCoordUnits
;
4559 case GL_MAX_TEXTURE_IMAGE_UNITS_NV
:
4560 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4561 *params
= (GLfloat
) ctx
->Const
.MaxTextureImageUnits
;
4563 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
4564 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4565 if (ctx
->FragmentProgram
.Current
)
4566 *params
= (GLfloat
) ctx
->FragmentProgram
.Current
->Base
.Id
;
4570 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
4571 CHECK_EXTENSION_F(NV_fragment_program
, pname
);
4572 *params
= (GLfloat
) MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
4574 #endif /* FEATURE_NV_fragment_program */
4576 /* GL_NV_texture_rectangle */
4577 case GL_TEXTURE_RECTANGLE_NV
:
4578 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4579 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
4581 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
4582 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4583 *params
= (GLfloat
) textureUnit
->CurrentRect
->Name
;
4585 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
4586 CHECK_EXTENSION_F(NV_texture_rectangle
, pname
);
4587 *params
= (GLfloat
) ctx
->Const
.MaxTextureRectSize
;
4590 /* GL_EXT_stencil_two_side */
4591 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
4592 CHECK_EXTENSION_F(EXT_stencil_two_side
, pname
);
4593 *params
= (GLfloat
) ctx
->Stencil
.TestTwoSide
;
4595 case GL_ACTIVE_STENCIL_FACE_EXT
:
4596 CHECK_EXTENSION_F(EXT_stencil_two_side
, pname
);
4597 *params
= (GLfloat
) (ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
4600 /* GL_NV_light_max_exponent */
4601 case GL_MAX_SHININESS_NV
:
4602 *params
= ctx
->Const
.MaxShininess
;
4604 case GL_MAX_SPOT_EXPONENT_NV
:
4605 *params
= ctx
->Const
.MaxSpotExponent
;
4608 #if FEATURE_ARB_vertex_buffer_object
4609 case GL_ARRAY_BUFFER_BINDING_ARB
:
4610 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4611 *params
= (GLfloat
) ctx
->Array
.ArrayBufferObj
->Name
;
4613 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
4614 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4615 *params
= (GLfloat
) ctx
->Array
.Vertex
.BufferObj
->Name
;
4617 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
4618 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4619 *params
= (GLfloat
) ctx
->Array
.Normal
.BufferObj
->Name
;
4621 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
4622 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4623 *params
= (GLfloat
) ctx
->Array
.Color
.BufferObj
->Name
;
4625 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
4626 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4627 *params
= (GLfloat
) ctx
->Array
.Index
.BufferObj
->Name
;
4629 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
4630 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4631 *params
= (GLfloat
) ctx
->Array
.TexCoord
[clientUnit
].BufferObj
->Name
;
4633 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
4634 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4635 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.BufferObj
->Name
;
4637 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
4638 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4639 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.BufferObj
->Name
;
4641 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
4642 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4643 *params
= (GLfloat
) ctx
->Array
.FogCoord
.BufferObj
->Name
;
4645 /*case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB: - not supported */
4646 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
4647 CHECK_EXTENSION_F(ARB_vertex_buffer_object
, pname
);
4648 *params
= (GLfloat
) ctx
->Array
.ElementArrayBufferObj
->Name
;
4652 #if FEATURE_ARB_fragment_program
4653 case GL_FRAGMENT_PROGRAM_ARB
:
4654 CHECK_EXTENSION_F(ARB_fragment_program
, pname
);
4655 *params
= (GLfloat
) ctx
->FragmentProgram
.Enabled
;
4657 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
4658 CHECK_EXTENSION_F(ARB_fragment_program
, pname
);
4659 params
[0] = ctx
->CurrentStack
->Top
->m
[0];
4660 params
[1] = ctx
->CurrentStack
->Top
->m
[4];
4661 params
[2] = ctx
->CurrentStack
->Top
->m
[8];
4662 params
[3] = ctx
->CurrentStack
->Top
->m
[12];
4663 params
[4] = ctx
->CurrentStack
->Top
->m
[1];
4664 params
[5] = ctx
->CurrentStack
->Top
->m
[5];
4665 params
[6] = ctx
->CurrentStack
->Top
->m
[9];
4666 params
[7] = ctx
->CurrentStack
->Top
->m
[13];
4667 params
[8] = ctx
->CurrentStack
->Top
->m
[2];
4668 params
[9] = ctx
->CurrentStack
->Top
->m
[6];
4669 params
[10] = ctx
->CurrentStack
->Top
->m
[10];
4670 params
[11] = ctx
->CurrentStack
->Top
->m
[14];
4671 params
[12] = ctx
->CurrentStack
->Top
->m
[3];
4672 params
[13] = ctx
->CurrentStack
->Top
->m
[7];
4673 params
[14] = ctx
->CurrentStack
->Top
->m
[11];
4674 params
[15] = ctx
->CurrentStack
->Top
->m
[15];
4676 /* Remaining ARB_fragment_program queries alias with
4677 * the GL_NV_fragment_program queries.
4681 /* GL_EXT_depth_bounds_test */
4682 case GL_DEPTH_BOUNDS_TEST_EXT
:
4683 CHECK_EXTENSION_F(EXT_depth_bounds_test
, pname
);
4684 params
[0] = (GLfloat
) ctx
->Depth
.BoundsTest
;
4686 case GL_DEPTH_BOUNDS_EXT
:
4687 CHECK_EXTENSION_F(EXT_depth_bounds_test
, pname
);
4688 params
[0] = ctx
->Depth
.BoundsMin
;
4689 params
[1] = ctx
->Depth
.BoundsMax
;
4692 #if FEATURE_MESA_program_debug
4693 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA
:
4694 CHECK_EXTENSION_F(MESA_program_debug
, pname
);
4695 *params
= (GLfloat
) ctx
->FragmentProgram
.CallbackEnabled
;
4697 case GL_VERTEX_PROGRAM_CALLBACK_MESA
:
4698 CHECK_EXTENSION_F(MESA_program_debug
, pname
);
4699 *params
= (GLfloat
) ctx
->VertexProgram
.CallbackEnabled
;
4701 case GL_FRAGMENT_PROGRAM_POSITION_MESA
:
4702 CHECK_EXTENSION_F(MESA_program_debug
, pname
);
4703 *params
= (GLfloat
) ctx
->FragmentProgram
.CurrentPosition
;
4705 case GL_VERTEX_PROGRAM_POSITION_MESA
:
4706 CHECK_EXTENSION_F(MESA_program_debug
, pname
);
4707 *params
= (GLfloat
) ctx
->VertexProgram
.CurrentPosition
;
4712 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv(0x%x)", pname
);
4718 * Get the value(s) of a selected parameter.
4720 * \param pname parameter to be returned.
4721 * \param params will hold the value(s) of the speficifed parameter.
4723 * \sa glGetIntegerv().
4725 * Tries to get the specified parameter via dd_function_table::GetIntegerv,
4726 * otherwise gets the specified parameter from the current context, converting
4727 * it value into GLinteger.
4730 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
4732 GET_CURRENT_CONTEXT(ctx
);
4734 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
4735 const GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4736 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
4737 ASSERT_OUTSIDE_BEGIN_END(ctx
);
4742 if (MESA_VERBOSE
& VERBOSE_API
)
4743 _mesa_debug(ctx
, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname
));
4745 if (!ctx
->_CurrentProgram
) {
4746 /* We need this in order to get correct results for
4747 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
4749 FLUSH_VERTICES(ctx
, 0);
4752 if (ctx
->Driver
.GetIntegerv
4753 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
4757 case GL_ACCUM_RED_BITS
:
4758 *params
= (GLint
) ctx
->Visual
.accumRedBits
;
4760 case GL_ACCUM_GREEN_BITS
:
4761 *params
= (GLint
) ctx
->Visual
.accumGreenBits
;
4763 case GL_ACCUM_BLUE_BITS
:
4764 *params
= (GLint
) ctx
->Visual
.accumBlueBits
;
4766 case GL_ACCUM_ALPHA_BITS
:
4767 *params
= (GLint
) ctx
->Visual
.accumAlphaBits
;
4769 case GL_ACCUM_CLEAR_VALUE
:
4770 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
4771 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
4772 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
4773 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
4776 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
4779 *params
= ctx
->Visual
.alphaBits
;
4781 case GL_ALPHA_SCALE
:
4782 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
4785 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
4787 case GL_ALPHA_TEST_REF
:
4788 *params
= FLOAT_TO_INT(ctx
->Color
.AlphaRef
);
4790 case GL_ALPHA_TEST_FUNC
:
4791 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
4793 case GL_ATTRIB_STACK_DEPTH
:
4794 *params
= (GLint
) (ctx
->AttribStackDepth
);
4796 case GL_AUTO_NORMAL
:
4797 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
4799 case GL_AUX_BUFFERS
:
4800 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
4803 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
4806 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4809 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4811 case GL_BLEND_SRC_RGB_EXT
:
4812 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4814 case GL_BLEND_DST_RGB_EXT
:
4815 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4817 case GL_BLEND_SRC_ALPHA_EXT
:
4818 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
4820 case GL_BLEND_DST_ALPHA_EXT
:
4821 *params
= (GLint
) ctx
->Color
.BlendDstA
;
4823 case GL_BLEND_EQUATION_EXT
:
4824 *params
= (GLint
) ctx
->Color
.BlendEquation
;
4826 case GL_BLEND_COLOR_EXT
:
4827 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
4828 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
4829 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
4830 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
4833 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
4836 *params
= (GLint
) ctx
->Visual
.blueBits
;
4839 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
4841 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
4842 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
4844 case GL_CLIP_PLANE0
:
4845 case GL_CLIP_PLANE1
:
4846 case GL_CLIP_PLANE2
:
4847 case GL_CLIP_PLANE3
:
4848 case GL_CLIP_PLANE4
:
4849 case GL_CLIP_PLANE5
:
4850 if (ctx
->Transform
.ClipPlanesEnabled
& (1 << (pname
- GL_CLIP_PLANE0
)))
4855 case GL_COLOR_CLEAR_VALUE
:
4856 params
[0] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[0]) );
4857 params
[1] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[1]) );
4858 params
[2] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[2]) );
4859 params
[3] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[3]) );
4861 case GL_COLOR_MATERIAL
:
4862 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
4864 case GL_COLOR_MATERIAL_FACE
:
4865 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
4867 case GL_COLOR_MATERIAL_PARAMETER
:
4868 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
4870 case GL_COLOR_WRITEMASK
:
4871 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
4872 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
4873 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
4874 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
4877 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
4879 case GL_CULL_FACE_MODE
:
4880 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
4882 case GL_CURRENT_COLOR
:
4883 FLUSH_CURRENT(ctx
, 0);
4884 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4885 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4886 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4887 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4889 case GL_CURRENT_INDEX
:
4890 FLUSH_CURRENT(ctx
, 0);
4891 *params
= (GLint
) ctx
->Current
.Index
;
4893 case GL_CURRENT_NORMAL
:
4894 FLUSH_CURRENT(ctx
, 0);
4895 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4896 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4897 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4899 case GL_CURRENT_RASTER_COLOR
:
4900 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
4901 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
4902 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
4903 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
4905 case GL_CURRENT_RASTER_DISTANCE
:
4906 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
4908 case GL_CURRENT_RASTER_INDEX
:
4909 *params
= (GLint
) ctx
->Current
.RasterIndex
;
4911 case GL_CURRENT_RASTER_POSITION
:
4912 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
4913 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
4914 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
4915 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
4917 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4918 params
[0] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][0];
4919 params
[1] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][1];
4920 params
[2] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][2];
4921 params
[3] = (GLint
) ctx
->Current
.RasterTexCoords
[texUnit
][3];
4923 case GL_CURRENT_RASTER_POSITION_VALID
:
4924 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
4926 case GL_CURRENT_TEXTURE_COORDS
:
4927 FLUSH_CURRENT(ctx
, 0);
4928 params
[0] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][0];
4929 params
[1] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][1];
4930 params
[2] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][2];
4931 params
[3] = (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ texUnit
][3];
4934 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
4937 *params
= ctx
->Visual
.depthBits
;
4939 case GL_DEPTH_CLEAR_VALUE
:
4940 *params
= (GLint
) ctx
->Depth
.Clear
;
4943 *params
= (GLint
) ctx
->Depth
.Func
;
4945 case GL_DEPTH_RANGE
:
4946 params
[0] = (GLint
) ctx
->Viewport
.Near
;
4947 params
[1] = (GLint
) ctx
->Viewport
.Far
;
4949 case GL_DEPTH_SCALE
:
4950 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
4953 *params
= (GLint
) ctx
->Depth
.Test
;
4955 case GL_DEPTH_WRITEMASK
:
4956 *params
= (GLint
) ctx
->Depth
.Mask
;
4959 *params
= (GLint
) ctx
->Color
.DitherFlag
;
4961 case GL_DOUBLEBUFFER
:
4962 *params
= (GLint
) ctx
->Visual
.doubleBufferMode
;
4964 case GL_DRAW_BUFFER
:
4965 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
4968 FLUSH_CURRENT(ctx
, 0);
4969 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
4971 case GL_FEEDBACK_BUFFER_SIZE
:
4972 *params
= ctx
->Feedback
.BufferSize
;
4974 case GL_FEEDBACK_BUFFER_TYPE
:
4975 *params
= ctx
->Feedback
.Type
;
4978 *params
= (GLint
) ctx
->Fog
.Enabled
;
4981 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
4982 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
4983 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
4984 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
4986 case GL_FOG_DENSITY
:
4987 *params
= (GLint
) ctx
->Fog
.Density
;
4990 *params
= (GLint
) ctx
->Fog
.End
;
4993 *params
= (GLint
) ctx
->Hint
.Fog
;
4996 *params
= (GLint
) ctx
->Fog
.Index
;
4999 *params
= (GLint
) ctx
->Fog
.Mode
;
5002 *params
= (GLint
) ctx
->Fog
.Start
;
5005 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
5008 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
5011 *params
= (GLint
) ctx
->Visual
.greenBits
;
5013 case GL_GREEN_SCALE
:
5014 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
5017 *params
= (GLint
) ctx
->Visual
.indexBits
;
5019 case GL_INDEX_CLEAR_VALUE
:
5020 *params
= (GLint
) ctx
->Color
.ClearIndex
;
5023 *params
= ctx
->Visual
.rgbMode
? 0 : 1;
5025 case GL_INDEX_OFFSET
:
5026 *params
= ctx
->Pixel
.IndexOffset
;
5028 case GL_INDEX_SHIFT
:
5029 *params
= ctx
->Pixel
.IndexShift
;
5031 case GL_INDEX_WRITEMASK
:
5032 *params
= (GLint
) ctx
->Color
.IndexMask
;
5042 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
5045 *params
= (GLint
) ctx
->Light
.Enabled
;
5047 case GL_LIGHT_MODEL_AMBIENT
:
5048 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
5049 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
5050 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
5051 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
5053 case GL_LIGHT_MODEL_COLOR_CONTROL
:
5054 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
5056 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
5057 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
5059 case GL_LIGHT_MODEL_TWO_SIDE
:
5060 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
5062 case GL_LINE_SMOOTH
:
5063 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
5065 case GL_LINE_SMOOTH_HINT
:
5066 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
5068 case GL_LINE_STIPPLE
:
5069 *params
= (GLint
) ctx
->Line
.StippleFlag
;
5071 case GL_LINE_STIPPLE_PATTERN
:
5072 *params
= (GLint
) ctx
->Line
.StipplePattern
;
5074 case GL_LINE_STIPPLE_REPEAT
:
5075 *params
= (GLint
) ctx
->Line
.StippleFactor
;
5078 *params
= (GLint
) ctx
->Line
.Width
;
5080 case GL_LINE_WIDTH_GRANULARITY
:
5081 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
5083 case GL_LINE_WIDTH_RANGE
:
5084 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
5085 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
5087 case GL_ALIASED_LINE_WIDTH_RANGE
:
5088 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
5089 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
5092 *params
= (GLint
) ctx
->List
.ListBase
;
5095 *params
= (GLint
) ctx
->CurrentListNum
;
5098 if (!ctx
->CompileFlag
)
5100 else if (ctx
->ExecuteFlag
)
5101 *params
= (GLint
) GL_COMPILE_AND_EXECUTE
;
5103 *params
= (GLint
) GL_COMPILE
;
5105 case GL_INDEX_LOGIC_OP
:
5106 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
5108 case GL_COLOR_LOGIC_OP
:
5109 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
5111 case GL_LOGIC_OP_MODE
:
5112 *params
= (GLint
) ctx
->Color
.LogicOp
;
5114 case GL_MAP1_COLOR_4
:
5115 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
5117 case GL_MAP1_GRID_DOMAIN
:
5118 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
5119 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
5121 case GL_MAP1_GRID_SEGMENTS
:
5122 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
5125 *params
= (GLint
) ctx
->Eval
.Map1Index
;
5127 case GL_MAP1_NORMAL
:
5128 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
5130 case GL_MAP1_TEXTURE_COORD_1
:
5131 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
5133 case GL_MAP1_TEXTURE_COORD_2
:
5134 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
5136 case GL_MAP1_TEXTURE_COORD_3
:
5137 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
5139 case GL_MAP1_TEXTURE_COORD_4
:
5140 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
5142 case GL_MAP1_VERTEX_3
:
5143 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
5145 case GL_MAP1_VERTEX_4
:
5146 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
5148 case GL_MAP2_COLOR_4
:
5149 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
5151 case GL_MAP2_GRID_DOMAIN
:
5152 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
5153 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
5154 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
5155 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
5157 case GL_MAP2_GRID_SEGMENTS
:
5158 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
5159 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
5162 *params
= (GLint
) ctx
->Eval
.Map2Index
;
5164 case GL_MAP2_NORMAL
:
5165 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
5167 case GL_MAP2_TEXTURE_COORD_1
:
5168 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
5170 case GL_MAP2_TEXTURE_COORD_2
:
5171 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
5173 case GL_MAP2_TEXTURE_COORD_3
:
5174 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
5176 case GL_MAP2_TEXTURE_COORD_4
:
5177 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
5179 case GL_MAP2_VERTEX_3
:
5180 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
5182 case GL_MAP2_VERTEX_4
:
5183 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
5186 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
5188 case GL_MAP_STENCIL
:
5189 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
5191 case GL_MATRIX_MODE
:
5192 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
5194 case GL_MAX_ATTRIB_STACK_DEPTH
:
5195 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
5197 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
5198 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
5200 case GL_MAX_CLIP_PLANES
:
5201 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
5203 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
5204 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
5206 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
5207 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
5209 case GL_MAX_EVAL_ORDER
:
5210 *params
= (GLint
) MAX_EVAL_ORDER
;
5213 *params
= (GLint
) ctx
->Const
.MaxLights
;
5215 case GL_MAX_LIST_NESTING
:
5216 *params
= (GLint
) MAX_LIST_NESTING
;
5218 case GL_MAX_MODELVIEW_STACK_DEPTH
:
5219 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
5221 case GL_MAX_NAME_STACK_DEPTH
:
5222 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
5224 case GL_MAX_PIXEL_MAP_TABLE
:
5225 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
5227 case GL_MAX_PROJECTION_STACK_DEPTH
:
5228 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
5230 case GL_MAX_TEXTURE_SIZE
:
5231 *params
= (1 << (ctx
->Const
.MaxTextureLevels
- 1));
5233 case GL_MAX_3D_TEXTURE_SIZE
:
5234 *params
= (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
5236 case GL_MAX_TEXTURE_STACK_DEPTH
:
5237 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
5239 case GL_MAX_VIEWPORT_DIMS
:
5240 params
[0] = (GLint
) MAX_WIDTH
;
5241 params
[1] = (GLint
) MAX_HEIGHT
;
5243 case GL_MODELVIEW_MATRIX
:
5244 for (i
=0;i
<16;i
++) {
5245 params
[i
] = (GLint
) ctx
->ModelviewMatrixStack
.Top
->m
[i
];
5248 case GL_MODELVIEW_STACK_DEPTH
:
5249 *params
= (GLint
) (ctx
->ModelviewMatrixStack
.Depth
+ 1);
5251 case GL_NAME_STACK_DEPTH
:
5252 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
5255 *params
= (GLint
) ctx
->Transform
.Normalize
;
5257 case GL_PACK_ALIGNMENT
:
5258 *params
= ctx
->Pack
.Alignment
;
5260 case GL_PACK_LSB_FIRST
:
5261 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
5263 case GL_PACK_ROW_LENGTH
:
5264 *params
= ctx
->Pack
.RowLength
;
5266 case GL_PACK_SKIP_PIXELS
:
5267 *params
= ctx
->Pack
.SkipPixels
;
5269 case GL_PACK_SKIP_ROWS
:
5270 *params
= ctx
->Pack
.SkipRows
;
5272 case GL_PACK_SWAP_BYTES
:
5273 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
5275 case GL_PACK_SKIP_IMAGES_EXT
:
5276 *params
= ctx
->Pack
.SkipImages
;
5278 case GL_PACK_IMAGE_HEIGHT_EXT
:
5279 *params
= ctx
->Pack
.ImageHeight
;
5281 case GL_PACK_INVERT_MESA
:
5282 *params
= ctx
->Pack
.Invert
;
5284 case GL_PERSPECTIVE_CORRECTION_HINT
:
5285 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
5287 case GL_PIXEL_MAP_A_TO_A_SIZE
:
5288 *params
= ctx
->Pixel
.MapAtoAsize
;
5290 case GL_PIXEL_MAP_B_TO_B_SIZE
:
5291 *params
= ctx
->Pixel
.MapBtoBsize
;
5293 case GL_PIXEL_MAP_G_TO_G_SIZE
:
5294 *params
= ctx
->Pixel
.MapGtoGsize
;
5296 case GL_PIXEL_MAP_I_TO_A_SIZE
:
5297 *params
= ctx
->Pixel
.MapItoAsize
;
5299 case GL_PIXEL_MAP_I_TO_B_SIZE
:
5300 *params
= ctx
->Pixel
.MapItoBsize
;
5302 case GL_PIXEL_MAP_I_TO_G_SIZE
:
5303 *params
= ctx
->Pixel
.MapItoGsize
;
5305 case GL_PIXEL_MAP_I_TO_I_SIZE
:
5306 *params
= ctx
->Pixel
.MapItoIsize
;
5308 case GL_PIXEL_MAP_I_TO_R_SIZE
:
5309 *params
= ctx
->Pixel
.MapItoRsize
;
5311 case GL_PIXEL_MAP_R_TO_R_SIZE
:
5312 *params
= ctx
->Pixel
.MapRtoRsize
;
5314 case GL_PIXEL_MAP_S_TO_S_SIZE
:
5315 *params
= ctx
->Pixel
.MapStoSsize
;
5318 *params
= (GLint
) ctx
->Point
.Size
;
5320 case GL_POINT_SIZE_GRANULARITY
:
5321 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
5323 case GL_POINT_SIZE_RANGE
:
5324 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
5325 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
5327 case GL_ALIASED_POINT_SIZE_RANGE
:
5328 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
5329 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
5331 case GL_POINT_SMOOTH
:
5332 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
5334 case GL_POINT_SMOOTH_HINT
:
5335 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
5337 case GL_POINT_SIZE_MIN_EXT
:
5338 *params
= (GLint
) (ctx
->Point
.MinSize
);
5340 case GL_POINT_SIZE_MAX_EXT
:
5341 *params
= (GLint
) (ctx
->Point
.MaxSize
);
5343 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
5344 *params
= (GLint
) (ctx
->Point
.Threshold
);
5346 case GL_DISTANCE_ATTENUATION_EXT
:
5347 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
5348 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
5349 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
5351 case GL_POLYGON_MODE
:
5352 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
5353 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
5355 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
5356 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
5358 case GL_POLYGON_OFFSET_FACTOR
:
5359 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
5361 case GL_POLYGON_OFFSET_UNITS
:
5362 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
5364 case GL_POLYGON_SMOOTH
:
5365 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
5367 case GL_POLYGON_SMOOTH_HINT
:
5368 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
5370 case GL_POLYGON_STIPPLE
:
5371 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
5373 case GL_PROJECTION_MATRIX
:
5374 for (i
=0;i
<16;i
++) {
5375 params
[i
] = (GLint
) ctx
->ProjectionMatrixStack
.Top
->m
[i
];
5378 case GL_PROJECTION_STACK_DEPTH
:
5379 *params
= (GLint
) (ctx
->ProjectionMatrixStack
.Depth
+ 1);
5381 case GL_READ_BUFFER
:
5382 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
5385 *params
= (GLint
) ctx
->Pixel
.RedBias
;
5388 *params
= (GLint
) ctx
->Visual
.redBits
;
5391 *params
= (GLint
) ctx
->Pixel
.RedScale
;
5393 case GL_RENDER_MODE
:
5394 *params
= (GLint
) ctx
->RenderMode
;
5396 case GL_RESCALE_NORMAL
:
5397 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
5400 *params
= (GLint
) ctx
->Visual
.rgbMode
;
5402 case GL_SCISSOR_BOX
:
5403 params
[0] = (GLint
) ctx
->Scissor
.X
;
5404 params
[1] = (GLint
) ctx
->Scissor
.Y
;
5405 params
[2] = (GLint
) ctx
->Scissor
.Width
;
5406 params
[3] = (GLint
) ctx
->Scissor
.Height
;
5408 case GL_SCISSOR_TEST
:
5409 *params
= (GLint
) ctx
->Scissor
.Enabled
;
5411 case GL_SELECTION_BUFFER_SIZE
:
5412 *params
= (GLint
) ctx
->Select
.BufferSize
;
5414 case GL_SHADE_MODEL
:
5415 *params
= (GLint
) ctx
->Light
.ShadeModel
;
5417 case GL_SHARED_TEXTURE_PALETTE_EXT
:
5418 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
5420 case GL_STENCIL_BITS
:
5421 *params
= ctx
->Visual
.stencilBits
;
5423 case GL_STENCIL_CLEAR_VALUE
:
5424 *params
= (GLint
) ctx
->Stencil
.Clear
;
5426 case GL_STENCIL_FAIL
:
5427 *params
= (GLint
) ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
];
5429 case GL_STENCIL_FUNC
:
5430 *params
= (GLint
) ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
];
5432 case GL_STENCIL_PASS_DEPTH_FAIL
:
5433 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
];
5435 case GL_STENCIL_PASS_DEPTH_PASS
:
5436 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
];
5438 case GL_STENCIL_REF
:
5439 *params
= (GLint
) ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
5441 case GL_STENCIL_TEST
:
5442 *params
= (GLint
) ctx
->Stencil
.Enabled
;
5444 case GL_STENCIL_VALUE_MASK
:
5445 *params
= (GLint
) ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
5447 case GL_STENCIL_WRITEMASK
:
5448 *params
= (GLint
) ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
5451 *params
= (GLint
) ctx
->Visual
.stereoMode
;
5453 case GL_SUBPIXEL_BITS
:
5454 *params
= ctx
->Const
.SubPixelBits
;
5457 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
5460 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
5463 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
5465 case GL_TEXTURE_BINDING_1D
:
5466 *params
= textureUnit
->Current1D
->Name
;
5468 case GL_TEXTURE_BINDING_2D
:
5469 *params
= textureUnit
->Current2D
->Name
;
5471 case GL_TEXTURE_BINDING_3D
:
5472 *params
= textureUnit
->Current3D
->Name
;
5474 case GL_TEXTURE_ENV_COLOR
:
5475 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
5476 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
5477 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
5478 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
5480 case GL_TEXTURE_ENV_MODE
:
5481 *params
= (GLint
) textureUnit
->EnvMode
;
5483 case GL_TEXTURE_GEN_S
:
5484 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
5486 case GL_TEXTURE_GEN_T
:
5487 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
5489 case GL_TEXTURE_GEN_R
:
5490 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
5492 case GL_TEXTURE_GEN_Q
:
5493 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
5495 case GL_TEXTURE_MATRIX
:
5496 for (i
=0;i
<16;i
++) {
5497 params
[i
] = (GLint
) ctx
->TextureMatrixStack
[texUnit
].Top
->m
[i
];
5500 case GL_TEXTURE_STACK_DEPTH
:
5501 *params
= (GLint
) (ctx
->TextureMatrixStack
[texUnit
].Depth
+ 1);
5503 case GL_UNPACK_ALIGNMENT
:
5504 *params
= ctx
->Unpack
.Alignment
;
5506 case GL_UNPACK_LSB_FIRST
:
5507 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
5509 case GL_UNPACK_ROW_LENGTH
:
5510 *params
= ctx
->Unpack
.RowLength
;
5512 case GL_UNPACK_SKIP_PIXELS
:
5513 *params
= ctx
->Unpack
.SkipPixels
;
5515 case GL_UNPACK_SKIP_ROWS
:
5516 *params
= ctx
->Unpack
.SkipRows
;
5518 case GL_UNPACK_SWAP_BYTES
:
5519 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
5521 case GL_UNPACK_SKIP_IMAGES_EXT
:
5522 *params
= ctx
->Unpack
.SkipImages
;
5524 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
5525 *params
= ctx
->Unpack
.ImageHeight
;
5527 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
5528 *params
= ctx
->Unpack
.ClientStorage
;
5531 params
[0] = (GLint
) ctx
->Viewport
.X
;
5532 params
[1] = (GLint
) ctx
->Viewport
.Y
;
5533 params
[2] = (GLint
) ctx
->Viewport
.Width
;
5534 params
[3] = (GLint
) ctx
->Viewport
.Height
;
5537 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
5540 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
5542 case GL_VERTEX_ARRAY
:
5543 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
5545 case GL_VERTEX_ARRAY_SIZE
:
5546 *params
= ctx
->Array
.Vertex
.Size
;
5548 case GL_VERTEX_ARRAY_TYPE
:
5549 *params
= ctx
->Array
.Vertex
.Type
;
5551 case GL_VERTEX_ARRAY_STRIDE
:
5552 *params
= ctx
->Array
.Vertex
.Stride
;
5554 case GL_VERTEX_ARRAY_COUNT_EXT
:
5557 case GL_NORMAL_ARRAY
:
5558 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
5560 case GL_NORMAL_ARRAY_TYPE
:
5561 *params
= ctx
->Array
.Normal
.Type
;
5563 case GL_NORMAL_ARRAY_STRIDE
:
5564 *params
= ctx
->Array
.Normal
.Stride
;
5566 case GL_NORMAL_ARRAY_COUNT_EXT
:
5569 case GL_COLOR_ARRAY
:
5570 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
5572 case GL_COLOR_ARRAY_SIZE
:
5573 *params
= ctx
->Array
.Color
.Size
;
5575 case GL_COLOR_ARRAY_TYPE
:
5576 *params
= ctx
->Array
.Color
.Type
;
5578 case GL_COLOR_ARRAY_STRIDE
:
5579 *params
= ctx
->Array
.Color
.Stride
;
5581 case GL_COLOR_ARRAY_COUNT_EXT
:
5584 case GL_INDEX_ARRAY
:
5585 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
5587 case GL_INDEX_ARRAY_TYPE
:
5588 *params
= ctx
->Array
.Index
.Type
;
5590 case GL_INDEX_ARRAY_STRIDE
:
5591 *params
= ctx
->Array
.Index
.Stride
;
5593 case GL_INDEX_ARRAY_COUNT_EXT
:
5596 case GL_TEXTURE_COORD_ARRAY
:
5597 *params
= (GLint
) ctx
->Array
.TexCoord
[clientUnit
].Enabled
;
5599 case GL_TEXTURE_COORD_ARRAY_SIZE
:
5600 *params
= ctx
->Array
.TexCoord
[clientUnit
].Size
;
5602 case GL_TEXTURE_COORD_ARRAY_TYPE
:
5603 *params
= ctx
->Array
.TexCoord
[clientUnit
].Type
;
5605 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
5606 *params
= ctx
->Array
.TexCoord
[clientUnit
].Stride
;
5608 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
5611 case GL_EDGE_FLAG_ARRAY
:
5612 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
5614 case GL_EDGE_FLAG_ARRAY_STRIDE
:
5615 *params
= ctx
->Array
.EdgeFlag
.Stride
;
5617 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
5621 /* GL_ARB_multitexture */
5622 case GL_MAX_TEXTURE_UNITS_ARB
:
5623 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5624 *params
= MIN2(ctx
->Const
.MaxTextureImageUnits
,
5625 ctx
->Const
.MaxTextureCoordUnits
);
5627 case GL_ACTIVE_TEXTURE_ARB
:
5628 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5629 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
5631 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
5632 CHECK_EXTENSION_I(ARB_multitexture
, pname
);
5633 *params
= GL_TEXTURE0_ARB
+ clientUnit
;
5636 /* GL_ARB_texture_cube_map */
5637 case GL_TEXTURE_CUBE_MAP_ARB
:
5638 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5639 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
5641 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
5642 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5643 *params
= textureUnit
->CurrentCubeMap
->Name
;
5645 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
5646 CHECK_EXTENSION_I(ARB_texture_cube_map
, pname
);
5647 *params
= (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
5650 /* GL_ARB_texture_compression */
5651 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
5652 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5653 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
5655 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
5656 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5657 *params
= (GLint
) _mesa_get_compressed_formats(ctx
, NULL
);
5659 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
5660 CHECK_EXTENSION_I(ARB_texture_compression
, pname
);
5661 (void) _mesa_get_compressed_formats(ctx
, params
);
5664 /* GL_EXT_compiled_vertex_array */
5665 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
5666 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5667 *params
= ctx
->Array
.LockFirst
;
5669 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
5670 CHECK_EXTENSION_I(EXT_compiled_vertex_array
, pname
);
5671 *params
= ctx
->Array
.LockCount
;
5674 /* GL_ARB_transpose_matrix */
5675 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
5679 _math_transposef(tm
, ctx
->ColorMatrixStack
.Top
->m
);
5680 for (i
=0;i
<16;i
++) {
5681 params
[i
] = (GLint
) tm
[i
];
5685 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
5689 _math_transposef(tm
, ctx
->ModelviewMatrixStack
.Top
->m
);
5690 for (i
=0;i
<16;i
++) {
5691 params
[i
] = (GLint
) tm
[i
];
5695 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
5699 _math_transposef(tm
, ctx
->ProjectionMatrixStack
.Top
->m
);
5700 for (i
=0;i
<16;i
++) {
5701 params
[i
] = (GLint
) tm
[i
];
5705 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
5709 _math_transposef(tm
, ctx
->TextureMatrixStack
[texUnit
].Top
->m
);
5710 for (i
=0;i
<16;i
++) {
5711 params
[i
] = (GLint
) tm
[i
];
5716 /* GL_HP_occlusion_test */
5717 case GL_OCCLUSION_TEST_HP
:
5718 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5719 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
5721 case GL_OCCLUSION_TEST_RESULT_HP
:
5722 CHECK_EXTENSION_I(HP_occlusion_test
, pname
);
5723 if (ctx
->Depth
.OcclusionTest
)
5724 *params
= (GLint
) ctx
->OcclusionResult
;
5726 *params
= (GLint
) ctx
->OcclusionResultSaved
;
5727 /* reset flag now */
5728 ctx
->OcclusionResult
= GL_FALSE
;
5729 ctx
->OcclusionResultSaved
= GL_FALSE
;
5732 /* GL_SGIS_pixel_texture */
5733 case GL_PIXEL_TEXTURE_SGIS
:
5734 CHECK_EXTENSION_I(SGIS_pixel_texture
, pname
);
5735 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5738 /* GL_SGIX_pixel_texture */
5739 case GL_PIXEL_TEX_GEN_SGIX
:
5740 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5741 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5743 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
5744 CHECK_EXTENSION_I(SGIX_pixel_texture
, pname
);
5745 *params
= (GLint
) pixel_texgen_mode(ctx
);
5748 /* GL_SGI_color_matrix (also in 1.2 imaging) */
5749 case GL_COLOR_MATRIX_SGI
:
5750 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5751 for (i
=0;i
<16;i
++) {
5752 params
[i
] = (GLint
) ctx
->ColorMatrixStack
.Top
->m
[i
];
5755 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5756 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5757 *params
= ctx
->ColorMatrixStack
.Depth
+ 1;
5759 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5760 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5761 *params
= MAX_COLOR_STACK_DEPTH
;
5763 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5764 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5765 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
5767 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5768 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5769 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
5771 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5772 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5773 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
5775 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5776 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5777 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
5779 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5780 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5781 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
5783 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5784 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5785 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
5787 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5788 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5789 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
5791 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5792 CHECK_EXTENSION_I(SGI_color_matrix
, pname
);
5793 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
5796 /* GL_EXT_convolution (also in 1.2 imaging) */
5797 case GL_CONVOLUTION_1D_EXT
:
5798 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5799 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
5801 case GL_CONVOLUTION_2D
:
5802 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5803 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
5805 case GL_SEPARABLE_2D
:
5806 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5807 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
5809 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5810 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5811 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
5813 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5814 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5815 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
5817 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5818 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5819 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
5821 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5822 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5823 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
5825 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5826 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5827 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
5829 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5830 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5831 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
5833 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5834 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5835 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5837 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5838 CHECK_EXTENSION_I(EXT_convolution
, pname
);
5839 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5842 /* GL_EXT_histogram (also in 1.2 imaging) */
5844 CHECK_EXTENSION_I(EXT_histogram
, pname
);
5845 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
5848 CHECK_EXTENSION_I(EXT_histogram
, pname
);
5849 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
5852 /* GL_SGI_color_table (also in 1.2 imaging */
5853 case GL_COLOR_TABLE_SGI
:
5854 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5855 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
5857 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5858 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5859 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
5861 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5862 CHECK_EXTENSION_I(SGI_color_table
, pname
);
5863 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
5866 /* GL_SGI_texture_color_table */
5867 case GL_TEXTURE_COLOR_TABLE_SGI
:
5868 CHECK_EXTENSION_I(SGI_texture_color_table
, pname
);
5869 *params
= (GLint
) textureUnit
->ColorTableEnabled
;
5872 /* GL_EXT_secondary_color */
5873 case GL_COLOR_SUM_EXT
:
5874 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5875 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
5877 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5878 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5879 FLUSH_CURRENT(ctx
, 0);
5880 params
[0] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]) );
5881 params
[1] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]) );
5882 params
[2] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]) );
5883 params
[3] = FLOAT_TO_INT( (ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]) );
5885 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5886 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5887 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
5889 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5890 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5891 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
5893 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5894 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5895 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5897 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5898 CHECK_EXTENSION_I(EXT_secondary_color
, pname
);
5899 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Size
;
5902 /* GL_EXT_fog_coord */
5903 case GL_CURRENT_FOG_COORDINATE_EXT
:
5904 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5905 FLUSH_CURRENT(ctx
, 0);
5906 *params
= (GLint
) ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
5908 case GL_FOG_COORDINATE_ARRAY_EXT
:
5909 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5910 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
5912 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5913 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5914 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
5916 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5917 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5918 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
5920 case GL_FOG_COORDINATE_SOURCE_EXT
:
5921 CHECK_EXTENSION_I(EXT_fog_coord
, pname
);
5922 *params
= (GLint
) ctx
->Fog
.FogCoordinateSource
;
5925 /* GL_EXT_texture_lod_bias */
5926 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5927 *params
= (GLint
) ctx
->Const
.MaxTextureLodBias
;
5930 /* GL_EXT_texture_filter_anisotropic */
5931 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5932 CHECK_EXTENSION_I(EXT_texture_filter_anisotropic
, pname
);
5933 *params
= (GLint
) ctx
->Const
.MaxTextureMaxAnisotropy
;
5936 /* GL_ARB_multisample */
5937 case GL_MULTISAMPLE_ARB
:
5938 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5939 *params
= (GLint
) ctx
->Multisample
.Enabled
;
5941 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5942 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5943 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToCoverage
;
5945 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5946 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5947 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToOne
;
5949 case GL_SAMPLE_COVERAGE_ARB
:
5950 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5951 *params
= (GLint
) ctx
->Multisample
.SampleCoverage
;
5953 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5954 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5955 *params
= (GLint
) ctx
->Multisample
.SampleCoverageValue
;
5957 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5958 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5959 *params
= (GLint
) ctx
->Multisample
.SampleCoverageInvert
;
5961 case GL_SAMPLE_BUFFERS_ARB
:
5962 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5963 *params
= 0; /* XXX fix someday */
5965 case GL_SAMPLES_ARB
:
5966 CHECK_EXTENSION_I(ARB_multisample
, pname
);
5967 *params
= 0; /* XXX fix someday */
5970 /* GL_IBM_rasterpos_clip */
5971 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5972 CHECK_EXTENSION_I(IBM_rasterpos_clip
, pname
);
5973 *params
= (GLint
) ctx
->Transform
.RasterPositionUnclipped
;
5976 /* GL_NV_point_sprite */
5977 case GL_POINT_SPRITE_NV
:
5978 CHECK_EXTENSION2_I(NV_point_sprite
, ARB_point_sprite
, pname
);
5979 *params
= (GLint
) ctx
->Point
.PointSprite
;
5981 case GL_POINT_SPRITE_R_MODE_NV
:
5982 CHECK_EXTENSION_I(NV_point_sprite
, pname
);
5983 *params
= (GLint
) ctx
->Point
.SpriteRMode
;
5986 /* GL_SGIS_generate_mipmap */
5987 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5988 CHECK_EXTENSION_I(SGIS_generate_mipmap
, pname
);
5989 *params
= (GLint
) ctx
->Hint
.GenerateMipmap
;
5992 #if FEATURE_NV_vertex_program
5993 case GL_VERTEX_PROGRAM_NV
:
5994 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5995 *params
= (GLint
) ctx
->VertexProgram
.Enabled
;
5997 case GL_VERTEX_PROGRAM_POINT_SIZE_NV
:
5998 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
5999 *params
= (GLint
) ctx
->VertexProgram
.PointSizeEnabled
;
6001 case GL_VERTEX_PROGRAM_TWO_SIDE_NV
:
6002 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6003 *params
= (GLint
) ctx
->VertexProgram
.TwoSideEnabled
;
6005 case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
:
6006 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6007 *params
= ctx
->Const
.MaxProgramMatrixStackDepth
;
6009 case GL_MAX_TRACK_MATRICES_NV
:
6010 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6011 *params
= ctx
->Const
.MaxProgramMatrices
;
6013 case GL_CURRENT_MATRIX_STACK_DEPTH_NV
:
6014 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6015 *params
= ctx
->CurrentStack
->Depth
+ 1;
6017 case GL_CURRENT_MATRIX_NV
:
6018 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6019 for (i
= 0; i
< 16; i
++)
6020 params
[i
] = (GLint
) ctx
->CurrentStack
->Top
->m
[i
];
6022 case GL_VERTEX_PROGRAM_BINDING_NV
:
6023 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6024 if (ctx
->VertexProgram
.Current
)
6025 *params
= (GLint
) ctx
->VertexProgram
.Current
->Base
.Id
;
6029 case GL_PROGRAM_ERROR_POSITION_NV
:
6030 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6031 *params
= (GLint
) ctx
->Program
.ErrorPos
;
6033 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
6034 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
6035 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
6036 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
6037 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
6038 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
6039 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
6040 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
6041 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
6042 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
6043 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
6044 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
6045 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
6046 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
6047 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
6048 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
6049 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6051 GLuint n
= (GLuint
) pname
- GL_VERTEX_ATTRIB_ARRAY0_NV
;
6052 *params
= (GLint
) ctx
->Array
.VertexAttrib
[n
].Enabled
;
6055 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
6056 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
6057 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
6058 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
6059 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
6060 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
6061 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
6062 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
6063 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
6064 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
6065 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
6066 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
6067 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
6068 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
6069 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
6070 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
6071 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6073 GLuint n
= (GLuint
) pname
- GL_MAP1_VERTEX_ATTRIB0_4_NV
;
6074 *params
= (GLint
) ctx
->Eval
.Map1Attrib
[n
];
6077 case GL_MAP2_VERTEX_ATTRIB0_4_NV
:
6078 case GL_MAP2_VERTEX_ATTRIB1_4_NV
:
6079 case GL_MAP2_VERTEX_ATTRIB2_4_NV
:
6080 case GL_MAP2_VERTEX_ATTRIB3_4_NV
:
6081 case GL_MAP2_VERTEX_ATTRIB4_4_NV
:
6082 case GL_MAP2_VERTEX_ATTRIB5_4_NV
:
6083 case GL_MAP2_VERTEX_ATTRIB6_4_NV
:
6084 case GL_MAP2_VERTEX_ATTRIB7_4_NV
:
6085 case GL_MAP2_VERTEX_ATTRIB8_4_NV
:
6086 case GL_MAP2_VERTEX_ATTRIB9_4_NV
:
6087 case GL_MAP2_VERTEX_ATTRIB10_4_NV
:
6088 case GL_MAP2_VERTEX_ATTRIB11_4_NV
:
6089 case GL_MAP2_VERTEX_ATTRIB12_4_NV
:
6090 case GL_MAP2_VERTEX_ATTRIB13_4_NV
:
6091 case GL_MAP2_VERTEX_ATTRIB14_4_NV
:
6092 case GL_MAP2_VERTEX_ATTRIB15_4_NV
:
6093 CHECK_EXTENSION_I(NV_vertex_program
, pname
);
6095 GLuint n
= (GLuint
) pname
- GL_MAP2_VERTEX_ATTRIB0_4_NV
;
6096 *params
= (GLint
) ctx
->Eval
.Map2Attrib
[n
];
6099 #endif /* FEATURE_NV_vertex_program */
6101 #if FEATURE_NV_fragment_program
6102 case GL_FRAGMENT_PROGRAM_NV
:
6103 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6104 *params
= (GLint
) ctx
->FragmentProgram
.Enabled
;
6106 case GL_MAX_TEXTURE_COORDS_NV
:
6107 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6108 *params
= (GLint
) ctx
->Const
.MaxTextureCoordUnits
;
6110 case GL_MAX_TEXTURE_IMAGE_UNITS_NV
:
6111 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6112 *params
= (GLint
) ctx
->Const
.MaxTextureImageUnits
;
6114 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
6115 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6116 if (ctx
->FragmentProgram
.Current
)
6117 *params
= (GLint
) ctx
->FragmentProgram
.Current
->Base
.Id
;
6121 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
6122 CHECK_EXTENSION_I(NV_fragment_program
, pname
);
6123 *params
= MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
6125 #endif /* FEATURE_NV_fragment_program */
6127 /* GL_NV_texture_rectangle */
6128 case GL_TEXTURE_RECTANGLE_NV
:
6129 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
6130 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
6132 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
6133 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
6134 *params
= (GLint
) textureUnit
->CurrentRect
->Name
;
6136 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
6137 CHECK_EXTENSION_I(NV_texture_rectangle
, pname
);
6138 *params
= (GLint
) ctx
->Const
.MaxTextureRectSize
;
6141 /* GL_EXT_stencil_two_side */
6142 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
6143 CHECK_EXTENSION_I(EXT_stencil_two_side
, pname
);
6144 *params
= (GLint
) ctx
->Stencil
.TestTwoSide
;
6146 case GL_ACTIVE_STENCIL_FACE_EXT
:
6147 CHECK_EXTENSION_I(EXT_stencil_two_side
, pname
);
6148 *params
= (GLint
) (ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
6151 /* GL_NV_light_max_exponent */
6152 case GL_MAX_SHININESS_NV
:
6153 *params
= (GLint
) ctx
->Const
.MaxShininess
;
6155 case GL_MAX_SPOT_EXPONENT_NV
:
6156 *params
= (GLint
) ctx
->Const
.MaxSpotExponent
;
6159 #if FEATURE_ARB_vertex_buffer_object
6160 case GL_ARRAY_BUFFER_BINDING_ARB
:
6161 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6162 *params
= (GLint
) ctx
->Array
.ArrayBufferObj
->Name
;
6164 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
6165 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6166 *params
= (GLint
) ctx
->Array
.Vertex
.BufferObj
->Name
;
6168 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
6169 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6170 *params
= (GLint
) ctx
->Array
.Normal
.BufferObj
->Name
;
6172 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
6173 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6174 *params
= (GLint
) ctx
->Array
.Color
.BufferObj
->Name
;
6176 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
6177 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6178 *params
= (GLint
) ctx
->Array
.Index
.BufferObj
->Name
;
6180 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
6181 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6182 *params
= (GLint
) ctx
->Array
.TexCoord
[clientUnit
].BufferObj
->Name
;
6184 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
6185 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6186 *params
= (GLint
) ctx
->Array
.EdgeFlag
.BufferObj
->Name
;
6188 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
6189 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6190 *params
= (GLint
) ctx
->Array
.SecondaryColor
.BufferObj
->Name
;
6192 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
6193 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6194 *params
= (GLint
) ctx
->Array
.FogCoord
.BufferObj
->Name
;
6196 /*case GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB: - not supported */
6197 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
6198 CHECK_EXTENSION_I(ARB_vertex_buffer_object
, pname
);
6199 *params
= (GLint
) ctx
->Array
.ElementArrayBufferObj
->Name
;
6203 #if FEATURE_ARB_fragment_program
6204 case GL_FRAGMENT_PROGRAM_ARB
:
6205 CHECK_EXTENSION_I(ARB_fragment_program
, pname
);
6206 *params
= ctx
->FragmentProgram
.Enabled
;
6208 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
6209 CHECK_EXTENSION_I(ARB_fragment_program
, pname
);
6210 params
[0] = (GLint
) ctx
->CurrentStack
->Top
->m
[0];
6211 params
[1] = (GLint
) ctx
->CurrentStack
->Top
->m
[4];
6212 params
[2] = (GLint
) ctx
->CurrentStack
->Top
->m
[8];
6213 params
[3] = (GLint
) ctx
->CurrentStack
->Top
->m
[12];
6214 params
[4] = (GLint
) ctx
->CurrentStack
->Top
->m
[1];
6215 params
[5] = (GLint
) ctx
->CurrentStack
->Top
->m
[5];
6216 params
[6] = (GLint
) ctx
->CurrentStack
->Top
->m
[9];
6217 params
[7] = (GLint
) ctx
->CurrentStack
->Top
->m
[13];
6218 params
[8] = (GLint
) ctx
->CurrentStack
->Top
->m
[2];
6219 params
[9] = (GLint
) ctx
->CurrentStack
->Top
->m
[6];
6220 params
[10] = (GLint
) ctx
->CurrentStack
->Top
->m
[10];
6221 params
[11] = (GLint
) ctx
->CurrentStack
->Top
->m
[14];
6222 params
[12] = (GLint
) ctx
->CurrentStack
->Top
->m
[3];
6223 params
[13] = (GLint
) ctx
->CurrentStack
->Top
->m
[7];
6224 params
[14] = (GLint
) ctx
->CurrentStack
->Top
->m
[11];
6225 params
[15] = (GLint
) ctx
->CurrentStack
->Top
->m
[15];
6227 /* Remaining ARB_fragment_program queries alias with
6228 * the GL_NV_fragment_program queries.
6232 /* GL_EXT_depth_bounds_test */
6233 case GL_DEPTH_BOUNDS_TEST_EXT
:
6234 CHECK_EXTENSION_I(EXT_depth_bounds_test
, pname
);
6235 params
[0] = ctx
->Depth
.BoundsTest
;
6237 case GL_DEPTH_BOUNDS_EXT
:
6238 CHECK_EXTENSION_I(EXT_depth_bounds_test
, pname
);
6239 params
[0] = (GLint
) ctx
->Depth
.BoundsMin
;
6240 params
[1] = (GLint
) ctx
->Depth
.BoundsMax
;
6243 #if FEATURE_MESA_program_debug
6244 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA
:
6245 CHECK_EXTENSION_I(MESA_program_debug
, pname
);
6246 *params
= (GLint
) ctx
->FragmentProgram
.CallbackEnabled
;
6248 case GL_VERTEX_PROGRAM_CALLBACK_MESA
:
6249 CHECK_EXTENSION_I(MESA_program_debug
, pname
);
6250 *params
= (GLint
) ctx
->VertexProgram
.CallbackEnabled
;
6252 case GL_FRAGMENT_PROGRAM_POSITION_MESA
:
6253 CHECK_EXTENSION_I(MESA_program_debug
, pname
);
6254 *params
= (GLint
) ctx
->FragmentProgram
.CurrentPosition
;
6256 case GL_VERTEX_PROGRAM_POSITION_MESA
:
6257 CHECK_EXTENSION_I(MESA_program_debug
, pname
);
6258 *params
= (GLint
) ctx
->VertexProgram
.CurrentPosition
;
6263 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv(pname=0x%x)", pname
);
6269 * Get the address of a selected pointer.
6271 * \param pname array or buffer to be returned.
6272 * \param params will hold the pointer speficifed by \p pname.
6274 * \sa glGetPointerv().
6276 * Tries to get the specified pointer via dd_function_table::GetPointerv,
6277 * otherwise gets the specified pointer from the current context.
6280 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
6282 GET_CURRENT_CONTEXT(ctx
);
6283 const GLuint clientUnit
= ctx
->Array
.ActiveTexture
;
6284 ASSERT_OUTSIDE_BEGIN_END(ctx
);
6289 if (MESA_VERBOSE
& VERBOSE_API
)
6290 _mesa_debug(ctx
, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname
));
6292 if (ctx
->Driver
.GetPointerv
6293 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
6297 case GL_VERTEX_ARRAY_POINTER
:
6298 *params
= ctx
->Array
.Vertex
.Ptr
;
6300 case GL_NORMAL_ARRAY_POINTER
:
6301 *params
= ctx
->Array
.Normal
.Ptr
;
6303 case GL_COLOR_ARRAY_POINTER
:
6304 *params
= ctx
->Array
.Color
.Ptr
;
6306 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
6307 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
6309 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
6310 *params
= ctx
->Array
.FogCoord
.Ptr
;
6312 case GL_INDEX_ARRAY_POINTER
:
6313 *params
= ctx
->Array
.Index
.Ptr
;
6315 case GL_TEXTURE_COORD_ARRAY_POINTER
:
6316 *params
= ctx
->Array
.TexCoord
[clientUnit
].Ptr
;
6318 case GL_EDGE_FLAG_ARRAY_POINTER
:
6319 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
6321 case GL_FEEDBACK_BUFFER_POINTER
:
6322 *params
= ctx
->Feedback
.Buffer
;
6324 case GL_SELECTION_BUFFER_POINTER
:
6325 *params
= ctx
->Select
.Buffer
;
6327 #if FEATURE_MESA_program_debug
6328 case GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA
:
6329 if (!ctx
->Extensions
.MESA_program_debug
) {
6330 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetPointerv");
6333 *params
= (GLvoid
*) ctx
->FragmentProgram
.Callback
;
6335 case GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA
:
6336 if (!ctx
->Extensions
.MESA_program_debug
) {
6337 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetPointerv");
6340 *params
= ctx
->FragmentProgram
.CallbackData
;
6342 case GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA
:
6343 if (!ctx
->Extensions
.MESA_program_debug
) {
6344 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetPointerv");
6347 *params
= (GLvoid
*) ctx
->VertexProgram
.Callback
;
6349 case GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA
:
6350 if (!ctx
->Extensions
.MESA_program_debug
) {
6351 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetPointerv");
6354 *params
= ctx
->VertexProgram
.CallbackData
;
6358 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
6365 * Get a string describing the current GL connection.
6367 * \param name name symbolic constant.
6369 * \sa glGetString().
6371 * Tries to get the string from dd_function_table::GetString, otherwise returns
6372 * the hardcoded strings.
6375 _mesa_GetString( GLenum name
)
6377 GET_CURRENT_CONTEXT(ctx
);
6378 static const char *vendor
= "Brian Paul";
6379 static const char *renderer
= "Mesa";
6380 static const char *version_1_2
= "1.2 Mesa " MESA_VERSION_STRING
;
6381 static const char *version_1_3
= "1.3 Mesa " MESA_VERSION_STRING
;
6382 static const char *version_1_4
= "1.4 Mesa " MESA_VERSION_STRING
;
6383 static const char *version_1_5
= "1.4 Mesa " MESA_VERSION_STRING
;
6385 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
6387 /* this is a required driver function */
6388 assert(ctx
->Driver
.GetString
);
6390 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
6396 return (const GLubyte
*) vendor
;
6398 return (const GLubyte
*) renderer
;
6400 if (ctx
->Extensions
.ARB_multisample
&&
6401 ctx
->Extensions
.ARB_multitexture
&&
6402 ctx
->Extensions
.ARB_texture_border_clamp
&&
6403 ctx
->Extensions
.ARB_texture_compression
&&
6404 ctx
->Extensions
.ARB_texture_cube_map
&&
6405 ctx
->Extensions
.EXT_texture_env_add
&&
6406 ctx
->Extensions
.ARB_texture_env_combine
&&
6407 ctx
->Extensions
.ARB_texture_env_dot3
) {
6408 if (ctx
->Extensions
.ARB_depth_texture
&&
6409 ctx
->Extensions
.ARB_shadow
&&
6410 ctx
->Extensions
.ARB_texture_env_crossbar
&&
6411 ctx
->Extensions
.ARB_texture_mirrored_repeat
&&
6412 ctx
->Extensions
.ARB_window_pos
&&
6413 ctx
->Extensions
.EXT_blend_color
&&
6414 ctx
->Extensions
.EXT_blend_func_separate
&&
6415 ctx
->Extensions
.EXT_blend_logic_op
&&
6416 ctx
->Extensions
.EXT_blend_minmax
&&
6417 ctx
->Extensions
.EXT_blend_subtract
&&
6418 ctx
->Extensions
.EXT_fog_coord
&&
6419 ctx
->Extensions
.EXT_multi_draw_arrays
&&
6420 ctx
->Extensions
.EXT_point_parameters
&& /*aka ARB*/
6421 ctx
->Extensions
.EXT_secondary_color
&&
6422 ctx
->Extensions
.EXT_stencil_wrap
&&
6423 ctx
->Extensions
.EXT_texture_lod_bias
&&
6424 ctx
->Extensions
.SGIS_generate_mipmap
) {
6425 if (ctx
->Extensions
.ARB_occlusion_query
&&
6426 ctx
->Extensions
.ARB_point_sprite
&&
6427 ctx
->Extensions
.ARB_vertex_buffer_object
&&
6428 ctx
->Extensions
.ARB_texture_non_power_of_two
&&
6429 ctx
->Extensions
.EXT_shadow_funcs
) {
6430 return (const GLubyte
*) version_1_5
;
6433 return (const GLubyte
*) version_1_4
;
6437 return (const GLubyte
*) version_1_3
;
6441 return (const GLubyte
*) version_1_2
;
6444 if (!ctx
->Extensions
.String
)
6445 ctx
->Extensions
.String
= _mesa_make_extension_string(ctx
);
6446 return (const GLubyte
*) ctx
->Extensions
.String
;
6447 #if FEATURE_NV_fragment_program
6448 case GL_PROGRAM_ERROR_STRING_NV
:
6449 if (ctx
->Extensions
.NV_fragment_program
) {
6450 return (const GLubyte
*) ctx
->Program
.ErrorString
;
6455 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
6456 return (const GLubyte
*) 0;
6463 * Execute a glGetError() command.
6465 * \return error number.
6467 * Returns __GLcontextRec::ErrorValue.
6470 _mesa_GetError( void )
6472 GET_CURRENT_CONTEXT(ctx
);
6473 GLenum e
= ctx
->ErrorValue
;
6474 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
6476 if (MESA_VERBOSE
& VERBOSE_API
)
6477 _mesa_debug(ctx
, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e
));
6479 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;