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
);
86 if (ctx
->Driver
.GetBooleanv
&&
87 ctx
->Driver
.GetBooleanv(ctx
, pname
, params
))
91 case GL_ACCUM_RED_BITS
:
92 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumRedBits
);
94 case GL_ACCUM_GREEN_BITS
:
95 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
97 case GL_ACCUM_BLUE_BITS
:
98 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
100 case GL_ACCUM_ALPHA_BITS
:
101 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
103 case GL_ACCUM_CLEAR_VALUE
:
104 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[0]);
105 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[1]);
106 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[2]);
107 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Accum
.ClearColor
[3]);
110 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.AlphaBias
);
113 if (ctx
->NewState
& _NEW_BUFFERS
)
114 _mesa_update_state(ctx
);
115 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.alphaBits
);
118 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.AlphaScale
);
121 params
[0] = ctx
->Color
.AlphaEnabled
;
123 case GL_ALPHA_TEST_FUNC
:
124 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.AlphaFunc
);
126 case GL_ALPHA_TEST_REF
:
127 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.AlphaRef
);
129 case GL_ATTRIB_STACK_DEPTH
:
130 params
[0] = INT_TO_BOOLEAN(ctx
->AttribStackDepth
);
133 params
[0] = ctx
->Eval
.AutoNormal
;
136 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
139 params
[0] = (ctx
->Color
.BlendEnabled
& 1);
142 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstRGB
);
145 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcRGB
);
147 case GL_BLEND_SRC_RGB_EXT
:
148 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcRGB
);
150 case GL_BLEND_DST_RGB_EXT
:
151 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstRGB
);
153 case GL_BLEND_SRC_ALPHA_EXT
:
154 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendSrcA
);
156 case GL_BLEND_DST_ALPHA_EXT
:
157 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendDstA
);
159 case GL_BLEND_EQUATION
:
160 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendEquationRGB
);
162 case GL_BLEND_EQUATION_ALPHA_EXT
:
163 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.BlendEquationA
);
165 case GL_BLEND_COLOR_EXT
:
166 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[0]);
167 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[1]);
168 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[2]);
169 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Color
.BlendColor
[3]);
172 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.BlueBias
);
175 if (ctx
->NewState
& _NEW_BUFFERS
)
176 _mesa_update_state(ctx
);
177 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.blueBits
);
180 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.BlueScale
);
182 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
183 params
[0] = INT_TO_BOOLEAN(ctx
->ClientAttribStackDepth
);
186 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1;
189 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1;
192 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1;
195 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1;
198 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1;
201 params
[0] = (ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1;
203 case GL_COLOR_CLEAR_VALUE
:
204 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[0]);
205 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[1]);
206 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[2]);
207 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Color
.ClearColor
[3]);
209 case GL_COLOR_MATERIAL
:
210 params
[0] = ctx
->Light
.ColorMaterialEnabled
;
212 case GL_COLOR_MATERIAL_FACE
:
213 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ColorMaterialFace
);
215 case GL_COLOR_MATERIAL_PARAMETER
:
216 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ColorMaterialMode
);
218 case GL_COLOR_WRITEMASK
:
219 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
220 params
[1] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
221 params
[2] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
222 params
[3] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
225 params
[0] = ctx
->Polygon
.CullFlag
;
227 case GL_CULL_FACE_MODE
:
228 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.CullFaceMode
);
230 case GL_CURRENT_COLOR
:
231 FLUSH_CURRENT(ctx
, 0);
232 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
233 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
234 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
235 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
237 case GL_CURRENT_INDEX
:
238 FLUSH_CURRENT(ctx
, 0);
239 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
241 case GL_CURRENT_NORMAL
:
242 FLUSH_CURRENT(ctx
, 0);
243 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
244 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
245 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
247 case GL_CURRENT_RASTER_COLOR
:
248 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[0]);
249 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[1]);
250 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[2]);
251 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterColor
[3]);
253 case GL_CURRENT_RASTER_DISTANCE
:
254 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterDistance
);
256 case GL_CURRENT_RASTER_INDEX
:
257 params
[0] = FLOAT_TO_BOOLEAN(1.0);
259 case GL_CURRENT_RASTER_POSITION
:
260 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[0]);
261 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[1]);
262 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[2]);
263 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterPos
[3]);
265 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
266 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[0]);
267 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[1]);
268 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[2]);
269 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterSecondaryColor
[3]);
271 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
273 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
274 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
275 _mesa_error(ctx
, GL_INVALID_OPERATION
,
276 "glGet(raster tex coords, unit %u)", unit
);
279 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][0]);
280 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][1]);
281 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][2]);
282 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.RasterTexCoords
[unit
][3]);
285 case GL_CURRENT_RASTER_POSITION_VALID
:
286 params
[0] = ctx
->Current
.RasterPosValid
;
288 case GL_CURRENT_TEXTURE_COORDS
:
290 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
291 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
292 _mesa_error(ctx
, GL_INVALID_OPERATION
,
293 "glGet(current tex coords, unit %u)", unit
);
296 FLUSH_CURRENT(ctx
, 0);
297 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
298 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
299 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
300 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
304 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.DepthBias
);
307 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.depthBits
);
309 case GL_DEPTH_CLEAR_VALUE
:
310 params
[0] = FLOAT_TO_BOOLEAN(((GLfloat
) ctx
->Depth
.Clear
));
313 params
[0] = ENUM_TO_BOOLEAN(ctx
->Depth
.Func
);
316 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Viewport
.Near
);
317 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Viewport
.Far
);
320 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.DepthScale
);
323 params
[0] = ctx
->Depth
.Test
;
325 case GL_DEPTH_WRITEMASK
:
326 params
[0] = ctx
->Depth
.Mask
;
329 params
[0] = ctx
->Color
.DitherFlag
;
331 case GL_DOUBLEBUFFER
:
332 params
[0] = ctx
->DrawBuffer
->Visual
.doubleBufferMode
;
335 params
[0] = ENUM_TO_BOOLEAN(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
338 FLUSH_CURRENT(ctx
, 0);
339 params
[0] = (ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0);
341 case GL_FEEDBACK_BUFFER_SIZE
:
342 params
[0] = INT_TO_BOOLEAN(ctx
->Feedback
.BufferSize
);
344 case GL_FEEDBACK_BUFFER_TYPE
:
345 params
[0] = ENUM_TO_BOOLEAN(ctx
->Feedback
.Type
);
348 params
[0] = ctx
->Fog
.Enabled
;
351 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[0]);
352 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[1]);
353 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[2]);
354 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Color
[3]);
357 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Density
);
360 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.End
);
363 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.Fog
);
366 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Index
);
369 params
[0] = ENUM_TO_BOOLEAN(ctx
->Fog
.Mode
);
372 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Fog
.Start
);
375 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.FrontFace
);
378 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.GreenBias
);
381 if (ctx
->NewState
& _NEW_BUFFERS
)
382 _mesa_update_state(ctx
);
383 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.greenBits
);
386 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.GreenScale
);
389 if (ctx
->NewState
& _NEW_BUFFERS
)
390 _mesa_update_state(ctx
);
391 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.indexBits
);
393 case GL_INDEX_CLEAR_VALUE
:
394 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ClearIndex
);
397 params
[0] = GL_FALSE
;
399 case GL_INDEX_OFFSET
:
400 params
[0] = INT_TO_BOOLEAN(ctx
->Pixel
.IndexOffset
);
403 params
[0] = INT_TO_BOOLEAN(ctx
->Pixel
.IndexShift
);
405 case GL_INDEX_WRITEMASK
:
406 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.IndexMask
);
409 params
[0] = ctx
->Light
.Light
[0].Enabled
;
412 params
[0] = ctx
->Light
.Light
[1].Enabled
;
415 params
[0] = ctx
->Light
.Light
[2].Enabled
;
418 params
[0] = ctx
->Light
.Light
[3].Enabled
;
421 params
[0] = ctx
->Light
.Light
[4].Enabled
;
424 params
[0] = ctx
->Light
.Light
[5].Enabled
;
427 params
[0] = ctx
->Light
.Light
[6].Enabled
;
430 params
[0] = ctx
->Light
.Light
[7].Enabled
;
433 params
[0] = ctx
->Light
.Enabled
;
435 case GL_LIGHT_MODEL_AMBIENT
:
436 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[0]);
437 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[1]);
438 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[2]);
439 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Light
.Model
.Ambient
[3]);
441 case GL_LIGHT_MODEL_COLOR_CONTROL
:
442 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.Model
.ColorControl
);
444 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
445 params
[0] = ctx
->Light
.Model
.LocalViewer
;
447 case GL_LIGHT_MODEL_TWO_SIDE
:
448 params
[0] = ctx
->Light
.Model
.TwoSide
;
451 params
[0] = ctx
->Line
.SmoothFlag
;
453 case GL_LINE_SMOOTH_HINT
:
454 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.LineSmooth
);
456 case GL_LINE_STIPPLE
:
457 params
[0] = ctx
->Line
.StippleFlag
;
459 case GL_LINE_STIPPLE_PATTERN
:
460 params
[0] = INT_TO_BOOLEAN(ctx
->Line
.StipplePattern
);
462 case GL_LINE_STIPPLE_REPEAT
:
463 params
[0] = INT_TO_BOOLEAN(ctx
->Line
.StippleFactor
);
466 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Line
.Width
);
468 case GL_LINE_WIDTH_GRANULARITY
:
469 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.LineWidthGranularity
);
471 case GL_LINE_WIDTH_RANGE
:
472 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinLineWidthAA
);
473 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxLineWidthAA
);
475 case GL_ALIASED_LINE_WIDTH_RANGE
:
476 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinLineWidth
);
477 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxLineWidth
);
480 params
[0] = INT_TO_BOOLEAN(ctx
->List
.ListBase
);
483 params
[0] = INT_TO_BOOLEAN((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
488 if (!ctx
->CompileFlag
)
490 else if (ctx
->ExecuteFlag
)
491 mode
= GL_COMPILE_AND_EXECUTE
;
494 params
[0] = ENUM_TO_BOOLEAN(mode
);
497 case GL_INDEX_LOGIC_OP
:
498 params
[0] = ctx
->Color
.IndexLogicOpEnabled
;
500 case GL_COLOR_LOGIC_OP
:
501 params
[0] = ctx
->Color
.ColorLogicOpEnabled
;
503 case GL_LOGIC_OP_MODE
:
504 params
[0] = ENUM_TO_BOOLEAN(ctx
->Color
.LogicOp
);
506 case GL_MAP1_COLOR_4
:
507 params
[0] = ctx
->Eval
.Map1Color4
;
509 case GL_MAP1_GRID_DOMAIN
:
510 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid1u1
);
511 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid1u2
);
513 case GL_MAP1_GRID_SEGMENTS
:
514 params
[0] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid1un
);
517 params
[0] = ctx
->Eval
.Map1Index
;
520 params
[0] = ctx
->Eval
.Map1Normal
;
522 case GL_MAP1_TEXTURE_COORD_1
:
523 params
[0] = ctx
->Eval
.Map1TextureCoord1
;
525 case GL_MAP1_TEXTURE_COORD_2
:
526 params
[0] = ctx
->Eval
.Map1TextureCoord2
;
528 case GL_MAP1_TEXTURE_COORD_3
:
529 params
[0] = ctx
->Eval
.Map1TextureCoord3
;
531 case GL_MAP1_TEXTURE_COORD_4
:
532 params
[0] = ctx
->Eval
.Map1TextureCoord4
;
534 case GL_MAP1_VERTEX_3
:
535 params
[0] = ctx
->Eval
.Map1Vertex3
;
537 case GL_MAP1_VERTEX_4
:
538 params
[0] = ctx
->Eval
.Map1Vertex4
;
540 case GL_MAP2_COLOR_4
:
541 params
[0] = ctx
->Eval
.Map2Color4
;
543 case GL_MAP2_GRID_DOMAIN
:
544 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2u1
);
545 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2u2
);
546 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2v1
);
547 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Eval
.MapGrid2v2
);
549 case GL_MAP2_GRID_SEGMENTS
:
550 params
[0] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid2un
);
551 params
[1] = INT_TO_BOOLEAN(ctx
->Eval
.MapGrid2vn
);
554 params
[0] = ctx
->Eval
.Map2Index
;
557 params
[0] = ctx
->Eval
.Map2Normal
;
559 case GL_MAP2_TEXTURE_COORD_1
:
560 params
[0] = ctx
->Eval
.Map2TextureCoord1
;
562 case GL_MAP2_TEXTURE_COORD_2
:
563 params
[0] = ctx
->Eval
.Map2TextureCoord2
;
565 case GL_MAP2_TEXTURE_COORD_3
:
566 params
[0] = ctx
->Eval
.Map2TextureCoord3
;
568 case GL_MAP2_TEXTURE_COORD_4
:
569 params
[0] = ctx
->Eval
.Map2TextureCoord4
;
571 case GL_MAP2_VERTEX_3
:
572 params
[0] = ctx
->Eval
.Map2Vertex3
;
574 case GL_MAP2_VERTEX_4
:
575 params
[0] = ctx
->Eval
.Map2Vertex4
;
578 params
[0] = ctx
->Pixel
.MapColorFlag
;
581 params
[0] = ctx
->Pixel
.MapStencilFlag
;
584 params
[0] = ENUM_TO_BOOLEAN(ctx
->Transform
.MatrixMode
);
586 case GL_MAX_ATTRIB_STACK_DEPTH
:
587 params
[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH
);
589 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
590 params
[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
592 case GL_MAX_CLIP_PLANES
:
593 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxClipPlanes
);
595 case GL_MAX_ELEMENTS_VERTICES
:
596 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayLockSize
);
598 case GL_MAX_ELEMENTS_INDICES
:
599 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayLockSize
);
601 case GL_MAX_EVAL_ORDER
:
602 params
[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER
);
605 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxLights
);
607 case GL_MAX_LIST_NESTING
:
608 params
[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING
);
610 case GL_MAX_MODELVIEW_STACK_DEPTH
:
611 params
[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH
);
613 case GL_MAX_NAME_STACK_DEPTH
:
614 params
[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH
);
616 case GL_MAX_PIXEL_MAP_TABLE
:
617 params
[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE
);
619 case GL_MAX_PROJECTION_STACK_DEPTH
:
620 params
[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH
);
622 case GL_MAX_TEXTURE_SIZE
:
623 params
[0] = INT_TO_BOOLEAN(1 << (ctx
->Const
.MaxTextureLevels
- 1));
625 case GL_MAX_3D_TEXTURE_SIZE
:
626 params
[0] = INT_TO_BOOLEAN(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
628 case GL_MAX_TEXTURE_STACK_DEPTH
:
629 params
[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH
);
631 case GL_MAX_VIEWPORT_DIMS
:
632 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxViewportWidth
);
633 params
[1] = INT_TO_BOOLEAN(ctx
->Const
.MaxViewportHeight
);
635 case GL_MODELVIEW_MATRIX
:
637 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
638 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
639 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
640 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
641 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
642 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
643 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
644 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
645 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
646 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
647 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
648 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
649 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
650 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
651 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
652 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
653 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
656 case GL_MODELVIEW_STACK_DEPTH
:
657 params
[0] = INT_TO_BOOLEAN(ctx
->ModelviewMatrixStack
.Depth
+ 1);
659 case GL_NAME_STACK_DEPTH
:
660 params
[0] = INT_TO_BOOLEAN(ctx
->Select
.NameStackDepth
);
663 params
[0] = ctx
->Transform
.Normalize
;
665 case GL_PACK_ALIGNMENT
:
666 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.Alignment
);
668 case GL_PACK_LSB_FIRST
:
669 params
[0] = ctx
->Pack
.LsbFirst
;
671 case GL_PACK_ROW_LENGTH
:
672 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.RowLength
);
674 case GL_PACK_SKIP_PIXELS
:
675 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipPixels
);
677 case GL_PACK_SKIP_ROWS
:
678 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipRows
);
680 case GL_PACK_SWAP_BYTES
:
681 params
[0] = ctx
->Pack
.SwapBytes
;
683 case GL_PACK_SKIP_IMAGES_EXT
:
684 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.SkipImages
);
686 case GL_PACK_IMAGE_HEIGHT_EXT
:
687 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.ImageHeight
);
689 case GL_PACK_INVERT_MESA
:
690 params
[0] = ctx
->Pack
.Invert
;
692 case GL_PERSPECTIVE_CORRECTION_HINT
:
693 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PerspectiveCorrection
);
695 case GL_PIXEL_MAP_A_TO_A_SIZE
:
696 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.AtoA
.Size
);
698 case GL_PIXEL_MAP_B_TO_B_SIZE
:
699 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.BtoB
.Size
);
701 case GL_PIXEL_MAP_G_TO_G_SIZE
:
702 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.GtoG
.Size
);
704 case GL_PIXEL_MAP_I_TO_A_SIZE
:
705 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoA
.Size
);
707 case GL_PIXEL_MAP_I_TO_B_SIZE
:
708 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoB
.Size
);
710 case GL_PIXEL_MAP_I_TO_G_SIZE
:
711 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoG
.Size
);
713 case GL_PIXEL_MAP_I_TO_I_SIZE
:
714 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoI
.Size
);
716 case GL_PIXEL_MAP_I_TO_R_SIZE
:
717 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.ItoR
.Size
);
719 case GL_PIXEL_MAP_R_TO_R_SIZE
:
720 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.RtoR
.Size
);
722 case GL_PIXEL_MAP_S_TO_S_SIZE
:
723 params
[0] = INT_TO_BOOLEAN(ctx
->PixelMaps
.StoS
.Size
);
726 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Size
);
728 case GL_POINT_SIZE_GRANULARITY
:
729 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.PointSizeGranularity
);
731 case GL_POINT_SIZE_RANGE
:
732 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinPointSizeAA
);
733 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxPointSizeAA
);
735 case GL_ALIASED_POINT_SIZE_RANGE
:
736 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MinPointSize
);
737 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxPointSize
);
739 case GL_POINT_SMOOTH
:
740 params
[0] = ctx
->Point
.SmoothFlag
;
742 case GL_POINT_SMOOTH_HINT
:
743 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PointSmooth
);
745 case GL_POINT_SIZE_MIN_EXT
:
746 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.MinSize
);
748 case GL_POINT_SIZE_MAX_EXT
:
749 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.MaxSize
);
751 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
752 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Threshold
);
754 case GL_DISTANCE_ATTENUATION_EXT
:
755 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[0]);
756 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[1]);
757 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Point
.Params
[2]);
759 case GL_POLYGON_MODE
:
760 params
[0] = ENUM_TO_BOOLEAN(ctx
->Polygon
.FrontMode
);
761 params
[1] = ENUM_TO_BOOLEAN(ctx
->Polygon
.BackMode
);
763 case GL_POLYGON_OFFSET_BIAS_EXT
:
764 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetUnits
);
766 case GL_POLYGON_OFFSET_FACTOR
:
767 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetFactor
);
769 case GL_POLYGON_OFFSET_UNITS
:
770 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Polygon
.OffsetUnits
);
772 case GL_POLYGON_OFFSET_POINT
:
773 params
[0] = ctx
->Polygon
.OffsetPoint
;
775 case GL_POLYGON_OFFSET_LINE
:
776 params
[0] = ctx
->Polygon
.OffsetLine
;
778 case GL_POLYGON_OFFSET_FILL
:
779 params
[0] = ctx
->Polygon
.OffsetFill
;
781 case GL_POLYGON_SMOOTH
:
782 params
[0] = ctx
->Polygon
.SmoothFlag
;
784 case GL_POLYGON_SMOOTH_HINT
:
785 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.PolygonSmooth
);
787 case GL_POLYGON_STIPPLE
:
788 params
[0] = ctx
->Polygon
.StippleFlag
;
790 case GL_PROJECTION_MATRIX
:
792 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
793 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
794 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
795 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
796 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
797 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
798 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
799 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
800 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
801 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
802 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
803 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
804 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
805 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
806 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
807 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
808 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
811 case GL_PROJECTION_STACK_DEPTH
:
812 params
[0] = INT_TO_BOOLEAN(ctx
->ProjectionMatrixStack
.Depth
+ 1);
815 params
[0] = ENUM_TO_BOOLEAN(ctx
->ReadBuffer
->ColorReadBuffer
);
818 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.RedBias
);
821 if (ctx
->NewState
& _NEW_BUFFERS
)
822 _mesa_update_state(ctx
);
823 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.redBits
);
826 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.RedScale
);
829 params
[0] = ENUM_TO_BOOLEAN(ctx
->RenderMode
);
831 case GL_RESCALE_NORMAL
:
832 params
[0] = ctx
->Transform
.RescaleNormals
;
838 params
[0] = INT_TO_BOOLEAN(ctx
->Scissor
.X
);
839 params
[1] = INT_TO_BOOLEAN(ctx
->Scissor
.Y
);
840 params
[2] = INT_TO_BOOLEAN(ctx
->Scissor
.Width
);
841 params
[3] = INT_TO_BOOLEAN(ctx
->Scissor
.Height
);
843 case GL_SCISSOR_TEST
:
844 params
[0] = ctx
->Scissor
.Enabled
;
846 case GL_SELECTION_BUFFER_SIZE
:
847 params
[0] = INT_TO_BOOLEAN(ctx
->Select
.BufferSize
);
850 params
[0] = ENUM_TO_BOOLEAN(ctx
->Light
.ShadeModel
);
852 case GL_SHARED_TEXTURE_PALETTE_EXT
:
853 params
[0] = ctx
->Texture
.SharedPalette
;
855 case GL_STENCIL_BITS
:
856 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.stencilBits
);
858 case GL_STENCIL_CLEAR_VALUE
:
859 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Clear
);
861 case GL_STENCIL_FAIL
:
862 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
864 case GL_STENCIL_FUNC
:
865 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
867 case GL_STENCIL_PASS_DEPTH_FAIL
:
868 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
870 case GL_STENCIL_PASS_DEPTH_PASS
:
871 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
874 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
876 case GL_STENCIL_TEST
:
877 params
[0] = ctx
->Stencil
.Enabled
;
879 case GL_STENCIL_VALUE_MASK
:
880 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
882 case GL_STENCIL_WRITEMASK
:
883 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
886 params
[0] = ctx
->DrawBuffer
->Visual
.stereoMode
;
888 case GL_SUBPIXEL_BITS
:
889 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.SubPixelBits
);
892 params
[0] = _mesa_IsEnabled(GL_TEXTURE_1D
);
895 params
[0] = _mesa_IsEnabled(GL_TEXTURE_2D
);
898 params
[0] = _mesa_IsEnabled(GL_TEXTURE_3D
);
900 case GL_TEXTURE_1D_ARRAY_EXT
:
901 CHECK_EXT1(MESA_texture_array
);
902 params
[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
);
904 case GL_TEXTURE_2D_ARRAY_EXT
:
905 CHECK_EXT1(MESA_texture_array
);
906 params
[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
);
908 case GL_TEXTURE_BINDING_1D
:
909 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
911 case GL_TEXTURE_BINDING_2D
:
912 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
914 case GL_TEXTURE_BINDING_3D
:
915 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
917 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
918 CHECK_EXT1(MESA_texture_array
);
919 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
921 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
922 CHECK_EXT1(MESA_texture_array
);
923 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
925 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
926 CHECK_EXT1(MESA_texture_array
);
927 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxArrayTextureLayers
);
929 case GL_TEXTURE_GEN_S
:
930 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0);
932 case GL_TEXTURE_GEN_T
:
933 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0);
935 case GL_TEXTURE_GEN_R
:
936 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0);
938 case GL_TEXTURE_GEN_Q
:
939 params
[0] = ((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0);
941 case GL_TEXTURE_MATRIX
:
943 const GLfloat
*matrix
;
944 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
945 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
946 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
950 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
951 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
952 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
953 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
954 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
955 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
956 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
957 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
958 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
959 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
960 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
961 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
962 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
963 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
964 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
965 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
966 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
969 case GL_TEXTURE_STACK_DEPTH
:
971 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
972 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
973 _mesa_error(ctx
, GL_INVALID_OPERATION
,
974 "glGet(texture stack depth, unit %u)", unit
);
977 params
[0] = INT_TO_BOOLEAN(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
980 case GL_UNPACK_ALIGNMENT
:
981 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.Alignment
);
983 case GL_UNPACK_LSB_FIRST
:
984 params
[0] = ctx
->Unpack
.LsbFirst
;
986 case GL_UNPACK_ROW_LENGTH
:
987 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.RowLength
);
989 case GL_UNPACK_SKIP_PIXELS
:
990 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipPixels
);
992 case GL_UNPACK_SKIP_ROWS
:
993 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipRows
);
995 case GL_UNPACK_SWAP_BYTES
:
996 params
[0] = ctx
->Unpack
.SwapBytes
;
998 case GL_UNPACK_SKIP_IMAGES_EXT
:
999 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.SkipImages
);
1001 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
1002 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.ImageHeight
);
1004 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
1005 params
[0] = ctx
->Unpack
.ClientStorage
;
1008 params
[0] = INT_TO_BOOLEAN(ctx
->Viewport
.X
);
1009 params
[1] = INT_TO_BOOLEAN(ctx
->Viewport
.Y
);
1010 params
[2] = INT_TO_BOOLEAN(ctx
->Viewport
.Width
);
1011 params
[3] = INT_TO_BOOLEAN(ctx
->Viewport
.Height
);
1014 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.ZoomX
);
1017 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.ZoomY
);
1019 case GL_VERTEX_ARRAY
:
1020 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Enabled
;
1022 case GL_VERTEX_ARRAY_SIZE
:
1023 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Size
);
1025 case GL_VERTEX_ARRAY_TYPE
:
1026 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Type
);
1028 case GL_VERTEX_ARRAY_STRIDE
:
1029 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
1031 case GL_VERTEX_ARRAY_COUNT_EXT
:
1032 params
[0] = INT_TO_BOOLEAN(0);
1034 case GL_NORMAL_ARRAY
:
1035 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
1037 case GL_NORMAL_ARRAY_TYPE
:
1038 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Type
);
1040 case GL_NORMAL_ARRAY_STRIDE
:
1041 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.Stride
);
1043 case GL_NORMAL_ARRAY_COUNT_EXT
:
1044 params
[0] = INT_TO_BOOLEAN(0);
1046 case GL_COLOR_ARRAY
:
1047 params
[0] = ctx
->Array
.ArrayObj
->Color
.Enabled
;
1049 case GL_COLOR_ARRAY_SIZE
:
1050 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Size
);
1052 case GL_COLOR_ARRAY_TYPE
:
1053 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Type
);
1055 case GL_COLOR_ARRAY_STRIDE
:
1056 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.Stride
);
1058 case GL_COLOR_ARRAY_COUNT_EXT
:
1059 params
[0] = INT_TO_BOOLEAN(0);
1061 case GL_INDEX_ARRAY
:
1062 params
[0] = ctx
->Array
.ArrayObj
->Index
.Enabled
;
1064 case GL_INDEX_ARRAY_TYPE
:
1065 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.Type
);
1067 case GL_INDEX_ARRAY_STRIDE
:
1068 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.Stride
);
1070 case GL_INDEX_ARRAY_COUNT_EXT
:
1071 params
[0] = INT_TO_BOOLEAN(0);
1073 case GL_TEXTURE_COORD_ARRAY
:
1074 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
;
1076 case GL_TEXTURE_COORD_ARRAY_SIZE
:
1077 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
1079 case GL_TEXTURE_COORD_ARRAY_TYPE
:
1080 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
1082 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
1083 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
1085 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
1086 params
[0] = INT_TO_BOOLEAN(0);
1088 case GL_EDGE_FLAG_ARRAY
:
1089 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
;
1091 case GL_EDGE_FLAG_ARRAY_STRIDE
:
1092 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
1094 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
1095 params
[0] = INT_TO_BOOLEAN(0);
1097 case GL_MAX_TEXTURE_UNITS_ARB
:
1098 CHECK_EXT1(ARB_multitexture
);
1099 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureUnits
);
1101 case GL_ACTIVE_TEXTURE_ARB
:
1102 CHECK_EXT1(ARB_multitexture
);
1103 params
[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
1105 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
1106 CHECK_EXT1(ARB_multitexture
);
1107 params
[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
1109 case GL_TEXTURE_CUBE_MAP_ARB
:
1110 CHECK_EXT1(ARB_texture_cube_map
);
1111 params
[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
);
1113 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
1114 CHECK_EXT1(ARB_texture_cube_map
);
1115 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
1117 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
1118 CHECK_EXT1(ARB_texture_cube_map
);
1119 params
[0] = INT_TO_BOOLEAN((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
1121 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
1122 params
[0] = INT_TO_BOOLEAN(ctx
->Hint
.TextureCompression
);
1124 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
1125 params
[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
1127 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
1130 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
1132 for (i
= 0; i
< n
; i
++)
1133 params
[i
] = ENUM_TO_BOOLEAN(formats
[i
]);
1136 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
1137 CHECK_EXT1(EXT_compiled_vertex_array
);
1138 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.LockFirst
);
1140 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
1141 CHECK_EXT1(EXT_compiled_vertex_array
);
1142 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.LockCount
);
1144 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
1146 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
1147 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1148 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1149 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1150 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1151 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1152 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1153 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1154 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1155 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1156 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1157 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1158 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1159 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1160 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1161 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1162 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1165 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
1167 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
1168 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1169 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1170 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1171 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1172 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1173 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1174 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1175 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1176 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1177 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1178 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1179 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1180 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1181 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1182 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1183 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1186 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
1188 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
1189 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1190 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1191 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1192 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1193 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1194 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1195 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1196 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1197 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1198 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1199 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1200 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1201 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1202 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1203 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1204 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1207 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
1209 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
1210 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1211 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1212 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1213 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1214 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1215 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1216 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1217 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1218 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1219 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1220 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1221 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1222 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1223 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1224 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1225 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1228 case GL_COLOR_MATRIX_SGI
:
1230 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
1231 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1232 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
1233 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
1234 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
1235 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
1236 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1237 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
1238 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
1239 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
1240 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
1241 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1242 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
1243 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
1244 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
1245 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
1246 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1249 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
1250 params
[0] = INT_TO_BOOLEAN(ctx
->ColorMatrixStack
.Depth
+ 1);
1252 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
1253 params
[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH
);
1255 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
1256 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[0]);
1258 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
1259 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[1]);
1261 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
1262 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[2]);
1264 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
1265 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixScale
[3]);
1267 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
1268 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[0]);
1270 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
1271 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[1]);
1273 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
1274 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[2]);
1276 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
1277 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostColorMatrixBias
[3]);
1279 case GL_CONVOLUTION_1D_EXT
:
1280 CHECK_EXT1(EXT_convolution
);
1281 params
[0] = ctx
->Pixel
.Convolution1DEnabled
;
1283 case GL_CONVOLUTION_2D_EXT
:
1284 CHECK_EXT1(EXT_convolution
);
1285 params
[0] = ctx
->Pixel
.Convolution2DEnabled
;
1287 case GL_SEPARABLE_2D_EXT
:
1288 CHECK_EXT1(EXT_convolution
);
1289 params
[0] = ctx
->Pixel
.Separable2DEnabled
;
1291 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
1292 CHECK_EXT1(EXT_convolution
);
1293 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[0]);
1295 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
1296 CHECK_EXT1(EXT_convolution
);
1297 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[1]);
1299 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
1300 CHECK_EXT1(EXT_convolution
);
1301 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[2]);
1303 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
1304 CHECK_EXT1(EXT_convolution
);
1305 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionScale
[3]);
1307 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
1308 CHECK_EXT1(EXT_convolution
);
1309 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[0]);
1311 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
1312 CHECK_EXT1(EXT_convolution
);
1313 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[1]);
1315 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
1316 CHECK_EXT1(EXT_convolution
);
1317 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[2]);
1319 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
1320 CHECK_EXT1(EXT_convolution
);
1321 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Pixel
.PostConvolutionBias
[3]);
1324 CHECK_EXT1(EXT_histogram
);
1325 params
[0] = ctx
->Pixel
.HistogramEnabled
;
1328 CHECK_EXT1(EXT_histogram
);
1329 params
[0] = ctx
->Pixel
.MinMaxEnabled
;
1331 case GL_COLOR_TABLE_SGI
:
1332 CHECK_EXT1(SGI_color_table
);
1333 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
];
1335 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
1336 CHECK_EXT1(SGI_color_table
);
1337 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
];
1339 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
1340 CHECK_EXT1(SGI_color_table
);
1341 params
[0] = ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
];
1343 case GL_TEXTURE_COLOR_TABLE_SGI
:
1344 CHECK_EXT1(SGI_texture_color_table
);
1345 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
;
1347 case GL_COLOR_SUM_EXT
:
1348 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
1349 params
[0] = ctx
->Fog
.ColorSumEnabled
;
1351 case GL_CURRENT_SECONDARY_COLOR_EXT
:
1352 CHECK_EXT1(EXT_secondary_color
);
1353 FLUSH_CURRENT(ctx
, 0);
1354 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
1355 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
1356 params
[2] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
1357 params
[3] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
1359 case GL_SECONDARY_COLOR_ARRAY_EXT
:
1360 CHECK_EXT1(EXT_secondary_color
);
1361 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
;
1363 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
1364 CHECK_EXT1(EXT_secondary_color
);
1365 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
1367 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
1368 CHECK_EXT1(EXT_secondary_color
);
1369 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
1371 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
1372 CHECK_EXT1(EXT_secondary_color
);
1373 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
1375 case GL_CURRENT_FOG_COORDINATE_EXT
:
1376 CHECK_EXT1(EXT_fog_coord
);
1377 FLUSH_CURRENT(ctx
, 0);
1378 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
1380 case GL_FOG_COORDINATE_ARRAY_EXT
:
1381 CHECK_EXT1(EXT_fog_coord
);
1382 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.Enabled
;
1384 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
1385 CHECK_EXT1(EXT_fog_coord
);
1386 params
[0] = ENUM_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
1388 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
1389 CHECK_EXT1(EXT_fog_coord
);
1390 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
1392 case GL_FOG_COORDINATE_SOURCE_EXT
:
1393 CHECK_EXT1(EXT_fog_coord
);
1394 params
[0] = ENUM_TO_BOOLEAN(ctx
->Fog
.FogCoordinateSource
);
1396 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
1397 CHECK_EXT1(EXT_texture_lod_bias
);
1398 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxTextureLodBias
);
1400 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
1401 CHECK_EXT1(EXT_texture_filter_anisotropic
);
1402 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxTextureMaxAnisotropy
);
1404 case GL_MULTISAMPLE_ARB
:
1405 params
[0] = ctx
->Multisample
.Enabled
;
1407 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
1408 params
[0] = ctx
->Multisample
.SampleAlphaToCoverage
;
1410 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
1411 params
[0] = ctx
->Multisample
.SampleAlphaToOne
;
1413 case GL_SAMPLE_COVERAGE_ARB
:
1414 params
[0] = ctx
->Multisample
.SampleCoverage
;
1416 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
1417 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Multisample
.SampleCoverageValue
);
1419 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
1420 params
[0] = ctx
->Multisample
.SampleCoverageInvert
;
1422 case GL_SAMPLE_BUFFERS_ARB
:
1423 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
1425 case GL_SAMPLES_ARB
:
1426 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Visual
.samples
);
1428 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
1429 CHECK_EXT1(IBM_rasterpos_clip
);
1430 params
[0] = ctx
->Transform
.RasterPositionUnclipped
;
1432 case GL_POINT_SPRITE_NV
:
1433 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
1434 params
[0] = ctx
->Point
.PointSprite
;
1436 case GL_POINT_SPRITE_R_MODE_NV
:
1437 CHECK_EXT1(NV_point_sprite
);
1438 params
[0] = ENUM_TO_BOOLEAN(ctx
->Point
.SpriteRMode
);
1440 case GL_POINT_SPRITE_COORD_ORIGIN
:
1441 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
1442 params
[0] = ENUM_TO_BOOLEAN(ctx
->Point
.SpriteOrigin
);
1444 case GL_GENERATE_MIPMAP_HINT_SGIS
:
1445 CHECK_EXT1(SGIS_generate_mipmap
);
1446 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.GenerateMipmap
);
1448 case GL_VERTEX_PROGRAM_BINDING_NV
:
1449 CHECK_EXT1(NV_vertex_program
);
1450 params
[0] = INT_TO_BOOLEAN((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
1452 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
1453 CHECK_EXT1(NV_vertex_program
);
1454 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
;
1456 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
1457 CHECK_EXT1(NV_vertex_program
);
1458 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
;
1460 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
1461 CHECK_EXT1(NV_vertex_program
);
1462 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
;
1464 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
1465 CHECK_EXT1(NV_vertex_program
);
1466 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
;
1468 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
1469 CHECK_EXT1(NV_vertex_program
);
1470 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
;
1472 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
1473 CHECK_EXT1(NV_vertex_program
);
1474 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
;
1476 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
1477 CHECK_EXT1(NV_vertex_program
);
1478 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
;
1480 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
1481 CHECK_EXT1(NV_vertex_program
);
1482 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
;
1484 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
1485 CHECK_EXT1(NV_vertex_program
);
1486 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
;
1488 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
1489 CHECK_EXT1(NV_vertex_program
);
1490 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
;
1492 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
1493 CHECK_EXT1(NV_vertex_program
);
1494 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
;
1496 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
1497 CHECK_EXT1(NV_vertex_program
);
1498 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
;
1500 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
1501 CHECK_EXT1(NV_vertex_program
);
1502 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
;
1504 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
1505 CHECK_EXT1(NV_vertex_program
);
1506 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
;
1508 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
1509 CHECK_EXT1(NV_vertex_program
);
1510 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
;
1512 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
1513 CHECK_EXT1(NV_vertex_program
);
1514 params
[0] = ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
;
1516 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
1517 CHECK_EXT1(NV_vertex_program
);
1518 params
[0] = ctx
->Eval
.Map1Attrib
[0];
1520 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
1521 CHECK_EXT1(NV_vertex_program
);
1522 params
[0] = ctx
->Eval
.Map1Attrib
[1];
1524 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
1525 CHECK_EXT1(NV_vertex_program
);
1526 params
[0] = ctx
->Eval
.Map1Attrib
[2];
1528 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
1529 CHECK_EXT1(NV_vertex_program
);
1530 params
[0] = ctx
->Eval
.Map1Attrib
[3];
1532 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
1533 CHECK_EXT1(NV_vertex_program
);
1534 params
[0] = ctx
->Eval
.Map1Attrib
[4];
1536 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
1537 CHECK_EXT1(NV_vertex_program
);
1538 params
[0] = ctx
->Eval
.Map1Attrib
[5];
1540 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
1541 CHECK_EXT1(NV_vertex_program
);
1542 params
[0] = ctx
->Eval
.Map1Attrib
[6];
1544 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
1545 CHECK_EXT1(NV_vertex_program
);
1546 params
[0] = ctx
->Eval
.Map1Attrib
[7];
1548 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
1549 CHECK_EXT1(NV_vertex_program
);
1550 params
[0] = ctx
->Eval
.Map1Attrib
[8];
1552 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
1553 CHECK_EXT1(NV_vertex_program
);
1554 params
[0] = ctx
->Eval
.Map1Attrib
[9];
1556 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
1557 CHECK_EXT1(NV_vertex_program
);
1558 params
[0] = ctx
->Eval
.Map1Attrib
[10];
1560 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
1561 CHECK_EXT1(NV_vertex_program
);
1562 params
[0] = ctx
->Eval
.Map1Attrib
[11];
1564 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
1565 CHECK_EXT1(NV_vertex_program
);
1566 params
[0] = ctx
->Eval
.Map1Attrib
[12];
1568 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
1569 CHECK_EXT1(NV_vertex_program
);
1570 params
[0] = ctx
->Eval
.Map1Attrib
[13];
1572 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
1573 CHECK_EXT1(NV_vertex_program
);
1574 params
[0] = ctx
->Eval
.Map1Attrib
[14];
1576 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
1577 CHECK_EXT1(NV_vertex_program
);
1578 params
[0] = ctx
->Eval
.Map1Attrib
[15];
1580 case GL_FRAGMENT_PROGRAM_NV
:
1581 CHECK_EXT1(NV_fragment_program
);
1582 params
[0] = ctx
->FragmentProgram
.Enabled
;
1584 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
1585 CHECK_EXT1(NV_fragment_program
);
1586 params
[0] = INT_TO_BOOLEAN(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
1588 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
1589 CHECK_EXT1(NV_fragment_program
);
1590 params
[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
1592 case GL_TEXTURE_RECTANGLE_NV
:
1593 CHECK_EXT1(NV_texture_rectangle
);
1594 params
[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
);
1596 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
1597 CHECK_EXT1(NV_texture_rectangle
);
1598 params
[0] = INT_TO_BOOLEAN(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
1600 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
1601 CHECK_EXT1(NV_texture_rectangle
);
1602 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureRectSize
);
1604 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
1605 CHECK_EXT1(EXT_stencil_two_side
);
1606 params
[0] = ctx
->Stencil
.TestTwoSide
;
1608 case GL_ACTIVE_STENCIL_FACE_EXT
:
1609 CHECK_EXT1(EXT_stencil_two_side
);
1610 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
1612 case GL_MAX_SHININESS_NV
:
1613 CHECK_EXT1(NV_light_max_exponent
);
1614 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxShininess
);
1616 case GL_MAX_SPOT_EXPONENT_NV
:
1617 CHECK_EXT1(NV_light_max_exponent
);
1618 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Const
.MaxSpotExponent
);
1620 case GL_ARRAY_BUFFER_BINDING_ARB
:
1621 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayBufferObj
->Name
);
1623 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
1624 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
1626 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
1627 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
1629 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1630 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
1632 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
1633 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
1635 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
1636 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
1638 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
1639 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
1641 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
1642 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
1644 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
1645 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
1647 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
1648 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ElementArrayBufferObj
->Name
);
1650 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
1651 CHECK_EXT1(EXT_pixel_buffer_object
);
1652 params
[0] = INT_TO_BOOLEAN(ctx
->Pack
.BufferObj
->Name
);
1654 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
1655 CHECK_EXT1(EXT_pixel_buffer_object
);
1656 params
[0] = INT_TO_BOOLEAN(ctx
->Unpack
.BufferObj
->Name
);
1658 case GL_VERTEX_PROGRAM_ARB
:
1659 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1660 params
[0] = ctx
->VertexProgram
.Enabled
;
1662 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
1663 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1664 params
[0] = ctx
->VertexProgram
.PointSizeEnabled
;
1666 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
1667 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
1668 params
[0] = ctx
->VertexProgram
.TwoSideEnabled
;
1670 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
1671 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1672 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxProgramMatrixStackDepth
);
1674 case GL_MAX_PROGRAM_MATRICES_ARB
:
1675 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1676 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxProgramMatrices
);
1678 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
1679 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
1680 params
[0] = ctx
->CurrentStack
->Depth
+ 1;
1682 case GL_CURRENT_MATRIX_ARB
:
1683 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
1685 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
1686 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1687 params
[1] = FLOAT_TO_BOOLEAN(matrix
[1]);
1688 params
[2] = FLOAT_TO_BOOLEAN(matrix
[2]);
1689 params
[3] = FLOAT_TO_BOOLEAN(matrix
[3]);
1690 params
[4] = FLOAT_TO_BOOLEAN(matrix
[4]);
1691 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1692 params
[6] = FLOAT_TO_BOOLEAN(matrix
[6]);
1693 params
[7] = FLOAT_TO_BOOLEAN(matrix
[7]);
1694 params
[8] = FLOAT_TO_BOOLEAN(matrix
[8]);
1695 params
[9] = FLOAT_TO_BOOLEAN(matrix
[9]);
1696 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1697 params
[11] = FLOAT_TO_BOOLEAN(matrix
[11]);
1698 params
[12] = FLOAT_TO_BOOLEAN(matrix
[12]);
1699 params
[13] = FLOAT_TO_BOOLEAN(matrix
[13]);
1700 params
[14] = FLOAT_TO_BOOLEAN(matrix
[14]);
1701 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1704 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
1705 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
1707 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
1708 params
[0] = FLOAT_TO_BOOLEAN(matrix
[0]);
1709 params
[1] = FLOAT_TO_BOOLEAN(matrix
[4]);
1710 params
[2] = FLOAT_TO_BOOLEAN(matrix
[8]);
1711 params
[3] = FLOAT_TO_BOOLEAN(matrix
[12]);
1712 params
[4] = FLOAT_TO_BOOLEAN(matrix
[1]);
1713 params
[5] = FLOAT_TO_BOOLEAN(matrix
[5]);
1714 params
[6] = FLOAT_TO_BOOLEAN(matrix
[9]);
1715 params
[7] = FLOAT_TO_BOOLEAN(matrix
[13]);
1716 params
[8] = FLOAT_TO_BOOLEAN(matrix
[2]);
1717 params
[9] = FLOAT_TO_BOOLEAN(matrix
[6]);
1718 params
[10] = FLOAT_TO_BOOLEAN(matrix
[10]);
1719 params
[11] = FLOAT_TO_BOOLEAN(matrix
[14]);
1720 params
[12] = FLOAT_TO_BOOLEAN(matrix
[3]);
1721 params
[13] = FLOAT_TO_BOOLEAN(matrix
[7]);
1722 params
[14] = FLOAT_TO_BOOLEAN(matrix
[11]);
1723 params
[15] = FLOAT_TO_BOOLEAN(matrix
[15]);
1726 case GL_MAX_VERTEX_ATTRIBS_ARB
:
1727 CHECK_EXT1(ARB_vertex_program
);
1728 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.VertexProgram
.MaxAttribs
);
1730 case GL_PROGRAM_ERROR_POSITION_ARB
:
1731 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
1732 params
[0] = INT_TO_BOOLEAN(ctx
->Program
.ErrorPos
);
1734 case GL_FRAGMENT_PROGRAM_ARB
:
1735 CHECK_EXT1(ARB_fragment_program
);
1736 params
[0] = ctx
->FragmentProgram
.Enabled
;
1738 case GL_MAX_TEXTURE_COORDS_ARB
:
1739 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
1740 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureCoordUnits
);
1742 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
1743 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
1744 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTextureImageUnits
);
1746 case GL_DEPTH_BOUNDS_TEST_EXT
:
1747 CHECK_EXT1(EXT_depth_bounds_test
);
1748 params
[0] = ctx
->Depth
.BoundsTest
;
1750 case GL_DEPTH_BOUNDS_EXT
:
1751 CHECK_EXT1(EXT_depth_bounds_test
);
1752 params
[0] = FLOAT_TO_BOOLEAN(ctx
->Depth
.BoundsMin
);
1753 params
[1] = FLOAT_TO_BOOLEAN(ctx
->Depth
.BoundsMax
);
1755 case GL_DEPTH_CLAMP
:
1756 CHECK_EXT1(ARB_depth_clamp
);
1757 params
[0] = ctx
->Transform
.DepthClamp
;
1759 case GL_MAX_DRAW_BUFFERS_ARB
:
1760 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxDrawBuffers
);
1762 case GL_DRAW_BUFFER0_ARB
:
1763 params
[0] = ENUM_TO_BOOLEAN(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
1765 case GL_DRAW_BUFFER1_ARB
:
1768 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1769 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1772 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
1773 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1776 case GL_DRAW_BUFFER2_ARB
:
1779 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1780 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1783 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
1784 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1787 case GL_DRAW_BUFFER3_ARB
:
1790 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
1791 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
1794 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
1795 params
[0] = ENUM_TO_BOOLEAN(buffer
);
1798 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
1799 CHECK_EXT1(OES_read_format
);
1800 if (ctx
->NewState
& _NEW_BUFFERS
)
1801 _mesa_update_state(ctx
);
1802 params
[0] = INT_TO_BOOLEAN(_mesa_get_color_read_type(ctx
));
1804 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
1805 CHECK_EXT1(OES_read_format
);
1806 if (ctx
->NewState
& _NEW_BUFFERS
)
1807 _mesa_update_state(ctx
);
1808 params
[0] = INT_TO_BOOLEAN(_mesa_get_color_read_format(ctx
));
1810 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
1811 CHECK_EXT1(ATI_fragment_shader
);
1812 params
[0] = INT_TO_BOOLEAN(6);
1814 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
1815 CHECK_EXT1(ATI_fragment_shader
);
1816 params
[0] = INT_TO_BOOLEAN(8);
1818 case GL_NUM_PASSES_ATI
:
1819 CHECK_EXT1(ATI_fragment_shader
);
1820 params
[0] = INT_TO_BOOLEAN(2);
1822 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
1823 CHECK_EXT1(ATI_fragment_shader
);
1824 params
[0] = INT_TO_BOOLEAN(8);
1826 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
1827 CHECK_EXT1(ATI_fragment_shader
);
1828 params
[0] = INT_TO_BOOLEAN(16);
1830 case GL_COLOR_ALPHA_PAIRING_ATI
:
1831 CHECK_EXT1(ATI_fragment_shader
);
1832 params
[0] = GL_TRUE
;
1834 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
1835 CHECK_EXT1(ATI_fragment_shader
);
1836 params
[0] = INT_TO_BOOLEAN(3);
1838 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
1839 CHECK_EXT1(ATI_fragment_shader
);
1840 params
[0] = INT_TO_BOOLEAN(3);
1842 case GL_STENCIL_BACK_FUNC
:
1843 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.Function
[1]);
1845 case GL_STENCIL_BACK_VALUE_MASK
:
1846 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.ValueMask
[1]);
1848 case GL_STENCIL_BACK_WRITEMASK
:
1849 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.WriteMask
[1]);
1851 case GL_STENCIL_BACK_REF
:
1852 params
[0] = INT_TO_BOOLEAN(ctx
->Stencil
.Ref
[1]);
1854 case GL_STENCIL_BACK_FAIL
:
1855 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.FailFunc
[1]);
1857 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
1858 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZFailFunc
[1]);
1860 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
1861 params
[0] = ENUM_TO_BOOLEAN(ctx
->Stencil
.ZPassFunc
[1]);
1863 case GL_FRAMEBUFFER_BINDING_EXT
:
1864 CHECK_EXT1(EXT_framebuffer_object
);
1865 params
[0] = INT_TO_BOOLEAN(ctx
->DrawBuffer
->Name
);
1867 case GL_RENDERBUFFER_BINDING_EXT
:
1868 CHECK_EXT1(EXT_framebuffer_object
);
1869 params
[0] = INT_TO_BOOLEAN(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
1871 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
1872 CHECK_EXT1(EXT_framebuffer_object
);
1873 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxColorAttachments
);
1875 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
1876 CHECK_EXT1(EXT_framebuffer_object
);
1877 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxRenderbufferSize
);
1879 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
1880 CHECK_EXT1(EXT_framebuffer_blit
);
1881 params
[0] = INT_TO_BOOLEAN(ctx
->ReadBuffer
->Name
);
1883 case GL_PROVOKING_VERTEX_EXT
:
1884 CHECK_EXT1(EXT_provoking_vertex
);
1885 params
[0] = ctx
->Light
.ProvokingVertex
;
1887 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
1888 CHECK_EXT1(EXT_provoking_vertex
);
1889 params
[0] = ctx
->Const
.QuadsFollowProvokingVertexConvention
;
1891 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
1892 CHECK_EXT1(ARB_fragment_shader
);
1893 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
1895 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
1896 CHECK_EXT1(ARB_fragment_shader
);
1897 params
[0] = ENUM_TO_BOOLEAN(ctx
->Hint
.FragmentShaderDerivative
);
1899 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
1900 CHECK_EXT1(ARB_vertex_shader
);
1901 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
1903 case GL_MAX_VARYING_FLOATS_ARB
:
1904 CHECK_EXT1(ARB_vertex_shader
);
1905 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxVarying
* 4);
1907 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
1908 CHECK_EXT1(ARB_vertex_shader
);
1909 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxVertexTextureImageUnits
);
1911 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
1912 CHECK_EXT1(ARB_vertex_shader
);
1913 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxCombinedTextureImageUnits
);
1915 case GL_CURRENT_PROGRAM
:
1916 CHECK_EXT1(ARB_shader_objects
);
1917 params
[0] = INT_TO_BOOLEAN(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
1919 case GL_MAX_SAMPLES
:
1920 CHECK_EXT1(ARB_framebuffer_object
);
1921 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxSamples
);
1923 case GL_VERTEX_ARRAY_BINDING_APPLE
:
1924 CHECK_EXT1(APPLE_vertex_array_object
);
1925 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.ArrayObj
->Name
);
1927 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
1928 CHECK_EXT1(ARB_seamless_cube_map
);
1929 params
[0] = ctx
->Texture
.CubeMapSeamless
;
1931 case GL_MAX_SERVER_WAIT_TIMEOUT
:
1932 CHECK_EXT1(ARB_sync
);
1933 params
[0] = INT64_TO_BOOLEAN(ctx
->Const
.MaxServerWaitTimeout
);
1935 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
1936 CHECK_EXT1(EXT_transform_feedback
);
1937 params
[0] = INT_TO_BOOLEAN(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
1939 case GL_RASTERIZER_DISCARD
:
1940 CHECK_EXT1(EXT_transform_feedback
);
1941 params
[0] = ctx
->TransformFeedback
.RasterDiscard
;
1943 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
1944 CHECK_EXT1(EXT_transform_feedback
);
1945 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
1947 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
1948 CHECK_EXT1(EXT_transform_feedback
);
1949 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
1951 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
1952 CHECK_EXT1(EXT_transform_feedback
);
1953 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
1955 case GL_NUM_EXTENSIONS
:
1957 params
[0] = INT_TO_BOOLEAN(_mesa_get_extension_count(ctx
));
1959 case GL_MAJOR_VERSION
:
1961 params
[0] = INT_TO_BOOLEAN(ctx
->VersionMajor
);
1963 case GL_MINOR_VERSION
:
1965 params
[0] = INT_TO_BOOLEAN(ctx
->VersionMinor
);
1967 case GL_CONTEXT_FLAGS
:
1969 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.ContextFlags
);
1971 case GL_PRIMITIVE_RESTART
:
1973 params
[0] = ctx
->Array
.PrimitiveRestart
;
1975 case GL_PRIMITIVE_RESTART_INDEX
:
1977 params
[0] = INT_TO_BOOLEAN(ctx
->Array
.RestartIndex
);
1979 case GL_CONTEXT_PROFILE_MASK
:
1981 params
[0] = INT_TO_BOOLEAN(ctx
->Const
.ProfileMask
);
1984 goto invalid_enum_error
;
1989 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanv(pname=0x%x)", pname
);
1993 _mesa_GetFloatv( GLenum pname
, GLfloat
*params
)
1995 GET_CURRENT_CONTEXT(ctx
);
1996 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
1997 ASSERT_OUTSIDE_BEGIN_END(ctx
);
2003 if (ctx
->Driver
.GetFloatv
&&
2004 ctx
->Driver
.GetFloatv(ctx
, pname
, params
))
2008 case GL_ACCUM_RED_BITS
:
2009 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumRedBits
);
2011 case GL_ACCUM_GREEN_BITS
:
2012 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
2014 case GL_ACCUM_BLUE_BITS
:
2015 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
2017 case GL_ACCUM_ALPHA_BITS
:
2018 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
2020 case GL_ACCUM_CLEAR_VALUE
:
2021 params
[0] = ctx
->Accum
.ClearColor
[0];
2022 params
[1] = ctx
->Accum
.ClearColor
[1];
2023 params
[2] = ctx
->Accum
.ClearColor
[2];
2024 params
[3] = ctx
->Accum
.ClearColor
[3];
2027 params
[0] = ctx
->Pixel
.AlphaBias
;
2030 if (ctx
->NewState
& _NEW_BUFFERS
)
2031 _mesa_update_state(ctx
);
2032 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.alphaBits
);
2034 case GL_ALPHA_SCALE
:
2035 params
[0] = ctx
->Pixel
.AlphaScale
;
2038 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.AlphaEnabled
);
2040 case GL_ALPHA_TEST_FUNC
:
2041 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.AlphaFunc
);
2043 case GL_ALPHA_TEST_REF
:
2044 params
[0] = ctx
->Color
.AlphaRef
;
2046 case GL_ATTRIB_STACK_DEPTH
:
2047 params
[0] = (GLfloat
)(ctx
->AttribStackDepth
);
2049 case GL_AUTO_NORMAL
:
2050 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.AutoNormal
);
2052 case GL_AUX_BUFFERS
:
2053 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
2056 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Color
.BlendEnabled
& 1));
2059 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2062 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2064 case GL_BLEND_SRC_RGB_EXT
:
2065 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcRGB
);
2067 case GL_BLEND_DST_RGB_EXT
:
2068 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstRGB
);
2070 case GL_BLEND_SRC_ALPHA_EXT
:
2071 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendSrcA
);
2073 case GL_BLEND_DST_ALPHA_EXT
:
2074 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendDstA
);
2076 case GL_BLEND_EQUATION
:
2077 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendEquationRGB
);
2079 case GL_BLEND_EQUATION_ALPHA_EXT
:
2080 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.BlendEquationA
);
2082 case GL_BLEND_COLOR_EXT
:
2083 params
[0] = ctx
->Color
.BlendColor
[0];
2084 params
[1] = ctx
->Color
.BlendColor
[1];
2085 params
[2] = ctx
->Color
.BlendColor
[2];
2086 params
[3] = ctx
->Color
.BlendColor
[3];
2089 params
[0] = ctx
->Pixel
.BlueBias
;
2092 if (ctx
->NewState
& _NEW_BUFFERS
)
2093 _mesa_update_state(ctx
);
2094 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.blueBits
);
2097 params
[0] = ctx
->Pixel
.BlueScale
;
2099 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
2100 params
[0] = (GLfloat
)(ctx
->ClientAttribStackDepth
);
2102 case GL_CLIP_PLANE0
:
2103 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
2105 case GL_CLIP_PLANE1
:
2106 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
2108 case GL_CLIP_PLANE2
:
2109 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
2111 case GL_CLIP_PLANE3
:
2112 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
2114 case GL_CLIP_PLANE4
:
2115 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
2117 case GL_CLIP_PLANE5
:
2118 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
2120 case GL_COLOR_CLEAR_VALUE
:
2121 params
[0] = ctx
->Color
.ClearColor
[0];
2122 params
[1] = ctx
->Color
.ClearColor
[1];
2123 params
[2] = ctx
->Color
.ClearColor
[2];
2124 params
[3] = ctx
->Color
.ClearColor
[3];
2126 case GL_COLOR_MATERIAL
:
2127 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.ColorMaterialEnabled
);
2129 case GL_COLOR_MATERIAL_FACE
:
2130 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialFace
);
2132 case GL_COLOR_MATERIAL_PARAMETER
:
2133 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ColorMaterialMode
);
2135 case GL_COLOR_WRITEMASK
:
2136 params
[0] = (GLfloat
)(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
2137 params
[1] = (GLfloat
)(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
2138 params
[2] = (GLfloat
)(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
2139 params
[3] = (GLfloat
)(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
2142 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.CullFlag
);
2144 case GL_CULL_FACE_MODE
:
2145 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.CullFaceMode
);
2147 case GL_CURRENT_COLOR
:
2148 FLUSH_CURRENT(ctx
, 0);
2149 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0];
2150 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1];
2151 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2];
2152 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3];
2154 case GL_CURRENT_INDEX
:
2155 FLUSH_CURRENT(ctx
, 0);
2156 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0];
2158 case GL_CURRENT_NORMAL
:
2159 FLUSH_CURRENT(ctx
, 0);
2160 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0];
2161 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1];
2162 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2];
2164 case GL_CURRENT_RASTER_COLOR
:
2165 params
[0] = ctx
->Current
.RasterColor
[0];
2166 params
[1] = ctx
->Current
.RasterColor
[1];
2167 params
[2] = ctx
->Current
.RasterColor
[2];
2168 params
[3] = ctx
->Current
.RasterColor
[3];
2170 case GL_CURRENT_RASTER_DISTANCE
:
2171 params
[0] = ctx
->Current
.RasterDistance
;
2173 case GL_CURRENT_RASTER_INDEX
:
2176 case GL_CURRENT_RASTER_POSITION
:
2177 params
[0] = ctx
->Current
.RasterPos
[0];
2178 params
[1] = ctx
->Current
.RasterPos
[1];
2179 params
[2] = ctx
->Current
.RasterPos
[2];
2180 params
[3] = ctx
->Current
.RasterPos
[3];
2182 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
2183 params
[0] = ctx
->Current
.RasterSecondaryColor
[0];
2184 params
[1] = ctx
->Current
.RasterSecondaryColor
[1];
2185 params
[2] = ctx
->Current
.RasterSecondaryColor
[2];
2186 params
[3] = ctx
->Current
.RasterSecondaryColor
[3];
2188 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
2190 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2191 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2192 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2193 "glGet(raster tex coords, unit %u)", unit
);
2196 params
[0] = ctx
->Current
.RasterTexCoords
[unit
][0];
2197 params
[1] = ctx
->Current
.RasterTexCoords
[unit
][1];
2198 params
[2] = ctx
->Current
.RasterTexCoords
[unit
][2];
2199 params
[3] = ctx
->Current
.RasterTexCoords
[unit
][3];
2202 case GL_CURRENT_RASTER_POSITION_VALID
:
2203 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Current
.RasterPosValid
);
2205 case GL_CURRENT_TEXTURE_COORDS
:
2207 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2208 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2209 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2210 "glGet(current tex coords, unit %u)", unit
);
2213 FLUSH_CURRENT(ctx
, 0);
2214 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0];
2215 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1];
2216 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2];
2217 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3];
2221 params
[0] = ctx
->Pixel
.DepthBias
;
2224 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.depthBits
);
2226 case GL_DEPTH_CLEAR_VALUE
:
2227 params
[0] = ((GLfloat
) ctx
->Depth
.Clear
);
2230 params
[0] = ENUM_TO_FLOAT(ctx
->Depth
.Func
);
2232 case GL_DEPTH_RANGE
:
2233 params
[0] = ctx
->Viewport
.Near
;
2234 params
[1] = ctx
->Viewport
.Far
;
2236 case GL_DEPTH_SCALE
:
2237 params
[0] = ctx
->Pixel
.DepthScale
;
2240 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.Test
);
2242 case GL_DEPTH_WRITEMASK
:
2243 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.Mask
);
2246 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.DitherFlag
);
2248 case GL_DOUBLEBUFFER
:
2249 params
[0] = BOOLEAN_TO_FLOAT(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
2251 case GL_DRAW_BUFFER
:
2252 params
[0] = ENUM_TO_FLOAT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
2255 FLUSH_CURRENT(ctx
, 0);
2256 params
[0] = BOOLEAN_TO_FLOAT((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
2258 case GL_FEEDBACK_BUFFER_SIZE
:
2259 params
[0] = (GLfloat
)(ctx
->Feedback
.BufferSize
);
2261 case GL_FEEDBACK_BUFFER_TYPE
:
2262 params
[0] = ENUM_TO_FLOAT(ctx
->Feedback
.Type
);
2265 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Fog
.Enabled
);
2268 params
[0] = ctx
->Fog
.Color
[0];
2269 params
[1] = ctx
->Fog
.Color
[1];
2270 params
[2] = ctx
->Fog
.Color
[2];
2271 params
[3] = ctx
->Fog
.Color
[3];
2273 case GL_FOG_DENSITY
:
2274 params
[0] = ctx
->Fog
.Density
;
2277 params
[0] = ctx
->Fog
.End
;
2280 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.Fog
);
2283 params
[0] = ctx
->Fog
.Index
;
2286 params
[0] = ENUM_TO_FLOAT(ctx
->Fog
.Mode
);
2289 params
[0] = ctx
->Fog
.Start
;
2292 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontFace
);
2295 params
[0] = ctx
->Pixel
.GreenBias
;
2298 if (ctx
->NewState
& _NEW_BUFFERS
)
2299 _mesa_update_state(ctx
);
2300 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.greenBits
);
2302 case GL_GREEN_SCALE
:
2303 params
[0] = ctx
->Pixel
.GreenScale
;
2306 if (ctx
->NewState
& _NEW_BUFFERS
)
2307 _mesa_update_state(ctx
);
2308 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.indexBits
);
2310 case GL_INDEX_CLEAR_VALUE
:
2311 params
[0] = (GLfloat
)(ctx
->Color
.ClearIndex
);
2314 params
[0] = BOOLEAN_TO_FLOAT(GL_FALSE
);
2316 case GL_INDEX_OFFSET
:
2317 params
[0] = (GLfloat
)(ctx
->Pixel
.IndexOffset
);
2319 case GL_INDEX_SHIFT
:
2320 params
[0] = (GLfloat
)(ctx
->Pixel
.IndexShift
);
2322 case GL_INDEX_WRITEMASK
:
2323 params
[0] = (GLfloat
)(ctx
->Color
.IndexMask
);
2326 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[0].Enabled
);
2329 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[1].Enabled
);
2332 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[2].Enabled
);
2335 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[3].Enabled
);
2338 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[4].Enabled
);
2341 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[5].Enabled
);
2344 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[6].Enabled
);
2347 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Light
[7].Enabled
);
2350 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Enabled
);
2352 case GL_LIGHT_MODEL_AMBIENT
:
2353 params
[0] = ctx
->Light
.Model
.Ambient
[0];
2354 params
[1] = ctx
->Light
.Model
.Ambient
[1];
2355 params
[2] = ctx
->Light
.Model
.Ambient
[2];
2356 params
[3] = ctx
->Light
.Model
.Ambient
[3];
2358 case GL_LIGHT_MODEL_COLOR_CONTROL
:
2359 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.Model
.ColorControl
);
2361 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
2362 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Model
.LocalViewer
);
2364 case GL_LIGHT_MODEL_TWO_SIDE
:
2365 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.Model
.TwoSide
);
2367 case GL_LINE_SMOOTH
:
2368 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Line
.SmoothFlag
);
2370 case GL_LINE_SMOOTH_HINT
:
2371 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.LineSmooth
);
2373 case GL_LINE_STIPPLE
:
2374 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Line
.StippleFlag
);
2376 case GL_LINE_STIPPLE_PATTERN
:
2377 params
[0] = (GLfloat
)(ctx
->Line
.StipplePattern
);
2379 case GL_LINE_STIPPLE_REPEAT
:
2380 params
[0] = (GLfloat
)(ctx
->Line
.StippleFactor
);
2383 params
[0] = ctx
->Line
.Width
;
2385 case GL_LINE_WIDTH_GRANULARITY
:
2386 params
[0] = ctx
->Const
.LineWidthGranularity
;
2388 case GL_LINE_WIDTH_RANGE
:
2389 params
[0] = ctx
->Const
.MinLineWidthAA
;
2390 params
[1] = ctx
->Const
.MaxLineWidthAA
;
2392 case GL_ALIASED_LINE_WIDTH_RANGE
:
2393 params
[0] = ctx
->Const
.MinLineWidth
;
2394 params
[1] = ctx
->Const
.MaxLineWidth
;
2397 params
[0] = (GLfloat
)(ctx
->List
.ListBase
);
2400 params
[0] = (GLfloat
)((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
2405 if (!ctx
->CompileFlag
)
2407 else if (ctx
->ExecuteFlag
)
2408 mode
= GL_COMPILE_AND_EXECUTE
;
2411 params
[0] = ENUM_TO_FLOAT(mode
);
2414 case GL_INDEX_LOGIC_OP
:
2415 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.IndexLogicOpEnabled
);
2417 case GL_COLOR_LOGIC_OP
:
2418 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Color
.ColorLogicOpEnabled
);
2420 case GL_LOGIC_OP_MODE
:
2421 params
[0] = ENUM_TO_FLOAT(ctx
->Color
.LogicOp
);
2423 case GL_MAP1_COLOR_4
:
2424 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Color4
);
2426 case GL_MAP1_GRID_DOMAIN
:
2427 params
[0] = ctx
->Eval
.MapGrid1u1
;
2428 params
[1] = ctx
->Eval
.MapGrid1u2
;
2430 case GL_MAP1_GRID_SEGMENTS
:
2431 params
[0] = (GLfloat
)(ctx
->Eval
.MapGrid1un
);
2434 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Index
);
2436 case GL_MAP1_NORMAL
:
2437 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Normal
);
2439 case GL_MAP1_TEXTURE_COORD_1
:
2440 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord1
);
2442 case GL_MAP1_TEXTURE_COORD_2
:
2443 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord2
);
2445 case GL_MAP1_TEXTURE_COORD_3
:
2446 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord3
);
2448 case GL_MAP1_TEXTURE_COORD_4
:
2449 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1TextureCoord4
);
2451 case GL_MAP1_VERTEX_3
:
2452 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Vertex3
);
2454 case GL_MAP1_VERTEX_4
:
2455 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Vertex4
);
2457 case GL_MAP2_COLOR_4
:
2458 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Color4
);
2460 case GL_MAP2_GRID_DOMAIN
:
2461 params
[0] = ctx
->Eval
.MapGrid2u1
;
2462 params
[1] = ctx
->Eval
.MapGrid2u2
;
2463 params
[2] = ctx
->Eval
.MapGrid2v1
;
2464 params
[3] = ctx
->Eval
.MapGrid2v2
;
2466 case GL_MAP2_GRID_SEGMENTS
:
2467 params
[0] = (GLfloat
)(ctx
->Eval
.MapGrid2un
);
2468 params
[1] = (GLfloat
)(ctx
->Eval
.MapGrid2vn
);
2471 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Index
);
2473 case GL_MAP2_NORMAL
:
2474 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Normal
);
2476 case GL_MAP2_TEXTURE_COORD_1
:
2477 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord1
);
2479 case GL_MAP2_TEXTURE_COORD_2
:
2480 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord2
);
2482 case GL_MAP2_TEXTURE_COORD_3
:
2483 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord3
);
2485 case GL_MAP2_TEXTURE_COORD_4
:
2486 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2TextureCoord4
);
2488 case GL_MAP2_VERTEX_3
:
2489 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Vertex3
);
2491 case GL_MAP2_VERTEX_4
:
2492 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map2Vertex4
);
2495 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MapColorFlag
);
2497 case GL_MAP_STENCIL
:
2498 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MapStencilFlag
);
2500 case GL_MATRIX_MODE
:
2501 params
[0] = ENUM_TO_FLOAT(ctx
->Transform
.MatrixMode
);
2503 case GL_MAX_ATTRIB_STACK_DEPTH
:
2504 params
[0] = (GLfloat
)(MAX_ATTRIB_STACK_DEPTH
);
2506 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
2507 params
[0] = (GLfloat
)(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
2509 case GL_MAX_CLIP_PLANES
:
2510 params
[0] = (GLfloat
)(ctx
->Const
.MaxClipPlanes
);
2512 case GL_MAX_ELEMENTS_VERTICES
:
2513 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayLockSize
);
2515 case GL_MAX_ELEMENTS_INDICES
:
2516 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayLockSize
);
2518 case GL_MAX_EVAL_ORDER
:
2519 params
[0] = (GLfloat
)(MAX_EVAL_ORDER
);
2522 params
[0] = (GLfloat
)(ctx
->Const
.MaxLights
);
2524 case GL_MAX_LIST_NESTING
:
2525 params
[0] = (GLfloat
)(MAX_LIST_NESTING
);
2527 case GL_MAX_MODELVIEW_STACK_DEPTH
:
2528 params
[0] = (GLfloat
)(MAX_MODELVIEW_STACK_DEPTH
);
2530 case GL_MAX_NAME_STACK_DEPTH
:
2531 params
[0] = (GLfloat
)(MAX_NAME_STACK_DEPTH
);
2533 case GL_MAX_PIXEL_MAP_TABLE
:
2534 params
[0] = (GLfloat
)(MAX_PIXEL_MAP_TABLE
);
2536 case GL_MAX_PROJECTION_STACK_DEPTH
:
2537 params
[0] = (GLfloat
)(MAX_PROJECTION_STACK_DEPTH
);
2539 case GL_MAX_TEXTURE_SIZE
:
2540 params
[0] = (GLfloat
)(1 << (ctx
->Const
.MaxTextureLevels
- 1));
2542 case GL_MAX_3D_TEXTURE_SIZE
:
2543 params
[0] = (GLfloat
)(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
2545 case GL_MAX_TEXTURE_STACK_DEPTH
:
2546 params
[0] = (GLfloat
)(MAX_TEXTURE_STACK_DEPTH
);
2548 case GL_MAX_VIEWPORT_DIMS
:
2549 params
[0] = (GLfloat
)(ctx
->Const
.MaxViewportWidth
);
2550 params
[1] = (GLfloat
)(ctx
->Const
.MaxViewportHeight
);
2552 case GL_MODELVIEW_MATRIX
:
2554 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
2555 params
[0] = matrix
[0];
2556 params
[1] = matrix
[1];
2557 params
[2] = matrix
[2];
2558 params
[3] = matrix
[3];
2559 params
[4] = matrix
[4];
2560 params
[5] = matrix
[5];
2561 params
[6] = matrix
[6];
2562 params
[7] = matrix
[7];
2563 params
[8] = matrix
[8];
2564 params
[9] = matrix
[9];
2565 params
[10] = matrix
[10];
2566 params
[11] = matrix
[11];
2567 params
[12] = matrix
[12];
2568 params
[13] = matrix
[13];
2569 params
[14] = matrix
[14];
2570 params
[15] = matrix
[15];
2573 case GL_MODELVIEW_STACK_DEPTH
:
2574 params
[0] = (GLfloat
)(ctx
->ModelviewMatrixStack
.Depth
+ 1);
2576 case GL_NAME_STACK_DEPTH
:
2577 params
[0] = (GLfloat
)(ctx
->Select
.NameStackDepth
);
2580 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.Normalize
);
2582 case GL_PACK_ALIGNMENT
:
2583 params
[0] = (GLfloat
)(ctx
->Pack
.Alignment
);
2585 case GL_PACK_LSB_FIRST
:
2586 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.LsbFirst
);
2588 case GL_PACK_ROW_LENGTH
:
2589 params
[0] = (GLfloat
)(ctx
->Pack
.RowLength
);
2591 case GL_PACK_SKIP_PIXELS
:
2592 params
[0] = (GLfloat
)(ctx
->Pack
.SkipPixels
);
2594 case GL_PACK_SKIP_ROWS
:
2595 params
[0] = (GLfloat
)(ctx
->Pack
.SkipRows
);
2597 case GL_PACK_SWAP_BYTES
:
2598 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.SwapBytes
);
2600 case GL_PACK_SKIP_IMAGES_EXT
:
2601 params
[0] = (GLfloat
)(ctx
->Pack
.SkipImages
);
2603 case GL_PACK_IMAGE_HEIGHT_EXT
:
2604 params
[0] = (GLfloat
)(ctx
->Pack
.ImageHeight
);
2606 case GL_PACK_INVERT_MESA
:
2607 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pack
.Invert
);
2609 case GL_PERSPECTIVE_CORRECTION_HINT
:
2610 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PerspectiveCorrection
);
2612 case GL_PIXEL_MAP_A_TO_A_SIZE
:
2613 params
[0] = (GLfloat
)(ctx
->PixelMaps
.AtoA
.Size
);
2615 case GL_PIXEL_MAP_B_TO_B_SIZE
:
2616 params
[0] = (GLfloat
)(ctx
->PixelMaps
.BtoB
.Size
);
2618 case GL_PIXEL_MAP_G_TO_G_SIZE
:
2619 params
[0] = (GLfloat
)(ctx
->PixelMaps
.GtoG
.Size
);
2621 case GL_PIXEL_MAP_I_TO_A_SIZE
:
2622 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoA
.Size
);
2624 case GL_PIXEL_MAP_I_TO_B_SIZE
:
2625 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoB
.Size
);
2627 case GL_PIXEL_MAP_I_TO_G_SIZE
:
2628 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoG
.Size
);
2630 case GL_PIXEL_MAP_I_TO_I_SIZE
:
2631 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoI
.Size
);
2633 case GL_PIXEL_MAP_I_TO_R_SIZE
:
2634 params
[0] = (GLfloat
)(ctx
->PixelMaps
.ItoR
.Size
);
2636 case GL_PIXEL_MAP_R_TO_R_SIZE
:
2637 params
[0] = (GLfloat
)(ctx
->PixelMaps
.RtoR
.Size
);
2639 case GL_PIXEL_MAP_S_TO_S_SIZE
:
2640 params
[0] = (GLfloat
)(ctx
->PixelMaps
.StoS
.Size
);
2643 params
[0] = ctx
->Point
.Size
;
2645 case GL_POINT_SIZE_GRANULARITY
:
2646 params
[0] = ctx
->Const
.PointSizeGranularity
;
2648 case GL_POINT_SIZE_RANGE
:
2649 params
[0] = ctx
->Const
.MinPointSizeAA
;
2650 params
[1] = ctx
->Const
.MaxPointSizeAA
;
2652 case GL_ALIASED_POINT_SIZE_RANGE
:
2653 params
[0] = ctx
->Const
.MinPointSize
;
2654 params
[1] = ctx
->Const
.MaxPointSize
;
2656 case GL_POINT_SMOOTH
:
2657 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Point
.SmoothFlag
);
2659 case GL_POINT_SMOOTH_HINT
:
2660 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PointSmooth
);
2662 case GL_POINT_SIZE_MIN_EXT
:
2663 params
[0] = ctx
->Point
.MinSize
;
2665 case GL_POINT_SIZE_MAX_EXT
:
2666 params
[0] = ctx
->Point
.MaxSize
;
2668 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
2669 params
[0] = ctx
->Point
.Threshold
;
2671 case GL_DISTANCE_ATTENUATION_EXT
:
2672 params
[0] = ctx
->Point
.Params
[0];
2673 params
[1] = ctx
->Point
.Params
[1];
2674 params
[2] = ctx
->Point
.Params
[2];
2676 case GL_POLYGON_MODE
:
2677 params
[0] = ENUM_TO_FLOAT(ctx
->Polygon
.FrontMode
);
2678 params
[1] = ENUM_TO_FLOAT(ctx
->Polygon
.BackMode
);
2680 case GL_POLYGON_OFFSET_BIAS_EXT
:
2681 params
[0] = ctx
->Polygon
.OffsetUnits
;
2683 case GL_POLYGON_OFFSET_FACTOR
:
2684 params
[0] = ctx
->Polygon
.OffsetFactor
;
2686 case GL_POLYGON_OFFSET_UNITS
:
2687 params
[0] = ctx
->Polygon
.OffsetUnits
;
2689 case GL_POLYGON_OFFSET_POINT
:
2690 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetPoint
);
2692 case GL_POLYGON_OFFSET_LINE
:
2693 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetLine
);
2695 case GL_POLYGON_OFFSET_FILL
:
2696 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.OffsetFill
);
2698 case GL_POLYGON_SMOOTH
:
2699 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.SmoothFlag
);
2701 case GL_POLYGON_SMOOTH_HINT
:
2702 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.PolygonSmooth
);
2704 case GL_POLYGON_STIPPLE
:
2705 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Polygon
.StippleFlag
);
2707 case GL_PROJECTION_MATRIX
:
2709 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
2710 params
[0] = matrix
[0];
2711 params
[1] = matrix
[1];
2712 params
[2] = matrix
[2];
2713 params
[3] = matrix
[3];
2714 params
[4] = matrix
[4];
2715 params
[5] = matrix
[5];
2716 params
[6] = matrix
[6];
2717 params
[7] = matrix
[7];
2718 params
[8] = matrix
[8];
2719 params
[9] = matrix
[9];
2720 params
[10] = matrix
[10];
2721 params
[11] = matrix
[11];
2722 params
[12] = matrix
[12];
2723 params
[13] = matrix
[13];
2724 params
[14] = matrix
[14];
2725 params
[15] = matrix
[15];
2728 case GL_PROJECTION_STACK_DEPTH
:
2729 params
[0] = (GLfloat
)(ctx
->ProjectionMatrixStack
.Depth
+ 1);
2731 case GL_READ_BUFFER
:
2732 params
[0] = ENUM_TO_FLOAT(ctx
->ReadBuffer
->ColorReadBuffer
);
2735 params
[0] = ctx
->Pixel
.RedBias
;
2738 if (ctx
->NewState
& _NEW_BUFFERS
)
2739 _mesa_update_state(ctx
);
2740 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.redBits
);
2743 params
[0] = ctx
->Pixel
.RedScale
;
2745 case GL_RENDER_MODE
:
2746 params
[0] = ENUM_TO_FLOAT(ctx
->RenderMode
);
2748 case GL_RESCALE_NORMAL
:
2749 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.RescaleNormals
);
2752 params
[0] = BOOLEAN_TO_FLOAT(GL_TRUE
);
2754 case GL_SCISSOR_BOX
:
2755 params
[0] = (GLfloat
)(ctx
->Scissor
.X
);
2756 params
[1] = (GLfloat
)(ctx
->Scissor
.Y
);
2757 params
[2] = (GLfloat
)(ctx
->Scissor
.Width
);
2758 params
[3] = (GLfloat
)(ctx
->Scissor
.Height
);
2760 case GL_SCISSOR_TEST
:
2761 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Scissor
.Enabled
);
2763 case GL_SELECTION_BUFFER_SIZE
:
2764 params
[0] = (GLfloat
)(ctx
->Select
.BufferSize
);
2766 case GL_SHADE_MODEL
:
2767 params
[0] = ENUM_TO_FLOAT(ctx
->Light
.ShadeModel
);
2769 case GL_SHARED_TEXTURE_PALETTE_EXT
:
2770 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.SharedPalette
);
2772 case GL_STENCIL_BITS
:
2773 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.stencilBits
);
2775 case GL_STENCIL_CLEAR_VALUE
:
2776 params
[0] = (GLfloat
)(ctx
->Stencil
.Clear
);
2778 case GL_STENCIL_FAIL
:
2779 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
2781 case GL_STENCIL_FUNC
:
2782 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
2784 case GL_STENCIL_PASS_DEPTH_FAIL
:
2785 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
2787 case GL_STENCIL_PASS_DEPTH_PASS
:
2788 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
2790 case GL_STENCIL_REF
:
2791 params
[0] = (GLfloat
)(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
2793 case GL_STENCIL_TEST
:
2794 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Stencil
.Enabled
);
2796 case GL_STENCIL_VALUE_MASK
:
2797 params
[0] = (GLfloat
)(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
2799 case GL_STENCIL_WRITEMASK
:
2800 params
[0] = (GLfloat
)(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
2803 params
[0] = BOOLEAN_TO_FLOAT(ctx
->DrawBuffer
->Visual
.stereoMode
);
2805 case GL_SUBPIXEL_BITS
:
2806 params
[0] = (GLfloat
)(ctx
->Const
.SubPixelBits
);
2809 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D
));
2812 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D
));
2815 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D
));
2817 case GL_TEXTURE_1D_ARRAY_EXT
:
2818 CHECK_EXT1(MESA_texture_array
);
2819 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
2821 case GL_TEXTURE_2D_ARRAY_EXT
:
2822 CHECK_EXT1(MESA_texture_array
);
2823 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
2825 case GL_TEXTURE_BINDING_1D
:
2826 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
2828 case GL_TEXTURE_BINDING_2D
:
2829 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
2831 case GL_TEXTURE_BINDING_3D
:
2832 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
2834 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
2835 CHECK_EXT1(MESA_texture_array
);
2836 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
2838 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
2839 CHECK_EXT1(MESA_texture_array
);
2840 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
2842 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
2843 CHECK_EXT1(MESA_texture_array
);
2844 params
[0] = (GLfloat
)(ctx
->Const
.MaxArrayTextureLayers
);
2846 case GL_TEXTURE_GEN_S
:
2847 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
2849 case GL_TEXTURE_GEN_T
:
2850 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
2852 case GL_TEXTURE_GEN_R
:
2853 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
2855 case GL_TEXTURE_GEN_Q
:
2856 params
[0] = BOOLEAN_TO_FLOAT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
2858 case GL_TEXTURE_MATRIX
:
2860 const GLfloat
*matrix
;
2861 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2862 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2863 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
2867 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
2868 params
[0] = matrix
[0];
2869 params
[1] = matrix
[1];
2870 params
[2] = matrix
[2];
2871 params
[3] = matrix
[3];
2872 params
[4] = matrix
[4];
2873 params
[5] = matrix
[5];
2874 params
[6] = matrix
[6];
2875 params
[7] = matrix
[7];
2876 params
[8] = matrix
[8];
2877 params
[9] = matrix
[9];
2878 params
[10] = matrix
[10];
2879 params
[11] = matrix
[11];
2880 params
[12] = matrix
[12];
2881 params
[13] = matrix
[13];
2882 params
[14] = matrix
[14];
2883 params
[15] = matrix
[15];
2886 case GL_TEXTURE_STACK_DEPTH
:
2888 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
2889 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
2890 _mesa_error(ctx
, GL_INVALID_OPERATION
,
2891 "glGet(texture stack depth, unit %u)", unit
);
2894 params
[0] = (GLfloat
)(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
2897 case GL_UNPACK_ALIGNMENT
:
2898 params
[0] = (GLfloat
)(ctx
->Unpack
.Alignment
);
2900 case GL_UNPACK_LSB_FIRST
:
2901 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.LsbFirst
);
2903 case GL_UNPACK_ROW_LENGTH
:
2904 params
[0] = (GLfloat
)(ctx
->Unpack
.RowLength
);
2906 case GL_UNPACK_SKIP_PIXELS
:
2907 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipPixels
);
2909 case GL_UNPACK_SKIP_ROWS
:
2910 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipRows
);
2912 case GL_UNPACK_SWAP_BYTES
:
2913 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.SwapBytes
);
2915 case GL_UNPACK_SKIP_IMAGES_EXT
:
2916 params
[0] = (GLfloat
)(ctx
->Unpack
.SkipImages
);
2918 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
2919 params
[0] = (GLfloat
)(ctx
->Unpack
.ImageHeight
);
2921 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
2922 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Unpack
.ClientStorage
);
2925 params
[0] = (GLfloat
)(ctx
->Viewport
.X
);
2926 params
[1] = (GLfloat
)(ctx
->Viewport
.Y
);
2927 params
[2] = (GLfloat
)(ctx
->Viewport
.Width
);
2928 params
[3] = (GLfloat
)(ctx
->Viewport
.Height
);
2931 params
[0] = ctx
->Pixel
.ZoomX
;
2934 params
[0] = ctx
->Pixel
.ZoomY
;
2936 case GL_VERTEX_ARRAY
:
2937 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
2939 case GL_VERTEX_ARRAY_SIZE
:
2940 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.Size
);
2942 case GL_VERTEX_ARRAY_TYPE
:
2943 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Vertex
.Type
);
2945 case GL_VERTEX_ARRAY_STRIDE
:
2946 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
2948 case GL_VERTEX_ARRAY_COUNT_EXT
:
2949 params
[0] = (GLfloat
)(0);
2951 case GL_NORMAL_ARRAY
:
2952 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
2954 case GL_NORMAL_ARRAY_TYPE
:
2955 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Normal
.Type
);
2957 case GL_NORMAL_ARRAY_STRIDE
:
2958 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Normal
.Stride
);
2960 case GL_NORMAL_ARRAY_COUNT_EXT
:
2961 params
[0] = (GLfloat
)(0);
2963 case GL_COLOR_ARRAY
:
2964 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Color
.Enabled
);
2966 case GL_COLOR_ARRAY_SIZE
:
2967 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.Size
);
2969 case GL_COLOR_ARRAY_TYPE
:
2970 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Color
.Type
);
2972 case GL_COLOR_ARRAY_STRIDE
:
2973 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.Stride
);
2975 case GL_COLOR_ARRAY_COUNT_EXT
:
2976 params
[0] = (GLfloat
)(0);
2978 case GL_INDEX_ARRAY
:
2979 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->Index
.Enabled
);
2981 case GL_INDEX_ARRAY_TYPE
:
2982 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->Index
.Type
);
2984 case GL_INDEX_ARRAY_STRIDE
:
2985 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Index
.Stride
);
2987 case GL_INDEX_ARRAY_COUNT_EXT
:
2988 params
[0] = (GLfloat
)(0);
2990 case GL_TEXTURE_COORD_ARRAY
:
2991 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
2993 case GL_TEXTURE_COORD_ARRAY_SIZE
:
2994 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
2996 case GL_TEXTURE_COORD_ARRAY_TYPE
:
2997 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
2999 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
3000 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
3002 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
3003 params
[0] = (GLfloat
)(0);
3005 case GL_EDGE_FLAG_ARRAY
:
3006 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
3008 case GL_EDGE_FLAG_ARRAY_STRIDE
:
3009 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
3011 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
3012 params
[0] = (GLfloat
)(0);
3014 case GL_MAX_TEXTURE_UNITS_ARB
:
3015 CHECK_EXT1(ARB_multitexture
);
3016 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureUnits
);
3018 case GL_ACTIVE_TEXTURE_ARB
:
3019 CHECK_EXT1(ARB_multitexture
);
3020 params
[0] = (GLfloat
)(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
3022 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
3023 CHECK_EXT1(ARB_multitexture
);
3024 params
[0] = (GLfloat
)(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
3026 case GL_TEXTURE_CUBE_MAP_ARB
:
3027 CHECK_EXT1(ARB_texture_cube_map
);
3028 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
3030 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
3031 CHECK_EXT1(ARB_texture_cube_map
);
3032 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
3034 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
3035 CHECK_EXT1(ARB_texture_cube_map
);
3036 params
[0] = (GLfloat
)((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
3038 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
3039 params
[0] = (GLfloat
)(ctx
->Hint
.TextureCompression
);
3041 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
3042 params
[0] = (GLfloat
)(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
3044 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
3047 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
3049 for (i
= 0; i
< n
; i
++)
3050 params
[i
] = ENUM_TO_FLOAT(formats
[i
]);
3053 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
3054 CHECK_EXT1(EXT_compiled_vertex_array
);
3055 params
[0] = (GLfloat
)(ctx
->Array
.LockFirst
);
3057 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
3058 CHECK_EXT1(EXT_compiled_vertex_array
);
3059 params
[0] = (GLfloat
)(ctx
->Array
.LockCount
);
3061 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
3063 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
3064 params
[0] = matrix
[0];
3065 params
[1] = matrix
[4];
3066 params
[2] = matrix
[8];
3067 params
[3] = matrix
[12];
3068 params
[4] = matrix
[1];
3069 params
[5] = matrix
[5];
3070 params
[6] = matrix
[9];
3071 params
[7] = matrix
[13];
3072 params
[8] = matrix
[2];
3073 params
[9] = matrix
[6];
3074 params
[10] = matrix
[10];
3075 params
[11] = matrix
[14];
3076 params
[12] = matrix
[3];
3077 params
[13] = matrix
[7];
3078 params
[14] = matrix
[11];
3079 params
[15] = matrix
[15];
3082 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
3084 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
3085 params
[0] = matrix
[0];
3086 params
[1] = matrix
[4];
3087 params
[2] = matrix
[8];
3088 params
[3] = matrix
[12];
3089 params
[4] = matrix
[1];
3090 params
[5] = matrix
[5];
3091 params
[6] = matrix
[9];
3092 params
[7] = matrix
[13];
3093 params
[8] = matrix
[2];
3094 params
[9] = matrix
[6];
3095 params
[10] = matrix
[10];
3096 params
[11] = matrix
[14];
3097 params
[12] = matrix
[3];
3098 params
[13] = matrix
[7];
3099 params
[14] = matrix
[11];
3100 params
[15] = matrix
[15];
3103 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
3105 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
3106 params
[0] = matrix
[0];
3107 params
[1] = matrix
[4];
3108 params
[2] = matrix
[8];
3109 params
[3] = matrix
[12];
3110 params
[4] = matrix
[1];
3111 params
[5] = matrix
[5];
3112 params
[6] = matrix
[9];
3113 params
[7] = matrix
[13];
3114 params
[8] = matrix
[2];
3115 params
[9] = matrix
[6];
3116 params
[10] = matrix
[10];
3117 params
[11] = matrix
[14];
3118 params
[12] = matrix
[3];
3119 params
[13] = matrix
[7];
3120 params
[14] = matrix
[11];
3121 params
[15] = matrix
[15];
3124 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
3126 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
3127 params
[0] = matrix
[0];
3128 params
[1] = matrix
[4];
3129 params
[2] = matrix
[8];
3130 params
[3] = matrix
[12];
3131 params
[4] = matrix
[1];
3132 params
[5] = matrix
[5];
3133 params
[6] = matrix
[9];
3134 params
[7] = matrix
[13];
3135 params
[8] = matrix
[2];
3136 params
[9] = matrix
[6];
3137 params
[10] = matrix
[10];
3138 params
[11] = matrix
[14];
3139 params
[12] = matrix
[3];
3140 params
[13] = matrix
[7];
3141 params
[14] = matrix
[11];
3142 params
[15] = matrix
[15];
3145 case GL_COLOR_MATRIX_SGI
:
3147 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
3148 params
[0] = matrix
[0];
3149 params
[1] = matrix
[1];
3150 params
[2] = matrix
[2];
3151 params
[3] = matrix
[3];
3152 params
[4] = matrix
[4];
3153 params
[5] = matrix
[5];
3154 params
[6] = matrix
[6];
3155 params
[7] = matrix
[7];
3156 params
[8] = matrix
[8];
3157 params
[9] = matrix
[9];
3158 params
[10] = matrix
[10];
3159 params
[11] = matrix
[11];
3160 params
[12] = matrix
[12];
3161 params
[13] = matrix
[13];
3162 params
[14] = matrix
[14];
3163 params
[15] = matrix
[15];
3166 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
3167 params
[0] = (GLfloat
)(ctx
->ColorMatrixStack
.Depth
+ 1);
3169 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
3170 params
[0] = (GLfloat
)(MAX_COLOR_STACK_DEPTH
);
3172 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
3173 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[0];
3175 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
3176 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[1];
3178 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
3179 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[2];
3181 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
3182 params
[0] = ctx
->Pixel
.PostColorMatrixScale
[3];
3184 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
3185 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[0];
3187 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
3188 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[1];
3190 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
3191 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[2];
3193 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
3194 params
[0] = ctx
->Pixel
.PostColorMatrixBias
[3];
3196 case GL_CONVOLUTION_1D_EXT
:
3197 CHECK_EXT1(EXT_convolution
);
3198 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Convolution1DEnabled
);
3200 case GL_CONVOLUTION_2D_EXT
:
3201 CHECK_EXT1(EXT_convolution
);
3202 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Convolution2DEnabled
);
3204 case GL_SEPARABLE_2D_EXT
:
3205 CHECK_EXT1(EXT_convolution
);
3206 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.Separable2DEnabled
);
3208 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
3209 CHECK_EXT1(EXT_convolution
);
3210 params
[0] = ctx
->Pixel
.PostConvolutionScale
[0];
3212 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
3213 CHECK_EXT1(EXT_convolution
);
3214 params
[0] = ctx
->Pixel
.PostConvolutionScale
[1];
3216 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
3217 CHECK_EXT1(EXT_convolution
);
3218 params
[0] = ctx
->Pixel
.PostConvolutionScale
[2];
3220 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
3221 CHECK_EXT1(EXT_convolution
);
3222 params
[0] = ctx
->Pixel
.PostConvolutionScale
[3];
3224 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
3225 CHECK_EXT1(EXT_convolution
);
3226 params
[0] = ctx
->Pixel
.PostConvolutionBias
[0];
3228 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
3229 CHECK_EXT1(EXT_convolution
);
3230 params
[0] = ctx
->Pixel
.PostConvolutionBias
[1];
3232 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
3233 CHECK_EXT1(EXT_convolution
);
3234 params
[0] = ctx
->Pixel
.PostConvolutionBias
[2];
3236 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
3237 CHECK_EXT1(EXT_convolution
);
3238 params
[0] = ctx
->Pixel
.PostConvolutionBias
[3];
3241 CHECK_EXT1(EXT_histogram
);
3242 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.HistogramEnabled
);
3245 CHECK_EXT1(EXT_histogram
);
3246 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.MinMaxEnabled
);
3248 case GL_COLOR_TABLE_SGI
:
3249 CHECK_EXT1(SGI_color_table
);
3250 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
3252 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
3253 CHECK_EXT1(SGI_color_table
);
3254 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
3256 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
3257 CHECK_EXT1(SGI_color_table
);
3258 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
3260 case GL_TEXTURE_COLOR_TABLE_SGI
:
3261 CHECK_EXT1(SGI_texture_color_table
);
3262 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
3264 case GL_COLOR_SUM_EXT
:
3265 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
3266 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Fog
.ColorSumEnabled
);
3268 case GL_CURRENT_SECONDARY_COLOR_EXT
:
3269 CHECK_EXT1(EXT_secondary_color
);
3270 FLUSH_CURRENT(ctx
, 0);
3271 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0];
3272 params
[1] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1];
3273 params
[2] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2];
3274 params
[3] = ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3];
3276 case GL_SECONDARY_COLOR_ARRAY_EXT
:
3277 CHECK_EXT1(EXT_secondary_color
);
3278 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
3280 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
3281 CHECK_EXT1(EXT_secondary_color
);
3282 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
3284 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
3285 CHECK_EXT1(EXT_secondary_color
);
3286 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
3288 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
3289 CHECK_EXT1(EXT_secondary_color
);
3290 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
3292 case GL_CURRENT_FOG_COORDINATE_EXT
:
3293 CHECK_EXT1(EXT_fog_coord
);
3294 FLUSH_CURRENT(ctx
, 0);
3295 params
[0] = ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0];
3297 case GL_FOG_COORDINATE_ARRAY_EXT
:
3298 CHECK_EXT1(EXT_fog_coord
);
3299 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
3301 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
3302 CHECK_EXT1(EXT_fog_coord
);
3303 params
[0] = ENUM_TO_FLOAT(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
3305 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
3306 CHECK_EXT1(EXT_fog_coord
);
3307 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
3309 case GL_FOG_COORDINATE_SOURCE_EXT
:
3310 CHECK_EXT1(EXT_fog_coord
);
3311 params
[0] = ENUM_TO_FLOAT(ctx
->Fog
.FogCoordinateSource
);
3313 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
3314 CHECK_EXT1(EXT_texture_lod_bias
);
3315 params
[0] = ctx
->Const
.MaxTextureLodBias
;
3317 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
3318 CHECK_EXT1(EXT_texture_filter_anisotropic
);
3319 params
[0] = ctx
->Const
.MaxTextureMaxAnisotropy
;
3321 case GL_MULTISAMPLE_ARB
:
3322 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.Enabled
);
3324 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
3325 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleAlphaToCoverage
);
3327 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
3328 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleAlphaToOne
);
3330 case GL_SAMPLE_COVERAGE_ARB
:
3331 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleCoverage
);
3333 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
3334 params
[0] = ctx
->Multisample
.SampleCoverageValue
;
3336 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
3337 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Multisample
.SampleCoverageInvert
);
3339 case GL_SAMPLE_BUFFERS_ARB
:
3340 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
3342 case GL_SAMPLES_ARB
:
3343 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Visual
.samples
);
3345 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
3346 CHECK_EXT1(IBM_rasterpos_clip
);
3347 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.RasterPositionUnclipped
);
3349 case GL_POINT_SPRITE_NV
:
3350 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
3351 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Point
.PointSprite
);
3353 case GL_POINT_SPRITE_R_MODE_NV
:
3354 CHECK_EXT1(NV_point_sprite
);
3355 params
[0] = ENUM_TO_FLOAT(ctx
->Point
.SpriteRMode
);
3357 case GL_POINT_SPRITE_COORD_ORIGIN
:
3358 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
3359 params
[0] = ENUM_TO_FLOAT(ctx
->Point
.SpriteOrigin
);
3361 case GL_GENERATE_MIPMAP_HINT_SGIS
:
3362 CHECK_EXT1(SGIS_generate_mipmap
);
3363 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.GenerateMipmap
);
3365 case GL_VERTEX_PROGRAM_BINDING_NV
:
3366 CHECK_EXT1(NV_vertex_program
);
3367 params
[0] = (GLfloat
)((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
3369 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
3370 CHECK_EXT1(NV_vertex_program
);
3371 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
3373 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
3374 CHECK_EXT1(NV_vertex_program
);
3375 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
3377 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
3378 CHECK_EXT1(NV_vertex_program
);
3379 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
3381 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
3382 CHECK_EXT1(NV_vertex_program
);
3383 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
3385 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
3386 CHECK_EXT1(NV_vertex_program
);
3387 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
3389 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
3390 CHECK_EXT1(NV_vertex_program
);
3391 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
3393 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
3394 CHECK_EXT1(NV_vertex_program
);
3395 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
3397 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
3398 CHECK_EXT1(NV_vertex_program
);
3399 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
3401 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
3402 CHECK_EXT1(NV_vertex_program
);
3403 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
3405 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
3406 CHECK_EXT1(NV_vertex_program
);
3407 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
3409 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
3410 CHECK_EXT1(NV_vertex_program
);
3411 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
3413 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
3414 CHECK_EXT1(NV_vertex_program
);
3415 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
3417 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
3418 CHECK_EXT1(NV_vertex_program
);
3419 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
3421 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
3422 CHECK_EXT1(NV_vertex_program
);
3423 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
3425 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
3426 CHECK_EXT1(NV_vertex_program
);
3427 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
3429 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
3430 CHECK_EXT1(NV_vertex_program
);
3431 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
3433 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
3434 CHECK_EXT1(NV_vertex_program
);
3435 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[0]);
3437 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
3438 CHECK_EXT1(NV_vertex_program
);
3439 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[1]);
3441 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
3442 CHECK_EXT1(NV_vertex_program
);
3443 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[2]);
3445 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
3446 CHECK_EXT1(NV_vertex_program
);
3447 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[3]);
3449 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
3450 CHECK_EXT1(NV_vertex_program
);
3451 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[4]);
3453 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
3454 CHECK_EXT1(NV_vertex_program
);
3455 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[5]);
3457 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
3458 CHECK_EXT1(NV_vertex_program
);
3459 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[6]);
3461 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
3462 CHECK_EXT1(NV_vertex_program
);
3463 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[7]);
3465 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
3466 CHECK_EXT1(NV_vertex_program
);
3467 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[8]);
3469 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
3470 CHECK_EXT1(NV_vertex_program
);
3471 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[9]);
3473 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
3474 CHECK_EXT1(NV_vertex_program
);
3475 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[10]);
3477 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
3478 CHECK_EXT1(NV_vertex_program
);
3479 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[11]);
3481 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
3482 CHECK_EXT1(NV_vertex_program
);
3483 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[12]);
3485 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
3486 CHECK_EXT1(NV_vertex_program
);
3487 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[13]);
3489 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
3490 CHECK_EXT1(NV_vertex_program
);
3491 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[14]);
3493 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
3494 CHECK_EXT1(NV_vertex_program
);
3495 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Eval
.Map1Attrib
[15]);
3497 case GL_FRAGMENT_PROGRAM_NV
:
3498 CHECK_EXT1(NV_fragment_program
);
3499 params
[0] = BOOLEAN_TO_FLOAT(ctx
->FragmentProgram
.Enabled
);
3501 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
3502 CHECK_EXT1(NV_fragment_program
);
3503 params
[0] = (GLfloat
)(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
3505 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
3506 CHECK_EXT1(NV_fragment_program
);
3507 params
[0] = (GLfloat
)(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
3509 case GL_TEXTURE_RECTANGLE_NV
:
3510 CHECK_EXT1(NV_texture_rectangle
);
3511 params
[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
3513 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
3514 CHECK_EXT1(NV_texture_rectangle
);
3515 params
[0] = (GLfloat
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
3517 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
3518 CHECK_EXT1(NV_texture_rectangle
);
3519 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureRectSize
);
3521 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
3522 CHECK_EXT1(EXT_stencil_two_side
);
3523 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Stencil
.TestTwoSide
);
3525 case GL_ACTIVE_STENCIL_FACE_EXT
:
3526 CHECK_EXT1(EXT_stencil_two_side
);
3527 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
3529 case GL_MAX_SHININESS_NV
:
3530 CHECK_EXT1(NV_light_max_exponent
);
3531 params
[0] = ctx
->Const
.MaxShininess
;
3533 case GL_MAX_SPOT_EXPONENT_NV
:
3534 CHECK_EXT1(NV_light_max_exponent
);
3535 params
[0] = ctx
->Const
.MaxSpotExponent
;
3537 case GL_ARRAY_BUFFER_BINDING_ARB
:
3538 params
[0] = (GLfloat
)(ctx
->Array
.ArrayBufferObj
->Name
);
3540 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
3541 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
3543 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
3544 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
3546 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3547 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
3549 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
3550 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
3552 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
3553 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
3555 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
3556 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
3558 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
3559 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
3561 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
3562 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
3564 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
3565 params
[0] = (GLfloat
)(ctx
->Array
.ElementArrayBufferObj
->Name
);
3567 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
3568 CHECK_EXT1(EXT_pixel_buffer_object
);
3569 params
[0] = (GLfloat
)(ctx
->Pack
.BufferObj
->Name
);
3571 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
3572 CHECK_EXT1(EXT_pixel_buffer_object
);
3573 params
[0] = (GLfloat
)(ctx
->Unpack
.BufferObj
->Name
);
3575 case GL_VERTEX_PROGRAM_ARB
:
3576 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3577 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.Enabled
);
3579 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
3580 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3581 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.PointSizeEnabled
);
3583 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
3584 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
3585 params
[0] = BOOLEAN_TO_FLOAT(ctx
->VertexProgram
.TwoSideEnabled
);
3587 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
3588 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3589 params
[0] = (GLfloat
)(ctx
->Const
.MaxProgramMatrixStackDepth
);
3591 case GL_MAX_PROGRAM_MATRICES_ARB
:
3592 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3593 params
[0] = (GLfloat
)(ctx
->Const
.MaxProgramMatrices
);
3595 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
3596 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
3597 params
[0] = BOOLEAN_TO_FLOAT(ctx
->CurrentStack
->Depth
+ 1);
3599 case GL_CURRENT_MATRIX_ARB
:
3600 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
3602 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
3603 params
[0] = matrix
[0];
3604 params
[1] = matrix
[1];
3605 params
[2] = matrix
[2];
3606 params
[3] = matrix
[3];
3607 params
[4] = matrix
[4];
3608 params
[5] = matrix
[5];
3609 params
[6] = matrix
[6];
3610 params
[7] = matrix
[7];
3611 params
[8] = matrix
[8];
3612 params
[9] = matrix
[9];
3613 params
[10] = matrix
[10];
3614 params
[11] = matrix
[11];
3615 params
[12] = matrix
[12];
3616 params
[13] = matrix
[13];
3617 params
[14] = matrix
[14];
3618 params
[15] = matrix
[15];
3621 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
3622 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
3624 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
3625 params
[0] = matrix
[0];
3626 params
[1] = matrix
[4];
3627 params
[2] = matrix
[8];
3628 params
[3] = matrix
[12];
3629 params
[4] = matrix
[1];
3630 params
[5] = matrix
[5];
3631 params
[6] = matrix
[9];
3632 params
[7] = matrix
[13];
3633 params
[8] = matrix
[2];
3634 params
[9] = matrix
[6];
3635 params
[10] = matrix
[10];
3636 params
[11] = matrix
[14];
3637 params
[12] = matrix
[3];
3638 params
[13] = matrix
[7];
3639 params
[14] = matrix
[11];
3640 params
[15] = matrix
[15];
3643 case GL_MAX_VERTEX_ATTRIBS_ARB
:
3644 CHECK_EXT1(ARB_vertex_program
);
3645 params
[0] = (GLfloat
)(ctx
->Const
.VertexProgram
.MaxAttribs
);
3647 case GL_PROGRAM_ERROR_POSITION_ARB
:
3648 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
3649 params
[0] = (GLfloat
)(ctx
->Program
.ErrorPos
);
3651 case GL_FRAGMENT_PROGRAM_ARB
:
3652 CHECK_EXT1(ARB_fragment_program
);
3653 params
[0] = BOOLEAN_TO_FLOAT(ctx
->FragmentProgram
.Enabled
);
3655 case GL_MAX_TEXTURE_COORDS_ARB
:
3656 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
3657 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureCoordUnits
);
3659 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
3660 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
3661 params
[0] = (GLfloat
)(ctx
->Const
.MaxTextureImageUnits
);
3663 case GL_DEPTH_BOUNDS_TEST_EXT
:
3664 CHECK_EXT1(EXT_depth_bounds_test
);
3665 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Depth
.BoundsTest
);
3667 case GL_DEPTH_BOUNDS_EXT
:
3668 CHECK_EXT1(EXT_depth_bounds_test
);
3669 params
[0] = ctx
->Depth
.BoundsMin
;
3670 params
[1] = ctx
->Depth
.BoundsMax
;
3672 case GL_DEPTH_CLAMP
:
3673 CHECK_EXT1(ARB_depth_clamp
);
3674 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Transform
.DepthClamp
);
3676 case GL_MAX_DRAW_BUFFERS_ARB
:
3677 params
[0] = (GLfloat
)(ctx
->Const
.MaxDrawBuffers
);
3679 case GL_DRAW_BUFFER0_ARB
:
3680 params
[0] = ENUM_TO_FLOAT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
3682 case GL_DRAW_BUFFER1_ARB
:
3685 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3686 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3689 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
3690 params
[0] = ENUM_TO_FLOAT(buffer
);
3693 case GL_DRAW_BUFFER2_ARB
:
3696 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3697 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3700 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
3701 params
[0] = ENUM_TO_FLOAT(buffer
);
3704 case GL_DRAW_BUFFER3_ARB
:
3707 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
3708 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
3711 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
3712 params
[0] = ENUM_TO_FLOAT(buffer
);
3715 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
3716 CHECK_EXT1(OES_read_format
);
3717 if (ctx
->NewState
& _NEW_BUFFERS
)
3718 _mesa_update_state(ctx
);
3719 params
[0] = (GLfloat
)(_mesa_get_color_read_type(ctx
));
3721 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
3722 CHECK_EXT1(OES_read_format
);
3723 if (ctx
->NewState
& _NEW_BUFFERS
)
3724 _mesa_update_state(ctx
);
3725 params
[0] = (GLfloat
)(_mesa_get_color_read_format(ctx
));
3727 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
3728 CHECK_EXT1(ATI_fragment_shader
);
3729 params
[0] = (GLfloat
)(6);
3731 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
3732 CHECK_EXT1(ATI_fragment_shader
);
3733 params
[0] = (GLfloat
)(8);
3735 case GL_NUM_PASSES_ATI
:
3736 CHECK_EXT1(ATI_fragment_shader
);
3737 params
[0] = (GLfloat
)(2);
3739 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
3740 CHECK_EXT1(ATI_fragment_shader
);
3741 params
[0] = (GLfloat
)(8);
3743 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
3744 CHECK_EXT1(ATI_fragment_shader
);
3745 params
[0] = (GLfloat
)(16);
3747 case GL_COLOR_ALPHA_PAIRING_ATI
:
3748 CHECK_EXT1(ATI_fragment_shader
);
3749 params
[0] = BOOLEAN_TO_FLOAT(GL_TRUE
);
3751 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
3752 CHECK_EXT1(ATI_fragment_shader
);
3753 params
[0] = (GLfloat
)(3);
3755 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
3756 CHECK_EXT1(ATI_fragment_shader
);
3757 params
[0] = (GLfloat
)(3);
3759 case GL_STENCIL_BACK_FUNC
:
3760 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.Function
[1]);
3762 case GL_STENCIL_BACK_VALUE_MASK
:
3763 params
[0] = (GLfloat
)(ctx
->Stencil
.ValueMask
[1]);
3765 case GL_STENCIL_BACK_WRITEMASK
:
3766 params
[0] = (GLfloat
)(ctx
->Stencil
.WriteMask
[1]);
3768 case GL_STENCIL_BACK_REF
:
3769 params
[0] = (GLfloat
)(ctx
->Stencil
.Ref
[1]);
3771 case GL_STENCIL_BACK_FAIL
:
3772 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.FailFunc
[1]);
3774 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
3775 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZFailFunc
[1]);
3777 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
3778 params
[0] = ENUM_TO_FLOAT(ctx
->Stencil
.ZPassFunc
[1]);
3780 case GL_FRAMEBUFFER_BINDING_EXT
:
3781 CHECK_EXT1(EXT_framebuffer_object
);
3782 params
[0] = (GLfloat
)(ctx
->DrawBuffer
->Name
);
3784 case GL_RENDERBUFFER_BINDING_EXT
:
3785 CHECK_EXT1(EXT_framebuffer_object
);
3786 params
[0] = (GLfloat
)(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
3788 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
3789 CHECK_EXT1(EXT_framebuffer_object
);
3790 params
[0] = (GLfloat
)(ctx
->Const
.MaxColorAttachments
);
3792 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
3793 CHECK_EXT1(EXT_framebuffer_object
);
3794 params
[0] = (GLfloat
)(ctx
->Const
.MaxRenderbufferSize
);
3796 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
3797 CHECK_EXT1(EXT_framebuffer_blit
);
3798 params
[0] = (GLfloat
)(ctx
->ReadBuffer
->Name
);
3800 case GL_PROVOKING_VERTEX_EXT
:
3801 CHECK_EXT1(EXT_provoking_vertex
);
3802 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Light
.ProvokingVertex
);
3804 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
3805 CHECK_EXT1(EXT_provoking_vertex
);
3806 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
3808 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
3809 CHECK_EXT1(ARB_fragment_shader
);
3810 params
[0] = (GLfloat
)(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
3812 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
3813 CHECK_EXT1(ARB_fragment_shader
);
3814 params
[0] = ENUM_TO_FLOAT(ctx
->Hint
.FragmentShaderDerivative
);
3816 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
3817 CHECK_EXT1(ARB_vertex_shader
);
3818 params
[0] = (GLfloat
)(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
3820 case GL_MAX_VARYING_FLOATS_ARB
:
3821 CHECK_EXT1(ARB_vertex_shader
);
3822 params
[0] = (GLfloat
)(ctx
->Const
.MaxVarying
* 4);
3824 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
3825 CHECK_EXT1(ARB_vertex_shader
);
3826 params
[0] = (GLfloat
)(ctx
->Const
.MaxVertexTextureImageUnits
);
3828 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
3829 CHECK_EXT1(ARB_vertex_shader
);
3830 params
[0] = (GLfloat
)(ctx
->Const
.MaxCombinedTextureImageUnits
);
3832 case GL_CURRENT_PROGRAM
:
3833 CHECK_EXT1(ARB_shader_objects
);
3834 params
[0] = (GLfloat
)(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
3836 case GL_MAX_SAMPLES
:
3837 CHECK_EXT1(ARB_framebuffer_object
);
3838 params
[0] = (GLfloat
)(ctx
->Const
.MaxSamples
);
3840 case GL_VERTEX_ARRAY_BINDING_APPLE
:
3841 CHECK_EXT1(APPLE_vertex_array_object
);
3842 params
[0] = (GLfloat
)(ctx
->Array
.ArrayObj
->Name
);
3844 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
3845 CHECK_EXT1(ARB_seamless_cube_map
);
3846 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Texture
.CubeMapSeamless
);
3848 case GL_MAX_SERVER_WAIT_TIMEOUT
:
3849 CHECK_EXT1(ARB_sync
);
3850 params
[0] = (GLfloat
)(ctx
->Const
.MaxServerWaitTimeout
);
3852 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
3853 CHECK_EXT1(EXT_transform_feedback
);
3854 params
[0] = (GLfloat
)(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
3856 case GL_RASTERIZER_DISCARD
:
3857 CHECK_EXT1(EXT_transform_feedback
);
3858 params
[0] = BOOLEAN_TO_FLOAT(ctx
->TransformFeedback
.RasterDiscard
);
3860 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
3861 CHECK_EXT1(EXT_transform_feedback
);
3862 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
3864 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
3865 CHECK_EXT1(EXT_transform_feedback
);
3866 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
3868 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
3869 CHECK_EXT1(EXT_transform_feedback
);
3870 params
[0] = (GLfloat
)(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
3872 case GL_NUM_EXTENSIONS
:
3874 params
[0] = (GLfloat
)(_mesa_get_extension_count(ctx
));
3876 case GL_MAJOR_VERSION
:
3878 params
[0] = (GLfloat
)(ctx
->VersionMajor
);
3880 case GL_MINOR_VERSION
:
3882 params
[0] = (GLfloat
)(ctx
->VersionMinor
);
3884 case GL_CONTEXT_FLAGS
:
3886 params
[0] = (GLfloat
)(ctx
->Const
.ContextFlags
);
3888 case GL_PRIMITIVE_RESTART
:
3890 params
[0] = BOOLEAN_TO_FLOAT(ctx
->Array
.PrimitiveRestart
);
3892 case GL_PRIMITIVE_RESTART_INDEX
:
3894 params
[0] = (GLfloat
)(ctx
->Array
.RestartIndex
);
3896 case GL_CONTEXT_PROFILE_MASK
:
3898 params
[0] = (GLfloat
)(ctx
->Const
.ProfileMask
);
3901 goto invalid_enum_error
;
3906 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetFloatv(pname=0x%x)", pname
);
3910 _mesa_GetIntegerv( GLenum pname
, GLint
*params
)
3912 GET_CURRENT_CONTEXT(ctx
);
3913 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
3914 ASSERT_OUTSIDE_BEGIN_END(ctx
);
3920 if (ctx
->Driver
.GetIntegerv
&&
3921 ctx
->Driver
.GetIntegerv(ctx
, pname
, params
))
3925 case GL_ACCUM_RED_BITS
:
3926 params
[0] = ctx
->DrawBuffer
->Visual
.accumRedBits
;
3928 case GL_ACCUM_GREEN_BITS
:
3929 params
[0] = ctx
->DrawBuffer
->Visual
.accumGreenBits
;
3931 case GL_ACCUM_BLUE_BITS
:
3932 params
[0] = ctx
->DrawBuffer
->Visual
.accumBlueBits
;
3934 case GL_ACCUM_ALPHA_BITS
:
3935 params
[0] = ctx
->DrawBuffer
->Visual
.accumAlphaBits
;
3937 case GL_ACCUM_CLEAR_VALUE
:
3938 params
[0] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[0]);
3939 params
[1] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[1]);
3940 params
[2] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[2]);
3941 params
[3] = FLOAT_TO_INT(ctx
->Accum
.ClearColor
[3]);
3944 params
[0] = IROUND(ctx
->Pixel
.AlphaBias
);
3947 if (ctx
->NewState
& _NEW_BUFFERS
)
3948 _mesa_update_state(ctx
);
3949 params
[0] = ctx
->DrawBuffer
->Visual
.alphaBits
;
3951 case GL_ALPHA_SCALE
:
3952 params
[0] = IROUND(ctx
->Pixel
.AlphaScale
);
3955 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.AlphaEnabled
);
3957 case GL_ALPHA_TEST_FUNC
:
3958 params
[0] = ENUM_TO_INT(ctx
->Color
.AlphaFunc
);
3960 case GL_ALPHA_TEST_REF
:
3961 params
[0] = FLOAT_TO_INT(ctx
->Color
.AlphaRef
);
3963 case GL_ATTRIB_STACK_DEPTH
:
3964 params
[0] = ctx
->AttribStackDepth
;
3966 case GL_AUTO_NORMAL
:
3967 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.AutoNormal
);
3969 case GL_AUX_BUFFERS
:
3970 params
[0] = ctx
->DrawBuffer
->Visual
.numAuxBuffers
;
3973 params
[0] = BOOLEAN_TO_INT((ctx
->Color
.BlendEnabled
& 1));
3976 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstRGB
);
3979 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcRGB
);
3981 case GL_BLEND_SRC_RGB_EXT
:
3982 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcRGB
);
3984 case GL_BLEND_DST_RGB_EXT
:
3985 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstRGB
);
3987 case GL_BLEND_SRC_ALPHA_EXT
:
3988 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendSrcA
);
3990 case GL_BLEND_DST_ALPHA_EXT
:
3991 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendDstA
);
3993 case GL_BLEND_EQUATION
:
3994 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendEquationRGB
);
3996 case GL_BLEND_EQUATION_ALPHA_EXT
:
3997 params
[0] = ENUM_TO_INT(ctx
->Color
.BlendEquationA
);
3999 case GL_BLEND_COLOR_EXT
:
4000 params
[0] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[0]);
4001 params
[1] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[1]);
4002 params
[2] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[2]);
4003 params
[3] = FLOAT_TO_INT(ctx
->Color
.BlendColor
[3]);
4006 params
[0] = IROUND(ctx
->Pixel
.BlueBias
);
4009 if (ctx
->NewState
& _NEW_BUFFERS
)
4010 _mesa_update_state(ctx
);
4011 params
[0] = ctx
->DrawBuffer
->Visual
.blueBits
;
4014 params
[0] = IROUND(ctx
->Pixel
.BlueScale
);
4016 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
4017 params
[0] = ctx
->ClientAttribStackDepth
;
4019 case GL_CLIP_PLANE0
:
4020 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
4022 case GL_CLIP_PLANE1
:
4023 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
4025 case GL_CLIP_PLANE2
:
4026 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
4028 case GL_CLIP_PLANE3
:
4029 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
4031 case GL_CLIP_PLANE4
:
4032 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
4034 case GL_CLIP_PLANE5
:
4035 params
[0] = BOOLEAN_TO_INT((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
4037 case GL_COLOR_CLEAR_VALUE
:
4038 params
[0] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[0]);
4039 params
[1] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[1]);
4040 params
[2] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[2]);
4041 params
[3] = FLOAT_TO_INT(ctx
->Color
.ClearColor
[3]);
4043 case GL_COLOR_MATERIAL
:
4044 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.ColorMaterialEnabled
);
4046 case GL_COLOR_MATERIAL_FACE
:
4047 params
[0] = ENUM_TO_INT(ctx
->Light
.ColorMaterialFace
);
4049 case GL_COLOR_MATERIAL_PARAMETER
:
4050 params
[0] = ENUM_TO_INT(ctx
->Light
.ColorMaterialMode
);
4052 case GL_COLOR_WRITEMASK
:
4053 params
[0] = ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0;
4054 params
[1] = ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0;
4055 params
[2] = ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0;
4056 params
[3] = ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0;
4059 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.CullFlag
);
4061 case GL_CULL_FACE_MODE
:
4062 params
[0] = ENUM_TO_INT(ctx
->Polygon
.CullFaceMode
);
4064 case GL_CURRENT_COLOR
:
4065 FLUSH_CURRENT(ctx
, 0);
4066 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
4067 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
4068 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
4069 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
4071 case GL_CURRENT_INDEX
:
4072 FLUSH_CURRENT(ctx
, 0);
4073 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
4075 case GL_CURRENT_NORMAL
:
4076 FLUSH_CURRENT(ctx
, 0);
4077 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
4078 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
4079 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
4081 case GL_CURRENT_RASTER_COLOR
:
4082 params
[0] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[0]);
4083 params
[1] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[1]);
4084 params
[2] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[2]);
4085 params
[3] = FLOAT_TO_INT(ctx
->Current
.RasterColor
[3]);
4087 case GL_CURRENT_RASTER_DISTANCE
:
4088 params
[0] = IROUND(ctx
->Current
.RasterDistance
);
4090 case GL_CURRENT_RASTER_INDEX
:
4091 params
[0] = IROUND(1.0);
4093 case GL_CURRENT_RASTER_POSITION
:
4094 params
[0] = IROUND(ctx
->Current
.RasterPos
[0]);
4095 params
[1] = IROUND(ctx
->Current
.RasterPos
[1]);
4096 params
[2] = IROUND(ctx
->Current
.RasterPos
[2]);
4097 params
[3] = IROUND(ctx
->Current
.RasterPos
[3]);
4099 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
4100 params
[0] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[0]);
4101 params
[1] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[1]);
4102 params
[2] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[2]);
4103 params
[3] = FLOAT_TO_INT(ctx
->Current
.RasterSecondaryColor
[3]);
4105 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
4107 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4108 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4109 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4110 "glGet(raster tex coords, unit %u)", unit
);
4113 params
[0] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][0]);
4114 params
[1] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][1]);
4115 params
[2] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][2]);
4116 params
[3] = IROUND(ctx
->Current
.RasterTexCoords
[unit
][3]);
4119 case GL_CURRENT_RASTER_POSITION_VALID
:
4120 params
[0] = BOOLEAN_TO_INT(ctx
->Current
.RasterPosValid
);
4122 case GL_CURRENT_TEXTURE_COORDS
:
4124 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4125 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4126 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4127 "glGet(current tex coords, unit %u)", unit
);
4130 FLUSH_CURRENT(ctx
, 0);
4131 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
4132 params
[1] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
4133 params
[2] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
4134 params
[3] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
4138 params
[0] = IROUND(ctx
->Pixel
.DepthBias
);
4141 params
[0] = ctx
->DrawBuffer
->Visual
.depthBits
;
4143 case GL_DEPTH_CLEAR_VALUE
:
4144 params
[0] = FLOAT_TO_INT(((GLfloat
) ctx
->Depth
.Clear
));
4147 params
[0] = ENUM_TO_INT(ctx
->Depth
.Func
);
4149 case GL_DEPTH_RANGE
:
4150 params
[0] = FLOAT_TO_INT(ctx
->Viewport
.Near
);
4151 params
[1] = FLOAT_TO_INT(ctx
->Viewport
.Far
);
4153 case GL_DEPTH_SCALE
:
4154 params
[0] = IROUND(ctx
->Pixel
.DepthScale
);
4157 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.Test
);
4159 case GL_DEPTH_WRITEMASK
:
4160 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.Mask
);
4163 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.DitherFlag
);
4165 case GL_DOUBLEBUFFER
:
4166 params
[0] = BOOLEAN_TO_INT(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
4168 case GL_DRAW_BUFFER
:
4169 params
[0] = ENUM_TO_INT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
4172 FLUSH_CURRENT(ctx
, 0);
4173 params
[0] = BOOLEAN_TO_INT((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
4175 case GL_FEEDBACK_BUFFER_SIZE
:
4176 params
[0] = ctx
->Feedback
.BufferSize
;
4178 case GL_FEEDBACK_BUFFER_TYPE
:
4179 params
[0] = ENUM_TO_INT(ctx
->Feedback
.Type
);
4182 params
[0] = BOOLEAN_TO_INT(ctx
->Fog
.Enabled
);
4185 params
[0] = FLOAT_TO_INT(ctx
->Fog
.Color
[0]);
4186 params
[1] = FLOAT_TO_INT(ctx
->Fog
.Color
[1]);
4187 params
[2] = FLOAT_TO_INT(ctx
->Fog
.Color
[2]);
4188 params
[3] = FLOAT_TO_INT(ctx
->Fog
.Color
[3]);
4190 case GL_FOG_DENSITY
:
4191 params
[0] = IROUND(ctx
->Fog
.Density
);
4194 params
[0] = IROUND(ctx
->Fog
.End
);
4197 params
[0] = ENUM_TO_INT(ctx
->Hint
.Fog
);
4200 params
[0] = IROUND(ctx
->Fog
.Index
);
4203 params
[0] = ENUM_TO_INT(ctx
->Fog
.Mode
);
4206 params
[0] = IROUND(ctx
->Fog
.Start
);
4209 params
[0] = ENUM_TO_INT(ctx
->Polygon
.FrontFace
);
4212 params
[0] = IROUND(ctx
->Pixel
.GreenBias
);
4215 if (ctx
->NewState
& _NEW_BUFFERS
)
4216 _mesa_update_state(ctx
);
4217 params
[0] = ctx
->DrawBuffer
->Visual
.greenBits
;
4219 case GL_GREEN_SCALE
:
4220 params
[0] = IROUND(ctx
->Pixel
.GreenScale
);
4223 if (ctx
->NewState
& _NEW_BUFFERS
)
4224 _mesa_update_state(ctx
);
4225 params
[0] = ctx
->DrawBuffer
->Visual
.indexBits
;
4227 case GL_INDEX_CLEAR_VALUE
:
4228 params
[0] = ctx
->Color
.ClearIndex
;
4231 params
[0] = BOOLEAN_TO_INT(GL_FALSE
);
4233 case GL_INDEX_OFFSET
:
4234 params
[0] = ctx
->Pixel
.IndexOffset
;
4236 case GL_INDEX_SHIFT
:
4237 params
[0] = ctx
->Pixel
.IndexShift
;
4239 case GL_INDEX_WRITEMASK
:
4240 params
[0] = ctx
->Color
.IndexMask
;
4243 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[0].Enabled
);
4246 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[1].Enabled
);
4249 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[2].Enabled
);
4252 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[3].Enabled
);
4255 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[4].Enabled
);
4258 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[5].Enabled
);
4261 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[6].Enabled
);
4264 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Light
[7].Enabled
);
4267 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Enabled
);
4269 case GL_LIGHT_MODEL_AMBIENT
:
4270 params
[0] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[0]);
4271 params
[1] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[1]);
4272 params
[2] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[2]);
4273 params
[3] = FLOAT_TO_INT(ctx
->Light
.Model
.Ambient
[3]);
4275 case GL_LIGHT_MODEL_COLOR_CONTROL
:
4276 params
[0] = ENUM_TO_INT(ctx
->Light
.Model
.ColorControl
);
4278 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
4279 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Model
.LocalViewer
);
4281 case GL_LIGHT_MODEL_TWO_SIDE
:
4282 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.Model
.TwoSide
);
4284 case GL_LINE_SMOOTH
:
4285 params
[0] = BOOLEAN_TO_INT(ctx
->Line
.SmoothFlag
);
4287 case GL_LINE_SMOOTH_HINT
:
4288 params
[0] = ENUM_TO_INT(ctx
->Hint
.LineSmooth
);
4290 case GL_LINE_STIPPLE
:
4291 params
[0] = BOOLEAN_TO_INT(ctx
->Line
.StippleFlag
);
4293 case GL_LINE_STIPPLE_PATTERN
:
4294 params
[0] = ctx
->Line
.StipplePattern
;
4296 case GL_LINE_STIPPLE_REPEAT
:
4297 params
[0] = ctx
->Line
.StippleFactor
;
4300 params
[0] = IROUND(ctx
->Line
.Width
);
4302 case GL_LINE_WIDTH_GRANULARITY
:
4303 params
[0] = IROUND(ctx
->Const
.LineWidthGranularity
);
4305 case GL_LINE_WIDTH_RANGE
:
4306 params
[0] = IROUND(ctx
->Const
.MinLineWidthAA
);
4307 params
[1] = IROUND(ctx
->Const
.MaxLineWidthAA
);
4309 case GL_ALIASED_LINE_WIDTH_RANGE
:
4310 params
[0] = IROUND(ctx
->Const
.MinLineWidth
);
4311 params
[1] = IROUND(ctx
->Const
.MaxLineWidth
);
4314 params
[0] = ctx
->List
.ListBase
;
4317 params
[0] = (ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0);
4322 if (!ctx
->CompileFlag
)
4324 else if (ctx
->ExecuteFlag
)
4325 mode
= GL_COMPILE_AND_EXECUTE
;
4328 params
[0] = ENUM_TO_INT(mode
);
4331 case GL_INDEX_LOGIC_OP
:
4332 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.IndexLogicOpEnabled
);
4334 case GL_COLOR_LOGIC_OP
:
4335 params
[0] = BOOLEAN_TO_INT(ctx
->Color
.ColorLogicOpEnabled
);
4337 case GL_LOGIC_OP_MODE
:
4338 params
[0] = ENUM_TO_INT(ctx
->Color
.LogicOp
);
4340 case GL_MAP1_COLOR_4
:
4341 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Color4
);
4343 case GL_MAP1_GRID_DOMAIN
:
4344 params
[0] = IROUND(ctx
->Eval
.MapGrid1u1
);
4345 params
[1] = IROUND(ctx
->Eval
.MapGrid1u2
);
4347 case GL_MAP1_GRID_SEGMENTS
:
4348 params
[0] = ctx
->Eval
.MapGrid1un
;
4351 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Index
);
4353 case GL_MAP1_NORMAL
:
4354 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Normal
);
4356 case GL_MAP1_TEXTURE_COORD_1
:
4357 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord1
);
4359 case GL_MAP1_TEXTURE_COORD_2
:
4360 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord2
);
4362 case GL_MAP1_TEXTURE_COORD_3
:
4363 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord3
);
4365 case GL_MAP1_TEXTURE_COORD_4
:
4366 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1TextureCoord4
);
4368 case GL_MAP1_VERTEX_3
:
4369 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Vertex3
);
4371 case GL_MAP1_VERTEX_4
:
4372 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Vertex4
);
4374 case GL_MAP2_COLOR_4
:
4375 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Color4
);
4377 case GL_MAP2_GRID_DOMAIN
:
4378 params
[0] = IROUND(ctx
->Eval
.MapGrid2u1
);
4379 params
[1] = IROUND(ctx
->Eval
.MapGrid2u2
);
4380 params
[2] = IROUND(ctx
->Eval
.MapGrid2v1
);
4381 params
[3] = IROUND(ctx
->Eval
.MapGrid2v2
);
4383 case GL_MAP2_GRID_SEGMENTS
:
4384 params
[0] = ctx
->Eval
.MapGrid2un
;
4385 params
[1] = ctx
->Eval
.MapGrid2vn
;
4388 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Index
);
4390 case GL_MAP2_NORMAL
:
4391 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Normal
);
4393 case GL_MAP2_TEXTURE_COORD_1
:
4394 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord1
);
4396 case GL_MAP2_TEXTURE_COORD_2
:
4397 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord2
);
4399 case GL_MAP2_TEXTURE_COORD_3
:
4400 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord3
);
4402 case GL_MAP2_TEXTURE_COORD_4
:
4403 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2TextureCoord4
);
4405 case GL_MAP2_VERTEX_3
:
4406 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Vertex3
);
4408 case GL_MAP2_VERTEX_4
:
4409 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map2Vertex4
);
4412 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MapColorFlag
);
4414 case GL_MAP_STENCIL
:
4415 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MapStencilFlag
);
4417 case GL_MATRIX_MODE
:
4418 params
[0] = ENUM_TO_INT(ctx
->Transform
.MatrixMode
);
4420 case GL_MAX_ATTRIB_STACK_DEPTH
:
4421 params
[0] = MAX_ATTRIB_STACK_DEPTH
;
4423 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
4424 params
[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH
;
4426 case GL_MAX_CLIP_PLANES
:
4427 params
[0] = ctx
->Const
.MaxClipPlanes
;
4429 case GL_MAX_ELEMENTS_VERTICES
:
4430 params
[0] = ctx
->Const
.MaxArrayLockSize
;
4432 case GL_MAX_ELEMENTS_INDICES
:
4433 params
[0] = ctx
->Const
.MaxArrayLockSize
;
4435 case GL_MAX_EVAL_ORDER
:
4436 params
[0] = MAX_EVAL_ORDER
;
4439 params
[0] = ctx
->Const
.MaxLights
;
4441 case GL_MAX_LIST_NESTING
:
4442 params
[0] = MAX_LIST_NESTING
;
4444 case GL_MAX_MODELVIEW_STACK_DEPTH
:
4445 params
[0] = MAX_MODELVIEW_STACK_DEPTH
;
4447 case GL_MAX_NAME_STACK_DEPTH
:
4448 params
[0] = MAX_NAME_STACK_DEPTH
;
4450 case GL_MAX_PIXEL_MAP_TABLE
:
4451 params
[0] = MAX_PIXEL_MAP_TABLE
;
4453 case GL_MAX_PROJECTION_STACK_DEPTH
:
4454 params
[0] = MAX_PROJECTION_STACK_DEPTH
;
4456 case GL_MAX_TEXTURE_SIZE
:
4457 params
[0] = 1 << (ctx
->Const
.MaxTextureLevels
- 1);
4459 case GL_MAX_3D_TEXTURE_SIZE
:
4460 params
[0] = 1 << (ctx
->Const
.Max3DTextureLevels
- 1);
4462 case GL_MAX_TEXTURE_STACK_DEPTH
:
4463 params
[0] = MAX_TEXTURE_STACK_DEPTH
;
4465 case GL_MAX_VIEWPORT_DIMS
:
4466 params
[0] = ctx
->Const
.MaxViewportWidth
;
4467 params
[1] = ctx
->Const
.MaxViewportHeight
;
4469 case GL_MODELVIEW_MATRIX
:
4471 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
4472 params
[0] = IROUND(matrix
[0]);
4473 params
[1] = IROUND(matrix
[1]);
4474 params
[2] = IROUND(matrix
[2]);
4475 params
[3] = IROUND(matrix
[3]);
4476 params
[4] = IROUND(matrix
[4]);
4477 params
[5] = IROUND(matrix
[5]);
4478 params
[6] = IROUND(matrix
[6]);
4479 params
[7] = IROUND(matrix
[7]);
4480 params
[8] = IROUND(matrix
[8]);
4481 params
[9] = IROUND(matrix
[9]);
4482 params
[10] = IROUND(matrix
[10]);
4483 params
[11] = IROUND(matrix
[11]);
4484 params
[12] = IROUND(matrix
[12]);
4485 params
[13] = IROUND(matrix
[13]);
4486 params
[14] = IROUND(matrix
[14]);
4487 params
[15] = IROUND(matrix
[15]);
4490 case GL_MODELVIEW_STACK_DEPTH
:
4491 params
[0] = ctx
->ModelviewMatrixStack
.Depth
+ 1;
4493 case GL_NAME_STACK_DEPTH
:
4494 params
[0] = ctx
->Select
.NameStackDepth
;
4497 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.Normalize
);
4499 case GL_PACK_ALIGNMENT
:
4500 params
[0] = ctx
->Pack
.Alignment
;
4502 case GL_PACK_LSB_FIRST
:
4503 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.LsbFirst
);
4505 case GL_PACK_ROW_LENGTH
:
4506 params
[0] = ctx
->Pack
.RowLength
;
4508 case GL_PACK_SKIP_PIXELS
:
4509 params
[0] = ctx
->Pack
.SkipPixels
;
4511 case GL_PACK_SKIP_ROWS
:
4512 params
[0] = ctx
->Pack
.SkipRows
;
4514 case GL_PACK_SWAP_BYTES
:
4515 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.SwapBytes
);
4517 case GL_PACK_SKIP_IMAGES_EXT
:
4518 params
[0] = ctx
->Pack
.SkipImages
;
4520 case GL_PACK_IMAGE_HEIGHT_EXT
:
4521 params
[0] = ctx
->Pack
.ImageHeight
;
4523 case GL_PACK_INVERT_MESA
:
4524 params
[0] = BOOLEAN_TO_INT(ctx
->Pack
.Invert
);
4526 case GL_PERSPECTIVE_CORRECTION_HINT
:
4527 params
[0] = ENUM_TO_INT(ctx
->Hint
.PerspectiveCorrection
);
4529 case GL_PIXEL_MAP_A_TO_A_SIZE
:
4530 params
[0] = ctx
->PixelMaps
.AtoA
.Size
;
4532 case GL_PIXEL_MAP_B_TO_B_SIZE
:
4533 params
[0] = ctx
->PixelMaps
.BtoB
.Size
;
4535 case GL_PIXEL_MAP_G_TO_G_SIZE
:
4536 params
[0] = ctx
->PixelMaps
.GtoG
.Size
;
4538 case GL_PIXEL_MAP_I_TO_A_SIZE
:
4539 params
[0] = ctx
->PixelMaps
.ItoA
.Size
;
4541 case GL_PIXEL_MAP_I_TO_B_SIZE
:
4542 params
[0] = ctx
->PixelMaps
.ItoB
.Size
;
4544 case GL_PIXEL_MAP_I_TO_G_SIZE
:
4545 params
[0] = ctx
->PixelMaps
.ItoG
.Size
;
4547 case GL_PIXEL_MAP_I_TO_I_SIZE
:
4548 params
[0] = ctx
->PixelMaps
.ItoI
.Size
;
4550 case GL_PIXEL_MAP_I_TO_R_SIZE
:
4551 params
[0] = ctx
->PixelMaps
.ItoR
.Size
;
4553 case GL_PIXEL_MAP_R_TO_R_SIZE
:
4554 params
[0] = ctx
->PixelMaps
.RtoR
.Size
;
4556 case GL_PIXEL_MAP_S_TO_S_SIZE
:
4557 params
[0] = ctx
->PixelMaps
.StoS
.Size
;
4560 params
[0] = IROUND(ctx
->Point
.Size
);
4562 case GL_POINT_SIZE_GRANULARITY
:
4563 params
[0] = IROUND(ctx
->Const
.PointSizeGranularity
);
4565 case GL_POINT_SIZE_RANGE
:
4566 params
[0] = IROUND(ctx
->Const
.MinPointSizeAA
);
4567 params
[1] = IROUND(ctx
->Const
.MaxPointSizeAA
);
4569 case GL_ALIASED_POINT_SIZE_RANGE
:
4570 params
[0] = IROUND(ctx
->Const
.MinPointSize
);
4571 params
[1] = IROUND(ctx
->Const
.MaxPointSize
);
4573 case GL_POINT_SMOOTH
:
4574 params
[0] = BOOLEAN_TO_INT(ctx
->Point
.SmoothFlag
);
4576 case GL_POINT_SMOOTH_HINT
:
4577 params
[0] = ENUM_TO_INT(ctx
->Hint
.PointSmooth
);
4579 case GL_POINT_SIZE_MIN_EXT
:
4580 params
[0] = IROUND(ctx
->Point
.MinSize
);
4582 case GL_POINT_SIZE_MAX_EXT
:
4583 params
[0] = IROUND(ctx
->Point
.MaxSize
);
4585 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
4586 params
[0] = IROUND(ctx
->Point
.Threshold
);
4588 case GL_DISTANCE_ATTENUATION_EXT
:
4589 params
[0] = IROUND(ctx
->Point
.Params
[0]);
4590 params
[1] = IROUND(ctx
->Point
.Params
[1]);
4591 params
[2] = IROUND(ctx
->Point
.Params
[2]);
4593 case GL_POLYGON_MODE
:
4594 params
[0] = ENUM_TO_INT(ctx
->Polygon
.FrontMode
);
4595 params
[1] = ENUM_TO_INT(ctx
->Polygon
.BackMode
);
4597 case GL_POLYGON_OFFSET_BIAS_EXT
:
4598 params
[0] = IROUND(ctx
->Polygon
.OffsetUnits
);
4600 case GL_POLYGON_OFFSET_FACTOR
:
4601 params
[0] = IROUND(ctx
->Polygon
.OffsetFactor
);
4603 case GL_POLYGON_OFFSET_UNITS
:
4604 params
[0] = IROUND(ctx
->Polygon
.OffsetUnits
);
4606 case GL_POLYGON_OFFSET_POINT
:
4607 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetPoint
);
4609 case GL_POLYGON_OFFSET_LINE
:
4610 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetLine
);
4612 case GL_POLYGON_OFFSET_FILL
:
4613 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.OffsetFill
);
4615 case GL_POLYGON_SMOOTH
:
4616 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.SmoothFlag
);
4618 case GL_POLYGON_SMOOTH_HINT
:
4619 params
[0] = ENUM_TO_INT(ctx
->Hint
.PolygonSmooth
);
4621 case GL_POLYGON_STIPPLE
:
4622 params
[0] = BOOLEAN_TO_INT(ctx
->Polygon
.StippleFlag
);
4624 case GL_PROJECTION_MATRIX
:
4626 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
4627 params
[0] = IROUND(matrix
[0]);
4628 params
[1] = IROUND(matrix
[1]);
4629 params
[2] = IROUND(matrix
[2]);
4630 params
[3] = IROUND(matrix
[3]);
4631 params
[4] = IROUND(matrix
[4]);
4632 params
[5] = IROUND(matrix
[5]);
4633 params
[6] = IROUND(matrix
[6]);
4634 params
[7] = IROUND(matrix
[7]);
4635 params
[8] = IROUND(matrix
[8]);
4636 params
[9] = IROUND(matrix
[9]);
4637 params
[10] = IROUND(matrix
[10]);
4638 params
[11] = IROUND(matrix
[11]);
4639 params
[12] = IROUND(matrix
[12]);
4640 params
[13] = IROUND(matrix
[13]);
4641 params
[14] = IROUND(matrix
[14]);
4642 params
[15] = IROUND(matrix
[15]);
4645 case GL_PROJECTION_STACK_DEPTH
:
4646 params
[0] = ctx
->ProjectionMatrixStack
.Depth
+ 1;
4648 case GL_READ_BUFFER
:
4649 params
[0] = ENUM_TO_INT(ctx
->ReadBuffer
->ColorReadBuffer
);
4652 params
[0] = IROUND(ctx
->Pixel
.RedBias
);
4655 if (ctx
->NewState
& _NEW_BUFFERS
)
4656 _mesa_update_state(ctx
);
4657 params
[0] = ctx
->DrawBuffer
->Visual
.redBits
;
4660 params
[0] = IROUND(ctx
->Pixel
.RedScale
);
4662 case GL_RENDER_MODE
:
4663 params
[0] = ENUM_TO_INT(ctx
->RenderMode
);
4665 case GL_RESCALE_NORMAL
:
4666 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.RescaleNormals
);
4669 params
[0] = BOOLEAN_TO_INT(GL_TRUE
);
4671 case GL_SCISSOR_BOX
:
4672 params
[0] = ctx
->Scissor
.X
;
4673 params
[1] = ctx
->Scissor
.Y
;
4674 params
[2] = ctx
->Scissor
.Width
;
4675 params
[3] = ctx
->Scissor
.Height
;
4677 case GL_SCISSOR_TEST
:
4678 params
[0] = BOOLEAN_TO_INT(ctx
->Scissor
.Enabled
);
4680 case GL_SELECTION_BUFFER_SIZE
:
4681 params
[0] = ctx
->Select
.BufferSize
;
4683 case GL_SHADE_MODEL
:
4684 params
[0] = ENUM_TO_INT(ctx
->Light
.ShadeModel
);
4686 case GL_SHARED_TEXTURE_PALETTE_EXT
:
4687 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.SharedPalette
);
4689 case GL_STENCIL_BITS
:
4690 params
[0] = ctx
->DrawBuffer
->Visual
.stencilBits
;
4692 case GL_STENCIL_CLEAR_VALUE
:
4693 params
[0] = ctx
->Stencil
.Clear
;
4695 case GL_STENCIL_FAIL
:
4696 params
[0] = ENUM_TO_INT(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
4698 case GL_STENCIL_FUNC
:
4699 params
[0] = ENUM_TO_INT(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
4701 case GL_STENCIL_PASS_DEPTH_FAIL
:
4702 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
4704 case GL_STENCIL_PASS_DEPTH_PASS
:
4705 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
4707 case GL_STENCIL_REF
:
4708 params
[0] = ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
];
4710 case GL_STENCIL_TEST
:
4711 params
[0] = BOOLEAN_TO_INT(ctx
->Stencil
.Enabled
);
4713 case GL_STENCIL_VALUE_MASK
:
4714 params
[0] = ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
];
4716 case GL_STENCIL_WRITEMASK
:
4717 params
[0] = ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
];
4720 params
[0] = BOOLEAN_TO_INT(ctx
->DrawBuffer
->Visual
.stereoMode
);
4722 case GL_SUBPIXEL_BITS
:
4723 params
[0] = ctx
->Const
.SubPixelBits
;
4726 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D
));
4729 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D
));
4732 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D
));
4734 case GL_TEXTURE_1D_ARRAY_EXT
:
4735 CHECK_EXT1(MESA_texture_array
);
4736 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
4738 case GL_TEXTURE_2D_ARRAY_EXT
:
4739 CHECK_EXT1(MESA_texture_array
);
4740 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
4742 case GL_TEXTURE_BINDING_1D
:
4743 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
;
4745 case GL_TEXTURE_BINDING_2D
:
4746 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
;
4748 case GL_TEXTURE_BINDING_3D
:
4749 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
;
4751 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
4752 CHECK_EXT1(MESA_texture_array
);
4753 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
;
4755 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
4756 CHECK_EXT1(MESA_texture_array
);
4757 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
;
4759 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
4760 CHECK_EXT1(MESA_texture_array
);
4761 params
[0] = ctx
->Const
.MaxArrayTextureLayers
;
4763 case GL_TEXTURE_GEN_S
:
4764 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
4766 case GL_TEXTURE_GEN_T
:
4767 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
4769 case GL_TEXTURE_GEN_R
:
4770 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
4772 case GL_TEXTURE_GEN_Q
:
4773 params
[0] = BOOLEAN_TO_INT(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
4775 case GL_TEXTURE_MATRIX
:
4777 const GLfloat
*matrix
;
4778 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4779 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4780 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
4784 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
4785 params
[0] = IROUND(matrix
[0]);
4786 params
[1] = IROUND(matrix
[1]);
4787 params
[2] = IROUND(matrix
[2]);
4788 params
[3] = IROUND(matrix
[3]);
4789 params
[4] = IROUND(matrix
[4]);
4790 params
[5] = IROUND(matrix
[5]);
4791 params
[6] = IROUND(matrix
[6]);
4792 params
[7] = IROUND(matrix
[7]);
4793 params
[8] = IROUND(matrix
[8]);
4794 params
[9] = IROUND(matrix
[9]);
4795 params
[10] = IROUND(matrix
[10]);
4796 params
[11] = IROUND(matrix
[11]);
4797 params
[12] = IROUND(matrix
[12]);
4798 params
[13] = IROUND(matrix
[13]);
4799 params
[14] = IROUND(matrix
[14]);
4800 params
[15] = IROUND(matrix
[15]);
4803 case GL_TEXTURE_STACK_DEPTH
:
4805 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
4806 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
4807 _mesa_error(ctx
, GL_INVALID_OPERATION
,
4808 "glGet(texture stack depth, unit %u)", unit
);
4811 params
[0] = ctx
->TextureMatrixStack
[unit
].Depth
+ 1;
4814 case GL_UNPACK_ALIGNMENT
:
4815 params
[0] = ctx
->Unpack
.Alignment
;
4817 case GL_UNPACK_LSB_FIRST
:
4818 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.LsbFirst
);
4820 case GL_UNPACK_ROW_LENGTH
:
4821 params
[0] = ctx
->Unpack
.RowLength
;
4823 case GL_UNPACK_SKIP_PIXELS
:
4824 params
[0] = ctx
->Unpack
.SkipPixels
;
4826 case GL_UNPACK_SKIP_ROWS
:
4827 params
[0] = ctx
->Unpack
.SkipRows
;
4829 case GL_UNPACK_SWAP_BYTES
:
4830 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.SwapBytes
);
4832 case GL_UNPACK_SKIP_IMAGES_EXT
:
4833 params
[0] = ctx
->Unpack
.SkipImages
;
4835 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
4836 params
[0] = ctx
->Unpack
.ImageHeight
;
4838 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
4839 params
[0] = BOOLEAN_TO_INT(ctx
->Unpack
.ClientStorage
);
4842 params
[0] = ctx
->Viewport
.X
;
4843 params
[1] = ctx
->Viewport
.Y
;
4844 params
[2] = ctx
->Viewport
.Width
;
4845 params
[3] = ctx
->Viewport
.Height
;
4848 params
[0] = IROUND(ctx
->Pixel
.ZoomX
);
4851 params
[0] = IROUND(ctx
->Pixel
.ZoomY
);
4853 case GL_VERTEX_ARRAY
:
4854 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
4856 case GL_VERTEX_ARRAY_SIZE
:
4857 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Size
;
4859 case GL_VERTEX_ARRAY_TYPE
:
4860 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Vertex
.Type
);
4862 case GL_VERTEX_ARRAY_STRIDE
:
4863 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.Stride
;
4865 case GL_VERTEX_ARRAY_COUNT_EXT
:
4868 case GL_NORMAL_ARRAY
:
4869 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
4871 case GL_NORMAL_ARRAY_TYPE
:
4872 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Normal
.Type
);
4874 case GL_NORMAL_ARRAY_STRIDE
:
4875 params
[0] = ctx
->Array
.ArrayObj
->Normal
.Stride
;
4877 case GL_NORMAL_ARRAY_COUNT_EXT
:
4880 case GL_COLOR_ARRAY
:
4881 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Color
.Enabled
);
4883 case GL_COLOR_ARRAY_SIZE
:
4884 params
[0] = ctx
->Array
.ArrayObj
->Color
.Size
;
4886 case GL_COLOR_ARRAY_TYPE
:
4887 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Color
.Type
);
4889 case GL_COLOR_ARRAY_STRIDE
:
4890 params
[0] = ctx
->Array
.ArrayObj
->Color
.Stride
;
4892 case GL_COLOR_ARRAY_COUNT_EXT
:
4895 case GL_INDEX_ARRAY
:
4896 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->Index
.Enabled
);
4898 case GL_INDEX_ARRAY_TYPE
:
4899 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->Index
.Type
);
4901 case GL_INDEX_ARRAY_STRIDE
:
4902 params
[0] = ctx
->Array
.ArrayObj
->Index
.Stride
;
4904 case GL_INDEX_ARRAY_COUNT_EXT
:
4907 case GL_TEXTURE_COORD_ARRAY
:
4908 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
4910 case GL_TEXTURE_COORD_ARRAY_SIZE
:
4911 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
;
4913 case GL_TEXTURE_COORD_ARRAY_TYPE
:
4914 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
4916 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
4917 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
;
4919 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
4922 case GL_EDGE_FLAG_ARRAY
:
4923 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
4925 case GL_EDGE_FLAG_ARRAY_STRIDE
:
4926 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
;
4928 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
4931 case GL_MAX_TEXTURE_UNITS_ARB
:
4932 CHECK_EXT1(ARB_multitexture
);
4933 params
[0] = ctx
->Const
.MaxTextureUnits
;
4935 case GL_ACTIVE_TEXTURE_ARB
:
4936 CHECK_EXT1(ARB_multitexture
);
4937 params
[0] = GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
;
4939 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
4940 CHECK_EXT1(ARB_multitexture
);
4941 params
[0] = GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
;
4943 case GL_TEXTURE_CUBE_MAP_ARB
:
4944 CHECK_EXT1(ARB_texture_cube_map
);
4945 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
4947 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
4948 CHECK_EXT1(ARB_texture_cube_map
);
4949 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
;
4951 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
4952 CHECK_EXT1(ARB_texture_cube_map
);
4953 params
[0] = (1 << (ctx
->Const
.MaxCubeTextureLevels
- 1));
4955 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
4956 params
[0] = ctx
->Hint
.TextureCompression
;
4958 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
4959 params
[0] = _mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
);
4961 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
4964 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
4966 for (i
= 0; i
< n
; i
++)
4967 params
[i
] = ENUM_TO_INT(formats
[i
]);
4970 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
4971 CHECK_EXT1(EXT_compiled_vertex_array
);
4972 params
[0] = ctx
->Array
.LockFirst
;
4974 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
4975 CHECK_EXT1(EXT_compiled_vertex_array
);
4976 params
[0] = ctx
->Array
.LockCount
;
4978 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
4980 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
4981 params
[0] = IROUND(matrix
[0]);
4982 params
[1] = IROUND(matrix
[4]);
4983 params
[2] = IROUND(matrix
[8]);
4984 params
[3] = IROUND(matrix
[12]);
4985 params
[4] = IROUND(matrix
[1]);
4986 params
[5] = IROUND(matrix
[5]);
4987 params
[6] = IROUND(matrix
[9]);
4988 params
[7] = IROUND(matrix
[13]);
4989 params
[8] = IROUND(matrix
[2]);
4990 params
[9] = IROUND(matrix
[6]);
4991 params
[10] = IROUND(matrix
[10]);
4992 params
[11] = IROUND(matrix
[14]);
4993 params
[12] = IROUND(matrix
[3]);
4994 params
[13] = IROUND(matrix
[7]);
4995 params
[14] = IROUND(matrix
[11]);
4996 params
[15] = IROUND(matrix
[15]);
4999 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
5001 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
5002 params
[0] = IROUND(matrix
[0]);
5003 params
[1] = IROUND(matrix
[4]);
5004 params
[2] = IROUND(matrix
[8]);
5005 params
[3] = IROUND(matrix
[12]);
5006 params
[4] = IROUND(matrix
[1]);
5007 params
[5] = IROUND(matrix
[5]);
5008 params
[6] = IROUND(matrix
[9]);
5009 params
[7] = IROUND(matrix
[13]);
5010 params
[8] = IROUND(matrix
[2]);
5011 params
[9] = IROUND(matrix
[6]);
5012 params
[10] = IROUND(matrix
[10]);
5013 params
[11] = IROUND(matrix
[14]);
5014 params
[12] = IROUND(matrix
[3]);
5015 params
[13] = IROUND(matrix
[7]);
5016 params
[14] = IROUND(matrix
[11]);
5017 params
[15] = IROUND(matrix
[15]);
5020 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
5022 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
5023 params
[0] = IROUND(matrix
[0]);
5024 params
[1] = IROUND(matrix
[4]);
5025 params
[2] = IROUND(matrix
[8]);
5026 params
[3] = IROUND(matrix
[12]);
5027 params
[4] = IROUND(matrix
[1]);
5028 params
[5] = IROUND(matrix
[5]);
5029 params
[6] = IROUND(matrix
[9]);
5030 params
[7] = IROUND(matrix
[13]);
5031 params
[8] = IROUND(matrix
[2]);
5032 params
[9] = IROUND(matrix
[6]);
5033 params
[10] = IROUND(matrix
[10]);
5034 params
[11] = IROUND(matrix
[14]);
5035 params
[12] = IROUND(matrix
[3]);
5036 params
[13] = IROUND(matrix
[7]);
5037 params
[14] = IROUND(matrix
[11]);
5038 params
[15] = IROUND(matrix
[15]);
5041 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
5043 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
5044 params
[0] = IROUND(matrix
[0]);
5045 params
[1] = IROUND(matrix
[4]);
5046 params
[2] = IROUND(matrix
[8]);
5047 params
[3] = IROUND(matrix
[12]);
5048 params
[4] = IROUND(matrix
[1]);
5049 params
[5] = IROUND(matrix
[5]);
5050 params
[6] = IROUND(matrix
[9]);
5051 params
[7] = IROUND(matrix
[13]);
5052 params
[8] = IROUND(matrix
[2]);
5053 params
[9] = IROUND(matrix
[6]);
5054 params
[10] = IROUND(matrix
[10]);
5055 params
[11] = IROUND(matrix
[14]);
5056 params
[12] = IROUND(matrix
[3]);
5057 params
[13] = IROUND(matrix
[7]);
5058 params
[14] = IROUND(matrix
[11]);
5059 params
[15] = IROUND(matrix
[15]);
5062 case GL_COLOR_MATRIX_SGI
:
5064 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
5065 params
[0] = IROUND(matrix
[0]);
5066 params
[1] = IROUND(matrix
[1]);
5067 params
[2] = IROUND(matrix
[2]);
5068 params
[3] = IROUND(matrix
[3]);
5069 params
[4] = IROUND(matrix
[4]);
5070 params
[5] = IROUND(matrix
[5]);
5071 params
[6] = IROUND(matrix
[6]);
5072 params
[7] = IROUND(matrix
[7]);
5073 params
[8] = IROUND(matrix
[8]);
5074 params
[9] = IROUND(matrix
[9]);
5075 params
[10] = IROUND(matrix
[10]);
5076 params
[11] = IROUND(matrix
[11]);
5077 params
[12] = IROUND(matrix
[12]);
5078 params
[13] = IROUND(matrix
[13]);
5079 params
[14] = IROUND(matrix
[14]);
5080 params
[15] = IROUND(matrix
[15]);
5083 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
5084 params
[0] = ctx
->ColorMatrixStack
.Depth
+ 1;
5086 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
5087 params
[0] = MAX_COLOR_STACK_DEPTH
;
5089 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
5090 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[0]);
5092 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
5093 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[1]);
5095 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
5096 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[2]);
5098 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
5099 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixScale
[3]);
5101 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
5102 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[0]);
5104 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
5105 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[1]);
5107 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
5108 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[2]);
5110 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
5111 params
[0] = IROUND(ctx
->Pixel
.PostColorMatrixBias
[3]);
5113 case GL_CONVOLUTION_1D_EXT
:
5114 CHECK_EXT1(EXT_convolution
);
5115 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Convolution1DEnabled
);
5117 case GL_CONVOLUTION_2D_EXT
:
5118 CHECK_EXT1(EXT_convolution
);
5119 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Convolution2DEnabled
);
5121 case GL_SEPARABLE_2D_EXT
:
5122 CHECK_EXT1(EXT_convolution
);
5123 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.Separable2DEnabled
);
5125 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
5126 CHECK_EXT1(EXT_convolution
);
5127 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[0]);
5129 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
5130 CHECK_EXT1(EXT_convolution
);
5131 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[1]);
5133 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
5134 CHECK_EXT1(EXT_convolution
);
5135 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[2]);
5137 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
5138 CHECK_EXT1(EXT_convolution
);
5139 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionScale
[3]);
5141 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
5142 CHECK_EXT1(EXT_convolution
);
5143 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[0]);
5145 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
5146 CHECK_EXT1(EXT_convolution
);
5147 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[1]);
5149 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
5150 CHECK_EXT1(EXT_convolution
);
5151 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[2]);
5153 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
5154 CHECK_EXT1(EXT_convolution
);
5155 params
[0] = IROUND(ctx
->Pixel
.PostConvolutionBias
[3]);
5158 CHECK_EXT1(EXT_histogram
);
5159 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.HistogramEnabled
);
5162 CHECK_EXT1(EXT_histogram
);
5163 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.MinMaxEnabled
);
5165 case GL_COLOR_TABLE_SGI
:
5166 CHECK_EXT1(SGI_color_table
);
5167 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
5169 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
5170 CHECK_EXT1(SGI_color_table
);
5171 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
5173 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
5174 CHECK_EXT1(SGI_color_table
);
5175 params
[0] = BOOLEAN_TO_INT(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
5177 case GL_TEXTURE_COLOR_TABLE_SGI
:
5178 CHECK_EXT1(SGI_texture_color_table
);
5179 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
5181 case GL_COLOR_SUM_EXT
:
5182 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
5183 params
[0] = BOOLEAN_TO_INT(ctx
->Fog
.ColorSumEnabled
);
5185 case GL_CURRENT_SECONDARY_COLOR_EXT
:
5186 CHECK_EXT1(EXT_secondary_color
);
5187 FLUSH_CURRENT(ctx
, 0);
5188 params
[0] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
5189 params
[1] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
5190 params
[2] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
5191 params
[3] = FLOAT_TO_INT(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
5193 case GL_SECONDARY_COLOR_ARRAY_EXT
:
5194 CHECK_EXT1(EXT_secondary_color
);
5195 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
5197 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
5198 CHECK_EXT1(EXT_secondary_color
);
5199 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
5201 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
5202 CHECK_EXT1(EXT_secondary_color
);
5203 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
;
5205 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
5206 CHECK_EXT1(EXT_secondary_color
);
5207 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.Size
;
5209 case GL_CURRENT_FOG_COORDINATE_EXT
:
5210 CHECK_EXT1(EXT_fog_coord
);
5211 FLUSH_CURRENT(ctx
, 0);
5212 params
[0] = IROUND(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
5214 case GL_FOG_COORDINATE_ARRAY_EXT
:
5215 CHECK_EXT1(EXT_fog_coord
);
5216 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
5218 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
5219 CHECK_EXT1(EXT_fog_coord
);
5220 params
[0] = ENUM_TO_INT(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
5222 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
5223 CHECK_EXT1(EXT_fog_coord
);
5224 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.Stride
;
5226 case GL_FOG_COORDINATE_SOURCE_EXT
:
5227 CHECK_EXT1(EXT_fog_coord
);
5228 params
[0] = ENUM_TO_INT(ctx
->Fog
.FogCoordinateSource
);
5230 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
5231 CHECK_EXT1(EXT_texture_lod_bias
);
5232 params
[0] = IROUND(ctx
->Const
.MaxTextureLodBias
);
5234 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
5235 CHECK_EXT1(EXT_texture_filter_anisotropic
);
5236 params
[0] = IROUND(ctx
->Const
.MaxTextureMaxAnisotropy
);
5238 case GL_MULTISAMPLE_ARB
:
5239 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.Enabled
);
5241 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
5242 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleAlphaToCoverage
);
5244 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
5245 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleAlphaToOne
);
5247 case GL_SAMPLE_COVERAGE_ARB
:
5248 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleCoverage
);
5250 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
5251 params
[0] = IROUND(ctx
->Multisample
.SampleCoverageValue
);
5253 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
5254 params
[0] = BOOLEAN_TO_INT(ctx
->Multisample
.SampleCoverageInvert
);
5256 case GL_SAMPLE_BUFFERS_ARB
:
5257 params
[0] = ctx
->DrawBuffer
->Visual
.sampleBuffers
;
5259 case GL_SAMPLES_ARB
:
5260 params
[0] = ctx
->DrawBuffer
->Visual
.samples
;
5262 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
5263 CHECK_EXT1(IBM_rasterpos_clip
);
5264 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.RasterPositionUnclipped
);
5266 case GL_POINT_SPRITE_NV
:
5267 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
5268 params
[0] = BOOLEAN_TO_INT(ctx
->Point
.PointSprite
);
5270 case GL_POINT_SPRITE_R_MODE_NV
:
5271 CHECK_EXT1(NV_point_sprite
);
5272 params
[0] = ENUM_TO_INT(ctx
->Point
.SpriteRMode
);
5274 case GL_POINT_SPRITE_COORD_ORIGIN
:
5275 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
5276 params
[0] = ENUM_TO_INT(ctx
->Point
.SpriteOrigin
);
5278 case GL_GENERATE_MIPMAP_HINT_SGIS
:
5279 CHECK_EXT1(SGIS_generate_mipmap
);
5280 params
[0] = ENUM_TO_INT(ctx
->Hint
.GenerateMipmap
);
5282 case GL_VERTEX_PROGRAM_BINDING_NV
:
5283 CHECK_EXT1(NV_vertex_program
);
5284 params
[0] = (ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0);
5286 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
5287 CHECK_EXT1(NV_vertex_program
);
5288 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
5290 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
5291 CHECK_EXT1(NV_vertex_program
);
5292 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
5294 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
5295 CHECK_EXT1(NV_vertex_program
);
5296 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
5298 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
5299 CHECK_EXT1(NV_vertex_program
);
5300 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
5302 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
5303 CHECK_EXT1(NV_vertex_program
);
5304 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
5306 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
5307 CHECK_EXT1(NV_vertex_program
);
5308 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
5310 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
5311 CHECK_EXT1(NV_vertex_program
);
5312 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
5314 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
5315 CHECK_EXT1(NV_vertex_program
);
5316 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
5318 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
5319 CHECK_EXT1(NV_vertex_program
);
5320 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
5322 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
5323 CHECK_EXT1(NV_vertex_program
);
5324 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
5326 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
5327 CHECK_EXT1(NV_vertex_program
);
5328 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
5330 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
5331 CHECK_EXT1(NV_vertex_program
);
5332 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
5334 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
5335 CHECK_EXT1(NV_vertex_program
);
5336 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
5338 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
5339 CHECK_EXT1(NV_vertex_program
);
5340 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
5342 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
5343 CHECK_EXT1(NV_vertex_program
);
5344 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
5346 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
5347 CHECK_EXT1(NV_vertex_program
);
5348 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
5350 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
5351 CHECK_EXT1(NV_vertex_program
);
5352 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[0]);
5354 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
5355 CHECK_EXT1(NV_vertex_program
);
5356 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[1]);
5358 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
5359 CHECK_EXT1(NV_vertex_program
);
5360 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[2]);
5362 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
5363 CHECK_EXT1(NV_vertex_program
);
5364 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[3]);
5366 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
5367 CHECK_EXT1(NV_vertex_program
);
5368 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[4]);
5370 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
5371 CHECK_EXT1(NV_vertex_program
);
5372 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[5]);
5374 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
5375 CHECK_EXT1(NV_vertex_program
);
5376 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[6]);
5378 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
5379 CHECK_EXT1(NV_vertex_program
);
5380 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[7]);
5382 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
5383 CHECK_EXT1(NV_vertex_program
);
5384 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[8]);
5386 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
5387 CHECK_EXT1(NV_vertex_program
);
5388 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[9]);
5390 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
5391 CHECK_EXT1(NV_vertex_program
);
5392 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[10]);
5394 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
5395 CHECK_EXT1(NV_vertex_program
);
5396 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[11]);
5398 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
5399 CHECK_EXT1(NV_vertex_program
);
5400 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[12]);
5402 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
5403 CHECK_EXT1(NV_vertex_program
);
5404 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[13]);
5406 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
5407 CHECK_EXT1(NV_vertex_program
);
5408 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[14]);
5410 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
5411 CHECK_EXT1(NV_vertex_program
);
5412 params
[0] = BOOLEAN_TO_INT(ctx
->Eval
.Map1Attrib
[15]);
5414 case GL_FRAGMENT_PROGRAM_NV
:
5415 CHECK_EXT1(NV_fragment_program
);
5416 params
[0] = BOOLEAN_TO_INT(ctx
->FragmentProgram
.Enabled
);
5418 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
5419 CHECK_EXT1(NV_fragment_program
);
5420 params
[0] = ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0;
5422 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
5423 CHECK_EXT1(NV_fragment_program
);
5424 params
[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS
;
5426 case GL_TEXTURE_RECTANGLE_NV
:
5427 CHECK_EXT1(NV_texture_rectangle
);
5428 params
[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
5430 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
5431 CHECK_EXT1(NV_texture_rectangle
);
5432 params
[0] = ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
;
5434 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
5435 CHECK_EXT1(NV_texture_rectangle
);
5436 params
[0] = ctx
->Const
.MaxTextureRectSize
;
5438 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
5439 CHECK_EXT1(EXT_stencil_two_side
);
5440 params
[0] = BOOLEAN_TO_INT(ctx
->Stencil
.TestTwoSide
);
5442 case GL_ACTIVE_STENCIL_FACE_EXT
:
5443 CHECK_EXT1(EXT_stencil_two_side
);
5444 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
5446 case GL_MAX_SHININESS_NV
:
5447 CHECK_EXT1(NV_light_max_exponent
);
5448 params
[0] = IROUND(ctx
->Const
.MaxShininess
);
5450 case GL_MAX_SPOT_EXPONENT_NV
:
5451 CHECK_EXT1(NV_light_max_exponent
);
5452 params
[0] = IROUND(ctx
->Const
.MaxSpotExponent
);
5454 case GL_ARRAY_BUFFER_BINDING_ARB
:
5455 params
[0] = ctx
->Array
.ArrayBufferObj
->Name
;
5457 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
5458 params
[0] = ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
;
5460 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
5461 params
[0] = ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
;
5463 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
5464 params
[0] = ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
;
5466 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
5467 params
[0] = ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
;
5469 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
5470 params
[0] = ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
;
5472 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
5473 params
[0] = ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
;
5475 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
5476 params
[0] = ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
;
5478 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
5479 params
[0] = ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
;
5481 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
5482 params
[0] = ctx
->Array
.ElementArrayBufferObj
->Name
;
5484 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
5485 CHECK_EXT1(EXT_pixel_buffer_object
);
5486 params
[0] = ctx
->Pack
.BufferObj
->Name
;
5488 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
5489 CHECK_EXT1(EXT_pixel_buffer_object
);
5490 params
[0] = ctx
->Unpack
.BufferObj
->Name
;
5492 case GL_VERTEX_PROGRAM_ARB
:
5493 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5494 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.Enabled
);
5496 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
5497 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5498 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.PointSizeEnabled
);
5500 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
5501 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
5502 params
[0] = BOOLEAN_TO_INT(ctx
->VertexProgram
.TwoSideEnabled
);
5504 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
5505 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5506 params
[0] = ctx
->Const
.MaxProgramMatrixStackDepth
;
5508 case GL_MAX_PROGRAM_MATRICES_ARB
:
5509 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5510 params
[0] = ctx
->Const
.MaxProgramMatrices
;
5512 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
5513 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
5514 params
[0] = BOOLEAN_TO_INT(ctx
->CurrentStack
->Depth
+ 1);
5516 case GL_CURRENT_MATRIX_ARB
:
5517 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
5519 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
5520 params
[0] = IROUND(matrix
[0]);
5521 params
[1] = IROUND(matrix
[1]);
5522 params
[2] = IROUND(matrix
[2]);
5523 params
[3] = IROUND(matrix
[3]);
5524 params
[4] = IROUND(matrix
[4]);
5525 params
[5] = IROUND(matrix
[5]);
5526 params
[6] = IROUND(matrix
[6]);
5527 params
[7] = IROUND(matrix
[7]);
5528 params
[8] = IROUND(matrix
[8]);
5529 params
[9] = IROUND(matrix
[9]);
5530 params
[10] = IROUND(matrix
[10]);
5531 params
[11] = IROUND(matrix
[11]);
5532 params
[12] = IROUND(matrix
[12]);
5533 params
[13] = IROUND(matrix
[13]);
5534 params
[14] = IROUND(matrix
[14]);
5535 params
[15] = IROUND(matrix
[15]);
5538 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
5539 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
5541 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
5542 params
[0] = IROUND(matrix
[0]);
5543 params
[1] = IROUND(matrix
[4]);
5544 params
[2] = IROUND(matrix
[8]);
5545 params
[3] = IROUND(matrix
[12]);
5546 params
[4] = IROUND(matrix
[1]);
5547 params
[5] = IROUND(matrix
[5]);
5548 params
[6] = IROUND(matrix
[9]);
5549 params
[7] = IROUND(matrix
[13]);
5550 params
[8] = IROUND(matrix
[2]);
5551 params
[9] = IROUND(matrix
[6]);
5552 params
[10] = IROUND(matrix
[10]);
5553 params
[11] = IROUND(matrix
[14]);
5554 params
[12] = IROUND(matrix
[3]);
5555 params
[13] = IROUND(matrix
[7]);
5556 params
[14] = IROUND(matrix
[11]);
5557 params
[15] = IROUND(matrix
[15]);
5560 case GL_MAX_VERTEX_ATTRIBS_ARB
:
5561 CHECK_EXT1(ARB_vertex_program
);
5562 params
[0] = ctx
->Const
.VertexProgram
.MaxAttribs
;
5564 case GL_PROGRAM_ERROR_POSITION_ARB
:
5565 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
5566 params
[0] = ctx
->Program
.ErrorPos
;
5568 case GL_FRAGMENT_PROGRAM_ARB
:
5569 CHECK_EXT1(ARB_fragment_program
);
5570 params
[0] = BOOLEAN_TO_INT(ctx
->FragmentProgram
.Enabled
);
5572 case GL_MAX_TEXTURE_COORDS_ARB
:
5573 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
5574 params
[0] = ctx
->Const
.MaxTextureCoordUnits
;
5576 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
5577 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
5578 params
[0] = ctx
->Const
.MaxTextureImageUnits
;
5580 case GL_DEPTH_BOUNDS_TEST_EXT
:
5581 CHECK_EXT1(EXT_depth_bounds_test
);
5582 params
[0] = BOOLEAN_TO_INT(ctx
->Depth
.BoundsTest
);
5584 case GL_DEPTH_BOUNDS_EXT
:
5585 CHECK_EXT1(EXT_depth_bounds_test
);
5586 params
[0] = IROUND(ctx
->Depth
.BoundsMin
);
5587 params
[1] = IROUND(ctx
->Depth
.BoundsMax
);
5589 case GL_DEPTH_CLAMP
:
5590 CHECK_EXT1(ARB_depth_clamp
);
5591 params
[0] = BOOLEAN_TO_INT(ctx
->Transform
.DepthClamp
);
5593 case GL_MAX_DRAW_BUFFERS_ARB
:
5594 params
[0] = ctx
->Const
.MaxDrawBuffers
;
5596 case GL_DRAW_BUFFER0_ARB
:
5597 params
[0] = ENUM_TO_INT(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
5599 case GL_DRAW_BUFFER1_ARB
:
5602 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5603 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5606 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
5607 params
[0] = ENUM_TO_INT(buffer
);
5610 case GL_DRAW_BUFFER2_ARB
:
5613 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5614 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5617 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
5618 params
[0] = ENUM_TO_INT(buffer
);
5621 case GL_DRAW_BUFFER3_ARB
:
5624 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
5625 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
5628 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
5629 params
[0] = ENUM_TO_INT(buffer
);
5632 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
5633 CHECK_EXT1(OES_read_format
);
5634 if (ctx
->NewState
& _NEW_BUFFERS
)
5635 _mesa_update_state(ctx
);
5636 params
[0] = _mesa_get_color_read_type(ctx
);
5638 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
5639 CHECK_EXT1(OES_read_format
);
5640 if (ctx
->NewState
& _NEW_BUFFERS
)
5641 _mesa_update_state(ctx
);
5642 params
[0] = _mesa_get_color_read_format(ctx
);
5644 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
5645 CHECK_EXT1(ATI_fragment_shader
);
5648 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
5649 CHECK_EXT1(ATI_fragment_shader
);
5652 case GL_NUM_PASSES_ATI
:
5653 CHECK_EXT1(ATI_fragment_shader
);
5656 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
5657 CHECK_EXT1(ATI_fragment_shader
);
5660 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
5661 CHECK_EXT1(ATI_fragment_shader
);
5664 case GL_COLOR_ALPHA_PAIRING_ATI
:
5665 CHECK_EXT1(ATI_fragment_shader
);
5666 params
[0] = BOOLEAN_TO_INT(GL_TRUE
);
5668 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
5669 CHECK_EXT1(ATI_fragment_shader
);
5672 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
5673 CHECK_EXT1(ATI_fragment_shader
);
5676 case GL_STENCIL_BACK_FUNC
:
5677 params
[0] = ENUM_TO_INT(ctx
->Stencil
.Function
[1]);
5679 case GL_STENCIL_BACK_VALUE_MASK
:
5680 params
[0] = ctx
->Stencil
.ValueMask
[1];
5682 case GL_STENCIL_BACK_WRITEMASK
:
5683 params
[0] = ctx
->Stencil
.WriteMask
[1];
5685 case GL_STENCIL_BACK_REF
:
5686 params
[0] = ctx
->Stencil
.Ref
[1];
5688 case GL_STENCIL_BACK_FAIL
:
5689 params
[0] = ENUM_TO_INT(ctx
->Stencil
.FailFunc
[1]);
5691 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
5692 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZFailFunc
[1]);
5694 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
5695 params
[0] = ENUM_TO_INT(ctx
->Stencil
.ZPassFunc
[1]);
5697 case GL_FRAMEBUFFER_BINDING_EXT
:
5698 CHECK_EXT1(EXT_framebuffer_object
);
5699 params
[0] = ctx
->DrawBuffer
->Name
;
5701 case GL_RENDERBUFFER_BINDING_EXT
:
5702 CHECK_EXT1(EXT_framebuffer_object
);
5703 params
[0] = ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0;
5705 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
5706 CHECK_EXT1(EXT_framebuffer_object
);
5707 params
[0] = ctx
->Const
.MaxColorAttachments
;
5709 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
5710 CHECK_EXT1(EXT_framebuffer_object
);
5711 params
[0] = ctx
->Const
.MaxRenderbufferSize
;
5713 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
5714 CHECK_EXT1(EXT_framebuffer_blit
);
5715 params
[0] = ctx
->ReadBuffer
->Name
;
5717 case GL_PROVOKING_VERTEX_EXT
:
5718 CHECK_EXT1(EXT_provoking_vertex
);
5719 params
[0] = BOOLEAN_TO_INT(ctx
->Light
.ProvokingVertex
);
5721 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
5722 CHECK_EXT1(EXT_provoking_vertex
);
5723 params
[0] = BOOLEAN_TO_INT(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
5725 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
5726 CHECK_EXT1(ARB_fragment_shader
);
5727 params
[0] = ctx
->Const
.FragmentProgram
.MaxUniformComponents
;
5729 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
5730 CHECK_EXT1(ARB_fragment_shader
);
5731 params
[0] = ENUM_TO_INT(ctx
->Hint
.FragmentShaderDerivative
);
5733 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
5734 CHECK_EXT1(ARB_vertex_shader
);
5735 params
[0] = ctx
->Const
.VertexProgram
.MaxUniformComponents
;
5737 case GL_MAX_VARYING_FLOATS_ARB
:
5738 CHECK_EXT1(ARB_vertex_shader
);
5739 params
[0] = ctx
->Const
.MaxVarying
* 4;
5741 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
5742 CHECK_EXT1(ARB_vertex_shader
);
5743 params
[0] = ctx
->Const
.MaxVertexTextureImageUnits
;
5745 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
5746 CHECK_EXT1(ARB_vertex_shader
);
5747 params
[0] = ctx
->Const
.MaxCombinedTextureImageUnits
;
5749 case GL_CURRENT_PROGRAM
:
5750 CHECK_EXT1(ARB_shader_objects
);
5751 params
[0] = ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0;
5753 case GL_MAX_SAMPLES
:
5754 CHECK_EXT1(ARB_framebuffer_object
);
5755 params
[0] = ctx
->Const
.MaxSamples
;
5757 case GL_VERTEX_ARRAY_BINDING_APPLE
:
5758 CHECK_EXT1(APPLE_vertex_array_object
);
5759 params
[0] = ctx
->Array
.ArrayObj
->Name
;
5761 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
5762 CHECK_EXT1(ARB_seamless_cube_map
);
5763 params
[0] = BOOLEAN_TO_INT(ctx
->Texture
.CubeMapSeamless
);
5765 case GL_MAX_SERVER_WAIT_TIMEOUT
:
5766 CHECK_EXT1(ARB_sync
);
5767 params
[0] = INT64_TO_INT(ctx
->Const
.MaxServerWaitTimeout
);
5769 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
5770 CHECK_EXT1(EXT_transform_feedback
);
5771 params
[0] = ctx
->TransformFeedback
.CurrentBuffer
->Name
;
5773 case GL_RASTERIZER_DISCARD
:
5774 CHECK_EXT1(EXT_transform_feedback
);
5775 params
[0] = BOOLEAN_TO_INT(ctx
->TransformFeedback
.RasterDiscard
);
5777 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
5778 CHECK_EXT1(EXT_transform_feedback
);
5779 params
[0] = ctx
->Const
.MaxTransformFeedbackInterleavedComponents
;
5781 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
5782 CHECK_EXT1(EXT_transform_feedback
);
5783 params
[0] = ctx
->Const
.MaxTransformFeedbackSeparateAttribs
;
5785 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
5786 CHECK_EXT1(EXT_transform_feedback
);
5787 params
[0] = ctx
->Const
.MaxTransformFeedbackSeparateComponents
;
5789 case GL_NUM_EXTENSIONS
:
5791 params
[0] = _mesa_get_extension_count(ctx
);
5793 case GL_MAJOR_VERSION
:
5795 params
[0] = ctx
->VersionMajor
;
5797 case GL_MINOR_VERSION
:
5799 params
[0] = ctx
->VersionMinor
;
5801 case GL_CONTEXT_FLAGS
:
5803 params
[0] = ctx
->Const
.ContextFlags
;
5805 case GL_PRIMITIVE_RESTART
:
5807 params
[0] = BOOLEAN_TO_INT(ctx
->Array
.PrimitiveRestart
);
5809 case GL_PRIMITIVE_RESTART_INDEX
:
5811 params
[0] = ctx
->Array
.RestartIndex
;
5813 case GL_CONTEXT_PROFILE_MASK
:
5815 params
[0] = ctx
->Const
.ProfileMask
;
5818 goto invalid_enum_error
;
5823 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerv(pname=0x%x)", pname
);
5826 #if FEATURE_ARB_sync
5828 _mesa_GetInteger64v( GLenum pname
, GLint64
*params
)
5830 GET_CURRENT_CONTEXT(ctx
);
5831 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
5832 ASSERT_OUTSIDE_BEGIN_END(ctx
);
5838 if (ctx
->Driver
.GetInteger64v
&&
5839 ctx
->Driver
.GetInteger64v(ctx
, pname
, params
))
5843 case GL_ACCUM_RED_BITS
:
5844 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumRedBits
);
5846 case GL_ACCUM_GREEN_BITS
:
5847 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumGreenBits
);
5849 case GL_ACCUM_BLUE_BITS
:
5850 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumBlueBits
);
5852 case GL_ACCUM_ALPHA_BITS
:
5853 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.accumAlphaBits
);
5855 case GL_ACCUM_CLEAR_VALUE
:
5856 params
[0] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[0]);
5857 params
[1] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[1]);
5858 params
[2] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[2]);
5859 params
[3] = FLOAT_TO_INT64(ctx
->Accum
.ClearColor
[3]);
5862 params
[0] = IROUND64(ctx
->Pixel
.AlphaBias
);
5865 if (ctx
->NewState
& _NEW_BUFFERS
)
5866 _mesa_update_state(ctx
);
5867 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.alphaBits
);
5869 case GL_ALPHA_SCALE
:
5870 params
[0] = IROUND64(ctx
->Pixel
.AlphaScale
);
5873 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.AlphaEnabled
);
5875 case GL_ALPHA_TEST_FUNC
:
5876 params
[0] = ENUM_TO_INT64(ctx
->Color
.AlphaFunc
);
5878 case GL_ALPHA_TEST_REF
:
5879 params
[0] = FLOAT_TO_INT64(ctx
->Color
.AlphaRef
);
5881 case GL_ATTRIB_STACK_DEPTH
:
5882 params
[0] = (GLint64
)(ctx
->AttribStackDepth
);
5884 case GL_AUTO_NORMAL
:
5885 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.AutoNormal
);
5887 case GL_AUX_BUFFERS
:
5888 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.numAuxBuffers
);
5891 params
[0] = BOOLEAN_TO_INT64((ctx
->Color
.BlendEnabled
& 1));
5894 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstRGB
);
5897 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcRGB
);
5899 case GL_BLEND_SRC_RGB_EXT
:
5900 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcRGB
);
5902 case GL_BLEND_DST_RGB_EXT
:
5903 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstRGB
);
5905 case GL_BLEND_SRC_ALPHA_EXT
:
5906 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendSrcA
);
5908 case GL_BLEND_DST_ALPHA_EXT
:
5909 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendDstA
);
5911 case GL_BLEND_EQUATION
:
5912 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendEquationRGB
);
5914 case GL_BLEND_EQUATION_ALPHA_EXT
:
5915 params
[0] = ENUM_TO_INT64(ctx
->Color
.BlendEquationA
);
5917 case GL_BLEND_COLOR_EXT
:
5918 params
[0] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[0]);
5919 params
[1] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[1]);
5920 params
[2] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[2]);
5921 params
[3] = FLOAT_TO_INT64(ctx
->Color
.BlendColor
[3]);
5924 params
[0] = IROUND64(ctx
->Pixel
.BlueBias
);
5927 if (ctx
->NewState
& _NEW_BUFFERS
)
5928 _mesa_update_state(ctx
);
5929 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.blueBits
);
5932 params
[0] = IROUND64(ctx
->Pixel
.BlueScale
);
5934 case GL_CLIENT_ATTRIB_STACK_DEPTH
:
5935 params
[0] = (GLint64
)(ctx
->ClientAttribStackDepth
);
5937 case GL_CLIP_PLANE0
:
5938 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 0) & 1);
5940 case GL_CLIP_PLANE1
:
5941 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 1) & 1);
5943 case GL_CLIP_PLANE2
:
5944 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 2) & 1);
5946 case GL_CLIP_PLANE3
:
5947 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 3) & 1);
5949 case GL_CLIP_PLANE4
:
5950 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 4) & 1);
5952 case GL_CLIP_PLANE5
:
5953 params
[0] = BOOLEAN_TO_INT64((ctx
->Transform
.ClipPlanesEnabled
>> 5) & 1);
5955 case GL_COLOR_CLEAR_VALUE
:
5956 params
[0] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[0]);
5957 params
[1] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[1]);
5958 params
[2] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[2]);
5959 params
[3] = FLOAT_TO_INT64(ctx
->Color
.ClearColor
[3]);
5961 case GL_COLOR_MATERIAL
:
5962 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.ColorMaterialEnabled
);
5964 case GL_COLOR_MATERIAL_FACE
:
5965 params
[0] = ENUM_TO_INT64(ctx
->Light
.ColorMaterialFace
);
5967 case GL_COLOR_MATERIAL_PARAMETER
:
5968 params
[0] = ENUM_TO_INT64(ctx
->Light
.ColorMaterialMode
);
5970 case GL_COLOR_WRITEMASK
:
5971 params
[0] = (GLint64
)(ctx
->Color
.ColorMask
[0][RCOMP
] ? 1 : 0);
5972 params
[1] = (GLint64
)(ctx
->Color
.ColorMask
[0][GCOMP
] ? 1 : 0);
5973 params
[2] = (GLint64
)(ctx
->Color
.ColorMask
[0][BCOMP
] ? 1 : 0);
5974 params
[3] = (GLint64
)(ctx
->Color
.ColorMask
[0][ACOMP
] ? 1 : 0);
5977 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.CullFlag
);
5979 case GL_CULL_FACE_MODE
:
5980 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.CullFaceMode
);
5982 case GL_CURRENT_COLOR
:
5983 FLUSH_CURRENT(ctx
, 0);
5984 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][0]);
5985 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][1]);
5986 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][2]);
5987 params
[3] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR0
][3]);
5989 case GL_CURRENT_INDEX
:
5990 FLUSH_CURRENT(ctx
, 0);
5991 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR_INDEX
][0]);
5993 case GL_CURRENT_NORMAL
:
5994 FLUSH_CURRENT(ctx
, 0);
5995 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][0]);
5996 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][1]);
5997 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_NORMAL
][2]);
5999 case GL_CURRENT_RASTER_COLOR
:
6000 params
[0] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[0]);
6001 params
[1] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[1]);
6002 params
[2] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[2]);
6003 params
[3] = FLOAT_TO_INT64(ctx
->Current
.RasterColor
[3]);
6005 case GL_CURRENT_RASTER_DISTANCE
:
6006 params
[0] = IROUND64(ctx
->Current
.RasterDistance
);
6008 case GL_CURRENT_RASTER_INDEX
:
6009 params
[0] = IROUND64(1.0);
6011 case GL_CURRENT_RASTER_POSITION
:
6012 params
[0] = IROUND64(ctx
->Current
.RasterPos
[0]);
6013 params
[1] = IROUND64(ctx
->Current
.RasterPos
[1]);
6014 params
[2] = IROUND64(ctx
->Current
.RasterPos
[2]);
6015 params
[3] = IROUND64(ctx
->Current
.RasterPos
[3]);
6017 case GL_CURRENT_RASTER_SECONDARY_COLOR
:
6018 params
[0] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[0]);
6019 params
[1] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[1]);
6020 params
[2] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[2]);
6021 params
[3] = FLOAT_TO_INT64(ctx
->Current
.RasterSecondaryColor
[3]);
6023 case GL_CURRENT_RASTER_TEXTURE_COORDS
:
6025 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6026 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6027 _mesa_error(ctx
, GL_INVALID_OPERATION
,
6028 "glGet(raster tex coords, unit %u)", unit
);
6031 params
[0] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][0]);
6032 params
[1] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][1]);
6033 params
[2] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][2]);
6034 params
[3] = IROUND64(ctx
->Current
.RasterTexCoords
[unit
][3]);
6037 case GL_CURRENT_RASTER_POSITION_VALID
:
6038 params
[0] = BOOLEAN_TO_INT64(ctx
->Current
.RasterPosValid
);
6040 case GL_CURRENT_TEXTURE_COORDS
:
6042 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6043 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6044 _mesa_error(ctx
, GL_INVALID_OPERATION
,
6045 "glGet(current tex coords, unit %u)", unit
);
6048 FLUSH_CURRENT(ctx
, 0);
6049 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][0]);
6050 params
[1] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][1]);
6051 params
[2] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][2]);
6052 params
[3] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_TEX0
+ unit
][3]);
6056 params
[0] = IROUND64(ctx
->Pixel
.DepthBias
);
6059 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.depthBits
);
6061 case GL_DEPTH_CLEAR_VALUE
:
6062 params
[0] = FLOAT_TO_INT64(((GLfloat
) ctx
->Depth
.Clear
));
6065 params
[0] = ENUM_TO_INT64(ctx
->Depth
.Func
);
6067 case GL_DEPTH_RANGE
:
6068 params
[0] = FLOAT_TO_INT64(ctx
->Viewport
.Near
);
6069 params
[1] = FLOAT_TO_INT64(ctx
->Viewport
.Far
);
6071 case GL_DEPTH_SCALE
:
6072 params
[0] = IROUND64(ctx
->Pixel
.DepthScale
);
6075 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.Test
);
6077 case GL_DEPTH_WRITEMASK
:
6078 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.Mask
);
6081 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.DitherFlag
);
6083 case GL_DOUBLEBUFFER
:
6084 params
[0] = BOOLEAN_TO_INT64(ctx
->DrawBuffer
->Visual
.doubleBufferMode
);
6086 case GL_DRAW_BUFFER
:
6087 params
[0] = ENUM_TO_INT64(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
6090 FLUSH_CURRENT(ctx
, 0);
6091 params
[0] = BOOLEAN_TO_INT64((ctx
->Current
.Attrib
[VERT_ATTRIB_EDGEFLAG
][0] == 1.0));
6093 case GL_FEEDBACK_BUFFER_SIZE
:
6094 params
[0] = (GLint64
)(ctx
->Feedback
.BufferSize
);
6096 case GL_FEEDBACK_BUFFER_TYPE
:
6097 params
[0] = ENUM_TO_INT64(ctx
->Feedback
.Type
);
6100 params
[0] = BOOLEAN_TO_INT64(ctx
->Fog
.Enabled
);
6103 params
[0] = FLOAT_TO_INT64(ctx
->Fog
.Color
[0]);
6104 params
[1] = FLOAT_TO_INT64(ctx
->Fog
.Color
[1]);
6105 params
[2] = FLOAT_TO_INT64(ctx
->Fog
.Color
[2]);
6106 params
[3] = FLOAT_TO_INT64(ctx
->Fog
.Color
[3]);
6108 case GL_FOG_DENSITY
:
6109 params
[0] = IROUND64(ctx
->Fog
.Density
);
6112 params
[0] = IROUND64(ctx
->Fog
.End
);
6115 params
[0] = ENUM_TO_INT64(ctx
->Hint
.Fog
);
6118 params
[0] = IROUND64(ctx
->Fog
.Index
);
6121 params
[0] = ENUM_TO_INT64(ctx
->Fog
.Mode
);
6124 params
[0] = IROUND64(ctx
->Fog
.Start
);
6127 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.FrontFace
);
6130 params
[0] = IROUND64(ctx
->Pixel
.GreenBias
);
6133 if (ctx
->NewState
& _NEW_BUFFERS
)
6134 _mesa_update_state(ctx
);
6135 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.greenBits
);
6137 case GL_GREEN_SCALE
:
6138 params
[0] = IROUND64(ctx
->Pixel
.GreenScale
);
6141 if (ctx
->NewState
& _NEW_BUFFERS
)
6142 _mesa_update_state(ctx
);
6143 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.indexBits
);
6145 case GL_INDEX_CLEAR_VALUE
:
6146 params
[0] = (GLint64
)(ctx
->Color
.ClearIndex
);
6149 params
[0] = BOOLEAN_TO_INT64(GL_FALSE
);
6151 case GL_INDEX_OFFSET
:
6152 params
[0] = (GLint64
)(ctx
->Pixel
.IndexOffset
);
6154 case GL_INDEX_SHIFT
:
6155 params
[0] = (GLint64
)(ctx
->Pixel
.IndexShift
);
6157 case GL_INDEX_WRITEMASK
:
6158 params
[0] = (GLint64
)(ctx
->Color
.IndexMask
);
6161 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[0].Enabled
);
6164 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[1].Enabled
);
6167 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[2].Enabled
);
6170 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[3].Enabled
);
6173 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[4].Enabled
);
6176 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[5].Enabled
);
6179 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[6].Enabled
);
6182 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Light
[7].Enabled
);
6185 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Enabled
);
6187 case GL_LIGHT_MODEL_AMBIENT
:
6188 params
[0] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[0]);
6189 params
[1] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[1]);
6190 params
[2] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[2]);
6191 params
[3] = FLOAT_TO_INT64(ctx
->Light
.Model
.Ambient
[3]);
6193 case GL_LIGHT_MODEL_COLOR_CONTROL
:
6194 params
[0] = ENUM_TO_INT64(ctx
->Light
.Model
.ColorControl
);
6196 case GL_LIGHT_MODEL_LOCAL_VIEWER
:
6197 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Model
.LocalViewer
);
6199 case GL_LIGHT_MODEL_TWO_SIDE
:
6200 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.Model
.TwoSide
);
6202 case GL_LINE_SMOOTH
:
6203 params
[0] = BOOLEAN_TO_INT64(ctx
->Line
.SmoothFlag
);
6205 case GL_LINE_SMOOTH_HINT
:
6206 params
[0] = ENUM_TO_INT64(ctx
->Hint
.LineSmooth
);
6208 case GL_LINE_STIPPLE
:
6209 params
[0] = BOOLEAN_TO_INT64(ctx
->Line
.StippleFlag
);
6211 case GL_LINE_STIPPLE_PATTERN
:
6212 params
[0] = (GLint64
)(ctx
->Line
.StipplePattern
);
6214 case GL_LINE_STIPPLE_REPEAT
:
6215 params
[0] = (GLint64
)(ctx
->Line
.StippleFactor
);
6218 params
[0] = IROUND64(ctx
->Line
.Width
);
6220 case GL_LINE_WIDTH_GRANULARITY
:
6221 params
[0] = IROUND64(ctx
->Const
.LineWidthGranularity
);
6223 case GL_LINE_WIDTH_RANGE
:
6224 params
[0] = IROUND64(ctx
->Const
.MinLineWidthAA
);
6225 params
[1] = IROUND64(ctx
->Const
.MaxLineWidthAA
);
6227 case GL_ALIASED_LINE_WIDTH_RANGE
:
6228 params
[0] = IROUND64(ctx
->Const
.MinLineWidth
);
6229 params
[1] = IROUND64(ctx
->Const
.MaxLineWidth
);
6232 params
[0] = (GLint64
)(ctx
->List
.ListBase
);
6235 params
[0] = (GLint64
)((ctx
->ListState
.CurrentList
? ctx
->ListState
.CurrentList
->Name
: 0));
6240 if (!ctx
->CompileFlag
)
6242 else if (ctx
->ExecuteFlag
)
6243 mode
= GL_COMPILE_AND_EXECUTE
;
6246 params
[0] = ENUM_TO_INT64(mode
);
6249 case GL_INDEX_LOGIC_OP
:
6250 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.IndexLogicOpEnabled
);
6252 case GL_COLOR_LOGIC_OP
:
6253 params
[0] = BOOLEAN_TO_INT64(ctx
->Color
.ColorLogicOpEnabled
);
6255 case GL_LOGIC_OP_MODE
:
6256 params
[0] = ENUM_TO_INT64(ctx
->Color
.LogicOp
);
6258 case GL_MAP1_COLOR_4
:
6259 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Color4
);
6261 case GL_MAP1_GRID_DOMAIN
:
6262 params
[0] = IROUND64(ctx
->Eval
.MapGrid1u1
);
6263 params
[1] = IROUND64(ctx
->Eval
.MapGrid1u2
);
6265 case GL_MAP1_GRID_SEGMENTS
:
6266 params
[0] = (GLint64
)(ctx
->Eval
.MapGrid1un
);
6269 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Index
);
6271 case GL_MAP1_NORMAL
:
6272 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Normal
);
6274 case GL_MAP1_TEXTURE_COORD_1
:
6275 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord1
);
6277 case GL_MAP1_TEXTURE_COORD_2
:
6278 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord2
);
6280 case GL_MAP1_TEXTURE_COORD_3
:
6281 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord3
);
6283 case GL_MAP1_TEXTURE_COORD_4
:
6284 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1TextureCoord4
);
6286 case GL_MAP1_VERTEX_3
:
6287 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Vertex3
);
6289 case GL_MAP1_VERTEX_4
:
6290 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Vertex4
);
6292 case GL_MAP2_COLOR_4
:
6293 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Color4
);
6295 case GL_MAP2_GRID_DOMAIN
:
6296 params
[0] = IROUND64(ctx
->Eval
.MapGrid2u1
);
6297 params
[1] = IROUND64(ctx
->Eval
.MapGrid2u2
);
6298 params
[2] = IROUND64(ctx
->Eval
.MapGrid2v1
);
6299 params
[3] = IROUND64(ctx
->Eval
.MapGrid2v2
);
6301 case GL_MAP2_GRID_SEGMENTS
:
6302 params
[0] = (GLint64
)(ctx
->Eval
.MapGrid2un
);
6303 params
[1] = (GLint64
)(ctx
->Eval
.MapGrid2vn
);
6306 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Index
);
6308 case GL_MAP2_NORMAL
:
6309 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Normal
);
6311 case GL_MAP2_TEXTURE_COORD_1
:
6312 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord1
);
6314 case GL_MAP2_TEXTURE_COORD_2
:
6315 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord2
);
6317 case GL_MAP2_TEXTURE_COORD_3
:
6318 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord3
);
6320 case GL_MAP2_TEXTURE_COORD_4
:
6321 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2TextureCoord4
);
6323 case GL_MAP2_VERTEX_3
:
6324 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Vertex3
);
6326 case GL_MAP2_VERTEX_4
:
6327 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map2Vertex4
);
6330 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MapColorFlag
);
6332 case GL_MAP_STENCIL
:
6333 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MapStencilFlag
);
6335 case GL_MATRIX_MODE
:
6336 params
[0] = ENUM_TO_INT64(ctx
->Transform
.MatrixMode
);
6338 case GL_MAX_ATTRIB_STACK_DEPTH
:
6339 params
[0] = (GLint64
)(MAX_ATTRIB_STACK_DEPTH
);
6341 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH
:
6342 params
[0] = (GLint64
)(MAX_CLIENT_ATTRIB_STACK_DEPTH
);
6344 case GL_MAX_CLIP_PLANES
:
6345 params
[0] = (GLint64
)(ctx
->Const
.MaxClipPlanes
);
6347 case GL_MAX_ELEMENTS_VERTICES
:
6348 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayLockSize
);
6350 case GL_MAX_ELEMENTS_INDICES
:
6351 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayLockSize
);
6353 case GL_MAX_EVAL_ORDER
:
6354 params
[0] = (GLint64
)(MAX_EVAL_ORDER
);
6357 params
[0] = (GLint64
)(ctx
->Const
.MaxLights
);
6359 case GL_MAX_LIST_NESTING
:
6360 params
[0] = (GLint64
)(MAX_LIST_NESTING
);
6362 case GL_MAX_MODELVIEW_STACK_DEPTH
:
6363 params
[0] = (GLint64
)(MAX_MODELVIEW_STACK_DEPTH
);
6365 case GL_MAX_NAME_STACK_DEPTH
:
6366 params
[0] = (GLint64
)(MAX_NAME_STACK_DEPTH
);
6368 case GL_MAX_PIXEL_MAP_TABLE
:
6369 params
[0] = (GLint64
)(MAX_PIXEL_MAP_TABLE
);
6371 case GL_MAX_PROJECTION_STACK_DEPTH
:
6372 params
[0] = (GLint64
)(MAX_PROJECTION_STACK_DEPTH
);
6374 case GL_MAX_TEXTURE_SIZE
:
6375 params
[0] = (GLint64
)(1 << (ctx
->Const
.MaxTextureLevels
- 1));
6377 case GL_MAX_3D_TEXTURE_SIZE
:
6378 params
[0] = (GLint64
)(1 << (ctx
->Const
.Max3DTextureLevels
- 1));
6380 case GL_MAX_TEXTURE_STACK_DEPTH
:
6381 params
[0] = (GLint64
)(MAX_TEXTURE_STACK_DEPTH
);
6383 case GL_MAX_VIEWPORT_DIMS
:
6384 params
[0] = (GLint64
)(ctx
->Const
.MaxViewportWidth
);
6385 params
[1] = (GLint64
)(ctx
->Const
.MaxViewportHeight
);
6387 case GL_MODELVIEW_MATRIX
:
6389 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
6390 params
[0] = IROUND64(matrix
[0]);
6391 params
[1] = IROUND64(matrix
[1]);
6392 params
[2] = IROUND64(matrix
[2]);
6393 params
[3] = IROUND64(matrix
[3]);
6394 params
[4] = IROUND64(matrix
[4]);
6395 params
[5] = IROUND64(matrix
[5]);
6396 params
[6] = IROUND64(matrix
[6]);
6397 params
[7] = IROUND64(matrix
[7]);
6398 params
[8] = IROUND64(matrix
[8]);
6399 params
[9] = IROUND64(matrix
[9]);
6400 params
[10] = IROUND64(matrix
[10]);
6401 params
[11] = IROUND64(matrix
[11]);
6402 params
[12] = IROUND64(matrix
[12]);
6403 params
[13] = IROUND64(matrix
[13]);
6404 params
[14] = IROUND64(matrix
[14]);
6405 params
[15] = IROUND64(matrix
[15]);
6408 case GL_MODELVIEW_STACK_DEPTH
:
6409 params
[0] = (GLint64
)(ctx
->ModelviewMatrixStack
.Depth
+ 1);
6411 case GL_NAME_STACK_DEPTH
:
6412 params
[0] = (GLint64
)(ctx
->Select
.NameStackDepth
);
6415 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.Normalize
);
6417 case GL_PACK_ALIGNMENT
:
6418 params
[0] = (GLint64
)(ctx
->Pack
.Alignment
);
6420 case GL_PACK_LSB_FIRST
:
6421 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.LsbFirst
);
6423 case GL_PACK_ROW_LENGTH
:
6424 params
[0] = (GLint64
)(ctx
->Pack
.RowLength
);
6426 case GL_PACK_SKIP_PIXELS
:
6427 params
[0] = (GLint64
)(ctx
->Pack
.SkipPixels
);
6429 case GL_PACK_SKIP_ROWS
:
6430 params
[0] = (GLint64
)(ctx
->Pack
.SkipRows
);
6432 case GL_PACK_SWAP_BYTES
:
6433 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.SwapBytes
);
6435 case GL_PACK_SKIP_IMAGES_EXT
:
6436 params
[0] = (GLint64
)(ctx
->Pack
.SkipImages
);
6438 case GL_PACK_IMAGE_HEIGHT_EXT
:
6439 params
[0] = (GLint64
)(ctx
->Pack
.ImageHeight
);
6441 case GL_PACK_INVERT_MESA
:
6442 params
[0] = BOOLEAN_TO_INT64(ctx
->Pack
.Invert
);
6444 case GL_PERSPECTIVE_CORRECTION_HINT
:
6445 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PerspectiveCorrection
);
6447 case GL_PIXEL_MAP_A_TO_A_SIZE
:
6448 params
[0] = (GLint64
)(ctx
->PixelMaps
.AtoA
.Size
);
6450 case GL_PIXEL_MAP_B_TO_B_SIZE
:
6451 params
[0] = (GLint64
)(ctx
->PixelMaps
.BtoB
.Size
);
6453 case GL_PIXEL_MAP_G_TO_G_SIZE
:
6454 params
[0] = (GLint64
)(ctx
->PixelMaps
.GtoG
.Size
);
6456 case GL_PIXEL_MAP_I_TO_A_SIZE
:
6457 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoA
.Size
);
6459 case GL_PIXEL_MAP_I_TO_B_SIZE
:
6460 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoB
.Size
);
6462 case GL_PIXEL_MAP_I_TO_G_SIZE
:
6463 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoG
.Size
);
6465 case GL_PIXEL_MAP_I_TO_I_SIZE
:
6466 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoI
.Size
);
6468 case GL_PIXEL_MAP_I_TO_R_SIZE
:
6469 params
[0] = (GLint64
)(ctx
->PixelMaps
.ItoR
.Size
);
6471 case GL_PIXEL_MAP_R_TO_R_SIZE
:
6472 params
[0] = (GLint64
)(ctx
->PixelMaps
.RtoR
.Size
);
6474 case GL_PIXEL_MAP_S_TO_S_SIZE
:
6475 params
[0] = (GLint64
)(ctx
->PixelMaps
.StoS
.Size
);
6478 params
[0] = IROUND64(ctx
->Point
.Size
);
6480 case GL_POINT_SIZE_GRANULARITY
:
6481 params
[0] = IROUND64(ctx
->Const
.PointSizeGranularity
);
6483 case GL_POINT_SIZE_RANGE
:
6484 params
[0] = IROUND64(ctx
->Const
.MinPointSizeAA
);
6485 params
[1] = IROUND64(ctx
->Const
.MaxPointSizeAA
);
6487 case GL_ALIASED_POINT_SIZE_RANGE
:
6488 params
[0] = IROUND64(ctx
->Const
.MinPointSize
);
6489 params
[1] = IROUND64(ctx
->Const
.MaxPointSize
);
6491 case GL_POINT_SMOOTH
:
6492 params
[0] = BOOLEAN_TO_INT64(ctx
->Point
.SmoothFlag
);
6494 case GL_POINT_SMOOTH_HINT
:
6495 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PointSmooth
);
6497 case GL_POINT_SIZE_MIN_EXT
:
6498 params
[0] = IROUND64(ctx
->Point
.MinSize
);
6500 case GL_POINT_SIZE_MAX_EXT
:
6501 params
[0] = IROUND64(ctx
->Point
.MaxSize
);
6503 case GL_POINT_FADE_THRESHOLD_SIZE_EXT
:
6504 params
[0] = IROUND64(ctx
->Point
.Threshold
);
6506 case GL_DISTANCE_ATTENUATION_EXT
:
6507 params
[0] = IROUND64(ctx
->Point
.Params
[0]);
6508 params
[1] = IROUND64(ctx
->Point
.Params
[1]);
6509 params
[2] = IROUND64(ctx
->Point
.Params
[2]);
6511 case GL_POLYGON_MODE
:
6512 params
[0] = ENUM_TO_INT64(ctx
->Polygon
.FrontMode
);
6513 params
[1] = ENUM_TO_INT64(ctx
->Polygon
.BackMode
);
6515 case GL_POLYGON_OFFSET_BIAS_EXT
:
6516 params
[0] = IROUND64(ctx
->Polygon
.OffsetUnits
);
6518 case GL_POLYGON_OFFSET_FACTOR
:
6519 params
[0] = IROUND64(ctx
->Polygon
.OffsetFactor
);
6521 case GL_POLYGON_OFFSET_UNITS
:
6522 params
[0] = IROUND64(ctx
->Polygon
.OffsetUnits
);
6524 case GL_POLYGON_OFFSET_POINT
:
6525 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetPoint
);
6527 case GL_POLYGON_OFFSET_LINE
:
6528 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetLine
);
6530 case GL_POLYGON_OFFSET_FILL
:
6531 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.OffsetFill
);
6533 case GL_POLYGON_SMOOTH
:
6534 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.SmoothFlag
);
6536 case GL_POLYGON_SMOOTH_HINT
:
6537 params
[0] = ENUM_TO_INT64(ctx
->Hint
.PolygonSmooth
);
6539 case GL_POLYGON_STIPPLE
:
6540 params
[0] = BOOLEAN_TO_INT64(ctx
->Polygon
.StippleFlag
);
6542 case GL_PROJECTION_MATRIX
:
6544 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
6545 params
[0] = IROUND64(matrix
[0]);
6546 params
[1] = IROUND64(matrix
[1]);
6547 params
[2] = IROUND64(matrix
[2]);
6548 params
[3] = IROUND64(matrix
[3]);
6549 params
[4] = IROUND64(matrix
[4]);
6550 params
[5] = IROUND64(matrix
[5]);
6551 params
[6] = IROUND64(matrix
[6]);
6552 params
[7] = IROUND64(matrix
[7]);
6553 params
[8] = IROUND64(matrix
[8]);
6554 params
[9] = IROUND64(matrix
[9]);
6555 params
[10] = IROUND64(matrix
[10]);
6556 params
[11] = IROUND64(matrix
[11]);
6557 params
[12] = IROUND64(matrix
[12]);
6558 params
[13] = IROUND64(matrix
[13]);
6559 params
[14] = IROUND64(matrix
[14]);
6560 params
[15] = IROUND64(matrix
[15]);
6563 case GL_PROJECTION_STACK_DEPTH
:
6564 params
[0] = (GLint64
)(ctx
->ProjectionMatrixStack
.Depth
+ 1);
6566 case GL_READ_BUFFER
:
6567 params
[0] = ENUM_TO_INT64(ctx
->ReadBuffer
->ColorReadBuffer
);
6570 params
[0] = IROUND64(ctx
->Pixel
.RedBias
);
6573 if (ctx
->NewState
& _NEW_BUFFERS
)
6574 _mesa_update_state(ctx
);
6575 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.redBits
);
6578 params
[0] = IROUND64(ctx
->Pixel
.RedScale
);
6580 case GL_RENDER_MODE
:
6581 params
[0] = ENUM_TO_INT64(ctx
->RenderMode
);
6583 case GL_RESCALE_NORMAL
:
6584 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.RescaleNormals
);
6587 params
[0] = BOOLEAN_TO_INT64(GL_TRUE
);
6589 case GL_SCISSOR_BOX
:
6590 params
[0] = (GLint64
)(ctx
->Scissor
.X
);
6591 params
[1] = (GLint64
)(ctx
->Scissor
.Y
);
6592 params
[2] = (GLint64
)(ctx
->Scissor
.Width
);
6593 params
[3] = (GLint64
)(ctx
->Scissor
.Height
);
6595 case GL_SCISSOR_TEST
:
6596 params
[0] = BOOLEAN_TO_INT64(ctx
->Scissor
.Enabled
);
6598 case GL_SELECTION_BUFFER_SIZE
:
6599 params
[0] = (GLint64
)(ctx
->Select
.BufferSize
);
6601 case GL_SHADE_MODEL
:
6602 params
[0] = ENUM_TO_INT64(ctx
->Light
.ShadeModel
);
6604 case GL_SHARED_TEXTURE_PALETTE_EXT
:
6605 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.SharedPalette
);
6607 case GL_STENCIL_BITS
:
6608 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.stencilBits
);
6610 case GL_STENCIL_CLEAR_VALUE
:
6611 params
[0] = (GLint64
)(ctx
->Stencil
.Clear
);
6613 case GL_STENCIL_FAIL
:
6614 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.FailFunc
[ctx
->Stencil
.ActiveFace
]);
6616 case GL_STENCIL_FUNC
:
6617 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.Function
[ctx
->Stencil
.ActiveFace
]);
6619 case GL_STENCIL_PASS_DEPTH_FAIL
:
6620 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZFailFunc
[ctx
->Stencil
.ActiveFace
]);
6622 case GL_STENCIL_PASS_DEPTH_PASS
:
6623 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZPassFunc
[ctx
->Stencil
.ActiveFace
]);
6625 case GL_STENCIL_REF
:
6626 params
[0] = (GLint64
)(ctx
->Stencil
.Ref
[ctx
->Stencil
.ActiveFace
]);
6628 case GL_STENCIL_TEST
:
6629 params
[0] = BOOLEAN_TO_INT64(ctx
->Stencil
.Enabled
);
6631 case GL_STENCIL_VALUE_MASK
:
6632 params
[0] = (GLint64
)(ctx
->Stencil
.ValueMask
[ctx
->Stencil
.ActiveFace
]);
6634 case GL_STENCIL_WRITEMASK
:
6635 params
[0] = (GLint64
)(ctx
->Stencil
.WriteMask
[ctx
->Stencil
.ActiveFace
]);
6638 params
[0] = BOOLEAN_TO_INT64(ctx
->DrawBuffer
->Visual
.stereoMode
);
6640 case GL_SUBPIXEL_BITS
:
6641 params
[0] = (GLint64
)(ctx
->Const
.SubPixelBits
);
6644 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D
));
6647 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D
));
6650 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D
));
6652 case GL_TEXTURE_1D_ARRAY_EXT
:
6653 CHECK_EXT1(MESA_texture_array
);
6654 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT
));
6656 case GL_TEXTURE_2D_ARRAY_EXT
:
6657 CHECK_EXT1(MESA_texture_array
);
6658 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT
));
6660 case GL_TEXTURE_BINDING_1D
:
6661 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_INDEX
]->Name
);
6663 case GL_TEXTURE_BINDING_2D
:
6664 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_INDEX
]->Name
);
6666 case GL_TEXTURE_BINDING_3D
:
6667 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_3D_INDEX
]->Name
);
6669 case GL_TEXTURE_BINDING_1D_ARRAY_EXT
:
6670 CHECK_EXT1(MESA_texture_array
);
6671 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_1D_ARRAY_INDEX
]->Name
);
6673 case GL_TEXTURE_BINDING_2D_ARRAY_EXT
:
6674 CHECK_EXT1(MESA_texture_array
);
6675 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_2D_ARRAY_INDEX
]->Name
);
6677 case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT
:
6678 CHECK_EXT1(MESA_texture_array
);
6679 params
[0] = (GLint64
)(ctx
->Const
.MaxArrayTextureLayers
);
6681 case GL_TEXTURE_GEN_S
:
6682 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& S_BIT
) ? 1 : 0));
6684 case GL_TEXTURE_GEN_T
:
6685 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& T_BIT
) ? 1 : 0));
6687 case GL_TEXTURE_GEN_R
:
6688 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& R_BIT
) ? 1 : 0));
6690 case GL_TEXTURE_GEN_Q
:
6691 params
[0] = BOOLEAN_TO_INT64(((ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].TexGenEnabled
& Q_BIT
) ? 1 : 0));
6693 case GL_TEXTURE_MATRIX
:
6695 const GLfloat
*matrix
;
6696 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6697 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6698 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glGet(texture matrix %u)",
6702 matrix
= ctx
->TextureMatrixStack
[unit
].Top
->m
;
6703 params
[0] = IROUND64(matrix
[0]);
6704 params
[1] = IROUND64(matrix
[1]);
6705 params
[2] = IROUND64(matrix
[2]);
6706 params
[3] = IROUND64(matrix
[3]);
6707 params
[4] = IROUND64(matrix
[4]);
6708 params
[5] = IROUND64(matrix
[5]);
6709 params
[6] = IROUND64(matrix
[6]);
6710 params
[7] = IROUND64(matrix
[7]);
6711 params
[8] = IROUND64(matrix
[8]);
6712 params
[9] = IROUND64(matrix
[9]);
6713 params
[10] = IROUND64(matrix
[10]);
6714 params
[11] = IROUND64(matrix
[11]);
6715 params
[12] = IROUND64(matrix
[12]);
6716 params
[13] = IROUND64(matrix
[13]);
6717 params
[14] = IROUND64(matrix
[14]);
6718 params
[15] = IROUND64(matrix
[15]);
6721 case GL_TEXTURE_STACK_DEPTH
:
6723 const GLuint unit
= ctx
->Texture
.CurrentUnit
;
6724 if (unit
>= ctx
->Const
.MaxTextureCoordUnits
) {
6725 _mesa_error(ctx
, GL_INVALID_OPERATION
,
6726 "glGet(texture stack depth, unit %u)", unit
);
6729 params
[0] = (GLint64
)(ctx
->TextureMatrixStack
[unit
].Depth
+ 1);
6732 case GL_UNPACK_ALIGNMENT
:
6733 params
[0] = (GLint64
)(ctx
->Unpack
.Alignment
);
6735 case GL_UNPACK_LSB_FIRST
:
6736 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.LsbFirst
);
6738 case GL_UNPACK_ROW_LENGTH
:
6739 params
[0] = (GLint64
)(ctx
->Unpack
.RowLength
);
6741 case GL_UNPACK_SKIP_PIXELS
:
6742 params
[0] = (GLint64
)(ctx
->Unpack
.SkipPixels
);
6744 case GL_UNPACK_SKIP_ROWS
:
6745 params
[0] = (GLint64
)(ctx
->Unpack
.SkipRows
);
6747 case GL_UNPACK_SWAP_BYTES
:
6748 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.SwapBytes
);
6750 case GL_UNPACK_SKIP_IMAGES_EXT
:
6751 params
[0] = (GLint64
)(ctx
->Unpack
.SkipImages
);
6753 case GL_UNPACK_IMAGE_HEIGHT_EXT
:
6754 params
[0] = (GLint64
)(ctx
->Unpack
.ImageHeight
);
6756 case GL_UNPACK_CLIENT_STORAGE_APPLE
:
6757 params
[0] = BOOLEAN_TO_INT64(ctx
->Unpack
.ClientStorage
);
6760 params
[0] = (GLint64
)(ctx
->Viewport
.X
);
6761 params
[1] = (GLint64
)(ctx
->Viewport
.Y
);
6762 params
[2] = (GLint64
)(ctx
->Viewport
.Width
);
6763 params
[3] = (GLint64
)(ctx
->Viewport
.Height
);
6766 params
[0] = IROUND64(ctx
->Pixel
.ZoomX
);
6769 params
[0] = IROUND64(ctx
->Pixel
.ZoomY
);
6771 case GL_VERTEX_ARRAY
:
6772 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Vertex
.Enabled
);
6774 case GL_VERTEX_ARRAY_SIZE
:
6775 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.Size
);
6777 case GL_VERTEX_ARRAY_TYPE
:
6778 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Vertex
.Type
);
6780 case GL_VERTEX_ARRAY_STRIDE
:
6781 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.Stride
);
6783 case GL_VERTEX_ARRAY_COUNT_EXT
:
6784 params
[0] = (GLint64
)(0);
6786 case GL_NORMAL_ARRAY
:
6787 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Normal
.Enabled
);
6789 case GL_NORMAL_ARRAY_TYPE
:
6790 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Normal
.Type
);
6792 case GL_NORMAL_ARRAY_STRIDE
:
6793 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Normal
.Stride
);
6795 case GL_NORMAL_ARRAY_COUNT_EXT
:
6796 params
[0] = (GLint64
)(0);
6798 case GL_COLOR_ARRAY
:
6799 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Color
.Enabled
);
6801 case GL_COLOR_ARRAY_SIZE
:
6802 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.Size
);
6804 case GL_COLOR_ARRAY_TYPE
:
6805 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Color
.Type
);
6807 case GL_COLOR_ARRAY_STRIDE
:
6808 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.Stride
);
6810 case GL_COLOR_ARRAY_COUNT_EXT
:
6811 params
[0] = (GLint64
)(0);
6813 case GL_INDEX_ARRAY
:
6814 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->Index
.Enabled
);
6816 case GL_INDEX_ARRAY_TYPE
:
6817 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->Index
.Type
);
6819 case GL_INDEX_ARRAY_STRIDE
:
6820 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Index
.Stride
);
6822 case GL_INDEX_ARRAY_COUNT_EXT
:
6823 params
[0] = (GLint64
)(0);
6825 case GL_TEXTURE_COORD_ARRAY
:
6826 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Enabled
);
6828 case GL_TEXTURE_COORD_ARRAY_SIZE
:
6829 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Size
);
6831 case GL_TEXTURE_COORD_ARRAY_TYPE
:
6832 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Type
);
6834 case GL_TEXTURE_COORD_ARRAY_STRIDE
:
6835 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].Stride
);
6837 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT
:
6838 params
[0] = (GLint64
)(0);
6840 case GL_EDGE_FLAG_ARRAY
:
6841 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->EdgeFlag
.Enabled
);
6843 case GL_EDGE_FLAG_ARRAY_STRIDE
:
6844 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->EdgeFlag
.Stride
);
6846 case GL_EDGE_FLAG_ARRAY_COUNT_EXT
:
6847 params
[0] = (GLint64
)(0);
6849 case GL_MAX_TEXTURE_UNITS_ARB
:
6850 CHECK_EXT1(ARB_multitexture
);
6851 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureUnits
);
6853 case GL_ACTIVE_TEXTURE_ARB
:
6854 CHECK_EXT1(ARB_multitexture
);
6855 params
[0] = (GLint64
)(GL_TEXTURE0_ARB
+ ctx
->Texture
.CurrentUnit
);
6857 case GL_CLIENT_ACTIVE_TEXTURE_ARB
:
6858 CHECK_EXT1(ARB_multitexture
);
6859 params
[0] = (GLint64
)(GL_TEXTURE0_ARB
+ ctx
->Array
.ActiveTexture
);
6861 case GL_TEXTURE_CUBE_MAP_ARB
:
6862 CHECK_EXT1(ARB_texture_cube_map
);
6863 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB
));
6865 case GL_TEXTURE_BINDING_CUBE_MAP_ARB
:
6866 CHECK_EXT1(ARB_texture_cube_map
);
6867 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_CUBE_INDEX
]->Name
);
6869 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB
:
6870 CHECK_EXT1(ARB_texture_cube_map
);
6871 params
[0] = (GLint64
)((1 << (ctx
->Const
.MaxCubeTextureLevels
- 1)));
6873 case GL_TEXTURE_COMPRESSION_HINT_ARB
:
6874 params
[0] = (GLint64
)(ctx
->Hint
.TextureCompression
);
6876 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB
:
6877 params
[0] = (GLint64
)(_mesa_get_compressed_formats(ctx
, NULL
, GL_FALSE
));
6879 case GL_COMPRESSED_TEXTURE_FORMATS_ARB
:
6882 GLuint i
, n
= _mesa_get_compressed_formats(ctx
, formats
, GL_FALSE
);
6884 for (i
= 0; i
< n
; i
++)
6885 params
[i
] = ENUM_TO_INT64(formats
[i
]);
6888 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT
:
6889 CHECK_EXT1(EXT_compiled_vertex_array
);
6890 params
[0] = (GLint64
)(ctx
->Array
.LockFirst
);
6892 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT
:
6893 CHECK_EXT1(EXT_compiled_vertex_array
);
6894 params
[0] = (GLint64
)(ctx
->Array
.LockCount
);
6896 case GL_TRANSPOSE_COLOR_MATRIX_ARB
:
6898 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
6899 params
[0] = IROUND64(matrix
[0]);
6900 params
[1] = IROUND64(matrix
[4]);
6901 params
[2] = IROUND64(matrix
[8]);
6902 params
[3] = IROUND64(matrix
[12]);
6903 params
[4] = IROUND64(matrix
[1]);
6904 params
[5] = IROUND64(matrix
[5]);
6905 params
[6] = IROUND64(matrix
[9]);
6906 params
[7] = IROUND64(matrix
[13]);
6907 params
[8] = IROUND64(matrix
[2]);
6908 params
[9] = IROUND64(matrix
[6]);
6909 params
[10] = IROUND64(matrix
[10]);
6910 params
[11] = IROUND64(matrix
[14]);
6911 params
[12] = IROUND64(matrix
[3]);
6912 params
[13] = IROUND64(matrix
[7]);
6913 params
[14] = IROUND64(matrix
[11]);
6914 params
[15] = IROUND64(matrix
[15]);
6917 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
:
6919 const GLfloat
*matrix
= ctx
->ModelviewMatrixStack
.Top
->m
;
6920 params
[0] = IROUND64(matrix
[0]);
6921 params
[1] = IROUND64(matrix
[4]);
6922 params
[2] = IROUND64(matrix
[8]);
6923 params
[3] = IROUND64(matrix
[12]);
6924 params
[4] = IROUND64(matrix
[1]);
6925 params
[5] = IROUND64(matrix
[5]);
6926 params
[6] = IROUND64(matrix
[9]);
6927 params
[7] = IROUND64(matrix
[13]);
6928 params
[8] = IROUND64(matrix
[2]);
6929 params
[9] = IROUND64(matrix
[6]);
6930 params
[10] = IROUND64(matrix
[10]);
6931 params
[11] = IROUND64(matrix
[14]);
6932 params
[12] = IROUND64(matrix
[3]);
6933 params
[13] = IROUND64(matrix
[7]);
6934 params
[14] = IROUND64(matrix
[11]);
6935 params
[15] = IROUND64(matrix
[15]);
6938 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB
:
6940 const GLfloat
*matrix
= ctx
->ProjectionMatrixStack
.Top
->m
;
6941 params
[0] = IROUND64(matrix
[0]);
6942 params
[1] = IROUND64(matrix
[4]);
6943 params
[2] = IROUND64(matrix
[8]);
6944 params
[3] = IROUND64(matrix
[12]);
6945 params
[4] = IROUND64(matrix
[1]);
6946 params
[5] = IROUND64(matrix
[5]);
6947 params
[6] = IROUND64(matrix
[9]);
6948 params
[7] = IROUND64(matrix
[13]);
6949 params
[8] = IROUND64(matrix
[2]);
6950 params
[9] = IROUND64(matrix
[6]);
6951 params
[10] = IROUND64(matrix
[10]);
6952 params
[11] = IROUND64(matrix
[14]);
6953 params
[12] = IROUND64(matrix
[3]);
6954 params
[13] = IROUND64(matrix
[7]);
6955 params
[14] = IROUND64(matrix
[11]);
6956 params
[15] = IROUND64(matrix
[15]);
6959 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB
:
6961 const GLfloat
*matrix
= ctx
->TextureMatrixStack
[ctx
->Texture
.CurrentUnit
].Top
->m
;
6962 params
[0] = IROUND64(matrix
[0]);
6963 params
[1] = IROUND64(matrix
[4]);
6964 params
[2] = IROUND64(matrix
[8]);
6965 params
[3] = IROUND64(matrix
[12]);
6966 params
[4] = IROUND64(matrix
[1]);
6967 params
[5] = IROUND64(matrix
[5]);
6968 params
[6] = IROUND64(matrix
[9]);
6969 params
[7] = IROUND64(matrix
[13]);
6970 params
[8] = IROUND64(matrix
[2]);
6971 params
[9] = IROUND64(matrix
[6]);
6972 params
[10] = IROUND64(matrix
[10]);
6973 params
[11] = IROUND64(matrix
[14]);
6974 params
[12] = IROUND64(matrix
[3]);
6975 params
[13] = IROUND64(matrix
[7]);
6976 params
[14] = IROUND64(matrix
[11]);
6977 params
[15] = IROUND64(matrix
[15]);
6980 case GL_COLOR_MATRIX_SGI
:
6982 const GLfloat
*matrix
= ctx
->ColorMatrixStack
.Top
->m
;
6983 params
[0] = IROUND64(matrix
[0]);
6984 params
[1] = IROUND64(matrix
[1]);
6985 params
[2] = IROUND64(matrix
[2]);
6986 params
[3] = IROUND64(matrix
[3]);
6987 params
[4] = IROUND64(matrix
[4]);
6988 params
[5] = IROUND64(matrix
[5]);
6989 params
[6] = IROUND64(matrix
[6]);
6990 params
[7] = IROUND64(matrix
[7]);
6991 params
[8] = IROUND64(matrix
[8]);
6992 params
[9] = IROUND64(matrix
[9]);
6993 params
[10] = IROUND64(matrix
[10]);
6994 params
[11] = IROUND64(matrix
[11]);
6995 params
[12] = IROUND64(matrix
[12]);
6996 params
[13] = IROUND64(matrix
[13]);
6997 params
[14] = IROUND64(matrix
[14]);
6998 params
[15] = IROUND64(matrix
[15]);
7001 case GL_COLOR_MATRIX_STACK_DEPTH_SGI
:
7002 params
[0] = (GLint64
)(ctx
->ColorMatrixStack
.Depth
+ 1);
7004 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI
:
7005 params
[0] = (GLint64
)(MAX_COLOR_STACK_DEPTH
);
7007 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI
:
7008 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[0]);
7010 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI
:
7011 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[1]);
7013 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI
:
7014 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[2]);
7016 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI
:
7017 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixScale
[3]);
7019 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI
:
7020 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[0]);
7022 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI
:
7023 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[1]);
7025 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI
:
7026 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[2]);
7028 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI
:
7029 params
[0] = IROUND64(ctx
->Pixel
.PostColorMatrixBias
[3]);
7031 case GL_CONVOLUTION_1D_EXT
:
7032 CHECK_EXT1(EXT_convolution
);
7033 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Convolution1DEnabled
);
7035 case GL_CONVOLUTION_2D_EXT
:
7036 CHECK_EXT1(EXT_convolution
);
7037 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Convolution2DEnabled
);
7039 case GL_SEPARABLE_2D_EXT
:
7040 CHECK_EXT1(EXT_convolution
);
7041 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.Separable2DEnabled
);
7043 case GL_POST_CONVOLUTION_RED_SCALE_EXT
:
7044 CHECK_EXT1(EXT_convolution
);
7045 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[0]);
7047 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT
:
7048 CHECK_EXT1(EXT_convolution
);
7049 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[1]);
7051 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT
:
7052 CHECK_EXT1(EXT_convolution
);
7053 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[2]);
7055 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT
:
7056 CHECK_EXT1(EXT_convolution
);
7057 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionScale
[3]);
7059 case GL_POST_CONVOLUTION_RED_BIAS_EXT
:
7060 CHECK_EXT1(EXT_convolution
);
7061 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[0]);
7063 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT
:
7064 CHECK_EXT1(EXT_convolution
);
7065 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[1]);
7067 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT
:
7068 CHECK_EXT1(EXT_convolution
);
7069 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[2]);
7071 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT
:
7072 CHECK_EXT1(EXT_convolution
);
7073 params
[0] = IROUND64(ctx
->Pixel
.PostConvolutionBias
[3]);
7076 CHECK_EXT1(EXT_histogram
);
7077 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.HistogramEnabled
);
7080 CHECK_EXT1(EXT_histogram
);
7081 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.MinMaxEnabled
);
7083 case GL_COLOR_TABLE_SGI
:
7084 CHECK_EXT1(SGI_color_table
);
7085 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_PRECONVOLUTION
]);
7087 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI
:
7088 CHECK_EXT1(SGI_color_table
);
7089 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCONVOLUTION
]);
7091 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
:
7092 CHECK_EXT1(SGI_color_table
);
7093 params
[0] = BOOLEAN_TO_INT64(ctx
->Pixel
.ColorTableEnabled
[COLORTABLE_POSTCOLORMATRIX
]);
7095 case GL_TEXTURE_COLOR_TABLE_SGI
:
7096 CHECK_EXT1(SGI_texture_color_table
);
7097 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].ColorTableEnabled
);
7099 case GL_COLOR_SUM_EXT
:
7100 CHECK_EXT2(EXT_secondary_color
, ARB_vertex_program
);
7101 params
[0] = BOOLEAN_TO_INT64(ctx
->Fog
.ColorSumEnabled
);
7103 case GL_CURRENT_SECONDARY_COLOR_EXT
:
7104 CHECK_EXT1(EXT_secondary_color
);
7105 FLUSH_CURRENT(ctx
, 0);
7106 params
[0] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][0]);
7107 params
[1] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][1]);
7108 params
[2] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][2]);
7109 params
[3] = FLOAT_TO_INT64(ctx
->Current
.Attrib
[VERT_ATTRIB_COLOR1
][3]);
7111 case GL_SECONDARY_COLOR_ARRAY_EXT
:
7112 CHECK_EXT1(EXT_secondary_color
);
7113 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->SecondaryColor
.Enabled
);
7115 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT
:
7116 CHECK_EXT1(EXT_secondary_color
);
7117 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->SecondaryColor
.Type
);
7119 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT
:
7120 CHECK_EXT1(EXT_secondary_color
);
7121 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Stride
);
7123 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT
:
7124 CHECK_EXT1(EXT_secondary_color
);
7125 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.Size
);
7127 case GL_CURRENT_FOG_COORDINATE_EXT
:
7128 CHECK_EXT1(EXT_fog_coord
);
7129 FLUSH_CURRENT(ctx
, 0);
7130 params
[0] = IROUND64(ctx
->Current
.Attrib
[VERT_ATTRIB_FOG
][0]);
7132 case GL_FOG_COORDINATE_ARRAY_EXT
:
7133 CHECK_EXT1(EXT_fog_coord
);
7134 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->FogCoord
.Enabled
);
7136 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT
:
7137 CHECK_EXT1(EXT_fog_coord
);
7138 params
[0] = ENUM_TO_INT64(ctx
->Array
.ArrayObj
->FogCoord
.Type
);
7140 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT
:
7141 CHECK_EXT1(EXT_fog_coord
);
7142 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->FogCoord
.Stride
);
7144 case GL_FOG_COORDINATE_SOURCE_EXT
:
7145 CHECK_EXT1(EXT_fog_coord
);
7146 params
[0] = ENUM_TO_INT64(ctx
->Fog
.FogCoordinateSource
);
7148 case GL_MAX_TEXTURE_LOD_BIAS_EXT
:
7149 CHECK_EXT1(EXT_texture_lod_bias
);
7150 params
[0] = IROUND64(ctx
->Const
.MaxTextureLodBias
);
7152 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
:
7153 CHECK_EXT1(EXT_texture_filter_anisotropic
);
7154 params
[0] = IROUND64(ctx
->Const
.MaxTextureMaxAnisotropy
);
7156 case GL_MULTISAMPLE_ARB
:
7157 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.Enabled
);
7159 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB
:
7160 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleAlphaToCoverage
);
7162 case GL_SAMPLE_ALPHA_TO_ONE_ARB
:
7163 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleAlphaToOne
);
7165 case GL_SAMPLE_COVERAGE_ARB
:
7166 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleCoverage
);
7168 case GL_SAMPLE_COVERAGE_VALUE_ARB
:
7169 params
[0] = IROUND64(ctx
->Multisample
.SampleCoverageValue
);
7171 case GL_SAMPLE_COVERAGE_INVERT_ARB
:
7172 params
[0] = BOOLEAN_TO_INT64(ctx
->Multisample
.SampleCoverageInvert
);
7174 case GL_SAMPLE_BUFFERS_ARB
:
7175 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.sampleBuffers
);
7177 case GL_SAMPLES_ARB
:
7178 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Visual
.samples
);
7180 case GL_RASTER_POSITION_UNCLIPPED_IBM
:
7181 CHECK_EXT1(IBM_rasterpos_clip
);
7182 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.RasterPositionUnclipped
);
7184 case GL_POINT_SPRITE_NV
:
7185 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
7186 params
[0] = BOOLEAN_TO_INT64(ctx
->Point
.PointSprite
);
7188 case GL_POINT_SPRITE_R_MODE_NV
:
7189 CHECK_EXT1(NV_point_sprite
);
7190 params
[0] = ENUM_TO_INT64(ctx
->Point
.SpriteRMode
);
7192 case GL_POINT_SPRITE_COORD_ORIGIN
:
7193 CHECK_EXT2(NV_point_sprite
, ARB_point_sprite
);
7194 params
[0] = ENUM_TO_INT64(ctx
->Point
.SpriteOrigin
);
7196 case GL_GENERATE_MIPMAP_HINT_SGIS
:
7197 CHECK_EXT1(SGIS_generate_mipmap
);
7198 params
[0] = ENUM_TO_INT64(ctx
->Hint
.GenerateMipmap
);
7200 case GL_VERTEX_PROGRAM_BINDING_NV
:
7201 CHECK_EXT1(NV_vertex_program
);
7202 params
[0] = (GLint64
)((ctx
->VertexProgram
.Current
? ctx
->VertexProgram
.Current
->Base
.Id
: 0));
7204 case GL_VERTEX_ATTRIB_ARRAY0_NV
:
7205 CHECK_EXT1(NV_vertex_program
);
7206 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[0].Enabled
);
7208 case GL_VERTEX_ATTRIB_ARRAY1_NV
:
7209 CHECK_EXT1(NV_vertex_program
);
7210 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[1].Enabled
);
7212 case GL_VERTEX_ATTRIB_ARRAY2_NV
:
7213 CHECK_EXT1(NV_vertex_program
);
7214 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[2].Enabled
);
7216 case GL_VERTEX_ATTRIB_ARRAY3_NV
:
7217 CHECK_EXT1(NV_vertex_program
);
7218 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[3].Enabled
);
7220 case GL_VERTEX_ATTRIB_ARRAY4_NV
:
7221 CHECK_EXT1(NV_vertex_program
);
7222 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[4].Enabled
);
7224 case GL_VERTEX_ATTRIB_ARRAY5_NV
:
7225 CHECK_EXT1(NV_vertex_program
);
7226 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[5].Enabled
);
7228 case GL_VERTEX_ATTRIB_ARRAY6_NV
:
7229 CHECK_EXT1(NV_vertex_program
);
7230 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[6].Enabled
);
7232 case GL_VERTEX_ATTRIB_ARRAY7_NV
:
7233 CHECK_EXT1(NV_vertex_program
);
7234 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[7].Enabled
);
7236 case GL_VERTEX_ATTRIB_ARRAY8_NV
:
7237 CHECK_EXT1(NV_vertex_program
);
7238 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[8].Enabled
);
7240 case GL_VERTEX_ATTRIB_ARRAY9_NV
:
7241 CHECK_EXT1(NV_vertex_program
);
7242 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[9].Enabled
);
7244 case GL_VERTEX_ATTRIB_ARRAY10_NV
:
7245 CHECK_EXT1(NV_vertex_program
);
7246 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[10].Enabled
);
7248 case GL_VERTEX_ATTRIB_ARRAY11_NV
:
7249 CHECK_EXT1(NV_vertex_program
);
7250 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[11].Enabled
);
7252 case GL_VERTEX_ATTRIB_ARRAY12_NV
:
7253 CHECK_EXT1(NV_vertex_program
);
7254 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[12].Enabled
);
7256 case GL_VERTEX_ATTRIB_ARRAY13_NV
:
7257 CHECK_EXT1(NV_vertex_program
);
7258 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[13].Enabled
);
7260 case GL_VERTEX_ATTRIB_ARRAY14_NV
:
7261 CHECK_EXT1(NV_vertex_program
);
7262 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[14].Enabled
);
7264 case GL_VERTEX_ATTRIB_ARRAY15_NV
:
7265 CHECK_EXT1(NV_vertex_program
);
7266 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.ArrayObj
->VertexAttrib
[15].Enabled
);
7268 case GL_MAP1_VERTEX_ATTRIB0_4_NV
:
7269 CHECK_EXT1(NV_vertex_program
);
7270 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[0]);
7272 case GL_MAP1_VERTEX_ATTRIB1_4_NV
:
7273 CHECK_EXT1(NV_vertex_program
);
7274 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[1]);
7276 case GL_MAP1_VERTEX_ATTRIB2_4_NV
:
7277 CHECK_EXT1(NV_vertex_program
);
7278 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[2]);
7280 case GL_MAP1_VERTEX_ATTRIB3_4_NV
:
7281 CHECK_EXT1(NV_vertex_program
);
7282 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[3]);
7284 case GL_MAP1_VERTEX_ATTRIB4_4_NV
:
7285 CHECK_EXT1(NV_vertex_program
);
7286 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[4]);
7288 case GL_MAP1_VERTEX_ATTRIB5_4_NV
:
7289 CHECK_EXT1(NV_vertex_program
);
7290 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[5]);
7292 case GL_MAP1_VERTEX_ATTRIB6_4_NV
:
7293 CHECK_EXT1(NV_vertex_program
);
7294 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[6]);
7296 case GL_MAP1_VERTEX_ATTRIB7_4_NV
:
7297 CHECK_EXT1(NV_vertex_program
);
7298 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[7]);
7300 case GL_MAP1_VERTEX_ATTRIB8_4_NV
:
7301 CHECK_EXT1(NV_vertex_program
);
7302 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[8]);
7304 case GL_MAP1_VERTEX_ATTRIB9_4_NV
:
7305 CHECK_EXT1(NV_vertex_program
);
7306 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[9]);
7308 case GL_MAP1_VERTEX_ATTRIB10_4_NV
:
7309 CHECK_EXT1(NV_vertex_program
);
7310 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[10]);
7312 case GL_MAP1_VERTEX_ATTRIB11_4_NV
:
7313 CHECK_EXT1(NV_vertex_program
);
7314 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[11]);
7316 case GL_MAP1_VERTEX_ATTRIB12_4_NV
:
7317 CHECK_EXT1(NV_vertex_program
);
7318 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[12]);
7320 case GL_MAP1_VERTEX_ATTRIB13_4_NV
:
7321 CHECK_EXT1(NV_vertex_program
);
7322 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[13]);
7324 case GL_MAP1_VERTEX_ATTRIB14_4_NV
:
7325 CHECK_EXT1(NV_vertex_program
);
7326 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[14]);
7328 case GL_MAP1_VERTEX_ATTRIB15_4_NV
:
7329 CHECK_EXT1(NV_vertex_program
);
7330 params
[0] = BOOLEAN_TO_INT64(ctx
->Eval
.Map1Attrib
[15]);
7332 case GL_FRAGMENT_PROGRAM_NV
:
7333 CHECK_EXT1(NV_fragment_program
);
7334 params
[0] = BOOLEAN_TO_INT64(ctx
->FragmentProgram
.Enabled
);
7336 case GL_FRAGMENT_PROGRAM_BINDING_NV
:
7337 CHECK_EXT1(NV_fragment_program
);
7338 params
[0] = (GLint64
)(ctx
->FragmentProgram
.Current
? ctx
->FragmentProgram
.Current
->Base
.Id
: 0);
7340 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV
:
7341 CHECK_EXT1(NV_fragment_program
);
7342 params
[0] = (GLint64
)(MAX_NV_FRAGMENT_PROGRAM_PARAMS
);
7344 case GL_TEXTURE_RECTANGLE_NV
:
7345 CHECK_EXT1(NV_texture_rectangle
);
7346 params
[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV
));
7348 case GL_TEXTURE_BINDING_RECTANGLE_NV
:
7349 CHECK_EXT1(NV_texture_rectangle
);
7350 params
[0] = (GLint64
)(ctx
->Texture
.Unit
[ctx
->Texture
.CurrentUnit
].CurrentTex
[TEXTURE_RECT_INDEX
]->Name
);
7352 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV
:
7353 CHECK_EXT1(NV_texture_rectangle
);
7354 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureRectSize
);
7356 case GL_STENCIL_TEST_TWO_SIDE_EXT
:
7357 CHECK_EXT1(EXT_stencil_two_side
);
7358 params
[0] = BOOLEAN_TO_INT64(ctx
->Stencil
.TestTwoSide
);
7360 case GL_ACTIVE_STENCIL_FACE_EXT
:
7361 CHECK_EXT1(EXT_stencil_two_side
);
7362 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ActiveFace
? GL_BACK
: GL_FRONT
);
7364 case GL_MAX_SHININESS_NV
:
7365 CHECK_EXT1(NV_light_max_exponent
);
7366 params
[0] = IROUND64(ctx
->Const
.MaxShininess
);
7368 case GL_MAX_SPOT_EXPONENT_NV
:
7369 CHECK_EXT1(NV_light_max_exponent
);
7370 params
[0] = IROUND64(ctx
->Const
.MaxSpotExponent
);
7372 case GL_ARRAY_BUFFER_BINDING_ARB
:
7373 params
[0] = (GLint64
)(ctx
->Array
.ArrayBufferObj
->Name
);
7375 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
:
7376 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Vertex
.BufferObj
->Name
);
7378 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
:
7379 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Normal
.BufferObj
->Name
);
7381 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB
:
7382 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Color
.BufferObj
->Name
);
7384 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB
:
7385 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Index
.BufferObj
->Name
);
7387 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
:
7388 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->TexCoord
[ctx
->Array
.ActiveTexture
].BufferObj
->Name
);
7390 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
:
7391 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->EdgeFlag
.BufferObj
->Name
);
7393 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
:
7394 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->SecondaryColor
.BufferObj
->Name
);
7396 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
:
7397 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->FogCoord
.BufferObj
->Name
);
7399 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
:
7400 params
[0] = (GLint64
)(ctx
->Array
.ElementArrayBufferObj
->Name
);
7402 case GL_PIXEL_PACK_BUFFER_BINDING_EXT
:
7403 CHECK_EXT1(EXT_pixel_buffer_object
);
7404 params
[0] = (GLint64
)(ctx
->Pack
.BufferObj
->Name
);
7406 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT
:
7407 CHECK_EXT1(EXT_pixel_buffer_object
);
7408 params
[0] = (GLint64
)(ctx
->Unpack
.BufferObj
->Name
);
7410 case GL_VERTEX_PROGRAM_ARB
:
7411 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7412 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.Enabled
);
7414 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB
:
7415 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7416 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.PointSizeEnabled
);
7418 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB
:
7419 CHECK_EXT2(ARB_vertex_program
, NV_vertex_program
);
7420 params
[0] = BOOLEAN_TO_INT64(ctx
->VertexProgram
.TwoSideEnabled
);
7422 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB
:
7423 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7424 params
[0] = (GLint64
)(ctx
->Const
.MaxProgramMatrixStackDepth
);
7426 case GL_MAX_PROGRAM_MATRICES_ARB
:
7427 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7428 params
[0] = (GLint64
)(ctx
->Const
.MaxProgramMatrices
);
7430 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB
:
7431 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_vertex_program
);
7432 params
[0] = BOOLEAN_TO_INT64(ctx
->CurrentStack
->Depth
+ 1);
7434 case GL_CURRENT_MATRIX_ARB
:
7435 CHECK_EXT3(ARB_vertex_program
, ARB_fragment_program
, NV_fragment_program
);
7437 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
7438 params
[0] = IROUND64(matrix
[0]);
7439 params
[1] = IROUND64(matrix
[1]);
7440 params
[2] = IROUND64(matrix
[2]);
7441 params
[3] = IROUND64(matrix
[3]);
7442 params
[4] = IROUND64(matrix
[4]);
7443 params
[5] = IROUND64(matrix
[5]);
7444 params
[6] = IROUND64(matrix
[6]);
7445 params
[7] = IROUND64(matrix
[7]);
7446 params
[8] = IROUND64(matrix
[8]);
7447 params
[9] = IROUND64(matrix
[9]);
7448 params
[10] = IROUND64(matrix
[10]);
7449 params
[11] = IROUND64(matrix
[11]);
7450 params
[12] = IROUND64(matrix
[12]);
7451 params
[13] = IROUND64(matrix
[13]);
7452 params
[14] = IROUND64(matrix
[14]);
7453 params
[15] = IROUND64(matrix
[15]);
7456 case GL_TRANSPOSE_CURRENT_MATRIX_ARB
:
7457 CHECK_EXT2(ARB_vertex_program
, ARB_fragment_program
);
7459 const GLfloat
*matrix
= ctx
->CurrentStack
->Top
->m
;
7460 params
[0] = IROUND64(matrix
[0]);
7461 params
[1] = IROUND64(matrix
[4]);
7462 params
[2] = IROUND64(matrix
[8]);
7463 params
[3] = IROUND64(matrix
[12]);
7464 params
[4] = IROUND64(matrix
[1]);
7465 params
[5] = IROUND64(matrix
[5]);
7466 params
[6] = IROUND64(matrix
[9]);
7467 params
[7] = IROUND64(matrix
[13]);
7468 params
[8] = IROUND64(matrix
[2]);
7469 params
[9] = IROUND64(matrix
[6]);
7470 params
[10] = IROUND64(matrix
[10]);
7471 params
[11] = IROUND64(matrix
[14]);
7472 params
[12] = IROUND64(matrix
[3]);
7473 params
[13] = IROUND64(matrix
[7]);
7474 params
[14] = IROUND64(matrix
[11]);
7475 params
[15] = IROUND64(matrix
[15]);
7478 case GL_MAX_VERTEX_ATTRIBS_ARB
:
7479 CHECK_EXT1(ARB_vertex_program
);
7480 params
[0] = (GLint64
)(ctx
->Const
.VertexProgram
.MaxAttribs
);
7482 case GL_PROGRAM_ERROR_POSITION_ARB
:
7483 CHECK_EXT4(NV_vertex_program
, ARB_vertex_program
, NV_fragment_program
, ARB_fragment_program
);
7484 params
[0] = (GLint64
)(ctx
->Program
.ErrorPos
);
7486 case GL_FRAGMENT_PROGRAM_ARB
:
7487 CHECK_EXT1(ARB_fragment_program
);
7488 params
[0] = BOOLEAN_TO_INT64(ctx
->FragmentProgram
.Enabled
);
7490 case GL_MAX_TEXTURE_COORDS_ARB
:
7491 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
7492 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureCoordUnits
);
7494 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB
:
7495 CHECK_EXT2(ARB_fragment_program
, NV_fragment_program
);
7496 params
[0] = (GLint64
)(ctx
->Const
.MaxTextureImageUnits
);
7498 case GL_DEPTH_BOUNDS_TEST_EXT
:
7499 CHECK_EXT1(EXT_depth_bounds_test
);
7500 params
[0] = BOOLEAN_TO_INT64(ctx
->Depth
.BoundsTest
);
7502 case GL_DEPTH_BOUNDS_EXT
:
7503 CHECK_EXT1(EXT_depth_bounds_test
);
7504 params
[0] = IROUND64(ctx
->Depth
.BoundsMin
);
7505 params
[1] = IROUND64(ctx
->Depth
.BoundsMax
);
7507 case GL_DEPTH_CLAMP
:
7508 CHECK_EXT1(ARB_depth_clamp
);
7509 params
[0] = BOOLEAN_TO_INT64(ctx
->Transform
.DepthClamp
);
7511 case GL_MAX_DRAW_BUFFERS_ARB
:
7512 params
[0] = (GLint64
)(ctx
->Const
.MaxDrawBuffers
);
7514 case GL_DRAW_BUFFER0_ARB
:
7515 params
[0] = ENUM_TO_INT64(ctx
->DrawBuffer
->ColorDrawBuffer
[0]);
7517 case GL_DRAW_BUFFER1_ARB
:
7520 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7521 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7524 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[1];
7525 params
[0] = ENUM_TO_INT64(buffer
);
7528 case GL_DRAW_BUFFER2_ARB
:
7531 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7532 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7535 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[2];
7536 params
[0] = ENUM_TO_INT64(buffer
);
7539 case GL_DRAW_BUFFER3_ARB
:
7542 if (pname
- GL_DRAW_BUFFER0_ARB
>= ctx
->Const
.MaxDrawBuffers
) {
7543 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGet(GL_DRAW_BUFFERx_ARB)");
7546 buffer
= ctx
->DrawBuffer
->ColorDrawBuffer
[3];
7547 params
[0] = ENUM_TO_INT64(buffer
);
7550 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES
:
7551 CHECK_EXT1(OES_read_format
);
7552 if (ctx
->NewState
& _NEW_BUFFERS
)
7553 _mesa_update_state(ctx
);
7554 params
[0] = (GLint64
)(_mesa_get_color_read_type(ctx
));
7556 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
:
7557 CHECK_EXT1(OES_read_format
);
7558 if (ctx
->NewState
& _NEW_BUFFERS
)
7559 _mesa_update_state(ctx
);
7560 params
[0] = (GLint64
)(_mesa_get_color_read_format(ctx
));
7562 case GL_NUM_FRAGMENT_REGISTERS_ATI
:
7563 CHECK_EXT1(ATI_fragment_shader
);
7564 params
[0] = (GLint64
)(6);
7566 case GL_NUM_FRAGMENT_CONSTANTS_ATI
:
7567 CHECK_EXT1(ATI_fragment_shader
);
7568 params
[0] = (GLint64
)(8);
7570 case GL_NUM_PASSES_ATI
:
7571 CHECK_EXT1(ATI_fragment_shader
);
7572 params
[0] = (GLint64
)(2);
7574 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI
:
7575 CHECK_EXT1(ATI_fragment_shader
);
7576 params
[0] = (GLint64
)(8);
7578 case GL_NUM_INSTRUCTIONS_TOTAL_ATI
:
7579 CHECK_EXT1(ATI_fragment_shader
);
7580 params
[0] = (GLint64
)(16);
7582 case GL_COLOR_ALPHA_PAIRING_ATI
:
7583 CHECK_EXT1(ATI_fragment_shader
);
7584 params
[0] = BOOLEAN_TO_INT64(GL_TRUE
);
7586 case GL_NUM_LOOPBACK_COMPONENTS_ATI
:
7587 CHECK_EXT1(ATI_fragment_shader
);
7588 params
[0] = (GLint64
)(3);
7590 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI
:
7591 CHECK_EXT1(ATI_fragment_shader
);
7592 params
[0] = (GLint64
)(3);
7594 case GL_STENCIL_BACK_FUNC
:
7595 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.Function
[1]);
7597 case GL_STENCIL_BACK_VALUE_MASK
:
7598 params
[0] = (GLint64
)(ctx
->Stencil
.ValueMask
[1]);
7600 case GL_STENCIL_BACK_WRITEMASK
:
7601 params
[0] = (GLint64
)(ctx
->Stencil
.WriteMask
[1]);
7603 case GL_STENCIL_BACK_REF
:
7604 params
[0] = (GLint64
)(ctx
->Stencil
.Ref
[1]);
7606 case GL_STENCIL_BACK_FAIL
:
7607 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.FailFunc
[1]);
7609 case GL_STENCIL_BACK_PASS_DEPTH_FAIL
:
7610 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZFailFunc
[1]);
7612 case GL_STENCIL_BACK_PASS_DEPTH_PASS
:
7613 params
[0] = ENUM_TO_INT64(ctx
->Stencil
.ZPassFunc
[1]);
7615 case GL_FRAMEBUFFER_BINDING_EXT
:
7616 CHECK_EXT1(EXT_framebuffer_object
);
7617 params
[0] = (GLint64
)(ctx
->DrawBuffer
->Name
);
7619 case GL_RENDERBUFFER_BINDING_EXT
:
7620 CHECK_EXT1(EXT_framebuffer_object
);
7621 params
[0] = (GLint64
)(ctx
->CurrentRenderbuffer
? ctx
->CurrentRenderbuffer
->Name
: 0);
7623 case GL_MAX_COLOR_ATTACHMENTS_EXT
:
7624 CHECK_EXT1(EXT_framebuffer_object
);
7625 params
[0] = (GLint64
)(ctx
->Const
.MaxColorAttachments
);
7627 case GL_MAX_RENDERBUFFER_SIZE_EXT
:
7628 CHECK_EXT1(EXT_framebuffer_object
);
7629 params
[0] = (GLint64
)(ctx
->Const
.MaxRenderbufferSize
);
7631 case GL_READ_FRAMEBUFFER_BINDING_EXT
:
7632 CHECK_EXT1(EXT_framebuffer_blit
);
7633 params
[0] = (GLint64
)(ctx
->ReadBuffer
->Name
);
7635 case GL_PROVOKING_VERTEX_EXT
:
7636 CHECK_EXT1(EXT_provoking_vertex
);
7637 params
[0] = BOOLEAN_TO_INT64(ctx
->Light
.ProvokingVertex
);
7639 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT
:
7640 CHECK_EXT1(EXT_provoking_vertex
);
7641 params
[0] = BOOLEAN_TO_INT64(ctx
->Const
.QuadsFollowProvokingVertexConvention
);
7643 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB
:
7644 CHECK_EXT1(ARB_fragment_shader
);
7645 params
[0] = (GLint64
)(ctx
->Const
.FragmentProgram
.MaxUniformComponents
);
7647 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB
:
7648 CHECK_EXT1(ARB_fragment_shader
);
7649 params
[0] = ENUM_TO_INT64(ctx
->Hint
.FragmentShaderDerivative
);
7651 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB
:
7652 CHECK_EXT1(ARB_vertex_shader
);
7653 params
[0] = (GLint64
)(ctx
->Const
.VertexProgram
.MaxUniformComponents
);
7655 case GL_MAX_VARYING_FLOATS_ARB
:
7656 CHECK_EXT1(ARB_vertex_shader
);
7657 params
[0] = (GLint64
)(ctx
->Const
.MaxVarying
* 4);
7659 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
:
7660 CHECK_EXT1(ARB_vertex_shader
);
7661 params
[0] = (GLint64
)(ctx
->Const
.MaxVertexTextureImageUnits
);
7663 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB
:
7664 CHECK_EXT1(ARB_vertex_shader
);
7665 params
[0] = (GLint64
)(ctx
->Const
.MaxCombinedTextureImageUnits
);
7667 case GL_CURRENT_PROGRAM
:
7668 CHECK_EXT1(ARB_shader_objects
);
7669 params
[0] = (GLint64
)(ctx
->Shader
.CurrentProgram
? ctx
->Shader
.CurrentProgram
->Name
: 0);
7671 case GL_MAX_SAMPLES
:
7672 CHECK_EXT1(ARB_framebuffer_object
);
7673 params
[0] = (GLint64
)(ctx
->Const
.MaxSamples
);
7675 case GL_VERTEX_ARRAY_BINDING_APPLE
:
7676 CHECK_EXT1(APPLE_vertex_array_object
);
7677 params
[0] = (GLint64
)(ctx
->Array
.ArrayObj
->Name
);
7679 case GL_TEXTURE_CUBE_MAP_SEAMLESS
:
7680 CHECK_EXT1(ARB_seamless_cube_map
);
7681 params
[0] = BOOLEAN_TO_INT64(ctx
->Texture
.CubeMapSeamless
);
7683 case GL_MAX_SERVER_WAIT_TIMEOUT
:
7684 CHECK_EXT1(ARB_sync
);
7685 params
[0] = ctx
->Const
.MaxServerWaitTimeout
;
7687 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7688 CHECK_EXT1(EXT_transform_feedback
);
7689 params
[0] = (GLint64
)(ctx
->TransformFeedback
.CurrentBuffer
->Name
);
7691 case GL_RASTERIZER_DISCARD
:
7692 CHECK_EXT1(EXT_transform_feedback
);
7693 params
[0] = BOOLEAN_TO_INT64(ctx
->TransformFeedback
.RasterDiscard
);
7695 case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS
:
7696 CHECK_EXT1(EXT_transform_feedback
);
7697 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackInterleavedComponents
);
7699 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS
:
7700 CHECK_EXT1(EXT_transform_feedback
);
7701 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackSeparateAttribs
);
7703 case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS
:
7704 CHECK_EXT1(EXT_transform_feedback
);
7705 params
[0] = (GLint64
)(ctx
->Const
.MaxTransformFeedbackSeparateComponents
);
7707 case GL_NUM_EXTENSIONS
:
7709 params
[0] = (GLint64
)(_mesa_get_extension_count(ctx
));
7711 case GL_MAJOR_VERSION
:
7713 params
[0] = (GLint64
)(ctx
->VersionMajor
);
7715 case GL_MINOR_VERSION
:
7717 params
[0] = (GLint64
)(ctx
->VersionMinor
);
7719 case GL_CONTEXT_FLAGS
:
7721 params
[0] = (GLint64
)(ctx
->Const
.ContextFlags
);
7723 case GL_PRIMITIVE_RESTART
:
7725 params
[0] = BOOLEAN_TO_INT64(ctx
->Array
.PrimitiveRestart
);
7727 case GL_PRIMITIVE_RESTART_INDEX
:
7729 params
[0] = (GLint64
)(ctx
->Array
.RestartIndex
);
7731 case GL_CONTEXT_PROFILE_MASK
:
7733 params
[0] = (GLint64
)(ctx
->Const
.ProfileMask
);
7736 goto invalid_enum_error
;
7741 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetInteger64v(pname=0x%x)", pname
);
7743 #endif /* FEATURE_ARB_sync */
7747 _mesa_GetDoublev( GLenum pname
, GLdouble
*params
)
7749 const GLfloat magic
= -1234.5F
;
7756 /* Init temp array to magic numbers so we can figure out how many values
7757 * are returned by the GetFloatv() call.
7759 for (i
= 0; i
< 16; i
++)
7762 _mesa_GetFloatv(pname
, values
);
7764 for (i
= 0; i
< 16 && values
[i
] != magic
; i
++)
7765 params
[i
] = (GLdouble
) values
[i
];
7769 _mesa_GetBooleanIndexedv( GLenum pname
, GLuint index
, GLboolean
*params
)
7771 GET_CURRENT_CONTEXT(ctx
);
7772 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
7773 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7781 CHECK_EXT1(EXT_draw_buffers2
);
7782 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7783 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7786 params
[0] = INT_TO_BOOLEAN(((ctx
->Color
.BlendEnabled
>> index
) & 1));
7788 case GL_COLOR_WRITEMASK
:
7789 CHECK_EXT1(EXT_draw_buffers2
);
7790 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7791 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7794 params
[0] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0);
7795 params
[1] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0);
7796 params
[2] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0);
7797 params
[3] = INT_TO_BOOLEAN(ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0);
7799 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
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] = INT64_TO_BOOLEAN(ctx
->TransformFeedback
.Offset
[index
]);
7807 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7808 CHECK_EXT1(EXT_transform_feedback
);
7809 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7810 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7813 params
[0] = INT64_TO_BOOLEAN(ctx
->TransformFeedback
.Size
[index
]);
7815 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7816 CHECK_EXT1(EXT_transform_feedback
);
7817 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7818 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetBooleanIndexedv(index=%u), index", pname
);
7821 params
[0] = INT_TO_BOOLEAN(ctx
->TransformFeedback
.Buffers
[index
]->Name
);
7824 goto invalid_enum_error
;
7829 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetBooleanIndexedv(pname=0x%x)", pname
);
7833 _mesa_GetIntegerIndexedv( GLenum pname
, GLuint index
, GLint
*params
)
7835 GET_CURRENT_CONTEXT(ctx
);
7836 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
7837 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7845 CHECK_EXT1(EXT_draw_buffers2
);
7846 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7847 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7850 params
[0] = ((ctx
->Color
.BlendEnabled
>> index
) & 1);
7852 case GL_COLOR_WRITEMASK
:
7853 CHECK_EXT1(EXT_draw_buffers2
);
7854 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7855 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7858 params
[0] = ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0;
7859 params
[1] = ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0;
7860 params
[2] = ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0;
7861 params
[3] = ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0;
7863 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
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] = INT64_TO_INT(ctx
->TransformFeedback
.Offset
[index
]);
7871 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7872 CHECK_EXT1(EXT_transform_feedback
);
7873 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7874 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7877 params
[0] = INT64_TO_INT(ctx
->TransformFeedback
.Size
[index
]);
7879 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7880 CHECK_EXT1(EXT_transform_feedback
);
7881 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7882 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetIntegerIndexedv(index=%u), index", pname
);
7885 params
[0] = ctx
->TransformFeedback
.Buffers
[index
]->Name
;
7888 goto invalid_enum_error
;
7893 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetIntegerIndexedv(pname=0x%x)", pname
);
7896 #if FEATURE_ARB_sync
7898 _mesa_GetInteger64Indexedv( GLenum pname
, GLuint index
, GLint64
*params
)
7900 GET_CURRENT_CONTEXT(ctx
);
7901 const GLuint version
= ctx
->VersionMajor
* 10 + ctx
->VersionMinor
;
7902 ASSERT_OUTSIDE_BEGIN_END(ctx
);
7910 CHECK_EXT1(EXT_draw_buffers2
);
7911 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7912 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7915 params
[0] = (GLint64
)(((ctx
->Color
.BlendEnabled
>> index
) & 1));
7917 case GL_COLOR_WRITEMASK
:
7918 CHECK_EXT1(EXT_draw_buffers2
);
7919 if (index
>= ctx
->Const
.MaxDrawBuffers
) {
7920 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7923 params
[0] = (GLint64
)(ctx
->Color
.ColorMask
[index
][RCOMP
] ? 1 : 0);
7924 params
[1] = (GLint64
)(ctx
->Color
.ColorMask
[index
][GCOMP
] ? 1 : 0);
7925 params
[2] = (GLint64
)(ctx
->Color
.ColorMask
[index
][BCOMP
] ? 1 : 0);
7926 params
[3] = (GLint64
)(ctx
->Color
.ColorMask
[index
][ACOMP
] ? 1 : 0);
7928 case GL_TRANSFORM_FEEDBACK_BUFFER_START
:
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] = ctx
->TransformFeedback
.Offset
[index
];
7936 case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE
:
7937 CHECK_EXT1(EXT_transform_feedback
);
7938 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7939 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7942 params
[0] = ctx
->TransformFeedback
.Size
[index
];
7944 case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING
:
7945 CHECK_EXT1(EXT_transform_feedback
);
7946 if (index
>= ctx
->Const
.MaxTransformFeedbackSeparateAttribs
) {
7947 _mesa_error(ctx
, GL_INVALID_VALUE
, "glGetInteger64Indexedv(index=%u), index", pname
);
7950 params
[0] = (GLint64
)(ctx
->TransformFeedback
.Buffers
[index
]->Name
);
7953 goto invalid_enum_error
;
7958 _mesa_error(ctx
, GL_INVALID_ENUM
, "glGetInteger64Indexedv(pname=0x%x)", pname
);
7960 #endif /* FEATURE_ARB_sync */