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; \
69 #define CHECK_VERSION(VERSION) \
70 if (version < VERSION) { \
71 goto invalid_enum_error; \
76 _mesa_GetBooleanv( GLenum pname
, GLboolean
*params
)
78 GET_CURRENT_CONTEXT(ctx
);
79 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
80 ASSERT_OUTSIDE_BEGIN_END(ctx
);
87 case GL_ACCUM_RED_BITS
:
88 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumRedBits
);
90 case GL_ACCUM_GREEN_BITS
:
91 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
93 case GL_ACCUM_BLUE_BITS
:
94 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
96 case GL_ACCUM_ALPHA_BITS
:
97 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
99 case GL_ACCUM_CLEAR_VALUE
:
100 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[0]);
101 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[1]);
102 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[2]);
103 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[3]);
106 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.AlphaBias
);
109 if (ctx
->NewState
& _NEW_BUFFERS
)
110 _mesa_update_state(ctx
);
111 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.alphaBits
);
114 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.AlphaScale
);
117 params
[0] = ctx
->Color
.AlphaEnabled
;
119 case GL_ALPHA_TEST_FUNC
:
120 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.AlphaFunc
);
122 case GL_ALPHA_TEST_REF
:
123 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.AlphaRef
);
125 case GL_ATTRIB_STACK_DEPTH
:
126 params
[0] = INT_TO_BOOLEAN(ctx
->AttribStackDepth
);
129 params
[0] = ctx
->Eval
.AutoNormal
;
132 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
135 params
[0] = (ctx
->Color
.BlendEnabled
& 1);
138 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstRGB
);
141 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcRGB
);
143 case GL_BLEND_SRC_RGB_EXT
:
144 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcRGB
);
146 case GL_BLEND_DST_RGB_EXT
:
147 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstRGB
);
149 case GL_BLEND_SRC_ALPHA_EXT
:
150 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcA
);
152 case GL_BLEND_DST_ALPHA_EXT
:
153 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstA
);
155 case GL_BLEND_EQUATION
:
156 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendEquationRGB
);
158 case GL_BLEND_EQUATION_ALPHA_EXT
:
159 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendEquationA
);
161 case GL_BLEND_COLOR_EXT
:
162 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[0]);
163 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[1]);
164 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[2]);
165 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[3]);
168 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.BlueBias
);
171 if (ctx
->NewState
& _NEW_BUFFERS
)
172 _mesa_update_state(ctx
);
173 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.blueBits
);
176 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.BlueScale
);
178 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
179 params
[0] = INT_TO_BOOLEAN(ctx
->ClientAttribStackDepth
);
182 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1;
185 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1;
188 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1;
191 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1;
194 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1;
197 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1;
199 case GL_COLOR_CLEAR_VALUE
:
200 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[0]);
201 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[1]);
202 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[2]);
203 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[3]);
205 case GL_COLOR_MATERIAL
:
206 params
[0] = ctx
->Light
.ColorMaterialEnabled
;
208 case GL_COLOR_MATERIAL_FACE
:
209 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ColorMaterialFace
);
211 case GL_COLOR_MATERIAL_PARAMETER
:
212 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ColorMaterialMode
);
214 case GL_COLOR_WRITEMASK
:
215 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
216 params
[1] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
217 params
[2] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
218 params
[3] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
221 params
[0] = ctx
->Polygon
.CullFlag
;
223 case GL_CULL_FACE_MODE
:
224 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.CullFaceMode
);
226 case GL_CURRENT_COLOR
:
227 FLUSH_CURRENT(ctx
, 0);
228 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
229 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
230 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
231 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
233 case GL_CURRENT_INDEX
:
234 FLUSH_CURRENT(ctx
, 0);
235 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
237 case GL_CURRENT_NORMAL
:
238 FLUSH_CURRENT(ctx
, 0);
239 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
240 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
241 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
243 case GL_CURRENT_RASTER_COLOR
:
244 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[0]);
245 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[1]);
246 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[2]);
247 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[3]);
249 case GL_CURRENT_RASTER_DISTANCE
:
250 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterDistance
);
252 case GL_CURRENT_RASTER_INDEX
:
253 params
[0] = FLOAT_TO_BOOLEAN(1.0);
255 case GL_CURRENT_RASTER_POSITION
:
256 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[0]);
257 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[1]);
258 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[2]);
259 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[3]);
261 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
262 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[0]);
263 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[1]);
264 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[2]);
265 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[3]);
267 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
269 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
270 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
271 _mesa_error(ctx
, GL_INVALID_OPERATION
,
272 "glGet(raster tex coords, unit %u)", unit
);
275 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][0]);
276 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][1]);
277 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][2]);
278 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][3]);
281 case GL_CURRENT_RASTER_POSITION_VALID
:
282 params
[0] = ctx
->Current
.RasterPosValid
;
284 case GL_CURRENT_TEXTURE_COORDS
:
286 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
287 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
288 _mesa_error(ctx
, GL_INVALID_OPERATION
,
289 "glGet(current tex coords, unit %u)", unit
);
292 FLUSH_CURRENT(ctx
, 0);
293 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
294 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
295 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
296 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
300 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.DepthBias
);
303 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.depthBits
);
305 case GL_DEPTH_CLEAR_VALUE
:
306 params
[0] = FLOAT_TO_BOOLEAN(((GLfloat
) ctx
->Depth
.Clear
));
309 params
[0] = ENUM_TO_BOOLEAN(ctx
->Depth
.Func
);
312 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Viewport
.Near
);
313 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Viewport
.Far
);
316 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.DepthScale
);
319 params
[0] = ctx
->Depth
.Test
;
321 case GL_DEPTH_WRITEMASK
:
322 params
[0] = ctx
->Depth
.Mask
;
325 params
[0] = ctx
->Color
.DitherFlag
;
327 case GL_DOUBLEBUFFER
:
328 params
[0] = ctx
->DrawBuffer
->Visual
.doubleBufferMode
;
331 params
[0] = ENUM_TO_BOOLEAN(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
334 FLUSH_CURRENT(ctx
, 0);
335 params
[0] = (ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0);
337 case GL_FEEDBACK_BUFFER_SIZE
:
338 params
[0] = INT_TO_BOOLEAN(ctx
->Feedback
.BufferSize
);
340 case GL_FEEDBACK_BUFFER_TYPE
:
341 params
[0] = ENUM_TO_BOOLEAN(ctx
->Feedback
.Type
);
344 params
[0] = ctx
->Fog
.Enabled
;
347 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[0]);
348 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[1]);
349 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[2]);
350 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[3]);
353 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Density
);
356 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.End
);
359 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.Fog
);
362 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Index
);
365 params
[0] = ENUM_TO_BOOLEAN(ctx
->Fog
.Mode
);
368 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Start
);
371 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.FrontFace
);
374 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.GreenBias
);
377 if (ctx
->NewState
& _NEW_BUFFERS
)
378 _mesa_update_state(ctx
);
379 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.greenBits
);
382 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.GreenScale
);
385 if (ctx
->NewState
& _NEW_BUFFERS
)
386 _mesa_update_state(ctx
);
387 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.indexBits
);
389 case GL_INDEX_CLEAR_VALUE
:
390 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ClearIndex
);
393 params
[0] = GL_FALSE
;
395 case GL_INDEX_OFFSET
:
396 params
[0] = INT_TO_BOOLEAN(ctx
->Pixel
.IndexOffset
);
399 params
[0] = INT_TO_BOOLEAN(ctx
->Pixel
.IndexShift
);
401 case GL_INDEX_WRITEMASK
:
402 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.IndexMask
);
405 params
[0] = ctx
->Light
.Light
[0].Enabled
;
408 params
[0] = ctx
->Light
.Light
[1].Enabled
;
411 params
[0] = ctx
->Light
.Light
[2].Enabled
;
414 params
[0] = ctx
->Light
.Light
[3].Enabled
;
417 params
[0] = ctx
->Light
.Light
[4].Enabled
;
420 params
[0] = ctx
->Light
.Light
[5].Enabled
;
423 params
[0] = ctx
->Light
.Light
[6].Enabled
;
426 params
[0] = ctx
->Light
.Light
[7].Enabled
;
429 params
[0] = ctx
->Light
.Enabled
;
431 case GL_LIGHT_MODEL_AMBIENT
:
432 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[0]);
433 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[1]);
434 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[2]);
435 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[3]);
437 case GL_LIGHT_MODEL_COLOR_CONTROL
:
438 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.Model
.ColorControl
);
440 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
441 params
[0] = ctx
->Light
.Model
.LocalViewer
;
443 case GL_LIGHT_MODEL_TWO_SIDE
:
444 params
[0] = ctx
->Light
.Model
.TwoSide
;
447 params
[0] = ctx
->Line
.SmoothFlag
;
449 case GL_LINE_SMOOTH_HINT
:
450 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.LineSmooth
);
452 case GL_LINE_STIPPLE
:
453 params
[0] = ctx
->Line
.StippleFlag
;
455 case GL_LINE_STIPPLE_PATTERN
:
456 params
[0] = INT_TO_BOOLEAN(ctx
->Line
.StipplePattern
);
458 case GL_LINE_STIPPLE_REPEAT
:
459 params
[0] = INT_TO_BOOLEAN(ctx
->Line
.StippleFactor
);
462 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Line
.Width
);
464 case GL_LINE_WIDTH_GRANULARITY
:
465 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.LineWidthGranularity
);
467 case GL_LINE_WIDTH_RANGE
:
468 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinLineWidthAA
);
469 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxLineWidthAA
);
471 case GL_ALIASED_LINE_WIDTH_RANGE
:
472 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinLineWidth
);
473 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxLineWidth
);
476 params
[0] = INT_TO_BOOLEAN(ctx
->List
.ListBase
);
479 params
[0] = INT_TO_BOOLEAN((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
484 if (!ctx
->CompileFlag
)
486 else if (ctx
->ExecuteFlag
)
487 mode
= GL_COMPILE_AND_EXECUTE
;
490 params
[0] = ENUM_TO_BOOLEAN(mode
);
493 case GL_INDEX_LOGIC_OP
:
494 params
[0] = ctx
->Color
.IndexLogicOpEnabled
;
496 case GL_COLOR_LOGIC_OP
:
497 params
[0] = ctx
->Color
.ColorLogicOpEnabled
;
499 case GL_LOGIC_OP_MODE
:
500 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.LogicOp
);
502 case GL_MAP1_COLOR_4
:
503 params
[0] = ctx
->Eval
.Map1Color4
;
505 case GL_MAP1_GRID_DOMAIN
:
506 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid1u1
);
507 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid1u2
);
509 case GL_MAP1_GRID_SEGMENTS
:
510 params
[0] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid1un
);
513 params
[0] = ctx
->Eval
.Map1Index
;
516 params
[0] = ctx
->Eval
.Map1Normal
;
518 case GL_MAP1_TEXTURE_COORD_1
:
519 params
[0] = ctx
->Eval
.Map1TextureCoord1
;
521 case GL_MAP1_TEXTURE_COORD_2
:
522 params
[0] = ctx
->Eval
.Map1TextureCoord2
;
524 case GL_MAP1_TEXTURE_COORD_3
:
525 params
[0] = ctx
->Eval
.Map1TextureCoord3
;
527 case GL_MAP1_TEXTURE_COORD_4
:
528 params
[0] = ctx
->Eval
.Map1TextureCoord4
;
530 case GL_MAP1_VERTEX_3
:
531 params
[0] = ctx
->Eval
.Map1Vertex3
;
533 case GL_MAP1_VERTEX_4
:
534 params
[0] = ctx
->Eval
.Map1Vertex4
;
536 case GL_MAP2_COLOR_4
:
537 params
[0] = ctx
->Eval
.Map2Color4
;
539 case GL_MAP2_GRID_DOMAIN
:
540 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2u1
);
541 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2u2
);
542 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2v1
);
543 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2v2
);
545 case GL_MAP2_GRID_SEGMENTS
:
546 params
[0] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid2un
);
547 params
[1] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid2vn
);
550 params
[0] = ctx
->Eval
.Map2Index
;
553 params
[0] = ctx
->Eval
.Map2Normal
;
555 case GL_MAP2_TEXTURE_COORD_1
:
556 params
[0] = ctx
->Eval
.Map2TextureCoord1
;
558 case GL_MAP2_TEXTURE_COORD_2
:
559 params
[0] = ctx
->Eval
.Map2TextureCoord2
;
561 case GL_MAP2_TEXTURE_COORD_3
:
562 params
[0] = ctx
->Eval
.Map2TextureCoord3
;
564 case GL_MAP2_TEXTURE_COORD_4
:
565 params
[0] = ctx
->Eval
.Map2TextureCoord4
;
567 case GL_MAP2_VERTEX_3
:
568 params
[0] = ctx
->Eval
.Map2Vertex3
;
570 case GL_MAP2_VERTEX_4
:
571 params
[0] = ctx
->Eval
.Map2Vertex4
;
574 params
[0] = ctx
->Pixel
.MapColorFlag
;
577 params
[0] = ctx
->Pixel
.MapStencilFlag
;
580 params
[0] = ENUM_TO_BOOLEAN(ctx
->Transform
.MatrixMode
);
582 case GL_MAX_ATTRIB_STACK_DEPTH
:
583 params
[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH
);
585 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
586 params
[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
588 case GL_MAX_CLIP_PLANES
:
589 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxClipPlanes
);
591 case GL_MAX_ELEMENTS_VERTICES
:
592 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayLockSize
);
594 case GL_MAX_ELEMENTS_INDICES
:
595 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayLockSize
);
597 case GL_MAX_EVAL_ORDER
:
598 params
[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER
);
601 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxLights
);
603 case GL_MAX_LIST_NESTING
:
604 params
[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING
);
606 case GL_MAX_MODELVIEW_STACK_DEPTH
:
607 params
[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH
);
609 case GL_MAX_NAME_STACK_DEPTH
:
610 params
[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH
);
612 case GL_MAX_PIXEL_MAP_TABLE
:
613 params
[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE
);
615 case GL_MAX_PROJECTION_STACK_DEPTH
:
616 params
[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH
);
618 case GL_MAX_TEXTURE_SIZE
:
619 params
[0] = INT_TO_BOOLEAN(1 << (ctx
->Const
.MaxTextureLevels
- 1));
621 case GL_MAX_3D_TEXTURE_SIZE
:
622 params
[0] = INT_TO_BOOLEAN(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
624 case GL_MAX_TEXTURE_STACK_DEPTH
:
625 params
[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH
);
627 case GL_MAX_VIEWPORT_DIMS
:
628 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxViewportWidth
);
629 params
[1] = INT_TO_BOOLEAN(ctx
->Const
.MaxViewportHeight
);
631 case GL_MODELVIEW_MATRIX
:
633 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
634 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
635 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
636 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
637 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
638 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
639 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
640 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
641 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
642 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
643 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
644 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
645 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
646 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
647 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
648 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
649 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
652 case GL_MODELVIEW_STACK_DEPTH
:
653 params
[0] = INT_TO_BOOLEAN(ctx
->ModelviewMatrixStack
.Depth
+ 1);
655 case GL_NAME_STACK_DEPTH
:
656 params
[0] = INT_TO_BOOLEAN(ctx
->Select
.NameStackDepth
);
659 params
[0] = ctx
->Transform
.Normalize
;
661 case GL_PACK_ALIGNMENT
:
662 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.Alignment
);
664 case GL_PACK_LSB_FIRST
:
665 params
[0] = ctx
->Pack
.LsbFirst
;
667 case GL_PACK_ROW_LENGTH
:
668 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.RowLength
);
670 case GL_PACK_SKIP_PIXELS
:
671 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipPixels
);
673 case GL_PACK_SKIP_ROWS
:
674 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipRows
);
676 case GL_PACK_SWAP_BYTES
:
677 params
[0] = ctx
->Pack
.SwapBytes
;
679 case GL_PACK_SKIP_IMAGES_EXT
:
680 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipImages
);
682 case GL_PACK_IMAGE_HEIGHT_EXT
:
683 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.ImageHeight
);
685 case GL_PACK_INVERT_MESA
:
686 params
[0] = ctx
->Pack
.Invert
;
688 case GL_PERSPECTIVE_CORRECTION_HINT
:
689 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PerspectiveCorrection
);
691 case GL_PIXEL_MAP_A_TO_A_SIZE
:
692 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.AtoA
.Size
);
694 case GL_PIXEL_MAP_B_TO_B_SIZE
:
695 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.BtoB
.Size
);
697 case GL_PIXEL_MAP_G_TO_G_SIZE
:
698 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.GtoG
.Size
);
700 case GL_PIXEL_MAP_I_TO_A_SIZE
:
701 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoA
.Size
);
703 case GL_PIXEL_MAP_I_TO_B_SIZE
:
704 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoB
.Size
);
706 case GL_PIXEL_MAP_I_TO_G_SIZE
:
707 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoG
.Size
);
709 case GL_PIXEL_MAP_I_TO_I_SIZE
:
710 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoI
.Size
);
712 case GL_PIXEL_MAP_I_TO_R_SIZE
:
713 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoR
.Size
);
715 case GL_PIXEL_MAP_R_TO_R_SIZE
:
716 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.RtoR
.Size
);
718 case GL_PIXEL_MAP_S_TO_S_SIZE
:
719 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.StoS
.Size
);
722 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Size
);
724 case GL_POINT_SIZE_GRANULARITY
:
725 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.PointSizeGranularity
);
727 case GL_POINT_SIZE_RANGE
:
728 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinPointSizeAA
);
729 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxPointSizeAA
);
731 case GL_ALIASED_POINT_SIZE_RANGE
:
732 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinPointSize
);
733 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxPointSize
);
735 case GL_POINT_SMOOTH
:
736 params
[0] = ctx
->Point
.SmoothFlag
;
738 case GL_POINT_SMOOTH_HINT
:
739 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PointSmooth
);
741 case GL_POINT_SIZE_MIN_EXT
:
742 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.MinSize
);
744 case GL_POINT_SIZE_MAX_EXT
:
745 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.MaxSize
);
747 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
748 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Threshold
);
750 case GL_DISTANCE_ATTENUATION_EXT
:
751 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[0]);
752 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[1]);
753 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[2]);
755 case GL_POLYGON_MODE
:
756 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.FrontMode
);
757 params
[1] = ENUM_TO_BOOLEAN(ctx
->Polygon
.BackMode
);
759 case GL_POLYGON_OFFSET_BIAS_EXT
:
760 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetUnits
);
762 case GL_POLYGON_OFFSET_FACTOR
:
763 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetFactor
);
765 case GL_POLYGON_OFFSET_UNITS
:
766 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetUnits
);
768 case GL_POLYGON_OFFSET_POINT
:
769 params
[0] = ctx
->Polygon
.OffsetPoint
;
771 case GL_POLYGON_OFFSET_LINE
:
772 params
[0] = ctx
->Polygon
.OffsetLine
;
774 case GL_POLYGON_OFFSET_FILL
:
775 params
[0] = ctx
->Polygon
.OffsetFill
;
777 case GL_POLYGON_SMOOTH
:
778 params
[0] = ctx
->Polygon
.SmoothFlag
;
780 case GL_POLYGON_SMOOTH_HINT
:
781 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PolygonSmooth
);
783 case GL_POLYGON_STIPPLE
:
784 params
[0] = ctx
->Polygon
.StippleFlag
;
786 case GL_PROJECTION_MATRIX
:
788 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
789 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
790 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
791 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
792 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
793 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
794 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
795 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
796 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
797 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
798 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
799 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
800 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
801 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
802 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
803 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
804 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
807 case GL_PROJECTION_STACK_DEPTH
:
808 params
[0] = INT_TO_BOOLEAN(ctx
->ProjectionMatrixStack
.Depth
+ 1);
811 params
[0] = ENUM_TO_BOOLEAN(ctx
->ReadBuffer
->ColorReadBuffer
);
814 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.RedBias
);
817 if (ctx
->NewState
& _NEW_BUFFERS
)
818 _mesa_update_state(ctx
);
819 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.redBits
);
822 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.RedScale
);
825 params
[0] = ENUM_TO_BOOLEAN(ctx
->RenderMode
);
827 case GL_RESCALE_NORMAL
:
828 params
[0] = ctx
->Transform
.RescaleNormals
;
834 params
[0] = INT_TO_BOOLEAN(ctx
->Scissor
.X
);
835 params
[1] = INT_TO_BOOLEAN(ctx
->Scissor
.Y
);
836 params
[2] = INT_TO_BOOLEAN(ctx
->Scissor
.Width
);
837 params
[3] = INT_TO_BOOLEAN(ctx
->Scissor
.Height
);
839 case GL_SCISSOR_TEST
:
840 params
[0] = ctx
->Scissor
.Enabled
;
842 case GL_SELECTION_BUFFER_SIZE
:
843 params
[0] = INT_TO_BOOLEAN(ctx
->Select
.BufferSize
);
846 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ShadeModel
);
848 case GL_SHARED_TEXTURE_PALETTE_EXT
:
849 params
[0] = ctx
->Texture
.SharedPalette
;
851 case GL_STENCIL_BITS
:
852 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.stencilBits
);
854 case GL_STENCIL_CLEAR_VALUE
:
855 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Clear
);
857 case GL_STENCIL_FAIL
:
858 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
860 case GL_STENCIL_FUNC
:
861 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
863 case GL_STENCIL_PASS_DEPTH_FAIL
:
864 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
866 case GL_STENCIL_PASS_DEPTH_PASS
:
867 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
870 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
872 case GL_STENCIL_TEST
:
873 params
[0] = ctx
->Stencil
.Enabled
;
875 case GL_STENCIL_VALUE_MASK
:
876 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
878 case GL_STENCIL_WRITEMASK
:
879 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
882 params
[0] = ctx
->DrawBuffer
->Visual
.stereoMode
;
884 case GL_SUBPIXEL_BITS
:
885 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.SubPixelBits
);
888 params
[0] = _mesa_IsEnabled(GL_TEXTURE_1D
);
891 params
[0] = _mesa_IsEnabled(GL_TEXTURE_2D
);
894 params
[0] = _mesa_IsEnabled(GL_TEXTURE_3D
);
896 case GL_TEXTURE_1D_ARRAY_EXT
:
897 CHECK_EXT1(MESA_texture_array
);
898 params
[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
);
900 case GL_TEXTURE_2D_ARRAY_EXT
:
901 CHECK_EXT1(MESA_texture_array
);
902 params
[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
);
904 case GL_TEXTURE_BINDING_1D
:
905 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
907 case GL_TEXTURE_BINDING_2D
:
908 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
910 case GL_TEXTURE_BINDING_3D
:
911 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
913 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
914 CHECK_EXT1(MESA_texture_array
);
915 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
917 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
918 CHECK_EXT1(MESA_texture_array
);
919 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
921 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
922 CHECK_EXT1(MESA_texture_array
);
923 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayTextureLayers
);
925 case GL_TEXTURE_GEN_S
:
926 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0);
928 case GL_TEXTURE_GEN_T
:
929 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0);
931 case GL_TEXTURE_GEN_R
:
932 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0);
934 case GL_TEXTURE_GEN_Q
:
935 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0);
937 case GL_TEXTURE_MATRIX
:
939 const GLfloat
*matrix
;
940 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
941 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
942 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
946 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
947 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
948 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
949 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
950 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
951 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
952 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
953 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
954 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
955 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
956 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
957 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
958 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
959 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
960 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
961 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
962 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
965 case GL_TEXTURE_STACK_DEPTH
:
967 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
968 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
969 _mesa_error(ctx
, GL_INVALID_OPERATION
,
970 "glGet(texture stack depth, unit %u)", unit
);
973 params
[0] = INT_TO_BOOLEAN(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
976 case GL_UNPACK_ALIGNMENT
:
977 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.Alignment
);
979 case GL_UNPACK_LSB_FIRST
:
980 params
[0] = ctx
->Unpack
.LsbFirst
;
982 case GL_UNPACK_ROW_LENGTH
:
983 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.RowLength
);
985 case GL_UNPACK_SKIP_PIXELS
:
986 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipPixels
);
988 case GL_UNPACK_SKIP_ROWS
:
989 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipRows
);
991 case GL_UNPACK_SWAP_BYTES
:
992 params
[0] = ctx
->Unpack
.SwapBytes
;
994 case GL_UNPACK_SKIP_IMAGES_EXT
:
995 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipImages
);
997 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
998 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.ImageHeight
);
1000 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
1001 params
[0] = ctx
->Unpack
.ClientStorage
;
1004 params
[0] = INT_TO_BOOLEAN(ctx
->Viewport
.X
);
1005 params
[1] = INT_TO_BOOLEAN(ctx
->Viewport
.Y
);
1006 params
[2] = INT_TO_BOOLEAN(ctx
->Viewport
.Width
);
1007 params
[3] = INT_TO_BOOLEAN(ctx
->Viewport
.Height
);
1010 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.ZoomX
);
1013 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.ZoomY
);
1015 case GL_VERTEX_ARRAY
:
1016 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Enabled
;
1018 case GL_VERTEX_ARRAY_SIZE
:
1019 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Size
);
1021 case GL_VERTEX_ARRAY_TYPE
:
1022 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Type
);
1024 case GL_VERTEX_ARRAY_STRIDE
:
1025 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
1027 case GL_VERTEX_ARRAY_COUNT_EXT
:
1028 params
[0] = INT_TO_BOOLEAN(0);
1030 case GL_NORMAL_ARRAY
:
1031 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
1033 case GL_NORMAL_ARRAY_TYPE
:
1034 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Type
);
1036 case GL_NORMAL_ARRAY_STRIDE
:
1037 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Stride
);
1039 case GL_NORMAL_ARRAY_COUNT_EXT
:
1040 params
[0] = INT_TO_BOOLEAN(0);
1042 case GL_COLOR_ARRAY
:
1043 params
[0] = ctx
->Array
.ArrayObj
->Color
.Enabled
;
1045 case GL_COLOR_ARRAY_SIZE
:
1046 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Size
);
1048 case GL_COLOR_ARRAY_TYPE
:
1049 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Type
);
1051 case GL_COLOR_ARRAY_STRIDE
:
1052 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Stride
);
1054 case GL_COLOR_ARRAY_COUNT_EXT
:
1055 params
[0] = INT_TO_BOOLEAN(0);
1057 case GL_INDEX_ARRAY
:
1058 params
[0] = ctx
->Array
.ArrayObj
->Index
.Enabled
;
1060 case GL_INDEX_ARRAY_TYPE
:
1061 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.Type
);
1063 case GL_INDEX_ARRAY_STRIDE
:
1064 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.Stride
);
1066 case GL_INDEX_ARRAY_COUNT_EXT
:
1067 params
[0] = INT_TO_BOOLEAN(0);
1069 case GL_TEXTURE_COORD_ARRAY
:
1070 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
;
1072 case GL_TEXTURE_COORD_ARRAY_SIZE
:
1073 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
1075 case GL_TEXTURE_COORD_ARRAY_TYPE
:
1076 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
1078 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
1079 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
1081 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
1082 params
[0] = INT_TO_BOOLEAN(0);
1084 case GL_EDGE_FLAG_ARRAY
:
1085 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
;
1087 case GL_EDGE_FLAG_ARRAY_STRIDE
:
1088 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
1090 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1091 params
[0] = INT_TO_BOOLEAN(0);
1093 case GL_MAX_TEXTURE_UNITS_ARB
:
1094 CHECK_EXT1(ARB_multitexture
);
1095 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureUnits
);
1097 case GL_ACTIVE_TEXTURE_ARB
:
1098 CHECK_EXT1(ARB_multitexture
);
1099 params
[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1101 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1102 CHECK_EXT1(ARB_multitexture
);
1103 params
[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1105 case GL_TEXTURE_CUBE_MAP_ARB
:
1106 CHECK_EXT1(ARB_texture_cube_map
);
1107 params
[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1109 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1110 CHECK_EXT1(ARB_texture_cube_map
);
1111 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
1113 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1114 CHECK_EXT1(ARB_texture_cube_map
);
1115 params
[0] = INT_TO_BOOLEAN((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
1117 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1118 params
[0] = INT_TO_BOOLEAN(ctx
->Hint
.TextureCompression
);
1120 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1121 params
[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
1123 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1126 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
1128 for (i
= 0; i
< n
; i
++)
1129 params
[i
] = ENUM_TO_BOOLEAN(formats
[i
]);
1132 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1133 CHECK_EXT1(EXT_compiled_vertex_array
);
1134 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.LockFirst
);
1136 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1137 CHECK_EXT1(EXT_compiled_vertex_array
);
1138 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.LockCount
);
1140 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1142 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
1143 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1144 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1145 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1146 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1147 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1148 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1149 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1150 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1151 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1152 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1153 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1154 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1155 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1156 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1157 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1158 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1161 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1163 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
1164 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1165 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1166 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1167 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1168 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1169 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1170 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1171 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1172 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1173 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1174 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1175 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1176 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1177 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1178 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1179 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1182 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1184 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
1185 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1186 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1187 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1188 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1189 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1190 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1191 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1192 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1193 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1194 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1195 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1196 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1197 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1198 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1199 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1200 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1203 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1205 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
1206 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1207 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1208 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1209 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1210 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1211 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1212 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1213 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1214 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1215 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1216 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1217 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1218 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1219 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1220 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1221 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1224 case GL_COLOR_MATRIX_SGI
:
1226 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
1227 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1228 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
1229 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
1230 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
1231 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
1232 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1233 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
1234 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
1235 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
1236 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
1237 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1238 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
1239 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
1240 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
1241 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
1242 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1245 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1246 params
[0] = INT_TO_BOOLEAN(ctx
->ColorMatrixStack
.Depth
+ 1);
1248 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1249 params
[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH
);
1251 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1252 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[0]);
1254 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1255 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[1]);
1257 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1258 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[2]);
1260 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1261 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[3]);
1263 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1264 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[0]);
1266 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1267 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[1]);
1269 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1270 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[2]);
1272 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1273 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[3]);
1275 case GL_CONVOLUTION_1D_EXT
:
1276 CHECK_EXT1(EXT_convolution
);
1277 params
[0] = ctx
->Pixel
.Convolution1DEnabled
;
1279 case GL_CONVOLUTION_2D_EXT
:
1280 CHECK_EXT1(EXT_convolution
);
1281 params
[0] = ctx
->Pixel
.Convolution2DEnabled
;
1283 case GL_SEPARABLE_2D_EXT
:
1284 CHECK_EXT1(EXT_convolution
);
1285 params
[0] = ctx
->Pixel
.Separable2DEnabled
;
1287 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1288 CHECK_EXT1(EXT_convolution
);
1289 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[0]);
1291 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1292 CHECK_EXT1(EXT_convolution
);
1293 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[1]);
1295 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1296 CHECK_EXT1(EXT_convolution
);
1297 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[2]);
1299 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1300 CHECK_EXT1(EXT_convolution
);
1301 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[3]);
1303 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1304 CHECK_EXT1(EXT_convolution
);
1305 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[0]);
1307 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1308 CHECK_EXT1(EXT_convolution
);
1309 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[1]);
1311 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1312 CHECK_EXT1(EXT_convolution
);
1313 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[2]);
1315 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1316 CHECK_EXT1(EXT_convolution
);
1317 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[3]);
1320 CHECK_EXT1(EXT_histogram
);
1321 params
[0] = ctx
->Pixel
.HistogramEnabled
;
1324 CHECK_EXT1(EXT_histogram
);
1325 params
[0] = ctx
->Pixel
.MinMaxEnabled
;
1327 case GL_COLOR_TABLE_SGI
:
1328 CHECK_EXT1(SGI_color_table
);
1329 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
];
1331 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1332 CHECK_EXT1(SGI_color_table
);
1333 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
];
1335 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1336 CHECK_EXT1(SGI_color_table
);
1337 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
];
1339 case GL_TEXTURE_COLOR_TABLE_SGI
:
1340 CHECK_EXT1(SGI_texture_color_table
);
1341 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
;
1343 case GL_COLOR_SUM_EXT
:
1344 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
1345 params
[0] = ctx
->Fog
.ColorSumEnabled
;
1347 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1348 CHECK_EXT1(EXT_secondary_color
);
1349 FLUSH_CURRENT(ctx
, 0);
1350 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1351 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1352 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1353 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
1355 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1356 CHECK_EXT1(EXT_secondary_color
);
1357 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
;
1359 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1360 CHECK_EXT1(EXT_secondary_color
);
1361 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
1363 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1364 CHECK_EXT1(EXT_secondary_color
);
1365 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
1367 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1368 CHECK_EXT1(EXT_secondary_color
);
1369 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
1371 case GL_CURRENT_FOG_COORDINATE_EXT
:
1372 CHECK_EXT1(EXT_fog_coord
);
1373 FLUSH_CURRENT(ctx
, 0);
1374 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1376 case GL_FOG_COORDINATE_ARRAY_EXT
:
1377 CHECK_EXT1(EXT_fog_coord
);
1378 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.Enabled
;
1380 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1381 CHECK_EXT1(EXT_fog_coord
);
1382 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
1384 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1385 CHECK_EXT1(EXT_fog_coord
);
1386 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
1388 case GL_FOG_COORDINATE_SOURCE_EXT
:
1389 CHECK_EXT1(EXT_fog_coord
);
1390 params
[0] = ENUM_TO_BOOLEAN(ctx
->Fog
.FogCoordinateSource
);
1392 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1393 CHECK_EXT1(EXT_texture_lod_bias
);
1394 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxTextureLodBias
);
1396 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1397 CHECK_EXT1(EXT_texture_filter_anisotropic
);
1398 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxTextureMaxAnisotropy
);
1400 case GL_MULTISAMPLE_ARB
:
1401 params
[0] = ctx
->Multisample
.Enabled
;
1403 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1404 params
[0] = ctx
->Multisample
.SampleAlphaToCoverage
;
1406 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1407 params
[0] = ctx
->Multisample
.SampleAlphaToOne
;
1409 case GL_SAMPLE_COVERAGE_ARB
:
1410 params
[0] = ctx
->Multisample
.SampleCoverage
;
1412 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1413 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Multisample
.SampleCoverageValue
);
1415 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1416 params
[0] = ctx
->Multisample
.SampleCoverageInvert
;
1418 case GL_SAMPLE_BUFFERS_ARB
:
1419 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
1421 case GL_SAMPLES_ARB
:
1422 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.samples
);
1424 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1425 CHECK_EXT1(IBM_rasterpos_clip
);
1426 params
[0] = ctx
->Transform
.RasterPositionUnclipped
;
1428 case GL_POINT_SPRITE_NV
:
1429 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
1430 params
[0] = ctx
->Point
.PointSprite
;
1432 case GL_POINT_SPRITE_R_MODE_NV
:
1433 CHECK_EXT1(NV_point_sprite
);
1434 params
[0] = ENUM_TO_BOOLEAN(ctx
->Point
.SpriteRMode
);
1436 case GL_POINT_SPRITE_COORD_ORIGIN
:
1437 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
1438 params
[0] = ENUM_TO_BOOLEAN(ctx
->Point
.SpriteOrigin
);
1440 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1441 CHECK_EXT1(SGIS_generate_mipmap
);
1442 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.GenerateMipmap
);
1444 case GL_VERTEX_PROGRAM_BINDING_NV
:
1445 CHECK_EXT1(NV_vertex_program
);
1446 params
[0] = INT_TO_BOOLEAN((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
1448 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1449 CHECK_EXT1(NV_vertex_program
);
1450 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
;
1452 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1453 CHECK_EXT1(NV_vertex_program
);
1454 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
;
1456 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1457 CHECK_EXT1(NV_vertex_program
);
1458 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
;
1460 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1461 CHECK_EXT1(NV_vertex_program
);
1462 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
;
1464 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1465 CHECK_EXT1(NV_vertex_program
);
1466 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
;
1468 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1469 CHECK_EXT1(NV_vertex_program
);
1470 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
;
1472 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1473 CHECK_EXT1(NV_vertex_program
);
1474 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
;
1476 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1477 CHECK_EXT1(NV_vertex_program
);
1478 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
;
1480 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1481 CHECK_EXT1(NV_vertex_program
);
1482 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
;
1484 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1485 CHECK_EXT1(NV_vertex_program
);
1486 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
;
1488 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1489 CHECK_EXT1(NV_vertex_program
);
1490 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
;
1492 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1493 CHECK_EXT1(NV_vertex_program
);
1494 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
;
1496 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1497 CHECK_EXT1(NV_vertex_program
);
1498 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
;
1500 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1501 CHECK_EXT1(NV_vertex_program
);
1502 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
;
1504 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1505 CHECK_EXT1(NV_vertex_program
);
1506 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
;
1508 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1509 CHECK_EXT1(NV_vertex_program
);
1510 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
;
1512 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1513 CHECK_EXT1(NV_vertex_program
);
1514 params
[0] = ctx
->Eval
.Map1Attrib
[0];
1516 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1517 CHECK_EXT1(NV_vertex_program
);
1518 params
[0] = ctx
->Eval
.Map1Attrib
[1];
1520 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1521 CHECK_EXT1(NV_vertex_program
);
1522 params
[0] = ctx
->Eval
.Map1Attrib
[2];
1524 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1525 CHECK_EXT1(NV_vertex_program
);
1526 params
[0] = ctx
->Eval
.Map1Attrib
[3];
1528 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1529 CHECK_EXT1(NV_vertex_program
);
1530 params
[0] = ctx
->Eval
.Map1Attrib
[4];
1532 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1533 CHECK_EXT1(NV_vertex_program
);
1534 params
[0] = ctx
->Eval
.Map1Attrib
[5];
1536 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1537 CHECK_EXT1(NV_vertex_program
);
1538 params
[0] = ctx
->Eval
.Map1Attrib
[6];
1540 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1541 CHECK_EXT1(NV_vertex_program
);
1542 params
[0] = ctx
->Eval
.Map1Attrib
[7];
1544 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1545 CHECK_EXT1(NV_vertex_program
);
1546 params
[0] = ctx
->Eval
.Map1Attrib
[8];
1548 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1549 CHECK_EXT1(NV_vertex_program
);
1550 params
[0] = ctx
->Eval
.Map1Attrib
[9];
1552 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1553 CHECK_EXT1(NV_vertex_program
);
1554 params
[0] = ctx
->Eval
.Map1Attrib
[10];
1556 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1557 CHECK_EXT1(NV_vertex_program
);
1558 params
[0] = ctx
->Eval
.Map1Attrib
[11];
1560 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1561 CHECK_EXT1(NV_vertex_program
);
1562 params
[0] = ctx
->Eval
.Map1Attrib
[12];
1564 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1565 CHECK_EXT1(NV_vertex_program
);
1566 params
[0] = ctx
->Eval
.Map1Attrib
[13];
1568 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1569 CHECK_EXT1(NV_vertex_program
);
1570 params
[0] = ctx
->Eval
.Map1Attrib
[14];
1572 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1573 CHECK_EXT1(NV_vertex_program
);
1574 params
[0] = ctx
->Eval
.Map1Attrib
[15];
1576 case GL_FRAGMENT_PROGRAM_NV
:
1577 CHECK_EXT1(NV_fragment_program
);
1578 params
[0] = ctx
->FragmentProgram
.Enabled
;
1580 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
1581 CHECK_EXT1(NV_fragment_program
);
1582 params
[0] = INT_TO_BOOLEAN(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
1584 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
1585 CHECK_EXT1(NV_fragment_program
);
1586 params
[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
1588 case GL_TEXTURE_RECTANGLE_NV
:
1589 CHECK_EXT1(NV_texture_rectangle
);
1590 params
[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1592 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1593 CHECK_EXT1(NV_texture_rectangle
);
1594 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
1596 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1597 CHECK_EXT1(NV_texture_rectangle
);
1598 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureRectSize
);
1600 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
1601 CHECK_EXT1(EXT_stencil_two_side
);
1602 params
[0] = ctx
->Stencil
.TestTwoSide
;
1604 case GL_ACTIVE_STENCIL_FACE_EXT
:
1605 CHECK_EXT1(EXT_stencil_two_side
);
1606 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
1608 case GL_MAX_SHININESS_NV
:
1609 CHECK_EXT1(NV_light_max_exponent
);
1610 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxShininess
);
1612 case GL_MAX_SPOT_EXPONENT_NV
:
1613 CHECK_EXT1(NV_light_max_exponent
);
1614 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxSpotExponent
);
1616 case GL_ARRAY_BUFFER_BINDING_ARB
:
1617 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayBufferObj
->Name
);
1619 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
1620 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
1622 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
1623 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
1625 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1626 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
1628 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
1629 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
1631 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
1632 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
1634 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
1635 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
1637 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1638 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
1640 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
1641 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
1643 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
1644 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ElementArrayBufferObj
->Name
);
1646 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
1647 CHECK_EXT1(EXT_pixel_buffer_object
);
1648 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.BufferObj
->Name
);
1650 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
1651 CHECK_EXT1(EXT_pixel_buffer_object
);
1652 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.BufferObj
->Name
);
1654 case GL_VERTEX_PROGRAM_ARB
:
1655 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1656 params
[0] = ctx
->VertexProgram
.Enabled
;
1658 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
1659 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1660 params
[0] = ctx
->VertexProgram
.PointSizeEnabled
;
1662 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
1663 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1664 params
[0] = ctx
->VertexProgram
.TwoSideEnabled
;
1666 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
1667 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1668 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxProgramMatrixStackDepth
);
1670 case GL_MAX_PROGRAM_MATRICES_ARB
:
1671 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1672 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxProgramMatrices
);
1674 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
1675 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1676 params
[0] = ctx
->CurrentStack
->Depth
+ 1;
1678 case GL_CURRENT_MATRIX_ARB
:
1679 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
1681 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
1682 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1683 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
1684 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
1685 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
1686 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
1687 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1688 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
1689 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
1690 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
1691 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
1692 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1693 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
1694 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
1695 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
1696 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
1697 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1700 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
1701 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
1703 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
1704 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1705 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1706 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1707 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1708 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1709 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1710 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1711 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1712 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1713 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1714 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1715 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1716 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1717 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1718 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1719 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1722 case GL_MAX_VERTEX_ATTRIBS_ARB
:
1723 CHECK_EXT1(ARB_vertex_program
);
1724 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.VertexProgram
.MaxAttribs
);
1726 case GL_PROGRAM_ERROR_POSITION_ARB
:
1727 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
1728 params
[0] = INT_TO_BOOLEAN(ctx
->Program
.ErrorPos
);
1730 case GL_FRAGMENT_PROGRAM_ARB
:
1731 CHECK_EXT1(ARB_fragment_program
);
1732 params
[0] = ctx
->FragmentProgram
.Enabled
;
1734 case GL_MAX_TEXTURE_COORDS_ARB
:
1735 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
1736 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureCoordUnits
);
1738 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
1739 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
1740 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureImageUnits
);
1742 case GL_DEPTH_BOUNDS_TEST_EXT
:
1743 CHECK_EXT1(EXT_depth_bounds_test
);
1744 params
[0] = ctx
->Depth
.BoundsTest
;
1746 case GL_DEPTH_BOUNDS_EXT
:
1747 CHECK_EXT1(EXT_depth_bounds_test
);
1748 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Depth
.BoundsMin
);
1749 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Depth
.BoundsMax
);
1751 case GL_DEPTH_CLAMP
:
1752 CHECK_EXT1(ARB_depth_clamp
);
1753 params
[0] = ctx
->Transform
.DepthClamp
;
1755 case GL_MAX_DRAW_BUFFERS_ARB
:
1756 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxDrawBuffers
);
1758 case GL_DRAW_BUFFER0_ARB
:
1759 params
[0] = ENUM_TO_BOOLEAN(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
1761 case GL_DRAW_BUFFER1_ARB
:
1764 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1765 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1768 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
1769 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1772 case GL_DRAW_BUFFER2_ARB
:
1775 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1776 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1779 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
1780 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1783 case GL_DRAW_BUFFER3_ARB
:
1786 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1787 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1790 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
1791 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1794 case GL_IMPLEMENTATION_COLOR_READ_TYPE_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_type(ctx
));
1800 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
1801 CHECK_EXT1(OES_read_format
);
1802 if (ctx
->NewState
& _NEW_BUFFERS
)
1803 _mesa_update_state(ctx
);
1804 params
[0] = INT_TO_BOOLEAN(_mesa_get_color_read_format(ctx
));
1806 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
1807 CHECK_EXT1(ATI_fragment_shader
);
1808 params
[0] = INT_TO_BOOLEAN(6);
1810 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
1811 CHECK_EXT1(ATI_fragment_shader
);
1812 params
[0] = INT_TO_BOOLEAN(8);
1814 case GL_NUM_PASSES_ATI
:
1815 CHECK_EXT1(ATI_fragment_shader
);
1816 params
[0] = INT_TO_BOOLEAN(2);
1818 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
1819 CHECK_EXT1(ATI_fragment_shader
);
1820 params
[0] = INT_TO_BOOLEAN(8);
1822 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
1823 CHECK_EXT1(ATI_fragment_shader
);
1824 params
[0] = INT_TO_BOOLEAN(16);
1826 case GL_COLOR_ALPHA_PAIRING_ATI
:
1827 CHECK_EXT1(ATI_fragment_shader
);
1828 params
[0] = GL_TRUE
;
1830 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
1831 CHECK_EXT1(ATI_fragment_shader
);
1832 params
[0] = INT_TO_BOOLEAN(3);
1834 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
1835 CHECK_EXT1(ATI_fragment_shader
);
1836 params
[0] = INT_TO_BOOLEAN(3);
1838 case GL_STENCIL_BACK_FUNC
:
1839 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.Function
[1]);
1841 case GL_STENCIL_BACK_VALUE_MASK
:
1842 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.ValueMask
[1]);
1844 case GL_STENCIL_BACK_WRITEMASK
:
1845 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.WriteMask
[1]);
1847 case GL_STENCIL_BACK_REF
:
1848 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Ref
[1]);
1850 case GL_STENCIL_BACK_FAIL
:
1851 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.FailFunc
[1]);
1853 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
1854 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZFailFunc
[1]);
1856 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
1857 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZPassFunc
[1]);
1859 case GL_FRAMEBUFFER_BINDING_EXT
:
1860 CHECK_EXT1(EXT_framebuffer_object
);
1861 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Name
);
1863 case GL_RENDERBUFFER_BINDING_EXT
:
1864 CHECK_EXT1(EXT_framebuffer_object
);
1865 params
[0] = INT_TO_BOOLEAN(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
1867 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
1868 CHECK_EXT1(EXT_framebuffer_object
);
1869 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxColorAttachments
);
1871 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
1872 CHECK_EXT1(EXT_framebuffer_object
);
1873 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxRenderbufferSize
);
1875 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
1876 CHECK_EXT1(EXT_framebuffer_blit
);
1877 params
[0] = INT_TO_BOOLEAN(ctx
->ReadBuffer
->Name
);
1879 case GL_PROVOKING_VERTEX_EXT
:
1880 CHECK_EXT1(EXT_provoking_vertex
);
1881 params
[0] = ctx
->Light
.ProvokingVertex
;
1883 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
1884 CHECK_EXT1(EXT_provoking_vertex
);
1885 params
[0] = ctx
->Const
.QuadsFollowProvokingVertexConvention
;
1887 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
1888 CHECK_EXT1(ARB_fragment_shader
);
1889 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
1891 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
1892 CHECK_EXT1(ARB_fragment_shader
);
1893 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.FragmentShaderDerivative
);
1895 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
1896 CHECK_EXT1(ARB_vertex_shader
);
1897 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
1899 case GL_MAX_VARYING_FLOATS_ARB
:
1900 CHECK_EXT1(ARB_vertex_shader
);
1901 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxVarying
* 4);
1903 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
1904 CHECK_EXT1(ARB_vertex_shader
);
1905 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxVertexTextureImageUnits
);
1907 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
1908 CHECK_EXT1(ARB_vertex_shader
);
1909 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxCombinedTextureImageUnits
);
1911 case GL_CURRENT_PROGRAM
:
1912 CHECK_EXT1(ARB_shader_objects
);
1913 params
[0] = INT_TO_BOOLEAN(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
1915 case GL_MAX_SAMPLES
:
1916 CHECK_EXT1(ARB_framebuffer_object
);
1917 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxSamples
);
1919 case GL_VERTEX_ARRAY_BINDING_APPLE
:
1920 CHECK_EXT1(APPLE_vertex_array_object
);
1921 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Name
);
1923 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
1924 CHECK_EXT1(ARB_seamless_cube_map
);
1925 params
[0] = ctx
->Texture
.CubeMapSeamless
;
1927 case GL_MAX_SERVER_WAIT_TIMEOUT
:
1928 CHECK_EXT1(ARB_sync
);
1929 params
[0] = INT64_TO_BOOLEAN(ctx
->Const
.MaxServerWaitTimeout
);
1931 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
1932 CHECK_EXT1(EXT_transform_feedback
);
1933 params
[0] = INT_TO_BOOLEAN(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
1935 case GL_RASTERIZER_DISCARD
:
1936 CHECK_EXT1(EXT_transform_feedback
);
1937 params
[0] = ctx
->TransformFeedback
.RasterDiscard
;
1939 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
1940 CHECK_EXT1(EXT_transform_feedback
);
1941 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
1943 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
1944 CHECK_EXT1(EXT_transform_feedback
);
1945 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
1947 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
1948 CHECK_EXT1(EXT_transform_feedback
);
1949 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
1951 case GL_NUM_EXTENSIONS
:
1953 params
[0] = INT_TO_BOOLEAN(_mesa_get_extension_count(ctx
));
1955 case GL_MAJOR_VERSION
:
1957 params
[0] = INT_TO_BOOLEAN(ctx
->VersionMajor
);
1959 case GL_MINOR_VERSION
:
1961 params
[0] = INT_TO_BOOLEAN(ctx
->VersionMinor
);
1963 case GL_CONTEXT_FLAGS
:
1965 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.ContextFlags
);
1967 case GL_PRIMITIVE_RESTART
:
1969 params
[0] = ctx
->Array
.PrimitiveRestart
;
1971 case GL_PRIMITIVE_RESTART_INDEX
:
1973 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.RestartIndex
);
1975 case GL_CONTEXT_PROFILE_MASK
:
1977 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.ProfileMask
);
1980 goto invalid_enum_error
;
1985 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv(pname=0x%x)", pname
);
1989 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
1991 GET_CURRENT_CONTEXT(ctx
);
1992 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
1993 ASSERT_OUTSIDE_BEGIN_END(ctx
);
2000 case GL_ACCUM_RED_BITS
:
2001 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumRedBits
);
2003 case GL_ACCUM_GREEN_BITS
:
2004 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
2006 case GL_ACCUM_BLUE_BITS
:
2007 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
2009 case GL_ACCUM_ALPHA_BITS
:
2010 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
2012 case GL_ACCUM_CLEAR_VALUE
:
2013 params
[0] = ctx
->Accum
.ClearColor
[0];
2014 params
[1] = ctx
->Accum
.ClearColor
[1];
2015 params
[2] = ctx
->Accum
.ClearColor
[2];
2016 params
[3] = ctx
->Accum
.ClearColor
[3];
2019 params
[0] = ctx
->Pixel
.AlphaBias
;
2022 if (ctx
->NewState
& _NEW_BUFFERS
)
2023 _mesa_update_state(ctx
);
2024 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.alphaBits
);
2026 case GL_ALPHA_SCALE
:
2027 params
[0] = ctx
->Pixel
.AlphaScale
;
2030 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.AlphaEnabled
);
2032 case GL_ALPHA_TEST_FUNC
:
2033 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2035 case GL_ALPHA_TEST_REF
:
2036 params
[0] = ctx
->Color
.AlphaRef
;
2038 case GL_ATTRIB_STACK_DEPTH
:
2039 params
[0] = (GLfloat
)(ctx
->AttribStackDepth
);
2041 case GL_AUTO_NORMAL
:
2042 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.AutoNormal
);
2044 case GL_AUX_BUFFERS
:
2045 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
2048 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Color
.BlendEnabled
& 1));
2051 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2054 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2056 case GL_BLEND_SRC_RGB_EXT
:
2057 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2059 case GL_BLEND_DST_RGB_EXT
:
2060 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2062 case GL_BLEND_SRC_ALPHA_EXT
:
2063 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2065 case GL_BLEND_DST_ALPHA_EXT
:
2066 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2068 case GL_BLEND_EQUATION
:
2069 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendEquationRGB
);
2071 case GL_BLEND_EQUATION_ALPHA_EXT
:
2072 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendEquationA
);
2074 case GL_BLEND_COLOR_EXT
:
2075 params
[0] = ctx
->Color
.BlendColor
[0];
2076 params
[1] = ctx
->Color
.BlendColor
[1];
2077 params
[2] = ctx
->Color
.BlendColor
[2];
2078 params
[3] = ctx
->Color
.BlendColor
[3];
2081 params
[0] = ctx
->Pixel
.BlueBias
;
2084 if (ctx
->NewState
& _NEW_BUFFERS
)
2085 _mesa_update_state(ctx
);
2086 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.blueBits
);
2089 params
[0] = ctx
->Pixel
.BlueScale
;
2091 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2092 params
[0] = (GLfloat
)(ctx
->ClientAttribStackDepth
);
2094 case GL_CLIP_PLANE0
:
2095 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
2097 case GL_CLIP_PLANE1
:
2098 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
2100 case GL_CLIP_PLANE2
:
2101 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
2103 case GL_CLIP_PLANE3
:
2104 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
2106 case GL_CLIP_PLANE4
:
2107 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
2109 case GL_CLIP_PLANE5
:
2110 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
2112 case GL_COLOR_CLEAR_VALUE
:
2113 params
[0] = ctx
->Color
.ClearColor
[0];
2114 params
[1] = ctx
->Color
.ClearColor
[1];
2115 params
[2] = ctx
->Color
.ClearColor
[2];
2116 params
[3] = ctx
->Color
.ClearColor
[3];
2118 case GL_COLOR_MATERIAL
:
2119 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.ColorMaterialEnabled
);
2121 case GL_COLOR_MATERIAL_FACE
:
2122 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2124 case GL_COLOR_MATERIAL_PARAMETER
:
2125 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2127 case GL_COLOR_WRITEMASK
:
2128 params
[0] = (GLfloat
)(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
2129 params
[1] = (GLfloat
)(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
2130 params
[2] = (GLfloat
)(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
2131 params
[3] = (GLfloat
)(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
2134 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.CullFlag
);
2136 case GL_CULL_FACE_MODE
:
2137 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2139 case GL_CURRENT_COLOR
:
2140 FLUSH_CURRENT(ctx
, 0);
2141 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
2142 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
2143 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
2144 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
2146 case GL_CURRENT_INDEX
:
2147 FLUSH_CURRENT(ctx
, 0);
2148 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0];
2150 case GL_CURRENT_NORMAL
:
2151 FLUSH_CURRENT(ctx
, 0);
2152 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
2153 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
2154 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
2156 case GL_CURRENT_RASTER_COLOR
:
2157 params
[0] = ctx
->Current
.RasterColor
[0];
2158 params
[1] = ctx
->Current
.RasterColor
[1];
2159 params
[2] = ctx
->Current
.RasterColor
[2];
2160 params
[3] = ctx
->Current
.RasterColor
[3];
2162 case GL_CURRENT_RASTER_DISTANCE
:
2163 params
[0] = ctx
->Current
.RasterDistance
;
2165 case GL_CURRENT_RASTER_INDEX
:
2168 case GL_CURRENT_RASTER_POSITION
:
2169 params
[0] = ctx
->Current
.RasterPos
[0];
2170 params
[1] = ctx
->Current
.RasterPos
[1];
2171 params
[2] = ctx
->Current
.RasterPos
[2];
2172 params
[3] = ctx
->Current
.RasterPos
[3];
2174 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
2175 params
[0] = ctx
->Current
.RasterSecondaryColor
[0];
2176 params
[1] = ctx
->Current
.RasterSecondaryColor
[1];
2177 params
[2] = ctx
->Current
.RasterSecondaryColor
[2];
2178 params
[3] = ctx
->Current
.RasterSecondaryColor
[3];
2180 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2182 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2183 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2184 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2185 "glGet(raster tex coords, unit %u)", unit
);
2188 params
[0] = ctx
->Current
.RasterTexCoords
[unit
][0];
2189 params
[1] = ctx
->Current
.RasterTexCoords
[unit
][1];
2190 params
[2] = ctx
->Current
.RasterTexCoords
[unit
][2];
2191 params
[3] = ctx
->Current
.RasterTexCoords
[unit
][3];
2194 case GL_CURRENT_RASTER_POSITION_VALID
:
2195 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Current
.RasterPosValid
);
2197 case GL_CURRENT_TEXTURE_COORDS
:
2199 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2200 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2201 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2202 "glGet(current tex coords, unit %u)", unit
);
2205 FLUSH_CURRENT(ctx
, 0);
2206 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0];
2207 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1];
2208 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2];
2209 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3];
2213 params
[0] = ctx
->Pixel
.DepthBias
;
2216 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.depthBits
);
2218 case GL_DEPTH_CLEAR_VALUE
:
2219 params
[0] = ((GLfloat
) ctx
->Depth
.Clear
);
2222 params
[0] = ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2224 case GL_DEPTH_RANGE
:
2225 params
[0] = ctx
->Viewport
.Near
;
2226 params
[1] = ctx
->Viewport
.Far
;
2228 case GL_DEPTH_SCALE
:
2229 params
[0] = ctx
->Pixel
.DepthScale
;
2232 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.Test
);
2234 case GL_DEPTH_WRITEMASK
:
2235 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.Mask
);
2238 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.DitherFlag
);
2240 case GL_DOUBLEBUFFER
:
2241 params
[0] = BOOLEAN_TO_FLOAT(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
2243 case GL_DRAW_BUFFER
:
2244 params
[0] = ENUM_TO_FLOAT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
2247 FLUSH_CURRENT(ctx
, 0);
2248 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
2250 case GL_FEEDBACK_BUFFER_SIZE
:
2251 params
[0] = (GLfloat
)(ctx
->Feedback
.BufferSize
);
2253 case GL_FEEDBACK_BUFFER_TYPE
:
2254 params
[0] = ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2257 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Fog
.Enabled
);
2260 params
[0] = ctx
->Fog
.Color
[0];
2261 params
[1] = ctx
->Fog
.Color
[1];
2262 params
[2] = ctx
->Fog
.Color
[2];
2263 params
[3] = ctx
->Fog
.Color
[3];
2265 case GL_FOG_DENSITY
:
2266 params
[0] = ctx
->Fog
.Density
;
2269 params
[0] = ctx
->Fog
.End
;
2272 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2275 params
[0] = ctx
->Fog
.Index
;
2278 params
[0] = ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2281 params
[0] = ctx
->Fog
.Start
;
2284 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2287 params
[0] = ctx
->Pixel
.GreenBias
;
2290 if (ctx
->NewState
& _NEW_BUFFERS
)
2291 _mesa_update_state(ctx
);
2292 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.greenBits
);
2294 case GL_GREEN_SCALE
:
2295 params
[0] = ctx
->Pixel
.GreenScale
;
2298 if (ctx
->NewState
& _NEW_BUFFERS
)
2299 _mesa_update_state(ctx
);
2300 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.indexBits
);
2302 case GL_INDEX_CLEAR_VALUE
:
2303 params
[0] = (GLfloat
)(ctx
->Color
.ClearIndex
);
2306 params
[0] = BOOLEAN_TO_FLOAT(GL_FALSE
);
2308 case GL_INDEX_OFFSET
:
2309 params
[0] = (GLfloat
)(ctx
->Pixel
.IndexOffset
);
2311 case GL_INDEX_SHIFT
:
2312 params
[0] = (GLfloat
)(ctx
->Pixel
.IndexShift
);
2314 case GL_INDEX_WRITEMASK
:
2315 params
[0] = (GLfloat
)(ctx
->Color
.IndexMask
);
2318 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[0].Enabled
);
2321 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[1].Enabled
);
2324 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[2].Enabled
);
2327 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[3].Enabled
);
2330 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[4].Enabled
);
2333 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[5].Enabled
);
2336 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[6].Enabled
);
2339 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[7].Enabled
);
2342 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Enabled
);
2344 case GL_LIGHT_MODEL_AMBIENT
:
2345 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2346 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2347 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2348 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2350 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2351 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2353 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2354 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Model
.LocalViewer
);
2356 case GL_LIGHT_MODEL_TWO_SIDE
:
2357 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Model
.TwoSide
);
2359 case GL_LINE_SMOOTH
:
2360 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Line
.SmoothFlag
);
2362 case GL_LINE_SMOOTH_HINT
:
2363 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2365 case GL_LINE_STIPPLE
:
2366 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Line
.StippleFlag
);
2368 case GL_LINE_STIPPLE_PATTERN
:
2369 params
[0] = (GLfloat
)(ctx
->Line
.StipplePattern
);
2371 case GL_LINE_STIPPLE_REPEAT
:
2372 params
[0] = (GLfloat
)(ctx
->Line
.StippleFactor
);
2375 params
[0] = ctx
->Line
.Width
;
2377 case GL_LINE_WIDTH_GRANULARITY
:
2378 params
[0] = ctx
->Const
.LineWidthGranularity
;
2380 case GL_LINE_WIDTH_RANGE
:
2381 params
[0] = ctx
->Const
.MinLineWidthAA
;
2382 params
[1] = ctx
->Const
.MaxLineWidthAA
;
2384 case GL_ALIASED_LINE_WIDTH_RANGE
:
2385 params
[0] = ctx
->Const
.MinLineWidth
;
2386 params
[1] = ctx
->Const
.MaxLineWidth
;
2389 params
[0] = (GLfloat
)(ctx
->List
.ListBase
);
2392 params
[0] = (GLfloat
)((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
2397 if (!ctx
->CompileFlag
)
2399 else if (ctx
->ExecuteFlag
)
2400 mode
= GL_COMPILE_AND_EXECUTE
;
2403 params
[0] = ENUM_TO_FLOAT(mode
);
2406 case GL_INDEX_LOGIC_OP
:
2407 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.IndexLogicOpEnabled
);
2409 case GL_COLOR_LOGIC_OP
:
2410 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.ColorLogicOpEnabled
);
2412 case GL_LOGIC_OP_MODE
:
2413 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2415 case GL_MAP1_COLOR_4
:
2416 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Color4
);
2418 case GL_MAP1_GRID_DOMAIN
:
2419 params
[0] = ctx
->Eval
.MapGrid1u1
;
2420 params
[1] = ctx
->Eval
.MapGrid1u2
;
2422 case GL_MAP1_GRID_SEGMENTS
:
2423 params
[0] = (GLfloat
)(ctx
->Eval
.MapGrid1un
);
2426 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Index
);
2428 case GL_MAP1_NORMAL
:
2429 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Normal
);
2431 case GL_MAP1_TEXTURE_COORD_1
:
2432 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord1
);
2434 case GL_MAP1_TEXTURE_COORD_2
:
2435 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord2
);
2437 case GL_MAP1_TEXTURE_COORD_3
:
2438 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord3
);
2440 case GL_MAP1_TEXTURE_COORD_4
:
2441 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord4
);
2443 case GL_MAP1_VERTEX_3
:
2444 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Vertex3
);
2446 case GL_MAP1_VERTEX_4
:
2447 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Vertex4
);
2449 case GL_MAP2_COLOR_4
:
2450 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Color4
);
2452 case GL_MAP2_GRID_DOMAIN
:
2453 params
[0] = ctx
->Eval
.MapGrid2u1
;
2454 params
[1] = ctx
->Eval
.MapGrid2u2
;
2455 params
[2] = ctx
->Eval
.MapGrid2v1
;
2456 params
[3] = ctx
->Eval
.MapGrid2v2
;
2458 case GL_MAP2_GRID_SEGMENTS
:
2459 params
[0] = (GLfloat
)(ctx
->Eval
.MapGrid2un
);
2460 params
[1] = (GLfloat
)(ctx
->Eval
.MapGrid2vn
);
2463 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Index
);
2465 case GL_MAP2_NORMAL
:
2466 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Normal
);
2468 case GL_MAP2_TEXTURE_COORD_1
:
2469 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord1
);
2471 case GL_MAP2_TEXTURE_COORD_2
:
2472 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord2
);
2474 case GL_MAP2_TEXTURE_COORD_3
:
2475 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord3
);
2477 case GL_MAP2_TEXTURE_COORD_4
:
2478 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord4
);
2480 case GL_MAP2_VERTEX_3
:
2481 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Vertex3
);
2483 case GL_MAP2_VERTEX_4
:
2484 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Vertex4
);
2487 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MapColorFlag
);
2489 case GL_MAP_STENCIL
:
2490 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MapStencilFlag
);
2492 case GL_MATRIX_MODE
:
2493 params
[0] = ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2495 case GL_MAX_ATTRIB_STACK_DEPTH
:
2496 params
[0] = (GLfloat
)(MAX_ATTRIB_STACK_DEPTH
);
2498 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2499 params
[0] = (GLfloat
)(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
2501 case GL_MAX_CLIP_PLANES
:
2502 params
[0] = (GLfloat
)(ctx
->Const
.MaxClipPlanes
);
2504 case GL_MAX_ELEMENTS_VERTICES
:
2505 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayLockSize
);
2507 case GL_MAX_ELEMENTS_INDICES
:
2508 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayLockSize
);
2510 case GL_MAX_EVAL_ORDER
:
2511 params
[0] = (GLfloat
)(MAX_EVAL_ORDER
);
2514 params
[0] = (GLfloat
)(ctx
->Const
.MaxLights
);
2516 case GL_MAX_LIST_NESTING
:
2517 params
[0] = (GLfloat
)(MAX_LIST_NESTING
);
2519 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2520 params
[0] = (GLfloat
)(MAX_MODELVIEW_STACK_DEPTH
);
2522 case GL_MAX_NAME_STACK_DEPTH
:
2523 params
[0] = (GLfloat
)(MAX_NAME_STACK_DEPTH
);
2525 case GL_MAX_PIXEL_MAP_TABLE
:
2526 params
[0] = (GLfloat
)(MAX_PIXEL_MAP_TABLE
);
2528 case GL_MAX_PROJECTION_STACK_DEPTH
:
2529 params
[0] = (GLfloat
)(MAX_PROJECTION_STACK_DEPTH
);
2531 case GL_MAX_TEXTURE_SIZE
:
2532 params
[0] = (GLfloat
)(1 << (ctx
->Const
.MaxTextureLevels
- 1));
2534 case GL_MAX_3D_TEXTURE_SIZE
:
2535 params
[0] = (GLfloat
)(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
2537 case GL_MAX_TEXTURE_STACK_DEPTH
:
2538 params
[0] = (GLfloat
)(MAX_TEXTURE_STACK_DEPTH
);
2540 case GL_MAX_VIEWPORT_DIMS
:
2541 params
[0] = (GLfloat
)(ctx
->Const
.MaxViewportWidth
);
2542 params
[1] = (GLfloat
)(ctx
->Const
.MaxViewportHeight
);
2544 case GL_MODELVIEW_MATRIX
:
2546 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
2547 params
[0] = matrix
[0];
2548 params
[1] = matrix
[1];
2549 params
[2] = matrix
[2];
2550 params
[3] = matrix
[3];
2551 params
[4] = matrix
[4];
2552 params
[5] = matrix
[5];
2553 params
[6] = matrix
[6];
2554 params
[7] = matrix
[7];
2555 params
[8] = matrix
[8];
2556 params
[9] = matrix
[9];
2557 params
[10] = matrix
[10];
2558 params
[11] = matrix
[11];
2559 params
[12] = matrix
[12];
2560 params
[13] = matrix
[13];
2561 params
[14] = matrix
[14];
2562 params
[15] = matrix
[15];
2565 case GL_MODELVIEW_STACK_DEPTH
:
2566 params
[0] = (GLfloat
)(ctx
->ModelviewMatrixStack
.Depth
+ 1);
2568 case GL_NAME_STACK_DEPTH
:
2569 params
[0] = (GLfloat
)(ctx
->Select
.NameStackDepth
);
2572 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.Normalize
);
2574 case GL_PACK_ALIGNMENT
:
2575 params
[0] = (GLfloat
)(ctx
->Pack
.Alignment
);
2577 case GL_PACK_LSB_FIRST
:
2578 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.LsbFirst
);
2580 case GL_PACK_ROW_LENGTH
:
2581 params
[0] = (GLfloat
)(ctx
->Pack
.RowLength
);
2583 case GL_PACK_SKIP_PIXELS
:
2584 params
[0] = (GLfloat
)(ctx
->Pack
.SkipPixels
);
2586 case GL_PACK_SKIP_ROWS
:
2587 params
[0] = (GLfloat
)(ctx
->Pack
.SkipRows
);
2589 case GL_PACK_SWAP_BYTES
:
2590 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.SwapBytes
);
2592 case GL_PACK_SKIP_IMAGES_EXT
:
2593 params
[0] = (GLfloat
)(ctx
->Pack
.SkipImages
);
2595 case GL_PACK_IMAGE_HEIGHT_EXT
:
2596 params
[0] = (GLfloat
)(ctx
->Pack
.ImageHeight
);
2598 case GL_PACK_INVERT_MESA
:
2599 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.Invert
);
2601 case GL_PERSPECTIVE_CORRECTION_HINT
:
2602 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
2604 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2605 params
[0] = (GLfloat
)(ctx
->PixelMaps
.AtoA
.Size
);
2607 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2608 params
[0] = (GLfloat
)(ctx
->PixelMaps
.BtoB
.Size
);
2610 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2611 params
[0] = (GLfloat
)(ctx
->PixelMaps
.GtoG
.Size
);
2613 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2614 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoA
.Size
);
2616 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2617 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoB
.Size
);
2619 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2620 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoG
.Size
);
2622 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2623 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoI
.Size
);
2625 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2626 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoR
.Size
);
2628 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2629 params
[0] = (GLfloat
)(ctx
->PixelMaps
.RtoR
.Size
);
2631 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2632 params
[0] = (GLfloat
)(ctx
->PixelMaps
.StoS
.Size
);
2635 params
[0] = ctx
->Point
.Size
;
2637 case GL_POINT_SIZE_GRANULARITY
:
2638 params
[0] = ctx
->Const
.PointSizeGranularity
;
2640 case GL_POINT_SIZE_RANGE
:
2641 params
[0] = ctx
->Const
.MinPointSizeAA
;
2642 params
[1] = ctx
->Const
.MaxPointSizeAA
;
2644 case GL_ALIASED_POINT_SIZE_RANGE
:
2645 params
[0] = ctx
->Const
.MinPointSize
;
2646 params
[1] = ctx
->Const
.MaxPointSize
;
2648 case GL_POINT_SMOOTH
:
2649 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Point
.SmoothFlag
);
2651 case GL_POINT_SMOOTH_HINT
:
2652 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
2654 case GL_POINT_SIZE_MIN_EXT
:
2655 params
[0] = ctx
->Point
.MinSize
;
2657 case GL_POINT_SIZE_MAX_EXT
:
2658 params
[0] = ctx
->Point
.MaxSize
;
2660 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2661 params
[0] = ctx
->Point
.Threshold
;
2663 case GL_DISTANCE_ATTENUATION_EXT
:
2664 params
[0] = ctx
->Point
.Params
[0];
2665 params
[1] = ctx
->Point
.Params
[1];
2666 params
[2] = ctx
->Point
.Params
[2];
2668 case GL_POLYGON_MODE
:
2669 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
2670 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
2672 case GL_POLYGON_OFFSET_BIAS_EXT
:
2673 params
[0] = ctx
->Polygon
.OffsetUnits
;
2675 case GL_POLYGON_OFFSET_FACTOR
:
2676 params
[0] = ctx
->Polygon
.OffsetFactor
;
2678 case GL_POLYGON_OFFSET_UNITS
:
2679 params
[0] = ctx
->Polygon
.OffsetUnits
;
2681 case GL_POLYGON_OFFSET_POINT
:
2682 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetPoint
);
2684 case GL_POLYGON_OFFSET_LINE
:
2685 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetLine
);
2687 case GL_POLYGON_OFFSET_FILL
:
2688 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetFill
);
2690 case GL_POLYGON_SMOOTH
:
2691 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.SmoothFlag
);
2693 case GL_POLYGON_SMOOTH_HINT
:
2694 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
2696 case GL_POLYGON_STIPPLE
:
2697 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.StippleFlag
);
2699 case GL_PROJECTION_MATRIX
:
2701 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
2702 params
[0] = matrix
[0];
2703 params
[1] = matrix
[1];
2704 params
[2] = matrix
[2];
2705 params
[3] = matrix
[3];
2706 params
[4] = matrix
[4];
2707 params
[5] = matrix
[5];
2708 params
[6] = matrix
[6];
2709 params
[7] = matrix
[7];
2710 params
[8] = matrix
[8];
2711 params
[9] = matrix
[9];
2712 params
[10] = matrix
[10];
2713 params
[11] = matrix
[11];
2714 params
[12] = matrix
[12];
2715 params
[13] = matrix
[13];
2716 params
[14] = matrix
[14];
2717 params
[15] = matrix
[15];
2720 case GL_PROJECTION_STACK_DEPTH
:
2721 params
[0] = (GLfloat
)(ctx
->ProjectionMatrixStack
.Depth
+ 1);
2723 case GL_READ_BUFFER
:
2724 params
[0] = ENUM_TO_FLOAT(ctx
->ReadBuffer
->ColorReadBuffer
);
2727 params
[0] = ctx
->Pixel
.RedBias
;
2730 if (ctx
->NewState
& _NEW_BUFFERS
)
2731 _mesa_update_state(ctx
);
2732 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.redBits
);
2735 params
[0] = ctx
->Pixel
.RedScale
;
2737 case GL_RENDER_MODE
:
2738 params
[0] = ENUM_TO_FLOAT(ctx
->RenderMode
);
2740 case GL_RESCALE_NORMAL
:
2741 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.RescaleNormals
);
2744 params
[0] = BOOLEAN_TO_FLOAT(GL_TRUE
);
2746 case GL_SCISSOR_BOX
:
2747 params
[0] = (GLfloat
)(ctx
->Scissor
.X
);
2748 params
[1] = (GLfloat
)(ctx
->Scissor
.Y
);
2749 params
[2] = (GLfloat
)(ctx
->Scissor
.Width
);
2750 params
[3] = (GLfloat
)(ctx
->Scissor
.Height
);
2752 case GL_SCISSOR_TEST
:
2753 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Scissor
.Enabled
);
2755 case GL_SELECTION_BUFFER_SIZE
:
2756 params
[0] = (GLfloat
)(ctx
->Select
.BufferSize
);
2758 case GL_SHADE_MODEL
:
2759 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
2761 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2762 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.SharedPalette
);
2764 case GL_STENCIL_BITS
:
2765 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.stencilBits
);
2767 case GL_STENCIL_CLEAR_VALUE
:
2768 params
[0] = (GLfloat
)(ctx
->Stencil
.Clear
);
2770 case GL_STENCIL_FAIL
:
2771 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
2773 case GL_STENCIL_FUNC
:
2774 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
2776 case GL_STENCIL_PASS_DEPTH_FAIL
:
2777 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
2779 case GL_STENCIL_PASS_DEPTH_PASS
:
2780 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
2782 case GL_STENCIL_REF
:
2783 params
[0] = (GLfloat
)(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
2785 case GL_STENCIL_TEST
:
2786 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Stencil
.Enabled
);
2788 case GL_STENCIL_VALUE_MASK
:
2789 params
[0] = (GLfloat
)(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
2791 case GL_STENCIL_WRITEMASK
:
2792 params
[0] = (GLfloat
)(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
2795 params
[0] = BOOLEAN_TO_FLOAT(ctx
->DrawBuffer
->Visual
.stereoMode
);
2797 case GL_SUBPIXEL_BITS
:
2798 params
[0] = (GLfloat
)(ctx
->Const
.SubPixelBits
);
2801 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D
));
2804 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D
));
2807 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D
));
2809 case GL_TEXTURE_1D_ARRAY_EXT
:
2810 CHECK_EXT1(MESA_texture_array
);
2811 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
2813 case GL_TEXTURE_2D_ARRAY_EXT
:
2814 CHECK_EXT1(MESA_texture_array
);
2815 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
2817 case GL_TEXTURE_BINDING_1D
:
2818 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
2820 case GL_TEXTURE_BINDING_2D
:
2821 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
2823 case GL_TEXTURE_BINDING_3D
:
2824 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
2826 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
2827 CHECK_EXT1(MESA_texture_array
);
2828 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
2830 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
2831 CHECK_EXT1(MESA_texture_array
);
2832 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
2834 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
2835 CHECK_EXT1(MESA_texture_array
);
2836 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayTextureLayers
);
2838 case GL_TEXTURE_GEN_S
:
2839 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
2841 case GL_TEXTURE_GEN_T
:
2842 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
2844 case GL_TEXTURE_GEN_R
:
2845 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
2847 case GL_TEXTURE_GEN_Q
:
2848 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
2850 case GL_TEXTURE_MATRIX
:
2852 const GLfloat
*matrix
;
2853 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2854 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2855 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
2859 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
2860 params
[0] = matrix
[0];
2861 params
[1] = matrix
[1];
2862 params
[2] = matrix
[2];
2863 params
[3] = matrix
[3];
2864 params
[4] = matrix
[4];
2865 params
[5] = matrix
[5];
2866 params
[6] = matrix
[6];
2867 params
[7] = matrix
[7];
2868 params
[8] = matrix
[8];
2869 params
[9] = matrix
[9];
2870 params
[10] = matrix
[10];
2871 params
[11] = matrix
[11];
2872 params
[12] = matrix
[12];
2873 params
[13] = matrix
[13];
2874 params
[14] = matrix
[14];
2875 params
[15] = matrix
[15];
2878 case GL_TEXTURE_STACK_DEPTH
:
2880 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2881 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2882 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2883 "glGet(texture stack depth, unit %u)", unit
);
2886 params
[0] = (GLfloat
)(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
2889 case GL_UNPACK_ALIGNMENT
:
2890 params
[0] = (GLfloat
)(ctx
->Unpack
.Alignment
);
2892 case GL_UNPACK_LSB_FIRST
:
2893 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.LsbFirst
);
2895 case GL_UNPACK_ROW_LENGTH
:
2896 params
[0] = (GLfloat
)(ctx
->Unpack
.RowLength
);
2898 case GL_UNPACK_SKIP_PIXELS
:
2899 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipPixels
);
2901 case GL_UNPACK_SKIP_ROWS
:
2902 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipRows
);
2904 case GL_UNPACK_SWAP_BYTES
:
2905 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.SwapBytes
);
2907 case GL_UNPACK_SKIP_IMAGES_EXT
:
2908 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipImages
);
2910 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2911 params
[0] = (GLfloat
)(ctx
->Unpack
.ImageHeight
);
2913 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
2914 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.ClientStorage
);
2917 params
[0] = (GLfloat
)(ctx
->Viewport
.X
);
2918 params
[1] = (GLfloat
)(ctx
->Viewport
.Y
);
2919 params
[2] = (GLfloat
)(ctx
->Viewport
.Width
);
2920 params
[3] = (GLfloat
)(ctx
->Viewport
.Height
);
2923 params
[0] = ctx
->Pixel
.ZoomX
;
2926 params
[0] = ctx
->Pixel
.ZoomY
;
2928 case GL_VERTEX_ARRAY
:
2929 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
2931 case GL_VERTEX_ARRAY_SIZE
:
2932 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.Size
);
2934 case GL_VERTEX_ARRAY_TYPE
:
2935 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Vertex
.Type
);
2937 case GL_VERTEX_ARRAY_STRIDE
:
2938 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
2940 case GL_VERTEX_ARRAY_COUNT_EXT
:
2941 params
[0] = (GLfloat
)(0);
2943 case GL_NORMAL_ARRAY
:
2944 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
2946 case GL_NORMAL_ARRAY_TYPE
:
2947 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Normal
.Type
);
2949 case GL_NORMAL_ARRAY_STRIDE
:
2950 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Normal
.Stride
);
2952 case GL_NORMAL_ARRAY_COUNT_EXT
:
2953 params
[0] = (GLfloat
)(0);
2955 case GL_COLOR_ARRAY
:
2956 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Color
.Enabled
);
2958 case GL_COLOR_ARRAY_SIZE
:
2959 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.Size
);
2961 case GL_COLOR_ARRAY_TYPE
:
2962 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Color
.Type
);
2964 case GL_COLOR_ARRAY_STRIDE
:
2965 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.Stride
);
2967 case GL_COLOR_ARRAY_COUNT_EXT
:
2968 params
[0] = (GLfloat
)(0);
2970 case GL_INDEX_ARRAY
:
2971 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Index
.Enabled
);
2973 case GL_INDEX_ARRAY_TYPE
:
2974 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Index
.Type
);
2976 case GL_INDEX_ARRAY_STRIDE
:
2977 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Index
.Stride
);
2979 case GL_INDEX_ARRAY_COUNT_EXT
:
2980 params
[0] = (GLfloat
)(0);
2982 case GL_TEXTURE_COORD_ARRAY
:
2983 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
2985 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2986 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
2988 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2989 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
2991 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
2992 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
2994 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
2995 params
[0] = (GLfloat
)(0);
2997 case GL_EDGE_FLAG_ARRAY
:
2998 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
3000 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3001 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
3003 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3004 params
[0] = (GLfloat
)(0);
3006 case GL_MAX_TEXTURE_UNITS_ARB
:
3007 CHECK_EXT1(ARB_multitexture
);
3008 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureUnits
);
3010 case GL_ACTIVE_TEXTURE_ARB
:
3011 CHECK_EXT1(ARB_multitexture
);
3012 params
[0] = (GLfloat
)(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3014 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3015 CHECK_EXT1(ARB_multitexture
);
3016 params
[0] = (GLfloat
)(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3018 case GL_TEXTURE_CUBE_MAP_ARB
:
3019 CHECK_EXT1(ARB_texture_cube_map
);
3020 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
3022 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3023 CHECK_EXT1(ARB_texture_cube_map
);
3024 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
3026 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3027 CHECK_EXT1(ARB_texture_cube_map
);
3028 params
[0] = (GLfloat
)((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
3030 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3031 params
[0] = (GLfloat
)(ctx
->Hint
.TextureCompression
);
3033 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3034 params
[0] = (GLfloat
)(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
3036 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3039 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
3041 for (i
= 0; i
< n
; i
++)
3042 params
[i
] = ENUM_TO_FLOAT(formats
[i
]);
3045 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3046 CHECK_EXT1(EXT_compiled_vertex_array
);
3047 params
[0] = (GLfloat
)(ctx
->Array
.LockFirst
);
3049 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3050 CHECK_EXT1(EXT_compiled_vertex_array
);
3051 params
[0] = (GLfloat
)(ctx
->Array
.LockCount
);
3053 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3055 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
3056 params
[0] = matrix
[0];
3057 params
[1] = matrix
[4];
3058 params
[2] = matrix
[8];
3059 params
[3] = matrix
[12];
3060 params
[4] = matrix
[1];
3061 params
[5] = matrix
[5];
3062 params
[6] = matrix
[9];
3063 params
[7] = matrix
[13];
3064 params
[8] = matrix
[2];
3065 params
[9] = matrix
[6];
3066 params
[10] = matrix
[10];
3067 params
[11] = matrix
[14];
3068 params
[12] = matrix
[3];
3069 params
[13] = matrix
[7];
3070 params
[14] = matrix
[11];
3071 params
[15] = matrix
[15];
3074 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3076 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
3077 params
[0] = matrix
[0];
3078 params
[1] = matrix
[4];
3079 params
[2] = matrix
[8];
3080 params
[3] = matrix
[12];
3081 params
[4] = matrix
[1];
3082 params
[5] = matrix
[5];
3083 params
[6] = matrix
[9];
3084 params
[7] = matrix
[13];
3085 params
[8] = matrix
[2];
3086 params
[9] = matrix
[6];
3087 params
[10] = matrix
[10];
3088 params
[11] = matrix
[14];
3089 params
[12] = matrix
[3];
3090 params
[13] = matrix
[7];
3091 params
[14] = matrix
[11];
3092 params
[15] = matrix
[15];
3095 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3097 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
3098 params
[0] = matrix
[0];
3099 params
[1] = matrix
[4];
3100 params
[2] = matrix
[8];
3101 params
[3] = matrix
[12];
3102 params
[4] = matrix
[1];
3103 params
[5] = matrix
[5];
3104 params
[6] = matrix
[9];
3105 params
[7] = matrix
[13];
3106 params
[8] = matrix
[2];
3107 params
[9] = matrix
[6];
3108 params
[10] = matrix
[10];
3109 params
[11] = matrix
[14];
3110 params
[12] = matrix
[3];
3111 params
[13] = matrix
[7];
3112 params
[14] = matrix
[11];
3113 params
[15] = matrix
[15];
3116 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3118 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
3119 params
[0] = matrix
[0];
3120 params
[1] = matrix
[4];
3121 params
[2] = matrix
[8];
3122 params
[3] = matrix
[12];
3123 params
[4] = matrix
[1];
3124 params
[5] = matrix
[5];
3125 params
[6] = matrix
[9];
3126 params
[7] = matrix
[13];
3127 params
[8] = matrix
[2];
3128 params
[9] = matrix
[6];
3129 params
[10] = matrix
[10];
3130 params
[11] = matrix
[14];
3131 params
[12] = matrix
[3];
3132 params
[13] = matrix
[7];
3133 params
[14] = matrix
[11];
3134 params
[15] = matrix
[15];
3137 case GL_COLOR_MATRIX_SGI
:
3139 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
3140 params
[0] = matrix
[0];
3141 params
[1] = matrix
[1];
3142 params
[2] = matrix
[2];
3143 params
[3] = matrix
[3];
3144 params
[4] = matrix
[4];
3145 params
[5] = matrix
[5];
3146 params
[6] = matrix
[6];
3147 params
[7] = matrix
[7];
3148 params
[8] = matrix
[8];
3149 params
[9] = matrix
[9];
3150 params
[10] = matrix
[10];
3151 params
[11] = matrix
[11];
3152 params
[12] = matrix
[12];
3153 params
[13] = matrix
[13];
3154 params
[14] = matrix
[14];
3155 params
[15] = matrix
[15];
3158 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3159 params
[0] = (GLfloat
)(ctx
->ColorMatrixStack
.Depth
+ 1);
3161 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3162 params
[0] = (GLfloat
)(MAX_COLOR_STACK_DEPTH
);
3164 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3165 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[0];
3167 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3168 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[1];
3170 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3171 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[2];
3173 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3174 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[3];
3176 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3177 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[0];
3179 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3180 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[1];
3182 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3183 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[2];
3185 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3186 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[3];
3188 case GL_CONVOLUTION_1D_EXT
:
3189 CHECK_EXT1(EXT_convolution
);
3190 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Convolution1DEnabled
);
3192 case GL_CONVOLUTION_2D_EXT
:
3193 CHECK_EXT1(EXT_convolution
);
3194 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Convolution2DEnabled
);
3196 case GL_SEPARABLE_2D_EXT
:
3197 CHECK_EXT1(EXT_convolution
);
3198 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Separable2DEnabled
);
3200 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3201 CHECK_EXT1(EXT_convolution
);
3202 params
[0] = ctx
->Pixel
.PostConvolutionScale
[0];
3204 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3205 CHECK_EXT1(EXT_convolution
);
3206 params
[0] = ctx
->Pixel
.PostConvolutionScale
[1];
3208 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3209 CHECK_EXT1(EXT_convolution
);
3210 params
[0] = ctx
->Pixel
.PostConvolutionScale
[2];
3212 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3213 CHECK_EXT1(EXT_convolution
);
3214 params
[0] = ctx
->Pixel
.PostConvolutionScale
[3];
3216 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3217 CHECK_EXT1(EXT_convolution
);
3218 params
[0] = ctx
->Pixel
.PostConvolutionBias
[0];
3220 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3221 CHECK_EXT1(EXT_convolution
);
3222 params
[0] = ctx
->Pixel
.PostConvolutionBias
[1];
3224 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3225 CHECK_EXT1(EXT_convolution
);
3226 params
[0] = ctx
->Pixel
.PostConvolutionBias
[2];
3228 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3229 CHECK_EXT1(EXT_convolution
);
3230 params
[0] = ctx
->Pixel
.PostConvolutionBias
[3];
3233 CHECK_EXT1(EXT_histogram
);
3234 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.HistogramEnabled
);
3237 CHECK_EXT1(EXT_histogram
);
3238 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MinMaxEnabled
);
3240 case GL_COLOR_TABLE_SGI
:
3241 CHECK_EXT1(SGI_color_table
);
3242 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
3244 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3245 CHECK_EXT1(SGI_color_table
);
3246 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
3248 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3249 CHECK_EXT1(SGI_color_table
);
3250 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
3252 case GL_TEXTURE_COLOR_TABLE_SGI
:
3253 CHECK_EXT1(SGI_texture_color_table
);
3254 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
3256 case GL_COLOR_SUM_EXT
:
3257 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
3258 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Fog
.ColorSumEnabled
);
3260 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3261 CHECK_EXT1(EXT_secondary_color
);
3262 FLUSH_CURRENT(ctx
, 0);
3263 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
3264 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
3265 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
3266 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3];
3268 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3269 CHECK_EXT1(EXT_secondary_color
);
3270 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
3272 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3273 CHECK_EXT1(EXT_secondary_color
);
3274 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
3276 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3277 CHECK_EXT1(EXT_secondary_color
);
3278 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
3280 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3281 CHECK_EXT1(EXT_secondary_color
);
3282 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
3284 case GL_CURRENT_FOG_COORDINATE_EXT
:
3285 CHECK_EXT1(EXT_fog_coord
);
3286 FLUSH_CURRENT(ctx
, 0);
3287 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
3289 case GL_FOG_COORDINATE_ARRAY_EXT
:
3290 CHECK_EXT1(EXT_fog_coord
);
3291 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
3293 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3294 CHECK_EXT1(EXT_fog_coord
);
3295 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
3297 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3298 CHECK_EXT1(EXT_fog_coord
);
3299 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
3301 case GL_FOG_COORDINATE_SOURCE_EXT
:
3302 CHECK_EXT1(EXT_fog_coord
);
3303 params
[0] = ENUM_TO_FLOAT(ctx
->Fog
.FogCoordinateSource
);
3305 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3306 CHECK_EXT1(EXT_texture_lod_bias
);
3307 params
[0] = ctx
->Const
.MaxTextureLodBias
;
3309 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3310 CHECK_EXT1(EXT_texture_filter_anisotropic
);
3311 params
[0] = ctx
->Const
.MaxTextureMaxAnisotropy
;
3313 case GL_MULTISAMPLE_ARB
:
3314 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.Enabled
);
3316 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
3317 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleAlphaToCoverage
);
3319 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
3320 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleAlphaToOne
);
3322 case GL_SAMPLE_COVERAGE_ARB
:
3323 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleCoverage
);
3325 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
3326 params
[0] = ctx
->Multisample
.SampleCoverageValue
;
3328 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
3329 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleCoverageInvert
);
3331 case GL_SAMPLE_BUFFERS_ARB
:
3332 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
3334 case GL_SAMPLES_ARB
:
3335 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.samples
);
3337 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
3338 CHECK_EXT1(IBM_rasterpos_clip
);
3339 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.RasterPositionUnclipped
);
3341 case GL_POINT_SPRITE_NV
:
3342 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
3343 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Point
.PointSprite
);
3345 case GL_POINT_SPRITE_R_MODE_NV
:
3346 CHECK_EXT1(NV_point_sprite
);
3347 params
[0] = ENUM_TO_FLOAT(ctx
->Point
.SpriteRMode
);
3349 case GL_POINT_SPRITE_COORD_ORIGIN
:
3350 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
3351 params
[0] = ENUM_TO_FLOAT(ctx
->Point
.SpriteOrigin
);
3353 case GL_GENERATE_MIPMAP_HINT_SGIS
:
3354 CHECK_EXT1(SGIS_generate_mipmap
);
3355 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.GenerateMipmap
);
3357 case GL_VERTEX_PROGRAM_BINDING_NV
:
3358 CHECK_EXT1(NV_vertex_program
);
3359 params
[0] = (GLfloat
)((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
3361 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
3362 CHECK_EXT1(NV_vertex_program
);
3363 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
3365 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
3366 CHECK_EXT1(NV_vertex_program
);
3367 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
3369 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
3370 CHECK_EXT1(NV_vertex_program
);
3371 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
3373 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
3374 CHECK_EXT1(NV_vertex_program
);
3375 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
3377 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
3378 CHECK_EXT1(NV_vertex_program
);
3379 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
3381 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
3382 CHECK_EXT1(NV_vertex_program
);
3383 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
3385 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
3386 CHECK_EXT1(NV_vertex_program
);
3387 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
3389 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
3390 CHECK_EXT1(NV_vertex_program
);
3391 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
3393 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
3394 CHECK_EXT1(NV_vertex_program
);
3395 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
3397 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
3398 CHECK_EXT1(NV_vertex_program
);
3399 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
3401 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
3402 CHECK_EXT1(NV_vertex_program
);
3403 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
3405 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
3406 CHECK_EXT1(NV_vertex_program
);
3407 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
3409 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
3410 CHECK_EXT1(NV_vertex_program
);
3411 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
3413 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
3414 CHECK_EXT1(NV_vertex_program
);
3415 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
3417 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
3418 CHECK_EXT1(NV_vertex_program
);
3419 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
3421 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
3422 CHECK_EXT1(NV_vertex_program
);
3423 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
3425 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
3426 CHECK_EXT1(NV_vertex_program
);
3427 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[0]);
3429 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
3430 CHECK_EXT1(NV_vertex_program
);
3431 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[1]);
3433 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
3434 CHECK_EXT1(NV_vertex_program
);
3435 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[2]);
3437 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
3438 CHECK_EXT1(NV_vertex_program
);
3439 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[3]);
3441 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
3442 CHECK_EXT1(NV_vertex_program
);
3443 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[4]);
3445 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
3446 CHECK_EXT1(NV_vertex_program
);
3447 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[5]);
3449 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
3450 CHECK_EXT1(NV_vertex_program
);
3451 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[6]);
3453 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
3454 CHECK_EXT1(NV_vertex_program
);
3455 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[7]);
3457 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
3458 CHECK_EXT1(NV_vertex_program
);
3459 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[8]);
3461 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
3462 CHECK_EXT1(NV_vertex_program
);
3463 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[9]);
3465 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
3466 CHECK_EXT1(NV_vertex_program
);
3467 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[10]);
3469 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
3470 CHECK_EXT1(NV_vertex_program
);
3471 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[11]);
3473 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
3474 CHECK_EXT1(NV_vertex_program
);
3475 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[12]);
3477 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
3478 CHECK_EXT1(NV_vertex_program
);
3479 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[13]);
3481 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
3482 CHECK_EXT1(NV_vertex_program
);
3483 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[14]);
3485 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
3486 CHECK_EXT1(NV_vertex_program
);
3487 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[15]);
3489 case GL_FRAGMENT_PROGRAM_NV
:
3490 CHECK_EXT1(NV_fragment_program
);
3491 params
[0] = BOOLEAN_TO_FLOAT(ctx
->FragmentProgram
.Enabled
);
3493 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
3494 CHECK_EXT1(NV_fragment_program
);
3495 params
[0] = (GLfloat
)(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
3497 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
3498 CHECK_EXT1(NV_fragment_program
);
3499 params
[0] = (GLfloat
)(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
3501 case GL_TEXTURE_RECTANGLE_NV
:
3502 CHECK_EXT1(NV_texture_rectangle
);
3503 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
3505 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
3506 CHECK_EXT1(NV_texture_rectangle
);
3507 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
3509 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
3510 CHECK_EXT1(NV_texture_rectangle
);
3511 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureRectSize
);
3513 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
3514 CHECK_EXT1(EXT_stencil_two_side
);
3515 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Stencil
.TestTwoSide
);
3517 case GL_ACTIVE_STENCIL_FACE_EXT
:
3518 CHECK_EXT1(EXT_stencil_two_side
);
3519 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
3521 case GL_MAX_SHININESS_NV
:
3522 CHECK_EXT1(NV_light_max_exponent
);
3523 params
[0] = ctx
->Const
.MaxShininess
;
3525 case GL_MAX_SPOT_EXPONENT_NV
:
3526 CHECK_EXT1(NV_light_max_exponent
);
3527 params
[0] = ctx
->Const
.MaxSpotExponent
;
3529 case GL_ARRAY_BUFFER_BINDING_ARB
:
3530 params
[0] = (GLfloat
)(ctx
->Array
.ArrayBufferObj
->Name
);
3532 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
3533 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
3535 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
3536 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
3538 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3539 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
3541 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
3542 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
3544 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
3545 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
3547 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
3548 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
3550 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3551 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
3553 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
3554 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
3556 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
3557 params
[0] = (GLfloat
)(ctx
->Array
.ElementArrayBufferObj
->Name
);
3559 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
3560 CHECK_EXT1(EXT_pixel_buffer_object
);
3561 params
[0] = (GLfloat
)(ctx
->Pack
.BufferObj
->Name
);
3563 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
3564 CHECK_EXT1(EXT_pixel_buffer_object
);
3565 params
[0] = (GLfloat
)(ctx
->Unpack
.BufferObj
->Name
);
3567 case GL_VERTEX_PROGRAM_ARB
:
3568 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3569 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.Enabled
);
3571 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
3572 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3573 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.PointSizeEnabled
);
3575 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
3576 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3577 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.TwoSideEnabled
);
3579 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
3580 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3581 params
[0] = (GLfloat
)(ctx
->Const
.MaxProgramMatrixStackDepth
);
3583 case GL_MAX_PROGRAM_MATRICES_ARB
:
3584 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3585 params
[0] = (GLfloat
)(ctx
->Const
.MaxProgramMatrices
);
3587 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
3588 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3589 params
[0] = BOOLEAN_TO_FLOAT(ctx
->CurrentStack
->Depth
+ 1);
3591 case GL_CURRENT_MATRIX_ARB
:
3592 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
3594 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
3595 params
[0] = matrix
[0];
3596 params
[1] = matrix
[1];
3597 params
[2] = matrix
[2];
3598 params
[3] = matrix
[3];
3599 params
[4] = matrix
[4];
3600 params
[5] = matrix
[5];
3601 params
[6] = matrix
[6];
3602 params
[7] = matrix
[7];
3603 params
[8] = matrix
[8];
3604 params
[9] = matrix
[9];
3605 params
[10] = matrix
[10];
3606 params
[11] = matrix
[11];
3607 params
[12] = matrix
[12];
3608 params
[13] = matrix
[13];
3609 params
[14] = matrix
[14];
3610 params
[15] = matrix
[15];
3613 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
3614 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
3616 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
3617 params
[0] = matrix
[0];
3618 params
[1] = matrix
[4];
3619 params
[2] = matrix
[8];
3620 params
[3] = matrix
[12];
3621 params
[4] = matrix
[1];
3622 params
[5] = matrix
[5];
3623 params
[6] = matrix
[9];
3624 params
[7] = matrix
[13];
3625 params
[8] = matrix
[2];
3626 params
[9] = matrix
[6];
3627 params
[10] = matrix
[10];
3628 params
[11] = matrix
[14];
3629 params
[12] = matrix
[3];
3630 params
[13] = matrix
[7];
3631 params
[14] = matrix
[11];
3632 params
[15] = matrix
[15];
3635 case GL_MAX_VERTEX_ATTRIBS_ARB
:
3636 CHECK_EXT1(ARB_vertex_program
);
3637 params
[0] = (GLfloat
)(ctx
->Const
.VertexProgram
.MaxAttribs
);
3639 case GL_PROGRAM_ERROR_POSITION_ARB
:
3640 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
3641 params
[0] = (GLfloat
)(ctx
->Program
.ErrorPos
);
3643 case GL_FRAGMENT_PROGRAM_ARB
:
3644 CHECK_EXT1(ARB_fragment_program
);
3645 params
[0] = BOOLEAN_TO_FLOAT(ctx
->FragmentProgram
.Enabled
);
3647 case GL_MAX_TEXTURE_COORDS_ARB
:
3648 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
3649 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureCoordUnits
);
3651 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
3652 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
3653 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureImageUnits
);
3655 case GL_DEPTH_BOUNDS_TEST_EXT
:
3656 CHECK_EXT1(EXT_depth_bounds_test
);
3657 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.BoundsTest
);
3659 case GL_DEPTH_BOUNDS_EXT
:
3660 CHECK_EXT1(EXT_depth_bounds_test
);
3661 params
[0] = ctx
->Depth
.BoundsMin
;
3662 params
[1] = ctx
->Depth
.BoundsMax
;
3664 case GL_DEPTH_CLAMP
:
3665 CHECK_EXT1(ARB_depth_clamp
);
3666 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.DepthClamp
);
3668 case GL_MAX_DRAW_BUFFERS_ARB
:
3669 params
[0] = (GLfloat
)(ctx
->Const
.MaxDrawBuffers
);
3671 case GL_DRAW_BUFFER0_ARB
:
3672 params
[0] = ENUM_TO_FLOAT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
3674 case GL_DRAW_BUFFER1_ARB
:
3677 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3678 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3681 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
3682 params
[0] = ENUM_TO_FLOAT(buffer
);
3685 case GL_DRAW_BUFFER2_ARB
:
3688 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3689 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3692 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
3693 params
[0] = ENUM_TO_FLOAT(buffer
);
3696 case GL_DRAW_BUFFER3_ARB
:
3699 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3700 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3703 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
3704 params
[0] = ENUM_TO_FLOAT(buffer
);
3707 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
3708 CHECK_EXT1(OES_read_format
);
3709 if (ctx
->NewState
& _NEW_BUFFERS
)
3710 _mesa_update_state(ctx
);
3711 params
[0] = (GLfloat
)(_mesa_get_color_read_type(ctx
));
3713 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
3714 CHECK_EXT1(OES_read_format
);
3715 if (ctx
->NewState
& _NEW_BUFFERS
)
3716 _mesa_update_state(ctx
);
3717 params
[0] = (GLfloat
)(_mesa_get_color_read_format(ctx
));
3719 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
3720 CHECK_EXT1(ATI_fragment_shader
);
3721 params
[0] = (GLfloat
)(6);
3723 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
3724 CHECK_EXT1(ATI_fragment_shader
);
3725 params
[0] = (GLfloat
)(8);
3727 case GL_NUM_PASSES_ATI
:
3728 CHECK_EXT1(ATI_fragment_shader
);
3729 params
[0] = (GLfloat
)(2);
3731 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
3732 CHECK_EXT1(ATI_fragment_shader
);
3733 params
[0] = (GLfloat
)(8);
3735 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
3736 CHECK_EXT1(ATI_fragment_shader
);
3737 params
[0] = (GLfloat
)(16);
3739 case GL_COLOR_ALPHA_PAIRING_ATI
:
3740 CHECK_EXT1(ATI_fragment_shader
);
3741 params
[0] = BOOLEAN_TO_FLOAT(GL_TRUE
);
3743 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
3744 CHECK_EXT1(ATI_fragment_shader
);
3745 params
[0] = (GLfloat
)(3);
3747 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
3748 CHECK_EXT1(ATI_fragment_shader
);
3749 params
[0] = (GLfloat
)(3);
3751 case GL_STENCIL_BACK_FUNC
:
3752 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.Function
[1]);
3754 case GL_STENCIL_BACK_VALUE_MASK
:
3755 params
[0] = (GLfloat
)(ctx
->Stencil
.ValueMask
[1]);
3757 case GL_STENCIL_BACK_WRITEMASK
:
3758 params
[0] = (GLfloat
)(ctx
->Stencil
.WriteMask
[1]);
3760 case GL_STENCIL_BACK_REF
:
3761 params
[0] = (GLfloat
)(ctx
->Stencil
.Ref
[1]);
3763 case GL_STENCIL_BACK_FAIL
:
3764 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[1]);
3766 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
3767 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[1]);
3769 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
3770 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[1]);
3772 case GL_FRAMEBUFFER_BINDING_EXT
:
3773 CHECK_EXT1(EXT_framebuffer_object
);
3774 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Name
);
3776 case GL_RENDERBUFFER_BINDING_EXT
:
3777 CHECK_EXT1(EXT_framebuffer_object
);
3778 params
[0] = (GLfloat
)(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
3780 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
3781 CHECK_EXT1(EXT_framebuffer_object
);
3782 params
[0] = (GLfloat
)(ctx
->Const
.MaxColorAttachments
);
3784 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
3785 CHECK_EXT1(EXT_framebuffer_object
);
3786 params
[0] = (GLfloat
)(ctx
->Const
.MaxRenderbufferSize
);
3788 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
3789 CHECK_EXT1(EXT_framebuffer_blit
);
3790 params
[0] = (GLfloat
)(ctx
->ReadBuffer
->Name
);
3792 case GL_PROVOKING_VERTEX_EXT
:
3793 CHECK_EXT1(EXT_provoking_vertex
);
3794 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.ProvokingVertex
);
3796 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
3797 CHECK_EXT1(EXT_provoking_vertex
);
3798 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
3800 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
3801 CHECK_EXT1(ARB_fragment_shader
);
3802 params
[0] = (GLfloat
)(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
3804 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
3805 CHECK_EXT1(ARB_fragment_shader
);
3806 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.FragmentShaderDerivative
);
3808 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
3809 CHECK_EXT1(ARB_vertex_shader
);
3810 params
[0] = (GLfloat
)(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
3812 case GL_MAX_VARYING_FLOATS_ARB
:
3813 CHECK_EXT1(ARB_vertex_shader
);
3814 params
[0] = (GLfloat
)(ctx
->Const
.MaxVarying
* 4);
3816 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
3817 CHECK_EXT1(ARB_vertex_shader
);
3818 params
[0] = (GLfloat
)(ctx
->Const
.MaxVertexTextureImageUnits
);
3820 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
3821 CHECK_EXT1(ARB_vertex_shader
);
3822 params
[0] = (GLfloat
)(ctx
->Const
.MaxCombinedTextureImageUnits
);
3824 case GL_CURRENT_PROGRAM
:
3825 CHECK_EXT1(ARB_shader_objects
);
3826 params
[0] = (GLfloat
)(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
3828 case GL_MAX_SAMPLES
:
3829 CHECK_EXT1(ARB_framebuffer_object
);
3830 params
[0] = (GLfloat
)(ctx
->Const
.MaxSamples
);
3832 case GL_VERTEX_ARRAY_BINDING_APPLE
:
3833 CHECK_EXT1(APPLE_vertex_array_object
);
3834 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Name
);
3836 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
3837 CHECK_EXT1(ARB_seamless_cube_map
);
3838 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.CubeMapSeamless
);
3840 case GL_MAX_SERVER_WAIT_TIMEOUT
:
3841 CHECK_EXT1(ARB_sync
);
3842 params
[0] = (GLfloat
)(ctx
->Const
.MaxServerWaitTimeout
);
3844 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
3845 CHECK_EXT1(EXT_transform_feedback
);
3846 params
[0] = (GLfloat
)(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
3848 case GL_RASTERIZER_DISCARD
:
3849 CHECK_EXT1(EXT_transform_feedback
);
3850 params
[0] = BOOLEAN_TO_FLOAT(ctx
->TransformFeedback
.RasterDiscard
);
3852 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
3853 CHECK_EXT1(EXT_transform_feedback
);
3854 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
3856 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
3857 CHECK_EXT1(EXT_transform_feedback
);
3858 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
3860 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
3861 CHECK_EXT1(EXT_transform_feedback
);
3862 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
3864 case GL_NUM_EXTENSIONS
:
3866 params
[0] = (GLfloat
)(_mesa_get_extension_count(ctx
));
3868 case GL_MAJOR_VERSION
:
3870 params
[0] = (GLfloat
)(ctx
->VersionMajor
);
3872 case GL_MINOR_VERSION
:
3874 params
[0] = (GLfloat
)(ctx
->VersionMinor
);
3876 case GL_CONTEXT_FLAGS
:
3878 params
[0] = (GLfloat
)(ctx
->Const
.ContextFlags
);
3880 case GL_PRIMITIVE_RESTART
:
3882 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.PrimitiveRestart
);
3884 case GL_PRIMITIVE_RESTART_INDEX
:
3886 params
[0] = (GLfloat
)(ctx
->Array
.RestartIndex
);
3888 case GL_CONTEXT_PROFILE_MASK
:
3890 params
[0] = (GLfloat
)(ctx
->Const
.ProfileMask
);
3893 goto invalid_enum_error
;
3898 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv(pname=0x%x)", pname
);
3902 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3904 GET_CURRENT_CONTEXT(ctx
);
3905 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
3906 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3913 case GL_ACCUM_RED_BITS
:
3914 params
[0] = ctx
->DrawBuffer
->Visual
.accumRedBits
;
3916 case GL_ACCUM_GREEN_BITS
:
3917 params
[0] = ctx
->DrawBuffer
->Visual
.accumGreenBits
;
3919 case GL_ACCUM_BLUE_BITS
:
3920 params
[0] = ctx
->DrawBuffer
->Visual
.accumBlueBits
;
3922 case GL_ACCUM_ALPHA_BITS
:
3923 params
[0] = ctx
->DrawBuffer
->Visual
.accumAlphaBits
;
3925 case GL_ACCUM_CLEAR_VALUE
:
3926 params
[0] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[0]);
3927 params
[1] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[1]);
3928 params
[2] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[2]);
3929 params
[3] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[3]);
3932 params
[0] = IROUND(ctx
->Pixel
.AlphaBias
);
3935 if (ctx
->NewState
& _NEW_BUFFERS
)
3936 _mesa_update_state(ctx
);
3937 params
[0] = ctx
->DrawBuffer
->Visual
.alphaBits
;
3939 case GL_ALPHA_SCALE
:
3940 params
[0] = IROUND(ctx
->Pixel
.AlphaScale
);
3943 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.AlphaEnabled
);
3945 case GL_ALPHA_TEST_FUNC
:
3946 params
[0] = ENUM_TO_INT(ctx
->Color
.AlphaFunc
);
3948 case GL_ALPHA_TEST_REF
:
3949 params
[0] = FLOAT_TO_INT(ctx
->Color
.AlphaRef
);
3951 case GL_ATTRIB_STACK_DEPTH
:
3952 params
[0] = ctx
->AttribStackDepth
;
3954 case GL_AUTO_NORMAL
:
3955 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.AutoNormal
);
3957 case GL_AUX_BUFFERS
:
3958 params
[0] = ctx
->DrawBuffer
->Visual
.numAuxBuffers
;
3961 params
[0] = BOOLEAN_TO_INT((ctx
->Color
.BlendEnabled
& 1));
3964 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstRGB
);
3967 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcRGB
);
3969 case GL_BLEND_SRC_RGB_EXT
:
3970 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcRGB
);
3972 case GL_BLEND_DST_RGB_EXT
:
3973 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstRGB
);
3975 case GL_BLEND_SRC_ALPHA_EXT
:
3976 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcA
);
3978 case GL_BLEND_DST_ALPHA_EXT
:
3979 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstA
);
3981 case GL_BLEND_EQUATION
:
3982 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendEquationRGB
);
3984 case GL_BLEND_EQUATION_ALPHA_EXT
:
3985 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendEquationA
);
3987 case GL_BLEND_COLOR_EXT
:
3988 params
[0] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[0]);
3989 params
[1] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[1]);
3990 params
[2] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[2]);
3991 params
[3] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[3]);
3994 params
[0] = IROUND(ctx
->Pixel
.BlueBias
);
3997 if (ctx
->NewState
& _NEW_BUFFERS
)
3998 _mesa_update_state(ctx
);
3999 params
[0] = ctx
->DrawBuffer
->Visual
.blueBits
;
4002 params
[0] = IROUND(ctx
->Pixel
.BlueScale
);
4004 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
4005 params
[0] = ctx
->ClientAttribStackDepth
;
4007 case GL_CLIP_PLANE0
:
4008 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
4010 case GL_CLIP_PLANE1
:
4011 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
4013 case GL_CLIP_PLANE2
:
4014 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
4016 case GL_CLIP_PLANE3
:
4017 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
4019 case GL_CLIP_PLANE4
:
4020 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
4022 case GL_CLIP_PLANE5
:
4023 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
4025 case GL_COLOR_CLEAR_VALUE
:
4026 params
[0] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[0]);
4027 params
[1] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[1]);
4028 params
[2] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[2]);
4029 params
[3] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[3]);
4031 case GL_COLOR_MATERIAL
:
4032 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.ColorMaterialEnabled
);
4034 case GL_COLOR_MATERIAL_FACE
:
4035 params
[0] = ENUM_TO_INT(ctx
->Light
.ColorMaterialFace
);
4037 case GL_COLOR_MATERIAL_PARAMETER
:
4038 params
[0] = ENUM_TO_INT(ctx
->Light
.ColorMaterialMode
);
4040 case GL_COLOR_WRITEMASK
:
4041 params
[0] = ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0;
4042 params
[1] = ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0;
4043 params
[2] = ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0;
4044 params
[3] = ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0;
4047 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.CullFlag
);
4049 case GL_CULL_FACE_MODE
:
4050 params
[0] = ENUM_TO_INT(ctx
->Polygon
.CullFaceMode
);
4052 case GL_CURRENT_COLOR
:
4053 FLUSH_CURRENT(ctx
, 0);
4054 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4055 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4056 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4057 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4059 case GL_CURRENT_INDEX
:
4060 FLUSH_CURRENT(ctx
, 0);
4061 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
4063 case GL_CURRENT_NORMAL
:
4064 FLUSH_CURRENT(ctx
, 0);
4065 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4066 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4067 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4069 case GL_CURRENT_RASTER_COLOR
:
4070 params
[0] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[0]);
4071 params
[1] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[1]);
4072 params
[2] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[2]);
4073 params
[3] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[3]);
4075 case GL_CURRENT_RASTER_DISTANCE
:
4076 params
[0] = IROUND(ctx
->Current
.RasterDistance
);
4078 case GL_CURRENT_RASTER_INDEX
:
4079 params
[0] = IROUND(1.0);
4081 case GL_CURRENT_RASTER_POSITION
:
4082 params
[0] = IROUND(ctx
->Current
.RasterPos
[0]);
4083 params
[1] = IROUND(ctx
->Current
.RasterPos
[1]);
4084 params
[2] = IROUND(ctx
->Current
.RasterPos
[2]);
4085 params
[3] = IROUND(ctx
->Current
.RasterPos
[3]);
4087 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
4088 params
[0] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[0]);
4089 params
[1] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[1]);
4090 params
[2] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[2]);
4091 params
[3] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[3]);
4093 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4095 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4096 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4097 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4098 "glGet(raster tex coords, unit %u)", unit
);
4101 params
[0] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][0]);
4102 params
[1] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][1]);
4103 params
[2] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][2]);
4104 params
[3] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][3]);
4107 case GL_CURRENT_RASTER_POSITION_VALID
:
4108 params
[0] = BOOLEAN_TO_INT(ctx
->Current
.RasterPosValid
);
4110 case GL_CURRENT_TEXTURE_COORDS
:
4112 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4113 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4114 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4115 "glGet(current tex coords, unit %u)", unit
);
4118 FLUSH_CURRENT(ctx
, 0);
4119 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
4120 params
[1] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
4121 params
[2] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
4122 params
[3] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
4126 params
[0] = IROUND(ctx
->Pixel
.DepthBias
);
4129 params
[0] = ctx
->DrawBuffer
->Visual
.depthBits
;
4131 case GL_DEPTH_CLEAR_VALUE
:
4132 params
[0] = FLOAT_TO_INT(((GLfloat
) ctx
->Depth
.Clear
));
4135 params
[0] = ENUM_TO_INT(ctx
->Depth
.Func
);
4137 case GL_DEPTH_RANGE
:
4138 params
[0] = FLOAT_TO_INT(ctx
->Viewport
.Near
);
4139 params
[1] = FLOAT_TO_INT(ctx
->Viewport
.Far
);
4141 case GL_DEPTH_SCALE
:
4142 params
[0] = IROUND(ctx
->Pixel
.DepthScale
);
4145 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.Test
);
4147 case GL_DEPTH_WRITEMASK
:
4148 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.Mask
);
4151 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.DitherFlag
);
4153 case GL_DOUBLEBUFFER
:
4154 params
[0] = BOOLEAN_TO_INT(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
4156 case GL_DRAW_BUFFER
:
4157 params
[0] = ENUM_TO_INT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
4160 FLUSH_CURRENT(ctx
, 0);
4161 params
[0] = BOOLEAN_TO_INT((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
4163 case GL_FEEDBACK_BUFFER_SIZE
:
4164 params
[0] = ctx
->Feedback
.BufferSize
;
4166 case GL_FEEDBACK_BUFFER_TYPE
:
4167 params
[0] = ENUM_TO_INT(ctx
->Feedback
.Type
);
4170 params
[0] = BOOLEAN_TO_INT(ctx
->Fog
.Enabled
);
4173 params
[0] = FLOAT_TO_INT(ctx
->Fog
.Color
[0]);
4174 params
[1] = FLOAT_TO_INT(ctx
->Fog
.Color
[1]);
4175 params
[2] = FLOAT_TO_INT(ctx
->Fog
.Color
[2]);
4176 params
[3] = FLOAT_TO_INT(ctx
->Fog
.Color
[3]);
4178 case GL_FOG_DENSITY
:
4179 params
[0] = IROUND(ctx
->Fog
.Density
);
4182 params
[0] = IROUND(ctx
->Fog
.End
);
4185 params
[0] = ENUM_TO_INT(ctx
->Hint
.Fog
);
4188 params
[0] = IROUND(ctx
->Fog
.Index
);
4191 params
[0] = ENUM_TO_INT(ctx
->Fog
.Mode
);
4194 params
[0] = IROUND(ctx
->Fog
.Start
);
4197 params
[0] = ENUM_TO_INT(ctx
->Polygon
.FrontFace
);
4200 params
[0] = IROUND(ctx
->Pixel
.GreenBias
);
4203 if (ctx
->NewState
& _NEW_BUFFERS
)
4204 _mesa_update_state(ctx
);
4205 params
[0] = ctx
->DrawBuffer
->Visual
.greenBits
;
4207 case GL_GREEN_SCALE
:
4208 params
[0] = IROUND(ctx
->Pixel
.GreenScale
);
4211 if (ctx
->NewState
& _NEW_BUFFERS
)
4212 _mesa_update_state(ctx
);
4213 params
[0] = ctx
->DrawBuffer
->Visual
.indexBits
;
4215 case GL_INDEX_CLEAR_VALUE
:
4216 params
[0] = ctx
->Color
.ClearIndex
;
4219 params
[0] = BOOLEAN_TO_INT(GL_FALSE
);
4221 case GL_INDEX_OFFSET
:
4222 params
[0] = ctx
->Pixel
.IndexOffset
;
4224 case GL_INDEX_SHIFT
:
4225 params
[0] = ctx
->Pixel
.IndexShift
;
4227 case GL_INDEX_WRITEMASK
:
4228 params
[0] = ctx
->Color
.IndexMask
;
4231 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[0].Enabled
);
4234 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[1].Enabled
);
4237 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[2].Enabled
);
4240 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[3].Enabled
);
4243 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[4].Enabled
);
4246 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[5].Enabled
);
4249 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[6].Enabled
);
4252 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[7].Enabled
);
4255 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Enabled
);
4257 case GL_LIGHT_MODEL_AMBIENT
:
4258 params
[0] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[0]);
4259 params
[1] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[1]);
4260 params
[2] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[2]);
4261 params
[3] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[3]);
4263 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4264 params
[0] = ENUM_TO_INT(ctx
->Light
.Model
.ColorControl
);
4266 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4267 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Model
.LocalViewer
);
4269 case GL_LIGHT_MODEL_TWO_SIDE
:
4270 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Model
.TwoSide
);
4272 case GL_LINE_SMOOTH
:
4273 params
[0] = BOOLEAN_TO_INT(ctx
->Line
.SmoothFlag
);
4275 case GL_LINE_SMOOTH_HINT
:
4276 params
[0] = ENUM_TO_INT(ctx
->Hint
.LineSmooth
);
4278 case GL_LINE_STIPPLE
:
4279 params
[0] = BOOLEAN_TO_INT(ctx
->Line
.StippleFlag
);
4281 case GL_LINE_STIPPLE_PATTERN
:
4282 params
[0] = ctx
->Line
.StipplePattern
;
4284 case GL_LINE_STIPPLE_REPEAT
:
4285 params
[0] = ctx
->Line
.StippleFactor
;
4288 params
[0] = IROUND(ctx
->Line
.Width
);
4290 case GL_LINE_WIDTH_GRANULARITY
:
4291 params
[0] = IROUND(ctx
->Const
.LineWidthGranularity
);
4293 case GL_LINE_WIDTH_RANGE
:
4294 params
[0] = IROUND(ctx
->Const
.MinLineWidthAA
);
4295 params
[1] = IROUND(ctx
->Const
.MaxLineWidthAA
);
4297 case GL_ALIASED_LINE_WIDTH_RANGE
:
4298 params
[0] = IROUND(ctx
->Const
.MinLineWidth
);
4299 params
[1] = IROUND(ctx
->Const
.MaxLineWidth
);
4302 params
[0] = ctx
->List
.ListBase
;
4305 params
[0] = (ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0);
4310 if (!ctx
->CompileFlag
)
4312 else if (ctx
->ExecuteFlag
)
4313 mode
= GL_COMPILE_AND_EXECUTE
;
4316 params
[0] = ENUM_TO_INT(mode
);
4319 case GL_INDEX_LOGIC_OP
:
4320 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.IndexLogicOpEnabled
);
4322 case GL_COLOR_LOGIC_OP
:
4323 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.ColorLogicOpEnabled
);
4325 case GL_LOGIC_OP_MODE
:
4326 params
[0] = ENUM_TO_INT(ctx
->Color
.LogicOp
);
4328 case GL_MAP1_COLOR_4
:
4329 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Color4
);
4331 case GL_MAP1_GRID_DOMAIN
:
4332 params
[0] = IROUND(ctx
->Eval
.MapGrid1u1
);
4333 params
[1] = IROUND(ctx
->Eval
.MapGrid1u2
);
4335 case GL_MAP1_GRID_SEGMENTS
:
4336 params
[0] = ctx
->Eval
.MapGrid1un
;
4339 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Index
);
4341 case GL_MAP1_NORMAL
:
4342 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Normal
);
4344 case GL_MAP1_TEXTURE_COORD_1
:
4345 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord1
);
4347 case GL_MAP1_TEXTURE_COORD_2
:
4348 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord2
);
4350 case GL_MAP1_TEXTURE_COORD_3
:
4351 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord3
);
4353 case GL_MAP1_TEXTURE_COORD_4
:
4354 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord4
);
4356 case GL_MAP1_VERTEX_3
:
4357 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Vertex3
);
4359 case GL_MAP1_VERTEX_4
:
4360 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Vertex4
);
4362 case GL_MAP2_COLOR_4
:
4363 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Color4
);
4365 case GL_MAP2_GRID_DOMAIN
:
4366 params
[0] = IROUND(ctx
->Eval
.MapGrid2u1
);
4367 params
[1] = IROUND(ctx
->Eval
.MapGrid2u2
);
4368 params
[2] = IROUND(ctx
->Eval
.MapGrid2v1
);
4369 params
[3] = IROUND(ctx
->Eval
.MapGrid2v2
);
4371 case GL_MAP2_GRID_SEGMENTS
:
4372 params
[0] = ctx
->Eval
.MapGrid2un
;
4373 params
[1] = ctx
->Eval
.MapGrid2vn
;
4376 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Index
);
4378 case GL_MAP2_NORMAL
:
4379 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Normal
);
4381 case GL_MAP2_TEXTURE_COORD_1
:
4382 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord1
);
4384 case GL_MAP2_TEXTURE_COORD_2
:
4385 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord2
);
4387 case GL_MAP2_TEXTURE_COORD_3
:
4388 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord3
);
4390 case GL_MAP2_TEXTURE_COORD_4
:
4391 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord4
);
4393 case GL_MAP2_VERTEX_3
:
4394 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Vertex3
);
4396 case GL_MAP2_VERTEX_4
:
4397 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Vertex4
);
4400 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MapColorFlag
);
4402 case GL_MAP_STENCIL
:
4403 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MapStencilFlag
);
4405 case GL_MATRIX_MODE
:
4406 params
[0] = ENUM_TO_INT(ctx
->Transform
.MatrixMode
);
4408 case GL_MAX_ATTRIB_STACK_DEPTH
:
4409 params
[0] = MAX_ATTRIB_STACK_DEPTH
;
4411 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4412 params
[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4414 case GL_MAX_CLIP_PLANES
:
4415 params
[0] = ctx
->Const
.MaxClipPlanes
;
4417 case GL_MAX_ELEMENTS_VERTICES
:
4418 params
[0] = ctx
->Const
.MaxArrayLockSize
;
4420 case GL_MAX_ELEMENTS_INDICES
:
4421 params
[0] = ctx
->Const
.MaxArrayLockSize
;
4423 case GL_MAX_EVAL_ORDER
:
4424 params
[0] = MAX_EVAL_ORDER
;
4427 params
[0] = ctx
->Const
.MaxLights
;
4429 case GL_MAX_LIST_NESTING
:
4430 params
[0] = MAX_LIST_NESTING
;
4432 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4433 params
[0] = MAX_MODELVIEW_STACK_DEPTH
;
4435 case GL_MAX_NAME_STACK_DEPTH
:
4436 params
[0] = MAX_NAME_STACK_DEPTH
;
4438 case GL_MAX_PIXEL_MAP_TABLE
:
4439 params
[0] = MAX_PIXEL_MAP_TABLE
;
4441 case GL_MAX_PROJECTION_STACK_DEPTH
:
4442 params
[0] = MAX_PROJECTION_STACK_DEPTH
;
4444 case GL_MAX_TEXTURE_SIZE
:
4445 params
[0] = 1 << (ctx
->Const
.MaxTextureLevels
- 1);
4447 case GL_MAX_3D_TEXTURE_SIZE
:
4448 params
[0] = 1 << (ctx
->Const
.Max3DTextureLevels
- 1);
4450 case GL_MAX_TEXTURE_STACK_DEPTH
:
4451 params
[0] = MAX_TEXTURE_STACK_DEPTH
;
4453 case GL_MAX_VIEWPORT_DIMS
:
4454 params
[0] = ctx
->Const
.MaxViewportWidth
;
4455 params
[1] = ctx
->Const
.MaxViewportHeight
;
4457 case GL_MODELVIEW_MATRIX
:
4459 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
4460 params
[0] = IROUND(matrix
[0]);
4461 params
[1] = IROUND(matrix
[1]);
4462 params
[2] = IROUND(matrix
[2]);
4463 params
[3] = IROUND(matrix
[3]);
4464 params
[4] = IROUND(matrix
[4]);
4465 params
[5] = IROUND(matrix
[5]);
4466 params
[6] = IROUND(matrix
[6]);
4467 params
[7] = IROUND(matrix
[7]);
4468 params
[8] = IROUND(matrix
[8]);
4469 params
[9] = IROUND(matrix
[9]);
4470 params
[10] = IROUND(matrix
[10]);
4471 params
[11] = IROUND(matrix
[11]);
4472 params
[12] = IROUND(matrix
[12]);
4473 params
[13] = IROUND(matrix
[13]);
4474 params
[14] = IROUND(matrix
[14]);
4475 params
[15] = IROUND(matrix
[15]);
4478 case GL_MODELVIEW_STACK_DEPTH
:
4479 params
[0] = ctx
->ModelviewMatrixStack
.Depth
+ 1;
4481 case GL_NAME_STACK_DEPTH
:
4482 params
[0] = ctx
->Select
.NameStackDepth
;
4485 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.Normalize
);
4487 case GL_PACK_ALIGNMENT
:
4488 params
[0] = ctx
->Pack
.Alignment
;
4490 case GL_PACK_LSB_FIRST
:
4491 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.LsbFirst
);
4493 case GL_PACK_ROW_LENGTH
:
4494 params
[0] = ctx
->Pack
.RowLength
;
4496 case GL_PACK_SKIP_PIXELS
:
4497 params
[0] = ctx
->Pack
.SkipPixels
;
4499 case GL_PACK_SKIP_ROWS
:
4500 params
[0] = ctx
->Pack
.SkipRows
;
4502 case GL_PACK_SWAP_BYTES
:
4503 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.SwapBytes
);
4505 case GL_PACK_SKIP_IMAGES_EXT
:
4506 params
[0] = ctx
->Pack
.SkipImages
;
4508 case GL_PACK_IMAGE_HEIGHT_EXT
:
4509 params
[0] = ctx
->Pack
.ImageHeight
;
4511 case GL_PACK_INVERT_MESA
:
4512 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.Invert
);
4514 case GL_PERSPECTIVE_CORRECTION_HINT
:
4515 params
[0] = ENUM_TO_INT(ctx
->Hint
.PerspectiveCorrection
);
4517 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4518 params
[0] = ctx
->PixelMaps
.AtoA
.Size
;
4520 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4521 params
[0] = ctx
->PixelMaps
.BtoB
.Size
;
4523 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4524 params
[0] = ctx
->PixelMaps
.GtoG
.Size
;
4526 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4527 params
[0] = ctx
->PixelMaps
.ItoA
.Size
;
4529 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4530 params
[0] = ctx
->PixelMaps
.ItoB
.Size
;
4532 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4533 params
[0] = ctx
->PixelMaps
.ItoG
.Size
;
4535 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4536 params
[0] = ctx
->PixelMaps
.ItoI
.Size
;
4538 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4539 params
[0] = ctx
->PixelMaps
.ItoR
.Size
;
4541 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4542 params
[0] = ctx
->PixelMaps
.RtoR
.Size
;
4544 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4545 params
[0] = ctx
->PixelMaps
.StoS
.Size
;
4548 params
[0] = IROUND(ctx
->Point
.Size
);
4550 case GL_POINT_SIZE_GRANULARITY
:
4551 params
[0] = IROUND(ctx
->Const
.PointSizeGranularity
);
4553 case GL_POINT_SIZE_RANGE
:
4554 params
[0] = IROUND(ctx
->Const
.MinPointSizeAA
);
4555 params
[1] = IROUND(ctx
->Const
.MaxPointSizeAA
);
4557 case GL_ALIASED_POINT_SIZE_RANGE
:
4558 params
[0] = IROUND(ctx
->Const
.MinPointSize
);
4559 params
[1] = IROUND(ctx
->Const
.MaxPointSize
);
4561 case GL_POINT_SMOOTH
:
4562 params
[0] = BOOLEAN_TO_INT(ctx
->Point
.SmoothFlag
);
4564 case GL_POINT_SMOOTH_HINT
:
4565 params
[0] = ENUM_TO_INT(ctx
->Hint
.PointSmooth
);
4567 case GL_POINT_SIZE_MIN_EXT
:
4568 params
[0] = IROUND(ctx
->Point
.MinSize
);
4570 case GL_POINT_SIZE_MAX_EXT
:
4571 params
[0] = IROUND(ctx
->Point
.MaxSize
);
4573 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4574 params
[0] = IROUND(ctx
->Point
.Threshold
);
4576 case GL_DISTANCE_ATTENUATION_EXT
:
4577 params
[0] = IROUND(ctx
->Point
.Params
[0]);
4578 params
[1] = IROUND(ctx
->Point
.Params
[1]);
4579 params
[2] = IROUND(ctx
->Point
.Params
[2]);
4581 case GL_POLYGON_MODE
:
4582 params
[0] = ENUM_TO_INT(ctx
->Polygon
.FrontMode
);
4583 params
[1] = ENUM_TO_INT(ctx
->Polygon
.BackMode
);
4585 case GL_POLYGON_OFFSET_BIAS_EXT
:
4586 params
[0] = IROUND(ctx
->Polygon
.OffsetUnits
);
4588 case GL_POLYGON_OFFSET_FACTOR
:
4589 params
[0] = IROUND(ctx
->Polygon
.OffsetFactor
);
4591 case GL_POLYGON_OFFSET_UNITS
:
4592 params
[0] = IROUND(ctx
->Polygon
.OffsetUnits
);
4594 case GL_POLYGON_OFFSET_POINT
:
4595 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetPoint
);
4597 case GL_POLYGON_OFFSET_LINE
:
4598 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetLine
);
4600 case GL_POLYGON_OFFSET_FILL
:
4601 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetFill
);
4603 case GL_POLYGON_SMOOTH
:
4604 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.SmoothFlag
);
4606 case GL_POLYGON_SMOOTH_HINT
:
4607 params
[0] = ENUM_TO_INT(ctx
->Hint
.PolygonSmooth
);
4609 case GL_POLYGON_STIPPLE
:
4610 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.StippleFlag
);
4612 case GL_PROJECTION_MATRIX
:
4614 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
4615 params
[0] = IROUND(matrix
[0]);
4616 params
[1] = IROUND(matrix
[1]);
4617 params
[2] = IROUND(matrix
[2]);
4618 params
[3] = IROUND(matrix
[3]);
4619 params
[4] = IROUND(matrix
[4]);
4620 params
[5] = IROUND(matrix
[5]);
4621 params
[6] = IROUND(matrix
[6]);
4622 params
[7] = IROUND(matrix
[7]);
4623 params
[8] = IROUND(matrix
[8]);
4624 params
[9] = IROUND(matrix
[9]);
4625 params
[10] = IROUND(matrix
[10]);
4626 params
[11] = IROUND(matrix
[11]);
4627 params
[12] = IROUND(matrix
[12]);
4628 params
[13] = IROUND(matrix
[13]);
4629 params
[14] = IROUND(matrix
[14]);
4630 params
[15] = IROUND(matrix
[15]);
4633 case GL_PROJECTION_STACK_DEPTH
:
4634 params
[0] = ctx
->ProjectionMatrixStack
.Depth
+ 1;
4636 case GL_READ_BUFFER
:
4637 params
[0] = ENUM_TO_INT(ctx
->ReadBuffer
->ColorReadBuffer
);
4640 params
[0] = IROUND(ctx
->Pixel
.RedBias
);
4643 if (ctx
->NewState
& _NEW_BUFFERS
)
4644 _mesa_update_state(ctx
);
4645 params
[0] = ctx
->DrawBuffer
->Visual
.redBits
;
4648 params
[0] = IROUND(ctx
->Pixel
.RedScale
);
4650 case GL_RENDER_MODE
:
4651 params
[0] = ENUM_TO_INT(ctx
->RenderMode
);
4653 case GL_RESCALE_NORMAL
:
4654 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.RescaleNormals
);
4657 params
[0] = BOOLEAN_TO_INT(GL_TRUE
);
4659 case GL_SCISSOR_BOX
:
4660 params
[0] = ctx
->Scissor
.X
;
4661 params
[1] = ctx
->Scissor
.Y
;
4662 params
[2] = ctx
->Scissor
.Width
;
4663 params
[3] = ctx
->Scissor
.Height
;
4665 case GL_SCISSOR_TEST
:
4666 params
[0] = BOOLEAN_TO_INT(ctx
->Scissor
.Enabled
);
4668 case GL_SELECTION_BUFFER_SIZE
:
4669 params
[0] = ctx
->Select
.BufferSize
;
4671 case GL_SHADE_MODEL
:
4672 params
[0] = ENUM_TO_INT(ctx
->Light
.ShadeModel
);
4674 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4675 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.SharedPalette
);
4677 case GL_STENCIL_BITS
:
4678 params
[0] = ctx
->DrawBuffer
->Visual
.stencilBits
;
4680 case GL_STENCIL_CLEAR_VALUE
:
4681 params
[0] = ctx
->Stencil
.Clear
;
4683 case GL_STENCIL_FAIL
:
4684 params
[0] = ENUM_TO_INT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
4686 case GL_STENCIL_FUNC
:
4687 params
[0] = ENUM_TO_INT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
4689 case GL_STENCIL_PASS_DEPTH_FAIL
:
4690 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
4692 case GL_STENCIL_PASS_DEPTH_PASS
:
4693 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
4695 case GL_STENCIL_REF
:
4696 params
[0] = ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
4698 case GL_STENCIL_TEST
:
4699 params
[0] = BOOLEAN_TO_INT(ctx
->Stencil
.Enabled
);
4701 case GL_STENCIL_VALUE_MASK
:
4702 params
[0] = ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
4704 case GL_STENCIL_WRITEMASK
:
4705 params
[0] = ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
4708 params
[0] = BOOLEAN_TO_INT(ctx
->DrawBuffer
->Visual
.stereoMode
);
4710 case GL_SUBPIXEL_BITS
:
4711 params
[0] = ctx
->Const
.SubPixelBits
;
4714 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D
));
4717 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D
));
4720 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D
));
4722 case GL_TEXTURE_1D_ARRAY_EXT
:
4723 CHECK_EXT1(MESA_texture_array
);
4724 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
4726 case GL_TEXTURE_2D_ARRAY_EXT
:
4727 CHECK_EXT1(MESA_texture_array
);
4728 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
4730 case GL_TEXTURE_BINDING_1D
:
4731 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
;
4733 case GL_TEXTURE_BINDING_2D
:
4734 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
;
4736 case GL_TEXTURE_BINDING_3D
:
4737 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
;
4739 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
4740 CHECK_EXT1(MESA_texture_array
);
4741 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
;
4743 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
4744 CHECK_EXT1(MESA_texture_array
);
4745 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
;
4747 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
4748 CHECK_EXT1(MESA_texture_array
);
4749 params
[0] = ctx
->Const
.MaxArrayTextureLayers
;
4751 case GL_TEXTURE_GEN_S
:
4752 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
4754 case GL_TEXTURE_GEN_T
:
4755 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
4757 case GL_TEXTURE_GEN_R
:
4758 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
4760 case GL_TEXTURE_GEN_Q
:
4761 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
4763 case GL_TEXTURE_MATRIX
:
4765 const GLfloat
*matrix
;
4766 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4767 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4768 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
4772 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
4773 params
[0] = IROUND(matrix
[0]);
4774 params
[1] = IROUND(matrix
[1]);
4775 params
[2] = IROUND(matrix
[2]);
4776 params
[3] = IROUND(matrix
[3]);
4777 params
[4] = IROUND(matrix
[4]);
4778 params
[5] = IROUND(matrix
[5]);
4779 params
[6] = IROUND(matrix
[6]);
4780 params
[7] = IROUND(matrix
[7]);
4781 params
[8] = IROUND(matrix
[8]);
4782 params
[9] = IROUND(matrix
[9]);
4783 params
[10] = IROUND(matrix
[10]);
4784 params
[11] = IROUND(matrix
[11]);
4785 params
[12] = IROUND(matrix
[12]);
4786 params
[13] = IROUND(matrix
[13]);
4787 params
[14] = IROUND(matrix
[14]);
4788 params
[15] = IROUND(matrix
[15]);
4791 case GL_TEXTURE_STACK_DEPTH
:
4793 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4794 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4795 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4796 "glGet(texture stack depth, unit %u)", unit
);
4799 params
[0] = ctx
->TextureMatrixStack
[unit
].Depth
+ 1;
4802 case GL_UNPACK_ALIGNMENT
:
4803 params
[0] = ctx
->Unpack
.Alignment
;
4805 case GL_UNPACK_LSB_FIRST
:
4806 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.LsbFirst
);
4808 case GL_UNPACK_ROW_LENGTH
:
4809 params
[0] = ctx
->Unpack
.RowLength
;
4811 case GL_UNPACK_SKIP_PIXELS
:
4812 params
[0] = ctx
->Unpack
.SkipPixels
;
4814 case GL_UNPACK_SKIP_ROWS
:
4815 params
[0] = ctx
->Unpack
.SkipRows
;
4817 case GL_UNPACK_SWAP_BYTES
:
4818 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.SwapBytes
);
4820 case GL_UNPACK_SKIP_IMAGES_EXT
:
4821 params
[0] = ctx
->Unpack
.SkipImages
;
4823 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4824 params
[0] = ctx
->Unpack
.ImageHeight
;
4826 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
4827 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.ClientStorage
);
4830 params
[0] = ctx
->Viewport
.X
;
4831 params
[1] = ctx
->Viewport
.Y
;
4832 params
[2] = ctx
->Viewport
.Width
;
4833 params
[3] = ctx
->Viewport
.Height
;
4836 params
[0] = IROUND(ctx
->Pixel
.ZoomX
);
4839 params
[0] = IROUND(ctx
->Pixel
.ZoomY
);
4841 case GL_VERTEX_ARRAY
:
4842 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
4844 case GL_VERTEX_ARRAY_SIZE
:
4845 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Size
;
4847 case GL_VERTEX_ARRAY_TYPE
:
4848 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Vertex
.Type
);
4850 case GL_VERTEX_ARRAY_STRIDE
:
4851 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Stride
;
4853 case GL_VERTEX_ARRAY_COUNT_EXT
:
4856 case GL_NORMAL_ARRAY
:
4857 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
4859 case GL_NORMAL_ARRAY_TYPE
:
4860 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Normal
.Type
);
4862 case GL_NORMAL_ARRAY_STRIDE
:
4863 params
[0] = ctx
->Array
.ArrayObj
->Normal
.Stride
;
4865 case GL_NORMAL_ARRAY_COUNT_EXT
:
4868 case GL_COLOR_ARRAY
:
4869 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Color
.Enabled
);
4871 case GL_COLOR_ARRAY_SIZE
:
4872 params
[0] = ctx
->Array
.ArrayObj
->Color
.Size
;
4874 case GL_COLOR_ARRAY_TYPE
:
4875 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Color
.Type
);
4877 case GL_COLOR_ARRAY_STRIDE
:
4878 params
[0] = ctx
->Array
.ArrayObj
->Color
.Stride
;
4880 case GL_COLOR_ARRAY_COUNT_EXT
:
4883 case GL_INDEX_ARRAY
:
4884 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Index
.Enabled
);
4886 case GL_INDEX_ARRAY_TYPE
:
4887 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Index
.Type
);
4889 case GL_INDEX_ARRAY_STRIDE
:
4890 params
[0] = ctx
->Array
.ArrayObj
->Index
.Stride
;
4892 case GL_INDEX_ARRAY_COUNT_EXT
:
4895 case GL_TEXTURE_COORD_ARRAY
:
4896 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
4898 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4899 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
;
4901 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4902 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
4904 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4905 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
;
4907 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4910 case GL_EDGE_FLAG_ARRAY
:
4911 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
4913 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4914 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
;
4916 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4919 case GL_MAX_TEXTURE_UNITS_ARB
:
4920 CHECK_EXT1(ARB_multitexture
);
4921 params
[0] = ctx
->Const
.MaxTextureUnits
;
4923 case GL_ACTIVE_TEXTURE_ARB
:
4924 CHECK_EXT1(ARB_multitexture
);
4925 params
[0] = GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4927 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4928 CHECK_EXT1(ARB_multitexture
);
4929 params
[0] = GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4931 case GL_TEXTURE_CUBE_MAP_ARB
:
4932 CHECK_EXT1(ARB_texture_cube_map
);
4933 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
4935 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4936 CHECK_EXT1(ARB_texture_cube_map
);
4937 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
;
4939 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4940 CHECK_EXT1(ARB_texture_cube_map
);
4941 params
[0] = (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
4943 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4944 params
[0] = ctx
->Hint
.TextureCompression
;
4946 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4947 params
[0] = _mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
);
4949 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4952 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
4954 for (i
= 0; i
< n
; i
++)
4955 params
[i
] = ENUM_TO_INT(formats
[i
]);
4958 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4959 CHECK_EXT1(EXT_compiled_vertex_array
);
4960 params
[0] = ctx
->Array
.LockFirst
;
4962 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4963 CHECK_EXT1(EXT_compiled_vertex_array
);
4964 params
[0] = ctx
->Array
.LockCount
;
4966 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4968 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
4969 params
[0] = IROUND(matrix
[0]);
4970 params
[1] = IROUND(matrix
[4]);
4971 params
[2] = IROUND(matrix
[8]);
4972 params
[3] = IROUND(matrix
[12]);
4973 params
[4] = IROUND(matrix
[1]);
4974 params
[5] = IROUND(matrix
[5]);
4975 params
[6] = IROUND(matrix
[9]);
4976 params
[7] = IROUND(matrix
[13]);
4977 params
[8] = IROUND(matrix
[2]);
4978 params
[9] = IROUND(matrix
[6]);
4979 params
[10] = IROUND(matrix
[10]);
4980 params
[11] = IROUND(matrix
[14]);
4981 params
[12] = IROUND(matrix
[3]);
4982 params
[13] = IROUND(matrix
[7]);
4983 params
[14] = IROUND(matrix
[11]);
4984 params
[15] = IROUND(matrix
[15]);
4987 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
4989 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
4990 params
[0] = IROUND(matrix
[0]);
4991 params
[1] = IROUND(matrix
[4]);
4992 params
[2] = IROUND(matrix
[8]);
4993 params
[3] = IROUND(matrix
[12]);
4994 params
[4] = IROUND(matrix
[1]);
4995 params
[5] = IROUND(matrix
[5]);
4996 params
[6] = IROUND(matrix
[9]);
4997 params
[7] = IROUND(matrix
[13]);
4998 params
[8] = IROUND(matrix
[2]);
4999 params
[9] = IROUND(matrix
[6]);
5000 params
[10] = IROUND(matrix
[10]);
5001 params
[11] = IROUND(matrix
[14]);
5002 params
[12] = IROUND(matrix
[3]);
5003 params
[13] = IROUND(matrix
[7]);
5004 params
[14] = IROUND(matrix
[11]);
5005 params
[15] = IROUND(matrix
[15]);
5008 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
5010 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
5011 params
[0] = IROUND(matrix
[0]);
5012 params
[1] = IROUND(matrix
[4]);
5013 params
[2] = IROUND(matrix
[8]);
5014 params
[3] = IROUND(matrix
[12]);
5015 params
[4] = IROUND(matrix
[1]);
5016 params
[5] = IROUND(matrix
[5]);
5017 params
[6] = IROUND(matrix
[9]);
5018 params
[7] = IROUND(matrix
[13]);
5019 params
[8] = IROUND(matrix
[2]);
5020 params
[9] = IROUND(matrix
[6]);
5021 params
[10] = IROUND(matrix
[10]);
5022 params
[11] = IROUND(matrix
[14]);
5023 params
[12] = IROUND(matrix
[3]);
5024 params
[13] = IROUND(matrix
[7]);
5025 params
[14] = IROUND(matrix
[11]);
5026 params
[15] = IROUND(matrix
[15]);
5029 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
5031 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
5032 params
[0] = IROUND(matrix
[0]);
5033 params
[1] = IROUND(matrix
[4]);
5034 params
[2] = IROUND(matrix
[8]);
5035 params
[3] = IROUND(matrix
[12]);
5036 params
[4] = IROUND(matrix
[1]);
5037 params
[5] = IROUND(matrix
[5]);
5038 params
[6] = IROUND(matrix
[9]);
5039 params
[7] = IROUND(matrix
[13]);
5040 params
[8] = IROUND(matrix
[2]);
5041 params
[9] = IROUND(matrix
[6]);
5042 params
[10] = IROUND(matrix
[10]);
5043 params
[11] = IROUND(matrix
[14]);
5044 params
[12] = IROUND(matrix
[3]);
5045 params
[13] = IROUND(matrix
[7]);
5046 params
[14] = IROUND(matrix
[11]);
5047 params
[15] = IROUND(matrix
[15]);
5050 case GL_COLOR_MATRIX_SGI
:
5052 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
5053 params
[0] = IROUND(matrix
[0]);
5054 params
[1] = IROUND(matrix
[1]);
5055 params
[2] = IROUND(matrix
[2]);
5056 params
[3] = IROUND(matrix
[3]);
5057 params
[4] = IROUND(matrix
[4]);
5058 params
[5] = IROUND(matrix
[5]);
5059 params
[6] = IROUND(matrix
[6]);
5060 params
[7] = IROUND(matrix
[7]);
5061 params
[8] = IROUND(matrix
[8]);
5062 params
[9] = IROUND(matrix
[9]);
5063 params
[10] = IROUND(matrix
[10]);
5064 params
[11] = IROUND(matrix
[11]);
5065 params
[12] = IROUND(matrix
[12]);
5066 params
[13] = IROUND(matrix
[13]);
5067 params
[14] = IROUND(matrix
[14]);
5068 params
[15] = IROUND(matrix
[15]);
5071 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5072 params
[0] = ctx
->ColorMatrixStack
.Depth
+ 1;
5074 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5075 params
[0] = MAX_COLOR_STACK_DEPTH
;
5077 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5078 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[0]);
5080 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5081 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[1]);
5083 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5084 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[2]);
5086 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5087 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[3]);
5089 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5090 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[0]);
5092 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5093 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[1]);
5095 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5096 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[2]);
5098 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5099 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[3]);
5101 case GL_CONVOLUTION_1D_EXT
:
5102 CHECK_EXT1(EXT_convolution
);
5103 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Convolution1DEnabled
);
5105 case GL_CONVOLUTION_2D_EXT
:
5106 CHECK_EXT1(EXT_convolution
);
5107 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Convolution2DEnabled
);
5109 case GL_SEPARABLE_2D_EXT
:
5110 CHECK_EXT1(EXT_convolution
);
5111 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Separable2DEnabled
);
5113 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5114 CHECK_EXT1(EXT_convolution
);
5115 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[0]);
5117 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5118 CHECK_EXT1(EXT_convolution
);
5119 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[1]);
5121 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5122 CHECK_EXT1(EXT_convolution
);
5123 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[2]);
5125 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5126 CHECK_EXT1(EXT_convolution
);
5127 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[3]);
5129 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5130 CHECK_EXT1(EXT_convolution
);
5131 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[0]);
5133 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5134 CHECK_EXT1(EXT_convolution
);
5135 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[1]);
5137 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5138 CHECK_EXT1(EXT_convolution
);
5139 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[2]);
5141 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5142 CHECK_EXT1(EXT_convolution
);
5143 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[3]);
5146 CHECK_EXT1(EXT_histogram
);
5147 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.HistogramEnabled
);
5150 CHECK_EXT1(EXT_histogram
);
5151 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MinMaxEnabled
);
5153 case GL_COLOR_TABLE_SGI
:
5154 CHECK_EXT1(SGI_color_table
);
5155 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
5157 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5158 CHECK_EXT1(SGI_color_table
);
5159 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
5161 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5162 CHECK_EXT1(SGI_color_table
);
5163 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
5165 case GL_TEXTURE_COLOR_TABLE_SGI
:
5166 CHECK_EXT1(SGI_texture_color_table
);
5167 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
5169 case GL_COLOR_SUM_EXT
:
5170 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
5171 params
[0] = BOOLEAN_TO_INT(ctx
->Fog
.ColorSumEnabled
);
5173 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5174 CHECK_EXT1(EXT_secondary_color
);
5175 FLUSH_CURRENT(ctx
, 0);
5176 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
5177 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
5178 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
5179 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
5181 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5182 CHECK_EXT1(EXT_secondary_color
);
5183 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
5185 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5186 CHECK_EXT1(EXT_secondary_color
);
5187 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
5189 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5190 CHECK_EXT1(EXT_secondary_color
);
5191 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
;
5193 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5194 CHECK_EXT1(EXT_secondary_color
);
5195 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Size
;
5197 case GL_CURRENT_FOG_COORDINATE_EXT
:
5198 CHECK_EXT1(EXT_fog_coord
);
5199 FLUSH_CURRENT(ctx
, 0);
5200 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
5202 case GL_FOG_COORDINATE_ARRAY_EXT
:
5203 CHECK_EXT1(EXT_fog_coord
);
5204 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
5206 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5207 CHECK_EXT1(EXT_fog_coord
);
5208 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
5210 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5211 CHECK_EXT1(EXT_fog_coord
);
5212 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.Stride
;
5214 case GL_FOG_COORDINATE_SOURCE_EXT
:
5215 CHECK_EXT1(EXT_fog_coord
);
5216 params
[0] = ENUM_TO_INT(ctx
->Fog
.FogCoordinateSource
);
5218 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5219 CHECK_EXT1(EXT_texture_lod_bias
);
5220 params
[0] = IROUND(ctx
->Const
.MaxTextureLodBias
);
5222 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5223 CHECK_EXT1(EXT_texture_filter_anisotropic
);
5224 params
[0] = IROUND(ctx
->Const
.MaxTextureMaxAnisotropy
);
5226 case GL_MULTISAMPLE_ARB
:
5227 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.Enabled
);
5229 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5230 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleAlphaToCoverage
);
5232 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5233 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleAlphaToOne
);
5235 case GL_SAMPLE_COVERAGE_ARB
:
5236 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleCoverage
);
5238 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5239 params
[0] = IROUND(ctx
->Multisample
.SampleCoverageValue
);
5241 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5242 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleCoverageInvert
);
5244 case GL_SAMPLE_BUFFERS_ARB
:
5245 params
[0] = ctx
->DrawBuffer
->Visual
.sampleBuffers
;
5247 case GL_SAMPLES_ARB
:
5248 params
[0] = ctx
->DrawBuffer
->Visual
.samples
;
5250 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5251 CHECK_EXT1(IBM_rasterpos_clip
);
5252 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.RasterPositionUnclipped
);
5254 case GL_POINT_SPRITE_NV
:
5255 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
5256 params
[0] = BOOLEAN_TO_INT(ctx
->Point
.PointSprite
);
5258 case GL_POINT_SPRITE_R_MODE_NV
:
5259 CHECK_EXT1(NV_point_sprite
);
5260 params
[0] = ENUM_TO_INT(ctx
->Point
.SpriteRMode
);
5262 case GL_POINT_SPRITE_COORD_ORIGIN
:
5263 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
5264 params
[0] = ENUM_TO_INT(ctx
->Point
.SpriteOrigin
);
5266 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5267 CHECK_EXT1(SGIS_generate_mipmap
);
5268 params
[0] = ENUM_TO_INT(ctx
->Hint
.GenerateMipmap
);
5270 case GL_VERTEX_PROGRAM_BINDING_NV
:
5271 CHECK_EXT1(NV_vertex_program
);
5272 params
[0] = (ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0);
5274 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
5275 CHECK_EXT1(NV_vertex_program
);
5276 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
5278 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
5279 CHECK_EXT1(NV_vertex_program
);
5280 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
5282 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
5283 CHECK_EXT1(NV_vertex_program
);
5284 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
5286 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
5287 CHECK_EXT1(NV_vertex_program
);
5288 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
5290 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
5291 CHECK_EXT1(NV_vertex_program
);
5292 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
5294 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
5295 CHECK_EXT1(NV_vertex_program
);
5296 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
5298 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
5299 CHECK_EXT1(NV_vertex_program
);
5300 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
5302 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
5303 CHECK_EXT1(NV_vertex_program
);
5304 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
5306 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
5307 CHECK_EXT1(NV_vertex_program
);
5308 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
5310 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
5311 CHECK_EXT1(NV_vertex_program
);
5312 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
5314 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
5315 CHECK_EXT1(NV_vertex_program
);
5316 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
5318 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
5319 CHECK_EXT1(NV_vertex_program
);
5320 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
5322 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
5323 CHECK_EXT1(NV_vertex_program
);
5324 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
5326 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
5327 CHECK_EXT1(NV_vertex_program
);
5328 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
5330 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
5331 CHECK_EXT1(NV_vertex_program
);
5332 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
5334 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
5335 CHECK_EXT1(NV_vertex_program
);
5336 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
5338 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
5339 CHECK_EXT1(NV_vertex_program
);
5340 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[0]);
5342 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
5343 CHECK_EXT1(NV_vertex_program
);
5344 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[1]);
5346 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
5347 CHECK_EXT1(NV_vertex_program
);
5348 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[2]);
5350 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
5351 CHECK_EXT1(NV_vertex_program
);
5352 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[3]);
5354 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
5355 CHECK_EXT1(NV_vertex_program
);
5356 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[4]);
5358 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
5359 CHECK_EXT1(NV_vertex_program
);
5360 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[5]);
5362 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
5363 CHECK_EXT1(NV_vertex_program
);
5364 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[6]);
5366 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
5367 CHECK_EXT1(NV_vertex_program
);
5368 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[7]);
5370 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
5371 CHECK_EXT1(NV_vertex_program
);
5372 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[8]);
5374 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
5375 CHECK_EXT1(NV_vertex_program
);
5376 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[9]);
5378 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
5379 CHECK_EXT1(NV_vertex_program
);
5380 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[10]);
5382 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
5383 CHECK_EXT1(NV_vertex_program
);
5384 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[11]);
5386 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
5387 CHECK_EXT1(NV_vertex_program
);
5388 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[12]);
5390 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
5391 CHECK_EXT1(NV_vertex_program
);
5392 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[13]);
5394 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
5395 CHECK_EXT1(NV_vertex_program
);
5396 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[14]);
5398 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
5399 CHECK_EXT1(NV_vertex_program
);
5400 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[15]);
5402 case GL_FRAGMENT_PROGRAM_NV
:
5403 CHECK_EXT1(NV_fragment_program
);
5404 params
[0] = BOOLEAN_TO_INT(ctx
->FragmentProgram
.Enabled
);
5406 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
5407 CHECK_EXT1(NV_fragment_program
);
5408 params
[0] = ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0;
5410 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
5411 CHECK_EXT1(NV_fragment_program
);
5412 params
[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
5414 case GL_TEXTURE_RECTANGLE_NV
:
5415 CHECK_EXT1(NV_texture_rectangle
);
5416 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
5418 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
5419 CHECK_EXT1(NV_texture_rectangle
);
5420 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
;
5422 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
5423 CHECK_EXT1(NV_texture_rectangle
);
5424 params
[0] = ctx
->Const
.MaxTextureRectSize
;
5426 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
5427 CHECK_EXT1(EXT_stencil_two_side
);
5428 params
[0] = BOOLEAN_TO_INT(ctx
->Stencil
.TestTwoSide
);
5430 case GL_ACTIVE_STENCIL_FACE_EXT
:
5431 CHECK_EXT1(EXT_stencil_two_side
);
5432 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
5434 case GL_MAX_SHININESS_NV
:
5435 CHECK_EXT1(NV_light_max_exponent
);
5436 params
[0] = IROUND(ctx
->Const
.MaxShininess
);
5438 case GL_MAX_SPOT_EXPONENT_NV
:
5439 CHECK_EXT1(NV_light_max_exponent
);
5440 params
[0] = IROUND(ctx
->Const
.MaxSpotExponent
);
5442 case GL_ARRAY_BUFFER_BINDING_ARB
:
5443 params
[0] = ctx
->Array
.ArrayBufferObj
->Name
;
5445 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
5446 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
;
5448 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
5449 params
[0] = ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
;
5451 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
5452 params
[0] = ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
;
5454 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
5455 params
[0] = ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
;
5457 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
5458 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
;
5460 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
5461 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
;
5463 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
5464 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
;
5466 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
5467 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
;
5469 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
5470 params
[0] = ctx
->Array
.ElementArrayBufferObj
->Name
;
5472 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
5473 CHECK_EXT1(EXT_pixel_buffer_object
);
5474 params
[0] = ctx
->Pack
.BufferObj
->Name
;
5476 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
5477 CHECK_EXT1(EXT_pixel_buffer_object
);
5478 params
[0] = ctx
->Unpack
.BufferObj
->Name
;
5480 case GL_VERTEX_PROGRAM_ARB
:
5481 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5482 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.Enabled
);
5484 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
5485 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5486 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.PointSizeEnabled
);
5488 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
5489 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5490 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.TwoSideEnabled
);
5492 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
5493 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5494 params
[0] = ctx
->Const
.MaxProgramMatrixStackDepth
;
5496 case GL_MAX_PROGRAM_MATRICES_ARB
:
5497 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5498 params
[0] = ctx
->Const
.MaxProgramMatrices
;
5500 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
5501 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5502 params
[0] = BOOLEAN_TO_INT(ctx
->CurrentStack
->Depth
+ 1);
5504 case GL_CURRENT_MATRIX_ARB
:
5505 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
5507 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
5508 params
[0] = IROUND(matrix
[0]);
5509 params
[1] = IROUND(matrix
[1]);
5510 params
[2] = IROUND(matrix
[2]);
5511 params
[3] = IROUND(matrix
[3]);
5512 params
[4] = IROUND(matrix
[4]);
5513 params
[5] = IROUND(matrix
[5]);
5514 params
[6] = IROUND(matrix
[6]);
5515 params
[7] = IROUND(matrix
[7]);
5516 params
[8] = IROUND(matrix
[8]);
5517 params
[9] = IROUND(matrix
[9]);
5518 params
[10] = IROUND(matrix
[10]);
5519 params
[11] = IROUND(matrix
[11]);
5520 params
[12] = IROUND(matrix
[12]);
5521 params
[13] = IROUND(matrix
[13]);
5522 params
[14] = IROUND(matrix
[14]);
5523 params
[15] = IROUND(matrix
[15]);
5526 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
5527 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
5529 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
5530 params
[0] = IROUND(matrix
[0]);
5531 params
[1] = IROUND(matrix
[4]);
5532 params
[2] = IROUND(matrix
[8]);
5533 params
[3] = IROUND(matrix
[12]);
5534 params
[4] = IROUND(matrix
[1]);
5535 params
[5] = IROUND(matrix
[5]);
5536 params
[6] = IROUND(matrix
[9]);
5537 params
[7] = IROUND(matrix
[13]);
5538 params
[8] = IROUND(matrix
[2]);
5539 params
[9] = IROUND(matrix
[6]);
5540 params
[10] = IROUND(matrix
[10]);
5541 params
[11] = IROUND(matrix
[14]);
5542 params
[12] = IROUND(matrix
[3]);
5543 params
[13] = IROUND(matrix
[7]);
5544 params
[14] = IROUND(matrix
[11]);
5545 params
[15] = IROUND(matrix
[15]);
5548 case GL_MAX_VERTEX_ATTRIBS_ARB
:
5549 CHECK_EXT1(ARB_vertex_program
);
5550 params
[0] = ctx
->Const
.VertexProgram
.MaxAttribs
;
5552 case GL_PROGRAM_ERROR_POSITION_ARB
:
5553 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
5554 params
[0] = ctx
->Program
.ErrorPos
;
5556 case GL_FRAGMENT_PROGRAM_ARB
:
5557 CHECK_EXT1(ARB_fragment_program
);
5558 params
[0] = BOOLEAN_TO_INT(ctx
->FragmentProgram
.Enabled
);
5560 case GL_MAX_TEXTURE_COORDS_ARB
:
5561 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
5562 params
[0] = ctx
->Const
.MaxTextureCoordUnits
;
5564 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
5565 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
5566 params
[0] = ctx
->Const
.MaxTextureImageUnits
;
5568 case GL_DEPTH_BOUNDS_TEST_EXT
:
5569 CHECK_EXT1(EXT_depth_bounds_test
);
5570 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.BoundsTest
);
5572 case GL_DEPTH_BOUNDS_EXT
:
5573 CHECK_EXT1(EXT_depth_bounds_test
);
5574 params
[0] = IROUND(ctx
->Depth
.BoundsMin
);
5575 params
[1] = IROUND(ctx
->Depth
.BoundsMax
);
5577 case GL_DEPTH_CLAMP
:
5578 CHECK_EXT1(ARB_depth_clamp
);
5579 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.DepthClamp
);
5581 case GL_MAX_DRAW_BUFFERS_ARB
:
5582 params
[0] = ctx
->Const
.MaxDrawBuffers
;
5584 case GL_DRAW_BUFFER0_ARB
:
5585 params
[0] = ENUM_TO_INT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
5587 case GL_DRAW_BUFFER1_ARB
:
5590 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5591 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5594 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
5595 params
[0] = ENUM_TO_INT(buffer
);
5598 case GL_DRAW_BUFFER2_ARB
:
5601 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5602 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5605 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
5606 params
[0] = ENUM_TO_INT(buffer
);
5609 case GL_DRAW_BUFFER3_ARB
:
5612 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5613 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5616 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
5617 params
[0] = ENUM_TO_INT(buffer
);
5620 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
5621 CHECK_EXT1(OES_read_format
);
5622 if (ctx
->NewState
& _NEW_BUFFERS
)
5623 _mesa_update_state(ctx
);
5624 params
[0] = _mesa_get_color_read_type(ctx
);
5626 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
5627 CHECK_EXT1(OES_read_format
);
5628 if (ctx
->NewState
& _NEW_BUFFERS
)
5629 _mesa_update_state(ctx
);
5630 params
[0] = _mesa_get_color_read_format(ctx
);
5632 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
5633 CHECK_EXT1(ATI_fragment_shader
);
5636 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
5637 CHECK_EXT1(ATI_fragment_shader
);
5640 case GL_NUM_PASSES_ATI
:
5641 CHECK_EXT1(ATI_fragment_shader
);
5644 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
5645 CHECK_EXT1(ATI_fragment_shader
);
5648 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
5649 CHECK_EXT1(ATI_fragment_shader
);
5652 case GL_COLOR_ALPHA_PAIRING_ATI
:
5653 CHECK_EXT1(ATI_fragment_shader
);
5654 params
[0] = BOOLEAN_TO_INT(GL_TRUE
);
5656 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
5657 CHECK_EXT1(ATI_fragment_shader
);
5660 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
5661 CHECK_EXT1(ATI_fragment_shader
);
5664 case GL_STENCIL_BACK_FUNC
:
5665 params
[0] = ENUM_TO_INT(ctx
->Stencil
.Function
[1]);
5667 case GL_STENCIL_BACK_VALUE_MASK
:
5668 params
[0] = ctx
->Stencil
.ValueMask
[1];
5670 case GL_STENCIL_BACK_WRITEMASK
:
5671 params
[0] = ctx
->Stencil
.WriteMask
[1];
5673 case GL_STENCIL_BACK_REF
:
5674 params
[0] = ctx
->Stencil
.Ref
[1];
5676 case GL_STENCIL_BACK_FAIL
:
5677 params
[0] = ENUM_TO_INT(ctx
->Stencil
.FailFunc
[1]);
5679 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
5680 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZFailFunc
[1]);
5682 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
5683 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZPassFunc
[1]);
5685 case GL_FRAMEBUFFER_BINDING_EXT
:
5686 CHECK_EXT1(EXT_framebuffer_object
);
5687 params
[0] = ctx
->DrawBuffer
->Name
;
5689 case GL_RENDERBUFFER_BINDING_EXT
:
5690 CHECK_EXT1(EXT_framebuffer_object
);
5691 params
[0] = ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0;
5693 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
5694 CHECK_EXT1(EXT_framebuffer_object
);
5695 params
[0] = ctx
->Const
.MaxColorAttachments
;
5697 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
5698 CHECK_EXT1(EXT_framebuffer_object
);
5699 params
[0] = ctx
->Const
.MaxRenderbufferSize
;
5701 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
5702 CHECK_EXT1(EXT_framebuffer_blit
);
5703 params
[0] = ctx
->ReadBuffer
->Name
;
5705 case GL_PROVOKING_VERTEX_EXT
:
5706 CHECK_EXT1(EXT_provoking_vertex
);
5707 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.ProvokingVertex
);
5709 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
5710 CHECK_EXT1(EXT_provoking_vertex
);
5711 params
[0] = BOOLEAN_TO_INT(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
5713 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
5714 CHECK_EXT1(ARB_fragment_shader
);
5715 params
[0] = ctx
->Const
.FragmentProgram
.MaxUniformComponents
;
5717 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
5718 CHECK_EXT1(ARB_fragment_shader
);
5719 params
[0] = ENUM_TO_INT(ctx
->Hint
.FragmentShaderDerivative
);
5721 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
5722 CHECK_EXT1(ARB_vertex_shader
);
5723 params
[0] = ctx
->Const
.VertexProgram
.MaxUniformComponents
;
5725 case GL_MAX_VARYING_FLOATS_ARB
:
5726 CHECK_EXT1(ARB_vertex_shader
);
5727 params
[0] = ctx
->Const
.MaxVarying
* 4;
5729 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
5730 CHECK_EXT1(ARB_vertex_shader
);
5731 params
[0] = ctx
->Const
.MaxVertexTextureImageUnits
;
5733 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
5734 CHECK_EXT1(ARB_vertex_shader
);
5735 params
[0] = ctx
->Const
.MaxCombinedTextureImageUnits
;
5737 case GL_CURRENT_PROGRAM
:
5738 CHECK_EXT1(ARB_shader_objects
);
5739 params
[0] = ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0;
5741 case GL_MAX_SAMPLES
:
5742 CHECK_EXT1(ARB_framebuffer_object
);
5743 params
[0] = ctx
->Const
.MaxSamples
;
5745 case GL_VERTEX_ARRAY_BINDING_APPLE
:
5746 CHECK_EXT1(APPLE_vertex_array_object
);
5747 params
[0] = ctx
->Array
.ArrayObj
->Name
;
5749 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
5750 CHECK_EXT1(ARB_seamless_cube_map
);
5751 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.CubeMapSeamless
);
5753 case GL_MAX_SERVER_WAIT_TIMEOUT
:
5754 CHECK_EXT1(ARB_sync
);
5755 params
[0] = INT64_TO_INT(ctx
->Const
.MaxServerWaitTimeout
);
5757 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
5758 CHECK_EXT1(EXT_transform_feedback
);
5759 params
[0] = ctx
->TransformFeedback
.CurrentBuffer
->Name
;
5761 case GL_RASTERIZER_DISCARD
:
5762 CHECK_EXT1(EXT_transform_feedback
);
5763 params
[0] = BOOLEAN_TO_INT(ctx
->TransformFeedback
.RasterDiscard
);
5765 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
5766 CHECK_EXT1(EXT_transform_feedback
);
5767 params
[0] = ctx
->Const
.MaxTransformFeedbackInterleavedComponents
;
5769 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
5770 CHECK_EXT1(EXT_transform_feedback
);
5771 params
[0] = ctx
->Const
.MaxTransformFeedbackSeparateAttribs
;
5773 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
5774 CHECK_EXT1(EXT_transform_feedback
);
5775 params
[0] = ctx
->Const
.MaxTransformFeedbackSeparateComponents
;
5777 case GL_NUM_EXTENSIONS
:
5779 params
[0] = _mesa_get_extension_count(ctx
);
5781 case GL_MAJOR_VERSION
:
5783 params
[0] = ctx
->VersionMajor
;
5785 case GL_MINOR_VERSION
:
5787 params
[0] = ctx
->VersionMinor
;
5789 case GL_CONTEXT_FLAGS
:
5791 params
[0] = ctx
->Const
.ContextFlags
;
5793 case GL_PRIMITIVE_RESTART
:
5795 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.PrimitiveRestart
);
5797 case GL_PRIMITIVE_RESTART_INDEX
:
5799 params
[0] = ctx
->Array
.RestartIndex
;
5801 case GL_CONTEXT_PROFILE_MASK
:
5803 params
[0] = ctx
->Const
.ProfileMask
;
5806 goto invalid_enum_error
;
5811 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv(pname=0x%x)", pname
);
5814 #if FEATURE_ARB_sync
5816 _mesa_GetInteger64v( GLenum pname
, GLint64
*params
)
5818 GET_CURRENT_CONTEXT(ctx
);
5819 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
5820 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5827 case GL_ACCUM_RED_BITS
:
5828 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumRedBits
);
5830 case GL_ACCUM_GREEN_BITS
:
5831 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
5833 case GL_ACCUM_BLUE_BITS
:
5834 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
5836 case GL_ACCUM_ALPHA_BITS
:
5837 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
5839 case GL_ACCUM_CLEAR_VALUE
:
5840 params
[0] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[0]);
5841 params
[1] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[1]);
5842 params
[2] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[2]);
5843 params
[3] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[3]);
5846 params
[0] = IROUND64(ctx
->Pixel
.AlphaBias
);
5849 if (ctx
->NewState
& _NEW_BUFFERS
)
5850 _mesa_update_state(ctx
);
5851 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.alphaBits
);
5853 case GL_ALPHA_SCALE
:
5854 params
[0] = IROUND64(ctx
->Pixel
.AlphaScale
);
5857 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.AlphaEnabled
);
5859 case GL_ALPHA_TEST_FUNC
:
5860 params
[0] = ENUM_TO_INT64(ctx
->Color
.AlphaFunc
);
5862 case GL_ALPHA_TEST_REF
:
5863 params
[0] = FLOAT_TO_INT64(ctx
->Color
.AlphaRef
);
5865 case GL_ATTRIB_STACK_DEPTH
:
5866 params
[0] = (GLint64
)(ctx
->AttribStackDepth
);
5868 case GL_AUTO_NORMAL
:
5869 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.AutoNormal
);
5871 case GL_AUX_BUFFERS
:
5872 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
5875 params
[0] = BOOLEAN_TO_INT64((ctx
->Color
.BlendEnabled
& 1));
5878 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstRGB
);
5881 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcRGB
);
5883 case GL_BLEND_SRC_RGB_EXT
:
5884 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcRGB
);
5886 case GL_BLEND_DST_RGB_EXT
:
5887 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstRGB
);
5889 case GL_BLEND_SRC_ALPHA_EXT
:
5890 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcA
);
5892 case GL_BLEND_DST_ALPHA_EXT
:
5893 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstA
);
5895 case GL_BLEND_EQUATION
:
5896 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendEquationRGB
);
5898 case GL_BLEND_EQUATION_ALPHA_EXT
:
5899 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendEquationA
);
5901 case GL_BLEND_COLOR_EXT
:
5902 params
[0] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[0]);
5903 params
[1] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[1]);
5904 params
[2] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[2]);
5905 params
[3] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[3]);
5908 params
[0] = IROUND64(ctx
->Pixel
.BlueBias
);
5911 if (ctx
->NewState
& _NEW_BUFFERS
)
5912 _mesa_update_state(ctx
);
5913 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.blueBits
);
5916 params
[0] = IROUND64(ctx
->Pixel
.BlueScale
);
5918 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
5919 params
[0] = (GLint64
)(ctx
->ClientAttribStackDepth
);
5921 case GL_CLIP_PLANE0
:
5922 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
5924 case GL_CLIP_PLANE1
:
5925 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
5927 case GL_CLIP_PLANE2
:
5928 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
5930 case GL_CLIP_PLANE3
:
5931 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
5933 case GL_CLIP_PLANE4
:
5934 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
5936 case GL_CLIP_PLANE5
:
5937 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
5939 case GL_COLOR_CLEAR_VALUE
:
5940 params
[0] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[0]);
5941 params
[1] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[1]);
5942 params
[2] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[2]);
5943 params
[3] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[3]);
5945 case GL_COLOR_MATERIAL
:
5946 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.ColorMaterialEnabled
);
5948 case GL_COLOR_MATERIAL_FACE
:
5949 params
[0] = ENUM_TO_INT64(ctx
->Light
.ColorMaterialFace
);
5951 case GL_COLOR_MATERIAL_PARAMETER
:
5952 params
[0] = ENUM_TO_INT64(ctx
->Light
.ColorMaterialMode
);
5954 case GL_COLOR_WRITEMASK
:
5955 params
[0] = (GLint64
)(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
5956 params
[1] = (GLint64
)(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
5957 params
[2] = (GLint64
)(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
5958 params
[3] = (GLint64
)(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
5961 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.CullFlag
);
5963 case GL_CULL_FACE_MODE
:
5964 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.CullFaceMode
);
5966 case GL_CURRENT_COLOR
:
5967 FLUSH_CURRENT(ctx
, 0);
5968 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
5969 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
5970 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
5971 params
[3] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
5973 case GL_CURRENT_INDEX
:
5974 FLUSH_CURRENT(ctx
, 0);
5975 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
5977 case GL_CURRENT_NORMAL
:
5978 FLUSH_CURRENT(ctx
, 0);
5979 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
5980 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
5981 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
5983 case GL_CURRENT_RASTER_COLOR
:
5984 params
[0] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[0]);
5985 params
[1] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[1]);
5986 params
[2] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[2]);
5987 params
[3] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[3]);
5989 case GL_CURRENT_RASTER_DISTANCE
:
5990 params
[0] = IROUND64(ctx
->Current
.RasterDistance
);
5992 case GL_CURRENT_RASTER_INDEX
:
5993 params
[0] = IROUND64(1.0);
5995 case GL_CURRENT_RASTER_POSITION
:
5996 params
[0] = IROUND64(ctx
->Current
.RasterPos
[0]);
5997 params
[1] = IROUND64(ctx
->Current
.RasterPos
[1]);
5998 params
[2] = IROUND64(ctx
->Current
.RasterPos
[2]);
5999 params
[3] = IROUND64(ctx
->Current
.RasterPos
[3]);
6001 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
6002 params
[0] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[0]);
6003 params
[1] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[1]);
6004 params
[2] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[2]);
6005 params
[3] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[3]);
6007 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
6009 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6010 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6011 _mesa_error(ctx
, GL_INVALID_OPERATION
,
6012 "glGet(raster tex coords, unit %u)", unit
);
6015 params
[0] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][0]);
6016 params
[1] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][1]);
6017 params
[2] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][2]);
6018 params
[3] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][3]);
6021 case GL_CURRENT_RASTER_POSITION_VALID
:
6022 params
[0] = BOOLEAN_TO_INT64(ctx
->Current
.RasterPosValid
);
6024 case GL_CURRENT_TEXTURE_COORDS
:
6026 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6027 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6028 _mesa_error(ctx
, GL_INVALID_OPERATION
,
6029 "glGet(current tex coords, unit %u)", unit
);
6032 FLUSH_CURRENT(ctx
, 0);
6033 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
6034 params
[1] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
6035 params
[2] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
6036 params
[3] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
6040 params
[0] = IROUND64(ctx
->Pixel
.DepthBias
);
6043 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.depthBits
);
6045 case GL_DEPTH_CLEAR_VALUE
:
6046 params
[0] = FLOAT_TO_INT64(((GLfloat
) ctx
->Depth
.Clear
));
6049 params
[0] = ENUM_TO_INT64(ctx
->Depth
.Func
);
6051 case GL_DEPTH_RANGE
:
6052 params
[0] = FLOAT_TO_INT64(ctx
->Viewport
.Near
);
6053 params
[1] = FLOAT_TO_INT64(ctx
->Viewport
.Far
);
6055 case GL_DEPTH_SCALE
:
6056 params
[0] = IROUND64(ctx
->Pixel
.DepthScale
);
6059 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.Test
);
6061 case GL_DEPTH_WRITEMASK
:
6062 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.Mask
);
6065 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.DitherFlag
);
6067 case GL_DOUBLEBUFFER
:
6068 params
[0] = BOOLEAN_TO_INT64(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
6070 case GL_DRAW_BUFFER
:
6071 params
[0] = ENUM_TO_INT64(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
6074 FLUSH_CURRENT(ctx
, 0);
6075 params
[0] = BOOLEAN_TO_INT64((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
6077 case GL_FEEDBACK_BUFFER_SIZE
:
6078 params
[0] = (GLint64
)(ctx
->Feedback
.BufferSize
);
6080 case GL_FEEDBACK_BUFFER_TYPE
:
6081 params
[0] = ENUM_TO_INT64(ctx
->Feedback
.Type
);
6084 params
[0] = BOOLEAN_TO_INT64(ctx
->Fog
.Enabled
);
6087 params
[0] = FLOAT_TO_INT64(ctx
->Fog
.Color
[0]);
6088 params
[1] = FLOAT_TO_INT64(ctx
->Fog
.Color
[1]);
6089 params
[2] = FLOAT_TO_INT64(ctx
->Fog
.Color
[2]);
6090 params
[3] = FLOAT_TO_INT64(ctx
->Fog
.Color
[3]);
6092 case GL_FOG_DENSITY
:
6093 params
[0] = IROUND64(ctx
->Fog
.Density
);
6096 params
[0] = IROUND64(ctx
->Fog
.End
);
6099 params
[0] = ENUM_TO_INT64(ctx
->Hint
.Fog
);
6102 params
[0] = IROUND64(ctx
->Fog
.Index
);
6105 params
[0] = ENUM_TO_INT64(ctx
->Fog
.Mode
);
6108 params
[0] = IROUND64(ctx
->Fog
.Start
);
6111 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.FrontFace
);
6114 params
[0] = IROUND64(ctx
->Pixel
.GreenBias
);
6117 if (ctx
->NewState
& _NEW_BUFFERS
)
6118 _mesa_update_state(ctx
);
6119 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.greenBits
);
6121 case GL_GREEN_SCALE
:
6122 params
[0] = IROUND64(ctx
->Pixel
.GreenScale
);
6125 if (ctx
->NewState
& _NEW_BUFFERS
)
6126 _mesa_update_state(ctx
);
6127 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.indexBits
);
6129 case GL_INDEX_CLEAR_VALUE
:
6130 params
[0] = (GLint64
)(ctx
->Color
.ClearIndex
);
6133 params
[0] = BOOLEAN_TO_INT64(GL_FALSE
);
6135 case GL_INDEX_OFFSET
:
6136 params
[0] = (GLint64
)(ctx
->Pixel
.IndexOffset
);
6138 case GL_INDEX_SHIFT
:
6139 params
[0] = (GLint64
)(ctx
->Pixel
.IndexShift
);
6141 case GL_INDEX_WRITEMASK
:
6142 params
[0] = (GLint64
)(ctx
->Color
.IndexMask
);
6145 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[0].Enabled
);
6148 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[1].Enabled
);
6151 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[2].Enabled
);
6154 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[3].Enabled
);
6157 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[4].Enabled
);
6160 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[5].Enabled
);
6163 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[6].Enabled
);
6166 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[7].Enabled
);
6169 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Enabled
);
6171 case GL_LIGHT_MODEL_AMBIENT
:
6172 params
[0] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[0]);
6173 params
[1] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[1]);
6174 params
[2] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[2]);
6175 params
[3] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[3]);
6177 case GL_LIGHT_MODEL_COLOR_CONTROL
:
6178 params
[0] = ENUM_TO_INT64(ctx
->Light
.Model
.ColorControl
);
6180 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
6181 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Model
.LocalViewer
);
6183 case GL_LIGHT_MODEL_TWO_SIDE
:
6184 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Model
.TwoSide
);
6186 case GL_LINE_SMOOTH
:
6187 params
[0] = BOOLEAN_TO_INT64(ctx
->Line
.SmoothFlag
);
6189 case GL_LINE_SMOOTH_HINT
:
6190 params
[0] = ENUM_TO_INT64(ctx
->Hint
.LineSmooth
);
6192 case GL_LINE_STIPPLE
:
6193 params
[0] = BOOLEAN_TO_INT64(ctx
->Line
.StippleFlag
);
6195 case GL_LINE_STIPPLE_PATTERN
:
6196 params
[0] = (GLint64
)(ctx
->Line
.StipplePattern
);
6198 case GL_LINE_STIPPLE_REPEAT
:
6199 params
[0] = (GLint64
)(ctx
->Line
.StippleFactor
);
6202 params
[0] = IROUND64(ctx
->Line
.Width
);
6204 case GL_LINE_WIDTH_GRANULARITY
:
6205 params
[0] = IROUND64(ctx
->Const
.LineWidthGranularity
);
6207 case GL_LINE_WIDTH_RANGE
:
6208 params
[0] = IROUND64(ctx
->Const
.MinLineWidthAA
);
6209 params
[1] = IROUND64(ctx
->Const
.MaxLineWidthAA
);
6211 case GL_ALIASED_LINE_WIDTH_RANGE
:
6212 params
[0] = IROUND64(ctx
->Const
.MinLineWidth
);
6213 params
[1] = IROUND64(ctx
->Const
.MaxLineWidth
);
6216 params
[0] = (GLint64
)(ctx
->List
.ListBase
);
6219 params
[0] = (GLint64
)((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
6224 if (!ctx
->CompileFlag
)
6226 else if (ctx
->ExecuteFlag
)
6227 mode
= GL_COMPILE_AND_EXECUTE
;
6230 params
[0] = ENUM_TO_INT64(mode
);
6233 case GL_INDEX_LOGIC_OP
:
6234 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.IndexLogicOpEnabled
);
6236 case GL_COLOR_LOGIC_OP
:
6237 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.ColorLogicOpEnabled
);
6239 case GL_LOGIC_OP_MODE
:
6240 params
[0] = ENUM_TO_INT64(ctx
->Color
.LogicOp
);
6242 case GL_MAP1_COLOR_4
:
6243 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Color4
);
6245 case GL_MAP1_GRID_DOMAIN
:
6246 params
[0] = IROUND64(ctx
->Eval
.MapGrid1u1
);
6247 params
[1] = IROUND64(ctx
->Eval
.MapGrid1u2
);
6249 case GL_MAP1_GRID_SEGMENTS
:
6250 params
[0] = (GLint64
)(ctx
->Eval
.MapGrid1un
);
6253 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Index
);
6255 case GL_MAP1_NORMAL
:
6256 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Normal
);
6258 case GL_MAP1_TEXTURE_COORD_1
:
6259 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord1
);
6261 case GL_MAP1_TEXTURE_COORD_2
:
6262 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord2
);
6264 case GL_MAP1_TEXTURE_COORD_3
:
6265 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord3
);
6267 case GL_MAP1_TEXTURE_COORD_4
:
6268 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord4
);
6270 case GL_MAP1_VERTEX_3
:
6271 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Vertex3
);
6273 case GL_MAP1_VERTEX_4
:
6274 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Vertex4
);
6276 case GL_MAP2_COLOR_4
:
6277 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Color4
);
6279 case GL_MAP2_GRID_DOMAIN
:
6280 params
[0] = IROUND64(ctx
->Eval
.MapGrid2u1
);
6281 params
[1] = IROUND64(ctx
->Eval
.MapGrid2u2
);
6282 params
[2] = IROUND64(ctx
->Eval
.MapGrid2v1
);
6283 params
[3] = IROUND64(ctx
->Eval
.MapGrid2v2
);
6285 case GL_MAP2_GRID_SEGMENTS
:
6286 params
[0] = (GLint64
)(ctx
->Eval
.MapGrid2un
);
6287 params
[1] = (GLint64
)(ctx
->Eval
.MapGrid2vn
);
6290 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Index
);
6292 case GL_MAP2_NORMAL
:
6293 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Normal
);
6295 case GL_MAP2_TEXTURE_COORD_1
:
6296 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord1
);
6298 case GL_MAP2_TEXTURE_COORD_2
:
6299 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord2
);
6301 case GL_MAP2_TEXTURE_COORD_3
:
6302 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord3
);
6304 case GL_MAP2_TEXTURE_COORD_4
:
6305 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord4
);
6307 case GL_MAP2_VERTEX_3
:
6308 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Vertex3
);
6310 case GL_MAP2_VERTEX_4
:
6311 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Vertex4
);
6314 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MapColorFlag
);
6316 case GL_MAP_STENCIL
:
6317 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MapStencilFlag
);
6319 case GL_MATRIX_MODE
:
6320 params
[0] = ENUM_TO_INT64(ctx
->Transform
.MatrixMode
);
6322 case GL_MAX_ATTRIB_STACK_DEPTH
:
6323 params
[0] = (GLint64
)(MAX_ATTRIB_STACK_DEPTH
);
6325 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
6326 params
[0] = (GLint64
)(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
6328 case GL_MAX_CLIP_PLANES
:
6329 params
[0] = (GLint64
)(ctx
->Const
.MaxClipPlanes
);
6331 case GL_MAX_ELEMENTS_VERTICES
:
6332 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayLockSize
);
6334 case GL_MAX_ELEMENTS_INDICES
:
6335 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayLockSize
);
6337 case GL_MAX_EVAL_ORDER
:
6338 params
[0] = (GLint64
)(MAX_EVAL_ORDER
);
6341 params
[0] = (GLint64
)(ctx
->Const
.MaxLights
);
6343 case GL_MAX_LIST_NESTING
:
6344 params
[0] = (GLint64
)(MAX_LIST_NESTING
);
6346 case GL_MAX_MODELVIEW_STACK_DEPTH
:
6347 params
[0] = (GLint64
)(MAX_MODELVIEW_STACK_DEPTH
);
6349 case GL_MAX_NAME_STACK_DEPTH
:
6350 params
[0] = (GLint64
)(MAX_NAME_STACK_DEPTH
);
6352 case GL_MAX_PIXEL_MAP_TABLE
:
6353 params
[0] = (GLint64
)(MAX_PIXEL_MAP_TABLE
);
6355 case GL_MAX_PROJECTION_STACK_DEPTH
:
6356 params
[0] = (GLint64
)(MAX_PROJECTION_STACK_DEPTH
);
6358 case GL_MAX_TEXTURE_SIZE
:
6359 params
[0] = (GLint64
)(1 << (ctx
->Const
.MaxTextureLevels
- 1));
6361 case GL_MAX_3D_TEXTURE_SIZE
:
6362 params
[0] = (GLint64
)(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
6364 case GL_MAX_TEXTURE_STACK_DEPTH
:
6365 params
[0] = (GLint64
)(MAX_TEXTURE_STACK_DEPTH
);
6367 case GL_MAX_VIEWPORT_DIMS
:
6368 params
[0] = (GLint64
)(ctx
->Const
.MaxViewportWidth
);
6369 params
[1] = (GLint64
)(ctx
->Const
.MaxViewportHeight
);
6371 case GL_MODELVIEW_MATRIX
:
6373 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
6374 params
[0] = IROUND64(matrix
[0]);
6375 params
[1] = IROUND64(matrix
[1]);
6376 params
[2] = IROUND64(matrix
[2]);
6377 params
[3] = IROUND64(matrix
[3]);
6378 params
[4] = IROUND64(matrix
[4]);
6379 params
[5] = IROUND64(matrix
[5]);
6380 params
[6] = IROUND64(matrix
[6]);
6381 params
[7] = IROUND64(matrix
[7]);
6382 params
[8] = IROUND64(matrix
[8]);
6383 params
[9] = IROUND64(matrix
[9]);
6384 params
[10] = IROUND64(matrix
[10]);
6385 params
[11] = IROUND64(matrix
[11]);
6386 params
[12] = IROUND64(matrix
[12]);
6387 params
[13] = IROUND64(matrix
[13]);
6388 params
[14] = IROUND64(matrix
[14]);
6389 params
[15] = IROUND64(matrix
[15]);
6392 case GL_MODELVIEW_STACK_DEPTH
:
6393 params
[0] = (GLint64
)(ctx
->ModelviewMatrixStack
.Depth
+ 1);
6395 case GL_NAME_STACK_DEPTH
:
6396 params
[0] = (GLint64
)(ctx
->Select
.NameStackDepth
);
6399 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.Normalize
);
6401 case GL_PACK_ALIGNMENT
:
6402 params
[0] = (GLint64
)(ctx
->Pack
.Alignment
);
6404 case GL_PACK_LSB_FIRST
:
6405 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.LsbFirst
);
6407 case GL_PACK_ROW_LENGTH
:
6408 params
[0] = (GLint64
)(ctx
->Pack
.RowLength
);
6410 case GL_PACK_SKIP_PIXELS
:
6411 params
[0] = (GLint64
)(ctx
->Pack
.SkipPixels
);
6413 case GL_PACK_SKIP_ROWS
:
6414 params
[0] = (GLint64
)(ctx
->Pack
.SkipRows
);
6416 case GL_PACK_SWAP_BYTES
:
6417 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.SwapBytes
);
6419 case GL_PACK_SKIP_IMAGES_EXT
:
6420 params
[0] = (GLint64
)(ctx
->Pack
.SkipImages
);
6422 case GL_PACK_IMAGE_HEIGHT_EXT
:
6423 params
[0] = (GLint64
)(ctx
->Pack
.ImageHeight
);
6425 case GL_PACK_INVERT_MESA
:
6426 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.Invert
);
6428 case GL_PERSPECTIVE_CORRECTION_HINT
:
6429 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PerspectiveCorrection
);
6431 case GL_PIXEL_MAP_A_TO_A_SIZE
:
6432 params
[0] = (GLint64
)(ctx
->PixelMaps
.AtoA
.Size
);
6434 case GL_PIXEL_MAP_B_TO_B_SIZE
:
6435 params
[0] = (GLint64
)(ctx
->PixelMaps
.BtoB
.Size
);
6437 case GL_PIXEL_MAP_G_TO_G_SIZE
:
6438 params
[0] = (GLint64
)(ctx
->PixelMaps
.GtoG
.Size
);
6440 case GL_PIXEL_MAP_I_TO_A_SIZE
:
6441 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoA
.Size
);
6443 case GL_PIXEL_MAP_I_TO_B_SIZE
:
6444 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoB
.Size
);
6446 case GL_PIXEL_MAP_I_TO_G_SIZE
:
6447 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoG
.Size
);
6449 case GL_PIXEL_MAP_I_TO_I_SIZE
:
6450 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoI
.Size
);
6452 case GL_PIXEL_MAP_I_TO_R_SIZE
:
6453 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoR
.Size
);
6455 case GL_PIXEL_MAP_R_TO_R_SIZE
:
6456 params
[0] = (GLint64
)(ctx
->PixelMaps
.RtoR
.Size
);
6458 case GL_PIXEL_MAP_S_TO_S_SIZE
:
6459 params
[0] = (GLint64
)(ctx
->PixelMaps
.StoS
.Size
);
6462 params
[0] = IROUND64(ctx
->Point
.Size
);
6464 case GL_POINT_SIZE_GRANULARITY
:
6465 params
[0] = IROUND64(ctx
->Const
.PointSizeGranularity
);
6467 case GL_POINT_SIZE_RANGE
:
6468 params
[0] = IROUND64(ctx
->Const
.MinPointSizeAA
);
6469 params
[1] = IROUND64(ctx
->Const
.MaxPointSizeAA
);
6471 case GL_ALIASED_POINT_SIZE_RANGE
:
6472 params
[0] = IROUND64(ctx
->Const
.MinPointSize
);
6473 params
[1] = IROUND64(ctx
->Const
.MaxPointSize
);
6475 case GL_POINT_SMOOTH
:
6476 params
[0] = BOOLEAN_TO_INT64(ctx
->Point
.SmoothFlag
);
6478 case GL_POINT_SMOOTH_HINT
:
6479 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PointSmooth
);
6481 case GL_POINT_SIZE_MIN_EXT
:
6482 params
[0] = IROUND64(ctx
->Point
.MinSize
);
6484 case GL_POINT_SIZE_MAX_EXT
:
6485 params
[0] = IROUND64(ctx
->Point
.MaxSize
);
6487 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
6488 params
[0] = IROUND64(ctx
->Point
.Threshold
);
6490 case GL_DISTANCE_ATTENUATION_EXT
:
6491 params
[0] = IROUND64(ctx
->Point
.Params
[0]);
6492 params
[1] = IROUND64(ctx
->Point
.Params
[1]);
6493 params
[2] = IROUND64(ctx
->Point
.Params
[2]);
6495 case GL_POLYGON_MODE
:
6496 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.FrontMode
);
6497 params
[1] = ENUM_TO_INT64(ctx
->Polygon
.BackMode
);
6499 case GL_POLYGON_OFFSET_BIAS_EXT
:
6500 params
[0] = IROUND64(ctx
->Polygon
.OffsetUnits
);
6502 case GL_POLYGON_OFFSET_FACTOR
:
6503 params
[0] = IROUND64(ctx
->Polygon
.OffsetFactor
);
6505 case GL_POLYGON_OFFSET_UNITS
:
6506 params
[0] = IROUND64(ctx
->Polygon
.OffsetUnits
);
6508 case GL_POLYGON_OFFSET_POINT
:
6509 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetPoint
);
6511 case GL_POLYGON_OFFSET_LINE
:
6512 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetLine
);
6514 case GL_POLYGON_OFFSET_FILL
:
6515 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetFill
);
6517 case GL_POLYGON_SMOOTH
:
6518 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.SmoothFlag
);
6520 case GL_POLYGON_SMOOTH_HINT
:
6521 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PolygonSmooth
);
6523 case GL_POLYGON_STIPPLE
:
6524 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.StippleFlag
);
6526 case GL_PROJECTION_MATRIX
:
6528 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
6529 params
[0] = IROUND64(matrix
[0]);
6530 params
[1] = IROUND64(matrix
[1]);
6531 params
[2] = IROUND64(matrix
[2]);
6532 params
[3] = IROUND64(matrix
[3]);
6533 params
[4] = IROUND64(matrix
[4]);
6534 params
[5] = IROUND64(matrix
[5]);
6535 params
[6] = IROUND64(matrix
[6]);
6536 params
[7] = IROUND64(matrix
[7]);
6537 params
[8] = IROUND64(matrix
[8]);
6538 params
[9] = IROUND64(matrix
[9]);
6539 params
[10] = IROUND64(matrix
[10]);
6540 params
[11] = IROUND64(matrix
[11]);
6541 params
[12] = IROUND64(matrix
[12]);
6542 params
[13] = IROUND64(matrix
[13]);
6543 params
[14] = IROUND64(matrix
[14]);
6544 params
[15] = IROUND64(matrix
[15]);
6547 case GL_PROJECTION_STACK_DEPTH
:
6548 params
[0] = (GLint64
)(ctx
->ProjectionMatrixStack
.Depth
+ 1);
6550 case GL_READ_BUFFER
:
6551 params
[0] = ENUM_TO_INT64(ctx
->ReadBuffer
->ColorReadBuffer
);
6554 params
[0] = IROUND64(ctx
->Pixel
.RedBias
);
6557 if (ctx
->NewState
& _NEW_BUFFERS
)
6558 _mesa_update_state(ctx
);
6559 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.redBits
);
6562 params
[0] = IROUND64(ctx
->Pixel
.RedScale
);
6564 case GL_RENDER_MODE
:
6565 params
[0] = ENUM_TO_INT64(ctx
->RenderMode
);
6567 case GL_RESCALE_NORMAL
:
6568 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.RescaleNormals
);
6571 params
[0] = BOOLEAN_TO_INT64(GL_TRUE
);
6573 case GL_SCISSOR_BOX
:
6574 params
[0] = (GLint64
)(ctx
->Scissor
.X
);
6575 params
[1] = (GLint64
)(ctx
->Scissor
.Y
);
6576 params
[2] = (GLint64
)(ctx
->Scissor
.Width
);
6577 params
[3] = (GLint64
)(ctx
->Scissor
.Height
);
6579 case GL_SCISSOR_TEST
:
6580 params
[0] = BOOLEAN_TO_INT64(ctx
->Scissor
.Enabled
);
6582 case GL_SELECTION_BUFFER_SIZE
:
6583 params
[0] = (GLint64
)(ctx
->Select
.BufferSize
);
6585 case GL_SHADE_MODEL
:
6586 params
[0] = ENUM_TO_INT64(ctx
->Light
.ShadeModel
);
6588 case GL_SHARED_TEXTURE_PALETTE_EXT
:
6589 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.SharedPalette
);
6591 case GL_STENCIL_BITS
:
6592 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.stencilBits
);
6594 case GL_STENCIL_CLEAR_VALUE
:
6595 params
[0] = (GLint64
)(ctx
->Stencil
.Clear
);
6597 case GL_STENCIL_FAIL
:
6598 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
6600 case GL_STENCIL_FUNC
:
6601 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
6603 case GL_STENCIL_PASS_DEPTH_FAIL
:
6604 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
6606 case GL_STENCIL_PASS_DEPTH_PASS
:
6607 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
6609 case GL_STENCIL_REF
:
6610 params
[0] = (GLint64
)(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
6612 case GL_STENCIL_TEST
:
6613 params
[0] = BOOLEAN_TO_INT64(ctx
->Stencil
.Enabled
);
6615 case GL_STENCIL_VALUE_MASK
:
6616 params
[0] = (GLint64
)(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
6618 case GL_STENCIL_WRITEMASK
:
6619 params
[0] = (GLint64
)(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
6622 params
[0] = BOOLEAN_TO_INT64(ctx
->DrawBuffer
->Visual
.stereoMode
);
6624 case GL_SUBPIXEL_BITS
:
6625 params
[0] = (GLint64
)(ctx
->Const
.SubPixelBits
);
6628 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D
));
6631 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D
));
6634 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D
));
6636 case GL_TEXTURE_1D_ARRAY_EXT
:
6637 CHECK_EXT1(MESA_texture_array
);
6638 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
6640 case GL_TEXTURE_2D_ARRAY_EXT
:
6641 CHECK_EXT1(MESA_texture_array
);
6642 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
6644 case GL_TEXTURE_BINDING_1D
:
6645 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
6647 case GL_TEXTURE_BINDING_2D
:
6648 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
6650 case GL_TEXTURE_BINDING_3D
:
6651 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
6653 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
6654 CHECK_EXT1(MESA_texture_array
);
6655 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
6657 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
6658 CHECK_EXT1(MESA_texture_array
);
6659 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
6661 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
6662 CHECK_EXT1(MESA_texture_array
);
6663 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayTextureLayers
);
6665 case GL_TEXTURE_GEN_S
:
6666 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
6668 case GL_TEXTURE_GEN_T
:
6669 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
6671 case GL_TEXTURE_GEN_R
:
6672 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
6674 case GL_TEXTURE_GEN_Q
:
6675 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
6677 case GL_TEXTURE_MATRIX
:
6679 const GLfloat
*matrix
;
6680 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6681 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6682 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
6686 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
6687 params
[0] = IROUND64(matrix
[0]);
6688 params
[1] = IROUND64(matrix
[1]);
6689 params
[2] = IROUND64(matrix
[2]);
6690 params
[3] = IROUND64(matrix
[3]);
6691 params
[4] = IROUND64(matrix
[4]);
6692 params
[5] = IROUND64(matrix
[5]);
6693 params
[6] = IROUND64(matrix
[6]);
6694 params
[7] = IROUND64(matrix
[7]);
6695 params
[8] = IROUND64(matrix
[8]);
6696 params
[9] = IROUND64(matrix
[9]);
6697 params
[10] = IROUND64(matrix
[10]);
6698 params
[11] = IROUND64(matrix
[11]);
6699 params
[12] = IROUND64(matrix
[12]);
6700 params
[13] = IROUND64(matrix
[13]);
6701 params
[14] = IROUND64(matrix
[14]);
6702 params
[15] = IROUND64(matrix
[15]);
6705 case GL_TEXTURE_STACK_DEPTH
:
6707 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6708 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6709 _mesa_error(ctx
, GL_INVALID_OPERATION
,
6710 "glGet(texture stack depth, unit %u)", unit
);
6713 params
[0] = (GLint64
)(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
6716 case GL_UNPACK_ALIGNMENT
:
6717 params
[0] = (GLint64
)(ctx
->Unpack
.Alignment
);
6719 case GL_UNPACK_LSB_FIRST
:
6720 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.LsbFirst
);
6722 case GL_UNPACK_ROW_LENGTH
:
6723 params
[0] = (GLint64
)(ctx
->Unpack
.RowLength
);
6725 case GL_UNPACK_SKIP_PIXELS
:
6726 params
[0] = (GLint64
)(ctx
->Unpack
.SkipPixels
);
6728 case GL_UNPACK_SKIP_ROWS
:
6729 params
[0] = (GLint64
)(ctx
->Unpack
.SkipRows
);
6731 case GL_UNPACK_SWAP_BYTES
:
6732 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.SwapBytes
);
6734 case GL_UNPACK_SKIP_IMAGES_EXT
:
6735 params
[0] = (GLint64
)(ctx
->Unpack
.SkipImages
);
6737 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
6738 params
[0] = (GLint64
)(ctx
->Unpack
.ImageHeight
);
6740 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
6741 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.ClientStorage
);
6744 params
[0] = (GLint64
)(ctx
->Viewport
.X
);
6745 params
[1] = (GLint64
)(ctx
->Viewport
.Y
);
6746 params
[2] = (GLint64
)(ctx
->Viewport
.Width
);
6747 params
[3] = (GLint64
)(ctx
->Viewport
.Height
);
6750 params
[0] = IROUND64(ctx
->Pixel
.ZoomX
);
6753 params
[0] = IROUND64(ctx
->Pixel
.ZoomY
);
6755 case GL_VERTEX_ARRAY
:
6756 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
6758 case GL_VERTEX_ARRAY_SIZE
:
6759 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.Size
);
6761 case GL_VERTEX_ARRAY_TYPE
:
6762 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Vertex
.Type
);
6764 case GL_VERTEX_ARRAY_STRIDE
:
6765 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
6767 case GL_VERTEX_ARRAY_COUNT_EXT
:
6768 params
[0] = (GLint64
)(0);
6770 case GL_NORMAL_ARRAY
:
6771 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
6773 case GL_NORMAL_ARRAY_TYPE
:
6774 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Normal
.Type
);
6776 case GL_NORMAL_ARRAY_STRIDE
:
6777 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Normal
.Stride
);
6779 case GL_NORMAL_ARRAY_COUNT_EXT
:
6780 params
[0] = (GLint64
)(0);
6782 case GL_COLOR_ARRAY
:
6783 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Color
.Enabled
);
6785 case GL_COLOR_ARRAY_SIZE
:
6786 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.Size
);
6788 case GL_COLOR_ARRAY_TYPE
:
6789 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Color
.Type
);
6791 case GL_COLOR_ARRAY_STRIDE
:
6792 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.Stride
);
6794 case GL_COLOR_ARRAY_COUNT_EXT
:
6795 params
[0] = (GLint64
)(0);
6797 case GL_INDEX_ARRAY
:
6798 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Index
.Enabled
);
6800 case GL_INDEX_ARRAY_TYPE
:
6801 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Index
.Type
);
6803 case GL_INDEX_ARRAY_STRIDE
:
6804 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Index
.Stride
);
6806 case GL_INDEX_ARRAY_COUNT_EXT
:
6807 params
[0] = (GLint64
)(0);
6809 case GL_TEXTURE_COORD_ARRAY
:
6810 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
6812 case GL_TEXTURE_COORD_ARRAY_SIZE
:
6813 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
6815 case GL_TEXTURE_COORD_ARRAY_TYPE
:
6816 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
6818 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
6819 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
6821 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
6822 params
[0] = (GLint64
)(0);
6824 case GL_EDGE_FLAG_ARRAY
:
6825 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
6827 case GL_EDGE_FLAG_ARRAY_STRIDE
:
6828 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
6830 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
6831 params
[0] = (GLint64
)(0);
6833 case GL_MAX_TEXTURE_UNITS_ARB
:
6834 CHECK_EXT1(ARB_multitexture
);
6835 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureUnits
);
6837 case GL_ACTIVE_TEXTURE_ARB
:
6838 CHECK_EXT1(ARB_multitexture
);
6839 params
[0] = (GLint64
)(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
6841 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
6842 CHECK_EXT1(ARB_multitexture
);
6843 params
[0] = (GLint64
)(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
6845 case GL_TEXTURE_CUBE_MAP_ARB
:
6846 CHECK_EXT1(ARB_texture_cube_map
);
6847 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
6849 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
6850 CHECK_EXT1(ARB_texture_cube_map
);
6851 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
6853 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
6854 CHECK_EXT1(ARB_texture_cube_map
);
6855 params
[0] = (GLint64
)((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
6857 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
6858 params
[0] = (GLint64
)(ctx
->Hint
.TextureCompression
);
6860 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
6861 params
[0] = (GLint64
)(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
6863 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
6866 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
6868 for (i
= 0; i
< n
; i
++)
6869 params
[i
] = ENUM_TO_INT64(formats
[i
]);
6872 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
6873 CHECK_EXT1(EXT_compiled_vertex_array
);
6874 params
[0] = (GLint64
)(ctx
->Array
.LockFirst
);
6876 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
6877 CHECK_EXT1(EXT_compiled_vertex_array
);
6878 params
[0] = (GLint64
)(ctx
->Array
.LockCount
);
6880 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
6882 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
6883 params
[0] = IROUND64(matrix
[0]);
6884 params
[1] = IROUND64(matrix
[4]);
6885 params
[2] = IROUND64(matrix
[8]);
6886 params
[3] = IROUND64(matrix
[12]);
6887 params
[4] = IROUND64(matrix
[1]);
6888 params
[5] = IROUND64(matrix
[5]);
6889 params
[6] = IROUND64(matrix
[9]);
6890 params
[7] = IROUND64(matrix
[13]);
6891 params
[8] = IROUND64(matrix
[2]);
6892 params
[9] = IROUND64(matrix
[6]);
6893 params
[10] = IROUND64(matrix
[10]);
6894 params
[11] = IROUND64(matrix
[14]);
6895 params
[12] = IROUND64(matrix
[3]);
6896 params
[13] = IROUND64(matrix
[7]);
6897 params
[14] = IROUND64(matrix
[11]);
6898 params
[15] = IROUND64(matrix
[15]);
6901 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
6903 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
6904 params
[0] = IROUND64(matrix
[0]);
6905 params
[1] = IROUND64(matrix
[4]);
6906 params
[2] = IROUND64(matrix
[8]);
6907 params
[3] = IROUND64(matrix
[12]);
6908 params
[4] = IROUND64(matrix
[1]);
6909 params
[5] = IROUND64(matrix
[5]);
6910 params
[6] = IROUND64(matrix
[9]);
6911 params
[7] = IROUND64(matrix
[13]);
6912 params
[8] = IROUND64(matrix
[2]);
6913 params
[9] = IROUND64(matrix
[6]);
6914 params
[10] = IROUND64(matrix
[10]);
6915 params
[11] = IROUND64(matrix
[14]);
6916 params
[12] = IROUND64(matrix
[3]);
6917 params
[13] = IROUND64(matrix
[7]);
6918 params
[14] = IROUND64(matrix
[11]);
6919 params
[15] = IROUND64(matrix
[15]);
6922 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
6924 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
6925 params
[0] = IROUND64(matrix
[0]);
6926 params
[1] = IROUND64(matrix
[4]);
6927 params
[2] = IROUND64(matrix
[8]);
6928 params
[3] = IROUND64(matrix
[12]);
6929 params
[4] = IROUND64(matrix
[1]);
6930 params
[5] = IROUND64(matrix
[5]);
6931 params
[6] = IROUND64(matrix
[9]);
6932 params
[7] = IROUND64(matrix
[13]);
6933 params
[8] = IROUND64(matrix
[2]);
6934 params
[9] = IROUND64(matrix
[6]);
6935 params
[10] = IROUND64(matrix
[10]);
6936 params
[11] = IROUND64(matrix
[14]);
6937 params
[12] = IROUND64(matrix
[3]);
6938 params
[13] = IROUND64(matrix
[7]);
6939 params
[14] = IROUND64(matrix
[11]);
6940 params
[15] = IROUND64(matrix
[15]);
6943 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
6945 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
6946 params
[0] = IROUND64(matrix
[0]);
6947 params
[1] = IROUND64(matrix
[4]);
6948 params
[2] = IROUND64(matrix
[8]);
6949 params
[3] = IROUND64(matrix
[12]);
6950 params
[4] = IROUND64(matrix
[1]);
6951 params
[5] = IROUND64(matrix
[5]);
6952 params
[6] = IROUND64(matrix
[9]);
6953 params
[7] = IROUND64(matrix
[13]);
6954 params
[8] = IROUND64(matrix
[2]);
6955 params
[9] = IROUND64(matrix
[6]);
6956 params
[10] = IROUND64(matrix
[10]);
6957 params
[11] = IROUND64(matrix
[14]);
6958 params
[12] = IROUND64(matrix
[3]);
6959 params
[13] = IROUND64(matrix
[7]);
6960 params
[14] = IROUND64(matrix
[11]);
6961 params
[15] = IROUND64(matrix
[15]);
6964 case GL_COLOR_MATRIX_SGI
:
6966 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
6967 params
[0] = IROUND64(matrix
[0]);
6968 params
[1] = IROUND64(matrix
[1]);
6969 params
[2] = IROUND64(matrix
[2]);
6970 params
[3] = IROUND64(matrix
[3]);
6971 params
[4] = IROUND64(matrix
[4]);
6972 params
[5] = IROUND64(matrix
[5]);
6973 params
[6] = IROUND64(matrix
[6]);
6974 params
[7] = IROUND64(matrix
[7]);
6975 params
[8] = IROUND64(matrix
[8]);
6976 params
[9] = IROUND64(matrix
[9]);
6977 params
[10] = IROUND64(matrix
[10]);
6978 params
[11] = IROUND64(matrix
[11]);
6979 params
[12] = IROUND64(matrix
[12]);
6980 params
[13] = IROUND64(matrix
[13]);
6981 params
[14] = IROUND64(matrix
[14]);
6982 params
[15] = IROUND64(matrix
[15]);
6985 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
6986 params
[0] = (GLint64
)(ctx
->ColorMatrixStack
.Depth
+ 1);
6988 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
6989 params
[0] = (GLint64
)(MAX_COLOR_STACK_DEPTH
);
6991 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
6992 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[0]);
6994 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
6995 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[1]);
6997 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
6998 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[2]);
7000 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
7001 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[3]);
7003 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
7004 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[0]);
7006 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
7007 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[1]);
7009 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
7010 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[2]);
7012 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
7013 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[3]);
7015 case GL_CONVOLUTION_1D_EXT
:
7016 CHECK_EXT1(EXT_convolution
);
7017 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Convolution1DEnabled
);
7019 case GL_CONVOLUTION_2D_EXT
:
7020 CHECK_EXT1(EXT_convolution
);
7021 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Convolution2DEnabled
);
7023 case GL_SEPARABLE_2D_EXT
:
7024 CHECK_EXT1(EXT_convolution
);
7025 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Separable2DEnabled
);
7027 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
7028 CHECK_EXT1(EXT_convolution
);
7029 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[0]);
7031 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
7032 CHECK_EXT1(EXT_convolution
);
7033 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[1]);
7035 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
7036 CHECK_EXT1(EXT_convolution
);
7037 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[2]);
7039 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
7040 CHECK_EXT1(EXT_convolution
);
7041 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[3]);
7043 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
7044 CHECK_EXT1(EXT_convolution
);
7045 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[0]);
7047 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
7048 CHECK_EXT1(EXT_convolution
);
7049 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[1]);
7051 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
7052 CHECK_EXT1(EXT_convolution
);
7053 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[2]);
7055 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
7056 CHECK_EXT1(EXT_convolution
);
7057 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[3]);
7060 CHECK_EXT1(EXT_histogram
);
7061 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.HistogramEnabled
);
7064 CHECK_EXT1(EXT_histogram
);
7065 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MinMaxEnabled
);
7067 case GL_COLOR_TABLE_SGI
:
7068 CHECK_EXT1(SGI_color_table
);
7069 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
7071 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
7072 CHECK_EXT1(SGI_color_table
);
7073 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
7075 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
7076 CHECK_EXT1(SGI_color_table
);
7077 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
7079 case GL_TEXTURE_COLOR_TABLE_SGI
:
7080 CHECK_EXT1(SGI_texture_color_table
);
7081 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
7083 case GL_COLOR_SUM_EXT
:
7084 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
7085 params
[0] = BOOLEAN_TO_INT64(ctx
->Fog
.ColorSumEnabled
);
7087 case GL_CURRENT_SECONDARY_COLOR_EXT
:
7088 CHECK_EXT1(EXT_secondary_color
);
7089 FLUSH_CURRENT(ctx
, 0);
7090 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
7091 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
7092 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
7093 params
[3] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
7095 case GL_SECONDARY_COLOR_ARRAY_EXT
:
7096 CHECK_EXT1(EXT_secondary_color
);
7097 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
7099 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
7100 CHECK_EXT1(EXT_secondary_color
);
7101 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
7103 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
7104 CHECK_EXT1(EXT_secondary_color
);
7105 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
7107 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
7108 CHECK_EXT1(EXT_secondary_color
);
7109 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
7111 case GL_CURRENT_FOG_COORDINATE_EXT
:
7112 CHECK_EXT1(EXT_fog_coord
);
7113 FLUSH_CURRENT(ctx
, 0);
7114 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
7116 case GL_FOG_COORDINATE_ARRAY_EXT
:
7117 CHECK_EXT1(EXT_fog_coord
);
7118 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
7120 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
7121 CHECK_EXT1(EXT_fog_coord
);
7122 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
7124 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
7125 CHECK_EXT1(EXT_fog_coord
);
7126 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
7128 case GL_FOG_COORDINATE_SOURCE_EXT
:
7129 CHECK_EXT1(EXT_fog_coord
);
7130 params
[0] = ENUM_TO_INT64(ctx
->Fog
.FogCoordinateSource
);
7132 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
7133 CHECK_EXT1(EXT_texture_lod_bias
);
7134 params
[0] = IROUND64(ctx
->Const
.MaxTextureLodBias
);
7136 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
7137 CHECK_EXT1(EXT_texture_filter_anisotropic
);
7138 params
[0] = IROUND64(ctx
->Const
.MaxTextureMaxAnisotropy
);
7140 case GL_MULTISAMPLE_ARB
:
7141 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.Enabled
);
7143 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
7144 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleAlphaToCoverage
);
7146 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
7147 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleAlphaToOne
);
7149 case GL_SAMPLE_COVERAGE_ARB
:
7150 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleCoverage
);
7152 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
7153 params
[0] = IROUND64(ctx
->Multisample
.SampleCoverageValue
);
7155 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
7156 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleCoverageInvert
);
7158 case GL_SAMPLE_BUFFERS_ARB
:
7159 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
7161 case GL_SAMPLES_ARB
:
7162 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.samples
);
7164 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
7165 CHECK_EXT1(IBM_rasterpos_clip
);
7166 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.RasterPositionUnclipped
);
7168 case GL_POINT_SPRITE_NV
:
7169 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
7170 params
[0] = BOOLEAN_TO_INT64(ctx
->Point
.PointSprite
);
7172 case GL_POINT_SPRITE_R_MODE_NV
:
7173 CHECK_EXT1(NV_point_sprite
);
7174 params
[0] = ENUM_TO_INT64(ctx
->Point
.SpriteRMode
);
7176 case GL_POINT_SPRITE_COORD_ORIGIN
:
7177 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
7178 params
[0] = ENUM_TO_INT64(ctx
->Point
.SpriteOrigin
);
7180 case GL_GENERATE_MIPMAP_HINT_SGIS
:
7181 CHECK_EXT1(SGIS_generate_mipmap
);
7182 params
[0] = ENUM_TO_INT64(ctx
->Hint
.GenerateMipmap
);
7184 case GL_VERTEX_PROGRAM_BINDING_NV
:
7185 CHECK_EXT1(NV_vertex_program
);
7186 params
[0] = (GLint64
)((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
7188 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
7189 CHECK_EXT1(NV_vertex_program
);
7190 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
7192 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
7193 CHECK_EXT1(NV_vertex_program
);
7194 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
7196 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
7197 CHECK_EXT1(NV_vertex_program
);
7198 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
7200 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
7201 CHECK_EXT1(NV_vertex_program
);
7202 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
7204 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
7205 CHECK_EXT1(NV_vertex_program
);
7206 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
7208 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
7209 CHECK_EXT1(NV_vertex_program
);
7210 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
7212 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
7213 CHECK_EXT1(NV_vertex_program
);
7214 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
7216 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
7217 CHECK_EXT1(NV_vertex_program
);
7218 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
7220 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
7221 CHECK_EXT1(NV_vertex_program
);
7222 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
7224 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
7225 CHECK_EXT1(NV_vertex_program
);
7226 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
7228 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
7229 CHECK_EXT1(NV_vertex_program
);
7230 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
7232 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
7233 CHECK_EXT1(NV_vertex_program
);
7234 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
7236 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
7237 CHECK_EXT1(NV_vertex_program
);
7238 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
7240 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
7241 CHECK_EXT1(NV_vertex_program
);
7242 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
7244 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
7245 CHECK_EXT1(NV_vertex_program
);
7246 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
7248 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
7249 CHECK_EXT1(NV_vertex_program
);
7250 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
7252 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
7253 CHECK_EXT1(NV_vertex_program
);
7254 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[0]);
7256 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
7257 CHECK_EXT1(NV_vertex_program
);
7258 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[1]);
7260 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
7261 CHECK_EXT1(NV_vertex_program
);
7262 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[2]);
7264 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
7265 CHECK_EXT1(NV_vertex_program
);
7266 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[3]);
7268 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
7269 CHECK_EXT1(NV_vertex_program
);
7270 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[4]);
7272 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
7273 CHECK_EXT1(NV_vertex_program
);
7274 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[5]);
7276 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
7277 CHECK_EXT1(NV_vertex_program
);
7278 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[6]);
7280 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
7281 CHECK_EXT1(NV_vertex_program
);
7282 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[7]);
7284 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
7285 CHECK_EXT1(NV_vertex_program
);
7286 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[8]);
7288 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
7289 CHECK_EXT1(NV_vertex_program
);
7290 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[9]);
7292 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
7293 CHECK_EXT1(NV_vertex_program
);
7294 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[10]);
7296 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
7297 CHECK_EXT1(NV_vertex_program
);
7298 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[11]);
7300 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
7301 CHECK_EXT1(NV_vertex_program
);
7302 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[12]);
7304 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
7305 CHECK_EXT1(NV_vertex_program
);
7306 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[13]);
7308 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
7309 CHECK_EXT1(NV_vertex_program
);
7310 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[14]);
7312 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
7313 CHECK_EXT1(NV_vertex_program
);
7314 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[15]);
7316 case GL_FRAGMENT_PROGRAM_NV
:
7317 CHECK_EXT1(NV_fragment_program
);
7318 params
[0] = BOOLEAN_TO_INT64(ctx
->FragmentProgram
.Enabled
);
7320 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
7321 CHECK_EXT1(NV_fragment_program
);
7322 params
[0] = (GLint64
)(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
7324 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
7325 CHECK_EXT1(NV_fragment_program
);
7326 params
[0] = (GLint64
)(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
7328 case GL_TEXTURE_RECTANGLE_NV
:
7329 CHECK_EXT1(NV_texture_rectangle
);
7330 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
7332 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
7333 CHECK_EXT1(NV_texture_rectangle
);
7334 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
7336 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
7337 CHECK_EXT1(NV_texture_rectangle
);
7338 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureRectSize
);
7340 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
7341 CHECK_EXT1(EXT_stencil_two_side
);
7342 params
[0] = BOOLEAN_TO_INT64(ctx
->Stencil
.TestTwoSide
);
7344 case GL_ACTIVE_STENCIL_FACE_EXT
:
7345 CHECK_EXT1(EXT_stencil_two_side
);
7346 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
7348 case GL_MAX_SHININESS_NV
:
7349 CHECK_EXT1(NV_light_max_exponent
);
7350 params
[0] = IROUND64(ctx
->Const
.MaxShininess
);
7352 case GL_MAX_SPOT_EXPONENT_NV
:
7353 CHECK_EXT1(NV_light_max_exponent
);
7354 params
[0] = IROUND64(ctx
->Const
.MaxSpotExponent
);
7356 case GL_ARRAY_BUFFER_BINDING_ARB
:
7357 params
[0] = (GLint64
)(ctx
->Array
.ArrayBufferObj
->Name
);
7359 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
7360 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
7362 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
7363 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
7365 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
7366 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
7368 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
7369 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
7371 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
7372 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
7374 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
7375 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
7377 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
7378 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
7380 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
7381 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
7383 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
7384 params
[0] = (GLint64
)(ctx
->Array
.ElementArrayBufferObj
->Name
);
7386 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
7387 CHECK_EXT1(EXT_pixel_buffer_object
);
7388 params
[0] = (GLint64
)(ctx
->Pack
.BufferObj
->Name
);
7390 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
7391 CHECK_EXT1(EXT_pixel_buffer_object
);
7392 params
[0] = (GLint64
)(ctx
->Unpack
.BufferObj
->Name
);
7394 case GL_VERTEX_PROGRAM_ARB
:
7395 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7396 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.Enabled
);
7398 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
7399 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7400 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.PointSizeEnabled
);
7402 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
7403 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7404 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.TwoSideEnabled
);
7406 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
7407 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7408 params
[0] = (GLint64
)(ctx
->Const
.MaxProgramMatrixStackDepth
);
7410 case GL_MAX_PROGRAM_MATRICES_ARB
:
7411 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7412 params
[0] = (GLint64
)(ctx
->Const
.MaxProgramMatrices
);
7414 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
7415 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7416 params
[0] = BOOLEAN_TO_INT64(ctx
->CurrentStack
->Depth
+ 1);
7418 case GL_CURRENT_MATRIX_ARB
:
7419 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
7421 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
7422 params
[0] = IROUND64(matrix
[0]);
7423 params
[1] = IROUND64(matrix
[1]);
7424 params
[2] = IROUND64(matrix
[2]);
7425 params
[3] = IROUND64(matrix
[3]);
7426 params
[4] = IROUND64(matrix
[4]);
7427 params
[5] = IROUND64(matrix
[5]);
7428 params
[6] = IROUND64(matrix
[6]);
7429 params
[7] = IROUND64(matrix
[7]);
7430 params
[8] = IROUND64(matrix
[8]);
7431 params
[9] = IROUND64(matrix
[9]);
7432 params
[10] = IROUND64(matrix
[10]);
7433 params
[11] = IROUND64(matrix
[11]);
7434 params
[12] = IROUND64(matrix
[12]);
7435 params
[13] = IROUND64(matrix
[13]);
7436 params
[14] = IROUND64(matrix
[14]);
7437 params
[15] = IROUND64(matrix
[15]);
7440 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
7441 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
7443 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
7444 params
[0] = IROUND64(matrix
[0]);
7445 params
[1] = IROUND64(matrix
[4]);
7446 params
[2] = IROUND64(matrix
[8]);
7447 params
[3] = IROUND64(matrix
[12]);
7448 params
[4] = IROUND64(matrix
[1]);
7449 params
[5] = IROUND64(matrix
[5]);
7450 params
[6] = IROUND64(matrix
[9]);
7451 params
[7] = IROUND64(matrix
[13]);
7452 params
[8] = IROUND64(matrix
[2]);
7453 params
[9] = IROUND64(matrix
[6]);
7454 params
[10] = IROUND64(matrix
[10]);
7455 params
[11] = IROUND64(matrix
[14]);
7456 params
[12] = IROUND64(matrix
[3]);
7457 params
[13] = IROUND64(matrix
[7]);
7458 params
[14] = IROUND64(matrix
[11]);
7459 params
[15] = IROUND64(matrix
[15]);
7462 case GL_MAX_VERTEX_ATTRIBS_ARB
:
7463 CHECK_EXT1(ARB_vertex_program
);
7464 params
[0] = (GLint64
)(ctx
->Const
.VertexProgram
.MaxAttribs
);
7466 case GL_PROGRAM_ERROR_POSITION_ARB
:
7467 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
7468 params
[0] = (GLint64
)(ctx
->Program
.ErrorPos
);
7470 case GL_FRAGMENT_PROGRAM_ARB
:
7471 CHECK_EXT1(ARB_fragment_program
);
7472 params
[0] = BOOLEAN_TO_INT64(ctx
->FragmentProgram
.Enabled
);
7474 case GL_MAX_TEXTURE_COORDS_ARB
:
7475 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
7476 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureCoordUnits
);
7478 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
7479 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
7480 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureImageUnits
);
7482 case GL_DEPTH_BOUNDS_TEST_EXT
:
7483 CHECK_EXT1(EXT_depth_bounds_test
);
7484 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.BoundsTest
);
7486 case GL_DEPTH_BOUNDS_EXT
:
7487 CHECK_EXT1(EXT_depth_bounds_test
);
7488 params
[0] = IROUND64(ctx
->Depth
.BoundsMin
);
7489 params
[1] = IROUND64(ctx
->Depth
.BoundsMax
);
7491 case GL_DEPTH_CLAMP
:
7492 CHECK_EXT1(ARB_depth_clamp
);
7493 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.DepthClamp
);
7495 case GL_MAX_DRAW_BUFFERS_ARB
:
7496 params
[0] = (GLint64
)(ctx
->Const
.MaxDrawBuffers
);
7498 case GL_DRAW_BUFFER0_ARB
:
7499 params
[0] = ENUM_TO_INT64(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
7501 case GL_DRAW_BUFFER1_ARB
:
7504 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7505 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7508 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
7509 params
[0] = ENUM_TO_INT64(buffer
);
7512 case GL_DRAW_BUFFER2_ARB
:
7515 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7516 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7519 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
7520 params
[0] = ENUM_TO_INT64(buffer
);
7523 case GL_DRAW_BUFFER3_ARB
:
7526 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7527 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7530 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
7531 params
[0] = ENUM_TO_INT64(buffer
);
7534 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
7535 CHECK_EXT1(OES_read_format
);
7536 if (ctx
->NewState
& _NEW_BUFFERS
)
7537 _mesa_update_state(ctx
);
7538 params
[0] = (GLint64
)(_mesa_get_color_read_type(ctx
));
7540 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
7541 CHECK_EXT1(OES_read_format
);
7542 if (ctx
->NewState
& _NEW_BUFFERS
)
7543 _mesa_update_state(ctx
);
7544 params
[0] = (GLint64
)(_mesa_get_color_read_format(ctx
));
7546 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
7547 CHECK_EXT1(ATI_fragment_shader
);
7548 params
[0] = (GLint64
)(6);
7550 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
7551 CHECK_EXT1(ATI_fragment_shader
);
7552 params
[0] = (GLint64
)(8);
7554 case GL_NUM_PASSES_ATI
:
7555 CHECK_EXT1(ATI_fragment_shader
);
7556 params
[0] = (GLint64
)(2);
7558 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
7559 CHECK_EXT1(ATI_fragment_shader
);
7560 params
[0] = (GLint64
)(8);
7562 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
7563 CHECK_EXT1(ATI_fragment_shader
);
7564 params
[0] = (GLint64
)(16);
7566 case GL_COLOR_ALPHA_PAIRING_ATI
:
7567 CHECK_EXT1(ATI_fragment_shader
);
7568 params
[0] = BOOLEAN_TO_INT64(GL_TRUE
);
7570 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
7571 CHECK_EXT1(ATI_fragment_shader
);
7572 params
[0] = (GLint64
)(3);
7574 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
7575 CHECK_EXT1(ATI_fragment_shader
);
7576 params
[0] = (GLint64
)(3);
7578 case GL_STENCIL_BACK_FUNC
:
7579 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.Function
[1]);
7581 case GL_STENCIL_BACK_VALUE_MASK
:
7582 params
[0] = (GLint64
)(ctx
->Stencil
.ValueMask
[1]);
7584 case GL_STENCIL_BACK_WRITEMASK
:
7585 params
[0] = (GLint64
)(ctx
->Stencil
.WriteMask
[1]);
7587 case GL_STENCIL_BACK_REF
:
7588 params
[0] = (GLint64
)(ctx
->Stencil
.Ref
[1]);
7590 case GL_STENCIL_BACK_FAIL
:
7591 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.FailFunc
[1]);
7593 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
7594 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZFailFunc
[1]);
7596 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
7597 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZPassFunc
[1]);
7599 case GL_FRAMEBUFFER_BINDING_EXT
:
7600 CHECK_EXT1(EXT_framebuffer_object
);
7601 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Name
);
7603 case GL_RENDERBUFFER_BINDING_EXT
:
7604 CHECK_EXT1(EXT_framebuffer_object
);
7605 params
[0] = (GLint64
)(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
7607 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
7608 CHECK_EXT1(EXT_framebuffer_object
);
7609 params
[0] = (GLint64
)(ctx
->Const
.MaxColorAttachments
);
7611 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
7612 CHECK_EXT1(EXT_framebuffer_object
);
7613 params
[0] = (GLint64
)(ctx
->Const
.MaxRenderbufferSize
);
7615 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
7616 CHECK_EXT1(EXT_framebuffer_blit
);
7617 params
[0] = (GLint64
)(ctx
->ReadBuffer
->Name
);
7619 case GL_PROVOKING_VERTEX_EXT
:
7620 CHECK_EXT1(EXT_provoking_vertex
);
7621 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.ProvokingVertex
);
7623 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
7624 CHECK_EXT1(EXT_provoking_vertex
);
7625 params
[0] = BOOLEAN_TO_INT64(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
7627 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
7628 CHECK_EXT1(ARB_fragment_shader
);
7629 params
[0] = (GLint64
)(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
7631 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
7632 CHECK_EXT1(ARB_fragment_shader
);
7633 params
[0] = ENUM_TO_INT64(ctx
->Hint
.FragmentShaderDerivative
);
7635 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
7636 CHECK_EXT1(ARB_vertex_shader
);
7637 params
[0] = (GLint64
)(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
7639 case GL_MAX_VARYING_FLOATS_ARB
:
7640 CHECK_EXT1(ARB_vertex_shader
);
7641 params
[0] = (GLint64
)(ctx
->Const
.MaxVarying
* 4);
7643 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
7644 CHECK_EXT1(ARB_vertex_shader
);
7645 params
[0] = (GLint64
)(ctx
->Const
.MaxVertexTextureImageUnits
);
7647 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
7648 CHECK_EXT1(ARB_vertex_shader
);
7649 params
[0] = (GLint64
)(ctx
->Const
.MaxCombinedTextureImageUnits
);
7651 case GL_CURRENT_PROGRAM
:
7652 CHECK_EXT1(ARB_shader_objects
);
7653 params
[0] = (GLint64
)(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
7655 case GL_MAX_SAMPLES
:
7656 CHECK_EXT1(ARB_framebuffer_object
);
7657 params
[0] = (GLint64
)(ctx
->Const
.MaxSamples
);
7659 case GL_VERTEX_ARRAY_BINDING_APPLE
:
7660 CHECK_EXT1(APPLE_vertex_array_object
);
7661 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Name
);
7663 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
7664 CHECK_EXT1(ARB_seamless_cube_map
);
7665 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.CubeMapSeamless
);
7667 case GL_MAX_SERVER_WAIT_TIMEOUT
:
7668 CHECK_EXT1(ARB_sync
);
7669 params
[0] = ctx
->Const
.MaxServerWaitTimeout
;
7671 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7672 CHECK_EXT1(EXT_transform_feedback
);
7673 params
[0] = (GLint64
)(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
7675 case GL_RASTERIZER_DISCARD
:
7676 CHECK_EXT1(EXT_transform_feedback
);
7677 params
[0] = BOOLEAN_TO_INT64(ctx
->TransformFeedback
.RasterDiscard
);
7679 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
7680 CHECK_EXT1(EXT_transform_feedback
);
7681 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
7683 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
7684 CHECK_EXT1(EXT_transform_feedback
);
7685 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
7687 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
7688 CHECK_EXT1(EXT_transform_feedback
);
7689 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
7691 case GL_NUM_EXTENSIONS
:
7693 params
[0] = (GLint64
)(_mesa_get_extension_count(ctx
));
7695 case GL_MAJOR_VERSION
:
7697 params
[0] = (GLint64
)(ctx
->VersionMajor
);
7699 case GL_MINOR_VERSION
:
7701 params
[0] = (GLint64
)(ctx
->VersionMinor
);
7703 case GL_CONTEXT_FLAGS
:
7705 params
[0] = (GLint64
)(ctx
->Const
.ContextFlags
);
7707 case GL_PRIMITIVE_RESTART
:
7709 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.PrimitiveRestart
);
7711 case GL_PRIMITIVE_RESTART_INDEX
:
7713 params
[0] = (GLint64
)(ctx
->Array
.RestartIndex
);
7715 case GL_CONTEXT_PROFILE_MASK
:
7717 params
[0] = (GLint64
)(ctx
->Const
.ProfileMask
);
7720 goto invalid_enum_error
;
7725 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetInteger64v(pname=0x%x)", pname
);
7727 #endif /* FEATURE_ARB_sync */
7731 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
7733 const GLfloat magic
= -1234.5F
;
7740 /* Init temp array to magic numbers so we can figure out how many values
7741 * are returned by the GetFloatv() call.
7743 for (i
= 0; i
< 16; i
++)
7746 _mesa_GetFloatv(pname
, values
);
7748 for (i
= 0; i
< 16 && values
[i
] != magic
; i
++)
7749 params
[i
] = (GLdouble
) values
[i
];
7753 _mesa_GetBooleanIndexedv( GLenum pname
, GLuint index
, GLboolean
*params
)
7755 GET_CURRENT_CONTEXT(ctx
);
7756 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
7757 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7765 CHECK_EXT1(EXT_draw_buffers2
);
7766 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7767 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7770 params
[0] = INT_TO_BOOLEAN(((ctx
->Color
.BlendEnabled
>> index
) & 1));
7772 case GL_COLOR_WRITEMASK
:
7773 CHECK_EXT1(EXT_draw_buffers2
);
7774 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7775 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7778 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0);
7779 params
[1] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0);
7780 params
[2] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0);
7781 params
[3] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0);
7783 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7784 CHECK_EXT1(EXT_transform_feedback
);
7785 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7786 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7789 params
[0] = INT64_TO_BOOLEAN(ctx
->TransformFeedback
.Offset
[index
]);
7791 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7792 CHECK_EXT1(EXT_transform_feedback
);
7793 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7794 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7797 params
[0] = INT64_TO_BOOLEAN(ctx
->TransformFeedback
.Size
[index
]);
7799 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7800 CHECK_EXT1(EXT_transform_feedback
);
7801 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7802 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7805 params
[0] = INT_TO_BOOLEAN(ctx
->TransformFeedback
.Buffers
[index
]->Name
);
7808 goto invalid_enum_error
;
7813 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanIndexedv(pname=0x%x)", pname
);
7817 _mesa_GetIntegerIndexedv( GLenum pname
, GLuint index
, GLint
*params
)
7819 GET_CURRENT_CONTEXT(ctx
);
7820 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
7821 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7829 CHECK_EXT1(EXT_draw_buffers2
);
7830 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7831 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7834 params
[0] = ((ctx
->Color
.BlendEnabled
>> index
) & 1);
7836 case GL_COLOR_WRITEMASK
:
7837 CHECK_EXT1(EXT_draw_buffers2
);
7838 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7839 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7842 params
[0] = ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0;
7843 params
[1] = ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0;
7844 params
[2] = ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0;
7845 params
[3] = ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0;
7847 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7848 CHECK_EXT1(EXT_transform_feedback
);
7849 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7850 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7853 params
[0] = INT64_TO_INT(ctx
->TransformFeedback
.Offset
[index
]);
7855 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7856 CHECK_EXT1(EXT_transform_feedback
);
7857 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7858 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7861 params
[0] = INT64_TO_INT(ctx
->TransformFeedback
.Size
[index
]);
7863 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7864 CHECK_EXT1(EXT_transform_feedback
);
7865 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7866 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7869 params
[0] = ctx
->TransformFeedback
.Buffers
[index
]->Name
;
7872 goto invalid_enum_error
;
7877 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerIndexedv(pname=0x%x)", pname
);
7880 #if FEATURE_ARB_sync
7882 _mesa_GetInteger64Indexedv( GLenum pname
, GLuint index
, GLint64
*params
)
7884 GET_CURRENT_CONTEXT(ctx
);
7885 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
7886 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7894 CHECK_EXT1(EXT_draw_buffers2
);
7895 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7896 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7899 params
[0] = (GLint64
)(((ctx
->Color
.BlendEnabled
>> index
) & 1));
7901 case GL_COLOR_WRITEMASK
:
7902 CHECK_EXT1(EXT_draw_buffers2
);
7903 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7904 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7907 params
[0] = (GLint64
)(ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0);
7908 params
[1] = (GLint64
)(ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0);
7909 params
[2] = (GLint64
)(ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0);
7910 params
[3] = (GLint64
)(ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0);
7912 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
7913 CHECK_EXT1(EXT_transform_feedback
);
7914 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7915 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7918 params
[0] = ctx
->TransformFeedback
.Offset
[index
];
7920 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7921 CHECK_EXT1(EXT_transform_feedback
);
7922 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7923 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7926 params
[0] = ctx
->TransformFeedback
.Size
[index
];
7928 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7929 CHECK_EXT1(EXT_transform_feedback
);
7930 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7931 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7934 params
[0] = (GLint64
)(ctx
->TransformFeedback
.Buffers
[index
]->Name
);
7937 goto invalid_enum_error
;
7942 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetInteger64Indexedv(pname=0x%x)", pname
);
7944 #endif /* FEATURE_ARB_sync */