3 *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py
9 #include "extensions.h"
14 #include "texcompress.h"
15 #include "framebuffer.h"
18 #define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE )
20 #define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
22 #define INT64_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE )
23 #define INT64_TO_INT(I) ( (GLint)((I > INT_MAX) ? INT_MAX : ((I < INT_MIN) ? INT_MIN : (I))) )
25 #define BOOLEAN_TO_INT(B) ( (GLint) (B) )
26 #define BOOLEAN_TO_INT64(B) ( (GLint64) (B) )
27 #define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F )
29 #define ENUM_TO_INT64(E) ( (GLint64) (E) )
33 * Check if named extension is enabled, if not generate error and return.
35 #define CHECK_EXT1(EXT1, FUNC) \
36 if (!ctx->Extensions.EXT1) { \
37 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
42 * Check if either of two extensions is enabled.
44 #define CHECK_EXT2(EXT1, EXT2, FUNC) \
45 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \
46 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
51 * Check if either of three extensions is enabled.
53 #define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \
54 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
55 !ctx->Extensions.EXT3) { \
56 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
61 * Check if either of four extensions is enabled.
63 #define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \
64 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
65 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \
66 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \
72 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
74 GET_CURRENT_CONTEXT(ctx
);
75 ASSERT_OUTSIDE_BEGIN_END(ctx
);
80 if (ctx
->Driver
.GetBooleanv
&&
81 ctx
->Driver
.GetBooleanv(ctx
, pname
, params
))
85 case GL_ACCUM_RED_BITS
:
86 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumRedBits
);
88 case GL_ACCUM_GREEN_BITS
:
89 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
91 case GL_ACCUM_BLUE_BITS
:
92 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
94 case GL_ACCUM_ALPHA_BITS
:
95 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
97 case GL_ACCUM_CLEAR_VALUE
:
98 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[0]);
99 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[1]);
100 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[2]);
101 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[3]);
104 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.AlphaBias
);
107 if (ctx
->NewState
& _NEW_BUFFERS
)
108 _mesa_update_state(ctx
);
109 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.alphaBits
);
112 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.AlphaScale
);
115 params
[0] = ctx
->Color
.AlphaEnabled
;
117 case GL_ALPHA_TEST_FUNC
:
118 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.AlphaFunc
);
120 case GL_ALPHA_TEST_REF
:
121 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.AlphaRef
);
123 case GL_ATTRIB_STACK_DEPTH
:
124 params
[0] = INT_TO_BOOLEAN(ctx
->AttribStackDepth
);
127 params
[0] = ctx
->Eval
.AutoNormal
;
130 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
133 params
[0] = (ctx
->Color
.BlendEnabled
& 1);
136 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstRGB
);
139 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcRGB
);
141 case GL_BLEND_SRC_RGB_EXT
:
142 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcRGB
);
144 case GL_BLEND_DST_RGB_EXT
:
145 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstRGB
);
147 case GL_BLEND_SRC_ALPHA_EXT
:
148 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcA
);
150 case GL_BLEND_DST_ALPHA_EXT
:
151 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstA
);
153 case GL_BLEND_EQUATION
:
154 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendEquationRGB
);
156 case GL_BLEND_EQUATION_ALPHA_EXT
:
157 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendEquationA
);
159 case GL_BLEND_COLOR_EXT
:
160 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[0]);
161 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[1]);
162 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[2]);
163 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[3]);
166 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.BlueBias
);
169 if (ctx
->NewState
& _NEW_BUFFERS
)
170 _mesa_update_state(ctx
);
171 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.blueBits
);
174 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.BlueScale
);
176 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
177 params
[0] = INT_TO_BOOLEAN(ctx
->ClientAttribStackDepth
);
180 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1;
183 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1;
186 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1;
189 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1;
192 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1;
195 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1;
197 case GL_COLOR_CLEAR_VALUE
:
198 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[0]);
199 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[1]);
200 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[2]);
201 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[3]);
203 case GL_COLOR_MATERIAL
:
204 params
[0] = ctx
->Light
.ColorMaterialEnabled
;
206 case GL_COLOR_MATERIAL_FACE
:
207 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ColorMaterialFace
);
209 case GL_COLOR_MATERIAL_PARAMETER
:
210 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ColorMaterialMode
);
212 case GL_COLOR_WRITEMASK
:
213 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
214 params
[1] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
215 params
[2] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
216 params
[3] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
219 params
[0] = ctx
->Polygon
.CullFlag
;
221 case GL_CULL_FACE_MODE
:
222 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.CullFaceMode
);
224 case GL_CURRENT_COLOR
:
225 FLUSH_CURRENT(ctx
, 0);
226 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
227 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
228 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
229 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
231 case GL_CURRENT_INDEX
:
232 FLUSH_CURRENT(ctx
, 0);
233 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
235 case GL_CURRENT_NORMAL
:
236 FLUSH_CURRENT(ctx
, 0);
237 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
238 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
239 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
241 case GL_CURRENT_RASTER_COLOR
:
242 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[0]);
243 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[1]);
244 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[2]);
245 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[3]);
247 case GL_CURRENT_RASTER_DISTANCE
:
248 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterDistance
);
250 case GL_CURRENT_RASTER_INDEX
:
251 params
[0] = FLOAT_TO_BOOLEAN(1.0);
253 case GL_CURRENT_RASTER_POSITION
:
254 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[0]);
255 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[1]);
256 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[2]);
257 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[3]);
259 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
260 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[0]);
261 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[1]);
262 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[2]);
263 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[3]);
265 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
267 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
268 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
269 _mesa_error(ctx
, GL_INVALID_OPERATION
,
270 "glGet(raster tex coords, unit %u)", unit
);
273 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][0]);
274 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][1]);
275 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][2]);
276 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][3]);
279 case GL_CURRENT_RASTER_POSITION_VALID
:
280 params
[0] = ctx
->Current
.RasterPosValid
;
282 case GL_CURRENT_TEXTURE_COORDS
:
284 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
285 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
286 _mesa_error(ctx
, GL_INVALID_OPERATION
,
287 "glGet(current tex coords, unit %u)", unit
);
290 FLUSH_CURRENT(ctx
, 0);
291 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
292 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
293 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
294 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
298 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.DepthBias
);
301 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.depthBits
);
303 case GL_DEPTH_CLEAR_VALUE
:
304 params
[0] = FLOAT_TO_BOOLEAN(((GLfloat
) ctx
->Depth
.Clear
));
307 params
[0] = ENUM_TO_BOOLEAN(ctx
->Depth
.Func
);
310 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Viewport
.Near
);
311 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Viewport
.Far
);
314 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.DepthScale
);
317 params
[0] = ctx
->Depth
.Test
;
319 case GL_DEPTH_WRITEMASK
:
320 params
[0] = ctx
->Depth
.Mask
;
323 params
[0] = ctx
->Color
.DitherFlag
;
325 case GL_DOUBLEBUFFER
:
326 params
[0] = ctx
->DrawBuffer
->Visual
.doubleBufferMode
;
329 params
[0] = ENUM_TO_BOOLEAN(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
332 FLUSH_CURRENT(ctx
, 0);
333 params
[0] = (ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0);
335 case GL_FEEDBACK_BUFFER_SIZE
:
336 params
[0] = INT_TO_BOOLEAN(ctx
->Feedback
.BufferSize
);
338 case GL_FEEDBACK_BUFFER_TYPE
:
339 params
[0] = ENUM_TO_BOOLEAN(ctx
->Feedback
.Type
);
342 params
[0] = ctx
->Fog
.Enabled
;
345 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[0]);
346 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[1]);
347 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[2]);
348 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[3]);
351 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Density
);
354 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.End
);
357 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.Fog
);
360 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Index
);
363 params
[0] = ENUM_TO_BOOLEAN(ctx
->Fog
.Mode
);
366 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Start
);
369 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.FrontFace
);
372 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.GreenBias
);
375 if (ctx
->NewState
& _NEW_BUFFERS
)
376 _mesa_update_state(ctx
);
377 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.greenBits
);
380 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.GreenScale
);
383 if (ctx
->NewState
& _NEW_BUFFERS
)
384 _mesa_update_state(ctx
);
385 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.indexBits
);
387 case GL_INDEX_CLEAR_VALUE
:
388 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ClearIndex
);
391 params
[0] = GL_FALSE
;
393 case GL_INDEX_OFFSET
:
394 params
[0] = INT_TO_BOOLEAN(ctx
->Pixel
.IndexOffset
);
397 params
[0] = INT_TO_BOOLEAN(ctx
->Pixel
.IndexShift
);
399 case GL_INDEX_WRITEMASK
:
400 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.IndexMask
);
403 params
[0] = ctx
->Light
.Light
[0].Enabled
;
406 params
[0] = ctx
->Light
.Light
[1].Enabled
;
409 params
[0] = ctx
->Light
.Light
[2].Enabled
;
412 params
[0] = ctx
->Light
.Light
[3].Enabled
;
415 params
[0] = ctx
->Light
.Light
[4].Enabled
;
418 params
[0] = ctx
->Light
.Light
[5].Enabled
;
421 params
[0] = ctx
->Light
.Light
[6].Enabled
;
424 params
[0] = ctx
->Light
.Light
[7].Enabled
;
427 params
[0] = ctx
->Light
.Enabled
;
429 case GL_LIGHT_MODEL_AMBIENT
:
430 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[0]);
431 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[1]);
432 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[2]);
433 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[3]);
435 case GL_LIGHT_MODEL_COLOR_CONTROL
:
436 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.Model
.ColorControl
);
438 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
439 params
[0] = ctx
->Light
.Model
.LocalViewer
;
441 case GL_LIGHT_MODEL_TWO_SIDE
:
442 params
[0] = ctx
->Light
.Model
.TwoSide
;
445 params
[0] = ctx
->Line
.SmoothFlag
;
447 case GL_LINE_SMOOTH_HINT
:
448 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.LineSmooth
);
450 case GL_LINE_STIPPLE
:
451 params
[0] = ctx
->Line
.StippleFlag
;
453 case GL_LINE_STIPPLE_PATTERN
:
454 params
[0] = INT_TO_BOOLEAN(ctx
->Line
.StipplePattern
);
456 case GL_LINE_STIPPLE_REPEAT
:
457 params
[0] = INT_TO_BOOLEAN(ctx
->Line
.StippleFactor
);
460 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Line
.Width
);
462 case GL_LINE_WIDTH_GRANULARITY
:
463 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.LineWidthGranularity
);
465 case GL_LINE_WIDTH_RANGE
:
466 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinLineWidthAA
);
467 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxLineWidthAA
);
469 case GL_ALIASED_LINE_WIDTH_RANGE
:
470 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinLineWidth
);
471 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxLineWidth
);
474 params
[0] = INT_TO_BOOLEAN(ctx
->List
.ListBase
);
477 params
[0] = INT_TO_BOOLEAN((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
482 if (!ctx
->CompileFlag
)
484 else if (ctx
->ExecuteFlag
)
485 mode
= GL_COMPILE_AND_EXECUTE
;
488 params
[0] = ENUM_TO_BOOLEAN(mode
);
491 case GL_INDEX_LOGIC_OP
:
492 params
[0] = ctx
->Color
.IndexLogicOpEnabled
;
494 case GL_COLOR_LOGIC_OP
:
495 params
[0] = ctx
->Color
.ColorLogicOpEnabled
;
497 case GL_LOGIC_OP_MODE
:
498 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.LogicOp
);
500 case GL_MAP1_COLOR_4
:
501 params
[0] = ctx
->Eval
.Map1Color4
;
503 case GL_MAP1_GRID_DOMAIN
:
504 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid1u1
);
505 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid1u2
);
507 case GL_MAP1_GRID_SEGMENTS
:
508 params
[0] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid1un
);
511 params
[0] = ctx
->Eval
.Map1Index
;
514 params
[0] = ctx
->Eval
.Map1Normal
;
516 case GL_MAP1_TEXTURE_COORD_1
:
517 params
[0] = ctx
->Eval
.Map1TextureCoord1
;
519 case GL_MAP1_TEXTURE_COORD_2
:
520 params
[0] = ctx
->Eval
.Map1TextureCoord2
;
522 case GL_MAP1_TEXTURE_COORD_3
:
523 params
[0] = ctx
->Eval
.Map1TextureCoord3
;
525 case GL_MAP1_TEXTURE_COORD_4
:
526 params
[0] = ctx
->Eval
.Map1TextureCoord4
;
528 case GL_MAP1_VERTEX_3
:
529 params
[0] = ctx
->Eval
.Map1Vertex3
;
531 case GL_MAP1_VERTEX_4
:
532 params
[0] = ctx
->Eval
.Map1Vertex4
;
534 case GL_MAP2_COLOR_4
:
535 params
[0] = ctx
->Eval
.Map2Color4
;
537 case GL_MAP2_GRID_DOMAIN
:
538 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2u1
);
539 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2u2
);
540 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2v1
);
541 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2v2
);
543 case GL_MAP2_GRID_SEGMENTS
:
544 params
[0] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid2un
);
545 params
[1] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid2vn
);
548 params
[0] = ctx
->Eval
.Map2Index
;
551 params
[0] = ctx
->Eval
.Map2Normal
;
553 case GL_MAP2_TEXTURE_COORD_1
:
554 params
[0] = ctx
->Eval
.Map2TextureCoord1
;
556 case GL_MAP2_TEXTURE_COORD_2
:
557 params
[0] = ctx
->Eval
.Map2TextureCoord2
;
559 case GL_MAP2_TEXTURE_COORD_3
:
560 params
[0] = ctx
->Eval
.Map2TextureCoord3
;
562 case GL_MAP2_TEXTURE_COORD_4
:
563 params
[0] = ctx
->Eval
.Map2TextureCoord4
;
565 case GL_MAP2_VERTEX_3
:
566 params
[0] = ctx
->Eval
.Map2Vertex3
;
568 case GL_MAP2_VERTEX_4
:
569 params
[0] = ctx
->Eval
.Map2Vertex4
;
572 params
[0] = ctx
->Pixel
.MapColorFlag
;
575 params
[0] = ctx
->Pixel
.MapStencilFlag
;
578 params
[0] = ENUM_TO_BOOLEAN(ctx
->Transform
.MatrixMode
);
580 case GL_MAX_ATTRIB_STACK_DEPTH
:
581 params
[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH
);
583 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
584 params
[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
586 case GL_MAX_CLIP_PLANES
:
587 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxClipPlanes
);
589 case GL_MAX_ELEMENTS_VERTICES
:
590 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayLockSize
);
592 case GL_MAX_ELEMENTS_INDICES
:
593 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayLockSize
);
595 case GL_MAX_EVAL_ORDER
:
596 params
[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER
);
599 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxLights
);
601 case GL_MAX_LIST_NESTING
:
602 params
[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING
);
604 case GL_MAX_MODELVIEW_STACK_DEPTH
:
605 params
[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH
);
607 case GL_MAX_NAME_STACK_DEPTH
:
608 params
[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH
);
610 case GL_MAX_PIXEL_MAP_TABLE
:
611 params
[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE
);
613 case GL_MAX_PROJECTION_STACK_DEPTH
:
614 params
[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH
);
616 case GL_MAX_TEXTURE_SIZE
:
617 params
[0] = INT_TO_BOOLEAN(1 << (ctx
->Const
.MaxTextureLevels
- 1));
619 case GL_MAX_3D_TEXTURE_SIZE
:
620 params
[0] = INT_TO_BOOLEAN(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
622 case GL_MAX_TEXTURE_STACK_DEPTH
:
623 params
[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH
);
625 case GL_MAX_VIEWPORT_DIMS
:
626 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxViewportWidth
);
627 params
[1] = INT_TO_BOOLEAN(ctx
->Const
.MaxViewportHeight
);
629 case GL_MODELVIEW_MATRIX
:
631 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
632 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
633 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
634 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
635 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
636 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
637 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
638 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
639 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
640 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
641 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
642 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
643 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
644 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
645 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
646 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
647 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
650 case GL_MODELVIEW_STACK_DEPTH
:
651 params
[0] = INT_TO_BOOLEAN(ctx
->ModelviewMatrixStack
.Depth
+ 1);
653 case GL_NAME_STACK_DEPTH
:
654 params
[0] = INT_TO_BOOLEAN(ctx
->Select
.NameStackDepth
);
657 params
[0] = ctx
->Transform
.Normalize
;
659 case GL_PACK_ALIGNMENT
:
660 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.Alignment
);
662 case GL_PACK_LSB_FIRST
:
663 params
[0] = ctx
->Pack
.LsbFirst
;
665 case GL_PACK_ROW_LENGTH
:
666 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.RowLength
);
668 case GL_PACK_SKIP_PIXELS
:
669 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipPixels
);
671 case GL_PACK_SKIP_ROWS
:
672 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipRows
);
674 case GL_PACK_SWAP_BYTES
:
675 params
[0] = ctx
->Pack
.SwapBytes
;
677 case GL_PACK_SKIP_IMAGES_EXT
:
678 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipImages
);
680 case GL_PACK_IMAGE_HEIGHT_EXT
:
681 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.ImageHeight
);
683 case GL_PACK_INVERT_MESA
:
684 params
[0] = ctx
->Pack
.Invert
;
686 case GL_PERSPECTIVE_CORRECTION_HINT
:
687 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PerspectiveCorrection
);
689 case GL_PIXEL_MAP_A_TO_A_SIZE
:
690 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.AtoA
.Size
);
692 case GL_PIXEL_MAP_B_TO_B_SIZE
:
693 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.BtoB
.Size
);
695 case GL_PIXEL_MAP_G_TO_G_SIZE
:
696 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.GtoG
.Size
);
698 case GL_PIXEL_MAP_I_TO_A_SIZE
:
699 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoA
.Size
);
701 case GL_PIXEL_MAP_I_TO_B_SIZE
:
702 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoB
.Size
);
704 case GL_PIXEL_MAP_I_TO_G_SIZE
:
705 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoG
.Size
);
707 case GL_PIXEL_MAP_I_TO_I_SIZE
:
708 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoI
.Size
);
710 case GL_PIXEL_MAP_I_TO_R_SIZE
:
711 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoR
.Size
);
713 case GL_PIXEL_MAP_R_TO_R_SIZE
:
714 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.RtoR
.Size
);
716 case GL_PIXEL_MAP_S_TO_S_SIZE
:
717 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.StoS
.Size
);
720 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Size
);
722 case GL_POINT_SIZE_GRANULARITY
:
723 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.PointSizeGranularity
);
725 case GL_POINT_SIZE_RANGE
:
726 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinPointSizeAA
);
727 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxPointSizeAA
);
729 case GL_ALIASED_POINT_SIZE_RANGE
:
730 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinPointSize
);
731 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxPointSize
);
733 case GL_POINT_SMOOTH
:
734 params
[0] = ctx
->Point
.SmoothFlag
;
736 case GL_POINT_SMOOTH_HINT
:
737 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PointSmooth
);
739 case GL_POINT_SIZE_MIN_EXT
:
740 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.MinSize
);
742 case GL_POINT_SIZE_MAX_EXT
:
743 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.MaxSize
);
745 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
746 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Threshold
);
748 case GL_DISTANCE_ATTENUATION_EXT
:
749 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[0]);
750 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[1]);
751 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[2]);
753 case GL_POLYGON_MODE
:
754 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.FrontMode
);
755 params
[1] = ENUM_TO_BOOLEAN(ctx
->Polygon
.BackMode
);
757 case GL_POLYGON_OFFSET_BIAS_EXT
:
758 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetUnits
);
760 case GL_POLYGON_OFFSET_FACTOR
:
761 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetFactor
);
763 case GL_POLYGON_OFFSET_UNITS
:
764 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetUnits
);
766 case GL_POLYGON_OFFSET_POINT
:
767 params
[0] = ctx
->Polygon
.OffsetPoint
;
769 case GL_POLYGON_OFFSET_LINE
:
770 params
[0] = ctx
->Polygon
.OffsetLine
;
772 case GL_POLYGON_OFFSET_FILL
:
773 params
[0] = ctx
->Polygon
.OffsetFill
;
775 case GL_POLYGON_SMOOTH
:
776 params
[0] = ctx
->Polygon
.SmoothFlag
;
778 case GL_POLYGON_SMOOTH_HINT
:
779 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PolygonSmooth
);
781 case GL_POLYGON_STIPPLE
:
782 params
[0] = ctx
->Polygon
.StippleFlag
;
784 case GL_PROJECTION_MATRIX
:
786 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
787 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
788 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
789 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
790 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
791 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
792 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
793 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
794 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
795 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
796 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
797 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
798 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
799 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
800 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
801 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
802 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
805 case GL_PROJECTION_STACK_DEPTH
:
806 params
[0] = INT_TO_BOOLEAN(ctx
->ProjectionMatrixStack
.Depth
+ 1);
809 params
[0] = ENUM_TO_BOOLEAN(ctx
->ReadBuffer
->ColorReadBuffer
);
812 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.RedBias
);
815 if (ctx
->NewState
& _NEW_BUFFERS
)
816 _mesa_update_state(ctx
);
817 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.redBits
);
820 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.RedScale
);
823 params
[0] = ENUM_TO_BOOLEAN(ctx
->RenderMode
);
825 case GL_RESCALE_NORMAL
:
826 params
[0] = ctx
->Transform
.RescaleNormals
;
832 params
[0] = INT_TO_BOOLEAN(ctx
->Scissor
.X
);
833 params
[1] = INT_TO_BOOLEAN(ctx
->Scissor
.Y
);
834 params
[2] = INT_TO_BOOLEAN(ctx
->Scissor
.Width
);
835 params
[3] = INT_TO_BOOLEAN(ctx
->Scissor
.Height
);
837 case GL_SCISSOR_TEST
:
838 params
[0] = ctx
->Scissor
.Enabled
;
840 case GL_SELECTION_BUFFER_SIZE
:
841 params
[0] = INT_TO_BOOLEAN(ctx
->Select
.BufferSize
);
844 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ShadeModel
);
846 case GL_SHARED_TEXTURE_PALETTE_EXT
:
847 params
[0] = ctx
->Texture
.SharedPalette
;
849 case GL_STENCIL_BITS
:
850 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.stencilBits
);
852 case GL_STENCIL_CLEAR_VALUE
:
853 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Clear
);
855 case GL_STENCIL_FAIL
:
856 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
858 case GL_STENCIL_FUNC
:
859 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
861 case GL_STENCIL_PASS_DEPTH_FAIL
:
862 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
864 case GL_STENCIL_PASS_DEPTH_PASS
:
865 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
868 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
870 case GL_STENCIL_TEST
:
871 params
[0] = ctx
->Stencil
.Enabled
;
873 case GL_STENCIL_VALUE_MASK
:
874 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
876 case GL_STENCIL_WRITEMASK
:
877 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
880 params
[0] = ctx
->DrawBuffer
->Visual
.stereoMode
;
882 case GL_SUBPIXEL_BITS
:
883 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.SubPixelBits
);
886 params
[0] = _mesa_IsEnabled(GL_TEXTURE_1D
);
889 params
[0] = _mesa_IsEnabled(GL_TEXTURE_2D
);
892 params
[0] = _mesa_IsEnabled(GL_TEXTURE_3D
);
894 case GL_TEXTURE_1D_ARRAY_EXT
:
895 CHECK_EXT1(MESA_texture_array
, "GetBooleanv");
896 params
[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
);
898 case GL_TEXTURE_2D_ARRAY_EXT
:
899 CHECK_EXT1(MESA_texture_array
, "GetBooleanv");
900 params
[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
);
902 case GL_TEXTURE_BINDING_1D
:
903 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
905 case GL_TEXTURE_BINDING_2D
:
906 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
908 case GL_TEXTURE_BINDING_3D
:
909 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
911 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
912 CHECK_EXT1(MESA_texture_array
, "GetBooleanv");
913 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
915 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
916 CHECK_EXT1(MESA_texture_array
, "GetBooleanv");
917 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
919 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
920 CHECK_EXT1(MESA_texture_array
, "GetBooleanv");
921 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayTextureLayers
);
923 case GL_TEXTURE_GEN_S
:
924 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0);
926 case GL_TEXTURE_GEN_T
:
927 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0);
929 case GL_TEXTURE_GEN_R
:
930 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0);
932 case GL_TEXTURE_GEN_Q
:
933 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0);
935 case GL_TEXTURE_MATRIX
:
937 const GLfloat
*matrix
;
938 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
939 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
940 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
944 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
945 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
946 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
947 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
948 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
949 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
950 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
951 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
952 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
953 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
954 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
955 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
956 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
957 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
958 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
959 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
960 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
963 case GL_TEXTURE_STACK_DEPTH
:
965 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
966 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
967 _mesa_error(ctx
, GL_INVALID_OPERATION
,
968 "glGet(texture stack depth, unit %u)", unit
);
971 params
[0] = INT_TO_BOOLEAN(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
974 case GL_UNPACK_ALIGNMENT
:
975 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.Alignment
);
977 case GL_UNPACK_LSB_FIRST
:
978 params
[0] = ctx
->Unpack
.LsbFirst
;
980 case GL_UNPACK_ROW_LENGTH
:
981 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.RowLength
);
983 case GL_UNPACK_SKIP_PIXELS
:
984 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipPixels
);
986 case GL_UNPACK_SKIP_ROWS
:
987 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipRows
);
989 case GL_UNPACK_SWAP_BYTES
:
990 params
[0] = ctx
->Unpack
.SwapBytes
;
992 case GL_UNPACK_SKIP_IMAGES_EXT
:
993 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipImages
);
995 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
996 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.ImageHeight
);
998 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
999 params
[0] = ctx
->Unpack
.ClientStorage
;
1002 params
[0] = INT_TO_BOOLEAN(ctx
->Viewport
.X
);
1003 params
[1] = INT_TO_BOOLEAN(ctx
->Viewport
.Y
);
1004 params
[2] = INT_TO_BOOLEAN(ctx
->Viewport
.Width
);
1005 params
[3] = INT_TO_BOOLEAN(ctx
->Viewport
.Height
);
1008 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.ZoomX
);
1011 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.ZoomY
);
1013 case GL_VERTEX_ARRAY
:
1014 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Enabled
;
1016 case GL_VERTEX_ARRAY_SIZE
:
1017 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Size
);
1019 case GL_VERTEX_ARRAY_TYPE
:
1020 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Type
);
1022 case GL_VERTEX_ARRAY_STRIDE
:
1023 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
1025 case GL_VERTEX_ARRAY_COUNT_EXT
:
1026 params
[0] = INT_TO_BOOLEAN(0);
1028 case GL_NORMAL_ARRAY
:
1029 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
1031 case GL_NORMAL_ARRAY_TYPE
:
1032 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Type
);
1034 case GL_NORMAL_ARRAY_STRIDE
:
1035 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Stride
);
1037 case GL_NORMAL_ARRAY_COUNT_EXT
:
1038 params
[0] = INT_TO_BOOLEAN(0);
1040 case GL_COLOR_ARRAY
:
1041 params
[0] = ctx
->Array
.ArrayObj
->Color
.Enabled
;
1043 case GL_COLOR_ARRAY_SIZE
:
1044 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Size
);
1046 case GL_COLOR_ARRAY_TYPE
:
1047 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Type
);
1049 case GL_COLOR_ARRAY_STRIDE
:
1050 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Stride
);
1052 case GL_COLOR_ARRAY_COUNT_EXT
:
1053 params
[0] = INT_TO_BOOLEAN(0);
1055 case GL_INDEX_ARRAY
:
1056 params
[0] = ctx
->Array
.ArrayObj
->Index
.Enabled
;
1058 case GL_INDEX_ARRAY_TYPE
:
1059 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.Type
);
1061 case GL_INDEX_ARRAY_STRIDE
:
1062 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.Stride
);
1064 case GL_INDEX_ARRAY_COUNT_EXT
:
1065 params
[0] = INT_TO_BOOLEAN(0);
1067 case GL_TEXTURE_COORD_ARRAY
:
1068 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
;
1070 case GL_TEXTURE_COORD_ARRAY_SIZE
:
1071 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
1073 case GL_TEXTURE_COORD_ARRAY_TYPE
:
1074 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
1076 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
1077 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
1079 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
1080 params
[0] = INT_TO_BOOLEAN(0);
1082 case GL_EDGE_FLAG_ARRAY
:
1083 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
;
1085 case GL_EDGE_FLAG_ARRAY_STRIDE
:
1086 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
1088 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1089 params
[0] = INT_TO_BOOLEAN(0);
1091 case GL_MAX_TEXTURE_UNITS_ARB
:
1092 CHECK_EXT1(ARB_multitexture
, "GetBooleanv");
1093 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureUnits
);
1095 case GL_ACTIVE_TEXTURE_ARB
:
1096 CHECK_EXT1(ARB_multitexture
, "GetBooleanv");
1097 params
[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1099 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1100 CHECK_EXT1(ARB_multitexture
, "GetBooleanv");
1101 params
[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1103 case GL_TEXTURE_CUBE_MAP_ARB
:
1104 CHECK_EXT1(ARB_texture_cube_map
, "GetBooleanv");
1105 params
[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1107 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1108 CHECK_EXT1(ARB_texture_cube_map
, "GetBooleanv");
1109 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
1111 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1112 CHECK_EXT1(ARB_texture_cube_map
, "GetBooleanv");
1113 params
[0] = INT_TO_BOOLEAN((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
1115 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1116 params
[0] = INT_TO_BOOLEAN(ctx
->Hint
.TextureCompression
);
1118 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1119 params
[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
1121 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1124 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
1126 for (i
= 0; i
< n
; i
++)
1127 params
[i
] = ENUM_TO_BOOLEAN(formats
[i
]);
1130 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1131 CHECK_EXT1(EXT_compiled_vertex_array
, "GetBooleanv");
1132 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.LockFirst
);
1134 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1135 CHECK_EXT1(EXT_compiled_vertex_array
, "GetBooleanv");
1136 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.LockCount
);
1138 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1140 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
1141 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1142 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1143 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1144 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1145 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1146 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1147 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1148 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1149 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1150 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1151 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1152 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1153 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1154 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1155 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1156 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1159 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1161 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
1162 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1163 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1164 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1165 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1166 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1167 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1168 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1169 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1170 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1171 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1172 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1173 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1174 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1175 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1176 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1177 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1180 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1182 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
1183 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1184 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1185 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1186 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1187 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1188 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1189 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1190 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1191 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1192 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1193 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1194 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1195 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1196 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1197 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1198 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1201 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1203 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
1204 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1205 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1206 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1207 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1208 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1209 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1210 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1211 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1212 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1213 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1214 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1215 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1216 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1217 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1218 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1219 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1222 case GL_COLOR_MATRIX_SGI
:
1224 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
1225 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1226 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
1227 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
1228 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
1229 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
1230 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1231 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
1232 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
1233 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
1234 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
1235 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1236 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
1237 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
1238 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
1239 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
1240 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1243 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1244 params
[0] = INT_TO_BOOLEAN(ctx
->ColorMatrixStack
.Depth
+ 1);
1246 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1247 params
[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH
);
1249 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1250 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[0]);
1252 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1253 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[1]);
1255 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1256 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[2]);
1258 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1259 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[3]);
1261 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1262 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[0]);
1264 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1265 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[1]);
1267 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1268 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[2]);
1270 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1271 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[3]);
1273 case GL_CONVOLUTION_1D_EXT
:
1274 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1275 params
[0] = ctx
->Pixel
.Convolution1DEnabled
;
1277 case GL_CONVOLUTION_2D_EXT
:
1278 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1279 params
[0] = ctx
->Pixel
.Convolution2DEnabled
;
1281 case GL_SEPARABLE_2D_EXT
:
1282 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1283 params
[0] = ctx
->Pixel
.Separable2DEnabled
;
1285 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1286 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1287 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[0]);
1289 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1290 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1291 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[1]);
1293 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1294 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1295 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[2]);
1297 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1298 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1299 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[3]);
1301 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1302 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1303 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[0]);
1305 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1306 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1307 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[1]);
1309 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1310 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1311 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[2]);
1313 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1314 CHECK_EXT1(EXT_convolution
, "GetBooleanv");
1315 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[3]);
1318 CHECK_EXT1(EXT_histogram
, "GetBooleanv");
1319 params
[0] = ctx
->Pixel
.HistogramEnabled
;
1322 CHECK_EXT1(EXT_histogram
, "GetBooleanv");
1323 params
[0] = ctx
->Pixel
.MinMaxEnabled
;
1325 case GL_COLOR_TABLE_SGI
:
1326 CHECK_EXT1(SGI_color_table
, "GetBooleanv");
1327 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
];
1329 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1330 CHECK_EXT1(SGI_color_table
, "GetBooleanv");
1331 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
];
1333 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1334 CHECK_EXT1(SGI_color_table
, "GetBooleanv");
1335 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
];
1337 case GL_TEXTURE_COLOR_TABLE_SGI
:
1338 CHECK_EXT1(SGI_texture_color_table
, "GetBooleanv");
1339 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
;
1341 case GL_COLOR_SUM_EXT
:
1342 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
, "GetBooleanv");
1343 params
[0] = ctx
->Fog
.ColorSumEnabled
;
1345 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1346 CHECK_EXT1(EXT_secondary_color
, "GetBooleanv");
1347 FLUSH_CURRENT(ctx
, 0);
1348 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1349 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1350 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1351 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
1353 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1354 CHECK_EXT1(EXT_secondary_color
, "GetBooleanv");
1355 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
;
1357 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1358 CHECK_EXT1(EXT_secondary_color
, "GetBooleanv");
1359 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
1361 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1362 CHECK_EXT1(EXT_secondary_color
, "GetBooleanv");
1363 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
1365 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1366 CHECK_EXT1(EXT_secondary_color
, "GetBooleanv");
1367 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
1369 case GL_CURRENT_FOG_COORDINATE_EXT
:
1370 CHECK_EXT1(EXT_fog_coord
, "GetBooleanv");
1371 FLUSH_CURRENT(ctx
, 0);
1372 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1374 case GL_FOG_COORDINATE_ARRAY_EXT
:
1375 CHECK_EXT1(EXT_fog_coord
, "GetBooleanv");
1376 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.Enabled
;
1378 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1379 CHECK_EXT1(EXT_fog_coord
, "GetBooleanv");
1380 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
1382 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1383 CHECK_EXT1(EXT_fog_coord
, "GetBooleanv");
1384 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
1386 case GL_FOG_COORDINATE_SOURCE_EXT
:
1387 CHECK_EXT1(EXT_fog_coord
, "GetBooleanv");
1388 params
[0] = ENUM_TO_BOOLEAN(ctx
->Fog
.FogCoordinateSource
);
1390 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1391 CHECK_EXT1(EXT_texture_lod_bias
, "GetBooleanv");
1392 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxTextureLodBias
);
1394 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1395 CHECK_EXT1(EXT_texture_filter_anisotropic
, "GetBooleanv");
1396 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxTextureMaxAnisotropy
);
1398 case GL_MULTISAMPLE_ARB
:
1399 params
[0] = ctx
->Multisample
.Enabled
;
1401 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1402 params
[0] = ctx
->Multisample
.SampleAlphaToCoverage
;
1404 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1405 params
[0] = ctx
->Multisample
.SampleAlphaToOne
;
1407 case GL_SAMPLE_COVERAGE_ARB
:
1408 params
[0] = ctx
->Multisample
.SampleCoverage
;
1410 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1411 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Multisample
.SampleCoverageValue
);
1413 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1414 params
[0] = ctx
->Multisample
.SampleCoverageInvert
;
1416 case GL_SAMPLE_BUFFERS_ARB
:
1417 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
1419 case GL_SAMPLES_ARB
:
1420 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.samples
);
1422 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1423 CHECK_EXT1(IBM_rasterpos_clip
, "GetBooleanv");
1424 params
[0] = ctx
->Transform
.RasterPositionUnclipped
;
1426 case GL_POINT_SPRITE_NV
:
1427 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
, "GetBooleanv");
1428 params
[0] = ctx
->Point
.PointSprite
;
1430 case GL_POINT_SPRITE_R_MODE_NV
:
1431 CHECK_EXT1(NV_point_sprite
, "GetBooleanv");
1432 params
[0] = ENUM_TO_BOOLEAN(ctx
->Point
.SpriteRMode
);
1434 case GL_POINT_SPRITE_COORD_ORIGIN
:
1435 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
, "GetBooleanv");
1436 params
[0] = ENUM_TO_BOOLEAN(ctx
->Point
.SpriteOrigin
);
1438 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1439 CHECK_EXT1(SGIS_generate_mipmap
, "GetBooleanv");
1440 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.GenerateMipmap
);
1442 case GL_VERTEX_PROGRAM_BINDING_NV
:
1443 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1444 params
[0] = INT_TO_BOOLEAN((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
1446 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1447 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1448 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
;
1450 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1451 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1452 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
;
1454 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1455 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1456 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
;
1458 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1459 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1460 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
;
1462 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1463 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1464 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
;
1466 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1467 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1468 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
;
1470 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1471 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1472 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
;
1474 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1475 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1476 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
;
1478 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1479 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1480 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
;
1482 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1483 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1484 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
;
1486 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1487 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1488 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
;
1490 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1491 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1492 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
;
1494 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1495 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1496 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
;
1498 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1499 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1500 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
;
1502 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1503 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1504 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
;
1506 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1507 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1508 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
;
1510 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1511 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1512 params
[0] = ctx
->Eval
.Map1Attrib
[0];
1514 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1515 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1516 params
[0] = ctx
->Eval
.Map1Attrib
[1];
1518 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1519 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1520 params
[0] = ctx
->Eval
.Map1Attrib
[2];
1522 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1523 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1524 params
[0] = ctx
->Eval
.Map1Attrib
[3];
1526 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1527 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1528 params
[0] = ctx
->Eval
.Map1Attrib
[4];
1530 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1531 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1532 params
[0] = ctx
->Eval
.Map1Attrib
[5];
1534 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1535 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1536 params
[0] = ctx
->Eval
.Map1Attrib
[6];
1538 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1539 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1540 params
[0] = ctx
->Eval
.Map1Attrib
[7];
1542 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1543 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1544 params
[0] = ctx
->Eval
.Map1Attrib
[8];
1546 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1547 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1548 params
[0] = ctx
->Eval
.Map1Attrib
[9];
1550 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1551 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1552 params
[0] = ctx
->Eval
.Map1Attrib
[10];
1554 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1555 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1556 params
[0] = ctx
->Eval
.Map1Attrib
[11];
1558 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1559 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1560 params
[0] = ctx
->Eval
.Map1Attrib
[12];
1562 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1563 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1564 params
[0] = ctx
->Eval
.Map1Attrib
[13];
1566 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1567 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1568 params
[0] = ctx
->Eval
.Map1Attrib
[14];
1570 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1571 CHECK_EXT1(NV_vertex_program
, "GetBooleanv");
1572 params
[0] = ctx
->Eval
.Map1Attrib
[15];
1574 case GL_FRAGMENT_PROGRAM_NV
:
1575 CHECK_EXT1(NV_fragment_program
, "GetBooleanv");
1576 params
[0] = ctx
->FragmentProgram
.Enabled
;
1578 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
1579 CHECK_EXT1(NV_fragment_program
, "GetBooleanv");
1580 params
[0] = INT_TO_BOOLEAN(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
1582 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
1583 CHECK_EXT1(NV_fragment_program
, "GetBooleanv");
1584 params
[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
1586 case GL_TEXTURE_RECTANGLE_NV
:
1587 CHECK_EXT1(NV_texture_rectangle
, "GetBooleanv");
1588 params
[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1590 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1591 CHECK_EXT1(NV_texture_rectangle
, "GetBooleanv");
1592 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
1594 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1595 CHECK_EXT1(NV_texture_rectangle
, "GetBooleanv");
1596 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureRectSize
);
1598 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
1599 CHECK_EXT1(EXT_stencil_two_side
, "GetBooleanv");
1600 params
[0] = ctx
->Stencil
.TestTwoSide
;
1602 case GL_ACTIVE_STENCIL_FACE_EXT
:
1603 CHECK_EXT1(EXT_stencil_two_side
, "GetBooleanv");
1604 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
1606 case GL_MAX_SHININESS_NV
:
1607 CHECK_EXT1(NV_light_max_exponent
, "GetBooleanv");
1608 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxShininess
);
1610 case GL_MAX_SPOT_EXPONENT_NV
:
1611 CHECK_EXT1(NV_light_max_exponent
, "GetBooleanv");
1612 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxSpotExponent
);
1614 case GL_ARRAY_BUFFER_BINDING_ARB
:
1615 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayBufferObj
->Name
);
1617 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
1618 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
1620 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
1621 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
1623 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1624 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
1626 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
1627 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
1629 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
1630 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
1632 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
1633 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
1635 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1636 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
1638 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
1639 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
1641 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
1642 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ElementArrayBufferObj
->Name
);
1644 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
1645 CHECK_EXT1(EXT_pixel_buffer_object
, "GetBooleanv");
1646 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.BufferObj
->Name
);
1648 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
1649 CHECK_EXT1(EXT_pixel_buffer_object
, "GetBooleanv");
1650 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.BufferObj
->Name
);
1652 case GL_VERTEX_PROGRAM_ARB
:
1653 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetBooleanv");
1654 params
[0] = ctx
->VertexProgram
.Enabled
;
1656 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
1657 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetBooleanv");
1658 params
[0] = ctx
->VertexProgram
.PointSizeEnabled
;
1660 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
1661 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetBooleanv");
1662 params
[0] = ctx
->VertexProgram
.TwoSideEnabled
;
1664 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
1665 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetBooleanv");
1666 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxProgramMatrixStackDepth
);
1668 case GL_MAX_PROGRAM_MATRICES_ARB
:
1669 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetBooleanv");
1670 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxProgramMatrices
);
1672 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
1673 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetBooleanv");
1674 params
[0] = ctx
->CurrentStack
->Depth
+ 1;
1676 case GL_CURRENT_MATRIX_ARB
:
1677 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
, "GetBooleanv");
1679 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
1680 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1681 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
1682 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
1683 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
1684 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
1685 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1686 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
1687 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
1688 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
1689 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
1690 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1691 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
1692 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
1693 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
1694 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
1695 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1698 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
1699 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
, "GetBooleanv");
1701 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
1702 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1703 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1704 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1705 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1706 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1707 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1708 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1709 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1710 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1711 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1712 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1713 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1714 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1715 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1716 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1717 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1720 case GL_MAX_VERTEX_ATTRIBS_ARB
:
1721 CHECK_EXT1(ARB_vertex_program
, "GetBooleanv");
1722 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.VertexProgram
.MaxAttribs
);
1724 case GL_PROGRAM_ERROR_POSITION_ARB
:
1725 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
, "GetBooleanv");
1726 params
[0] = INT_TO_BOOLEAN(ctx
->Program
.ErrorPos
);
1728 case GL_FRAGMENT_PROGRAM_ARB
:
1729 CHECK_EXT1(ARB_fragment_program
, "GetBooleanv");
1730 params
[0] = ctx
->FragmentProgram
.Enabled
;
1732 case GL_MAX_TEXTURE_COORDS_ARB
:
1733 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
, "GetBooleanv");
1734 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureCoordUnits
);
1736 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
1737 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
, "GetBooleanv");
1738 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureImageUnits
);
1740 case GL_DEPTH_BOUNDS_TEST_EXT
:
1741 CHECK_EXT1(EXT_depth_bounds_test
, "GetBooleanv");
1742 params
[0] = ctx
->Depth
.BoundsTest
;
1744 case GL_DEPTH_BOUNDS_EXT
:
1745 CHECK_EXT1(EXT_depth_bounds_test
, "GetBooleanv");
1746 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Depth
.BoundsMin
);
1747 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Depth
.BoundsMax
);
1749 case GL_DEPTH_CLAMP
:
1750 CHECK_EXT1(ARB_depth_clamp
, "GetBooleanv");
1751 params
[0] = ctx
->Transform
.DepthClamp
;
1753 case GL_MAX_DRAW_BUFFERS_ARB
:
1754 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxDrawBuffers
);
1756 case GL_DRAW_BUFFER0_ARB
:
1757 params
[0] = ENUM_TO_BOOLEAN(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
1759 case GL_DRAW_BUFFER1_ARB
:
1762 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1763 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1766 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
1767 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1770 case GL_DRAW_BUFFER2_ARB
:
1773 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1774 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1777 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
1778 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1781 case GL_DRAW_BUFFER3_ARB
:
1784 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1785 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1788 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
1789 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1792 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
1793 CHECK_EXT1(OES_read_format
, "GetBooleanv");
1794 params
[0] = INT_TO_BOOLEAN(_mesa_get_color_read_type(ctx
));
1796 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
1797 CHECK_EXT1(OES_read_format
, "GetBooleanv");
1798 params
[0] = INT_TO_BOOLEAN(_mesa_get_color_read_format(ctx
));
1800 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
1801 CHECK_EXT1(ATI_fragment_shader
, "GetBooleanv");
1802 params
[0] = INT_TO_BOOLEAN(6);
1804 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
1805 CHECK_EXT1(ATI_fragment_shader
, "GetBooleanv");
1806 params
[0] = INT_TO_BOOLEAN(8);
1808 case GL_NUM_PASSES_ATI
:
1809 CHECK_EXT1(ATI_fragment_shader
, "GetBooleanv");
1810 params
[0] = INT_TO_BOOLEAN(2);
1812 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
1813 CHECK_EXT1(ATI_fragment_shader
, "GetBooleanv");
1814 params
[0] = INT_TO_BOOLEAN(8);
1816 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
1817 CHECK_EXT1(ATI_fragment_shader
, "GetBooleanv");
1818 params
[0] = INT_TO_BOOLEAN(16);
1820 case GL_COLOR_ALPHA_PAIRING_ATI
:
1821 CHECK_EXT1(ATI_fragment_shader
, "GetBooleanv");
1822 params
[0] = GL_TRUE
;
1824 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
1825 CHECK_EXT1(ATI_fragment_shader
, "GetBooleanv");
1826 params
[0] = INT_TO_BOOLEAN(3);
1828 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
1829 CHECK_EXT1(ATI_fragment_shader
, "GetBooleanv");
1830 params
[0] = INT_TO_BOOLEAN(3);
1832 case GL_STENCIL_BACK_FUNC
:
1833 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.Function
[1]);
1835 case GL_STENCIL_BACK_VALUE_MASK
:
1836 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.ValueMask
[1]);
1838 case GL_STENCIL_BACK_WRITEMASK
:
1839 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.WriteMask
[1]);
1841 case GL_STENCIL_BACK_REF
:
1842 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Ref
[1]);
1844 case GL_STENCIL_BACK_FAIL
:
1845 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.FailFunc
[1]);
1847 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
1848 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZFailFunc
[1]);
1850 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
1851 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZPassFunc
[1]);
1853 case GL_FRAMEBUFFER_BINDING_EXT
:
1854 CHECK_EXT1(EXT_framebuffer_object
, "GetBooleanv");
1855 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Name
);
1857 case GL_RENDERBUFFER_BINDING_EXT
:
1858 CHECK_EXT1(EXT_framebuffer_object
, "GetBooleanv");
1859 params
[0] = INT_TO_BOOLEAN(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
1861 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
1862 CHECK_EXT1(EXT_framebuffer_object
, "GetBooleanv");
1863 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxColorAttachments
);
1865 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
1866 CHECK_EXT1(EXT_framebuffer_object
, "GetBooleanv");
1867 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxRenderbufferSize
);
1869 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
1870 CHECK_EXT1(EXT_framebuffer_blit
, "GetBooleanv");
1871 params
[0] = INT_TO_BOOLEAN(ctx
->ReadBuffer
->Name
);
1873 case GL_PROVOKING_VERTEX_EXT
:
1874 CHECK_EXT1(EXT_provoking_vertex
, "GetBooleanv");
1875 params
[0] = ctx
->Light
.ProvokingVertex
;
1877 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
1878 CHECK_EXT1(EXT_provoking_vertex
, "GetBooleanv");
1879 params
[0] = ctx
->Const
.QuadsFollowProvokingVertexConvention
;
1881 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
1882 CHECK_EXT1(ARB_fragment_shader
, "GetBooleanv");
1883 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
1885 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
1886 CHECK_EXT1(ARB_fragment_shader
, "GetBooleanv");
1887 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.FragmentShaderDerivative
);
1889 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
1890 CHECK_EXT1(ARB_vertex_shader
, "GetBooleanv");
1891 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
1893 case GL_MAX_VARYING_FLOATS_ARB
:
1894 CHECK_EXT1(ARB_vertex_shader
, "GetBooleanv");
1895 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxVarying
* 4);
1897 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
1898 CHECK_EXT1(ARB_vertex_shader
, "GetBooleanv");
1899 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxVertexTextureImageUnits
);
1901 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
1902 CHECK_EXT1(ARB_vertex_shader
, "GetBooleanv");
1903 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxCombinedTextureImageUnits
);
1905 case GL_CURRENT_PROGRAM
:
1906 CHECK_EXT1(ARB_shader_objects
, "GetBooleanv");
1907 params
[0] = INT_TO_BOOLEAN(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
1909 case GL_MAX_SAMPLES
:
1910 CHECK_EXT1(ARB_framebuffer_object
, "GetBooleanv");
1911 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxSamples
);
1913 case GL_VERTEX_ARRAY_BINDING_APPLE
:
1914 CHECK_EXT1(APPLE_vertex_array_object
, "GetBooleanv");
1915 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Name
);
1917 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
1918 CHECK_EXT1(ARB_seamless_cube_map
, "GetBooleanv");
1919 params
[0] = ctx
->Texture
.CubeMapSeamless
;
1921 case GL_MAX_SERVER_WAIT_TIMEOUT
:
1922 CHECK_EXT1(ARB_sync
, "GetBooleanv");
1923 params
[0] = INT64_TO_BOOLEAN(ctx
->Const
.MaxServerWaitTimeout
);
1925 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
1926 CHECK_EXT1(EXT_transform_feedback
, "GetBooleanv");
1927 params
[0] = INT_TO_BOOLEAN(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
1929 case GL_RASTERIZER_DISCARD
:
1930 CHECK_EXT1(EXT_transform_feedback
, "GetBooleanv");
1931 params
[0] = ctx
->TransformFeedback
.RasterDiscard
;
1933 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
1934 CHECK_EXT1(EXT_transform_feedback
, "GetBooleanv");
1935 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
1937 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
1938 CHECK_EXT1(EXT_transform_feedback
, "GetBooleanv");
1939 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
1941 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
1942 CHECK_EXT1(EXT_transform_feedback
, "GetBooleanv");
1943 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
1945 case GL_NUM_EXTENSIONS
:
1946 params
[0] = INT_TO_BOOLEAN(_mesa_get_extension_count(ctx
));
1948 case GL_MAJOR_VERSION
:
1949 params
[0] = INT_TO_BOOLEAN(ctx
->VersionMajor
);
1951 case GL_MINOR_VERSION
:
1952 params
[0] = INT_TO_BOOLEAN(ctx
->VersionMinor
);
1954 case GL_CONTEXT_FLAGS
:
1955 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.ContextFlags
);
1958 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv(pname=0x%x)", pname
);
1963 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
1965 GET_CURRENT_CONTEXT(ctx
);
1966 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1971 if (ctx
->Driver
.GetFloatv
&&
1972 ctx
->Driver
.GetFloatv(ctx
, pname
, params
))
1976 case GL_ACCUM_RED_BITS
:
1977 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumRedBits
);
1979 case GL_ACCUM_GREEN_BITS
:
1980 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
1982 case GL_ACCUM_BLUE_BITS
:
1983 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
1985 case GL_ACCUM_ALPHA_BITS
:
1986 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
1988 case GL_ACCUM_CLEAR_VALUE
:
1989 params
[0] = ctx
->Accum
.ClearColor
[0];
1990 params
[1] = ctx
->Accum
.ClearColor
[1];
1991 params
[2] = ctx
->Accum
.ClearColor
[2];
1992 params
[3] = ctx
->Accum
.ClearColor
[3];
1995 params
[0] = ctx
->Pixel
.AlphaBias
;
1998 if (ctx
->NewState
& _NEW_BUFFERS
)
1999 _mesa_update_state(ctx
);
2000 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.alphaBits
);
2002 case GL_ALPHA_SCALE
:
2003 params
[0] = ctx
->Pixel
.AlphaScale
;
2006 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.AlphaEnabled
);
2008 case GL_ALPHA_TEST_FUNC
:
2009 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2011 case GL_ALPHA_TEST_REF
:
2012 params
[0] = ctx
->Color
.AlphaRef
;
2014 case GL_ATTRIB_STACK_DEPTH
:
2015 params
[0] = (GLfloat
)(ctx
->AttribStackDepth
);
2017 case GL_AUTO_NORMAL
:
2018 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.AutoNormal
);
2020 case GL_AUX_BUFFERS
:
2021 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
2024 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Color
.BlendEnabled
& 1));
2027 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2030 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2032 case GL_BLEND_SRC_RGB_EXT
:
2033 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2035 case GL_BLEND_DST_RGB_EXT
:
2036 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2038 case GL_BLEND_SRC_ALPHA_EXT
:
2039 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2041 case GL_BLEND_DST_ALPHA_EXT
:
2042 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2044 case GL_BLEND_EQUATION
:
2045 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendEquationRGB
);
2047 case GL_BLEND_EQUATION_ALPHA_EXT
:
2048 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendEquationA
);
2050 case GL_BLEND_COLOR_EXT
:
2051 params
[0] = ctx
->Color
.BlendColor
[0];
2052 params
[1] = ctx
->Color
.BlendColor
[1];
2053 params
[2] = ctx
->Color
.BlendColor
[2];
2054 params
[3] = ctx
->Color
.BlendColor
[3];
2057 params
[0] = ctx
->Pixel
.BlueBias
;
2060 if (ctx
->NewState
& _NEW_BUFFERS
)
2061 _mesa_update_state(ctx
);
2062 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.blueBits
);
2065 params
[0] = ctx
->Pixel
.BlueScale
;
2067 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2068 params
[0] = (GLfloat
)(ctx
->ClientAttribStackDepth
);
2070 case GL_CLIP_PLANE0
:
2071 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
2073 case GL_CLIP_PLANE1
:
2074 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
2076 case GL_CLIP_PLANE2
:
2077 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
2079 case GL_CLIP_PLANE3
:
2080 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
2082 case GL_CLIP_PLANE4
:
2083 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
2085 case GL_CLIP_PLANE5
:
2086 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
2088 case GL_COLOR_CLEAR_VALUE
:
2089 params
[0] = ctx
->Color
.ClearColor
[0];
2090 params
[1] = ctx
->Color
.ClearColor
[1];
2091 params
[2] = ctx
->Color
.ClearColor
[2];
2092 params
[3] = ctx
->Color
.ClearColor
[3];
2094 case GL_COLOR_MATERIAL
:
2095 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.ColorMaterialEnabled
);
2097 case GL_COLOR_MATERIAL_FACE
:
2098 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2100 case GL_COLOR_MATERIAL_PARAMETER
:
2101 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2103 case GL_COLOR_WRITEMASK
:
2104 params
[0] = (GLfloat
)(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
2105 params
[1] = (GLfloat
)(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
2106 params
[2] = (GLfloat
)(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
2107 params
[3] = (GLfloat
)(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
2110 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.CullFlag
);
2112 case GL_CULL_FACE_MODE
:
2113 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2115 case GL_CURRENT_COLOR
:
2116 FLUSH_CURRENT(ctx
, 0);
2117 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
2118 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
2119 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
2120 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
2122 case GL_CURRENT_INDEX
:
2123 FLUSH_CURRENT(ctx
, 0);
2124 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0];
2126 case GL_CURRENT_NORMAL
:
2127 FLUSH_CURRENT(ctx
, 0);
2128 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
2129 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
2130 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
2132 case GL_CURRENT_RASTER_COLOR
:
2133 params
[0] = ctx
->Current
.RasterColor
[0];
2134 params
[1] = ctx
->Current
.RasterColor
[1];
2135 params
[2] = ctx
->Current
.RasterColor
[2];
2136 params
[3] = ctx
->Current
.RasterColor
[3];
2138 case GL_CURRENT_RASTER_DISTANCE
:
2139 params
[0] = ctx
->Current
.RasterDistance
;
2141 case GL_CURRENT_RASTER_INDEX
:
2144 case GL_CURRENT_RASTER_POSITION
:
2145 params
[0] = ctx
->Current
.RasterPos
[0];
2146 params
[1] = ctx
->Current
.RasterPos
[1];
2147 params
[2] = ctx
->Current
.RasterPos
[2];
2148 params
[3] = ctx
->Current
.RasterPos
[3];
2150 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
2151 params
[0] = ctx
->Current
.RasterSecondaryColor
[0];
2152 params
[1] = ctx
->Current
.RasterSecondaryColor
[1];
2153 params
[2] = ctx
->Current
.RasterSecondaryColor
[2];
2154 params
[3] = ctx
->Current
.RasterSecondaryColor
[3];
2156 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2158 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2159 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2160 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2161 "glGet(raster tex coords, unit %u)", unit
);
2164 params
[0] = ctx
->Current
.RasterTexCoords
[unit
][0];
2165 params
[1] = ctx
->Current
.RasterTexCoords
[unit
][1];
2166 params
[2] = ctx
->Current
.RasterTexCoords
[unit
][2];
2167 params
[3] = ctx
->Current
.RasterTexCoords
[unit
][3];
2170 case GL_CURRENT_RASTER_POSITION_VALID
:
2171 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Current
.RasterPosValid
);
2173 case GL_CURRENT_TEXTURE_COORDS
:
2175 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2176 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2177 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2178 "glGet(current tex coords, unit %u)", unit
);
2181 FLUSH_CURRENT(ctx
, 0);
2182 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0];
2183 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1];
2184 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2];
2185 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3];
2189 params
[0] = ctx
->Pixel
.DepthBias
;
2192 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.depthBits
);
2194 case GL_DEPTH_CLEAR_VALUE
:
2195 params
[0] = ((GLfloat
) ctx
->Depth
.Clear
);
2198 params
[0] = ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2200 case GL_DEPTH_RANGE
:
2201 params
[0] = ctx
->Viewport
.Near
;
2202 params
[1] = ctx
->Viewport
.Far
;
2204 case GL_DEPTH_SCALE
:
2205 params
[0] = ctx
->Pixel
.DepthScale
;
2208 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.Test
);
2210 case GL_DEPTH_WRITEMASK
:
2211 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.Mask
);
2214 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.DitherFlag
);
2216 case GL_DOUBLEBUFFER
:
2217 params
[0] = BOOLEAN_TO_FLOAT(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
2219 case GL_DRAW_BUFFER
:
2220 params
[0] = ENUM_TO_FLOAT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
2223 FLUSH_CURRENT(ctx
, 0);
2224 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
2226 case GL_FEEDBACK_BUFFER_SIZE
:
2227 params
[0] = (GLfloat
)(ctx
->Feedback
.BufferSize
);
2229 case GL_FEEDBACK_BUFFER_TYPE
:
2230 params
[0] = ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2233 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Fog
.Enabled
);
2236 params
[0] = ctx
->Fog
.Color
[0];
2237 params
[1] = ctx
->Fog
.Color
[1];
2238 params
[2] = ctx
->Fog
.Color
[2];
2239 params
[3] = ctx
->Fog
.Color
[3];
2241 case GL_FOG_DENSITY
:
2242 params
[0] = ctx
->Fog
.Density
;
2245 params
[0] = ctx
->Fog
.End
;
2248 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2251 params
[0] = ctx
->Fog
.Index
;
2254 params
[0] = ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2257 params
[0] = ctx
->Fog
.Start
;
2260 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2263 params
[0] = ctx
->Pixel
.GreenBias
;
2266 if (ctx
->NewState
& _NEW_BUFFERS
)
2267 _mesa_update_state(ctx
);
2268 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.greenBits
);
2270 case GL_GREEN_SCALE
:
2271 params
[0] = ctx
->Pixel
.GreenScale
;
2274 if (ctx
->NewState
& _NEW_BUFFERS
)
2275 _mesa_update_state(ctx
);
2276 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.indexBits
);
2278 case GL_INDEX_CLEAR_VALUE
:
2279 params
[0] = (GLfloat
)(ctx
->Color
.ClearIndex
);
2282 params
[0] = BOOLEAN_TO_FLOAT(GL_FALSE
);
2284 case GL_INDEX_OFFSET
:
2285 params
[0] = (GLfloat
)(ctx
->Pixel
.IndexOffset
);
2287 case GL_INDEX_SHIFT
:
2288 params
[0] = (GLfloat
)(ctx
->Pixel
.IndexShift
);
2290 case GL_INDEX_WRITEMASK
:
2291 params
[0] = (GLfloat
)(ctx
->Color
.IndexMask
);
2294 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[0].Enabled
);
2297 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[1].Enabled
);
2300 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[2].Enabled
);
2303 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[3].Enabled
);
2306 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[4].Enabled
);
2309 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[5].Enabled
);
2312 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[6].Enabled
);
2315 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[7].Enabled
);
2318 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Enabled
);
2320 case GL_LIGHT_MODEL_AMBIENT
:
2321 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2322 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2323 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2324 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2326 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2327 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2329 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2330 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Model
.LocalViewer
);
2332 case GL_LIGHT_MODEL_TWO_SIDE
:
2333 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Model
.TwoSide
);
2335 case GL_LINE_SMOOTH
:
2336 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Line
.SmoothFlag
);
2338 case GL_LINE_SMOOTH_HINT
:
2339 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2341 case GL_LINE_STIPPLE
:
2342 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Line
.StippleFlag
);
2344 case GL_LINE_STIPPLE_PATTERN
:
2345 params
[0] = (GLfloat
)(ctx
->Line
.StipplePattern
);
2347 case GL_LINE_STIPPLE_REPEAT
:
2348 params
[0] = (GLfloat
)(ctx
->Line
.StippleFactor
);
2351 params
[0] = ctx
->Line
.Width
;
2353 case GL_LINE_WIDTH_GRANULARITY
:
2354 params
[0] = ctx
->Const
.LineWidthGranularity
;
2356 case GL_LINE_WIDTH_RANGE
:
2357 params
[0] = ctx
->Const
.MinLineWidthAA
;
2358 params
[1] = ctx
->Const
.MaxLineWidthAA
;
2360 case GL_ALIASED_LINE_WIDTH_RANGE
:
2361 params
[0] = ctx
->Const
.MinLineWidth
;
2362 params
[1] = ctx
->Const
.MaxLineWidth
;
2365 params
[0] = (GLfloat
)(ctx
->List
.ListBase
);
2368 params
[0] = (GLfloat
)((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
2373 if (!ctx
->CompileFlag
)
2375 else if (ctx
->ExecuteFlag
)
2376 mode
= GL_COMPILE_AND_EXECUTE
;
2379 params
[0] = ENUM_TO_FLOAT(mode
);
2382 case GL_INDEX_LOGIC_OP
:
2383 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.IndexLogicOpEnabled
);
2385 case GL_COLOR_LOGIC_OP
:
2386 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.ColorLogicOpEnabled
);
2388 case GL_LOGIC_OP_MODE
:
2389 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2391 case GL_MAP1_COLOR_4
:
2392 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Color4
);
2394 case GL_MAP1_GRID_DOMAIN
:
2395 params
[0] = ctx
->Eval
.MapGrid1u1
;
2396 params
[1] = ctx
->Eval
.MapGrid1u2
;
2398 case GL_MAP1_GRID_SEGMENTS
:
2399 params
[0] = (GLfloat
)(ctx
->Eval
.MapGrid1un
);
2402 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Index
);
2404 case GL_MAP1_NORMAL
:
2405 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Normal
);
2407 case GL_MAP1_TEXTURE_COORD_1
:
2408 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord1
);
2410 case GL_MAP1_TEXTURE_COORD_2
:
2411 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord2
);
2413 case GL_MAP1_TEXTURE_COORD_3
:
2414 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord3
);
2416 case GL_MAP1_TEXTURE_COORD_4
:
2417 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord4
);
2419 case GL_MAP1_VERTEX_3
:
2420 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Vertex3
);
2422 case GL_MAP1_VERTEX_4
:
2423 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Vertex4
);
2425 case GL_MAP2_COLOR_4
:
2426 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Color4
);
2428 case GL_MAP2_GRID_DOMAIN
:
2429 params
[0] = ctx
->Eval
.MapGrid2u1
;
2430 params
[1] = ctx
->Eval
.MapGrid2u2
;
2431 params
[2] = ctx
->Eval
.MapGrid2v1
;
2432 params
[3] = ctx
->Eval
.MapGrid2v2
;
2434 case GL_MAP2_GRID_SEGMENTS
:
2435 params
[0] = (GLfloat
)(ctx
->Eval
.MapGrid2un
);
2436 params
[1] = (GLfloat
)(ctx
->Eval
.MapGrid2vn
);
2439 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Index
);
2441 case GL_MAP2_NORMAL
:
2442 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Normal
);
2444 case GL_MAP2_TEXTURE_COORD_1
:
2445 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord1
);
2447 case GL_MAP2_TEXTURE_COORD_2
:
2448 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord2
);
2450 case GL_MAP2_TEXTURE_COORD_3
:
2451 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord3
);
2453 case GL_MAP2_TEXTURE_COORD_4
:
2454 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord4
);
2456 case GL_MAP2_VERTEX_3
:
2457 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Vertex3
);
2459 case GL_MAP2_VERTEX_4
:
2460 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Vertex4
);
2463 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MapColorFlag
);
2465 case GL_MAP_STENCIL
:
2466 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MapStencilFlag
);
2468 case GL_MATRIX_MODE
:
2469 params
[0] = ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2471 case GL_MAX_ATTRIB_STACK_DEPTH
:
2472 params
[0] = (GLfloat
)(MAX_ATTRIB_STACK_DEPTH
);
2474 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2475 params
[0] = (GLfloat
)(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
2477 case GL_MAX_CLIP_PLANES
:
2478 params
[0] = (GLfloat
)(ctx
->Const
.MaxClipPlanes
);
2480 case GL_MAX_ELEMENTS_VERTICES
:
2481 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayLockSize
);
2483 case GL_MAX_ELEMENTS_INDICES
:
2484 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayLockSize
);
2486 case GL_MAX_EVAL_ORDER
:
2487 params
[0] = (GLfloat
)(MAX_EVAL_ORDER
);
2490 params
[0] = (GLfloat
)(ctx
->Const
.MaxLights
);
2492 case GL_MAX_LIST_NESTING
:
2493 params
[0] = (GLfloat
)(MAX_LIST_NESTING
);
2495 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2496 params
[0] = (GLfloat
)(MAX_MODELVIEW_STACK_DEPTH
);
2498 case GL_MAX_NAME_STACK_DEPTH
:
2499 params
[0] = (GLfloat
)(MAX_NAME_STACK_DEPTH
);
2501 case GL_MAX_PIXEL_MAP_TABLE
:
2502 params
[0] = (GLfloat
)(MAX_PIXEL_MAP_TABLE
);
2504 case GL_MAX_PROJECTION_STACK_DEPTH
:
2505 params
[0] = (GLfloat
)(MAX_PROJECTION_STACK_DEPTH
);
2507 case GL_MAX_TEXTURE_SIZE
:
2508 params
[0] = (GLfloat
)(1 << (ctx
->Const
.MaxTextureLevels
- 1));
2510 case GL_MAX_3D_TEXTURE_SIZE
:
2511 params
[0] = (GLfloat
)(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
2513 case GL_MAX_TEXTURE_STACK_DEPTH
:
2514 params
[0] = (GLfloat
)(MAX_TEXTURE_STACK_DEPTH
);
2516 case GL_MAX_VIEWPORT_DIMS
:
2517 params
[0] = (GLfloat
)(ctx
->Const
.MaxViewportWidth
);
2518 params
[1] = (GLfloat
)(ctx
->Const
.MaxViewportHeight
);
2520 case GL_MODELVIEW_MATRIX
:
2522 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
2523 params
[0] = matrix
[0];
2524 params
[1] = matrix
[1];
2525 params
[2] = matrix
[2];
2526 params
[3] = matrix
[3];
2527 params
[4] = matrix
[4];
2528 params
[5] = matrix
[5];
2529 params
[6] = matrix
[6];
2530 params
[7] = matrix
[7];
2531 params
[8] = matrix
[8];
2532 params
[9] = matrix
[9];
2533 params
[10] = matrix
[10];
2534 params
[11] = matrix
[11];
2535 params
[12] = matrix
[12];
2536 params
[13] = matrix
[13];
2537 params
[14] = matrix
[14];
2538 params
[15] = matrix
[15];
2541 case GL_MODELVIEW_STACK_DEPTH
:
2542 params
[0] = (GLfloat
)(ctx
->ModelviewMatrixStack
.Depth
+ 1);
2544 case GL_NAME_STACK_DEPTH
:
2545 params
[0] = (GLfloat
)(ctx
->Select
.NameStackDepth
);
2548 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.Normalize
);
2550 case GL_PACK_ALIGNMENT
:
2551 params
[0] = (GLfloat
)(ctx
->Pack
.Alignment
);
2553 case GL_PACK_LSB_FIRST
:
2554 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.LsbFirst
);
2556 case GL_PACK_ROW_LENGTH
:
2557 params
[0] = (GLfloat
)(ctx
->Pack
.RowLength
);
2559 case GL_PACK_SKIP_PIXELS
:
2560 params
[0] = (GLfloat
)(ctx
->Pack
.SkipPixels
);
2562 case GL_PACK_SKIP_ROWS
:
2563 params
[0] = (GLfloat
)(ctx
->Pack
.SkipRows
);
2565 case GL_PACK_SWAP_BYTES
:
2566 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.SwapBytes
);
2568 case GL_PACK_SKIP_IMAGES_EXT
:
2569 params
[0] = (GLfloat
)(ctx
->Pack
.SkipImages
);
2571 case GL_PACK_IMAGE_HEIGHT_EXT
:
2572 params
[0] = (GLfloat
)(ctx
->Pack
.ImageHeight
);
2574 case GL_PACK_INVERT_MESA
:
2575 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.Invert
);
2577 case GL_PERSPECTIVE_CORRECTION_HINT
:
2578 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
2580 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2581 params
[0] = (GLfloat
)(ctx
->PixelMaps
.AtoA
.Size
);
2583 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2584 params
[0] = (GLfloat
)(ctx
->PixelMaps
.BtoB
.Size
);
2586 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2587 params
[0] = (GLfloat
)(ctx
->PixelMaps
.GtoG
.Size
);
2589 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2590 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoA
.Size
);
2592 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2593 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoB
.Size
);
2595 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2596 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoG
.Size
);
2598 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2599 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoI
.Size
);
2601 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2602 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoR
.Size
);
2604 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2605 params
[0] = (GLfloat
)(ctx
->PixelMaps
.RtoR
.Size
);
2607 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2608 params
[0] = (GLfloat
)(ctx
->PixelMaps
.StoS
.Size
);
2611 params
[0] = ctx
->Point
.Size
;
2613 case GL_POINT_SIZE_GRANULARITY
:
2614 params
[0] = ctx
->Const
.PointSizeGranularity
;
2616 case GL_POINT_SIZE_RANGE
:
2617 params
[0] = ctx
->Const
.MinPointSizeAA
;
2618 params
[1] = ctx
->Const
.MaxPointSizeAA
;
2620 case GL_ALIASED_POINT_SIZE_RANGE
:
2621 params
[0] = ctx
->Const
.MinPointSize
;
2622 params
[1] = ctx
->Const
.MaxPointSize
;
2624 case GL_POINT_SMOOTH
:
2625 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Point
.SmoothFlag
);
2627 case GL_POINT_SMOOTH_HINT
:
2628 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
2630 case GL_POINT_SIZE_MIN_EXT
:
2631 params
[0] = ctx
->Point
.MinSize
;
2633 case GL_POINT_SIZE_MAX_EXT
:
2634 params
[0] = ctx
->Point
.MaxSize
;
2636 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2637 params
[0] = ctx
->Point
.Threshold
;
2639 case GL_DISTANCE_ATTENUATION_EXT
:
2640 params
[0] = ctx
->Point
.Params
[0];
2641 params
[1] = ctx
->Point
.Params
[1];
2642 params
[2] = ctx
->Point
.Params
[2];
2644 case GL_POLYGON_MODE
:
2645 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
2646 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
2648 case GL_POLYGON_OFFSET_BIAS_EXT
:
2649 params
[0] = ctx
->Polygon
.OffsetUnits
;
2651 case GL_POLYGON_OFFSET_FACTOR
:
2652 params
[0] = ctx
->Polygon
.OffsetFactor
;
2654 case GL_POLYGON_OFFSET_UNITS
:
2655 params
[0] = ctx
->Polygon
.OffsetUnits
;
2657 case GL_POLYGON_OFFSET_POINT
:
2658 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetPoint
);
2660 case GL_POLYGON_OFFSET_LINE
:
2661 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetLine
);
2663 case GL_POLYGON_OFFSET_FILL
:
2664 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetFill
);
2666 case GL_POLYGON_SMOOTH
:
2667 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.SmoothFlag
);
2669 case GL_POLYGON_SMOOTH_HINT
:
2670 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
2672 case GL_POLYGON_STIPPLE
:
2673 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.StippleFlag
);
2675 case GL_PROJECTION_MATRIX
:
2677 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
2678 params
[0] = matrix
[0];
2679 params
[1] = matrix
[1];
2680 params
[2] = matrix
[2];
2681 params
[3] = matrix
[3];
2682 params
[4] = matrix
[4];
2683 params
[5] = matrix
[5];
2684 params
[6] = matrix
[6];
2685 params
[7] = matrix
[7];
2686 params
[8] = matrix
[8];
2687 params
[9] = matrix
[9];
2688 params
[10] = matrix
[10];
2689 params
[11] = matrix
[11];
2690 params
[12] = matrix
[12];
2691 params
[13] = matrix
[13];
2692 params
[14] = matrix
[14];
2693 params
[15] = matrix
[15];
2696 case GL_PROJECTION_STACK_DEPTH
:
2697 params
[0] = (GLfloat
)(ctx
->ProjectionMatrixStack
.Depth
+ 1);
2699 case GL_READ_BUFFER
:
2700 params
[0] = ENUM_TO_FLOAT(ctx
->ReadBuffer
->ColorReadBuffer
);
2703 params
[0] = ctx
->Pixel
.RedBias
;
2706 if (ctx
->NewState
& _NEW_BUFFERS
)
2707 _mesa_update_state(ctx
);
2708 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.redBits
);
2711 params
[0] = ctx
->Pixel
.RedScale
;
2713 case GL_RENDER_MODE
:
2714 params
[0] = ENUM_TO_FLOAT(ctx
->RenderMode
);
2716 case GL_RESCALE_NORMAL
:
2717 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.RescaleNormals
);
2720 params
[0] = BOOLEAN_TO_FLOAT(GL_TRUE
);
2722 case GL_SCISSOR_BOX
:
2723 params
[0] = (GLfloat
)(ctx
->Scissor
.X
);
2724 params
[1] = (GLfloat
)(ctx
->Scissor
.Y
);
2725 params
[2] = (GLfloat
)(ctx
->Scissor
.Width
);
2726 params
[3] = (GLfloat
)(ctx
->Scissor
.Height
);
2728 case GL_SCISSOR_TEST
:
2729 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Scissor
.Enabled
);
2731 case GL_SELECTION_BUFFER_SIZE
:
2732 params
[0] = (GLfloat
)(ctx
->Select
.BufferSize
);
2734 case GL_SHADE_MODEL
:
2735 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
2737 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2738 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.SharedPalette
);
2740 case GL_STENCIL_BITS
:
2741 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.stencilBits
);
2743 case GL_STENCIL_CLEAR_VALUE
:
2744 params
[0] = (GLfloat
)(ctx
->Stencil
.Clear
);
2746 case GL_STENCIL_FAIL
:
2747 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
2749 case GL_STENCIL_FUNC
:
2750 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
2752 case GL_STENCIL_PASS_DEPTH_FAIL
:
2753 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
2755 case GL_STENCIL_PASS_DEPTH_PASS
:
2756 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
2758 case GL_STENCIL_REF
:
2759 params
[0] = (GLfloat
)(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
2761 case GL_STENCIL_TEST
:
2762 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Stencil
.Enabled
);
2764 case GL_STENCIL_VALUE_MASK
:
2765 params
[0] = (GLfloat
)(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
2767 case GL_STENCIL_WRITEMASK
:
2768 params
[0] = (GLfloat
)(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
2771 params
[0] = BOOLEAN_TO_FLOAT(ctx
->DrawBuffer
->Visual
.stereoMode
);
2773 case GL_SUBPIXEL_BITS
:
2774 params
[0] = (GLfloat
)(ctx
->Const
.SubPixelBits
);
2777 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D
));
2780 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D
));
2783 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D
));
2785 case GL_TEXTURE_1D_ARRAY_EXT
:
2786 CHECK_EXT1(MESA_texture_array
, "GetFloatv");
2787 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
2789 case GL_TEXTURE_2D_ARRAY_EXT
:
2790 CHECK_EXT1(MESA_texture_array
, "GetFloatv");
2791 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
2793 case GL_TEXTURE_BINDING_1D
:
2794 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
2796 case GL_TEXTURE_BINDING_2D
:
2797 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
2799 case GL_TEXTURE_BINDING_3D
:
2800 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
2802 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
2803 CHECK_EXT1(MESA_texture_array
, "GetFloatv");
2804 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
2806 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
2807 CHECK_EXT1(MESA_texture_array
, "GetFloatv");
2808 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
2810 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
2811 CHECK_EXT1(MESA_texture_array
, "GetFloatv");
2812 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayTextureLayers
);
2814 case GL_TEXTURE_GEN_S
:
2815 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
2817 case GL_TEXTURE_GEN_T
:
2818 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
2820 case GL_TEXTURE_GEN_R
:
2821 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
2823 case GL_TEXTURE_GEN_Q
:
2824 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
2826 case GL_TEXTURE_MATRIX
:
2828 const GLfloat
*matrix
;
2829 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2830 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2831 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
2835 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
2836 params
[0] = matrix
[0];
2837 params
[1] = matrix
[1];
2838 params
[2] = matrix
[2];
2839 params
[3] = matrix
[3];
2840 params
[4] = matrix
[4];
2841 params
[5] = matrix
[5];
2842 params
[6] = matrix
[6];
2843 params
[7] = matrix
[7];
2844 params
[8] = matrix
[8];
2845 params
[9] = matrix
[9];
2846 params
[10] = matrix
[10];
2847 params
[11] = matrix
[11];
2848 params
[12] = matrix
[12];
2849 params
[13] = matrix
[13];
2850 params
[14] = matrix
[14];
2851 params
[15] = matrix
[15];
2854 case GL_TEXTURE_STACK_DEPTH
:
2856 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2857 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2858 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2859 "glGet(texture stack depth, unit %u)", unit
);
2862 params
[0] = (GLfloat
)(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
2865 case GL_UNPACK_ALIGNMENT
:
2866 params
[0] = (GLfloat
)(ctx
->Unpack
.Alignment
);
2868 case GL_UNPACK_LSB_FIRST
:
2869 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.LsbFirst
);
2871 case GL_UNPACK_ROW_LENGTH
:
2872 params
[0] = (GLfloat
)(ctx
->Unpack
.RowLength
);
2874 case GL_UNPACK_SKIP_PIXELS
:
2875 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipPixels
);
2877 case GL_UNPACK_SKIP_ROWS
:
2878 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipRows
);
2880 case GL_UNPACK_SWAP_BYTES
:
2881 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.SwapBytes
);
2883 case GL_UNPACK_SKIP_IMAGES_EXT
:
2884 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipImages
);
2886 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2887 params
[0] = (GLfloat
)(ctx
->Unpack
.ImageHeight
);
2889 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
2890 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.ClientStorage
);
2893 params
[0] = (GLfloat
)(ctx
->Viewport
.X
);
2894 params
[1] = (GLfloat
)(ctx
->Viewport
.Y
);
2895 params
[2] = (GLfloat
)(ctx
->Viewport
.Width
);
2896 params
[3] = (GLfloat
)(ctx
->Viewport
.Height
);
2899 params
[0] = ctx
->Pixel
.ZoomX
;
2902 params
[0] = ctx
->Pixel
.ZoomY
;
2904 case GL_VERTEX_ARRAY
:
2905 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
2907 case GL_VERTEX_ARRAY_SIZE
:
2908 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.Size
);
2910 case GL_VERTEX_ARRAY_TYPE
:
2911 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Vertex
.Type
);
2913 case GL_VERTEX_ARRAY_STRIDE
:
2914 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
2916 case GL_VERTEX_ARRAY_COUNT_EXT
:
2917 params
[0] = (GLfloat
)(0);
2919 case GL_NORMAL_ARRAY
:
2920 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
2922 case GL_NORMAL_ARRAY_TYPE
:
2923 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Normal
.Type
);
2925 case GL_NORMAL_ARRAY_STRIDE
:
2926 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Normal
.Stride
);
2928 case GL_NORMAL_ARRAY_COUNT_EXT
:
2929 params
[0] = (GLfloat
)(0);
2931 case GL_COLOR_ARRAY
:
2932 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Color
.Enabled
);
2934 case GL_COLOR_ARRAY_SIZE
:
2935 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.Size
);
2937 case GL_COLOR_ARRAY_TYPE
:
2938 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Color
.Type
);
2940 case GL_COLOR_ARRAY_STRIDE
:
2941 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.Stride
);
2943 case GL_COLOR_ARRAY_COUNT_EXT
:
2944 params
[0] = (GLfloat
)(0);
2946 case GL_INDEX_ARRAY
:
2947 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Index
.Enabled
);
2949 case GL_INDEX_ARRAY_TYPE
:
2950 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Index
.Type
);
2952 case GL_INDEX_ARRAY_STRIDE
:
2953 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Index
.Stride
);
2955 case GL_INDEX_ARRAY_COUNT_EXT
:
2956 params
[0] = (GLfloat
)(0);
2958 case GL_TEXTURE_COORD_ARRAY
:
2959 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
2961 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2962 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
2964 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2965 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
2967 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2968 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
2970 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2971 params
[0] = (GLfloat
)(0);
2973 case GL_EDGE_FLAG_ARRAY
:
2974 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
2976 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2977 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
2979 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2980 params
[0] = (GLfloat
)(0);
2982 case GL_MAX_TEXTURE_UNITS_ARB
:
2983 CHECK_EXT1(ARB_multitexture
, "GetFloatv");
2984 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureUnits
);
2986 case GL_ACTIVE_TEXTURE_ARB
:
2987 CHECK_EXT1(ARB_multitexture
, "GetFloatv");
2988 params
[0] = (GLfloat
)(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2990 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2991 CHECK_EXT1(ARB_multitexture
, "GetFloatv");
2992 params
[0] = (GLfloat
)(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2994 case GL_TEXTURE_CUBE_MAP_ARB
:
2995 CHECK_EXT1(ARB_texture_cube_map
, "GetFloatv");
2996 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
2998 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
2999 CHECK_EXT1(ARB_texture_cube_map
, "GetFloatv");
3000 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
3002 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3003 CHECK_EXT1(ARB_texture_cube_map
, "GetFloatv");
3004 params
[0] = (GLfloat
)((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
3006 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3007 params
[0] = (GLfloat
)(ctx
->Hint
.TextureCompression
);
3009 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3010 params
[0] = (GLfloat
)(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
3012 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3015 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
3017 for (i
= 0; i
< n
; i
++)
3018 params
[i
] = ENUM_TO_FLOAT(formats
[i
]);
3021 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3022 CHECK_EXT1(EXT_compiled_vertex_array
, "GetFloatv");
3023 params
[0] = (GLfloat
)(ctx
->Array
.LockFirst
);
3025 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3026 CHECK_EXT1(EXT_compiled_vertex_array
, "GetFloatv");
3027 params
[0] = (GLfloat
)(ctx
->Array
.LockCount
);
3029 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3031 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
3032 params
[0] = matrix
[0];
3033 params
[1] = matrix
[4];
3034 params
[2] = matrix
[8];
3035 params
[3] = matrix
[12];
3036 params
[4] = matrix
[1];
3037 params
[5] = matrix
[5];
3038 params
[6] = matrix
[9];
3039 params
[7] = matrix
[13];
3040 params
[8] = matrix
[2];
3041 params
[9] = matrix
[6];
3042 params
[10] = matrix
[10];
3043 params
[11] = matrix
[14];
3044 params
[12] = matrix
[3];
3045 params
[13] = matrix
[7];
3046 params
[14] = matrix
[11];
3047 params
[15] = matrix
[15];
3050 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3052 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
3053 params
[0] = matrix
[0];
3054 params
[1] = matrix
[4];
3055 params
[2] = matrix
[8];
3056 params
[3] = matrix
[12];
3057 params
[4] = matrix
[1];
3058 params
[5] = matrix
[5];
3059 params
[6] = matrix
[9];
3060 params
[7] = matrix
[13];
3061 params
[8] = matrix
[2];
3062 params
[9] = matrix
[6];
3063 params
[10] = matrix
[10];
3064 params
[11] = matrix
[14];
3065 params
[12] = matrix
[3];
3066 params
[13] = matrix
[7];
3067 params
[14] = matrix
[11];
3068 params
[15] = matrix
[15];
3071 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3073 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
3074 params
[0] = matrix
[0];
3075 params
[1] = matrix
[4];
3076 params
[2] = matrix
[8];
3077 params
[3] = matrix
[12];
3078 params
[4] = matrix
[1];
3079 params
[5] = matrix
[5];
3080 params
[6] = matrix
[9];
3081 params
[7] = matrix
[13];
3082 params
[8] = matrix
[2];
3083 params
[9] = matrix
[6];
3084 params
[10] = matrix
[10];
3085 params
[11] = matrix
[14];
3086 params
[12] = matrix
[3];
3087 params
[13] = matrix
[7];
3088 params
[14] = matrix
[11];
3089 params
[15] = matrix
[15];
3092 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3094 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
3095 params
[0] = matrix
[0];
3096 params
[1] = matrix
[4];
3097 params
[2] = matrix
[8];
3098 params
[3] = matrix
[12];
3099 params
[4] = matrix
[1];
3100 params
[5] = matrix
[5];
3101 params
[6] = matrix
[9];
3102 params
[7] = matrix
[13];
3103 params
[8] = matrix
[2];
3104 params
[9] = matrix
[6];
3105 params
[10] = matrix
[10];
3106 params
[11] = matrix
[14];
3107 params
[12] = matrix
[3];
3108 params
[13] = matrix
[7];
3109 params
[14] = matrix
[11];
3110 params
[15] = matrix
[15];
3113 case GL_COLOR_MATRIX_SGI
:
3115 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
3116 params
[0] = matrix
[0];
3117 params
[1] = matrix
[1];
3118 params
[2] = matrix
[2];
3119 params
[3] = matrix
[3];
3120 params
[4] = matrix
[4];
3121 params
[5] = matrix
[5];
3122 params
[6] = matrix
[6];
3123 params
[7] = matrix
[7];
3124 params
[8] = matrix
[8];
3125 params
[9] = matrix
[9];
3126 params
[10] = matrix
[10];
3127 params
[11] = matrix
[11];
3128 params
[12] = matrix
[12];
3129 params
[13] = matrix
[13];
3130 params
[14] = matrix
[14];
3131 params
[15] = matrix
[15];
3134 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3135 params
[0] = (GLfloat
)(ctx
->ColorMatrixStack
.Depth
+ 1);
3137 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3138 params
[0] = (GLfloat
)(MAX_COLOR_STACK_DEPTH
);
3140 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3141 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[0];
3143 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3144 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[1];
3146 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3147 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[2];
3149 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3150 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[3];
3152 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3153 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[0];
3155 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3156 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[1];
3158 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3159 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[2];
3161 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3162 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[3];
3164 case GL_CONVOLUTION_1D_EXT
:
3165 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3166 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Convolution1DEnabled
);
3168 case GL_CONVOLUTION_2D_EXT
:
3169 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3170 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Convolution2DEnabled
);
3172 case GL_SEPARABLE_2D_EXT
:
3173 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3174 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Separable2DEnabled
);
3176 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3177 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3178 params
[0] = ctx
->Pixel
.PostConvolutionScale
[0];
3180 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3181 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3182 params
[0] = ctx
->Pixel
.PostConvolutionScale
[1];
3184 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3185 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3186 params
[0] = ctx
->Pixel
.PostConvolutionScale
[2];
3188 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3189 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3190 params
[0] = ctx
->Pixel
.PostConvolutionScale
[3];
3192 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3193 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3194 params
[0] = ctx
->Pixel
.PostConvolutionBias
[0];
3196 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3197 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3198 params
[0] = ctx
->Pixel
.PostConvolutionBias
[1];
3200 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3201 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3202 params
[0] = ctx
->Pixel
.PostConvolutionBias
[2];
3204 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3205 CHECK_EXT1(EXT_convolution
, "GetFloatv");
3206 params
[0] = ctx
->Pixel
.PostConvolutionBias
[3];
3209 CHECK_EXT1(EXT_histogram
, "GetFloatv");
3210 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.HistogramEnabled
);
3213 CHECK_EXT1(EXT_histogram
, "GetFloatv");
3214 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MinMaxEnabled
);
3216 case GL_COLOR_TABLE_SGI
:
3217 CHECK_EXT1(SGI_color_table
, "GetFloatv");
3218 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
3220 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3221 CHECK_EXT1(SGI_color_table
, "GetFloatv");
3222 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
3224 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3225 CHECK_EXT1(SGI_color_table
, "GetFloatv");
3226 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
3228 case GL_TEXTURE_COLOR_TABLE_SGI
:
3229 CHECK_EXT1(SGI_texture_color_table
, "GetFloatv");
3230 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
3232 case GL_COLOR_SUM_EXT
:
3233 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
, "GetFloatv");
3234 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Fog
.ColorSumEnabled
);
3236 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3237 CHECK_EXT1(EXT_secondary_color
, "GetFloatv");
3238 FLUSH_CURRENT(ctx
, 0);
3239 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
3240 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
3241 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
3242 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3];
3244 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3245 CHECK_EXT1(EXT_secondary_color
, "GetFloatv");
3246 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
3248 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3249 CHECK_EXT1(EXT_secondary_color
, "GetFloatv");
3250 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
3252 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3253 CHECK_EXT1(EXT_secondary_color
, "GetFloatv");
3254 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
3256 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3257 CHECK_EXT1(EXT_secondary_color
, "GetFloatv");
3258 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
3260 case GL_CURRENT_FOG_COORDINATE_EXT
:
3261 CHECK_EXT1(EXT_fog_coord
, "GetFloatv");
3262 FLUSH_CURRENT(ctx
, 0);
3263 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
3265 case GL_FOG_COORDINATE_ARRAY_EXT
:
3266 CHECK_EXT1(EXT_fog_coord
, "GetFloatv");
3267 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
3269 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3270 CHECK_EXT1(EXT_fog_coord
, "GetFloatv");
3271 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
3273 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3274 CHECK_EXT1(EXT_fog_coord
, "GetFloatv");
3275 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
3277 case GL_FOG_COORDINATE_SOURCE_EXT
:
3278 CHECK_EXT1(EXT_fog_coord
, "GetFloatv");
3279 params
[0] = ENUM_TO_FLOAT(ctx
->Fog
.FogCoordinateSource
);
3281 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3282 CHECK_EXT1(EXT_texture_lod_bias
, "GetFloatv");
3283 params
[0] = ctx
->Const
.MaxTextureLodBias
;
3285 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3286 CHECK_EXT1(EXT_texture_filter_anisotropic
, "GetFloatv");
3287 params
[0] = ctx
->Const
.MaxTextureMaxAnisotropy
;
3289 case GL_MULTISAMPLE_ARB
:
3290 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.Enabled
);
3292 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
3293 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleAlphaToCoverage
);
3295 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
3296 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleAlphaToOne
);
3298 case GL_SAMPLE_COVERAGE_ARB
:
3299 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleCoverage
);
3301 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
3302 params
[0] = ctx
->Multisample
.SampleCoverageValue
;
3304 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
3305 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleCoverageInvert
);
3307 case GL_SAMPLE_BUFFERS_ARB
:
3308 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
3310 case GL_SAMPLES_ARB
:
3311 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.samples
);
3313 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
3314 CHECK_EXT1(IBM_rasterpos_clip
, "GetFloatv");
3315 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.RasterPositionUnclipped
);
3317 case GL_POINT_SPRITE_NV
:
3318 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
, "GetFloatv");
3319 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Point
.PointSprite
);
3321 case GL_POINT_SPRITE_R_MODE_NV
:
3322 CHECK_EXT1(NV_point_sprite
, "GetFloatv");
3323 params
[0] = ENUM_TO_FLOAT(ctx
->Point
.SpriteRMode
);
3325 case GL_POINT_SPRITE_COORD_ORIGIN
:
3326 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
, "GetFloatv");
3327 params
[0] = ENUM_TO_FLOAT(ctx
->Point
.SpriteOrigin
);
3329 case GL_GENERATE_MIPMAP_HINT_SGIS
:
3330 CHECK_EXT1(SGIS_generate_mipmap
, "GetFloatv");
3331 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.GenerateMipmap
);
3333 case GL_VERTEX_PROGRAM_BINDING_NV
:
3334 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3335 params
[0] = (GLfloat
)((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
3337 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
3338 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3339 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
3341 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
3342 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3343 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
3345 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
3346 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3347 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
3349 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
3350 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3351 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
3353 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
3354 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3355 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
3357 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
3358 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3359 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
3361 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
3362 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3363 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
3365 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
3366 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3367 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
3369 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
3370 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3371 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
3373 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
3374 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3375 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
3377 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
3378 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3379 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
3381 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
3382 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3383 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
3385 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
3386 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3387 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
3389 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
3390 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3391 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
3393 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
3394 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3395 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
3397 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
3398 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3399 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
3401 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
3402 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3403 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[0]);
3405 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
3406 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3407 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[1]);
3409 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
3410 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3411 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[2]);
3413 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
3414 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3415 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[3]);
3417 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
3418 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3419 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[4]);
3421 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
3422 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3423 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[5]);
3425 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
3426 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3427 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[6]);
3429 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
3430 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3431 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[7]);
3433 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
3434 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3435 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[8]);
3437 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
3438 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3439 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[9]);
3441 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
3442 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3443 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[10]);
3445 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
3446 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3447 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[11]);
3449 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
3450 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3451 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[12]);
3453 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
3454 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3455 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[13]);
3457 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
3458 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3459 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[14]);
3461 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
3462 CHECK_EXT1(NV_vertex_program
, "GetFloatv");
3463 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[15]);
3465 case GL_FRAGMENT_PROGRAM_NV
:
3466 CHECK_EXT1(NV_fragment_program
, "GetFloatv");
3467 params
[0] = BOOLEAN_TO_FLOAT(ctx
->FragmentProgram
.Enabled
);
3469 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
3470 CHECK_EXT1(NV_fragment_program
, "GetFloatv");
3471 params
[0] = (GLfloat
)(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
3473 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
3474 CHECK_EXT1(NV_fragment_program
, "GetFloatv");
3475 params
[0] = (GLfloat
)(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
3477 case GL_TEXTURE_RECTANGLE_NV
:
3478 CHECK_EXT1(NV_texture_rectangle
, "GetFloatv");
3479 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
3481 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
3482 CHECK_EXT1(NV_texture_rectangle
, "GetFloatv");
3483 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
3485 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
3486 CHECK_EXT1(NV_texture_rectangle
, "GetFloatv");
3487 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureRectSize
);
3489 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
3490 CHECK_EXT1(EXT_stencil_two_side
, "GetFloatv");
3491 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Stencil
.TestTwoSide
);
3493 case GL_ACTIVE_STENCIL_FACE_EXT
:
3494 CHECK_EXT1(EXT_stencil_two_side
, "GetFloatv");
3495 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
3497 case GL_MAX_SHININESS_NV
:
3498 CHECK_EXT1(NV_light_max_exponent
, "GetFloatv");
3499 params
[0] = ctx
->Const
.MaxShininess
;
3501 case GL_MAX_SPOT_EXPONENT_NV
:
3502 CHECK_EXT1(NV_light_max_exponent
, "GetFloatv");
3503 params
[0] = ctx
->Const
.MaxSpotExponent
;
3505 case GL_ARRAY_BUFFER_BINDING_ARB
:
3506 params
[0] = (GLfloat
)(ctx
->Array
.ArrayBufferObj
->Name
);
3508 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
3509 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
3511 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
3512 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
3514 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3515 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
3517 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
3518 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
3520 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
3521 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
3523 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
3524 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
3526 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3527 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
3529 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
3530 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
3532 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
3533 params
[0] = (GLfloat
)(ctx
->Array
.ElementArrayBufferObj
->Name
);
3535 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
3536 CHECK_EXT1(EXT_pixel_buffer_object
, "GetFloatv");
3537 params
[0] = (GLfloat
)(ctx
->Pack
.BufferObj
->Name
);
3539 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
3540 CHECK_EXT1(EXT_pixel_buffer_object
, "GetFloatv");
3541 params
[0] = (GLfloat
)(ctx
->Unpack
.BufferObj
->Name
);
3543 case GL_VERTEX_PROGRAM_ARB
:
3544 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetFloatv");
3545 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.Enabled
);
3547 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
3548 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetFloatv");
3549 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.PointSizeEnabled
);
3551 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
3552 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetFloatv");
3553 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.TwoSideEnabled
);
3555 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
3556 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetFloatv");
3557 params
[0] = (GLfloat
)(ctx
->Const
.MaxProgramMatrixStackDepth
);
3559 case GL_MAX_PROGRAM_MATRICES_ARB
:
3560 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetFloatv");
3561 params
[0] = (GLfloat
)(ctx
->Const
.MaxProgramMatrices
);
3563 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
3564 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetFloatv");
3565 params
[0] = BOOLEAN_TO_FLOAT(ctx
->CurrentStack
->Depth
+ 1);
3567 case GL_CURRENT_MATRIX_ARB
:
3568 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
, "GetFloatv");
3570 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
3571 params
[0] = matrix
[0];
3572 params
[1] = matrix
[1];
3573 params
[2] = matrix
[2];
3574 params
[3] = matrix
[3];
3575 params
[4] = matrix
[4];
3576 params
[5] = matrix
[5];
3577 params
[6] = matrix
[6];
3578 params
[7] = matrix
[7];
3579 params
[8] = matrix
[8];
3580 params
[9] = matrix
[9];
3581 params
[10] = matrix
[10];
3582 params
[11] = matrix
[11];
3583 params
[12] = matrix
[12];
3584 params
[13] = matrix
[13];
3585 params
[14] = matrix
[14];
3586 params
[15] = matrix
[15];
3589 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
3590 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
, "GetFloatv");
3592 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
3593 params
[0] = matrix
[0];
3594 params
[1] = matrix
[4];
3595 params
[2] = matrix
[8];
3596 params
[3] = matrix
[12];
3597 params
[4] = matrix
[1];
3598 params
[5] = matrix
[5];
3599 params
[6] = matrix
[9];
3600 params
[7] = matrix
[13];
3601 params
[8] = matrix
[2];
3602 params
[9] = matrix
[6];
3603 params
[10] = matrix
[10];
3604 params
[11] = matrix
[14];
3605 params
[12] = matrix
[3];
3606 params
[13] = matrix
[7];
3607 params
[14] = matrix
[11];
3608 params
[15] = matrix
[15];
3611 case GL_MAX_VERTEX_ATTRIBS_ARB
:
3612 CHECK_EXT1(ARB_vertex_program
, "GetFloatv");
3613 params
[0] = (GLfloat
)(ctx
->Const
.VertexProgram
.MaxAttribs
);
3615 case GL_PROGRAM_ERROR_POSITION_ARB
:
3616 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
, "GetFloatv");
3617 params
[0] = (GLfloat
)(ctx
->Program
.ErrorPos
);
3619 case GL_FRAGMENT_PROGRAM_ARB
:
3620 CHECK_EXT1(ARB_fragment_program
, "GetFloatv");
3621 params
[0] = BOOLEAN_TO_FLOAT(ctx
->FragmentProgram
.Enabled
);
3623 case GL_MAX_TEXTURE_COORDS_ARB
:
3624 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
, "GetFloatv");
3625 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureCoordUnits
);
3627 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
3628 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
, "GetFloatv");
3629 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureImageUnits
);
3631 case GL_DEPTH_BOUNDS_TEST_EXT
:
3632 CHECK_EXT1(EXT_depth_bounds_test
, "GetFloatv");
3633 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.BoundsTest
);
3635 case GL_DEPTH_BOUNDS_EXT
:
3636 CHECK_EXT1(EXT_depth_bounds_test
, "GetFloatv");
3637 params
[0] = ctx
->Depth
.BoundsMin
;
3638 params
[1] = ctx
->Depth
.BoundsMax
;
3640 case GL_DEPTH_CLAMP
:
3641 CHECK_EXT1(ARB_depth_clamp
, "GetFloatv");
3642 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.DepthClamp
);
3644 case GL_MAX_DRAW_BUFFERS_ARB
:
3645 params
[0] = (GLfloat
)(ctx
->Const
.MaxDrawBuffers
);
3647 case GL_DRAW_BUFFER0_ARB
:
3648 params
[0] = ENUM_TO_FLOAT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
3650 case GL_DRAW_BUFFER1_ARB
:
3653 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3654 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3657 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
3658 params
[0] = ENUM_TO_FLOAT(buffer
);
3661 case GL_DRAW_BUFFER2_ARB
:
3664 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3665 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3668 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
3669 params
[0] = ENUM_TO_FLOAT(buffer
);
3672 case GL_DRAW_BUFFER3_ARB
:
3675 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3676 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3679 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
3680 params
[0] = ENUM_TO_FLOAT(buffer
);
3683 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
3684 CHECK_EXT1(OES_read_format
, "GetFloatv");
3685 params
[0] = (GLfloat
)(_mesa_get_color_read_type(ctx
));
3687 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
3688 CHECK_EXT1(OES_read_format
, "GetFloatv");
3689 params
[0] = (GLfloat
)(_mesa_get_color_read_format(ctx
));
3691 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
3692 CHECK_EXT1(ATI_fragment_shader
, "GetFloatv");
3693 params
[0] = (GLfloat
)(6);
3695 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
3696 CHECK_EXT1(ATI_fragment_shader
, "GetFloatv");
3697 params
[0] = (GLfloat
)(8);
3699 case GL_NUM_PASSES_ATI
:
3700 CHECK_EXT1(ATI_fragment_shader
, "GetFloatv");
3701 params
[0] = (GLfloat
)(2);
3703 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
3704 CHECK_EXT1(ATI_fragment_shader
, "GetFloatv");
3705 params
[0] = (GLfloat
)(8);
3707 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
3708 CHECK_EXT1(ATI_fragment_shader
, "GetFloatv");
3709 params
[0] = (GLfloat
)(16);
3711 case GL_COLOR_ALPHA_PAIRING_ATI
:
3712 CHECK_EXT1(ATI_fragment_shader
, "GetFloatv");
3713 params
[0] = BOOLEAN_TO_FLOAT(GL_TRUE
);
3715 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
3716 CHECK_EXT1(ATI_fragment_shader
, "GetFloatv");
3717 params
[0] = (GLfloat
)(3);
3719 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
3720 CHECK_EXT1(ATI_fragment_shader
, "GetFloatv");
3721 params
[0] = (GLfloat
)(3);
3723 case GL_STENCIL_BACK_FUNC
:
3724 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.Function
[1]);
3726 case GL_STENCIL_BACK_VALUE_MASK
:
3727 params
[0] = (GLfloat
)(ctx
->Stencil
.ValueMask
[1]);
3729 case GL_STENCIL_BACK_WRITEMASK
:
3730 params
[0] = (GLfloat
)(ctx
->Stencil
.WriteMask
[1]);
3732 case GL_STENCIL_BACK_REF
:
3733 params
[0] = (GLfloat
)(ctx
->Stencil
.Ref
[1]);
3735 case GL_STENCIL_BACK_FAIL
:
3736 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[1]);
3738 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
3739 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[1]);
3741 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
3742 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[1]);
3744 case GL_FRAMEBUFFER_BINDING_EXT
:
3745 CHECK_EXT1(EXT_framebuffer_object
, "GetFloatv");
3746 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Name
);
3748 case GL_RENDERBUFFER_BINDING_EXT
:
3749 CHECK_EXT1(EXT_framebuffer_object
, "GetFloatv");
3750 params
[0] = (GLfloat
)(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
3752 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
3753 CHECK_EXT1(EXT_framebuffer_object
, "GetFloatv");
3754 params
[0] = (GLfloat
)(ctx
->Const
.MaxColorAttachments
);
3756 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
3757 CHECK_EXT1(EXT_framebuffer_object
, "GetFloatv");
3758 params
[0] = (GLfloat
)(ctx
->Const
.MaxRenderbufferSize
);
3760 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
3761 CHECK_EXT1(EXT_framebuffer_blit
, "GetFloatv");
3762 params
[0] = (GLfloat
)(ctx
->ReadBuffer
->Name
);
3764 case GL_PROVOKING_VERTEX_EXT
:
3765 CHECK_EXT1(EXT_provoking_vertex
, "GetFloatv");
3766 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.ProvokingVertex
);
3768 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
3769 CHECK_EXT1(EXT_provoking_vertex
, "GetFloatv");
3770 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
3772 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
3773 CHECK_EXT1(ARB_fragment_shader
, "GetFloatv");
3774 params
[0] = (GLfloat
)(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
3776 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
3777 CHECK_EXT1(ARB_fragment_shader
, "GetFloatv");
3778 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.FragmentShaderDerivative
);
3780 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
3781 CHECK_EXT1(ARB_vertex_shader
, "GetFloatv");
3782 params
[0] = (GLfloat
)(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
3784 case GL_MAX_VARYING_FLOATS_ARB
:
3785 CHECK_EXT1(ARB_vertex_shader
, "GetFloatv");
3786 params
[0] = (GLfloat
)(ctx
->Const
.MaxVarying
* 4);
3788 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
3789 CHECK_EXT1(ARB_vertex_shader
, "GetFloatv");
3790 params
[0] = (GLfloat
)(ctx
->Const
.MaxVertexTextureImageUnits
);
3792 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
3793 CHECK_EXT1(ARB_vertex_shader
, "GetFloatv");
3794 params
[0] = (GLfloat
)(ctx
->Const
.MaxCombinedTextureImageUnits
);
3796 case GL_CURRENT_PROGRAM
:
3797 CHECK_EXT1(ARB_shader_objects
, "GetFloatv");
3798 params
[0] = (GLfloat
)(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
3800 case GL_MAX_SAMPLES
:
3801 CHECK_EXT1(ARB_framebuffer_object
, "GetFloatv");
3802 params
[0] = (GLfloat
)(ctx
->Const
.MaxSamples
);
3804 case GL_VERTEX_ARRAY_BINDING_APPLE
:
3805 CHECK_EXT1(APPLE_vertex_array_object
, "GetFloatv");
3806 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Name
);
3808 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
3809 CHECK_EXT1(ARB_seamless_cube_map
, "GetFloatv");
3810 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.CubeMapSeamless
);
3812 case GL_MAX_SERVER_WAIT_TIMEOUT
:
3813 CHECK_EXT1(ARB_sync
, "GetFloatv");
3814 params
[0] = (GLfloat
)(ctx
->Const
.MaxServerWaitTimeout
);
3816 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
3817 CHECK_EXT1(EXT_transform_feedback
, "GetFloatv");
3818 params
[0] = (GLfloat
)(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
3820 case GL_RASTERIZER_DISCARD
:
3821 CHECK_EXT1(EXT_transform_feedback
, "GetFloatv");
3822 params
[0] = BOOLEAN_TO_FLOAT(ctx
->TransformFeedback
.RasterDiscard
);
3824 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
3825 CHECK_EXT1(EXT_transform_feedback
, "GetFloatv");
3826 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
3828 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
3829 CHECK_EXT1(EXT_transform_feedback
, "GetFloatv");
3830 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
3832 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
3833 CHECK_EXT1(EXT_transform_feedback
, "GetFloatv");
3834 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
3836 case GL_NUM_EXTENSIONS
:
3837 params
[0] = (GLfloat
)(_mesa_get_extension_count(ctx
));
3839 case GL_MAJOR_VERSION
:
3840 params
[0] = (GLfloat
)(ctx
->VersionMajor
);
3842 case GL_MINOR_VERSION
:
3843 params
[0] = (GLfloat
)(ctx
->VersionMinor
);
3845 case GL_CONTEXT_FLAGS
:
3846 params
[0] = (GLfloat
)(ctx
->Const
.ContextFlags
);
3849 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv(pname=0x%x)", pname
);
3854 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3856 GET_CURRENT_CONTEXT(ctx
);
3857 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3862 if (ctx
->Driver
.GetIntegerv
&&
3863 ctx
->Driver
.GetIntegerv(ctx
, pname
, params
))
3867 case GL_ACCUM_RED_BITS
:
3868 params
[0] = ctx
->DrawBuffer
->Visual
.accumRedBits
;
3870 case GL_ACCUM_GREEN_BITS
:
3871 params
[0] = ctx
->DrawBuffer
->Visual
.accumGreenBits
;
3873 case GL_ACCUM_BLUE_BITS
:
3874 params
[0] = ctx
->DrawBuffer
->Visual
.accumBlueBits
;
3876 case GL_ACCUM_ALPHA_BITS
:
3877 params
[0] = ctx
->DrawBuffer
->Visual
.accumAlphaBits
;
3879 case GL_ACCUM_CLEAR_VALUE
:
3880 params
[0] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[0]);
3881 params
[1] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[1]);
3882 params
[2] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[2]);
3883 params
[3] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[3]);
3886 params
[0] = IROUND(ctx
->Pixel
.AlphaBias
);
3889 if (ctx
->NewState
& _NEW_BUFFERS
)
3890 _mesa_update_state(ctx
);
3891 params
[0] = ctx
->DrawBuffer
->Visual
.alphaBits
;
3893 case GL_ALPHA_SCALE
:
3894 params
[0] = IROUND(ctx
->Pixel
.AlphaScale
);
3897 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.AlphaEnabled
);
3899 case GL_ALPHA_TEST_FUNC
:
3900 params
[0] = ENUM_TO_INT(ctx
->Color
.AlphaFunc
);
3902 case GL_ALPHA_TEST_REF
:
3903 params
[0] = FLOAT_TO_INT(ctx
->Color
.AlphaRef
);
3905 case GL_ATTRIB_STACK_DEPTH
:
3906 params
[0] = ctx
->AttribStackDepth
;
3908 case GL_AUTO_NORMAL
:
3909 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.AutoNormal
);
3911 case GL_AUX_BUFFERS
:
3912 params
[0] = ctx
->DrawBuffer
->Visual
.numAuxBuffers
;
3915 params
[0] = BOOLEAN_TO_INT((ctx
->Color
.BlendEnabled
& 1));
3918 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstRGB
);
3921 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcRGB
);
3923 case GL_BLEND_SRC_RGB_EXT
:
3924 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcRGB
);
3926 case GL_BLEND_DST_RGB_EXT
:
3927 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstRGB
);
3929 case GL_BLEND_SRC_ALPHA_EXT
:
3930 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcA
);
3932 case GL_BLEND_DST_ALPHA_EXT
:
3933 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstA
);
3935 case GL_BLEND_EQUATION
:
3936 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendEquationRGB
);
3938 case GL_BLEND_EQUATION_ALPHA_EXT
:
3939 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendEquationA
);
3941 case GL_BLEND_COLOR_EXT
:
3942 params
[0] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[0]);
3943 params
[1] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[1]);
3944 params
[2] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[2]);
3945 params
[3] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[3]);
3948 params
[0] = IROUND(ctx
->Pixel
.BlueBias
);
3951 if (ctx
->NewState
& _NEW_BUFFERS
)
3952 _mesa_update_state(ctx
);
3953 params
[0] = ctx
->DrawBuffer
->Visual
.blueBits
;
3956 params
[0] = IROUND(ctx
->Pixel
.BlueScale
);
3958 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3959 params
[0] = ctx
->ClientAttribStackDepth
;
3961 case GL_CLIP_PLANE0
:
3962 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
3964 case GL_CLIP_PLANE1
:
3965 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
3967 case GL_CLIP_PLANE2
:
3968 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
3970 case GL_CLIP_PLANE3
:
3971 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
3973 case GL_CLIP_PLANE4
:
3974 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
3976 case GL_CLIP_PLANE5
:
3977 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
3979 case GL_COLOR_CLEAR_VALUE
:
3980 params
[0] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[0]);
3981 params
[1] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[1]);
3982 params
[2] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[2]);
3983 params
[3] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[3]);
3985 case GL_COLOR_MATERIAL
:
3986 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.ColorMaterialEnabled
);
3988 case GL_COLOR_MATERIAL_FACE
:
3989 params
[0] = ENUM_TO_INT(ctx
->Light
.ColorMaterialFace
);
3991 case GL_COLOR_MATERIAL_PARAMETER
:
3992 params
[0] = ENUM_TO_INT(ctx
->Light
.ColorMaterialMode
);
3994 case GL_COLOR_WRITEMASK
:
3995 params
[0] = ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0;
3996 params
[1] = ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0;
3997 params
[2] = ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0;
3998 params
[3] = ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0;
4001 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.CullFlag
);
4003 case GL_CULL_FACE_MODE
:
4004 params
[0] = ENUM_TO_INT(ctx
->Polygon
.CullFaceMode
);
4006 case GL_CURRENT_COLOR
:
4007 FLUSH_CURRENT(ctx
, 0);
4008 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4009 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4010 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4011 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4013 case GL_CURRENT_INDEX
:
4014 FLUSH_CURRENT(ctx
, 0);
4015 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
4017 case GL_CURRENT_NORMAL
:
4018 FLUSH_CURRENT(ctx
, 0);
4019 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4020 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4021 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4023 case GL_CURRENT_RASTER_COLOR
:
4024 params
[0] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[0]);
4025 params
[1] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[1]);
4026 params
[2] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[2]);
4027 params
[3] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[3]);
4029 case GL_CURRENT_RASTER_DISTANCE
:
4030 params
[0] = IROUND(ctx
->Current
.RasterDistance
);
4032 case GL_CURRENT_RASTER_INDEX
:
4033 params
[0] = IROUND(1.0);
4035 case GL_CURRENT_RASTER_POSITION
:
4036 params
[0] = IROUND(ctx
->Current
.RasterPos
[0]);
4037 params
[1] = IROUND(ctx
->Current
.RasterPos
[1]);
4038 params
[2] = IROUND(ctx
->Current
.RasterPos
[2]);
4039 params
[3] = IROUND(ctx
->Current
.RasterPos
[3]);
4041 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
4042 params
[0] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[0]);
4043 params
[1] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[1]);
4044 params
[2] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[2]);
4045 params
[3] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[3]);
4047 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4049 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4050 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4051 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4052 "glGet(raster tex coords, unit %u)", unit
);
4055 params
[0] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][0]);
4056 params
[1] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][1]);
4057 params
[2] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][2]);
4058 params
[3] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][3]);
4061 case GL_CURRENT_RASTER_POSITION_VALID
:
4062 params
[0] = BOOLEAN_TO_INT(ctx
->Current
.RasterPosValid
);
4064 case GL_CURRENT_TEXTURE_COORDS
:
4066 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4067 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4068 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4069 "glGet(current tex coords, unit %u)", unit
);
4072 FLUSH_CURRENT(ctx
, 0);
4073 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
4074 params
[1] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
4075 params
[2] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
4076 params
[3] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
4080 params
[0] = IROUND(ctx
->Pixel
.DepthBias
);
4083 params
[0] = ctx
->DrawBuffer
->Visual
.depthBits
;
4085 case GL_DEPTH_CLEAR_VALUE
:
4086 params
[0] = FLOAT_TO_INT(((GLfloat
) ctx
->Depth
.Clear
));
4089 params
[0] = ENUM_TO_INT(ctx
->Depth
.Func
);
4091 case GL_DEPTH_RANGE
:
4092 params
[0] = FLOAT_TO_INT(ctx
->Viewport
.Near
);
4093 params
[1] = FLOAT_TO_INT(ctx
->Viewport
.Far
);
4095 case GL_DEPTH_SCALE
:
4096 params
[0] = IROUND(ctx
->Pixel
.DepthScale
);
4099 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.Test
);
4101 case GL_DEPTH_WRITEMASK
:
4102 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.Mask
);
4105 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.DitherFlag
);
4107 case GL_DOUBLEBUFFER
:
4108 params
[0] = BOOLEAN_TO_INT(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
4110 case GL_DRAW_BUFFER
:
4111 params
[0] = ENUM_TO_INT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
4114 FLUSH_CURRENT(ctx
, 0);
4115 params
[0] = BOOLEAN_TO_INT((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
4117 case GL_FEEDBACK_BUFFER_SIZE
:
4118 params
[0] = ctx
->Feedback
.BufferSize
;
4120 case GL_FEEDBACK_BUFFER_TYPE
:
4121 params
[0] = ENUM_TO_INT(ctx
->Feedback
.Type
);
4124 params
[0] = BOOLEAN_TO_INT(ctx
->Fog
.Enabled
);
4127 params
[0] = FLOAT_TO_INT(ctx
->Fog
.Color
[0]);
4128 params
[1] = FLOAT_TO_INT(ctx
->Fog
.Color
[1]);
4129 params
[2] = FLOAT_TO_INT(ctx
->Fog
.Color
[2]);
4130 params
[3] = FLOAT_TO_INT(ctx
->Fog
.Color
[3]);
4132 case GL_FOG_DENSITY
:
4133 params
[0] = IROUND(ctx
->Fog
.Density
);
4136 params
[0] = IROUND(ctx
->Fog
.End
);
4139 params
[0] = ENUM_TO_INT(ctx
->Hint
.Fog
);
4142 params
[0] = IROUND(ctx
->Fog
.Index
);
4145 params
[0] = ENUM_TO_INT(ctx
->Fog
.Mode
);
4148 params
[0] = IROUND(ctx
->Fog
.Start
);
4151 params
[0] = ENUM_TO_INT(ctx
->Polygon
.FrontFace
);
4154 params
[0] = IROUND(ctx
->Pixel
.GreenBias
);
4157 if (ctx
->NewState
& _NEW_BUFFERS
)
4158 _mesa_update_state(ctx
);
4159 params
[0] = ctx
->DrawBuffer
->Visual
.greenBits
;
4161 case GL_GREEN_SCALE
:
4162 params
[0] = IROUND(ctx
->Pixel
.GreenScale
);
4165 if (ctx
->NewState
& _NEW_BUFFERS
)
4166 _mesa_update_state(ctx
);
4167 params
[0] = ctx
->DrawBuffer
->Visual
.indexBits
;
4169 case GL_INDEX_CLEAR_VALUE
:
4170 params
[0] = ctx
->Color
.ClearIndex
;
4173 params
[0] = BOOLEAN_TO_INT(GL_FALSE
);
4175 case GL_INDEX_OFFSET
:
4176 params
[0] = ctx
->Pixel
.IndexOffset
;
4178 case GL_INDEX_SHIFT
:
4179 params
[0] = ctx
->Pixel
.IndexShift
;
4181 case GL_INDEX_WRITEMASK
:
4182 params
[0] = ctx
->Color
.IndexMask
;
4185 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[0].Enabled
);
4188 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[1].Enabled
);
4191 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[2].Enabled
);
4194 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[3].Enabled
);
4197 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[4].Enabled
);
4200 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[5].Enabled
);
4203 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[6].Enabled
);
4206 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[7].Enabled
);
4209 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Enabled
);
4211 case GL_LIGHT_MODEL_AMBIENT
:
4212 params
[0] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[0]);
4213 params
[1] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[1]);
4214 params
[2] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[2]);
4215 params
[3] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[3]);
4217 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4218 params
[0] = ENUM_TO_INT(ctx
->Light
.Model
.ColorControl
);
4220 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4221 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Model
.LocalViewer
);
4223 case GL_LIGHT_MODEL_TWO_SIDE
:
4224 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Model
.TwoSide
);
4226 case GL_LINE_SMOOTH
:
4227 params
[0] = BOOLEAN_TO_INT(ctx
->Line
.SmoothFlag
);
4229 case GL_LINE_SMOOTH_HINT
:
4230 params
[0] = ENUM_TO_INT(ctx
->Hint
.LineSmooth
);
4232 case GL_LINE_STIPPLE
:
4233 params
[0] = BOOLEAN_TO_INT(ctx
->Line
.StippleFlag
);
4235 case GL_LINE_STIPPLE_PATTERN
:
4236 params
[0] = ctx
->Line
.StipplePattern
;
4238 case GL_LINE_STIPPLE_REPEAT
:
4239 params
[0] = ctx
->Line
.StippleFactor
;
4242 params
[0] = IROUND(ctx
->Line
.Width
);
4244 case GL_LINE_WIDTH_GRANULARITY
:
4245 params
[0] = IROUND(ctx
->Const
.LineWidthGranularity
);
4247 case GL_LINE_WIDTH_RANGE
:
4248 params
[0] = IROUND(ctx
->Const
.MinLineWidthAA
);
4249 params
[1] = IROUND(ctx
->Const
.MaxLineWidthAA
);
4251 case GL_ALIASED_LINE_WIDTH_RANGE
:
4252 params
[0] = IROUND(ctx
->Const
.MinLineWidth
);
4253 params
[1] = IROUND(ctx
->Const
.MaxLineWidth
);
4256 params
[0] = ctx
->List
.ListBase
;
4259 params
[0] = (ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0);
4264 if (!ctx
->CompileFlag
)
4266 else if (ctx
->ExecuteFlag
)
4267 mode
= GL_COMPILE_AND_EXECUTE
;
4270 params
[0] = ENUM_TO_INT(mode
);
4273 case GL_INDEX_LOGIC_OP
:
4274 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.IndexLogicOpEnabled
);
4276 case GL_COLOR_LOGIC_OP
:
4277 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.ColorLogicOpEnabled
);
4279 case GL_LOGIC_OP_MODE
:
4280 params
[0] = ENUM_TO_INT(ctx
->Color
.LogicOp
);
4282 case GL_MAP1_COLOR_4
:
4283 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Color4
);
4285 case GL_MAP1_GRID_DOMAIN
:
4286 params
[0] = IROUND(ctx
->Eval
.MapGrid1u1
);
4287 params
[1] = IROUND(ctx
->Eval
.MapGrid1u2
);
4289 case GL_MAP1_GRID_SEGMENTS
:
4290 params
[0] = ctx
->Eval
.MapGrid1un
;
4293 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Index
);
4295 case GL_MAP1_NORMAL
:
4296 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Normal
);
4298 case GL_MAP1_TEXTURE_COORD_1
:
4299 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord1
);
4301 case GL_MAP1_TEXTURE_COORD_2
:
4302 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord2
);
4304 case GL_MAP1_TEXTURE_COORD_3
:
4305 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord3
);
4307 case GL_MAP1_TEXTURE_COORD_4
:
4308 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord4
);
4310 case GL_MAP1_VERTEX_3
:
4311 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Vertex3
);
4313 case GL_MAP1_VERTEX_4
:
4314 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Vertex4
);
4316 case GL_MAP2_COLOR_4
:
4317 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Color4
);
4319 case GL_MAP2_GRID_DOMAIN
:
4320 params
[0] = IROUND(ctx
->Eval
.MapGrid2u1
);
4321 params
[1] = IROUND(ctx
->Eval
.MapGrid2u2
);
4322 params
[2] = IROUND(ctx
->Eval
.MapGrid2v1
);
4323 params
[3] = IROUND(ctx
->Eval
.MapGrid2v2
);
4325 case GL_MAP2_GRID_SEGMENTS
:
4326 params
[0] = ctx
->Eval
.MapGrid2un
;
4327 params
[1] = ctx
->Eval
.MapGrid2vn
;
4330 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Index
);
4332 case GL_MAP2_NORMAL
:
4333 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Normal
);
4335 case GL_MAP2_TEXTURE_COORD_1
:
4336 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord1
);
4338 case GL_MAP2_TEXTURE_COORD_2
:
4339 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord2
);
4341 case GL_MAP2_TEXTURE_COORD_3
:
4342 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord3
);
4344 case GL_MAP2_TEXTURE_COORD_4
:
4345 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord4
);
4347 case GL_MAP2_VERTEX_3
:
4348 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Vertex3
);
4350 case GL_MAP2_VERTEX_4
:
4351 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Vertex4
);
4354 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MapColorFlag
);
4356 case GL_MAP_STENCIL
:
4357 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MapStencilFlag
);
4359 case GL_MATRIX_MODE
:
4360 params
[0] = ENUM_TO_INT(ctx
->Transform
.MatrixMode
);
4362 case GL_MAX_ATTRIB_STACK_DEPTH
:
4363 params
[0] = MAX_ATTRIB_STACK_DEPTH
;
4365 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4366 params
[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4368 case GL_MAX_CLIP_PLANES
:
4369 params
[0] = ctx
->Const
.MaxClipPlanes
;
4371 case GL_MAX_ELEMENTS_VERTICES
:
4372 params
[0] = ctx
->Const
.MaxArrayLockSize
;
4374 case GL_MAX_ELEMENTS_INDICES
:
4375 params
[0] = ctx
->Const
.MaxArrayLockSize
;
4377 case GL_MAX_EVAL_ORDER
:
4378 params
[0] = MAX_EVAL_ORDER
;
4381 params
[0] = ctx
->Const
.MaxLights
;
4383 case GL_MAX_LIST_NESTING
:
4384 params
[0] = MAX_LIST_NESTING
;
4386 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4387 params
[0] = MAX_MODELVIEW_STACK_DEPTH
;
4389 case GL_MAX_NAME_STACK_DEPTH
:
4390 params
[0] = MAX_NAME_STACK_DEPTH
;
4392 case GL_MAX_PIXEL_MAP_TABLE
:
4393 params
[0] = MAX_PIXEL_MAP_TABLE
;
4395 case GL_MAX_PROJECTION_STACK_DEPTH
:
4396 params
[0] = MAX_PROJECTION_STACK_DEPTH
;
4398 case GL_MAX_TEXTURE_SIZE
:
4399 params
[0] = 1 << (ctx
->Const
.MaxTextureLevels
- 1);
4401 case GL_MAX_3D_TEXTURE_SIZE
:
4402 params
[0] = 1 << (ctx
->Const
.Max3DTextureLevels
- 1);
4404 case GL_MAX_TEXTURE_STACK_DEPTH
:
4405 params
[0] = MAX_TEXTURE_STACK_DEPTH
;
4407 case GL_MAX_VIEWPORT_DIMS
:
4408 params
[0] = ctx
->Const
.MaxViewportWidth
;
4409 params
[1] = ctx
->Const
.MaxViewportHeight
;
4411 case GL_MODELVIEW_MATRIX
:
4413 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
4414 params
[0] = IROUND(matrix
[0]);
4415 params
[1] = IROUND(matrix
[1]);
4416 params
[2] = IROUND(matrix
[2]);
4417 params
[3] = IROUND(matrix
[3]);
4418 params
[4] = IROUND(matrix
[4]);
4419 params
[5] = IROUND(matrix
[5]);
4420 params
[6] = IROUND(matrix
[6]);
4421 params
[7] = IROUND(matrix
[7]);
4422 params
[8] = IROUND(matrix
[8]);
4423 params
[9] = IROUND(matrix
[9]);
4424 params
[10] = IROUND(matrix
[10]);
4425 params
[11] = IROUND(matrix
[11]);
4426 params
[12] = IROUND(matrix
[12]);
4427 params
[13] = IROUND(matrix
[13]);
4428 params
[14] = IROUND(matrix
[14]);
4429 params
[15] = IROUND(matrix
[15]);
4432 case GL_MODELVIEW_STACK_DEPTH
:
4433 params
[0] = ctx
->ModelviewMatrixStack
.Depth
+ 1;
4435 case GL_NAME_STACK_DEPTH
:
4436 params
[0] = ctx
->Select
.NameStackDepth
;
4439 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.Normalize
);
4441 case GL_PACK_ALIGNMENT
:
4442 params
[0] = ctx
->Pack
.Alignment
;
4444 case GL_PACK_LSB_FIRST
:
4445 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.LsbFirst
);
4447 case GL_PACK_ROW_LENGTH
:
4448 params
[0] = ctx
->Pack
.RowLength
;
4450 case GL_PACK_SKIP_PIXELS
:
4451 params
[0] = ctx
->Pack
.SkipPixels
;
4453 case GL_PACK_SKIP_ROWS
:
4454 params
[0] = ctx
->Pack
.SkipRows
;
4456 case GL_PACK_SWAP_BYTES
:
4457 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.SwapBytes
);
4459 case GL_PACK_SKIP_IMAGES_EXT
:
4460 params
[0] = ctx
->Pack
.SkipImages
;
4462 case GL_PACK_IMAGE_HEIGHT_EXT
:
4463 params
[0] = ctx
->Pack
.ImageHeight
;
4465 case GL_PACK_INVERT_MESA
:
4466 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.Invert
);
4468 case GL_PERSPECTIVE_CORRECTION_HINT
:
4469 params
[0] = ENUM_TO_INT(ctx
->Hint
.PerspectiveCorrection
);
4471 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4472 params
[0] = ctx
->PixelMaps
.AtoA
.Size
;
4474 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4475 params
[0] = ctx
->PixelMaps
.BtoB
.Size
;
4477 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4478 params
[0] = ctx
->PixelMaps
.GtoG
.Size
;
4480 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4481 params
[0] = ctx
->PixelMaps
.ItoA
.Size
;
4483 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4484 params
[0] = ctx
->PixelMaps
.ItoB
.Size
;
4486 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4487 params
[0] = ctx
->PixelMaps
.ItoG
.Size
;
4489 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4490 params
[0] = ctx
->PixelMaps
.ItoI
.Size
;
4492 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4493 params
[0] = ctx
->PixelMaps
.ItoR
.Size
;
4495 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4496 params
[0] = ctx
->PixelMaps
.RtoR
.Size
;
4498 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4499 params
[0] = ctx
->PixelMaps
.StoS
.Size
;
4502 params
[0] = IROUND(ctx
->Point
.Size
);
4504 case GL_POINT_SIZE_GRANULARITY
:
4505 params
[0] = IROUND(ctx
->Const
.PointSizeGranularity
);
4507 case GL_POINT_SIZE_RANGE
:
4508 params
[0] = IROUND(ctx
->Const
.MinPointSizeAA
);
4509 params
[1] = IROUND(ctx
->Const
.MaxPointSizeAA
);
4511 case GL_ALIASED_POINT_SIZE_RANGE
:
4512 params
[0] = IROUND(ctx
->Const
.MinPointSize
);
4513 params
[1] = IROUND(ctx
->Const
.MaxPointSize
);
4515 case GL_POINT_SMOOTH
:
4516 params
[0] = BOOLEAN_TO_INT(ctx
->Point
.SmoothFlag
);
4518 case GL_POINT_SMOOTH_HINT
:
4519 params
[0] = ENUM_TO_INT(ctx
->Hint
.PointSmooth
);
4521 case GL_POINT_SIZE_MIN_EXT
:
4522 params
[0] = IROUND(ctx
->Point
.MinSize
);
4524 case GL_POINT_SIZE_MAX_EXT
:
4525 params
[0] = IROUND(ctx
->Point
.MaxSize
);
4527 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4528 params
[0] = IROUND(ctx
->Point
.Threshold
);
4530 case GL_DISTANCE_ATTENUATION_EXT
:
4531 params
[0] = IROUND(ctx
->Point
.Params
[0]);
4532 params
[1] = IROUND(ctx
->Point
.Params
[1]);
4533 params
[2] = IROUND(ctx
->Point
.Params
[2]);
4535 case GL_POLYGON_MODE
:
4536 params
[0] = ENUM_TO_INT(ctx
->Polygon
.FrontMode
);
4537 params
[1] = ENUM_TO_INT(ctx
->Polygon
.BackMode
);
4539 case GL_POLYGON_OFFSET_BIAS_EXT
:
4540 params
[0] = IROUND(ctx
->Polygon
.OffsetUnits
);
4542 case GL_POLYGON_OFFSET_FACTOR
:
4543 params
[0] = IROUND(ctx
->Polygon
.OffsetFactor
);
4545 case GL_POLYGON_OFFSET_UNITS
:
4546 params
[0] = IROUND(ctx
->Polygon
.OffsetUnits
);
4548 case GL_POLYGON_OFFSET_POINT
:
4549 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetPoint
);
4551 case GL_POLYGON_OFFSET_LINE
:
4552 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetLine
);
4554 case GL_POLYGON_OFFSET_FILL
:
4555 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetFill
);
4557 case GL_POLYGON_SMOOTH
:
4558 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.SmoothFlag
);
4560 case GL_POLYGON_SMOOTH_HINT
:
4561 params
[0] = ENUM_TO_INT(ctx
->Hint
.PolygonSmooth
);
4563 case GL_POLYGON_STIPPLE
:
4564 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.StippleFlag
);
4566 case GL_PROJECTION_MATRIX
:
4568 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
4569 params
[0] = IROUND(matrix
[0]);
4570 params
[1] = IROUND(matrix
[1]);
4571 params
[2] = IROUND(matrix
[2]);
4572 params
[3] = IROUND(matrix
[3]);
4573 params
[4] = IROUND(matrix
[4]);
4574 params
[5] = IROUND(matrix
[5]);
4575 params
[6] = IROUND(matrix
[6]);
4576 params
[7] = IROUND(matrix
[7]);
4577 params
[8] = IROUND(matrix
[8]);
4578 params
[9] = IROUND(matrix
[9]);
4579 params
[10] = IROUND(matrix
[10]);
4580 params
[11] = IROUND(matrix
[11]);
4581 params
[12] = IROUND(matrix
[12]);
4582 params
[13] = IROUND(matrix
[13]);
4583 params
[14] = IROUND(matrix
[14]);
4584 params
[15] = IROUND(matrix
[15]);
4587 case GL_PROJECTION_STACK_DEPTH
:
4588 params
[0] = ctx
->ProjectionMatrixStack
.Depth
+ 1;
4590 case GL_READ_BUFFER
:
4591 params
[0] = ENUM_TO_INT(ctx
->ReadBuffer
->ColorReadBuffer
);
4594 params
[0] = IROUND(ctx
->Pixel
.RedBias
);
4597 if (ctx
->NewState
& _NEW_BUFFERS
)
4598 _mesa_update_state(ctx
);
4599 params
[0] = ctx
->DrawBuffer
->Visual
.redBits
;
4602 params
[0] = IROUND(ctx
->Pixel
.RedScale
);
4604 case GL_RENDER_MODE
:
4605 params
[0] = ENUM_TO_INT(ctx
->RenderMode
);
4607 case GL_RESCALE_NORMAL
:
4608 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.RescaleNormals
);
4611 params
[0] = BOOLEAN_TO_INT(GL_TRUE
);
4613 case GL_SCISSOR_BOX
:
4614 params
[0] = ctx
->Scissor
.X
;
4615 params
[1] = ctx
->Scissor
.Y
;
4616 params
[2] = ctx
->Scissor
.Width
;
4617 params
[3] = ctx
->Scissor
.Height
;
4619 case GL_SCISSOR_TEST
:
4620 params
[0] = BOOLEAN_TO_INT(ctx
->Scissor
.Enabled
);
4622 case GL_SELECTION_BUFFER_SIZE
:
4623 params
[0] = ctx
->Select
.BufferSize
;
4625 case GL_SHADE_MODEL
:
4626 params
[0] = ENUM_TO_INT(ctx
->Light
.ShadeModel
);
4628 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4629 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.SharedPalette
);
4631 case GL_STENCIL_BITS
:
4632 params
[0] = ctx
->DrawBuffer
->Visual
.stencilBits
;
4634 case GL_STENCIL_CLEAR_VALUE
:
4635 params
[0] = ctx
->Stencil
.Clear
;
4637 case GL_STENCIL_FAIL
:
4638 params
[0] = ENUM_TO_INT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
4640 case GL_STENCIL_FUNC
:
4641 params
[0] = ENUM_TO_INT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
4643 case GL_STENCIL_PASS_DEPTH_FAIL
:
4644 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
4646 case GL_STENCIL_PASS_DEPTH_PASS
:
4647 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
4649 case GL_STENCIL_REF
:
4650 params
[0] = ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
4652 case GL_STENCIL_TEST
:
4653 params
[0] = BOOLEAN_TO_INT(ctx
->Stencil
.Enabled
);
4655 case GL_STENCIL_VALUE_MASK
:
4656 params
[0] = ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
4658 case GL_STENCIL_WRITEMASK
:
4659 params
[0] = ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
4662 params
[0] = BOOLEAN_TO_INT(ctx
->DrawBuffer
->Visual
.stereoMode
);
4664 case GL_SUBPIXEL_BITS
:
4665 params
[0] = ctx
->Const
.SubPixelBits
;
4668 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D
));
4671 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D
));
4674 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D
));
4676 case GL_TEXTURE_1D_ARRAY_EXT
:
4677 CHECK_EXT1(MESA_texture_array
, "GetIntegerv");
4678 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
4680 case GL_TEXTURE_2D_ARRAY_EXT
:
4681 CHECK_EXT1(MESA_texture_array
, "GetIntegerv");
4682 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
4684 case GL_TEXTURE_BINDING_1D
:
4685 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
;
4687 case GL_TEXTURE_BINDING_2D
:
4688 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
;
4690 case GL_TEXTURE_BINDING_3D
:
4691 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
;
4693 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
4694 CHECK_EXT1(MESA_texture_array
, "GetIntegerv");
4695 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
;
4697 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
4698 CHECK_EXT1(MESA_texture_array
, "GetIntegerv");
4699 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
;
4701 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
4702 CHECK_EXT1(MESA_texture_array
, "GetIntegerv");
4703 params
[0] = ctx
->Const
.MaxArrayTextureLayers
;
4705 case GL_TEXTURE_GEN_S
:
4706 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
4708 case GL_TEXTURE_GEN_T
:
4709 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
4711 case GL_TEXTURE_GEN_R
:
4712 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
4714 case GL_TEXTURE_GEN_Q
:
4715 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
4717 case GL_TEXTURE_MATRIX
:
4719 const GLfloat
*matrix
;
4720 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4721 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4722 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
4726 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
4727 params
[0] = IROUND(matrix
[0]);
4728 params
[1] = IROUND(matrix
[1]);
4729 params
[2] = IROUND(matrix
[2]);
4730 params
[3] = IROUND(matrix
[3]);
4731 params
[4] = IROUND(matrix
[4]);
4732 params
[5] = IROUND(matrix
[5]);
4733 params
[6] = IROUND(matrix
[6]);
4734 params
[7] = IROUND(matrix
[7]);
4735 params
[8] = IROUND(matrix
[8]);
4736 params
[9] = IROUND(matrix
[9]);
4737 params
[10] = IROUND(matrix
[10]);
4738 params
[11] = IROUND(matrix
[11]);
4739 params
[12] = IROUND(matrix
[12]);
4740 params
[13] = IROUND(matrix
[13]);
4741 params
[14] = IROUND(matrix
[14]);
4742 params
[15] = IROUND(matrix
[15]);
4745 case GL_TEXTURE_STACK_DEPTH
:
4747 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4748 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4749 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4750 "glGet(texture stack depth, unit %u)", unit
);
4753 params
[0] = ctx
->TextureMatrixStack
[unit
].Depth
+ 1;
4756 case GL_UNPACK_ALIGNMENT
:
4757 params
[0] = ctx
->Unpack
.Alignment
;
4759 case GL_UNPACK_LSB_FIRST
:
4760 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.LsbFirst
);
4762 case GL_UNPACK_ROW_LENGTH
:
4763 params
[0] = ctx
->Unpack
.RowLength
;
4765 case GL_UNPACK_SKIP_PIXELS
:
4766 params
[0] = ctx
->Unpack
.SkipPixels
;
4768 case GL_UNPACK_SKIP_ROWS
:
4769 params
[0] = ctx
->Unpack
.SkipRows
;
4771 case GL_UNPACK_SWAP_BYTES
:
4772 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.SwapBytes
);
4774 case GL_UNPACK_SKIP_IMAGES_EXT
:
4775 params
[0] = ctx
->Unpack
.SkipImages
;
4777 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4778 params
[0] = ctx
->Unpack
.ImageHeight
;
4780 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
4781 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.ClientStorage
);
4784 params
[0] = ctx
->Viewport
.X
;
4785 params
[1] = ctx
->Viewport
.Y
;
4786 params
[2] = ctx
->Viewport
.Width
;
4787 params
[3] = ctx
->Viewport
.Height
;
4790 params
[0] = IROUND(ctx
->Pixel
.ZoomX
);
4793 params
[0] = IROUND(ctx
->Pixel
.ZoomY
);
4795 case GL_VERTEX_ARRAY
:
4796 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
4798 case GL_VERTEX_ARRAY_SIZE
:
4799 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Size
;
4801 case GL_VERTEX_ARRAY_TYPE
:
4802 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Vertex
.Type
);
4804 case GL_VERTEX_ARRAY_STRIDE
:
4805 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Stride
;
4807 case GL_VERTEX_ARRAY_COUNT_EXT
:
4810 case GL_NORMAL_ARRAY
:
4811 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
4813 case GL_NORMAL_ARRAY_TYPE
:
4814 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Normal
.Type
);
4816 case GL_NORMAL_ARRAY_STRIDE
:
4817 params
[0] = ctx
->Array
.ArrayObj
->Normal
.Stride
;
4819 case GL_NORMAL_ARRAY_COUNT_EXT
:
4822 case GL_COLOR_ARRAY
:
4823 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Color
.Enabled
);
4825 case GL_COLOR_ARRAY_SIZE
:
4826 params
[0] = ctx
->Array
.ArrayObj
->Color
.Size
;
4828 case GL_COLOR_ARRAY_TYPE
:
4829 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Color
.Type
);
4831 case GL_COLOR_ARRAY_STRIDE
:
4832 params
[0] = ctx
->Array
.ArrayObj
->Color
.Stride
;
4834 case GL_COLOR_ARRAY_COUNT_EXT
:
4837 case GL_INDEX_ARRAY
:
4838 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Index
.Enabled
);
4840 case GL_INDEX_ARRAY_TYPE
:
4841 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Index
.Type
);
4843 case GL_INDEX_ARRAY_STRIDE
:
4844 params
[0] = ctx
->Array
.ArrayObj
->Index
.Stride
;
4846 case GL_INDEX_ARRAY_COUNT_EXT
:
4849 case GL_TEXTURE_COORD_ARRAY
:
4850 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
4852 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4853 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
;
4855 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4856 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
4858 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4859 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
;
4861 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4864 case GL_EDGE_FLAG_ARRAY
:
4865 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
4867 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4868 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
;
4870 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4873 case GL_MAX_TEXTURE_UNITS_ARB
:
4874 CHECK_EXT1(ARB_multitexture
, "GetIntegerv");
4875 params
[0] = ctx
->Const
.MaxTextureUnits
;
4877 case GL_ACTIVE_TEXTURE_ARB
:
4878 CHECK_EXT1(ARB_multitexture
, "GetIntegerv");
4879 params
[0] = GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4881 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4882 CHECK_EXT1(ARB_multitexture
, "GetIntegerv");
4883 params
[0] = GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4885 case GL_TEXTURE_CUBE_MAP_ARB
:
4886 CHECK_EXT1(ARB_texture_cube_map
, "GetIntegerv");
4887 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
4889 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4890 CHECK_EXT1(ARB_texture_cube_map
, "GetIntegerv");
4891 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
;
4893 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4894 CHECK_EXT1(ARB_texture_cube_map
, "GetIntegerv");
4895 params
[0] = (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
4897 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4898 params
[0] = ctx
->Hint
.TextureCompression
;
4900 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4901 params
[0] = _mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
);
4903 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4906 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
4908 for (i
= 0; i
< n
; i
++)
4909 params
[i
] = ENUM_TO_INT(formats
[i
]);
4912 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4913 CHECK_EXT1(EXT_compiled_vertex_array
, "GetIntegerv");
4914 params
[0] = ctx
->Array
.LockFirst
;
4916 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4917 CHECK_EXT1(EXT_compiled_vertex_array
, "GetIntegerv");
4918 params
[0] = ctx
->Array
.LockCount
;
4920 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4922 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
4923 params
[0] = IROUND(matrix
[0]);
4924 params
[1] = IROUND(matrix
[4]);
4925 params
[2] = IROUND(matrix
[8]);
4926 params
[3] = IROUND(matrix
[12]);
4927 params
[4] = IROUND(matrix
[1]);
4928 params
[5] = IROUND(matrix
[5]);
4929 params
[6] = IROUND(matrix
[9]);
4930 params
[7] = IROUND(matrix
[13]);
4931 params
[8] = IROUND(matrix
[2]);
4932 params
[9] = IROUND(matrix
[6]);
4933 params
[10] = IROUND(matrix
[10]);
4934 params
[11] = IROUND(matrix
[14]);
4935 params
[12] = IROUND(matrix
[3]);
4936 params
[13] = IROUND(matrix
[7]);
4937 params
[14] = IROUND(matrix
[11]);
4938 params
[15] = IROUND(matrix
[15]);
4941 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4943 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
4944 params
[0] = IROUND(matrix
[0]);
4945 params
[1] = IROUND(matrix
[4]);
4946 params
[2] = IROUND(matrix
[8]);
4947 params
[3] = IROUND(matrix
[12]);
4948 params
[4] = IROUND(matrix
[1]);
4949 params
[5] = IROUND(matrix
[5]);
4950 params
[6] = IROUND(matrix
[9]);
4951 params
[7] = IROUND(matrix
[13]);
4952 params
[8] = IROUND(matrix
[2]);
4953 params
[9] = IROUND(matrix
[6]);
4954 params
[10] = IROUND(matrix
[10]);
4955 params
[11] = IROUND(matrix
[14]);
4956 params
[12] = IROUND(matrix
[3]);
4957 params
[13] = IROUND(matrix
[7]);
4958 params
[14] = IROUND(matrix
[11]);
4959 params
[15] = IROUND(matrix
[15]);
4962 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4964 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
4965 params
[0] = IROUND(matrix
[0]);
4966 params
[1] = IROUND(matrix
[4]);
4967 params
[2] = IROUND(matrix
[8]);
4968 params
[3] = IROUND(matrix
[12]);
4969 params
[4] = IROUND(matrix
[1]);
4970 params
[5] = IROUND(matrix
[5]);
4971 params
[6] = IROUND(matrix
[9]);
4972 params
[7] = IROUND(matrix
[13]);
4973 params
[8] = IROUND(matrix
[2]);
4974 params
[9] = IROUND(matrix
[6]);
4975 params
[10] = IROUND(matrix
[10]);
4976 params
[11] = IROUND(matrix
[14]);
4977 params
[12] = IROUND(matrix
[3]);
4978 params
[13] = IROUND(matrix
[7]);
4979 params
[14] = IROUND(matrix
[11]);
4980 params
[15] = IROUND(matrix
[15]);
4983 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4985 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
4986 params
[0] = IROUND(matrix
[0]);
4987 params
[1] = IROUND(matrix
[4]);
4988 params
[2] = IROUND(matrix
[8]);
4989 params
[3] = IROUND(matrix
[12]);
4990 params
[4] = IROUND(matrix
[1]);
4991 params
[5] = IROUND(matrix
[5]);
4992 params
[6] = IROUND(matrix
[9]);
4993 params
[7] = IROUND(matrix
[13]);
4994 params
[8] = IROUND(matrix
[2]);
4995 params
[9] = IROUND(matrix
[6]);
4996 params
[10] = IROUND(matrix
[10]);
4997 params
[11] = IROUND(matrix
[14]);
4998 params
[12] = IROUND(matrix
[3]);
4999 params
[13] = IROUND(matrix
[7]);
5000 params
[14] = IROUND(matrix
[11]);
5001 params
[15] = IROUND(matrix
[15]);
5004 case GL_COLOR_MATRIX_SGI
:
5006 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
5007 params
[0] = IROUND(matrix
[0]);
5008 params
[1] = IROUND(matrix
[1]);
5009 params
[2] = IROUND(matrix
[2]);
5010 params
[3] = IROUND(matrix
[3]);
5011 params
[4] = IROUND(matrix
[4]);
5012 params
[5] = IROUND(matrix
[5]);
5013 params
[6] = IROUND(matrix
[6]);
5014 params
[7] = IROUND(matrix
[7]);
5015 params
[8] = IROUND(matrix
[8]);
5016 params
[9] = IROUND(matrix
[9]);
5017 params
[10] = IROUND(matrix
[10]);
5018 params
[11] = IROUND(matrix
[11]);
5019 params
[12] = IROUND(matrix
[12]);
5020 params
[13] = IROUND(matrix
[13]);
5021 params
[14] = IROUND(matrix
[14]);
5022 params
[15] = IROUND(matrix
[15]);
5025 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5026 params
[0] = ctx
->ColorMatrixStack
.Depth
+ 1;
5028 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5029 params
[0] = MAX_COLOR_STACK_DEPTH
;
5031 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5032 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[0]);
5034 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5035 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[1]);
5037 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5038 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[2]);
5040 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5041 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[3]);
5043 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5044 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[0]);
5046 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5047 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[1]);
5049 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5050 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[2]);
5052 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5053 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[3]);
5055 case GL_CONVOLUTION_1D_EXT
:
5056 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5057 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Convolution1DEnabled
);
5059 case GL_CONVOLUTION_2D_EXT
:
5060 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5061 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Convolution2DEnabled
);
5063 case GL_SEPARABLE_2D_EXT
:
5064 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5065 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Separable2DEnabled
);
5067 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5068 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5069 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[0]);
5071 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5072 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5073 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[1]);
5075 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5076 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5077 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[2]);
5079 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5080 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5081 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[3]);
5083 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5084 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5085 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[0]);
5087 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5088 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5089 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[1]);
5091 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5092 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5093 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[2]);
5095 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5096 CHECK_EXT1(EXT_convolution
, "GetIntegerv");
5097 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[3]);
5100 CHECK_EXT1(EXT_histogram
, "GetIntegerv");
5101 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.HistogramEnabled
);
5104 CHECK_EXT1(EXT_histogram
, "GetIntegerv");
5105 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MinMaxEnabled
);
5107 case GL_COLOR_TABLE_SGI
:
5108 CHECK_EXT1(SGI_color_table
, "GetIntegerv");
5109 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
5111 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5112 CHECK_EXT1(SGI_color_table
, "GetIntegerv");
5113 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
5115 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5116 CHECK_EXT1(SGI_color_table
, "GetIntegerv");
5117 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
5119 case GL_TEXTURE_COLOR_TABLE_SGI
:
5120 CHECK_EXT1(SGI_texture_color_table
, "GetIntegerv");
5121 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
5123 case GL_COLOR_SUM_EXT
:
5124 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
, "GetIntegerv");
5125 params
[0] = BOOLEAN_TO_INT(ctx
->Fog
.ColorSumEnabled
);
5127 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5128 CHECK_EXT1(EXT_secondary_color
, "GetIntegerv");
5129 FLUSH_CURRENT(ctx
, 0);
5130 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
5131 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
5132 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
5133 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
5135 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5136 CHECK_EXT1(EXT_secondary_color
, "GetIntegerv");
5137 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
5139 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5140 CHECK_EXT1(EXT_secondary_color
, "GetIntegerv");
5141 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
5143 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5144 CHECK_EXT1(EXT_secondary_color
, "GetIntegerv");
5145 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
;
5147 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5148 CHECK_EXT1(EXT_secondary_color
, "GetIntegerv");
5149 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Size
;
5151 case GL_CURRENT_FOG_COORDINATE_EXT
:
5152 CHECK_EXT1(EXT_fog_coord
, "GetIntegerv");
5153 FLUSH_CURRENT(ctx
, 0);
5154 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
5156 case GL_FOG_COORDINATE_ARRAY_EXT
:
5157 CHECK_EXT1(EXT_fog_coord
, "GetIntegerv");
5158 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
5160 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5161 CHECK_EXT1(EXT_fog_coord
, "GetIntegerv");
5162 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
5164 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5165 CHECK_EXT1(EXT_fog_coord
, "GetIntegerv");
5166 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.Stride
;
5168 case GL_FOG_COORDINATE_SOURCE_EXT
:
5169 CHECK_EXT1(EXT_fog_coord
, "GetIntegerv");
5170 params
[0] = ENUM_TO_INT(ctx
->Fog
.FogCoordinateSource
);
5172 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5173 CHECK_EXT1(EXT_texture_lod_bias
, "GetIntegerv");
5174 params
[0] = IROUND(ctx
->Const
.MaxTextureLodBias
);
5176 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5177 CHECK_EXT1(EXT_texture_filter_anisotropic
, "GetIntegerv");
5178 params
[0] = IROUND(ctx
->Const
.MaxTextureMaxAnisotropy
);
5180 case GL_MULTISAMPLE_ARB
:
5181 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.Enabled
);
5183 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5184 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleAlphaToCoverage
);
5186 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5187 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleAlphaToOne
);
5189 case GL_SAMPLE_COVERAGE_ARB
:
5190 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleCoverage
);
5192 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5193 params
[0] = IROUND(ctx
->Multisample
.SampleCoverageValue
);
5195 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5196 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleCoverageInvert
);
5198 case GL_SAMPLE_BUFFERS_ARB
:
5199 params
[0] = ctx
->DrawBuffer
->Visual
.sampleBuffers
;
5201 case GL_SAMPLES_ARB
:
5202 params
[0] = ctx
->DrawBuffer
->Visual
.samples
;
5204 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5205 CHECK_EXT1(IBM_rasterpos_clip
, "GetIntegerv");
5206 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.RasterPositionUnclipped
);
5208 case GL_POINT_SPRITE_NV
:
5209 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
, "GetIntegerv");
5210 params
[0] = BOOLEAN_TO_INT(ctx
->Point
.PointSprite
);
5212 case GL_POINT_SPRITE_R_MODE_NV
:
5213 CHECK_EXT1(NV_point_sprite
, "GetIntegerv");
5214 params
[0] = ENUM_TO_INT(ctx
->Point
.SpriteRMode
);
5216 case GL_POINT_SPRITE_COORD_ORIGIN
:
5217 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
, "GetIntegerv");
5218 params
[0] = ENUM_TO_INT(ctx
->Point
.SpriteOrigin
);
5220 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5221 CHECK_EXT1(SGIS_generate_mipmap
, "GetIntegerv");
5222 params
[0] = ENUM_TO_INT(ctx
->Hint
.GenerateMipmap
);
5224 case GL_VERTEX_PROGRAM_BINDING_NV
:
5225 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5226 params
[0] = (ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0);
5228 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
5229 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5230 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
5232 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
5233 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5234 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
5236 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
5237 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5238 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
5240 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
5241 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5242 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
5244 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
5245 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5246 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
5248 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
5249 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5250 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
5252 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
5253 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5254 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
5256 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
5257 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5258 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
5260 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
5261 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5262 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
5264 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
5265 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5266 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
5268 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
5269 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5270 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
5272 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
5273 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5274 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
5276 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
5277 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5278 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
5280 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
5281 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5282 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
5284 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
5285 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5286 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
5288 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
5289 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5290 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
5292 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
5293 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5294 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[0]);
5296 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
5297 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5298 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[1]);
5300 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
5301 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5302 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[2]);
5304 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
5305 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5306 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[3]);
5308 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
5309 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5310 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[4]);
5312 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
5313 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5314 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[5]);
5316 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
5317 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5318 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[6]);
5320 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
5321 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5322 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[7]);
5324 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
5325 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5326 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[8]);
5328 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
5329 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5330 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[9]);
5332 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
5333 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5334 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[10]);
5336 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
5337 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5338 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[11]);
5340 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
5341 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5342 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[12]);
5344 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
5345 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5346 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[13]);
5348 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
5349 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5350 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[14]);
5352 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
5353 CHECK_EXT1(NV_vertex_program
, "GetIntegerv");
5354 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[15]);
5356 case GL_FRAGMENT_PROGRAM_NV
:
5357 CHECK_EXT1(NV_fragment_program
, "GetIntegerv");
5358 params
[0] = BOOLEAN_TO_INT(ctx
->FragmentProgram
.Enabled
);
5360 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
5361 CHECK_EXT1(NV_fragment_program
, "GetIntegerv");
5362 params
[0] = ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0;
5364 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
5365 CHECK_EXT1(NV_fragment_program
, "GetIntegerv");
5366 params
[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
5368 case GL_TEXTURE_RECTANGLE_NV
:
5369 CHECK_EXT1(NV_texture_rectangle
, "GetIntegerv");
5370 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
5372 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
5373 CHECK_EXT1(NV_texture_rectangle
, "GetIntegerv");
5374 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
;
5376 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
5377 CHECK_EXT1(NV_texture_rectangle
, "GetIntegerv");
5378 params
[0] = ctx
->Const
.MaxTextureRectSize
;
5380 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
5381 CHECK_EXT1(EXT_stencil_two_side
, "GetIntegerv");
5382 params
[0] = BOOLEAN_TO_INT(ctx
->Stencil
.TestTwoSide
);
5384 case GL_ACTIVE_STENCIL_FACE_EXT
:
5385 CHECK_EXT1(EXT_stencil_two_side
, "GetIntegerv");
5386 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
5388 case GL_MAX_SHININESS_NV
:
5389 CHECK_EXT1(NV_light_max_exponent
, "GetIntegerv");
5390 params
[0] = IROUND(ctx
->Const
.MaxShininess
);
5392 case GL_MAX_SPOT_EXPONENT_NV
:
5393 CHECK_EXT1(NV_light_max_exponent
, "GetIntegerv");
5394 params
[0] = IROUND(ctx
->Const
.MaxSpotExponent
);
5396 case GL_ARRAY_BUFFER_BINDING_ARB
:
5397 params
[0] = ctx
->Array
.ArrayBufferObj
->Name
;
5399 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
5400 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
;
5402 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
5403 params
[0] = ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
;
5405 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
5406 params
[0] = ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
;
5408 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
5409 params
[0] = ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
;
5411 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
5412 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
;
5414 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
5415 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
;
5417 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
5418 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
;
5420 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
5421 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
;
5423 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
5424 params
[0] = ctx
->Array
.ElementArrayBufferObj
->Name
;
5426 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
5427 CHECK_EXT1(EXT_pixel_buffer_object
, "GetIntegerv");
5428 params
[0] = ctx
->Pack
.BufferObj
->Name
;
5430 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
5431 CHECK_EXT1(EXT_pixel_buffer_object
, "GetIntegerv");
5432 params
[0] = ctx
->Unpack
.BufferObj
->Name
;
5434 case GL_VERTEX_PROGRAM_ARB
:
5435 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetIntegerv");
5436 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.Enabled
);
5438 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
5439 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetIntegerv");
5440 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.PointSizeEnabled
);
5442 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
5443 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetIntegerv");
5444 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.TwoSideEnabled
);
5446 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
5447 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetIntegerv");
5448 params
[0] = ctx
->Const
.MaxProgramMatrixStackDepth
;
5450 case GL_MAX_PROGRAM_MATRICES_ARB
:
5451 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetIntegerv");
5452 params
[0] = ctx
->Const
.MaxProgramMatrices
;
5454 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
5455 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetIntegerv");
5456 params
[0] = BOOLEAN_TO_INT(ctx
->CurrentStack
->Depth
+ 1);
5458 case GL_CURRENT_MATRIX_ARB
:
5459 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
, "GetIntegerv");
5461 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
5462 params
[0] = IROUND(matrix
[0]);
5463 params
[1] = IROUND(matrix
[1]);
5464 params
[2] = IROUND(matrix
[2]);
5465 params
[3] = IROUND(matrix
[3]);
5466 params
[4] = IROUND(matrix
[4]);
5467 params
[5] = IROUND(matrix
[5]);
5468 params
[6] = IROUND(matrix
[6]);
5469 params
[7] = IROUND(matrix
[7]);
5470 params
[8] = IROUND(matrix
[8]);
5471 params
[9] = IROUND(matrix
[9]);
5472 params
[10] = IROUND(matrix
[10]);
5473 params
[11] = IROUND(matrix
[11]);
5474 params
[12] = IROUND(matrix
[12]);
5475 params
[13] = IROUND(matrix
[13]);
5476 params
[14] = IROUND(matrix
[14]);
5477 params
[15] = IROUND(matrix
[15]);
5480 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
5481 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
, "GetIntegerv");
5483 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
5484 params
[0] = IROUND(matrix
[0]);
5485 params
[1] = IROUND(matrix
[4]);
5486 params
[2] = IROUND(matrix
[8]);
5487 params
[3] = IROUND(matrix
[12]);
5488 params
[4] = IROUND(matrix
[1]);
5489 params
[5] = IROUND(matrix
[5]);
5490 params
[6] = IROUND(matrix
[9]);
5491 params
[7] = IROUND(matrix
[13]);
5492 params
[8] = IROUND(matrix
[2]);
5493 params
[9] = IROUND(matrix
[6]);
5494 params
[10] = IROUND(matrix
[10]);
5495 params
[11] = IROUND(matrix
[14]);
5496 params
[12] = IROUND(matrix
[3]);
5497 params
[13] = IROUND(matrix
[7]);
5498 params
[14] = IROUND(matrix
[11]);
5499 params
[15] = IROUND(matrix
[15]);
5502 case GL_MAX_VERTEX_ATTRIBS_ARB
:
5503 CHECK_EXT1(ARB_vertex_program
, "GetIntegerv");
5504 params
[0] = ctx
->Const
.VertexProgram
.MaxAttribs
;
5506 case GL_PROGRAM_ERROR_POSITION_ARB
:
5507 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
, "GetIntegerv");
5508 params
[0] = ctx
->Program
.ErrorPos
;
5510 case GL_FRAGMENT_PROGRAM_ARB
:
5511 CHECK_EXT1(ARB_fragment_program
, "GetIntegerv");
5512 params
[0] = BOOLEAN_TO_INT(ctx
->FragmentProgram
.Enabled
);
5514 case GL_MAX_TEXTURE_COORDS_ARB
:
5515 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
, "GetIntegerv");
5516 params
[0] = ctx
->Const
.MaxTextureCoordUnits
;
5518 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
5519 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
, "GetIntegerv");
5520 params
[0] = ctx
->Const
.MaxTextureImageUnits
;
5522 case GL_DEPTH_BOUNDS_TEST_EXT
:
5523 CHECK_EXT1(EXT_depth_bounds_test
, "GetIntegerv");
5524 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.BoundsTest
);
5526 case GL_DEPTH_BOUNDS_EXT
:
5527 CHECK_EXT1(EXT_depth_bounds_test
, "GetIntegerv");
5528 params
[0] = IROUND(ctx
->Depth
.BoundsMin
);
5529 params
[1] = IROUND(ctx
->Depth
.BoundsMax
);
5531 case GL_DEPTH_CLAMP
:
5532 CHECK_EXT1(ARB_depth_clamp
, "GetIntegerv");
5533 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.DepthClamp
);
5535 case GL_MAX_DRAW_BUFFERS_ARB
:
5536 params
[0] = ctx
->Const
.MaxDrawBuffers
;
5538 case GL_DRAW_BUFFER0_ARB
:
5539 params
[0] = ENUM_TO_INT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
5541 case GL_DRAW_BUFFER1_ARB
:
5544 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5545 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5548 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
5549 params
[0] = ENUM_TO_INT(buffer
);
5552 case GL_DRAW_BUFFER2_ARB
:
5555 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5556 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5559 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
5560 params
[0] = ENUM_TO_INT(buffer
);
5563 case GL_DRAW_BUFFER3_ARB
:
5566 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5567 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5570 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
5571 params
[0] = ENUM_TO_INT(buffer
);
5574 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
5575 CHECK_EXT1(OES_read_format
, "GetIntegerv");
5576 params
[0] = _mesa_get_color_read_type(ctx
);
5578 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
5579 CHECK_EXT1(OES_read_format
, "GetIntegerv");
5580 params
[0] = _mesa_get_color_read_format(ctx
);
5582 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
5583 CHECK_EXT1(ATI_fragment_shader
, "GetIntegerv");
5586 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
5587 CHECK_EXT1(ATI_fragment_shader
, "GetIntegerv");
5590 case GL_NUM_PASSES_ATI
:
5591 CHECK_EXT1(ATI_fragment_shader
, "GetIntegerv");
5594 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
5595 CHECK_EXT1(ATI_fragment_shader
, "GetIntegerv");
5598 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
5599 CHECK_EXT1(ATI_fragment_shader
, "GetIntegerv");
5602 case GL_COLOR_ALPHA_PAIRING_ATI
:
5603 CHECK_EXT1(ATI_fragment_shader
, "GetIntegerv");
5604 params
[0] = BOOLEAN_TO_INT(GL_TRUE
);
5606 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
5607 CHECK_EXT1(ATI_fragment_shader
, "GetIntegerv");
5610 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
5611 CHECK_EXT1(ATI_fragment_shader
, "GetIntegerv");
5614 case GL_STENCIL_BACK_FUNC
:
5615 params
[0] = ENUM_TO_INT(ctx
->Stencil
.Function
[1]);
5617 case GL_STENCIL_BACK_VALUE_MASK
:
5618 params
[0] = ctx
->Stencil
.ValueMask
[1];
5620 case GL_STENCIL_BACK_WRITEMASK
:
5621 params
[0] = ctx
->Stencil
.WriteMask
[1];
5623 case GL_STENCIL_BACK_REF
:
5624 params
[0] = ctx
->Stencil
.Ref
[1];
5626 case GL_STENCIL_BACK_FAIL
:
5627 params
[0] = ENUM_TO_INT(ctx
->Stencil
.FailFunc
[1]);
5629 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
5630 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZFailFunc
[1]);
5632 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
5633 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZPassFunc
[1]);
5635 case GL_FRAMEBUFFER_BINDING_EXT
:
5636 CHECK_EXT1(EXT_framebuffer_object
, "GetIntegerv");
5637 params
[0] = ctx
->DrawBuffer
->Name
;
5639 case GL_RENDERBUFFER_BINDING_EXT
:
5640 CHECK_EXT1(EXT_framebuffer_object
, "GetIntegerv");
5641 params
[0] = ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0;
5643 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
5644 CHECK_EXT1(EXT_framebuffer_object
, "GetIntegerv");
5645 params
[0] = ctx
->Const
.MaxColorAttachments
;
5647 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
5648 CHECK_EXT1(EXT_framebuffer_object
, "GetIntegerv");
5649 params
[0] = ctx
->Const
.MaxRenderbufferSize
;
5651 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
5652 CHECK_EXT1(EXT_framebuffer_blit
, "GetIntegerv");
5653 params
[0] = ctx
->ReadBuffer
->Name
;
5655 case GL_PROVOKING_VERTEX_EXT
:
5656 CHECK_EXT1(EXT_provoking_vertex
, "GetIntegerv");
5657 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.ProvokingVertex
);
5659 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
5660 CHECK_EXT1(EXT_provoking_vertex
, "GetIntegerv");
5661 params
[0] = BOOLEAN_TO_INT(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
5663 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
5664 CHECK_EXT1(ARB_fragment_shader
, "GetIntegerv");
5665 params
[0] = ctx
->Const
.FragmentProgram
.MaxUniformComponents
;
5667 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
5668 CHECK_EXT1(ARB_fragment_shader
, "GetIntegerv");
5669 params
[0] = ENUM_TO_INT(ctx
->Hint
.FragmentShaderDerivative
);
5671 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
5672 CHECK_EXT1(ARB_vertex_shader
, "GetIntegerv");
5673 params
[0] = ctx
->Const
.VertexProgram
.MaxUniformComponents
;
5675 case GL_MAX_VARYING_FLOATS_ARB
:
5676 CHECK_EXT1(ARB_vertex_shader
, "GetIntegerv");
5677 params
[0] = ctx
->Const
.MaxVarying
* 4;
5679 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
5680 CHECK_EXT1(ARB_vertex_shader
, "GetIntegerv");
5681 params
[0] = ctx
->Const
.MaxVertexTextureImageUnits
;
5683 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
5684 CHECK_EXT1(ARB_vertex_shader
, "GetIntegerv");
5685 params
[0] = ctx
->Const
.MaxCombinedTextureImageUnits
;
5687 case GL_CURRENT_PROGRAM
:
5688 CHECK_EXT1(ARB_shader_objects
, "GetIntegerv");
5689 params
[0] = ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0;
5691 case GL_MAX_SAMPLES
:
5692 CHECK_EXT1(ARB_framebuffer_object
, "GetIntegerv");
5693 params
[0] = ctx
->Const
.MaxSamples
;
5695 case GL_VERTEX_ARRAY_BINDING_APPLE
:
5696 CHECK_EXT1(APPLE_vertex_array_object
, "GetIntegerv");
5697 params
[0] = ctx
->Array
.ArrayObj
->Name
;
5699 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
5700 CHECK_EXT1(ARB_seamless_cube_map
, "GetIntegerv");
5701 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.CubeMapSeamless
);
5703 case GL_MAX_SERVER_WAIT_TIMEOUT
:
5704 CHECK_EXT1(ARB_sync
, "GetIntegerv");
5705 params
[0] = INT64_TO_INT(ctx
->Const
.MaxServerWaitTimeout
);
5707 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
5708 CHECK_EXT1(EXT_transform_feedback
, "GetIntegerv");
5709 params
[0] = ctx
->TransformFeedback
.CurrentBuffer
->Name
;
5711 case GL_RASTERIZER_DISCARD
:
5712 CHECK_EXT1(EXT_transform_feedback
, "GetIntegerv");
5713 params
[0] = BOOLEAN_TO_INT(ctx
->TransformFeedback
.RasterDiscard
);
5715 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
5716 CHECK_EXT1(EXT_transform_feedback
, "GetIntegerv");
5717 params
[0] = ctx
->Const
.MaxTransformFeedbackInterleavedComponents
;
5719 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
5720 CHECK_EXT1(EXT_transform_feedback
, "GetIntegerv");
5721 params
[0] = ctx
->Const
.MaxTransformFeedbackSeparateAttribs
;
5723 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
5724 CHECK_EXT1(EXT_transform_feedback
, "GetIntegerv");
5725 params
[0] = ctx
->Const
.MaxTransformFeedbackSeparateComponents
;
5727 case GL_NUM_EXTENSIONS
:
5728 params
[0] = _mesa_get_extension_count(ctx
);
5730 case GL_MAJOR_VERSION
:
5731 params
[0] = ctx
->VersionMajor
;
5733 case GL_MINOR_VERSION
:
5734 params
[0] = ctx
->VersionMinor
;
5736 case GL_CONTEXT_FLAGS
:
5737 params
[0] = ctx
->Const
.ContextFlags
;
5740 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv(pname=0x%x)", pname
);
5744 #if FEATURE_ARB_sync
5746 _mesa_GetInteger64v( GLenum pname
, GLint64
*params
)
5748 GET_CURRENT_CONTEXT(ctx
);
5749 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5754 if (ctx
->Driver
.GetInteger64v
&&
5755 ctx
->Driver
.GetInteger64v(ctx
, pname
, params
))
5759 case GL_ACCUM_RED_BITS
:
5760 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumRedBits
);
5762 case GL_ACCUM_GREEN_BITS
:
5763 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
5765 case GL_ACCUM_BLUE_BITS
:
5766 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
5768 case GL_ACCUM_ALPHA_BITS
:
5769 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
5771 case GL_ACCUM_CLEAR_VALUE
:
5772 params
[0] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[0]);
5773 params
[1] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[1]);
5774 params
[2] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[2]);
5775 params
[3] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[3]);
5778 params
[0] = IROUND64(ctx
->Pixel
.AlphaBias
);
5781 if (ctx
->NewState
& _NEW_BUFFERS
)
5782 _mesa_update_state(ctx
);
5783 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.alphaBits
);
5785 case GL_ALPHA_SCALE
:
5786 params
[0] = IROUND64(ctx
->Pixel
.AlphaScale
);
5789 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.AlphaEnabled
);
5791 case GL_ALPHA_TEST_FUNC
:
5792 params
[0] = ENUM_TO_INT64(ctx
->Color
.AlphaFunc
);
5794 case GL_ALPHA_TEST_REF
:
5795 params
[0] = FLOAT_TO_INT64(ctx
->Color
.AlphaRef
);
5797 case GL_ATTRIB_STACK_DEPTH
:
5798 params
[0] = (GLint64
)(ctx
->AttribStackDepth
);
5800 case GL_AUTO_NORMAL
:
5801 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.AutoNormal
);
5803 case GL_AUX_BUFFERS
:
5804 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
5807 params
[0] = BOOLEAN_TO_INT64((ctx
->Color
.BlendEnabled
& 1));
5810 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstRGB
);
5813 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcRGB
);
5815 case GL_BLEND_SRC_RGB_EXT
:
5816 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcRGB
);
5818 case GL_BLEND_DST_RGB_EXT
:
5819 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstRGB
);
5821 case GL_BLEND_SRC_ALPHA_EXT
:
5822 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcA
);
5824 case GL_BLEND_DST_ALPHA_EXT
:
5825 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstA
);
5827 case GL_BLEND_EQUATION
:
5828 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendEquationRGB
);
5830 case GL_BLEND_EQUATION_ALPHA_EXT
:
5831 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendEquationA
);
5833 case GL_BLEND_COLOR_EXT
:
5834 params
[0] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[0]);
5835 params
[1] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[1]);
5836 params
[2] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[2]);
5837 params
[3] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[3]);
5840 params
[0] = IROUND64(ctx
->Pixel
.BlueBias
);
5843 if (ctx
->NewState
& _NEW_BUFFERS
)
5844 _mesa_update_state(ctx
);
5845 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.blueBits
);
5848 params
[0] = IROUND64(ctx
->Pixel
.BlueScale
);
5850 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
5851 params
[0] = (GLint64
)(ctx
->ClientAttribStackDepth
);
5853 case GL_CLIP_PLANE0
:
5854 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
5856 case GL_CLIP_PLANE1
:
5857 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
5859 case GL_CLIP_PLANE2
:
5860 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
5862 case GL_CLIP_PLANE3
:
5863 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
5865 case GL_CLIP_PLANE4
:
5866 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
5868 case GL_CLIP_PLANE5
:
5869 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
5871 case GL_COLOR_CLEAR_VALUE
:
5872 params
[0] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[0]);
5873 params
[1] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[1]);
5874 params
[2] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[2]);
5875 params
[3] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[3]);
5877 case GL_COLOR_MATERIAL
:
5878 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.ColorMaterialEnabled
);
5880 case GL_COLOR_MATERIAL_FACE
:
5881 params
[0] = ENUM_TO_INT64(ctx
->Light
.ColorMaterialFace
);
5883 case GL_COLOR_MATERIAL_PARAMETER
:
5884 params
[0] = ENUM_TO_INT64(ctx
->Light
.ColorMaterialMode
);
5886 case GL_COLOR_WRITEMASK
:
5887 params
[0] = (GLint64
)(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
5888 params
[1] = (GLint64
)(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
5889 params
[2] = (GLint64
)(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
5890 params
[3] = (GLint64
)(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
5893 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.CullFlag
);
5895 case GL_CULL_FACE_MODE
:
5896 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.CullFaceMode
);
5898 case GL_CURRENT_COLOR
:
5899 FLUSH_CURRENT(ctx
, 0);
5900 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
5901 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
5902 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
5903 params
[3] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
5905 case GL_CURRENT_INDEX
:
5906 FLUSH_CURRENT(ctx
, 0);
5907 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
5909 case GL_CURRENT_NORMAL
:
5910 FLUSH_CURRENT(ctx
, 0);
5911 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
5912 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
5913 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
5915 case GL_CURRENT_RASTER_COLOR
:
5916 params
[0] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[0]);
5917 params
[1] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[1]);
5918 params
[2] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[2]);
5919 params
[3] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[3]);
5921 case GL_CURRENT_RASTER_DISTANCE
:
5922 params
[0] = IROUND64(ctx
->Current
.RasterDistance
);
5924 case GL_CURRENT_RASTER_INDEX
:
5925 params
[0] = IROUND64(1.0);
5927 case GL_CURRENT_RASTER_POSITION
:
5928 params
[0] = IROUND64(ctx
->Current
.RasterPos
[0]);
5929 params
[1] = IROUND64(ctx
->Current
.RasterPos
[1]);
5930 params
[2] = IROUND64(ctx
->Current
.RasterPos
[2]);
5931 params
[3] = IROUND64(ctx
->Current
.RasterPos
[3]);
5933 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
5934 params
[0] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[0]);
5935 params
[1] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[1]);
5936 params
[2] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[2]);
5937 params
[3] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[3]);
5939 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
5941 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
5942 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
5943 _mesa_error(ctx
, GL_INVALID_OPERATION
,
5944 "glGet(raster tex coords, unit %u)", unit
);
5947 params
[0] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][0]);
5948 params
[1] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][1]);
5949 params
[2] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][2]);
5950 params
[3] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][3]);
5953 case GL_CURRENT_RASTER_POSITION_VALID
:
5954 params
[0] = BOOLEAN_TO_INT64(ctx
->Current
.RasterPosValid
);
5956 case GL_CURRENT_TEXTURE_COORDS
:
5958 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
5959 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
5960 _mesa_error(ctx
, GL_INVALID_OPERATION
,
5961 "glGet(current tex coords, unit %u)", unit
);
5964 FLUSH_CURRENT(ctx
, 0);
5965 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
5966 params
[1] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
5967 params
[2] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
5968 params
[3] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
5972 params
[0] = IROUND64(ctx
->Pixel
.DepthBias
);
5975 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.depthBits
);
5977 case GL_DEPTH_CLEAR_VALUE
:
5978 params
[0] = FLOAT_TO_INT64(((GLfloat
) ctx
->Depth
.Clear
));
5981 params
[0] = ENUM_TO_INT64(ctx
->Depth
.Func
);
5983 case GL_DEPTH_RANGE
:
5984 params
[0] = FLOAT_TO_INT64(ctx
->Viewport
.Near
);
5985 params
[1] = FLOAT_TO_INT64(ctx
->Viewport
.Far
);
5987 case GL_DEPTH_SCALE
:
5988 params
[0] = IROUND64(ctx
->Pixel
.DepthScale
);
5991 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.Test
);
5993 case GL_DEPTH_WRITEMASK
:
5994 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.Mask
);
5997 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.DitherFlag
);
5999 case GL_DOUBLEBUFFER
:
6000 params
[0] = BOOLEAN_TO_INT64(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
6002 case GL_DRAW_BUFFER
:
6003 params
[0] = ENUM_TO_INT64(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
6006 FLUSH_CURRENT(ctx
, 0);
6007 params
[0] = BOOLEAN_TO_INT64((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
6009 case GL_FEEDBACK_BUFFER_SIZE
:
6010 params
[0] = (GLint64
)(ctx
->Feedback
.BufferSize
);
6012 case GL_FEEDBACK_BUFFER_TYPE
:
6013 params
[0] = ENUM_TO_INT64(ctx
->Feedback
.Type
);
6016 params
[0] = BOOLEAN_TO_INT64(ctx
->Fog
.Enabled
);
6019 params
[0] = FLOAT_TO_INT64(ctx
->Fog
.Color
[0]);
6020 params
[1] = FLOAT_TO_INT64(ctx
->Fog
.Color
[1]);
6021 params
[2] = FLOAT_TO_INT64(ctx
->Fog
.Color
[2]);
6022 params
[3] = FLOAT_TO_INT64(ctx
->Fog
.Color
[3]);
6024 case GL_FOG_DENSITY
:
6025 params
[0] = IROUND64(ctx
->Fog
.Density
);
6028 params
[0] = IROUND64(ctx
->Fog
.End
);
6031 params
[0] = ENUM_TO_INT64(ctx
->Hint
.Fog
);
6034 params
[0] = IROUND64(ctx
->Fog
.Index
);
6037 params
[0] = ENUM_TO_INT64(ctx
->Fog
.Mode
);
6040 params
[0] = IROUND64(ctx
->Fog
.Start
);
6043 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.FrontFace
);
6046 params
[0] = IROUND64(ctx
->Pixel
.GreenBias
);
6049 if (ctx
->NewState
& _NEW_BUFFERS
)
6050 _mesa_update_state(ctx
);
6051 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.greenBits
);
6053 case GL_GREEN_SCALE
:
6054 params
[0] = IROUND64(ctx
->Pixel
.GreenScale
);
6057 if (ctx
->NewState
& _NEW_BUFFERS
)
6058 _mesa_update_state(ctx
);
6059 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.indexBits
);
6061 case GL_INDEX_CLEAR_VALUE
:
6062 params
[0] = (GLint64
)(ctx
->Color
.ClearIndex
);
6065 params
[0] = BOOLEAN_TO_INT64(GL_FALSE
);
6067 case GL_INDEX_OFFSET
:
6068 params
[0] = (GLint64
)(ctx
->Pixel
.IndexOffset
);
6070 case GL_INDEX_SHIFT
:
6071 params
[0] = (GLint64
)(ctx
->Pixel
.IndexShift
);
6073 case GL_INDEX_WRITEMASK
:
6074 params
[0] = (GLint64
)(ctx
->Color
.IndexMask
);
6077 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[0].Enabled
);
6080 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[1].Enabled
);
6083 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[2].Enabled
);
6086 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[3].Enabled
);
6089 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[4].Enabled
);
6092 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[5].Enabled
);
6095 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[6].Enabled
);
6098 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[7].Enabled
);
6101 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Enabled
);
6103 case GL_LIGHT_MODEL_AMBIENT
:
6104 params
[0] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[0]);
6105 params
[1] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[1]);
6106 params
[2] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[2]);
6107 params
[3] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[3]);
6109 case GL_LIGHT_MODEL_COLOR_CONTROL
:
6110 params
[0] = ENUM_TO_INT64(ctx
->Light
.Model
.ColorControl
);
6112 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
6113 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Model
.LocalViewer
);
6115 case GL_LIGHT_MODEL_TWO_SIDE
:
6116 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Model
.TwoSide
);
6118 case GL_LINE_SMOOTH
:
6119 params
[0] = BOOLEAN_TO_INT64(ctx
->Line
.SmoothFlag
);
6121 case GL_LINE_SMOOTH_HINT
:
6122 params
[0] = ENUM_TO_INT64(ctx
->Hint
.LineSmooth
);
6124 case GL_LINE_STIPPLE
:
6125 params
[0] = BOOLEAN_TO_INT64(ctx
->Line
.StippleFlag
);
6127 case GL_LINE_STIPPLE_PATTERN
:
6128 params
[0] = (GLint64
)(ctx
->Line
.StipplePattern
);
6130 case GL_LINE_STIPPLE_REPEAT
:
6131 params
[0] = (GLint64
)(ctx
->Line
.StippleFactor
);
6134 params
[0] = IROUND64(ctx
->Line
.Width
);
6136 case GL_LINE_WIDTH_GRANULARITY
:
6137 params
[0] = IROUND64(ctx
->Const
.LineWidthGranularity
);
6139 case GL_LINE_WIDTH_RANGE
:
6140 params
[0] = IROUND64(ctx
->Const
.MinLineWidthAA
);
6141 params
[1] = IROUND64(ctx
->Const
.MaxLineWidthAA
);
6143 case GL_ALIASED_LINE_WIDTH_RANGE
:
6144 params
[0] = IROUND64(ctx
->Const
.MinLineWidth
);
6145 params
[1] = IROUND64(ctx
->Const
.MaxLineWidth
);
6148 params
[0] = (GLint64
)(ctx
->List
.ListBase
);
6151 params
[0] = (GLint64
)((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
6156 if (!ctx
->CompileFlag
)
6158 else if (ctx
->ExecuteFlag
)
6159 mode
= GL_COMPILE_AND_EXECUTE
;
6162 params
[0] = ENUM_TO_INT64(mode
);
6165 case GL_INDEX_LOGIC_OP
:
6166 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.IndexLogicOpEnabled
);
6168 case GL_COLOR_LOGIC_OP
:
6169 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.ColorLogicOpEnabled
);
6171 case GL_LOGIC_OP_MODE
:
6172 params
[0] = ENUM_TO_INT64(ctx
->Color
.LogicOp
);
6174 case GL_MAP1_COLOR_4
:
6175 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Color4
);
6177 case GL_MAP1_GRID_DOMAIN
:
6178 params
[0] = IROUND64(ctx
->Eval
.MapGrid1u1
);
6179 params
[1] = IROUND64(ctx
->Eval
.MapGrid1u2
);
6181 case GL_MAP1_GRID_SEGMENTS
:
6182 params
[0] = (GLint64
)(ctx
->Eval
.MapGrid1un
);
6185 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Index
);
6187 case GL_MAP1_NORMAL
:
6188 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Normal
);
6190 case GL_MAP1_TEXTURE_COORD_1
:
6191 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord1
);
6193 case GL_MAP1_TEXTURE_COORD_2
:
6194 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord2
);
6196 case GL_MAP1_TEXTURE_COORD_3
:
6197 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord3
);
6199 case GL_MAP1_TEXTURE_COORD_4
:
6200 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord4
);
6202 case GL_MAP1_VERTEX_3
:
6203 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Vertex3
);
6205 case GL_MAP1_VERTEX_4
:
6206 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Vertex4
);
6208 case GL_MAP2_COLOR_4
:
6209 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Color4
);
6211 case GL_MAP2_GRID_DOMAIN
:
6212 params
[0] = IROUND64(ctx
->Eval
.MapGrid2u1
);
6213 params
[1] = IROUND64(ctx
->Eval
.MapGrid2u2
);
6214 params
[2] = IROUND64(ctx
->Eval
.MapGrid2v1
);
6215 params
[3] = IROUND64(ctx
->Eval
.MapGrid2v2
);
6217 case GL_MAP2_GRID_SEGMENTS
:
6218 params
[0] = (GLint64
)(ctx
->Eval
.MapGrid2un
);
6219 params
[1] = (GLint64
)(ctx
->Eval
.MapGrid2vn
);
6222 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Index
);
6224 case GL_MAP2_NORMAL
:
6225 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Normal
);
6227 case GL_MAP2_TEXTURE_COORD_1
:
6228 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord1
);
6230 case GL_MAP2_TEXTURE_COORD_2
:
6231 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord2
);
6233 case GL_MAP2_TEXTURE_COORD_3
:
6234 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord3
);
6236 case GL_MAP2_TEXTURE_COORD_4
:
6237 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord4
);
6239 case GL_MAP2_VERTEX_3
:
6240 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Vertex3
);
6242 case GL_MAP2_VERTEX_4
:
6243 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Vertex4
);
6246 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MapColorFlag
);
6248 case GL_MAP_STENCIL
:
6249 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MapStencilFlag
);
6251 case GL_MATRIX_MODE
:
6252 params
[0] = ENUM_TO_INT64(ctx
->Transform
.MatrixMode
);
6254 case GL_MAX_ATTRIB_STACK_DEPTH
:
6255 params
[0] = (GLint64
)(MAX_ATTRIB_STACK_DEPTH
);
6257 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
6258 params
[0] = (GLint64
)(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
6260 case GL_MAX_CLIP_PLANES
:
6261 params
[0] = (GLint64
)(ctx
->Const
.MaxClipPlanes
);
6263 case GL_MAX_ELEMENTS_VERTICES
:
6264 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayLockSize
);
6266 case GL_MAX_ELEMENTS_INDICES
:
6267 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayLockSize
);
6269 case GL_MAX_EVAL_ORDER
:
6270 params
[0] = (GLint64
)(MAX_EVAL_ORDER
);
6273 params
[0] = (GLint64
)(ctx
->Const
.MaxLights
);
6275 case GL_MAX_LIST_NESTING
:
6276 params
[0] = (GLint64
)(MAX_LIST_NESTING
);
6278 case GL_MAX_MODELVIEW_STACK_DEPTH
:
6279 params
[0] = (GLint64
)(MAX_MODELVIEW_STACK_DEPTH
);
6281 case GL_MAX_NAME_STACK_DEPTH
:
6282 params
[0] = (GLint64
)(MAX_NAME_STACK_DEPTH
);
6284 case GL_MAX_PIXEL_MAP_TABLE
:
6285 params
[0] = (GLint64
)(MAX_PIXEL_MAP_TABLE
);
6287 case GL_MAX_PROJECTION_STACK_DEPTH
:
6288 params
[0] = (GLint64
)(MAX_PROJECTION_STACK_DEPTH
);
6290 case GL_MAX_TEXTURE_SIZE
:
6291 params
[0] = (GLint64
)(1 << (ctx
->Const
.MaxTextureLevels
- 1));
6293 case GL_MAX_3D_TEXTURE_SIZE
:
6294 params
[0] = (GLint64
)(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
6296 case GL_MAX_TEXTURE_STACK_DEPTH
:
6297 params
[0] = (GLint64
)(MAX_TEXTURE_STACK_DEPTH
);
6299 case GL_MAX_VIEWPORT_DIMS
:
6300 params
[0] = (GLint64
)(ctx
->Const
.MaxViewportWidth
);
6301 params
[1] = (GLint64
)(ctx
->Const
.MaxViewportHeight
);
6303 case GL_MODELVIEW_MATRIX
:
6305 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
6306 params
[0] = IROUND64(matrix
[0]);
6307 params
[1] = IROUND64(matrix
[1]);
6308 params
[2] = IROUND64(matrix
[2]);
6309 params
[3] = IROUND64(matrix
[3]);
6310 params
[4] = IROUND64(matrix
[4]);
6311 params
[5] = IROUND64(matrix
[5]);
6312 params
[6] = IROUND64(matrix
[6]);
6313 params
[7] = IROUND64(matrix
[7]);
6314 params
[8] = IROUND64(matrix
[8]);
6315 params
[9] = IROUND64(matrix
[9]);
6316 params
[10] = IROUND64(matrix
[10]);
6317 params
[11] = IROUND64(matrix
[11]);
6318 params
[12] = IROUND64(matrix
[12]);
6319 params
[13] = IROUND64(matrix
[13]);
6320 params
[14] = IROUND64(matrix
[14]);
6321 params
[15] = IROUND64(matrix
[15]);
6324 case GL_MODELVIEW_STACK_DEPTH
:
6325 params
[0] = (GLint64
)(ctx
->ModelviewMatrixStack
.Depth
+ 1);
6327 case GL_NAME_STACK_DEPTH
:
6328 params
[0] = (GLint64
)(ctx
->Select
.NameStackDepth
);
6331 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.Normalize
);
6333 case GL_PACK_ALIGNMENT
:
6334 params
[0] = (GLint64
)(ctx
->Pack
.Alignment
);
6336 case GL_PACK_LSB_FIRST
:
6337 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.LsbFirst
);
6339 case GL_PACK_ROW_LENGTH
:
6340 params
[0] = (GLint64
)(ctx
->Pack
.RowLength
);
6342 case GL_PACK_SKIP_PIXELS
:
6343 params
[0] = (GLint64
)(ctx
->Pack
.SkipPixels
);
6345 case GL_PACK_SKIP_ROWS
:
6346 params
[0] = (GLint64
)(ctx
->Pack
.SkipRows
);
6348 case GL_PACK_SWAP_BYTES
:
6349 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.SwapBytes
);
6351 case GL_PACK_SKIP_IMAGES_EXT
:
6352 params
[0] = (GLint64
)(ctx
->Pack
.SkipImages
);
6354 case GL_PACK_IMAGE_HEIGHT_EXT
:
6355 params
[0] = (GLint64
)(ctx
->Pack
.ImageHeight
);
6357 case GL_PACK_INVERT_MESA
:
6358 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.Invert
);
6360 case GL_PERSPECTIVE_CORRECTION_HINT
:
6361 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PerspectiveCorrection
);
6363 case GL_PIXEL_MAP_A_TO_A_SIZE
:
6364 params
[0] = (GLint64
)(ctx
->PixelMaps
.AtoA
.Size
);
6366 case GL_PIXEL_MAP_B_TO_B_SIZE
:
6367 params
[0] = (GLint64
)(ctx
->PixelMaps
.BtoB
.Size
);
6369 case GL_PIXEL_MAP_G_TO_G_SIZE
:
6370 params
[0] = (GLint64
)(ctx
->PixelMaps
.GtoG
.Size
);
6372 case GL_PIXEL_MAP_I_TO_A_SIZE
:
6373 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoA
.Size
);
6375 case GL_PIXEL_MAP_I_TO_B_SIZE
:
6376 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoB
.Size
);
6378 case GL_PIXEL_MAP_I_TO_G_SIZE
:
6379 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoG
.Size
);
6381 case GL_PIXEL_MAP_I_TO_I_SIZE
:
6382 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoI
.Size
);
6384 case GL_PIXEL_MAP_I_TO_R_SIZE
:
6385 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoR
.Size
);
6387 case GL_PIXEL_MAP_R_TO_R_SIZE
:
6388 params
[0] = (GLint64
)(ctx
->PixelMaps
.RtoR
.Size
);
6390 case GL_PIXEL_MAP_S_TO_S_SIZE
:
6391 params
[0] = (GLint64
)(ctx
->PixelMaps
.StoS
.Size
);
6394 params
[0] = IROUND64(ctx
->Point
.Size
);
6396 case GL_POINT_SIZE_GRANULARITY
:
6397 params
[0] = IROUND64(ctx
->Const
.PointSizeGranularity
);
6399 case GL_POINT_SIZE_RANGE
:
6400 params
[0] = IROUND64(ctx
->Const
.MinPointSizeAA
);
6401 params
[1] = IROUND64(ctx
->Const
.MaxPointSizeAA
);
6403 case GL_ALIASED_POINT_SIZE_RANGE
:
6404 params
[0] = IROUND64(ctx
->Const
.MinPointSize
);
6405 params
[1] = IROUND64(ctx
->Const
.MaxPointSize
);
6407 case GL_POINT_SMOOTH
:
6408 params
[0] = BOOLEAN_TO_INT64(ctx
->Point
.SmoothFlag
);
6410 case GL_POINT_SMOOTH_HINT
:
6411 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PointSmooth
);
6413 case GL_POINT_SIZE_MIN_EXT
:
6414 params
[0] = IROUND64(ctx
->Point
.MinSize
);
6416 case GL_POINT_SIZE_MAX_EXT
:
6417 params
[0] = IROUND64(ctx
->Point
.MaxSize
);
6419 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
6420 params
[0] = IROUND64(ctx
->Point
.Threshold
);
6422 case GL_DISTANCE_ATTENUATION_EXT
:
6423 params
[0] = IROUND64(ctx
->Point
.Params
[0]);
6424 params
[1] = IROUND64(ctx
->Point
.Params
[1]);
6425 params
[2] = IROUND64(ctx
->Point
.Params
[2]);
6427 case GL_POLYGON_MODE
:
6428 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.FrontMode
);
6429 params
[1] = ENUM_TO_INT64(ctx
->Polygon
.BackMode
);
6431 case GL_POLYGON_OFFSET_BIAS_EXT
:
6432 params
[0] = IROUND64(ctx
->Polygon
.OffsetUnits
);
6434 case GL_POLYGON_OFFSET_FACTOR
:
6435 params
[0] = IROUND64(ctx
->Polygon
.OffsetFactor
);
6437 case GL_POLYGON_OFFSET_UNITS
:
6438 params
[0] = IROUND64(ctx
->Polygon
.OffsetUnits
);
6440 case GL_POLYGON_OFFSET_POINT
:
6441 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetPoint
);
6443 case GL_POLYGON_OFFSET_LINE
:
6444 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetLine
);
6446 case GL_POLYGON_OFFSET_FILL
:
6447 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetFill
);
6449 case GL_POLYGON_SMOOTH
:
6450 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.SmoothFlag
);
6452 case GL_POLYGON_SMOOTH_HINT
:
6453 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PolygonSmooth
);
6455 case GL_POLYGON_STIPPLE
:
6456 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.StippleFlag
);
6458 case GL_PROJECTION_MATRIX
:
6460 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
6461 params
[0] = IROUND64(matrix
[0]);
6462 params
[1] = IROUND64(matrix
[1]);
6463 params
[2] = IROUND64(matrix
[2]);
6464 params
[3] = IROUND64(matrix
[3]);
6465 params
[4] = IROUND64(matrix
[4]);
6466 params
[5] = IROUND64(matrix
[5]);
6467 params
[6] = IROUND64(matrix
[6]);
6468 params
[7] = IROUND64(matrix
[7]);
6469 params
[8] = IROUND64(matrix
[8]);
6470 params
[9] = IROUND64(matrix
[9]);
6471 params
[10] = IROUND64(matrix
[10]);
6472 params
[11] = IROUND64(matrix
[11]);
6473 params
[12] = IROUND64(matrix
[12]);
6474 params
[13] = IROUND64(matrix
[13]);
6475 params
[14] = IROUND64(matrix
[14]);
6476 params
[15] = IROUND64(matrix
[15]);
6479 case GL_PROJECTION_STACK_DEPTH
:
6480 params
[0] = (GLint64
)(ctx
->ProjectionMatrixStack
.Depth
+ 1);
6482 case GL_READ_BUFFER
:
6483 params
[0] = ENUM_TO_INT64(ctx
->ReadBuffer
->ColorReadBuffer
);
6486 params
[0] = IROUND64(ctx
->Pixel
.RedBias
);
6489 if (ctx
->NewState
& _NEW_BUFFERS
)
6490 _mesa_update_state(ctx
);
6491 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.redBits
);
6494 params
[0] = IROUND64(ctx
->Pixel
.RedScale
);
6496 case GL_RENDER_MODE
:
6497 params
[0] = ENUM_TO_INT64(ctx
->RenderMode
);
6499 case GL_RESCALE_NORMAL
:
6500 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.RescaleNormals
);
6503 params
[0] = BOOLEAN_TO_INT64(GL_TRUE
);
6505 case GL_SCISSOR_BOX
:
6506 params
[0] = (GLint64
)(ctx
->Scissor
.X
);
6507 params
[1] = (GLint64
)(ctx
->Scissor
.Y
);
6508 params
[2] = (GLint64
)(ctx
->Scissor
.Width
);
6509 params
[3] = (GLint64
)(ctx
->Scissor
.Height
);
6511 case GL_SCISSOR_TEST
:
6512 params
[0] = BOOLEAN_TO_INT64(ctx
->Scissor
.Enabled
);
6514 case GL_SELECTION_BUFFER_SIZE
:
6515 params
[0] = (GLint64
)(ctx
->Select
.BufferSize
);
6517 case GL_SHADE_MODEL
:
6518 params
[0] = ENUM_TO_INT64(ctx
->Light
.ShadeModel
);
6520 case GL_SHARED_TEXTURE_PALETTE_EXT
:
6521 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.SharedPalette
);
6523 case GL_STENCIL_BITS
:
6524 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.stencilBits
);
6526 case GL_STENCIL_CLEAR_VALUE
:
6527 params
[0] = (GLint64
)(ctx
->Stencil
.Clear
);
6529 case GL_STENCIL_FAIL
:
6530 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
6532 case GL_STENCIL_FUNC
:
6533 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
6535 case GL_STENCIL_PASS_DEPTH_FAIL
:
6536 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
6538 case GL_STENCIL_PASS_DEPTH_PASS
:
6539 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
6541 case GL_STENCIL_REF
:
6542 params
[0] = (GLint64
)(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
6544 case GL_STENCIL_TEST
:
6545 params
[0] = BOOLEAN_TO_INT64(ctx
->Stencil
.Enabled
);
6547 case GL_STENCIL_VALUE_MASK
:
6548 params
[0] = (GLint64
)(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
6550 case GL_STENCIL_WRITEMASK
:
6551 params
[0] = (GLint64
)(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
6554 params
[0] = BOOLEAN_TO_INT64(ctx
->DrawBuffer
->Visual
.stereoMode
);
6556 case GL_SUBPIXEL_BITS
:
6557 params
[0] = (GLint64
)(ctx
->Const
.SubPixelBits
);
6560 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D
));
6563 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D
));
6566 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D
));
6568 case GL_TEXTURE_1D_ARRAY_EXT
:
6569 CHECK_EXT1(MESA_texture_array
, "GetInteger64v");
6570 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
6572 case GL_TEXTURE_2D_ARRAY_EXT
:
6573 CHECK_EXT1(MESA_texture_array
, "GetInteger64v");
6574 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
6576 case GL_TEXTURE_BINDING_1D
:
6577 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
6579 case GL_TEXTURE_BINDING_2D
:
6580 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
6582 case GL_TEXTURE_BINDING_3D
:
6583 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
6585 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
6586 CHECK_EXT1(MESA_texture_array
, "GetInteger64v");
6587 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
6589 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
6590 CHECK_EXT1(MESA_texture_array
, "GetInteger64v");
6591 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
6593 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
6594 CHECK_EXT1(MESA_texture_array
, "GetInteger64v");
6595 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayTextureLayers
);
6597 case GL_TEXTURE_GEN_S
:
6598 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
6600 case GL_TEXTURE_GEN_T
:
6601 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
6603 case GL_TEXTURE_GEN_R
:
6604 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
6606 case GL_TEXTURE_GEN_Q
:
6607 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
6609 case GL_TEXTURE_MATRIX
:
6611 const GLfloat
*matrix
;
6612 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6613 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6614 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
6618 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
6619 params
[0] = IROUND64(matrix
[0]);
6620 params
[1] = IROUND64(matrix
[1]);
6621 params
[2] = IROUND64(matrix
[2]);
6622 params
[3] = IROUND64(matrix
[3]);
6623 params
[4] = IROUND64(matrix
[4]);
6624 params
[5] = IROUND64(matrix
[5]);
6625 params
[6] = IROUND64(matrix
[6]);
6626 params
[7] = IROUND64(matrix
[7]);
6627 params
[8] = IROUND64(matrix
[8]);
6628 params
[9] = IROUND64(matrix
[9]);
6629 params
[10] = IROUND64(matrix
[10]);
6630 params
[11] = IROUND64(matrix
[11]);
6631 params
[12] = IROUND64(matrix
[12]);
6632 params
[13] = IROUND64(matrix
[13]);
6633 params
[14] = IROUND64(matrix
[14]);
6634 params
[15] = IROUND64(matrix
[15]);
6637 case GL_TEXTURE_STACK_DEPTH
:
6639 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6640 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6641 _mesa_error(ctx
, GL_INVALID_OPERATION
,
6642 "glGet(texture stack depth, unit %u)", unit
);
6645 params
[0] = (GLint64
)(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
6648 case GL_UNPACK_ALIGNMENT
:
6649 params
[0] = (GLint64
)(ctx
->Unpack
.Alignment
);
6651 case GL_UNPACK_LSB_FIRST
:
6652 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.LsbFirst
);
6654 case GL_UNPACK_ROW_LENGTH
:
6655 params
[0] = (GLint64
)(ctx
->Unpack
.RowLength
);
6657 case GL_UNPACK_SKIP_PIXELS
:
6658 params
[0] = (GLint64
)(ctx
->Unpack
.SkipPixels
);
6660 case GL_UNPACK_SKIP_ROWS
:
6661 params
[0] = (GLint64
)(ctx
->Unpack
.SkipRows
);
6663 case GL_UNPACK_SWAP_BYTES
:
6664 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.SwapBytes
);
6666 case GL_UNPACK_SKIP_IMAGES_EXT
:
6667 params
[0] = (GLint64
)(ctx
->Unpack
.SkipImages
);
6669 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
6670 params
[0] = (GLint64
)(ctx
->Unpack
.ImageHeight
);
6672 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
6673 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.ClientStorage
);
6676 params
[0] = (GLint64
)(ctx
->Viewport
.X
);
6677 params
[1] = (GLint64
)(ctx
->Viewport
.Y
);
6678 params
[2] = (GLint64
)(ctx
->Viewport
.Width
);
6679 params
[3] = (GLint64
)(ctx
->Viewport
.Height
);
6682 params
[0] = IROUND64(ctx
->Pixel
.ZoomX
);
6685 params
[0] = IROUND64(ctx
->Pixel
.ZoomY
);
6687 case GL_VERTEX_ARRAY
:
6688 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
6690 case GL_VERTEX_ARRAY_SIZE
:
6691 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.Size
);
6693 case GL_VERTEX_ARRAY_TYPE
:
6694 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Vertex
.Type
);
6696 case GL_VERTEX_ARRAY_STRIDE
:
6697 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
6699 case GL_VERTEX_ARRAY_COUNT_EXT
:
6700 params
[0] = (GLint64
)(0);
6702 case GL_NORMAL_ARRAY
:
6703 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
6705 case GL_NORMAL_ARRAY_TYPE
:
6706 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Normal
.Type
);
6708 case GL_NORMAL_ARRAY_STRIDE
:
6709 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Normal
.Stride
);
6711 case GL_NORMAL_ARRAY_COUNT_EXT
:
6712 params
[0] = (GLint64
)(0);
6714 case GL_COLOR_ARRAY
:
6715 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Color
.Enabled
);
6717 case GL_COLOR_ARRAY_SIZE
:
6718 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.Size
);
6720 case GL_COLOR_ARRAY_TYPE
:
6721 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Color
.Type
);
6723 case GL_COLOR_ARRAY_STRIDE
:
6724 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.Stride
);
6726 case GL_COLOR_ARRAY_COUNT_EXT
:
6727 params
[0] = (GLint64
)(0);
6729 case GL_INDEX_ARRAY
:
6730 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Index
.Enabled
);
6732 case GL_INDEX_ARRAY_TYPE
:
6733 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Index
.Type
);
6735 case GL_INDEX_ARRAY_STRIDE
:
6736 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Index
.Stride
);
6738 case GL_INDEX_ARRAY_COUNT_EXT
:
6739 params
[0] = (GLint64
)(0);
6741 case GL_TEXTURE_COORD_ARRAY
:
6742 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
6744 case GL_TEXTURE_COORD_ARRAY_SIZE
:
6745 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
6747 case GL_TEXTURE_COORD_ARRAY_TYPE
:
6748 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
6750 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
6751 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
6753 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
6754 params
[0] = (GLint64
)(0);
6756 case GL_EDGE_FLAG_ARRAY
:
6757 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
6759 case GL_EDGE_FLAG_ARRAY_STRIDE
:
6760 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
6762 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
6763 params
[0] = (GLint64
)(0);
6765 case GL_MAX_TEXTURE_UNITS_ARB
:
6766 CHECK_EXT1(ARB_multitexture
, "GetInteger64v");
6767 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureUnits
);
6769 case GL_ACTIVE_TEXTURE_ARB
:
6770 CHECK_EXT1(ARB_multitexture
, "GetInteger64v");
6771 params
[0] = (GLint64
)(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
6773 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
6774 CHECK_EXT1(ARB_multitexture
, "GetInteger64v");
6775 params
[0] = (GLint64
)(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
6777 case GL_TEXTURE_CUBE_MAP_ARB
:
6778 CHECK_EXT1(ARB_texture_cube_map
, "GetInteger64v");
6779 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
6781 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
6782 CHECK_EXT1(ARB_texture_cube_map
, "GetInteger64v");
6783 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
6785 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
6786 CHECK_EXT1(ARB_texture_cube_map
, "GetInteger64v");
6787 params
[0] = (GLint64
)((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
6789 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
6790 params
[0] = (GLint64
)(ctx
->Hint
.TextureCompression
);
6792 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
6793 params
[0] = (GLint64
)(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
6795 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
6798 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
6800 for (i
= 0; i
< n
; i
++)
6801 params
[i
] = ENUM_TO_INT64(formats
[i
]);
6804 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
6805 CHECK_EXT1(EXT_compiled_vertex_array
, "GetInteger64v");
6806 params
[0] = (GLint64
)(ctx
->Array
.LockFirst
);
6808 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
6809 CHECK_EXT1(EXT_compiled_vertex_array
, "GetInteger64v");
6810 params
[0] = (GLint64
)(ctx
->Array
.LockCount
);
6812 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
6814 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
6815 params
[0] = IROUND64(matrix
[0]);
6816 params
[1] = IROUND64(matrix
[4]);
6817 params
[2] = IROUND64(matrix
[8]);
6818 params
[3] = IROUND64(matrix
[12]);
6819 params
[4] = IROUND64(matrix
[1]);
6820 params
[5] = IROUND64(matrix
[5]);
6821 params
[6] = IROUND64(matrix
[9]);
6822 params
[7] = IROUND64(matrix
[13]);
6823 params
[8] = IROUND64(matrix
[2]);
6824 params
[9] = IROUND64(matrix
[6]);
6825 params
[10] = IROUND64(matrix
[10]);
6826 params
[11] = IROUND64(matrix
[14]);
6827 params
[12] = IROUND64(matrix
[3]);
6828 params
[13] = IROUND64(matrix
[7]);
6829 params
[14] = IROUND64(matrix
[11]);
6830 params
[15] = IROUND64(matrix
[15]);
6833 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
6835 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
6836 params
[0] = IROUND64(matrix
[0]);
6837 params
[1] = IROUND64(matrix
[4]);
6838 params
[2] = IROUND64(matrix
[8]);
6839 params
[3] = IROUND64(matrix
[12]);
6840 params
[4] = IROUND64(matrix
[1]);
6841 params
[5] = IROUND64(matrix
[5]);
6842 params
[6] = IROUND64(matrix
[9]);
6843 params
[7] = IROUND64(matrix
[13]);
6844 params
[8] = IROUND64(matrix
[2]);
6845 params
[9] = IROUND64(matrix
[6]);
6846 params
[10] = IROUND64(matrix
[10]);
6847 params
[11] = IROUND64(matrix
[14]);
6848 params
[12] = IROUND64(matrix
[3]);
6849 params
[13] = IROUND64(matrix
[7]);
6850 params
[14] = IROUND64(matrix
[11]);
6851 params
[15] = IROUND64(matrix
[15]);
6854 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
6856 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
6857 params
[0] = IROUND64(matrix
[0]);
6858 params
[1] = IROUND64(matrix
[4]);
6859 params
[2] = IROUND64(matrix
[8]);
6860 params
[3] = IROUND64(matrix
[12]);
6861 params
[4] = IROUND64(matrix
[1]);
6862 params
[5] = IROUND64(matrix
[5]);
6863 params
[6] = IROUND64(matrix
[9]);
6864 params
[7] = IROUND64(matrix
[13]);
6865 params
[8] = IROUND64(matrix
[2]);
6866 params
[9] = IROUND64(matrix
[6]);
6867 params
[10] = IROUND64(matrix
[10]);
6868 params
[11] = IROUND64(matrix
[14]);
6869 params
[12] = IROUND64(matrix
[3]);
6870 params
[13] = IROUND64(matrix
[7]);
6871 params
[14] = IROUND64(matrix
[11]);
6872 params
[15] = IROUND64(matrix
[15]);
6875 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
6877 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
6878 params
[0] = IROUND64(matrix
[0]);
6879 params
[1] = IROUND64(matrix
[4]);
6880 params
[2] = IROUND64(matrix
[8]);
6881 params
[3] = IROUND64(matrix
[12]);
6882 params
[4] = IROUND64(matrix
[1]);
6883 params
[5] = IROUND64(matrix
[5]);
6884 params
[6] = IROUND64(matrix
[9]);
6885 params
[7] = IROUND64(matrix
[13]);
6886 params
[8] = IROUND64(matrix
[2]);
6887 params
[9] = IROUND64(matrix
[6]);
6888 params
[10] = IROUND64(matrix
[10]);
6889 params
[11] = IROUND64(matrix
[14]);
6890 params
[12] = IROUND64(matrix
[3]);
6891 params
[13] = IROUND64(matrix
[7]);
6892 params
[14] = IROUND64(matrix
[11]);
6893 params
[15] = IROUND64(matrix
[15]);
6896 case GL_COLOR_MATRIX_SGI
:
6898 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
6899 params
[0] = IROUND64(matrix
[0]);
6900 params
[1] = IROUND64(matrix
[1]);
6901 params
[2] = IROUND64(matrix
[2]);
6902 params
[3] = IROUND64(matrix
[3]);
6903 params
[4] = IROUND64(matrix
[4]);
6904 params
[5] = IROUND64(matrix
[5]);
6905 params
[6] = IROUND64(matrix
[6]);
6906 params
[7] = IROUND64(matrix
[7]);
6907 params
[8] = IROUND64(matrix
[8]);
6908 params
[9] = IROUND64(matrix
[9]);
6909 params
[10] = IROUND64(matrix
[10]);
6910 params
[11] = IROUND64(matrix
[11]);
6911 params
[12] = IROUND64(matrix
[12]);
6912 params
[13] = IROUND64(matrix
[13]);
6913 params
[14] = IROUND64(matrix
[14]);
6914 params
[15] = IROUND64(matrix
[15]);
6917 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
6918 params
[0] = (GLint64
)(ctx
->ColorMatrixStack
.Depth
+ 1);
6920 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
6921 params
[0] = (GLint64
)(MAX_COLOR_STACK_DEPTH
);
6923 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
6924 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[0]);
6926 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
6927 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[1]);
6929 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
6930 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[2]);
6932 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
6933 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[3]);
6935 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
6936 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[0]);
6938 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
6939 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[1]);
6941 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
6942 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[2]);
6944 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
6945 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[3]);
6947 case GL_CONVOLUTION_1D_EXT
:
6948 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6949 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Convolution1DEnabled
);
6951 case GL_CONVOLUTION_2D_EXT
:
6952 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6953 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Convolution2DEnabled
);
6955 case GL_SEPARABLE_2D_EXT
:
6956 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6957 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Separable2DEnabled
);
6959 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
6960 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6961 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[0]);
6963 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
6964 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6965 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[1]);
6967 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
6968 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6969 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[2]);
6971 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
6972 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6973 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[3]);
6975 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
6976 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6977 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[0]);
6979 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
6980 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6981 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[1]);
6983 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
6984 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6985 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[2]);
6987 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
6988 CHECK_EXT1(EXT_convolution
, "GetInteger64v");
6989 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[3]);
6992 CHECK_EXT1(EXT_histogram
, "GetInteger64v");
6993 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.HistogramEnabled
);
6996 CHECK_EXT1(EXT_histogram
, "GetInteger64v");
6997 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MinMaxEnabled
);
6999 case GL_COLOR_TABLE_SGI
:
7000 CHECK_EXT1(SGI_color_table
, "GetInteger64v");
7001 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
7003 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
7004 CHECK_EXT1(SGI_color_table
, "GetInteger64v");
7005 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
7007 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
7008 CHECK_EXT1(SGI_color_table
, "GetInteger64v");
7009 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
7011 case GL_TEXTURE_COLOR_TABLE_SGI
:
7012 CHECK_EXT1(SGI_texture_color_table
, "GetInteger64v");
7013 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
7015 case GL_COLOR_SUM_EXT
:
7016 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
, "GetInteger64v");
7017 params
[0] = BOOLEAN_TO_INT64(ctx
->Fog
.ColorSumEnabled
);
7019 case GL_CURRENT_SECONDARY_COLOR_EXT
:
7020 CHECK_EXT1(EXT_secondary_color
, "GetInteger64v");
7021 FLUSH_CURRENT(ctx
, 0);
7022 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
7023 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
7024 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
7025 params
[3] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
7027 case GL_SECONDARY_COLOR_ARRAY_EXT
:
7028 CHECK_EXT1(EXT_secondary_color
, "GetInteger64v");
7029 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
7031 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
7032 CHECK_EXT1(EXT_secondary_color
, "GetInteger64v");
7033 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
7035 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
7036 CHECK_EXT1(EXT_secondary_color
, "GetInteger64v");
7037 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
7039 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
7040 CHECK_EXT1(EXT_secondary_color
, "GetInteger64v");
7041 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
7043 case GL_CURRENT_FOG_COORDINATE_EXT
:
7044 CHECK_EXT1(EXT_fog_coord
, "GetInteger64v");
7045 FLUSH_CURRENT(ctx
, 0);
7046 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
7048 case GL_FOG_COORDINATE_ARRAY_EXT
:
7049 CHECK_EXT1(EXT_fog_coord
, "GetInteger64v");
7050 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
7052 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
7053 CHECK_EXT1(EXT_fog_coord
, "GetInteger64v");
7054 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
7056 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
7057 CHECK_EXT1(EXT_fog_coord
, "GetInteger64v");
7058 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
7060 case GL_FOG_COORDINATE_SOURCE_EXT
:
7061 CHECK_EXT1(EXT_fog_coord
, "GetInteger64v");
7062 params
[0] = ENUM_TO_INT64(ctx
->Fog
.FogCoordinateSource
);
7064 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
7065 CHECK_EXT1(EXT_texture_lod_bias
, "GetInteger64v");
7066 params
[0] = IROUND64(ctx
->Const
.MaxTextureLodBias
);
7068 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
7069 CHECK_EXT1(EXT_texture_filter_anisotropic
, "GetInteger64v");
7070 params
[0] = IROUND64(ctx
->Const
.MaxTextureMaxAnisotropy
);
7072 case GL_MULTISAMPLE_ARB
:
7073 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.Enabled
);
7075 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
7076 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleAlphaToCoverage
);
7078 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
7079 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleAlphaToOne
);
7081 case GL_SAMPLE_COVERAGE_ARB
:
7082 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleCoverage
);
7084 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
7085 params
[0] = IROUND64(ctx
->Multisample
.SampleCoverageValue
);
7087 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
7088 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleCoverageInvert
);
7090 case GL_SAMPLE_BUFFERS_ARB
:
7091 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
7093 case GL_SAMPLES_ARB
:
7094 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.samples
);
7096 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
7097 CHECK_EXT1(IBM_rasterpos_clip
, "GetInteger64v");
7098 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.RasterPositionUnclipped
);
7100 case GL_POINT_SPRITE_NV
:
7101 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
, "GetInteger64v");
7102 params
[0] = BOOLEAN_TO_INT64(ctx
->Point
.PointSprite
);
7104 case GL_POINT_SPRITE_R_MODE_NV
:
7105 CHECK_EXT1(NV_point_sprite
, "GetInteger64v");
7106 params
[0] = ENUM_TO_INT64(ctx
->Point
.SpriteRMode
);
7108 case GL_POINT_SPRITE_COORD_ORIGIN
:
7109 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
, "GetInteger64v");
7110 params
[0] = ENUM_TO_INT64(ctx
->Point
.SpriteOrigin
);
7112 case GL_GENERATE_MIPMAP_HINT_SGIS
:
7113 CHECK_EXT1(SGIS_generate_mipmap
, "GetInteger64v");
7114 params
[0] = ENUM_TO_INT64(ctx
->Hint
.GenerateMipmap
);
7116 case GL_VERTEX_PROGRAM_BINDING_NV
:
7117 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7118 params
[0] = (GLint64
)((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
7120 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
7121 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7122 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
7124 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
7125 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7126 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
7128 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
7129 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7130 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
7132 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
7133 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7134 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
7136 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
7137 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7138 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
7140 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
7141 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7142 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
7144 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
7145 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7146 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
7148 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
7149 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7150 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
7152 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
7153 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7154 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
7156 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
7157 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7158 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
7160 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
7161 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7162 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
7164 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
7165 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7166 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
7168 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
7169 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7170 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
7172 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
7173 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7174 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
7176 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
7177 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7178 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
7180 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
7181 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7182 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
7184 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
7185 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7186 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[0]);
7188 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
7189 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7190 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[1]);
7192 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
7193 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7194 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[2]);
7196 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
7197 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7198 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[3]);
7200 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
7201 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7202 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[4]);
7204 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
7205 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7206 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[5]);
7208 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
7209 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7210 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[6]);
7212 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
7213 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7214 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[7]);
7216 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
7217 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7218 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[8]);
7220 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
7221 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7222 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[9]);
7224 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
7225 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7226 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[10]);
7228 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
7229 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7230 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[11]);
7232 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
7233 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7234 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[12]);
7236 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
7237 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7238 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[13]);
7240 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
7241 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7242 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[14]);
7244 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
7245 CHECK_EXT1(NV_vertex_program
, "GetInteger64v");
7246 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[15]);
7248 case GL_FRAGMENT_PROGRAM_NV
:
7249 CHECK_EXT1(NV_fragment_program
, "GetInteger64v");
7250 params
[0] = BOOLEAN_TO_INT64(ctx
->FragmentProgram
.Enabled
);
7252 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
7253 CHECK_EXT1(NV_fragment_program
, "GetInteger64v");
7254 params
[0] = (GLint64
)(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
7256 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
7257 CHECK_EXT1(NV_fragment_program
, "GetInteger64v");
7258 params
[0] = (GLint64
)(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
7260 case GL_TEXTURE_RECTANGLE_NV
:
7261 CHECK_EXT1(NV_texture_rectangle
, "GetInteger64v");
7262 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
7264 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
7265 CHECK_EXT1(NV_texture_rectangle
, "GetInteger64v");
7266 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
7268 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
7269 CHECK_EXT1(NV_texture_rectangle
, "GetInteger64v");
7270 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureRectSize
);
7272 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
7273 CHECK_EXT1(EXT_stencil_two_side
, "GetInteger64v");
7274 params
[0] = BOOLEAN_TO_INT64(ctx
->Stencil
.TestTwoSide
);
7276 case GL_ACTIVE_STENCIL_FACE_EXT
:
7277 CHECK_EXT1(EXT_stencil_two_side
, "GetInteger64v");
7278 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
7280 case GL_MAX_SHININESS_NV
:
7281 CHECK_EXT1(NV_light_max_exponent
, "GetInteger64v");
7282 params
[0] = IROUND64(ctx
->Const
.MaxShininess
);
7284 case GL_MAX_SPOT_EXPONENT_NV
:
7285 CHECK_EXT1(NV_light_max_exponent
, "GetInteger64v");
7286 params
[0] = IROUND64(ctx
->Const
.MaxSpotExponent
);
7288 case GL_ARRAY_BUFFER_BINDING_ARB
:
7289 params
[0] = (GLint64
)(ctx
->Array
.ArrayBufferObj
->Name
);
7291 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
7292 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
7294 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
7295 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
7297 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
7298 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
7300 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
7301 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
7303 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
7304 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
7306 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
7307 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
7309 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
7310 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
7312 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
7313 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
7315 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
7316 params
[0] = (GLint64
)(ctx
->Array
.ElementArrayBufferObj
->Name
);
7318 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
7319 CHECK_EXT1(EXT_pixel_buffer_object
, "GetInteger64v");
7320 params
[0] = (GLint64
)(ctx
->Pack
.BufferObj
->Name
);
7322 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
7323 CHECK_EXT1(EXT_pixel_buffer_object
, "GetInteger64v");
7324 params
[0] = (GLint64
)(ctx
->Unpack
.BufferObj
->Name
);
7326 case GL_VERTEX_PROGRAM_ARB
:
7327 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetInteger64v");
7328 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.Enabled
);
7330 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
7331 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetInteger64v");
7332 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.PointSizeEnabled
);
7334 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
7335 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
, "GetInteger64v");
7336 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.TwoSideEnabled
);
7338 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
7339 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetInteger64v");
7340 params
[0] = (GLint64
)(ctx
->Const
.MaxProgramMatrixStackDepth
);
7342 case GL_MAX_PROGRAM_MATRICES_ARB
:
7343 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetInteger64v");
7344 params
[0] = (GLint64
)(ctx
->Const
.MaxProgramMatrices
);
7346 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
7347 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
, "GetInteger64v");
7348 params
[0] = BOOLEAN_TO_INT64(ctx
->CurrentStack
->Depth
+ 1);
7350 case GL_CURRENT_MATRIX_ARB
:
7351 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
, "GetInteger64v");
7353 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
7354 params
[0] = IROUND64(matrix
[0]);
7355 params
[1] = IROUND64(matrix
[1]);
7356 params
[2] = IROUND64(matrix
[2]);
7357 params
[3] = IROUND64(matrix
[3]);
7358 params
[4] = IROUND64(matrix
[4]);
7359 params
[5] = IROUND64(matrix
[5]);
7360 params
[6] = IROUND64(matrix
[6]);
7361 params
[7] = IROUND64(matrix
[7]);
7362 params
[8] = IROUND64(matrix
[8]);
7363 params
[9] = IROUND64(matrix
[9]);
7364 params
[10] = IROUND64(matrix
[10]);
7365 params
[11] = IROUND64(matrix
[11]);
7366 params
[12] = IROUND64(matrix
[12]);
7367 params
[13] = IROUND64(matrix
[13]);
7368 params
[14] = IROUND64(matrix
[14]);
7369 params
[15] = IROUND64(matrix
[15]);
7372 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
7373 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
, "GetInteger64v");
7375 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
7376 params
[0] = IROUND64(matrix
[0]);
7377 params
[1] = IROUND64(matrix
[4]);
7378 params
[2] = IROUND64(matrix
[8]);
7379 params
[3] = IROUND64(matrix
[12]);
7380 params
[4] = IROUND64(matrix
[1]);
7381 params
[5] = IROUND64(matrix
[5]);
7382 params
[6] = IROUND64(matrix
[9]);
7383 params
[7] = IROUND64(matrix
[13]);
7384 params
[8] = IROUND64(matrix
[2]);
7385 params
[9] = IROUND64(matrix
[6]);
7386 params
[10] = IROUND64(matrix
[10]);
7387 params
[11] = IROUND64(matrix
[14]);
7388 params
[12] = IROUND64(matrix
[3]);
7389 params
[13] = IROUND64(matrix
[7]);
7390 params
[14] = IROUND64(matrix
[11]);
7391 params
[15] = IROUND64(matrix
[15]);
7394 case GL_MAX_VERTEX_ATTRIBS_ARB
:
7395 CHECK_EXT1(ARB_vertex_program
, "GetInteger64v");
7396 params
[0] = (GLint64
)(ctx
->Const
.VertexProgram
.MaxAttribs
);
7398 case GL_PROGRAM_ERROR_POSITION_ARB
:
7399 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
, "GetInteger64v");
7400 params
[0] = (GLint64
)(ctx
->Program
.ErrorPos
);
7402 case GL_FRAGMENT_PROGRAM_ARB
:
7403 CHECK_EXT1(ARB_fragment_program
, "GetInteger64v");
7404 params
[0] = BOOLEAN_TO_INT64(ctx
->FragmentProgram
.Enabled
);
7406 case GL_MAX_TEXTURE_COORDS_ARB
:
7407 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
, "GetInteger64v");
7408 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureCoordUnits
);
7410 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
7411 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
, "GetInteger64v");
7412 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureImageUnits
);
7414 case GL_DEPTH_BOUNDS_TEST_EXT
:
7415 CHECK_EXT1(EXT_depth_bounds_test
, "GetInteger64v");
7416 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.BoundsTest
);
7418 case GL_DEPTH_BOUNDS_EXT
:
7419 CHECK_EXT1(EXT_depth_bounds_test
, "GetInteger64v");
7420 params
[0] = IROUND64(ctx
->Depth
.BoundsMin
);
7421 params
[1] = IROUND64(ctx
->Depth
.BoundsMax
);
7423 case GL_DEPTH_CLAMP
:
7424 CHECK_EXT1(ARB_depth_clamp
, "GetInteger64v");
7425 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.DepthClamp
);
7427 case GL_MAX_DRAW_BUFFERS_ARB
:
7428 params
[0] = (GLint64
)(ctx
->Const
.MaxDrawBuffers
);
7430 case GL_DRAW_BUFFER0_ARB
:
7431 params
[0] = ENUM_TO_INT64(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
7433 case GL_DRAW_BUFFER1_ARB
:
7436 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7437 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7440 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
7441 params
[0] = ENUM_TO_INT64(buffer
);
7444 case GL_DRAW_BUFFER2_ARB
:
7447 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7448 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7451 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
7452 params
[0] = ENUM_TO_INT64(buffer
);
7455 case GL_DRAW_BUFFER3_ARB
:
7458 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7459 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7462 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
7463 params
[0] = ENUM_TO_INT64(buffer
);
7466 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
7467 CHECK_EXT1(OES_read_format
, "GetInteger64v");
7468 params
[0] = (GLint64
)(_mesa_get_color_read_type(ctx
));
7470 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
7471 CHECK_EXT1(OES_read_format
, "GetInteger64v");
7472 params
[0] = (GLint64
)(_mesa_get_color_read_format(ctx
));
7474 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
7475 CHECK_EXT1(ATI_fragment_shader
, "GetInteger64v");
7476 params
[0] = (GLint64
)(6);
7478 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
7479 CHECK_EXT1(ATI_fragment_shader
, "GetInteger64v");
7480 params
[0] = (GLint64
)(8);
7482 case GL_NUM_PASSES_ATI
:
7483 CHECK_EXT1(ATI_fragment_shader
, "GetInteger64v");
7484 params
[0] = (GLint64
)(2);
7486 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
7487 CHECK_EXT1(ATI_fragment_shader
, "GetInteger64v");
7488 params
[0] = (GLint64
)(8);
7490 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
7491 CHECK_EXT1(ATI_fragment_shader
, "GetInteger64v");
7492 params
[0] = (GLint64
)(16);
7494 case GL_COLOR_ALPHA_PAIRING_ATI
:
7495 CHECK_EXT1(ATI_fragment_shader
, "GetInteger64v");
7496 params
[0] = BOOLEAN_TO_INT64(GL_TRUE
);
7498 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
7499 CHECK_EXT1(ATI_fragment_shader
, "GetInteger64v");
7500 params
[0] = (GLint64
)(3);
7502 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
7503 CHECK_EXT1(ATI_fragment_shader
, "GetInteger64v");
7504 params
[0] = (GLint64
)(3);
7506 case GL_STENCIL_BACK_FUNC
:
7507 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.Function
[1]);
7509 case GL_STENCIL_BACK_VALUE_MASK
:
7510 params
[0] = (GLint64
)(ctx
->Stencil
.ValueMask
[1]);
7512 case GL_STENCIL_BACK_WRITEMASK
:
7513 params
[0] = (GLint64
)(ctx
->Stencil
.WriteMask
[1]);
7515 case GL_STENCIL_BACK_REF
:
7516 params
[0] = (GLint64
)(ctx
->Stencil
.Ref
[1]);
7518 case GL_STENCIL_BACK_FAIL
:
7519 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.FailFunc
[1]);
7521 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
7522 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZFailFunc
[1]);
7524 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
7525 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZPassFunc
[1]);
7527 case GL_FRAMEBUFFER_BINDING_EXT
:
7528 CHECK_EXT1(EXT_framebuffer_object
, "GetInteger64v");
7529 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Name
);
7531 case GL_RENDERBUFFER_BINDING_EXT
:
7532 CHECK_EXT1(EXT_framebuffer_object
, "GetInteger64v");
7533 params
[0] = (GLint64
)(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
7535 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
7536 CHECK_EXT1(EXT_framebuffer_object
, "GetInteger64v");
7537 params
[0] = (GLint64
)(ctx
->Const
.MaxColorAttachments
);
7539 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
7540 CHECK_EXT1(EXT_framebuffer_object
, "GetInteger64v");
7541 params
[0] = (GLint64
)(ctx
->Const
.MaxRenderbufferSize
);
7543 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
7544 CHECK_EXT1(EXT_framebuffer_blit
, "GetInteger64v");
7545 params
[0] = (GLint64
)(ctx
->ReadBuffer
->Name
);
7547 case GL_PROVOKING_VERTEX_EXT
:
7548 CHECK_EXT1(EXT_provoking_vertex
, "GetInteger64v");
7549 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.ProvokingVertex
);
7551 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
7552 CHECK_EXT1(EXT_provoking_vertex
, "GetInteger64v");
7553 params
[0] = BOOLEAN_TO_INT64(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
7555 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
7556 CHECK_EXT1(ARB_fragment_shader
, "GetInteger64v");
7557 params
[0] = (GLint64
)(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
7559 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
7560 CHECK_EXT1(ARB_fragment_shader
, "GetInteger64v");
7561 params
[0] = ENUM_TO_INT64(ctx
->Hint
.FragmentShaderDerivative
);
7563 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
7564 CHECK_EXT1(ARB_vertex_shader
, "GetInteger64v");
7565 params
[0] = (GLint64
)(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
7567 case GL_MAX_VARYING_FLOATS_ARB
:
7568 CHECK_EXT1(ARB_vertex_shader
, "GetInteger64v");
7569 params
[0] = (GLint64
)(ctx
->Const
.MaxVarying
* 4);
7571 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
7572 CHECK_EXT1(ARB_vertex_shader
, "GetInteger64v");
7573 params
[0] = (GLint64
)(ctx
->Const
.MaxVertexTextureImageUnits
);
7575 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
7576 CHECK_EXT1(ARB_vertex_shader
, "GetInteger64v");
7577 params
[0] = (GLint64
)(ctx
->Const
.MaxCombinedTextureImageUnits
);
7579 case GL_CURRENT_PROGRAM
:
7580 CHECK_EXT1(ARB_shader_objects
, "GetInteger64v");
7581 params
[0] = (GLint64
)(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
7583 case GL_MAX_SAMPLES
:
7584 CHECK_EXT1(ARB_framebuffer_object
, "GetInteger64v");
7585 params
[0] = (GLint64
)(ctx
->Const
.MaxSamples
);
7587 case GL_VERTEX_ARRAY_BINDING_APPLE
:
7588 CHECK_EXT1(APPLE_vertex_array_object
, "GetInteger64v");
7589 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Name
);
7591 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
7592 CHECK_EXT1(ARB_seamless_cube_map
, "GetInteger64v");
7593 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.CubeMapSeamless
);
7595 case GL_MAX_SERVER_WAIT_TIMEOUT
:
7596 CHECK_EXT1(ARB_sync
, "GetInteger64v");
7597 params
[0] = ctx
->Const
.MaxServerWaitTimeout
;
7599 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7600 CHECK_EXT1(EXT_transform_feedback
, "GetInteger64v");
7601 params
[0] = (GLint64
)(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
7603 case GL_RASTERIZER_DISCARD
:
7604 CHECK_EXT1(EXT_transform_feedback
, "GetInteger64v");
7605 params
[0] = BOOLEAN_TO_INT64(ctx
->TransformFeedback
.RasterDiscard
);
7607 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
7608 CHECK_EXT1(EXT_transform_feedback
, "GetInteger64v");
7609 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
7611 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
7612 CHECK_EXT1(EXT_transform_feedback
, "GetInteger64v");
7613 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
7615 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
7616 CHECK_EXT1(EXT_transform_feedback
, "GetInteger64v");
7617 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
7619 case GL_NUM_EXTENSIONS
:
7620 params
[0] = (GLint64
)(_mesa_get_extension_count(ctx
));
7622 case GL_MAJOR_VERSION
:
7623 params
[0] = (GLint64
)(ctx
->VersionMajor
);
7625 case GL_MINOR_VERSION
:
7626 params
[0] = (GLint64
)(ctx
->VersionMinor
);
7628 case GL_CONTEXT_FLAGS
:
7629 params
[0] = (GLint64
)(ctx
->Const
.ContextFlags
);
7632 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetInteger64v(pname=0x%x)", pname
);
7635 #endif /* FEATURE_ARB_sync */
7639 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
7641 const GLfloat magic
= -1234.5F
;
7648 /* Init temp array to magic numbers so we can figure out how many values
7649 * are returned by the GetFloatv() call.
7651 for (i
= 0; i
< 16; i
++)
7654 _mesa_GetFloatv(pname
, values
);
7656 for (i
= 0; i
< 16 && values
[i
] != magic
; i
++)
7657 params
[i
] = (GLdouble
) values
[i
];
7661 _mesa_GetBooleanIndexedv( GLenum pname
, GLuint index
, GLboolean
*params
)
7663 GET_CURRENT_CONTEXT(ctx
);
7664 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7671 CHECK_EXT1(EXT_draw_buffers2
, "GetBooleanIndexedv");
7672 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7673 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7676 params
[0] = INT_TO_BOOLEAN(((ctx
->Color
.BlendEnabled
>> index
) & 1));
7678 case GL_COLOR_WRITEMASK
:
7679 CHECK_EXT1(EXT_draw_buffers2
, "GetBooleanIndexedv");
7680 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7681 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7684 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0);
7685 params
[1] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0);
7686 params
[2] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0);
7687 params
[3] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0);
7689 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7690 CHECK_EXT1(EXT_transform_feedback
, "GetBooleanIndexedv");
7691 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7692 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7695 params
[0] = INT64_TO_BOOLEAN(ctx
->TransformFeedback
.Offset
[index
]);
7697 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7698 CHECK_EXT1(EXT_transform_feedback
, "GetBooleanIndexedv");
7699 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7700 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7703 params
[0] = INT64_TO_BOOLEAN(ctx
->TransformFeedback
.Size
[index
]);
7705 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7706 CHECK_EXT1(EXT_transform_feedback
, "GetBooleanIndexedv");
7707 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7708 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7711 params
[0] = INT_TO_BOOLEAN(ctx
->TransformFeedback
.Buffers
[index
]->Name
);
7714 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanIndexedv(pname=0x%x)", pname
);
7719 _mesa_GetIntegerIndexedv( GLenum pname
, GLuint index
, GLint
*params
)
7721 GET_CURRENT_CONTEXT(ctx
);
7722 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7729 CHECK_EXT1(EXT_draw_buffers2
, "GetIntegerIndexedv");
7730 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7731 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7734 params
[0] = ((ctx
->Color
.BlendEnabled
>> index
) & 1);
7736 case GL_COLOR_WRITEMASK
:
7737 CHECK_EXT1(EXT_draw_buffers2
, "GetIntegerIndexedv");
7738 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7739 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7742 params
[0] = ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0;
7743 params
[1] = ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0;
7744 params
[2] = ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0;
7745 params
[3] = ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0;
7747 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7748 CHECK_EXT1(EXT_transform_feedback
, "GetIntegerIndexedv");
7749 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7750 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7753 params
[0] = INT64_TO_INT(ctx
->TransformFeedback
.Offset
[index
]);
7755 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7756 CHECK_EXT1(EXT_transform_feedback
, "GetIntegerIndexedv");
7757 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7758 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7761 params
[0] = INT64_TO_INT(ctx
->TransformFeedback
.Size
[index
]);
7763 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7764 CHECK_EXT1(EXT_transform_feedback
, "GetIntegerIndexedv");
7765 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7766 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7769 params
[0] = ctx
->TransformFeedback
.Buffers
[index
]->Name
;
7772 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerIndexedv(pname=0x%x)", pname
);
7776 #if FEATURE_ARB_sync
7778 _mesa_GetInteger64Indexedv( GLenum pname
, GLuint index
, GLint64
*params
)
7780 GET_CURRENT_CONTEXT(ctx
);
7781 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7788 CHECK_EXT1(EXT_draw_buffers2
, "GetInteger64Indexedv");
7789 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7790 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7793 params
[0] = (GLint64
)(((ctx
->Color
.BlendEnabled
>> index
) & 1));
7795 case GL_COLOR_WRITEMASK
:
7796 CHECK_EXT1(EXT_draw_buffers2
, "GetInteger64Indexedv");
7797 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7798 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7801 params
[0] = (GLint64
)(ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0);
7802 params
[1] = (GLint64
)(ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0);
7803 params
[2] = (GLint64
)(ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0);
7804 params
[3] = (GLint64
)(ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0);
7806 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7807 CHECK_EXT1(EXT_transform_feedback
, "GetInteger64Indexedv");
7808 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7809 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7812 params
[0] = ctx
->TransformFeedback
.Offset
[index
];
7814 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7815 CHECK_EXT1(EXT_transform_feedback
, "GetInteger64Indexedv");
7816 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7817 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7820 params
[0] = ctx
->TransformFeedback
.Size
[index
];
7822 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7823 CHECK_EXT1(EXT_transform_feedback
, "GetInteger64Indexedv");
7824 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7825 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7828 params
[0] = (GLint64
)(ctx
->TransformFeedback
.Buffers
[index
]->Name
);
7831 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetInteger64Indexedv(pname=0x%x)", pname
);
7834 #endif /* FEATURE_ARB_sync */