1 /* $Id: get.c,v 1.72 2001/11/06 15:53:00 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
) {
86 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
88 GET_CURRENT_CONTEXT(ctx
);
90 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
91 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
92 ASSERT_OUTSIDE_BEGIN_END(ctx
);
97 /* We need this in order to get correct results for
98 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
100 FLUSH_VERTICES(ctx
, 0);
102 if (MESA_VERBOSE
& VERBOSE_API
)
103 fprintf(stderr
, "glGetBooleanv %s\n", _mesa_lookup_enum_by_nr(pname
));
105 if (ctx
->Driver
.GetBooleanv
106 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
110 case GL_ACCUM_RED_BITS
:
111 *params
= INT_TO_BOOL(ctx
->Visual
.accumRedBits
);
113 case GL_ACCUM_GREEN_BITS
:
114 *params
= INT_TO_BOOL(ctx
->Visual
.accumGreenBits
);
116 case GL_ACCUM_BLUE_BITS
:
117 *params
= INT_TO_BOOL(ctx
->Visual
.accumBlueBits
);
119 case GL_ACCUM_ALPHA_BITS
:
120 *params
= INT_TO_BOOL(ctx
->Visual
.accumAlphaBits
);
122 case GL_ACCUM_CLEAR_VALUE
:
123 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
124 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
125 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
126 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
129 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
132 *params
= INT_TO_BOOL(ctx
->Visual
.alphaBits
);
135 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
138 *params
= ctx
->Color
.AlphaEnabled
;
140 case GL_ALPHA_TEST_FUNC
:
141 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
143 case GL_ALPHA_TEST_REF
:
144 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
146 case GL_ATTRIB_STACK_DEPTH
:
147 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
150 *params
= ctx
->Eval
.AutoNormal
;
153 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
156 *params
= ctx
->Color
.BlendEnabled
;
159 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
162 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
164 case GL_BLEND_SRC_RGB_EXT
:
165 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
167 case GL_BLEND_DST_RGB_EXT
:
168 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
170 case GL_BLEND_SRC_ALPHA_EXT
:
171 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
173 case GL_BLEND_DST_ALPHA_EXT
:
174 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
176 case GL_BLEND_EQUATION_EXT
:
177 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
179 case GL_BLEND_COLOR_EXT
:
180 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
181 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
182 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
183 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
186 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
189 *params
= INT_TO_BOOL( ctx
->Visual
.blueBits
);
192 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
194 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
195 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
203 *params
= ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
205 case GL_COLOR_CLEAR_VALUE
:
206 params
[0] = ctx
->Color
.ClearColor
[0] ? GL_TRUE
: GL_FALSE
;
207 params
[1] = ctx
->Color
.ClearColor
[1] ? GL_TRUE
: GL_FALSE
;
208 params
[2] = ctx
->Color
.ClearColor
[2] ? GL_TRUE
: GL_FALSE
;
209 params
[3] = ctx
->Color
.ClearColor
[3] ? GL_TRUE
: GL_FALSE
;
211 case GL_COLOR_MATERIAL
:
212 *params
= ctx
->Light
.ColorMaterialEnabled
;
214 case GL_COLOR_MATERIAL_FACE
:
215 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
217 case GL_COLOR_MATERIAL_PARAMETER
:
218 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
220 case GL_COLOR_WRITEMASK
:
221 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
222 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
223 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
224 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
227 *params
= ctx
->Polygon
.CullFlag
;
229 case GL_CULL_FACE_MODE
:
230 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
232 case GL_CURRENT_COLOR
:
233 FLUSH_CURRENT(ctx
, 0);
234 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Color
[0]);
235 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Color
[1]);
236 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Color
[2]);
237 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Color
[3]);
239 case GL_CURRENT_INDEX
:
240 FLUSH_CURRENT(ctx
, 0);
241 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
243 case GL_CURRENT_NORMAL
:
244 FLUSH_CURRENT(ctx
, 0);
245 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[0]);
246 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[1]);
247 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[2]);
249 case GL_CURRENT_RASTER_COLOR
:
250 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
251 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
252 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
253 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
255 case GL_CURRENT_RASTER_DISTANCE
:
256 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
258 case GL_CURRENT_RASTER_INDEX
:
259 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
261 case GL_CURRENT_RASTER_POSITION
:
262 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
263 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
264 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
265 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
267 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
268 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texUnit
][0]);
269 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texUnit
][1]);
270 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texUnit
][2]);
271 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texUnit
][3]);
273 case GL_CURRENT_RASTER_POSITION_VALID
:
274 *params
= ctx
->Current
.RasterPosValid
;
276 case GL_CURRENT_TEXTURE_COORDS
:
277 FLUSH_CURRENT(ctx
, 0);
278 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texUnit
][0]);
279 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texUnit
][1]);
280 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texUnit
][2]);
281 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texUnit
][3]);
284 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
287 *params
= INT_TO_BOOL(ctx
->Visual
.depthBits
);
289 case GL_DEPTH_CLEAR_VALUE
:
290 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
293 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
296 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
297 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
300 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
303 *params
= ctx
->Depth
.Test
;
305 case GL_DEPTH_WRITEMASK
:
306 *params
= ctx
->Depth
.Mask
;
309 *params
= ctx
->Color
.DitherFlag
;
311 case GL_DOUBLEBUFFER
:
312 *params
= ctx
->Visual
.doubleBufferMode
;
315 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
318 FLUSH_CURRENT(ctx
, 0);
319 *params
= ctx
->Current
.EdgeFlag
;
321 case GL_FEEDBACK_BUFFER_SIZE
:
322 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
324 case GL_FEEDBACK_BUFFER_TYPE
:
325 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
328 *params
= ctx
->Fog
.Enabled
;
331 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
332 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
333 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
334 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
337 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
340 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
343 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
346 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
349 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
352 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
355 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
358 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
361 *params
= INT_TO_BOOL( ctx
->Visual
.greenBits
);
364 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
367 if (ctx
->Extensions
.EXT_histogram
) {
368 *params
= ctx
->Pixel
.HistogramEnabled
;
371 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
376 *params
= INT_TO_BOOL( ctx
->Visual
.indexBits
);
378 case GL_INDEX_CLEAR_VALUE
:
379 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
382 *params
= ctx
->Visual
.rgbMode
? GL_FALSE
: GL_TRUE
;
384 case GL_INDEX_OFFSET
:
385 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
388 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
390 case GL_INDEX_WRITEMASK
:
391 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
401 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
404 *params
= ctx
->Light
.Enabled
;
406 case GL_LIGHT_MODEL_AMBIENT
:
407 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
408 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
409 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
410 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
412 case GL_LIGHT_MODEL_COLOR_CONTROL
:
413 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
415 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
416 *params
= ctx
->Light
.Model
.LocalViewer
;
418 case GL_LIGHT_MODEL_TWO_SIDE
:
419 *params
= ctx
->Light
.Model
.TwoSide
;
422 *params
= ctx
->Line
.SmoothFlag
;
424 case GL_LINE_SMOOTH_HINT
:
425 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
427 case GL_LINE_STIPPLE
:
428 *params
= ctx
->Line
.StippleFlag
;
430 case GL_LINE_STIPPLE_PATTERN
:
431 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
433 case GL_LINE_STIPPLE_REPEAT
:
434 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
437 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
439 case GL_LINE_WIDTH_GRANULARITY
:
440 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
442 case GL_LINE_WIDTH_RANGE
:
443 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
444 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
446 case GL_ALIASED_LINE_WIDTH_RANGE
:
447 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
448 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
451 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
454 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
457 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
458 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
460 case GL_INDEX_LOGIC_OP
:
461 *params
= ctx
->Color
.IndexLogicOpEnabled
;
463 case GL_COLOR_LOGIC_OP
:
464 *params
= ctx
->Color
.ColorLogicOpEnabled
;
466 case GL_LOGIC_OP_MODE
:
467 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
469 case GL_MAP1_COLOR_4
:
470 *params
= ctx
->Eval
.Map1Color4
;
472 case GL_MAP1_GRID_DOMAIN
:
473 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
474 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
476 case GL_MAP1_GRID_SEGMENTS
:
477 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
480 *params
= ctx
->Eval
.Map1Index
;
483 *params
= ctx
->Eval
.Map1Normal
;
485 case GL_MAP1_TEXTURE_COORD_1
:
486 *params
= ctx
->Eval
.Map1TextureCoord1
;
488 case GL_MAP1_TEXTURE_COORD_2
:
489 *params
= ctx
->Eval
.Map1TextureCoord2
;
491 case GL_MAP1_TEXTURE_COORD_3
:
492 *params
= ctx
->Eval
.Map1TextureCoord3
;
494 case GL_MAP1_TEXTURE_COORD_4
:
495 *params
= ctx
->Eval
.Map1TextureCoord4
;
497 case GL_MAP1_VERTEX_3
:
498 *params
= ctx
->Eval
.Map1Vertex3
;
500 case GL_MAP1_VERTEX_4
:
501 *params
= ctx
->Eval
.Map1Vertex4
;
503 case GL_MAP2_COLOR_4
:
504 *params
= ctx
->Eval
.Map2Color4
;
506 case GL_MAP2_GRID_DOMAIN
:
507 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
508 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
509 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
510 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
512 case GL_MAP2_GRID_SEGMENTS
:
513 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
514 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
517 *params
= ctx
->Eval
.Map2Index
;
520 *params
= ctx
->Eval
.Map2Normal
;
522 case GL_MAP2_TEXTURE_COORD_1
:
523 *params
= ctx
->Eval
.Map2TextureCoord1
;
525 case GL_MAP2_TEXTURE_COORD_2
:
526 *params
= ctx
->Eval
.Map2TextureCoord2
;
528 case GL_MAP2_TEXTURE_COORD_3
:
529 *params
= ctx
->Eval
.Map2TextureCoord3
;
531 case GL_MAP2_TEXTURE_COORD_4
:
532 *params
= ctx
->Eval
.Map2TextureCoord4
;
534 case GL_MAP2_VERTEX_3
:
535 *params
= ctx
->Eval
.Map2Vertex3
;
537 case GL_MAP2_VERTEX_4
:
538 *params
= ctx
->Eval
.Map2Vertex4
;
541 *params
= ctx
->Pixel
.MapColorFlag
;
544 *params
= ctx
->Pixel
.MapStencilFlag
;
547 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
549 case GL_MAX_ATTRIB_STACK_DEPTH
:
550 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
552 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
553 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
555 case GL_MAX_CLIP_PLANES
:
556 *params
= INT_TO_BOOL(ctx
->Const
.MaxClipPlanes
);
558 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
559 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
561 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
562 *params
= INT_TO_BOOL(ctx
->Const
.MaxArrayLockSize
);
564 case GL_MAX_EVAL_ORDER
:
565 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
568 *params
= INT_TO_BOOL(ctx
->Const
.MaxLights
);
570 case GL_MAX_LIST_NESTING
:
571 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
573 case GL_MAX_MODELVIEW_STACK_DEPTH
:
574 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
576 case GL_MAX_NAME_STACK_DEPTH
:
577 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
579 case GL_MAX_PIXEL_MAP_TABLE
:
580 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
582 case GL_MAX_PROJECTION_STACK_DEPTH
:
583 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
585 case GL_MAX_TEXTURE_SIZE
:
586 *params
= INT_TO_BOOL(1 << (ctx
->Const
.MaxTextureLevels
- 1));
588 case GL_MAX_3D_TEXTURE_SIZE
:
589 *params
= INT_TO_BOOL(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
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
[texUnit
].m
[i
]);
858 case GL_TEXTURE_STACK_DEPTH
:
859 *params
= INT_TO_BOOL(ctx
->TextureStackDepth
[texUnit
] + 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(1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
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
[texUnit
].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_lod_bias */
1262 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1263 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureLodBias
);
1266 /* GL_EXT_texture_filter_anisotropic */
1267 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1268 if (ctx
->Extensions
.EXT_texture_filter_anisotropic
) {
1269 *params
= FLOAT_TO_BOOL(ctx
->Const
.MaxTextureMaxAnisotropy
);
1272 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1277 /* GL_ARB_multisample */
1278 case GL_MULTISAMPLE_ARB
:
1279 if (ctx
->Extensions
.ARB_multisample
) {
1280 *params
= ctx
->Multisample
.Enabled
;
1283 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1287 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1288 if (ctx
->Extensions
.ARB_multisample
) {
1289 *params
= ctx
->Multisample
.SampleAlphaToCoverage
;
1292 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1296 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1297 if (ctx
->Extensions
.ARB_multisample
) {
1298 *params
= ctx
->Multisample
.SampleAlphaToOne
;
1301 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1305 case GL_SAMPLE_COVERAGE_ARB
:
1306 if (ctx
->Extensions
.ARB_multisample
) {
1307 *params
= ctx
->Multisample
.SampleCoverage
;
1310 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1314 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1315 if (ctx
->Extensions
.ARB_multisample
) {
1316 *params
= FLOAT_TO_BOOL(ctx
->Multisample
.SampleCoverageValue
);
1319 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1323 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1324 if (ctx
->Extensions
.ARB_multisample
) {
1325 *params
= ctx
->Multisample
.SampleCoverageInvert
;
1328 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1332 case GL_SAMPLE_BUFFERS_ARB
:
1333 if (ctx
->Extensions
.ARB_multisample
) {
1334 *params
= 0; /* XXX fix someday */
1337 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1341 case GL_SAMPLES_ARB
:
1342 if (ctx
->Extensions
.ARB_multisample
) {
1343 *params
= 0; /* XXX fix someday */
1346 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1351 /* GL_IBM_rasterpos_clip */
1352 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1353 if (ctx
->Extensions
.IBM_rasterpos_clip
) {
1354 *params
= ctx
->Transform
.RasterPositionUnclipped
;
1357 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBoolean");
1362 /* GL_MESA_sprite_point */
1363 case GL_SPRITE_POINT_MESA
:
1364 if (ctx
->Extensions
.MESA_sprite_point
) {
1365 *params
= ctx
->Point
.SpriteMode
;
1368 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1373 /* GL_SGIS_generate_mipmap */
1374 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1375 if (ctx
->Extensions
.SGIS_generate_mipmap
) {
1376 *params
= ENUM_TO_BOOL(ctx
->Hint
.GenerateMipmap
);
1379 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1385 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1391 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1393 GET_CURRENT_CONTEXT(ctx
);
1395 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1396 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1397 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1402 /* We need this in order to get correct results for
1403 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
1405 FLUSH_VERTICES(ctx
, 0);
1407 if (MESA_VERBOSE
& VERBOSE_API
)
1408 fprintf(stderr
, "glGetDoublev %s\n", _mesa_lookup_enum_by_nr(pname
));
1410 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1414 case GL_ACCUM_RED_BITS
:
1415 *params
= (GLdouble
) ctx
->Visual
.accumRedBits
;
1417 case GL_ACCUM_GREEN_BITS
:
1418 *params
= (GLdouble
) ctx
->Visual
.accumGreenBits
;
1420 case GL_ACCUM_BLUE_BITS
:
1421 *params
= (GLdouble
) ctx
->Visual
.accumBlueBits
;
1423 case GL_ACCUM_ALPHA_BITS
:
1424 *params
= (GLdouble
) ctx
->Visual
.accumAlphaBits
;
1426 case GL_ACCUM_CLEAR_VALUE
:
1427 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1428 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1429 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1430 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1433 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1436 *params
= (GLdouble
) ctx
->Visual
.alphaBits
;
1438 case GL_ALPHA_SCALE
:
1439 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1442 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1444 case GL_ALPHA_TEST_FUNC
:
1445 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1447 case GL_ALPHA_TEST_REF
:
1448 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
1450 case GL_ATTRIB_STACK_DEPTH
:
1451 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1453 case GL_AUTO_NORMAL
:
1454 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1456 case GL_AUX_BUFFERS
:
1457 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1460 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1463 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1466 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1468 case GL_BLEND_SRC_RGB_EXT
:
1469 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1471 case GL_BLEND_DST_RGB_EXT
:
1472 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1474 case GL_BLEND_SRC_ALPHA_EXT
:
1475 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1477 case GL_BLEND_DST_ALPHA_EXT
:
1478 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1480 case GL_BLEND_EQUATION_EXT
:
1481 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1483 case GL_BLEND_COLOR_EXT
:
1484 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1485 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1486 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1487 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1490 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1493 *params
= (GLdouble
) ctx
->Visual
.blueBits
;
1496 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1498 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1499 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1501 case GL_CLIP_PLANE0
:
1502 case GL_CLIP_PLANE1
:
1503 case GL_CLIP_PLANE2
:
1504 case GL_CLIP_PLANE3
:
1505 case GL_CLIP_PLANE4
:
1506 case GL_CLIP_PLANE5
:
1507 *params
= (GLdouble
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
1509 case GL_COLOR_CLEAR_VALUE
:
1510 params
[0] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[0]);
1511 params
[1] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[1]);
1512 params
[2] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[2]);
1513 params
[3] = (GLdouble
) CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[3]);
1515 case GL_COLOR_MATERIAL
:
1516 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1518 case GL_COLOR_MATERIAL_FACE
:
1519 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1521 case GL_COLOR_MATERIAL_PARAMETER
:
1522 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1524 case GL_COLOR_WRITEMASK
:
1525 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1526 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1527 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1528 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1531 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1533 case GL_CULL_FACE_MODE
:
1534 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1536 case GL_CURRENT_COLOR
:
1537 FLUSH_CURRENT(ctx
, 0);
1538 params
[0] = (ctx
->Current
.Color
[0]);
1539 params
[1] = (ctx
->Current
.Color
[1]);
1540 params
[2] = (ctx
->Current
.Color
[2]);
1541 params
[3] = (ctx
->Current
.Color
[3]);
1543 case GL_CURRENT_INDEX
:
1544 FLUSH_CURRENT(ctx
, 0);
1545 *params
= (GLdouble
) ctx
->Current
.Index
;
1547 case GL_CURRENT_NORMAL
:
1548 FLUSH_CURRENT(ctx
, 0);
1549 params
[0] = (GLdouble
) ctx
->Current
.Normal
[0];
1550 params
[1] = (GLdouble
) ctx
->Current
.Normal
[1];
1551 params
[2] = (GLdouble
) ctx
->Current
.Normal
[2];
1553 case GL_CURRENT_RASTER_COLOR
:
1554 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1555 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1556 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1557 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1559 case GL_CURRENT_RASTER_DISTANCE
:
1560 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1562 case GL_CURRENT_RASTER_INDEX
:
1563 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1565 case GL_CURRENT_RASTER_POSITION
:
1566 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1567 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1568 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1569 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1571 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1572 params
[0] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texUnit
][0];
1573 params
[1] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texUnit
][1];
1574 params
[2] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texUnit
][2];
1575 params
[3] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texUnit
][3];
1577 case GL_CURRENT_RASTER_POSITION_VALID
:
1578 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1580 case GL_CURRENT_TEXTURE_COORDS
:
1581 FLUSH_CURRENT(ctx
, 0);
1582 params
[0] = (GLdouble
) ctx
->Current
.Texcoord
[texUnit
][0];
1583 params
[1] = (GLdouble
) ctx
->Current
.Texcoord
[texUnit
][1];
1584 params
[2] = (GLdouble
) ctx
->Current
.Texcoord
[texUnit
][2];
1585 params
[3] = (GLdouble
) ctx
->Current
.Texcoord
[texUnit
][3];
1588 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1591 *params
= (GLdouble
) ctx
->Visual
.depthBits
;
1593 case GL_DEPTH_CLEAR_VALUE
:
1594 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1597 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1599 case GL_DEPTH_RANGE
:
1600 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1601 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1603 case GL_DEPTH_SCALE
:
1604 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1607 *params
= (GLdouble
) ctx
->Depth
.Test
;
1609 case GL_DEPTH_WRITEMASK
:
1610 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1613 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1615 case GL_DOUBLEBUFFER
:
1616 *params
= (GLdouble
) ctx
->Visual
.doubleBufferMode
;
1618 case GL_DRAW_BUFFER
:
1619 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1622 FLUSH_CURRENT(ctx
, 0);
1623 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1625 case GL_FEEDBACK_BUFFER_SIZE
:
1626 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1628 case GL_FEEDBACK_BUFFER_TYPE
:
1629 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1632 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1635 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1636 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1637 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1638 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1640 case GL_FOG_DENSITY
:
1641 *params
= (GLdouble
) ctx
->Fog
.Density
;
1644 *params
= (GLdouble
) ctx
->Fog
.End
;
1647 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1650 *params
= (GLdouble
) ctx
->Fog
.Index
;
1653 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1656 *params
= (GLdouble
) ctx
->Fog
.Start
;
1659 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1662 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1665 *params
= (GLdouble
) ctx
->Visual
.greenBits
;
1667 case GL_GREEN_SCALE
:
1668 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1671 if (ctx
->Extensions
.EXT_histogram
|| ctx
->Extensions
.ARB_imaging
) {
1672 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
1675 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
1680 *params
= (GLdouble
) ctx
->Visual
.indexBits
;
1682 case GL_INDEX_CLEAR_VALUE
:
1683 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1686 *params
= ctx
->Visual
.rgbMode
? 0.0 : 1.0;
1688 case GL_INDEX_OFFSET
:
1689 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1691 case GL_INDEX_SHIFT
:
1692 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1694 case GL_INDEX_WRITEMASK
:
1695 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1705 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1708 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1710 case GL_LIGHT_MODEL_AMBIENT
:
1711 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1712 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1713 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1714 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1716 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1717 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1719 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1720 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1722 case GL_LIGHT_MODEL_TWO_SIDE
:
1723 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1725 case GL_LINE_SMOOTH
:
1726 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1728 case GL_LINE_SMOOTH_HINT
:
1729 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1731 case GL_LINE_STIPPLE
:
1732 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1734 case GL_LINE_STIPPLE_PATTERN
:
1735 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1737 case GL_LINE_STIPPLE_REPEAT
:
1738 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1741 *params
= (GLdouble
) ctx
->Line
.Width
;
1743 case GL_LINE_WIDTH_GRANULARITY
:
1744 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1746 case GL_LINE_WIDTH_RANGE
:
1747 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1748 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1750 case GL_ALIASED_LINE_WIDTH_RANGE
:
1751 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1752 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1755 *params
= (GLdouble
) ctx
->List
.ListBase
;
1758 *params
= (GLdouble
) ctx
->CurrentListNum
;
1761 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1762 : ENUM_TO_DOUBLE(GL_COMPILE
);
1764 case GL_INDEX_LOGIC_OP
:
1765 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1767 case GL_COLOR_LOGIC_OP
:
1768 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1770 case GL_LOGIC_OP_MODE
:
1771 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1773 case GL_MAP1_COLOR_4
:
1774 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1776 case GL_MAP1_GRID_DOMAIN
:
1777 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1778 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1780 case GL_MAP1_GRID_SEGMENTS
:
1781 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1784 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1786 case GL_MAP1_NORMAL
:
1787 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1789 case GL_MAP1_TEXTURE_COORD_1
:
1790 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1792 case GL_MAP1_TEXTURE_COORD_2
:
1793 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1795 case GL_MAP1_TEXTURE_COORD_3
:
1796 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1798 case GL_MAP1_TEXTURE_COORD_4
:
1799 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1801 case GL_MAP1_VERTEX_3
:
1802 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1804 case GL_MAP1_VERTEX_4
:
1805 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1807 case GL_MAP2_COLOR_4
:
1808 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1810 case GL_MAP2_GRID_DOMAIN
:
1811 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1812 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1813 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1814 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1816 case GL_MAP2_GRID_SEGMENTS
:
1817 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1818 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1821 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1823 case GL_MAP2_NORMAL
:
1824 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1826 case GL_MAP2_TEXTURE_COORD_1
:
1827 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1829 case GL_MAP2_TEXTURE_COORD_2
:
1830 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1832 case GL_MAP2_TEXTURE_COORD_3
:
1833 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1835 case GL_MAP2_TEXTURE_COORD_4
:
1836 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1838 case GL_MAP2_VERTEX_3
:
1839 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1841 case GL_MAP2_VERTEX_4
:
1842 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1845 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1847 case GL_MAP_STENCIL
:
1848 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1850 case GL_MATRIX_MODE
:
1851 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1853 case GL_MAX_ATTRIB_STACK_DEPTH
:
1854 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1856 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1857 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1859 case GL_MAX_CLIP_PLANES
:
1860 *params
= (GLdouble
) ctx
->Const
.MaxClipPlanes
;
1862 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1863 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1865 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1866 *params
= (GLdouble
) ctx
->Const
.MaxArrayLockSize
;
1868 case GL_MAX_EVAL_ORDER
:
1869 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1872 *params
= (GLdouble
) ctx
->Const
.MaxLights
;
1874 case GL_MAX_LIST_NESTING
:
1875 *params
= (GLdouble
) MAX_LIST_NESTING
;
1877 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1878 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1880 case GL_MAX_NAME_STACK_DEPTH
:
1881 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1883 case GL_MAX_PIXEL_MAP_TABLE
:
1884 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1886 case GL_MAX_PROJECTION_STACK_DEPTH
:
1887 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1889 case GL_MAX_TEXTURE_SIZE
:
1890 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
1892 case GL_MAX_3D_TEXTURE_SIZE
:
1893 *params
= (GLdouble
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
1895 case GL_MAX_TEXTURE_STACK_DEPTH
:
1896 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1898 case GL_MAX_VIEWPORT_DIMS
:
1899 params
[0] = (GLdouble
) MAX_WIDTH
;
1900 params
[1] = (GLdouble
) MAX_HEIGHT
;
1903 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
1905 case GL_MODELVIEW_MATRIX
:
1906 for (i
=0;i
<16;i
++) {
1907 params
[i
] = (GLdouble
) ctx
->ModelView
.m
[i
];
1910 case GL_MODELVIEW_STACK_DEPTH
:
1911 *params
= (GLdouble
) (ctx
->ModelViewStackDepth
+ 1);
1913 case GL_NAME_STACK_DEPTH
:
1914 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1917 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1919 case GL_PACK_ALIGNMENT
:
1920 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1922 case GL_PACK_LSB_FIRST
:
1923 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1925 case GL_PACK_ROW_LENGTH
:
1926 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1928 case GL_PACK_SKIP_PIXELS
:
1929 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1931 case GL_PACK_SKIP_ROWS
:
1932 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1934 case GL_PACK_SWAP_BYTES
:
1935 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
1937 case GL_PACK_SKIP_IMAGES_EXT
:
1938 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
1940 case GL_PACK_IMAGE_HEIGHT_EXT
:
1941 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
1943 case GL_PERSPECTIVE_CORRECTION_HINT
:
1944 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
1946 case GL_PIXEL_MAP_A_TO_A_SIZE
:
1947 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
1949 case GL_PIXEL_MAP_B_TO_B_SIZE
:
1950 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
1952 case GL_PIXEL_MAP_G_TO_G_SIZE
:
1953 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
1955 case GL_PIXEL_MAP_I_TO_A_SIZE
:
1956 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
1958 case GL_PIXEL_MAP_I_TO_B_SIZE
:
1959 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
1961 case GL_PIXEL_MAP_I_TO_G_SIZE
:
1962 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
1964 case GL_PIXEL_MAP_I_TO_I_SIZE
:
1965 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
1967 case GL_PIXEL_MAP_I_TO_R_SIZE
:
1968 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
1970 case GL_PIXEL_MAP_R_TO_R_SIZE
:
1971 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
1973 case GL_PIXEL_MAP_S_TO_S_SIZE
:
1974 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
1977 *params
= (GLdouble
) ctx
->Point
.Size
;
1979 case GL_POINT_SIZE_GRANULARITY
:
1980 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
1982 case GL_POINT_SIZE_RANGE
:
1983 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
1984 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
1986 case GL_ALIASED_POINT_SIZE_RANGE
:
1987 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
1988 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
1990 case GL_POINT_SMOOTH
:
1991 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
1993 case GL_POINT_SMOOTH_HINT
:
1994 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
1996 case GL_POINT_SIZE_MIN_EXT
:
1997 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
1999 case GL_POINT_SIZE_MAX_EXT
:
2000 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
2002 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2003 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
2005 case GL_DISTANCE_ATTENUATION_EXT
:
2006 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
2007 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
2008 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
2010 case GL_POLYGON_MODE
:
2011 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
2012 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
2014 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
2015 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2017 case GL_POLYGON_OFFSET_FACTOR
:
2018 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
2020 case GL_POLYGON_OFFSET_UNITS
:
2021 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
2023 case GL_POLYGON_SMOOTH
:
2024 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
2026 case GL_POLYGON_SMOOTH_HINT
:
2027 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
2029 case GL_POLYGON_STIPPLE
:
2030 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
2032 case GL_PROJECTION_MATRIX
:
2033 for (i
=0;i
<16;i
++) {
2034 params
[i
] = (GLdouble
) ctx
->ProjectionMatrix
.m
[i
];
2037 case GL_PROJECTION_STACK_DEPTH
:
2038 *params
= (GLdouble
) (ctx
->ProjectionStackDepth
+ 1);
2040 case GL_READ_BUFFER
:
2041 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
2044 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
2047 *params
= (GLdouble
) ctx
->Visual
.redBits
;
2050 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
2052 case GL_RENDER_MODE
:
2053 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
2055 case GL_RESCALE_NORMAL
:
2056 *params
= (GLdouble
) ctx
->Transform
.RescaleNormals
;
2059 *params
= (GLdouble
) ctx
->Visual
.rgbMode
;
2061 case GL_SCISSOR_BOX
:
2062 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
2063 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
2064 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
2065 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
2067 case GL_SCISSOR_TEST
:
2068 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
2070 case GL_SELECTION_BUFFER_SIZE
:
2071 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
2073 case GL_SHADE_MODEL
:
2074 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
2076 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2077 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
2079 case GL_STENCIL_BITS
:
2080 *params
= (GLdouble
) ctx
->Visual
.stencilBits
;
2082 case GL_STENCIL_CLEAR_VALUE
:
2083 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
2085 case GL_STENCIL_FAIL
:
2086 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
2088 case GL_STENCIL_FUNC
:
2089 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
2091 case GL_STENCIL_PASS_DEPTH_FAIL
:
2092 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
2094 case GL_STENCIL_PASS_DEPTH_PASS
:
2095 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
2097 case GL_STENCIL_REF
:
2098 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
2100 case GL_STENCIL_TEST
:
2101 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
2103 case GL_STENCIL_VALUE_MASK
:
2104 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
2106 case GL_STENCIL_WRITEMASK
:
2107 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
2110 *params
= (GLdouble
) ctx
->Visual
.stereoMode
;
2112 case GL_SUBPIXEL_BITS
:
2113 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
2116 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
2119 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
2122 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
2124 case GL_TEXTURE_BINDING_1D
:
2125 *params
= (GLdouble
) textureUnit
->Current1D
->Name
;
2127 case GL_TEXTURE_BINDING_2D
:
2128 *params
= (GLdouble
) textureUnit
->Current2D
->Name
;
2130 case GL_TEXTURE_BINDING_3D
:
2131 *params
= (GLdouble
) textureUnit
->Current3D
->Name
;
2133 case GL_TEXTURE_ENV_COLOR
:
2134 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2135 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2136 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2137 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2139 case GL_TEXTURE_ENV_MODE
:
2140 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2142 case GL_TEXTURE_GEN_S
:
2143 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2145 case GL_TEXTURE_GEN_T
:
2146 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2148 case GL_TEXTURE_GEN_R
:
2149 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2151 case GL_TEXTURE_GEN_Q
:
2152 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2154 case GL_TEXTURE_MATRIX
:
2155 for (i
=0;i
<16;i
++) {
2156 params
[i
] = (GLdouble
) ctx
->TextureMatrix
[texUnit
].m
[i
];
2159 case GL_TEXTURE_STACK_DEPTH
:
2160 *params
= (GLdouble
) (ctx
->TextureStackDepth
[texUnit
] + 1);
2162 case GL_UNPACK_ALIGNMENT
:
2163 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2165 case GL_UNPACK_LSB_FIRST
:
2166 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2168 case GL_UNPACK_ROW_LENGTH
:
2169 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2171 case GL_UNPACK_SKIP_PIXELS
:
2172 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2174 case GL_UNPACK_SKIP_ROWS
:
2175 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2177 case GL_UNPACK_SWAP_BYTES
:
2178 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2180 case GL_UNPACK_SKIP_IMAGES_EXT
:
2181 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2183 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2184 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2187 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2188 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2189 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2190 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2193 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2196 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2198 case GL_VERTEX_ARRAY
:
2199 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2201 case GL_VERTEX_ARRAY_SIZE
:
2202 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2204 case GL_VERTEX_ARRAY_TYPE
:
2205 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2207 case GL_VERTEX_ARRAY_STRIDE
:
2208 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2210 case GL_VERTEX_ARRAY_COUNT_EXT
:
2213 case GL_NORMAL_ARRAY
:
2214 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2216 case GL_NORMAL_ARRAY_TYPE
:
2217 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2219 case GL_NORMAL_ARRAY_STRIDE
:
2220 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2222 case GL_NORMAL_ARRAY_COUNT_EXT
:
2225 case GL_COLOR_ARRAY
:
2226 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2228 case GL_COLOR_ARRAY_SIZE
:
2229 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2231 case GL_COLOR_ARRAY_TYPE
:
2232 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2234 case GL_COLOR_ARRAY_STRIDE
:
2235 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2237 case GL_COLOR_ARRAY_COUNT_EXT
:
2240 case GL_INDEX_ARRAY
:
2241 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2243 case GL_INDEX_ARRAY_TYPE
:
2244 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2246 case GL_INDEX_ARRAY_STRIDE
:
2247 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2249 case GL_INDEX_ARRAY_COUNT_EXT
:
2252 case GL_TEXTURE_COORD_ARRAY
:
2253 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2255 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2256 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2258 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2259 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2261 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2262 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2264 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2267 case GL_EDGE_FLAG_ARRAY
:
2268 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2270 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2271 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2273 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2277 /* GL_ARB_multitexture */
2278 case GL_MAX_TEXTURE_UNITS_ARB
:
2279 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2281 case GL_ACTIVE_TEXTURE_ARB
:
2282 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2284 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2285 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2288 /* GL_ARB_texture_cube_map */
2289 case GL_TEXTURE_CUBE_MAP_ARB
:
2290 if (ctx
->Extensions
.ARB_texture_cube_map
)
2291 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2293 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2295 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2296 if (ctx
->Extensions
.ARB_texture_cube_map
)
2297 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2299 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2301 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2302 if (ctx
->Extensions
.ARB_texture_cube_map
)
2303 *params
= (GLdouble
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
2305 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2308 /* GL_ARB_texture_compression */
2309 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2310 if (ctx
->Extensions
.ARB_texture_compression
) {
2311 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2314 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2316 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2317 if (ctx
->Extensions
.ARB_texture_compression
) {
2318 *params
= (GLdouble
) ctx
->Const
.NumCompressedTextureFormats
;
2321 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2323 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2324 if (ctx
->Extensions
.ARB_texture_compression
) {
2326 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
2327 params
[i
] = (GLdouble
) ctx
->Const
.CompressedTextureFormats
[i
];
2330 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2333 /* GL_EXT_compiled_vertex_array */
2334 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2335 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2337 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2338 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2341 /* GL_ARB_transpose_matrix */
2342 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2346 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
2347 for (i
=0;i
<16;i
++) {
2348 params
[i
] = (GLdouble
) tm
[i
];
2352 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2356 _math_transposef(tm
, ctx
->ModelView
.m
);
2357 for (i
=0;i
<16;i
++) {
2358 params
[i
] = (GLdouble
) tm
[i
];
2362 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2366 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
2367 for (i
=0;i
<16;i
++) {
2368 params
[i
] = (GLdouble
) tm
[i
];
2372 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2376 _math_transposef(tm
, ctx
->TextureMatrix
[texUnit
].m
);
2377 for (i
=0;i
<16;i
++) {
2378 params
[i
] = (GLdouble
) tm
[i
];
2383 /* GL_HP_occlusion_test */
2384 case GL_OCCLUSION_TEST_HP
:
2385 if (ctx
->Extensions
.HP_occlusion_test
) {
2386 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2389 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2392 case GL_OCCLUSION_TEST_RESULT_HP
:
2393 if (ctx
->Extensions
.HP_occlusion_test
) {
2394 if (ctx
->Depth
.OcclusionTest
)
2395 *params
= (GLdouble
) ctx
->OcclusionResult
;
2397 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2398 /* reset flag now */
2399 ctx
->OcclusionResult
= GL_FALSE
;
2400 ctx
->OcclusionResultSaved
= GL_FALSE
;
2403 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2407 /* GL_SGIS_pixel_texture */
2408 case GL_PIXEL_TEXTURE_SGIS
:
2409 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2412 /* GL_SGIX_pixel_texture */
2413 case GL_PIXEL_TEX_GEN_SGIX
:
2414 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2416 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2417 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2420 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2421 case GL_COLOR_MATRIX_SGI
:
2422 for (i
=0;i
<16;i
++) {
2423 params
[i
] = (GLdouble
) ctx
->ColorMatrix
.m
[i
];
2426 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2427 *params
= (GLdouble
) (ctx
->ColorStackDepth
+ 1);
2429 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2430 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2432 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2433 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2435 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2436 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2438 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2439 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2441 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2442 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2444 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2445 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2447 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2448 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2450 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2451 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2453 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2454 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2457 /* GL_EXT_convolution (also in 1.2 imaging) */
2458 case GL_CONVOLUTION_1D_EXT
:
2459 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
2460 *params
= (GLdouble
) ctx
->Pixel
.Convolution1DEnabled
;
2463 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2467 case GL_CONVOLUTION_2D
:
2468 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
2469 *params
= (GLdouble
) ctx
->Pixel
.Convolution2DEnabled
;
2472 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2476 case GL_SEPARABLE_2D
:
2477 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
2478 *params
= (GLdouble
) ctx
->Pixel
.Separable2DEnabled
;
2481 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2485 case GL_MAX_CONVOLUTION_WIDTH
:
2486 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionWidth
;
2488 case GL_MAX_CONVOLUTION_HEIGHT
:
2489 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionHeight
;
2491 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2492 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2494 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2495 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2497 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2498 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2500 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2501 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2503 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2504 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2506 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2507 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2509 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2510 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2512 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2513 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2516 /* GL_SGI_color_table (also in 1.2 imaging */
2517 case GL_COLOR_TABLE_SGI
:
2518 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2520 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2521 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2523 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2524 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2527 /* GL_EXT_secondary_color */
2528 case GL_COLOR_SUM_EXT
:
2529 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2531 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2532 FLUSH_CURRENT(ctx
, 0);
2533 params
[0] = (ctx
->Current
.SecondaryColor
[0]);
2534 params
[1] = (ctx
->Current
.SecondaryColor
[1]);
2535 params
[2] = (ctx
->Current
.SecondaryColor
[2]);
2537 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2538 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2540 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2541 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2543 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2544 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2546 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2547 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2550 /* GL_EXT_fog_coord */
2551 case GL_CURRENT_FOG_COORDINATE_EXT
:
2552 FLUSH_CURRENT(ctx
, 0);
2553 *params
= (GLdouble
) ctx
->Current
.FogCoord
;
2555 case GL_FOG_COORDINATE_ARRAY_EXT
:
2556 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2558 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2559 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2561 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2562 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2565 /* GL_EXT_texture_lod_bias */
2566 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
2567 *params
= (GLdouble
) ctx
->Const
.MaxTextureLodBias
;
2570 /* GL_EXT_texture_filter_anisotropic */
2571 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
2572 if (ctx
->Extensions
.EXT_texture_filter_anisotropic
) {
2573 *params
= (GLdouble
) ctx
->Const
.MaxTextureMaxAnisotropy
;
2576 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2581 /* GL_ARB_multisample */
2582 case GL_MULTISAMPLE_ARB
:
2583 if (ctx
->Extensions
.ARB_multisample
) {
2584 *params
= (GLdouble
) ctx
->Multisample
.Enabled
;
2587 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2591 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
2592 if (ctx
->Extensions
.ARB_multisample
) {
2593 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToCoverage
;
2596 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2600 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
2601 if (ctx
->Extensions
.ARB_multisample
) {
2602 *params
= (GLdouble
) ctx
->Multisample
.SampleAlphaToOne
;
2605 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2609 case GL_SAMPLE_COVERAGE_ARB
:
2610 if (ctx
->Extensions
.ARB_multisample
) {
2611 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverage
;
2614 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2618 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
2619 if (ctx
->Extensions
.ARB_multisample
) {
2620 *params
= ctx
->Multisample
.SampleCoverageValue
;
2623 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2627 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
2628 if (ctx
->Extensions
.ARB_multisample
) {
2629 *params
= (GLdouble
) ctx
->Multisample
.SampleCoverageInvert
;
2632 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2636 case GL_SAMPLE_BUFFERS_ARB
:
2637 if (ctx
->Extensions
.ARB_multisample
) {
2638 *params
= 0.0; /* XXX fix someday */
2641 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2645 case GL_SAMPLES_ARB
:
2646 if (ctx
->Extensions
.ARB_multisample
) {
2647 *params
= 0.0; /* XXX fix someday */
2650 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2655 /* GL_IBM_rasterpos_clip */
2656 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
2657 if (ctx
->Extensions
.IBM_rasterpos_clip
) {
2658 *params
= (GLdouble
) ctx
->Transform
.RasterPositionUnclipped
;
2661 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2666 /* GL_MESA_sprite_point */
2667 case GL_SPRITE_POINT_MESA
:
2668 if (ctx
->Extensions
.MESA_sprite_point
) {
2669 *params
= (GLdouble
) ctx
->Point
.SpriteMode
;
2672 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2677 /* GL_SGIS_generate_mipmap */
2678 case GL_GENERATE_MIPMAP_HINT_SGIS
:
2679 if (ctx
->Extensions
.SGIS_generate_mipmap
) {
2680 *params
= (GLdouble
) ctx
->Hint
.GenerateMipmap
;
2683 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2689 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2694 #define GET_FLOAT_ERROR \
2697 sprintf(s, "glGetFloatv(0x%x)", pname); \
2698 _mesa_error(ctx, GL_INVALID_ENUM, s); \
2702 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2704 GET_CURRENT_CONTEXT(ctx
);
2706 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2707 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2708 ASSERT_OUTSIDE_BEGIN_END(ctx
);
2713 /* We need this in order to get correct results for
2714 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
2716 FLUSH_VERTICES(ctx
, 0);
2718 if (MESA_VERBOSE
& VERBOSE_API
)
2719 fprintf(stderr
, "glGetFloatv %s\n", _mesa_lookup_enum_by_nr(pname
));
2721 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2725 case GL_ACCUM_RED_BITS
:
2726 *params
= (GLfloat
) ctx
->Visual
.accumRedBits
;
2728 case GL_ACCUM_GREEN_BITS
:
2729 *params
= (GLfloat
) ctx
->Visual
.accumGreenBits
;
2731 case GL_ACCUM_BLUE_BITS
:
2732 *params
= (GLfloat
) ctx
->Visual
.accumBlueBits
;
2734 case GL_ACCUM_ALPHA_BITS
:
2735 *params
= (GLfloat
) ctx
->Visual
.accumAlphaBits
;
2737 case GL_ACCUM_CLEAR_VALUE
:
2738 params
[0] = ctx
->Accum
.ClearColor
[0];
2739 params
[1] = ctx
->Accum
.ClearColor
[1];
2740 params
[2] = ctx
->Accum
.ClearColor
[2];
2741 params
[3] = ctx
->Accum
.ClearColor
[3];
2744 *params
= ctx
->Pixel
.AlphaBias
;
2747 *params
= (GLfloat
) ctx
->Visual
.alphaBits
;
2749 case GL_ALPHA_SCALE
:
2750 *params
= ctx
->Pixel
.AlphaScale
;
2753 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2755 case GL_ALPHA_TEST_FUNC
:
2756 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2758 case GL_ALPHA_TEST_REF
:
2759 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
2761 case GL_ATTRIB_STACK_DEPTH
:
2762 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2764 case GL_AUTO_NORMAL
:
2765 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2767 case GL_AUX_BUFFERS
:
2768 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2771 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2774 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2777 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2779 case GL_BLEND_SRC_RGB_EXT
:
2780 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2782 case GL_BLEND_DST_RGB_EXT
:
2783 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2785 case GL_BLEND_SRC_ALPHA_EXT
:
2786 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2788 case GL_BLEND_DST_ALPHA_EXT
:
2789 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2791 case GL_BLEND_EQUATION_EXT
:
2792 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2794 case GL_BLEND_COLOR_EXT
:
2795 params
[0] = ctx
->Color
.BlendColor
[0];
2796 params
[1] = ctx
->Color
.BlendColor
[1];
2797 params
[2] = ctx
->Color
.BlendColor
[2];
2798 params
[3] = ctx
->Color
.BlendColor
[3];
2801 *params
= ctx
->Pixel
.BlueBias
;
2804 *params
= (GLfloat
) ctx
->Visual
.blueBits
;
2807 *params
= ctx
->Pixel
.BlueScale
;
2809 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2810 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2812 case GL_CLIP_PLANE0
:
2813 case GL_CLIP_PLANE1
:
2814 case GL_CLIP_PLANE2
:
2815 case GL_CLIP_PLANE3
:
2816 case GL_CLIP_PLANE4
:
2817 case GL_CLIP_PLANE5
:
2818 *params
= (GLfloat
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
2820 case GL_COLOR_CLEAR_VALUE
:
2821 params
[0] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[0]);
2822 params
[1] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[1]);
2823 params
[2] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[2]);
2824 params
[3] = CHAN_TO_FLOAT(ctx
->Color
.ClearColor
[3]);
2826 case GL_COLOR_MATERIAL
:
2827 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2829 case GL_COLOR_MATERIAL_FACE
:
2830 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2832 case GL_COLOR_MATERIAL_PARAMETER
:
2833 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2835 case GL_COLOR_WRITEMASK
:
2836 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2837 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2838 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2839 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2842 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2844 case GL_CULL_FACE_MODE
:
2845 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2847 case GL_CURRENT_COLOR
:
2848 FLUSH_CURRENT(ctx
, 0);
2849 params
[0] = (ctx
->Current
.Color
[0]);
2850 params
[1] = (ctx
->Current
.Color
[1]);
2851 params
[2] = (ctx
->Current
.Color
[2]);
2852 params
[3] = (ctx
->Current
.Color
[3]);
2854 case GL_CURRENT_INDEX
:
2855 FLUSH_CURRENT(ctx
, 0);
2856 *params
= (GLfloat
) ctx
->Current
.Index
;
2858 case GL_CURRENT_NORMAL
:
2859 FLUSH_CURRENT(ctx
, 0);
2860 params
[0] = ctx
->Current
.Normal
[0];
2861 params
[1] = ctx
->Current
.Normal
[1];
2862 params
[2] = ctx
->Current
.Normal
[2];
2864 case GL_CURRENT_RASTER_COLOR
:
2865 params
[0] = ctx
->Current
.RasterColor
[0];
2866 params
[1] = ctx
->Current
.RasterColor
[1];
2867 params
[2] = ctx
->Current
.RasterColor
[2];
2868 params
[3] = ctx
->Current
.RasterColor
[3];
2870 case GL_CURRENT_RASTER_DISTANCE
:
2871 params
[0] = ctx
->Current
.RasterDistance
;
2873 case GL_CURRENT_RASTER_INDEX
:
2874 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2876 case GL_CURRENT_RASTER_POSITION
:
2877 params
[0] = ctx
->Current
.RasterPos
[0];
2878 params
[1] = ctx
->Current
.RasterPos
[1];
2879 params
[2] = ctx
->Current
.RasterPos
[2];
2880 params
[3] = ctx
->Current
.RasterPos
[3];
2882 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2883 params
[0] = ctx
->Current
.RasterMultiTexCoord
[texUnit
][0];
2884 params
[1] = ctx
->Current
.RasterMultiTexCoord
[texUnit
][1];
2885 params
[2] = ctx
->Current
.RasterMultiTexCoord
[texUnit
][2];
2886 params
[3] = ctx
->Current
.RasterMultiTexCoord
[texUnit
][3];
2888 case GL_CURRENT_RASTER_POSITION_VALID
:
2889 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2891 case GL_CURRENT_TEXTURE_COORDS
:
2892 FLUSH_CURRENT(ctx
, 0);
2893 params
[0] = (GLfloat
) ctx
->Current
.Texcoord
[texUnit
][0];
2894 params
[1] = (GLfloat
) ctx
->Current
.Texcoord
[texUnit
][1];
2895 params
[2] = (GLfloat
) ctx
->Current
.Texcoord
[texUnit
][2];
2896 params
[3] = (GLfloat
) ctx
->Current
.Texcoord
[texUnit
][3];
2899 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2902 *params
= (GLfloat
) ctx
->Visual
.depthBits
;
2904 case GL_DEPTH_CLEAR_VALUE
:
2905 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2908 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2910 case GL_DEPTH_RANGE
:
2911 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2912 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2914 case GL_DEPTH_SCALE
:
2915 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2918 *params
= (GLfloat
) ctx
->Depth
.Test
;
2920 case GL_DEPTH_WRITEMASK
:
2921 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2924 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2926 case GL_DOUBLEBUFFER
:
2927 *params
= (GLfloat
) ctx
->Visual
.doubleBufferMode
;
2929 case GL_DRAW_BUFFER
:
2930 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2933 FLUSH_CURRENT(ctx
, 0);
2934 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2936 case GL_FEEDBACK_BUFFER_SIZE
:
2937 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2939 case GL_FEEDBACK_BUFFER_TYPE
:
2940 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2943 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2946 params
[0] = ctx
->Fog
.Color
[0];
2947 params
[1] = ctx
->Fog
.Color
[1];
2948 params
[2] = ctx
->Fog
.Color
[2];
2949 params
[3] = ctx
->Fog
.Color
[3];
2951 case GL_FOG_DENSITY
:
2952 *params
= ctx
->Fog
.Density
;
2955 *params
= ctx
->Fog
.End
;
2958 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2961 *params
= ctx
->Fog
.Index
;
2964 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2967 *params
= ctx
->Fog
.Start
;
2970 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2973 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2976 *params
= (GLfloat
) ctx
->Visual
.greenBits
;
2978 case GL_GREEN_SCALE
:
2979 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
2982 if (ctx
->Extensions
.EXT_histogram
|| ctx
->Extensions
.ARB_imaging
) {
2983 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
2991 *params
= (GLfloat
) ctx
->Visual
.indexBits
;
2993 case GL_INDEX_CLEAR_VALUE
:
2994 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
2997 *params
= ctx
->Visual
.rgbMode
? 0.0F
: 1.0F
;
2999 case GL_INDEX_OFFSET
:
3000 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
3002 case GL_INDEX_SHIFT
:
3003 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
3005 case GL_INDEX_WRITEMASK
:
3006 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
3016 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3019 *params
= (GLfloat
) ctx
->Light
.Enabled
;
3021 case GL_LIGHT_MODEL_AMBIENT
:
3022 params
[0] = ctx
->Light
.Model
.Ambient
[0];
3023 params
[1] = ctx
->Light
.Model
.Ambient
[1];
3024 params
[2] = ctx
->Light
.Model
.Ambient
[2];
3025 params
[3] = ctx
->Light
.Model
.Ambient
[3];
3027 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3028 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
3030 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3031 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
3033 case GL_LIGHT_MODEL_TWO_SIDE
:
3034 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
3036 case GL_LINE_SMOOTH
:
3037 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
3039 case GL_LINE_SMOOTH_HINT
:
3040 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
3042 case GL_LINE_STIPPLE
:
3043 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
3045 case GL_LINE_STIPPLE_PATTERN
:
3046 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
3048 case GL_LINE_STIPPLE_REPEAT
:
3049 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
3052 *params
= (GLfloat
) ctx
->Line
.Width
;
3054 case GL_LINE_WIDTH_GRANULARITY
:
3055 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
3057 case GL_LINE_WIDTH_RANGE
:
3058 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
3059 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
3061 case GL_ALIASED_LINE_WIDTH_RANGE
:
3062 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
3063 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
3066 *params
= (GLfloat
) ctx
->List
.ListBase
;
3069 *params
= (GLfloat
) ctx
->CurrentListNum
;
3072 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
3073 : ENUM_TO_FLOAT(GL_COMPILE
);
3075 case GL_INDEX_LOGIC_OP
:
3076 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
3078 case GL_COLOR_LOGIC_OP
:
3079 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
3081 case GL_LOGIC_OP_MODE
:
3082 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
3084 case GL_MAP1_COLOR_4
:
3085 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
3087 case GL_MAP1_GRID_DOMAIN
:
3088 params
[0] = ctx
->Eval
.MapGrid1u1
;
3089 params
[1] = ctx
->Eval
.MapGrid1u2
;
3091 case GL_MAP1_GRID_SEGMENTS
:
3092 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
3095 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
3097 case GL_MAP1_NORMAL
:
3098 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
3100 case GL_MAP1_TEXTURE_COORD_1
:
3101 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
3103 case GL_MAP1_TEXTURE_COORD_2
:
3104 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
3106 case GL_MAP1_TEXTURE_COORD_3
:
3107 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
3109 case GL_MAP1_TEXTURE_COORD_4
:
3110 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
3112 case GL_MAP1_VERTEX_3
:
3113 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
3115 case GL_MAP1_VERTEX_4
:
3116 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
3118 case GL_MAP2_COLOR_4
:
3119 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
3121 case GL_MAP2_GRID_DOMAIN
:
3122 params
[0] = ctx
->Eval
.MapGrid2u1
;
3123 params
[1] = ctx
->Eval
.MapGrid2u2
;
3124 params
[2] = ctx
->Eval
.MapGrid2v1
;
3125 params
[3] = ctx
->Eval
.MapGrid2v2
;
3127 case GL_MAP2_GRID_SEGMENTS
:
3128 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
3129 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
3132 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
3134 case GL_MAP2_NORMAL
:
3135 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
3137 case GL_MAP2_TEXTURE_COORD_1
:
3138 *params
= ctx
->Eval
.Map2TextureCoord1
;
3140 case GL_MAP2_TEXTURE_COORD_2
:
3141 *params
= ctx
->Eval
.Map2TextureCoord2
;
3143 case GL_MAP2_TEXTURE_COORD_3
:
3144 *params
= ctx
->Eval
.Map2TextureCoord3
;
3146 case GL_MAP2_TEXTURE_COORD_4
:
3147 *params
= ctx
->Eval
.Map2TextureCoord4
;
3149 case GL_MAP2_VERTEX_3
:
3150 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
3152 case GL_MAP2_VERTEX_4
:
3153 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
3156 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
3158 case GL_MAP_STENCIL
:
3159 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
3161 case GL_MATRIX_MODE
:
3162 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
3164 case GL_MAX_ATTRIB_STACK_DEPTH
:
3165 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
3167 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
3168 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
3170 case GL_MAX_CLIP_PLANES
:
3171 *params
= (GLfloat
) ctx
->Const
.MaxClipPlanes
;
3173 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
3174 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3176 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
3177 *params
= (GLfloat
) ctx
->Const
.MaxArrayLockSize
;
3179 case GL_MAX_EVAL_ORDER
:
3180 *params
= (GLfloat
) MAX_EVAL_ORDER
;
3183 *params
= (GLfloat
) ctx
->Const
.MaxLights
;
3185 case GL_MAX_LIST_NESTING
:
3186 *params
= (GLfloat
) MAX_LIST_NESTING
;
3188 case GL_MAX_MODELVIEW_STACK_DEPTH
:
3189 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
3191 case GL_MAX_NAME_STACK_DEPTH
:
3192 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
3194 case GL_MAX_PIXEL_MAP_TABLE
:
3195 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
3197 case GL_MAX_PROJECTION_STACK_DEPTH
:
3198 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
3200 case GL_MAX_TEXTURE_SIZE
:
3201 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxTextureLevels
- 1));
3203 case GL_MAX_3D_TEXTURE_SIZE
:
3204 *params
= (GLfloat
) (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
3206 case GL_MAX_TEXTURE_STACK_DEPTH
:
3207 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
3209 case GL_MAX_VIEWPORT_DIMS
:
3210 params
[0] = (GLfloat
) MAX_WIDTH
;
3211 params
[1] = (GLfloat
) MAX_HEIGHT
;
3214 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
3216 case GL_MODELVIEW_MATRIX
:
3217 for (i
=0;i
<16;i
++) {
3218 params
[i
] = ctx
->ModelView
.m
[i
];
3221 case GL_MODELVIEW_STACK_DEPTH
:
3222 *params
= (GLfloat
) (ctx
->ModelViewStackDepth
+ 1);
3224 case GL_NAME_STACK_DEPTH
:
3225 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
3228 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
3230 case GL_PACK_ALIGNMENT
:
3231 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
3233 case GL_PACK_LSB_FIRST
:
3234 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
3236 case GL_PACK_ROW_LENGTH
:
3237 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
3239 case GL_PACK_SKIP_PIXELS
:
3240 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3242 case GL_PACK_SKIP_ROWS
:
3243 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3245 case GL_PACK_SWAP_BYTES
:
3246 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3248 case GL_PACK_SKIP_IMAGES_EXT
:
3249 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3251 case GL_PACK_IMAGE_HEIGHT_EXT
:
3252 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3254 case GL_PERSPECTIVE_CORRECTION_HINT
:
3255 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3257 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3258 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3260 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3261 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3263 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3264 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3266 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3267 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3269 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3270 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3272 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3273 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3275 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3276 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3278 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3279 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3281 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3282 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3284 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3285 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3288 *params
= (GLfloat
) ctx
->Point
.Size
;
3290 case GL_POINT_SIZE_GRANULARITY
:
3291 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3293 case GL_POINT_SIZE_RANGE
:
3294 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3295 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3297 case GL_ALIASED_POINT_SIZE_RANGE
:
3298 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3299 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3301 case GL_POINT_SMOOTH
:
3302 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3304 case GL_POINT_SMOOTH_HINT
:
3305 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3307 case GL_POINT_SIZE_MIN_EXT
:
3308 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3310 case GL_POINT_SIZE_MAX_EXT
:
3311 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3313 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3314 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3316 case GL_DISTANCE_ATTENUATION_EXT
:
3317 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3318 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3319 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3321 case GL_POLYGON_MODE
:
3322 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3323 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3325 #ifdef GL_EXT_polygon_offset
3326 case GL_POLYGON_OFFSET_BIAS_EXT
:
3327 *params
= ctx
->Polygon
.OffsetUnits
;
3330 case GL_POLYGON_OFFSET_FACTOR
:
3331 *params
= ctx
->Polygon
.OffsetFactor
;
3333 case GL_POLYGON_OFFSET_UNITS
:
3334 *params
= ctx
->Polygon
.OffsetUnits
;
3336 case GL_POLYGON_SMOOTH
:
3337 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3339 case GL_POLYGON_SMOOTH_HINT
:
3340 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3342 case GL_POLYGON_STIPPLE
:
3343 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3345 case GL_PROJECTION_MATRIX
:
3346 for (i
=0;i
<16;i
++) {
3347 params
[i
] = ctx
->ProjectionMatrix
.m
[i
];
3350 case GL_PROJECTION_STACK_DEPTH
:
3351 *params
= (GLfloat
) (ctx
->ProjectionStackDepth
+ 1);
3353 case GL_READ_BUFFER
:
3354 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3357 *params
= ctx
->Pixel
.RedBias
;
3360 *params
= (GLfloat
) ctx
->Visual
.redBits
;
3363 *params
= ctx
->Pixel
.RedScale
;
3365 case GL_RENDER_MODE
:
3366 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3368 case GL_RESCALE_NORMAL
:
3369 *params
= (GLfloat
) ctx
->Transform
.RescaleNormals
;
3372 *params
= (GLfloat
) ctx
->Visual
.rgbMode
;
3374 case GL_SCISSOR_BOX
:
3375 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3376 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3377 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3378 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3380 case GL_SCISSOR_TEST
:
3381 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3383 case GL_SELECTION_BUFFER_SIZE
:
3384 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3386 case GL_SHADE_MODEL
:
3387 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3389 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3390 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3392 case GL_STENCIL_BITS
:
3393 *params
= (GLfloat
) ctx
->Visual
.stencilBits
;
3395 case GL_STENCIL_CLEAR_VALUE
:
3396 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3398 case GL_STENCIL_FAIL
:
3399 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
3401 case GL_STENCIL_FUNC
:
3402 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
3404 case GL_STENCIL_PASS_DEPTH_FAIL
:
3405 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
3407 case GL_STENCIL_PASS_DEPTH_PASS
:
3408 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
3410 case GL_STENCIL_REF
:
3411 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
3413 case GL_STENCIL_TEST
:
3414 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3416 case GL_STENCIL_VALUE_MASK
:
3417 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
3419 case GL_STENCIL_WRITEMASK
:
3420 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
3423 *params
= (GLfloat
) ctx
->Visual
.stereoMode
;
3425 case GL_SUBPIXEL_BITS
:
3426 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3429 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0F
: 0.0F
;
3432 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0F
: 0.0F
;
3435 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0F
: 0.0F
;
3437 case GL_TEXTURE_BINDING_1D
:
3438 *params
= (GLfloat
) textureUnit
->Current1D
->Name
;
3440 case GL_TEXTURE_BINDING_2D
:
3441 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3443 case GL_TEXTURE_BINDING_3D
:
3444 *params
= (GLfloat
) textureUnit
->Current2D
->Name
;
3446 case GL_TEXTURE_ENV_COLOR
:
3447 params
[0] = textureUnit
->EnvColor
[0];
3448 params
[1] = textureUnit
->EnvColor
[1];
3449 params
[2] = textureUnit
->EnvColor
[2];
3450 params
[3] = textureUnit
->EnvColor
[3];
3452 case GL_TEXTURE_ENV_MODE
:
3453 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3455 case GL_TEXTURE_GEN_S
:
3456 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0F
: 0.0F
;
3458 case GL_TEXTURE_GEN_T
:
3459 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0F
: 0.0F
;
3461 case GL_TEXTURE_GEN_R
:
3462 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0F
: 0.0F
;
3464 case GL_TEXTURE_GEN_Q
:
3465 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0F
: 0.0F
;
3467 case GL_TEXTURE_MATRIX
:
3468 for (i
=0;i
<16;i
++) {
3469 params
[i
] = ctx
->TextureMatrix
[texUnit
].m
[i
];
3472 case GL_TEXTURE_STACK_DEPTH
:
3473 *params
= (GLfloat
) (ctx
->TextureStackDepth
[texUnit
] + 1);
3475 case GL_UNPACK_ALIGNMENT
:
3476 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3478 case GL_UNPACK_LSB_FIRST
:
3479 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3481 case GL_UNPACK_ROW_LENGTH
:
3482 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3484 case GL_UNPACK_SKIP_PIXELS
:
3485 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3487 case GL_UNPACK_SKIP_ROWS
:
3488 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3490 case GL_UNPACK_SWAP_BYTES
:
3491 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3493 case GL_UNPACK_SKIP_IMAGES_EXT
:
3494 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3496 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3497 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3500 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3501 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3502 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3503 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3506 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3509 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3511 case GL_VERTEX_ARRAY
:
3512 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3514 case GL_VERTEX_ARRAY_SIZE
:
3515 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3517 case GL_VERTEX_ARRAY_TYPE
:
3518 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3520 case GL_VERTEX_ARRAY_STRIDE
:
3521 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3523 case GL_VERTEX_ARRAY_COUNT_EXT
:
3526 case GL_NORMAL_ARRAY
:
3527 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3529 case GL_NORMAL_ARRAY_TYPE
:
3530 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3532 case GL_NORMAL_ARRAY_STRIDE
:
3533 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3535 case GL_NORMAL_ARRAY_COUNT_EXT
:
3538 case GL_COLOR_ARRAY
:
3539 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3541 case GL_COLOR_ARRAY_SIZE
:
3542 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3544 case GL_COLOR_ARRAY_TYPE
:
3545 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3547 case GL_COLOR_ARRAY_STRIDE
:
3548 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3550 case GL_COLOR_ARRAY_COUNT_EXT
:
3553 case GL_INDEX_ARRAY
:
3554 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3556 case GL_INDEX_ARRAY_TYPE
:
3557 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3559 case GL_INDEX_ARRAY_STRIDE
:
3560 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3562 case GL_INDEX_ARRAY_COUNT_EXT
:
3565 case GL_TEXTURE_COORD_ARRAY
:
3566 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3568 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3569 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3571 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3572 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3574 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3575 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3577 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3580 case GL_EDGE_FLAG_ARRAY
:
3581 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3583 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3584 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3586 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3590 /* GL_ARB_multitexture */
3591 case GL_MAX_TEXTURE_UNITS_ARB
:
3592 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3594 case GL_ACTIVE_TEXTURE_ARB
:
3595 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3597 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3598 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3601 /* GL_ARB_texture_cube_map */
3602 case GL_TEXTURE_CUBE_MAP_ARB
:
3603 if (ctx
->Extensions
.ARB_texture_cube_map
)
3604 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3608 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3609 if (ctx
->Extensions
.ARB_texture_cube_map
)
3610 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3614 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3615 if (ctx
->Extensions
.ARB_texture_cube_map
)
3616 *params
= (GLfloat
) (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
3621 /* GL_ARB_texture_compression */
3622 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3623 if (ctx
->Extensions
.ARB_texture_compression
) {
3624 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3629 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3630 if (ctx
->Extensions
.ARB_texture_compression
) {
3631 *params
= (GLfloat
) ctx
->Const
.NumCompressedTextureFormats
;
3636 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3637 if (ctx
->Extensions
.ARB_texture_compression
) {
3639 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
3640 params
[i
] = (GLfloat
) ctx
->Const
.CompressedTextureFormats
[i
];
3646 /* GL_EXT_compiled_vertex_array */
3647 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3648 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3650 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3651 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3654 /* GL_ARB_transpose_matrix */
3655 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3656 _math_transposef(params
, ctx
->ColorMatrix
.m
);
3658 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3659 _math_transposef(params
, ctx
->ModelView
.m
);
3661 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3662 _math_transposef(params
, ctx
->ProjectionMatrix
.m
);
3664 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3665 _math_transposef(params
, ctx
->TextureMatrix
[texUnit
].m
);
3668 /* GL_HP_occlusion_test */
3669 case GL_OCCLUSION_TEST_HP
:
3670 if (ctx
->Extensions
.HP_occlusion_test
) {
3671 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3677 case GL_OCCLUSION_TEST_RESULT_HP
:
3678 if (ctx
->Extensions
.HP_occlusion_test
) {
3679 if (ctx
->Depth
.OcclusionTest
)
3680 *params
= (GLfloat
) ctx
->OcclusionResult
;
3682 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3683 /* reset flag now */
3684 ctx
->OcclusionResult
= GL_FALSE
;
3685 ctx
->OcclusionResultSaved
= GL_FALSE
;
3692 /* GL_SGIS_pixel_texture */
3693 case GL_PIXEL_TEXTURE_SGIS
:
3694 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3697 /* GL_SGIX_pixel_texture */
3698 case GL_PIXEL_TEX_GEN_SGIX
:
3699 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3701 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3702 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3705 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3706 case GL_COLOR_MATRIX_SGI
:
3707 for (i
=0;i
<16;i
++) {
3708 params
[i
] = ctx
->ColorMatrix
.m
[i
];
3711 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3712 *params
= (GLfloat
) (ctx
->ColorStackDepth
+ 1);
3714 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3715 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3717 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3718 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3720 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3721 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3723 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3724 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3726 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3727 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3729 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3730 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3732 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3733 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3735 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3736 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3738 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3739 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3742 /* GL_EXT_convolution (also in 1.2 imaging) */
3743 case GL_CONVOLUTION_1D_EXT
:
3744 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
3745 *params
= (GLfloat
) ctx
->Pixel
.Convolution1DEnabled
;
3752 case GL_CONVOLUTION_2D
:
3753 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
3754 *params
= (GLfloat
) ctx
->Pixel
.Convolution2DEnabled
;
3761 case GL_SEPARABLE_2D
:
3762 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
3763 *params
= (GLfloat
) ctx
->Pixel
.Separable2DEnabled
;
3770 case GL_MAX_CONVOLUTION_WIDTH
:
3771 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionWidth
;
3773 case GL_MAX_CONVOLUTION_HEIGHT
:
3774 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionHeight
;
3776 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3777 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3779 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3780 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3782 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3783 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3785 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3786 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3788 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3789 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3791 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3792 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3794 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3795 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3797 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3798 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3801 /* GL_SGI_color_table (also in 1.2 imaging */
3802 case GL_COLOR_TABLE_SGI
:
3803 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3805 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3806 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3808 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3809 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3812 /* GL_EXT_secondary_color */
3813 case GL_COLOR_SUM_EXT
:
3814 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3816 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3817 FLUSH_CURRENT(ctx
, 0);
3818 params
[0] = (ctx
->Current
.SecondaryColor
[0]);
3819 params
[1] = (ctx
->Current
.SecondaryColor
[1]);
3820 params
[2] = (ctx
->Current
.SecondaryColor
[2]);
3822 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3823 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3825 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3826 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3828 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3829 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3831 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3832 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3835 /* GL_EXT_fog_coord */
3836 case GL_CURRENT_FOG_COORDINATE_EXT
:
3837 FLUSH_CURRENT(ctx
, 0);
3838 *params
= (GLfloat
) ctx
->Current
.FogCoord
;
3840 case GL_FOG_COORDINATE_ARRAY_EXT
:
3841 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3843 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3844 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3846 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3847 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3850 /* GL_EXT_texture_lod_bias */
3851 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3852 *params
= ctx
->Const
.MaxTextureLodBias
;
3855 /* GL_EXT_texture_filter_anisotropic */
3856 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3857 if (ctx
->Extensions
.EXT_texture_filter_anisotropic
) {
3858 *params
= ctx
->Const
.MaxTextureMaxAnisotropy
;
3866 /* GL_ARB_multisample */
3867 case GL_MULTISAMPLE_ARB
:
3868 if (ctx
->Extensions
.ARB_multisample
) {
3869 *params
= (GLfloat
) ctx
->Multisample
.Enabled
;
3876 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
3877 if (ctx
->Extensions
.ARB_multisample
) {
3878 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToCoverage
;
3885 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
3886 if (ctx
->Extensions
.ARB_multisample
) {
3887 *params
= (GLfloat
) ctx
->Multisample
.SampleAlphaToOne
;
3894 case GL_SAMPLE_COVERAGE_ARB
:
3895 if (ctx
->Extensions
.ARB_multisample
) {
3896 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverage
;
3903 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
3904 if (ctx
->Extensions
.ARB_multisample
) {
3905 *params
= ctx
->Multisample
.SampleCoverageValue
;
3912 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
3913 if (ctx
->Extensions
.ARB_multisample
) {
3914 *params
= (GLfloat
) ctx
->Multisample
.SampleCoverageInvert
;
3921 case GL_SAMPLE_BUFFERS_ARB
:
3922 if (ctx
->Extensions
.ARB_multisample
) {
3923 *params
= 0.0; /* XXX fix someday */
3930 case GL_SAMPLES_ARB
:
3931 if (ctx
->Extensions
.ARB_multisample
) {
3932 *params
= 0.0; /* XXX fix someday */
3940 /* GL_IBM_rasterpos_clip */
3941 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
3942 if (ctx
->Extensions
.IBM_rasterpos_clip
) {
3943 *params
= (GLfloat
) ctx
->Transform
.RasterPositionUnclipped
;
3951 /* GL_MESA_sprite_point */
3952 case GL_SPRITE_POINT_MESA
:
3953 if (ctx
->Extensions
.MESA_sprite_point
) {
3954 *params
= (GLfloat
) ctx
->Point
.SpriteMode
;
3962 /* GL_SGIS_generate_mipmap */
3963 case GL_GENERATE_MIPMAP_HINT_SGIS
:
3964 if (ctx
->Extensions
.SGIS_generate_mipmap
) {
3965 *params
= (GLfloat
) ctx
->Hint
.GenerateMipmap
;
3980 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3982 GET_CURRENT_CONTEXT(ctx
);
3984 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3985 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3986 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3991 /* We need this in order to get correct results for
3992 * GL_OCCLUSION_TEST_RESULT_HP. There might be other important cases.
3994 FLUSH_VERTICES(ctx
, 0);
3996 if (MESA_VERBOSE
& VERBOSE_API
)
3997 fprintf(stderr
, "glGetIntegerv %s\n", _mesa_lookup_enum_by_nr(pname
));
3999 if (ctx
->Driver
.GetIntegerv
4000 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
4004 case GL_ACCUM_RED_BITS
:
4005 *params
= (GLint
) ctx
->Visual
.accumRedBits
;
4007 case GL_ACCUM_GREEN_BITS
:
4008 *params
= (GLint
) ctx
->Visual
.accumGreenBits
;
4010 case GL_ACCUM_BLUE_BITS
:
4011 *params
= (GLint
) ctx
->Visual
.accumBlueBits
;
4013 case GL_ACCUM_ALPHA_BITS
:
4014 *params
= (GLint
) ctx
->Visual
.accumAlphaBits
;
4016 case GL_ACCUM_CLEAR_VALUE
:
4017 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
4018 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
4019 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
4020 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
4023 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
4026 *params
= ctx
->Visual
.alphaBits
;
4028 case GL_ALPHA_SCALE
:
4029 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
4032 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
4034 case GL_ALPHA_TEST_REF
:
4035 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
4037 case GL_ALPHA_TEST_FUNC
:
4038 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
4040 case GL_ATTRIB_STACK_DEPTH
:
4041 *params
= (GLint
) (ctx
->AttribStackDepth
);
4043 case GL_AUTO_NORMAL
:
4044 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
4046 case GL_AUX_BUFFERS
:
4047 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
4050 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
4053 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4056 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4058 case GL_BLEND_SRC_RGB_EXT
:
4059 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
4061 case GL_BLEND_DST_RGB_EXT
:
4062 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
4064 case GL_BLEND_SRC_ALPHA_EXT
:
4065 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
4067 case GL_BLEND_DST_ALPHA_EXT
:
4068 *params
= (GLint
) ctx
->Color
.BlendDstA
;
4070 case GL_BLEND_EQUATION_EXT
:
4071 *params
= (GLint
) ctx
->Color
.BlendEquation
;
4073 case GL_BLEND_COLOR_EXT
:
4074 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
4075 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
4076 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
4077 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
4080 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
4083 *params
= (GLint
) ctx
->Visual
.blueBits
;
4086 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
4088 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
4089 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
4091 case GL_CLIP_PLANE0
:
4092 case GL_CLIP_PLANE1
:
4093 case GL_CLIP_PLANE2
:
4094 case GL_CLIP_PLANE3
:
4095 case GL_CLIP_PLANE4
:
4096 case GL_CLIP_PLANE5
:
4097 i
= (GLint
) (pname
- GL_CLIP_PLANE0
);
4098 *params
= (GLint
) ctx
->Transform
.ClipEnabled
[i
];
4100 case GL_COLOR_CLEAR_VALUE
:
4101 params
[0] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[0]) );
4102 params
[1] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[1]) );
4103 params
[2] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[2]) );
4104 params
[3] = FLOAT_TO_INT( (ctx
->Color
.ClearColor
[3]) );
4106 case GL_COLOR_MATERIAL
:
4107 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
4109 case GL_COLOR_MATERIAL_FACE
:
4110 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
4112 case GL_COLOR_MATERIAL_PARAMETER
:
4113 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
4115 case GL_COLOR_WRITEMASK
:
4116 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
4117 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
4118 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
4119 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
4122 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
4124 case GL_CULL_FACE_MODE
:
4125 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
4127 case GL_CURRENT_COLOR
:
4128 FLUSH_CURRENT(ctx
, 0);
4129 params
[0] = FLOAT_TO_INT( ( ctx
->Current
.Color
[0] ) );
4130 params
[1] = FLOAT_TO_INT( ( ctx
->Current
.Color
[1] ) );
4131 params
[2] = FLOAT_TO_INT( ( ctx
->Current
.Color
[2] ) );
4132 params
[3] = FLOAT_TO_INT( ( ctx
->Current
.Color
[3] ) );
4134 case GL_CURRENT_INDEX
:
4135 FLUSH_CURRENT(ctx
, 0);
4136 *params
= (GLint
) ctx
->Current
.Index
;
4138 case GL_CURRENT_NORMAL
:
4139 FLUSH_CURRENT(ctx
, 0);
4140 params
[0] = FLOAT_TO_INT( ctx
->Current
.Normal
[0] );
4141 params
[1] = FLOAT_TO_INT( ctx
->Current
.Normal
[1] );
4142 params
[2] = FLOAT_TO_INT( ctx
->Current
.Normal
[2] );
4144 case GL_CURRENT_RASTER_COLOR
:
4145 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
4146 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
4147 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
4148 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
4150 case GL_CURRENT_RASTER_DISTANCE
:
4151 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
4153 case GL_CURRENT_RASTER_INDEX
:
4154 *params
= (GLint
) ctx
->Current
.RasterIndex
;
4156 case GL_CURRENT_RASTER_POSITION
:
4157 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
4158 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
4159 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
4160 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
4162 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4163 params
[0] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texUnit
][0];
4164 params
[1] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texUnit
][1];
4165 params
[2] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texUnit
][2];
4166 params
[3] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texUnit
][3];
4168 case GL_CURRENT_RASTER_POSITION_VALID
:
4169 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
4171 case GL_CURRENT_TEXTURE_COORDS
:
4172 FLUSH_CURRENT(ctx
, 0);
4173 params
[0] = (GLint
) ctx
->Current
.Texcoord
[texUnit
][0];
4174 params
[1] = (GLint
) ctx
->Current
.Texcoord
[texUnit
][1];
4175 params
[2] = (GLint
) ctx
->Current
.Texcoord
[texUnit
][2];
4176 params
[3] = (GLint
) ctx
->Current
.Texcoord
[texUnit
][3];
4179 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
4182 *params
= ctx
->Visual
.depthBits
;
4184 case GL_DEPTH_CLEAR_VALUE
:
4185 *params
= (GLint
) ctx
->Depth
.Clear
;
4188 *params
= (GLint
) ctx
->Depth
.Func
;
4190 case GL_DEPTH_RANGE
:
4191 params
[0] = (GLint
) ctx
->Viewport
.Near
;
4192 params
[1] = (GLint
) ctx
->Viewport
.Far
;
4194 case GL_DEPTH_SCALE
:
4195 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
4198 *params
= (GLint
) ctx
->Depth
.Test
;
4200 case GL_DEPTH_WRITEMASK
:
4201 *params
= (GLint
) ctx
->Depth
.Mask
;
4204 *params
= (GLint
) ctx
->Color
.DitherFlag
;
4206 case GL_DOUBLEBUFFER
:
4207 *params
= (GLint
) ctx
->Visual
.doubleBufferMode
;
4209 case GL_DRAW_BUFFER
:
4210 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
4213 FLUSH_CURRENT(ctx
, 0);
4214 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
4216 case GL_FEEDBACK_BUFFER_SIZE
:
4217 *params
= ctx
->Feedback
.BufferSize
;
4219 case GL_FEEDBACK_BUFFER_TYPE
:
4220 *params
= ctx
->Feedback
.Type
;
4223 *params
= (GLint
) ctx
->Fog
.Enabled
;
4226 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
4227 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
4228 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
4229 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
4231 case GL_FOG_DENSITY
:
4232 *params
= (GLint
) ctx
->Fog
.Density
;
4235 *params
= (GLint
) ctx
->Fog
.End
;
4238 *params
= (GLint
) ctx
->Hint
.Fog
;
4241 *params
= (GLint
) ctx
->Fog
.Index
;
4244 *params
= (GLint
) ctx
->Fog
.Mode
;
4247 *params
= (GLint
) ctx
->Fog
.Start
;
4250 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
4253 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
4256 *params
= (GLint
) ctx
->Visual
.greenBits
;
4258 case GL_GREEN_SCALE
:
4259 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
4262 if (ctx
->Extensions
.EXT_histogram
|| ctx
->Extensions
.ARB_imaging
) {
4263 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
4266 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
4271 *params
= (GLint
) ctx
->Visual
.indexBits
;
4273 case GL_INDEX_CLEAR_VALUE
:
4274 *params
= (GLint
) ctx
->Color
.ClearIndex
;
4277 *params
= ctx
->Visual
.rgbMode
? 0 : 1;
4279 case GL_INDEX_OFFSET
:
4280 *params
= ctx
->Pixel
.IndexOffset
;
4282 case GL_INDEX_SHIFT
:
4283 *params
= ctx
->Pixel
.IndexShift
;
4285 case GL_INDEX_WRITEMASK
:
4286 *params
= (GLint
) ctx
->Color
.IndexMask
;
4296 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
4299 *params
= (GLint
) ctx
->Light
.Enabled
;
4301 case GL_LIGHT_MODEL_AMBIENT
:
4302 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
4303 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
4304 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
4305 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
4307 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4308 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
4310 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4311 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
4313 case GL_LIGHT_MODEL_TWO_SIDE
:
4314 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
4316 case GL_LINE_SMOOTH
:
4317 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
4319 case GL_LINE_SMOOTH_HINT
:
4320 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
4322 case GL_LINE_STIPPLE
:
4323 *params
= (GLint
) ctx
->Line
.StippleFlag
;
4325 case GL_LINE_STIPPLE_PATTERN
:
4326 *params
= (GLint
) ctx
->Line
.StipplePattern
;
4328 case GL_LINE_STIPPLE_REPEAT
:
4329 *params
= (GLint
) ctx
->Line
.StippleFactor
;
4332 *params
= (GLint
) ctx
->Line
.Width
;
4334 case GL_LINE_WIDTH_GRANULARITY
:
4335 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
4337 case GL_LINE_WIDTH_RANGE
:
4338 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
4339 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
4341 case GL_ALIASED_LINE_WIDTH_RANGE
:
4342 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
4343 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
4346 *params
= (GLint
) ctx
->List
.ListBase
;
4349 *params
= (GLint
) ctx
->CurrentListNum
;
4352 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4353 : (GLint
) GL_COMPILE
;
4355 case GL_INDEX_LOGIC_OP
:
4356 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4358 case GL_COLOR_LOGIC_OP
:
4359 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4361 case GL_LOGIC_OP_MODE
:
4362 *params
= (GLint
) ctx
->Color
.LogicOp
;
4364 case GL_MAP1_COLOR_4
:
4365 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4367 case GL_MAP1_GRID_DOMAIN
:
4368 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4369 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4371 case GL_MAP1_GRID_SEGMENTS
:
4372 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4375 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4377 case GL_MAP1_NORMAL
:
4378 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4380 case GL_MAP1_TEXTURE_COORD_1
:
4381 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4383 case GL_MAP1_TEXTURE_COORD_2
:
4384 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4386 case GL_MAP1_TEXTURE_COORD_3
:
4387 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4389 case GL_MAP1_TEXTURE_COORD_4
:
4390 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4392 case GL_MAP1_VERTEX_3
:
4393 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4395 case GL_MAP1_VERTEX_4
:
4396 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4398 case GL_MAP2_COLOR_4
:
4399 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4401 case GL_MAP2_GRID_DOMAIN
:
4402 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4403 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4404 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4405 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4407 case GL_MAP2_GRID_SEGMENTS
:
4408 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4409 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4412 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4414 case GL_MAP2_NORMAL
:
4415 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4417 case GL_MAP2_TEXTURE_COORD_1
:
4418 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4420 case GL_MAP2_TEXTURE_COORD_2
:
4421 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4423 case GL_MAP2_TEXTURE_COORD_3
:
4424 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4426 case GL_MAP2_TEXTURE_COORD_4
:
4427 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4429 case GL_MAP2_VERTEX_3
:
4430 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4432 case GL_MAP2_VERTEX_4
:
4433 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4436 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4438 case GL_MAP_STENCIL
:
4439 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4441 case GL_MATRIX_MODE
:
4442 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4444 case GL_MAX_ATTRIB_STACK_DEPTH
:
4445 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4447 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4448 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4450 case GL_MAX_CLIP_PLANES
:
4451 *params
= (GLint
) ctx
->Const
.MaxClipPlanes
;
4453 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4454 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4456 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4457 *params
= (GLint
) ctx
->Const
.MaxArrayLockSize
;
4459 case GL_MAX_EVAL_ORDER
:
4460 *params
= (GLint
) MAX_EVAL_ORDER
;
4463 *params
= (GLint
) ctx
->Const
.MaxLights
;
4465 case GL_MAX_LIST_NESTING
:
4466 *params
= (GLint
) MAX_LIST_NESTING
;
4468 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4469 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4471 case GL_MAX_NAME_STACK_DEPTH
:
4472 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4474 case GL_MAX_PIXEL_MAP_TABLE
:
4475 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4477 case GL_MAX_PROJECTION_STACK_DEPTH
:
4478 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4480 case GL_MAX_TEXTURE_SIZE
:
4481 *params
= (1 << (ctx
->Const
.MaxTextureLevels
- 1));
4483 case GL_MAX_3D_TEXTURE_SIZE
:
4484 *params
= (1 << (ctx
->Const
.Max3DTextureLevels
- 1));
4486 case GL_MAX_TEXTURE_STACK_DEPTH
:
4487 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4489 case GL_MAX_VIEWPORT_DIMS
:
4490 params
[0] = (GLint
) MAX_WIDTH
;
4491 params
[1] = (GLint
) MAX_HEIGHT
;
4494 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
4496 case GL_MODELVIEW_MATRIX
:
4497 for (i
=0;i
<16;i
++) {
4498 params
[i
] = (GLint
) ctx
->ModelView
.m
[i
];
4501 case GL_MODELVIEW_STACK_DEPTH
:
4502 *params
= (GLint
) (ctx
->ModelViewStackDepth
+ 1);
4504 case GL_NAME_STACK_DEPTH
:
4505 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4508 *params
= (GLint
) ctx
->Transform
.Normalize
;
4510 case GL_PACK_ALIGNMENT
:
4511 *params
= ctx
->Pack
.Alignment
;
4513 case GL_PACK_LSB_FIRST
:
4514 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4516 case GL_PACK_ROW_LENGTH
:
4517 *params
= ctx
->Pack
.RowLength
;
4519 case GL_PACK_SKIP_PIXELS
:
4520 *params
= ctx
->Pack
.SkipPixels
;
4522 case GL_PACK_SKIP_ROWS
:
4523 *params
= ctx
->Pack
.SkipRows
;
4525 case GL_PACK_SWAP_BYTES
:
4526 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4528 case GL_PACK_SKIP_IMAGES_EXT
:
4529 *params
= ctx
->Pack
.SkipImages
;
4531 case GL_PACK_IMAGE_HEIGHT_EXT
:
4532 *params
= ctx
->Pack
.ImageHeight
;
4534 case GL_PERSPECTIVE_CORRECTION_HINT
:
4535 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4537 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4538 *params
= ctx
->Pixel
.MapAtoAsize
;
4540 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4541 *params
= ctx
->Pixel
.MapBtoBsize
;
4543 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4544 *params
= ctx
->Pixel
.MapGtoGsize
;
4546 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4547 *params
= ctx
->Pixel
.MapItoAsize
;
4549 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4550 *params
= ctx
->Pixel
.MapItoBsize
;
4552 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4553 *params
= ctx
->Pixel
.MapItoGsize
;
4555 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4556 *params
= ctx
->Pixel
.MapItoIsize
;
4558 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4559 *params
= ctx
->Pixel
.MapItoRsize
;
4561 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4562 *params
= ctx
->Pixel
.MapRtoRsize
;
4564 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4565 *params
= ctx
->Pixel
.MapStoSsize
;
4568 *params
= (GLint
) ctx
->Point
.Size
;
4570 case GL_POINT_SIZE_GRANULARITY
:
4571 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4573 case GL_POINT_SIZE_RANGE
:
4574 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4575 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4577 case GL_ALIASED_POINT_SIZE_RANGE
:
4578 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4579 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4581 case GL_POINT_SMOOTH
:
4582 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4584 case GL_POINT_SMOOTH_HINT
:
4585 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4587 case GL_POINT_SIZE_MIN_EXT
:
4588 *params
= (GLint
) (ctx
->Point
.MinSize
);
4590 case GL_POINT_SIZE_MAX_EXT
:
4591 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4593 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4594 *params
= (GLint
) (ctx
->Point
.Threshold
);
4596 case GL_DISTANCE_ATTENUATION_EXT
:
4597 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4598 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4599 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4601 case GL_POLYGON_MODE
:
4602 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4603 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4605 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4606 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4608 case GL_POLYGON_OFFSET_FACTOR
:
4609 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4611 case GL_POLYGON_OFFSET_UNITS
:
4612 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4614 case GL_POLYGON_SMOOTH
:
4615 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4617 case GL_POLYGON_SMOOTH_HINT
:
4618 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4620 case GL_POLYGON_STIPPLE
:
4621 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4623 case GL_PROJECTION_MATRIX
:
4624 for (i
=0;i
<16;i
++) {
4625 params
[i
] = (GLint
) ctx
->ProjectionMatrix
.m
[i
];
4628 case GL_PROJECTION_STACK_DEPTH
:
4629 *params
= (GLint
) (ctx
->ProjectionStackDepth
+ 1);
4631 case GL_READ_BUFFER
:
4632 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4635 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4638 *params
= (GLint
) ctx
->Visual
.redBits
;
4641 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4643 case GL_RENDER_MODE
:
4644 *params
= (GLint
) ctx
->RenderMode
;
4646 case GL_RESCALE_NORMAL
:
4647 *params
= (GLint
) ctx
->Transform
.RescaleNormals
;
4650 *params
= (GLint
) ctx
->Visual
.rgbMode
;
4652 case GL_SCISSOR_BOX
:
4653 params
[0] = (GLint
) ctx
->Scissor
.X
;
4654 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4655 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4656 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4658 case GL_SCISSOR_TEST
:
4659 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4661 case GL_SELECTION_BUFFER_SIZE
:
4662 *params
= (GLint
) ctx
->Select
.BufferSize
;
4664 case GL_SHADE_MODEL
:
4665 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4667 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4668 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4670 case GL_STENCIL_BITS
:
4671 *params
= ctx
->Visual
.stencilBits
;
4673 case GL_STENCIL_CLEAR_VALUE
:
4674 *params
= (GLint
) ctx
->Stencil
.Clear
;
4676 case GL_STENCIL_FAIL
:
4677 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
4679 case GL_STENCIL_FUNC
:
4680 *params
= (GLint
) ctx
->Stencil
.Function
;
4682 case GL_STENCIL_PASS_DEPTH_FAIL
:
4683 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
4685 case GL_STENCIL_PASS_DEPTH_PASS
:
4686 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
4688 case GL_STENCIL_REF
:
4689 *params
= (GLint
) ctx
->Stencil
.Ref
;
4691 case GL_STENCIL_TEST
:
4692 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4694 case GL_STENCIL_VALUE_MASK
:
4695 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
4697 case GL_STENCIL_WRITEMASK
:
4698 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
4701 *params
= (GLint
) ctx
->Visual
.stereoMode
;
4703 case GL_SUBPIXEL_BITS
:
4704 *params
= ctx
->Const
.SubPixelBits
;
4707 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4710 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4713 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4715 case GL_TEXTURE_BINDING_1D
:
4716 *params
= textureUnit
->Current1D
->Name
;
4718 case GL_TEXTURE_BINDING_2D
:
4719 *params
= textureUnit
->Current2D
->Name
;
4721 case GL_TEXTURE_BINDING_3D
:
4722 *params
= textureUnit
->Current3D
->Name
;
4724 case GL_TEXTURE_ENV_COLOR
:
4725 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4726 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4727 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4728 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4730 case GL_TEXTURE_ENV_MODE
:
4731 *params
= (GLint
) textureUnit
->EnvMode
;
4733 case GL_TEXTURE_GEN_S
:
4734 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4736 case GL_TEXTURE_GEN_T
:
4737 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4739 case GL_TEXTURE_GEN_R
:
4740 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4742 case GL_TEXTURE_GEN_Q
:
4743 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4745 case GL_TEXTURE_MATRIX
:
4746 for (i
=0;i
<16;i
++) {
4747 params
[i
] = (GLint
) ctx
->TextureMatrix
[texUnit
].m
[i
];
4750 case GL_TEXTURE_STACK_DEPTH
:
4751 *params
= (GLint
) (ctx
->TextureStackDepth
[texUnit
] + 1);
4753 case GL_UNPACK_ALIGNMENT
:
4754 *params
= ctx
->Unpack
.Alignment
;
4756 case GL_UNPACK_LSB_FIRST
:
4757 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4759 case GL_UNPACK_ROW_LENGTH
:
4760 *params
= ctx
->Unpack
.RowLength
;
4762 case GL_UNPACK_SKIP_PIXELS
:
4763 *params
= ctx
->Unpack
.SkipPixels
;
4765 case GL_UNPACK_SKIP_ROWS
:
4766 *params
= ctx
->Unpack
.SkipRows
;
4768 case GL_UNPACK_SWAP_BYTES
:
4769 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4771 case GL_UNPACK_SKIP_IMAGES_EXT
:
4772 *params
= ctx
->Unpack
.SkipImages
;
4774 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4775 *params
= ctx
->Unpack
.ImageHeight
;
4778 params
[0] = (GLint
) ctx
->Viewport
.X
;
4779 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4780 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4781 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4784 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4787 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4789 case GL_VERTEX_ARRAY
:
4790 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4792 case GL_VERTEX_ARRAY_SIZE
:
4793 *params
= ctx
->Array
.Vertex
.Size
;
4795 case GL_VERTEX_ARRAY_TYPE
:
4796 *params
= ctx
->Array
.Vertex
.Type
;
4798 case GL_VERTEX_ARRAY_STRIDE
:
4799 *params
= ctx
->Array
.Vertex
.Stride
;
4801 case GL_VERTEX_ARRAY_COUNT_EXT
:
4804 case GL_NORMAL_ARRAY
:
4805 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
4807 case GL_NORMAL_ARRAY_TYPE
:
4808 *params
= ctx
->Array
.Normal
.Type
;
4810 case GL_NORMAL_ARRAY_STRIDE
:
4811 *params
= ctx
->Array
.Normal
.Stride
;
4813 case GL_NORMAL_ARRAY_COUNT_EXT
:
4816 case GL_COLOR_ARRAY
:
4817 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
4819 case GL_COLOR_ARRAY_SIZE
:
4820 *params
= ctx
->Array
.Color
.Size
;
4822 case GL_COLOR_ARRAY_TYPE
:
4823 *params
= ctx
->Array
.Color
.Type
;
4825 case GL_COLOR_ARRAY_STRIDE
:
4826 *params
= ctx
->Array
.Color
.Stride
;
4828 case GL_COLOR_ARRAY_COUNT_EXT
:
4831 case GL_INDEX_ARRAY
:
4832 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
4834 case GL_INDEX_ARRAY_TYPE
:
4835 *params
= ctx
->Array
.Index
.Type
;
4837 case GL_INDEX_ARRAY_STRIDE
:
4838 *params
= ctx
->Array
.Index
.Stride
;
4840 case GL_INDEX_ARRAY_COUNT_EXT
:
4843 case GL_TEXTURE_COORD_ARRAY
:
4844 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
4846 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4847 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
4849 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4850 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
4852 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4853 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
4855 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4858 case GL_EDGE_FLAG_ARRAY
:
4859 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
4861 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4862 *params
= ctx
->Array
.EdgeFlag
.Stride
;
4864 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4868 /* GL_ARB_multitexture */
4869 case GL_MAX_TEXTURE_UNITS_ARB
:
4870 *params
= ctx
->Const
.MaxTextureUnits
;
4872 case GL_ACTIVE_TEXTURE_ARB
:
4873 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4875 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4876 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4879 /* GL_ARB_texture_cube_map */
4880 case GL_TEXTURE_CUBE_MAP_ARB
:
4881 if (ctx
->Extensions
.ARB_texture_cube_map
)
4882 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4884 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4886 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4887 if (ctx
->Extensions
.ARB_texture_cube_map
)
4888 *params
= textureUnit
->CurrentCubeMap
->Name
;
4890 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4892 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4893 if (ctx
->Extensions
.ARB_texture_cube_map
)
4894 *params
= (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
4896 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4899 /* GL_ARB_texture_compression */
4900 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4901 if (ctx
->Extensions
.ARB_texture_compression
) {
4902 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
4905 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4907 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4908 if (ctx
->Extensions
.ARB_texture_compression
) {
4909 *params
= (GLint
) ctx
->Const
.NumCompressedTextureFormats
;
4912 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4914 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4915 if (ctx
->Extensions
.ARB_texture_compression
) {
4917 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
4918 params
[i
] = (GLint
) ctx
->Const
.CompressedTextureFormats
[i
];
4921 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4924 /* GL_EXT_compiled_vertex_array */
4925 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4926 *params
= ctx
->Array
.LockFirst
;
4928 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4929 *params
= ctx
->Array
.LockCount
;
4932 /* GL_ARB_transpose_matrix */
4933 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4937 _math_transposef(tm
, ctx
->ColorMatrix
.m
);
4938 for (i
=0;i
<16;i
++) {
4939 params
[i
] = (GLint
) tm
[i
];
4943 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4947 _math_transposef(tm
, ctx
->ModelView
.m
);
4948 for (i
=0;i
<16;i
++) {
4949 params
[i
] = (GLint
) tm
[i
];
4953 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4957 _math_transposef(tm
, ctx
->ProjectionMatrix
.m
);
4958 for (i
=0;i
<16;i
++) {
4959 params
[i
] = (GLint
) tm
[i
];
4963 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4967 _math_transposef(tm
, ctx
->TextureMatrix
[texUnit
].m
);
4968 for (i
=0;i
<16;i
++) {
4969 params
[i
] = (GLint
) tm
[i
];
4974 /* GL_HP_occlusion_test */
4975 case GL_OCCLUSION_TEST_HP
:
4976 if (ctx
->Extensions
.HP_occlusion_test
) {
4977 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
4980 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4983 case GL_OCCLUSION_TEST_RESULT_HP
:
4984 if (ctx
->Extensions
.HP_occlusion_test
) {
4985 if (ctx
->Depth
.OcclusionTest
)
4986 *params
= (GLint
) ctx
->OcclusionResult
;
4988 *params
= (GLint
) ctx
->OcclusionResultSaved
;
4989 /* reset flag now */
4990 ctx
->OcclusionResult
= GL_FALSE
;
4991 ctx
->OcclusionResultSaved
= GL_FALSE
;
4994 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4998 /* GL_SGIS_pixel_texture */
4999 case GL_PIXEL_TEXTURE_SGIS
:
5000 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5003 /* GL_SGIX_pixel_texture */
5004 case GL_PIXEL_TEX_GEN_SGIX
:
5005 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
5007 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
5008 *params
= (GLint
) pixel_texgen_mode(ctx
);
5011 /* GL_SGI_color_matrix (also in 1.2 imaging) */
5012 case GL_COLOR_MATRIX_SGI
:
5013 for (i
=0;i
<16;i
++) {
5014 params
[i
] = (GLint
) ctx
->ColorMatrix
.m
[i
];
5017 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5018 *params
= ctx
->ColorStackDepth
+ 1;
5020 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5021 *params
= MAX_COLOR_STACK_DEPTH
;
5023 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5024 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
5026 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5027 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
5029 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5030 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
5032 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5033 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
5035 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5036 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
5038 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5039 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
5041 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5042 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
5044 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5045 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
5048 /* GL_EXT_convolution (also in 1.2 imaging) */
5049 case GL_CONVOLUTION_1D_EXT
:
5050 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
5051 *params
= (GLint
) ctx
->Pixel
.Convolution1DEnabled
;
5054 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5058 case GL_CONVOLUTION_2D
:
5059 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
5060 *params
= (GLint
) ctx
->Pixel
.Convolution2DEnabled
;
5063 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5067 case GL_SEPARABLE_2D
:
5068 if (ctx
->Extensions
.EXT_convolution
|| ctx
->Extensions
.ARB_imaging
) {
5069 *params
= (GLint
) ctx
->Pixel
.Separable2DEnabled
;
5072 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5076 case GL_MAX_CONVOLUTION_WIDTH
:
5077 *params
= ctx
->Const
.MaxConvolutionWidth
;
5079 case GL_MAX_CONVOLUTION_HEIGHT
:
5080 *params
= ctx
->Const
.MaxConvolutionHeight
;
5082 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5083 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
5085 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5086 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
5088 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5089 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
5091 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5092 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
5094 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5095 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
5097 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5098 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
5100 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5101 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5103 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5104 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
5107 /* GL_SGI_color_table (also in 1.2 imaging */
5108 case GL_COLOR_TABLE_SGI
:
5109 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
5111 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5112 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
5114 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5115 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
5119 /* GL_EXT_secondary_color */
5120 case GL_COLOR_SUM_EXT
:
5121 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
5123 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5124 FLUSH_CURRENT(ctx
, 0);
5125 params
[0] = FLOAT_TO_INT( (ctx
->Current
.SecondaryColor
[0]) );
5126 params
[1] = FLOAT_TO_INT( (ctx
->Current
.SecondaryColor
[1]) );
5127 params
[2] = FLOAT_TO_INT( (ctx
->Current
.SecondaryColor
[2]) );
5129 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5130 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
5132 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5133 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
5135 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5136 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5138 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5139 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
5142 /* GL_EXT_fog_coord */
5143 case GL_CURRENT_FOG_COORDINATE_EXT
:
5144 if (ctx
->Extensions
.EXT_fog_coord
) {
5145 FLUSH_CURRENT(ctx
, 0);
5146 *params
= (GLint
) ctx
->Current
.FogCoord
;
5149 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5152 case GL_FOG_COORDINATE_ARRAY_EXT
:
5153 if (ctx
->Extensions
.EXT_fog_coord
) {
5154 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
5157 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5160 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5161 if (ctx
->Extensions
.EXT_fog_coord
) {
5162 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
5165 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5168 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5169 if (ctx
->Extensions
.EXT_fog_coord
) {
5170 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
5173 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5177 /* GL_EXT_texture_lod_bias */
5178 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5179 *params
= (GLint
) ctx
->Const
.MaxTextureLodBias
;
5182 /* GL_EXT_texture_filter_anisotropic */
5183 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5184 if (ctx
->Extensions
.EXT_texture_filter_anisotropic
) {
5185 *params
= (GLint
) ctx
->Const
.MaxTextureMaxAnisotropy
;
5188 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5193 /* GL_ARB_multisample */
5194 case GL_MULTISAMPLE_ARB
:
5195 if (ctx
->Extensions
.ARB_multisample
) {
5196 *params
= (GLint
) ctx
->Multisample
.Enabled
;
5199 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5203 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5204 if (ctx
->Extensions
.ARB_multisample
) {
5205 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToCoverage
;
5208 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5212 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5213 if (ctx
->Extensions
.ARB_multisample
) {
5214 *params
= (GLint
) ctx
->Multisample
.SampleAlphaToOne
;
5217 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5221 case GL_SAMPLE_COVERAGE_ARB
:
5222 if (ctx
->Extensions
.ARB_multisample
) {
5223 *params
= (GLint
) ctx
->Multisample
.SampleCoverage
;
5226 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5230 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5231 if (ctx
->Extensions
.ARB_multisample
) {
5232 *params
= (GLint
) ctx
->Multisample
.SampleCoverageValue
;
5235 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5239 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5240 if (ctx
->Extensions
.ARB_multisample
) {
5241 *params
= (GLint
) ctx
->Multisample
.SampleCoverageInvert
;
5244 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5248 case GL_SAMPLE_BUFFERS_ARB
:
5249 if (ctx
->Extensions
.ARB_multisample
) {
5250 *params
= 0; /* XXX fix someday */
5253 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5257 case GL_SAMPLES_ARB
:
5258 if (ctx
->Extensions
.ARB_multisample
) {
5259 *params
= 0; /* XXX fix someday */
5262 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5267 /* GL_IBM_rasterpos_clip */
5268 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5269 if (ctx
->Extensions
.IBM_rasterpos_clip
) {
5270 *params
= (GLint
) ctx
->Transform
.RasterPositionUnclipped
;
5273 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5278 /* GL_MESA_sprite_point */
5279 case GL_SPRITE_POINT_MESA
:
5280 if (ctx
->Extensions
.MESA_sprite_point
) {
5281 *params
= (GLint
) ctx
->Point
.SpriteMode
;
5284 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5289 /* GL_SGIS_generate_mipmap */
5290 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5291 if (ctx
->Extensions
.SGIS_generate_mipmap
) {
5292 *params
= (GLint
) ctx
->Hint
.GenerateMipmap
;
5295 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
5301 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
5308 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
5310 GET_CURRENT_CONTEXT(ctx
);
5311 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
5312 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5317 if (MESA_VERBOSE
& VERBOSE_API
)
5318 fprintf(stderr
, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname
));
5320 if (ctx
->Driver
.GetPointerv
5321 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
5325 case GL_VERTEX_ARRAY_POINTER
:
5326 *params
= ctx
->Array
.Vertex
.Ptr
;
5328 case GL_NORMAL_ARRAY_POINTER
:
5329 *params
= ctx
->Array
.Normal
.Ptr
;
5331 case GL_COLOR_ARRAY_POINTER
:
5332 *params
= ctx
->Array
.Color
.Ptr
;
5334 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
5335 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
5337 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
5338 *params
= ctx
->Array
.FogCoord
.Ptr
;
5340 case GL_INDEX_ARRAY_POINTER
:
5341 *params
= ctx
->Array
.Index
.Ptr
;
5343 case GL_TEXTURE_COORD_ARRAY_POINTER
:
5344 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
5346 case GL_EDGE_FLAG_ARRAY_POINTER
:
5347 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
5349 case GL_FEEDBACK_BUFFER_POINTER
:
5350 *params
= ctx
->Feedback
.Buffer
;
5352 case GL_SELECTION_BUFFER_POINTER
:
5353 *params
= ctx
->Select
.Buffer
;
5356 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
5364 _mesa_GetString( GLenum name
)
5366 GET_CURRENT_CONTEXT(ctx
);
5367 static const char *vendor
= "Brian Paul";
5368 static const char *renderer
= "Mesa";
5369 static const char *version_1_2
= "1.2 Mesa 4.1";
5370 static const char *version_1_3
= "1.3 Mesa 4.1";
5372 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5374 /* this is a required driver function */
5375 assert(ctx
->Driver
.GetString
);
5377 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
5383 return (const GLubyte
*) vendor
;
5385 return (const GLubyte
*) renderer
;
5387 if (ctx
->Extensions
.ARB_multitexture
&&
5388 ctx
->Extensions
.ARB_multisample
&&
5389 ctx
->Extensions
.ARB_texture_border_clamp
&&
5390 ctx
->Extensions
.ARB_texture_compression
&&
5391 ctx
->Extensions
.EXT_texture_env_add
&&
5392 ctx
->Extensions
.ARB_texture_env_combine
&&
5393 ctx
->Extensions
.ARB_texture_env_dot3
)
5394 return (const GLubyte
*) version_1_3
;
5396 return (const GLubyte
*) version_1_2
;
5398 return (const GLubyte
*) _mesa_extensions_get_string(ctx
);
5400 _mesa_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
5401 return (const GLubyte
*) 0;
5408 * Execute a glGetError command
5411 _mesa_GetError( void )
5413 GET_CURRENT_CONTEXT(ctx
);
5414 GLenum e
= ctx
->ErrorValue
;
5415 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx
, 0);
5417 if (MESA_VERBOSE
& VERBOSE_API
)
5418 fprintf(stderr
, "glGetError <-- %s\n", _mesa_lookup_enum_by_nr(e
));
5420 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;