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
);
296 case GL_AMBIENT_AND_DIFFUSE
:
302 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
303 "glGetMaterialxv(pname=0x%x)", pname
);
307 _mesa_GetMaterialfv(face
, pname
, converted_params
);
308 for (i
= 0; i
< n_params
; i
++) {
309 params
[i
] = (GLint
) (converted_params
[i
] * 65536);
314 _es_GetTexEnvxv(GLenum target
, GLenum pname
, GLfixed
*params
)
317 unsigned int n_params
= 4;
318 GLfloat converted_params
[4];
319 bool convert_params_value
= true;
322 case GL_POINT_SPRITE
:
323 if (pname
!= GL_COORD_REPLACE
) {
324 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
325 "glGetTexEnvxv(target=0x%x)", target
);
329 case GL_TEXTURE_FILTER_CONTROL_EXT
:
330 if (pname
!= GL_TEXTURE_LOD_BIAS_EXT
) {
331 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
332 "glGetTexEnvxv(target=0x%x)", target
);
337 if (pname
!= GL_TEXTURE_ENV_COLOR
&& pname
!= GL_RGB_SCALE
&& pname
!= GL_ALPHA_SCALE
&& pname
!= GL_TEXTURE_ENV_MODE
&& pname
!= GL_COMBINE_RGB
&& pname
!= GL_COMBINE_ALPHA
&& pname
!= GL_SRC0_RGB
&& pname
!= GL_SRC1_RGB
&& pname
!= GL_SRC2_RGB
&& pname
!= GL_SRC0_ALPHA
&& pname
!= GL_SRC1_ALPHA
&& pname
!= GL_SRC2_ALPHA
&& pname
!= GL_OPERAND0_RGB
&& pname
!= GL_OPERAND1_RGB
&& pname
!= GL_OPERAND2_RGB
&& pname
!= GL_OPERAND0_ALPHA
&& pname
!= GL_OPERAND1_ALPHA
&& pname
!= GL_OPERAND2_ALPHA
) {
338 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
339 "glGetTexEnvxv(target=0x%x)", target
);
344 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
345 "glGetTexEnvxv(target=0x%x)", target
);
349 case GL_COORD_REPLACE
:
350 convert_params_value
= false;
353 case GL_TEXTURE_LOD_BIAS_EXT
:
356 case GL_TEXTURE_ENV_COLOR
:
363 case GL_TEXTURE_ENV_MODE
:
365 case GL_COMBINE_ALPHA
:
372 case GL_OPERAND0_RGB
:
373 case GL_OPERAND1_RGB
:
374 case GL_OPERAND2_RGB
:
375 case GL_OPERAND0_ALPHA
:
376 case GL_OPERAND1_ALPHA
:
377 case GL_OPERAND2_ALPHA
:
378 convert_params_value
= false;
382 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
383 "glGetTexEnvxv(pname=0x%x)", pname
);
387 _mesa_GetTexEnvfv(target
, pname
, converted_params
);
388 if (convert_params_value
) {
389 for (i
= 0; i
< n_params
; i
++) {
390 params
[i
] = (GLint
) (converted_params
[i
] * 65536);
393 for (i
= 0; i
< n_params
; i
++) {
394 params
[i
] = (GLfixed
) converted_params
[i
];
400 _check_GetTexGenivOES(GLenum coord
, GLenum pname
, GLint
*params
)
403 unsigned int n_params
= 1;
404 GLfloat converted_params
[1];
407 case GL_TEXTURE_GEN_STR_OES
:
410 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
411 "glGetTexGenivOES(coord=0x%x)", coord
);
415 case GL_TEXTURE_GEN_MODE
:
419 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
420 "glGetTexGenivOES(pname=0x%x)", pname
);
424 _es_GetTexGenfv(coord
, pname
, converted_params
);
425 for (i
= 0; i
< n_params
; i
++) {
426 params
[i
] = (GLfloat
) converted_params
[i
];
431 _check_GetTexGenxvOES(GLenum coord
, GLenum pname
, GLfixed
*params
)
434 unsigned int n_params
= 1;
435 GLfloat converted_params
[1];
438 case GL_TEXTURE_GEN_STR_OES
:
441 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
442 "glGetTexGenxvOES(coord=0x%x)", coord
);
446 case GL_TEXTURE_GEN_MODE
:
450 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
451 "glGetTexGenxvOES(pname=0x%x)", pname
);
455 _es_GetTexGenfv(coord
, pname
, converted_params
);
456 for (i
= 0; i
< n_params
; i
++) {
457 params
[i
] = (GLfloat
) converted_params
[i
];
462 _es_GetTexParameterxv(GLenum target
, GLenum pname
, GLfixed
*params
)
465 unsigned int n_params
= 4;
466 GLfloat converted_params
[4];
467 bool convert_params_value
= true;
471 case GL_TEXTURE_CUBE_MAP
:
472 case GL_TEXTURE_EXTERNAL_OES
:
475 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
476 "glGetTexParameterxv(target=0x%x)", target
);
480 case GL_TEXTURE_WRAP_S
:
481 case GL_TEXTURE_WRAP_T
:
482 case GL_TEXTURE_MIN_FILTER
:
483 case GL_TEXTURE_MAG_FILTER
:
484 case GL_GENERATE_MIPMAP
:
485 convert_params_value
= false;
488 case GL_TEXTURE_CROP_RECT_OES
:
492 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
493 "glGetTexParameterxv(pname=0x%x)", pname
);
497 _mesa_GetTexParameterfv(target
, pname
, converted_params
);
498 if (convert_params_value
) {
499 for (i
= 0; i
< n_params
; i
++) {
500 params
[i
] = (GLint
) (converted_params
[i
] * 65536);
503 for (i
= 0; i
< n_params
; i
++) {
504 params
[i
] = (GLfixed
) converted_params
[i
];
510 _es_LightModelx(GLenum pname
, GLfixed param
)
513 case GL_LIGHT_MODEL_TWO_SIDE
:
514 if (param
!= GL_TRUE
&& param
!= GL_FALSE
) {
515 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
516 "glLightModelx(pname=0x%x)", pname
);
521 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
522 "glLightModelx(pname=0x%x)", pname
);
526 _mesa_LightModelf(pname
, (GLfloat
) param
);
530 _es_LightModelxv(GLenum pname
, const GLfixed
*params
)
533 unsigned int n_params
= 4;
534 GLfloat converted_params
[4];
535 bool convert_params_value
= true;
538 case GL_LIGHT_MODEL_AMBIENT
:
541 case GL_LIGHT_MODEL_TWO_SIDE
:
542 if (params
[0] != GL_TRUE
&& params
[0] != GL_FALSE
) {
543 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
544 "glLightModelxv(pname=0x%x)", pname
);
547 convert_params_value
= false;
551 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
552 "glLightModelxv(pname=0x%x)", pname
);
556 if (convert_params_value
) {
557 for (i
= 0; i
< n_params
; i
++) {
558 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
561 for (i
= 0; i
< n_params
; i
++) {
562 converted_params
[i
] = (GLfloat
) params
[i
];
566 _mesa_LightModelfv(pname
, converted_params
);
570 _es_Lightx(GLenum light
, GLenum pname
, GLfixed param
)
572 _mesa_Lightf(light
, pname
, (GLfloat
) (param
/ 65536.0f
));
576 _es_Lightxv(GLenum light
, GLenum pname
, const GLfixed
*params
)
579 unsigned int n_params
= 4;
580 GLfloat converted_params
[4];
582 if (light
< GL_LIGHT0
|| light
> GL_LIGHT7
) {
583 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
584 "glLightxv(light=0x%x)", light
);
594 case GL_SPOT_DIRECTION
:
597 case GL_SPOT_EXPONENT
:
599 case GL_CONSTANT_ATTENUATION
:
600 case GL_LINEAR_ATTENUATION
:
601 case GL_QUADRATIC_ATTENUATION
:
605 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
606 "glLightxv(pname=0x%x)", pname
);
610 for (i
= 0; i
< n_params
; i
++) {
611 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
614 _mesa_Lightfv(light
, pname
, converted_params
);
618 _es_LineWidthx(GLfixed width
)
620 _mesa_LineWidth((GLfloat
) (width
/ 65536.0f
));
624 _es_LoadMatrixx(const GLfixed
*m
)
627 GLfloat converted_m
[16];
629 for (i
= 0; i
< Elements(converted_m
); i
++) {
630 converted_m
[i
] = (GLfloat
) (m
[i
] / 65536.0f
);
633 _mesa_LoadMatrixf(converted_m
);
637 _es_Materialx(GLenum face
, GLenum pname
, GLfixed param
)
640 case GL_FRONT_AND_BACK
:
643 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
644 "glMaterialx(face=0x%x)", face
);
651 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
652 "glMaterialx(pname=0x%x)", pname
);
656 _es_Materialf(face
, pname
, (GLfloat
) (param
/ 65536.0f
));
660 _es_Materialxv(GLenum face
, GLenum pname
, const GLfixed
*params
)
663 unsigned int n_params
= 4;
664 GLfloat converted_params
[4];
667 case GL_FRONT_AND_BACK
:
670 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
671 "glMaterialxv(face=0x%x)", face
);
677 case GL_AMBIENT_AND_DIFFUSE
:
686 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
687 "glMaterialxv(pname=0x%x)", pname
);
691 for (i
= 0; i
< n_params
; i
++) {
692 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
695 _es_Materialfv(face
, pname
, converted_params
);
699 _es_MultMatrixx(const GLfixed
*m
)
702 GLfloat converted_m
[16];
704 for (i
= 0; i
< Elements(converted_m
); i
++) {
705 converted_m
[i
] = (GLfloat
) (m
[i
] / 65536.0f
);
708 _mesa_MultMatrixf(converted_m
);
712 _es_MultiTexCoord4x(GLenum texture
, GLfixed s
, GLfixed t
, GLfixed r
, GLfixed q
)
714 _es_MultiTexCoord4f(texture
,
715 (GLfloat
) (s
/ 65536.0f
),
716 (GLfloat
) (t
/ 65536.0f
),
717 (GLfloat
) (r
/ 65536.0f
),
718 (GLfloat
) (q
/ 65536.0f
));
722 _es_Normal3x(GLfixed nx
, GLfixed ny
, GLfixed nz
)
724 _es_Normal3f((GLfloat
) (nx
/ 65536.0f
),
725 (GLfloat
) (ny
/ 65536.0f
),
726 (GLfloat
) (nz
/ 65536.0f
));
730 _es_Orthof(GLfloat left
, GLfloat right
, GLfloat bottom
, GLfloat top
,
731 GLfloat zNear
, GLfloat zFar
)
733 _mesa_Ortho((GLdouble
) (left
),
742 _es_Orthox(GLfixed left
, GLfixed right
, GLfixed bottom
, GLfixed top
,
743 GLfixed zNear
, GLfixed zFar
)
745 _mesa_Ortho((GLdouble
) (left
/ 65536.0),
746 (GLdouble
) (right
/ 65536.0),
747 (GLdouble
) (bottom
/ 65536.0),
748 (GLdouble
) (top
/ 65536.0),
749 (GLdouble
) (zNear
/ 65536.0),
750 (GLdouble
) (zFar
/ 65536.0));
754 _es_PointParameterx(GLenum pname
, GLfixed param
)
757 case GL_POINT_SIZE_MIN
:
758 case GL_POINT_SIZE_MAX
:
759 case GL_POINT_FADE_THRESHOLD_SIZE
:
762 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
763 "glPointParameterx(pname=0x%x)", pname
);
767 _mesa_PointParameterf(pname
, (GLfloat
) (param
/ 65536.0f
));
771 _es_PointParameterxv(GLenum pname
, const GLfixed
*params
)
774 unsigned int n_params
= 3;
775 GLfloat converted_params
[3];
778 case GL_POINT_SIZE_MIN
:
779 case GL_POINT_SIZE_MAX
:
780 case GL_POINT_FADE_THRESHOLD_SIZE
:
783 case GL_POINT_DISTANCE_ATTENUATION
:
787 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
788 "glPointParameterxv(pname=0x%x)", pname
);
792 for (i
= 0; i
< n_params
; i
++) {
793 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
796 _mesa_PointParameterfv(pname
, converted_params
);
800 _es_PointSizex(GLfixed size
)
802 _mesa_PointSize((GLfloat
) (size
/ 65536.0f
));
806 _es_PolygonOffsetx(GLfixed factor
, GLfixed units
)
808 _mesa_PolygonOffset((GLfloat
) (factor
/ 65536.0f
),
809 (GLfloat
) (units
/ 65536.0f
));
813 _es_Rotatex(GLfixed angle
, GLfixed x
, GLfixed y
, GLfixed z
)
815 _mesa_Rotatef((GLfloat
) (angle
/ 65536.0f
),
816 (GLfloat
) (x
/ 65536.0f
),
817 (GLfloat
) (y
/ 65536.0f
),
818 (GLfloat
) (z
/ 65536.0f
));
822 _es_SampleCoveragex(GLclampx value
, GLboolean invert
)
824 _mesa_SampleCoverageARB((GLclampf
) (value
/ 65536.0f
),
829 _es_Scalex(GLfixed x
, GLfixed y
, GLfixed z
)
831 _mesa_Scalef((GLfloat
) (x
/ 65536.0f
),
832 (GLfloat
) (y
/ 65536.0f
),
833 (GLfloat
) (z
/ 65536.0f
));
837 _es_TexEnvx(GLenum target
, GLenum pname
, GLfixed param
)
839 GLfloat converted_param
;
840 bool convert_param_value
= true;
843 case GL_POINT_SPRITE
:
844 if (pname
!= GL_COORD_REPLACE
) {
845 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
846 "glTexEnvx(target=0x%x)", target
);
850 case GL_TEXTURE_FILTER_CONTROL_EXT
:
851 if (pname
!= GL_TEXTURE_LOD_BIAS_EXT
) {
852 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
853 "glTexEnvx(target=0x%x)", target
);
858 if (pname
!= GL_TEXTURE_ENV_MODE
&& pname
!= GL_COMBINE_RGB
&& pname
!= GL_COMBINE_ALPHA
&& pname
!= GL_RGB_SCALE
&& pname
!= GL_ALPHA_SCALE
&& pname
!= GL_SRC0_RGB
&& pname
!= GL_SRC1_RGB
&& pname
!= GL_SRC2_RGB
&& pname
!= GL_SRC0_ALPHA
&& pname
!= GL_SRC1_ALPHA
&& pname
!= GL_SRC2_ALPHA
&& pname
!= GL_OPERAND0_RGB
&& pname
!= GL_OPERAND1_RGB
&& pname
!= GL_OPERAND2_RGB
&& pname
!= GL_OPERAND0_ALPHA
&& pname
!= GL_OPERAND1_ALPHA
&& pname
!= GL_OPERAND2_ALPHA
&& pname
!= GL_TEXTURE_ENV_COLOR
) {
859 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
860 "glTexEnvx(target=0x%x)", target
);
865 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
866 "glTexEnvx(target=0x%x)", target
);
870 case GL_COORD_REPLACE
:
871 if (param
!= GL_TRUE
&& param
!= GL_FALSE
) {
872 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
873 "glTexEnvx(pname=0x%x)", pname
);
876 convert_param_value
= false;
878 case GL_TEXTURE_LOD_BIAS_EXT
:
880 case GL_TEXTURE_ENV_MODE
:
881 if (param
!= GL_REPLACE
&& param
!= GL_MODULATE
&& param
!= GL_DECAL
&& param
!= GL_BLEND
&& param
!= GL_ADD
&& param
!= GL_COMBINE
) {
882 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
883 "glTexEnvx(pname=0x%x)", pname
);
886 convert_param_value
= false;
889 if (param
!= GL_REPLACE
&& param
!= GL_MODULATE
&& param
!= GL_ADD
&& param
!= GL_ADD_SIGNED
&& param
!= GL_INTERPOLATE
&& param
!= GL_SUBTRACT
&& param
!= GL_DOT3_RGB
&& param
!= GL_DOT3_RGBA
) {
890 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
891 "glTexEnvx(pname=0x%x)", pname
);
894 convert_param_value
= false;
896 case GL_COMBINE_ALPHA
:
897 if (param
!= GL_REPLACE
&& param
!= GL_MODULATE
&& param
!= GL_ADD
&& param
!= GL_ADD_SIGNED
&& param
!= GL_INTERPOLATE
&& param
!= GL_SUBTRACT
) {
898 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
899 "glTexEnvx(pname=0x%x)", pname
);
902 convert_param_value
= false;
913 convert_param_value
= false;
915 case GL_OPERAND0_RGB
:
916 case GL_OPERAND1_RGB
:
917 case GL_OPERAND2_RGB
:
918 if (param
!= GL_SRC_COLOR
&& param
!= GL_ONE_MINUS_SRC_COLOR
&& param
!= GL_SRC_ALPHA
&& param
!= GL_ONE_MINUS_SRC_ALPHA
) {
919 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
920 "glTexEnvx(pname=0x%x)", pname
);
923 convert_param_value
= false;
925 case GL_OPERAND0_ALPHA
:
926 case GL_OPERAND1_ALPHA
:
927 case GL_OPERAND2_ALPHA
:
928 if (param
!= GL_SRC_ALPHA
&& param
!= GL_ONE_MINUS_SRC_ALPHA
) {
929 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
930 "glTexEnvx(pname=0x%x)", pname
);
933 convert_param_value
= false;
936 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
937 "glTexEnvx(pname=0x%x)", pname
);
941 if (convert_param_value
) {
942 converted_param
= (GLfloat
) (param
/ 65536.0f
);
944 converted_param
= (GLfloat
) param
;
947 _mesa_TexEnvf(target
, pname
, converted_param
);
951 _es_TexEnvxv(GLenum target
, GLenum pname
, const GLfixed
*params
)
954 unsigned int n_params
= 4;
955 GLfloat converted_params
[4];
956 bool convert_params_value
= true;
959 case GL_POINT_SPRITE
:
960 if (pname
!= GL_COORD_REPLACE
) {
961 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
962 "glTexEnvxv(target=0x%x)", target
);
966 case GL_TEXTURE_FILTER_CONTROL_EXT
:
967 if (pname
!= GL_TEXTURE_LOD_BIAS_EXT
) {
968 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
969 "glTexEnvxv(target=0x%x)", target
);
974 if (pname
!= GL_TEXTURE_ENV_MODE
&& pname
!= GL_COMBINE_RGB
&& pname
!= GL_COMBINE_ALPHA
&& pname
!= GL_RGB_SCALE
&& pname
!= GL_ALPHA_SCALE
&& pname
!= GL_SRC0_RGB
&& pname
!= GL_SRC1_RGB
&& pname
!= GL_SRC2_RGB
&& pname
!= GL_SRC0_ALPHA
&& pname
!= GL_SRC1_ALPHA
&& pname
!= GL_SRC2_ALPHA
&& pname
!= GL_OPERAND0_RGB
&& pname
!= GL_OPERAND1_RGB
&& pname
!= GL_OPERAND2_RGB
&& pname
!= GL_OPERAND0_ALPHA
&& pname
!= GL_OPERAND1_ALPHA
&& pname
!= GL_OPERAND2_ALPHA
&& pname
!= GL_TEXTURE_ENV_COLOR
) {
975 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
976 "glTexEnvxv(target=0x%x)", target
);
981 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
982 "glTexEnvxv(target=0x%x)", target
);
986 case GL_COORD_REPLACE
:
987 if (params
[0] != GL_TRUE
&& params
[0] != GL_FALSE
) {
988 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
989 "glTexEnvxv(pname=0x%x)", pname
);
992 convert_params_value
= false;
995 case GL_TEXTURE_LOD_BIAS_EXT
:
998 case GL_TEXTURE_ENV_MODE
:
999 if (params
[0] != GL_REPLACE
&& params
[0] != GL_MODULATE
&& params
[0] != GL_DECAL
&& params
[0] != GL_BLEND
&& params
[0] != GL_ADD
&& params
[0] != GL_COMBINE
) {
1000 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1001 "glTexEnvxv(pname=0x%x)", pname
);
1004 convert_params_value
= false;
1007 case GL_COMBINE_RGB
:
1008 if (params
[0] != GL_REPLACE
&& params
[0] != GL_MODULATE
&& params
[0] != GL_ADD
&& params
[0] != GL_ADD_SIGNED
&& params
[0] != GL_INTERPOLATE
&& params
[0] != GL_SUBTRACT
&& params
[0] != GL_DOT3_RGB
&& params
[0] != GL_DOT3_RGBA
) {
1009 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1010 "glTexEnvxv(pname=0x%x)", pname
);
1013 convert_params_value
= false;
1016 case GL_COMBINE_ALPHA
:
1017 if (params
[0] != GL_REPLACE
&& params
[0] != GL_MODULATE
&& params
[0] != GL_ADD
&& params
[0] != GL_ADD_SIGNED
&& params
[0] != GL_INTERPOLATE
&& params
[0] != GL_SUBTRACT
) {
1018 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1019 "glTexEnvxv(pname=0x%x)", pname
);
1022 convert_params_value
= false;
1026 case GL_ALPHA_SCALE
:
1034 convert_params_value
= false;
1037 case GL_OPERAND0_RGB
:
1038 case GL_OPERAND1_RGB
:
1039 case GL_OPERAND2_RGB
:
1040 if (params
[0] != GL_SRC_COLOR
&& params
[0] != GL_ONE_MINUS_SRC_COLOR
&& params
[0] != GL_SRC_ALPHA
&& params
[0] != GL_ONE_MINUS_SRC_ALPHA
) {
1041 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1042 "glTexEnvxv(pname=0x%x)", pname
);
1045 convert_params_value
= false;
1048 case GL_OPERAND0_ALPHA
:
1049 case GL_OPERAND1_ALPHA
:
1050 case GL_OPERAND2_ALPHA
:
1051 if (params
[0] != GL_SRC_ALPHA
&& params
[0] != GL_ONE_MINUS_SRC_ALPHA
) {
1052 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1053 "glTexEnvxv(pname=0x%x)", pname
);
1056 convert_params_value
= false;
1059 case GL_TEXTURE_ENV_COLOR
:
1063 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1064 "glTexEnvxv(pname=0x%x)", pname
);
1068 if (convert_params_value
) {
1069 for (i
= 0; i
< n_params
; i
++) {
1070 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
1073 for (i
= 0; i
< n_params
; i
++) {
1074 converted_params
[i
] = (GLfloat
) params
[i
];
1078 _mesa_TexEnvfv(target
, pname
, converted_params
);
1082 _check_TexGeniOES(GLenum coord
, GLenum pname
, GLint param
)
1085 case GL_TEXTURE_GEN_STR_OES
:
1088 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1089 "glTexGeniOES(coord=0x%x)", coord
);
1093 case GL_TEXTURE_GEN_MODE
:
1094 if (param
!= GL_NORMAL_MAP
&& param
!= GL_REFLECTION_MAP
) {
1095 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1096 "glTexGeniOES(pname=0x%x)", pname
);
1101 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1102 "glTexGeniOES(pname=0x%x)", pname
);
1106 _es_TexGenf(coord
, pname
, (GLfloat
) param
);
1110 _check_TexGenivOES(GLenum coord
, GLenum pname
, const GLint
*params
)
1113 unsigned int n_params
= 1;
1114 GLfloat converted_params
[1];
1117 case GL_TEXTURE_GEN_STR_OES
:
1120 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1121 "glTexGenivOES(coord=0x%x)", coord
);
1125 case GL_TEXTURE_GEN_MODE
:
1126 if (params
[0] != GL_NORMAL_MAP
&& params
[0] != GL_REFLECTION_MAP
) {
1127 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1128 "glTexGenivOES(pname=0x%x)", pname
);
1134 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1135 "glTexGenivOES(pname=0x%x)", pname
);
1139 for (i
= 0; i
< n_params
; i
++) {
1140 converted_params
[i
] = (GLfloat
) params
[i
];
1143 _es_TexGenfv(coord
, pname
, converted_params
);
1147 _check_TexGenxOES(GLenum coord
, GLenum pname
, GLfixed param
)
1150 case GL_TEXTURE_GEN_STR_OES
:
1153 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1154 "glTexGenxOES(coord=0x%x)", coord
);
1158 case GL_TEXTURE_GEN_MODE
:
1159 if (param
!= GL_NORMAL_MAP
&& param
!= GL_REFLECTION_MAP
) {
1160 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1161 "glTexGenxOES(pname=0x%x)", pname
);
1166 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1167 "glTexGenxOES(pname=0x%x)", pname
);
1171 _es_TexGenf(coord
, pname
, (GLfloat
) param
);
1175 _check_TexGenxvOES(GLenum coord
, GLenum pname
, const GLfixed
*params
)
1178 unsigned int n_params
= 1;
1179 GLfloat converted_params
[1];
1182 case GL_TEXTURE_GEN_STR_OES
:
1185 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1186 "glTexGenxvOES(coord=0x%x)", coord
);
1190 case GL_TEXTURE_GEN_MODE
:
1191 if (params
[0] != GL_NORMAL_MAP
&& params
[0] != GL_REFLECTION_MAP
) {
1192 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1193 "glTexGenxvOES(pname=0x%x)", pname
);
1199 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1200 "glTexGenxvOES(pname=0x%x)", pname
);
1204 for (i
= 0; i
< n_params
; i
++) {
1205 converted_params
[i
] = (GLfloat
) params
[i
];
1208 _es_TexGenfv(coord
, pname
, converted_params
);
1212 _es_TexParameterx(GLenum target
, GLenum pname
, GLfixed param
)
1214 if (pname
== GL_TEXTURE_MAX_ANISOTROPY_EXT
) {
1215 _mesa_TexParameterf(target
, pname
, (GLfloat
) (param
/ 65536.0f
));
1217 _mesa_TexParameterf(target
, pname
, (GLfloat
) param
);
1222 _es_TexParameterxv(GLenum target
, GLenum pname
, const GLfixed
*params
)
1225 unsigned int n_params
= 4;
1226 GLfloat converted_params
[4];
1227 bool convert_params_value
= true;
1231 case GL_TEXTURE_CUBE_MAP
:
1232 case GL_TEXTURE_EXTERNAL_OES
:
1235 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1236 "glTexParameterxv(target=0x%x)", target
);
1240 case GL_TEXTURE_WRAP_S
:
1241 case GL_TEXTURE_WRAP_T
:
1242 convert_params_value
= false;
1245 case GL_TEXTURE_MIN_FILTER
:
1246 case GL_TEXTURE_MAG_FILTER
:
1247 case GL_GENERATE_MIPMAP
:
1248 convert_params_value
= false;
1251 case GL_TEXTURE_MAX_ANISOTROPY_EXT
:
1254 case GL_TEXTURE_CROP_RECT_OES
:
1258 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1259 "glTexParameterxv(pname=0x%x)", pname
);
1263 if (convert_params_value
) {
1264 for (i
= 0; i
< n_params
; i
++) {
1265 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
1268 for (i
= 0; i
< n_params
; i
++) {
1269 converted_params
[i
] = (GLfloat
) params
[i
];
1273 _mesa_TexParameterfv(target
, pname
, converted_params
);
1277 _es_Translatex(GLfixed x
, GLfixed y
, GLfixed z
)
1279 _mesa_Translatef((GLfloat
) (x
/ 65536.0f
),
1280 (GLfloat
) (y
/ 65536.0f
),
1281 (GLfloat
) (z
/ 65536.0f
));
1284 #endif /* FEATURE_ES1 */