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