get.c revision 8f6f1124634cf659dde4c75549b84e35505d892d
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#include "framebuffer.h" 17 18 19#define FLOAT_TO_BOOLEAN(X) ( (X) ? GL_TRUE : GL_FALSE ) 20 21#define INT_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE ) 22 23#define INT64_TO_BOOLEAN(I) ( (I) ? GL_TRUE : GL_FALSE ) 24#define INT64_TO_INT(I) ( (GLint)((I > INT_MAX) ? INT_MAX : ((I < INT_MIN) ? INT_MIN : (I))) ) 25 26#define BOOLEAN_TO_INT(B) ( (GLint) (B) ) 27#define BOOLEAN_TO_INT64(B) ( (GLint64) (B) ) 28#define BOOLEAN_TO_FLOAT(B) ( (B) ? 1.0F : 0.0F ) 29 30#define ENUM_TO_INT64(E) ( (GLint64) (E) ) 31 32 33/* 34 * Check if named extension is enabled, if not generate error and return. 35 */ 36#define CHECK_EXT1(EXT1, FUNC) \ 37 if (!ctx->Extensions.EXT1) { \ 38 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \ 39 return; \ 40 } 41 42/* 43 * Check if either of two extensions is enabled. 44 */ 45#define CHECK_EXT2(EXT1, EXT2, FUNC) \ 46 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) { \ 47 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \ 48 return; \ 49 } 50 51/* 52 * Check if either of three extensions is enabled. 53 */ 54#define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC) \ 55 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \ 56 !ctx->Extensions.EXT3) { \ 57 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \ 58 return; \ 59 } 60 61/* 62 * Check if either of four extensions is enabled. 63 */ 64#define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC) \ 65 if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 && \ 66 !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) { \ 67 _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname); \ 68 return; \ 69 } 70 71 72void GLAPIENTRY 73_mesa_GetBooleanv( GLenum pname, GLboolean *params ) 74{ 75 GET_CURRENT_CONTEXT(ctx); 76 ASSERT_OUTSIDE_BEGIN_END(ctx); 77 78 if (!params) 79 return; 80 81 if (ctx->NewState) 82 _mesa_update_state(ctx); 83 84 if (ctx->Driver.GetBooleanv && 85 ctx->Driver.GetBooleanv(ctx, pname, params)) 86 return; 87 88 switch (pname) { 89 case GL_ACCUM_RED_BITS: 90 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits); 91 break; 92 case GL_ACCUM_GREEN_BITS: 93 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits); 94 break; 95 case GL_ACCUM_BLUE_BITS: 96 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits); 97 break; 98 case GL_ACCUM_ALPHA_BITS: 99 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits); 100 break; 101 case GL_ACCUM_CLEAR_VALUE: 102 params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]); 103 params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]); 104 params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]); 105 params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]); 106 break; 107 case GL_ALPHA_BIAS: 108 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias); 109 break; 110 case GL_ALPHA_BITS: 111 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits); 112 break; 113 case GL_ALPHA_SCALE: 114 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale); 115 break; 116 case GL_ALPHA_TEST: 117 params[0] = ctx->Color.AlphaEnabled; 118 break; 119 case GL_ALPHA_TEST_FUNC: 120 params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc); 121 break; 122 case GL_ALPHA_TEST_REF: 123 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef); 124 break; 125 case GL_ATTRIB_STACK_DEPTH: 126 params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth); 127 break; 128 case GL_AUTO_NORMAL: 129 params[0] = ctx->Eval.AutoNormal; 130 break; 131 case GL_AUX_BUFFERS: 132 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers); 133 break; 134 case GL_BLEND: 135 params[0] = (ctx->Color.BlendEnabled & 1); 136 break; 137 case GL_BLEND_DST: 138 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB); 139 break; 140 case GL_BLEND_SRC: 141 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB); 142 break; 143 case GL_BLEND_SRC_RGB_EXT: 144 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB); 145 break; 146 case GL_BLEND_DST_RGB_EXT: 147 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB); 148 break; 149 case GL_BLEND_SRC_ALPHA_EXT: 150 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA); 151 break; 152 case GL_BLEND_DST_ALPHA_EXT: 153 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA); 154 break; 155 case GL_BLEND_EQUATION: 156 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB ); 157 break; 158 case GL_BLEND_EQUATION_ALPHA_EXT: 159 params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA ); 160 break; 161 case GL_BLEND_COLOR_EXT: 162 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]); 163 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]); 164 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]); 165 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]); 166 break; 167 case GL_BLUE_BIAS: 168 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias); 169 break; 170 case GL_BLUE_BITS: 171 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits); 172 break; 173 case GL_BLUE_SCALE: 174 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale); 175 break; 176 case GL_CLIENT_ATTRIB_STACK_DEPTH: 177 params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth); 178 break; 179 case GL_CLIP_PLANE0: 180 params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1; 181 break; 182 case GL_CLIP_PLANE1: 183 params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1; 184 break; 185 case GL_CLIP_PLANE2: 186 params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1; 187 break; 188 case GL_CLIP_PLANE3: 189 params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1; 190 break; 191 case GL_CLIP_PLANE4: 192 params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1; 193 break; 194 case GL_CLIP_PLANE5: 195 params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1; 196 break; 197 case GL_COLOR_CLEAR_VALUE: 198 params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]); 199 params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]); 200 params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]); 201 params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]); 202 break; 203 case GL_COLOR_MATERIAL: 204 params[0] = ctx->Light.ColorMaterialEnabled; 205 break; 206 case GL_COLOR_MATERIAL_FACE: 207 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace); 208 break; 209 case GL_COLOR_MATERIAL_PARAMETER: 210 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode); 211 break; 212 case GL_COLOR_WRITEMASK: 213 params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0); 214 params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0); 215 params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0); 216 params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0); 217 break; 218 case GL_CULL_FACE: 219 params[0] = ctx->Polygon.CullFlag; 220 break; 221 case GL_CULL_FACE_MODE: 222 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode); 223 break; 224 case GL_CURRENT_COLOR: 225 { 226 FLUSH_CURRENT(ctx, 0); 227 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]); 228 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]); 229 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]); 230 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]); 231 } 232 break; 233 case GL_CURRENT_INDEX: 234 { 235 FLUSH_CURRENT(ctx, 0); 236 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]); 237 } 238 break; 239 case GL_CURRENT_NORMAL: 240 { 241 FLUSH_CURRENT(ctx, 0); 242 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]); 243 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]); 244 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]); 245 } 246 break; 247 case GL_CURRENT_RASTER_COLOR: 248 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]); 249 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]); 250 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]); 251 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]); 252 break; 253 case GL_CURRENT_RASTER_DISTANCE: 254 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance); 255 break; 256 case GL_CURRENT_RASTER_INDEX: 257 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterIndex); 258 break; 259 case GL_CURRENT_RASTER_POSITION: 260 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]); 261 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]); 262 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]); 263 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]); 264 break; 265 case GL_CURRENT_RASTER_SECONDARY_COLOR: 266 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]); 267 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]); 268 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]); 269 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]); 270 break; 271 case GL_CURRENT_RASTER_TEXTURE_COORDS: 272 { 273 const GLuint texUnit = ctx->Texture.CurrentUnit; 274 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][0]); 275 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][1]); 276 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][2]); 277 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[texUnit][3]); 278 } 279 break; 280 case GL_CURRENT_RASTER_POSITION_VALID: 281 params[0] = ctx->Current.RasterPosValid; 282 break; 283 case GL_CURRENT_TEXTURE_COORDS: 284 { 285 const GLuint texUnit = ctx->Texture.CurrentUnit; 286 FLUSH_CURRENT(ctx, 0); 287 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]); 288 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]); 289 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]); 290 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]); 291 } 292 break; 293 case GL_DEPTH_BIAS: 294 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias); 295 break; 296 case GL_DEPTH_BITS: 297 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits); 298 break; 299 case GL_DEPTH_CLEAR_VALUE: 300 params[0] = FLOAT_TO_BOOLEAN(((GLfloat) ctx->Depth.Clear)); 301 break; 302 case GL_DEPTH_FUNC: 303 params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func); 304 break; 305 case GL_DEPTH_RANGE: 306 params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near); 307 params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far); 308 break; 309 case GL_DEPTH_SCALE: 310 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale); 311 break; 312 case GL_DEPTH_TEST: 313 params[0] = ctx->Depth.Test; 314 break; 315 case GL_DEPTH_WRITEMASK: 316 params[0] = ctx->Depth.Mask; 317 break; 318 case GL_DITHER: 319 params[0] = ctx->Color.DitherFlag; 320 break; 321 case GL_DOUBLEBUFFER: 322 params[0] = ctx->DrawBuffer->Visual.doubleBufferMode; 323 break; 324 case GL_DRAW_BUFFER: 325 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]); 326 break; 327 case GL_EDGE_FLAG: 328 { 329 FLUSH_CURRENT(ctx, 0); 330 params[0] = (ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0); 331 } 332 break; 333 case GL_FEEDBACK_BUFFER_SIZE: 334 params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize); 335 break; 336 case GL_FEEDBACK_BUFFER_TYPE: 337 params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type); 338 break; 339 case GL_FOG: 340 params[0] = ctx->Fog.Enabled; 341 break; 342 case GL_FOG_COLOR: 343 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]); 344 params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]); 345 params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]); 346 params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]); 347 break; 348 case GL_FOG_DENSITY: 349 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density); 350 break; 351 case GL_FOG_END: 352 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End); 353 break; 354 case GL_FOG_HINT: 355 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog); 356 break; 357 case GL_FOG_INDEX: 358 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index); 359 break; 360 case GL_FOG_MODE: 361 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode); 362 break; 363 case GL_FOG_START: 364 params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start); 365 break; 366 case GL_FRONT_FACE: 367 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace); 368 break; 369 case GL_GREEN_BIAS: 370 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias); 371 break; 372 case GL_GREEN_BITS: 373 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits); 374 break; 375 case GL_GREEN_SCALE: 376 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale); 377 break; 378 case GL_INDEX_BITS: 379 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits); 380 break; 381 case GL_INDEX_CLEAR_VALUE: 382 params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex); 383 break; 384 case GL_INDEX_MODE: 385 params[0] = !ctx->DrawBuffer->Visual.rgbMode; 386 break; 387 case GL_INDEX_OFFSET: 388 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset); 389 break; 390 case GL_INDEX_SHIFT: 391 params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift); 392 break; 393 case GL_INDEX_WRITEMASK: 394 params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask); 395 break; 396 case GL_LIGHT0: 397 params[0] = ctx->Light.Light[0].Enabled; 398 break; 399 case GL_LIGHT1: 400 params[0] = ctx->Light.Light[1].Enabled; 401 break; 402 case GL_LIGHT2: 403 params[0] = ctx->Light.Light[2].Enabled; 404 break; 405 case GL_LIGHT3: 406 params[0] = ctx->Light.Light[3].Enabled; 407 break; 408 case GL_LIGHT4: 409 params[0] = ctx->Light.Light[4].Enabled; 410 break; 411 case GL_LIGHT5: 412 params[0] = ctx->Light.Light[5].Enabled; 413 break; 414 case GL_LIGHT6: 415 params[0] = ctx->Light.Light[6].Enabled; 416 break; 417 case GL_LIGHT7: 418 params[0] = ctx->Light.Light[7].Enabled; 419 break; 420 case GL_LIGHTING: 421 params[0] = ctx->Light.Enabled; 422 break; 423 case GL_LIGHT_MODEL_AMBIENT: 424 params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]); 425 params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]); 426 params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]); 427 params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]); 428 break; 429 case GL_LIGHT_MODEL_COLOR_CONTROL: 430 params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl); 431 break; 432 case GL_LIGHT_MODEL_LOCAL_VIEWER: 433 params[0] = ctx->Light.Model.LocalViewer; 434 break; 435 case GL_LIGHT_MODEL_TWO_SIDE: 436 params[0] = ctx->Light.Model.TwoSide; 437 break; 438 case GL_LINE_SMOOTH: 439 params[0] = ctx->Line.SmoothFlag; 440 break; 441 case GL_LINE_SMOOTH_HINT: 442 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth); 443 break; 444 case GL_LINE_STIPPLE: 445 params[0] = ctx->Line.StippleFlag; 446 break; 447 case GL_LINE_STIPPLE_PATTERN: 448 params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern); 449 break; 450 case GL_LINE_STIPPLE_REPEAT: 451 params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor); 452 break; 453 case GL_LINE_WIDTH: 454 params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width); 455 break; 456 case GL_LINE_WIDTH_GRANULARITY: 457 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity); 458 break; 459 case GL_LINE_WIDTH_RANGE: 460 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA); 461 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA); 462 break; 463 case GL_ALIASED_LINE_WIDTH_RANGE: 464 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth); 465 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth); 466 break; 467 case GL_LIST_BASE: 468 params[0] = INT_TO_BOOLEAN(ctx->List.ListBase); 469 break; 470 case GL_LIST_INDEX: 471 params[0] = INT_TO_BOOLEAN((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0)); 472 break; 473 case GL_LIST_MODE: 474 { 475 GLenum mode; 476 if (!ctx->CompileFlag) 477 mode = 0; 478 else if (ctx->ExecuteFlag) 479 mode = GL_COMPILE_AND_EXECUTE; 480 else 481 mode = GL_COMPILE; 482 params[0] = ENUM_TO_BOOLEAN(mode); 483 } 484 break; 485 case GL_INDEX_LOGIC_OP: 486 params[0] = ctx->Color.IndexLogicOpEnabled; 487 break; 488 case GL_COLOR_LOGIC_OP: 489 params[0] = ctx->Color.ColorLogicOpEnabled; 490 break; 491 case GL_LOGIC_OP_MODE: 492 params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp); 493 break; 494 case GL_MAP1_COLOR_4: 495 params[0] = ctx->Eval.Map1Color4; 496 break; 497 case GL_MAP1_GRID_DOMAIN: 498 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1); 499 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2); 500 break; 501 case GL_MAP1_GRID_SEGMENTS: 502 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un); 503 break; 504 case GL_MAP1_INDEX: 505 params[0] = ctx->Eval.Map1Index; 506 break; 507 case GL_MAP1_NORMAL: 508 params[0] = ctx->Eval.Map1Normal; 509 break; 510 case GL_MAP1_TEXTURE_COORD_1: 511 params[0] = ctx->Eval.Map1TextureCoord1; 512 break; 513 case GL_MAP1_TEXTURE_COORD_2: 514 params[0] = ctx->Eval.Map1TextureCoord2; 515 break; 516 case GL_MAP1_TEXTURE_COORD_3: 517 params[0] = ctx->Eval.Map1TextureCoord3; 518 break; 519 case GL_MAP1_TEXTURE_COORD_4: 520 params[0] = ctx->Eval.Map1TextureCoord4; 521 break; 522 case GL_MAP1_VERTEX_3: 523 params[0] = ctx->Eval.Map1Vertex3; 524 break; 525 case GL_MAP1_VERTEX_4: 526 params[0] = ctx->Eval.Map1Vertex4; 527 break; 528 case GL_MAP2_COLOR_4: 529 params[0] = ctx->Eval.Map2Color4; 530 break; 531 case GL_MAP2_GRID_DOMAIN: 532 params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1); 533 params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2); 534 params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1); 535 params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2); 536 break; 537 case GL_MAP2_GRID_SEGMENTS: 538 params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un); 539 params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn); 540 break; 541 case GL_MAP2_INDEX: 542 params[0] = ctx->Eval.Map2Index; 543 break; 544 case GL_MAP2_NORMAL: 545 params[0] = ctx->Eval.Map2Normal; 546 break; 547 case GL_MAP2_TEXTURE_COORD_1: 548 params[0] = ctx->Eval.Map2TextureCoord1; 549 break; 550 case GL_MAP2_TEXTURE_COORD_2: 551 params[0] = ctx->Eval.Map2TextureCoord2; 552 break; 553 case GL_MAP2_TEXTURE_COORD_3: 554 params[0] = ctx->Eval.Map2TextureCoord3; 555 break; 556 case GL_MAP2_TEXTURE_COORD_4: 557 params[0] = ctx->Eval.Map2TextureCoord4; 558 break; 559 case GL_MAP2_VERTEX_3: 560 params[0] = ctx->Eval.Map2Vertex3; 561 break; 562 case GL_MAP2_VERTEX_4: 563 params[0] = ctx->Eval.Map2Vertex4; 564 break; 565 case GL_MAP_COLOR: 566 params[0] = ctx->Pixel.MapColorFlag; 567 break; 568 case GL_MAP_STENCIL: 569 params[0] = ctx->Pixel.MapStencilFlag; 570 break; 571 case GL_MATRIX_MODE: 572 params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode); 573 break; 574 case GL_MAX_ATTRIB_STACK_DEPTH: 575 params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH); 576 break; 577 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: 578 params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH); 579 break; 580 case GL_MAX_CLIP_PLANES: 581 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes); 582 break; 583 case GL_MAX_ELEMENTS_VERTICES: 584 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize); 585 break; 586 case GL_MAX_ELEMENTS_INDICES: 587 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize); 588 break; 589 case GL_MAX_EVAL_ORDER: 590 params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER); 591 break; 592 case GL_MAX_LIGHTS: 593 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights); 594 break; 595 case GL_MAX_LIST_NESTING: 596 params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING); 597 break; 598 case GL_MAX_MODELVIEW_STACK_DEPTH: 599 params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH); 600 break; 601 case GL_MAX_NAME_STACK_DEPTH: 602 params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH); 603 break; 604 case GL_MAX_PIXEL_MAP_TABLE: 605 params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE); 606 break; 607 case GL_MAX_PROJECTION_STACK_DEPTH: 608 params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH); 609 break; 610 case GL_MAX_TEXTURE_SIZE: 611 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1)); 612 break; 613 case GL_MAX_3D_TEXTURE_SIZE: 614 params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1)); 615 break; 616 case GL_MAX_TEXTURE_STACK_DEPTH: 617 params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH); 618 break; 619 case GL_MAX_VIEWPORT_DIMS: 620 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth); 621 params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight); 622 break; 623 case GL_MODELVIEW_MATRIX: 624 { 625 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 626 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 627 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 628 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 629 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 630 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 631 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 632 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 633 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 634 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 635 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 636 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 637 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 638 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 639 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 640 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 641 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 642 } 643 break; 644 case GL_MODELVIEW_STACK_DEPTH: 645 params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1); 646 break; 647 case GL_NAME_STACK_DEPTH: 648 params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth); 649 break; 650 case GL_NORMALIZE: 651 params[0] = ctx->Transform.Normalize; 652 break; 653 case GL_PACK_ALIGNMENT: 654 params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment); 655 break; 656 case GL_PACK_LSB_FIRST: 657 params[0] = ctx->Pack.LsbFirst; 658 break; 659 case GL_PACK_ROW_LENGTH: 660 params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength); 661 break; 662 case GL_PACK_SKIP_PIXELS: 663 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels); 664 break; 665 case GL_PACK_SKIP_ROWS: 666 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows); 667 break; 668 case GL_PACK_SWAP_BYTES: 669 params[0] = ctx->Pack.SwapBytes; 670 break; 671 case GL_PACK_SKIP_IMAGES_EXT: 672 params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages); 673 break; 674 case GL_PACK_IMAGE_HEIGHT_EXT: 675 params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight); 676 break; 677 case GL_PACK_INVERT_MESA: 678 params[0] = ctx->Pack.Invert; 679 break; 680 case GL_PERSPECTIVE_CORRECTION_HINT: 681 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection); 682 break; 683 case GL_PIXEL_MAP_A_TO_A_SIZE: 684 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.AtoA.Size); 685 break; 686 case GL_PIXEL_MAP_B_TO_B_SIZE: 687 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.BtoB.Size); 688 break; 689 case GL_PIXEL_MAP_G_TO_G_SIZE: 690 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.GtoG.Size); 691 break; 692 case GL_PIXEL_MAP_I_TO_A_SIZE: 693 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoA.Size); 694 break; 695 case GL_PIXEL_MAP_I_TO_B_SIZE: 696 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoB.Size); 697 break; 698 case GL_PIXEL_MAP_I_TO_G_SIZE: 699 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoG.Size); 700 break; 701 case GL_PIXEL_MAP_I_TO_I_SIZE: 702 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoI.Size); 703 break; 704 case GL_PIXEL_MAP_I_TO_R_SIZE: 705 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoR.Size); 706 break; 707 case GL_PIXEL_MAP_R_TO_R_SIZE: 708 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.RtoR.Size); 709 break; 710 case GL_PIXEL_MAP_S_TO_S_SIZE: 711 params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.StoS.Size); 712 break; 713 case GL_POINT_SIZE: 714 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size); 715 break; 716 case GL_POINT_SIZE_GRANULARITY: 717 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity); 718 break; 719 case GL_POINT_SIZE_RANGE: 720 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA); 721 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA); 722 break; 723 case GL_ALIASED_POINT_SIZE_RANGE: 724 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize); 725 params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize); 726 break; 727 case GL_POINT_SMOOTH: 728 params[0] = ctx->Point.SmoothFlag; 729 break; 730 case GL_POINT_SMOOTH_HINT: 731 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth); 732 break; 733 case GL_POINT_SIZE_MIN_EXT: 734 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize); 735 break; 736 case GL_POINT_SIZE_MAX_EXT: 737 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize); 738 break; 739 case GL_POINT_FADE_THRESHOLD_SIZE_EXT: 740 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold); 741 break; 742 case GL_DISTANCE_ATTENUATION_EXT: 743 params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]); 744 params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]); 745 params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]); 746 break; 747 case GL_POLYGON_MODE: 748 params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode); 749 params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode); 750 break; 751 case GL_POLYGON_OFFSET_BIAS_EXT: 752 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits); 753 break; 754 case GL_POLYGON_OFFSET_FACTOR: 755 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor ); 756 break; 757 case GL_POLYGON_OFFSET_UNITS: 758 params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits ); 759 break; 760 case GL_POLYGON_OFFSET_POINT: 761 params[0] = ctx->Polygon.OffsetPoint; 762 break; 763 case GL_POLYGON_OFFSET_LINE: 764 params[0] = ctx->Polygon.OffsetLine; 765 break; 766 case GL_POLYGON_OFFSET_FILL: 767 params[0] = ctx->Polygon.OffsetFill; 768 break; 769 case GL_POLYGON_SMOOTH: 770 params[0] = ctx->Polygon.SmoothFlag; 771 break; 772 case GL_POLYGON_SMOOTH_HINT: 773 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth); 774 break; 775 case GL_POLYGON_STIPPLE: 776 params[0] = ctx->Polygon.StippleFlag; 777 break; 778 case GL_PROJECTION_MATRIX: 779 { 780 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 781 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 782 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 783 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 784 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 785 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 786 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 787 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 788 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 789 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 790 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 791 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 792 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 793 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 794 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 795 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 796 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 797 } 798 break; 799 case GL_PROJECTION_STACK_DEPTH: 800 params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1); 801 break; 802 case GL_READ_BUFFER: 803 params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer); 804 break; 805 case GL_RED_BIAS: 806 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias); 807 break; 808 case GL_RED_BITS: 809 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.redBits); 810 break; 811 case GL_RED_SCALE: 812 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale); 813 break; 814 case GL_RENDER_MODE: 815 params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode); 816 break; 817 case GL_RESCALE_NORMAL: 818 params[0] = ctx->Transform.RescaleNormals; 819 break; 820 case GL_RGBA_MODE: 821 params[0] = ctx->DrawBuffer->Visual.rgbMode; 822 break; 823 case GL_SCISSOR_BOX: 824 params[0] = INT_TO_BOOLEAN(ctx->Scissor.X); 825 params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y); 826 params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width); 827 params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height); 828 break; 829 case GL_SCISSOR_TEST: 830 params[0] = ctx->Scissor.Enabled; 831 break; 832 case GL_SELECTION_BUFFER_SIZE: 833 params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize); 834 break; 835 case GL_SHADE_MODEL: 836 params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel); 837 break; 838 case GL_SHARED_TEXTURE_PALETTE_EXT: 839 params[0] = ctx->Texture.SharedPalette; 840 break; 841 case GL_STENCIL_BITS: 842 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits); 843 break; 844 case GL_STENCIL_CLEAR_VALUE: 845 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear); 846 break; 847 case GL_STENCIL_FAIL: 848 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); 849 break; 850 case GL_STENCIL_FUNC: 851 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); 852 break; 853 case GL_STENCIL_PASS_DEPTH_FAIL: 854 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); 855 break; 856 case GL_STENCIL_PASS_DEPTH_PASS: 857 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); 858 break; 859 case GL_STENCIL_REF: 860 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]); 861 break; 862 case GL_STENCIL_TEST: 863 params[0] = ctx->Stencil.Enabled; 864 break; 865 case GL_STENCIL_VALUE_MASK: 866 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]); 867 break; 868 case GL_STENCIL_WRITEMASK: 869 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]); 870 break; 871 case GL_STEREO: 872 params[0] = ctx->DrawBuffer->Visual.stereoMode; 873 break; 874 case GL_SUBPIXEL_BITS: 875 params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits); 876 break; 877 case GL_TEXTURE_1D: 878 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D); 879 break; 880 case GL_TEXTURE_2D: 881 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D); 882 break; 883 case GL_TEXTURE_3D: 884 params[0] = _mesa_IsEnabled(GL_TEXTURE_3D); 885 break; 886 case GL_TEXTURE_1D_ARRAY_EXT: 887 CHECK_EXT1(MESA_texture_array, "GetBooleanv"); 888 params[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT); 889 break; 890 case GL_TEXTURE_2D_ARRAY_EXT: 891 CHECK_EXT1(MESA_texture_array, "GetBooleanv"); 892 params[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT); 893 break; 894 case GL_TEXTURE_BINDING_1D: 895 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name); 896 break; 897 case GL_TEXTURE_BINDING_2D: 898 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name); 899 break; 900 case GL_TEXTURE_BINDING_3D: 901 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name); 902 break; 903 case GL_TEXTURE_BINDING_1D_ARRAY_EXT: 904 CHECK_EXT1(MESA_texture_array, "GetBooleanv"); 905 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name); 906 break; 907 case GL_TEXTURE_BINDING_2D_ARRAY_EXT: 908 CHECK_EXT1(MESA_texture_array, "GetBooleanv"); 909 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name); 910 break; 911 case GL_TEXTURE_GEN_S: 912 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0); 913 break; 914 case GL_TEXTURE_GEN_T: 915 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0); 916 break; 917 case GL_TEXTURE_GEN_R: 918 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0); 919 break; 920 case GL_TEXTURE_GEN_Q: 921 params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0); 922 break; 923 case GL_TEXTURE_MATRIX: 924 { 925 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 926 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 927 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 928 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 929 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 930 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 931 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 932 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 933 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 934 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 935 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 936 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 937 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 938 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 939 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 940 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 941 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 942 } 943 break; 944 case GL_TEXTURE_STACK_DEPTH: 945 params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1); 946 break; 947 case GL_UNPACK_ALIGNMENT: 948 params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment); 949 break; 950 case GL_UNPACK_LSB_FIRST: 951 params[0] = ctx->Unpack.LsbFirst; 952 break; 953 case GL_UNPACK_ROW_LENGTH: 954 params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength); 955 break; 956 case GL_UNPACK_SKIP_PIXELS: 957 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels); 958 break; 959 case GL_UNPACK_SKIP_ROWS: 960 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows); 961 break; 962 case GL_UNPACK_SWAP_BYTES: 963 params[0] = ctx->Unpack.SwapBytes; 964 break; 965 case GL_UNPACK_SKIP_IMAGES_EXT: 966 params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages); 967 break; 968 case GL_UNPACK_IMAGE_HEIGHT_EXT: 969 params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight); 970 break; 971 case GL_UNPACK_CLIENT_STORAGE_APPLE: 972 params[0] = ctx->Unpack.ClientStorage; 973 break; 974 case GL_VIEWPORT: 975 params[0] = INT_TO_BOOLEAN(ctx->Viewport.X); 976 params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y); 977 params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width); 978 params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height); 979 break; 980 case GL_ZOOM_X: 981 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX); 982 break; 983 case GL_ZOOM_Y: 984 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY); 985 break; 986 case GL_VERTEX_ARRAY: 987 params[0] = ctx->Array.ArrayObj->Vertex.Enabled; 988 break; 989 case GL_VERTEX_ARRAY_SIZE: 990 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size); 991 break; 992 case GL_VERTEX_ARRAY_TYPE: 993 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type); 994 break; 995 case GL_VERTEX_ARRAY_STRIDE: 996 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride); 997 break; 998 case GL_VERTEX_ARRAY_COUNT_EXT: 999 params[0] = INT_TO_BOOLEAN(0); 1000 break; 1001 case GL_NORMAL_ARRAY: 1002 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled); 1003 break; 1004 case GL_NORMAL_ARRAY_TYPE: 1005 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type); 1006 break; 1007 case GL_NORMAL_ARRAY_STRIDE: 1008 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride); 1009 break; 1010 case GL_NORMAL_ARRAY_COUNT_EXT: 1011 params[0] = INT_TO_BOOLEAN(0); 1012 break; 1013 case GL_COLOR_ARRAY: 1014 params[0] = ctx->Array.ArrayObj->Color.Enabled; 1015 break; 1016 case GL_COLOR_ARRAY_SIZE: 1017 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size); 1018 break; 1019 case GL_COLOR_ARRAY_TYPE: 1020 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type); 1021 break; 1022 case GL_COLOR_ARRAY_STRIDE: 1023 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride); 1024 break; 1025 case GL_COLOR_ARRAY_COUNT_EXT: 1026 params[0] = INT_TO_BOOLEAN(0); 1027 break; 1028 case GL_INDEX_ARRAY: 1029 params[0] = ctx->Array.ArrayObj->Index.Enabled; 1030 break; 1031 case GL_INDEX_ARRAY_TYPE: 1032 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type); 1033 break; 1034 case GL_INDEX_ARRAY_STRIDE: 1035 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride); 1036 break; 1037 case GL_INDEX_ARRAY_COUNT_EXT: 1038 params[0] = INT_TO_BOOLEAN(0); 1039 break; 1040 case GL_TEXTURE_COORD_ARRAY: 1041 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled; 1042 break; 1043 case GL_TEXTURE_COORD_ARRAY_SIZE: 1044 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size); 1045 break; 1046 case GL_TEXTURE_COORD_ARRAY_TYPE: 1047 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type); 1048 break; 1049 case GL_TEXTURE_COORD_ARRAY_STRIDE: 1050 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride); 1051 break; 1052 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: 1053 params[0] = INT_TO_BOOLEAN(0); 1054 break; 1055 case GL_EDGE_FLAG_ARRAY: 1056 params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled; 1057 break; 1058 case GL_EDGE_FLAG_ARRAY_STRIDE: 1059 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride); 1060 break; 1061 case GL_EDGE_FLAG_ARRAY_COUNT_EXT: 1062 params[0] = INT_TO_BOOLEAN(0); 1063 break; 1064 case GL_MAX_TEXTURE_UNITS_ARB: 1065 CHECK_EXT1(ARB_multitexture, "GetBooleanv"); 1066 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits); 1067 break; 1068 case GL_ACTIVE_TEXTURE_ARB: 1069 CHECK_EXT1(ARB_multitexture, "GetBooleanv"); 1070 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit); 1071 break; 1072 case GL_CLIENT_ACTIVE_TEXTURE_ARB: 1073 CHECK_EXT1(ARB_multitexture, "GetBooleanv"); 1074 params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture); 1075 break; 1076 case GL_TEXTURE_CUBE_MAP_ARB: 1077 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv"); 1078 params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB); 1079 break; 1080 case GL_TEXTURE_BINDING_CUBE_MAP_ARB: 1081 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv"); 1082 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name); 1083 break; 1084 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 1085 CHECK_EXT1(ARB_texture_cube_map, "GetBooleanv"); 1086 params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1))); 1087 break; 1088 case GL_TEXTURE_COMPRESSION_HINT_ARB: 1089 params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression); 1090 break; 1091 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: 1092 params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)); 1093 break; 1094 case GL_COMPRESSED_TEXTURE_FORMATS_ARB: 1095 { 1096 GLint formats[100]; 1097 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE); 1098 ASSERT(n <= 100); 1099 for (i = 0; i < n; i++) 1100 params[i] = ENUM_TO_BOOLEAN(formats[i]); 1101 } 1102 break; 1103 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: 1104 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv"); 1105 params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst); 1106 break; 1107 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: 1108 CHECK_EXT1(EXT_compiled_vertex_array, "GetBooleanv"); 1109 params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount); 1110 break; 1111 case GL_TRANSPOSE_COLOR_MATRIX_ARB: 1112 { 1113 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 1114 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1115 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1116 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1117 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1118 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1119 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1120 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1121 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1122 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1123 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1124 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1125 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1126 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1127 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1128 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1129 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1130 } 1131 break; 1132 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: 1133 { 1134 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 1135 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1136 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1137 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1138 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1139 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1140 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1141 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1142 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1143 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1144 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1145 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1146 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1147 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1148 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1149 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1150 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1151 } 1152 break; 1153 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: 1154 { 1155 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 1156 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1157 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1158 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1159 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1160 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1161 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1162 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1163 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1164 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1165 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1166 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1167 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1168 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1169 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1170 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1171 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1172 } 1173 break; 1174 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: 1175 { 1176 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 1177 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1178 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1179 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1180 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1181 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1182 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1183 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1184 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1185 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1186 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1187 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1188 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1189 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1190 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1191 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1192 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1193 } 1194 break; 1195 case GL_COLOR_MATRIX_SGI: 1196 { 1197 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 1198 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1199 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 1200 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 1201 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 1202 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 1203 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1204 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 1205 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 1206 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 1207 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 1208 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1209 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 1210 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 1211 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 1212 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 1213 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1214 } 1215 break; 1216 case GL_COLOR_MATRIX_STACK_DEPTH_SGI: 1217 params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1); 1218 break; 1219 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: 1220 params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH); 1221 break; 1222 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: 1223 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]); 1224 break; 1225 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: 1226 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]); 1227 break; 1228 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: 1229 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]); 1230 break; 1231 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: 1232 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]); 1233 break; 1234 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: 1235 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]); 1236 break; 1237 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: 1238 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]); 1239 break; 1240 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: 1241 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]); 1242 break; 1243 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: 1244 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]); 1245 break; 1246 case GL_CONVOLUTION_1D_EXT: 1247 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1248 params[0] = ctx->Pixel.Convolution1DEnabled; 1249 break; 1250 case GL_CONVOLUTION_2D_EXT: 1251 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1252 params[0] = ctx->Pixel.Convolution2DEnabled; 1253 break; 1254 case GL_SEPARABLE_2D_EXT: 1255 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1256 params[0] = ctx->Pixel.Separable2DEnabled; 1257 break; 1258 case GL_POST_CONVOLUTION_RED_SCALE_EXT: 1259 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1260 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]); 1261 break; 1262 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: 1263 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1264 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]); 1265 break; 1266 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: 1267 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1268 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]); 1269 break; 1270 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: 1271 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1272 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]); 1273 break; 1274 case GL_POST_CONVOLUTION_RED_BIAS_EXT: 1275 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1276 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]); 1277 break; 1278 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: 1279 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1280 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]); 1281 break; 1282 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: 1283 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1284 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]); 1285 break; 1286 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: 1287 CHECK_EXT1(EXT_convolution, "GetBooleanv"); 1288 params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]); 1289 break; 1290 case GL_HISTOGRAM: 1291 CHECK_EXT1(EXT_histogram, "GetBooleanv"); 1292 params[0] = ctx->Pixel.HistogramEnabled; 1293 break; 1294 case GL_MINMAX: 1295 CHECK_EXT1(EXT_histogram, "GetBooleanv"); 1296 params[0] = ctx->Pixel.MinMaxEnabled; 1297 break; 1298 case GL_COLOR_TABLE_SGI: 1299 CHECK_EXT1(SGI_color_table, "GetBooleanv"); 1300 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]; 1301 break; 1302 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: 1303 CHECK_EXT1(SGI_color_table, "GetBooleanv"); 1304 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]; 1305 break; 1306 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: 1307 CHECK_EXT1(SGI_color_table, "GetBooleanv"); 1308 params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]; 1309 break; 1310 case GL_TEXTURE_COLOR_TABLE_SGI: 1311 CHECK_EXT1(SGI_texture_color_table, "GetBooleanv"); 1312 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled; 1313 break; 1314 case GL_COLOR_SUM_EXT: 1315 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetBooleanv"); 1316 params[0] = ctx->Fog.ColorSumEnabled; 1317 break; 1318 case GL_CURRENT_SECONDARY_COLOR_EXT: 1319 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1320 { 1321 FLUSH_CURRENT(ctx, 0); 1322 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]); 1323 params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]); 1324 params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]); 1325 params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]); 1326 } 1327 break; 1328 case GL_SECONDARY_COLOR_ARRAY_EXT: 1329 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1330 params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled; 1331 break; 1332 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: 1333 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1334 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type); 1335 break; 1336 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: 1337 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1338 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride); 1339 break; 1340 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: 1341 CHECK_EXT1(EXT_secondary_color, "GetBooleanv"); 1342 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size); 1343 break; 1344 case GL_CURRENT_FOG_COORDINATE_EXT: 1345 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1346 { 1347 FLUSH_CURRENT(ctx, 0); 1348 params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]); 1349 } 1350 break; 1351 case GL_FOG_COORDINATE_ARRAY_EXT: 1352 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1353 params[0] = ctx->Array.ArrayObj->FogCoord.Enabled; 1354 break; 1355 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: 1356 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1357 params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type); 1358 break; 1359 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: 1360 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1361 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride); 1362 break; 1363 case GL_FOG_COORDINATE_SOURCE_EXT: 1364 CHECK_EXT1(EXT_fog_coord, "GetBooleanv"); 1365 params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource); 1366 break; 1367 case GL_MAX_TEXTURE_LOD_BIAS_EXT: 1368 CHECK_EXT1(EXT_texture_lod_bias, "GetBooleanv"); 1369 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias); 1370 break; 1371 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 1372 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetBooleanv"); 1373 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy); 1374 break; 1375 case GL_MULTISAMPLE_ARB: 1376 params[0] = ctx->Multisample.Enabled; 1377 break; 1378 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: 1379 params[0] = ctx->Multisample.SampleAlphaToCoverage; 1380 break; 1381 case GL_SAMPLE_ALPHA_TO_ONE_ARB: 1382 params[0] = ctx->Multisample.SampleAlphaToOne; 1383 break; 1384 case GL_SAMPLE_COVERAGE_ARB: 1385 params[0] = ctx->Multisample.SampleCoverage; 1386 break; 1387 case GL_SAMPLE_COVERAGE_VALUE_ARB: 1388 params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue); 1389 break; 1390 case GL_SAMPLE_COVERAGE_INVERT_ARB: 1391 params[0] = ctx->Multisample.SampleCoverageInvert; 1392 break; 1393 case GL_SAMPLE_BUFFERS_ARB: 1394 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers); 1395 break; 1396 case GL_SAMPLES_ARB: 1397 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples); 1398 break; 1399 case GL_RASTER_POSITION_UNCLIPPED_IBM: 1400 CHECK_EXT1(IBM_rasterpos_clip, "GetBooleanv"); 1401 params[0] = ctx->Transform.RasterPositionUnclipped; 1402 break; 1403 case GL_POINT_SPRITE_NV: 1404 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv"); 1405 params[0] = ctx->Point.PointSprite; 1406 break; 1407 case GL_POINT_SPRITE_R_MODE_NV: 1408 CHECK_EXT1(NV_point_sprite, "GetBooleanv"); 1409 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode); 1410 break; 1411 case GL_POINT_SPRITE_COORD_ORIGIN: 1412 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetBooleanv"); 1413 params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin); 1414 break; 1415 case GL_GENERATE_MIPMAP_HINT_SGIS: 1416 CHECK_EXT1(SGIS_generate_mipmap, "GetBooleanv"); 1417 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap); 1418 break; 1419 case GL_VERTEX_PROGRAM_BINDING_NV: 1420 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1421 params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0)); 1422 break; 1423 case GL_VERTEX_ATTRIB_ARRAY0_NV: 1424 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1425 params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled; 1426 break; 1427 case GL_VERTEX_ATTRIB_ARRAY1_NV: 1428 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1429 params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled; 1430 break; 1431 case GL_VERTEX_ATTRIB_ARRAY2_NV: 1432 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1433 params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled; 1434 break; 1435 case GL_VERTEX_ATTRIB_ARRAY3_NV: 1436 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1437 params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled; 1438 break; 1439 case GL_VERTEX_ATTRIB_ARRAY4_NV: 1440 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1441 params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled; 1442 break; 1443 case GL_VERTEX_ATTRIB_ARRAY5_NV: 1444 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1445 params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled; 1446 break; 1447 case GL_VERTEX_ATTRIB_ARRAY6_NV: 1448 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1449 params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled; 1450 break; 1451 case GL_VERTEX_ATTRIB_ARRAY7_NV: 1452 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1453 params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled; 1454 break; 1455 case GL_VERTEX_ATTRIB_ARRAY8_NV: 1456 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1457 params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled; 1458 break; 1459 case GL_VERTEX_ATTRIB_ARRAY9_NV: 1460 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1461 params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled; 1462 break; 1463 case GL_VERTEX_ATTRIB_ARRAY10_NV: 1464 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1465 params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled; 1466 break; 1467 case GL_VERTEX_ATTRIB_ARRAY11_NV: 1468 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1469 params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled; 1470 break; 1471 case GL_VERTEX_ATTRIB_ARRAY12_NV: 1472 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1473 params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled; 1474 break; 1475 case GL_VERTEX_ATTRIB_ARRAY13_NV: 1476 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1477 params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled; 1478 break; 1479 case GL_VERTEX_ATTRIB_ARRAY14_NV: 1480 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1481 params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled; 1482 break; 1483 case GL_VERTEX_ATTRIB_ARRAY15_NV: 1484 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1485 params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled; 1486 break; 1487 case GL_MAP1_VERTEX_ATTRIB0_4_NV: 1488 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1489 params[0] = ctx->Eval.Map1Attrib[0]; 1490 break; 1491 case GL_MAP1_VERTEX_ATTRIB1_4_NV: 1492 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1493 params[0] = ctx->Eval.Map1Attrib[1]; 1494 break; 1495 case GL_MAP1_VERTEX_ATTRIB2_4_NV: 1496 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1497 params[0] = ctx->Eval.Map1Attrib[2]; 1498 break; 1499 case GL_MAP1_VERTEX_ATTRIB3_4_NV: 1500 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1501 params[0] = ctx->Eval.Map1Attrib[3]; 1502 break; 1503 case GL_MAP1_VERTEX_ATTRIB4_4_NV: 1504 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1505 params[0] = ctx->Eval.Map1Attrib[4]; 1506 break; 1507 case GL_MAP1_VERTEX_ATTRIB5_4_NV: 1508 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1509 params[0] = ctx->Eval.Map1Attrib[5]; 1510 break; 1511 case GL_MAP1_VERTEX_ATTRIB6_4_NV: 1512 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1513 params[0] = ctx->Eval.Map1Attrib[6]; 1514 break; 1515 case GL_MAP1_VERTEX_ATTRIB7_4_NV: 1516 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1517 params[0] = ctx->Eval.Map1Attrib[7]; 1518 break; 1519 case GL_MAP1_VERTEX_ATTRIB8_4_NV: 1520 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1521 params[0] = ctx->Eval.Map1Attrib[8]; 1522 break; 1523 case GL_MAP1_VERTEX_ATTRIB9_4_NV: 1524 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1525 params[0] = ctx->Eval.Map1Attrib[9]; 1526 break; 1527 case GL_MAP1_VERTEX_ATTRIB10_4_NV: 1528 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1529 params[0] = ctx->Eval.Map1Attrib[10]; 1530 break; 1531 case GL_MAP1_VERTEX_ATTRIB11_4_NV: 1532 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1533 params[0] = ctx->Eval.Map1Attrib[11]; 1534 break; 1535 case GL_MAP1_VERTEX_ATTRIB12_4_NV: 1536 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1537 params[0] = ctx->Eval.Map1Attrib[12]; 1538 break; 1539 case GL_MAP1_VERTEX_ATTRIB13_4_NV: 1540 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1541 params[0] = ctx->Eval.Map1Attrib[13]; 1542 break; 1543 case GL_MAP1_VERTEX_ATTRIB14_4_NV: 1544 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1545 params[0] = ctx->Eval.Map1Attrib[14]; 1546 break; 1547 case GL_MAP1_VERTEX_ATTRIB15_4_NV: 1548 CHECK_EXT1(NV_vertex_program, "GetBooleanv"); 1549 params[0] = ctx->Eval.Map1Attrib[15]; 1550 break; 1551 case GL_FRAGMENT_PROGRAM_NV: 1552 CHECK_EXT1(NV_fragment_program, "GetBooleanv"); 1553 params[0] = ctx->FragmentProgram.Enabled; 1554 break; 1555 case GL_FRAGMENT_PROGRAM_BINDING_NV: 1556 CHECK_EXT1(NV_fragment_program, "GetBooleanv"); 1557 params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0); 1558 break; 1559 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV: 1560 CHECK_EXT1(NV_fragment_program, "GetBooleanv"); 1561 params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS); 1562 break; 1563 case GL_TEXTURE_RECTANGLE_NV: 1564 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv"); 1565 params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV); 1566 break; 1567 case GL_TEXTURE_BINDING_RECTANGLE_NV: 1568 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv"); 1569 params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name); 1570 break; 1571 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: 1572 CHECK_EXT1(NV_texture_rectangle, "GetBooleanv"); 1573 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize); 1574 break; 1575 case GL_STENCIL_TEST_TWO_SIDE_EXT: 1576 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv"); 1577 params[0] = ctx->Stencil.TestTwoSide; 1578 break; 1579 case GL_ACTIVE_STENCIL_FACE_EXT: 1580 CHECK_EXT1(EXT_stencil_two_side, "GetBooleanv"); 1581 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); 1582 break; 1583 case GL_MAX_SHININESS_NV: 1584 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv"); 1585 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess); 1586 break; 1587 case GL_MAX_SPOT_EXPONENT_NV: 1588 CHECK_EXT1(NV_light_max_exponent, "GetBooleanv"); 1589 params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent); 1590 break; 1591 case GL_ARRAY_BUFFER_BINDING_ARB: 1592 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name); 1593 break; 1594 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB: 1595 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name); 1596 break; 1597 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB: 1598 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name); 1599 break; 1600 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB: 1601 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name); 1602 break; 1603 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB: 1604 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name); 1605 break; 1606 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: 1607 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name); 1608 break; 1609 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: 1610 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name); 1611 break; 1612 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: 1613 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name); 1614 break; 1615 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: 1616 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name); 1617 break; 1618 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB: 1619 params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name); 1620 break; 1621 case GL_PIXEL_PACK_BUFFER_BINDING_EXT: 1622 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv"); 1623 params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name); 1624 break; 1625 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT: 1626 CHECK_EXT1(EXT_pixel_buffer_object, "GetBooleanv"); 1627 params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name); 1628 break; 1629 case GL_VERTEX_PROGRAM_ARB: 1630 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv"); 1631 params[0] = ctx->VertexProgram.Enabled; 1632 break; 1633 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB: 1634 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv"); 1635 params[0] = ctx->VertexProgram.PointSizeEnabled; 1636 break; 1637 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB: 1638 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetBooleanv"); 1639 params[0] = ctx->VertexProgram.TwoSideEnabled; 1640 break; 1641 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 1642 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv"); 1643 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth); 1644 break; 1645 case GL_MAX_PROGRAM_MATRICES_ARB: 1646 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv"); 1647 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices); 1648 break; 1649 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB: 1650 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetBooleanv"); 1651 params[0] = ctx->CurrentStack->Depth + 1; 1652 break; 1653 case GL_CURRENT_MATRIX_ARB: 1654 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetBooleanv"); 1655 { 1656 const GLfloat *matrix = ctx->CurrentStack->Top->m; 1657 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1658 params[1] = FLOAT_TO_BOOLEAN(matrix[1]); 1659 params[2] = FLOAT_TO_BOOLEAN(matrix[2]); 1660 params[3] = FLOAT_TO_BOOLEAN(matrix[3]); 1661 params[4] = FLOAT_TO_BOOLEAN(matrix[4]); 1662 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1663 params[6] = FLOAT_TO_BOOLEAN(matrix[6]); 1664 params[7] = FLOAT_TO_BOOLEAN(matrix[7]); 1665 params[8] = FLOAT_TO_BOOLEAN(matrix[8]); 1666 params[9] = FLOAT_TO_BOOLEAN(matrix[9]); 1667 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1668 params[11] = FLOAT_TO_BOOLEAN(matrix[11]); 1669 params[12] = FLOAT_TO_BOOLEAN(matrix[12]); 1670 params[13] = FLOAT_TO_BOOLEAN(matrix[13]); 1671 params[14] = FLOAT_TO_BOOLEAN(matrix[14]); 1672 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1673 } 1674 break; 1675 case GL_TRANSPOSE_CURRENT_MATRIX_ARB: 1676 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetBooleanv"); 1677 { 1678 const GLfloat *matrix = ctx->CurrentStack->Top->m; 1679 params[0] = FLOAT_TO_BOOLEAN(matrix[0]); 1680 params[1] = FLOAT_TO_BOOLEAN(matrix[4]); 1681 params[2] = FLOAT_TO_BOOLEAN(matrix[8]); 1682 params[3] = FLOAT_TO_BOOLEAN(matrix[12]); 1683 params[4] = FLOAT_TO_BOOLEAN(matrix[1]); 1684 params[5] = FLOAT_TO_BOOLEAN(matrix[5]); 1685 params[6] = FLOAT_TO_BOOLEAN(matrix[9]); 1686 params[7] = FLOAT_TO_BOOLEAN(matrix[13]); 1687 params[8] = FLOAT_TO_BOOLEAN(matrix[2]); 1688 params[9] = FLOAT_TO_BOOLEAN(matrix[6]); 1689 params[10] = FLOAT_TO_BOOLEAN(matrix[10]); 1690 params[11] = FLOAT_TO_BOOLEAN(matrix[14]); 1691 params[12] = FLOAT_TO_BOOLEAN(matrix[3]); 1692 params[13] = FLOAT_TO_BOOLEAN(matrix[7]); 1693 params[14] = FLOAT_TO_BOOLEAN(matrix[11]); 1694 params[15] = FLOAT_TO_BOOLEAN(matrix[15]); 1695 } 1696 break; 1697 case GL_MAX_VERTEX_ATTRIBS_ARB: 1698 CHECK_EXT1(ARB_vertex_program, "GetBooleanv"); 1699 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs); 1700 break; 1701 case GL_PROGRAM_ERROR_POSITION_ARB: 1702 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetBooleanv"); 1703 params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos); 1704 break; 1705 case GL_FRAGMENT_PROGRAM_ARB: 1706 CHECK_EXT1(ARB_fragment_program, "GetBooleanv"); 1707 params[0] = ctx->FragmentProgram.Enabled; 1708 break; 1709 case GL_MAX_TEXTURE_COORDS_ARB: 1710 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv"); 1711 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits); 1712 break; 1713 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 1714 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetBooleanv"); 1715 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits); 1716 break; 1717 case GL_DEPTH_BOUNDS_TEST_EXT: 1718 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv"); 1719 params[0] = ctx->Depth.BoundsTest; 1720 break; 1721 case GL_DEPTH_BOUNDS_EXT: 1722 CHECK_EXT1(EXT_depth_bounds_test, "GetBooleanv"); 1723 params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin); 1724 params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax); 1725 break; 1726 case GL_DEPTH_CLAMP: 1727 CHECK_EXT1(ARB_depth_clamp, "GetBooleanv"); 1728 params[0] = ctx->Transform.DepthClamp; 1729 break; 1730 case GL_MAX_DRAW_BUFFERS_ARB: 1731 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers); 1732 break; 1733 case GL_DRAW_BUFFER0_ARB: 1734 params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]); 1735 break; 1736 case GL_DRAW_BUFFER1_ARB: 1737 { 1738 GLenum buffer; 1739 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 1740 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 1741 return; 1742 } 1743 buffer = ctx->DrawBuffer->ColorDrawBuffer[1]; 1744 params[0] = ENUM_TO_BOOLEAN(buffer); 1745 } 1746 break; 1747 case GL_DRAW_BUFFER2_ARB: 1748 { 1749 GLenum buffer; 1750 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 1751 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 1752 return; 1753 } 1754 buffer = ctx->DrawBuffer->ColorDrawBuffer[2]; 1755 params[0] = ENUM_TO_BOOLEAN(buffer); 1756 } 1757 break; 1758 case GL_DRAW_BUFFER3_ARB: 1759 { 1760 GLenum buffer; 1761 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 1762 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 1763 return; 1764 } 1765 buffer = ctx->DrawBuffer->ColorDrawBuffer[3]; 1766 params[0] = ENUM_TO_BOOLEAN(buffer); 1767 } 1768 break; 1769 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: 1770 CHECK_EXT1(OES_read_format, "GetBooleanv"); 1771 params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_type(ctx)); 1772 break; 1773 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: 1774 CHECK_EXT1(OES_read_format, "GetBooleanv"); 1775 params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_format(ctx)); 1776 break; 1777 case GL_NUM_FRAGMENT_REGISTERS_ATI: 1778 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1779 params[0] = INT_TO_BOOLEAN(6); 1780 break; 1781 case GL_NUM_FRAGMENT_CONSTANTS_ATI: 1782 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1783 params[0] = INT_TO_BOOLEAN(8); 1784 break; 1785 case GL_NUM_PASSES_ATI: 1786 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1787 params[0] = INT_TO_BOOLEAN(2); 1788 break; 1789 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI: 1790 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1791 params[0] = INT_TO_BOOLEAN(8); 1792 break; 1793 case GL_NUM_INSTRUCTIONS_TOTAL_ATI: 1794 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1795 params[0] = INT_TO_BOOLEAN(16); 1796 break; 1797 case GL_COLOR_ALPHA_PAIRING_ATI: 1798 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1799 params[0] = GL_TRUE; 1800 break; 1801 case GL_NUM_LOOPBACK_COMPONENTS_ATI: 1802 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1803 params[0] = INT_TO_BOOLEAN(3); 1804 break; 1805 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI: 1806 CHECK_EXT1(ATI_fragment_shader, "GetBooleanv"); 1807 params[0] = INT_TO_BOOLEAN(3); 1808 break; 1809 case GL_STENCIL_BACK_FUNC: 1810 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]); 1811 break; 1812 case GL_STENCIL_BACK_VALUE_MASK: 1813 params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]); 1814 break; 1815 case GL_STENCIL_BACK_WRITEMASK: 1816 params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]); 1817 break; 1818 case GL_STENCIL_BACK_REF: 1819 params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]); 1820 break; 1821 case GL_STENCIL_BACK_FAIL: 1822 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]); 1823 break; 1824 case GL_STENCIL_BACK_PASS_DEPTH_FAIL: 1825 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]); 1826 break; 1827 case GL_STENCIL_BACK_PASS_DEPTH_PASS: 1828 params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]); 1829 break; 1830 case GL_FRAMEBUFFER_BINDING_EXT: 1831 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); 1832 params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name); 1833 break; 1834 case GL_RENDERBUFFER_BINDING_EXT: 1835 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); 1836 params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0); 1837 break; 1838 case GL_MAX_COLOR_ATTACHMENTS_EXT: 1839 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); 1840 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments); 1841 break; 1842 case GL_MAX_RENDERBUFFER_SIZE_EXT: 1843 CHECK_EXT1(EXT_framebuffer_object, "GetBooleanv"); 1844 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize); 1845 break; 1846 case GL_READ_FRAMEBUFFER_BINDING_EXT: 1847 CHECK_EXT1(EXT_framebuffer_blit, "GetBooleanv"); 1848 params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name); 1849 break; 1850 case GL_PROVOKING_VERTEX_EXT: 1851 CHECK_EXT1(EXT_provoking_vertex, "GetBooleanv"); 1852 params[0] = ctx->Light.ProvokingVertex; 1853 break; 1854 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT: 1855 CHECK_EXT1(EXT_provoking_vertex, "GetBooleanv"); 1856 params[0] = ctx->Const.QuadsFollowProvokingVertexConvention; 1857 break; 1858 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: 1859 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv"); 1860 params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents); 1861 break; 1862 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: 1863 CHECK_EXT1(ARB_fragment_shader, "GetBooleanv"); 1864 params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative); 1865 break; 1866 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: 1867 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); 1868 params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents); 1869 break; 1870 case GL_MAX_VARYING_FLOATS_ARB: 1871 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); 1872 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4); 1873 break; 1874 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 1875 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); 1876 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits); 1877 break; 1878 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: 1879 CHECK_EXT1(ARB_vertex_shader, "GetBooleanv"); 1880 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxCombinedTextureImageUnits); 1881 break; 1882 case GL_CURRENT_PROGRAM: 1883 CHECK_EXT1(ARB_shader_objects, "GetBooleanv"); 1884 params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0); 1885 break; 1886 case GL_MAX_SAMPLES: 1887 CHECK_EXT1(ARB_framebuffer_object, "GetBooleanv"); 1888 params[0] = INT_TO_BOOLEAN(ctx->Const.MaxSamples); 1889 break; 1890 case GL_VERTEX_ARRAY_BINDING_APPLE: 1891 CHECK_EXT1(APPLE_vertex_array_object, "GetBooleanv"); 1892 params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Name); 1893 break; 1894 case GL_TEXTURE_CUBE_MAP_SEAMLESS: 1895 CHECK_EXT1(ARB_seamless_cube_map, "GetBooleanv"); 1896 params[0] = ctx->Texture.CubeMapSeamless; 1897 break; 1898 case GL_MAX_SERVER_WAIT_TIMEOUT: 1899 CHECK_EXT1(ARB_sync, "GetBooleanv"); 1900 params[0] = INT64_TO_BOOLEAN(ctx->Const.MaxServerWaitTimeout); 1901 break; 1902 default: 1903 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname); 1904 } 1905} 1906 1907void GLAPIENTRY 1908_mesa_GetFloatv( GLenum pname, GLfloat *params ) 1909{ 1910 GET_CURRENT_CONTEXT(ctx); 1911 ASSERT_OUTSIDE_BEGIN_END(ctx); 1912 1913 if (!params) 1914 return; 1915 1916 if (ctx->NewState) 1917 _mesa_update_state(ctx); 1918 1919 if (ctx->Driver.GetFloatv && 1920 ctx->Driver.GetFloatv(ctx, pname, params)) 1921 return; 1922 1923 switch (pname) { 1924 case GL_ACCUM_RED_BITS: 1925 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits); 1926 break; 1927 case GL_ACCUM_GREEN_BITS: 1928 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits); 1929 break; 1930 case GL_ACCUM_BLUE_BITS: 1931 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits); 1932 break; 1933 case GL_ACCUM_ALPHA_BITS: 1934 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits); 1935 break; 1936 case GL_ACCUM_CLEAR_VALUE: 1937 params[0] = ctx->Accum.ClearColor[0]; 1938 params[1] = ctx->Accum.ClearColor[1]; 1939 params[2] = ctx->Accum.ClearColor[2]; 1940 params[3] = ctx->Accum.ClearColor[3]; 1941 break; 1942 case GL_ALPHA_BIAS: 1943 params[0] = ctx->Pixel.AlphaBias; 1944 break; 1945 case GL_ALPHA_BITS: 1946 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits); 1947 break; 1948 case GL_ALPHA_SCALE: 1949 params[0] = ctx->Pixel.AlphaScale; 1950 break; 1951 case GL_ALPHA_TEST: 1952 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled); 1953 break; 1954 case GL_ALPHA_TEST_FUNC: 1955 params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc); 1956 break; 1957 case GL_ALPHA_TEST_REF: 1958 params[0] = ctx->Color.AlphaRef; 1959 break; 1960 case GL_ATTRIB_STACK_DEPTH: 1961 params[0] = (GLfloat)(ctx->AttribStackDepth); 1962 break; 1963 case GL_AUTO_NORMAL: 1964 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal); 1965 break; 1966 case GL_AUX_BUFFERS: 1967 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers); 1968 break; 1969 case GL_BLEND: 1970 params[0] = BOOLEAN_TO_FLOAT((ctx->Color.BlendEnabled & 1)); 1971 break; 1972 case GL_BLEND_DST: 1973 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB); 1974 break; 1975 case GL_BLEND_SRC: 1976 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB); 1977 break; 1978 case GL_BLEND_SRC_RGB_EXT: 1979 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB); 1980 break; 1981 case GL_BLEND_DST_RGB_EXT: 1982 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB); 1983 break; 1984 case GL_BLEND_SRC_ALPHA_EXT: 1985 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA); 1986 break; 1987 case GL_BLEND_DST_ALPHA_EXT: 1988 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA); 1989 break; 1990 case GL_BLEND_EQUATION: 1991 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB ); 1992 break; 1993 case GL_BLEND_EQUATION_ALPHA_EXT: 1994 params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA ); 1995 break; 1996 case GL_BLEND_COLOR_EXT: 1997 params[0] = ctx->Color.BlendColor[0]; 1998 params[1] = ctx->Color.BlendColor[1]; 1999 params[2] = ctx->Color.BlendColor[2]; 2000 params[3] = ctx->Color.BlendColor[3]; 2001 break; 2002 case GL_BLUE_BIAS: 2003 params[0] = ctx->Pixel.BlueBias; 2004 break; 2005 case GL_BLUE_BITS: 2006 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits); 2007 break; 2008 case GL_BLUE_SCALE: 2009 params[0] = ctx->Pixel.BlueScale; 2010 break; 2011 case GL_CLIENT_ATTRIB_STACK_DEPTH: 2012 params[0] = (GLfloat)(ctx->ClientAttribStackDepth); 2013 break; 2014 case GL_CLIP_PLANE0: 2015 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1); 2016 break; 2017 case GL_CLIP_PLANE1: 2018 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1); 2019 break; 2020 case GL_CLIP_PLANE2: 2021 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1); 2022 break; 2023 case GL_CLIP_PLANE3: 2024 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1); 2025 break; 2026 case GL_CLIP_PLANE4: 2027 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1); 2028 break; 2029 case GL_CLIP_PLANE5: 2030 params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1); 2031 break; 2032 case GL_COLOR_CLEAR_VALUE: 2033 params[0] = ctx->Color.ClearColor[0]; 2034 params[1] = ctx->Color.ClearColor[1]; 2035 params[2] = ctx->Color.ClearColor[2]; 2036 params[3] = ctx->Color.ClearColor[3]; 2037 break; 2038 case GL_COLOR_MATERIAL: 2039 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled); 2040 break; 2041 case GL_COLOR_MATERIAL_FACE: 2042 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace); 2043 break; 2044 case GL_COLOR_MATERIAL_PARAMETER: 2045 params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode); 2046 break; 2047 case GL_COLOR_WRITEMASK: 2048 params[0] = (GLfloat)(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0); 2049 params[1] = (GLfloat)(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0); 2050 params[2] = (GLfloat)(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0); 2051 params[3] = (GLfloat)(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0); 2052 break; 2053 case GL_CULL_FACE: 2054 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag); 2055 break; 2056 case GL_CULL_FACE_MODE: 2057 params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode); 2058 break; 2059 case GL_CURRENT_COLOR: 2060 { 2061 FLUSH_CURRENT(ctx, 0); 2062 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]; 2063 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]; 2064 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]; 2065 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]; 2066 } 2067 break; 2068 case GL_CURRENT_INDEX: 2069 { 2070 FLUSH_CURRENT(ctx, 0); 2071 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]; 2072 } 2073 break; 2074 case GL_CURRENT_NORMAL: 2075 { 2076 FLUSH_CURRENT(ctx, 0); 2077 params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]; 2078 params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]; 2079 params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]; 2080 } 2081 break; 2082 case GL_CURRENT_RASTER_COLOR: 2083 params[0] = ctx->Current.RasterColor[0]; 2084 params[1] = ctx->Current.RasterColor[1]; 2085 params[2] = ctx->Current.RasterColor[2]; 2086 params[3] = ctx->Current.RasterColor[3]; 2087 break; 2088 case GL_CURRENT_RASTER_DISTANCE: 2089 params[0] = ctx->Current.RasterDistance; 2090 break; 2091 case GL_CURRENT_RASTER_INDEX: 2092 params[0] = ctx->Current.RasterIndex; 2093 break; 2094 case GL_CURRENT_RASTER_POSITION: 2095 params[0] = ctx->Current.RasterPos[0]; 2096 params[1] = ctx->Current.RasterPos[1]; 2097 params[2] = ctx->Current.RasterPos[2]; 2098 params[3] = ctx->Current.RasterPos[3]; 2099 break; 2100 case GL_CURRENT_RASTER_SECONDARY_COLOR: 2101 params[0] = ctx->Current.RasterSecondaryColor[0]; 2102 params[1] = ctx->Current.RasterSecondaryColor[1]; 2103 params[2] = ctx->Current.RasterSecondaryColor[2]; 2104 params[3] = ctx->Current.RasterSecondaryColor[3]; 2105 break; 2106 case GL_CURRENT_RASTER_TEXTURE_COORDS: 2107 { 2108 const GLuint texUnit = ctx->Texture.CurrentUnit; 2109 params[0] = ctx->Current.RasterTexCoords[texUnit][0]; 2110 params[1] = ctx->Current.RasterTexCoords[texUnit][1]; 2111 params[2] = ctx->Current.RasterTexCoords[texUnit][2]; 2112 params[3] = ctx->Current.RasterTexCoords[texUnit][3]; 2113 } 2114 break; 2115 case GL_CURRENT_RASTER_POSITION_VALID: 2116 params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid); 2117 break; 2118 case GL_CURRENT_TEXTURE_COORDS: 2119 { 2120 const GLuint texUnit = ctx->Texture.CurrentUnit; 2121 FLUSH_CURRENT(ctx, 0); 2122 params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]; 2123 params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]; 2124 params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]; 2125 params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]; 2126 } 2127 break; 2128 case GL_DEPTH_BIAS: 2129 params[0] = ctx->Pixel.DepthBias; 2130 break; 2131 case GL_DEPTH_BITS: 2132 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits); 2133 break; 2134 case GL_DEPTH_CLEAR_VALUE: 2135 params[0] = ((GLfloat) ctx->Depth.Clear); 2136 break; 2137 case GL_DEPTH_FUNC: 2138 params[0] = ENUM_TO_FLOAT(ctx->Depth.Func); 2139 break; 2140 case GL_DEPTH_RANGE: 2141 params[0] = ctx->Viewport.Near; 2142 params[1] = ctx->Viewport.Far; 2143 break; 2144 case GL_DEPTH_SCALE: 2145 params[0] = ctx->Pixel.DepthScale; 2146 break; 2147 case GL_DEPTH_TEST: 2148 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test); 2149 break; 2150 case GL_DEPTH_WRITEMASK: 2151 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask); 2152 break; 2153 case GL_DITHER: 2154 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag); 2155 break; 2156 case GL_DOUBLEBUFFER: 2157 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode); 2158 break; 2159 case GL_DRAW_BUFFER: 2160 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]); 2161 break; 2162 case GL_EDGE_FLAG: 2163 { 2164 FLUSH_CURRENT(ctx, 0); 2165 params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0)); 2166 } 2167 break; 2168 case GL_FEEDBACK_BUFFER_SIZE: 2169 params[0] = (GLfloat)(ctx->Feedback.BufferSize); 2170 break; 2171 case GL_FEEDBACK_BUFFER_TYPE: 2172 params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type); 2173 break; 2174 case GL_FOG: 2175 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled); 2176 break; 2177 case GL_FOG_COLOR: 2178 params[0] = ctx->Fog.Color[0]; 2179 params[1] = ctx->Fog.Color[1]; 2180 params[2] = ctx->Fog.Color[2]; 2181 params[3] = ctx->Fog.Color[3]; 2182 break; 2183 case GL_FOG_DENSITY: 2184 params[0] = ctx->Fog.Density; 2185 break; 2186 case GL_FOG_END: 2187 params[0] = ctx->Fog.End; 2188 break; 2189 case GL_FOG_HINT: 2190 params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog); 2191 break; 2192 case GL_FOG_INDEX: 2193 params[0] = ctx->Fog.Index; 2194 break; 2195 case GL_FOG_MODE: 2196 params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode); 2197 break; 2198 case GL_FOG_START: 2199 params[0] = ctx->Fog.Start; 2200 break; 2201 case GL_FRONT_FACE: 2202 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace); 2203 break; 2204 case GL_GREEN_BIAS: 2205 params[0] = ctx->Pixel.GreenBias; 2206 break; 2207 case GL_GREEN_BITS: 2208 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits); 2209 break; 2210 case GL_GREEN_SCALE: 2211 params[0] = ctx->Pixel.GreenScale; 2212 break; 2213 case GL_INDEX_BITS: 2214 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits); 2215 break; 2216 case GL_INDEX_CLEAR_VALUE: 2217 params[0] = (GLfloat)(ctx->Color.ClearIndex); 2218 break; 2219 case GL_INDEX_MODE: 2220 params[0] = BOOLEAN_TO_FLOAT(!ctx->DrawBuffer->Visual.rgbMode); 2221 break; 2222 case GL_INDEX_OFFSET: 2223 params[0] = (GLfloat)(ctx->Pixel.IndexOffset); 2224 break; 2225 case GL_INDEX_SHIFT: 2226 params[0] = (GLfloat)(ctx->Pixel.IndexShift); 2227 break; 2228 case GL_INDEX_WRITEMASK: 2229 params[0] = (GLfloat)(ctx->Color.IndexMask); 2230 break; 2231 case GL_LIGHT0: 2232 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled); 2233 break; 2234 case GL_LIGHT1: 2235 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled); 2236 break; 2237 case GL_LIGHT2: 2238 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled); 2239 break; 2240 case GL_LIGHT3: 2241 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled); 2242 break; 2243 case GL_LIGHT4: 2244 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled); 2245 break; 2246 case GL_LIGHT5: 2247 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled); 2248 break; 2249 case GL_LIGHT6: 2250 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled); 2251 break; 2252 case GL_LIGHT7: 2253 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled); 2254 break; 2255 case GL_LIGHTING: 2256 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled); 2257 break; 2258 case GL_LIGHT_MODEL_AMBIENT: 2259 params[0] = ctx->Light.Model.Ambient[0]; 2260 params[1] = ctx->Light.Model.Ambient[1]; 2261 params[2] = ctx->Light.Model.Ambient[2]; 2262 params[3] = ctx->Light.Model.Ambient[3]; 2263 break; 2264 case GL_LIGHT_MODEL_COLOR_CONTROL: 2265 params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl); 2266 break; 2267 case GL_LIGHT_MODEL_LOCAL_VIEWER: 2268 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer); 2269 break; 2270 case GL_LIGHT_MODEL_TWO_SIDE: 2271 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide); 2272 break; 2273 case GL_LINE_SMOOTH: 2274 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag); 2275 break; 2276 case GL_LINE_SMOOTH_HINT: 2277 params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth); 2278 break; 2279 case GL_LINE_STIPPLE: 2280 params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag); 2281 break; 2282 case GL_LINE_STIPPLE_PATTERN: 2283 params[0] = (GLfloat)(ctx->Line.StipplePattern); 2284 break; 2285 case GL_LINE_STIPPLE_REPEAT: 2286 params[0] = (GLfloat)(ctx->Line.StippleFactor); 2287 break; 2288 case GL_LINE_WIDTH: 2289 params[0] = ctx->Line.Width; 2290 break; 2291 case GL_LINE_WIDTH_GRANULARITY: 2292 params[0] = ctx->Const.LineWidthGranularity; 2293 break; 2294 case GL_LINE_WIDTH_RANGE: 2295 params[0] = ctx->Const.MinLineWidthAA; 2296 params[1] = ctx->Const.MaxLineWidthAA; 2297 break; 2298 case GL_ALIASED_LINE_WIDTH_RANGE: 2299 params[0] = ctx->Const.MinLineWidth; 2300 params[1] = ctx->Const.MaxLineWidth; 2301 break; 2302 case GL_LIST_BASE: 2303 params[0] = (GLfloat)(ctx->List.ListBase); 2304 break; 2305 case GL_LIST_INDEX: 2306 params[0] = (GLfloat)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0)); 2307 break; 2308 case GL_LIST_MODE: 2309 { 2310 GLenum mode; 2311 if (!ctx->CompileFlag) 2312 mode = 0; 2313 else if (ctx->ExecuteFlag) 2314 mode = GL_COMPILE_AND_EXECUTE; 2315 else 2316 mode = GL_COMPILE; 2317 params[0] = ENUM_TO_FLOAT(mode); 2318 } 2319 break; 2320 case GL_INDEX_LOGIC_OP: 2321 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled); 2322 break; 2323 case GL_COLOR_LOGIC_OP: 2324 params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled); 2325 break; 2326 case GL_LOGIC_OP_MODE: 2327 params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp); 2328 break; 2329 case GL_MAP1_COLOR_4: 2330 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4); 2331 break; 2332 case GL_MAP1_GRID_DOMAIN: 2333 params[0] = ctx->Eval.MapGrid1u1; 2334 params[1] = ctx->Eval.MapGrid1u2; 2335 break; 2336 case GL_MAP1_GRID_SEGMENTS: 2337 params[0] = (GLfloat)(ctx->Eval.MapGrid1un); 2338 break; 2339 case GL_MAP1_INDEX: 2340 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index); 2341 break; 2342 case GL_MAP1_NORMAL: 2343 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal); 2344 break; 2345 case GL_MAP1_TEXTURE_COORD_1: 2346 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1); 2347 break; 2348 case GL_MAP1_TEXTURE_COORD_2: 2349 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2); 2350 break; 2351 case GL_MAP1_TEXTURE_COORD_3: 2352 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3); 2353 break; 2354 case GL_MAP1_TEXTURE_COORD_4: 2355 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4); 2356 break; 2357 case GL_MAP1_VERTEX_3: 2358 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3); 2359 break; 2360 case GL_MAP1_VERTEX_4: 2361 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4); 2362 break; 2363 case GL_MAP2_COLOR_4: 2364 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4); 2365 break; 2366 case GL_MAP2_GRID_DOMAIN: 2367 params[0] = ctx->Eval.MapGrid2u1; 2368 params[1] = ctx->Eval.MapGrid2u2; 2369 params[2] = ctx->Eval.MapGrid2v1; 2370 params[3] = ctx->Eval.MapGrid2v2; 2371 break; 2372 case GL_MAP2_GRID_SEGMENTS: 2373 params[0] = (GLfloat)(ctx->Eval.MapGrid2un); 2374 params[1] = (GLfloat)(ctx->Eval.MapGrid2vn); 2375 break; 2376 case GL_MAP2_INDEX: 2377 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index); 2378 break; 2379 case GL_MAP2_NORMAL: 2380 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal); 2381 break; 2382 case GL_MAP2_TEXTURE_COORD_1: 2383 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1); 2384 break; 2385 case GL_MAP2_TEXTURE_COORD_2: 2386 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2); 2387 break; 2388 case GL_MAP2_TEXTURE_COORD_3: 2389 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3); 2390 break; 2391 case GL_MAP2_TEXTURE_COORD_4: 2392 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4); 2393 break; 2394 case GL_MAP2_VERTEX_3: 2395 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3); 2396 break; 2397 case GL_MAP2_VERTEX_4: 2398 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4); 2399 break; 2400 case GL_MAP_COLOR: 2401 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag); 2402 break; 2403 case GL_MAP_STENCIL: 2404 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag); 2405 break; 2406 case GL_MATRIX_MODE: 2407 params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode); 2408 break; 2409 case GL_MAX_ATTRIB_STACK_DEPTH: 2410 params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH); 2411 break; 2412 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: 2413 params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH); 2414 break; 2415 case GL_MAX_CLIP_PLANES: 2416 params[0] = (GLfloat)(ctx->Const.MaxClipPlanes); 2417 break; 2418 case GL_MAX_ELEMENTS_VERTICES: 2419 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize); 2420 break; 2421 case GL_MAX_ELEMENTS_INDICES: 2422 params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize); 2423 break; 2424 case GL_MAX_EVAL_ORDER: 2425 params[0] = (GLfloat)(MAX_EVAL_ORDER); 2426 break; 2427 case GL_MAX_LIGHTS: 2428 params[0] = (GLfloat)(ctx->Const.MaxLights); 2429 break; 2430 case GL_MAX_LIST_NESTING: 2431 params[0] = (GLfloat)(MAX_LIST_NESTING); 2432 break; 2433 case GL_MAX_MODELVIEW_STACK_DEPTH: 2434 params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH); 2435 break; 2436 case GL_MAX_NAME_STACK_DEPTH: 2437 params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH); 2438 break; 2439 case GL_MAX_PIXEL_MAP_TABLE: 2440 params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE); 2441 break; 2442 case GL_MAX_PROJECTION_STACK_DEPTH: 2443 params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH); 2444 break; 2445 case GL_MAX_TEXTURE_SIZE: 2446 params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1)); 2447 break; 2448 case GL_MAX_3D_TEXTURE_SIZE: 2449 params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1)); 2450 break; 2451 case GL_MAX_TEXTURE_STACK_DEPTH: 2452 params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH); 2453 break; 2454 case GL_MAX_VIEWPORT_DIMS: 2455 params[0] = (GLfloat)(ctx->Const.MaxViewportWidth); 2456 params[1] = (GLfloat)(ctx->Const.MaxViewportHeight); 2457 break; 2458 case GL_MODELVIEW_MATRIX: 2459 { 2460 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 2461 params[0] = matrix[0]; 2462 params[1] = matrix[1]; 2463 params[2] = matrix[2]; 2464 params[3] = matrix[3]; 2465 params[4] = matrix[4]; 2466 params[5] = matrix[5]; 2467 params[6] = matrix[6]; 2468 params[7] = matrix[7]; 2469 params[8] = matrix[8]; 2470 params[9] = matrix[9]; 2471 params[10] = matrix[10]; 2472 params[11] = matrix[11]; 2473 params[12] = matrix[12]; 2474 params[13] = matrix[13]; 2475 params[14] = matrix[14]; 2476 params[15] = matrix[15]; 2477 } 2478 break; 2479 case GL_MODELVIEW_STACK_DEPTH: 2480 params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1); 2481 break; 2482 case GL_NAME_STACK_DEPTH: 2483 params[0] = (GLfloat)(ctx->Select.NameStackDepth); 2484 break; 2485 case GL_NORMALIZE: 2486 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize); 2487 break; 2488 case GL_PACK_ALIGNMENT: 2489 params[0] = (GLfloat)(ctx->Pack.Alignment); 2490 break; 2491 case GL_PACK_LSB_FIRST: 2492 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst); 2493 break; 2494 case GL_PACK_ROW_LENGTH: 2495 params[0] = (GLfloat)(ctx->Pack.RowLength); 2496 break; 2497 case GL_PACK_SKIP_PIXELS: 2498 params[0] = (GLfloat)(ctx->Pack.SkipPixels); 2499 break; 2500 case GL_PACK_SKIP_ROWS: 2501 params[0] = (GLfloat)(ctx->Pack.SkipRows); 2502 break; 2503 case GL_PACK_SWAP_BYTES: 2504 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes); 2505 break; 2506 case GL_PACK_SKIP_IMAGES_EXT: 2507 params[0] = (GLfloat)(ctx->Pack.SkipImages); 2508 break; 2509 case GL_PACK_IMAGE_HEIGHT_EXT: 2510 params[0] = (GLfloat)(ctx->Pack.ImageHeight); 2511 break; 2512 case GL_PACK_INVERT_MESA: 2513 params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert); 2514 break; 2515 case GL_PERSPECTIVE_CORRECTION_HINT: 2516 params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection); 2517 break; 2518 case GL_PIXEL_MAP_A_TO_A_SIZE: 2519 params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size); 2520 break; 2521 case GL_PIXEL_MAP_B_TO_B_SIZE: 2522 params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size); 2523 break; 2524 case GL_PIXEL_MAP_G_TO_G_SIZE: 2525 params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size); 2526 break; 2527 case GL_PIXEL_MAP_I_TO_A_SIZE: 2528 params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size); 2529 break; 2530 case GL_PIXEL_MAP_I_TO_B_SIZE: 2531 params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size); 2532 break; 2533 case GL_PIXEL_MAP_I_TO_G_SIZE: 2534 params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size); 2535 break; 2536 case GL_PIXEL_MAP_I_TO_I_SIZE: 2537 params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size); 2538 break; 2539 case GL_PIXEL_MAP_I_TO_R_SIZE: 2540 params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size); 2541 break; 2542 case GL_PIXEL_MAP_R_TO_R_SIZE: 2543 params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size); 2544 break; 2545 case GL_PIXEL_MAP_S_TO_S_SIZE: 2546 params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size); 2547 break; 2548 case GL_POINT_SIZE: 2549 params[0] = ctx->Point.Size; 2550 break; 2551 case GL_POINT_SIZE_GRANULARITY: 2552 params[0] = ctx->Const.PointSizeGranularity; 2553 break; 2554 case GL_POINT_SIZE_RANGE: 2555 params[0] = ctx->Const.MinPointSizeAA; 2556 params[1] = ctx->Const.MaxPointSizeAA; 2557 break; 2558 case GL_ALIASED_POINT_SIZE_RANGE: 2559 params[0] = ctx->Const.MinPointSize; 2560 params[1] = ctx->Const.MaxPointSize; 2561 break; 2562 case GL_POINT_SMOOTH: 2563 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag); 2564 break; 2565 case GL_POINT_SMOOTH_HINT: 2566 params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth); 2567 break; 2568 case GL_POINT_SIZE_MIN_EXT: 2569 params[0] = ctx->Point.MinSize; 2570 break; 2571 case GL_POINT_SIZE_MAX_EXT: 2572 params[0] = ctx->Point.MaxSize; 2573 break; 2574 case GL_POINT_FADE_THRESHOLD_SIZE_EXT: 2575 params[0] = ctx->Point.Threshold; 2576 break; 2577 case GL_DISTANCE_ATTENUATION_EXT: 2578 params[0] = ctx->Point.Params[0]; 2579 params[1] = ctx->Point.Params[1]; 2580 params[2] = ctx->Point.Params[2]; 2581 break; 2582 case GL_POLYGON_MODE: 2583 params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode); 2584 params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode); 2585 break; 2586 case GL_POLYGON_OFFSET_BIAS_EXT: 2587 params[0] = ctx->Polygon.OffsetUnits; 2588 break; 2589 case GL_POLYGON_OFFSET_FACTOR: 2590 params[0] = ctx->Polygon.OffsetFactor ; 2591 break; 2592 case GL_POLYGON_OFFSET_UNITS: 2593 params[0] = ctx->Polygon.OffsetUnits ; 2594 break; 2595 case GL_POLYGON_OFFSET_POINT: 2596 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint); 2597 break; 2598 case GL_POLYGON_OFFSET_LINE: 2599 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine); 2600 break; 2601 case GL_POLYGON_OFFSET_FILL: 2602 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill); 2603 break; 2604 case GL_POLYGON_SMOOTH: 2605 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag); 2606 break; 2607 case GL_POLYGON_SMOOTH_HINT: 2608 params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth); 2609 break; 2610 case GL_POLYGON_STIPPLE: 2611 params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag); 2612 break; 2613 case GL_PROJECTION_MATRIX: 2614 { 2615 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 2616 params[0] = matrix[0]; 2617 params[1] = matrix[1]; 2618 params[2] = matrix[2]; 2619 params[3] = matrix[3]; 2620 params[4] = matrix[4]; 2621 params[5] = matrix[5]; 2622 params[6] = matrix[6]; 2623 params[7] = matrix[7]; 2624 params[8] = matrix[8]; 2625 params[9] = matrix[9]; 2626 params[10] = matrix[10]; 2627 params[11] = matrix[11]; 2628 params[12] = matrix[12]; 2629 params[13] = matrix[13]; 2630 params[14] = matrix[14]; 2631 params[15] = matrix[15]; 2632 } 2633 break; 2634 case GL_PROJECTION_STACK_DEPTH: 2635 params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1); 2636 break; 2637 case GL_READ_BUFFER: 2638 params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer); 2639 break; 2640 case GL_RED_BIAS: 2641 params[0] = ctx->Pixel.RedBias; 2642 break; 2643 case GL_RED_BITS: 2644 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits); 2645 break; 2646 case GL_RED_SCALE: 2647 params[0] = ctx->Pixel.RedScale; 2648 break; 2649 case GL_RENDER_MODE: 2650 params[0] = ENUM_TO_FLOAT(ctx->RenderMode); 2651 break; 2652 case GL_RESCALE_NORMAL: 2653 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals); 2654 break; 2655 case GL_RGBA_MODE: 2656 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.rgbMode); 2657 break; 2658 case GL_SCISSOR_BOX: 2659 params[0] = (GLfloat)(ctx->Scissor.X); 2660 params[1] = (GLfloat)(ctx->Scissor.Y); 2661 params[2] = (GLfloat)(ctx->Scissor.Width); 2662 params[3] = (GLfloat)(ctx->Scissor.Height); 2663 break; 2664 case GL_SCISSOR_TEST: 2665 params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled); 2666 break; 2667 case GL_SELECTION_BUFFER_SIZE: 2668 params[0] = (GLfloat)(ctx->Select.BufferSize); 2669 break; 2670 case GL_SHADE_MODEL: 2671 params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel); 2672 break; 2673 case GL_SHARED_TEXTURE_PALETTE_EXT: 2674 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette); 2675 break; 2676 case GL_STENCIL_BITS: 2677 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits); 2678 break; 2679 case GL_STENCIL_CLEAR_VALUE: 2680 params[0] = (GLfloat)(ctx->Stencil.Clear); 2681 break; 2682 case GL_STENCIL_FAIL: 2683 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); 2684 break; 2685 case GL_STENCIL_FUNC: 2686 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); 2687 break; 2688 case GL_STENCIL_PASS_DEPTH_FAIL: 2689 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); 2690 break; 2691 case GL_STENCIL_PASS_DEPTH_PASS: 2692 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); 2693 break; 2694 case GL_STENCIL_REF: 2695 params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]); 2696 break; 2697 case GL_STENCIL_TEST: 2698 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled); 2699 break; 2700 case GL_STENCIL_VALUE_MASK: 2701 params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]); 2702 break; 2703 case GL_STENCIL_WRITEMASK: 2704 params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]); 2705 break; 2706 case GL_STEREO: 2707 params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode); 2708 break; 2709 case GL_SUBPIXEL_BITS: 2710 params[0] = (GLfloat)(ctx->Const.SubPixelBits); 2711 break; 2712 case GL_TEXTURE_1D: 2713 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D)); 2714 break; 2715 case GL_TEXTURE_2D: 2716 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D)); 2717 break; 2718 case GL_TEXTURE_3D: 2719 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D)); 2720 break; 2721 case GL_TEXTURE_1D_ARRAY_EXT: 2722 CHECK_EXT1(MESA_texture_array, "GetFloatv"); 2723 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)); 2724 break; 2725 case GL_TEXTURE_2D_ARRAY_EXT: 2726 CHECK_EXT1(MESA_texture_array, "GetFloatv"); 2727 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)); 2728 break; 2729 case GL_TEXTURE_BINDING_1D: 2730 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name); 2731 break; 2732 case GL_TEXTURE_BINDING_2D: 2733 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name); 2734 break; 2735 case GL_TEXTURE_BINDING_3D: 2736 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name); 2737 break; 2738 case GL_TEXTURE_BINDING_1D_ARRAY_EXT: 2739 CHECK_EXT1(MESA_texture_array, "GetFloatv"); 2740 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name); 2741 break; 2742 case GL_TEXTURE_BINDING_2D_ARRAY_EXT: 2743 CHECK_EXT1(MESA_texture_array, "GetFloatv"); 2744 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name); 2745 break; 2746 case GL_TEXTURE_GEN_S: 2747 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)); 2748 break; 2749 case GL_TEXTURE_GEN_T: 2750 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0)); 2751 break; 2752 case GL_TEXTURE_GEN_R: 2753 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0)); 2754 break; 2755 case GL_TEXTURE_GEN_Q: 2756 params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0)); 2757 break; 2758 case GL_TEXTURE_MATRIX: 2759 { 2760 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 2761 params[0] = matrix[0]; 2762 params[1] = matrix[1]; 2763 params[2] = matrix[2]; 2764 params[3] = matrix[3]; 2765 params[4] = matrix[4]; 2766 params[5] = matrix[5]; 2767 params[6] = matrix[6]; 2768 params[7] = matrix[7]; 2769 params[8] = matrix[8]; 2770 params[9] = matrix[9]; 2771 params[10] = matrix[10]; 2772 params[11] = matrix[11]; 2773 params[12] = matrix[12]; 2774 params[13] = matrix[13]; 2775 params[14] = matrix[14]; 2776 params[15] = matrix[15]; 2777 } 2778 break; 2779 case GL_TEXTURE_STACK_DEPTH: 2780 params[0] = (GLfloat)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1); 2781 break; 2782 case GL_UNPACK_ALIGNMENT: 2783 params[0] = (GLfloat)(ctx->Unpack.Alignment); 2784 break; 2785 case GL_UNPACK_LSB_FIRST: 2786 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst); 2787 break; 2788 case GL_UNPACK_ROW_LENGTH: 2789 params[0] = (GLfloat)(ctx->Unpack.RowLength); 2790 break; 2791 case GL_UNPACK_SKIP_PIXELS: 2792 params[0] = (GLfloat)(ctx->Unpack.SkipPixels); 2793 break; 2794 case GL_UNPACK_SKIP_ROWS: 2795 params[0] = (GLfloat)(ctx->Unpack.SkipRows); 2796 break; 2797 case GL_UNPACK_SWAP_BYTES: 2798 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes); 2799 break; 2800 case GL_UNPACK_SKIP_IMAGES_EXT: 2801 params[0] = (GLfloat)(ctx->Unpack.SkipImages); 2802 break; 2803 case GL_UNPACK_IMAGE_HEIGHT_EXT: 2804 params[0] = (GLfloat)(ctx->Unpack.ImageHeight); 2805 break; 2806 case GL_UNPACK_CLIENT_STORAGE_APPLE: 2807 params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage); 2808 break; 2809 case GL_VIEWPORT: 2810 params[0] = (GLfloat)(ctx->Viewport.X); 2811 params[1] = (GLfloat)(ctx->Viewport.Y); 2812 params[2] = (GLfloat)(ctx->Viewport.Width); 2813 params[3] = (GLfloat)(ctx->Viewport.Height); 2814 break; 2815 case GL_ZOOM_X: 2816 params[0] = ctx->Pixel.ZoomX; 2817 break; 2818 case GL_ZOOM_Y: 2819 params[0] = ctx->Pixel.ZoomY; 2820 break; 2821 case GL_VERTEX_ARRAY: 2822 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled); 2823 break; 2824 case GL_VERTEX_ARRAY_SIZE: 2825 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size); 2826 break; 2827 case GL_VERTEX_ARRAY_TYPE: 2828 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type); 2829 break; 2830 case GL_VERTEX_ARRAY_STRIDE: 2831 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride); 2832 break; 2833 case GL_VERTEX_ARRAY_COUNT_EXT: 2834 params[0] = (GLfloat)(0); 2835 break; 2836 case GL_NORMAL_ARRAY: 2837 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled); 2838 break; 2839 case GL_NORMAL_ARRAY_TYPE: 2840 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type); 2841 break; 2842 case GL_NORMAL_ARRAY_STRIDE: 2843 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride); 2844 break; 2845 case GL_NORMAL_ARRAY_COUNT_EXT: 2846 params[0] = (GLfloat)(0); 2847 break; 2848 case GL_COLOR_ARRAY: 2849 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled); 2850 break; 2851 case GL_COLOR_ARRAY_SIZE: 2852 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size); 2853 break; 2854 case GL_COLOR_ARRAY_TYPE: 2855 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type); 2856 break; 2857 case GL_COLOR_ARRAY_STRIDE: 2858 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride); 2859 break; 2860 case GL_COLOR_ARRAY_COUNT_EXT: 2861 params[0] = (GLfloat)(0); 2862 break; 2863 case GL_INDEX_ARRAY: 2864 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled); 2865 break; 2866 case GL_INDEX_ARRAY_TYPE: 2867 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type); 2868 break; 2869 case GL_INDEX_ARRAY_STRIDE: 2870 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride); 2871 break; 2872 case GL_INDEX_ARRAY_COUNT_EXT: 2873 params[0] = (GLfloat)(0); 2874 break; 2875 case GL_TEXTURE_COORD_ARRAY: 2876 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled); 2877 break; 2878 case GL_TEXTURE_COORD_ARRAY_SIZE: 2879 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size); 2880 break; 2881 case GL_TEXTURE_COORD_ARRAY_TYPE: 2882 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type); 2883 break; 2884 case GL_TEXTURE_COORD_ARRAY_STRIDE: 2885 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride); 2886 break; 2887 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: 2888 params[0] = (GLfloat)(0); 2889 break; 2890 case GL_EDGE_FLAG_ARRAY: 2891 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled); 2892 break; 2893 case GL_EDGE_FLAG_ARRAY_STRIDE: 2894 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride); 2895 break; 2896 case GL_EDGE_FLAG_ARRAY_COUNT_EXT: 2897 params[0] = (GLfloat)(0); 2898 break; 2899 case GL_MAX_TEXTURE_UNITS_ARB: 2900 CHECK_EXT1(ARB_multitexture, "GetFloatv"); 2901 params[0] = (GLfloat)(ctx->Const.MaxTextureUnits); 2902 break; 2903 case GL_ACTIVE_TEXTURE_ARB: 2904 CHECK_EXT1(ARB_multitexture, "GetFloatv"); 2905 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit); 2906 break; 2907 case GL_CLIENT_ACTIVE_TEXTURE_ARB: 2908 CHECK_EXT1(ARB_multitexture, "GetFloatv"); 2909 params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture); 2910 break; 2911 case GL_TEXTURE_CUBE_MAP_ARB: 2912 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv"); 2913 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)); 2914 break; 2915 case GL_TEXTURE_BINDING_CUBE_MAP_ARB: 2916 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv"); 2917 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name); 2918 break; 2919 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 2920 CHECK_EXT1(ARB_texture_cube_map, "GetFloatv"); 2921 params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1))); 2922 break; 2923 case GL_TEXTURE_COMPRESSION_HINT_ARB: 2924 params[0] = (GLfloat)(ctx->Hint.TextureCompression); 2925 break; 2926 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: 2927 params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)); 2928 break; 2929 case GL_COMPRESSED_TEXTURE_FORMATS_ARB: 2930 { 2931 GLint formats[100]; 2932 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE); 2933 ASSERT(n <= 100); 2934 for (i = 0; i < n; i++) 2935 params[i] = ENUM_TO_FLOAT(formats[i]); 2936 } 2937 break; 2938 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: 2939 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv"); 2940 params[0] = (GLfloat)(ctx->Array.LockFirst); 2941 break; 2942 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: 2943 CHECK_EXT1(EXT_compiled_vertex_array, "GetFloatv"); 2944 params[0] = (GLfloat)(ctx->Array.LockCount); 2945 break; 2946 case GL_TRANSPOSE_COLOR_MATRIX_ARB: 2947 { 2948 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 2949 params[0] = matrix[0]; 2950 params[1] = matrix[4]; 2951 params[2] = matrix[8]; 2952 params[3] = matrix[12]; 2953 params[4] = matrix[1]; 2954 params[5] = matrix[5]; 2955 params[6] = matrix[9]; 2956 params[7] = matrix[13]; 2957 params[8] = matrix[2]; 2958 params[9] = matrix[6]; 2959 params[10] = matrix[10]; 2960 params[11] = matrix[14]; 2961 params[12] = matrix[3]; 2962 params[13] = matrix[7]; 2963 params[14] = matrix[11]; 2964 params[15] = matrix[15]; 2965 } 2966 break; 2967 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: 2968 { 2969 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 2970 params[0] = matrix[0]; 2971 params[1] = matrix[4]; 2972 params[2] = matrix[8]; 2973 params[3] = matrix[12]; 2974 params[4] = matrix[1]; 2975 params[5] = matrix[5]; 2976 params[6] = matrix[9]; 2977 params[7] = matrix[13]; 2978 params[8] = matrix[2]; 2979 params[9] = matrix[6]; 2980 params[10] = matrix[10]; 2981 params[11] = matrix[14]; 2982 params[12] = matrix[3]; 2983 params[13] = matrix[7]; 2984 params[14] = matrix[11]; 2985 params[15] = matrix[15]; 2986 } 2987 break; 2988 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: 2989 { 2990 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 2991 params[0] = matrix[0]; 2992 params[1] = matrix[4]; 2993 params[2] = matrix[8]; 2994 params[3] = matrix[12]; 2995 params[4] = matrix[1]; 2996 params[5] = matrix[5]; 2997 params[6] = matrix[9]; 2998 params[7] = matrix[13]; 2999 params[8] = matrix[2]; 3000 params[9] = matrix[6]; 3001 params[10] = matrix[10]; 3002 params[11] = matrix[14]; 3003 params[12] = matrix[3]; 3004 params[13] = matrix[7]; 3005 params[14] = matrix[11]; 3006 params[15] = matrix[15]; 3007 } 3008 break; 3009 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: 3010 { 3011 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 3012 params[0] = matrix[0]; 3013 params[1] = matrix[4]; 3014 params[2] = matrix[8]; 3015 params[3] = matrix[12]; 3016 params[4] = matrix[1]; 3017 params[5] = matrix[5]; 3018 params[6] = matrix[9]; 3019 params[7] = matrix[13]; 3020 params[8] = matrix[2]; 3021 params[9] = matrix[6]; 3022 params[10] = matrix[10]; 3023 params[11] = matrix[14]; 3024 params[12] = matrix[3]; 3025 params[13] = matrix[7]; 3026 params[14] = matrix[11]; 3027 params[15] = matrix[15]; 3028 } 3029 break; 3030 case GL_COLOR_MATRIX_SGI: 3031 { 3032 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 3033 params[0] = matrix[0]; 3034 params[1] = matrix[1]; 3035 params[2] = matrix[2]; 3036 params[3] = matrix[3]; 3037 params[4] = matrix[4]; 3038 params[5] = matrix[5]; 3039 params[6] = matrix[6]; 3040 params[7] = matrix[7]; 3041 params[8] = matrix[8]; 3042 params[9] = matrix[9]; 3043 params[10] = matrix[10]; 3044 params[11] = matrix[11]; 3045 params[12] = matrix[12]; 3046 params[13] = matrix[13]; 3047 params[14] = matrix[14]; 3048 params[15] = matrix[15]; 3049 } 3050 break; 3051 case GL_COLOR_MATRIX_STACK_DEPTH_SGI: 3052 params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1); 3053 break; 3054 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: 3055 params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH); 3056 break; 3057 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: 3058 params[0] = ctx->Pixel.PostColorMatrixScale[0]; 3059 break; 3060 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: 3061 params[0] = ctx->Pixel.PostColorMatrixScale[1]; 3062 break; 3063 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: 3064 params[0] = ctx->Pixel.PostColorMatrixScale[2]; 3065 break; 3066 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: 3067 params[0] = ctx->Pixel.PostColorMatrixScale[3]; 3068 break; 3069 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: 3070 params[0] = ctx->Pixel.PostColorMatrixBias[0]; 3071 break; 3072 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: 3073 params[0] = ctx->Pixel.PostColorMatrixBias[1]; 3074 break; 3075 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: 3076 params[0] = ctx->Pixel.PostColorMatrixBias[2]; 3077 break; 3078 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: 3079 params[0] = ctx->Pixel.PostColorMatrixBias[3]; 3080 break; 3081 case GL_CONVOLUTION_1D_EXT: 3082 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3083 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled); 3084 break; 3085 case GL_CONVOLUTION_2D_EXT: 3086 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3087 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled); 3088 break; 3089 case GL_SEPARABLE_2D_EXT: 3090 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3091 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled); 3092 break; 3093 case GL_POST_CONVOLUTION_RED_SCALE_EXT: 3094 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3095 params[0] = ctx->Pixel.PostConvolutionScale[0]; 3096 break; 3097 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: 3098 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3099 params[0] = ctx->Pixel.PostConvolutionScale[1]; 3100 break; 3101 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: 3102 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3103 params[0] = ctx->Pixel.PostConvolutionScale[2]; 3104 break; 3105 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: 3106 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3107 params[0] = ctx->Pixel.PostConvolutionScale[3]; 3108 break; 3109 case GL_POST_CONVOLUTION_RED_BIAS_EXT: 3110 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3111 params[0] = ctx->Pixel.PostConvolutionBias[0]; 3112 break; 3113 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: 3114 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3115 params[0] = ctx->Pixel.PostConvolutionBias[1]; 3116 break; 3117 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: 3118 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3119 params[0] = ctx->Pixel.PostConvolutionBias[2]; 3120 break; 3121 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: 3122 CHECK_EXT1(EXT_convolution, "GetFloatv"); 3123 params[0] = ctx->Pixel.PostConvolutionBias[3]; 3124 break; 3125 case GL_HISTOGRAM: 3126 CHECK_EXT1(EXT_histogram, "GetFloatv"); 3127 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled); 3128 break; 3129 case GL_MINMAX: 3130 CHECK_EXT1(EXT_histogram, "GetFloatv"); 3131 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled); 3132 break; 3133 case GL_COLOR_TABLE_SGI: 3134 CHECK_EXT1(SGI_color_table, "GetFloatv"); 3135 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]); 3136 break; 3137 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: 3138 CHECK_EXT1(SGI_color_table, "GetFloatv"); 3139 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]); 3140 break; 3141 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: 3142 CHECK_EXT1(SGI_color_table, "GetFloatv"); 3143 params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]); 3144 break; 3145 case GL_TEXTURE_COLOR_TABLE_SGI: 3146 CHECK_EXT1(SGI_texture_color_table, "GetFloatv"); 3147 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled); 3148 break; 3149 case GL_COLOR_SUM_EXT: 3150 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetFloatv"); 3151 params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled); 3152 break; 3153 case GL_CURRENT_SECONDARY_COLOR_EXT: 3154 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3155 { 3156 FLUSH_CURRENT(ctx, 0); 3157 params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]; 3158 params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]; 3159 params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]; 3160 params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]; 3161 } 3162 break; 3163 case GL_SECONDARY_COLOR_ARRAY_EXT: 3164 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3165 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled); 3166 break; 3167 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: 3168 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3169 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type); 3170 break; 3171 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: 3172 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3173 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride); 3174 break; 3175 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: 3176 CHECK_EXT1(EXT_secondary_color, "GetFloatv"); 3177 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size); 3178 break; 3179 case GL_CURRENT_FOG_COORDINATE_EXT: 3180 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3181 { 3182 FLUSH_CURRENT(ctx, 0); 3183 params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0]; 3184 } 3185 break; 3186 case GL_FOG_COORDINATE_ARRAY_EXT: 3187 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3188 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled); 3189 break; 3190 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: 3191 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3192 params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type); 3193 break; 3194 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: 3195 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3196 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride); 3197 break; 3198 case GL_FOG_COORDINATE_SOURCE_EXT: 3199 CHECK_EXT1(EXT_fog_coord, "GetFloatv"); 3200 params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource); 3201 break; 3202 case GL_MAX_TEXTURE_LOD_BIAS_EXT: 3203 CHECK_EXT1(EXT_texture_lod_bias, "GetFloatv"); 3204 params[0] = ctx->Const.MaxTextureLodBias; 3205 break; 3206 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 3207 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetFloatv"); 3208 params[0] = ctx->Const.MaxTextureMaxAnisotropy; 3209 break; 3210 case GL_MULTISAMPLE_ARB: 3211 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled); 3212 break; 3213 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: 3214 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage); 3215 break; 3216 case GL_SAMPLE_ALPHA_TO_ONE_ARB: 3217 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne); 3218 break; 3219 case GL_SAMPLE_COVERAGE_ARB: 3220 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage); 3221 break; 3222 case GL_SAMPLE_COVERAGE_VALUE_ARB: 3223 params[0] = ctx->Multisample.SampleCoverageValue; 3224 break; 3225 case GL_SAMPLE_COVERAGE_INVERT_ARB: 3226 params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert); 3227 break; 3228 case GL_SAMPLE_BUFFERS_ARB: 3229 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers); 3230 break; 3231 case GL_SAMPLES_ARB: 3232 params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples); 3233 break; 3234 case GL_RASTER_POSITION_UNCLIPPED_IBM: 3235 CHECK_EXT1(IBM_rasterpos_clip, "GetFloatv"); 3236 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped); 3237 break; 3238 case GL_POINT_SPRITE_NV: 3239 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv"); 3240 params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite); 3241 break; 3242 case GL_POINT_SPRITE_R_MODE_NV: 3243 CHECK_EXT1(NV_point_sprite, "GetFloatv"); 3244 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode); 3245 break; 3246 case GL_POINT_SPRITE_COORD_ORIGIN: 3247 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetFloatv"); 3248 params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin); 3249 break; 3250 case GL_GENERATE_MIPMAP_HINT_SGIS: 3251 CHECK_EXT1(SGIS_generate_mipmap, "GetFloatv"); 3252 params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap); 3253 break; 3254 case GL_VERTEX_PROGRAM_BINDING_NV: 3255 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3256 params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0)); 3257 break; 3258 case GL_VERTEX_ATTRIB_ARRAY0_NV: 3259 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3260 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled); 3261 break; 3262 case GL_VERTEX_ATTRIB_ARRAY1_NV: 3263 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3264 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled); 3265 break; 3266 case GL_VERTEX_ATTRIB_ARRAY2_NV: 3267 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3268 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled); 3269 break; 3270 case GL_VERTEX_ATTRIB_ARRAY3_NV: 3271 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3272 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled); 3273 break; 3274 case GL_VERTEX_ATTRIB_ARRAY4_NV: 3275 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3276 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled); 3277 break; 3278 case GL_VERTEX_ATTRIB_ARRAY5_NV: 3279 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3280 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled); 3281 break; 3282 case GL_VERTEX_ATTRIB_ARRAY6_NV: 3283 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3284 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled); 3285 break; 3286 case GL_VERTEX_ATTRIB_ARRAY7_NV: 3287 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3288 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled); 3289 break; 3290 case GL_VERTEX_ATTRIB_ARRAY8_NV: 3291 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3292 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled); 3293 break; 3294 case GL_VERTEX_ATTRIB_ARRAY9_NV: 3295 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3296 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled); 3297 break; 3298 case GL_VERTEX_ATTRIB_ARRAY10_NV: 3299 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3300 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled); 3301 break; 3302 case GL_VERTEX_ATTRIB_ARRAY11_NV: 3303 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3304 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled); 3305 break; 3306 case GL_VERTEX_ATTRIB_ARRAY12_NV: 3307 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3308 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled); 3309 break; 3310 case GL_VERTEX_ATTRIB_ARRAY13_NV: 3311 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3312 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled); 3313 break; 3314 case GL_VERTEX_ATTRIB_ARRAY14_NV: 3315 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3316 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled); 3317 break; 3318 case GL_VERTEX_ATTRIB_ARRAY15_NV: 3319 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3320 params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled); 3321 break; 3322 case GL_MAP1_VERTEX_ATTRIB0_4_NV: 3323 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3324 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]); 3325 break; 3326 case GL_MAP1_VERTEX_ATTRIB1_4_NV: 3327 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3328 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]); 3329 break; 3330 case GL_MAP1_VERTEX_ATTRIB2_4_NV: 3331 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3332 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]); 3333 break; 3334 case GL_MAP1_VERTEX_ATTRIB3_4_NV: 3335 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3336 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]); 3337 break; 3338 case GL_MAP1_VERTEX_ATTRIB4_4_NV: 3339 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3340 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]); 3341 break; 3342 case GL_MAP1_VERTEX_ATTRIB5_4_NV: 3343 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3344 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]); 3345 break; 3346 case GL_MAP1_VERTEX_ATTRIB6_4_NV: 3347 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3348 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]); 3349 break; 3350 case GL_MAP1_VERTEX_ATTRIB7_4_NV: 3351 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3352 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]); 3353 break; 3354 case GL_MAP1_VERTEX_ATTRIB8_4_NV: 3355 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3356 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]); 3357 break; 3358 case GL_MAP1_VERTEX_ATTRIB9_4_NV: 3359 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3360 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]); 3361 break; 3362 case GL_MAP1_VERTEX_ATTRIB10_4_NV: 3363 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3364 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]); 3365 break; 3366 case GL_MAP1_VERTEX_ATTRIB11_4_NV: 3367 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3368 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]); 3369 break; 3370 case GL_MAP1_VERTEX_ATTRIB12_4_NV: 3371 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3372 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]); 3373 break; 3374 case GL_MAP1_VERTEX_ATTRIB13_4_NV: 3375 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3376 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]); 3377 break; 3378 case GL_MAP1_VERTEX_ATTRIB14_4_NV: 3379 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3380 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]); 3381 break; 3382 case GL_MAP1_VERTEX_ATTRIB15_4_NV: 3383 CHECK_EXT1(NV_vertex_program, "GetFloatv"); 3384 params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]); 3385 break; 3386 case GL_FRAGMENT_PROGRAM_NV: 3387 CHECK_EXT1(NV_fragment_program, "GetFloatv"); 3388 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled); 3389 break; 3390 case GL_FRAGMENT_PROGRAM_BINDING_NV: 3391 CHECK_EXT1(NV_fragment_program, "GetFloatv"); 3392 params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0); 3393 break; 3394 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV: 3395 CHECK_EXT1(NV_fragment_program, "GetFloatv"); 3396 params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS); 3397 break; 3398 case GL_TEXTURE_RECTANGLE_NV: 3399 CHECK_EXT1(NV_texture_rectangle, "GetFloatv"); 3400 params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV)); 3401 break; 3402 case GL_TEXTURE_BINDING_RECTANGLE_NV: 3403 CHECK_EXT1(NV_texture_rectangle, "GetFloatv"); 3404 params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name); 3405 break; 3406 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: 3407 CHECK_EXT1(NV_texture_rectangle, "GetFloatv"); 3408 params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize); 3409 break; 3410 case GL_STENCIL_TEST_TWO_SIDE_EXT: 3411 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv"); 3412 params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide); 3413 break; 3414 case GL_ACTIVE_STENCIL_FACE_EXT: 3415 CHECK_EXT1(EXT_stencil_two_side, "GetFloatv"); 3416 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); 3417 break; 3418 case GL_MAX_SHININESS_NV: 3419 CHECK_EXT1(NV_light_max_exponent, "GetFloatv"); 3420 params[0] = ctx->Const.MaxShininess; 3421 break; 3422 case GL_MAX_SPOT_EXPONENT_NV: 3423 CHECK_EXT1(NV_light_max_exponent, "GetFloatv"); 3424 params[0] = ctx->Const.MaxSpotExponent; 3425 break; 3426 case GL_ARRAY_BUFFER_BINDING_ARB: 3427 params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name); 3428 break; 3429 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB: 3430 params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name); 3431 break; 3432 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB: 3433 params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name); 3434 break; 3435 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB: 3436 params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name); 3437 break; 3438 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB: 3439 params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name); 3440 break; 3441 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: 3442 params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name); 3443 break; 3444 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: 3445 params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name); 3446 break; 3447 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: 3448 params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name); 3449 break; 3450 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: 3451 params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name); 3452 break; 3453 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB: 3454 params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name); 3455 break; 3456 case GL_PIXEL_PACK_BUFFER_BINDING_EXT: 3457 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv"); 3458 params[0] = (GLfloat)(ctx->Pack.BufferObj->Name); 3459 break; 3460 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT: 3461 CHECK_EXT1(EXT_pixel_buffer_object, "GetFloatv"); 3462 params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name); 3463 break; 3464 case GL_VERTEX_PROGRAM_ARB: 3465 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv"); 3466 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled); 3467 break; 3468 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB: 3469 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv"); 3470 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled); 3471 break; 3472 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB: 3473 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetFloatv"); 3474 params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled); 3475 break; 3476 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 3477 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv"); 3478 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth); 3479 break; 3480 case GL_MAX_PROGRAM_MATRICES_ARB: 3481 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv"); 3482 params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices); 3483 break; 3484 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB: 3485 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetFloatv"); 3486 params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1); 3487 break; 3488 case GL_CURRENT_MATRIX_ARB: 3489 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetFloatv"); 3490 { 3491 const GLfloat *matrix = ctx->CurrentStack->Top->m; 3492 params[0] = matrix[0]; 3493 params[1] = matrix[1]; 3494 params[2] = matrix[2]; 3495 params[3] = matrix[3]; 3496 params[4] = matrix[4]; 3497 params[5] = matrix[5]; 3498 params[6] = matrix[6]; 3499 params[7] = matrix[7]; 3500 params[8] = matrix[8]; 3501 params[9] = matrix[9]; 3502 params[10] = matrix[10]; 3503 params[11] = matrix[11]; 3504 params[12] = matrix[12]; 3505 params[13] = matrix[13]; 3506 params[14] = matrix[14]; 3507 params[15] = matrix[15]; 3508 } 3509 break; 3510 case GL_TRANSPOSE_CURRENT_MATRIX_ARB: 3511 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetFloatv"); 3512 { 3513 const GLfloat *matrix = ctx->CurrentStack->Top->m; 3514 params[0] = matrix[0]; 3515 params[1] = matrix[4]; 3516 params[2] = matrix[8]; 3517 params[3] = matrix[12]; 3518 params[4] = matrix[1]; 3519 params[5] = matrix[5]; 3520 params[6] = matrix[9]; 3521 params[7] = matrix[13]; 3522 params[8] = matrix[2]; 3523 params[9] = matrix[6]; 3524 params[10] = matrix[10]; 3525 params[11] = matrix[14]; 3526 params[12] = matrix[3]; 3527 params[13] = matrix[7]; 3528 params[14] = matrix[11]; 3529 params[15] = matrix[15]; 3530 } 3531 break; 3532 case GL_MAX_VERTEX_ATTRIBS_ARB: 3533 CHECK_EXT1(ARB_vertex_program, "GetFloatv"); 3534 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs); 3535 break; 3536 case GL_PROGRAM_ERROR_POSITION_ARB: 3537 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetFloatv"); 3538 params[0] = (GLfloat)(ctx->Program.ErrorPos); 3539 break; 3540 case GL_FRAGMENT_PROGRAM_ARB: 3541 CHECK_EXT1(ARB_fragment_program, "GetFloatv"); 3542 params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled); 3543 break; 3544 case GL_MAX_TEXTURE_COORDS_ARB: 3545 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv"); 3546 params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits); 3547 break; 3548 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 3549 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetFloatv"); 3550 params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits); 3551 break; 3552 case GL_DEPTH_BOUNDS_TEST_EXT: 3553 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv"); 3554 params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest); 3555 break; 3556 case GL_DEPTH_BOUNDS_EXT: 3557 CHECK_EXT1(EXT_depth_bounds_test, "GetFloatv"); 3558 params[0] = ctx->Depth.BoundsMin; 3559 params[1] = ctx->Depth.BoundsMax; 3560 break; 3561 case GL_DEPTH_CLAMP: 3562 CHECK_EXT1(ARB_depth_clamp, "GetFloatv"); 3563 params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.DepthClamp); 3564 break; 3565 case GL_MAX_DRAW_BUFFERS_ARB: 3566 params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers); 3567 break; 3568 case GL_DRAW_BUFFER0_ARB: 3569 params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]); 3570 break; 3571 case GL_DRAW_BUFFER1_ARB: 3572 { 3573 GLenum buffer; 3574 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 3575 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 3576 return; 3577 } 3578 buffer = ctx->DrawBuffer->ColorDrawBuffer[1]; 3579 params[0] = ENUM_TO_FLOAT(buffer); 3580 } 3581 break; 3582 case GL_DRAW_BUFFER2_ARB: 3583 { 3584 GLenum buffer; 3585 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 3586 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 3587 return; 3588 } 3589 buffer = ctx->DrawBuffer->ColorDrawBuffer[2]; 3590 params[0] = ENUM_TO_FLOAT(buffer); 3591 } 3592 break; 3593 case GL_DRAW_BUFFER3_ARB: 3594 { 3595 GLenum buffer; 3596 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 3597 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 3598 return; 3599 } 3600 buffer = ctx->DrawBuffer->ColorDrawBuffer[3]; 3601 params[0] = ENUM_TO_FLOAT(buffer); 3602 } 3603 break; 3604 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: 3605 CHECK_EXT1(OES_read_format, "GetFloatv"); 3606 params[0] = (GLfloat)(_mesa_get_color_read_type(ctx)); 3607 break; 3608 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: 3609 CHECK_EXT1(OES_read_format, "GetFloatv"); 3610 params[0] = (GLfloat)(_mesa_get_color_read_format(ctx)); 3611 break; 3612 case GL_NUM_FRAGMENT_REGISTERS_ATI: 3613 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3614 params[0] = (GLfloat)(6); 3615 break; 3616 case GL_NUM_FRAGMENT_CONSTANTS_ATI: 3617 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3618 params[0] = (GLfloat)(8); 3619 break; 3620 case GL_NUM_PASSES_ATI: 3621 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3622 params[0] = (GLfloat)(2); 3623 break; 3624 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI: 3625 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3626 params[0] = (GLfloat)(8); 3627 break; 3628 case GL_NUM_INSTRUCTIONS_TOTAL_ATI: 3629 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3630 params[0] = (GLfloat)(16); 3631 break; 3632 case GL_COLOR_ALPHA_PAIRING_ATI: 3633 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3634 params[0] = BOOLEAN_TO_FLOAT(GL_TRUE); 3635 break; 3636 case GL_NUM_LOOPBACK_COMPONENTS_ATI: 3637 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3638 params[0] = (GLfloat)(3); 3639 break; 3640 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI: 3641 CHECK_EXT1(ATI_fragment_shader, "GetFloatv"); 3642 params[0] = (GLfloat)(3); 3643 break; 3644 case GL_STENCIL_BACK_FUNC: 3645 params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]); 3646 break; 3647 case GL_STENCIL_BACK_VALUE_MASK: 3648 params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]); 3649 break; 3650 case GL_STENCIL_BACK_WRITEMASK: 3651 params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]); 3652 break; 3653 case GL_STENCIL_BACK_REF: 3654 params[0] = (GLfloat)(ctx->Stencil.Ref[1]); 3655 break; 3656 case GL_STENCIL_BACK_FAIL: 3657 params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]); 3658 break; 3659 case GL_STENCIL_BACK_PASS_DEPTH_FAIL: 3660 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]); 3661 break; 3662 case GL_STENCIL_BACK_PASS_DEPTH_PASS: 3663 params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]); 3664 break; 3665 case GL_FRAMEBUFFER_BINDING_EXT: 3666 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); 3667 params[0] = (GLfloat)(ctx->DrawBuffer->Name); 3668 break; 3669 case GL_RENDERBUFFER_BINDING_EXT: 3670 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); 3671 params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0); 3672 break; 3673 case GL_MAX_COLOR_ATTACHMENTS_EXT: 3674 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); 3675 params[0] = (GLfloat)(ctx->Const.MaxColorAttachments); 3676 break; 3677 case GL_MAX_RENDERBUFFER_SIZE_EXT: 3678 CHECK_EXT1(EXT_framebuffer_object, "GetFloatv"); 3679 params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize); 3680 break; 3681 case GL_READ_FRAMEBUFFER_BINDING_EXT: 3682 CHECK_EXT1(EXT_framebuffer_blit, "GetFloatv"); 3683 params[0] = (GLfloat)(ctx->ReadBuffer->Name); 3684 break; 3685 case GL_PROVOKING_VERTEX_EXT: 3686 CHECK_EXT1(EXT_provoking_vertex, "GetFloatv"); 3687 params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ProvokingVertex); 3688 break; 3689 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT: 3690 CHECK_EXT1(EXT_provoking_vertex, "GetFloatv"); 3691 params[0] = BOOLEAN_TO_FLOAT(ctx->Const.QuadsFollowProvokingVertexConvention); 3692 break; 3693 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: 3694 CHECK_EXT1(ARB_fragment_shader, "GetFloatv"); 3695 params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents); 3696 break; 3697 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: 3698 CHECK_EXT1(ARB_fragment_shader, "GetFloatv"); 3699 params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative); 3700 break; 3701 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: 3702 CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); 3703 params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents); 3704 break; 3705 case GL_MAX_VARYING_FLOATS_ARB: 3706 CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); 3707 params[0] = (GLfloat)(ctx->Const.MaxVarying * 4); 3708 break; 3709 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 3710 CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); 3711 params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits); 3712 break; 3713 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: 3714 CHECK_EXT1(ARB_vertex_shader, "GetFloatv"); 3715 params[0] = (GLfloat)(ctx->Const.MaxCombinedTextureImageUnits); 3716 break; 3717 case GL_CURRENT_PROGRAM: 3718 CHECK_EXT1(ARB_shader_objects, "GetFloatv"); 3719 params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0); 3720 break; 3721 case GL_MAX_SAMPLES: 3722 CHECK_EXT1(ARB_framebuffer_object, "GetFloatv"); 3723 params[0] = (GLfloat)(ctx->Const.MaxSamples); 3724 break; 3725 case GL_VERTEX_ARRAY_BINDING_APPLE: 3726 CHECK_EXT1(APPLE_vertex_array_object, "GetFloatv"); 3727 params[0] = (GLfloat)(ctx->Array.ArrayObj->Name); 3728 break; 3729 case GL_TEXTURE_CUBE_MAP_SEAMLESS: 3730 CHECK_EXT1(ARB_seamless_cube_map, "GetFloatv"); 3731 params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.CubeMapSeamless); 3732 break; 3733 case GL_MAX_SERVER_WAIT_TIMEOUT: 3734 CHECK_EXT1(ARB_sync, "GetFloatv"); 3735 params[0] = (GLfloat)(ctx->Const.MaxServerWaitTimeout); 3736 break; 3737 default: 3738 _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname); 3739 } 3740} 3741 3742void GLAPIENTRY 3743_mesa_GetIntegerv( GLenum pname, GLint *params ) 3744{ 3745 GET_CURRENT_CONTEXT(ctx); 3746 ASSERT_OUTSIDE_BEGIN_END(ctx); 3747 3748 if (!params) 3749 return; 3750 3751 if (ctx->NewState) 3752 _mesa_update_state(ctx); 3753 3754 if (ctx->Driver.GetIntegerv && 3755 ctx->Driver.GetIntegerv(ctx, pname, params)) 3756 return; 3757 3758 switch (pname) { 3759 case GL_ACCUM_RED_BITS: 3760 params[0] = ctx->DrawBuffer->Visual.accumRedBits; 3761 break; 3762 case GL_ACCUM_GREEN_BITS: 3763 params[0] = ctx->DrawBuffer->Visual.accumGreenBits; 3764 break; 3765 case GL_ACCUM_BLUE_BITS: 3766 params[0] = ctx->DrawBuffer->Visual.accumBlueBits; 3767 break; 3768 case GL_ACCUM_ALPHA_BITS: 3769 params[0] = ctx->DrawBuffer->Visual.accumAlphaBits; 3770 break; 3771 case GL_ACCUM_CLEAR_VALUE: 3772 params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]); 3773 params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]); 3774 params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]); 3775 params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]); 3776 break; 3777 case GL_ALPHA_BIAS: 3778 params[0] = IROUND(ctx->Pixel.AlphaBias); 3779 break; 3780 case GL_ALPHA_BITS: 3781 params[0] = ctx->DrawBuffer->Visual.alphaBits; 3782 break; 3783 case GL_ALPHA_SCALE: 3784 params[0] = IROUND(ctx->Pixel.AlphaScale); 3785 break; 3786 case GL_ALPHA_TEST: 3787 params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled); 3788 break; 3789 case GL_ALPHA_TEST_FUNC: 3790 params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc); 3791 break; 3792 case GL_ALPHA_TEST_REF: 3793 params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef); 3794 break; 3795 case GL_ATTRIB_STACK_DEPTH: 3796 params[0] = ctx->AttribStackDepth; 3797 break; 3798 case GL_AUTO_NORMAL: 3799 params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal); 3800 break; 3801 case GL_AUX_BUFFERS: 3802 params[0] = ctx->DrawBuffer->Visual.numAuxBuffers; 3803 break; 3804 case GL_BLEND: 3805 params[0] = BOOLEAN_TO_INT((ctx->Color.BlendEnabled & 1)); 3806 break; 3807 case GL_BLEND_DST: 3808 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB); 3809 break; 3810 case GL_BLEND_SRC: 3811 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB); 3812 break; 3813 case GL_BLEND_SRC_RGB_EXT: 3814 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB); 3815 break; 3816 case GL_BLEND_DST_RGB_EXT: 3817 params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB); 3818 break; 3819 case GL_BLEND_SRC_ALPHA_EXT: 3820 params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA); 3821 break; 3822 case GL_BLEND_DST_ALPHA_EXT: 3823 params[0] = ENUM_TO_INT(ctx->Color.BlendDstA); 3824 break; 3825 case GL_BLEND_EQUATION: 3826 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB ); 3827 break; 3828 case GL_BLEND_EQUATION_ALPHA_EXT: 3829 params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA ); 3830 break; 3831 case GL_BLEND_COLOR_EXT: 3832 params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]); 3833 params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]); 3834 params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]); 3835 params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]); 3836 break; 3837 case GL_BLUE_BIAS: 3838 params[0] = IROUND(ctx->Pixel.BlueBias); 3839 break; 3840 case GL_BLUE_BITS: 3841 params[0] = ctx->DrawBuffer->Visual.blueBits; 3842 break; 3843 case GL_BLUE_SCALE: 3844 params[0] = IROUND(ctx->Pixel.BlueScale); 3845 break; 3846 case GL_CLIENT_ATTRIB_STACK_DEPTH: 3847 params[0] = ctx->ClientAttribStackDepth; 3848 break; 3849 case GL_CLIP_PLANE0: 3850 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1); 3851 break; 3852 case GL_CLIP_PLANE1: 3853 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1); 3854 break; 3855 case GL_CLIP_PLANE2: 3856 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1); 3857 break; 3858 case GL_CLIP_PLANE3: 3859 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1); 3860 break; 3861 case GL_CLIP_PLANE4: 3862 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1); 3863 break; 3864 case GL_CLIP_PLANE5: 3865 params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1); 3866 break; 3867 case GL_COLOR_CLEAR_VALUE: 3868 params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]); 3869 params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]); 3870 params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]); 3871 params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]); 3872 break; 3873 case GL_COLOR_MATERIAL: 3874 params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled); 3875 break; 3876 case GL_COLOR_MATERIAL_FACE: 3877 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace); 3878 break; 3879 case GL_COLOR_MATERIAL_PARAMETER: 3880 params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode); 3881 break; 3882 case GL_COLOR_WRITEMASK: 3883 params[0] = ctx->Color.ColorMask[0][RCOMP] ? 1 : 0; 3884 params[1] = ctx->Color.ColorMask[0][GCOMP] ? 1 : 0; 3885 params[2] = ctx->Color.ColorMask[0][BCOMP] ? 1 : 0; 3886 params[3] = ctx->Color.ColorMask[0][ACOMP] ? 1 : 0; 3887 break; 3888 case GL_CULL_FACE: 3889 params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag); 3890 break; 3891 case GL_CULL_FACE_MODE: 3892 params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode); 3893 break; 3894 case GL_CURRENT_COLOR: 3895 { 3896 FLUSH_CURRENT(ctx, 0); 3897 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]); 3898 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]); 3899 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]); 3900 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]); 3901 } 3902 break; 3903 case GL_CURRENT_INDEX: 3904 { 3905 FLUSH_CURRENT(ctx, 0); 3906 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]); 3907 } 3908 break; 3909 case GL_CURRENT_NORMAL: 3910 { 3911 FLUSH_CURRENT(ctx, 0); 3912 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]); 3913 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]); 3914 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]); 3915 } 3916 break; 3917 case GL_CURRENT_RASTER_COLOR: 3918 params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]); 3919 params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]); 3920 params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]); 3921 params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]); 3922 break; 3923 case GL_CURRENT_RASTER_DISTANCE: 3924 params[0] = IROUND(ctx->Current.RasterDistance); 3925 break; 3926 case GL_CURRENT_RASTER_INDEX: 3927 params[0] = IROUND(ctx->Current.RasterIndex); 3928 break; 3929 case GL_CURRENT_RASTER_POSITION: 3930 params[0] = IROUND(ctx->Current.RasterPos[0]); 3931 params[1] = IROUND(ctx->Current.RasterPos[1]); 3932 params[2] = IROUND(ctx->Current.RasterPos[2]); 3933 params[3] = IROUND(ctx->Current.RasterPos[3]); 3934 break; 3935 case GL_CURRENT_RASTER_SECONDARY_COLOR: 3936 params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]); 3937 params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]); 3938 params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]); 3939 params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]); 3940 break; 3941 case GL_CURRENT_RASTER_TEXTURE_COORDS: 3942 { 3943 const GLuint texUnit = ctx->Texture.CurrentUnit; 3944 params[0] = IROUND(ctx->Current.RasterTexCoords[texUnit][0]); 3945 params[1] = IROUND(ctx->Current.RasterTexCoords[texUnit][1]); 3946 params[2] = IROUND(ctx->Current.RasterTexCoords[texUnit][2]); 3947 params[3] = IROUND(ctx->Current.RasterTexCoords[texUnit][3]); 3948 } 3949 break; 3950 case GL_CURRENT_RASTER_POSITION_VALID: 3951 params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid); 3952 break; 3953 case GL_CURRENT_TEXTURE_COORDS: 3954 { 3955 const GLuint texUnit = ctx->Texture.CurrentUnit; 3956 FLUSH_CURRENT(ctx, 0); 3957 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]); 3958 params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]); 3959 params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]); 3960 params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]); 3961 } 3962 break; 3963 case GL_DEPTH_BIAS: 3964 params[0] = IROUND(ctx->Pixel.DepthBias); 3965 break; 3966 case GL_DEPTH_BITS: 3967 params[0] = ctx->DrawBuffer->Visual.depthBits; 3968 break; 3969 case GL_DEPTH_CLEAR_VALUE: 3970 params[0] = FLOAT_TO_INT(((GLfloat) ctx->Depth.Clear)); 3971 break; 3972 case GL_DEPTH_FUNC: 3973 params[0] = ENUM_TO_INT(ctx->Depth.Func); 3974 break; 3975 case GL_DEPTH_RANGE: 3976 params[0] = FLOAT_TO_INT(ctx->Viewport.Near); 3977 params[1] = FLOAT_TO_INT(ctx->Viewport.Far); 3978 break; 3979 case GL_DEPTH_SCALE: 3980 params[0] = IROUND(ctx->Pixel.DepthScale); 3981 break; 3982 case GL_DEPTH_TEST: 3983 params[0] = BOOLEAN_TO_INT(ctx->Depth.Test); 3984 break; 3985 case GL_DEPTH_WRITEMASK: 3986 params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask); 3987 break; 3988 case GL_DITHER: 3989 params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag); 3990 break; 3991 case GL_DOUBLEBUFFER: 3992 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode); 3993 break; 3994 case GL_DRAW_BUFFER: 3995 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]); 3996 break; 3997 case GL_EDGE_FLAG: 3998 { 3999 FLUSH_CURRENT(ctx, 0); 4000 params[0] = BOOLEAN_TO_INT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0)); 4001 } 4002 break; 4003 case GL_FEEDBACK_BUFFER_SIZE: 4004 params[0] = ctx->Feedback.BufferSize; 4005 break; 4006 case GL_FEEDBACK_BUFFER_TYPE: 4007 params[0] = ENUM_TO_INT(ctx->Feedback.Type); 4008 break; 4009 case GL_FOG: 4010 params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled); 4011 break; 4012 case GL_FOG_COLOR: 4013 params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]); 4014 params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]); 4015 params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]); 4016 params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]); 4017 break; 4018 case GL_FOG_DENSITY: 4019 params[0] = IROUND(ctx->Fog.Density); 4020 break; 4021 case GL_FOG_END: 4022 params[0] = IROUND(ctx->Fog.End); 4023 break; 4024 case GL_FOG_HINT: 4025 params[0] = ENUM_TO_INT(ctx->Hint.Fog); 4026 break; 4027 case GL_FOG_INDEX: 4028 params[0] = IROUND(ctx->Fog.Index); 4029 break; 4030 case GL_FOG_MODE: 4031 params[0] = ENUM_TO_INT(ctx->Fog.Mode); 4032 break; 4033 case GL_FOG_START: 4034 params[0] = IROUND(ctx->Fog.Start); 4035 break; 4036 case GL_FRONT_FACE: 4037 params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace); 4038 break; 4039 case GL_GREEN_BIAS: 4040 params[0] = IROUND(ctx->Pixel.GreenBias); 4041 break; 4042 case GL_GREEN_BITS: 4043 params[0] = ctx->DrawBuffer->Visual.greenBits; 4044 break; 4045 case GL_GREEN_SCALE: 4046 params[0] = IROUND(ctx->Pixel.GreenScale); 4047 break; 4048 case GL_INDEX_BITS: 4049 params[0] = ctx->DrawBuffer->Visual.indexBits; 4050 break; 4051 case GL_INDEX_CLEAR_VALUE: 4052 params[0] = ctx->Color.ClearIndex; 4053 break; 4054 case GL_INDEX_MODE: 4055 params[0] = BOOLEAN_TO_INT(!ctx->DrawBuffer->Visual.rgbMode); 4056 break; 4057 case GL_INDEX_OFFSET: 4058 params[0] = ctx->Pixel.IndexOffset; 4059 break; 4060 case GL_INDEX_SHIFT: 4061 params[0] = ctx->Pixel.IndexShift; 4062 break; 4063 case GL_INDEX_WRITEMASK: 4064 params[0] = ctx->Color.IndexMask; 4065 break; 4066 case GL_LIGHT0: 4067 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled); 4068 break; 4069 case GL_LIGHT1: 4070 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled); 4071 break; 4072 case GL_LIGHT2: 4073 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled); 4074 break; 4075 case GL_LIGHT3: 4076 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled); 4077 break; 4078 case GL_LIGHT4: 4079 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled); 4080 break; 4081 case GL_LIGHT5: 4082 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled); 4083 break; 4084 case GL_LIGHT6: 4085 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled); 4086 break; 4087 case GL_LIGHT7: 4088 params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled); 4089 break; 4090 case GL_LIGHTING: 4091 params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled); 4092 break; 4093 case GL_LIGHT_MODEL_AMBIENT: 4094 params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]); 4095 params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]); 4096 params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]); 4097 params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]); 4098 break; 4099 case GL_LIGHT_MODEL_COLOR_CONTROL: 4100 params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl); 4101 break; 4102 case GL_LIGHT_MODEL_LOCAL_VIEWER: 4103 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer); 4104 break; 4105 case GL_LIGHT_MODEL_TWO_SIDE: 4106 params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide); 4107 break; 4108 case GL_LINE_SMOOTH: 4109 params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag); 4110 break; 4111 case GL_LINE_SMOOTH_HINT: 4112 params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth); 4113 break; 4114 case GL_LINE_STIPPLE: 4115 params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag); 4116 break; 4117 case GL_LINE_STIPPLE_PATTERN: 4118 params[0] = ctx->Line.StipplePattern; 4119 break; 4120 case GL_LINE_STIPPLE_REPEAT: 4121 params[0] = ctx->Line.StippleFactor; 4122 break; 4123 case GL_LINE_WIDTH: 4124 params[0] = IROUND(ctx->Line.Width); 4125 break; 4126 case GL_LINE_WIDTH_GRANULARITY: 4127 params[0] = IROUND(ctx->Const.LineWidthGranularity); 4128 break; 4129 case GL_LINE_WIDTH_RANGE: 4130 params[0] = IROUND(ctx->Const.MinLineWidthAA); 4131 params[1] = IROUND(ctx->Const.MaxLineWidthAA); 4132 break; 4133 case GL_ALIASED_LINE_WIDTH_RANGE: 4134 params[0] = IROUND(ctx->Const.MinLineWidth); 4135 params[1] = IROUND(ctx->Const.MaxLineWidth); 4136 break; 4137 case GL_LIST_BASE: 4138 params[0] = ctx->List.ListBase; 4139 break; 4140 case GL_LIST_INDEX: 4141 params[0] = (ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0); 4142 break; 4143 case GL_LIST_MODE: 4144 { 4145 GLenum mode; 4146 if (!ctx->CompileFlag) 4147 mode = 0; 4148 else if (ctx->ExecuteFlag) 4149 mode = GL_COMPILE_AND_EXECUTE; 4150 else 4151 mode = GL_COMPILE; 4152 params[0] = ENUM_TO_INT(mode); 4153 } 4154 break; 4155 case GL_INDEX_LOGIC_OP: 4156 params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled); 4157 break; 4158 case GL_COLOR_LOGIC_OP: 4159 params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled); 4160 break; 4161 case GL_LOGIC_OP_MODE: 4162 params[0] = ENUM_TO_INT(ctx->Color.LogicOp); 4163 break; 4164 case GL_MAP1_COLOR_4: 4165 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4); 4166 break; 4167 case GL_MAP1_GRID_DOMAIN: 4168 params[0] = IROUND(ctx->Eval.MapGrid1u1); 4169 params[1] = IROUND(ctx->Eval.MapGrid1u2); 4170 break; 4171 case GL_MAP1_GRID_SEGMENTS: 4172 params[0] = ctx->Eval.MapGrid1un; 4173 break; 4174 case GL_MAP1_INDEX: 4175 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index); 4176 break; 4177 case GL_MAP1_NORMAL: 4178 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal); 4179 break; 4180 case GL_MAP1_TEXTURE_COORD_1: 4181 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1); 4182 break; 4183 case GL_MAP1_TEXTURE_COORD_2: 4184 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2); 4185 break; 4186 case GL_MAP1_TEXTURE_COORD_3: 4187 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3); 4188 break; 4189 case GL_MAP1_TEXTURE_COORD_4: 4190 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4); 4191 break; 4192 case GL_MAP1_VERTEX_3: 4193 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3); 4194 break; 4195 case GL_MAP1_VERTEX_4: 4196 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4); 4197 break; 4198 case GL_MAP2_COLOR_4: 4199 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4); 4200 break; 4201 case GL_MAP2_GRID_DOMAIN: 4202 params[0] = IROUND(ctx->Eval.MapGrid2u1); 4203 params[1] = IROUND(ctx->Eval.MapGrid2u2); 4204 params[2] = IROUND(ctx->Eval.MapGrid2v1); 4205 params[3] = IROUND(ctx->Eval.MapGrid2v2); 4206 break; 4207 case GL_MAP2_GRID_SEGMENTS: 4208 params[0] = ctx->Eval.MapGrid2un; 4209 params[1] = ctx->Eval.MapGrid2vn; 4210 break; 4211 case GL_MAP2_INDEX: 4212 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index); 4213 break; 4214 case GL_MAP2_NORMAL: 4215 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal); 4216 break; 4217 case GL_MAP2_TEXTURE_COORD_1: 4218 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1); 4219 break; 4220 case GL_MAP2_TEXTURE_COORD_2: 4221 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2); 4222 break; 4223 case GL_MAP2_TEXTURE_COORD_3: 4224 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3); 4225 break; 4226 case GL_MAP2_TEXTURE_COORD_4: 4227 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4); 4228 break; 4229 case GL_MAP2_VERTEX_3: 4230 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3); 4231 break; 4232 case GL_MAP2_VERTEX_4: 4233 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4); 4234 break; 4235 case GL_MAP_COLOR: 4236 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag); 4237 break; 4238 case GL_MAP_STENCIL: 4239 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag); 4240 break; 4241 case GL_MATRIX_MODE: 4242 params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode); 4243 break; 4244 case GL_MAX_ATTRIB_STACK_DEPTH: 4245 params[0] = MAX_ATTRIB_STACK_DEPTH; 4246 break; 4247 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: 4248 params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH; 4249 break; 4250 case GL_MAX_CLIP_PLANES: 4251 params[0] = ctx->Const.MaxClipPlanes; 4252 break; 4253 case GL_MAX_ELEMENTS_VERTICES: 4254 params[0] = ctx->Const.MaxArrayLockSize; 4255 break; 4256 case GL_MAX_ELEMENTS_INDICES: 4257 params[0] = ctx->Const.MaxArrayLockSize; 4258 break; 4259 case GL_MAX_EVAL_ORDER: 4260 params[0] = MAX_EVAL_ORDER; 4261 break; 4262 case GL_MAX_LIGHTS: 4263 params[0] = ctx->Const.MaxLights; 4264 break; 4265 case GL_MAX_LIST_NESTING: 4266 params[0] = MAX_LIST_NESTING; 4267 break; 4268 case GL_MAX_MODELVIEW_STACK_DEPTH: 4269 params[0] = MAX_MODELVIEW_STACK_DEPTH; 4270 break; 4271 case GL_MAX_NAME_STACK_DEPTH: 4272 params[0] = MAX_NAME_STACK_DEPTH; 4273 break; 4274 case GL_MAX_PIXEL_MAP_TABLE: 4275 params[0] = MAX_PIXEL_MAP_TABLE; 4276 break; 4277 case GL_MAX_PROJECTION_STACK_DEPTH: 4278 params[0] = MAX_PROJECTION_STACK_DEPTH; 4279 break; 4280 case GL_MAX_TEXTURE_SIZE: 4281 params[0] = 1 << (ctx->Const.MaxTextureLevels - 1); 4282 break; 4283 case GL_MAX_3D_TEXTURE_SIZE: 4284 params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1); 4285 break; 4286 case GL_MAX_TEXTURE_STACK_DEPTH: 4287 params[0] = MAX_TEXTURE_STACK_DEPTH; 4288 break; 4289 case GL_MAX_VIEWPORT_DIMS: 4290 params[0] = ctx->Const.MaxViewportWidth; 4291 params[1] = ctx->Const.MaxViewportHeight; 4292 break; 4293 case GL_MODELVIEW_MATRIX: 4294 { 4295 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 4296 params[0] = IROUND(matrix[0]); 4297 params[1] = IROUND(matrix[1]); 4298 params[2] = IROUND(matrix[2]); 4299 params[3] = IROUND(matrix[3]); 4300 params[4] = IROUND(matrix[4]); 4301 params[5] = IROUND(matrix[5]); 4302 params[6] = IROUND(matrix[6]); 4303 params[7] = IROUND(matrix[7]); 4304 params[8] = IROUND(matrix[8]); 4305 params[9] = IROUND(matrix[9]); 4306 params[10] = IROUND(matrix[10]); 4307 params[11] = IROUND(matrix[11]); 4308 params[12] = IROUND(matrix[12]); 4309 params[13] = IROUND(matrix[13]); 4310 params[14] = IROUND(matrix[14]); 4311 params[15] = IROUND(matrix[15]); 4312 } 4313 break; 4314 case GL_MODELVIEW_STACK_DEPTH: 4315 params[0] = ctx->ModelviewMatrixStack.Depth + 1; 4316 break; 4317 case GL_NAME_STACK_DEPTH: 4318 params[0] = ctx->Select.NameStackDepth; 4319 break; 4320 case GL_NORMALIZE: 4321 params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize); 4322 break; 4323 case GL_PACK_ALIGNMENT: 4324 params[0] = ctx->Pack.Alignment; 4325 break; 4326 case GL_PACK_LSB_FIRST: 4327 params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst); 4328 break; 4329 case GL_PACK_ROW_LENGTH: 4330 params[0] = ctx->Pack.RowLength; 4331 break; 4332 case GL_PACK_SKIP_PIXELS: 4333 params[0] = ctx->Pack.SkipPixels; 4334 break; 4335 case GL_PACK_SKIP_ROWS: 4336 params[0] = ctx->Pack.SkipRows; 4337 break; 4338 case GL_PACK_SWAP_BYTES: 4339 params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes); 4340 break; 4341 case GL_PACK_SKIP_IMAGES_EXT: 4342 params[0] = ctx->Pack.SkipImages; 4343 break; 4344 case GL_PACK_IMAGE_HEIGHT_EXT: 4345 params[0] = ctx->Pack.ImageHeight; 4346 break; 4347 case GL_PACK_INVERT_MESA: 4348 params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert); 4349 break; 4350 case GL_PERSPECTIVE_CORRECTION_HINT: 4351 params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection); 4352 break; 4353 case GL_PIXEL_MAP_A_TO_A_SIZE: 4354 params[0] = ctx->PixelMaps.AtoA.Size; 4355 break; 4356 case GL_PIXEL_MAP_B_TO_B_SIZE: 4357 params[0] = ctx->PixelMaps.BtoB.Size; 4358 break; 4359 case GL_PIXEL_MAP_G_TO_G_SIZE: 4360 params[0] = ctx->PixelMaps.GtoG.Size; 4361 break; 4362 case GL_PIXEL_MAP_I_TO_A_SIZE: 4363 params[0] = ctx->PixelMaps.ItoA.Size; 4364 break; 4365 case GL_PIXEL_MAP_I_TO_B_SIZE: 4366 params[0] = ctx->PixelMaps.ItoB.Size; 4367 break; 4368 case GL_PIXEL_MAP_I_TO_G_SIZE: 4369 params[0] = ctx->PixelMaps.ItoG.Size; 4370 break; 4371 case GL_PIXEL_MAP_I_TO_I_SIZE: 4372 params[0] = ctx->PixelMaps.ItoI.Size; 4373 break; 4374 case GL_PIXEL_MAP_I_TO_R_SIZE: 4375 params[0] = ctx->PixelMaps.ItoR.Size; 4376 break; 4377 case GL_PIXEL_MAP_R_TO_R_SIZE: 4378 params[0] = ctx->PixelMaps.RtoR.Size; 4379 break; 4380 case GL_PIXEL_MAP_S_TO_S_SIZE: 4381 params[0] = ctx->PixelMaps.StoS.Size; 4382 break; 4383 case GL_POINT_SIZE: 4384 params[0] = IROUND(ctx->Point.Size); 4385 break; 4386 case GL_POINT_SIZE_GRANULARITY: 4387 params[0] = IROUND(ctx->Const.PointSizeGranularity); 4388 break; 4389 case GL_POINT_SIZE_RANGE: 4390 params[0] = IROUND(ctx->Const.MinPointSizeAA); 4391 params[1] = IROUND(ctx->Const.MaxPointSizeAA); 4392 break; 4393 case GL_ALIASED_POINT_SIZE_RANGE: 4394 params[0] = IROUND(ctx->Const.MinPointSize); 4395 params[1] = IROUND(ctx->Const.MaxPointSize); 4396 break; 4397 case GL_POINT_SMOOTH: 4398 params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag); 4399 break; 4400 case GL_POINT_SMOOTH_HINT: 4401 params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth); 4402 break; 4403 case GL_POINT_SIZE_MIN_EXT: 4404 params[0] = IROUND(ctx->Point.MinSize); 4405 break; 4406 case GL_POINT_SIZE_MAX_EXT: 4407 params[0] = IROUND(ctx->Point.MaxSize); 4408 break; 4409 case GL_POINT_FADE_THRESHOLD_SIZE_EXT: 4410 params[0] = IROUND(ctx->Point.Threshold); 4411 break; 4412 case GL_DISTANCE_ATTENUATION_EXT: 4413 params[0] = IROUND(ctx->Point.Params[0]); 4414 params[1] = IROUND(ctx->Point.Params[1]); 4415 params[2] = IROUND(ctx->Point.Params[2]); 4416 break; 4417 case GL_POLYGON_MODE: 4418 params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode); 4419 params[1] = ENUM_TO_INT(ctx->Polygon.BackMode); 4420 break; 4421 case GL_POLYGON_OFFSET_BIAS_EXT: 4422 params[0] = IROUND(ctx->Polygon.OffsetUnits); 4423 break; 4424 case GL_POLYGON_OFFSET_FACTOR: 4425 params[0] = IROUND(ctx->Polygon.OffsetFactor ); 4426 break; 4427 case GL_POLYGON_OFFSET_UNITS: 4428 params[0] = IROUND(ctx->Polygon.OffsetUnits ); 4429 break; 4430 case GL_POLYGON_OFFSET_POINT: 4431 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetPoint); 4432 break; 4433 case GL_POLYGON_OFFSET_LINE: 4434 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetLine); 4435 break; 4436 case GL_POLYGON_OFFSET_FILL: 4437 params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetFill); 4438 break; 4439 case GL_POLYGON_SMOOTH: 4440 params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag); 4441 break; 4442 case GL_POLYGON_SMOOTH_HINT: 4443 params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth); 4444 break; 4445 case GL_POLYGON_STIPPLE: 4446 params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag); 4447 break; 4448 case GL_PROJECTION_MATRIX: 4449 { 4450 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 4451 params[0] = IROUND(matrix[0]); 4452 params[1] = IROUND(matrix[1]); 4453 params[2] = IROUND(matrix[2]); 4454 params[3] = IROUND(matrix[3]); 4455 params[4] = IROUND(matrix[4]); 4456 params[5] = IROUND(matrix[5]); 4457 params[6] = IROUND(matrix[6]); 4458 params[7] = IROUND(matrix[7]); 4459 params[8] = IROUND(matrix[8]); 4460 params[9] = IROUND(matrix[9]); 4461 params[10] = IROUND(matrix[10]); 4462 params[11] = IROUND(matrix[11]); 4463 params[12] = IROUND(matrix[12]); 4464 params[13] = IROUND(matrix[13]); 4465 params[14] = IROUND(matrix[14]); 4466 params[15] = IROUND(matrix[15]); 4467 } 4468 break; 4469 case GL_PROJECTION_STACK_DEPTH: 4470 params[0] = ctx->ProjectionMatrixStack.Depth + 1; 4471 break; 4472 case GL_READ_BUFFER: 4473 params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer); 4474 break; 4475 case GL_RED_BIAS: 4476 params[0] = IROUND(ctx->Pixel.RedBias); 4477 break; 4478 case GL_RED_BITS: 4479 params[0] = ctx->DrawBuffer->Visual.redBits; 4480 break; 4481 case GL_RED_SCALE: 4482 params[0] = IROUND(ctx->Pixel.RedScale); 4483 break; 4484 case GL_RENDER_MODE: 4485 params[0] = ENUM_TO_INT(ctx->RenderMode); 4486 break; 4487 case GL_RESCALE_NORMAL: 4488 params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals); 4489 break; 4490 case GL_RGBA_MODE: 4491 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.rgbMode); 4492 break; 4493 case GL_SCISSOR_BOX: 4494 params[0] = ctx->Scissor.X; 4495 params[1] = ctx->Scissor.Y; 4496 params[2] = ctx->Scissor.Width; 4497 params[3] = ctx->Scissor.Height; 4498 break; 4499 case GL_SCISSOR_TEST: 4500 params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled); 4501 break; 4502 case GL_SELECTION_BUFFER_SIZE: 4503 params[0] = ctx->Select.BufferSize; 4504 break; 4505 case GL_SHADE_MODEL: 4506 params[0] = ENUM_TO_INT(ctx->Light.ShadeModel); 4507 break; 4508 case GL_SHARED_TEXTURE_PALETTE_EXT: 4509 params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette); 4510 break; 4511 case GL_STENCIL_BITS: 4512 params[0] = ctx->DrawBuffer->Visual.stencilBits; 4513 break; 4514 case GL_STENCIL_CLEAR_VALUE: 4515 params[0] = ctx->Stencil.Clear; 4516 break; 4517 case GL_STENCIL_FAIL: 4518 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); 4519 break; 4520 case GL_STENCIL_FUNC: 4521 params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); 4522 break; 4523 case GL_STENCIL_PASS_DEPTH_FAIL: 4524 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); 4525 break; 4526 case GL_STENCIL_PASS_DEPTH_PASS: 4527 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); 4528 break; 4529 case GL_STENCIL_REF: 4530 params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace]; 4531 break; 4532 case GL_STENCIL_TEST: 4533 params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled); 4534 break; 4535 case GL_STENCIL_VALUE_MASK: 4536 params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]; 4537 break; 4538 case GL_STENCIL_WRITEMASK: 4539 params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]; 4540 break; 4541 case GL_STEREO: 4542 params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode); 4543 break; 4544 case GL_SUBPIXEL_BITS: 4545 params[0] = ctx->Const.SubPixelBits; 4546 break; 4547 case GL_TEXTURE_1D: 4548 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D)); 4549 break; 4550 case GL_TEXTURE_2D: 4551 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D)); 4552 break; 4553 case GL_TEXTURE_3D: 4554 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D)); 4555 break; 4556 case GL_TEXTURE_1D_ARRAY_EXT: 4557 CHECK_EXT1(MESA_texture_array, "GetIntegerv"); 4558 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)); 4559 break; 4560 case GL_TEXTURE_2D_ARRAY_EXT: 4561 CHECK_EXT1(MESA_texture_array, "GetIntegerv"); 4562 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)); 4563 break; 4564 case GL_TEXTURE_BINDING_1D: 4565 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name; 4566 break; 4567 case GL_TEXTURE_BINDING_2D: 4568 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name; 4569 break; 4570 case GL_TEXTURE_BINDING_3D: 4571 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name; 4572 break; 4573 case GL_TEXTURE_BINDING_1D_ARRAY_EXT: 4574 CHECK_EXT1(MESA_texture_array, "GetIntegerv"); 4575 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name; 4576 break; 4577 case GL_TEXTURE_BINDING_2D_ARRAY_EXT: 4578 CHECK_EXT1(MESA_texture_array, "GetIntegerv"); 4579 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name; 4580 break; 4581 case GL_TEXTURE_GEN_S: 4582 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)); 4583 break; 4584 case GL_TEXTURE_GEN_T: 4585 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0)); 4586 break; 4587 case GL_TEXTURE_GEN_R: 4588 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0)); 4589 break; 4590 case GL_TEXTURE_GEN_Q: 4591 params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0)); 4592 break; 4593 case GL_TEXTURE_MATRIX: 4594 { 4595 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 4596 params[0] = IROUND(matrix[0]); 4597 params[1] = IROUND(matrix[1]); 4598 params[2] = IROUND(matrix[2]); 4599 params[3] = IROUND(matrix[3]); 4600 params[4] = IROUND(matrix[4]); 4601 params[5] = IROUND(matrix[5]); 4602 params[6] = IROUND(matrix[6]); 4603 params[7] = IROUND(matrix[7]); 4604 params[8] = IROUND(matrix[8]); 4605 params[9] = IROUND(matrix[9]); 4606 params[10] = IROUND(matrix[10]); 4607 params[11] = IROUND(matrix[11]); 4608 params[12] = IROUND(matrix[12]); 4609 params[13] = IROUND(matrix[13]); 4610 params[14] = IROUND(matrix[14]); 4611 params[15] = IROUND(matrix[15]); 4612 } 4613 break; 4614 case GL_TEXTURE_STACK_DEPTH: 4615 params[0] = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1; 4616 break; 4617 case GL_UNPACK_ALIGNMENT: 4618 params[0] = ctx->Unpack.Alignment; 4619 break; 4620 case GL_UNPACK_LSB_FIRST: 4621 params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst); 4622 break; 4623 case GL_UNPACK_ROW_LENGTH: 4624 params[0] = ctx->Unpack.RowLength; 4625 break; 4626 case GL_UNPACK_SKIP_PIXELS: 4627 params[0] = ctx->Unpack.SkipPixels; 4628 break; 4629 case GL_UNPACK_SKIP_ROWS: 4630 params[0] = ctx->Unpack.SkipRows; 4631 break; 4632 case GL_UNPACK_SWAP_BYTES: 4633 params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes); 4634 break; 4635 case GL_UNPACK_SKIP_IMAGES_EXT: 4636 params[0] = ctx->Unpack.SkipImages; 4637 break; 4638 case GL_UNPACK_IMAGE_HEIGHT_EXT: 4639 params[0] = ctx->Unpack.ImageHeight; 4640 break; 4641 case GL_UNPACK_CLIENT_STORAGE_APPLE: 4642 params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage); 4643 break; 4644 case GL_VIEWPORT: 4645 params[0] = ctx->Viewport.X; 4646 params[1] = ctx->Viewport.Y; 4647 params[2] = ctx->Viewport.Width; 4648 params[3] = ctx->Viewport.Height; 4649 break; 4650 case GL_ZOOM_X: 4651 params[0] = IROUND(ctx->Pixel.ZoomX); 4652 break; 4653 case GL_ZOOM_Y: 4654 params[0] = IROUND(ctx->Pixel.ZoomY); 4655 break; 4656 case GL_VERTEX_ARRAY: 4657 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled); 4658 break; 4659 case GL_VERTEX_ARRAY_SIZE: 4660 params[0] = ctx->Array.ArrayObj->Vertex.Size; 4661 break; 4662 case GL_VERTEX_ARRAY_TYPE: 4663 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type); 4664 break; 4665 case GL_VERTEX_ARRAY_STRIDE: 4666 params[0] = ctx->Array.ArrayObj->Vertex.Stride; 4667 break; 4668 case GL_VERTEX_ARRAY_COUNT_EXT: 4669 params[0] = 0; 4670 break; 4671 case GL_NORMAL_ARRAY: 4672 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled); 4673 break; 4674 case GL_NORMAL_ARRAY_TYPE: 4675 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type); 4676 break; 4677 case GL_NORMAL_ARRAY_STRIDE: 4678 params[0] = ctx->Array.ArrayObj->Normal.Stride; 4679 break; 4680 case GL_NORMAL_ARRAY_COUNT_EXT: 4681 params[0] = 0; 4682 break; 4683 case GL_COLOR_ARRAY: 4684 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled); 4685 break; 4686 case GL_COLOR_ARRAY_SIZE: 4687 params[0] = ctx->Array.ArrayObj->Color.Size; 4688 break; 4689 case GL_COLOR_ARRAY_TYPE: 4690 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type); 4691 break; 4692 case GL_COLOR_ARRAY_STRIDE: 4693 params[0] = ctx->Array.ArrayObj->Color.Stride; 4694 break; 4695 case GL_COLOR_ARRAY_COUNT_EXT: 4696 params[0] = 0; 4697 break; 4698 case GL_INDEX_ARRAY: 4699 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled); 4700 break; 4701 case GL_INDEX_ARRAY_TYPE: 4702 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type); 4703 break; 4704 case GL_INDEX_ARRAY_STRIDE: 4705 params[0] = ctx->Array.ArrayObj->Index.Stride; 4706 break; 4707 case GL_INDEX_ARRAY_COUNT_EXT: 4708 params[0] = 0; 4709 break; 4710 case GL_TEXTURE_COORD_ARRAY: 4711 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled); 4712 break; 4713 case GL_TEXTURE_COORD_ARRAY_SIZE: 4714 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size; 4715 break; 4716 case GL_TEXTURE_COORD_ARRAY_TYPE: 4717 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type); 4718 break; 4719 case GL_TEXTURE_COORD_ARRAY_STRIDE: 4720 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride; 4721 break; 4722 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: 4723 params[0] = 0; 4724 break; 4725 case GL_EDGE_FLAG_ARRAY: 4726 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled); 4727 break; 4728 case GL_EDGE_FLAG_ARRAY_STRIDE: 4729 params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride; 4730 break; 4731 case GL_EDGE_FLAG_ARRAY_COUNT_EXT: 4732 params[0] = 0; 4733 break; 4734 case GL_MAX_TEXTURE_UNITS_ARB: 4735 CHECK_EXT1(ARB_multitexture, "GetIntegerv"); 4736 params[0] = ctx->Const.MaxTextureUnits; 4737 break; 4738 case GL_ACTIVE_TEXTURE_ARB: 4739 CHECK_EXT1(ARB_multitexture, "GetIntegerv"); 4740 params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit; 4741 break; 4742 case GL_CLIENT_ACTIVE_TEXTURE_ARB: 4743 CHECK_EXT1(ARB_multitexture, "GetIntegerv"); 4744 params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture; 4745 break; 4746 case GL_TEXTURE_CUBE_MAP_ARB: 4747 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv"); 4748 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)); 4749 break; 4750 case GL_TEXTURE_BINDING_CUBE_MAP_ARB: 4751 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv"); 4752 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name; 4753 break; 4754 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 4755 CHECK_EXT1(ARB_texture_cube_map, "GetIntegerv"); 4756 params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1)); 4757 break; 4758 case GL_TEXTURE_COMPRESSION_HINT_ARB: 4759 params[0] = ctx->Hint.TextureCompression; 4760 break; 4761 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: 4762 params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE); 4763 break; 4764 case GL_COMPRESSED_TEXTURE_FORMATS_ARB: 4765 { 4766 GLint formats[100]; 4767 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE); 4768 ASSERT(n <= 100); 4769 for (i = 0; i < n; i++) 4770 params[i] = ENUM_TO_INT(formats[i]); 4771 } 4772 break; 4773 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: 4774 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv"); 4775 params[0] = ctx->Array.LockFirst; 4776 break; 4777 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: 4778 CHECK_EXT1(EXT_compiled_vertex_array, "GetIntegerv"); 4779 params[0] = ctx->Array.LockCount; 4780 break; 4781 case GL_TRANSPOSE_COLOR_MATRIX_ARB: 4782 { 4783 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 4784 params[0] = IROUND(matrix[0]); 4785 params[1] = IROUND(matrix[4]); 4786 params[2] = IROUND(matrix[8]); 4787 params[3] = IROUND(matrix[12]); 4788 params[4] = IROUND(matrix[1]); 4789 params[5] = IROUND(matrix[5]); 4790 params[6] = IROUND(matrix[9]); 4791 params[7] = IROUND(matrix[13]); 4792 params[8] = IROUND(matrix[2]); 4793 params[9] = IROUND(matrix[6]); 4794 params[10] = IROUND(matrix[10]); 4795 params[11] = IROUND(matrix[14]); 4796 params[12] = IROUND(matrix[3]); 4797 params[13] = IROUND(matrix[7]); 4798 params[14] = IROUND(matrix[11]); 4799 params[15] = IROUND(matrix[15]); 4800 } 4801 break; 4802 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: 4803 { 4804 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 4805 params[0] = IROUND(matrix[0]); 4806 params[1] = IROUND(matrix[4]); 4807 params[2] = IROUND(matrix[8]); 4808 params[3] = IROUND(matrix[12]); 4809 params[4] = IROUND(matrix[1]); 4810 params[5] = IROUND(matrix[5]); 4811 params[6] = IROUND(matrix[9]); 4812 params[7] = IROUND(matrix[13]); 4813 params[8] = IROUND(matrix[2]); 4814 params[9] = IROUND(matrix[6]); 4815 params[10] = IROUND(matrix[10]); 4816 params[11] = IROUND(matrix[14]); 4817 params[12] = IROUND(matrix[3]); 4818 params[13] = IROUND(matrix[7]); 4819 params[14] = IROUND(matrix[11]); 4820 params[15] = IROUND(matrix[15]); 4821 } 4822 break; 4823 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: 4824 { 4825 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 4826 params[0] = IROUND(matrix[0]); 4827 params[1] = IROUND(matrix[4]); 4828 params[2] = IROUND(matrix[8]); 4829 params[3] = IROUND(matrix[12]); 4830 params[4] = IROUND(matrix[1]); 4831 params[5] = IROUND(matrix[5]); 4832 params[6] = IROUND(matrix[9]); 4833 params[7] = IROUND(matrix[13]); 4834 params[8] = IROUND(matrix[2]); 4835 params[9] = IROUND(matrix[6]); 4836 params[10] = IROUND(matrix[10]); 4837 params[11] = IROUND(matrix[14]); 4838 params[12] = IROUND(matrix[3]); 4839 params[13] = IROUND(matrix[7]); 4840 params[14] = IROUND(matrix[11]); 4841 params[15] = IROUND(matrix[15]); 4842 } 4843 break; 4844 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: 4845 { 4846 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 4847 params[0] = IROUND(matrix[0]); 4848 params[1] = IROUND(matrix[4]); 4849 params[2] = IROUND(matrix[8]); 4850 params[3] = IROUND(matrix[12]); 4851 params[4] = IROUND(matrix[1]); 4852 params[5] = IROUND(matrix[5]); 4853 params[6] = IROUND(matrix[9]); 4854 params[7] = IROUND(matrix[13]); 4855 params[8] = IROUND(matrix[2]); 4856 params[9] = IROUND(matrix[6]); 4857 params[10] = IROUND(matrix[10]); 4858 params[11] = IROUND(matrix[14]); 4859 params[12] = IROUND(matrix[3]); 4860 params[13] = IROUND(matrix[7]); 4861 params[14] = IROUND(matrix[11]); 4862 params[15] = IROUND(matrix[15]); 4863 } 4864 break; 4865 case GL_COLOR_MATRIX_SGI: 4866 { 4867 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 4868 params[0] = IROUND(matrix[0]); 4869 params[1] = IROUND(matrix[1]); 4870 params[2] = IROUND(matrix[2]); 4871 params[3] = IROUND(matrix[3]); 4872 params[4] = IROUND(matrix[4]); 4873 params[5] = IROUND(matrix[5]); 4874 params[6] = IROUND(matrix[6]); 4875 params[7] = IROUND(matrix[7]); 4876 params[8] = IROUND(matrix[8]); 4877 params[9] = IROUND(matrix[9]); 4878 params[10] = IROUND(matrix[10]); 4879 params[11] = IROUND(matrix[11]); 4880 params[12] = IROUND(matrix[12]); 4881 params[13] = IROUND(matrix[13]); 4882 params[14] = IROUND(matrix[14]); 4883 params[15] = IROUND(matrix[15]); 4884 } 4885 break; 4886 case GL_COLOR_MATRIX_STACK_DEPTH_SGI: 4887 params[0] = ctx->ColorMatrixStack.Depth + 1; 4888 break; 4889 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: 4890 params[0] = MAX_COLOR_STACK_DEPTH; 4891 break; 4892 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: 4893 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]); 4894 break; 4895 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: 4896 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]); 4897 break; 4898 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: 4899 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]); 4900 break; 4901 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: 4902 params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]); 4903 break; 4904 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: 4905 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]); 4906 break; 4907 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: 4908 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]); 4909 break; 4910 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: 4911 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]); 4912 break; 4913 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: 4914 params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]); 4915 break; 4916 case GL_CONVOLUTION_1D_EXT: 4917 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4918 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled); 4919 break; 4920 case GL_CONVOLUTION_2D_EXT: 4921 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4922 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled); 4923 break; 4924 case GL_SEPARABLE_2D_EXT: 4925 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4926 params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled); 4927 break; 4928 case GL_POST_CONVOLUTION_RED_SCALE_EXT: 4929 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4930 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]); 4931 break; 4932 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: 4933 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4934 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]); 4935 break; 4936 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: 4937 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4938 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]); 4939 break; 4940 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: 4941 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4942 params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]); 4943 break; 4944 case GL_POST_CONVOLUTION_RED_BIAS_EXT: 4945 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4946 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]); 4947 break; 4948 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: 4949 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4950 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]); 4951 break; 4952 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: 4953 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4954 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]); 4955 break; 4956 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: 4957 CHECK_EXT1(EXT_convolution, "GetIntegerv"); 4958 params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]); 4959 break; 4960 case GL_HISTOGRAM: 4961 CHECK_EXT1(EXT_histogram, "GetIntegerv"); 4962 params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled); 4963 break; 4964 case GL_MINMAX: 4965 CHECK_EXT1(EXT_histogram, "GetIntegerv"); 4966 params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled); 4967 break; 4968 case GL_COLOR_TABLE_SGI: 4969 CHECK_EXT1(SGI_color_table, "GetIntegerv"); 4970 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]); 4971 break; 4972 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: 4973 CHECK_EXT1(SGI_color_table, "GetIntegerv"); 4974 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]); 4975 break; 4976 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: 4977 CHECK_EXT1(SGI_color_table, "GetIntegerv"); 4978 params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]); 4979 break; 4980 case GL_TEXTURE_COLOR_TABLE_SGI: 4981 CHECK_EXT1(SGI_texture_color_table, "GetIntegerv"); 4982 params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled); 4983 break; 4984 case GL_COLOR_SUM_EXT: 4985 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetIntegerv"); 4986 params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled); 4987 break; 4988 case GL_CURRENT_SECONDARY_COLOR_EXT: 4989 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 4990 { 4991 FLUSH_CURRENT(ctx, 0); 4992 params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]); 4993 params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]); 4994 params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]); 4995 params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]); 4996 } 4997 break; 4998 case GL_SECONDARY_COLOR_ARRAY_EXT: 4999 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 5000 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled); 5001 break; 5002 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: 5003 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 5004 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type); 5005 break; 5006 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: 5007 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 5008 params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride; 5009 break; 5010 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: 5011 CHECK_EXT1(EXT_secondary_color, "GetIntegerv"); 5012 params[0] = ctx->Array.ArrayObj->SecondaryColor.Size; 5013 break; 5014 case GL_CURRENT_FOG_COORDINATE_EXT: 5015 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 5016 { 5017 FLUSH_CURRENT(ctx, 0); 5018 params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]); 5019 } 5020 break; 5021 case GL_FOG_COORDINATE_ARRAY_EXT: 5022 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 5023 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled); 5024 break; 5025 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: 5026 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 5027 params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type); 5028 break; 5029 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: 5030 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 5031 params[0] = ctx->Array.ArrayObj->FogCoord.Stride; 5032 break; 5033 case GL_FOG_COORDINATE_SOURCE_EXT: 5034 CHECK_EXT1(EXT_fog_coord, "GetIntegerv"); 5035 params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource); 5036 break; 5037 case GL_MAX_TEXTURE_LOD_BIAS_EXT: 5038 CHECK_EXT1(EXT_texture_lod_bias, "GetIntegerv"); 5039 params[0] = IROUND(ctx->Const.MaxTextureLodBias); 5040 break; 5041 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 5042 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetIntegerv"); 5043 params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy); 5044 break; 5045 case GL_MULTISAMPLE_ARB: 5046 params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled); 5047 break; 5048 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: 5049 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage); 5050 break; 5051 case GL_SAMPLE_ALPHA_TO_ONE_ARB: 5052 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne); 5053 break; 5054 case GL_SAMPLE_COVERAGE_ARB: 5055 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage); 5056 break; 5057 case GL_SAMPLE_COVERAGE_VALUE_ARB: 5058 params[0] = IROUND(ctx->Multisample.SampleCoverageValue); 5059 break; 5060 case GL_SAMPLE_COVERAGE_INVERT_ARB: 5061 params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert); 5062 break; 5063 case GL_SAMPLE_BUFFERS_ARB: 5064 params[0] = ctx->DrawBuffer->Visual.sampleBuffers; 5065 break; 5066 case GL_SAMPLES_ARB: 5067 params[0] = ctx->DrawBuffer->Visual.samples; 5068 break; 5069 case GL_RASTER_POSITION_UNCLIPPED_IBM: 5070 CHECK_EXT1(IBM_rasterpos_clip, "GetIntegerv"); 5071 params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped); 5072 break; 5073 case GL_POINT_SPRITE_NV: 5074 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv"); 5075 params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite); 5076 break; 5077 case GL_POINT_SPRITE_R_MODE_NV: 5078 CHECK_EXT1(NV_point_sprite, "GetIntegerv"); 5079 params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode); 5080 break; 5081 case GL_POINT_SPRITE_COORD_ORIGIN: 5082 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetIntegerv"); 5083 params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin); 5084 break; 5085 case GL_GENERATE_MIPMAP_HINT_SGIS: 5086 CHECK_EXT1(SGIS_generate_mipmap, "GetIntegerv"); 5087 params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap); 5088 break; 5089 case GL_VERTEX_PROGRAM_BINDING_NV: 5090 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5091 params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0); 5092 break; 5093 case GL_VERTEX_ATTRIB_ARRAY0_NV: 5094 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5095 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled); 5096 break; 5097 case GL_VERTEX_ATTRIB_ARRAY1_NV: 5098 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5099 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled); 5100 break; 5101 case GL_VERTEX_ATTRIB_ARRAY2_NV: 5102 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5103 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled); 5104 break; 5105 case GL_VERTEX_ATTRIB_ARRAY3_NV: 5106 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5107 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled); 5108 break; 5109 case GL_VERTEX_ATTRIB_ARRAY4_NV: 5110 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5111 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled); 5112 break; 5113 case GL_VERTEX_ATTRIB_ARRAY5_NV: 5114 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5115 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled); 5116 break; 5117 case GL_VERTEX_ATTRIB_ARRAY6_NV: 5118 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5119 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled); 5120 break; 5121 case GL_VERTEX_ATTRIB_ARRAY7_NV: 5122 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5123 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled); 5124 break; 5125 case GL_VERTEX_ATTRIB_ARRAY8_NV: 5126 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5127 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled); 5128 break; 5129 case GL_VERTEX_ATTRIB_ARRAY9_NV: 5130 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5131 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled); 5132 break; 5133 case GL_VERTEX_ATTRIB_ARRAY10_NV: 5134 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5135 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled); 5136 break; 5137 case GL_VERTEX_ATTRIB_ARRAY11_NV: 5138 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5139 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled); 5140 break; 5141 case GL_VERTEX_ATTRIB_ARRAY12_NV: 5142 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5143 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled); 5144 break; 5145 case GL_VERTEX_ATTRIB_ARRAY13_NV: 5146 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5147 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled); 5148 break; 5149 case GL_VERTEX_ATTRIB_ARRAY14_NV: 5150 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5151 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled); 5152 break; 5153 case GL_VERTEX_ATTRIB_ARRAY15_NV: 5154 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5155 params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled); 5156 break; 5157 case GL_MAP1_VERTEX_ATTRIB0_4_NV: 5158 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5159 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]); 5160 break; 5161 case GL_MAP1_VERTEX_ATTRIB1_4_NV: 5162 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5163 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]); 5164 break; 5165 case GL_MAP1_VERTEX_ATTRIB2_4_NV: 5166 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5167 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]); 5168 break; 5169 case GL_MAP1_VERTEX_ATTRIB3_4_NV: 5170 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5171 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]); 5172 break; 5173 case GL_MAP1_VERTEX_ATTRIB4_4_NV: 5174 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5175 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]); 5176 break; 5177 case GL_MAP1_VERTEX_ATTRIB5_4_NV: 5178 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5179 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]); 5180 break; 5181 case GL_MAP1_VERTEX_ATTRIB6_4_NV: 5182 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5183 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]); 5184 break; 5185 case GL_MAP1_VERTEX_ATTRIB7_4_NV: 5186 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5187 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]); 5188 break; 5189 case GL_MAP1_VERTEX_ATTRIB8_4_NV: 5190 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5191 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]); 5192 break; 5193 case GL_MAP1_VERTEX_ATTRIB9_4_NV: 5194 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5195 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]); 5196 break; 5197 case GL_MAP1_VERTEX_ATTRIB10_4_NV: 5198 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5199 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]); 5200 break; 5201 case GL_MAP1_VERTEX_ATTRIB11_4_NV: 5202 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5203 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]); 5204 break; 5205 case GL_MAP1_VERTEX_ATTRIB12_4_NV: 5206 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5207 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]); 5208 break; 5209 case GL_MAP1_VERTEX_ATTRIB13_4_NV: 5210 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5211 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]); 5212 break; 5213 case GL_MAP1_VERTEX_ATTRIB14_4_NV: 5214 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5215 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]); 5216 break; 5217 case GL_MAP1_VERTEX_ATTRIB15_4_NV: 5218 CHECK_EXT1(NV_vertex_program, "GetIntegerv"); 5219 params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]); 5220 break; 5221 case GL_FRAGMENT_PROGRAM_NV: 5222 CHECK_EXT1(NV_fragment_program, "GetIntegerv"); 5223 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled); 5224 break; 5225 case GL_FRAGMENT_PROGRAM_BINDING_NV: 5226 CHECK_EXT1(NV_fragment_program, "GetIntegerv"); 5227 params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0; 5228 break; 5229 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV: 5230 CHECK_EXT1(NV_fragment_program, "GetIntegerv"); 5231 params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS; 5232 break; 5233 case GL_TEXTURE_RECTANGLE_NV: 5234 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv"); 5235 params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV)); 5236 break; 5237 case GL_TEXTURE_BINDING_RECTANGLE_NV: 5238 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv"); 5239 params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name; 5240 break; 5241 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: 5242 CHECK_EXT1(NV_texture_rectangle, "GetIntegerv"); 5243 params[0] = ctx->Const.MaxTextureRectSize; 5244 break; 5245 case GL_STENCIL_TEST_TWO_SIDE_EXT: 5246 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv"); 5247 params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide); 5248 break; 5249 case GL_ACTIVE_STENCIL_FACE_EXT: 5250 CHECK_EXT1(EXT_stencil_two_side, "GetIntegerv"); 5251 params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); 5252 break; 5253 case GL_MAX_SHININESS_NV: 5254 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv"); 5255 params[0] = IROUND(ctx->Const.MaxShininess); 5256 break; 5257 case GL_MAX_SPOT_EXPONENT_NV: 5258 CHECK_EXT1(NV_light_max_exponent, "GetIntegerv"); 5259 params[0] = IROUND(ctx->Const.MaxSpotExponent); 5260 break; 5261 case GL_ARRAY_BUFFER_BINDING_ARB: 5262 params[0] = ctx->Array.ArrayBufferObj->Name; 5263 break; 5264 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB: 5265 params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name; 5266 break; 5267 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB: 5268 params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name; 5269 break; 5270 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB: 5271 params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name; 5272 break; 5273 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB: 5274 params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name; 5275 break; 5276 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: 5277 params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name; 5278 break; 5279 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: 5280 params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name; 5281 break; 5282 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: 5283 params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name; 5284 break; 5285 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: 5286 params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name; 5287 break; 5288 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB: 5289 params[0] = ctx->Array.ElementArrayBufferObj->Name; 5290 break; 5291 case GL_PIXEL_PACK_BUFFER_BINDING_EXT: 5292 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv"); 5293 params[0] = ctx->Pack.BufferObj->Name; 5294 break; 5295 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT: 5296 CHECK_EXT1(EXT_pixel_buffer_object, "GetIntegerv"); 5297 params[0] = ctx->Unpack.BufferObj->Name; 5298 break; 5299 case GL_VERTEX_PROGRAM_ARB: 5300 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv"); 5301 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled); 5302 break; 5303 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB: 5304 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv"); 5305 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled); 5306 break; 5307 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB: 5308 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetIntegerv"); 5309 params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled); 5310 break; 5311 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 5312 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv"); 5313 params[0] = ctx->Const.MaxProgramMatrixStackDepth; 5314 break; 5315 case GL_MAX_PROGRAM_MATRICES_ARB: 5316 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv"); 5317 params[0] = ctx->Const.MaxProgramMatrices; 5318 break; 5319 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB: 5320 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetIntegerv"); 5321 params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1); 5322 break; 5323 case GL_CURRENT_MATRIX_ARB: 5324 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetIntegerv"); 5325 { 5326 const GLfloat *matrix = ctx->CurrentStack->Top->m; 5327 params[0] = IROUND(matrix[0]); 5328 params[1] = IROUND(matrix[1]); 5329 params[2] = IROUND(matrix[2]); 5330 params[3] = IROUND(matrix[3]); 5331 params[4] = IROUND(matrix[4]); 5332 params[5] = IROUND(matrix[5]); 5333 params[6] = IROUND(matrix[6]); 5334 params[7] = IROUND(matrix[7]); 5335 params[8] = IROUND(matrix[8]); 5336 params[9] = IROUND(matrix[9]); 5337 params[10] = IROUND(matrix[10]); 5338 params[11] = IROUND(matrix[11]); 5339 params[12] = IROUND(matrix[12]); 5340 params[13] = IROUND(matrix[13]); 5341 params[14] = IROUND(matrix[14]); 5342 params[15] = IROUND(matrix[15]); 5343 } 5344 break; 5345 case GL_TRANSPOSE_CURRENT_MATRIX_ARB: 5346 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetIntegerv"); 5347 { 5348 const GLfloat *matrix = ctx->CurrentStack->Top->m; 5349 params[0] = IROUND(matrix[0]); 5350 params[1] = IROUND(matrix[4]); 5351 params[2] = IROUND(matrix[8]); 5352 params[3] = IROUND(matrix[12]); 5353 params[4] = IROUND(matrix[1]); 5354 params[5] = IROUND(matrix[5]); 5355 params[6] = IROUND(matrix[9]); 5356 params[7] = IROUND(matrix[13]); 5357 params[8] = IROUND(matrix[2]); 5358 params[9] = IROUND(matrix[6]); 5359 params[10] = IROUND(matrix[10]); 5360 params[11] = IROUND(matrix[14]); 5361 params[12] = IROUND(matrix[3]); 5362 params[13] = IROUND(matrix[7]); 5363 params[14] = IROUND(matrix[11]); 5364 params[15] = IROUND(matrix[15]); 5365 } 5366 break; 5367 case GL_MAX_VERTEX_ATTRIBS_ARB: 5368 CHECK_EXT1(ARB_vertex_program, "GetIntegerv"); 5369 params[0] = ctx->Const.VertexProgram.MaxAttribs; 5370 break; 5371 case GL_PROGRAM_ERROR_POSITION_ARB: 5372 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetIntegerv"); 5373 params[0] = ctx->Program.ErrorPos; 5374 break; 5375 case GL_FRAGMENT_PROGRAM_ARB: 5376 CHECK_EXT1(ARB_fragment_program, "GetIntegerv"); 5377 params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled); 5378 break; 5379 case GL_MAX_TEXTURE_COORDS_ARB: 5380 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv"); 5381 params[0] = ctx->Const.MaxTextureCoordUnits; 5382 break; 5383 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 5384 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetIntegerv"); 5385 params[0] = ctx->Const.MaxTextureImageUnits; 5386 break; 5387 case GL_DEPTH_BOUNDS_TEST_EXT: 5388 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv"); 5389 params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest); 5390 break; 5391 case GL_DEPTH_BOUNDS_EXT: 5392 CHECK_EXT1(EXT_depth_bounds_test, "GetIntegerv"); 5393 params[0] = IROUND(ctx->Depth.BoundsMin); 5394 params[1] = IROUND(ctx->Depth.BoundsMax); 5395 break; 5396 case GL_DEPTH_CLAMP: 5397 CHECK_EXT1(ARB_depth_clamp, "GetIntegerv"); 5398 params[0] = BOOLEAN_TO_INT(ctx->Transform.DepthClamp); 5399 break; 5400 case GL_MAX_DRAW_BUFFERS_ARB: 5401 params[0] = ctx->Const.MaxDrawBuffers; 5402 break; 5403 case GL_DRAW_BUFFER0_ARB: 5404 params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]); 5405 break; 5406 case GL_DRAW_BUFFER1_ARB: 5407 { 5408 GLenum buffer; 5409 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 5410 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 5411 return; 5412 } 5413 buffer = ctx->DrawBuffer->ColorDrawBuffer[1]; 5414 params[0] = ENUM_TO_INT(buffer); 5415 } 5416 break; 5417 case GL_DRAW_BUFFER2_ARB: 5418 { 5419 GLenum buffer; 5420 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 5421 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 5422 return; 5423 } 5424 buffer = ctx->DrawBuffer->ColorDrawBuffer[2]; 5425 params[0] = ENUM_TO_INT(buffer); 5426 } 5427 break; 5428 case GL_DRAW_BUFFER3_ARB: 5429 { 5430 GLenum buffer; 5431 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 5432 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 5433 return; 5434 } 5435 buffer = ctx->DrawBuffer->ColorDrawBuffer[3]; 5436 params[0] = ENUM_TO_INT(buffer); 5437 } 5438 break; 5439 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: 5440 CHECK_EXT1(OES_read_format, "GetIntegerv"); 5441 params[0] = _mesa_get_color_read_type(ctx); 5442 break; 5443 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: 5444 CHECK_EXT1(OES_read_format, "GetIntegerv"); 5445 params[0] = _mesa_get_color_read_format(ctx); 5446 break; 5447 case GL_NUM_FRAGMENT_REGISTERS_ATI: 5448 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5449 params[0] = 6; 5450 break; 5451 case GL_NUM_FRAGMENT_CONSTANTS_ATI: 5452 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5453 params[0] = 8; 5454 break; 5455 case GL_NUM_PASSES_ATI: 5456 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5457 params[0] = 2; 5458 break; 5459 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI: 5460 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5461 params[0] = 8; 5462 break; 5463 case GL_NUM_INSTRUCTIONS_TOTAL_ATI: 5464 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5465 params[0] = 16; 5466 break; 5467 case GL_COLOR_ALPHA_PAIRING_ATI: 5468 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5469 params[0] = BOOLEAN_TO_INT(GL_TRUE); 5470 break; 5471 case GL_NUM_LOOPBACK_COMPONENTS_ATI: 5472 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5473 params[0] = 3; 5474 break; 5475 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI: 5476 CHECK_EXT1(ATI_fragment_shader, "GetIntegerv"); 5477 params[0] = 3; 5478 break; 5479 case GL_STENCIL_BACK_FUNC: 5480 params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]); 5481 break; 5482 case GL_STENCIL_BACK_VALUE_MASK: 5483 params[0] = ctx->Stencil.ValueMask[1]; 5484 break; 5485 case GL_STENCIL_BACK_WRITEMASK: 5486 params[0] = ctx->Stencil.WriteMask[1]; 5487 break; 5488 case GL_STENCIL_BACK_REF: 5489 params[0] = ctx->Stencil.Ref[1]; 5490 break; 5491 case GL_STENCIL_BACK_FAIL: 5492 params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]); 5493 break; 5494 case GL_STENCIL_BACK_PASS_DEPTH_FAIL: 5495 params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]); 5496 break; 5497 case GL_STENCIL_BACK_PASS_DEPTH_PASS: 5498 params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]); 5499 break; 5500 case GL_FRAMEBUFFER_BINDING_EXT: 5501 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); 5502 params[0] = ctx->DrawBuffer->Name; 5503 break; 5504 case GL_RENDERBUFFER_BINDING_EXT: 5505 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); 5506 params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0; 5507 break; 5508 case GL_MAX_COLOR_ATTACHMENTS_EXT: 5509 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); 5510 params[0] = ctx->Const.MaxColorAttachments; 5511 break; 5512 case GL_MAX_RENDERBUFFER_SIZE_EXT: 5513 CHECK_EXT1(EXT_framebuffer_object, "GetIntegerv"); 5514 params[0] = ctx->Const.MaxRenderbufferSize; 5515 break; 5516 case GL_READ_FRAMEBUFFER_BINDING_EXT: 5517 CHECK_EXT1(EXT_framebuffer_blit, "GetIntegerv"); 5518 params[0] = ctx->ReadBuffer->Name; 5519 break; 5520 case GL_PROVOKING_VERTEX_EXT: 5521 CHECK_EXT1(EXT_provoking_vertex, "GetIntegerv"); 5522 params[0] = BOOLEAN_TO_INT(ctx->Light.ProvokingVertex); 5523 break; 5524 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT: 5525 CHECK_EXT1(EXT_provoking_vertex, "GetIntegerv"); 5526 params[0] = BOOLEAN_TO_INT(ctx->Const.QuadsFollowProvokingVertexConvention); 5527 break; 5528 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: 5529 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv"); 5530 params[0] = ctx->Const.FragmentProgram.MaxUniformComponents; 5531 break; 5532 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: 5533 CHECK_EXT1(ARB_fragment_shader, "GetIntegerv"); 5534 params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative); 5535 break; 5536 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: 5537 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); 5538 params[0] = ctx->Const.VertexProgram.MaxUniformComponents; 5539 break; 5540 case GL_MAX_VARYING_FLOATS_ARB: 5541 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); 5542 params[0] = ctx->Const.MaxVarying * 4; 5543 break; 5544 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 5545 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); 5546 params[0] = ctx->Const.MaxVertexTextureImageUnits; 5547 break; 5548 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: 5549 CHECK_EXT1(ARB_vertex_shader, "GetIntegerv"); 5550 params[0] = ctx->Const.MaxCombinedTextureImageUnits; 5551 break; 5552 case GL_CURRENT_PROGRAM: 5553 CHECK_EXT1(ARB_shader_objects, "GetIntegerv"); 5554 params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0; 5555 break; 5556 case GL_MAX_SAMPLES: 5557 CHECK_EXT1(ARB_framebuffer_object, "GetIntegerv"); 5558 params[0] = ctx->Const.MaxSamples; 5559 break; 5560 case GL_VERTEX_ARRAY_BINDING_APPLE: 5561 CHECK_EXT1(APPLE_vertex_array_object, "GetIntegerv"); 5562 params[0] = ctx->Array.ArrayObj->Name; 5563 break; 5564 case GL_TEXTURE_CUBE_MAP_SEAMLESS: 5565 CHECK_EXT1(ARB_seamless_cube_map, "GetIntegerv"); 5566 params[0] = BOOLEAN_TO_INT(ctx->Texture.CubeMapSeamless); 5567 break; 5568 case GL_MAX_SERVER_WAIT_TIMEOUT: 5569 CHECK_EXT1(ARB_sync, "GetIntegerv"); 5570 params[0] = INT64_TO_INT(ctx->Const.MaxServerWaitTimeout); 5571 break; 5572 default: 5573 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname); 5574 } 5575} 5576 5577#if FEATURE_ARB_sync 5578void GLAPIENTRY 5579_mesa_GetInteger64v( GLenum pname, GLint64 *params ) 5580{ 5581 GET_CURRENT_CONTEXT(ctx); 5582 ASSERT_OUTSIDE_BEGIN_END(ctx); 5583 5584 if (!params) 5585 return; 5586 5587 if (ctx->NewState) 5588 _mesa_update_state(ctx); 5589 5590 if (ctx->Driver.GetInteger64v && 5591 ctx->Driver.GetInteger64v(ctx, pname, params)) 5592 return; 5593 5594 switch (pname) { 5595 case GL_ACCUM_RED_BITS: 5596 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumRedBits); 5597 break; 5598 case GL_ACCUM_GREEN_BITS: 5599 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumGreenBits); 5600 break; 5601 case GL_ACCUM_BLUE_BITS: 5602 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumBlueBits); 5603 break; 5604 case GL_ACCUM_ALPHA_BITS: 5605 params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumAlphaBits); 5606 break; 5607 case GL_ACCUM_CLEAR_VALUE: 5608 params[0] = FLOAT_TO_INT64(ctx->Accum.ClearColor[0]); 5609 params[1] = FLOAT_TO_INT64(ctx->Accum.ClearColor[1]); 5610 params[2] = FLOAT_TO_INT64(ctx->Accum.ClearColor[2]); 5611 params[3] = FLOAT_TO_INT64(ctx->Accum.ClearColor[3]); 5612 break; 5613 case GL_ALPHA_BIAS: 5614 params[0] = IROUND64(ctx->Pixel.AlphaBias); 5615 break; 5616 case GL_ALPHA_BITS: 5617 params[0] = (GLint64)(ctx->DrawBuffer->Visual.alphaBits); 5618 break; 5619 case GL_ALPHA_SCALE: 5620 params[0] = IROUND64(ctx->Pixel.AlphaScale); 5621 break; 5622 case GL_ALPHA_TEST: 5623 params[0] = BOOLEAN_TO_INT64(ctx->Color.AlphaEnabled); 5624 break; 5625 case GL_ALPHA_TEST_FUNC: 5626 params[0] = ENUM_TO_INT64(ctx->Color.AlphaFunc); 5627 break; 5628 case GL_ALPHA_TEST_REF: 5629 params[0] = FLOAT_TO_INT64(ctx->Color.AlphaRef); 5630 break; 5631 case GL_ATTRIB_STACK_DEPTH: 5632 params[0] = (GLint64)(ctx->AttribStackDepth); 5633 break; 5634 case GL_AUTO_NORMAL: 5635 params[0] = BOOLEAN_TO_INT64(ctx->Eval.AutoNormal); 5636 break; 5637 case GL_AUX_BUFFERS: 5638 params[0] = (GLint64)(ctx->DrawBuffer->Visual.numAuxBuffers); 5639 break; 5640 case GL_BLEND: 5641 params[0] = BOOLEAN_TO_INT64((ctx->Color.BlendEnabled & 1)); 5642 break; 5643 case GL_BLEND_DST: 5644 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB); 5645 break; 5646 case GL_BLEND_SRC: 5647 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB); 5648 break; 5649 case GL_BLEND_SRC_RGB_EXT: 5650 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB); 5651 break; 5652 case GL_BLEND_DST_RGB_EXT: 5653 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB); 5654 break; 5655 case GL_BLEND_SRC_ALPHA_EXT: 5656 params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcA); 5657 break; 5658 case GL_BLEND_DST_ALPHA_EXT: 5659 params[0] = ENUM_TO_INT64(ctx->Color.BlendDstA); 5660 break; 5661 case GL_BLEND_EQUATION: 5662 params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationRGB ); 5663 break; 5664 case GL_BLEND_EQUATION_ALPHA_EXT: 5665 params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationA ); 5666 break; 5667 case GL_BLEND_COLOR_EXT: 5668 params[0] = FLOAT_TO_INT64(ctx->Color.BlendColor[0]); 5669 params[1] = FLOAT_TO_INT64(ctx->Color.BlendColor[1]); 5670 params[2] = FLOAT_TO_INT64(ctx->Color.BlendColor[2]); 5671 params[3] = FLOAT_TO_INT64(ctx->Color.BlendColor[3]); 5672 break; 5673 case GL_BLUE_BIAS: 5674 params[0] = IROUND64(ctx->Pixel.BlueBias); 5675 break; 5676 case GL_BLUE_BITS: 5677 params[0] = (GLint64)(ctx->DrawBuffer->Visual.blueBits); 5678 break; 5679 case GL_BLUE_SCALE: 5680 params[0] = IROUND64(ctx->Pixel.BlueScale); 5681 break; 5682 case GL_CLIENT_ATTRIB_STACK_DEPTH: 5683 params[0] = (GLint64)(ctx->ClientAttribStackDepth); 5684 break; 5685 case GL_CLIP_PLANE0: 5686 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 0) & 1); 5687 break; 5688 case GL_CLIP_PLANE1: 5689 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 1) & 1); 5690 break; 5691 case GL_CLIP_PLANE2: 5692 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 2) & 1); 5693 break; 5694 case GL_CLIP_PLANE3: 5695 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 3) & 1); 5696 break; 5697 case GL_CLIP_PLANE4: 5698 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 4) & 1); 5699 break; 5700 case GL_CLIP_PLANE5: 5701 params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 5) & 1); 5702 break; 5703 case GL_COLOR_CLEAR_VALUE: 5704 params[0] = FLOAT_TO_INT64(ctx->Color.ClearColor[0]); 5705 params[1] = FLOAT_TO_INT64(ctx->Color.ClearColor[1]); 5706 params[2] = FLOAT_TO_INT64(ctx->Color.ClearColor[2]); 5707 params[3] = FLOAT_TO_INT64(ctx->Color.ClearColor[3]); 5708 break; 5709 case GL_COLOR_MATERIAL: 5710 params[0] = BOOLEAN_TO_INT64(ctx->Light.ColorMaterialEnabled); 5711 break; 5712 case GL_COLOR_MATERIAL_FACE: 5713 params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialFace); 5714 break; 5715 case GL_COLOR_MATERIAL_PARAMETER: 5716 params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialMode); 5717 break; 5718 case GL_COLOR_WRITEMASK: 5719 params[0] = (GLint64)(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0); 5720 params[1] = (GLint64)(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0); 5721 params[2] = (GLint64)(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0); 5722 params[3] = (GLint64)(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0); 5723 break; 5724 case GL_CULL_FACE: 5725 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.CullFlag); 5726 break; 5727 case GL_CULL_FACE_MODE: 5728 params[0] = ENUM_TO_INT64(ctx->Polygon.CullFaceMode); 5729 break; 5730 case GL_CURRENT_COLOR: 5731 { 5732 FLUSH_CURRENT(ctx, 0); 5733 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]); 5734 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]); 5735 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]); 5736 params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]); 5737 } 5738 break; 5739 case GL_CURRENT_INDEX: 5740 { 5741 FLUSH_CURRENT(ctx, 0); 5742 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]); 5743 } 5744 break; 5745 case GL_CURRENT_NORMAL: 5746 { 5747 FLUSH_CURRENT(ctx, 0); 5748 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]); 5749 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]); 5750 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]); 5751 } 5752 break; 5753 case GL_CURRENT_RASTER_COLOR: 5754 params[0] = FLOAT_TO_INT64(ctx->Current.RasterColor[0]); 5755 params[1] = FLOAT_TO_INT64(ctx->Current.RasterColor[1]); 5756 params[2] = FLOAT_TO_INT64(ctx->Current.RasterColor[2]); 5757 params[3] = FLOAT_TO_INT64(ctx->Current.RasterColor[3]); 5758 break; 5759 case GL_CURRENT_RASTER_DISTANCE: 5760 params[0] = IROUND64(ctx->Current.RasterDistance); 5761 break; 5762 case GL_CURRENT_RASTER_INDEX: 5763 params[0] = IROUND64(ctx->Current.RasterIndex); 5764 break; 5765 case GL_CURRENT_RASTER_POSITION: 5766 params[0] = IROUND64(ctx->Current.RasterPos[0]); 5767 params[1] = IROUND64(ctx->Current.RasterPos[1]); 5768 params[2] = IROUND64(ctx->Current.RasterPos[2]); 5769 params[3] = IROUND64(ctx->Current.RasterPos[3]); 5770 break; 5771 case GL_CURRENT_RASTER_SECONDARY_COLOR: 5772 params[0] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[0]); 5773 params[1] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[1]); 5774 params[2] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[2]); 5775 params[3] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[3]); 5776 break; 5777 case GL_CURRENT_RASTER_TEXTURE_COORDS: 5778 { 5779 const GLuint texUnit = ctx->Texture.CurrentUnit; 5780 params[0] = IROUND64(ctx->Current.RasterTexCoords[texUnit][0]); 5781 params[1] = IROUND64(ctx->Current.RasterTexCoords[texUnit][1]); 5782 params[2] = IROUND64(ctx->Current.RasterTexCoords[texUnit][2]); 5783 params[3] = IROUND64(ctx->Current.RasterTexCoords[texUnit][3]); 5784 } 5785 break; 5786 case GL_CURRENT_RASTER_POSITION_VALID: 5787 params[0] = BOOLEAN_TO_INT64(ctx->Current.RasterPosValid); 5788 break; 5789 case GL_CURRENT_TEXTURE_COORDS: 5790 { 5791 const GLuint texUnit = ctx->Texture.CurrentUnit; 5792 FLUSH_CURRENT(ctx, 0); 5793 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]); 5794 params[1] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]); 5795 params[2] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]); 5796 params[3] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]); 5797 } 5798 break; 5799 case GL_DEPTH_BIAS: 5800 params[0] = IROUND64(ctx->Pixel.DepthBias); 5801 break; 5802 case GL_DEPTH_BITS: 5803 params[0] = (GLint64)(ctx->DrawBuffer->Visual.depthBits); 5804 break; 5805 case GL_DEPTH_CLEAR_VALUE: 5806 params[0] = FLOAT_TO_INT64(((GLfloat) ctx->Depth.Clear)); 5807 break; 5808 case GL_DEPTH_FUNC: 5809 params[0] = ENUM_TO_INT64(ctx->Depth.Func); 5810 break; 5811 case GL_DEPTH_RANGE: 5812 params[0] = FLOAT_TO_INT64(ctx->Viewport.Near); 5813 params[1] = FLOAT_TO_INT64(ctx->Viewport.Far); 5814 break; 5815 case GL_DEPTH_SCALE: 5816 params[0] = IROUND64(ctx->Pixel.DepthScale); 5817 break; 5818 case GL_DEPTH_TEST: 5819 params[0] = BOOLEAN_TO_INT64(ctx->Depth.Test); 5820 break; 5821 case GL_DEPTH_WRITEMASK: 5822 params[0] = BOOLEAN_TO_INT64(ctx->Depth.Mask); 5823 break; 5824 case GL_DITHER: 5825 params[0] = BOOLEAN_TO_INT64(ctx->Color.DitherFlag); 5826 break; 5827 case GL_DOUBLEBUFFER: 5828 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.doubleBufferMode); 5829 break; 5830 case GL_DRAW_BUFFER: 5831 params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]); 5832 break; 5833 case GL_EDGE_FLAG: 5834 { 5835 FLUSH_CURRENT(ctx, 0); 5836 params[0] = BOOLEAN_TO_INT64((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0)); 5837 } 5838 break; 5839 case GL_FEEDBACK_BUFFER_SIZE: 5840 params[0] = (GLint64)(ctx->Feedback.BufferSize); 5841 break; 5842 case GL_FEEDBACK_BUFFER_TYPE: 5843 params[0] = ENUM_TO_INT64(ctx->Feedback.Type); 5844 break; 5845 case GL_FOG: 5846 params[0] = BOOLEAN_TO_INT64(ctx->Fog.Enabled); 5847 break; 5848 case GL_FOG_COLOR: 5849 params[0] = FLOAT_TO_INT64(ctx->Fog.Color[0]); 5850 params[1] = FLOAT_TO_INT64(ctx->Fog.Color[1]); 5851 params[2] = FLOAT_TO_INT64(ctx->Fog.Color[2]); 5852 params[3] = FLOAT_TO_INT64(ctx->Fog.Color[3]); 5853 break; 5854 case GL_FOG_DENSITY: 5855 params[0] = IROUND64(ctx->Fog.Density); 5856 break; 5857 case GL_FOG_END: 5858 params[0] = IROUND64(ctx->Fog.End); 5859 break; 5860 case GL_FOG_HINT: 5861 params[0] = ENUM_TO_INT64(ctx->Hint.Fog); 5862 break; 5863 case GL_FOG_INDEX: 5864 params[0] = IROUND64(ctx->Fog.Index); 5865 break; 5866 case GL_FOG_MODE: 5867 params[0] = ENUM_TO_INT64(ctx->Fog.Mode); 5868 break; 5869 case GL_FOG_START: 5870 params[0] = IROUND64(ctx->Fog.Start); 5871 break; 5872 case GL_FRONT_FACE: 5873 params[0] = ENUM_TO_INT64(ctx->Polygon.FrontFace); 5874 break; 5875 case GL_GREEN_BIAS: 5876 params[0] = IROUND64(ctx->Pixel.GreenBias); 5877 break; 5878 case GL_GREEN_BITS: 5879 params[0] = (GLint64)(ctx->DrawBuffer->Visual.greenBits); 5880 break; 5881 case GL_GREEN_SCALE: 5882 params[0] = IROUND64(ctx->Pixel.GreenScale); 5883 break; 5884 case GL_INDEX_BITS: 5885 params[0] = (GLint64)(ctx->DrawBuffer->Visual.indexBits); 5886 break; 5887 case GL_INDEX_CLEAR_VALUE: 5888 params[0] = (GLint64)(ctx->Color.ClearIndex); 5889 break; 5890 case GL_INDEX_MODE: 5891 params[0] = BOOLEAN_TO_INT64(!ctx->DrawBuffer->Visual.rgbMode); 5892 break; 5893 case GL_INDEX_OFFSET: 5894 params[0] = (GLint64)(ctx->Pixel.IndexOffset); 5895 break; 5896 case GL_INDEX_SHIFT: 5897 params[0] = (GLint64)(ctx->Pixel.IndexShift); 5898 break; 5899 case GL_INDEX_WRITEMASK: 5900 params[0] = (GLint64)(ctx->Color.IndexMask); 5901 break; 5902 case GL_LIGHT0: 5903 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[0].Enabled); 5904 break; 5905 case GL_LIGHT1: 5906 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[1].Enabled); 5907 break; 5908 case GL_LIGHT2: 5909 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[2].Enabled); 5910 break; 5911 case GL_LIGHT3: 5912 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[3].Enabled); 5913 break; 5914 case GL_LIGHT4: 5915 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[4].Enabled); 5916 break; 5917 case GL_LIGHT5: 5918 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[5].Enabled); 5919 break; 5920 case GL_LIGHT6: 5921 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[6].Enabled); 5922 break; 5923 case GL_LIGHT7: 5924 params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[7].Enabled); 5925 break; 5926 case GL_LIGHTING: 5927 params[0] = BOOLEAN_TO_INT64(ctx->Light.Enabled); 5928 break; 5929 case GL_LIGHT_MODEL_AMBIENT: 5930 params[0] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[0]); 5931 params[1] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[1]); 5932 params[2] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[2]); 5933 params[3] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[3]); 5934 break; 5935 case GL_LIGHT_MODEL_COLOR_CONTROL: 5936 params[0] = ENUM_TO_INT64(ctx->Light.Model.ColorControl); 5937 break; 5938 case GL_LIGHT_MODEL_LOCAL_VIEWER: 5939 params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.LocalViewer); 5940 break; 5941 case GL_LIGHT_MODEL_TWO_SIDE: 5942 params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.TwoSide); 5943 break; 5944 case GL_LINE_SMOOTH: 5945 params[0] = BOOLEAN_TO_INT64(ctx->Line.SmoothFlag); 5946 break; 5947 case GL_LINE_SMOOTH_HINT: 5948 params[0] = ENUM_TO_INT64(ctx->Hint.LineSmooth); 5949 break; 5950 case GL_LINE_STIPPLE: 5951 params[0] = BOOLEAN_TO_INT64(ctx->Line.StippleFlag); 5952 break; 5953 case GL_LINE_STIPPLE_PATTERN: 5954 params[0] = (GLint64)(ctx->Line.StipplePattern); 5955 break; 5956 case GL_LINE_STIPPLE_REPEAT: 5957 params[0] = (GLint64)(ctx->Line.StippleFactor); 5958 break; 5959 case GL_LINE_WIDTH: 5960 params[0] = IROUND64(ctx->Line.Width); 5961 break; 5962 case GL_LINE_WIDTH_GRANULARITY: 5963 params[0] = IROUND64(ctx->Const.LineWidthGranularity); 5964 break; 5965 case GL_LINE_WIDTH_RANGE: 5966 params[0] = IROUND64(ctx->Const.MinLineWidthAA); 5967 params[1] = IROUND64(ctx->Const.MaxLineWidthAA); 5968 break; 5969 case GL_ALIASED_LINE_WIDTH_RANGE: 5970 params[0] = IROUND64(ctx->Const.MinLineWidth); 5971 params[1] = IROUND64(ctx->Const.MaxLineWidth); 5972 break; 5973 case GL_LIST_BASE: 5974 params[0] = (GLint64)(ctx->List.ListBase); 5975 break; 5976 case GL_LIST_INDEX: 5977 params[0] = (GLint64)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0)); 5978 break; 5979 case GL_LIST_MODE: 5980 { 5981 GLenum mode; 5982 if (!ctx->CompileFlag) 5983 mode = 0; 5984 else if (ctx->ExecuteFlag) 5985 mode = GL_COMPILE_AND_EXECUTE; 5986 else 5987 mode = GL_COMPILE; 5988 params[0] = ENUM_TO_INT64(mode); 5989 } 5990 break; 5991 case GL_INDEX_LOGIC_OP: 5992 params[0] = BOOLEAN_TO_INT64(ctx->Color.IndexLogicOpEnabled); 5993 break; 5994 case GL_COLOR_LOGIC_OP: 5995 params[0] = BOOLEAN_TO_INT64(ctx->Color.ColorLogicOpEnabled); 5996 break; 5997 case GL_LOGIC_OP_MODE: 5998 params[0] = ENUM_TO_INT64(ctx->Color.LogicOp); 5999 break; 6000 case GL_MAP1_COLOR_4: 6001 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Color4); 6002 break; 6003 case GL_MAP1_GRID_DOMAIN: 6004 params[0] = IROUND64(ctx->Eval.MapGrid1u1); 6005 params[1] = IROUND64(ctx->Eval.MapGrid1u2); 6006 break; 6007 case GL_MAP1_GRID_SEGMENTS: 6008 params[0] = (GLint64)(ctx->Eval.MapGrid1un); 6009 break; 6010 case GL_MAP1_INDEX: 6011 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Index); 6012 break; 6013 case GL_MAP1_NORMAL: 6014 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Normal); 6015 break; 6016 case GL_MAP1_TEXTURE_COORD_1: 6017 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord1); 6018 break; 6019 case GL_MAP1_TEXTURE_COORD_2: 6020 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord2); 6021 break; 6022 case GL_MAP1_TEXTURE_COORD_3: 6023 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord3); 6024 break; 6025 case GL_MAP1_TEXTURE_COORD_4: 6026 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord4); 6027 break; 6028 case GL_MAP1_VERTEX_3: 6029 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex3); 6030 break; 6031 case GL_MAP1_VERTEX_4: 6032 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex4); 6033 break; 6034 case GL_MAP2_COLOR_4: 6035 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Color4); 6036 break; 6037 case GL_MAP2_GRID_DOMAIN: 6038 params[0] = IROUND64(ctx->Eval.MapGrid2u1); 6039 params[1] = IROUND64(ctx->Eval.MapGrid2u2); 6040 params[2] = IROUND64(ctx->Eval.MapGrid2v1); 6041 params[3] = IROUND64(ctx->Eval.MapGrid2v2); 6042 break; 6043 case GL_MAP2_GRID_SEGMENTS: 6044 params[0] = (GLint64)(ctx->Eval.MapGrid2un); 6045 params[1] = (GLint64)(ctx->Eval.MapGrid2vn); 6046 break; 6047 case GL_MAP2_INDEX: 6048 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Index); 6049 break; 6050 case GL_MAP2_NORMAL: 6051 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Normal); 6052 break; 6053 case GL_MAP2_TEXTURE_COORD_1: 6054 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord1); 6055 break; 6056 case GL_MAP2_TEXTURE_COORD_2: 6057 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord2); 6058 break; 6059 case GL_MAP2_TEXTURE_COORD_3: 6060 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord3); 6061 break; 6062 case GL_MAP2_TEXTURE_COORD_4: 6063 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord4); 6064 break; 6065 case GL_MAP2_VERTEX_3: 6066 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex3); 6067 break; 6068 case GL_MAP2_VERTEX_4: 6069 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex4); 6070 break; 6071 case GL_MAP_COLOR: 6072 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapColorFlag); 6073 break; 6074 case GL_MAP_STENCIL: 6075 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapStencilFlag); 6076 break; 6077 case GL_MATRIX_MODE: 6078 params[0] = ENUM_TO_INT64(ctx->Transform.MatrixMode); 6079 break; 6080 case GL_MAX_ATTRIB_STACK_DEPTH: 6081 params[0] = (GLint64)(MAX_ATTRIB_STACK_DEPTH); 6082 break; 6083 case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH: 6084 params[0] = (GLint64)(MAX_CLIENT_ATTRIB_STACK_DEPTH); 6085 break; 6086 case GL_MAX_CLIP_PLANES: 6087 params[0] = (GLint64)(ctx->Const.MaxClipPlanes); 6088 break; 6089 case GL_MAX_ELEMENTS_VERTICES: 6090 params[0] = (GLint64)(ctx->Const.MaxArrayLockSize); 6091 break; 6092 case GL_MAX_ELEMENTS_INDICES: 6093 params[0] = (GLint64)(ctx->Const.MaxArrayLockSize); 6094 break; 6095 case GL_MAX_EVAL_ORDER: 6096 params[0] = (GLint64)(MAX_EVAL_ORDER); 6097 break; 6098 case GL_MAX_LIGHTS: 6099 params[0] = (GLint64)(ctx->Const.MaxLights); 6100 break; 6101 case GL_MAX_LIST_NESTING: 6102 params[0] = (GLint64)(MAX_LIST_NESTING); 6103 break; 6104 case GL_MAX_MODELVIEW_STACK_DEPTH: 6105 params[0] = (GLint64)(MAX_MODELVIEW_STACK_DEPTH); 6106 break; 6107 case GL_MAX_NAME_STACK_DEPTH: 6108 params[0] = (GLint64)(MAX_NAME_STACK_DEPTH); 6109 break; 6110 case GL_MAX_PIXEL_MAP_TABLE: 6111 params[0] = (GLint64)(MAX_PIXEL_MAP_TABLE); 6112 break; 6113 case GL_MAX_PROJECTION_STACK_DEPTH: 6114 params[0] = (GLint64)(MAX_PROJECTION_STACK_DEPTH); 6115 break; 6116 case GL_MAX_TEXTURE_SIZE: 6117 params[0] = (GLint64)(1 << (ctx->Const.MaxTextureLevels - 1)); 6118 break; 6119 case GL_MAX_3D_TEXTURE_SIZE: 6120 params[0] = (GLint64)(1 << (ctx->Const.Max3DTextureLevels - 1)); 6121 break; 6122 case GL_MAX_TEXTURE_STACK_DEPTH: 6123 params[0] = (GLint64)(MAX_TEXTURE_STACK_DEPTH); 6124 break; 6125 case GL_MAX_VIEWPORT_DIMS: 6126 params[0] = (GLint64)(ctx->Const.MaxViewportWidth); 6127 params[1] = (GLint64)(ctx->Const.MaxViewportHeight); 6128 break; 6129 case GL_MODELVIEW_MATRIX: 6130 { 6131 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 6132 params[0] = IROUND64(matrix[0]); 6133 params[1] = IROUND64(matrix[1]); 6134 params[2] = IROUND64(matrix[2]); 6135 params[3] = IROUND64(matrix[3]); 6136 params[4] = IROUND64(matrix[4]); 6137 params[5] = IROUND64(matrix[5]); 6138 params[6] = IROUND64(matrix[6]); 6139 params[7] = IROUND64(matrix[7]); 6140 params[8] = IROUND64(matrix[8]); 6141 params[9] = IROUND64(matrix[9]); 6142 params[10] = IROUND64(matrix[10]); 6143 params[11] = IROUND64(matrix[11]); 6144 params[12] = IROUND64(matrix[12]); 6145 params[13] = IROUND64(matrix[13]); 6146 params[14] = IROUND64(matrix[14]); 6147 params[15] = IROUND64(matrix[15]); 6148 } 6149 break; 6150 case GL_MODELVIEW_STACK_DEPTH: 6151 params[0] = (GLint64)(ctx->ModelviewMatrixStack.Depth + 1); 6152 break; 6153 case GL_NAME_STACK_DEPTH: 6154 params[0] = (GLint64)(ctx->Select.NameStackDepth); 6155 break; 6156 case GL_NORMALIZE: 6157 params[0] = BOOLEAN_TO_INT64(ctx->Transform.Normalize); 6158 break; 6159 case GL_PACK_ALIGNMENT: 6160 params[0] = (GLint64)(ctx->Pack.Alignment); 6161 break; 6162 case GL_PACK_LSB_FIRST: 6163 params[0] = BOOLEAN_TO_INT64(ctx->Pack.LsbFirst); 6164 break; 6165 case GL_PACK_ROW_LENGTH: 6166 params[0] = (GLint64)(ctx->Pack.RowLength); 6167 break; 6168 case GL_PACK_SKIP_PIXELS: 6169 params[0] = (GLint64)(ctx->Pack.SkipPixels); 6170 break; 6171 case GL_PACK_SKIP_ROWS: 6172 params[0] = (GLint64)(ctx->Pack.SkipRows); 6173 break; 6174 case GL_PACK_SWAP_BYTES: 6175 params[0] = BOOLEAN_TO_INT64(ctx->Pack.SwapBytes); 6176 break; 6177 case GL_PACK_SKIP_IMAGES_EXT: 6178 params[0] = (GLint64)(ctx->Pack.SkipImages); 6179 break; 6180 case GL_PACK_IMAGE_HEIGHT_EXT: 6181 params[0] = (GLint64)(ctx->Pack.ImageHeight); 6182 break; 6183 case GL_PACK_INVERT_MESA: 6184 params[0] = BOOLEAN_TO_INT64(ctx->Pack.Invert); 6185 break; 6186 case GL_PERSPECTIVE_CORRECTION_HINT: 6187 params[0] = ENUM_TO_INT64(ctx->Hint.PerspectiveCorrection); 6188 break; 6189 case GL_PIXEL_MAP_A_TO_A_SIZE: 6190 params[0] = (GLint64)(ctx->PixelMaps.AtoA.Size); 6191 break; 6192 case GL_PIXEL_MAP_B_TO_B_SIZE: 6193 params[0] = (GLint64)(ctx->PixelMaps.BtoB.Size); 6194 break; 6195 case GL_PIXEL_MAP_G_TO_G_SIZE: 6196 params[0] = (GLint64)(ctx->PixelMaps.GtoG.Size); 6197 break; 6198 case GL_PIXEL_MAP_I_TO_A_SIZE: 6199 params[0] = (GLint64)(ctx->PixelMaps.ItoA.Size); 6200 break; 6201 case GL_PIXEL_MAP_I_TO_B_SIZE: 6202 params[0] = (GLint64)(ctx->PixelMaps.ItoB.Size); 6203 break; 6204 case GL_PIXEL_MAP_I_TO_G_SIZE: 6205 params[0] = (GLint64)(ctx->PixelMaps.ItoG.Size); 6206 break; 6207 case GL_PIXEL_MAP_I_TO_I_SIZE: 6208 params[0] = (GLint64)(ctx->PixelMaps.ItoI.Size); 6209 break; 6210 case GL_PIXEL_MAP_I_TO_R_SIZE: 6211 params[0] = (GLint64)(ctx->PixelMaps.ItoR.Size); 6212 break; 6213 case GL_PIXEL_MAP_R_TO_R_SIZE: 6214 params[0] = (GLint64)(ctx->PixelMaps.RtoR.Size); 6215 break; 6216 case GL_PIXEL_MAP_S_TO_S_SIZE: 6217 params[0] = (GLint64)(ctx->PixelMaps.StoS.Size); 6218 break; 6219 case GL_POINT_SIZE: 6220 params[0] = IROUND64(ctx->Point.Size); 6221 break; 6222 case GL_POINT_SIZE_GRANULARITY: 6223 params[0] = IROUND64(ctx->Const.PointSizeGranularity); 6224 break; 6225 case GL_POINT_SIZE_RANGE: 6226 params[0] = IROUND64(ctx->Const.MinPointSizeAA); 6227 params[1] = IROUND64(ctx->Const.MaxPointSizeAA); 6228 break; 6229 case GL_ALIASED_POINT_SIZE_RANGE: 6230 params[0] = IROUND64(ctx->Const.MinPointSize); 6231 params[1] = IROUND64(ctx->Const.MaxPointSize); 6232 break; 6233 case GL_POINT_SMOOTH: 6234 params[0] = BOOLEAN_TO_INT64(ctx->Point.SmoothFlag); 6235 break; 6236 case GL_POINT_SMOOTH_HINT: 6237 params[0] = ENUM_TO_INT64(ctx->Hint.PointSmooth); 6238 break; 6239 case GL_POINT_SIZE_MIN_EXT: 6240 params[0] = IROUND64(ctx->Point.MinSize); 6241 break; 6242 case GL_POINT_SIZE_MAX_EXT: 6243 params[0] = IROUND64(ctx->Point.MaxSize); 6244 break; 6245 case GL_POINT_FADE_THRESHOLD_SIZE_EXT: 6246 params[0] = IROUND64(ctx->Point.Threshold); 6247 break; 6248 case GL_DISTANCE_ATTENUATION_EXT: 6249 params[0] = IROUND64(ctx->Point.Params[0]); 6250 params[1] = IROUND64(ctx->Point.Params[1]); 6251 params[2] = IROUND64(ctx->Point.Params[2]); 6252 break; 6253 case GL_POLYGON_MODE: 6254 params[0] = ENUM_TO_INT64(ctx->Polygon.FrontMode); 6255 params[1] = ENUM_TO_INT64(ctx->Polygon.BackMode); 6256 break; 6257 case GL_POLYGON_OFFSET_BIAS_EXT: 6258 params[0] = IROUND64(ctx->Polygon.OffsetUnits); 6259 break; 6260 case GL_POLYGON_OFFSET_FACTOR: 6261 params[0] = IROUND64(ctx->Polygon.OffsetFactor ); 6262 break; 6263 case GL_POLYGON_OFFSET_UNITS: 6264 params[0] = IROUND64(ctx->Polygon.OffsetUnits ); 6265 break; 6266 case GL_POLYGON_OFFSET_POINT: 6267 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetPoint); 6268 break; 6269 case GL_POLYGON_OFFSET_LINE: 6270 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetLine); 6271 break; 6272 case GL_POLYGON_OFFSET_FILL: 6273 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetFill); 6274 break; 6275 case GL_POLYGON_SMOOTH: 6276 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.SmoothFlag); 6277 break; 6278 case GL_POLYGON_SMOOTH_HINT: 6279 params[0] = ENUM_TO_INT64(ctx->Hint.PolygonSmooth); 6280 break; 6281 case GL_POLYGON_STIPPLE: 6282 params[0] = BOOLEAN_TO_INT64(ctx->Polygon.StippleFlag); 6283 break; 6284 case GL_PROJECTION_MATRIX: 6285 { 6286 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 6287 params[0] = IROUND64(matrix[0]); 6288 params[1] = IROUND64(matrix[1]); 6289 params[2] = IROUND64(matrix[2]); 6290 params[3] = IROUND64(matrix[3]); 6291 params[4] = IROUND64(matrix[4]); 6292 params[5] = IROUND64(matrix[5]); 6293 params[6] = IROUND64(matrix[6]); 6294 params[7] = IROUND64(matrix[7]); 6295 params[8] = IROUND64(matrix[8]); 6296 params[9] = IROUND64(matrix[9]); 6297 params[10] = IROUND64(matrix[10]); 6298 params[11] = IROUND64(matrix[11]); 6299 params[12] = IROUND64(matrix[12]); 6300 params[13] = IROUND64(matrix[13]); 6301 params[14] = IROUND64(matrix[14]); 6302 params[15] = IROUND64(matrix[15]); 6303 } 6304 break; 6305 case GL_PROJECTION_STACK_DEPTH: 6306 params[0] = (GLint64)(ctx->ProjectionMatrixStack.Depth + 1); 6307 break; 6308 case GL_READ_BUFFER: 6309 params[0] = ENUM_TO_INT64(ctx->ReadBuffer->ColorReadBuffer); 6310 break; 6311 case GL_RED_BIAS: 6312 params[0] = IROUND64(ctx->Pixel.RedBias); 6313 break; 6314 case GL_RED_BITS: 6315 params[0] = (GLint64)(ctx->DrawBuffer->Visual.redBits); 6316 break; 6317 case GL_RED_SCALE: 6318 params[0] = IROUND64(ctx->Pixel.RedScale); 6319 break; 6320 case GL_RENDER_MODE: 6321 params[0] = ENUM_TO_INT64(ctx->RenderMode); 6322 break; 6323 case GL_RESCALE_NORMAL: 6324 params[0] = BOOLEAN_TO_INT64(ctx->Transform.RescaleNormals); 6325 break; 6326 case GL_RGBA_MODE: 6327 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.rgbMode); 6328 break; 6329 case GL_SCISSOR_BOX: 6330 params[0] = (GLint64)(ctx->Scissor.X); 6331 params[1] = (GLint64)(ctx->Scissor.Y); 6332 params[2] = (GLint64)(ctx->Scissor.Width); 6333 params[3] = (GLint64)(ctx->Scissor.Height); 6334 break; 6335 case GL_SCISSOR_TEST: 6336 params[0] = BOOLEAN_TO_INT64(ctx->Scissor.Enabled); 6337 break; 6338 case GL_SELECTION_BUFFER_SIZE: 6339 params[0] = (GLint64)(ctx->Select.BufferSize); 6340 break; 6341 case GL_SHADE_MODEL: 6342 params[0] = ENUM_TO_INT64(ctx->Light.ShadeModel); 6343 break; 6344 case GL_SHARED_TEXTURE_PALETTE_EXT: 6345 params[0] = BOOLEAN_TO_INT64(ctx->Texture.SharedPalette); 6346 break; 6347 case GL_STENCIL_BITS: 6348 params[0] = (GLint64)(ctx->DrawBuffer->Visual.stencilBits); 6349 break; 6350 case GL_STENCIL_CLEAR_VALUE: 6351 params[0] = (GLint64)(ctx->Stencil.Clear); 6352 break; 6353 case GL_STENCIL_FAIL: 6354 params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]); 6355 break; 6356 case GL_STENCIL_FUNC: 6357 params[0] = ENUM_TO_INT64(ctx->Stencil.Function[ctx->Stencil.ActiveFace]); 6358 break; 6359 case GL_STENCIL_PASS_DEPTH_FAIL: 6360 params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]); 6361 break; 6362 case GL_STENCIL_PASS_DEPTH_PASS: 6363 params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]); 6364 break; 6365 case GL_STENCIL_REF: 6366 params[0] = (GLint64)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]); 6367 break; 6368 case GL_STENCIL_TEST: 6369 params[0] = BOOLEAN_TO_INT64(ctx->Stencil.Enabled); 6370 break; 6371 case GL_STENCIL_VALUE_MASK: 6372 params[0] = (GLint64)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]); 6373 break; 6374 case GL_STENCIL_WRITEMASK: 6375 params[0] = (GLint64)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]); 6376 break; 6377 case GL_STEREO: 6378 params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.stereoMode); 6379 break; 6380 case GL_SUBPIXEL_BITS: 6381 params[0] = (GLint64)(ctx->Const.SubPixelBits); 6382 break; 6383 case GL_TEXTURE_1D: 6384 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D)); 6385 break; 6386 case GL_TEXTURE_2D: 6387 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D)); 6388 break; 6389 case GL_TEXTURE_3D: 6390 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D)); 6391 break; 6392 case GL_TEXTURE_1D_ARRAY_EXT: 6393 CHECK_EXT1(MESA_texture_array, "GetInteger64v"); 6394 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)); 6395 break; 6396 case GL_TEXTURE_2D_ARRAY_EXT: 6397 CHECK_EXT1(MESA_texture_array, "GetInteger64v"); 6398 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)); 6399 break; 6400 case GL_TEXTURE_BINDING_1D: 6401 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name); 6402 break; 6403 case GL_TEXTURE_BINDING_2D: 6404 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name); 6405 break; 6406 case GL_TEXTURE_BINDING_3D: 6407 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name); 6408 break; 6409 case GL_TEXTURE_BINDING_1D_ARRAY_EXT: 6410 CHECK_EXT1(MESA_texture_array, "GetInteger64v"); 6411 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name); 6412 break; 6413 case GL_TEXTURE_BINDING_2D_ARRAY_EXT: 6414 CHECK_EXT1(MESA_texture_array, "GetInteger64v"); 6415 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name); 6416 break; 6417 case GL_TEXTURE_GEN_S: 6418 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)); 6419 break; 6420 case GL_TEXTURE_GEN_T: 6421 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0)); 6422 break; 6423 case GL_TEXTURE_GEN_R: 6424 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0)); 6425 break; 6426 case GL_TEXTURE_GEN_Q: 6427 params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0)); 6428 break; 6429 case GL_TEXTURE_MATRIX: 6430 { 6431 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 6432 params[0] = IROUND64(matrix[0]); 6433 params[1] = IROUND64(matrix[1]); 6434 params[2] = IROUND64(matrix[2]); 6435 params[3] = IROUND64(matrix[3]); 6436 params[4] = IROUND64(matrix[4]); 6437 params[5] = IROUND64(matrix[5]); 6438 params[6] = IROUND64(matrix[6]); 6439 params[7] = IROUND64(matrix[7]); 6440 params[8] = IROUND64(matrix[8]); 6441 params[9] = IROUND64(matrix[9]); 6442 params[10] = IROUND64(matrix[10]); 6443 params[11] = IROUND64(matrix[11]); 6444 params[12] = IROUND64(matrix[12]); 6445 params[13] = IROUND64(matrix[13]); 6446 params[14] = IROUND64(matrix[14]); 6447 params[15] = IROUND64(matrix[15]); 6448 } 6449 break; 6450 case GL_TEXTURE_STACK_DEPTH: 6451 params[0] = (GLint64)(ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1); 6452 break; 6453 case GL_UNPACK_ALIGNMENT: 6454 params[0] = (GLint64)(ctx->Unpack.Alignment); 6455 break; 6456 case GL_UNPACK_LSB_FIRST: 6457 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.LsbFirst); 6458 break; 6459 case GL_UNPACK_ROW_LENGTH: 6460 params[0] = (GLint64)(ctx->Unpack.RowLength); 6461 break; 6462 case GL_UNPACK_SKIP_PIXELS: 6463 params[0] = (GLint64)(ctx->Unpack.SkipPixels); 6464 break; 6465 case GL_UNPACK_SKIP_ROWS: 6466 params[0] = (GLint64)(ctx->Unpack.SkipRows); 6467 break; 6468 case GL_UNPACK_SWAP_BYTES: 6469 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.SwapBytes); 6470 break; 6471 case GL_UNPACK_SKIP_IMAGES_EXT: 6472 params[0] = (GLint64)(ctx->Unpack.SkipImages); 6473 break; 6474 case GL_UNPACK_IMAGE_HEIGHT_EXT: 6475 params[0] = (GLint64)(ctx->Unpack.ImageHeight); 6476 break; 6477 case GL_UNPACK_CLIENT_STORAGE_APPLE: 6478 params[0] = BOOLEAN_TO_INT64(ctx->Unpack.ClientStorage); 6479 break; 6480 case GL_VIEWPORT: 6481 params[0] = (GLint64)(ctx->Viewport.X); 6482 params[1] = (GLint64)(ctx->Viewport.Y); 6483 params[2] = (GLint64)(ctx->Viewport.Width); 6484 params[3] = (GLint64)(ctx->Viewport.Height); 6485 break; 6486 case GL_ZOOM_X: 6487 params[0] = IROUND64(ctx->Pixel.ZoomX); 6488 break; 6489 case GL_ZOOM_Y: 6490 params[0] = IROUND64(ctx->Pixel.ZoomY); 6491 break; 6492 case GL_VERTEX_ARRAY: 6493 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Vertex.Enabled); 6494 break; 6495 case GL_VERTEX_ARRAY_SIZE: 6496 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.Size); 6497 break; 6498 case GL_VERTEX_ARRAY_TYPE: 6499 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Vertex.Type); 6500 break; 6501 case GL_VERTEX_ARRAY_STRIDE: 6502 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.Stride); 6503 break; 6504 case GL_VERTEX_ARRAY_COUNT_EXT: 6505 params[0] = (GLint64)(0); 6506 break; 6507 case GL_NORMAL_ARRAY: 6508 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Enabled); 6509 break; 6510 case GL_NORMAL_ARRAY_TYPE: 6511 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Type); 6512 break; 6513 case GL_NORMAL_ARRAY_STRIDE: 6514 params[0] = (GLint64)(ctx->Array.ArrayObj->Normal.Stride); 6515 break; 6516 case GL_NORMAL_ARRAY_COUNT_EXT: 6517 params[0] = (GLint64)(0); 6518 break; 6519 case GL_COLOR_ARRAY: 6520 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Color.Enabled); 6521 break; 6522 case GL_COLOR_ARRAY_SIZE: 6523 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.Size); 6524 break; 6525 case GL_COLOR_ARRAY_TYPE: 6526 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Color.Type); 6527 break; 6528 case GL_COLOR_ARRAY_STRIDE: 6529 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.Stride); 6530 break; 6531 case GL_COLOR_ARRAY_COUNT_EXT: 6532 params[0] = (GLint64)(0); 6533 break; 6534 case GL_INDEX_ARRAY: 6535 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Index.Enabled); 6536 break; 6537 case GL_INDEX_ARRAY_TYPE: 6538 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Index.Type); 6539 break; 6540 case GL_INDEX_ARRAY_STRIDE: 6541 params[0] = (GLint64)(ctx->Array.ArrayObj->Index.Stride); 6542 break; 6543 case GL_INDEX_ARRAY_COUNT_EXT: 6544 params[0] = (GLint64)(0); 6545 break; 6546 case GL_TEXTURE_COORD_ARRAY: 6547 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled); 6548 break; 6549 case GL_TEXTURE_COORD_ARRAY_SIZE: 6550 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size); 6551 break; 6552 case GL_TEXTURE_COORD_ARRAY_TYPE: 6553 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type); 6554 break; 6555 case GL_TEXTURE_COORD_ARRAY_STRIDE: 6556 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride); 6557 break; 6558 case GL_TEXTURE_COORD_ARRAY_COUNT_EXT: 6559 params[0] = (GLint64)(0); 6560 break; 6561 case GL_EDGE_FLAG_ARRAY: 6562 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->EdgeFlag.Enabled); 6563 break; 6564 case GL_EDGE_FLAG_ARRAY_STRIDE: 6565 params[0] = (GLint64)(ctx->Array.ArrayObj->EdgeFlag.Stride); 6566 break; 6567 case GL_EDGE_FLAG_ARRAY_COUNT_EXT: 6568 params[0] = (GLint64)(0); 6569 break; 6570 case GL_MAX_TEXTURE_UNITS_ARB: 6571 CHECK_EXT1(ARB_multitexture, "GetInteger64v"); 6572 params[0] = (GLint64)(ctx->Const.MaxTextureUnits); 6573 break; 6574 case GL_ACTIVE_TEXTURE_ARB: 6575 CHECK_EXT1(ARB_multitexture, "GetInteger64v"); 6576 params[0] = (GLint64)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit); 6577 break; 6578 case GL_CLIENT_ACTIVE_TEXTURE_ARB: 6579 CHECK_EXT1(ARB_multitexture, "GetInteger64v"); 6580 params[0] = (GLint64)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture); 6581 break; 6582 case GL_TEXTURE_CUBE_MAP_ARB: 6583 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v"); 6584 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)); 6585 break; 6586 case GL_TEXTURE_BINDING_CUBE_MAP_ARB: 6587 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v"); 6588 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name); 6589 break; 6590 case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB: 6591 CHECK_EXT1(ARB_texture_cube_map, "GetInteger64v"); 6592 params[0] = (GLint64)((1 << (ctx->Const.MaxCubeTextureLevels - 1))); 6593 break; 6594 case GL_TEXTURE_COMPRESSION_HINT_ARB: 6595 params[0] = (GLint64)(ctx->Hint.TextureCompression); 6596 break; 6597 case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB: 6598 params[0] = (GLint64)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)); 6599 break; 6600 case GL_COMPRESSED_TEXTURE_FORMATS_ARB: 6601 { 6602 GLint formats[100]; 6603 GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE); 6604 ASSERT(n <= 100); 6605 for (i = 0; i < n; i++) 6606 params[i] = ENUM_TO_INT64(formats[i]); 6607 } 6608 break; 6609 case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT: 6610 CHECK_EXT1(EXT_compiled_vertex_array, "GetInteger64v"); 6611 params[0] = (GLint64)(ctx->Array.LockFirst); 6612 break; 6613 case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT: 6614 CHECK_EXT1(EXT_compiled_vertex_array, "GetInteger64v"); 6615 params[0] = (GLint64)(ctx->Array.LockCount); 6616 break; 6617 case GL_TRANSPOSE_COLOR_MATRIX_ARB: 6618 { 6619 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 6620 params[0] = IROUND64(matrix[0]); 6621 params[1] = IROUND64(matrix[4]); 6622 params[2] = IROUND64(matrix[8]); 6623 params[3] = IROUND64(matrix[12]); 6624 params[4] = IROUND64(matrix[1]); 6625 params[5] = IROUND64(matrix[5]); 6626 params[6] = IROUND64(matrix[9]); 6627 params[7] = IROUND64(matrix[13]); 6628 params[8] = IROUND64(matrix[2]); 6629 params[9] = IROUND64(matrix[6]); 6630 params[10] = IROUND64(matrix[10]); 6631 params[11] = IROUND64(matrix[14]); 6632 params[12] = IROUND64(matrix[3]); 6633 params[13] = IROUND64(matrix[7]); 6634 params[14] = IROUND64(matrix[11]); 6635 params[15] = IROUND64(matrix[15]); 6636 } 6637 break; 6638 case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB: 6639 { 6640 const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m; 6641 params[0] = IROUND64(matrix[0]); 6642 params[1] = IROUND64(matrix[4]); 6643 params[2] = IROUND64(matrix[8]); 6644 params[3] = IROUND64(matrix[12]); 6645 params[4] = IROUND64(matrix[1]); 6646 params[5] = IROUND64(matrix[5]); 6647 params[6] = IROUND64(matrix[9]); 6648 params[7] = IROUND64(matrix[13]); 6649 params[8] = IROUND64(matrix[2]); 6650 params[9] = IROUND64(matrix[6]); 6651 params[10] = IROUND64(matrix[10]); 6652 params[11] = IROUND64(matrix[14]); 6653 params[12] = IROUND64(matrix[3]); 6654 params[13] = IROUND64(matrix[7]); 6655 params[14] = IROUND64(matrix[11]); 6656 params[15] = IROUND64(matrix[15]); 6657 } 6658 break; 6659 case GL_TRANSPOSE_PROJECTION_MATRIX_ARB: 6660 { 6661 const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m; 6662 params[0] = IROUND64(matrix[0]); 6663 params[1] = IROUND64(matrix[4]); 6664 params[2] = IROUND64(matrix[8]); 6665 params[3] = IROUND64(matrix[12]); 6666 params[4] = IROUND64(matrix[1]); 6667 params[5] = IROUND64(matrix[5]); 6668 params[6] = IROUND64(matrix[9]); 6669 params[7] = IROUND64(matrix[13]); 6670 params[8] = IROUND64(matrix[2]); 6671 params[9] = IROUND64(matrix[6]); 6672 params[10] = IROUND64(matrix[10]); 6673 params[11] = IROUND64(matrix[14]); 6674 params[12] = IROUND64(matrix[3]); 6675 params[13] = IROUND64(matrix[7]); 6676 params[14] = IROUND64(matrix[11]); 6677 params[15] = IROUND64(matrix[15]); 6678 } 6679 break; 6680 case GL_TRANSPOSE_TEXTURE_MATRIX_ARB: 6681 { 6682 const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m; 6683 params[0] = IROUND64(matrix[0]); 6684 params[1] = IROUND64(matrix[4]); 6685 params[2] = IROUND64(matrix[8]); 6686 params[3] = IROUND64(matrix[12]); 6687 params[4] = IROUND64(matrix[1]); 6688 params[5] = IROUND64(matrix[5]); 6689 params[6] = IROUND64(matrix[9]); 6690 params[7] = IROUND64(matrix[13]); 6691 params[8] = IROUND64(matrix[2]); 6692 params[9] = IROUND64(matrix[6]); 6693 params[10] = IROUND64(matrix[10]); 6694 params[11] = IROUND64(matrix[14]); 6695 params[12] = IROUND64(matrix[3]); 6696 params[13] = IROUND64(matrix[7]); 6697 params[14] = IROUND64(matrix[11]); 6698 params[15] = IROUND64(matrix[15]); 6699 } 6700 break; 6701 case GL_COLOR_MATRIX_SGI: 6702 { 6703 const GLfloat *matrix = ctx->ColorMatrixStack.Top->m; 6704 params[0] = IROUND64(matrix[0]); 6705 params[1] = IROUND64(matrix[1]); 6706 params[2] = IROUND64(matrix[2]); 6707 params[3] = IROUND64(matrix[3]); 6708 params[4] = IROUND64(matrix[4]); 6709 params[5] = IROUND64(matrix[5]); 6710 params[6] = IROUND64(matrix[6]); 6711 params[7] = IROUND64(matrix[7]); 6712 params[8] = IROUND64(matrix[8]); 6713 params[9] = IROUND64(matrix[9]); 6714 params[10] = IROUND64(matrix[10]); 6715 params[11] = IROUND64(matrix[11]); 6716 params[12] = IROUND64(matrix[12]); 6717 params[13] = IROUND64(matrix[13]); 6718 params[14] = IROUND64(matrix[14]); 6719 params[15] = IROUND64(matrix[15]); 6720 } 6721 break; 6722 case GL_COLOR_MATRIX_STACK_DEPTH_SGI: 6723 params[0] = (GLint64)(ctx->ColorMatrixStack.Depth + 1); 6724 break; 6725 case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI: 6726 params[0] = (GLint64)(MAX_COLOR_STACK_DEPTH); 6727 break; 6728 case GL_POST_COLOR_MATRIX_RED_SCALE_SGI: 6729 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[0]); 6730 break; 6731 case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI: 6732 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[1]); 6733 break; 6734 case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI: 6735 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[2]); 6736 break; 6737 case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI: 6738 params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[3]); 6739 break; 6740 case GL_POST_COLOR_MATRIX_RED_BIAS_SGI: 6741 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[0]); 6742 break; 6743 case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI: 6744 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[1]); 6745 break; 6746 case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI: 6747 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[2]); 6748 break; 6749 case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI: 6750 params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[3]); 6751 break; 6752 case GL_CONVOLUTION_1D_EXT: 6753 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6754 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution1DEnabled); 6755 break; 6756 case GL_CONVOLUTION_2D_EXT: 6757 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6758 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution2DEnabled); 6759 break; 6760 case GL_SEPARABLE_2D_EXT: 6761 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6762 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Separable2DEnabled); 6763 break; 6764 case GL_POST_CONVOLUTION_RED_SCALE_EXT: 6765 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6766 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[0]); 6767 break; 6768 case GL_POST_CONVOLUTION_GREEN_SCALE_EXT: 6769 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6770 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[1]); 6771 break; 6772 case GL_POST_CONVOLUTION_BLUE_SCALE_EXT: 6773 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6774 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[2]); 6775 break; 6776 case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT: 6777 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6778 params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[3]); 6779 break; 6780 case GL_POST_CONVOLUTION_RED_BIAS_EXT: 6781 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6782 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[0]); 6783 break; 6784 case GL_POST_CONVOLUTION_GREEN_BIAS_EXT: 6785 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6786 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[1]); 6787 break; 6788 case GL_POST_CONVOLUTION_BLUE_BIAS_EXT: 6789 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6790 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[2]); 6791 break; 6792 case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT: 6793 CHECK_EXT1(EXT_convolution, "GetInteger64v"); 6794 params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[3]); 6795 break; 6796 case GL_HISTOGRAM: 6797 CHECK_EXT1(EXT_histogram, "GetInteger64v"); 6798 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.HistogramEnabled); 6799 break; 6800 case GL_MINMAX: 6801 CHECK_EXT1(EXT_histogram, "GetInteger64v"); 6802 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MinMaxEnabled); 6803 break; 6804 case GL_COLOR_TABLE_SGI: 6805 CHECK_EXT1(SGI_color_table, "GetInteger64v"); 6806 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]); 6807 break; 6808 case GL_POST_CONVOLUTION_COLOR_TABLE_SGI: 6809 CHECK_EXT1(SGI_color_table, "GetInteger64v"); 6810 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]); 6811 break; 6812 case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI: 6813 CHECK_EXT1(SGI_color_table, "GetInteger64v"); 6814 params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]); 6815 break; 6816 case GL_TEXTURE_COLOR_TABLE_SGI: 6817 CHECK_EXT1(SGI_texture_color_table, "GetInteger64v"); 6818 params[0] = BOOLEAN_TO_INT64(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled); 6819 break; 6820 case GL_COLOR_SUM_EXT: 6821 CHECK_EXT2(EXT_secondary_color, ARB_vertex_program, "GetInteger64v"); 6822 params[0] = BOOLEAN_TO_INT64(ctx->Fog.ColorSumEnabled); 6823 break; 6824 case GL_CURRENT_SECONDARY_COLOR_EXT: 6825 CHECK_EXT1(EXT_secondary_color, "GetInteger64v"); 6826 { 6827 FLUSH_CURRENT(ctx, 0); 6828 params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]); 6829 params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]); 6830 params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]); 6831 params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]); 6832 } 6833 break; 6834 case GL_SECONDARY_COLOR_ARRAY_EXT: 6835 CHECK_EXT1(EXT_secondary_color, "GetInteger64v"); 6836 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Enabled); 6837 break; 6838 case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT: 6839 CHECK_EXT1(EXT_secondary_color, "GetInteger64v"); 6840 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Type); 6841 break; 6842 case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT: 6843 CHECK_EXT1(EXT_secondary_color, "GetInteger64v"); 6844 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.Stride); 6845 break; 6846 case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT: 6847 CHECK_EXT1(EXT_secondary_color, "GetInteger64v"); 6848 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.Size); 6849 break; 6850 case GL_CURRENT_FOG_COORDINATE_EXT: 6851 CHECK_EXT1(EXT_fog_coord, "GetInteger64v"); 6852 { 6853 FLUSH_CURRENT(ctx, 0); 6854 params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]); 6855 } 6856 break; 6857 case GL_FOG_COORDINATE_ARRAY_EXT: 6858 CHECK_EXT1(EXT_fog_coord, "GetInteger64v"); 6859 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->FogCoord.Enabled); 6860 break; 6861 case GL_FOG_COORDINATE_ARRAY_TYPE_EXT: 6862 CHECK_EXT1(EXT_fog_coord, "GetInteger64v"); 6863 params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->FogCoord.Type); 6864 break; 6865 case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT: 6866 CHECK_EXT1(EXT_fog_coord, "GetInteger64v"); 6867 params[0] = (GLint64)(ctx->Array.ArrayObj->FogCoord.Stride); 6868 break; 6869 case GL_FOG_COORDINATE_SOURCE_EXT: 6870 CHECK_EXT1(EXT_fog_coord, "GetInteger64v"); 6871 params[0] = ENUM_TO_INT64(ctx->Fog.FogCoordinateSource); 6872 break; 6873 case GL_MAX_TEXTURE_LOD_BIAS_EXT: 6874 CHECK_EXT1(EXT_texture_lod_bias, "GetInteger64v"); 6875 params[0] = IROUND64(ctx->Const.MaxTextureLodBias); 6876 break; 6877 case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: 6878 CHECK_EXT1(EXT_texture_filter_anisotropic, "GetInteger64v"); 6879 params[0] = IROUND64(ctx->Const.MaxTextureMaxAnisotropy); 6880 break; 6881 case GL_MULTISAMPLE_ARB: 6882 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.Enabled); 6883 break; 6884 case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB: 6885 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToCoverage); 6886 break; 6887 case GL_SAMPLE_ALPHA_TO_ONE_ARB: 6888 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToOne); 6889 break; 6890 case GL_SAMPLE_COVERAGE_ARB: 6891 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverage); 6892 break; 6893 case GL_SAMPLE_COVERAGE_VALUE_ARB: 6894 params[0] = IROUND64(ctx->Multisample.SampleCoverageValue); 6895 break; 6896 case GL_SAMPLE_COVERAGE_INVERT_ARB: 6897 params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverageInvert); 6898 break; 6899 case GL_SAMPLE_BUFFERS_ARB: 6900 params[0] = (GLint64)(ctx->DrawBuffer->Visual.sampleBuffers); 6901 break; 6902 case GL_SAMPLES_ARB: 6903 params[0] = (GLint64)(ctx->DrawBuffer->Visual.samples); 6904 break; 6905 case GL_RASTER_POSITION_UNCLIPPED_IBM: 6906 CHECK_EXT1(IBM_rasterpos_clip, "GetInteger64v"); 6907 params[0] = BOOLEAN_TO_INT64(ctx->Transform.RasterPositionUnclipped); 6908 break; 6909 case GL_POINT_SPRITE_NV: 6910 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetInteger64v"); 6911 params[0] = BOOLEAN_TO_INT64(ctx->Point.PointSprite); 6912 break; 6913 case GL_POINT_SPRITE_R_MODE_NV: 6914 CHECK_EXT1(NV_point_sprite, "GetInteger64v"); 6915 params[0] = ENUM_TO_INT64(ctx->Point.SpriteRMode); 6916 break; 6917 case GL_POINT_SPRITE_COORD_ORIGIN: 6918 CHECK_EXT2(NV_point_sprite, ARB_point_sprite, "GetInteger64v"); 6919 params[0] = ENUM_TO_INT64(ctx->Point.SpriteOrigin); 6920 break; 6921 case GL_GENERATE_MIPMAP_HINT_SGIS: 6922 CHECK_EXT1(SGIS_generate_mipmap, "GetInteger64v"); 6923 params[0] = ENUM_TO_INT64(ctx->Hint.GenerateMipmap); 6924 break; 6925 case GL_VERTEX_PROGRAM_BINDING_NV: 6926 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6927 params[0] = (GLint64)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0)); 6928 break; 6929 case GL_VERTEX_ATTRIB_ARRAY0_NV: 6930 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6931 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[0].Enabled); 6932 break; 6933 case GL_VERTEX_ATTRIB_ARRAY1_NV: 6934 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6935 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[1].Enabled); 6936 break; 6937 case GL_VERTEX_ATTRIB_ARRAY2_NV: 6938 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6939 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[2].Enabled); 6940 break; 6941 case GL_VERTEX_ATTRIB_ARRAY3_NV: 6942 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6943 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[3].Enabled); 6944 break; 6945 case GL_VERTEX_ATTRIB_ARRAY4_NV: 6946 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6947 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[4].Enabled); 6948 break; 6949 case GL_VERTEX_ATTRIB_ARRAY5_NV: 6950 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6951 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[5].Enabled); 6952 break; 6953 case GL_VERTEX_ATTRIB_ARRAY6_NV: 6954 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6955 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[6].Enabled); 6956 break; 6957 case GL_VERTEX_ATTRIB_ARRAY7_NV: 6958 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6959 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[7].Enabled); 6960 break; 6961 case GL_VERTEX_ATTRIB_ARRAY8_NV: 6962 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6963 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[8].Enabled); 6964 break; 6965 case GL_VERTEX_ATTRIB_ARRAY9_NV: 6966 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6967 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[9].Enabled); 6968 break; 6969 case GL_VERTEX_ATTRIB_ARRAY10_NV: 6970 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6971 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[10].Enabled); 6972 break; 6973 case GL_VERTEX_ATTRIB_ARRAY11_NV: 6974 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6975 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[11].Enabled); 6976 break; 6977 case GL_VERTEX_ATTRIB_ARRAY12_NV: 6978 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6979 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[12].Enabled); 6980 break; 6981 case GL_VERTEX_ATTRIB_ARRAY13_NV: 6982 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6983 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[13].Enabled); 6984 break; 6985 case GL_VERTEX_ATTRIB_ARRAY14_NV: 6986 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6987 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[14].Enabled); 6988 break; 6989 case GL_VERTEX_ATTRIB_ARRAY15_NV: 6990 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6991 params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[15].Enabled); 6992 break; 6993 case GL_MAP1_VERTEX_ATTRIB0_4_NV: 6994 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6995 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[0]); 6996 break; 6997 case GL_MAP1_VERTEX_ATTRIB1_4_NV: 6998 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 6999 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[1]); 7000 break; 7001 case GL_MAP1_VERTEX_ATTRIB2_4_NV: 7002 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7003 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[2]); 7004 break; 7005 case GL_MAP1_VERTEX_ATTRIB3_4_NV: 7006 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7007 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[3]); 7008 break; 7009 case GL_MAP1_VERTEX_ATTRIB4_4_NV: 7010 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7011 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[4]); 7012 break; 7013 case GL_MAP1_VERTEX_ATTRIB5_4_NV: 7014 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7015 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[5]); 7016 break; 7017 case GL_MAP1_VERTEX_ATTRIB6_4_NV: 7018 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7019 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[6]); 7020 break; 7021 case GL_MAP1_VERTEX_ATTRIB7_4_NV: 7022 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7023 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[7]); 7024 break; 7025 case GL_MAP1_VERTEX_ATTRIB8_4_NV: 7026 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7027 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[8]); 7028 break; 7029 case GL_MAP1_VERTEX_ATTRIB9_4_NV: 7030 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7031 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[9]); 7032 break; 7033 case GL_MAP1_VERTEX_ATTRIB10_4_NV: 7034 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7035 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[10]); 7036 break; 7037 case GL_MAP1_VERTEX_ATTRIB11_4_NV: 7038 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7039 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[11]); 7040 break; 7041 case GL_MAP1_VERTEX_ATTRIB12_4_NV: 7042 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7043 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[12]); 7044 break; 7045 case GL_MAP1_VERTEX_ATTRIB13_4_NV: 7046 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7047 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[13]); 7048 break; 7049 case GL_MAP1_VERTEX_ATTRIB14_4_NV: 7050 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7051 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[14]); 7052 break; 7053 case GL_MAP1_VERTEX_ATTRIB15_4_NV: 7054 CHECK_EXT1(NV_vertex_program, "GetInteger64v"); 7055 params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[15]); 7056 break; 7057 case GL_FRAGMENT_PROGRAM_NV: 7058 CHECK_EXT1(NV_fragment_program, "GetInteger64v"); 7059 params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled); 7060 break; 7061 case GL_FRAGMENT_PROGRAM_BINDING_NV: 7062 CHECK_EXT1(NV_fragment_program, "GetInteger64v"); 7063 params[0] = (GLint64)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0); 7064 break; 7065 case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV: 7066 CHECK_EXT1(NV_fragment_program, "GetInteger64v"); 7067 params[0] = (GLint64)(MAX_NV_FRAGMENT_PROGRAM_PARAMS); 7068 break; 7069 case GL_TEXTURE_RECTANGLE_NV: 7070 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v"); 7071 params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV)); 7072 break; 7073 case GL_TEXTURE_BINDING_RECTANGLE_NV: 7074 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v"); 7075 params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name); 7076 break; 7077 case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV: 7078 CHECK_EXT1(NV_texture_rectangle, "GetInteger64v"); 7079 params[0] = (GLint64)(ctx->Const.MaxTextureRectSize); 7080 break; 7081 case GL_STENCIL_TEST_TWO_SIDE_EXT: 7082 CHECK_EXT1(EXT_stencil_two_side, "GetInteger64v"); 7083 params[0] = BOOLEAN_TO_INT64(ctx->Stencil.TestTwoSide); 7084 break; 7085 case GL_ACTIVE_STENCIL_FACE_EXT: 7086 CHECK_EXT1(EXT_stencil_two_side, "GetInteger64v"); 7087 params[0] = ENUM_TO_INT64(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT); 7088 break; 7089 case GL_MAX_SHININESS_NV: 7090 CHECK_EXT1(NV_light_max_exponent, "GetInteger64v"); 7091 params[0] = IROUND64(ctx->Const.MaxShininess); 7092 break; 7093 case GL_MAX_SPOT_EXPONENT_NV: 7094 CHECK_EXT1(NV_light_max_exponent, "GetInteger64v"); 7095 params[0] = IROUND64(ctx->Const.MaxSpotExponent); 7096 break; 7097 case GL_ARRAY_BUFFER_BINDING_ARB: 7098 params[0] = (GLint64)(ctx->Array.ArrayBufferObj->Name); 7099 break; 7100 case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB: 7101 params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.BufferObj->Name); 7102 break; 7103 case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB: 7104 params[0] = (GLint64)(ctx->Array.ArrayObj->Normal.BufferObj->Name); 7105 break; 7106 case GL_COLOR_ARRAY_BUFFER_BINDING_ARB: 7107 params[0] = (GLint64)(ctx->Array.ArrayObj->Color.BufferObj->Name); 7108 break; 7109 case GL_INDEX_ARRAY_BUFFER_BINDING_ARB: 7110 params[0] = (GLint64)(ctx->Array.ArrayObj->Index.BufferObj->Name); 7111 break; 7112 case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB: 7113 params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name); 7114 break; 7115 case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: 7116 params[0] = (GLint64)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name); 7117 break; 7118 case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: 7119 params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name); 7120 break; 7121 case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: 7122 params[0] = (GLint64)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name); 7123 break; 7124 case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB: 7125 params[0] = (GLint64)(ctx->Array.ElementArrayBufferObj->Name); 7126 break; 7127 case GL_PIXEL_PACK_BUFFER_BINDING_EXT: 7128 CHECK_EXT1(EXT_pixel_buffer_object, "GetInteger64v"); 7129 params[0] = (GLint64)(ctx->Pack.BufferObj->Name); 7130 break; 7131 case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT: 7132 CHECK_EXT1(EXT_pixel_buffer_object, "GetInteger64v"); 7133 params[0] = (GLint64)(ctx->Unpack.BufferObj->Name); 7134 break; 7135 case GL_VERTEX_PROGRAM_ARB: 7136 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v"); 7137 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.Enabled); 7138 break; 7139 case GL_VERTEX_PROGRAM_POINT_SIZE_ARB: 7140 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v"); 7141 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.PointSizeEnabled); 7142 break; 7143 case GL_VERTEX_PROGRAM_TWO_SIDE_ARB: 7144 CHECK_EXT2(ARB_vertex_program, NV_vertex_program, "GetInteger64v"); 7145 params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.TwoSideEnabled); 7146 break; 7147 case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB: 7148 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v"); 7149 params[0] = (GLint64)(ctx->Const.MaxProgramMatrixStackDepth); 7150 break; 7151 case GL_MAX_PROGRAM_MATRICES_ARB: 7152 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v"); 7153 params[0] = (GLint64)(ctx->Const.MaxProgramMatrices); 7154 break; 7155 case GL_CURRENT_MATRIX_STACK_DEPTH_ARB: 7156 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program, "GetInteger64v"); 7157 params[0] = BOOLEAN_TO_INT64(ctx->CurrentStack->Depth + 1); 7158 break; 7159 case GL_CURRENT_MATRIX_ARB: 7160 CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program, "GetInteger64v"); 7161 { 7162 const GLfloat *matrix = ctx->CurrentStack->Top->m; 7163 params[0] = IROUND64(matrix[0]); 7164 params[1] = IROUND64(matrix[1]); 7165 params[2] = IROUND64(matrix[2]); 7166 params[3] = IROUND64(matrix[3]); 7167 params[4] = IROUND64(matrix[4]); 7168 params[5] = IROUND64(matrix[5]); 7169 params[6] = IROUND64(matrix[6]); 7170 params[7] = IROUND64(matrix[7]); 7171 params[8] = IROUND64(matrix[8]); 7172 params[9] = IROUND64(matrix[9]); 7173 params[10] = IROUND64(matrix[10]); 7174 params[11] = IROUND64(matrix[11]); 7175 params[12] = IROUND64(matrix[12]); 7176 params[13] = IROUND64(matrix[13]); 7177 params[14] = IROUND64(matrix[14]); 7178 params[15] = IROUND64(matrix[15]); 7179 } 7180 break; 7181 case GL_TRANSPOSE_CURRENT_MATRIX_ARB: 7182 CHECK_EXT2(ARB_vertex_program, ARB_fragment_program, "GetInteger64v"); 7183 { 7184 const GLfloat *matrix = ctx->CurrentStack->Top->m; 7185 params[0] = IROUND64(matrix[0]); 7186 params[1] = IROUND64(matrix[4]); 7187 params[2] = IROUND64(matrix[8]); 7188 params[3] = IROUND64(matrix[12]); 7189 params[4] = IROUND64(matrix[1]); 7190 params[5] = IROUND64(matrix[5]); 7191 params[6] = IROUND64(matrix[9]); 7192 params[7] = IROUND64(matrix[13]); 7193 params[8] = IROUND64(matrix[2]); 7194 params[9] = IROUND64(matrix[6]); 7195 params[10] = IROUND64(matrix[10]); 7196 params[11] = IROUND64(matrix[14]); 7197 params[12] = IROUND64(matrix[3]); 7198 params[13] = IROUND64(matrix[7]); 7199 params[14] = IROUND64(matrix[11]); 7200 params[15] = IROUND64(matrix[15]); 7201 } 7202 break; 7203 case GL_MAX_VERTEX_ATTRIBS_ARB: 7204 CHECK_EXT1(ARB_vertex_program, "GetInteger64v"); 7205 params[0] = (GLint64)(ctx->Const.VertexProgram.MaxAttribs); 7206 break; 7207 case GL_PROGRAM_ERROR_POSITION_ARB: 7208 CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program, "GetInteger64v"); 7209 params[0] = (GLint64)(ctx->Program.ErrorPos); 7210 break; 7211 case GL_FRAGMENT_PROGRAM_ARB: 7212 CHECK_EXT1(ARB_fragment_program, "GetInteger64v"); 7213 params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled); 7214 break; 7215 case GL_MAX_TEXTURE_COORDS_ARB: 7216 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetInteger64v"); 7217 params[0] = (GLint64)(ctx->Const.MaxTextureCoordUnits); 7218 break; 7219 case GL_MAX_TEXTURE_IMAGE_UNITS_ARB: 7220 CHECK_EXT2(ARB_fragment_program, NV_fragment_program, "GetInteger64v"); 7221 params[0] = (GLint64)(ctx->Const.MaxTextureImageUnits); 7222 break; 7223 case GL_DEPTH_BOUNDS_TEST_EXT: 7224 CHECK_EXT1(EXT_depth_bounds_test, "GetInteger64v"); 7225 params[0] = BOOLEAN_TO_INT64(ctx->Depth.BoundsTest); 7226 break; 7227 case GL_DEPTH_BOUNDS_EXT: 7228 CHECK_EXT1(EXT_depth_bounds_test, "GetInteger64v"); 7229 params[0] = IROUND64(ctx->Depth.BoundsMin); 7230 params[1] = IROUND64(ctx->Depth.BoundsMax); 7231 break; 7232 case GL_DEPTH_CLAMP: 7233 CHECK_EXT1(ARB_depth_clamp, "GetInteger64v"); 7234 params[0] = BOOLEAN_TO_INT64(ctx->Transform.DepthClamp); 7235 break; 7236 case GL_MAX_DRAW_BUFFERS_ARB: 7237 params[0] = (GLint64)(ctx->Const.MaxDrawBuffers); 7238 break; 7239 case GL_DRAW_BUFFER0_ARB: 7240 params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]); 7241 break; 7242 case GL_DRAW_BUFFER1_ARB: 7243 { 7244 GLenum buffer; 7245 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 7246 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 7247 return; 7248 } 7249 buffer = ctx->DrawBuffer->ColorDrawBuffer[1]; 7250 params[0] = ENUM_TO_INT64(buffer); 7251 } 7252 break; 7253 case GL_DRAW_BUFFER2_ARB: 7254 { 7255 GLenum buffer; 7256 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 7257 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 7258 return; 7259 } 7260 buffer = ctx->DrawBuffer->ColorDrawBuffer[2]; 7261 params[0] = ENUM_TO_INT64(buffer); 7262 } 7263 break; 7264 case GL_DRAW_BUFFER3_ARB: 7265 { 7266 GLenum buffer; 7267 if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) { 7268 _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)"); 7269 return; 7270 } 7271 buffer = ctx->DrawBuffer->ColorDrawBuffer[3]; 7272 params[0] = ENUM_TO_INT64(buffer); 7273 } 7274 break; 7275 case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES: 7276 CHECK_EXT1(OES_read_format, "GetInteger64v"); 7277 params[0] = (GLint64)(_mesa_get_color_read_type(ctx)); 7278 break; 7279 case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES: 7280 CHECK_EXT1(OES_read_format, "GetInteger64v"); 7281 params[0] = (GLint64)(_mesa_get_color_read_format(ctx)); 7282 break; 7283 case GL_NUM_FRAGMENT_REGISTERS_ATI: 7284 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v"); 7285 params[0] = (GLint64)(6); 7286 break; 7287 case GL_NUM_FRAGMENT_CONSTANTS_ATI: 7288 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v"); 7289 params[0] = (GLint64)(8); 7290 break; 7291 case GL_NUM_PASSES_ATI: 7292 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v"); 7293 params[0] = (GLint64)(2); 7294 break; 7295 case GL_NUM_INSTRUCTIONS_PER_PASS_ATI: 7296 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v"); 7297 params[0] = (GLint64)(8); 7298 break; 7299 case GL_NUM_INSTRUCTIONS_TOTAL_ATI: 7300 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v"); 7301 params[0] = (GLint64)(16); 7302 break; 7303 case GL_COLOR_ALPHA_PAIRING_ATI: 7304 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v"); 7305 params[0] = BOOLEAN_TO_INT64(GL_TRUE); 7306 break; 7307 case GL_NUM_LOOPBACK_COMPONENTS_ATI: 7308 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v"); 7309 params[0] = (GLint64)(3); 7310 break; 7311 case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI: 7312 CHECK_EXT1(ATI_fragment_shader, "GetInteger64v"); 7313 params[0] = (GLint64)(3); 7314 break; 7315 case GL_STENCIL_BACK_FUNC: 7316 params[0] = ENUM_TO_INT64(ctx->Stencil.Function[1]); 7317 break; 7318 case GL_STENCIL_BACK_VALUE_MASK: 7319 params[0] = (GLint64)(ctx->Stencil.ValueMask[1]); 7320 break; 7321 case GL_STENCIL_BACK_WRITEMASK: 7322 params[0] = (GLint64)(ctx->Stencil.WriteMask[1]); 7323 break; 7324 case GL_STENCIL_BACK_REF: 7325 params[0] = (GLint64)(ctx->Stencil.Ref[1]); 7326 break; 7327 case GL_STENCIL_BACK_FAIL: 7328 params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[1]); 7329 break; 7330 case GL_STENCIL_BACK_PASS_DEPTH_FAIL: 7331 params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[1]); 7332 break; 7333 case GL_STENCIL_BACK_PASS_DEPTH_PASS: 7334 params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[1]); 7335 break; 7336 case GL_FRAMEBUFFER_BINDING_EXT: 7337 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v"); 7338 params[0] = (GLint64)(ctx->DrawBuffer->Name); 7339 break; 7340 case GL_RENDERBUFFER_BINDING_EXT: 7341 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v"); 7342 params[0] = (GLint64)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0); 7343 break; 7344 case GL_MAX_COLOR_ATTACHMENTS_EXT: 7345 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v"); 7346 params[0] = (GLint64)(ctx->Const.MaxColorAttachments); 7347 break; 7348 case GL_MAX_RENDERBUFFER_SIZE_EXT: 7349 CHECK_EXT1(EXT_framebuffer_object, "GetInteger64v"); 7350 params[0] = (GLint64)(ctx->Const.MaxRenderbufferSize); 7351 break; 7352 case GL_READ_FRAMEBUFFER_BINDING_EXT: 7353 CHECK_EXT1(EXT_framebuffer_blit, "GetInteger64v"); 7354 params[0] = (GLint64)(ctx->ReadBuffer->Name); 7355 break; 7356 case GL_PROVOKING_VERTEX_EXT: 7357 CHECK_EXT1(EXT_provoking_vertex, "GetInteger64v"); 7358 params[0] = BOOLEAN_TO_INT64(ctx->Light.ProvokingVertex); 7359 break; 7360 case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT: 7361 CHECK_EXT1(EXT_provoking_vertex, "GetInteger64v"); 7362 params[0] = BOOLEAN_TO_INT64(ctx->Const.QuadsFollowProvokingVertexConvention); 7363 break; 7364 case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB: 7365 CHECK_EXT1(ARB_fragment_shader, "GetInteger64v"); 7366 params[0] = (GLint64)(ctx->Const.FragmentProgram.MaxUniformComponents); 7367 break; 7368 case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB: 7369 CHECK_EXT1(ARB_fragment_shader, "GetInteger64v"); 7370 params[0] = ENUM_TO_INT64(ctx->Hint.FragmentShaderDerivative); 7371 break; 7372 case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB: 7373 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v"); 7374 params[0] = (GLint64)(ctx->Const.VertexProgram.MaxUniformComponents); 7375 break; 7376 case GL_MAX_VARYING_FLOATS_ARB: 7377 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v"); 7378 params[0] = (GLint64)(ctx->Const.MaxVarying * 4); 7379 break; 7380 case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB: 7381 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v"); 7382 params[0] = (GLint64)(ctx->Const.MaxVertexTextureImageUnits); 7383 break; 7384 case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB: 7385 CHECK_EXT1(ARB_vertex_shader, "GetInteger64v"); 7386 params[0] = (GLint64)(ctx->Const.MaxCombinedTextureImageUnits); 7387 break; 7388 case GL_CURRENT_PROGRAM: 7389 CHECK_EXT1(ARB_shader_objects, "GetInteger64v"); 7390 params[0] = (GLint64)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0); 7391 break; 7392 case GL_MAX_SAMPLES: 7393 CHECK_EXT1(ARB_framebuffer_object, "GetInteger64v"); 7394 params[0] = (GLint64)(ctx->Const.MaxSamples); 7395 break; 7396 case GL_VERTEX_ARRAY_BINDING_APPLE: 7397 CHECK_EXT1(APPLE_vertex_array_object, "GetInteger64v"); 7398 params[0] = (GLint64)(ctx->Array.ArrayObj->Name); 7399 break; 7400 case GL_TEXTURE_CUBE_MAP_SEAMLESS: 7401 CHECK_EXT1(ARB_seamless_cube_map, "GetInteger64v"); 7402 params[0] = BOOLEAN_TO_INT64(ctx->Texture.CubeMapSeamless); 7403 break; 7404 case GL_MAX_SERVER_WAIT_TIMEOUT: 7405 CHECK_EXT1(ARB_sync, "GetInteger64v"); 7406 params[0] = ctx->Const.MaxServerWaitTimeout; 7407 break; 7408 default: 7409 _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64v(pname=0x%x)", pname); 7410 } 7411} 7412#endif /* FEATURE_ARB_sync */ 7413 7414 7415void GLAPIENTRY 7416_mesa_GetDoublev( GLenum pname, GLdouble *params ) 7417{ 7418 const GLfloat magic = -1234.5F; 7419 GLfloat values[16]; 7420 GLuint i; 7421 7422 if (!params) 7423 return; 7424 7425 /* Init temp array to magic numbers so we can figure out how many values 7426 * are returned by the GetFloatv() call. 7427 */ 7428 for (i = 0; i < 16; i++) 7429 values[i] = magic; 7430 7431 _mesa_GetFloatv(pname, values); 7432 7433 for (i = 0; i < 16 && values[i] != magic; i++) 7434 params[i] = (GLdouble) values[i]; 7435} 7436 7437void GLAPIENTRY 7438_mesa_GetBooleanIndexedv( GLenum pname, GLuint index, GLboolean *params ) 7439{ 7440 GET_CURRENT_CONTEXT(ctx); 7441 ASSERT_OUTSIDE_BEGIN_END(ctx); 7442 7443 if (!params) 7444 return; 7445 7446 if (ctx->NewState) 7447 _mesa_update_state(ctx); 7448 7449 switch (pname) { 7450 case GL_BLEND: 7451 CHECK_EXT1(EXT_draw_buffers2, "GetBooleanIndexedv"); 7452 if (index >= ctx->Const.MaxDrawBuffers) { 7453 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname); 7454 } 7455 params[0] = INT_TO_BOOLEAN(((ctx->Color.BlendEnabled >> index) & 1)); 7456 break; 7457 case GL_COLOR_WRITEMASK: 7458 CHECK_EXT1(EXT_draw_buffers2, "GetBooleanIndexedv"); 7459 if (index >= ctx->Const.MaxDrawBuffers) { 7460 _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname); 7461 } 7462 params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][RCOMP] ? 1 : 0); 7463 params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][GCOMP] ? 1 : 0); 7464 params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][BCOMP] ? 1 : 0); 7465 params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][ACOMP] ? 1 : 0); 7466 break; 7467 default: 7468 _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanIndexedv(pname=0x%x)", pname); 7469 } 7470} 7471 7472void GLAPIENTRY 7473_mesa_GetIntegerIndexedv( GLenum pname, GLuint index, GLint *params ) 7474{ 7475 GET_CURRENT_CONTEXT(ctx); 7476 ASSERT_OUTSIDE_BEGIN_END(ctx); 7477 7478 if (!params) 7479 return; 7480 7481 if (ctx->NewState) 7482 _mesa_update_state(ctx); 7483 7484 switch (pname) { 7485 case GL_BLEND: 7486 CHECK_EXT1(EXT_draw_buffers2, "GetIntegerIndexedv"); 7487 if (index >= ctx->Const.MaxDrawBuffers) { 7488 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname); 7489 } 7490 params[0] = ((ctx->Color.BlendEnabled >> index) & 1); 7491 break; 7492 case GL_COLOR_WRITEMASK: 7493 CHECK_EXT1(EXT_draw_buffers2, "GetIntegerIndexedv"); 7494 if (index >= ctx->Const.MaxDrawBuffers) { 7495 _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname); 7496 } 7497 params[0] = ctx->Color.ColorMask[index][RCOMP] ? 1 : 0; 7498 params[1] = ctx->Color.ColorMask[index][GCOMP] ? 1 : 0; 7499 params[2] = ctx->Color.ColorMask[index][BCOMP] ? 1 : 0; 7500 params[3] = ctx->Color.ColorMask[index][ACOMP] ? 1 : 0; 7501 break; 7502 default: 7503 _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerIndexedv(pname=0x%x)", pname); 7504 } 7505} 7506 7507#if FEATURE_ARB_sync 7508void GLAPIENTRY 7509_mesa_GetInteger64Indexedv( GLenum pname, GLuint index, GLint64 *params ) 7510{ 7511 GET_CURRENT_CONTEXT(ctx); 7512 ASSERT_OUTSIDE_BEGIN_END(ctx); 7513 7514 if (!params) 7515 return; 7516 7517 if (ctx->NewState) 7518 _mesa_update_state(ctx); 7519 7520 switch (pname) { 7521 case GL_BLEND: 7522 CHECK_EXT1(EXT_draw_buffers2, "GetInteger64Indexedv"); 7523 if (index >= ctx->Const.MaxDrawBuffers) { 7524 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname); 7525 } 7526 params[0] = (GLint64)(((ctx->Color.BlendEnabled >> index) & 1)); 7527 break; 7528 case GL_COLOR_WRITEMASK: 7529 CHECK_EXT1(EXT_draw_buffers2, "GetInteger64Indexedv"); 7530 if (index >= ctx->Const.MaxDrawBuffers) { 7531 _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname); 7532 } 7533 params[0] = (GLint64)(ctx->Color.ColorMask[index][RCOMP] ? 1 : 0); 7534 params[1] = (GLint64)(ctx->Color.ColorMask[index][GCOMP] ? 1 : 0); 7535 params[2] = (GLint64)(ctx->Color.ColorMask[index][BCOMP] ? 1 : 0); 7536 params[3] = (GLint64)(ctx->Color.ColorMask[index][ACOMP] ? 1 : 0); 7537 break; 7538 default: 7539 _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64Indexedv(pname=0x%x)", pname); 7540 } 7541} 7542#endif /* FEATURE_ARB_sync */ 7543 7544