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 bool convert_param_value = true;
141 if (param != GL_EXP && param != GL_EXP2 && param != GL_LINEAR) {
142 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
143 "glFogx(pname=0x%x)", pname);
146 convert_param_value = false;
153 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
154 "glFogx(pname=0x%x)", pname);
158 if (convert_param_value) {
159 _mesa_Fogf(pname, (GLfloat) (param / 65536.0f));
161 _mesa_Fogf(pname, (GLfloat) param);
167 _es_Fogxv(GLenum pname, const GLfixed *params)
170 unsigned int n_params = 4;
171 GLfloat converted_params[4];
172 bool convert_params_value = true;
176 if (params[0] != GL_EXP && params[0] != GL_EXP2 && params[0] != GL_LINEAR) {
177 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
178 "glFogxv(pname=0x%x)", pname);
181 convert_params_value = false;
193 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
194 "glFogxv(pname=0x%x)", pname);
198 if (convert_params_value) {
199 for (i = 0; i < n_params; i++) {
200 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
203 for (i = 0; i < n_params; i++) {
204 converted_params[i] = (GLfloat) params[i];
208 _mesa_Fogfv(pname, converted_params);
212 _es_Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
213 GLfloat zNear, GLfloat zFar)
215 _mesa_Frustum((GLdouble) (left),
224 _es_Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
225 GLfixed zNear, GLfixed zFar)
227 _mesa_Frustum((GLdouble) (left / 65536.0),
228 (GLdouble) (right / 65536.0),
229 (GLdouble) (bottom / 65536.0),
230 (GLdouble) (top / 65536.0),
231 (GLdouble) (zNear / 65536.0),
232 (GLdouble) (zFar / 65536.0));
236 _es_GetClipPlanef(GLenum plane, GLfloat *equation)
239 GLdouble converted_equation[4];
241 _mesa_GetClipPlane(plane, converted_equation);
242 for (i = 0; i < Elements(converted_equation); i++) {
243 equation[i] = (GLfloat) (converted_equation[i]);
248 _es_GetClipPlanex(GLenum plane, GLfixed *equation)
251 GLdouble converted_equation[4];
253 _mesa_GetClipPlane(plane, converted_equation);
254 for (i = 0; i < Elements(converted_equation); i++) {
255 equation[i] = (GLfixed) (converted_equation[i] * 65536);
260 _es_GetLightxv(GLenum light, GLenum pname, GLfixed *params)
263 unsigned int n_params = 4;
264 GLfloat converted_params[4];
266 if (light < GL_LIGHT0 || light > GL_LIGHT7) {
267 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
268 "glGetLightxv(light=0x%x)", light);
278 case GL_SPOT_DIRECTION:
281 case GL_SPOT_EXPONENT:
283 case GL_CONSTANT_ATTENUATION:
284 case GL_LINEAR_ATTENUATION:
285 case GL_QUADRATIC_ATTENUATION:
289 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
290 "glGetLightxv(pname=0x%x)", pname);
294 _mesa_GetLightfv(light, pname, converted_params);
295 for (i = 0; i < n_params; i++) {
296 params[i] = (GLint) (converted_params[i] * 65536);
301 _es_GetMaterialxv(GLenum face, GLenum pname, GLfixed *params)
304 unsigned int n_params = 4;
305 GLfloat converted_params[4];
312 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
313 "glGetMaterialxv(face=0x%x)", face);
322 case GL_AMBIENT_AND_DIFFUSE:
328 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
329 "glGetMaterialxv(pname=0x%x)", pname);
333 _mesa_GetMaterialfv(face, pname, converted_params);
334 for (i = 0; i < n_params; i++) {
335 params[i] = (GLint) (converted_params[i] * 65536);
340 _es_GetTexEnvxv(GLenum target, GLenum pname, GLfixed *params)
343 unsigned int n_params = 4;
344 GLfloat converted_params[4];
345 bool convert_params_value = true;
348 case GL_POINT_SPRITE:
349 if (pname != GL_COORD_REPLACE) {
350 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
351 "glGetTexEnvxv(target=0x%x)", target);
355 case GL_TEXTURE_FILTER_CONTROL_EXT:
356 if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
357 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
358 "glGetTexEnvxv(target=0x%x)", target);
363 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) {
364 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
365 "glGetTexEnvxv(target=0x%x)", target);
370 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
371 "glGetTexEnvxv(target=0x%x)", target);
375 case GL_COORD_REPLACE:
376 convert_params_value = false;
379 case GL_TEXTURE_LOD_BIAS_EXT:
382 case GL_TEXTURE_ENV_COLOR:
389 case GL_TEXTURE_ENV_MODE:
391 case GL_COMBINE_ALPHA:
398 case GL_OPERAND0_RGB:
399 case GL_OPERAND1_RGB:
400 case GL_OPERAND2_RGB:
401 case GL_OPERAND0_ALPHA:
402 case GL_OPERAND1_ALPHA:
403 case GL_OPERAND2_ALPHA:
404 convert_params_value = false;
408 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
409 "glGetTexEnvxv(pname=0x%x)", pname);
413 _mesa_GetTexEnvfv(target, pname, converted_params);
414 if (convert_params_value) {
415 for (i = 0; i < n_params; i++) {
416 params[i] = (GLint) (converted_params[i] * 65536);
419 for (i = 0; i < n_params; i++) {
420 params[i] = (GLfixed) converted_params[i];
426 _check_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params)
429 unsigned int n_params = 1;
430 GLfloat converted_params[1];
433 case GL_TEXTURE_GEN_STR_OES:
436 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
437 "glGetTexGenivOES(coord=0x%x)", coord);
441 case GL_TEXTURE_GEN_MODE:
445 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
446 "glGetTexGenivOES(pname=0x%x)", pname);
450 _es_GetTexGenfv(coord, pname, converted_params);
451 for (i = 0; i < n_params; i++) {
452 params[i] = (GLfloat) converted_params[i];
457 _check_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
460 unsigned int n_params = 1;
461 GLfloat converted_params[1];
464 case GL_TEXTURE_GEN_STR_OES:
467 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
468 "glGetTexGenxvOES(coord=0x%x)", coord);
472 case GL_TEXTURE_GEN_MODE:
476 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
477 "glGetTexGenxvOES(pname=0x%x)", pname);
481 _es_GetTexGenfv(coord, pname, converted_params);
482 for (i = 0; i < n_params; i++) {
483 params[i] = (GLfloat) converted_params[i];
488 _es_GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params)
491 unsigned int n_params = 4;
492 GLfloat converted_params[4];
493 bool convert_params_value = true;
497 case GL_TEXTURE_CUBE_MAP:
498 case GL_TEXTURE_EXTERNAL_OES:
501 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
502 "glGetTexParameterxv(target=0x%x)", target);
506 case GL_TEXTURE_WRAP_S:
507 case GL_TEXTURE_WRAP_T:
508 case GL_TEXTURE_MIN_FILTER:
509 case GL_TEXTURE_MAG_FILTER:
510 case GL_GENERATE_MIPMAP:
511 convert_params_value = false;
514 case GL_TEXTURE_CROP_RECT_OES:
518 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
519 "glGetTexParameterxv(pname=0x%x)", pname);
523 _mesa_GetTexParameterfv(target, pname, converted_params);
524 if (convert_params_value) {
525 for (i = 0; i < n_params; i++) {
526 params[i] = (GLint) (converted_params[i] * 65536);
529 for (i = 0; i < n_params; i++) {
530 params[i] = (GLfixed) converted_params[i];
536 _es_LightModelx(GLenum pname, GLfixed param)
539 case GL_LIGHT_MODEL_TWO_SIDE:
540 if (param != GL_TRUE && param != GL_FALSE) {
541 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
542 "glLightModelx(pname=0x%x)", pname);
547 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
548 "glLightModelx(pname=0x%x)", pname);
552 _mesa_LightModelf(pname, (GLfloat) param);
556 _es_LightModelxv(GLenum pname, const GLfixed *params)
559 unsigned int n_params = 4;
560 GLfloat converted_params[4];
561 bool convert_params_value = true;
564 case GL_LIGHT_MODEL_AMBIENT:
567 case GL_LIGHT_MODEL_TWO_SIDE:
568 if (params[0] != GL_TRUE && params[0] != GL_FALSE) {
569 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
570 "glLightModelxv(pname=0x%x)", pname);
573 convert_params_value = false;
577 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
578 "glLightModelxv(pname=0x%x)", pname);
582 if (convert_params_value) {
583 for (i = 0; i < n_params; i++) {
584 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
587 for (i = 0; i < n_params; i++) {
588 converted_params[i] = (GLfloat) params[i];
592 _mesa_LightModelfv(pname, converted_params);
596 _es_Lightx(GLenum light, GLenum pname, GLfixed param)
598 _mesa_Lightf(light, pname, (GLfloat) (param / 65536.0f));
602 _es_Lightxv(GLenum light, GLenum pname, const GLfixed *params)
605 unsigned int n_params = 4;
606 GLfloat converted_params[4];
608 if (light < GL_LIGHT0 || light > GL_LIGHT7) {
609 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
610 "glLightxv(light=0x%x)", light);
620 case GL_SPOT_DIRECTION:
623 case GL_SPOT_EXPONENT:
625 case GL_CONSTANT_ATTENUATION:
626 case GL_LINEAR_ATTENUATION:
627 case GL_QUADRATIC_ATTENUATION:
631 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
632 "glLightxv(pname=0x%x)", pname);
636 for (i = 0; i < n_params; i++) {
637 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
640 _mesa_Lightfv(light, pname, converted_params);
644 _es_LineWidthx(GLfixed width)
646 _mesa_LineWidth((GLfloat) (width / 65536.0f));
650 _es_LoadMatrixx(const GLfixed *m)
653 GLfloat converted_m[16];
655 for (i = 0; i < Elements(converted_m); i++) {
656 converted_m[i] = (GLfloat) (m[i] / 65536.0f);
659 _mesa_LoadMatrixf(converted_m);
663 _es_Materialx(GLenum face, GLenum pname, GLfixed param)
666 case GL_FRONT_AND_BACK:
669 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
670 "glMaterialx(face=0x%x)", face);
677 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
678 "glMaterialx(pname=0x%x)", pname);
682 _es_Materialf(face, pname, (GLfloat) (param / 65536.0f));
686 _es_Materialxv(GLenum face, GLenum pname, const GLfixed *params)
689 unsigned int n_params = 4;
690 GLfloat converted_params[4];
693 case GL_FRONT_AND_BACK:
696 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
697 "glMaterialxv(face=0x%x)", face);
703 case GL_AMBIENT_AND_DIFFUSE:
712 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
713 "glMaterialxv(pname=0x%x)", pname);
717 for (i = 0; i < n_params; i++) {
718 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
721 _es_Materialfv(face, pname, converted_params);
725 _es_MultMatrixx(const GLfixed *m)
728 GLfloat converted_m[16];
730 for (i = 0; i < Elements(converted_m); i++) {
731 converted_m[i] = (GLfloat) (m[i] / 65536.0f);
734 _mesa_MultMatrixf(converted_m);
738 _es_MultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
740 _es_MultiTexCoord4f(texture,
741 (GLfloat) (s / 65536.0f),
742 (GLfloat) (t / 65536.0f),
743 (GLfloat) (r / 65536.0f),
744 (GLfloat) (q / 65536.0f));
748 _es_Normal3x(GLfixed nx, GLfixed ny, GLfixed nz)
750 _es_Normal3f((GLfloat) (nx / 65536.0f),
751 (GLfloat) (ny / 65536.0f),
752 (GLfloat) (nz / 65536.0f));
756 _es_Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
757 GLfloat zNear, GLfloat zFar)
759 _mesa_Ortho((GLdouble) (left),
768 _es_Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
769 GLfixed zNear, GLfixed zFar)
771 _mesa_Ortho((GLdouble) (left / 65536.0),
772 (GLdouble) (right / 65536.0),
773 (GLdouble) (bottom / 65536.0),
774 (GLdouble) (top / 65536.0),
775 (GLdouble) (zNear / 65536.0),
776 (GLdouble) (zFar / 65536.0));
780 _es_PointParameterx(GLenum pname, GLfixed param)
783 case GL_POINT_SIZE_MIN:
784 case GL_POINT_SIZE_MAX:
785 case GL_POINT_FADE_THRESHOLD_SIZE:
788 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
789 "glPointParameterx(pname=0x%x)", pname);
793 _mesa_PointParameterf(pname, (GLfloat) (param / 65536.0f));
797 _es_PointParameterxv(GLenum pname, const GLfixed *params)
800 unsigned int n_params = 3;
801 GLfloat converted_params[3];
804 case GL_POINT_SIZE_MIN:
805 case GL_POINT_SIZE_MAX:
806 case GL_POINT_FADE_THRESHOLD_SIZE:
809 case GL_POINT_DISTANCE_ATTENUATION:
813 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
814 "glPointParameterxv(pname=0x%x)", pname);
818 for (i = 0; i < n_params; i++) {
819 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
822 _mesa_PointParameterfv(pname, converted_params);
826 _es_PointSizex(GLfixed size)
828 _mesa_PointSize((GLfloat) (size / 65536.0f));
832 _es_PolygonOffsetx(GLfixed factor, GLfixed units)
834 _mesa_PolygonOffset((GLfloat) (factor / 65536.0f),
835 (GLfloat) (units / 65536.0f));
839 _es_Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
841 _mesa_Rotatef((GLfloat) (angle / 65536.0f),
842 (GLfloat) (x / 65536.0f),
843 (GLfloat) (y / 65536.0f),
844 (GLfloat) (z / 65536.0f));
848 _es_SampleCoveragex(GLclampx value, GLboolean invert)
850 _mesa_SampleCoverageARB((GLclampf) (value / 65536.0f),
855 _es_Scalex(GLfixed x, GLfixed y, GLfixed z)
857 _mesa_Scalef((GLfloat) (x / 65536.0f),
858 (GLfloat) (y / 65536.0f),
859 (GLfloat) (z / 65536.0f));
863 _es_TexEnvx(GLenum target, GLenum pname, GLfixed param)
865 GLfloat converted_param;
866 bool convert_param_value = true;
869 case GL_POINT_SPRITE:
870 if (pname != GL_COORD_REPLACE) {
871 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
872 "glTexEnvx(target=0x%x)", target);
876 case GL_TEXTURE_FILTER_CONTROL_EXT:
877 if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
878 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
879 "glTexEnvx(target=0x%x)", target);
884 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) {
885 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
886 "glTexEnvx(target=0x%x)", target);
891 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
892 "glTexEnvx(target=0x%x)", target);
896 case GL_COORD_REPLACE:
897 if (param != GL_TRUE && param != GL_FALSE) {
898 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
899 "glTexEnvx(pname=0x%x)", pname);
902 convert_param_value = false;
904 case GL_TEXTURE_LOD_BIAS_EXT:
906 case GL_TEXTURE_ENV_MODE:
907 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_DECAL && param != GL_BLEND && param != GL_ADD && param != GL_COMBINE) {
908 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
909 "glTexEnvx(pname=0x%x)", pname);
912 convert_param_value = false;
915 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) {
916 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
917 "glTexEnvx(pname=0x%x)", pname);
920 convert_param_value = false;
922 case GL_COMBINE_ALPHA:
923 if (param != GL_REPLACE && param != GL_MODULATE && param != GL_ADD && param != GL_ADD_SIGNED && param != GL_INTERPOLATE && param != GL_SUBTRACT) {
924 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
925 "glTexEnvx(pname=0x%x)", pname);
928 convert_param_value = false;
939 convert_param_value = false;
941 case GL_OPERAND0_RGB:
942 case GL_OPERAND1_RGB:
943 case GL_OPERAND2_RGB:
944 if (param != GL_SRC_COLOR && param != GL_ONE_MINUS_SRC_COLOR && param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) {
945 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
946 "glTexEnvx(pname=0x%x)", pname);
949 convert_param_value = false;
951 case GL_OPERAND0_ALPHA:
952 case GL_OPERAND1_ALPHA:
953 case GL_OPERAND2_ALPHA:
954 if (param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) {
955 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
956 "glTexEnvx(pname=0x%x)", pname);
959 convert_param_value = false;
962 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
963 "glTexEnvx(pname=0x%x)", pname);
967 if (convert_param_value) {
968 converted_param = (GLfloat) (param / 65536.0f);
970 converted_param = (GLfloat) param;
973 _mesa_TexEnvf(target, pname, converted_param);
977 _es_TexEnvxv(GLenum target, GLenum pname, const GLfixed *params)
980 unsigned int n_params = 4;
981 GLfloat converted_params[4];
982 bool convert_params_value = true;
985 case GL_POINT_SPRITE:
986 if (pname != GL_COORD_REPLACE) {
987 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
988 "glTexEnvxv(target=0x%x)", target);
992 case GL_TEXTURE_FILTER_CONTROL_EXT:
993 if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
994 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
995 "glTexEnvxv(target=0x%x)", target);
1000 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) {
1001 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1002 "glTexEnvxv(target=0x%x)", target);
1007 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1008 "glTexEnvxv(target=0x%x)", target);
1012 case GL_COORD_REPLACE:
1013 if (params[0] != GL_TRUE && params[0] != GL_FALSE) {
1014 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1015 "glTexEnvxv(pname=0x%x)", pname);
1018 convert_params_value = false;
1021 case GL_TEXTURE_LOD_BIAS_EXT:
1024 case GL_TEXTURE_ENV_MODE:
1025 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) {
1026 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1027 "glTexEnvxv(pname=0x%x)", pname);
1030 convert_params_value = false;
1033 case GL_COMBINE_RGB:
1034 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) {
1035 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1036 "glTexEnvxv(pname=0x%x)", pname);
1039 convert_params_value = false;
1042 case GL_COMBINE_ALPHA:
1043 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) {
1044 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1045 "glTexEnvxv(pname=0x%x)", pname);
1048 convert_params_value = false;
1052 case GL_ALPHA_SCALE:
1060 convert_params_value = false;
1063 case GL_OPERAND0_RGB:
1064 case GL_OPERAND1_RGB:
1065 case GL_OPERAND2_RGB:
1066 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) {
1067 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1068 "glTexEnvxv(pname=0x%x)", pname);
1071 convert_params_value = false;
1074 case GL_OPERAND0_ALPHA:
1075 case GL_OPERAND1_ALPHA:
1076 case GL_OPERAND2_ALPHA:
1077 if (params[0] != GL_SRC_ALPHA && params[0] != GL_ONE_MINUS_SRC_ALPHA) {
1078 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1079 "glTexEnvxv(pname=0x%x)", pname);
1082 convert_params_value = false;
1085 case GL_TEXTURE_ENV_COLOR:
1089 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1090 "glTexEnvxv(pname=0x%x)", pname);
1094 if (convert_params_value) {
1095 for (i = 0; i < n_params; i++) {
1096 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
1099 for (i = 0; i < n_params; i++) {
1100 converted_params[i] = (GLfloat) params[i];
1104 _mesa_TexEnvfv(target, pname, converted_params);
1108 _check_TexGeniOES(GLenum coord, GLenum pname, GLint param)
1111 case GL_TEXTURE_GEN_STR_OES:
1114 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1115 "glTexGeniOES(coord=0x%x)", coord);
1119 case GL_TEXTURE_GEN_MODE:
1120 if (param != GL_NORMAL_MAP && param != GL_REFLECTION_MAP) {
1121 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1122 "glTexGeniOES(pname=0x%x)", pname);
1127 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1128 "glTexGeniOES(pname=0x%x)", pname);
1132 _es_TexGenf(coord, pname, (GLfloat) param);
1136 _check_TexGenivOES(GLenum coord, GLenum pname, const GLint *params)
1139 unsigned int n_params = 1;
1140 GLfloat converted_params[1];
1143 case GL_TEXTURE_GEN_STR_OES:
1146 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1147 "glTexGenivOES(coord=0x%x)", coord);
1151 case GL_TEXTURE_GEN_MODE:
1152 if (params[0] != GL_NORMAL_MAP && params[0] != GL_REFLECTION_MAP) {
1153 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1154 "glTexGenivOES(pname=0x%x)", pname);
1160 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1161 "glTexGenivOES(pname=0x%x)", pname);
1165 for (i = 0; i < n_params; i++) {
1166 converted_params[i] = (GLfloat) params[i];
1169 _es_TexGenfv(coord, pname, converted_params);
1173 _check_TexGenxOES(GLenum coord, GLenum pname, GLfixed param)
1176 case GL_TEXTURE_GEN_STR_OES:
1179 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1180 "glTexGenxOES(coord=0x%x)", coord);
1184 case GL_TEXTURE_GEN_MODE:
1185 if (param != GL_NORMAL_MAP && param != GL_REFLECTION_MAP) {
1186 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1187 "glTexGenxOES(pname=0x%x)", pname);
1192 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1193 "glTexGenxOES(pname=0x%x)", pname);
1197 _es_TexGenf(coord, pname, (GLfloat) param);
1201 _check_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params)
1204 unsigned int n_params = 1;
1205 GLfloat converted_params[1];
1208 case GL_TEXTURE_GEN_STR_OES:
1211 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1212 "glTexGenxvOES(coord=0x%x)", coord);
1216 case GL_TEXTURE_GEN_MODE:
1217 if (params[0] != GL_NORMAL_MAP && params[0] != GL_REFLECTION_MAP) {
1218 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1219 "glTexGenxvOES(pname=0x%x)", pname);
1225 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1226 "glTexGenxvOES(pname=0x%x)", pname);
1230 for (i = 0; i < n_params; i++) {
1231 converted_params[i] = (GLfloat) params[i];
1234 _es_TexGenfv(coord, pname, converted_params);
1238 _es_TexParameterx(GLenum target, GLenum pname, GLfixed param)
1240 GLfloat converted_param;
1241 bool convert_param_value = true;
1245 case GL_TEXTURE_CUBE_MAP:
1246 case GL_TEXTURE_EXTERNAL_OES:
1249 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1250 "glTexParameterx(target=0x%x)", target);
1254 case GL_TEXTURE_WRAP_S:
1255 case GL_TEXTURE_WRAP_T:
1256 if (param != GL_CLAMP_TO_EDGE && param != GL_REPEAT && param != GL_MIRRORED_REPEAT) {
1257 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1258 "glTexParameterx(pname=0x%x)", pname);
1261 convert_param_value = false;
1263 case GL_TEXTURE_MIN_FILTER:
1264 case GL_TEXTURE_MAG_FILTER:
1265 convert_param_value = false;
1267 case GL_GENERATE_MIPMAP:
1268 if (param != GL_TRUE && param != GL_FALSE) {
1269 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1270 "glTexParameterx(pname=0x%x)", pname);
1273 convert_param_value = false;
1275 case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1278 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1279 "glTexParameterx(pname=0x%x)", pname);
1283 if (convert_param_value) {
1284 converted_param = (GLfloat) (param / 65536.0f);
1286 converted_param = (GLfloat) param;
1289 _mesa_TexParameterf(target, pname, converted_param);
1293 _es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params)
1296 unsigned int n_params = 4;
1297 GLfloat converted_params[4];
1298 bool convert_params_value = true;
1302 case GL_TEXTURE_CUBE_MAP:
1303 case GL_TEXTURE_EXTERNAL_OES:
1306 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1307 "glTexParameterxv(target=0x%x)", target);
1311 case GL_TEXTURE_WRAP_S:
1312 case GL_TEXTURE_WRAP_T:
1313 if (params[0] != GL_CLAMP_TO_EDGE && params[0] != GL_REPEAT && params[0] != GL_MIRRORED_REPEAT) {
1314 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1315 "glTexParameterxv(pname=0x%x)", pname);
1318 convert_params_value = false;
1321 case GL_TEXTURE_MIN_FILTER:
1322 case GL_TEXTURE_MAG_FILTER:
1323 convert_params_value = false;
1326 case GL_GENERATE_MIPMAP:
1327 if (params[0] != GL_TRUE && params[0] != GL_FALSE) {
1328 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1329 "glTexParameterxv(pname=0x%x)", pname);
1332 convert_params_value = false;
1335 case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1338 case GL_TEXTURE_CROP_RECT_OES:
1342 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1343 "glTexParameterxv(pname=0x%x)", pname);
1347 if (convert_params_value) {
1348 for (i = 0; i < n_params; i++) {
1349 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
1352 for (i = 0; i < n_params; i++) {
1353 converted_params[i] = (GLfloat) params[i];
1357 _mesa_TexParameterfv(target, pname, converted_params);
1361 _es_Translatex(GLfixed x, GLfixed y, GLfixed z)
1363 _mesa_Translatef((GLfloat) (x / 65536.0f),
1364 (GLfloat) (y / 65536.0f),
1365 (GLfloat) (z / 65536.0f));
1368 #endif /* FEATURE_ES1 */