1 /* $Id: get.c,v 1.47 2000/12/09 20:35:32 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36 #include "extensions.h"
42 #include "math/m_matrix.h"
47 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
48 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
49 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
52 /* Needed for an Amiga compiler */
53 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
54 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
56 /* all other compilers */
57 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
58 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
64 pixel_texgen_mode(const GLcontext
*ctx
)
66 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
67 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
75 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
87 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
89 GET_CURRENT_CONTEXT(ctx
);
91 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
92 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
93 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
95 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetBooleanv");
100 if (MESA_VERBOSE
& VERBOSE_API
)
101 fprintf(stderr
, "glGetBooleanv %s\n", gl_lookup_enum_by_nr(pname
));
103 if (ctx
->Driver
.GetBooleanv
104 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
108 case GL_ACCUM_RED_BITS
:
109 *params
= INT_TO_BOOL(ctx
->Visual
.AccumRedBits
);
111 case GL_ACCUM_GREEN_BITS
:
112 *params
= INT_TO_BOOL(ctx
->Visual
.AccumGreenBits
);
114 case GL_ACCUM_BLUE_BITS
:
115 *params
= INT_TO_BOOL(ctx
->Visual
.AccumBlueBits
);
117 case GL_ACCUM_ALPHA_BITS
:
118 *params
= INT_TO_BOOL(ctx
->Visual
.AccumAlphaBits
);
120 case GL_ACCUM_CLEAR_VALUE
:
121 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
122 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
123 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
124 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
127 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
130 *params
= INT_TO_BOOL(ctx
->Visual
.AlphaBits
);
133 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
136 *params
= ctx
->Color
.AlphaEnabled
;
138 case GL_ALPHA_TEST_FUNC
:
139 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
141 case GL_ALPHA_TEST_REF
:
142 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
144 case GL_ATTRIB_STACK_DEPTH
:
145 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
148 *params
= ctx
->Eval
.AutoNormal
;
151 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
154 *params
= ctx
->Color
.BlendEnabled
;
157 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
160 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
162 case GL_BLEND_SRC_RGB_EXT
:
163 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
165 case GL_BLEND_DST_RGB_EXT
:
166 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
168 case GL_BLEND_SRC_ALPHA_EXT
:
169 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
171 case GL_BLEND_DST_ALPHA_EXT
:
172 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
174 case GL_BLEND_EQUATION_EXT
:
175 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
177 case GL_BLEND_COLOR_EXT
:
178 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
179 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
180 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
181 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
184 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
187 *params
= INT_TO_BOOL( ctx
->Visual
.BlueBits
);
190 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
192 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
193 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
201 *params
= ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
203 case GL_COLOR_CLEAR_VALUE
:
204 params
[0] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[0]);
205 params
[1] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[1]);
206 params
[2] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[2]);
207 params
[3] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[3]);
209 case GL_COLOR_MATERIAL
:
210 *params
= ctx
->Light
.ColorMaterialEnabled
;
212 case GL_COLOR_MATERIAL_FACE
:
213 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
215 case GL_COLOR_MATERIAL_PARAMETER
:
216 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
218 case GL_COLOR_WRITEMASK
:
219 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
220 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
221 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
222 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
225 *params
= ctx
->Polygon
.CullFlag
;
227 case GL_CULL_FACE_MODE
:
228 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
230 case GL_CURRENT_COLOR
:
231 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
232 params
[0] = INT_TO_BOOL(ctx
->Current
.Color
[0]);
233 params
[1] = INT_TO_BOOL(ctx
->Current
.Color
[1]);
234 params
[2] = INT_TO_BOOL(ctx
->Current
.Color
[2]);
235 params
[3] = INT_TO_BOOL(ctx
->Current
.Color
[3]);
237 case GL_CURRENT_INDEX
:
238 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
239 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
241 case GL_CURRENT_NORMAL
:
242 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
243 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[0]);
244 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[1]);
245 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[2]);
247 case GL_CURRENT_RASTER_COLOR
:
248 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
249 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
250 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
251 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
253 case GL_CURRENT_RASTER_DISTANCE
:
254 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
256 case GL_CURRENT_RASTER_INDEX
:
257 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
259 case GL_CURRENT_RASTER_POSITION
:
260 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
261 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
262 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
263 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
265 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
266 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0]);
267 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1]);
268 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2]);
269 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3]);
271 case GL_CURRENT_RASTER_POSITION_VALID
:
272 *params
= ctx
->Current
.RasterPosValid
;
274 case GL_CURRENT_TEXTURE_COORDS
:
275 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
276 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][0]);
277 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][1]);
278 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][2]);
279 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][3]);
282 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
285 *params
= INT_TO_BOOL(ctx
->Visual
.DepthBits
);
287 case GL_DEPTH_CLEAR_VALUE
:
288 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
291 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
294 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
295 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
298 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
301 *params
= ctx
->Depth
.Test
;
303 case GL_DEPTH_WRITEMASK
:
304 *params
= ctx
->Depth
.Mask
;
307 *params
= ctx
->Color
.DitherFlag
;
309 case GL_DOUBLEBUFFER
:
310 *params
= ctx
->Visual
.DBflag
;
313 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
316 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
317 *params
= ctx
->Current
.EdgeFlag
;
319 case GL_FEEDBACK_BUFFER_SIZE
:
320 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
322 case GL_FEEDBACK_BUFFER_TYPE
:
323 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
326 *params
= ctx
->Fog
.Enabled
;
329 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
330 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
331 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
332 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
335 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
338 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
341 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
344 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
347 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
350 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
353 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
356 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
359 *params
= INT_TO_BOOL( ctx
->Visual
.GreenBits
);
362 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
365 if (ctx
->Extensions
.EXT_histogram
) {
366 *params
= ctx
->Pixel
.HistogramEnabled
;
369 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
374 *params
= INT_TO_BOOL( ctx
->Visual
.IndexBits
);
376 case GL_INDEX_CLEAR_VALUE
:
377 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
380 *params
= ctx
->Visual
.RGBAflag
? GL_FALSE
: GL_TRUE
;
382 case GL_INDEX_OFFSET
:
383 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
386 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
388 case GL_INDEX_WRITEMASK
:
389 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
399 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
402 *params
= ctx
->Light
.Enabled
;
404 case GL_LIGHT_MODEL_AMBIENT
:
405 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
406 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
407 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
408 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
410 case GL_LIGHT_MODEL_COLOR_CONTROL
:
411 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
413 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
414 *params
= ctx
->Light
.Model
.LocalViewer
;
416 case GL_LIGHT_MODEL_TWO_SIDE
:
417 *params
= ctx
->Light
.Model
.TwoSide
;
420 *params
= ctx
->Line
.SmoothFlag
;
422 case GL_LINE_SMOOTH_HINT
:
423 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
425 case GL_LINE_STIPPLE
:
426 *params
= ctx
->Line
.StippleFlag
;
428 case GL_LINE_STIPPLE_PATTERN
:
429 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
431 case GL_LINE_STIPPLE_REPEAT
:
432 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
435 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
437 case GL_LINE_WIDTH_GRANULARITY
:
438 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
440 case GL_LINE_WIDTH_RANGE
:
441 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
442 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
444 case GL_ALIASED_LINE_WIDTH_RANGE
:
445 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
446 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
449 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
452 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
455 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
456 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
458 case GL_INDEX_LOGIC_OP
:
459 *params
= ctx
->Color
.IndexLogicOpEnabled
;
461 case GL_COLOR_LOGIC_OP
:
462 *params
= ctx
->Color
.ColorLogicOpEnabled
;
464 case GL_LOGIC_OP_MODE
:
465 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
467 case GL_MAP1_COLOR_4
:
468 *params
= ctx
->Eval
.Map1Color4
;
470 case GL_MAP1_GRID_DOMAIN
:
471 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
472 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
474 case GL_MAP1_GRID_SEGMENTS
:
475 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
478 *params
= ctx
->Eval
.Map1Index
;
481 *params
= ctx
->Eval
.Map1Normal
;
483 case GL_MAP1_TEXTURE_COORD_1
:
484 *params
= ctx
->Eval
.Map1TextureCoord1
;
486 case GL_MAP1_TEXTURE_COORD_2
:
487 *params
= ctx
->Eval
.Map1TextureCoord2
;
489 case GL_MAP1_TEXTURE_COORD_3
:
490 *params
= ctx
->Eval
.Map1TextureCoord3
;
492 case GL_MAP1_TEXTURE_COORD_4
:
493 *params
= ctx
->Eval
.Map1TextureCoord4
;
495 case GL_MAP1_VERTEX_3
:
496 *params
= ctx
->Eval
.Map1Vertex3
;
498 case GL_MAP1_VERTEX_4
:
499 *params
= ctx
->Eval
.Map1Vertex4
;
501 case GL_MAP2_COLOR_4
:
502 *params
= ctx
->Eval
.Map2Color4
;
504 case GL_MAP2_GRID_DOMAIN
:
505 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
506 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
507 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
508 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
510 case GL_MAP2_GRID_SEGMENTS
:
511 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
512 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
515 *params
= ctx
->Eval
.Map2Index
;
518 *params
= ctx
->Eval
.Map2Normal
;
520 case GL_MAP2_TEXTURE_COORD_1
:
521 *params
= ctx
->Eval
.Map2TextureCoord1
;
523 case GL_MAP2_TEXTURE_COORD_2
:
524 *params
= ctx
->Eval
.Map2TextureCoord2
;
526 case GL_MAP2_TEXTURE_COORD_3
:
527 *params
= ctx
->Eval
.Map2TextureCoord3
;
529 case GL_MAP2_TEXTURE_COORD_4
:
530 *params
= ctx
->Eval
.Map2TextureCoord4
;
532 case GL_MAP2_VERTEX_3
:
533 *params
= ctx
->Eval
.Map2Vertex3
;
535 case GL_MAP2_VERTEX_4
:
536 *params
= ctx
->Eval
.Map2Vertex4
;
539 *params
= ctx
->Pixel
.MapColorFlag
;
542 *params
= ctx
->Pixel
.MapStencilFlag
;
545 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
547 case GL_MAX_ATTRIB_STACK_DEPTH
:
548 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
550 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
551 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
553 case GL_MAX_CLIP_PLANES
:
554 *params
= INT_TO_BOOL(ctx
->Const
.MaxClipPlanes
);
556 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
557 *params
= INT_TO_BOOL(VB_MAX
);
559 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
560 *params
= INT_TO_BOOL(VB_MAX
);
562 case GL_MAX_EVAL_ORDER
:
563 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
566 *params
= INT_TO_BOOL(ctx
->Const
.MaxLights
);
568 case GL_MAX_LIST_NESTING
:
569 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
571 case GL_MAX_MODELVIEW_STACK_DEPTH
:
572 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
574 case GL_MAX_NAME_STACK_DEPTH
:
575 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
577 case GL_MAX_PIXEL_MAP_TABLE
:
578 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
580 case GL_MAX_PROJECTION_STACK_DEPTH
:
581 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
583 case GL_MAX_TEXTURE_SIZE
:
584 case GL_MAX_3D_TEXTURE_SIZE
:
585 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureSize
);
587 case GL_MAX_TEXTURE_STACK_DEPTH
:
588 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
590 case GL_MAX_VIEWPORT_DIMS
:
591 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
592 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
595 *params
= ctx
->Pixel
.MinMaxEnabled
;
597 case GL_MODELVIEW_MATRIX
:
599 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelView
.m
[i
]);
602 case GL_MODELVIEW_STACK_DEPTH
:
603 *params
= INT_TO_BOOL(ctx
->ModelViewStackDepth
+ 1);
605 case GL_NAME_STACK_DEPTH
:
606 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
609 *params
= ctx
->Transform
.Normalize
;
611 case GL_PACK_ALIGNMENT
:
612 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
614 case GL_PACK_LSB_FIRST
:
615 *params
= ctx
->Pack
.LsbFirst
;
617 case GL_PACK_ROW_LENGTH
:
618 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
620 case GL_PACK_SKIP_PIXELS
:
621 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
623 case GL_PACK_SKIP_ROWS
:
624 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
626 case GL_PACK_SWAP_BYTES
:
627 *params
= ctx
->Pack
.SwapBytes
;
629 case GL_PACK_SKIP_IMAGES_EXT
:
630 *params
= ctx
->Pack
.SkipImages
;
632 case GL_PACK_IMAGE_HEIGHT_EXT
:
633 *params
= ctx
->Pack
.ImageHeight
;
635 case GL_PERSPECTIVE_CORRECTION_HINT
:
636 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
638 case GL_PIXEL_MAP_A_TO_A_SIZE
:
639 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
641 case GL_PIXEL_MAP_B_TO_B_SIZE
:
642 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
644 case GL_PIXEL_MAP_G_TO_G_SIZE
:
645 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
647 case GL_PIXEL_MAP_I_TO_A_SIZE
:
648 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
650 case GL_PIXEL_MAP_I_TO_B_SIZE
:
651 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
653 case GL_PIXEL_MAP_I_TO_G_SIZE
:
654 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
656 case GL_PIXEL_MAP_I_TO_I_SIZE
:
657 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
659 case GL_PIXEL_MAP_I_TO_R_SIZE
:
660 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
662 case GL_PIXEL_MAP_R_TO_R_SIZE
:
663 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
665 case GL_PIXEL_MAP_S_TO_S_SIZE
:
666 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
669 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
671 case GL_POINT_SIZE_GRANULARITY
:
672 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
674 case GL_POINT_SIZE_RANGE
:
675 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
676 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
678 case GL_ALIASED_POINT_SIZE_RANGE
:
679 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
680 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
682 case GL_POINT_SMOOTH
:
683 *params
= ctx
->Point
.SmoothFlag
;
685 case GL_POINT_SMOOTH_HINT
:
686 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
688 case GL_POINT_SIZE_MIN_EXT
:
689 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
691 case GL_POINT_SIZE_MAX_EXT
:
692 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
694 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
695 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
697 case GL_DISTANCE_ATTENUATION_EXT
:
698 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
699 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
700 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
702 case GL_POLYGON_MODE
:
703 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
704 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
706 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
707 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
709 case GL_POLYGON_OFFSET_FACTOR
:
710 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
712 case GL_POLYGON_OFFSET_UNITS
:
713 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
715 case GL_POLYGON_SMOOTH
:
716 *params
= ctx
->Polygon
.SmoothFlag
;
718 case GL_POLYGON_SMOOTH_HINT
:
719 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
721 case GL_POLYGON_STIPPLE
:
722 *params
= ctx
->Polygon
.StippleFlag
;
724 case GL_PROJECTION_MATRIX
:
726 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrix
.m
[i
]);
729 case GL_PROJECTION_STACK_DEPTH
:
730 *params
= INT_TO_BOOL(ctx
->ProjectionStackDepth
+ 1);
733 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
736 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
739 *params
= INT_TO_BOOL( ctx
->Visual
.RedBits
);
742 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
745 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
747 case GL_RESCALE_NORMAL
:
748 *params
= ctx
->Transform
.RescaleNormals
;
751 *params
= ctx
->Visual
.RGBAflag
;
754 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
755 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
756 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
757 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
759 case GL_SCISSOR_TEST
:
760 *params
= ctx
->Scissor
.Enabled
;
762 case GL_SELECTION_BUFFER_SIZE
:
763 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
766 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
768 case GL_SHARED_TEXTURE_PALETTE_EXT
:
769 *params
= ctx
->Texture
.SharedPalette
;
771 case GL_STENCIL_BITS
:
772 *params
= INT_TO_BOOL(ctx
->Visual
.StencilBits
);
774 case GL_STENCIL_CLEAR_VALUE
:
775 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
777 case GL_STENCIL_FAIL
:
778 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
);
780 case GL_STENCIL_FUNC
:
781 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
);
783 case GL_STENCIL_PASS_DEPTH_FAIL
:
784 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
);
786 case GL_STENCIL_PASS_DEPTH_PASS
:
787 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
);
790 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
);
792 case GL_STENCIL_TEST
:
793 *params
= ctx
->Stencil
.Enabled
;
795 case GL_STENCIL_VALUE_MASK
:
796 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
);
798 case GL_STENCIL_WRITEMASK
:
799 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
);
802 *params
= ctx
->Visual
.StereoFlag
;
804 case GL_SUBPIXEL_BITS
:
805 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
808 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
811 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
814 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
816 case GL_TEXTURE_BINDING_1D
:
817 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
819 case GL_TEXTURE_BINDING_2D
:
820 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
822 case GL_TEXTURE_BINDING_3D
:
823 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
825 case GL_TEXTURE_ENV_COLOR
:
827 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
828 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
829 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
830 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
833 case GL_TEXTURE_ENV_MODE
:
834 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
836 case GL_TEXTURE_GEN_S
:
837 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
839 case GL_TEXTURE_GEN_T
:
840 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
842 case GL_TEXTURE_GEN_R
:
843 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
845 case GL_TEXTURE_GEN_Q
:
846 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
848 case GL_TEXTURE_MATRIX
:
851 FLOAT_TO_BOOL(ctx
->TextureMatrix
[texTransformUnit
].m
[i
]);
854 case GL_TEXTURE_STACK_DEPTH
:
855 *params
= INT_TO_BOOL(ctx
->TextureStackDepth
[texTransformUnit
] + 1);
857 case GL_UNPACK_ALIGNMENT
:
858 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
860 case GL_UNPACK_LSB_FIRST
:
861 *params
= ctx
->Unpack
.LsbFirst
;
863 case GL_UNPACK_ROW_LENGTH
:
864 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
866 case GL_UNPACK_SKIP_PIXELS
:
867 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
869 case GL_UNPACK_SKIP_ROWS
:
870 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
872 case GL_UNPACK_SWAP_BYTES
:
873 *params
= ctx
->Unpack
.SwapBytes
;
875 case GL_UNPACK_SKIP_IMAGES_EXT
:
876 *params
= ctx
->Unpack
.SkipImages
;
878 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
879 *params
= ctx
->Unpack
.ImageHeight
;
882 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
883 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
884 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
885 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
888 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
891 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
893 case GL_VERTEX_ARRAY
:
894 *params
= ctx
->Array
.Vertex
.Enabled
;
896 case GL_VERTEX_ARRAY_SIZE
:
897 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
899 case GL_VERTEX_ARRAY_TYPE
:
900 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
902 case GL_VERTEX_ARRAY_STRIDE
:
903 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
905 case GL_VERTEX_ARRAY_COUNT_EXT
:
906 *params
= INT_TO_BOOL(0);
908 case GL_NORMAL_ARRAY
:
909 *params
= ctx
->Array
.Normal
.Enabled
;
911 case GL_NORMAL_ARRAY_TYPE
:
912 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
914 case GL_NORMAL_ARRAY_STRIDE
:
915 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
917 case GL_NORMAL_ARRAY_COUNT_EXT
:
918 *params
= INT_TO_BOOL(0);
921 *params
= ctx
->Array
.Color
.Enabled
;
923 case GL_COLOR_ARRAY_SIZE
:
924 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
926 case GL_COLOR_ARRAY_TYPE
:
927 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
929 case GL_COLOR_ARRAY_STRIDE
:
930 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
932 case GL_COLOR_ARRAY_COUNT_EXT
:
933 *params
= INT_TO_BOOL(0);
936 *params
= ctx
->Array
.Index
.Enabled
;
938 case GL_INDEX_ARRAY_TYPE
:
939 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
941 case GL_INDEX_ARRAY_STRIDE
:
942 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
944 case GL_INDEX_ARRAY_COUNT_EXT
:
945 *params
= INT_TO_BOOL(0);
947 case GL_TEXTURE_COORD_ARRAY
:
948 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
950 case GL_TEXTURE_COORD_ARRAY_SIZE
:
951 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
953 case GL_TEXTURE_COORD_ARRAY_TYPE
:
954 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
956 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
957 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
959 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
960 *params
= INT_TO_BOOL(0);
962 case GL_EDGE_FLAG_ARRAY
:
963 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
965 case GL_EDGE_FLAG_ARRAY_STRIDE
:
966 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
969 /* GL_ARB_multitexture */
970 case GL_MAX_TEXTURE_UNITS_ARB
:
971 *params
= ctx
->Const
.MaxTextureUnits
;
973 case GL_ACTIVE_TEXTURE_ARB
:
974 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
976 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
977 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
980 /* GL_ARB_texture_cube_map */
981 case GL_TEXTURE_CUBE_MAP_ARB
:
982 if (ctx
->Extensions
.ARB_texture_cube_map
)
983 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
985 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
987 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
988 if (ctx
->Extensions
.ARB_texture_cube_map
)
989 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
991 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
993 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
994 if (ctx
->Extensions
.ARB_texture_cube_map
)
995 *params
= INT_TO_BOOL(ctx
->Const
.MaxCubeTextureSize
);
997 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1000 /* GL_ARB_texture_compression */
1001 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1002 if (ctx
->Extensions
.ARB_texture_compression
) {
1003 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1006 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1008 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1009 if (ctx
->Extensions
.ARB_texture_compression
) {
1010 *params
= INT_TO_BOOL(ctx
->Const
.NumCompressedTextureFormats
);
1013 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1015 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1016 if (ctx
->Extensions
.ARB_texture_compression
) {
1018 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
1019 params
[i
] = INT_TO_BOOL(ctx
->Const
.CompressedTextureFormats
[i
]);
1022 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1025 /* GL_PGI_misc_hints */
1026 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
1027 *params
= ENUM_TO_BOOL(GL_NICEST
);
1029 case GL_STRICT_LIGHTING_HINT_PGI
:
1030 *params
= ENUM_TO_BOOL(ctx
->Hint
.StrictLighting
);
1032 case GL_STRICT_SCISSOR_HINT_PGI
:
1033 case GL_FULL_STIPPLE_HINT_PGI
:
1034 *params
= ENUM_TO_BOOL(GL_TRUE
);
1036 case GL_CONSERVE_MEMORY_HINT_PGI
:
1037 *params
= ENUM_TO_BOOL(GL_FALSE
);
1039 case GL_ALWAYS_FAST_HINT_PGI
:
1040 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1041 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
1042 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
1044 case GL_ALWAYS_SOFT_HINT_PGI
:
1045 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1046 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
1047 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
1049 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
1050 *params
= (GLboolean
) GL_TRUE
;
1052 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
1053 *params
= (GLboolean
) ctx
->Hint
.AllowDrawWin
;
1055 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
1056 *params
= (GLboolean
) ctx
->Hint
.AllowDrawFrg
;
1058 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
1059 *params
= (GLboolean
) ctx
->Hint
.AllowDrawMem
;
1061 case GL_CLIP_NEAR_HINT_PGI
:
1062 case GL_CLIP_FAR_HINT_PGI
:
1063 *params
= ENUM_TO_BOOL(GL_TRUE
);
1065 case GL_WIDE_LINE_HINT_PGI
:
1066 *params
= ENUM_TO_BOOL(GL_DONT_CARE
);
1068 case GL_BACK_NORMALS_HINT_PGI
:
1069 *params
= ENUM_TO_BOOL(GL_TRUE
);
1071 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
1075 /* GL_EXT_compiled_vertex_array */
1076 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1077 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1079 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1080 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1083 /* GL_ARB_transpose_matrix */
1084 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1088 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
1089 for (i
=0;i
<16;i
++) {
1090 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1094 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1098 _math_transposef(tm
, ctx
->ModelView
.m
);
1099 for (i
=0;i
<16;i
++) {
1100 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1104 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1108 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
1109 for (i
=0;i
<16;i
++) {
1110 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1114 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1118 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
1119 for (i
=0;i
<16;i
++) {
1120 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1125 /* GL_HP_occlusion_test */
1126 case GL_OCCLUSION_TEST_HP
:
1127 if (ctx
->Extensions
.HP_occlusion_test
) {
1128 *params
= ctx
->Depth
.OcclusionTest
;
1131 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1134 case GL_OCCLUSION_TEST_RESULT_HP
:
1135 if (ctx
->Extensions
.HP_occlusion_test
) {
1136 if (ctx
->Depth
.OcclusionTest
)
1137 *params
= ctx
->OcclusionResult
;
1139 *params
= ctx
->OcclusionResultSaved
;
1140 /* reset flag now */
1141 ctx
->OcclusionResult
= GL_FALSE
;
1142 ctx
->OcclusionResultSaved
= GL_FALSE
;
1145 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1149 /* GL_SGIS_pixel_texture */
1150 case GL_PIXEL_TEXTURE_SGIS
:
1151 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1154 /* GL_SGIX_pixel_texture */
1155 case GL_PIXEL_TEX_GEN_SGIX
:
1156 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1158 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1159 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1162 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1163 case GL_COLOR_MATRIX_SGI
:
1164 for (i
=0;i
<16;i
++) {
1165 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrix
.m
[i
]);
1168 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1169 *params
= INT_TO_BOOL(ctx
->ColorStackDepth
+ 1);
1171 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1172 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1174 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1175 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1177 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1178 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1180 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1181 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1183 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1184 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1186 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1187 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1189 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1190 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1192 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1193 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1195 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1196 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1199 /* GL_EXT_convolution (also in 1.2 imaging) */
1200 case GL_CONVOLUTION_1D_EXT
:
1201 if (ctx
->Extensions
.EXT_convolution
) {
1202 *params
= ctx
->Pixel
.Convolution1DEnabled
;
1205 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1209 case GL_CONVOLUTION_2D
:
1210 if (ctx
->Extensions
.EXT_convolution
) {
1211 *params
= ctx
->Pixel
.Convolution2DEnabled
;
1214 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1218 case GL_SEPARABLE_2D
:
1219 if (ctx
->Extensions
.EXT_convolution
) {
1220 *params
= ctx
->Pixel
.Separable2DEnabled
;
1223 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1227 case GL_MAX_CONVOLUTION_WIDTH
:
1228 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionWidth
);
1230 case GL_MAX_CONVOLUTION_HEIGHT
:
1231 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionHeight
);
1233 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1234 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1236 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1237 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1239 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1240 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1242 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1243 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1245 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1246 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1248 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1249 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1251 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1252 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1254 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1255 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1258 /* GL_SGI_color_table (also in 1.2 imaging */
1259 case GL_COLOR_TABLE_SGI
:
1260 *params
= ctx
->Pixel
.ColorTableEnabled
;
1262 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1263 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1265 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1266 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1269 /* GL_EXT_secondary_color */
1270 case GL_COLOR_SUM_EXT
:
1271 *params
= ctx
->Fog
.ColorSumEnabled
;
1273 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1274 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1275 params
[0] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[0]);
1276 params
[1] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[1]);
1277 params
[2] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[2]);
1279 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1280 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1282 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1283 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1285 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1286 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1288 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1289 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1292 /* GL_EXT_fog_coord */
1293 case GL_CURRENT_FOG_COORDINATE_EXT
:
1294 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1295 *params
= FLOAT_TO_BOOL(ctx
->Current
.FogCoord
);
1297 case GL_FOG_COORDINATE_ARRAY_EXT
:
1298 *params
= ctx
->Array
.FogCoord
.Enabled
;
1300 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1301 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1303 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1304 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1307 /* GL_MESA_sprite_point */
1308 case GL_SPRITE_POINT_MESA
:
1309 if (ctx
->Extensions
.MESA_sprite_point
) {
1310 *params
= ctx
->Point
.SpriteMode
;
1313 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1319 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1327 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1329 GET_CURRENT_CONTEXT(ctx
);
1331 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1332 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
1333 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1335 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetDoublev");
1340 if (MESA_VERBOSE
& VERBOSE_API
)
1341 fprintf(stderr
, "glGetDoublev %s\n", gl_lookup_enum_by_nr(pname
));
1343 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1347 case GL_ACCUM_RED_BITS
:
1348 *params
= (GLdouble
) ctx
->Visual
.AccumRedBits
;
1350 case GL_ACCUM_GREEN_BITS
:
1351 *params
= (GLdouble
) ctx
->Visual
.AccumGreenBits
;
1353 case GL_ACCUM_BLUE_BITS
:
1354 *params
= (GLdouble
) ctx
->Visual
.AccumBlueBits
;
1356 case GL_ACCUM_ALPHA_BITS
:
1357 *params
= (GLdouble
) ctx
->Visual
.AccumAlphaBits
;
1359 case GL_ACCUM_CLEAR_VALUE
:
1360 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1361 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1362 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1363 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1366 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1369 *params
= (GLdouble
) ctx
->Visual
.AlphaBits
;
1371 case GL_ALPHA_SCALE
:
1372 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1375 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1377 case GL_ALPHA_TEST_FUNC
:
1378 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1380 case GL_ALPHA_TEST_REF
:
1381 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
1383 case GL_ATTRIB_STACK_DEPTH
:
1384 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1386 case GL_AUTO_NORMAL
:
1387 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1389 case GL_AUX_BUFFERS
:
1390 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1393 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1396 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1399 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1401 case GL_BLEND_SRC_RGB_EXT
:
1402 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1404 case GL_BLEND_DST_RGB_EXT
:
1405 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1407 case GL_BLEND_SRC_ALPHA_EXT
:
1408 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1410 case GL_BLEND_DST_ALPHA_EXT
:
1411 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1413 case GL_BLEND_EQUATION_EXT
:
1414 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1416 case GL_BLEND_COLOR_EXT
:
1417 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1418 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1419 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1420 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1423 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1426 *params
= (GLdouble
) ctx
->Visual
.BlueBits
;
1429 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1431 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1432 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1434 case GL_CLIP_PLANE0
:
1435 case GL_CLIP_PLANE1
:
1436 case GL_CLIP_PLANE2
:
1437 case GL_CLIP_PLANE3
:
1438 case GL_CLIP_PLANE4
:
1439 case GL_CLIP_PLANE5
:
1440 *params
= (GLdouble
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
1442 case GL_COLOR_CLEAR_VALUE
:
1443 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1444 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1445 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1446 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1448 case GL_COLOR_MATERIAL
:
1449 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1451 case GL_COLOR_MATERIAL_FACE
:
1452 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1454 case GL_COLOR_MATERIAL_PARAMETER
:
1455 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1457 case GL_COLOR_WRITEMASK
:
1458 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1459 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1460 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1461 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1464 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1466 case GL_CULL_FACE_MODE
:
1467 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1469 case GL_CURRENT_COLOR
:
1470 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1471 params
[0] = CHAN_TO_FLOAT(ctx
->Current
.Color
[0]);
1472 params
[1] = CHAN_TO_FLOAT(ctx
->Current
.Color
[1]);
1473 params
[2] = CHAN_TO_FLOAT(ctx
->Current
.Color
[2]);
1474 params
[3] = CHAN_TO_FLOAT(ctx
->Current
.Color
[3]);
1476 case GL_CURRENT_INDEX
:
1477 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1478 *params
= (GLdouble
) ctx
->Current
.Index
;
1480 case GL_CURRENT_NORMAL
:
1481 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1482 params
[0] = (GLdouble
) ctx
->Current
.Normal
[0];
1483 params
[1] = (GLdouble
) ctx
->Current
.Normal
[1];
1484 params
[2] = (GLdouble
) ctx
->Current
.Normal
[2];
1486 case GL_CURRENT_RASTER_COLOR
:
1487 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1488 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1489 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1490 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1492 case GL_CURRENT_RASTER_DISTANCE
:
1493 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1495 case GL_CURRENT_RASTER_INDEX
:
1496 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1498 case GL_CURRENT_RASTER_POSITION
:
1499 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1500 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1501 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1502 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1504 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1505 params
[0] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
1506 params
[1] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
1507 params
[2] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
1508 params
[3] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
1510 case GL_CURRENT_RASTER_POSITION_VALID
:
1511 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1513 case GL_CURRENT_TEXTURE_COORDS
:
1514 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1515 params
[0] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
1516 params
[1] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
1517 params
[2] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
1518 params
[3] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
1521 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1524 *params
= (GLdouble
) ctx
->Visual
.DepthBits
;
1526 case GL_DEPTH_CLEAR_VALUE
:
1527 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1530 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1532 case GL_DEPTH_RANGE
:
1533 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1534 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1536 case GL_DEPTH_SCALE
:
1537 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1540 *params
= (GLdouble
) ctx
->Depth
.Test
;
1542 case GL_DEPTH_WRITEMASK
:
1543 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1546 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1548 case GL_DOUBLEBUFFER
:
1549 *params
= (GLdouble
) ctx
->Visual
.DBflag
;
1551 case GL_DRAW_BUFFER
:
1552 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1555 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1556 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1558 case GL_FEEDBACK_BUFFER_SIZE
:
1559 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1561 case GL_FEEDBACK_BUFFER_TYPE
:
1562 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1565 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1568 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1569 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1570 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1571 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1573 case GL_FOG_DENSITY
:
1574 *params
= (GLdouble
) ctx
->Fog
.Density
;
1577 *params
= (GLdouble
) ctx
->Fog
.End
;
1580 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1583 *params
= (GLdouble
) ctx
->Fog
.Index
;
1586 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1589 *params
= (GLdouble
) ctx
->Fog
.Start
;
1592 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1595 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1598 *params
= (GLdouble
) ctx
->Visual
.GreenBits
;
1600 case GL_GREEN_SCALE
:
1601 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1604 if (ctx
->Extensions
.EXT_histogram
) {
1605 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
1608 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
1613 *params
= (GLdouble
) ctx
->Visual
.IndexBits
;
1615 case GL_INDEX_CLEAR_VALUE
:
1616 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1619 *params
= ctx
->Visual
.RGBAflag
? 0.0 : 1.0;
1621 case GL_INDEX_OFFSET
:
1622 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1624 case GL_INDEX_SHIFT
:
1625 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1627 case GL_INDEX_WRITEMASK
:
1628 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1638 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1641 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1643 case GL_LIGHT_MODEL_AMBIENT
:
1644 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1645 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1646 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1647 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1649 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1650 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1652 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1653 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1655 case GL_LIGHT_MODEL_TWO_SIDE
:
1656 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1658 case GL_LINE_SMOOTH
:
1659 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1661 case GL_LINE_SMOOTH_HINT
:
1662 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1664 case GL_LINE_STIPPLE
:
1665 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1667 case GL_LINE_STIPPLE_PATTERN
:
1668 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1670 case GL_LINE_STIPPLE_REPEAT
:
1671 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1674 *params
= (GLdouble
) ctx
->Line
.Width
;
1676 case GL_LINE_WIDTH_GRANULARITY
:
1677 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1679 case GL_LINE_WIDTH_RANGE
:
1680 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1681 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1683 case GL_ALIASED_LINE_WIDTH_RANGE
:
1684 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1685 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1688 *params
= (GLdouble
) ctx
->List
.ListBase
;
1691 *params
= (GLdouble
) ctx
->CurrentListNum
;
1694 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1695 : ENUM_TO_DOUBLE(GL_COMPILE
);
1697 case GL_INDEX_LOGIC_OP
:
1698 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1700 case GL_COLOR_LOGIC_OP
:
1701 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1703 case GL_LOGIC_OP_MODE
:
1704 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1706 case GL_MAP1_COLOR_4
:
1707 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1709 case GL_MAP1_GRID_DOMAIN
:
1710 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1711 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1713 case GL_MAP1_GRID_SEGMENTS
:
1714 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1717 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1719 case GL_MAP1_NORMAL
:
1720 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1722 case GL_MAP1_TEXTURE_COORD_1
:
1723 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1725 case GL_MAP1_TEXTURE_COORD_2
:
1726 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1728 case GL_MAP1_TEXTURE_COORD_3
:
1729 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1731 case GL_MAP1_TEXTURE_COORD_4
:
1732 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1734 case GL_MAP1_VERTEX_3
:
1735 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1737 case GL_MAP1_VERTEX_4
:
1738 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1740 case GL_MAP2_COLOR_4
:
1741 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1743 case GL_MAP2_GRID_DOMAIN
:
1744 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1745 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1746 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1747 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1749 case GL_MAP2_GRID_SEGMENTS
:
1750 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1751 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1754 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1756 case GL_MAP2_NORMAL
:
1757 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1759 case GL_MAP2_TEXTURE_COORD_1
:
1760 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1762 case GL_MAP2_TEXTURE_COORD_2
:
1763 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1765 case GL_MAP2_TEXTURE_COORD_3
:
1766 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1768 case GL_MAP2_TEXTURE_COORD_4
:
1769 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1771 case GL_MAP2_VERTEX_3
:
1772 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1774 case GL_MAP2_VERTEX_4
:
1775 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1778 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1780 case GL_MAP_STENCIL
:
1781 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1783 case GL_MATRIX_MODE
:
1784 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1786 case GL_MAX_ATTRIB_STACK_DEPTH
:
1787 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1789 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1790 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1792 case GL_MAX_CLIP_PLANES
:
1793 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
1795 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1796 *params
= (GLdouble
) VB_MAX
;
1798 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1799 *params
= (GLdouble
) VB_MAX
;
1801 case GL_MAX_EVAL_ORDER
:
1802 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1805 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
1807 case GL_MAX_LIST_NESTING
:
1808 *params
= (GLdouble
) MAX_LIST_NESTING
;
1810 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1811 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1813 case GL_MAX_NAME_STACK_DEPTH
:
1814 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1816 case GL_MAX_PIXEL_MAP_TABLE
:
1817 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1819 case GL_MAX_PROJECTION_STACK_DEPTH
:
1820 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1822 case GL_MAX_TEXTURE_SIZE
:
1823 case GL_MAX_3D_TEXTURE_SIZE
:
1824 *params
= (GLdouble
) ctx
->Const
.MaxTextureSize
;
1826 case GL_MAX_TEXTURE_STACK_DEPTH
:
1827 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1829 case GL_MAX_VIEWPORT_DIMS
:
1830 params
[0] = (GLdouble
) MAX_WIDTH
;
1831 params
[1] = (GLdouble
) MAX_HEIGHT
;
1834 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
1836 case GL_MODELVIEW_MATRIX
:
1837 for (i
=0;i
<16;i
++) {
1838 params
[i
] = (GLdouble
) ctx
->ModelView
.m
[i
];
1841 case GL_MODELVIEW_STACK_DEPTH
:
1842 *params
= (GLdouble
) (ctx
->ModelViewStackDepth
+ 1);
1844 case GL_NAME_STACK_DEPTH
:
1845 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1848 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1850 case GL_PACK_ALIGNMENT
:
1851 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1853 case GL_PACK_LSB_FIRST
:
1854 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1856 case GL_PACK_ROW_LENGTH
:
1857 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1859 case GL_PACK_SKIP_PIXELS
:
1860 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1862 case GL_PACK_SKIP_ROWS
:
1863 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1865 case GL_PACK_SWAP_BYTES
:
1866 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
1868 case GL_PACK_SKIP_IMAGES_EXT
:
1869 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
1871 case GL_PACK_IMAGE_HEIGHT_EXT
:
1872 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
1874 case GL_PERSPECTIVE_CORRECTION_HINT
:
1875 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
1877 case GL_PIXEL_MAP_A_TO_A_SIZE
:
1878 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
1880 case GL_PIXEL_MAP_B_TO_B_SIZE
:
1881 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
1883 case GL_PIXEL_MAP_G_TO_G_SIZE
:
1884 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
1886 case GL_PIXEL_MAP_I_TO_A_SIZE
:
1887 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
1889 case GL_PIXEL_MAP_I_TO_B_SIZE
:
1890 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
1892 case GL_PIXEL_MAP_I_TO_G_SIZE
:
1893 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
1895 case GL_PIXEL_MAP_I_TO_I_SIZE
:
1896 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
1898 case GL_PIXEL_MAP_I_TO_R_SIZE
:
1899 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
1901 case GL_PIXEL_MAP_R_TO_R_SIZE
:
1902 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
1904 case GL_PIXEL_MAP_S_TO_S_SIZE
:
1905 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
1908 *params
= (GLdouble
) ctx
->Point
.Size
;
1910 case GL_POINT_SIZE_GRANULARITY
:
1911 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
1913 case GL_POINT_SIZE_RANGE
:
1914 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
1915 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
1917 case GL_ALIASED_POINT_SIZE_RANGE
:
1918 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
1919 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
1921 case GL_POINT_SMOOTH
:
1922 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
1924 case GL_POINT_SMOOTH_HINT
:
1925 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
1927 case GL_POINT_SIZE_MIN_EXT
:
1928 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
1930 case GL_POINT_SIZE_MAX_EXT
:
1931 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
1933 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
1934 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
1936 case GL_DISTANCE_ATTENUATION_EXT
:
1937 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
1938 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
1939 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
1941 case GL_POLYGON_MODE
:
1942 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
1943 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
1945 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
1946 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1948 case GL_POLYGON_OFFSET_FACTOR
:
1949 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
1951 case GL_POLYGON_OFFSET_UNITS
:
1952 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1954 case GL_POLYGON_SMOOTH
:
1955 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
1957 case GL_POLYGON_SMOOTH_HINT
:
1958 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
1960 case GL_POLYGON_STIPPLE
:
1961 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
1963 case GL_PROJECTION_MATRIX
:
1964 for (i
=0;i
<16;i
++) {
1965 params
[i
] = (GLdouble
) ctx
->ProjectionMatrix
.m
[i
];
1968 case GL_PROJECTION_STACK_DEPTH
:
1969 *params
= (GLdouble
) (ctx
->ProjectionStackDepth
+ 1);
1971 case GL_READ_BUFFER
:
1972 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
1975 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
1978 *params
= (GLdouble
) ctx
->Visual
.RedBits
;
1981 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
1983 case GL_RENDER_MODE
:
1984 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
1986 case GL_RESCALE_NORMAL
:
1987 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
1990 *params
= (GLdouble
) ctx
->Visual
.RGBAflag
;
1992 case GL_SCISSOR_BOX
:
1993 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
1994 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
1995 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
1996 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
1998 case GL_SCISSOR_TEST
:
1999 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
2001 case GL_SELECTION_BUFFER_SIZE
:
2002 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
2004 case GL_SHADE_MODEL
:
2005 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
2007 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2008 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
2010 case GL_STENCIL_BITS
:
2011 *params
= (GLdouble
) ctx
->Visual
.StencilBits
;
2013 case GL_STENCIL_CLEAR_VALUE
:
2014 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
2016 case GL_STENCIL_FAIL
:
2017 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
2019 case GL_STENCIL_FUNC
:
2020 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
2022 case GL_STENCIL_PASS_DEPTH_FAIL
:
2023 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
2025 case GL_STENCIL_PASS_DEPTH_PASS
:
2026 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
2028 case GL_STENCIL_REF
:
2029 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
2031 case GL_STENCIL_TEST
:
2032 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2034 case GL_STENCIL_VALUE_MASK
:
2035 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
2037 case GL_STENCIL_WRITEMASK
:
2038 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
2041 *params
= (GLdouble
) ctx
->Visual
.StereoFlag
;
2043 case GL_SUBPIXEL_BITS
:
2044 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2047 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2050 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2053 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2055 case GL_TEXTURE_BINDING_1D
:
2056 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2058 case GL_TEXTURE_BINDING_2D
:
2059 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2061 case GL_TEXTURE_BINDING_3D
:
2062 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2064 case GL_TEXTURE_ENV_COLOR
:
2065 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2066 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2067 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2068 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2070 case GL_TEXTURE_ENV_MODE
:
2071 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2073 case GL_TEXTURE_GEN_S
:
2074 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2076 case GL_TEXTURE_GEN_T
:
2077 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2079 case GL_TEXTURE_GEN_R
:
2080 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2082 case GL_TEXTURE_GEN_Q
:
2083 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2085 case GL_TEXTURE_MATRIX
:
2086 for (i
=0;i
<16;i
++) {
2087 params
[i
] = (GLdouble
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
2090 case GL_TEXTURE_STACK_DEPTH
:
2091 *params
= (GLdouble
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
2093 case GL_UNPACK_ALIGNMENT
:
2094 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2096 case GL_UNPACK_LSB_FIRST
:
2097 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2099 case GL_UNPACK_ROW_LENGTH
:
2100 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2102 case GL_UNPACK_SKIP_PIXELS
:
2103 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2105 case GL_UNPACK_SKIP_ROWS
:
2106 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2108 case GL_UNPACK_SWAP_BYTES
:
2109 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2111 case GL_UNPACK_SKIP_IMAGES_EXT
:
2112 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2114 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2115 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2118 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2119 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2120 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2121 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2124 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2127 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2129 case GL_VERTEX_ARRAY
:
2130 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2132 case GL_VERTEX_ARRAY_SIZE
:
2133 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2135 case GL_VERTEX_ARRAY_TYPE
:
2136 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2138 case GL_VERTEX_ARRAY_STRIDE
:
2139 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2141 case GL_VERTEX_ARRAY_COUNT_EXT
:
2144 case GL_NORMAL_ARRAY
:
2145 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2147 case GL_NORMAL_ARRAY_TYPE
:
2148 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2150 case GL_NORMAL_ARRAY_STRIDE
:
2151 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2153 case GL_NORMAL_ARRAY_COUNT_EXT
:
2156 case GL_COLOR_ARRAY
:
2157 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2159 case GL_COLOR_ARRAY_SIZE
:
2160 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2162 case GL_COLOR_ARRAY_TYPE
:
2163 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2165 case GL_COLOR_ARRAY_STRIDE
:
2166 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2168 case GL_COLOR_ARRAY_COUNT_EXT
:
2171 case GL_INDEX_ARRAY
:
2172 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2174 case GL_INDEX_ARRAY_TYPE
:
2175 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2177 case GL_INDEX_ARRAY_STRIDE
:
2178 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2180 case GL_INDEX_ARRAY_COUNT_EXT
:
2183 case GL_TEXTURE_COORD_ARRAY
:
2184 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2186 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2187 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2189 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2190 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2192 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2193 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2195 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2198 case GL_EDGE_FLAG_ARRAY
:
2199 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2201 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2202 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2204 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2208 /* GL_ARB_multitexture */
2209 case GL_MAX_TEXTURE_UNITS_ARB
:
2210 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2212 case GL_ACTIVE_TEXTURE_ARB
:
2213 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2215 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2216 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2219 /* GL_ARB_texture_cube_map */
2220 case GL_TEXTURE_CUBE_MAP_ARB
:
2221 if (ctx
->Extensions
.ARB_texture_cube_map
)
2222 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2224 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2226 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2227 if (ctx
->Extensions
.ARB_texture_cube_map
)
2228 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2230 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2232 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2233 if (ctx
->Extensions
.ARB_texture_cube_map
)
2234 *params
= (GLdouble
) ctx
->Const
.MaxCubeTextureSize
;
2236 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2239 /* GL_ARB_texture_compression */
2240 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2241 if (ctx
->Extensions
.ARB_texture_compression
) {
2242 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2245 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2247 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2248 if (ctx
->Extensions
.ARB_texture_compression
) {
2249 *params
= (GLdouble
) ctx
->Const
.NumCompressedTextureFormats
;
2252 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2254 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2255 if (ctx
->Extensions
.ARB_texture_compression
) {
2257 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
2258 params
[i
] = (GLdouble
) ctx
->Const
.CompressedTextureFormats
[i
];
2261 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2264 /* GL_PGI_misc_hints */
2265 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
2266 *params
= ENUM_TO_DOUBLE(GL_NICEST
);
2268 case GL_STRICT_LIGHTING_HINT_PGI
:
2269 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.StrictLighting
);
2271 case GL_STRICT_SCISSOR_HINT_PGI
:
2272 case GL_FULL_STIPPLE_HINT_PGI
:
2273 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2275 case GL_CONSERVE_MEMORY_HINT_PGI
:
2276 *params
= ENUM_TO_DOUBLE(GL_FALSE
);
2278 case GL_ALWAYS_FAST_HINT_PGI
:
2279 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2280 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
2281 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
2283 case GL_ALWAYS_SOFT_HINT_PGI
:
2284 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2285 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
2286 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
2288 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
2289 *params
= (GLdouble
) GL_TRUE
;
2291 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
2292 *params
= (GLdouble
) ctx
->Hint
.AllowDrawWin
;
2294 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
2295 *params
= (GLdouble
) ctx
->Hint
.AllowDrawFrg
;
2297 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
2298 *params
= (GLdouble
) ctx
->Hint
.AllowDrawMem
;
2300 case GL_CLIP_NEAR_HINT_PGI
:
2301 case GL_CLIP_FAR_HINT_PGI
:
2302 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2304 case GL_WIDE_LINE_HINT_PGI
:
2305 *params
= ENUM_TO_DOUBLE(GL_DONT_CARE
);
2307 case GL_BACK_NORMALS_HINT_PGI
:
2308 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2310 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
2314 /* GL_EXT_compiled_vertex_array */
2315 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2316 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2318 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2319 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2322 /* GL_ARB_transpose_matrix */
2323 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2327 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
2328 for (i
=0;i
<16;i
++) {
2329 params
[i
] = (GLdouble
) tm
[i
];
2333 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2337 _math_transposef(tm
, ctx
->ModelView
.m
);
2338 for (i
=0;i
<16;i
++) {
2339 params
[i
] = (GLdouble
) tm
[i
];
2343 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2347 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
2348 for (i
=0;i
<16;i
++) {
2349 params
[i
] = (GLdouble
) tm
[i
];
2353 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2357 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
2358 for (i
=0;i
<16;i
++) {
2359 params
[i
] = (GLdouble
) tm
[i
];
2364 /* GL_HP_occlusion_test */
2365 case GL_OCCLUSION_TEST_HP
:
2366 if (ctx
->Extensions
.HP_occlusion_test
) {
2367 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2370 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2373 case GL_OCCLUSION_TEST_RESULT_HP
:
2374 if (ctx
->Extensions
.HP_occlusion_test
) {
2375 if (ctx
->Depth
.OcclusionTest
)
2376 *params
= (GLdouble
) ctx
->OcclusionResult
;
2378 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2379 /* reset flag now */
2380 ctx
->OcclusionResult
= GL_FALSE
;
2381 ctx
->OcclusionResultSaved
= GL_FALSE
;
2384 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2388 /* GL_SGIS_pixel_texture */
2389 case GL_PIXEL_TEXTURE_SGIS
:
2390 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2393 /* GL_SGIX_pixel_texture */
2394 case GL_PIXEL_TEX_GEN_SGIX
:
2395 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2397 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2398 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2401 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2402 case GL_COLOR_MATRIX_SGI
:
2403 for (i
=0;i
<16;i
++) {
2404 params
[i
] = (GLdouble
) ctx
->ColorMatrix
.m
[i
];
2407 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2408 *params
= (GLdouble
) (ctx
->ColorStackDepth
+ 1);
2410 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2411 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2413 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2414 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2416 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2417 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2419 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2420 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2422 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2423 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2425 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2426 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2428 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2429 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2431 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2432 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2434 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2435 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2438 /* GL_EXT_convolution (also in 1.2 imaging) */
2439 case GL_CONVOLUTION_1D_EXT
:
2440 if (ctx
->Extensions
.EXT_convolution
) {
2441 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2444 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2448 case GL_CONVOLUTION_2D
:
2449 if (ctx
->Extensions
.EXT_convolution
) {
2450 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2453 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2457 case GL_SEPARABLE_2D
:
2458 if (ctx
->Extensions
.EXT_convolution
) {
2459 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2462 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2466 case GL_MAX_CONVOLUTION_WIDTH
:
2467 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionWidth
;
2469 case GL_MAX_CONVOLUTION_HEIGHT
:
2470 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionHeight
;
2472 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2473 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2475 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2476 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2478 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2479 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2481 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2482 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2484 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2485 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2487 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2488 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2490 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2491 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2493 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2494 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2497 /* GL_SGI_color_table (also in 1.2 imaging */
2498 case GL_COLOR_TABLE_SGI
:
2499 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2501 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2502 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2504 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2505 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2508 /* GL_EXT_secondary_color */
2509 case GL_COLOR_SUM_EXT
:
2510 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2512 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2513 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2514 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[0]);
2515 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[1]);
2516 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[2]);
2518 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2519 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2521 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2522 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2524 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2525 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2527 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2528 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2531 /* GL_EXT_fog_coord */
2532 case GL_CURRENT_FOG_COORDINATE_EXT
:
2533 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2534 *params
= (GLdouble
) ctx
->Current
.FogCoord
;
2536 case GL_FOG_COORDINATE_ARRAY_EXT
:
2537 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2539 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2540 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2542 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2543 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2546 /* GL_MESA_sprite_point */
2547 case GL_SPRITE_POINT_MESA
:
2548 if (ctx
->Extensions
.MESA_sprite_point
) {
2549 *params
= (GLdouble
) ctx
->Point
.SpriteMode
;
2552 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2558 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2566 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2568 GET_CURRENT_CONTEXT(ctx
);
2570 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2571 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
2572 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2574 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetFloatv");
2579 if (MESA_VERBOSE
& VERBOSE_API
)
2580 fprintf(stderr
, "glGetFloatv %s\n", gl_lookup_enum_by_nr(pname
));
2582 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2586 case GL_ACCUM_RED_BITS
:
2587 *params
= (GLfloat
) ctx
->Visual
.AccumRedBits
;
2589 case GL_ACCUM_GREEN_BITS
:
2590 *params
= (GLfloat
) ctx
->Visual
.AccumGreenBits
;
2592 case GL_ACCUM_BLUE_BITS
:
2593 *params
= (GLfloat
) ctx
->Visual
.AccumBlueBits
;
2595 case GL_ACCUM_ALPHA_BITS
:
2596 *params
= (GLfloat
) ctx
->Visual
.AccumAlphaBits
;
2598 case GL_ACCUM_CLEAR_VALUE
:
2599 params
[0] = ctx
->Accum
.ClearColor
[0];
2600 params
[1] = ctx
->Accum
.ClearColor
[1];
2601 params
[2] = ctx
->Accum
.ClearColor
[2];
2602 params
[3] = ctx
->Accum
.ClearColor
[3];
2605 *params
= ctx
->Pixel
.AlphaBias
;
2608 *params
= (GLfloat
) ctx
->Visual
.AlphaBits
;
2610 case GL_ALPHA_SCALE
:
2611 *params
= ctx
->Pixel
.AlphaScale
;
2614 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2616 case GL_ALPHA_TEST_FUNC
:
2617 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2619 case GL_ALPHA_TEST_REF
:
2620 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
2622 case GL_ATTRIB_STACK_DEPTH
:
2623 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2625 case GL_AUTO_NORMAL
:
2626 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2628 case GL_AUX_BUFFERS
:
2629 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2632 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2635 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2638 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2640 case GL_BLEND_SRC_RGB_EXT
:
2641 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2643 case GL_BLEND_DST_RGB_EXT
:
2644 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2646 case GL_BLEND_SRC_ALPHA_EXT
:
2647 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2649 case GL_BLEND_DST_ALPHA_EXT
:
2650 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2652 case GL_BLEND_EQUATION_EXT
:
2653 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2655 case GL_BLEND_COLOR_EXT
:
2656 params
[0] = ctx
->Color
.BlendColor
[0];
2657 params
[1] = ctx
->Color
.BlendColor
[1];
2658 params
[2] = ctx
->Color
.BlendColor
[2];
2659 params
[3] = ctx
->Color
.BlendColor
[3];
2662 *params
= ctx
->Pixel
.BlueBias
;
2665 *params
= (GLfloat
) ctx
->Visual
.BlueBits
;
2668 *params
= ctx
->Pixel
.BlueScale
;
2670 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2671 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2673 case GL_CLIP_PLANE0
:
2674 case GL_CLIP_PLANE1
:
2675 case GL_CLIP_PLANE2
:
2676 case GL_CLIP_PLANE3
:
2677 case GL_CLIP_PLANE4
:
2678 case GL_CLIP_PLANE5
:
2679 *params
= (GLfloat
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
2681 case GL_COLOR_CLEAR_VALUE
:
2682 params
[0] = (GLfloat
) ctx
->Color
.ClearColor
[0];
2683 params
[1] = (GLfloat
) ctx
->Color
.ClearColor
[1];
2684 params
[2] = (GLfloat
) ctx
->Color
.ClearColor
[2];
2685 params
[3] = (GLfloat
) ctx
->Color
.ClearColor
[3];
2687 case GL_COLOR_MATERIAL
:
2688 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2690 case GL_COLOR_MATERIAL_FACE
:
2691 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2693 case GL_COLOR_MATERIAL_PARAMETER
:
2694 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2696 case GL_COLOR_WRITEMASK
:
2697 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2698 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2699 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2700 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2703 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2705 case GL_CULL_FACE_MODE
:
2706 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2708 case GL_CURRENT_COLOR
:
2709 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2710 params
[0] = CHAN_TO_FLOAT(ctx
->Current
.Color
[0]);
2711 params
[1] = CHAN_TO_FLOAT(ctx
->Current
.Color
[1]);
2712 params
[2] = CHAN_TO_FLOAT(ctx
->Current
.Color
[2]);
2713 params
[3] = CHAN_TO_FLOAT(ctx
->Current
.Color
[3]);
2715 case GL_CURRENT_INDEX
:
2716 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2717 *params
= (GLfloat
) ctx
->Current
.Index
;
2719 case GL_CURRENT_NORMAL
:
2720 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2721 params
[0] = ctx
->Current
.Normal
[0];
2722 params
[1] = ctx
->Current
.Normal
[1];
2723 params
[2] = ctx
->Current
.Normal
[2];
2725 case GL_CURRENT_RASTER_COLOR
:
2726 params
[0] = ctx
->Current
.RasterColor
[0];
2727 params
[1] = ctx
->Current
.RasterColor
[1];
2728 params
[2] = ctx
->Current
.RasterColor
[2];
2729 params
[3] = ctx
->Current
.RasterColor
[3];
2731 case GL_CURRENT_RASTER_DISTANCE
:
2732 params
[0] = ctx
->Current
.RasterDistance
;
2734 case GL_CURRENT_RASTER_INDEX
:
2735 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2737 case GL_CURRENT_RASTER_POSITION
:
2738 params
[0] = ctx
->Current
.RasterPos
[0];
2739 params
[1] = ctx
->Current
.RasterPos
[1];
2740 params
[2] = ctx
->Current
.RasterPos
[2];
2741 params
[3] = ctx
->Current
.RasterPos
[3];
2743 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2744 params
[0] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
2745 params
[1] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
2746 params
[2] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
2747 params
[3] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
2749 case GL_CURRENT_RASTER_POSITION_VALID
:
2750 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2752 case GL_CURRENT_TEXTURE_COORDS
:
2753 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2754 params
[0] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
2755 params
[1] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
2756 params
[2] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
2757 params
[3] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
2760 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2763 *params
= (GLfloat
) ctx
->Visual
.DepthBits
;
2765 case GL_DEPTH_CLEAR_VALUE
:
2766 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2769 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2771 case GL_DEPTH_RANGE
:
2772 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2773 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2775 case GL_DEPTH_SCALE
:
2776 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2779 *params
= (GLfloat
) ctx
->Depth
.Test
;
2781 case GL_DEPTH_WRITEMASK
:
2782 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2785 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2787 case GL_DOUBLEBUFFER
:
2788 *params
= (GLfloat
) ctx
->Visual
.DBflag
;
2790 case GL_DRAW_BUFFER
:
2791 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2794 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2795 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2797 case GL_FEEDBACK_BUFFER_SIZE
:
2798 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2800 case GL_FEEDBACK_BUFFER_TYPE
:
2801 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2804 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2807 params
[0] = ctx
->Fog
.Color
[0];
2808 params
[1] = ctx
->Fog
.Color
[1];
2809 params
[2] = ctx
->Fog
.Color
[2];
2810 params
[3] = ctx
->Fog
.Color
[3];
2812 case GL_FOG_DENSITY
:
2813 *params
= ctx
->Fog
.Density
;
2816 *params
= ctx
->Fog
.End
;
2819 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2822 *params
= ctx
->Fog
.Index
;
2825 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2828 *params
= ctx
->Fog
.Start
;
2831 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2834 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2837 *params
= (GLfloat
) ctx
->Visual
.GreenBits
;
2839 case GL_GREEN_SCALE
:
2840 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
2843 if (ctx
->Extensions
.EXT_histogram
) {
2844 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
2847 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
2852 *params
= (GLfloat
) ctx
->Visual
.IndexBits
;
2854 case GL_INDEX_CLEAR_VALUE
:
2855 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
2858 *params
= ctx
->Visual
.RGBAflag
? 0.0F
: 1.0F
;
2860 case GL_INDEX_OFFSET
:
2861 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
2863 case GL_INDEX_SHIFT
:
2864 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
2866 case GL_INDEX_WRITEMASK
:
2867 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
2877 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
2880 *params
= (GLfloat
) ctx
->Light
.Enabled
;
2882 case GL_LIGHT_MODEL_AMBIENT
:
2883 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2884 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2885 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2886 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2888 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2889 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2891 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2892 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
2894 case GL_LIGHT_MODEL_TWO_SIDE
:
2895 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
2897 case GL_LINE_SMOOTH
:
2898 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
2900 case GL_LINE_SMOOTH_HINT
:
2901 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2903 case GL_LINE_STIPPLE
:
2904 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
2906 case GL_LINE_STIPPLE_PATTERN
:
2907 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
2909 case GL_LINE_STIPPLE_REPEAT
:
2910 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
2913 *params
= (GLfloat
) ctx
->Line
.Width
;
2915 case GL_LINE_WIDTH_GRANULARITY
:
2916 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
2918 case GL_LINE_WIDTH_RANGE
:
2919 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
2920 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
2922 case GL_ALIASED_LINE_WIDTH_RANGE
:
2923 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
2924 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
2927 *params
= (GLfloat
) ctx
->List
.ListBase
;
2930 *params
= (GLfloat
) ctx
->CurrentListNum
;
2933 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
2934 : ENUM_TO_FLOAT(GL_COMPILE
);
2936 case GL_INDEX_LOGIC_OP
:
2937 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
2939 case GL_COLOR_LOGIC_OP
:
2940 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
2942 case GL_LOGIC_OP_MODE
:
2943 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2945 case GL_MAP1_COLOR_4
:
2946 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
2948 case GL_MAP1_GRID_DOMAIN
:
2949 params
[0] = ctx
->Eval
.MapGrid1u1
;
2950 params
[1] = ctx
->Eval
.MapGrid1u2
;
2952 case GL_MAP1_GRID_SEGMENTS
:
2953 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
2956 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
2958 case GL_MAP1_NORMAL
:
2959 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
2961 case GL_MAP1_TEXTURE_COORD_1
:
2962 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
2964 case GL_MAP1_TEXTURE_COORD_2
:
2965 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
2967 case GL_MAP1_TEXTURE_COORD_3
:
2968 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
2970 case GL_MAP1_TEXTURE_COORD_4
:
2971 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
2973 case GL_MAP1_VERTEX_3
:
2974 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
2976 case GL_MAP1_VERTEX_4
:
2977 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
2979 case GL_MAP2_COLOR_4
:
2980 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
2982 case GL_MAP2_GRID_DOMAIN
:
2983 params
[0] = ctx
->Eval
.MapGrid2u1
;
2984 params
[1] = ctx
->Eval
.MapGrid2u2
;
2985 params
[2] = ctx
->Eval
.MapGrid2v1
;
2986 params
[3] = ctx
->Eval
.MapGrid2v2
;
2988 case GL_MAP2_GRID_SEGMENTS
:
2989 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
2990 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
2993 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
2995 case GL_MAP2_NORMAL
:
2996 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
2998 case GL_MAP2_TEXTURE_COORD_1
:
2999 *params
= ctx
->Eval
.Map2TextureCoord1
;
3001 case GL_MAP2_TEXTURE_COORD_2
:
3002 *params
= ctx
->Eval
.Map2TextureCoord2
;
3004 case GL_MAP2_TEXTURE_COORD_3
:
3005 *params
= ctx
->Eval
.Map2TextureCoord3
;
3007 case GL_MAP2_TEXTURE_COORD_4
:
3008 *params
= ctx
->Eval
.Map2TextureCoord4
;
3010 case GL_MAP2_VERTEX_3
:
3011 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
3013 case GL_MAP2_VERTEX_4
:
3014 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
3017 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
3019 case GL_MAP_STENCIL
:
3020 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
3022 case GL_MATRIX_MODE
:
3023 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
3025 case GL_MAX_ATTRIB_STACK_DEPTH
:
3026 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
3028 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3029 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3031 case GL_MAX_CLIP_PLANES
:
3032 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
3034 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3035 *params
= (GLfloat
) VB_MAX
;
3037 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3038 *params
= (GLfloat
) VB_MAX
;
3040 case GL_MAX_EVAL_ORDER
:
3041 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3044 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3046 case GL_MAX_LIST_NESTING
:
3047 *params
= (GLfloat
) MAX_LIST_NESTING
;
3049 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3050 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3052 case GL_MAX_NAME_STACK_DEPTH
:
3053 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3055 case GL_MAX_PIXEL_MAP_TABLE
:
3056 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3058 case GL_MAX_PROJECTION_STACK_DEPTH
:
3059 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3061 case GL_MAX_TEXTURE_SIZE
:
3062 case GL_MAX_3D_TEXTURE_SIZE
:
3063 *params
= (GLfloat
) ctx
->Const
.MaxTextureSize
;
3065 case GL_MAX_TEXTURE_STACK_DEPTH
:
3066 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3068 case GL_MAX_VIEWPORT_DIMS
:
3069 params
[0] = (GLfloat
) MAX_WIDTH
;
3070 params
[1] = (GLfloat
) MAX_HEIGHT
;
3073 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
3075 case GL_MODELVIEW_MATRIX
:
3076 for (i
=0;i
<16;i
++) {
3077 params
[i
] = ctx
->ModelView
.m
[i
];
3080 case GL_MODELVIEW_STACK_DEPTH
:
3081 *params
= (GLfloat
) (ctx
->ModelViewStackDepth
+ 1);
3083 case GL_NAME_STACK_DEPTH
:
3084 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3087 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3089 case GL_PACK_ALIGNMENT
:
3090 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3092 case GL_PACK_LSB_FIRST
:
3093 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3095 case GL_PACK_ROW_LENGTH
:
3096 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3098 case GL_PACK_SKIP_PIXELS
:
3099 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3101 case GL_PACK_SKIP_ROWS
:
3102 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3104 case GL_PACK_SWAP_BYTES
:
3105 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3107 case GL_PACK_SKIP_IMAGES_EXT
:
3108 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3110 case GL_PACK_IMAGE_HEIGHT_EXT
:
3111 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3113 case GL_PERSPECTIVE_CORRECTION_HINT
:
3114 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3116 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3117 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3119 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3120 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3122 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3123 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3125 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3126 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3128 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3129 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3131 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3132 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3134 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3135 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3137 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3138 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3140 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3141 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3143 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3144 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3147 *params
= (GLfloat
) ctx
->Point
.Size
;
3149 case GL_POINT_SIZE_GRANULARITY
:
3150 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3152 case GL_POINT_SIZE_RANGE
:
3153 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3154 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3156 case GL_ALIASED_POINT_SIZE_RANGE
:
3157 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3158 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3160 case GL_POINT_SMOOTH
:
3161 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3163 case GL_POINT_SMOOTH_HINT
:
3164 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3166 case GL_POINT_SIZE_MIN_EXT
:
3167 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3169 case GL_POINT_SIZE_MAX_EXT
:
3170 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3172 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3173 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3175 case GL_DISTANCE_ATTENUATION_EXT
:
3176 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3177 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3178 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3180 case GL_POLYGON_MODE
:
3181 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3182 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3184 #ifdef GL_EXT_polygon_offset
3185 case GL_POLYGON_OFFSET_BIAS_EXT
:
3186 *params
= ctx
->Polygon
.OffsetUnits
;
3189 case GL_POLYGON_OFFSET_FACTOR
:
3190 *params
= ctx
->Polygon
.OffsetFactor
;
3192 case GL_POLYGON_OFFSET_UNITS
:
3193 *params
= ctx
->Polygon
.OffsetUnits
;
3195 case GL_POLYGON_SMOOTH
:
3196 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3198 case GL_POLYGON_SMOOTH_HINT
:
3199 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3201 case GL_POLYGON_STIPPLE
:
3202 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3204 case GL_PROJECTION_MATRIX
:
3205 for (i
=0;i
<16;i
++) {
3206 params
[i
] = ctx
->ProjectionMatrix
.m
[i
];
3209 case GL_PROJECTION_STACK_DEPTH
:
3210 *params
= (GLfloat
) (ctx
->ProjectionStackDepth
+ 1);
3212 case GL_READ_BUFFER
:
3213 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3216 *params
= ctx
->Pixel
.RedBias
;
3219 *params
= (GLfloat
) ctx
->Visual
.RedBits
;
3222 *params
= ctx
->Pixel
.RedScale
;
3224 case GL_RENDER_MODE
:
3225 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3227 case GL_RESCALE_NORMAL
:
3228 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3231 *params
= (GLfloat
) ctx
->Visual
.RGBAflag
;
3233 case GL_SCISSOR_BOX
:
3234 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3235 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3236 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3237 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3239 case GL_SCISSOR_TEST
:
3240 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3242 case GL_SELECTION_BUFFER_SIZE
:
3243 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3245 case GL_SHADE_MODEL
:
3246 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3248 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3249 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3251 case GL_STENCIL_BITS
:
3252 *params
= (GLfloat
) ctx
->Visual
.StencilBits
;
3254 case GL_STENCIL_CLEAR_VALUE
:
3255 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3257 case GL_STENCIL_FAIL
:
3258 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
3260 case GL_STENCIL_FUNC
:
3261 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
3263 case GL_STENCIL_PASS_DEPTH_FAIL
:
3264 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
3266 case GL_STENCIL_PASS_DEPTH_PASS
:
3267 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
3269 case GL_STENCIL_REF
:
3270 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
3272 case GL_STENCIL_TEST
:
3273 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3275 case GL_STENCIL_VALUE_MASK
:
3276 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
3278 case GL_STENCIL_WRITEMASK
:
3279 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
3282 *params
= (GLfloat
) ctx
->Visual
.StereoFlag
;
3284 case GL_SUBPIXEL_BITS
:
3285 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3288 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
3291 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
3294 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
3296 case GL_TEXTURE_BINDING_1D
:
3297 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3299 case GL_TEXTURE_BINDING_2D
:
3300 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3302 case GL_TEXTURE_BINDING_3D
:
3303 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3305 case GL_TEXTURE_ENV_COLOR
:
3306 params
[0] = textureUnit
->EnvColor
[0];
3307 params
[1] = textureUnit
->EnvColor
[1];
3308 params
[2] = textureUnit
->EnvColor
[2];
3309 params
[3] = textureUnit
->EnvColor
[3];
3311 case GL_TEXTURE_ENV_MODE
:
3312 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3314 case GL_TEXTURE_GEN_S
:
3315 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
3317 case GL_TEXTURE_GEN_T
:
3318 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
3320 case GL_TEXTURE_GEN_R
:
3321 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
3323 case GL_TEXTURE_GEN_Q
:
3324 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
3326 case GL_TEXTURE_MATRIX
:
3327 for (i
=0;i
<16;i
++) {
3328 params
[i
] = ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
3331 case GL_TEXTURE_STACK_DEPTH
:
3332 *params
= (GLfloat
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
3334 case GL_UNPACK_ALIGNMENT
:
3335 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3337 case GL_UNPACK_LSB_FIRST
:
3338 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3340 case GL_UNPACK_ROW_LENGTH
:
3341 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3343 case GL_UNPACK_SKIP_PIXELS
:
3344 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3346 case GL_UNPACK_SKIP_ROWS
:
3347 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3349 case GL_UNPACK_SWAP_BYTES
:
3350 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3352 case GL_UNPACK_SKIP_IMAGES_EXT
:
3353 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3355 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3356 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3359 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3360 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3361 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3362 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3365 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3368 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3370 case GL_VERTEX_ARRAY
:
3371 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3373 case GL_VERTEX_ARRAY_SIZE
:
3374 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3376 case GL_VERTEX_ARRAY_TYPE
:
3377 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3379 case GL_VERTEX_ARRAY_STRIDE
:
3380 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3382 case GL_VERTEX_ARRAY_COUNT_EXT
:
3385 case GL_NORMAL_ARRAY
:
3386 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3388 case GL_NORMAL_ARRAY_TYPE
:
3389 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3391 case GL_NORMAL_ARRAY_STRIDE
:
3392 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3394 case GL_NORMAL_ARRAY_COUNT_EXT
:
3397 case GL_COLOR_ARRAY
:
3398 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3400 case GL_COLOR_ARRAY_SIZE
:
3401 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3403 case GL_COLOR_ARRAY_TYPE
:
3404 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3406 case GL_COLOR_ARRAY_STRIDE
:
3407 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3409 case GL_COLOR_ARRAY_COUNT_EXT
:
3412 case GL_INDEX_ARRAY
:
3413 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3415 case GL_INDEX_ARRAY_TYPE
:
3416 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3418 case GL_INDEX_ARRAY_STRIDE
:
3419 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3421 case GL_INDEX_ARRAY_COUNT_EXT
:
3424 case GL_TEXTURE_COORD_ARRAY
:
3425 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3427 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3428 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3430 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3431 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3433 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3434 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3436 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3439 case GL_EDGE_FLAG_ARRAY
:
3440 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3442 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3443 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3445 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3449 /* GL_ARB_multitexture */
3450 case GL_MAX_TEXTURE_UNITS_ARB
:
3451 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3453 case GL_ACTIVE_TEXTURE_ARB
:
3454 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3456 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3457 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3460 /* GL_ARB_texture_cube_map */
3461 case GL_TEXTURE_CUBE_MAP_ARB
:
3462 if (ctx
->Extensions
.ARB_texture_cube_map
)
3463 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3465 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3467 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3468 if (ctx
->Extensions
.ARB_texture_cube_map
)
3469 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3471 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3473 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3474 if (ctx
->Extensions
.ARB_texture_cube_map
)
3475 *params
= (GLfloat
) ctx
->Const
.MaxCubeTextureSize
;
3477 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3480 /* GL_ARB_texture_compression */
3481 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3482 if (ctx
->Extensions
.ARB_texture_compression
) {
3483 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3486 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3488 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3489 if (ctx
->Extensions
.ARB_texture_compression
) {
3490 *params
= (GLfloat
) ctx
->Const
.NumCompressedTextureFormats
;
3493 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3495 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3496 if (ctx
->Extensions
.ARB_texture_compression
) {
3498 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
3499 params
[i
] = (GLfloat
) ctx
->Const
.CompressedTextureFormats
[i
];
3502 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3505 /* GL_PGI_misc_hints */
3506 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
3507 *params
= ENUM_TO_FLOAT(GL_NICEST
);
3509 case GL_STRICT_LIGHTING_HINT_PGI
:
3510 *params
= ENUM_TO_FLOAT(ctx
->Hint
.StrictLighting
);
3512 case GL_STRICT_SCISSOR_HINT_PGI
:
3513 case GL_FULL_STIPPLE_HINT_PGI
:
3514 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3516 case GL_CONSERVE_MEMORY_HINT_PGI
:
3517 *params
= ENUM_TO_FLOAT(GL_FALSE
);
3519 case GL_ALWAYS_FAST_HINT_PGI
:
3520 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3521 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
3522 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
3524 case GL_ALWAYS_SOFT_HINT_PGI
:
3525 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3526 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
3527 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
3529 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
3530 *params
= (GLfloat
) GL_TRUE
;
3532 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
3533 *params
= (GLfloat
) ctx
->Hint
.AllowDrawWin
;
3535 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
3536 *params
= (GLfloat
) ctx
->Hint
.AllowDrawFrg
;
3538 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
3539 *params
= (GLfloat
) ctx
->Hint
.AllowDrawMem
;
3541 case GL_CLIP_NEAR_HINT_PGI
:
3542 case GL_CLIP_FAR_HINT_PGI
:
3543 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3545 case GL_WIDE_LINE_HINT_PGI
:
3546 *params
= ENUM_TO_FLOAT(GL_DONT_CARE
);
3548 case GL_BACK_NORMALS_HINT_PGI
:
3549 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3551 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
3555 /* GL_EXT_compiled_vertex_array */
3556 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3557 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3559 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3560 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3563 /* GL_ARB_transpose_matrix */
3564 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3565 _math_transposef(params
, ctx
->ColorMatrix
.m
);
3567 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3568 _math_transposef(params
, ctx
->ModelView
.m
);
3570 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3571 _math_transposef(params
, ctx
->ProjectionMatrix
.m
);
3573 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3574 _math_transposef(params
, ctx
->TextureMatrix
[texTransformUnit
].m
);
3577 /* GL_HP_occlusion_test */
3578 case GL_OCCLUSION_TEST_HP
:
3579 if (ctx
->Extensions
.HP_occlusion_test
) {
3580 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3583 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3586 case GL_OCCLUSION_TEST_RESULT_HP
:
3587 if (ctx
->Extensions
.HP_occlusion_test
) {
3588 if (ctx
->Depth
.OcclusionTest
)
3589 *params
= (GLfloat
) ctx
->OcclusionResult
;
3591 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3592 /* reset flag now */
3593 ctx
->OcclusionResult
= GL_FALSE
;
3594 ctx
->OcclusionResultSaved
= GL_FALSE
;
3597 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3601 /* GL_SGIS_pixel_texture */
3602 case GL_PIXEL_TEXTURE_SGIS
:
3603 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3606 /* GL_SGIX_pixel_texture */
3607 case GL_PIXEL_TEX_GEN_SGIX
:
3608 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3610 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3611 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3614 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3615 case GL_COLOR_MATRIX_SGI
:
3616 for (i
=0;i
<16;i
++) {
3617 params
[i
] = ctx
->ColorMatrix
.m
[i
];
3620 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3621 *params
= (GLfloat
) (ctx
->ColorStackDepth
+ 1);
3623 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3624 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3626 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3627 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3629 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3630 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3632 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3633 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3635 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3636 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3638 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3639 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3641 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3642 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3644 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3645 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3647 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3648 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3651 /* GL_EXT_convolution (also in 1.2 imaging) */
3652 case GL_CONVOLUTION_1D_EXT
:
3653 if (ctx
->Extensions
.EXT_convolution
) {
3654 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
3657 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3661 case GL_CONVOLUTION_2D
:
3662 if (ctx
->Extensions
.EXT_convolution
) {
3663 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
3666 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3670 case GL_SEPARABLE_2D
:
3671 if (ctx
->Extensions
.EXT_convolution
) {
3672 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
3675 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3679 case GL_MAX_CONVOLUTION_WIDTH
:
3680 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionWidth
;
3682 case GL_MAX_CONVOLUTION_HEIGHT
:
3683 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionHeight
;
3685 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3686 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3688 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3689 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3691 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3692 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3694 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3695 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3697 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3698 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3700 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3701 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3703 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3704 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3706 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3707 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3710 /* GL_SGI_color_table (also in 1.2 imaging */
3711 case GL_COLOR_TABLE_SGI
:
3712 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3714 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3715 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3717 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3718 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3721 /* GL_EXT_secondary_color */
3722 case GL_COLOR_SUM_EXT
:
3723 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3725 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3726 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3727 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[0]);
3728 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[1]);
3729 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[2]);
3731 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3732 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3734 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3735 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3737 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3738 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3740 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3741 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3744 /* GL_EXT_fog_coord */
3745 case GL_CURRENT_FOG_COORDINATE_EXT
:
3746 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3747 *params
= (GLfloat
) ctx
->Current
.FogCoord
;
3749 case GL_FOG_COORDINATE_ARRAY_EXT
:
3750 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3752 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3753 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3755 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3756 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3759 /* GL_MESA_sprite_point */
3760 case GL_SPRITE_POINT_MESA
:
3761 if (ctx
->Extensions
.MESA_sprite_point
) {
3762 *params
= (GLfloat
) ctx
->Point
.SpriteMode
;
3765 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3771 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3779 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3781 GET_CURRENT_CONTEXT(ctx
);
3783 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3784 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
3785 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3787 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetIntegerv");
3792 if (MESA_VERBOSE
& VERBOSE_API
)
3793 fprintf(stderr
, "glGetIntegerv %s\n", gl_lookup_enum_by_nr(pname
));
3795 if (ctx
->Driver
.GetIntegerv
3796 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
3800 case GL_ACCUM_RED_BITS
:
3801 *params
= (GLint
) ctx
->Visual
.AccumRedBits
;
3803 case GL_ACCUM_GREEN_BITS
:
3804 *params
= (GLint
) ctx
->Visual
.AccumGreenBits
;
3806 case GL_ACCUM_BLUE_BITS
:
3807 *params
= (GLint
) ctx
->Visual
.AccumBlueBits
;
3809 case GL_ACCUM_ALPHA_BITS
:
3810 *params
= (GLint
) ctx
->Visual
.AccumAlphaBits
;
3812 case GL_ACCUM_CLEAR_VALUE
:
3813 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
3814 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
3815 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
3816 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
3819 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
3822 *params
= ctx
->Visual
.AlphaBits
;
3824 case GL_ALPHA_SCALE
:
3825 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
3828 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
3830 case GL_ALPHA_TEST_REF
:
3831 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
3833 case GL_ALPHA_TEST_FUNC
:
3834 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
3836 case GL_ATTRIB_STACK_DEPTH
:
3837 *params
= (GLint
) (ctx
->AttribStackDepth
);
3839 case GL_AUTO_NORMAL
:
3840 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
3842 case GL_AUX_BUFFERS
:
3843 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
3846 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
3849 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3852 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3854 case GL_BLEND_SRC_RGB_EXT
:
3855 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3857 case GL_BLEND_DST_RGB_EXT
:
3858 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3860 case GL_BLEND_SRC_ALPHA_EXT
:
3861 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
3863 case GL_BLEND_DST_ALPHA_EXT
:
3864 *params
= (GLint
) ctx
->Color
.BlendDstA
;
3866 case GL_BLEND_EQUATION_EXT
:
3867 *params
= (GLint
) ctx
->Color
.BlendEquation
;
3869 case GL_BLEND_COLOR_EXT
:
3870 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
3871 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
3872 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
3873 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
3876 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
3879 *params
= (GLint
) ctx
->Visual
.BlueBits
;
3882 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
3884 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3885 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
3887 case GL_CLIP_PLANE0
:
3888 case GL_CLIP_PLANE1
:
3889 case GL_CLIP_PLANE2
:
3890 case GL_CLIP_PLANE3
:
3891 case GL_CLIP_PLANE4
:
3892 case GL_CLIP_PLANE5
:
3893 i
= (GLint
) (pname
- GL_CLIP_PLANE0
);
3894 *params
= (GLint
) ctx
->Transform
.ClipEnabled
[i
];
3896 case GL_COLOR_CLEAR_VALUE
:
3897 params
[0] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[0] );
3898 params
[1] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[1] );
3899 params
[2] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[2] );
3900 params
[3] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[3] );
3902 case GL_COLOR_MATERIAL
:
3903 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
3905 case GL_COLOR_MATERIAL_FACE
:
3906 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
3908 case GL_COLOR_MATERIAL_PARAMETER
:
3909 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
3911 case GL_COLOR_WRITEMASK
:
3912 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
3913 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
3914 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
3915 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
3918 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
3920 case GL_CULL_FACE_MODE
:
3921 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
3923 case GL_CURRENT_COLOR
:
3924 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3925 params
[0] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[0] ) );
3926 params
[1] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[1] ) );
3927 params
[2] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[2] ) );
3928 params
[3] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[3] ) );
3930 case GL_CURRENT_INDEX
:
3931 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3932 *params
= (GLint
) ctx
->Current
.Index
;
3934 case GL_CURRENT_NORMAL
:
3935 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3936 params
[0] = FLOAT_TO_INT( ctx
->Current
.Normal
[0] );
3937 params
[1] = FLOAT_TO_INT( ctx
->Current
.Normal
[1] );
3938 params
[2] = FLOAT_TO_INT( ctx
->Current
.Normal
[2] );
3940 case GL_CURRENT_RASTER_COLOR
:
3941 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
3942 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
3943 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
3944 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
3946 case GL_CURRENT_RASTER_DISTANCE
:
3947 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
3949 case GL_CURRENT_RASTER_INDEX
:
3950 *params
= (GLint
) ctx
->Current
.RasterIndex
;
3952 case GL_CURRENT_RASTER_POSITION
:
3953 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
3954 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
3955 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
3956 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
3958 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3959 params
[0] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
3960 params
[1] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
3961 params
[2] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
3962 params
[3] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
3964 case GL_CURRENT_RASTER_POSITION_VALID
:
3965 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
3967 case GL_CURRENT_TEXTURE_COORDS
:
3968 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3969 params
[0] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
3970 params
[1] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
3971 params
[2] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
3972 params
[3] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
3975 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
3978 *params
= ctx
->Visual
.DepthBits
;
3980 case GL_DEPTH_CLEAR_VALUE
:
3981 *params
= (GLint
) ctx
->Depth
.Clear
;
3984 *params
= (GLint
) ctx
->Depth
.Func
;
3986 case GL_DEPTH_RANGE
:
3987 params
[0] = (GLint
) ctx
->Viewport
.Near
;
3988 params
[1] = (GLint
) ctx
->Viewport
.Far
;
3990 case GL_DEPTH_SCALE
:
3991 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
3994 *params
= (GLint
) ctx
->Depth
.Test
;
3996 case GL_DEPTH_WRITEMASK
:
3997 *params
= (GLint
) ctx
->Depth
.Mask
;
4000 *params
= (GLint
) ctx
->Color
.DitherFlag
;
4002 case GL_DOUBLEBUFFER
:
4003 *params
= (GLint
) ctx
->Visual
.DBflag
;
4005 case GL_DRAW_BUFFER
:
4006 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
4009 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
4010 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
4012 case GL_FEEDBACK_BUFFER_SIZE
:
4013 *params
= ctx
->Feedback
.BufferSize
;
4015 case GL_FEEDBACK_BUFFER_TYPE
:
4016 *params
= ctx
->Feedback
.Type
;
4019 *params
= (GLint
) ctx
->Fog
.Enabled
;
4022 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
4023 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
4024 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
4025 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
4027 case GL_FOG_DENSITY
:
4028 *params
= (GLint
) ctx
->Fog
.Density
;
4031 *params
= (GLint
) ctx
->Fog
.End
;
4034 *params
= (GLint
) ctx
->Hint
.Fog
;
4037 *params
= (GLint
) ctx
->Fog
.Index
;
4040 *params
= (GLint
) ctx
->Fog
.Mode
;
4043 *params
= (GLint
) ctx
->Fog
.Start
;
4046 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
4049 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
4052 *params
= (GLint
) ctx
->Visual
.GreenBits
;
4054 case GL_GREEN_SCALE
:
4055 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
4058 if (ctx
->Extensions
.EXT_histogram
) {
4059 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
4062 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
4067 *params
= (GLint
) ctx
->Visual
.IndexBits
;
4069 case GL_INDEX_CLEAR_VALUE
:
4070 *params
= (GLint
) ctx
->Color
.ClearIndex
;
4073 *params
= ctx
->Visual
.RGBAflag
? 0 : 1;
4075 case GL_INDEX_OFFSET
:
4076 *params
= ctx
->Pixel
.IndexOffset
;
4078 case GL_INDEX_SHIFT
:
4079 *params
= ctx
->Pixel
.IndexShift
;
4081 case GL_INDEX_WRITEMASK
:
4082 *params
= (GLint
) ctx
->Color
.IndexMask
;
4092 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
4095 *params
= (GLint
) ctx
->Light
.Enabled
;
4097 case GL_LIGHT_MODEL_AMBIENT
:
4098 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
4099 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
4100 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
4101 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
4103 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4104 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
4106 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4107 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
4109 case GL_LIGHT_MODEL_TWO_SIDE
:
4110 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
4112 case GL_LINE_SMOOTH
:
4113 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
4115 case GL_LINE_SMOOTH_HINT
:
4116 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
4118 case GL_LINE_STIPPLE
:
4119 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4121 case GL_LINE_STIPPLE_PATTERN
:
4122 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4124 case GL_LINE_STIPPLE_REPEAT
:
4125 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4128 *params
= (GLint
) ctx
->Line
.Width
;
4130 case GL_LINE_WIDTH_GRANULARITY
:
4131 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4133 case GL_LINE_WIDTH_RANGE
:
4134 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4135 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4137 case GL_ALIASED_LINE_WIDTH_RANGE
:
4138 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4139 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4142 *params
= (GLint
) ctx
->List
.ListBase
;
4145 *params
= (GLint
) ctx
->CurrentListNum
;
4148 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4149 : (GLint
) GL_COMPILE
;
4151 case GL_INDEX_LOGIC_OP
:
4152 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4154 case GL_COLOR_LOGIC_OP
:
4155 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4157 case GL_LOGIC_OP_MODE
:
4158 *params
= (GLint
) ctx
->Color
.LogicOp
;
4160 case GL_MAP1_COLOR_4
:
4161 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4163 case GL_MAP1_GRID_DOMAIN
:
4164 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4165 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4167 case GL_MAP1_GRID_SEGMENTS
:
4168 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4171 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4173 case GL_MAP1_NORMAL
:
4174 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4176 case GL_MAP1_TEXTURE_COORD_1
:
4177 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4179 case GL_MAP1_TEXTURE_COORD_2
:
4180 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4182 case GL_MAP1_TEXTURE_COORD_3
:
4183 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4185 case GL_MAP1_TEXTURE_COORD_4
:
4186 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4188 case GL_MAP1_VERTEX_3
:
4189 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4191 case GL_MAP1_VERTEX_4
:
4192 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4194 case GL_MAP2_COLOR_4
:
4195 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4197 case GL_MAP2_GRID_DOMAIN
:
4198 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4199 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4200 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4201 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4203 case GL_MAP2_GRID_SEGMENTS
:
4204 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4205 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4208 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4210 case GL_MAP2_NORMAL
:
4211 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4213 case GL_MAP2_TEXTURE_COORD_1
:
4214 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4216 case GL_MAP2_TEXTURE_COORD_2
:
4217 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4219 case GL_MAP2_TEXTURE_COORD_3
:
4220 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4222 case GL_MAP2_TEXTURE_COORD_4
:
4223 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4225 case GL_MAP2_VERTEX_3
:
4226 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4228 case GL_MAP2_VERTEX_4
:
4229 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4232 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4234 case GL_MAP_STENCIL
:
4235 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4237 case GL_MATRIX_MODE
:
4238 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4240 case GL_MAX_ATTRIB_STACK_DEPTH
:
4241 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4243 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4244 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4246 case GL_MAX_CLIP_PLANES
:
4247 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
4249 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4252 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4255 case GL_MAX_EVAL_ORDER
:
4256 *params
= (GLint
) MAX_EVAL_ORDER
;
4259 *params
= (GLint
) ctx
->Const
.MaxLights
;
4261 case GL_MAX_LIST_NESTING
:
4262 *params
= (GLint
) MAX_LIST_NESTING
;
4264 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4265 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4267 case GL_MAX_NAME_STACK_DEPTH
:
4268 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4270 case GL_MAX_PIXEL_MAP_TABLE
:
4271 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4273 case GL_MAX_PROJECTION_STACK_DEPTH
:
4274 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4276 case GL_MAX_TEXTURE_SIZE
:
4277 case GL_MAX_3D_TEXTURE_SIZE
:
4278 *params
= ctx
->Const
.MaxTextureSize
;
4280 case GL_MAX_TEXTURE_STACK_DEPTH
:
4281 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4283 case GL_MAX_VIEWPORT_DIMS
:
4284 params
[0] = (GLint
) MAX_WIDTH
;
4285 params
[1] = (GLint
) MAX_HEIGHT
;
4288 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
4290 case GL_MODELVIEW_MATRIX
:
4291 for (i
=0;i
<16;i
++) {
4292 params
[i
] = (GLint
) ctx
->ModelView
.m
[i
];
4295 case GL_MODELVIEW_STACK_DEPTH
:
4296 *params
= (GLint
) (ctx
->ModelViewStackDepth
+ 1);
4298 case GL_NAME_STACK_DEPTH
:
4299 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4302 *params
= (GLint
) ctx
->Transform
.Normalize
;
4304 case GL_PACK_ALIGNMENT
:
4305 *params
= ctx
->Pack
.Alignment
;
4307 case GL_PACK_LSB_FIRST
:
4308 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4310 case GL_PACK_ROW_LENGTH
:
4311 *params
= ctx
->Pack
.RowLength
;
4313 case GL_PACK_SKIP_PIXELS
:
4314 *params
= ctx
->Pack
.SkipPixels
;
4316 case GL_PACK_SKIP_ROWS
:
4317 *params
= ctx
->Pack
.SkipRows
;
4319 case GL_PACK_SWAP_BYTES
:
4320 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4322 case GL_PACK_SKIP_IMAGES_EXT
:
4323 *params
= ctx
->Pack
.SkipImages
;
4325 case GL_PACK_IMAGE_HEIGHT_EXT
:
4326 *params
= ctx
->Pack
.ImageHeight
;
4328 case GL_PERSPECTIVE_CORRECTION_HINT
:
4329 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4331 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4332 *params
= ctx
->Pixel
.MapAtoAsize
;
4334 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4335 *params
= ctx
->Pixel
.MapBtoBsize
;
4337 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4338 *params
= ctx
->Pixel
.MapGtoGsize
;
4340 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4341 *params
= ctx
->Pixel
.MapItoAsize
;
4343 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4344 *params
= ctx
->Pixel
.MapItoBsize
;
4346 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4347 *params
= ctx
->Pixel
.MapItoGsize
;
4349 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4350 *params
= ctx
->Pixel
.MapItoIsize
;
4352 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4353 *params
= ctx
->Pixel
.MapItoRsize
;
4355 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4356 *params
= ctx
->Pixel
.MapRtoRsize
;
4358 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4359 *params
= ctx
->Pixel
.MapStoSsize
;
4362 *params
= (GLint
) ctx
->Point
.Size
;
4364 case GL_POINT_SIZE_GRANULARITY
:
4365 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4367 case GL_POINT_SIZE_RANGE
:
4368 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4369 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4371 case GL_ALIASED_POINT_SIZE_RANGE
:
4372 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4373 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4375 case GL_POINT_SMOOTH
:
4376 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4378 case GL_POINT_SMOOTH_HINT
:
4379 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4381 case GL_POINT_SIZE_MIN_EXT
:
4382 *params
= (GLint
) (ctx
->Point
.MinSize
);
4384 case GL_POINT_SIZE_MAX_EXT
:
4385 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4387 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4388 *params
= (GLint
) (ctx
->Point
.Threshold
);
4390 case GL_DISTANCE_ATTENUATION_EXT
:
4391 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4392 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4393 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4395 case GL_POLYGON_MODE
:
4396 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4397 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4399 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4400 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4402 case GL_POLYGON_OFFSET_FACTOR
:
4403 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4405 case GL_POLYGON_OFFSET_UNITS
:
4406 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4408 case GL_POLYGON_SMOOTH
:
4409 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4411 case GL_POLYGON_SMOOTH_HINT
:
4412 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4414 case GL_POLYGON_STIPPLE
:
4415 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4417 case GL_PROJECTION_MATRIX
:
4418 for (i
=0;i
<16;i
++) {
4419 params
[i
] = (GLint
) ctx
->ProjectionMatrix
.m
[i
];
4422 case GL_PROJECTION_STACK_DEPTH
:
4423 *params
= (GLint
) (ctx
->ProjectionStackDepth
+ 1);
4425 case GL_READ_BUFFER
:
4426 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4429 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4432 *params
= (GLint
) ctx
->Visual
.RedBits
;
4435 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4437 case GL_RENDER_MODE
:
4438 *params
= (GLint
) ctx
->RenderMode
;
4440 case GL_RESCALE_NORMAL
:
4441 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
4444 *params
= (GLint
) ctx
->Visual
.RGBAflag
;
4446 case GL_SCISSOR_BOX
:
4447 params
[0] = (GLint
) ctx
->Scissor
.X
;
4448 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4449 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4450 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4452 case GL_SCISSOR_TEST
:
4453 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4455 case GL_SELECTION_BUFFER_SIZE
:
4456 *params
= (GLint
) ctx
->Select
.BufferSize
;
4458 case GL_SHADE_MODEL
:
4459 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4461 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4462 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4464 case GL_STENCIL_BITS
:
4465 *params
= ctx
->Visual
.StencilBits
;
4467 case GL_STENCIL_CLEAR_VALUE
:
4468 *params
= (GLint
) ctx
->Stencil
.Clear
;
4470 case GL_STENCIL_FAIL
:
4471 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
4473 case GL_STENCIL_FUNC
:
4474 *params
= (GLint
) ctx
->Stencil
.Function
;
4476 case GL_STENCIL_PASS_DEPTH_FAIL
:
4477 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
4479 case GL_STENCIL_PASS_DEPTH_PASS
:
4480 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
4482 case GL_STENCIL_REF
:
4483 *params
= (GLint
) ctx
->Stencil
.Ref
;
4485 case GL_STENCIL_TEST
:
4486 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4488 case GL_STENCIL_VALUE_MASK
:
4489 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
4491 case GL_STENCIL_WRITEMASK
:
4492 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
4495 *params
= (GLint
) ctx
->Visual
.StereoFlag
;
4497 case GL_SUBPIXEL_BITS
:
4498 *params
= ctx
->Const
.SubPixelBits
;
4501 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4504 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4507 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4509 case GL_TEXTURE_BINDING_1D
:
4510 *params
= textureUnit
->Current1D
->Name
;
4512 case GL_TEXTURE_BINDING_2D
:
4513 *params
= textureUnit
->Current2D
->Name
;
4515 case GL_TEXTURE_BINDING_3D
:
4516 *params
= textureUnit
->Current3D
->Name
;
4518 case GL_TEXTURE_ENV_COLOR
:
4519 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4520 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4521 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4522 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4524 case GL_TEXTURE_ENV_MODE
:
4525 *params
= (GLint
) textureUnit
->EnvMode
;
4527 case GL_TEXTURE_GEN_S
:
4528 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4530 case GL_TEXTURE_GEN_T
:
4531 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4533 case GL_TEXTURE_GEN_R
:
4534 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4536 case GL_TEXTURE_GEN_Q
:
4537 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4539 case GL_TEXTURE_MATRIX
:
4540 for (i
=0;i
<16;i
++) {
4541 params
[i
] = (GLint
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
4544 case GL_TEXTURE_STACK_DEPTH
:
4545 *params
= (GLint
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
4547 case GL_UNPACK_ALIGNMENT
:
4548 *params
= ctx
->Unpack
.Alignment
;
4550 case GL_UNPACK_LSB_FIRST
:
4551 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4553 case GL_UNPACK_ROW_LENGTH
:
4554 *params
= ctx
->Unpack
.RowLength
;
4556 case GL_UNPACK_SKIP_PIXELS
:
4557 *params
= ctx
->Unpack
.SkipPixels
;
4559 case GL_UNPACK_SKIP_ROWS
:
4560 *params
= ctx
->Unpack
.SkipRows
;
4562 case GL_UNPACK_SWAP_BYTES
:
4563 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4565 case GL_UNPACK_SKIP_IMAGES_EXT
:
4566 *params
= ctx
->Unpack
.SkipImages
;
4568 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4569 *params
= ctx
->Unpack
.ImageHeight
;
4572 params
[0] = (GLint
) ctx
->Viewport
.X
;
4573 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4574 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4575 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4578 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4581 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4583 case GL_VERTEX_ARRAY
:
4584 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4586 case GL_VERTEX_ARRAY_SIZE
:
4587 *params
= ctx
->Array
.Vertex
.Size
;
4589 case GL_VERTEX_ARRAY_TYPE
:
4590 *params
= ctx
->Array
.Vertex
.Type
;
4592 case GL_VERTEX_ARRAY_STRIDE
:
4593 *params
= ctx
->Array
.Vertex
.Stride
;
4595 case GL_VERTEX_ARRAY_COUNT_EXT
:
4598 case GL_NORMAL_ARRAY
:
4599 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
4601 case GL_NORMAL_ARRAY_TYPE
:
4602 *params
= ctx
->Array
.Normal
.Type
;
4604 case GL_NORMAL_ARRAY_STRIDE
:
4605 *params
= ctx
->Array
.Normal
.Stride
;
4607 case GL_NORMAL_ARRAY_COUNT_EXT
:
4610 case GL_COLOR_ARRAY
:
4611 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
4613 case GL_COLOR_ARRAY_SIZE
:
4614 *params
= ctx
->Array
.Color
.Size
;
4616 case GL_COLOR_ARRAY_TYPE
:
4617 *params
= ctx
->Array
.Color
.Type
;
4619 case GL_COLOR_ARRAY_STRIDE
:
4620 *params
= ctx
->Array
.Color
.Stride
;
4622 case GL_COLOR_ARRAY_COUNT_EXT
:
4625 case GL_INDEX_ARRAY
:
4626 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
4628 case GL_INDEX_ARRAY_TYPE
:
4629 *params
= ctx
->Array
.Index
.Type
;
4631 case GL_INDEX_ARRAY_STRIDE
:
4632 *params
= ctx
->Array
.Index
.Stride
;
4634 case GL_INDEX_ARRAY_COUNT_EXT
:
4637 case GL_TEXTURE_COORD_ARRAY
:
4638 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
4640 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4641 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
4643 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4644 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
4646 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4647 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
4649 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4652 case GL_EDGE_FLAG_ARRAY
:
4653 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
4655 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4656 *params
= ctx
->Array
.EdgeFlag
.Stride
;
4658 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4662 /* GL_ARB_multitexture */
4663 case GL_MAX_TEXTURE_UNITS_ARB
:
4664 *params
= ctx
->Const
.MaxTextureUnits
;
4666 case GL_ACTIVE_TEXTURE_ARB
:
4667 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4669 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4670 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4673 /* GL_ARB_texture_cube_map */
4674 case GL_TEXTURE_CUBE_MAP_ARB
:
4675 if (ctx
->Extensions
.ARB_texture_cube_map
)
4676 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4678 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4680 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4681 if (ctx
->Extensions
.ARB_texture_cube_map
)
4682 *params
= textureUnit
->CurrentCubeMap
->Name
;
4684 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4686 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4687 if (ctx
->Extensions
.ARB_texture_cube_map
)
4688 *params
= ctx
->Const
.MaxCubeTextureSize
;
4690 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4693 /* GL_ARB_texture_compression */
4694 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4695 if (ctx
->Extensions
.ARB_texture_compression
) {
4696 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
4699 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4701 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4702 if (ctx
->Extensions
.ARB_texture_compression
) {
4703 *params
= (GLint
) ctx
->Const
.NumCompressedTextureFormats
;
4706 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4708 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4709 if (ctx
->Extensions
.ARB_texture_compression
) {
4711 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
4712 params
[i
] = (GLint
) ctx
->Const
.CompressedTextureFormats
[i
];
4715 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4718 /* GL_PGI_misc_hints */
4719 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
4720 *params
= (GL_NICEST
);
4722 case GL_STRICT_LIGHTING_HINT_PGI
:
4723 *params
= (ctx
->Hint
.StrictLighting
);
4725 case GL_STRICT_SCISSOR_HINT_PGI
:
4726 case GL_FULL_STIPPLE_HINT_PGI
:
4729 case GL_CONSERVE_MEMORY_HINT_PGI
:
4732 case GL_ALWAYS_FAST_HINT_PGI
:
4733 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
4734 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
4735 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
4737 case GL_ALWAYS_SOFT_HINT_PGI
:
4738 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
4739 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
4740 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
4742 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
4745 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
4746 *params
= ctx
->Hint
.AllowDrawWin
;
4748 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
4749 *params
= ctx
->Hint
.AllowDrawFrg
;
4751 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
4752 *params
= ctx
->Hint
.AllowDrawMem
;
4754 case GL_CLIP_NEAR_HINT_PGI
:
4755 case GL_CLIP_FAR_HINT_PGI
:
4758 case GL_WIDE_LINE_HINT_PGI
:
4759 *params
= GL_DONT_CARE
;
4761 case GL_BACK_NORMALS_HINT_PGI
:
4764 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
4768 /* GL_EXT_compiled_vertex_array */
4769 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4770 *params
= ctx
->Array
.LockFirst
;
4772 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4773 *params
= ctx
->Array
.LockCount
;
4776 /* GL_ARB_transpose_matrix */
4777 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4781 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
4782 for (i
=0;i
<16;i
++) {
4783 params
[i
] = (GLint
) tm
[i
];
4787 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4791 _math_transposef(tm
, ctx
->ModelView
.m
);
4792 for (i
=0;i
<16;i
++) {
4793 params
[i
] = (GLint
) tm
[i
];
4797 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4801 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
4802 for (i
=0;i
<16;i
++) {
4803 params
[i
] = (GLint
) tm
[i
];
4807 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4811 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
4812 for (i
=0;i
<16;i
++) {
4813 params
[i
] = (GLint
) tm
[i
];
4818 /* GL_HP_occlusion_test */
4819 case GL_OCCLUSION_TEST_HP
:
4820 if (ctx
->Extensions
.HP_occlusion_test
) {
4821 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
4824 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4827 case GL_OCCLUSION_TEST_RESULT_HP
:
4828 if (ctx
->Extensions
.HP_occlusion_test
) {
4829 if (ctx
->Depth
.OcclusionTest
)
4830 *params
= (GLint
) ctx
->OcclusionResult
;
4832 *params
= (GLint
) ctx
->OcclusionResultSaved
;
4833 /* reset flag now */
4834 ctx
->OcclusionResult
= GL_FALSE
;
4835 ctx
->OcclusionResultSaved
= GL_FALSE
;
4838 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4842 /* GL_SGIS_pixel_texture */
4843 case GL_PIXEL_TEXTURE_SGIS
:
4844 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4847 /* GL_SGIX_pixel_texture */
4848 case GL_PIXEL_TEX_GEN_SGIX
:
4849 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4851 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4852 *params
= (GLint
) pixel_texgen_mode(ctx
);
4855 /* GL_SGI_color_matrix (also in 1.2 imaging) */
4856 case GL_COLOR_MATRIX_SGI
:
4857 for (i
=0;i
<16;i
++) {
4858 params
[i
] = (GLint
) ctx
->ColorMatrix
.m
[i
];
4861 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
4862 *params
= ctx
->ColorStackDepth
+ 1;
4864 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
4865 *params
= MAX_COLOR_STACK_DEPTH
;
4867 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
4868 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
4870 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
4871 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
4873 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
4874 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
4876 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
4877 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
4879 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
4880 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
4882 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
4883 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
4885 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
4886 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
4888 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
4889 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
4892 /* GL_EXT_convolution (also in 1.2 imaging) */
4893 case GL_CONVOLUTION_1D_EXT
:
4894 if (ctx
->Extensions
.EXT_convolution
) {
4895 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
4898 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4902 case GL_CONVOLUTION_2D
:
4903 if (ctx
->Extensions
.EXT_convolution
) {
4904 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
4907 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4911 case GL_SEPARABLE_2D
:
4912 if (ctx
->Extensions
.EXT_convolution
) {
4913 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
4916 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4920 case GL_MAX_CONVOLUTION_WIDTH
:
4921 *params
= ctx
->Const
.MaxConvolutionWidth
;
4923 case GL_MAX_CONVOLUTION_HEIGHT
:
4924 *params
= ctx
->Const
.MaxConvolutionHeight
;
4926 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
4927 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
4929 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
4930 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
4932 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
4933 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
4935 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
4936 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
4938 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
4939 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
4941 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
4942 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
4944 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
4945 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4947 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
4948 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4951 /* GL_SGI_color_table (also in 1.2 imaging */
4952 case GL_COLOR_TABLE_SGI
:
4953 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
4955 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
4956 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
4958 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
4959 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
4963 /* GL_EXT_secondary_color */
4964 case GL_COLOR_SUM_EXT
:
4965 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
4967 case GL_CURRENT_SECONDARY_COLOR_EXT
:
4968 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
4969 params
[0] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[0] ) );
4970 params
[1] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[1] ) );
4971 params
[2] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[2] ) );
4973 case GL_SECONDARY_COLOR_ARRAY_EXT
:
4974 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
4976 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
4977 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
4979 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
4980 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4982 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
4983 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4986 /* GL_EXT_fog_coord */
4987 case GL_CURRENT_FOG_COORDINATE_EXT
:
4988 if (ctx
->Extensions
.EXT_fog_coord
) {
4989 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
4990 *params
= (GLint
) ctx
->Current
.FogCoord
;
4993 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4996 case GL_FOG_COORDINATE_ARRAY_EXT
:
4997 if (ctx
->Extensions
.EXT_fog_coord
) {
4998 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
5001 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5004 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5005 if (ctx
->Extensions
.EXT_fog_coord
) {
5006 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
5009 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5012 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5013 if (ctx
->Extensions
.EXT_fog_coord
) {
5014 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
5017 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5021 /* GL_MESA_sprite_point */
5022 case GL_SPRITE_POINT_MESA
:
5023 if (ctx
->Extensions
.MESA_sprite_point
) {
5024 *params
= (GLint
) ctx
->Point
.SpriteMode
;
5027 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5033 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5040 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
5042 GET_CURRENT_CONTEXT(ctx
);
5043 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
5045 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetPointerv");
5050 if (MESA_VERBOSE
& VERBOSE_API
)
5051 fprintf(stderr
, "glGetPointerv %s\n", gl_lookup_enum_by_nr(pname
));
5053 if (ctx
->Driver
.GetPointerv
5054 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
5058 case GL_VERTEX_ARRAY_POINTER
:
5059 *params
= ctx
->Array
.Vertex
.Ptr
;
5061 case GL_NORMAL_ARRAY_POINTER
:
5062 *params
= ctx
->Array
.Normal
.Ptr
;
5064 case GL_COLOR_ARRAY_POINTER
:
5065 *params
= ctx
->Array
.Color
.Ptr
;
5067 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
5068 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
5070 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
5071 *params
= ctx
->Array
.FogCoord
.Ptr
;
5073 case GL_INDEX_ARRAY_POINTER
:
5074 *params
= ctx
->Array
.Index
.Ptr
;
5076 case GL_TEXTURE_COORD_ARRAY_POINTER
:
5077 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
5079 case GL_EDGE_FLAG_ARRAY_POINTER
:
5080 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
5082 case GL_FEEDBACK_BUFFER_POINTER
:
5083 *params
= ctx
->Feedback
.Buffer
;
5085 case GL_SELECTION_BUFFER_POINTER
:
5086 *params
= ctx
->Select
.Buffer
;
5089 gl_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
5097 _mesa_GetString( GLenum name
)
5099 GET_CURRENT_CONTEXT(ctx
);
5100 static const char *vendor
= "Brian Paul";
5101 static const char *renderer
= "Mesa";
5102 static const char *version
= "1.2 Mesa 3.5 beta";
5104 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH_WITH_RETVAL(ctx
, "glGetString", 0);
5106 /* this is a required driver function */
5107 assert(ctx
->Driver
.GetString
);
5109 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
5115 return (const GLubyte
*) vendor
;
5117 return (const GLubyte
*) renderer
;
5119 return (const GLubyte
*) version
;
5121 return (const GLubyte
*) gl_extensions_get_string( ctx
);
5123 gl_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
5124 return (const GLubyte
*) 0;
5131 * Execute a glGetError command
5134 _mesa_GetError( void )
5136 GET_CURRENT_CONTEXT(ctx
);
5138 GLenum e
= ctx
->ErrorValue
;
5140 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL( ctx
, "glGetError", (GLenum
) 0);
5142 if (MESA_VERBOSE
& VERBOSE_API
)
5143 fprintf(stderr
, "glGetError <-- %s\n", gl_lookup_enum_by_nr(e
));
5145 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;