1 /* $Id: get.c,v 1.15 2000/03/11 23:23:26 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.
35 #include "extensions.h"
46 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
47 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
48 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
51 /* Needed for an Amiga compiler */
52 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
53 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
55 /* all other compilers */
56 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
57 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
63 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
65 GET_CURRENT_CONTEXT(ctx
);
67 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
68 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
69 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
71 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetBooleanv");
73 if (MESA_VERBOSE
& VERBOSE_API
)
74 fprintf(stderr
, "glGetBooleanv %s\n", gl_lookup_enum_by_nr(pname
));
77 case GL_ACCUM_RED_BITS
:
78 case GL_ACCUM_GREEN_BITS
:
79 case GL_ACCUM_BLUE_BITS
:
80 case GL_ACCUM_ALPHA_BITS
:
81 *params
= INT_TO_BOOL(ctx
->Visual
->AccumBits
);
83 case GL_ACCUM_CLEAR_VALUE
:
84 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
85 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
86 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
87 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
90 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
93 *params
= INT_TO_BOOL(ctx
->Visual
->AlphaBits
);
96 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
99 *params
= ctx
->Color
.AlphaEnabled
;
101 case GL_ALPHA_TEST_FUNC
:
102 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
104 case GL_ALPHA_TEST_REF
:
105 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ 255.0);
107 case GL_ATTRIB_STACK_DEPTH
:
108 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
111 *params
= ctx
->Eval
.AutoNormal
;
114 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
117 *params
= ctx
->Color
.BlendEnabled
;
120 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
123 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
125 case GL_BLEND_SRC_RGB_EXT
:
126 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
128 case GL_BLEND_DST_RGB_EXT
:
129 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
131 case GL_BLEND_SRC_ALPHA_EXT
:
132 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
134 case GL_BLEND_DST_ALPHA_EXT
:
135 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
137 case GL_BLEND_EQUATION_EXT
:
138 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
140 case GL_BLEND_COLOR_EXT
:
141 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
142 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
143 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
144 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
147 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
150 *params
= INT_TO_BOOL( ctx
->Visual
->BlueBits
);
153 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
155 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
156 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
164 *params
= ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
166 case GL_COLOR_CLEAR_VALUE
:
167 params
[0] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[0]);
168 params
[1] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[1]);
169 params
[2] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[2]);
170 params
[3] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[3]);
172 case GL_COLOR_MATERIAL
:
173 *params
= ctx
->Light
.ColorMaterialEnabled
;
175 case GL_COLOR_MATERIAL_FACE
:
176 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
178 case GL_COLOR_MATERIAL_PARAMETER
:
179 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
181 case GL_COLOR_WRITEMASK
:
182 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
183 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
184 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
185 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
188 *params
= ctx
->Polygon
.CullFlag
;
190 case GL_CULL_FACE_MODE
:
191 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
193 case GL_CURRENT_COLOR
:
194 params
[0] = INT_TO_BOOL(ctx
->Current
.ByteColor
[0]);
195 params
[1] = INT_TO_BOOL(ctx
->Current
.ByteColor
[1]);
196 params
[2] = INT_TO_BOOL(ctx
->Current
.ByteColor
[2]);
197 params
[3] = INT_TO_BOOL(ctx
->Current
.ByteColor
[3]);
199 case GL_CURRENT_INDEX
:
200 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
202 case GL_CURRENT_NORMAL
:
203 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[0]);
204 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[1]);
205 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[2]);
207 case GL_CURRENT_RASTER_COLOR
:
208 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
209 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
210 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
211 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
213 case GL_CURRENT_RASTER_DISTANCE
:
214 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
216 case GL_CURRENT_RASTER_INDEX
:
217 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
219 case GL_CURRENT_RASTER_POSITION
:
220 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
221 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
222 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
223 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
225 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
226 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0]);
227 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1]);
228 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2]);
229 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3]);
231 case GL_CURRENT_RASTER_POSITION_VALID
:
232 *params
= ctx
->Current
.RasterPosValid
;
234 case GL_CURRENT_TEXTURE_COORDS
:
235 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][0]);
236 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][1]);
237 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][2]);
238 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][3]);
241 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
244 *params
= INT_TO_BOOL(ctx
->Visual
->DepthBits
);
246 case GL_DEPTH_CLEAR_VALUE
:
247 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
250 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
253 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
254 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
257 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
260 *params
= ctx
->Depth
.Test
;
262 case GL_DEPTH_WRITEMASK
:
263 *params
= ctx
->Depth
.Mask
;
266 *params
= ctx
->Color
.DitherFlag
;
268 case GL_DOUBLEBUFFER
:
269 *params
= ctx
->Visual
->DBflag
;
272 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
275 *params
= ctx
->Current
.EdgeFlag
;
277 case GL_FEEDBACK_BUFFER_SIZE
:
278 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
280 case GL_FEEDBACK_BUFFER_TYPE
:
281 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
284 *params
= ctx
->Fog
.Enabled
;
287 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
288 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
289 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
290 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
293 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
296 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
299 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
302 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
305 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
308 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
311 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
314 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
317 *params
= INT_TO_BOOL( ctx
->Visual
->GreenBits
);
320 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
323 *params
= INT_TO_BOOL( ctx
->Visual
->IndexBits
);
325 case GL_INDEX_CLEAR_VALUE
:
326 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
329 *params
= ctx
->Visual
->RGBAflag
? GL_FALSE
: GL_TRUE
;
331 case GL_INDEX_OFFSET
:
332 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
335 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
337 case GL_INDEX_WRITEMASK
:
338 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
348 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
351 *params
= ctx
->Light
.Enabled
;
353 case GL_LIGHT_MODEL_AMBIENT
:
354 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
355 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
356 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
357 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
359 case GL_LIGHT_MODEL_COLOR_CONTROL
:
360 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
362 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
363 *params
= ctx
->Light
.Model
.LocalViewer
;
365 case GL_LIGHT_MODEL_TWO_SIDE
:
366 *params
= ctx
->Light
.Model
.TwoSide
;
369 *params
= ctx
->Line
.SmoothFlag
;
371 case GL_LINE_SMOOTH_HINT
:
372 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
374 case GL_LINE_STIPPLE
:
375 *params
= ctx
->Line
.StippleFlag
;
377 case GL_LINE_STIPPLE_PATTERN
:
378 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
380 case GL_LINE_STIPPLE_REPEAT
:
381 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
384 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
386 case GL_LINE_WIDTH_GRANULARITY
:
387 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
389 case GL_LINE_WIDTH_RANGE
:
390 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
391 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
393 case GL_ALIASED_LINE_WIDTH_RANGE
:
394 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
395 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
398 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
401 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
404 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
405 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
407 case GL_INDEX_LOGIC_OP
:
408 *params
= ctx
->Color
.IndexLogicOpEnabled
;
410 case GL_COLOR_LOGIC_OP
:
411 *params
= ctx
->Color
.ColorLogicOpEnabled
;
413 case GL_LOGIC_OP_MODE
:
414 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
416 case GL_MAP1_COLOR_4
:
417 *params
= ctx
->Eval
.Map1Color4
;
419 case GL_MAP1_GRID_DOMAIN
:
420 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
421 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
423 case GL_MAP1_GRID_SEGMENTS
:
424 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
427 *params
= ctx
->Eval
.Map1Index
;
430 *params
= ctx
->Eval
.Map1Normal
;
432 case GL_MAP1_TEXTURE_COORD_1
:
433 *params
= ctx
->Eval
.Map1TextureCoord1
;
435 case GL_MAP1_TEXTURE_COORD_2
:
436 *params
= ctx
->Eval
.Map1TextureCoord2
;
438 case GL_MAP1_TEXTURE_COORD_3
:
439 *params
= ctx
->Eval
.Map1TextureCoord3
;
441 case GL_MAP1_TEXTURE_COORD_4
:
442 *params
= ctx
->Eval
.Map1TextureCoord4
;
444 case GL_MAP1_VERTEX_3
:
445 *params
= ctx
->Eval
.Map1Vertex3
;
447 case GL_MAP1_VERTEX_4
:
448 *params
= ctx
->Eval
.Map1Vertex4
;
450 case GL_MAP2_COLOR_4
:
451 *params
= ctx
->Eval
.Map2Color4
;
453 case GL_MAP2_GRID_DOMAIN
:
454 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
455 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
456 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
457 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
459 case GL_MAP2_GRID_SEGMENTS
:
460 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
461 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
464 *params
= ctx
->Eval
.Map2Index
;
467 *params
= ctx
->Eval
.Map2Normal
;
469 case GL_MAP2_TEXTURE_COORD_1
:
470 *params
= ctx
->Eval
.Map2TextureCoord1
;
472 case GL_MAP2_TEXTURE_COORD_2
:
473 *params
= ctx
->Eval
.Map2TextureCoord2
;
475 case GL_MAP2_TEXTURE_COORD_3
:
476 *params
= ctx
->Eval
.Map2TextureCoord3
;
478 case GL_MAP2_TEXTURE_COORD_4
:
479 *params
= ctx
->Eval
.Map2TextureCoord4
;
481 case GL_MAP2_VERTEX_3
:
482 *params
= ctx
->Eval
.Map2Vertex3
;
484 case GL_MAP2_VERTEX_4
:
485 *params
= ctx
->Eval
.Map2Vertex4
;
488 *params
= ctx
->Pixel
.MapColorFlag
;
491 *params
= ctx
->Pixel
.MapStencilFlag
;
494 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
496 case GL_MAX_ATTRIB_STACK_DEPTH
:
497 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
499 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
500 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
502 case GL_MAX_CLIP_PLANES
:
503 *params
= INT_TO_BOOL(MAX_CLIP_PLANES
);
505 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
506 *params
= INT_TO_BOOL(VB_MAX
);
508 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
509 *params
= INT_TO_BOOL(VB_MAX
);
511 case GL_MAX_EVAL_ORDER
:
512 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
515 *params
= INT_TO_BOOL(MAX_LIGHTS
);
517 case GL_MAX_LIST_NESTING
:
518 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
520 case GL_MAX_MODELVIEW_STACK_DEPTH
:
521 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
523 case GL_MAX_NAME_STACK_DEPTH
:
524 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
526 case GL_MAX_PIXEL_MAP_TABLE
:
527 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
529 case GL_MAX_PROJECTION_STACK_DEPTH
:
530 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
532 case GL_MAX_TEXTURE_SIZE
:
533 case GL_MAX_3D_TEXTURE_SIZE
:
534 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureSize
);
536 case GL_MAX_TEXTURE_STACK_DEPTH
:
537 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
539 case GL_MAX_VIEWPORT_DIMS
:
540 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
541 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
543 case GL_MODELVIEW_MATRIX
:
545 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelView
.m
[i
]);
548 case GL_MODELVIEW_STACK_DEPTH
:
549 *params
= INT_TO_BOOL(ctx
->ModelViewStackDepth
+ 1);
551 case GL_NAME_STACK_DEPTH
:
552 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
555 *params
= ctx
->Transform
.Normalize
;
557 case GL_PACK_ALIGNMENT
:
558 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
560 case GL_PACK_LSB_FIRST
:
561 *params
= ctx
->Pack
.LsbFirst
;
563 case GL_PACK_ROW_LENGTH
:
564 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
566 case GL_PACK_SKIP_PIXELS
:
567 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
569 case GL_PACK_SKIP_ROWS
:
570 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
572 case GL_PACK_SWAP_BYTES
:
573 *params
= ctx
->Pack
.SwapBytes
;
575 case GL_PACK_SKIP_IMAGES_EXT
:
576 *params
= ctx
->Pack
.SkipImages
;
578 case GL_PACK_IMAGE_HEIGHT_EXT
:
579 *params
= ctx
->Pack
.ImageHeight
;
581 case GL_PERSPECTIVE_CORRECTION_HINT
:
582 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
584 case GL_PIXEL_MAP_A_TO_A_SIZE
:
585 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
587 case GL_PIXEL_MAP_B_TO_B_SIZE
:
588 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
590 case GL_PIXEL_MAP_G_TO_G_SIZE
:
591 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
593 case GL_PIXEL_MAP_I_TO_A_SIZE
:
594 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
596 case GL_PIXEL_MAP_I_TO_B_SIZE
:
597 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
599 case GL_PIXEL_MAP_I_TO_G_SIZE
:
600 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
602 case GL_PIXEL_MAP_I_TO_I_SIZE
:
603 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
605 case GL_PIXEL_MAP_I_TO_R_SIZE
:
606 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
608 case GL_PIXEL_MAP_R_TO_R_SIZE
:
609 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
611 case GL_PIXEL_MAP_S_TO_S_SIZE
:
612 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
615 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
617 case GL_POINT_SIZE_GRANULARITY
:
618 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
620 case GL_POINT_SIZE_RANGE
:
621 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
622 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
624 case GL_ALIASED_POINT_SIZE_RANGE
:
625 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
626 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
628 case GL_POINT_SMOOTH
:
629 *params
= ctx
->Point
.SmoothFlag
;
631 case GL_POINT_SMOOTH_HINT
:
632 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
634 case GL_POINT_SIZE_MIN_EXT
:
635 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
637 case GL_POINT_SIZE_MAX_EXT
:
638 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
640 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
641 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
643 case GL_DISTANCE_ATTENUATION_EXT
:
644 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
645 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
646 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
648 case GL_POLYGON_MODE
:
649 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
650 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
652 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
653 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
655 case GL_POLYGON_OFFSET_FACTOR
:
656 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
658 case GL_POLYGON_OFFSET_UNITS
:
659 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
661 case GL_POLYGON_SMOOTH
:
662 *params
= ctx
->Polygon
.SmoothFlag
;
664 case GL_POLYGON_SMOOTH_HINT
:
665 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
667 case GL_POLYGON_STIPPLE
:
668 *params
= ctx
->Polygon
.StippleFlag
;
670 case GL_PROJECTION_MATRIX
:
672 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrix
.m
[i
]);
675 case GL_PROJECTION_STACK_DEPTH
:
676 *params
= INT_TO_BOOL(ctx
->ProjectionStackDepth
+ 1);
679 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
682 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
685 *params
= INT_TO_BOOL( ctx
->Visual
->RedBits
);
688 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
691 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
694 *params
= ctx
->Visual
->RGBAflag
;
697 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
698 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
699 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
700 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
702 case GL_SCISSOR_TEST
:
703 *params
= ctx
->Scissor
.Enabled
;
705 case GL_SELECTION_BUFFER_SIZE
:
706 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
709 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
711 case GL_SHARED_TEXTURE_PALETTE_EXT
:
712 *params
= ctx
->Texture
.SharedPalette
;
714 case GL_STENCIL_BITS
:
715 *params
= INT_TO_BOOL(ctx
->Visual
->StencilBits
);
717 case GL_STENCIL_CLEAR_VALUE
:
718 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
720 case GL_STENCIL_FAIL
:
721 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
);
723 case GL_STENCIL_FUNC
:
724 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
);
726 case GL_STENCIL_PASS_DEPTH_FAIL
:
727 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
);
729 case GL_STENCIL_PASS_DEPTH_PASS
:
730 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
);
733 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
);
735 case GL_STENCIL_TEST
:
736 *params
= ctx
->Stencil
.Enabled
;
738 case GL_STENCIL_VALUE_MASK
:
739 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
);
741 case GL_STENCIL_WRITEMASK
:
742 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
);
745 *params
= ctx
->Visual
->StereoFlag
;
747 case GL_SUBPIXEL_BITS
:
748 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
751 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
754 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
757 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
759 case GL_TEXTURE_BINDING_1D
:
760 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[1]->Name
);
762 case GL_TEXTURE_BINDING_2D
:
763 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[2]->Name
);
765 case GL_TEXTURE_BINDING_3D
:
766 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[3]->Name
);
768 case GL_TEXTURE_ENV_COLOR
:
770 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
771 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
772 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
773 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
776 case GL_TEXTURE_ENV_MODE
:
777 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
779 case GL_TEXTURE_GEN_S
:
780 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
782 case GL_TEXTURE_GEN_T
:
783 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
785 case GL_TEXTURE_GEN_R
:
786 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
788 case GL_TEXTURE_GEN_Q
:
789 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
791 case GL_TEXTURE_MATRIX
:
794 FLOAT_TO_BOOL(ctx
->TextureMatrix
[texTransformUnit
].m
[i
]);
797 case GL_TEXTURE_STACK_DEPTH
:
798 *params
= INT_TO_BOOL(ctx
->TextureStackDepth
[texTransformUnit
] + 1);
800 case GL_UNPACK_ALIGNMENT
:
801 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
803 case GL_UNPACK_LSB_FIRST
:
804 *params
= ctx
->Unpack
.LsbFirst
;
806 case GL_UNPACK_ROW_LENGTH
:
807 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
809 case GL_UNPACK_SKIP_PIXELS
:
810 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
812 case GL_UNPACK_SKIP_ROWS
:
813 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
815 case GL_UNPACK_SWAP_BYTES
:
816 *params
= ctx
->Unpack
.SwapBytes
;
818 case GL_UNPACK_SKIP_IMAGES_EXT
:
819 *params
= ctx
->Unpack
.SkipImages
;
821 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
822 *params
= ctx
->Unpack
.ImageHeight
;
825 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
826 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
827 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
828 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
831 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
834 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
836 case GL_VERTEX_ARRAY
:
837 *params
= ctx
->Array
.Vertex
.Enabled
;
839 case GL_VERTEX_ARRAY_SIZE
:
840 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
842 case GL_VERTEX_ARRAY_TYPE
:
843 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
845 case GL_VERTEX_ARRAY_STRIDE
:
846 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
848 case GL_VERTEX_ARRAY_COUNT_EXT
:
849 *params
= INT_TO_BOOL(0);
851 case GL_NORMAL_ARRAY
:
852 *params
= ctx
->Array
.Normal
.Enabled
;
854 case GL_NORMAL_ARRAY_TYPE
:
855 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
857 case GL_NORMAL_ARRAY_STRIDE
:
858 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
860 case GL_NORMAL_ARRAY_COUNT_EXT
:
861 *params
= INT_TO_BOOL(0);
864 *params
= ctx
->Array
.Color
.Enabled
;
866 case GL_COLOR_ARRAY_SIZE
:
867 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
869 case GL_COLOR_ARRAY_TYPE
:
870 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
872 case GL_COLOR_ARRAY_STRIDE
:
873 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
875 case GL_COLOR_ARRAY_COUNT_EXT
:
876 *params
= INT_TO_BOOL(0);
879 *params
= ctx
->Array
.Index
.Enabled
;
881 case GL_INDEX_ARRAY_TYPE
:
882 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
884 case GL_INDEX_ARRAY_STRIDE
:
885 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
887 case GL_INDEX_ARRAY_COUNT_EXT
:
888 *params
= INT_TO_BOOL(0);
890 case GL_TEXTURE_COORD_ARRAY
:
891 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
893 case GL_TEXTURE_COORD_ARRAY_SIZE
:
894 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
896 case GL_TEXTURE_COORD_ARRAY_TYPE
:
897 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
899 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
900 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
902 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
903 *params
= INT_TO_BOOL(0);
905 case GL_EDGE_FLAG_ARRAY
:
906 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
908 case GL_EDGE_FLAG_ARRAY_STRIDE
:
909 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
912 case GL_MAX_TEXTURE_UNITS_ARB
:
913 *params
= ctx
->Const
.MaxTextureUnits
;
915 case GL_ACTIVE_TEXTURE_ARB
:
916 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
918 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
919 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
922 /* GL_PGI_misc_hints */
923 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
924 *params
= ENUM_TO_BOOL(GL_NICEST
);
926 case GL_STRICT_LIGHTING_HINT_PGI
:
927 *params
= ENUM_TO_BOOL(ctx
->Hint
.StrictLighting
);
929 case GL_STRICT_SCISSOR_HINT_PGI
:
930 case GL_FULL_STIPPLE_HINT_PGI
:
931 *params
= ENUM_TO_BOOL(GL_TRUE
);
933 case GL_CONSERVE_MEMORY_HINT_PGI
:
934 *params
= ENUM_TO_BOOL(GL_FALSE
);
936 case GL_ALWAYS_FAST_HINT_PGI
:
937 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
938 ctx
->Hint
.AllowDrawSpn
== GL_FALSE
&&
939 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
941 case GL_ALWAYS_SOFT_HINT_PGI
:
942 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
943 ctx
->Hint
.AllowDrawSpn
== GL_TRUE
&&
944 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
946 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
947 *params
= (GLboolean
) GL_TRUE
;
949 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
950 *params
= (GLboolean
) ctx
->Hint
.AllowDrawWin
;
952 case GL_ALLOW_DRAW_SPN_HINT_PGI
:
953 *params
= (GLboolean
) ctx
->Hint
.AllowDrawSpn
;
955 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
956 *params
= (GLboolean
) ctx
->Hint
.AllowDrawMem
;
958 case GL_CLIP_NEAR_HINT_PGI
:
959 case GL_CLIP_FAR_HINT_PGI
:
960 *params
= ENUM_TO_BOOL(GL_TRUE
);
962 case GL_WIDE_LINE_HINT_PGI
:
963 *params
= ENUM_TO_BOOL(GL_DONT_CARE
);
965 case GL_BACK_NORMALS_HINT_PGI
:
966 *params
= ENUM_TO_BOOL(GL_TRUE
);
968 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
972 /* GL_EXT_compiled_vertex_array */
973 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
974 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
976 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
977 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
980 /* GL_ARB_transpose_matrix */
981 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
982 /* don't have a color matrix */
984 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
988 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
990 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
994 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
998 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
1000 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1004 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1008 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
1009 for (i
=0;i
<16;i
++) {
1010 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1015 /* GL_HP_occlusion_test */
1016 case GL_OCCLUSION_TEST_HP
:
1017 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
1018 *params
= ctx
->Depth
.OcclusionTest
;
1021 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1024 case GL_OCCLUSION_TEST_RESULT_HP
:
1025 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
1026 *params
= ctx
->OcclusionResult
;
1027 ctx
->OcclusionResult
= GL_FALSE
; /* reset now */
1030 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1035 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1043 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1045 GET_CURRENT_CONTEXT(ctx
);
1047 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1048 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
1049 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1051 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetDoublev");
1053 if (MESA_VERBOSE
& VERBOSE_API
)
1054 fprintf(stderr
, "glGetDoublev %s\n", gl_lookup_enum_by_nr(pname
));
1057 case GL_ACCUM_RED_BITS
:
1058 case GL_ACCUM_GREEN_BITS
:
1059 case GL_ACCUM_BLUE_BITS
:
1060 case GL_ACCUM_ALPHA_BITS
:
1061 *params
= (GLdouble
) ctx
->Visual
->AccumBits
;
1063 case GL_ACCUM_CLEAR_VALUE
:
1064 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1065 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1066 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1067 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1070 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1073 *params
= (GLdouble
) ctx
->Visual
->AlphaBits
;
1075 case GL_ALPHA_SCALE
:
1076 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1079 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1081 case GL_ALPHA_TEST_FUNC
:
1082 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1084 case GL_ALPHA_TEST_REF
:
1085 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ 255.0;
1087 case GL_ATTRIB_STACK_DEPTH
:
1088 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1090 case GL_AUTO_NORMAL
:
1091 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1093 case GL_AUX_BUFFERS
:
1094 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1097 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1100 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1103 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1105 case GL_BLEND_SRC_RGB_EXT
:
1106 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1108 case GL_BLEND_DST_RGB_EXT
:
1109 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1111 case GL_BLEND_SRC_ALPHA_EXT
:
1112 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1114 case GL_BLEND_DST_ALPHA_EXT
:
1115 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1117 case GL_BLEND_EQUATION_EXT
:
1118 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1120 case GL_BLEND_COLOR_EXT
:
1121 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1122 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1123 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1124 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1127 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1130 *params
= (GLdouble
) ctx
->Visual
->BlueBits
;
1133 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1135 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1136 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1138 case GL_CLIP_PLANE0
:
1139 case GL_CLIP_PLANE1
:
1140 case GL_CLIP_PLANE2
:
1141 case GL_CLIP_PLANE3
:
1142 case GL_CLIP_PLANE4
:
1143 case GL_CLIP_PLANE5
:
1144 *params
= (GLdouble
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
1146 case GL_COLOR_CLEAR_VALUE
:
1147 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1148 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1149 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1150 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1152 case GL_COLOR_MATERIAL
:
1153 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1155 case GL_COLOR_MATERIAL_FACE
:
1156 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1158 case GL_COLOR_MATERIAL_PARAMETER
:
1159 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1161 case GL_COLOR_WRITEMASK
:
1162 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1163 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1164 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1165 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1168 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1170 case GL_CULL_FACE_MODE
:
1171 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1173 case GL_CURRENT_COLOR
:
1174 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.ByteColor
[0]);
1175 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.ByteColor
[1]);
1176 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.ByteColor
[2]);
1177 params
[3] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.ByteColor
[3]);
1179 case GL_CURRENT_INDEX
:
1180 *params
= (GLdouble
) ctx
->Current
.Index
;
1182 case GL_CURRENT_NORMAL
:
1183 params
[0] = (GLdouble
) ctx
->Current
.Normal
[0];
1184 params
[1] = (GLdouble
) ctx
->Current
.Normal
[1];
1185 params
[2] = (GLdouble
) ctx
->Current
.Normal
[2];
1187 case GL_CURRENT_RASTER_COLOR
:
1188 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1189 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1190 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1191 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1193 case GL_CURRENT_RASTER_DISTANCE
:
1194 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1196 case GL_CURRENT_RASTER_INDEX
:
1197 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1199 case GL_CURRENT_RASTER_POSITION
:
1200 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1201 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1202 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1203 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1205 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1206 params
[0] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
1207 params
[1] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
1208 params
[2] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
1209 params
[3] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
1211 case GL_CURRENT_RASTER_POSITION_VALID
:
1212 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1214 case GL_CURRENT_TEXTURE_COORDS
:
1215 params
[0] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
1216 params
[1] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
1217 params
[2] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
1218 params
[3] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
1221 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1224 *params
= (GLdouble
) ctx
->Visual
->DepthBits
;
1226 case GL_DEPTH_CLEAR_VALUE
:
1227 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1230 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1232 case GL_DEPTH_RANGE
:
1233 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1234 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1236 case GL_DEPTH_SCALE
:
1237 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1240 *params
= (GLdouble
) ctx
->Depth
.Test
;
1242 case GL_DEPTH_WRITEMASK
:
1243 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1246 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1248 case GL_DOUBLEBUFFER
:
1249 *params
= (GLdouble
) ctx
->Visual
->DBflag
;
1251 case GL_DRAW_BUFFER
:
1252 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1255 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1257 case GL_FEEDBACK_BUFFER_SIZE
:
1258 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1260 case GL_FEEDBACK_BUFFER_TYPE
:
1261 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1264 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1267 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1268 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1269 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1270 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1272 case GL_FOG_DENSITY
:
1273 *params
= (GLdouble
) ctx
->Fog
.Density
;
1276 *params
= (GLdouble
) ctx
->Fog
.End
;
1279 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1282 *params
= (GLdouble
) ctx
->Fog
.Index
;
1285 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1288 *params
= (GLdouble
) ctx
->Fog
.Start
;
1291 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1294 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1297 *params
= (GLdouble
) ctx
->Visual
->GreenBits
;
1299 case GL_GREEN_SCALE
:
1300 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1303 *params
= (GLdouble
) ctx
->Visual
->IndexBits
;
1305 case GL_INDEX_CLEAR_VALUE
:
1306 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1309 *params
= ctx
->Visual
->RGBAflag
? 0.0 : 1.0;
1311 case GL_INDEX_OFFSET
:
1312 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1314 case GL_INDEX_SHIFT
:
1315 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1317 case GL_INDEX_WRITEMASK
:
1318 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1328 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1331 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1333 case GL_LIGHT_MODEL_AMBIENT
:
1334 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1335 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1336 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1337 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1339 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1340 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1342 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1343 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1345 case GL_LIGHT_MODEL_TWO_SIDE
:
1346 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1348 case GL_LINE_SMOOTH
:
1349 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1351 case GL_LINE_SMOOTH_HINT
:
1352 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1354 case GL_LINE_STIPPLE
:
1355 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1357 case GL_LINE_STIPPLE_PATTERN
:
1358 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1360 case GL_LINE_STIPPLE_REPEAT
:
1361 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1364 *params
= (GLdouble
) ctx
->Line
.Width
;
1366 case GL_LINE_WIDTH_GRANULARITY
:
1367 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1369 case GL_LINE_WIDTH_RANGE
:
1370 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1371 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1373 case GL_ALIASED_LINE_WIDTH_RANGE
:
1374 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1375 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1378 *params
= (GLdouble
) ctx
->List
.ListBase
;
1381 *params
= (GLdouble
) ctx
->CurrentListNum
;
1384 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1385 : ENUM_TO_DOUBLE(GL_COMPILE
);
1387 case GL_INDEX_LOGIC_OP
:
1388 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1390 case GL_COLOR_LOGIC_OP
:
1391 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1393 case GL_LOGIC_OP_MODE
:
1394 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1396 case GL_MAP1_COLOR_4
:
1397 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1399 case GL_MAP1_GRID_DOMAIN
:
1400 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1401 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1403 case GL_MAP1_GRID_SEGMENTS
:
1404 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1407 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1409 case GL_MAP1_NORMAL
:
1410 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1412 case GL_MAP1_TEXTURE_COORD_1
:
1413 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1415 case GL_MAP1_TEXTURE_COORD_2
:
1416 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1418 case GL_MAP1_TEXTURE_COORD_3
:
1419 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1421 case GL_MAP1_TEXTURE_COORD_4
:
1422 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1424 case GL_MAP1_VERTEX_3
:
1425 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1427 case GL_MAP1_VERTEX_4
:
1428 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1430 case GL_MAP2_COLOR_4
:
1431 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1433 case GL_MAP2_GRID_DOMAIN
:
1434 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1435 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1436 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1437 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1439 case GL_MAP2_GRID_SEGMENTS
:
1440 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1441 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1444 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1446 case GL_MAP2_NORMAL
:
1447 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1449 case GL_MAP2_TEXTURE_COORD_1
:
1450 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1452 case GL_MAP2_TEXTURE_COORD_2
:
1453 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1455 case GL_MAP2_TEXTURE_COORD_3
:
1456 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1458 case GL_MAP2_TEXTURE_COORD_4
:
1459 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1461 case GL_MAP2_VERTEX_3
:
1462 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1464 case GL_MAP2_VERTEX_4
:
1465 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1468 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1470 case GL_MAP_STENCIL
:
1471 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1473 case GL_MATRIX_MODE
:
1474 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1476 case GL_MAX_ATTRIB_STACK_DEPTH
:
1477 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1479 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1480 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1482 case GL_MAX_CLIP_PLANES
:
1483 *params
= (GLdouble
) MAX_CLIP_PLANES
;
1485 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1486 *params
= (GLdouble
) VB_MAX
;
1488 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1489 *params
= (GLdouble
) VB_MAX
;
1491 case GL_MAX_EVAL_ORDER
:
1492 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1495 *params
= (GLdouble
) MAX_LIGHTS
;
1497 case GL_MAX_LIST_NESTING
:
1498 *params
= (GLdouble
) MAX_LIST_NESTING
;
1500 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1501 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1503 case GL_MAX_NAME_STACK_DEPTH
:
1504 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1506 case GL_MAX_PIXEL_MAP_TABLE
:
1507 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1509 case GL_MAX_PROJECTION_STACK_DEPTH
:
1510 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1512 case GL_MAX_TEXTURE_SIZE
:
1513 case GL_MAX_3D_TEXTURE_SIZE
:
1514 *params
= (GLdouble
) ctx
->Const
.MaxTextureSize
;
1516 case GL_MAX_TEXTURE_STACK_DEPTH
:
1517 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1519 case GL_MAX_VIEWPORT_DIMS
:
1520 params
[0] = (GLdouble
) MAX_WIDTH
;
1521 params
[1] = (GLdouble
) MAX_HEIGHT
;
1523 case GL_MODELVIEW_MATRIX
:
1524 for (i
=0;i
<16;i
++) {
1525 params
[i
] = (GLdouble
) ctx
->ModelView
.m
[i
];
1528 case GL_MODELVIEW_STACK_DEPTH
:
1529 *params
= (GLdouble
) (ctx
->ModelViewStackDepth
+ 1);
1531 case GL_NAME_STACK_DEPTH
:
1532 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1535 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1537 case GL_PACK_ALIGNMENT
:
1538 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1540 case GL_PACK_LSB_FIRST
:
1541 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1543 case GL_PACK_ROW_LENGTH
:
1544 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1546 case GL_PACK_SKIP_PIXELS
:
1547 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1549 case GL_PACK_SKIP_ROWS
:
1550 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1552 case GL_PACK_SWAP_BYTES
:
1553 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
1555 case GL_PACK_SKIP_IMAGES_EXT
:
1556 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
1558 case GL_PACK_IMAGE_HEIGHT_EXT
:
1559 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
1561 case GL_PERSPECTIVE_CORRECTION_HINT
:
1562 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
1564 case GL_PIXEL_MAP_A_TO_A_SIZE
:
1565 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
1567 case GL_PIXEL_MAP_B_TO_B_SIZE
:
1568 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
1570 case GL_PIXEL_MAP_G_TO_G_SIZE
:
1571 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
1573 case GL_PIXEL_MAP_I_TO_A_SIZE
:
1574 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
1576 case GL_PIXEL_MAP_I_TO_B_SIZE
:
1577 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
1579 case GL_PIXEL_MAP_I_TO_G_SIZE
:
1580 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
1582 case GL_PIXEL_MAP_I_TO_I_SIZE
:
1583 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
1585 case GL_PIXEL_MAP_I_TO_R_SIZE
:
1586 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
1588 case GL_PIXEL_MAP_R_TO_R_SIZE
:
1589 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
1591 case GL_PIXEL_MAP_S_TO_S_SIZE
:
1592 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
1595 *params
= (GLdouble
) ctx
->Point
.Size
;
1597 case GL_POINT_SIZE_GRANULARITY
:
1598 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
1600 case GL_POINT_SIZE_RANGE
:
1601 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
1602 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
1604 case GL_ALIASED_POINT_SIZE_RANGE
:
1605 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
1606 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
1608 case GL_POINT_SMOOTH
:
1609 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
1611 case GL_POINT_SMOOTH_HINT
:
1612 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
1614 case GL_POINT_SIZE_MIN_EXT
:
1615 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
1617 case GL_POINT_SIZE_MAX_EXT
:
1618 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
1620 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
1621 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
1623 case GL_DISTANCE_ATTENUATION_EXT
:
1624 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
1625 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
1626 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
1628 case GL_POLYGON_MODE
:
1629 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
1630 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
1632 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
1633 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1635 case GL_POLYGON_OFFSET_FACTOR
:
1636 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
1638 case GL_POLYGON_OFFSET_UNITS
:
1639 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1641 case GL_POLYGON_SMOOTH
:
1642 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
1644 case GL_POLYGON_SMOOTH_HINT
:
1645 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
1647 case GL_POLYGON_STIPPLE
:
1648 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
1650 case GL_PROJECTION_MATRIX
:
1651 for (i
=0;i
<16;i
++) {
1652 params
[i
] = (GLdouble
) ctx
->ProjectionMatrix
.m
[i
];
1655 case GL_PROJECTION_STACK_DEPTH
:
1656 *params
= (GLdouble
) (ctx
->ProjectionStackDepth
+ 1);
1658 case GL_READ_BUFFER
:
1659 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
1662 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
1665 *params
= (GLdouble
) ctx
->Visual
->RedBits
;
1668 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
1670 case GL_RENDER_MODE
:
1671 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
1674 *params
= (GLdouble
) ctx
->Visual
->RGBAflag
;
1676 case GL_SCISSOR_BOX
:
1677 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
1678 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
1679 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
1680 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
1682 case GL_SCISSOR_TEST
:
1683 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
1685 case GL_SELECTION_BUFFER_SIZE
:
1686 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
1688 case GL_SHADE_MODEL
:
1689 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
1691 case GL_SHARED_TEXTURE_PALETTE_EXT
:
1692 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
1694 case GL_STENCIL_BITS
:
1695 *params
= (GLdouble
) ctx
->Visual
->StencilBits
;
1697 case GL_STENCIL_CLEAR_VALUE
:
1698 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
1700 case GL_STENCIL_FAIL
:
1701 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
1703 case GL_STENCIL_FUNC
:
1704 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
1706 case GL_STENCIL_PASS_DEPTH_FAIL
:
1707 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
1709 case GL_STENCIL_PASS_DEPTH_PASS
:
1710 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
1712 case GL_STENCIL_REF
:
1713 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
1715 case GL_STENCIL_TEST
:
1716 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
1718 case GL_STENCIL_VALUE_MASK
:
1719 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
1721 case GL_STENCIL_WRITEMASK
:
1722 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
1725 *params
= (GLdouble
) ctx
->Visual
->StereoFlag
;
1727 case GL_SUBPIXEL_BITS
:
1728 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
1731 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
1734 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
1737 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
1739 case GL_TEXTURE_BINDING_1D
:
1740 *params
= (GLdouble
) textureUnit
->CurrentD
[1]->Name
;
1742 case GL_TEXTURE_BINDING_2D
:
1743 *params
= (GLdouble
) textureUnit
->CurrentD
[2]->Name
;
1745 case GL_TEXTURE_BINDING_3D
:
1746 *params
= (GLdouble
) textureUnit
->CurrentD
[3]->Name
;
1748 case GL_TEXTURE_ENV_COLOR
:
1749 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
1750 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
1751 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
1752 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
1754 case GL_TEXTURE_ENV_MODE
:
1755 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
1757 case GL_TEXTURE_GEN_S
:
1758 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
1760 case GL_TEXTURE_GEN_T
:
1761 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
1763 case GL_TEXTURE_GEN_R
:
1764 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
1766 case GL_TEXTURE_GEN_Q
:
1767 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
1769 case GL_TEXTURE_MATRIX
:
1770 for (i
=0;i
<16;i
++) {
1771 params
[i
] = (GLdouble
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
1774 case GL_TEXTURE_STACK_DEPTH
:
1775 *params
= (GLdouble
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
1777 case GL_UNPACK_ALIGNMENT
:
1778 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
1780 case GL_UNPACK_LSB_FIRST
:
1781 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
1783 case GL_UNPACK_ROW_LENGTH
:
1784 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
1786 case GL_UNPACK_SKIP_PIXELS
:
1787 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
1789 case GL_UNPACK_SKIP_ROWS
:
1790 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
1792 case GL_UNPACK_SWAP_BYTES
:
1793 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
1795 case GL_UNPACK_SKIP_IMAGES_EXT
:
1796 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
1798 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
1799 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
1802 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
1803 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
1804 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
1805 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
1808 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
1811 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
1813 case GL_VERTEX_ARRAY
:
1814 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
1816 case GL_VERTEX_ARRAY_SIZE
:
1817 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
1819 case GL_VERTEX_ARRAY_TYPE
:
1820 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
1822 case GL_VERTEX_ARRAY_STRIDE
:
1823 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
1825 case GL_VERTEX_ARRAY_COUNT_EXT
:
1828 case GL_NORMAL_ARRAY
:
1829 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
1831 case GL_NORMAL_ARRAY_TYPE
:
1832 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
1834 case GL_NORMAL_ARRAY_STRIDE
:
1835 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
1837 case GL_NORMAL_ARRAY_COUNT_EXT
:
1840 case GL_COLOR_ARRAY
:
1841 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
1843 case GL_COLOR_ARRAY_SIZE
:
1844 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
1846 case GL_COLOR_ARRAY_TYPE
:
1847 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
1849 case GL_COLOR_ARRAY_STRIDE
:
1850 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
1852 case GL_COLOR_ARRAY_COUNT_EXT
:
1855 case GL_INDEX_ARRAY
:
1856 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
1858 case GL_INDEX_ARRAY_TYPE
:
1859 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
1861 case GL_INDEX_ARRAY_STRIDE
:
1862 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
1864 case GL_INDEX_ARRAY_COUNT_EXT
:
1867 case GL_TEXTURE_COORD_ARRAY
:
1868 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
1870 case GL_TEXTURE_COORD_ARRAY_SIZE
:
1871 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
1873 case GL_TEXTURE_COORD_ARRAY_TYPE
:
1874 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
1876 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
1877 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
1879 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
1882 case GL_EDGE_FLAG_ARRAY
:
1883 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
1885 case GL_EDGE_FLAG_ARRAY_STRIDE
:
1886 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
1888 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1892 case GL_MAX_TEXTURE_UNITS_ARB
:
1893 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
1895 case GL_ACTIVE_TEXTURE_ARB
:
1896 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1898 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1899 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1903 /* GL_PGI_misc_hints */
1904 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
1905 *params
= ENUM_TO_DOUBLE(GL_NICEST
);
1907 case GL_STRICT_LIGHTING_HINT_PGI
:
1908 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.StrictLighting
);
1910 case GL_STRICT_SCISSOR_HINT_PGI
:
1911 case GL_FULL_STIPPLE_HINT_PGI
:
1912 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
1914 case GL_CONSERVE_MEMORY_HINT_PGI
:
1915 *params
= ENUM_TO_DOUBLE(GL_FALSE
);
1917 case GL_ALWAYS_FAST_HINT_PGI
:
1918 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1919 ctx
->Hint
.AllowDrawSpn
== GL_FALSE
&&
1920 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
1922 case GL_ALWAYS_SOFT_HINT_PGI
:
1923 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1924 ctx
->Hint
.AllowDrawSpn
== GL_TRUE
&&
1925 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
1927 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
1928 *params
= (GLdouble
) GL_TRUE
;
1930 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
1931 *params
= (GLdouble
) ctx
->Hint
.AllowDrawWin
;
1933 case GL_ALLOW_DRAW_SPN_HINT_PGI
:
1934 *params
= (GLdouble
) ctx
->Hint
.AllowDrawSpn
;
1936 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
1937 *params
= (GLdouble
) ctx
->Hint
.AllowDrawMem
;
1939 case GL_CLIP_NEAR_HINT_PGI
:
1940 case GL_CLIP_FAR_HINT_PGI
:
1941 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
1943 case GL_WIDE_LINE_HINT_PGI
:
1944 *params
= ENUM_TO_DOUBLE(GL_DONT_CARE
);
1946 case GL_BACK_NORMALS_HINT_PGI
:
1947 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
1949 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
1953 /* GL_EXT_compiled_vertex_array */
1954 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1955 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
1957 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1958 *params
= (GLdouble
) ctx
->Array
.LockCount
;
1961 /* GL_ARB_transpose_matrix */
1962 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1963 /* don't have a color matrix */
1965 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1969 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
1970 for (i
=0;i
<16;i
++) {
1971 params
[i
] = (GLdouble
) tm
[i
];
1975 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1979 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
1980 for (i
=0;i
<16;i
++) {
1981 params
[i
] = (GLdouble
) tm
[i
];
1985 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1989 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
1990 for (i
=0;i
<16;i
++) {
1991 params
[i
] = (GLdouble
) tm
[i
];
1996 /* GL_HP_occlusion_test */
1997 case GL_OCCLUSION_TEST_HP
:
1998 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
1999 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2002 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2005 case GL_OCCLUSION_TEST_RESULT_HP
:
2006 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
2007 *params
= (GLdouble
) ctx
->OcclusionResult
;
2008 ctx
->OcclusionResult
= GL_FALSE
; /* reset now */
2011 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2016 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2024 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2026 GET_CURRENT_CONTEXT(ctx
);
2028 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2029 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
2030 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2032 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetFloatv");
2034 if (MESA_VERBOSE
& VERBOSE_API
)
2035 fprintf(stderr
, "glGetFloatv %s\n", gl_lookup_enum_by_nr(pname
));
2038 case GL_ACCUM_RED_BITS
:
2039 case GL_ACCUM_GREEN_BITS
:
2040 case GL_ACCUM_BLUE_BITS
:
2041 case GL_ACCUM_ALPHA_BITS
:
2042 *params
= (GLfloat
) ctx
->Visual
->AccumBits
;
2044 case GL_ACCUM_CLEAR_VALUE
:
2045 params
[0] = ctx
->Accum
.ClearColor
[0];
2046 params
[1] = ctx
->Accum
.ClearColor
[1];
2047 params
[2] = ctx
->Accum
.ClearColor
[2];
2048 params
[3] = ctx
->Accum
.ClearColor
[3];
2051 *params
= ctx
->Pixel
.AlphaBias
;
2054 *params
= (GLfloat
) ctx
->Visual
->AlphaBits
;
2056 case GL_ALPHA_SCALE
:
2057 *params
= ctx
->Pixel
.AlphaScale
;
2060 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2062 case GL_ALPHA_TEST_FUNC
:
2063 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2065 case GL_ALPHA_TEST_REF
:
2066 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ 255.0;
2068 case GL_ATTRIB_STACK_DEPTH
:
2069 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2071 case GL_AUTO_NORMAL
:
2072 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2074 case GL_AUX_BUFFERS
:
2075 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2078 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2081 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2084 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2086 case GL_BLEND_SRC_RGB_EXT
:
2087 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2089 case GL_BLEND_DST_RGB_EXT
:
2090 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2092 case GL_BLEND_SRC_ALPHA_EXT
:
2093 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2095 case GL_BLEND_DST_ALPHA_EXT
:
2096 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2098 case GL_BLEND_EQUATION_EXT
:
2099 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2101 case GL_BLEND_COLOR_EXT
:
2102 params
[0] = ctx
->Color
.BlendColor
[0];
2103 params
[1] = ctx
->Color
.BlendColor
[1];
2104 params
[2] = ctx
->Color
.BlendColor
[2];
2105 params
[3] = ctx
->Color
.BlendColor
[3];
2108 *params
= ctx
->Pixel
.BlueBias
;
2111 *params
= (GLfloat
) ctx
->Visual
->BlueBits
;
2114 *params
= ctx
->Pixel
.BlueScale
;
2116 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2117 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2119 case GL_CLIP_PLANE0
:
2120 case GL_CLIP_PLANE1
:
2121 case GL_CLIP_PLANE2
:
2122 case GL_CLIP_PLANE3
:
2123 case GL_CLIP_PLANE4
:
2124 case GL_CLIP_PLANE5
:
2125 *params
= (GLfloat
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
2127 case GL_COLOR_CLEAR_VALUE
:
2128 params
[0] = (GLfloat
) ctx
->Color
.ClearColor
[0];
2129 params
[1] = (GLfloat
) ctx
->Color
.ClearColor
[1];
2130 params
[2] = (GLfloat
) ctx
->Color
.ClearColor
[2];
2131 params
[3] = (GLfloat
) ctx
->Color
.ClearColor
[3];
2133 case GL_COLOR_MATERIAL
:
2134 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2136 case GL_COLOR_MATERIAL_FACE
:
2137 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2139 case GL_COLOR_MATERIAL_PARAMETER
:
2140 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2142 case GL_COLOR_WRITEMASK
:
2143 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2144 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2145 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2146 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2149 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2151 case GL_CULL_FACE_MODE
:
2152 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2154 case GL_CURRENT_COLOR
:
2155 UBYTE_RGBA_TO_FLOAT_RGBA(params
, ctx
->Current
.ByteColor
);
2157 case GL_CURRENT_INDEX
:
2158 *params
= (GLfloat
) ctx
->Current
.Index
;
2160 case GL_CURRENT_NORMAL
:
2161 params
[0] = ctx
->Current
.Normal
[0];
2162 params
[1] = ctx
->Current
.Normal
[1];
2163 params
[2] = ctx
->Current
.Normal
[2];
2165 case GL_CURRENT_RASTER_COLOR
:
2166 params
[0] = ctx
->Current
.RasterColor
[0];
2167 params
[1] = ctx
->Current
.RasterColor
[1];
2168 params
[2] = ctx
->Current
.RasterColor
[2];
2169 params
[3] = ctx
->Current
.RasterColor
[3];
2171 case GL_CURRENT_RASTER_DISTANCE
:
2172 params
[0] = ctx
->Current
.RasterDistance
;
2174 case GL_CURRENT_RASTER_INDEX
:
2175 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2177 case GL_CURRENT_RASTER_POSITION
:
2178 params
[0] = ctx
->Current
.RasterPos
[0];
2179 params
[1] = ctx
->Current
.RasterPos
[1];
2180 params
[2] = ctx
->Current
.RasterPos
[2];
2181 params
[3] = ctx
->Current
.RasterPos
[3];
2183 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2184 params
[0] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
2185 params
[1] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
2186 params
[2] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
2187 params
[3] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
2189 case GL_CURRENT_RASTER_POSITION_VALID
:
2190 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2192 case GL_CURRENT_TEXTURE_COORDS
:
2193 params
[0] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
2194 params
[1] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
2195 params
[2] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
2196 params
[3] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
2199 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2202 *params
= (GLfloat
) ctx
->Visual
->DepthBits
;
2204 case GL_DEPTH_CLEAR_VALUE
:
2205 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2208 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2210 case GL_DEPTH_RANGE
:
2211 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2212 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2214 case GL_DEPTH_SCALE
:
2215 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2218 *params
= (GLfloat
) ctx
->Depth
.Test
;
2220 case GL_DEPTH_WRITEMASK
:
2221 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2224 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2226 case GL_DOUBLEBUFFER
:
2227 *params
= (GLfloat
) ctx
->Visual
->DBflag
;
2229 case GL_DRAW_BUFFER
:
2230 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2233 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2235 case GL_FEEDBACK_BUFFER_SIZE
:
2236 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2238 case GL_FEEDBACK_BUFFER_TYPE
:
2239 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2242 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2245 params
[0] = ctx
->Fog
.Color
[0];
2246 params
[1] = ctx
->Fog
.Color
[1];
2247 params
[2] = ctx
->Fog
.Color
[2];
2248 params
[3] = ctx
->Fog
.Color
[3];
2250 case GL_FOG_DENSITY
:
2251 *params
= ctx
->Fog
.Density
;
2254 *params
= ctx
->Fog
.End
;
2257 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2260 *params
= ctx
->Fog
.Index
;
2263 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2266 *params
= ctx
->Fog
.Start
;
2269 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2272 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2275 *params
= (GLfloat
) ctx
->Visual
->GreenBits
;
2277 case GL_GREEN_SCALE
:
2278 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
2281 *params
= (GLfloat
) ctx
->Visual
->IndexBits
;
2283 case GL_INDEX_CLEAR_VALUE
:
2284 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
2287 *params
= ctx
->Visual
->RGBAflag
? 0.0F
: 1.0F
;
2289 case GL_INDEX_OFFSET
:
2290 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
2292 case GL_INDEX_SHIFT
:
2293 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
2295 case GL_INDEX_WRITEMASK
:
2296 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
2306 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
2309 *params
= (GLfloat
) ctx
->Light
.Enabled
;
2311 case GL_LIGHT_MODEL_AMBIENT
:
2312 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2313 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2314 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2315 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2317 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2318 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2320 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2321 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
2323 case GL_LIGHT_MODEL_TWO_SIDE
:
2324 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
2326 case GL_LINE_SMOOTH
:
2327 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
2329 case GL_LINE_SMOOTH_HINT
:
2330 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2332 case GL_LINE_STIPPLE
:
2333 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
2335 case GL_LINE_STIPPLE_PATTERN
:
2336 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
2338 case GL_LINE_STIPPLE_REPEAT
:
2339 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
2342 *params
= (GLfloat
) ctx
->Line
.Width
;
2344 case GL_LINE_WIDTH_GRANULARITY
:
2345 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
2347 case GL_LINE_WIDTH_RANGE
:
2348 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
2349 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
2351 case GL_ALIASED_LINE_WIDTH_RANGE
:
2352 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
2353 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
2356 *params
= (GLfloat
) ctx
->List
.ListBase
;
2359 *params
= (GLfloat
) ctx
->CurrentListNum
;
2362 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
2363 : ENUM_TO_FLOAT(GL_COMPILE
);
2365 case GL_INDEX_LOGIC_OP
:
2366 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
2368 case GL_COLOR_LOGIC_OP
:
2369 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
2371 case GL_LOGIC_OP_MODE
:
2372 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2374 case GL_MAP1_COLOR_4
:
2375 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
2377 case GL_MAP1_GRID_DOMAIN
:
2378 params
[0] = ctx
->Eval
.MapGrid1u1
;
2379 params
[1] = ctx
->Eval
.MapGrid1u2
;
2381 case GL_MAP1_GRID_SEGMENTS
:
2382 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
2385 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
2387 case GL_MAP1_NORMAL
:
2388 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
2390 case GL_MAP1_TEXTURE_COORD_1
:
2391 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
2393 case GL_MAP1_TEXTURE_COORD_2
:
2394 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
2396 case GL_MAP1_TEXTURE_COORD_3
:
2397 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
2399 case GL_MAP1_TEXTURE_COORD_4
:
2400 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
2402 case GL_MAP1_VERTEX_3
:
2403 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
2405 case GL_MAP1_VERTEX_4
:
2406 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
2408 case GL_MAP2_COLOR_4
:
2409 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
2411 case GL_MAP2_GRID_DOMAIN
:
2412 params
[0] = ctx
->Eval
.MapGrid2u1
;
2413 params
[1] = ctx
->Eval
.MapGrid2u2
;
2414 params
[2] = ctx
->Eval
.MapGrid2v1
;
2415 params
[3] = ctx
->Eval
.MapGrid2v2
;
2417 case GL_MAP2_GRID_SEGMENTS
:
2418 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
2419 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
2422 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
2424 case GL_MAP2_NORMAL
:
2425 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
2427 case GL_MAP2_TEXTURE_COORD_1
:
2428 *params
= ctx
->Eval
.Map2TextureCoord1
;
2430 case GL_MAP2_TEXTURE_COORD_2
:
2431 *params
= ctx
->Eval
.Map2TextureCoord2
;
2433 case GL_MAP2_TEXTURE_COORD_3
:
2434 *params
= ctx
->Eval
.Map2TextureCoord3
;
2436 case GL_MAP2_TEXTURE_COORD_4
:
2437 *params
= ctx
->Eval
.Map2TextureCoord4
;
2439 case GL_MAP2_VERTEX_3
:
2440 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
2442 case GL_MAP2_VERTEX_4
:
2443 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
2446 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
2448 case GL_MAP_STENCIL
:
2449 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
2451 case GL_MATRIX_MODE
:
2452 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2454 case GL_MAX_ATTRIB_STACK_DEPTH
:
2455 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
2457 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2458 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
2460 case GL_MAX_CLIP_PLANES
:
2461 *params
= (GLfloat
) MAX_CLIP_PLANES
;
2463 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
2464 *params
= (GLfloat
) VB_MAX
;
2466 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
2467 *params
= (GLfloat
) VB_MAX
;
2469 case GL_MAX_EVAL_ORDER
:
2470 *params
= (GLfloat
) MAX_EVAL_ORDER
;
2473 *params
= (GLfloat
) MAX_LIGHTS
;
2475 case GL_MAX_LIST_NESTING
:
2476 *params
= (GLfloat
) MAX_LIST_NESTING
;
2478 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2479 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
2481 case GL_MAX_NAME_STACK_DEPTH
:
2482 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
2484 case GL_MAX_PIXEL_MAP_TABLE
:
2485 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
2487 case GL_MAX_PROJECTION_STACK_DEPTH
:
2488 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
2490 case GL_MAX_TEXTURE_SIZE
:
2491 case GL_MAX_3D_TEXTURE_SIZE
:
2492 *params
= (GLfloat
) ctx
->Const
.MaxTextureSize
;
2494 case GL_MAX_TEXTURE_STACK_DEPTH
:
2495 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
2497 case GL_MAX_VIEWPORT_DIMS
:
2498 params
[0] = (GLfloat
) MAX_WIDTH
;
2499 params
[1] = (GLfloat
) MAX_HEIGHT
;
2501 case GL_MODELVIEW_MATRIX
:
2502 for (i
=0;i
<16;i
++) {
2503 params
[i
] = ctx
->ModelView
.m
[i
];
2506 case GL_MODELVIEW_STACK_DEPTH
:
2507 *params
= (GLfloat
) (ctx
->ModelViewStackDepth
+ 1);
2509 case GL_NAME_STACK_DEPTH
:
2510 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
2513 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
2515 case GL_PACK_ALIGNMENT
:
2516 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
2518 case GL_PACK_LSB_FIRST
:
2519 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
2521 case GL_PACK_ROW_LENGTH
:
2522 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
2524 case GL_PACK_SKIP_PIXELS
:
2525 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
2527 case GL_PACK_SKIP_ROWS
:
2528 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
2530 case GL_PACK_SWAP_BYTES
:
2531 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
2533 case GL_PACK_SKIP_IMAGES_EXT
:
2534 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
2536 case GL_PACK_IMAGE_HEIGHT_EXT
:
2537 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
2539 case GL_PERSPECTIVE_CORRECTION_HINT
:
2540 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
2542 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2543 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
2545 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2546 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
2548 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2549 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
2551 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2552 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
2554 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2555 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
2557 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2558 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
2560 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2561 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
2563 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2564 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
2566 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2567 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
2569 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2570 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
2573 *params
= (GLfloat
) ctx
->Point
.Size
;
2575 case GL_POINT_SIZE_GRANULARITY
:
2576 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
2578 case GL_POINT_SIZE_RANGE
:
2579 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
2580 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
2582 case GL_ALIASED_POINT_SIZE_RANGE
:
2583 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
2584 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
2586 case GL_POINT_SMOOTH
:
2587 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
2589 case GL_POINT_SMOOTH_HINT
:
2590 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
2592 case GL_POINT_SIZE_MIN_EXT
:
2593 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
2595 case GL_POINT_SIZE_MAX_EXT
:
2596 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
2598 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2599 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
2601 case GL_DISTANCE_ATTENUATION_EXT
:
2602 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
2603 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
2604 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
2606 case GL_POLYGON_MODE
:
2607 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
2608 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
2610 #ifdef GL_EXT_polygon_offset
2611 case GL_POLYGON_OFFSET_BIAS_EXT
:
2612 *params
= ctx
->Polygon
.OffsetUnits
;
2615 case GL_POLYGON_OFFSET_FACTOR
:
2616 *params
= ctx
->Polygon
.OffsetFactor
;
2618 case GL_POLYGON_OFFSET_UNITS
:
2619 *params
= ctx
->Polygon
.OffsetUnits
;
2621 case GL_POLYGON_SMOOTH
:
2622 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
2624 case GL_POLYGON_SMOOTH_HINT
:
2625 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
2627 case GL_POLYGON_STIPPLE
:
2628 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
2630 case GL_PROJECTION_MATRIX
:
2631 for (i
=0;i
<16;i
++) {
2632 params
[i
] = ctx
->ProjectionMatrix
.m
[i
];
2635 case GL_PROJECTION_STACK_DEPTH
:
2636 *params
= (GLfloat
) (ctx
->ProjectionStackDepth
+ 1);
2638 case GL_READ_BUFFER
:
2639 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
2642 *params
= ctx
->Pixel
.RedBias
;
2645 *params
= (GLfloat
) ctx
->Visual
->RedBits
;
2648 *params
= ctx
->Pixel
.RedScale
;
2650 case GL_RENDER_MODE
:
2651 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
2654 *params
= (GLfloat
) ctx
->Visual
->RGBAflag
;
2656 case GL_SCISSOR_BOX
:
2657 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
2658 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
2659 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
2660 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
2662 case GL_SCISSOR_TEST
:
2663 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
2665 case GL_SELECTION_BUFFER_SIZE
:
2666 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
2668 case GL_SHADE_MODEL
:
2669 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
2671 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2672 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
2674 case GL_STENCIL_BITS
:
2675 *params
= (GLfloat
) ctx
->Visual
->StencilBits
;
2677 case GL_STENCIL_CLEAR_VALUE
:
2678 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
2680 case GL_STENCIL_FAIL
:
2681 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
2683 case GL_STENCIL_FUNC
:
2684 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
2686 case GL_STENCIL_PASS_DEPTH_FAIL
:
2687 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
2689 case GL_STENCIL_PASS_DEPTH_PASS
:
2690 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
2692 case GL_STENCIL_REF
:
2693 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
2695 case GL_STENCIL_TEST
:
2696 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
2698 case GL_STENCIL_VALUE_MASK
:
2699 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
2701 case GL_STENCIL_WRITEMASK
:
2702 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
2705 *params
= (GLfloat
) ctx
->Visual
->StereoFlag
;
2707 case GL_SUBPIXEL_BITS
:
2708 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
2711 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2714 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2717 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2719 case GL_TEXTURE_BINDING_1D
:
2720 *params
= (GLfloat
) textureUnit
->CurrentD
[1]->Name
;
2722 case GL_TEXTURE_BINDING_2D
:
2723 *params
= (GLfloat
) textureUnit
->CurrentD
[2]->Name
;
2725 case GL_TEXTURE_BINDING_3D
:
2726 *params
= (GLfloat
) textureUnit
->CurrentD
[2]->Name
;
2728 case GL_TEXTURE_ENV_COLOR
:
2729 params
[0] = textureUnit
->EnvColor
[0];
2730 params
[1] = textureUnit
->EnvColor
[1];
2731 params
[2] = textureUnit
->EnvColor
[2];
2732 params
[3] = textureUnit
->EnvColor
[3];
2734 case GL_TEXTURE_ENV_MODE
:
2735 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
2737 case GL_TEXTURE_GEN_S
:
2738 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2740 case GL_TEXTURE_GEN_T
:
2741 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2743 case GL_TEXTURE_GEN_R
:
2744 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2746 case GL_TEXTURE_GEN_Q
:
2747 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2749 case GL_TEXTURE_MATRIX
:
2750 for (i
=0;i
<16;i
++) {
2751 params
[i
] = ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
2754 case GL_TEXTURE_STACK_DEPTH
:
2755 *params
= (GLfloat
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
2757 case GL_UNPACK_ALIGNMENT
:
2758 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
2760 case GL_UNPACK_LSB_FIRST
:
2761 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
2763 case GL_UNPACK_ROW_LENGTH
:
2764 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
2766 case GL_UNPACK_SKIP_PIXELS
:
2767 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
2769 case GL_UNPACK_SKIP_ROWS
:
2770 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
2772 case GL_UNPACK_SWAP_BYTES
:
2773 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
2775 case GL_UNPACK_SKIP_IMAGES_EXT
:
2776 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
2778 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2779 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
2782 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
2783 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
2784 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
2785 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
2788 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
2791 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
2793 case GL_VERTEX_ARRAY
:
2794 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
2796 case GL_VERTEX_ARRAY_SIZE
:
2797 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
2799 case GL_VERTEX_ARRAY_TYPE
:
2800 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
2802 case GL_VERTEX_ARRAY_STRIDE
:
2803 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
2805 case GL_VERTEX_ARRAY_COUNT_EXT
:
2808 case GL_NORMAL_ARRAY
:
2809 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
2811 case GL_NORMAL_ARRAY_TYPE
:
2812 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
2814 case GL_NORMAL_ARRAY_STRIDE
:
2815 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
2817 case GL_NORMAL_ARRAY_COUNT_EXT
:
2820 case GL_COLOR_ARRAY
:
2821 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
2823 case GL_COLOR_ARRAY_SIZE
:
2824 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
2826 case GL_COLOR_ARRAY_TYPE
:
2827 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
2829 case GL_COLOR_ARRAY_STRIDE
:
2830 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
2832 case GL_COLOR_ARRAY_COUNT_EXT
:
2835 case GL_INDEX_ARRAY
:
2836 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
2838 case GL_INDEX_ARRAY_TYPE
:
2839 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
2841 case GL_INDEX_ARRAY_STRIDE
:
2842 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
2844 case GL_INDEX_ARRAY_COUNT_EXT
:
2847 case GL_TEXTURE_COORD_ARRAY
:
2848 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2850 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2851 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2853 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2854 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
2856 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2857 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2859 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2862 case GL_EDGE_FLAG_ARRAY
:
2863 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
2865 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2866 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
2868 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2872 case GL_MAX_TEXTURE_UNITS_ARB
:
2873 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
2875 case GL_ACTIVE_TEXTURE_ARB
:
2876 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2878 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2879 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2882 /* GL_PGI_misc_hints */
2883 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
2884 *params
= ENUM_TO_FLOAT(GL_NICEST
);
2886 case GL_STRICT_LIGHTING_HINT_PGI
:
2887 *params
= ENUM_TO_FLOAT(ctx
->Hint
.StrictLighting
);
2889 case GL_STRICT_SCISSOR_HINT_PGI
:
2890 case GL_FULL_STIPPLE_HINT_PGI
:
2891 *params
= ENUM_TO_FLOAT(GL_TRUE
);
2893 case GL_CONSERVE_MEMORY_HINT_PGI
:
2894 *params
= ENUM_TO_FLOAT(GL_FALSE
);
2896 case GL_ALWAYS_FAST_HINT_PGI
:
2897 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2898 ctx
->Hint
.AllowDrawSpn
== GL_FALSE
&&
2899 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
2901 case GL_ALWAYS_SOFT_HINT_PGI
:
2902 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2903 ctx
->Hint
.AllowDrawSpn
== GL_TRUE
&&
2904 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
2906 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
2907 *params
= (GLfloat
) GL_TRUE
;
2909 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
2910 *params
= (GLfloat
) ctx
->Hint
.AllowDrawWin
;
2912 case GL_ALLOW_DRAW_SPN_HINT_PGI
:
2913 *params
= (GLfloat
) ctx
->Hint
.AllowDrawSpn
;
2915 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
2916 *params
= (GLfloat
) ctx
->Hint
.AllowDrawMem
;
2918 case GL_CLIP_NEAR_HINT_PGI
:
2919 case GL_CLIP_FAR_HINT_PGI
:
2920 *params
= ENUM_TO_FLOAT(GL_TRUE
);
2922 case GL_WIDE_LINE_HINT_PGI
:
2923 *params
= ENUM_TO_FLOAT(GL_DONT_CARE
);
2925 case GL_BACK_NORMALS_HINT_PGI
:
2926 *params
= ENUM_TO_FLOAT(GL_TRUE
);
2928 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
2932 /* GL_EXT_compiled_vertex_array */
2933 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2934 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
2936 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2937 *params
= (GLfloat
) ctx
->Array
.LockCount
;
2940 /* GL_ARB_transpose_matrix */
2941 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2942 /* don't have a color matrix */
2944 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2945 gl_matrix_transposef(params
, ctx
->ModelView
.m
);
2947 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2948 gl_matrix_transposef(params
, ctx
->ProjectionMatrix
.m
);
2950 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2951 gl_matrix_transposef(params
, ctx
->TextureMatrix
[texTransformUnit
].m
);
2954 /* GL_HP_occlusion_test */
2955 case GL_OCCLUSION_TEST_HP
:
2956 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
2957 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
2960 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
2963 case GL_OCCLUSION_TEST_RESULT_HP
:
2964 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
2965 *params
= (GLfloat
) ctx
->OcclusionResult
;
2966 ctx
->OcclusionResult
= GL_FALSE
; /* reset now */
2969 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
2974 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
2982 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
2984 GET_CURRENT_CONTEXT(ctx
);
2986 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2987 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
2988 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2990 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetIntegerv");
2992 if (MESA_VERBOSE
& VERBOSE_API
)
2993 fprintf(stderr
, "glGetIntegerv %s\n", gl_lookup_enum_by_nr(pname
));
2996 case GL_ACCUM_RED_BITS
:
2997 case GL_ACCUM_GREEN_BITS
:
2998 case GL_ACCUM_BLUE_BITS
:
2999 case GL_ACCUM_ALPHA_BITS
:
3000 *params
= (GLint
) ctx
->Visual
->AccumBits
;
3002 case GL_ACCUM_CLEAR_VALUE
:
3003 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
3004 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
3005 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
3006 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
3009 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
3012 *params
= ctx
->Visual
->AlphaBits
;
3014 case GL_ALPHA_SCALE
:
3015 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
3018 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
3020 case GL_ALPHA_TEST_REF
:
3021 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ 255.0 );
3023 case GL_ALPHA_TEST_FUNC
:
3024 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
3026 case GL_ATTRIB_STACK_DEPTH
:
3027 *params
= (GLint
) (ctx
->AttribStackDepth
);
3029 case GL_AUTO_NORMAL
:
3030 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
3032 case GL_AUX_BUFFERS
:
3033 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
3036 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
3039 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3042 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3044 case GL_BLEND_SRC_RGB_EXT
:
3045 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3047 case GL_BLEND_DST_RGB_EXT
:
3048 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3050 case GL_BLEND_SRC_ALPHA_EXT
:
3051 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
3053 case GL_BLEND_DST_ALPHA_EXT
:
3054 *params
= (GLint
) ctx
->Color
.BlendDstA
;
3056 case GL_BLEND_EQUATION_EXT
:
3057 *params
= (GLint
) ctx
->Color
.BlendEquation
;
3059 case GL_BLEND_COLOR_EXT
:
3060 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
3061 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
3062 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
3063 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
3066 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
3069 *params
= (GLint
) ctx
->Visual
->BlueBits
;
3072 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
3074 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3075 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
3077 case GL_CLIP_PLANE0
:
3078 case GL_CLIP_PLANE1
:
3079 case GL_CLIP_PLANE2
:
3080 case GL_CLIP_PLANE3
:
3081 case GL_CLIP_PLANE4
:
3082 case GL_CLIP_PLANE5
:
3083 i
= (GLint
) (pname
- GL_CLIP_PLANE0
);
3084 *params
= (GLint
) ctx
->Transform
.ClipEnabled
[i
];
3086 case GL_COLOR_CLEAR_VALUE
:
3087 params
[0] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[0] );
3088 params
[1] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[1] );
3089 params
[2] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[2] );
3090 params
[3] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[3] );
3092 case GL_COLOR_MATERIAL
:
3093 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
3095 case GL_COLOR_MATERIAL_FACE
:
3096 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
3098 case GL_COLOR_MATERIAL_PARAMETER
:
3099 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
3101 case GL_COLOR_WRITEMASK
:
3102 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
3103 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
3104 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
3105 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
3108 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
3110 case GL_CULL_FACE_MODE
:
3111 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
3113 case GL_CURRENT_COLOR
:
3114 params
[0] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.ByteColor
[0] ) );
3115 params
[1] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.ByteColor
[1] ) );
3116 params
[2] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.ByteColor
[2] ) );
3117 params
[3] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.ByteColor
[3] ) );
3119 case GL_CURRENT_INDEX
:
3120 *params
= (GLint
) ctx
->Current
.Index
;
3122 case GL_CURRENT_NORMAL
:
3123 params
[0] = FLOAT_TO_INT( ctx
->Current
.Normal
[0] );
3124 params
[1] = FLOAT_TO_INT( ctx
->Current
.Normal
[1] );
3125 params
[2] = FLOAT_TO_INT( ctx
->Current
.Normal
[2] );
3127 case GL_CURRENT_RASTER_COLOR
:
3128 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
3129 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
3130 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
3131 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
3133 case GL_CURRENT_RASTER_DISTANCE
:
3134 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
3136 case GL_CURRENT_RASTER_INDEX
:
3137 *params
= (GLint
) ctx
->Current
.RasterIndex
;
3139 case GL_CURRENT_RASTER_POSITION
:
3140 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
3141 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
3142 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
3143 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
3145 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3146 params
[0] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
3147 params
[1] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
3148 params
[2] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
3149 params
[3] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
3151 case GL_CURRENT_RASTER_POSITION_VALID
:
3152 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
3154 case GL_CURRENT_TEXTURE_COORDS
:
3155 params
[0] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
3156 params
[1] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
3157 params
[2] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
3158 params
[3] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
3161 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
3164 *params
= ctx
->Visual
->DepthBits
;
3166 case GL_DEPTH_CLEAR_VALUE
:
3167 *params
= (GLint
) ctx
->Depth
.Clear
;
3170 *params
= (GLint
) ctx
->Depth
.Func
;
3172 case GL_DEPTH_RANGE
:
3173 params
[0] = (GLint
) ctx
->Viewport
.Near
;
3174 params
[1] = (GLint
) ctx
->Viewport
.Far
;
3176 case GL_DEPTH_SCALE
:
3177 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
3180 *params
= (GLint
) ctx
->Depth
.Test
;
3182 case GL_DEPTH_WRITEMASK
:
3183 *params
= (GLint
) ctx
->Depth
.Mask
;
3186 *params
= (GLint
) ctx
->Color
.DitherFlag
;
3188 case GL_DOUBLEBUFFER
:
3189 *params
= (GLint
) ctx
->Visual
->DBflag
;
3191 case GL_DRAW_BUFFER
:
3192 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
3195 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
3197 case GL_FEEDBACK_BUFFER_SIZE
:
3198 *params
= ctx
->Feedback
.BufferSize
;
3200 case GL_FEEDBACK_BUFFER_TYPE
:
3201 *params
= ctx
->Feedback
.Type
;
3204 *params
= (GLint
) ctx
->Fog
.Enabled
;
3207 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
3208 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
3209 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
3210 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
3212 case GL_FOG_DENSITY
:
3213 *params
= (GLint
) ctx
->Fog
.Density
;
3216 *params
= (GLint
) ctx
->Fog
.End
;
3219 *params
= (GLint
) ctx
->Hint
.Fog
;
3222 *params
= (GLint
) ctx
->Fog
.Index
;
3225 *params
= (GLint
) ctx
->Fog
.Mode
;
3228 *params
= (GLint
) ctx
->Fog
.Start
;
3231 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
3234 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
3237 *params
= (GLint
) ctx
->Visual
->GreenBits
;
3239 case GL_GREEN_SCALE
:
3240 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
3243 *params
= (GLint
) ctx
->Visual
->IndexBits
;
3245 case GL_INDEX_CLEAR_VALUE
:
3246 *params
= (GLint
) ctx
->Color
.ClearIndex
;
3249 *params
= ctx
->Visual
->RGBAflag
? 0 : 1;
3251 case GL_INDEX_OFFSET
:
3252 *params
= ctx
->Pixel
.IndexOffset
;
3254 case GL_INDEX_SHIFT
:
3255 *params
= ctx
->Pixel
.IndexShift
;
3257 case GL_INDEX_WRITEMASK
:
3258 *params
= (GLint
) ctx
->Color
.IndexMask
;
3268 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3271 *params
= (GLint
) ctx
->Light
.Enabled
;
3273 case GL_LIGHT_MODEL_AMBIENT
:
3274 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
3275 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
3276 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
3277 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
3279 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3280 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
3282 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3283 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
3285 case GL_LIGHT_MODEL_TWO_SIDE
:
3286 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
3288 case GL_LINE_SMOOTH
:
3289 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
3291 case GL_LINE_SMOOTH_HINT
:
3292 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
3294 case GL_LINE_STIPPLE
:
3295 *params
= (GLint
) ctx
->Line
.StippleFlag
;
3297 case GL_LINE_STIPPLE_PATTERN
:
3298 *params
= (GLint
) ctx
->Line
.StipplePattern
;
3300 case GL_LINE_STIPPLE_REPEAT
:
3301 *params
= (GLint
) ctx
->Line
.StippleFactor
;
3304 *params
= (GLint
) ctx
->Line
.Width
;
3306 case GL_LINE_WIDTH_GRANULARITY
:
3307 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
3309 case GL_LINE_WIDTH_RANGE
:
3310 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
3311 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
3313 case GL_ALIASED_LINE_WIDTH_RANGE
:
3314 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
3315 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
3318 *params
= (GLint
) ctx
->List
.ListBase
;
3321 *params
= (GLint
) ctx
->CurrentListNum
;
3324 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
3325 : (GLint
) GL_COMPILE
;
3327 case GL_INDEX_LOGIC_OP
:
3328 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
3330 case GL_COLOR_LOGIC_OP
:
3331 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
3333 case GL_LOGIC_OP_MODE
:
3334 *params
= (GLint
) ctx
->Color
.LogicOp
;
3336 case GL_MAP1_COLOR_4
:
3337 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
3339 case GL_MAP1_GRID_DOMAIN
:
3340 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
3341 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
3343 case GL_MAP1_GRID_SEGMENTS
:
3344 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
3347 *params
= (GLint
) ctx
->Eval
.Map1Index
;
3349 case GL_MAP1_NORMAL
:
3350 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
3352 case GL_MAP1_TEXTURE_COORD_1
:
3353 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
3355 case GL_MAP1_TEXTURE_COORD_2
:
3356 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
3358 case GL_MAP1_TEXTURE_COORD_3
:
3359 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
3361 case GL_MAP1_TEXTURE_COORD_4
:
3362 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
3364 case GL_MAP1_VERTEX_3
:
3365 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
3367 case GL_MAP1_VERTEX_4
:
3368 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
3370 case GL_MAP2_COLOR_4
:
3371 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
3373 case GL_MAP2_GRID_DOMAIN
:
3374 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
3375 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
3376 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
3377 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
3379 case GL_MAP2_GRID_SEGMENTS
:
3380 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
3381 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
3384 *params
= (GLint
) ctx
->Eval
.Map2Index
;
3386 case GL_MAP2_NORMAL
:
3387 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
3389 case GL_MAP2_TEXTURE_COORD_1
:
3390 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
3392 case GL_MAP2_TEXTURE_COORD_2
:
3393 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
3395 case GL_MAP2_TEXTURE_COORD_3
:
3396 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
3398 case GL_MAP2_TEXTURE_COORD_4
:
3399 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
3401 case GL_MAP2_VERTEX_3
:
3402 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
3404 case GL_MAP2_VERTEX_4
:
3405 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
3408 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
3410 case GL_MAP_STENCIL
:
3411 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
3413 case GL_MATRIX_MODE
:
3414 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
3416 case GL_MAX_ATTRIB_STACK_DEPTH
:
3417 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
3419 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3420 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3422 case GL_MAX_CLIP_PLANES
:
3423 *params
= (GLint
) MAX_CLIP_PLANES
;
3425 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3428 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3431 case GL_MAX_EVAL_ORDER
:
3432 *params
= (GLint
) MAX_EVAL_ORDER
;
3435 *params
= (GLint
) MAX_LIGHTS
;
3437 case GL_MAX_LIST_NESTING
:
3438 *params
= (GLint
) MAX_LIST_NESTING
;
3440 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3441 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
3443 case GL_MAX_NAME_STACK_DEPTH
:
3444 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
3446 case GL_MAX_PIXEL_MAP_TABLE
:
3447 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
3449 case GL_MAX_PROJECTION_STACK_DEPTH
:
3450 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
3452 case GL_MAX_TEXTURE_SIZE
:
3453 case GL_MAX_3D_TEXTURE_SIZE
:
3454 *params
= ctx
->Const
.MaxTextureSize
;
3456 case GL_MAX_TEXTURE_STACK_DEPTH
:
3457 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
3459 case GL_MAX_VIEWPORT_DIMS
:
3460 params
[0] = (GLint
) MAX_WIDTH
;
3461 params
[1] = (GLint
) MAX_HEIGHT
;
3463 case GL_MODELVIEW_MATRIX
:
3464 for (i
=0;i
<16;i
++) {
3465 params
[i
] = (GLint
) ctx
->ModelView
.m
[i
];
3468 case GL_MODELVIEW_STACK_DEPTH
:
3469 *params
= (GLint
) (ctx
->ModelViewStackDepth
+ 1);
3471 case GL_NAME_STACK_DEPTH
:
3472 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
3475 *params
= (GLint
) ctx
->Transform
.Normalize
;
3477 case GL_PACK_ALIGNMENT
:
3478 *params
= ctx
->Pack
.Alignment
;
3480 case GL_PACK_LSB_FIRST
:
3481 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
3483 case GL_PACK_ROW_LENGTH
:
3484 *params
= ctx
->Pack
.RowLength
;
3486 case GL_PACK_SKIP_PIXELS
:
3487 *params
= ctx
->Pack
.SkipPixels
;
3489 case GL_PACK_SKIP_ROWS
:
3490 *params
= ctx
->Pack
.SkipRows
;
3492 case GL_PACK_SWAP_BYTES
:
3493 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
3495 case GL_PACK_SKIP_IMAGES_EXT
:
3496 *params
= ctx
->Pack
.SkipImages
;
3498 case GL_PACK_IMAGE_HEIGHT_EXT
:
3499 *params
= ctx
->Pack
.ImageHeight
;
3501 case GL_PERSPECTIVE_CORRECTION_HINT
:
3502 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
3504 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3505 *params
= ctx
->Pixel
.MapAtoAsize
;
3507 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3508 *params
= ctx
->Pixel
.MapBtoBsize
;
3510 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3511 *params
= ctx
->Pixel
.MapGtoGsize
;
3513 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3514 *params
= ctx
->Pixel
.MapItoAsize
;
3516 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3517 *params
= ctx
->Pixel
.MapItoBsize
;
3519 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3520 *params
= ctx
->Pixel
.MapItoGsize
;
3522 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3523 *params
= ctx
->Pixel
.MapItoIsize
;
3525 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3526 *params
= ctx
->Pixel
.MapItoRsize
;
3528 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3529 *params
= ctx
->Pixel
.MapRtoRsize
;
3531 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3532 *params
= ctx
->Pixel
.MapStoSsize
;
3535 *params
= (GLint
) ctx
->Point
.Size
;
3537 case GL_POINT_SIZE_GRANULARITY
:
3538 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
3540 case GL_POINT_SIZE_RANGE
:
3541 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
3542 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
3544 case GL_ALIASED_POINT_SIZE_RANGE
:
3545 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
3546 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
3548 case GL_POINT_SMOOTH
:
3549 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
3551 case GL_POINT_SMOOTH_HINT
:
3552 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
3554 case GL_POINT_SIZE_MIN_EXT
:
3555 *params
= (GLint
) (ctx
->Point
.MinSize
);
3557 case GL_POINT_SIZE_MAX_EXT
:
3558 *params
= (GLint
) (ctx
->Point
.MaxSize
);
3560 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3561 *params
= (GLint
) (ctx
->Point
.Threshold
);
3563 case GL_DISTANCE_ATTENUATION_EXT
:
3564 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
3565 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
3566 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
3568 case GL_POLYGON_MODE
:
3569 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
3570 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
3572 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
3573 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
3575 case GL_POLYGON_OFFSET_FACTOR
:
3576 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
3578 case GL_POLYGON_OFFSET_UNITS
:
3579 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
3581 case GL_POLYGON_SMOOTH
:
3582 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
3584 case GL_POLYGON_SMOOTH_HINT
:
3585 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
3587 case GL_POLYGON_STIPPLE
:
3588 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
3590 case GL_PROJECTION_MATRIX
:
3591 for (i
=0;i
<16;i
++) {
3592 params
[i
] = (GLint
) ctx
->ProjectionMatrix
.m
[i
];
3595 case GL_PROJECTION_STACK_DEPTH
:
3596 *params
= (GLint
) (ctx
->ProjectionStackDepth
+ 1);
3598 case GL_READ_BUFFER
:
3599 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
3602 *params
= (GLint
) ctx
->Pixel
.RedBias
;
3605 *params
= (GLint
) ctx
->Visual
->RedBits
;
3608 *params
= (GLint
) ctx
->Pixel
.RedScale
;
3610 case GL_RENDER_MODE
:
3611 *params
= (GLint
) ctx
->RenderMode
;
3614 *params
= (GLint
) ctx
->Visual
->RGBAflag
;
3616 case GL_SCISSOR_BOX
:
3617 params
[0] = (GLint
) ctx
->Scissor
.X
;
3618 params
[1] = (GLint
) ctx
->Scissor
.Y
;
3619 params
[2] = (GLint
) ctx
->Scissor
.Width
;
3620 params
[3] = (GLint
) ctx
->Scissor
.Height
;
3622 case GL_SCISSOR_TEST
:
3623 *params
= (GLint
) ctx
->Scissor
.Enabled
;
3625 case GL_SELECTION_BUFFER_SIZE
:
3626 *params
= (GLint
) ctx
->Select
.BufferSize
;
3628 case GL_SHADE_MODEL
:
3629 *params
= (GLint
) ctx
->Light
.ShadeModel
;
3631 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3632 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
3634 case GL_STENCIL_BITS
:
3635 *params
= ctx
->Visual
->StencilBits
;
3637 case GL_STENCIL_CLEAR_VALUE
:
3638 *params
= (GLint
) ctx
->Stencil
.Clear
;
3640 case GL_STENCIL_FAIL
:
3641 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
3643 case GL_STENCIL_FUNC
:
3644 *params
= (GLint
) ctx
->Stencil
.Function
;
3646 case GL_STENCIL_PASS_DEPTH_FAIL
:
3647 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
3649 case GL_STENCIL_PASS_DEPTH_PASS
:
3650 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
3652 case GL_STENCIL_REF
:
3653 *params
= (GLint
) ctx
->Stencil
.Ref
;
3655 case GL_STENCIL_TEST
:
3656 *params
= (GLint
) ctx
->Stencil
.Enabled
;
3658 case GL_STENCIL_VALUE_MASK
:
3659 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
3661 case GL_STENCIL_WRITEMASK
:
3662 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
3665 *params
= (GLint
) ctx
->Visual
->StereoFlag
;
3667 case GL_SUBPIXEL_BITS
:
3668 *params
= ctx
->Const
.SubPixelBits
;
3671 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
3674 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
3677 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
3679 case GL_TEXTURE_BINDING_1D
:
3680 *params
= textureUnit
->CurrentD
[1]->Name
;
3682 case GL_TEXTURE_BINDING_2D
:
3683 *params
= textureUnit
->CurrentD
[2]->Name
;
3685 case GL_TEXTURE_BINDING_3D
:
3686 *params
= textureUnit
->CurrentD
[3]->Name
;
3688 case GL_TEXTURE_ENV_COLOR
:
3689 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
3690 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
3691 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
3692 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
3694 case GL_TEXTURE_ENV_MODE
:
3695 *params
= (GLint
) textureUnit
->EnvMode
;
3697 case GL_TEXTURE_GEN_S
:
3698 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
3700 case GL_TEXTURE_GEN_T
:
3701 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
3703 case GL_TEXTURE_GEN_R
:
3704 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
3706 case GL_TEXTURE_GEN_Q
:
3707 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
3709 case GL_TEXTURE_MATRIX
:
3710 for (i
=0;i
<16;i
++) {
3711 params
[i
] = (GLint
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
3714 case GL_TEXTURE_STACK_DEPTH
:
3715 *params
= (GLint
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
3717 case GL_UNPACK_ALIGNMENT
:
3718 *params
= ctx
->Unpack
.Alignment
;
3720 case GL_UNPACK_LSB_FIRST
:
3721 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
3723 case GL_UNPACK_ROW_LENGTH
:
3724 *params
= ctx
->Unpack
.RowLength
;
3726 case GL_UNPACK_SKIP_PIXELS
:
3727 *params
= ctx
->Unpack
.SkipPixels
;
3729 case GL_UNPACK_SKIP_ROWS
:
3730 *params
= ctx
->Unpack
.SkipRows
;
3732 case GL_UNPACK_SWAP_BYTES
:
3733 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
3735 case GL_UNPACK_SKIP_IMAGES_EXT
:
3736 *params
= ctx
->Unpack
.SkipImages
;
3738 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3739 *params
= ctx
->Unpack
.ImageHeight
;
3742 params
[0] = (GLint
) ctx
->Viewport
.X
;
3743 params
[1] = (GLint
) ctx
->Viewport
.Y
;
3744 params
[2] = (GLint
) ctx
->Viewport
.Width
;
3745 params
[3] = (GLint
) ctx
->Viewport
.Height
;
3748 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
3751 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
3753 case GL_VERTEX_ARRAY
:
3754 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
3756 case GL_VERTEX_ARRAY_SIZE
:
3757 *params
= ctx
->Array
.Vertex
.Size
;
3759 case GL_VERTEX_ARRAY_TYPE
:
3760 *params
= ctx
->Array
.Vertex
.Type
;
3762 case GL_VERTEX_ARRAY_STRIDE
:
3763 *params
= ctx
->Array
.Vertex
.Stride
;
3765 case GL_VERTEX_ARRAY_COUNT_EXT
:
3768 case GL_NORMAL_ARRAY
:
3769 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
3771 case GL_NORMAL_ARRAY_TYPE
:
3772 *params
= ctx
->Array
.Normal
.Type
;
3774 case GL_NORMAL_ARRAY_STRIDE
:
3775 *params
= ctx
->Array
.Normal
.Stride
;
3777 case GL_NORMAL_ARRAY_COUNT_EXT
:
3780 case GL_COLOR_ARRAY
:
3781 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
3783 case GL_COLOR_ARRAY_SIZE
:
3784 *params
= ctx
->Array
.Color
.Size
;
3786 case GL_COLOR_ARRAY_TYPE
:
3787 *params
= ctx
->Array
.Color
.Type
;
3789 case GL_COLOR_ARRAY_STRIDE
:
3790 *params
= ctx
->Array
.Color
.Stride
;
3792 case GL_COLOR_ARRAY_COUNT_EXT
:
3795 case GL_INDEX_ARRAY
:
3796 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
3798 case GL_INDEX_ARRAY_TYPE
:
3799 *params
= ctx
->Array
.Index
.Type
;
3801 case GL_INDEX_ARRAY_STRIDE
:
3802 *params
= ctx
->Array
.Index
.Stride
;
3804 case GL_INDEX_ARRAY_COUNT_EXT
:
3807 case GL_TEXTURE_COORD_ARRAY
:
3808 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3810 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3811 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
3813 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3814 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
3816 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3817 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
3819 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3822 case GL_EDGE_FLAG_ARRAY
:
3823 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
3825 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3826 *params
= ctx
->Array
.EdgeFlag
.Stride
;
3828 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3832 case GL_MAX_TEXTURE_UNITS_ARB
:
3833 *params
= ctx
->Const
.MaxTextureUnits
;
3835 case GL_ACTIVE_TEXTURE_ARB
:
3836 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
3838 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3839 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
3842 /* GL_PGI_misc_hints */
3843 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
3844 *params
= (GL_NICEST
);
3846 case GL_STRICT_LIGHTING_HINT_PGI
:
3847 *params
= (ctx
->Hint
.StrictLighting
);
3849 case GL_STRICT_SCISSOR_HINT_PGI
:
3850 case GL_FULL_STIPPLE_HINT_PGI
:
3851 *params
= (GL_TRUE
);
3853 case GL_CONSERVE_MEMORY_HINT_PGI
:
3854 *params
= (GL_FALSE
);
3856 case GL_ALWAYS_FAST_HINT_PGI
:
3857 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3858 ctx
->Hint
.AllowDrawSpn
== GL_FALSE
&&
3859 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
3861 case GL_ALWAYS_SOFT_HINT_PGI
:
3862 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3863 ctx
->Hint
.AllowDrawSpn
== GL_TRUE
&&
3864 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
3866 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
3869 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
3870 *params
= ctx
->Hint
.AllowDrawWin
;
3872 case GL_ALLOW_DRAW_SPN_HINT_PGI
:
3873 *params
= ctx
->Hint
.AllowDrawSpn
;
3875 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
3876 *params
= ctx
->Hint
.AllowDrawMem
;
3878 case GL_CLIP_NEAR_HINT_PGI
:
3879 case GL_CLIP_FAR_HINT_PGI
:
3882 case GL_WIDE_LINE_HINT_PGI
:
3883 *params
= GL_DONT_CARE
;
3885 case GL_BACK_NORMALS_HINT_PGI
:
3886 *params
= (GL_TRUE
);
3888 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
3892 /* GL_EXT_compiled_vertex_array */
3893 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3894 *params
= ctx
->Array
.LockFirst
;
3896 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3897 *params
= ctx
->Array
.LockCount
;
3900 /* GL_ARB_transpose_matrix */
3901 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3902 /* don't have a color matrix */
3904 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3908 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
3909 for (i
=0;i
<16;i
++) {
3910 params
[i
] = (GLint
) tm
[i
];
3914 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3918 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
3919 for (i
=0;i
<16;i
++) {
3920 params
[i
] = (GLint
) tm
[i
];
3924 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3928 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
3929 for (i
=0;i
<16;i
++) {
3930 params
[i
] = (GLint
) tm
[i
];
3935 /* GL_HP_occlusion_test */
3936 case GL_OCCLUSION_TEST_HP
:
3937 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
3938 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
3941 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
3944 case GL_OCCLUSION_TEST_RESULT_HP
:
3945 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
3946 *params
= (GLint
) ctx
->OcclusionResult
;
3947 ctx
->OcclusionResult
= GL_FALSE
; /* reset now */
3950 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
3955 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
3962 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
3964 GET_CURRENT_CONTEXT(ctx
);
3965 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3966 /*GLuint texTransformUnit = ctx->Texture.CurrentTransformUnit;*/
3968 if (MESA_VERBOSE
& VERBOSE_API
)
3969 fprintf(stderr
, "glGetPointerv %s\n", gl_lookup_enum_by_nr(pname
));
3972 case GL_VERTEX_ARRAY_POINTER
:
3973 *params
= ctx
->Array
.Vertex
.Ptr
;
3975 case GL_NORMAL_ARRAY_POINTER
:
3976 *params
= ctx
->Array
.Normal
.Ptr
;
3978 case GL_COLOR_ARRAY_POINTER
:
3979 *params
= ctx
->Array
.Color
.Ptr
;
3981 case GL_INDEX_ARRAY_POINTER
:
3982 *params
= ctx
->Array
.Index
.Ptr
;
3984 case GL_TEXTURE_COORD_ARRAY_POINTER
:
3985 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
3987 case GL_EDGE_FLAG_ARRAY_POINTER
:
3988 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
3990 case GL_FEEDBACK_BUFFER_POINTER
:
3991 *params
= ctx
->Feedback
.Buffer
;
3993 case GL_SELECTION_BUFFER_POINTER
:
3994 *params
= ctx
->Select
.Buffer
;
3997 gl_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
4005 _mesa_GetString( GLenum name
)
4007 GET_CURRENT_CONTEXT(ctx
);
4008 static char *vendor
= "Brian Paul";
4009 static char *renderer
= "Mesa";
4010 static char *version
= "1.2 Mesa 3.3 beta";
4012 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH_WITH_RETVAL(ctx
, "glGetString", 0);
4014 /* this is a required driver function */
4015 assert(ctx
->Driver
.GetString
);
4017 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
4023 return (const GLubyte
*) vendor
;
4025 return (const GLubyte
*) renderer
;
4027 return (const GLubyte
*) version
;
4029 return (GLubyte
*) gl_extensions_get_string( ctx
);
4031 gl_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
4032 return (GLubyte
*) 0;
4039 * Execute a glGetError command
4042 _mesa_GetError( void )
4044 GET_CURRENT_CONTEXT(ctx
);
4046 GLenum e
= ctx
->ErrorValue
;
4048 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL( ctx
, "glGetError", (GLenum
) 0);
4050 if (MESA_VERBOSE
& VERBOSE_API
)
4051 fprintf(stderr
, "glGetError <-- %s\n", gl_lookup_enum_by_nr(e
));
4053 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;