1 /* $Id: get.c,v 1.46 2000/12/09 19:55:18 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_MAX_CONVOLUTION_WIDTH
:
1201 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionWidth
);
1203 case GL_MAX_CONVOLUTION_HEIGHT
:
1204 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionHeight
);
1206 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1207 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1209 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1210 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1212 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1213 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1215 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1216 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1218 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1219 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1221 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1222 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1224 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1225 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1227 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1228 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1231 /* GL_SGI_color_table (also in 1.2 imaging */
1232 case GL_COLOR_TABLE_SGI
:
1233 *params
= ctx
->Pixel
.ColorTableEnabled
;
1235 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1236 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1238 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1239 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1242 /* GL_EXT_secondary_color */
1243 case GL_COLOR_SUM_EXT
:
1244 *params
= ctx
->Fog
.ColorSumEnabled
;
1246 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1247 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1248 params
[0] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[0]);
1249 params
[1] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[1]);
1250 params
[2] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[2]);
1252 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1253 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1255 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1256 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1258 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1259 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1261 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1262 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1265 /* GL_EXT_fog_coord */
1266 case GL_CURRENT_FOG_COORDINATE_EXT
:
1267 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1268 *params
= FLOAT_TO_BOOL(ctx
->Current
.FogCoord
);
1270 case GL_FOG_COORDINATE_ARRAY_EXT
:
1271 *params
= ctx
->Array
.FogCoord
.Enabled
;
1273 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1274 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1276 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1277 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1280 /* GL_MESA_sprite_point */
1281 case GL_SPRITE_POINT_MESA
:
1282 if (ctx
->Extensions
.MESA_sprite_point
) {
1283 *params
= ctx
->Point
.SpriteMode
;
1286 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1292 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1300 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1302 GET_CURRENT_CONTEXT(ctx
);
1304 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1305 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
1306 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1308 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetDoublev");
1313 if (MESA_VERBOSE
& VERBOSE_API
)
1314 fprintf(stderr
, "glGetDoublev %s\n", gl_lookup_enum_by_nr(pname
));
1316 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1320 case GL_ACCUM_RED_BITS
:
1321 *params
= (GLdouble
) ctx
->Visual
.AccumRedBits
;
1323 case GL_ACCUM_GREEN_BITS
:
1324 *params
= (GLdouble
) ctx
->Visual
.AccumGreenBits
;
1326 case GL_ACCUM_BLUE_BITS
:
1327 *params
= (GLdouble
) ctx
->Visual
.AccumBlueBits
;
1329 case GL_ACCUM_ALPHA_BITS
:
1330 *params
= (GLdouble
) ctx
->Visual
.AccumAlphaBits
;
1332 case GL_ACCUM_CLEAR_VALUE
:
1333 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1334 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1335 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1336 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1339 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1342 *params
= (GLdouble
) ctx
->Visual
.AlphaBits
;
1344 case GL_ALPHA_SCALE
:
1345 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1348 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1350 case GL_ALPHA_TEST_FUNC
:
1351 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1353 case GL_ALPHA_TEST_REF
:
1354 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
1356 case GL_ATTRIB_STACK_DEPTH
:
1357 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1359 case GL_AUTO_NORMAL
:
1360 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1362 case GL_AUX_BUFFERS
:
1363 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1366 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1369 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1372 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1374 case GL_BLEND_SRC_RGB_EXT
:
1375 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1377 case GL_BLEND_DST_RGB_EXT
:
1378 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1380 case GL_BLEND_SRC_ALPHA_EXT
:
1381 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1383 case GL_BLEND_DST_ALPHA_EXT
:
1384 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1386 case GL_BLEND_EQUATION_EXT
:
1387 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1389 case GL_BLEND_COLOR_EXT
:
1390 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1391 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1392 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1393 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1396 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1399 *params
= (GLdouble
) ctx
->Visual
.BlueBits
;
1402 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1404 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1405 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1407 case GL_CLIP_PLANE0
:
1408 case GL_CLIP_PLANE1
:
1409 case GL_CLIP_PLANE2
:
1410 case GL_CLIP_PLANE3
:
1411 case GL_CLIP_PLANE4
:
1412 case GL_CLIP_PLANE5
:
1413 *params
= (GLdouble
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
1415 case GL_COLOR_CLEAR_VALUE
:
1416 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1417 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1418 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1419 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1421 case GL_COLOR_MATERIAL
:
1422 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1424 case GL_COLOR_MATERIAL_FACE
:
1425 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1427 case GL_COLOR_MATERIAL_PARAMETER
:
1428 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1430 case GL_COLOR_WRITEMASK
:
1431 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1432 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1433 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1434 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1437 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1439 case GL_CULL_FACE_MODE
:
1440 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1442 case GL_CURRENT_COLOR
:
1443 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1444 params
[0] = CHAN_TO_FLOAT(ctx
->Current
.Color
[0]);
1445 params
[1] = CHAN_TO_FLOAT(ctx
->Current
.Color
[1]);
1446 params
[2] = CHAN_TO_FLOAT(ctx
->Current
.Color
[2]);
1447 params
[3] = CHAN_TO_FLOAT(ctx
->Current
.Color
[3]);
1449 case GL_CURRENT_INDEX
:
1450 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1451 *params
= (GLdouble
) ctx
->Current
.Index
;
1453 case GL_CURRENT_NORMAL
:
1454 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1455 params
[0] = (GLdouble
) ctx
->Current
.Normal
[0];
1456 params
[1] = (GLdouble
) ctx
->Current
.Normal
[1];
1457 params
[2] = (GLdouble
) ctx
->Current
.Normal
[2];
1459 case GL_CURRENT_RASTER_COLOR
:
1460 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1461 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1462 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1463 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1465 case GL_CURRENT_RASTER_DISTANCE
:
1466 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1468 case GL_CURRENT_RASTER_INDEX
:
1469 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1471 case GL_CURRENT_RASTER_POSITION
:
1472 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1473 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1474 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1475 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1477 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1478 params
[0] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
1479 params
[1] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
1480 params
[2] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
1481 params
[3] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
1483 case GL_CURRENT_RASTER_POSITION_VALID
:
1484 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1486 case GL_CURRENT_TEXTURE_COORDS
:
1487 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1488 params
[0] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
1489 params
[1] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
1490 params
[2] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
1491 params
[3] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
1494 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1497 *params
= (GLdouble
) ctx
->Visual
.DepthBits
;
1499 case GL_DEPTH_CLEAR_VALUE
:
1500 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1503 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1505 case GL_DEPTH_RANGE
:
1506 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1507 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1509 case GL_DEPTH_SCALE
:
1510 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1513 *params
= (GLdouble
) ctx
->Depth
.Test
;
1515 case GL_DEPTH_WRITEMASK
:
1516 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1519 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1521 case GL_DOUBLEBUFFER
:
1522 *params
= (GLdouble
) ctx
->Visual
.DBflag
;
1524 case GL_DRAW_BUFFER
:
1525 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1528 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1529 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1531 case GL_FEEDBACK_BUFFER_SIZE
:
1532 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1534 case GL_FEEDBACK_BUFFER_TYPE
:
1535 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1538 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1541 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1542 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1543 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1544 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1546 case GL_FOG_DENSITY
:
1547 *params
= (GLdouble
) ctx
->Fog
.Density
;
1550 *params
= (GLdouble
) ctx
->Fog
.End
;
1553 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1556 *params
= (GLdouble
) ctx
->Fog
.Index
;
1559 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1562 *params
= (GLdouble
) ctx
->Fog
.Start
;
1565 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1568 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1571 *params
= (GLdouble
) ctx
->Visual
.GreenBits
;
1573 case GL_GREEN_SCALE
:
1574 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1577 if (ctx
->Extensions
.EXT_histogram
) {
1578 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
1581 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
1586 *params
= (GLdouble
) ctx
->Visual
.IndexBits
;
1588 case GL_INDEX_CLEAR_VALUE
:
1589 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1592 *params
= ctx
->Visual
.RGBAflag
? 0.0 : 1.0;
1594 case GL_INDEX_OFFSET
:
1595 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1597 case GL_INDEX_SHIFT
:
1598 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1600 case GL_INDEX_WRITEMASK
:
1601 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1611 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1614 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1616 case GL_LIGHT_MODEL_AMBIENT
:
1617 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1618 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1619 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1620 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1622 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1623 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1625 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1626 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1628 case GL_LIGHT_MODEL_TWO_SIDE
:
1629 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1631 case GL_LINE_SMOOTH
:
1632 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1634 case GL_LINE_SMOOTH_HINT
:
1635 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1637 case GL_LINE_STIPPLE
:
1638 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1640 case GL_LINE_STIPPLE_PATTERN
:
1641 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1643 case GL_LINE_STIPPLE_REPEAT
:
1644 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1647 *params
= (GLdouble
) ctx
->Line
.Width
;
1649 case GL_LINE_WIDTH_GRANULARITY
:
1650 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1652 case GL_LINE_WIDTH_RANGE
:
1653 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1654 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1656 case GL_ALIASED_LINE_WIDTH_RANGE
:
1657 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1658 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1661 *params
= (GLdouble
) ctx
->List
.ListBase
;
1664 *params
= (GLdouble
) ctx
->CurrentListNum
;
1667 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1668 : ENUM_TO_DOUBLE(GL_COMPILE
);
1670 case GL_INDEX_LOGIC_OP
:
1671 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1673 case GL_COLOR_LOGIC_OP
:
1674 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1676 case GL_LOGIC_OP_MODE
:
1677 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1679 case GL_MAP1_COLOR_4
:
1680 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1682 case GL_MAP1_GRID_DOMAIN
:
1683 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1684 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1686 case GL_MAP1_GRID_SEGMENTS
:
1687 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1690 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1692 case GL_MAP1_NORMAL
:
1693 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1695 case GL_MAP1_TEXTURE_COORD_1
:
1696 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1698 case GL_MAP1_TEXTURE_COORD_2
:
1699 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1701 case GL_MAP1_TEXTURE_COORD_3
:
1702 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1704 case GL_MAP1_TEXTURE_COORD_4
:
1705 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1707 case GL_MAP1_VERTEX_3
:
1708 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1710 case GL_MAP1_VERTEX_4
:
1711 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1713 case GL_MAP2_COLOR_4
:
1714 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1716 case GL_MAP2_GRID_DOMAIN
:
1717 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1718 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1719 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1720 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1722 case GL_MAP2_GRID_SEGMENTS
:
1723 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1724 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1727 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1729 case GL_MAP2_NORMAL
:
1730 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1732 case GL_MAP2_TEXTURE_COORD_1
:
1733 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1735 case GL_MAP2_TEXTURE_COORD_2
:
1736 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1738 case GL_MAP2_TEXTURE_COORD_3
:
1739 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1741 case GL_MAP2_TEXTURE_COORD_4
:
1742 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1744 case GL_MAP2_VERTEX_3
:
1745 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1747 case GL_MAP2_VERTEX_4
:
1748 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1751 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1753 case GL_MAP_STENCIL
:
1754 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1756 case GL_MATRIX_MODE
:
1757 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1759 case GL_MAX_ATTRIB_STACK_DEPTH
:
1760 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1762 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1763 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1765 case GL_MAX_CLIP_PLANES
:
1766 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
1768 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1769 *params
= (GLdouble
) VB_MAX
;
1771 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1772 *params
= (GLdouble
) VB_MAX
;
1774 case GL_MAX_EVAL_ORDER
:
1775 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1778 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
1780 case GL_MAX_LIST_NESTING
:
1781 *params
= (GLdouble
) MAX_LIST_NESTING
;
1783 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1784 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1786 case GL_MAX_NAME_STACK_DEPTH
:
1787 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1789 case GL_MAX_PIXEL_MAP_TABLE
:
1790 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1792 case GL_MAX_PROJECTION_STACK_DEPTH
:
1793 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1795 case GL_MAX_TEXTURE_SIZE
:
1796 case GL_MAX_3D_TEXTURE_SIZE
:
1797 *params
= (GLdouble
) ctx
->Const
.MaxTextureSize
;
1799 case GL_MAX_TEXTURE_STACK_DEPTH
:
1800 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1802 case GL_MAX_VIEWPORT_DIMS
:
1803 params
[0] = (GLdouble
) MAX_WIDTH
;
1804 params
[1] = (GLdouble
) MAX_HEIGHT
;
1807 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
1809 case GL_MODELVIEW_MATRIX
:
1810 for (i
=0;i
<16;i
++) {
1811 params
[i
] = (GLdouble
) ctx
->ModelView
.m
[i
];
1814 case GL_MODELVIEW_STACK_DEPTH
:
1815 *params
= (GLdouble
) (ctx
->ModelViewStackDepth
+ 1);
1817 case GL_NAME_STACK_DEPTH
:
1818 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1821 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1823 case GL_PACK_ALIGNMENT
:
1824 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1826 case GL_PACK_LSB_FIRST
:
1827 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1829 case GL_PACK_ROW_LENGTH
:
1830 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1832 case GL_PACK_SKIP_PIXELS
:
1833 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1835 case GL_PACK_SKIP_ROWS
:
1836 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1838 case GL_PACK_SWAP_BYTES
:
1839 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
1841 case GL_PACK_SKIP_IMAGES_EXT
:
1842 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
1844 case GL_PACK_IMAGE_HEIGHT_EXT
:
1845 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
1847 case GL_PERSPECTIVE_CORRECTION_HINT
:
1848 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
1850 case GL_PIXEL_MAP_A_TO_A_SIZE
:
1851 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
1853 case GL_PIXEL_MAP_B_TO_B_SIZE
:
1854 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
1856 case GL_PIXEL_MAP_G_TO_G_SIZE
:
1857 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
1859 case GL_PIXEL_MAP_I_TO_A_SIZE
:
1860 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
1862 case GL_PIXEL_MAP_I_TO_B_SIZE
:
1863 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
1865 case GL_PIXEL_MAP_I_TO_G_SIZE
:
1866 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
1868 case GL_PIXEL_MAP_I_TO_I_SIZE
:
1869 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
1871 case GL_PIXEL_MAP_I_TO_R_SIZE
:
1872 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
1874 case GL_PIXEL_MAP_R_TO_R_SIZE
:
1875 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
1877 case GL_PIXEL_MAP_S_TO_S_SIZE
:
1878 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
1881 *params
= (GLdouble
) ctx
->Point
.Size
;
1883 case GL_POINT_SIZE_GRANULARITY
:
1884 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
1886 case GL_POINT_SIZE_RANGE
:
1887 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
1888 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
1890 case GL_ALIASED_POINT_SIZE_RANGE
:
1891 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
1892 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
1894 case GL_POINT_SMOOTH
:
1895 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
1897 case GL_POINT_SMOOTH_HINT
:
1898 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
1900 case GL_POINT_SIZE_MIN_EXT
:
1901 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
1903 case GL_POINT_SIZE_MAX_EXT
:
1904 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
1906 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
1907 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
1909 case GL_DISTANCE_ATTENUATION_EXT
:
1910 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
1911 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
1912 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
1914 case GL_POLYGON_MODE
:
1915 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
1916 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
1918 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
1919 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1921 case GL_POLYGON_OFFSET_FACTOR
:
1922 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
1924 case GL_POLYGON_OFFSET_UNITS
:
1925 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1927 case GL_POLYGON_SMOOTH
:
1928 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
1930 case GL_POLYGON_SMOOTH_HINT
:
1931 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
1933 case GL_POLYGON_STIPPLE
:
1934 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
1936 case GL_PROJECTION_MATRIX
:
1937 for (i
=0;i
<16;i
++) {
1938 params
[i
] = (GLdouble
) ctx
->ProjectionMatrix
.m
[i
];
1941 case GL_PROJECTION_STACK_DEPTH
:
1942 *params
= (GLdouble
) (ctx
->ProjectionStackDepth
+ 1);
1944 case GL_READ_BUFFER
:
1945 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
1948 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
1951 *params
= (GLdouble
) ctx
->Visual
.RedBits
;
1954 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
1956 case GL_RENDER_MODE
:
1957 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
1959 case GL_RESCALE_NORMAL
:
1960 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
1963 *params
= (GLdouble
) ctx
->Visual
.RGBAflag
;
1965 case GL_SCISSOR_BOX
:
1966 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
1967 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
1968 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
1969 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
1971 case GL_SCISSOR_TEST
:
1972 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
1974 case GL_SELECTION_BUFFER_SIZE
:
1975 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
1977 case GL_SHADE_MODEL
:
1978 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
1980 case GL_SHARED_TEXTURE_PALETTE_EXT
:
1981 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
1983 case GL_STENCIL_BITS
:
1984 *params
= (GLdouble
) ctx
->Visual
.StencilBits
;
1986 case GL_STENCIL_CLEAR_VALUE
:
1987 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
1989 case GL_STENCIL_FAIL
:
1990 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
1992 case GL_STENCIL_FUNC
:
1993 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
1995 case GL_STENCIL_PASS_DEPTH_FAIL
:
1996 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
1998 case GL_STENCIL_PASS_DEPTH_PASS
:
1999 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
2001 case GL_STENCIL_REF
:
2002 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
2004 case GL_STENCIL_TEST
:
2005 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2007 case GL_STENCIL_VALUE_MASK
:
2008 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
2010 case GL_STENCIL_WRITEMASK
:
2011 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
2014 *params
= (GLdouble
) ctx
->Visual
.StereoFlag
;
2016 case GL_SUBPIXEL_BITS
:
2017 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2020 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2023 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2026 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2028 case GL_TEXTURE_BINDING_1D
:
2029 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2031 case GL_TEXTURE_BINDING_2D
:
2032 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2034 case GL_TEXTURE_BINDING_3D
:
2035 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2037 case GL_TEXTURE_ENV_COLOR
:
2038 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2039 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2040 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2041 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2043 case GL_TEXTURE_ENV_MODE
:
2044 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2046 case GL_TEXTURE_GEN_S
:
2047 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2049 case GL_TEXTURE_GEN_T
:
2050 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2052 case GL_TEXTURE_GEN_R
:
2053 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2055 case GL_TEXTURE_GEN_Q
:
2056 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2058 case GL_TEXTURE_MATRIX
:
2059 for (i
=0;i
<16;i
++) {
2060 params
[i
] = (GLdouble
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
2063 case GL_TEXTURE_STACK_DEPTH
:
2064 *params
= (GLdouble
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
2066 case GL_UNPACK_ALIGNMENT
:
2067 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2069 case GL_UNPACK_LSB_FIRST
:
2070 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2072 case GL_UNPACK_ROW_LENGTH
:
2073 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2075 case GL_UNPACK_SKIP_PIXELS
:
2076 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2078 case GL_UNPACK_SKIP_ROWS
:
2079 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2081 case GL_UNPACK_SWAP_BYTES
:
2082 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2084 case GL_UNPACK_SKIP_IMAGES_EXT
:
2085 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2087 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2088 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2091 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2092 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2093 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2094 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2097 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2100 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2102 case GL_VERTEX_ARRAY
:
2103 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2105 case GL_VERTEX_ARRAY_SIZE
:
2106 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2108 case GL_VERTEX_ARRAY_TYPE
:
2109 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2111 case GL_VERTEX_ARRAY_STRIDE
:
2112 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2114 case GL_VERTEX_ARRAY_COUNT_EXT
:
2117 case GL_NORMAL_ARRAY
:
2118 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2120 case GL_NORMAL_ARRAY_TYPE
:
2121 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2123 case GL_NORMAL_ARRAY_STRIDE
:
2124 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2126 case GL_NORMAL_ARRAY_COUNT_EXT
:
2129 case GL_COLOR_ARRAY
:
2130 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2132 case GL_COLOR_ARRAY_SIZE
:
2133 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2135 case GL_COLOR_ARRAY_TYPE
:
2136 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2138 case GL_COLOR_ARRAY_STRIDE
:
2139 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2141 case GL_COLOR_ARRAY_COUNT_EXT
:
2144 case GL_INDEX_ARRAY
:
2145 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2147 case GL_INDEX_ARRAY_TYPE
:
2148 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2150 case GL_INDEX_ARRAY_STRIDE
:
2151 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2153 case GL_INDEX_ARRAY_COUNT_EXT
:
2156 case GL_TEXTURE_COORD_ARRAY
:
2157 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2159 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2160 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2162 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2163 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2165 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2166 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2168 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2171 case GL_EDGE_FLAG_ARRAY
:
2172 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2174 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2175 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2177 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2181 /* GL_ARB_multitexture */
2182 case GL_MAX_TEXTURE_UNITS_ARB
:
2183 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2185 case GL_ACTIVE_TEXTURE_ARB
:
2186 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2188 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2189 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2192 /* GL_ARB_texture_cube_map */
2193 case GL_TEXTURE_CUBE_MAP_ARB
:
2194 if (ctx
->Extensions
.ARB_texture_cube_map
)
2195 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2197 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2199 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2200 if (ctx
->Extensions
.ARB_texture_cube_map
)
2201 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2203 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2205 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2206 if (ctx
->Extensions
.ARB_texture_cube_map
)
2207 *params
= (GLdouble
) ctx
->Const
.MaxCubeTextureSize
;
2209 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2212 /* GL_ARB_texture_compression */
2213 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2214 if (ctx
->Extensions
.ARB_texture_compression
) {
2215 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2218 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2220 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2221 if (ctx
->Extensions
.ARB_texture_compression
) {
2222 *params
= (GLdouble
) ctx
->Const
.NumCompressedTextureFormats
;
2225 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2227 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2228 if (ctx
->Extensions
.ARB_texture_compression
) {
2230 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
2231 params
[i
] = (GLdouble
) ctx
->Const
.CompressedTextureFormats
[i
];
2234 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2237 /* GL_PGI_misc_hints */
2238 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
2239 *params
= ENUM_TO_DOUBLE(GL_NICEST
);
2241 case GL_STRICT_LIGHTING_HINT_PGI
:
2242 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.StrictLighting
);
2244 case GL_STRICT_SCISSOR_HINT_PGI
:
2245 case GL_FULL_STIPPLE_HINT_PGI
:
2246 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2248 case GL_CONSERVE_MEMORY_HINT_PGI
:
2249 *params
= ENUM_TO_DOUBLE(GL_FALSE
);
2251 case GL_ALWAYS_FAST_HINT_PGI
:
2252 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2253 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
2254 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
2256 case GL_ALWAYS_SOFT_HINT_PGI
:
2257 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2258 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
2259 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
2261 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
2262 *params
= (GLdouble
) GL_TRUE
;
2264 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
2265 *params
= (GLdouble
) ctx
->Hint
.AllowDrawWin
;
2267 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
2268 *params
= (GLdouble
) ctx
->Hint
.AllowDrawFrg
;
2270 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
2271 *params
= (GLdouble
) ctx
->Hint
.AllowDrawMem
;
2273 case GL_CLIP_NEAR_HINT_PGI
:
2274 case GL_CLIP_FAR_HINT_PGI
:
2275 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2277 case GL_WIDE_LINE_HINT_PGI
:
2278 *params
= ENUM_TO_DOUBLE(GL_DONT_CARE
);
2280 case GL_BACK_NORMALS_HINT_PGI
:
2281 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2283 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
2287 /* GL_EXT_compiled_vertex_array */
2288 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2289 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2291 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2292 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2295 /* GL_ARB_transpose_matrix */
2296 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2300 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
2301 for (i
=0;i
<16;i
++) {
2302 params
[i
] = (GLdouble
) tm
[i
];
2306 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2310 _math_transposef(tm
, ctx
->ModelView
.m
);
2311 for (i
=0;i
<16;i
++) {
2312 params
[i
] = (GLdouble
) tm
[i
];
2316 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2320 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
2321 for (i
=0;i
<16;i
++) {
2322 params
[i
] = (GLdouble
) tm
[i
];
2326 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2330 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
2331 for (i
=0;i
<16;i
++) {
2332 params
[i
] = (GLdouble
) tm
[i
];
2337 /* GL_HP_occlusion_test */
2338 case GL_OCCLUSION_TEST_HP
:
2339 if (ctx
->Extensions
.HP_occlusion_test
) {
2340 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2343 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2346 case GL_OCCLUSION_TEST_RESULT_HP
:
2347 if (ctx
->Extensions
.HP_occlusion_test
) {
2348 if (ctx
->Depth
.OcclusionTest
)
2349 *params
= (GLdouble
) ctx
->OcclusionResult
;
2351 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2352 /* reset flag now */
2353 ctx
->OcclusionResult
= GL_FALSE
;
2354 ctx
->OcclusionResultSaved
= GL_FALSE
;
2357 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2361 /* GL_SGIS_pixel_texture */
2362 case GL_PIXEL_TEXTURE_SGIS
:
2363 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2366 /* GL_SGIX_pixel_texture */
2367 case GL_PIXEL_TEX_GEN_SGIX
:
2368 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2370 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2371 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2374 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2375 case GL_COLOR_MATRIX_SGI
:
2376 for (i
=0;i
<16;i
++) {
2377 params
[i
] = (GLdouble
) ctx
->ColorMatrix
.m
[i
];
2380 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2381 *params
= (GLdouble
) (ctx
->ColorStackDepth
+ 1);
2383 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2384 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2386 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2387 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2389 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2390 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2392 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2393 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2395 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2396 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2398 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2399 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2401 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2402 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2404 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2405 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2407 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2408 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2411 /* GL_EXT_convolution (also in 1.2 imaging) */
2412 case GL_MAX_CONVOLUTION_WIDTH
:
2413 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionWidth
;
2415 case GL_MAX_CONVOLUTION_HEIGHT
:
2416 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionHeight
;
2418 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2419 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2421 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2422 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2424 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2425 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2427 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2428 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2430 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2431 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2433 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2434 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2436 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2437 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2439 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2440 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2443 /* GL_SGI_color_table (also in 1.2 imaging */
2444 case GL_COLOR_TABLE_SGI
:
2445 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2447 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2448 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2450 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2451 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2454 /* GL_EXT_secondary_color */
2455 case GL_COLOR_SUM_EXT
:
2456 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2458 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2459 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2460 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[0]);
2461 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[1]);
2462 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[2]);
2464 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2465 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2467 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2468 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2470 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2471 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2473 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2474 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2477 /* GL_EXT_fog_coord */
2478 case GL_CURRENT_FOG_COORDINATE_EXT
:
2479 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2480 *params
= (GLdouble
) ctx
->Current
.FogCoord
;
2482 case GL_FOG_COORDINATE_ARRAY_EXT
:
2483 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2485 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2486 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2488 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2489 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2492 /* GL_MESA_sprite_point */
2493 case GL_SPRITE_POINT_MESA
:
2494 if (ctx
->Extensions
.MESA_sprite_point
) {
2495 *params
= (GLdouble
) ctx
->Point
.SpriteMode
;
2498 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2504 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2512 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2514 GET_CURRENT_CONTEXT(ctx
);
2516 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2517 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
2518 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2520 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetFloatv");
2525 if (MESA_VERBOSE
& VERBOSE_API
)
2526 fprintf(stderr
, "glGetFloatv %s\n", gl_lookup_enum_by_nr(pname
));
2528 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2532 case GL_ACCUM_RED_BITS
:
2533 *params
= (GLfloat
) ctx
->Visual
.AccumRedBits
;
2535 case GL_ACCUM_GREEN_BITS
:
2536 *params
= (GLfloat
) ctx
->Visual
.AccumGreenBits
;
2538 case GL_ACCUM_BLUE_BITS
:
2539 *params
= (GLfloat
) ctx
->Visual
.AccumBlueBits
;
2541 case GL_ACCUM_ALPHA_BITS
:
2542 *params
= (GLfloat
) ctx
->Visual
.AccumAlphaBits
;
2544 case GL_ACCUM_CLEAR_VALUE
:
2545 params
[0] = ctx
->Accum
.ClearColor
[0];
2546 params
[1] = ctx
->Accum
.ClearColor
[1];
2547 params
[2] = ctx
->Accum
.ClearColor
[2];
2548 params
[3] = ctx
->Accum
.ClearColor
[3];
2551 *params
= ctx
->Pixel
.AlphaBias
;
2554 *params
= (GLfloat
) ctx
->Visual
.AlphaBits
;
2556 case GL_ALPHA_SCALE
:
2557 *params
= ctx
->Pixel
.AlphaScale
;
2560 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2562 case GL_ALPHA_TEST_FUNC
:
2563 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2565 case GL_ALPHA_TEST_REF
:
2566 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
2568 case GL_ATTRIB_STACK_DEPTH
:
2569 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2571 case GL_AUTO_NORMAL
:
2572 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2574 case GL_AUX_BUFFERS
:
2575 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2578 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2581 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2584 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2586 case GL_BLEND_SRC_RGB_EXT
:
2587 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2589 case GL_BLEND_DST_RGB_EXT
:
2590 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2592 case GL_BLEND_SRC_ALPHA_EXT
:
2593 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2595 case GL_BLEND_DST_ALPHA_EXT
:
2596 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2598 case GL_BLEND_EQUATION_EXT
:
2599 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2601 case GL_BLEND_COLOR_EXT
:
2602 params
[0] = ctx
->Color
.BlendColor
[0];
2603 params
[1] = ctx
->Color
.BlendColor
[1];
2604 params
[2] = ctx
->Color
.BlendColor
[2];
2605 params
[3] = ctx
->Color
.BlendColor
[3];
2608 *params
= ctx
->Pixel
.BlueBias
;
2611 *params
= (GLfloat
) ctx
->Visual
.BlueBits
;
2614 *params
= ctx
->Pixel
.BlueScale
;
2616 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2617 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2619 case GL_CLIP_PLANE0
:
2620 case GL_CLIP_PLANE1
:
2621 case GL_CLIP_PLANE2
:
2622 case GL_CLIP_PLANE3
:
2623 case GL_CLIP_PLANE4
:
2624 case GL_CLIP_PLANE5
:
2625 *params
= (GLfloat
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
2627 case GL_COLOR_CLEAR_VALUE
:
2628 params
[0] = (GLfloat
) ctx
->Color
.ClearColor
[0];
2629 params
[1] = (GLfloat
) ctx
->Color
.ClearColor
[1];
2630 params
[2] = (GLfloat
) ctx
->Color
.ClearColor
[2];
2631 params
[3] = (GLfloat
) ctx
->Color
.ClearColor
[3];
2633 case GL_COLOR_MATERIAL
:
2634 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2636 case GL_COLOR_MATERIAL_FACE
:
2637 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2639 case GL_COLOR_MATERIAL_PARAMETER
:
2640 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2642 case GL_COLOR_WRITEMASK
:
2643 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2644 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2645 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2646 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2649 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2651 case GL_CULL_FACE_MODE
:
2652 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2654 case GL_CURRENT_COLOR
:
2655 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2656 params
[0] = CHAN_TO_FLOAT(ctx
->Current
.Color
[0]);
2657 params
[1] = CHAN_TO_FLOAT(ctx
->Current
.Color
[1]);
2658 params
[2] = CHAN_TO_FLOAT(ctx
->Current
.Color
[2]);
2659 params
[3] = CHAN_TO_FLOAT(ctx
->Current
.Color
[3]);
2661 case GL_CURRENT_INDEX
:
2662 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2663 *params
= (GLfloat
) ctx
->Current
.Index
;
2665 case GL_CURRENT_NORMAL
:
2666 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2667 params
[0] = ctx
->Current
.Normal
[0];
2668 params
[1] = ctx
->Current
.Normal
[1];
2669 params
[2] = ctx
->Current
.Normal
[2];
2671 case GL_CURRENT_RASTER_COLOR
:
2672 params
[0] = ctx
->Current
.RasterColor
[0];
2673 params
[1] = ctx
->Current
.RasterColor
[1];
2674 params
[2] = ctx
->Current
.RasterColor
[2];
2675 params
[3] = ctx
->Current
.RasterColor
[3];
2677 case GL_CURRENT_RASTER_DISTANCE
:
2678 params
[0] = ctx
->Current
.RasterDistance
;
2680 case GL_CURRENT_RASTER_INDEX
:
2681 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2683 case GL_CURRENT_RASTER_POSITION
:
2684 params
[0] = ctx
->Current
.RasterPos
[0];
2685 params
[1] = ctx
->Current
.RasterPos
[1];
2686 params
[2] = ctx
->Current
.RasterPos
[2];
2687 params
[3] = ctx
->Current
.RasterPos
[3];
2689 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2690 params
[0] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
2691 params
[1] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
2692 params
[2] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
2693 params
[3] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
2695 case GL_CURRENT_RASTER_POSITION_VALID
:
2696 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2698 case GL_CURRENT_TEXTURE_COORDS
:
2699 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2700 params
[0] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
2701 params
[1] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
2702 params
[2] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
2703 params
[3] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
2706 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2709 *params
= (GLfloat
) ctx
->Visual
.DepthBits
;
2711 case GL_DEPTH_CLEAR_VALUE
:
2712 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2715 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2717 case GL_DEPTH_RANGE
:
2718 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2719 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2721 case GL_DEPTH_SCALE
:
2722 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2725 *params
= (GLfloat
) ctx
->Depth
.Test
;
2727 case GL_DEPTH_WRITEMASK
:
2728 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2731 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2733 case GL_DOUBLEBUFFER
:
2734 *params
= (GLfloat
) ctx
->Visual
.DBflag
;
2736 case GL_DRAW_BUFFER
:
2737 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2740 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2741 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2743 case GL_FEEDBACK_BUFFER_SIZE
:
2744 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2746 case GL_FEEDBACK_BUFFER_TYPE
:
2747 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2750 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2753 params
[0] = ctx
->Fog
.Color
[0];
2754 params
[1] = ctx
->Fog
.Color
[1];
2755 params
[2] = ctx
->Fog
.Color
[2];
2756 params
[3] = ctx
->Fog
.Color
[3];
2758 case GL_FOG_DENSITY
:
2759 *params
= ctx
->Fog
.Density
;
2762 *params
= ctx
->Fog
.End
;
2765 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2768 *params
= ctx
->Fog
.Index
;
2771 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2774 *params
= ctx
->Fog
.Start
;
2777 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2780 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2783 *params
= (GLfloat
) ctx
->Visual
.GreenBits
;
2785 case GL_GREEN_SCALE
:
2786 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
2789 if (ctx
->Extensions
.EXT_histogram
) {
2790 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
2793 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
2798 *params
= (GLfloat
) ctx
->Visual
.IndexBits
;
2800 case GL_INDEX_CLEAR_VALUE
:
2801 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
2804 *params
= ctx
->Visual
.RGBAflag
? 0.0F
: 1.0F
;
2806 case GL_INDEX_OFFSET
:
2807 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
2809 case GL_INDEX_SHIFT
:
2810 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
2812 case GL_INDEX_WRITEMASK
:
2813 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
2823 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
2826 *params
= (GLfloat
) ctx
->Light
.Enabled
;
2828 case GL_LIGHT_MODEL_AMBIENT
:
2829 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2830 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2831 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2832 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2834 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2835 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2837 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2838 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
2840 case GL_LIGHT_MODEL_TWO_SIDE
:
2841 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
2843 case GL_LINE_SMOOTH
:
2844 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
2846 case GL_LINE_SMOOTH_HINT
:
2847 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2849 case GL_LINE_STIPPLE
:
2850 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
2852 case GL_LINE_STIPPLE_PATTERN
:
2853 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
2855 case GL_LINE_STIPPLE_REPEAT
:
2856 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
2859 *params
= (GLfloat
) ctx
->Line
.Width
;
2861 case GL_LINE_WIDTH_GRANULARITY
:
2862 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
2864 case GL_LINE_WIDTH_RANGE
:
2865 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
2866 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
2868 case GL_ALIASED_LINE_WIDTH_RANGE
:
2869 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
2870 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
2873 *params
= (GLfloat
) ctx
->List
.ListBase
;
2876 *params
= (GLfloat
) ctx
->CurrentListNum
;
2879 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
2880 : ENUM_TO_FLOAT(GL_COMPILE
);
2882 case GL_INDEX_LOGIC_OP
:
2883 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
2885 case GL_COLOR_LOGIC_OP
:
2886 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
2888 case GL_LOGIC_OP_MODE
:
2889 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2891 case GL_MAP1_COLOR_4
:
2892 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
2894 case GL_MAP1_GRID_DOMAIN
:
2895 params
[0] = ctx
->Eval
.MapGrid1u1
;
2896 params
[1] = ctx
->Eval
.MapGrid1u2
;
2898 case GL_MAP1_GRID_SEGMENTS
:
2899 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
2902 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
2904 case GL_MAP1_NORMAL
:
2905 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
2907 case GL_MAP1_TEXTURE_COORD_1
:
2908 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
2910 case GL_MAP1_TEXTURE_COORD_2
:
2911 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
2913 case GL_MAP1_TEXTURE_COORD_3
:
2914 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
2916 case GL_MAP1_TEXTURE_COORD_4
:
2917 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
2919 case GL_MAP1_VERTEX_3
:
2920 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
2922 case GL_MAP1_VERTEX_4
:
2923 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
2925 case GL_MAP2_COLOR_4
:
2926 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
2928 case GL_MAP2_GRID_DOMAIN
:
2929 params
[0] = ctx
->Eval
.MapGrid2u1
;
2930 params
[1] = ctx
->Eval
.MapGrid2u2
;
2931 params
[2] = ctx
->Eval
.MapGrid2v1
;
2932 params
[3] = ctx
->Eval
.MapGrid2v2
;
2934 case GL_MAP2_GRID_SEGMENTS
:
2935 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
2936 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
2939 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
2941 case GL_MAP2_NORMAL
:
2942 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
2944 case GL_MAP2_TEXTURE_COORD_1
:
2945 *params
= ctx
->Eval
.Map2TextureCoord1
;
2947 case GL_MAP2_TEXTURE_COORD_2
:
2948 *params
= ctx
->Eval
.Map2TextureCoord2
;
2950 case GL_MAP2_TEXTURE_COORD_3
:
2951 *params
= ctx
->Eval
.Map2TextureCoord3
;
2953 case GL_MAP2_TEXTURE_COORD_4
:
2954 *params
= ctx
->Eval
.Map2TextureCoord4
;
2956 case GL_MAP2_VERTEX_3
:
2957 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
2959 case GL_MAP2_VERTEX_4
:
2960 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
2963 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
2965 case GL_MAP_STENCIL
:
2966 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
2968 case GL_MATRIX_MODE
:
2969 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2971 case GL_MAX_ATTRIB_STACK_DEPTH
:
2972 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
2974 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2975 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
2977 case GL_MAX_CLIP_PLANES
:
2978 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
2980 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
2981 *params
= (GLfloat
) VB_MAX
;
2983 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
2984 *params
= (GLfloat
) VB_MAX
;
2986 case GL_MAX_EVAL_ORDER
:
2987 *params
= (GLfloat
) MAX_EVAL_ORDER
;
2990 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
2992 case GL_MAX_LIST_NESTING
:
2993 *params
= (GLfloat
) MAX_LIST_NESTING
;
2995 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2996 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
2998 case GL_MAX_NAME_STACK_DEPTH
:
2999 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3001 case GL_MAX_PIXEL_MAP_TABLE
:
3002 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3004 case GL_MAX_PROJECTION_STACK_DEPTH
:
3005 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3007 case GL_MAX_TEXTURE_SIZE
:
3008 case GL_MAX_3D_TEXTURE_SIZE
:
3009 *params
= (GLfloat
) ctx
->Const
.MaxTextureSize
;
3011 case GL_MAX_TEXTURE_STACK_DEPTH
:
3012 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3014 case GL_MAX_VIEWPORT_DIMS
:
3015 params
[0] = (GLfloat
) MAX_WIDTH
;
3016 params
[1] = (GLfloat
) MAX_HEIGHT
;
3019 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
3021 case GL_MODELVIEW_MATRIX
:
3022 for (i
=0;i
<16;i
++) {
3023 params
[i
] = ctx
->ModelView
.m
[i
];
3026 case GL_MODELVIEW_STACK_DEPTH
:
3027 *params
= (GLfloat
) (ctx
->ModelViewStackDepth
+ 1);
3029 case GL_NAME_STACK_DEPTH
:
3030 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3033 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3035 case GL_PACK_ALIGNMENT
:
3036 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3038 case GL_PACK_LSB_FIRST
:
3039 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3041 case GL_PACK_ROW_LENGTH
:
3042 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3044 case GL_PACK_SKIP_PIXELS
:
3045 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3047 case GL_PACK_SKIP_ROWS
:
3048 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3050 case GL_PACK_SWAP_BYTES
:
3051 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3053 case GL_PACK_SKIP_IMAGES_EXT
:
3054 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3056 case GL_PACK_IMAGE_HEIGHT_EXT
:
3057 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3059 case GL_PERSPECTIVE_CORRECTION_HINT
:
3060 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3062 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3063 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3065 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3066 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3068 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3069 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3071 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3072 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3074 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3075 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3077 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3078 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3080 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3081 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3083 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3084 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3086 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3087 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3089 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3090 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3093 *params
= (GLfloat
) ctx
->Point
.Size
;
3095 case GL_POINT_SIZE_GRANULARITY
:
3096 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3098 case GL_POINT_SIZE_RANGE
:
3099 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3100 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3102 case GL_ALIASED_POINT_SIZE_RANGE
:
3103 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3104 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3106 case GL_POINT_SMOOTH
:
3107 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3109 case GL_POINT_SMOOTH_HINT
:
3110 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3112 case GL_POINT_SIZE_MIN_EXT
:
3113 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3115 case GL_POINT_SIZE_MAX_EXT
:
3116 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3118 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3119 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3121 case GL_DISTANCE_ATTENUATION_EXT
:
3122 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3123 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3124 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3126 case GL_POLYGON_MODE
:
3127 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3128 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3130 #ifdef GL_EXT_polygon_offset
3131 case GL_POLYGON_OFFSET_BIAS_EXT
:
3132 *params
= ctx
->Polygon
.OffsetUnits
;
3135 case GL_POLYGON_OFFSET_FACTOR
:
3136 *params
= ctx
->Polygon
.OffsetFactor
;
3138 case GL_POLYGON_OFFSET_UNITS
:
3139 *params
= ctx
->Polygon
.OffsetUnits
;
3141 case GL_POLYGON_SMOOTH
:
3142 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3144 case GL_POLYGON_SMOOTH_HINT
:
3145 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3147 case GL_POLYGON_STIPPLE
:
3148 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3150 case GL_PROJECTION_MATRIX
:
3151 for (i
=0;i
<16;i
++) {
3152 params
[i
] = ctx
->ProjectionMatrix
.m
[i
];
3155 case GL_PROJECTION_STACK_DEPTH
:
3156 *params
= (GLfloat
) (ctx
->ProjectionStackDepth
+ 1);
3158 case GL_READ_BUFFER
:
3159 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3162 *params
= ctx
->Pixel
.RedBias
;
3165 *params
= (GLfloat
) ctx
->Visual
.RedBits
;
3168 *params
= ctx
->Pixel
.RedScale
;
3170 case GL_RENDER_MODE
:
3171 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3173 case GL_RESCALE_NORMAL
:
3174 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3177 *params
= (GLfloat
) ctx
->Visual
.RGBAflag
;
3179 case GL_SCISSOR_BOX
:
3180 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3181 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3182 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3183 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3185 case GL_SCISSOR_TEST
:
3186 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3188 case GL_SELECTION_BUFFER_SIZE
:
3189 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3191 case GL_SHADE_MODEL
:
3192 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3194 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3195 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3197 case GL_STENCIL_BITS
:
3198 *params
= (GLfloat
) ctx
->Visual
.StencilBits
;
3200 case GL_STENCIL_CLEAR_VALUE
:
3201 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3203 case GL_STENCIL_FAIL
:
3204 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
3206 case GL_STENCIL_FUNC
:
3207 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
3209 case GL_STENCIL_PASS_DEPTH_FAIL
:
3210 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
3212 case GL_STENCIL_PASS_DEPTH_PASS
:
3213 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
3215 case GL_STENCIL_REF
:
3216 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
3218 case GL_STENCIL_TEST
:
3219 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3221 case GL_STENCIL_VALUE_MASK
:
3222 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
3224 case GL_STENCIL_WRITEMASK
:
3225 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
3228 *params
= (GLfloat
) ctx
->Visual
.StereoFlag
;
3230 case GL_SUBPIXEL_BITS
:
3231 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3234 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
3237 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
3240 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
3242 case GL_TEXTURE_BINDING_1D
:
3243 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3245 case GL_TEXTURE_BINDING_2D
:
3246 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3248 case GL_TEXTURE_BINDING_3D
:
3249 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3251 case GL_TEXTURE_ENV_COLOR
:
3252 params
[0] = textureUnit
->EnvColor
[0];
3253 params
[1] = textureUnit
->EnvColor
[1];
3254 params
[2] = textureUnit
->EnvColor
[2];
3255 params
[3] = textureUnit
->EnvColor
[3];
3257 case GL_TEXTURE_ENV_MODE
:
3258 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3260 case GL_TEXTURE_GEN_S
:
3261 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
3263 case GL_TEXTURE_GEN_T
:
3264 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
3266 case GL_TEXTURE_GEN_R
:
3267 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
3269 case GL_TEXTURE_GEN_Q
:
3270 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
3272 case GL_TEXTURE_MATRIX
:
3273 for (i
=0;i
<16;i
++) {
3274 params
[i
] = ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
3277 case GL_TEXTURE_STACK_DEPTH
:
3278 *params
= (GLfloat
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
3280 case GL_UNPACK_ALIGNMENT
:
3281 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3283 case GL_UNPACK_LSB_FIRST
:
3284 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3286 case GL_UNPACK_ROW_LENGTH
:
3287 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3289 case GL_UNPACK_SKIP_PIXELS
:
3290 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3292 case GL_UNPACK_SKIP_ROWS
:
3293 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3295 case GL_UNPACK_SWAP_BYTES
:
3296 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3298 case GL_UNPACK_SKIP_IMAGES_EXT
:
3299 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3301 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3302 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3305 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3306 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3307 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3308 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3311 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3314 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3316 case GL_VERTEX_ARRAY
:
3317 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3319 case GL_VERTEX_ARRAY_SIZE
:
3320 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3322 case GL_VERTEX_ARRAY_TYPE
:
3323 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3325 case GL_VERTEX_ARRAY_STRIDE
:
3326 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3328 case GL_VERTEX_ARRAY_COUNT_EXT
:
3331 case GL_NORMAL_ARRAY
:
3332 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3334 case GL_NORMAL_ARRAY_TYPE
:
3335 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3337 case GL_NORMAL_ARRAY_STRIDE
:
3338 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3340 case GL_NORMAL_ARRAY_COUNT_EXT
:
3343 case GL_COLOR_ARRAY
:
3344 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3346 case GL_COLOR_ARRAY_SIZE
:
3347 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3349 case GL_COLOR_ARRAY_TYPE
:
3350 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3352 case GL_COLOR_ARRAY_STRIDE
:
3353 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3355 case GL_COLOR_ARRAY_COUNT_EXT
:
3358 case GL_INDEX_ARRAY
:
3359 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3361 case GL_INDEX_ARRAY_TYPE
:
3362 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3364 case GL_INDEX_ARRAY_STRIDE
:
3365 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3367 case GL_INDEX_ARRAY_COUNT_EXT
:
3370 case GL_TEXTURE_COORD_ARRAY
:
3371 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3373 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3374 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3376 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3377 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3379 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3380 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3382 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3385 case GL_EDGE_FLAG_ARRAY
:
3386 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3388 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3389 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3391 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3395 /* GL_ARB_multitexture */
3396 case GL_MAX_TEXTURE_UNITS_ARB
:
3397 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3399 case GL_ACTIVE_TEXTURE_ARB
:
3400 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3402 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3403 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3406 /* GL_ARB_texture_cube_map */
3407 case GL_TEXTURE_CUBE_MAP_ARB
:
3408 if (ctx
->Extensions
.ARB_texture_cube_map
)
3409 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3411 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3413 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3414 if (ctx
->Extensions
.ARB_texture_cube_map
)
3415 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3417 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3419 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3420 if (ctx
->Extensions
.ARB_texture_cube_map
)
3421 *params
= (GLfloat
) ctx
->Const
.MaxCubeTextureSize
;
3423 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3426 /* GL_ARB_texture_compression */
3427 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3428 if (ctx
->Extensions
.ARB_texture_compression
) {
3429 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3432 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3434 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3435 if (ctx
->Extensions
.ARB_texture_compression
) {
3436 *params
= (GLfloat
) ctx
->Const
.NumCompressedTextureFormats
;
3439 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3441 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3442 if (ctx
->Extensions
.ARB_texture_compression
) {
3444 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
3445 params
[i
] = (GLfloat
) ctx
->Const
.CompressedTextureFormats
[i
];
3448 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3451 /* GL_PGI_misc_hints */
3452 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
3453 *params
= ENUM_TO_FLOAT(GL_NICEST
);
3455 case GL_STRICT_LIGHTING_HINT_PGI
:
3456 *params
= ENUM_TO_FLOAT(ctx
->Hint
.StrictLighting
);
3458 case GL_STRICT_SCISSOR_HINT_PGI
:
3459 case GL_FULL_STIPPLE_HINT_PGI
:
3460 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3462 case GL_CONSERVE_MEMORY_HINT_PGI
:
3463 *params
= ENUM_TO_FLOAT(GL_FALSE
);
3465 case GL_ALWAYS_FAST_HINT_PGI
:
3466 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3467 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
3468 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
3470 case GL_ALWAYS_SOFT_HINT_PGI
:
3471 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3472 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
3473 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
3475 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
3476 *params
= (GLfloat
) GL_TRUE
;
3478 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
3479 *params
= (GLfloat
) ctx
->Hint
.AllowDrawWin
;
3481 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
3482 *params
= (GLfloat
) ctx
->Hint
.AllowDrawFrg
;
3484 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
3485 *params
= (GLfloat
) ctx
->Hint
.AllowDrawMem
;
3487 case GL_CLIP_NEAR_HINT_PGI
:
3488 case GL_CLIP_FAR_HINT_PGI
:
3489 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3491 case GL_WIDE_LINE_HINT_PGI
:
3492 *params
= ENUM_TO_FLOAT(GL_DONT_CARE
);
3494 case GL_BACK_NORMALS_HINT_PGI
:
3495 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3497 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
3501 /* GL_EXT_compiled_vertex_array */
3502 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3503 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3505 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3506 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3509 /* GL_ARB_transpose_matrix */
3510 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3511 _math_transposef(params
, ctx
->ColorMatrix
.m
);
3513 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3514 _math_transposef(params
, ctx
->ModelView
.m
);
3516 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3517 _math_transposef(params
, ctx
->ProjectionMatrix
.m
);
3519 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3520 _math_transposef(params
, ctx
->TextureMatrix
[texTransformUnit
].m
);
3523 /* GL_HP_occlusion_test */
3524 case GL_OCCLUSION_TEST_HP
:
3525 if (ctx
->Extensions
.HP_occlusion_test
) {
3526 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3529 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3532 case GL_OCCLUSION_TEST_RESULT_HP
:
3533 if (ctx
->Extensions
.HP_occlusion_test
) {
3534 if (ctx
->Depth
.OcclusionTest
)
3535 *params
= (GLfloat
) ctx
->OcclusionResult
;
3537 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3538 /* reset flag now */
3539 ctx
->OcclusionResult
= GL_FALSE
;
3540 ctx
->OcclusionResultSaved
= GL_FALSE
;
3543 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3547 /* GL_SGIS_pixel_texture */
3548 case GL_PIXEL_TEXTURE_SGIS
:
3549 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3552 /* GL_SGIX_pixel_texture */
3553 case GL_PIXEL_TEX_GEN_SGIX
:
3554 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3556 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3557 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3560 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3561 case GL_COLOR_MATRIX_SGI
:
3562 for (i
=0;i
<16;i
++) {
3563 params
[i
] = ctx
->ColorMatrix
.m
[i
];
3566 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3567 *params
= (GLfloat
) (ctx
->ColorStackDepth
+ 1);
3569 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3570 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3572 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3573 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3575 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3576 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3578 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3579 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3581 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3582 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3584 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3585 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3587 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3588 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3590 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3591 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3593 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3594 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3597 /* GL_EXT_convolution (also in 1.2 imaging) */
3598 case GL_MAX_CONVOLUTION_WIDTH
:
3599 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionWidth
;
3601 case GL_MAX_CONVOLUTION_HEIGHT
:
3602 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionHeight
;
3604 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3605 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3607 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3608 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3610 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3611 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3613 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3614 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3616 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3617 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3619 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3620 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3622 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3623 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3625 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3626 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3629 /* GL_SGI_color_table (also in 1.2 imaging */
3630 case GL_COLOR_TABLE_SGI
:
3631 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3633 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3634 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3636 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3637 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3640 /* GL_EXT_secondary_color */
3641 case GL_COLOR_SUM_EXT
:
3642 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3644 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3645 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3646 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[0]);
3647 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[1]);
3648 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[2]);
3650 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3651 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3653 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3654 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3656 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3657 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3659 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3660 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3663 /* GL_EXT_fog_coord */
3664 case GL_CURRENT_FOG_COORDINATE_EXT
:
3665 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3666 *params
= (GLfloat
) ctx
->Current
.FogCoord
;
3668 case GL_FOG_COORDINATE_ARRAY_EXT
:
3669 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3671 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3672 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3674 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3675 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3678 /* GL_MESA_sprite_point */
3679 case GL_SPRITE_POINT_MESA
:
3680 if (ctx
->Extensions
.MESA_sprite_point
) {
3681 *params
= (GLfloat
) ctx
->Point
.SpriteMode
;
3684 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3690 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3698 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3700 GET_CURRENT_CONTEXT(ctx
);
3702 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3703 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
3704 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3706 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetIntegerv");
3711 if (MESA_VERBOSE
& VERBOSE_API
)
3712 fprintf(stderr
, "glGetIntegerv %s\n", gl_lookup_enum_by_nr(pname
));
3714 if (ctx
->Driver
.GetIntegerv
3715 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
3719 case GL_ACCUM_RED_BITS
:
3720 *params
= (GLint
) ctx
->Visual
.AccumRedBits
;
3722 case GL_ACCUM_GREEN_BITS
:
3723 *params
= (GLint
) ctx
->Visual
.AccumGreenBits
;
3725 case GL_ACCUM_BLUE_BITS
:
3726 *params
= (GLint
) ctx
->Visual
.AccumBlueBits
;
3728 case GL_ACCUM_ALPHA_BITS
:
3729 *params
= (GLint
) ctx
->Visual
.AccumAlphaBits
;
3731 case GL_ACCUM_CLEAR_VALUE
:
3732 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
3733 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
3734 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
3735 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
3738 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
3741 *params
= ctx
->Visual
.AlphaBits
;
3743 case GL_ALPHA_SCALE
:
3744 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
3747 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
3749 case GL_ALPHA_TEST_REF
:
3750 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
3752 case GL_ALPHA_TEST_FUNC
:
3753 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
3755 case GL_ATTRIB_STACK_DEPTH
:
3756 *params
= (GLint
) (ctx
->AttribStackDepth
);
3758 case GL_AUTO_NORMAL
:
3759 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
3761 case GL_AUX_BUFFERS
:
3762 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
3765 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
3768 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3771 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3773 case GL_BLEND_SRC_RGB_EXT
:
3774 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3776 case GL_BLEND_DST_RGB_EXT
:
3777 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3779 case GL_BLEND_SRC_ALPHA_EXT
:
3780 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
3782 case GL_BLEND_DST_ALPHA_EXT
:
3783 *params
= (GLint
) ctx
->Color
.BlendDstA
;
3785 case GL_BLEND_EQUATION_EXT
:
3786 *params
= (GLint
) ctx
->Color
.BlendEquation
;
3788 case GL_BLEND_COLOR_EXT
:
3789 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
3790 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
3791 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
3792 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
3795 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
3798 *params
= (GLint
) ctx
->Visual
.BlueBits
;
3801 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
3803 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3804 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
3806 case GL_CLIP_PLANE0
:
3807 case GL_CLIP_PLANE1
:
3808 case GL_CLIP_PLANE2
:
3809 case GL_CLIP_PLANE3
:
3810 case GL_CLIP_PLANE4
:
3811 case GL_CLIP_PLANE5
:
3812 i
= (GLint
) (pname
- GL_CLIP_PLANE0
);
3813 *params
= (GLint
) ctx
->Transform
.ClipEnabled
[i
];
3815 case GL_COLOR_CLEAR_VALUE
:
3816 params
[0] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[0] );
3817 params
[1] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[1] );
3818 params
[2] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[2] );
3819 params
[3] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[3] );
3821 case GL_COLOR_MATERIAL
:
3822 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
3824 case GL_COLOR_MATERIAL_FACE
:
3825 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
3827 case GL_COLOR_MATERIAL_PARAMETER
:
3828 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
3830 case GL_COLOR_WRITEMASK
:
3831 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
3832 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
3833 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
3834 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
3837 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
3839 case GL_CULL_FACE_MODE
:
3840 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
3842 case GL_CURRENT_COLOR
:
3843 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3844 params
[0] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[0] ) );
3845 params
[1] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[1] ) );
3846 params
[2] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[2] ) );
3847 params
[3] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[3] ) );
3849 case GL_CURRENT_INDEX
:
3850 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3851 *params
= (GLint
) ctx
->Current
.Index
;
3853 case GL_CURRENT_NORMAL
:
3854 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3855 params
[0] = FLOAT_TO_INT( ctx
->Current
.Normal
[0] );
3856 params
[1] = FLOAT_TO_INT( ctx
->Current
.Normal
[1] );
3857 params
[2] = FLOAT_TO_INT( ctx
->Current
.Normal
[2] );
3859 case GL_CURRENT_RASTER_COLOR
:
3860 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
3861 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
3862 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
3863 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
3865 case GL_CURRENT_RASTER_DISTANCE
:
3866 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
3868 case GL_CURRENT_RASTER_INDEX
:
3869 *params
= (GLint
) ctx
->Current
.RasterIndex
;
3871 case GL_CURRENT_RASTER_POSITION
:
3872 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
3873 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
3874 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
3875 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
3877 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3878 params
[0] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
3879 params
[1] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
3880 params
[2] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
3881 params
[3] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
3883 case GL_CURRENT_RASTER_POSITION_VALID
:
3884 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
3886 case GL_CURRENT_TEXTURE_COORDS
:
3887 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3888 params
[0] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
3889 params
[1] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
3890 params
[2] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
3891 params
[3] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
3894 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
3897 *params
= ctx
->Visual
.DepthBits
;
3899 case GL_DEPTH_CLEAR_VALUE
:
3900 *params
= (GLint
) ctx
->Depth
.Clear
;
3903 *params
= (GLint
) ctx
->Depth
.Func
;
3905 case GL_DEPTH_RANGE
:
3906 params
[0] = (GLint
) ctx
->Viewport
.Near
;
3907 params
[1] = (GLint
) ctx
->Viewport
.Far
;
3909 case GL_DEPTH_SCALE
:
3910 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
3913 *params
= (GLint
) ctx
->Depth
.Test
;
3915 case GL_DEPTH_WRITEMASK
:
3916 *params
= (GLint
) ctx
->Depth
.Mask
;
3919 *params
= (GLint
) ctx
->Color
.DitherFlag
;
3921 case GL_DOUBLEBUFFER
:
3922 *params
= (GLint
) ctx
->Visual
.DBflag
;
3924 case GL_DRAW_BUFFER
:
3925 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
3928 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3929 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
3931 case GL_FEEDBACK_BUFFER_SIZE
:
3932 *params
= ctx
->Feedback
.BufferSize
;
3934 case GL_FEEDBACK_BUFFER_TYPE
:
3935 *params
= ctx
->Feedback
.Type
;
3938 *params
= (GLint
) ctx
->Fog
.Enabled
;
3941 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
3942 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
3943 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
3944 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
3946 case GL_FOG_DENSITY
:
3947 *params
= (GLint
) ctx
->Fog
.Density
;
3950 *params
= (GLint
) ctx
->Fog
.End
;
3953 *params
= (GLint
) ctx
->Hint
.Fog
;
3956 *params
= (GLint
) ctx
->Fog
.Index
;
3959 *params
= (GLint
) ctx
->Fog
.Mode
;
3962 *params
= (GLint
) ctx
->Fog
.Start
;
3965 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
3968 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
3971 *params
= (GLint
) ctx
->Visual
.GreenBits
;
3973 case GL_GREEN_SCALE
:
3974 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
3977 if (ctx
->Extensions
.EXT_histogram
) {
3978 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
3981 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3986 *params
= (GLint
) ctx
->Visual
.IndexBits
;
3988 case GL_INDEX_CLEAR_VALUE
:
3989 *params
= (GLint
) ctx
->Color
.ClearIndex
;
3992 *params
= ctx
->Visual
.RGBAflag
? 0 : 1;
3994 case GL_INDEX_OFFSET
:
3995 *params
= ctx
->Pixel
.IndexOffset
;
3997 case GL_INDEX_SHIFT
:
3998 *params
= ctx
->Pixel
.IndexShift
;
4000 case GL_INDEX_WRITEMASK
:
4001 *params
= (GLint
) ctx
->Color
.IndexMask
;
4011 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
4014 *params
= (GLint
) ctx
->Light
.Enabled
;
4016 case GL_LIGHT_MODEL_AMBIENT
:
4017 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
4018 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
4019 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
4020 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
4022 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4023 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
4025 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4026 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
4028 case GL_LIGHT_MODEL_TWO_SIDE
:
4029 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
4031 case GL_LINE_SMOOTH
:
4032 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
4034 case GL_LINE_SMOOTH_HINT
:
4035 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
4037 case GL_LINE_STIPPLE
:
4038 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4040 case GL_LINE_STIPPLE_PATTERN
:
4041 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4043 case GL_LINE_STIPPLE_REPEAT
:
4044 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4047 *params
= (GLint
) ctx
->Line
.Width
;
4049 case GL_LINE_WIDTH_GRANULARITY
:
4050 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4052 case GL_LINE_WIDTH_RANGE
:
4053 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4054 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4056 case GL_ALIASED_LINE_WIDTH_RANGE
:
4057 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4058 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4061 *params
= (GLint
) ctx
->List
.ListBase
;
4064 *params
= (GLint
) ctx
->CurrentListNum
;
4067 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4068 : (GLint
) GL_COMPILE
;
4070 case GL_INDEX_LOGIC_OP
:
4071 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4073 case GL_COLOR_LOGIC_OP
:
4074 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4076 case GL_LOGIC_OP_MODE
:
4077 *params
= (GLint
) ctx
->Color
.LogicOp
;
4079 case GL_MAP1_COLOR_4
:
4080 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4082 case GL_MAP1_GRID_DOMAIN
:
4083 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4084 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4086 case GL_MAP1_GRID_SEGMENTS
:
4087 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4090 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4092 case GL_MAP1_NORMAL
:
4093 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4095 case GL_MAP1_TEXTURE_COORD_1
:
4096 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4098 case GL_MAP1_TEXTURE_COORD_2
:
4099 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4101 case GL_MAP1_TEXTURE_COORD_3
:
4102 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4104 case GL_MAP1_TEXTURE_COORD_4
:
4105 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4107 case GL_MAP1_VERTEX_3
:
4108 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4110 case GL_MAP1_VERTEX_4
:
4111 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4113 case GL_MAP2_COLOR_4
:
4114 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4116 case GL_MAP2_GRID_DOMAIN
:
4117 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4118 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4119 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4120 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4122 case GL_MAP2_GRID_SEGMENTS
:
4123 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4124 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4127 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4129 case GL_MAP2_NORMAL
:
4130 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4132 case GL_MAP2_TEXTURE_COORD_1
:
4133 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4135 case GL_MAP2_TEXTURE_COORD_2
:
4136 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4138 case GL_MAP2_TEXTURE_COORD_3
:
4139 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4141 case GL_MAP2_TEXTURE_COORD_4
:
4142 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4144 case GL_MAP2_VERTEX_3
:
4145 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4147 case GL_MAP2_VERTEX_4
:
4148 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4151 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4153 case GL_MAP_STENCIL
:
4154 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4156 case GL_MATRIX_MODE
:
4157 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4159 case GL_MAX_ATTRIB_STACK_DEPTH
:
4160 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4162 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4163 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4165 case GL_MAX_CLIP_PLANES
:
4166 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
4168 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4171 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4174 case GL_MAX_EVAL_ORDER
:
4175 *params
= (GLint
) MAX_EVAL_ORDER
;
4178 *params
= (GLint
) ctx
->Const
.MaxLights
;
4180 case GL_MAX_LIST_NESTING
:
4181 *params
= (GLint
) MAX_LIST_NESTING
;
4183 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4184 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4186 case GL_MAX_NAME_STACK_DEPTH
:
4187 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4189 case GL_MAX_PIXEL_MAP_TABLE
:
4190 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4192 case GL_MAX_PROJECTION_STACK_DEPTH
:
4193 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4195 case GL_MAX_TEXTURE_SIZE
:
4196 case GL_MAX_3D_TEXTURE_SIZE
:
4197 *params
= ctx
->Const
.MaxTextureSize
;
4199 case GL_MAX_TEXTURE_STACK_DEPTH
:
4200 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4202 case GL_MAX_VIEWPORT_DIMS
:
4203 params
[0] = (GLint
) MAX_WIDTH
;
4204 params
[1] = (GLint
) MAX_HEIGHT
;
4207 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
4209 case GL_MODELVIEW_MATRIX
:
4210 for (i
=0;i
<16;i
++) {
4211 params
[i
] = (GLint
) ctx
->ModelView
.m
[i
];
4214 case GL_MODELVIEW_STACK_DEPTH
:
4215 *params
= (GLint
) (ctx
->ModelViewStackDepth
+ 1);
4217 case GL_NAME_STACK_DEPTH
:
4218 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4221 *params
= (GLint
) ctx
->Transform
.Normalize
;
4223 case GL_PACK_ALIGNMENT
:
4224 *params
= ctx
->Pack
.Alignment
;
4226 case GL_PACK_LSB_FIRST
:
4227 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4229 case GL_PACK_ROW_LENGTH
:
4230 *params
= ctx
->Pack
.RowLength
;
4232 case GL_PACK_SKIP_PIXELS
:
4233 *params
= ctx
->Pack
.SkipPixels
;
4235 case GL_PACK_SKIP_ROWS
:
4236 *params
= ctx
->Pack
.SkipRows
;
4238 case GL_PACK_SWAP_BYTES
:
4239 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4241 case GL_PACK_SKIP_IMAGES_EXT
:
4242 *params
= ctx
->Pack
.SkipImages
;
4244 case GL_PACK_IMAGE_HEIGHT_EXT
:
4245 *params
= ctx
->Pack
.ImageHeight
;
4247 case GL_PERSPECTIVE_CORRECTION_HINT
:
4248 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4250 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4251 *params
= ctx
->Pixel
.MapAtoAsize
;
4253 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4254 *params
= ctx
->Pixel
.MapBtoBsize
;
4256 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4257 *params
= ctx
->Pixel
.MapGtoGsize
;
4259 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4260 *params
= ctx
->Pixel
.MapItoAsize
;
4262 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4263 *params
= ctx
->Pixel
.MapItoBsize
;
4265 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4266 *params
= ctx
->Pixel
.MapItoGsize
;
4268 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4269 *params
= ctx
->Pixel
.MapItoIsize
;
4271 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4272 *params
= ctx
->Pixel
.MapItoRsize
;
4274 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4275 *params
= ctx
->Pixel
.MapRtoRsize
;
4277 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4278 *params
= ctx
->Pixel
.MapStoSsize
;
4281 *params
= (GLint
) ctx
->Point
.Size
;
4283 case GL_POINT_SIZE_GRANULARITY
:
4284 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4286 case GL_POINT_SIZE_RANGE
:
4287 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4288 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4290 case GL_ALIASED_POINT_SIZE_RANGE
:
4291 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4292 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4294 case GL_POINT_SMOOTH
:
4295 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4297 case GL_POINT_SMOOTH_HINT
:
4298 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4300 case GL_POINT_SIZE_MIN_EXT
:
4301 *params
= (GLint
) (ctx
->Point
.MinSize
);
4303 case GL_POINT_SIZE_MAX_EXT
:
4304 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4306 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4307 *params
= (GLint
) (ctx
->Point
.Threshold
);
4309 case GL_DISTANCE_ATTENUATION_EXT
:
4310 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4311 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4312 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4314 case GL_POLYGON_MODE
:
4315 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4316 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4318 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4319 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4321 case GL_POLYGON_OFFSET_FACTOR
:
4322 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4324 case GL_POLYGON_OFFSET_UNITS
:
4325 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4327 case GL_POLYGON_SMOOTH
:
4328 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4330 case GL_POLYGON_SMOOTH_HINT
:
4331 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4333 case GL_POLYGON_STIPPLE
:
4334 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4336 case GL_PROJECTION_MATRIX
:
4337 for (i
=0;i
<16;i
++) {
4338 params
[i
] = (GLint
) ctx
->ProjectionMatrix
.m
[i
];
4341 case GL_PROJECTION_STACK_DEPTH
:
4342 *params
= (GLint
) (ctx
->ProjectionStackDepth
+ 1);
4344 case GL_READ_BUFFER
:
4345 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4348 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4351 *params
= (GLint
) ctx
->Visual
.RedBits
;
4354 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4356 case GL_RENDER_MODE
:
4357 *params
= (GLint
) ctx
->RenderMode
;
4359 case GL_RESCALE_NORMAL
:
4360 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
4363 *params
= (GLint
) ctx
->Visual
.RGBAflag
;
4365 case GL_SCISSOR_BOX
:
4366 params
[0] = (GLint
) ctx
->Scissor
.X
;
4367 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4368 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4369 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4371 case GL_SCISSOR_TEST
:
4372 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4374 case GL_SELECTION_BUFFER_SIZE
:
4375 *params
= (GLint
) ctx
->Select
.BufferSize
;
4377 case GL_SHADE_MODEL
:
4378 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4380 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4381 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4383 case GL_STENCIL_BITS
:
4384 *params
= ctx
->Visual
.StencilBits
;
4386 case GL_STENCIL_CLEAR_VALUE
:
4387 *params
= (GLint
) ctx
->Stencil
.Clear
;
4389 case GL_STENCIL_FAIL
:
4390 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
4392 case GL_STENCIL_FUNC
:
4393 *params
= (GLint
) ctx
->Stencil
.Function
;
4395 case GL_STENCIL_PASS_DEPTH_FAIL
:
4396 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
4398 case GL_STENCIL_PASS_DEPTH_PASS
:
4399 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
4401 case GL_STENCIL_REF
:
4402 *params
= (GLint
) ctx
->Stencil
.Ref
;
4404 case GL_STENCIL_TEST
:
4405 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4407 case GL_STENCIL_VALUE_MASK
:
4408 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
4410 case GL_STENCIL_WRITEMASK
:
4411 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
4414 *params
= (GLint
) ctx
->Visual
.StereoFlag
;
4416 case GL_SUBPIXEL_BITS
:
4417 *params
= ctx
->Const
.SubPixelBits
;
4420 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4423 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4426 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4428 case GL_TEXTURE_BINDING_1D
:
4429 *params
= textureUnit
->Current1D
->Name
;
4431 case GL_TEXTURE_BINDING_2D
:
4432 *params
= textureUnit
->Current2D
->Name
;
4434 case GL_TEXTURE_BINDING_3D
:
4435 *params
= textureUnit
->Current3D
->Name
;
4437 case GL_TEXTURE_ENV_COLOR
:
4438 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4439 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4440 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4441 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4443 case GL_TEXTURE_ENV_MODE
:
4444 *params
= (GLint
) textureUnit
->EnvMode
;
4446 case GL_TEXTURE_GEN_S
:
4447 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4449 case GL_TEXTURE_GEN_T
:
4450 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4452 case GL_TEXTURE_GEN_R
:
4453 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4455 case GL_TEXTURE_GEN_Q
:
4456 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4458 case GL_TEXTURE_MATRIX
:
4459 for (i
=0;i
<16;i
++) {
4460 params
[i
] = (GLint
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
4463 case GL_TEXTURE_STACK_DEPTH
:
4464 *params
= (GLint
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
4466 case GL_UNPACK_ALIGNMENT
:
4467 *params
= ctx
->Unpack
.Alignment
;
4469 case GL_UNPACK_LSB_FIRST
:
4470 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4472 case GL_UNPACK_ROW_LENGTH
:
4473 *params
= ctx
->Unpack
.RowLength
;
4475 case GL_UNPACK_SKIP_PIXELS
:
4476 *params
= ctx
->Unpack
.SkipPixels
;
4478 case GL_UNPACK_SKIP_ROWS
:
4479 *params
= ctx
->Unpack
.SkipRows
;
4481 case GL_UNPACK_SWAP_BYTES
:
4482 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4484 case GL_UNPACK_SKIP_IMAGES_EXT
:
4485 *params
= ctx
->Unpack
.SkipImages
;
4487 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4488 *params
= ctx
->Unpack
.ImageHeight
;
4491 params
[0] = (GLint
) ctx
->Viewport
.X
;
4492 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4493 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4494 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4497 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4500 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4502 case GL_VERTEX_ARRAY
:
4503 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4505 case GL_VERTEX_ARRAY_SIZE
:
4506 *params
= ctx
->Array
.Vertex
.Size
;
4508 case GL_VERTEX_ARRAY_TYPE
:
4509 *params
= ctx
->Array
.Vertex
.Type
;
4511 case GL_VERTEX_ARRAY_STRIDE
:
4512 *params
= ctx
->Array
.Vertex
.Stride
;
4514 case GL_VERTEX_ARRAY_COUNT_EXT
:
4517 case GL_NORMAL_ARRAY
:
4518 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
4520 case GL_NORMAL_ARRAY_TYPE
:
4521 *params
= ctx
->Array
.Normal
.Type
;
4523 case GL_NORMAL_ARRAY_STRIDE
:
4524 *params
= ctx
->Array
.Normal
.Stride
;
4526 case GL_NORMAL_ARRAY_COUNT_EXT
:
4529 case GL_COLOR_ARRAY
:
4530 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
4532 case GL_COLOR_ARRAY_SIZE
:
4533 *params
= ctx
->Array
.Color
.Size
;
4535 case GL_COLOR_ARRAY_TYPE
:
4536 *params
= ctx
->Array
.Color
.Type
;
4538 case GL_COLOR_ARRAY_STRIDE
:
4539 *params
= ctx
->Array
.Color
.Stride
;
4541 case GL_COLOR_ARRAY_COUNT_EXT
:
4544 case GL_INDEX_ARRAY
:
4545 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
4547 case GL_INDEX_ARRAY_TYPE
:
4548 *params
= ctx
->Array
.Index
.Type
;
4550 case GL_INDEX_ARRAY_STRIDE
:
4551 *params
= ctx
->Array
.Index
.Stride
;
4553 case GL_INDEX_ARRAY_COUNT_EXT
:
4556 case GL_TEXTURE_COORD_ARRAY
:
4557 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
4559 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4560 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
4562 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4563 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
4565 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4566 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
4568 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4571 case GL_EDGE_FLAG_ARRAY
:
4572 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
4574 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4575 *params
= ctx
->Array
.EdgeFlag
.Stride
;
4577 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4581 /* GL_ARB_multitexture */
4582 case GL_MAX_TEXTURE_UNITS_ARB
:
4583 *params
= ctx
->Const
.MaxTextureUnits
;
4585 case GL_ACTIVE_TEXTURE_ARB
:
4586 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4588 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4589 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4592 /* GL_ARB_texture_cube_map */
4593 case GL_TEXTURE_CUBE_MAP_ARB
:
4594 if (ctx
->Extensions
.ARB_texture_cube_map
)
4595 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4597 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4599 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4600 if (ctx
->Extensions
.ARB_texture_cube_map
)
4601 *params
= textureUnit
->CurrentCubeMap
->Name
;
4603 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4605 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4606 if (ctx
->Extensions
.ARB_texture_cube_map
)
4607 *params
= ctx
->Const
.MaxCubeTextureSize
;
4609 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4612 /* GL_ARB_texture_compression */
4613 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4614 if (ctx
->Extensions
.ARB_texture_compression
) {
4615 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
4618 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4620 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4621 if (ctx
->Extensions
.ARB_texture_compression
) {
4622 *params
= (GLint
) ctx
->Const
.NumCompressedTextureFormats
;
4625 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4627 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4628 if (ctx
->Extensions
.ARB_texture_compression
) {
4630 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
4631 params
[i
] = (GLint
) ctx
->Const
.CompressedTextureFormats
[i
];
4634 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4637 /* GL_PGI_misc_hints */
4638 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
4639 *params
= (GL_NICEST
);
4641 case GL_STRICT_LIGHTING_HINT_PGI
:
4642 *params
= (ctx
->Hint
.StrictLighting
);
4644 case GL_STRICT_SCISSOR_HINT_PGI
:
4645 case GL_FULL_STIPPLE_HINT_PGI
:
4648 case GL_CONSERVE_MEMORY_HINT_PGI
:
4651 case GL_ALWAYS_FAST_HINT_PGI
:
4652 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
4653 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
4654 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
4656 case GL_ALWAYS_SOFT_HINT_PGI
:
4657 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
4658 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
4659 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
4661 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
4664 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
4665 *params
= ctx
->Hint
.AllowDrawWin
;
4667 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
4668 *params
= ctx
->Hint
.AllowDrawFrg
;
4670 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
4671 *params
= ctx
->Hint
.AllowDrawMem
;
4673 case GL_CLIP_NEAR_HINT_PGI
:
4674 case GL_CLIP_FAR_HINT_PGI
:
4677 case GL_WIDE_LINE_HINT_PGI
:
4678 *params
= GL_DONT_CARE
;
4680 case GL_BACK_NORMALS_HINT_PGI
:
4683 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
4687 /* GL_EXT_compiled_vertex_array */
4688 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4689 *params
= ctx
->Array
.LockFirst
;
4691 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4692 *params
= ctx
->Array
.LockCount
;
4695 /* GL_ARB_transpose_matrix */
4696 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4700 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
4701 for (i
=0;i
<16;i
++) {
4702 params
[i
] = (GLint
) tm
[i
];
4706 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4710 _math_transposef(tm
, ctx
->ModelView
.m
);
4711 for (i
=0;i
<16;i
++) {
4712 params
[i
] = (GLint
) tm
[i
];
4716 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4720 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
4721 for (i
=0;i
<16;i
++) {
4722 params
[i
] = (GLint
) tm
[i
];
4726 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4730 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
4731 for (i
=0;i
<16;i
++) {
4732 params
[i
] = (GLint
) tm
[i
];
4737 /* GL_HP_occlusion_test */
4738 case GL_OCCLUSION_TEST_HP
:
4739 if (ctx
->Extensions
.HP_occlusion_test
) {
4740 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
4743 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4746 case GL_OCCLUSION_TEST_RESULT_HP
:
4747 if (ctx
->Extensions
.HP_occlusion_test
) {
4748 if (ctx
->Depth
.OcclusionTest
)
4749 *params
= (GLint
) ctx
->OcclusionResult
;
4751 *params
= (GLint
) ctx
->OcclusionResultSaved
;
4752 /* reset flag now */
4753 ctx
->OcclusionResult
= GL_FALSE
;
4754 ctx
->OcclusionResultSaved
= GL_FALSE
;
4757 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4761 /* GL_SGIS_pixel_texture */
4762 case GL_PIXEL_TEXTURE_SGIS
:
4763 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4766 /* GL_SGIX_pixel_texture */
4767 case GL_PIXEL_TEX_GEN_SGIX
:
4768 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4770 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4771 *params
= (GLint
) pixel_texgen_mode(ctx
);
4774 /* GL_SGI_color_matrix (also in 1.2 imaging) */
4775 case GL_COLOR_MATRIX_SGI
:
4776 for (i
=0;i
<16;i
++) {
4777 params
[i
] = (GLint
) ctx
->ColorMatrix
.m
[i
];
4780 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
4781 *params
= ctx
->ColorStackDepth
+ 1;
4783 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
4784 *params
= MAX_COLOR_STACK_DEPTH
;
4786 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
4787 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
4789 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
4790 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
4792 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
4793 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
4795 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
4796 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
4798 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
4799 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
4801 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
4802 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
4804 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
4805 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
4807 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
4808 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
4811 /* GL_EXT_convolution (also in 1.2 imaging) */
4812 case GL_MAX_CONVOLUTION_WIDTH
:
4813 *params
= ctx
->Const
.MaxConvolutionWidth
;
4815 case GL_MAX_CONVOLUTION_HEIGHT
:
4816 *params
= ctx
->Const
.MaxConvolutionHeight
;
4818 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
4819 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
4821 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
4822 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
4824 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
4825 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
4827 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
4828 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
4830 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
4831 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
4833 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
4834 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
4836 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
4837 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4839 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
4840 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4843 /* GL_SGI_color_table (also in 1.2 imaging */
4844 case GL_COLOR_TABLE_SGI
:
4845 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
4847 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
4848 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
4850 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
4851 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
4855 /* GL_EXT_secondary_color */
4856 case GL_COLOR_SUM_EXT
:
4857 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
4859 case GL_CURRENT_SECONDARY_COLOR_EXT
:
4860 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
4861 params
[0] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[0] ) );
4862 params
[1] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[1] ) );
4863 params
[2] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[2] ) );
4865 case GL_SECONDARY_COLOR_ARRAY_EXT
:
4866 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
4868 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
4869 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
4871 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
4872 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4874 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
4875 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4878 /* GL_EXT_fog_coord */
4879 case GL_CURRENT_FOG_COORDINATE_EXT
:
4880 if (ctx
->Extensions
.EXT_fog_coord
) {
4881 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
4882 *params
= (GLint
) ctx
->Current
.FogCoord
;
4885 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4888 case GL_FOG_COORDINATE_ARRAY_EXT
:
4889 if (ctx
->Extensions
.EXT_fog_coord
) {
4890 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
4893 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4896 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
4897 if (ctx
->Extensions
.EXT_fog_coord
) {
4898 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
4901 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4904 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
4905 if (ctx
->Extensions
.EXT_fog_coord
) {
4906 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
4909 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4913 /* GL_MESA_sprite_point */
4914 case GL_SPRITE_POINT_MESA
:
4915 if (ctx
->Extensions
.MESA_sprite_point
) {
4916 *params
= (GLint
) ctx
->Point
.SpriteMode
;
4919 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4925 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4932 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
4934 GET_CURRENT_CONTEXT(ctx
);
4935 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4937 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetPointerv");
4942 if (MESA_VERBOSE
& VERBOSE_API
)
4943 fprintf(stderr
, "glGetPointerv %s\n", gl_lookup_enum_by_nr(pname
));
4945 if (ctx
->Driver
.GetPointerv
4946 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
4950 case GL_VERTEX_ARRAY_POINTER
:
4951 *params
= ctx
->Array
.Vertex
.Ptr
;
4953 case GL_NORMAL_ARRAY_POINTER
:
4954 *params
= ctx
->Array
.Normal
.Ptr
;
4956 case GL_COLOR_ARRAY_POINTER
:
4957 *params
= ctx
->Array
.Color
.Ptr
;
4959 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
4960 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
4962 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
4963 *params
= ctx
->Array
.FogCoord
.Ptr
;
4965 case GL_INDEX_ARRAY_POINTER
:
4966 *params
= ctx
->Array
.Index
.Ptr
;
4968 case GL_TEXTURE_COORD_ARRAY_POINTER
:
4969 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
4971 case GL_EDGE_FLAG_ARRAY_POINTER
:
4972 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
4974 case GL_FEEDBACK_BUFFER_POINTER
:
4975 *params
= ctx
->Feedback
.Buffer
;
4977 case GL_SELECTION_BUFFER_POINTER
:
4978 *params
= ctx
->Select
.Buffer
;
4981 gl_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
4989 _mesa_GetString( GLenum name
)
4991 GET_CURRENT_CONTEXT(ctx
);
4992 static const char *vendor
= "Brian Paul";
4993 static const char *renderer
= "Mesa";
4994 static const char *version
= "1.2 Mesa 3.5 beta";
4996 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH_WITH_RETVAL(ctx
, "glGetString", 0);
4998 /* this is a required driver function */
4999 assert(ctx
->Driver
.GetString
);
5001 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
5007 return (const GLubyte
*) vendor
;
5009 return (const GLubyte
*) renderer
;
5011 return (const GLubyte
*) version
;
5013 return (const GLubyte
*) gl_extensions_get_string( ctx
);
5015 gl_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
5016 return (const GLubyte
*) 0;
5023 * Execute a glGetError command
5026 _mesa_GetError( void )
5028 GET_CURRENT_CONTEXT(ctx
);
5030 GLenum e
= ctx
->ErrorValue
;
5032 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL( ctx
, "glGetError", (GLenum
) 0);
5034 if (MESA_VERBOSE
& VERBOSE_API
)
5035 fprintf(stderr
, "glGetError <-- %s\n", gl_lookup_enum_by_nr(e
));
5037 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;