es1_conversion.c revision 01e04c3f
1 2#include <stdbool.h> 3 4#include "api_loopback.h" 5#include "api_exec.h" 6#include "blend.h" 7#include "clear.h" 8#include "clip.h" 9#include "context.h" 10#include "depth.h" 11#include "fog.h" 12#include "imports.h" 13#include "light.h" 14#include "lines.h" 15#include "matrix.h" 16#include "multisample.h" 17#include "pixelstore.h" 18#include "points.h" 19#include "polygon.h" 20#include "readpix.h" 21#include "texenv.h" 22#include "texgen.h" 23#include "texobj.h" 24#include "texparam.h" 25#include "mtypes.h" 26#include "viewport.h" 27#include "main/drawtex.h" 28#include "vbo/vbo.h" 29 30#include "main/es1_conversion.h" 31 32void GL_APIENTRY 33_mesa_AlphaFuncx(GLenum func, GLclampx ref) 34{ 35 _mesa_AlphaFunc(func, (GLclampf) (ref / 65536.0f)); 36} 37 38void GL_APIENTRY 39_mesa_ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) 40{ 41 _mesa_ClearColor((GLclampf) (red / 65536.0f), 42 (GLclampf) (green / 65536.0f), 43 (GLclampf) (blue / 65536.0f), 44 (GLclampf) (alpha / 65536.0f)); 45} 46 47void GL_APIENTRY 48_mesa_ClearDepthx(GLclampx depth) 49{ 50 _mesa_ClearDepthf((GLclampf) (depth / 65536.0f)); 51} 52 53void GL_APIENTRY 54_mesa_ClipPlanef(GLenum plane, const GLfloat *equation) 55{ 56 unsigned int i; 57 GLdouble converted_equation[4]; 58 59 for (i = 0; i < ARRAY_SIZE(converted_equation); i++) { 60 converted_equation[i] = (GLdouble) (equation[i]); 61 } 62 63 _mesa_ClipPlane(plane, converted_equation); 64} 65 66void GL_APIENTRY 67_mesa_ClipPlanex(GLenum plane, const GLfixed *equation) 68{ 69 unsigned int i; 70 GLdouble converted_equation[4]; 71 72 for (i = 0; i < ARRAY_SIZE(converted_equation); i++) { 73 converted_equation[i] = (GLdouble) (equation[i] / 65536.0); 74 } 75 76 _mesa_ClipPlane(plane, converted_equation); 77} 78 79void GL_APIENTRY 80_es_Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) 81{ 82 _es_Color4f((GLfloat) (red / 255.0f), 83 (GLfloat) (green / 255.0f), 84 (GLfloat) (blue / 255.0f), 85 (GLfloat) (alpha / 255.0f)); 86} 87 88void GL_APIENTRY 89_mesa_Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) 90{ 91 _es_Color4f((GLfloat) (red / 65536.0f), 92 (GLfloat) (green / 65536.0f), 93 (GLfloat) (blue / 65536.0f), 94 (GLfloat) (alpha / 65536.0f)); 95} 96 97void GL_APIENTRY 98_mesa_DepthRangex(GLclampx zNear, GLclampx zFar) 99{ 100 _mesa_DepthRangef((GLclampf) (zNear / 65536.0f), 101 (GLclampf) (zFar / 65536.0f)); 102} 103 104void GL_APIENTRY 105_mesa_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h) 106{ 107 108 _mesa_DrawTexfOES((GLfloat) (x / 65536.0f), 109 (GLfloat) (y / 65536.0f), 110 (GLfloat) (z / 65536.0f), 111 (GLfloat) (w / 65536.0f), 112 (GLfloat) (h / 65536.0f)); 113} 114 115void GL_APIENTRY 116_mesa_DrawTexxvOES(const GLfixed *coords) 117{ 118 unsigned int i; 119 GLfloat converted_coords[5]; 120 121 for (i = 0; i < ARRAY_SIZE(converted_coords); i++) { 122 converted_coords[i] = (GLfloat) (coords[i] / 65536.0f); 123 } 124 125 _mesa_DrawTexfvOES(converted_coords); 126} 127 128void GL_APIENTRY 129_mesa_Fogx(GLenum pname, GLfixed param) 130{ 131 if (pname != GL_FOG_MODE) { 132 _mesa_Fogf(pname, (GLfloat) (param / 65536.0f)); 133 } else { 134 _mesa_Fogf(pname, (GLfloat) param); 135 } 136 137} 138 139void GL_APIENTRY 140_mesa_Fogxv(GLenum pname, const GLfixed *params) 141{ 142 unsigned int i; 143 unsigned int n_params = 4; 144 GLfloat converted_params[4]; 145 bool convert_params_value = true; 146 147 switch(pname) { 148 case GL_FOG_MODE: 149 convert_params_value = false; 150 n_params = 1; 151 break; 152 case GL_FOG_COLOR: 153 n_params = 4; 154 break; 155 case GL_FOG_DENSITY: 156 case GL_FOG_START: 157 case GL_FOG_END: 158 n_params = 1; 159 break; 160 default: 161 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 162 "glFogxv(pname=0x%x)", pname); 163 return; 164 } 165 166 if (convert_params_value) { 167 for (i = 0; i < n_params; i++) { 168 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 169 } 170 } else { 171 for (i = 0; i < n_params; i++) { 172 converted_params[i] = (GLfloat) params[i]; 173 } 174 } 175 176 _mesa_Fogfv(pname, converted_params); 177} 178 179void GL_APIENTRY 180_mesa_Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, 181 GLfloat zNear, GLfloat zFar) 182{ 183 _mesa_Frustum((GLdouble) (left), 184 (GLdouble) (right), 185 (GLdouble) (bottom), 186 (GLdouble) (top), 187 (GLdouble) (zNear), 188 (GLdouble) (zFar)); 189} 190 191void GL_APIENTRY 192_mesa_Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, 193 GLfixed zNear, GLfixed zFar) 194{ 195 _mesa_Frustum((GLdouble) (left / 65536.0), 196 (GLdouble) (right / 65536.0), 197 (GLdouble) (bottom / 65536.0), 198 (GLdouble) (top / 65536.0), 199 (GLdouble) (zNear / 65536.0), 200 (GLdouble) (zFar / 65536.0)); 201} 202 203void GL_APIENTRY 204_mesa_GetClipPlanef(GLenum plane, GLfloat *equation) 205{ 206 unsigned int i; 207 GLdouble converted_equation[4]; 208 209 _mesa_GetClipPlane(plane, converted_equation); 210 for (i = 0; i < ARRAY_SIZE(converted_equation); i++) { 211 equation[i] = (GLfloat) (converted_equation[i]); 212 } 213} 214 215void GL_APIENTRY 216_mesa_GetClipPlanex(GLenum plane, GLfixed *equation) 217{ 218 unsigned int i; 219 GLdouble converted_equation[4]; 220 221 _mesa_GetClipPlane(plane, converted_equation); 222 for (i = 0; i < ARRAY_SIZE(converted_equation); i++) { 223 equation[i] = (GLfixed) (converted_equation[i] * 65536); 224 } 225} 226 227void GL_APIENTRY 228_mesa_GetLightxv(GLenum light, GLenum pname, GLfixed *params) 229{ 230 unsigned int i; 231 unsigned int n_params = 4; 232 GLfloat converted_params[4]; 233 234 if (light < GL_LIGHT0 || light > GL_LIGHT7) { 235 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 236 "glGetLightxv(light=0x%x)", light); 237 return; 238 } 239 switch(pname) { 240 case GL_AMBIENT: 241 case GL_DIFFUSE: 242 case GL_SPECULAR: 243 case GL_POSITION: 244 n_params = 4; 245 break; 246 case GL_SPOT_DIRECTION: 247 n_params = 3; 248 break; 249 case GL_SPOT_EXPONENT: 250 case GL_SPOT_CUTOFF: 251 case GL_CONSTANT_ATTENUATION: 252 case GL_LINEAR_ATTENUATION: 253 case GL_QUADRATIC_ATTENUATION: 254 n_params = 1; 255 break; 256 default: 257 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 258 "glGetLightxv(pname=0x%x)", pname); 259 return; 260 } 261 262 _mesa_GetLightfv(light, pname, converted_params); 263 for (i = 0; i < n_params; i++) { 264 params[i] = (GLint) (converted_params[i] * 65536); 265 } 266} 267 268void GL_APIENTRY 269_mesa_GetMaterialxv(GLenum face, GLenum pname, GLfixed *params) 270{ 271 unsigned int i; 272 unsigned int n_params = 4; 273 GLfloat converted_params[4]; 274 275 switch(face) { 276 case GL_FRONT: 277 case GL_BACK: 278 break; 279 default: 280 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 281 "glGetMaterialxv(face=0x%x)", face); 282 return; 283 } 284 switch(pname) { 285 case GL_SHININESS: 286 n_params = 1; 287 break; 288 case GL_AMBIENT: 289 case GL_DIFFUSE: 290 case GL_SPECULAR: 291 case GL_EMISSION: 292 n_params = 4; 293 break; 294 default: 295 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 296 "glGetMaterialxv(pname=0x%x)", pname); 297 return; 298 } 299 300 _mesa_GetMaterialfv(face, pname, converted_params); 301 for (i = 0; i < n_params; i++) { 302 params[i] = (GLint) (converted_params[i] * 65536); 303 } 304} 305 306void GL_APIENTRY 307_mesa_GetTexEnvxv(GLenum target, GLenum pname, GLfixed *params) 308{ 309 unsigned int i; 310 unsigned int n_params = 4; 311 GLfloat converted_params[4]; 312 bool convert_params_value = true; 313 314 switch(target) { 315 case GL_POINT_SPRITE: 316 if (pname != GL_COORD_REPLACE) { 317 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 318 "glGetTexEnvxv(target=0x%x)", target); 319 return; 320 } 321 break; 322 case GL_TEXTURE_FILTER_CONTROL_EXT: 323 if (pname != GL_TEXTURE_LOD_BIAS_EXT) { 324 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 325 "glGetTexEnvxv(target=0x%x)", target); 326 return; 327 } 328 break; 329 case GL_TEXTURE_ENV: 330 if (pname != GL_TEXTURE_ENV_COLOR && 331 pname != GL_RGB_SCALE && 332 pname != GL_ALPHA_SCALE && 333 pname != GL_TEXTURE_ENV_MODE && 334 pname != GL_COMBINE_RGB && 335 pname != GL_COMBINE_ALPHA && 336 pname != GL_SRC0_RGB && 337 pname != GL_SRC1_RGB && 338 pname != GL_SRC2_RGB && 339 pname != GL_SRC0_ALPHA && 340 pname != GL_SRC1_ALPHA && 341 pname != GL_SRC2_ALPHA && 342 pname != GL_OPERAND0_RGB && 343 pname != GL_OPERAND1_RGB && 344 pname != GL_OPERAND2_RGB && 345 pname != GL_OPERAND0_ALPHA && 346 pname != GL_OPERAND1_ALPHA && 347 pname != GL_OPERAND2_ALPHA) { 348 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 349 "glGetTexEnvxv(target=0x%x)", target); 350 return; 351 } 352 break; 353 default: 354 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 355 "glGetTexEnvxv(target=0x%x)", target); 356 return; 357 } 358 switch(pname) { 359 case GL_COORD_REPLACE: 360 convert_params_value = false; 361 n_params = 1; 362 break; 363 case GL_TEXTURE_LOD_BIAS_EXT: 364 n_params = 1; 365 break; 366 case GL_TEXTURE_ENV_COLOR: 367 n_params = 4; 368 break; 369 case GL_RGB_SCALE: 370 case GL_ALPHA_SCALE: 371 n_params = 1; 372 break; 373 case GL_TEXTURE_ENV_MODE: 374 case GL_COMBINE_RGB: 375 case GL_COMBINE_ALPHA: 376 case GL_SRC0_RGB: 377 case GL_SRC1_RGB: 378 case GL_SRC2_RGB: 379 case GL_SRC0_ALPHA: 380 case GL_SRC1_ALPHA: 381 case GL_SRC2_ALPHA: 382 case GL_OPERAND0_RGB: 383 case GL_OPERAND1_RGB: 384 case GL_OPERAND2_RGB: 385 case GL_OPERAND0_ALPHA: 386 case GL_OPERAND1_ALPHA: 387 case GL_OPERAND2_ALPHA: 388 convert_params_value = false; 389 n_params = 1; 390 break; 391 default: 392 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 393 "glGetTexEnvxv(pname=0x%x)", pname); 394 return; 395 } 396 397 _mesa_GetTexEnvfv(target, pname, converted_params); 398 if (convert_params_value) { 399 for (i = 0; i < n_params; i++) { 400 params[i] = (GLint) (converted_params[i] * 65536); 401 } 402 } else { 403 for (i = 0; i < n_params; i++) { 404 params[i] = (GLfixed) converted_params[i]; 405 } 406 } 407} 408 409void GL_APIENTRY 410_check_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params) 411{ 412 _mesa_GetTexGeniv(coord, pname, params); 413} 414 415void GL_APIENTRY 416_mesa_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) 417{ 418 _mesa_GetTexGeniv(coord, pname, (GLint *) params); 419} 420 421void GL_APIENTRY 422_mesa_GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) 423{ 424 unsigned int i; 425 unsigned int n_params = 4; 426 GLfloat converted_params[4]; 427 bool convert_params_value = true; 428 429 switch(target) { 430 case GL_TEXTURE_2D: 431 case GL_TEXTURE_CUBE_MAP: 432 case GL_TEXTURE_EXTERNAL_OES: 433 break; 434 default: 435 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 436 "glGetTexParameterxv(target=0x%x)", target); 437 return; 438 } 439 switch(pname) { 440 case GL_TEXTURE_WRAP_S: 441 case GL_TEXTURE_WRAP_T: 442 case GL_TEXTURE_MIN_FILTER: 443 case GL_TEXTURE_MAG_FILTER: 444 case GL_GENERATE_MIPMAP: 445 convert_params_value = false; 446 n_params = 1; 447 break; 448 case GL_TEXTURE_CROP_RECT_OES: 449 n_params = 4; 450 break; 451 default: 452 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 453 "glGetTexParameterxv(pname=0x%x)", pname); 454 return; 455 } 456 457 _mesa_GetTexParameterfv(target, pname, converted_params); 458 if (convert_params_value) { 459 for (i = 0; i < n_params; i++) { 460 params[i] = (GLint) (converted_params[i] * 65536); 461 } 462 } else { 463 for (i = 0; i < n_params; i++) { 464 params[i] = (GLfixed) converted_params[i]; 465 } 466 } 467} 468 469void GL_APIENTRY 470_mesa_LightModelx(GLenum pname, GLfixed param) 471{ 472 _mesa_LightModelf(pname, (GLfloat) param); 473} 474 475void GL_APIENTRY 476_mesa_LightModelxv(GLenum pname, const GLfixed *params) 477{ 478 unsigned int i; 479 unsigned int n_params = 4; 480 GLfloat converted_params[4]; 481 bool convert_params_value = true; 482 483 switch(pname) { 484 case GL_LIGHT_MODEL_AMBIENT: 485 n_params = 4; 486 break; 487 case GL_LIGHT_MODEL_TWO_SIDE: 488 convert_params_value = false; 489 n_params = 1; 490 break; 491 default: 492 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 493 "glLightModelxv(pname=0x%x)", pname); 494 return; 495 } 496 497 if (convert_params_value) { 498 for (i = 0; i < n_params; i++) { 499 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 500 } 501 } else { 502 for (i = 0; i < n_params; i++) { 503 converted_params[i] = (GLfloat) params[i]; 504 } 505 } 506 507 _mesa_LightModelfv(pname, converted_params); 508} 509 510void GL_APIENTRY 511_mesa_Lightx(GLenum light, GLenum pname, GLfixed param) 512{ 513 _mesa_Lightf(light, pname, (GLfloat) (param / 65536.0f)); 514} 515 516void GL_APIENTRY 517_mesa_Lightxv(GLenum light, GLenum pname, const GLfixed *params) 518{ 519 unsigned int i; 520 unsigned int n_params = 4; 521 GLfloat converted_params[4]; 522 523 if (light < GL_LIGHT0 || light > GL_LIGHT7) { 524 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 525 "glLightxv(light=0x%x)", light); 526 return; 527 } 528 switch(pname) { 529 case GL_AMBIENT: 530 case GL_DIFFUSE: 531 case GL_SPECULAR: 532 case GL_POSITION: 533 n_params = 4; 534 break; 535 case GL_SPOT_DIRECTION: 536 n_params = 3; 537 break; 538 case GL_SPOT_EXPONENT: 539 case GL_SPOT_CUTOFF: 540 case GL_CONSTANT_ATTENUATION: 541 case GL_LINEAR_ATTENUATION: 542 case GL_QUADRATIC_ATTENUATION: 543 n_params = 1; 544 break; 545 default: 546 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 547 "glLightxv(pname=0x%x)", pname); 548 return; 549 } 550 551 for (i = 0; i < n_params; i++) { 552 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 553 } 554 555 _mesa_Lightfv(light, pname, converted_params); 556} 557 558void GL_APIENTRY 559_mesa_LineWidthx(GLfixed width) 560{ 561 _mesa_LineWidth((GLfloat) (width / 65536.0f)); 562} 563 564void GL_APIENTRY 565_mesa_LoadMatrixx(const GLfixed *m) 566{ 567 unsigned int i; 568 GLfloat converted_m[16]; 569 570 for (i = 0; i < ARRAY_SIZE(converted_m); i++) { 571 converted_m[i] = (GLfloat) (m[i] / 65536.0f); 572 } 573 574 _mesa_LoadMatrixf(converted_m); 575} 576 577void GL_APIENTRY 578_mesa_Materialx(GLenum face, GLenum pname, GLfixed param) 579{ 580 if (face != GL_FRONT_AND_BACK) { 581 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 582 "glMaterialx(face=0x%x)", face); 583 return; 584 } 585 586 if (pname != GL_SHININESS) { 587 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 588 "glMaterialx(pname=0x%x)", pname); 589 return; 590 } 591 592 _es_Materialf(face, pname, (GLfloat) (param / 65536.0f)); 593} 594 595void GL_APIENTRY 596_mesa_Materialxv(GLenum face, GLenum pname, const GLfixed *params) 597{ 598 unsigned int i; 599 unsigned int n_params = 4; 600 GLfloat converted_params[4]; 601 602 if (face != GL_FRONT_AND_BACK) { 603 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 604 "glMaterialxv(face=0x%x)", face); 605 return; 606 } 607 608 switch(pname) { 609 case GL_AMBIENT: 610 case GL_DIFFUSE: 611 case GL_AMBIENT_AND_DIFFUSE: 612 case GL_SPECULAR: 613 case GL_EMISSION: 614 n_params = 4; 615 break; 616 case GL_SHININESS: 617 n_params = 1; 618 break; 619 default: 620 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 621 "glMaterialxv(pname=0x%x)", pname); 622 return; 623 } 624 625 for (i = 0; i < n_params; i++) { 626 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 627 } 628 629 _es_Materialfv(face, pname, converted_params); 630} 631 632void GL_APIENTRY 633_mesa_MultMatrixx(const GLfixed *m) 634{ 635 unsigned int i; 636 GLfloat converted_m[16]; 637 638 for (i = 0; i < ARRAY_SIZE(converted_m); i++) { 639 converted_m[i] = (GLfloat) (m[i] / 65536.0f); 640 } 641 642 _mesa_MultMatrixf(converted_m); 643} 644 645void GL_APIENTRY 646_mesa_MultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) 647{ 648 _es_MultiTexCoord4f(texture, 649 (GLfloat) (s / 65536.0f), 650 (GLfloat) (t / 65536.0f), 651 (GLfloat) (r / 65536.0f), 652 (GLfloat) (q / 65536.0f)); 653} 654 655void GL_APIENTRY 656_mesa_Normal3x(GLfixed nx, GLfixed ny, GLfixed nz) 657{ 658 _es_Normal3f((GLfloat) (nx / 65536.0f), 659 (GLfloat) (ny / 65536.0f), 660 (GLfloat) (nz / 65536.0f)); 661} 662 663void GL_APIENTRY 664_mesa_Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, 665 GLfloat zNear, GLfloat zFar) 666{ 667 _mesa_Ortho((GLdouble) (left), 668 (GLdouble) (right), 669 (GLdouble) (bottom), 670 (GLdouble) (top), 671 (GLdouble) (zNear), 672 (GLdouble) (zFar)); 673} 674 675void GL_APIENTRY 676_mesa_Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, 677 GLfixed zNear, GLfixed zFar) 678{ 679 _mesa_Ortho((GLdouble) (left / 65536.0), 680 (GLdouble) (right / 65536.0), 681 (GLdouble) (bottom / 65536.0), 682 (GLdouble) (top / 65536.0), 683 (GLdouble) (zNear / 65536.0), 684 (GLdouble) (zFar / 65536.0)); 685} 686 687void GL_APIENTRY 688_mesa_PointParameterx(GLenum pname, GLfixed param) 689{ 690 _mesa_PointParameterf(pname, (GLfloat) (param / 65536.0f)); 691} 692 693void GL_APIENTRY 694_mesa_PointParameterxv(GLenum pname, const GLfixed *params) 695{ 696 unsigned int i; 697 unsigned int n_params = 3; 698 GLfloat converted_params[3]; 699 700 switch(pname) { 701 case GL_POINT_SIZE_MIN: 702 case GL_POINT_SIZE_MAX: 703 case GL_POINT_FADE_THRESHOLD_SIZE: 704 n_params = 1; 705 break; 706 case GL_POINT_DISTANCE_ATTENUATION: 707 n_params = 3; 708 break; 709 default: 710 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 711 "glPointParameterxv(pname=0x%x)", pname); 712 return; 713 } 714 715 for (i = 0; i < n_params; i++) { 716 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 717 } 718 719 _mesa_PointParameterfv(pname, converted_params); 720} 721 722void GL_APIENTRY 723_mesa_PointSizex(GLfixed size) 724{ 725 _mesa_PointSize((GLfloat) (size / 65536.0f)); 726} 727 728void GL_APIENTRY 729_mesa_PolygonOffsetx(GLfixed factor, GLfixed units) 730{ 731 _mesa_PolygonOffset((GLfloat) (factor / 65536.0f), 732 (GLfloat) (units / 65536.0f)); 733} 734 735void GL_APIENTRY 736_mesa_Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) 737{ 738 _mesa_Rotatef((GLfloat) (angle / 65536.0f), 739 (GLfloat) (x / 65536.0f), 740 (GLfloat) (y / 65536.0f), 741 (GLfloat) (z / 65536.0f)); 742} 743 744void GL_APIENTRY 745_mesa_SampleCoveragex(GLclampx value, GLboolean invert) 746{ 747 _mesa_SampleCoverage((GLclampf) (value / 65536.0f), 748 invert); 749} 750 751void GL_APIENTRY 752_mesa_Scalex(GLfixed x, GLfixed y, GLfixed z) 753{ 754 _mesa_Scalef((GLfloat) (x / 65536.0f), 755 (GLfloat) (y / 65536.0f), 756 (GLfloat) (z / 65536.0f)); 757} 758 759void GL_APIENTRY 760_mesa_TexEnvx(GLenum target, GLenum pname, GLfixed param) 761{ 762 switch(target) { 763 case GL_POINT_SPRITE: 764 case GL_TEXTURE_FILTER_CONTROL_EXT: 765 case GL_TEXTURE_ENV: 766 break; 767 default: 768 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 769 "glTexEnvx(target=0x%x)", target); 770 return; 771 } 772 773 switch(pname) { 774 case GL_COORD_REPLACE: 775 case GL_TEXTURE_ENV_MODE: 776 case GL_COMBINE_RGB: 777 case GL_COMBINE_ALPHA: 778 case GL_SRC0_RGB: 779 case GL_SRC1_RGB: 780 case GL_SRC2_RGB: 781 case GL_SRC0_ALPHA: 782 case GL_SRC1_ALPHA: 783 case GL_SRC2_ALPHA: 784 case GL_OPERAND0_RGB: 785 case GL_OPERAND1_RGB: 786 case GL_OPERAND2_RGB: 787 case GL_OPERAND0_ALPHA: 788 case GL_OPERAND1_ALPHA: 789 case GL_OPERAND2_ALPHA: 790 _mesa_TexEnvf(target, pname, (GLfloat) param); 791 break; 792 case GL_TEXTURE_LOD_BIAS_EXT: 793 case GL_RGB_SCALE: 794 case GL_ALPHA_SCALE: 795 _mesa_TexEnvf(target, pname, (GLfloat) (param / 65536.0f)); 796 break; 797 default: 798 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 799 "glTexEnvx(pname=0x%x)", pname); 800 return; 801 } 802} 803 804void GL_APIENTRY 805_mesa_TexEnvxv(GLenum target, GLenum pname, const GLfixed *params) 806{ 807 switch(target) { 808 case GL_POINT_SPRITE: 809 case GL_TEXTURE_FILTER_CONTROL_EXT: 810 case GL_TEXTURE_ENV: 811 break; 812 default: 813 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 814 "glTexEnvxv(target=0x%x)", target); 815 return; 816 } 817 818 switch(pname) { 819 case GL_COORD_REPLACE: 820 case GL_TEXTURE_ENV_MODE: 821 case GL_COMBINE_RGB: 822 case GL_COMBINE_ALPHA: 823 case GL_SRC0_RGB: 824 case GL_SRC1_RGB: 825 case GL_SRC2_RGB: 826 case GL_SRC0_ALPHA: 827 case GL_SRC1_ALPHA: 828 case GL_SRC2_ALPHA: 829 case GL_OPERAND0_RGB: 830 case GL_OPERAND1_RGB: 831 case GL_OPERAND2_RGB: 832 case GL_OPERAND0_ALPHA: 833 case GL_OPERAND1_ALPHA: 834 case GL_OPERAND2_ALPHA: 835 _mesa_TexEnvf(target, pname, (GLfloat) params[0]); 836 break; 837 case GL_TEXTURE_LOD_BIAS_EXT: 838 case GL_RGB_SCALE: 839 case GL_ALPHA_SCALE: 840 _mesa_TexEnvf(target, pname, (GLfloat) (params[0] / 65536.0f)); 841 break; 842 case GL_TEXTURE_ENV_COLOR: { 843 unsigned int i; 844 GLfloat converted_params[4]; 845 846 for (i = 0; i < ARRAY_SIZE(converted_params); i++) { 847 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 848 } 849 850 _mesa_TexEnvfv(target, pname, converted_params); 851 break; 852 } 853 default: 854 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 855 "glTexEnvxv(pname=0x%x)", pname); 856 return; 857 } 858} 859 860void GL_APIENTRY 861_check_TexGeniOES(GLenum coord, GLenum pname, GLint param) 862{ 863 _es_TexGenf(coord, pname, (GLfloat) param); 864} 865 866void GL_APIENTRY 867_check_TexGenivOES(GLenum coord, GLenum pname, const GLint *params) 868{ 869 _es_TexGenf(coord, pname, (GLfloat) params[0]); 870} 871 872void GL_APIENTRY 873_mesa_TexGenxOES(GLenum coord, GLenum pname, GLfixed param) 874{ 875 _es_TexGenf(coord, pname, (GLfloat) param); 876} 877 878void GL_APIENTRY 879_mesa_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) 880{ 881 _es_TexGenf(coord, pname, (GLfloat) params[0]); 882} 883 884void GL_APIENTRY 885_mesa_TexParameterx(GLenum target, GLenum pname, GLfixed param) 886{ 887 if (pname == GL_TEXTURE_MAX_ANISOTROPY_EXT) { 888 _mesa_TexParameterf(target, pname, (GLfloat) (param / 65536.0f)); 889 } else { 890 _mesa_TexParameterf(target, pname, (GLfloat) param); 891 } 892} 893 894void GL_APIENTRY 895_mesa_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params) 896{ 897 unsigned int i; 898 unsigned int n_params = 4; 899 GLfloat converted_params[4]; 900 bool convert_params_value = true; 901 902 switch(target) { 903 case GL_TEXTURE_2D: 904 case GL_TEXTURE_CUBE_MAP: 905 case GL_TEXTURE_EXTERNAL_OES: 906 break; 907 default: 908 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 909 "glTexParameterxv(target=0x%x)", target); 910 return; 911 } 912 switch(pname) { 913 case GL_TEXTURE_WRAP_S: 914 case GL_TEXTURE_WRAP_T: 915 convert_params_value = false; 916 n_params = 1; 917 break; 918 case GL_TEXTURE_MIN_FILTER: 919 case GL_TEXTURE_MAG_FILTER: 920 case GL_GENERATE_MIPMAP: 921 convert_params_value = false; 922 n_params = 1; 923 break; 924 case GL_TEXTURE_MAX_ANISOTROPY_EXT: 925 n_params = 1; 926 break; 927 case GL_TEXTURE_CROP_RECT_OES: 928 n_params = 4; 929 break; 930 default: 931 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 932 "glTexParameterxv(pname=0x%x)", pname); 933 return; 934 } 935 936 if (convert_params_value) { 937 for (i = 0; i < n_params; i++) { 938 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 939 } 940 } else { 941 for (i = 0; i < n_params; i++) { 942 converted_params[i] = (GLfloat) params[i]; 943 } 944 } 945 946 _mesa_TexParameterfv(target, pname, converted_params); 947} 948 949void GL_APIENTRY 950_mesa_Translatex(GLfixed x, GLfixed y, GLfixed z) 951{ 952 _mesa_Translatef((GLfloat) (x / 65536.0f), 953 (GLfloat) (y / 65536.0f), 954 (GLfloat) (z / 65536.0f)); 955} 956