1 /* $Id: get.c,v 1.60 2001/05/21 16:41:03 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2001 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
];
94 ASSERT_OUTSIDE_BEGIN_END(ctx
);
99 /* We need this in order to get correct results for
100 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
102 FLUSH_VERTICES(ctx
, 0);
104 if (MESA_VERBOSE
& VERBOSE_API
)
105 fprintf(stderr
, "glGetBooleanv %s\n", _mesa_lookup_enum_by_nr(pname
));
107 if (ctx
->Driver
.GetBooleanv
108 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
112 case GL_ACCUM_RED_BITS
:
113 *params
= INT_TO_BOOL(ctx
->Visual
.accumRedBits
);
115 case GL_ACCUM_GREEN_BITS
:
116 *params
= INT_TO_BOOL(ctx
->Visual
.accumGreenBits
);
118 case GL_ACCUM_BLUE_BITS
:
119 *params
= INT_TO_BOOL(ctx
->Visual
.accumBlueBits
);
121 case GL_ACCUM_ALPHA_BITS
:
122 *params
= INT_TO_BOOL(ctx
->Visual
.accumAlphaBits
);
124 case GL_ACCUM_CLEAR_VALUE
:
125 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
126 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
127 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
128 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
131 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
134 *params
= INT_TO_BOOL(ctx
->Visual
.alphaBits
);
137 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
140 *params
= ctx
->Color
.AlphaEnabled
;
142 case GL_ALPHA_TEST_FUNC
:
143 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
145 case GL_ALPHA_TEST_REF
:
146 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
148 case GL_ATTRIB_STACK_DEPTH
:
149 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
152 *params
= ctx
->Eval
.AutoNormal
;
155 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
158 *params
= ctx
->Color
.BlendEnabled
;
161 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
164 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
166 case GL_BLEND_SRC_RGB_EXT
:
167 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
169 case GL_BLEND_DST_RGB_EXT
:
170 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
172 case GL_BLEND_SRC_ALPHA_EXT
:
173 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
175 case GL_BLEND_DST_ALPHA_EXT
:
176 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
178 case GL_BLEND_EQUATION_EXT
:
179 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
181 case GL_BLEND_COLOR_EXT
:
182 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
183 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
184 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
185 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
188 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
191 *params
= INT_TO_BOOL( ctx
->Visual
.blueBits
);
194 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
196 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
197 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
205 *params
= ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
207 case GL_COLOR_CLEAR_VALUE
:
208 params
[0] = ctx
->Color
.ClearColor
[0] ? GL_TRUE
: GL_FALSE
;
209 params
[1] = ctx
->Color
.ClearColor
[1] ? GL_TRUE
: GL_FALSE
;
210 params
[2] = ctx
->Color
.ClearColor
[2] ? GL_TRUE
: GL_FALSE
;
211 params
[3] = ctx
->Color
.ClearColor
[3] ? GL_TRUE
: GL_FALSE
;
213 case GL_COLOR_MATERIAL
:
214 *params
= ctx
->Light
.ColorMaterialEnabled
;
216 case GL_COLOR_MATERIAL_FACE
:
217 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
219 case GL_COLOR_MATERIAL_PARAMETER
:
220 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
222 case GL_COLOR_WRITEMASK
:
223 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
224 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
225 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
226 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
229 *params
= ctx
->Polygon
.CullFlag
;
231 case GL_CULL_FACE_MODE
:
232 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
234 case GL_CURRENT_COLOR
:
235 FLUSH_CURRENT(ctx
, 0);
236 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Color
[0]);
237 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Color
[1]);
238 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Color
[2]);
239 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Color
[3]);
241 case GL_CURRENT_INDEX
:
242 FLUSH_CURRENT(ctx
, 0);
243 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
245 case GL_CURRENT_NORMAL
:
246 FLUSH_CURRENT(ctx
, 0);
247 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[0]);
248 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[1]);
249 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[2]);
251 case GL_CURRENT_RASTER_COLOR
:
252 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
253 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
254 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
255 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
257 case GL_CURRENT_RASTER_DISTANCE
:
258 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
260 case GL_CURRENT_RASTER_INDEX
:
261 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
263 case GL_CURRENT_RASTER_POSITION
:
264 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
265 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
266 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
267 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
269 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
270 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0]);
271 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1]);
272 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2]);
273 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3]);
275 case GL_CURRENT_RASTER_POSITION_VALID
:
276 *params
= ctx
->Current
.RasterPosValid
;
278 case GL_CURRENT_TEXTURE_COORDS
:
279 FLUSH_CURRENT(ctx
, 0);
280 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][0]);
281 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][1]);
282 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][2]);
283 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][3]);
286 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
289 *params
= INT_TO_BOOL(ctx
->Visual
.depthBits
);
291 case GL_DEPTH_CLEAR_VALUE
:
292 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
295 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
298 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
299 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
302 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
305 *params
= ctx
->Depth
.Test
;
307 case GL_DEPTH_WRITEMASK
:
308 *params
= ctx
->Depth
.Mask
;
311 *params
= ctx
->Color
.DitherFlag
;
313 case GL_DOUBLEBUFFER
:
314 *params
= ctx
->Visual
.doubleBufferMode
;
317 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
320 FLUSH_CURRENT(ctx
, 0);
321 *params
= ctx
->Current
.EdgeFlag
;
323 case GL_FEEDBACK_BUFFER_SIZE
:
324 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
326 case GL_FEEDBACK_BUFFER_TYPE
:
327 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
330 *params
= ctx
->Fog
.Enabled
;
333 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
334 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
335 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
336 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
339 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
342 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
345 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
348 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
351 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
354 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
357 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
360 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
363 *params
= INT_TO_BOOL( ctx
->Visual
.greenBits
);
366 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
369 if (ctx
->Extensions
.EXT_histogram
) {
370 *params
= ctx
->Pixel
.HistogramEnabled
;
373 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
378 *params
= INT_TO_BOOL( ctx
->Visual
.indexBits
);
380 case GL_INDEX_CLEAR_VALUE
:
381 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
384 *params
= ctx
->Visual
.rgbMode
? GL_FALSE
: GL_TRUE
;
386 case GL_INDEX_OFFSET
:
387 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
390 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
392 case GL_INDEX_WRITEMASK
:
393 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
403 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
406 *params
= ctx
->Light
.Enabled
;
408 case GL_LIGHT_MODEL_AMBIENT
:
409 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
410 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
411 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
412 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
414 case GL_LIGHT_MODEL_COLOR_CONTROL
:
415 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
417 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
418 *params
= ctx
->Light
.Model
.LocalViewer
;
420 case GL_LIGHT_MODEL_TWO_SIDE
:
421 *params
= ctx
->Light
.Model
.TwoSide
;
424 *params
= ctx
->Line
.SmoothFlag
;
426 case GL_LINE_SMOOTH_HINT
:
427 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
429 case GL_LINE_STIPPLE
:
430 *params
= ctx
->Line
.StippleFlag
;
432 case GL_LINE_STIPPLE_PATTERN
:
433 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
435 case GL_LINE_STIPPLE_REPEAT
:
436 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
439 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
441 case GL_LINE_WIDTH_GRANULARITY
:
442 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
444 case GL_LINE_WIDTH_RANGE
:
445 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
446 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
448 case GL_ALIASED_LINE_WIDTH_RANGE
:
449 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
450 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
453 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
456 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
459 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
460 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
462 case GL_INDEX_LOGIC_OP
:
463 *params
= ctx
->Color
.IndexLogicOpEnabled
;
465 case GL_COLOR_LOGIC_OP
:
466 *params
= ctx
->Color
.ColorLogicOpEnabled
;
468 case GL_LOGIC_OP_MODE
:
469 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
471 case GL_MAP1_COLOR_4
:
472 *params
= ctx
->Eval
.Map1Color4
;
474 case GL_MAP1_GRID_DOMAIN
:
475 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
476 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
478 case GL_MAP1_GRID_SEGMENTS
:
479 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
482 *params
= ctx
->Eval
.Map1Index
;
485 *params
= ctx
->Eval
.Map1Normal
;
487 case GL_MAP1_TEXTURE_COORD_1
:
488 *params
= ctx
->Eval
.Map1TextureCoord1
;
490 case GL_MAP1_TEXTURE_COORD_2
:
491 *params
= ctx
->Eval
.Map1TextureCoord2
;
493 case GL_MAP1_TEXTURE_COORD_3
:
494 *params
= ctx
->Eval
.Map1TextureCoord3
;
496 case GL_MAP1_TEXTURE_COORD_4
:
497 *params
= ctx
->Eval
.Map1TextureCoord4
;
499 case GL_MAP1_VERTEX_3
:
500 *params
= ctx
->Eval
.Map1Vertex3
;
502 case GL_MAP1_VERTEX_4
:
503 *params
= ctx
->Eval
.Map1Vertex4
;
505 case GL_MAP2_COLOR_4
:
506 *params
= ctx
->Eval
.Map2Color4
;
508 case GL_MAP2_GRID_DOMAIN
:
509 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
510 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
511 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
512 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
514 case GL_MAP2_GRID_SEGMENTS
:
515 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
516 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
519 *params
= ctx
->Eval
.Map2Index
;
522 *params
= ctx
->Eval
.Map2Normal
;
524 case GL_MAP2_TEXTURE_COORD_1
:
525 *params
= ctx
->Eval
.Map2TextureCoord1
;
527 case GL_MAP2_TEXTURE_COORD_2
:
528 *params
= ctx
->Eval
.Map2TextureCoord2
;
530 case GL_MAP2_TEXTURE_COORD_3
:
531 *params
= ctx
->Eval
.Map2TextureCoord3
;
533 case GL_MAP2_TEXTURE_COORD_4
:
534 *params
= ctx
->Eval
.Map2TextureCoord4
;
536 case GL_MAP2_VERTEX_3
:
537 *params
= ctx
->Eval
.Map2Vertex3
;
539 case GL_MAP2_VERTEX_4
:
540 *params
= ctx
->Eval
.Map2Vertex4
;
543 *params
= ctx
->Pixel
.MapColorFlag
;
546 *params
= ctx
->Pixel
.MapStencilFlag
;
549 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
551 case GL_MAX_ATTRIB_STACK_DEPTH
:
552 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
554 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
555 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
557 case GL_MAX_CLIP_PLANES
:
558 *params
= INT_TO_BOOL(ctx
->Const
.MaxClipPlanes
);
560 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
561 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
563 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
564 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
566 case GL_MAX_EVAL_ORDER
:
567 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
570 *params
= INT_TO_BOOL(ctx
->Const
.MaxLights
);
572 case GL_MAX_LIST_NESTING
:
573 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
575 case GL_MAX_MODELVIEW_STACK_DEPTH
:
576 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
578 case GL_MAX_NAME_STACK_DEPTH
:
579 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
581 case GL_MAX_PIXEL_MAP_TABLE
:
582 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
584 case GL_MAX_PROJECTION_STACK_DEPTH
:
585 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
587 case GL_MAX_TEXTURE_SIZE
:
588 case GL_MAX_3D_TEXTURE_SIZE
:
589 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureSize
);
591 case GL_MAX_TEXTURE_STACK_DEPTH
:
592 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
594 case GL_MAX_VIEWPORT_DIMS
:
595 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
596 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
599 *params
= ctx
->Pixel
.MinMaxEnabled
;
601 case GL_MODELVIEW_MATRIX
:
603 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelView
.m
[i
]);
606 case GL_MODELVIEW_STACK_DEPTH
:
607 *params
= INT_TO_BOOL(ctx
->ModelViewStackDepth
+ 1);
609 case GL_NAME_STACK_DEPTH
:
610 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
613 *params
= ctx
->Transform
.Normalize
;
615 case GL_PACK_ALIGNMENT
:
616 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
618 case GL_PACK_LSB_FIRST
:
619 *params
= ctx
->Pack
.LsbFirst
;
621 case GL_PACK_ROW_LENGTH
:
622 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
624 case GL_PACK_SKIP_PIXELS
:
625 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
627 case GL_PACK_SKIP_ROWS
:
628 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
630 case GL_PACK_SWAP_BYTES
:
631 *params
= ctx
->Pack
.SwapBytes
;
633 case GL_PACK_SKIP_IMAGES_EXT
:
634 *params
= ctx
->Pack
.SkipImages
;
636 case GL_PACK_IMAGE_HEIGHT_EXT
:
637 *params
= ctx
->Pack
.ImageHeight
;
639 case GL_PERSPECTIVE_CORRECTION_HINT
:
640 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
642 case GL_PIXEL_MAP_A_TO_A_SIZE
:
643 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
645 case GL_PIXEL_MAP_B_TO_B_SIZE
:
646 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
648 case GL_PIXEL_MAP_G_TO_G_SIZE
:
649 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
651 case GL_PIXEL_MAP_I_TO_A_SIZE
:
652 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
654 case GL_PIXEL_MAP_I_TO_B_SIZE
:
655 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
657 case GL_PIXEL_MAP_I_TO_G_SIZE
:
658 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
660 case GL_PIXEL_MAP_I_TO_I_SIZE
:
661 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
663 case GL_PIXEL_MAP_I_TO_R_SIZE
:
664 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
666 case GL_PIXEL_MAP_R_TO_R_SIZE
:
667 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
669 case GL_PIXEL_MAP_S_TO_S_SIZE
:
670 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
673 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
675 case GL_POINT_SIZE_GRANULARITY
:
676 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
678 case GL_POINT_SIZE_RANGE
:
679 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
680 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
682 case GL_ALIASED_POINT_SIZE_RANGE
:
683 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
684 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
686 case GL_POINT_SMOOTH
:
687 *params
= ctx
->Point
.SmoothFlag
;
689 case GL_POINT_SMOOTH_HINT
:
690 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
692 case GL_POINT_SIZE_MIN_EXT
:
693 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
695 case GL_POINT_SIZE_MAX_EXT
:
696 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
698 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
699 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
701 case GL_DISTANCE_ATTENUATION_EXT
:
702 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
703 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
704 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
706 case GL_POLYGON_MODE
:
707 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
708 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
710 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
711 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
713 case GL_POLYGON_OFFSET_FACTOR
:
714 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
716 case GL_POLYGON_OFFSET_UNITS
:
717 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
719 case GL_POLYGON_SMOOTH
:
720 *params
= ctx
->Polygon
.SmoothFlag
;
722 case GL_POLYGON_SMOOTH_HINT
:
723 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
725 case GL_POLYGON_STIPPLE
:
726 *params
= ctx
->Polygon
.StippleFlag
;
728 case GL_PROJECTION_MATRIX
:
730 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrix
.m
[i
]);
733 case GL_PROJECTION_STACK_DEPTH
:
734 *params
= INT_TO_BOOL(ctx
->ProjectionStackDepth
+ 1);
737 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
740 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
743 *params
= INT_TO_BOOL( ctx
->Visual
.redBits
);
746 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
749 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
751 case GL_RESCALE_NORMAL
:
752 *params
= ctx
->Transform
.RescaleNormals
;
755 *params
= ctx
->Visual
.rgbMode
;
758 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
759 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
760 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
761 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
763 case GL_SCISSOR_TEST
:
764 *params
= ctx
->Scissor
.Enabled
;
766 case GL_SELECTION_BUFFER_SIZE
:
767 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
770 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
772 case GL_SHARED_TEXTURE_PALETTE_EXT
:
773 *params
= ctx
->Texture
.SharedPalette
;
775 case GL_STENCIL_BITS
:
776 *params
= INT_TO_BOOL(ctx
->Visual
.stencilBits
);
778 case GL_STENCIL_CLEAR_VALUE
:
779 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
781 case GL_STENCIL_FAIL
:
782 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
);
784 case GL_STENCIL_FUNC
:
785 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
);
787 case GL_STENCIL_PASS_DEPTH_FAIL
:
788 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
);
790 case GL_STENCIL_PASS_DEPTH_PASS
:
791 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
);
794 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
);
796 case GL_STENCIL_TEST
:
797 *params
= ctx
->Stencil
.Enabled
;
799 case GL_STENCIL_VALUE_MASK
:
800 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
);
802 case GL_STENCIL_WRITEMASK
:
803 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
);
806 *params
= ctx
->Visual
.stereoMode
;
808 case GL_SUBPIXEL_BITS
:
809 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
812 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
815 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
818 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
820 case GL_TEXTURE_BINDING_1D
:
821 *params
= INT_TO_BOOL(textureUnit
->Current1D
->Name
);
823 case GL_TEXTURE_BINDING_2D
:
824 *params
= INT_TO_BOOL(textureUnit
->Current2D
->Name
);
826 case GL_TEXTURE_BINDING_3D
:
827 *params
= INT_TO_BOOL(textureUnit
->Current3D
->Name
);
829 case GL_TEXTURE_ENV_COLOR
:
831 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
832 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
833 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
834 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
837 case GL_TEXTURE_ENV_MODE
:
838 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
840 case GL_TEXTURE_GEN_S
:
841 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
843 case GL_TEXTURE_GEN_T
:
844 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
846 case GL_TEXTURE_GEN_R
:
847 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
849 case GL_TEXTURE_GEN_Q
:
850 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
852 case GL_TEXTURE_MATRIX
:
855 FLOAT_TO_BOOL(ctx
->TextureMatrix
[texTransformUnit
].m
[i
]);
858 case GL_TEXTURE_STACK_DEPTH
:
859 *params
= INT_TO_BOOL(ctx
->TextureStackDepth
[texTransformUnit
] + 1);
861 case GL_UNPACK_ALIGNMENT
:
862 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
864 case GL_UNPACK_LSB_FIRST
:
865 *params
= ctx
->Unpack
.LsbFirst
;
867 case GL_UNPACK_ROW_LENGTH
:
868 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
870 case GL_UNPACK_SKIP_PIXELS
:
871 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
873 case GL_UNPACK_SKIP_ROWS
:
874 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
876 case GL_UNPACK_SWAP_BYTES
:
877 *params
= ctx
->Unpack
.SwapBytes
;
879 case GL_UNPACK_SKIP_IMAGES_EXT
:
880 *params
= ctx
->Unpack
.SkipImages
;
882 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
883 *params
= ctx
->Unpack
.ImageHeight
;
886 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
887 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
888 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
889 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
892 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
895 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
897 case GL_VERTEX_ARRAY
:
898 *params
= ctx
->Array
.Vertex
.Enabled
;
900 case GL_VERTEX_ARRAY_SIZE
:
901 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
903 case GL_VERTEX_ARRAY_TYPE
:
904 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
906 case GL_VERTEX_ARRAY_STRIDE
:
907 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
909 case GL_VERTEX_ARRAY_COUNT_EXT
:
910 *params
= INT_TO_BOOL(0);
912 case GL_NORMAL_ARRAY
:
913 *params
= ctx
->Array
.Normal
.Enabled
;
915 case GL_NORMAL_ARRAY_TYPE
:
916 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
918 case GL_NORMAL_ARRAY_STRIDE
:
919 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
921 case GL_NORMAL_ARRAY_COUNT_EXT
:
922 *params
= INT_TO_BOOL(0);
925 *params
= ctx
->Array
.Color
.Enabled
;
927 case GL_COLOR_ARRAY_SIZE
:
928 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
930 case GL_COLOR_ARRAY_TYPE
:
931 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
933 case GL_COLOR_ARRAY_STRIDE
:
934 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
936 case GL_COLOR_ARRAY_COUNT_EXT
:
937 *params
= INT_TO_BOOL(0);
940 *params
= ctx
->Array
.Index
.Enabled
;
942 case GL_INDEX_ARRAY_TYPE
:
943 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
945 case GL_INDEX_ARRAY_STRIDE
:
946 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
948 case GL_INDEX_ARRAY_COUNT_EXT
:
949 *params
= INT_TO_BOOL(0);
951 case GL_TEXTURE_COORD_ARRAY
:
952 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
954 case GL_TEXTURE_COORD_ARRAY_SIZE
:
955 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
957 case GL_TEXTURE_COORD_ARRAY_TYPE
:
958 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
960 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
961 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
963 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
964 *params
= INT_TO_BOOL(0);
966 case GL_EDGE_FLAG_ARRAY
:
967 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
969 case GL_EDGE_FLAG_ARRAY_STRIDE
:
970 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
973 /* GL_ARB_multitexture */
974 case GL_MAX_TEXTURE_UNITS_ARB
:
975 *params
= ctx
->Const
.MaxTextureUnits
;
977 case GL_ACTIVE_TEXTURE_ARB
:
978 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
980 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
981 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
984 /* GL_ARB_texture_cube_map */
985 case GL_TEXTURE_CUBE_MAP_ARB
:
986 if (ctx
->Extensions
.ARB_texture_cube_map
)
987 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
989 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
991 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
992 if (ctx
->Extensions
.ARB_texture_cube_map
)
993 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
995 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
997 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
998 if (ctx
->Extensions
.ARB_texture_cube_map
)
999 *params
= INT_TO_BOOL(ctx
->Const
.MaxCubeTextureSize
);
1001 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1004 /* GL_ARB_texture_compression */
1005 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1006 if (ctx
->Extensions
.ARB_texture_compression
) {
1007 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
1010 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1012 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1013 if (ctx
->Extensions
.ARB_texture_compression
) {
1014 *params
= INT_TO_BOOL(ctx
->Const
.NumCompressedTextureFormats
);
1017 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1019 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1020 if (ctx
->Extensions
.ARB_texture_compression
) {
1022 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
1023 params
[i
] = INT_TO_BOOL(ctx
->Const
.CompressedTextureFormats
[i
]);
1026 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1029 /* GL_EXT_compiled_vertex_array */
1030 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1031 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1033 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1034 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1037 /* GL_ARB_transpose_matrix */
1038 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1042 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
1043 for (i
=0;i
<16;i
++) {
1044 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1048 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1052 _math_transposef(tm
, ctx
->ModelView
.m
);
1053 for (i
=0;i
<16;i
++) {
1054 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1058 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1062 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
1063 for (i
=0;i
<16;i
++) {
1064 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1068 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1072 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
1073 for (i
=0;i
<16;i
++) {
1074 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1079 /* GL_HP_occlusion_test */
1080 case GL_OCCLUSION_TEST_HP
:
1081 if (ctx
->Extensions
.HP_occlusion_test
) {
1082 *params
= ctx
->Depth
.OcclusionTest
;
1085 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1088 case GL_OCCLUSION_TEST_RESULT_HP
:
1089 if (ctx
->Extensions
.HP_occlusion_test
) {
1090 if (ctx
->Depth
.OcclusionTest
)
1091 *params
= ctx
->OcclusionResult
;
1093 *params
= ctx
->OcclusionResultSaved
;
1094 /* reset flag now */
1095 ctx
->OcclusionResult
= GL_FALSE
;
1096 ctx
->OcclusionResultSaved
= GL_FALSE
;
1099 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1103 /* GL_SGIS_pixel_texture */
1104 case GL_PIXEL_TEXTURE_SGIS
:
1105 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1108 /* GL_SGIX_pixel_texture */
1109 case GL_PIXEL_TEX_GEN_SGIX
:
1110 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1112 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1113 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1116 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1117 case GL_COLOR_MATRIX_SGI
:
1118 for (i
=0;i
<16;i
++) {
1119 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrix
.m
[i
]);
1122 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1123 *params
= INT_TO_BOOL(ctx
->ColorStackDepth
+ 1);
1125 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1126 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1128 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1129 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1131 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1132 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1134 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1135 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1137 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1138 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1140 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1141 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1143 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1144 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1146 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1147 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1149 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1150 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1153 /* GL_EXT_convolution (also in 1.2 imaging) */
1154 case GL_CONVOLUTION_1D_EXT
:
1155 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
1156 *params
= ctx
->Pixel
.Convolution1DEnabled
;
1159 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1163 case GL_CONVOLUTION_2D
:
1164 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
1165 *params
= ctx
->Pixel
.Convolution2DEnabled
;
1168 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1172 case GL_SEPARABLE_2D
:
1173 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
1174 *params
= ctx
->Pixel
.Separable2DEnabled
;
1177 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1181 case GL_MAX_CONVOLUTION_WIDTH
:
1182 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionWidth
);
1184 case GL_MAX_CONVOLUTION_HEIGHT
:
1185 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionHeight
);
1187 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1188 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1190 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1191 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1193 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1194 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1196 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1197 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1199 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1200 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1202 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1203 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1205 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1206 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1208 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1209 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1212 /* GL_SGI_color_table (also in 1.2 imaging */
1213 case GL_COLOR_TABLE_SGI
:
1214 *params
= ctx
->Pixel
.ColorTableEnabled
;
1216 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1217 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1219 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1220 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1223 /* GL_EXT_secondary_color */
1224 case GL_COLOR_SUM_EXT
:
1225 *params
= ctx
->Fog
.ColorSumEnabled
;
1227 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1228 FLUSH_CURRENT(ctx
, 0);
1229 params
[0] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[0]);
1230 params
[1] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[1]);
1231 params
[2] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[2]);
1233 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1234 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1236 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1237 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1239 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1240 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1242 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1243 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1246 /* GL_EXT_fog_coord */
1247 case GL_CURRENT_FOG_COORDINATE_EXT
:
1248 FLUSH_CURRENT(ctx
, 0);
1249 *params
= FLOAT_TO_BOOL(ctx
->Current
.FogCoord
);
1251 case GL_FOG_COORDINATE_ARRAY_EXT
:
1252 *params
= ctx
->Array
.FogCoord
.Enabled
;
1254 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1255 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1257 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1258 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1261 /* GL_EXT_texture_filter_anisotropic */
1262 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1263 if (ctx
->Extensions
.EXT_texture_filter_anisotropic
) {
1264 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureMaxAnisotropy
);
1267 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1272 /* GL_MESA_sprite_point */
1273 case GL_SPRITE_POINT_MESA
:
1274 if (ctx
->Extensions
.MESA_sprite_point
) {
1275 *params
= ctx
->Point
.SpriteMode
;
1278 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1283 /* GL_SGIS_generate_mipmap */
1284 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1285 if (ctx
->Extensions
.SGIS_generate_mipmap
) {
1286 *params
= ENUM_TO_BOOL(ctx
->Hint
.GenerateMipmap
);
1289 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1295 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1303 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1305 GET_CURRENT_CONTEXT(ctx
);
1307 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1308 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
1309 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1310 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1315 /* We need this in order to get correct results for
1316 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
1318 FLUSH_VERTICES(ctx
, 0);
1320 if (MESA_VERBOSE
& VERBOSE_API
)
1321 fprintf(stderr
, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname
));
1323 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1327 case GL_ACCUM_RED_BITS
:
1328 *params
= (GLdouble
) ctx
->Visual
.accumRedBits
;
1330 case GL_ACCUM_GREEN_BITS
:
1331 *params
= (GLdouble
) ctx
->Visual
.accumGreenBits
;
1333 case GL_ACCUM_BLUE_BITS
:
1334 *params
= (GLdouble
) ctx
->Visual
.accumBlueBits
;
1336 case GL_ACCUM_ALPHA_BITS
:
1337 *params
= (GLdouble
) ctx
->Visual
.accumAlphaBits
;
1339 case GL_ACCUM_CLEAR_VALUE
:
1340 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1341 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1342 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1343 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1346 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1349 *params
= (GLdouble
) ctx
->Visual
.alphaBits
;
1351 case GL_ALPHA_SCALE
:
1352 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1355 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1357 case GL_ALPHA_TEST_FUNC
:
1358 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1360 case GL_ALPHA_TEST_REF
:
1361 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
1363 case GL_ATTRIB_STACK_DEPTH
:
1364 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1366 case GL_AUTO_NORMAL
:
1367 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1369 case GL_AUX_BUFFERS
:
1370 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1373 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1376 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1379 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1381 case GL_BLEND_SRC_RGB_EXT
:
1382 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1384 case GL_BLEND_DST_RGB_EXT
:
1385 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1387 case GL_BLEND_SRC_ALPHA_EXT
:
1388 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1390 case GL_BLEND_DST_ALPHA_EXT
:
1391 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1393 case GL_BLEND_EQUATION_EXT
:
1394 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1396 case GL_BLEND_COLOR_EXT
:
1397 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1398 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1399 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1400 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1403 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1406 *params
= (GLdouble
) ctx
->Visual
.blueBits
;
1409 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1411 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1412 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1414 case GL_CLIP_PLANE0
:
1415 case GL_CLIP_PLANE1
:
1416 case GL_CLIP_PLANE2
:
1417 case GL_CLIP_PLANE3
:
1418 case GL_CLIP_PLANE4
:
1419 case GL_CLIP_PLANE5
:
1420 *params
= (GLdouble
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
1422 case GL_COLOR_CLEAR_VALUE
:
1423 params
[0] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[0]);
1424 params
[1] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[1]);
1425 params
[2] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[2]);
1426 params
[3] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[3]);
1428 case GL_COLOR_MATERIAL
:
1429 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1431 case GL_COLOR_MATERIAL_FACE
:
1432 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1434 case GL_COLOR_MATERIAL_PARAMETER
:
1435 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1437 case GL_COLOR_WRITEMASK
:
1438 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1439 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1440 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1441 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1444 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1446 case GL_CULL_FACE_MODE
:
1447 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1449 case GL_CURRENT_COLOR
:
1450 FLUSH_CURRENT(ctx
, 0);
1451 params
[0] = (ctx
->Current
.Color
[0]);
1452 params
[1] = (ctx
->Current
.Color
[1]);
1453 params
[2] = (ctx
->Current
.Color
[2]);
1454 params
[3] = (ctx
->Current
.Color
[3]);
1456 case GL_CURRENT_INDEX
:
1457 FLUSH_CURRENT(ctx
, 0);
1458 *params
= (GLdouble
) ctx
->Current
.Index
;
1460 case GL_CURRENT_NORMAL
:
1461 FLUSH_CURRENT(ctx
, 0);
1462 params
[0] = (GLdouble
) ctx
->Current
.Normal
[0];
1463 params
[1] = (GLdouble
) ctx
->Current
.Normal
[1];
1464 params
[2] = (GLdouble
) ctx
->Current
.Normal
[2];
1466 case GL_CURRENT_RASTER_COLOR
:
1467 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1468 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1469 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1470 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1472 case GL_CURRENT_RASTER_DISTANCE
:
1473 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1475 case GL_CURRENT_RASTER_INDEX
:
1476 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1478 case GL_CURRENT_RASTER_POSITION
:
1479 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1480 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1481 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1482 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1484 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1485 params
[0] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
1486 params
[1] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
1487 params
[2] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
1488 params
[3] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
1490 case GL_CURRENT_RASTER_POSITION_VALID
:
1491 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1493 case GL_CURRENT_TEXTURE_COORDS
:
1494 FLUSH_CURRENT(ctx
, 0);
1495 params
[0] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
1496 params
[1] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
1497 params
[2] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
1498 params
[3] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
1501 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1504 *params
= (GLdouble
) ctx
->Visual
.depthBits
;
1506 case GL_DEPTH_CLEAR_VALUE
:
1507 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1510 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1512 case GL_DEPTH_RANGE
:
1513 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1514 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1516 case GL_DEPTH_SCALE
:
1517 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1520 *params
= (GLdouble
) ctx
->Depth
.Test
;
1522 case GL_DEPTH_WRITEMASK
:
1523 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1526 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1528 case GL_DOUBLEBUFFER
:
1529 *params
= (GLdouble
) ctx
->Visual
.doubleBufferMode
;
1531 case GL_DRAW_BUFFER
:
1532 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1535 FLUSH_CURRENT(ctx
, 0);
1536 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1538 case GL_FEEDBACK_BUFFER_SIZE
:
1539 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1541 case GL_FEEDBACK_BUFFER_TYPE
:
1542 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1545 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1548 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1549 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1550 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1551 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1553 case GL_FOG_DENSITY
:
1554 *params
= (GLdouble
) ctx
->Fog
.Density
;
1557 *params
= (GLdouble
) ctx
->Fog
.End
;
1560 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1563 *params
= (GLdouble
) ctx
->Fog
.Index
;
1566 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1569 *params
= (GLdouble
) ctx
->Fog
.Start
;
1572 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1575 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1578 *params
= (GLdouble
) ctx
->Visual
.greenBits
;
1580 case GL_GREEN_SCALE
:
1581 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1584 if (ctx
->Extensions
.EXT_histogram
|| ctx
->Extensions
.ARB_imaging
) {
1585 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
1588 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
1593 *params
= (GLdouble
) ctx
->Visual
.indexBits
;
1595 case GL_INDEX_CLEAR_VALUE
:
1596 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1599 *params
= ctx
->Visual
.rgbMode
? 0.0 : 1.0;
1601 case GL_INDEX_OFFSET
:
1602 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1604 case GL_INDEX_SHIFT
:
1605 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1607 case GL_INDEX_WRITEMASK
:
1608 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1618 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1621 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1623 case GL_LIGHT_MODEL_AMBIENT
:
1624 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1625 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1626 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1627 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1629 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1630 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1632 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1633 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1635 case GL_LIGHT_MODEL_TWO_SIDE
:
1636 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1638 case GL_LINE_SMOOTH
:
1639 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1641 case GL_LINE_SMOOTH_HINT
:
1642 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1644 case GL_LINE_STIPPLE
:
1645 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1647 case GL_LINE_STIPPLE_PATTERN
:
1648 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1650 case GL_LINE_STIPPLE_REPEAT
:
1651 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1654 *params
= (GLdouble
) ctx
->Line
.Width
;
1656 case GL_LINE_WIDTH_GRANULARITY
:
1657 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1659 case GL_LINE_WIDTH_RANGE
:
1660 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1661 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1663 case GL_ALIASED_LINE_WIDTH_RANGE
:
1664 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1665 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1668 *params
= (GLdouble
) ctx
->List
.ListBase
;
1671 *params
= (GLdouble
) ctx
->CurrentListNum
;
1674 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1675 : ENUM_TO_DOUBLE(GL_COMPILE
);
1677 case GL_INDEX_LOGIC_OP
:
1678 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1680 case GL_COLOR_LOGIC_OP
:
1681 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1683 case GL_LOGIC_OP_MODE
:
1684 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1686 case GL_MAP1_COLOR_4
:
1687 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1689 case GL_MAP1_GRID_DOMAIN
:
1690 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1691 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1693 case GL_MAP1_GRID_SEGMENTS
:
1694 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1697 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1699 case GL_MAP1_NORMAL
:
1700 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1702 case GL_MAP1_TEXTURE_COORD_1
:
1703 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1705 case GL_MAP1_TEXTURE_COORD_2
:
1706 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1708 case GL_MAP1_TEXTURE_COORD_3
:
1709 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1711 case GL_MAP1_TEXTURE_COORD_4
:
1712 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1714 case GL_MAP1_VERTEX_3
:
1715 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1717 case GL_MAP1_VERTEX_4
:
1718 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1720 case GL_MAP2_COLOR_4
:
1721 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1723 case GL_MAP2_GRID_DOMAIN
:
1724 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1725 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1726 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1727 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1729 case GL_MAP2_GRID_SEGMENTS
:
1730 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1731 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1734 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1736 case GL_MAP2_NORMAL
:
1737 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1739 case GL_MAP2_TEXTURE_COORD_1
:
1740 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1742 case GL_MAP2_TEXTURE_COORD_2
:
1743 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1745 case GL_MAP2_TEXTURE_COORD_3
:
1746 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1748 case GL_MAP2_TEXTURE_COORD_4
:
1749 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1751 case GL_MAP2_VERTEX_3
:
1752 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1754 case GL_MAP2_VERTEX_4
:
1755 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1758 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1760 case GL_MAP_STENCIL
:
1761 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1763 case GL_MATRIX_MODE
:
1764 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1766 case GL_MAX_ATTRIB_STACK_DEPTH
:
1767 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1769 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1770 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1772 case GL_MAX_CLIP_PLANES
:
1773 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
1775 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1776 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1778 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1779 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1781 case GL_MAX_EVAL_ORDER
:
1782 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1785 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
1787 case GL_MAX_LIST_NESTING
:
1788 *params
= (GLdouble
) MAX_LIST_NESTING
;
1790 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1791 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1793 case GL_MAX_NAME_STACK_DEPTH
:
1794 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1796 case GL_MAX_PIXEL_MAP_TABLE
:
1797 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1799 case GL_MAX_PROJECTION_STACK_DEPTH
:
1800 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1802 case GL_MAX_TEXTURE_SIZE
:
1803 case GL_MAX_3D_TEXTURE_SIZE
:
1804 *params
= (GLdouble
) ctx
->Const
.MaxTextureSize
;
1806 case GL_MAX_TEXTURE_STACK_DEPTH
:
1807 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1809 case GL_MAX_VIEWPORT_DIMS
:
1810 params
[0] = (GLdouble
) MAX_WIDTH
;
1811 params
[1] = (GLdouble
) MAX_HEIGHT
;
1814 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
1816 case GL_MODELVIEW_MATRIX
:
1817 for (i
=0;i
<16;i
++) {
1818 params
[i
] = (GLdouble
) ctx
->ModelView
.m
[i
];
1821 case GL_MODELVIEW_STACK_DEPTH
:
1822 *params
= (GLdouble
) (ctx
->ModelViewStackDepth
+ 1);
1824 case GL_NAME_STACK_DEPTH
:
1825 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1828 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1830 case GL_PACK_ALIGNMENT
:
1831 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1833 case GL_PACK_LSB_FIRST
:
1834 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1836 case GL_PACK_ROW_LENGTH
:
1837 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1839 case GL_PACK_SKIP_PIXELS
:
1840 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1842 case GL_PACK_SKIP_ROWS
:
1843 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1845 case GL_PACK_SWAP_BYTES
:
1846 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
1848 case GL_PACK_SKIP_IMAGES_EXT
:
1849 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
1851 case GL_PACK_IMAGE_HEIGHT_EXT
:
1852 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
1854 case GL_PERSPECTIVE_CORRECTION_HINT
:
1855 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
1857 case GL_PIXEL_MAP_A_TO_A_SIZE
:
1858 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
1860 case GL_PIXEL_MAP_B_TO_B_SIZE
:
1861 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
1863 case GL_PIXEL_MAP_G_TO_G_SIZE
:
1864 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
1866 case GL_PIXEL_MAP_I_TO_A_SIZE
:
1867 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
1869 case GL_PIXEL_MAP_I_TO_B_SIZE
:
1870 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
1872 case GL_PIXEL_MAP_I_TO_G_SIZE
:
1873 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
1875 case GL_PIXEL_MAP_I_TO_I_SIZE
:
1876 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
1878 case GL_PIXEL_MAP_I_TO_R_SIZE
:
1879 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
1881 case GL_PIXEL_MAP_R_TO_R_SIZE
:
1882 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
1884 case GL_PIXEL_MAP_S_TO_S_SIZE
:
1885 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
1888 *params
= (GLdouble
) ctx
->Point
.Size
;
1890 case GL_POINT_SIZE_GRANULARITY
:
1891 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
1893 case GL_POINT_SIZE_RANGE
:
1894 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
1895 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
1897 case GL_ALIASED_POINT_SIZE_RANGE
:
1898 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
1899 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
1901 case GL_POINT_SMOOTH
:
1902 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
1904 case GL_POINT_SMOOTH_HINT
:
1905 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
1907 case GL_POINT_SIZE_MIN_EXT
:
1908 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
1910 case GL_POINT_SIZE_MAX_EXT
:
1911 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
1913 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
1914 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
1916 case GL_DISTANCE_ATTENUATION_EXT
:
1917 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
1918 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
1919 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
1921 case GL_POLYGON_MODE
:
1922 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
1923 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
1925 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
1926 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1928 case GL_POLYGON_OFFSET_FACTOR
:
1929 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
1931 case GL_POLYGON_OFFSET_UNITS
:
1932 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1934 case GL_POLYGON_SMOOTH
:
1935 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
1937 case GL_POLYGON_SMOOTH_HINT
:
1938 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
1940 case GL_POLYGON_STIPPLE
:
1941 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
1943 case GL_PROJECTION_MATRIX
:
1944 for (i
=0;i
<16;i
++) {
1945 params
[i
] = (GLdouble
) ctx
->ProjectionMatrix
.m
[i
];
1948 case GL_PROJECTION_STACK_DEPTH
:
1949 *params
= (GLdouble
) (ctx
->ProjectionStackDepth
+ 1);
1951 case GL_READ_BUFFER
:
1952 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
1955 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
1958 *params
= (GLdouble
) ctx
->Visual
.redBits
;
1961 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
1963 case GL_RENDER_MODE
:
1964 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
1966 case GL_RESCALE_NORMAL
:
1967 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
1970 *params
= (GLdouble
) ctx
->Visual
.rgbMode
;
1972 case GL_SCISSOR_BOX
:
1973 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
1974 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
1975 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
1976 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
1978 case GL_SCISSOR_TEST
:
1979 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
1981 case GL_SELECTION_BUFFER_SIZE
:
1982 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
1984 case GL_SHADE_MODEL
:
1985 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
1987 case GL_SHARED_TEXTURE_PALETTE_EXT
:
1988 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
1990 case GL_STENCIL_BITS
:
1991 *params
= (GLdouble
) ctx
->Visual
.stencilBits
;
1993 case GL_STENCIL_CLEAR_VALUE
:
1994 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
1996 case GL_STENCIL_FAIL
:
1997 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
1999 case GL_STENCIL_FUNC
:
2000 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
2002 case GL_STENCIL_PASS_DEPTH_FAIL
:
2003 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
2005 case GL_STENCIL_PASS_DEPTH_PASS
:
2006 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
2008 case GL_STENCIL_REF
:
2009 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
2011 case GL_STENCIL_TEST
:
2012 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2014 case GL_STENCIL_VALUE_MASK
:
2015 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
2017 case GL_STENCIL_WRITEMASK
:
2018 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
2021 *params
= (GLdouble
) ctx
->Visual
.stereoMode
;
2023 case GL_SUBPIXEL_BITS
:
2024 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2027 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2030 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2033 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2035 case GL_TEXTURE_BINDING_1D
:
2036 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2038 case GL_TEXTURE_BINDING_2D
:
2039 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2041 case GL_TEXTURE_BINDING_3D
:
2042 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2044 case GL_TEXTURE_ENV_COLOR
:
2045 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2046 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2047 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2048 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2050 case GL_TEXTURE_ENV_MODE
:
2051 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2053 case GL_TEXTURE_GEN_S
:
2054 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2056 case GL_TEXTURE_GEN_T
:
2057 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2059 case GL_TEXTURE_GEN_R
:
2060 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2062 case GL_TEXTURE_GEN_Q
:
2063 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2065 case GL_TEXTURE_MATRIX
:
2066 for (i
=0;i
<16;i
++) {
2067 params
[i
] = (GLdouble
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
2070 case GL_TEXTURE_STACK_DEPTH
:
2071 *params
= (GLdouble
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
2073 case GL_UNPACK_ALIGNMENT
:
2074 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2076 case GL_UNPACK_LSB_FIRST
:
2077 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2079 case GL_UNPACK_ROW_LENGTH
:
2080 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2082 case GL_UNPACK_SKIP_PIXELS
:
2083 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2085 case GL_UNPACK_SKIP_ROWS
:
2086 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2088 case GL_UNPACK_SWAP_BYTES
:
2089 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2091 case GL_UNPACK_SKIP_IMAGES_EXT
:
2092 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2094 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2095 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2098 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2099 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2100 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2101 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2104 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2107 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2109 case GL_VERTEX_ARRAY
:
2110 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2112 case GL_VERTEX_ARRAY_SIZE
:
2113 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2115 case GL_VERTEX_ARRAY_TYPE
:
2116 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2118 case GL_VERTEX_ARRAY_STRIDE
:
2119 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2121 case GL_VERTEX_ARRAY_COUNT_EXT
:
2124 case GL_NORMAL_ARRAY
:
2125 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2127 case GL_NORMAL_ARRAY_TYPE
:
2128 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2130 case GL_NORMAL_ARRAY_STRIDE
:
2131 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2133 case GL_NORMAL_ARRAY_COUNT_EXT
:
2136 case GL_COLOR_ARRAY
:
2137 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2139 case GL_COLOR_ARRAY_SIZE
:
2140 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2142 case GL_COLOR_ARRAY_TYPE
:
2143 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2145 case GL_COLOR_ARRAY_STRIDE
:
2146 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2148 case GL_COLOR_ARRAY_COUNT_EXT
:
2151 case GL_INDEX_ARRAY
:
2152 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2154 case GL_INDEX_ARRAY_TYPE
:
2155 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2157 case GL_INDEX_ARRAY_STRIDE
:
2158 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2160 case GL_INDEX_ARRAY_COUNT_EXT
:
2163 case GL_TEXTURE_COORD_ARRAY
:
2164 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2166 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2167 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2169 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2170 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2172 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2173 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2175 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2178 case GL_EDGE_FLAG_ARRAY
:
2179 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2181 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2182 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2184 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2188 /* GL_ARB_multitexture */
2189 case GL_MAX_TEXTURE_UNITS_ARB
:
2190 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2192 case GL_ACTIVE_TEXTURE_ARB
:
2193 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2195 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2196 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2199 /* GL_ARB_texture_cube_map */
2200 case GL_TEXTURE_CUBE_MAP_ARB
:
2201 if (ctx
->Extensions
.ARB_texture_cube_map
)
2202 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2204 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2206 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2207 if (ctx
->Extensions
.ARB_texture_cube_map
)
2208 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2210 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2212 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2213 if (ctx
->Extensions
.ARB_texture_cube_map
)
2214 *params
= (GLdouble
) ctx
->Const
.MaxCubeTextureSize
;
2216 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2219 /* GL_ARB_texture_compression */
2220 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2221 if (ctx
->Extensions
.ARB_texture_compression
) {
2222 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2225 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2227 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2228 if (ctx
->Extensions
.ARB_texture_compression
) {
2229 *params
= (GLdouble
) ctx
->Const
.NumCompressedTextureFormats
;
2232 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2234 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2235 if (ctx
->Extensions
.ARB_texture_compression
) {
2237 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
2238 params
[i
] = (GLdouble
) ctx
->Const
.CompressedTextureFormats
[i
];
2241 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2244 /* GL_EXT_compiled_vertex_array */
2245 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2246 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2248 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2249 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2252 /* GL_ARB_transpose_matrix */
2253 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2257 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
2258 for (i
=0;i
<16;i
++) {
2259 params
[i
] = (GLdouble
) tm
[i
];
2263 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2267 _math_transposef(tm
, ctx
->ModelView
.m
);
2268 for (i
=0;i
<16;i
++) {
2269 params
[i
] = (GLdouble
) tm
[i
];
2273 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2277 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
2278 for (i
=0;i
<16;i
++) {
2279 params
[i
] = (GLdouble
) tm
[i
];
2283 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2287 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
2288 for (i
=0;i
<16;i
++) {
2289 params
[i
] = (GLdouble
) tm
[i
];
2294 /* GL_HP_occlusion_test */
2295 case GL_OCCLUSION_TEST_HP
:
2296 if (ctx
->Extensions
.HP_occlusion_test
) {
2297 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2300 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2303 case GL_OCCLUSION_TEST_RESULT_HP
:
2304 if (ctx
->Extensions
.HP_occlusion_test
) {
2305 if (ctx
->Depth
.OcclusionTest
)
2306 *params
= (GLdouble
) ctx
->OcclusionResult
;
2308 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2309 /* reset flag now */
2310 ctx
->OcclusionResult
= GL_FALSE
;
2311 ctx
->OcclusionResultSaved
= GL_FALSE
;
2314 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2318 /* GL_SGIS_pixel_texture */
2319 case GL_PIXEL_TEXTURE_SGIS
:
2320 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2323 /* GL_SGIX_pixel_texture */
2324 case GL_PIXEL_TEX_GEN_SGIX
:
2325 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2327 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2328 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2331 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2332 case GL_COLOR_MATRIX_SGI
:
2333 for (i
=0;i
<16;i
++) {
2334 params
[i
] = (GLdouble
) ctx
->ColorMatrix
.m
[i
];
2337 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2338 *params
= (GLdouble
) (ctx
->ColorStackDepth
+ 1);
2340 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2341 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2343 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2344 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2346 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2347 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2349 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2350 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2352 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2353 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2355 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2356 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2358 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2359 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2361 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2362 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2364 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2365 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2368 /* GL_EXT_convolution (also in 1.2 imaging) */
2369 case GL_CONVOLUTION_1D_EXT
:
2370 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
2371 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2374 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2378 case GL_CONVOLUTION_2D
:
2379 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
2380 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2383 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2387 case GL_SEPARABLE_2D
:
2388 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
2389 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2392 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2396 case GL_MAX_CONVOLUTION_WIDTH
:
2397 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionWidth
;
2399 case GL_MAX_CONVOLUTION_HEIGHT
:
2400 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionHeight
;
2402 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2403 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2405 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2406 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2408 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2409 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2411 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2412 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2414 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2415 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2417 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2418 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2420 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2421 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2423 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2424 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2427 /* GL_SGI_color_table (also in 1.2 imaging */
2428 case GL_COLOR_TABLE_SGI
:
2429 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2431 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2432 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2434 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2435 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2438 /* GL_EXT_secondary_color */
2439 case GL_COLOR_SUM_EXT
:
2440 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2442 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2443 FLUSH_CURRENT(ctx
, 0);
2444 params
[0] = (ctx
->Current
.SecondaryColor
[0]);
2445 params
[1] = (ctx
->Current
.SecondaryColor
[1]);
2446 params
[2] = (ctx
->Current
.SecondaryColor
[2]);
2448 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2449 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2451 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2452 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2454 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2455 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2457 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2458 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2461 /* GL_EXT_fog_coord */
2462 case GL_CURRENT_FOG_COORDINATE_EXT
:
2463 FLUSH_CURRENT(ctx
, 0);
2464 *params
= (GLdouble
) ctx
->Current
.FogCoord
;
2466 case GL_FOG_COORDINATE_ARRAY_EXT
:
2467 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2469 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2470 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2472 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2473 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2476 /* GL_EXT_texture_filter_anisotropic */
2477 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
2478 if (ctx
->Extensions
.EXT_texture_filter_anisotropic
) {
2479 *params
= (GLdouble
) ctx
->Const
.MaxTextureMaxAnisotropy
;
2482 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2487 /* GL_MESA_sprite_point */
2488 case GL_SPRITE_POINT_MESA
:
2489 if (ctx
->Extensions
.MESA_sprite_point
) {
2490 *params
= (GLdouble
) ctx
->Point
.SpriteMode
;
2493 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2498 /* GL_SGIS_generate_mipmap */
2499 case GL_GENERATE_MIPMAP_HINT_SGIS
:
2500 if (ctx
->Extensions
.SGIS_generate_mipmap
) {
2501 *params
= (GLdouble
) ctx
->Hint
.GenerateMipmap
;
2504 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2510 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2518 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2520 GET_CURRENT_CONTEXT(ctx
);
2522 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2523 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
2524 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2525 ASSERT_OUTSIDE_BEGIN_END(ctx
);
2530 /* We need this in order to get correct results for
2531 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
2533 FLUSH_VERTICES(ctx
, 0);
2535 if (MESA_VERBOSE
& VERBOSE_API
)
2536 fprintf(stderr
, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname
));
2538 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2542 case GL_ACCUM_RED_BITS
:
2543 *params
= (GLfloat
) ctx
->Visual
.accumRedBits
;
2545 case GL_ACCUM_GREEN_BITS
:
2546 *params
= (GLfloat
) ctx
->Visual
.accumGreenBits
;
2548 case GL_ACCUM_BLUE_BITS
:
2549 *params
= (GLfloat
) ctx
->Visual
.accumBlueBits
;
2551 case GL_ACCUM_ALPHA_BITS
:
2552 *params
= (GLfloat
) ctx
->Visual
.accumAlphaBits
;
2554 case GL_ACCUM_CLEAR_VALUE
:
2555 params
[0] = ctx
->Accum
.ClearColor
[0];
2556 params
[1] = ctx
->Accum
.ClearColor
[1];
2557 params
[2] = ctx
->Accum
.ClearColor
[2];
2558 params
[3] = ctx
->Accum
.ClearColor
[3];
2561 *params
= ctx
->Pixel
.AlphaBias
;
2564 *params
= (GLfloat
) ctx
->Visual
.alphaBits
;
2566 case GL_ALPHA_SCALE
:
2567 *params
= ctx
->Pixel
.AlphaScale
;
2570 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2572 case GL_ALPHA_TEST_FUNC
:
2573 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2575 case GL_ALPHA_TEST_REF
:
2576 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
2578 case GL_ATTRIB_STACK_DEPTH
:
2579 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2581 case GL_AUTO_NORMAL
:
2582 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2584 case GL_AUX_BUFFERS
:
2585 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2588 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2591 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2594 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2596 case GL_BLEND_SRC_RGB_EXT
:
2597 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2599 case GL_BLEND_DST_RGB_EXT
:
2600 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2602 case GL_BLEND_SRC_ALPHA_EXT
:
2603 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2605 case GL_BLEND_DST_ALPHA_EXT
:
2606 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2608 case GL_BLEND_EQUATION_EXT
:
2609 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2611 case GL_BLEND_COLOR_EXT
:
2612 params
[0] = ctx
->Color
.BlendColor
[0];
2613 params
[1] = ctx
->Color
.BlendColor
[1];
2614 params
[2] = ctx
->Color
.BlendColor
[2];
2615 params
[3] = ctx
->Color
.BlendColor
[3];
2618 *params
= ctx
->Pixel
.BlueBias
;
2621 *params
= (GLfloat
) ctx
->Visual
.blueBits
;
2624 *params
= ctx
->Pixel
.BlueScale
;
2626 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2627 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2629 case GL_CLIP_PLANE0
:
2630 case GL_CLIP_PLANE1
:
2631 case GL_CLIP_PLANE2
:
2632 case GL_CLIP_PLANE3
:
2633 case GL_CLIP_PLANE4
:
2634 case GL_CLIP_PLANE5
:
2635 *params
= (GLfloat
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
2637 case GL_COLOR_CLEAR_VALUE
:
2638 params
[0] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[0]);
2639 params
[1] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[1]);
2640 params
[2] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[2]);
2641 params
[3] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[3]);
2643 case GL_COLOR_MATERIAL
:
2644 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2646 case GL_COLOR_MATERIAL_FACE
:
2647 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2649 case GL_COLOR_MATERIAL_PARAMETER
:
2650 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2652 case GL_COLOR_WRITEMASK
:
2653 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2654 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2655 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2656 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2659 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2661 case GL_CULL_FACE_MODE
:
2662 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2664 case GL_CURRENT_COLOR
:
2665 FLUSH_CURRENT(ctx
, 0);
2666 params
[0] = (ctx
->Current
.Color
[0]);
2667 params
[1] = (ctx
->Current
.Color
[1]);
2668 params
[2] = (ctx
->Current
.Color
[2]);
2669 params
[3] = (ctx
->Current
.Color
[3]);
2671 case GL_CURRENT_INDEX
:
2672 FLUSH_CURRENT(ctx
, 0);
2673 *params
= (GLfloat
) ctx
->Current
.Index
;
2675 case GL_CURRENT_NORMAL
:
2676 FLUSH_CURRENT(ctx
, 0);
2677 params
[0] = ctx
->Current
.Normal
[0];
2678 params
[1] = ctx
->Current
.Normal
[1];
2679 params
[2] = ctx
->Current
.Normal
[2];
2681 case GL_CURRENT_RASTER_COLOR
:
2682 params
[0] = ctx
->Current
.RasterColor
[0];
2683 params
[1] = ctx
->Current
.RasterColor
[1];
2684 params
[2] = ctx
->Current
.RasterColor
[2];
2685 params
[3] = ctx
->Current
.RasterColor
[3];
2687 case GL_CURRENT_RASTER_DISTANCE
:
2688 params
[0] = ctx
->Current
.RasterDistance
;
2690 case GL_CURRENT_RASTER_INDEX
:
2691 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2693 case GL_CURRENT_RASTER_POSITION
:
2694 params
[0] = ctx
->Current
.RasterPos
[0];
2695 params
[1] = ctx
->Current
.RasterPos
[1];
2696 params
[2] = ctx
->Current
.RasterPos
[2];
2697 params
[3] = ctx
->Current
.RasterPos
[3];
2699 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2700 params
[0] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
2701 params
[1] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
2702 params
[2] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
2703 params
[3] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
2705 case GL_CURRENT_RASTER_POSITION_VALID
:
2706 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2708 case GL_CURRENT_TEXTURE_COORDS
:
2709 FLUSH_CURRENT(ctx
, 0);
2710 params
[0] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
2711 params
[1] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
2712 params
[2] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
2713 params
[3] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
2716 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2719 *params
= (GLfloat
) ctx
->Visual
.depthBits
;
2721 case GL_DEPTH_CLEAR_VALUE
:
2722 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2725 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2727 case GL_DEPTH_RANGE
:
2728 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2729 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2731 case GL_DEPTH_SCALE
:
2732 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2735 *params
= (GLfloat
) ctx
->Depth
.Test
;
2737 case GL_DEPTH_WRITEMASK
:
2738 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2741 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2743 case GL_DOUBLEBUFFER
:
2744 *params
= (GLfloat
) ctx
->Visual
.doubleBufferMode
;
2746 case GL_DRAW_BUFFER
:
2747 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2750 FLUSH_CURRENT(ctx
, 0);
2751 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2753 case GL_FEEDBACK_BUFFER_SIZE
:
2754 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2756 case GL_FEEDBACK_BUFFER_TYPE
:
2757 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2760 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2763 params
[0] = ctx
->Fog
.Color
[0];
2764 params
[1] = ctx
->Fog
.Color
[1];
2765 params
[2] = ctx
->Fog
.Color
[2];
2766 params
[3] = ctx
->Fog
.Color
[3];
2768 case GL_FOG_DENSITY
:
2769 *params
= ctx
->Fog
.Density
;
2772 *params
= ctx
->Fog
.End
;
2775 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2778 *params
= ctx
->Fog
.Index
;
2781 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2784 *params
= ctx
->Fog
.Start
;
2787 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2790 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2793 *params
= (GLfloat
) ctx
->Visual
.greenBits
;
2795 case GL_GREEN_SCALE
:
2796 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
2799 if (ctx
->Extensions
.EXT_histogram
|| ctx
->Extensions
.ARB_imaging
) {
2800 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
2803 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
2808 *params
= (GLfloat
) ctx
->Visual
.indexBits
;
2810 case GL_INDEX_CLEAR_VALUE
:
2811 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
2814 *params
= ctx
->Visual
.rgbMode
? 0.0F
: 1.0F
;
2816 case GL_INDEX_OFFSET
:
2817 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
2819 case GL_INDEX_SHIFT
:
2820 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
2822 case GL_INDEX_WRITEMASK
:
2823 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
2833 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
2836 *params
= (GLfloat
) ctx
->Light
.Enabled
;
2838 case GL_LIGHT_MODEL_AMBIENT
:
2839 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2840 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2841 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2842 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2844 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2845 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2847 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2848 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
2850 case GL_LIGHT_MODEL_TWO_SIDE
:
2851 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
2853 case GL_LINE_SMOOTH
:
2854 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
2856 case GL_LINE_SMOOTH_HINT
:
2857 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2859 case GL_LINE_STIPPLE
:
2860 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
2862 case GL_LINE_STIPPLE_PATTERN
:
2863 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
2865 case GL_LINE_STIPPLE_REPEAT
:
2866 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
2869 *params
= (GLfloat
) ctx
->Line
.Width
;
2871 case GL_LINE_WIDTH_GRANULARITY
:
2872 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
2874 case GL_LINE_WIDTH_RANGE
:
2875 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
2876 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
2878 case GL_ALIASED_LINE_WIDTH_RANGE
:
2879 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
2880 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
2883 *params
= (GLfloat
) ctx
->List
.ListBase
;
2886 *params
= (GLfloat
) ctx
->CurrentListNum
;
2889 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
2890 : ENUM_TO_FLOAT(GL_COMPILE
);
2892 case GL_INDEX_LOGIC_OP
:
2893 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
2895 case GL_COLOR_LOGIC_OP
:
2896 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
2898 case GL_LOGIC_OP_MODE
:
2899 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2901 case GL_MAP1_COLOR_4
:
2902 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
2904 case GL_MAP1_GRID_DOMAIN
:
2905 params
[0] = ctx
->Eval
.MapGrid1u1
;
2906 params
[1] = ctx
->Eval
.MapGrid1u2
;
2908 case GL_MAP1_GRID_SEGMENTS
:
2909 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
2912 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
2914 case GL_MAP1_NORMAL
:
2915 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
2917 case GL_MAP1_TEXTURE_COORD_1
:
2918 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
2920 case GL_MAP1_TEXTURE_COORD_2
:
2921 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
2923 case GL_MAP1_TEXTURE_COORD_3
:
2924 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
2926 case GL_MAP1_TEXTURE_COORD_4
:
2927 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
2929 case GL_MAP1_VERTEX_3
:
2930 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
2932 case GL_MAP1_VERTEX_4
:
2933 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
2935 case GL_MAP2_COLOR_4
:
2936 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
2938 case GL_MAP2_GRID_DOMAIN
:
2939 params
[0] = ctx
->Eval
.MapGrid2u1
;
2940 params
[1] = ctx
->Eval
.MapGrid2u2
;
2941 params
[2] = ctx
->Eval
.MapGrid2v1
;
2942 params
[3] = ctx
->Eval
.MapGrid2v2
;
2944 case GL_MAP2_GRID_SEGMENTS
:
2945 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
2946 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
2949 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
2951 case GL_MAP2_NORMAL
:
2952 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
2954 case GL_MAP2_TEXTURE_COORD_1
:
2955 *params
= ctx
->Eval
.Map2TextureCoord1
;
2957 case GL_MAP2_TEXTURE_COORD_2
:
2958 *params
= ctx
->Eval
.Map2TextureCoord2
;
2960 case GL_MAP2_TEXTURE_COORD_3
:
2961 *params
= ctx
->Eval
.Map2TextureCoord3
;
2963 case GL_MAP2_TEXTURE_COORD_4
:
2964 *params
= ctx
->Eval
.Map2TextureCoord4
;
2966 case GL_MAP2_VERTEX_3
:
2967 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
2969 case GL_MAP2_VERTEX_4
:
2970 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
2973 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
2975 case GL_MAP_STENCIL
:
2976 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
2978 case GL_MATRIX_MODE
:
2979 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2981 case GL_MAX_ATTRIB_STACK_DEPTH
:
2982 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
2984 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2985 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
2987 case GL_MAX_CLIP_PLANES
:
2988 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
2990 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
2991 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
2993 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
2994 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
2996 case GL_MAX_EVAL_ORDER
:
2997 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3000 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3002 case GL_MAX_LIST_NESTING
:
3003 *params
= (GLfloat
) MAX_LIST_NESTING
;
3005 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3006 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3008 case GL_MAX_NAME_STACK_DEPTH
:
3009 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3011 case GL_MAX_PIXEL_MAP_TABLE
:
3012 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3014 case GL_MAX_PROJECTION_STACK_DEPTH
:
3015 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3017 case GL_MAX_TEXTURE_SIZE
:
3018 case GL_MAX_3D_TEXTURE_SIZE
:
3019 *params
= (GLfloat
) ctx
->Const
.MaxTextureSize
;
3021 case GL_MAX_TEXTURE_STACK_DEPTH
:
3022 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3024 case GL_MAX_VIEWPORT_DIMS
:
3025 params
[0] = (GLfloat
) MAX_WIDTH
;
3026 params
[1] = (GLfloat
) MAX_HEIGHT
;
3029 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
3031 case GL_MODELVIEW_MATRIX
:
3032 for (i
=0;i
<16;i
++) {
3033 params
[i
] = ctx
->ModelView
.m
[i
];
3036 case GL_MODELVIEW_STACK_DEPTH
:
3037 *params
= (GLfloat
) (ctx
->ModelViewStackDepth
+ 1);
3039 case GL_NAME_STACK_DEPTH
:
3040 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3043 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3045 case GL_PACK_ALIGNMENT
:
3046 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3048 case GL_PACK_LSB_FIRST
:
3049 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3051 case GL_PACK_ROW_LENGTH
:
3052 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3054 case GL_PACK_SKIP_PIXELS
:
3055 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3057 case GL_PACK_SKIP_ROWS
:
3058 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3060 case GL_PACK_SWAP_BYTES
:
3061 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3063 case GL_PACK_SKIP_IMAGES_EXT
:
3064 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3066 case GL_PACK_IMAGE_HEIGHT_EXT
:
3067 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3069 case GL_PERSPECTIVE_CORRECTION_HINT
:
3070 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3072 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3073 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3075 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3076 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3078 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3079 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3081 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3082 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3084 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3085 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3087 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3088 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3090 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3091 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3093 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3094 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3096 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3097 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3099 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3100 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3103 *params
= (GLfloat
) ctx
->Point
.Size
;
3105 case GL_POINT_SIZE_GRANULARITY
:
3106 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3108 case GL_POINT_SIZE_RANGE
:
3109 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3110 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3112 case GL_ALIASED_POINT_SIZE_RANGE
:
3113 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3114 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3116 case GL_POINT_SMOOTH
:
3117 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3119 case GL_POINT_SMOOTH_HINT
:
3120 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3122 case GL_POINT_SIZE_MIN_EXT
:
3123 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3125 case GL_POINT_SIZE_MAX_EXT
:
3126 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3128 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3129 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3131 case GL_DISTANCE_ATTENUATION_EXT
:
3132 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3133 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3134 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3136 case GL_POLYGON_MODE
:
3137 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3138 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3140 #ifdef GL_EXT_polygon_offset
3141 case GL_POLYGON_OFFSET_BIAS_EXT
:
3142 *params
= ctx
->Polygon
.OffsetUnits
;
3145 case GL_POLYGON_OFFSET_FACTOR
:
3146 *params
= ctx
->Polygon
.OffsetFactor
;
3148 case GL_POLYGON_OFFSET_UNITS
:
3149 *params
= ctx
->Polygon
.OffsetUnits
;
3151 case GL_POLYGON_SMOOTH
:
3152 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3154 case GL_POLYGON_SMOOTH_HINT
:
3155 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3157 case GL_POLYGON_STIPPLE
:
3158 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3160 case GL_PROJECTION_MATRIX
:
3161 for (i
=0;i
<16;i
++) {
3162 params
[i
] = ctx
->ProjectionMatrix
.m
[i
];
3165 case GL_PROJECTION_STACK_DEPTH
:
3166 *params
= (GLfloat
) (ctx
->ProjectionStackDepth
+ 1);
3168 case GL_READ_BUFFER
:
3169 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3172 *params
= ctx
->Pixel
.RedBias
;
3175 *params
= (GLfloat
) ctx
->Visual
.redBits
;
3178 *params
= ctx
->Pixel
.RedScale
;
3180 case GL_RENDER_MODE
:
3181 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3183 case GL_RESCALE_NORMAL
:
3184 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3187 *params
= (GLfloat
) ctx
->Visual
.rgbMode
;
3189 case GL_SCISSOR_BOX
:
3190 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3191 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3192 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3193 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3195 case GL_SCISSOR_TEST
:
3196 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3198 case GL_SELECTION_BUFFER_SIZE
:
3199 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3201 case GL_SHADE_MODEL
:
3202 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3204 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3205 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3207 case GL_STENCIL_BITS
:
3208 *params
= (GLfloat
) ctx
->Visual
.stencilBits
;
3210 case GL_STENCIL_CLEAR_VALUE
:
3211 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3213 case GL_STENCIL_FAIL
:
3214 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
3216 case GL_STENCIL_FUNC
:
3217 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
3219 case GL_STENCIL_PASS_DEPTH_FAIL
:
3220 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
3222 case GL_STENCIL_PASS_DEPTH_PASS
:
3223 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
3225 case GL_STENCIL_REF
:
3226 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
3228 case GL_STENCIL_TEST
:
3229 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3231 case GL_STENCIL_VALUE_MASK
:
3232 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
3234 case GL_STENCIL_WRITEMASK
:
3235 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
3238 *params
= (GLfloat
) ctx
->Visual
.stereoMode
;
3240 case GL_SUBPIXEL_BITS
:
3241 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3244 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
3247 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
3250 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
3252 case GL_TEXTURE_BINDING_1D
:
3253 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3255 case GL_TEXTURE_BINDING_2D
:
3256 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3258 case GL_TEXTURE_BINDING_3D
:
3259 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3261 case GL_TEXTURE_ENV_COLOR
:
3262 params
[0] = textureUnit
->EnvColor
[0];
3263 params
[1] = textureUnit
->EnvColor
[1];
3264 params
[2] = textureUnit
->EnvColor
[2];
3265 params
[3] = textureUnit
->EnvColor
[3];
3267 case GL_TEXTURE_ENV_MODE
:
3268 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3270 case GL_TEXTURE_GEN_S
:
3271 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
3273 case GL_TEXTURE_GEN_T
:
3274 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
3276 case GL_TEXTURE_GEN_R
:
3277 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
3279 case GL_TEXTURE_GEN_Q
:
3280 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
3282 case GL_TEXTURE_MATRIX
:
3283 for (i
=0;i
<16;i
++) {
3284 params
[i
] = ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
3287 case GL_TEXTURE_STACK_DEPTH
:
3288 *params
= (GLfloat
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
3290 case GL_UNPACK_ALIGNMENT
:
3291 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3293 case GL_UNPACK_LSB_FIRST
:
3294 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3296 case GL_UNPACK_ROW_LENGTH
:
3297 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3299 case GL_UNPACK_SKIP_PIXELS
:
3300 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3302 case GL_UNPACK_SKIP_ROWS
:
3303 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3305 case GL_UNPACK_SWAP_BYTES
:
3306 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3308 case GL_UNPACK_SKIP_IMAGES_EXT
:
3309 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3311 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3312 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3315 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3316 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3317 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3318 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3321 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3324 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3326 case GL_VERTEX_ARRAY
:
3327 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3329 case GL_VERTEX_ARRAY_SIZE
:
3330 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3332 case GL_VERTEX_ARRAY_TYPE
:
3333 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3335 case GL_VERTEX_ARRAY_STRIDE
:
3336 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3338 case GL_VERTEX_ARRAY_COUNT_EXT
:
3341 case GL_NORMAL_ARRAY
:
3342 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3344 case GL_NORMAL_ARRAY_TYPE
:
3345 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3347 case GL_NORMAL_ARRAY_STRIDE
:
3348 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3350 case GL_NORMAL_ARRAY_COUNT_EXT
:
3353 case GL_COLOR_ARRAY
:
3354 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3356 case GL_COLOR_ARRAY_SIZE
:
3357 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3359 case GL_COLOR_ARRAY_TYPE
:
3360 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3362 case GL_COLOR_ARRAY_STRIDE
:
3363 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3365 case GL_COLOR_ARRAY_COUNT_EXT
:
3368 case GL_INDEX_ARRAY
:
3369 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3371 case GL_INDEX_ARRAY_TYPE
:
3372 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3374 case GL_INDEX_ARRAY_STRIDE
:
3375 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3377 case GL_INDEX_ARRAY_COUNT_EXT
:
3380 case GL_TEXTURE_COORD_ARRAY
:
3381 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3383 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3384 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3386 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3387 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3389 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3390 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3392 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3395 case GL_EDGE_FLAG_ARRAY
:
3396 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3398 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3399 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3401 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3405 /* GL_ARB_multitexture */
3406 case GL_MAX_TEXTURE_UNITS_ARB
:
3407 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3409 case GL_ACTIVE_TEXTURE_ARB
:
3410 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3412 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3413 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3416 /* GL_ARB_texture_cube_map */
3417 case GL_TEXTURE_CUBE_MAP_ARB
:
3418 if (ctx
->Extensions
.ARB_texture_cube_map
)
3419 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3421 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3423 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3424 if (ctx
->Extensions
.ARB_texture_cube_map
)
3425 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3427 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3429 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3430 if (ctx
->Extensions
.ARB_texture_cube_map
)
3431 *params
= (GLfloat
) ctx
->Const
.MaxCubeTextureSize
;
3433 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3436 /* GL_ARB_texture_compression */
3437 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3438 if (ctx
->Extensions
.ARB_texture_compression
) {
3439 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3442 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3444 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3445 if (ctx
->Extensions
.ARB_texture_compression
) {
3446 *params
= (GLfloat
) ctx
->Const
.NumCompressedTextureFormats
;
3449 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3451 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3452 if (ctx
->Extensions
.ARB_texture_compression
) {
3454 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
3455 params
[i
] = (GLfloat
) ctx
->Const
.CompressedTextureFormats
[i
];
3458 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3461 /* GL_EXT_compiled_vertex_array */
3462 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3463 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3465 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3466 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3469 /* GL_ARB_transpose_matrix */
3470 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3471 _math_transposef(params
, ctx
->ColorMatrix
.m
);
3473 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3474 _math_transposef(params
, ctx
->ModelView
.m
);
3476 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3477 _math_transposef(params
, ctx
->ProjectionMatrix
.m
);
3479 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3480 _math_transposef(params
, ctx
->TextureMatrix
[texTransformUnit
].m
);
3483 /* GL_HP_occlusion_test */
3484 case GL_OCCLUSION_TEST_HP
:
3485 if (ctx
->Extensions
.HP_occlusion_test
) {
3486 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3489 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3492 case GL_OCCLUSION_TEST_RESULT_HP
:
3493 if (ctx
->Extensions
.HP_occlusion_test
) {
3494 if (ctx
->Depth
.OcclusionTest
)
3495 *params
= (GLfloat
) ctx
->OcclusionResult
;
3497 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3498 /* reset flag now */
3499 ctx
->OcclusionResult
= GL_FALSE
;
3500 ctx
->OcclusionResultSaved
= GL_FALSE
;
3503 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3507 /* GL_SGIS_pixel_texture */
3508 case GL_PIXEL_TEXTURE_SGIS
:
3509 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3512 /* GL_SGIX_pixel_texture */
3513 case GL_PIXEL_TEX_GEN_SGIX
:
3514 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3516 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3517 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3520 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3521 case GL_COLOR_MATRIX_SGI
:
3522 for (i
=0;i
<16;i
++) {
3523 params
[i
] = ctx
->ColorMatrix
.m
[i
];
3526 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3527 *params
= (GLfloat
) (ctx
->ColorStackDepth
+ 1);
3529 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3530 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3532 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3533 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3535 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3536 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3538 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3539 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3541 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3542 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3544 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3545 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3547 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3548 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3550 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3551 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3553 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3554 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3557 /* GL_EXT_convolution (also in 1.2 imaging) */
3558 case GL_CONVOLUTION_1D_EXT
:
3559 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
3560 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
3563 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3567 case GL_CONVOLUTION_2D
:
3568 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
3569 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
3572 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3576 case GL_SEPARABLE_2D
:
3577 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
3578 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
3581 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3585 case GL_MAX_CONVOLUTION_WIDTH
:
3586 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionWidth
;
3588 case GL_MAX_CONVOLUTION_HEIGHT
:
3589 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionHeight
;
3591 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3592 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3594 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3595 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3597 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3598 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3600 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3601 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3603 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3604 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3606 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3607 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3609 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3610 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3612 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3613 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3616 /* GL_SGI_color_table (also in 1.2 imaging */
3617 case GL_COLOR_TABLE_SGI
:
3618 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3620 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3621 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3623 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3624 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3627 /* GL_EXT_secondary_color */
3628 case GL_COLOR_SUM_EXT
:
3629 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3631 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3632 FLUSH_CURRENT(ctx
, 0);
3633 params
[0] = (ctx
->Current
.SecondaryColor
[0]);
3634 params
[1] = (ctx
->Current
.SecondaryColor
[1]);
3635 params
[2] = (ctx
->Current
.SecondaryColor
[2]);
3637 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3638 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3640 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3641 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3643 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3644 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3646 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3647 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3650 /* GL_EXT_fog_coord */
3651 case GL_CURRENT_FOG_COORDINATE_EXT
:
3652 FLUSH_CURRENT(ctx
, 0);
3653 *params
= (GLfloat
) ctx
->Current
.FogCoord
;
3655 case GL_FOG_COORDINATE_ARRAY_EXT
:
3656 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3658 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3659 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3661 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3662 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3665 /* GL_EXT_texture_filter_anisotropic */
3666 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3667 if (ctx
->Extensions
.EXT_texture_filter_anisotropic
) {
3668 *params
= ctx
->Const
.MaxTextureMaxAnisotropy
;
3671 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3676 /* GL_MESA_sprite_point */
3677 case GL_SPRITE_POINT_MESA
:
3678 if (ctx
->Extensions
.MESA_sprite_point
) {
3679 *params
= (GLfloat
) ctx
->Point
.SpriteMode
;
3682 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3687 /* GL_SGIS_generate_mipmap */
3688 case GL_GENERATE_MIPMAP_HINT_SGIS
:
3689 if (ctx
->Extensions
.SGIS_generate_mipmap
) {
3690 *params
= (GLfloat
) ctx
->Hint
.GenerateMipmap
;
3693 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3699 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3707 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3709 GET_CURRENT_CONTEXT(ctx
);
3711 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3712 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
3713 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3714 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3719 /* We need this in order to get correct results for
3720 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
3722 FLUSH_VERTICES(ctx
, 0);
3724 if (MESA_VERBOSE
& VERBOSE_API
)
3725 fprintf(stderr
, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname
));
3727 if (ctx
->Driver
.GetIntegerv
3728 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
3732 case GL_ACCUM_RED_BITS
:
3733 *params
= (GLint
) ctx
->Visual
.accumRedBits
;
3735 case GL_ACCUM_GREEN_BITS
:
3736 *params
= (GLint
) ctx
->Visual
.accumGreenBits
;
3738 case GL_ACCUM_BLUE_BITS
:
3739 *params
= (GLint
) ctx
->Visual
.accumBlueBits
;
3741 case GL_ACCUM_ALPHA_BITS
:
3742 *params
= (GLint
) ctx
->Visual
.accumAlphaBits
;
3744 case GL_ACCUM_CLEAR_VALUE
:
3745 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
3746 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
3747 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
3748 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
3751 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
3754 *params
= ctx
->Visual
.alphaBits
;
3756 case GL_ALPHA_SCALE
:
3757 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
3760 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
3762 case GL_ALPHA_TEST_REF
:
3763 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
3765 case GL_ALPHA_TEST_FUNC
:
3766 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
3768 case GL_ATTRIB_STACK_DEPTH
:
3769 *params
= (GLint
) (ctx
->AttribStackDepth
);
3771 case GL_AUTO_NORMAL
:
3772 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
3774 case GL_AUX_BUFFERS
:
3775 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
3778 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
3781 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3784 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3786 case GL_BLEND_SRC_RGB_EXT
:
3787 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3789 case GL_BLEND_DST_RGB_EXT
:
3790 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3792 case GL_BLEND_SRC_ALPHA_EXT
:
3793 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
3795 case GL_BLEND_DST_ALPHA_EXT
:
3796 *params
= (GLint
) ctx
->Color
.BlendDstA
;
3798 case GL_BLEND_EQUATION_EXT
:
3799 *params
= (GLint
) ctx
->Color
.BlendEquation
;
3801 case GL_BLEND_COLOR_EXT
:
3802 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
3803 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
3804 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
3805 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
3808 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
3811 *params
= (GLint
) ctx
->Visual
.blueBits
;
3814 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
3816 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3817 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
3819 case GL_CLIP_PLANE0
:
3820 case GL_CLIP_PLANE1
:
3821 case GL_CLIP_PLANE2
:
3822 case GL_CLIP_PLANE3
:
3823 case GL_CLIP_PLANE4
:
3824 case GL_CLIP_PLANE5
:
3825 i
= (GLint
) (pname
- GL_CLIP_PLANE0
);
3826 *params
= (GLint
) ctx
->Transform
.ClipEnabled
[i
];
3828 case GL_COLOR_CLEAR_VALUE
:
3829 params
[0] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[0]) );
3830 params
[1] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[1]) );
3831 params
[2] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[2]) );
3832 params
[3] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[3]) );
3834 case GL_COLOR_MATERIAL
:
3835 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
3837 case GL_COLOR_MATERIAL_FACE
:
3838 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
3840 case GL_COLOR_MATERIAL_PARAMETER
:
3841 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
3843 case GL_COLOR_WRITEMASK
:
3844 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
3845 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
3846 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
3847 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
3850 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
3852 case GL_CULL_FACE_MODE
:
3853 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
3855 case GL_CURRENT_COLOR
:
3856 FLUSH_CURRENT(ctx
, 0);
3857 params
[0] = FLOAT_TO_INT( ( ctx
->Current
.Color
[0] ) );
3858 params
[1] = FLOAT_TO_INT( ( ctx
->Current
.Color
[1] ) );
3859 params
[2] = FLOAT_TO_INT( ( ctx
->Current
.Color
[2] ) );
3860 params
[3] = FLOAT_TO_INT( ( ctx
->Current
.Color
[3] ) );
3862 case GL_CURRENT_INDEX
:
3863 FLUSH_CURRENT(ctx
, 0);
3864 *params
= (GLint
) ctx
->Current
.Index
;
3866 case GL_CURRENT_NORMAL
:
3867 FLUSH_CURRENT(ctx
, 0);
3868 params
[0] = FLOAT_TO_INT( ctx
->Current
.Normal
[0] );
3869 params
[1] = FLOAT_TO_INT( ctx
->Current
.Normal
[1] );
3870 params
[2] = FLOAT_TO_INT( ctx
->Current
.Normal
[2] );
3872 case GL_CURRENT_RASTER_COLOR
:
3873 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
3874 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
3875 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
3876 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
3878 case GL_CURRENT_RASTER_DISTANCE
:
3879 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
3881 case GL_CURRENT_RASTER_INDEX
:
3882 *params
= (GLint
) ctx
->Current
.RasterIndex
;
3884 case GL_CURRENT_RASTER_POSITION
:
3885 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
3886 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
3887 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
3888 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
3890 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3891 params
[0] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
3892 params
[1] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
3893 params
[2] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
3894 params
[3] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
3896 case GL_CURRENT_RASTER_POSITION_VALID
:
3897 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
3899 case GL_CURRENT_TEXTURE_COORDS
:
3900 FLUSH_CURRENT(ctx
, 0);
3901 params
[0] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
3902 params
[1] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
3903 params
[2] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
3904 params
[3] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
3907 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
3910 *params
= ctx
->Visual
.depthBits
;
3912 case GL_DEPTH_CLEAR_VALUE
:
3913 *params
= (GLint
) ctx
->Depth
.Clear
;
3916 *params
= (GLint
) ctx
->Depth
.Func
;
3918 case GL_DEPTH_RANGE
:
3919 params
[0] = (GLint
) ctx
->Viewport
.Near
;
3920 params
[1] = (GLint
) ctx
->Viewport
.Far
;
3922 case GL_DEPTH_SCALE
:
3923 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
3926 *params
= (GLint
) ctx
->Depth
.Test
;
3928 case GL_DEPTH_WRITEMASK
:
3929 *params
= (GLint
) ctx
->Depth
.Mask
;
3932 *params
= (GLint
) ctx
->Color
.DitherFlag
;
3934 case GL_DOUBLEBUFFER
:
3935 *params
= (GLint
) ctx
->Visual
.doubleBufferMode
;
3937 case GL_DRAW_BUFFER
:
3938 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
3941 FLUSH_CURRENT(ctx
, 0);
3942 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
3944 case GL_FEEDBACK_BUFFER_SIZE
:
3945 *params
= ctx
->Feedback
.BufferSize
;
3947 case GL_FEEDBACK_BUFFER_TYPE
:
3948 *params
= ctx
->Feedback
.Type
;
3951 *params
= (GLint
) ctx
->Fog
.Enabled
;
3954 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
3955 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
3956 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
3957 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
3959 case GL_FOG_DENSITY
:
3960 *params
= (GLint
) ctx
->Fog
.Density
;
3963 *params
= (GLint
) ctx
->Fog
.End
;
3966 *params
= (GLint
) ctx
->Hint
.Fog
;
3969 *params
= (GLint
) ctx
->Fog
.Index
;
3972 *params
= (GLint
) ctx
->Fog
.Mode
;
3975 *params
= (GLint
) ctx
->Fog
.Start
;
3978 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
3981 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
3984 *params
= (GLint
) ctx
->Visual
.greenBits
;
3986 case GL_GREEN_SCALE
:
3987 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
3990 if (ctx
->Extensions
.EXT_histogram
|| ctx
->Extensions
.ARB_imaging
) {
3991 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
3994 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3999 *params
= (GLint
) ctx
->Visual
.indexBits
;
4001 case GL_INDEX_CLEAR_VALUE
:
4002 *params
= (GLint
) ctx
->Color
.ClearIndex
;
4005 *params
= ctx
->Visual
.rgbMode
? 0 : 1;
4007 case GL_INDEX_OFFSET
:
4008 *params
= ctx
->Pixel
.IndexOffset
;
4010 case GL_INDEX_SHIFT
:
4011 *params
= ctx
->Pixel
.IndexShift
;
4013 case GL_INDEX_WRITEMASK
:
4014 *params
= (GLint
) ctx
->Color
.IndexMask
;
4024 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
4027 *params
= (GLint
) ctx
->Light
.Enabled
;
4029 case GL_LIGHT_MODEL_AMBIENT
:
4030 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
4031 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
4032 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
4033 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
4035 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4036 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
4038 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4039 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
4041 case GL_LIGHT_MODEL_TWO_SIDE
:
4042 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
4044 case GL_LINE_SMOOTH
:
4045 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
4047 case GL_LINE_SMOOTH_HINT
:
4048 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
4050 case GL_LINE_STIPPLE
:
4051 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4053 case GL_LINE_STIPPLE_PATTERN
:
4054 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4056 case GL_LINE_STIPPLE_REPEAT
:
4057 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4060 *params
= (GLint
) ctx
->Line
.Width
;
4062 case GL_LINE_WIDTH_GRANULARITY
:
4063 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4065 case GL_LINE_WIDTH_RANGE
:
4066 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4067 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4069 case GL_ALIASED_LINE_WIDTH_RANGE
:
4070 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4071 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4074 *params
= (GLint
) ctx
->List
.ListBase
;
4077 *params
= (GLint
) ctx
->CurrentListNum
;
4080 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4081 : (GLint
) GL_COMPILE
;
4083 case GL_INDEX_LOGIC_OP
:
4084 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4086 case GL_COLOR_LOGIC_OP
:
4087 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4089 case GL_LOGIC_OP_MODE
:
4090 *params
= (GLint
) ctx
->Color
.LogicOp
;
4092 case GL_MAP1_COLOR_4
:
4093 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4095 case GL_MAP1_GRID_DOMAIN
:
4096 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4097 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4099 case GL_MAP1_GRID_SEGMENTS
:
4100 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4103 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4105 case GL_MAP1_NORMAL
:
4106 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4108 case GL_MAP1_TEXTURE_COORD_1
:
4109 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4111 case GL_MAP1_TEXTURE_COORD_2
:
4112 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4114 case GL_MAP1_TEXTURE_COORD_3
:
4115 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4117 case GL_MAP1_TEXTURE_COORD_4
:
4118 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4120 case GL_MAP1_VERTEX_3
:
4121 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4123 case GL_MAP1_VERTEX_4
:
4124 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4126 case GL_MAP2_COLOR_4
:
4127 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4129 case GL_MAP2_GRID_DOMAIN
:
4130 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4131 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4132 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4133 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4135 case GL_MAP2_GRID_SEGMENTS
:
4136 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4137 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4140 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4142 case GL_MAP2_NORMAL
:
4143 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4145 case GL_MAP2_TEXTURE_COORD_1
:
4146 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4148 case GL_MAP2_TEXTURE_COORD_2
:
4149 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4151 case GL_MAP2_TEXTURE_COORD_3
:
4152 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4154 case GL_MAP2_TEXTURE_COORD_4
:
4155 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4157 case GL_MAP2_VERTEX_3
:
4158 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4160 case GL_MAP2_VERTEX_4
:
4161 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4164 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4166 case GL_MAP_STENCIL
:
4167 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4169 case GL_MATRIX_MODE
:
4170 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4172 case GL_MAX_ATTRIB_STACK_DEPTH
:
4173 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4175 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4176 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4178 case GL_MAX_CLIP_PLANES
:
4179 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
4181 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4182 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4184 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4185 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4187 case GL_MAX_EVAL_ORDER
:
4188 *params
= (GLint
) MAX_EVAL_ORDER
;
4191 *params
= (GLint
) ctx
->Const
.MaxLights
;
4193 case GL_MAX_LIST_NESTING
:
4194 *params
= (GLint
) MAX_LIST_NESTING
;
4196 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4197 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4199 case GL_MAX_NAME_STACK_DEPTH
:
4200 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4202 case GL_MAX_PIXEL_MAP_TABLE
:
4203 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4205 case GL_MAX_PROJECTION_STACK_DEPTH
:
4206 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4208 case GL_MAX_TEXTURE_SIZE
:
4209 case GL_MAX_3D_TEXTURE_SIZE
:
4210 *params
= ctx
->Const
.MaxTextureSize
;
4212 case GL_MAX_TEXTURE_STACK_DEPTH
:
4213 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4215 case GL_MAX_VIEWPORT_DIMS
:
4216 params
[0] = (GLint
) MAX_WIDTH
;
4217 params
[1] = (GLint
) MAX_HEIGHT
;
4220 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
4222 case GL_MODELVIEW_MATRIX
:
4223 for (i
=0;i
<16;i
++) {
4224 params
[i
] = (GLint
) ctx
->ModelView
.m
[i
];
4227 case GL_MODELVIEW_STACK_DEPTH
:
4228 *params
= (GLint
) (ctx
->ModelViewStackDepth
+ 1);
4230 case GL_NAME_STACK_DEPTH
:
4231 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4234 *params
= (GLint
) ctx
->Transform
.Normalize
;
4236 case GL_PACK_ALIGNMENT
:
4237 *params
= ctx
->Pack
.Alignment
;
4239 case GL_PACK_LSB_FIRST
:
4240 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4242 case GL_PACK_ROW_LENGTH
:
4243 *params
= ctx
->Pack
.RowLength
;
4245 case GL_PACK_SKIP_PIXELS
:
4246 *params
= ctx
->Pack
.SkipPixels
;
4248 case GL_PACK_SKIP_ROWS
:
4249 *params
= ctx
->Pack
.SkipRows
;
4251 case GL_PACK_SWAP_BYTES
:
4252 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4254 case GL_PACK_SKIP_IMAGES_EXT
:
4255 *params
= ctx
->Pack
.SkipImages
;
4257 case GL_PACK_IMAGE_HEIGHT_EXT
:
4258 *params
= ctx
->Pack
.ImageHeight
;
4260 case GL_PERSPECTIVE_CORRECTION_HINT
:
4261 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4263 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4264 *params
= ctx
->Pixel
.MapAtoAsize
;
4266 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4267 *params
= ctx
->Pixel
.MapBtoBsize
;
4269 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4270 *params
= ctx
->Pixel
.MapGtoGsize
;
4272 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4273 *params
= ctx
->Pixel
.MapItoAsize
;
4275 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4276 *params
= ctx
->Pixel
.MapItoBsize
;
4278 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4279 *params
= ctx
->Pixel
.MapItoGsize
;
4281 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4282 *params
= ctx
->Pixel
.MapItoIsize
;
4284 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4285 *params
= ctx
->Pixel
.MapItoRsize
;
4287 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4288 *params
= ctx
->Pixel
.MapRtoRsize
;
4290 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4291 *params
= ctx
->Pixel
.MapStoSsize
;
4294 *params
= (GLint
) ctx
->Point
.Size
;
4296 case GL_POINT_SIZE_GRANULARITY
:
4297 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4299 case GL_POINT_SIZE_RANGE
:
4300 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4301 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4303 case GL_ALIASED_POINT_SIZE_RANGE
:
4304 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4305 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4307 case GL_POINT_SMOOTH
:
4308 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4310 case GL_POINT_SMOOTH_HINT
:
4311 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4313 case GL_POINT_SIZE_MIN_EXT
:
4314 *params
= (GLint
) (ctx
->Point
.MinSize
);
4316 case GL_POINT_SIZE_MAX_EXT
:
4317 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4319 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4320 *params
= (GLint
) (ctx
->Point
.Threshold
);
4322 case GL_DISTANCE_ATTENUATION_EXT
:
4323 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4324 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4325 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4327 case GL_POLYGON_MODE
:
4328 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4329 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4331 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4332 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4334 case GL_POLYGON_OFFSET_FACTOR
:
4335 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4337 case GL_POLYGON_OFFSET_UNITS
:
4338 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4340 case GL_POLYGON_SMOOTH
:
4341 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4343 case GL_POLYGON_SMOOTH_HINT
:
4344 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4346 case GL_POLYGON_STIPPLE
:
4347 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4349 case GL_PROJECTION_MATRIX
:
4350 for (i
=0;i
<16;i
++) {
4351 params
[i
] = (GLint
) ctx
->ProjectionMatrix
.m
[i
];
4354 case GL_PROJECTION_STACK_DEPTH
:
4355 *params
= (GLint
) (ctx
->ProjectionStackDepth
+ 1);
4357 case GL_READ_BUFFER
:
4358 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4361 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4364 *params
= (GLint
) ctx
->Visual
.redBits
;
4367 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4369 case GL_RENDER_MODE
:
4370 *params
= (GLint
) ctx
->RenderMode
;
4372 case GL_RESCALE_NORMAL
:
4373 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
4376 *params
= (GLint
) ctx
->Visual
.rgbMode
;
4378 case GL_SCISSOR_BOX
:
4379 params
[0] = (GLint
) ctx
->Scissor
.X
;
4380 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4381 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4382 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4384 case GL_SCISSOR_TEST
:
4385 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4387 case GL_SELECTION_BUFFER_SIZE
:
4388 *params
= (GLint
) ctx
->Select
.BufferSize
;
4390 case GL_SHADE_MODEL
:
4391 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4393 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4394 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4396 case GL_STENCIL_BITS
:
4397 *params
= ctx
->Visual
.stencilBits
;
4399 case GL_STENCIL_CLEAR_VALUE
:
4400 *params
= (GLint
) ctx
->Stencil
.Clear
;
4402 case GL_STENCIL_FAIL
:
4403 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
4405 case GL_STENCIL_FUNC
:
4406 *params
= (GLint
) ctx
->Stencil
.Function
;
4408 case GL_STENCIL_PASS_DEPTH_FAIL
:
4409 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
4411 case GL_STENCIL_PASS_DEPTH_PASS
:
4412 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
4414 case GL_STENCIL_REF
:
4415 *params
= (GLint
) ctx
->Stencil
.Ref
;
4417 case GL_STENCIL_TEST
:
4418 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4420 case GL_STENCIL_VALUE_MASK
:
4421 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
4423 case GL_STENCIL_WRITEMASK
:
4424 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
4427 *params
= (GLint
) ctx
->Visual
.stereoMode
;
4429 case GL_SUBPIXEL_BITS
:
4430 *params
= ctx
->Const
.SubPixelBits
;
4433 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4436 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4439 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4441 case GL_TEXTURE_BINDING_1D
:
4442 *params
= textureUnit
->Current1D
->Name
;
4444 case GL_TEXTURE_BINDING_2D
:
4445 *params
= textureUnit
->Current2D
->Name
;
4447 case GL_TEXTURE_BINDING_3D
:
4448 *params
= textureUnit
->Current3D
->Name
;
4450 case GL_TEXTURE_ENV_COLOR
:
4451 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4452 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4453 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4454 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4456 case GL_TEXTURE_ENV_MODE
:
4457 *params
= (GLint
) textureUnit
->EnvMode
;
4459 case GL_TEXTURE_GEN_S
:
4460 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4462 case GL_TEXTURE_GEN_T
:
4463 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4465 case GL_TEXTURE_GEN_R
:
4466 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4468 case GL_TEXTURE_GEN_Q
:
4469 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4471 case GL_TEXTURE_MATRIX
:
4472 for (i
=0;i
<16;i
++) {
4473 params
[i
] = (GLint
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
4476 case GL_TEXTURE_STACK_DEPTH
:
4477 *params
= (GLint
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
4479 case GL_UNPACK_ALIGNMENT
:
4480 *params
= ctx
->Unpack
.Alignment
;
4482 case GL_UNPACK_LSB_FIRST
:
4483 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4485 case GL_UNPACK_ROW_LENGTH
:
4486 *params
= ctx
->Unpack
.RowLength
;
4488 case GL_UNPACK_SKIP_PIXELS
:
4489 *params
= ctx
->Unpack
.SkipPixels
;
4491 case GL_UNPACK_SKIP_ROWS
:
4492 *params
= ctx
->Unpack
.SkipRows
;
4494 case GL_UNPACK_SWAP_BYTES
:
4495 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4497 case GL_UNPACK_SKIP_IMAGES_EXT
:
4498 *params
= ctx
->Unpack
.SkipImages
;
4500 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4501 *params
= ctx
->Unpack
.ImageHeight
;
4504 params
[0] = (GLint
) ctx
->Viewport
.X
;
4505 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4506 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4507 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4510 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4513 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4515 case GL_VERTEX_ARRAY
:
4516 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4518 case GL_VERTEX_ARRAY_SIZE
:
4519 *params
= ctx
->Array
.Vertex
.Size
;
4521 case GL_VERTEX_ARRAY_TYPE
:
4522 *params
= ctx
->Array
.Vertex
.Type
;
4524 case GL_VERTEX_ARRAY_STRIDE
:
4525 *params
= ctx
->Array
.Vertex
.Stride
;
4527 case GL_VERTEX_ARRAY_COUNT_EXT
:
4530 case GL_NORMAL_ARRAY
:
4531 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
4533 case GL_NORMAL_ARRAY_TYPE
:
4534 *params
= ctx
->Array
.Normal
.Type
;
4536 case GL_NORMAL_ARRAY_STRIDE
:
4537 *params
= ctx
->Array
.Normal
.Stride
;
4539 case GL_NORMAL_ARRAY_COUNT_EXT
:
4542 case GL_COLOR_ARRAY
:
4543 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
4545 case GL_COLOR_ARRAY_SIZE
:
4546 *params
= ctx
->Array
.Color
.Size
;
4548 case GL_COLOR_ARRAY_TYPE
:
4549 *params
= ctx
->Array
.Color
.Type
;
4551 case GL_COLOR_ARRAY_STRIDE
:
4552 *params
= ctx
->Array
.Color
.Stride
;
4554 case GL_COLOR_ARRAY_COUNT_EXT
:
4557 case GL_INDEX_ARRAY
:
4558 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
4560 case GL_INDEX_ARRAY_TYPE
:
4561 *params
= ctx
->Array
.Index
.Type
;
4563 case GL_INDEX_ARRAY_STRIDE
:
4564 *params
= ctx
->Array
.Index
.Stride
;
4566 case GL_INDEX_ARRAY_COUNT_EXT
:
4569 case GL_TEXTURE_COORD_ARRAY
:
4570 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
4572 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4573 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
4575 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4576 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
4578 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4579 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
4581 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4584 case GL_EDGE_FLAG_ARRAY
:
4585 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
4587 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4588 *params
= ctx
->Array
.EdgeFlag
.Stride
;
4590 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4594 /* GL_ARB_multitexture */
4595 case GL_MAX_TEXTURE_UNITS_ARB
:
4596 *params
= ctx
->Const
.MaxTextureUnits
;
4598 case GL_ACTIVE_TEXTURE_ARB
:
4599 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4601 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4602 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4605 /* GL_ARB_texture_cube_map */
4606 case GL_TEXTURE_CUBE_MAP_ARB
:
4607 if (ctx
->Extensions
.ARB_texture_cube_map
)
4608 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4610 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4612 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4613 if (ctx
->Extensions
.ARB_texture_cube_map
)
4614 *params
= textureUnit
->CurrentCubeMap
->Name
;
4616 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4618 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4619 if (ctx
->Extensions
.ARB_texture_cube_map
)
4620 *params
= ctx
->Const
.MaxCubeTextureSize
;
4622 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4625 /* GL_ARB_texture_compression */
4626 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4627 if (ctx
->Extensions
.ARB_texture_compression
) {
4628 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
4631 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4633 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4634 if (ctx
->Extensions
.ARB_texture_compression
) {
4635 *params
= (GLint
) ctx
->Const
.NumCompressedTextureFormats
;
4638 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4640 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4641 if (ctx
->Extensions
.ARB_texture_compression
) {
4643 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
4644 params
[i
] = (GLint
) ctx
->Const
.CompressedTextureFormats
[i
];
4647 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4650 /* GL_EXT_compiled_vertex_array */
4651 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4652 *params
= ctx
->Array
.LockFirst
;
4654 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4655 *params
= ctx
->Array
.LockCount
;
4658 /* GL_ARB_transpose_matrix */
4659 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4663 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
4664 for (i
=0;i
<16;i
++) {
4665 params
[i
] = (GLint
) tm
[i
];
4669 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4673 _math_transposef(tm
, ctx
->ModelView
.m
);
4674 for (i
=0;i
<16;i
++) {
4675 params
[i
] = (GLint
) tm
[i
];
4679 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4683 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
4684 for (i
=0;i
<16;i
++) {
4685 params
[i
] = (GLint
) tm
[i
];
4689 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4693 _math_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
4694 for (i
=0;i
<16;i
++) {
4695 params
[i
] = (GLint
) tm
[i
];
4700 /* GL_HP_occlusion_test */
4701 case GL_OCCLUSION_TEST_HP
:
4702 if (ctx
->Extensions
.HP_occlusion_test
) {
4703 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
4706 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4709 case GL_OCCLUSION_TEST_RESULT_HP
:
4710 if (ctx
->Extensions
.HP_occlusion_test
) {
4711 if (ctx
->Depth
.OcclusionTest
)
4712 *params
= (GLint
) ctx
->OcclusionResult
;
4714 *params
= (GLint
) ctx
->OcclusionResultSaved
;
4715 /* reset flag now */
4716 ctx
->OcclusionResult
= GL_FALSE
;
4717 ctx
->OcclusionResultSaved
= GL_FALSE
;
4720 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4724 /* GL_SGIS_pixel_texture */
4725 case GL_PIXEL_TEXTURE_SGIS
:
4726 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4729 /* GL_SGIX_pixel_texture */
4730 case GL_PIXEL_TEX_GEN_SGIX
:
4731 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4733 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4734 *params
= (GLint
) pixel_texgen_mode(ctx
);
4737 /* GL_SGI_color_matrix (also in 1.2 imaging) */
4738 case GL_COLOR_MATRIX_SGI
:
4739 for (i
=0;i
<16;i
++) {
4740 params
[i
] = (GLint
) ctx
->ColorMatrix
.m
[i
];
4743 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
4744 *params
= ctx
->ColorStackDepth
+ 1;
4746 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
4747 *params
= MAX_COLOR_STACK_DEPTH
;
4749 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
4750 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
4752 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
4753 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
4755 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
4756 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
4758 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
4759 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
4761 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
4762 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
4764 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
4765 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
4767 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
4768 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
4770 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
4771 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
4774 /* GL_EXT_convolution (also in 1.2 imaging) */
4775 case GL_CONVOLUTION_1D_EXT
:
4776 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
4777 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
4780 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4784 case GL_CONVOLUTION_2D
:
4785 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
4786 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
4789 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4793 case GL_SEPARABLE_2D
:
4794 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
4795 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
4798 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4802 case GL_MAX_CONVOLUTION_WIDTH
:
4803 *params
= ctx
->Const
.MaxConvolutionWidth
;
4805 case GL_MAX_CONVOLUTION_HEIGHT
:
4806 *params
= ctx
->Const
.MaxConvolutionHeight
;
4808 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
4809 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
4811 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
4812 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
4814 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
4815 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
4817 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
4818 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
4820 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
4821 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
4823 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
4824 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
4826 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
4827 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4829 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
4830 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4833 /* GL_SGI_color_table (also in 1.2 imaging */
4834 case GL_COLOR_TABLE_SGI
:
4835 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
4837 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
4838 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
4840 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
4841 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
4845 /* GL_EXT_secondary_color */
4846 case GL_COLOR_SUM_EXT
:
4847 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
4849 case GL_CURRENT_SECONDARY_COLOR_EXT
:
4850 FLUSH_CURRENT(ctx
, 0);
4851 params
[0] = FLOAT_TO_INT( (ctx
->Current
.SecondaryColor
[0]) );
4852 params
[1] = FLOAT_TO_INT( (ctx
->Current
.SecondaryColor
[1]) );
4853 params
[2] = FLOAT_TO_INT( (ctx
->Current
.SecondaryColor
[2]) );
4855 case GL_SECONDARY_COLOR_ARRAY_EXT
:
4856 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
4858 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
4859 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
4861 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
4862 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4864 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
4865 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4868 /* GL_EXT_fog_coord */
4869 case GL_CURRENT_FOG_COORDINATE_EXT
:
4870 if (ctx
->Extensions
.EXT_fog_coord
) {
4871 FLUSH_CURRENT(ctx
, 0);
4872 *params
= (GLint
) ctx
->Current
.FogCoord
;
4875 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4878 case GL_FOG_COORDINATE_ARRAY_EXT
:
4879 if (ctx
->Extensions
.EXT_fog_coord
) {
4880 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
4883 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4886 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
4887 if (ctx
->Extensions
.EXT_fog_coord
) {
4888 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
4891 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4894 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
4895 if (ctx
->Extensions
.EXT_fog_coord
) {
4896 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
4899 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4903 /* GL_EXT_texture_filter_anisotropic */
4904 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
4905 if (ctx
->Extensions
.EXT_texture_filter_anisotropic
) {
4906 *params
= (GLint
) ctx
->Const
.MaxTextureMaxAnisotropy
;
4909 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4914 /* GL_MESA_sprite_point */
4915 case GL_SPRITE_POINT_MESA
:
4916 if (ctx
->Extensions
.MESA_sprite_point
) {
4917 *params
= (GLint
) ctx
->Point
.SpriteMode
;
4920 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4925 /* GL_SGIS_generate_mipmap */
4926 case GL_GENERATE_MIPMAP_HINT_SGIS
:
4927 if (ctx
->Extensions
.SGIS_generate_mipmap
) {
4928 *params
= (GLint
) ctx
->Hint
.GenerateMipmap
;
4931 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4937 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4944 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
4946 GET_CURRENT_CONTEXT(ctx
);
4947 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4948 ASSERT_OUTSIDE_BEGIN_END(ctx
);
4953 if (MESA_VERBOSE
& VERBOSE_API
)
4954 fprintf(stderr
, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname
));
4956 if (ctx
->Driver
.GetPointerv
4957 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
4961 case GL_VERTEX_ARRAY_POINTER
:
4962 *params
= ctx
->Array
.Vertex
.Ptr
;
4964 case GL_NORMAL_ARRAY_POINTER
:
4965 *params
= ctx
->Array
.Normal
.Ptr
;
4967 case GL_COLOR_ARRAY_POINTER
:
4968 *params
= ctx
->Array
.Color
.Ptr
;
4970 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
4971 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
4973 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
4974 *params
= ctx
->Array
.FogCoord
.Ptr
;
4976 case GL_INDEX_ARRAY_POINTER
:
4977 *params
= ctx
->Array
.Index
.Ptr
;
4979 case GL_TEXTURE_COORD_ARRAY_POINTER
:
4980 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
4982 case GL_EDGE_FLAG_ARRAY_POINTER
:
4983 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
4985 case GL_FEEDBACK_BUFFER_POINTER
:
4986 *params
= ctx
->Feedback
.Buffer
;
4988 case GL_SELECTION_BUFFER_POINTER
:
4989 *params
= ctx
->Select
.Buffer
;
4992 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
5000 _mesa_GetString( GLenum name
)
5002 GET_CURRENT_CONTEXT(ctx
);
5003 static const char *vendor
= "Brian Paul";
5004 static const char *renderer
= "Mesa";
5005 static const char *version
= "1.2 Mesa 3.5 beta";
5006 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5008 /* this is a required driver function */
5009 assert(ctx
->Driver
.GetString
);
5011 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
5017 return (const GLubyte
*) vendor
;
5019 return (const GLubyte
*) renderer
;
5021 return (const GLubyte
*) version
;
5023 return (const GLubyte
*) _mesa_extensions_get_string(ctx
);
5025 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
5026 return (const GLubyte
*) 0;
5033 * Execute a glGetError command
5036 _mesa_GetError( void )
5038 GET_CURRENT_CONTEXT(ctx
);
5039 GLenum e
= ctx
->ErrorValue
;
5040 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5042 if (MESA_VERBOSE
& VERBOSE_API
)
5043 fprintf(stderr
, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e
));
5045 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;