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
)
402 unsigned int n_params
= 1;
403 GLfloat converted_params
[1];
406 case GL_TEXTURE_GEN_STR_OES
:
409 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
410 "glGetTexGenivOES(coord=0x%x)", coord
);
414 case GL_TEXTURE_GEN_MODE
:
418 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
419 "glGetTexGenivOES(pname=0x%x)", pname
);
423 _es_GetTexGenfv(coord
, pname
, converted_params
);
424 for (i
= 0; i
< n_params
; i
++) {
425 params
[i
] = (GLfloat
) converted_params
[i
];
430 _check_GetTexGenxvOES(GLenum coord
, GLenum pname
, GLfixed
*params
)
433 unsigned int n_params
= 1;
434 GLfloat converted_params
[1];
437 case GL_TEXTURE_GEN_STR_OES
:
440 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
441 "glGetTexGenxvOES(coord=0x%x)", coord
);
445 case GL_TEXTURE_GEN_MODE
:
449 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
450 "glGetTexGenxvOES(pname=0x%x)", pname
);
454 _es_GetTexGenfv(coord
, pname
, converted_params
);
455 for (i
= 0; i
< n_params
; i
++) {
456 params
[i
] = (GLfloat
) converted_params
[i
];
461 _es_GetTexParameterxv(GLenum target
, GLenum pname
, GLfixed
*params
)
464 unsigned int n_params
= 4;
465 GLfloat converted_params
[4];
466 bool convert_params_value
= true;
470 case GL_TEXTURE_CUBE_MAP
:
471 case GL_TEXTURE_EXTERNAL_OES
:
474 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
475 "glGetTexParameterxv(target=0x%x)", target
);
479 case GL_TEXTURE_WRAP_S
:
480 case GL_TEXTURE_WRAP_T
:
481 case GL_TEXTURE_MIN_FILTER
:
482 case GL_TEXTURE_MAG_FILTER
:
483 case GL_GENERATE_MIPMAP
:
484 convert_params_value
= false;
487 case GL_TEXTURE_CROP_RECT_OES
:
491 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
492 "glGetTexParameterxv(pname=0x%x)", pname
);
496 _mesa_GetTexParameterfv(target
, pname
, converted_params
);
497 if (convert_params_value
) {
498 for (i
= 0; i
< n_params
; i
++) {
499 params
[i
] = (GLint
) (converted_params
[i
] * 65536);
502 for (i
= 0; i
< n_params
; i
++) {
503 params
[i
] = (GLfixed
) converted_params
[i
];
509 _es_LightModelx(GLenum pname
, GLfixed param
)
512 case GL_LIGHT_MODEL_TWO_SIDE
:
513 if (param
!= GL_TRUE
&& param
!= GL_FALSE
) {
514 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
515 "glLightModelx(pname=0x%x)", pname
);
520 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
521 "glLightModelx(pname=0x%x)", pname
);
525 _mesa_LightModelf(pname
, (GLfloat
) param
);
529 _es_LightModelxv(GLenum pname
, const GLfixed
*params
)
532 unsigned int n_params
= 4;
533 GLfloat converted_params
[4];
534 bool convert_params_value
= true;
537 case GL_LIGHT_MODEL_AMBIENT
:
540 case GL_LIGHT_MODEL_TWO_SIDE
:
541 if (params
[0] != GL_TRUE
&& params
[0] != GL_FALSE
) {
542 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
543 "glLightModelxv(pname=0x%x)", pname
);
546 convert_params_value
= false;
550 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
551 "glLightModelxv(pname=0x%x)", pname
);
555 if (convert_params_value
) {
556 for (i
= 0; i
< n_params
; i
++) {
557 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
560 for (i
= 0; i
< n_params
; i
++) {
561 converted_params
[i
] = (GLfloat
) params
[i
];
565 _mesa_LightModelfv(pname
, converted_params
);
569 _es_Lightx(GLenum light
, GLenum pname
, GLfixed param
)
571 _mesa_Lightf(light
, pname
, (GLfloat
) (param
/ 65536.0f
));
575 _es_Lightxv(GLenum light
, GLenum pname
, const GLfixed
*params
)
578 unsigned int n_params
= 4;
579 GLfloat converted_params
[4];
581 if (light
< GL_LIGHT0
|| light
> GL_LIGHT7
) {
582 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
583 "glLightxv(light=0x%x)", light
);
593 case GL_SPOT_DIRECTION
:
596 case GL_SPOT_EXPONENT
:
598 case GL_CONSTANT_ATTENUATION
:
599 case GL_LINEAR_ATTENUATION
:
600 case GL_QUADRATIC_ATTENUATION
:
604 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
605 "glLightxv(pname=0x%x)", pname
);
609 for (i
= 0; i
< n_params
; i
++) {
610 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
613 _mesa_Lightfv(light
, pname
, converted_params
);
617 _es_LineWidthx(GLfixed width
)
619 _mesa_LineWidth((GLfloat
) (width
/ 65536.0f
));
623 _es_LoadMatrixx(const GLfixed
*m
)
626 GLfloat converted_m
[16];
628 for (i
= 0; i
< Elements(converted_m
); i
++) {
629 converted_m
[i
] = (GLfloat
) (m
[i
] / 65536.0f
);
632 _mesa_LoadMatrixf(converted_m
);
636 _es_Materialx(GLenum face
, GLenum pname
, GLfixed param
)
638 if (face
!= GL_FRONT_AND_BACK
) {
639 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
640 "glMaterialx(face=0x%x)", face
);
644 if (pname
!= GL_SHININESS
) {
645 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
646 "glMaterialx(pname=0x%x)", pname
);
650 _es_Materialf(face
, pname
, (GLfloat
) (param
/ 65536.0f
));
654 _es_Materialxv(GLenum face
, GLenum pname
, const GLfixed
*params
)
657 unsigned int n_params
= 4;
658 GLfloat converted_params
[4];
660 if (face
!= GL_FRONT_AND_BACK
) {
661 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
662 "glMaterialxv(face=0x%x)", face
);
669 case GL_AMBIENT_AND_DIFFUSE
:
678 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
679 "glMaterialxv(pname=0x%x)", pname
);
683 for (i
= 0; i
< n_params
; i
++) {
684 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
687 _es_Materialfv(face
, pname
, converted_params
);
691 _es_MultMatrixx(const GLfixed
*m
)
694 GLfloat converted_m
[16];
696 for (i
= 0; i
< Elements(converted_m
); i
++) {
697 converted_m
[i
] = (GLfloat
) (m
[i
] / 65536.0f
);
700 _mesa_MultMatrixf(converted_m
);
704 _es_MultiTexCoord4x(GLenum texture
, GLfixed s
, GLfixed t
, GLfixed r
, GLfixed q
)
706 _es_MultiTexCoord4f(texture
,
707 (GLfloat
) (s
/ 65536.0f
),
708 (GLfloat
) (t
/ 65536.0f
),
709 (GLfloat
) (r
/ 65536.0f
),
710 (GLfloat
) (q
/ 65536.0f
));
714 _es_Normal3x(GLfixed nx
, GLfixed ny
, GLfixed nz
)
716 _es_Normal3f((GLfloat
) (nx
/ 65536.0f
),
717 (GLfloat
) (ny
/ 65536.0f
),
718 (GLfloat
) (nz
/ 65536.0f
));
722 _es_Orthof(GLfloat left
, GLfloat right
, GLfloat bottom
, GLfloat top
,
723 GLfloat zNear
, GLfloat zFar
)
725 _mesa_Ortho((GLdouble
) (left
),
734 _es_Orthox(GLfixed left
, GLfixed right
, GLfixed bottom
, GLfixed top
,
735 GLfixed zNear
, GLfixed zFar
)
737 _mesa_Ortho((GLdouble
) (left
/ 65536.0),
738 (GLdouble
) (right
/ 65536.0),
739 (GLdouble
) (bottom
/ 65536.0),
740 (GLdouble
) (top
/ 65536.0),
741 (GLdouble
) (zNear
/ 65536.0),
742 (GLdouble
) (zFar
/ 65536.0));
746 _es_PointParameterx(GLenum pname
, GLfixed param
)
749 case GL_POINT_SIZE_MIN
:
750 case GL_POINT_SIZE_MAX
:
751 case GL_POINT_FADE_THRESHOLD_SIZE
:
754 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
755 "glPointParameterx(pname=0x%x)", pname
);
759 _mesa_PointParameterf(pname
, (GLfloat
) (param
/ 65536.0f
));
763 _es_PointParameterxv(GLenum pname
, const GLfixed
*params
)
766 unsigned int n_params
= 3;
767 GLfloat converted_params
[3];
770 case GL_POINT_SIZE_MIN
:
771 case GL_POINT_SIZE_MAX
:
772 case GL_POINT_FADE_THRESHOLD_SIZE
:
775 case GL_POINT_DISTANCE_ATTENUATION
:
779 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
780 "glPointParameterxv(pname=0x%x)", pname
);
784 for (i
= 0; i
< n_params
; i
++) {
785 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
788 _mesa_PointParameterfv(pname
, converted_params
);
792 _es_PointSizex(GLfixed size
)
794 _mesa_PointSize((GLfloat
) (size
/ 65536.0f
));
798 _es_PolygonOffsetx(GLfixed factor
, GLfixed units
)
800 _mesa_PolygonOffset((GLfloat
) (factor
/ 65536.0f
),
801 (GLfloat
) (units
/ 65536.0f
));
805 _es_Rotatex(GLfixed angle
, GLfixed x
, GLfixed y
, GLfixed z
)
807 _mesa_Rotatef((GLfloat
) (angle
/ 65536.0f
),
808 (GLfloat
) (x
/ 65536.0f
),
809 (GLfloat
) (y
/ 65536.0f
),
810 (GLfloat
) (z
/ 65536.0f
));
814 _es_SampleCoveragex(GLclampx value
, GLboolean invert
)
816 _mesa_SampleCoverageARB((GLclampf
) (value
/ 65536.0f
),
821 _es_Scalex(GLfixed x
, GLfixed y
, GLfixed z
)
823 _mesa_Scalef((GLfloat
) (x
/ 65536.0f
),
824 (GLfloat
) (y
/ 65536.0f
),
825 (GLfloat
) (z
/ 65536.0f
));
829 _es_TexEnvx(GLenum target
, GLenum pname
, GLfixed param
)
831 GLfloat converted_param
;
832 bool convert_param_value
= true;
835 case GL_POINT_SPRITE
:
836 if (pname
!= GL_COORD_REPLACE
) {
837 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
838 "glTexEnvx(target=0x%x)", target
);
842 case GL_TEXTURE_FILTER_CONTROL_EXT
:
843 if (pname
!= GL_TEXTURE_LOD_BIAS_EXT
) {
844 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
845 "glTexEnvx(target=0x%x)", target
);
850 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
) {
851 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
852 "glTexEnvx(target=0x%x)", target
);
857 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
858 "glTexEnvx(target=0x%x)", target
);
862 case GL_COORD_REPLACE
:
863 if (param
!= GL_TRUE
&& param
!= GL_FALSE
) {
864 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
865 "glTexEnvx(pname=0x%x)", pname
);
868 convert_param_value
= false;
870 case GL_TEXTURE_LOD_BIAS_EXT
:
872 case GL_TEXTURE_ENV_MODE
:
873 if (param
!= GL_REPLACE
&& param
!= GL_MODULATE
&& param
!= GL_DECAL
&& param
!= GL_BLEND
&& param
!= GL_ADD
&& param
!= GL_COMBINE
) {
874 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
875 "glTexEnvx(pname=0x%x)", pname
);
878 convert_param_value
= false;
881 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
) {
882 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
883 "glTexEnvx(pname=0x%x)", pname
);
886 convert_param_value
= false;
888 case GL_COMBINE_ALPHA
:
889 if (param
!= GL_REPLACE
&& param
!= GL_MODULATE
&& param
!= GL_ADD
&& param
!= GL_ADD_SIGNED
&& param
!= GL_INTERPOLATE
&& param
!= GL_SUBTRACT
) {
890 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
891 "glTexEnvx(pname=0x%x)", pname
);
894 convert_param_value
= false;
905 convert_param_value
= false;
907 case GL_OPERAND0_RGB
:
908 case GL_OPERAND1_RGB
:
909 case GL_OPERAND2_RGB
:
910 if (param
!= GL_SRC_COLOR
&& param
!= GL_ONE_MINUS_SRC_COLOR
&& param
!= GL_SRC_ALPHA
&& param
!= GL_ONE_MINUS_SRC_ALPHA
) {
911 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
912 "glTexEnvx(pname=0x%x)", pname
);
915 convert_param_value
= false;
917 case GL_OPERAND0_ALPHA
:
918 case GL_OPERAND1_ALPHA
:
919 case GL_OPERAND2_ALPHA
:
920 if (param
!= GL_SRC_ALPHA
&& param
!= GL_ONE_MINUS_SRC_ALPHA
) {
921 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
922 "glTexEnvx(pname=0x%x)", pname
);
925 convert_param_value
= false;
928 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
929 "glTexEnvx(pname=0x%x)", pname
);
933 if (convert_param_value
) {
934 converted_param
= (GLfloat
) (param
/ 65536.0f
);
936 converted_param
= (GLfloat
) param
;
939 _mesa_TexEnvf(target
, pname
, converted_param
);
943 _es_TexEnvxv(GLenum target
, GLenum pname
, const GLfixed
*params
)
946 unsigned int n_params
= 4;
947 GLfloat converted_params
[4];
948 bool convert_params_value
= true;
951 case GL_POINT_SPRITE
:
952 if (pname
!= GL_COORD_REPLACE
) {
953 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
954 "glTexEnvxv(target=0x%x)", target
);
958 case GL_TEXTURE_FILTER_CONTROL_EXT
:
959 if (pname
!= GL_TEXTURE_LOD_BIAS_EXT
) {
960 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
961 "glTexEnvxv(target=0x%x)", target
);
966 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
) {
967 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
968 "glTexEnvxv(target=0x%x)", target
);
973 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
974 "glTexEnvxv(target=0x%x)", target
);
978 case GL_COORD_REPLACE
:
979 if (params
[0] != GL_TRUE
&& params
[0] != GL_FALSE
) {
980 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
981 "glTexEnvxv(pname=0x%x)", pname
);
984 convert_params_value
= false;
987 case GL_TEXTURE_LOD_BIAS_EXT
:
990 case GL_TEXTURE_ENV_MODE
:
991 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
) {
992 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
993 "glTexEnvxv(pname=0x%x)", pname
);
996 convert_params_value
= false;
1000 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
) {
1001 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1002 "glTexEnvxv(pname=0x%x)", pname
);
1005 convert_params_value
= false;
1008 case GL_COMBINE_ALPHA
:
1009 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
) {
1010 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1011 "glTexEnvxv(pname=0x%x)", pname
);
1014 convert_params_value
= false;
1018 case GL_ALPHA_SCALE
:
1026 convert_params_value
= false;
1029 case GL_OPERAND0_RGB
:
1030 case GL_OPERAND1_RGB
:
1031 case GL_OPERAND2_RGB
:
1032 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
) {
1033 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1034 "glTexEnvxv(pname=0x%x)", pname
);
1037 convert_params_value
= false;
1040 case GL_OPERAND0_ALPHA
:
1041 case GL_OPERAND1_ALPHA
:
1042 case GL_OPERAND2_ALPHA
:
1043 if (params
[0] != GL_SRC_ALPHA
&& params
[0] != GL_ONE_MINUS_SRC_ALPHA
) {
1044 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1045 "glTexEnvxv(pname=0x%x)", pname
);
1048 convert_params_value
= false;
1051 case GL_TEXTURE_ENV_COLOR
:
1055 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1056 "glTexEnvxv(pname=0x%x)", pname
);
1060 if (convert_params_value
) {
1061 for (i
= 0; i
< n_params
; i
++) {
1062 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
1065 for (i
= 0; i
< n_params
; i
++) {
1066 converted_params
[i
] = (GLfloat
) params
[i
];
1070 _mesa_TexEnvfv(target
, pname
, converted_params
);
1074 _check_TexGeniOES(GLenum coord
, GLenum pname
, GLint param
)
1077 case GL_TEXTURE_GEN_STR_OES
:
1080 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1081 "glTexGeniOES(coord=0x%x)", coord
);
1085 case GL_TEXTURE_GEN_MODE
:
1086 if (param
!= GL_NORMAL_MAP
&& param
!= GL_REFLECTION_MAP
) {
1087 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1088 "glTexGeniOES(pname=0x%x)", pname
);
1093 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1094 "glTexGeniOES(pname=0x%x)", pname
);
1098 _es_TexGenf(coord
, pname
, (GLfloat
) param
);
1102 _check_TexGenivOES(GLenum coord
, GLenum pname
, const GLint
*params
)
1105 unsigned int n_params
= 1;
1106 GLfloat converted_params
[1];
1109 case GL_TEXTURE_GEN_STR_OES
:
1112 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1113 "glTexGenivOES(coord=0x%x)", coord
);
1117 case GL_TEXTURE_GEN_MODE
:
1118 if (params
[0] != GL_NORMAL_MAP
&& params
[0] != GL_REFLECTION_MAP
) {
1119 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1120 "glTexGenivOES(pname=0x%x)", pname
);
1126 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1127 "glTexGenivOES(pname=0x%x)", pname
);
1131 for (i
= 0; i
< n_params
; i
++) {
1132 converted_params
[i
] = (GLfloat
) params
[i
];
1135 _es_TexGenfv(coord
, pname
, converted_params
);
1139 _check_TexGenxOES(GLenum coord
, GLenum pname
, GLfixed param
)
1142 case GL_TEXTURE_GEN_STR_OES
:
1145 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1146 "glTexGenxOES(coord=0x%x)", coord
);
1150 case GL_TEXTURE_GEN_MODE
:
1151 if (param
!= GL_NORMAL_MAP
&& param
!= GL_REFLECTION_MAP
) {
1152 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1153 "glTexGenxOES(pname=0x%x)", pname
);
1158 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1159 "glTexGenxOES(pname=0x%x)", pname
);
1163 _es_TexGenf(coord
, pname
, (GLfloat
) param
);
1167 _check_TexGenxvOES(GLenum coord
, GLenum pname
, const GLfixed
*params
)
1170 unsigned int n_params
= 1;
1171 GLfloat converted_params
[1];
1174 case GL_TEXTURE_GEN_STR_OES
:
1177 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1178 "glTexGenxvOES(coord=0x%x)", coord
);
1182 case GL_TEXTURE_GEN_MODE
:
1183 if (params
[0] != GL_NORMAL_MAP
&& params
[0] != GL_REFLECTION_MAP
) {
1184 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1185 "glTexGenxvOES(pname=0x%x)", pname
);
1191 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1192 "glTexGenxvOES(pname=0x%x)", pname
);
1196 for (i
= 0; i
< n_params
; i
++) {
1197 converted_params
[i
] = (GLfloat
) params
[i
];
1200 _es_TexGenfv(coord
, pname
, converted_params
);
1204 _es_TexParameterx(GLenum target
, GLenum pname
, GLfixed param
)
1206 if (pname
== GL_TEXTURE_MAX_ANISOTROPY_EXT
) {
1207 _mesa_TexParameterf(target
, pname
, (GLfloat
) (param
/ 65536.0f
));
1209 _mesa_TexParameterf(target
, pname
, (GLfloat
) param
);
1214 _es_TexParameterxv(GLenum target
, GLenum pname
, const GLfixed
*params
)
1217 unsigned int n_params
= 4;
1218 GLfloat converted_params
[4];
1219 bool convert_params_value
= true;
1223 case GL_TEXTURE_CUBE_MAP
:
1224 case GL_TEXTURE_EXTERNAL_OES
:
1227 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1228 "glTexParameterxv(target=0x%x)", target
);
1232 case GL_TEXTURE_WRAP_S
:
1233 case GL_TEXTURE_WRAP_T
:
1234 convert_params_value
= false;
1237 case GL_TEXTURE_MIN_FILTER
:
1238 case GL_TEXTURE_MAG_FILTER
:
1239 case GL_GENERATE_MIPMAP
:
1240 convert_params_value
= false;
1243 case GL_TEXTURE_MAX_ANISOTROPY_EXT
:
1246 case GL_TEXTURE_CROP_RECT_OES
:
1250 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1251 "glTexParameterxv(pname=0x%x)", pname
);
1255 if (convert_params_value
) {
1256 for (i
= 0; i
< n_params
; i
++) {
1257 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
1260 for (i
= 0; i
< n_params
; i
++) {
1261 converted_params
[i
] = (GLfloat
) params
[i
];
1265 _mesa_TexParameterfv(target
, pname
, converted_params
);
1269 _es_Translatex(GLfixed x
, GLfixed y
, GLfixed z
)
1271 _mesa_Translatef((GLfloat
) (x
/ 65536.0f
),
1272 (GLfloat
) (y
/ 65536.0f
),
1273 (GLfloat
) (z
/ 65536.0f
));
1276 #endif /* FEATURE_ES1 */