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