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