es1_conversion.c revision bf03589882ee4b36a9c3fb618a1d5f6b567163db
1#include <stdbool.h> 2#include "main/mfeatures.h" 3 4#if FEATURE_ES1 5 6#include "api_loopback.h" 7#include "api_exec.h" 8#include "blend.h" 9#include "clear.h" 10#include "clip.h" 11#include "context.h" 12#include "depth.h" 13#include "fog.h" 14#include "imports.h" 15#include "light.h" 16#include "lines.h" 17#include "matrix.h" 18#include "multisample.h" 19#include "pixelstore.h" 20#include "points.h" 21#include "polygon.h" 22#include "readpix.h" 23#include "texenv.h" 24#include "texgen.h" 25#include "texobj.h" 26#include "texparam.h" 27#include "mtypes.h" 28#include "viewport.h" 29#include "main/drawtex.h" 30#include "vbo/vbo.h" 31 32#ifndef GL_APIENTRY 33#define GL_APIENTRY GLAPIENTRY 34#endif 35 36#include "main/es1_conversion.h" 37 38void GL_APIENTRY 39_es_AlphaFuncx(GLenum func, GLclampx ref) 40{ 41 _mesa_AlphaFunc(func, (GLclampf) (ref / 65536.0f)); 42} 43 44void GL_APIENTRY 45_es_ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) 46{ 47 _mesa_ClearColor((GLclampf) (red / 65536.0f), 48 (GLclampf) (green / 65536.0f), 49 (GLclampf) (blue / 65536.0f), 50 (GLclampf) (alpha / 65536.0f)); 51} 52 53void GL_APIENTRY 54_es_ClearDepthx(GLclampx depth) 55{ 56 _mesa_ClearDepthf((GLclampf) (depth / 65536.0f)); 57} 58 59void GL_APIENTRY 60_es_ClipPlanef(GLenum plane, const GLfloat *equation) 61{ 62 unsigned int i; 63 GLdouble converted_equation[4]; 64 65 for (i = 0; i < Elements(converted_equation); i++) { 66 converted_equation[i] = (GLdouble) (equation[i]); 67 } 68 69 _mesa_ClipPlane(plane, converted_equation); 70} 71 72void GL_APIENTRY 73_es_ClipPlanex(GLenum plane, const GLfixed *equation) 74{ 75 unsigned int i; 76 GLdouble converted_equation[4]; 77 78 for (i = 0; i < Elements(converted_equation); i++) { 79 converted_equation[i] = (GLdouble) (equation[i] / 65536.0); 80 } 81 82 _mesa_ClipPlane(plane, converted_equation); 83} 84 85void GL_APIENTRY 86_es_Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) 87{ 88 _es_Color4f((GLfloat) (red / 255.0f), 89 (GLfloat) (green / 255.0f), 90 (GLfloat) (blue / 255.0f), 91 (GLfloat) (alpha / 255.0f)); 92} 93 94void GL_APIENTRY 95_es_Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) 96{ 97 _es_Color4f((GLfloat) (red / 65536.0f), 98 (GLfloat) (green / 65536.0f), 99 (GLfloat) (blue / 65536.0f), 100 (GLfloat) (alpha / 65536.0f)); 101} 102 103void GL_APIENTRY 104_es_DepthRangex(GLclampx zNear, GLclampx zFar) 105{ 106 _mesa_DepthRangef((GLclampf) (zNear / 65536.0f), 107 (GLclampf) (zFar / 65536.0f)); 108} 109 110void GL_APIENTRY 111_es_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h) 112{ 113 114 _mesa_DrawTexf((GLfloat) (x / 65536.0f), 115 (GLfloat) (y / 65536.0f), 116 (GLfloat) (z / 65536.0f), 117 (GLfloat) (w / 65536.0f), 118 (GLfloat) (h / 65536.0f)); 119} 120 121void GL_APIENTRY 122_es_DrawTexxvOES(const GLfixed *coords) 123{ 124 unsigned int i; 125 GLfloat converted_coords[5]; 126 127 for (i = 0; i < Elements(converted_coords); i++) { 128 converted_coords[i] = (GLfloat) (coords[i] / 65536.0f); 129 } 130 131 _mesa_DrawTexfv(converted_coords); 132} 133 134void GL_APIENTRY 135_es_Fogx(GLenum pname, GLfixed param) 136{ 137 bool convert_param_value = true; 138 139 switch(pname) { 140 case GL_FOG_MODE: 141 if (param != GL_EXP && param != GL_EXP2 && param != GL_LINEAR) { 142 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 143 "glFogx(pname=0x%x)", pname); 144 return; 145 } 146 convert_param_value = false; 147 break; 148 case GL_FOG_DENSITY: 149 case GL_FOG_START: 150 case GL_FOG_END: 151 break; 152 default: 153 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 154 "glFogx(pname=0x%x)", pname); 155 return; 156 } 157 158 if (convert_param_value) { 159 _mesa_Fogf(pname, (GLfloat) (param / 65536.0f)); 160 } else { 161 _mesa_Fogf(pname, (GLfloat) param); 162 } 163 164} 165 166void GL_APIENTRY 167_es_Fogxv(GLenum pname, const GLfixed *params) 168{ 169 unsigned int i; 170 unsigned int n_params = 4; 171 GLfloat converted_params[4]; 172 bool convert_params_value = true; 173 174 switch(pname) { 175 case GL_FOG_MODE: 176 if (params[0] != GL_EXP && params[0] != GL_EXP2 && params[0] != GL_LINEAR) { 177 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 178 "glFogxv(pname=0x%x)", pname); 179 return; 180 } 181 convert_params_value = false; 182 n_params = 1; 183 break; 184 case GL_FOG_COLOR: 185 n_params = 4; 186 break; 187 case GL_FOG_DENSITY: 188 case GL_FOG_START: 189 case GL_FOG_END: 190 n_params = 1; 191 break; 192 default: 193 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 194 "glFogxv(pname=0x%x)", pname); 195 return; 196 } 197 198 if (convert_params_value) { 199 for (i = 0; i < n_params; i++) { 200 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 201 } 202 } else { 203 for (i = 0; i < n_params; i++) { 204 converted_params[i] = (GLfloat) params[i]; 205 } 206 } 207 208 _mesa_Fogfv(pname, converted_params); 209} 210 211void GL_APIENTRY 212_es_Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, 213 GLfloat zNear, GLfloat zFar) 214{ 215 _mesa_Frustum((GLdouble) (left), 216 (GLdouble) (right), 217 (GLdouble) (bottom), 218 (GLdouble) (top), 219 (GLdouble) (zNear), 220 (GLdouble) (zFar)); 221} 222 223void GL_APIENTRY 224_es_Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, 225 GLfixed zNear, GLfixed zFar) 226{ 227 _mesa_Frustum((GLdouble) (left / 65536.0), 228 (GLdouble) (right / 65536.0), 229 (GLdouble) (bottom / 65536.0), 230 (GLdouble) (top / 65536.0), 231 (GLdouble) (zNear / 65536.0), 232 (GLdouble) (zFar / 65536.0)); 233} 234 235void GL_APIENTRY 236_es_GetClipPlanef(GLenum plane, GLfloat *equation) 237{ 238 unsigned int i; 239 GLdouble converted_equation[4]; 240 241 _mesa_GetClipPlane(plane, converted_equation); 242 for (i = 0; i < Elements(converted_equation); i++) { 243 equation[i] = (GLfloat) (converted_equation[i]); 244 } 245} 246 247void GL_APIENTRY 248_es_GetClipPlanex(GLenum plane, GLfixed *equation) 249{ 250 unsigned int i; 251 GLdouble converted_equation[4]; 252 253 _mesa_GetClipPlane(plane, converted_equation); 254 for (i = 0; i < Elements(converted_equation); i++) { 255 equation[i] = (GLfixed) (converted_equation[i] * 65536); 256 } 257} 258 259void GL_APIENTRY 260_es_GetLightxv(GLenum light, GLenum pname, GLfixed *params) 261{ 262 unsigned int i; 263 unsigned int n_params = 4; 264 GLfloat converted_params[4]; 265 266 switch(light) { 267 case GL_LIGHT0: 268 case GL_LIGHT1: 269 case GL_LIGHT2: 270 case GL_LIGHT3: 271 case GL_LIGHT4: 272 case GL_LIGHT5: 273 case GL_LIGHT6: 274 case GL_LIGHT7: 275 break; 276 default: 277 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 278 "glGetLightxv(light=0x%x)", light); 279 return; 280 } 281 switch(pname) { 282 case GL_AMBIENT: 283 case GL_DIFFUSE: 284 case GL_SPECULAR: 285 case GL_POSITION: 286 n_params = 4; 287 break; 288 case GL_SPOT_DIRECTION: 289 n_params = 3; 290 break; 291 case GL_SPOT_EXPONENT: 292 case GL_SPOT_CUTOFF: 293 case GL_CONSTANT_ATTENUATION: 294 case GL_LINEAR_ATTENUATION: 295 case GL_QUADRATIC_ATTENUATION: 296 n_params = 1; 297 break; 298 default: 299 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 300 "glGetLightxv(pname=0x%x)", pname); 301 return; 302 } 303 304 _mesa_GetLightfv(light, pname, converted_params); 305 for (i = 0; i < n_params; i++) { 306 params[i] = (GLint) (converted_params[i] * 65536); 307 } 308} 309 310void GL_APIENTRY 311_es_GetMaterialxv(GLenum face, GLenum pname, GLfixed *params) 312{ 313 unsigned int i; 314 unsigned int n_params = 4; 315 GLfloat converted_params[4]; 316 317 switch(face) { 318 case GL_FRONT: 319 case GL_BACK: 320 break; 321 default: 322 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 323 "glGetMaterialxv(face=0x%x)", face); 324 return; 325 } 326 switch(pname) { 327 case GL_SHININESS: 328 n_params = 1; 329 break; 330 case GL_AMBIENT: 331 case GL_DIFFUSE: 332 case GL_AMBIENT_AND_DIFFUSE: 333 case GL_SPECULAR: 334 case GL_EMISSION: 335 n_params = 4; 336 break; 337 default: 338 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 339 "glGetMaterialxv(pname=0x%x)", pname); 340 return; 341 } 342 343 _mesa_GetMaterialfv(face, pname, converted_params); 344 for (i = 0; i < n_params; i++) { 345 params[i] = (GLint) (converted_params[i] * 65536); 346 } 347} 348 349void GL_APIENTRY 350_es_GetTexEnvxv(GLenum target, GLenum pname, GLfixed *params) 351{ 352 unsigned int i; 353 unsigned int n_params = 4; 354 GLfloat converted_params[4]; 355 bool convert_params_value = true; 356 357 switch(target) { 358 case GL_POINT_SPRITE: 359 if (pname != GL_COORD_REPLACE) { 360 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 361 "glGetTexEnvxv(target=0x%x)", target); 362 return; 363 } 364 break; 365 case GL_TEXTURE_FILTER_CONTROL_EXT: 366 if (pname != GL_TEXTURE_LOD_BIAS_EXT) { 367 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 368 "glGetTexEnvxv(target=0x%x)", target); 369 return; 370 } 371 break; 372 case GL_TEXTURE_ENV: 373 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) { 374 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 375 "glGetTexEnvxv(target=0x%x)", target); 376 return; 377 } 378 break; 379 default: 380 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 381 "glGetTexEnvxv(target=0x%x)", target); 382 return; 383 } 384 switch(pname) { 385 case GL_COORD_REPLACE: 386 convert_params_value = false; 387 n_params = 1; 388 break; 389 case GL_TEXTURE_LOD_BIAS_EXT: 390 n_params = 1; 391 break; 392 case GL_TEXTURE_ENV_COLOR: 393 n_params = 4; 394 break; 395 case GL_RGB_SCALE: 396 case GL_ALPHA_SCALE: 397 n_params = 1; 398 break; 399 case GL_TEXTURE_ENV_MODE: 400 case GL_COMBINE_RGB: 401 case GL_COMBINE_ALPHA: 402 case GL_SRC0_RGB: 403 case GL_SRC1_RGB: 404 case GL_SRC2_RGB: 405 case GL_SRC0_ALPHA: 406 case GL_SRC1_ALPHA: 407 case GL_SRC2_ALPHA: 408 case GL_OPERAND0_RGB: 409 case GL_OPERAND1_RGB: 410 case GL_OPERAND2_RGB: 411 case GL_OPERAND0_ALPHA: 412 case GL_OPERAND1_ALPHA: 413 case GL_OPERAND2_ALPHA: 414 convert_params_value = false; 415 n_params = 1; 416 break; 417 default: 418 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 419 "glGetTexEnvxv(pname=0x%x)", pname); 420 return; 421 } 422 423 _mesa_GetTexEnvfv(target, pname, converted_params); 424 if (convert_params_value) { 425 for (i = 0; i < n_params; i++) { 426 params[i] = (GLint) (converted_params[i] * 65536); 427 } 428 } else { 429 for (i = 0; i < n_params; i++) { 430 params[i] = (GLfixed) converted_params[i]; 431 } 432 } 433} 434 435void GL_APIENTRY 436_check_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params) 437{ 438 unsigned int i; 439 unsigned int n_params = 1; 440 GLfloat converted_params[1]; 441 442 switch(coord) { 443 case GL_TEXTURE_GEN_STR_OES: 444 break; 445 default: 446 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 447 "glGetTexGenivOES(coord=0x%x)", coord); 448 return; 449 } 450 switch(pname) { 451 case GL_TEXTURE_GEN_MODE: 452 n_params = 1; 453 break; 454 default: 455 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 456 "glGetTexGenivOES(pname=0x%x)", pname); 457 return; 458 } 459 460 _es_GetTexGenfv(coord, pname, converted_params); 461 for (i = 0; i < n_params; i++) { 462 params[i] = (GLfloat) converted_params[i]; 463 } 464} 465 466void GL_APIENTRY 467_check_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) 468{ 469 unsigned int i; 470 unsigned int n_params = 1; 471 GLfloat converted_params[1]; 472 473 switch(coord) { 474 case GL_TEXTURE_GEN_STR_OES: 475 break; 476 default: 477 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 478 "glGetTexGenxvOES(coord=0x%x)", coord); 479 return; 480 } 481 switch(pname) { 482 case GL_TEXTURE_GEN_MODE: 483 n_params = 1; 484 break; 485 default: 486 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 487 "glGetTexGenxvOES(pname=0x%x)", pname); 488 return; 489 } 490 491 _es_GetTexGenfv(coord, pname, converted_params); 492 for (i = 0; i < n_params; i++) { 493 params[i] = (GLfloat) converted_params[i]; 494 } 495} 496 497void GL_APIENTRY 498_es_GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) 499{ 500 unsigned int i; 501 unsigned int n_params = 4; 502 GLfloat converted_params[4]; 503 bool convert_params_value = true; 504 505 switch(target) { 506 case GL_TEXTURE_2D: 507 case GL_TEXTURE_CUBE_MAP: 508 case GL_TEXTURE_EXTERNAL_OES: 509 break; 510 default: 511 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 512 "glGetTexParameterxv(target=0x%x)", target); 513 return; 514 } 515 switch(pname) { 516 case GL_TEXTURE_WRAP_S: 517 case GL_TEXTURE_WRAP_T: 518 case GL_TEXTURE_MIN_FILTER: 519 case GL_TEXTURE_MAG_FILTER: 520 case GL_GENERATE_MIPMAP: 521 convert_params_value = false; 522 n_params = 1; 523 break; 524 case GL_TEXTURE_CROP_RECT_OES: 525 n_params = 4; 526 break; 527 default: 528 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 529 "glGetTexParameterxv(pname=0x%x)", pname); 530 return; 531 } 532 533 _mesa_GetTexParameterfv(target, pname, converted_params); 534 if (convert_params_value) { 535 for (i = 0; i < n_params; i++) { 536 params[i] = (GLint) (converted_params[i] * 65536); 537 } 538 } else { 539 for (i = 0; i < n_params; i++) { 540 params[i] = (GLfixed) converted_params[i]; 541 } 542 } 543} 544 545void GL_APIENTRY 546_es_LightModelx(GLenum pname, GLfixed param) 547{ 548 switch(pname) { 549 case GL_LIGHT_MODEL_TWO_SIDE: 550 if (param != GL_TRUE && param != GL_FALSE) { 551 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 552 "glLightModelx(pname=0x%x)", pname); 553 return; 554 } 555 break; 556 default: 557 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 558 "glLightModelx(pname=0x%x)", pname); 559 return; 560 } 561 562 _mesa_LightModelf(pname, (GLfloat) param); 563} 564 565void GL_APIENTRY 566_es_LightModelxv(GLenum pname, const GLfixed *params) 567{ 568 unsigned int i; 569 unsigned int n_params = 4; 570 GLfloat converted_params[4]; 571 bool convert_params_value = true; 572 573 switch(pname) { 574 case GL_LIGHT_MODEL_AMBIENT: 575 n_params = 4; 576 break; 577 case GL_LIGHT_MODEL_TWO_SIDE: 578 if (params[0] != GL_TRUE && params[0] != GL_FALSE) { 579 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 580 "glLightModelxv(pname=0x%x)", pname); 581 return; 582 } 583 convert_params_value = false; 584 n_params = 1; 585 break; 586 default: 587 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 588 "glLightModelxv(pname=0x%x)", pname); 589 return; 590 } 591 592 if (convert_params_value) { 593 for (i = 0; i < n_params; i++) { 594 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 595 } 596 } else { 597 for (i = 0; i < n_params; i++) { 598 converted_params[i] = (GLfloat) params[i]; 599 } 600 } 601 602 _mesa_LightModelfv(pname, converted_params); 603} 604 605void GL_APIENTRY 606_es_Lightx(GLenum light, GLenum pname, GLfixed param) 607{ 608 switch(light) { 609 case GL_LIGHT0: 610 case GL_LIGHT1: 611 case GL_LIGHT2: 612 case GL_LIGHT3: 613 case GL_LIGHT4: 614 case GL_LIGHT5: 615 case GL_LIGHT6: 616 case GL_LIGHT7: 617 break; 618 default: 619 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 620 "glLightx(light=0x%x)", light); 621 return; 622 } 623 switch(pname) { 624 case GL_SPOT_EXPONENT: 625 case GL_SPOT_CUTOFF: 626 case GL_CONSTANT_ATTENUATION: 627 case GL_LINEAR_ATTENUATION: 628 case GL_QUADRATIC_ATTENUATION: 629 break; 630 default: 631 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 632 "glLightx(pname=0x%x)", pname); 633 return; 634 } 635 636 _mesa_Lightf(light, pname, (GLfloat) (param / 65536.0f)); 637} 638 639void GL_APIENTRY 640_es_Lightxv(GLenum light, GLenum pname, const GLfixed *params) 641{ 642 unsigned int i; 643 unsigned int n_params = 4; 644 GLfloat converted_params[4]; 645 646 switch(light) { 647 case GL_LIGHT0: 648 case GL_LIGHT1: 649 case GL_LIGHT2: 650 case GL_LIGHT3: 651 case GL_LIGHT4: 652 case GL_LIGHT5: 653 case GL_LIGHT6: 654 case GL_LIGHT7: 655 break; 656 default: 657 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 658 "glLightxv(light=0x%x)", light); 659 return; 660 } 661 switch(pname) { 662 case GL_AMBIENT: 663 case GL_DIFFUSE: 664 case GL_SPECULAR: 665 case GL_POSITION: 666 n_params = 4; 667 break; 668 case GL_SPOT_DIRECTION: 669 n_params = 3; 670 break; 671 case GL_SPOT_EXPONENT: 672 case GL_SPOT_CUTOFF: 673 case GL_CONSTANT_ATTENUATION: 674 case GL_LINEAR_ATTENUATION: 675 case GL_QUADRATIC_ATTENUATION: 676 n_params = 1; 677 break; 678 default: 679 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 680 "glLightxv(pname=0x%x)", pname); 681 return; 682 } 683 684 for (i = 0; i < n_params; i++) { 685 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 686 } 687 688 _mesa_Lightfv(light, pname, converted_params); 689} 690 691void GL_APIENTRY 692_es_LineWidthx(GLfixed width) 693{ 694 _mesa_LineWidth((GLfloat) (width / 65536.0f)); 695} 696 697void GL_APIENTRY 698_es_LoadMatrixx(const GLfixed *m) 699{ 700 unsigned int i; 701 GLfloat converted_m[16]; 702 703 for (i = 0; i < Elements(converted_m); i++) { 704 converted_m[i] = (GLfloat) (m[i] / 65536.0f); 705 } 706 707 _mesa_LoadMatrixf(converted_m); 708} 709 710void GL_APIENTRY 711_es_Materialx(GLenum face, GLenum pname, GLfixed param) 712{ 713 switch(face) { 714 case GL_FRONT_AND_BACK: 715 break; 716 default: 717 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 718 "glMaterialx(face=0x%x)", face); 719 return; 720 } 721 switch(pname) { 722 case GL_SHININESS: 723 break; 724 default: 725 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 726 "glMaterialx(pname=0x%x)", pname); 727 return; 728 } 729 730 _es_Materialf(face, pname, (GLfloat) (param / 65536.0f)); 731} 732 733void GL_APIENTRY 734_es_Materialxv(GLenum face, GLenum pname, const GLfixed *params) 735{ 736 unsigned int i; 737 unsigned int n_params = 4; 738 GLfloat converted_params[4]; 739 740 switch(face) { 741 case GL_FRONT_AND_BACK: 742 break; 743 default: 744 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 745 "glMaterialxv(face=0x%x)", face); 746 return; 747 } 748 switch(pname) { 749 case GL_AMBIENT: 750 case GL_DIFFUSE: 751 case GL_AMBIENT_AND_DIFFUSE: 752 case GL_SPECULAR: 753 case GL_EMISSION: 754 n_params = 4; 755 break; 756 case GL_SHININESS: 757 n_params = 1; 758 break; 759 default: 760 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 761 "glMaterialxv(pname=0x%x)", pname); 762 return; 763 } 764 765 for (i = 0; i < n_params; i++) { 766 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 767 } 768 769 _es_Materialfv(face, pname, converted_params); 770} 771 772void GL_APIENTRY 773_es_MultMatrixx(const GLfixed *m) 774{ 775 unsigned int i; 776 GLfloat converted_m[16]; 777 778 for (i = 0; i < Elements(converted_m); i++) { 779 converted_m[i] = (GLfloat) (m[i] / 65536.0f); 780 } 781 782 _mesa_MultMatrixf(converted_m); 783} 784 785void GL_APIENTRY 786_es_MultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) 787{ 788 _es_MultiTexCoord4f(texture, 789 (GLfloat) (s / 65536.0f), 790 (GLfloat) (t / 65536.0f), 791 (GLfloat) (r / 65536.0f), 792 (GLfloat) (q / 65536.0f)); 793} 794 795void GL_APIENTRY 796_es_Normal3x(GLfixed nx, GLfixed ny, GLfixed nz) 797{ 798 _es_Normal3f((GLfloat) (nx / 65536.0f), 799 (GLfloat) (ny / 65536.0f), 800 (GLfloat) (nz / 65536.0f)); 801} 802 803void GL_APIENTRY 804_es_Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, 805 GLfloat zNear, GLfloat zFar) 806{ 807 _mesa_Ortho((GLdouble) (left), 808 (GLdouble) (right), 809 (GLdouble) (bottom), 810 (GLdouble) (top), 811 (GLdouble) (zNear), 812 (GLdouble) (zFar)); 813} 814 815void GL_APIENTRY 816_es_Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, 817 GLfixed zNear, GLfixed zFar) 818{ 819 _mesa_Ortho((GLdouble) (left / 65536.0), 820 (GLdouble) (right / 65536.0), 821 (GLdouble) (bottom / 65536.0), 822 (GLdouble) (top / 65536.0), 823 (GLdouble) (zNear / 65536.0), 824 (GLdouble) (zFar / 65536.0)); 825} 826 827void GL_APIENTRY 828_es_PointParameterx(GLenum pname, GLfixed param) 829{ 830 switch(pname) { 831 case GL_POINT_SIZE_MIN: 832 case GL_POINT_SIZE_MAX: 833 case GL_POINT_FADE_THRESHOLD_SIZE: 834 break; 835 default: 836 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 837 "glPointParameterx(pname=0x%x)", pname); 838 return; 839 } 840 841 _mesa_PointParameterf(pname, (GLfloat) (param / 65536.0f)); 842} 843 844void GL_APIENTRY 845_es_PointParameterxv(GLenum pname, const GLfixed *params) 846{ 847 unsigned int i; 848 unsigned int n_params = 3; 849 GLfloat converted_params[3]; 850 851 switch(pname) { 852 case GL_POINT_SIZE_MIN: 853 case GL_POINT_SIZE_MAX: 854 case GL_POINT_FADE_THRESHOLD_SIZE: 855 n_params = 1; 856 break; 857 case GL_POINT_DISTANCE_ATTENUATION: 858 n_params = 3; 859 break; 860 default: 861 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 862 "glPointParameterxv(pname=0x%x)", pname); 863 return; 864 } 865 866 for (i = 0; i < n_params; i++) { 867 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 868 } 869 870 _mesa_PointParameterfv(pname, converted_params); 871} 872 873void GL_APIENTRY 874_es_PointSizex(GLfixed size) 875{ 876 _mesa_PointSize((GLfloat) (size / 65536.0f)); 877} 878 879void GL_APIENTRY 880_es_PolygonOffsetx(GLfixed factor, GLfixed units) 881{ 882 _mesa_PolygonOffset((GLfloat) (factor / 65536.0f), 883 (GLfloat) (units / 65536.0f)); 884} 885 886void GL_APIENTRY 887_es_Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) 888{ 889 _mesa_Rotatef((GLfloat) (angle / 65536.0f), 890 (GLfloat) (x / 65536.0f), 891 (GLfloat) (y / 65536.0f), 892 (GLfloat) (z / 65536.0f)); 893} 894 895void GL_APIENTRY 896_es_SampleCoveragex(GLclampx value, GLboolean invert) 897{ 898 _mesa_SampleCoverageARB((GLclampf) (value / 65536.0f), 899 invert); 900} 901 902void GL_APIENTRY 903_es_Scalex(GLfixed x, GLfixed y, GLfixed z) 904{ 905 _mesa_Scalef((GLfloat) (x / 65536.0f), 906 (GLfloat) (y / 65536.0f), 907 (GLfloat) (z / 65536.0f)); 908} 909 910void GL_APIENTRY 911_es_TexEnvx(GLenum target, GLenum pname, GLfixed param) 912{ 913 GLfloat converted_param; 914 bool convert_param_value = true; 915 916 switch(target) { 917 case GL_POINT_SPRITE: 918 if (pname != GL_COORD_REPLACE) { 919 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 920 "glTexEnvx(target=0x%x)", target); 921 return; 922 } 923 break; 924 case GL_TEXTURE_FILTER_CONTROL_EXT: 925 if (pname != GL_TEXTURE_LOD_BIAS_EXT) { 926 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 927 "glTexEnvx(target=0x%x)", target); 928 return; 929 } 930 break; 931 case GL_TEXTURE_ENV: 932 if (pname != GL_TEXTURE_ENV_MODE && pname != GL_COMBINE_RGB && pname != GL_COMBINE_ALPHA && pname != GL_RGB_SCALE && pname != GL_ALPHA_SCALE && 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 && pname != GL_TEXTURE_ENV_COLOR) { 933 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 934 "glTexEnvx(target=0x%x)", target); 935 return; 936 } 937 break; 938 default: 939 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 940 "glTexEnvx(target=0x%x)", target); 941 return; 942 } 943 switch(pname) { 944 case GL_COORD_REPLACE: 945 if (param != GL_TRUE && param != GL_FALSE) { 946 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 947 "glTexEnvx(pname=0x%x)", pname); 948 return; 949 } 950 convert_param_value = false; 951 break; 952 case GL_TEXTURE_LOD_BIAS_EXT: 953 break; 954 case GL_TEXTURE_ENV_MODE: 955 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_DECAL && param != GL_BLEND && param != GL_ADD && param != GL_COMBINE) { 956 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 957 "glTexEnvx(pname=0x%x)", pname); 958 return; 959 } 960 convert_param_value = false; 961 break; 962 case GL_COMBINE_RGB: 963 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_ADD && param != GL_ADD_SIGNED && param != GL_INTERPOLATE && param != GL_SUBTRACT && param != GL_DOT3_RGB && param != GL_DOT3_RGBA) { 964 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 965 "glTexEnvx(pname=0x%x)", pname); 966 return; 967 } 968 convert_param_value = false; 969 break; 970 case GL_COMBINE_ALPHA: 971 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_ADD && param != GL_ADD_SIGNED && param != GL_INTERPOLATE && param != GL_SUBTRACT) { 972 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 973 "glTexEnvx(pname=0x%x)", pname); 974 return; 975 } 976 convert_param_value = false; 977 break; 978 case GL_RGB_SCALE: 979 case GL_ALPHA_SCALE: 980 break; 981 case GL_SRC0_RGB: 982 case GL_SRC1_RGB: 983 case GL_SRC2_RGB: 984 case GL_SRC0_ALPHA: 985 case GL_SRC1_ALPHA: 986 case GL_SRC2_ALPHA: 987 convert_param_value = false; 988 break; 989 case GL_OPERAND0_RGB: 990 case GL_OPERAND1_RGB: 991 case GL_OPERAND2_RGB: 992 if (param != GL_SRC_COLOR && param != GL_ONE_MINUS_SRC_COLOR && param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) { 993 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 994 "glTexEnvx(pname=0x%x)", pname); 995 return; 996 } 997 convert_param_value = false; 998 break; 999 case GL_OPERAND0_ALPHA: 1000 case GL_OPERAND1_ALPHA: 1001 case GL_OPERAND2_ALPHA: 1002 if (param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) { 1003 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1004 "glTexEnvx(pname=0x%x)", pname); 1005 return; 1006 } 1007 convert_param_value = false; 1008 break; 1009 default: 1010 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1011 "glTexEnvx(pname=0x%x)", pname); 1012 return; 1013 } 1014 1015 if (convert_param_value) { 1016 converted_param = (GLfloat) (param / 65536.0f); 1017 } else { 1018 converted_param = (GLfloat) param; 1019 } 1020 1021 _mesa_TexEnvf(target, pname, converted_param); 1022} 1023 1024void GL_APIENTRY 1025_es_TexEnvxv(GLenum target, GLenum pname, const GLfixed *params) 1026{ 1027 unsigned int i; 1028 unsigned int n_params = 4; 1029 GLfloat converted_params[4]; 1030 bool convert_params_value = true; 1031 1032 switch(target) { 1033 case GL_POINT_SPRITE: 1034 if (pname != GL_COORD_REPLACE) { 1035 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1036 "glTexEnvxv(target=0x%x)", target); 1037 return; 1038 } 1039 break; 1040 case GL_TEXTURE_FILTER_CONTROL_EXT: 1041 if (pname != GL_TEXTURE_LOD_BIAS_EXT) { 1042 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1043 "glTexEnvxv(target=0x%x)", target); 1044 return; 1045 } 1046 break; 1047 case GL_TEXTURE_ENV: 1048 if (pname != GL_TEXTURE_ENV_MODE && pname != GL_COMBINE_RGB && pname != GL_COMBINE_ALPHA && pname != GL_RGB_SCALE && pname != GL_ALPHA_SCALE && 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 && pname != GL_TEXTURE_ENV_COLOR) { 1049 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1050 "glTexEnvxv(target=0x%x)", target); 1051 return; 1052 } 1053 break; 1054 default: 1055 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1056 "glTexEnvxv(target=0x%x)", target); 1057 return; 1058 } 1059 switch(pname) { 1060 case GL_COORD_REPLACE: 1061 if (params[0] != GL_TRUE && params[0] != GL_FALSE) { 1062 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1063 "glTexEnvxv(pname=0x%x)", pname); 1064 return; 1065 } 1066 convert_params_value = false; 1067 n_params = 1; 1068 break; 1069 case GL_TEXTURE_LOD_BIAS_EXT: 1070 n_params = 1; 1071 break; 1072 case GL_TEXTURE_ENV_MODE: 1073 if (params[0] != GL_REPLACE && params[0] != GL_MODULATE && params[0] != GL_DECAL && params[0] != GL_BLEND && params[0] != GL_ADD && params[0] != GL_COMBINE) { 1074 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1075 "glTexEnvxv(pname=0x%x)", pname); 1076 return; 1077 } 1078 convert_params_value = false; 1079 n_params = 1; 1080 break; 1081 case GL_COMBINE_RGB: 1082 if (params[0] != GL_REPLACE && params[0] != GL_MODULATE && params[0] != GL_ADD && params[0] != GL_ADD_SIGNED && params[0] != GL_INTERPOLATE && params[0] != GL_SUBTRACT && params[0] != GL_DOT3_RGB && params[0] != GL_DOT3_RGBA) { 1083 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1084 "glTexEnvxv(pname=0x%x)", pname); 1085 return; 1086 } 1087 convert_params_value = false; 1088 n_params = 1; 1089 break; 1090 case GL_COMBINE_ALPHA: 1091 if (params[0] != GL_REPLACE && params[0] != GL_MODULATE && params[0] != GL_ADD && params[0] != GL_ADD_SIGNED && params[0] != GL_INTERPOLATE && params[0] != GL_SUBTRACT) { 1092 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1093 "glTexEnvxv(pname=0x%x)", pname); 1094 return; 1095 } 1096 convert_params_value = false; 1097 n_params = 1; 1098 break; 1099 case GL_RGB_SCALE: 1100 case GL_ALPHA_SCALE: 1101 break; 1102 case GL_SRC0_RGB: 1103 case GL_SRC1_RGB: 1104 case GL_SRC2_RGB: 1105 case GL_SRC0_ALPHA: 1106 case GL_SRC1_ALPHA: 1107 case GL_SRC2_ALPHA: 1108 convert_params_value = false; 1109 n_params = 1; 1110 break; 1111 case GL_OPERAND0_RGB: 1112 case GL_OPERAND1_RGB: 1113 case GL_OPERAND2_RGB: 1114 if (params[0] != GL_SRC_COLOR && params[0] != GL_ONE_MINUS_SRC_COLOR && params[0] != GL_SRC_ALPHA && params[0] != GL_ONE_MINUS_SRC_ALPHA) { 1115 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1116 "glTexEnvxv(pname=0x%x)", pname); 1117 return; 1118 } 1119 convert_params_value = false; 1120 n_params = 1; 1121 break; 1122 case GL_OPERAND0_ALPHA: 1123 case GL_OPERAND1_ALPHA: 1124 case GL_OPERAND2_ALPHA: 1125 if (params[0] != GL_SRC_ALPHA && params[0] != GL_ONE_MINUS_SRC_ALPHA) { 1126 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1127 "glTexEnvxv(pname=0x%x)", pname); 1128 return; 1129 } 1130 convert_params_value = false; 1131 n_params = 1; 1132 break; 1133 case GL_TEXTURE_ENV_COLOR: 1134 n_params = 4; 1135 break; 1136 default: 1137 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1138 "glTexEnvxv(pname=0x%x)", pname); 1139 return; 1140 } 1141 1142 if (convert_params_value) { 1143 for (i = 0; i < n_params; i++) { 1144 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 1145 } 1146 } else { 1147 for (i = 0; i < n_params; i++) { 1148 converted_params[i] = (GLfloat) params[i]; 1149 } 1150 } 1151 1152 _mesa_TexEnvfv(target, pname, converted_params); 1153} 1154 1155void GL_APIENTRY 1156_check_TexGeniOES(GLenum coord, GLenum pname, GLint param) 1157{ 1158 switch(coord) { 1159 case GL_TEXTURE_GEN_STR_OES: 1160 break; 1161 default: 1162 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1163 "glTexGeniOES(coord=0x%x)", coord); 1164 return; 1165 } 1166 switch(pname) { 1167 case GL_TEXTURE_GEN_MODE: 1168 if (param != GL_NORMAL_MAP && param != GL_REFLECTION_MAP) { 1169 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1170 "glTexGeniOES(pname=0x%x)", pname); 1171 return; 1172 } 1173 break; 1174 default: 1175 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1176 "glTexGeniOES(pname=0x%x)", pname); 1177 return; 1178 } 1179 1180 _es_TexGenf(coord, pname, (GLfloat) param); 1181} 1182 1183void GL_APIENTRY 1184_check_TexGenivOES(GLenum coord, GLenum pname, const GLint *params) 1185{ 1186 unsigned int i; 1187 unsigned int n_params = 1; 1188 GLfloat converted_params[1]; 1189 1190 switch(coord) { 1191 case GL_TEXTURE_GEN_STR_OES: 1192 break; 1193 default: 1194 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1195 "glTexGenivOES(coord=0x%x)", coord); 1196 return; 1197 } 1198 switch(pname) { 1199 case GL_TEXTURE_GEN_MODE: 1200 if (params[0] != GL_NORMAL_MAP && params[0] != GL_REFLECTION_MAP) { 1201 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1202 "glTexGenivOES(pname=0x%x)", pname); 1203 return; 1204 } 1205 n_params = 1; 1206 break; 1207 default: 1208 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1209 "glTexGenivOES(pname=0x%x)", pname); 1210 return; 1211 } 1212 1213 for (i = 0; i < n_params; i++) { 1214 converted_params[i] = (GLfloat) params[i]; 1215 } 1216 1217 _es_TexGenfv(coord, pname, converted_params); 1218} 1219 1220void GL_APIENTRY 1221_check_TexGenxOES(GLenum coord, GLenum pname, GLfixed param) 1222{ 1223 switch(coord) { 1224 case GL_TEXTURE_GEN_STR_OES: 1225 break; 1226 default: 1227 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1228 "glTexGenxOES(coord=0x%x)", coord); 1229 return; 1230 } 1231 switch(pname) { 1232 case GL_TEXTURE_GEN_MODE: 1233 if (param != GL_NORMAL_MAP && param != GL_REFLECTION_MAP) { 1234 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1235 "glTexGenxOES(pname=0x%x)", pname); 1236 return; 1237 } 1238 break; 1239 default: 1240 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1241 "glTexGenxOES(pname=0x%x)", pname); 1242 return; 1243 } 1244 1245 _es_TexGenf(coord, pname, (GLfloat) param); 1246} 1247 1248void GL_APIENTRY 1249_check_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) 1250{ 1251 unsigned int i; 1252 unsigned int n_params = 1; 1253 GLfloat converted_params[1]; 1254 1255 switch(coord) { 1256 case GL_TEXTURE_GEN_STR_OES: 1257 break; 1258 default: 1259 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1260 "glTexGenxvOES(coord=0x%x)", coord); 1261 return; 1262 } 1263 switch(pname) { 1264 case GL_TEXTURE_GEN_MODE: 1265 if (params[0] != GL_NORMAL_MAP && params[0] != GL_REFLECTION_MAP) { 1266 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1267 "glTexGenxvOES(pname=0x%x)", pname); 1268 return; 1269 } 1270 n_params = 1; 1271 break; 1272 default: 1273 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1274 "glTexGenxvOES(pname=0x%x)", pname); 1275 return; 1276 } 1277 1278 for (i = 0; i < n_params; i++) { 1279 converted_params[i] = (GLfloat) params[i]; 1280 } 1281 1282 _es_TexGenfv(coord, pname, converted_params); 1283} 1284 1285void GL_APIENTRY 1286_es_TexParameterx(GLenum target, GLenum pname, GLfixed param) 1287{ 1288 GLfloat converted_param; 1289 bool convert_param_value = true; 1290 1291 switch(target) { 1292 case GL_TEXTURE_2D: 1293 case GL_TEXTURE_CUBE_MAP: 1294 case GL_TEXTURE_EXTERNAL_OES: 1295 break; 1296 default: 1297 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1298 "glTexParameterx(target=0x%x)", target); 1299 return; 1300 } 1301 switch(pname) { 1302 case GL_TEXTURE_WRAP_S: 1303 case GL_TEXTURE_WRAP_T: 1304 if (param != GL_CLAMP_TO_EDGE && param != GL_REPEAT && param != GL_MIRRORED_REPEAT) { 1305 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1306 "glTexParameterx(pname=0x%x)", pname); 1307 return; 1308 } 1309 convert_param_value = false; 1310 break; 1311 case GL_TEXTURE_MIN_FILTER: 1312 case GL_TEXTURE_MAG_FILTER: 1313 convert_param_value = false; 1314 break; 1315 case GL_GENERATE_MIPMAP: 1316 if (param != GL_TRUE && param != GL_FALSE) { 1317 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1318 "glTexParameterx(pname=0x%x)", pname); 1319 return; 1320 } 1321 convert_param_value = false; 1322 break; 1323 case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1324 break; 1325 default: 1326 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1327 "glTexParameterx(pname=0x%x)", pname); 1328 return; 1329 } 1330 1331 if (convert_param_value) { 1332 converted_param = (GLfloat) (param / 65536.0f); 1333 } else { 1334 converted_param = (GLfloat) param; 1335 } 1336 1337 _mesa_TexParameterf(target, pname, converted_param); 1338} 1339 1340void GL_APIENTRY 1341_es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params) 1342{ 1343 unsigned int i; 1344 unsigned int n_params = 4; 1345 GLfloat converted_params[4]; 1346 bool convert_params_value = true; 1347 1348 switch(target) { 1349 case GL_TEXTURE_2D: 1350 case GL_TEXTURE_CUBE_MAP: 1351 case GL_TEXTURE_EXTERNAL_OES: 1352 break; 1353 default: 1354 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1355 "glTexParameterxv(target=0x%x)", target); 1356 return; 1357 } 1358 switch(pname) { 1359 case GL_TEXTURE_WRAP_S: 1360 case GL_TEXTURE_WRAP_T: 1361 if (params[0] != GL_CLAMP_TO_EDGE && params[0] != GL_REPEAT && params[0] != GL_MIRRORED_REPEAT) { 1362 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1363 "glTexParameterxv(pname=0x%x)", pname); 1364 return; 1365 } 1366 convert_params_value = false; 1367 n_params = 1; 1368 break; 1369 case GL_TEXTURE_MIN_FILTER: 1370 case GL_TEXTURE_MAG_FILTER: 1371 convert_params_value = false; 1372 n_params = 1; 1373 break; 1374 case GL_GENERATE_MIPMAP: 1375 if (params[0] != GL_TRUE && params[0] != GL_FALSE) { 1376 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1377 "glTexParameterxv(pname=0x%x)", pname); 1378 return; 1379 } 1380 convert_params_value = false; 1381 n_params = 1; 1382 break; 1383 case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1384 n_params = 1; 1385 break; 1386 case GL_TEXTURE_CROP_RECT_OES: 1387 n_params = 4; 1388 break; 1389 default: 1390 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1391 "glTexParameterxv(pname=0x%x)", pname); 1392 return; 1393 } 1394 1395 if (convert_params_value) { 1396 for (i = 0; i < n_params; i++) { 1397 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 1398 } 1399 } else { 1400 for (i = 0; i < n_params; i++) { 1401 converted_params[i] = (GLfloat) params[i]; 1402 } 1403 } 1404 1405 _mesa_TexParameterfv(target, pname, converted_params); 1406} 1407 1408void GL_APIENTRY 1409_es_Translatex(GLfixed x, GLfixed y, GLfixed z) 1410{ 1411 _mesa_Translatef((GLfloat) (x / 65536.0f), 1412 (GLfloat) (y / 65536.0f), 1413 (GLfloat) (z / 65536.0f)); 1414} 1415 1416#endif /* FEATURE_ES1 */ 1417