2 #include "main/mfeatures.h"
6 #include "api_loopback.h"
18 #include "multisample.h"
19 #include "pixelstore.h"
29 #include "main/drawtex.h"
33 #define GL_APIENTRY GLAPIENTRY
36 #include "main/es1_conversion.h"
39 _es_AlphaFuncx(GLenum func, GLclampx ref)
41 _mesa_AlphaFunc(func, (GLclampf) (ref / 65536.0f));
45 _es_ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
47 _mesa_ClearColor((GLclampf) (red / 65536.0f),
48 (GLclampf) (green / 65536.0f),
49 (GLclampf) (blue / 65536.0f),
50 (GLclampf) (alpha / 65536.0f));
54 _es_ClearDepthx(GLclampx depth)
56 _mesa_ClearDepthf((GLclampf) (depth / 65536.0f));
60 _es_ClipPlanef(GLenum plane, const GLfloat *equation)
63 GLdouble converted_equation[4];
65 for (i = 0; i < Elements(converted_equation); i++) {
66 converted_equation[i] = (GLdouble) (equation[i]);
69 _mesa_ClipPlane(plane, converted_equation);
73 _es_ClipPlanex(GLenum plane, const GLfixed *equation)
76 GLdouble converted_equation[4];
78 for (i = 0; i < Elements(converted_equation); i++) {
79 converted_equation[i] = (GLdouble) (equation[i] / 65536.0);
82 _mesa_ClipPlane(plane, converted_equation);
86 _es_Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
88 _es_Color4f((GLfloat) (red / 255.0f),
89 (GLfloat) (green / 255.0f),
90 (GLfloat) (blue / 255.0f),
91 (GLfloat) (alpha / 255.0f));
95 _es_Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
97 _es_Color4f((GLfloat) (red / 65536.0f),
98 (GLfloat) (green / 65536.0f),
99 (GLfloat) (blue / 65536.0f),
100 (GLfloat) (alpha / 65536.0f));
104 _es_DepthRangex(GLclampx zNear, GLclampx zFar)
106 _mesa_DepthRangef((GLclampf) (zNear / 65536.0f),
107 (GLclampf) (zFar / 65536.0f));
111 _es_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h)
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));
122 _es_DrawTexxvOES(const GLfixed *coords)
125 GLfloat converted_coords[5];
127 for (i = 0; i < Elements(converted_coords); i++) {
128 converted_coords[i] = (GLfloat) (coords[i] / 65536.0f);
131 _mesa_DrawTexfv(converted_coords);
135 _es_Fogx(GLenum pname, GLfixed param)
137 if (pname != GL_FOG_MODE) {
138 _mesa_Fogf(pname, (GLfloat) (param / 65536.0f));
140 _mesa_Fogf(pname, (GLfloat) param);
146 _es_Fogxv(GLenum pname, const GLfixed *params)
149 unsigned int n_params = 4;
150 GLfloat converted_params[4];
151 bool convert_params_value = true;
155 convert_params_value = false;
167 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
168 "glFogxv(pname=0x%x)", pname);
172 if (convert_params_value) {
173 for (i = 0; i < n_params; i++) {
174 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
177 for (i = 0; i < n_params; i++) {
178 converted_params[i] = (GLfloat) params[i];
182 _mesa_Fogfv(pname, converted_params);
186 _es_Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
187 GLfloat zNear, GLfloat zFar)
189 _mesa_Frustum((GLdouble) (left),
198 _es_Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
199 GLfixed zNear, GLfixed zFar)
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));
210 _es_GetClipPlanef(GLenum plane, GLfloat *equation)
213 GLdouble converted_equation[4];
215 _mesa_GetClipPlane(plane, converted_equation);
216 for (i = 0; i < Elements(converted_equation); i++) {
217 equation[i] = (GLfloat) (converted_equation[i]);
222 _es_GetClipPlanex(GLenum plane, GLfixed *equation)
225 GLdouble converted_equation[4];
227 _mesa_GetClipPlane(plane, converted_equation);
228 for (i = 0; i < Elements(converted_equation); i++) {
229 equation[i] = (GLfixed) (converted_equation[i] * 65536);
234 _es_GetLightxv(GLenum light, GLenum pname, GLfixed *params)
237 unsigned int n_params = 4;
238 GLfloat converted_params[4];
240 if (light < GL_LIGHT0 || light > GL_LIGHT7) {
241 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
242 "glGetLightxv(light=0x%x)", light);
252 case GL_SPOT_DIRECTION:
255 case GL_SPOT_EXPONENT:
257 case GL_CONSTANT_ATTENUATION:
258 case GL_LINEAR_ATTENUATION:
259 case GL_QUADRATIC_ATTENUATION:
263 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
264 "glGetLightxv(pname=0x%x)", pname);
268 _mesa_GetLightfv(light, pname, converted_params);
269 for (i = 0; i < n_params; i++) {
270 params[i] = (GLint) (converted_params[i] * 65536);
275 _es_GetMaterialxv(GLenum face, GLenum pname, GLfixed *params)
278 unsigned int n_params = 4;
279 GLfloat converted_params[4];
286 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
287 "glGetMaterialxv(face=0x%x)", face);
301 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
302 "glGetMaterialxv(pname=0x%x)", pname);
306 _mesa_GetMaterialfv(face, pname, converted_params);
307 for (i = 0; i < n_params; i++) {
308 params[i] = (GLint) (converted_params[i] * 65536);
313 _es_GetTexEnvxv(GLenum target, GLenum pname, GLfixed *params)
316 unsigned int n_params = 4;
317 GLfloat converted_params[4];
318 bool convert_params_value = true;
321 case GL_POINT_SPRITE:
322 if (pname != GL_COORD_REPLACE) {
323 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
324 "glGetTexEnvxv(target=0x%x)", target);
328 case GL_TEXTURE_FILTER_CONTROL_EXT:
329 if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
330 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
331 "glGetTexEnvxv(target=0x%x)", target);
336 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) {
337 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
338 "glGetTexEnvxv(target=0x%x)", target);
343 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
344 "glGetTexEnvxv(target=0x%x)", target);
348 case GL_COORD_REPLACE:
349 convert_params_value = false;
352 case GL_TEXTURE_LOD_BIAS_EXT:
355 case GL_TEXTURE_ENV_COLOR:
362 case GL_TEXTURE_ENV_MODE:
364 case GL_COMBINE_ALPHA:
371 case GL_OPERAND0_RGB:
372 case GL_OPERAND1_RGB:
373 case GL_OPERAND2_RGB:
374 case GL_OPERAND0_ALPHA:
375 case GL_OPERAND1_ALPHA:
376 case GL_OPERAND2_ALPHA:
377 convert_params_value = false;
381 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
382 "glGetTexEnvxv(pname=0x%x)", pname);
386 _mesa_GetTexEnvfv(target, pname, converted_params);
387 if (convert_params_value) {
388 for (i = 0; i < n_params; i++) {
389 params[i] = (GLint) (converted_params[i] * 65536);
392 for (i = 0; i < n_params; i++) {
393 params[i] = (GLfixed) converted_params[i];
399 _check_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params)
401 _mesa_GetTexGeniv(coord, pname, params);
405 _check_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
407 _mesa_GetTexGeniv(coord, pname, (GLint *) params);
411 _es_GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params)
414 unsigned int n_params = 4;
415 GLfloat converted_params[4];
416 bool convert_params_value = true;
420 case GL_TEXTURE_CUBE_MAP:
421 case GL_TEXTURE_EXTERNAL_OES:
424 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
425 "glGetTexParameterxv(target=0x%x)", target);
429 case GL_TEXTURE_WRAP_S:
430 case GL_TEXTURE_WRAP_T:
431 case GL_TEXTURE_MIN_FILTER:
432 case GL_TEXTURE_MAG_FILTER:
433 case GL_GENERATE_MIPMAP:
434 convert_params_value = false;
437 case GL_TEXTURE_CROP_RECT_OES:
441 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
442 "glGetTexParameterxv(pname=0x%x)", pname);
446 _mesa_GetTexParameterfv(target, pname, converted_params);
447 if (convert_params_value) {
448 for (i = 0; i < n_params; i++) {
449 params[i] = (GLint) (converted_params[i] * 65536);
452 for (i = 0; i < n_params; i++) {
453 params[i] = (GLfixed) converted_params[i];
459 _es_LightModelx(GLenum pname, GLfixed param)
461 _mesa_LightModelf(pname, (GLfloat) param);
465 _es_LightModelxv(GLenum pname, const GLfixed *params)
468 unsigned int n_params = 4;
469 GLfloat converted_params[4];
470 bool convert_params_value = true;
473 case GL_LIGHT_MODEL_AMBIENT:
476 case GL_LIGHT_MODEL_TWO_SIDE:
477 convert_params_value = false;
481 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
482 "glLightModelxv(pname=0x%x)", pname);
486 if (convert_params_value) {
487 for (i = 0; i < n_params; i++) {
488 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
491 for (i = 0; i < n_params; i++) {
492 converted_params[i] = (GLfloat) params[i];
496 _mesa_LightModelfv(pname, converted_params);
500 _es_Lightx(GLenum light, GLenum pname, GLfixed param)
502 _mesa_Lightf(light, pname, (GLfloat) (param / 65536.0f));
506 _es_Lightxv(GLenum light, GLenum pname, const GLfixed *params)
509 unsigned int n_params = 4;
510 GLfloat converted_params[4];
512 if (light < GL_LIGHT0 || light > GL_LIGHT7) {
513 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
514 "glLightxv(light=0x%x)", light);
524 case GL_SPOT_DIRECTION:
527 case GL_SPOT_EXPONENT:
529 case GL_CONSTANT_ATTENUATION:
530 case GL_LINEAR_ATTENUATION:
531 case GL_QUADRATIC_ATTENUATION:
535 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
536 "glLightxv(pname=0x%x)", pname);
540 for (i = 0; i < n_params; i++) {
541 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
544 _mesa_Lightfv(light, pname, converted_params);
548 _es_LineWidthx(GLfixed width)
550 _mesa_LineWidth((GLfloat) (width / 65536.0f));
554 _es_LoadMatrixx(const GLfixed *m)
557 GLfloat converted_m[16];
559 for (i = 0; i < Elements(converted_m); i++) {
560 converted_m[i] = (GLfloat) (m[i] / 65536.0f);
563 _mesa_LoadMatrixf(converted_m);
567 _es_Materialx(GLenum face, GLenum pname, GLfixed param)
569 if (face != GL_FRONT_AND_BACK) {
570 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
571 "glMaterialx(face=0x%x)", face);
575 if (pname != GL_SHININESS) {
576 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
577 "glMaterialx(pname=0x%x)", pname);
581 _es_Materialf(face, pname, (GLfloat) (param / 65536.0f));
585 _es_Materialxv(GLenum face, GLenum pname, const GLfixed *params)
588 unsigned int n_params = 4;
589 GLfloat converted_params[4];
591 if (face != GL_FRONT_AND_BACK) {
592 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
593 "glMaterialxv(face=0x%x)", face);
600 case GL_AMBIENT_AND_DIFFUSE:
609 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
610 "glMaterialxv(pname=0x%x)", pname);
614 for (i = 0; i < n_params; i++) {
615 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
618 _es_Materialfv(face, pname, converted_params);
622 _es_MultMatrixx(const GLfixed *m)
625 GLfloat converted_m[16];
627 for (i = 0; i < Elements(converted_m); i++) {
628 converted_m[i] = (GLfloat) (m[i] / 65536.0f);
631 _mesa_MultMatrixf(converted_m);
635 _es_MultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
637 _es_MultiTexCoord4f(texture,
638 (GLfloat) (s / 65536.0f),
639 (GLfloat) (t / 65536.0f),
640 (GLfloat) (r / 65536.0f),
641 (GLfloat) (q / 65536.0f));
645 _es_Normal3x(GLfixed nx, GLfixed ny, GLfixed nz)
647 _es_Normal3f((GLfloat) (nx / 65536.0f),
648 (GLfloat) (ny / 65536.0f),
649 (GLfloat) (nz / 65536.0f));
653 _es_Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
654 GLfloat zNear, GLfloat zFar)
656 _mesa_Ortho((GLdouble) (left),
665 _es_Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
666 GLfixed zNear, GLfixed zFar)
668 _mesa_Ortho((GLdouble) (left / 65536.0),
669 (GLdouble) (right / 65536.0),
670 (GLdouble) (bottom / 65536.0),
671 (GLdouble) (top / 65536.0),
672 (GLdouble) (zNear / 65536.0),
673 (GLdouble) (zFar / 65536.0));
677 _es_PointParameterx(GLenum pname, GLfixed param)
680 case GL_POINT_SIZE_MIN:
681 case GL_POINT_SIZE_MAX:
682 case GL_POINT_FADE_THRESHOLD_SIZE:
685 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
686 "glPointParameterx(pname=0x%x)", pname);
690 _mesa_PointParameterf(pname, (GLfloat) (param / 65536.0f));
694 _es_PointParameterxv(GLenum pname, const GLfixed *params)
697 unsigned int n_params = 3;
698 GLfloat converted_params[3];
701 case GL_POINT_SIZE_MIN:
702 case GL_POINT_SIZE_MAX:
703 case GL_POINT_FADE_THRESHOLD_SIZE:
706 case GL_POINT_DISTANCE_ATTENUATION:
710 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
711 "glPointParameterxv(pname=0x%x)", pname);
715 for (i = 0; i < n_params; i++) {
716 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
719 _mesa_PointParameterfv(pname, converted_params);
723 _es_PointSizex(GLfixed size)
725 _mesa_PointSize((GLfloat) (size / 65536.0f));
729 _es_PolygonOffsetx(GLfixed factor, GLfixed units)
731 _mesa_PolygonOffset((GLfloat) (factor / 65536.0f),
732 (GLfloat) (units / 65536.0f));
736 _es_Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
738 _mesa_Rotatef((GLfloat) (angle / 65536.0f),
739 (GLfloat) (x / 65536.0f),
740 (GLfloat) (y / 65536.0f),
741 (GLfloat) (z / 65536.0f));
745 _es_SampleCoveragex(GLclampx value, GLboolean invert)
747 _mesa_SampleCoverageARB((GLclampf) (value / 65536.0f),
752 _es_Scalex(GLfixed x, GLfixed y, GLfixed z)
754 _mesa_Scalef((GLfloat) (x / 65536.0f),
755 (GLfloat) (y / 65536.0f),
756 (GLfloat) (z / 65536.0f));
760 _es_TexEnvx(GLenum target, GLenum pname, GLfixed param)
762 GLfloat converted_param;
763 bool convert_param_value = true;
766 case GL_POINT_SPRITE:
767 if (pname != GL_COORD_REPLACE) {
768 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
769 "glTexEnvx(target=0x%x)", target);
773 case GL_TEXTURE_FILTER_CONTROL_EXT:
774 if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
775 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
776 "glTexEnvx(target=0x%x)", target);
781 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) {
782 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
783 "glTexEnvx(target=0x%x)", target);
788 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
789 "glTexEnvx(target=0x%x)", target);
793 case GL_COORD_REPLACE:
794 if (param != GL_TRUE && param != GL_FALSE) {
795 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
796 "glTexEnvx(pname=0x%x)", pname);
799 convert_param_value = false;
801 case GL_TEXTURE_LOD_BIAS_EXT:
803 case GL_TEXTURE_ENV_MODE:
804 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_DECAL && param != GL_BLEND && param != GL_ADD && param != GL_COMBINE) {
805 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
806 "glTexEnvx(pname=0x%x)", pname);
809 convert_param_value = false;
812 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) {
813 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
814 "glTexEnvx(pname=0x%x)", pname);
817 convert_param_value = false;
819 case GL_COMBINE_ALPHA:
820 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_ADD && param != GL_ADD_SIGNED && param != GL_INTERPOLATE && param != GL_SUBTRACT) {
821 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
822 "glTexEnvx(pname=0x%x)", pname);
825 convert_param_value = false;
836 convert_param_value = false;
838 case GL_OPERAND0_RGB:
839 case GL_OPERAND1_RGB:
840 case GL_OPERAND2_RGB:
841 if (param != GL_SRC_COLOR && param != GL_ONE_MINUS_SRC_COLOR && param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) {
842 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
843 "glTexEnvx(pname=0x%x)", pname);
846 convert_param_value = false;
848 case GL_OPERAND0_ALPHA:
849 case GL_OPERAND1_ALPHA:
850 case GL_OPERAND2_ALPHA:
851 if (param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) {
852 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
853 "glTexEnvx(pname=0x%x)", pname);
856 convert_param_value = false;
859 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
860 "glTexEnvx(pname=0x%x)", pname);
864 if (convert_param_value) {
865 converted_param = (GLfloat) (param / 65536.0f);
867 converted_param = (GLfloat) param;
870 _mesa_TexEnvf(target, pname, converted_param);
874 _es_TexEnvxv(GLenum target, GLenum pname, const GLfixed *params)
877 unsigned int n_params = 4;
878 GLfloat converted_params[4];
879 bool convert_params_value = true;
882 case GL_POINT_SPRITE:
883 if (pname != GL_COORD_REPLACE) {
884 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
885 "glTexEnvxv(target=0x%x)", target);
889 case GL_TEXTURE_FILTER_CONTROL_EXT:
890 if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
891 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
892 "glTexEnvxv(target=0x%x)", target);
897 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) {
898 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
899 "glTexEnvxv(target=0x%x)", target);
904 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
905 "glTexEnvxv(target=0x%x)", target);
909 case GL_COORD_REPLACE:
910 if (params[0] != GL_TRUE && params[0] != GL_FALSE) {
911 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
912 "glTexEnvxv(pname=0x%x)", pname);
915 convert_params_value = false;
918 case GL_TEXTURE_LOD_BIAS_EXT:
921 case GL_TEXTURE_ENV_MODE:
922 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) {
923 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
924 "glTexEnvxv(pname=0x%x)", pname);
927 convert_params_value = false;
931 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) {
932 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
933 "glTexEnvxv(pname=0x%x)", pname);
936 convert_params_value = false;
939 case GL_COMBINE_ALPHA:
940 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) {
941 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
942 "glTexEnvxv(pname=0x%x)", pname);
945 convert_params_value = false;
957 convert_params_value = false;
960 case GL_OPERAND0_RGB:
961 case GL_OPERAND1_RGB:
962 case GL_OPERAND2_RGB:
963 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) {
964 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
965 "glTexEnvxv(pname=0x%x)", pname);
968 convert_params_value = false;
971 case GL_OPERAND0_ALPHA:
972 case GL_OPERAND1_ALPHA:
973 case GL_OPERAND2_ALPHA:
974 if (params[0] != GL_SRC_ALPHA && params[0] != GL_ONE_MINUS_SRC_ALPHA) {
975 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
976 "glTexEnvxv(pname=0x%x)", pname);
979 convert_params_value = false;
982 case GL_TEXTURE_ENV_COLOR:
986 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
987 "glTexEnvxv(pname=0x%x)", pname);
991 if (convert_params_value) {
992 for (i = 0; i < n_params; i++) {
993 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
996 for (i = 0; i < n_params; i++) {
997 converted_params[i] = (GLfloat) params[i];
1001 _mesa_TexEnvfv(target, pname, converted_params);
1005 _check_TexGeniOES(GLenum coord, GLenum pname, GLint param)
1007 _es_TexGenf(coord, pname, (GLfloat) param);
1011 _check_TexGenivOES(GLenum coord, GLenum pname, const GLint *params)
1013 _es_TexGenf(coord, pname, (GLfloat) params[0]);
1017 _check_TexGenxOES(GLenum coord, GLenum pname, GLfixed param)
1019 _es_TexGenf(coord, pname, (GLfloat) param);
1023 _check_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params)
1025 _es_TexGenf(coord, pname, (GLfloat) params[0]);
1029 _es_TexParameterx(GLenum target, GLenum pname, GLfixed param)
1031 if (pname == GL_TEXTURE_MAX_ANISOTROPY_EXT) {
1032 _mesa_TexParameterf(target, pname, (GLfloat) (param / 65536.0f));
1034 _mesa_TexParameterf(target, pname, (GLfloat) param);
1039 _es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params)
1042 unsigned int n_params = 4;
1043 GLfloat converted_params[4];
1044 bool convert_params_value = true;
1048 case GL_TEXTURE_CUBE_MAP:
1049 case GL_TEXTURE_EXTERNAL_OES:
1052 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1053 "glTexParameterxv(target=0x%x)", target);
1057 case GL_TEXTURE_WRAP_S:
1058 case GL_TEXTURE_WRAP_T:
1059 convert_params_value = false;
1062 case GL_TEXTURE_MIN_FILTER:
1063 case GL_TEXTURE_MAG_FILTER:
1064 case GL_GENERATE_MIPMAP:
1065 convert_params_value = false;
1068 case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1071 case GL_TEXTURE_CROP_RECT_OES:
1075 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1076 "glTexParameterxv(pname=0x%x)", pname);
1080 if (convert_params_value) {
1081 for (i = 0; i < n_params; i++) {
1082 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
1085 for (i = 0; i < n_params; i++) {
1086 converted_params[i] = (GLfloat) params[i];
1090 _mesa_TexParameterfv(target, pname, converted_params);
1094 _es_Translatex(GLfixed x, GLfixed y, GLfixed z)
1096 _mesa_Translatef((GLfloat) (x / 65536.0f),
1097 (GLfloat) (y / 65536.0f),
1098 (GLfloat) (z / 65536.0f));
1101 #endif /* FEATURE_ES1 */