Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenget.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
1.7.6.1
|