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 convert_param_value
= false;
1258 case GL_TEXTURE_MIN_FILTER
:
1259 case GL_TEXTURE_MAG_FILTER
:
1260 convert_param_value
= false;
1262 case GL_GENERATE_MIPMAP
:
1263 if (param
!= GL_TRUE
&& param
!= GL_FALSE
) {
1264 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1265 "glTexParameterx(pname=0x%x)", pname
);
1268 convert_param_value
= false;
1270 case GL_TEXTURE_MAX_ANISOTROPY_EXT
:
1273 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1274 "glTexParameterx(pname=0x%x)", pname
);
1278 if (convert_param_value
) {
1279 converted_param
= (GLfloat
) (param
/ 65536.0f
);
1281 converted_param
= (GLfloat
) param
;
1284 _mesa_TexParameterf(target
, pname
, converted_param
);
1288 _es_TexParameterxv(GLenum target
, GLenum pname
, const GLfixed
*params
)
1291 unsigned int n_params
= 4;
1292 GLfloat converted_params
[4];
1293 bool convert_params_value
= true;
1297 case GL_TEXTURE_CUBE_MAP
:
1298 case GL_TEXTURE_EXTERNAL_OES
:
1301 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1302 "glTexParameterxv(target=0x%x)", target
);
1306 case GL_TEXTURE_WRAP_S
:
1307 case GL_TEXTURE_WRAP_T
:
1308 convert_params_value
= false;
1311 case GL_TEXTURE_MIN_FILTER
:
1312 case GL_TEXTURE_MAG_FILTER
:
1313 convert_params_value
= false;
1316 case GL_GENERATE_MIPMAP
:
1317 if (params
[0] != GL_TRUE
&& params
[0] != GL_FALSE
) {
1318 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1319 "glTexParameterxv(pname=0x%x)", pname
);
1322 convert_params_value
= false;
1325 case GL_TEXTURE_MAX_ANISOTROPY_EXT
:
1328 case GL_TEXTURE_CROP_RECT_OES
:
1332 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1333 "glTexParameterxv(pname=0x%x)", pname
);
1337 if (convert_params_value
) {
1338 for (i
= 0; i
< n_params
; i
++) {
1339 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
1342 for (i
= 0; i
< n_params
; i
++) {
1343 converted_params
[i
] = (GLfloat
) params
[i
];
1347 _mesa_TexParameterfv(target
, pname
, converted_params
);
1351 _es_Translatex(GLfixed x
, GLfixed y
, GLfixed z
)
1353 _mesa_Translatef((GLfloat
) (x
/ 65536.0f
),
1354 (GLfloat
) (y
/ 65536.0f
),
1355 (GLfloat
) (z
/ 65536.0f
));
1358 #endif /* FEATURE_ES1 */