es1_conversion.c revision d0ace4e949d0e2f11e6f0fb0fd97ccde58457937
1255e72915d4cbddceb435e13d81601755714e9fSE Android#include <stdbool.h> 2255e72915d4cbddceb435e13d81601755714e9fSE Android#include "main/mfeatures.h" 3255e72915d4cbddceb435e13d81601755714e9fSE Android 4255e72915d4cbddceb435e13d81601755714e9fSE Android#if FEATURE_ES1 5255e72915d4cbddceb435e13d81601755714e9fSE Android 6255e72915d4cbddceb435e13d81601755714e9fSE Android#include "api_loopback.h" 7255e72915d4cbddceb435e13d81601755714e9fSE Android#include "api_exec.h" 8255e72915d4cbddceb435e13d81601755714e9fSE Android#include "blend.h" 9255e72915d4cbddceb435e13d81601755714e9fSE Android#include "clear.h" 10255e72915d4cbddceb435e13d81601755714e9fSE Android#include "clip.h" 11255e72915d4cbddceb435e13d81601755714e9fSE Android#include "context.h" 12255e72915d4cbddceb435e13d81601755714e9fSE Android#include "depth.h" 13255e72915d4cbddceb435e13d81601755714e9fSE Android#include "fog.h" 14255e72915d4cbddceb435e13d81601755714e9fSE Android#include "imports.h" 15255e72915d4cbddceb435e13d81601755714e9fSE Android#include "light.h" 16255e72915d4cbddceb435e13d81601755714e9fSE Android#include "lines.h" 17255e72915d4cbddceb435e13d81601755714e9fSE Android#include "matrix.h" 18255e72915d4cbddceb435e13d81601755714e9fSE Android#include "multisample.h" 19255e72915d4cbddceb435e13d81601755714e9fSE Android#include "pixelstore.h" 20255e72915d4cbddceb435e13d81601755714e9fSE Android#include "points.h" 21255e72915d4cbddceb435e13d81601755714e9fSE Android#include "polygon.h" 22255e72915d4cbddceb435e13d81601755714e9fSE Android#include "readpix.h" 23255e72915d4cbddceb435e13d81601755714e9fSE Android#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 switch(texture) { 805 case GL_TEXTURE0: 806 case GL_TEXTURE1: 807 case GL_TEXTURE2: 808 case GL_TEXTURE3: 809 case GL_TEXTURE4: 810 case GL_TEXTURE5: 811 case GL_TEXTURE6: 812 case GL_TEXTURE7: 813 case GL_TEXTURE8: 814 case GL_TEXTURE9: 815 case GL_TEXTURE10: 816 case GL_TEXTURE11: 817 case GL_TEXTURE12: 818 case GL_TEXTURE13: 819 case GL_TEXTURE14: 820 case GL_TEXTURE15: 821 case GL_TEXTURE16: 822 case GL_TEXTURE17: 823 case GL_TEXTURE18: 824 case GL_TEXTURE19: 825 case GL_TEXTURE20: 826 case GL_TEXTURE21: 827 case GL_TEXTURE22: 828 case GL_TEXTURE23: 829 case GL_TEXTURE24: 830 case GL_TEXTURE25: 831 case GL_TEXTURE26: 832 case GL_TEXTURE27: 833 case GL_TEXTURE28: 834 case GL_TEXTURE29: 835 case GL_TEXTURE30: 836 case GL_TEXTURE31: 837 break; 838 default: 839 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 840 "glMultiTexCoord4x(texture=0x%x)", texture); 841 return; 842 } 843 844 845 _es_MultiTexCoord4f(texture, 846 (GLfloat) (s / 65536.0f), 847 (GLfloat) (t / 65536.0f), 848 (GLfloat) (r / 65536.0f), 849 (GLfloat) (q / 65536.0f)); 850} 851 852void GL_APIENTRY 853_es_Normal3x(GLfixed nx, GLfixed ny, GLfixed nz) 854{ 855 _es_Normal3f((GLfloat) (nx / 65536.0f), 856 (GLfloat) (ny / 65536.0f), 857 (GLfloat) (nz / 65536.0f)); 858} 859 860void GL_APIENTRY 861_es_Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, 862 GLfloat zNear, GLfloat zFar) 863{ 864 _mesa_Ortho((GLdouble) (left), 865 (GLdouble) (right), 866 (GLdouble) (bottom), 867 (GLdouble) (top), 868 (GLdouble) (zNear), 869 (GLdouble) (zFar)); 870} 871 872void GL_APIENTRY 873_es_Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, 874 GLfixed zNear, GLfixed zFar) 875{ 876 _mesa_Ortho((GLdouble) (left / 65536.0), 877 (GLdouble) (right / 65536.0), 878 (GLdouble) (bottom / 65536.0), 879 (GLdouble) (top / 65536.0), 880 (GLdouble) (zNear / 65536.0), 881 (GLdouble) (zFar / 65536.0)); 882} 883 884void GL_APIENTRY 885_es_PointParameterx(GLenum pname, GLfixed param) 886{ 887 switch(pname) { 888 case GL_POINT_SIZE_MIN: 889 case GL_POINT_SIZE_MAX: 890 case GL_POINT_FADE_THRESHOLD_SIZE: 891 break; 892 default: 893 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 894 "glPointParameterx(pname=0x%x)", pname); 895 return; 896 } 897 898 _mesa_PointParameterf(pname, (GLfloat) (param / 65536.0f)); 899} 900 901void GL_APIENTRY 902_es_PointParameterxv(GLenum pname, const GLfixed *params) 903{ 904 unsigned int i; 905 unsigned int n_params = 3; 906 GLfloat converted_params[3]; 907 908 switch(pname) { 909 case GL_POINT_SIZE_MIN: 910 case GL_POINT_SIZE_MAX: 911 case GL_POINT_FADE_THRESHOLD_SIZE: 912 n_params = 1; 913 break; 914 case GL_POINT_DISTANCE_ATTENUATION: 915 n_params = 3; 916 break; 917 default: 918 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 919 "glPointParameterxv(pname=0x%x)", pname); 920 return; 921 } 922 923 for (i = 0; i < n_params; i++) { 924 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 925 } 926 927 _mesa_PointParameterfv(pname, converted_params); 928} 929 930void GL_APIENTRY 931_es_PointSizex(GLfixed size) 932{ 933 _mesa_PointSize((GLfloat) (size / 65536.0f)); 934} 935 936void GL_APIENTRY 937_es_PolygonOffsetx(GLfixed factor, GLfixed units) 938{ 939 _mesa_PolygonOffset((GLfloat) (factor / 65536.0f), 940 (GLfloat) (units / 65536.0f)); 941} 942 943void GL_APIENTRY 944_es_Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) 945{ 946 _mesa_Rotatef((GLfloat) (angle / 65536.0f), 947 (GLfloat) (x / 65536.0f), 948 (GLfloat) (y / 65536.0f), 949 (GLfloat) (z / 65536.0f)); 950} 951 952void GL_APIENTRY 953_es_SampleCoveragex(GLclampx value, GLboolean invert) 954{ 955 _mesa_SampleCoverageARB((GLclampf) (value / 65536.0f), 956 invert); 957} 958 959void GL_APIENTRY 960_es_Scalex(GLfixed x, GLfixed y, GLfixed z) 961{ 962 _mesa_Scalef((GLfloat) (x / 65536.0f), 963 (GLfloat) (y / 65536.0f), 964 (GLfloat) (z / 65536.0f)); 965} 966 967void GL_APIENTRY 968_es_TexEnvx(GLenum target, GLenum pname, GLfixed param) 969{ 970 GLfloat converted_param; 971 bool convert_param_value = true; 972 973 switch(target) { 974 case GL_POINT_SPRITE: 975 if (pname != GL_COORD_REPLACE) { 976 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 977 "glTexEnvx(target=0x%x)", target); 978 return; 979 } 980 break; 981 case GL_TEXTURE_FILTER_CONTROL_EXT: 982 if (pname != GL_TEXTURE_LOD_BIAS_EXT) { 983 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 984 "glTexEnvx(target=0x%x)", target); 985 return; 986 } 987 break; 988 case GL_TEXTURE_ENV: 989 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) { 990 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 991 "glTexEnvx(target=0x%x)", target); 992 return; 993 } 994 break; 995 default: 996 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 997 "glTexEnvx(target=0x%x)", target); 998 return; 999 } 1000 switch(pname) { 1001 case GL_COORD_REPLACE: 1002 if (param != GL_TRUE && param != GL_FALSE) { 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 case GL_TEXTURE_LOD_BIAS_EXT: 1010 break; 1011 case GL_TEXTURE_ENV_MODE: 1012 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_DECAL && param != GL_BLEND && param != GL_ADD && param != GL_COMBINE) { 1013 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1014 "glTexEnvx(pname=0x%x)", pname); 1015 return; 1016 } 1017 convert_param_value = false; 1018 break; 1019 case GL_COMBINE_RGB: 1020 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) { 1021 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1022 "glTexEnvx(pname=0x%x)", pname); 1023 return; 1024 } 1025 convert_param_value = false; 1026 break; 1027 case GL_COMBINE_ALPHA: 1028 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_ADD && param != GL_ADD_SIGNED && param != GL_INTERPOLATE && param != GL_SUBTRACT) { 1029 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1030 "glTexEnvx(pname=0x%x)", pname); 1031 return; 1032 } 1033 convert_param_value = false; 1034 break; 1035 case GL_RGB_SCALE: 1036 case GL_ALPHA_SCALE: 1037 break; 1038 case GL_SRC0_RGB: 1039 case GL_SRC1_RGB: 1040 case GL_SRC2_RGB: 1041 case GL_SRC0_ALPHA: 1042 case GL_SRC1_ALPHA: 1043 case GL_SRC2_ALPHA: 1044 if (param != GL_TEXTURE && param != GL_CONSTANT && param != GL_PRIMARY_COLOR && param != GL_PREVIOUS && param != GL_TEXTURE0 && param != GL_TEXTURE1 && param != GL_TEXTURE2 && param != GL_TEXTURE3 && param != GL_TEXTURE4 && param != GL_TEXTURE5 && param != GL_TEXTURE6 && param != GL_TEXTURE7 && param != GL_TEXTURE8 && param != GL_TEXTURE9 && param != GL_TEXTURE10 && param != GL_TEXTURE11 && param != GL_TEXTURE12 && param != GL_TEXTURE13 && param != GL_TEXTURE14 && param != GL_TEXTURE15 && param != GL_TEXTURE16 && param != GL_TEXTURE17 && param != GL_TEXTURE18 && param != GL_TEXTURE19 && param != GL_TEXTURE20 && param != GL_TEXTURE21 && param != GL_TEXTURE22 && param != GL_TEXTURE23 && param != GL_TEXTURE24 && param != GL_TEXTURE25 && param != GL_TEXTURE26 && param != GL_TEXTURE27 && param != GL_TEXTURE28 && param != GL_TEXTURE29 && param != GL_TEXTURE30 && param != GL_TEXTURE31) { 1045 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1046 "glTexEnvx(pname=0x%x)", pname); 1047 return; 1048 } 1049 convert_param_value = false; 1050 break; 1051 case GL_OPERAND0_RGB: 1052 case GL_OPERAND1_RGB: 1053 case GL_OPERAND2_RGB: 1054 if (param != GL_SRC_COLOR && param != GL_ONE_MINUS_SRC_COLOR && param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) { 1055 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1056 "glTexEnvx(pname=0x%x)", pname); 1057 return; 1058 } 1059 convert_param_value = false; 1060 break; 1061 case GL_OPERAND0_ALPHA: 1062 case GL_OPERAND1_ALPHA: 1063 case GL_OPERAND2_ALPHA: 1064 if (param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) { 1065 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1066 "glTexEnvx(pname=0x%x)", pname); 1067 return; 1068 } 1069 convert_param_value = false; 1070 break; 1071 default: 1072 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1073 "glTexEnvx(pname=0x%x)", pname); 1074 return; 1075 } 1076 1077 if (convert_param_value) { 1078 converted_param = (GLfloat) (param / 65536.0f); 1079 } else { 1080 converted_param = (GLfloat) param; 1081 } 1082 1083 _mesa_TexEnvf(target, pname, converted_param); 1084} 1085 1086void GL_APIENTRY 1087_es_TexEnvxv(GLenum target, GLenum pname, const GLfixed *params) 1088{ 1089 unsigned int i; 1090 unsigned int n_params = 4; 1091 GLfloat converted_params[4]; 1092 bool convert_params_value = true; 1093 1094 switch(target) { 1095 case GL_POINT_SPRITE: 1096 if (pname != GL_COORD_REPLACE) { 1097 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1098 "glTexEnvxv(target=0x%x)", target); 1099 return; 1100 } 1101 break; 1102 case GL_TEXTURE_FILTER_CONTROL_EXT: 1103 if (pname != GL_TEXTURE_LOD_BIAS_EXT) { 1104 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1105 "glTexEnvxv(target=0x%x)", target); 1106 return; 1107 } 1108 break; 1109 case GL_TEXTURE_ENV: 1110 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) { 1111 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1112 "glTexEnvxv(target=0x%x)", target); 1113 return; 1114 } 1115 break; 1116 default: 1117 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1118 "glTexEnvxv(target=0x%x)", target); 1119 return; 1120 } 1121 switch(pname) { 1122 case GL_COORD_REPLACE: 1123 if (params[0] != GL_TRUE && params[0] != GL_FALSE) { 1124 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1125 "glTexEnvxv(pname=0x%x)", pname); 1126 return; 1127 } 1128 convert_params_value = false; 1129 n_params = 1; 1130 break; 1131 case GL_TEXTURE_LOD_BIAS_EXT: 1132 n_params = 1; 1133 break; 1134 case GL_TEXTURE_ENV_MODE: 1135 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) { 1136 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1137 "glTexEnvxv(pname=0x%x)", pname); 1138 return; 1139 } 1140 convert_params_value = false; 1141 n_params = 1; 1142 break; 1143 case GL_COMBINE_RGB: 1144 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) { 1145 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1146 "glTexEnvxv(pname=0x%x)", pname); 1147 return; 1148 } 1149 convert_params_value = false; 1150 n_params = 1; 1151 break; 1152 case GL_COMBINE_ALPHA: 1153 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) { 1154 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1155 "glTexEnvxv(pname=0x%x)", pname); 1156 return; 1157 } 1158 convert_params_value = false; 1159 n_params = 1; 1160 break; 1161 case GL_RGB_SCALE: 1162 case GL_ALPHA_SCALE: 1163 break; 1164 case GL_SRC0_RGB: 1165 case GL_SRC1_RGB: 1166 case GL_SRC2_RGB: 1167 case GL_SRC0_ALPHA: 1168 case GL_SRC1_ALPHA: 1169 case GL_SRC2_ALPHA: 1170 if (params[0] != GL_TEXTURE && params[0] != GL_CONSTANT && params[0] != GL_PRIMARY_COLOR && params[0] != GL_PREVIOUS && params[0] != GL_TEXTURE0 && params[0] != GL_TEXTURE1 && params[0] != GL_TEXTURE2 && params[0] != GL_TEXTURE3 && params[0] != GL_TEXTURE4 && params[0] != GL_TEXTURE5 && params[0] != GL_TEXTURE6 && params[0] != GL_TEXTURE7 && params[0] != GL_TEXTURE8 && params[0] != GL_TEXTURE9 && params[0] != GL_TEXTURE10 && params[0] != GL_TEXTURE11 && params[0] != GL_TEXTURE12 && params[0] != GL_TEXTURE13 && params[0] != GL_TEXTURE14 && params[0] != GL_TEXTURE15 && params[0] != GL_TEXTURE16 && params[0] != GL_TEXTURE17 && params[0] != GL_TEXTURE18 && params[0] != GL_TEXTURE19 && params[0] != GL_TEXTURE20 && params[0] != GL_TEXTURE21 && params[0] != GL_TEXTURE22 && params[0] != GL_TEXTURE23 && params[0] != GL_TEXTURE24 && params[0] != GL_TEXTURE25 && params[0] != GL_TEXTURE26 && params[0] != GL_TEXTURE27 && params[0] != GL_TEXTURE28 && params[0] != GL_TEXTURE29 && params[0] != GL_TEXTURE30 && params[0] != GL_TEXTURE31) { 1171 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1172 "glTexEnvxv(pname=0x%x)", pname); 1173 return; 1174 } 1175 convert_params_value = false; 1176 n_params = 1; 1177 break; 1178 case GL_OPERAND0_RGB: 1179 case GL_OPERAND1_RGB: 1180 case GL_OPERAND2_RGB: 1181 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) { 1182 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1183 "glTexEnvxv(pname=0x%x)", pname); 1184 return; 1185 } 1186 convert_params_value = false; 1187 n_params = 1; 1188 break; 1189 case GL_OPERAND0_ALPHA: 1190 case GL_OPERAND1_ALPHA: 1191 case GL_OPERAND2_ALPHA: 1192 if (params[0] != GL_SRC_ALPHA && params[0] != GL_ONE_MINUS_SRC_ALPHA) { 1193 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1194 "glTexEnvxv(pname=0x%x)", pname); 1195 return; 1196 } 1197 convert_params_value = false; 1198 n_params = 1; 1199 break; 1200 case GL_TEXTURE_ENV_COLOR: 1201 n_params = 4; 1202 break; 1203 default: 1204 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1205 "glTexEnvxv(pname=0x%x)", pname); 1206 return; 1207 } 1208 1209 if (convert_params_value) { 1210 for (i = 0; i < n_params; i++) { 1211 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 1212 } 1213 } else { 1214 for (i = 0; i < n_params; i++) { 1215 converted_params[i] = (GLfloat) params[i]; 1216 } 1217 } 1218 1219 _mesa_TexEnvfv(target, pname, converted_params); 1220} 1221 1222void GL_APIENTRY 1223_check_TexGeniOES(GLenum coord, GLenum pname, GLint param) 1224{ 1225 switch(coord) { 1226 case GL_TEXTURE_GEN_STR_OES: 1227 break; 1228 default: 1229 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1230 "glTexGeniOES(coord=0x%x)", coord); 1231 return; 1232 } 1233 switch(pname) { 1234 case GL_TEXTURE_GEN_MODE: 1235 if (param != GL_NORMAL_MAP && param != GL_REFLECTION_MAP) { 1236 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1237 "glTexGeniOES(pname=0x%x)", pname); 1238 return; 1239 } 1240 break; 1241 default: 1242 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1243 "glTexGeniOES(pname=0x%x)", pname); 1244 return; 1245 } 1246 1247 _es_TexGenf(coord, pname, (GLfloat) param); 1248} 1249 1250void GL_APIENTRY 1251_check_TexGenivOES(GLenum coord, GLenum pname, const GLint *params) 1252{ 1253 unsigned int i; 1254 unsigned int n_params = 1; 1255 GLfloat converted_params[1]; 1256 1257 switch(coord) { 1258 case GL_TEXTURE_GEN_STR_OES: 1259 break; 1260 default: 1261 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1262 "glTexGenivOES(coord=0x%x)", coord); 1263 return; 1264 } 1265 switch(pname) { 1266 case GL_TEXTURE_GEN_MODE: 1267 if (params[0] != GL_NORMAL_MAP && params[0] != GL_REFLECTION_MAP) { 1268 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1269 "glTexGenivOES(pname=0x%x)", pname); 1270 return; 1271 } 1272 n_params = 1; 1273 break; 1274 default: 1275 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1276 "glTexGenivOES(pname=0x%x)", pname); 1277 return; 1278 } 1279 1280 for (i = 0; i < n_params; i++) { 1281 converted_params[i] = (GLfloat) params[i]; 1282 } 1283 1284 _es_TexGenfv(coord, pname, converted_params); 1285} 1286 1287void GL_APIENTRY 1288_check_TexGenxOES(GLenum coord, GLenum pname, GLfixed param) 1289{ 1290 switch(coord) { 1291 case GL_TEXTURE_GEN_STR_OES: 1292 break; 1293 default: 1294 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1295 "glTexGenxOES(coord=0x%x)", coord); 1296 return; 1297 } 1298 switch(pname) { 1299 case GL_TEXTURE_GEN_MODE: 1300 if (param != GL_NORMAL_MAP && param != GL_REFLECTION_MAP) { 1301 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1302 "glTexGenxOES(pname=0x%x)", pname); 1303 return; 1304 } 1305 break; 1306 default: 1307 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1308 "glTexGenxOES(pname=0x%x)", pname); 1309 return; 1310 } 1311 1312 _es_TexGenf(coord, pname, (GLfloat) param); 1313} 1314 1315void GL_APIENTRY 1316_check_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) 1317{ 1318 unsigned int i; 1319 unsigned int n_params = 1; 1320 GLfloat converted_params[1]; 1321 1322 switch(coord) { 1323 case GL_TEXTURE_GEN_STR_OES: 1324 break; 1325 default: 1326 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1327 "glTexGenxvOES(coord=0x%x)", coord); 1328 return; 1329 } 1330 switch(pname) { 1331 case GL_TEXTURE_GEN_MODE: 1332 if (params[0] != GL_NORMAL_MAP && params[0] != GL_REFLECTION_MAP) { 1333 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1334 "glTexGenxvOES(pname=0x%x)", pname); 1335 return; 1336 } 1337 n_params = 1; 1338 break; 1339 default: 1340 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1341 "glTexGenxvOES(pname=0x%x)", pname); 1342 return; 1343 } 1344 1345 for (i = 0; i < n_params; i++) { 1346 converted_params[i] = (GLfloat) params[i]; 1347 } 1348 1349 _es_TexGenfv(coord, pname, converted_params); 1350} 1351 1352void GL_APIENTRY 1353_es_TexParameterx(GLenum target, GLenum pname, GLfixed param) 1354{ 1355 GLfloat converted_param; 1356 bool convert_param_value = true; 1357 1358 switch(target) { 1359 case GL_TEXTURE_2D: 1360 case GL_TEXTURE_CUBE_MAP: 1361 case GL_TEXTURE_EXTERNAL_OES: 1362 break; 1363 default: 1364 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1365 "glTexParameterx(target=0x%x)", target); 1366 return; 1367 } 1368 switch(pname) { 1369 case GL_TEXTURE_WRAP_S: 1370 case GL_TEXTURE_WRAP_T: 1371 if (param != GL_CLAMP_TO_EDGE && param != GL_REPEAT && param != GL_MIRRORED_REPEAT) { 1372 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1373 "glTexParameterx(pname=0x%x)", pname); 1374 return; 1375 } 1376 convert_param_value = false; 1377 break; 1378 case GL_TEXTURE_MIN_FILTER: 1379 if (param != GL_NEAREST && param != GL_LINEAR && param != GL_NEAREST_MIPMAP_NEAREST && param != GL_NEAREST_MIPMAP_LINEAR && param != GL_LINEAR_MIPMAP_NEAREST && param != GL_LINEAR_MIPMAP_LINEAR) { 1380 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1381 "glTexParameterx(pname=0x%x)", pname); 1382 return; 1383 } 1384 convert_param_value = false; 1385 break; 1386 case GL_TEXTURE_MAG_FILTER: 1387 if (param != GL_NEAREST && param != GL_LINEAR) { 1388 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1389 "glTexParameterx(pname=0x%x)", pname); 1390 return; 1391 } 1392 convert_param_value = false; 1393 break; 1394 case GL_GENERATE_MIPMAP: 1395 if (param != GL_TRUE && param != GL_FALSE) { 1396 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1397 "glTexParameterx(pname=0x%x)", pname); 1398 return; 1399 } 1400 convert_param_value = false; 1401 break; 1402 case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1403 break; 1404 default: 1405 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1406 "glTexParameterx(pname=0x%x)", pname); 1407 return; 1408 } 1409 1410 if (convert_param_value) { 1411 converted_param = (GLfloat) (param / 65536.0f); 1412 } else { 1413 converted_param = (GLfloat) param; 1414 } 1415 1416 _mesa_TexParameterf(target, pname, converted_param); 1417} 1418 1419void GL_APIENTRY 1420_es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params) 1421{ 1422 unsigned int i; 1423 unsigned int n_params = 4; 1424 GLfloat converted_params[4]; 1425 bool convert_params_value = true; 1426 1427 switch(target) { 1428 case GL_TEXTURE_2D: 1429 case GL_TEXTURE_CUBE_MAP: 1430 case GL_TEXTURE_EXTERNAL_OES: 1431 break; 1432 default: 1433 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1434 "glTexParameterxv(target=0x%x)", target); 1435 return; 1436 } 1437 switch(pname) { 1438 case GL_TEXTURE_WRAP_S: 1439 case GL_TEXTURE_WRAP_T: 1440 if (params[0] != GL_CLAMP_TO_EDGE && params[0] != GL_REPEAT && params[0] != GL_MIRRORED_REPEAT) { 1441 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1442 "glTexParameterxv(pname=0x%x)", pname); 1443 return; 1444 } 1445 convert_params_value = false; 1446 n_params = 1; 1447 break; 1448 case GL_TEXTURE_MIN_FILTER: 1449 if (params[0] != GL_NEAREST && params[0] != GL_LINEAR && params[0] != GL_NEAREST_MIPMAP_NEAREST && params[0] != GL_NEAREST_MIPMAP_LINEAR && params[0] != GL_LINEAR_MIPMAP_NEAREST && params[0] != GL_LINEAR_MIPMAP_LINEAR) { 1450 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1451 "glTexParameterxv(pname=0x%x)", pname); 1452 return; 1453 } 1454 convert_params_value = false; 1455 n_params = 1; 1456 break; 1457 case GL_TEXTURE_MAG_FILTER: 1458 if (params[0] != GL_NEAREST && params[0] != GL_LINEAR) { 1459 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1460 "glTexParameterxv(pname=0x%x)", pname); 1461 return; 1462 } 1463 convert_params_value = false; 1464 n_params = 1; 1465 break; 1466 case GL_GENERATE_MIPMAP: 1467 if (params[0] != GL_TRUE && params[0] != GL_FALSE) { 1468 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1469 "glTexParameterxv(pname=0x%x)", pname); 1470 return; 1471 } 1472 convert_params_value = false; 1473 n_params = 1; 1474 break; 1475 case GL_TEXTURE_MAX_ANISOTROPY_EXT: 1476 n_params = 1; 1477 break; 1478 case GL_TEXTURE_CROP_RECT_OES: 1479 n_params = 4; 1480 break; 1481 default: 1482 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, 1483 "glTexParameterxv(pname=0x%x)", pname); 1484 return; 1485 } 1486 1487 if (convert_params_value) { 1488 for (i = 0; i < n_params; i++) { 1489 converted_params[i] = (GLfloat) (params[i] / 65536.0f); 1490 } 1491 } else { 1492 for (i = 0; i < n_params; i++) { 1493 converted_params[i] = (GLfloat) params[i]; 1494 } 1495 } 1496 1497 _mesa_TexParameterfv(target, pname, converted_params); 1498} 1499 1500void GL_APIENTRY 1501_es_Translatex(GLfixed x, GLfixed y, GLfixed z) 1502{ 1503 _mesa_Translatef((GLfloat) (x / 65536.0f), 1504 (GLfloat) (y / 65536.0f), 1505 (GLfloat) (z / 65536.0f)); 1506} 1507 1508#endif /* FEATURE_ES1 */ 1509