1 /* $Id: get.c,v 1.18 2000/04/07 16:27: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))
62 pixel_texgen_mode(const GLcontext
*ctx
)
64 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
65 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
73 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
85 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
87 GET_CURRENT_CONTEXT(ctx
);
89 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
90 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
91 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
93 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetBooleanv");
95 if (MESA_VERBOSE
& VERBOSE_API
)
96 fprintf(stderr
, "glGetBooleanv %s\n", gl_lookup_enum_by_nr(pname
));
99 case GL_ACCUM_RED_BITS
:
100 *params
= INT_TO_BOOL(ctx
->Visual
->AccumRedBits
);
102 case GL_ACCUM_GREEN_BITS
:
103 *params
= INT_TO_BOOL(ctx
->Visual
->AccumGreenBits
);
105 case GL_ACCUM_BLUE_BITS
:
106 *params
= INT_TO_BOOL(ctx
->Visual
->AccumBlueBits
);
108 case GL_ACCUM_ALPHA_BITS
:
109 *params
= INT_TO_BOOL(ctx
->Visual
->AccumAlphaBits
);
111 case GL_ACCUM_CLEAR_VALUE
:
112 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
113 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
114 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
115 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
118 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
121 *params
= INT_TO_BOOL(ctx
->Visual
->AlphaBits
);
124 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
127 *params
= ctx
->Color
.AlphaEnabled
;
129 case GL_ALPHA_TEST_FUNC
:
130 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
132 case GL_ALPHA_TEST_REF
:
133 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ 255.0);
135 case GL_ATTRIB_STACK_DEPTH
:
136 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
139 *params
= ctx
->Eval
.AutoNormal
;
142 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
145 *params
= ctx
->Color
.BlendEnabled
;
148 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
151 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
153 case GL_BLEND_SRC_RGB_EXT
:
154 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
156 case GL_BLEND_DST_RGB_EXT
:
157 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
159 case GL_BLEND_SRC_ALPHA_EXT
:
160 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
162 case GL_BLEND_DST_ALPHA_EXT
:
163 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
165 case GL_BLEND_EQUATION_EXT
:
166 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
168 case GL_BLEND_COLOR_EXT
:
169 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
170 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
171 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
172 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
175 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
178 *params
= INT_TO_BOOL( ctx
->Visual
->BlueBits
);
181 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
183 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
184 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
192 *params
= ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
194 case GL_COLOR_CLEAR_VALUE
:
195 params
[0] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[0]);
196 params
[1] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[1]);
197 params
[2] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[2]);
198 params
[3] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[3]);
200 case GL_COLOR_MATERIAL
:
201 *params
= ctx
->Light
.ColorMaterialEnabled
;
203 case GL_COLOR_MATERIAL_FACE
:
204 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
206 case GL_COLOR_MATERIAL_PARAMETER
:
207 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
209 case GL_COLOR_WRITEMASK
:
210 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
211 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
212 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
213 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
216 *params
= ctx
->Polygon
.CullFlag
;
218 case GL_CULL_FACE_MODE
:
219 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
221 case GL_CURRENT_COLOR
:
222 params
[0] = INT_TO_BOOL(ctx
->Current
.ByteColor
[0]);
223 params
[1] = INT_TO_BOOL(ctx
->Current
.ByteColor
[1]);
224 params
[2] = INT_TO_BOOL(ctx
->Current
.ByteColor
[2]);
225 params
[3] = INT_TO_BOOL(ctx
->Current
.ByteColor
[3]);
227 case GL_CURRENT_INDEX
:
228 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
230 case GL_CURRENT_NORMAL
:
231 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[0]);
232 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[1]);
233 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[2]);
235 case GL_CURRENT_RASTER_COLOR
:
236 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
237 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
238 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
239 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
241 case GL_CURRENT_RASTER_DISTANCE
:
242 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
244 case GL_CURRENT_RASTER_INDEX
:
245 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
247 case GL_CURRENT_RASTER_POSITION
:
248 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
249 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
250 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
251 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
253 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
254 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0]);
255 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1]);
256 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2]);
257 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3]);
259 case GL_CURRENT_RASTER_POSITION_VALID
:
260 *params
= ctx
->Current
.RasterPosValid
;
262 case GL_CURRENT_TEXTURE_COORDS
:
263 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][0]);
264 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][1]);
265 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][2]);
266 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][3]);
269 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
272 *params
= INT_TO_BOOL(ctx
->Visual
->DepthBits
);
274 case GL_DEPTH_CLEAR_VALUE
:
275 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
278 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
281 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
282 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
285 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
288 *params
= ctx
->Depth
.Test
;
290 case GL_DEPTH_WRITEMASK
:
291 *params
= ctx
->Depth
.Mask
;
294 *params
= ctx
->Color
.DitherFlag
;
296 case GL_DOUBLEBUFFER
:
297 *params
= ctx
->Visual
->DBflag
;
300 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
303 *params
= ctx
->Current
.EdgeFlag
;
305 case GL_FEEDBACK_BUFFER_SIZE
:
306 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
308 case GL_FEEDBACK_BUFFER_TYPE
:
309 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
312 *params
= ctx
->Fog
.Enabled
;
315 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
316 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
317 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
318 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
321 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
324 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
327 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
330 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
333 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
336 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
339 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
342 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
345 *params
= INT_TO_BOOL( ctx
->Visual
->GreenBits
);
348 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
351 *params
= INT_TO_BOOL( ctx
->Visual
->IndexBits
);
353 case GL_INDEX_CLEAR_VALUE
:
354 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
357 *params
= ctx
->Visual
->RGBAflag
? GL_FALSE
: GL_TRUE
;
359 case GL_INDEX_OFFSET
:
360 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
363 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
365 case GL_INDEX_WRITEMASK
:
366 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
376 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
379 *params
= ctx
->Light
.Enabled
;
381 case GL_LIGHT_MODEL_AMBIENT
:
382 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
383 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
384 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
385 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
387 case GL_LIGHT_MODEL_COLOR_CONTROL
:
388 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
390 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
391 *params
= ctx
->Light
.Model
.LocalViewer
;
393 case GL_LIGHT_MODEL_TWO_SIDE
:
394 *params
= ctx
->Light
.Model
.TwoSide
;
397 *params
= ctx
->Line
.SmoothFlag
;
399 case GL_LINE_SMOOTH_HINT
:
400 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
402 case GL_LINE_STIPPLE
:
403 *params
= ctx
->Line
.StippleFlag
;
405 case GL_LINE_STIPPLE_PATTERN
:
406 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
408 case GL_LINE_STIPPLE_REPEAT
:
409 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
412 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
414 case GL_LINE_WIDTH_GRANULARITY
:
415 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
417 case GL_LINE_WIDTH_RANGE
:
418 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
419 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
421 case GL_ALIASED_LINE_WIDTH_RANGE
:
422 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
423 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
426 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
429 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
432 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
433 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
435 case GL_INDEX_LOGIC_OP
:
436 *params
= ctx
->Color
.IndexLogicOpEnabled
;
438 case GL_COLOR_LOGIC_OP
:
439 *params
= ctx
->Color
.ColorLogicOpEnabled
;
441 case GL_LOGIC_OP_MODE
:
442 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
444 case GL_MAP1_COLOR_4
:
445 *params
= ctx
->Eval
.Map1Color4
;
447 case GL_MAP1_GRID_DOMAIN
:
448 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
449 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
451 case GL_MAP1_GRID_SEGMENTS
:
452 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
455 *params
= ctx
->Eval
.Map1Index
;
458 *params
= ctx
->Eval
.Map1Normal
;
460 case GL_MAP1_TEXTURE_COORD_1
:
461 *params
= ctx
->Eval
.Map1TextureCoord1
;
463 case GL_MAP1_TEXTURE_COORD_2
:
464 *params
= ctx
->Eval
.Map1TextureCoord2
;
466 case GL_MAP1_TEXTURE_COORD_3
:
467 *params
= ctx
->Eval
.Map1TextureCoord3
;
469 case GL_MAP1_TEXTURE_COORD_4
:
470 *params
= ctx
->Eval
.Map1TextureCoord4
;
472 case GL_MAP1_VERTEX_3
:
473 *params
= ctx
->Eval
.Map1Vertex3
;
475 case GL_MAP1_VERTEX_4
:
476 *params
= ctx
->Eval
.Map1Vertex4
;
478 case GL_MAP2_COLOR_4
:
479 *params
= ctx
->Eval
.Map2Color4
;
481 case GL_MAP2_GRID_DOMAIN
:
482 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
483 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
484 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
485 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
487 case GL_MAP2_GRID_SEGMENTS
:
488 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
489 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
492 *params
= ctx
->Eval
.Map2Index
;
495 *params
= ctx
->Eval
.Map2Normal
;
497 case GL_MAP2_TEXTURE_COORD_1
:
498 *params
= ctx
->Eval
.Map2TextureCoord1
;
500 case GL_MAP2_TEXTURE_COORD_2
:
501 *params
= ctx
->Eval
.Map2TextureCoord2
;
503 case GL_MAP2_TEXTURE_COORD_3
:
504 *params
= ctx
->Eval
.Map2TextureCoord3
;
506 case GL_MAP2_TEXTURE_COORD_4
:
507 *params
= ctx
->Eval
.Map2TextureCoord4
;
509 case GL_MAP2_VERTEX_3
:
510 *params
= ctx
->Eval
.Map2Vertex3
;
512 case GL_MAP2_VERTEX_4
:
513 *params
= ctx
->Eval
.Map2Vertex4
;
516 *params
= ctx
->Pixel
.MapColorFlag
;
519 *params
= ctx
->Pixel
.MapStencilFlag
;
522 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
524 case GL_MAX_ATTRIB_STACK_DEPTH
:
525 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
527 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
528 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
530 case GL_MAX_CLIP_PLANES
:
531 *params
= INT_TO_BOOL(MAX_CLIP_PLANES
);
533 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
534 *params
= INT_TO_BOOL(VB_MAX
);
536 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
537 *params
= INT_TO_BOOL(VB_MAX
);
539 case GL_MAX_EVAL_ORDER
:
540 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
543 *params
= INT_TO_BOOL(MAX_LIGHTS
);
545 case GL_MAX_LIST_NESTING
:
546 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
548 case GL_MAX_MODELVIEW_STACK_DEPTH
:
549 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
551 case GL_MAX_NAME_STACK_DEPTH
:
552 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
554 case GL_MAX_PIXEL_MAP_TABLE
:
555 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
557 case GL_MAX_PROJECTION_STACK_DEPTH
:
558 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
560 case GL_MAX_TEXTURE_SIZE
:
561 case GL_MAX_3D_TEXTURE_SIZE
:
562 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureSize
);
564 case GL_MAX_TEXTURE_STACK_DEPTH
:
565 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
567 case GL_MAX_VIEWPORT_DIMS
:
568 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
569 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
571 case GL_MODELVIEW_MATRIX
:
573 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelView
.m
[i
]);
576 case GL_MODELVIEW_STACK_DEPTH
:
577 *params
= INT_TO_BOOL(ctx
->ModelViewStackDepth
+ 1);
579 case GL_NAME_STACK_DEPTH
:
580 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
583 *params
= ctx
->Transform
.Normalize
;
585 case GL_PACK_ALIGNMENT
:
586 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
588 case GL_PACK_LSB_FIRST
:
589 *params
= ctx
->Pack
.LsbFirst
;
591 case GL_PACK_ROW_LENGTH
:
592 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
594 case GL_PACK_SKIP_PIXELS
:
595 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
597 case GL_PACK_SKIP_ROWS
:
598 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
600 case GL_PACK_SWAP_BYTES
:
601 *params
= ctx
->Pack
.SwapBytes
;
603 case GL_PACK_SKIP_IMAGES_EXT
:
604 *params
= ctx
->Pack
.SkipImages
;
606 case GL_PACK_IMAGE_HEIGHT_EXT
:
607 *params
= ctx
->Pack
.ImageHeight
;
609 case GL_PERSPECTIVE_CORRECTION_HINT
:
610 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
612 case GL_PIXEL_MAP_A_TO_A_SIZE
:
613 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
615 case GL_PIXEL_MAP_B_TO_B_SIZE
:
616 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
618 case GL_PIXEL_MAP_G_TO_G_SIZE
:
619 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
621 case GL_PIXEL_MAP_I_TO_A_SIZE
:
622 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
624 case GL_PIXEL_MAP_I_TO_B_SIZE
:
625 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
627 case GL_PIXEL_MAP_I_TO_G_SIZE
:
628 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
630 case GL_PIXEL_MAP_I_TO_I_SIZE
:
631 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
633 case GL_PIXEL_MAP_I_TO_R_SIZE
:
634 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
636 case GL_PIXEL_MAP_R_TO_R_SIZE
:
637 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
639 case GL_PIXEL_MAP_S_TO_S_SIZE
:
640 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
643 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
645 case GL_POINT_SIZE_GRANULARITY
:
646 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
648 case GL_POINT_SIZE_RANGE
:
649 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
650 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
652 case GL_ALIASED_POINT_SIZE_RANGE
:
653 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
654 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
656 case GL_POINT_SMOOTH
:
657 *params
= ctx
->Point
.SmoothFlag
;
659 case GL_POINT_SMOOTH_HINT
:
660 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
662 case GL_POINT_SIZE_MIN_EXT
:
663 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
665 case GL_POINT_SIZE_MAX_EXT
:
666 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
668 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
669 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
671 case GL_DISTANCE_ATTENUATION_EXT
:
672 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
673 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
674 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
676 case GL_POLYGON_MODE
:
677 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
678 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
680 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
681 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
683 case GL_POLYGON_OFFSET_FACTOR
:
684 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
686 case GL_POLYGON_OFFSET_UNITS
:
687 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
689 case GL_POLYGON_SMOOTH
:
690 *params
= ctx
->Polygon
.SmoothFlag
;
692 case GL_POLYGON_SMOOTH_HINT
:
693 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
695 case GL_POLYGON_STIPPLE
:
696 *params
= ctx
->Polygon
.StippleFlag
;
698 case GL_PROJECTION_MATRIX
:
700 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrix
.m
[i
]);
703 case GL_PROJECTION_STACK_DEPTH
:
704 *params
= INT_TO_BOOL(ctx
->ProjectionStackDepth
+ 1);
707 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
710 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
713 *params
= INT_TO_BOOL( ctx
->Visual
->RedBits
);
716 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
719 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
722 *params
= ctx
->Visual
->RGBAflag
;
725 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
726 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
727 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
728 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
730 case GL_SCISSOR_TEST
:
731 *params
= ctx
->Scissor
.Enabled
;
733 case GL_SELECTION_BUFFER_SIZE
:
734 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
737 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
739 case GL_SHARED_TEXTURE_PALETTE_EXT
:
740 *params
= ctx
->Texture
.SharedPalette
;
742 case GL_STENCIL_BITS
:
743 *params
= INT_TO_BOOL(ctx
->Visual
->StencilBits
);
745 case GL_STENCIL_CLEAR_VALUE
:
746 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
748 case GL_STENCIL_FAIL
:
749 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
);
751 case GL_STENCIL_FUNC
:
752 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
);
754 case GL_STENCIL_PASS_DEPTH_FAIL
:
755 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
);
757 case GL_STENCIL_PASS_DEPTH_PASS
:
758 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
);
761 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
);
763 case GL_STENCIL_TEST
:
764 *params
= ctx
->Stencil
.Enabled
;
766 case GL_STENCIL_VALUE_MASK
:
767 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
);
769 case GL_STENCIL_WRITEMASK
:
770 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
);
773 *params
= ctx
->Visual
->StereoFlag
;
775 case GL_SUBPIXEL_BITS
:
776 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
779 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
782 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
785 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
787 case GL_TEXTURE_BINDING_1D
:
788 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[1]->Name
);
790 case GL_TEXTURE_BINDING_2D
:
791 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[2]->Name
);
793 case GL_TEXTURE_BINDING_3D
:
794 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[3]->Name
);
796 case GL_TEXTURE_ENV_COLOR
:
798 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
799 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
800 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
801 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
804 case GL_TEXTURE_ENV_MODE
:
805 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
807 case GL_TEXTURE_GEN_S
:
808 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
810 case GL_TEXTURE_GEN_T
:
811 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
813 case GL_TEXTURE_GEN_R
:
814 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
816 case GL_TEXTURE_GEN_Q
:
817 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
819 case GL_TEXTURE_MATRIX
:
822 FLOAT_TO_BOOL(ctx
->TextureMatrix
[texTransformUnit
].m
[i
]);
825 case GL_TEXTURE_STACK_DEPTH
:
826 *params
= INT_TO_BOOL(ctx
->TextureStackDepth
[texTransformUnit
] + 1);
828 case GL_UNPACK_ALIGNMENT
:
829 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
831 case GL_UNPACK_LSB_FIRST
:
832 *params
= ctx
->Unpack
.LsbFirst
;
834 case GL_UNPACK_ROW_LENGTH
:
835 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
837 case GL_UNPACK_SKIP_PIXELS
:
838 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
840 case GL_UNPACK_SKIP_ROWS
:
841 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
843 case GL_UNPACK_SWAP_BYTES
:
844 *params
= ctx
->Unpack
.SwapBytes
;
846 case GL_UNPACK_SKIP_IMAGES_EXT
:
847 *params
= ctx
->Unpack
.SkipImages
;
849 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
850 *params
= ctx
->Unpack
.ImageHeight
;
853 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
854 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
855 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
856 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
859 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
862 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
864 case GL_VERTEX_ARRAY
:
865 *params
= ctx
->Array
.Vertex
.Enabled
;
867 case GL_VERTEX_ARRAY_SIZE
:
868 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
870 case GL_VERTEX_ARRAY_TYPE
:
871 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
873 case GL_VERTEX_ARRAY_STRIDE
:
874 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
876 case GL_VERTEX_ARRAY_COUNT_EXT
:
877 *params
= INT_TO_BOOL(0);
879 case GL_NORMAL_ARRAY
:
880 *params
= ctx
->Array
.Normal
.Enabled
;
882 case GL_NORMAL_ARRAY_TYPE
:
883 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
885 case GL_NORMAL_ARRAY_STRIDE
:
886 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
888 case GL_NORMAL_ARRAY_COUNT_EXT
:
889 *params
= INT_TO_BOOL(0);
892 *params
= ctx
->Array
.Color
.Enabled
;
894 case GL_COLOR_ARRAY_SIZE
:
895 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
897 case GL_COLOR_ARRAY_TYPE
:
898 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
900 case GL_COLOR_ARRAY_STRIDE
:
901 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
903 case GL_COLOR_ARRAY_COUNT_EXT
:
904 *params
= INT_TO_BOOL(0);
907 *params
= ctx
->Array
.Index
.Enabled
;
909 case GL_INDEX_ARRAY_TYPE
:
910 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
912 case GL_INDEX_ARRAY_STRIDE
:
913 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
915 case GL_INDEX_ARRAY_COUNT_EXT
:
916 *params
= INT_TO_BOOL(0);
918 case GL_TEXTURE_COORD_ARRAY
:
919 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
921 case GL_TEXTURE_COORD_ARRAY_SIZE
:
922 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
924 case GL_TEXTURE_COORD_ARRAY_TYPE
:
925 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
927 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
928 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
930 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
931 *params
= INT_TO_BOOL(0);
933 case GL_EDGE_FLAG_ARRAY
:
934 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
936 case GL_EDGE_FLAG_ARRAY_STRIDE
:
937 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
940 case GL_MAX_TEXTURE_UNITS_ARB
:
941 *params
= ctx
->Const
.MaxTextureUnits
;
943 case GL_ACTIVE_TEXTURE_ARB
:
944 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
946 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
947 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
950 /* GL_PGI_misc_hints */
951 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
952 *params
= ENUM_TO_BOOL(GL_NICEST
);
954 case GL_STRICT_LIGHTING_HINT_PGI
:
955 *params
= ENUM_TO_BOOL(ctx
->Hint
.StrictLighting
);
957 case GL_STRICT_SCISSOR_HINT_PGI
:
958 case GL_FULL_STIPPLE_HINT_PGI
:
959 *params
= ENUM_TO_BOOL(GL_TRUE
);
961 case GL_CONSERVE_MEMORY_HINT_PGI
:
962 *params
= ENUM_TO_BOOL(GL_FALSE
);
964 case GL_ALWAYS_FAST_HINT_PGI
:
965 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
966 ctx
->Hint
.AllowDrawSpn
== GL_FALSE
&&
967 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
969 case GL_ALWAYS_SOFT_HINT_PGI
:
970 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
971 ctx
->Hint
.AllowDrawSpn
== GL_TRUE
&&
972 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
974 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
975 *params
= (GLboolean
) GL_TRUE
;
977 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
978 *params
= (GLboolean
) ctx
->Hint
.AllowDrawWin
;
980 case GL_ALLOW_DRAW_SPN_HINT_PGI
:
981 *params
= (GLboolean
) ctx
->Hint
.AllowDrawSpn
;
983 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
984 *params
= (GLboolean
) ctx
->Hint
.AllowDrawMem
;
986 case GL_CLIP_NEAR_HINT_PGI
:
987 case GL_CLIP_FAR_HINT_PGI
:
988 *params
= ENUM_TO_BOOL(GL_TRUE
);
990 case GL_WIDE_LINE_HINT_PGI
:
991 *params
= ENUM_TO_BOOL(GL_DONT_CARE
);
993 case GL_BACK_NORMALS_HINT_PGI
:
994 *params
= ENUM_TO_BOOL(GL_TRUE
);
996 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
1000 /* GL_EXT_compiled_vertex_array */
1001 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1002 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1004 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1005 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1008 /* GL_ARB_transpose_matrix */
1009 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1010 /* don't have a color matrix */
1012 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1016 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
1017 for (i
=0;i
<16;i
++) {
1018 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1022 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1026 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
1027 for (i
=0;i
<16;i
++) {
1028 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1032 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1036 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
1037 for (i
=0;i
<16;i
++) {
1038 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1043 /* GL_HP_occlusion_test */
1044 case GL_OCCLUSION_TEST_HP
:
1045 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
1046 *params
= ctx
->Depth
.OcclusionTest
;
1049 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1052 case GL_OCCLUSION_TEST_RESULT_HP
:
1053 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
1054 if (ctx
->Depth
.OcclusionTest
)
1055 *params
= ctx
->OcclusionResult
;
1057 *params
= ctx
->OcclusionResultSaved
;
1058 /* reset flag now */
1059 ctx
->OcclusionResult
= GL_FALSE
;
1060 ctx
->OcclusionResultSaved
= GL_FALSE
;
1063 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1067 /* GL_SGIS_pixel_texture */
1068 case GL_PIXEL_TEXTURE_SGIS
:
1069 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1072 /* GL_SGIX_pixel_texture */
1073 case GL_PIXEL_TEX_GEN_SGIX
:
1074 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1076 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1077 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1081 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1089 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1091 GET_CURRENT_CONTEXT(ctx
);
1093 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1094 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
1095 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1097 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetDoublev");
1099 if (MESA_VERBOSE
& VERBOSE_API
)
1100 fprintf(stderr
, "glGetDoublev %s\n", gl_lookup_enum_by_nr(pname
));
1103 case GL_ACCUM_RED_BITS
:
1104 *params
= (GLdouble
) ctx
->Visual
->AccumRedBits
;
1106 case GL_ACCUM_GREEN_BITS
:
1107 *params
= (GLdouble
) ctx
->Visual
->AccumGreenBits
;
1109 case GL_ACCUM_BLUE_BITS
:
1110 *params
= (GLdouble
) ctx
->Visual
->AccumBlueBits
;
1112 case GL_ACCUM_ALPHA_BITS
:
1113 *params
= (GLdouble
) ctx
->Visual
->AccumAlphaBits
;
1115 case GL_ACCUM_CLEAR_VALUE
:
1116 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1117 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1118 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1119 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1122 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1125 *params
= (GLdouble
) ctx
->Visual
->AlphaBits
;
1127 case GL_ALPHA_SCALE
:
1128 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1131 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1133 case GL_ALPHA_TEST_FUNC
:
1134 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1136 case GL_ALPHA_TEST_REF
:
1137 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ 255.0;
1139 case GL_ATTRIB_STACK_DEPTH
:
1140 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1142 case GL_AUTO_NORMAL
:
1143 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1145 case GL_AUX_BUFFERS
:
1146 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1149 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1152 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1155 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1157 case GL_BLEND_SRC_RGB_EXT
:
1158 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1160 case GL_BLEND_DST_RGB_EXT
:
1161 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1163 case GL_BLEND_SRC_ALPHA_EXT
:
1164 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1166 case GL_BLEND_DST_ALPHA_EXT
:
1167 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1169 case GL_BLEND_EQUATION_EXT
:
1170 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1172 case GL_BLEND_COLOR_EXT
:
1173 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1174 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1175 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1176 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1179 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1182 *params
= (GLdouble
) ctx
->Visual
->BlueBits
;
1185 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1187 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1188 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1190 case GL_CLIP_PLANE0
:
1191 case GL_CLIP_PLANE1
:
1192 case GL_CLIP_PLANE2
:
1193 case GL_CLIP_PLANE3
:
1194 case GL_CLIP_PLANE4
:
1195 case GL_CLIP_PLANE5
:
1196 *params
= (GLdouble
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
1198 case GL_COLOR_CLEAR_VALUE
:
1199 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1200 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1201 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1202 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1204 case GL_COLOR_MATERIAL
:
1205 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1207 case GL_COLOR_MATERIAL_FACE
:
1208 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1210 case GL_COLOR_MATERIAL_PARAMETER
:
1211 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1213 case GL_COLOR_WRITEMASK
:
1214 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1215 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1216 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1217 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1220 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1222 case GL_CULL_FACE_MODE
:
1223 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1225 case GL_CURRENT_COLOR
:
1226 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.ByteColor
[0]);
1227 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.ByteColor
[1]);
1228 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.ByteColor
[2]);
1229 params
[3] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.ByteColor
[3]);
1231 case GL_CURRENT_INDEX
:
1232 *params
= (GLdouble
) ctx
->Current
.Index
;
1234 case GL_CURRENT_NORMAL
:
1235 params
[0] = (GLdouble
) ctx
->Current
.Normal
[0];
1236 params
[1] = (GLdouble
) ctx
->Current
.Normal
[1];
1237 params
[2] = (GLdouble
) ctx
->Current
.Normal
[2];
1239 case GL_CURRENT_RASTER_COLOR
:
1240 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1241 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1242 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1243 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1245 case GL_CURRENT_RASTER_DISTANCE
:
1246 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1248 case GL_CURRENT_RASTER_INDEX
:
1249 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1251 case GL_CURRENT_RASTER_POSITION
:
1252 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1253 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1254 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1255 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1257 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1258 params
[0] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
1259 params
[1] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
1260 params
[2] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
1261 params
[3] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
1263 case GL_CURRENT_RASTER_POSITION_VALID
:
1264 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1266 case GL_CURRENT_TEXTURE_COORDS
:
1267 params
[0] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
1268 params
[1] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
1269 params
[2] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
1270 params
[3] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
1273 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1276 *params
= (GLdouble
) ctx
->Visual
->DepthBits
;
1278 case GL_DEPTH_CLEAR_VALUE
:
1279 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1282 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1284 case GL_DEPTH_RANGE
:
1285 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1286 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1288 case GL_DEPTH_SCALE
:
1289 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1292 *params
= (GLdouble
) ctx
->Depth
.Test
;
1294 case GL_DEPTH_WRITEMASK
:
1295 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1298 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1300 case GL_DOUBLEBUFFER
:
1301 *params
= (GLdouble
) ctx
->Visual
->DBflag
;
1303 case GL_DRAW_BUFFER
:
1304 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1307 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1309 case GL_FEEDBACK_BUFFER_SIZE
:
1310 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1312 case GL_FEEDBACK_BUFFER_TYPE
:
1313 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1316 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1319 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1320 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1321 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1322 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1324 case GL_FOG_DENSITY
:
1325 *params
= (GLdouble
) ctx
->Fog
.Density
;
1328 *params
= (GLdouble
) ctx
->Fog
.End
;
1331 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1334 *params
= (GLdouble
) ctx
->Fog
.Index
;
1337 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1340 *params
= (GLdouble
) ctx
->Fog
.Start
;
1343 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1346 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1349 *params
= (GLdouble
) ctx
->Visual
->GreenBits
;
1351 case GL_GREEN_SCALE
:
1352 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1355 *params
= (GLdouble
) ctx
->Visual
->IndexBits
;
1357 case GL_INDEX_CLEAR_VALUE
:
1358 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1361 *params
= ctx
->Visual
->RGBAflag
? 0.0 : 1.0;
1363 case GL_INDEX_OFFSET
:
1364 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1366 case GL_INDEX_SHIFT
:
1367 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1369 case GL_INDEX_WRITEMASK
:
1370 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1380 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1383 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1385 case GL_LIGHT_MODEL_AMBIENT
:
1386 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1387 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1388 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1389 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1391 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1392 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1394 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1395 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1397 case GL_LIGHT_MODEL_TWO_SIDE
:
1398 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1400 case GL_LINE_SMOOTH
:
1401 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1403 case GL_LINE_SMOOTH_HINT
:
1404 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1406 case GL_LINE_STIPPLE
:
1407 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1409 case GL_LINE_STIPPLE_PATTERN
:
1410 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1412 case GL_LINE_STIPPLE_REPEAT
:
1413 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1416 *params
= (GLdouble
) ctx
->Line
.Width
;
1418 case GL_LINE_WIDTH_GRANULARITY
:
1419 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1421 case GL_LINE_WIDTH_RANGE
:
1422 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1423 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1425 case GL_ALIASED_LINE_WIDTH_RANGE
:
1426 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1427 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1430 *params
= (GLdouble
) ctx
->List
.ListBase
;
1433 *params
= (GLdouble
) ctx
->CurrentListNum
;
1436 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1437 : ENUM_TO_DOUBLE(GL_COMPILE
);
1439 case GL_INDEX_LOGIC_OP
:
1440 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1442 case GL_COLOR_LOGIC_OP
:
1443 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1445 case GL_LOGIC_OP_MODE
:
1446 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1448 case GL_MAP1_COLOR_4
:
1449 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1451 case GL_MAP1_GRID_DOMAIN
:
1452 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1453 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1455 case GL_MAP1_GRID_SEGMENTS
:
1456 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1459 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1461 case GL_MAP1_NORMAL
:
1462 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1464 case GL_MAP1_TEXTURE_COORD_1
:
1465 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1467 case GL_MAP1_TEXTURE_COORD_2
:
1468 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1470 case GL_MAP1_TEXTURE_COORD_3
:
1471 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1473 case GL_MAP1_TEXTURE_COORD_4
:
1474 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1476 case GL_MAP1_VERTEX_3
:
1477 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1479 case GL_MAP1_VERTEX_4
:
1480 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1482 case GL_MAP2_COLOR_4
:
1483 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1485 case GL_MAP2_GRID_DOMAIN
:
1486 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1487 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1488 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1489 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1491 case GL_MAP2_GRID_SEGMENTS
:
1492 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1493 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1496 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1498 case GL_MAP2_NORMAL
:
1499 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1501 case GL_MAP2_TEXTURE_COORD_1
:
1502 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1504 case GL_MAP2_TEXTURE_COORD_2
:
1505 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1507 case GL_MAP2_TEXTURE_COORD_3
:
1508 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1510 case GL_MAP2_TEXTURE_COORD_4
:
1511 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1513 case GL_MAP2_VERTEX_3
:
1514 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1516 case GL_MAP2_VERTEX_4
:
1517 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1520 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1522 case GL_MAP_STENCIL
:
1523 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1525 case GL_MATRIX_MODE
:
1526 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1528 case GL_MAX_ATTRIB_STACK_DEPTH
:
1529 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1531 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1532 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1534 case GL_MAX_CLIP_PLANES
:
1535 *params
= (GLdouble
) MAX_CLIP_PLANES
;
1537 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1538 *params
= (GLdouble
) VB_MAX
;
1540 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1541 *params
= (GLdouble
) VB_MAX
;
1543 case GL_MAX_EVAL_ORDER
:
1544 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1547 *params
= (GLdouble
) MAX_LIGHTS
;
1549 case GL_MAX_LIST_NESTING
:
1550 *params
= (GLdouble
) MAX_LIST_NESTING
;
1552 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1553 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1555 case GL_MAX_NAME_STACK_DEPTH
:
1556 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1558 case GL_MAX_PIXEL_MAP_TABLE
:
1559 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1561 case GL_MAX_PROJECTION_STACK_DEPTH
:
1562 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1564 case GL_MAX_TEXTURE_SIZE
:
1565 case GL_MAX_3D_TEXTURE_SIZE
:
1566 *params
= (GLdouble
) ctx
->Const
.MaxTextureSize
;
1568 case GL_MAX_TEXTURE_STACK_DEPTH
:
1569 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1571 case GL_MAX_VIEWPORT_DIMS
:
1572 params
[0] = (GLdouble
) MAX_WIDTH
;
1573 params
[1] = (GLdouble
) MAX_HEIGHT
;
1575 case GL_MODELVIEW_MATRIX
:
1576 for (i
=0;i
<16;i
++) {
1577 params
[i
] = (GLdouble
) ctx
->ModelView
.m
[i
];
1580 case GL_MODELVIEW_STACK_DEPTH
:
1581 *params
= (GLdouble
) (ctx
->ModelViewStackDepth
+ 1);
1583 case GL_NAME_STACK_DEPTH
:
1584 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1587 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1589 case GL_PACK_ALIGNMENT
:
1590 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1592 case GL_PACK_LSB_FIRST
:
1593 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1595 case GL_PACK_ROW_LENGTH
:
1596 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1598 case GL_PACK_SKIP_PIXELS
:
1599 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1601 case GL_PACK_SKIP_ROWS
:
1602 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1604 case GL_PACK_SWAP_BYTES
:
1605 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
1607 case GL_PACK_SKIP_IMAGES_EXT
:
1608 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
1610 case GL_PACK_IMAGE_HEIGHT_EXT
:
1611 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
1613 case GL_PERSPECTIVE_CORRECTION_HINT
:
1614 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
1616 case GL_PIXEL_MAP_A_TO_A_SIZE
:
1617 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
1619 case GL_PIXEL_MAP_B_TO_B_SIZE
:
1620 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
1622 case GL_PIXEL_MAP_G_TO_G_SIZE
:
1623 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
1625 case GL_PIXEL_MAP_I_TO_A_SIZE
:
1626 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
1628 case GL_PIXEL_MAP_I_TO_B_SIZE
:
1629 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
1631 case GL_PIXEL_MAP_I_TO_G_SIZE
:
1632 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
1634 case GL_PIXEL_MAP_I_TO_I_SIZE
:
1635 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
1637 case GL_PIXEL_MAP_I_TO_R_SIZE
:
1638 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
1640 case GL_PIXEL_MAP_R_TO_R_SIZE
:
1641 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
1643 case GL_PIXEL_MAP_S_TO_S_SIZE
:
1644 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
1647 *params
= (GLdouble
) ctx
->Point
.Size
;
1649 case GL_POINT_SIZE_GRANULARITY
:
1650 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
1652 case GL_POINT_SIZE_RANGE
:
1653 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
1654 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
1656 case GL_ALIASED_POINT_SIZE_RANGE
:
1657 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
1658 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
1660 case GL_POINT_SMOOTH
:
1661 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
1663 case GL_POINT_SMOOTH_HINT
:
1664 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
1666 case GL_POINT_SIZE_MIN_EXT
:
1667 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
1669 case GL_POINT_SIZE_MAX_EXT
:
1670 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
1672 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
1673 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
1675 case GL_DISTANCE_ATTENUATION_EXT
:
1676 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
1677 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
1678 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
1680 case GL_POLYGON_MODE
:
1681 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
1682 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
1684 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
1685 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1687 case GL_POLYGON_OFFSET_FACTOR
:
1688 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
1690 case GL_POLYGON_OFFSET_UNITS
:
1691 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1693 case GL_POLYGON_SMOOTH
:
1694 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
1696 case GL_POLYGON_SMOOTH_HINT
:
1697 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
1699 case GL_POLYGON_STIPPLE
:
1700 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
1702 case GL_PROJECTION_MATRIX
:
1703 for (i
=0;i
<16;i
++) {
1704 params
[i
] = (GLdouble
) ctx
->ProjectionMatrix
.m
[i
];
1707 case GL_PROJECTION_STACK_DEPTH
:
1708 *params
= (GLdouble
) (ctx
->ProjectionStackDepth
+ 1);
1710 case GL_READ_BUFFER
:
1711 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
1714 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
1717 *params
= (GLdouble
) ctx
->Visual
->RedBits
;
1720 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
1722 case GL_RENDER_MODE
:
1723 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
1726 *params
= (GLdouble
) ctx
->Visual
->RGBAflag
;
1728 case GL_SCISSOR_BOX
:
1729 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
1730 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
1731 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
1732 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
1734 case GL_SCISSOR_TEST
:
1735 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
1737 case GL_SELECTION_BUFFER_SIZE
:
1738 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
1740 case GL_SHADE_MODEL
:
1741 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
1743 case GL_SHARED_TEXTURE_PALETTE_EXT
:
1744 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
1746 case GL_STENCIL_BITS
:
1747 *params
= (GLdouble
) ctx
->Visual
->StencilBits
;
1749 case GL_STENCIL_CLEAR_VALUE
:
1750 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
1752 case GL_STENCIL_FAIL
:
1753 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
1755 case GL_STENCIL_FUNC
:
1756 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
1758 case GL_STENCIL_PASS_DEPTH_FAIL
:
1759 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
1761 case GL_STENCIL_PASS_DEPTH_PASS
:
1762 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
1764 case GL_STENCIL_REF
:
1765 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
1767 case GL_STENCIL_TEST
:
1768 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
1770 case GL_STENCIL_VALUE_MASK
:
1771 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
1773 case GL_STENCIL_WRITEMASK
:
1774 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
1777 *params
= (GLdouble
) ctx
->Visual
->StereoFlag
;
1779 case GL_SUBPIXEL_BITS
:
1780 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
1783 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
1786 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
1789 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
1791 case GL_TEXTURE_BINDING_1D
:
1792 *params
= (GLdouble
) textureUnit
->CurrentD
[1]->Name
;
1794 case GL_TEXTURE_BINDING_2D
:
1795 *params
= (GLdouble
) textureUnit
->CurrentD
[2]->Name
;
1797 case GL_TEXTURE_BINDING_3D
:
1798 *params
= (GLdouble
) textureUnit
->CurrentD
[3]->Name
;
1800 case GL_TEXTURE_ENV_COLOR
:
1801 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
1802 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
1803 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
1804 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
1806 case GL_TEXTURE_ENV_MODE
:
1807 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
1809 case GL_TEXTURE_GEN_S
:
1810 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
1812 case GL_TEXTURE_GEN_T
:
1813 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
1815 case GL_TEXTURE_GEN_R
:
1816 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
1818 case GL_TEXTURE_GEN_Q
:
1819 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
1821 case GL_TEXTURE_MATRIX
:
1822 for (i
=0;i
<16;i
++) {
1823 params
[i
] = (GLdouble
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
1826 case GL_TEXTURE_STACK_DEPTH
:
1827 *params
= (GLdouble
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
1829 case GL_UNPACK_ALIGNMENT
:
1830 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
1832 case GL_UNPACK_LSB_FIRST
:
1833 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
1835 case GL_UNPACK_ROW_LENGTH
:
1836 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
1838 case GL_UNPACK_SKIP_PIXELS
:
1839 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
1841 case GL_UNPACK_SKIP_ROWS
:
1842 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
1844 case GL_UNPACK_SWAP_BYTES
:
1845 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
1847 case GL_UNPACK_SKIP_IMAGES_EXT
:
1848 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
1850 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
1851 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
1854 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
1855 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
1856 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
1857 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
1860 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
1863 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
1865 case GL_VERTEX_ARRAY
:
1866 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
1868 case GL_VERTEX_ARRAY_SIZE
:
1869 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
1871 case GL_VERTEX_ARRAY_TYPE
:
1872 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
1874 case GL_VERTEX_ARRAY_STRIDE
:
1875 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
1877 case GL_VERTEX_ARRAY_COUNT_EXT
:
1880 case GL_NORMAL_ARRAY
:
1881 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
1883 case GL_NORMAL_ARRAY_TYPE
:
1884 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
1886 case GL_NORMAL_ARRAY_STRIDE
:
1887 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
1889 case GL_NORMAL_ARRAY_COUNT_EXT
:
1892 case GL_COLOR_ARRAY
:
1893 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
1895 case GL_COLOR_ARRAY_SIZE
:
1896 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
1898 case GL_COLOR_ARRAY_TYPE
:
1899 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
1901 case GL_COLOR_ARRAY_STRIDE
:
1902 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
1904 case GL_COLOR_ARRAY_COUNT_EXT
:
1907 case GL_INDEX_ARRAY
:
1908 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
1910 case GL_INDEX_ARRAY_TYPE
:
1911 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
1913 case GL_INDEX_ARRAY_STRIDE
:
1914 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
1916 case GL_INDEX_ARRAY_COUNT_EXT
:
1919 case GL_TEXTURE_COORD_ARRAY
:
1920 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
1922 case GL_TEXTURE_COORD_ARRAY_SIZE
:
1923 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
1925 case GL_TEXTURE_COORD_ARRAY_TYPE
:
1926 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
1928 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
1929 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
1931 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
1934 case GL_EDGE_FLAG_ARRAY
:
1935 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
1937 case GL_EDGE_FLAG_ARRAY_STRIDE
:
1938 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
1940 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1944 case GL_MAX_TEXTURE_UNITS_ARB
:
1945 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
1947 case GL_ACTIVE_TEXTURE_ARB
:
1948 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1950 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1951 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1955 /* GL_PGI_misc_hints */
1956 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
1957 *params
= ENUM_TO_DOUBLE(GL_NICEST
);
1959 case GL_STRICT_LIGHTING_HINT_PGI
:
1960 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.StrictLighting
);
1962 case GL_STRICT_SCISSOR_HINT_PGI
:
1963 case GL_FULL_STIPPLE_HINT_PGI
:
1964 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
1966 case GL_CONSERVE_MEMORY_HINT_PGI
:
1967 *params
= ENUM_TO_DOUBLE(GL_FALSE
);
1969 case GL_ALWAYS_FAST_HINT_PGI
:
1970 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1971 ctx
->Hint
.AllowDrawSpn
== GL_FALSE
&&
1972 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
1974 case GL_ALWAYS_SOFT_HINT_PGI
:
1975 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1976 ctx
->Hint
.AllowDrawSpn
== GL_TRUE
&&
1977 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
1979 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
1980 *params
= (GLdouble
) GL_TRUE
;
1982 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
1983 *params
= (GLdouble
) ctx
->Hint
.AllowDrawWin
;
1985 case GL_ALLOW_DRAW_SPN_HINT_PGI
:
1986 *params
= (GLdouble
) ctx
->Hint
.AllowDrawSpn
;
1988 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
1989 *params
= (GLdouble
) ctx
->Hint
.AllowDrawMem
;
1991 case GL_CLIP_NEAR_HINT_PGI
:
1992 case GL_CLIP_FAR_HINT_PGI
:
1993 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
1995 case GL_WIDE_LINE_HINT_PGI
:
1996 *params
= ENUM_TO_DOUBLE(GL_DONT_CARE
);
1998 case GL_BACK_NORMALS_HINT_PGI
:
1999 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2001 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
2005 /* GL_EXT_compiled_vertex_array */
2006 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2007 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2009 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2010 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2013 /* GL_ARB_transpose_matrix */
2014 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2015 /* don't have a color matrix */
2017 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2021 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
2022 for (i
=0;i
<16;i
++) {
2023 params
[i
] = (GLdouble
) tm
[i
];
2027 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2031 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
2032 for (i
=0;i
<16;i
++) {
2033 params
[i
] = (GLdouble
) tm
[i
];
2037 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2041 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
2042 for (i
=0;i
<16;i
++) {
2043 params
[i
] = (GLdouble
) tm
[i
];
2048 /* GL_HP_occlusion_test */
2049 case GL_OCCLUSION_TEST_HP
:
2050 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
2051 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2054 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2057 case GL_OCCLUSION_TEST_RESULT_HP
:
2058 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
2059 if (ctx
->Depth
.OcclusionTest
)
2060 *params
= (GLdouble
) ctx
->OcclusionResult
;
2062 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2063 /* reset flag now */
2064 ctx
->OcclusionResult
= GL_FALSE
;
2065 ctx
->OcclusionResultSaved
= GL_FALSE
;
2068 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2072 /* GL_SGIS_pixel_texture */
2073 case GL_PIXEL_TEXTURE_SGIS
:
2074 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2077 /* GL_SGIX_pixel_texture */
2078 case GL_PIXEL_TEX_GEN_SGIX
:
2079 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2081 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2082 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2086 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2094 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2096 GET_CURRENT_CONTEXT(ctx
);
2098 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2099 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
2100 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2102 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetFloatv");
2104 if (MESA_VERBOSE
& VERBOSE_API
)
2105 fprintf(stderr
, "glGetFloatv %s\n", gl_lookup_enum_by_nr(pname
));
2108 case GL_ACCUM_RED_BITS
:
2109 *params
= (GLfloat
) ctx
->Visual
->AccumRedBits
;
2111 case GL_ACCUM_GREEN_BITS
:
2112 *params
= (GLfloat
) ctx
->Visual
->AccumGreenBits
;
2114 case GL_ACCUM_BLUE_BITS
:
2115 *params
= (GLfloat
) ctx
->Visual
->AccumBlueBits
;
2117 case GL_ACCUM_ALPHA_BITS
:
2118 *params
= (GLfloat
) ctx
->Visual
->AccumAlphaBits
;
2120 case GL_ACCUM_CLEAR_VALUE
:
2121 params
[0] = ctx
->Accum
.ClearColor
[0];
2122 params
[1] = ctx
->Accum
.ClearColor
[1];
2123 params
[2] = ctx
->Accum
.ClearColor
[2];
2124 params
[3] = ctx
->Accum
.ClearColor
[3];
2127 *params
= ctx
->Pixel
.AlphaBias
;
2130 *params
= (GLfloat
) ctx
->Visual
->AlphaBits
;
2132 case GL_ALPHA_SCALE
:
2133 *params
= ctx
->Pixel
.AlphaScale
;
2136 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2138 case GL_ALPHA_TEST_FUNC
:
2139 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2141 case GL_ALPHA_TEST_REF
:
2142 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ 255.0;
2144 case GL_ATTRIB_STACK_DEPTH
:
2145 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2147 case GL_AUTO_NORMAL
:
2148 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2150 case GL_AUX_BUFFERS
:
2151 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2154 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2157 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2160 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2162 case GL_BLEND_SRC_RGB_EXT
:
2163 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2165 case GL_BLEND_DST_RGB_EXT
:
2166 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2168 case GL_BLEND_SRC_ALPHA_EXT
:
2169 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2171 case GL_BLEND_DST_ALPHA_EXT
:
2172 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2174 case GL_BLEND_EQUATION_EXT
:
2175 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2177 case GL_BLEND_COLOR_EXT
:
2178 params
[0] = ctx
->Color
.BlendColor
[0];
2179 params
[1] = ctx
->Color
.BlendColor
[1];
2180 params
[2] = ctx
->Color
.BlendColor
[2];
2181 params
[3] = ctx
->Color
.BlendColor
[3];
2184 *params
= ctx
->Pixel
.BlueBias
;
2187 *params
= (GLfloat
) ctx
->Visual
->BlueBits
;
2190 *params
= ctx
->Pixel
.BlueScale
;
2192 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2193 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2195 case GL_CLIP_PLANE0
:
2196 case GL_CLIP_PLANE1
:
2197 case GL_CLIP_PLANE2
:
2198 case GL_CLIP_PLANE3
:
2199 case GL_CLIP_PLANE4
:
2200 case GL_CLIP_PLANE5
:
2201 *params
= (GLfloat
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
2203 case GL_COLOR_CLEAR_VALUE
:
2204 params
[0] = (GLfloat
) ctx
->Color
.ClearColor
[0];
2205 params
[1] = (GLfloat
) ctx
->Color
.ClearColor
[1];
2206 params
[2] = (GLfloat
) ctx
->Color
.ClearColor
[2];
2207 params
[3] = (GLfloat
) ctx
->Color
.ClearColor
[3];
2209 case GL_COLOR_MATERIAL
:
2210 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2212 case GL_COLOR_MATERIAL_FACE
:
2213 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2215 case GL_COLOR_MATERIAL_PARAMETER
:
2216 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2218 case GL_COLOR_WRITEMASK
:
2219 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2220 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2221 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2222 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2225 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2227 case GL_CULL_FACE_MODE
:
2228 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2230 case GL_CURRENT_COLOR
:
2231 UBYTE_RGBA_TO_FLOAT_RGBA(params
, ctx
->Current
.ByteColor
);
2233 case GL_CURRENT_INDEX
:
2234 *params
= (GLfloat
) ctx
->Current
.Index
;
2236 case GL_CURRENT_NORMAL
:
2237 params
[0] = ctx
->Current
.Normal
[0];
2238 params
[1] = ctx
->Current
.Normal
[1];
2239 params
[2] = ctx
->Current
.Normal
[2];
2241 case GL_CURRENT_RASTER_COLOR
:
2242 params
[0] = ctx
->Current
.RasterColor
[0];
2243 params
[1] = ctx
->Current
.RasterColor
[1];
2244 params
[2] = ctx
->Current
.RasterColor
[2];
2245 params
[3] = ctx
->Current
.RasterColor
[3];
2247 case GL_CURRENT_RASTER_DISTANCE
:
2248 params
[0] = ctx
->Current
.RasterDistance
;
2250 case GL_CURRENT_RASTER_INDEX
:
2251 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2253 case GL_CURRENT_RASTER_POSITION
:
2254 params
[0] = ctx
->Current
.RasterPos
[0];
2255 params
[1] = ctx
->Current
.RasterPos
[1];
2256 params
[2] = ctx
->Current
.RasterPos
[2];
2257 params
[3] = ctx
->Current
.RasterPos
[3];
2259 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2260 params
[0] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
2261 params
[1] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
2262 params
[2] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
2263 params
[3] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
2265 case GL_CURRENT_RASTER_POSITION_VALID
:
2266 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2268 case GL_CURRENT_TEXTURE_COORDS
:
2269 params
[0] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
2270 params
[1] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
2271 params
[2] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
2272 params
[3] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
2275 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2278 *params
= (GLfloat
) ctx
->Visual
->DepthBits
;
2280 case GL_DEPTH_CLEAR_VALUE
:
2281 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2284 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2286 case GL_DEPTH_RANGE
:
2287 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2288 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2290 case GL_DEPTH_SCALE
:
2291 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2294 *params
= (GLfloat
) ctx
->Depth
.Test
;
2296 case GL_DEPTH_WRITEMASK
:
2297 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2300 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2302 case GL_DOUBLEBUFFER
:
2303 *params
= (GLfloat
) ctx
->Visual
->DBflag
;
2305 case GL_DRAW_BUFFER
:
2306 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2309 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2311 case GL_FEEDBACK_BUFFER_SIZE
:
2312 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2314 case GL_FEEDBACK_BUFFER_TYPE
:
2315 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2318 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2321 params
[0] = ctx
->Fog
.Color
[0];
2322 params
[1] = ctx
->Fog
.Color
[1];
2323 params
[2] = ctx
->Fog
.Color
[2];
2324 params
[3] = ctx
->Fog
.Color
[3];
2326 case GL_FOG_DENSITY
:
2327 *params
= ctx
->Fog
.Density
;
2330 *params
= ctx
->Fog
.End
;
2333 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2336 *params
= ctx
->Fog
.Index
;
2339 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2342 *params
= ctx
->Fog
.Start
;
2345 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2348 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2351 *params
= (GLfloat
) ctx
->Visual
->GreenBits
;
2353 case GL_GREEN_SCALE
:
2354 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
2357 *params
= (GLfloat
) ctx
->Visual
->IndexBits
;
2359 case GL_INDEX_CLEAR_VALUE
:
2360 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
2363 *params
= ctx
->Visual
->RGBAflag
? 0.0F
: 1.0F
;
2365 case GL_INDEX_OFFSET
:
2366 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
2368 case GL_INDEX_SHIFT
:
2369 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
2371 case GL_INDEX_WRITEMASK
:
2372 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
2382 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
2385 *params
= (GLfloat
) ctx
->Light
.Enabled
;
2387 case GL_LIGHT_MODEL_AMBIENT
:
2388 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2389 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2390 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2391 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2393 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2394 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2396 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2397 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
2399 case GL_LIGHT_MODEL_TWO_SIDE
:
2400 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
2402 case GL_LINE_SMOOTH
:
2403 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
2405 case GL_LINE_SMOOTH_HINT
:
2406 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2408 case GL_LINE_STIPPLE
:
2409 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
2411 case GL_LINE_STIPPLE_PATTERN
:
2412 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
2414 case GL_LINE_STIPPLE_REPEAT
:
2415 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
2418 *params
= (GLfloat
) ctx
->Line
.Width
;
2420 case GL_LINE_WIDTH_GRANULARITY
:
2421 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
2423 case GL_LINE_WIDTH_RANGE
:
2424 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
2425 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
2427 case GL_ALIASED_LINE_WIDTH_RANGE
:
2428 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
2429 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
2432 *params
= (GLfloat
) ctx
->List
.ListBase
;
2435 *params
= (GLfloat
) ctx
->CurrentListNum
;
2438 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
2439 : ENUM_TO_FLOAT(GL_COMPILE
);
2441 case GL_INDEX_LOGIC_OP
:
2442 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
2444 case GL_COLOR_LOGIC_OP
:
2445 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
2447 case GL_LOGIC_OP_MODE
:
2448 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2450 case GL_MAP1_COLOR_4
:
2451 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
2453 case GL_MAP1_GRID_DOMAIN
:
2454 params
[0] = ctx
->Eval
.MapGrid1u1
;
2455 params
[1] = ctx
->Eval
.MapGrid1u2
;
2457 case GL_MAP1_GRID_SEGMENTS
:
2458 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
2461 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
2463 case GL_MAP1_NORMAL
:
2464 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
2466 case GL_MAP1_TEXTURE_COORD_1
:
2467 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
2469 case GL_MAP1_TEXTURE_COORD_2
:
2470 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
2472 case GL_MAP1_TEXTURE_COORD_3
:
2473 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
2475 case GL_MAP1_TEXTURE_COORD_4
:
2476 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
2478 case GL_MAP1_VERTEX_3
:
2479 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
2481 case GL_MAP1_VERTEX_4
:
2482 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
2484 case GL_MAP2_COLOR_4
:
2485 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
2487 case GL_MAP2_GRID_DOMAIN
:
2488 params
[0] = ctx
->Eval
.MapGrid2u1
;
2489 params
[1] = ctx
->Eval
.MapGrid2u2
;
2490 params
[2] = ctx
->Eval
.MapGrid2v1
;
2491 params
[3] = ctx
->Eval
.MapGrid2v2
;
2493 case GL_MAP2_GRID_SEGMENTS
:
2494 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
2495 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
2498 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
2500 case GL_MAP2_NORMAL
:
2501 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
2503 case GL_MAP2_TEXTURE_COORD_1
:
2504 *params
= ctx
->Eval
.Map2TextureCoord1
;
2506 case GL_MAP2_TEXTURE_COORD_2
:
2507 *params
= ctx
->Eval
.Map2TextureCoord2
;
2509 case GL_MAP2_TEXTURE_COORD_3
:
2510 *params
= ctx
->Eval
.Map2TextureCoord3
;
2512 case GL_MAP2_TEXTURE_COORD_4
:
2513 *params
= ctx
->Eval
.Map2TextureCoord4
;
2515 case GL_MAP2_VERTEX_3
:
2516 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
2518 case GL_MAP2_VERTEX_4
:
2519 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
2522 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
2524 case GL_MAP_STENCIL
:
2525 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
2527 case GL_MATRIX_MODE
:
2528 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2530 case GL_MAX_ATTRIB_STACK_DEPTH
:
2531 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
2533 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2534 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
2536 case GL_MAX_CLIP_PLANES
:
2537 *params
= (GLfloat
) MAX_CLIP_PLANES
;
2539 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
2540 *params
= (GLfloat
) VB_MAX
;
2542 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
2543 *params
= (GLfloat
) VB_MAX
;
2545 case GL_MAX_EVAL_ORDER
:
2546 *params
= (GLfloat
) MAX_EVAL_ORDER
;
2549 *params
= (GLfloat
) MAX_LIGHTS
;
2551 case GL_MAX_LIST_NESTING
:
2552 *params
= (GLfloat
) MAX_LIST_NESTING
;
2554 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2555 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
2557 case GL_MAX_NAME_STACK_DEPTH
:
2558 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
2560 case GL_MAX_PIXEL_MAP_TABLE
:
2561 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
2563 case GL_MAX_PROJECTION_STACK_DEPTH
:
2564 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
2566 case GL_MAX_TEXTURE_SIZE
:
2567 case GL_MAX_3D_TEXTURE_SIZE
:
2568 *params
= (GLfloat
) ctx
->Const
.MaxTextureSize
;
2570 case GL_MAX_TEXTURE_STACK_DEPTH
:
2571 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
2573 case GL_MAX_VIEWPORT_DIMS
:
2574 params
[0] = (GLfloat
) MAX_WIDTH
;
2575 params
[1] = (GLfloat
) MAX_HEIGHT
;
2577 case GL_MODELVIEW_MATRIX
:
2578 for (i
=0;i
<16;i
++) {
2579 params
[i
] = ctx
->ModelView
.m
[i
];
2582 case GL_MODELVIEW_STACK_DEPTH
:
2583 *params
= (GLfloat
) (ctx
->ModelViewStackDepth
+ 1);
2585 case GL_NAME_STACK_DEPTH
:
2586 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
2589 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
2591 case GL_PACK_ALIGNMENT
:
2592 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
2594 case GL_PACK_LSB_FIRST
:
2595 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
2597 case GL_PACK_ROW_LENGTH
:
2598 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
2600 case GL_PACK_SKIP_PIXELS
:
2601 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
2603 case GL_PACK_SKIP_ROWS
:
2604 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
2606 case GL_PACK_SWAP_BYTES
:
2607 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
2609 case GL_PACK_SKIP_IMAGES_EXT
:
2610 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
2612 case GL_PACK_IMAGE_HEIGHT_EXT
:
2613 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
2615 case GL_PERSPECTIVE_CORRECTION_HINT
:
2616 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
2618 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2619 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
2621 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2622 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
2624 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2625 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
2627 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2628 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
2630 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2631 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
2633 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2634 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
2636 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2637 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
2639 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2640 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
2642 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2643 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
2645 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2646 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
2649 *params
= (GLfloat
) ctx
->Point
.Size
;
2651 case GL_POINT_SIZE_GRANULARITY
:
2652 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
2654 case GL_POINT_SIZE_RANGE
:
2655 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
2656 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
2658 case GL_ALIASED_POINT_SIZE_RANGE
:
2659 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
2660 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
2662 case GL_POINT_SMOOTH
:
2663 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
2665 case GL_POINT_SMOOTH_HINT
:
2666 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
2668 case GL_POINT_SIZE_MIN_EXT
:
2669 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
2671 case GL_POINT_SIZE_MAX_EXT
:
2672 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
2674 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2675 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
2677 case GL_DISTANCE_ATTENUATION_EXT
:
2678 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
2679 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
2680 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
2682 case GL_POLYGON_MODE
:
2683 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
2684 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
2686 #ifdef GL_EXT_polygon_offset
2687 case GL_POLYGON_OFFSET_BIAS_EXT
:
2688 *params
= ctx
->Polygon
.OffsetUnits
;
2691 case GL_POLYGON_OFFSET_FACTOR
:
2692 *params
= ctx
->Polygon
.OffsetFactor
;
2694 case GL_POLYGON_OFFSET_UNITS
:
2695 *params
= ctx
->Polygon
.OffsetUnits
;
2697 case GL_POLYGON_SMOOTH
:
2698 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
2700 case GL_POLYGON_SMOOTH_HINT
:
2701 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
2703 case GL_POLYGON_STIPPLE
:
2704 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
2706 case GL_PROJECTION_MATRIX
:
2707 for (i
=0;i
<16;i
++) {
2708 params
[i
] = ctx
->ProjectionMatrix
.m
[i
];
2711 case GL_PROJECTION_STACK_DEPTH
:
2712 *params
= (GLfloat
) (ctx
->ProjectionStackDepth
+ 1);
2714 case GL_READ_BUFFER
:
2715 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
2718 *params
= ctx
->Pixel
.RedBias
;
2721 *params
= (GLfloat
) ctx
->Visual
->RedBits
;
2724 *params
= ctx
->Pixel
.RedScale
;
2726 case GL_RENDER_MODE
:
2727 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
2730 *params
= (GLfloat
) ctx
->Visual
->RGBAflag
;
2732 case GL_SCISSOR_BOX
:
2733 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
2734 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
2735 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
2736 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
2738 case GL_SCISSOR_TEST
:
2739 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
2741 case GL_SELECTION_BUFFER_SIZE
:
2742 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
2744 case GL_SHADE_MODEL
:
2745 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
2747 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2748 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
2750 case GL_STENCIL_BITS
:
2751 *params
= (GLfloat
) ctx
->Visual
->StencilBits
;
2753 case GL_STENCIL_CLEAR_VALUE
:
2754 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
2756 case GL_STENCIL_FAIL
:
2757 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
2759 case GL_STENCIL_FUNC
:
2760 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
2762 case GL_STENCIL_PASS_DEPTH_FAIL
:
2763 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
2765 case GL_STENCIL_PASS_DEPTH_PASS
:
2766 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
2768 case GL_STENCIL_REF
:
2769 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
2771 case GL_STENCIL_TEST
:
2772 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
2774 case GL_STENCIL_VALUE_MASK
:
2775 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
2777 case GL_STENCIL_WRITEMASK
:
2778 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
2781 *params
= (GLfloat
) ctx
->Visual
->StereoFlag
;
2783 case GL_SUBPIXEL_BITS
:
2784 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
2787 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2790 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2793 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2795 case GL_TEXTURE_BINDING_1D
:
2796 *params
= (GLfloat
) textureUnit
->CurrentD
[1]->Name
;
2798 case GL_TEXTURE_BINDING_2D
:
2799 *params
= (GLfloat
) textureUnit
->CurrentD
[2]->Name
;
2801 case GL_TEXTURE_BINDING_3D
:
2802 *params
= (GLfloat
) textureUnit
->CurrentD
[2]->Name
;
2804 case GL_TEXTURE_ENV_COLOR
:
2805 params
[0] = textureUnit
->EnvColor
[0];
2806 params
[1] = textureUnit
->EnvColor
[1];
2807 params
[2] = textureUnit
->EnvColor
[2];
2808 params
[3] = textureUnit
->EnvColor
[3];
2810 case GL_TEXTURE_ENV_MODE
:
2811 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
2813 case GL_TEXTURE_GEN_S
:
2814 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2816 case GL_TEXTURE_GEN_T
:
2817 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2819 case GL_TEXTURE_GEN_R
:
2820 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2822 case GL_TEXTURE_GEN_Q
:
2823 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2825 case GL_TEXTURE_MATRIX
:
2826 for (i
=0;i
<16;i
++) {
2827 params
[i
] = ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
2830 case GL_TEXTURE_STACK_DEPTH
:
2831 *params
= (GLfloat
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
2833 case GL_UNPACK_ALIGNMENT
:
2834 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
2836 case GL_UNPACK_LSB_FIRST
:
2837 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
2839 case GL_UNPACK_ROW_LENGTH
:
2840 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
2842 case GL_UNPACK_SKIP_PIXELS
:
2843 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
2845 case GL_UNPACK_SKIP_ROWS
:
2846 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
2848 case GL_UNPACK_SWAP_BYTES
:
2849 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
2851 case GL_UNPACK_SKIP_IMAGES_EXT
:
2852 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
2854 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2855 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
2858 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
2859 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
2860 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
2861 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
2864 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
2867 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
2869 case GL_VERTEX_ARRAY
:
2870 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
2872 case GL_VERTEX_ARRAY_SIZE
:
2873 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
2875 case GL_VERTEX_ARRAY_TYPE
:
2876 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
2878 case GL_VERTEX_ARRAY_STRIDE
:
2879 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
2881 case GL_VERTEX_ARRAY_COUNT_EXT
:
2884 case GL_NORMAL_ARRAY
:
2885 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
2887 case GL_NORMAL_ARRAY_TYPE
:
2888 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
2890 case GL_NORMAL_ARRAY_STRIDE
:
2891 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
2893 case GL_NORMAL_ARRAY_COUNT_EXT
:
2896 case GL_COLOR_ARRAY
:
2897 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
2899 case GL_COLOR_ARRAY_SIZE
:
2900 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
2902 case GL_COLOR_ARRAY_TYPE
:
2903 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
2905 case GL_COLOR_ARRAY_STRIDE
:
2906 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
2908 case GL_COLOR_ARRAY_COUNT_EXT
:
2911 case GL_INDEX_ARRAY
:
2912 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
2914 case GL_INDEX_ARRAY_TYPE
:
2915 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
2917 case GL_INDEX_ARRAY_STRIDE
:
2918 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
2920 case GL_INDEX_ARRAY_COUNT_EXT
:
2923 case GL_TEXTURE_COORD_ARRAY
:
2924 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2926 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2927 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2929 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2930 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
2932 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2933 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2935 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2938 case GL_EDGE_FLAG_ARRAY
:
2939 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
2941 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2942 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
2944 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2948 case GL_MAX_TEXTURE_UNITS_ARB
:
2949 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
2951 case GL_ACTIVE_TEXTURE_ARB
:
2952 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2954 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2955 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2958 /* GL_PGI_misc_hints */
2959 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
2960 *params
= ENUM_TO_FLOAT(GL_NICEST
);
2962 case GL_STRICT_LIGHTING_HINT_PGI
:
2963 *params
= ENUM_TO_FLOAT(ctx
->Hint
.StrictLighting
);
2965 case GL_STRICT_SCISSOR_HINT_PGI
:
2966 case GL_FULL_STIPPLE_HINT_PGI
:
2967 *params
= ENUM_TO_FLOAT(GL_TRUE
);
2969 case GL_CONSERVE_MEMORY_HINT_PGI
:
2970 *params
= ENUM_TO_FLOAT(GL_FALSE
);
2972 case GL_ALWAYS_FAST_HINT_PGI
:
2973 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2974 ctx
->Hint
.AllowDrawSpn
== GL_FALSE
&&
2975 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
2977 case GL_ALWAYS_SOFT_HINT_PGI
:
2978 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2979 ctx
->Hint
.AllowDrawSpn
== GL_TRUE
&&
2980 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
2982 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
2983 *params
= (GLfloat
) GL_TRUE
;
2985 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
2986 *params
= (GLfloat
) ctx
->Hint
.AllowDrawWin
;
2988 case GL_ALLOW_DRAW_SPN_HINT_PGI
:
2989 *params
= (GLfloat
) ctx
->Hint
.AllowDrawSpn
;
2991 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
2992 *params
= (GLfloat
) ctx
->Hint
.AllowDrawMem
;
2994 case GL_CLIP_NEAR_HINT_PGI
:
2995 case GL_CLIP_FAR_HINT_PGI
:
2996 *params
= ENUM_TO_FLOAT(GL_TRUE
);
2998 case GL_WIDE_LINE_HINT_PGI
:
2999 *params
= ENUM_TO_FLOAT(GL_DONT_CARE
);
3001 case GL_BACK_NORMALS_HINT_PGI
:
3002 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3004 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
3008 /* GL_EXT_compiled_vertex_array */
3009 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3010 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3012 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3013 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3016 /* GL_ARB_transpose_matrix */
3017 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3018 /* don't have a color matrix */
3020 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3021 gl_matrix_transposef(params
, ctx
->ModelView
.m
);
3023 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3024 gl_matrix_transposef(params
, ctx
->ProjectionMatrix
.m
);
3026 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3027 gl_matrix_transposef(params
, ctx
->TextureMatrix
[texTransformUnit
].m
);
3030 /* GL_HP_occlusion_test */
3031 case GL_OCCLUSION_TEST_HP
:
3032 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
3033 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3036 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3039 case GL_OCCLUSION_TEST_RESULT_HP
:
3040 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
3041 if (ctx
->Depth
.OcclusionTest
)
3042 *params
= (GLfloat
) ctx
->OcclusionResult
;
3044 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3045 /* reset flag now */
3046 ctx
->OcclusionResult
= GL_FALSE
;
3047 ctx
->OcclusionResultSaved
= GL_FALSE
;
3050 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3054 /* GL_SGIS_pixel_texture */
3055 case GL_PIXEL_TEXTURE_SGIS
:
3056 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3059 /* GL_SGIX_pixel_texture */
3060 case GL_PIXEL_TEX_GEN_SGIX
:
3061 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3063 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3064 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3068 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3076 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3078 GET_CURRENT_CONTEXT(ctx
);
3080 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3081 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
3082 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3084 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetIntegerv");
3086 if (MESA_VERBOSE
& VERBOSE_API
)
3087 fprintf(stderr
, "glGetIntegerv %s\n", gl_lookup_enum_by_nr(pname
));
3090 case GL_ACCUM_RED_BITS
:
3091 *params
= (GLint
) ctx
->Visual
->AccumRedBits
;
3093 case GL_ACCUM_GREEN_BITS
:
3094 *params
= (GLint
) ctx
->Visual
->AccumGreenBits
;
3096 case GL_ACCUM_BLUE_BITS
:
3097 *params
= (GLint
) ctx
->Visual
->AccumBlueBits
;
3099 case GL_ACCUM_ALPHA_BITS
:
3100 *params
= (GLint
) ctx
->Visual
->AccumAlphaBits
;
3102 case GL_ACCUM_CLEAR_VALUE
:
3103 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
3104 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
3105 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
3106 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
3109 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
3112 *params
= ctx
->Visual
->AlphaBits
;
3114 case GL_ALPHA_SCALE
:
3115 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
3118 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
3120 case GL_ALPHA_TEST_REF
:
3121 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ 255.0 );
3123 case GL_ALPHA_TEST_FUNC
:
3124 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
3126 case GL_ATTRIB_STACK_DEPTH
:
3127 *params
= (GLint
) (ctx
->AttribStackDepth
);
3129 case GL_AUTO_NORMAL
:
3130 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
3132 case GL_AUX_BUFFERS
:
3133 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
3136 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
3139 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3142 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3144 case GL_BLEND_SRC_RGB_EXT
:
3145 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3147 case GL_BLEND_DST_RGB_EXT
:
3148 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3150 case GL_BLEND_SRC_ALPHA_EXT
:
3151 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
3153 case GL_BLEND_DST_ALPHA_EXT
:
3154 *params
= (GLint
) ctx
->Color
.BlendDstA
;
3156 case GL_BLEND_EQUATION_EXT
:
3157 *params
= (GLint
) ctx
->Color
.BlendEquation
;
3159 case GL_BLEND_COLOR_EXT
:
3160 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
3161 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
3162 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
3163 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
3166 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
3169 *params
= (GLint
) ctx
->Visual
->BlueBits
;
3172 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
3174 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3175 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
3177 case GL_CLIP_PLANE0
:
3178 case GL_CLIP_PLANE1
:
3179 case GL_CLIP_PLANE2
:
3180 case GL_CLIP_PLANE3
:
3181 case GL_CLIP_PLANE4
:
3182 case GL_CLIP_PLANE5
:
3183 i
= (GLint
) (pname
- GL_CLIP_PLANE0
);
3184 *params
= (GLint
) ctx
->Transform
.ClipEnabled
[i
];
3186 case GL_COLOR_CLEAR_VALUE
:
3187 params
[0] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[0] );
3188 params
[1] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[1] );
3189 params
[2] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[2] );
3190 params
[3] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[3] );
3192 case GL_COLOR_MATERIAL
:
3193 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
3195 case GL_COLOR_MATERIAL_FACE
:
3196 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
3198 case GL_COLOR_MATERIAL_PARAMETER
:
3199 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
3201 case GL_COLOR_WRITEMASK
:
3202 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
3203 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
3204 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
3205 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
3208 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
3210 case GL_CULL_FACE_MODE
:
3211 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
3213 case GL_CURRENT_COLOR
:
3214 params
[0] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.ByteColor
[0] ) );
3215 params
[1] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.ByteColor
[1] ) );
3216 params
[2] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.ByteColor
[2] ) );
3217 params
[3] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.ByteColor
[3] ) );
3219 case GL_CURRENT_INDEX
:
3220 *params
= (GLint
) ctx
->Current
.Index
;
3222 case GL_CURRENT_NORMAL
:
3223 params
[0] = FLOAT_TO_INT( ctx
->Current
.Normal
[0] );
3224 params
[1] = FLOAT_TO_INT( ctx
->Current
.Normal
[1] );
3225 params
[2] = FLOAT_TO_INT( ctx
->Current
.Normal
[2] );
3227 case GL_CURRENT_RASTER_COLOR
:
3228 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
3229 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
3230 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
3231 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
3233 case GL_CURRENT_RASTER_DISTANCE
:
3234 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
3236 case GL_CURRENT_RASTER_INDEX
:
3237 *params
= (GLint
) ctx
->Current
.RasterIndex
;
3239 case GL_CURRENT_RASTER_POSITION
:
3240 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
3241 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
3242 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
3243 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
3245 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3246 params
[0] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
3247 params
[1] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
3248 params
[2] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
3249 params
[3] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
3251 case GL_CURRENT_RASTER_POSITION_VALID
:
3252 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
3254 case GL_CURRENT_TEXTURE_COORDS
:
3255 params
[0] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
3256 params
[1] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
3257 params
[2] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
3258 params
[3] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
3261 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
3264 *params
= ctx
->Visual
->DepthBits
;
3266 case GL_DEPTH_CLEAR_VALUE
:
3267 *params
= (GLint
) ctx
->Depth
.Clear
;
3270 *params
= (GLint
) ctx
->Depth
.Func
;
3272 case GL_DEPTH_RANGE
:
3273 params
[0] = (GLint
) ctx
->Viewport
.Near
;
3274 params
[1] = (GLint
) ctx
->Viewport
.Far
;
3276 case GL_DEPTH_SCALE
:
3277 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
3280 *params
= (GLint
) ctx
->Depth
.Test
;
3282 case GL_DEPTH_WRITEMASK
:
3283 *params
= (GLint
) ctx
->Depth
.Mask
;
3286 *params
= (GLint
) ctx
->Color
.DitherFlag
;
3288 case GL_DOUBLEBUFFER
:
3289 *params
= (GLint
) ctx
->Visual
->DBflag
;
3291 case GL_DRAW_BUFFER
:
3292 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
3295 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
3297 case GL_FEEDBACK_BUFFER_SIZE
:
3298 *params
= ctx
->Feedback
.BufferSize
;
3300 case GL_FEEDBACK_BUFFER_TYPE
:
3301 *params
= ctx
->Feedback
.Type
;
3304 *params
= (GLint
) ctx
->Fog
.Enabled
;
3307 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
3308 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
3309 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
3310 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
3312 case GL_FOG_DENSITY
:
3313 *params
= (GLint
) ctx
->Fog
.Density
;
3316 *params
= (GLint
) ctx
->Fog
.End
;
3319 *params
= (GLint
) ctx
->Hint
.Fog
;
3322 *params
= (GLint
) ctx
->Fog
.Index
;
3325 *params
= (GLint
) ctx
->Fog
.Mode
;
3328 *params
= (GLint
) ctx
->Fog
.Start
;
3331 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
3334 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
3337 *params
= (GLint
) ctx
->Visual
->GreenBits
;
3339 case GL_GREEN_SCALE
:
3340 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
3343 *params
= (GLint
) ctx
->Visual
->IndexBits
;
3345 case GL_INDEX_CLEAR_VALUE
:
3346 *params
= (GLint
) ctx
->Color
.ClearIndex
;
3349 *params
= ctx
->Visual
->RGBAflag
? 0 : 1;
3351 case GL_INDEX_OFFSET
:
3352 *params
= ctx
->Pixel
.IndexOffset
;
3354 case GL_INDEX_SHIFT
:
3355 *params
= ctx
->Pixel
.IndexShift
;
3357 case GL_INDEX_WRITEMASK
:
3358 *params
= (GLint
) ctx
->Color
.IndexMask
;
3368 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3371 *params
= (GLint
) ctx
->Light
.Enabled
;
3373 case GL_LIGHT_MODEL_AMBIENT
:
3374 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
3375 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
3376 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
3377 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
3379 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3380 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
3382 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3383 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
3385 case GL_LIGHT_MODEL_TWO_SIDE
:
3386 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
3388 case GL_LINE_SMOOTH
:
3389 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
3391 case GL_LINE_SMOOTH_HINT
:
3392 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
3394 case GL_LINE_STIPPLE
:
3395 *params
= (GLint
) ctx
->Line
.StippleFlag
;
3397 case GL_LINE_STIPPLE_PATTERN
:
3398 *params
= (GLint
) ctx
->Line
.StipplePattern
;
3400 case GL_LINE_STIPPLE_REPEAT
:
3401 *params
= (GLint
) ctx
->Line
.StippleFactor
;
3404 *params
= (GLint
) ctx
->Line
.Width
;
3406 case GL_LINE_WIDTH_GRANULARITY
:
3407 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
3409 case GL_LINE_WIDTH_RANGE
:
3410 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
3411 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
3413 case GL_ALIASED_LINE_WIDTH_RANGE
:
3414 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
3415 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
3418 *params
= (GLint
) ctx
->List
.ListBase
;
3421 *params
= (GLint
) ctx
->CurrentListNum
;
3424 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
3425 : (GLint
) GL_COMPILE
;
3427 case GL_INDEX_LOGIC_OP
:
3428 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
3430 case GL_COLOR_LOGIC_OP
:
3431 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
3433 case GL_LOGIC_OP_MODE
:
3434 *params
= (GLint
) ctx
->Color
.LogicOp
;
3436 case GL_MAP1_COLOR_4
:
3437 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
3439 case GL_MAP1_GRID_DOMAIN
:
3440 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
3441 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
3443 case GL_MAP1_GRID_SEGMENTS
:
3444 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
3447 *params
= (GLint
) ctx
->Eval
.Map1Index
;
3449 case GL_MAP1_NORMAL
:
3450 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
3452 case GL_MAP1_TEXTURE_COORD_1
:
3453 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
3455 case GL_MAP1_TEXTURE_COORD_2
:
3456 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
3458 case GL_MAP1_TEXTURE_COORD_3
:
3459 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
3461 case GL_MAP1_TEXTURE_COORD_4
:
3462 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
3464 case GL_MAP1_VERTEX_3
:
3465 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
3467 case GL_MAP1_VERTEX_4
:
3468 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
3470 case GL_MAP2_COLOR_4
:
3471 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
3473 case GL_MAP2_GRID_DOMAIN
:
3474 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
3475 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
3476 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
3477 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
3479 case GL_MAP2_GRID_SEGMENTS
:
3480 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
3481 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
3484 *params
= (GLint
) ctx
->Eval
.Map2Index
;
3486 case GL_MAP2_NORMAL
:
3487 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
3489 case GL_MAP2_TEXTURE_COORD_1
:
3490 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
3492 case GL_MAP2_TEXTURE_COORD_2
:
3493 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
3495 case GL_MAP2_TEXTURE_COORD_3
:
3496 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
3498 case GL_MAP2_TEXTURE_COORD_4
:
3499 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
3501 case GL_MAP2_VERTEX_3
:
3502 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
3504 case GL_MAP2_VERTEX_4
:
3505 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
3508 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
3510 case GL_MAP_STENCIL
:
3511 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
3513 case GL_MATRIX_MODE
:
3514 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
3516 case GL_MAX_ATTRIB_STACK_DEPTH
:
3517 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
3519 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3520 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3522 case GL_MAX_CLIP_PLANES
:
3523 *params
= (GLint
) MAX_CLIP_PLANES
;
3525 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3528 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3531 case GL_MAX_EVAL_ORDER
:
3532 *params
= (GLint
) MAX_EVAL_ORDER
;
3535 *params
= (GLint
) MAX_LIGHTS
;
3537 case GL_MAX_LIST_NESTING
:
3538 *params
= (GLint
) MAX_LIST_NESTING
;
3540 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3541 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
3543 case GL_MAX_NAME_STACK_DEPTH
:
3544 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
3546 case GL_MAX_PIXEL_MAP_TABLE
:
3547 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
3549 case GL_MAX_PROJECTION_STACK_DEPTH
:
3550 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
3552 case GL_MAX_TEXTURE_SIZE
:
3553 case GL_MAX_3D_TEXTURE_SIZE
:
3554 *params
= ctx
->Const
.MaxTextureSize
;
3556 case GL_MAX_TEXTURE_STACK_DEPTH
:
3557 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
3559 case GL_MAX_VIEWPORT_DIMS
:
3560 params
[0] = (GLint
) MAX_WIDTH
;
3561 params
[1] = (GLint
) MAX_HEIGHT
;
3563 case GL_MODELVIEW_MATRIX
:
3564 for (i
=0;i
<16;i
++) {
3565 params
[i
] = (GLint
) ctx
->ModelView
.m
[i
];
3568 case GL_MODELVIEW_STACK_DEPTH
:
3569 *params
= (GLint
) (ctx
->ModelViewStackDepth
+ 1);
3571 case GL_NAME_STACK_DEPTH
:
3572 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
3575 *params
= (GLint
) ctx
->Transform
.Normalize
;
3577 case GL_PACK_ALIGNMENT
:
3578 *params
= ctx
->Pack
.Alignment
;
3580 case GL_PACK_LSB_FIRST
:
3581 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
3583 case GL_PACK_ROW_LENGTH
:
3584 *params
= ctx
->Pack
.RowLength
;
3586 case GL_PACK_SKIP_PIXELS
:
3587 *params
= ctx
->Pack
.SkipPixels
;
3589 case GL_PACK_SKIP_ROWS
:
3590 *params
= ctx
->Pack
.SkipRows
;
3592 case GL_PACK_SWAP_BYTES
:
3593 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
3595 case GL_PACK_SKIP_IMAGES_EXT
:
3596 *params
= ctx
->Pack
.SkipImages
;
3598 case GL_PACK_IMAGE_HEIGHT_EXT
:
3599 *params
= ctx
->Pack
.ImageHeight
;
3601 case GL_PERSPECTIVE_CORRECTION_HINT
:
3602 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
3604 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3605 *params
= ctx
->Pixel
.MapAtoAsize
;
3607 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3608 *params
= ctx
->Pixel
.MapBtoBsize
;
3610 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3611 *params
= ctx
->Pixel
.MapGtoGsize
;
3613 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3614 *params
= ctx
->Pixel
.MapItoAsize
;
3616 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3617 *params
= ctx
->Pixel
.MapItoBsize
;
3619 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3620 *params
= ctx
->Pixel
.MapItoGsize
;
3622 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3623 *params
= ctx
->Pixel
.MapItoIsize
;
3625 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3626 *params
= ctx
->Pixel
.MapItoRsize
;
3628 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3629 *params
= ctx
->Pixel
.MapRtoRsize
;
3631 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3632 *params
= ctx
->Pixel
.MapStoSsize
;
3635 *params
= (GLint
) ctx
->Point
.Size
;
3637 case GL_POINT_SIZE_GRANULARITY
:
3638 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
3640 case GL_POINT_SIZE_RANGE
:
3641 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
3642 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
3644 case GL_ALIASED_POINT_SIZE_RANGE
:
3645 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
3646 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
3648 case GL_POINT_SMOOTH
:
3649 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
3651 case GL_POINT_SMOOTH_HINT
:
3652 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
3654 case GL_POINT_SIZE_MIN_EXT
:
3655 *params
= (GLint
) (ctx
->Point
.MinSize
);
3657 case GL_POINT_SIZE_MAX_EXT
:
3658 *params
= (GLint
) (ctx
->Point
.MaxSize
);
3660 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3661 *params
= (GLint
) (ctx
->Point
.Threshold
);
3663 case GL_DISTANCE_ATTENUATION_EXT
:
3664 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
3665 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
3666 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
3668 case GL_POLYGON_MODE
:
3669 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
3670 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
3672 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
3673 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
3675 case GL_POLYGON_OFFSET_FACTOR
:
3676 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
3678 case GL_POLYGON_OFFSET_UNITS
:
3679 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
3681 case GL_POLYGON_SMOOTH
:
3682 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
3684 case GL_POLYGON_SMOOTH_HINT
:
3685 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
3687 case GL_POLYGON_STIPPLE
:
3688 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
3690 case GL_PROJECTION_MATRIX
:
3691 for (i
=0;i
<16;i
++) {
3692 params
[i
] = (GLint
) ctx
->ProjectionMatrix
.m
[i
];
3695 case GL_PROJECTION_STACK_DEPTH
:
3696 *params
= (GLint
) (ctx
->ProjectionStackDepth
+ 1);
3698 case GL_READ_BUFFER
:
3699 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
3702 *params
= (GLint
) ctx
->Pixel
.RedBias
;
3705 *params
= (GLint
) ctx
->Visual
->RedBits
;
3708 *params
= (GLint
) ctx
->Pixel
.RedScale
;
3710 case GL_RENDER_MODE
:
3711 *params
= (GLint
) ctx
->RenderMode
;
3714 *params
= (GLint
) ctx
->Visual
->RGBAflag
;
3716 case GL_SCISSOR_BOX
:
3717 params
[0] = (GLint
) ctx
->Scissor
.X
;
3718 params
[1] = (GLint
) ctx
->Scissor
.Y
;
3719 params
[2] = (GLint
) ctx
->Scissor
.Width
;
3720 params
[3] = (GLint
) ctx
->Scissor
.Height
;
3722 case GL_SCISSOR_TEST
:
3723 *params
= (GLint
) ctx
->Scissor
.Enabled
;
3725 case GL_SELECTION_BUFFER_SIZE
:
3726 *params
= (GLint
) ctx
->Select
.BufferSize
;
3728 case GL_SHADE_MODEL
:
3729 *params
= (GLint
) ctx
->Light
.ShadeModel
;
3731 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3732 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
3734 case GL_STENCIL_BITS
:
3735 *params
= ctx
->Visual
->StencilBits
;
3737 case GL_STENCIL_CLEAR_VALUE
:
3738 *params
= (GLint
) ctx
->Stencil
.Clear
;
3740 case GL_STENCIL_FAIL
:
3741 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
3743 case GL_STENCIL_FUNC
:
3744 *params
= (GLint
) ctx
->Stencil
.Function
;
3746 case GL_STENCIL_PASS_DEPTH_FAIL
:
3747 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
3749 case GL_STENCIL_PASS_DEPTH_PASS
:
3750 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
3752 case GL_STENCIL_REF
:
3753 *params
= (GLint
) ctx
->Stencil
.Ref
;
3755 case GL_STENCIL_TEST
:
3756 *params
= (GLint
) ctx
->Stencil
.Enabled
;
3758 case GL_STENCIL_VALUE_MASK
:
3759 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
3761 case GL_STENCIL_WRITEMASK
:
3762 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
3765 *params
= (GLint
) ctx
->Visual
->StereoFlag
;
3767 case GL_SUBPIXEL_BITS
:
3768 *params
= ctx
->Const
.SubPixelBits
;
3771 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
3774 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
3777 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
3779 case GL_TEXTURE_BINDING_1D
:
3780 *params
= textureUnit
->CurrentD
[1]->Name
;
3782 case GL_TEXTURE_BINDING_2D
:
3783 *params
= textureUnit
->CurrentD
[2]->Name
;
3785 case GL_TEXTURE_BINDING_3D
:
3786 *params
= textureUnit
->CurrentD
[3]->Name
;
3788 case GL_TEXTURE_ENV_COLOR
:
3789 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
3790 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
3791 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
3792 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
3794 case GL_TEXTURE_ENV_MODE
:
3795 *params
= (GLint
) textureUnit
->EnvMode
;
3797 case GL_TEXTURE_GEN_S
:
3798 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
3800 case GL_TEXTURE_GEN_T
:
3801 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
3803 case GL_TEXTURE_GEN_R
:
3804 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
3806 case GL_TEXTURE_GEN_Q
:
3807 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
3809 case GL_TEXTURE_MATRIX
:
3810 for (i
=0;i
<16;i
++) {
3811 params
[i
] = (GLint
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
3814 case GL_TEXTURE_STACK_DEPTH
:
3815 *params
= (GLint
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
3817 case GL_UNPACK_ALIGNMENT
:
3818 *params
= ctx
->Unpack
.Alignment
;
3820 case GL_UNPACK_LSB_FIRST
:
3821 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
3823 case GL_UNPACK_ROW_LENGTH
:
3824 *params
= ctx
->Unpack
.RowLength
;
3826 case GL_UNPACK_SKIP_PIXELS
:
3827 *params
= ctx
->Unpack
.SkipPixels
;
3829 case GL_UNPACK_SKIP_ROWS
:
3830 *params
= ctx
->Unpack
.SkipRows
;
3832 case GL_UNPACK_SWAP_BYTES
:
3833 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
3835 case GL_UNPACK_SKIP_IMAGES_EXT
:
3836 *params
= ctx
->Unpack
.SkipImages
;
3838 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3839 *params
= ctx
->Unpack
.ImageHeight
;
3842 params
[0] = (GLint
) ctx
->Viewport
.X
;
3843 params
[1] = (GLint
) ctx
->Viewport
.Y
;
3844 params
[2] = (GLint
) ctx
->Viewport
.Width
;
3845 params
[3] = (GLint
) ctx
->Viewport
.Height
;
3848 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
3851 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
3853 case GL_VERTEX_ARRAY
:
3854 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
3856 case GL_VERTEX_ARRAY_SIZE
:
3857 *params
= ctx
->Array
.Vertex
.Size
;
3859 case GL_VERTEX_ARRAY_TYPE
:
3860 *params
= ctx
->Array
.Vertex
.Type
;
3862 case GL_VERTEX_ARRAY_STRIDE
:
3863 *params
= ctx
->Array
.Vertex
.Stride
;
3865 case GL_VERTEX_ARRAY_COUNT_EXT
:
3868 case GL_NORMAL_ARRAY
:
3869 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
3871 case GL_NORMAL_ARRAY_TYPE
:
3872 *params
= ctx
->Array
.Normal
.Type
;
3874 case GL_NORMAL_ARRAY_STRIDE
:
3875 *params
= ctx
->Array
.Normal
.Stride
;
3877 case GL_NORMAL_ARRAY_COUNT_EXT
:
3880 case GL_COLOR_ARRAY
:
3881 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
3883 case GL_COLOR_ARRAY_SIZE
:
3884 *params
= ctx
->Array
.Color
.Size
;
3886 case GL_COLOR_ARRAY_TYPE
:
3887 *params
= ctx
->Array
.Color
.Type
;
3889 case GL_COLOR_ARRAY_STRIDE
:
3890 *params
= ctx
->Array
.Color
.Stride
;
3892 case GL_COLOR_ARRAY_COUNT_EXT
:
3895 case GL_INDEX_ARRAY
:
3896 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
3898 case GL_INDEX_ARRAY_TYPE
:
3899 *params
= ctx
->Array
.Index
.Type
;
3901 case GL_INDEX_ARRAY_STRIDE
:
3902 *params
= ctx
->Array
.Index
.Stride
;
3904 case GL_INDEX_ARRAY_COUNT_EXT
:
3907 case GL_TEXTURE_COORD_ARRAY
:
3908 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3910 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3911 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
3913 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3914 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
3916 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3917 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
3919 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3922 case GL_EDGE_FLAG_ARRAY
:
3923 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
3925 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3926 *params
= ctx
->Array
.EdgeFlag
.Stride
;
3928 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3932 case GL_MAX_TEXTURE_UNITS_ARB
:
3933 *params
= ctx
->Const
.MaxTextureUnits
;
3935 case GL_ACTIVE_TEXTURE_ARB
:
3936 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
3938 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3939 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
3942 /* GL_PGI_misc_hints */
3943 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
3944 *params
= (GL_NICEST
);
3946 case GL_STRICT_LIGHTING_HINT_PGI
:
3947 *params
= (ctx
->Hint
.StrictLighting
);
3949 case GL_STRICT_SCISSOR_HINT_PGI
:
3950 case GL_FULL_STIPPLE_HINT_PGI
:
3951 *params
= (GL_TRUE
);
3953 case GL_CONSERVE_MEMORY_HINT_PGI
:
3954 *params
= (GL_FALSE
);
3956 case GL_ALWAYS_FAST_HINT_PGI
:
3957 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3958 ctx
->Hint
.AllowDrawSpn
== GL_FALSE
&&
3959 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
3961 case GL_ALWAYS_SOFT_HINT_PGI
:
3962 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3963 ctx
->Hint
.AllowDrawSpn
== GL_TRUE
&&
3964 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
3966 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
3969 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
3970 *params
= ctx
->Hint
.AllowDrawWin
;
3972 case GL_ALLOW_DRAW_SPN_HINT_PGI
:
3973 *params
= ctx
->Hint
.AllowDrawSpn
;
3975 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
3976 *params
= ctx
->Hint
.AllowDrawMem
;
3978 case GL_CLIP_NEAR_HINT_PGI
:
3979 case GL_CLIP_FAR_HINT_PGI
:
3982 case GL_WIDE_LINE_HINT_PGI
:
3983 *params
= GL_DONT_CARE
;
3985 case GL_BACK_NORMALS_HINT_PGI
:
3986 *params
= (GL_TRUE
);
3988 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
3992 /* GL_EXT_compiled_vertex_array */
3993 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3994 *params
= ctx
->Array
.LockFirst
;
3996 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3997 *params
= ctx
->Array
.LockCount
;
4000 /* GL_ARB_transpose_matrix */
4001 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4002 /* don't have a color matrix */
4004 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4008 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
4009 for (i
=0;i
<16;i
++) {
4010 params
[i
] = (GLint
) tm
[i
];
4014 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4018 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
4019 for (i
=0;i
<16;i
++) {
4020 params
[i
] = (GLint
) tm
[i
];
4024 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4028 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
4029 for (i
=0;i
<16;i
++) {
4030 params
[i
] = (GLint
) tm
[i
];
4035 /* GL_HP_occlusion_test */
4036 case GL_OCCLUSION_TEST_HP
:
4037 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
4038 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
4041 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4044 case GL_OCCLUSION_TEST_RESULT_HP
:
4045 if (ctx
->Extensions
.HaveHpOcclusionTest
) {
4046 if (ctx
->Depth
.OcclusionTest
)
4047 *params
= (GLint
) ctx
->OcclusionResult
;
4049 *params
= (GLint
) ctx
->OcclusionResultSaved
;
4050 /* reset flag now */
4051 ctx
->OcclusionResult
= GL_FALSE
;
4052 ctx
->OcclusionResultSaved
= GL_FALSE
;
4055 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4059 /* GL_SGIS_pixel_texture */
4060 case GL_PIXEL_TEXTURE_SGIS
:
4061 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4064 /* GL_SGIX_pixel_texture */
4065 case GL_PIXEL_TEX_GEN_SGIX
:
4066 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4068 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4069 *params
= (GLint
) pixel_texgen_mode(ctx
);
4073 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4080 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
4082 GET_CURRENT_CONTEXT(ctx
);
4083 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4084 /*GLuint texTransformUnit = ctx->Texture.CurrentTransformUnit;*/
4086 if (MESA_VERBOSE
& VERBOSE_API
)
4087 fprintf(stderr
, "glGetPointerv %s\n", gl_lookup_enum_by_nr(pname
));
4090 case GL_VERTEX_ARRAY_POINTER
:
4091 *params
= ctx
->Array
.Vertex
.Ptr
;
4093 case GL_NORMAL_ARRAY_POINTER
:
4094 *params
= ctx
->Array
.Normal
.Ptr
;
4096 case GL_COLOR_ARRAY_POINTER
:
4097 *params
= ctx
->Array
.Color
.Ptr
;
4099 case GL_INDEX_ARRAY_POINTER
:
4100 *params
= ctx
->Array
.Index
.Ptr
;
4102 case GL_TEXTURE_COORD_ARRAY_POINTER
:
4103 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
4105 case GL_EDGE_FLAG_ARRAY_POINTER
:
4106 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
4108 case GL_FEEDBACK_BUFFER_POINTER
:
4109 *params
= ctx
->Feedback
.Buffer
;
4111 case GL_SELECTION_BUFFER_POINTER
:
4112 *params
= ctx
->Select
.Buffer
;
4115 gl_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
4123 _mesa_GetString( GLenum name
)
4125 GET_CURRENT_CONTEXT(ctx
);
4126 static char *vendor
= "Brian Paul";
4127 static char *renderer
= "Mesa";
4128 static char *version
= "1.2 Mesa 3.3 beta";
4130 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH_WITH_RETVAL(ctx
, "glGetString", 0);
4132 /* this is a required driver function */
4133 assert(ctx
->Driver
.GetString
);
4135 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
4141 return (const GLubyte
*) vendor
;
4143 return (const GLubyte
*) renderer
;
4145 return (const GLubyte
*) version
;
4147 return (GLubyte
*) gl_extensions_get_string( ctx
);
4149 gl_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
4150 return (GLubyte
*) 0;
4157 * Execute a glGetError command
4160 _mesa_GetError( void )
4162 GET_CURRENT_CONTEXT(ctx
);
4164 GLenum e
= ctx
->ErrorValue
;
4166 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL( ctx
, "glGetError", (GLenum
) 0);
4168 if (MESA_VERBOSE
& VERBOSE_API
)
4169 fprintf(stderr
, "glGetError <-- %s\n", gl_lookup_enum_by_nr(e
));
4171 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;