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