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) \
36 if (!ctx->Extensions.EXT1) { \
37 goto invalid_enum_error; \
41 * Check if either of two extensions is enabled.
43 #define CHECK_EXT2(EXT1, EXT2) \
44 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \
45 goto invalid_enum_error; \
49 * Check if either of three extensions is enabled.
51 #define CHECK_EXT3(EXT1, EXT2, EXT3) \
52 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
53 !ctx->Extensions.EXT3) { \
54 goto invalid_enum_error; \
58 * Check if either of four extensions is enabled.
60 #define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4) \
61 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \
62 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \
63 goto invalid_enum_error; \
68 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
70 GET_CURRENT_CONTEXT(ctx
);
71 ASSERT_OUTSIDE_BEGIN_END(ctx
);
76 if (ctx
->Driver
.GetBooleanv
&&
77 ctx
->Driver
.GetBooleanv(ctx
, pname
, params
))
81 case GL_ACCUM_RED_BITS
:
82 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumRedBits
);
84 case GL_ACCUM_GREEN_BITS
:
85 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
87 case GL_ACCUM_BLUE_BITS
:
88 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
90 case GL_ACCUM_ALPHA_BITS
:
91 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
93 case GL_ACCUM_CLEAR_VALUE
:
94 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[0]);
95 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[1]);
96 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[2]);
97 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[3]);
100 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.AlphaBias
);
103 if (ctx
->NewState
& _NEW_BUFFERS
)
104 _mesa_update_state(ctx
);
105 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.alphaBits
);
108 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.AlphaScale
);
111 params
[0] = ctx
->Color
.AlphaEnabled
;
113 case GL_ALPHA_TEST_FUNC
:
114 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.AlphaFunc
);
116 case GL_ALPHA_TEST_REF
:
117 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.AlphaRef
);
119 case GL_ATTRIB_STACK_DEPTH
:
120 params
[0] = INT_TO_BOOLEAN(ctx
->AttribStackDepth
);
123 params
[0] = ctx
->Eval
.AutoNormal
;
126 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
129 params
[0] = (ctx
->Color
.BlendEnabled
& 1);
132 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstRGB
);
135 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcRGB
);
137 case GL_BLEND_SRC_RGB_EXT
:
138 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcRGB
);
140 case GL_BLEND_DST_RGB_EXT
:
141 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstRGB
);
143 case GL_BLEND_SRC_ALPHA_EXT
:
144 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcA
);
146 case GL_BLEND_DST_ALPHA_EXT
:
147 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstA
);
149 case GL_BLEND_EQUATION
:
150 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendEquationRGB
);
152 case GL_BLEND_EQUATION_ALPHA_EXT
:
153 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendEquationA
);
155 case GL_BLEND_COLOR_EXT
:
156 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[0]);
157 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[1]);
158 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[2]);
159 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[3]);
162 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.BlueBias
);
165 if (ctx
->NewState
& _NEW_BUFFERS
)
166 _mesa_update_state(ctx
);
167 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.blueBits
);
170 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.BlueScale
);
172 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
173 params
[0] = INT_TO_BOOLEAN(ctx
->ClientAttribStackDepth
);
176 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1;
179 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1;
182 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1;
185 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1;
188 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1;
191 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1;
193 case GL_COLOR_CLEAR_VALUE
:
194 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[0]);
195 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[1]);
196 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[2]);
197 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[3]);
199 case GL_COLOR_MATERIAL
:
200 params
[0] = ctx
->Light
.ColorMaterialEnabled
;
202 case GL_COLOR_MATERIAL_FACE
:
203 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ColorMaterialFace
);
205 case GL_COLOR_MATERIAL_PARAMETER
:
206 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ColorMaterialMode
);
208 case GL_COLOR_WRITEMASK
:
209 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
210 params
[1] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
211 params
[2] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
212 params
[3] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
215 params
[0] = ctx
->Polygon
.CullFlag
;
217 case GL_CULL_FACE_MODE
:
218 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.CullFaceMode
);
220 case GL_CURRENT_COLOR
:
221 FLUSH_CURRENT(ctx
, 0);
222 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
223 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
224 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
225 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
227 case GL_CURRENT_INDEX
:
228 FLUSH_CURRENT(ctx
, 0);
229 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
231 case GL_CURRENT_NORMAL
:
232 FLUSH_CURRENT(ctx
, 0);
233 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
234 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
235 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
237 case GL_CURRENT_RASTER_COLOR
:
238 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[0]);
239 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[1]);
240 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[2]);
241 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[3]);
243 case GL_CURRENT_RASTER_DISTANCE
:
244 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterDistance
);
246 case GL_CURRENT_RASTER_INDEX
:
247 params
[0] = FLOAT_TO_BOOLEAN(1.0);
249 case GL_CURRENT_RASTER_POSITION
:
250 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[0]);
251 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[1]);
252 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[2]);
253 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[3]);
255 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
256 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[0]);
257 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[1]);
258 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[2]);
259 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[3]);
261 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
263 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
264 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
265 _mesa_error(ctx
, GL_INVALID_OPERATION
,
266 "glGet(raster tex coords, unit %u)", unit
);
269 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][0]);
270 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][1]);
271 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][2]);
272 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][3]);
275 case GL_CURRENT_RASTER_POSITION_VALID
:
276 params
[0] = ctx
->Current
.RasterPosValid
;
278 case GL_CURRENT_TEXTURE_COORDS
:
280 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
281 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
282 _mesa_error(ctx
, GL_INVALID_OPERATION
,
283 "glGet(current tex coords, unit %u)", unit
);
286 FLUSH_CURRENT(ctx
, 0);
287 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
288 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
289 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
290 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
294 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.DepthBias
);
297 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.depthBits
);
299 case GL_DEPTH_CLEAR_VALUE
:
300 params
[0] = FLOAT_TO_BOOLEAN(((GLfloat
) ctx
->Depth
.Clear
));
303 params
[0] = ENUM_TO_BOOLEAN(ctx
->Depth
.Func
);
306 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Viewport
.Near
);
307 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Viewport
.Far
);
310 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.DepthScale
);
313 params
[0] = ctx
->Depth
.Test
;
315 case GL_DEPTH_WRITEMASK
:
316 params
[0] = ctx
->Depth
.Mask
;
319 params
[0] = ctx
->Color
.DitherFlag
;
321 case GL_DOUBLEBUFFER
:
322 params
[0] = ctx
->DrawBuffer
->Visual
.doubleBufferMode
;
325 params
[0] = ENUM_TO_BOOLEAN(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
328 FLUSH_CURRENT(ctx
, 0);
329 params
[0] = (ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0);
331 case GL_FEEDBACK_BUFFER_SIZE
:
332 params
[0] = INT_TO_BOOLEAN(ctx
->Feedback
.BufferSize
);
334 case GL_FEEDBACK_BUFFER_TYPE
:
335 params
[0] = ENUM_TO_BOOLEAN(ctx
->Feedback
.Type
);
338 params
[0] = ctx
->Fog
.Enabled
;
341 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[0]);
342 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[1]);
343 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[2]);
344 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[3]);
347 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Density
);
350 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.End
);
353 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.Fog
);
356 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Index
);
359 params
[0] = ENUM_TO_BOOLEAN(ctx
->Fog
.Mode
);
362 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Start
);
365 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.FrontFace
);
368 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.GreenBias
);
371 if (ctx
->NewState
& _NEW_BUFFERS
)
372 _mesa_update_state(ctx
);
373 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.greenBits
);
376 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.GreenScale
);
379 if (ctx
->NewState
& _NEW_BUFFERS
)
380 _mesa_update_state(ctx
);
381 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.indexBits
);
383 case GL_INDEX_CLEAR_VALUE
:
384 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ClearIndex
);
387 params
[0] = GL_FALSE
;
389 case GL_INDEX_OFFSET
:
390 params
[0] = INT_TO_BOOLEAN(ctx
->Pixel
.IndexOffset
);
393 params
[0] = INT_TO_BOOLEAN(ctx
->Pixel
.IndexShift
);
395 case GL_INDEX_WRITEMASK
:
396 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.IndexMask
);
399 params
[0] = ctx
->Light
.Light
[0].Enabled
;
402 params
[0] = ctx
->Light
.Light
[1].Enabled
;
405 params
[0] = ctx
->Light
.Light
[2].Enabled
;
408 params
[0] = ctx
->Light
.Light
[3].Enabled
;
411 params
[0] = ctx
->Light
.Light
[4].Enabled
;
414 params
[0] = ctx
->Light
.Light
[5].Enabled
;
417 params
[0] = ctx
->Light
.Light
[6].Enabled
;
420 params
[0] = ctx
->Light
.Light
[7].Enabled
;
423 params
[0] = ctx
->Light
.Enabled
;
425 case GL_LIGHT_MODEL_AMBIENT
:
426 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[0]);
427 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[1]);
428 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[2]);
429 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[3]);
431 case GL_LIGHT_MODEL_COLOR_CONTROL
:
432 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.Model
.ColorControl
);
434 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
435 params
[0] = ctx
->Light
.Model
.LocalViewer
;
437 case GL_LIGHT_MODEL_TWO_SIDE
:
438 params
[0] = ctx
->Light
.Model
.TwoSide
;
441 params
[0] = ctx
->Line
.SmoothFlag
;
443 case GL_LINE_SMOOTH_HINT
:
444 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.LineSmooth
);
446 case GL_LINE_STIPPLE
:
447 params
[0] = ctx
->Line
.StippleFlag
;
449 case GL_LINE_STIPPLE_PATTERN
:
450 params
[0] = INT_TO_BOOLEAN(ctx
->Line
.StipplePattern
);
452 case GL_LINE_STIPPLE_REPEAT
:
453 params
[0] = INT_TO_BOOLEAN(ctx
->Line
.StippleFactor
);
456 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Line
.Width
);
458 case GL_LINE_WIDTH_GRANULARITY
:
459 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.LineWidthGranularity
);
461 case GL_LINE_WIDTH_RANGE
:
462 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinLineWidthAA
);
463 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxLineWidthAA
);
465 case GL_ALIASED_LINE_WIDTH_RANGE
:
466 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinLineWidth
);
467 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxLineWidth
);
470 params
[0] = INT_TO_BOOLEAN(ctx
->List
.ListBase
);
473 params
[0] = INT_TO_BOOLEAN((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
478 if (!ctx
->CompileFlag
)
480 else if (ctx
->ExecuteFlag
)
481 mode
= GL_COMPILE_AND_EXECUTE
;
484 params
[0] = ENUM_TO_BOOLEAN(mode
);
487 case GL_INDEX_LOGIC_OP
:
488 params
[0] = ctx
->Color
.IndexLogicOpEnabled
;
490 case GL_COLOR_LOGIC_OP
:
491 params
[0] = ctx
->Color
.ColorLogicOpEnabled
;
493 case GL_LOGIC_OP_MODE
:
494 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.LogicOp
);
496 case GL_MAP1_COLOR_4
:
497 params
[0] = ctx
->Eval
.Map1Color4
;
499 case GL_MAP1_GRID_DOMAIN
:
500 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid1u1
);
501 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid1u2
);
503 case GL_MAP1_GRID_SEGMENTS
:
504 params
[0] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid1un
);
507 params
[0] = ctx
->Eval
.Map1Index
;
510 params
[0] = ctx
->Eval
.Map1Normal
;
512 case GL_MAP1_TEXTURE_COORD_1
:
513 params
[0] = ctx
->Eval
.Map1TextureCoord1
;
515 case GL_MAP1_TEXTURE_COORD_2
:
516 params
[0] = ctx
->Eval
.Map1TextureCoord2
;
518 case GL_MAP1_TEXTURE_COORD_3
:
519 params
[0] = ctx
->Eval
.Map1TextureCoord3
;
521 case GL_MAP1_TEXTURE_COORD_4
:
522 params
[0] = ctx
->Eval
.Map1TextureCoord4
;
524 case GL_MAP1_VERTEX_3
:
525 params
[0] = ctx
->Eval
.Map1Vertex3
;
527 case GL_MAP1_VERTEX_4
:
528 params
[0] = ctx
->Eval
.Map1Vertex4
;
530 case GL_MAP2_COLOR_4
:
531 params
[0] = ctx
->Eval
.Map2Color4
;
533 case GL_MAP2_GRID_DOMAIN
:
534 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2u1
);
535 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2u2
);
536 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2v1
);
537 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2v2
);
539 case GL_MAP2_GRID_SEGMENTS
:
540 params
[0] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid2un
);
541 params
[1] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid2vn
);
544 params
[0] = ctx
->Eval
.Map2Index
;
547 params
[0] = ctx
->Eval
.Map2Normal
;
549 case GL_MAP2_TEXTURE_COORD_1
:
550 params
[0] = ctx
->Eval
.Map2TextureCoord1
;
552 case GL_MAP2_TEXTURE_COORD_2
:
553 params
[0] = ctx
->Eval
.Map2TextureCoord2
;
555 case GL_MAP2_TEXTURE_COORD_3
:
556 params
[0] = ctx
->Eval
.Map2TextureCoord3
;
558 case GL_MAP2_TEXTURE_COORD_4
:
559 params
[0] = ctx
->Eval
.Map2TextureCoord4
;
561 case GL_MAP2_VERTEX_3
:
562 params
[0] = ctx
->Eval
.Map2Vertex3
;
564 case GL_MAP2_VERTEX_4
:
565 params
[0] = ctx
->Eval
.Map2Vertex4
;
568 params
[0] = ctx
->Pixel
.MapColorFlag
;
571 params
[0] = ctx
->Pixel
.MapStencilFlag
;
574 params
[0] = ENUM_TO_BOOLEAN(ctx
->Transform
.MatrixMode
);
576 case GL_MAX_ATTRIB_STACK_DEPTH
:
577 params
[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH
);
579 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
580 params
[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
582 case GL_MAX_CLIP_PLANES
:
583 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxClipPlanes
);
585 case GL_MAX_ELEMENTS_VERTICES
:
586 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayLockSize
);
588 case GL_MAX_ELEMENTS_INDICES
:
589 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayLockSize
);
591 case GL_MAX_EVAL_ORDER
:
592 params
[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER
);
595 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxLights
);
597 case GL_MAX_LIST_NESTING
:
598 params
[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING
);
600 case GL_MAX_MODELVIEW_STACK_DEPTH
:
601 params
[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH
);
603 case GL_MAX_NAME_STACK_DEPTH
:
604 params
[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH
);
606 case GL_MAX_PIXEL_MAP_TABLE
:
607 params
[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE
);
609 case GL_MAX_PROJECTION_STACK_DEPTH
:
610 params
[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH
);
612 case GL_MAX_TEXTURE_SIZE
:
613 params
[0] = INT_TO_BOOLEAN(1 << (ctx
->Const
.MaxTextureLevels
- 1));
615 case GL_MAX_3D_TEXTURE_SIZE
:
616 params
[0] = INT_TO_BOOLEAN(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
618 case GL_MAX_TEXTURE_STACK_DEPTH
:
619 params
[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH
);
621 case GL_MAX_VIEWPORT_DIMS
:
622 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxViewportWidth
);
623 params
[1] = INT_TO_BOOLEAN(ctx
->Const
.MaxViewportHeight
);
625 case GL_MODELVIEW_MATRIX
:
627 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
628 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
629 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
630 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
631 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
632 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
633 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
634 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
635 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
636 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
637 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
638 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
639 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
640 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
641 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
642 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
643 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
646 case GL_MODELVIEW_STACK_DEPTH
:
647 params
[0] = INT_TO_BOOLEAN(ctx
->ModelviewMatrixStack
.Depth
+ 1);
649 case GL_NAME_STACK_DEPTH
:
650 params
[0] = INT_TO_BOOLEAN(ctx
->Select
.NameStackDepth
);
653 params
[0] = ctx
->Transform
.Normalize
;
655 case GL_PACK_ALIGNMENT
:
656 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.Alignment
);
658 case GL_PACK_LSB_FIRST
:
659 params
[0] = ctx
->Pack
.LsbFirst
;
661 case GL_PACK_ROW_LENGTH
:
662 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.RowLength
);
664 case GL_PACK_SKIP_PIXELS
:
665 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipPixels
);
667 case GL_PACK_SKIP_ROWS
:
668 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipRows
);
670 case GL_PACK_SWAP_BYTES
:
671 params
[0] = ctx
->Pack
.SwapBytes
;
673 case GL_PACK_SKIP_IMAGES_EXT
:
674 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipImages
);
676 case GL_PACK_IMAGE_HEIGHT_EXT
:
677 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.ImageHeight
);
679 case GL_PACK_INVERT_MESA
:
680 params
[0] = ctx
->Pack
.Invert
;
682 case GL_PERSPECTIVE_CORRECTION_HINT
:
683 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PerspectiveCorrection
);
685 case GL_PIXEL_MAP_A_TO_A_SIZE
:
686 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.AtoA
.Size
);
688 case GL_PIXEL_MAP_B_TO_B_SIZE
:
689 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.BtoB
.Size
);
691 case GL_PIXEL_MAP_G_TO_G_SIZE
:
692 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.GtoG
.Size
);
694 case GL_PIXEL_MAP_I_TO_A_SIZE
:
695 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoA
.Size
);
697 case GL_PIXEL_MAP_I_TO_B_SIZE
:
698 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoB
.Size
);
700 case GL_PIXEL_MAP_I_TO_G_SIZE
:
701 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoG
.Size
);
703 case GL_PIXEL_MAP_I_TO_I_SIZE
:
704 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoI
.Size
);
706 case GL_PIXEL_MAP_I_TO_R_SIZE
:
707 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoR
.Size
);
709 case GL_PIXEL_MAP_R_TO_R_SIZE
:
710 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.RtoR
.Size
);
712 case GL_PIXEL_MAP_S_TO_S_SIZE
:
713 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.StoS
.Size
);
716 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Size
);
718 case GL_POINT_SIZE_GRANULARITY
:
719 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.PointSizeGranularity
);
721 case GL_POINT_SIZE_RANGE
:
722 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinPointSizeAA
);
723 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxPointSizeAA
);
725 case GL_ALIASED_POINT_SIZE_RANGE
:
726 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinPointSize
);
727 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxPointSize
);
729 case GL_POINT_SMOOTH
:
730 params
[0] = ctx
->Point
.SmoothFlag
;
732 case GL_POINT_SMOOTH_HINT
:
733 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PointSmooth
);
735 case GL_POINT_SIZE_MIN_EXT
:
736 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.MinSize
);
738 case GL_POINT_SIZE_MAX_EXT
:
739 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.MaxSize
);
741 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
742 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Threshold
);
744 case GL_DISTANCE_ATTENUATION_EXT
:
745 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[0]);
746 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[1]);
747 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[2]);
749 case GL_POLYGON_MODE
:
750 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.FrontMode
);
751 params
[1] = ENUM_TO_BOOLEAN(ctx
->Polygon
.BackMode
);
753 case GL_POLYGON_OFFSET_BIAS_EXT
:
754 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetUnits
);
756 case GL_POLYGON_OFFSET_FACTOR
:
757 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetFactor
);
759 case GL_POLYGON_OFFSET_UNITS
:
760 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetUnits
);
762 case GL_POLYGON_OFFSET_POINT
:
763 params
[0] = ctx
->Polygon
.OffsetPoint
;
765 case GL_POLYGON_OFFSET_LINE
:
766 params
[0] = ctx
->Polygon
.OffsetLine
;
768 case GL_POLYGON_OFFSET_FILL
:
769 params
[0] = ctx
->Polygon
.OffsetFill
;
771 case GL_POLYGON_SMOOTH
:
772 params
[0] = ctx
->Polygon
.SmoothFlag
;
774 case GL_POLYGON_SMOOTH_HINT
:
775 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PolygonSmooth
);
777 case GL_POLYGON_STIPPLE
:
778 params
[0] = ctx
->Polygon
.StippleFlag
;
780 case GL_PROJECTION_MATRIX
:
782 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
783 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
784 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
785 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
786 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
787 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
788 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
789 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
790 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
791 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
792 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
793 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
794 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
795 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
796 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
797 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
798 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
801 case GL_PROJECTION_STACK_DEPTH
:
802 params
[0] = INT_TO_BOOLEAN(ctx
->ProjectionMatrixStack
.Depth
+ 1);
805 params
[0] = ENUM_TO_BOOLEAN(ctx
->ReadBuffer
->ColorReadBuffer
);
808 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.RedBias
);
811 if (ctx
->NewState
& _NEW_BUFFERS
)
812 _mesa_update_state(ctx
);
813 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.redBits
);
816 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.RedScale
);
819 params
[0] = ENUM_TO_BOOLEAN(ctx
->RenderMode
);
821 case GL_RESCALE_NORMAL
:
822 params
[0] = ctx
->Transform
.RescaleNormals
;
828 params
[0] = INT_TO_BOOLEAN(ctx
->Scissor
.X
);
829 params
[1] = INT_TO_BOOLEAN(ctx
->Scissor
.Y
);
830 params
[2] = INT_TO_BOOLEAN(ctx
->Scissor
.Width
);
831 params
[3] = INT_TO_BOOLEAN(ctx
->Scissor
.Height
);
833 case GL_SCISSOR_TEST
:
834 params
[0] = ctx
->Scissor
.Enabled
;
836 case GL_SELECTION_BUFFER_SIZE
:
837 params
[0] = INT_TO_BOOLEAN(ctx
->Select
.BufferSize
);
840 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ShadeModel
);
842 case GL_SHARED_TEXTURE_PALETTE_EXT
:
843 params
[0] = ctx
->Texture
.SharedPalette
;
845 case GL_STENCIL_BITS
:
846 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.stencilBits
);
848 case GL_STENCIL_CLEAR_VALUE
:
849 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Clear
);
851 case GL_STENCIL_FAIL
:
852 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
854 case GL_STENCIL_FUNC
:
855 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
857 case GL_STENCIL_PASS_DEPTH_FAIL
:
858 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
860 case GL_STENCIL_PASS_DEPTH_PASS
:
861 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
864 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
866 case GL_STENCIL_TEST
:
867 params
[0] = ctx
->Stencil
.Enabled
;
869 case GL_STENCIL_VALUE_MASK
:
870 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
872 case GL_STENCIL_WRITEMASK
:
873 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
876 params
[0] = ctx
->DrawBuffer
->Visual
.stereoMode
;
878 case GL_SUBPIXEL_BITS
:
879 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.SubPixelBits
);
882 params
[0] = _mesa_IsEnabled(GL_TEXTURE_1D
);
885 params
[0] = _mesa_IsEnabled(GL_TEXTURE_2D
);
888 params
[0] = _mesa_IsEnabled(GL_TEXTURE_3D
);
890 case GL_TEXTURE_1D_ARRAY_EXT
:
891 CHECK_EXT1(MESA_texture_array
);
892 params
[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
);
894 case GL_TEXTURE_2D_ARRAY_EXT
:
895 CHECK_EXT1(MESA_texture_array
);
896 params
[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
);
898 case GL_TEXTURE_BINDING_1D
:
899 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
901 case GL_TEXTURE_BINDING_2D
:
902 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
904 case GL_TEXTURE_BINDING_3D
:
905 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
907 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
908 CHECK_EXT1(MESA_texture_array
);
909 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
911 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
912 CHECK_EXT1(MESA_texture_array
);
913 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
915 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
916 CHECK_EXT1(MESA_texture_array
);
917 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayTextureLayers
);
919 case GL_TEXTURE_GEN_S
:
920 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0);
922 case GL_TEXTURE_GEN_T
:
923 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0);
925 case GL_TEXTURE_GEN_R
:
926 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0);
928 case GL_TEXTURE_GEN_Q
:
929 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0);
931 case GL_TEXTURE_MATRIX
:
933 const GLfloat
*matrix
;
934 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
935 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
936 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
940 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
941 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
942 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
943 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
944 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
945 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
946 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
947 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
948 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
949 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
950 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
951 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
952 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
953 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
954 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
955 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
956 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
959 case GL_TEXTURE_STACK_DEPTH
:
961 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
962 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
963 _mesa_error(ctx
, GL_INVALID_OPERATION
,
964 "glGet(texture stack depth, unit %u)", unit
);
967 params
[0] = INT_TO_BOOLEAN(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
970 case GL_UNPACK_ALIGNMENT
:
971 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.Alignment
);
973 case GL_UNPACK_LSB_FIRST
:
974 params
[0] = ctx
->Unpack
.LsbFirst
;
976 case GL_UNPACK_ROW_LENGTH
:
977 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.RowLength
);
979 case GL_UNPACK_SKIP_PIXELS
:
980 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipPixels
);
982 case GL_UNPACK_SKIP_ROWS
:
983 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipRows
);
985 case GL_UNPACK_SWAP_BYTES
:
986 params
[0] = ctx
->Unpack
.SwapBytes
;
988 case GL_UNPACK_SKIP_IMAGES_EXT
:
989 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipImages
);
991 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
992 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.ImageHeight
);
994 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
995 params
[0] = ctx
->Unpack
.ClientStorage
;
998 params
[0] = INT_TO_BOOLEAN(ctx
->Viewport
.X
);
999 params
[1] = INT_TO_BOOLEAN(ctx
->Viewport
.Y
);
1000 params
[2] = INT_TO_BOOLEAN(ctx
->Viewport
.Width
);
1001 params
[3] = INT_TO_BOOLEAN(ctx
->Viewport
.Height
);
1004 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.ZoomX
);
1007 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.ZoomY
);
1009 case GL_VERTEX_ARRAY
:
1010 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Enabled
;
1012 case GL_VERTEX_ARRAY_SIZE
:
1013 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Size
);
1015 case GL_VERTEX_ARRAY_TYPE
:
1016 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Type
);
1018 case GL_VERTEX_ARRAY_STRIDE
:
1019 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
1021 case GL_VERTEX_ARRAY_COUNT_EXT
:
1022 params
[0] = INT_TO_BOOLEAN(0);
1024 case GL_NORMAL_ARRAY
:
1025 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
1027 case GL_NORMAL_ARRAY_TYPE
:
1028 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Type
);
1030 case GL_NORMAL_ARRAY_STRIDE
:
1031 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Stride
);
1033 case GL_NORMAL_ARRAY_COUNT_EXT
:
1034 params
[0] = INT_TO_BOOLEAN(0);
1036 case GL_COLOR_ARRAY
:
1037 params
[0] = ctx
->Array
.ArrayObj
->Color
.Enabled
;
1039 case GL_COLOR_ARRAY_SIZE
:
1040 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Size
);
1042 case GL_COLOR_ARRAY_TYPE
:
1043 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Type
);
1045 case GL_COLOR_ARRAY_STRIDE
:
1046 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Stride
);
1048 case GL_COLOR_ARRAY_COUNT_EXT
:
1049 params
[0] = INT_TO_BOOLEAN(0);
1051 case GL_INDEX_ARRAY
:
1052 params
[0] = ctx
->Array
.ArrayObj
->Index
.Enabled
;
1054 case GL_INDEX_ARRAY_TYPE
:
1055 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.Type
);
1057 case GL_INDEX_ARRAY_STRIDE
:
1058 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.Stride
);
1060 case GL_INDEX_ARRAY_COUNT_EXT
:
1061 params
[0] = INT_TO_BOOLEAN(0);
1063 case GL_TEXTURE_COORD_ARRAY
:
1064 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
;
1066 case GL_TEXTURE_COORD_ARRAY_SIZE
:
1067 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
1069 case GL_TEXTURE_COORD_ARRAY_TYPE
:
1070 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
1072 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
1073 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
1075 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
1076 params
[0] = INT_TO_BOOLEAN(0);
1078 case GL_EDGE_FLAG_ARRAY
:
1079 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
;
1081 case GL_EDGE_FLAG_ARRAY_STRIDE
:
1082 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
1084 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1085 params
[0] = INT_TO_BOOLEAN(0);
1087 case GL_MAX_TEXTURE_UNITS_ARB
:
1088 CHECK_EXT1(ARB_multitexture
);
1089 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureUnits
);
1091 case GL_ACTIVE_TEXTURE_ARB
:
1092 CHECK_EXT1(ARB_multitexture
);
1093 params
[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1095 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1096 CHECK_EXT1(ARB_multitexture
);
1097 params
[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1099 case GL_TEXTURE_CUBE_MAP_ARB
:
1100 CHECK_EXT1(ARB_texture_cube_map
);
1101 params
[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1103 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1104 CHECK_EXT1(ARB_texture_cube_map
);
1105 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
1107 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1108 CHECK_EXT1(ARB_texture_cube_map
);
1109 params
[0] = INT_TO_BOOLEAN((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
1111 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1112 params
[0] = INT_TO_BOOLEAN(ctx
->Hint
.TextureCompression
);
1114 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1115 params
[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
1117 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1120 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
1122 for (i
= 0; i
< n
; i
++)
1123 params
[i
] = ENUM_TO_BOOLEAN(formats
[i
]);
1126 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1127 CHECK_EXT1(EXT_compiled_vertex_array
);
1128 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.LockFirst
);
1130 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1131 CHECK_EXT1(EXT_compiled_vertex_array
);
1132 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.LockCount
);
1134 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1136 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
1137 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1138 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1139 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1140 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1141 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1142 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1143 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1144 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1145 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1146 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1147 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1148 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1149 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1150 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1151 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1152 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1155 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1157 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
1158 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1159 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1160 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1161 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1162 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1163 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1164 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1165 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1166 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1167 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1168 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1169 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1170 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1171 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1172 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1173 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1176 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1178 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
1179 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1180 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1181 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1182 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1183 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1184 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1185 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1186 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1187 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1188 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1189 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1190 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1191 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1192 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1193 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1194 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1197 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1199 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
1200 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1201 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1202 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1203 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1204 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1205 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1206 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1207 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1208 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1209 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1210 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1211 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1212 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1213 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1214 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1215 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1218 case GL_COLOR_MATRIX_SGI
:
1220 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
1221 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1222 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
1223 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
1224 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
1225 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
1226 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1227 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
1228 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
1229 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
1230 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
1231 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1232 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
1233 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
1234 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
1235 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
1236 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1239 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1240 params
[0] = INT_TO_BOOLEAN(ctx
->ColorMatrixStack
.Depth
+ 1);
1242 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1243 params
[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH
);
1245 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1246 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[0]);
1248 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1249 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[1]);
1251 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1252 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[2]);
1254 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1255 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[3]);
1257 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1258 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[0]);
1260 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1261 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[1]);
1263 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1264 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[2]);
1266 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1267 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[3]);
1269 case GL_CONVOLUTION_1D_EXT
:
1270 CHECK_EXT1(EXT_convolution
);
1271 params
[0] = ctx
->Pixel
.Convolution1DEnabled
;
1273 case GL_CONVOLUTION_2D_EXT
:
1274 CHECK_EXT1(EXT_convolution
);
1275 params
[0] = ctx
->Pixel
.Convolution2DEnabled
;
1277 case GL_SEPARABLE_2D_EXT
:
1278 CHECK_EXT1(EXT_convolution
);
1279 params
[0] = ctx
->Pixel
.Separable2DEnabled
;
1281 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1282 CHECK_EXT1(EXT_convolution
);
1283 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[0]);
1285 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1286 CHECK_EXT1(EXT_convolution
);
1287 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[1]);
1289 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1290 CHECK_EXT1(EXT_convolution
);
1291 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[2]);
1293 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1294 CHECK_EXT1(EXT_convolution
);
1295 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[3]);
1297 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1298 CHECK_EXT1(EXT_convolution
);
1299 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[0]);
1301 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1302 CHECK_EXT1(EXT_convolution
);
1303 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[1]);
1305 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1306 CHECK_EXT1(EXT_convolution
);
1307 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[2]);
1309 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1310 CHECK_EXT1(EXT_convolution
);
1311 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[3]);
1314 CHECK_EXT1(EXT_histogram
);
1315 params
[0] = ctx
->Pixel
.HistogramEnabled
;
1318 CHECK_EXT1(EXT_histogram
);
1319 params
[0] = ctx
->Pixel
.MinMaxEnabled
;
1321 case GL_COLOR_TABLE_SGI
:
1322 CHECK_EXT1(SGI_color_table
);
1323 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
];
1325 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1326 CHECK_EXT1(SGI_color_table
);
1327 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
];
1329 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1330 CHECK_EXT1(SGI_color_table
);
1331 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
];
1333 case GL_TEXTURE_COLOR_TABLE_SGI
:
1334 CHECK_EXT1(SGI_texture_color_table
);
1335 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
;
1337 case GL_COLOR_SUM_EXT
:
1338 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
1339 params
[0] = ctx
->Fog
.ColorSumEnabled
;
1341 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1342 CHECK_EXT1(EXT_secondary_color
);
1343 FLUSH_CURRENT(ctx
, 0);
1344 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1345 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1346 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1347 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
1349 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1350 CHECK_EXT1(EXT_secondary_color
);
1351 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
;
1353 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1354 CHECK_EXT1(EXT_secondary_color
);
1355 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
1357 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1358 CHECK_EXT1(EXT_secondary_color
);
1359 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
1361 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1362 CHECK_EXT1(EXT_secondary_color
);
1363 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
1365 case GL_CURRENT_FOG_COORDINATE_EXT
:
1366 CHECK_EXT1(EXT_fog_coord
);
1367 FLUSH_CURRENT(ctx
, 0);
1368 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1370 case GL_FOG_COORDINATE_ARRAY_EXT
:
1371 CHECK_EXT1(EXT_fog_coord
);
1372 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.Enabled
;
1374 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1375 CHECK_EXT1(EXT_fog_coord
);
1376 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
1378 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1379 CHECK_EXT1(EXT_fog_coord
);
1380 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
1382 case GL_FOG_COORDINATE_SOURCE_EXT
:
1383 CHECK_EXT1(EXT_fog_coord
);
1384 params
[0] = ENUM_TO_BOOLEAN(ctx
->Fog
.FogCoordinateSource
);
1386 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1387 CHECK_EXT1(EXT_texture_lod_bias
);
1388 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxTextureLodBias
);
1390 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1391 CHECK_EXT1(EXT_texture_filter_anisotropic
);
1392 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxTextureMaxAnisotropy
);
1394 case GL_MULTISAMPLE_ARB
:
1395 params
[0] = ctx
->Multisample
.Enabled
;
1397 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1398 params
[0] = ctx
->Multisample
.SampleAlphaToCoverage
;
1400 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1401 params
[0] = ctx
->Multisample
.SampleAlphaToOne
;
1403 case GL_SAMPLE_COVERAGE_ARB
:
1404 params
[0] = ctx
->Multisample
.SampleCoverage
;
1406 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1407 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Multisample
.SampleCoverageValue
);
1409 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1410 params
[0] = ctx
->Multisample
.SampleCoverageInvert
;
1412 case GL_SAMPLE_BUFFERS_ARB
:
1413 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
1415 case GL_SAMPLES_ARB
:
1416 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.samples
);
1418 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1419 CHECK_EXT1(IBM_rasterpos_clip
);
1420 params
[0] = ctx
->Transform
.RasterPositionUnclipped
;
1422 case GL_POINT_SPRITE_NV
:
1423 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
1424 params
[0] = ctx
->Point
.PointSprite
;
1426 case GL_POINT_SPRITE_R_MODE_NV
:
1427 CHECK_EXT1(NV_point_sprite
);
1428 params
[0] = ENUM_TO_BOOLEAN(ctx
->Point
.SpriteRMode
);
1430 case GL_POINT_SPRITE_COORD_ORIGIN
:
1431 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
1432 params
[0] = ENUM_TO_BOOLEAN(ctx
->Point
.SpriteOrigin
);
1434 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1435 CHECK_EXT1(SGIS_generate_mipmap
);
1436 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.GenerateMipmap
);
1438 case GL_VERTEX_PROGRAM_BINDING_NV
:
1439 CHECK_EXT1(NV_vertex_program
);
1440 params
[0] = INT_TO_BOOLEAN((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
1442 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1443 CHECK_EXT1(NV_vertex_program
);
1444 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
;
1446 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1447 CHECK_EXT1(NV_vertex_program
);
1448 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
;
1450 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1451 CHECK_EXT1(NV_vertex_program
);
1452 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
;
1454 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1455 CHECK_EXT1(NV_vertex_program
);
1456 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
;
1458 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1459 CHECK_EXT1(NV_vertex_program
);
1460 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
;
1462 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1463 CHECK_EXT1(NV_vertex_program
);
1464 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
;
1466 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1467 CHECK_EXT1(NV_vertex_program
);
1468 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
;
1470 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1471 CHECK_EXT1(NV_vertex_program
);
1472 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
;
1474 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1475 CHECK_EXT1(NV_vertex_program
);
1476 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
;
1478 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1479 CHECK_EXT1(NV_vertex_program
);
1480 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
;
1482 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1483 CHECK_EXT1(NV_vertex_program
);
1484 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
;
1486 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1487 CHECK_EXT1(NV_vertex_program
);
1488 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
;
1490 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1491 CHECK_EXT1(NV_vertex_program
);
1492 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
;
1494 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1495 CHECK_EXT1(NV_vertex_program
);
1496 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
;
1498 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1499 CHECK_EXT1(NV_vertex_program
);
1500 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
;
1502 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1503 CHECK_EXT1(NV_vertex_program
);
1504 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
;
1506 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1507 CHECK_EXT1(NV_vertex_program
);
1508 params
[0] = ctx
->Eval
.Map1Attrib
[0];
1510 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1511 CHECK_EXT1(NV_vertex_program
);
1512 params
[0] = ctx
->Eval
.Map1Attrib
[1];
1514 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1515 CHECK_EXT1(NV_vertex_program
);
1516 params
[0] = ctx
->Eval
.Map1Attrib
[2];
1518 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1519 CHECK_EXT1(NV_vertex_program
);
1520 params
[0] = ctx
->Eval
.Map1Attrib
[3];
1522 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1523 CHECK_EXT1(NV_vertex_program
);
1524 params
[0] = ctx
->Eval
.Map1Attrib
[4];
1526 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1527 CHECK_EXT1(NV_vertex_program
);
1528 params
[0] = ctx
->Eval
.Map1Attrib
[5];
1530 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1531 CHECK_EXT1(NV_vertex_program
);
1532 params
[0] = ctx
->Eval
.Map1Attrib
[6];
1534 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1535 CHECK_EXT1(NV_vertex_program
);
1536 params
[0] = ctx
->Eval
.Map1Attrib
[7];
1538 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1539 CHECK_EXT1(NV_vertex_program
);
1540 params
[0] = ctx
->Eval
.Map1Attrib
[8];
1542 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1543 CHECK_EXT1(NV_vertex_program
);
1544 params
[0] = ctx
->Eval
.Map1Attrib
[9];
1546 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1547 CHECK_EXT1(NV_vertex_program
);
1548 params
[0] = ctx
->Eval
.Map1Attrib
[10];
1550 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1551 CHECK_EXT1(NV_vertex_program
);
1552 params
[0] = ctx
->Eval
.Map1Attrib
[11];
1554 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1555 CHECK_EXT1(NV_vertex_program
);
1556 params
[0] = ctx
->Eval
.Map1Attrib
[12];
1558 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1559 CHECK_EXT1(NV_vertex_program
);
1560 params
[0] = ctx
->Eval
.Map1Attrib
[13];
1562 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1563 CHECK_EXT1(NV_vertex_program
);
1564 params
[0] = ctx
->Eval
.Map1Attrib
[14];
1566 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1567 CHECK_EXT1(NV_vertex_program
);
1568 params
[0] = ctx
->Eval
.Map1Attrib
[15];
1570 case GL_FRAGMENT_PROGRAM_NV
:
1571 CHECK_EXT1(NV_fragment_program
);
1572 params
[0] = ctx
->FragmentProgram
.Enabled
;
1574 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
1575 CHECK_EXT1(NV_fragment_program
);
1576 params
[0] = INT_TO_BOOLEAN(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
1578 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
1579 CHECK_EXT1(NV_fragment_program
);
1580 params
[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
1582 case GL_TEXTURE_RECTANGLE_NV
:
1583 CHECK_EXT1(NV_texture_rectangle
);
1584 params
[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1586 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1587 CHECK_EXT1(NV_texture_rectangle
);
1588 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
1590 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1591 CHECK_EXT1(NV_texture_rectangle
);
1592 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureRectSize
);
1594 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
1595 CHECK_EXT1(EXT_stencil_two_side
);
1596 params
[0] = ctx
->Stencil
.TestTwoSide
;
1598 case GL_ACTIVE_STENCIL_FACE_EXT
:
1599 CHECK_EXT1(EXT_stencil_two_side
);
1600 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
1602 case GL_MAX_SHININESS_NV
:
1603 CHECK_EXT1(NV_light_max_exponent
);
1604 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxShininess
);
1606 case GL_MAX_SPOT_EXPONENT_NV
:
1607 CHECK_EXT1(NV_light_max_exponent
);
1608 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxSpotExponent
);
1610 case GL_ARRAY_BUFFER_BINDING_ARB
:
1611 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayBufferObj
->Name
);
1613 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
1614 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
1616 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
1617 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
1619 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1620 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
1622 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
1623 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
1625 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
1626 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
1628 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
1629 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
1631 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1632 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
1634 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
1635 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
1637 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
1638 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ElementArrayBufferObj
->Name
);
1640 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
1641 CHECK_EXT1(EXT_pixel_buffer_object
);
1642 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.BufferObj
->Name
);
1644 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
1645 CHECK_EXT1(EXT_pixel_buffer_object
);
1646 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.BufferObj
->Name
);
1648 case GL_VERTEX_PROGRAM_ARB
:
1649 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1650 params
[0] = ctx
->VertexProgram
.Enabled
;
1652 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
1653 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1654 params
[0] = ctx
->VertexProgram
.PointSizeEnabled
;
1656 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
1657 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1658 params
[0] = ctx
->VertexProgram
.TwoSideEnabled
;
1660 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
1661 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1662 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxProgramMatrixStackDepth
);
1664 case GL_MAX_PROGRAM_MATRICES_ARB
:
1665 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1666 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxProgramMatrices
);
1668 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
1669 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1670 params
[0] = ctx
->CurrentStack
->Depth
+ 1;
1672 case GL_CURRENT_MATRIX_ARB
:
1673 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
1675 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
1676 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1677 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
1678 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
1679 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
1680 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
1681 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1682 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
1683 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
1684 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
1685 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
1686 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1687 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
1688 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
1689 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
1690 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
1691 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1694 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
1695 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
1697 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
1698 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1699 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1700 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1701 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1702 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1703 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1704 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1705 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1706 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1707 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1708 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1709 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1710 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1711 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1712 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1713 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1716 case GL_MAX_VERTEX_ATTRIBS_ARB
:
1717 CHECK_EXT1(ARB_vertex_program
);
1718 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.VertexProgram
.MaxAttribs
);
1720 case GL_PROGRAM_ERROR_POSITION_ARB
:
1721 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
1722 params
[0] = INT_TO_BOOLEAN(ctx
->Program
.ErrorPos
);
1724 case GL_FRAGMENT_PROGRAM_ARB
:
1725 CHECK_EXT1(ARB_fragment_program
);
1726 params
[0] = ctx
->FragmentProgram
.Enabled
;
1728 case GL_MAX_TEXTURE_COORDS_ARB
:
1729 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
1730 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureCoordUnits
);
1732 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
1733 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
1734 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureImageUnits
);
1736 case GL_DEPTH_BOUNDS_TEST_EXT
:
1737 CHECK_EXT1(EXT_depth_bounds_test
);
1738 params
[0] = ctx
->Depth
.BoundsTest
;
1740 case GL_DEPTH_BOUNDS_EXT
:
1741 CHECK_EXT1(EXT_depth_bounds_test
);
1742 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Depth
.BoundsMin
);
1743 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Depth
.BoundsMax
);
1745 case GL_DEPTH_CLAMP
:
1746 CHECK_EXT1(ARB_depth_clamp
);
1747 params
[0] = ctx
->Transform
.DepthClamp
;
1749 case GL_MAX_DRAW_BUFFERS_ARB
:
1750 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxDrawBuffers
);
1752 case GL_DRAW_BUFFER0_ARB
:
1753 params
[0] = ENUM_TO_BOOLEAN(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
1755 case GL_DRAW_BUFFER1_ARB
:
1758 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1759 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1762 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
1763 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1766 case GL_DRAW_BUFFER2_ARB
:
1769 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1770 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1773 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
1774 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1777 case GL_DRAW_BUFFER3_ARB
:
1780 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1781 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1784 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
1785 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1788 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
1789 CHECK_EXT1(OES_read_format
);
1790 if (ctx
->NewState
& _NEW_BUFFERS
)
1791 _mesa_update_state(ctx
);
1792 params
[0] = INT_TO_BOOLEAN(_mesa_get_color_read_type(ctx
));
1794 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
1795 CHECK_EXT1(OES_read_format
);
1796 if (ctx
->NewState
& _NEW_BUFFERS
)
1797 _mesa_update_state(ctx
);
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
);
1802 params
[0] = INT_TO_BOOLEAN(6);
1804 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
1805 CHECK_EXT1(ATI_fragment_shader
);
1806 params
[0] = INT_TO_BOOLEAN(8);
1808 case GL_NUM_PASSES_ATI
:
1809 CHECK_EXT1(ATI_fragment_shader
);
1810 params
[0] = INT_TO_BOOLEAN(2);
1812 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
1813 CHECK_EXT1(ATI_fragment_shader
);
1814 params
[0] = INT_TO_BOOLEAN(8);
1816 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
1817 CHECK_EXT1(ATI_fragment_shader
);
1818 params
[0] = INT_TO_BOOLEAN(16);
1820 case GL_COLOR_ALPHA_PAIRING_ATI
:
1821 CHECK_EXT1(ATI_fragment_shader
);
1822 params
[0] = GL_TRUE
;
1824 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
1825 CHECK_EXT1(ATI_fragment_shader
);
1826 params
[0] = INT_TO_BOOLEAN(3);
1828 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
1829 CHECK_EXT1(ATI_fragment_shader
);
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
);
1855 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Name
);
1857 case GL_RENDERBUFFER_BINDING_EXT
:
1858 CHECK_EXT1(EXT_framebuffer_object
);
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
);
1863 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxColorAttachments
);
1865 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
1866 CHECK_EXT1(EXT_framebuffer_object
);
1867 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxRenderbufferSize
);
1869 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
1870 CHECK_EXT1(EXT_framebuffer_blit
);
1871 params
[0] = INT_TO_BOOLEAN(ctx
->ReadBuffer
->Name
);
1873 case GL_PROVOKING_VERTEX_EXT
:
1874 CHECK_EXT1(EXT_provoking_vertex
);
1875 params
[0] = ctx
->Light
.ProvokingVertex
;
1877 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
1878 CHECK_EXT1(EXT_provoking_vertex
);
1879 params
[0] = ctx
->Const
.QuadsFollowProvokingVertexConvention
;
1881 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
1882 CHECK_EXT1(ARB_fragment_shader
);
1883 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
1885 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
1886 CHECK_EXT1(ARB_fragment_shader
);
1887 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.FragmentShaderDerivative
);
1889 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
1890 CHECK_EXT1(ARB_vertex_shader
);
1891 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
1893 case GL_MAX_VARYING_FLOATS_ARB
:
1894 CHECK_EXT1(ARB_vertex_shader
);
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
);
1899 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxVertexTextureImageUnits
);
1901 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
1902 CHECK_EXT1(ARB_vertex_shader
);
1903 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxCombinedTextureImageUnits
);
1905 case GL_CURRENT_PROGRAM
:
1906 CHECK_EXT1(ARB_shader_objects
);
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
);
1911 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxSamples
);
1913 case GL_VERTEX_ARRAY_BINDING_APPLE
:
1914 CHECK_EXT1(APPLE_vertex_array_object
);
1915 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Name
);
1917 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
1918 CHECK_EXT1(ARB_seamless_cube_map
);
1919 params
[0] = ctx
->Texture
.CubeMapSeamless
;
1921 case GL_MAX_SERVER_WAIT_TIMEOUT
:
1922 CHECK_EXT1(ARB_sync
);
1923 params
[0] = INT64_TO_BOOLEAN(ctx
->Const
.MaxServerWaitTimeout
);
1925 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
1926 CHECK_EXT1(EXT_transform_feedback
);
1927 params
[0] = INT_TO_BOOLEAN(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
1929 case GL_RASTERIZER_DISCARD
:
1930 CHECK_EXT1(EXT_transform_feedback
);
1931 params
[0] = ctx
->TransformFeedback
.RasterDiscard
;
1933 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
1934 CHECK_EXT1(EXT_transform_feedback
);
1935 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
1937 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
1938 CHECK_EXT1(EXT_transform_feedback
);
1939 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
1941 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
1942 CHECK_EXT1(EXT_transform_feedback
);
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 goto invalid_enum_error
;
1963 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv(pname=0x%x)", pname
);
1967 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
1969 GET_CURRENT_CONTEXT(ctx
);
1970 ASSERT_OUTSIDE_BEGIN_END(ctx
);
1975 if (ctx
->Driver
.GetFloatv
&&
1976 ctx
->Driver
.GetFloatv(ctx
, pname
, params
))
1980 case GL_ACCUM_RED_BITS
:
1981 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumRedBits
);
1983 case GL_ACCUM_GREEN_BITS
:
1984 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
1986 case GL_ACCUM_BLUE_BITS
:
1987 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
1989 case GL_ACCUM_ALPHA_BITS
:
1990 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
1992 case GL_ACCUM_CLEAR_VALUE
:
1993 params
[0] = ctx
->Accum
.ClearColor
[0];
1994 params
[1] = ctx
->Accum
.ClearColor
[1];
1995 params
[2] = ctx
->Accum
.ClearColor
[2];
1996 params
[3] = ctx
->Accum
.ClearColor
[3];
1999 params
[0] = ctx
->Pixel
.AlphaBias
;
2002 if (ctx
->NewState
& _NEW_BUFFERS
)
2003 _mesa_update_state(ctx
);
2004 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.alphaBits
);
2006 case GL_ALPHA_SCALE
:
2007 params
[0] = ctx
->Pixel
.AlphaScale
;
2010 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.AlphaEnabled
);
2012 case GL_ALPHA_TEST_FUNC
:
2013 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2015 case GL_ALPHA_TEST_REF
:
2016 params
[0] = ctx
->Color
.AlphaRef
;
2018 case GL_ATTRIB_STACK_DEPTH
:
2019 params
[0] = (GLfloat
)(ctx
->AttribStackDepth
);
2021 case GL_AUTO_NORMAL
:
2022 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.AutoNormal
);
2024 case GL_AUX_BUFFERS
:
2025 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
2028 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Color
.BlendEnabled
& 1));
2031 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2034 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2036 case GL_BLEND_SRC_RGB_EXT
:
2037 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2039 case GL_BLEND_DST_RGB_EXT
:
2040 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2042 case GL_BLEND_SRC_ALPHA_EXT
:
2043 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2045 case GL_BLEND_DST_ALPHA_EXT
:
2046 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2048 case GL_BLEND_EQUATION
:
2049 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendEquationRGB
);
2051 case GL_BLEND_EQUATION_ALPHA_EXT
:
2052 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendEquationA
);
2054 case GL_BLEND_COLOR_EXT
:
2055 params
[0] = ctx
->Color
.BlendColor
[0];
2056 params
[1] = ctx
->Color
.BlendColor
[1];
2057 params
[2] = ctx
->Color
.BlendColor
[2];
2058 params
[3] = ctx
->Color
.BlendColor
[3];
2061 params
[0] = ctx
->Pixel
.BlueBias
;
2064 if (ctx
->NewState
& _NEW_BUFFERS
)
2065 _mesa_update_state(ctx
);
2066 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.blueBits
);
2069 params
[0] = ctx
->Pixel
.BlueScale
;
2071 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2072 params
[0] = (GLfloat
)(ctx
->ClientAttribStackDepth
);
2074 case GL_CLIP_PLANE0
:
2075 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
2077 case GL_CLIP_PLANE1
:
2078 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
2080 case GL_CLIP_PLANE2
:
2081 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
2083 case GL_CLIP_PLANE3
:
2084 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
2086 case GL_CLIP_PLANE4
:
2087 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
2089 case GL_CLIP_PLANE5
:
2090 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
2092 case GL_COLOR_CLEAR_VALUE
:
2093 params
[0] = ctx
->Color
.ClearColor
[0];
2094 params
[1] = ctx
->Color
.ClearColor
[1];
2095 params
[2] = ctx
->Color
.ClearColor
[2];
2096 params
[3] = ctx
->Color
.ClearColor
[3];
2098 case GL_COLOR_MATERIAL
:
2099 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.ColorMaterialEnabled
);
2101 case GL_COLOR_MATERIAL_FACE
:
2102 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2104 case GL_COLOR_MATERIAL_PARAMETER
:
2105 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2107 case GL_COLOR_WRITEMASK
:
2108 params
[0] = (GLfloat
)(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
2109 params
[1] = (GLfloat
)(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
2110 params
[2] = (GLfloat
)(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
2111 params
[3] = (GLfloat
)(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
2114 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.CullFlag
);
2116 case GL_CULL_FACE_MODE
:
2117 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2119 case GL_CURRENT_COLOR
:
2120 FLUSH_CURRENT(ctx
, 0);
2121 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
2122 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
2123 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
2124 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
2126 case GL_CURRENT_INDEX
:
2127 FLUSH_CURRENT(ctx
, 0);
2128 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0];
2130 case GL_CURRENT_NORMAL
:
2131 FLUSH_CURRENT(ctx
, 0);
2132 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
2133 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
2134 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
2136 case GL_CURRENT_RASTER_COLOR
:
2137 params
[0] = ctx
->Current
.RasterColor
[0];
2138 params
[1] = ctx
->Current
.RasterColor
[1];
2139 params
[2] = ctx
->Current
.RasterColor
[2];
2140 params
[3] = ctx
->Current
.RasterColor
[3];
2142 case GL_CURRENT_RASTER_DISTANCE
:
2143 params
[0] = ctx
->Current
.RasterDistance
;
2145 case GL_CURRENT_RASTER_INDEX
:
2148 case GL_CURRENT_RASTER_POSITION
:
2149 params
[0] = ctx
->Current
.RasterPos
[0];
2150 params
[1] = ctx
->Current
.RasterPos
[1];
2151 params
[2] = ctx
->Current
.RasterPos
[2];
2152 params
[3] = ctx
->Current
.RasterPos
[3];
2154 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
2155 params
[0] = ctx
->Current
.RasterSecondaryColor
[0];
2156 params
[1] = ctx
->Current
.RasterSecondaryColor
[1];
2157 params
[2] = ctx
->Current
.RasterSecondaryColor
[2];
2158 params
[3] = ctx
->Current
.RasterSecondaryColor
[3];
2160 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2162 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2163 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2164 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2165 "glGet(raster tex coords, unit %u)", unit
);
2168 params
[0] = ctx
->Current
.RasterTexCoords
[unit
][0];
2169 params
[1] = ctx
->Current
.RasterTexCoords
[unit
][1];
2170 params
[2] = ctx
->Current
.RasterTexCoords
[unit
][2];
2171 params
[3] = ctx
->Current
.RasterTexCoords
[unit
][3];
2174 case GL_CURRENT_RASTER_POSITION_VALID
:
2175 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Current
.RasterPosValid
);
2177 case GL_CURRENT_TEXTURE_COORDS
:
2179 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2180 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2181 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2182 "glGet(current tex coords, unit %u)", unit
);
2185 FLUSH_CURRENT(ctx
, 0);
2186 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0];
2187 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1];
2188 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2];
2189 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3];
2193 params
[0] = ctx
->Pixel
.DepthBias
;
2196 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.depthBits
);
2198 case GL_DEPTH_CLEAR_VALUE
:
2199 params
[0] = ((GLfloat
) ctx
->Depth
.Clear
);
2202 params
[0] = ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2204 case GL_DEPTH_RANGE
:
2205 params
[0] = ctx
->Viewport
.Near
;
2206 params
[1] = ctx
->Viewport
.Far
;
2208 case GL_DEPTH_SCALE
:
2209 params
[0] = ctx
->Pixel
.DepthScale
;
2212 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.Test
);
2214 case GL_DEPTH_WRITEMASK
:
2215 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.Mask
);
2218 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.DitherFlag
);
2220 case GL_DOUBLEBUFFER
:
2221 params
[0] = BOOLEAN_TO_FLOAT(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
2223 case GL_DRAW_BUFFER
:
2224 params
[0] = ENUM_TO_FLOAT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
2227 FLUSH_CURRENT(ctx
, 0);
2228 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
2230 case GL_FEEDBACK_BUFFER_SIZE
:
2231 params
[0] = (GLfloat
)(ctx
->Feedback
.BufferSize
);
2233 case GL_FEEDBACK_BUFFER_TYPE
:
2234 params
[0] = ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2237 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Fog
.Enabled
);
2240 params
[0] = ctx
->Fog
.Color
[0];
2241 params
[1] = ctx
->Fog
.Color
[1];
2242 params
[2] = ctx
->Fog
.Color
[2];
2243 params
[3] = ctx
->Fog
.Color
[3];
2245 case GL_FOG_DENSITY
:
2246 params
[0] = ctx
->Fog
.Density
;
2249 params
[0] = ctx
->Fog
.End
;
2252 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2255 params
[0] = ctx
->Fog
.Index
;
2258 params
[0] = ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2261 params
[0] = ctx
->Fog
.Start
;
2264 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2267 params
[0] = ctx
->Pixel
.GreenBias
;
2270 if (ctx
->NewState
& _NEW_BUFFERS
)
2271 _mesa_update_state(ctx
);
2272 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.greenBits
);
2274 case GL_GREEN_SCALE
:
2275 params
[0] = ctx
->Pixel
.GreenScale
;
2278 if (ctx
->NewState
& _NEW_BUFFERS
)
2279 _mesa_update_state(ctx
);
2280 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.indexBits
);
2282 case GL_INDEX_CLEAR_VALUE
:
2283 params
[0] = (GLfloat
)(ctx
->Color
.ClearIndex
);
2286 params
[0] = BOOLEAN_TO_FLOAT(GL_FALSE
);
2288 case GL_INDEX_OFFSET
:
2289 params
[0] = (GLfloat
)(ctx
->Pixel
.IndexOffset
);
2291 case GL_INDEX_SHIFT
:
2292 params
[0] = (GLfloat
)(ctx
->Pixel
.IndexShift
);
2294 case GL_INDEX_WRITEMASK
:
2295 params
[0] = (GLfloat
)(ctx
->Color
.IndexMask
);
2298 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[0].Enabled
);
2301 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[1].Enabled
);
2304 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[2].Enabled
);
2307 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[3].Enabled
);
2310 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[4].Enabled
);
2313 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[5].Enabled
);
2316 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[6].Enabled
);
2319 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[7].Enabled
);
2322 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Enabled
);
2324 case GL_LIGHT_MODEL_AMBIENT
:
2325 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2326 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2327 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2328 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2330 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2331 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2333 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2334 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Model
.LocalViewer
);
2336 case GL_LIGHT_MODEL_TWO_SIDE
:
2337 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Model
.TwoSide
);
2339 case GL_LINE_SMOOTH
:
2340 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Line
.SmoothFlag
);
2342 case GL_LINE_SMOOTH_HINT
:
2343 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2345 case GL_LINE_STIPPLE
:
2346 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Line
.StippleFlag
);
2348 case GL_LINE_STIPPLE_PATTERN
:
2349 params
[0] = (GLfloat
)(ctx
->Line
.StipplePattern
);
2351 case GL_LINE_STIPPLE_REPEAT
:
2352 params
[0] = (GLfloat
)(ctx
->Line
.StippleFactor
);
2355 params
[0] = ctx
->Line
.Width
;
2357 case GL_LINE_WIDTH_GRANULARITY
:
2358 params
[0] = ctx
->Const
.LineWidthGranularity
;
2360 case GL_LINE_WIDTH_RANGE
:
2361 params
[0] = ctx
->Const
.MinLineWidthAA
;
2362 params
[1] = ctx
->Const
.MaxLineWidthAA
;
2364 case GL_ALIASED_LINE_WIDTH_RANGE
:
2365 params
[0] = ctx
->Const
.MinLineWidth
;
2366 params
[1] = ctx
->Const
.MaxLineWidth
;
2369 params
[0] = (GLfloat
)(ctx
->List
.ListBase
);
2372 params
[0] = (GLfloat
)((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
2377 if (!ctx
->CompileFlag
)
2379 else if (ctx
->ExecuteFlag
)
2380 mode
= GL_COMPILE_AND_EXECUTE
;
2383 params
[0] = ENUM_TO_FLOAT(mode
);
2386 case GL_INDEX_LOGIC_OP
:
2387 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.IndexLogicOpEnabled
);
2389 case GL_COLOR_LOGIC_OP
:
2390 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.ColorLogicOpEnabled
);
2392 case GL_LOGIC_OP_MODE
:
2393 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2395 case GL_MAP1_COLOR_4
:
2396 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Color4
);
2398 case GL_MAP1_GRID_DOMAIN
:
2399 params
[0] = ctx
->Eval
.MapGrid1u1
;
2400 params
[1] = ctx
->Eval
.MapGrid1u2
;
2402 case GL_MAP1_GRID_SEGMENTS
:
2403 params
[0] = (GLfloat
)(ctx
->Eval
.MapGrid1un
);
2406 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Index
);
2408 case GL_MAP1_NORMAL
:
2409 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Normal
);
2411 case GL_MAP1_TEXTURE_COORD_1
:
2412 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord1
);
2414 case GL_MAP1_TEXTURE_COORD_2
:
2415 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord2
);
2417 case GL_MAP1_TEXTURE_COORD_3
:
2418 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord3
);
2420 case GL_MAP1_TEXTURE_COORD_4
:
2421 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord4
);
2423 case GL_MAP1_VERTEX_3
:
2424 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Vertex3
);
2426 case GL_MAP1_VERTEX_4
:
2427 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Vertex4
);
2429 case GL_MAP2_COLOR_4
:
2430 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Color4
);
2432 case GL_MAP2_GRID_DOMAIN
:
2433 params
[0] = ctx
->Eval
.MapGrid2u1
;
2434 params
[1] = ctx
->Eval
.MapGrid2u2
;
2435 params
[2] = ctx
->Eval
.MapGrid2v1
;
2436 params
[3] = ctx
->Eval
.MapGrid2v2
;
2438 case GL_MAP2_GRID_SEGMENTS
:
2439 params
[0] = (GLfloat
)(ctx
->Eval
.MapGrid2un
);
2440 params
[1] = (GLfloat
)(ctx
->Eval
.MapGrid2vn
);
2443 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Index
);
2445 case GL_MAP2_NORMAL
:
2446 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Normal
);
2448 case GL_MAP2_TEXTURE_COORD_1
:
2449 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord1
);
2451 case GL_MAP2_TEXTURE_COORD_2
:
2452 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord2
);
2454 case GL_MAP2_TEXTURE_COORD_3
:
2455 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord3
);
2457 case GL_MAP2_TEXTURE_COORD_4
:
2458 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord4
);
2460 case GL_MAP2_VERTEX_3
:
2461 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Vertex3
);
2463 case GL_MAP2_VERTEX_4
:
2464 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Vertex4
);
2467 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MapColorFlag
);
2469 case GL_MAP_STENCIL
:
2470 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MapStencilFlag
);
2472 case GL_MATRIX_MODE
:
2473 params
[0] = ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2475 case GL_MAX_ATTRIB_STACK_DEPTH
:
2476 params
[0] = (GLfloat
)(MAX_ATTRIB_STACK_DEPTH
);
2478 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2479 params
[0] = (GLfloat
)(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
2481 case GL_MAX_CLIP_PLANES
:
2482 params
[0] = (GLfloat
)(ctx
->Const
.MaxClipPlanes
);
2484 case GL_MAX_ELEMENTS_VERTICES
:
2485 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayLockSize
);
2487 case GL_MAX_ELEMENTS_INDICES
:
2488 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayLockSize
);
2490 case GL_MAX_EVAL_ORDER
:
2491 params
[0] = (GLfloat
)(MAX_EVAL_ORDER
);
2494 params
[0] = (GLfloat
)(ctx
->Const
.MaxLights
);
2496 case GL_MAX_LIST_NESTING
:
2497 params
[0] = (GLfloat
)(MAX_LIST_NESTING
);
2499 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2500 params
[0] = (GLfloat
)(MAX_MODELVIEW_STACK_DEPTH
);
2502 case GL_MAX_NAME_STACK_DEPTH
:
2503 params
[0] = (GLfloat
)(MAX_NAME_STACK_DEPTH
);
2505 case GL_MAX_PIXEL_MAP_TABLE
:
2506 params
[0] = (GLfloat
)(MAX_PIXEL_MAP_TABLE
);
2508 case GL_MAX_PROJECTION_STACK_DEPTH
:
2509 params
[0] = (GLfloat
)(MAX_PROJECTION_STACK_DEPTH
);
2511 case GL_MAX_TEXTURE_SIZE
:
2512 params
[0] = (GLfloat
)(1 << (ctx
->Const
.MaxTextureLevels
- 1));
2514 case GL_MAX_3D_TEXTURE_SIZE
:
2515 params
[0] = (GLfloat
)(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
2517 case GL_MAX_TEXTURE_STACK_DEPTH
:
2518 params
[0] = (GLfloat
)(MAX_TEXTURE_STACK_DEPTH
);
2520 case GL_MAX_VIEWPORT_DIMS
:
2521 params
[0] = (GLfloat
)(ctx
->Const
.MaxViewportWidth
);
2522 params
[1] = (GLfloat
)(ctx
->Const
.MaxViewportHeight
);
2524 case GL_MODELVIEW_MATRIX
:
2526 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
2527 params
[0] = matrix
[0];
2528 params
[1] = matrix
[1];
2529 params
[2] = matrix
[2];
2530 params
[3] = matrix
[3];
2531 params
[4] = matrix
[4];
2532 params
[5] = matrix
[5];
2533 params
[6] = matrix
[6];
2534 params
[7] = matrix
[7];
2535 params
[8] = matrix
[8];
2536 params
[9] = matrix
[9];
2537 params
[10] = matrix
[10];
2538 params
[11] = matrix
[11];
2539 params
[12] = matrix
[12];
2540 params
[13] = matrix
[13];
2541 params
[14] = matrix
[14];
2542 params
[15] = matrix
[15];
2545 case GL_MODELVIEW_STACK_DEPTH
:
2546 params
[0] = (GLfloat
)(ctx
->ModelviewMatrixStack
.Depth
+ 1);
2548 case GL_NAME_STACK_DEPTH
:
2549 params
[0] = (GLfloat
)(ctx
->Select
.NameStackDepth
);
2552 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.Normalize
);
2554 case GL_PACK_ALIGNMENT
:
2555 params
[0] = (GLfloat
)(ctx
->Pack
.Alignment
);
2557 case GL_PACK_LSB_FIRST
:
2558 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.LsbFirst
);
2560 case GL_PACK_ROW_LENGTH
:
2561 params
[0] = (GLfloat
)(ctx
->Pack
.RowLength
);
2563 case GL_PACK_SKIP_PIXELS
:
2564 params
[0] = (GLfloat
)(ctx
->Pack
.SkipPixels
);
2566 case GL_PACK_SKIP_ROWS
:
2567 params
[0] = (GLfloat
)(ctx
->Pack
.SkipRows
);
2569 case GL_PACK_SWAP_BYTES
:
2570 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.SwapBytes
);
2572 case GL_PACK_SKIP_IMAGES_EXT
:
2573 params
[0] = (GLfloat
)(ctx
->Pack
.SkipImages
);
2575 case GL_PACK_IMAGE_HEIGHT_EXT
:
2576 params
[0] = (GLfloat
)(ctx
->Pack
.ImageHeight
);
2578 case GL_PACK_INVERT_MESA
:
2579 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.Invert
);
2581 case GL_PERSPECTIVE_CORRECTION_HINT
:
2582 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
2584 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2585 params
[0] = (GLfloat
)(ctx
->PixelMaps
.AtoA
.Size
);
2587 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2588 params
[0] = (GLfloat
)(ctx
->PixelMaps
.BtoB
.Size
);
2590 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2591 params
[0] = (GLfloat
)(ctx
->PixelMaps
.GtoG
.Size
);
2593 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2594 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoA
.Size
);
2596 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2597 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoB
.Size
);
2599 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2600 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoG
.Size
);
2602 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2603 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoI
.Size
);
2605 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2606 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoR
.Size
);
2608 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2609 params
[0] = (GLfloat
)(ctx
->PixelMaps
.RtoR
.Size
);
2611 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2612 params
[0] = (GLfloat
)(ctx
->PixelMaps
.StoS
.Size
);
2615 params
[0] = ctx
->Point
.Size
;
2617 case GL_POINT_SIZE_GRANULARITY
:
2618 params
[0] = ctx
->Const
.PointSizeGranularity
;
2620 case GL_POINT_SIZE_RANGE
:
2621 params
[0] = ctx
->Const
.MinPointSizeAA
;
2622 params
[1] = ctx
->Const
.MaxPointSizeAA
;
2624 case GL_ALIASED_POINT_SIZE_RANGE
:
2625 params
[0] = ctx
->Const
.MinPointSize
;
2626 params
[1] = ctx
->Const
.MaxPointSize
;
2628 case GL_POINT_SMOOTH
:
2629 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Point
.SmoothFlag
);
2631 case GL_POINT_SMOOTH_HINT
:
2632 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
2634 case GL_POINT_SIZE_MIN_EXT
:
2635 params
[0] = ctx
->Point
.MinSize
;
2637 case GL_POINT_SIZE_MAX_EXT
:
2638 params
[0] = ctx
->Point
.MaxSize
;
2640 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2641 params
[0] = ctx
->Point
.Threshold
;
2643 case GL_DISTANCE_ATTENUATION_EXT
:
2644 params
[0] = ctx
->Point
.Params
[0];
2645 params
[1] = ctx
->Point
.Params
[1];
2646 params
[2] = ctx
->Point
.Params
[2];
2648 case GL_POLYGON_MODE
:
2649 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
2650 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
2652 case GL_POLYGON_OFFSET_BIAS_EXT
:
2653 params
[0] = ctx
->Polygon
.OffsetUnits
;
2655 case GL_POLYGON_OFFSET_FACTOR
:
2656 params
[0] = ctx
->Polygon
.OffsetFactor
;
2658 case GL_POLYGON_OFFSET_UNITS
:
2659 params
[0] = ctx
->Polygon
.OffsetUnits
;
2661 case GL_POLYGON_OFFSET_POINT
:
2662 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetPoint
);
2664 case GL_POLYGON_OFFSET_LINE
:
2665 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetLine
);
2667 case GL_POLYGON_OFFSET_FILL
:
2668 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetFill
);
2670 case GL_POLYGON_SMOOTH
:
2671 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.SmoothFlag
);
2673 case GL_POLYGON_SMOOTH_HINT
:
2674 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
2676 case GL_POLYGON_STIPPLE
:
2677 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.StippleFlag
);
2679 case GL_PROJECTION_MATRIX
:
2681 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
2682 params
[0] = matrix
[0];
2683 params
[1] = matrix
[1];
2684 params
[2] = matrix
[2];
2685 params
[3] = matrix
[3];
2686 params
[4] = matrix
[4];
2687 params
[5] = matrix
[5];
2688 params
[6] = matrix
[6];
2689 params
[7] = matrix
[7];
2690 params
[8] = matrix
[8];
2691 params
[9] = matrix
[9];
2692 params
[10] = matrix
[10];
2693 params
[11] = matrix
[11];
2694 params
[12] = matrix
[12];
2695 params
[13] = matrix
[13];
2696 params
[14] = matrix
[14];
2697 params
[15] = matrix
[15];
2700 case GL_PROJECTION_STACK_DEPTH
:
2701 params
[0] = (GLfloat
)(ctx
->ProjectionMatrixStack
.Depth
+ 1);
2703 case GL_READ_BUFFER
:
2704 params
[0] = ENUM_TO_FLOAT(ctx
->ReadBuffer
->ColorReadBuffer
);
2707 params
[0] = ctx
->Pixel
.RedBias
;
2710 if (ctx
->NewState
& _NEW_BUFFERS
)
2711 _mesa_update_state(ctx
);
2712 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.redBits
);
2715 params
[0] = ctx
->Pixel
.RedScale
;
2717 case GL_RENDER_MODE
:
2718 params
[0] = ENUM_TO_FLOAT(ctx
->RenderMode
);
2720 case GL_RESCALE_NORMAL
:
2721 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.RescaleNormals
);
2724 params
[0] = BOOLEAN_TO_FLOAT(GL_TRUE
);
2726 case GL_SCISSOR_BOX
:
2727 params
[0] = (GLfloat
)(ctx
->Scissor
.X
);
2728 params
[1] = (GLfloat
)(ctx
->Scissor
.Y
);
2729 params
[2] = (GLfloat
)(ctx
->Scissor
.Width
);
2730 params
[3] = (GLfloat
)(ctx
->Scissor
.Height
);
2732 case GL_SCISSOR_TEST
:
2733 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Scissor
.Enabled
);
2735 case GL_SELECTION_BUFFER_SIZE
:
2736 params
[0] = (GLfloat
)(ctx
->Select
.BufferSize
);
2738 case GL_SHADE_MODEL
:
2739 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
2741 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2742 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.SharedPalette
);
2744 case GL_STENCIL_BITS
:
2745 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.stencilBits
);
2747 case GL_STENCIL_CLEAR_VALUE
:
2748 params
[0] = (GLfloat
)(ctx
->Stencil
.Clear
);
2750 case GL_STENCIL_FAIL
:
2751 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
2753 case GL_STENCIL_FUNC
:
2754 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
2756 case GL_STENCIL_PASS_DEPTH_FAIL
:
2757 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
2759 case GL_STENCIL_PASS_DEPTH_PASS
:
2760 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
2762 case GL_STENCIL_REF
:
2763 params
[0] = (GLfloat
)(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
2765 case GL_STENCIL_TEST
:
2766 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Stencil
.Enabled
);
2768 case GL_STENCIL_VALUE_MASK
:
2769 params
[0] = (GLfloat
)(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
2771 case GL_STENCIL_WRITEMASK
:
2772 params
[0] = (GLfloat
)(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
2775 params
[0] = BOOLEAN_TO_FLOAT(ctx
->DrawBuffer
->Visual
.stereoMode
);
2777 case GL_SUBPIXEL_BITS
:
2778 params
[0] = (GLfloat
)(ctx
->Const
.SubPixelBits
);
2781 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D
));
2784 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D
));
2787 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D
));
2789 case GL_TEXTURE_1D_ARRAY_EXT
:
2790 CHECK_EXT1(MESA_texture_array
);
2791 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
2793 case GL_TEXTURE_2D_ARRAY_EXT
:
2794 CHECK_EXT1(MESA_texture_array
);
2795 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
2797 case GL_TEXTURE_BINDING_1D
:
2798 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
2800 case GL_TEXTURE_BINDING_2D
:
2801 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
2803 case GL_TEXTURE_BINDING_3D
:
2804 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
2806 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
2807 CHECK_EXT1(MESA_texture_array
);
2808 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
2810 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
2811 CHECK_EXT1(MESA_texture_array
);
2812 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
2814 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
2815 CHECK_EXT1(MESA_texture_array
);
2816 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayTextureLayers
);
2818 case GL_TEXTURE_GEN_S
:
2819 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
2821 case GL_TEXTURE_GEN_T
:
2822 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
2824 case GL_TEXTURE_GEN_R
:
2825 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
2827 case GL_TEXTURE_GEN_Q
:
2828 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
2830 case GL_TEXTURE_MATRIX
:
2832 const GLfloat
*matrix
;
2833 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2834 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2835 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
2839 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
2840 params
[0] = matrix
[0];
2841 params
[1] = matrix
[1];
2842 params
[2] = matrix
[2];
2843 params
[3] = matrix
[3];
2844 params
[4] = matrix
[4];
2845 params
[5] = matrix
[5];
2846 params
[6] = matrix
[6];
2847 params
[7] = matrix
[7];
2848 params
[8] = matrix
[8];
2849 params
[9] = matrix
[9];
2850 params
[10] = matrix
[10];
2851 params
[11] = matrix
[11];
2852 params
[12] = matrix
[12];
2853 params
[13] = matrix
[13];
2854 params
[14] = matrix
[14];
2855 params
[15] = matrix
[15];
2858 case GL_TEXTURE_STACK_DEPTH
:
2860 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2861 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2862 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2863 "glGet(texture stack depth, unit %u)", unit
);
2866 params
[0] = (GLfloat
)(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
2869 case GL_UNPACK_ALIGNMENT
:
2870 params
[0] = (GLfloat
)(ctx
->Unpack
.Alignment
);
2872 case GL_UNPACK_LSB_FIRST
:
2873 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.LsbFirst
);
2875 case GL_UNPACK_ROW_LENGTH
:
2876 params
[0] = (GLfloat
)(ctx
->Unpack
.RowLength
);
2878 case GL_UNPACK_SKIP_PIXELS
:
2879 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipPixels
);
2881 case GL_UNPACK_SKIP_ROWS
:
2882 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipRows
);
2884 case GL_UNPACK_SWAP_BYTES
:
2885 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.SwapBytes
);
2887 case GL_UNPACK_SKIP_IMAGES_EXT
:
2888 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipImages
);
2890 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2891 params
[0] = (GLfloat
)(ctx
->Unpack
.ImageHeight
);
2893 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
2894 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.ClientStorage
);
2897 params
[0] = (GLfloat
)(ctx
->Viewport
.X
);
2898 params
[1] = (GLfloat
)(ctx
->Viewport
.Y
);
2899 params
[2] = (GLfloat
)(ctx
->Viewport
.Width
);
2900 params
[3] = (GLfloat
)(ctx
->Viewport
.Height
);
2903 params
[0] = ctx
->Pixel
.ZoomX
;
2906 params
[0] = ctx
->Pixel
.ZoomY
;
2908 case GL_VERTEX_ARRAY
:
2909 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
2911 case GL_VERTEX_ARRAY_SIZE
:
2912 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.Size
);
2914 case GL_VERTEX_ARRAY_TYPE
:
2915 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Vertex
.Type
);
2917 case GL_VERTEX_ARRAY_STRIDE
:
2918 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
2920 case GL_VERTEX_ARRAY_COUNT_EXT
:
2921 params
[0] = (GLfloat
)(0);
2923 case GL_NORMAL_ARRAY
:
2924 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
2926 case GL_NORMAL_ARRAY_TYPE
:
2927 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Normal
.Type
);
2929 case GL_NORMAL_ARRAY_STRIDE
:
2930 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Normal
.Stride
);
2932 case GL_NORMAL_ARRAY_COUNT_EXT
:
2933 params
[0] = (GLfloat
)(0);
2935 case GL_COLOR_ARRAY
:
2936 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Color
.Enabled
);
2938 case GL_COLOR_ARRAY_SIZE
:
2939 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.Size
);
2941 case GL_COLOR_ARRAY_TYPE
:
2942 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Color
.Type
);
2944 case GL_COLOR_ARRAY_STRIDE
:
2945 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.Stride
);
2947 case GL_COLOR_ARRAY_COUNT_EXT
:
2948 params
[0] = (GLfloat
)(0);
2950 case GL_INDEX_ARRAY
:
2951 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Index
.Enabled
);
2953 case GL_INDEX_ARRAY_TYPE
:
2954 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Index
.Type
);
2956 case GL_INDEX_ARRAY_STRIDE
:
2957 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Index
.Stride
);
2959 case GL_INDEX_ARRAY_COUNT_EXT
:
2960 params
[0] = (GLfloat
)(0);
2962 case GL_TEXTURE_COORD_ARRAY
:
2963 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
2965 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2966 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
2968 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2969 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
2971 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2972 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
2974 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2975 params
[0] = (GLfloat
)(0);
2977 case GL_EDGE_FLAG_ARRAY
:
2978 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
2980 case GL_EDGE_FLAG_ARRAY_STRIDE
:
2981 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
2983 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
2984 params
[0] = (GLfloat
)(0);
2986 case GL_MAX_TEXTURE_UNITS_ARB
:
2987 CHECK_EXT1(ARB_multitexture
);
2988 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureUnits
);
2990 case GL_ACTIVE_TEXTURE_ARB
:
2991 CHECK_EXT1(ARB_multitexture
);
2992 params
[0] = (GLfloat
)(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
2994 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
2995 CHECK_EXT1(ARB_multitexture
);
2996 params
[0] = (GLfloat
)(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
2998 case GL_TEXTURE_CUBE_MAP_ARB
:
2999 CHECK_EXT1(ARB_texture_cube_map
);
3000 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
3002 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3003 CHECK_EXT1(ARB_texture_cube_map
);
3004 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
3006 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3007 CHECK_EXT1(ARB_texture_cube_map
);
3008 params
[0] = (GLfloat
)((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
3010 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3011 params
[0] = (GLfloat
)(ctx
->Hint
.TextureCompression
);
3013 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3014 params
[0] = (GLfloat
)(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
3016 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3019 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
3021 for (i
= 0; i
< n
; i
++)
3022 params
[i
] = ENUM_TO_FLOAT(formats
[i
]);
3025 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3026 CHECK_EXT1(EXT_compiled_vertex_array
);
3027 params
[0] = (GLfloat
)(ctx
->Array
.LockFirst
);
3029 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3030 CHECK_EXT1(EXT_compiled_vertex_array
);
3031 params
[0] = (GLfloat
)(ctx
->Array
.LockCount
);
3033 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3035 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
3036 params
[0] = matrix
[0];
3037 params
[1] = matrix
[4];
3038 params
[2] = matrix
[8];
3039 params
[3] = matrix
[12];
3040 params
[4] = matrix
[1];
3041 params
[5] = matrix
[5];
3042 params
[6] = matrix
[9];
3043 params
[7] = matrix
[13];
3044 params
[8] = matrix
[2];
3045 params
[9] = matrix
[6];
3046 params
[10] = matrix
[10];
3047 params
[11] = matrix
[14];
3048 params
[12] = matrix
[3];
3049 params
[13] = matrix
[7];
3050 params
[14] = matrix
[11];
3051 params
[15] = matrix
[15];
3054 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3056 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
3057 params
[0] = matrix
[0];
3058 params
[1] = matrix
[4];
3059 params
[2] = matrix
[8];
3060 params
[3] = matrix
[12];
3061 params
[4] = matrix
[1];
3062 params
[5] = matrix
[5];
3063 params
[6] = matrix
[9];
3064 params
[7] = matrix
[13];
3065 params
[8] = matrix
[2];
3066 params
[9] = matrix
[6];
3067 params
[10] = matrix
[10];
3068 params
[11] = matrix
[14];
3069 params
[12] = matrix
[3];
3070 params
[13] = matrix
[7];
3071 params
[14] = matrix
[11];
3072 params
[15] = matrix
[15];
3075 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3077 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
3078 params
[0] = matrix
[0];
3079 params
[1] = matrix
[4];
3080 params
[2] = matrix
[8];
3081 params
[3] = matrix
[12];
3082 params
[4] = matrix
[1];
3083 params
[5] = matrix
[5];
3084 params
[6] = matrix
[9];
3085 params
[7] = matrix
[13];
3086 params
[8] = matrix
[2];
3087 params
[9] = matrix
[6];
3088 params
[10] = matrix
[10];
3089 params
[11] = matrix
[14];
3090 params
[12] = matrix
[3];
3091 params
[13] = matrix
[7];
3092 params
[14] = matrix
[11];
3093 params
[15] = matrix
[15];
3096 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3098 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
3099 params
[0] = matrix
[0];
3100 params
[1] = matrix
[4];
3101 params
[2] = matrix
[8];
3102 params
[3] = matrix
[12];
3103 params
[4] = matrix
[1];
3104 params
[5] = matrix
[5];
3105 params
[6] = matrix
[9];
3106 params
[7] = matrix
[13];
3107 params
[8] = matrix
[2];
3108 params
[9] = matrix
[6];
3109 params
[10] = matrix
[10];
3110 params
[11] = matrix
[14];
3111 params
[12] = matrix
[3];
3112 params
[13] = matrix
[7];
3113 params
[14] = matrix
[11];
3114 params
[15] = matrix
[15];
3117 case GL_COLOR_MATRIX_SGI
:
3119 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
3120 params
[0] = matrix
[0];
3121 params
[1] = matrix
[1];
3122 params
[2] = matrix
[2];
3123 params
[3] = matrix
[3];
3124 params
[4] = matrix
[4];
3125 params
[5] = matrix
[5];
3126 params
[6] = matrix
[6];
3127 params
[7] = matrix
[7];
3128 params
[8] = matrix
[8];
3129 params
[9] = matrix
[9];
3130 params
[10] = matrix
[10];
3131 params
[11] = matrix
[11];
3132 params
[12] = matrix
[12];
3133 params
[13] = matrix
[13];
3134 params
[14] = matrix
[14];
3135 params
[15] = matrix
[15];
3138 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3139 params
[0] = (GLfloat
)(ctx
->ColorMatrixStack
.Depth
+ 1);
3141 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3142 params
[0] = (GLfloat
)(MAX_COLOR_STACK_DEPTH
);
3144 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3145 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[0];
3147 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3148 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[1];
3150 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3151 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[2];
3153 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3154 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[3];
3156 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3157 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[0];
3159 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3160 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[1];
3162 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3163 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[2];
3165 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3166 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[3];
3168 case GL_CONVOLUTION_1D_EXT
:
3169 CHECK_EXT1(EXT_convolution
);
3170 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Convolution1DEnabled
);
3172 case GL_CONVOLUTION_2D_EXT
:
3173 CHECK_EXT1(EXT_convolution
);
3174 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Convolution2DEnabled
);
3176 case GL_SEPARABLE_2D_EXT
:
3177 CHECK_EXT1(EXT_convolution
);
3178 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Separable2DEnabled
);
3180 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3181 CHECK_EXT1(EXT_convolution
);
3182 params
[0] = ctx
->Pixel
.PostConvolutionScale
[0];
3184 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3185 CHECK_EXT1(EXT_convolution
);
3186 params
[0] = ctx
->Pixel
.PostConvolutionScale
[1];
3188 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3189 CHECK_EXT1(EXT_convolution
);
3190 params
[0] = ctx
->Pixel
.PostConvolutionScale
[2];
3192 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3193 CHECK_EXT1(EXT_convolution
);
3194 params
[0] = ctx
->Pixel
.PostConvolutionScale
[3];
3196 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3197 CHECK_EXT1(EXT_convolution
);
3198 params
[0] = ctx
->Pixel
.PostConvolutionBias
[0];
3200 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3201 CHECK_EXT1(EXT_convolution
);
3202 params
[0] = ctx
->Pixel
.PostConvolutionBias
[1];
3204 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3205 CHECK_EXT1(EXT_convolution
);
3206 params
[0] = ctx
->Pixel
.PostConvolutionBias
[2];
3208 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3209 CHECK_EXT1(EXT_convolution
);
3210 params
[0] = ctx
->Pixel
.PostConvolutionBias
[3];
3213 CHECK_EXT1(EXT_histogram
);
3214 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.HistogramEnabled
);
3217 CHECK_EXT1(EXT_histogram
);
3218 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MinMaxEnabled
);
3220 case GL_COLOR_TABLE_SGI
:
3221 CHECK_EXT1(SGI_color_table
);
3222 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
3224 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3225 CHECK_EXT1(SGI_color_table
);
3226 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
3228 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3229 CHECK_EXT1(SGI_color_table
);
3230 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
3232 case GL_TEXTURE_COLOR_TABLE_SGI
:
3233 CHECK_EXT1(SGI_texture_color_table
);
3234 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
3236 case GL_COLOR_SUM_EXT
:
3237 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
3238 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Fog
.ColorSumEnabled
);
3240 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3241 CHECK_EXT1(EXT_secondary_color
);
3242 FLUSH_CURRENT(ctx
, 0);
3243 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
3244 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
3245 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
3246 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3];
3248 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3249 CHECK_EXT1(EXT_secondary_color
);
3250 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
3252 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3253 CHECK_EXT1(EXT_secondary_color
);
3254 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
3256 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3257 CHECK_EXT1(EXT_secondary_color
);
3258 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
3260 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3261 CHECK_EXT1(EXT_secondary_color
);
3262 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
3264 case GL_CURRENT_FOG_COORDINATE_EXT
:
3265 CHECK_EXT1(EXT_fog_coord
);
3266 FLUSH_CURRENT(ctx
, 0);
3267 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
3269 case GL_FOG_COORDINATE_ARRAY_EXT
:
3270 CHECK_EXT1(EXT_fog_coord
);
3271 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
3273 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3274 CHECK_EXT1(EXT_fog_coord
);
3275 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
3277 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3278 CHECK_EXT1(EXT_fog_coord
);
3279 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
3281 case GL_FOG_COORDINATE_SOURCE_EXT
:
3282 CHECK_EXT1(EXT_fog_coord
);
3283 params
[0] = ENUM_TO_FLOAT(ctx
->Fog
.FogCoordinateSource
);
3285 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3286 CHECK_EXT1(EXT_texture_lod_bias
);
3287 params
[0] = ctx
->Const
.MaxTextureLodBias
;
3289 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3290 CHECK_EXT1(EXT_texture_filter_anisotropic
);
3291 params
[0] = ctx
->Const
.MaxTextureMaxAnisotropy
;
3293 case GL_MULTISAMPLE_ARB
:
3294 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.Enabled
);
3296 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
3297 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleAlphaToCoverage
);
3299 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
3300 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleAlphaToOne
);
3302 case GL_SAMPLE_COVERAGE_ARB
:
3303 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleCoverage
);
3305 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
3306 params
[0] = ctx
->Multisample
.SampleCoverageValue
;
3308 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
3309 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleCoverageInvert
);
3311 case GL_SAMPLE_BUFFERS_ARB
:
3312 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
3314 case GL_SAMPLES_ARB
:
3315 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.samples
);
3317 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
3318 CHECK_EXT1(IBM_rasterpos_clip
);
3319 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.RasterPositionUnclipped
);
3321 case GL_POINT_SPRITE_NV
:
3322 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
3323 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Point
.PointSprite
);
3325 case GL_POINT_SPRITE_R_MODE_NV
:
3326 CHECK_EXT1(NV_point_sprite
);
3327 params
[0] = ENUM_TO_FLOAT(ctx
->Point
.SpriteRMode
);
3329 case GL_POINT_SPRITE_COORD_ORIGIN
:
3330 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
3331 params
[0] = ENUM_TO_FLOAT(ctx
->Point
.SpriteOrigin
);
3333 case GL_GENERATE_MIPMAP_HINT_SGIS
:
3334 CHECK_EXT1(SGIS_generate_mipmap
);
3335 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.GenerateMipmap
);
3337 case GL_VERTEX_PROGRAM_BINDING_NV
:
3338 CHECK_EXT1(NV_vertex_program
);
3339 params
[0] = (GLfloat
)((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
3341 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
3342 CHECK_EXT1(NV_vertex_program
);
3343 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
3345 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
3346 CHECK_EXT1(NV_vertex_program
);
3347 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
3349 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
3350 CHECK_EXT1(NV_vertex_program
);
3351 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
3353 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
3354 CHECK_EXT1(NV_vertex_program
);
3355 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
3357 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
3358 CHECK_EXT1(NV_vertex_program
);
3359 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
3361 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
3362 CHECK_EXT1(NV_vertex_program
);
3363 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
3365 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
3366 CHECK_EXT1(NV_vertex_program
);
3367 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
3369 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
3370 CHECK_EXT1(NV_vertex_program
);
3371 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
3373 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
3374 CHECK_EXT1(NV_vertex_program
);
3375 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
3377 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
3378 CHECK_EXT1(NV_vertex_program
);
3379 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
3381 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
3382 CHECK_EXT1(NV_vertex_program
);
3383 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
3385 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
3386 CHECK_EXT1(NV_vertex_program
);
3387 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
3389 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
3390 CHECK_EXT1(NV_vertex_program
);
3391 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
3393 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
3394 CHECK_EXT1(NV_vertex_program
);
3395 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
3397 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
3398 CHECK_EXT1(NV_vertex_program
);
3399 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
3401 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
3402 CHECK_EXT1(NV_vertex_program
);
3403 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
3405 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
3406 CHECK_EXT1(NV_vertex_program
);
3407 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[0]);
3409 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
3410 CHECK_EXT1(NV_vertex_program
);
3411 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[1]);
3413 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
3414 CHECK_EXT1(NV_vertex_program
);
3415 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[2]);
3417 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
3418 CHECK_EXT1(NV_vertex_program
);
3419 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[3]);
3421 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
3422 CHECK_EXT1(NV_vertex_program
);
3423 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[4]);
3425 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
3426 CHECK_EXT1(NV_vertex_program
);
3427 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[5]);
3429 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
3430 CHECK_EXT1(NV_vertex_program
);
3431 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[6]);
3433 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
3434 CHECK_EXT1(NV_vertex_program
);
3435 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[7]);
3437 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
3438 CHECK_EXT1(NV_vertex_program
);
3439 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[8]);
3441 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
3442 CHECK_EXT1(NV_vertex_program
);
3443 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[9]);
3445 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
3446 CHECK_EXT1(NV_vertex_program
);
3447 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[10]);
3449 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
3450 CHECK_EXT1(NV_vertex_program
);
3451 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[11]);
3453 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
3454 CHECK_EXT1(NV_vertex_program
);
3455 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[12]);
3457 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
3458 CHECK_EXT1(NV_vertex_program
);
3459 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[13]);
3461 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
3462 CHECK_EXT1(NV_vertex_program
);
3463 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[14]);
3465 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
3466 CHECK_EXT1(NV_vertex_program
);
3467 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[15]);
3469 case GL_FRAGMENT_PROGRAM_NV
:
3470 CHECK_EXT1(NV_fragment_program
);
3471 params
[0] = BOOLEAN_TO_FLOAT(ctx
->FragmentProgram
.Enabled
);
3473 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
3474 CHECK_EXT1(NV_fragment_program
);
3475 params
[0] = (GLfloat
)(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
3477 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
3478 CHECK_EXT1(NV_fragment_program
);
3479 params
[0] = (GLfloat
)(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
3481 case GL_TEXTURE_RECTANGLE_NV
:
3482 CHECK_EXT1(NV_texture_rectangle
);
3483 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
3485 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
3486 CHECK_EXT1(NV_texture_rectangle
);
3487 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
3489 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
3490 CHECK_EXT1(NV_texture_rectangle
);
3491 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureRectSize
);
3493 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
3494 CHECK_EXT1(EXT_stencil_two_side
);
3495 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Stencil
.TestTwoSide
);
3497 case GL_ACTIVE_STENCIL_FACE_EXT
:
3498 CHECK_EXT1(EXT_stencil_two_side
);
3499 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
3501 case GL_MAX_SHININESS_NV
:
3502 CHECK_EXT1(NV_light_max_exponent
);
3503 params
[0] = ctx
->Const
.MaxShininess
;
3505 case GL_MAX_SPOT_EXPONENT_NV
:
3506 CHECK_EXT1(NV_light_max_exponent
);
3507 params
[0] = ctx
->Const
.MaxSpotExponent
;
3509 case GL_ARRAY_BUFFER_BINDING_ARB
:
3510 params
[0] = (GLfloat
)(ctx
->Array
.ArrayBufferObj
->Name
);
3512 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
3513 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
3515 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
3516 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
3518 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3519 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
3521 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
3522 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
3524 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
3525 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
3527 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
3528 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
3530 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3531 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
3533 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
3534 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
3536 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
3537 params
[0] = (GLfloat
)(ctx
->Array
.ElementArrayBufferObj
->Name
);
3539 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
3540 CHECK_EXT1(EXT_pixel_buffer_object
);
3541 params
[0] = (GLfloat
)(ctx
->Pack
.BufferObj
->Name
);
3543 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
3544 CHECK_EXT1(EXT_pixel_buffer_object
);
3545 params
[0] = (GLfloat
)(ctx
->Unpack
.BufferObj
->Name
);
3547 case GL_VERTEX_PROGRAM_ARB
:
3548 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3549 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.Enabled
);
3551 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
3552 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3553 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.PointSizeEnabled
);
3555 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
3556 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3557 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.TwoSideEnabled
);
3559 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
3560 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3561 params
[0] = (GLfloat
)(ctx
->Const
.MaxProgramMatrixStackDepth
);
3563 case GL_MAX_PROGRAM_MATRICES_ARB
:
3564 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3565 params
[0] = (GLfloat
)(ctx
->Const
.MaxProgramMatrices
);
3567 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
3568 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3569 params
[0] = BOOLEAN_TO_FLOAT(ctx
->CurrentStack
->Depth
+ 1);
3571 case GL_CURRENT_MATRIX_ARB
:
3572 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
3574 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
3575 params
[0] = matrix
[0];
3576 params
[1] = matrix
[1];
3577 params
[2] = matrix
[2];
3578 params
[3] = matrix
[3];
3579 params
[4] = matrix
[4];
3580 params
[5] = matrix
[5];
3581 params
[6] = matrix
[6];
3582 params
[7] = matrix
[7];
3583 params
[8] = matrix
[8];
3584 params
[9] = matrix
[9];
3585 params
[10] = matrix
[10];
3586 params
[11] = matrix
[11];
3587 params
[12] = matrix
[12];
3588 params
[13] = matrix
[13];
3589 params
[14] = matrix
[14];
3590 params
[15] = matrix
[15];
3593 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
3594 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
3596 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
3597 params
[0] = matrix
[0];
3598 params
[1] = matrix
[4];
3599 params
[2] = matrix
[8];
3600 params
[3] = matrix
[12];
3601 params
[4] = matrix
[1];
3602 params
[5] = matrix
[5];
3603 params
[6] = matrix
[9];
3604 params
[7] = matrix
[13];
3605 params
[8] = matrix
[2];
3606 params
[9] = matrix
[6];
3607 params
[10] = matrix
[10];
3608 params
[11] = matrix
[14];
3609 params
[12] = matrix
[3];
3610 params
[13] = matrix
[7];
3611 params
[14] = matrix
[11];
3612 params
[15] = matrix
[15];
3615 case GL_MAX_VERTEX_ATTRIBS_ARB
:
3616 CHECK_EXT1(ARB_vertex_program
);
3617 params
[0] = (GLfloat
)(ctx
->Const
.VertexProgram
.MaxAttribs
);
3619 case GL_PROGRAM_ERROR_POSITION_ARB
:
3620 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
3621 params
[0] = (GLfloat
)(ctx
->Program
.ErrorPos
);
3623 case GL_FRAGMENT_PROGRAM_ARB
:
3624 CHECK_EXT1(ARB_fragment_program
);
3625 params
[0] = BOOLEAN_TO_FLOAT(ctx
->FragmentProgram
.Enabled
);
3627 case GL_MAX_TEXTURE_COORDS_ARB
:
3628 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
3629 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureCoordUnits
);
3631 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
3632 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
3633 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureImageUnits
);
3635 case GL_DEPTH_BOUNDS_TEST_EXT
:
3636 CHECK_EXT1(EXT_depth_bounds_test
);
3637 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.BoundsTest
);
3639 case GL_DEPTH_BOUNDS_EXT
:
3640 CHECK_EXT1(EXT_depth_bounds_test
);
3641 params
[0] = ctx
->Depth
.BoundsMin
;
3642 params
[1] = ctx
->Depth
.BoundsMax
;
3644 case GL_DEPTH_CLAMP
:
3645 CHECK_EXT1(ARB_depth_clamp
);
3646 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.DepthClamp
);
3648 case GL_MAX_DRAW_BUFFERS_ARB
:
3649 params
[0] = (GLfloat
)(ctx
->Const
.MaxDrawBuffers
);
3651 case GL_DRAW_BUFFER0_ARB
:
3652 params
[0] = ENUM_TO_FLOAT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
3654 case GL_DRAW_BUFFER1_ARB
:
3657 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3658 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3661 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
3662 params
[0] = ENUM_TO_FLOAT(buffer
);
3665 case GL_DRAW_BUFFER2_ARB
:
3668 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3669 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3672 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
3673 params
[0] = ENUM_TO_FLOAT(buffer
);
3676 case GL_DRAW_BUFFER3_ARB
:
3679 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3680 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3683 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
3684 params
[0] = ENUM_TO_FLOAT(buffer
);
3687 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
3688 CHECK_EXT1(OES_read_format
);
3689 if (ctx
->NewState
& _NEW_BUFFERS
)
3690 _mesa_update_state(ctx
);
3691 params
[0] = (GLfloat
)(_mesa_get_color_read_type(ctx
));
3693 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
3694 CHECK_EXT1(OES_read_format
);
3695 if (ctx
->NewState
& _NEW_BUFFERS
)
3696 _mesa_update_state(ctx
);
3697 params
[0] = (GLfloat
)(_mesa_get_color_read_format(ctx
));
3699 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
3700 CHECK_EXT1(ATI_fragment_shader
);
3701 params
[0] = (GLfloat
)(6);
3703 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
3704 CHECK_EXT1(ATI_fragment_shader
);
3705 params
[0] = (GLfloat
)(8);
3707 case GL_NUM_PASSES_ATI
:
3708 CHECK_EXT1(ATI_fragment_shader
);
3709 params
[0] = (GLfloat
)(2);
3711 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
3712 CHECK_EXT1(ATI_fragment_shader
);
3713 params
[0] = (GLfloat
)(8);
3715 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
3716 CHECK_EXT1(ATI_fragment_shader
);
3717 params
[0] = (GLfloat
)(16);
3719 case GL_COLOR_ALPHA_PAIRING_ATI
:
3720 CHECK_EXT1(ATI_fragment_shader
);
3721 params
[0] = BOOLEAN_TO_FLOAT(GL_TRUE
);
3723 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
3724 CHECK_EXT1(ATI_fragment_shader
);
3725 params
[0] = (GLfloat
)(3);
3727 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
3728 CHECK_EXT1(ATI_fragment_shader
);
3729 params
[0] = (GLfloat
)(3);
3731 case GL_STENCIL_BACK_FUNC
:
3732 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.Function
[1]);
3734 case GL_STENCIL_BACK_VALUE_MASK
:
3735 params
[0] = (GLfloat
)(ctx
->Stencil
.ValueMask
[1]);
3737 case GL_STENCIL_BACK_WRITEMASK
:
3738 params
[0] = (GLfloat
)(ctx
->Stencil
.WriteMask
[1]);
3740 case GL_STENCIL_BACK_REF
:
3741 params
[0] = (GLfloat
)(ctx
->Stencil
.Ref
[1]);
3743 case GL_STENCIL_BACK_FAIL
:
3744 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[1]);
3746 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
3747 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[1]);
3749 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
3750 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[1]);
3752 case GL_FRAMEBUFFER_BINDING_EXT
:
3753 CHECK_EXT1(EXT_framebuffer_object
);
3754 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Name
);
3756 case GL_RENDERBUFFER_BINDING_EXT
:
3757 CHECK_EXT1(EXT_framebuffer_object
);
3758 params
[0] = (GLfloat
)(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
3760 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
3761 CHECK_EXT1(EXT_framebuffer_object
);
3762 params
[0] = (GLfloat
)(ctx
->Const
.MaxColorAttachments
);
3764 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
3765 CHECK_EXT1(EXT_framebuffer_object
);
3766 params
[0] = (GLfloat
)(ctx
->Const
.MaxRenderbufferSize
);
3768 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
3769 CHECK_EXT1(EXT_framebuffer_blit
);
3770 params
[0] = (GLfloat
)(ctx
->ReadBuffer
->Name
);
3772 case GL_PROVOKING_VERTEX_EXT
:
3773 CHECK_EXT1(EXT_provoking_vertex
);
3774 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.ProvokingVertex
);
3776 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
3777 CHECK_EXT1(EXT_provoking_vertex
);
3778 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
3780 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
3781 CHECK_EXT1(ARB_fragment_shader
);
3782 params
[0] = (GLfloat
)(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
3784 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
3785 CHECK_EXT1(ARB_fragment_shader
);
3786 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.FragmentShaderDerivative
);
3788 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
3789 CHECK_EXT1(ARB_vertex_shader
);
3790 params
[0] = (GLfloat
)(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
3792 case GL_MAX_VARYING_FLOATS_ARB
:
3793 CHECK_EXT1(ARB_vertex_shader
);
3794 params
[0] = (GLfloat
)(ctx
->Const
.MaxVarying
* 4);
3796 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
3797 CHECK_EXT1(ARB_vertex_shader
);
3798 params
[0] = (GLfloat
)(ctx
->Const
.MaxVertexTextureImageUnits
);
3800 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
3801 CHECK_EXT1(ARB_vertex_shader
);
3802 params
[0] = (GLfloat
)(ctx
->Const
.MaxCombinedTextureImageUnits
);
3804 case GL_CURRENT_PROGRAM
:
3805 CHECK_EXT1(ARB_shader_objects
);
3806 params
[0] = (GLfloat
)(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
3808 case GL_MAX_SAMPLES
:
3809 CHECK_EXT1(ARB_framebuffer_object
);
3810 params
[0] = (GLfloat
)(ctx
->Const
.MaxSamples
);
3812 case GL_VERTEX_ARRAY_BINDING_APPLE
:
3813 CHECK_EXT1(APPLE_vertex_array_object
);
3814 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Name
);
3816 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
3817 CHECK_EXT1(ARB_seamless_cube_map
);
3818 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.CubeMapSeamless
);
3820 case GL_MAX_SERVER_WAIT_TIMEOUT
:
3821 CHECK_EXT1(ARB_sync
);
3822 params
[0] = (GLfloat
)(ctx
->Const
.MaxServerWaitTimeout
);
3824 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
3825 CHECK_EXT1(EXT_transform_feedback
);
3826 params
[0] = (GLfloat
)(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
3828 case GL_RASTERIZER_DISCARD
:
3829 CHECK_EXT1(EXT_transform_feedback
);
3830 params
[0] = BOOLEAN_TO_FLOAT(ctx
->TransformFeedback
.RasterDiscard
);
3832 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
3833 CHECK_EXT1(EXT_transform_feedback
);
3834 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
3836 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
3837 CHECK_EXT1(EXT_transform_feedback
);
3838 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
3840 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
3841 CHECK_EXT1(EXT_transform_feedback
);
3842 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
3844 case GL_NUM_EXTENSIONS
:
3845 params
[0] = (GLfloat
)(_mesa_get_extension_count(ctx
));
3847 case GL_MAJOR_VERSION
:
3848 params
[0] = (GLfloat
)(ctx
->VersionMajor
);
3850 case GL_MINOR_VERSION
:
3851 params
[0] = (GLfloat
)(ctx
->VersionMinor
);
3853 case GL_CONTEXT_FLAGS
:
3854 params
[0] = (GLfloat
)(ctx
->Const
.ContextFlags
);
3857 goto invalid_enum_error
;
3862 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv(pname=0x%x)", pname
);
3866 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3868 GET_CURRENT_CONTEXT(ctx
);
3869 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3874 if (ctx
->Driver
.GetIntegerv
&&
3875 ctx
->Driver
.GetIntegerv(ctx
, pname
, params
))
3879 case GL_ACCUM_RED_BITS
:
3880 params
[0] = ctx
->DrawBuffer
->Visual
.accumRedBits
;
3882 case GL_ACCUM_GREEN_BITS
:
3883 params
[0] = ctx
->DrawBuffer
->Visual
.accumGreenBits
;
3885 case GL_ACCUM_BLUE_BITS
:
3886 params
[0] = ctx
->DrawBuffer
->Visual
.accumBlueBits
;
3888 case GL_ACCUM_ALPHA_BITS
:
3889 params
[0] = ctx
->DrawBuffer
->Visual
.accumAlphaBits
;
3891 case GL_ACCUM_CLEAR_VALUE
:
3892 params
[0] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[0]);
3893 params
[1] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[1]);
3894 params
[2] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[2]);
3895 params
[3] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[3]);
3898 params
[0] = IROUND(ctx
->Pixel
.AlphaBias
);
3901 if (ctx
->NewState
& _NEW_BUFFERS
)
3902 _mesa_update_state(ctx
);
3903 params
[0] = ctx
->DrawBuffer
->Visual
.alphaBits
;
3905 case GL_ALPHA_SCALE
:
3906 params
[0] = IROUND(ctx
->Pixel
.AlphaScale
);
3909 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.AlphaEnabled
);
3911 case GL_ALPHA_TEST_FUNC
:
3912 params
[0] = ENUM_TO_INT(ctx
->Color
.AlphaFunc
);
3914 case GL_ALPHA_TEST_REF
:
3915 params
[0] = FLOAT_TO_INT(ctx
->Color
.AlphaRef
);
3917 case GL_ATTRIB_STACK_DEPTH
:
3918 params
[0] = ctx
->AttribStackDepth
;
3920 case GL_AUTO_NORMAL
:
3921 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.AutoNormal
);
3923 case GL_AUX_BUFFERS
:
3924 params
[0] = ctx
->DrawBuffer
->Visual
.numAuxBuffers
;
3927 params
[0] = BOOLEAN_TO_INT((ctx
->Color
.BlendEnabled
& 1));
3930 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstRGB
);
3933 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcRGB
);
3935 case GL_BLEND_SRC_RGB_EXT
:
3936 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcRGB
);
3938 case GL_BLEND_DST_RGB_EXT
:
3939 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstRGB
);
3941 case GL_BLEND_SRC_ALPHA_EXT
:
3942 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcA
);
3944 case GL_BLEND_DST_ALPHA_EXT
:
3945 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstA
);
3947 case GL_BLEND_EQUATION
:
3948 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendEquationRGB
);
3950 case GL_BLEND_EQUATION_ALPHA_EXT
:
3951 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendEquationA
);
3953 case GL_BLEND_COLOR_EXT
:
3954 params
[0] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[0]);
3955 params
[1] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[1]);
3956 params
[2] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[2]);
3957 params
[3] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[3]);
3960 params
[0] = IROUND(ctx
->Pixel
.BlueBias
);
3963 if (ctx
->NewState
& _NEW_BUFFERS
)
3964 _mesa_update_state(ctx
);
3965 params
[0] = ctx
->DrawBuffer
->Visual
.blueBits
;
3968 params
[0] = IROUND(ctx
->Pixel
.BlueScale
);
3970 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
3971 params
[0] = ctx
->ClientAttribStackDepth
;
3973 case GL_CLIP_PLANE0
:
3974 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
3976 case GL_CLIP_PLANE1
:
3977 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
3979 case GL_CLIP_PLANE2
:
3980 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
3982 case GL_CLIP_PLANE3
:
3983 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
3985 case GL_CLIP_PLANE4
:
3986 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
3988 case GL_CLIP_PLANE5
:
3989 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
3991 case GL_COLOR_CLEAR_VALUE
:
3992 params
[0] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[0]);
3993 params
[1] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[1]);
3994 params
[2] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[2]);
3995 params
[3] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[3]);
3997 case GL_COLOR_MATERIAL
:
3998 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.ColorMaterialEnabled
);
4000 case GL_COLOR_MATERIAL_FACE
:
4001 params
[0] = ENUM_TO_INT(ctx
->Light
.ColorMaterialFace
);
4003 case GL_COLOR_MATERIAL_PARAMETER
:
4004 params
[0] = ENUM_TO_INT(ctx
->Light
.ColorMaterialMode
);
4006 case GL_COLOR_WRITEMASK
:
4007 params
[0] = ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0;
4008 params
[1] = ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0;
4009 params
[2] = ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0;
4010 params
[3] = ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0;
4013 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.CullFlag
);
4015 case GL_CULL_FACE_MODE
:
4016 params
[0] = ENUM_TO_INT(ctx
->Polygon
.CullFaceMode
);
4018 case GL_CURRENT_COLOR
:
4019 FLUSH_CURRENT(ctx
, 0);
4020 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4021 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4022 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4023 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4025 case GL_CURRENT_INDEX
:
4026 FLUSH_CURRENT(ctx
, 0);
4027 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
4029 case GL_CURRENT_NORMAL
:
4030 FLUSH_CURRENT(ctx
, 0);
4031 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4032 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4033 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4035 case GL_CURRENT_RASTER_COLOR
:
4036 params
[0] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[0]);
4037 params
[1] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[1]);
4038 params
[2] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[2]);
4039 params
[3] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[3]);
4041 case GL_CURRENT_RASTER_DISTANCE
:
4042 params
[0] = IROUND(ctx
->Current
.RasterDistance
);
4044 case GL_CURRENT_RASTER_INDEX
:
4045 params
[0] = IROUND(1.0);
4047 case GL_CURRENT_RASTER_POSITION
:
4048 params
[0] = IROUND(ctx
->Current
.RasterPos
[0]);
4049 params
[1] = IROUND(ctx
->Current
.RasterPos
[1]);
4050 params
[2] = IROUND(ctx
->Current
.RasterPos
[2]);
4051 params
[3] = IROUND(ctx
->Current
.RasterPos
[3]);
4053 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
4054 params
[0] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[0]);
4055 params
[1] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[1]);
4056 params
[2] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[2]);
4057 params
[3] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[3]);
4059 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4061 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4062 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4063 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4064 "glGet(raster tex coords, unit %u)", unit
);
4067 params
[0] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][0]);
4068 params
[1] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][1]);
4069 params
[2] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][2]);
4070 params
[3] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][3]);
4073 case GL_CURRENT_RASTER_POSITION_VALID
:
4074 params
[0] = BOOLEAN_TO_INT(ctx
->Current
.RasterPosValid
);
4076 case GL_CURRENT_TEXTURE_COORDS
:
4078 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4079 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4080 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4081 "glGet(current tex coords, unit %u)", unit
);
4084 FLUSH_CURRENT(ctx
, 0);
4085 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
4086 params
[1] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
4087 params
[2] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
4088 params
[3] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
4092 params
[0] = IROUND(ctx
->Pixel
.DepthBias
);
4095 params
[0] = ctx
->DrawBuffer
->Visual
.depthBits
;
4097 case GL_DEPTH_CLEAR_VALUE
:
4098 params
[0] = FLOAT_TO_INT(((GLfloat
) ctx
->Depth
.Clear
));
4101 params
[0] = ENUM_TO_INT(ctx
->Depth
.Func
);
4103 case GL_DEPTH_RANGE
:
4104 params
[0] = FLOAT_TO_INT(ctx
->Viewport
.Near
);
4105 params
[1] = FLOAT_TO_INT(ctx
->Viewport
.Far
);
4107 case GL_DEPTH_SCALE
:
4108 params
[0] = IROUND(ctx
->Pixel
.DepthScale
);
4111 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.Test
);
4113 case GL_DEPTH_WRITEMASK
:
4114 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.Mask
);
4117 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.DitherFlag
);
4119 case GL_DOUBLEBUFFER
:
4120 params
[0] = BOOLEAN_TO_INT(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
4122 case GL_DRAW_BUFFER
:
4123 params
[0] = ENUM_TO_INT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
4126 FLUSH_CURRENT(ctx
, 0);
4127 params
[0] = BOOLEAN_TO_INT((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
4129 case GL_FEEDBACK_BUFFER_SIZE
:
4130 params
[0] = ctx
->Feedback
.BufferSize
;
4132 case GL_FEEDBACK_BUFFER_TYPE
:
4133 params
[0] = ENUM_TO_INT(ctx
->Feedback
.Type
);
4136 params
[0] = BOOLEAN_TO_INT(ctx
->Fog
.Enabled
);
4139 params
[0] = FLOAT_TO_INT(ctx
->Fog
.Color
[0]);
4140 params
[1] = FLOAT_TO_INT(ctx
->Fog
.Color
[1]);
4141 params
[2] = FLOAT_TO_INT(ctx
->Fog
.Color
[2]);
4142 params
[3] = FLOAT_TO_INT(ctx
->Fog
.Color
[3]);
4144 case GL_FOG_DENSITY
:
4145 params
[0] = IROUND(ctx
->Fog
.Density
);
4148 params
[0] = IROUND(ctx
->Fog
.End
);
4151 params
[0] = ENUM_TO_INT(ctx
->Hint
.Fog
);
4154 params
[0] = IROUND(ctx
->Fog
.Index
);
4157 params
[0] = ENUM_TO_INT(ctx
->Fog
.Mode
);
4160 params
[0] = IROUND(ctx
->Fog
.Start
);
4163 params
[0] = ENUM_TO_INT(ctx
->Polygon
.FrontFace
);
4166 params
[0] = IROUND(ctx
->Pixel
.GreenBias
);
4169 if (ctx
->NewState
& _NEW_BUFFERS
)
4170 _mesa_update_state(ctx
);
4171 params
[0] = ctx
->DrawBuffer
->Visual
.greenBits
;
4173 case GL_GREEN_SCALE
:
4174 params
[0] = IROUND(ctx
->Pixel
.GreenScale
);
4177 if (ctx
->NewState
& _NEW_BUFFERS
)
4178 _mesa_update_state(ctx
);
4179 params
[0] = ctx
->DrawBuffer
->Visual
.indexBits
;
4181 case GL_INDEX_CLEAR_VALUE
:
4182 params
[0] = ctx
->Color
.ClearIndex
;
4185 params
[0] = BOOLEAN_TO_INT(GL_FALSE
);
4187 case GL_INDEX_OFFSET
:
4188 params
[0] = ctx
->Pixel
.IndexOffset
;
4190 case GL_INDEX_SHIFT
:
4191 params
[0] = ctx
->Pixel
.IndexShift
;
4193 case GL_INDEX_WRITEMASK
:
4194 params
[0] = ctx
->Color
.IndexMask
;
4197 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[0].Enabled
);
4200 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[1].Enabled
);
4203 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[2].Enabled
);
4206 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[3].Enabled
);
4209 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[4].Enabled
);
4212 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[5].Enabled
);
4215 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[6].Enabled
);
4218 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[7].Enabled
);
4221 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Enabled
);
4223 case GL_LIGHT_MODEL_AMBIENT
:
4224 params
[0] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[0]);
4225 params
[1] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[1]);
4226 params
[2] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[2]);
4227 params
[3] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[3]);
4229 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4230 params
[0] = ENUM_TO_INT(ctx
->Light
.Model
.ColorControl
);
4232 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4233 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Model
.LocalViewer
);
4235 case GL_LIGHT_MODEL_TWO_SIDE
:
4236 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Model
.TwoSide
);
4238 case GL_LINE_SMOOTH
:
4239 params
[0] = BOOLEAN_TO_INT(ctx
->Line
.SmoothFlag
);
4241 case GL_LINE_SMOOTH_HINT
:
4242 params
[0] = ENUM_TO_INT(ctx
->Hint
.LineSmooth
);
4244 case GL_LINE_STIPPLE
:
4245 params
[0] = BOOLEAN_TO_INT(ctx
->Line
.StippleFlag
);
4247 case GL_LINE_STIPPLE_PATTERN
:
4248 params
[0] = ctx
->Line
.StipplePattern
;
4250 case GL_LINE_STIPPLE_REPEAT
:
4251 params
[0] = ctx
->Line
.StippleFactor
;
4254 params
[0] = IROUND(ctx
->Line
.Width
);
4256 case GL_LINE_WIDTH_GRANULARITY
:
4257 params
[0] = IROUND(ctx
->Const
.LineWidthGranularity
);
4259 case GL_LINE_WIDTH_RANGE
:
4260 params
[0] = IROUND(ctx
->Const
.MinLineWidthAA
);
4261 params
[1] = IROUND(ctx
->Const
.MaxLineWidthAA
);
4263 case GL_ALIASED_LINE_WIDTH_RANGE
:
4264 params
[0] = IROUND(ctx
->Const
.MinLineWidth
);
4265 params
[1] = IROUND(ctx
->Const
.MaxLineWidth
);
4268 params
[0] = ctx
->List
.ListBase
;
4271 params
[0] = (ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0);
4276 if (!ctx
->CompileFlag
)
4278 else if (ctx
->ExecuteFlag
)
4279 mode
= GL_COMPILE_AND_EXECUTE
;
4282 params
[0] = ENUM_TO_INT(mode
);
4285 case GL_INDEX_LOGIC_OP
:
4286 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.IndexLogicOpEnabled
);
4288 case GL_COLOR_LOGIC_OP
:
4289 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.ColorLogicOpEnabled
);
4291 case GL_LOGIC_OP_MODE
:
4292 params
[0] = ENUM_TO_INT(ctx
->Color
.LogicOp
);
4294 case GL_MAP1_COLOR_4
:
4295 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Color4
);
4297 case GL_MAP1_GRID_DOMAIN
:
4298 params
[0] = IROUND(ctx
->Eval
.MapGrid1u1
);
4299 params
[1] = IROUND(ctx
->Eval
.MapGrid1u2
);
4301 case GL_MAP1_GRID_SEGMENTS
:
4302 params
[0] = ctx
->Eval
.MapGrid1un
;
4305 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Index
);
4307 case GL_MAP1_NORMAL
:
4308 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Normal
);
4310 case GL_MAP1_TEXTURE_COORD_1
:
4311 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord1
);
4313 case GL_MAP1_TEXTURE_COORD_2
:
4314 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord2
);
4316 case GL_MAP1_TEXTURE_COORD_3
:
4317 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord3
);
4319 case GL_MAP1_TEXTURE_COORD_4
:
4320 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord4
);
4322 case GL_MAP1_VERTEX_3
:
4323 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Vertex3
);
4325 case GL_MAP1_VERTEX_4
:
4326 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Vertex4
);
4328 case GL_MAP2_COLOR_4
:
4329 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Color4
);
4331 case GL_MAP2_GRID_DOMAIN
:
4332 params
[0] = IROUND(ctx
->Eval
.MapGrid2u1
);
4333 params
[1] = IROUND(ctx
->Eval
.MapGrid2u2
);
4334 params
[2] = IROUND(ctx
->Eval
.MapGrid2v1
);
4335 params
[3] = IROUND(ctx
->Eval
.MapGrid2v2
);
4337 case GL_MAP2_GRID_SEGMENTS
:
4338 params
[0] = ctx
->Eval
.MapGrid2un
;
4339 params
[1] = ctx
->Eval
.MapGrid2vn
;
4342 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Index
);
4344 case GL_MAP2_NORMAL
:
4345 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Normal
);
4347 case GL_MAP2_TEXTURE_COORD_1
:
4348 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord1
);
4350 case GL_MAP2_TEXTURE_COORD_2
:
4351 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord2
);
4353 case GL_MAP2_TEXTURE_COORD_3
:
4354 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord3
);
4356 case GL_MAP2_TEXTURE_COORD_4
:
4357 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord4
);
4359 case GL_MAP2_VERTEX_3
:
4360 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Vertex3
);
4362 case GL_MAP2_VERTEX_4
:
4363 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Vertex4
);
4366 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MapColorFlag
);
4368 case GL_MAP_STENCIL
:
4369 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MapStencilFlag
);
4371 case GL_MATRIX_MODE
:
4372 params
[0] = ENUM_TO_INT(ctx
->Transform
.MatrixMode
);
4374 case GL_MAX_ATTRIB_STACK_DEPTH
:
4375 params
[0] = MAX_ATTRIB_STACK_DEPTH
;
4377 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4378 params
[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4380 case GL_MAX_CLIP_PLANES
:
4381 params
[0] = ctx
->Const
.MaxClipPlanes
;
4383 case GL_MAX_ELEMENTS_VERTICES
:
4384 params
[0] = ctx
->Const
.MaxArrayLockSize
;
4386 case GL_MAX_ELEMENTS_INDICES
:
4387 params
[0] = ctx
->Const
.MaxArrayLockSize
;
4389 case GL_MAX_EVAL_ORDER
:
4390 params
[0] = MAX_EVAL_ORDER
;
4393 params
[0] = ctx
->Const
.MaxLights
;
4395 case GL_MAX_LIST_NESTING
:
4396 params
[0] = MAX_LIST_NESTING
;
4398 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4399 params
[0] = MAX_MODELVIEW_STACK_DEPTH
;
4401 case GL_MAX_NAME_STACK_DEPTH
:
4402 params
[0] = MAX_NAME_STACK_DEPTH
;
4404 case GL_MAX_PIXEL_MAP_TABLE
:
4405 params
[0] = MAX_PIXEL_MAP_TABLE
;
4407 case GL_MAX_PROJECTION_STACK_DEPTH
:
4408 params
[0] = MAX_PROJECTION_STACK_DEPTH
;
4410 case GL_MAX_TEXTURE_SIZE
:
4411 params
[0] = 1 << (ctx
->Const
.MaxTextureLevels
- 1);
4413 case GL_MAX_3D_TEXTURE_SIZE
:
4414 params
[0] = 1 << (ctx
->Const
.Max3DTextureLevels
- 1);
4416 case GL_MAX_TEXTURE_STACK_DEPTH
:
4417 params
[0] = MAX_TEXTURE_STACK_DEPTH
;
4419 case GL_MAX_VIEWPORT_DIMS
:
4420 params
[0] = ctx
->Const
.MaxViewportWidth
;
4421 params
[1] = ctx
->Const
.MaxViewportHeight
;
4423 case GL_MODELVIEW_MATRIX
:
4425 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
4426 params
[0] = IROUND(matrix
[0]);
4427 params
[1] = IROUND(matrix
[1]);
4428 params
[2] = IROUND(matrix
[2]);
4429 params
[3] = IROUND(matrix
[3]);
4430 params
[4] = IROUND(matrix
[4]);
4431 params
[5] = IROUND(matrix
[5]);
4432 params
[6] = IROUND(matrix
[6]);
4433 params
[7] = IROUND(matrix
[7]);
4434 params
[8] = IROUND(matrix
[8]);
4435 params
[9] = IROUND(matrix
[9]);
4436 params
[10] = IROUND(matrix
[10]);
4437 params
[11] = IROUND(matrix
[11]);
4438 params
[12] = IROUND(matrix
[12]);
4439 params
[13] = IROUND(matrix
[13]);
4440 params
[14] = IROUND(matrix
[14]);
4441 params
[15] = IROUND(matrix
[15]);
4444 case GL_MODELVIEW_STACK_DEPTH
:
4445 params
[0] = ctx
->ModelviewMatrixStack
.Depth
+ 1;
4447 case GL_NAME_STACK_DEPTH
:
4448 params
[0] = ctx
->Select
.NameStackDepth
;
4451 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.Normalize
);
4453 case GL_PACK_ALIGNMENT
:
4454 params
[0] = ctx
->Pack
.Alignment
;
4456 case GL_PACK_LSB_FIRST
:
4457 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.LsbFirst
);
4459 case GL_PACK_ROW_LENGTH
:
4460 params
[0] = ctx
->Pack
.RowLength
;
4462 case GL_PACK_SKIP_PIXELS
:
4463 params
[0] = ctx
->Pack
.SkipPixels
;
4465 case GL_PACK_SKIP_ROWS
:
4466 params
[0] = ctx
->Pack
.SkipRows
;
4468 case GL_PACK_SWAP_BYTES
:
4469 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.SwapBytes
);
4471 case GL_PACK_SKIP_IMAGES_EXT
:
4472 params
[0] = ctx
->Pack
.SkipImages
;
4474 case GL_PACK_IMAGE_HEIGHT_EXT
:
4475 params
[0] = ctx
->Pack
.ImageHeight
;
4477 case GL_PACK_INVERT_MESA
:
4478 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.Invert
);
4480 case GL_PERSPECTIVE_CORRECTION_HINT
:
4481 params
[0] = ENUM_TO_INT(ctx
->Hint
.PerspectiveCorrection
);
4483 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4484 params
[0] = ctx
->PixelMaps
.AtoA
.Size
;
4486 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4487 params
[0] = ctx
->PixelMaps
.BtoB
.Size
;
4489 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4490 params
[0] = ctx
->PixelMaps
.GtoG
.Size
;
4492 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4493 params
[0] = ctx
->PixelMaps
.ItoA
.Size
;
4495 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4496 params
[0] = ctx
->PixelMaps
.ItoB
.Size
;
4498 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4499 params
[0] = ctx
->PixelMaps
.ItoG
.Size
;
4501 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4502 params
[0] = ctx
->PixelMaps
.ItoI
.Size
;
4504 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4505 params
[0] = ctx
->PixelMaps
.ItoR
.Size
;
4507 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4508 params
[0] = ctx
->PixelMaps
.RtoR
.Size
;
4510 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4511 params
[0] = ctx
->PixelMaps
.StoS
.Size
;
4514 params
[0] = IROUND(ctx
->Point
.Size
);
4516 case GL_POINT_SIZE_GRANULARITY
:
4517 params
[0] = IROUND(ctx
->Const
.PointSizeGranularity
);
4519 case GL_POINT_SIZE_RANGE
:
4520 params
[0] = IROUND(ctx
->Const
.MinPointSizeAA
);
4521 params
[1] = IROUND(ctx
->Const
.MaxPointSizeAA
);
4523 case GL_ALIASED_POINT_SIZE_RANGE
:
4524 params
[0] = IROUND(ctx
->Const
.MinPointSize
);
4525 params
[1] = IROUND(ctx
->Const
.MaxPointSize
);
4527 case GL_POINT_SMOOTH
:
4528 params
[0] = BOOLEAN_TO_INT(ctx
->Point
.SmoothFlag
);
4530 case GL_POINT_SMOOTH_HINT
:
4531 params
[0] = ENUM_TO_INT(ctx
->Hint
.PointSmooth
);
4533 case GL_POINT_SIZE_MIN_EXT
:
4534 params
[0] = IROUND(ctx
->Point
.MinSize
);
4536 case GL_POINT_SIZE_MAX_EXT
:
4537 params
[0] = IROUND(ctx
->Point
.MaxSize
);
4539 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4540 params
[0] = IROUND(ctx
->Point
.Threshold
);
4542 case GL_DISTANCE_ATTENUATION_EXT
:
4543 params
[0] = IROUND(ctx
->Point
.Params
[0]);
4544 params
[1] = IROUND(ctx
->Point
.Params
[1]);
4545 params
[2] = IROUND(ctx
->Point
.Params
[2]);
4547 case GL_POLYGON_MODE
:
4548 params
[0] = ENUM_TO_INT(ctx
->Polygon
.FrontMode
);
4549 params
[1] = ENUM_TO_INT(ctx
->Polygon
.BackMode
);
4551 case GL_POLYGON_OFFSET_BIAS_EXT
:
4552 params
[0] = IROUND(ctx
->Polygon
.OffsetUnits
);
4554 case GL_POLYGON_OFFSET_FACTOR
:
4555 params
[0] = IROUND(ctx
->Polygon
.OffsetFactor
);
4557 case GL_POLYGON_OFFSET_UNITS
:
4558 params
[0] = IROUND(ctx
->Polygon
.OffsetUnits
);
4560 case GL_POLYGON_OFFSET_POINT
:
4561 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetPoint
);
4563 case GL_POLYGON_OFFSET_LINE
:
4564 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetLine
);
4566 case GL_POLYGON_OFFSET_FILL
:
4567 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetFill
);
4569 case GL_POLYGON_SMOOTH
:
4570 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.SmoothFlag
);
4572 case GL_POLYGON_SMOOTH_HINT
:
4573 params
[0] = ENUM_TO_INT(ctx
->Hint
.PolygonSmooth
);
4575 case GL_POLYGON_STIPPLE
:
4576 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.StippleFlag
);
4578 case GL_PROJECTION_MATRIX
:
4580 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
4581 params
[0] = IROUND(matrix
[0]);
4582 params
[1] = IROUND(matrix
[1]);
4583 params
[2] = IROUND(matrix
[2]);
4584 params
[3] = IROUND(matrix
[3]);
4585 params
[4] = IROUND(matrix
[4]);
4586 params
[5] = IROUND(matrix
[5]);
4587 params
[6] = IROUND(matrix
[6]);
4588 params
[7] = IROUND(matrix
[7]);
4589 params
[8] = IROUND(matrix
[8]);
4590 params
[9] = IROUND(matrix
[9]);
4591 params
[10] = IROUND(matrix
[10]);
4592 params
[11] = IROUND(matrix
[11]);
4593 params
[12] = IROUND(matrix
[12]);
4594 params
[13] = IROUND(matrix
[13]);
4595 params
[14] = IROUND(matrix
[14]);
4596 params
[15] = IROUND(matrix
[15]);
4599 case GL_PROJECTION_STACK_DEPTH
:
4600 params
[0] = ctx
->ProjectionMatrixStack
.Depth
+ 1;
4602 case GL_READ_BUFFER
:
4603 params
[0] = ENUM_TO_INT(ctx
->ReadBuffer
->ColorReadBuffer
);
4606 params
[0] = IROUND(ctx
->Pixel
.RedBias
);
4609 if (ctx
->NewState
& _NEW_BUFFERS
)
4610 _mesa_update_state(ctx
);
4611 params
[0] = ctx
->DrawBuffer
->Visual
.redBits
;
4614 params
[0] = IROUND(ctx
->Pixel
.RedScale
);
4616 case GL_RENDER_MODE
:
4617 params
[0] = ENUM_TO_INT(ctx
->RenderMode
);
4619 case GL_RESCALE_NORMAL
:
4620 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.RescaleNormals
);
4623 params
[0] = BOOLEAN_TO_INT(GL_TRUE
);
4625 case GL_SCISSOR_BOX
:
4626 params
[0] = ctx
->Scissor
.X
;
4627 params
[1] = ctx
->Scissor
.Y
;
4628 params
[2] = ctx
->Scissor
.Width
;
4629 params
[3] = ctx
->Scissor
.Height
;
4631 case GL_SCISSOR_TEST
:
4632 params
[0] = BOOLEAN_TO_INT(ctx
->Scissor
.Enabled
);
4634 case GL_SELECTION_BUFFER_SIZE
:
4635 params
[0] = ctx
->Select
.BufferSize
;
4637 case GL_SHADE_MODEL
:
4638 params
[0] = ENUM_TO_INT(ctx
->Light
.ShadeModel
);
4640 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4641 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.SharedPalette
);
4643 case GL_STENCIL_BITS
:
4644 params
[0] = ctx
->DrawBuffer
->Visual
.stencilBits
;
4646 case GL_STENCIL_CLEAR_VALUE
:
4647 params
[0] = ctx
->Stencil
.Clear
;
4649 case GL_STENCIL_FAIL
:
4650 params
[0] = ENUM_TO_INT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
4652 case GL_STENCIL_FUNC
:
4653 params
[0] = ENUM_TO_INT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
4655 case GL_STENCIL_PASS_DEPTH_FAIL
:
4656 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
4658 case GL_STENCIL_PASS_DEPTH_PASS
:
4659 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
4661 case GL_STENCIL_REF
:
4662 params
[0] = ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
4664 case GL_STENCIL_TEST
:
4665 params
[0] = BOOLEAN_TO_INT(ctx
->Stencil
.Enabled
);
4667 case GL_STENCIL_VALUE_MASK
:
4668 params
[0] = ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
4670 case GL_STENCIL_WRITEMASK
:
4671 params
[0] = ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
4674 params
[0] = BOOLEAN_TO_INT(ctx
->DrawBuffer
->Visual
.stereoMode
);
4676 case GL_SUBPIXEL_BITS
:
4677 params
[0] = ctx
->Const
.SubPixelBits
;
4680 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D
));
4683 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D
));
4686 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D
));
4688 case GL_TEXTURE_1D_ARRAY_EXT
:
4689 CHECK_EXT1(MESA_texture_array
);
4690 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
4692 case GL_TEXTURE_2D_ARRAY_EXT
:
4693 CHECK_EXT1(MESA_texture_array
);
4694 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
4696 case GL_TEXTURE_BINDING_1D
:
4697 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
;
4699 case GL_TEXTURE_BINDING_2D
:
4700 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
;
4702 case GL_TEXTURE_BINDING_3D
:
4703 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
;
4705 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
4706 CHECK_EXT1(MESA_texture_array
);
4707 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
;
4709 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
4710 CHECK_EXT1(MESA_texture_array
);
4711 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
;
4713 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
4714 CHECK_EXT1(MESA_texture_array
);
4715 params
[0] = ctx
->Const
.MaxArrayTextureLayers
;
4717 case GL_TEXTURE_GEN_S
:
4718 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
4720 case GL_TEXTURE_GEN_T
:
4721 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
4723 case GL_TEXTURE_GEN_R
:
4724 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
4726 case GL_TEXTURE_GEN_Q
:
4727 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
4729 case GL_TEXTURE_MATRIX
:
4731 const GLfloat
*matrix
;
4732 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4733 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4734 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
4738 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
4739 params
[0] = IROUND(matrix
[0]);
4740 params
[1] = IROUND(matrix
[1]);
4741 params
[2] = IROUND(matrix
[2]);
4742 params
[3] = IROUND(matrix
[3]);
4743 params
[4] = IROUND(matrix
[4]);
4744 params
[5] = IROUND(matrix
[5]);
4745 params
[6] = IROUND(matrix
[6]);
4746 params
[7] = IROUND(matrix
[7]);
4747 params
[8] = IROUND(matrix
[8]);
4748 params
[9] = IROUND(matrix
[9]);
4749 params
[10] = IROUND(matrix
[10]);
4750 params
[11] = IROUND(matrix
[11]);
4751 params
[12] = IROUND(matrix
[12]);
4752 params
[13] = IROUND(matrix
[13]);
4753 params
[14] = IROUND(matrix
[14]);
4754 params
[15] = IROUND(matrix
[15]);
4757 case GL_TEXTURE_STACK_DEPTH
:
4759 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4760 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4761 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4762 "glGet(texture stack depth, unit %u)", unit
);
4765 params
[0] = ctx
->TextureMatrixStack
[unit
].Depth
+ 1;
4768 case GL_UNPACK_ALIGNMENT
:
4769 params
[0] = ctx
->Unpack
.Alignment
;
4771 case GL_UNPACK_LSB_FIRST
:
4772 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.LsbFirst
);
4774 case GL_UNPACK_ROW_LENGTH
:
4775 params
[0] = ctx
->Unpack
.RowLength
;
4777 case GL_UNPACK_SKIP_PIXELS
:
4778 params
[0] = ctx
->Unpack
.SkipPixels
;
4780 case GL_UNPACK_SKIP_ROWS
:
4781 params
[0] = ctx
->Unpack
.SkipRows
;
4783 case GL_UNPACK_SWAP_BYTES
:
4784 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.SwapBytes
);
4786 case GL_UNPACK_SKIP_IMAGES_EXT
:
4787 params
[0] = ctx
->Unpack
.SkipImages
;
4789 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4790 params
[0] = ctx
->Unpack
.ImageHeight
;
4792 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
4793 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.ClientStorage
);
4796 params
[0] = ctx
->Viewport
.X
;
4797 params
[1] = ctx
->Viewport
.Y
;
4798 params
[2] = ctx
->Viewport
.Width
;
4799 params
[3] = ctx
->Viewport
.Height
;
4802 params
[0] = IROUND(ctx
->Pixel
.ZoomX
);
4805 params
[0] = IROUND(ctx
->Pixel
.ZoomY
);
4807 case GL_VERTEX_ARRAY
:
4808 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
4810 case GL_VERTEX_ARRAY_SIZE
:
4811 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Size
;
4813 case GL_VERTEX_ARRAY_TYPE
:
4814 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Vertex
.Type
);
4816 case GL_VERTEX_ARRAY_STRIDE
:
4817 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Stride
;
4819 case GL_VERTEX_ARRAY_COUNT_EXT
:
4822 case GL_NORMAL_ARRAY
:
4823 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
4825 case GL_NORMAL_ARRAY_TYPE
:
4826 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Normal
.Type
);
4828 case GL_NORMAL_ARRAY_STRIDE
:
4829 params
[0] = ctx
->Array
.ArrayObj
->Normal
.Stride
;
4831 case GL_NORMAL_ARRAY_COUNT_EXT
:
4834 case GL_COLOR_ARRAY
:
4835 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Color
.Enabled
);
4837 case GL_COLOR_ARRAY_SIZE
:
4838 params
[0] = ctx
->Array
.ArrayObj
->Color
.Size
;
4840 case GL_COLOR_ARRAY_TYPE
:
4841 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Color
.Type
);
4843 case GL_COLOR_ARRAY_STRIDE
:
4844 params
[0] = ctx
->Array
.ArrayObj
->Color
.Stride
;
4846 case GL_COLOR_ARRAY_COUNT_EXT
:
4849 case GL_INDEX_ARRAY
:
4850 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Index
.Enabled
);
4852 case GL_INDEX_ARRAY_TYPE
:
4853 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Index
.Type
);
4855 case GL_INDEX_ARRAY_STRIDE
:
4856 params
[0] = ctx
->Array
.ArrayObj
->Index
.Stride
;
4858 case GL_INDEX_ARRAY_COUNT_EXT
:
4861 case GL_TEXTURE_COORD_ARRAY
:
4862 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
4864 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4865 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
;
4867 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4868 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
4870 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4871 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
;
4873 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4876 case GL_EDGE_FLAG_ARRAY
:
4877 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
4879 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4880 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
;
4882 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4885 case GL_MAX_TEXTURE_UNITS_ARB
:
4886 CHECK_EXT1(ARB_multitexture
);
4887 params
[0] = ctx
->Const
.MaxTextureUnits
;
4889 case GL_ACTIVE_TEXTURE_ARB
:
4890 CHECK_EXT1(ARB_multitexture
);
4891 params
[0] = GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4893 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4894 CHECK_EXT1(ARB_multitexture
);
4895 params
[0] = GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4897 case GL_TEXTURE_CUBE_MAP_ARB
:
4898 CHECK_EXT1(ARB_texture_cube_map
);
4899 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
4901 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4902 CHECK_EXT1(ARB_texture_cube_map
);
4903 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
;
4905 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4906 CHECK_EXT1(ARB_texture_cube_map
);
4907 params
[0] = (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
4909 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4910 params
[0] = ctx
->Hint
.TextureCompression
;
4912 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4913 params
[0] = _mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
);
4915 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4918 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
4920 for (i
= 0; i
< n
; i
++)
4921 params
[i
] = ENUM_TO_INT(formats
[i
]);
4924 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4925 CHECK_EXT1(EXT_compiled_vertex_array
);
4926 params
[0] = ctx
->Array
.LockFirst
;
4928 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4929 CHECK_EXT1(EXT_compiled_vertex_array
);
4930 params
[0] = ctx
->Array
.LockCount
;
4932 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4934 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
4935 params
[0] = IROUND(matrix
[0]);
4936 params
[1] = IROUND(matrix
[4]);
4937 params
[2] = IROUND(matrix
[8]);
4938 params
[3] = IROUND(matrix
[12]);
4939 params
[4] = IROUND(matrix
[1]);
4940 params
[5] = IROUND(matrix
[5]);
4941 params
[6] = IROUND(matrix
[9]);
4942 params
[7] = IROUND(matrix
[13]);
4943 params
[8] = IROUND(matrix
[2]);
4944 params
[9] = IROUND(matrix
[6]);
4945 params
[10] = IROUND(matrix
[10]);
4946 params
[11] = IROUND(matrix
[14]);
4947 params
[12] = IROUND(matrix
[3]);
4948 params
[13] = IROUND(matrix
[7]);
4949 params
[14] = IROUND(matrix
[11]);
4950 params
[15] = IROUND(matrix
[15]);
4953 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4955 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
4956 params
[0] = IROUND(matrix
[0]);
4957 params
[1] = IROUND(matrix
[4]);
4958 params
[2] = IROUND(matrix
[8]);
4959 params
[3] = IROUND(matrix
[12]);
4960 params
[4] = IROUND(matrix
[1]);
4961 params
[5] = IROUND(matrix
[5]);
4962 params
[6] = IROUND(matrix
[9]);
4963 params
[7] = IROUND(matrix
[13]);
4964 params
[8] = IROUND(matrix
[2]);
4965 params
[9] = IROUND(matrix
[6]);
4966 params
[10] = IROUND(matrix
[10]);
4967 params
[11] = IROUND(matrix
[14]);
4968 params
[12] = IROUND(matrix
[3]);
4969 params
[13] = IROUND(matrix
[7]);
4970 params
[14] = IROUND(matrix
[11]);
4971 params
[15] = IROUND(matrix
[15]);
4974 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
4976 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
4977 params
[0] = IROUND(matrix
[0]);
4978 params
[1] = IROUND(matrix
[4]);
4979 params
[2] = IROUND(matrix
[8]);
4980 params
[3] = IROUND(matrix
[12]);
4981 params
[4] = IROUND(matrix
[1]);
4982 params
[5] = IROUND(matrix
[5]);
4983 params
[6] = IROUND(matrix
[9]);
4984 params
[7] = IROUND(matrix
[13]);
4985 params
[8] = IROUND(matrix
[2]);
4986 params
[9] = IROUND(matrix
[6]);
4987 params
[10] = IROUND(matrix
[10]);
4988 params
[11] = IROUND(matrix
[14]);
4989 params
[12] = IROUND(matrix
[3]);
4990 params
[13] = IROUND(matrix
[7]);
4991 params
[14] = IROUND(matrix
[11]);
4992 params
[15] = IROUND(matrix
[15]);
4995 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
4997 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
4998 params
[0] = IROUND(matrix
[0]);
4999 params
[1] = IROUND(matrix
[4]);
5000 params
[2] = IROUND(matrix
[8]);
5001 params
[3] = IROUND(matrix
[12]);
5002 params
[4] = IROUND(matrix
[1]);
5003 params
[5] = IROUND(matrix
[5]);
5004 params
[6] = IROUND(matrix
[9]);
5005 params
[7] = IROUND(matrix
[13]);
5006 params
[8] = IROUND(matrix
[2]);
5007 params
[9] = IROUND(matrix
[6]);
5008 params
[10] = IROUND(matrix
[10]);
5009 params
[11] = IROUND(matrix
[14]);
5010 params
[12] = IROUND(matrix
[3]);
5011 params
[13] = IROUND(matrix
[7]);
5012 params
[14] = IROUND(matrix
[11]);
5013 params
[15] = IROUND(matrix
[15]);
5016 case GL_COLOR_MATRIX_SGI
:
5018 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
5019 params
[0] = IROUND(matrix
[0]);
5020 params
[1] = IROUND(matrix
[1]);
5021 params
[2] = IROUND(matrix
[2]);
5022 params
[3] = IROUND(matrix
[3]);
5023 params
[4] = IROUND(matrix
[4]);
5024 params
[5] = IROUND(matrix
[5]);
5025 params
[6] = IROUND(matrix
[6]);
5026 params
[7] = IROUND(matrix
[7]);
5027 params
[8] = IROUND(matrix
[8]);
5028 params
[9] = IROUND(matrix
[9]);
5029 params
[10] = IROUND(matrix
[10]);
5030 params
[11] = IROUND(matrix
[11]);
5031 params
[12] = IROUND(matrix
[12]);
5032 params
[13] = IROUND(matrix
[13]);
5033 params
[14] = IROUND(matrix
[14]);
5034 params
[15] = IROUND(matrix
[15]);
5037 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5038 params
[0] = ctx
->ColorMatrixStack
.Depth
+ 1;
5040 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5041 params
[0] = MAX_COLOR_STACK_DEPTH
;
5043 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5044 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[0]);
5046 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5047 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[1]);
5049 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5050 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[2]);
5052 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5053 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[3]);
5055 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5056 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[0]);
5058 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5059 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[1]);
5061 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5062 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[2]);
5064 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5065 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[3]);
5067 case GL_CONVOLUTION_1D_EXT
:
5068 CHECK_EXT1(EXT_convolution
);
5069 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Convolution1DEnabled
);
5071 case GL_CONVOLUTION_2D_EXT
:
5072 CHECK_EXT1(EXT_convolution
);
5073 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Convolution2DEnabled
);
5075 case GL_SEPARABLE_2D_EXT
:
5076 CHECK_EXT1(EXT_convolution
);
5077 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Separable2DEnabled
);
5079 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5080 CHECK_EXT1(EXT_convolution
);
5081 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[0]);
5083 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5084 CHECK_EXT1(EXT_convolution
);
5085 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[1]);
5087 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5088 CHECK_EXT1(EXT_convolution
);
5089 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[2]);
5091 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5092 CHECK_EXT1(EXT_convolution
);
5093 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[3]);
5095 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5096 CHECK_EXT1(EXT_convolution
);
5097 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[0]);
5099 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5100 CHECK_EXT1(EXT_convolution
);
5101 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[1]);
5103 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5104 CHECK_EXT1(EXT_convolution
);
5105 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[2]);
5107 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5108 CHECK_EXT1(EXT_convolution
);
5109 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[3]);
5112 CHECK_EXT1(EXT_histogram
);
5113 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.HistogramEnabled
);
5116 CHECK_EXT1(EXT_histogram
);
5117 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MinMaxEnabled
);
5119 case GL_COLOR_TABLE_SGI
:
5120 CHECK_EXT1(SGI_color_table
);
5121 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
5123 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5124 CHECK_EXT1(SGI_color_table
);
5125 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
5127 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5128 CHECK_EXT1(SGI_color_table
);
5129 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
5131 case GL_TEXTURE_COLOR_TABLE_SGI
:
5132 CHECK_EXT1(SGI_texture_color_table
);
5133 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
5135 case GL_COLOR_SUM_EXT
:
5136 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
5137 params
[0] = BOOLEAN_TO_INT(ctx
->Fog
.ColorSumEnabled
);
5139 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5140 CHECK_EXT1(EXT_secondary_color
);
5141 FLUSH_CURRENT(ctx
, 0);
5142 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
5143 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
5144 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
5145 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
5147 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5148 CHECK_EXT1(EXT_secondary_color
);
5149 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
5151 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5152 CHECK_EXT1(EXT_secondary_color
);
5153 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
5155 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5156 CHECK_EXT1(EXT_secondary_color
);
5157 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
;
5159 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5160 CHECK_EXT1(EXT_secondary_color
);
5161 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Size
;
5163 case GL_CURRENT_FOG_COORDINATE_EXT
:
5164 CHECK_EXT1(EXT_fog_coord
);
5165 FLUSH_CURRENT(ctx
, 0);
5166 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
5168 case GL_FOG_COORDINATE_ARRAY_EXT
:
5169 CHECK_EXT1(EXT_fog_coord
);
5170 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
5172 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5173 CHECK_EXT1(EXT_fog_coord
);
5174 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
5176 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5177 CHECK_EXT1(EXT_fog_coord
);
5178 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.Stride
;
5180 case GL_FOG_COORDINATE_SOURCE_EXT
:
5181 CHECK_EXT1(EXT_fog_coord
);
5182 params
[0] = ENUM_TO_INT(ctx
->Fog
.FogCoordinateSource
);
5184 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5185 CHECK_EXT1(EXT_texture_lod_bias
);
5186 params
[0] = IROUND(ctx
->Const
.MaxTextureLodBias
);
5188 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5189 CHECK_EXT1(EXT_texture_filter_anisotropic
);
5190 params
[0] = IROUND(ctx
->Const
.MaxTextureMaxAnisotropy
);
5192 case GL_MULTISAMPLE_ARB
:
5193 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.Enabled
);
5195 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5196 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleAlphaToCoverage
);
5198 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5199 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleAlphaToOne
);
5201 case GL_SAMPLE_COVERAGE_ARB
:
5202 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleCoverage
);
5204 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5205 params
[0] = IROUND(ctx
->Multisample
.SampleCoverageValue
);
5207 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5208 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleCoverageInvert
);
5210 case GL_SAMPLE_BUFFERS_ARB
:
5211 params
[0] = ctx
->DrawBuffer
->Visual
.sampleBuffers
;
5213 case GL_SAMPLES_ARB
:
5214 params
[0] = ctx
->DrawBuffer
->Visual
.samples
;
5216 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5217 CHECK_EXT1(IBM_rasterpos_clip
);
5218 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.RasterPositionUnclipped
);
5220 case GL_POINT_SPRITE_NV
:
5221 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
5222 params
[0] = BOOLEAN_TO_INT(ctx
->Point
.PointSprite
);
5224 case GL_POINT_SPRITE_R_MODE_NV
:
5225 CHECK_EXT1(NV_point_sprite
);
5226 params
[0] = ENUM_TO_INT(ctx
->Point
.SpriteRMode
);
5228 case GL_POINT_SPRITE_COORD_ORIGIN
:
5229 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
5230 params
[0] = ENUM_TO_INT(ctx
->Point
.SpriteOrigin
);
5232 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5233 CHECK_EXT1(SGIS_generate_mipmap
);
5234 params
[0] = ENUM_TO_INT(ctx
->Hint
.GenerateMipmap
);
5236 case GL_VERTEX_PROGRAM_BINDING_NV
:
5237 CHECK_EXT1(NV_vertex_program
);
5238 params
[0] = (ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0);
5240 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
5241 CHECK_EXT1(NV_vertex_program
);
5242 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
5244 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
5245 CHECK_EXT1(NV_vertex_program
);
5246 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
5248 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
5249 CHECK_EXT1(NV_vertex_program
);
5250 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
5252 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
5253 CHECK_EXT1(NV_vertex_program
);
5254 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
5256 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
5257 CHECK_EXT1(NV_vertex_program
);
5258 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
5260 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
5261 CHECK_EXT1(NV_vertex_program
);
5262 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
5264 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
5265 CHECK_EXT1(NV_vertex_program
);
5266 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
5268 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
5269 CHECK_EXT1(NV_vertex_program
);
5270 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
5272 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
5273 CHECK_EXT1(NV_vertex_program
);
5274 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
5276 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
5277 CHECK_EXT1(NV_vertex_program
);
5278 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
5280 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
5281 CHECK_EXT1(NV_vertex_program
);
5282 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
5284 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
5285 CHECK_EXT1(NV_vertex_program
);
5286 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
5288 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
5289 CHECK_EXT1(NV_vertex_program
);
5290 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
5292 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
5293 CHECK_EXT1(NV_vertex_program
);
5294 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
5296 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
5297 CHECK_EXT1(NV_vertex_program
);
5298 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
5300 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
5301 CHECK_EXT1(NV_vertex_program
);
5302 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
5304 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
5305 CHECK_EXT1(NV_vertex_program
);
5306 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[0]);
5308 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
5309 CHECK_EXT1(NV_vertex_program
);
5310 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[1]);
5312 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
5313 CHECK_EXT1(NV_vertex_program
);
5314 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[2]);
5316 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
5317 CHECK_EXT1(NV_vertex_program
);
5318 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[3]);
5320 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
5321 CHECK_EXT1(NV_vertex_program
);
5322 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[4]);
5324 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
5325 CHECK_EXT1(NV_vertex_program
);
5326 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[5]);
5328 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
5329 CHECK_EXT1(NV_vertex_program
);
5330 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[6]);
5332 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
5333 CHECK_EXT1(NV_vertex_program
);
5334 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[7]);
5336 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
5337 CHECK_EXT1(NV_vertex_program
);
5338 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[8]);
5340 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
5341 CHECK_EXT1(NV_vertex_program
);
5342 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[9]);
5344 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
5345 CHECK_EXT1(NV_vertex_program
);
5346 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[10]);
5348 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
5349 CHECK_EXT1(NV_vertex_program
);
5350 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[11]);
5352 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
5353 CHECK_EXT1(NV_vertex_program
);
5354 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[12]);
5356 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
5357 CHECK_EXT1(NV_vertex_program
);
5358 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[13]);
5360 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
5361 CHECK_EXT1(NV_vertex_program
);
5362 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[14]);
5364 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
5365 CHECK_EXT1(NV_vertex_program
);
5366 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[15]);
5368 case GL_FRAGMENT_PROGRAM_NV
:
5369 CHECK_EXT1(NV_fragment_program
);
5370 params
[0] = BOOLEAN_TO_INT(ctx
->FragmentProgram
.Enabled
);
5372 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
5373 CHECK_EXT1(NV_fragment_program
);
5374 params
[0] = ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0;
5376 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
5377 CHECK_EXT1(NV_fragment_program
);
5378 params
[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
5380 case GL_TEXTURE_RECTANGLE_NV
:
5381 CHECK_EXT1(NV_texture_rectangle
);
5382 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
5384 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
5385 CHECK_EXT1(NV_texture_rectangle
);
5386 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
;
5388 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
5389 CHECK_EXT1(NV_texture_rectangle
);
5390 params
[0] = ctx
->Const
.MaxTextureRectSize
;
5392 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
5393 CHECK_EXT1(EXT_stencil_two_side
);
5394 params
[0] = BOOLEAN_TO_INT(ctx
->Stencil
.TestTwoSide
);
5396 case GL_ACTIVE_STENCIL_FACE_EXT
:
5397 CHECK_EXT1(EXT_stencil_two_side
);
5398 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
5400 case GL_MAX_SHININESS_NV
:
5401 CHECK_EXT1(NV_light_max_exponent
);
5402 params
[0] = IROUND(ctx
->Const
.MaxShininess
);
5404 case GL_MAX_SPOT_EXPONENT_NV
:
5405 CHECK_EXT1(NV_light_max_exponent
);
5406 params
[0] = IROUND(ctx
->Const
.MaxSpotExponent
);
5408 case GL_ARRAY_BUFFER_BINDING_ARB
:
5409 params
[0] = ctx
->Array
.ArrayBufferObj
->Name
;
5411 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
5412 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
;
5414 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
5415 params
[0] = ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
;
5417 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
5418 params
[0] = ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
;
5420 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
5421 params
[0] = ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
;
5423 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
5424 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
;
5426 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
5427 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
;
5429 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
5430 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
;
5432 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
5433 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
;
5435 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
5436 params
[0] = ctx
->Array
.ElementArrayBufferObj
->Name
;
5438 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
5439 CHECK_EXT1(EXT_pixel_buffer_object
);
5440 params
[0] = ctx
->Pack
.BufferObj
->Name
;
5442 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
5443 CHECK_EXT1(EXT_pixel_buffer_object
);
5444 params
[0] = ctx
->Unpack
.BufferObj
->Name
;
5446 case GL_VERTEX_PROGRAM_ARB
:
5447 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5448 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.Enabled
);
5450 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
5451 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5452 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.PointSizeEnabled
);
5454 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
5455 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5456 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.TwoSideEnabled
);
5458 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
5459 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5460 params
[0] = ctx
->Const
.MaxProgramMatrixStackDepth
;
5462 case GL_MAX_PROGRAM_MATRICES_ARB
:
5463 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5464 params
[0] = ctx
->Const
.MaxProgramMatrices
;
5466 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
5467 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5468 params
[0] = BOOLEAN_TO_INT(ctx
->CurrentStack
->Depth
+ 1);
5470 case GL_CURRENT_MATRIX_ARB
:
5471 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
5473 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
5474 params
[0] = IROUND(matrix
[0]);
5475 params
[1] = IROUND(matrix
[1]);
5476 params
[2] = IROUND(matrix
[2]);
5477 params
[3] = IROUND(matrix
[3]);
5478 params
[4] = IROUND(matrix
[4]);
5479 params
[5] = IROUND(matrix
[5]);
5480 params
[6] = IROUND(matrix
[6]);
5481 params
[7] = IROUND(matrix
[7]);
5482 params
[8] = IROUND(matrix
[8]);
5483 params
[9] = IROUND(matrix
[9]);
5484 params
[10] = IROUND(matrix
[10]);
5485 params
[11] = IROUND(matrix
[11]);
5486 params
[12] = IROUND(matrix
[12]);
5487 params
[13] = IROUND(matrix
[13]);
5488 params
[14] = IROUND(matrix
[14]);
5489 params
[15] = IROUND(matrix
[15]);
5492 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
5493 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
5495 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
5496 params
[0] = IROUND(matrix
[0]);
5497 params
[1] = IROUND(matrix
[4]);
5498 params
[2] = IROUND(matrix
[8]);
5499 params
[3] = IROUND(matrix
[12]);
5500 params
[4] = IROUND(matrix
[1]);
5501 params
[5] = IROUND(matrix
[5]);
5502 params
[6] = IROUND(matrix
[9]);
5503 params
[7] = IROUND(matrix
[13]);
5504 params
[8] = IROUND(matrix
[2]);
5505 params
[9] = IROUND(matrix
[6]);
5506 params
[10] = IROUND(matrix
[10]);
5507 params
[11] = IROUND(matrix
[14]);
5508 params
[12] = IROUND(matrix
[3]);
5509 params
[13] = IROUND(matrix
[7]);
5510 params
[14] = IROUND(matrix
[11]);
5511 params
[15] = IROUND(matrix
[15]);
5514 case GL_MAX_VERTEX_ATTRIBS_ARB
:
5515 CHECK_EXT1(ARB_vertex_program
);
5516 params
[0] = ctx
->Const
.VertexProgram
.MaxAttribs
;
5518 case GL_PROGRAM_ERROR_POSITION_ARB
:
5519 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
5520 params
[0] = ctx
->Program
.ErrorPos
;
5522 case GL_FRAGMENT_PROGRAM_ARB
:
5523 CHECK_EXT1(ARB_fragment_program
);
5524 params
[0] = BOOLEAN_TO_INT(ctx
->FragmentProgram
.Enabled
);
5526 case GL_MAX_TEXTURE_COORDS_ARB
:
5527 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
5528 params
[0] = ctx
->Const
.MaxTextureCoordUnits
;
5530 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
5531 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
5532 params
[0] = ctx
->Const
.MaxTextureImageUnits
;
5534 case GL_DEPTH_BOUNDS_TEST_EXT
:
5535 CHECK_EXT1(EXT_depth_bounds_test
);
5536 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.BoundsTest
);
5538 case GL_DEPTH_BOUNDS_EXT
:
5539 CHECK_EXT1(EXT_depth_bounds_test
);
5540 params
[0] = IROUND(ctx
->Depth
.BoundsMin
);
5541 params
[1] = IROUND(ctx
->Depth
.BoundsMax
);
5543 case GL_DEPTH_CLAMP
:
5544 CHECK_EXT1(ARB_depth_clamp
);
5545 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.DepthClamp
);
5547 case GL_MAX_DRAW_BUFFERS_ARB
:
5548 params
[0] = ctx
->Const
.MaxDrawBuffers
;
5550 case GL_DRAW_BUFFER0_ARB
:
5551 params
[0] = ENUM_TO_INT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
5553 case GL_DRAW_BUFFER1_ARB
:
5556 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5557 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5560 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
5561 params
[0] = ENUM_TO_INT(buffer
);
5564 case GL_DRAW_BUFFER2_ARB
:
5567 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5568 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5571 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
5572 params
[0] = ENUM_TO_INT(buffer
);
5575 case GL_DRAW_BUFFER3_ARB
:
5578 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5579 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5582 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
5583 params
[0] = ENUM_TO_INT(buffer
);
5586 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
5587 CHECK_EXT1(OES_read_format
);
5588 if (ctx
->NewState
& _NEW_BUFFERS
)
5589 _mesa_update_state(ctx
);
5590 params
[0] = _mesa_get_color_read_type(ctx
);
5592 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
5593 CHECK_EXT1(OES_read_format
);
5594 if (ctx
->NewState
& _NEW_BUFFERS
)
5595 _mesa_update_state(ctx
);
5596 params
[0] = _mesa_get_color_read_format(ctx
);
5598 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
5599 CHECK_EXT1(ATI_fragment_shader
);
5602 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
5603 CHECK_EXT1(ATI_fragment_shader
);
5606 case GL_NUM_PASSES_ATI
:
5607 CHECK_EXT1(ATI_fragment_shader
);
5610 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
5611 CHECK_EXT1(ATI_fragment_shader
);
5614 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
5615 CHECK_EXT1(ATI_fragment_shader
);
5618 case GL_COLOR_ALPHA_PAIRING_ATI
:
5619 CHECK_EXT1(ATI_fragment_shader
);
5620 params
[0] = BOOLEAN_TO_INT(GL_TRUE
);
5622 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
5623 CHECK_EXT1(ATI_fragment_shader
);
5626 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
5627 CHECK_EXT1(ATI_fragment_shader
);
5630 case GL_STENCIL_BACK_FUNC
:
5631 params
[0] = ENUM_TO_INT(ctx
->Stencil
.Function
[1]);
5633 case GL_STENCIL_BACK_VALUE_MASK
:
5634 params
[0] = ctx
->Stencil
.ValueMask
[1];
5636 case GL_STENCIL_BACK_WRITEMASK
:
5637 params
[0] = ctx
->Stencil
.WriteMask
[1];
5639 case GL_STENCIL_BACK_REF
:
5640 params
[0] = ctx
->Stencil
.Ref
[1];
5642 case GL_STENCIL_BACK_FAIL
:
5643 params
[0] = ENUM_TO_INT(ctx
->Stencil
.FailFunc
[1]);
5645 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
5646 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZFailFunc
[1]);
5648 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
5649 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZPassFunc
[1]);
5651 case GL_FRAMEBUFFER_BINDING_EXT
:
5652 CHECK_EXT1(EXT_framebuffer_object
);
5653 params
[0] = ctx
->DrawBuffer
->Name
;
5655 case GL_RENDERBUFFER_BINDING_EXT
:
5656 CHECK_EXT1(EXT_framebuffer_object
);
5657 params
[0] = ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0;
5659 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
5660 CHECK_EXT1(EXT_framebuffer_object
);
5661 params
[0] = ctx
->Const
.MaxColorAttachments
;
5663 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
5664 CHECK_EXT1(EXT_framebuffer_object
);
5665 params
[0] = ctx
->Const
.MaxRenderbufferSize
;
5667 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
5668 CHECK_EXT1(EXT_framebuffer_blit
);
5669 params
[0] = ctx
->ReadBuffer
->Name
;
5671 case GL_PROVOKING_VERTEX_EXT
:
5672 CHECK_EXT1(EXT_provoking_vertex
);
5673 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.ProvokingVertex
);
5675 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
5676 CHECK_EXT1(EXT_provoking_vertex
);
5677 params
[0] = BOOLEAN_TO_INT(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
5679 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
5680 CHECK_EXT1(ARB_fragment_shader
);
5681 params
[0] = ctx
->Const
.FragmentProgram
.MaxUniformComponents
;
5683 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
5684 CHECK_EXT1(ARB_fragment_shader
);
5685 params
[0] = ENUM_TO_INT(ctx
->Hint
.FragmentShaderDerivative
);
5687 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
5688 CHECK_EXT1(ARB_vertex_shader
);
5689 params
[0] = ctx
->Const
.VertexProgram
.MaxUniformComponents
;
5691 case GL_MAX_VARYING_FLOATS_ARB
:
5692 CHECK_EXT1(ARB_vertex_shader
);
5693 params
[0] = ctx
->Const
.MaxVarying
* 4;
5695 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
5696 CHECK_EXT1(ARB_vertex_shader
);
5697 params
[0] = ctx
->Const
.MaxVertexTextureImageUnits
;
5699 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
5700 CHECK_EXT1(ARB_vertex_shader
);
5701 params
[0] = ctx
->Const
.MaxCombinedTextureImageUnits
;
5703 case GL_CURRENT_PROGRAM
:
5704 CHECK_EXT1(ARB_shader_objects
);
5705 params
[0] = ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0;
5707 case GL_MAX_SAMPLES
:
5708 CHECK_EXT1(ARB_framebuffer_object
);
5709 params
[0] = ctx
->Const
.MaxSamples
;
5711 case GL_VERTEX_ARRAY_BINDING_APPLE
:
5712 CHECK_EXT1(APPLE_vertex_array_object
);
5713 params
[0] = ctx
->Array
.ArrayObj
->Name
;
5715 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
5716 CHECK_EXT1(ARB_seamless_cube_map
);
5717 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.CubeMapSeamless
);
5719 case GL_MAX_SERVER_WAIT_TIMEOUT
:
5720 CHECK_EXT1(ARB_sync
);
5721 params
[0] = INT64_TO_INT(ctx
->Const
.MaxServerWaitTimeout
);
5723 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
5724 CHECK_EXT1(EXT_transform_feedback
);
5725 params
[0] = ctx
->TransformFeedback
.CurrentBuffer
->Name
;
5727 case GL_RASTERIZER_DISCARD
:
5728 CHECK_EXT1(EXT_transform_feedback
);
5729 params
[0] = BOOLEAN_TO_INT(ctx
->TransformFeedback
.RasterDiscard
);
5731 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
5732 CHECK_EXT1(EXT_transform_feedback
);
5733 params
[0] = ctx
->Const
.MaxTransformFeedbackInterleavedComponents
;
5735 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
5736 CHECK_EXT1(EXT_transform_feedback
);
5737 params
[0] = ctx
->Const
.MaxTransformFeedbackSeparateAttribs
;
5739 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
5740 CHECK_EXT1(EXT_transform_feedback
);
5741 params
[0] = ctx
->Const
.MaxTransformFeedbackSeparateComponents
;
5743 case GL_NUM_EXTENSIONS
:
5744 params
[0] = _mesa_get_extension_count(ctx
);
5746 case GL_MAJOR_VERSION
:
5747 params
[0] = ctx
->VersionMajor
;
5749 case GL_MINOR_VERSION
:
5750 params
[0] = ctx
->VersionMinor
;
5752 case GL_CONTEXT_FLAGS
:
5753 params
[0] = ctx
->Const
.ContextFlags
;
5756 goto invalid_enum_error
;
5761 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv(pname=0x%x)", pname
);
5764 #if FEATURE_ARB_sync
5766 _mesa_GetInteger64v( GLenum pname
, GLint64
*params
)
5768 GET_CURRENT_CONTEXT(ctx
);
5769 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5774 if (ctx
->Driver
.GetInteger64v
&&
5775 ctx
->Driver
.GetInteger64v(ctx
, pname
, params
))
5779 case GL_ACCUM_RED_BITS
:
5780 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumRedBits
);
5782 case GL_ACCUM_GREEN_BITS
:
5783 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
5785 case GL_ACCUM_BLUE_BITS
:
5786 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
5788 case GL_ACCUM_ALPHA_BITS
:
5789 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
5791 case GL_ACCUM_CLEAR_VALUE
:
5792 params
[0] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[0]);
5793 params
[1] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[1]);
5794 params
[2] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[2]);
5795 params
[3] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[3]);
5798 params
[0] = IROUND64(ctx
->Pixel
.AlphaBias
);
5801 if (ctx
->NewState
& _NEW_BUFFERS
)
5802 _mesa_update_state(ctx
);
5803 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.alphaBits
);
5805 case GL_ALPHA_SCALE
:
5806 params
[0] = IROUND64(ctx
->Pixel
.AlphaScale
);
5809 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.AlphaEnabled
);
5811 case GL_ALPHA_TEST_FUNC
:
5812 params
[0] = ENUM_TO_INT64(ctx
->Color
.AlphaFunc
);
5814 case GL_ALPHA_TEST_REF
:
5815 params
[0] = FLOAT_TO_INT64(ctx
->Color
.AlphaRef
);
5817 case GL_ATTRIB_STACK_DEPTH
:
5818 params
[0] = (GLint64
)(ctx
->AttribStackDepth
);
5820 case GL_AUTO_NORMAL
:
5821 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.AutoNormal
);
5823 case GL_AUX_BUFFERS
:
5824 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
5827 params
[0] = BOOLEAN_TO_INT64((ctx
->Color
.BlendEnabled
& 1));
5830 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstRGB
);
5833 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcRGB
);
5835 case GL_BLEND_SRC_RGB_EXT
:
5836 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcRGB
);
5838 case GL_BLEND_DST_RGB_EXT
:
5839 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstRGB
);
5841 case GL_BLEND_SRC_ALPHA_EXT
:
5842 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcA
);
5844 case GL_BLEND_DST_ALPHA_EXT
:
5845 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstA
);
5847 case GL_BLEND_EQUATION
:
5848 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendEquationRGB
);
5850 case GL_BLEND_EQUATION_ALPHA_EXT
:
5851 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendEquationA
);
5853 case GL_BLEND_COLOR_EXT
:
5854 params
[0] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[0]);
5855 params
[1] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[1]);
5856 params
[2] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[2]);
5857 params
[3] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[3]);
5860 params
[0] = IROUND64(ctx
->Pixel
.BlueBias
);
5863 if (ctx
->NewState
& _NEW_BUFFERS
)
5864 _mesa_update_state(ctx
);
5865 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.blueBits
);
5868 params
[0] = IROUND64(ctx
->Pixel
.BlueScale
);
5870 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
5871 params
[0] = (GLint64
)(ctx
->ClientAttribStackDepth
);
5873 case GL_CLIP_PLANE0
:
5874 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
5876 case GL_CLIP_PLANE1
:
5877 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
5879 case GL_CLIP_PLANE2
:
5880 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
5882 case GL_CLIP_PLANE3
:
5883 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
5885 case GL_CLIP_PLANE4
:
5886 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
5888 case GL_CLIP_PLANE5
:
5889 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
5891 case GL_COLOR_CLEAR_VALUE
:
5892 params
[0] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[0]);
5893 params
[1] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[1]);
5894 params
[2] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[2]);
5895 params
[3] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[3]);
5897 case GL_COLOR_MATERIAL
:
5898 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.ColorMaterialEnabled
);
5900 case GL_COLOR_MATERIAL_FACE
:
5901 params
[0] = ENUM_TO_INT64(ctx
->Light
.ColorMaterialFace
);
5903 case GL_COLOR_MATERIAL_PARAMETER
:
5904 params
[0] = ENUM_TO_INT64(ctx
->Light
.ColorMaterialMode
);
5906 case GL_COLOR_WRITEMASK
:
5907 params
[0] = (GLint64
)(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
5908 params
[1] = (GLint64
)(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
5909 params
[2] = (GLint64
)(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
5910 params
[3] = (GLint64
)(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
5913 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.CullFlag
);
5915 case GL_CULL_FACE_MODE
:
5916 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.CullFaceMode
);
5918 case GL_CURRENT_COLOR
:
5919 FLUSH_CURRENT(ctx
, 0);
5920 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
5921 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
5922 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
5923 params
[3] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
5925 case GL_CURRENT_INDEX
:
5926 FLUSH_CURRENT(ctx
, 0);
5927 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
5929 case GL_CURRENT_NORMAL
:
5930 FLUSH_CURRENT(ctx
, 0);
5931 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
5932 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
5933 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
5935 case GL_CURRENT_RASTER_COLOR
:
5936 params
[0] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[0]);
5937 params
[1] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[1]);
5938 params
[2] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[2]);
5939 params
[3] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[3]);
5941 case GL_CURRENT_RASTER_DISTANCE
:
5942 params
[0] = IROUND64(ctx
->Current
.RasterDistance
);
5944 case GL_CURRENT_RASTER_INDEX
:
5945 params
[0] = IROUND64(1.0);
5947 case GL_CURRENT_RASTER_POSITION
:
5948 params
[0] = IROUND64(ctx
->Current
.RasterPos
[0]);
5949 params
[1] = IROUND64(ctx
->Current
.RasterPos
[1]);
5950 params
[2] = IROUND64(ctx
->Current
.RasterPos
[2]);
5951 params
[3] = IROUND64(ctx
->Current
.RasterPos
[3]);
5953 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
5954 params
[0] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[0]);
5955 params
[1] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[1]);
5956 params
[2] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[2]);
5957 params
[3] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[3]);
5959 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
5961 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
5962 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
5963 _mesa_error(ctx
, GL_INVALID_OPERATION
,
5964 "glGet(raster tex coords, unit %u)", unit
);
5967 params
[0] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][0]);
5968 params
[1] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][1]);
5969 params
[2] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][2]);
5970 params
[3] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][3]);
5973 case GL_CURRENT_RASTER_POSITION_VALID
:
5974 params
[0] = BOOLEAN_TO_INT64(ctx
->Current
.RasterPosValid
);
5976 case GL_CURRENT_TEXTURE_COORDS
:
5978 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
5979 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
5980 _mesa_error(ctx
, GL_INVALID_OPERATION
,
5981 "glGet(current tex coords, unit %u)", unit
);
5984 FLUSH_CURRENT(ctx
, 0);
5985 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
5986 params
[1] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
5987 params
[2] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
5988 params
[3] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
5992 params
[0] = IROUND64(ctx
->Pixel
.DepthBias
);
5995 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.depthBits
);
5997 case GL_DEPTH_CLEAR_VALUE
:
5998 params
[0] = FLOAT_TO_INT64(((GLfloat
) ctx
->Depth
.Clear
));
6001 params
[0] = ENUM_TO_INT64(ctx
->Depth
.Func
);
6003 case GL_DEPTH_RANGE
:
6004 params
[0] = FLOAT_TO_INT64(ctx
->Viewport
.Near
);
6005 params
[1] = FLOAT_TO_INT64(ctx
->Viewport
.Far
);
6007 case GL_DEPTH_SCALE
:
6008 params
[0] = IROUND64(ctx
->Pixel
.DepthScale
);
6011 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.Test
);
6013 case GL_DEPTH_WRITEMASK
:
6014 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.Mask
);
6017 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.DitherFlag
);
6019 case GL_DOUBLEBUFFER
:
6020 params
[0] = BOOLEAN_TO_INT64(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
6022 case GL_DRAW_BUFFER
:
6023 params
[0] = ENUM_TO_INT64(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
6026 FLUSH_CURRENT(ctx
, 0);
6027 params
[0] = BOOLEAN_TO_INT64((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
6029 case GL_FEEDBACK_BUFFER_SIZE
:
6030 params
[0] = (GLint64
)(ctx
->Feedback
.BufferSize
);
6032 case GL_FEEDBACK_BUFFER_TYPE
:
6033 params
[0] = ENUM_TO_INT64(ctx
->Feedback
.Type
);
6036 params
[0] = BOOLEAN_TO_INT64(ctx
->Fog
.Enabled
);
6039 params
[0] = FLOAT_TO_INT64(ctx
->Fog
.Color
[0]);
6040 params
[1] = FLOAT_TO_INT64(ctx
->Fog
.Color
[1]);
6041 params
[2] = FLOAT_TO_INT64(ctx
->Fog
.Color
[2]);
6042 params
[3] = FLOAT_TO_INT64(ctx
->Fog
.Color
[3]);
6044 case GL_FOG_DENSITY
:
6045 params
[0] = IROUND64(ctx
->Fog
.Density
);
6048 params
[0] = IROUND64(ctx
->Fog
.End
);
6051 params
[0] = ENUM_TO_INT64(ctx
->Hint
.Fog
);
6054 params
[0] = IROUND64(ctx
->Fog
.Index
);
6057 params
[0] = ENUM_TO_INT64(ctx
->Fog
.Mode
);
6060 params
[0] = IROUND64(ctx
->Fog
.Start
);
6063 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.FrontFace
);
6066 params
[0] = IROUND64(ctx
->Pixel
.GreenBias
);
6069 if (ctx
->NewState
& _NEW_BUFFERS
)
6070 _mesa_update_state(ctx
);
6071 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.greenBits
);
6073 case GL_GREEN_SCALE
:
6074 params
[0] = IROUND64(ctx
->Pixel
.GreenScale
);
6077 if (ctx
->NewState
& _NEW_BUFFERS
)
6078 _mesa_update_state(ctx
);
6079 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.indexBits
);
6081 case GL_INDEX_CLEAR_VALUE
:
6082 params
[0] = (GLint64
)(ctx
->Color
.ClearIndex
);
6085 params
[0] = BOOLEAN_TO_INT64(GL_FALSE
);
6087 case GL_INDEX_OFFSET
:
6088 params
[0] = (GLint64
)(ctx
->Pixel
.IndexOffset
);
6090 case GL_INDEX_SHIFT
:
6091 params
[0] = (GLint64
)(ctx
->Pixel
.IndexShift
);
6093 case GL_INDEX_WRITEMASK
:
6094 params
[0] = (GLint64
)(ctx
->Color
.IndexMask
);
6097 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[0].Enabled
);
6100 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[1].Enabled
);
6103 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[2].Enabled
);
6106 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[3].Enabled
);
6109 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[4].Enabled
);
6112 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[5].Enabled
);
6115 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[6].Enabled
);
6118 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[7].Enabled
);
6121 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Enabled
);
6123 case GL_LIGHT_MODEL_AMBIENT
:
6124 params
[0] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[0]);
6125 params
[1] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[1]);
6126 params
[2] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[2]);
6127 params
[3] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[3]);
6129 case GL_LIGHT_MODEL_COLOR_CONTROL
:
6130 params
[0] = ENUM_TO_INT64(ctx
->Light
.Model
.ColorControl
);
6132 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
6133 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Model
.LocalViewer
);
6135 case GL_LIGHT_MODEL_TWO_SIDE
:
6136 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Model
.TwoSide
);
6138 case GL_LINE_SMOOTH
:
6139 params
[0] = BOOLEAN_TO_INT64(ctx
->Line
.SmoothFlag
);
6141 case GL_LINE_SMOOTH_HINT
:
6142 params
[0] = ENUM_TO_INT64(ctx
->Hint
.LineSmooth
);
6144 case GL_LINE_STIPPLE
:
6145 params
[0] = BOOLEAN_TO_INT64(ctx
->Line
.StippleFlag
);
6147 case GL_LINE_STIPPLE_PATTERN
:
6148 params
[0] = (GLint64
)(ctx
->Line
.StipplePattern
);
6150 case GL_LINE_STIPPLE_REPEAT
:
6151 params
[0] = (GLint64
)(ctx
->Line
.StippleFactor
);
6154 params
[0] = IROUND64(ctx
->Line
.Width
);
6156 case GL_LINE_WIDTH_GRANULARITY
:
6157 params
[0] = IROUND64(ctx
->Const
.LineWidthGranularity
);
6159 case GL_LINE_WIDTH_RANGE
:
6160 params
[0] = IROUND64(ctx
->Const
.MinLineWidthAA
);
6161 params
[1] = IROUND64(ctx
->Const
.MaxLineWidthAA
);
6163 case GL_ALIASED_LINE_WIDTH_RANGE
:
6164 params
[0] = IROUND64(ctx
->Const
.MinLineWidth
);
6165 params
[1] = IROUND64(ctx
->Const
.MaxLineWidth
);
6168 params
[0] = (GLint64
)(ctx
->List
.ListBase
);
6171 params
[0] = (GLint64
)((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
6176 if (!ctx
->CompileFlag
)
6178 else if (ctx
->ExecuteFlag
)
6179 mode
= GL_COMPILE_AND_EXECUTE
;
6182 params
[0] = ENUM_TO_INT64(mode
);
6185 case GL_INDEX_LOGIC_OP
:
6186 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.IndexLogicOpEnabled
);
6188 case GL_COLOR_LOGIC_OP
:
6189 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.ColorLogicOpEnabled
);
6191 case GL_LOGIC_OP_MODE
:
6192 params
[0] = ENUM_TO_INT64(ctx
->Color
.LogicOp
);
6194 case GL_MAP1_COLOR_4
:
6195 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Color4
);
6197 case GL_MAP1_GRID_DOMAIN
:
6198 params
[0] = IROUND64(ctx
->Eval
.MapGrid1u1
);
6199 params
[1] = IROUND64(ctx
->Eval
.MapGrid1u2
);
6201 case GL_MAP1_GRID_SEGMENTS
:
6202 params
[0] = (GLint64
)(ctx
->Eval
.MapGrid1un
);
6205 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Index
);
6207 case GL_MAP1_NORMAL
:
6208 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Normal
);
6210 case GL_MAP1_TEXTURE_COORD_1
:
6211 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord1
);
6213 case GL_MAP1_TEXTURE_COORD_2
:
6214 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord2
);
6216 case GL_MAP1_TEXTURE_COORD_3
:
6217 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord3
);
6219 case GL_MAP1_TEXTURE_COORD_4
:
6220 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord4
);
6222 case GL_MAP1_VERTEX_3
:
6223 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Vertex3
);
6225 case GL_MAP1_VERTEX_4
:
6226 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Vertex4
);
6228 case GL_MAP2_COLOR_4
:
6229 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Color4
);
6231 case GL_MAP2_GRID_DOMAIN
:
6232 params
[0] = IROUND64(ctx
->Eval
.MapGrid2u1
);
6233 params
[1] = IROUND64(ctx
->Eval
.MapGrid2u2
);
6234 params
[2] = IROUND64(ctx
->Eval
.MapGrid2v1
);
6235 params
[3] = IROUND64(ctx
->Eval
.MapGrid2v2
);
6237 case GL_MAP2_GRID_SEGMENTS
:
6238 params
[0] = (GLint64
)(ctx
->Eval
.MapGrid2un
);
6239 params
[1] = (GLint64
)(ctx
->Eval
.MapGrid2vn
);
6242 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Index
);
6244 case GL_MAP2_NORMAL
:
6245 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Normal
);
6247 case GL_MAP2_TEXTURE_COORD_1
:
6248 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord1
);
6250 case GL_MAP2_TEXTURE_COORD_2
:
6251 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord2
);
6253 case GL_MAP2_TEXTURE_COORD_3
:
6254 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord3
);
6256 case GL_MAP2_TEXTURE_COORD_4
:
6257 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord4
);
6259 case GL_MAP2_VERTEX_3
:
6260 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Vertex3
);
6262 case GL_MAP2_VERTEX_4
:
6263 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Vertex4
);
6266 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MapColorFlag
);
6268 case GL_MAP_STENCIL
:
6269 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MapStencilFlag
);
6271 case GL_MATRIX_MODE
:
6272 params
[0] = ENUM_TO_INT64(ctx
->Transform
.MatrixMode
);
6274 case GL_MAX_ATTRIB_STACK_DEPTH
:
6275 params
[0] = (GLint64
)(MAX_ATTRIB_STACK_DEPTH
);
6277 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
6278 params
[0] = (GLint64
)(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
6280 case GL_MAX_CLIP_PLANES
:
6281 params
[0] = (GLint64
)(ctx
->Const
.MaxClipPlanes
);
6283 case GL_MAX_ELEMENTS_VERTICES
:
6284 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayLockSize
);
6286 case GL_MAX_ELEMENTS_INDICES
:
6287 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayLockSize
);
6289 case GL_MAX_EVAL_ORDER
:
6290 params
[0] = (GLint64
)(MAX_EVAL_ORDER
);
6293 params
[0] = (GLint64
)(ctx
->Const
.MaxLights
);
6295 case GL_MAX_LIST_NESTING
:
6296 params
[0] = (GLint64
)(MAX_LIST_NESTING
);
6298 case GL_MAX_MODELVIEW_STACK_DEPTH
:
6299 params
[0] = (GLint64
)(MAX_MODELVIEW_STACK_DEPTH
);
6301 case GL_MAX_NAME_STACK_DEPTH
:
6302 params
[0] = (GLint64
)(MAX_NAME_STACK_DEPTH
);
6304 case GL_MAX_PIXEL_MAP_TABLE
:
6305 params
[0] = (GLint64
)(MAX_PIXEL_MAP_TABLE
);
6307 case GL_MAX_PROJECTION_STACK_DEPTH
:
6308 params
[0] = (GLint64
)(MAX_PROJECTION_STACK_DEPTH
);
6310 case GL_MAX_TEXTURE_SIZE
:
6311 params
[0] = (GLint64
)(1 << (ctx
->Const
.MaxTextureLevels
- 1));
6313 case GL_MAX_3D_TEXTURE_SIZE
:
6314 params
[0] = (GLint64
)(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
6316 case GL_MAX_TEXTURE_STACK_DEPTH
:
6317 params
[0] = (GLint64
)(MAX_TEXTURE_STACK_DEPTH
);
6319 case GL_MAX_VIEWPORT_DIMS
:
6320 params
[0] = (GLint64
)(ctx
->Const
.MaxViewportWidth
);
6321 params
[1] = (GLint64
)(ctx
->Const
.MaxViewportHeight
);
6323 case GL_MODELVIEW_MATRIX
:
6325 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
6326 params
[0] = IROUND64(matrix
[0]);
6327 params
[1] = IROUND64(matrix
[1]);
6328 params
[2] = IROUND64(matrix
[2]);
6329 params
[3] = IROUND64(matrix
[3]);
6330 params
[4] = IROUND64(matrix
[4]);
6331 params
[5] = IROUND64(matrix
[5]);
6332 params
[6] = IROUND64(matrix
[6]);
6333 params
[7] = IROUND64(matrix
[7]);
6334 params
[8] = IROUND64(matrix
[8]);
6335 params
[9] = IROUND64(matrix
[9]);
6336 params
[10] = IROUND64(matrix
[10]);
6337 params
[11] = IROUND64(matrix
[11]);
6338 params
[12] = IROUND64(matrix
[12]);
6339 params
[13] = IROUND64(matrix
[13]);
6340 params
[14] = IROUND64(matrix
[14]);
6341 params
[15] = IROUND64(matrix
[15]);
6344 case GL_MODELVIEW_STACK_DEPTH
:
6345 params
[0] = (GLint64
)(ctx
->ModelviewMatrixStack
.Depth
+ 1);
6347 case GL_NAME_STACK_DEPTH
:
6348 params
[0] = (GLint64
)(ctx
->Select
.NameStackDepth
);
6351 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.Normalize
);
6353 case GL_PACK_ALIGNMENT
:
6354 params
[0] = (GLint64
)(ctx
->Pack
.Alignment
);
6356 case GL_PACK_LSB_FIRST
:
6357 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.LsbFirst
);
6359 case GL_PACK_ROW_LENGTH
:
6360 params
[0] = (GLint64
)(ctx
->Pack
.RowLength
);
6362 case GL_PACK_SKIP_PIXELS
:
6363 params
[0] = (GLint64
)(ctx
->Pack
.SkipPixels
);
6365 case GL_PACK_SKIP_ROWS
:
6366 params
[0] = (GLint64
)(ctx
->Pack
.SkipRows
);
6368 case GL_PACK_SWAP_BYTES
:
6369 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.SwapBytes
);
6371 case GL_PACK_SKIP_IMAGES_EXT
:
6372 params
[0] = (GLint64
)(ctx
->Pack
.SkipImages
);
6374 case GL_PACK_IMAGE_HEIGHT_EXT
:
6375 params
[0] = (GLint64
)(ctx
->Pack
.ImageHeight
);
6377 case GL_PACK_INVERT_MESA
:
6378 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.Invert
);
6380 case GL_PERSPECTIVE_CORRECTION_HINT
:
6381 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PerspectiveCorrection
);
6383 case GL_PIXEL_MAP_A_TO_A_SIZE
:
6384 params
[0] = (GLint64
)(ctx
->PixelMaps
.AtoA
.Size
);
6386 case GL_PIXEL_MAP_B_TO_B_SIZE
:
6387 params
[0] = (GLint64
)(ctx
->PixelMaps
.BtoB
.Size
);
6389 case GL_PIXEL_MAP_G_TO_G_SIZE
:
6390 params
[0] = (GLint64
)(ctx
->PixelMaps
.GtoG
.Size
);
6392 case GL_PIXEL_MAP_I_TO_A_SIZE
:
6393 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoA
.Size
);
6395 case GL_PIXEL_MAP_I_TO_B_SIZE
:
6396 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoB
.Size
);
6398 case GL_PIXEL_MAP_I_TO_G_SIZE
:
6399 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoG
.Size
);
6401 case GL_PIXEL_MAP_I_TO_I_SIZE
:
6402 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoI
.Size
);
6404 case GL_PIXEL_MAP_I_TO_R_SIZE
:
6405 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoR
.Size
);
6407 case GL_PIXEL_MAP_R_TO_R_SIZE
:
6408 params
[0] = (GLint64
)(ctx
->PixelMaps
.RtoR
.Size
);
6410 case GL_PIXEL_MAP_S_TO_S_SIZE
:
6411 params
[0] = (GLint64
)(ctx
->PixelMaps
.StoS
.Size
);
6414 params
[0] = IROUND64(ctx
->Point
.Size
);
6416 case GL_POINT_SIZE_GRANULARITY
:
6417 params
[0] = IROUND64(ctx
->Const
.PointSizeGranularity
);
6419 case GL_POINT_SIZE_RANGE
:
6420 params
[0] = IROUND64(ctx
->Const
.MinPointSizeAA
);
6421 params
[1] = IROUND64(ctx
->Const
.MaxPointSizeAA
);
6423 case GL_ALIASED_POINT_SIZE_RANGE
:
6424 params
[0] = IROUND64(ctx
->Const
.MinPointSize
);
6425 params
[1] = IROUND64(ctx
->Const
.MaxPointSize
);
6427 case GL_POINT_SMOOTH
:
6428 params
[0] = BOOLEAN_TO_INT64(ctx
->Point
.SmoothFlag
);
6430 case GL_POINT_SMOOTH_HINT
:
6431 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PointSmooth
);
6433 case GL_POINT_SIZE_MIN_EXT
:
6434 params
[0] = IROUND64(ctx
->Point
.MinSize
);
6436 case GL_POINT_SIZE_MAX_EXT
:
6437 params
[0] = IROUND64(ctx
->Point
.MaxSize
);
6439 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
6440 params
[0] = IROUND64(ctx
->Point
.Threshold
);
6442 case GL_DISTANCE_ATTENUATION_EXT
:
6443 params
[0] = IROUND64(ctx
->Point
.Params
[0]);
6444 params
[1] = IROUND64(ctx
->Point
.Params
[1]);
6445 params
[2] = IROUND64(ctx
->Point
.Params
[2]);
6447 case GL_POLYGON_MODE
:
6448 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.FrontMode
);
6449 params
[1] = ENUM_TO_INT64(ctx
->Polygon
.BackMode
);
6451 case GL_POLYGON_OFFSET_BIAS_EXT
:
6452 params
[0] = IROUND64(ctx
->Polygon
.OffsetUnits
);
6454 case GL_POLYGON_OFFSET_FACTOR
:
6455 params
[0] = IROUND64(ctx
->Polygon
.OffsetFactor
);
6457 case GL_POLYGON_OFFSET_UNITS
:
6458 params
[0] = IROUND64(ctx
->Polygon
.OffsetUnits
);
6460 case GL_POLYGON_OFFSET_POINT
:
6461 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetPoint
);
6463 case GL_POLYGON_OFFSET_LINE
:
6464 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetLine
);
6466 case GL_POLYGON_OFFSET_FILL
:
6467 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetFill
);
6469 case GL_POLYGON_SMOOTH
:
6470 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.SmoothFlag
);
6472 case GL_POLYGON_SMOOTH_HINT
:
6473 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PolygonSmooth
);
6475 case GL_POLYGON_STIPPLE
:
6476 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.StippleFlag
);
6478 case GL_PROJECTION_MATRIX
:
6480 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
6481 params
[0] = IROUND64(matrix
[0]);
6482 params
[1] = IROUND64(matrix
[1]);
6483 params
[2] = IROUND64(matrix
[2]);
6484 params
[3] = IROUND64(matrix
[3]);
6485 params
[4] = IROUND64(matrix
[4]);
6486 params
[5] = IROUND64(matrix
[5]);
6487 params
[6] = IROUND64(matrix
[6]);
6488 params
[7] = IROUND64(matrix
[7]);
6489 params
[8] = IROUND64(matrix
[8]);
6490 params
[9] = IROUND64(matrix
[9]);
6491 params
[10] = IROUND64(matrix
[10]);
6492 params
[11] = IROUND64(matrix
[11]);
6493 params
[12] = IROUND64(matrix
[12]);
6494 params
[13] = IROUND64(matrix
[13]);
6495 params
[14] = IROUND64(matrix
[14]);
6496 params
[15] = IROUND64(matrix
[15]);
6499 case GL_PROJECTION_STACK_DEPTH
:
6500 params
[0] = (GLint64
)(ctx
->ProjectionMatrixStack
.Depth
+ 1);
6502 case GL_READ_BUFFER
:
6503 params
[0] = ENUM_TO_INT64(ctx
->ReadBuffer
->ColorReadBuffer
);
6506 params
[0] = IROUND64(ctx
->Pixel
.RedBias
);
6509 if (ctx
->NewState
& _NEW_BUFFERS
)
6510 _mesa_update_state(ctx
);
6511 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.redBits
);
6514 params
[0] = IROUND64(ctx
->Pixel
.RedScale
);
6516 case GL_RENDER_MODE
:
6517 params
[0] = ENUM_TO_INT64(ctx
->RenderMode
);
6519 case GL_RESCALE_NORMAL
:
6520 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.RescaleNormals
);
6523 params
[0] = BOOLEAN_TO_INT64(GL_TRUE
);
6525 case GL_SCISSOR_BOX
:
6526 params
[0] = (GLint64
)(ctx
->Scissor
.X
);
6527 params
[1] = (GLint64
)(ctx
->Scissor
.Y
);
6528 params
[2] = (GLint64
)(ctx
->Scissor
.Width
);
6529 params
[3] = (GLint64
)(ctx
->Scissor
.Height
);
6531 case GL_SCISSOR_TEST
:
6532 params
[0] = BOOLEAN_TO_INT64(ctx
->Scissor
.Enabled
);
6534 case GL_SELECTION_BUFFER_SIZE
:
6535 params
[0] = (GLint64
)(ctx
->Select
.BufferSize
);
6537 case GL_SHADE_MODEL
:
6538 params
[0] = ENUM_TO_INT64(ctx
->Light
.ShadeModel
);
6540 case GL_SHARED_TEXTURE_PALETTE_EXT
:
6541 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.SharedPalette
);
6543 case GL_STENCIL_BITS
:
6544 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.stencilBits
);
6546 case GL_STENCIL_CLEAR_VALUE
:
6547 params
[0] = (GLint64
)(ctx
->Stencil
.Clear
);
6549 case GL_STENCIL_FAIL
:
6550 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
6552 case GL_STENCIL_FUNC
:
6553 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
6555 case GL_STENCIL_PASS_DEPTH_FAIL
:
6556 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
6558 case GL_STENCIL_PASS_DEPTH_PASS
:
6559 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
6561 case GL_STENCIL_REF
:
6562 params
[0] = (GLint64
)(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
6564 case GL_STENCIL_TEST
:
6565 params
[0] = BOOLEAN_TO_INT64(ctx
->Stencil
.Enabled
);
6567 case GL_STENCIL_VALUE_MASK
:
6568 params
[0] = (GLint64
)(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
6570 case GL_STENCIL_WRITEMASK
:
6571 params
[0] = (GLint64
)(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
6574 params
[0] = BOOLEAN_TO_INT64(ctx
->DrawBuffer
->Visual
.stereoMode
);
6576 case GL_SUBPIXEL_BITS
:
6577 params
[0] = (GLint64
)(ctx
->Const
.SubPixelBits
);
6580 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D
));
6583 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D
));
6586 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D
));
6588 case GL_TEXTURE_1D_ARRAY_EXT
:
6589 CHECK_EXT1(MESA_texture_array
);
6590 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
6592 case GL_TEXTURE_2D_ARRAY_EXT
:
6593 CHECK_EXT1(MESA_texture_array
);
6594 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
6596 case GL_TEXTURE_BINDING_1D
:
6597 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
6599 case GL_TEXTURE_BINDING_2D
:
6600 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
6602 case GL_TEXTURE_BINDING_3D
:
6603 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
6605 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
6606 CHECK_EXT1(MESA_texture_array
);
6607 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
6609 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
6610 CHECK_EXT1(MESA_texture_array
);
6611 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
6613 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
6614 CHECK_EXT1(MESA_texture_array
);
6615 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayTextureLayers
);
6617 case GL_TEXTURE_GEN_S
:
6618 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
6620 case GL_TEXTURE_GEN_T
:
6621 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
6623 case GL_TEXTURE_GEN_R
:
6624 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
6626 case GL_TEXTURE_GEN_Q
:
6627 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
6629 case GL_TEXTURE_MATRIX
:
6631 const GLfloat
*matrix
;
6632 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6633 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6634 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
6638 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
6639 params
[0] = IROUND64(matrix
[0]);
6640 params
[1] = IROUND64(matrix
[1]);
6641 params
[2] = IROUND64(matrix
[2]);
6642 params
[3] = IROUND64(matrix
[3]);
6643 params
[4] = IROUND64(matrix
[4]);
6644 params
[5] = IROUND64(matrix
[5]);
6645 params
[6] = IROUND64(matrix
[6]);
6646 params
[7] = IROUND64(matrix
[7]);
6647 params
[8] = IROUND64(matrix
[8]);
6648 params
[9] = IROUND64(matrix
[9]);
6649 params
[10] = IROUND64(matrix
[10]);
6650 params
[11] = IROUND64(matrix
[11]);
6651 params
[12] = IROUND64(matrix
[12]);
6652 params
[13] = IROUND64(matrix
[13]);
6653 params
[14] = IROUND64(matrix
[14]);
6654 params
[15] = IROUND64(matrix
[15]);
6657 case GL_TEXTURE_STACK_DEPTH
:
6659 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6660 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6661 _mesa_error(ctx
, GL_INVALID_OPERATION
,
6662 "glGet(texture stack depth, unit %u)", unit
);
6665 params
[0] = (GLint64
)(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
6668 case GL_UNPACK_ALIGNMENT
:
6669 params
[0] = (GLint64
)(ctx
->Unpack
.Alignment
);
6671 case GL_UNPACK_LSB_FIRST
:
6672 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.LsbFirst
);
6674 case GL_UNPACK_ROW_LENGTH
:
6675 params
[0] = (GLint64
)(ctx
->Unpack
.RowLength
);
6677 case GL_UNPACK_SKIP_PIXELS
:
6678 params
[0] = (GLint64
)(ctx
->Unpack
.SkipPixels
);
6680 case GL_UNPACK_SKIP_ROWS
:
6681 params
[0] = (GLint64
)(ctx
->Unpack
.SkipRows
);
6683 case GL_UNPACK_SWAP_BYTES
:
6684 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.SwapBytes
);
6686 case GL_UNPACK_SKIP_IMAGES_EXT
:
6687 params
[0] = (GLint64
)(ctx
->Unpack
.SkipImages
);
6689 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
6690 params
[0] = (GLint64
)(ctx
->Unpack
.ImageHeight
);
6692 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
6693 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.ClientStorage
);
6696 params
[0] = (GLint64
)(ctx
->Viewport
.X
);
6697 params
[1] = (GLint64
)(ctx
->Viewport
.Y
);
6698 params
[2] = (GLint64
)(ctx
->Viewport
.Width
);
6699 params
[3] = (GLint64
)(ctx
->Viewport
.Height
);
6702 params
[0] = IROUND64(ctx
->Pixel
.ZoomX
);
6705 params
[0] = IROUND64(ctx
->Pixel
.ZoomY
);
6707 case GL_VERTEX_ARRAY
:
6708 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
6710 case GL_VERTEX_ARRAY_SIZE
:
6711 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.Size
);
6713 case GL_VERTEX_ARRAY_TYPE
:
6714 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Vertex
.Type
);
6716 case GL_VERTEX_ARRAY_STRIDE
:
6717 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
6719 case GL_VERTEX_ARRAY_COUNT_EXT
:
6720 params
[0] = (GLint64
)(0);
6722 case GL_NORMAL_ARRAY
:
6723 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
6725 case GL_NORMAL_ARRAY_TYPE
:
6726 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Normal
.Type
);
6728 case GL_NORMAL_ARRAY_STRIDE
:
6729 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Normal
.Stride
);
6731 case GL_NORMAL_ARRAY_COUNT_EXT
:
6732 params
[0] = (GLint64
)(0);
6734 case GL_COLOR_ARRAY
:
6735 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Color
.Enabled
);
6737 case GL_COLOR_ARRAY_SIZE
:
6738 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.Size
);
6740 case GL_COLOR_ARRAY_TYPE
:
6741 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Color
.Type
);
6743 case GL_COLOR_ARRAY_STRIDE
:
6744 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.Stride
);
6746 case GL_COLOR_ARRAY_COUNT_EXT
:
6747 params
[0] = (GLint64
)(0);
6749 case GL_INDEX_ARRAY
:
6750 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Index
.Enabled
);
6752 case GL_INDEX_ARRAY_TYPE
:
6753 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Index
.Type
);
6755 case GL_INDEX_ARRAY_STRIDE
:
6756 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Index
.Stride
);
6758 case GL_INDEX_ARRAY_COUNT_EXT
:
6759 params
[0] = (GLint64
)(0);
6761 case GL_TEXTURE_COORD_ARRAY
:
6762 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
6764 case GL_TEXTURE_COORD_ARRAY_SIZE
:
6765 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
6767 case GL_TEXTURE_COORD_ARRAY_TYPE
:
6768 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
6770 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
6771 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
6773 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
6774 params
[0] = (GLint64
)(0);
6776 case GL_EDGE_FLAG_ARRAY
:
6777 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
6779 case GL_EDGE_FLAG_ARRAY_STRIDE
:
6780 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
6782 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
6783 params
[0] = (GLint64
)(0);
6785 case GL_MAX_TEXTURE_UNITS_ARB
:
6786 CHECK_EXT1(ARB_multitexture
);
6787 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureUnits
);
6789 case GL_ACTIVE_TEXTURE_ARB
:
6790 CHECK_EXT1(ARB_multitexture
);
6791 params
[0] = (GLint64
)(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
6793 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
6794 CHECK_EXT1(ARB_multitexture
);
6795 params
[0] = (GLint64
)(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
6797 case GL_TEXTURE_CUBE_MAP_ARB
:
6798 CHECK_EXT1(ARB_texture_cube_map
);
6799 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
6801 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
6802 CHECK_EXT1(ARB_texture_cube_map
);
6803 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
6805 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
6806 CHECK_EXT1(ARB_texture_cube_map
);
6807 params
[0] = (GLint64
)((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
6809 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
6810 params
[0] = (GLint64
)(ctx
->Hint
.TextureCompression
);
6812 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
6813 params
[0] = (GLint64
)(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
6815 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
6818 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
6820 for (i
= 0; i
< n
; i
++)
6821 params
[i
] = ENUM_TO_INT64(formats
[i
]);
6824 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
6825 CHECK_EXT1(EXT_compiled_vertex_array
);
6826 params
[0] = (GLint64
)(ctx
->Array
.LockFirst
);
6828 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
6829 CHECK_EXT1(EXT_compiled_vertex_array
);
6830 params
[0] = (GLint64
)(ctx
->Array
.LockCount
);
6832 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
6834 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
6835 params
[0] = IROUND64(matrix
[0]);
6836 params
[1] = IROUND64(matrix
[4]);
6837 params
[2] = IROUND64(matrix
[8]);
6838 params
[3] = IROUND64(matrix
[12]);
6839 params
[4] = IROUND64(matrix
[1]);
6840 params
[5] = IROUND64(matrix
[5]);
6841 params
[6] = IROUND64(matrix
[9]);
6842 params
[7] = IROUND64(matrix
[13]);
6843 params
[8] = IROUND64(matrix
[2]);
6844 params
[9] = IROUND64(matrix
[6]);
6845 params
[10] = IROUND64(matrix
[10]);
6846 params
[11] = IROUND64(matrix
[14]);
6847 params
[12] = IROUND64(matrix
[3]);
6848 params
[13] = IROUND64(matrix
[7]);
6849 params
[14] = IROUND64(matrix
[11]);
6850 params
[15] = IROUND64(matrix
[15]);
6853 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
6855 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
6856 params
[0] = IROUND64(matrix
[0]);
6857 params
[1] = IROUND64(matrix
[4]);
6858 params
[2] = IROUND64(matrix
[8]);
6859 params
[3] = IROUND64(matrix
[12]);
6860 params
[4] = IROUND64(matrix
[1]);
6861 params
[5] = IROUND64(matrix
[5]);
6862 params
[6] = IROUND64(matrix
[9]);
6863 params
[7] = IROUND64(matrix
[13]);
6864 params
[8] = IROUND64(matrix
[2]);
6865 params
[9] = IROUND64(matrix
[6]);
6866 params
[10] = IROUND64(matrix
[10]);
6867 params
[11] = IROUND64(matrix
[14]);
6868 params
[12] = IROUND64(matrix
[3]);
6869 params
[13] = IROUND64(matrix
[7]);
6870 params
[14] = IROUND64(matrix
[11]);
6871 params
[15] = IROUND64(matrix
[15]);
6874 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
6876 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
6877 params
[0] = IROUND64(matrix
[0]);
6878 params
[1] = IROUND64(matrix
[4]);
6879 params
[2] = IROUND64(matrix
[8]);
6880 params
[3] = IROUND64(matrix
[12]);
6881 params
[4] = IROUND64(matrix
[1]);
6882 params
[5] = IROUND64(matrix
[5]);
6883 params
[6] = IROUND64(matrix
[9]);
6884 params
[7] = IROUND64(matrix
[13]);
6885 params
[8] = IROUND64(matrix
[2]);
6886 params
[9] = IROUND64(matrix
[6]);
6887 params
[10] = IROUND64(matrix
[10]);
6888 params
[11] = IROUND64(matrix
[14]);
6889 params
[12] = IROUND64(matrix
[3]);
6890 params
[13] = IROUND64(matrix
[7]);
6891 params
[14] = IROUND64(matrix
[11]);
6892 params
[15] = IROUND64(matrix
[15]);
6895 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
6897 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
6898 params
[0] = IROUND64(matrix
[0]);
6899 params
[1] = IROUND64(matrix
[4]);
6900 params
[2] = IROUND64(matrix
[8]);
6901 params
[3] = IROUND64(matrix
[12]);
6902 params
[4] = IROUND64(matrix
[1]);
6903 params
[5] = IROUND64(matrix
[5]);
6904 params
[6] = IROUND64(matrix
[9]);
6905 params
[7] = IROUND64(matrix
[13]);
6906 params
[8] = IROUND64(matrix
[2]);
6907 params
[9] = IROUND64(matrix
[6]);
6908 params
[10] = IROUND64(matrix
[10]);
6909 params
[11] = IROUND64(matrix
[14]);
6910 params
[12] = IROUND64(matrix
[3]);
6911 params
[13] = IROUND64(matrix
[7]);
6912 params
[14] = IROUND64(matrix
[11]);
6913 params
[15] = IROUND64(matrix
[15]);
6916 case GL_COLOR_MATRIX_SGI
:
6918 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
6919 params
[0] = IROUND64(matrix
[0]);
6920 params
[1] = IROUND64(matrix
[1]);
6921 params
[2] = IROUND64(matrix
[2]);
6922 params
[3] = IROUND64(matrix
[3]);
6923 params
[4] = IROUND64(matrix
[4]);
6924 params
[5] = IROUND64(matrix
[5]);
6925 params
[6] = IROUND64(matrix
[6]);
6926 params
[7] = IROUND64(matrix
[7]);
6927 params
[8] = IROUND64(matrix
[8]);
6928 params
[9] = IROUND64(matrix
[9]);
6929 params
[10] = IROUND64(matrix
[10]);
6930 params
[11] = IROUND64(matrix
[11]);
6931 params
[12] = IROUND64(matrix
[12]);
6932 params
[13] = IROUND64(matrix
[13]);
6933 params
[14] = IROUND64(matrix
[14]);
6934 params
[15] = IROUND64(matrix
[15]);
6937 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
6938 params
[0] = (GLint64
)(ctx
->ColorMatrixStack
.Depth
+ 1);
6940 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
6941 params
[0] = (GLint64
)(MAX_COLOR_STACK_DEPTH
);
6943 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
6944 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[0]);
6946 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
6947 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[1]);
6949 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
6950 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[2]);
6952 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
6953 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[3]);
6955 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
6956 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[0]);
6958 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
6959 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[1]);
6961 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
6962 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[2]);
6964 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
6965 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[3]);
6967 case GL_CONVOLUTION_1D_EXT
:
6968 CHECK_EXT1(EXT_convolution
);
6969 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Convolution1DEnabled
);
6971 case GL_CONVOLUTION_2D_EXT
:
6972 CHECK_EXT1(EXT_convolution
);
6973 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Convolution2DEnabled
);
6975 case GL_SEPARABLE_2D_EXT
:
6976 CHECK_EXT1(EXT_convolution
);
6977 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Separable2DEnabled
);
6979 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
6980 CHECK_EXT1(EXT_convolution
);
6981 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[0]);
6983 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
6984 CHECK_EXT1(EXT_convolution
);
6985 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[1]);
6987 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
6988 CHECK_EXT1(EXT_convolution
);
6989 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[2]);
6991 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
6992 CHECK_EXT1(EXT_convolution
);
6993 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[3]);
6995 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
6996 CHECK_EXT1(EXT_convolution
);
6997 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[0]);
6999 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
7000 CHECK_EXT1(EXT_convolution
);
7001 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[1]);
7003 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
7004 CHECK_EXT1(EXT_convolution
);
7005 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[2]);
7007 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
7008 CHECK_EXT1(EXT_convolution
);
7009 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[3]);
7012 CHECK_EXT1(EXT_histogram
);
7013 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.HistogramEnabled
);
7016 CHECK_EXT1(EXT_histogram
);
7017 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MinMaxEnabled
);
7019 case GL_COLOR_TABLE_SGI
:
7020 CHECK_EXT1(SGI_color_table
);
7021 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
7023 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
7024 CHECK_EXT1(SGI_color_table
);
7025 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
7027 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
7028 CHECK_EXT1(SGI_color_table
);
7029 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
7031 case GL_TEXTURE_COLOR_TABLE_SGI
:
7032 CHECK_EXT1(SGI_texture_color_table
);
7033 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
7035 case GL_COLOR_SUM_EXT
:
7036 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
7037 params
[0] = BOOLEAN_TO_INT64(ctx
->Fog
.ColorSumEnabled
);
7039 case GL_CURRENT_SECONDARY_COLOR_EXT
:
7040 CHECK_EXT1(EXT_secondary_color
);
7041 FLUSH_CURRENT(ctx
, 0);
7042 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
7043 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
7044 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
7045 params
[3] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
7047 case GL_SECONDARY_COLOR_ARRAY_EXT
:
7048 CHECK_EXT1(EXT_secondary_color
);
7049 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
7051 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
7052 CHECK_EXT1(EXT_secondary_color
);
7053 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
7055 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
7056 CHECK_EXT1(EXT_secondary_color
);
7057 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
7059 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
7060 CHECK_EXT1(EXT_secondary_color
);
7061 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
7063 case GL_CURRENT_FOG_COORDINATE_EXT
:
7064 CHECK_EXT1(EXT_fog_coord
);
7065 FLUSH_CURRENT(ctx
, 0);
7066 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
7068 case GL_FOG_COORDINATE_ARRAY_EXT
:
7069 CHECK_EXT1(EXT_fog_coord
);
7070 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
7072 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
7073 CHECK_EXT1(EXT_fog_coord
);
7074 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
7076 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
7077 CHECK_EXT1(EXT_fog_coord
);
7078 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
7080 case GL_FOG_COORDINATE_SOURCE_EXT
:
7081 CHECK_EXT1(EXT_fog_coord
);
7082 params
[0] = ENUM_TO_INT64(ctx
->Fog
.FogCoordinateSource
);
7084 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
7085 CHECK_EXT1(EXT_texture_lod_bias
);
7086 params
[0] = IROUND64(ctx
->Const
.MaxTextureLodBias
);
7088 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
7089 CHECK_EXT1(EXT_texture_filter_anisotropic
);
7090 params
[0] = IROUND64(ctx
->Const
.MaxTextureMaxAnisotropy
);
7092 case GL_MULTISAMPLE_ARB
:
7093 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.Enabled
);
7095 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
7096 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleAlphaToCoverage
);
7098 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
7099 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleAlphaToOne
);
7101 case GL_SAMPLE_COVERAGE_ARB
:
7102 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleCoverage
);
7104 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
7105 params
[0] = IROUND64(ctx
->Multisample
.SampleCoverageValue
);
7107 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
7108 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleCoverageInvert
);
7110 case GL_SAMPLE_BUFFERS_ARB
:
7111 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
7113 case GL_SAMPLES_ARB
:
7114 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.samples
);
7116 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
7117 CHECK_EXT1(IBM_rasterpos_clip
);
7118 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.RasterPositionUnclipped
);
7120 case GL_POINT_SPRITE_NV
:
7121 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
7122 params
[0] = BOOLEAN_TO_INT64(ctx
->Point
.PointSprite
);
7124 case GL_POINT_SPRITE_R_MODE_NV
:
7125 CHECK_EXT1(NV_point_sprite
);
7126 params
[0] = ENUM_TO_INT64(ctx
->Point
.SpriteRMode
);
7128 case GL_POINT_SPRITE_COORD_ORIGIN
:
7129 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
7130 params
[0] = ENUM_TO_INT64(ctx
->Point
.SpriteOrigin
);
7132 case GL_GENERATE_MIPMAP_HINT_SGIS
:
7133 CHECK_EXT1(SGIS_generate_mipmap
);
7134 params
[0] = ENUM_TO_INT64(ctx
->Hint
.GenerateMipmap
);
7136 case GL_VERTEX_PROGRAM_BINDING_NV
:
7137 CHECK_EXT1(NV_vertex_program
);
7138 params
[0] = (GLint64
)((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
7140 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
7141 CHECK_EXT1(NV_vertex_program
);
7142 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
7144 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
7145 CHECK_EXT1(NV_vertex_program
);
7146 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
7148 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
7149 CHECK_EXT1(NV_vertex_program
);
7150 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
7152 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
7153 CHECK_EXT1(NV_vertex_program
);
7154 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
7156 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
7157 CHECK_EXT1(NV_vertex_program
);
7158 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
7160 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
7161 CHECK_EXT1(NV_vertex_program
);
7162 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
7164 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
7165 CHECK_EXT1(NV_vertex_program
);
7166 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
7168 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
7169 CHECK_EXT1(NV_vertex_program
);
7170 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
7172 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
7173 CHECK_EXT1(NV_vertex_program
);
7174 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
7176 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
7177 CHECK_EXT1(NV_vertex_program
);
7178 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
7180 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
7181 CHECK_EXT1(NV_vertex_program
);
7182 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
7184 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
7185 CHECK_EXT1(NV_vertex_program
);
7186 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
7188 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
7189 CHECK_EXT1(NV_vertex_program
);
7190 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
7192 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
7193 CHECK_EXT1(NV_vertex_program
);
7194 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
7196 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
7197 CHECK_EXT1(NV_vertex_program
);
7198 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
7200 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
7201 CHECK_EXT1(NV_vertex_program
);
7202 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
7204 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
7205 CHECK_EXT1(NV_vertex_program
);
7206 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[0]);
7208 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
7209 CHECK_EXT1(NV_vertex_program
);
7210 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[1]);
7212 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
7213 CHECK_EXT1(NV_vertex_program
);
7214 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[2]);
7216 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
7217 CHECK_EXT1(NV_vertex_program
);
7218 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[3]);
7220 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
7221 CHECK_EXT1(NV_vertex_program
);
7222 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[4]);
7224 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
7225 CHECK_EXT1(NV_vertex_program
);
7226 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[5]);
7228 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
7229 CHECK_EXT1(NV_vertex_program
);
7230 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[6]);
7232 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
7233 CHECK_EXT1(NV_vertex_program
);
7234 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[7]);
7236 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
7237 CHECK_EXT1(NV_vertex_program
);
7238 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[8]);
7240 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
7241 CHECK_EXT1(NV_vertex_program
);
7242 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[9]);
7244 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
7245 CHECK_EXT1(NV_vertex_program
);
7246 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[10]);
7248 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
7249 CHECK_EXT1(NV_vertex_program
);
7250 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[11]);
7252 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
7253 CHECK_EXT1(NV_vertex_program
);
7254 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[12]);
7256 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
7257 CHECK_EXT1(NV_vertex_program
);
7258 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[13]);
7260 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
7261 CHECK_EXT1(NV_vertex_program
);
7262 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[14]);
7264 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
7265 CHECK_EXT1(NV_vertex_program
);
7266 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[15]);
7268 case GL_FRAGMENT_PROGRAM_NV
:
7269 CHECK_EXT1(NV_fragment_program
);
7270 params
[0] = BOOLEAN_TO_INT64(ctx
->FragmentProgram
.Enabled
);
7272 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
7273 CHECK_EXT1(NV_fragment_program
);
7274 params
[0] = (GLint64
)(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
7276 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
7277 CHECK_EXT1(NV_fragment_program
);
7278 params
[0] = (GLint64
)(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
7280 case GL_TEXTURE_RECTANGLE_NV
:
7281 CHECK_EXT1(NV_texture_rectangle
);
7282 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
7284 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
7285 CHECK_EXT1(NV_texture_rectangle
);
7286 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
7288 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
7289 CHECK_EXT1(NV_texture_rectangle
);
7290 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureRectSize
);
7292 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
7293 CHECK_EXT1(EXT_stencil_two_side
);
7294 params
[0] = BOOLEAN_TO_INT64(ctx
->Stencil
.TestTwoSide
);
7296 case GL_ACTIVE_STENCIL_FACE_EXT
:
7297 CHECK_EXT1(EXT_stencil_two_side
);
7298 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
7300 case GL_MAX_SHININESS_NV
:
7301 CHECK_EXT1(NV_light_max_exponent
);
7302 params
[0] = IROUND64(ctx
->Const
.MaxShininess
);
7304 case GL_MAX_SPOT_EXPONENT_NV
:
7305 CHECK_EXT1(NV_light_max_exponent
);
7306 params
[0] = IROUND64(ctx
->Const
.MaxSpotExponent
);
7308 case GL_ARRAY_BUFFER_BINDING_ARB
:
7309 params
[0] = (GLint64
)(ctx
->Array
.ArrayBufferObj
->Name
);
7311 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
7312 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
7314 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
7315 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
7317 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
7318 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
7320 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
7321 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
7323 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
7324 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
7326 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
7327 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
7329 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
7330 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
7332 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
7333 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
7335 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
7336 params
[0] = (GLint64
)(ctx
->Array
.ElementArrayBufferObj
->Name
);
7338 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
7339 CHECK_EXT1(EXT_pixel_buffer_object
);
7340 params
[0] = (GLint64
)(ctx
->Pack
.BufferObj
->Name
);
7342 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
7343 CHECK_EXT1(EXT_pixel_buffer_object
);
7344 params
[0] = (GLint64
)(ctx
->Unpack
.BufferObj
->Name
);
7346 case GL_VERTEX_PROGRAM_ARB
:
7347 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7348 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.Enabled
);
7350 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
7351 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7352 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.PointSizeEnabled
);
7354 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
7355 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7356 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.TwoSideEnabled
);
7358 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
7359 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7360 params
[0] = (GLint64
)(ctx
->Const
.MaxProgramMatrixStackDepth
);
7362 case GL_MAX_PROGRAM_MATRICES_ARB
:
7363 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7364 params
[0] = (GLint64
)(ctx
->Const
.MaxProgramMatrices
);
7366 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
7367 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7368 params
[0] = BOOLEAN_TO_INT64(ctx
->CurrentStack
->Depth
+ 1);
7370 case GL_CURRENT_MATRIX_ARB
:
7371 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
7373 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
7374 params
[0] = IROUND64(matrix
[0]);
7375 params
[1] = IROUND64(matrix
[1]);
7376 params
[2] = IROUND64(matrix
[2]);
7377 params
[3] = IROUND64(matrix
[3]);
7378 params
[4] = IROUND64(matrix
[4]);
7379 params
[5] = IROUND64(matrix
[5]);
7380 params
[6] = IROUND64(matrix
[6]);
7381 params
[7] = IROUND64(matrix
[7]);
7382 params
[8] = IROUND64(matrix
[8]);
7383 params
[9] = IROUND64(matrix
[9]);
7384 params
[10] = IROUND64(matrix
[10]);
7385 params
[11] = IROUND64(matrix
[11]);
7386 params
[12] = IROUND64(matrix
[12]);
7387 params
[13] = IROUND64(matrix
[13]);
7388 params
[14] = IROUND64(matrix
[14]);
7389 params
[15] = IROUND64(matrix
[15]);
7392 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
7393 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
7395 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
7396 params
[0] = IROUND64(matrix
[0]);
7397 params
[1] = IROUND64(matrix
[4]);
7398 params
[2] = IROUND64(matrix
[8]);
7399 params
[3] = IROUND64(matrix
[12]);
7400 params
[4] = IROUND64(matrix
[1]);
7401 params
[5] = IROUND64(matrix
[5]);
7402 params
[6] = IROUND64(matrix
[9]);
7403 params
[7] = IROUND64(matrix
[13]);
7404 params
[8] = IROUND64(matrix
[2]);
7405 params
[9] = IROUND64(matrix
[6]);
7406 params
[10] = IROUND64(matrix
[10]);
7407 params
[11] = IROUND64(matrix
[14]);
7408 params
[12] = IROUND64(matrix
[3]);
7409 params
[13] = IROUND64(matrix
[7]);
7410 params
[14] = IROUND64(matrix
[11]);
7411 params
[15] = IROUND64(matrix
[15]);
7414 case GL_MAX_VERTEX_ATTRIBS_ARB
:
7415 CHECK_EXT1(ARB_vertex_program
);
7416 params
[0] = (GLint64
)(ctx
->Const
.VertexProgram
.MaxAttribs
);
7418 case GL_PROGRAM_ERROR_POSITION_ARB
:
7419 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
7420 params
[0] = (GLint64
)(ctx
->Program
.ErrorPos
);
7422 case GL_FRAGMENT_PROGRAM_ARB
:
7423 CHECK_EXT1(ARB_fragment_program
);
7424 params
[0] = BOOLEAN_TO_INT64(ctx
->FragmentProgram
.Enabled
);
7426 case GL_MAX_TEXTURE_COORDS_ARB
:
7427 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
7428 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureCoordUnits
);
7430 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
7431 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
7432 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureImageUnits
);
7434 case GL_DEPTH_BOUNDS_TEST_EXT
:
7435 CHECK_EXT1(EXT_depth_bounds_test
);
7436 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.BoundsTest
);
7438 case GL_DEPTH_BOUNDS_EXT
:
7439 CHECK_EXT1(EXT_depth_bounds_test
);
7440 params
[0] = IROUND64(ctx
->Depth
.BoundsMin
);
7441 params
[1] = IROUND64(ctx
->Depth
.BoundsMax
);
7443 case GL_DEPTH_CLAMP
:
7444 CHECK_EXT1(ARB_depth_clamp
);
7445 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.DepthClamp
);
7447 case GL_MAX_DRAW_BUFFERS_ARB
:
7448 params
[0] = (GLint64
)(ctx
->Const
.MaxDrawBuffers
);
7450 case GL_DRAW_BUFFER0_ARB
:
7451 params
[0] = ENUM_TO_INT64(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
7453 case GL_DRAW_BUFFER1_ARB
:
7456 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7457 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7460 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
7461 params
[0] = ENUM_TO_INT64(buffer
);
7464 case GL_DRAW_BUFFER2_ARB
:
7467 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7468 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7471 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
7472 params
[0] = ENUM_TO_INT64(buffer
);
7475 case GL_DRAW_BUFFER3_ARB
:
7478 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7479 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7482 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
7483 params
[0] = ENUM_TO_INT64(buffer
);
7486 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
7487 CHECK_EXT1(OES_read_format
);
7488 if (ctx
->NewState
& _NEW_BUFFERS
)
7489 _mesa_update_state(ctx
);
7490 params
[0] = (GLint64
)(_mesa_get_color_read_type(ctx
));
7492 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
7493 CHECK_EXT1(OES_read_format
);
7494 if (ctx
->NewState
& _NEW_BUFFERS
)
7495 _mesa_update_state(ctx
);
7496 params
[0] = (GLint64
)(_mesa_get_color_read_format(ctx
));
7498 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
7499 CHECK_EXT1(ATI_fragment_shader
);
7500 params
[0] = (GLint64
)(6);
7502 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
7503 CHECK_EXT1(ATI_fragment_shader
);
7504 params
[0] = (GLint64
)(8);
7506 case GL_NUM_PASSES_ATI
:
7507 CHECK_EXT1(ATI_fragment_shader
);
7508 params
[0] = (GLint64
)(2);
7510 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
7511 CHECK_EXT1(ATI_fragment_shader
);
7512 params
[0] = (GLint64
)(8);
7514 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
7515 CHECK_EXT1(ATI_fragment_shader
);
7516 params
[0] = (GLint64
)(16);
7518 case GL_COLOR_ALPHA_PAIRING_ATI
:
7519 CHECK_EXT1(ATI_fragment_shader
);
7520 params
[0] = BOOLEAN_TO_INT64(GL_TRUE
);
7522 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
7523 CHECK_EXT1(ATI_fragment_shader
);
7524 params
[0] = (GLint64
)(3);
7526 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
7527 CHECK_EXT1(ATI_fragment_shader
);
7528 params
[0] = (GLint64
)(3);
7530 case GL_STENCIL_BACK_FUNC
:
7531 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.Function
[1]);
7533 case GL_STENCIL_BACK_VALUE_MASK
:
7534 params
[0] = (GLint64
)(ctx
->Stencil
.ValueMask
[1]);
7536 case GL_STENCIL_BACK_WRITEMASK
:
7537 params
[0] = (GLint64
)(ctx
->Stencil
.WriteMask
[1]);
7539 case GL_STENCIL_BACK_REF
:
7540 params
[0] = (GLint64
)(ctx
->Stencil
.Ref
[1]);
7542 case GL_STENCIL_BACK_FAIL
:
7543 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.FailFunc
[1]);
7545 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
7546 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZFailFunc
[1]);
7548 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
7549 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZPassFunc
[1]);
7551 case GL_FRAMEBUFFER_BINDING_EXT
:
7552 CHECK_EXT1(EXT_framebuffer_object
);
7553 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Name
);
7555 case GL_RENDERBUFFER_BINDING_EXT
:
7556 CHECK_EXT1(EXT_framebuffer_object
);
7557 params
[0] = (GLint64
)(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
7559 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
7560 CHECK_EXT1(EXT_framebuffer_object
);
7561 params
[0] = (GLint64
)(ctx
->Const
.MaxColorAttachments
);
7563 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
7564 CHECK_EXT1(EXT_framebuffer_object
);
7565 params
[0] = (GLint64
)(ctx
->Const
.MaxRenderbufferSize
);
7567 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
7568 CHECK_EXT1(EXT_framebuffer_blit
);
7569 params
[0] = (GLint64
)(ctx
->ReadBuffer
->Name
);
7571 case GL_PROVOKING_VERTEX_EXT
:
7572 CHECK_EXT1(EXT_provoking_vertex
);
7573 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.ProvokingVertex
);
7575 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
7576 CHECK_EXT1(EXT_provoking_vertex
);
7577 params
[0] = BOOLEAN_TO_INT64(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
7579 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
7580 CHECK_EXT1(ARB_fragment_shader
);
7581 params
[0] = (GLint64
)(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
7583 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
7584 CHECK_EXT1(ARB_fragment_shader
);
7585 params
[0] = ENUM_TO_INT64(ctx
->Hint
.FragmentShaderDerivative
);
7587 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
7588 CHECK_EXT1(ARB_vertex_shader
);
7589 params
[0] = (GLint64
)(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
7591 case GL_MAX_VARYING_FLOATS_ARB
:
7592 CHECK_EXT1(ARB_vertex_shader
);
7593 params
[0] = (GLint64
)(ctx
->Const
.MaxVarying
* 4);
7595 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
7596 CHECK_EXT1(ARB_vertex_shader
);
7597 params
[0] = (GLint64
)(ctx
->Const
.MaxVertexTextureImageUnits
);
7599 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
7600 CHECK_EXT1(ARB_vertex_shader
);
7601 params
[0] = (GLint64
)(ctx
->Const
.MaxCombinedTextureImageUnits
);
7603 case GL_CURRENT_PROGRAM
:
7604 CHECK_EXT1(ARB_shader_objects
);
7605 params
[0] = (GLint64
)(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
7607 case GL_MAX_SAMPLES
:
7608 CHECK_EXT1(ARB_framebuffer_object
);
7609 params
[0] = (GLint64
)(ctx
->Const
.MaxSamples
);
7611 case GL_VERTEX_ARRAY_BINDING_APPLE
:
7612 CHECK_EXT1(APPLE_vertex_array_object
);
7613 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Name
);
7615 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
7616 CHECK_EXT1(ARB_seamless_cube_map
);
7617 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.CubeMapSeamless
);
7619 case GL_MAX_SERVER_WAIT_TIMEOUT
:
7620 CHECK_EXT1(ARB_sync
);
7621 params
[0] = ctx
->Const
.MaxServerWaitTimeout
;
7623 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7624 CHECK_EXT1(EXT_transform_feedback
);
7625 params
[0] = (GLint64
)(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
7627 case GL_RASTERIZER_DISCARD
:
7628 CHECK_EXT1(EXT_transform_feedback
);
7629 params
[0] = BOOLEAN_TO_INT64(ctx
->TransformFeedback
.RasterDiscard
);
7631 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
7632 CHECK_EXT1(EXT_transform_feedback
);
7633 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
7635 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
7636 CHECK_EXT1(EXT_transform_feedback
);
7637 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
7639 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
7640 CHECK_EXT1(EXT_transform_feedback
);
7641 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
7643 case GL_NUM_EXTENSIONS
:
7644 params
[0] = (GLint64
)(_mesa_get_extension_count(ctx
));
7646 case GL_MAJOR_VERSION
:
7647 params
[0] = (GLint64
)(ctx
->VersionMajor
);
7649 case GL_MINOR_VERSION
:
7650 params
[0] = (GLint64
)(ctx
->VersionMinor
);
7652 case GL_CONTEXT_FLAGS
:
7653 params
[0] = (GLint64
)(ctx
->Const
.ContextFlags
);
7656 goto invalid_enum_error
;
7661 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetInteger64v(pname=0x%x)", pname
);
7663 #endif /* FEATURE_ARB_sync */
7667 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
7669 const GLfloat magic
= -1234.5F
;
7676 /* Init temp array to magic numbers so we can figure out how many values
7677 * are returned by the GetFloatv() call.
7679 for (i
= 0; i
< 16; i
++)
7682 _mesa_GetFloatv(pname
, values
);
7684 for (i
= 0; i
< 16 && values
[i
] != magic
; i
++)
7685 params
[i
] = (GLdouble
) values
[i
];
7689 _mesa_GetBooleanIndexedv( GLenum pname
, GLuint index
, GLboolean
*params
)
7691 GET_CURRENT_CONTEXT(ctx
);
7692 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7699 CHECK_EXT1(EXT_draw_buffers2
);
7700 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7701 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7704 params
[0] = INT_TO_BOOLEAN(((ctx
->Color
.BlendEnabled
>> index
) & 1));
7706 case GL_COLOR_WRITEMASK
:
7707 CHECK_EXT1(EXT_draw_buffers2
);
7708 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7709 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7712 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0);
7713 params
[1] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0);
7714 params
[2] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0);
7715 params
[3] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0);
7717 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7718 CHECK_EXT1(EXT_transform_feedback
);
7719 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7720 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7723 params
[0] = INT64_TO_BOOLEAN(ctx
->TransformFeedback
.Offset
[index
]);
7725 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7726 CHECK_EXT1(EXT_transform_feedback
);
7727 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7728 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7731 params
[0] = INT64_TO_BOOLEAN(ctx
->TransformFeedback
.Size
[index
]);
7733 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7734 CHECK_EXT1(EXT_transform_feedback
);
7735 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7736 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7739 params
[0] = INT_TO_BOOLEAN(ctx
->TransformFeedback
.Buffers
[index
]->Name
);
7742 goto invalid_enum_error
;
7747 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanIndexedv(pname=0x%x)", pname
);
7751 _mesa_GetIntegerIndexedv( GLenum pname
, GLuint index
, GLint
*params
)
7753 GET_CURRENT_CONTEXT(ctx
);
7754 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7761 CHECK_EXT1(EXT_draw_buffers2
);
7762 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7763 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7766 params
[0] = ((ctx
->Color
.BlendEnabled
>> index
) & 1);
7768 case GL_COLOR_WRITEMASK
:
7769 CHECK_EXT1(EXT_draw_buffers2
);
7770 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7771 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7774 params
[0] = ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0;
7775 params
[1] = ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0;
7776 params
[2] = ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0;
7777 params
[3] = ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0;
7779 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7780 CHECK_EXT1(EXT_transform_feedback
);
7781 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7782 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7785 params
[0] = INT64_TO_INT(ctx
->TransformFeedback
.Offset
[index
]);
7787 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7788 CHECK_EXT1(EXT_transform_feedback
);
7789 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7790 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7793 params
[0] = INT64_TO_INT(ctx
->TransformFeedback
.Size
[index
]);
7795 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7796 CHECK_EXT1(EXT_transform_feedback
);
7797 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7798 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7801 params
[0] = ctx
->TransformFeedback
.Buffers
[index
]->Name
;
7804 goto invalid_enum_error
;
7809 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerIndexedv(pname=0x%x)", pname
);
7812 #if FEATURE_ARB_sync
7814 _mesa_GetInteger64Indexedv( GLenum pname
, GLuint index
, GLint64
*params
)
7816 GET_CURRENT_CONTEXT(ctx
);
7817 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7824 CHECK_EXT1(EXT_draw_buffers2
);
7825 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7826 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7829 params
[0] = (GLint64
)(((ctx
->Color
.BlendEnabled
>> index
) & 1));
7831 case GL_COLOR_WRITEMASK
:
7832 CHECK_EXT1(EXT_draw_buffers2
);
7833 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7834 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7837 params
[0] = (GLint64
)(ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0);
7838 params
[1] = (GLint64
)(ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0);
7839 params
[2] = (GLint64
)(ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0);
7840 params
[3] = (GLint64
)(ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0);
7842 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7843 CHECK_EXT1(EXT_transform_feedback
);
7844 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7845 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7848 params
[0] = ctx
->TransformFeedback
.Offset
[index
];
7850 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7851 CHECK_EXT1(EXT_transform_feedback
);
7852 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7853 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7856 params
[0] = ctx
->TransformFeedback
.Size
[index
];
7858 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7859 CHECK_EXT1(EXT_transform_feedback
);
7860 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7861 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7864 params
[0] = (GLint64
)(ctx
->TransformFeedback
.Buffers
[index
]->Name
);
7867 goto invalid_enum_error
;
7872 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetInteger64Indexedv(pname=0x%x)", pname
);
7874 #endif /* FEATURE_ARB_sync */