1 /* $Id: get.c,v 1.40 2000/11/15 16:38:40 brianp Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36 #include "extensions.h"
47 #define FLOAT_TO_BOOL(X) ( (X)==0.0F ? GL_FALSE : GL_TRUE )
48 #define INT_TO_BOOL(I) ( (I)==0 ? GL_FALSE : GL_TRUE )
49 #define ENUM_TO_BOOL(E) ( (E)==0 ? GL_FALSE : GL_TRUE )
52 /* Needed for an Amiga compiler */
53 #define ENUM_TO_FLOAT(X) ((GLfloat)(GLint)(X))
54 #define ENUM_TO_DOUBLE(X) ((GLdouble)(GLint)(X))
56 /* all other compilers */
57 #define ENUM_TO_FLOAT(X) ((GLfloat)(X))
58 #define ENUM_TO_DOUBLE(X) ((GLdouble)(X))
64 pixel_texgen_mode(const GLcontext
*ctx
)
66 if (ctx
->Pixel
.FragmentRgbSource
== GL_CURRENT_RASTER_POSITION
) {
67 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
75 if (ctx
->Pixel
.FragmentAlphaSource
== GL_CURRENT_RASTER_POSITION
) {
87 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
89 GET_CURRENT_CONTEXT(ctx
);
91 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
92 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
93 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
95 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetBooleanv");
100 if (MESA_VERBOSE
& VERBOSE_API
)
101 fprintf(stderr
, "glGetBooleanv %s\n", gl_lookup_enum_by_nr(pname
));
103 if (ctx
->Driver
.GetBooleanv
104 && (*ctx
->Driver
.GetBooleanv
)(ctx
, pname
, params
))
108 case GL_ACCUM_RED_BITS
:
109 *params
= INT_TO_BOOL(ctx
->Visual
.AccumRedBits
);
111 case GL_ACCUM_GREEN_BITS
:
112 *params
= INT_TO_BOOL(ctx
->Visual
.AccumGreenBits
);
114 case GL_ACCUM_BLUE_BITS
:
115 *params
= INT_TO_BOOL(ctx
->Visual
.AccumBlueBits
);
117 case GL_ACCUM_ALPHA_BITS
:
118 *params
= INT_TO_BOOL(ctx
->Visual
.AccumAlphaBits
);
120 case GL_ACCUM_CLEAR_VALUE
:
121 params
[0] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[0]);
122 params
[1] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[1]);
123 params
[2] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[2]);
124 params
[3] = FLOAT_TO_BOOL(ctx
->Accum
.ClearColor
[3]);
127 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaBias
);
130 *params
= INT_TO_BOOL(ctx
->Visual
.AlphaBits
);
133 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.AlphaScale
);
136 *params
= ctx
->Color
.AlphaEnabled
;
138 case GL_ALPHA_TEST_FUNC
:
139 *params
= ENUM_TO_BOOL(ctx
->Color
.AlphaFunc
);
141 case GL_ALPHA_TEST_REF
:
142 *params
= FLOAT_TO_BOOL((GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
144 case GL_ATTRIB_STACK_DEPTH
:
145 *params
= INT_TO_BOOL(ctx
->AttribStackDepth
);
148 *params
= ctx
->Eval
.AutoNormal
;
151 *params
= (ctx
->Const
.NumAuxBuffers
) ? GL_TRUE
: GL_FALSE
;
154 *params
= ctx
->Color
.BlendEnabled
;
157 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
160 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
162 case GL_BLEND_SRC_RGB_EXT
:
163 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcRGB
);
165 case GL_BLEND_DST_RGB_EXT
:
166 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstRGB
);
168 case GL_BLEND_SRC_ALPHA_EXT
:
169 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendSrcA
);
171 case GL_BLEND_DST_ALPHA_EXT
:
172 *params
= ENUM_TO_BOOL(ctx
->Color
.BlendDstA
);
174 case GL_BLEND_EQUATION_EXT
:
175 *params
= ENUM_TO_BOOL( ctx
->Color
.BlendEquation
);
177 case GL_BLEND_COLOR_EXT
:
178 params
[0] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[0] );
179 params
[1] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[1] );
180 params
[2] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[2] );
181 params
[3] = FLOAT_TO_BOOL( ctx
->Color
.BlendColor
[3] );
184 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueBias
);
187 *params
= INT_TO_BOOL( ctx
->Visual
.BlueBits
);
190 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.BlueScale
);
192 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
193 *params
= INT_TO_BOOL(ctx
->ClientAttribStackDepth
);
201 *params
= ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
203 case GL_COLOR_CLEAR_VALUE
:
204 params
[0] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[0]);
205 params
[1] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[1]);
206 params
[2] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[2]);
207 params
[3] = FLOAT_TO_BOOL(ctx
->Color
.ClearColor
[3]);
209 case GL_COLOR_MATERIAL
:
210 *params
= ctx
->Light
.ColorMaterialEnabled
;
212 case GL_COLOR_MATERIAL_FACE
:
213 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialFace
);
215 case GL_COLOR_MATERIAL_PARAMETER
:
216 *params
= ENUM_TO_BOOL(ctx
->Light
.ColorMaterialMode
);
218 case GL_COLOR_WRITEMASK
:
219 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? GL_TRUE
: GL_FALSE
;
220 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? GL_TRUE
: GL_FALSE
;
221 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? GL_TRUE
: GL_FALSE
;
222 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? GL_TRUE
: GL_FALSE
;
225 *params
= ctx
->Polygon
.CullFlag
;
227 case GL_CULL_FACE_MODE
:
228 *params
= ENUM_TO_BOOL(ctx
->Polygon
.CullFaceMode
);
230 case GL_CURRENT_COLOR
:
231 params
[0] = INT_TO_BOOL(ctx
->Current
.Color
[0]);
232 params
[1] = INT_TO_BOOL(ctx
->Current
.Color
[1]);
233 params
[2] = INT_TO_BOOL(ctx
->Current
.Color
[2]);
234 params
[3] = INT_TO_BOOL(ctx
->Current
.Color
[3]);
236 case GL_CURRENT_INDEX
:
237 *params
= INT_TO_BOOL(ctx
->Current
.Index
);
239 case GL_CURRENT_NORMAL
:
240 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[0]);
241 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[1]);
242 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Normal
[2]);
244 case GL_CURRENT_RASTER_COLOR
:
245 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[0]);
246 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[1]);
247 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[2]);
248 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterColor
[3]);
250 case GL_CURRENT_RASTER_DISTANCE
:
251 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterDistance
);
253 case GL_CURRENT_RASTER_INDEX
:
254 *params
= FLOAT_TO_BOOL(ctx
->Current
.RasterIndex
);
256 case GL_CURRENT_RASTER_POSITION
:
257 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[0]);
258 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[1]);
259 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[2]);
260 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterPos
[3]);
262 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
263 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0]);
264 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1]);
265 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2]);
266 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3]);
268 case GL_CURRENT_RASTER_POSITION_VALID
:
269 *params
= ctx
->Current
.RasterPosValid
;
271 case GL_CURRENT_TEXTURE_COORDS
:
272 params
[0] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][0]);
273 params
[1] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][1]);
274 params
[2] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][2]);
275 params
[3] = FLOAT_TO_BOOL(ctx
->Current
.Texcoord
[texTransformUnit
][3]);
278 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthBias
);
281 *params
= INT_TO_BOOL(ctx
->Visual
.DepthBits
);
283 case GL_DEPTH_CLEAR_VALUE
:
284 *params
= FLOAT_TO_BOOL(ctx
->Depth
.Clear
);
287 *params
= ENUM_TO_BOOL(ctx
->Depth
.Func
);
290 params
[0] = FLOAT_TO_BOOL(ctx
->Viewport
.Near
);
291 params
[1] = FLOAT_TO_BOOL(ctx
->Viewport
.Far
);
294 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.DepthScale
);
297 *params
= ctx
->Depth
.Test
;
299 case GL_DEPTH_WRITEMASK
:
300 *params
= ctx
->Depth
.Mask
;
303 *params
= ctx
->Color
.DitherFlag
;
305 case GL_DOUBLEBUFFER
:
306 *params
= ctx
->Visual
.DBflag
;
309 *params
= ENUM_TO_BOOL(ctx
->Color
.DrawBuffer
);
312 *params
= ctx
->Current
.EdgeFlag
;
314 case GL_FEEDBACK_BUFFER_SIZE
:
315 *params
= INT_TO_BOOL(ctx
->Feedback
.BufferSize
);
317 case GL_FEEDBACK_BUFFER_TYPE
:
318 *params
= INT_TO_BOOL(ctx
->Feedback
.Type
);
321 *params
= ctx
->Fog
.Enabled
;
324 params
[0] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[0]);
325 params
[1] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[1]);
326 params
[2] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[2]);
327 params
[3] = FLOAT_TO_BOOL(ctx
->Fog
.Color
[3]);
330 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Density
);
333 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
336 *params
= ENUM_TO_BOOL(ctx
->Hint
.Fog
);
339 *params
= FLOAT_TO_BOOL(ctx
->Fog
.Index
);
342 *params
= ENUM_TO_BOOL(ctx
->Fog
.Mode
);
345 *params
= FLOAT_TO_BOOL(ctx
->Fog
.End
);
348 *params
= ENUM_TO_BOOL(ctx
->Polygon
.FrontFace
);
351 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenBias
);
354 *params
= INT_TO_BOOL( ctx
->Visual
.GreenBits
);
357 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.GreenScale
);
360 if (ctx
->Extensions
.EXT_histogram
) {
361 *params
= ctx
->Pixel
.HistogramEnabled
;
364 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
369 *params
= INT_TO_BOOL( ctx
->Visual
.IndexBits
);
371 case GL_INDEX_CLEAR_VALUE
:
372 *params
= INT_TO_BOOL(ctx
->Color
.ClearIndex
);
375 *params
= ctx
->Visual
.RGBAflag
? GL_FALSE
: GL_TRUE
;
377 case GL_INDEX_OFFSET
:
378 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexOffset
);
381 *params
= INT_TO_BOOL(ctx
->Pixel
.IndexShift
);
383 case GL_INDEX_WRITEMASK
:
384 *params
= INT_TO_BOOL(ctx
->Color
.IndexMask
);
394 *params
= ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
397 *params
= ctx
->Light
.Enabled
;
399 case GL_LIGHT_MODEL_AMBIENT
:
400 params
[0] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[0]);
401 params
[1] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[1]);
402 params
[2] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[2]);
403 params
[3] = FLOAT_TO_BOOL(ctx
->Light
.Model
.Ambient
[3]);
405 case GL_LIGHT_MODEL_COLOR_CONTROL
:
406 params
[0] = ENUM_TO_BOOL(ctx
->Light
.Model
.ColorControl
);
408 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
409 *params
= ctx
->Light
.Model
.LocalViewer
;
411 case GL_LIGHT_MODEL_TWO_SIDE
:
412 *params
= ctx
->Light
.Model
.TwoSide
;
415 *params
= ctx
->Line
.SmoothFlag
;
417 case GL_LINE_SMOOTH_HINT
:
418 *params
= ENUM_TO_BOOL(ctx
->Hint
.LineSmooth
);
420 case GL_LINE_STIPPLE
:
421 *params
= ctx
->Line
.StippleFlag
;
423 case GL_LINE_STIPPLE_PATTERN
:
424 *params
= INT_TO_BOOL(ctx
->Line
.StipplePattern
);
426 case GL_LINE_STIPPLE_REPEAT
:
427 *params
= INT_TO_BOOL(ctx
->Line
.StippleFactor
);
430 *params
= FLOAT_TO_BOOL(ctx
->Line
.Width
);
432 case GL_LINE_WIDTH_GRANULARITY
:
433 *params
= FLOAT_TO_BOOL(ctx
->Const
.LineWidthGranularity
);
435 case GL_LINE_WIDTH_RANGE
:
436 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidthAA
);
437 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidthAA
);
439 case GL_ALIASED_LINE_WIDTH_RANGE
:
440 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinLineWidth
);
441 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxLineWidth
);
444 *params
= INT_TO_BOOL(ctx
->List
.ListBase
);
447 *params
= INT_TO_BOOL( ctx
->CurrentListNum
);
450 *params
= ENUM_TO_BOOL( ctx
->ExecuteFlag
451 ? GL_COMPILE_AND_EXECUTE
: GL_COMPILE
);
453 case GL_INDEX_LOGIC_OP
:
454 *params
= ctx
->Color
.IndexLogicOpEnabled
;
456 case GL_COLOR_LOGIC_OP
:
457 *params
= ctx
->Color
.ColorLogicOpEnabled
;
459 case GL_LOGIC_OP_MODE
:
460 *params
= ENUM_TO_BOOL(ctx
->Color
.LogicOp
);
462 case GL_MAP1_COLOR_4
:
463 *params
= ctx
->Eval
.Map1Color4
;
465 case GL_MAP1_GRID_DOMAIN
:
466 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u1
);
467 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid1u2
);
469 case GL_MAP1_GRID_SEGMENTS
:
470 *params
= INT_TO_BOOL(ctx
->Eval
.MapGrid1un
);
473 *params
= ctx
->Eval
.Map1Index
;
476 *params
= ctx
->Eval
.Map1Normal
;
478 case GL_MAP1_TEXTURE_COORD_1
:
479 *params
= ctx
->Eval
.Map1TextureCoord1
;
481 case GL_MAP1_TEXTURE_COORD_2
:
482 *params
= ctx
->Eval
.Map1TextureCoord2
;
484 case GL_MAP1_TEXTURE_COORD_3
:
485 *params
= ctx
->Eval
.Map1TextureCoord3
;
487 case GL_MAP1_TEXTURE_COORD_4
:
488 *params
= ctx
->Eval
.Map1TextureCoord4
;
490 case GL_MAP1_VERTEX_3
:
491 *params
= ctx
->Eval
.Map1Vertex3
;
493 case GL_MAP1_VERTEX_4
:
494 *params
= ctx
->Eval
.Map1Vertex4
;
496 case GL_MAP2_COLOR_4
:
497 *params
= ctx
->Eval
.Map2Color4
;
499 case GL_MAP2_GRID_DOMAIN
:
500 params
[0] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u1
);
501 params
[1] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2u2
);
502 params
[2] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v1
);
503 params
[3] = FLOAT_TO_BOOL(ctx
->Eval
.MapGrid2v2
);
505 case GL_MAP2_GRID_SEGMENTS
:
506 params
[0] = INT_TO_BOOL(ctx
->Eval
.MapGrid2un
);
507 params
[1] = INT_TO_BOOL(ctx
->Eval
.MapGrid2vn
);
510 *params
= ctx
->Eval
.Map2Index
;
513 *params
= ctx
->Eval
.Map2Normal
;
515 case GL_MAP2_TEXTURE_COORD_1
:
516 *params
= ctx
->Eval
.Map2TextureCoord1
;
518 case GL_MAP2_TEXTURE_COORD_2
:
519 *params
= ctx
->Eval
.Map2TextureCoord2
;
521 case GL_MAP2_TEXTURE_COORD_3
:
522 *params
= ctx
->Eval
.Map2TextureCoord3
;
524 case GL_MAP2_TEXTURE_COORD_4
:
525 *params
= ctx
->Eval
.Map2TextureCoord4
;
527 case GL_MAP2_VERTEX_3
:
528 *params
= ctx
->Eval
.Map2Vertex3
;
530 case GL_MAP2_VERTEX_4
:
531 *params
= ctx
->Eval
.Map2Vertex4
;
534 *params
= ctx
->Pixel
.MapColorFlag
;
537 *params
= ctx
->Pixel
.MapStencilFlag
;
540 *params
= ENUM_TO_BOOL( ctx
->Transform
.MatrixMode
);
542 case GL_MAX_ATTRIB_STACK_DEPTH
:
543 *params
= INT_TO_BOOL(MAX_ATTRIB_STACK_DEPTH
);
545 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
546 *params
= INT_TO_BOOL( MAX_CLIENT_ATTRIB_STACK_DEPTH
);
548 case GL_MAX_CLIP_PLANES
:
549 *params
= INT_TO_BOOL(MAX_CLIP_PLANES
);
551 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
552 *params
= INT_TO_BOOL(VB_MAX
);
554 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
555 *params
= INT_TO_BOOL(VB_MAX
);
557 case GL_MAX_EVAL_ORDER
:
558 *params
= INT_TO_BOOL(MAX_EVAL_ORDER
);
561 *params
= INT_TO_BOOL(MAX_LIGHTS
);
563 case GL_MAX_LIST_NESTING
:
564 *params
= INT_TO_BOOL(MAX_LIST_NESTING
);
566 case GL_MAX_MODELVIEW_STACK_DEPTH
:
567 *params
= INT_TO_BOOL(MAX_MODELVIEW_STACK_DEPTH
);
569 case GL_MAX_NAME_STACK_DEPTH
:
570 *params
= INT_TO_BOOL(MAX_NAME_STACK_DEPTH
);
572 case GL_MAX_PIXEL_MAP_TABLE
:
573 *params
= INT_TO_BOOL(MAX_PIXEL_MAP_TABLE
);
575 case GL_MAX_PROJECTION_STACK_DEPTH
:
576 *params
= INT_TO_BOOL(MAX_PROJECTION_STACK_DEPTH
);
578 case GL_MAX_TEXTURE_SIZE
:
579 case GL_MAX_3D_TEXTURE_SIZE
:
580 *params
= INT_TO_BOOL(ctx
->Const
.MaxTextureSize
);
582 case GL_MAX_TEXTURE_STACK_DEPTH
:
583 *params
= INT_TO_BOOL(MAX_TEXTURE_STACK_DEPTH
);
585 case GL_MAX_VIEWPORT_DIMS
:
586 params
[0] = INT_TO_BOOL(MAX_WIDTH
);
587 params
[1] = INT_TO_BOOL(MAX_HEIGHT
);
590 *params
= ctx
->Pixel
.MinMaxEnabled
;
592 case GL_MODELVIEW_MATRIX
:
594 params
[i
] = FLOAT_TO_BOOL(ctx
->ModelView
.m
[i
]);
597 case GL_MODELVIEW_STACK_DEPTH
:
598 *params
= INT_TO_BOOL(ctx
->ModelViewStackDepth
+ 1);
600 case GL_NAME_STACK_DEPTH
:
601 *params
= INT_TO_BOOL(ctx
->Select
.NameStackDepth
);
604 *params
= ctx
->Transform
.Normalize
;
606 case GL_PACK_ALIGNMENT
:
607 *params
= INT_TO_BOOL(ctx
->Pack
.Alignment
);
609 case GL_PACK_LSB_FIRST
:
610 *params
= ctx
->Pack
.LsbFirst
;
612 case GL_PACK_ROW_LENGTH
:
613 *params
= INT_TO_BOOL(ctx
->Pack
.RowLength
);
615 case GL_PACK_SKIP_PIXELS
:
616 *params
= INT_TO_BOOL(ctx
->Pack
.SkipPixels
);
618 case GL_PACK_SKIP_ROWS
:
619 *params
= INT_TO_BOOL(ctx
->Pack
.SkipRows
);
621 case GL_PACK_SWAP_BYTES
:
622 *params
= ctx
->Pack
.SwapBytes
;
624 case GL_PACK_SKIP_IMAGES_EXT
:
625 *params
= ctx
->Pack
.SkipImages
;
627 case GL_PACK_IMAGE_HEIGHT_EXT
:
628 *params
= ctx
->Pack
.ImageHeight
;
630 case GL_PERSPECTIVE_CORRECTION_HINT
:
631 *params
= ENUM_TO_BOOL(ctx
->Hint
.PerspectiveCorrection
);
633 case GL_PIXEL_MAP_A_TO_A_SIZE
:
634 *params
= INT_TO_BOOL(ctx
->Pixel
.MapAtoAsize
);
636 case GL_PIXEL_MAP_B_TO_B_SIZE
:
637 *params
= INT_TO_BOOL(ctx
->Pixel
.MapBtoBsize
);
639 case GL_PIXEL_MAP_G_TO_G_SIZE
:
640 *params
= INT_TO_BOOL(ctx
->Pixel
.MapGtoGsize
);
642 case GL_PIXEL_MAP_I_TO_A_SIZE
:
643 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoAsize
);
645 case GL_PIXEL_MAP_I_TO_B_SIZE
:
646 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoBsize
);
648 case GL_PIXEL_MAP_I_TO_G_SIZE
:
649 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoGsize
);
651 case GL_PIXEL_MAP_I_TO_I_SIZE
:
652 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoIsize
);
654 case GL_PIXEL_MAP_I_TO_R_SIZE
:
655 *params
= INT_TO_BOOL(ctx
->Pixel
.MapItoRsize
);
657 case GL_PIXEL_MAP_R_TO_R_SIZE
:
658 *params
= INT_TO_BOOL(ctx
->Pixel
.MapRtoRsize
);
660 case GL_PIXEL_MAP_S_TO_S_SIZE
:
661 *params
= INT_TO_BOOL(ctx
->Pixel
.MapStoSsize
);
664 *params
= FLOAT_TO_BOOL(ctx
->Point
.Size
);
666 case GL_POINT_SIZE_GRANULARITY
:
667 *params
= FLOAT_TO_BOOL(ctx
->Const
.PointSizeGranularity
);
669 case GL_POINT_SIZE_RANGE
:
670 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSizeAA
);
671 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSizeAA
);
673 case GL_ALIASED_POINT_SIZE_RANGE
:
674 params
[0] = FLOAT_TO_BOOL(ctx
->Const
.MinPointSize
);
675 params
[1] = FLOAT_TO_BOOL(ctx
->Const
.MaxPointSize
);
677 case GL_POINT_SMOOTH
:
678 *params
= ctx
->Point
.SmoothFlag
;
680 case GL_POINT_SMOOTH_HINT
:
681 *params
= ENUM_TO_BOOL(ctx
->Hint
.PointSmooth
);
683 case GL_POINT_SIZE_MIN_EXT
:
684 *params
= FLOAT_TO_BOOL(ctx
->Point
.MinSize
);
686 case GL_POINT_SIZE_MAX_EXT
:
687 *params
= FLOAT_TO_BOOL(ctx
->Point
.MaxSize
);
689 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
690 *params
= FLOAT_TO_BOOL(ctx
->Point
.Threshold
);
692 case GL_DISTANCE_ATTENUATION_EXT
:
693 params
[0] = FLOAT_TO_BOOL(ctx
->Point
.Params
[0]);
694 params
[1] = FLOAT_TO_BOOL(ctx
->Point
.Params
[1]);
695 params
[2] = FLOAT_TO_BOOL(ctx
->Point
.Params
[2]);
697 case GL_POLYGON_MODE
:
698 params
[0] = ENUM_TO_BOOL(ctx
->Polygon
.FrontMode
);
699 params
[1] = ENUM_TO_BOOL(ctx
->Polygon
.BackMode
);
701 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
702 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
704 case GL_POLYGON_OFFSET_FACTOR
:
705 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetFactor
);
707 case GL_POLYGON_OFFSET_UNITS
:
708 *params
= FLOAT_TO_BOOL( ctx
->Polygon
.OffsetUnits
);
710 case GL_POLYGON_SMOOTH
:
711 *params
= ctx
->Polygon
.SmoothFlag
;
713 case GL_POLYGON_SMOOTH_HINT
:
714 *params
= ENUM_TO_BOOL(ctx
->Hint
.PolygonSmooth
);
716 case GL_POLYGON_STIPPLE
:
717 *params
= ctx
->Polygon
.StippleFlag
;
719 case GL_PROJECTION_MATRIX
:
721 params
[i
] = FLOAT_TO_BOOL(ctx
->ProjectionMatrix
.m
[i
]);
724 case GL_PROJECTION_STACK_DEPTH
:
725 *params
= INT_TO_BOOL(ctx
->ProjectionStackDepth
+ 1);
728 *params
= ENUM_TO_BOOL(ctx
->Pixel
.ReadBuffer
);
731 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedBias
);
734 *params
= INT_TO_BOOL( ctx
->Visual
.RedBits
);
737 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.RedScale
);
740 *params
= ENUM_TO_BOOL(ctx
->RenderMode
);
743 *params
= ctx
->Visual
.RGBAflag
;
746 params
[0] = INT_TO_BOOL(ctx
->Scissor
.X
);
747 params
[1] = INT_TO_BOOL(ctx
->Scissor
.Y
);
748 params
[2] = INT_TO_BOOL(ctx
->Scissor
.Width
);
749 params
[3] = INT_TO_BOOL(ctx
->Scissor
.Height
);
751 case GL_SCISSOR_TEST
:
752 *params
= ctx
->Scissor
.Enabled
;
754 case GL_SELECTION_BUFFER_SIZE
:
755 *params
= INT_TO_BOOL(ctx
->Select
.BufferSize
);
758 *params
= ENUM_TO_BOOL(ctx
->Light
.ShadeModel
);
760 case GL_SHARED_TEXTURE_PALETTE_EXT
:
761 *params
= ctx
->Texture
.SharedPalette
;
763 case GL_STENCIL_BITS
:
764 *params
= INT_TO_BOOL(ctx
->Visual
.StencilBits
);
766 case GL_STENCIL_CLEAR_VALUE
:
767 *params
= INT_TO_BOOL(ctx
->Stencil
.Clear
);
769 case GL_STENCIL_FAIL
:
770 *params
= ENUM_TO_BOOL(ctx
->Stencil
.FailFunc
);
772 case GL_STENCIL_FUNC
:
773 *params
= ENUM_TO_BOOL(ctx
->Stencil
.Function
);
775 case GL_STENCIL_PASS_DEPTH_FAIL
:
776 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZFailFunc
);
778 case GL_STENCIL_PASS_DEPTH_PASS
:
779 *params
= ENUM_TO_BOOL(ctx
->Stencil
.ZPassFunc
);
782 *params
= INT_TO_BOOL(ctx
->Stencil
.Ref
);
784 case GL_STENCIL_TEST
:
785 *params
= ctx
->Stencil
.Enabled
;
787 case GL_STENCIL_VALUE_MASK
:
788 *params
= INT_TO_BOOL(ctx
->Stencil
.ValueMask
);
790 case GL_STENCIL_WRITEMASK
:
791 *params
= INT_TO_BOOL(ctx
->Stencil
.WriteMask
);
794 *params
= ctx
->Visual
.StereoFlag
;
796 case GL_SUBPIXEL_BITS
:
797 *params
= INT_TO_BOOL(ctx
->Const
.SubPixelBits
);
800 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
);
803 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
);
806 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
);
808 case GL_TEXTURE_BINDING_1D
:
809 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[1]->Name
);
811 case GL_TEXTURE_BINDING_2D
:
812 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[2]->Name
);
814 case GL_TEXTURE_BINDING_3D
:
815 *params
= INT_TO_BOOL(textureUnit
->CurrentD
[3]->Name
);
817 case GL_TEXTURE_ENV_COLOR
:
819 params
[0] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[0]);
820 params
[1] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[1]);
821 params
[2] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[2]);
822 params
[3] = FLOAT_TO_BOOL(textureUnit
->EnvColor
[3]);
825 case GL_TEXTURE_ENV_MODE
:
826 *params
= ENUM_TO_BOOL(textureUnit
->EnvMode
);
828 case GL_TEXTURE_GEN_S
:
829 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? GL_TRUE
: GL_FALSE
;
831 case GL_TEXTURE_GEN_T
:
832 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? GL_TRUE
: GL_FALSE
;
834 case GL_TEXTURE_GEN_R
:
835 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? GL_TRUE
: GL_FALSE
;
837 case GL_TEXTURE_GEN_Q
:
838 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? GL_TRUE
: GL_FALSE
;
840 case GL_TEXTURE_MATRIX
:
843 FLOAT_TO_BOOL(ctx
->TextureMatrix
[texTransformUnit
].m
[i
]);
846 case GL_TEXTURE_STACK_DEPTH
:
847 *params
= INT_TO_BOOL(ctx
->TextureStackDepth
[texTransformUnit
] + 1);
849 case GL_UNPACK_ALIGNMENT
:
850 *params
= INT_TO_BOOL(ctx
->Unpack
.Alignment
);
852 case GL_UNPACK_LSB_FIRST
:
853 *params
= ctx
->Unpack
.LsbFirst
;
855 case GL_UNPACK_ROW_LENGTH
:
856 *params
= INT_TO_BOOL(ctx
->Unpack
.RowLength
);
858 case GL_UNPACK_SKIP_PIXELS
:
859 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipPixels
);
861 case GL_UNPACK_SKIP_ROWS
:
862 *params
= INT_TO_BOOL(ctx
->Unpack
.SkipRows
);
864 case GL_UNPACK_SWAP_BYTES
:
865 *params
= ctx
->Unpack
.SwapBytes
;
867 case GL_UNPACK_SKIP_IMAGES_EXT
:
868 *params
= ctx
->Unpack
.SkipImages
;
870 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
871 *params
= ctx
->Unpack
.ImageHeight
;
874 params
[0] = INT_TO_BOOL(ctx
->Viewport
.X
);
875 params
[1] = INT_TO_BOOL(ctx
->Viewport
.Y
);
876 params
[2] = INT_TO_BOOL(ctx
->Viewport
.Width
);
877 params
[3] = INT_TO_BOOL(ctx
->Viewport
.Height
);
880 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomX
);
883 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.ZoomY
);
885 case GL_VERTEX_ARRAY
:
886 *params
= ctx
->Array
.Vertex
.Enabled
;
888 case GL_VERTEX_ARRAY_SIZE
:
889 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Size
);
891 case GL_VERTEX_ARRAY_TYPE
:
892 *params
= ENUM_TO_BOOL(ctx
->Array
.Vertex
.Type
);
894 case GL_VERTEX_ARRAY_STRIDE
:
895 *params
= INT_TO_BOOL(ctx
->Array
.Vertex
.Stride
);
897 case GL_VERTEX_ARRAY_COUNT_EXT
:
898 *params
= INT_TO_BOOL(0);
900 case GL_NORMAL_ARRAY
:
901 *params
= ctx
->Array
.Normal
.Enabled
;
903 case GL_NORMAL_ARRAY_TYPE
:
904 *params
= ENUM_TO_BOOL(ctx
->Array
.Normal
.Type
);
906 case GL_NORMAL_ARRAY_STRIDE
:
907 *params
= INT_TO_BOOL(ctx
->Array
.Normal
.Stride
);
909 case GL_NORMAL_ARRAY_COUNT_EXT
:
910 *params
= INT_TO_BOOL(0);
913 *params
= ctx
->Array
.Color
.Enabled
;
915 case GL_COLOR_ARRAY_SIZE
:
916 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Size
);
918 case GL_COLOR_ARRAY_TYPE
:
919 *params
= ENUM_TO_BOOL(ctx
->Array
.Color
.Type
);
921 case GL_COLOR_ARRAY_STRIDE
:
922 *params
= INT_TO_BOOL(ctx
->Array
.Color
.Stride
);
924 case GL_COLOR_ARRAY_COUNT_EXT
:
925 *params
= INT_TO_BOOL(0);
928 *params
= ctx
->Array
.Index
.Enabled
;
930 case GL_INDEX_ARRAY_TYPE
:
931 *params
= ENUM_TO_BOOL(ctx
->Array
.Index
.Type
);
933 case GL_INDEX_ARRAY_STRIDE
:
934 *params
= INT_TO_BOOL(ctx
->Array
.Index
.Stride
);
936 case GL_INDEX_ARRAY_COUNT_EXT
:
937 *params
= INT_TO_BOOL(0);
939 case GL_TEXTURE_COORD_ARRAY
:
940 *params
= ctx
->Array
.TexCoord
[texUnit
].Enabled
;
942 case GL_TEXTURE_COORD_ARRAY_SIZE
:
943 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Size
);
945 case GL_TEXTURE_COORD_ARRAY_TYPE
:
946 *params
= ENUM_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Type
);
948 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
949 *params
= INT_TO_BOOL(ctx
->Array
.TexCoord
[texUnit
].Stride
);
951 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
952 *params
= INT_TO_BOOL(0);
954 case GL_EDGE_FLAG_ARRAY
:
955 *params
= ctx
->Array
.EdgeFlag
.Enabled
;
957 case GL_EDGE_FLAG_ARRAY_STRIDE
:
958 *params
= INT_TO_BOOL(ctx
->Array
.EdgeFlag
.Stride
);
961 /* GL_ARB_multitexture */
962 case GL_MAX_TEXTURE_UNITS_ARB
:
963 *params
= ctx
->Const
.MaxTextureUnits
;
965 case GL_ACTIVE_TEXTURE_ARB
:
966 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
968 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
969 *params
= INT_TO_BOOL(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
972 /* GL_ARB_texture_cube_map */
973 case GL_TEXTURE_CUBE_MAP_ARB
:
974 if (ctx
->Extensions
.ARB_texture_cube_map
)
975 *params
= _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
977 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
979 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
980 if (ctx
->Extensions
.ARB_texture_cube_map
)
981 *params
= INT_TO_BOOL(textureUnit
->CurrentCubeMap
->Name
);
983 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
985 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
986 if (ctx
->Extensions
.ARB_texture_cube_map
)
987 *params
= INT_TO_BOOL(ctx
->Const
.MaxCubeTextureSize
);
989 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
992 /* GL_ARB_texture_compression */
993 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
994 if (ctx
->Extensions
.ARB_texture_compression
) {
995 *params
= INT_TO_BOOL(ctx
->Hint
.TextureCompression
);
998 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1000 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1001 if (ctx
->Extensions
.ARB_texture_compression
) {
1002 *params
= INT_TO_BOOL(ctx
->Const
.NumCompressedTextureFormats
);
1005 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1007 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1008 if (ctx
->Extensions
.ARB_texture_compression
) {
1010 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
1011 params
[i
] = INT_TO_BOOL(ctx
->Const
.CompressedTextureFormats
[i
]);
1014 gl_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv");
1017 /* GL_PGI_misc_hints */
1018 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
1019 *params
= ENUM_TO_BOOL(GL_NICEST
);
1021 case GL_STRICT_LIGHTING_HINT_PGI
:
1022 *params
= ENUM_TO_BOOL(ctx
->Hint
.StrictLighting
);
1024 case GL_STRICT_SCISSOR_HINT_PGI
:
1025 case GL_FULL_STIPPLE_HINT_PGI
:
1026 *params
= ENUM_TO_BOOL(GL_TRUE
);
1028 case GL_CONSERVE_MEMORY_HINT_PGI
:
1029 *params
= ENUM_TO_BOOL(GL_FALSE
);
1031 case GL_ALWAYS_FAST_HINT_PGI
:
1032 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1033 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
1034 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
1036 case GL_ALWAYS_SOFT_HINT_PGI
:
1037 *params
= (GLboolean
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
1038 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
1039 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
1041 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
1042 *params
= (GLboolean
) GL_TRUE
;
1044 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
1045 *params
= (GLboolean
) ctx
->Hint
.AllowDrawWin
;
1047 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
1048 *params
= (GLboolean
) ctx
->Hint
.AllowDrawFrg
;
1050 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
1051 *params
= (GLboolean
) ctx
->Hint
.AllowDrawMem
;
1053 case GL_CLIP_NEAR_HINT_PGI
:
1054 case GL_CLIP_FAR_HINT_PGI
:
1055 *params
= ENUM_TO_BOOL(GL_TRUE
);
1057 case GL_WIDE_LINE_HINT_PGI
:
1058 *params
= ENUM_TO_BOOL(GL_DONT_CARE
);
1060 case GL_BACK_NORMALS_HINT_PGI
:
1061 *params
= ENUM_TO_BOOL(GL_TRUE
);
1063 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
1067 /* GL_EXT_compiled_vertex_array */
1068 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1069 *params
= ctx
->Array
.LockFirst
? GL_TRUE
: GL_FALSE
;
1071 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1072 *params
= ctx
->Array
.LockCount
? GL_TRUE
: GL_FALSE
;
1075 /* GL_ARB_transpose_matrix */
1076 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1080 gl_matrix_transposef(tm
, ctx
->ColorMatrix
.m
);
1081 for (i
=0;i
<16;i
++) {
1082 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1086 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1090 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
1091 for (i
=0;i
<16;i
++) {
1092 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1096 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1100 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
1101 for (i
=0;i
<16;i
++) {
1102 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1106 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1110 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
1111 for (i
=0;i
<16;i
++) {
1112 params
[i
] = FLOAT_TO_BOOL(tm
[i
]);
1117 /* GL_HP_occlusion_test */
1118 case GL_OCCLUSION_TEST_HP
:
1119 if (ctx
->Extensions
.HP_occlusion_test
) {
1120 *params
= ctx
->Depth
.OcclusionTest
;
1123 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1126 case GL_OCCLUSION_TEST_RESULT_HP
:
1127 if (ctx
->Extensions
.HP_occlusion_test
) {
1128 if (ctx
->Depth
.OcclusionTest
)
1129 *params
= ctx
->OcclusionResult
;
1131 *params
= ctx
->OcclusionResultSaved
;
1132 /* reset flag now */
1133 ctx
->OcclusionResult
= GL_FALSE
;
1134 ctx
->OcclusionResultSaved
= GL_FALSE
;
1137 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1141 /* GL_SGIS_pixel_texture */
1142 case GL_PIXEL_TEXTURE_SGIS
:
1143 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1146 /* GL_SGIX_pixel_texture */
1147 case GL_PIXEL_TEX_GEN_SGIX
:
1148 *params
= ctx
->Pixel
.PixelTextureEnabled
;
1150 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
1151 *params
= (GLboolean
) pixel_texgen_mode(ctx
);
1154 /* GL_SGI_color_matrix (also in 1.2 imaging) */
1155 case GL_COLOR_MATRIX_SGI
:
1156 for (i
=0;i
<16;i
++) {
1157 params
[i
] = FLOAT_TO_BOOL(ctx
->ColorMatrix
.m
[i
]);
1160 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1161 *params
= INT_TO_BOOL(ctx
->ColorStackDepth
+ 1);
1163 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1164 *params
= FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH
);
1166 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1167 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[0]);
1169 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1170 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[1]);
1172 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1173 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[2]);
1175 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1176 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixScale
[3]);
1178 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1179 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[0]);
1181 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1182 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[1]);
1184 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1185 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[2]);
1187 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1188 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostColorMatrixBias
[3]);
1191 /* GL_EXT_convolution (also in 1.2 imaging) */
1192 case GL_MAX_CONVOLUTION_WIDTH
:
1193 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionWidth
);
1195 case GL_MAX_CONVOLUTION_HEIGHT
:
1196 *params
= INT_TO_BOOL(ctx
->Const
.MaxConvolutionHeight
);
1198 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1199 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[0]);
1201 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1202 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[1]);
1204 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1205 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[2]);
1207 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1208 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionScale
[3]);
1210 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1211 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[0]);
1213 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1214 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[1]);
1216 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1217 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1219 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1220 *params
= FLOAT_TO_BOOL(ctx
->Pixel
.PostConvolutionBias
[2]);
1223 /* GL_SGI_color_table (also in 1.2 imaging */
1224 case GL_COLOR_TABLE_SGI
:
1225 *params
= ctx
->Pixel
.ColorTableEnabled
;
1227 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1228 *params
= ctx
->Pixel
.PostConvolutionColorTableEnabled
;
1230 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1231 *params
= ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
1234 /* GL_EXT_secondary_color */
1235 case GL_COLOR_SUM_EXT
:
1236 *params
= ctx
->Fog
.ColorSumEnabled
;
1238 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1239 params
[0] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[0]);
1240 params
[1] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[1]);
1241 params
[2] = INT_TO_BOOL(ctx
->Current
.SecondaryColor
[2]);
1243 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1244 *params
= ctx
->Array
.SecondaryColor
.Enabled
;
1246 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1247 *params
= ENUM_TO_BOOL(ctx
->Array
.SecondaryColor
.Type
);
1249 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1250 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1252 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1253 *params
= INT_TO_BOOL(ctx
->Array
.SecondaryColor
.Stride
);
1256 /* GL_EXT_fog_coord */
1257 case GL_CURRENT_FOG_COORDINATE_EXT
:
1258 *params
= FLOAT_TO_BOOL(ctx
->Current
.FogCoord
);
1260 case GL_FOG_COORDINATE_ARRAY_EXT
:
1261 *params
= ctx
->Array
.FogCoord
.Enabled
;
1263 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1264 *params
= ENUM_TO_BOOL(ctx
->Array
.FogCoord
.Type
);
1266 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1267 *params
= INT_TO_BOOL(ctx
->Array
.FogCoord
.Stride
);
1271 gl_error( ctx
, GL_INVALID_ENUM
, "glGetBooleanv" );
1279 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
1281 GET_CURRENT_CONTEXT(ctx
);
1283 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
1284 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
1285 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
1287 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetDoublev");
1292 if (MESA_VERBOSE
& VERBOSE_API
)
1293 fprintf(stderr
, "glGetDoublev %s\n", gl_lookup_enum_by_nr(pname
));
1295 if (ctx
->Driver
.GetDoublev
&& (*ctx
->Driver
.GetDoublev
)(ctx
, pname
, params
))
1299 case GL_ACCUM_RED_BITS
:
1300 *params
= (GLdouble
) ctx
->Visual
.AccumRedBits
;
1302 case GL_ACCUM_GREEN_BITS
:
1303 *params
= (GLdouble
) ctx
->Visual
.AccumGreenBits
;
1305 case GL_ACCUM_BLUE_BITS
:
1306 *params
= (GLdouble
) ctx
->Visual
.AccumBlueBits
;
1308 case GL_ACCUM_ALPHA_BITS
:
1309 *params
= (GLdouble
) ctx
->Visual
.AccumAlphaBits
;
1311 case GL_ACCUM_CLEAR_VALUE
:
1312 params
[0] = (GLdouble
) ctx
->Accum
.ClearColor
[0];
1313 params
[1] = (GLdouble
) ctx
->Accum
.ClearColor
[1];
1314 params
[2] = (GLdouble
) ctx
->Accum
.ClearColor
[2];
1315 params
[3] = (GLdouble
) ctx
->Accum
.ClearColor
[3];
1318 *params
= (GLdouble
) ctx
->Pixel
.AlphaBias
;
1321 *params
= (GLdouble
) ctx
->Visual
.AlphaBits
;
1323 case GL_ALPHA_SCALE
:
1324 *params
= (GLdouble
) ctx
->Pixel
.AlphaScale
;
1327 *params
= (GLdouble
) ctx
->Color
.AlphaEnabled
;
1329 case GL_ALPHA_TEST_FUNC
:
1330 *params
= ENUM_TO_DOUBLE(ctx
->Color
.AlphaFunc
);
1332 case GL_ALPHA_TEST_REF
:
1333 *params
= (GLdouble
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
1335 case GL_ATTRIB_STACK_DEPTH
:
1336 *params
= (GLdouble
) (ctx
->AttribStackDepth
);
1338 case GL_AUTO_NORMAL
:
1339 *params
= (GLdouble
) ctx
->Eval
.AutoNormal
;
1341 case GL_AUX_BUFFERS
:
1342 *params
= (GLdouble
) ctx
->Const
.NumAuxBuffers
;
1345 *params
= (GLdouble
) ctx
->Color
.BlendEnabled
;
1348 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1351 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1353 case GL_BLEND_SRC_RGB_EXT
:
1354 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcRGB
);
1356 case GL_BLEND_DST_RGB_EXT
:
1357 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstRGB
);
1359 case GL_BLEND_SRC_ALPHA_EXT
:
1360 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendSrcA
);
1362 case GL_BLEND_DST_ALPHA_EXT
:
1363 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendDstA
);
1365 case GL_BLEND_EQUATION_EXT
:
1366 *params
= ENUM_TO_DOUBLE(ctx
->Color
.BlendEquation
);
1368 case GL_BLEND_COLOR_EXT
:
1369 params
[0] = (GLdouble
) ctx
->Color
.BlendColor
[0];
1370 params
[1] = (GLdouble
) ctx
->Color
.BlendColor
[1];
1371 params
[2] = (GLdouble
) ctx
->Color
.BlendColor
[2];
1372 params
[3] = (GLdouble
) ctx
->Color
.BlendColor
[3];
1375 *params
= (GLdouble
) ctx
->Pixel
.BlueBias
;
1378 *params
= (GLdouble
) ctx
->Visual
.BlueBits
;
1381 *params
= (GLdouble
) ctx
->Pixel
.BlueScale
;
1383 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
1384 *params
= (GLdouble
) (ctx
->ClientAttribStackDepth
);
1386 case GL_CLIP_PLANE0
:
1387 case GL_CLIP_PLANE1
:
1388 case GL_CLIP_PLANE2
:
1389 case GL_CLIP_PLANE3
:
1390 case GL_CLIP_PLANE4
:
1391 case GL_CLIP_PLANE5
:
1392 *params
= (GLdouble
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
1394 case GL_COLOR_CLEAR_VALUE
:
1395 params
[0] = (GLdouble
) ctx
->Color
.ClearColor
[0];
1396 params
[1] = (GLdouble
) ctx
->Color
.ClearColor
[1];
1397 params
[2] = (GLdouble
) ctx
->Color
.ClearColor
[2];
1398 params
[3] = (GLdouble
) ctx
->Color
.ClearColor
[3];
1400 case GL_COLOR_MATERIAL
:
1401 *params
= (GLdouble
) ctx
->Light
.ColorMaterialEnabled
;
1403 case GL_COLOR_MATERIAL_FACE
:
1404 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialFace
);
1406 case GL_COLOR_MATERIAL_PARAMETER
:
1407 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ColorMaterialMode
);
1409 case GL_COLOR_WRITEMASK
:
1410 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0 : 0.0;
1411 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0 : 0.0;
1412 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0 : 0.0;
1413 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0 : 0.0;
1416 *params
= (GLdouble
) ctx
->Polygon
.CullFlag
;
1418 case GL_CULL_FACE_MODE
:
1419 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.CullFaceMode
);
1421 case GL_CURRENT_COLOR
:
1422 params
[0] = CHAN_TO_FLOAT(ctx
->Current
.Color
[0]);
1423 params
[1] = CHAN_TO_FLOAT(ctx
->Current
.Color
[1]);
1424 params
[2] = CHAN_TO_FLOAT(ctx
->Current
.Color
[2]);
1425 params
[3] = CHAN_TO_FLOAT(ctx
->Current
.Color
[3]);
1427 case GL_CURRENT_INDEX
:
1428 *params
= (GLdouble
) ctx
->Current
.Index
;
1430 case GL_CURRENT_NORMAL
:
1431 params
[0] = (GLdouble
) ctx
->Current
.Normal
[0];
1432 params
[1] = (GLdouble
) ctx
->Current
.Normal
[1];
1433 params
[2] = (GLdouble
) ctx
->Current
.Normal
[2];
1435 case GL_CURRENT_RASTER_COLOR
:
1436 params
[0] = (GLdouble
) ctx
->Current
.RasterColor
[0];
1437 params
[1] = (GLdouble
) ctx
->Current
.RasterColor
[1];
1438 params
[2] = (GLdouble
) ctx
->Current
.RasterColor
[2];
1439 params
[3] = (GLdouble
) ctx
->Current
.RasterColor
[3];
1441 case GL_CURRENT_RASTER_DISTANCE
:
1442 params
[0] = (GLdouble
) ctx
->Current
.RasterDistance
;
1444 case GL_CURRENT_RASTER_INDEX
:
1445 *params
= (GLdouble
) ctx
->Current
.RasterIndex
;
1447 case GL_CURRENT_RASTER_POSITION
:
1448 params
[0] = (GLdouble
) ctx
->Current
.RasterPos
[0];
1449 params
[1] = (GLdouble
) ctx
->Current
.RasterPos
[1];
1450 params
[2] = (GLdouble
) ctx
->Current
.RasterPos
[2];
1451 params
[3] = (GLdouble
) ctx
->Current
.RasterPos
[3];
1453 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
1454 params
[0] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
1455 params
[1] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
1456 params
[2] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
1457 params
[3] = (GLdouble
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
1459 case GL_CURRENT_RASTER_POSITION_VALID
:
1460 *params
= (GLdouble
) ctx
->Current
.RasterPosValid
;
1462 case GL_CURRENT_TEXTURE_COORDS
:
1463 params
[0] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
1464 params
[1] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
1465 params
[2] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
1466 params
[3] = (GLdouble
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
1469 *params
= (GLdouble
) ctx
->Pixel
.DepthBias
;
1472 *params
= (GLdouble
) ctx
->Visual
.DepthBits
;
1474 case GL_DEPTH_CLEAR_VALUE
:
1475 *params
= (GLdouble
) ctx
->Depth
.Clear
;
1478 *params
= ENUM_TO_DOUBLE(ctx
->Depth
.Func
);
1480 case GL_DEPTH_RANGE
:
1481 params
[0] = (GLdouble
) ctx
->Viewport
.Near
;
1482 params
[1] = (GLdouble
) ctx
->Viewport
.Far
;
1484 case GL_DEPTH_SCALE
:
1485 *params
= (GLdouble
) ctx
->Pixel
.DepthScale
;
1488 *params
= (GLdouble
) ctx
->Depth
.Test
;
1490 case GL_DEPTH_WRITEMASK
:
1491 *params
= (GLdouble
) ctx
->Depth
.Mask
;
1494 *params
= (GLdouble
) ctx
->Color
.DitherFlag
;
1496 case GL_DOUBLEBUFFER
:
1497 *params
= (GLdouble
) ctx
->Visual
.DBflag
;
1499 case GL_DRAW_BUFFER
:
1500 *params
= ENUM_TO_DOUBLE(ctx
->Color
.DrawBuffer
);
1503 *params
= (GLdouble
) ctx
->Current
.EdgeFlag
;
1505 case GL_FEEDBACK_BUFFER_SIZE
:
1506 *params
= (GLdouble
) ctx
->Feedback
.BufferSize
;
1508 case GL_FEEDBACK_BUFFER_TYPE
:
1509 *params
= ENUM_TO_DOUBLE(ctx
->Feedback
.Type
);
1512 *params
= (GLdouble
) ctx
->Fog
.Enabled
;
1515 params
[0] = (GLdouble
) ctx
->Fog
.Color
[0];
1516 params
[1] = (GLdouble
) ctx
->Fog
.Color
[1];
1517 params
[2] = (GLdouble
) ctx
->Fog
.Color
[2];
1518 params
[3] = (GLdouble
) ctx
->Fog
.Color
[3];
1520 case GL_FOG_DENSITY
:
1521 *params
= (GLdouble
) ctx
->Fog
.Density
;
1524 *params
= (GLdouble
) ctx
->Fog
.End
;
1527 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.Fog
);
1530 *params
= (GLdouble
) ctx
->Fog
.Index
;
1533 *params
= ENUM_TO_DOUBLE(ctx
->Fog
.Mode
);
1536 *params
= (GLdouble
) ctx
->Fog
.Start
;
1539 *params
= ENUM_TO_DOUBLE(ctx
->Polygon
.FrontFace
);
1542 *params
= (GLdouble
) ctx
->Pixel
.GreenBias
;
1545 *params
= (GLdouble
) ctx
->Visual
.GreenBits
;
1547 case GL_GREEN_SCALE
:
1548 *params
= (GLdouble
) ctx
->Pixel
.GreenScale
;
1551 if (ctx
->Extensions
.EXT_histogram
) {
1552 *params
= (GLdouble
) ctx
->Pixel
.HistogramEnabled
;
1555 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
1560 *params
= (GLdouble
) ctx
->Visual
.IndexBits
;
1562 case GL_INDEX_CLEAR_VALUE
:
1563 *params
= (GLdouble
) ctx
->Color
.ClearIndex
;
1566 *params
= ctx
->Visual
.RGBAflag
? 0.0 : 1.0;
1568 case GL_INDEX_OFFSET
:
1569 *params
= (GLdouble
) ctx
->Pixel
.IndexOffset
;
1571 case GL_INDEX_SHIFT
:
1572 *params
= (GLdouble
) ctx
->Pixel
.IndexShift
;
1574 case GL_INDEX_WRITEMASK
:
1575 *params
= (GLdouble
) ctx
->Color
.IndexMask
;
1585 *params
= (GLdouble
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
1588 *params
= (GLdouble
) ctx
->Light
.Enabled
;
1590 case GL_LIGHT_MODEL_AMBIENT
:
1591 params
[0] = (GLdouble
) ctx
->Light
.Model
.Ambient
[0];
1592 params
[1] = (GLdouble
) ctx
->Light
.Model
.Ambient
[1];
1593 params
[2] = (GLdouble
) ctx
->Light
.Model
.Ambient
[2];
1594 params
[3] = (GLdouble
) ctx
->Light
.Model
.Ambient
[3];
1596 case GL_LIGHT_MODEL_COLOR_CONTROL
:
1597 params
[0] = (GLdouble
) ctx
->Light
.Model
.ColorControl
;
1599 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
1600 *params
= (GLdouble
) ctx
->Light
.Model
.LocalViewer
;
1602 case GL_LIGHT_MODEL_TWO_SIDE
:
1603 *params
= (GLdouble
) ctx
->Light
.Model
.TwoSide
;
1605 case GL_LINE_SMOOTH
:
1606 *params
= (GLdouble
) ctx
->Line
.SmoothFlag
;
1608 case GL_LINE_SMOOTH_HINT
:
1609 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.LineSmooth
);
1611 case GL_LINE_STIPPLE
:
1612 *params
= (GLdouble
) ctx
->Line
.StippleFlag
;
1614 case GL_LINE_STIPPLE_PATTERN
:
1615 *params
= (GLdouble
) ctx
->Line
.StipplePattern
;
1617 case GL_LINE_STIPPLE_REPEAT
:
1618 *params
= (GLdouble
) ctx
->Line
.StippleFactor
;
1621 *params
= (GLdouble
) ctx
->Line
.Width
;
1623 case GL_LINE_WIDTH_GRANULARITY
:
1624 *params
= (GLdouble
) ctx
->Const
.LineWidthGranularity
;
1626 case GL_LINE_WIDTH_RANGE
:
1627 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidthAA
;
1628 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidthAA
;
1630 case GL_ALIASED_LINE_WIDTH_RANGE
:
1631 params
[0] = (GLdouble
) ctx
->Const
.MinLineWidth
;
1632 params
[1] = (GLdouble
) ctx
->Const
.MaxLineWidth
;
1635 *params
= (GLdouble
) ctx
->List
.ListBase
;
1638 *params
= (GLdouble
) ctx
->CurrentListNum
;
1641 *params
= ctx
->ExecuteFlag
? ENUM_TO_DOUBLE(GL_COMPILE_AND_EXECUTE
)
1642 : ENUM_TO_DOUBLE(GL_COMPILE
);
1644 case GL_INDEX_LOGIC_OP
:
1645 *params
= (GLdouble
) ctx
->Color
.IndexLogicOpEnabled
;
1647 case GL_COLOR_LOGIC_OP
:
1648 *params
= (GLdouble
) ctx
->Color
.ColorLogicOpEnabled
;
1650 case GL_LOGIC_OP_MODE
:
1651 *params
= ENUM_TO_DOUBLE(ctx
->Color
.LogicOp
);
1653 case GL_MAP1_COLOR_4
:
1654 *params
= (GLdouble
) ctx
->Eval
.Map1Color4
;
1656 case GL_MAP1_GRID_DOMAIN
:
1657 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid1u1
;
1658 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid1u2
;
1660 case GL_MAP1_GRID_SEGMENTS
:
1661 *params
= (GLdouble
) ctx
->Eval
.MapGrid1un
;
1664 *params
= (GLdouble
) ctx
->Eval
.Map1Index
;
1666 case GL_MAP1_NORMAL
:
1667 *params
= (GLdouble
) ctx
->Eval
.Map1Normal
;
1669 case GL_MAP1_TEXTURE_COORD_1
:
1670 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord1
;
1672 case GL_MAP1_TEXTURE_COORD_2
:
1673 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord2
;
1675 case GL_MAP1_TEXTURE_COORD_3
:
1676 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord3
;
1678 case GL_MAP1_TEXTURE_COORD_4
:
1679 *params
= (GLdouble
) ctx
->Eval
.Map1TextureCoord4
;
1681 case GL_MAP1_VERTEX_3
:
1682 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex3
;
1684 case GL_MAP1_VERTEX_4
:
1685 *params
= (GLdouble
) ctx
->Eval
.Map1Vertex4
;
1687 case GL_MAP2_COLOR_4
:
1688 *params
= (GLdouble
) ctx
->Eval
.Map2Color4
;
1690 case GL_MAP2_GRID_DOMAIN
:
1691 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2u1
;
1692 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2u2
;
1693 params
[2] = (GLdouble
) ctx
->Eval
.MapGrid2v1
;
1694 params
[3] = (GLdouble
) ctx
->Eval
.MapGrid2v2
;
1696 case GL_MAP2_GRID_SEGMENTS
:
1697 params
[0] = (GLdouble
) ctx
->Eval
.MapGrid2un
;
1698 params
[1] = (GLdouble
) ctx
->Eval
.MapGrid2vn
;
1701 *params
= (GLdouble
) ctx
->Eval
.Map2Index
;
1703 case GL_MAP2_NORMAL
:
1704 *params
= (GLdouble
) ctx
->Eval
.Map2Normal
;
1706 case GL_MAP2_TEXTURE_COORD_1
:
1707 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord1
;
1709 case GL_MAP2_TEXTURE_COORD_2
:
1710 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord2
;
1712 case GL_MAP2_TEXTURE_COORD_3
:
1713 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord3
;
1715 case GL_MAP2_TEXTURE_COORD_4
:
1716 *params
= (GLdouble
) ctx
->Eval
.Map2TextureCoord4
;
1718 case GL_MAP2_VERTEX_3
:
1719 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex3
;
1721 case GL_MAP2_VERTEX_4
:
1722 *params
= (GLdouble
) ctx
->Eval
.Map2Vertex4
;
1725 *params
= (GLdouble
) ctx
->Pixel
.MapColorFlag
;
1727 case GL_MAP_STENCIL
:
1728 *params
= (GLdouble
) ctx
->Pixel
.MapStencilFlag
;
1730 case GL_MATRIX_MODE
:
1731 *params
= ENUM_TO_DOUBLE(ctx
->Transform
.MatrixMode
);
1733 case GL_MAX_ATTRIB_STACK_DEPTH
:
1734 *params
= (GLdouble
) MAX_ATTRIB_STACK_DEPTH
;
1736 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
1737 *params
= (GLdouble
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
1739 case GL_MAX_CLIP_PLANES
:
1740 *params
= (GLdouble
) MAX_CLIP_PLANES
;
1742 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
1743 *params
= (GLdouble
) VB_MAX
;
1745 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
1746 *params
= (GLdouble
) VB_MAX
;
1748 case GL_MAX_EVAL_ORDER
:
1749 *params
= (GLdouble
) MAX_EVAL_ORDER
;
1752 *params
= (GLdouble
) MAX_LIGHTS
;
1754 case GL_MAX_LIST_NESTING
:
1755 *params
= (GLdouble
) MAX_LIST_NESTING
;
1757 case GL_MAX_MODELVIEW_STACK_DEPTH
:
1758 *params
= (GLdouble
) MAX_MODELVIEW_STACK_DEPTH
;
1760 case GL_MAX_NAME_STACK_DEPTH
:
1761 *params
= (GLdouble
) MAX_NAME_STACK_DEPTH
;
1763 case GL_MAX_PIXEL_MAP_TABLE
:
1764 *params
= (GLdouble
) MAX_PIXEL_MAP_TABLE
;
1766 case GL_MAX_PROJECTION_STACK_DEPTH
:
1767 *params
= (GLdouble
) MAX_PROJECTION_STACK_DEPTH
;
1769 case GL_MAX_TEXTURE_SIZE
:
1770 case GL_MAX_3D_TEXTURE_SIZE
:
1771 *params
= (GLdouble
) ctx
->Const
.MaxTextureSize
;
1773 case GL_MAX_TEXTURE_STACK_DEPTH
:
1774 *params
= (GLdouble
) MAX_TEXTURE_STACK_DEPTH
;
1776 case GL_MAX_VIEWPORT_DIMS
:
1777 params
[0] = (GLdouble
) MAX_WIDTH
;
1778 params
[1] = (GLdouble
) MAX_HEIGHT
;
1781 *params
= (GLdouble
) ctx
->Pixel
.MinMaxEnabled
;
1783 case GL_MODELVIEW_MATRIX
:
1784 for (i
=0;i
<16;i
++) {
1785 params
[i
] = (GLdouble
) ctx
->ModelView
.m
[i
];
1788 case GL_MODELVIEW_STACK_DEPTH
:
1789 *params
= (GLdouble
) (ctx
->ModelViewStackDepth
+ 1);
1791 case GL_NAME_STACK_DEPTH
:
1792 *params
= (GLdouble
) ctx
->Select
.NameStackDepth
;
1795 *params
= (GLdouble
) ctx
->Transform
.Normalize
;
1797 case GL_PACK_ALIGNMENT
:
1798 *params
= (GLdouble
) ctx
->Pack
.Alignment
;
1800 case GL_PACK_LSB_FIRST
:
1801 *params
= (GLdouble
) ctx
->Pack
.LsbFirst
;
1803 case GL_PACK_ROW_LENGTH
:
1804 *params
= (GLdouble
) ctx
->Pack
.RowLength
;
1806 case GL_PACK_SKIP_PIXELS
:
1807 *params
= (GLdouble
) ctx
->Pack
.SkipPixels
;
1809 case GL_PACK_SKIP_ROWS
:
1810 *params
= (GLdouble
) ctx
->Pack
.SkipRows
;
1812 case GL_PACK_SWAP_BYTES
:
1813 *params
= (GLdouble
) ctx
->Pack
.SwapBytes
;
1815 case GL_PACK_SKIP_IMAGES_EXT
:
1816 *params
= (GLdouble
) ctx
->Pack
.SkipImages
;
1818 case GL_PACK_IMAGE_HEIGHT_EXT
:
1819 *params
= (GLdouble
) ctx
->Pack
.ImageHeight
;
1821 case GL_PERSPECTIVE_CORRECTION_HINT
:
1822 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PerspectiveCorrection
);
1824 case GL_PIXEL_MAP_A_TO_A_SIZE
:
1825 *params
= (GLdouble
) ctx
->Pixel
.MapAtoAsize
;
1827 case GL_PIXEL_MAP_B_TO_B_SIZE
:
1828 *params
= (GLdouble
) ctx
->Pixel
.MapBtoBsize
;
1830 case GL_PIXEL_MAP_G_TO_G_SIZE
:
1831 *params
= (GLdouble
) ctx
->Pixel
.MapGtoGsize
;
1833 case GL_PIXEL_MAP_I_TO_A_SIZE
:
1834 *params
= (GLdouble
) ctx
->Pixel
.MapItoAsize
;
1836 case GL_PIXEL_MAP_I_TO_B_SIZE
:
1837 *params
= (GLdouble
) ctx
->Pixel
.MapItoBsize
;
1839 case GL_PIXEL_MAP_I_TO_G_SIZE
:
1840 *params
= (GLdouble
) ctx
->Pixel
.MapItoGsize
;
1842 case GL_PIXEL_MAP_I_TO_I_SIZE
:
1843 *params
= (GLdouble
) ctx
->Pixel
.MapItoIsize
;
1845 case GL_PIXEL_MAP_I_TO_R_SIZE
:
1846 *params
= (GLdouble
) ctx
->Pixel
.MapItoRsize
;
1848 case GL_PIXEL_MAP_R_TO_R_SIZE
:
1849 *params
= (GLdouble
) ctx
->Pixel
.MapRtoRsize
;
1851 case GL_PIXEL_MAP_S_TO_S_SIZE
:
1852 *params
= (GLdouble
) ctx
->Pixel
.MapStoSsize
;
1855 *params
= (GLdouble
) ctx
->Point
.Size
;
1857 case GL_POINT_SIZE_GRANULARITY
:
1858 *params
= (GLdouble
) ctx
->Const
.PointSizeGranularity
;
1860 case GL_POINT_SIZE_RANGE
:
1861 params
[0] = (GLdouble
) ctx
->Const
.MinPointSizeAA
;
1862 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSizeAA
;
1864 case GL_ALIASED_POINT_SIZE_RANGE
:
1865 params
[0] = (GLdouble
) ctx
->Const
.MinPointSize
;
1866 params
[1] = (GLdouble
) ctx
->Const
.MaxPointSize
;
1868 case GL_POINT_SMOOTH
:
1869 *params
= (GLdouble
) ctx
->Point
.SmoothFlag
;
1871 case GL_POINT_SMOOTH_HINT
:
1872 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PointSmooth
);
1874 case GL_POINT_SIZE_MIN_EXT
:
1875 *params
= (GLdouble
) (ctx
->Point
.MinSize
);
1877 case GL_POINT_SIZE_MAX_EXT
:
1878 *params
= (GLdouble
) (ctx
->Point
.MaxSize
);
1880 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
1881 *params
= (GLdouble
) (ctx
->Point
.Threshold
);
1883 case GL_DISTANCE_ATTENUATION_EXT
:
1884 params
[0] = (GLdouble
) (ctx
->Point
.Params
[0]);
1885 params
[1] = (GLdouble
) (ctx
->Point
.Params
[1]);
1886 params
[2] = (GLdouble
) (ctx
->Point
.Params
[2]);
1888 case GL_POLYGON_MODE
:
1889 params
[0] = ENUM_TO_DOUBLE(ctx
->Polygon
.FrontMode
);
1890 params
[1] = ENUM_TO_DOUBLE(ctx
->Polygon
.BackMode
);
1892 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
1893 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1895 case GL_POLYGON_OFFSET_FACTOR
:
1896 *params
= (GLdouble
) ctx
->Polygon
.OffsetFactor
;
1898 case GL_POLYGON_OFFSET_UNITS
:
1899 *params
= (GLdouble
) ctx
->Polygon
.OffsetUnits
;
1901 case GL_POLYGON_SMOOTH
:
1902 *params
= (GLdouble
) ctx
->Polygon
.SmoothFlag
;
1904 case GL_POLYGON_SMOOTH_HINT
:
1905 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.PolygonSmooth
);
1907 case GL_POLYGON_STIPPLE
:
1908 *params
= (GLdouble
) ctx
->Polygon
.StippleFlag
;
1910 case GL_PROJECTION_MATRIX
:
1911 for (i
=0;i
<16;i
++) {
1912 params
[i
] = (GLdouble
) ctx
->ProjectionMatrix
.m
[i
];
1915 case GL_PROJECTION_STACK_DEPTH
:
1916 *params
= (GLdouble
) (ctx
->ProjectionStackDepth
+ 1);
1918 case GL_READ_BUFFER
:
1919 *params
= ENUM_TO_DOUBLE(ctx
->Pixel
.ReadBuffer
);
1922 *params
= (GLdouble
) ctx
->Pixel
.RedBias
;
1925 *params
= (GLdouble
) ctx
->Visual
.RedBits
;
1928 *params
= (GLdouble
) ctx
->Pixel
.RedScale
;
1930 case GL_RENDER_MODE
:
1931 *params
= ENUM_TO_DOUBLE(ctx
->RenderMode
);
1934 *params
= (GLdouble
) ctx
->Visual
.RGBAflag
;
1936 case GL_SCISSOR_BOX
:
1937 params
[0] = (GLdouble
) ctx
->Scissor
.X
;
1938 params
[1] = (GLdouble
) ctx
->Scissor
.Y
;
1939 params
[2] = (GLdouble
) ctx
->Scissor
.Width
;
1940 params
[3] = (GLdouble
) ctx
->Scissor
.Height
;
1942 case GL_SCISSOR_TEST
:
1943 *params
= (GLdouble
) ctx
->Scissor
.Enabled
;
1945 case GL_SELECTION_BUFFER_SIZE
:
1946 *params
= (GLdouble
) ctx
->Select
.BufferSize
;
1948 case GL_SHADE_MODEL
:
1949 *params
= ENUM_TO_DOUBLE(ctx
->Light
.ShadeModel
);
1951 case GL_SHARED_TEXTURE_PALETTE_EXT
:
1952 *params
= (GLdouble
) ctx
->Texture
.SharedPalette
;
1954 case GL_STENCIL_BITS
:
1955 *params
= (GLdouble
) ctx
->Visual
.StencilBits
;
1957 case GL_STENCIL_CLEAR_VALUE
:
1958 *params
= (GLdouble
) ctx
->Stencil
.Clear
;
1960 case GL_STENCIL_FAIL
:
1961 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.FailFunc
);
1963 case GL_STENCIL_FUNC
:
1964 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.Function
);
1966 case GL_STENCIL_PASS_DEPTH_FAIL
:
1967 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZFailFunc
);
1969 case GL_STENCIL_PASS_DEPTH_PASS
:
1970 *params
= ENUM_TO_DOUBLE(ctx
->Stencil
.ZPassFunc
);
1972 case GL_STENCIL_REF
:
1973 *params
= (GLdouble
) ctx
->Stencil
.Ref
;
1975 case GL_STENCIL_TEST
:
1976 *params
= (GLdouble
) ctx
->Stencil
.Enabled
;
1978 case GL_STENCIL_VALUE_MASK
:
1979 *params
= (GLdouble
) ctx
->Stencil
.ValueMask
;
1981 case GL_STENCIL_WRITEMASK
:
1982 *params
= (GLdouble
) ctx
->Stencil
.WriteMask
;
1985 *params
= (GLdouble
) ctx
->Visual
.StereoFlag
;
1987 case GL_SUBPIXEL_BITS
:
1988 *params
= (GLdouble
) ctx
->Const
.SubPixelBits
;
1991 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
1994 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
1997 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
1999 case GL_TEXTURE_BINDING_1D
:
2000 *params
= (GLdouble
) textureUnit
->CurrentD
[1]->Name
;
2002 case GL_TEXTURE_BINDING_2D
:
2003 *params
= (GLdouble
) textureUnit
->CurrentD
[2]->Name
;
2005 case GL_TEXTURE_BINDING_3D
:
2006 *params
= (GLdouble
) textureUnit
->CurrentD
[3]->Name
;
2008 case GL_TEXTURE_ENV_COLOR
:
2009 params
[0] = (GLdouble
) textureUnit
->EnvColor
[0];
2010 params
[1] = (GLdouble
) textureUnit
->EnvColor
[1];
2011 params
[2] = (GLdouble
) textureUnit
->EnvColor
[2];
2012 params
[3] = (GLdouble
) textureUnit
->EnvColor
[3];
2014 case GL_TEXTURE_ENV_MODE
:
2015 *params
= ENUM_TO_DOUBLE(textureUnit
->EnvMode
);
2017 case GL_TEXTURE_GEN_S
:
2018 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
2020 case GL_TEXTURE_GEN_T
:
2021 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
2023 case GL_TEXTURE_GEN_R
:
2024 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
2026 case GL_TEXTURE_GEN_Q
:
2027 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
2029 case GL_TEXTURE_MATRIX
:
2030 for (i
=0;i
<16;i
++) {
2031 params
[i
] = (GLdouble
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
2034 case GL_TEXTURE_STACK_DEPTH
:
2035 *params
= (GLdouble
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
2037 case GL_UNPACK_ALIGNMENT
:
2038 *params
= (GLdouble
) ctx
->Unpack
.Alignment
;
2040 case GL_UNPACK_LSB_FIRST
:
2041 *params
= (GLdouble
) ctx
->Unpack
.LsbFirst
;
2043 case GL_UNPACK_ROW_LENGTH
:
2044 *params
= (GLdouble
) ctx
->Unpack
.RowLength
;
2046 case GL_UNPACK_SKIP_PIXELS
:
2047 *params
= (GLdouble
) ctx
->Unpack
.SkipPixels
;
2049 case GL_UNPACK_SKIP_ROWS
:
2050 *params
= (GLdouble
) ctx
->Unpack
.SkipRows
;
2052 case GL_UNPACK_SWAP_BYTES
:
2053 *params
= (GLdouble
) ctx
->Unpack
.SwapBytes
;
2055 case GL_UNPACK_SKIP_IMAGES_EXT
:
2056 *params
= (GLdouble
) ctx
->Unpack
.SkipImages
;
2058 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2059 *params
= (GLdouble
) ctx
->Unpack
.ImageHeight
;
2062 params
[0] = (GLdouble
) ctx
->Viewport
.X
;
2063 params
[1] = (GLdouble
) ctx
->Viewport
.Y
;
2064 params
[2] = (GLdouble
) ctx
->Viewport
.Width
;
2065 params
[3] = (GLdouble
) ctx
->Viewport
.Height
;
2068 *params
= (GLdouble
) ctx
->Pixel
.ZoomX
;
2071 *params
= (GLdouble
) ctx
->Pixel
.ZoomY
;
2073 case GL_VERTEX_ARRAY
:
2074 *params
= (GLdouble
) ctx
->Array
.Vertex
.Enabled
;
2076 case GL_VERTEX_ARRAY_SIZE
:
2077 *params
= (GLdouble
) ctx
->Array
.Vertex
.Size
;
2079 case GL_VERTEX_ARRAY_TYPE
:
2080 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Vertex
.Type
);
2082 case GL_VERTEX_ARRAY_STRIDE
:
2083 *params
= (GLdouble
) ctx
->Array
.Vertex
.Stride
;
2085 case GL_VERTEX_ARRAY_COUNT_EXT
:
2088 case GL_NORMAL_ARRAY
:
2089 *params
= (GLdouble
) ctx
->Array
.Normal
.Enabled
;
2091 case GL_NORMAL_ARRAY_TYPE
:
2092 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Normal
.Type
);
2094 case GL_NORMAL_ARRAY_STRIDE
:
2095 *params
= (GLdouble
) ctx
->Array
.Normal
.Stride
;
2097 case GL_NORMAL_ARRAY_COUNT_EXT
:
2100 case GL_COLOR_ARRAY
:
2101 *params
= (GLdouble
) ctx
->Array
.Color
.Enabled
;
2103 case GL_COLOR_ARRAY_SIZE
:
2104 *params
= (GLdouble
) ctx
->Array
.Color
.Size
;
2106 case GL_COLOR_ARRAY_TYPE
:
2107 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Color
.Type
);
2109 case GL_COLOR_ARRAY_STRIDE
:
2110 *params
= (GLdouble
) ctx
->Array
.Color
.Stride
;
2112 case GL_COLOR_ARRAY_COUNT_EXT
:
2115 case GL_INDEX_ARRAY
:
2116 *params
= (GLdouble
) ctx
->Array
.Index
.Enabled
;
2118 case GL_INDEX_ARRAY_TYPE
:
2119 *params
= ENUM_TO_DOUBLE(ctx
->Array
.Index
.Type
);
2121 case GL_INDEX_ARRAY_STRIDE
:
2122 *params
= (GLdouble
) ctx
->Array
.Index
.Stride
;
2124 case GL_INDEX_ARRAY_COUNT_EXT
:
2127 case GL_TEXTURE_COORD_ARRAY
:
2128 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
2130 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2131 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Size
;
2133 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2134 *params
= ENUM_TO_DOUBLE(ctx
->Array
.TexCoord
[texUnit
].Type
);
2136 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2137 *params
= (GLdouble
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
2139 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2142 case GL_EDGE_FLAG_ARRAY
:
2143 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Enabled
;
2145 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2146 *params
= (GLdouble
) ctx
->Array
.EdgeFlag
.Stride
;
2148 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2152 /* GL_ARB_multitexture */
2153 case GL_MAX_TEXTURE_UNITS_ARB
:
2154 *params
= (GLdouble
) ctx
->Const
.MaxTextureUnits
;
2156 case GL_ACTIVE_TEXTURE_ARB
:
2157 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2159 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2160 *params
= (GLdouble
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2163 /* GL_ARB_texture_cube_map */
2164 case GL_TEXTURE_CUBE_MAP_ARB
:
2165 if (ctx
->Extensions
.ARB_texture_cube_map
)
2166 *params
= (GLdouble
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
2168 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2170 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2171 if (ctx
->Extensions
.ARB_texture_cube_map
)
2172 *params
= (GLdouble
) textureUnit
->CurrentCubeMap
->Name
;
2174 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2176 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
2177 if (ctx
->Extensions
.ARB_texture_cube_map
)
2178 *params
= (GLdouble
) ctx
->Const
.MaxCubeTextureSize
;
2180 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2183 /* GL_ARB_texture_compression */
2184 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
2185 if (ctx
->Extensions
.ARB_texture_compression
) {
2186 *params
= (GLdouble
) ctx
->Hint
.TextureCompression
;
2189 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2191 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
2192 if (ctx
->Extensions
.ARB_texture_compression
) {
2193 *params
= (GLdouble
) ctx
->Const
.NumCompressedTextureFormats
;
2196 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2198 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
2199 if (ctx
->Extensions
.ARB_texture_compression
) {
2201 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
2202 params
[i
] = (GLdouble
) ctx
->Const
.CompressedTextureFormats
[i
];
2205 gl_error(ctx
, GL_INVALID_ENUM
, "glGetDoublev");
2208 /* GL_PGI_misc_hints */
2209 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
2210 *params
= ENUM_TO_DOUBLE(GL_NICEST
);
2212 case GL_STRICT_LIGHTING_HINT_PGI
:
2213 *params
= ENUM_TO_DOUBLE(ctx
->Hint
.StrictLighting
);
2215 case GL_STRICT_SCISSOR_HINT_PGI
:
2216 case GL_FULL_STIPPLE_HINT_PGI
:
2217 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2219 case GL_CONSERVE_MEMORY_HINT_PGI
:
2220 *params
= ENUM_TO_DOUBLE(GL_FALSE
);
2222 case GL_ALWAYS_FAST_HINT_PGI
:
2223 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2224 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
2225 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
2227 case GL_ALWAYS_SOFT_HINT_PGI
:
2228 *params
= (GLdouble
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
2229 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
2230 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
2232 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
2233 *params
= (GLdouble
) GL_TRUE
;
2235 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
2236 *params
= (GLdouble
) ctx
->Hint
.AllowDrawWin
;
2238 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
2239 *params
= (GLdouble
) ctx
->Hint
.AllowDrawFrg
;
2241 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
2242 *params
= (GLdouble
) ctx
->Hint
.AllowDrawMem
;
2244 case GL_CLIP_NEAR_HINT_PGI
:
2245 case GL_CLIP_FAR_HINT_PGI
:
2246 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2248 case GL_WIDE_LINE_HINT_PGI
:
2249 *params
= ENUM_TO_DOUBLE(GL_DONT_CARE
);
2251 case GL_BACK_NORMALS_HINT_PGI
:
2252 *params
= ENUM_TO_DOUBLE(GL_TRUE
);
2254 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
2258 /* GL_EXT_compiled_vertex_array */
2259 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
2260 *params
= (GLdouble
) ctx
->Array
.LockFirst
;
2262 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
2263 *params
= (GLdouble
) ctx
->Array
.LockCount
;
2266 /* GL_ARB_transpose_matrix */
2267 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
2271 gl_matrix_transposef(tm
, ctx
->ColorMatrix
.m
);
2272 for (i
=0;i
<16;i
++) {
2273 params
[i
] = (GLdouble
) tm
[i
];
2277 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
2281 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
2282 for (i
=0;i
<16;i
++) {
2283 params
[i
] = (GLdouble
) tm
[i
];
2287 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
2291 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
2292 for (i
=0;i
<16;i
++) {
2293 params
[i
] = (GLdouble
) tm
[i
];
2297 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
2301 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
2302 for (i
=0;i
<16;i
++) {
2303 params
[i
] = (GLdouble
) tm
[i
];
2308 /* GL_HP_occlusion_test */
2309 case GL_OCCLUSION_TEST_HP
:
2310 if (ctx
->Extensions
.HP_occlusion_test
) {
2311 *params
= (GLdouble
) ctx
->Depth
.OcclusionTest
;
2314 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2317 case GL_OCCLUSION_TEST_RESULT_HP
:
2318 if (ctx
->Extensions
.HP_occlusion_test
) {
2319 if (ctx
->Depth
.OcclusionTest
)
2320 *params
= (GLdouble
) ctx
->OcclusionResult
;
2322 *params
= (GLdouble
) ctx
->OcclusionResultSaved
;
2323 /* reset flag now */
2324 ctx
->OcclusionResult
= GL_FALSE
;
2325 ctx
->OcclusionResultSaved
= GL_FALSE
;
2328 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2332 /* GL_SGIS_pixel_texture */
2333 case GL_PIXEL_TEXTURE_SGIS
:
2334 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2337 /* GL_SGIX_pixel_texture */
2338 case GL_PIXEL_TEX_GEN_SGIX
:
2339 *params
= (GLdouble
) ctx
->Pixel
.PixelTextureEnabled
;
2341 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
2342 *params
= (GLdouble
) pixel_texgen_mode(ctx
);
2345 /* GL_SGI_color_matrix (also in 1.2 imaging) */
2346 case GL_COLOR_MATRIX_SGI
:
2347 for (i
=0;i
<16;i
++) {
2348 params
[i
] = (GLdouble
) ctx
->ColorMatrix
.m
[i
];
2351 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
2352 *params
= (GLdouble
) (ctx
->ColorStackDepth
+ 1);
2354 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
2355 *params
= (GLdouble
) MAX_COLOR_STACK_DEPTH
;
2357 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
2358 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[0];
2360 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
2361 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[1];
2363 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
2364 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[2];
2366 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
2367 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixScale
[3];
2369 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
2370 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[0];
2372 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
2373 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[1];
2375 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
2376 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[2];
2378 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
2379 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixBias
[3];
2382 /* GL_EXT_convolution (also in 1.2 imaging) */
2383 case GL_MAX_CONVOLUTION_WIDTH
:
2384 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionWidth
;
2386 case GL_MAX_CONVOLUTION_HEIGHT
:
2387 *params
= (GLdouble
) ctx
->Const
.MaxConvolutionHeight
;
2389 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
2390 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[0];
2392 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
2393 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[1];
2395 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
2396 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[2];
2398 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
2399 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionScale
[3];
2401 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
2402 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[0];
2404 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
2405 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[1];
2407 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
2408 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2410 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
2411 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionBias
[2];
2414 /* GL_SGI_color_table (also in 1.2 imaging */
2415 case GL_COLOR_TABLE_SGI
:
2416 *params
= (GLdouble
) ctx
->Pixel
.ColorTableEnabled
;
2418 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
2419 *params
= (GLdouble
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
2421 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
2422 *params
= (GLdouble
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
2425 /* GL_EXT_secondary_color */
2426 case GL_COLOR_SUM_EXT
:
2427 *params
= (GLdouble
) ctx
->Fog
.ColorSumEnabled
;
2429 case GL_CURRENT_SECONDARY_COLOR_EXT
:
2430 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[0]);
2431 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[1]);
2432 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[2]);
2434 case GL_SECONDARY_COLOR_ARRAY_EXT
:
2435 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Enabled
;
2437 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
2438 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Type
;
2440 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
2441 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2443 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
2444 *params
= (GLdouble
) ctx
->Array
.SecondaryColor
.Stride
;
2447 /* GL_EXT_fog_coord */
2448 case GL_CURRENT_FOG_COORDINATE_EXT
:
2449 *params
= (GLdouble
) ctx
->Current
.FogCoord
;
2451 case GL_FOG_COORDINATE_ARRAY_EXT
:
2452 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Enabled
;
2454 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
2455 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Type
;
2457 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
2458 *params
= (GLdouble
) ctx
->Array
.FogCoord
.Stride
;
2463 gl_error( ctx
, GL_INVALID_ENUM
, "glGetDoublev" );
2471 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
2473 GET_CURRENT_CONTEXT(ctx
);
2475 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
2476 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
2477 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
2479 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetFloatv");
2484 if (MESA_VERBOSE
& VERBOSE_API
)
2485 fprintf(stderr
, "glGetFloatv %s\n", gl_lookup_enum_by_nr(pname
));
2487 if (ctx
->Driver
.GetFloatv
&& (*ctx
->Driver
.GetFloatv
)(ctx
, pname
, params
))
2491 case GL_ACCUM_RED_BITS
:
2492 *params
= (GLfloat
) ctx
->Visual
.AccumRedBits
;
2494 case GL_ACCUM_GREEN_BITS
:
2495 *params
= (GLfloat
) ctx
->Visual
.AccumGreenBits
;
2497 case GL_ACCUM_BLUE_BITS
:
2498 *params
= (GLfloat
) ctx
->Visual
.AccumBlueBits
;
2500 case GL_ACCUM_ALPHA_BITS
:
2501 *params
= (GLfloat
) ctx
->Visual
.AccumAlphaBits
;
2503 case GL_ACCUM_CLEAR_VALUE
:
2504 params
[0] = ctx
->Accum
.ClearColor
[0];
2505 params
[1] = ctx
->Accum
.ClearColor
[1];
2506 params
[2] = ctx
->Accum
.ClearColor
[2];
2507 params
[3] = ctx
->Accum
.ClearColor
[3];
2510 *params
= ctx
->Pixel
.AlphaBias
;
2513 *params
= (GLfloat
) ctx
->Visual
.AlphaBits
;
2515 case GL_ALPHA_SCALE
:
2516 *params
= ctx
->Pixel
.AlphaScale
;
2519 *params
= (GLfloat
) ctx
->Color
.AlphaEnabled
;
2521 case GL_ALPHA_TEST_FUNC
:
2522 *params
= ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2524 case GL_ALPHA_TEST_REF
:
2525 *params
= (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
;
2527 case GL_ATTRIB_STACK_DEPTH
:
2528 *params
= (GLfloat
) (ctx
->AttribStackDepth
);
2530 case GL_AUTO_NORMAL
:
2531 *params
= (GLfloat
) ctx
->Eval
.AutoNormal
;
2533 case GL_AUX_BUFFERS
:
2534 *params
= (GLfloat
) ctx
->Const
.NumAuxBuffers
;
2537 *params
= (GLfloat
) ctx
->Color
.BlendEnabled
;
2540 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2543 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2545 case GL_BLEND_SRC_RGB_EXT
:
2546 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2548 case GL_BLEND_DST_RGB_EXT
:
2549 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2551 case GL_BLEND_SRC_ALPHA_EXT
:
2552 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2554 case GL_BLEND_DST_ALPHA_EXT
:
2555 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2557 case GL_BLEND_EQUATION_EXT
:
2558 *params
= ENUM_TO_FLOAT(ctx
->Color
.BlendEquation
);
2560 case GL_BLEND_COLOR_EXT
:
2561 params
[0] = ctx
->Color
.BlendColor
[0];
2562 params
[1] = ctx
->Color
.BlendColor
[1];
2563 params
[2] = ctx
->Color
.BlendColor
[2];
2564 params
[3] = ctx
->Color
.BlendColor
[3];
2567 *params
= ctx
->Pixel
.BlueBias
;
2570 *params
= (GLfloat
) ctx
->Visual
.BlueBits
;
2573 *params
= ctx
->Pixel
.BlueScale
;
2575 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2576 *params
= (GLfloat
) (ctx
->ClientAttribStackDepth
);
2578 case GL_CLIP_PLANE0
:
2579 case GL_CLIP_PLANE1
:
2580 case GL_CLIP_PLANE2
:
2581 case GL_CLIP_PLANE3
:
2582 case GL_CLIP_PLANE4
:
2583 case GL_CLIP_PLANE5
:
2584 *params
= (GLfloat
) ctx
->Transform
.ClipEnabled
[pname
-GL_CLIP_PLANE0
];
2586 case GL_COLOR_CLEAR_VALUE
:
2587 params
[0] = (GLfloat
) ctx
->Color
.ClearColor
[0];
2588 params
[1] = (GLfloat
) ctx
->Color
.ClearColor
[1];
2589 params
[2] = (GLfloat
) ctx
->Color
.ClearColor
[2];
2590 params
[3] = (GLfloat
) ctx
->Color
.ClearColor
[3];
2592 case GL_COLOR_MATERIAL
:
2593 *params
= (GLfloat
) ctx
->Light
.ColorMaterialEnabled
;
2595 case GL_COLOR_MATERIAL_FACE
:
2596 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2598 case GL_COLOR_MATERIAL_PARAMETER
:
2599 *params
= ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2601 case GL_COLOR_WRITEMASK
:
2602 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1.0F
: 0.0F
;
2603 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1.0F
: 0.0F
;
2604 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1.0F
: 0.0F
;
2605 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1.0F
: 0.0F
;
2608 *params
= (GLfloat
) ctx
->Polygon
.CullFlag
;
2610 case GL_CULL_FACE_MODE
:
2611 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2613 case GL_CURRENT_COLOR
:
2614 params
[0] = CHAN_TO_FLOAT(ctx
->Current
.Color
[0]);
2615 params
[1] = CHAN_TO_FLOAT(ctx
->Current
.Color
[1]);
2616 params
[2] = CHAN_TO_FLOAT(ctx
->Current
.Color
[2]);
2617 params
[3] = CHAN_TO_FLOAT(ctx
->Current
.Color
[3]);
2619 case GL_CURRENT_INDEX
:
2620 *params
= (GLfloat
) ctx
->Current
.Index
;
2622 case GL_CURRENT_NORMAL
:
2623 params
[0] = ctx
->Current
.Normal
[0];
2624 params
[1] = ctx
->Current
.Normal
[1];
2625 params
[2] = ctx
->Current
.Normal
[2];
2627 case GL_CURRENT_RASTER_COLOR
:
2628 params
[0] = ctx
->Current
.RasterColor
[0];
2629 params
[1] = ctx
->Current
.RasterColor
[1];
2630 params
[2] = ctx
->Current
.RasterColor
[2];
2631 params
[3] = ctx
->Current
.RasterColor
[3];
2633 case GL_CURRENT_RASTER_DISTANCE
:
2634 params
[0] = ctx
->Current
.RasterDistance
;
2636 case GL_CURRENT_RASTER_INDEX
:
2637 *params
= (GLfloat
) ctx
->Current
.RasterIndex
;
2639 case GL_CURRENT_RASTER_POSITION
:
2640 params
[0] = ctx
->Current
.RasterPos
[0];
2641 params
[1] = ctx
->Current
.RasterPos
[1];
2642 params
[2] = ctx
->Current
.RasterPos
[2];
2643 params
[3] = ctx
->Current
.RasterPos
[3];
2645 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2646 params
[0] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
2647 params
[1] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
2648 params
[2] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
2649 params
[3] = ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
2651 case GL_CURRENT_RASTER_POSITION_VALID
:
2652 *params
= (GLfloat
) ctx
->Current
.RasterPosValid
;
2654 case GL_CURRENT_TEXTURE_COORDS
:
2655 params
[0] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
2656 params
[1] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
2657 params
[2] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
2658 params
[3] = (GLfloat
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
2661 *params
= (GLfloat
) ctx
->Pixel
.DepthBias
;
2664 *params
= (GLfloat
) ctx
->Visual
.DepthBits
;
2666 case GL_DEPTH_CLEAR_VALUE
:
2667 *params
= (GLfloat
) ctx
->Depth
.Clear
;
2670 *params
= ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2672 case GL_DEPTH_RANGE
:
2673 params
[0] = (GLfloat
) ctx
->Viewport
.Near
;
2674 params
[1] = (GLfloat
) ctx
->Viewport
.Far
;
2676 case GL_DEPTH_SCALE
:
2677 *params
= (GLfloat
) ctx
->Pixel
.DepthScale
;
2680 *params
= (GLfloat
) ctx
->Depth
.Test
;
2682 case GL_DEPTH_WRITEMASK
:
2683 *params
= (GLfloat
) ctx
->Depth
.Mask
;
2686 *params
= (GLfloat
) ctx
->Color
.DitherFlag
;
2688 case GL_DOUBLEBUFFER
:
2689 *params
= (GLfloat
) ctx
->Visual
.DBflag
;
2691 case GL_DRAW_BUFFER
:
2692 *params
= ENUM_TO_FLOAT(ctx
->Color
.DrawBuffer
);
2695 *params
= (GLfloat
) ctx
->Current
.EdgeFlag
;
2697 case GL_FEEDBACK_BUFFER_SIZE
:
2698 *params
= (GLfloat
) ctx
->Feedback
.BufferSize
;
2700 case GL_FEEDBACK_BUFFER_TYPE
:
2701 *params
= ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2704 *params
= (GLfloat
) ctx
->Fog
.Enabled
;
2707 params
[0] = ctx
->Fog
.Color
[0];
2708 params
[1] = ctx
->Fog
.Color
[1];
2709 params
[2] = ctx
->Fog
.Color
[2];
2710 params
[3] = ctx
->Fog
.Color
[3];
2712 case GL_FOG_DENSITY
:
2713 *params
= ctx
->Fog
.Density
;
2716 *params
= ctx
->Fog
.End
;
2719 *params
= ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2722 *params
= ctx
->Fog
.Index
;
2725 *params
= ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2728 *params
= ctx
->Fog
.Start
;
2731 *params
= ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2734 *params
= (GLfloat
) ctx
->Pixel
.GreenBias
;
2737 *params
= (GLfloat
) ctx
->Visual
.GreenBits
;
2739 case GL_GREEN_SCALE
:
2740 *params
= (GLfloat
) ctx
->Pixel
.GreenScale
;
2743 if (ctx
->Extensions
.EXT_histogram
) {
2744 *params
= (GLfloat
) ctx
->Pixel
.HistogramEnabled
;
2747 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
2752 *params
= (GLfloat
) ctx
->Visual
.IndexBits
;
2754 case GL_INDEX_CLEAR_VALUE
:
2755 *params
= (GLfloat
) ctx
->Color
.ClearIndex
;
2758 *params
= ctx
->Visual
.RGBAflag
? 0.0F
: 1.0F
;
2760 case GL_INDEX_OFFSET
:
2761 *params
= (GLfloat
) ctx
->Pixel
.IndexOffset
;
2763 case GL_INDEX_SHIFT
:
2764 *params
= (GLfloat
) ctx
->Pixel
.IndexShift
;
2766 case GL_INDEX_WRITEMASK
:
2767 *params
= (GLfloat
) ctx
->Color
.IndexMask
;
2777 *params
= (GLfloat
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
2780 *params
= (GLfloat
) ctx
->Light
.Enabled
;
2782 case GL_LIGHT_MODEL_AMBIENT
:
2783 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2784 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2785 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2786 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2788 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2789 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2791 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2792 *params
= (GLfloat
) ctx
->Light
.Model
.LocalViewer
;
2794 case GL_LIGHT_MODEL_TWO_SIDE
:
2795 *params
= (GLfloat
) ctx
->Light
.Model
.TwoSide
;
2797 case GL_LINE_SMOOTH
:
2798 *params
= (GLfloat
) ctx
->Line
.SmoothFlag
;
2800 case GL_LINE_SMOOTH_HINT
:
2801 *params
= ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2803 case GL_LINE_STIPPLE
:
2804 *params
= (GLfloat
) ctx
->Line
.StippleFlag
;
2806 case GL_LINE_STIPPLE_PATTERN
:
2807 *params
= (GLfloat
) ctx
->Line
.StipplePattern
;
2809 case GL_LINE_STIPPLE_REPEAT
:
2810 *params
= (GLfloat
) ctx
->Line
.StippleFactor
;
2813 *params
= (GLfloat
) ctx
->Line
.Width
;
2815 case GL_LINE_WIDTH_GRANULARITY
:
2816 *params
= (GLfloat
) ctx
->Const
.LineWidthGranularity
;
2818 case GL_LINE_WIDTH_RANGE
:
2819 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidthAA
;
2820 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidthAA
;
2822 case GL_ALIASED_LINE_WIDTH_RANGE
:
2823 params
[0] = (GLfloat
) ctx
->Const
.MinLineWidth
;
2824 params
[1] = (GLfloat
) ctx
->Const
.MaxLineWidth
;
2827 *params
= (GLfloat
) ctx
->List
.ListBase
;
2830 *params
= (GLfloat
) ctx
->CurrentListNum
;
2833 *params
= ctx
->ExecuteFlag
? ENUM_TO_FLOAT(GL_COMPILE_AND_EXECUTE
)
2834 : ENUM_TO_FLOAT(GL_COMPILE
);
2836 case GL_INDEX_LOGIC_OP
:
2837 *params
= (GLfloat
) ctx
->Color
.IndexLogicOpEnabled
;
2839 case GL_COLOR_LOGIC_OP
:
2840 *params
= (GLfloat
) ctx
->Color
.ColorLogicOpEnabled
;
2842 case GL_LOGIC_OP_MODE
:
2843 *params
= ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2845 case GL_MAP1_COLOR_4
:
2846 *params
= (GLfloat
) ctx
->Eval
.Map1Color4
;
2848 case GL_MAP1_GRID_DOMAIN
:
2849 params
[0] = ctx
->Eval
.MapGrid1u1
;
2850 params
[1] = ctx
->Eval
.MapGrid1u2
;
2852 case GL_MAP1_GRID_SEGMENTS
:
2853 *params
= (GLfloat
) ctx
->Eval
.MapGrid1un
;
2856 *params
= (GLfloat
) ctx
->Eval
.Map1Index
;
2858 case GL_MAP1_NORMAL
:
2859 *params
= (GLfloat
) ctx
->Eval
.Map1Normal
;
2861 case GL_MAP1_TEXTURE_COORD_1
:
2862 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord1
;
2864 case GL_MAP1_TEXTURE_COORD_2
:
2865 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord2
;
2867 case GL_MAP1_TEXTURE_COORD_3
:
2868 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord3
;
2870 case GL_MAP1_TEXTURE_COORD_4
:
2871 *params
= (GLfloat
) ctx
->Eval
.Map1TextureCoord4
;
2873 case GL_MAP1_VERTEX_3
:
2874 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex3
;
2876 case GL_MAP1_VERTEX_4
:
2877 *params
= (GLfloat
) ctx
->Eval
.Map1Vertex4
;
2879 case GL_MAP2_COLOR_4
:
2880 *params
= (GLfloat
) ctx
->Eval
.Map2Color4
;
2882 case GL_MAP2_GRID_DOMAIN
:
2883 params
[0] = ctx
->Eval
.MapGrid2u1
;
2884 params
[1] = ctx
->Eval
.MapGrid2u2
;
2885 params
[2] = ctx
->Eval
.MapGrid2v1
;
2886 params
[3] = ctx
->Eval
.MapGrid2v2
;
2888 case GL_MAP2_GRID_SEGMENTS
:
2889 params
[0] = (GLfloat
) ctx
->Eval
.MapGrid2un
;
2890 params
[1] = (GLfloat
) ctx
->Eval
.MapGrid2vn
;
2893 *params
= (GLfloat
) ctx
->Eval
.Map2Index
;
2895 case GL_MAP2_NORMAL
:
2896 *params
= (GLfloat
) ctx
->Eval
.Map2Normal
;
2898 case GL_MAP2_TEXTURE_COORD_1
:
2899 *params
= ctx
->Eval
.Map2TextureCoord1
;
2901 case GL_MAP2_TEXTURE_COORD_2
:
2902 *params
= ctx
->Eval
.Map2TextureCoord2
;
2904 case GL_MAP2_TEXTURE_COORD_3
:
2905 *params
= ctx
->Eval
.Map2TextureCoord3
;
2907 case GL_MAP2_TEXTURE_COORD_4
:
2908 *params
= ctx
->Eval
.Map2TextureCoord4
;
2910 case GL_MAP2_VERTEX_3
:
2911 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex3
;
2913 case GL_MAP2_VERTEX_4
:
2914 *params
= (GLfloat
) ctx
->Eval
.Map2Vertex4
;
2917 *params
= (GLfloat
) ctx
->Pixel
.MapColorFlag
;
2919 case GL_MAP_STENCIL
:
2920 *params
= (GLfloat
) ctx
->Pixel
.MapStencilFlag
;
2922 case GL_MATRIX_MODE
:
2923 *params
= ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2925 case GL_MAX_ATTRIB_STACK_DEPTH
:
2926 *params
= (GLfloat
) MAX_ATTRIB_STACK_DEPTH
;
2928 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2929 *params
= (GLfloat
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
2931 case GL_MAX_CLIP_PLANES
:
2932 *params
= (GLfloat
) MAX_CLIP_PLANES
;
2934 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
2935 *params
= (GLfloat
) VB_MAX
;
2937 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
2938 *params
= (GLfloat
) VB_MAX
;
2940 case GL_MAX_EVAL_ORDER
:
2941 *params
= (GLfloat
) MAX_EVAL_ORDER
;
2944 *params
= (GLfloat
) MAX_LIGHTS
;
2946 case GL_MAX_LIST_NESTING
:
2947 *params
= (GLfloat
) MAX_LIST_NESTING
;
2949 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2950 *params
= (GLfloat
) MAX_MODELVIEW_STACK_DEPTH
;
2952 case GL_MAX_NAME_STACK_DEPTH
:
2953 *params
= (GLfloat
) MAX_NAME_STACK_DEPTH
;
2955 case GL_MAX_PIXEL_MAP_TABLE
:
2956 *params
= (GLfloat
) MAX_PIXEL_MAP_TABLE
;
2958 case GL_MAX_PROJECTION_STACK_DEPTH
:
2959 *params
= (GLfloat
) MAX_PROJECTION_STACK_DEPTH
;
2961 case GL_MAX_TEXTURE_SIZE
:
2962 case GL_MAX_3D_TEXTURE_SIZE
:
2963 *params
= (GLfloat
) ctx
->Const
.MaxTextureSize
;
2965 case GL_MAX_TEXTURE_STACK_DEPTH
:
2966 *params
= (GLfloat
) MAX_TEXTURE_STACK_DEPTH
;
2968 case GL_MAX_VIEWPORT_DIMS
:
2969 params
[0] = (GLfloat
) MAX_WIDTH
;
2970 params
[1] = (GLfloat
) MAX_HEIGHT
;
2973 *params
= (GLfloat
) ctx
->Pixel
.MinMaxEnabled
;
2975 case GL_MODELVIEW_MATRIX
:
2976 for (i
=0;i
<16;i
++) {
2977 params
[i
] = ctx
->ModelView
.m
[i
];
2980 case GL_MODELVIEW_STACK_DEPTH
:
2981 *params
= (GLfloat
) (ctx
->ModelViewStackDepth
+ 1);
2983 case GL_NAME_STACK_DEPTH
:
2984 *params
= (GLfloat
) ctx
->Select
.NameStackDepth
;
2987 *params
= (GLfloat
) ctx
->Transform
.Normalize
;
2989 case GL_PACK_ALIGNMENT
:
2990 *params
= (GLfloat
) ctx
->Pack
.Alignment
;
2992 case GL_PACK_LSB_FIRST
:
2993 *params
= (GLfloat
) ctx
->Pack
.LsbFirst
;
2995 case GL_PACK_ROW_LENGTH
:
2996 *params
= (GLfloat
) ctx
->Pack
.RowLength
;
2998 case GL_PACK_SKIP_PIXELS
:
2999 *params
= (GLfloat
) ctx
->Pack
.SkipPixels
;
3001 case GL_PACK_SKIP_ROWS
:
3002 *params
= (GLfloat
) ctx
->Pack
.SkipRows
;
3004 case GL_PACK_SWAP_BYTES
:
3005 *params
= (GLfloat
) ctx
->Pack
.SwapBytes
;
3007 case GL_PACK_SKIP_IMAGES_EXT
:
3008 *params
= (GLfloat
) ctx
->Pack
.SkipImages
;
3010 case GL_PACK_IMAGE_HEIGHT_EXT
:
3011 *params
= (GLfloat
) ctx
->Pack
.ImageHeight
;
3013 case GL_PERSPECTIVE_CORRECTION_HINT
:
3014 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
3016 case GL_PIXEL_MAP_A_TO_A_SIZE
:
3017 *params
= (GLfloat
) ctx
->Pixel
.MapAtoAsize
;
3019 case GL_PIXEL_MAP_B_TO_B_SIZE
:
3020 *params
= (GLfloat
) ctx
->Pixel
.MapBtoBsize
;
3022 case GL_PIXEL_MAP_G_TO_G_SIZE
:
3023 *params
= (GLfloat
) ctx
->Pixel
.MapGtoGsize
;
3025 case GL_PIXEL_MAP_I_TO_A_SIZE
:
3026 *params
= (GLfloat
) ctx
->Pixel
.MapItoAsize
;
3028 case GL_PIXEL_MAP_I_TO_B_SIZE
:
3029 *params
= (GLfloat
) ctx
->Pixel
.MapItoBsize
;
3031 case GL_PIXEL_MAP_I_TO_G_SIZE
:
3032 *params
= (GLfloat
) ctx
->Pixel
.MapItoGsize
;
3034 case GL_PIXEL_MAP_I_TO_I_SIZE
:
3035 *params
= (GLfloat
) ctx
->Pixel
.MapItoIsize
;
3037 case GL_PIXEL_MAP_I_TO_R_SIZE
:
3038 *params
= (GLfloat
) ctx
->Pixel
.MapItoRsize
;
3040 case GL_PIXEL_MAP_R_TO_R_SIZE
:
3041 *params
= (GLfloat
) ctx
->Pixel
.MapRtoRsize
;
3043 case GL_PIXEL_MAP_S_TO_S_SIZE
:
3044 *params
= (GLfloat
) ctx
->Pixel
.MapStoSsize
;
3047 *params
= (GLfloat
) ctx
->Point
.Size
;
3049 case GL_POINT_SIZE_GRANULARITY
:
3050 *params
= (GLfloat
) ctx
->Const
.PointSizeGranularity
;
3052 case GL_POINT_SIZE_RANGE
:
3053 params
[0] = (GLfloat
) ctx
->Const
.MinPointSizeAA
;
3054 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSizeAA
;
3056 case GL_ALIASED_POINT_SIZE_RANGE
:
3057 params
[0] = (GLfloat
) ctx
->Const
.MinPointSize
;
3058 params
[1] = (GLfloat
) ctx
->Const
.MaxPointSize
;
3060 case GL_POINT_SMOOTH
:
3061 *params
= (GLfloat
) ctx
->Point
.SmoothFlag
;
3063 case GL_POINT_SMOOTH_HINT
:
3064 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
3066 case GL_POINT_SIZE_MIN_EXT
:
3067 *params
= (GLfloat
) (ctx
->Point
.MinSize
);
3069 case GL_POINT_SIZE_MAX_EXT
:
3070 *params
= (GLfloat
) (ctx
->Point
.MaxSize
);
3072 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
3073 *params
= (GLfloat
) (ctx
->Point
.Threshold
);
3075 case GL_DISTANCE_ATTENUATION_EXT
:
3076 params
[0] = (GLfloat
) (ctx
->Point
.Params
[0]);
3077 params
[1] = (GLfloat
) (ctx
->Point
.Params
[1]);
3078 params
[2] = (GLfloat
) (ctx
->Point
.Params
[2]);
3080 case GL_POLYGON_MODE
:
3081 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
3082 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
3084 #ifdef GL_EXT_polygon_offset
3085 case GL_POLYGON_OFFSET_BIAS_EXT
:
3086 *params
= ctx
->Polygon
.OffsetUnits
;
3089 case GL_POLYGON_OFFSET_FACTOR
:
3090 *params
= ctx
->Polygon
.OffsetFactor
;
3092 case GL_POLYGON_OFFSET_UNITS
:
3093 *params
= ctx
->Polygon
.OffsetUnits
;
3095 case GL_POLYGON_SMOOTH
:
3096 *params
= (GLfloat
) ctx
->Polygon
.SmoothFlag
;
3098 case GL_POLYGON_SMOOTH_HINT
:
3099 *params
= ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
3101 case GL_POLYGON_STIPPLE
:
3102 *params
= (GLfloat
) ctx
->Polygon
.StippleFlag
;
3104 case GL_PROJECTION_MATRIX
:
3105 for (i
=0;i
<16;i
++) {
3106 params
[i
] = ctx
->ProjectionMatrix
.m
[i
];
3109 case GL_PROJECTION_STACK_DEPTH
:
3110 *params
= (GLfloat
) (ctx
->ProjectionStackDepth
+ 1);
3112 case GL_READ_BUFFER
:
3113 *params
= ENUM_TO_FLOAT(ctx
->Pixel
.ReadBuffer
);
3116 *params
= ctx
->Pixel
.RedBias
;
3119 *params
= (GLfloat
) ctx
->Visual
.RedBits
;
3122 *params
= ctx
->Pixel
.RedScale
;
3124 case GL_RENDER_MODE
:
3125 *params
= ENUM_TO_FLOAT(ctx
->RenderMode
);
3128 *params
= (GLfloat
) ctx
->Visual
.RGBAflag
;
3130 case GL_SCISSOR_BOX
:
3131 params
[0] = (GLfloat
) ctx
->Scissor
.X
;
3132 params
[1] = (GLfloat
) ctx
->Scissor
.Y
;
3133 params
[2] = (GLfloat
) ctx
->Scissor
.Width
;
3134 params
[3] = (GLfloat
) ctx
->Scissor
.Height
;
3136 case GL_SCISSOR_TEST
:
3137 *params
= (GLfloat
) ctx
->Scissor
.Enabled
;
3139 case GL_SELECTION_BUFFER_SIZE
:
3140 *params
= (GLfloat
) ctx
->Select
.BufferSize
;
3142 case GL_SHADE_MODEL
:
3143 *params
= ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
3145 case GL_SHARED_TEXTURE_PALETTE_EXT
:
3146 *params
= (GLfloat
) ctx
->Texture
.SharedPalette
;
3148 case GL_STENCIL_BITS
:
3149 *params
= (GLfloat
) ctx
->Visual
.StencilBits
;
3151 case GL_STENCIL_CLEAR_VALUE
:
3152 *params
= (GLfloat
) ctx
->Stencil
.Clear
;
3154 case GL_STENCIL_FAIL
:
3155 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
);
3157 case GL_STENCIL_FUNC
:
3158 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.Function
);
3160 case GL_STENCIL_PASS_DEPTH_FAIL
:
3161 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
);
3163 case GL_STENCIL_PASS_DEPTH_PASS
:
3164 *params
= ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
);
3166 case GL_STENCIL_REF
:
3167 *params
= (GLfloat
) ctx
->Stencil
.Ref
;
3169 case GL_STENCIL_TEST
:
3170 *params
= (GLfloat
) ctx
->Stencil
.Enabled
;
3172 case GL_STENCIL_VALUE_MASK
:
3173 *params
= (GLfloat
) ctx
->Stencil
.ValueMask
;
3175 case GL_STENCIL_WRITEMASK
:
3176 *params
= (GLfloat
) ctx
->Stencil
.WriteMask
;
3179 *params
= (GLfloat
) ctx
->Visual
.StereoFlag
;
3181 case GL_SUBPIXEL_BITS
:
3182 *params
= (GLfloat
) ctx
->Const
.SubPixelBits
;
3185 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1.0 : 0.0;
3188 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1.0 : 0.0;
3191 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1.0 : 0.0;
3193 case GL_TEXTURE_BINDING_1D
:
3194 *params
= (GLfloat
) textureUnit
->CurrentD
[1]->Name
;
3196 case GL_TEXTURE_BINDING_2D
:
3197 *params
= (GLfloat
) textureUnit
->CurrentD
[2]->Name
;
3199 case GL_TEXTURE_BINDING_3D
:
3200 *params
= (GLfloat
) textureUnit
->CurrentD
[2]->Name
;
3202 case GL_TEXTURE_ENV_COLOR
:
3203 params
[0] = textureUnit
->EnvColor
[0];
3204 params
[1] = textureUnit
->EnvColor
[1];
3205 params
[2] = textureUnit
->EnvColor
[2];
3206 params
[3] = textureUnit
->EnvColor
[3];
3208 case GL_TEXTURE_ENV_MODE
:
3209 *params
= ENUM_TO_FLOAT(textureUnit
->EnvMode
);
3211 case GL_TEXTURE_GEN_S
:
3212 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1.0 : 0.0;
3214 case GL_TEXTURE_GEN_T
:
3215 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1.0 : 0.0;
3217 case GL_TEXTURE_GEN_R
:
3218 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1.0 : 0.0;
3220 case GL_TEXTURE_GEN_Q
:
3221 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1.0 : 0.0;
3223 case GL_TEXTURE_MATRIX
:
3224 for (i
=0;i
<16;i
++) {
3225 params
[i
] = ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
3228 case GL_TEXTURE_STACK_DEPTH
:
3229 *params
= (GLfloat
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
3231 case GL_UNPACK_ALIGNMENT
:
3232 *params
= (GLfloat
) ctx
->Unpack
.Alignment
;
3234 case GL_UNPACK_LSB_FIRST
:
3235 *params
= (GLfloat
) ctx
->Unpack
.LsbFirst
;
3237 case GL_UNPACK_ROW_LENGTH
:
3238 *params
= (GLfloat
) ctx
->Unpack
.RowLength
;
3240 case GL_UNPACK_SKIP_PIXELS
:
3241 *params
= (GLfloat
) ctx
->Unpack
.SkipPixels
;
3243 case GL_UNPACK_SKIP_ROWS
:
3244 *params
= (GLfloat
) ctx
->Unpack
.SkipRows
;
3246 case GL_UNPACK_SWAP_BYTES
:
3247 *params
= (GLfloat
) ctx
->Unpack
.SwapBytes
;
3249 case GL_UNPACK_SKIP_IMAGES_EXT
:
3250 *params
= (GLfloat
) ctx
->Unpack
.SkipImages
;
3252 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
3253 *params
= (GLfloat
) ctx
->Unpack
.ImageHeight
;
3256 params
[0] = (GLfloat
) ctx
->Viewport
.X
;
3257 params
[1] = (GLfloat
) ctx
->Viewport
.Y
;
3258 params
[2] = (GLfloat
) ctx
->Viewport
.Width
;
3259 params
[3] = (GLfloat
) ctx
->Viewport
.Height
;
3262 *params
= (GLfloat
) ctx
->Pixel
.ZoomX
;
3265 *params
= (GLfloat
) ctx
->Pixel
.ZoomY
;
3267 case GL_VERTEX_ARRAY
:
3268 *params
= (GLfloat
) ctx
->Array
.Vertex
.Enabled
;
3270 case GL_VERTEX_ARRAY_SIZE
:
3271 *params
= (GLfloat
) ctx
->Array
.Vertex
.Size
;
3273 case GL_VERTEX_ARRAY_TYPE
:
3274 *params
= ENUM_TO_FLOAT(ctx
->Array
.Vertex
.Type
);
3276 case GL_VERTEX_ARRAY_STRIDE
:
3277 *params
= (GLfloat
) ctx
->Array
.Vertex
.Stride
;
3279 case GL_VERTEX_ARRAY_COUNT_EXT
:
3282 case GL_NORMAL_ARRAY
:
3283 *params
= (GLfloat
) ctx
->Array
.Normal
.Enabled
;
3285 case GL_NORMAL_ARRAY_TYPE
:
3286 *params
= ENUM_TO_FLOAT(ctx
->Array
.Normal
.Type
);
3288 case GL_NORMAL_ARRAY_STRIDE
:
3289 *params
= (GLfloat
) ctx
->Array
.Normal
.Stride
;
3291 case GL_NORMAL_ARRAY_COUNT_EXT
:
3294 case GL_COLOR_ARRAY
:
3295 *params
= (GLfloat
) ctx
->Array
.Color
.Enabled
;
3297 case GL_COLOR_ARRAY_SIZE
:
3298 *params
= (GLfloat
) ctx
->Array
.Color
.Size
;
3300 case GL_COLOR_ARRAY_TYPE
:
3301 *params
= ENUM_TO_FLOAT(ctx
->Array
.Color
.Type
);
3303 case GL_COLOR_ARRAY_STRIDE
:
3304 *params
= (GLfloat
) ctx
->Array
.Color
.Stride
;
3306 case GL_COLOR_ARRAY_COUNT_EXT
:
3309 case GL_INDEX_ARRAY
:
3310 *params
= (GLfloat
) ctx
->Array
.Index
.Enabled
;
3312 case GL_INDEX_ARRAY_TYPE
:
3313 *params
= ENUM_TO_FLOAT(ctx
->Array
.Index
.Type
);
3315 case GL_INDEX_ARRAY_STRIDE
:
3316 *params
= (GLfloat
) ctx
->Array
.Index
.Stride
;
3318 case GL_INDEX_ARRAY_COUNT_EXT
:
3321 case GL_TEXTURE_COORD_ARRAY
:
3322 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
3324 case GL_TEXTURE_COORD_ARRAY_SIZE
:
3325 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Size
;
3327 case GL_TEXTURE_COORD_ARRAY_TYPE
:
3328 *params
= ENUM_TO_FLOAT(ctx
->Array
.TexCoord
[texUnit
].Type
);
3330 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3331 *params
= (GLfloat
) ctx
->Array
.TexCoord
[texUnit
].Stride
;
3333 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3336 case GL_EDGE_FLAG_ARRAY
:
3337 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Enabled
;
3339 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3340 *params
= (GLfloat
) ctx
->Array
.EdgeFlag
.Stride
;
3342 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3346 /* GL_ARB_multitexture */
3347 case GL_MAX_TEXTURE_UNITS_ARB
:
3348 *params
= (GLfloat
) ctx
->Const
.MaxTextureUnits
;
3350 case GL_ACTIVE_TEXTURE_ARB
:
3351 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3353 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3354 *params
= (GLfloat
) (GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3357 /* GL_ARB_texture_cube_map */
3358 case GL_TEXTURE_CUBE_MAP_ARB
:
3359 if (ctx
->Extensions
.ARB_texture_cube_map
)
3360 *params
= (GLfloat
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
3362 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3364 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3365 if (ctx
->Extensions
.ARB_texture_cube_map
)
3366 *params
= (GLfloat
) textureUnit
->CurrentCubeMap
->Name
;
3368 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3370 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3371 if (ctx
->Extensions
.ARB_texture_cube_map
)
3372 *params
= (GLfloat
) ctx
->Const
.MaxCubeTextureSize
;
3374 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3377 /* GL_ARB_texture_compression */
3378 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3379 if (ctx
->Extensions
.ARB_texture_compression
) {
3380 *params
= (GLfloat
) ctx
->Hint
.TextureCompression
;
3383 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3385 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3386 if (ctx
->Extensions
.ARB_texture_compression
) {
3387 *params
= (GLfloat
) ctx
->Const
.NumCompressedTextureFormats
;
3390 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3392 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3393 if (ctx
->Extensions
.ARB_texture_compression
) {
3395 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
3396 params
[i
] = (GLfloat
) ctx
->Const
.CompressedTextureFormats
[i
];
3399 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3402 /* GL_PGI_misc_hints */
3403 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
3404 *params
= ENUM_TO_FLOAT(GL_NICEST
);
3406 case GL_STRICT_LIGHTING_HINT_PGI
:
3407 *params
= ENUM_TO_FLOAT(ctx
->Hint
.StrictLighting
);
3409 case GL_STRICT_SCISSOR_HINT_PGI
:
3410 case GL_FULL_STIPPLE_HINT_PGI
:
3411 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3413 case GL_CONSERVE_MEMORY_HINT_PGI
:
3414 *params
= ENUM_TO_FLOAT(GL_FALSE
);
3416 case GL_ALWAYS_FAST_HINT_PGI
:
3417 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3418 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
3419 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
3421 case GL_ALWAYS_SOFT_HINT_PGI
:
3422 *params
= (GLfloat
) (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
3423 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
3424 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
3426 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
3427 *params
= (GLfloat
) GL_TRUE
;
3429 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
3430 *params
= (GLfloat
) ctx
->Hint
.AllowDrawWin
;
3432 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
3433 *params
= (GLfloat
) ctx
->Hint
.AllowDrawFrg
;
3435 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
3436 *params
= (GLfloat
) ctx
->Hint
.AllowDrawMem
;
3438 case GL_CLIP_NEAR_HINT_PGI
:
3439 case GL_CLIP_FAR_HINT_PGI
:
3440 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3442 case GL_WIDE_LINE_HINT_PGI
:
3443 *params
= ENUM_TO_FLOAT(GL_DONT_CARE
);
3445 case GL_BACK_NORMALS_HINT_PGI
:
3446 *params
= ENUM_TO_FLOAT(GL_TRUE
);
3448 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
3452 /* GL_EXT_compiled_vertex_array */
3453 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3454 *params
= (GLfloat
) ctx
->Array
.LockFirst
;
3456 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3457 *params
= (GLfloat
) ctx
->Array
.LockCount
;
3460 /* GL_ARB_transpose_matrix */
3461 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3462 gl_matrix_transposef(params
, ctx
->ColorMatrix
.m
);
3464 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3465 gl_matrix_transposef(params
, ctx
->ModelView
.m
);
3467 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3468 gl_matrix_transposef(params
, ctx
->ProjectionMatrix
.m
);
3470 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3471 gl_matrix_transposef(params
, ctx
->TextureMatrix
[texTransformUnit
].m
);
3474 /* GL_HP_occlusion_test */
3475 case GL_OCCLUSION_TEST_HP
:
3476 if (ctx
->Extensions
.HP_occlusion_test
) {
3477 *params
= (GLfloat
) ctx
->Depth
.OcclusionTest
;
3480 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3483 case GL_OCCLUSION_TEST_RESULT_HP
:
3484 if (ctx
->Extensions
.HP_occlusion_test
) {
3485 if (ctx
->Depth
.OcclusionTest
)
3486 *params
= (GLfloat
) ctx
->OcclusionResult
;
3488 *params
= (GLfloat
) ctx
->OcclusionResultSaved
;
3489 /* reset flag now */
3490 ctx
->OcclusionResult
= GL_FALSE
;
3491 ctx
->OcclusionResultSaved
= GL_FALSE
;
3494 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3498 /* GL_SGIS_pixel_texture */
3499 case GL_PIXEL_TEXTURE_SGIS
:
3500 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3503 /* GL_SGIX_pixel_texture */
3504 case GL_PIXEL_TEX_GEN_SGIX
:
3505 *params
= (GLfloat
) ctx
->Pixel
.PixelTextureEnabled
;
3507 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
3508 *params
= (GLfloat
) pixel_texgen_mode(ctx
);
3511 /* GL_SGI_color_matrix (also in 1.2 imaging) */
3512 case GL_COLOR_MATRIX_SGI
:
3513 for (i
=0;i
<16;i
++) {
3514 params
[i
] = ctx
->ColorMatrix
.m
[i
];
3517 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3518 *params
= (GLfloat
) (ctx
->ColorStackDepth
+ 1);
3520 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3521 *params
= (GLfloat
) MAX_COLOR_STACK_DEPTH
;
3523 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3524 *params
= ctx
->Pixel
.PostColorMatrixScale
[0];
3526 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3527 *params
= ctx
->Pixel
.PostColorMatrixScale
[1];
3529 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3530 *params
= ctx
->Pixel
.PostColorMatrixScale
[2];
3532 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3533 *params
= ctx
->Pixel
.PostColorMatrixScale
[3];
3535 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3536 *params
= ctx
->Pixel
.PostColorMatrixBias
[0];
3538 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3539 *params
= ctx
->Pixel
.PostColorMatrixBias
[1];
3541 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3542 *params
= ctx
->Pixel
.PostColorMatrixBias
[2];
3544 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3545 *params
= ctx
->Pixel
.PostColorMatrixBias
[3];
3548 /* GL_EXT_convolution (also in 1.2 imaging) */
3549 case GL_MAX_CONVOLUTION_WIDTH
:
3550 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionWidth
;
3552 case GL_MAX_CONVOLUTION_HEIGHT
:
3553 *params
= (GLfloat
) ctx
->Const
.MaxConvolutionHeight
;
3555 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3556 *params
= ctx
->Pixel
.PostConvolutionScale
[0];
3558 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3559 *params
= ctx
->Pixel
.PostConvolutionScale
[1];
3561 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3562 *params
= ctx
->Pixel
.PostConvolutionScale
[2];
3564 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3565 *params
= ctx
->Pixel
.PostConvolutionScale
[3];
3567 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3568 *params
= ctx
->Pixel
.PostConvolutionBias
[0];
3570 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3571 *params
= ctx
->Pixel
.PostConvolutionBias
[1];
3573 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3574 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3576 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3577 *params
= ctx
->Pixel
.PostConvolutionBias
[2];
3580 /* GL_SGI_color_table (also in 1.2 imaging */
3581 case GL_COLOR_TABLE_SGI
:
3582 *params
= (GLfloat
) ctx
->Pixel
.ColorTableEnabled
;
3584 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3585 *params
= (GLfloat
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
3587 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3588 *params
= (GLfloat
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
3591 /* GL_EXT_secondary_color */
3592 case GL_COLOR_SUM_EXT
:
3593 *params
= (GLfloat
) ctx
->Fog
.ColorSumEnabled
;
3595 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3596 params
[0] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[0]);
3597 params
[1] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[1]);
3598 params
[2] = UBYTE_COLOR_TO_FLOAT_COLOR(ctx
->Current
.SecondaryColor
[2]);
3600 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3601 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Enabled
;
3603 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3604 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Type
;
3606 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3607 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3609 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3610 *params
= (GLfloat
) ctx
->Array
.SecondaryColor
.Stride
;
3613 /* GL_EXT_fog_coord */
3614 case GL_CURRENT_FOG_COORDINATE_EXT
:
3615 *params
= (GLfloat
) ctx
->Current
.FogCoord
;
3617 case GL_FOG_COORDINATE_ARRAY_EXT
:
3618 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Enabled
;
3620 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3621 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Type
;
3623 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3624 *params
= (GLfloat
) ctx
->Array
.FogCoord
.Stride
;
3629 gl_error( ctx
, GL_INVALID_ENUM
, "glGetFloatv" );
3637 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3639 GET_CURRENT_CONTEXT(ctx
);
3641 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
3642 GLuint texTransformUnit
= ctx
->Texture
.CurrentTransformUnit
;
3643 const struct gl_texture_unit
*textureUnit
= &ctx
->Texture
.Unit
[texUnit
];
3645 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetIntegerv");
3650 if (MESA_VERBOSE
& VERBOSE_API
)
3651 fprintf(stderr
, "glGetIntegerv %s\n", gl_lookup_enum_by_nr(pname
));
3653 if (ctx
->Driver
.GetIntegerv
3654 && (*ctx
->Driver
.GetIntegerv
)(ctx
, pname
, params
))
3658 case GL_ACCUM_RED_BITS
:
3659 *params
= (GLint
) ctx
->Visual
.AccumRedBits
;
3661 case GL_ACCUM_GREEN_BITS
:
3662 *params
= (GLint
) ctx
->Visual
.AccumGreenBits
;
3664 case GL_ACCUM_BLUE_BITS
:
3665 *params
= (GLint
) ctx
->Visual
.AccumBlueBits
;
3667 case GL_ACCUM_ALPHA_BITS
:
3668 *params
= (GLint
) ctx
->Visual
.AccumAlphaBits
;
3670 case GL_ACCUM_CLEAR_VALUE
:
3671 params
[0] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[0] );
3672 params
[1] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[1] );
3673 params
[2] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[2] );
3674 params
[3] = FLOAT_TO_INT( ctx
->Accum
.ClearColor
[3] );
3677 *params
= (GLint
) ctx
->Pixel
.AlphaBias
;
3680 *params
= ctx
->Visual
.AlphaBits
;
3682 case GL_ALPHA_SCALE
:
3683 *params
= (GLint
) ctx
->Pixel
.AlphaScale
;
3686 *params
= (GLint
) ctx
->Color
.AlphaEnabled
;
3688 case GL_ALPHA_TEST_REF
:
3689 *params
= FLOAT_TO_INT( (GLfloat
) ctx
->Color
.AlphaRef
/ CHAN_MAXF
);
3691 case GL_ALPHA_TEST_FUNC
:
3692 *params
= (GLint
) ctx
->Color
.AlphaFunc
;
3694 case GL_ATTRIB_STACK_DEPTH
:
3695 *params
= (GLint
) (ctx
->AttribStackDepth
);
3697 case GL_AUTO_NORMAL
:
3698 *params
= (GLint
) ctx
->Eval
.AutoNormal
;
3700 case GL_AUX_BUFFERS
:
3701 *params
= (GLint
) ctx
->Const
.NumAuxBuffers
;
3704 *params
= (GLint
) ctx
->Color
.BlendEnabled
;
3707 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3710 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3712 case GL_BLEND_SRC_RGB_EXT
:
3713 *params
= (GLint
) ctx
->Color
.BlendSrcRGB
;
3715 case GL_BLEND_DST_RGB_EXT
:
3716 *params
= (GLint
) ctx
->Color
.BlendDstRGB
;
3718 case GL_BLEND_SRC_ALPHA_EXT
:
3719 *params
= (GLint
) ctx
->Color
.BlendSrcA
;
3721 case GL_BLEND_DST_ALPHA_EXT
:
3722 *params
= (GLint
) ctx
->Color
.BlendDstA
;
3724 case GL_BLEND_EQUATION_EXT
:
3725 *params
= (GLint
) ctx
->Color
.BlendEquation
;
3727 case GL_BLEND_COLOR_EXT
:
3728 params
[0] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[0] );
3729 params
[1] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[1] );
3730 params
[2] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[2] );
3731 params
[3] = FLOAT_TO_INT( ctx
->Color
.BlendColor
[3] );
3734 *params
= (GLint
) ctx
->Pixel
.BlueBias
;
3737 *params
= (GLint
) ctx
->Visual
.BlueBits
;
3740 *params
= (GLint
) ctx
->Pixel
.BlueScale
;
3742 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3743 *params
= (GLint
) (ctx
->ClientAttribStackDepth
);
3745 case GL_CLIP_PLANE0
:
3746 case GL_CLIP_PLANE1
:
3747 case GL_CLIP_PLANE2
:
3748 case GL_CLIP_PLANE3
:
3749 case GL_CLIP_PLANE4
:
3750 case GL_CLIP_PLANE5
:
3751 i
= (GLint
) (pname
- GL_CLIP_PLANE0
);
3752 *params
= (GLint
) ctx
->Transform
.ClipEnabled
[i
];
3754 case GL_COLOR_CLEAR_VALUE
:
3755 params
[0] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[0] );
3756 params
[1] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[1] );
3757 params
[2] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[2] );
3758 params
[3] = FLOAT_TO_INT( ctx
->Color
.ClearColor
[3] );
3760 case GL_COLOR_MATERIAL
:
3761 *params
= (GLint
) ctx
->Light
.ColorMaterialEnabled
;
3763 case GL_COLOR_MATERIAL_FACE
:
3764 *params
= (GLint
) ctx
->Light
.ColorMaterialFace
;
3766 case GL_COLOR_MATERIAL_PARAMETER
:
3767 *params
= (GLint
) ctx
->Light
.ColorMaterialMode
;
3769 case GL_COLOR_WRITEMASK
:
3770 params
[0] = ctx
->Color
.ColorMask
[RCOMP
] ? 1 : 0;
3771 params
[1] = ctx
->Color
.ColorMask
[GCOMP
] ? 1 : 0;
3772 params
[2] = ctx
->Color
.ColorMask
[BCOMP
] ? 1 : 0;
3773 params
[3] = ctx
->Color
.ColorMask
[ACOMP
] ? 1 : 0;
3776 *params
= (GLint
) ctx
->Polygon
.CullFlag
;
3778 case GL_CULL_FACE_MODE
:
3779 *params
= (GLint
) ctx
->Polygon
.CullFaceMode
;
3781 case GL_CURRENT_COLOR
:
3782 params
[0] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[0] ) );
3783 params
[1] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[1] ) );
3784 params
[2] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[2] ) );
3785 params
[3] = FLOAT_TO_INT( CHAN_TO_FLOAT( ctx
->Current
.Color
[3] ) );
3787 case GL_CURRENT_INDEX
:
3788 *params
= (GLint
) ctx
->Current
.Index
;
3790 case GL_CURRENT_NORMAL
:
3791 params
[0] = FLOAT_TO_INT( ctx
->Current
.Normal
[0] );
3792 params
[1] = FLOAT_TO_INT( ctx
->Current
.Normal
[1] );
3793 params
[2] = FLOAT_TO_INT( ctx
->Current
.Normal
[2] );
3795 case GL_CURRENT_RASTER_COLOR
:
3796 params
[0] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[0] );
3797 params
[1] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[1] );
3798 params
[2] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[2] );
3799 params
[3] = FLOAT_TO_INT( ctx
->Current
.RasterColor
[3] );
3801 case GL_CURRENT_RASTER_DISTANCE
:
3802 params
[0] = (GLint
) ctx
->Current
.RasterDistance
;
3804 case GL_CURRENT_RASTER_INDEX
:
3805 *params
= (GLint
) ctx
->Current
.RasterIndex
;
3807 case GL_CURRENT_RASTER_POSITION
:
3808 params
[0] = (GLint
) ctx
->Current
.RasterPos
[0];
3809 params
[1] = (GLint
) ctx
->Current
.RasterPos
[1];
3810 params
[2] = (GLint
) ctx
->Current
.RasterPos
[2];
3811 params
[3] = (GLint
) ctx
->Current
.RasterPos
[3];
3813 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
3814 params
[0] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][0];
3815 params
[1] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][1];
3816 params
[2] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][2];
3817 params
[3] = (GLint
) ctx
->Current
.RasterMultiTexCoord
[texTransformUnit
][3];
3819 case GL_CURRENT_RASTER_POSITION_VALID
:
3820 *params
= (GLint
) ctx
->Current
.RasterPosValid
;
3822 case GL_CURRENT_TEXTURE_COORDS
:
3823 params
[0] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][0];
3824 params
[1] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][1];
3825 params
[2] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][2];
3826 params
[3] = (GLint
) ctx
->Current
.Texcoord
[texTransformUnit
][3];
3829 *params
= (GLint
) ctx
->Pixel
.DepthBias
;
3832 *params
= ctx
->Visual
.DepthBits
;
3834 case GL_DEPTH_CLEAR_VALUE
:
3835 *params
= (GLint
) ctx
->Depth
.Clear
;
3838 *params
= (GLint
) ctx
->Depth
.Func
;
3840 case GL_DEPTH_RANGE
:
3841 params
[0] = (GLint
) ctx
->Viewport
.Near
;
3842 params
[1] = (GLint
) ctx
->Viewport
.Far
;
3844 case GL_DEPTH_SCALE
:
3845 *params
= (GLint
) ctx
->Pixel
.DepthScale
;
3848 *params
= (GLint
) ctx
->Depth
.Test
;
3850 case GL_DEPTH_WRITEMASK
:
3851 *params
= (GLint
) ctx
->Depth
.Mask
;
3854 *params
= (GLint
) ctx
->Color
.DitherFlag
;
3856 case GL_DOUBLEBUFFER
:
3857 *params
= (GLint
) ctx
->Visual
.DBflag
;
3859 case GL_DRAW_BUFFER
:
3860 *params
= (GLint
) ctx
->Color
.DrawBuffer
;
3863 *params
= (GLint
) ctx
->Current
.EdgeFlag
;
3865 case GL_FEEDBACK_BUFFER_SIZE
:
3866 *params
= ctx
->Feedback
.BufferSize
;
3868 case GL_FEEDBACK_BUFFER_TYPE
:
3869 *params
= ctx
->Feedback
.Type
;
3872 *params
= (GLint
) ctx
->Fog
.Enabled
;
3875 params
[0] = FLOAT_TO_INT( ctx
->Fog
.Color
[0] );
3876 params
[1] = FLOAT_TO_INT( ctx
->Fog
.Color
[1] );
3877 params
[2] = FLOAT_TO_INT( ctx
->Fog
.Color
[2] );
3878 params
[3] = FLOAT_TO_INT( ctx
->Fog
.Color
[3] );
3880 case GL_FOG_DENSITY
:
3881 *params
= (GLint
) ctx
->Fog
.Density
;
3884 *params
= (GLint
) ctx
->Fog
.End
;
3887 *params
= (GLint
) ctx
->Hint
.Fog
;
3890 *params
= (GLint
) ctx
->Fog
.Index
;
3893 *params
= (GLint
) ctx
->Fog
.Mode
;
3896 *params
= (GLint
) ctx
->Fog
.Start
;
3899 *params
= (GLint
) ctx
->Polygon
.FrontFace
;
3902 *params
= (GLint
) ctx
->Pixel
.GreenBias
;
3905 *params
= (GLint
) ctx
->Visual
.GreenBits
;
3907 case GL_GREEN_SCALE
:
3908 *params
= (GLint
) ctx
->Pixel
.GreenScale
;
3911 if (ctx
->Extensions
.EXT_histogram
) {
3912 *params
= (GLint
) ctx
->Pixel
.HistogramEnabled
;
3915 gl_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv");
3920 *params
= (GLint
) ctx
->Visual
.IndexBits
;
3922 case GL_INDEX_CLEAR_VALUE
:
3923 *params
= (GLint
) ctx
->Color
.ClearIndex
;
3926 *params
= ctx
->Visual
.RGBAflag
? 0 : 1;
3928 case GL_INDEX_OFFSET
:
3929 *params
= ctx
->Pixel
.IndexOffset
;
3931 case GL_INDEX_SHIFT
:
3932 *params
= ctx
->Pixel
.IndexShift
;
3934 case GL_INDEX_WRITEMASK
:
3935 *params
= (GLint
) ctx
->Color
.IndexMask
;
3945 *params
= (GLint
) ctx
->Light
.Light
[pname
-GL_LIGHT0
].Enabled
;
3948 *params
= (GLint
) ctx
->Light
.Enabled
;
3950 case GL_LIGHT_MODEL_AMBIENT
:
3951 params
[0] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[0] );
3952 params
[1] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[1] );
3953 params
[2] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[2] );
3954 params
[3] = FLOAT_TO_INT( ctx
->Light
.Model
.Ambient
[3] );
3956 case GL_LIGHT_MODEL_COLOR_CONTROL
:
3957 params
[0] = (GLint
) ctx
->Light
.Model
.ColorControl
;
3959 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
3960 *params
= (GLint
) ctx
->Light
.Model
.LocalViewer
;
3962 case GL_LIGHT_MODEL_TWO_SIDE
:
3963 *params
= (GLint
) ctx
->Light
.Model
.TwoSide
;
3965 case GL_LINE_SMOOTH
:
3966 *params
= (GLint
) ctx
->Line
.SmoothFlag
;
3968 case GL_LINE_SMOOTH_HINT
:
3969 *params
= (GLint
) ctx
->Hint
.LineSmooth
;
3971 case GL_LINE_STIPPLE
:
3972 *params
= (GLint
) ctx
->Line
.StippleFlag
;
3974 case GL_LINE_STIPPLE_PATTERN
:
3975 *params
= (GLint
) ctx
->Line
.StipplePattern
;
3977 case GL_LINE_STIPPLE_REPEAT
:
3978 *params
= (GLint
) ctx
->Line
.StippleFactor
;
3981 *params
= (GLint
) ctx
->Line
.Width
;
3983 case GL_LINE_WIDTH_GRANULARITY
:
3984 *params
= (GLint
) ctx
->Const
.LineWidthGranularity
;
3986 case GL_LINE_WIDTH_RANGE
:
3987 params
[0] = (GLint
) ctx
->Const
.MinLineWidthAA
;
3988 params
[1] = (GLint
) ctx
->Const
.MaxLineWidthAA
;
3990 case GL_ALIASED_LINE_WIDTH_RANGE
:
3991 params
[0] = (GLint
) ctx
->Const
.MinLineWidth
;
3992 params
[1] = (GLint
) ctx
->Const
.MaxLineWidth
;
3995 *params
= (GLint
) ctx
->List
.ListBase
;
3998 *params
= (GLint
) ctx
->CurrentListNum
;
4001 *params
= ctx
->ExecuteFlag
? (GLint
) GL_COMPILE_AND_EXECUTE
4002 : (GLint
) GL_COMPILE
;
4004 case GL_INDEX_LOGIC_OP
:
4005 *params
= (GLint
) ctx
->Color
.IndexLogicOpEnabled
;
4007 case GL_COLOR_LOGIC_OP
:
4008 *params
= (GLint
) ctx
->Color
.ColorLogicOpEnabled
;
4010 case GL_LOGIC_OP_MODE
:
4011 *params
= (GLint
) ctx
->Color
.LogicOp
;
4013 case GL_MAP1_COLOR_4
:
4014 *params
= (GLint
) ctx
->Eval
.Map1Color4
;
4016 case GL_MAP1_GRID_DOMAIN
:
4017 params
[0] = (GLint
) ctx
->Eval
.MapGrid1u1
;
4018 params
[1] = (GLint
) ctx
->Eval
.MapGrid1u2
;
4020 case GL_MAP1_GRID_SEGMENTS
:
4021 *params
= (GLint
) ctx
->Eval
.MapGrid1un
;
4024 *params
= (GLint
) ctx
->Eval
.Map1Index
;
4026 case GL_MAP1_NORMAL
:
4027 *params
= (GLint
) ctx
->Eval
.Map1Normal
;
4029 case GL_MAP1_TEXTURE_COORD_1
:
4030 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord1
;
4032 case GL_MAP1_TEXTURE_COORD_2
:
4033 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord2
;
4035 case GL_MAP1_TEXTURE_COORD_3
:
4036 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord3
;
4038 case GL_MAP1_TEXTURE_COORD_4
:
4039 *params
= (GLint
) ctx
->Eval
.Map1TextureCoord4
;
4041 case GL_MAP1_VERTEX_3
:
4042 *params
= (GLint
) ctx
->Eval
.Map1Vertex3
;
4044 case GL_MAP1_VERTEX_4
:
4045 *params
= (GLint
) ctx
->Eval
.Map1Vertex4
;
4047 case GL_MAP2_COLOR_4
:
4048 *params
= (GLint
) ctx
->Eval
.Map2Color4
;
4050 case GL_MAP2_GRID_DOMAIN
:
4051 params
[0] = (GLint
) ctx
->Eval
.MapGrid2u1
;
4052 params
[1] = (GLint
) ctx
->Eval
.MapGrid2u2
;
4053 params
[2] = (GLint
) ctx
->Eval
.MapGrid2v1
;
4054 params
[3] = (GLint
) ctx
->Eval
.MapGrid2v2
;
4056 case GL_MAP2_GRID_SEGMENTS
:
4057 params
[0] = (GLint
) ctx
->Eval
.MapGrid2un
;
4058 params
[1] = (GLint
) ctx
->Eval
.MapGrid2vn
;
4061 *params
= (GLint
) ctx
->Eval
.Map2Index
;
4063 case GL_MAP2_NORMAL
:
4064 *params
= (GLint
) ctx
->Eval
.Map2Normal
;
4066 case GL_MAP2_TEXTURE_COORD_1
:
4067 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord1
;
4069 case GL_MAP2_TEXTURE_COORD_2
:
4070 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord2
;
4072 case GL_MAP2_TEXTURE_COORD_3
:
4073 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord3
;
4075 case GL_MAP2_TEXTURE_COORD_4
:
4076 *params
= (GLint
) ctx
->Eval
.Map2TextureCoord4
;
4078 case GL_MAP2_VERTEX_3
:
4079 *params
= (GLint
) ctx
->Eval
.Map2Vertex3
;
4081 case GL_MAP2_VERTEX_4
:
4082 *params
= (GLint
) ctx
->Eval
.Map2Vertex4
;
4085 *params
= (GLint
) ctx
->Pixel
.MapColorFlag
;
4087 case GL_MAP_STENCIL
:
4088 *params
= (GLint
) ctx
->Pixel
.MapStencilFlag
;
4090 case GL_MATRIX_MODE
:
4091 *params
= (GLint
) ctx
->Transform
.MatrixMode
;
4093 case GL_MAX_ATTRIB_STACK_DEPTH
:
4094 *params
= (GLint
) MAX_ATTRIB_STACK_DEPTH
;
4096 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4097 *params
= (GLint
) MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4099 case GL_MAX_CLIP_PLANES
:
4100 *params
= (GLint
) MAX_CLIP_PLANES
;
4102 case GL_MAX_ELEMENTS_VERTICES
: /* GL_VERSION_1_2 */
4105 case GL_MAX_ELEMENTS_INDICES
: /* GL_VERSION_1_2 */
4108 case GL_MAX_EVAL_ORDER
:
4109 *params
= (GLint
) MAX_EVAL_ORDER
;
4112 *params
= (GLint
) MAX_LIGHTS
;
4114 case GL_MAX_LIST_NESTING
:
4115 *params
= (GLint
) MAX_LIST_NESTING
;
4117 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4118 *params
= (GLint
) MAX_MODELVIEW_STACK_DEPTH
;
4120 case GL_MAX_NAME_STACK_DEPTH
:
4121 *params
= (GLint
) MAX_NAME_STACK_DEPTH
;
4123 case GL_MAX_PIXEL_MAP_TABLE
:
4124 *params
= (GLint
) MAX_PIXEL_MAP_TABLE
;
4126 case GL_MAX_PROJECTION_STACK_DEPTH
:
4127 *params
= (GLint
) MAX_PROJECTION_STACK_DEPTH
;
4129 case GL_MAX_TEXTURE_SIZE
:
4130 case GL_MAX_3D_TEXTURE_SIZE
:
4131 *params
= ctx
->Const
.MaxTextureSize
;
4133 case GL_MAX_TEXTURE_STACK_DEPTH
:
4134 *params
= (GLint
) MAX_TEXTURE_STACK_DEPTH
;
4136 case GL_MAX_VIEWPORT_DIMS
:
4137 params
[0] = (GLint
) MAX_WIDTH
;
4138 params
[1] = (GLint
) MAX_HEIGHT
;
4141 *params
= (GLint
) ctx
->Pixel
.MinMaxEnabled
;
4143 case GL_MODELVIEW_MATRIX
:
4144 for (i
=0;i
<16;i
++) {
4145 params
[i
] = (GLint
) ctx
->ModelView
.m
[i
];
4148 case GL_MODELVIEW_STACK_DEPTH
:
4149 *params
= (GLint
) (ctx
->ModelViewStackDepth
+ 1);
4151 case GL_NAME_STACK_DEPTH
:
4152 *params
= (GLint
) ctx
->Select
.NameStackDepth
;
4155 *params
= (GLint
) ctx
->Transform
.Normalize
;
4157 case GL_PACK_ALIGNMENT
:
4158 *params
= ctx
->Pack
.Alignment
;
4160 case GL_PACK_LSB_FIRST
:
4161 *params
= (GLint
) ctx
->Pack
.LsbFirst
;
4163 case GL_PACK_ROW_LENGTH
:
4164 *params
= ctx
->Pack
.RowLength
;
4166 case GL_PACK_SKIP_PIXELS
:
4167 *params
= ctx
->Pack
.SkipPixels
;
4169 case GL_PACK_SKIP_ROWS
:
4170 *params
= ctx
->Pack
.SkipRows
;
4172 case GL_PACK_SWAP_BYTES
:
4173 *params
= (GLint
) ctx
->Pack
.SwapBytes
;
4175 case GL_PACK_SKIP_IMAGES_EXT
:
4176 *params
= ctx
->Pack
.SkipImages
;
4178 case GL_PACK_IMAGE_HEIGHT_EXT
:
4179 *params
= ctx
->Pack
.ImageHeight
;
4181 case GL_PERSPECTIVE_CORRECTION_HINT
:
4182 *params
= (GLint
) ctx
->Hint
.PerspectiveCorrection
;
4184 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4185 *params
= ctx
->Pixel
.MapAtoAsize
;
4187 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4188 *params
= ctx
->Pixel
.MapBtoBsize
;
4190 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4191 *params
= ctx
->Pixel
.MapGtoGsize
;
4193 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4194 *params
= ctx
->Pixel
.MapItoAsize
;
4196 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4197 *params
= ctx
->Pixel
.MapItoBsize
;
4199 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4200 *params
= ctx
->Pixel
.MapItoGsize
;
4202 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4203 *params
= ctx
->Pixel
.MapItoIsize
;
4205 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4206 *params
= ctx
->Pixel
.MapItoRsize
;
4208 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4209 *params
= ctx
->Pixel
.MapRtoRsize
;
4211 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4212 *params
= ctx
->Pixel
.MapStoSsize
;
4215 *params
= (GLint
) ctx
->Point
.Size
;
4217 case GL_POINT_SIZE_GRANULARITY
:
4218 *params
= (GLint
) ctx
->Const
.PointSizeGranularity
;
4220 case GL_POINT_SIZE_RANGE
:
4221 params
[0] = (GLint
) ctx
->Const
.MinPointSizeAA
;
4222 params
[1] = (GLint
) ctx
->Const
.MaxPointSizeAA
;
4224 case GL_ALIASED_POINT_SIZE_RANGE
:
4225 params
[0] = (GLint
) ctx
->Const
.MinPointSize
;
4226 params
[1] = (GLint
) ctx
->Const
.MaxPointSize
;
4228 case GL_POINT_SMOOTH
:
4229 *params
= (GLint
) ctx
->Point
.SmoothFlag
;
4231 case GL_POINT_SMOOTH_HINT
:
4232 *params
= (GLint
) ctx
->Hint
.PointSmooth
;
4234 case GL_POINT_SIZE_MIN_EXT
:
4235 *params
= (GLint
) (ctx
->Point
.MinSize
);
4237 case GL_POINT_SIZE_MAX_EXT
:
4238 *params
= (GLint
) (ctx
->Point
.MaxSize
);
4240 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4241 *params
= (GLint
) (ctx
->Point
.Threshold
);
4243 case GL_DISTANCE_ATTENUATION_EXT
:
4244 params
[0] = (GLint
) (ctx
->Point
.Params
[0]);
4245 params
[1] = (GLint
) (ctx
->Point
.Params
[1]);
4246 params
[2] = (GLint
) (ctx
->Point
.Params
[2]);
4248 case GL_POLYGON_MODE
:
4249 params
[0] = (GLint
) ctx
->Polygon
.FrontMode
;
4250 params
[1] = (GLint
) ctx
->Polygon
.BackMode
;
4252 case GL_POLYGON_OFFSET_BIAS_EXT
: /* GL_EXT_polygon_offset */
4253 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4255 case GL_POLYGON_OFFSET_FACTOR
:
4256 *params
= (GLint
) ctx
->Polygon
.OffsetFactor
;
4258 case GL_POLYGON_OFFSET_UNITS
:
4259 *params
= (GLint
) ctx
->Polygon
.OffsetUnits
;
4261 case GL_POLYGON_SMOOTH
:
4262 *params
= (GLint
) ctx
->Polygon
.SmoothFlag
;
4264 case GL_POLYGON_SMOOTH_HINT
:
4265 *params
= (GLint
) ctx
->Hint
.PolygonSmooth
;
4267 case GL_POLYGON_STIPPLE
:
4268 *params
= (GLint
) ctx
->Polygon
.StippleFlag
;
4270 case GL_PROJECTION_MATRIX
:
4271 for (i
=0;i
<16;i
++) {
4272 params
[i
] = (GLint
) ctx
->ProjectionMatrix
.m
[i
];
4275 case GL_PROJECTION_STACK_DEPTH
:
4276 *params
= (GLint
) (ctx
->ProjectionStackDepth
+ 1);
4278 case GL_READ_BUFFER
:
4279 *params
= (GLint
) ctx
->Pixel
.ReadBuffer
;
4282 *params
= (GLint
) ctx
->Pixel
.RedBias
;
4285 *params
= (GLint
) ctx
->Visual
.RedBits
;
4288 *params
= (GLint
) ctx
->Pixel
.RedScale
;
4290 case GL_RENDER_MODE
:
4291 *params
= (GLint
) ctx
->RenderMode
;
4294 *params
= (GLint
) ctx
->Visual
.RGBAflag
;
4296 case GL_SCISSOR_BOX
:
4297 params
[0] = (GLint
) ctx
->Scissor
.X
;
4298 params
[1] = (GLint
) ctx
->Scissor
.Y
;
4299 params
[2] = (GLint
) ctx
->Scissor
.Width
;
4300 params
[3] = (GLint
) ctx
->Scissor
.Height
;
4302 case GL_SCISSOR_TEST
:
4303 *params
= (GLint
) ctx
->Scissor
.Enabled
;
4305 case GL_SELECTION_BUFFER_SIZE
:
4306 *params
= (GLint
) ctx
->Select
.BufferSize
;
4308 case GL_SHADE_MODEL
:
4309 *params
= (GLint
) ctx
->Light
.ShadeModel
;
4311 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4312 *params
= (GLint
) ctx
->Texture
.SharedPalette
;
4314 case GL_STENCIL_BITS
:
4315 *params
= ctx
->Visual
.StencilBits
;
4317 case GL_STENCIL_CLEAR_VALUE
:
4318 *params
= (GLint
) ctx
->Stencil
.Clear
;
4320 case GL_STENCIL_FAIL
:
4321 *params
= (GLint
) ctx
->Stencil
.FailFunc
;
4323 case GL_STENCIL_FUNC
:
4324 *params
= (GLint
) ctx
->Stencil
.Function
;
4326 case GL_STENCIL_PASS_DEPTH_FAIL
:
4327 *params
= (GLint
) ctx
->Stencil
.ZFailFunc
;
4329 case GL_STENCIL_PASS_DEPTH_PASS
:
4330 *params
= (GLint
) ctx
->Stencil
.ZPassFunc
;
4332 case GL_STENCIL_REF
:
4333 *params
= (GLint
) ctx
->Stencil
.Ref
;
4335 case GL_STENCIL_TEST
:
4336 *params
= (GLint
) ctx
->Stencil
.Enabled
;
4338 case GL_STENCIL_VALUE_MASK
:
4339 *params
= (GLint
) ctx
->Stencil
.ValueMask
;
4341 case GL_STENCIL_WRITEMASK
:
4342 *params
= (GLint
) ctx
->Stencil
.WriteMask
;
4345 *params
= (GLint
) ctx
->Visual
.StereoFlag
;
4347 case GL_SUBPIXEL_BITS
:
4348 *params
= ctx
->Const
.SubPixelBits
;
4351 *params
= _mesa_IsEnabled(GL_TEXTURE_1D
) ? 1 : 0;
4354 *params
= _mesa_IsEnabled(GL_TEXTURE_2D
) ? 1 : 0;
4357 *params
= _mesa_IsEnabled(GL_TEXTURE_3D
) ? 1 : 0;
4359 case GL_TEXTURE_BINDING_1D
:
4360 *params
= textureUnit
->CurrentD
[1]->Name
;
4362 case GL_TEXTURE_BINDING_2D
:
4363 *params
= textureUnit
->CurrentD
[2]->Name
;
4365 case GL_TEXTURE_BINDING_3D
:
4366 *params
= textureUnit
->CurrentD
[3]->Name
;
4368 case GL_TEXTURE_ENV_COLOR
:
4369 params
[0] = FLOAT_TO_INT( textureUnit
->EnvColor
[0] );
4370 params
[1] = FLOAT_TO_INT( textureUnit
->EnvColor
[1] );
4371 params
[2] = FLOAT_TO_INT( textureUnit
->EnvColor
[2] );
4372 params
[3] = FLOAT_TO_INT( textureUnit
->EnvColor
[3] );
4374 case GL_TEXTURE_ENV_MODE
:
4375 *params
= (GLint
) textureUnit
->EnvMode
;
4377 case GL_TEXTURE_GEN_S
:
4378 *params
= (textureUnit
->TexGenEnabled
& S_BIT
) ? 1 : 0;
4380 case GL_TEXTURE_GEN_T
:
4381 *params
= (textureUnit
->TexGenEnabled
& T_BIT
) ? 1 : 0;
4383 case GL_TEXTURE_GEN_R
:
4384 *params
= (textureUnit
->TexGenEnabled
& R_BIT
) ? 1 : 0;
4386 case GL_TEXTURE_GEN_Q
:
4387 *params
= (textureUnit
->TexGenEnabled
& Q_BIT
) ? 1 : 0;
4389 case GL_TEXTURE_MATRIX
:
4390 for (i
=0;i
<16;i
++) {
4391 params
[i
] = (GLint
) ctx
->TextureMatrix
[texTransformUnit
].m
[i
];
4394 case GL_TEXTURE_STACK_DEPTH
:
4395 *params
= (GLint
) (ctx
->TextureStackDepth
[texTransformUnit
] + 1);
4397 case GL_UNPACK_ALIGNMENT
:
4398 *params
= ctx
->Unpack
.Alignment
;
4400 case GL_UNPACK_LSB_FIRST
:
4401 *params
= (GLint
) ctx
->Unpack
.LsbFirst
;
4403 case GL_UNPACK_ROW_LENGTH
:
4404 *params
= ctx
->Unpack
.RowLength
;
4406 case GL_UNPACK_SKIP_PIXELS
:
4407 *params
= ctx
->Unpack
.SkipPixels
;
4409 case GL_UNPACK_SKIP_ROWS
:
4410 *params
= ctx
->Unpack
.SkipRows
;
4412 case GL_UNPACK_SWAP_BYTES
:
4413 *params
= (GLint
) ctx
->Unpack
.SwapBytes
;
4415 case GL_UNPACK_SKIP_IMAGES_EXT
:
4416 *params
= ctx
->Unpack
.SkipImages
;
4418 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4419 *params
= ctx
->Unpack
.ImageHeight
;
4422 params
[0] = (GLint
) ctx
->Viewport
.X
;
4423 params
[1] = (GLint
) ctx
->Viewport
.Y
;
4424 params
[2] = (GLint
) ctx
->Viewport
.Width
;
4425 params
[3] = (GLint
) ctx
->Viewport
.Height
;
4428 *params
= (GLint
) ctx
->Pixel
.ZoomX
;
4431 *params
= (GLint
) ctx
->Pixel
.ZoomY
;
4433 case GL_VERTEX_ARRAY
:
4434 *params
= (GLint
) ctx
->Array
.Vertex
.Enabled
;
4436 case GL_VERTEX_ARRAY_SIZE
:
4437 *params
= ctx
->Array
.Vertex
.Size
;
4439 case GL_VERTEX_ARRAY_TYPE
:
4440 *params
= ctx
->Array
.Vertex
.Type
;
4442 case GL_VERTEX_ARRAY_STRIDE
:
4443 *params
= ctx
->Array
.Vertex
.Stride
;
4445 case GL_VERTEX_ARRAY_COUNT_EXT
:
4448 case GL_NORMAL_ARRAY
:
4449 *params
= (GLint
) ctx
->Array
.Normal
.Enabled
;
4451 case GL_NORMAL_ARRAY_TYPE
:
4452 *params
= ctx
->Array
.Normal
.Type
;
4454 case GL_NORMAL_ARRAY_STRIDE
:
4455 *params
= ctx
->Array
.Normal
.Stride
;
4457 case GL_NORMAL_ARRAY_COUNT_EXT
:
4460 case GL_COLOR_ARRAY
:
4461 *params
= (GLint
) ctx
->Array
.Color
.Enabled
;
4463 case GL_COLOR_ARRAY_SIZE
:
4464 *params
= ctx
->Array
.Color
.Size
;
4466 case GL_COLOR_ARRAY_TYPE
:
4467 *params
= ctx
->Array
.Color
.Type
;
4469 case GL_COLOR_ARRAY_STRIDE
:
4470 *params
= ctx
->Array
.Color
.Stride
;
4472 case GL_COLOR_ARRAY_COUNT_EXT
:
4475 case GL_INDEX_ARRAY
:
4476 *params
= (GLint
) ctx
->Array
.Index
.Enabled
;
4478 case GL_INDEX_ARRAY_TYPE
:
4479 *params
= ctx
->Array
.Index
.Type
;
4481 case GL_INDEX_ARRAY_STRIDE
:
4482 *params
= ctx
->Array
.Index
.Stride
;
4484 case GL_INDEX_ARRAY_COUNT_EXT
:
4487 case GL_TEXTURE_COORD_ARRAY
:
4488 *params
= (GLint
) ctx
->Array
.TexCoord
[texUnit
].Enabled
;
4490 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4491 *params
= ctx
->Array
.TexCoord
[texUnit
].Size
;
4493 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4494 *params
= ctx
->Array
.TexCoord
[texUnit
].Type
;
4496 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4497 *params
= ctx
->Array
.TexCoord
[texUnit
].Stride
;
4499 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4502 case GL_EDGE_FLAG_ARRAY
:
4503 *params
= (GLint
) ctx
->Array
.EdgeFlag
.Enabled
;
4505 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4506 *params
= ctx
->Array
.EdgeFlag
.Stride
;
4508 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4512 /* GL_ARB_multitexture */
4513 case GL_MAX_TEXTURE_UNITS_ARB
:
4514 *params
= ctx
->Const
.MaxTextureUnits
;
4516 case GL_ACTIVE_TEXTURE_ARB
:
4517 *params
= GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4519 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4520 *params
= GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4523 /* GL_ARB_texture_cube_map */
4524 case GL_TEXTURE_CUBE_MAP_ARB
:
4525 if (ctx
->Extensions
.ARB_texture_cube_map
)
4526 *params
= (GLint
) _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
4528 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4530 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4531 if (ctx
->Extensions
.ARB_texture_cube_map
)
4532 *params
= textureUnit
->CurrentCubeMap
->Name
;
4534 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4536 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4537 if (ctx
->Extensions
.ARB_texture_cube_map
)
4538 *params
= ctx
->Const
.MaxCubeTextureSize
;
4540 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4543 /* GL_ARB_texture_compression */
4544 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4545 if (ctx
->Extensions
.ARB_texture_compression
) {
4546 *params
= (GLint
) ctx
->Hint
.TextureCompression
;
4549 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4551 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4552 if (ctx
->Extensions
.ARB_texture_compression
) {
4553 *params
= (GLint
) ctx
->Const
.NumCompressedTextureFormats
;
4556 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4558 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4559 if (ctx
->Extensions
.ARB_texture_compression
) {
4561 for (i
= 0; i
< ctx
->Const
.NumCompressedTextureFormats
; i
++)
4562 params
[i
] = (GLint
) ctx
->Const
.CompressedTextureFormats
[i
];
4565 gl_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv");
4568 /* GL_PGI_misc_hints */
4569 case GL_STRICT_DEPTHFUNC_HINT_PGI
:
4570 *params
= (GL_NICEST
);
4572 case GL_STRICT_LIGHTING_HINT_PGI
:
4573 *params
= (ctx
->Hint
.StrictLighting
);
4575 case GL_STRICT_SCISSOR_HINT_PGI
:
4576 case GL_FULL_STIPPLE_HINT_PGI
:
4579 case GL_CONSERVE_MEMORY_HINT_PGI
:
4582 case GL_ALWAYS_FAST_HINT_PGI
:
4583 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
4584 ctx
->Hint
.AllowDrawFrg
== GL_FALSE
&&
4585 ctx
->Hint
.AllowDrawMem
== GL_FALSE
);
4587 case GL_ALWAYS_SOFT_HINT_PGI
:
4588 *params
= (ctx
->Hint
.AllowDrawWin
== GL_TRUE
&&
4589 ctx
->Hint
.AllowDrawFrg
== GL_TRUE
&&
4590 ctx
->Hint
.AllowDrawMem
== GL_TRUE
);
4592 case GL_ALLOW_DRAW_OBJ_HINT_PGI
:
4595 case GL_ALLOW_DRAW_WIN_HINT_PGI
:
4596 *params
= ctx
->Hint
.AllowDrawWin
;
4598 case GL_ALLOW_DRAW_FRG_HINT_PGI
:
4599 *params
= ctx
->Hint
.AllowDrawFrg
;
4601 case GL_ALLOW_DRAW_MEM_HINT_PGI
:
4602 *params
= ctx
->Hint
.AllowDrawMem
;
4604 case GL_CLIP_NEAR_HINT_PGI
:
4605 case GL_CLIP_FAR_HINT_PGI
:
4608 case GL_WIDE_LINE_HINT_PGI
:
4609 *params
= GL_DONT_CARE
;
4611 case GL_BACK_NORMALS_HINT_PGI
:
4614 case GL_NATIVE_GRAPHICS_HANDLE_PGI
:
4618 /* GL_EXT_compiled_vertex_array */
4619 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4620 *params
= ctx
->Array
.LockFirst
;
4622 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4623 *params
= ctx
->Array
.LockCount
;
4626 /* GL_ARB_transpose_matrix */
4627 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4631 gl_matrix_transposef(tm
, ctx
->ColorMatrix
.m
);
4632 for (i
=0;i
<16;i
++) {
4633 params
[i
] = (GLint
) tm
[i
];
4637 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4641 gl_matrix_transposef(tm
, ctx
->ModelView
.m
);
4642 for (i
=0;i
<16;i
++) {
4643 params
[i
] = (GLint
) tm
[i
];
4647 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4651 gl_matrix_transposef(tm
, ctx
->ProjectionMatrix
.m
);
4652 for (i
=0;i
<16;i
++) {
4653 params
[i
] = (GLint
) tm
[i
];
4657 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4661 gl_matrix_transposef(tm
, ctx
->TextureMatrix
[texTransformUnit
].m
);
4662 for (i
=0;i
<16;i
++) {
4663 params
[i
] = (GLint
) tm
[i
];
4668 /* GL_HP_occlusion_test */
4669 case GL_OCCLUSION_TEST_HP
:
4670 if (ctx
->Extensions
.HP_occlusion_test
) {
4671 *params
= (GLint
) ctx
->Depth
.OcclusionTest
;
4674 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4677 case GL_OCCLUSION_TEST_RESULT_HP
:
4678 if (ctx
->Extensions
.HP_occlusion_test
) {
4679 if (ctx
->Depth
.OcclusionTest
)
4680 *params
= (GLint
) ctx
->OcclusionResult
;
4682 *params
= (GLint
) ctx
->OcclusionResultSaved
;
4683 /* reset flag now */
4684 ctx
->OcclusionResult
= GL_FALSE
;
4685 ctx
->OcclusionResultSaved
= GL_FALSE
;
4688 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4692 /* GL_SGIS_pixel_texture */
4693 case GL_PIXEL_TEXTURE_SGIS
:
4694 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4697 /* GL_SGIX_pixel_texture */
4698 case GL_PIXEL_TEX_GEN_SGIX
:
4699 *params
= (GLint
) ctx
->Pixel
.PixelTextureEnabled
;
4701 case GL_PIXEL_TEX_GEN_MODE_SGIX
:
4702 *params
= (GLint
) pixel_texgen_mode(ctx
);
4705 /* GL_SGI_color_matrix (also in 1.2 imaging) */
4706 case GL_COLOR_MATRIX_SGI
:
4707 for (i
=0;i
<16;i
++) {
4708 params
[i
] = (GLint
) ctx
->ColorMatrix
.m
[i
];
4711 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
4712 *params
= ctx
->ColorStackDepth
+ 1;
4714 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
4715 *params
= MAX_COLOR_STACK_DEPTH
;
4717 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
4718 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[0];
4720 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
4721 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[1];
4723 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
4724 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[2];
4726 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
4727 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixScale
[3];
4729 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
4730 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[0];
4732 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
4733 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[1];
4735 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
4736 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[2];
4738 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
4739 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixBias
[3];
4742 /* GL_EXT_convolution (also in 1.2 imaging) */
4743 case GL_MAX_CONVOLUTION_WIDTH
:
4744 *params
= ctx
->Const
.MaxConvolutionWidth
;
4746 case GL_MAX_CONVOLUTION_HEIGHT
:
4747 *params
= ctx
->Const
.MaxConvolutionHeight
;
4749 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
4750 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[0];
4752 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
4753 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[1];
4755 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
4756 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[2];
4758 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
4759 *params
= (GLint
) ctx
->Pixel
.PostConvolutionScale
[3];
4761 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
4762 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[0];
4764 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
4765 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[1];
4767 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
4768 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4770 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
4771 *params
= (GLint
) ctx
->Pixel
.PostConvolutionBias
[2];
4774 /* GL_SGI_color_table (also in 1.2 imaging */
4775 case GL_COLOR_TABLE_SGI
:
4776 *params
= (GLint
) ctx
->Pixel
.ColorTableEnabled
;
4778 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
4779 *params
= (GLint
) ctx
->Pixel
.PostConvolutionColorTableEnabled
;
4781 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
4782 *params
= (GLint
) ctx
->Pixel
.PostColorMatrixColorTableEnabled
;
4786 /* GL_EXT_secondary_color */
4787 case GL_COLOR_SUM_EXT
:
4788 *params
= (GLint
) ctx
->Fog
.ColorSumEnabled
;
4790 case GL_CURRENT_SECONDARY_COLOR_EXT
:
4791 params
[0] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[0] ) );
4792 params
[1] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[1] ) );
4793 params
[2] = FLOAT_TO_INT( UBYTE_COLOR_TO_FLOAT_COLOR( ctx
->Current
.SecondaryColor
[2] ) );
4795 case GL_SECONDARY_COLOR_ARRAY_EXT
:
4796 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Enabled
;
4798 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
4799 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Type
;
4801 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
4802 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4804 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
4805 *params
= (GLint
) ctx
->Array
.SecondaryColor
.Stride
;
4808 /* GL_EXT_fog_coord */
4809 case GL_CURRENT_FOG_COORDINATE_EXT
:
4810 *params
= (GLint
) ctx
->Current
.FogCoord
;
4812 case GL_FOG_COORDINATE_ARRAY_EXT
:
4813 *params
= (GLint
) ctx
->Array
.FogCoord
.Enabled
;
4815 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
4816 *params
= (GLint
) ctx
->Array
.FogCoord
.Type
;
4818 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
4819 *params
= (GLint
) ctx
->Array
.FogCoord
.Stride
;
4823 gl_error( ctx
, GL_INVALID_ENUM
, "glGetIntegerv" );
4830 _mesa_GetPointerv( GLenum pname
, GLvoid
**params
)
4832 GET_CURRENT_CONTEXT(ctx
);
4833 GLuint texUnit
= ctx
->Texture
.CurrentUnit
;
4835 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx
, "glGetPointerv");
4840 if (MESA_VERBOSE
& VERBOSE_API
)
4841 fprintf(stderr
, "glGetPointerv %s\n", gl_lookup_enum_by_nr(pname
));
4843 if (ctx
->Driver
.GetPointerv
4844 && (*ctx
->Driver
.GetPointerv
)(ctx
, pname
, params
))
4848 case GL_VERTEX_ARRAY_POINTER
:
4849 *params
= ctx
->Array
.Vertex
.Ptr
;
4851 case GL_NORMAL_ARRAY_POINTER
:
4852 *params
= ctx
->Array
.Normal
.Ptr
;
4854 case GL_COLOR_ARRAY_POINTER
:
4855 *params
= ctx
->Array
.Color
.Ptr
;
4857 case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT
:
4858 *params
= ctx
->Array
.SecondaryColor
.Ptr
;
4860 case GL_FOG_COORDINATE_ARRAY_POINTER_EXT
:
4861 *params
= ctx
->Array
.FogCoord
.Ptr
;
4863 case GL_INDEX_ARRAY_POINTER
:
4864 *params
= ctx
->Array
.Index
.Ptr
;
4866 case GL_TEXTURE_COORD_ARRAY_POINTER
:
4867 *params
= ctx
->Array
.TexCoord
[texUnit
].Ptr
;
4869 case GL_EDGE_FLAG_ARRAY_POINTER
:
4870 *params
= ctx
->Array
.EdgeFlag
.Ptr
;
4872 case GL_FEEDBACK_BUFFER_POINTER
:
4873 *params
= ctx
->Feedback
.Buffer
;
4875 case GL_SELECTION_BUFFER_POINTER
:
4876 *params
= ctx
->Select
.Buffer
;
4879 gl_error( ctx
, GL_INVALID_ENUM
, "glGetPointerv" );
4887 _mesa_GetString( GLenum name
)
4889 GET_CURRENT_CONTEXT(ctx
);
4890 static const char *vendor
= "Brian Paul";
4891 static const char *renderer
= "Mesa";
4892 static const char *version
= "1.2 Mesa 3.5 beta";
4894 ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH_WITH_RETVAL(ctx
, "glGetString", 0);
4896 /* this is a required driver function */
4897 assert(ctx
->Driver
.GetString
);
4899 const GLubyte
*str
= (*ctx
->Driver
.GetString
)(ctx
, name
);
4905 return (const GLubyte
*) vendor
;
4907 return (const GLubyte
*) renderer
;
4909 return (const GLubyte
*) version
;
4911 return (const GLubyte
*) gl_extensions_get_string( ctx
);
4913 gl_error( ctx
, GL_INVALID_ENUM
, "glGetString" );
4914 return (const GLubyte
*) 0;
4921 * Execute a glGetError command
4924 _mesa_GetError( void )
4926 GET_CURRENT_CONTEXT(ctx
);
4928 GLenum e
= ctx
->ErrorValue
;
4930 ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL( ctx
, "glGetError", (GLenum
) 0);
4932 if (MESA_VERBOSE
& VERBOSE_API
)
4933 fprintf(stderr
, "glGetError <-- %s\n", gl_lookup_enum_by_nr(e
));
4935 ctx
->ErrorValue
= (GLenum
) GL_NO_ERROR
;