1 /* $Id: get.c,v 1.42 2000/11/19 23:10:25 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36 #include "extensions.h"
42 #include "math/m_matrix.h"
47 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
48 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
49 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
52 /* Needed for an Amiga compiler */
53 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
54 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
56 /* all other compilers */
57 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
58 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
64 pixel_texgen_mode(const GLcontext
*ctx
)
66 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
67 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
75 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
87 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
89 GET_CURRENT_CONTEXT(ctx
);
91 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
92 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
93 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
95 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetBooleanv");
100 if (MESA_VERBOSE
& VERBOSE_API
)
101 fprintf(stderr
, "glGetBooleanv %s\n", gl_lookup_enum_by_nr(pname
));
103 if (ctx
->Driver
.GetBooleanv
104 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
108 case GL_ACCUM_RED_BITS
:
109 *params
= INT_TO_BOOL(ctx
->Visual
.AccumRedBits
);
111 case GL_ACCUM_GREEN_BITS
:
112 *params
= INT_TO_BOOL(ctx
->Visual
.AccumGreenBits
);
114 case GL_ACCUM_BLUE_BITS
:
115 *params
= INT_TO_BOOL(ctx
->Visual
.AccumBlueBits
);
117 case GL_ACCUM_ALPHA_BITS
:
118 *params
= INT_TO_BOOL(ctx
->Visual
.AccumAlphaBits
);
120 case GL_ACCUM_CLEAR_VALUE
:
121 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
122 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
123 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
124 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
127 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
130 *params
= INT_TO_BOOL(ctx
->Visual
.AlphaBits
);
133 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
136 *params
= ctx
->Color
.AlphaEnabled
;
138 case GL_ALPHA_TEST_FUNC
:
139 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
141 case GL_ALPHA_TEST_REF
:
142 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
144 case GL_ATTRIB_STACK_DEPTH
:
145 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
148 *params
= ctx
->Eval
.AutoNormal
;
151 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
154 *params
= ctx
->Color
.BlendEnabled
;
157 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
160 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
162 case GL_BLEND_SRC_RGB_EXT
:
163 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
165 case GL_BLEND_DST_RGB_EXT
:
166 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
168 case GL_BLEND_SRC_ALPHA_EXT
:
169 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
171 case GL_BLEND_DST_ALPHA_EXT
:
172 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
174 case GL_BLEND_EQUATION_EXT
:
175 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
177 case GL_BLEND_COLOR_EXT
:
178 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
179 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
180 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
181 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
184 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
187 *params
= INT_TO_BOOL( ctx
->Visual
.BlueBits
);
190 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
192 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
193 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
201 *params
= ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
203 case GL_COLOR_CLEAR_VALUE
:
204 params
[0] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[0]);
205 params
[1] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[1]);
206 params
[2] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[2]);
207 params
[3] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[3]);
209 case GL_COLOR_MATERIAL
:
210 *params
= ctx
->Light
.ColorMaterialEnabled
;
212 case GL_COLOR_MATERIAL_FACE
:
213 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
215 case GL_COLOR_MATERIAL_PARAMETER
:
216 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
218 case GL_COLOR_WRITEMASK
:
219 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
220 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
221 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
222 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
225 *params
= ctx
->Polygon
.CullFlag
;
227 case GL_CULL_FACE_MODE
:
228 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
230 case GL_CURRENT_COLOR
:
231 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
232 params
[0] = INT_TO_BOOL(ctx
->Current
.Color
[0]);
233 params
[1] = INT_TO_BOOL(ctx
->Current
.Color
[1]);
234 params
[2] = INT_TO_BOOL(ctx
->Current
.Color
[2]);
235 params
[3] = INT_TO_BOOL(ctx
->Current
.Color
[3]);
237 case GL_CURRENT_INDEX
:
238 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
239 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
241 case GL_CURRENT_NORMAL
:
242 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
243 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[0]);
244 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[1]);
245 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[2]);
247 case GL_CURRENT_RASTER_COLOR
:
248 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
249 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
250 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
251 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
253 case GL_CURRENT_RASTER_DISTANCE
:
254 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
256 case GL_CURRENT_RASTER_INDEX
:
257 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
259 case GL_CURRENT_RASTER_POSITION
:
260 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
261 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
262 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
263 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
265 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
266 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0]);
267 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1]);
268 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2]);
269 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3]);
271 case GL_CURRENT_RASTER_POSITION_VALID
:
272 *params
= ctx
->Current
.RasterPosValid
;
274 case GL_CURRENT_TEXTURE_COORDS
:
275 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
276 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][0]);
277 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][1]);
278 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][2]);
279 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][3]);
282 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
285 *params
= INT_TO_BOOL(ctx
->Visual
.DepthBits
);
287 case GL_DEPTH_CLEAR_VALUE
:
288 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
291 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
294 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
295 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
298 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
301 *params
= ctx
->Depth
.Test
;
303 case GL_DEPTH_WRITEMASK
:
304 *params
= ctx
->Depth
.Mask
;
307 *params
= ctx
->Color
.DitherFlag
;
309 case GL_DOUBLEBUFFER
:
310 *params
= ctx
->Visual
.DBflag
;
313 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
316 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
317 *params
= ctx
->Current
.EdgeFlag
;
319 case GL_FEEDBACK_BUFFER_SIZE
:
320 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
322 case GL_FEEDBACK_BUFFER_TYPE
:
323 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
326 *params
= ctx
->Fog
.Enabled
;
329 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
330 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
331 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
332 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
335 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
338 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
341 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
344 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
347 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
350 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
353 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
356 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
359 *params
= INT_TO_BOOL( ctx
->Visual
.GreenBits
);
362 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
365 if (ctx
->Extensions
.EXT_histogram
) {
366 *params
= ctx
->Pixel
.HistogramEnabled
;
369 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
374 *params
= INT_TO_BOOL( ctx
->Visual
.IndexBits
);
376 case GL_INDEX_CLEAR_VALUE
:
377 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
380 *params
= ctx
->Visual
.RGBAflag
? GL_FALSE
: GL_TRUE
;
382 case GL_INDEX_OFFSET
:
383 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
386 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
388 case GL_INDEX_WRITEMASK
:
389 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
399 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
402 *params
= ctx
->Light
.Enabled
;
404 case GL_LIGHT_MODEL_AMBIENT
:
405 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
406 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
407 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
408 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
410 case GL_LIGHT_MODEL_COLOR_CONTROL
:
411 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
413 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
414 *params
= ctx
->Light
.Model
.LocalViewer
;
416 case GL_LIGHT_MODEL_TWO_SIDE
:
417 *params
= ctx
->Light
.Model
.TwoSide
;
420 *params
= ctx
->Line
.SmoothFlag
;
422 case GL_LINE_SMOOTH_HINT
:
423 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
425 case GL_LINE_STIPPLE
:
426 *params
= ctx
->Line
.StippleFlag
;
428 case GL_LINE_STIPPLE_PATTERN
:
429 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
431 case GL_LINE_STIPPLE_REPEAT
:
432 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
435 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
437 case GL_LINE_WIDTH_GRANULARITY
:
438 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
440 case GL_LINE_WIDTH_RANGE
:
441 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
442 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
444 case GL_ALIASED_LINE_WIDTH_RANGE
:
445 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
446 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
449 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
452 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
455 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
456 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
458 case GL_INDEX_LOGIC_OP
:
459 *params
= ctx
->Color
.IndexLogicOpEnabled
;
461 case GL_COLOR_LOGIC_OP
:
462 *params
= ctx
->Color
.ColorLogicOpEnabled
;
464 case GL_LOGIC_OP_MODE
:
465 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
467 case GL_MAP1_COLOR_4
:
468 *params
= ctx
->Eval
.Map1Color4
;
470 case GL_MAP1_GRID_DOMAIN
:
471 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
472 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
474 case GL_MAP1_GRID_SEGMENTS
:
475 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
478 *params
= ctx
->Eval
.Map1Index
;
481 *params
= ctx
->Eval
.Map1Normal
;
483 case GL_MAP1_TEXTURE_COORD_1
:
484 *params
= ctx
->Eval
.Map1TextureCoord1
;
486 case GL_MAP1_TEXTURE_COORD_2
:
487 *params
= ctx
->Eval
.Map1TextureCoord2
;
489 case GL_MAP1_TEXTURE_COORD_3
:
490 *params
= ctx
->Eval
.Map1TextureCoord3
;
492 case GL_MAP1_TEXTURE_COORD_4
:
493 *params
= ctx
->Eval
.Map1TextureCoord4
;
495 case GL_MAP1_VERTEX_3
:
496 *params
= ctx
->Eval
.Map1Vertex3
;
498 case GL_MAP1_VERTEX_4
:
499 *params
= ctx
->Eval
.Map1Vertex4
;
501 case GL_MAP2_COLOR_4
:
502 *params
= ctx
->Eval
.Map2Color4
;
504 case GL_MAP2_GRID_DOMAIN
:
505 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
506 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
507 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
508 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
510 case GL_MAP2_GRID_SEGMENTS
:
511 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
512 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
515 *params
= ctx
->Eval
.Map2Index
;
518 *params
= ctx
->Eval
.Map2Normal
;
520 case GL_MAP2_TEXTURE_COORD_1
:
521 *params
= ctx
->Eval
.Map2TextureCoord1
;
523 case GL_MAP2_TEXTURE_COORD_2
:
524 *params
= ctx
->Eval
.Map2TextureCoord2
;
526 case GL_MAP2_TEXTURE_COORD_3
:
527 *params
= ctx
->Eval
.Map2TextureCoord3
;
529 case GL_MAP2_TEXTURE_COORD_4
:
530 *params
= ctx
->Eval
.Map2TextureCoord4
;
532 case GL_MAP2_VERTEX_3
:
533 *params
= ctx
->Eval
.Map2Vertex3
;
535 case GL_MAP2_VERTEX_4
:
536 *params
= ctx
->Eval
.Map2Vertex4
;
539 *params
= ctx
->Pixel
.MapColorFlag
;
542 *params
= ctx
->Pixel
.MapStencilFlag
;
545 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
547 case GL_MAX_ATTRIB_STACK_DEPTH
:
548 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
550 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
551 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
553 case GL_MAX_CLIP_PLANES
:
554 *params
= INT_TO_BOOL(MAX_CLIP_PLANES
);
556 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
557 *params
= INT_TO_BOOL(VB_MAX
);
559 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
560 *params
= INT_TO_BOOL(VB_MAX
);
562 case GL_MAX_EVAL_ORDER
:
563 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
566 *params
= INT_TO_BOOL(MAX_LIGHTS
);
568 case GL_MAX_LIST_NESTING
:
569 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
571 case GL_MAX_MODELVIEW_STACK_DEPTH
:
572 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
574 case GL_MAX_NAME_STACK_DEPTH
:
575 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
577 case GL_MAX_PIXEL_MAP_TABLE
:
578 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
580 case GL_MAX_PROJECTION_STACK_DEPTH
:
581 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
583 case GL_MAX_TEXTURE_SIZE
:
584 case GL_MAX_3D_TEXTURE_SIZE
:
585 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureSize
);
587 case GL_MAX_TEXTURE_STACK_DEPTH
:
588 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
590 case GL_MAX_VIEWPORT_DIMS
:
591 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
592 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
595 *params
= ctx
->Pixel
.MinMaxEnabled
;
597 case GL_MODELVIEW_MATRIX
:
599 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelView
.m
[i
]);
602 case GL_MODELVIEW_STACK_DEPTH
:
603 *params
= INT_TO_BOOL(ctx
->ModelViewStackDepth
+ 1);
605 case GL_NAME_STACK_DEPTH
:
606 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
609 *params
= ctx
->Transform
.Normalize
;
611 case GL_PACK_ALIGNMENT
:
612 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
614 case GL_PACK_LSB_FIRST
:
615 *params
= ctx
->Pack
.LsbFirst
;
617 case GL_PACK_ROW_LENGTH
:
618 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
620 case GL_PACK_SKIP_PIXELS
:
621 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
623 case GL_PACK_SKIP_ROWS
:
624 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
626 case GL_PACK_SWAP_BYTES
:
627 *params
= ctx
->Pack
.SwapBytes
;
629 case GL_PACK_SKIP_IMAGES_EXT
:
630 *params
= ctx
->Pack
.SkipImages
;
632 case GL_PACK_IMAGE_HEIGHT_EXT
:
633 *params
= ctx
->Pack
.ImageHeight
;
635 case GL_PERSPECTIVE_CORRECTION_HINT
:
636 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
638 case GL_PIXEL_MAP_A_TO_A_SIZE
:
639 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
641 case GL_PIXEL_MAP_B_TO_B_SIZE
:
642 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
644 case GL_PIXEL_MAP_G_TO_G_SIZE
:
645 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
647 case GL_PIXEL_MAP_I_TO_A_SIZE
:
648 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
650 case GL_PIXEL_MAP_I_TO_B_SIZE
:
651 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
653 case GL_PIXEL_MAP_I_TO_G_SIZE
:
654 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
656 case GL_PIXEL_MAP_I_TO_I_SIZE
:
657 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
659 case GL_PIXEL_MAP_I_TO_R_SIZE
:
660 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
662 case GL_PIXEL_MAP_R_TO_R_SIZE
:
663 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
665 case GL_PIXEL_MAP_S_TO_S_SIZE
:
666 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
669 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
671 case GL_POINT_SIZE_GRANULARITY
:
672 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
674 case GL_POINT_SIZE_RANGE
:
675 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
676 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
678 case GL_ALIASED_POINT_SIZE_RANGE
:
679 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
680 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
682 case GL_POINT_SMOOTH
:
683 *params
= ctx
->Point
.SmoothFlag
;
685 case GL_POINT_SMOOTH_HINT
:
686 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
688 case GL_POINT_SIZE_MIN_EXT
:
689 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
691 case GL_POINT_SIZE_MAX_EXT
:
692 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
694 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
695 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
697 case GL_DISTANCE_ATTENUATION_EXT
:
698 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
699 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
700 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
702 case GL_POLYGON_MODE
:
703 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
704 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
706 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
707 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
709 case GL_POLYGON_OFFSET_FACTOR
:
710 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
712 case GL_POLYGON_OFFSET_UNITS
:
713 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
715 case GL_POLYGON_SMOOTH
:
716 *params
= ctx
->Polygon
.SmoothFlag
;
718 case GL_POLYGON_SMOOTH_HINT
:
719 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
721 case GL_POLYGON_STIPPLE
:
722 *params
= ctx
->Polygon
.StippleFlag
;
724 case GL_PROJECTION_MATRIX
:
726 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrix
.m
[i
]);
729 case GL_PROJECTION_STACK_DEPTH
:
730 *params
= INT_TO_BOOL(ctx
->ProjectionStackDepth
+ 1);
733 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
736 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
739 *params
= INT_TO_BOOL( ctx
->Visual
.RedBits
);
742 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
745 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
748 *params
= ctx
->Visual
.RGBAflag
;
751 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
752 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
753 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
754 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
756 case GL_SCISSOR_TEST
:
757 *params
= ctx
->Scissor
.Enabled
;
759 case GL_SELECTION_BUFFER_SIZE
:
760 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
763 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
765 case GL_SHARED_TEXTURE_PALETTE_EXT
:
766 *params
= ctx
->Texture
.SharedPalette
;
768 case GL_STENCIL_BITS
:
769 *params
= INT_TO_BOOL(ctx
->Visual
.StencilBits
);
771 case GL_STENCIL_CLEAR_VALUE
:
772 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
774 case GL_STENCIL_FAIL
:
775 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
);
777 case GL_STENCIL_FUNC
:
778 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
);
780 case GL_STENCIL_PASS_DEPTH_FAIL
:
781 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
);
783 case GL_STENCIL_PASS_DEPTH_PASS
:
784 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
);
787 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
);
789 case GL_STENCIL_TEST
:
790 *params
= ctx
->Stencil
.Enabled
;
792 case GL_STENCIL_VALUE_MASK
:
793 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
);
795 case GL_STENCIL_WRITEMASK
:
796 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
);
799 *params
= ctx
->Visual
.StereoFlag
;
801 case GL_SUBPIXEL_BITS
:
802 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
805 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
808 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
811 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
813 case GL_TEXTURE_BINDING_1D
:
814 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
816 case GL_TEXTURE_BINDING_2D
:
817 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
819 case GL_TEXTURE_BINDING_3D
:
820 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
822 case GL_TEXTURE_ENV_COLOR
:
824 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
825 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
826 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
827 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
830 case GL_TEXTURE_ENV_MODE
:
831 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
833 case GL_TEXTURE_GEN_S
:
834 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
836 case GL_TEXTURE_GEN_T
:
837 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
839 case GL_TEXTURE_GEN_R
:
840 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
842 case GL_TEXTURE_GEN_Q
:
843 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
845 case GL_TEXTURE_MATRIX
:
848 FLOAT_TO_BOOL(ctx
->TextureMatrix
[texTransformUnit
].m
[i
]);
851 case GL_TEXTURE_STACK_DEPTH
:
852 *params
= INT_TO_BOOL(ctx
->TextureStackDepth
[texTransformUnit
] + 1);
854 case GL_UNPACK_ALIGNMENT
:
855 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
857 case GL_UNPACK_LSB_FIRST
:
858 *params
= ctx
->Unpack
.LsbFirst
;
860 case GL_UNPACK_ROW_LENGTH
:
861 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
863 case GL_UNPACK_SKIP_PIXELS
:
864 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
866 case GL_UNPACK_SKIP_ROWS
:
867 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
869 case GL_UNPACK_SWAP_BYTES
:
870 *params
= ctx
->Unpack
.SwapBytes
;
872 case GL_UNPACK_SKIP_IMAGES_EXT
:
873 *params
= ctx
->Unpack
.SkipImages
;
875 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
876 *params
= ctx
->Unpack
.ImageHeight
;
879 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
880 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
881 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
882 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
885 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
888 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
890 case GL_VERTEX_ARRAY
:
891 *params
= ctx
->Array
.Vertex
.Enabled
;
893 case GL_VERTEX_ARRAY_SIZE
:
894 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
896 case GL_VERTEX_ARRAY_TYPE
:
897 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
899 case GL_VERTEX_ARRAY_STRIDE
:
900 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
902 case GL_VERTEX_ARRAY_COUNT_EXT
:
903 *params
= INT_TO_BOOL(0);
905 case GL_NORMAL_ARRAY
:
906 *params
= ctx
->Array
.Normal
.Enabled
;
908 case GL_NORMAL_ARRAY_TYPE
:
909 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
911 case GL_NORMAL_ARRAY_STRIDE
:
912 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
914 case GL_NORMAL_ARRAY_COUNT_EXT
:
915 *params
= INT_TO_BOOL(0);
918 *params
= ctx
->Array
.Color
.Enabled
;
920 case GL_COLOR_ARRAY_SIZE
:
921 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
923 case GL_COLOR_ARRAY_TYPE
:
924 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
926 case GL_COLOR_ARRAY_STRIDE
:
927 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
929 case GL_COLOR_ARRAY_COUNT_EXT
:
930 *params
= INT_TO_BOOL(0);
933 *params
= ctx
->Array
.Index
.Enabled
;
935 case GL_INDEX_ARRAY_TYPE
:
936 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
938 case GL_INDEX_ARRAY_STRIDE
:
939 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
941 case GL_INDEX_ARRAY_COUNT_EXT
:
942 *params
= INT_TO_BOOL(0);
944 case GL_TEXTURE_COORD_ARRAY
:
945 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
947 case GL_TEXTURE_COORD_ARRAY_SIZE
:
948 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
950 case GL_TEXTURE_COORD_ARRAY_TYPE
:
951 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
953 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
954 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
956 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
957 *params
= INT_TO_BOOL(0);
959 case GL_EDGE_FLAG_ARRAY
:
960 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
962 case GL_EDGE_FLAG_ARRAY_STRIDE
:
963 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
966 /* GL_ARB_multitexture */
967 case GL_MAX_TEXTURE_UNITS_ARB
:
968 *params
= ctx
->Const
.MaxTextureUnits
;
970 case GL_ACTIVE_TEXTURE_ARB
:
971 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
973 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
974 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
977 /* GL_ARB_texture_cube_map */
978 case GL_TEXTURE_CUBE_MAP_ARB
:
979 if (ctx
->Extensions
.ARB_texture_cube_map
)
980 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
982 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
984 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
985 if (ctx
->Extensions
.ARB_texture_cube_map
)
986 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
988 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
990 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
991 if (ctx
->Extensions
.ARB_texture_cube_map
)
992 *params
= INT_TO_BOOL(ctx
->Const
.MaxCubeTextureSize
);
994 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
997 /* GL_ARB_texture_compression */
998 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
999 if (ctx
->Extensions
.ARB_texture_compression
) {
1000 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1003 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1005 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1006 if (ctx
->Extensions
.ARB_texture_compression
) {
1007 *params
= INT_TO_BOOL(ctx
->Const
.NumCompressedTextureFormats
);
1010 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1012 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1013 if (ctx
->Extensions
.ARB_texture_compression
) {
1015 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
1016 params
[i
] = INT_TO_BOOL(ctx
->Const
.CompressedTextureFormats
[i
]);
1019 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1022 /* GL_PGI_misc_hints */
1023 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
1024 *params
= ENUM_TO_BOOL(GL_NICEST
);
1026 case GL_STRICT_LIGHTING_HINT_PGI
:
1027 *params
= ENUM_TO_BOOL(ctx
->Hint
.StrictLighting
);
1029 case GL_STRICT_SCISSOR_HINT_PGI
:
1030 case GL_FULL_STIPPLE_HINT_PGI
:
1031 *params
= ENUM_TO_BOOL(GL_TRUE
);
1033 case GL_CONSERVE_MEMORY_HINT_PGI
:
1034 *params
= ENUM_TO_BOOL(GL_FALSE
);
1036 case GL_ALWAYS_FAST_HINT_PGI
:
1037 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1038 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
1039 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
1041 case GL_ALWAYS_SOFT_HINT_PGI
:
1042 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1043 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
1044 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
1046 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
1047 *params
= (GLboolean
) GL_TRUE
;
1049 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
1050 *params
= (GLboolean
) ctx
->Hint
.AllowDrawWin
;
1052 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
1053 *params
= (GLboolean
) ctx
->Hint
.AllowDrawFrg
;
1055 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
1056 *params
= (GLboolean
) ctx
->Hint
.AllowDrawMem
;
1058 case GL_CLIP_NEAR_HINT_PGI
:
1059 case GL_CLIP_FAR_HINT_PGI
:
1060 *params
= ENUM_TO_BOOL(GL_TRUE
);
1062 case GL_WIDE_LINE_HINT_PGI
:
1063 *params
= ENUM_TO_BOOL(GL_DONT_CARE
);
1065 case GL_BACK_NORMALS_HINT_PGI
:
1066 *params
= ENUM_TO_BOOL(GL_TRUE
);
1068 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
1072 /* GL_EXT_compiled_vertex_array */
1073 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1074 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1076 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1077 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1080 /* GL_ARB_transpose_matrix */
1081 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1085 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
1086 for (i
=0;i
<16;i
++) {
1087 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1091 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1095 _math_transposef(tm
, ctx
->ModelView
.m
);
1096 for (i
=0;i
<16;i
++) {
1097 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1101 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1105 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
1106 for (i
=0;i
<16;i
++) {
1107 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1111 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1115 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
1116 for (i
=0;i
<16;i
++) {
1117 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1122 /* GL_HP_occlusion_test */
1123 case GL_OCCLUSION_TEST_HP
:
1124 if (ctx
->Extensions
.HP_occlusion_test
) {
1125 *params
= ctx
->Depth
.OcclusionTest
;
1128 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1131 case GL_OCCLUSION_TEST_RESULT_HP
:
1132 if (ctx
->Extensions
.HP_occlusion_test
) {
1133 if (ctx
->Depth
.OcclusionTest
)
1134 *params
= ctx
->OcclusionResult
;
1136 *params
= ctx
->OcclusionResultSaved
;
1137 /* reset flag now */
1138 ctx
->OcclusionResult
= GL_FALSE
;
1139 ctx
->OcclusionResultSaved
= GL_FALSE
;
1142 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1146 /* GL_SGIS_pixel_texture */
1147 case GL_PIXEL_TEXTURE_SGIS
:
1148 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1151 /* GL_SGIX_pixel_texture */
1152 case GL_PIXEL_TEX_GEN_SGIX
:
1153 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1155 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1156 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1159 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1160 case GL_COLOR_MATRIX_SGI
:
1161 for (i
=0;i
<16;i
++) {
1162 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrix
.m
[i
]);
1165 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1166 *params
= INT_TO_BOOL(ctx
->ColorStackDepth
+ 1);
1168 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1169 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1171 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1172 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1174 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1175 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1177 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1178 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1180 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1181 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1183 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1184 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1186 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1187 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1189 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1190 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1192 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1193 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1196 /* GL_EXT_convolution (also in 1.2 imaging) */
1197 case GL_MAX_CONVOLUTION_WIDTH
:
1198 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionWidth
);
1200 case GL_MAX_CONVOLUTION_HEIGHT
:
1201 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionHeight
);
1203 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1204 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1206 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1207 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1209 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1210 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1212 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1213 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1215 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1216 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1218 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1219 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1221 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1222 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1224 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1225 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1228 /* GL_SGI_color_table (also in 1.2 imaging */
1229 case GL_COLOR_TABLE_SGI
:
1230 *params
= ctx
->Pixel
.ColorTableEnabled
;
1232 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1233 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1235 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1236 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1239 /* GL_EXT_secondary_color */
1240 case GL_COLOR_SUM_EXT
:
1241 *params
= ctx
->Fog
.ColorSumEnabled
;
1243 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1244 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1245 params
[0] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[0]);
1246 params
[1] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[1]);
1247 params
[2] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[2]);
1249 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1250 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1252 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1253 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1255 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1256 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1258 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1259 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1262 /* GL_EXT_fog_coord */
1263 case GL_CURRENT_FOG_COORDINATE_EXT
:
1264 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1265 *params
= FLOAT_TO_BOOL(ctx
->Current
.FogCoord
);
1267 case GL_FOG_COORDINATE_ARRAY_EXT
:
1268 *params
= ctx
->Array
.FogCoord
.Enabled
;
1270 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1271 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1273 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1274 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1278 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1286 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1288 GET_CURRENT_CONTEXT(ctx
);
1290 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1291 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
1292 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1294 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetDoublev");
1299 if (MESA_VERBOSE
& VERBOSE_API
)
1300 fprintf(stderr
, "glGetDoublev %s\n", gl_lookup_enum_by_nr(pname
));
1302 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1306 case GL_ACCUM_RED_BITS
:
1307 *params
= (GLdouble
) ctx
->Visual
.AccumRedBits
;
1309 case GL_ACCUM_GREEN_BITS
:
1310 *params
= (GLdouble
) ctx
->Visual
.AccumGreenBits
;
1312 case GL_ACCUM_BLUE_BITS
:
1313 *params
= (GLdouble
) ctx
->Visual
.AccumBlueBits
;
1315 case GL_ACCUM_ALPHA_BITS
:
1316 *params
= (GLdouble
) ctx
->Visual
.AccumAlphaBits
;
1318 case GL_ACCUM_CLEAR_VALUE
:
1319 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1320 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1321 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1322 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1325 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1328 *params
= (GLdouble
) ctx
->Visual
.AlphaBits
;
1330 case GL_ALPHA_SCALE
:
1331 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1334 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1336 case GL_ALPHA_TEST_FUNC
:
1337 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1339 case GL_ALPHA_TEST_REF
:
1340 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
1342 case GL_ATTRIB_STACK_DEPTH
:
1343 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1345 case GL_AUTO_NORMAL
:
1346 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1348 case GL_AUX_BUFFERS
:
1349 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1352 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1355 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1358 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1360 case GL_BLEND_SRC_RGB_EXT
:
1361 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1363 case GL_BLEND_DST_RGB_EXT
:
1364 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1366 case GL_BLEND_SRC_ALPHA_EXT
:
1367 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1369 case GL_BLEND_DST_ALPHA_EXT
:
1370 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1372 case GL_BLEND_EQUATION_EXT
:
1373 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1375 case GL_BLEND_COLOR_EXT
:
1376 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1377 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1378 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1379 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1382 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1385 *params
= (GLdouble
) ctx
->Visual
.BlueBits
;
1388 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1390 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1391 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1393 case GL_CLIP_PLANE0
:
1394 case GL_CLIP_PLANE1
:
1395 case GL_CLIP_PLANE2
:
1396 case GL_CLIP_PLANE3
:
1397 case GL_CLIP_PLANE4
:
1398 case GL_CLIP_PLANE5
:
1399 *params
= (GLdouble
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
1401 case GL_COLOR_CLEAR_VALUE
:
1402 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1403 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1404 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1405 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1407 case GL_COLOR_MATERIAL
:
1408 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1410 case GL_COLOR_MATERIAL_FACE
:
1411 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1413 case GL_COLOR_MATERIAL_PARAMETER
:
1414 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1416 case GL_COLOR_WRITEMASK
:
1417 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1418 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1419 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1420 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1423 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1425 case GL_CULL_FACE_MODE
:
1426 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1428 case GL_CURRENT_COLOR
:
1429 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1430 params
[0] = CHAN_TO_FLOAT(ctx
->Current
.Color
[0]);
1431 params
[1] = CHAN_TO_FLOAT(ctx
->Current
.Color
[1]);
1432 params
[2] = CHAN_TO_FLOAT(ctx
->Current
.Color
[2]);
1433 params
[3] = CHAN_TO_FLOAT(ctx
->Current
.Color
[3]);
1435 case GL_CURRENT_INDEX
:
1436 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1437 *params
= (GLdouble
) ctx
->Current
.Index
;
1439 case GL_CURRENT_NORMAL
:
1440 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1441 params
[0] = (GLdouble
) ctx
->Current
.Normal
[0];
1442 params
[1] = (GLdouble
) ctx
->Current
.Normal
[1];
1443 params
[2] = (GLdouble
) ctx
->Current
.Normal
[2];
1445 case GL_CURRENT_RASTER_COLOR
:
1446 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1447 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1448 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1449 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1451 case GL_CURRENT_RASTER_DISTANCE
:
1452 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1454 case GL_CURRENT_RASTER_INDEX
:
1455 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1457 case GL_CURRENT_RASTER_POSITION
:
1458 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1459 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1460 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1461 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1463 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1464 params
[0] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
1465 params
[1] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
1466 params
[2] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
1467 params
[3] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
1469 case GL_CURRENT_RASTER_POSITION_VALID
:
1470 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1472 case GL_CURRENT_TEXTURE_COORDS
:
1473 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1474 params
[0] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
1475 params
[1] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
1476 params
[2] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
1477 params
[3] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
1480 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1483 *params
= (GLdouble
) ctx
->Visual
.DepthBits
;
1485 case GL_DEPTH_CLEAR_VALUE
:
1486 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1489 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1491 case GL_DEPTH_RANGE
:
1492 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1493 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1495 case GL_DEPTH_SCALE
:
1496 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1499 *params
= (GLdouble
) ctx
->Depth
.Test
;
1501 case GL_DEPTH_WRITEMASK
:
1502 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1505 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1507 case GL_DOUBLEBUFFER
:
1508 *params
= (GLdouble
) ctx
->Visual
.DBflag
;
1510 case GL_DRAW_BUFFER
:
1511 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1514 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
1515 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1517 case GL_FEEDBACK_BUFFER_SIZE
:
1518 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1520 case GL_FEEDBACK_BUFFER_TYPE
:
1521 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1524 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1527 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1528 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1529 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1530 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1532 case GL_FOG_DENSITY
:
1533 *params
= (GLdouble
) ctx
->Fog
.Density
;
1536 *params
= (GLdouble
) ctx
->Fog
.End
;
1539 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1542 *params
= (GLdouble
) ctx
->Fog
.Index
;
1545 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1548 *params
= (GLdouble
) ctx
->Fog
.Start
;
1551 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1554 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1557 *params
= (GLdouble
) ctx
->Visual
.GreenBits
;
1559 case GL_GREEN_SCALE
:
1560 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1563 if (ctx
->Extensions
.EXT_histogram
) {
1564 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
1567 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
1572 *params
= (GLdouble
) ctx
->Visual
.IndexBits
;
1574 case GL_INDEX_CLEAR_VALUE
:
1575 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1578 *params
= ctx
->Visual
.RGBAflag
? 0.0 : 1.0;
1580 case GL_INDEX_OFFSET
:
1581 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1583 case GL_INDEX_SHIFT
:
1584 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1586 case GL_INDEX_WRITEMASK
:
1587 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1597 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1600 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1602 case GL_LIGHT_MODEL_AMBIENT
:
1603 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1604 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1605 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1606 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1608 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1609 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1611 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1612 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1614 case GL_LIGHT_MODEL_TWO_SIDE
:
1615 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1617 case GL_LINE_SMOOTH
:
1618 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1620 case GL_LINE_SMOOTH_HINT
:
1621 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1623 case GL_LINE_STIPPLE
:
1624 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1626 case GL_LINE_STIPPLE_PATTERN
:
1627 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1629 case GL_LINE_STIPPLE_REPEAT
:
1630 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1633 *params
= (GLdouble
) ctx
->Line
.Width
;
1635 case GL_LINE_WIDTH_GRANULARITY
:
1636 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1638 case GL_LINE_WIDTH_RANGE
:
1639 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1640 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1642 case GL_ALIASED_LINE_WIDTH_RANGE
:
1643 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1644 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1647 *params
= (GLdouble
) ctx
->List
.ListBase
;
1650 *params
= (GLdouble
) ctx
->CurrentListNum
;
1653 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1654 : ENUM_TO_DOUBLE(GL_COMPILE
);
1656 case GL_INDEX_LOGIC_OP
:
1657 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1659 case GL_COLOR_LOGIC_OP
:
1660 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1662 case GL_LOGIC_OP_MODE
:
1663 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1665 case GL_MAP1_COLOR_4
:
1666 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1668 case GL_MAP1_GRID_DOMAIN
:
1669 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1670 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1672 case GL_MAP1_GRID_SEGMENTS
:
1673 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1676 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1678 case GL_MAP1_NORMAL
:
1679 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1681 case GL_MAP1_TEXTURE_COORD_1
:
1682 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1684 case GL_MAP1_TEXTURE_COORD_2
:
1685 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1687 case GL_MAP1_TEXTURE_COORD_3
:
1688 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1690 case GL_MAP1_TEXTURE_COORD_4
:
1691 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1693 case GL_MAP1_VERTEX_3
:
1694 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1696 case GL_MAP1_VERTEX_4
:
1697 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1699 case GL_MAP2_COLOR_4
:
1700 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1702 case GL_MAP2_GRID_DOMAIN
:
1703 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1704 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1705 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1706 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1708 case GL_MAP2_GRID_SEGMENTS
:
1709 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1710 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1713 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1715 case GL_MAP2_NORMAL
:
1716 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1718 case GL_MAP2_TEXTURE_COORD_1
:
1719 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1721 case GL_MAP2_TEXTURE_COORD_2
:
1722 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1724 case GL_MAP2_TEXTURE_COORD_3
:
1725 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1727 case GL_MAP2_TEXTURE_COORD_4
:
1728 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1730 case GL_MAP2_VERTEX_3
:
1731 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1733 case GL_MAP2_VERTEX_4
:
1734 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1737 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1739 case GL_MAP_STENCIL
:
1740 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1742 case GL_MATRIX_MODE
:
1743 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1745 case GL_MAX_ATTRIB_STACK_DEPTH
:
1746 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1748 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1749 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1751 case GL_MAX_CLIP_PLANES
:
1752 *params
= (GLdouble
) MAX_CLIP_PLANES
;
1754 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1755 *params
= (GLdouble
) VB_MAX
;
1757 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1758 *params
= (GLdouble
) VB_MAX
;
1760 case GL_MAX_EVAL_ORDER
:
1761 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1764 *params
= (GLdouble
) MAX_LIGHTS
;
1766 case GL_MAX_LIST_NESTING
:
1767 *params
= (GLdouble
) MAX_LIST_NESTING
;
1769 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1770 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1772 case GL_MAX_NAME_STACK_DEPTH
:
1773 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1775 case GL_MAX_PIXEL_MAP_TABLE
:
1776 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1778 case GL_MAX_PROJECTION_STACK_DEPTH
:
1779 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1781 case GL_MAX_TEXTURE_SIZE
:
1782 case GL_MAX_3D_TEXTURE_SIZE
:
1783 *params
= (GLdouble
) ctx
->Const
.MaxTextureSize
;
1785 case GL_MAX_TEXTURE_STACK_DEPTH
:
1786 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1788 case GL_MAX_VIEWPORT_DIMS
:
1789 params
[0] = (GLdouble
) MAX_WIDTH
;
1790 params
[1] = (GLdouble
) MAX_HEIGHT
;
1793 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
1795 case GL_MODELVIEW_MATRIX
:
1796 for (i
=0;i
<16;i
++) {
1797 params
[i
] = (GLdouble
) ctx
->ModelView
.m
[i
];
1800 case GL_MODELVIEW_STACK_DEPTH
:
1801 *params
= (GLdouble
) (ctx
->ModelViewStackDepth
+ 1);
1803 case GL_NAME_STACK_DEPTH
:
1804 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1807 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1809 case GL_PACK_ALIGNMENT
:
1810 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1812 case GL_PACK_LSB_FIRST
:
1813 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1815 case GL_PACK_ROW_LENGTH
:
1816 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1818 case GL_PACK_SKIP_PIXELS
:
1819 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1821 case GL_PACK_SKIP_ROWS
:
1822 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1824 case GL_PACK_SWAP_BYTES
:
1825 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
1827 case GL_PACK_SKIP_IMAGES_EXT
:
1828 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
1830 case GL_PACK_IMAGE_HEIGHT_EXT
:
1831 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
1833 case GL_PERSPECTIVE_CORRECTION_HINT
:
1834 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
1836 case GL_PIXEL_MAP_A_TO_A_SIZE
:
1837 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
1839 case GL_PIXEL_MAP_B_TO_B_SIZE
:
1840 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
1842 case GL_PIXEL_MAP_G_TO_G_SIZE
:
1843 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
1845 case GL_PIXEL_MAP_I_TO_A_SIZE
:
1846 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
1848 case GL_PIXEL_MAP_I_TO_B_SIZE
:
1849 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
1851 case GL_PIXEL_MAP_I_TO_G_SIZE
:
1852 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
1854 case GL_PIXEL_MAP_I_TO_I_SIZE
:
1855 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
1857 case GL_PIXEL_MAP_I_TO_R_SIZE
:
1858 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
1860 case GL_PIXEL_MAP_R_TO_R_SIZE
:
1861 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
1863 case GL_PIXEL_MAP_S_TO_S_SIZE
:
1864 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
1867 *params
= (GLdouble
) ctx
->Point
.Size
;
1869 case GL_POINT_SIZE_GRANULARITY
:
1870 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
1872 case GL_POINT_SIZE_RANGE
:
1873 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
1874 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
1876 case GL_ALIASED_POINT_SIZE_RANGE
:
1877 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
1878 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
1880 case GL_POINT_SMOOTH
:
1881 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
1883 case GL_POINT_SMOOTH_HINT
:
1884 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
1886 case GL_POINT_SIZE_MIN_EXT
:
1887 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
1889 case GL_POINT_SIZE_MAX_EXT
:
1890 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
1892 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
1893 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
1895 case GL_DISTANCE_ATTENUATION_EXT
:
1896 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
1897 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
1898 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
1900 case GL_POLYGON_MODE
:
1901 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
1902 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
1904 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
1905 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1907 case GL_POLYGON_OFFSET_FACTOR
:
1908 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
1910 case GL_POLYGON_OFFSET_UNITS
:
1911 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1913 case GL_POLYGON_SMOOTH
:
1914 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
1916 case GL_POLYGON_SMOOTH_HINT
:
1917 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
1919 case GL_POLYGON_STIPPLE
:
1920 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
1922 case GL_PROJECTION_MATRIX
:
1923 for (i
=0;i
<16;i
++) {
1924 params
[i
] = (GLdouble
) ctx
->ProjectionMatrix
.m
[i
];
1927 case GL_PROJECTION_STACK_DEPTH
:
1928 *params
= (GLdouble
) (ctx
->ProjectionStackDepth
+ 1);
1930 case GL_READ_BUFFER
:
1931 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
1934 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
1937 *params
= (GLdouble
) ctx
->Visual
.RedBits
;
1940 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
1942 case GL_RENDER_MODE
:
1943 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
1946 *params
= (GLdouble
) ctx
->Visual
.RGBAflag
;
1948 case GL_SCISSOR_BOX
:
1949 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
1950 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
1951 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
1952 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
1954 case GL_SCISSOR_TEST
:
1955 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
1957 case GL_SELECTION_BUFFER_SIZE
:
1958 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
1960 case GL_SHADE_MODEL
:
1961 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
1963 case GL_SHARED_TEXTURE_PALETTE_EXT
:
1964 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
1966 case GL_STENCIL_BITS
:
1967 *params
= (GLdouble
) ctx
->Visual
.StencilBits
;
1969 case GL_STENCIL_CLEAR_VALUE
:
1970 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
1972 case GL_STENCIL_FAIL
:
1973 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
1975 case GL_STENCIL_FUNC
:
1976 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
1978 case GL_STENCIL_PASS_DEPTH_FAIL
:
1979 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
1981 case GL_STENCIL_PASS_DEPTH_PASS
:
1982 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
1984 case GL_STENCIL_REF
:
1985 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
1987 case GL_STENCIL_TEST
:
1988 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
1990 case GL_STENCIL_VALUE_MASK
:
1991 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
1993 case GL_STENCIL_WRITEMASK
:
1994 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
1997 *params
= (GLdouble
) ctx
->Visual
.StereoFlag
;
1999 case GL_SUBPIXEL_BITS
:
2000 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2003 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2006 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2009 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2011 case GL_TEXTURE_BINDING_1D
:
2012 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2014 case GL_TEXTURE_BINDING_2D
:
2015 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2017 case GL_TEXTURE_BINDING_3D
:
2018 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2020 case GL_TEXTURE_ENV_COLOR
:
2021 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2022 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2023 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2024 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2026 case GL_TEXTURE_ENV_MODE
:
2027 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2029 case GL_TEXTURE_GEN_S
:
2030 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2032 case GL_TEXTURE_GEN_T
:
2033 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2035 case GL_TEXTURE_GEN_R
:
2036 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2038 case GL_TEXTURE_GEN_Q
:
2039 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2041 case GL_TEXTURE_MATRIX
:
2042 for (i
=0;i
<16;i
++) {
2043 params
[i
] = (GLdouble
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
2046 case GL_TEXTURE_STACK_DEPTH
:
2047 *params
= (GLdouble
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
2049 case GL_UNPACK_ALIGNMENT
:
2050 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2052 case GL_UNPACK_LSB_FIRST
:
2053 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2055 case GL_UNPACK_ROW_LENGTH
:
2056 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2058 case GL_UNPACK_SKIP_PIXELS
:
2059 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2061 case GL_UNPACK_SKIP_ROWS
:
2062 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2064 case GL_UNPACK_SWAP_BYTES
:
2065 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2067 case GL_UNPACK_SKIP_IMAGES_EXT
:
2068 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2070 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2071 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2074 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2075 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2076 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2077 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2080 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2083 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2085 case GL_VERTEX_ARRAY
:
2086 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2088 case GL_VERTEX_ARRAY_SIZE
:
2089 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2091 case GL_VERTEX_ARRAY_TYPE
:
2092 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2094 case GL_VERTEX_ARRAY_STRIDE
:
2095 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2097 case GL_VERTEX_ARRAY_COUNT_EXT
:
2100 case GL_NORMAL_ARRAY
:
2101 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2103 case GL_NORMAL_ARRAY_TYPE
:
2104 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2106 case GL_NORMAL_ARRAY_STRIDE
:
2107 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2109 case GL_NORMAL_ARRAY_COUNT_EXT
:
2112 case GL_COLOR_ARRAY
:
2113 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2115 case GL_COLOR_ARRAY_SIZE
:
2116 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2118 case GL_COLOR_ARRAY_TYPE
:
2119 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2121 case GL_COLOR_ARRAY_STRIDE
:
2122 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2124 case GL_COLOR_ARRAY_COUNT_EXT
:
2127 case GL_INDEX_ARRAY
:
2128 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2130 case GL_INDEX_ARRAY_TYPE
:
2131 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2133 case GL_INDEX_ARRAY_STRIDE
:
2134 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2136 case GL_INDEX_ARRAY_COUNT_EXT
:
2139 case GL_TEXTURE_COORD_ARRAY
:
2140 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2142 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2143 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2145 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2146 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2148 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2149 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2151 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2154 case GL_EDGE_FLAG_ARRAY
:
2155 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2157 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2158 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2160 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2164 /* GL_ARB_multitexture */
2165 case GL_MAX_TEXTURE_UNITS_ARB
:
2166 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2168 case GL_ACTIVE_TEXTURE_ARB
:
2169 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2171 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2172 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2175 /* GL_ARB_texture_cube_map */
2176 case GL_TEXTURE_CUBE_MAP_ARB
:
2177 if (ctx
->Extensions
.ARB_texture_cube_map
)
2178 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2180 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2182 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2183 if (ctx
->Extensions
.ARB_texture_cube_map
)
2184 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2186 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2188 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2189 if (ctx
->Extensions
.ARB_texture_cube_map
)
2190 *params
= (GLdouble
) ctx
->Const
.MaxCubeTextureSize
;
2192 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2195 /* GL_ARB_texture_compression */
2196 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2197 if (ctx
->Extensions
.ARB_texture_compression
) {
2198 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2201 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2203 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2204 if (ctx
->Extensions
.ARB_texture_compression
) {
2205 *params
= (GLdouble
) ctx
->Const
.NumCompressedTextureFormats
;
2208 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2210 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2211 if (ctx
->Extensions
.ARB_texture_compression
) {
2213 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
2214 params
[i
] = (GLdouble
) ctx
->Const
.CompressedTextureFormats
[i
];
2217 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2220 /* GL_PGI_misc_hints */
2221 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
2222 *params
= ENUM_TO_DOUBLE(GL_NICEST
);
2224 case GL_STRICT_LIGHTING_HINT_PGI
:
2225 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.StrictLighting
);
2227 case GL_STRICT_SCISSOR_HINT_PGI
:
2228 case GL_FULL_STIPPLE_HINT_PGI
:
2229 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2231 case GL_CONSERVE_MEMORY_HINT_PGI
:
2232 *params
= ENUM_TO_DOUBLE(GL_FALSE
);
2234 case GL_ALWAYS_FAST_HINT_PGI
:
2235 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2236 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
2237 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
2239 case GL_ALWAYS_SOFT_HINT_PGI
:
2240 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2241 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
2242 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
2244 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
2245 *params
= (GLdouble
) GL_TRUE
;
2247 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
2248 *params
= (GLdouble
) ctx
->Hint
.AllowDrawWin
;
2250 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
2251 *params
= (GLdouble
) ctx
->Hint
.AllowDrawFrg
;
2253 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
2254 *params
= (GLdouble
) ctx
->Hint
.AllowDrawMem
;
2256 case GL_CLIP_NEAR_HINT_PGI
:
2257 case GL_CLIP_FAR_HINT_PGI
:
2258 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2260 case GL_WIDE_LINE_HINT_PGI
:
2261 *params
= ENUM_TO_DOUBLE(GL_DONT_CARE
);
2263 case GL_BACK_NORMALS_HINT_PGI
:
2264 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2266 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
2270 /* GL_EXT_compiled_vertex_array */
2271 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2272 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2274 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2275 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2278 /* GL_ARB_transpose_matrix */
2279 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2283 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
2284 for (i
=0;i
<16;i
++) {
2285 params
[i
] = (GLdouble
) tm
[i
];
2289 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2293 _math_transposef(tm
, ctx
->ModelView
.m
);
2294 for (i
=0;i
<16;i
++) {
2295 params
[i
] = (GLdouble
) tm
[i
];
2299 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2303 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
2304 for (i
=0;i
<16;i
++) {
2305 params
[i
] = (GLdouble
) tm
[i
];
2309 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2313 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
2314 for (i
=0;i
<16;i
++) {
2315 params
[i
] = (GLdouble
) tm
[i
];
2320 /* GL_HP_occlusion_test */
2321 case GL_OCCLUSION_TEST_HP
:
2322 if (ctx
->Extensions
.HP_occlusion_test
) {
2323 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2326 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2329 case GL_OCCLUSION_TEST_RESULT_HP
:
2330 if (ctx
->Extensions
.HP_occlusion_test
) {
2331 if (ctx
->Depth
.OcclusionTest
)
2332 *params
= (GLdouble
) ctx
->OcclusionResult
;
2334 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2335 /* reset flag now */
2336 ctx
->OcclusionResult
= GL_FALSE
;
2337 ctx
->OcclusionResultSaved
= GL_FALSE
;
2340 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2344 /* GL_SGIS_pixel_texture */
2345 case GL_PIXEL_TEXTURE_SGIS
:
2346 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2349 /* GL_SGIX_pixel_texture */
2350 case GL_PIXEL_TEX_GEN_SGIX
:
2351 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2353 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2354 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2357 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2358 case GL_COLOR_MATRIX_SGI
:
2359 for (i
=0;i
<16;i
++) {
2360 params
[i
] = (GLdouble
) ctx
->ColorMatrix
.m
[i
];
2363 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2364 *params
= (GLdouble
) (ctx
->ColorStackDepth
+ 1);
2366 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2367 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2369 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2370 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2372 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2373 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2375 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2376 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2378 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2379 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2381 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2382 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2384 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2385 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2387 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2388 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2390 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2391 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2394 /* GL_EXT_convolution (also in 1.2 imaging) */
2395 case GL_MAX_CONVOLUTION_WIDTH
:
2396 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionWidth
;
2398 case GL_MAX_CONVOLUTION_HEIGHT
:
2399 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionHeight
;
2401 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2402 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2404 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2405 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2407 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2408 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2410 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2411 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2413 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2414 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2416 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2417 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2419 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2420 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2422 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2423 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2426 /* GL_SGI_color_table (also in 1.2 imaging */
2427 case GL_COLOR_TABLE_SGI
:
2428 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2430 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2431 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2433 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2434 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2437 /* GL_EXT_secondary_color */
2438 case GL_COLOR_SUM_EXT
:
2439 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2441 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2442 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2443 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[0]);
2444 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[1]);
2445 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[2]);
2447 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2448 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2450 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2451 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2453 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2454 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2456 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2457 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2460 /* GL_EXT_fog_coord */
2461 case GL_CURRENT_FOG_COORDINATE_EXT
:
2462 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2463 *params
= (GLdouble
) ctx
->Current
.FogCoord
;
2465 case GL_FOG_COORDINATE_ARRAY_EXT
:
2466 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2468 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2469 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2471 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2472 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2477 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2485 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2487 GET_CURRENT_CONTEXT(ctx
);
2489 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2490 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
2491 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2493 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetFloatv");
2498 if (MESA_VERBOSE
& VERBOSE_API
)
2499 fprintf(stderr
, "glGetFloatv %s\n", gl_lookup_enum_by_nr(pname
));
2501 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2505 case GL_ACCUM_RED_BITS
:
2506 *params
= (GLfloat
) ctx
->Visual
.AccumRedBits
;
2508 case GL_ACCUM_GREEN_BITS
:
2509 *params
= (GLfloat
) ctx
->Visual
.AccumGreenBits
;
2511 case GL_ACCUM_BLUE_BITS
:
2512 *params
= (GLfloat
) ctx
->Visual
.AccumBlueBits
;
2514 case GL_ACCUM_ALPHA_BITS
:
2515 *params
= (GLfloat
) ctx
->Visual
.AccumAlphaBits
;
2517 case GL_ACCUM_CLEAR_VALUE
:
2518 params
[0] = ctx
->Accum
.ClearColor
[0];
2519 params
[1] = ctx
->Accum
.ClearColor
[1];
2520 params
[2] = ctx
->Accum
.ClearColor
[2];
2521 params
[3] = ctx
->Accum
.ClearColor
[3];
2524 *params
= ctx
->Pixel
.AlphaBias
;
2527 *params
= (GLfloat
) ctx
->Visual
.AlphaBits
;
2529 case GL_ALPHA_SCALE
:
2530 *params
= ctx
->Pixel
.AlphaScale
;
2533 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2535 case GL_ALPHA_TEST_FUNC
:
2536 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2538 case GL_ALPHA_TEST_REF
:
2539 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
2541 case GL_ATTRIB_STACK_DEPTH
:
2542 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2544 case GL_AUTO_NORMAL
:
2545 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2547 case GL_AUX_BUFFERS
:
2548 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2551 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2554 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2557 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2559 case GL_BLEND_SRC_RGB_EXT
:
2560 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2562 case GL_BLEND_DST_RGB_EXT
:
2563 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2565 case GL_BLEND_SRC_ALPHA_EXT
:
2566 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2568 case GL_BLEND_DST_ALPHA_EXT
:
2569 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2571 case GL_BLEND_EQUATION_EXT
:
2572 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2574 case GL_BLEND_COLOR_EXT
:
2575 params
[0] = ctx
->Color
.BlendColor
[0];
2576 params
[1] = ctx
->Color
.BlendColor
[1];
2577 params
[2] = ctx
->Color
.BlendColor
[2];
2578 params
[3] = ctx
->Color
.BlendColor
[3];
2581 *params
= ctx
->Pixel
.BlueBias
;
2584 *params
= (GLfloat
) ctx
->Visual
.BlueBits
;
2587 *params
= ctx
->Pixel
.BlueScale
;
2589 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2590 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2592 case GL_CLIP_PLANE0
:
2593 case GL_CLIP_PLANE1
:
2594 case GL_CLIP_PLANE2
:
2595 case GL_CLIP_PLANE3
:
2596 case GL_CLIP_PLANE4
:
2597 case GL_CLIP_PLANE5
:
2598 *params
= (GLfloat
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
2600 case GL_COLOR_CLEAR_VALUE
:
2601 params
[0] = (GLfloat
) ctx
->Color
.ClearColor
[0];
2602 params
[1] = (GLfloat
) ctx
->Color
.ClearColor
[1];
2603 params
[2] = (GLfloat
) ctx
->Color
.ClearColor
[2];
2604 params
[3] = (GLfloat
) ctx
->Color
.ClearColor
[3];
2606 case GL_COLOR_MATERIAL
:
2607 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2609 case GL_COLOR_MATERIAL_FACE
:
2610 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2612 case GL_COLOR_MATERIAL_PARAMETER
:
2613 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2615 case GL_COLOR_WRITEMASK
:
2616 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2617 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2618 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2619 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2622 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2624 case GL_CULL_FACE_MODE
:
2625 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2627 case GL_CURRENT_COLOR
:
2628 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2629 params
[0] = CHAN_TO_FLOAT(ctx
->Current
.Color
[0]);
2630 params
[1] = CHAN_TO_FLOAT(ctx
->Current
.Color
[1]);
2631 params
[2] = CHAN_TO_FLOAT(ctx
->Current
.Color
[2]);
2632 params
[3] = CHAN_TO_FLOAT(ctx
->Current
.Color
[3]);
2634 case GL_CURRENT_INDEX
:
2635 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2636 *params
= (GLfloat
) ctx
->Current
.Index
;
2638 case GL_CURRENT_NORMAL
:
2639 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2640 params
[0] = ctx
->Current
.Normal
[0];
2641 params
[1] = ctx
->Current
.Normal
[1];
2642 params
[2] = ctx
->Current
.Normal
[2];
2644 case GL_CURRENT_RASTER_COLOR
:
2645 params
[0] = ctx
->Current
.RasterColor
[0];
2646 params
[1] = ctx
->Current
.RasterColor
[1];
2647 params
[2] = ctx
->Current
.RasterColor
[2];
2648 params
[3] = ctx
->Current
.RasterColor
[3];
2650 case GL_CURRENT_RASTER_DISTANCE
:
2651 params
[0] = ctx
->Current
.RasterDistance
;
2653 case GL_CURRENT_RASTER_INDEX
:
2654 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2656 case GL_CURRENT_RASTER_POSITION
:
2657 params
[0] = ctx
->Current
.RasterPos
[0];
2658 params
[1] = ctx
->Current
.RasterPos
[1];
2659 params
[2] = ctx
->Current
.RasterPos
[2];
2660 params
[3] = ctx
->Current
.RasterPos
[3];
2662 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2663 params
[0] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
2664 params
[1] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
2665 params
[2] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
2666 params
[3] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
2668 case GL_CURRENT_RASTER_POSITION_VALID
:
2669 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2671 case GL_CURRENT_TEXTURE_COORDS
:
2672 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2673 params
[0] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
2674 params
[1] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
2675 params
[2] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
2676 params
[3] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
2679 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2682 *params
= (GLfloat
) ctx
->Visual
.DepthBits
;
2684 case GL_DEPTH_CLEAR_VALUE
:
2685 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2688 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2690 case GL_DEPTH_RANGE
:
2691 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2692 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2694 case GL_DEPTH_SCALE
:
2695 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2698 *params
= (GLfloat
) ctx
->Depth
.Test
;
2700 case GL_DEPTH_WRITEMASK
:
2701 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2704 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2706 case GL_DOUBLEBUFFER
:
2707 *params
= (GLfloat
) ctx
->Visual
.DBflag
;
2709 case GL_DRAW_BUFFER
:
2710 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2713 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
2714 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2716 case GL_FEEDBACK_BUFFER_SIZE
:
2717 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2719 case GL_FEEDBACK_BUFFER_TYPE
:
2720 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2723 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2726 params
[0] = ctx
->Fog
.Color
[0];
2727 params
[1] = ctx
->Fog
.Color
[1];
2728 params
[2] = ctx
->Fog
.Color
[2];
2729 params
[3] = ctx
->Fog
.Color
[3];
2731 case GL_FOG_DENSITY
:
2732 *params
= ctx
->Fog
.Density
;
2735 *params
= ctx
->Fog
.End
;
2738 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2741 *params
= ctx
->Fog
.Index
;
2744 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2747 *params
= ctx
->Fog
.Start
;
2750 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2753 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2756 *params
= (GLfloat
) ctx
->Visual
.GreenBits
;
2758 case GL_GREEN_SCALE
:
2759 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
2762 if (ctx
->Extensions
.EXT_histogram
) {
2763 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
2766 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
2771 *params
= (GLfloat
) ctx
->Visual
.IndexBits
;
2773 case GL_INDEX_CLEAR_VALUE
:
2774 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
2777 *params
= ctx
->Visual
.RGBAflag
? 0.0F
: 1.0F
;
2779 case GL_INDEX_OFFSET
:
2780 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
2782 case GL_INDEX_SHIFT
:
2783 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
2785 case GL_INDEX_WRITEMASK
:
2786 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
2796 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
2799 *params
= (GLfloat
) ctx
->Light
.Enabled
;
2801 case GL_LIGHT_MODEL_AMBIENT
:
2802 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2803 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2804 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2805 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2807 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2808 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2810 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2811 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
2813 case GL_LIGHT_MODEL_TWO_SIDE
:
2814 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
2816 case GL_LINE_SMOOTH
:
2817 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
2819 case GL_LINE_SMOOTH_HINT
:
2820 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2822 case GL_LINE_STIPPLE
:
2823 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
2825 case GL_LINE_STIPPLE_PATTERN
:
2826 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
2828 case GL_LINE_STIPPLE_REPEAT
:
2829 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
2832 *params
= (GLfloat
) ctx
->Line
.Width
;
2834 case GL_LINE_WIDTH_GRANULARITY
:
2835 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
2837 case GL_LINE_WIDTH_RANGE
:
2838 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
2839 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
2841 case GL_ALIASED_LINE_WIDTH_RANGE
:
2842 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
2843 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
2846 *params
= (GLfloat
) ctx
->List
.ListBase
;
2849 *params
= (GLfloat
) ctx
->CurrentListNum
;
2852 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
2853 : ENUM_TO_FLOAT(GL_COMPILE
);
2855 case GL_INDEX_LOGIC_OP
:
2856 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
2858 case GL_COLOR_LOGIC_OP
:
2859 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
2861 case GL_LOGIC_OP_MODE
:
2862 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2864 case GL_MAP1_COLOR_4
:
2865 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
2867 case GL_MAP1_GRID_DOMAIN
:
2868 params
[0] = ctx
->Eval
.MapGrid1u1
;
2869 params
[1] = ctx
->Eval
.MapGrid1u2
;
2871 case GL_MAP1_GRID_SEGMENTS
:
2872 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
2875 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
2877 case GL_MAP1_NORMAL
:
2878 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
2880 case GL_MAP1_TEXTURE_COORD_1
:
2881 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
2883 case GL_MAP1_TEXTURE_COORD_2
:
2884 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
2886 case GL_MAP1_TEXTURE_COORD_3
:
2887 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
2889 case GL_MAP1_TEXTURE_COORD_4
:
2890 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
2892 case GL_MAP1_VERTEX_3
:
2893 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
2895 case GL_MAP1_VERTEX_4
:
2896 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
2898 case GL_MAP2_COLOR_4
:
2899 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
2901 case GL_MAP2_GRID_DOMAIN
:
2902 params
[0] = ctx
->Eval
.MapGrid2u1
;
2903 params
[1] = ctx
->Eval
.MapGrid2u2
;
2904 params
[2] = ctx
->Eval
.MapGrid2v1
;
2905 params
[3] = ctx
->Eval
.MapGrid2v2
;
2907 case GL_MAP2_GRID_SEGMENTS
:
2908 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
2909 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
2912 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
2914 case GL_MAP2_NORMAL
:
2915 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
2917 case GL_MAP2_TEXTURE_COORD_1
:
2918 *params
= ctx
->Eval
.Map2TextureCoord1
;
2920 case GL_MAP2_TEXTURE_COORD_2
:
2921 *params
= ctx
->Eval
.Map2TextureCoord2
;
2923 case GL_MAP2_TEXTURE_COORD_3
:
2924 *params
= ctx
->Eval
.Map2TextureCoord3
;
2926 case GL_MAP2_TEXTURE_COORD_4
:
2927 *params
= ctx
->Eval
.Map2TextureCoord4
;
2929 case GL_MAP2_VERTEX_3
:
2930 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
2932 case GL_MAP2_VERTEX_4
:
2933 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
2936 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
2938 case GL_MAP_STENCIL
:
2939 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
2941 case GL_MATRIX_MODE
:
2942 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2944 case GL_MAX_ATTRIB_STACK_DEPTH
:
2945 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
2947 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2948 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
2950 case GL_MAX_CLIP_PLANES
:
2951 *params
= (GLfloat
) MAX_CLIP_PLANES
;
2953 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
2954 *params
= (GLfloat
) VB_MAX
;
2956 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
2957 *params
= (GLfloat
) VB_MAX
;
2959 case GL_MAX_EVAL_ORDER
:
2960 *params
= (GLfloat
) MAX_EVAL_ORDER
;
2963 *params
= (GLfloat
) MAX_LIGHTS
;
2965 case GL_MAX_LIST_NESTING
:
2966 *params
= (GLfloat
) MAX_LIST_NESTING
;
2968 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2969 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
2971 case GL_MAX_NAME_STACK_DEPTH
:
2972 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
2974 case GL_MAX_PIXEL_MAP_TABLE
:
2975 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
2977 case GL_MAX_PROJECTION_STACK_DEPTH
:
2978 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
2980 case GL_MAX_TEXTURE_SIZE
:
2981 case GL_MAX_3D_TEXTURE_SIZE
:
2982 *params
= (GLfloat
) ctx
->Const
.MaxTextureSize
;
2984 case GL_MAX_TEXTURE_STACK_DEPTH
:
2985 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
2987 case GL_MAX_VIEWPORT_DIMS
:
2988 params
[0] = (GLfloat
) MAX_WIDTH
;
2989 params
[1] = (GLfloat
) MAX_HEIGHT
;
2992 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
2994 case GL_MODELVIEW_MATRIX
:
2995 for (i
=0;i
<16;i
++) {
2996 params
[i
] = ctx
->ModelView
.m
[i
];
2999 case GL_MODELVIEW_STACK_DEPTH
:
3000 *params
= (GLfloat
) (ctx
->ModelViewStackDepth
+ 1);
3002 case GL_NAME_STACK_DEPTH
:
3003 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3006 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3008 case GL_PACK_ALIGNMENT
:
3009 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3011 case GL_PACK_LSB_FIRST
:
3012 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3014 case GL_PACK_ROW_LENGTH
:
3015 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3017 case GL_PACK_SKIP_PIXELS
:
3018 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3020 case GL_PACK_SKIP_ROWS
:
3021 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3023 case GL_PACK_SWAP_BYTES
:
3024 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3026 case GL_PACK_SKIP_IMAGES_EXT
:
3027 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3029 case GL_PACK_IMAGE_HEIGHT_EXT
:
3030 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3032 case GL_PERSPECTIVE_CORRECTION_HINT
:
3033 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3035 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3036 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3038 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3039 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3041 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3042 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3044 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3045 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3047 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3048 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3050 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3051 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3053 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3054 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3056 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3057 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3059 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3060 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3062 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3063 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3066 *params
= (GLfloat
) ctx
->Point
.Size
;
3068 case GL_POINT_SIZE_GRANULARITY
:
3069 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3071 case GL_POINT_SIZE_RANGE
:
3072 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3073 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3075 case GL_ALIASED_POINT_SIZE_RANGE
:
3076 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3077 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3079 case GL_POINT_SMOOTH
:
3080 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3082 case GL_POINT_SMOOTH_HINT
:
3083 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3085 case GL_POINT_SIZE_MIN_EXT
:
3086 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3088 case GL_POINT_SIZE_MAX_EXT
:
3089 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3091 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3092 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3094 case GL_DISTANCE_ATTENUATION_EXT
:
3095 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3096 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3097 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3099 case GL_POLYGON_MODE
:
3100 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3101 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3103 #ifdef GL_EXT_polygon_offset
3104 case GL_POLYGON_OFFSET_BIAS_EXT
:
3105 *params
= ctx
->Polygon
.OffsetUnits
;
3108 case GL_POLYGON_OFFSET_FACTOR
:
3109 *params
= ctx
->Polygon
.OffsetFactor
;
3111 case GL_POLYGON_OFFSET_UNITS
:
3112 *params
= ctx
->Polygon
.OffsetUnits
;
3114 case GL_POLYGON_SMOOTH
:
3115 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3117 case GL_POLYGON_SMOOTH_HINT
:
3118 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3120 case GL_POLYGON_STIPPLE
:
3121 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3123 case GL_PROJECTION_MATRIX
:
3124 for (i
=0;i
<16;i
++) {
3125 params
[i
] = ctx
->ProjectionMatrix
.m
[i
];
3128 case GL_PROJECTION_STACK_DEPTH
:
3129 *params
= (GLfloat
) (ctx
->ProjectionStackDepth
+ 1);
3131 case GL_READ_BUFFER
:
3132 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3135 *params
= ctx
->Pixel
.RedBias
;
3138 *params
= (GLfloat
) ctx
->Visual
.RedBits
;
3141 *params
= ctx
->Pixel
.RedScale
;
3143 case GL_RENDER_MODE
:
3144 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3147 *params
= (GLfloat
) ctx
->Visual
.RGBAflag
;
3149 case GL_SCISSOR_BOX
:
3150 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3151 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3152 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3153 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3155 case GL_SCISSOR_TEST
:
3156 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3158 case GL_SELECTION_BUFFER_SIZE
:
3159 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3161 case GL_SHADE_MODEL
:
3162 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3164 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3165 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3167 case GL_STENCIL_BITS
:
3168 *params
= (GLfloat
) ctx
->Visual
.StencilBits
;
3170 case GL_STENCIL_CLEAR_VALUE
:
3171 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3173 case GL_STENCIL_FAIL
:
3174 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
3176 case GL_STENCIL_FUNC
:
3177 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
3179 case GL_STENCIL_PASS_DEPTH_FAIL
:
3180 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
3182 case GL_STENCIL_PASS_DEPTH_PASS
:
3183 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
3185 case GL_STENCIL_REF
:
3186 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
3188 case GL_STENCIL_TEST
:
3189 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3191 case GL_STENCIL_VALUE_MASK
:
3192 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
3194 case GL_STENCIL_WRITEMASK
:
3195 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
3198 *params
= (GLfloat
) ctx
->Visual
.StereoFlag
;
3200 case GL_SUBPIXEL_BITS
:
3201 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3204 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
3207 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
3210 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
3212 case GL_TEXTURE_BINDING_1D
:
3213 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3215 case GL_TEXTURE_BINDING_2D
:
3216 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3218 case GL_TEXTURE_BINDING_3D
:
3219 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3221 case GL_TEXTURE_ENV_COLOR
:
3222 params
[0] = textureUnit
->EnvColor
[0];
3223 params
[1] = textureUnit
->EnvColor
[1];
3224 params
[2] = textureUnit
->EnvColor
[2];
3225 params
[3] = textureUnit
->EnvColor
[3];
3227 case GL_TEXTURE_ENV_MODE
:
3228 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3230 case GL_TEXTURE_GEN_S
:
3231 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
3233 case GL_TEXTURE_GEN_T
:
3234 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
3236 case GL_TEXTURE_GEN_R
:
3237 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
3239 case GL_TEXTURE_GEN_Q
:
3240 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
3242 case GL_TEXTURE_MATRIX
:
3243 for (i
=0;i
<16;i
++) {
3244 params
[i
] = ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
3247 case GL_TEXTURE_STACK_DEPTH
:
3248 *params
= (GLfloat
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
3250 case GL_UNPACK_ALIGNMENT
:
3251 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3253 case GL_UNPACK_LSB_FIRST
:
3254 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3256 case GL_UNPACK_ROW_LENGTH
:
3257 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3259 case GL_UNPACK_SKIP_PIXELS
:
3260 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3262 case GL_UNPACK_SKIP_ROWS
:
3263 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3265 case GL_UNPACK_SWAP_BYTES
:
3266 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3268 case GL_UNPACK_SKIP_IMAGES_EXT
:
3269 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3271 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3272 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3275 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3276 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3277 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3278 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3281 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3284 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3286 case GL_VERTEX_ARRAY
:
3287 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3289 case GL_VERTEX_ARRAY_SIZE
:
3290 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3292 case GL_VERTEX_ARRAY_TYPE
:
3293 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3295 case GL_VERTEX_ARRAY_STRIDE
:
3296 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3298 case GL_VERTEX_ARRAY_COUNT_EXT
:
3301 case GL_NORMAL_ARRAY
:
3302 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3304 case GL_NORMAL_ARRAY_TYPE
:
3305 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3307 case GL_NORMAL_ARRAY_STRIDE
:
3308 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3310 case GL_NORMAL_ARRAY_COUNT_EXT
:
3313 case GL_COLOR_ARRAY
:
3314 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3316 case GL_COLOR_ARRAY_SIZE
:
3317 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3319 case GL_COLOR_ARRAY_TYPE
:
3320 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3322 case GL_COLOR_ARRAY_STRIDE
:
3323 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3325 case GL_COLOR_ARRAY_COUNT_EXT
:
3328 case GL_INDEX_ARRAY
:
3329 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3331 case GL_INDEX_ARRAY_TYPE
:
3332 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3334 case GL_INDEX_ARRAY_STRIDE
:
3335 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3337 case GL_INDEX_ARRAY_COUNT_EXT
:
3340 case GL_TEXTURE_COORD_ARRAY
:
3341 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3343 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3344 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3346 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3347 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3349 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3350 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3352 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3355 case GL_EDGE_FLAG_ARRAY
:
3356 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3358 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3359 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3361 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3365 /* GL_ARB_multitexture */
3366 case GL_MAX_TEXTURE_UNITS_ARB
:
3367 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3369 case GL_ACTIVE_TEXTURE_ARB
:
3370 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3372 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3373 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3376 /* GL_ARB_texture_cube_map */
3377 case GL_TEXTURE_CUBE_MAP_ARB
:
3378 if (ctx
->Extensions
.ARB_texture_cube_map
)
3379 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3381 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3383 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3384 if (ctx
->Extensions
.ARB_texture_cube_map
)
3385 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3387 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3389 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3390 if (ctx
->Extensions
.ARB_texture_cube_map
)
3391 *params
= (GLfloat
) ctx
->Const
.MaxCubeTextureSize
;
3393 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3396 /* GL_ARB_texture_compression */
3397 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3398 if (ctx
->Extensions
.ARB_texture_compression
) {
3399 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3402 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3404 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3405 if (ctx
->Extensions
.ARB_texture_compression
) {
3406 *params
= (GLfloat
) ctx
->Const
.NumCompressedTextureFormats
;
3409 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3411 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3412 if (ctx
->Extensions
.ARB_texture_compression
) {
3414 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
3415 params
[i
] = (GLfloat
) ctx
->Const
.CompressedTextureFormats
[i
];
3418 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3421 /* GL_PGI_misc_hints */
3422 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
3423 *params
= ENUM_TO_FLOAT(GL_NICEST
);
3425 case GL_STRICT_LIGHTING_HINT_PGI
:
3426 *params
= ENUM_TO_FLOAT(ctx
->Hint
.StrictLighting
);
3428 case GL_STRICT_SCISSOR_HINT_PGI
:
3429 case GL_FULL_STIPPLE_HINT_PGI
:
3430 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3432 case GL_CONSERVE_MEMORY_HINT_PGI
:
3433 *params
= ENUM_TO_FLOAT(GL_FALSE
);
3435 case GL_ALWAYS_FAST_HINT_PGI
:
3436 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3437 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
3438 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
3440 case GL_ALWAYS_SOFT_HINT_PGI
:
3441 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3442 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
3443 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
3445 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
3446 *params
= (GLfloat
) GL_TRUE
;
3448 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
3449 *params
= (GLfloat
) ctx
->Hint
.AllowDrawWin
;
3451 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
3452 *params
= (GLfloat
) ctx
->Hint
.AllowDrawFrg
;
3454 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
3455 *params
= (GLfloat
) ctx
->Hint
.AllowDrawMem
;
3457 case GL_CLIP_NEAR_HINT_PGI
:
3458 case GL_CLIP_FAR_HINT_PGI
:
3459 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3461 case GL_WIDE_LINE_HINT_PGI
:
3462 *params
= ENUM_TO_FLOAT(GL_DONT_CARE
);
3464 case GL_BACK_NORMALS_HINT_PGI
:
3465 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3467 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
3471 /* GL_EXT_compiled_vertex_array */
3472 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3473 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3475 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3476 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3479 /* GL_ARB_transpose_matrix */
3480 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3481 _math_transposef(params
, ctx
->ColorMatrix
.m
);
3483 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3484 _math_transposef(params
, ctx
->ModelView
.m
);
3486 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3487 _math_transposef(params
, ctx
->ProjectionMatrix
.m
);
3489 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3490 _math_transposef(params
, ctx
->TextureMatrix
[texTransformUnit
].m
);
3493 /* GL_HP_occlusion_test */
3494 case GL_OCCLUSION_TEST_HP
:
3495 if (ctx
->Extensions
.HP_occlusion_test
) {
3496 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3499 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3502 case GL_OCCLUSION_TEST_RESULT_HP
:
3503 if (ctx
->Extensions
.HP_occlusion_test
) {
3504 if (ctx
->Depth
.OcclusionTest
)
3505 *params
= (GLfloat
) ctx
->OcclusionResult
;
3507 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3508 /* reset flag now */
3509 ctx
->OcclusionResult
= GL_FALSE
;
3510 ctx
->OcclusionResultSaved
= GL_FALSE
;
3513 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3517 /* GL_SGIS_pixel_texture */
3518 case GL_PIXEL_TEXTURE_SGIS
:
3519 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3522 /* GL_SGIX_pixel_texture */
3523 case GL_PIXEL_TEX_GEN_SGIX
:
3524 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3526 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3527 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3530 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3531 case GL_COLOR_MATRIX_SGI
:
3532 for (i
=0;i
<16;i
++) {
3533 params
[i
] = ctx
->ColorMatrix
.m
[i
];
3536 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3537 *params
= (GLfloat
) (ctx
->ColorStackDepth
+ 1);
3539 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3540 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3542 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3543 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3545 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3546 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3548 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3549 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3551 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3552 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3554 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3555 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3557 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3558 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3560 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3561 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3563 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3564 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3567 /* GL_EXT_convolution (also in 1.2 imaging) */
3568 case GL_MAX_CONVOLUTION_WIDTH
:
3569 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionWidth
;
3571 case GL_MAX_CONVOLUTION_HEIGHT
:
3572 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionHeight
;
3574 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3575 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3577 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3578 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3580 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3581 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3583 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3584 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3586 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3587 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3589 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3590 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3592 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3593 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3595 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3596 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3599 /* GL_SGI_color_table (also in 1.2 imaging */
3600 case GL_COLOR_TABLE_SGI
:
3601 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3603 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3604 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3606 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3607 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3610 /* GL_EXT_secondary_color */
3611 case GL_COLOR_SUM_EXT
:
3612 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3614 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3615 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3616 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[0]);
3617 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[1]);
3618 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[2]);
3620 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3621 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3623 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3624 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3626 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3627 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3629 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3630 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3633 /* GL_EXT_fog_coord */
3634 case GL_CURRENT_FOG_COORDINATE_EXT
:
3635 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3636 *params
= (GLfloat
) ctx
->Current
.FogCoord
;
3638 case GL_FOG_COORDINATE_ARRAY_EXT
:
3639 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3641 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3642 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3644 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3645 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3650 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3658 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3660 GET_CURRENT_CONTEXT(ctx
);
3662 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3663 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
3664 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3666 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetIntegerv");
3671 if (MESA_VERBOSE
& VERBOSE_API
)
3672 fprintf(stderr
, "glGetIntegerv %s\n", gl_lookup_enum_by_nr(pname
));
3674 if (ctx
->Driver
.GetIntegerv
3675 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
3679 case GL_ACCUM_RED_BITS
:
3680 *params
= (GLint
) ctx
->Visual
.AccumRedBits
;
3682 case GL_ACCUM_GREEN_BITS
:
3683 *params
= (GLint
) ctx
->Visual
.AccumGreenBits
;
3685 case GL_ACCUM_BLUE_BITS
:
3686 *params
= (GLint
) ctx
->Visual
.AccumBlueBits
;
3688 case GL_ACCUM_ALPHA_BITS
:
3689 *params
= (GLint
) ctx
->Visual
.AccumAlphaBits
;
3691 case GL_ACCUM_CLEAR_VALUE
:
3692 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
3693 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
3694 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
3695 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
3698 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
3701 *params
= ctx
->Visual
.AlphaBits
;
3703 case GL_ALPHA_SCALE
:
3704 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
3707 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
3709 case GL_ALPHA_TEST_REF
:
3710 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
3712 case GL_ALPHA_TEST_FUNC
:
3713 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
3715 case GL_ATTRIB_STACK_DEPTH
:
3716 *params
= (GLint
) (ctx
->AttribStackDepth
);
3718 case GL_AUTO_NORMAL
:
3719 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
3721 case GL_AUX_BUFFERS
:
3722 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
3725 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
3728 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3731 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3733 case GL_BLEND_SRC_RGB_EXT
:
3734 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3736 case GL_BLEND_DST_RGB_EXT
:
3737 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3739 case GL_BLEND_SRC_ALPHA_EXT
:
3740 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
3742 case GL_BLEND_DST_ALPHA_EXT
:
3743 *params
= (GLint
) ctx
->Color
.BlendDstA
;
3745 case GL_BLEND_EQUATION_EXT
:
3746 *params
= (GLint
) ctx
->Color
.BlendEquation
;
3748 case GL_BLEND_COLOR_EXT
:
3749 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
3750 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
3751 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
3752 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
3755 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
3758 *params
= (GLint
) ctx
->Visual
.BlueBits
;
3761 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
3763 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3764 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
3766 case GL_CLIP_PLANE0
:
3767 case GL_CLIP_PLANE1
:
3768 case GL_CLIP_PLANE2
:
3769 case GL_CLIP_PLANE3
:
3770 case GL_CLIP_PLANE4
:
3771 case GL_CLIP_PLANE5
:
3772 i
= (GLint
) (pname
- GL_CLIP_PLANE0
);
3773 *params
= (GLint
) ctx
->Transform
.ClipEnabled
[i
];
3775 case GL_COLOR_CLEAR_VALUE
:
3776 params
[0] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[0] );
3777 params
[1] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[1] );
3778 params
[2] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[2] );
3779 params
[3] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[3] );
3781 case GL_COLOR_MATERIAL
:
3782 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
3784 case GL_COLOR_MATERIAL_FACE
:
3785 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
3787 case GL_COLOR_MATERIAL_PARAMETER
:
3788 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
3790 case GL_COLOR_WRITEMASK
:
3791 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
3792 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
3793 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
3794 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
3797 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
3799 case GL_CULL_FACE_MODE
:
3800 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
3802 case GL_CURRENT_COLOR
:
3803 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3804 params
[0] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[0] ) );
3805 params
[1] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[1] ) );
3806 params
[2] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[2] ) );
3807 params
[3] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[3] ) );
3809 case GL_CURRENT_INDEX
:
3810 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3811 *params
= (GLint
) ctx
->Current
.Index
;
3813 case GL_CURRENT_NORMAL
:
3814 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3815 params
[0] = FLOAT_TO_INT( ctx
->Current
.Normal
[0] );
3816 params
[1] = FLOAT_TO_INT( ctx
->Current
.Normal
[1] );
3817 params
[2] = FLOAT_TO_INT( ctx
->Current
.Normal
[2] );
3819 case GL_CURRENT_RASTER_COLOR
:
3820 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
3821 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
3822 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
3823 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
3825 case GL_CURRENT_RASTER_DISTANCE
:
3826 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
3828 case GL_CURRENT_RASTER_INDEX
:
3829 *params
= (GLint
) ctx
->Current
.RasterIndex
;
3831 case GL_CURRENT_RASTER_POSITION
:
3832 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
3833 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
3834 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
3835 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
3837 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3838 params
[0] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
3839 params
[1] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
3840 params
[2] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
3841 params
[3] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
3843 case GL_CURRENT_RASTER_POSITION_VALID
:
3844 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
3846 case GL_CURRENT_TEXTURE_COORDS
:
3847 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3848 params
[0] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
3849 params
[1] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
3850 params
[2] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
3851 params
[3] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
3854 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
3857 *params
= ctx
->Visual
.DepthBits
;
3859 case GL_DEPTH_CLEAR_VALUE
:
3860 *params
= (GLint
) ctx
->Depth
.Clear
;
3863 *params
= (GLint
) ctx
->Depth
.Func
;
3865 case GL_DEPTH_RANGE
:
3866 params
[0] = (GLint
) ctx
->Viewport
.Near
;
3867 params
[1] = (GLint
) ctx
->Viewport
.Far
;
3869 case GL_DEPTH_SCALE
:
3870 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
3873 *params
= (GLint
) ctx
->Depth
.Test
;
3875 case GL_DEPTH_WRITEMASK
:
3876 *params
= (GLint
) ctx
->Depth
.Mask
;
3879 *params
= (GLint
) ctx
->Color
.DitherFlag
;
3881 case GL_DOUBLEBUFFER
:
3882 *params
= (GLint
) ctx
->Visual
.DBflag
;
3884 case GL_DRAW_BUFFER
:
3885 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
3888 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
3889 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
3891 case GL_FEEDBACK_BUFFER_SIZE
:
3892 *params
= ctx
->Feedback
.BufferSize
;
3894 case GL_FEEDBACK_BUFFER_TYPE
:
3895 *params
= ctx
->Feedback
.Type
;
3898 *params
= (GLint
) ctx
->Fog
.Enabled
;
3901 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
3902 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
3903 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
3904 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
3906 case GL_FOG_DENSITY
:
3907 *params
= (GLint
) ctx
->Fog
.Density
;
3910 *params
= (GLint
) ctx
->Fog
.End
;
3913 *params
= (GLint
) ctx
->Hint
.Fog
;
3916 *params
= (GLint
) ctx
->Fog
.Index
;
3919 *params
= (GLint
) ctx
->Fog
.Mode
;
3922 *params
= (GLint
) ctx
->Fog
.Start
;
3925 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
3928 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
3931 *params
= (GLint
) ctx
->Visual
.GreenBits
;
3933 case GL_GREEN_SCALE
:
3934 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
3937 if (ctx
->Extensions
.EXT_histogram
) {
3938 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
3941 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3946 *params
= (GLint
) ctx
->Visual
.IndexBits
;
3948 case GL_INDEX_CLEAR_VALUE
:
3949 *params
= (GLint
) ctx
->Color
.ClearIndex
;
3952 *params
= ctx
->Visual
.RGBAflag
? 0 : 1;
3954 case GL_INDEX_OFFSET
:
3955 *params
= ctx
->Pixel
.IndexOffset
;
3957 case GL_INDEX_SHIFT
:
3958 *params
= ctx
->Pixel
.IndexShift
;
3960 case GL_INDEX_WRITEMASK
:
3961 *params
= (GLint
) ctx
->Color
.IndexMask
;
3971 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3974 *params
= (GLint
) ctx
->Light
.Enabled
;
3976 case GL_LIGHT_MODEL_AMBIENT
:
3977 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
3978 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
3979 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
3980 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
3982 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3983 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
3985 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3986 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
3988 case GL_LIGHT_MODEL_TWO_SIDE
:
3989 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
3991 case GL_LINE_SMOOTH
:
3992 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
3994 case GL_LINE_SMOOTH_HINT
:
3995 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
3997 case GL_LINE_STIPPLE
:
3998 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4000 case GL_LINE_STIPPLE_PATTERN
:
4001 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4003 case GL_LINE_STIPPLE_REPEAT
:
4004 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4007 *params
= (GLint
) ctx
->Line
.Width
;
4009 case GL_LINE_WIDTH_GRANULARITY
:
4010 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4012 case GL_LINE_WIDTH_RANGE
:
4013 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4014 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4016 case GL_ALIASED_LINE_WIDTH_RANGE
:
4017 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4018 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4021 *params
= (GLint
) ctx
->List
.ListBase
;
4024 *params
= (GLint
) ctx
->CurrentListNum
;
4027 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4028 : (GLint
) GL_COMPILE
;
4030 case GL_INDEX_LOGIC_OP
:
4031 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4033 case GL_COLOR_LOGIC_OP
:
4034 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4036 case GL_LOGIC_OP_MODE
:
4037 *params
= (GLint
) ctx
->Color
.LogicOp
;
4039 case GL_MAP1_COLOR_4
:
4040 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4042 case GL_MAP1_GRID_DOMAIN
:
4043 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4044 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4046 case GL_MAP1_GRID_SEGMENTS
:
4047 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4050 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4052 case GL_MAP1_NORMAL
:
4053 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4055 case GL_MAP1_TEXTURE_COORD_1
:
4056 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4058 case GL_MAP1_TEXTURE_COORD_2
:
4059 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4061 case GL_MAP1_TEXTURE_COORD_3
:
4062 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4064 case GL_MAP1_TEXTURE_COORD_4
:
4065 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4067 case GL_MAP1_VERTEX_3
:
4068 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4070 case GL_MAP1_VERTEX_4
:
4071 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4073 case GL_MAP2_COLOR_4
:
4074 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4076 case GL_MAP2_GRID_DOMAIN
:
4077 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4078 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4079 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4080 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4082 case GL_MAP2_GRID_SEGMENTS
:
4083 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4084 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4087 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4089 case GL_MAP2_NORMAL
:
4090 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4092 case GL_MAP2_TEXTURE_COORD_1
:
4093 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4095 case GL_MAP2_TEXTURE_COORD_2
:
4096 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4098 case GL_MAP2_TEXTURE_COORD_3
:
4099 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4101 case GL_MAP2_TEXTURE_COORD_4
:
4102 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4104 case GL_MAP2_VERTEX_3
:
4105 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4107 case GL_MAP2_VERTEX_4
:
4108 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4111 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4113 case GL_MAP_STENCIL
:
4114 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4116 case GL_MATRIX_MODE
:
4117 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4119 case GL_MAX_ATTRIB_STACK_DEPTH
:
4120 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4122 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4123 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4125 case GL_MAX_CLIP_PLANES
:
4126 *params
= (GLint
) MAX_CLIP_PLANES
;
4128 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4131 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4134 case GL_MAX_EVAL_ORDER
:
4135 *params
= (GLint
) MAX_EVAL_ORDER
;
4138 *params
= (GLint
) MAX_LIGHTS
;
4140 case GL_MAX_LIST_NESTING
:
4141 *params
= (GLint
) MAX_LIST_NESTING
;
4143 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4144 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4146 case GL_MAX_NAME_STACK_DEPTH
:
4147 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4149 case GL_MAX_PIXEL_MAP_TABLE
:
4150 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4152 case GL_MAX_PROJECTION_STACK_DEPTH
:
4153 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4155 case GL_MAX_TEXTURE_SIZE
:
4156 case GL_MAX_3D_TEXTURE_SIZE
:
4157 *params
= ctx
->Const
.MaxTextureSize
;
4159 case GL_MAX_TEXTURE_STACK_DEPTH
:
4160 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4162 case GL_MAX_VIEWPORT_DIMS
:
4163 params
[0] = (GLint
) MAX_WIDTH
;
4164 params
[1] = (GLint
) MAX_HEIGHT
;
4167 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
4169 case GL_MODELVIEW_MATRIX
:
4170 for (i
=0;i
<16;i
++) {
4171 params
[i
] = (GLint
) ctx
->ModelView
.m
[i
];
4174 case GL_MODELVIEW_STACK_DEPTH
:
4175 *params
= (GLint
) (ctx
->ModelViewStackDepth
+ 1);
4177 case GL_NAME_STACK_DEPTH
:
4178 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4181 *params
= (GLint
) ctx
->Transform
.Normalize
;
4183 case GL_PACK_ALIGNMENT
:
4184 *params
= ctx
->Pack
.Alignment
;
4186 case GL_PACK_LSB_FIRST
:
4187 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4189 case GL_PACK_ROW_LENGTH
:
4190 *params
= ctx
->Pack
.RowLength
;
4192 case GL_PACK_SKIP_PIXELS
:
4193 *params
= ctx
->Pack
.SkipPixels
;
4195 case GL_PACK_SKIP_ROWS
:
4196 *params
= ctx
->Pack
.SkipRows
;
4198 case GL_PACK_SWAP_BYTES
:
4199 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4201 case GL_PACK_SKIP_IMAGES_EXT
:
4202 *params
= ctx
->Pack
.SkipImages
;
4204 case GL_PACK_IMAGE_HEIGHT_EXT
:
4205 *params
= ctx
->Pack
.ImageHeight
;
4207 case GL_PERSPECTIVE_CORRECTION_HINT
:
4208 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4210 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4211 *params
= ctx
->Pixel
.MapAtoAsize
;
4213 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4214 *params
= ctx
->Pixel
.MapBtoBsize
;
4216 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4217 *params
= ctx
->Pixel
.MapGtoGsize
;
4219 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4220 *params
= ctx
->Pixel
.MapItoAsize
;
4222 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4223 *params
= ctx
->Pixel
.MapItoBsize
;
4225 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4226 *params
= ctx
->Pixel
.MapItoGsize
;
4228 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4229 *params
= ctx
->Pixel
.MapItoIsize
;
4231 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4232 *params
= ctx
->Pixel
.MapItoRsize
;
4234 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4235 *params
= ctx
->Pixel
.MapRtoRsize
;
4237 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4238 *params
= ctx
->Pixel
.MapStoSsize
;
4241 *params
= (GLint
) ctx
->Point
.Size
;
4243 case GL_POINT_SIZE_GRANULARITY
:
4244 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4246 case GL_POINT_SIZE_RANGE
:
4247 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4248 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4250 case GL_ALIASED_POINT_SIZE_RANGE
:
4251 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4252 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4254 case GL_POINT_SMOOTH
:
4255 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4257 case GL_POINT_SMOOTH_HINT
:
4258 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4260 case GL_POINT_SIZE_MIN_EXT
:
4261 *params
= (GLint
) (ctx
->Point
.MinSize
);
4263 case GL_POINT_SIZE_MAX_EXT
:
4264 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4266 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4267 *params
= (GLint
) (ctx
->Point
.Threshold
);
4269 case GL_DISTANCE_ATTENUATION_EXT
:
4270 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4271 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4272 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4274 case GL_POLYGON_MODE
:
4275 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4276 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4278 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4279 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4281 case GL_POLYGON_OFFSET_FACTOR
:
4282 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4284 case GL_POLYGON_OFFSET_UNITS
:
4285 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4287 case GL_POLYGON_SMOOTH
:
4288 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4290 case GL_POLYGON_SMOOTH_HINT
:
4291 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4293 case GL_POLYGON_STIPPLE
:
4294 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4296 case GL_PROJECTION_MATRIX
:
4297 for (i
=0;i
<16;i
++) {
4298 params
[i
] = (GLint
) ctx
->ProjectionMatrix
.m
[i
];
4301 case GL_PROJECTION_STACK_DEPTH
:
4302 *params
= (GLint
) (ctx
->ProjectionStackDepth
+ 1);
4304 case GL_READ_BUFFER
:
4305 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4308 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4311 *params
= (GLint
) ctx
->Visual
.RedBits
;
4314 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4316 case GL_RENDER_MODE
:
4317 *params
= (GLint
) ctx
->RenderMode
;
4320 *params
= (GLint
) ctx
->Visual
.RGBAflag
;
4322 case GL_SCISSOR_BOX
:
4323 params
[0] = (GLint
) ctx
->Scissor
.X
;
4324 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4325 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4326 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4328 case GL_SCISSOR_TEST
:
4329 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4331 case GL_SELECTION_BUFFER_SIZE
:
4332 *params
= (GLint
) ctx
->Select
.BufferSize
;
4334 case GL_SHADE_MODEL
:
4335 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4337 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4338 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4340 case GL_STENCIL_BITS
:
4341 *params
= ctx
->Visual
.StencilBits
;
4343 case GL_STENCIL_CLEAR_VALUE
:
4344 *params
= (GLint
) ctx
->Stencil
.Clear
;
4346 case GL_STENCIL_FAIL
:
4347 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
4349 case GL_STENCIL_FUNC
:
4350 *params
= (GLint
) ctx
->Stencil
.Function
;
4352 case GL_STENCIL_PASS_DEPTH_FAIL
:
4353 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
4355 case GL_STENCIL_PASS_DEPTH_PASS
:
4356 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
4358 case GL_STENCIL_REF
:
4359 *params
= (GLint
) ctx
->Stencil
.Ref
;
4361 case GL_STENCIL_TEST
:
4362 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4364 case GL_STENCIL_VALUE_MASK
:
4365 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
4367 case GL_STENCIL_WRITEMASK
:
4368 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
4371 *params
= (GLint
) ctx
->Visual
.StereoFlag
;
4373 case GL_SUBPIXEL_BITS
:
4374 *params
= ctx
->Const
.SubPixelBits
;
4377 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4380 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4383 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4385 case GL_TEXTURE_BINDING_1D
:
4386 *params
= textureUnit
->Current1D
->Name
;
4388 case GL_TEXTURE_BINDING_2D
:
4389 *params
= textureUnit
->Current2D
->Name
;
4391 case GL_TEXTURE_BINDING_3D
:
4392 *params
= textureUnit
->Current3D
->Name
;
4394 case GL_TEXTURE_ENV_COLOR
:
4395 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4396 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4397 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4398 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4400 case GL_TEXTURE_ENV_MODE
:
4401 *params
= (GLint
) textureUnit
->EnvMode
;
4403 case GL_TEXTURE_GEN_S
:
4404 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4406 case GL_TEXTURE_GEN_T
:
4407 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4409 case GL_TEXTURE_GEN_R
:
4410 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4412 case GL_TEXTURE_GEN_Q
:
4413 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4415 case GL_TEXTURE_MATRIX
:
4416 for (i
=0;i
<16;i
++) {
4417 params
[i
] = (GLint
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
4420 case GL_TEXTURE_STACK_DEPTH
:
4421 *params
= (GLint
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
4423 case GL_UNPACK_ALIGNMENT
:
4424 *params
= ctx
->Unpack
.Alignment
;
4426 case GL_UNPACK_LSB_FIRST
:
4427 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4429 case GL_UNPACK_ROW_LENGTH
:
4430 *params
= ctx
->Unpack
.RowLength
;
4432 case GL_UNPACK_SKIP_PIXELS
:
4433 *params
= ctx
->Unpack
.SkipPixels
;
4435 case GL_UNPACK_SKIP_ROWS
:
4436 *params
= ctx
->Unpack
.SkipRows
;
4438 case GL_UNPACK_SWAP_BYTES
:
4439 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4441 case GL_UNPACK_SKIP_IMAGES_EXT
:
4442 *params
= ctx
->Unpack
.SkipImages
;
4444 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4445 *params
= ctx
->Unpack
.ImageHeight
;
4448 params
[0] = (GLint
) ctx
->Viewport
.X
;
4449 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4450 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4451 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4454 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4457 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4459 case GL_VERTEX_ARRAY
:
4460 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4462 case GL_VERTEX_ARRAY_SIZE
:
4463 *params
= ctx
->Array
.Vertex
.Size
;
4465 case GL_VERTEX_ARRAY_TYPE
:
4466 *params
= ctx
->Array
.Vertex
.Type
;
4468 case GL_VERTEX_ARRAY_STRIDE
:
4469 *params
= ctx
->Array
.Vertex
.Stride
;
4471 case GL_VERTEX_ARRAY_COUNT_EXT
:
4474 case GL_NORMAL_ARRAY
:
4475 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
4477 case GL_NORMAL_ARRAY_TYPE
:
4478 *params
= ctx
->Array
.Normal
.Type
;
4480 case GL_NORMAL_ARRAY_STRIDE
:
4481 *params
= ctx
->Array
.Normal
.Stride
;
4483 case GL_NORMAL_ARRAY_COUNT_EXT
:
4486 case GL_COLOR_ARRAY
:
4487 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
4489 case GL_COLOR_ARRAY_SIZE
:
4490 *params
= ctx
->Array
.Color
.Size
;
4492 case GL_COLOR_ARRAY_TYPE
:
4493 *params
= ctx
->Array
.Color
.Type
;
4495 case GL_COLOR_ARRAY_STRIDE
:
4496 *params
= ctx
->Array
.Color
.Stride
;
4498 case GL_COLOR_ARRAY_COUNT_EXT
:
4501 case GL_INDEX_ARRAY
:
4502 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
4504 case GL_INDEX_ARRAY_TYPE
:
4505 *params
= ctx
->Array
.Index
.Type
;
4507 case GL_INDEX_ARRAY_STRIDE
:
4508 *params
= ctx
->Array
.Index
.Stride
;
4510 case GL_INDEX_ARRAY_COUNT_EXT
:
4513 case GL_TEXTURE_COORD_ARRAY
:
4514 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
4516 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4517 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
4519 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4520 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
4522 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4523 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
4525 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4528 case GL_EDGE_FLAG_ARRAY
:
4529 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
4531 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4532 *params
= ctx
->Array
.EdgeFlag
.Stride
;
4534 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4538 /* GL_ARB_multitexture */
4539 case GL_MAX_TEXTURE_UNITS_ARB
:
4540 *params
= ctx
->Const
.MaxTextureUnits
;
4542 case GL_ACTIVE_TEXTURE_ARB
:
4543 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4545 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4546 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4549 /* GL_ARB_texture_cube_map */
4550 case GL_TEXTURE_CUBE_MAP_ARB
:
4551 if (ctx
->Extensions
.ARB_texture_cube_map
)
4552 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4554 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4556 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4557 if (ctx
->Extensions
.ARB_texture_cube_map
)
4558 *params
= textureUnit
->CurrentCubeMap
->Name
;
4560 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4562 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4563 if (ctx
->Extensions
.ARB_texture_cube_map
)
4564 *params
= ctx
->Const
.MaxCubeTextureSize
;
4566 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4569 /* GL_ARB_texture_compression */
4570 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4571 if (ctx
->Extensions
.ARB_texture_compression
) {
4572 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
4575 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4577 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4578 if (ctx
->Extensions
.ARB_texture_compression
) {
4579 *params
= (GLint
) ctx
->Const
.NumCompressedTextureFormats
;
4582 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4584 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4585 if (ctx
->Extensions
.ARB_texture_compression
) {
4587 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
4588 params
[i
] = (GLint
) ctx
->Const
.CompressedTextureFormats
[i
];
4591 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4594 /* GL_PGI_misc_hints */
4595 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
4596 *params
= (GL_NICEST
);
4598 case GL_STRICT_LIGHTING_HINT_PGI
:
4599 *params
= (ctx
->Hint
.StrictLighting
);
4601 case GL_STRICT_SCISSOR_HINT_PGI
:
4602 case GL_FULL_STIPPLE_HINT_PGI
:
4605 case GL_CONSERVE_MEMORY_HINT_PGI
:
4608 case GL_ALWAYS_FAST_HINT_PGI
:
4609 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
4610 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
4611 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
4613 case GL_ALWAYS_SOFT_HINT_PGI
:
4614 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
4615 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
4616 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
4618 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
4621 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
4622 *params
= ctx
->Hint
.AllowDrawWin
;
4624 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
4625 *params
= ctx
->Hint
.AllowDrawFrg
;
4627 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
4628 *params
= ctx
->Hint
.AllowDrawMem
;
4630 case GL_CLIP_NEAR_HINT_PGI
:
4631 case GL_CLIP_FAR_HINT_PGI
:
4634 case GL_WIDE_LINE_HINT_PGI
:
4635 *params
= GL_DONT_CARE
;
4637 case GL_BACK_NORMALS_HINT_PGI
:
4640 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
4644 /* GL_EXT_compiled_vertex_array */
4645 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4646 *params
= ctx
->Array
.LockFirst
;
4648 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4649 *params
= ctx
->Array
.LockCount
;
4652 /* GL_ARB_transpose_matrix */
4653 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4657 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
4658 for (i
=0;i
<16;i
++) {
4659 params
[i
] = (GLint
) tm
[i
];
4663 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4667 _math_transposef(tm
, ctx
->ModelView
.m
);
4668 for (i
=0;i
<16;i
++) {
4669 params
[i
] = (GLint
) tm
[i
];
4673 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4677 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
4678 for (i
=0;i
<16;i
++) {
4679 params
[i
] = (GLint
) tm
[i
];
4683 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4687 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
4688 for (i
=0;i
<16;i
++) {
4689 params
[i
] = (GLint
) tm
[i
];
4694 /* GL_HP_occlusion_test */
4695 case GL_OCCLUSION_TEST_HP
:
4696 if (ctx
->Extensions
.HP_occlusion_test
) {
4697 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
4700 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4703 case GL_OCCLUSION_TEST_RESULT_HP
:
4704 if (ctx
->Extensions
.HP_occlusion_test
) {
4705 if (ctx
->Depth
.OcclusionTest
)
4706 *params
= (GLint
) ctx
->OcclusionResult
;
4708 *params
= (GLint
) ctx
->OcclusionResultSaved
;
4709 /* reset flag now */
4710 ctx
->OcclusionResult
= GL_FALSE
;
4711 ctx
->OcclusionResultSaved
= GL_FALSE
;
4714 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4718 /* GL_SGIS_pixel_texture */
4719 case GL_PIXEL_TEXTURE_SGIS
:
4720 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4723 /* GL_SGIX_pixel_texture */
4724 case GL_PIXEL_TEX_GEN_SGIX
:
4725 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4727 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4728 *params
= (GLint
) pixel_texgen_mode(ctx
);
4731 /* GL_SGI_color_matrix (also in 1.2 imaging) */
4732 case GL_COLOR_MATRIX_SGI
:
4733 for (i
=0;i
<16;i
++) {
4734 params
[i
] = (GLint
) ctx
->ColorMatrix
.m
[i
];
4737 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
4738 *params
= ctx
->ColorStackDepth
+ 1;
4740 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
4741 *params
= MAX_COLOR_STACK_DEPTH
;
4743 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
4744 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
4746 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
4747 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
4749 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
4750 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
4752 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
4753 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
4755 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
4756 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
4758 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
4759 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
4761 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
4762 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
4764 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
4765 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
4768 /* GL_EXT_convolution (also in 1.2 imaging) */
4769 case GL_MAX_CONVOLUTION_WIDTH
:
4770 *params
= ctx
->Const
.MaxConvolutionWidth
;
4772 case GL_MAX_CONVOLUTION_HEIGHT
:
4773 *params
= ctx
->Const
.MaxConvolutionHeight
;
4775 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
4776 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
4778 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
4779 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
4781 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
4782 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
4784 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
4785 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
4787 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
4788 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
4790 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
4791 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
4793 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
4794 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4796 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
4797 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4800 /* GL_SGI_color_table (also in 1.2 imaging */
4801 case GL_COLOR_TABLE_SGI
:
4802 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
4804 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
4805 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
4807 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
4808 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
4812 /* GL_EXT_secondary_color */
4813 case GL_COLOR_SUM_EXT
:
4814 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
4816 case GL_CURRENT_SECONDARY_COLOR_EXT
:
4817 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
4818 params
[0] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[0] ) );
4819 params
[1] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[1] ) );
4820 params
[2] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[2] ) );
4822 case GL_SECONDARY_COLOR_ARRAY_EXT
:
4823 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
4825 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
4826 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
4828 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
4829 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4831 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
4832 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4835 /* GL_EXT_fog_coord */
4836 case GL_CURRENT_FOG_COORDINATE_EXT
:
4837 FLUSH_TNL( ctx
, FLUSH_UPDATE_CURRENT
);
4838 *params
= (GLint
) ctx
->Current
.FogCoord
;
4840 case GL_FOG_COORDINATE_ARRAY_EXT
:
4841 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
4843 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
4844 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
4846 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
4847 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
4851 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4858 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
4860 GET_CURRENT_CONTEXT(ctx
);
4861 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4863 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetPointerv");
4868 if (MESA_VERBOSE
& VERBOSE_API
)
4869 fprintf(stderr
, "glGetPointerv %s\n", gl_lookup_enum_by_nr(pname
));
4871 if (ctx
->Driver
.GetPointerv
4872 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
4876 case GL_VERTEX_ARRAY_POINTER
:
4877 *params
= ctx
->Array
.Vertex
.Ptr
;
4879 case GL_NORMAL_ARRAY_POINTER
:
4880 *params
= ctx
->Array
.Normal
.Ptr
;
4882 case GL_COLOR_ARRAY_POINTER
:
4883 *params
= ctx
->Array
.Color
.Ptr
;
4885 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
4886 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
4888 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
4889 *params
= ctx
->Array
.FogCoord
.Ptr
;
4891 case GL_INDEX_ARRAY_POINTER
:
4892 *params
= ctx
->Array
.Index
.Ptr
;
4894 case GL_TEXTURE_COORD_ARRAY_POINTER
:
4895 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
4897 case GL_EDGE_FLAG_ARRAY_POINTER
:
4898 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
4900 case GL_FEEDBACK_BUFFER_POINTER
:
4901 *params
= ctx
->Feedback
.Buffer
;
4903 case GL_SELECTION_BUFFER_POINTER
:
4904 *params
= ctx
->Select
.Buffer
;
4907 gl_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
4915 _mesa_GetString( GLenum name
)
4917 GET_CURRENT_CONTEXT(ctx
);
4918 static const char *vendor
= "Brian Paul";
4919 static const char *renderer
= "Mesa";
4920 static const char *version
= "1.2 Mesa 3.5 beta";
4922 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH_WITH_RETVAL(ctx
, "glGetString", 0);
4924 /* this is a required driver function */
4925 assert(ctx
->Driver
.GetString
);
4927 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
4933 return (const GLubyte
*) vendor
;
4935 return (const GLubyte
*) renderer
;
4937 return (const GLubyte
*) version
;
4939 return (const GLubyte
*) gl_extensions_get_string( ctx
);
4941 gl_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
4942 return (const GLubyte
*) 0;
4949 * Execute a glGetError command
4952 _mesa_GetError( void )
4954 GET_CURRENT_CONTEXT(ctx
);
4956 GLenum e
= ctx
->ErrorValue
;
4958 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL( ctx
, "glGetError", (GLenum
) 0);
4960 if (MESA_VERBOSE
& VERBOSE_API
)
4961 fprintf(stderr
, "glGetError <-- %s\n", gl_lookup_enum_by_nr(e
));
4963 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;