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
)
511 _mesa_LightModelf(pname
, (GLfloat
) param
);
515 _es_LightModelxv(GLenum pname
, const GLfixed
*params
)
518 unsigned int n_params
= 4;
519 GLfloat converted_params
[4];
520 bool convert_params_value
= true;
523 case GL_LIGHT_MODEL_AMBIENT
:
526 case GL_LIGHT_MODEL_TWO_SIDE
:
527 convert_params_value
= false;
531 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
532 "glLightModelxv(pname=0x%x)", pname
);
536 if (convert_params_value
) {
537 for (i
= 0; i
< n_params
; i
++) {
538 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
541 for (i
= 0; i
< n_params
; i
++) {
542 converted_params
[i
] = (GLfloat
) params
[i
];
546 _mesa_LightModelfv(pname
, converted_params
);
550 _es_Lightx(GLenum light
, GLenum pname
, GLfixed param
)
552 _mesa_Lightf(light
, pname
, (GLfloat
) (param
/ 65536.0f
));
556 _es_Lightxv(GLenum light
, GLenum pname
, const GLfixed
*params
)
559 unsigned int n_params
= 4;
560 GLfloat converted_params
[4];
562 if (light
< GL_LIGHT0
|| light
> GL_LIGHT7
) {
563 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
564 "glLightxv(light=0x%x)", light
);
574 case GL_SPOT_DIRECTION
:
577 case GL_SPOT_EXPONENT
:
579 case GL_CONSTANT_ATTENUATION
:
580 case GL_LINEAR_ATTENUATION
:
581 case GL_QUADRATIC_ATTENUATION
:
585 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
586 "glLightxv(pname=0x%x)", pname
);
590 for (i
= 0; i
< n_params
; i
++) {
591 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
594 _mesa_Lightfv(light
, pname
, converted_params
);
598 _es_LineWidthx(GLfixed width
)
600 _mesa_LineWidth((GLfloat
) (width
/ 65536.0f
));
604 _es_LoadMatrixx(const GLfixed
*m
)
607 GLfloat converted_m
[16];
609 for (i
= 0; i
< Elements(converted_m
); i
++) {
610 converted_m
[i
] = (GLfloat
) (m
[i
] / 65536.0f
);
613 _mesa_LoadMatrixf(converted_m
);
617 _es_Materialx(GLenum face
, GLenum pname
, GLfixed param
)
619 if (face
!= GL_FRONT_AND_BACK
) {
620 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
621 "glMaterialx(face=0x%x)", face
);
625 if (pname
!= GL_SHININESS
) {
626 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
627 "glMaterialx(pname=0x%x)", pname
);
631 _es_Materialf(face
, pname
, (GLfloat
) (param
/ 65536.0f
));
635 _es_Materialxv(GLenum face
, GLenum pname
, const GLfixed
*params
)
638 unsigned int n_params
= 4;
639 GLfloat converted_params
[4];
641 if (face
!= GL_FRONT_AND_BACK
) {
642 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
643 "glMaterialxv(face=0x%x)", face
);
650 case GL_AMBIENT_AND_DIFFUSE
:
659 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
660 "glMaterialxv(pname=0x%x)", pname
);
664 for (i
= 0; i
< n_params
; i
++) {
665 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
668 _es_Materialfv(face
, pname
, converted_params
);
672 _es_MultMatrixx(const GLfixed
*m
)
675 GLfloat converted_m
[16];
677 for (i
= 0; i
< Elements(converted_m
); i
++) {
678 converted_m
[i
] = (GLfloat
) (m
[i
] / 65536.0f
);
681 _mesa_MultMatrixf(converted_m
);
685 _es_MultiTexCoord4x(GLenum texture
, GLfixed s
, GLfixed t
, GLfixed r
, GLfixed q
)
687 _es_MultiTexCoord4f(texture
,
688 (GLfloat
) (s
/ 65536.0f
),
689 (GLfloat
) (t
/ 65536.0f
),
690 (GLfloat
) (r
/ 65536.0f
),
691 (GLfloat
) (q
/ 65536.0f
));
695 _es_Normal3x(GLfixed nx
, GLfixed ny
, GLfixed nz
)
697 _es_Normal3f((GLfloat
) (nx
/ 65536.0f
),
698 (GLfloat
) (ny
/ 65536.0f
),
699 (GLfloat
) (nz
/ 65536.0f
));
703 _es_Orthof(GLfloat left
, GLfloat right
, GLfloat bottom
, GLfloat top
,
704 GLfloat zNear
, GLfloat zFar
)
706 _mesa_Ortho((GLdouble
) (left
),
715 _es_Orthox(GLfixed left
, GLfixed right
, GLfixed bottom
, GLfixed top
,
716 GLfixed zNear
, GLfixed zFar
)
718 _mesa_Ortho((GLdouble
) (left
/ 65536.0),
719 (GLdouble
) (right
/ 65536.0),
720 (GLdouble
) (bottom
/ 65536.0),
721 (GLdouble
) (top
/ 65536.0),
722 (GLdouble
) (zNear
/ 65536.0),
723 (GLdouble
) (zFar
/ 65536.0));
727 _es_PointParameterx(GLenum pname
, GLfixed param
)
730 case GL_POINT_SIZE_MIN
:
731 case GL_POINT_SIZE_MAX
:
732 case GL_POINT_FADE_THRESHOLD_SIZE
:
735 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
736 "glPointParameterx(pname=0x%x)", pname
);
740 _mesa_PointParameterf(pname
, (GLfloat
) (param
/ 65536.0f
));
744 _es_PointParameterxv(GLenum pname
, const GLfixed
*params
)
747 unsigned int n_params
= 3;
748 GLfloat converted_params
[3];
751 case GL_POINT_SIZE_MIN
:
752 case GL_POINT_SIZE_MAX
:
753 case GL_POINT_FADE_THRESHOLD_SIZE
:
756 case GL_POINT_DISTANCE_ATTENUATION
:
760 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
761 "glPointParameterxv(pname=0x%x)", pname
);
765 for (i
= 0; i
< n_params
; i
++) {
766 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
769 _mesa_PointParameterfv(pname
, converted_params
);
773 _es_PointSizex(GLfixed size
)
775 _mesa_PointSize((GLfloat
) (size
/ 65536.0f
));
779 _es_PolygonOffsetx(GLfixed factor
, GLfixed units
)
781 _mesa_PolygonOffset((GLfloat
) (factor
/ 65536.0f
),
782 (GLfloat
) (units
/ 65536.0f
));
786 _es_Rotatex(GLfixed angle
, GLfixed x
, GLfixed y
, GLfixed z
)
788 _mesa_Rotatef((GLfloat
) (angle
/ 65536.0f
),
789 (GLfloat
) (x
/ 65536.0f
),
790 (GLfloat
) (y
/ 65536.0f
),
791 (GLfloat
) (z
/ 65536.0f
));
795 _es_SampleCoveragex(GLclampx value
, GLboolean invert
)
797 _mesa_SampleCoverageARB((GLclampf
) (value
/ 65536.0f
),
802 _es_Scalex(GLfixed x
, GLfixed y
, GLfixed z
)
804 _mesa_Scalef((GLfloat
) (x
/ 65536.0f
),
805 (GLfloat
) (y
/ 65536.0f
),
806 (GLfloat
) (z
/ 65536.0f
));
810 _es_TexEnvx(GLenum target
, GLenum pname
, GLfixed param
)
812 GLfloat converted_param
;
813 bool convert_param_value
= true;
816 case GL_POINT_SPRITE
:
817 if (pname
!= GL_COORD_REPLACE
) {
818 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
819 "glTexEnvx(target=0x%x)", target
);
823 case GL_TEXTURE_FILTER_CONTROL_EXT
:
824 if (pname
!= GL_TEXTURE_LOD_BIAS_EXT
) {
825 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
826 "glTexEnvx(target=0x%x)", target
);
831 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
) {
832 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
833 "glTexEnvx(target=0x%x)", target
);
838 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
839 "glTexEnvx(target=0x%x)", target
);
843 case GL_COORD_REPLACE
:
844 if (param
!= GL_TRUE
&& param
!= GL_FALSE
) {
845 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
846 "glTexEnvx(pname=0x%x)", pname
);
849 convert_param_value
= false;
851 case GL_TEXTURE_LOD_BIAS_EXT
:
853 case GL_TEXTURE_ENV_MODE
:
854 if (param
!= GL_REPLACE
&& param
!= GL_MODULATE
&& param
!= GL_DECAL
&& param
!= GL_BLEND
&& param
!= GL_ADD
&& param
!= GL_COMBINE
) {
855 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
856 "glTexEnvx(pname=0x%x)", pname
);
859 convert_param_value
= false;
862 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
) {
863 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
864 "glTexEnvx(pname=0x%x)", pname
);
867 convert_param_value
= false;
869 case GL_COMBINE_ALPHA
:
870 if (param
!= GL_REPLACE
&& param
!= GL_MODULATE
&& param
!= GL_ADD
&& param
!= GL_ADD_SIGNED
&& param
!= GL_INTERPOLATE
&& param
!= GL_SUBTRACT
) {
871 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
872 "glTexEnvx(pname=0x%x)", pname
);
875 convert_param_value
= false;
886 convert_param_value
= false;
888 case GL_OPERAND0_RGB
:
889 case GL_OPERAND1_RGB
:
890 case GL_OPERAND2_RGB
:
891 if (param
!= GL_SRC_COLOR
&& param
!= GL_ONE_MINUS_SRC_COLOR
&& param
!= GL_SRC_ALPHA
&& param
!= GL_ONE_MINUS_SRC_ALPHA
) {
892 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
893 "glTexEnvx(pname=0x%x)", pname
);
896 convert_param_value
= false;
898 case GL_OPERAND0_ALPHA
:
899 case GL_OPERAND1_ALPHA
:
900 case GL_OPERAND2_ALPHA
:
901 if (param
!= GL_SRC_ALPHA
&& param
!= GL_ONE_MINUS_SRC_ALPHA
) {
902 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
903 "glTexEnvx(pname=0x%x)", pname
);
906 convert_param_value
= false;
909 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
910 "glTexEnvx(pname=0x%x)", pname
);
914 if (convert_param_value
) {
915 converted_param
= (GLfloat
) (param
/ 65536.0f
);
917 converted_param
= (GLfloat
) param
;
920 _mesa_TexEnvf(target
, pname
, converted_param
);
924 _es_TexEnvxv(GLenum target
, GLenum pname
, const GLfixed
*params
)
927 unsigned int n_params
= 4;
928 GLfloat converted_params
[4];
929 bool convert_params_value
= true;
932 case GL_POINT_SPRITE
:
933 if (pname
!= GL_COORD_REPLACE
) {
934 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
935 "glTexEnvxv(target=0x%x)", target
);
939 case GL_TEXTURE_FILTER_CONTROL_EXT
:
940 if (pname
!= GL_TEXTURE_LOD_BIAS_EXT
) {
941 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
942 "glTexEnvxv(target=0x%x)", target
);
947 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
) {
948 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
949 "glTexEnvxv(target=0x%x)", target
);
954 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
955 "glTexEnvxv(target=0x%x)", target
);
959 case GL_COORD_REPLACE
:
960 if (params
[0] != GL_TRUE
&& params
[0] != GL_FALSE
) {
961 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
962 "glTexEnvxv(pname=0x%x)", pname
);
965 convert_params_value
= false;
968 case GL_TEXTURE_LOD_BIAS_EXT
:
971 case GL_TEXTURE_ENV_MODE
:
972 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
) {
973 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
974 "glTexEnvxv(pname=0x%x)", pname
);
977 convert_params_value
= false;
981 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
) {
982 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
983 "glTexEnvxv(pname=0x%x)", pname
);
986 convert_params_value
= false;
989 case GL_COMBINE_ALPHA
:
990 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
) {
991 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
992 "glTexEnvxv(pname=0x%x)", pname
);
995 convert_params_value
= false;
1007 convert_params_value
= false;
1010 case GL_OPERAND0_RGB
:
1011 case GL_OPERAND1_RGB
:
1012 case GL_OPERAND2_RGB
:
1013 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
) {
1014 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1015 "glTexEnvxv(pname=0x%x)", pname
);
1018 convert_params_value
= false;
1021 case GL_OPERAND0_ALPHA
:
1022 case GL_OPERAND1_ALPHA
:
1023 case GL_OPERAND2_ALPHA
:
1024 if (params
[0] != GL_SRC_ALPHA
&& params
[0] != GL_ONE_MINUS_SRC_ALPHA
) {
1025 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1026 "glTexEnvxv(pname=0x%x)", pname
);
1029 convert_params_value
= false;
1032 case GL_TEXTURE_ENV_COLOR
:
1036 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1037 "glTexEnvxv(pname=0x%x)", pname
);
1041 if (convert_params_value
) {
1042 for (i
= 0; i
< n_params
; i
++) {
1043 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
1046 for (i
= 0; i
< n_params
; i
++) {
1047 converted_params
[i
] = (GLfloat
) params
[i
];
1051 _mesa_TexEnvfv(target
, pname
, converted_params
);
1055 _check_TexGeniOES(GLenum coord
, GLenum pname
, GLint param
)
1057 _es_TexGenf(coord
, pname
, (GLfloat
) param
);
1061 _check_TexGenivOES(GLenum coord
, GLenum pname
, const GLint
*params
)
1063 _es_TexGenf(coord
, pname
, (GLfloat
) params
[0]);
1067 _check_TexGenxOES(GLenum coord
, GLenum pname
, GLfixed param
)
1069 _es_TexGenf(coord
, pname
, (GLfloat
) param
);
1073 _check_TexGenxvOES(GLenum coord
, GLenum pname
, const GLfixed
*params
)
1075 _es_TexGenf(coord
, pname
, (GLfloat
) params
[0]);
1079 _es_TexParameterx(GLenum target
, GLenum pname
, GLfixed param
)
1081 if (pname
== GL_TEXTURE_MAX_ANISOTROPY_EXT
) {
1082 _mesa_TexParameterf(target
, pname
, (GLfloat
) (param
/ 65536.0f
));
1084 _mesa_TexParameterf(target
, pname
, (GLfloat
) param
);
1089 _es_TexParameterxv(GLenum target
, GLenum pname
, const GLfixed
*params
)
1092 unsigned int n_params
= 4;
1093 GLfloat converted_params
[4];
1094 bool convert_params_value
= true;
1098 case GL_TEXTURE_CUBE_MAP
:
1099 case GL_TEXTURE_EXTERNAL_OES
:
1102 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1103 "glTexParameterxv(target=0x%x)", target
);
1107 case GL_TEXTURE_WRAP_S
:
1108 case GL_TEXTURE_WRAP_T
:
1109 convert_params_value
= false;
1112 case GL_TEXTURE_MIN_FILTER
:
1113 case GL_TEXTURE_MAG_FILTER
:
1114 case GL_GENERATE_MIPMAP
:
1115 convert_params_value
= false;
1118 case GL_TEXTURE_MAX_ANISOTROPY_EXT
:
1121 case GL_TEXTURE_CROP_RECT_OES
:
1125 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM
,
1126 "glTexParameterxv(pname=0x%x)", pname
);
1130 if (convert_params_value
) {
1131 for (i
= 0; i
< n_params
; i
++) {
1132 converted_params
[i
] = (GLfloat
) (params
[i
] / 65536.0f
);
1135 for (i
= 0; i
< n_params
; i
++) {
1136 converted_params
[i
] = (GLfloat
) params
[i
];
1140 _mesa_TexParameterfv(target
, pname
, converted_params
);
1144 _es_Translatex(GLfixed x
, GLfixed y
, GLfixed z
)
1146 _mesa_Translatef((GLfloat
) (x
/ 65536.0f
),
1147 (GLfloat
) (y
/ 65536.0f
),
1148 (GLfloat
) (z
/ 65536.0f
));
1151 #endif /* FEATURE_ES1 */