get.c revision 9818734e0148510967ca9ee0d1aa8b196b509f02
1 2/*** 3 *** NOTE!!! DO NOT EDIT THIS FILE!!! IT IS GENERATED BY get_gen.py 4 ***/ 5 6#include "glheader.h" 7#include "context.h" 8#include "enable.h" 9#include "extensions.h" 10#include "fbobject.h" 11#include "get.h" 12#include "macros.h" 13#include "mtypes.h" 14#include "state.h" 15#include "texcompress.h" 16 17 18#define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE ) 19 20#define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE ) 21 22#define BOOLEAN_TO_INT(B) ( (GLint) (B) ) 23#define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F ) 24 25 26/* 27 * Check if named extension is enabled, if not generate error and return. 28 */ 29#define CHECK_EXT1(EXT1, FUNC) \ 30 if (!ctx->Extensions.EXT1) { \ 31 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \ 32 return; \ 33 } 34 35/* 36 * Check if either of two extensions is enabled. 37 */ 38#define CHECK_EXT2(EXT1, EXT2, FUNC) \ 39 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \ 40 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \ 41 return; \ 42 } 43 44/* 45 * Check if either of three extensions is enabled. 46 */ 47#define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \ 48 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \ 49 !ctx->Extensions.EXT3) { \ 50 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \ 51 return; \ 52 } 53 54/* 55 * Check if either of four extensions is enabled. 56 */ 57#define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \ 58 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \ 59 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \ 60 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \ 61 return; \ 62 } 63 64 65void GLAPIENTRY 66_mesa_GetBooleanv( GLenum pname, GLboolean *params ) 67{ 68 GET_CURRENT_CONTEXT(ctx); 69 ASSERT_OUTSIDE_BEGIN_END(ctx); 70 71 if (!params) 72 return; 73 74 if (ctx->NewState) 75 _mesa_update_state(ctx); 76 77 if (ctx->Driver.GetBooleanv && 78 ctx->Driver.GetBooleanv(ctx, pname, params)) 79 return; 80 81 switch (pname) { 82 case GL_ACCUM_RED_BITS: 83 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits); 84 break; 85 case GL_ACCUM_GREEN_BITS: 86 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits); 87 break; 88 case GL_ACCUM_BLUE_BITS: 89 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits); 90 break; 91 case GL_ACCUM_ALPHA_BITS: 92 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits); 93 break; 94 case GL_ACCUM_CLEAR_VALUE: 95 params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]); 96 params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]); 97 params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]); 98 params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]); 99 break; 100 case GL_ALPHA_BIAS: 101 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias); 102 break; 103 case GL_ALPHA_BITS: 104 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits); 105 break; 106 case GL_ALPHA_SCALE: 107 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale); 108 break; 109 case GL_ALPHA_TEST: 110 params[0] = ctx->Color.AlphaEnabled; 111 break; 112 case GL_ALPHA_TEST_FUNC: 113 params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc); 114 break; 115 case GL_ALPHA_TEST_REF: 116 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef); 117 break; 118 case GL_ATTRIB_STACK_DEPTH: 119 params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth); 120 break; 121 case GL_AUTO_NORMAL: 122 params[0] = ctx->Eval.AutoNormal; 123 break; 124 case GL_AUX_BUFFERS: 125 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers); 126 break; 127 case GL_BLEND: 128 params[0] = ctx->Color.BlendEnabled; 129 break; 130 case GL_BLEND_DST: 131 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB); 132 break; 133 case GL_BLEND_SRC: 134 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB); 135 break; 136 case GL_BLEND_SRC_RGB_EXT: 137 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB); 138 break; 139 case GL_BLEND_DST_RGB_EXT: 140 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB); 141 break; 142 case GL_BLEND_SRC_ALPHA_EXT: 143 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA); 144 break; 145 case GL_BLEND_DST_ALPHA_EXT: 146 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA); 147 break; 148 case GL_BLEND_EQUATION: 149 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB ); 150 break; 151 case GL_BLEND_EQUATION_ALPHA_EXT: 152 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA ); 153 break; 154 case GL_BLEND_COLOR_EXT: 155 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]); 156 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]); 157 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]); 158 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]); 159 break; 160 case GL_BLUE_BIAS: 161 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias); 162 break; 163 case GL_BLUE_BITS: 164 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits); 165 break; 166 case GL_BLUE_SCALE: 167 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale); 168 break; 169 case GL_CLIENT_ATTRIB_STACK_DEPTH: 170 params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth); 171 break; 172 case GL_CLIP_PLANE0: 173 params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1; 174 break; 175 case GL_CLIP_PLANE1: 176 params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1; 177 break; 178 case GL_CLIP_PLANE2: 179 params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1; 180 break; 181 case GL_CLIP_PLANE3: 182 params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1; 183 break; 184 case GL_CLIP_PLANE4: 185 params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1; 186 break; 187 case GL_CLIP_PLANE5: 188 params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1; 189 break; 190 case GL_COLOR_CLEAR_VALUE: 191 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]); 192 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]); 193 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]); 194 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]); 195 break; 196 case GL_COLOR_MATERIAL: 197 params[0] = ctx->Light.ColorMaterialEnabled; 198 break; 199 case GL_COLOR_MATERIAL_FACE: 200 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace); 201 break; 202 case GL_COLOR_MATERIAL_PARAMETER: 203 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode); 204 break; 205 case GL_COLOR_WRITEMASK: 206 params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[RCOMP] ? 1 : 0); 207 params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[GCOMP] ? 1 : 0); 208 params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[BCOMP] ? 1 : 0); 209 params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[ACOMP] ? 1 : 0); 210 break; 211 case GL_CULL_FACE: 212 params[0] = ctx->Polygon.CullFlag; 213 break; 214 case GL_CULL_FACE_MODE: 215 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode); 216 break; 217 case GL_CURRENT_COLOR: 218 { 219 FLUSH_CURRENT(ctx, 0); 220 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]); 221 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]); 222 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]); 223 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]); 224 } 225 break; 226 case GL_CURRENT_INDEX: 227 { 228 FLUSH_CURRENT(ctx, 0); 229 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]); 230 } 231 break; 232 case GL_CURRENT_NORMAL: 233 { 234 FLUSH_CURRENT(ctx, 0); 235 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]); 236 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]); 237 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]); 238 } 239 break; 240 case GL_CURRENT_RASTER_COLOR: 241 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]); 242 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]); 243 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]); 244 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]); 245 break; 246 case GL_CURRENT_RASTER_DISTANCE: 247 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance); 248 break; 249 case GL_CURRENT_RASTER_INDEX: 250 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterIndex); 251 break; 252 case GL_CURRENT_RASTER_POSITION: 253 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]); 254 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]); 255 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]); 256 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]); 257 break; 258 case GL_CURRENT_RASTER_SECONDARY_COLOR: 259 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]); 260 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]); 261 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]); 262 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]); 263 break; 264 case GL_CURRENT_RASTER_TEXTURE_COORDS: 265 { 266 const GLuint texUnit = ctx->Texture.CurrentUnit; 267 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][0]); 268 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][1]); 269 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][2]); 270 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][3]); 271 } 272 break; 273 case GL_CURRENT_RASTER_POSITION_VALID: 274 params[0] = ctx->Current.RasterPosValid; 275 break; 276 case GL_CURRENT_TEXTURE_COORDS: 277 { 278 const GLuint texUnit = ctx->Texture.CurrentUnit; 279 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]); 280 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]); 281 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]); 282 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]); 283 } 284 break; 285 case GL_DEPTH_BIAS: 286 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias); 287 break; 288 case GL_DEPTH_BITS: 289 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits); 290 break; 291 case GL_DEPTH_CLEAR_VALUE: 292 params[0] = FLOAT_TO_BOOLEAN(((GLfloat) ctx->Depth.Clear)); 293 break; 294 case GL_DEPTH_FUNC: 295 params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func); 296 break; 297 case GL_DEPTH_RANGE: 298 params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near); 299 params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far); 300 break; 301 case GL_DEPTH_SCALE: 302 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale); 303 break; 304 case GL_DEPTH_TEST: 305 params[0] = ctx->Depth.Test; 306 break; 307 case GL_DEPTH_WRITEMASK: 308 params[0] = ctx->Depth.Mask; 309 break; 310 case GL_DITHER: 311 params[0] = ctx->Color.DitherFlag; 312 break; 313 case GL_DOUBLEBUFFER: 314 params[0] = ctx->DrawBuffer->Visual.doubleBufferMode; 315 break; 316 case GL_DRAW_BUFFER: 317 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]); 318 break; 319 case GL_EDGE_FLAG: 320 { 321 FLUSH_CURRENT(ctx, 0); 322 params[0] = (ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0); 323 } 324 break; 325 case GL_FEEDBACK_BUFFER_SIZE: 326 params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize); 327 break; 328 case GL_FEEDBACK_BUFFER_TYPE: 329 params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type); 330 break; 331 case GL_FOG: 332 params[0] = ctx->Fog.Enabled; 333 break; 334 case GL_FOG_COLOR: 335 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]); 336 params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]); 337 params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]); 338 params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]); 339 break; 340 case GL_FOG_DENSITY: 341 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density); 342 break; 343 case GL_FOG_END: 344 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End); 345 break; 346 case GL_FOG_HINT: 347 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog); 348 break; 349 case GL_FOG_INDEX: 350 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index); 351 break; 352 case GL_FOG_MODE: 353 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode); 354 break; 355 case GL_FOG_START: 356 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start); 357 break; 358 case GL_FRONT_FACE: 359 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace); 360 break; 361 case GL_GREEN_BIAS: 362 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias); 363 break; 364 case GL_GREEN_BITS: 365 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits); 366 break; 367 case GL_GREEN_SCALE: 368 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale); 369 break; 370 case GL_INDEX_BITS: 371 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits); 372 break; 373 case GL_INDEX_CLEAR_VALUE: 374 params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex); 375 break; 376 case GL_INDEX_MODE: 377 params[0] = !ctx->DrawBuffer->Visual.rgbMode; 378 break; 379 case GL_INDEX_OFFSET: 380 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset); 381 break; 382 case GL_INDEX_SHIFT: 383 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift); 384 break; 385 case GL_INDEX_WRITEMASK: 386 params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask); 387 break; 388 case GL_LIGHT0: 389 params[0] = ctx->Light.Light[0].Enabled; 390 break; 391 case GL_LIGHT1: 392 params[0] = ctx->Light.Light[1].Enabled; 393 break; 394 case GL_LIGHT2: 395 params[0] = ctx->Light.Light[2].Enabled; 396 break; 397 case GL_LIGHT3: 398 params[0] = ctx->Light.Light[3].Enabled; 399 break; 400 case GL_LIGHT4: 401 params[0] = ctx->Light.Light[4].Enabled; 402 break; 403 case GL_LIGHT5: 404 params[0] = ctx->Light.Light[5].Enabled; 405 break; 406 case GL_LIGHT6: 407 params[0] = ctx->Light.Light[6].Enabled; 408 break; 409 case GL_LIGHT7: 410 params[0] = ctx->Light.Light[7].Enabled; 411 break; 412 case GL_LIGHTING: 413 params[0] = ctx->Light.Enabled; 414 break; 415 case GL_LIGHT_MODEL_AMBIENT: 416 params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]); 417 params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]); 418 params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]); 419 params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]); 420 break; 421 case GL_LIGHT_MODEL_COLOR_CONTROL: 422 params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl); 423 break; 424 case GL_LIGHT_MODEL_LOCAL_VIEWER: 425 params[0] = ctx->Light.Model.LocalViewer; 426 break; 427 case GL_LIGHT_MODEL_TWO_SIDE: 428 params[0] = ctx->Light.Model.TwoSide; 429 break; 430 case GL_LINE_SMOOTH: 431 params[0] = ctx->Line.SmoothFlag; 432 break; 433 case GL_LINE_SMOOTH_HINT: 434 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth); 435 break; 436 case GL_LINE_STIPPLE: 437 params[0] = ctx->Line.StippleFlag; 438 break; 439 case GL_LINE_STIPPLE_PATTERN: 440 params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern); 441 break; 442 case GL_LINE_STIPPLE_REPEAT: 443 params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor); 444 break; 445 case GL_LINE_WIDTH: 446 params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width); 447 break; 448 case GL_LINE_WIDTH_GRANULARITY: 449 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity); 450 break; 451 case GL_LINE_WIDTH_RANGE: 452 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA); 453 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA); 454 break; 455 case GL_ALIASED_LINE_WIDTH_RANGE: 456 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth); 457 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth); 458 break; 459 case GL_LIST_BASE: 460 params[0] = INT_TO_BOOLEAN(ctx->List.ListBase); 461 break; 462 case GL_LIST_INDEX: 463 params[0] = INT_TO_BOOLEAN((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0)); 464 break; 465 case GL_LIST_MODE: 466 { 467 GLenum mode; 468 if (!ctx->CompileFlag) 469 mode = 0; 470 else if (ctx->ExecuteFlag) 471 mode = GL_COMPILE_AND_EXECUTE; 472 else 473 mode = GL_COMPILE; 474 params[0] = ENUM_TO_BOOLEAN(mode); 475 } 476 break; 477 case GL_INDEX_LOGIC_OP: 478 params[0] = ctx->Color.IndexLogicOpEnabled; 479 break; 480 case GL_COLOR_LOGIC_OP: 481 params[0] = ctx->Color.ColorLogicOpEnabled; 482 break; 483 case GL_LOGIC_OP_MODE: 484 params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp); 485 break; 486 case GL_MAP1_COLOR_4: 487 params[0] = ctx->Eval.Map1Color4; 488 break; 489 case GL_MAP1_GRID_DOMAIN: 490 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1); 491 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2); 492 break; 493 case GL_MAP1_GRID_SEGMENTS: 494 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un); 495 break; 496 case GL_MAP1_INDEX: 497 params[0] = ctx->Eval.Map1Index; 498 break; 499 case GL_MAP1_NORMAL: 500 params[0] = ctx->Eval.Map1Normal; 501 break; 502 case GL_MAP1_TEXTURE_COORD_1: 503 params[0] = ctx->Eval.Map1TextureCoord1; 504 break; 505 case GL_MAP1_TEXTURE_COORD_2: 506 params[0] = ctx->Eval.Map1TextureCoord2; 507 break; 508 case GL_MAP1_TEXTURE_COORD_3: 509 params[0] = ctx->Eval.Map1TextureCoord3; 510 break; 511 case GL_MAP1_TEXTURE_COORD_4: 512 params[0] = ctx->Eval.Map1TextureCoord4; 513 break; 514 case GL_MAP1_VERTEX_3: 515 params[0] = ctx->Eval.Map1Vertex3; 516 break; 517 case GL_MAP1_VERTEX_4: 518 params[0] = ctx->Eval.Map1Vertex4; 519 break; 520 case GL_MAP2_COLOR_4: 521 params[0] = ctx->Eval.Map2Color4; 522 break; 523 case GL_MAP2_GRID_DOMAIN: 524 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1); 525 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2); 526 params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1); 527 params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2); 528 break; 529 case GL_MAP2_GRID_SEGMENTS: 530 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un); 531 params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn); 532 break; 533 case GL_MAP2_INDEX: 534 params[0] = ctx->Eval.Map2Index; 535 break; 536 case GL_MAP2_NORMAL: 537 params[0] = ctx->Eval.Map2Normal; 538 break; 539 case GL_MAP2_TEXTURE_COORD_1: 540 params[0] = ctx->Eval.Map2TextureCoord1; 541 break; 542 case GL_MAP2_TEXTURE_COORD_2: 543 params[0] = ctx->Eval.Map2TextureCoord2; 544 break; 545 case GL_MAP2_TEXTURE_COORD_3: 546 params[0] = ctx->Eval.Map2TextureCoord3; 547 break; 548 case GL_MAP2_TEXTURE_COORD_4: 549 params[0] = ctx->Eval.Map2TextureCoord4; 550 break; 551 case GL_MAP2_VERTEX_3: 552 params[0] = ctx->Eval.Map2Vertex3; 553 break; 554 case GL_MAP2_VERTEX_4: 555 params[0] = ctx->Eval.Map2Vertex4; 556 break; 557 case GL_MAP_COLOR: 558 params[0] = ctx->Pixel.MapColorFlag; 559 break; 560 case GL_MAP_STENCIL: 561 params[0] = ctx->Pixel.MapStencilFlag; 562 break; 563 case GL_MATRIX_MODE: 564 params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode); 565 break; 566 case GL_MAX_ATTRIB_STACK_DEPTH: 567 params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH); 568 break; 569 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: 570 params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH); 571 break; 572 case GL_MAX_CLIP_PLANES: 573 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes); 574 break; 575 case GL_MAX_ELEMENTS_VERTICES: 576 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize); 577 break; 578 case GL_MAX_ELEMENTS_INDICES: 579 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize); 580 break; 581 case GL_MAX_EVAL_ORDER: 582 params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER); 583 break; 584 case GL_MAX_LIGHTS: 585 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights); 586 break; 587 case GL_MAX_LIST_NESTING: 588 params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING); 589 break; 590 case GL_MAX_MODELVIEW_STACK_DEPTH: 591 params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH); 592 break; 593 case GL_MAX_NAME_STACK_DEPTH: 594 params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH); 595 break; 596 case GL_MAX_PIXEL_MAP_TABLE: 597 params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE); 598 break; 599 case GL_MAX_PROJECTION_STACK_DEPTH: 600 params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH); 601 break; 602 case GL_MAX_TEXTURE_SIZE: 603 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1)); 604 break; 605 case GL_MAX_3D_TEXTURE_SIZE: 606 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1)); 607 break; 608 case GL_MAX_TEXTURE_STACK_DEPTH: 609 params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH); 610 break; 611 case GL_MAX_VIEWPORT_DIMS: 612 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth); 613 params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight); 614 break; 615 case GL_MODELVIEW_MATRIX: 616 { 617 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 618 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 619 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 620 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 621 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 622 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 623 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 624 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 625 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 626 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 627 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 628 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 629 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 630 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 631 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 632 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 633 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 634 } 635 break; 636 case GL_MODELVIEW_STACK_DEPTH: 637 params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1); 638 break; 639 case GL_NAME_STACK_DEPTH: 640 params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth); 641 break; 642 case GL_NORMALIZE: 643 params[0] = ctx->Transform.Normalize; 644 break; 645 case GL_PACK_ALIGNMENT: 646 params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment); 647 break; 648 case GL_PACK_LSB_FIRST: 649 params[0] = ctx->Pack.LsbFirst; 650 break; 651 case GL_PACK_ROW_LENGTH: 652 params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength); 653 break; 654 case GL_PACK_SKIP_PIXELS: 655 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels); 656 break; 657 case GL_PACK_SKIP_ROWS: 658 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows); 659 break; 660 case GL_PACK_SWAP_BYTES: 661 params[0] = ctx->Pack.SwapBytes; 662 break; 663 case GL_PACK_SKIP_IMAGES_EXT: 664 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages); 665 break; 666 case GL_PACK_IMAGE_HEIGHT_EXT: 667 params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight); 668 break; 669 case GL_PACK_INVERT_MESA: 670 params[0] = ctx->Pack.Invert; 671 break; 672 case GL_PERSPECTIVE_CORRECTION_HINT: 673 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection); 674 break; 675 case GL_PIXEL_MAP_A_TO_A_SIZE: 676 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.AtoA.Size); 677 break; 678 case GL_PIXEL_MAP_B_TO_B_SIZE: 679 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.BtoB.Size); 680 break; 681 case GL_PIXEL_MAP_G_TO_G_SIZE: 682 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.GtoG.Size); 683 break; 684 case GL_PIXEL_MAP_I_TO_A_SIZE: 685 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoA.Size); 686 break; 687 case GL_PIXEL_MAP_I_TO_B_SIZE: 688 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoB.Size); 689 break; 690 case GL_PIXEL_MAP_I_TO_G_SIZE: 691 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoG.Size); 692 break; 693 case GL_PIXEL_MAP_I_TO_I_SIZE: 694 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoI.Size); 695 break; 696 case GL_PIXEL_MAP_I_TO_R_SIZE: 697 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoR.Size); 698 break; 699 case GL_PIXEL_MAP_R_TO_R_SIZE: 700 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.RtoR.Size); 701 break; 702 case GL_PIXEL_MAP_S_TO_S_SIZE: 703 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.StoS.Size); 704 break; 705 case GL_POINT_SIZE: 706 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size); 707 break; 708 case GL_POINT_SIZE_GRANULARITY: 709 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity); 710 break; 711 case GL_POINT_SIZE_RANGE: 712 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA); 713 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA); 714 break; 715 case GL_ALIASED_POINT_SIZE_RANGE: 716 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize); 717 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize); 718 break; 719 case GL_POINT_SMOOTH: 720 params[0] = ctx->Point.SmoothFlag; 721 break; 722 case GL_POINT_SMOOTH_HINT: 723 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth); 724 break; 725 case GL_POINT_SIZE_MIN_EXT: 726 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize); 727 break; 728 case GL_POINT_SIZE_MAX_EXT: 729 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize); 730 break; 731 case GL_POINT_FADE_THRESHOLD_SIZE_EXT: 732 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold); 733 break; 734 case GL_DISTANCE_ATTENUATION_EXT: 735 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]); 736 params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]); 737 params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]); 738 break; 739 case GL_POLYGON_MODE: 740 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode); 741 params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode); 742 break; 743 case GL_POLYGON_OFFSET_BIAS_EXT: 744 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits); 745 break; 746 case GL_POLYGON_OFFSET_FACTOR: 747 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor ); 748 break; 749 case GL_POLYGON_OFFSET_UNITS: 750 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits ); 751 break; 752 case GL_POLYGON_OFFSET_POINT: 753 params[0] = ctx->Polygon.OffsetPoint; 754 break; 755 case GL_POLYGON_OFFSET_LINE: 756 params[0] = ctx->Polygon.OffsetLine; 757 break; 758 case GL_POLYGON_OFFSET_FILL: 759 params[0] = ctx->Polygon.OffsetFill; 760 break; 761 case GL_POLYGON_SMOOTH: 762 params[0] = ctx->Polygon.SmoothFlag; 763 break; 764 case GL_POLYGON_SMOOTH_HINT: 765 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth); 766 break; 767 case GL_POLYGON_STIPPLE: 768 params[0] = ctx->Polygon.StippleFlag; 769 break; 770 case GL_PROJECTION_MATRIX: 771 { 772 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 773 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 774 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 775 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 776 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 777 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 778 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 779 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 780 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 781 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 782 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 783 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 784 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 785 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 786 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 787 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 788 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 789 } 790 break; 791 case GL_PROJECTION_STACK_DEPTH: 792 params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1); 793 break; 794 case GL_READ_BUFFER: 795 params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer); 796 break; 797 case GL_RED_BIAS: 798 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias); 799 break; 800 case GL_RED_BITS: 801 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.redBits); 802 break; 803 case GL_RED_SCALE: 804 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale); 805 break; 806 case GL_RENDER_MODE: 807 params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode); 808 break; 809 case GL_RESCALE_NORMAL: 810 params[0] = ctx->Transform.RescaleNormals; 811 break; 812 case GL_RGBA_MODE: 813 params[0] = ctx->DrawBuffer->Visual.rgbMode; 814 break; 815 case GL_SCISSOR_BOX: 816 params[0] = INT_TO_BOOLEAN(ctx->Scissor.X); 817 params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y); 818 params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width); 819 params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height); 820 break; 821 case GL_SCISSOR_TEST: 822 params[0] = ctx->Scissor.Enabled; 823 break; 824 case GL_SELECTION_BUFFER_SIZE: 825 params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize); 826 break; 827 case GL_SHADE_MODEL: 828 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel); 829 break; 830 case GL_SHARED_TEXTURE_PALETTE_EXT: 831 params[0] = ctx->Texture.SharedPalette; 832 break; 833 case GL_STENCIL_BITS: 834 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits); 835 break; 836 case GL_STENCIL_CLEAR_VALUE: 837 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear); 838 break; 839 case GL_STENCIL_FAIL: 840 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); 841 break; 842 case GL_STENCIL_FUNC: 843 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); 844 break; 845 case GL_STENCIL_PASS_DEPTH_FAIL: 846 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); 847 break; 848 case GL_STENCIL_PASS_DEPTH_PASS: 849 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); 850 break; 851 case GL_STENCIL_REF: 852 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]); 853 break; 854 case GL_STENCIL_TEST: 855 params[0] = ctx->Stencil.Enabled; 856 break; 857 case GL_STENCIL_VALUE_MASK: 858 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]); 859 break; 860 case GL_STENCIL_WRITEMASK: 861 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]); 862 break; 863 case GL_STEREO: 864 params[0] = ctx->DrawBuffer->Visual.stereoMode; 865 break; 866 case GL_SUBPIXEL_BITS: 867 params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits); 868 break; 869 case GL_TEXTURE_1D: 870 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D); 871 break; 872 case GL_TEXTURE_2D: 873 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D); 874 break; 875 case GL_TEXTURE_3D: 876 params[0] = _mesa_IsEnabled(GL_TEXTURE_3D); 877 break; 878 case GL_TEXTURE_1D_ARRAY_EXT: 879 CHECK_EXT1(MESA_texture_array, "GetBooleanv"); 880 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT); 881 break; 882 case GL_TEXTURE_2D_ARRAY_EXT: 883 CHECK_EXT1(MESA_texture_array, "GetBooleanv"); 884 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT); 885 break; 886 case GL_TEXTURE_BINDING_1D: 887 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name); 888 break; 889 case GL_TEXTURE_BINDING_2D: 890 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name); 891 break; 892 case GL_TEXTURE_BINDING_3D: 893 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name); 894 break; 895 case GL_TEXTURE_BINDING_1D_ARRAY_EXT: 896 CHECK_EXT1(MESA_texture_array, "GetBooleanv"); 897 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name); 898 break; 899 case GL_TEXTURE_BINDING_2D_ARRAY_EXT: 900 CHECK_EXT1(MESA_texture_array, "GetBooleanv"); 901 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name); 902 break; 903 case GL_TEXTURE_GEN_S: 904 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0); 905 break; 906 case GL_TEXTURE_GEN_T: 907 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0); 908 break; 909 case GL_TEXTURE_GEN_R: 910 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0); 911 break; 912 case GL_TEXTURE_GEN_Q: 913 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0); 914 break; 915 case GL_TEXTURE_MATRIX: 916 { 917 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 918 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 919 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 920 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 921 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 922 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 923 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 924 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 925 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 926 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 927 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 928 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 929 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 930 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 931 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 932 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 933 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 934 } 935 break; 936 case GL_TEXTURE_STACK_DEPTH: 937 params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1); 938 break; 939 case GL_UNPACK_ALIGNMENT: 940 params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment); 941 break; 942 case GL_UNPACK_LSB_FIRST: 943 params[0] = ctx->Unpack.LsbFirst; 944 break; 945 case GL_UNPACK_ROW_LENGTH: 946 params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength); 947 break; 948 case GL_UNPACK_SKIP_PIXELS: 949 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels); 950 break; 951 case GL_UNPACK_SKIP_ROWS: 952 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows); 953 break; 954 case GL_UNPACK_SWAP_BYTES: 955 params[0] = ctx->Unpack.SwapBytes; 956 break; 957 case GL_UNPACK_SKIP_IMAGES_EXT: 958 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages); 959 break; 960 case GL_UNPACK_IMAGE_HEIGHT_EXT: 961 params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight); 962 break; 963 case GL_UNPACK_CLIENT_STORAGE_APPLE: 964 params[0] = ctx->Unpack.ClientStorage; 965 break; 966 case GL_VIEWPORT: 967 params[0] = INT_TO_BOOLEAN(ctx->Viewport.X); 968 params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y); 969 params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width); 970 params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height); 971 break; 972 case GL_ZOOM_X: 973 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX); 974 break; 975 case GL_ZOOM_Y: 976 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY); 977 break; 978 case GL_VERTEX_ARRAY: 979 params[0] = ctx->Array.ArrayObj->Vertex.Enabled; 980 break; 981 case GL_VERTEX_ARRAY_SIZE: 982 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size); 983 break; 984 case GL_VERTEX_ARRAY_TYPE: 985 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type); 986 break; 987 case GL_VERTEX_ARRAY_STRIDE: 988 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride); 989 break; 990 case GL_VERTEX_ARRAY_COUNT_EXT: 991 params[0] = INT_TO_BOOLEAN(0); 992 break; 993 case GL_NORMAL_ARRAY: 994 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled); 995 break; 996 case GL_NORMAL_ARRAY_TYPE: 997 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type); 998 break; 999 case GL_NORMAL_ARRAY_STRIDE: 1000 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride); 1001 break; 1002 case GL_NORMAL_ARRAY_COUNT_EXT: 1003 params[0] = INT_TO_BOOLEAN(0); 1004 break; 1005 case GL_COLOR_ARRAY: 1006 params[0] = ctx->Array.ArrayObj->Color.Enabled; 1007 break; 1008 case GL_COLOR_ARRAY_SIZE: 1009 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size); 1010 break; 1011 case GL_COLOR_ARRAY_TYPE: 1012 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type); 1013 break; 1014 case GL_COLOR_ARRAY_STRIDE: 1015 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride); 1016 break; 1017 case GL_COLOR_ARRAY_COUNT_EXT: 1018 params[0] = INT_TO_BOOLEAN(0); 1019 break; 1020 case GL_INDEX_ARRAY: 1021 params[0] = ctx->Array.ArrayObj->Index.Enabled; 1022 break; 1023 case GL_INDEX_ARRAY_TYPE: 1024 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type); 1025 break; 1026 case GL_INDEX_ARRAY_STRIDE: 1027 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride); 1028 break; 1029 case GL_INDEX_ARRAY_COUNT_EXT: 1030 params[0] = INT_TO_BOOLEAN(0); 1031 break; 1032 case GL_TEXTURE_COORD_ARRAY: 1033 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled; 1034 break; 1035 case GL_TEXTURE_COORD_ARRAY_SIZE: 1036 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size); 1037 break; 1038 case GL_TEXTURE_COORD_ARRAY_TYPE: 1039 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type); 1040 break; 1041 case GL_TEXTURE_COORD_ARRAY_STRIDE: 1042 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride); 1043 break; 1044 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: 1045 params[0] = INT_TO_BOOLEAN(0); 1046 break; 1047 case GL_EDGE_FLAG_ARRAY: 1048 params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled; 1049 break; 1050 case GL_EDGE_FLAG_ARRAY_STRIDE: 1051 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride); 1052 break; 1053 case GL_EDGE_FLAG_ARRAY_COUNT_EXT: 1054 params[0] = INT_TO_BOOLEAN(0); 1055 break; 1056 case GL_MAX_TEXTURE_UNITS_ARB: 1057 CHECK_EXT1(ARB_multitexture, "GetBooleanv"); 1058 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits); 1059 break; 1060 case GL_ACTIVE_TEXTURE_ARB: 1061 CHECK_EXT1(ARB_multitexture, "GetBooleanv"); 1062 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit); 1063 break; 1064 case GL_CLIENT_ACTIVE_TEXTURE_ARB: 1065 CHECK_EXT1(ARB_multitexture, "GetBooleanv"); 1066 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture); 1067 break; 1068 case GL_TEXTURE_CUBE_MAP_ARB: 1069 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv"); 1070 params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB); 1071 break; 1072 case GL_TEXTURE_BINDING_CUBE_MAP_ARB: 1073 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv"); 1074 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name); 1075 break; 1076 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 1077 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv"); 1078 params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1))); 1079 break; 1080 case GL_TEXTURE_COMPRESSION_HINT_ARB: 1081 params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression); 1082 break; 1083 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: 1084 params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)); 1085 break; 1086 case GL_COMPRESSED_TEXTURE_FORMATS_ARB: 1087 { 1088 GLint formats[100]; 1089 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE); 1090 ASSERT(n <= 100); 1091 for (i = 0; i < n; i++) 1092 params[i] = ENUM_TO_BOOLEAN(formats[i]); 1093 } 1094 break; 1095 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: 1096 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv"); 1097 params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst); 1098 break; 1099 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: 1100 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv"); 1101 params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount); 1102 break; 1103 case GL_TRANSPOSE_COLOR_MATRIX_ARB: 1104 { 1105 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 1106 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1107 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1108 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1109 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1110 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1111 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1112 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1113 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1114 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1115 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1116 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1117 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1118 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1119 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1120 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1121 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1122 } 1123 break; 1124 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: 1125 { 1126 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 1127 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1128 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1129 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1130 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1131 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1132 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1133 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1134 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1135 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1136 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1137 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1138 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1139 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1140 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1141 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1142 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1143 } 1144 break; 1145 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: 1146 { 1147 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 1148 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1149 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1150 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1151 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1152 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1153 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1154 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1155 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1156 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1157 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1158 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1159 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1160 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1161 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1162 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1163 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1164 } 1165 break; 1166 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: 1167 { 1168 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 1169 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1170 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1171 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1172 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1173 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1174 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1175 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1176 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1177 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1178 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1179 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1180 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1181 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1182 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1183 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1184 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1185 } 1186 break; 1187 case GL_COLOR_MATRIX_SGI: 1188 { 1189 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 1190 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1191 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 1192 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 1193 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 1194 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 1195 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1196 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 1197 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 1198 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 1199 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 1200 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1201 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 1202 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 1203 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 1204 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 1205 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1206 } 1207 break; 1208 case GL_COLOR_MATRIX_STACK_DEPTH_SGI: 1209 params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1); 1210 break; 1211 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: 1212 params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH); 1213 break; 1214 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: 1215 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]); 1216 break; 1217 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: 1218 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]); 1219 break; 1220 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: 1221 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]); 1222 break; 1223 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: 1224 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]); 1225 break; 1226 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: 1227 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]); 1228 break; 1229 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: 1230 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]); 1231 break; 1232 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: 1233 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]); 1234 break; 1235 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: 1236 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]); 1237 break; 1238 case GL_CONVOLUTION_1D_EXT: 1239 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1240 params[0] = ctx->Pixel.Convolution1DEnabled; 1241 break; 1242 case GL_CONVOLUTION_2D_EXT: 1243 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1244 params[0] = ctx->Pixel.Convolution2DEnabled; 1245 break; 1246 case GL_SEPARABLE_2D_EXT: 1247 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1248 params[0] = ctx->Pixel.Separable2DEnabled; 1249 break; 1250 case GL_POST_CONVOLUTION_RED_SCALE_EXT: 1251 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1252 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]); 1253 break; 1254 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: 1255 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1256 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]); 1257 break; 1258 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: 1259 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1260 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]); 1261 break; 1262 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: 1263 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1264 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]); 1265 break; 1266 case GL_POST_CONVOLUTION_RED_BIAS_EXT: 1267 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1268 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]); 1269 break; 1270 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: 1271 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1272 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]); 1273 break; 1274 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: 1275 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1276 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]); 1277 break; 1278 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: 1279 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1280 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]); 1281 break; 1282 case GL_HISTOGRAM: 1283 CHECK_EXT1(EXT_histogram, "GetBooleanv"); 1284 params[0] = ctx->Pixel.HistogramEnabled; 1285 break; 1286 case GL_MINMAX: 1287 CHECK_EXT1(EXT_histogram, "GetBooleanv"); 1288 params[0] = ctx->Pixel.MinMaxEnabled; 1289 break; 1290 case GL_COLOR_TABLE_SGI: 1291 CHECK_EXT1(SGI_color_table, "GetBooleanv"); 1292 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]; 1293 break; 1294 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: 1295 CHECK_EXT1(SGI_color_table, "GetBooleanv"); 1296 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]; 1297 break; 1298 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: 1299 CHECK_EXT1(SGI_color_table, "GetBooleanv"); 1300 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]; 1301 break; 1302 case GL_TEXTURE_COLOR_TABLE_SGI: 1303 CHECK_EXT1(SGI_texture_color_table, "GetBooleanv"); 1304 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled; 1305 break; 1306 case GL_COLOR_SUM_EXT: 1307 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetBooleanv"); 1308 params[0] = ctx->Fog.ColorSumEnabled; 1309 break; 1310 case GL_CURRENT_SECONDARY_COLOR_EXT: 1311 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1312 { 1313 FLUSH_CURRENT(ctx, 0); 1314 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]); 1315 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]); 1316 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]); 1317 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]); 1318 } 1319 break; 1320 case GL_SECONDARY_COLOR_ARRAY_EXT: 1321 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1322 params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled; 1323 break; 1324 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: 1325 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1326 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type); 1327 break; 1328 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: 1329 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1330 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride); 1331 break; 1332 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: 1333 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1334 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size); 1335 break; 1336 case GL_CURRENT_FOG_COORDINATE_EXT: 1337 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1338 { 1339 FLUSH_CURRENT(ctx, 0); 1340 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]); 1341 } 1342 break; 1343 case GL_FOG_COORDINATE_ARRAY_EXT: 1344 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1345 params[0] = ctx->Array.ArrayObj->FogCoord.Enabled; 1346 break; 1347 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: 1348 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1349 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type); 1350 break; 1351 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: 1352 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1353 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride); 1354 break; 1355 case GL_FOG_COORDINATE_SOURCE_EXT: 1356 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1357 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource); 1358 break; 1359 case GL_MAX_TEXTURE_LOD_BIAS_EXT: 1360 CHECK_EXT1(EXT_texture_lod_bias, "GetBooleanv"); 1361 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias); 1362 break; 1363 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 1364 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetBooleanv"); 1365 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy); 1366 break; 1367 case GL_MULTISAMPLE_ARB: 1368 params[0] = ctx->Multisample.Enabled; 1369 break; 1370 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: 1371 params[0] = ctx->Multisample.SampleAlphaToCoverage; 1372 break; 1373 case GL_SAMPLE_ALPHA_TO_ONE_ARB: 1374 params[0] = ctx->Multisample.SampleAlphaToOne; 1375 break; 1376 case GL_SAMPLE_COVERAGE_ARB: 1377 params[0] = ctx->Multisample.SampleCoverage; 1378 break; 1379 case GL_SAMPLE_COVERAGE_VALUE_ARB: 1380 params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue); 1381 break; 1382 case GL_SAMPLE_COVERAGE_INVERT_ARB: 1383 params[0] = ctx->Multisample.SampleCoverageInvert; 1384 break; 1385 case GL_SAMPLE_BUFFERS_ARB: 1386 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers); 1387 break; 1388 case GL_SAMPLES_ARB: 1389 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples); 1390 break; 1391 case GL_RASTER_POSITION_UNCLIPPED_IBM: 1392 CHECK_EXT1(IBM_rasterpos_clip, "GetBooleanv"); 1393 params[0] = ctx->Transform.RasterPositionUnclipped; 1394 break; 1395 case GL_POINT_SPRITE_NV: 1396 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv"); 1397 params[0] = ctx->Point.PointSprite; 1398 break; 1399 case GL_POINT_SPRITE_R_MODE_NV: 1400 CHECK_EXT1(NV_point_sprite, "GetBooleanv"); 1401 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode); 1402 break; 1403 case GL_POINT_SPRITE_COORD_ORIGIN: 1404 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv"); 1405 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin); 1406 break; 1407 case GL_GENERATE_MIPMAP_HINT_SGIS: 1408 CHECK_EXT1(SGIS_generate_mipmap, "GetBooleanv"); 1409 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap); 1410 break; 1411 case GL_VERTEX_PROGRAM_BINDING_NV: 1412 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1413 params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0)); 1414 break; 1415 case GL_VERTEX_ATTRIB_ARRAY0_NV: 1416 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1417 params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled; 1418 break; 1419 case GL_VERTEX_ATTRIB_ARRAY1_NV: 1420 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1421 params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled; 1422 break; 1423 case GL_VERTEX_ATTRIB_ARRAY2_NV: 1424 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1425 params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled; 1426 break; 1427 case GL_VERTEX_ATTRIB_ARRAY3_NV: 1428 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1429 params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled; 1430 break; 1431 case GL_VERTEX_ATTRIB_ARRAY4_NV: 1432 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1433 params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled; 1434 break; 1435 case GL_VERTEX_ATTRIB_ARRAY5_NV: 1436 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1437 params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled; 1438 break; 1439 case GL_VERTEX_ATTRIB_ARRAY6_NV: 1440 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1441 params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled; 1442 break; 1443 case GL_VERTEX_ATTRIB_ARRAY7_NV: 1444 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1445 params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled; 1446 break; 1447 case GL_VERTEX_ATTRIB_ARRAY8_NV: 1448 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1449 params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled; 1450 break; 1451 case GL_VERTEX_ATTRIB_ARRAY9_NV: 1452 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1453 params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled; 1454 break; 1455 case GL_VERTEX_ATTRIB_ARRAY10_NV: 1456 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1457 params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled; 1458 break; 1459 case GL_VERTEX_ATTRIB_ARRAY11_NV: 1460 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1461 params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled; 1462 break; 1463 case GL_VERTEX_ATTRIB_ARRAY12_NV: 1464 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1465 params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled; 1466 break; 1467 case GL_VERTEX_ATTRIB_ARRAY13_NV: 1468 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1469 params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled; 1470 break; 1471 case GL_VERTEX_ATTRIB_ARRAY14_NV: 1472 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1473 params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled; 1474 break; 1475 case GL_VERTEX_ATTRIB_ARRAY15_NV: 1476 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1477 params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled; 1478 break; 1479 case GL_MAP1_VERTEX_ATTRIB0_4_NV: 1480 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1481 params[0] = ctx->Eval.Map1Attrib[0]; 1482 break; 1483 case GL_MAP1_VERTEX_ATTRIB1_4_NV: 1484 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1485 params[0] = ctx->Eval.Map1Attrib[1]; 1486 break; 1487 case GL_MAP1_VERTEX_ATTRIB2_4_NV: 1488 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1489 params[0] = ctx->Eval.Map1Attrib[2]; 1490 break; 1491 case GL_MAP1_VERTEX_ATTRIB3_4_NV: 1492 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1493 params[0] = ctx->Eval.Map1Attrib[3]; 1494 break; 1495 case GL_MAP1_VERTEX_ATTRIB4_4_NV: 1496 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1497 params[0] = ctx->Eval.Map1Attrib[4]; 1498 break; 1499 case GL_MAP1_VERTEX_ATTRIB5_4_NV: 1500 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1501 params[0] = ctx->Eval.Map1Attrib[5]; 1502 break; 1503 case GL_MAP1_VERTEX_ATTRIB6_4_NV: 1504 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1505 params[0] = ctx->Eval.Map1Attrib[6]; 1506 break; 1507 case GL_MAP1_VERTEX_ATTRIB7_4_NV: 1508 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1509 params[0] = ctx->Eval.Map1Attrib[7]; 1510 break; 1511 case GL_MAP1_VERTEX_ATTRIB8_4_NV: 1512 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1513 params[0] = ctx->Eval.Map1Attrib[8]; 1514 break; 1515 case GL_MAP1_VERTEX_ATTRIB9_4_NV: 1516 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1517 params[0] = ctx->Eval.Map1Attrib[9]; 1518 break; 1519 case GL_MAP1_VERTEX_ATTRIB10_4_NV: 1520 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1521 params[0] = ctx->Eval.Map1Attrib[10]; 1522 break; 1523 case GL_MAP1_VERTEX_ATTRIB11_4_NV: 1524 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1525 params[0] = ctx->Eval.Map1Attrib[11]; 1526 break; 1527 case GL_MAP1_VERTEX_ATTRIB12_4_NV: 1528 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1529 params[0] = ctx->Eval.Map1Attrib[12]; 1530 break; 1531 case GL_MAP1_VERTEX_ATTRIB13_4_NV: 1532 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1533 params[0] = ctx->Eval.Map1Attrib[13]; 1534 break; 1535 case GL_MAP1_VERTEX_ATTRIB14_4_NV: 1536 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1537 params[0] = ctx->Eval.Map1Attrib[14]; 1538 break; 1539 case GL_MAP1_VERTEX_ATTRIB15_4_NV: 1540 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1541 params[0] = ctx->Eval.Map1Attrib[15]; 1542 break; 1543 case GL_FRAGMENT_PROGRAM_NV: 1544 CHECK_EXT1(NV_fragment_program, "GetBooleanv"); 1545 params[0] = ctx->FragmentProgram.Enabled; 1546 break; 1547 case GL_FRAGMENT_PROGRAM_BINDING_NV: 1548 CHECK_EXT1(NV_fragment_program, "GetBooleanv"); 1549 params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0); 1550 break; 1551 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV: 1552 CHECK_EXT1(NV_fragment_program, "GetBooleanv"); 1553 params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS); 1554 break; 1555 case GL_TEXTURE_RECTANGLE_NV: 1556 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv"); 1557 params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV); 1558 break; 1559 case GL_TEXTURE_BINDING_RECTANGLE_NV: 1560 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv"); 1561 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name); 1562 break; 1563 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: 1564 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv"); 1565 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize); 1566 break; 1567 case GL_STENCIL_TEST_TWO_SIDE_EXT: 1568 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv"); 1569 params[0] = ctx->Stencil.TestTwoSide; 1570 break; 1571 case GL_ACTIVE_STENCIL_FACE_EXT: 1572 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv"); 1573 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); 1574 break; 1575 case GL_MAX_SHININESS_NV: 1576 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv"); 1577 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess); 1578 break; 1579 case GL_MAX_SPOT_EXPONENT_NV: 1580 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv"); 1581 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent); 1582 break; 1583 case GL_ARRAY_BUFFER_BINDING_ARB: 1584 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name); 1585 break; 1586 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB: 1587 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name); 1588 break; 1589 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB: 1590 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name); 1591 break; 1592 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB: 1593 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name); 1594 break; 1595 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB: 1596 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name); 1597 break; 1598 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: 1599 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name); 1600 break; 1601 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: 1602 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name); 1603 break; 1604 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: 1605 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name); 1606 break; 1607 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: 1608 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name); 1609 break; 1610 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB: 1611 params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name); 1612 break; 1613 case GL_PIXEL_PACK_BUFFER_BINDING_EXT: 1614 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv"); 1615 params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name); 1616 break; 1617 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT: 1618 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv"); 1619 params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name); 1620 break; 1621 case GL_VERTEX_PROGRAM_ARB: 1622 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv"); 1623 params[0] = ctx->VertexProgram.Enabled; 1624 break; 1625 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB: 1626 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv"); 1627 params[0] = ctx->VertexProgram.PointSizeEnabled; 1628 break; 1629 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB: 1630 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv"); 1631 params[0] = ctx->VertexProgram.TwoSideEnabled; 1632 break; 1633 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 1634 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv"); 1635 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth); 1636 break; 1637 case GL_MAX_PROGRAM_MATRICES_ARB: 1638 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv"); 1639 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices); 1640 break; 1641 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB: 1642 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv"); 1643 params[0] = ctx->CurrentStack->Depth + 1; 1644 break; 1645 case GL_CURRENT_MATRIX_ARB: 1646 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetBooleanv"); 1647 { 1648 const GLfloat *matrix = ctx->CurrentStack->Top->m; 1649 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1650 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 1651 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 1652 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 1653 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 1654 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1655 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 1656 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 1657 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 1658 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 1659 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1660 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 1661 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 1662 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 1663 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 1664 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1665 } 1666 break; 1667 case GL_TRANSPOSE_CURRENT_MATRIX_ARB: 1668 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetBooleanv"); 1669 { 1670 const GLfloat *matrix = ctx->CurrentStack->Top->m; 1671 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1672 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1673 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1674 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1675 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1676 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1677 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1678 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1679 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1680 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1681 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1682 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1683 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1684 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1685 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1686 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1687 } 1688 break; 1689 case GL_MAX_VERTEX_ATTRIBS_ARB: 1690 CHECK_EXT1(ARB_vertex_program, "GetBooleanv"); 1691 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs); 1692 break; 1693 case GL_PROGRAM_ERROR_POSITION_ARB: 1694 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetBooleanv"); 1695 params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos); 1696 break; 1697 case GL_FRAGMENT_PROGRAM_ARB: 1698 CHECK_EXT1(ARB_fragment_program, "GetBooleanv"); 1699 params[0] = ctx->FragmentProgram.Enabled; 1700 break; 1701 case GL_MAX_TEXTURE_COORDS_ARB: 1702 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv"); 1703 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits); 1704 break; 1705 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 1706 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv"); 1707 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits); 1708 break; 1709 case GL_DEPTH_BOUNDS_TEST_EXT: 1710 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv"); 1711 params[0] = ctx->Depth.BoundsTest; 1712 break; 1713 case GL_DEPTH_BOUNDS_EXT: 1714 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv"); 1715 params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin); 1716 params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax); 1717 break; 1718 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA: 1719 CHECK_EXT1(MESA_program_debug, "GetBooleanv"); 1720 params[0] = ctx->FragmentProgram.CallbackEnabled; 1721 break; 1722 case GL_VERTEX_PROGRAM_CALLBACK_MESA: 1723 CHECK_EXT1(MESA_program_debug, "GetBooleanv"); 1724 params[0] = ctx->VertexProgram.CallbackEnabled; 1725 break; 1726 case GL_FRAGMENT_PROGRAM_POSITION_MESA: 1727 CHECK_EXT1(MESA_program_debug, "GetBooleanv"); 1728 params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.CurrentPosition); 1729 break; 1730 case GL_VERTEX_PROGRAM_POSITION_MESA: 1731 CHECK_EXT1(MESA_program_debug, "GetBooleanv"); 1732 params[0] = INT_TO_BOOLEAN(ctx->VertexProgram.CurrentPosition); 1733 break; 1734 case GL_MAX_DRAW_BUFFERS_ARB: 1735 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers); 1736 break; 1737 case GL_DRAW_BUFFER0_ARB: 1738 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]); 1739 break; 1740 case GL_DRAW_BUFFER1_ARB: 1741 { 1742 GLenum buffer; 1743 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 1744 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 1745 return; 1746 } 1747 buffer = ctx->DrawBuffer->ColorDrawBuffer[1]; 1748 params[0] = ENUM_TO_BOOLEAN(buffer); 1749 } 1750 break; 1751 case GL_DRAW_BUFFER2_ARB: 1752 { 1753 GLenum buffer; 1754 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 1755 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 1756 return; 1757 } 1758 buffer = ctx->DrawBuffer->ColorDrawBuffer[2]; 1759 params[0] = ENUM_TO_BOOLEAN(buffer); 1760 } 1761 break; 1762 case GL_DRAW_BUFFER3_ARB: 1763 { 1764 GLenum buffer; 1765 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 1766 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 1767 return; 1768 } 1769 buffer = ctx->DrawBuffer->ColorDrawBuffer[3]; 1770 params[0] = ENUM_TO_BOOLEAN(buffer); 1771 } 1772 break; 1773 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: 1774 CHECK_EXT1(OES_read_format, "GetBooleanv"); 1775 params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadType); 1776 break; 1777 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: 1778 CHECK_EXT1(OES_read_format, "GetBooleanv"); 1779 params[0] = INT_TO_BOOLEAN(ctx->Const.ColorReadFormat); 1780 break; 1781 case GL_NUM_FRAGMENT_REGISTERS_ATI: 1782 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1783 params[0] = INT_TO_BOOLEAN(6); 1784 break; 1785 case GL_NUM_FRAGMENT_CONSTANTS_ATI: 1786 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1787 params[0] = INT_TO_BOOLEAN(8); 1788 break; 1789 case GL_NUM_PASSES_ATI: 1790 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1791 params[0] = INT_TO_BOOLEAN(2); 1792 break; 1793 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI: 1794 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1795 params[0] = INT_TO_BOOLEAN(8); 1796 break; 1797 case GL_NUM_INSTRUCTIONS_TOTAL_ATI: 1798 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1799 params[0] = INT_TO_BOOLEAN(16); 1800 break; 1801 case GL_COLOR_ALPHA_PAIRING_ATI: 1802 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1803 params[0] = GL_TRUE; 1804 break; 1805 case GL_NUM_LOOPBACK_COMPONENTS_ATI: 1806 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1807 params[0] = INT_TO_BOOLEAN(3); 1808 break; 1809 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI: 1810 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1811 params[0] = INT_TO_BOOLEAN(3); 1812 break; 1813 case GL_STENCIL_BACK_FUNC: 1814 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]); 1815 break; 1816 case GL_STENCIL_BACK_VALUE_MASK: 1817 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]); 1818 break; 1819 case GL_STENCIL_BACK_WRITEMASK: 1820 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]); 1821 break; 1822 case GL_STENCIL_BACK_REF: 1823 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]); 1824 break; 1825 case GL_STENCIL_BACK_FAIL: 1826 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]); 1827 break; 1828 case GL_STENCIL_BACK_PASS_DEPTH_FAIL: 1829 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]); 1830 break; 1831 case GL_STENCIL_BACK_PASS_DEPTH_PASS: 1832 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]); 1833 break; 1834 case GL_FRAMEBUFFER_BINDING_EXT: 1835 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); 1836 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name); 1837 break; 1838 case GL_RENDERBUFFER_BINDING_EXT: 1839 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); 1840 params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0); 1841 break; 1842 case GL_MAX_COLOR_ATTACHMENTS_EXT: 1843 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); 1844 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments); 1845 break; 1846 case GL_MAX_RENDERBUFFER_SIZE_EXT: 1847 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); 1848 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize); 1849 break; 1850 case GL_READ_FRAMEBUFFER_BINDING_EXT: 1851 CHECK_EXT1(EXT_framebuffer_blit, "GetBooleanv"); 1852 params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name); 1853 break; 1854 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: 1855 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv"); 1856 params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents); 1857 break; 1858 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: 1859 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv"); 1860 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative); 1861 break; 1862 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: 1863 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); 1864 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents); 1865 break; 1866 case GL_MAX_VARYING_FLOATS_ARB: 1867 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); 1868 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4); 1869 break; 1870 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 1871 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); 1872 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits); 1873 break; 1874 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: 1875 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); 1876 params[0] = INT_TO_BOOLEAN(MAX_COMBINED_TEXTURE_IMAGE_UNITS); 1877 break; 1878 case GL_CURRENT_PROGRAM: 1879 CHECK_EXT1(ARB_shader_objects, "GetBooleanv"); 1880 params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0); 1881 break; 1882 case GL_MAX_SAMPLES: 1883 CHECK_EXT1(ARB_framebuffer_object, "GetBooleanv"); 1884 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxSamples); 1885 break; 1886 default: 1887 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname); 1888 } 1889} 1890 1891void GLAPIENTRY 1892_mesa_GetFloatv( GLenum pname, GLfloat *params ) 1893{ 1894 GET_CURRENT_CONTEXT(ctx); 1895 ASSERT_OUTSIDE_BEGIN_END(ctx); 1896 1897 if (!params) 1898 return; 1899 1900 if (ctx->NewState) 1901 _mesa_update_state(ctx); 1902 1903 if (ctx->Driver.GetFloatv && 1904 ctx->Driver.GetFloatv(ctx, pname, params)) 1905 return; 1906 1907 switch (pname) { 1908 case GL_ACCUM_RED_BITS: 1909 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits); 1910 break; 1911 case GL_ACCUM_GREEN_BITS: 1912 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits); 1913 break; 1914 case GL_ACCUM_BLUE_BITS: 1915 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits); 1916 break; 1917 case GL_ACCUM_ALPHA_BITS: 1918 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits); 1919 break; 1920 case GL_ACCUM_CLEAR_VALUE: 1921 params[0] = ctx->Accum.ClearColor[0]; 1922 params[1] = ctx->Accum.ClearColor[1]; 1923 params[2] = ctx->Accum.ClearColor[2]; 1924 params[3] = ctx->Accum.ClearColor[3]; 1925 break; 1926 case GL_ALPHA_BIAS: 1927 params[0] = ctx->Pixel.AlphaBias; 1928 break; 1929 case GL_ALPHA_BITS: 1930 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits); 1931 break; 1932 case GL_ALPHA_SCALE: 1933 params[0] = ctx->Pixel.AlphaScale; 1934 break; 1935 case GL_ALPHA_TEST: 1936 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled); 1937 break; 1938 case GL_ALPHA_TEST_FUNC: 1939 params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc); 1940 break; 1941 case GL_ALPHA_TEST_REF: 1942 params[0] = ctx->Color.AlphaRef; 1943 break; 1944 case GL_ATTRIB_STACK_DEPTH: 1945 params[0] = (GLfloat)(ctx->AttribStackDepth); 1946 break; 1947 case GL_AUTO_NORMAL: 1948 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal); 1949 break; 1950 case GL_AUX_BUFFERS: 1951 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers); 1952 break; 1953 case GL_BLEND: 1954 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.BlendEnabled); 1955 break; 1956 case GL_BLEND_DST: 1957 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB); 1958 break; 1959 case GL_BLEND_SRC: 1960 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB); 1961 break; 1962 case GL_BLEND_SRC_RGB_EXT: 1963 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB); 1964 break; 1965 case GL_BLEND_DST_RGB_EXT: 1966 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB); 1967 break; 1968 case GL_BLEND_SRC_ALPHA_EXT: 1969 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA); 1970 break; 1971 case GL_BLEND_DST_ALPHA_EXT: 1972 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA); 1973 break; 1974 case GL_BLEND_EQUATION: 1975 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB ); 1976 break; 1977 case GL_BLEND_EQUATION_ALPHA_EXT: 1978 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA ); 1979 break; 1980 case GL_BLEND_COLOR_EXT: 1981 params[0] = ctx->Color.BlendColor[0]; 1982 params[1] = ctx->Color.BlendColor[1]; 1983 params[2] = ctx->Color.BlendColor[2]; 1984 params[3] = ctx->Color.BlendColor[3]; 1985 break; 1986 case GL_BLUE_BIAS: 1987 params[0] = ctx->Pixel.BlueBias; 1988 break; 1989 case GL_BLUE_BITS: 1990 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits); 1991 break; 1992 case GL_BLUE_SCALE: 1993 params[0] = ctx->Pixel.BlueScale; 1994 break; 1995 case GL_CLIENT_ATTRIB_STACK_DEPTH: 1996 params[0] = (GLfloat)(ctx->ClientAttribStackDepth); 1997 break; 1998 case GL_CLIP_PLANE0: 1999 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1); 2000 break; 2001 case GL_CLIP_PLANE1: 2002 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1); 2003 break; 2004 case GL_CLIP_PLANE2: 2005 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1); 2006 break; 2007 case GL_CLIP_PLANE3: 2008 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1); 2009 break; 2010 case GL_CLIP_PLANE4: 2011 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1); 2012 break; 2013 case GL_CLIP_PLANE5: 2014 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1); 2015 break; 2016 case GL_COLOR_CLEAR_VALUE: 2017 params[0] = ctx->Color.ClearColor[0]; 2018 params[1] = ctx->Color.ClearColor[1]; 2019 params[2] = ctx->Color.ClearColor[2]; 2020 params[3] = ctx->Color.ClearColor[3]; 2021 break; 2022 case GL_COLOR_MATERIAL: 2023 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled); 2024 break; 2025 case GL_COLOR_MATERIAL_FACE: 2026 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace); 2027 break; 2028 case GL_COLOR_MATERIAL_PARAMETER: 2029 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode); 2030 break; 2031 case GL_COLOR_WRITEMASK: 2032 params[0] = (GLfloat)(ctx->Color.ColorMask[RCOMP] ? 1 : 0); 2033 params[1] = (GLfloat)(ctx->Color.ColorMask[GCOMP] ? 1 : 0); 2034 params[2] = (GLfloat)(ctx->Color.ColorMask[BCOMP] ? 1 : 0); 2035 params[3] = (GLfloat)(ctx->Color.ColorMask[ACOMP] ? 1 : 0); 2036 break; 2037 case GL_CULL_FACE: 2038 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag); 2039 break; 2040 case GL_CULL_FACE_MODE: 2041 params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode); 2042 break; 2043 case GL_CURRENT_COLOR: 2044 { 2045 FLUSH_CURRENT(ctx, 0); 2046 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]; 2047 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; 2048 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; 2049 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]; 2050 } 2051 break; 2052 case GL_CURRENT_INDEX: 2053 { 2054 FLUSH_CURRENT(ctx, 0); 2055 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]; 2056 } 2057 break; 2058 case GL_CURRENT_NORMAL: 2059 { 2060 FLUSH_CURRENT(ctx, 0); 2061 params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]; 2062 params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]; 2063 params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]; 2064 } 2065 break; 2066 case GL_CURRENT_RASTER_COLOR: 2067 params[0] = ctx->Current.RasterColor[0]; 2068 params[1] = ctx->Current.RasterColor[1]; 2069 params[2] = ctx->Current.RasterColor[2]; 2070 params[3] = ctx->Current.RasterColor[3]; 2071 break; 2072 case GL_CURRENT_RASTER_DISTANCE: 2073 params[0] = ctx->Current.RasterDistance; 2074 break; 2075 case GL_CURRENT_RASTER_INDEX: 2076 params[0] = ctx->Current.RasterIndex; 2077 break; 2078 case GL_CURRENT_RASTER_POSITION: 2079 params[0] = ctx->Current.RasterPos[0]; 2080 params[1] = ctx->Current.RasterPos[1]; 2081 params[2] = ctx->Current.RasterPos[2]; 2082 params[3] = ctx->Current.RasterPos[3]; 2083 break; 2084 case GL_CURRENT_RASTER_SECONDARY_COLOR: 2085 params[0] = ctx->Current.RasterSecondaryColor[0]; 2086 params[1] = ctx->Current.RasterSecondaryColor[1]; 2087 params[2] = ctx->Current.RasterSecondaryColor[2]; 2088 params[3] = ctx->Current.RasterSecondaryColor[3]; 2089 break; 2090 case GL_CURRENT_RASTER_TEXTURE_COORDS: 2091 { 2092 const GLuint texUnit = ctx->Texture.CurrentUnit; 2093 params[0] = ctx->Current.RasterTexCoords[texUnit][0]; 2094 params[1] = ctx->Current.RasterTexCoords[texUnit][1]; 2095 params[2] = ctx->Current.RasterTexCoords[texUnit][2]; 2096 params[3] = ctx->Current.RasterTexCoords[texUnit][3]; 2097 } 2098 break; 2099 case GL_CURRENT_RASTER_POSITION_VALID: 2100 params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid); 2101 break; 2102 case GL_CURRENT_TEXTURE_COORDS: 2103 { 2104 const GLuint texUnit = ctx->Texture.CurrentUnit; 2105 params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]; 2106 params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]; 2107 params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]; 2108 params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]; 2109 } 2110 break; 2111 case GL_DEPTH_BIAS: 2112 params[0] = ctx->Pixel.DepthBias; 2113 break; 2114 case GL_DEPTH_BITS: 2115 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits); 2116 break; 2117 case GL_DEPTH_CLEAR_VALUE: 2118 params[0] = ((GLfloat) ctx->Depth.Clear); 2119 break; 2120 case GL_DEPTH_FUNC: 2121 params[0] = ENUM_TO_FLOAT(ctx->Depth.Func); 2122 break; 2123 case GL_DEPTH_RANGE: 2124 params[0] = ctx->Viewport.Near; 2125 params[1] = ctx->Viewport.Far; 2126 break; 2127 case GL_DEPTH_SCALE: 2128 params[0] = ctx->Pixel.DepthScale; 2129 break; 2130 case GL_DEPTH_TEST: 2131 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test); 2132 break; 2133 case GL_DEPTH_WRITEMASK: 2134 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask); 2135 break; 2136 case GL_DITHER: 2137 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag); 2138 break; 2139 case GL_DOUBLEBUFFER: 2140 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode); 2141 break; 2142 case GL_DRAW_BUFFER: 2143 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]); 2144 break; 2145 case GL_EDGE_FLAG: 2146 { 2147 FLUSH_CURRENT(ctx, 0); 2148 params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0)); 2149 } 2150 break; 2151 case GL_FEEDBACK_BUFFER_SIZE: 2152 params[0] = (GLfloat)(ctx->Feedback.BufferSize); 2153 break; 2154 case GL_FEEDBACK_BUFFER_TYPE: 2155 params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type); 2156 break; 2157 case GL_FOG: 2158 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled); 2159 break; 2160 case GL_FOG_COLOR: 2161 params[0] = ctx->Fog.Color[0]; 2162 params[1] = ctx->Fog.Color[1]; 2163 params[2] = ctx->Fog.Color[2]; 2164 params[3] = ctx->Fog.Color[3]; 2165 break; 2166 case GL_FOG_DENSITY: 2167 params[0] = ctx->Fog.Density; 2168 break; 2169 case GL_FOG_END: 2170 params[0] = ctx->Fog.End; 2171 break; 2172 case GL_FOG_HINT: 2173 params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog); 2174 break; 2175 case GL_FOG_INDEX: 2176 params[0] = ctx->Fog.Index; 2177 break; 2178 case GL_FOG_MODE: 2179 params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode); 2180 break; 2181 case GL_FOG_START: 2182 params[0] = ctx->Fog.Start; 2183 break; 2184 case GL_FRONT_FACE: 2185 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace); 2186 break; 2187 case GL_GREEN_BIAS: 2188 params[0] = ctx->Pixel.GreenBias; 2189 break; 2190 case GL_GREEN_BITS: 2191 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits); 2192 break; 2193 case GL_GREEN_SCALE: 2194 params[0] = ctx->Pixel.GreenScale; 2195 break; 2196 case GL_INDEX_BITS: 2197 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits); 2198 break; 2199 case GL_INDEX_CLEAR_VALUE: 2200 params[0] = (GLfloat)(ctx->Color.ClearIndex); 2201 break; 2202 case GL_INDEX_MODE: 2203 params[0] = BOOLEAN_TO_FLOAT(!ctx->DrawBuffer->Visual.rgbMode); 2204 break; 2205 case GL_INDEX_OFFSET: 2206 params[0] = (GLfloat)(ctx->Pixel.IndexOffset); 2207 break; 2208 case GL_INDEX_SHIFT: 2209 params[0] = (GLfloat)(ctx->Pixel.IndexShift); 2210 break; 2211 case GL_INDEX_WRITEMASK: 2212 params[0] = (GLfloat)(ctx->Color.IndexMask); 2213 break; 2214 case GL_LIGHT0: 2215 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled); 2216 break; 2217 case GL_LIGHT1: 2218 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled); 2219 break; 2220 case GL_LIGHT2: 2221 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled); 2222 break; 2223 case GL_LIGHT3: 2224 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled); 2225 break; 2226 case GL_LIGHT4: 2227 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled); 2228 break; 2229 case GL_LIGHT5: 2230 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled); 2231 break; 2232 case GL_LIGHT6: 2233 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled); 2234 break; 2235 case GL_LIGHT7: 2236 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled); 2237 break; 2238 case GL_LIGHTING: 2239 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled); 2240 break; 2241 case GL_LIGHT_MODEL_AMBIENT: 2242 params[0] = ctx->Light.Model.Ambient[0]; 2243 params[1] = ctx->Light.Model.Ambient[1]; 2244 params[2] = ctx->Light.Model.Ambient[2]; 2245 params[3] = ctx->Light.Model.Ambient[3]; 2246 break; 2247 case GL_LIGHT_MODEL_COLOR_CONTROL: 2248 params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl); 2249 break; 2250 case GL_LIGHT_MODEL_LOCAL_VIEWER: 2251 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer); 2252 break; 2253 case GL_LIGHT_MODEL_TWO_SIDE: 2254 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide); 2255 break; 2256 case GL_LINE_SMOOTH: 2257 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag); 2258 break; 2259 case GL_LINE_SMOOTH_HINT: 2260 params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth); 2261 break; 2262 case GL_LINE_STIPPLE: 2263 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag); 2264 break; 2265 case GL_LINE_STIPPLE_PATTERN: 2266 params[0] = (GLfloat)(ctx->Line.StipplePattern); 2267 break; 2268 case GL_LINE_STIPPLE_REPEAT: 2269 params[0] = (GLfloat)(ctx->Line.StippleFactor); 2270 break; 2271 case GL_LINE_WIDTH: 2272 params[0] = ctx->Line.Width; 2273 break; 2274 case GL_LINE_WIDTH_GRANULARITY: 2275 params[0] = ctx->Const.LineWidthGranularity; 2276 break; 2277 case GL_LINE_WIDTH_RANGE: 2278 params[0] = ctx->Const.MinLineWidthAA; 2279 params[1] = ctx->Const.MaxLineWidthAA; 2280 break; 2281 case GL_ALIASED_LINE_WIDTH_RANGE: 2282 params[0] = ctx->Const.MinLineWidth; 2283 params[1] = ctx->Const.MaxLineWidth; 2284 break; 2285 case GL_LIST_BASE: 2286 params[0] = (GLfloat)(ctx->List.ListBase); 2287 break; 2288 case GL_LIST_INDEX: 2289 params[0] = (GLfloat)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0)); 2290 break; 2291 case GL_LIST_MODE: 2292 { 2293 GLenum mode; 2294 if (!ctx->CompileFlag) 2295 mode = 0; 2296 else if (ctx->ExecuteFlag) 2297 mode = GL_COMPILE_AND_EXECUTE; 2298 else 2299 mode = GL_COMPILE; 2300 params[0] = ENUM_TO_FLOAT(mode); 2301 } 2302 break; 2303 case GL_INDEX_LOGIC_OP: 2304 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled); 2305 break; 2306 case GL_COLOR_LOGIC_OP: 2307 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled); 2308 break; 2309 case GL_LOGIC_OP_MODE: 2310 params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp); 2311 break; 2312 case GL_MAP1_COLOR_4: 2313 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4); 2314 break; 2315 case GL_MAP1_GRID_DOMAIN: 2316 params[0] = ctx->Eval.MapGrid1u1; 2317 params[1] = ctx->Eval.MapGrid1u2; 2318 break; 2319 case GL_MAP1_GRID_SEGMENTS: 2320 params[0] = (GLfloat)(ctx->Eval.MapGrid1un); 2321 break; 2322 case GL_MAP1_INDEX: 2323 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index); 2324 break; 2325 case GL_MAP1_NORMAL: 2326 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal); 2327 break; 2328 case GL_MAP1_TEXTURE_COORD_1: 2329 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1); 2330 break; 2331 case GL_MAP1_TEXTURE_COORD_2: 2332 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2); 2333 break; 2334 case GL_MAP1_TEXTURE_COORD_3: 2335 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3); 2336 break; 2337 case GL_MAP1_TEXTURE_COORD_4: 2338 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4); 2339 break; 2340 case GL_MAP1_VERTEX_3: 2341 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3); 2342 break; 2343 case GL_MAP1_VERTEX_4: 2344 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4); 2345 break; 2346 case GL_MAP2_COLOR_4: 2347 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4); 2348 break; 2349 case GL_MAP2_GRID_DOMAIN: 2350 params[0] = ctx->Eval.MapGrid2u1; 2351 params[1] = ctx->Eval.MapGrid2u2; 2352 params[2] = ctx->Eval.MapGrid2v1; 2353 params[3] = ctx->Eval.MapGrid2v2; 2354 break; 2355 case GL_MAP2_GRID_SEGMENTS: 2356 params[0] = (GLfloat)(ctx->Eval.MapGrid2un); 2357 params[1] = (GLfloat)(ctx->Eval.MapGrid2vn); 2358 break; 2359 case GL_MAP2_INDEX: 2360 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index); 2361 break; 2362 case GL_MAP2_NORMAL: 2363 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal); 2364 break; 2365 case GL_MAP2_TEXTURE_COORD_1: 2366 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1); 2367 break; 2368 case GL_MAP2_TEXTURE_COORD_2: 2369 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2); 2370 break; 2371 case GL_MAP2_TEXTURE_COORD_3: 2372 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3); 2373 break; 2374 case GL_MAP2_TEXTURE_COORD_4: 2375 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4); 2376 break; 2377 case GL_MAP2_VERTEX_3: 2378 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3); 2379 break; 2380 case GL_MAP2_VERTEX_4: 2381 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4); 2382 break; 2383 case GL_MAP_COLOR: 2384 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag); 2385 break; 2386 case GL_MAP_STENCIL: 2387 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag); 2388 break; 2389 case GL_MATRIX_MODE: 2390 params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode); 2391 break; 2392 case GL_MAX_ATTRIB_STACK_DEPTH: 2393 params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH); 2394 break; 2395 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: 2396 params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH); 2397 break; 2398 case GL_MAX_CLIP_PLANES: 2399 params[0] = (GLfloat)(ctx->Const.MaxClipPlanes); 2400 break; 2401 case GL_MAX_ELEMENTS_VERTICES: 2402 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize); 2403 break; 2404 case GL_MAX_ELEMENTS_INDICES: 2405 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize); 2406 break; 2407 case GL_MAX_EVAL_ORDER: 2408 params[0] = (GLfloat)(MAX_EVAL_ORDER); 2409 break; 2410 case GL_MAX_LIGHTS: 2411 params[0] = (GLfloat)(ctx->Const.MaxLights); 2412 break; 2413 case GL_MAX_LIST_NESTING: 2414 params[0] = (GLfloat)(MAX_LIST_NESTING); 2415 break; 2416 case GL_MAX_MODELVIEW_STACK_DEPTH: 2417 params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH); 2418 break; 2419 case GL_MAX_NAME_STACK_DEPTH: 2420 params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH); 2421 break; 2422 case GL_MAX_PIXEL_MAP_TABLE: 2423 params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE); 2424 break; 2425 case GL_MAX_PROJECTION_STACK_DEPTH: 2426 params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH); 2427 break; 2428 case GL_MAX_TEXTURE_SIZE: 2429 params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1)); 2430 break; 2431 case GL_MAX_3D_TEXTURE_SIZE: 2432 params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1)); 2433 break; 2434 case GL_MAX_TEXTURE_STACK_DEPTH: 2435 params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH); 2436 break; 2437 case GL_MAX_VIEWPORT_DIMS: 2438 params[0] = (GLfloat)(ctx->Const.MaxViewportWidth); 2439 params[1] = (GLfloat)(ctx->Const.MaxViewportHeight); 2440 break; 2441 case GL_MODELVIEW_MATRIX: 2442 { 2443 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 2444 params[0] = matrix[0]; 2445 params[1] = matrix[1]; 2446 params[2] = matrix[2]; 2447 params[3] = matrix[3]; 2448 params[4] = matrix[4]; 2449 params[5] = matrix[5]; 2450 params[6] = matrix[6]; 2451 params[7] = matrix[7]; 2452 params[8] = matrix[8]; 2453 params[9] = matrix[9]; 2454 params[10] = matrix[10]; 2455 params[11] = matrix[11]; 2456 params[12] = matrix[12]; 2457 params[13] = matrix[13]; 2458 params[14] = matrix[14]; 2459 params[15] = matrix[15]; 2460 } 2461 break; 2462 case GL_MODELVIEW_STACK_DEPTH: 2463 params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1); 2464 break; 2465 case GL_NAME_STACK_DEPTH: 2466 params[0] = (GLfloat)(ctx->Select.NameStackDepth); 2467 break; 2468 case GL_NORMALIZE: 2469 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize); 2470 break; 2471 case GL_PACK_ALIGNMENT: 2472 params[0] = (GLfloat)(ctx->Pack.Alignment); 2473 break; 2474 case GL_PACK_LSB_FIRST: 2475 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst); 2476 break; 2477 case GL_PACK_ROW_LENGTH: 2478 params[0] = (GLfloat)(ctx->Pack.RowLength); 2479 break; 2480 case GL_PACK_SKIP_PIXELS: 2481 params[0] = (GLfloat)(ctx->Pack.SkipPixels); 2482 break; 2483 case GL_PACK_SKIP_ROWS: 2484 params[0] = (GLfloat)(ctx->Pack.SkipRows); 2485 break; 2486 case GL_PACK_SWAP_BYTES: 2487 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes); 2488 break; 2489 case GL_PACK_SKIP_IMAGES_EXT: 2490 params[0] = (GLfloat)(ctx->Pack.SkipImages); 2491 break; 2492 case GL_PACK_IMAGE_HEIGHT_EXT: 2493 params[0] = (GLfloat)(ctx->Pack.ImageHeight); 2494 break; 2495 case GL_PACK_INVERT_MESA: 2496 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert); 2497 break; 2498 case GL_PERSPECTIVE_CORRECTION_HINT: 2499 params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection); 2500 break; 2501 case GL_PIXEL_MAP_A_TO_A_SIZE: 2502 params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size); 2503 break; 2504 case GL_PIXEL_MAP_B_TO_B_SIZE: 2505 params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size); 2506 break; 2507 case GL_PIXEL_MAP_G_TO_G_SIZE: 2508 params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size); 2509 break; 2510 case GL_PIXEL_MAP_I_TO_A_SIZE: 2511 params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size); 2512 break; 2513 case GL_PIXEL_MAP_I_TO_B_SIZE: 2514 params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size); 2515 break; 2516 case GL_PIXEL_MAP_I_TO_G_SIZE: 2517 params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size); 2518 break; 2519 case GL_PIXEL_MAP_I_TO_I_SIZE: 2520 params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size); 2521 break; 2522 case GL_PIXEL_MAP_I_TO_R_SIZE: 2523 params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size); 2524 break; 2525 case GL_PIXEL_MAP_R_TO_R_SIZE: 2526 params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size); 2527 break; 2528 case GL_PIXEL_MAP_S_TO_S_SIZE: 2529 params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size); 2530 break; 2531 case GL_POINT_SIZE: 2532 params[0] = ctx->Point.Size; 2533 break; 2534 case GL_POINT_SIZE_GRANULARITY: 2535 params[0] = ctx->Const.PointSizeGranularity; 2536 break; 2537 case GL_POINT_SIZE_RANGE: 2538 params[0] = ctx->Const.MinPointSizeAA; 2539 params[1] = ctx->Const.MaxPointSizeAA; 2540 break; 2541 case GL_ALIASED_POINT_SIZE_RANGE: 2542 params[0] = ctx->Const.MinPointSize; 2543 params[1] = ctx->Const.MaxPointSize; 2544 break; 2545 case GL_POINT_SMOOTH: 2546 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag); 2547 break; 2548 case GL_POINT_SMOOTH_HINT: 2549 params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth); 2550 break; 2551 case GL_POINT_SIZE_MIN_EXT: 2552 params[0] = ctx->Point.MinSize; 2553 break; 2554 case GL_POINT_SIZE_MAX_EXT: 2555 params[0] = ctx->Point.MaxSize; 2556 break; 2557 case GL_POINT_FADE_THRESHOLD_SIZE_EXT: 2558 params[0] = ctx->Point.Threshold; 2559 break; 2560 case GL_DISTANCE_ATTENUATION_EXT: 2561 params[0] = ctx->Point.Params[0]; 2562 params[1] = ctx->Point.Params[1]; 2563 params[2] = ctx->Point.Params[2]; 2564 break; 2565 case GL_POLYGON_MODE: 2566 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode); 2567 params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode); 2568 break; 2569 case GL_POLYGON_OFFSET_BIAS_EXT: 2570 params[0] = ctx->Polygon.OffsetUnits; 2571 break; 2572 case GL_POLYGON_OFFSET_FACTOR: 2573 params[0] = ctx->Polygon.OffsetFactor ; 2574 break; 2575 case GL_POLYGON_OFFSET_UNITS: 2576 params[0] = ctx->Polygon.OffsetUnits ; 2577 break; 2578 case GL_POLYGON_OFFSET_POINT: 2579 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint); 2580 break; 2581 case GL_POLYGON_OFFSET_LINE: 2582 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine); 2583 break; 2584 case GL_POLYGON_OFFSET_FILL: 2585 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill); 2586 break; 2587 case GL_POLYGON_SMOOTH: 2588 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag); 2589 break; 2590 case GL_POLYGON_SMOOTH_HINT: 2591 params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth); 2592 break; 2593 case GL_POLYGON_STIPPLE: 2594 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag); 2595 break; 2596 case GL_PROJECTION_MATRIX: 2597 { 2598 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 2599 params[0] = matrix[0]; 2600 params[1] = matrix[1]; 2601 params[2] = matrix[2]; 2602 params[3] = matrix[3]; 2603 params[4] = matrix[4]; 2604 params[5] = matrix[5]; 2605 params[6] = matrix[6]; 2606 params[7] = matrix[7]; 2607 params[8] = matrix[8]; 2608 params[9] = matrix[9]; 2609 params[10] = matrix[10]; 2610 params[11] = matrix[11]; 2611 params[12] = matrix[12]; 2612 params[13] = matrix[13]; 2613 params[14] = matrix[14]; 2614 params[15] = matrix[15]; 2615 } 2616 break; 2617 case GL_PROJECTION_STACK_DEPTH: 2618 params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1); 2619 break; 2620 case GL_READ_BUFFER: 2621 params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer); 2622 break; 2623 case GL_RED_BIAS: 2624 params[0] = ctx->Pixel.RedBias; 2625 break; 2626 case GL_RED_BITS: 2627 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits); 2628 break; 2629 case GL_RED_SCALE: 2630 params[0] = ctx->Pixel.RedScale; 2631 break; 2632 case GL_RENDER_MODE: 2633 params[0] = ENUM_TO_FLOAT(ctx->RenderMode); 2634 break; 2635 case GL_RESCALE_NORMAL: 2636 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals); 2637 break; 2638 case GL_RGBA_MODE: 2639 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.rgbMode); 2640 break; 2641 case GL_SCISSOR_BOX: 2642 params[0] = (GLfloat)(ctx->Scissor.X); 2643 params[1] = (GLfloat)(ctx->Scissor.Y); 2644 params[2] = (GLfloat)(ctx->Scissor.Width); 2645 params[3] = (GLfloat)(ctx->Scissor.Height); 2646 break; 2647 case GL_SCISSOR_TEST: 2648 params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled); 2649 break; 2650 case GL_SELECTION_BUFFER_SIZE: 2651 params[0] = (GLfloat)(ctx->Select.BufferSize); 2652 break; 2653 case GL_SHADE_MODEL: 2654 params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel); 2655 break; 2656 case GL_SHARED_TEXTURE_PALETTE_EXT: 2657 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette); 2658 break; 2659 case GL_STENCIL_BITS: 2660 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits); 2661 break; 2662 case GL_STENCIL_CLEAR_VALUE: 2663 params[0] = (GLfloat)(ctx->Stencil.Clear); 2664 break; 2665 case GL_STENCIL_FAIL: 2666 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); 2667 break; 2668 case GL_STENCIL_FUNC: 2669 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); 2670 break; 2671 case GL_STENCIL_PASS_DEPTH_FAIL: 2672 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); 2673 break; 2674 case GL_STENCIL_PASS_DEPTH_PASS: 2675 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); 2676 break; 2677 case GL_STENCIL_REF: 2678 params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]); 2679 break; 2680 case GL_STENCIL_TEST: 2681 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled); 2682 break; 2683 case GL_STENCIL_VALUE_MASK: 2684 params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]); 2685 break; 2686 case GL_STENCIL_WRITEMASK: 2687 params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]); 2688 break; 2689 case GL_STEREO: 2690 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode); 2691 break; 2692 case GL_SUBPIXEL_BITS: 2693 params[0] = (GLfloat)(ctx->Const.SubPixelBits); 2694 break; 2695 case GL_TEXTURE_1D: 2696 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D)); 2697 break; 2698 case GL_TEXTURE_2D: 2699 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D)); 2700 break; 2701 case GL_TEXTURE_3D: 2702 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D)); 2703 break; 2704 case GL_TEXTURE_1D_ARRAY_EXT: 2705 CHECK_EXT1(MESA_texture_array, "GetFloatv"); 2706 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)); 2707 break; 2708 case GL_TEXTURE_2D_ARRAY_EXT: 2709 CHECK_EXT1(MESA_texture_array, "GetFloatv"); 2710 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)); 2711 break; 2712 case GL_TEXTURE_BINDING_1D: 2713 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name); 2714 break; 2715 case GL_TEXTURE_BINDING_2D: 2716 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name); 2717 break; 2718 case GL_TEXTURE_BINDING_3D: 2719 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name); 2720 break; 2721 case GL_TEXTURE_BINDING_1D_ARRAY_EXT: 2722 CHECK_EXT1(MESA_texture_array, "GetFloatv"); 2723 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name); 2724 break; 2725 case GL_TEXTURE_BINDING_2D_ARRAY_EXT: 2726 CHECK_EXT1(MESA_texture_array, "GetFloatv"); 2727 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name); 2728 break; 2729 case GL_TEXTURE_GEN_S: 2730 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)); 2731 break; 2732 case GL_TEXTURE_GEN_T: 2733 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0)); 2734 break; 2735 case GL_TEXTURE_GEN_R: 2736 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0)); 2737 break; 2738 case GL_TEXTURE_GEN_Q: 2739 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0)); 2740 break; 2741 case GL_TEXTURE_MATRIX: 2742 { 2743 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 2744 params[0] = matrix[0]; 2745 params[1] = matrix[1]; 2746 params[2] = matrix[2]; 2747 params[3] = matrix[3]; 2748 params[4] = matrix[4]; 2749 params[5] = matrix[5]; 2750 params[6] = matrix[6]; 2751 params[7] = matrix[7]; 2752 params[8] = matrix[8]; 2753 params[9] = matrix[9]; 2754 params[10] = matrix[10]; 2755 params[11] = matrix[11]; 2756 params[12] = matrix[12]; 2757 params[13] = matrix[13]; 2758 params[14] = matrix[14]; 2759 params[15] = matrix[15]; 2760 } 2761 break; 2762 case GL_TEXTURE_STACK_DEPTH: 2763 params[0] = (GLfloat)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1); 2764 break; 2765 case GL_UNPACK_ALIGNMENT: 2766 params[0] = (GLfloat)(ctx->Unpack.Alignment); 2767 break; 2768 case GL_UNPACK_LSB_FIRST: 2769 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst); 2770 break; 2771 case GL_UNPACK_ROW_LENGTH: 2772 params[0] = (GLfloat)(ctx->Unpack.RowLength); 2773 break; 2774 case GL_UNPACK_SKIP_PIXELS: 2775 params[0] = (GLfloat)(ctx->Unpack.SkipPixels); 2776 break; 2777 case GL_UNPACK_SKIP_ROWS: 2778 params[0] = (GLfloat)(ctx->Unpack.SkipRows); 2779 break; 2780 case GL_UNPACK_SWAP_BYTES: 2781 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes); 2782 break; 2783 case GL_UNPACK_SKIP_IMAGES_EXT: 2784 params[0] = (GLfloat)(ctx->Unpack.SkipImages); 2785 break; 2786 case GL_UNPACK_IMAGE_HEIGHT_EXT: 2787 params[0] = (GLfloat)(ctx->Unpack.ImageHeight); 2788 break; 2789 case GL_UNPACK_CLIENT_STORAGE_APPLE: 2790 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage); 2791 break; 2792 case GL_VIEWPORT: 2793 params[0] = (GLfloat)(ctx->Viewport.X); 2794 params[1] = (GLfloat)(ctx->Viewport.Y); 2795 params[2] = (GLfloat)(ctx->Viewport.Width); 2796 params[3] = (GLfloat)(ctx->Viewport.Height); 2797 break; 2798 case GL_ZOOM_X: 2799 params[0] = ctx->Pixel.ZoomX; 2800 break; 2801 case GL_ZOOM_Y: 2802 params[0] = ctx->Pixel.ZoomY; 2803 break; 2804 case GL_VERTEX_ARRAY: 2805 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled); 2806 break; 2807 case GL_VERTEX_ARRAY_SIZE: 2808 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size); 2809 break; 2810 case GL_VERTEX_ARRAY_TYPE: 2811 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type); 2812 break; 2813 case GL_VERTEX_ARRAY_STRIDE: 2814 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride); 2815 break; 2816 case GL_VERTEX_ARRAY_COUNT_EXT: 2817 params[0] = (GLfloat)(0); 2818 break; 2819 case GL_NORMAL_ARRAY: 2820 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled); 2821 break; 2822 case GL_NORMAL_ARRAY_TYPE: 2823 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type); 2824 break; 2825 case GL_NORMAL_ARRAY_STRIDE: 2826 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride); 2827 break; 2828 case GL_NORMAL_ARRAY_COUNT_EXT: 2829 params[0] = (GLfloat)(0); 2830 break; 2831 case GL_COLOR_ARRAY: 2832 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled); 2833 break; 2834 case GL_COLOR_ARRAY_SIZE: 2835 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size); 2836 break; 2837 case GL_COLOR_ARRAY_TYPE: 2838 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type); 2839 break; 2840 case GL_COLOR_ARRAY_STRIDE: 2841 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride); 2842 break; 2843 case GL_COLOR_ARRAY_COUNT_EXT: 2844 params[0] = (GLfloat)(0); 2845 break; 2846 case GL_INDEX_ARRAY: 2847 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled); 2848 break; 2849 case GL_INDEX_ARRAY_TYPE: 2850 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type); 2851 break; 2852 case GL_INDEX_ARRAY_STRIDE: 2853 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride); 2854 break; 2855 case GL_INDEX_ARRAY_COUNT_EXT: 2856 params[0] = (GLfloat)(0); 2857 break; 2858 case GL_TEXTURE_COORD_ARRAY: 2859 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled); 2860 break; 2861 case GL_TEXTURE_COORD_ARRAY_SIZE: 2862 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size); 2863 break; 2864 case GL_TEXTURE_COORD_ARRAY_TYPE: 2865 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type); 2866 break; 2867 case GL_TEXTURE_COORD_ARRAY_STRIDE: 2868 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride); 2869 break; 2870 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: 2871 params[0] = (GLfloat)(0); 2872 break; 2873 case GL_EDGE_FLAG_ARRAY: 2874 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled); 2875 break; 2876 case GL_EDGE_FLAG_ARRAY_STRIDE: 2877 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride); 2878 break; 2879 case GL_EDGE_FLAG_ARRAY_COUNT_EXT: 2880 params[0] = (GLfloat)(0); 2881 break; 2882 case GL_MAX_TEXTURE_UNITS_ARB: 2883 CHECK_EXT1(ARB_multitexture, "GetFloatv"); 2884 params[0] = (GLfloat)(ctx->Const.MaxTextureUnits); 2885 break; 2886 case GL_ACTIVE_TEXTURE_ARB: 2887 CHECK_EXT1(ARB_multitexture, "GetFloatv"); 2888 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit); 2889 break; 2890 case GL_CLIENT_ACTIVE_TEXTURE_ARB: 2891 CHECK_EXT1(ARB_multitexture, "GetFloatv"); 2892 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture); 2893 break; 2894 case GL_TEXTURE_CUBE_MAP_ARB: 2895 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv"); 2896 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)); 2897 break; 2898 case GL_TEXTURE_BINDING_CUBE_MAP_ARB: 2899 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv"); 2900 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name); 2901 break; 2902 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 2903 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv"); 2904 params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1))); 2905 break; 2906 case GL_TEXTURE_COMPRESSION_HINT_ARB: 2907 params[0] = (GLfloat)(ctx->Hint.TextureCompression); 2908 break; 2909 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: 2910 params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)); 2911 break; 2912 case GL_COMPRESSED_TEXTURE_FORMATS_ARB: 2913 { 2914 GLint formats[100]; 2915 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE); 2916 ASSERT(n <= 100); 2917 for (i = 0; i < n; i++) 2918 params[i] = ENUM_TO_FLOAT(formats[i]); 2919 } 2920 break; 2921 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: 2922 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv"); 2923 params[0] = (GLfloat)(ctx->Array.LockFirst); 2924 break; 2925 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: 2926 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv"); 2927 params[0] = (GLfloat)(ctx->Array.LockCount); 2928 break; 2929 case GL_TRANSPOSE_COLOR_MATRIX_ARB: 2930 { 2931 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 2932 params[0] = matrix[0]; 2933 params[1] = matrix[4]; 2934 params[2] = matrix[8]; 2935 params[3] = matrix[12]; 2936 params[4] = matrix[1]; 2937 params[5] = matrix[5]; 2938 params[6] = matrix[9]; 2939 params[7] = matrix[13]; 2940 params[8] = matrix[2]; 2941 params[9] = matrix[6]; 2942 params[10] = matrix[10]; 2943 params[11] = matrix[14]; 2944 params[12] = matrix[3]; 2945 params[13] = matrix[7]; 2946 params[14] = matrix[11]; 2947 params[15] = matrix[15]; 2948 } 2949 break; 2950 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: 2951 { 2952 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 2953 params[0] = matrix[0]; 2954 params[1] = matrix[4]; 2955 params[2] = matrix[8]; 2956 params[3] = matrix[12]; 2957 params[4] = matrix[1]; 2958 params[5] = matrix[5]; 2959 params[6] = matrix[9]; 2960 params[7] = matrix[13]; 2961 params[8] = matrix[2]; 2962 params[9] = matrix[6]; 2963 params[10] = matrix[10]; 2964 params[11] = matrix[14]; 2965 params[12] = matrix[3]; 2966 params[13] = matrix[7]; 2967 params[14] = matrix[11]; 2968 params[15] = matrix[15]; 2969 } 2970 break; 2971 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: 2972 { 2973 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 2974 params[0] = matrix[0]; 2975 params[1] = matrix[4]; 2976 params[2] = matrix[8]; 2977 params[3] = matrix[12]; 2978 params[4] = matrix[1]; 2979 params[5] = matrix[5]; 2980 params[6] = matrix[9]; 2981 params[7] = matrix[13]; 2982 params[8] = matrix[2]; 2983 params[9] = matrix[6]; 2984 params[10] = matrix[10]; 2985 params[11] = matrix[14]; 2986 params[12] = matrix[3]; 2987 params[13] = matrix[7]; 2988 params[14] = matrix[11]; 2989 params[15] = matrix[15]; 2990 } 2991 break; 2992 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: 2993 { 2994 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 2995 params[0] = matrix[0]; 2996 params[1] = matrix[4]; 2997 params[2] = matrix[8]; 2998 params[3] = matrix[12]; 2999 params[4] = matrix[1]; 3000 params[5] = matrix[5]; 3001 params[6] = matrix[9]; 3002 params[7] = matrix[13]; 3003 params[8] = matrix[2]; 3004 params[9] = matrix[6]; 3005 params[10] = matrix[10]; 3006 params[11] = matrix[14]; 3007 params[12] = matrix[3]; 3008 params[13] = matrix[7]; 3009 params[14] = matrix[11]; 3010 params[15] = matrix[15]; 3011 } 3012 break; 3013 case GL_COLOR_MATRIX_SGI: 3014 { 3015 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 3016 params[0] = matrix[0]; 3017 params[1] = matrix[1]; 3018 params[2] = matrix[2]; 3019 params[3] = matrix[3]; 3020 params[4] = matrix[4]; 3021 params[5] = matrix[5]; 3022 params[6] = matrix[6]; 3023 params[7] = matrix[7]; 3024 params[8] = matrix[8]; 3025 params[9] = matrix[9]; 3026 params[10] = matrix[10]; 3027 params[11] = matrix[11]; 3028 params[12] = matrix[12]; 3029 params[13] = matrix[13]; 3030 params[14] = matrix[14]; 3031 params[15] = matrix[15]; 3032 } 3033 break; 3034 case GL_COLOR_MATRIX_STACK_DEPTH_SGI: 3035 params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1); 3036 break; 3037 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: 3038 params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH); 3039 break; 3040 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: 3041 params[0] = ctx->Pixel.PostColorMatrixScale[0]; 3042 break; 3043 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: 3044 params[0] = ctx->Pixel.PostColorMatrixScale[1]; 3045 break; 3046 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: 3047 params[0] = ctx->Pixel.PostColorMatrixScale[2]; 3048 break; 3049 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: 3050 params[0] = ctx->Pixel.PostColorMatrixScale[3]; 3051 break; 3052 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: 3053 params[0] = ctx->Pixel.PostColorMatrixBias[0]; 3054 break; 3055 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: 3056 params[0] = ctx->Pixel.PostColorMatrixBias[1]; 3057 break; 3058 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: 3059 params[0] = ctx->Pixel.PostColorMatrixBias[2]; 3060 break; 3061 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: 3062 params[0] = ctx->Pixel.PostColorMatrixBias[3]; 3063 break; 3064 case GL_CONVOLUTION_1D_EXT: 3065 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3066 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled); 3067 break; 3068 case GL_CONVOLUTION_2D_EXT: 3069 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3070 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled); 3071 break; 3072 case GL_SEPARABLE_2D_EXT: 3073 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3074 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled); 3075 break; 3076 case GL_POST_CONVOLUTION_RED_SCALE_EXT: 3077 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3078 params[0] = ctx->Pixel.PostConvolutionScale[0]; 3079 break; 3080 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: 3081 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3082 params[0] = ctx->Pixel.PostConvolutionScale[1]; 3083 break; 3084 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: 3085 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3086 params[0] = ctx->Pixel.PostConvolutionScale[2]; 3087 break; 3088 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: 3089 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3090 params[0] = ctx->Pixel.PostConvolutionScale[3]; 3091 break; 3092 case GL_POST_CONVOLUTION_RED_BIAS_EXT: 3093 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3094 params[0] = ctx->Pixel.PostConvolutionBias[0]; 3095 break; 3096 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: 3097 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3098 params[0] = ctx->Pixel.PostConvolutionBias[1]; 3099 break; 3100 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: 3101 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3102 params[0] = ctx->Pixel.PostConvolutionBias[2]; 3103 break; 3104 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: 3105 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3106 params[0] = ctx->Pixel.PostConvolutionBias[3]; 3107 break; 3108 case GL_HISTOGRAM: 3109 CHECK_EXT1(EXT_histogram, "GetFloatv"); 3110 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled); 3111 break; 3112 case GL_MINMAX: 3113 CHECK_EXT1(EXT_histogram, "GetFloatv"); 3114 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled); 3115 break; 3116 case GL_COLOR_TABLE_SGI: 3117 CHECK_EXT1(SGI_color_table, "GetFloatv"); 3118 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]); 3119 break; 3120 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: 3121 CHECK_EXT1(SGI_color_table, "GetFloatv"); 3122 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]); 3123 break; 3124 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: 3125 CHECK_EXT1(SGI_color_table, "GetFloatv"); 3126 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]); 3127 break; 3128 case GL_TEXTURE_COLOR_TABLE_SGI: 3129 CHECK_EXT1(SGI_texture_color_table, "GetFloatv"); 3130 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled); 3131 break; 3132 case GL_COLOR_SUM_EXT: 3133 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv"); 3134 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled); 3135 break; 3136 case GL_CURRENT_SECONDARY_COLOR_EXT: 3137 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3138 { 3139 FLUSH_CURRENT(ctx, 0); 3140 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]; 3141 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]; 3142 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]; 3143 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]; 3144 } 3145 break; 3146 case GL_SECONDARY_COLOR_ARRAY_EXT: 3147 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3148 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled); 3149 break; 3150 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: 3151 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3152 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type); 3153 break; 3154 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: 3155 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3156 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride); 3157 break; 3158 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: 3159 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3160 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size); 3161 break; 3162 case GL_CURRENT_FOG_COORDINATE_EXT: 3163 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3164 { 3165 FLUSH_CURRENT(ctx, 0); 3166 params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; 3167 } 3168 break; 3169 case GL_FOG_COORDINATE_ARRAY_EXT: 3170 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3171 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled); 3172 break; 3173 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: 3174 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3175 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type); 3176 break; 3177 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: 3178 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3179 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride); 3180 break; 3181 case GL_FOG_COORDINATE_SOURCE_EXT: 3182 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3183 params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource); 3184 break; 3185 case GL_MAX_TEXTURE_LOD_BIAS_EXT: 3186 CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv"); 3187 params[0] = ctx->Const.MaxTextureLodBias; 3188 break; 3189 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 3190 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv"); 3191 params[0] = ctx->Const.MaxTextureMaxAnisotropy; 3192 break; 3193 case GL_MULTISAMPLE_ARB: 3194 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled); 3195 break; 3196 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: 3197 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage); 3198 break; 3199 case GL_SAMPLE_ALPHA_TO_ONE_ARB: 3200 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne); 3201 break; 3202 case GL_SAMPLE_COVERAGE_ARB: 3203 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage); 3204 break; 3205 case GL_SAMPLE_COVERAGE_VALUE_ARB: 3206 params[0] = ctx->Multisample.SampleCoverageValue; 3207 break; 3208 case GL_SAMPLE_COVERAGE_INVERT_ARB: 3209 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert); 3210 break; 3211 case GL_SAMPLE_BUFFERS_ARB: 3212 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers); 3213 break; 3214 case GL_SAMPLES_ARB: 3215 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples); 3216 break; 3217 case GL_RASTER_POSITION_UNCLIPPED_IBM: 3218 CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv"); 3219 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped); 3220 break; 3221 case GL_POINT_SPRITE_NV: 3222 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv"); 3223 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite); 3224 break; 3225 case GL_POINT_SPRITE_R_MODE_NV: 3226 CHECK_EXT1(NV_point_sprite, "GetFloatv"); 3227 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode); 3228 break; 3229 case GL_POINT_SPRITE_COORD_ORIGIN: 3230 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv"); 3231 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin); 3232 break; 3233 case GL_GENERATE_MIPMAP_HINT_SGIS: 3234 CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv"); 3235 params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap); 3236 break; 3237 case GL_VERTEX_PROGRAM_BINDING_NV: 3238 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3239 params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0)); 3240 break; 3241 case GL_VERTEX_ATTRIB_ARRAY0_NV: 3242 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3243 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled); 3244 break; 3245 case GL_VERTEX_ATTRIB_ARRAY1_NV: 3246 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3247 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled); 3248 break; 3249 case GL_VERTEX_ATTRIB_ARRAY2_NV: 3250 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3251 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled); 3252 break; 3253 case GL_VERTEX_ATTRIB_ARRAY3_NV: 3254 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3255 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled); 3256 break; 3257 case GL_VERTEX_ATTRIB_ARRAY4_NV: 3258 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3259 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled); 3260 break; 3261 case GL_VERTEX_ATTRIB_ARRAY5_NV: 3262 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3263 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled); 3264 break; 3265 case GL_VERTEX_ATTRIB_ARRAY6_NV: 3266 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3267 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled); 3268 break; 3269 case GL_VERTEX_ATTRIB_ARRAY7_NV: 3270 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3271 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled); 3272 break; 3273 case GL_VERTEX_ATTRIB_ARRAY8_NV: 3274 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3275 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled); 3276 break; 3277 case GL_VERTEX_ATTRIB_ARRAY9_NV: 3278 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3279 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled); 3280 break; 3281 case GL_VERTEX_ATTRIB_ARRAY10_NV: 3282 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3283 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled); 3284 break; 3285 case GL_VERTEX_ATTRIB_ARRAY11_NV: 3286 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3287 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled); 3288 break; 3289 case GL_VERTEX_ATTRIB_ARRAY12_NV: 3290 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3291 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled); 3292 break; 3293 case GL_VERTEX_ATTRIB_ARRAY13_NV: 3294 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3295 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled); 3296 break; 3297 case GL_VERTEX_ATTRIB_ARRAY14_NV: 3298 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3299 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled); 3300 break; 3301 case GL_VERTEX_ATTRIB_ARRAY15_NV: 3302 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3303 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled); 3304 break; 3305 case GL_MAP1_VERTEX_ATTRIB0_4_NV: 3306 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3307 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]); 3308 break; 3309 case GL_MAP1_VERTEX_ATTRIB1_4_NV: 3310 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3311 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]); 3312 break; 3313 case GL_MAP1_VERTEX_ATTRIB2_4_NV: 3314 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3315 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]); 3316 break; 3317 case GL_MAP1_VERTEX_ATTRIB3_4_NV: 3318 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3319 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]); 3320 break; 3321 case GL_MAP1_VERTEX_ATTRIB4_4_NV: 3322 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3323 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]); 3324 break; 3325 case GL_MAP1_VERTEX_ATTRIB5_4_NV: 3326 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3327 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]); 3328 break; 3329 case GL_MAP1_VERTEX_ATTRIB6_4_NV: 3330 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3331 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]); 3332 break; 3333 case GL_MAP1_VERTEX_ATTRIB7_4_NV: 3334 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3335 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]); 3336 break; 3337 case GL_MAP1_VERTEX_ATTRIB8_4_NV: 3338 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3339 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]); 3340 break; 3341 case GL_MAP1_VERTEX_ATTRIB9_4_NV: 3342 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3343 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]); 3344 break; 3345 case GL_MAP1_VERTEX_ATTRIB10_4_NV: 3346 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3347 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]); 3348 break; 3349 case GL_MAP1_VERTEX_ATTRIB11_4_NV: 3350 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3351 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]); 3352 break; 3353 case GL_MAP1_VERTEX_ATTRIB12_4_NV: 3354 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3355 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]); 3356 break; 3357 case GL_MAP1_VERTEX_ATTRIB13_4_NV: 3358 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3359 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]); 3360 break; 3361 case GL_MAP1_VERTEX_ATTRIB14_4_NV: 3362 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3363 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]); 3364 break; 3365 case GL_MAP1_VERTEX_ATTRIB15_4_NV: 3366 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3367 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]); 3368 break; 3369 case GL_FRAGMENT_PROGRAM_NV: 3370 CHECK_EXT1(NV_fragment_program, "GetFloatv"); 3371 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled); 3372 break; 3373 case GL_FRAGMENT_PROGRAM_BINDING_NV: 3374 CHECK_EXT1(NV_fragment_program, "GetFloatv"); 3375 params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0); 3376 break; 3377 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV: 3378 CHECK_EXT1(NV_fragment_program, "GetFloatv"); 3379 params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS); 3380 break; 3381 case GL_TEXTURE_RECTANGLE_NV: 3382 CHECK_EXT1(NV_texture_rectangle, "GetFloatv"); 3383 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV)); 3384 break; 3385 case GL_TEXTURE_BINDING_RECTANGLE_NV: 3386 CHECK_EXT1(NV_texture_rectangle, "GetFloatv"); 3387 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name); 3388 break; 3389 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: 3390 CHECK_EXT1(NV_texture_rectangle, "GetFloatv"); 3391 params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize); 3392 break; 3393 case GL_STENCIL_TEST_TWO_SIDE_EXT: 3394 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv"); 3395 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide); 3396 break; 3397 case GL_ACTIVE_STENCIL_FACE_EXT: 3398 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv"); 3399 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); 3400 break; 3401 case GL_MAX_SHININESS_NV: 3402 CHECK_EXT1(NV_light_max_exponent, "GetFloatv"); 3403 params[0] = ctx->Const.MaxShininess; 3404 break; 3405 case GL_MAX_SPOT_EXPONENT_NV: 3406 CHECK_EXT1(NV_light_max_exponent, "GetFloatv"); 3407 params[0] = ctx->Const.MaxSpotExponent; 3408 break; 3409 case GL_ARRAY_BUFFER_BINDING_ARB: 3410 params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name); 3411 break; 3412 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB: 3413 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name); 3414 break; 3415 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB: 3416 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name); 3417 break; 3418 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB: 3419 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name); 3420 break; 3421 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB: 3422 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name); 3423 break; 3424 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: 3425 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name); 3426 break; 3427 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: 3428 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name); 3429 break; 3430 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: 3431 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name); 3432 break; 3433 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: 3434 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name); 3435 break; 3436 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB: 3437 params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name); 3438 break; 3439 case GL_PIXEL_PACK_BUFFER_BINDING_EXT: 3440 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv"); 3441 params[0] = (GLfloat)(ctx->Pack.BufferObj->Name); 3442 break; 3443 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT: 3444 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv"); 3445 params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name); 3446 break; 3447 case GL_VERTEX_PROGRAM_ARB: 3448 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv"); 3449 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled); 3450 break; 3451 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB: 3452 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv"); 3453 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled); 3454 break; 3455 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB: 3456 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv"); 3457 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled); 3458 break; 3459 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 3460 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv"); 3461 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth); 3462 break; 3463 case GL_MAX_PROGRAM_MATRICES_ARB: 3464 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv"); 3465 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices); 3466 break; 3467 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB: 3468 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv"); 3469 params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1); 3470 break; 3471 case GL_CURRENT_MATRIX_ARB: 3472 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv"); 3473 { 3474 const GLfloat *matrix = ctx->CurrentStack->Top->m; 3475 params[0] = matrix[0]; 3476 params[1] = matrix[1]; 3477 params[2] = matrix[2]; 3478 params[3] = matrix[3]; 3479 params[4] = matrix[4]; 3480 params[5] = matrix[5]; 3481 params[6] = matrix[6]; 3482 params[7] = matrix[7]; 3483 params[8] = matrix[8]; 3484 params[9] = matrix[9]; 3485 params[10] = matrix[10]; 3486 params[11] = matrix[11]; 3487 params[12] = matrix[12]; 3488 params[13] = matrix[13]; 3489 params[14] = matrix[14]; 3490 params[15] = matrix[15]; 3491 } 3492 break; 3493 case GL_TRANSPOSE_CURRENT_MATRIX_ARB: 3494 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv"); 3495 { 3496 const GLfloat *matrix = ctx->CurrentStack->Top->m; 3497 params[0] = matrix[0]; 3498 params[1] = matrix[4]; 3499 params[2] = matrix[8]; 3500 params[3] = matrix[12]; 3501 params[4] = matrix[1]; 3502 params[5] = matrix[5]; 3503 params[6] = matrix[9]; 3504 params[7] = matrix[13]; 3505 params[8] = matrix[2]; 3506 params[9] = matrix[6]; 3507 params[10] = matrix[10]; 3508 params[11] = matrix[14]; 3509 params[12] = matrix[3]; 3510 params[13] = matrix[7]; 3511 params[14] = matrix[11]; 3512 params[15] = matrix[15]; 3513 } 3514 break; 3515 case GL_MAX_VERTEX_ATTRIBS_ARB: 3516 CHECK_EXT1(ARB_vertex_program, "GetFloatv"); 3517 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs); 3518 break; 3519 case GL_PROGRAM_ERROR_POSITION_ARB: 3520 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv"); 3521 params[0] = (GLfloat)(ctx->Program.ErrorPos); 3522 break; 3523 case GL_FRAGMENT_PROGRAM_ARB: 3524 CHECK_EXT1(ARB_fragment_program, "GetFloatv"); 3525 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled); 3526 break; 3527 case GL_MAX_TEXTURE_COORDS_ARB: 3528 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv"); 3529 params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits); 3530 break; 3531 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 3532 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv"); 3533 params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits); 3534 break; 3535 case GL_DEPTH_BOUNDS_TEST_EXT: 3536 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv"); 3537 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest); 3538 break; 3539 case GL_DEPTH_BOUNDS_EXT: 3540 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv"); 3541 params[0] = ctx->Depth.BoundsMin; 3542 params[1] = ctx->Depth.BoundsMax; 3543 break; 3544 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA: 3545 CHECK_EXT1(MESA_program_debug, "GetFloatv"); 3546 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.CallbackEnabled); 3547 break; 3548 case GL_VERTEX_PROGRAM_CALLBACK_MESA: 3549 CHECK_EXT1(MESA_program_debug, "GetFloatv"); 3550 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.CallbackEnabled); 3551 break; 3552 case GL_FRAGMENT_PROGRAM_POSITION_MESA: 3553 CHECK_EXT1(MESA_program_debug, "GetFloatv"); 3554 params[0] = (GLfloat)(ctx->FragmentProgram.CurrentPosition); 3555 break; 3556 case GL_VERTEX_PROGRAM_POSITION_MESA: 3557 CHECK_EXT1(MESA_program_debug, "GetFloatv"); 3558 params[0] = (GLfloat)(ctx->VertexProgram.CurrentPosition); 3559 break; 3560 case GL_MAX_DRAW_BUFFERS_ARB: 3561 params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers); 3562 break; 3563 case GL_DRAW_BUFFER0_ARB: 3564 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]); 3565 break; 3566 case GL_DRAW_BUFFER1_ARB: 3567 { 3568 GLenum buffer; 3569 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 3570 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 3571 return; 3572 } 3573 buffer = ctx->DrawBuffer->ColorDrawBuffer[1]; 3574 params[0] = ENUM_TO_FLOAT(buffer); 3575 } 3576 break; 3577 case GL_DRAW_BUFFER2_ARB: 3578 { 3579 GLenum buffer; 3580 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 3581 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 3582 return; 3583 } 3584 buffer = ctx->DrawBuffer->ColorDrawBuffer[2]; 3585 params[0] = ENUM_TO_FLOAT(buffer); 3586 } 3587 break; 3588 case GL_DRAW_BUFFER3_ARB: 3589 { 3590 GLenum buffer; 3591 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 3592 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 3593 return; 3594 } 3595 buffer = ctx->DrawBuffer->ColorDrawBuffer[3]; 3596 params[0] = ENUM_TO_FLOAT(buffer); 3597 } 3598 break; 3599 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: 3600 CHECK_EXT1(OES_read_format, "GetFloatv"); 3601 params[0] = (GLfloat)(ctx->Const.ColorReadType); 3602 break; 3603 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: 3604 CHECK_EXT1(OES_read_format, "GetFloatv"); 3605 params[0] = (GLfloat)(ctx->Const.ColorReadFormat); 3606 break; 3607 case GL_NUM_FRAGMENT_REGISTERS_ATI: 3608 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3609 params[0] = (GLfloat)(6); 3610 break; 3611 case GL_NUM_FRAGMENT_CONSTANTS_ATI: 3612 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3613 params[0] = (GLfloat)(8); 3614 break; 3615 case GL_NUM_PASSES_ATI: 3616 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3617 params[0] = (GLfloat)(2); 3618 break; 3619 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI: 3620 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3621 params[0] = (GLfloat)(8); 3622 break; 3623 case GL_NUM_INSTRUCTIONS_TOTAL_ATI: 3624 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3625 params[0] = (GLfloat)(16); 3626 break; 3627 case GL_COLOR_ALPHA_PAIRING_ATI: 3628 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3629 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE); 3630 break; 3631 case GL_NUM_LOOPBACK_COMPONENTS_ATI: 3632 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3633 params[0] = (GLfloat)(3); 3634 break; 3635 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI: 3636 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3637 params[0] = (GLfloat)(3); 3638 break; 3639 case GL_STENCIL_BACK_FUNC: 3640 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]); 3641 break; 3642 case GL_STENCIL_BACK_VALUE_MASK: 3643 params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]); 3644 break; 3645 case GL_STENCIL_BACK_WRITEMASK: 3646 params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]); 3647 break; 3648 case GL_STENCIL_BACK_REF: 3649 params[0] = (GLfloat)(ctx->Stencil.Ref[1]); 3650 break; 3651 case GL_STENCIL_BACK_FAIL: 3652 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]); 3653 break; 3654 case GL_STENCIL_BACK_PASS_DEPTH_FAIL: 3655 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]); 3656 break; 3657 case GL_STENCIL_BACK_PASS_DEPTH_PASS: 3658 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]); 3659 break; 3660 case GL_FRAMEBUFFER_BINDING_EXT: 3661 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); 3662 params[0] = (GLfloat)(ctx->DrawBuffer->Name); 3663 break; 3664 case GL_RENDERBUFFER_BINDING_EXT: 3665 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); 3666 params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0); 3667 break; 3668 case GL_MAX_COLOR_ATTACHMENTS_EXT: 3669 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); 3670 params[0] = (GLfloat)(ctx->Const.MaxColorAttachments); 3671 break; 3672 case GL_MAX_RENDERBUFFER_SIZE_EXT: 3673 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); 3674 params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize); 3675 break; 3676 case GL_READ_FRAMEBUFFER_BINDING_EXT: 3677 CHECK_EXT1(EXT_framebuffer_blit, "GetFloatv"); 3678 params[0] = (GLfloat)(ctx->ReadBuffer->Name); 3679 break; 3680 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: 3681 CHECK_EXT1(ARB_fragment_shader, "GetFloatv"); 3682 params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents); 3683 break; 3684 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: 3685 CHECK_EXT1(ARB_fragment_shader, "GetFloatv"); 3686 params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative); 3687 break; 3688 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: 3689 CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); 3690 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents); 3691 break; 3692 case GL_MAX_VARYING_FLOATS_ARB: 3693 CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); 3694 params[0] = (GLfloat)(ctx->Const.MaxVarying * 4); 3695 break; 3696 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 3697 CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); 3698 params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits); 3699 break; 3700 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: 3701 CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); 3702 params[0] = (GLfloat)(MAX_COMBINED_TEXTURE_IMAGE_UNITS); 3703 break; 3704 case GL_CURRENT_PROGRAM: 3705 CHECK_EXT1(ARB_shader_objects, "GetFloatv"); 3706 params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0); 3707 break; 3708 case GL_MAX_SAMPLES: 3709 CHECK_EXT1(ARB_framebuffer_object, "GetFloatv"); 3710 params[0] = (GLfloat)(ctx->Const.MaxSamples); 3711 break; 3712 default: 3713 _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname); 3714 } 3715} 3716 3717void GLAPIENTRY 3718_mesa_GetIntegerv( GLenum pname, GLint *params ) 3719{ 3720 GET_CURRENT_CONTEXT(ctx); 3721 ASSERT_OUTSIDE_BEGIN_END(ctx); 3722 3723 if (!params) 3724 return; 3725 3726 if (ctx->NewState) 3727 _mesa_update_state(ctx); 3728 3729 if (ctx->Driver.GetIntegerv && 3730 ctx->Driver.GetIntegerv(ctx, pname, params)) 3731 return; 3732 3733 switch (pname) { 3734 case GL_ACCUM_RED_BITS: 3735 params[0] = ctx->DrawBuffer->Visual.accumRedBits; 3736 break; 3737 case GL_ACCUM_GREEN_BITS: 3738 params[0] = ctx->DrawBuffer->Visual.accumGreenBits; 3739 break; 3740 case GL_ACCUM_BLUE_BITS: 3741 params[0] = ctx->DrawBuffer->Visual.accumBlueBits; 3742 break; 3743 case GL_ACCUM_ALPHA_BITS: 3744 params[0] = ctx->DrawBuffer->Visual.accumAlphaBits; 3745 break; 3746 case GL_ACCUM_CLEAR_VALUE: 3747 params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]); 3748 params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]); 3749 params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]); 3750 params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]); 3751 break; 3752 case GL_ALPHA_BIAS: 3753 params[0] = IROUND(ctx->Pixel.AlphaBias); 3754 break; 3755 case GL_ALPHA_BITS: 3756 params[0] = ctx->DrawBuffer->Visual.alphaBits; 3757 break; 3758 case GL_ALPHA_SCALE: 3759 params[0] = IROUND(ctx->Pixel.AlphaScale); 3760 break; 3761 case GL_ALPHA_TEST: 3762 params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled); 3763 break; 3764 case GL_ALPHA_TEST_FUNC: 3765 params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc); 3766 break; 3767 case GL_ALPHA_TEST_REF: 3768 params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef); 3769 break; 3770 case GL_ATTRIB_STACK_DEPTH: 3771 params[0] = ctx->AttribStackDepth; 3772 break; 3773 case GL_AUTO_NORMAL: 3774 params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal); 3775 break; 3776 case GL_AUX_BUFFERS: 3777 params[0] = ctx->DrawBuffer->Visual.numAuxBuffers; 3778 break; 3779 case GL_BLEND: 3780 params[0] = BOOLEAN_TO_INT(ctx->Color.BlendEnabled); 3781 break; 3782 case GL_BLEND_DST: 3783 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB); 3784 break; 3785 case GL_BLEND_SRC: 3786 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB); 3787 break; 3788 case GL_BLEND_SRC_RGB_EXT: 3789 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB); 3790 break; 3791 case GL_BLEND_DST_RGB_EXT: 3792 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB); 3793 break; 3794 case GL_BLEND_SRC_ALPHA_EXT: 3795 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA); 3796 break; 3797 case GL_BLEND_DST_ALPHA_EXT: 3798 params[0] = ENUM_TO_INT(ctx->Color.BlendDstA); 3799 break; 3800 case GL_BLEND_EQUATION: 3801 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB ); 3802 break; 3803 case GL_BLEND_EQUATION_ALPHA_EXT: 3804 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA ); 3805 break; 3806 case GL_BLEND_COLOR_EXT: 3807 params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]); 3808 params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]); 3809 params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]); 3810 params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]); 3811 break; 3812 case GL_BLUE_BIAS: 3813 params[0] = IROUND(ctx->Pixel.BlueBias); 3814 break; 3815 case GL_BLUE_BITS: 3816 params[0] = ctx->DrawBuffer->Visual.blueBits; 3817 break; 3818 case GL_BLUE_SCALE: 3819 params[0] = IROUND(ctx->Pixel.BlueScale); 3820 break; 3821 case GL_CLIENT_ATTRIB_STACK_DEPTH: 3822 params[0] = ctx->ClientAttribStackDepth; 3823 break; 3824 case GL_CLIP_PLANE0: 3825 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1); 3826 break; 3827 case GL_CLIP_PLANE1: 3828 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1); 3829 break; 3830 case GL_CLIP_PLANE2: 3831 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1); 3832 break; 3833 case GL_CLIP_PLANE3: 3834 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1); 3835 break; 3836 case GL_CLIP_PLANE4: 3837 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1); 3838 break; 3839 case GL_CLIP_PLANE5: 3840 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1); 3841 break; 3842 case GL_COLOR_CLEAR_VALUE: 3843 params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]); 3844 params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]); 3845 params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]); 3846 params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]); 3847 break; 3848 case GL_COLOR_MATERIAL: 3849 params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled); 3850 break; 3851 case GL_COLOR_MATERIAL_FACE: 3852 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace); 3853 break; 3854 case GL_COLOR_MATERIAL_PARAMETER: 3855 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode); 3856 break; 3857 case GL_COLOR_WRITEMASK: 3858 params[0] = ctx->Color.ColorMask[RCOMP] ? 1 : 0; 3859 params[1] = ctx->Color.ColorMask[GCOMP] ? 1 : 0; 3860 params[2] = ctx->Color.ColorMask[BCOMP] ? 1 : 0; 3861 params[3] = ctx->Color.ColorMask[ACOMP] ? 1 : 0; 3862 break; 3863 case GL_CULL_FACE: 3864 params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag); 3865 break; 3866 case GL_CULL_FACE_MODE: 3867 params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode); 3868 break; 3869 case GL_CURRENT_COLOR: 3870 { 3871 FLUSH_CURRENT(ctx, 0); 3872 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]); 3873 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]); 3874 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]); 3875 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]); 3876 } 3877 break; 3878 case GL_CURRENT_INDEX: 3879 { 3880 FLUSH_CURRENT(ctx, 0); 3881 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]); 3882 } 3883 break; 3884 case GL_CURRENT_NORMAL: 3885 { 3886 FLUSH_CURRENT(ctx, 0); 3887 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]); 3888 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]); 3889 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]); 3890 } 3891 break; 3892 case GL_CURRENT_RASTER_COLOR: 3893 params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]); 3894 params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]); 3895 params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]); 3896 params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]); 3897 break; 3898 case GL_CURRENT_RASTER_DISTANCE: 3899 params[0] = IROUND(ctx->Current.RasterDistance); 3900 break; 3901 case GL_CURRENT_RASTER_INDEX: 3902 params[0] = IROUND(ctx->Current.RasterIndex); 3903 break; 3904 case GL_CURRENT_RASTER_POSITION: 3905 params[0] = IROUND(ctx->Current.RasterPos[0]); 3906 params[1] = IROUND(ctx->Current.RasterPos[1]); 3907 params[2] = IROUND(ctx->Current.RasterPos[2]); 3908 params[3] = IROUND(ctx->Current.RasterPos[3]); 3909 break; 3910 case GL_CURRENT_RASTER_SECONDARY_COLOR: 3911 params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]); 3912 params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]); 3913 params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]); 3914 params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]); 3915 break; 3916 case GL_CURRENT_RASTER_TEXTURE_COORDS: 3917 { 3918 const GLuint texUnit = ctx->Texture.CurrentUnit; 3919 params[0] = IROUND(ctx->Current.RasterTexCoords[texUnit][0]); 3920 params[1] = IROUND(ctx->Current.RasterTexCoords[texUnit][1]); 3921 params[2] = IROUND(ctx->Current.RasterTexCoords[texUnit][2]); 3922 params[3] = IROUND(ctx->Current.RasterTexCoords[texUnit][3]); 3923 } 3924 break; 3925 case GL_CURRENT_RASTER_POSITION_VALID: 3926 params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid); 3927 break; 3928 case GL_CURRENT_TEXTURE_COORDS: 3929 { 3930 const GLuint texUnit = ctx->Texture.CurrentUnit; 3931 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]); 3932 params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]); 3933 params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]); 3934 params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]); 3935 } 3936 break; 3937 case GL_DEPTH_BIAS: 3938 params[0] = IROUND(ctx->Pixel.DepthBias); 3939 break; 3940 case GL_DEPTH_BITS: 3941 params[0] = ctx->DrawBuffer->Visual.depthBits; 3942 break; 3943 case GL_DEPTH_CLEAR_VALUE: 3944 params[0] = FLOAT_TO_INT(((GLfloat) ctx->Depth.Clear)); 3945 break; 3946 case GL_DEPTH_FUNC: 3947 params[0] = ENUM_TO_INT(ctx->Depth.Func); 3948 break; 3949 case GL_DEPTH_RANGE: 3950 params[0] = FLOAT_TO_INT(ctx->Viewport.Near); 3951 params[1] = FLOAT_TO_INT(ctx->Viewport.Far); 3952 break; 3953 case GL_DEPTH_SCALE: 3954 params[0] = IROUND(ctx->Pixel.DepthScale); 3955 break; 3956 case GL_DEPTH_TEST: 3957 params[0] = BOOLEAN_TO_INT(ctx->Depth.Test); 3958 break; 3959 case GL_DEPTH_WRITEMASK: 3960 params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask); 3961 break; 3962 case GL_DITHER: 3963 params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag); 3964 break; 3965 case GL_DOUBLEBUFFER: 3966 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode); 3967 break; 3968 case GL_DRAW_BUFFER: 3969 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]); 3970 break; 3971 case GL_EDGE_FLAG: 3972 { 3973 FLUSH_CURRENT(ctx, 0); 3974 params[0] = BOOLEAN_TO_INT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0)); 3975 } 3976 break; 3977 case GL_FEEDBACK_BUFFER_SIZE: 3978 params[0] = ctx->Feedback.BufferSize; 3979 break; 3980 case GL_FEEDBACK_BUFFER_TYPE: 3981 params[0] = ENUM_TO_INT(ctx->Feedback.Type); 3982 break; 3983 case GL_FOG: 3984 params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled); 3985 break; 3986 case GL_FOG_COLOR: 3987 params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]); 3988 params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]); 3989 params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]); 3990 params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]); 3991 break; 3992 case GL_FOG_DENSITY: 3993 params[0] = IROUND(ctx->Fog.Density); 3994 break; 3995 case GL_FOG_END: 3996 params[0] = IROUND(ctx->Fog.End); 3997 break; 3998 case GL_FOG_HINT: 3999 params[0] = ENUM_TO_INT(ctx->Hint.Fog); 4000 break; 4001 case GL_FOG_INDEX: 4002 params[0] = IROUND(ctx->Fog.Index); 4003 break; 4004 case GL_FOG_MODE: 4005 params[0] = ENUM_TO_INT(ctx->Fog.Mode); 4006 break; 4007 case GL_FOG_START: 4008 params[0] = IROUND(ctx->Fog.Start); 4009 break; 4010 case GL_FRONT_FACE: 4011 params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace); 4012 break; 4013 case GL_GREEN_BIAS: 4014 params[0] = IROUND(ctx->Pixel.GreenBias); 4015 break; 4016 case GL_GREEN_BITS: 4017 params[0] = ctx->DrawBuffer->Visual.greenBits; 4018 break; 4019 case GL_GREEN_SCALE: 4020 params[0] = IROUND(ctx->Pixel.GreenScale); 4021 break; 4022 case GL_INDEX_BITS: 4023 params[0] = ctx->DrawBuffer->Visual.indexBits; 4024 break; 4025 case GL_INDEX_CLEAR_VALUE: 4026 params[0] = ctx->Color.ClearIndex; 4027 break; 4028 case GL_INDEX_MODE: 4029 params[0] = BOOLEAN_TO_INT(!ctx->DrawBuffer->Visual.rgbMode); 4030 break; 4031 case GL_INDEX_OFFSET: 4032 params[0] = ctx->Pixel.IndexOffset; 4033 break; 4034 case GL_INDEX_SHIFT: 4035 params[0] = ctx->Pixel.IndexShift; 4036 break; 4037 case GL_INDEX_WRITEMASK: 4038 params[0] = ctx->Color.IndexMask; 4039 break; 4040 case GL_LIGHT0: 4041 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled); 4042 break; 4043 case GL_LIGHT1: 4044 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled); 4045 break; 4046 case GL_LIGHT2: 4047 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled); 4048 break; 4049 case GL_LIGHT3: 4050 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled); 4051 break; 4052 case GL_LIGHT4: 4053 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled); 4054 break; 4055 case GL_LIGHT5: 4056 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled); 4057 break; 4058 case GL_LIGHT6: 4059 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled); 4060 break; 4061 case GL_LIGHT7: 4062 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled); 4063 break; 4064 case GL_LIGHTING: 4065 params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled); 4066 break; 4067 case GL_LIGHT_MODEL_AMBIENT: 4068 params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]); 4069 params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]); 4070 params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]); 4071 params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]); 4072 break; 4073 case GL_LIGHT_MODEL_COLOR_CONTROL: 4074 params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl); 4075 break; 4076 case GL_LIGHT_MODEL_LOCAL_VIEWER: 4077 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer); 4078 break; 4079 case GL_LIGHT_MODEL_TWO_SIDE: 4080 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide); 4081 break; 4082 case GL_LINE_SMOOTH: 4083 params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag); 4084 break; 4085 case GL_LINE_SMOOTH_HINT: 4086 params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth); 4087 break; 4088 case GL_LINE_STIPPLE: 4089 params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag); 4090 break; 4091 case GL_LINE_STIPPLE_PATTERN: 4092 params[0] = ctx->Line.StipplePattern; 4093 break; 4094 case GL_LINE_STIPPLE_REPEAT: 4095 params[0] = ctx->Line.StippleFactor; 4096 break; 4097 case GL_LINE_WIDTH: 4098 params[0] = IROUND(ctx->Line.Width); 4099 break; 4100 case GL_LINE_WIDTH_GRANULARITY: 4101 params[0] = IROUND(ctx->Const.LineWidthGranularity); 4102 break; 4103 case GL_LINE_WIDTH_RANGE: 4104 params[0] = IROUND(ctx->Const.MinLineWidthAA); 4105 params[1] = IROUND(ctx->Const.MaxLineWidthAA); 4106 break; 4107 case GL_ALIASED_LINE_WIDTH_RANGE: 4108 params[0] = IROUND(ctx->Const.MinLineWidth); 4109 params[1] = IROUND(ctx->Const.MaxLineWidth); 4110 break; 4111 case GL_LIST_BASE: 4112 params[0] = ctx->List.ListBase; 4113 break; 4114 case GL_LIST_INDEX: 4115 params[0] = (ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0); 4116 break; 4117 case GL_LIST_MODE: 4118 { 4119 GLenum mode; 4120 if (!ctx->CompileFlag) 4121 mode = 0; 4122 else if (ctx->ExecuteFlag) 4123 mode = GL_COMPILE_AND_EXECUTE; 4124 else 4125 mode = GL_COMPILE; 4126 params[0] = ENUM_TO_INT(mode); 4127 } 4128 break; 4129 case GL_INDEX_LOGIC_OP: 4130 params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled); 4131 break; 4132 case GL_COLOR_LOGIC_OP: 4133 params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled); 4134 break; 4135 case GL_LOGIC_OP_MODE: 4136 params[0] = ENUM_TO_INT(ctx->Color.LogicOp); 4137 break; 4138 case GL_MAP1_COLOR_4: 4139 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4); 4140 break; 4141 case GL_MAP1_GRID_DOMAIN: 4142 params[0] = IROUND(ctx->Eval.MapGrid1u1); 4143 params[1] = IROUND(ctx->Eval.MapGrid1u2); 4144 break; 4145 case GL_MAP1_GRID_SEGMENTS: 4146 params[0] = ctx->Eval.MapGrid1un; 4147 break; 4148 case GL_MAP1_INDEX: 4149 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index); 4150 break; 4151 case GL_MAP1_NORMAL: 4152 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal); 4153 break; 4154 case GL_MAP1_TEXTURE_COORD_1: 4155 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1); 4156 break; 4157 case GL_MAP1_TEXTURE_COORD_2: 4158 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2); 4159 break; 4160 case GL_MAP1_TEXTURE_COORD_3: 4161 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3); 4162 break; 4163 case GL_MAP1_TEXTURE_COORD_4: 4164 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4); 4165 break; 4166 case GL_MAP1_VERTEX_3: 4167 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3); 4168 break; 4169 case GL_MAP1_VERTEX_4: 4170 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4); 4171 break; 4172 case GL_MAP2_COLOR_4: 4173 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4); 4174 break; 4175 case GL_MAP2_GRID_DOMAIN: 4176 params[0] = IROUND(ctx->Eval.MapGrid2u1); 4177 params[1] = IROUND(ctx->Eval.MapGrid2u2); 4178 params[2] = IROUND(ctx->Eval.MapGrid2v1); 4179 params[3] = IROUND(ctx->Eval.MapGrid2v2); 4180 break; 4181 case GL_MAP2_GRID_SEGMENTS: 4182 params[0] = ctx->Eval.MapGrid2un; 4183 params[1] = ctx->Eval.MapGrid2vn; 4184 break; 4185 case GL_MAP2_INDEX: 4186 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index); 4187 break; 4188 case GL_MAP2_NORMAL: 4189 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal); 4190 break; 4191 case GL_MAP2_TEXTURE_COORD_1: 4192 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1); 4193 break; 4194 case GL_MAP2_TEXTURE_COORD_2: 4195 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2); 4196 break; 4197 case GL_MAP2_TEXTURE_COORD_3: 4198 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3); 4199 break; 4200 case GL_MAP2_TEXTURE_COORD_4: 4201 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4); 4202 break; 4203 case GL_MAP2_VERTEX_3: 4204 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3); 4205 break; 4206 case GL_MAP2_VERTEX_4: 4207 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4); 4208 break; 4209 case GL_MAP_COLOR: 4210 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag); 4211 break; 4212 case GL_MAP_STENCIL: 4213 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag); 4214 break; 4215 case GL_MATRIX_MODE: 4216 params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode); 4217 break; 4218 case GL_MAX_ATTRIB_STACK_DEPTH: 4219 params[0] = MAX_ATTRIB_STACK_DEPTH; 4220 break; 4221 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: 4222 params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH; 4223 break; 4224 case GL_MAX_CLIP_PLANES: 4225 params[0] = ctx->Const.MaxClipPlanes; 4226 break; 4227 case GL_MAX_ELEMENTS_VERTICES: 4228 params[0] = ctx->Const.MaxArrayLockSize; 4229 break; 4230 case GL_MAX_ELEMENTS_INDICES: 4231 params[0] = ctx->Const.MaxArrayLockSize; 4232 break; 4233 case GL_MAX_EVAL_ORDER: 4234 params[0] = MAX_EVAL_ORDER; 4235 break; 4236 case GL_MAX_LIGHTS: 4237 params[0] = ctx->Const.MaxLights; 4238 break; 4239 case GL_MAX_LIST_NESTING: 4240 params[0] = MAX_LIST_NESTING; 4241 break; 4242 case GL_MAX_MODELVIEW_STACK_DEPTH: 4243 params[0] = MAX_MODELVIEW_STACK_DEPTH; 4244 break; 4245 case GL_MAX_NAME_STACK_DEPTH: 4246 params[0] = MAX_NAME_STACK_DEPTH; 4247 break; 4248 case GL_MAX_PIXEL_MAP_TABLE: 4249 params[0] = MAX_PIXEL_MAP_TABLE; 4250 break; 4251 case GL_MAX_PROJECTION_STACK_DEPTH: 4252 params[0] = MAX_PROJECTION_STACK_DEPTH; 4253 break; 4254 case GL_MAX_TEXTURE_SIZE: 4255 params[0] = 1 << (ctx->Const.MaxTextureLevels - 1); 4256 break; 4257 case GL_MAX_3D_TEXTURE_SIZE: 4258 params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1); 4259 break; 4260 case GL_MAX_TEXTURE_STACK_DEPTH: 4261 params[0] = MAX_TEXTURE_STACK_DEPTH; 4262 break; 4263 case GL_MAX_VIEWPORT_DIMS: 4264 params[0] = ctx->Const.MaxViewportWidth; 4265 params[1] = ctx->Const.MaxViewportHeight; 4266 break; 4267 case GL_MODELVIEW_MATRIX: 4268 { 4269 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 4270 params[0] = IROUND(matrix[0]); 4271 params[1] = IROUND(matrix[1]); 4272 params[2] = IROUND(matrix[2]); 4273 params[3] = IROUND(matrix[3]); 4274 params[4] = IROUND(matrix[4]); 4275 params[5] = IROUND(matrix[5]); 4276 params[6] = IROUND(matrix[6]); 4277 params[7] = IROUND(matrix[7]); 4278 params[8] = IROUND(matrix[8]); 4279 params[9] = IROUND(matrix[9]); 4280 params[10] = IROUND(matrix[10]); 4281 params[11] = IROUND(matrix[11]); 4282 params[12] = IROUND(matrix[12]); 4283 params[13] = IROUND(matrix[13]); 4284 params[14] = IROUND(matrix[14]); 4285 params[15] = IROUND(matrix[15]); 4286 } 4287 break; 4288 case GL_MODELVIEW_STACK_DEPTH: 4289 params[0] = ctx->ModelviewMatrixStack.Depth + 1; 4290 break; 4291 case GL_NAME_STACK_DEPTH: 4292 params[0] = ctx->Select.NameStackDepth; 4293 break; 4294 case GL_NORMALIZE: 4295 params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize); 4296 break; 4297 case GL_PACK_ALIGNMENT: 4298 params[0] = ctx->Pack.Alignment; 4299 break; 4300 case GL_PACK_LSB_FIRST: 4301 params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst); 4302 break; 4303 case GL_PACK_ROW_LENGTH: 4304 params[0] = ctx->Pack.RowLength; 4305 break; 4306 case GL_PACK_SKIP_PIXELS: 4307 params[0] = ctx->Pack.SkipPixels; 4308 break; 4309 case GL_PACK_SKIP_ROWS: 4310 params[0] = ctx->Pack.SkipRows; 4311 break; 4312 case GL_PACK_SWAP_BYTES: 4313 params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes); 4314 break; 4315 case GL_PACK_SKIP_IMAGES_EXT: 4316 params[0] = ctx->Pack.SkipImages; 4317 break; 4318 case GL_PACK_IMAGE_HEIGHT_EXT: 4319 params[0] = ctx->Pack.ImageHeight; 4320 break; 4321 case GL_PACK_INVERT_MESA: 4322 params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert); 4323 break; 4324 case GL_PERSPECTIVE_CORRECTION_HINT: 4325 params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection); 4326 break; 4327 case GL_PIXEL_MAP_A_TO_A_SIZE: 4328 params[0] = ctx->PixelMaps.AtoA.Size; 4329 break; 4330 case GL_PIXEL_MAP_B_TO_B_SIZE: 4331 params[0] = ctx->PixelMaps.BtoB.Size; 4332 break; 4333 case GL_PIXEL_MAP_G_TO_G_SIZE: 4334 params[0] = ctx->PixelMaps.GtoG.Size; 4335 break; 4336 case GL_PIXEL_MAP_I_TO_A_SIZE: 4337 params[0] = ctx->PixelMaps.ItoA.Size; 4338 break; 4339 case GL_PIXEL_MAP_I_TO_B_SIZE: 4340 params[0] = ctx->PixelMaps.ItoB.Size; 4341 break; 4342 case GL_PIXEL_MAP_I_TO_G_SIZE: 4343 params[0] = ctx->PixelMaps.ItoG.Size; 4344 break; 4345 case GL_PIXEL_MAP_I_TO_I_SIZE: 4346 params[0] = ctx->PixelMaps.ItoI.Size; 4347 break; 4348 case GL_PIXEL_MAP_I_TO_R_SIZE: 4349 params[0] = ctx->PixelMaps.ItoR.Size; 4350 break; 4351 case GL_PIXEL_MAP_R_TO_R_SIZE: 4352 params[0] = ctx->PixelMaps.RtoR.Size; 4353 break; 4354 case GL_PIXEL_MAP_S_TO_S_SIZE: 4355 params[0] = ctx->PixelMaps.StoS.Size; 4356 break; 4357 case GL_POINT_SIZE: 4358 params[0] = IROUND(ctx->Point.Size); 4359 break; 4360 case GL_POINT_SIZE_GRANULARITY: 4361 params[0] = IROUND(ctx->Const.PointSizeGranularity); 4362 break; 4363 case GL_POINT_SIZE_RANGE: 4364 params[0] = IROUND(ctx->Const.MinPointSizeAA); 4365 params[1] = IROUND(ctx->Const.MaxPointSizeAA); 4366 break; 4367 case GL_ALIASED_POINT_SIZE_RANGE: 4368 params[0] = IROUND(ctx->Const.MinPointSize); 4369 params[1] = IROUND(ctx->Const.MaxPointSize); 4370 break; 4371 case GL_POINT_SMOOTH: 4372 params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag); 4373 break; 4374 case GL_POINT_SMOOTH_HINT: 4375 params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth); 4376 break; 4377 case GL_POINT_SIZE_MIN_EXT: 4378 params[0] = IROUND(ctx->Point.MinSize); 4379 break; 4380 case GL_POINT_SIZE_MAX_EXT: 4381 params[0] = IROUND(ctx->Point.MaxSize); 4382 break; 4383 case GL_POINT_FADE_THRESHOLD_SIZE_EXT: 4384 params[0] = IROUND(ctx->Point.Threshold); 4385 break; 4386 case GL_DISTANCE_ATTENUATION_EXT: 4387 params[0] = IROUND(ctx->Point.Params[0]); 4388 params[1] = IROUND(ctx->Point.Params[1]); 4389 params[2] = IROUND(ctx->Point.Params[2]); 4390 break; 4391 case GL_POLYGON_MODE: 4392 params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode); 4393 params[1] = ENUM_TO_INT(ctx->Polygon.BackMode); 4394 break; 4395 case GL_POLYGON_OFFSET_BIAS_EXT: 4396 params[0] = IROUND(ctx->Polygon.OffsetUnits); 4397 break; 4398 case GL_POLYGON_OFFSET_FACTOR: 4399 params[0] = IROUND(ctx->Polygon.OffsetFactor ); 4400 break; 4401 case GL_POLYGON_OFFSET_UNITS: 4402 params[0] = IROUND(ctx->Polygon.OffsetUnits ); 4403 break; 4404 case GL_POLYGON_OFFSET_POINT: 4405 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetPoint); 4406 break; 4407 case GL_POLYGON_OFFSET_LINE: 4408 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetLine); 4409 break; 4410 case GL_POLYGON_OFFSET_FILL: 4411 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetFill); 4412 break; 4413 case GL_POLYGON_SMOOTH: 4414 params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag); 4415 break; 4416 case GL_POLYGON_SMOOTH_HINT: 4417 params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth); 4418 break; 4419 case GL_POLYGON_STIPPLE: 4420 params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag); 4421 break; 4422 case GL_PROJECTION_MATRIX: 4423 { 4424 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 4425 params[0] = IROUND(matrix[0]); 4426 params[1] = IROUND(matrix[1]); 4427 params[2] = IROUND(matrix[2]); 4428 params[3] = IROUND(matrix[3]); 4429 params[4] = IROUND(matrix[4]); 4430 params[5] = IROUND(matrix[5]); 4431 params[6] = IROUND(matrix[6]); 4432 params[7] = IROUND(matrix[7]); 4433 params[8] = IROUND(matrix[8]); 4434 params[9] = IROUND(matrix[9]); 4435 params[10] = IROUND(matrix[10]); 4436 params[11] = IROUND(matrix[11]); 4437 params[12] = IROUND(matrix[12]); 4438 params[13] = IROUND(matrix[13]); 4439 params[14] = IROUND(matrix[14]); 4440 params[15] = IROUND(matrix[15]); 4441 } 4442 break; 4443 case GL_PROJECTION_STACK_DEPTH: 4444 params[0] = ctx->ProjectionMatrixStack.Depth + 1; 4445 break; 4446 case GL_READ_BUFFER: 4447 params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer); 4448 break; 4449 case GL_RED_BIAS: 4450 params[0] = IROUND(ctx->Pixel.RedBias); 4451 break; 4452 case GL_RED_BITS: 4453 params[0] = ctx->DrawBuffer->Visual.redBits; 4454 break; 4455 case GL_RED_SCALE: 4456 params[0] = IROUND(ctx->Pixel.RedScale); 4457 break; 4458 case GL_RENDER_MODE: 4459 params[0] = ENUM_TO_INT(ctx->RenderMode); 4460 break; 4461 case GL_RESCALE_NORMAL: 4462 params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals); 4463 break; 4464 case GL_RGBA_MODE: 4465 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.rgbMode); 4466 break; 4467 case GL_SCISSOR_BOX: 4468 params[0] = ctx->Scissor.X; 4469 params[1] = ctx->Scissor.Y; 4470 params[2] = ctx->Scissor.Width; 4471 params[3] = ctx->Scissor.Height; 4472 break; 4473 case GL_SCISSOR_TEST: 4474 params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled); 4475 break; 4476 case GL_SELECTION_BUFFER_SIZE: 4477 params[0] = ctx->Select.BufferSize; 4478 break; 4479 case GL_SHADE_MODEL: 4480 params[0] = ENUM_TO_INT(ctx->Light.ShadeModel); 4481 break; 4482 case GL_SHARED_TEXTURE_PALETTE_EXT: 4483 params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette); 4484 break; 4485 case GL_STENCIL_BITS: 4486 params[0] = ctx->DrawBuffer->Visual.stencilBits; 4487 break; 4488 case GL_STENCIL_CLEAR_VALUE: 4489 params[0] = ctx->Stencil.Clear; 4490 break; 4491 case GL_STENCIL_FAIL: 4492 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); 4493 break; 4494 case GL_STENCIL_FUNC: 4495 params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); 4496 break; 4497 case GL_STENCIL_PASS_DEPTH_FAIL: 4498 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); 4499 break; 4500 case GL_STENCIL_PASS_DEPTH_PASS: 4501 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); 4502 break; 4503 case GL_STENCIL_REF: 4504 params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace]; 4505 break; 4506 case GL_STENCIL_TEST: 4507 params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled); 4508 break; 4509 case GL_STENCIL_VALUE_MASK: 4510 params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]; 4511 break; 4512 case GL_STENCIL_WRITEMASK: 4513 params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]; 4514 break; 4515 case GL_STEREO: 4516 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode); 4517 break; 4518 case GL_SUBPIXEL_BITS: 4519 params[0] = ctx->Const.SubPixelBits; 4520 break; 4521 case GL_TEXTURE_1D: 4522 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D)); 4523 break; 4524 case GL_TEXTURE_2D: 4525 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D)); 4526 break; 4527 case GL_TEXTURE_3D: 4528 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D)); 4529 break; 4530 case GL_TEXTURE_1D_ARRAY_EXT: 4531 CHECK_EXT1(MESA_texture_array, "GetIntegerv"); 4532 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)); 4533 break; 4534 case GL_TEXTURE_2D_ARRAY_EXT: 4535 CHECK_EXT1(MESA_texture_array, "GetIntegerv"); 4536 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)); 4537 break; 4538 case GL_TEXTURE_BINDING_1D: 4539 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name; 4540 break; 4541 case GL_TEXTURE_BINDING_2D: 4542 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name; 4543 break; 4544 case GL_TEXTURE_BINDING_3D: 4545 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name; 4546 break; 4547 case GL_TEXTURE_BINDING_1D_ARRAY_EXT: 4548 CHECK_EXT1(MESA_texture_array, "GetIntegerv"); 4549 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name; 4550 break; 4551 case GL_TEXTURE_BINDING_2D_ARRAY_EXT: 4552 CHECK_EXT1(MESA_texture_array, "GetIntegerv"); 4553 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name; 4554 break; 4555 case GL_TEXTURE_GEN_S: 4556 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)); 4557 break; 4558 case GL_TEXTURE_GEN_T: 4559 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0)); 4560 break; 4561 case GL_TEXTURE_GEN_R: 4562 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0)); 4563 break; 4564 case GL_TEXTURE_GEN_Q: 4565 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0)); 4566 break; 4567 case GL_TEXTURE_MATRIX: 4568 { 4569 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 4570 params[0] = IROUND(matrix[0]); 4571 params[1] = IROUND(matrix[1]); 4572 params[2] = IROUND(matrix[2]); 4573 params[3] = IROUND(matrix[3]); 4574 params[4] = IROUND(matrix[4]); 4575 params[5] = IROUND(matrix[5]); 4576 params[6] = IROUND(matrix[6]); 4577 params[7] = IROUND(matrix[7]); 4578 params[8] = IROUND(matrix[8]); 4579 params[9] = IROUND(matrix[9]); 4580 params[10] = IROUND(matrix[10]); 4581 params[11] = IROUND(matrix[11]); 4582 params[12] = IROUND(matrix[12]); 4583 params[13] = IROUND(matrix[13]); 4584 params[14] = IROUND(matrix[14]); 4585 params[15] = IROUND(matrix[15]); 4586 } 4587 break; 4588 case GL_TEXTURE_STACK_DEPTH: 4589 params[0] = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1; 4590 break; 4591 case GL_UNPACK_ALIGNMENT: 4592 params[0] = ctx->Unpack.Alignment; 4593 break; 4594 case GL_UNPACK_LSB_FIRST: 4595 params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst); 4596 break; 4597 case GL_UNPACK_ROW_LENGTH: 4598 params[0] = ctx->Unpack.RowLength; 4599 break; 4600 case GL_UNPACK_SKIP_PIXELS: 4601 params[0] = ctx->Unpack.SkipPixels; 4602 break; 4603 case GL_UNPACK_SKIP_ROWS: 4604 params[0] = ctx->Unpack.SkipRows; 4605 break; 4606 case GL_UNPACK_SWAP_BYTES: 4607 params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes); 4608 break; 4609 case GL_UNPACK_SKIP_IMAGES_EXT: 4610 params[0] = ctx->Unpack.SkipImages; 4611 break; 4612 case GL_UNPACK_IMAGE_HEIGHT_EXT: 4613 params[0] = ctx->Unpack.ImageHeight; 4614 break; 4615 case GL_UNPACK_CLIENT_STORAGE_APPLE: 4616 params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage); 4617 break; 4618 case GL_VIEWPORT: 4619 params[0] = ctx->Viewport.X; 4620 params[1] = ctx->Viewport.Y; 4621 params[2] = ctx->Viewport.Width; 4622 params[3] = ctx->Viewport.Height; 4623 break; 4624 case GL_ZOOM_X: 4625 params[0] = IROUND(ctx->Pixel.ZoomX); 4626 break; 4627 case GL_ZOOM_Y: 4628 params[0] = IROUND(ctx->Pixel.ZoomY); 4629 break; 4630 case GL_VERTEX_ARRAY: 4631 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled); 4632 break; 4633 case GL_VERTEX_ARRAY_SIZE: 4634 params[0] = ctx->Array.ArrayObj->Vertex.Size; 4635 break; 4636 case GL_VERTEX_ARRAY_TYPE: 4637 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type); 4638 break; 4639 case GL_VERTEX_ARRAY_STRIDE: 4640 params[0] = ctx->Array.ArrayObj->Vertex.Stride; 4641 break; 4642 case GL_VERTEX_ARRAY_COUNT_EXT: 4643 params[0] = 0; 4644 break; 4645 case GL_NORMAL_ARRAY: 4646 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled); 4647 break; 4648 case GL_NORMAL_ARRAY_TYPE: 4649 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type); 4650 break; 4651 case GL_NORMAL_ARRAY_STRIDE: 4652 params[0] = ctx->Array.ArrayObj->Normal.Stride; 4653 break; 4654 case GL_NORMAL_ARRAY_COUNT_EXT: 4655 params[0] = 0; 4656 break; 4657 case GL_COLOR_ARRAY: 4658 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled); 4659 break; 4660 case GL_COLOR_ARRAY_SIZE: 4661 params[0] = ctx->Array.ArrayObj->Color.Size; 4662 break; 4663 case GL_COLOR_ARRAY_TYPE: 4664 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type); 4665 break; 4666 case GL_COLOR_ARRAY_STRIDE: 4667 params[0] = ctx->Array.ArrayObj->Color.Stride; 4668 break; 4669 case GL_COLOR_ARRAY_COUNT_EXT: 4670 params[0] = 0; 4671 break; 4672 case GL_INDEX_ARRAY: 4673 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled); 4674 break; 4675 case GL_INDEX_ARRAY_TYPE: 4676 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type); 4677 break; 4678 case GL_INDEX_ARRAY_STRIDE: 4679 params[0] = ctx->Array.ArrayObj->Index.Stride; 4680 break; 4681 case GL_INDEX_ARRAY_COUNT_EXT: 4682 params[0] = 0; 4683 break; 4684 case GL_TEXTURE_COORD_ARRAY: 4685 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled); 4686 break; 4687 case GL_TEXTURE_COORD_ARRAY_SIZE: 4688 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size; 4689 break; 4690 case GL_TEXTURE_COORD_ARRAY_TYPE: 4691 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type); 4692 break; 4693 case GL_TEXTURE_COORD_ARRAY_STRIDE: 4694 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride; 4695 break; 4696 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: 4697 params[0] = 0; 4698 break; 4699 case GL_EDGE_FLAG_ARRAY: 4700 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled); 4701 break; 4702 case GL_EDGE_FLAG_ARRAY_STRIDE: 4703 params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride; 4704 break; 4705 case GL_EDGE_FLAG_ARRAY_COUNT_EXT: 4706 params[0] = 0; 4707 break; 4708 case GL_MAX_TEXTURE_UNITS_ARB: 4709 CHECK_EXT1(ARB_multitexture, "GetIntegerv"); 4710 params[0] = ctx->Const.MaxTextureUnits; 4711 break; 4712 case GL_ACTIVE_TEXTURE_ARB: 4713 CHECK_EXT1(ARB_multitexture, "GetIntegerv"); 4714 params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit; 4715 break; 4716 case GL_CLIENT_ACTIVE_TEXTURE_ARB: 4717 CHECK_EXT1(ARB_multitexture, "GetIntegerv"); 4718 params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture; 4719 break; 4720 case GL_TEXTURE_CUBE_MAP_ARB: 4721 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv"); 4722 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)); 4723 break; 4724 case GL_TEXTURE_BINDING_CUBE_MAP_ARB: 4725 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv"); 4726 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name; 4727 break; 4728 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 4729 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv"); 4730 params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1)); 4731 break; 4732 case GL_TEXTURE_COMPRESSION_HINT_ARB: 4733 params[0] = ctx->Hint.TextureCompression; 4734 break; 4735 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: 4736 params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE); 4737 break; 4738 case GL_COMPRESSED_TEXTURE_FORMATS_ARB: 4739 { 4740 GLint formats[100]; 4741 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE); 4742 ASSERT(n <= 100); 4743 for (i = 0; i < n; i++) 4744 params[i] = ENUM_TO_INT(formats[i]); 4745 } 4746 break; 4747 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: 4748 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv"); 4749 params[0] = ctx->Array.LockFirst; 4750 break; 4751 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: 4752 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv"); 4753 params[0] = ctx->Array.LockCount; 4754 break; 4755 case GL_TRANSPOSE_COLOR_MATRIX_ARB: 4756 { 4757 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 4758 params[0] = IROUND(matrix[0]); 4759 params[1] = IROUND(matrix[4]); 4760 params[2] = IROUND(matrix[8]); 4761 params[3] = IROUND(matrix[12]); 4762 params[4] = IROUND(matrix[1]); 4763 params[5] = IROUND(matrix[5]); 4764 params[6] = IROUND(matrix[9]); 4765 params[7] = IROUND(matrix[13]); 4766 params[8] = IROUND(matrix[2]); 4767 params[9] = IROUND(matrix[6]); 4768 params[10] = IROUND(matrix[10]); 4769 params[11] = IROUND(matrix[14]); 4770 params[12] = IROUND(matrix[3]); 4771 params[13] = IROUND(matrix[7]); 4772 params[14] = IROUND(matrix[11]); 4773 params[15] = IROUND(matrix[15]); 4774 } 4775 break; 4776 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: 4777 { 4778 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 4779 params[0] = IROUND(matrix[0]); 4780 params[1] = IROUND(matrix[4]); 4781 params[2] = IROUND(matrix[8]); 4782 params[3] = IROUND(matrix[12]); 4783 params[4] = IROUND(matrix[1]); 4784 params[5] = IROUND(matrix[5]); 4785 params[6] = IROUND(matrix[9]); 4786 params[7] = IROUND(matrix[13]); 4787 params[8] = IROUND(matrix[2]); 4788 params[9] = IROUND(matrix[6]); 4789 params[10] = IROUND(matrix[10]); 4790 params[11] = IROUND(matrix[14]); 4791 params[12] = IROUND(matrix[3]); 4792 params[13] = IROUND(matrix[7]); 4793 params[14] = IROUND(matrix[11]); 4794 params[15] = IROUND(matrix[15]); 4795 } 4796 break; 4797 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: 4798 { 4799 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 4800 params[0] = IROUND(matrix[0]); 4801 params[1] = IROUND(matrix[4]); 4802 params[2] = IROUND(matrix[8]); 4803 params[3] = IROUND(matrix[12]); 4804 params[4] = IROUND(matrix[1]); 4805 params[5] = IROUND(matrix[5]); 4806 params[6] = IROUND(matrix[9]); 4807 params[7] = IROUND(matrix[13]); 4808 params[8] = IROUND(matrix[2]); 4809 params[9] = IROUND(matrix[6]); 4810 params[10] = IROUND(matrix[10]); 4811 params[11] = IROUND(matrix[14]); 4812 params[12] = IROUND(matrix[3]); 4813 params[13] = IROUND(matrix[7]); 4814 params[14] = IROUND(matrix[11]); 4815 params[15] = IROUND(matrix[15]); 4816 } 4817 break; 4818 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: 4819 { 4820 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 4821 params[0] = IROUND(matrix[0]); 4822 params[1] = IROUND(matrix[4]); 4823 params[2] = IROUND(matrix[8]); 4824 params[3] = IROUND(matrix[12]); 4825 params[4] = IROUND(matrix[1]); 4826 params[5] = IROUND(matrix[5]); 4827 params[6] = IROUND(matrix[9]); 4828 params[7] = IROUND(matrix[13]); 4829 params[8] = IROUND(matrix[2]); 4830 params[9] = IROUND(matrix[6]); 4831 params[10] = IROUND(matrix[10]); 4832 params[11] = IROUND(matrix[14]); 4833 params[12] = IROUND(matrix[3]); 4834 params[13] = IROUND(matrix[7]); 4835 params[14] = IROUND(matrix[11]); 4836 params[15] = IROUND(matrix[15]); 4837 } 4838 break; 4839 case GL_COLOR_MATRIX_SGI: 4840 { 4841 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 4842 params[0] = IROUND(matrix[0]); 4843 params[1] = IROUND(matrix[1]); 4844 params[2] = IROUND(matrix[2]); 4845 params[3] = IROUND(matrix[3]); 4846 params[4] = IROUND(matrix[4]); 4847 params[5] = IROUND(matrix[5]); 4848 params[6] = IROUND(matrix[6]); 4849 params[7] = IROUND(matrix[7]); 4850 params[8] = IROUND(matrix[8]); 4851 params[9] = IROUND(matrix[9]); 4852 params[10] = IROUND(matrix[10]); 4853 params[11] = IROUND(matrix[11]); 4854 params[12] = IROUND(matrix[12]); 4855 params[13] = IROUND(matrix[13]); 4856 params[14] = IROUND(matrix[14]); 4857 params[15] = IROUND(matrix[15]); 4858 } 4859 break; 4860 case GL_COLOR_MATRIX_STACK_DEPTH_SGI: 4861 params[0] = ctx->ColorMatrixStack.Depth + 1; 4862 break; 4863 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: 4864 params[0] = MAX_COLOR_STACK_DEPTH; 4865 break; 4866 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: 4867 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]); 4868 break; 4869 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: 4870 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]); 4871 break; 4872 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: 4873 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]); 4874 break; 4875 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: 4876 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]); 4877 break; 4878 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: 4879 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]); 4880 break; 4881 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: 4882 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]); 4883 break; 4884 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: 4885 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]); 4886 break; 4887 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: 4888 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]); 4889 break; 4890 case GL_CONVOLUTION_1D_EXT: 4891 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4892 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled); 4893 break; 4894 case GL_CONVOLUTION_2D_EXT: 4895 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4896 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled); 4897 break; 4898 case GL_SEPARABLE_2D_EXT: 4899 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4900 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled); 4901 break; 4902 case GL_POST_CONVOLUTION_RED_SCALE_EXT: 4903 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4904 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]); 4905 break; 4906 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: 4907 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4908 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]); 4909 break; 4910 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: 4911 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4912 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]); 4913 break; 4914 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: 4915 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4916 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]); 4917 break; 4918 case GL_POST_CONVOLUTION_RED_BIAS_EXT: 4919 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4920 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]); 4921 break; 4922 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: 4923 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4924 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]); 4925 break; 4926 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: 4927 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4928 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]); 4929 break; 4930 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: 4931 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4932 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]); 4933 break; 4934 case GL_HISTOGRAM: 4935 CHECK_EXT1(EXT_histogram, "GetIntegerv"); 4936 params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled); 4937 break; 4938 case GL_MINMAX: 4939 CHECK_EXT1(EXT_histogram, "GetIntegerv"); 4940 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled); 4941 break; 4942 case GL_COLOR_TABLE_SGI: 4943 CHECK_EXT1(SGI_color_table, "GetIntegerv"); 4944 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]); 4945 break; 4946 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: 4947 CHECK_EXT1(SGI_color_table, "GetIntegerv"); 4948 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]); 4949 break; 4950 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: 4951 CHECK_EXT1(SGI_color_table, "GetIntegerv"); 4952 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]); 4953 break; 4954 case GL_TEXTURE_COLOR_TABLE_SGI: 4955 CHECK_EXT1(SGI_texture_color_table, "GetIntegerv"); 4956 params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled); 4957 break; 4958 case GL_COLOR_SUM_EXT: 4959 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv"); 4960 params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled); 4961 break; 4962 case GL_CURRENT_SECONDARY_COLOR_EXT: 4963 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 4964 { 4965 FLUSH_CURRENT(ctx, 0); 4966 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]); 4967 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]); 4968 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]); 4969 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]); 4970 } 4971 break; 4972 case GL_SECONDARY_COLOR_ARRAY_EXT: 4973 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 4974 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled); 4975 break; 4976 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: 4977 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 4978 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type); 4979 break; 4980 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: 4981 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 4982 params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride; 4983 break; 4984 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: 4985 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 4986 params[0] = ctx->Array.ArrayObj->SecondaryColor.Size; 4987 break; 4988 case GL_CURRENT_FOG_COORDINATE_EXT: 4989 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 4990 { 4991 FLUSH_CURRENT(ctx, 0); 4992 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]); 4993 } 4994 break; 4995 case GL_FOG_COORDINATE_ARRAY_EXT: 4996 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 4997 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled); 4998 break; 4999 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: 5000 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 5001 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type); 5002 break; 5003 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: 5004 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 5005 params[0] = ctx->Array.ArrayObj->FogCoord.Stride; 5006 break; 5007 case GL_FOG_COORDINATE_SOURCE_EXT: 5008 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 5009 params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource); 5010 break; 5011 case GL_MAX_TEXTURE_LOD_BIAS_EXT: 5012 CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv"); 5013 params[0] = IROUND(ctx->Const.MaxTextureLodBias); 5014 break; 5015 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 5016 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv"); 5017 params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy); 5018 break; 5019 case GL_MULTISAMPLE_ARB: 5020 params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled); 5021 break; 5022 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: 5023 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage); 5024 break; 5025 case GL_SAMPLE_ALPHA_TO_ONE_ARB: 5026 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne); 5027 break; 5028 case GL_SAMPLE_COVERAGE_ARB: 5029 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage); 5030 break; 5031 case GL_SAMPLE_COVERAGE_VALUE_ARB: 5032 params[0] = IROUND(ctx->Multisample.SampleCoverageValue); 5033 break; 5034 case GL_SAMPLE_COVERAGE_INVERT_ARB: 5035 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert); 5036 break; 5037 case GL_SAMPLE_BUFFERS_ARB: 5038 params[0] = ctx->DrawBuffer->Visual.sampleBuffers; 5039 break; 5040 case GL_SAMPLES_ARB: 5041 params[0] = ctx->DrawBuffer->Visual.samples; 5042 break; 5043 case GL_RASTER_POSITION_UNCLIPPED_IBM: 5044 CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv"); 5045 params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped); 5046 break; 5047 case GL_POINT_SPRITE_NV: 5048 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv"); 5049 params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite); 5050 break; 5051 case GL_POINT_SPRITE_R_MODE_NV: 5052 CHECK_EXT1(NV_point_sprite, "GetIntegerv"); 5053 params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode); 5054 break; 5055 case GL_POINT_SPRITE_COORD_ORIGIN: 5056 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv"); 5057 params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin); 5058 break; 5059 case GL_GENERATE_MIPMAP_HINT_SGIS: 5060 CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv"); 5061 params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap); 5062 break; 5063 case GL_VERTEX_PROGRAM_BINDING_NV: 5064 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5065 params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0); 5066 break; 5067 case GL_VERTEX_ATTRIB_ARRAY0_NV: 5068 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5069 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled); 5070 break; 5071 case GL_VERTEX_ATTRIB_ARRAY1_NV: 5072 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5073 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled); 5074 break; 5075 case GL_VERTEX_ATTRIB_ARRAY2_NV: 5076 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5077 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled); 5078 break; 5079 case GL_VERTEX_ATTRIB_ARRAY3_NV: 5080 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5081 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled); 5082 break; 5083 case GL_VERTEX_ATTRIB_ARRAY4_NV: 5084 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5085 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled); 5086 break; 5087 case GL_VERTEX_ATTRIB_ARRAY5_NV: 5088 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5089 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled); 5090 break; 5091 case GL_VERTEX_ATTRIB_ARRAY6_NV: 5092 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5093 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled); 5094 break; 5095 case GL_VERTEX_ATTRIB_ARRAY7_NV: 5096 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5097 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled); 5098 break; 5099 case GL_VERTEX_ATTRIB_ARRAY8_NV: 5100 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5101 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled); 5102 break; 5103 case GL_VERTEX_ATTRIB_ARRAY9_NV: 5104 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5105 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled); 5106 break; 5107 case GL_VERTEX_ATTRIB_ARRAY10_NV: 5108 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5109 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled); 5110 break; 5111 case GL_VERTEX_ATTRIB_ARRAY11_NV: 5112 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5113 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled); 5114 break; 5115 case GL_VERTEX_ATTRIB_ARRAY12_NV: 5116 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5117 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled); 5118 break; 5119 case GL_VERTEX_ATTRIB_ARRAY13_NV: 5120 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5121 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled); 5122 break; 5123 case GL_VERTEX_ATTRIB_ARRAY14_NV: 5124 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5125 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled); 5126 break; 5127 case GL_VERTEX_ATTRIB_ARRAY15_NV: 5128 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5129 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled); 5130 break; 5131 case GL_MAP1_VERTEX_ATTRIB0_4_NV: 5132 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5133 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]); 5134 break; 5135 case GL_MAP1_VERTEX_ATTRIB1_4_NV: 5136 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5137 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]); 5138 break; 5139 case GL_MAP1_VERTEX_ATTRIB2_4_NV: 5140 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5141 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]); 5142 break; 5143 case GL_MAP1_VERTEX_ATTRIB3_4_NV: 5144 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5145 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]); 5146 break; 5147 case GL_MAP1_VERTEX_ATTRIB4_4_NV: 5148 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5149 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]); 5150 break; 5151 case GL_MAP1_VERTEX_ATTRIB5_4_NV: 5152 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5153 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]); 5154 break; 5155 case GL_MAP1_VERTEX_ATTRIB6_4_NV: 5156 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5157 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]); 5158 break; 5159 case GL_MAP1_VERTEX_ATTRIB7_4_NV: 5160 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5161 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]); 5162 break; 5163 case GL_MAP1_VERTEX_ATTRIB8_4_NV: 5164 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5165 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]); 5166 break; 5167 case GL_MAP1_VERTEX_ATTRIB9_4_NV: 5168 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5169 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]); 5170 break; 5171 case GL_MAP1_VERTEX_ATTRIB10_4_NV: 5172 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5173 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]); 5174 break; 5175 case GL_MAP1_VERTEX_ATTRIB11_4_NV: 5176 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5177 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]); 5178 break; 5179 case GL_MAP1_VERTEX_ATTRIB12_4_NV: 5180 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5181 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]); 5182 break; 5183 case GL_MAP1_VERTEX_ATTRIB13_4_NV: 5184 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5185 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]); 5186 break; 5187 case GL_MAP1_VERTEX_ATTRIB14_4_NV: 5188 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5189 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]); 5190 break; 5191 case GL_MAP1_VERTEX_ATTRIB15_4_NV: 5192 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5193 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]); 5194 break; 5195 case GL_FRAGMENT_PROGRAM_NV: 5196 CHECK_EXT1(NV_fragment_program, "GetIntegerv"); 5197 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled); 5198 break; 5199 case GL_FRAGMENT_PROGRAM_BINDING_NV: 5200 CHECK_EXT1(NV_fragment_program, "GetIntegerv"); 5201 params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0; 5202 break; 5203 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV: 5204 CHECK_EXT1(NV_fragment_program, "GetIntegerv"); 5205 params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS; 5206 break; 5207 case GL_TEXTURE_RECTANGLE_NV: 5208 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv"); 5209 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV)); 5210 break; 5211 case GL_TEXTURE_BINDING_RECTANGLE_NV: 5212 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv"); 5213 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name; 5214 break; 5215 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: 5216 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv"); 5217 params[0] = ctx->Const.MaxTextureRectSize; 5218 break; 5219 case GL_STENCIL_TEST_TWO_SIDE_EXT: 5220 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv"); 5221 params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide); 5222 break; 5223 case GL_ACTIVE_STENCIL_FACE_EXT: 5224 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv"); 5225 params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); 5226 break; 5227 case GL_MAX_SHININESS_NV: 5228 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv"); 5229 params[0] = IROUND(ctx->Const.MaxShininess); 5230 break; 5231 case GL_MAX_SPOT_EXPONENT_NV: 5232 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv"); 5233 params[0] = IROUND(ctx->Const.MaxSpotExponent); 5234 break; 5235 case GL_ARRAY_BUFFER_BINDING_ARB: 5236 params[0] = ctx->Array.ArrayBufferObj->Name; 5237 break; 5238 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB: 5239 params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name; 5240 break; 5241 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB: 5242 params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name; 5243 break; 5244 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB: 5245 params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name; 5246 break; 5247 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB: 5248 params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name; 5249 break; 5250 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: 5251 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name; 5252 break; 5253 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: 5254 params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name; 5255 break; 5256 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: 5257 params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name; 5258 break; 5259 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: 5260 params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name; 5261 break; 5262 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB: 5263 params[0] = ctx->Array.ElementArrayBufferObj->Name; 5264 break; 5265 case GL_PIXEL_PACK_BUFFER_BINDING_EXT: 5266 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv"); 5267 params[0] = ctx->Pack.BufferObj->Name; 5268 break; 5269 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT: 5270 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv"); 5271 params[0] = ctx->Unpack.BufferObj->Name; 5272 break; 5273 case GL_VERTEX_PROGRAM_ARB: 5274 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv"); 5275 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled); 5276 break; 5277 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB: 5278 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv"); 5279 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled); 5280 break; 5281 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB: 5282 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv"); 5283 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled); 5284 break; 5285 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 5286 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv"); 5287 params[0] = ctx->Const.MaxProgramMatrixStackDepth; 5288 break; 5289 case GL_MAX_PROGRAM_MATRICES_ARB: 5290 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv"); 5291 params[0] = ctx->Const.MaxProgramMatrices; 5292 break; 5293 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB: 5294 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv"); 5295 params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1); 5296 break; 5297 case GL_CURRENT_MATRIX_ARB: 5298 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv"); 5299 { 5300 const GLfloat *matrix = ctx->CurrentStack->Top->m; 5301 params[0] = IROUND(matrix[0]); 5302 params[1] = IROUND(matrix[1]); 5303 params[2] = IROUND(matrix[2]); 5304 params[3] = IROUND(matrix[3]); 5305 params[4] = IROUND(matrix[4]); 5306 params[5] = IROUND(matrix[5]); 5307 params[6] = IROUND(matrix[6]); 5308 params[7] = IROUND(matrix[7]); 5309 params[8] = IROUND(matrix[8]); 5310 params[9] = IROUND(matrix[9]); 5311 params[10] = IROUND(matrix[10]); 5312 params[11] = IROUND(matrix[11]); 5313 params[12] = IROUND(matrix[12]); 5314 params[13] = IROUND(matrix[13]); 5315 params[14] = IROUND(matrix[14]); 5316 params[15] = IROUND(matrix[15]); 5317 } 5318 break; 5319 case GL_TRANSPOSE_CURRENT_MATRIX_ARB: 5320 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv"); 5321 { 5322 const GLfloat *matrix = ctx->CurrentStack->Top->m; 5323 params[0] = IROUND(matrix[0]); 5324 params[1] = IROUND(matrix[4]); 5325 params[2] = IROUND(matrix[8]); 5326 params[3] = IROUND(matrix[12]); 5327 params[4] = IROUND(matrix[1]); 5328 params[5] = IROUND(matrix[5]); 5329 params[6] = IROUND(matrix[9]); 5330 params[7] = IROUND(matrix[13]); 5331 params[8] = IROUND(matrix[2]); 5332 params[9] = IROUND(matrix[6]); 5333 params[10] = IROUND(matrix[10]); 5334 params[11] = IROUND(matrix[14]); 5335 params[12] = IROUND(matrix[3]); 5336 params[13] = IROUND(matrix[7]); 5337 params[14] = IROUND(matrix[11]); 5338 params[15] = IROUND(matrix[15]); 5339 } 5340 break; 5341 case GL_MAX_VERTEX_ATTRIBS_ARB: 5342 CHECK_EXT1(ARB_vertex_program, "GetIntegerv"); 5343 params[0] = ctx->Const.VertexProgram.MaxAttribs; 5344 break; 5345 case GL_PROGRAM_ERROR_POSITION_ARB: 5346 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv"); 5347 params[0] = ctx->Program.ErrorPos; 5348 break; 5349 case GL_FRAGMENT_PROGRAM_ARB: 5350 CHECK_EXT1(ARB_fragment_program, "GetIntegerv"); 5351 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled); 5352 break; 5353 case GL_MAX_TEXTURE_COORDS_ARB: 5354 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv"); 5355 params[0] = ctx->Const.MaxTextureCoordUnits; 5356 break; 5357 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 5358 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv"); 5359 params[0] = ctx->Const.MaxTextureImageUnits; 5360 break; 5361 case GL_DEPTH_BOUNDS_TEST_EXT: 5362 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv"); 5363 params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest); 5364 break; 5365 case GL_DEPTH_BOUNDS_EXT: 5366 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv"); 5367 params[0] = IROUND(ctx->Depth.BoundsMin); 5368 params[1] = IROUND(ctx->Depth.BoundsMax); 5369 break; 5370 case GL_FRAGMENT_PROGRAM_CALLBACK_MESA: 5371 CHECK_EXT1(MESA_program_debug, "GetIntegerv"); 5372 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.CallbackEnabled); 5373 break; 5374 case GL_VERTEX_PROGRAM_CALLBACK_MESA: 5375 CHECK_EXT1(MESA_program_debug, "GetIntegerv"); 5376 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.CallbackEnabled); 5377 break; 5378 case GL_FRAGMENT_PROGRAM_POSITION_MESA: 5379 CHECK_EXT1(MESA_program_debug, "GetIntegerv"); 5380 params[0] = ctx->FragmentProgram.CurrentPosition; 5381 break; 5382 case GL_VERTEX_PROGRAM_POSITION_MESA: 5383 CHECK_EXT1(MESA_program_debug, "GetIntegerv"); 5384 params[0] = ctx->VertexProgram.CurrentPosition; 5385 break; 5386 case GL_MAX_DRAW_BUFFERS_ARB: 5387 params[0] = ctx->Const.MaxDrawBuffers; 5388 break; 5389 case GL_DRAW_BUFFER0_ARB: 5390 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]); 5391 break; 5392 case GL_DRAW_BUFFER1_ARB: 5393 { 5394 GLenum buffer; 5395 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 5396 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 5397 return; 5398 } 5399 buffer = ctx->DrawBuffer->ColorDrawBuffer[1]; 5400 params[0] = ENUM_TO_INT(buffer); 5401 } 5402 break; 5403 case GL_DRAW_BUFFER2_ARB: 5404 { 5405 GLenum buffer; 5406 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 5407 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 5408 return; 5409 } 5410 buffer = ctx->DrawBuffer->ColorDrawBuffer[2]; 5411 params[0] = ENUM_TO_INT(buffer); 5412 } 5413 break; 5414 case GL_DRAW_BUFFER3_ARB: 5415 { 5416 GLenum buffer; 5417 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 5418 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 5419 return; 5420 } 5421 buffer = ctx->DrawBuffer->ColorDrawBuffer[3]; 5422 params[0] = ENUM_TO_INT(buffer); 5423 } 5424 break; 5425 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: 5426 CHECK_EXT1(OES_read_format, "GetIntegerv"); 5427 params[0] = ctx->Const.ColorReadType; 5428 break; 5429 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: 5430 CHECK_EXT1(OES_read_format, "GetIntegerv"); 5431 params[0] = ctx->Const.ColorReadFormat; 5432 break; 5433 case GL_NUM_FRAGMENT_REGISTERS_ATI: 5434 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5435 params[0] = 6; 5436 break; 5437 case GL_NUM_FRAGMENT_CONSTANTS_ATI: 5438 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5439 params[0] = 8; 5440 break; 5441 case GL_NUM_PASSES_ATI: 5442 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5443 params[0] = 2; 5444 break; 5445 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI: 5446 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5447 params[0] = 8; 5448 break; 5449 case GL_NUM_INSTRUCTIONS_TOTAL_ATI: 5450 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5451 params[0] = 16; 5452 break; 5453 case GL_COLOR_ALPHA_PAIRING_ATI: 5454 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5455 params[0] = BOOLEAN_TO_INT(GL_TRUE); 5456 break; 5457 case GL_NUM_LOOPBACK_COMPONENTS_ATI: 5458 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5459 params[0] = 3; 5460 break; 5461 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI: 5462 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5463 params[0] = 3; 5464 break; 5465 case GL_STENCIL_BACK_FUNC: 5466 params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]); 5467 break; 5468 case GL_STENCIL_BACK_VALUE_MASK: 5469 params[0] = ctx->Stencil.ValueMask[1]; 5470 break; 5471 case GL_STENCIL_BACK_WRITEMASK: 5472 params[0] = ctx->Stencil.WriteMask[1]; 5473 break; 5474 case GL_STENCIL_BACK_REF: 5475 params[0] = ctx->Stencil.Ref[1]; 5476 break; 5477 case GL_STENCIL_BACK_FAIL: 5478 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]); 5479 break; 5480 case GL_STENCIL_BACK_PASS_DEPTH_FAIL: 5481 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]); 5482 break; 5483 case GL_STENCIL_BACK_PASS_DEPTH_PASS: 5484 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]); 5485 break; 5486 case GL_FRAMEBUFFER_BINDING_EXT: 5487 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); 5488 params[0] = ctx->DrawBuffer->Name; 5489 break; 5490 case GL_RENDERBUFFER_BINDING_EXT: 5491 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); 5492 params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0; 5493 break; 5494 case GL_MAX_COLOR_ATTACHMENTS_EXT: 5495 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); 5496 params[0] = ctx->Const.MaxColorAttachments; 5497 break; 5498 case GL_MAX_RENDERBUFFER_SIZE_EXT: 5499 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); 5500 params[0] = ctx->Const.MaxRenderbufferSize; 5501 break; 5502 case GL_READ_FRAMEBUFFER_BINDING_EXT: 5503 CHECK_EXT1(EXT_framebuffer_blit, "GetIntegerv"); 5504 params[0] = ctx->ReadBuffer->Name; 5505 break; 5506 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: 5507 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv"); 5508 params[0] = ctx->Const.FragmentProgram.MaxUniformComponents; 5509 break; 5510 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: 5511 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv"); 5512 params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative); 5513 break; 5514 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: 5515 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); 5516 params[0] = ctx->Const.VertexProgram.MaxUniformComponents; 5517 break; 5518 case GL_MAX_VARYING_FLOATS_ARB: 5519 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); 5520 params[0] = ctx->Const.MaxVarying * 4; 5521 break; 5522 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 5523 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); 5524 params[0] = ctx->Const.MaxVertexTextureImageUnits; 5525 break; 5526 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: 5527 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); 5528 params[0] = MAX_COMBINED_TEXTURE_IMAGE_UNITS; 5529 break; 5530 case GL_CURRENT_PROGRAM: 5531 CHECK_EXT1(ARB_shader_objects, "GetIntegerv"); 5532 params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0; 5533 break; 5534 case GL_MAX_SAMPLES: 5535 CHECK_EXT1(ARB_framebuffer_object, "GetIntegerv"); 5536 params[0] = ctx->Const.MaxSamples; 5537 break; 5538 default: 5539 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname); 5540 } 5541} 5542 5543 5544void GLAPIENTRY 5545_mesa_GetDoublev( GLenum pname, GLdouble *params ) 5546{ 5547 const GLfloat magic = -1234.5F; 5548 GLfloat values[16]; 5549 GLuint i; 5550 5551 if (!params) 5552 return; 5553 5554 /* Init temp array to magic numbers so we can figure out how many values 5555 * are returned by the GetFloatv() call. 5556 */ 5557 for (i = 0; i < 16; i++) 5558 values[i] = magic; 5559 5560 _mesa_GetFloatv(pname, values); 5561 5562 for (i = 0; i < 16 && values[i] != magic; i++) 5563 params[i] = (GLdouble) values[i]; 5564} 5565 5566