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