ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

get.c
Go to the documentation of this file.
00001 
00002 /***
00003  ***  NOTE!!!  DO NOT EDIT THIS FILE!!!  IT IS GENERATED BY get_gen.py
00004  ***/
00005 
00006 #include "glheader.h"
00007 #include "context.h"
00008 #include "enable.h"
00009 #include "extensions.h"
00010 #include "fbobject.h"
00011 #include "get.h"
00012 #include "macros.h"
00013 #include "mtypes.h"
00014 #include "state.h"
00015 #include "texcompress.h"
00016 
00017 
00018 #define FLOAT_TO_BOOLEAN(X)   ( (X) ? GL_TRUE : GL_FALSE )
00019 
00020 #define INT_TO_BOOLEAN(I)     ( (I) ? GL_TRUE : GL_FALSE )
00021 
00022 #define BOOLEAN_TO_INT(B)     ( (GLint) (B) )
00023 #define BOOLEAN_TO_FLOAT(B)   ( (B) ? 1.0F : 0.0F )
00024 
00025 
00026 /*
00027  * Check if named extension is enabled, if not generate error and return.
00028  */
00029 #define CHECK_EXT1(EXT1, FUNC)                                         \
00030    if (!ctx->Extensions.EXT1) {                                        \
00031       _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname);  \
00032       return;                                                          \
00033    }
00034 
00035 /*
00036  * Check if either of two extensions is enabled.
00037  */
00038 #define CHECK_EXT2(EXT1, EXT2, FUNC)                                   \
00039    if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) {               \
00040       _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname);  \
00041       return;                                                          \
00042    }
00043 
00044 /*
00045  * Check if either of three extensions is enabled.
00046  */
00047 #define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC)                             \
00048    if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 &&               \
00049        !ctx->Extensions.EXT3) {                                        \
00050       _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname);  \
00051       return;                                                          \
00052    }
00053 
00054 /*
00055  * Check if either of four extensions is enabled.
00056  */
00057 #define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC)                       \
00058    if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 &&               \
00059        !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) {               \
00060       _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname);  \
00061       return;                                                          \
00062    }
00063 
00064 
00065 void GLAPIENTRY
00066 _mesa_GetBooleanv( GLenum pname, GLboolean *params )
00067 {
00068    GET_CURRENT_CONTEXT(ctx);
00069    ASSERT_OUTSIDE_BEGIN_END(ctx);
00070 
00071    if (!params)
00072       return;
00073 
00074    if (ctx->NewState)
00075       _mesa_update_state(ctx);
00076 
00077    if (ctx->Driver.GetBooleanv &&
00078        ctx->Driver.GetBooleanv(ctx, pname, params))
00079       return;
00080 
00081    switch (pname) {
00082       case GL_ACCUM_RED_BITS:
00083          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits);
00084          break;
00085       case GL_ACCUM_GREEN_BITS:
00086          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits);
00087          break;
00088       case GL_ACCUM_BLUE_BITS:
00089          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits);
00090          break;
00091       case GL_ACCUM_ALPHA_BITS:
00092          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits);
00093          break;
00094       case GL_ACCUM_CLEAR_VALUE:
00095          params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]);
00096          params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]);
00097          params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]);
00098          params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]);
00099          break;
00100       case GL_ALPHA_BIAS:
00101          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias);
00102          break;
00103       case GL_ALPHA_BITS:
00104          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits);
00105          break;
00106       case GL_ALPHA_SCALE:
00107          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale);
00108          break;
00109       case GL_ALPHA_TEST:
00110          params[0] = ctx->Color.AlphaEnabled;
00111          break;
00112       case GL_ALPHA_TEST_FUNC:
00113          params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc);
00114          break;
00115       case GL_ALPHA_TEST_REF:
00116          params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef);
00117          break;
00118       case GL_ATTRIB_STACK_DEPTH:
00119          params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth);
00120          break;
00121       case GL_AUTO_NORMAL:
00122          params[0] = ctx->Eval.AutoNormal;
00123          break;
00124       case GL_AUX_BUFFERS:
00125          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers);
00126          break;
00127       case GL_BLEND:
00128          params[0] = ctx->Color.BlendEnabled;
00129          break;
00130       case GL_BLEND_DST:
00131          params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
00132          break;
00133       case GL_BLEND_SRC:
00134          params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
00135          break;
00136       case GL_BLEND_SRC_RGB_EXT:
00137          params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
00138          break;
00139       case GL_BLEND_DST_RGB_EXT:
00140          params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
00141          break;
00142       case GL_BLEND_SRC_ALPHA_EXT:
00143          params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA);
00144          break;
00145       case GL_BLEND_DST_ALPHA_EXT:
00146          params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA);
00147          break;
00148       case GL_BLEND_EQUATION:
00149          params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB );
00150          break;
00151       case GL_BLEND_EQUATION_ALPHA_EXT:
00152          params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA );
00153          break;
00154       case GL_BLEND_COLOR_EXT:
00155          params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]);
00156          params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]);
00157          params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]);
00158          params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]);
00159          break;
00160       case GL_BLUE_BIAS:
00161          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias);
00162          break;
00163       case GL_BLUE_BITS:
00164          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits);
00165          break;
00166       case GL_BLUE_SCALE:
00167          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale);
00168          break;
00169       case GL_CLIENT_ATTRIB_STACK_DEPTH:
00170          params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth);
00171          break;
00172       case GL_CLIP_PLANE0:
00173          params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1;
00174          break;
00175       case GL_CLIP_PLANE1:
00176          params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1;
00177          break;
00178       case GL_CLIP_PLANE2:
00179          params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1;
00180          break;
00181       case GL_CLIP_PLANE3:
00182          params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1;
00183          break;
00184       case GL_CLIP_PLANE4:
00185          params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1;
00186          break;
00187       case GL_CLIP_PLANE5:
00188          params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1;
00189          break;
00190       case GL_COLOR_CLEAR_VALUE:
00191          params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]);
00192          params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]);
00193          params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]);
00194          params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]);
00195          break;
00196       case GL_COLOR_MATERIAL:
00197          params[0] = ctx->Light.ColorMaterialEnabled;
00198          break;
00199       case GL_COLOR_MATERIAL_FACE:
00200          params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace);
00201          break;
00202       case GL_COLOR_MATERIAL_PARAMETER:
00203          params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode);
00204          break;
00205       case GL_COLOR_WRITEMASK:
00206          params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
00207          params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
00208          params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
00209          params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
00210          break;
00211       case GL_CULL_FACE:
00212          params[0] = ctx->Polygon.CullFlag;
00213          break;
00214       case GL_CULL_FACE_MODE:
00215          params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode);
00216          break;
00217       case GL_CURRENT_COLOR:
00218          {
00219          FLUSH_CURRENT(ctx, 0);
00220          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
00221          params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
00222          params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
00223          params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
00224          }
00225          break;
00226       case GL_CURRENT_INDEX:
00227          {
00228          FLUSH_CURRENT(ctx, 0);
00229          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
00230          }
00231          break;
00232       case GL_CURRENT_NORMAL:
00233          {
00234          FLUSH_CURRENT(ctx, 0);
00235          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
00236          params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
00237          params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
00238          }
00239          break;
00240       case GL_CURRENT_RASTER_COLOR:
00241          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]);
00242          params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]);
00243          params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]);
00244          params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]);
00245          break;
00246       case GL_CURRENT_RASTER_DISTANCE:
00247          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance);
00248          break;
00249       case GL_CURRENT_RASTER_INDEX:
00250          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterIndex);
00251          break;
00252       case GL_CURRENT_RASTER_POSITION:
00253          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]);
00254          params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]);
00255          params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]);
00256          params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]);
00257          break;
00258       case GL_CURRENT_RASTER_SECONDARY_COLOR:
00259          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]);
00260          params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]);
00261          params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]);
00262          params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]);
00263          break;
00264       case GL_CURRENT_RASTER_TEXTURE_COORDS:
00265          {
00266          const GLuint texUnit = ctx->Texture.CurrentUnit;
00267          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][0]);
00268          params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][1]);
00269          params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][2]);
00270          params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][3]);
00271          }
00272          break;
00273       case GL_CURRENT_RASTER_POSITION_VALID:
00274          params[0] = ctx->Current.RasterPosValid;
00275          break;
00276       case GL_CURRENT_TEXTURE_COORDS:
00277          {
00278          const GLuint texUnit = ctx->Texture.CurrentUnit;
00279          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
00280          params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
00281          params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
00282          params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
00283          }
00284          break;
00285       case GL_DEPTH_BIAS:
00286          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias);
00287          break;
00288       case GL_DEPTH_BITS:
00289          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits);
00290          break;
00291       case GL_DEPTH_CLEAR_VALUE:
00292          params[0] = FLOAT_TO_BOOLEAN(((GLfloat) ctx->Depth.Clear));
00293          break;
00294       case GL_DEPTH_FUNC:
00295          params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func);
00296          break;
00297       case GL_DEPTH_RANGE:
00298          params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near);
00299          params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far);
00300          break;
00301       case GL_DEPTH_SCALE:
00302          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale);
00303          break;
00304       case GL_DEPTH_TEST:
00305          params[0] = ctx->Depth.Test;
00306          break;
00307       case GL_DEPTH_WRITEMASK:
00308          params[0] = ctx->Depth.Mask;
00309          break;
00310       case GL_DITHER:
00311          params[0] = ctx->Color.DitherFlag;
00312          break;
00313       case GL_DOUBLEBUFFER:
00314          params[0] = ctx->DrawBuffer->Visual.doubleBufferMode;
00315          break;
00316       case GL_DRAW_BUFFER:
00317          params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
00318          break;
00319       case GL_EDGE_FLAG:
00320          {
00321          FLUSH_CURRENT(ctx, 0);
00322          params[0] = (ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0);
00323          }
00324          break;
00325       case GL_FEEDBACK_BUFFER_SIZE:
00326          params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize);
00327          break;
00328       case GL_FEEDBACK_BUFFER_TYPE:
00329          params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type);
00330          break;
00331       case GL_FOG:
00332          params[0] = ctx->Fog.Enabled;
00333          break;
00334       case GL_FOG_COLOR:
00335          params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]);
00336          params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]);
00337          params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]);
00338          params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]);
00339          break;
00340       case GL_FOG_DENSITY:
00341          params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density);
00342          break;
00343       case GL_FOG_END:
00344          params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End);
00345          break;
00346       case GL_FOG_HINT:
00347          params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog);
00348          break;
00349       case GL_FOG_INDEX:
00350          params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index);
00351          break;
00352       case GL_FOG_MODE:
00353          params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode);
00354          break;
00355       case GL_FOG_START:
00356          params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start);
00357          break;
00358       case GL_FRONT_FACE:
00359          params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace);
00360          break;
00361       case GL_GREEN_BIAS:
00362          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias);
00363          break;
00364       case GL_GREEN_BITS:
00365          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits);
00366          break;
00367       case GL_GREEN_SCALE:
00368          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale);
00369          break;
00370       case GL_INDEX_BITS:
00371          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits);
00372          break;
00373       case GL_INDEX_CLEAR_VALUE:
00374          params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex);
00375          break;
00376       case GL_INDEX_MODE:
00377          params[0] = !ctx->DrawBuffer->Visual.rgbMode;
00378          break;
00379       case GL_INDEX_OFFSET:
00380          params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset);
00381          break;
00382       case GL_INDEX_SHIFT:
00383          params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift);
00384          break;
00385       case GL_INDEX_WRITEMASK:
00386          params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask);
00387          break;
00388       case GL_LIGHT0:
00389          params[0] = ctx->Light.Light[0].Enabled;
00390          break;
00391       case GL_LIGHT1:
00392          params[0] = ctx->Light.Light[1].Enabled;
00393          break;
00394       case GL_LIGHT2:
00395          params[0] = ctx->Light.Light[2].Enabled;
00396          break;
00397       case GL_LIGHT3:
00398          params[0] = ctx->Light.Light[3].Enabled;
00399          break;
00400       case GL_LIGHT4:
00401          params[0] = ctx->Light.Light[4].Enabled;
00402          break;
00403       case GL_LIGHT5:
00404          params[0] = ctx->Light.Light[5].Enabled;
00405          break;
00406       case GL_LIGHT6:
00407          params[0] = ctx->Light.Light[6].Enabled;
00408          break;
00409       case GL_LIGHT7:
00410          params[0] = ctx->Light.Light[7].Enabled;
00411          break;
00412       case GL_LIGHTING:
00413          params[0] = ctx->Light.Enabled;
00414          break;
00415       case GL_LIGHT_MODEL_AMBIENT:
00416          params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]);
00417          params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]);
00418          params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]);
00419          params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]);
00420          break;
00421       case GL_LIGHT_MODEL_COLOR_CONTROL:
00422          params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl);
00423          break;
00424       case GL_LIGHT_MODEL_LOCAL_VIEWER:
00425          params[0] = ctx->Light.Model.LocalViewer;
00426          break;
00427       case GL_LIGHT_MODEL_TWO_SIDE:
00428          params[0] = ctx->Light.Model.TwoSide;
00429          break;
00430       case GL_LINE_SMOOTH:
00431          params[0] = ctx->Line.SmoothFlag;
00432          break;
00433       case GL_LINE_SMOOTH_HINT:
00434          params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth);
00435          break;
00436       case GL_LINE_STIPPLE:
00437          params[0] = ctx->Line.StippleFlag;
00438          break;
00439       case GL_LINE_STIPPLE_PATTERN:
00440          params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern);
00441          break;
00442       case GL_LINE_STIPPLE_REPEAT:
00443          params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor);
00444          break;
00445       case GL_LINE_WIDTH:
00446          params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width);
00447          break;
00448       case GL_LINE_WIDTH_GRANULARITY:
00449          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity);
00450          break;
00451       case GL_LINE_WIDTH_RANGE:
00452          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA);
00453          params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA);
00454          break;
00455       case GL_ALIASED_LINE_WIDTH_RANGE:
00456          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth);
00457          params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth);
00458          break;
00459       case GL_LIST_BASE:
00460          params[0] = INT_TO_BOOLEAN(ctx->List.ListBase);
00461          break;
00462       case GL_LIST_INDEX:
00463          params[0] = INT_TO_BOOLEAN(ctx->ListState.CurrentListNum);
00464          break;
00465       case GL_LIST_MODE:
00466          {
00467          GLenum mode;
00468          if (!ctx->CompileFlag)
00469             mode = 0;
00470          else if (ctx->ExecuteFlag)
00471             mode = GL_COMPILE_AND_EXECUTE;
00472          else
00473             mode = GL_COMPILE;
00474          params[0] = ENUM_TO_BOOLEAN(mode);
00475          }
00476          break;
00477       case GL_INDEX_LOGIC_OP:
00478          params[0] = ctx->Color.IndexLogicOpEnabled;
00479          break;
00480       case GL_COLOR_LOGIC_OP:
00481          params[0] = ctx->Color.ColorLogicOpEnabled;
00482          break;
00483       case GL_LOGIC_OP_MODE:
00484          params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp);
00485          break;
00486       case GL_MAP1_COLOR_4:
00487          params[0] = ctx->Eval.Map1Color4;
00488          break;
00489       case GL_MAP1_GRID_DOMAIN:
00490          params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1);
00491          params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2);
00492          break;
00493       case GL_MAP1_GRID_SEGMENTS:
00494          params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un);
00495          break;
00496       case GL_MAP1_INDEX:
00497          params[0] = ctx->Eval.Map1Index;
00498          break;
00499       case GL_MAP1_NORMAL:
00500          params[0] = ctx->Eval.Map1Normal;
00501          break;
00502       case GL_MAP1_TEXTURE_COORD_1:
00503          params[0] = ctx->Eval.Map1TextureCoord1;
00504          break;
00505       case GL_MAP1_TEXTURE_COORD_2:
00506          params[0] = ctx->Eval.Map1TextureCoord2;
00507          break;
00508       case GL_MAP1_TEXTURE_COORD_3:
00509          params[0] = ctx->Eval.Map1TextureCoord3;
00510          break;
00511       case GL_MAP1_TEXTURE_COORD_4:
00512          params[0] = ctx->Eval.Map1TextureCoord4;
00513          break;
00514       case GL_MAP1_VERTEX_3:
00515          params[0] = ctx->Eval.Map1Vertex3;
00516          break;
00517       case GL_MAP1_VERTEX_4:
00518          params[0] = ctx->Eval.Map1Vertex4;
00519          break;
00520       case GL_MAP2_COLOR_4:
00521          params[0] = ctx->Eval.Map2Color4;
00522          break;
00523       case GL_MAP2_GRID_DOMAIN:
00524          params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1);
00525          params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2);
00526          params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1);
00527          params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2);
00528          break;
00529       case GL_MAP2_GRID_SEGMENTS:
00530          params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un);
00531          params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn);
00532          break;
00533       case GL_MAP2_INDEX:
00534          params[0] = ctx->Eval.Map2Index;
00535          break;
00536       case GL_MAP2_NORMAL:
00537          params[0] = ctx->Eval.Map2Normal;
00538          break;
00539       case GL_MAP2_TEXTURE_COORD_1:
00540          params[0] = ctx->Eval.Map2TextureCoord1;
00541          break;
00542       case GL_MAP2_TEXTURE_COORD_2:
00543          params[0] = ctx->Eval.Map2TextureCoord2;
00544          break;
00545       case GL_MAP2_TEXTURE_COORD_3:
00546          params[0] = ctx->Eval.Map2TextureCoord3;
00547          break;
00548       case GL_MAP2_TEXTURE_COORD_4:
00549          params[0] = ctx->Eval.Map2TextureCoord4;
00550          break;
00551       case GL_MAP2_VERTEX_3:
00552          params[0] = ctx->Eval.Map2Vertex3;
00553          break;
00554       case GL_MAP2_VERTEX_4:
00555          params[0] = ctx->Eval.Map2Vertex4;
00556          break;
00557       case GL_MAP_COLOR:
00558          params[0] = ctx->Pixel.MapColorFlag;
00559          break;
00560       case GL_MAP_STENCIL:
00561          params[0] = ctx->Pixel.MapStencilFlag;
00562          break;
00563       case GL_MATRIX_MODE:
00564          params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode);
00565          break;
00566       case GL_MAX_ATTRIB_STACK_DEPTH:
00567          params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH);
00568          break;
00569       case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
00570          params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH);
00571          break;
00572       case GL_MAX_CLIP_PLANES:
00573          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes);
00574          break;
00575       case GL_MAX_ELEMENTS_VERTICES:
00576          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
00577          break;
00578       case GL_MAX_ELEMENTS_INDICES:
00579          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
00580          break;
00581       case GL_MAX_EVAL_ORDER:
00582          params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER);
00583          break;
00584       case GL_MAX_LIGHTS:
00585          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights);
00586          break;
00587       case GL_MAX_LIST_NESTING:
00588          params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING);
00589          break;
00590       case GL_MAX_MODELVIEW_STACK_DEPTH:
00591          params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH);
00592          break;
00593       case GL_MAX_NAME_STACK_DEPTH:
00594          params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH);
00595          break;
00596       case GL_MAX_PIXEL_MAP_TABLE:
00597          params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE);
00598          break;
00599       case GL_MAX_PROJECTION_STACK_DEPTH:
00600          params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH);
00601          break;
00602       case GL_MAX_TEXTURE_SIZE:
00603          params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1));
00604          break;
00605       case GL_MAX_3D_TEXTURE_SIZE:
00606          params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1));
00607          break;
00608       case GL_MAX_TEXTURE_STACK_DEPTH:
00609          params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH);
00610          break;
00611       case GL_MAX_VIEWPORT_DIMS:
00612          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth);
00613          params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight);
00614          break;
00615       case GL_MODELVIEW_MATRIX:
00616          {
00617          const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
00618          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
00619          params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
00620          params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
00621          params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
00622          params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
00623          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
00624          params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
00625          params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
00626          params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
00627          params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
00628          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
00629          params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
00630          params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
00631          params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
00632          params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
00633          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
00634          }
00635          break;
00636       case GL_MODELVIEW_STACK_DEPTH:
00637          params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1);
00638          break;
00639       case GL_NAME_STACK_DEPTH:
00640          params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth);
00641          break;
00642       case GL_NORMALIZE:
00643          params[0] = ctx->Transform.Normalize;
00644          break;
00645       case GL_PACK_ALIGNMENT:
00646          params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment);
00647          break;
00648       case GL_PACK_LSB_FIRST:
00649          params[0] = ctx->Pack.LsbFirst;
00650          break;
00651       case GL_PACK_ROW_LENGTH:
00652          params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength);
00653          break;
00654       case GL_PACK_SKIP_PIXELS:
00655          params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels);
00656          break;
00657       case GL_PACK_SKIP_ROWS:
00658          params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows);
00659          break;
00660       case GL_PACK_SWAP_BYTES:
00661          params[0] = ctx->Pack.SwapBytes;
00662          break;
00663       case GL_PACK_SKIP_IMAGES_EXT:
00664          params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages);
00665          break;
00666       case GL_PACK_IMAGE_HEIGHT_EXT:
00667          params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight);
00668          break;
00669       case GL_PACK_INVERT_MESA:
00670          params[0] = ctx->Pack.Invert;
00671          break;
00672       case GL_PERSPECTIVE_CORRECTION_HINT:
00673          params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection);
00674          break;
00675       case GL_PIXEL_MAP_A_TO_A_SIZE:
00676          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.AtoA.Size);
00677          break;
00678       case GL_PIXEL_MAP_B_TO_B_SIZE:
00679          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.BtoB.Size);
00680          break;
00681       case GL_PIXEL_MAP_G_TO_G_SIZE:
00682          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.GtoG.Size);
00683          break;
00684       case GL_PIXEL_MAP_I_TO_A_SIZE:
00685          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoA.Size);
00686          break;
00687       case GL_PIXEL_MAP_I_TO_B_SIZE:
00688          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoB.Size);
00689          break;
00690       case GL_PIXEL_MAP_I_TO_G_SIZE:
00691          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoG.Size);
00692          break;
00693       case GL_PIXEL_MAP_I_TO_I_SIZE:
00694          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoI.Size);
00695          break;
00696       case GL_PIXEL_MAP_I_TO_R_SIZE:
00697          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoR.Size);
00698          break;
00699       case GL_PIXEL_MAP_R_TO_R_SIZE:
00700          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.RtoR.Size);
00701          break;
00702       case GL_PIXEL_MAP_S_TO_S_SIZE:
00703          params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.StoS.Size);
00704          break;
00705       case GL_POINT_SIZE:
00706          params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size);
00707          break;
00708       case GL_POINT_SIZE_GRANULARITY:
00709          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity);
00710          break;
00711       case GL_POINT_SIZE_RANGE:
00712          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA);
00713          params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA);
00714          break;
00715       case GL_ALIASED_POINT_SIZE_RANGE:
00716          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize);
00717          params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize);
00718          break;
00719       case GL_POINT_SMOOTH:
00720          params[0] = ctx->Point.SmoothFlag;
00721          break;
00722       case GL_POINT_SMOOTH_HINT:
00723          params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth);
00724          break;
00725       case GL_POINT_SIZE_MIN_EXT:
00726          params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize);
00727          break;
00728       case GL_POINT_SIZE_MAX_EXT:
00729          params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize);
00730          break;
00731       case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
00732          params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold);
00733          break;
00734       case GL_DISTANCE_ATTENUATION_EXT:
00735          params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]);
00736          params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]);
00737          params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]);
00738          break;
00739       case GL_POLYGON_MODE:
00740          params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode);
00741          params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode);
00742          break;
00743       case GL_POLYGON_OFFSET_BIAS_EXT:
00744          params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits);
00745          break;
00746       case GL_POLYGON_OFFSET_FACTOR:
00747          params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor );
00748          break;
00749       case GL_POLYGON_OFFSET_UNITS:
00750          params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits );
00751          break;
00752       case GL_POLYGON_OFFSET_POINT:
00753          params[0] = ctx->Polygon.OffsetPoint;
00754          break;
00755       case GL_POLYGON_OFFSET_LINE:
00756          params[0] = ctx->Polygon.OffsetLine;
00757          break;
00758       case GL_POLYGON_OFFSET_FILL:
00759          params[0] = ctx->Polygon.OffsetFill;
00760          break;
00761       case GL_POLYGON_SMOOTH:
00762          params[0] = ctx->Polygon.SmoothFlag;
00763          break;
00764       case GL_POLYGON_SMOOTH_HINT:
00765          params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth);
00766          break;
00767       case GL_POLYGON_STIPPLE:
00768          params[0] = ctx->Polygon.StippleFlag;
00769          break;
00770       case GL_PROJECTION_MATRIX:
00771          {
00772          const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
00773          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
00774          params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
00775          params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
00776          params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
00777          params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
00778          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
00779          params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
00780          params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
00781          params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
00782          params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
00783          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
00784          params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
00785          params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
00786          params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
00787          params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
00788          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
00789          }
00790          break;
00791       case GL_PROJECTION_STACK_DEPTH:
00792          params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1);
00793          break;
00794       case GL_READ_BUFFER:
00795          params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer);
00796          break;
00797       case GL_RED_BIAS:
00798          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias);
00799          break;
00800       case GL_RED_BITS:
00801          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.redBits);
00802          break;
00803       case GL_RED_SCALE:
00804          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale);
00805          break;
00806       case GL_RENDER_MODE:
00807          params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode);
00808          break;
00809       case GL_RESCALE_NORMAL:
00810          params[0] = ctx->Transform.RescaleNormals;
00811          break;
00812       case GL_RGBA_MODE:
00813          params[0] = ctx->DrawBuffer->Visual.rgbMode;
00814          break;
00815       case GL_SCISSOR_BOX:
00816          params[0] = INT_TO_BOOLEAN(ctx->Scissor.X);
00817          params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y);
00818          params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width);
00819          params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height);
00820          break;
00821       case GL_SCISSOR_TEST:
00822          params[0] = ctx->Scissor.Enabled;
00823          break;
00824       case GL_SELECTION_BUFFER_SIZE:
00825          params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize);
00826          break;
00827       case GL_SHADE_MODEL:
00828          params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel);
00829          break;
00830       case GL_SHARED_TEXTURE_PALETTE_EXT:
00831          params[0] = ctx->Texture.SharedPalette;
00832          break;
00833       case GL_STENCIL_BITS:
00834          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits);
00835          break;
00836       case GL_STENCIL_CLEAR_VALUE:
00837          params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear);
00838          break;
00839       case GL_STENCIL_FAIL:
00840          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
00841          break;
00842       case GL_STENCIL_FUNC:
00843          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
00844          break;
00845       case GL_STENCIL_PASS_DEPTH_FAIL:
00846          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
00847          break;
00848       case GL_STENCIL_PASS_DEPTH_PASS:
00849          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
00850          break;
00851       case GL_STENCIL_REF:
00852          params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
00853          break;
00854       case GL_STENCIL_TEST:
00855          params[0] = ctx->Stencil.Enabled;
00856          break;
00857       case GL_STENCIL_VALUE_MASK:
00858          params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
00859          break;
00860       case GL_STENCIL_WRITEMASK:
00861          params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
00862          break;
00863       case GL_STEREO:
00864          params[0] = ctx->DrawBuffer->Visual.stereoMode;
00865          break;
00866       case GL_SUBPIXEL_BITS:
00867          params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits);
00868          break;
00869       case GL_TEXTURE_1D:
00870          params[0] = _mesa_IsEnabled(GL_TEXTURE_1D);
00871          break;
00872       case GL_TEXTURE_2D:
00873          params[0] = _mesa_IsEnabled(GL_TEXTURE_2D);
00874          break;
00875       case GL_TEXTURE_3D:
00876          params[0] = _mesa_IsEnabled(GL_TEXTURE_3D);
00877          break;
00878       case GL_TEXTURE_1D_ARRAY_EXT:
00879          CHECK_EXT1(MESA_texture_array, "GetBooleanv");
00880          params[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT);
00881          break;
00882       case GL_TEXTURE_2D_ARRAY_EXT:
00883          CHECK_EXT1(MESA_texture_array, "GetBooleanv");
00884          params[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT);
00885          break;
00886       case GL_TEXTURE_BINDING_1D:
00887          params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
00888          break;
00889       case GL_TEXTURE_BINDING_2D:
00890          params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
00891          break;
00892       case GL_TEXTURE_BINDING_3D:
00893          params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
00894          break;
00895       case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
00896          CHECK_EXT1(MESA_texture_array, "GetBooleanv");
00897          params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
00898          break;
00899       case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
00900          CHECK_EXT1(MESA_texture_array, "GetBooleanv");
00901          params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
00902          break;
00903       case GL_TEXTURE_GEN_S:
00904          params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0);
00905          break;
00906       case GL_TEXTURE_GEN_T:
00907          params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0);
00908          break;
00909       case GL_TEXTURE_GEN_R:
00910          params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0);
00911          break;
00912       case GL_TEXTURE_GEN_Q:
00913          params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0);
00914          break;
00915       case GL_TEXTURE_MATRIX:
00916          {
00917          const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
00918          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
00919          params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
00920          params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
00921          params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
00922          params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
00923          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
00924          params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
00925          params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
00926          params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
00927          params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
00928          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
00929          params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
00930          params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
00931          params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
00932          params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
00933          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
00934          }
00935          break;
00936       case GL_TEXTURE_STACK_DEPTH:
00937          params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
00938          break;
00939       case GL_UNPACK_ALIGNMENT:
00940          params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment);
00941          break;
00942       case GL_UNPACK_LSB_FIRST:
00943          params[0] = ctx->Unpack.LsbFirst;
00944          break;
00945       case GL_UNPACK_ROW_LENGTH:
00946          params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength);
00947          break;
00948       case GL_UNPACK_SKIP_PIXELS:
00949          params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels);
00950          break;
00951       case GL_UNPACK_SKIP_ROWS:
00952          params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows);
00953          break;
00954       case GL_UNPACK_SWAP_BYTES:
00955          params[0] = ctx->Unpack.SwapBytes;
00956          break;
00957       case GL_UNPACK_SKIP_IMAGES_EXT:
00958          params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages);
00959          break;
00960       case GL_UNPACK_IMAGE_HEIGHT_EXT:
00961          params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight);
00962          break;
00963       case GL_UNPACK_CLIENT_STORAGE_APPLE:
00964          params[0] = ctx->Unpack.ClientStorage;
00965          break;
00966       case GL_VIEWPORT:
00967          params[0] = INT_TO_BOOLEAN(ctx->Viewport.X);
00968          params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y);
00969          params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width);
00970          params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height);
00971          break;
00972       case GL_ZOOM_X:
00973          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX);
00974          break;
00975       case GL_ZOOM_Y:
00976          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY);
00977          break;
00978       case GL_VERTEX_ARRAY:
00979          params[0] = ctx->Array.ArrayObj->Vertex.Enabled;
00980          break;
00981       case GL_VERTEX_ARRAY_SIZE:
00982          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size);
00983          break;
00984       case GL_VERTEX_ARRAY_TYPE:
00985          params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type);
00986          break;
00987       case GL_VERTEX_ARRAY_STRIDE:
00988          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride);
00989          break;
00990       case GL_VERTEX_ARRAY_COUNT_EXT:
00991          params[0] = INT_TO_BOOLEAN(0);
00992          break;
00993       case GL_NORMAL_ARRAY:
00994          params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled);
00995          break;
00996       case GL_NORMAL_ARRAY_TYPE:
00997          params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type);
00998          break;
00999       case GL_NORMAL_ARRAY_STRIDE:
01000          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride);
01001          break;
01002       case GL_NORMAL_ARRAY_COUNT_EXT:
01003          params[0] = INT_TO_BOOLEAN(0);
01004          break;
01005       case GL_COLOR_ARRAY:
01006          params[0] = ctx->Array.ArrayObj->Color.Enabled;
01007          break;
01008       case GL_COLOR_ARRAY_SIZE:
01009          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size);
01010          break;
01011       case GL_COLOR_ARRAY_TYPE:
01012          params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type);
01013          break;
01014       case GL_COLOR_ARRAY_STRIDE:
01015          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride);
01016          break;
01017       case GL_COLOR_ARRAY_COUNT_EXT:
01018          params[0] = INT_TO_BOOLEAN(0);
01019          break;
01020       case GL_INDEX_ARRAY:
01021          params[0] = ctx->Array.ArrayObj->Index.Enabled;
01022          break;
01023       case GL_INDEX_ARRAY_TYPE:
01024          params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type);
01025          break;
01026       case GL_INDEX_ARRAY_STRIDE:
01027          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride);
01028          break;
01029       case GL_INDEX_ARRAY_COUNT_EXT:
01030          params[0] = INT_TO_BOOLEAN(0);
01031          break;
01032       case GL_TEXTURE_COORD_ARRAY:
01033          params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled;
01034          break;
01035       case GL_TEXTURE_COORD_ARRAY_SIZE:
01036          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
01037          break;
01038       case GL_TEXTURE_COORD_ARRAY_TYPE:
01039          params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
01040          break;
01041       case GL_TEXTURE_COORD_ARRAY_STRIDE:
01042          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
01043          break;
01044       case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
01045          params[0] = INT_TO_BOOLEAN(0);
01046          break;
01047       case GL_EDGE_FLAG_ARRAY:
01048          params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled;
01049          break;
01050       case GL_EDGE_FLAG_ARRAY_STRIDE:
01051          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride);
01052          break;
01053       case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
01054          params[0] = INT_TO_BOOLEAN(0);
01055          break;
01056       case GL_MAX_TEXTURE_UNITS_ARB:
01057          CHECK_EXT1(ARB_multitexture, "GetBooleanv");
01058          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits);
01059          break;
01060       case GL_ACTIVE_TEXTURE_ARB:
01061          CHECK_EXT1(ARB_multitexture, "GetBooleanv");
01062          params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
01063          break;
01064       case GL_CLIENT_ACTIVE_TEXTURE_ARB:
01065          CHECK_EXT1(ARB_multitexture, "GetBooleanv");
01066          params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
01067          break;
01068       case GL_TEXTURE_CUBE_MAP_ARB:
01069          CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
01070          params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
01071          break;
01072       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
01073          CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
01074          params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
01075          break;
01076       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
01077          CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv");
01078          params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
01079          break;
01080       case GL_TEXTURE_COMPRESSION_HINT_ARB:
01081          CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
01082          params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
01083          break;
01084       case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
01085          CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
01086          params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
01087          break;
01088       case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
01089          CHECK_EXT1(ARB_texture_compression, "GetBooleanv");
01090          {
01091          GLint formats[100];
01092          GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
01093          ASSERT(n <= 100);
01094          for (i = 0; i < n; i++)
01095             params[i] = ENUM_TO_BOOLEAN(formats[i]);
01096          }
01097          break;
01098       case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
01099          CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
01100          params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst);
01101          break;
01102       case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
01103          CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv");
01104          params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount);
01105          break;
01106       case GL_TRANSPOSE_COLOR_MATRIX_ARB:
01107          {
01108          const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
01109          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
01110          params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
01111          params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
01112          params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
01113          params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
01114          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
01115          params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
01116          params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
01117          params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
01118          params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
01119          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
01120          params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
01121          params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
01122          params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
01123          params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
01124          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
01125          }
01126          break;
01127       case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
01128          {
01129          const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
01130          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
01131          params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
01132          params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
01133          params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
01134          params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
01135          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
01136          params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
01137          params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
01138          params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
01139          params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
01140          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
01141          params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
01142          params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
01143          params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
01144          params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
01145          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
01146          }
01147          break;
01148       case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
01149          {
01150          const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
01151          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
01152          params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
01153          params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
01154          params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
01155          params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
01156          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
01157          params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
01158          params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
01159          params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
01160          params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
01161          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
01162          params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
01163          params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
01164          params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
01165          params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
01166          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
01167          }
01168          break;
01169       case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
01170          {
01171          const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
01172          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
01173          params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
01174          params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
01175          params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
01176          params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
01177          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
01178          params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
01179          params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
01180          params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
01181          params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
01182          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
01183          params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
01184          params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
01185          params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
01186          params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
01187          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
01188          }
01189          break;
01190       case GL_COLOR_MATRIX_SGI:
01191          {
01192          const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
01193          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
01194          params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
01195          params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
01196          params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
01197          params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
01198          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
01199          params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
01200          params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
01201          params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
01202          params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
01203          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
01204          params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
01205          params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
01206          params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
01207          params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
01208          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
01209          }
01210          break;
01211       case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
01212          params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1);
01213          break;
01214       case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
01215          params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH);
01216          break;
01217       case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
01218          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]);
01219          break;
01220       case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
01221          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]);
01222          break;
01223       case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
01224          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]);
01225          break;
01226       case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
01227          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]);
01228          break;
01229       case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
01230          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]);
01231          break;
01232       case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
01233          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]);
01234          break;
01235       case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
01236          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]);
01237          break;
01238       case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
01239          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]);
01240          break;
01241       case GL_CONVOLUTION_1D_EXT:
01242          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01243          params[0] = ctx->Pixel.Convolution1DEnabled;
01244          break;
01245       case GL_CONVOLUTION_2D_EXT:
01246          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01247          params[0] = ctx->Pixel.Convolution2DEnabled;
01248          break;
01249       case GL_SEPARABLE_2D_EXT:
01250          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01251          params[0] = ctx->Pixel.Separable2DEnabled;
01252          break;
01253       case GL_POST_CONVOLUTION_RED_SCALE_EXT:
01254          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01255          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]);
01256          break;
01257       case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
01258          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01259          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]);
01260          break;
01261       case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
01262          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01263          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]);
01264          break;
01265       case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
01266          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01267          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]);
01268          break;
01269       case GL_POST_CONVOLUTION_RED_BIAS_EXT:
01270          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01271          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]);
01272          break;
01273       case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
01274          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01275          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]);
01276          break;
01277       case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
01278          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01279          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]);
01280          break;
01281       case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
01282          CHECK_EXT1(EXT_convolution, "GetBooleanv");
01283          params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]);
01284          break;
01285       case GL_HISTOGRAM:
01286          CHECK_EXT1(EXT_histogram, "GetBooleanv");
01287          params[0] = ctx->Pixel.HistogramEnabled;
01288          break;
01289       case GL_MINMAX:
01290          CHECK_EXT1(EXT_histogram, "GetBooleanv");
01291          params[0] = ctx->Pixel.MinMaxEnabled;
01292          break;
01293       case GL_COLOR_TABLE_SGI:
01294          CHECK_EXT1(SGI_color_table, "GetBooleanv");
01295          params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION];
01296          break;
01297       case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
01298          CHECK_EXT1(SGI_color_table, "GetBooleanv");
01299          params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION];
01300          break;
01301       case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
01302          CHECK_EXT1(SGI_color_table, "GetBooleanv");
01303          params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX];
01304          break;
01305       case GL_TEXTURE_COLOR_TABLE_SGI:
01306          CHECK_EXT1(SGI_texture_color_table, "GetBooleanv");
01307          params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled;
01308          break;
01309       case GL_COLOR_SUM_EXT:
01310          CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetBooleanv");
01311          params[0] = ctx->Fog.ColorSumEnabled;
01312          break;
01313       case GL_CURRENT_SECONDARY_COLOR_EXT:
01314          CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
01315          {
01316          FLUSH_CURRENT(ctx, 0);
01317          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
01318          params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
01319          params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
01320          params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
01321          }
01322          break;
01323       case GL_SECONDARY_COLOR_ARRAY_EXT:
01324          CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
01325          params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled;
01326          break;
01327       case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
01328          CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
01329          params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type);
01330          break;
01331       case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
01332          CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
01333          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride);
01334          break;
01335       case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
01336          CHECK_EXT1(EXT_secondary_color, "GetBooleanv");
01337          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size);
01338          break;
01339       case GL_CURRENT_FOG_COORDINATE_EXT:
01340          CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
01341          {
01342          FLUSH_CURRENT(ctx, 0);
01343          params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
01344          }
01345          break;
01346       case GL_FOG_COORDINATE_ARRAY_EXT:
01347          CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
01348          params[0] = ctx->Array.ArrayObj->FogCoord.Enabled;
01349          break;
01350       case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
01351          CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
01352          params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type);
01353          break;
01354       case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
01355          CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
01356          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride);
01357          break;
01358       case GL_FOG_COORDINATE_SOURCE_EXT:
01359          CHECK_EXT1(EXT_fog_coord, "GetBooleanv");
01360          params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource);
01361          break;
01362       case GL_MAX_TEXTURE_LOD_BIAS_EXT:
01363          CHECK_EXT1(EXT_texture_lod_bias, "GetBooleanv");
01364          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias);
01365          break;
01366       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
01367          CHECK_EXT1(EXT_texture_filter_anisotropic, "GetBooleanv");
01368          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy);
01369          break;
01370       case GL_MULTISAMPLE_ARB:
01371          CHECK_EXT1(ARB_multisample, "GetBooleanv");
01372          params[0] = ctx->Multisample.Enabled;
01373          break;
01374       case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
01375          CHECK_EXT1(ARB_multisample, "GetBooleanv");
01376          params[0] = ctx->Multisample.SampleAlphaToCoverage;
01377          break;
01378       case GL_SAMPLE_ALPHA_TO_ONE_ARB:
01379          CHECK_EXT1(ARB_multisample, "GetBooleanv");
01380          params[0] = ctx->Multisample.SampleAlphaToOne;
01381          break;
01382       case GL_SAMPLE_COVERAGE_ARB:
01383          CHECK_EXT1(ARB_multisample, "GetBooleanv");
01384          params[0] = ctx->Multisample.SampleCoverage;
01385          break;
01386       case GL_SAMPLE_COVERAGE_VALUE_ARB:
01387          CHECK_EXT1(ARB_multisample, "GetBooleanv");
01388          params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue);
01389          break;
01390       case GL_SAMPLE_COVERAGE_INVERT_ARB:
01391          CHECK_EXT1(ARB_multisample, "GetBooleanv");
01392          params[0] = ctx->Multisample.SampleCoverageInvert;
01393          break;
01394       case GL_SAMPLE_BUFFERS_ARB:
01395          CHECK_EXT1(ARB_multisample, "GetBooleanv");
01396          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers);
01397          break;
01398       case GL_SAMPLES_ARB:
01399          CHECK_EXT1(ARB_multisample, "GetBooleanv");
01400          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples);
01401          break;
01402       case GL_RASTER_POSITION_UNCLIPPED_IBM:
01403          CHECK_EXT1(IBM_rasterpos_clip, "GetBooleanv");
01404          params[0] = ctx->Transform.RasterPositionUnclipped;
01405          break;
01406       case GL_POINT_SPRITE_NV:
01407          CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
01408          params[0] = ctx->Point.PointSprite;
01409          break;
01410       case GL_POINT_SPRITE_R_MODE_NV:
01411          CHECK_EXT1(NV_point_sprite, "GetBooleanv");
01412          params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode);
01413          break;
01414       case GL_POINT_SPRITE_COORD_ORIGIN:
01415          CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv");
01416          params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin);
01417          break;
01418       case GL_GENERATE_MIPMAP_HINT_SGIS:
01419          CHECK_EXT1(SGIS_generate_mipmap, "GetBooleanv");
01420          params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap);
01421          break;
01422       case GL_VERTEX_PROGRAM_BINDING_NV:
01423          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01424          params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
01425          break;
01426       case GL_VERTEX_ATTRIB_ARRAY0_NV:
01427          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01428          params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled;
01429          break;
01430       case GL_VERTEX_ATTRIB_ARRAY1_NV:
01431          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01432          params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled;
01433          break;
01434       case GL_VERTEX_ATTRIB_ARRAY2_NV:
01435          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01436          params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled;
01437          break;
01438       case GL_VERTEX_ATTRIB_ARRAY3_NV:
01439          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01440          params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled;
01441          break;
01442       case GL_VERTEX_ATTRIB_ARRAY4_NV:
01443          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01444          params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled;
01445          break;
01446       case GL_VERTEX_ATTRIB_ARRAY5_NV:
01447          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01448          params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled;
01449          break;
01450       case GL_VERTEX_ATTRIB_ARRAY6_NV:
01451          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01452          params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled;
01453          break;
01454       case GL_VERTEX_ATTRIB_ARRAY7_NV:
01455          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01456          params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled;
01457          break;
01458       case GL_VERTEX_ATTRIB_ARRAY8_NV:
01459          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01460          params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled;
01461          break;
01462       case GL_VERTEX_ATTRIB_ARRAY9_NV:
01463          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01464          params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled;
01465          break;
01466       case GL_VERTEX_ATTRIB_ARRAY10_NV:
01467          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01468          params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled;
01469          break;
01470       case GL_VERTEX_ATTRIB_ARRAY11_NV:
01471          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01472          params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled;
01473          break;
01474       case GL_VERTEX_ATTRIB_ARRAY12_NV:
01475          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01476          params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled;
01477          break;
01478       case GL_VERTEX_ATTRIB_ARRAY13_NV:
01479          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01480          params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled;
01481          break;
01482       case GL_VERTEX_ATTRIB_ARRAY14_NV:
01483          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01484          params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled;
01485          break;
01486       case GL_VERTEX_ATTRIB_ARRAY15_NV:
01487          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01488          params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled;
01489          break;
01490       case GL_MAP1_VERTEX_ATTRIB0_4_NV:
01491          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01492          params[0] = ctx->Eval.Map1Attrib[0];
01493          break;
01494       case GL_MAP1_VERTEX_ATTRIB1_4_NV:
01495          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01496          params[0] = ctx->Eval.Map1Attrib[1];
01497          break;
01498       case GL_MAP1_VERTEX_ATTRIB2_4_NV:
01499          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01500          params[0] = ctx->Eval.Map1Attrib[2];
01501          break;
01502       case GL_MAP1_VERTEX_ATTRIB3_4_NV:
01503          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01504          params[0] = ctx->Eval.Map1Attrib[3];
01505          break;
01506       case GL_MAP1_VERTEX_ATTRIB4_4_NV:
01507          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01508          params[0] = ctx->Eval.Map1Attrib[4];
01509          break;
01510       case GL_MAP1_VERTEX_ATTRIB5_4_NV:
01511          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01512          params[0] = ctx->Eval.Map1Attrib[5];
01513          break;
01514       case GL_MAP1_VERTEX_ATTRIB6_4_NV:
01515          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01516          params[0] = ctx->Eval.Map1Attrib[6];
01517          break;
01518       case GL_MAP1_VERTEX_ATTRIB7_4_NV:
01519          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01520          params[0] = ctx->Eval.Map1Attrib[7];
01521          break;
01522       case GL_MAP1_VERTEX_ATTRIB8_4_NV:
01523          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01524          params[0] = ctx->Eval.Map1Attrib[8];
01525          break;
01526       case GL_MAP1_VERTEX_ATTRIB9_4_NV:
01527          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01528          params[0] = ctx->Eval.Map1Attrib[9];
01529          break;
01530       case GL_MAP1_VERTEX_ATTRIB10_4_NV:
01531          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01532          params[0] = ctx->Eval.Map1Attrib[10];
01533          break;
01534       case GL_MAP1_VERTEX_ATTRIB11_4_NV:
01535          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01536          params[0] = ctx->Eval.Map1Attrib[11];
01537          break;
01538       case GL_MAP1_VERTEX_ATTRIB12_4_NV:
01539          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01540          params[0] = ctx->Eval.Map1Attrib[12];
01541          break;
01542       case GL_MAP1_VERTEX_ATTRIB13_4_NV:
01543          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01544          params[0] = ctx->Eval.Map1Attrib[13];
01545          break;
01546       case GL_MAP1_VERTEX_ATTRIB14_4_NV:
01547          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01548          params[0] = ctx->Eval.Map1Attrib[14];
01549          break;
01550       case GL_MAP1_VERTEX_ATTRIB15_4_NV:
01551          CHECK_EXT1(NV_vertex_program, "GetBooleanv");
01552          params[0] = ctx->Eval.Map1Attrib[15];
01553          break;
01554       case GL_FRAGMENT_PROGRAM_NV:
01555          CHECK_EXT1(NV_fragment_program, "GetBooleanv");
01556          params[0] = ctx->FragmentProgram.Enabled;
01557          break;
01558       case GL_FRAGMENT_PROGRAM_BINDING_NV:
01559          CHECK_EXT1(NV_fragment_program, "GetBooleanv");
01560          params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
01561          break;
01562       case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
01563          CHECK_EXT1(NV_fragment_program, "GetBooleanv");
01564          params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
01565          break;
01566       case GL_TEXTURE_RECTANGLE_NV:
01567          CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
01568          params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV);
01569          break;
01570       case GL_TEXTURE_BINDING_RECTANGLE_NV:
01571          CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
01572          params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
01573          break;
01574       case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
01575          CHECK_EXT1(NV_texture_rectangle, "GetBooleanv");
01576          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize);
01577          break;
01578       case GL_STENCIL_TEST_TWO_SIDE_EXT:
01579          CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
01580          params[0] = ctx->Stencil.TestTwoSide;
01581          break;
01582       case GL_ACTIVE_STENCIL_FACE_EXT:
01583          CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv");
01584          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
01585          break;
01586       case GL_MAX_SHININESS_NV:
01587          CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
01588          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess);
01589          break;
01590       case GL_MAX_SPOT_EXPONENT_NV:
01591          CHECK_EXT1(NV_light_max_exponent, "GetBooleanv");
01592          params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent);
01593          break;
01594       case GL_ARRAY_BUFFER_BINDING_ARB:
01595          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01596          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name);
01597          break;
01598       case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
01599          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01600          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
01601          break;
01602       case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
01603          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01604          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name);
01605          break;
01606       case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
01607          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01608          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name);
01609          break;
01610       case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
01611          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01612          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name);
01613          break;
01614       case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
01615          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01616          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
01617          break;
01618       case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
01619          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01620          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
01621          break;
01622       case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
01623          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01624          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
01625          break;
01626       case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
01627          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01628          params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
01629          break;
01630       case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
01631          CHECK_EXT1(ARB_vertex_buffer_object, "GetBooleanv");
01632          params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name);
01633          break;
01634       case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
01635          CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
01636          params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name);
01637          break;
01638       case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
01639          CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv");
01640          params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name);
01641          break;
01642       case GL_VERTEX_PROGRAM_ARB:
01643          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
01644          params[0] = ctx->VertexProgram.Enabled;
01645          break;
01646       case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
01647          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
01648          params[0] = ctx->VertexProgram.PointSizeEnabled;
01649          break;
01650       case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
01651          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv");
01652          params[0] = ctx->VertexProgram.TwoSideEnabled;
01653          break;
01654       case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
01655          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
01656          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth);
01657          break;
01658       case GL_MAX_PROGRAM_MATRICES_ARB:
01659          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
01660          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices);
01661          break;
01662       case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
01663          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv");
01664          params[0] = ctx->CurrentStack->Depth + 1;
01665          break;
01666       case GL_CURRENT_MATRIX_ARB:
01667          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetBooleanv");
01668          {
01669          const GLfloat *matrix = ctx->CurrentStack->Top->m;
01670          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
01671          params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
01672          params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
01673          params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
01674          params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
01675          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
01676          params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
01677          params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
01678          params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
01679          params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
01680          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
01681          params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
01682          params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
01683          params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
01684          params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
01685          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
01686          }
01687          break;
01688       case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
01689          CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetBooleanv");
01690          {
01691          const GLfloat *matrix = ctx->CurrentStack->Top->m;
01692          params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
01693          params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
01694          params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
01695          params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
01696          params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
01697          params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
01698          params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
01699          params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
01700          params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
01701          params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
01702          params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
01703          params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
01704          params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
01705          params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
01706          params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
01707          params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
01708          }
01709          break;
01710       case GL_MAX_VERTEX_ATTRIBS_ARB:
01711          CHECK_EXT1(ARB_vertex_program, "GetBooleanv");
01712          params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs);
01713          break;
01714       case GL_PROGRAM_ERROR_POSITION_ARB:
01715          CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetBooleanv");
01716          params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos);
01717          break;
01718       case GL_FRAGMENT_PROGRAM_ARB:
01719          CHECK_EXT1(ARB_fragment_program, "GetBooleanv");
01720          params[0] = ctx->FragmentProgram.Enabled;
01721          break;
01722       case GL_MAX_TEXTURE_COORDS_ARB:
01723          CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
01724          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits);
01725          break;
01726       case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
01727          CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv");
01728          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits);
01729          break;
01730       case GL_DEPTH_BOUNDS_TEST_EXT:
01731          CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
01732          params[0] = ctx->Depth.BoundsTest;
01733          break;
01734       case GL_DEPTH_BOUNDS_EXT:
01735          CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv");
01736          params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
01737          params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
01738          break;
01739       case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
01740          CHECK_EXT1(MESA_program_debug, "GetBooleanv");
01741          params[0] = ctx->FragmentProgram.CallbackEnabled;
01742          break;
01743       case GL_VERTEX_PROGRAM_CALLBACK_MESA:
01744          CHECK_EXT1(MESA_program_debug, "GetBooleanv");
01745          params[0] = ctx->VertexProgram.CallbackEnabled;
01746          break;
01747       case GL_FRAGMENT_PROGRAM_POSITION_MESA:
01748          CHECK_EXT1(MESA_program_debug, "GetBooleanv");
01749          params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.CurrentPosition);
01750          break;
01751       case GL_VERTEX_PROGRAM_POSITION_MESA:
01752          CHECK_EXT1(MESA_program_debug, "GetBooleanv");
01753          params[0] = INT_TO_BOOLEAN(ctx->VertexProgram.CurrentPosition);
01754          break;
01755       case GL_MAX_DRAW_BUFFERS_ARB:
01756          CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
01757          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
01758          break;
01759       case GL_DRAW_BUFFER0_ARB:
01760          CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
01761          params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
01762          break;
01763       case GL_DRAW_BUFFER1_ARB:
01764          CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
01765          {
01766          GLenum buffer;
01767          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
01768             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
01769             return;
01770          }
01771          buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
01772          params[0] = ENUM_TO_BOOLEAN(buffer);
01773          }
01774          break;
01775       case GL_DRAW_BUFFER2_ARB:
01776          CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
01777          {
01778          GLenum buffer;
01779          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
01780             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
01781             return;
01782          }
01783          buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
01784          params[0] = ENUM_TO_BOOLEAN(buffer);
01785          }
01786          break;
01787       case GL_DRAW_BUFFER3_ARB:
01788          CHECK_EXT1(ARB_draw_buffers, "GetBooleanv");
01789          {
01790          GLenum buffer;
01791          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
01792             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
01793             return;
01794          }
01795          buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
01796          params[0] = ENUM_TO_BOOLEAN(buffer);
01797          }
01798          break;
01799       case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
01800          CHECK_EXT1(OES_read_format, "GetBooleanv");
01801          params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadType);
01802          break;
01803       case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
01804          CHECK_EXT1(OES_read_format, "GetBooleanv");
01805          params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadFormat);
01806          break;
01807       case GL_NUM_FRAGMENT_REGISTERS_ATI:
01808          CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
01809          params[0] = INT_TO_BOOLEAN(6);
01810          break;
01811       case GL_NUM_FRAGMENT_CONSTANTS_ATI:
01812          CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
01813          params[0] = INT_TO_BOOLEAN(8);
01814          break;
01815       case GL_NUM_PASSES_ATI:
01816          CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
01817          params[0] = INT_TO_BOOLEAN(2);
01818          break;
01819       case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
01820          CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
01821          params[0] = INT_TO_BOOLEAN(8);
01822          break;
01823       case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
01824          CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
01825          params[0] = INT_TO_BOOLEAN(16);
01826          break;
01827       case GL_COLOR_ALPHA_PAIRING_ATI:
01828          CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
01829          params[0] = GL_TRUE;
01830          break;
01831       case GL_NUM_LOOPBACK_COMPONENTS_ATI:
01832          CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
01833          params[0] = INT_TO_BOOLEAN(3);
01834          break;
01835       case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
01836          CHECK_EXT1(ATI_fragment_shader, "GetBooleanv");
01837          params[0] = INT_TO_BOOLEAN(3);
01838          break;
01839       case GL_STENCIL_BACK_FUNC:
01840          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
01841          break;
01842       case GL_STENCIL_BACK_VALUE_MASK:
01843          params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
01844          break;
01845       case GL_STENCIL_BACK_WRITEMASK:
01846          params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]);
01847          break;
01848       case GL_STENCIL_BACK_REF:
01849          params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
01850          break;
01851       case GL_STENCIL_BACK_FAIL:
01852          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
01853          break;
01854       case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
01855          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
01856          break;
01857       case GL_STENCIL_BACK_PASS_DEPTH_PASS:
01858          params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
01859          break;
01860       case GL_FRAMEBUFFER_BINDING_EXT:
01861          CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
01862          params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
01863          break;
01864       case GL_RENDERBUFFER_BINDING_EXT:
01865          CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
01866          params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
01867          break;
01868       case GL_MAX_COLOR_ATTACHMENTS_EXT:
01869          CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
01870          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
01871          break;
01872       case GL_MAX_RENDERBUFFER_SIZE_EXT:
01873          CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv");
01874          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
01875          break;
01876       case GL_READ_FRAMEBUFFER_BINDING_EXT:
01877          CHECK_EXT1(EXT_framebuffer_blit, "GetBooleanv");
01878          params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name);
01879          break;
01880       case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
01881          CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
01882          params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents);
01883          break;
01884       case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
01885          CHECK_EXT1(ARB_fragment_shader, "GetBooleanv");
01886          params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
01887          break;
01888       case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
01889          CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
01890          params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents);
01891          break;
01892       case GL_MAX_VARYING_FLOATS_ARB:
01893          CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
01894          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4);
01895          break;
01896       case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
01897          CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
01898          params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits);
01899          break;
01900       case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
01901          CHECK_EXT1(ARB_vertex_shader, "GetBooleanv");
01902          params[0] = INT_TO_BOOLEAN(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
01903          break;
01904       case GL_CURRENT_PROGRAM:
01905          CHECK_EXT1(ARB_shader_objects, "GetBooleanv");
01906          params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
01907          break;
01908       default:
01909          _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
01910    }
01911 }
01912 
01913 void GLAPIENTRY
01914 _mesa_GetFloatv( GLenum pname, GLfloat *params )
01915 {
01916    GET_CURRENT_CONTEXT(ctx);
01917    ASSERT_OUTSIDE_BEGIN_END(ctx);
01918 
01919    if (!params)
01920       return;
01921 
01922    if (ctx->NewState)
01923       _mesa_update_state(ctx);
01924 
01925    if (ctx->Driver.GetFloatv &&
01926        ctx->Driver.GetFloatv(ctx, pname, params))
01927       return;
01928 
01929    switch (pname) {
01930       case GL_ACCUM_RED_BITS:
01931          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
01932          break;
01933       case GL_ACCUM_GREEN_BITS:
01934          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
01935          break;
01936       case GL_ACCUM_BLUE_BITS:
01937          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
01938          break;
01939       case GL_ACCUM_ALPHA_BITS:
01940          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
01941          break;
01942       case GL_ACCUM_CLEAR_VALUE:
01943          params[0] = ctx->Accum.ClearColor[0];
01944          params[1] = ctx->Accum.ClearColor[1];
01945          params[2] = ctx->Accum.ClearColor[2];
01946          params[3] = ctx->Accum.ClearColor[3];
01947          break;
01948       case GL_ALPHA_BIAS:
01949          params[0] = ctx->Pixel.AlphaBias;
01950          break;
01951       case GL_ALPHA_BITS:
01952          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
01953          break;
01954       case GL_ALPHA_SCALE:
01955          params[0] = ctx->Pixel.AlphaScale;
01956          break;
01957       case GL_ALPHA_TEST:
01958          params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
01959          break;
01960       case GL_ALPHA_TEST_FUNC:
01961          params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
01962          break;
01963       case GL_ALPHA_TEST_REF:
01964          params[0] = ctx->Color.AlphaRef;
01965          break;
01966       case GL_ATTRIB_STACK_DEPTH:
01967          params[0] = (GLfloat)(ctx->AttribStackDepth);
01968          break;
01969       case GL_AUTO_NORMAL:
01970          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
01971          break;
01972       case GL_AUX_BUFFERS:
01973          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
01974          break;
01975       case GL_BLEND:
01976          params[0] = BOOLEAN_TO_FLOAT(ctx->Color.BlendEnabled);
01977          break;
01978       case GL_BLEND_DST:
01979          params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
01980          break;
01981       case GL_BLEND_SRC:
01982          params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
01983          break;
01984       case GL_BLEND_SRC_RGB_EXT:
01985          params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
01986          break;
01987       case GL_BLEND_DST_RGB_EXT:
01988          params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
01989          break;
01990       case GL_BLEND_SRC_ALPHA_EXT:
01991          params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
01992          break;
01993       case GL_BLEND_DST_ALPHA_EXT:
01994          params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
01995          break;
01996       case GL_BLEND_EQUATION:
01997          params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
01998          break;
01999       case GL_BLEND_EQUATION_ALPHA_EXT:
02000          params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
02001          break;
02002       case GL_BLEND_COLOR_EXT:
02003          params[0] = ctx->Color.BlendColor[0];
02004          params[1] = ctx->Color.BlendColor[1];
02005          params[2] = ctx->Color.BlendColor[2];
02006          params[3] = ctx->Color.BlendColor[3];
02007          break;
02008       case GL_BLUE_BIAS:
02009          params[0] = ctx->Pixel.BlueBias;
02010          break;
02011       case GL_BLUE_BITS:
02012          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
02013          break;
02014       case GL_BLUE_SCALE:
02015          params[0] = ctx->Pixel.BlueScale;
02016          break;
02017       case GL_CLIENT_ATTRIB_STACK_DEPTH:
02018          params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
02019          break;
02020       case GL_CLIP_PLANE0:
02021          params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
02022          break;
02023       case GL_CLIP_PLANE1:
02024          params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
02025          break;
02026       case GL_CLIP_PLANE2:
02027          params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
02028          break;
02029       case GL_CLIP_PLANE3:
02030          params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
02031          break;
02032       case GL_CLIP_PLANE4:
02033          params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
02034          break;
02035       case GL_CLIP_PLANE5:
02036          params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
02037          break;
02038       case GL_COLOR_CLEAR_VALUE:
02039          params[0] = ctx->Color.ClearColor[0];
02040          params[1] = ctx->Color.ClearColor[1];
02041          params[2] = ctx->Color.ClearColor[2];
02042          params[3] = ctx->Color.ClearColor[3];
02043          break;
02044       case GL_COLOR_MATERIAL:
02045          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
02046          break;
02047       case GL_COLOR_MATERIAL_FACE:
02048          params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
02049          break;
02050       case GL_COLOR_MATERIAL_PARAMETER:
02051          params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
02052          break;
02053       case GL_COLOR_WRITEMASK:
02054          params[0] = (GLfloat)(ctx->Color.ColorMask[RCOMP] ? 1 : 0);
02055          params[1] = (GLfloat)(ctx->Color.ColorMask[GCOMP] ? 1 : 0);
02056          params[2] = (GLfloat)(ctx->Color.ColorMask[BCOMP] ? 1 : 0);
02057          params[3] = (GLfloat)(ctx->Color.ColorMask[ACOMP] ? 1 : 0);
02058          break;
02059       case GL_CULL_FACE:
02060          params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
02061          break;
02062       case GL_CULL_FACE_MODE:
02063          params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
02064          break;
02065       case GL_CURRENT_COLOR:
02066          {
02067          FLUSH_CURRENT(ctx, 0);
02068          params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
02069          params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
02070          params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
02071          params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
02072          }
02073          break;
02074       case GL_CURRENT_INDEX:
02075          {
02076          FLUSH_CURRENT(ctx, 0);
02077          params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
02078          }
02079          break;
02080       case GL_CURRENT_NORMAL:
02081          {
02082          FLUSH_CURRENT(ctx, 0);
02083          params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
02084          params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
02085          params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
02086          }
02087          break;
02088       case GL_CURRENT_RASTER_COLOR:
02089          params[0] = ctx->Current.RasterColor[0];
02090          params[1] = ctx->Current.RasterColor[1];
02091          params[2] = ctx->Current.RasterColor[2];
02092          params[3] = ctx->Current.RasterColor[3];
02093          break;
02094       case GL_CURRENT_RASTER_DISTANCE:
02095          params[0] = ctx->Current.RasterDistance;
02096          break;
02097       case GL_CURRENT_RASTER_INDEX:
02098          params[0] = ctx->Current.RasterIndex;
02099          break;
02100       case GL_CURRENT_RASTER_POSITION:
02101          params[0] = ctx->Current.RasterPos[0];
02102          params[1] = ctx->Current.RasterPos[1];
02103          params[2] = ctx->Current.RasterPos[2];
02104          params[3] = ctx->Current.RasterPos[3];
02105          break;
02106       case GL_CURRENT_RASTER_SECONDARY_COLOR:
02107          params[0] = ctx->Current.RasterSecondaryColor[0];
02108          params[1] = ctx->Current.RasterSecondaryColor[1];
02109          params[2] = ctx->Current.RasterSecondaryColor[2];
02110          params[3] = ctx->Current.RasterSecondaryColor[3];
02111          break;
02112       case GL_CURRENT_RASTER_TEXTURE_COORDS:
02113          {
02114          const GLuint texUnit = ctx->Texture.CurrentUnit;
02115          params[0] = ctx->Current.RasterTexCoords[texUnit][0];
02116          params[1] = ctx->Current.RasterTexCoords[texUnit][1];
02117          params[2] = ctx->Current.RasterTexCoords[texUnit][2];
02118          params[3] = ctx->Current.RasterTexCoords[texUnit][3];
02119          }
02120          break;
02121       case GL_CURRENT_RASTER_POSITION_VALID:
02122          params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
02123          break;
02124       case GL_CURRENT_TEXTURE_COORDS:
02125          {
02126          const GLuint texUnit = ctx->Texture.CurrentUnit;
02127          params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0];
02128          params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1];
02129          params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2];
02130          params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3];
02131          }
02132          break;
02133       case GL_DEPTH_BIAS:
02134          params[0] = ctx->Pixel.DepthBias;
02135          break;
02136       case GL_DEPTH_BITS:
02137          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
02138          break;
02139       case GL_DEPTH_CLEAR_VALUE:
02140          params[0] = ((GLfloat) ctx->Depth.Clear);
02141          break;
02142       case GL_DEPTH_FUNC:
02143          params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
02144          break;
02145       case GL_DEPTH_RANGE:
02146          params[0] = ctx->Viewport.Near;
02147          params[1] = ctx->Viewport.Far;
02148          break;
02149       case GL_DEPTH_SCALE:
02150          params[0] = ctx->Pixel.DepthScale;
02151          break;
02152       case GL_DEPTH_TEST:
02153          params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
02154          break;
02155       case GL_DEPTH_WRITEMASK:
02156          params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
02157          break;
02158       case GL_DITHER:
02159          params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
02160          break;
02161       case GL_DOUBLEBUFFER:
02162          params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
02163          break;
02164       case GL_DRAW_BUFFER:
02165          params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
02166          break;
02167       case GL_EDGE_FLAG:
02168          {
02169          FLUSH_CURRENT(ctx, 0);
02170          params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
02171          }
02172          break;
02173       case GL_FEEDBACK_BUFFER_SIZE:
02174          params[0] = (GLfloat)(ctx->Feedback.BufferSize);
02175          break;
02176       case GL_FEEDBACK_BUFFER_TYPE:
02177          params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
02178          break;
02179       case GL_FOG:
02180          params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
02181          break;
02182       case GL_FOG_COLOR:
02183          params[0] = ctx->Fog.Color[0];
02184          params[1] = ctx->Fog.Color[1];
02185          params[2] = ctx->Fog.Color[2];
02186          params[3] = ctx->Fog.Color[3];
02187          break;
02188       case GL_FOG_DENSITY:
02189          params[0] = ctx->Fog.Density;
02190          break;
02191       case GL_FOG_END:
02192          params[0] = ctx->Fog.End;
02193          break;
02194       case GL_FOG_HINT:
02195          params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
02196          break;
02197       case GL_FOG_INDEX:
02198          params[0] = ctx->Fog.Index;
02199          break;
02200       case GL_FOG_MODE:
02201          params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
02202          break;
02203       case GL_FOG_START:
02204          params[0] = ctx->Fog.Start;
02205          break;
02206       case GL_FRONT_FACE:
02207          params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
02208          break;
02209       case GL_GREEN_BIAS:
02210          params[0] = ctx->Pixel.GreenBias;
02211          break;
02212       case GL_GREEN_BITS:
02213          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
02214          break;
02215       case GL_GREEN_SCALE:
02216          params[0] = ctx->Pixel.GreenScale;
02217          break;
02218       case GL_INDEX_BITS:
02219          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
02220          break;
02221       case GL_INDEX_CLEAR_VALUE:
02222          params[0] = (GLfloat)(ctx->Color.ClearIndex);
02223          break;
02224       case GL_INDEX_MODE:
02225          params[0] = BOOLEAN_TO_FLOAT(!ctx->DrawBuffer->Visual.rgbMode);
02226          break;
02227       case GL_INDEX_OFFSET:
02228          params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
02229          break;
02230       case GL_INDEX_SHIFT:
02231          params[0] = (GLfloat)(ctx->Pixel.IndexShift);
02232          break;
02233       case GL_INDEX_WRITEMASK:
02234          params[0] = (GLfloat)(ctx->Color.IndexMask);
02235          break;
02236       case GL_LIGHT0:
02237          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
02238          break;
02239       case GL_LIGHT1:
02240          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
02241          break;
02242       case GL_LIGHT2:
02243          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
02244          break;
02245       case GL_LIGHT3:
02246          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
02247          break;
02248       case GL_LIGHT4:
02249          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
02250          break;
02251       case GL_LIGHT5:
02252          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
02253          break;
02254       case GL_LIGHT6:
02255          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
02256          break;
02257       case GL_LIGHT7:
02258          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
02259          break;
02260       case GL_LIGHTING:
02261          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
02262          break;
02263       case GL_LIGHT_MODEL_AMBIENT:
02264          params[0] = ctx->Light.Model.Ambient[0];
02265          params[1] = ctx->Light.Model.Ambient[1];
02266          params[2] = ctx->Light.Model.Ambient[2];
02267          params[3] = ctx->Light.Model.Ambient[3];
02268          break;
02269       case GL_LIGHT_MODEL_COLOR_CONTROL:
02270          params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
02271          break;
02272       case GL_LIGHT_MODEL_LOCAL_VIEWER:
02273          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
02274          break;
02275       case GL_LIGHT_MODEL_TWO_SIDE:
02276          params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
02277          break;
02278       case GL_LINE_SMOOTH:
02279          params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
02280          break;
02281       case GL_LINE_SMOOTH_HINT:
02282          params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
02283          break;
02284       case GL_LINE_STIPPLE:
02285          params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
02286          break;
02287       case GL_LINE_STIPPLE_PATTERN:
02288          params[0] = (GLfloat)(ctx->Line.StipplePattern);
02289          break;
02290       case GL_LINE_STIPPLE_REPEAT:
02291          params[0] = (GLfloat)(ctx->Line.StippleFactor);
02292          break;
02293       case GL_LINE_WIDTH:
02294          params[0] = ctx->Line.Width;
02295          break;
02296       case GL_LINE_WIDTH_GRANULARITY:
02297          params[0] = ctx->Const.LineWidthGranularity;
02298          break;
02299       case GL_LINE_WIDTH_RANGE:
02300          params[0] = ctx->Const.MinLineWidthAA;
02301          params[1] = ctx->Const.MaxLineWidthAA;
02302          break;
02303       case GL_ALIASED_LINE_WIDTH_RANGE:
02304          params[0] = ctx->Const.MinLineWidth;
02305          params[1] = ctx->Const.MaxLineWidth;
02306          break;
02307       case GL_LIST_BASE:
02308          params[0] = (GLfloat)(ctx->List.ListBase);
02309          break;
02310       case GL_LIST_INDEX:
02311          params[0] = (GLfloat)(ctx->ListState.CurrentListNum);
02312          break;
02313       case GL_LIST_MODE:
02314          {
02315          GLenum mode;
02316          if (!ctx->CompileFlag)
02317             mode = 0;
02318          else if (ctx->ExecuteFlag)
02319             mode = GL_COMPILE_AND_EXECUTE;
02320          else
02321             mode = GL_COMPILE;
02322          params[0] = ENUM_TO_FLOAT(mode);
02323          }
02324          break;
02325       case GL_INDEX_LOGIC_OP:
02326          params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
02327          break;
02328       case GL_COLOR_LOGIC_OP:
02329          params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
02330          break;
02331       case GL_LOGIC_OP_MODE:
02332          params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
02333          break;
02334       case GL_MAP1_COLOR_4:
02335          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
02336          break;
02337       case GL_MAP1_GRID_DOMAIN:
02338          params[0] = ctx->Eval.MapGrid1u1;
02339          params[1] = ctx->Eval.MapGrid1u2;
02340          break;
02341       case GL_MAP1_GRID_SEGMENTS:
02342          params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
02343          break;
02344       case GL_MAP1_INDEX:
02345          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
02346          break;
02347       case GL_MAP1_NORMAL:
02348          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
02349          break;
02350       case GL_MAP1_TEXTURE_COORD_1:
02351          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
02352          break;
02353       case GL_MAP1_TEXTURE_COORD_2:
02354          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
02355          break;
02356       case GL_MAP1_TEXTURE_COORD_3:
02357          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
02358          break;
02359       case GL_MAP1_TEXTURE_COORD_4:
02360          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
02361          break;
02362       case GL_MAP1_VERTEX_3:
02363          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
02364          break;
02365       case GL_MAP1_VERTEX_4:
02366          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
02367          break;
02368       case GL_MAP2_COLOR_4:
02369          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
02370          break;
02371       case GL_MAP2_GRID_DOMAIN:
02372          params[0] = ctx->Eval.MapGrid2u1;
02373          params[1] = ctx->Eval.MapGrid2u2;
02374          params[2] = ctx->Eval.MapGrid2v1;
02375          params[3] = ctx->Eval.MapGrid2v2;
02376          break;
02377       case GL_MAP2_GRID_SEGMENTS:
02378          params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
02379          params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
02380          break;
02381       case GL_MAP2_INDEX:
02382          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
02383          break;
02384       case GL_MAP2_NORMAL:
02385          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
02386          break;
02387       case GL_MAP2_TEXTURE_COORD_1:
02388          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
02389          break;
02390       case GL_MAP2_TEXTURE_COORD_2:
02391          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
02392          break;
02393       case GL_MAP2_TEXTURE_COORD_3:
02394          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
02395          break;
02396       case GL_MAP2_TEXTURE_COORD_4:
02397          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
02398          break;
02399       case GL_MAP2_VERTEX_3:
02400          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
02401          break;
02402       case GL_MAP2_VERTEX_4:
02403          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
02404          break;
02405       case GL_MAP_COLOR:
02406          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
02407          break;
02408       case GL_MAP_STENCIL:
02409          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
02410          break;
02411       case GL_MATRIX_MODE:
02412          params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
02413          break;
02414       case GL_MAX_ATTRIB_STACK_DEPTH:
02415          params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
02416          break;
02417       case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
02418          params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
02419          break;
02420       case GL_MAX_CLIP_PLANES:
02421          params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
02422          break;
02423       case GL_MAX_ELEMENTS_VERTICES:
02424          params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
02425          break;
02426       case GL_MAX_ELEMENTS_INDICES:
02427          params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
02428          break;
02429       case GL_MAX_EVAL_ORDER:
02430          params[0] = (GLfloat)(MAX_EVAL_ORDER);
02431          break;
02432       case GL_MAX_LIGHTS:
02433          params[0] = (GLfloat)(ctx->Const.MaxLights);
02434          break;
02435       case GL_MAX_LIST_NESTING:
02436          params[0] = (GLfloat)(MAX_LIST_NESTING);
02437          break;
02438       case GL_MAX_MODELVIEW_STACK_DEPTH:
02439          params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
02440          break;
02441       case GL_MAX_NAME_STACK_DEPTH:
02442          params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
02443          break;
02444       case GL_MAX_PIXEL_MAP_TABLE:
02445          params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
02446          break;
02447       case GL_MAX_PROJECTION_STACK_DEPTH:
02448          params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
02449          break;
02450       case GL_MAX_TEXTURE_SIZE:
02451          params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
02452          break;
02453       case GL_MAX_3D_TEXTURE_SIZE:
02454          params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
02455          break;
02456       case GL_MAX_TEXTURE_STACK_DEPTH:
02457          params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
02458          break;
02459       case GL_MAX_VIEWPORT_DIMS:
02460          params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
02461          params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
02462          break;
02463       case GL_MODELVIEW_MATRIX:
02464          {
02465          const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
02466          params[0] = matrix[0];
02467          params[1] = matrix[1];
02468          params[2] = matrix[2];
02469          params[3] = matrix[3];
02470          params[4] = matrix[4];
02471          params[5] = matrix[5];
02472          params[6] = matrix[6];
02473          params[7] = matrix[7];
02474          params[8] = matrix[8];
02475          params[9] = matrix[9];
02476          params[10] = matrix[10];
02477          params[11] = matrix[11];
02478          params[12] = matrix[12];
02479          params[13] = matrix[13];
02480          params[14] = matrix[14];
02481          params[15] = matrix[15];
02482          }
02483          break;
02484       case GL_MODELVIEW_STACK_DEPTH:
02485          params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
02486          break;
02487       case GL_NAME_STACK_DEPTH:
02488          params[0] = (GLfloat)(ctx->Select.NameStackDepth);
02489          break;
02490       case GL_NORMALIZE:
02491          params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
02492          break;
02493       case GL_PACK_ALIGNMENT:
02494          params[0] = (GLfloat)(ctx->Pack.Alignment);
02495          break;
02496       case GL_PACK_LSB_FIRST:
02497          params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
02498          break;
02499       case GL_PACK_ROW_LENGTH:
02500          params[0] = (GLfloat)(ctx->Pack.RowLength);
02501          break;
02502       case GL_PACK_SKIP_PIXELS:
02503          params[0] = (GLfloat)(ctx->Pack.SkipPixels);
02504          break;
02505       case GL_PACK_SKIP_ROWS:
02506          params[0] = (GLfloat)(ctx->Pack.SkipRows);
02507          break;
02508       case GL_PACK_SWAP_BYTES:
02509          params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
02510          break;
02511       case GL_PACK_SKIP_IMAGES_EXT:
02512          params[0] = (GLfloat)(ctx->Pack.SkipImages);
02513          break;
02514       case GL_PACK_IMAGE_HEIGHT_EXT:
02515          params[0] = (GLfloat)(ctx->Pack.ImageHeight);
02516          break;
02517       case GL_PACK_INVERT_MESA:
02518          params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
02519          break;
02520       case GL_PERSPECTIVE_CORRECTION_HINT:
02521          params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
02522          break;
02523       case GL_PIXEL_MAP_A_TO_A_SIZE:
02524          params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size);
02525          break;
02526       case GL_PIXEL_MAP_B_TO_B_SIZE:
02527          params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size);
02528          break;
02529       case GL_PIXEL_MAP_G_TO_G_SIZE:
02530          params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size);
02531          break;
02532       case GL_PIXEL_MAP_I_TO_A_SIZE:
02533          params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size);
02534          break;
02535       case GL_PIXEL_MAP_I_TO_B_SIZE:
02536          params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size);
02537          break;
02538       case GL_PIXEL_MAP_I_TO_G_SIZE:
02539          params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size);
02540          break;
02541       case GL_PIXEL_MAP_I_TO_I_SIZE:
02542          params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size);
02543          break;
02544       case GL_PIXEL_MAP_I_TO_R_SIZE:
02545          params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size);
02546          break;
02547       case GL_PIXEL_MAP_R_TO_R_SIZE:
02548          params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size);
02549          break;
02550       case GL_PIXEL_MAP_S_TO_S_SIZE:
02551          params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size);
02552          break;
02553       case GL_POINT_SIZE:
02554          params[0] = ctx->Point.Size;
02555          break;
02556       case GL_POINT_SIZE_GRANULARITY:
02557          params[0] = ctx->Const.PointSizeGranularity;
02558          break;
02559       case GL_POINT_SIZE_RANGE:
02560          params[0] = ctx->Const.MinPointSizeAA;
02561          params[1] = ctx->Const.MaxPointSizeAA;
02562          break;
02563       case GL_ALIASED_POINT_SIZE_RANGE:
02564          params[0] = ctx->Const.MinPointSize;
02565          params[1] = ctx->Const.MaxPointSize;
02566          break;
02567       case GL_POINT_SMOOTH:
02568          params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
02569          break;
02570       case GL_POINT_SMOOTH_HINT:
02571          params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
02572          break;
02573       case GL_POINT_SIZE_MIN_EXT:
02574          params[0] = ctx->Point.MinSize;
02575          break;
02576       case GL_POINT_SIZE_MAX_EXT:
02577          params[0] = ctx->Point.MaxSize;
02578          break;
02579       case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
02580          params[0] = ctx->Point.Threshold;
02581          break;
02582       case GL_DISTANCE_ATTENUATION_EXT:
02583          params[0] = ctx->Point.Params[0];
02584          params[1] = ctx->Point.Params[1];
02585          params[2] = ctx->Point.Params[2];
02586          break;
02587       case GL_POLYGON_MODE:
02588          params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
02589          params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
02590          break;
02591       case GL_POLYGON_OFFSET_BIAS_EXT:
02592          params[0] = ctx->Polygon.OffsetUnits;
02593          break;
02594       case GL_POLYGON_OFFSET_FACTOR:
02595          params[0] = ctx->Polygon.OffsetFactor ;
02596          break;
02597       case GL_POLYGON_OFFSET_UNITS:
02598          params[0] = ctx->Polygon.OffsetUnits ;
02599          break;
02600       case GL_POLYGON_OFFSET_POINT:
02601          params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint);
02602          break;
02603       case GL_POLYGON_OFFSET_LINE:
02604          params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine);
02605          break;
02606       case GL_POLYGON_OFFSET_FILL:
02607          params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill);
02608          break;
02609       case GL_POLYGON_SMOOTH:
02610          params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
02611          break;
02612       case GL_POLYGON_SMOOTH_HINT:
02613          params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
02614          break;
02615       case GL_POLYGON_STIPPLE:
02616          params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
02617          break;
02618       case GL_PROJECTION_MATRIX:
02619          {
02620          const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
02621          params[0] = matrix[0];
02622          params[1] = matrix[1];
02623          params[2] = matrix[2];
02624          params[3] = matrix[3];
02625          params[4] = matrix[4];
02626          params[5] = matrix[5];
02627          params[6] = matrix[6];
02628          params[7] = matrix[7];
02629          params[8] = matrix[8];
02630          params[9] = matrix[9];
02631          params[10] = matrix[10];
02632          params[11] = matrix[11];
02633          params[12] = matrix[12];
02634          params[13] = matrix[13];
02635          params[14] = matrix[14];
02636          params[15] = matrix[15];
02637          }
02638          break;
02639       case GL_PROJECTION_STACK_DEPTH:
02640          params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
02641          break;
02642       case GL_READ_BUFFER:
02643          params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
02644          break;
02645       case GL_RED_BIAS:
02646          params[0] = ctx->Pixel.RedBias;
02647          break;
02648       case GL_RED_BITS:
02649          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits);
02650          break;
02651       case GL_RED_SCALE:
02652          params[0] = ctx->Pixel.RedScale;
02653          break;
02654       case GL_RENDER_MODE:
02655          params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
02656          break;
02657       case GL_RESCALE_NORMAL:
02658          params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
02659          break;
02660       case GL_RGBA_MODE:
02661          params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.rgbMode);
02662          break;
02663       case GL_SCISSOR_BOX:
02664          params[0] = (GLfloat)(ctx->Scissor.X);
02665          params[1] = (GLfloat)(ctx->Scissor.Y);
02666          params[2] = (GLfloat)(ctx->Scissor.Width);
02667          params[3] = (GLfloat)(ctx->Scissor.Height);
02668          break;
02669       case GL_SCISSOR_TEST:
02670          params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
02671          break;
02672       case GL_SELECTION_BUFFER_SIZE:
02673          params[0] = (GLfloat)(ctx->Select.BufferSize);
02674          break;
02675       case GL_SHADE_MODEL:
02676          params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
02677          break;
02678       case GL_SHARED_TEXTURE_PALETTE_EXT:
02679          params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
02680          break;
02681       case GL_STENCIL_BITS:
02682          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
02683          break;
02684       case GL_STENCIL_CLEAR_VALUE:
02685          params[0] = (GLfloat)(ctx->Stencil.Clear);
02686          break;
02687       case GL_STENCIL_FAIL:
02688          params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
02689          break;
02690       case GL_STENCIL_FUNC:
02691          params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
02692          break;
02693       case GL_STENCIL_PASS_DEPTH_FAIL:
02694          params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
02695          break;
02696       case GL_STENCIL_PASS_DEPTH_PASS:
02697          params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
02698          break;
02699       case GL_STENCIL_REF:
02700          params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
02701          break;
02702       case GL_STENCIL_TEST:
02703          params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
02704          break;
02705       case GL_STENCIL_VALUE_MASK:
02706          params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
02707          break;
02708       case GL_STENCIL_WRITEMASK:
02709          params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
02710          break;
02711       case GL_STEREO:
02712          params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
02713          break;
02714       case GL_SUBPIXEL_BITS:
02715          params[0] = (GLfloat)(ctx->Const.SubPixelBits);
02716          break;
02717       case GL_TEXTURE_1D:
02718          params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
02719          break;
02720       case GL_TEXTURE_2D:
02721          params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
02722          break;
02723       case GL_TEXTURE_3D:
02724          params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
02725          break;
02726       case GL_TEXTURE_1D_ARRAY_EXT:
02727          CHECK_EXT1(MESA_texture_array, "GetFloatv");
02728          params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
02729          break;
02730       case GL_TEXTURE_2D_ARRAY_EXT:
02731          CHECK_EXT1(MESA_texture_array, "GetFloatv");
02732          params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
02733          break;
02734       case GL_TEXTURE_BINDING_1D:
02735          params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
02736          break;
02737       case GL_TEXTURE_BINDING_2D:
02738          params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
02739          break;
02740       case GL_TEXTURE_BINDING_3D:
02741          params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
02742          break;
02743       case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
02744          CHECK_EXT1(MESA_texture_array, "GetFloatv");
02745          params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
02746          break;
02747       case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
02748          CHECK_EXT1(MESA_texture_array, "GetFloatv");
02749          params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
02750          break;
02751       case GL_TEXTURE_GEN_S:
02752          params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
02753          break;
02754       case GL_TEXTURE_GEN_T:
02755          params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
02756          break;
02757       case GL_TEXTURE_GEN_R:
02758          params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
02759          break;
02760       case GL_TEXTURE_GEN_Q:
02761          params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
02762          break;
02763       case GL_TEXTURE_MATRIX:
02764          {
02765          const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
02766          params[0] = matrix[0];
02767          params[1] = matrix[1];
02768          params[2] = matrix[2];
02769          params[3] = matrix[3];
02770          params[4] = matrix[4];
02771          params[5] = matrix[5];
02772          params[6] = matrix[6];
02773          params[7] = matrix[7];
02774          params[8] = matrix[8];
02775          params[9] = matrix[9];
02776          params[10] = matrix[10];
02777          params[11] = matrix[11];
02778          params[12] = matrix[12];
02779          params[13] = matrix[13];
02780          params[14] = matrix[14];
02781          params[15] = matrix[15];
02782          }
02783          break;
02784       case GL_TEXTURE_STACK_DEPTH:
02785          params[0] = (GLfloat)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1);
02786          break;
02787       case GL_UNPACK_ALIGNMENT:
02788          params[0] = (GLfloat)(ctx->Unpack.Alignment);
02789          break;
02790       case GL_UNPACK_LSB_FIRST:
02791          params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
02792          break;
02793       case GL_UNPACK_ROW_LENGTH:
02794          params[0] = (GLfloat)(ctx->Unpack.RowLength);
02795          break;
02796       case GL_UNPACK_SKIP_PIXELS:
02797          params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
02798          break;
02799       case GL_UNPACK_SKIP_ROWS:
02800          params[0] = (GLfloat)(ctx->Unpack.SkipRows);
02801          break;
02802       case GL_UNPACK_SWAP_BYTES:
02803          params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
02804          break;
02805       case GL_UNPACK_SKIP_IMAGES_EXT:
02806          params[0] = (GLfloat)(ctx->Unpack.SkipImages);
02807          break;
02808       case GL_UNPACK_IMAGE_HEIGHT_EXT:
02809          params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
02810          break;
02811       case GL_UNPACK_CLIENT_STORAGE_APPLE:
02812          params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
02813          break;
02814       case GL_VIEWPORT:
02815          params[0] = (GLfloat)(ctx->Viewport.X);
02816          params[1] = (GLfloat)(ctx->Viewport.Y);
02817          params[2] = (GLfloat)(ctx->Viewport.Width);
02818          params[3] = (GLfloat)(ctx->Viewport.Height);
02819          break;
02820       case GL_ZOOM_X:
02821          params[0] = ctx->Pixel.ZoomX;
02822          break;
02823       case GL_ZOOM_Y:
02824          params[0] = ctx->Pixel.ZoomY;
02825          break;
02826       case GL_VERTEX_ARRAY:
02827          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
02828          break;
02829       case GL_VERTEX_ARRAY_SIZE:
02830          params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
02831          break;
02832       case GL_VERTEX_ARRAY_TYPE:
02833          params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
02834          break;
02835       case GL_VERTEX_ARRAY_STRIDE:
02836          params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
02837          break;
02838       case GL_VERTEX_ARRAY_COUNT_EXT:
02839          params[0] = (GLfloat)(0);
02840          break;
02841       case GL_NORMAL_ARRAY:
02842          params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
02843          break;
02844       case GL_NORMAL_ARRAY_TYPE:
02845          params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
02846          break;
02847       case GL_NORMAL_ARRAY_STRIDE:
02848          params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
02849          break;
02850       case GL_NORMAL_ARRAY_COUNT_EXT:
02851          params[0] = (GLfloat)(0);
02852          break;
02853       case GL_COLOR_ARRAY:
02854          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
02855          break;
02856       case GL_COLOR_ARRAY_SIZE:
02857          params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
02858          break;
02859       case GL_COLOR_ARRAY_TYPE:
02860          params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
02861          break;
02862       case GL_COLOR_ARRAY_STRIDE:
02863          params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
02864          break;
02865       case GL_COLOR_ARRAY_COUNT_EXT:
02866          params[0] = (GLfloat)(0);
02867          break;
02868       case GL_INDEX_ARRAY:
02869          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
02870          break;
02871       case GL_INDEX_ARRAY_TYPE:
02872          params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
02873          break;
02874       case GL_INDEX_ARRAY_STRIDE:
02875          params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
02876          break;
02877       case GL_INDEX_ARRAY_COUNT_EXT:
02878          params[0] = (GLfloat)(0);
02879          break;
02880       case GL_TEXTURE_COORD_ARRAY:
02881          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
02882          break;
02883       case GL_TEXTURE_COORD_ARRAY_SIZE:
02884          params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
02885          break;
02886       case GL_TEXTURE_COORD_ARRAY_TYPE:
02887          params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
02888          break;
02889       case GL_TEXTURE_COORD_ARRAY_STRIDE:
02890          params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
02891          break;
02892       case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
02893          params[0] = (GLfloat)(0);
02894          break;
02895       case GL_EDGE_FLAG_ARRAY:
02896          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
02897          break;
02898       case GL_EDGE_FLAG_ARRAY_STRIDE:
02899          params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
02900          break;
02901       case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
02902          params[0] = (GLfloat)(0);
02903          break;
02904       case GL_MAX_TEXTURE_UNITS_ARB:
02905          CHECK_EXT1(ARB_multitexture, "GetFloatv");
02906          params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
02907          break;
02908       case GL_ACTIVE_TEXTURE_ARB:
02909          CHECK_EXT1(ARB_multitexture, "GetFloatv");
02910          params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
02911          break;
02912       case GL_CLIENT_ACTIVE_TEXTURE_ARB:
02913          CHECK_EXT1(ARB_multitexture, "GetFloatv");
02914          params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
02915          break;
02916       case GL_TEXTURE_CUBE_MAP_ARB:
02917          CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
02918          params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
02919          break;
02920       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
02921          CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
02922          params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
02923          break;
02924       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
02925          CHECK_EXT1(ARB_texture_cube_map, "GetFloatv");
02926          params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
02927          break;
02928       case GL_TEXTURE_COMPRESSION_HINT_ARB:
02929          CHECK_EXT1(ARB_texture_compression, "GetFloatv");
02930          params[0] = (GLfloat)(ctx->Hint.TextureCompression);
02931          break;
02932       case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
02933          CHECK_EXT1(ARB_texture_compression, "GetFloatv");
02934          params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
02935          break;
02936       case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
02937          CHECK_EXT1(ARB_texture_compression, "GetFloatv");
02938          {
02939          GLint formats[100];
02940          GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
02941          ASSERT(n <= 100);
02942          for (i = 0; i < n; i++)
02943             params[i] = ENUM_TO_FLOAT(formats[i]);
02944          }
02945          break;
02946       case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
02947          CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
02948          params[0] = (GLfloat)(ctx->Array.LockFirst);
02949          break;
02950       case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
02951          CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv");
02952          params[0] = (GLfloat)(ctx->Array.LockCount);
02953          break;
02954       case GL_TRANSPOSE_COLOR_MATRIX_ARB:
02955          {
02956          const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
02957          params[0] = matrix[0];
02958          params[1] = matrix[4];
02959          params[2] = matrix[8];
02960          params[3] = matrix[12];
02961          params[4] = matrix[1];
02962          params[5] = matrix[5];
02963          params[6] = matrix[9];
02964          params[7] = matrix[13];
02965          params[8] = matrix[2];
02966          params[9] = matrix[6];
02967          params[10] = matrix[10];
02968          params[11] = matrix[14];
02969          params[12] = matrix[3];
02970          params[13] = matrix[7];
02971          params[14] = matrix[11];
02972          params[15] = matrix[15];
02973          }
02974          break;
02975       case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
02976          {
02977          const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
02978          params[0] = matrix[0];
02979          params[1] = matrix[4];
02980          params[2] = matrix[8];
02981          params[3] = matrix[12];
02982          params[4] = matrix[1];
02983          params[5] = matrix[5];
02984          params[6] = matrix[9];
02985          params[7] = matrix[13];
02986          params[8] = matrix[2];
02987          params[9] = matrix[6];
02988          params[10] = matrix[10];
02989          params[11] = matrix[14];
02990          params[12] = matrix[3];
02991          params[13] = matrix[7];
02992          params[14] = matrix[11];
02993          params[15] = matrix[15];
02994          }
02995          break;
02996       case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
02997          {
02998          const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
02999          params[0] = matrix[0];
03000          params[1] = matrix[4];
03001          params[2] = matrix[8];
03002          params[3] = matrix[12];
03003          params[4] = matrix[1];
03004          params[5] = matrix[5];
03005          params[6] = matrix[9];
03006          params[7] = matrix[13];
03007          params[8] = matrix[2];
03008          params[9] = matrix[6];
03009          params[10] = matrix[10];
03010          params[11] = matrix[14];
03011          params[12] = matrix[3];
03012          params[13] = matrix[7];
03013          params[14] = matrix[11];
03014          params[15] = matrix[15];
03015          }
03016          break;
03017       case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
03018          {
03019          const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
03020          params[0] = matrix[0];
03021          params[1] = matrix[4];
03022          params[2] = matrix[8];
03023          params[3] = matrix[12];
03024          params[4] = matrix[1];
03025          params[5] = matrix[5];
03026          params[6] = matrix[9];
03027          params[7] = matrix[13];
03028          params[8] = matrix[2];
03029          params[9] = matrix[6];
03030          params[10] = matrix[10];
03031          params[11] = matrix[14];
03032          params[12] = matrix[3];
03033          params[13] = matrix[7];
03034          params[14] = matrix[11];
03035          params[15] = matrix[15];
03036          }
03037          break;
03038       case GL_COLOR_MATRIX_SGI:
03039          {
03040          const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
03041          params[0] = matrix[0];
03042          params[1] = matrix[1];
03043          params[2] = matrix[2];
03044          params[3] = matrix[3];
03045          params[4] = matrix[4];
03046          params[5] = matrix[5];
03047          params[6] = matrix[6];
03048          params[7] = matrix[7];
03049          params[8] = matrix[8];
03050          params[9] = matrix[9];
03051          params[10] = matrix[10];
03052          params[11] = matrix[11];
03053          params[12] = matrix[12];
03054          params[13] = matrix[13];
03055          params[14] = matrix[14];
03056          params[15] = matrix[15];
03057          }
03058          break;
03059       case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
03060          params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
03061          break;
03062       case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
03063          params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
03064          break;
03065       case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
03066          params[0] = ctx->Pixel.PostColorMatrixScale[0];
03067          break;
03068       case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
03069          params[0] = ctx->Pixel.PostColorMatrixScale[1];
03070          break;
03071       case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
03072          params[0] = ctx->Pixel.PostColorMatrixScale[2];
03073          break;
03074       case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
03075          params[0] = ctx->Pixel.PostColorMatrixScale[3];
03076          break;
03077       case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
03078          params[0] = ctx->Pixel.PostColorMatrixBias[0];
03079          break;
03080       case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
03081          params[0] = ctx->Pixel.PostColorMatrixBias[1];
03082          break;
03083       case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
03084          params[0] = ctx->Pixel.PostColorMatrixBias[2];
03085          break;
03086       case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
03087          params[0] = ctx->Pixel.PostColorMatrixBias[3];
03088          break;
03089       case GL_CONVOLUTION_1D_EXT:
03090          CHECK_EXT1(EXT_convolution, "GetFloatv");
03091          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
03092          break;
03093       case GL_CONVOLUTION_2D_EXT:
03094          CHECK_EXT1(EXT_convolution, "GetFloatv");
03095          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
03096          break;
03097       case GL_SEPARABLE_2D_EXT:
03098          CHECK_EXT1(EXT_convolution, "GetFloatv");
03099          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
03100          break;
03101       case GL_POST_CONVOLUTION_RED_SCALE_EXT:
03102          CHECK_EXT1(EXT_convolution, "GetFloatv");
03103          params[0] = ctx->Pixel.PostConvolutionScale[0];
03104          break;
03105       case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
03106          CHECK_EXT1(EXT_convolution, "GetFloatv");
03107          params[0] = ctx->Pixel.PostConvolutionScale[1];
03108          break;
03109       case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
03110          CHECK_EXT1(EXT_convolution, "GetFloatv");
03111          params[0] = ctx->Pixel.PostConvolutionScale[2];
03112          break;
03113       case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
03114          CHECK_EXT1(EXT_convolution, "GetFloatv");
03115          params[0] = ctx->Pixel.PostConvolutionScale[3];
03116          break;
03117       case GL_POST_CONVOLUTION_RED_BIAS_EXT:
03118          CHECK_EXT1(EXT_convolution, "GetFloatv");
03119          params[0] = ctx->Pixel.PostConvolutionBias[0];
03120          break;
03121       case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
03122          CHECK_EXT1(EXT_convolution, "GetFloatv");
03123          params[0] = ctx->Pixel.PostConvolutionBias[1];
03124          break;
03125       case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
03126          CHECK_EXT1(EXT_convolution, "GetFloatv");
03127          params[0] = ctx->Pixel.PostConvolutionBias[2];
03128          break;
03129       case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
03130          CHECK_EXT1(EXT_convolution, "GetFloatv");
03131          params[0] = ctx->Pixel.PostConvolutionBias[3];
03132          break;
03133       case GL_HISTOGRAM:
03134          CHECK_EXT1(EXT_histogram, "GetFloatv");
03135          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
03136          break;
03137       case GL_MINMAX:
03138          CHECK_EXT1(EXT_histogram, "GetFloatv");
03139          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
03140          break;
03141       case GL_COLOR_TABLE_SGI:
03142          CHECK_EXT1(SGI_color_table, "GetFloatv");
03143          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
03144          break;
03145       case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
03146          CHECK_EXT1(SGI_color_table, "GetFloatv");
03147          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
03148          break;
03149       case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
03150          CHECK_EXT1(SGI_color_table, "GetFloatv");
03151          params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
03152          break;
03153       case GL_TEXTURE_COLOR_TABLE_SGI:
03154          CHECK_EXT1(SGI_texture_color_table, "GetFloatv");
03155          params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
03156          break;
03157       case GL_COLOR_SUM_EXT:
03158          CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv");
03159          params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
03160          break;
03161       case GL_CURRENT_SECONDARY_COLOR_EXT:
03162          CHECK_EXT1(EXT_secondary_color, "GetFloatv");
03163          {
03164          FLUSH_CURRENT(ctx, 0);
03165          params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
03166          params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
03167          params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
03168          params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
03169          }
03170          break;
03171       case GL_SECONDARY_COLOR_ARRAY_EXT:
03172          CHECK_EXT1(EXT_secondary_color, "GetFloatv");
03173          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
03174          break;
03175       case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
03176          CHECK_EXT1(EXT_secondary_color, "GetFloatv");
03177          params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
03178          break;
03179       case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
03180          CHECK_EXT1(EXT_secondary_color, "GetFloatv");
03181          params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
03182          break;
03183       case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
03184          CHECK_EXT1(EXT_secondary_color, "GetFloatv");
03185          params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
03186          break;
03187       case GL_CURRENT_FOG_COORDINATE_EXT:
03188          CHECK_EXT1(EXT_fog_coord, "GetFloatv");
03189          {
03190          FLUSH_CURRENT(ctx, 0);
03191          params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
03192          }
03193          break;
03194       case GL_FOG_COORDINATE_ARRAY_EXT:
03195          CHECK_EXT1(EXT_fog_coord, "GetFloatv");
03196          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
03197          break;
03198       case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
03199          CHECK_EXT1(EXT_fog_coord, "GetFloatv");
03200          params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
03201          break;
03202       case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
03203          CHECK_EXT1(EXT_fog_coord, "GetFloatv");
03204          params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
03205          break;
03206       case GL_FOG_COORDINATE_SOURCE_EXT:
03207          CHECK_EXT1(EXT_fog_coord, "GetFloatv");
03208          params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
03209          break;
03210       case GL_MAX_TEXTURE_LOD_BIAS_EXT:
03211          CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv");
03212          params[0] = ctx->Const.MaxTextureLodBias;
03213          break;
03214       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
03215          CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv");
03216          params[0] = ctx->Const.MaxTextureMaxAnisotropy;
03217          break;
03218       case GL_MULTISAMPLE_ARB:
03219          CHECK_EXT1(ARB_multisample, "GetFloatv");
03220          params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
03221          break;
03222       case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
03223          CHECK_EXT1(ARB_multisample, "GetFloatv");
03224          params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
03225          break;
03226       case GL_SAMPLE_ALPHA_TO_ONE_ARB:
03227          CHECK_EXT1(ARB_multisample, "GetFloatv");
03228          params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
03229          break;
03230       case GL_SAMPLE_COVERAGE_ARB:
03231          CHECK_EXT1(ARB_multisample, "GetFloatv");
03232          params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
03233          break;
03234       case GL_SAMPLE_COVERAGE_VALUE_ARB:
03235          CHECK_EXT1(ARB_multisample, "GetFloatv");
03236          params[0] = ctx->Multisample.SampleCoverageValue;
03237          break;
03238       case GL_SAMPLE_COVERAGE_INVERT_ARB:
03239          CHECK_EXT1(ARB_multisample, "GetFloatv");
03240          params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
03241          break;
03242       case GL_SAMPLE_BUFFERS_ARB:
03243          CHECK_EXT1(ARB_multisample, "GetFloatv");
03244          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
03245          break;
03246       case GL_SAMPLES_ARB:
03247          CHECK_EXT1(ARB_multisample, "GetFloatv");
03248          params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
03249          break;
03250       case GL_RASTER_POSITION_UNCLIPPED_IBM:
03251          CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv");
03252          params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
03253          break;
03254       case GL_POINT_SPRITE_NV:
03255          CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
03256          params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
03257          break;
03258       case GL_POINT_SPRITE_R_MODE_NV:
03259          CHECK_EXT1(NV_point_sprite, "GetFloatv");
03260          params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
03261          break;
03262       case GL_POINT_SPRITE_COORD_ORIGIN:
03263          CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv");
03264          params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
03265          break;
03266       case GL_GENERATE_MIPMAP_HINT_SGIS:
03267          CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv");
03268          params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
03269          break;
03270       case GL_VERTEX_PROGRAM_BINDING_NV:
03271          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03272          params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
03273          break;
03274       case GL_VERTEX_ATTRIB_ARRAY0_NV:
03275          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03276          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
03277          break;
03278       case GL_VERTEX_ATTRIB_ARRAY1_NV:
03279          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03280          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
03281          break;
03282       case GL_VERTEX_ATTRIB_ARRAY2_NV:
03283          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03284          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
03285          break;
03286       case GL_VERTEX_ATTRIB_ARRAY3_NV:
03287          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03288          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
03289          break;
03290       case GL_VERTEX_ATTRIB_ARRAY4_NV:
03291          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03292          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
03293          break;
03294       case GL_VERTEX_ATTRIB_ARRAY5_NV:
03295          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03296          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
03297          break;
03298       case GL_VERTEX_ATTRIB_ARRAY6_NV:
03299          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03300          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
03301          break;
03302       case GL_VERTEX_ATTRIB_ARRAY7_NV:
03303          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03304          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
03305          break;
03306       case GL_VERTEX_ATTRIB_ARRAY8_NV:
03307          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03308          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
03309          break;
03310       case GL_VERTEX_ATTRIB_ARRAY9_NV:
03311          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03312          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
03313          break;
03314       case GL_VERTEX_ATTRIB_ARRAY10_NV:
03315          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03316          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
03317          break;
03318       case GL_VERTEX_ATTRIB_ARRAY11_NV:
03319          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03320          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
03321          break;
03322       case GL_VERTEX_ATTRIB_ARRAY12_NV:
03323          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03324          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
03325          break;
03326       case GL_VERTEX_ATTRIB_ARRAY13_NV:
03327          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03328          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
03329          break;
03330       case GL_VERTEX_ATTRIB_ARRAY14_NV:
03331          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03332          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
03333          break;
03334       case GL_VERTEX_ATTRIB_ARRAY15_NV:
03335          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03336          params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
03337          break;
03338       case GL_MAP1_VERTEX_ATTRIB0_4_NV:
03339          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03340          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
03341          break;
03342       case GL_MAP1_VERTEX_ATTRIB1_4_NV:
03343          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03344          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
03345          break;
03346       case GL_MAP1_VERTEX_ATTRIB2_4_NV:
03347          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03348          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
03349          break;
03350       case GL_MAP1_VERTEX_ATTRIB3_4_NV:
03351          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03352          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
03353          break;
03354       case GL_MAP1_VERTEX_ATTRIB4_4_NV:
03355          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03356          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
03357          break;
03358       case GL_MAP1_VERTEX_ATTRIB5_4_NV:
03359          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03360          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
03361          break;
03362       case GL_MAP1_VERTEX_ATTRIB6_4_NV:
03363          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03364          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
03365          break;
03366       case GL_MAP1_VERTEX_ATTRIB7_4_NV:
03367          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03368          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
03369          break;
03370       case GL_MAP1_VERTEX_ATTRIB8_4_NV:
03371          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03372          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
03373          break;
03374       case GL_MAP1_VERTEX_ATTRIB9_4_NV:
03375          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03376          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
03377          break;
03378       case GL_MAP1_VERTEX_ATTRIB10_4_NV:
03379          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03380          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
03381          break;
03382       case GL_MAP1_VERTEX_ATTRIB11_4_NV:
03383          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03384          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
03385          break;
03386       case GL_MAP1_VERTEX_ATTRIB12_4_NV:
03387          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03388          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
03389          break;
03390       case GL_MAP1_VERTEX_ATTRIB13_4_NV:
03391          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03392          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
03393          break;
03394       case GL_MAP1_VERTEX_ATTRIB14_4_NV:
03395          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03396          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
03397          break;
03398       case GL_MAP1_VERTEX_ATTRIB15_4_NV:
03399          CHECK_EXT1(NV_vertex_program, "GetFloatv");
03400          params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
03401          break;
03402       case GL_FRAGMENT_PROGRAM_NV:
03403          CHECK_EXT1(NV_fragment_program, "GetFloatv");
03404          params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
03405          break;
03406       case GL_FRAGMENT_PROGRAM_BINDING_NV:
03407          CHECK_EXT1(NV_fragment_program, "GetFloatv");
03408          params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
03409          break;
03410       case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
03411          CHECK_EXT1(NV_fragment_program, "GetFloatv");
03412          params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
03413          break;
03414       case GL_TEXTURE_RECTANGLE_NV:
03415          CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
03416          params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
03417          break;
03418       case GL_TEXTURE_BINDING_RECTANGLE_NV:
03419          CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
03420          params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
03421          break;
03422       case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
03423          CHECK_EXT1(NV_texture_rectangle, "GetFloatv");
03424          params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
03425          break;
03426       case GL_STENCIL_TEST_TWO_SIDE_EXT:
03427          CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
03428          params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
03429          break;
03430       case GL_ACTIVE_STENCIL_FACE_EXT:
03431          CHECK_EXT1(EXT_stencil_two_side, "GetFloatv");
03432          params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
03433          break;
03434       case GL_MAX_SHININESS_NV:
03435          CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
03436          params[0] = ctx->Const.MaxShininess;
03437          break;
03438       case GL_MAX_SPOT_EXPONENT_NV:
03439          CHECK_EXT1(NV_light_max_exponent, "GetFloatv");
03440          params[0] = ctx->Const.MaxSpotExponent;
03441          break;
03442       case GL_ARRAY_BUFFER_BINDING_ARB:
03443          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03444          params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
03445          break;
03446       case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
03447          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03448          params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
03449          break;
03450       case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
03451          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03452          params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
03453          break;
03454       case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
03455          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03456          params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
03457          break;
03458       case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
03459          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03460          params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
03461          break;
03462       case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
03463          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03464          params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
03465          break;
03466       case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
03467          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03468          params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
03469          break;
03470       case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
03471          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03472          params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
03473          break;
03474       case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
03475          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03476          params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
03477          break;
03478       case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
03479          CHECK_EXT1(ARB_vertex_buffer_object, "GetFloatv");
03480          params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
03481          break;
03482       case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
03483          CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
03484          params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
03485          break;
03486       case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
03487          CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv");
03488          params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
03489          break;
03490       case GL_VERTEX_PROGRAM_ARB:
03491          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
03492          params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
03493          break;
03494       case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
03495          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
03496          params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
03497          break;
03498       case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
03499          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv");
03500          params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
03501          break;
03502       case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
03503          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
03504          params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
03505          break;
03506       case GL_MAX_PROGRAM_MATRICES_ARB:
03507          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
03508          params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
03509          break;
03510       case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
03511          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv");
03512          params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
03513          break;
03514       case GL_CURRENT_MATRIX_ARB:
03515          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv");
03516          {
03517          const GLfloat *matrix = ctx->CurrentStack->Top->m;
03518          params[0] = matrix[0];
03519          params[1] = matrix[1];
03520          params[2] = matrix[2];
03521          params[3] = matrix[3];
03522          params[4] = matrix[4];
03523          params[5] = matrix[5];
03524          params[6] = matrix[6];
03525          params[7] = matrix[7];
03526          params[8] = matrix[8];
03527          params[9] = matrix[9];
03528          params[10] = matrix[10];
03529          params[11] = matrix[11];
03530          params[12] = matrix[12];
03531          params[13] = matrix[13];
03532          params[14] = matrix[14];
03533          params[15] = matrix[15];
03534          }
03535          break;
03536       case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
03537          CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv");
03538          {
03539          const GLfloat *matrix = ctx->CurrentStack->Top->m;
03540          params[0] = matrix[0];
03541          params[1] = matrix[4];
03542          params[2] = matrix[8];
03543          params[3] = matrix[12];
03544          params[4] = matrix[1];
03545          params[5] = matrix[5];
03546          params[6] = matrix[9];
03547          params[7] = matrix[13];
03548          params[8] = matrix[2];
03549          params[9] = matrix[6];
03550          params[10] = matrix[10];
03551          params[11] = matrix[14];
03552          params[12] = matrix[3];
03553          params[13] = matrix[7];
03554          params[14] = matrix[11];
03555          params[15] = matrix[15];
03556          }
03557          break;
03558       case GL_MAX_VERTEX_ATTRIBS_ARB:
03559          CHECK_EXT1(ARB_vertex_program, "GetFloatv");
03560          params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
03561          break;
03562       case GL_PROGRAM_ERROR_POSITION_ARB:
03563          CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv");
03564          params[0] = (GLfloat)(ctx->Program.ErrorPos);
03565          break;
03566       case GL_FRAGMENT_PROGRAM_ARB:
03567          CHECK_EXT1(ARB_fragment_program, "GetFloatv");
03568          params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
03569          break;
03570       case GL_MAX_TEXTURE_COORDS_ARB:
03571          CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
03572          params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
03573          break;
03574       case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
03575          CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv");
03576          params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
03577          break;
03578       case GL_DEPTH_BOUNDS_TEST_EXT:
03579          CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
03580          params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
03581          break;
03582       case GL_DEPTH_BOUNDS_EXT:
03583          CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv");
03584          params[0] = ctx->Depth.BoundsMin;
03585          params[1] = ctx->Depth.BoundsMax;
03586          break;
03587       case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
03588          CHECK_EXT1(MESA_program_debug, "GetFloatv");
03589          params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.CallbackEnabled);
03590          break;
03591       case GL_VERTEX_PROGRAM_CALLBACK_MESA:
03592          CHECK_EXT1(MESA_program_debug, "GetFloatv");
03593          params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.CallbackEnabled);
03594          break;
03595       case GL_FRAGMENT_PROGRAM_POSITION_MESA:
03596          CHECK_EXT1(MESA_program_debug, "GetFloatv");
03597          params[0] = (GLfloat)(ctx->FragmentProgram.CurrentPosition);
03598          break;
03599       case GL_VERTEX_PROGRAM_POSITION_MESA:
03600          CHECK_EXT1(MESA_program_debug, "GetFloatv");
03601          params[0] = (GLfloat)(ctx->VertexProgram.CurrentPosition);
03602          break;
03603       case GL_MAX_DRAW_BUFFERS_ARB:
03604          CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
03605          params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
03606          break;
03607       case GL_DRAW_BUFFER0_ARB:
03608          CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
03609          params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
03610          break;
03611       case GL_DRAW_BUFFER1_ARB:
03612          CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
03613          {
03614          GLenum buffer;
03615          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
03616             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
03617             return;
03618          }
03619          buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
03620          params[0] = ENUM_TO_FLOAT(buffer);
03621          }
03622          break;
03623       case GL_DRAW_BUFFER2_ARB:
03624          CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
03625          {
03626          GLenum buffer;
03627          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
03628             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
03629             return;
03630          }
03631          buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
03632          params[0] = ENUM_TO_FLOAT(buffer);
03633          }
03634          break;
03635       case GL_DRAW_BUFFER3_ARB:
03636          CHECK_EXT1(ARB_draw_buffers, "GetFloatv");
03637          {
03638          GLenum buffer;
03639          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
03640             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
03641             return;
03642          }
03643          buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
03644          params[0] = ENUM_TO_FLOAT(buffer);
03645          }
03646          break;
03647       case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
03648          CHECK_EXT1(OES_read_format, "GetFloatv");
03649          params[0] = (GLfloat)(ctx->Const.ColorReadType);
03650          break;
03651       case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
03652          CHECK_EXT1(OES_read_format, "GetFloatv");
03653          params[0] = (GLfloat)(ctx->Const.ColorReadFormat);
03654          break;
03655       case GL_NUM_FRAGMENT_REGISTERS_ATI:
03656          CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
03657          params[0] = (GLfloat)(6);
03658          break;
03659       case GL_NUM_FRAGMENT_CONSTANTS_ATI:
03660          CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
03661          params[0] = (GLfloat)(8);
03662          break;
03663       case GL_NUM_PASSES_ATI:
03664          CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
03665          params[0] = (GLfloat)(2);
03666          break;
03667       case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
03668          CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
03669          params[0] = (GLfloat)(8);
03670          break;
03671       case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
03672          CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
03673          params[0] = (GLfloat)(16);
03674          break;
03675       case GL_COLOR_ALPHA_PAIRING_ATI:
03676          CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
03677          params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
03678          break;
03679       case GL_NUM_LOOPBACK_COMPONENTS_ATI:
03680          CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
03681          params[0] = (GLfloat)(3);
03682          break;
03683       case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
03684          CHECK_EXT1(ATI_fragment_shader, "GetFloatv");
03685          params[0] = (GLfloat)(3);
03686          break;
03687       case GL_STENCIL_BACK_FUNC:
03688          params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
03689          break;
03690       case GL_STENCIL_BACK_VALUE_MASK:
03691          params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
03692          break;
03693       case GL_STENCIL_BACK_WRITEMASK:
03694          params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]);
03695          break;
03696       case GL_STENCIL_BACK_REF:
03697          params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
03698          break;
03699       case GL_STENCIL_BACK_FAIL:
03700          params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
03701          break;
03702       case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
03703          params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
03704          break;
03705       case GL_STENCIL_BACK_PASS_DEPTH_PASS:
03706          params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
03707          break;
03708       case GL_FRAMEBUFFER_BINDING_EXT:
03709          CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
03710          params[0] = (GLfloat)(ctx->DrawBuffer->Name);
03711          break;
03712       case GL_RENDERBUFFER_BINDING_EXT:
03713          CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
03714          params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
03715          break;
03716       case GL_MAX_COLOR_ATTACHMENTS_EXT:
03717          CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
03718          params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
03719          break;
03720       case GL_MAX_RENDERBUFFER_SIZE_EXT:
03721          CHECK_EXT1(EXT_framebuffer_object, "GetFloatv");
03722          params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
03723          break;
03724       case GL_READ_FRAMEBUFFER_BINDING_EXT:
03725          CHECK_EXT1(EXT_framebuffer_blit, "GetFloatv");
03726          params[0] = (GLfloat)(ctx->ReadBuffer->Name);
03727          break;
03728       case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
03729          CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
03730          params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents);
03731          break;
03732       case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
03733          CHECK_EXT1(ARB_fragment_shader, "GetFloatv");
03734          params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
03735          break;
03736       case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
03737          CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
03738          params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents);
03739          break;
03740       case GL_MAX_VARYING_FLOATS_ARB:
03741          CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
03742          params[0] = (GLfloat)(ctx->Const.MaxVarying * 4);
03743          break;
03744       case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
03745          CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
03746          params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits);
03747          break;
03748       case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
03749          CHECK_EXT1(ARB_vertex_shader, "GetFloatv");
03750          params[0] = (GLfloat)(MAX_COMBINED_TEXTURE_IMAGE_UNITS);
03751          break;
03752       case GL_CURRENT_PROGRAM:
03753          CHECK_EXT1(ARB_shader_objects, "GetFloatv");
03754          params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
03755          break;
03756       default:
03757          _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
03758    }
03759 }
03760 
03761 void GLAPIENTRY
03762 _mesa_GetIntegerv( GLenum pname, GLint *params )
03763 {
03764    GET_CURRENT_CONTEXT(ctx);
03765    ASSERT_OUTSIDE_BEGIN_END(ctx);
03766 
03767    if (!params)
03768       return;
03769 
03770    if (ctx->NewState)
03771       _mesa_update_state(ctx);
03772 
03773    if (ctx->Driver.GetIntegerv &&
03774        ctx->Driver.GetIntegerv(ctx, pname, params))
03775       return;
03776 
03777    switch (pname) {
03778       case GL_ACCUM_RED_BITS:
03779          params[0] = ctx->DrawBuffer->Visual.accumRedBits;
03780          break;
03781       case GL_ACCUM_GREEN_BITS:
03782          params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
03783          break;
03784       case GL_ACCUM_BLUE_BITS:
03785          params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
03786          break;
03787       case GL_ACCUM_ALPHA_BITS:
03788          params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
03789          break;
03790       case GL_ACCUM_CLEAR_VALUE:
03791          params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
03792          params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
03793          params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
03794          params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
03795          break;
03796       case GL_ALPHA_BIAS:
03797          params[0] = IROUND(ctx->Pixel.AlphaBias);
03798          break;
03799       case GL_ALPHA_BITS:
03800          params[0] = ctx->DrawBuffer->Visual.alphaBits;
03801          break;
03802       case GL_ALPHA_SCALE:
03803          params[0] = IROUND(ctx->Pixel.AlphaScale);
03804          break;
03805       case GL_ALPHA_TEST:
03806          params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
03807          break;
03808       case GL_ALPHA_TEST_FUNC:
03809          params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
03810          break;
03811       case GL_ALPHA_TEST_REF:
03812          params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
03813          break;
03814       case GL_ATTRIB_STACK_DEPTH:
03815          params[0] = ctx->AttribStackDepth;
03816          break;
03817       case GL_AUTO_NORMAL:
03818          params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
03819          break;
03820       case GL_AUX_BUFFERS:
03821          params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
03822          break;
03823       case GL_BLEND:
03824          params[0] = BOOLEAN_TO_INT(ctx->Color.BlendEnabled);
03825          break;
03826       case GL_BLEND_DST:
03827          params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
03828          break;
03829       case GL_BLEND_SRC:
03830          params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
03831          break;
03832       case GL_BLEND_SRC_RGB_EXT:
03833          params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
03834          break;
03835       case GL_BLEND_DST_RGB_EXT:
03836          params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
03837          break;
03838       case GL_BLEND_SRC_ALPHA_EXT:
03839          params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
03840          break;
03841       case GL_BLEND_DST_ALPHA_EXT:
03842          params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
03843          break;
03844       case GL_BLEND_EQUATION:
03845          params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
03846          break;
03847       case GL_BLEND_EQUATION_ALPHA_EXT:
03848          params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
03849          break;
03850       case GL_BLEND_COLOR_EXT:
03851          params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
03852          params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
03853          params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
03854          params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
03855          break;
03856       case GL_BLUE_BIAS:
03857          params[0] = IROUND(ctx->Pixel.BlueBias);
03858          break;
03859       case GL_BLUE_BITS:
03860          params[0] = ctx->DrawBuffer->Visual.blueBits;
03861          break;
03862       case GL_BLUE_SCALE:
03863          params[0] = IROUND(ctx->Pixel.BlueScale);
03864          break;
03865       case GL_CLIENT_ATTRIB_STACK_DEPTH:
03866          params[0] = ctx->ClientAttribStackDepth;
03867          break;
03868       case GL_CLIP_PLANE0:
03869          params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
03870          break;
03871       case GL_CLIP_PLANE1:
03872          params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
03873          break;
03874       case GL_CLIP_PLANE2:
03875          params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
03876          break;
03877       case GL_CLIP_PLANE3:
03878          params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
03879          break;
03880       case GL_CLIP_PLANE4:
03881          params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
03882          break;
03883       case GL_CLIP_PLANE5:
03884          params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
03885          break;
03886       case GL_COLOR_CLEAR_VALUE:
03887          params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
03888          params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
03889          params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
03890          params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
03891          break;
03892       case GL_COLOR_MATERIAL:
03893          params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
03894          break;
03895       case GL_COLOR_MATERIAL_FACE:
03896          params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
03897          break;
03898       case GL_COLOR_MATERIAL_PARAMETER:
03899          params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
03900          break;
03901       case GL_COLOR_WRITEMASK:
03902          params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0;
03903          params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0;
03904          params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0;
03905          params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0;
03906          break;
03907       case GL_CULL_FACE:
03908          params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
03909          break;
03910       case GL_CULL_FACE_MODE:
03911          params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
03912          break;
03913       case GL_CURRENT_COLOR:
03914          {
03915          FLUSH_CURRENT(ctx, 0);
03916          params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
03917          params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
03918          params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
03919          params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
03920          }
03921          break;
03922       case GL_CURRENT_INDEX:
03923          {
03924          FLUSH_CURRENT(ctx, 0);
03925          params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
03926          }
03927          break;
03928       case GL_CURRENT_NORMAL:
03929          {
03930          FLUSH_CURRENT(ctx, 0);
03931          params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
03932          params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
03933          params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
03934          }
03935          break;
03936       case GL_CURRENT_RASTER_COLOR:
03937          params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
03938          params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
03939          params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
03940          params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
03941          break;
03942       case GL_CURRENT_RASTER_DISTANCE:
03943          params[0] = IROUND(ctx->Current.RasterDistance);
03944          break;
03945       case GL_CURRENT_RASTER_INDEX:
03946          params[0] = IROUND(ctx->Current.RasterIndex);
03947          break;
03948       case GL_CURRENT_RASTER_POSITION:
03949          params[0] = IROUND(ctx->Current.RasterPos[0]);
03950          params[1] = IROUND(ctx->Current.RasterPos[1]);
03951          params[2] = IROUND(ctx->Current.RasterPos[2]);
03952          params[3] = IROUND(ctx->Current.RasterPos[3]);
03953          break;
03954       case GL_CURRENT_RASTER_SECONDARY_COLOR:
03955          params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
03956          params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
03957          params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
03958          params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
03959          break;
03960       case GL_CURRENT_RASTER_TEXTURE_COORDS:
03961          {
03962          const GLuint texUnit = ctx->Texture.CurrentUnit;
03963          params[0] = IROUND(ctx->Current.RasterTexCoords[texUnit][0]);
03964          params[1] = IROUND(ctx->Current.RasterTexCoords[texUnit][1]);
03965          params[2] = IROUND(ctx->Current.RasterTexCoords[texUnit][2]);
03966          params[3] = IROUND(ctx->Current.RasterTexCoords[texUnit][3]);
03967          }
03968          break;
03969       case GL_CURRENT_RASTER_POSITION_VALID:
03970          params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
03971          break;
03972       case GL_CURRENT_TEXTURE_COORDS:
03973          {
03974          const GLuint texUnit = ctx->Texture.CurrentUnit;
03975          params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]);
03976          params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]);
03977          params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]);
03978          params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]);
03979          }
03980          break;
03981       case GL_DEPTH_BIAS:
03982          params[0] = IROUND(ctx->Pixel.DepthBias);
03983          break;
03984       case GL_DEPTH_BITS:
03985          params[0] = ctx->DrawBuffer->Visual.depthBits;
03986          break;
03987       case GL_DEPTH_CLEAR_VALUE:
03988          params[0] = FLOAT_TO_INT(((GLfloat) ctx->Depth.Clear));
03989          break;
03990       case GL_DEPTH_FUNC:
03991          params[0] = ENUM_TO_INT(ctx->Depth.Func);
03992          break;
03993       case GL_DEPTH_RANGE:
03994          params[0] = FLOAT_TO_INT(ctx->Viewport.Near);
03995          params[1] = FLOAT_TO_INT(ctx->Viewport.Far);
03996          break;
03997       case GL_DEPTH_SCALE:
03998          params[0] = IROUND(ctx->Pixel.DepthScale);
03999          break;
04000       case GL_DEPTH_TEST:
04001          params[0] = BOOLEAN_TO_INT(ctx->Depth.Test);
04002          break;
04003       case GL_DEPTH_WRITEMASK:
04004          params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask);
04005          break;
04006       case GL_DITHER:
04007          params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag);
04008          break;
04009       case GL_DOUBLEBUFFER:
04010          params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode);
04011          break;
04012       case GL_DRAW_BUFFER:
04013          params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
04014          break;
04015       case GL_EDGE_FLAG:
04016          {
04017          FLUSH_CURRENT(ctx, 0);
04018          params[0] = BOOLEAN_TO_INT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
04019          }
04020          break;
04021       case GL_FEEDBACK_BUFFER_SIZE:
04022          params[0] = ctx->Feedback.BufferSize;
04023          break;
04024       case GL_FEEDBACK_BUFFER_TYPE:
04025          params[0] = ENUM_TO_INT(ctx->Feedback.Type);
04026          break;
04027       case GL_FOG:
04028          params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled);
04029          break;
04030       case GL_FOG_COLOR:
04031          params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]);
04032          params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]);
04033          params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]);
04034          params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]);
04035          break;
04036       case GL_FOG_DENSITY:
04037          params[0] = IROUND(ctx->Fog.Density);
04038          break;
04039       case GL_FOG_END:
04040          params[0] = IROUND(ctx->Fog.End);
04041          break;
04042       case GL_FOG_HINT:
04043          params[0] = ENUM_TO_INT(ctx->Hint.Fog);
04044          break;
04045       case GL_FOG_INDEX:
04046          params[0] = IROUND(ctx->Fog.Index);
04047          break;
04048       case GL_FOG_MODE:
04049          params[0] = ENUM_TO_INT(ctx->Fog.Mode);
04050          break;
04051       case GL_FOG_START:
04052          params[0] = IROUND(ctx->Fog.Start);
04053          break;
04054       case GL_FRONT_FACE:
04055          params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace);
04056          break;
04057       case GL_GREEN_BIAS:
04058          params[0] = IROUND(ctx->Pixel.GreenBias);
04059          break;
04060       case GL_GREEN_BITS:
04061          params[0] = ctx->DrawBuffer->Visual.greenBits;
04062          break;
04063       case GL_GREEN_SCALE:
04064          params[0] = IROUND(ctx->Pixel.GreenScale);
04065          break;
04066       case GL_INDEX_BITS:
04067          params[0] = ctx->DrawBuffer->Visual.indexBits;
04068          break;
04069       case GL_INDEX_CLEAR_VALUE:
04070          params[0] = ctx->Color.ClearIndex;
04071          break;
04072       case GL_INDEX_MODE:
04073          params[0] = BOOLEAN_TO_INT(!ctx->DrawBuffer->Visual.rgbMode);
04074          break;
04075       case GL_INDEX_OFFSET:
04076          params[0] = ctx->Pixel.IndexOffset;
04077          break;
04078       case GL_INDEX_SHIFT:
04079          params[0] = ctx->Pixel.IndexShift;
04080          break;
04081       case GL_INDEX_WRITEMASK:
04082          params[0] = ctx->Color.IndexMask;
04083          break;
04084       case GL_LIGHT0:
04085          params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled);
04086          break;
04087       case GL_LIGHT1:
04088          params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled);
04089          break;
04090       case GL_LIGHT2:
04091          params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled);
04092          break;
04093       case GL_LIGHT3:
04094          params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled);
04095          break;
04096       case GL_LIGHT4:
04097          params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled);
04098          break;
04099       case GL_LIGHT5:
04100          params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled);
04101          break;
04102       case GL_LIGHT6:
04103          params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled);
04104          break;
04105       case GL_LIGHT7:
04106          params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled);
04107          break;
04108       case GL_LIGHTING:
04109          params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled);
04110          break;
04111       case GL_LIGHT_MODEL_AMBIENT:
04112          params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]);
04113          params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]);
04114          params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]);
04115          params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]);
04116          break;
04117       case GL_LIGHT_MODEL_COLOR_CONTROL:
04118          params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl);
04119          break;
04120       case GL_LIGHT_MODEL_LOCAL_VIEWER:
04121          params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer);
04122          break;
04123       case GL_LIGHT_MODEL_TWO_SIDE:
04124          params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide);
04125          break;
04126       case GL_LINE_SMOOTH:
04127          params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag);
04128          break;
04129       case GL_LINE_SMOOTH_HINT:
04130          params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth);
04131          break;
04132       case GL_LINE_STIPPLE:
04133          params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag);
04134          break;
04135       case GL_LINE_STIPPLE_PATTERN:
04136          params[0] = ctx->Line.StipplePattern;
04137          break;
04138       case GL_LINE_STIPPLE_REPEAT:
04139          params[0] = ctx->Line.StippleFactor;
04140          break;
04141       case GL_LINE_WIDTH:
04142          params[0] = IROUND(ctx->Line.Width);
04143          break;
04144       case GL_LINE_WIDTH_GRANULARITY:
04145          params[0] = IROUND(ctx->Const.LineWidthGranularity);
04146          break;
04147       case GL_LINE_WIDTH_RANGE:
04148          params[0] = IROUND(ctx->Const.MinLineWidthAA);
04149          params[1] = IROUND(ctx->Const.MaxLineWidthAA);
04150          break;
04151       case GL_ALIASED_LINE_WIDTH_RANGE:
04152          params[0] = IROUND(ctx->Const.MinLineWidth);
04153          params[1] = IROUND(ctx->Const.MaxLineWidth);
04154          break;
04155       case GL_LIST_BASE:
04156          params[0] = ctx->List.ListBase;
04157          break;
04158       case GL_LIST_INDEX:
04159          params[0] = ctx->ListState.CurrentListNum;
04160          break;
04161       case GL_LIST_MODE:
04162          {
04163          GLenum mode;
04164          if (!ctx->CompileFlag)
04165             mode = 0;
04166          else if (ctx->ExecuteFlag)
04167             mode = GL_COMPILE_AND_EXECUTE;
04168          else
04169             mode = GL_COMPILE;
04170          params[0] = ENUM_TO_INT(mode);
04171          }
04172          break;
04173       case GL_INDEX_LOGIC_OP:
04174          params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled);
04175          break;
04176       case GL_COLOR_LOGIC_OP:
04177          params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled);
04178          break;
04179       case GL_LOGIC_OP_MODE:
04180          params[0] = ENUM_TO_INT(ctx->Color.LogicOp);
04181          break;
04182       case GL_MAP1_COLOR_4:
04183          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4);
04184          break;
04185       case GL_MAP1_GRID_DOMAIN:
04186          params[0] = IROUND(ctx->Eval.MapGrid1u1);
04187          params[1] = IROUND(ctx->Eval.MapGrid1u2);
04188          break;
04189       case GL_MAP1_GRID_SEGMENTS:
04190          params[0] = ctx->Eval.MapGrid1un;
04191          break;
04192       case GL_MAP1_INDEX:
04193          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index);
04194          break;
04195       case GL_MAP1_NORMAL:
04196          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal);
04197          break;
04198       case GL_MAP1_TEXTURE_COORD_1:
04199          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1);
04200          break;
04201       case GL_MAP1_TEXTURE_COORD_2:
04202          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2);
04203          break;
04204       case GL_MAP1_TEXTURE_COORD_3:
04205          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3);
04206          break;
04207       case GL_MAP1_TEXTURE_COORD_4:
04208          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4);
04209          break;
04210       case GL_MAP1_VERTEX_3:
04211          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3);
04212          break;
04213       case GL_MAP1_VERTEX_4:
04214          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4);
04215          break;
04216       case GL_MAP2_COLOR_4:
04217          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4);
04218          break;
04219       case GL_MAP2_GRID_DOMAIN:
04220          params[0] = IROUND(ctx->Eval.MapGrid2u1);
04221          params[1] = IROUND(ctx->Eval.MapGrid2u2);
04222          params[2] = IROUND(ctx->Eval.MapGrid2v1);
04223          params[3] = IROUND(ctx->Eval.MapGrid2v2);
04224          break;
04225       case GL_MAP2_GRID_SEGMENTS:
04226          params[0] = ctx->Eval.MapGrid2un;
04227          params[1] = ctx->Eval.MapGrid2vn;
04228          break;
04229       case GL_MAP2_INDEX:
04230          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index);
04231          break;
04232       case GL_MAP2_NORMAL:
04233          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal);
04234          break;
04235       case GL_MAP2_TEXTURE_COORD_1:
04236          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1);
04237          break;
04238       case GL_MAP2_TEXTURE_COORD_2:
04239          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2);
04240          break;
04241       case GL_MAP2_TEXTURE_COORD_3:
04242          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3);
04243          break;
04244       case GL_MAP2_TEXTURE_COORD_4:
04245          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4);
04246          break;
04247       case GL_MAP2_VERTEX_3:
04248          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3);
04249          break;
04250       case GL_MAP2_VERTEX_4:
04251          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4);
04252          break;
04253       case GL_MAP_COLOR:
04254          params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag);
04255          break;
04256       case GL_MAP_STENCIL:
04257          params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag);
04258          break;
04259       case GL_MATRIX_MODE:
04260          params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode);
04261          break;
04262       case GL_MAX_ATTRIB_STACK_DEPTH:
04263          params[0] = MAX_ATTRIB_STACK_DEPTH;
04264          break;
04265       case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
04266          params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
04267          break;
04268       case GL_MAX_CLIP_PLANES:
04269          params[0] = ctx->Const.MaxClipPlanes;
04270          break;
04271       case GL_MAX_ELEMENTS_VERTICES:
04272          params[0] = ctx->Const.MaxArrayLockSize;
04273          break;
04274       case GL_MAX_ELEMENTS_INDICES:
04275          params[0] = ctx->Const.MaxArrayLockSize;
04276          break;
04277       case GL_MAX_EVAL_ORDER:
04278          params[0] = MAX_EVAL_ORDER;
04279          break;
04280       case GL_MAX_LIGHTS:
04281          params[0] = ctx->Const.MaxLights;
04282          break;
04283       case GL_MAX_LIST_NESTING:
04284          params[0] = MAX_LIST_NESTING;
04285          break;
04286       case GL_MAX_MODELVIEW_STACK_DEPTH:
04287          params[0] = MAX_MODELVIEW_STACK_DEPTH;
04288          break;
04289       case GL_MAX_NAME_STACK_DEPTH:
04290          params[0] = MAX_NAME_STACK_DEPTH;
04291          break;
04292       case GL_MAX_PIXEL_MAP_TABLE:
04293          params[0] = MAX_PIXEL_MAP_TABLE;
04294          break;
04295       case GL_MAX_PROJECTION_STACK_DEPTH:
04296          params[0] = MAX_PROJECTION_STACK_DEPTH;
04297          break;
04298       case GL_MAX_TEXTURE_SIZE:
04299          params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
04300          break;
04301       case GL_MAX_3D_TEXTURE_SIZE:
04302          params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
04303          break;
04304       case GL_MAX_TEXTURE_STACK_DEPTH:
04305          params[0] = MAX_TEXTURE_STACK_DEPTH;
04306          break;
04307       case GL_MAX_VIEWPORT_DIMS:
04308          params[0] = ctx->Const.MaxViewportWidth;
04309          params[1] = ctx->Const.MaxViewportHeight;
04310          break;
04311       case GL_MODELVIEW_MATRIX:
04312          {
04313          const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
04314          params[0] = IROUND(matrix[0]);
04315          params[1] = IROUND(matrix[1]);
04316          params[2] = IROUND(matrix[2]);
04317          params[3] = IROUND(matrix[3]);
04318          params[4] = IROUND(matrix[4]);
04319          params[5] = IROUND(matrix[5]);
04320          params[6] = IROUND(matrix[6]);
04321          params[7] = IROUND(matrix[7]);
04322          params[8] = IROUND(matrix[8]);
04323          params[9] = IROUND(matrix[9]);
04324          params[10] = IROUND(matrix[10]);
04325          params[11] = IROUND(matrix[11]);
04326          params[12] = IROUND(matrix[12]);
04327          params[13] = IROUND(matrix[13]);
04328          params[14] = IROUND(matrix[14]);
04329          params[15] = IROUND(matrix[15]);
04330          }
04331          break;
04332       case GL_MODELVIEW_STACK_DEPTH:
04333          params[0] = ctx->ModelviewMatrixStack.Depth + 1;
04334          break;
04335       case GL_NAME_STACK_DEPTH:
04336          params[0] = ctx->Select.NameStackDepth;
04337          break;
04338       case GL_NORMALIZE:
04339          params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize);
04340          break;
04341       case GL_PACK_ALIGNMENT:
04342          params[0] = ctx->Pack.Alignment;
04343          break;
04344       case GL_PACK_LSB_FIRST:
04345          params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst);
04346          break;
04347       case GL_PACK_ROW_LENGTH:
04348          params[0] = ctx->Pack.RowLength;
04349          break;
04350       case GL_PACK_SKIP_PIXELS:
04351          params[0] = ctx->Pack.SkipPixels;
04352          break;
04353       case GL_PACK_SKIP_ROWS:
04354          params[0] = ctx->Pack.SkipRows;
04355          break;
04356       case GL_PACK_SWAP_BYTES:
04357          params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes);
04358          break;
04359       case GL_PACK_SKIP_IMAGES_EXT:
04360          params[0] = ctx->Pack.SkipImages;
04361          break;
04362       case GL_PACK_IMAGE_HEIGHT_EXT:
04363          params[0] = ctx->Pack.ImageHeight;
04364          break;
04365       case GL_PACK_INVERT_MESA:
04366          params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert);
04367          break;
04368       case GL_PERSPECTIVE_CORRECTION_HINT:
04369          params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection);
04370          break;
04371       case GL_PIXEL_MAP_A_TO_A_SIZE:
04372          params[0] = ctx->PixelMaps.AtoA.Size;
04373          break;
04374       case GL_PIXEL_MAP_B_TO_B_SIZE:
04375          params[0] = ctx->PixelMaps.BtoB.Size;
04376          break;
04377       case GL_PIXEL_MAP_G_TO_G_SIZE:
04378          params[0] = ctx->PixelMaps.GtoG.Size;
04379          break;
04380       case GL_PIXEL_MAP_I_TO_A_SIZE:
04381          params[0] = ctx->PixelMaps.ItoA.Size;
04382          break;
04383       case GL_PIXEL_MAP_I_TO_B_SIZE:
04384          params[0] = ctx->PixelMaps.ItoB.Size;
04385          break;
04386       case GL_PIXEL_MAP_I_TO_G_SIZE:
04387          params[0] = ctx->PixelMaps.ItoG.Size;
04388          break;
04389       case GL_PIXEL_MAP_I_TO_I_SIZE:
04390          params[0] = ctx->PixelMaps.ItoI.Size;
04391          break;
04392       case GL_PIXEL_MAP_I_TO_R_SIZE:
04393          params[0] = ctx->PixelMaps.ItoR.Size;
04394          break;
04395       case GL_PIXEL_MAP_R_TO_R_SIZE:
04396          params[0] = ctx->PixelMaps.RtoR.Size;
04397          break;
04398       case GL_PIXEL_MAP_S_TO_S_SIZE:
04399          params[0] = ctx->PixelMaps.StoS.Size;
04400          break;
04401       case GL_POINT_SIZE:
04402          params[0] = IROUND(ctx->Point.Size);
04403          break;
04404       case GL_POINT_SIZE_GRANULARITY:
04405          params[0] = IROUND(ctx->Const.PointSizeGranularity);
04406          break;
04407       case GL_POINT_SIZE_RANGE:
04408          params[0] = IROUND(ctx->Const.MinPointSizeAA);
04409          params[1] = IROUND(ctx->Const.MaxPointSizeAA);
04410          break;
04411       case GL_ALIASED_POINT_SIZE_RANGE:
04412          params[0] = IROUND(ctx->Const.MinPointSize);
04413          params[1] = IROUND(ctx->Const.MaxPointSize);
04414          break;
04415       case GL_POINT_SMOOTH:
04416          params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag);
04417          break;
04418       case GL_POINT_SMOOTH_HINT:
04419          params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth);
04420          break;
04421       case GL_POINT_SIZE_MIN_EXT:
04422          params[0] = IROUND(ctx->Point.MinSize);
04423          break;
04424       case GL_POINT_SIZE_MAX_EXT:
04425          params[0] = IROUND(ctx->Point.MaxSize);
04426          break;
04427       case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
04428          params[0] = IROUND(ctx->Point.Threshold);
04429          break;
04430       case GL_DISTANCE_ATTENUATION_EXT:
04431          params[0] = IROUND(ctx->Point.Params[0]);
04432          params[1] = IROUND(ctx->Point.Params[1]);
04433          params[2] = IROUND(ctx->Point.Params[2]);
04434          break;
04435       case GL_POLYGON_MODE:
04436          params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode);
04437          params[1] = ENUM_TO_INT(ctx->Polygon.BackMode);
04438          break;
04439       case GL_POLYGON_OFFSET_BIAS_EXT:
04440          params[0] = IROUND(ctx->Polygon.OffsetUnits);
04441          break;
04442       case GL_POLYGON_OFFSET_FACTOR:
04443          params[0] = IROUND(ctx->Polygon.OffsetFactor );
04444          break;
04445       case GL_POLYGON_OFFSET_UNITS:
04446          params[0] = IROUND(ctx->Polygon.OffsetUnits );
04447          break;
04448       case GL_POLYGON_OFFSET_POINT:
04449          params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetPoint);
04450          break;
04451       case GL_POLYGON_OFFSET_LINE:
04452          params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetLine);
04453          break;
04454       case GL_POLYGON_OFFSET_FILL:
04455          params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetFill);
04456          break;
04457       case GL_POLYGON_SMOOTH:
04458          params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag);
04459          break;
04460       case GL_POLYGON_SMOOTH_HINT:
04461          params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth);
04462          break;
04463       case GL_POLYGON_STIPPLE:
04464          params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag);
04465          break;
04466       case GL_PROJECTION_MATRIX:
04467          {
04468          const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
04469          params[0] = IROUND(matrix[0]);
04470          params[1] = IROUND(matrix[1]);
04471          params[2] = IROUND(matrix[2]);
04472          params[3] = IROUND(matrix[3]);
04473          params[4] = IROUND(matrix[4]);
04474          params[5] = IROUND(matrix[5]);
04475          params[6] = IROUND(matrix[6]);
04476          params[7] = IROUND(matrix[7]);
04477          params[8] = IROUND(matrix[8]);
04478          params[9] = IROUND(matrix[9]);
04479          params[10] = IROUND(matrix[10]);
04480          params[11] = IROUND(matrix[11]);
04481          params[12] = IROUND(matrix[12]);
04482          params[13] = IROUND(matrix[13]);
04483          params[14] = IROUND(matrix[14]);
04484          params[15] = IROUND(matrix[15]);
04485          }
04486          break;
04487       case GL_PROJECTION_STACK_DEPTH:
04488          params[0] = ctx->ProjectionMatrixStack.Depth + 1;
04489          break;
04490       case GL_READ_BUFFER:
04491          params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer);
04492          break;
04493       case GL_RED_BIAS:
04494          params[0] = IROUND(ctx->Pixel.RedBias);
04495          break;
04496       case GL_RED_BITS:
04497          params[0] = ctx->DrawBuffer->Visual.redBits;
04498          break;
04499       case GL_RED_SCALE:
04500          params[0] = IROUND(ctx->Pixel.RedScale);
04501          break;
04502       case GL_RENDER_MODE:
04503          params[0] = ENUM_TO_INT(ctx->RenderMode);
04504          break;
04505       case GL_RESCALE_NORMAL:
04506          params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals);
04507          break;
04508       case GL_RGBA_MODE:
04509          params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.rgbMode);
04510          break;
04511       case GL_SCISSOR_BOX:
04512          params[0] = ctx->Scissor.X;
04513          params[1] = ctx->Scissor.Y;
04514          params[2] = ctx->Scissor.Width;
04515          params[3] = ctx->Scissor.Height;
04516          break;
04517       case GL_SCISSOR_TEST:
04518          params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled);
04519          break;
04520       case GL_SELECTION_BUFFER_SIZE:
04521          params[0] = ctx->Select.BufferSize;
04522          break;
04523       case GL_SHADE_MODEL:
04524          params[0] = ENUM_TO_INT(ctx->Light.ShadeModel);
04525          break;
04526       case GL_SHARED_TEXTURE_PALETTE_EXT:
04527          params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette);
04528          break;
04529       case GL_STENCIL_BITS:
04530          params[0] = ctx->DrawBuffer->Visual.stencilBits;
04531          break;
04532       case GL_STENCIL_CLEAR_VALUE:
04533          params[0] = ctx->Stencil.Clear;
04534          break;
04535       case GL_STENCIL_FAIL:
04536          params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
04537          break;
04538       case GL_STENCIL_FUNC:
04539          params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
04540          break;
04541       case GL_STENCIL_PASS_DEPTH_FAIL:
04542          params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
04543          break;
04544       case GL_STENCIL_PASS_DEPTH_PASS:
04545          params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
04546          break;
04547       case GL_STENCIL_REF:
04548          params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
04549          break;
04550       case GL_STENCIL_TEST:
04551          params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled);
04552          break;
04553       case GL_STENCIL_VALUE_MASK:
04554          params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
04555          break;
04556       case GL_STENCIL_WRITEMASK:
04557          params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
04558          break;
04559       case GL_STEREO:
04560          params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode);
04561          break;
04562       case GL_SUBPIXEL_BITS:
04563          params[0] = ctx->Const.SubPixelBits;
04564          break;
04565       case GL_TEXTURE_1D:
04566          params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D));
04567          break;
04568       case GL_TEXTURE_2D:
04569          params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D));
04570          break;
04571       case GL_TEXTURE_3D:
04572          params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D));
04573          break;
04574       case GL_TEXTURE_1D_ARRAY_EXT:
04575          CHECK_EXT1(MESA_texture_array, "GetIntegerv");
04576          params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
04577          break;
04578       case GL_TEXTURE_2D_ARRAY_EXT:
04579          CHECK_EXT1(MESA_texture_array, "GetIntegerv");
04580          params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
04581          break;
04582       case GL_TEXTURE_BINDING_1D:
04583          params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name;
04584          break;
04585       case GL_TEXTURE_BINDING_2D:
04586          params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name;
04587          break;
04588       case GL_TEXTURE_BINDING_3D:
04589          params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name;
04590          break;
04591       case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
04592          CHECK_EXT1(MESA_texture_array, "GetIntegerv");
04593          params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name;
04594          break;
04595       case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
04596          CHECK_EXT1(MESA_texture_array, "GetIntegerv");
04597          params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name;
04598          break;
04599       case GL_TEXTURE_GEN_S:
04600          params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
04601          break;
04602       case GL_TEXTURE_GEN_T:
04603          params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
04604          break;
04605       case GL_TEXTURE_GEN_R:
04606          params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
04607          break;
04608       case GL_TEXTURE_GEN_Q:
04609          params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
04610          break;
04611       case GL_TEXTURE_MATRIX:
04612          {
04613          const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
04614          params[0] = IROUND(matrix[0]);
04615          params[1] = IROUND(matrix[1]);
04616          params[2] = IROUND(matrix[2]);
04617          params[3] = IROUND(matrix[3]);
04618          params[4] = IROUND(matrix[4]);
04619          params[5] = IROUND(matrix[5]);
04620          params[6] = IROUND(matrix[6]);
04621          params[7] = IROUND(matrix[7]);
04622          params[8] = IROUND(matrix[8]);
04623          params[9] = IROUND(matrix[9]);
04624          params[10] = IROUND(matrix[10]);
04625          params[11] = IROUND(matrix[11]);
04626          params[12] = IROUND(matrix[12]);
04627          params[13] = IROUND(matrix[13]);
04628          params[14] = IROUND(matrix[14]);
04629          params[15] = IROUND(matrix[15]);
04630          }
04631          break;
04632       case GL_TEXTURE_STACK_DEPTH:
04633          params[0] = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1;
04634          break;
04635       case GL_UNPACK_ALIGNMENT:
04636          params[0] = ctx->Unpack.Alignment;
04637          break;
04638       case GL_UNPACK_LSB_FIRST:
04639          params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst);
04640          break;
04641       case GL_UNPACK_ROW_LENGTH:
04642          params[0] = ctx->Unpack.RowLength;
04643          break;
04644       case GL_UNPACK_SKIP_PIXELS:
04645          params[0] = ctx->Unpack.SkipPixels;
04646          break;
04647       case GL_UNPACK_SKIP_ROWS:
04648          params[0] = ctx->Unpack.SkipRows;
04649          break;
04650       case GL_UNPACK_SWAP_BYTES:
04651          params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes);
04652          break;
04653       case GL_UNPACK_SKIP_IMAGES_EXT:
04654          params[0] = ctx->Unpack.SkipImages;
04655          break;
04656       case GL_UNPACK_IMAGE_HEIGHT_EXT:
04657          params[0] = ctx->Unpack.ImageHeight;
04658          break;
04659       case GL_UNPACK_CLIENT_STORAGE_APPLE:
04660          params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage);
04661          break;
04662       case GL_VIEWPORT:
04663          params[0] = ctx->Viewport.X;
04664          params[1] = ctx->Viewport.Y;
04665          params[2] = ctx->Viewport.Width;
04666          params[3] = ctx->Viewport.Height;
04667          break;
04668       case GL_ZOOM_X:
04669          params[0] = IROUND(ctx->Pixel.ZoomX);
04670          break;
04671       case GL_ZOOM_Y:
04672          params[0] = IROUND(ctx->Pixel.ZoomY);
04673          break;
04674       case GL_VERTEX_ARRAY:
04675          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled);
04676          break;
04677       case GL_VERTEX_ARRAY_SIZE:
04678          params[0] = ctx->Array.ArrayObj->Vertex.Size;
04679          break;
04680       case GL_VERTEX_ARRAY_TYPE:
04681          params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type);
04682          break;
04683       case GL_VERTEX_ARRAY_STRIDE:
04684          params[0] = ctx->Array.ArrayObj->Vertex.Stride;
04685          break;
04686       case GL_VERTEX_ARRAY_COUNT_EXT:
04687          params[0] = 0;
04688          break;
04689       case GL_NORMAL_ARRAY:
04690          params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled);
04691          break;
04692       case GL_NORMAL_ARRAY_TYPE:
04693          params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type);
04694          break;
04695       case GL_NORMAL_ARRAY_STRIDE:
04696          params[0] = ctx->Array.ArrayObj->Normal.Stride;
04697          break;
04698       case GL_NORMAL_ARRAY_COUNT_EXT:
04699          params[0] = 0;
04700          break;
04701       case GL_COLOR_ARRAY:
04702          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled);
04703          break;
04704       case GL_COLOR_ARRAY_SIZE:
04705          params[0] = ctx->Array.ArrayObj->Color.Size;
04706          break;
04707       case GL_COLOR_ARRAY_TYPE:
04708          params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type);
04709          break;
04710       case GL_COLOR_ARRAY_STRIDE:
04711          params[0] = ctx->Array.ArrayObj->Color.Stride;
04712          break;
04713       case GL_COLOR_ARRAY_COUNT_EXT:
04714          params[0] = 0;
04715          break;
04716       case GL_INDEX_ARRAY:
04717          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled);
04718          break;
04719       case GL_INDEX_ARRAY_TYPE:
04720          params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type);
04721          break;
04722       case GL_INDEX_ARRAY_STRIDE:
04723          params[0] = ctx->Array.ArrayObj->Index.Stride;
04724          break;
04725       case GL_INDEX_ARRAY_COUNT_EXT:
04726          params[0] = 0;
04727          break;
04728       case GL_TEXTURE_COORD_ARRAY:
04729          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
04730          break;
04731       case GL_TEXTURE_COORD_ARRAY_SIZE:
04732          params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
04733          break;
04734       case GL_TEXTURE_COORD_ARRAY_TYPE:
04735          params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
04736          break;
04737       case GL_TEXTURE_COORD_ARRAY_STRIDE:
04738          params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
04739          break;
04740       case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
04741          params[0] = 0;
04742          break;
04743       case GL_EDGE_FLAG_ARRAY:
04744          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
04745          break;
04746       case GL_EDGE_FLAG_ARRAY_STRIDE:
04747          params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
04748          break;
04749       case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
04750          params[0] = 0;
04751          break;
04752       case GL_MAX_TEXTURE_UNITS_ARB:
04753          CHECK_EXT1(ARB_multitexture, "GetIntegerv");
04754          params[0] = ctx->Const.MaxTextureUnits;
04755          break;
04756       case GL_ACTIVE_TEXTURE_ARB:
04757          CHECK_EXT1(ARB_multitexture, "GetIntegerv");
04758          params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
04759          break;
04760       case GL_CLIENT_ACTIVE_TEXTURE_ARB:
04761          CHECK_EXT1(ARB_multitexture, "GetIntegerv");
04762          params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
04763          break;
04764       case GL_TEXTURE_CUBE_MAP_ARB:
04765          CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
04766          params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
04767          break;
04768       case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
04769          CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
04770          params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name;
04771          break;
04772       case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
04773          CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv");
04774          params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
04775          break;
04776       case GL_TEXTURE_COMPRESSION_HINT_ARB:
04777          CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
04778          params[0] = ctx->Hint.TextureCompression;
04779          break;
04780       case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
04781          CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
04782          params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
04783          break;
04784       case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
04785          CHECK_EXT1(ARB_texture_compression, "GetIntegerv");
04786          {
04787          GLint formats[100];
04788          GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
04789          ASSERT(n <= 100);
04790          for (i = 0; i < n; i++)
04791             params[i] = ENUM_TO_INT(formats[i]);
04792          }
04793          break;
04794       case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
04795          CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
04796          params[0] = ctx->Array.LockFirst;
04797          break;
04798       case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
04799          CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv");
04800          params[0] = ctx->Array.LockCount;
04801          break;
04802       case GL_TRANSPOSE_COLOR_MATRIX_ARB:
04803          {
04804          const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
04805          params[0] = IROUND(matrix[0]);
04806          params[1] = IROUND(matrix[4]);
04807          params[2] = IROUND(matrix[8]);
04808          params[3] = IROUND(matrix[12]);
04809          params[4] = IROUND(matrix[1]);
04810          params[5] = IROUND(matrix[5]);
04811          params[6] = IROUND(matrix[9]);
04812          params[7] = IROUND(matrix[13]);
04813          params[8] = IROUND(matrix[2]);
04814          params[9] = IROUND(matrix[6]);
04815          params[10] = IROUND(matrix[10]);
04816          params[11] = IROUND(matrix[14]);
04817          params[12] = IROUND(matrix[3]);
04818          params[13] = IROUND(matrix[7]);
04819          params[14] = IROUND(matrix[11]);
04820          params[15] = IROUND(matrix[15]);
04821          }
04822          break;
04823       case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
04824          {
04825          const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
04826          params[0] = IROUND(matrix[0]);
04827          params[1] = IROUND(matrix[4]);
04828          params[2] = IROUND(matrix[8]);
04829          params[3] = IROUND(matrix[12]);
04830          params[4] = IROUND(matrix[1]);
04831          params[5] = IROUND(matrix[5]);
04832          params[6] = IROUND(matrix[9]);
04833          params[7] = IROUND(matrix[13]);
04834          params[8] = IROUND(matrix[2]);
04835          params[9] = IROUND(matrix[6]);
04836          params[10] = IROUND(matrix[10]);
04837          params[11] = IROUND(matrix[14]);
04838          params[12] = IROUND(matrix[3]);
04839          params[13] = IROUND(matrix[7]);
04840          params[14] = IROUND(matrix[11]);
04841          params[15] = IROUND(matrix[15]);
04842          }
04843          break;
04844       case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
04845          {
04846          const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
04847          params[0] = IROUND(matrix[0]);
04848          params[1] = IROUND(matrix[4]);
04849          params[2] = IROUND(matrix[8]);
04850          params[3] = IROUND(matrix[12]);
04851          params[4] = IROUND(matrix[1]);
04852          params[5] = IROUND(matrix[5]);
04853          params[6] = IROUND(matrix[9]);
04854          params[7] = IROUND(matrix[13]);
04855          params[8] = IROUND(matrix[2]);
04856          params[9] = IROUND(matrix[6]);
04857          params[10] = IROUND(matrix[10]);
04858          params[11] = IROUND(matrix[14]);
04859          params[12] = IROUND(matrix[3]);
04860          params[13] = IROUND(matrix[7]);
04861          params[14] = IROUND(matrix[11]);
04862          params[15] = IROUND(matrix[15]);
04863          }
04864          break;
04865       case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
04866          {
04867          const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
04868          params[0] = IROUND(matrix[0]);
04869          params[1] = IROUND(matrix[4]);
04870          params[2] = IROUND(matrix[8]);
04871          params[3] = IROUND(matrix[12]);
04872          params[4] = IROUND(matrix[1]);
04873          params[5] = IROUND(matrix[5]);
04874          params[6] = IROUND(matrix[9]);
04875          params[7] = IROUND(matrix[13]);
04876          params[8] = IROUND(matrix[2]);
04877          params[9] = IROUND(matrix[6]);
04878          params[10] = IROUND(matrix[10]);
04879          params[11] = IROUND(matrix[14]);
04880          params[12] = IROUND(matrix[3]);
04881          params[13] = IROUND(matrix[7]);
04882          params[14] = IROUND(matrix[11]);
04883          params[15] = IROUND(matrix[15]);
04884          }
04885          break;
04886       case GL_COLOR_MATRIX_SGI:
04887          {
04888          const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
04889          params[0] = IROUND(matrix[0]);
04890          params[1] = IROUND(matrix[1]);
04891          params[2] = IROUND(matrix[2]);
04892          params[3] = IROUND(matrix[3]);
04893          params[4] = IROUND(matrix[4]);
04894          params[5] = IROUND(matrix[5]);
04895          params[6] = IROUND(matrix[6]);
04896          params[7] = IROUND(matrix[7]);
04897          params[8] = IROUND(matrix[8]);
04898          params[9] = IROUND(matrix[9]);
04899          params[10] = IROUND(matrix[10]);
04900          params[11] = IROUND(matrix[11]);
04901          params[12] = IROUND(matrix[12]);
04902          params[13] = IROUND(matrix[13]);
04903          params[14] = IROUND(matrix[14]);
04904          params[15] = IROUND(matrix[15]);
04905          }
04906          break;
04907       case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
04908          params[0] = ctx->ColorMatrixStack.Depth + 1;
04909          break;
04910       case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
04911          params[0] = MAX_COLOR_STACK_DEPTH;
04912          break;
04913       case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
04914          params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
04915          break;
04916       case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
04917          params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
04918          break;
04919       case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
04920          params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
04921          break;
04922       case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
04923          params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
04924          break;
04925       case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
04926          params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
04927          break;
04928       case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
04929          params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
04930          break;
04931       case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
04932          params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
04933          break;
04934       case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
04935          params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
04936          break;
04937       case GL_CONVOLUTION_1D_EXT:
04938          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04939          params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
04940          break;
04941       case GL_CONVOLUTION_2D_EXT:
04942          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04943          params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
04944          break;
04945       case GL_SEPARABLE_2D_EXT:
04946          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04947          params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
04948          break;
04949       case GL_POST_CONVOLUTION_RED_SCALE_EXT:
04950          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04951          params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
04952          break;
04953       case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
04954          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04955          params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
04956          break;
04957       case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
04958          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04959          params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
04960          break;
04961       case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
04962          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04963          params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
04964          break;
04965       case GL_POST_CONVOLUTION_RED_BIAS_EXT:
04966          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04967          params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
04968          break;
04969       case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
04970          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04971          params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
04972          break;
04973       case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
04974          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04975          params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
04976          break;
04977       case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
04978          CHECK_EXT1(EXT_convolution, "GetIntegerv");
04979          params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
04980          break;
04981       case GL_HISTOGRAM:
04982          CHECK_EXT1(EXT_histogram, "GetIntegerv");
04983          params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
04984          break;
04985       case GL_MINMAX:
04986          CHECK_EXT1(EXT_histogram, "GetIntegerv");
04987          params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
04988          break;
04989       case GL_COLOR_TABLE_SGI:
04990          CHECK_EXT1(SGI_color_table, "GetIntegerv");
04991          params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
04992          break;
04993       case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
04994          CHECK_EXT1(SGI_color_table, "GetIntegerv");
04995          params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
04996          break;
04997       case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
04998          CHECK_EXT1(SGI_color_table, "GetIntegerv");
04999          params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
05000          break;
05001       case GL_TEXTURE_COLOR_TABLE_SGI:
05002          CHECK_EXT1(SGI_texture_color_table, "GetIntegerv");
05003          params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
05004          break;
05005       case GL_COLOR_SUM_EXT:
05006          CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv");
05007          params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
05008          break;
05009       case GL_CURRENT_SECONDARY_COLOR_EXT:
05010          CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
05011          {
05012          FLUSH_CURRENT(ctx, 0);
05013          params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
05014          params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
05015          params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
05016          params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
05017          }
05018          break;
05019       case GL_SECONDARY_COLOR_ARRAY_EXT:
05020          CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
05021          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
05022          break;
05023       case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
05024          CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
05025          params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
05026          break;
05027       case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
05028          CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
05029          params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
05030          break;
05031       case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
05032          CHECK_EXT1(EXT_secondary_color, "GetIntegerv");
05033          params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
05034          break;
05035       case GL_CURRENT_FOG_COORDINATE_EXT:
05036          CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
05037          {
05038          FLUSH_CURRENT(ctx, 0);
05039          params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
05040          }
05041          break;
05042       case GL_FOG_COORDINATE_ARRAY_EXT:
05043          CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
05044          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
05045          break;
05046       case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
05047          CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
05048          params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
05049          break;
05050       case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
05051          CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
05052          params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
05053          break;
05054       case GL_FOG_COORDINATE_SOURCE_EXT:
05055          CHECK_EXT1(EXT_fog_coord, "GetIntegerv");
05056          params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
05057          break;
05058       case GL_MAX_TEXTURE_LOD_BIAS_EXT:
05059          CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv");
05060          params[0] = IROUND(ctx->Const.MaxTextureLodBias);
05061          break;
05062       case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
05063          CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv");
05064          params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
05065          break;
05066       case GL_MULTISAMPLE_ARB:
05067          CHECK_EXT1(ARB_multisample, "GetIntegerv");
05068          params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
05069          break;
05070       case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
05071          CHECK_EXT1(ARB_multisample, "GetIntegerv");
05072          params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
05073          break;
05074       case GL_SAMPLE_ALPHA_TO_ONE_ARB:
05075          CHECK_EXT1(ARB_multisample, "GetIntegerv");
05076          params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
05077          break;
05078       case GL_SAMPLE_COVERAGE_ARB:
05079          CHECK_EXT1(ARB_multisample, "GetIntegerv");
05080          params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
05081          break;
05082       case GL_SAMPLE_COVERAGE_VALUE_ARB:
05083          CHECK_EXT1(ARB_multisample, "GetIntegerv");
05084          params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
05085          break;
05086       case GL_SAMPLE_COVERAGE_INVERT_ARB:
05087          CHECK_EXT1(ARB_multisample, "GetIntegerv");
05088          params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
05089          break;
05090       case GL_SAMPLE_BUFFERS_ARB:
05091          CHECK_EXT1(ARB_multisample, "GetIntegerv");
05092          params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
05093          break;
05094       case GL_SAMPLES_ARB:
05095          CHECK_EXT1(ARB_multisample, "GetIntegerv");
05096          params[0] = ctx->DrawBuffer->Visual.samples;
05097          break;
05098       case GL_RASTER_POSITION_UNCLIPPED_IBM:
05099          CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv");
05100          params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
05101          break;
05102       case GL_POINT_SPRITE_NV:
05103          CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
05104          params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
05105          break;
05106       case GL_POINT_SPRITE_R_MODE_NV:
05107          CHECK_EXT1(NV_point_sprite, "GetIntegerv");
05108          params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
05109          break;
05110       case GL_POINT_SPRITE_COORD_ORIGIN:
05111          CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv");
05112          params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
05113          break;
05114       case GL_GENERATE_MIPMAP_HINT_SGIS:
05115          CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv");
05116          params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
05117          break;
05118       case GL_VERTEX_PROGRAM_BINDING_NV:
05119          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05120          params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
05121          break;
05122       case GL_VERTEX_ATTRIB_ARRAY0_NV:
05123          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05124          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
05125          break;
05126       case GL_VERTEX_ATTRIB_ARRAY1_NV:
05127          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05128          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
05129          break;
05130       case GL_VERTEX_ATTRIB_ARRAY2_NV:
05131          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05132          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
05133          break;
05134       case GL_VERTEX_ATTRIB_ARRAY3_NV:
05135          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05136          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
05137          break;
05138       case GL_VERTEX_ATTRIB_ARRAY4_NV:
05139          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05140          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
05141          break;
05142       case GL_VERTEX_ATTRIB_ARRAY5_NV:
05143          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05144          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
05145          break;
05146       case GL_VERTEX_ATTRIB_ARRAY6_NV:
05147          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05148          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
05149          break;
05150       case GL_VERTEX_ATTRIB_ARRAY7_NV:
05151          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05152          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
05153          break;
05154       case GL_VERTEX_ATTRIB_ARRAY8_NV:
05155          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05156          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
05157          break;
05158       case GL_VERTEX_ATTRIB_ARRAY9_NV:
05159          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05160          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
05161          break;
05162       case GL_VERTEX_ATTRIB_ARRAY10_NV:
05163          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05164          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
05165          break;
05166       case GL_VERTEX_ATTRIB_ARRAY11_NV:
05167          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05168          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
05169          break;
05170       case GL_VERTEX_ATTRIB_ARRAY12_NV:
05171          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05172          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
05173          break;
05174       case GL_VERTEX_ATTRIB_ARRAY13_NV:
05175          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05176          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
05177          break;
05178       case GL_VERTEX_ATTRIB_ARRAY14_NV:
05179          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05180          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
05181          break;
05182       case GL_VERTEX_ATTRIB_ARRAY15_NV:
05183          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05184          params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
05185          break;
05186       case GL_MAP1_VERTEX_ATTRIB0_4_NV:
05187          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05188          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
05189          break;
05190       case GL_MAP1_VERTEX_ATTRIB1_4_NV:
05191          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05192          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
05193          break;
05194       case GL_MAP1_VERTEX_ATTRIB2_4_NV:
05195          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05196          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
05197          break;
05198       case GL_MAP1_VERTEX_ATTRIB3_4_NV:
05199          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05200          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
05201          break;
05202       case GL_MAP1_VERTEX_ATTRIB4_4_NV:
05203          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05204          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
05205          break;
05206       case GL_MAP1_VERTEX_ATTRIB5_4_NV:
05207          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05208          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
05209          break;
05210       case GL_MAP1_VERTEX_ATTRIB6_4_NV:
05211          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05212          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
05213          break;
05214       case GL_MAP1_VERTEX_ATTRIB7_4_NV:
05215          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05216          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
05217          break;
05218       case GL_MAP1_VERTEX_ATTRIB8_4_NV:
05219          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05220          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
05221          break;
05222       case GL_MAP1_VERTEX_ATTRIB9_4_NV:
05223          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05224          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
05225          break;
05226       case GL_MAP1_VERTEX_ATTRIB10_4_NV:
05227          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05228          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
05229          break;
05230       case GL_MAP1_VERTEX_ATTRIB11_4_NV:
05231          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05232          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
05233          break;
05234       case GL_MAP1_VERTEX_ATTRIB12_4_NV:
05235          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05236          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
05237          break;
05238       case GL_MAP1_VERTEX_ATTRIB13_4_NV:
05239          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05240          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
05241          break;
05242       case GL_MAP1_VERTEX_ATTRIB14_4_NV:
05243          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05244          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
05245          break;
05246       case GL_MAP1_VERTEX_ATTRIB15_4_NV:
05247          CHECK_EXT1(NV_vertex_program, "GetIntegerv");
05248          params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
05249          break;
05250       case GL_FRAGMENT_PROGRAM_NV:
05251          CHECK_EXT1(NV_fragment_program, "GetIntegerv");
05252          params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
05253          break;
05254       case GL_FRAGMENT_PROGRAM_BINDING_NV:
05255          CHECK_EXT1(NV_fragment_program, "GetIntegerv");
05256          params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
05257          break;
05258       case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
05259          CHECK_EXT1(NV_fragment_program, "GetIntegerv");
05260          params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
05261          break;
05262       case GL_TEXTURE_RECTANGLE_NV:
05263          CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
05264          params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
05265          break;
05266       case GL_TEXTURE_BINDING_RECTANGLE_NV:
05267          CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
05268          params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name;
05269          break;
05270       case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
05271          CHECK_EXT1(NV_texture_rectangle, "GetIntegerv");
05272          params[0] = ctx->Const.MaxTextureRectSize;
05273          break;
05274       case GL_STENCIL_TEST_TWO_SIDE_EXT:
05275          CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
05276          params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
05277          break;
05278       case GL_ACTIVE_STENCIL_FACE_EXT:
05279          CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv");
05280          params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
05281          break;
05282       case GL_MAX_SHININESS_NV:
05283          CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
05284          params[0] = IROUND(ctx->Const.MaxShininess);
05285          break;
05286       case GL_MAX_SPOT_EXPONENT_NV:
05287          CHECK_EXT1(NV_light_max_exponent, "GetIntegerv");
05288          params[0] = IROUND(ctx->Const.MaxSpotExponent);
05289          break;
05290       case GL_ARRAY_BUFFER_BINDING_ARB:
05291          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05292          params[0] = ctx->Array.ArrayBufferObj->Name;
05293          break;
05294       case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
05295          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05296          params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
05297          break;
05298       case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
05299          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05300          params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
05301          break;
05302       case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
05303          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05304          params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
05305          break;
05306       case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
05307          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05308          params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
05309          break;
05310       case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
05311          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05312          params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
05313          break;
05314       case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
05315          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05316          params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
05317          break;
05318       case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
05319          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05320          params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
05321          break;
05322       case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
05323          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05324          params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
05325          break;
05326       case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
05327          CHECK_EXT1(ARB_vertex_buffer_object, "GetIntegerv");
05328          params[0] = ctx->Array.ElementArrayBufferObj->Name;
05329          break;
05330       case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
05331          CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
05332          params[0] = ctx->Pack.BufferObj->Name;
05333          break;
05334       case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
05335          CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv");
05336          params[0] = ctx->Unpack.BufferObj->Name;
05337          break;
05338       case GL_VERTEX_PROGRAM_ARB:
05339          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
05340          params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
05341          break;
05342       case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
05343          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
05344          params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
05345          break;
05346       case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
05347          CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv");
05348          params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
05349          break;
05350       case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
05351          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
05352          params[0] = ctx->Const.MaxProgramMatrixStackDepth;
05353          break;
05354       case GL_MAX_PROGRAM_MATRICES_ARB:
05355          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
05356          params[0] = ctx->Const.MaxProgramMatrices;
05357          break;
05358       case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
05359          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv");
05360          params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
05361          break;
05362       case GL_CURRENT_MATRIX_ARB:
05363          CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv");
05364          {
05365          const GLfloat *matrix = ctx->CurrentStack->Top->m;
05366          params[0] = IROUND(matrix[0]);
05367          params[1] = IROUND(matrix[1]);
05368          params[2] = IROUND(matrix[2]);
05369          params[3] = IROUND(matrix[3]);
05370          params[4] = IROUND(matrix[4]);
05371          params[5] = IROUND(matrix[5]);
05372          params[6] = IROUND(matrix[6]);
05373          params[7] = IROUND(matrix[7]);
05374          params[8] = IROUND(matrix[8]);
05375          params[9] = IROUND(matrix[9]);
05376          params[10] = IROUND(matrix[10]);
05377          params[11] = IROUND(matrix[11]);
05378          params[12] = IROUND(matrix[12]);
05379          params[13] = IROUND(matrix[13]);
05380          params[14] = IROUND(matrix[14]);
05381          params[15] = IROUND(matrix[15]);
05382          }
05383          break;
05384       case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
05385          CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv");
05386          {
05387          const GLfloat *matrix = ctx->CurrentStack->Top->m;
05388          params[0] = IROUND(matrix[0]);
05389          params[1] = IROUND(matrix[4]);
05390          params[2] = IROUND(matrix[8]);
05391          params[3] = IROUND(matrix[12]);
05392          params[4] = IROUND(matrix[1]);
05393          params[5] = IROUND(matrix[5]);
05394          params[6] = IROUND(matrix[9]);
05395          params[7] = IROUND(matrix[13]);
05396          params[8] = IROUND(matrix[2]);
05397          params[9] = IROUND(matrix[6]);
05398          params[10] = IROUND(matrix[10]);
05399          params[11] = IROUND(matrix[14]);
05400          params[12] = IROUND(matrix[3]);
05401          params[13] = IROUND(matrix[7]);
05402          params[14] = IROUND(matrix[11]);
05403          params[15] = IROUND(matrix[15]);
05404          }
05405          break;
05406       case GL_MAX_VERTEX_ATTRIBS_ARB:
05407          CHECK_EXT1(ARB_vertex_program, "GetIntegerv");
05408          params[0] = ctx->Const.VertexProgram.MaxAttribs;
05409          break;
05410       case GL_PROGRAM_ERROR_POSITION_ARB:
05411          CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv");
05412          params[0] = ctx->Program.ErrorPos;
05413          break;
05414       case GL_FRAGMENT_PROGRAM_ARB:
05415          CHECK_EXT1(ARB_fragment_program, "GetIntegerv");
05416          params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
05417          break;
05418       case GL_MAX_TEXTURE_COORDS_ARB:
05419          CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
05420          params[0] = ctx->Const.MaxTextureCoordUnits;
05421          break;
05422       case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
05423          CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv");
05424          params[0] = ctx->Const.MaxTextureImageUnits;
05425          break;
05426       case GL_DEPTH_BOUNDS_TEST_EXT:
05427          CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
05428          params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
05429          break;
05430       case GL_DEPTH_BOUNDS_EXT:
05431          CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv");
05432          params[0] = IROUND(ctx->Depth.BoundsMin);
05433          params[1] = IROUND(ctx->Depth.BoundsMax);
05434          break;
05435       case GL_FRAGMENT_PROGRAM_CALLBACK_MESA:
05436          CHECK_EXT1(MESA_program_debug, "GetIntegerv");
05437          params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.CallbackEnabled);
05438          break;
05439       case GL_VERTEX_PROGRAM_CALLBACK_MESA:
05440          CHECK_EXT1(MESA_program_debug, "GetIntegerv");
05441          params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.CallbackEnabled);
05442          break;
05443       case GL_FRAGMENT_PROGRAM_POSITION_MESA:
05444          CHECK_EXT1(MESA_program_debug, "GetIntegerv");
05445          params[0] = ctx->FragmentProgram.CurrentPosition;
05446          break;
05447       case GL_VERTEX_PROGRAM_POSITION_MESA:
05448          CHECK_EXT1(MESA_program_debug, "GetIntegerv");
05449          params[0] = ctx->VertexProgram.CurrentPosition;
05450          break;
05451       case GL_MAX_DRAW_BUFFERS_ARB:
05452          CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
05453          params[0] = ctx->Const.MaxDrawBuffers;
05454          break;
05455       case GL_DRAW_BUFFER0_ARB:
05456          CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
05457          params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
05458          break;
05459       case GL_DRAW_BUFFER1_ARB:
05460          CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
05461          {
05462          GLenum buffer;
05463          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
05464             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
05465             return;
05466          }
05467          buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
05468          params[0] = ENUM_TO_INT(buffer);
05469          }
05470          break;
05471       case GL_DRAW_BUFFER2_ARB:
05472          CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
05473          {
05474          GLenum buffer;
05475          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
05476             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
05477             return;
05478          }
05479          buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
05480          params[0] = ENUM_TO_INT(buffer);
05481          }
05482          break;
05483       case GL_DRAW_BUFFER3_ARB:
05484          CHECK_EXT1(ARB_draw_buffers, "GetIntegerv");
05485          {
05486          GLenum buffer;
05487          if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
05488             _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
05489             return;
05490          }
05491          buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
05492          params[0] = ENUM_TO_INT(buffer);
05493          }
05494          break;
05495       case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
05496          CHECK_EXT1(OES_read_format, "GetIntegerv");
05497          params[0] = ctx->Const.ColorReadType;
05498          break;
05499       case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
05500          CHECK_EXT1(OES_read_format, "GetIntegerv");
05501          params[0] = ctx->Const.ColorReadFormat;
05502          break;
05503       case GL_NUM_FRAGMENT_REGISTERS_ATI:
05504          CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
05505          params[0] = 6;
05506          break;
05507       case GL_NUM_FRAGMENT_CONSTANTS_ATI:
05508          CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
05509          params[0] = 8;
05510          break;
05511       case GL_NUM_PASSES_ATI:
05512          CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
05513          params[0] = 2;
05514          break;
05515       case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
05516          CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
05517          params[0] = 8;
05518          break;
05519       case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
05520          CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
05521          params[0] = 16;
05522          break;
05523       case GL_COLOR_ALPHA_PAIRING_ATI:
05524          CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
05525          params[0] = BOOLEAN_TO_INT(GL_TRUE);
05526          break;
05527       case GL_NUM_LOOPBACK_COMPONENTS_ATI:
05528          CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
05529          params[0] = 3;
05530          break;
05531       case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
05532          CHECK_EXT1(ATI_fragment_shader, "GetIntegerv");
05533          params[0] = 3;
05534          break;
05535       case GL_STENCIL_BACK_FUNC:
05536          params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
05537          break;
05538       case GL_STENCIL_BACK_VALUE_MASK:
05539          params[0] = ctx->Stencil.ValueMask[1];
05540          break;
05541       case GL_STENCIL_BACK_WRITEMASK:
05542          params[0] = ctx->Stencil.WriteMask[1];
05543          break;
05544       case GL_STENCIL_BACK_REF:
05545          params[0] = ctx->Stencil.Ref[1];
05546          break;
05547       case GL_STENCIL_BACK_FAIL:
05548          params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
05549          break;
05550       case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
05551          params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
05552          break;
05553       case GL_STENCIL_BACK_PASS_DEPTH_PASS:
05554          params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
05555          break;
05556       case GL_FRAMEBUFFER_BINDING_EXT:
05557          CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
05558          params[0] = ctx->DrawBuffer->Name;
05559          break;
05560       case GL_RENDERBUFFER_BINDING_EXT:
05561          CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
05562          params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
05563          break;
05564       case GL_MAX_COLOR_ATTACHMENTS_EXT:
05565          CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
05566          params[0] = ctx->Const.MaxColorAttachments;
05567          break;
05568       case GL_MAX_RENDERBUFFER_SIZE_EXT:
05569          CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv");
05570          params[0] = ctx->Const.MaxRenderbufferSize;
05571          break;
05572       case GL_READ_FRAMEBUFFER_BINDING_EXT:
05573          CHECK_EXT1(EXT_framebuffer_blit, "GetIntegerv");
05574          params[0] = ctx->ReadBuffer->Name;
05575          break;
05576       case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
05577          CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
05578          params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
05579          break;
05580       case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
05581          CHECK_EXT1(ARB_fragment_shader, "GetIntegerv");
05582          params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
05583          break;
05584       case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
05585          CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
05586          params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
05587          break;
05588       case GL_MAX_VARYING_FLOATS_ARB:
05589          CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
05590          params[0] = ctx->Const.MaxVarying * 4;
05591          break;
05592       case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
05593          CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
05594          params[0] = ctx->Const.MaxVertexTextureImageUnits;
05595          break;
05596       case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
05597          CHECK_EXT1(ARB_vertex_shader, "GetIntegerv");
05598          params[0] = MAX_COMBINED_TEXTURE_IMAGE_UNITS;
05599          break;
05600       case GL_CURRENT_PROGRAM:
05601          CHECK_EXT1(ARB_shader_objects, "GetIntegerv");
05602          params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
05603          break;
05604       default:
05605          _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
05606    }
05607 }
05608 
05609 
05610 void GLAPIENTRY
05611 _mesa_GetDoublev( GLenum pname, GLdouble *params )
05612 {
05613    const GLfloat magic = -1234.5F;
05614    GLfloat values[16];
05615    GLuint i;
05616 
05617    if (!params)
05618       return;
05619 
05620    /* Init temp array to magic numbers so we can figure out how many values
05621     * are returned by the GetFloatv() call.
05622     */
05623    for (i = 0; i < 16; i++)
05624       values[i] = magic;
05625 
05626    _mesa_GetFloatv(pname, values);
05627    
05628    for (i = 0; i < 16 && values[i] != magic; i++)
05629       params[i] = (GLdouble) values[i];
05630 }
05631 

Generated on Sun May 27 2012 04:20:18 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.