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