xref: /aosp_15_r20/external/mesa3d/src/mesa/main/es1_conversion.c (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker 
2*61046927SAndroid Build Coastguard Worker #include <stdbool.h>
3*61046927SAndroid Build Coastguard Worker 
4*61046927SAndroid Build Coastguard Worker #include "context.h"
5*61046927SAndroid Build Coastguard Worker #include "blend.h"
6*61046927SAndroid Build Coastguard Worker #include "clip.h"
7*61046927SAndroid Build Coastguard Worker #include "context.h"
8*61046927SAndroid Build Coastguard Worker #include "depth.h"
9*61046927SAndroid Build Coastguard Worker #include "fog.h"
10*61046927SAndroid Build Coastguard Worker 
11*61046927SAndroid Build Coastguard Worker #include "light.h"
12*61046927SAndroid Build Coastguard Worker #include "lines.h"
13*61046927SAndroid Build Coastguard Worker #include "matrix.h"
14*61046927SAndroid Build Coastguard Worker #include "multisample.h"
15*61046927SAndroid Build Coastguard Worker #include "pixelstore.h"
16*61046927SAndroid Build Coastguard Worker #include "points.h"
17*61046927SAndroid Build Coastguard Worker #include "polygon.h"
18*61046927SAndroid Build Coastguard Worker #include "readpix.h"
19*61046927SAndroid Build Coastguard Worker #include "texparam.h"
20*61046927SAndroid Build Coastguard Worker #include "viewport.h"
21*61046927SAndroid Build Coastguard Worker #include "vbo/vbo.h"
22*61046927SAndroid Build Coastguard Worker #include "api_exec_decl.h"
23*61046927SAndroid Build Coastguard Worker 
24*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_AlphaFuncx(GLenum func,GLclampx ref)25*61046927SAndroid Build Coastguard Worker _mesa_AlphaFuncx(GLenum func, GLclampx ref)
26*61046927SAndroid Build Coastguard Worker {
27*61046927SAndroid Build Coastguard Worker    _mesa_AlphaFunc(func, (GLclampf) (ref / 65536.0f));
28*61046927SAndroid Build Coastguard Worker }
29*61046927SAndroid Build Coastguard Worker 
30*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_ClearColorx(GLclampx red,GLclampx green,GLclampx blue,GLclampx alpha)31*61046927SAndroid Build Coastguard Worker _mesa_ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
32*61046927SAndroid Build Coastguard Worker {
33*61046927SAndroid Build Coastguard Worker    _mesa_ClearColor((GLclampf) (red / 65536.0f),
34*61046927SAndroid Build Coastguard Worker                     (GLclampf) (green / 65536.0f),
35*61046927SAndroid Build Coastguard Worker                     (GLclampf) (blue / 65536.0f),
36*61046927SAndroid Build Coastguard Worker                     (GLclampf) (alpha / 65536.0f));
37*61046927SAndroid Build Coastguard Worker }
38*61046927SAndroid Build Coastguard Worker 
39*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_ClearDepthx(GLclampx depth)40*61046927SAndroid Build Coastguard Worker _mesa_ClearDepthx(GLclampx depth)
41*61046927SAndroid Build Coastguard Worker {
42*61046927SAndroid Build Coastguard Worker    _mesa_ClearDepthf((GLclampf) (depth / 65536.0f));
43*61046927SAndroid Build Coastguard Worker }
44*61046927SAndroid Build Coastguard Worker 
45*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_ClipPlanef(GLenum plane,const GLfloat * equation)46*61046927SAndroid Build Coastguard Worker _mesa_ClipPlanef(GLenum plane, const GLfloat *equation)
47*61046927SAndroid Build Coastguard Worker {
48*61046927SAndroid Build Coastguard Worker    unsigned int i;
49*61046927SAndroid Build Coastguard Worker    GLdouble converted_equation[4];
50*61046927SAndroid Build Coastguard Worker 
51*61046927SAndroid Build Coastguard Worker    for (i = 0; i < ARRAY_SIZE(converted_equation); i++) {
52*61046927SAndroid Build Coastguard Worker       converted_equation[i] = (GLdouble) (equation[i]);
53*61046927SAndroid Build Coastguard Worker    }
54*61046927SAndroid Build Coastguard Worker 
55*61046927SAndroid Build Coastguard Worker    _mesa_ClipPlane(plane, converted_equation);
56*61046927SAndroid Build Coastguard Worker }
57*61046927SAndroid Build Coastguard Worker 
58*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_ClipPlanex(GLenum plane,const GLfixed * equation)59*61046927SAndroid Build Coastguard Worker _mesa_ClipPlanex(GLenum plane, const GLfixed *equation)
60*61046927SAndroid Build Coastguard Worker {
61*61046927SAndroid Build Coastguard Worker    unsigned int i;
62*61046927SAndroid Build Coastguard Worker    GLdouble converted_equation[4];
63*61046927SAndroid Build Coastguard Worker 
64*61046927SAndroid Build Coastguard Worker    for (i = 0; i < ARRAY_SIZE(converted_equation); i++) {
65*61046927SAndroid Build Coastguard Worker       converted_equation[i] = (GLdouble) (equation[i] / 65536.0);
66*61046927SAndroid Build Coastguard Worker    }
67*61046927SAndroid Build Coastguard Worker 
68*61046927SAndroid Build Coastguard Worker    _mesa_ClipPlane(plane, converted_equation);
69*61046927SAndroid Build Coastguard Worker }
70*61046927SAndroid Build Coastguard Worker 
71*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Color4x(GLfixed red,GLfixed green,GLfixed blue,GLfixed alpha)72*61046927SAndroid Build Coastguard Worker _mesa_Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
73*61046927SAndroid Build Coastguard Worker {
74*61046927SAndroid Build Coastguard Worker     _es_Color4f((GLfloat) (red / 65536.0f),
75*61046927SAndroid Build Coastguard Worker                 (GLfloat) (green / 65536.0f),
76*61046927SAndroid Build Coastguard Worker                 (GLfloat) (blue / 65536.0f),
77*61046927SAndroid Build Coastguard Worker                 (GLfloat) (alpha / 65536.0f));
78*61046927SAndroid Build Coastguard Worker }
79*61046927SAndroid Build Coastguard Worker 
80*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_DepthRangex(GLclampx zNear,GLclampx zFar)81*61046927SAndroid Build Coastguard Worker _mesa_DepthRangex(GLclampx zNear, GLclampx zFar)
82*61046927SAndroid Build Coastguard Worker {
83*61046927SAndroid Build Coastguard Worker     _mesa_DepthRangef((GLclampf) (zNear / 65536.0f),
84*61046927SAndroid Build Coastguard Worker                       (GLclampf) (zFar / 65536.0f));
85*61046927SAndroid Build Coastguard Worker }
86*61046927SAndroid Build Coastguard Worker 
87*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_DrawTexxOES(GLfixed x,GLfixed y,GLfixed z,GLfixed w,GLfixed h)88*61046927SAndroid Build Coastguard Worker _mesa_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h)
89*61046927SAndroid Build Coastguard Worker {
90*61046927SAndroid Build Coastguard Worker 
91*61046927SAndroid Build Coastguard Worker     _mesa_DrawTexfOES((GLfloat) (x / 65536.0f),
92*61046927SAndroid Build Coastguard Worker                    (GLfloat) (y / 65536.0f),
93*61046927SAndroid Build Coastguard Worker                    (GLfloat) (z / 65536.0f),
94*61046927SAndroid Build Coastguard Worker                    (GLfloat) (w / 65536.0f),
95*61046927SAndroid Build Coastguard Worker                    (GLfloat) (h / 65536.0f));
96*61046927SAndroid Build Coastguard Worker }
97*61046927SAndroid Build Coastguard Worker 
98*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_DrawTexxvOES(const GLfixed * coords)99*61046927SAndroid Build Coastguard Worker _mesa_DrawTexxvOES(const GLfixed *coords)
100*61046927SAndroid Build Coastguard Worker {
101*61046927SAndroid Build Coastguard Worker     unsigned int i;
102*61046927SAndroid Build Coastguard Worker     GLfloat converted_coords[5];
103*61046927SAndroid Build Coastguard Worker 
104*61046927SAndroid Build Coastguard Worker     for (i = 0; i < ARRAY_SIZE(converted_coords); i++) {
105*61046927SAndroid Build Coastguard Worker         converted_coords[i] = (GLfloat) (coords[i] / 65536.0f);
106*61046927SAndroid Build Coastguard Worker     }
107*61046927SAndroid Build Coastguard Worker 
108*61046927SAndroid Build Coastguard Worker     _mesa_DrawTexfvOES(converted_coords);
109*61046927SAndroid Build Coastguard Worker }
110*61046927SAndroid Build Coastguard Worker 
111*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Fogx(GLenum pname,GLfixed param)112*61046927SAndroid Build Coastguard Worker _mesa_Fogx(GLenum pname, GLfixed param)
113*61046927SAndroid Build Coastguard Worker {
114*61046927SAndroid Build Coastguard Worker    if (pname != GL_FOG_MODE) {
115*61046927SAndroid Build Coastguard Worker       _mesa_Fogf(pname, (GLfloat) (param / 65536.0f));
116*61046927SAndroid Build Coastguard Worker    } else {
117*61046927SAndroid Build Coastguard Worker       _mesa_Fogf(pname, (GLfloat) param);
118*61046927SAndroid Build Coastguard Worker    }
119*61046927SAndroid Build Coastguard Worker 
120*61046927SAndroid Build Coastguard Worker }
121*61046927SAndroid Build Coastguard Worker 
122*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Fogxv(GLenum pname,const GLfixed * params)123*61046927SAndroid Build Coastguard Worker _mesa_Fogxv(GLenum pname, const GLfixed *params)
124*61046927SAndroid Build Coastguard Worker {
125*61046927SAndroid Build Coastguard Worker    unsigned int i;
126*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
127*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
128*61046927SAndroid Build Coastguard Worker    bool convert_params_value = true;
129*61046927SAndroid Build Coastguard Worker 
130*61046927SAndroid Build Coastguard Worker    switch(pname) {
131*61046927SAndroid Build Coastguard Worker    case GL_FOG_MODE:
132*61046927SAndroid Build Coastguard Worker       convert_params_value = false;
133*61046927SAndroid Build Coastguard Worker       n_params = 1;
134*61046927SAndroid Build Coastguard Worker       break;
135*61046927SAndroid Build Coastguard Worker    case GL_FOG_COLOR:
136*61046927SAndroid Build Coastguard Worker       n_params = 4;
137*61046927SAndroid Build Coastguard Worker       break;
138*61046927SAndroid Build Coastguard Worker    case GL_FOG_DENSITY:
139*61046927SAndroid Build Coastguard Worker    case GL_FOG_START:
140*61046927SAndroid Build Coastguard Worker    case GL_FOG_END:
141*61046927SAndroid Build Coastguard Worker       n_params = 1;
142*61046927SAndroid Build Coastguard Worker       break;
143*61046927SAndroid Build Coastguard Worker    default:
144*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
145*61046927SAndroid Build Coastguard Worker                   "glFogxv(pname=0x%x)", pname);
146*61046927SAndroid Build Coastguard Worker       return;
147*61046927SAndroid Build Coastguard Worker    }
148*61046927SAndroid Build Coastguard Worker 
149*61046927SAndroid Build Coastguard Worker    if (convert_params_value) {
150*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
151*61046927SAndroid Build Coastguard Worker          converted_params[i] = (GLfloat) (params[i] / 65536.0f);
152*61046927SAndroid Build Coastguard Worker       }
153*61046927SAndroid Build Coastguard Worker    } else {
154*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
155*61046927SAndroid Build Coastguard Worker          converted_params[i] = (GLfloat) params[i];
156*61046927SAndroid Build Coastguard Worker       }
157*61046927SAndroid Build Coastguard Worker    }
158*61046927SAndroid Build Coastguard Worker 
159*61046927SAndroid Build Coastguard Worker    _mesa_Fogfv(pname, converted_params);
160*61046927SAndroid Build Coastguard Worker }
161*61046927SAndroid Build Coastguard Worker 
162*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Frustumf(GLfloat left,GLfloat right,GLfloat bottom,GLfloat top,GLfloat zNear,GLfloat zFar)163*61046927SAndroid Build Coastguard Worker _mesa_Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
164*61046927SAndroid Build Coastguard Worker              GLfloat zNear, GLfloat zFar)
165*61046927SAndroid Build Coastguard Worker {
166*61046927SAndroid Build Coastguard Worker    _mesa_Frustum((GLdouble) (left),
167*61046927SAndroid Build Coastguard Worker                  (GLdouble) (right),
168*61046927SAndroid Build Coastguard Worker                  (GLdouble) (bottom),
169*61046927SAndroid Build Coastguard Worker                  (GLdouble) (top),
170*61046927SAndroid Build Coastguard Worker                  (GLdouble) (zNear),
171*61046927SAndroid Build Coastguard Worker                  (GLdouble) (zFar));
172*61046927SAndroid Build Coastguard Worker }
173*61046927SAndroid Build Coastguard Worker 
174*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Frustumx(GLfixed left,GLfixed right,GLfixed bottom,GLfixed top,GLfixed zNear,GLfixed zFar)175*61046927SAndroid Build Coastguard Worker _mesa_Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
176*61046927SAndroid Build Coastguard Worker              GLfixed zNear, GLfixed zFar)
177*61046927SAndroid Build Coastguard Worker {
178*61046927SAndroid Build Coastguard Worker    _mesa_Frustum((GLdouble) (left / 65536.0),
179*61046927SAndroid Build Coastguard Worker                  (GLdouble) (right / 65536.0),
180*61046927SAndroid Build Coastguard Worker                  (GLdouble) (bottom / 65536.0),
181*61046927SAndroid Build Coastguard Worker                  (GLdouble) (top / 65536.0),
182*61046927SAndroid Build Coastguard Worker                  (GLdouble) (zNear / 65536.0),
183*61046927SAndroid Build Coastguard Worker                  (GLdouble) (zFar / 65536.0));
184*61046927SAndroid Build Coastguard Worker }
185*61046927SAndroid Build Coastguard Worker 
186*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_GetClipPlanef(GLenum plane,GLfloat * equation)187*61046927SAndroid Build Coastguard Worker _mesa_GetClipPlanef(GLenum plane, GLfloat *equation)
188*61046927SAndroid Build Coastguard Worker {
189*61046927SAndroid Build Coastguard Worker    unsigned int i;
190*61046927SAndroid Build Coastguard Worker    GLdouble converted_equation[4];
191*61046927SAndroid Build Coastguard Worker 
192*61046927SAndroid Build Coastguard Worker    _mesa_GetClipPlane(plane, converted_equation);
193*61046927SAndroid Build Coastguard Worker    for (i = 0; i < ARRAY_SIZE(converted_equation); i++) {
194*61046927SAndroid Build Coastguard Worker       equation[i] = (GLfloat) (converted_equation[i]);
195*61046927SAndroid Build Coastguard Worker    }
196*61046927SAndroid Build Coastguard Worker }
197*61046927SAndroid Build Coastguard Worker 
198*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_GetClipPlanex(GLenum plane,GLfixed * equation)199*61046927SAndroid Build Coastguard Worker _mesa_GetClipPlanex(GLenum plane, GLfixed *equation)
200*61046927SAndroid Build Coastguard Worker {
201*61046927SAndroid Build Coastguard Worker    unsigned int i;
202*61046927SAndroid Build Coastguard Worker    GLdouble converted_equation[4];
203*61046927SAndroid Build Coastguard Worker 
204*61046927SAndroid Build Coastguard Worker    _mesa_GetClipPlane(plane, converted_equation);
205*61046927SAndroid Build Coastguard Worker    for (i = 0; i < ARRAY_SIZE(converted_equation); i++) {
206*61046927SAndroid Build Coastguard Worker       equation[i] = (GLfixed) (converted_equation[i] * 65536);
207*61046927SAndroid Build Coastguard Worker    }
208*61046927SAndroid Build Coastguard Worker }
209*61046927SAndroid Build Coastguard Worker 
210*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_GetLightxv(GLenum light,GLenum pname,GLfixed * params)211*61046927SAndroid Build Coastguard Worker _mesa_GetLightxv(GLenum light, GLenum pname, GLfixed *params)
212*61046927SAndroid Build Coastguard Worker {
213*61046927SAndroid Build Coastguard Worker    unsigned int i;
214*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
215*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
216*61046927SAndroid Build Coastguard Worker 
217*61046927SAndroid Build Coastguard Worker    if (light < GL_LIGHT0 || light > GL_LIGHT7) {
218*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
219*61046927SAndroid Build Coastguard Worker                   "glGetLightxv(light=0x%x)", light);
220*61046927SAndroid Build Coastguard Worker       return;
221*61046927SAndroid Build Coastguard Worker    }
222*61046927SAndroid Build Coastguard Worker    switch(pname) {
223*61046927SAndroid Build Coastguard Worker    case GL_AMBIENT:
224*61046927SAndroid Build Coastguard Worker    case GL_DIFFUSE:
225*61046927SAndroid Build Coastguard Worker    case GL_SPECULAR:
226*61046927SAndroid Build Coastguard Worker    case GL_POSITION:
227*61046927SAndroid Build Coastguard Worker       n_params = 4;
228*61046927SAndroid Build Coastguard Worker       break;
229*61046927SAndroid Build Coastguard Worker    case GL_SPOT_DIRECTION:
230*61046927SAndroid Build Coastguard Worker       n_params = 3;
231*61046927SAndroid Build Coastguard Worker       break;
232*61046927SAndroid Build Coastguard Worker    case GL_SPOT_EXPONENT:
233*61046927SAndroid Build Coastguard Worker    case GL_SPOT_CUTOFF:
234*61046927SAndroid Build Coastguard Worker    case GL_CONSTANT_ATTENUATION:
235*61046927SAndroid Build Coastguard Worker    case GL_LINEAR_ATTENUATION:
236*61046927SAndroid Build Coastguard Worker    case GL_QUADRATIC_ATTENUATION:
237*61046927SAndroid Build Coastguard Worker       n_params = 1;
238*61046927SAndroid Build Coastguard Worker       break;
239*61046927SAndroid Build Coastguard Worker    default:
240*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
241*61046927SAndroid Build Coastguard Worker                   "glGetLightxv(pname=0x%x)", pname);
242*61046927SAndroid Build Coastguard Worker       return;
243*61046927SAndroid Build Coastguard Worker    }
244*61046927SAndroid Build Coastguard Worker 
245*61046927SAndroid Build Coastguard Worker    _mesa_GetLightfv(light, pname, converted_params);
246*61046927SAndroid Build Coastguard Worker    for (i = 0; i < n_params; i++) {
247*61046927SAndroid Build Coastguard Worker       params[i] = (GLint) (converted_params[i] * 65536);
248*61046927SAndroid Build Coastguard Worker    }
249*61046927SAndroid Build Coastguard Worker }
250*61046927SAndroid Build Coastguard Worker 
251*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_GetMaterialxv(GLenum face,GLenum pname,GLfixed * params)252*61046927SAndroid Build Coastguard Worker _mesa_GetMaterialxv(GLenum face, GLenum pname, GLfixed *params)
253*61046927SAndroid Build Coastguard Worker {
254*61046927SAndroid Build Coastguard Worker    unsigned int i;
255*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
256*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
257*61046927SAndroid Build Coastguard Worker 
258*61046927SAndroid Build Coastguard Worker    switch(face) {
259*61046927SAndroid Build Coastguard Worker    case GL_FRONT:
260*61046927SAndroid Build Coastguard Worker    case GL_BACK:
261*61046927SAndroid Build Coastguard Worker       break;
262*61046927SAndroid Build Coastguard Worker    default:
263*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
264*61046927SAndroid Build Coastguard Worker                   "glGetMaterialxv(face=0x%x)", face);
265*61046927SAndroid Build Coastguard Worker       return;
266*61046927SAndroid Build Coastguard Worker    }
267*61046927SAndroid Build Coastguard Worker    switch(pname) {
268*61046927SAndroid Build Coastguard Worker    case GL_SHININESS:
269*61046927SAndroid Build Coastguard Worker       n_params = 1;
270*61046927SAndroid Build Coastguard Worker       break;
271*61046927SAndroid Build Coastguard Worker    case GL_AMBIENT:
272*61046927SAndroid Build Coastguard Worker    case GL_DIFFUSE:
273*61046927SAndroid Build Coastguard Worker    case GL_SPECULAR:
274*61046927SAndroid Build Coastguard Worker    case GL_EMISSION:
275*61046927SAndroid Build Coastguard Worker       n_params = 4;
276*61046927SAndroid Build Coastguard Worker       break;
277*61046927SAndroid Build Coastguard Worker    default:
278*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
279*61046927SAndroid Build Coastguard Worker                   "glGetMaterialxv(pname=0x%x)", pname);
280*61046927SAndroid Build Coastguard Worker       return;
281*61046927SAndroid Build Coastguard Worker    }
282*61046927SAndroid Build Coastguard Worker 
283*61046927SAndroid Build Coastguard Worker    _mesa_GetMaterialfv(face, pname, converted_params);
284*61046927SAndroid Build Coastguard Worker    for (i = 0; i < n_params; i++) {
285*61046927SAndroid Build Coastguard Worker       params[i] = (GLint) (converted_params[i] * 65536);
286*61046927SAndroid Build Coastguard Worker    }
287*61046927SAndroid Build Coastguard Worker }
288*61046927SAndroid Build Coastguard Worker 
289*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_GetTexEnvxv(GLenum target,GLenum pname,GLfixed * params)290*61046927SAndroid Build Coastguard Worker _mesa_GetTexEnvxv(GLenum target, GLenum pname, GLfixed *params)
291*61046927SAndroid Build Coastguard Worker {
292*61046927SAndroid Build Coastguard Worker    unsigned int i;
293*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
294*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
295*61046927SAndroid Build Coastguard Worker    bool convert_params_value = true;
296*61046927SAndroid Build Coastguard Worker 
297*61046927SAndroid Build Coastguard Worker    switch(target) {
298*61046927SAndroid Build Coastguard Worker    case GL_POINT_SPRITE:
299*61046927SAndroid Build Coastguard Worker       if (pname != GL_COORD_REPLACE) {
300*61046927SAndroid Build Coastguard Worker          _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
301*61046927SAndroid Build Coastguard Worker                      "glGetTexEnvxv(target=0x%x)", target);
302*61046927SAndroid Build Coastguard Worker          return;
303*61046927SAndroid Build Coastguard Worker       }
304*61046927SAndroid Build Coastguard Worker       break;
305*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_FILTER_CONTROL_EXT:
306*61046927SAndroid Build Coastguard Worker       if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
307*61046927SAndroid Build Coastguard Worker          _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
308*61046927SAndroid Build Coastguard Worker                      "glGetTexEnvxv(target=0x%x)", target);
309*61046927SAndroid Build Coastguard Worker          return;
310*61046927SAndroid Build Coastguard Worker       }
311*61046927SAndroid Build Coastguard Worker       break;
312*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_ENV:
313*61046927SAndroid Build Coastguard Worker       if (pname != GL_TEXTURE_ENV_COLOR &&
314*61046927SAndroid Build Coastguard Worker           pname != GL_RGB_SCALE &&
315*61046927SAndroid Build Coastguard Worker           pname != GL_ALPHA_SCALE &&
316*61046927SAndroid Build Coastguard Worker           pname != GL_TEXTURE_ENV_MODE &&
317*61046927SAndroid Build Coastguard Worker           pname != GL_COMBINE_RGB &&
318*61046927SAndroid Build Coastguard Worker           pname != GL_COMBINE_ALPHA &&
319*61046927SAndroid Build Coastguard Worker           pname != GL_SRC0_RGB &&
320*61046927SAndroid Build Coastguard Worker           pname != GL_SRC1_RGB &&
321*61046927SAndroid Build Coastguard Worker           pname != GL_SRC2_RGB &&
322*61046927SAndroid Build Coastguard Worker           pname != GL_SRC0_ALPHA &&
323*61046927SAndroid Build Coastguard Worker           pname != GL_SRC1_ALPHA &&
324*61046927SAndroid Build Coastguard Worker           pname != GL_SRC2_ALPHA &&
325*61046927SAndroid Build Coastguard Worker           pname != GL_OPERAND0_RGB &&
326*61046927SAndroid Build Coastguard Worker           pname != GL_OPERAND1_RGB &&
327*61046927SAndroid Build Coastguard Worker           pname != GL_OPERAND2_RGB &&
328*61046927SAndroid Build Coastguard Worker           pname != GL_OPERAND0_ALPHA &&
329*61046927SAndroid Build Coastguard Worker           pname != GL_OPERAND1_ALPHA &&
330*61046927SAndroid Build Coastguard Worker           pname != GL_OPERAND2_ALPHA) {
331*61046927SAndroid Build Coastguard Worker          _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
332*61046927SAndroid Build Coastguard Worker                      "glGetTexEnvxv(target=0x%x)", target);
333*61046927SAndroid Build Coastguard Worker          return;
334*61046927SAndroid Build Coastguard Worker       }
335*61046927SAndroid Build Coastguard Worker       break;
336*61046927SAndroid Build Coastguard Worker    default:
337*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
338*61046927SAndroid Build Coastguard Worker                   "glGetTexEnvxv(target=0x%x)", target);
339*61046927SAndroid Build Coastguard Worker       return;
340*61046927SAndroid Build Coastguard Worker    }
341*61046927SAndroid Build Coastguard Worker    switch(pname) {
342*61046927SAndroid Build Coastguard Worker    case GL_COORD_REPLACE:
343*61046927SAndroid Build Coastguard Worker       convert_params_value = false;
344*61046927SAndroid Build Coastguard Worker       n_params = 1;
345*61046927SAndroid Build Coastguard Worker       break;
346*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_LOD_BIAS_EXT:
347*61046927SAndroid Build Coastguard Worker       n_params = 1;
348*61046927SAndroid Build Coastguard Worker       break;
349*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_ENV_COLOR:
350*61046927SAndroid Build Coastguard Worker       n_params = 4;
351*61046927SAndroid Build Coastguard Worker       break;
352*61046927SAndroid Build Coastguard Worker    case GL_RGB_SCALE:
353*61046927SAndroid Build Coastguard Worker    case GL_ALPHA_SCALE:
354*61046927SAndroid Build Coastguard Worker       n_params = 1;
355*61046927SAndroid Build Coastguard Worker       break;
356*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_ENV_MODE:
357*61046927SAndroid Build Coastguard Worker    case GL_COMBINE_RGB:
358*61046927SAndroid Build Coastguard Worker    case GL_COMBINE_ALPHA:
359*61046927SAndroid Build Coastguard Worker    case GL_SRC0_RGB:
360*61046927SAndroid Build Coastguard Worker    case GL_SRC1_RGB:
361*61046927SAndroid Build Coastguard Worker    case GL_SRC2_RGB:
362*61046927SAndroid Build Coastguard Worker    case GL_SRC0_ALPHA:
363*61046927SAndroid Build Coastguard Worker    case GL_SRC1_ALPHA:
364*61046927SAndroid Build Coastguard Worker    case GL_SRC2_ALPHA:
365*61046927SAndroid Build Coastguard Worker    case GL_OPERAND0_RGB:
366*61046927SAndroid Build Coastguard Worker    case GL_OPERAND1_RGB:
367*61046927SAndroid Build Coastguard Worker    case GL_OPERAND2_RGB:
368*61046927SAndroid Build Coastguard Worker    case GL_OPERAND0_ALPHA:
369*61046927SAndroid Build Coastguard Worker    case GL_OPERAND1_ALPHA:
370*61046927SAndroid Build Coastguard Worker    case GL_OPERAND2_ALPHA:
371*61046927SAndroid Build Coastguard Worker       convert_params_value = false;
372*61046927SAndroid Build Coastguard Worker       n_params = 1;
373*61046927SAndroid Build Coastguard Worker       break;
374*61046927SAndroid Build Coastguard Worker    default:
375*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
376*61046927SAndroid Build Coastguard Worker                   "glGetTexEnvxv(pname=0x%x)", pname);
377*61046927SAndroid Build Coastguard Worker       return;
378*61046927SAndroid Build Coastguard Worker    }
379*61046927SAndroid Build Coastguard Worker 
380*61046927SAndroid Build Coastguard Worker    _mesa_GetTexEnvfv(target, pname, converted_params);
381*61046927SAndroid Build Coastguard Worker    if (convert_params_value) {
382*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
383*61046927SAndroid Build Coastguard Worker          params[i] = (GLint) (converted_params[i] * 65536);
384*61046927SAndroid Build Coastguard Worker       }
385*61046927SAndroid Build Coastguard Worker    } else {
386*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
387*61046927SAndroid Build Coastguard Worker          params[i] = (GLfixed) converted_params[i];
388*61046927SAndroid Build Coastguard Worker       }
389*61046927SAndroid Build Coastguard Worker    }
390*61046927SAndroid Build Coastguard Worker }
391*61046927SAndroid Build Coastguard Worker 
392*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_GetTexGenxvOES(GLenum coord,GLenum pname,GLfixed * params)393*61046927SAndroid Build Coastguard Worker _mesa_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
394*61046927SAndroid Build Coastguard Worker {
395*61046927SAndroid Build Coastguard Worker    _mesa_GetTexGeniv(coord, pname, (GLint *) params);
396*61046927SAndroid Build Coastguard Worker }
397*61046927SAndroid Build Coastguard Worker 
398*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_GetTexParameterxv(GLenum target,GLenum pname,GLfixed * params)399*61046927SAndroid Build Coastguard Worker _mesa_GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params)
400*61046927SAndroid Build Coastguard Worker {
401*61046927SAndroid Build Coastguard Worker    unsigned int i;
402*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
403*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
404*61046927SAndroid Build Coastguard Worker    bool convert_params_value = true;
405*61046927SAndroid Build Coastguard Worker 
406*61046927SAndroid Build Coastguard Worker    switch(target) {
407*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_2D:
408*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_CUBE_MAP:
409*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_EXTERNAL_OES:
410*61046927SAndroid Build Coastguard Worker       break;
411*61046927SAndroid Build Coastguard Worker    default:
412*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
413*61046927SAndroid Build Coastguard Worker                   "glGetTexParameterxv(target=0x%x)", target);
414*61046927SAndroid Build Coastguard Worker       return;
415*61046927SAndroid Build Coastguard Worker    }
416*61046927SAndroid Build Coastguard Worker    switch(pname) {
417*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_WRAP_S:
418*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_WRAP_T:
419*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_MIN_FILTER:
420*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_MAG_FILTER:
421*61046927SAndroid Build Coastguard Worker    case GL_GENERATE_MIPMAP:
422*61046927SAndroid Build Coastguard Worker       convert_params_value = false;
423*61046927SAndroid Build Coastguard Worker       n_params = 1;
424*61046927SAndroid Build Coastguard Worker       break;
425*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_CROP_RECT_OES:
426*61046927SAndroid Build Coastguard Worker       n_params = 4;
427*61046927SAndroid Build Coastguard Worker       break;
428*61046927SAndroid Build Coastguard Worker    default:
429*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
430*61046927SAndroid Build Coastguard Worker                   "glGetTexParameterxv(pname=0x%x)", pname);
431*61046927SAndroid Build Coastguard Worker       return;
432*61046927SAndroid Build Coastguard Worker    }
433*61046927SAndroid Build Coastguard Worker 
434*61046927SAndroid Build Coastguard Worker    _mesa_GetTexParameterfv(target, pname, converted_params);
435*61046927SAndroid Build Coastguard Worker    if (convert_params_value) {
436*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
437*61046927SAndroid Build Coastguard Worker          params[i] = (GLint) (converted_params[i] * 65536);
438*61046927SAndroid Build Coastguard Worker       }
439*61046927SAndroid Build Coastguard Worker    } else {
440*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
441*61046927SAndroid Build Coastguard Worker          params[i] = (GLfixed) converted_params[i];
442*61046927SAndroid Build Coastguard Worker       }
443*61046927SAndroid Build Coastguard Worker    }
444*61046927SAndroid Build Coastguard Worker }
445*61046927SAndroid Build Coastguard Worker 
446*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_LightModelx(GLenum pname,GLfixed param)447*61046927SAndroid Build Coastguard Worker _mesa_LightModelx(GLenum pname, GLfixed param)
448*61046927SAndroid Build Coastguard Worker {
449*61046927SAndroid Build Coastguard Worker    _mesa_LightModelf(pname, (GLfloat) param);
450*61046927SAndroid Build Coastguard Worker }
451*61046927SAndroid Build Coastguard Worker 
452*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_LightModelxv(GLenum pname,const GLfixed * params)453*61046927SAndroid Build Coastguard Worker _mesa_LightModelxv(GLenum pname, const GLfixed *params)
454*61046927SAndroid Build Coastguard Worker {
455*61046927SAndroid Build Coastguard Worker    unsigned int i;
456*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
457*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
458*61046927SAndroid Build Coastguard Worker    bool convert_params_value = true;
459*61046927SAndroid Build Coastguard Worker 
460*61046927SAndroid Build Coastguard Worker    switch(pname) {
461*61046927SAndroid Build Coastguard Worker    case GL_LIGHT_MODEL_AMBIENT:
462*61046927SAndroid Build Coastguard Worker       n_params = 4;
463*61046927SAndroid Build Coastguard Worker       break;
464*61046927SAndroid Build Coastguard Worker    case GL_LIGHT_MODEL_TWO_SIDE:
465*61046927SAndroid Build Coastguard Worker       convert_params_value = false;
466*61046927SAndroid Build Coastguard Worker       n_params = 1;
467*61046927SAndroid Build Coastguard Worker       break;
468*61046927SAndroid Build Coastguard Worker    default:
469*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
470*61046927SAndroid Build Coastguard Worker                   "glLightModelxv(pname=0x%x)", pname);
471*61046927SAndroid Build Coastguard Worker       return;
472*61046927SAndroid Build Coastguard Worker    }
473*61046927SAndroid Build Coastguard Worker 
474*61046927SAndroid Build Coastguard Worker    if (convert_params_value) {
475*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
476*61046927SAndroid Build Coastguard Worker          converted_params[i] = (GLfloat) (params[i] / 65536.0f);
477*61046927SAndroid Build Coastguard Worker       }
478*61046927SAndroid Build Coastguard Worker    } else {
479*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
480*61046927SAndroid Build Coastguard Worker          converted_params[i] = (GLfloat) params[i];
481*61046927SAndroid Build Coastguard Worker       }
482*61046927SAndroid Build Coastguard Worker    }
483*61046927SAndroid Build Coastguard Worker 
484*61046927SAndroid Build Coastguard Worker    _mesa_LightModelfv(pname, converted_params);
485*61046927SAndroid Build Coastguard Worker }
486*61046927SAndroid Build Coastguard Worker 
487*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Lightx(GLenum light,GLenum pname,GLfixed param)488*61046927SAndroid Build Coastguard Worker _mesa_Lightx(GLenum light, GLenum pname, GLfixed param)
489*61046927SAndroid Build Coastguard Worker {
490*61046927SAndroid Build Coastguard Worker    _mesa_Lightf(light, pname, (GLfloat) (param / 65536.0f));
491*61046927SAndroid Build Coastguard Worker }
492*61046927SAndroid Build Coastguard Worker 
493*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Lightxv(GLenum light,GLenum pname,const GLfixed * params)494*61046927SAndroid Build Coastguard Worker _mesa_Lightxv(GLenum light, GLenum pname, const GLfixed *params)
495*61046927SAndroid Build Coastguard Worker {
496*61046927SAndroid Build Coastguard Worker    unsigned int i;
497*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
498*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
499*61046927SAndroid Build Coastguard Worker 
500*61046927SAndroid Build Coastguard Worker    if (light < GL_LIGHT0 || light > GL_LIGHT7) {
501*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
502*61046927SAndroid Build Coastguard Worker                   "glLightxv(light=0x%x)", light);
503*61046927SAndroid Build Coastguard Worker       return;
504*61046927SAndroid Build Coastguard Worker    }
505*61046927SAndroid Build Coastguard Worker    switch(pname) {
506*61046927SAndroid Build Coastguard Worker    case GL_AMBIENT:
507*61046927SAndroid Build Coastguard Worker    case GL_DIFFUSE:
508*61046927SAndroid Build Coastguard Worker    case GL_SPECULAR:
509*61046927SAndroid Build Coastguard Worker    case GL_POSITION:
510*61046927SAndroid Build Coastguard Worker       n_params = 4;
511*61046927SAndroid Build Coastguard Worker       break;
512*61046927SAndroid Build Coastguard Worker    case GL_SPOT_DIRECTION:
513*61046927SAndroid Build Coastguard Worker       n_params = 3;
514*61046927SAndroid Build Coastguard Worker       break;
515*61046927SAndroid Build Coastguard Worker    case GL_SPOT_EXPONENT:
516*61046927SAndroid Build Coastguard Worker    case GL_SPOT_CUTOFF:
517*61046927SAndroid Build Coastguard Worker    case GL_CONSTANT_ATTENUATION:
518*61046927SAndroid Build Coastguard Worker    case GL_LINEAR_ATTENUATION:
519*61046927SAndroid Build Coastguard Worker    case GL_QUADRATIC_ATTENUATION:
520*61046927SAndroid Build Coastguard Worker       n_params = 1;
521*61046927SAndroid Build Coastguard Worker       break;
522*61046927SAndroid Build Coastguard Worker    default:
523*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
524*61046927SAndroid Build Coastguard Worker                   "glLightxv(pname=0x%x)", pname);
525*61046927SAndroid Build Coastguard Worker       return;
526*61046927SAndroid Build Coastguard Worker    }
527*61046927SAndroid Build Coastguard Worker 
528*61046927SAndroid Build Coastguard Worker    for (i = 0; i < n_params; i++) {
529*61046927SAndroid Build Coastguard Worker       converted_params[i] = (GLfloat) (params[i] / 65536.0f);
530*61046927SAndroid Build Coastguard Worker    }
531*61046927SAndroid Build Coastguard Worker 
532*61046927SAndroid Build Coastguard Worker    _mesa_Lightfv(light, pname, converted_params);
533*61046927SAndroid Build Coastguard Worker }
534*61046927SAndroid Build Coastguard Worker 
535*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_LineWidthx(GLfixed width)536*61046927SAndroid Build Coastguard Worker _mesa_LineWidthx(GLfixed width)
537*61046927SAndroid Build Coastguard Worker {
538*61046927SAndroid Build Coastguard Worker    _mesa_LineWidth((GLfloat) (width / 65536.0f));
539*61046927SAndroid Build Coastguard Worker }
540*61046927SAndroid Build Coastguard Worker 
541*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_LoadMatrixx(const GLfixed * m)542*61046927SAndroid Build Coastguard Worker _mesa_LoadMatrixx(const GLfixed *m)
543*61046927SAndroid Build Coastguard Worker {
544*61046927SAndroid Build Coastguard Worker    unsigned int i;
545*61046927SAndroid Build Coastguard Worker    GLfloat converted_m[16];
546*61046927SAndroid Build Coastguard Worker 
547*61046927SAndroid Build Coastguard Worker    for (i = 0; i < ARRAY_SIZE(converted_m); i++) {
548*61046927SAndroid Build Coastguard Worker       converted_m[i] = (GLfloat) (m[i] / 65536.0f);
549*61046927SAndroid Build Coastguard Worker    }
550*61046927SAndroid Build Coastguard Worker 
551*61046927SAndroid Build Coastguard Worker    _mesa_LoadMatrixf(converted_m);
552*61046927SAndroid Build Coastguard Worker }
553*61046927SAndroid Build Coastguard Worker 
554*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Materialx(GLenum face,GLenum pname,GLfixed param)555*61046927SAndroid Build Coastguard Worker _mesa_Materialx(GLenum face, GLenum pname, GLfixed param)
556*61046927SAndroid Build Coastguard Worker {
557*61046927SAndroid Build Coastguard Worker    if (face != GL_FRONT_AND_BACK) {
558*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
559*61046927SAndroid Build Coastguard Worker                   "glMaterialx(face=0x%x)", face);
560*61046927SAndroid Build Coastguard Worker       return;
561*61046927SAndroid Build Coastguard Worker    }
562*61046927SAndroid Build Coastguard Worker 
563*61046927SAndroid Build Coastguard Worker    if (pname != GL_SHININESS) {
564*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
565*61046927SAndroid Build Coastguard Worker                   "glMaterialx(pname=0x%x)", pname);
566*61046927SAndroid Build Coastguard Worker       return;
567*61046927SAndroid Build Coastguard Worker    }
568*61046927SAndroid Build Coastguard Worker 
569*61046927SAndroid Build Coastguard Worker    _es_Materialf(face, pname, (GLfloat) (param / 65536.0f));
570*61046927SAndroid Build Coastguard Worker }
571*61046927SAndroid Build Coastguard Worker 
572*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Materialxv(GLenum face,GLenum pname,const GLfixed * params)573*61046927SAndroid Build Coastguard Worker _mesa_Materialxv(GLenum face, GLenum pname, const GLfixed *params)
574*61046927SAndroid Build Coastguard Worker {
575*61046927SAndroid Build Coastguard Worker    unsigned int i;
576*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
577*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
578*61046927SAndroid Build Coastguard Worker 
579*61046927SAndroid Build Coastguard Worker    if (face != GL_FRONT_AND_BACK) {
580*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
581*61046927SAndroid Build Coastguard Worker                   "glMaterialxv(face=0x%x)", face);
582*61046927SAndroid Build Coastguard Worker       return;
583*61046927SAndroid Build Coastguard Worker    }
584*61046927SAndroid Build Coastguard Worker 
585*61046927SAndroid Build Coastguard Worker    switch(pname) {
586*61046927SAndroid Build Coastguard Worker    case GL_AMBIENT:
587*61046927SAndroid Build Coastguard Worker    case GL_DIFFUSE:
588*61046927SAndroid Build Coastguard Worker    case GL_AMBIENT_AND_DIFFUSE:
589*61046927SAndroid Build Coastguard Worker    case GL_SPECULAR:
590*61046927SAndroid Build Coastguard Worker    case GL_EMISSION:
591*61046927SAndroid Build Coastguard Worker       n_params = 4;
592*61046927SAndroid Build Coastguard Worker       break;
593*61046927SAndroid Build Coastguard Worker    case GL_SHININESS:
594*61046927SAndroid Build Coastguard Worker       n_params = 1;
595*61046927SAndroid Build Coastguard Worker       break;
596*61046927SAndroid Build Coastguard Worker    default:
597*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
598*61046927SAndroid Build Coastguard Worker                   "glMaterialxv(pname=0x%x)", pname);
599*61046927SAndroid Build Coastguard Worker       return;
600*61046927SAndroid Build Coastguard Worker    }
601*61046927SAndroid Build Coastguard Worker 
602*61046927SAndroid Build Coastguard Worker    for (i = 0; i < n_params; i++) {
603*61046927SAndroid Build Coastguard Worker       converted_params[i] = (GLfloat) (params[i] / 65536.0f);
604*61046927SAndroid Build Coastguard Worker    }
605*61046927SAndroid Build Coastguard Worker 
606*61046927SAndroid Build Coastguard Worker    _es_Materialfv(face, pname, converted_params);
607*61046927SAndroid Build Coastguard Worker }
608*61046927SAndroid Build Coastguard Worker 
609*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_MultMatrixx(const GLfixed * m)610*61046927SAndroid Build Coastguard Worker _mesa_MultMatrixx(const GLfixed *m)
611*61046927SAndroid Build Coastguard Worker {
612*61046927SAndroid Build Coastguard Worker    unsigned int i;
613*61046927SAndroid Build Coastguard Worker    GLfloat converted_m[16];
614*61046927SAndroid Build Coastguard Worker 
615*61046927SAndroid Build Coastguard Worker    for (i = 0; i < ARRAY_SIZE(converted_m); i++) {
616*61046927SAndroid Build Coastguard Worker       converted_m[i] = (GLfloat) (m[i] / 65536.0f);
617*61046927SAndroid Build Coastguard Worker    }
618*61046927SAndroid Build Coastguard Worker 
619*61046927SAndroid Build Coastguard Worker    _mesa_MultMatrixf(converted_m);
620*61046927SAndroid Build Coastguard Worker }
621*61046927SAndroid Build Coastguard Worker 
622*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_MultiTexCoord4x(GLenum texture,GLfixed s,GLfixed t,GLfixed r,GLfixed q)623*61046927SAndroid Build Coastguard Worker _mesa_MultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
624*61046927SAndroid Build Coastguard Worker {
625*61046927SAndroid Build Coastguard Worker    _es_MultiTexCoord4f(texture,
626*61046927SAndroid Build Coastguard Worker                        (GLfloat) (s / 65536.0f),
627*61046927SAndroid Build Coastguard Worker                        (GLfloat) (t / 65536.0f),
628*61046927SAndroid Build Coastguard Worker                        (GLfloat) (r / 65536.0f),
629*61046927SAndroid Build Coastguard Worker                        (GLfloat) (q / 65536.0f));
630*61046927SAndroid Build Coastguard Worker }
631*61046927SAndroid Build Coastguard Worker 
632*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Normal3x(GLfixed nx,GLfixed ny,GLfixed nz)633*61046927SAndroid Build Coastguard Worker _mesa_Normal3x(GLfixed nx, GLfixed ny, GLfixed nz)
634*61046927SAndroid Build Coastguard Worker {
635*61046927SAndroid Build Coastguard Worker    _es_Normal3f((GLfloat) (nx / 65536.0f),
636*61046927SAndroid Build Coastguard Worker                 (GLfloat) (ny / 65536.0f),
637*61046927SAndroid Build Coastguard Worker                 (GLfloat) (nz / 65536.0f));
638*61046927SAndroid Build Coastguard Worker }
639*61046927SAndroid Build Coastguard Worker 
640*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Orthof(GLfloat left,GLfloat right,GLfloat bottom,GLfloat top,GLfloat zNear,GLfloat zFar)641*61046927SAndroid Build Coastguard Worker _mesa_Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
642*61046927SAndroid Build Coastguard Worker            GLfloat zNear, GLfloat zFar)
643*61046927SAndroid Build Coastguard Worker {
644*61046927SAndroid Build Coastguard Worker    _mesa_Ortho((GLdouble) (left),
645*61046927SAndroid Build Coastguard Worker                (GLdouble) (right),
646*61046927SAndroid Build Coastguard Worker                (GLdouble) (bottom),
647*61046927SAndroid Build Coastguard Worker                (GLdouble) (top),
648*61046927SAndroid Build Coastguard Worker                (GLdouble) (zNear),
649*61046927SAndroid Build Coastguard Worker                (GLdouble) (zFar));
650*61046927SAndroid Build Coastguard Worker }
651*61046927SAndroid Build Coastguard Worker 
652*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Orthox(GLfixed left,GLfixed right,GLfixed bottom,GLfixed top,GLfixed zNear,GLfixed zFar)653*61046927SAndroid Build Coastguard Worker _mesa_Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
654*61046927SAndroid Build Coastguard Worker            GLfixed zNear, GLfixed zFar)
655*61046927SAndroid Build Coastguard Worker {
656*61046927SAndroid Build Coastguard Worker    _mesa_Ortho((GLdouble) (left / 65536.0),
657*61046927SAndroid Build Coastguard Worker                (GLdouble) (right / 65536.0),
658*61046927SAndroid Build Coastguard Worker                (GLdouble) (bottom / 65536.0),
659*61046927SAndroid Build Coastguard Worker                (GLdouble) (top / 65536.0),
660*61046927SAndroid Build Coastguard Worker                (GLdouble) (zNear / 65536.0),
661*61046927SAndroid Build Coastguard Worker                (GLdouble) (zFar / 65536.0));
662*61046927SAndroid Build Coastguard Worker }
663*61046927SAndroid Build Coastguard Worker 
664*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_PointParameterx(GLenum pname,GLfixed param)665*61046927SAndroid Build Coastguard Worker _mesa_PointParameterx(GLenum pname, GLfixed param)
666*61046927SAndroid Build Coastguard Worker {
667*61046927SAndroid Build Coastguard Worker    _mesa_PointParameterf(pname, (GLfloat) (param / 65536.0f));
668*61046927SAndroid Build Coastguard Worker }
669*61046927SAndroid Build Coastguard Worker 
670*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_PointParameterxv(GLenum pname,const GLfixed * params)671*61046927SAndroid Build Coastguard Worker _mesa_PointParameterxv(GLenum pname, const GLfixed *params)
672*61046927SAndroid Build Coastguard Worker {
673*61046927SAndroid Build Coastguard Worker    unsigned int i;
674*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 3;
675*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[3];
676*61046927SAndroid Build Coastguard Worker 
677*61046927SAndroid Build Coastguard Worker    switch(pname) {
678*61046927SAndroid Build Coastguard Worker    case GL_POINT_SIZE_MIN:
679*61046927SAndroid Build Coastguard Worker    case GL_POINT_SIZE_MAX:
680*61046927SAndroid Build Coastguard Worker    case GL_POINT_FADE_THRESHOLD_SIZE:
681*61046927SAndroid Build Coastguard Worker       n_params = 1;
682*61046927SAndroid Build Coastguard Worker       break;
683*61046927SAndroid Build Coastguard Worker    case GL_POINT_DISTANCE_ATTENUATION:
684*61046927SAndroid Build Coastguard Worker       n_params = 3;
685*61046927SAndroid Build Coastguard Worker       break;
686*61046927SAndroid Build Coastguard Worker    default:
687*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
688*61046927SAndroid Build Coastguard Worker                   "glPointParameterxv(pname=0x%x)", pname);
689*61046927SAndroid Build Coastguard Worker       return;
690*61046927SAndroid Build Coastguard Worker    }
691*61046927SAndroid Build Coastguard Worker 
692*61046927SAndroid Build Coastguard Worker    for (i = 0; i < n_params; i++) {
693*61046927SAndroid Build Coastguard Worker       converted_params[i] = (GLfloat) (params[i] / 65536.0f);
694*61046927SAndroid Build Coastguard Worker    }
695*61046927SAndroid Build Coastguard Worker 
696*61046927SAndroid Build Coastguard Worker    _mesa_PointParameterfv(pname, converted_params);
697*61046927SAndroid Build Coastguard Worker }
698*61046927SAndroid Build Coastguard Worker 
699*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_PointSizex(GLfixed size)700*61046927SAndroid Build Coastguard Worker _mesa_PointSizex(GLfixed size)
701*61046927SAndroid Build Coastguard Worker {
702*61046927SAndroid Build Coastguard Worker    _mesa_PointSize((GLfloat) (size / 65536.0f));
703*61046927SAndroid Build Coastguard Worker }
704*61046927SAndroid Build Coastguard Worker 
705*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_PolygonOffsetx(GLfixed factor,GLfixed units)706*61046927SAndroid Build Coastguard Worker _mesa_PolygonOffsetx(GLfixed factor, GLfixed units)
707*61046927SAndroid Build Coastguard Worker {
708*61046927SAndroid Build Coastguard Worker    _mesa_PolygonOffset((GLfloat) (factor / 65536.0f),
709*61046927SAndroid Build Coastguard Worker                        (GLfloat) (units / 65536.0f));
710*61046927SAndroid Build Coastguard Worker }
711*61046927SAndroid Build Coastguard Worker 
712*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Rotatex(GLfixed angle,GLfixed x,GLfixed y,GLfixed z)713*61046927SAndroid Build Coastguard Worker _mesa_Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
714*61046927SAndroid Build Coastguard Worker {
715*61046927SAndroid Build Coastguard Worker    _mesa_Rotatef((GLfloat) (angle / 65536.0f),
716*61046927SAndroid Build Coastguard Worker                  (GLfloat) (x / 65536.0f),
717*61046927SAndroid Build Coastguard Worker                  (GLfloat) (y / 65536.0f),
718*61046927SAndroid Build Coastguard Worker                  (GLfloat) (z / 65536.0f));
719*61046927SAndroid Build Coastguard Worker }
720*61046927SAndroid Build Coastguard Worker 
721*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_SampleCoveragex(GLclampx value,GLboolean invert)722*61046927SAndroid Build Coastguard Worker _mesa_SampleCoveragex(GLclampx value, GLboolean invert)
723*61046927SAndroid Build Coastguard Worker {
724*61046927SAndroid Build Coastguard Worker    _mesa_SampleCoverage((GLclampf) (value / 65536.0f),
725*61046927SAndroid Build Coastguard Worker                            invert);
726*61046927SAndroid Build Coastguard Worker }
727*61046927SAndroid Build Coastguard Worker 
728*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Scalex(GLfixed x,GLfixed y,GLfixed z)729*61046927SAndroid Build Coastguard Worker _mesa_Scalex(GLfixed x, GLfixed y, GLfixed z)
730*61046927SAndroid Build Coastguard Worker {
731*61046927SAndroid Build Coastguard Worker    _mesa_Scalef((GLfloat) (x / 65536.0f),
732*61046927SAndroid Build Coastguard Worker                 (GLfloat) (y / 65536.0f),
733*61046927SAndroid Build Coastguard Worker                 (GLfloat) (z / 65536.0f));
734*61046927SAndroid Build Coastguard Worker }
735*61046927SAndroid Build Coastguard Worker 
736*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_TexEnvx(GLenum target,GLenum pname,GLfixed param)737*61046927SAndroid Build Coastguard Worker _mesa_TexEnvx(GLenum target, GLenum pname, GLfixed param)
738*61046927SAndroid Build Coastguard Worker {
739*61046927SAndroid Build Coastguard Worker    switch(target) {
740*61046927SAndroid Build Coastguard Worker    case GL_POINT_SPRITE:
741*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_FILTER_CONTROL_EXT:
742*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_ENV:
743*61046927SAndroid Build Coastguard Worker       break;
744*61046927SAndroid Build Coastguard Worker    default:
745*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
746*61046927SAndroid Build Coastguard Worker                   "glTexEnvx(target=0x%x)", target);
747*61046927SAndroid Build Coastguard Worker       return;
748*61046927SAndroid Build Coastguard Worker    }
749*61046927SAndroid Build Coastguard Worker 
750*61046927SAndroid Build Coastguard Worker    switch(pname) {
751*61046927SAndroid Build Coastguard Worker    case GL_COORD_REPLACE:
752*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_ENV_MODE:
753*61046927SAndroid Build Coastguard Worker    case GL_COMBINE_RGB:
754*61046927SAndroid Build Coastguard Worker    case GL_COMBINE_ALPHA:
755*61046927SAndroid Build Coastguard Worker    case GL_SRC0_RGB:
756*61046927SAndroid Build Coastguard Worker    case GL_SRC1_RGB:
757*61046927SAndroid Build Coastguard Worker    case GL_SRC2_RGB:
758*61046927SAndroid Build Coastguard Worker    case GL_SRC0_ALPHA:
759*61046927SAndroid Build Coastguard Worker    case GL_SRC1_ALPHA:
760*61046927SAndroid Build Coastguard Worker    case GL_SRC2_ALPHA:
761*61046927SAndroid Build Coastguard Worker    case GL_OPERAND0_RGB:
762*61046927SAndroid Build Coastguard Worker    case GL_OPERAND1_RGB:
763*61046927SAndroid Build Coastguard Worker    case GL_OPERAND2_RGB:
764*61046927SAndroid Build Coastguard Worker    case GL_OPERAND0_ALPHA:
765*61046927SAndroid Build Coastguard Worker    case GL_OPERAND1_ALPHA:
766*61046927SAndroid Build Coastguard Worker    case GL_OPERAND2_ALPHA:
767*61046927SAndroid Build Coastguard Worker       _mesa_TexEnvf(target, pname, (GLfloat) param);
768*61046927SAndroid Build Coastguard Worker       break;
769*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_LOD_BIAS_EXT:
770*61046927SAndroid Build Coastguard Worker    case GL_RGB_SCALE:
771*61046927SAndroid Build Coastguard Worker    case GL_ALPHA_SCALE:
772*61046927SAndroid Build Coastguard Worker       _mesa_TexEnvf(target, pname, (GLfloat) (param / 65536.0f));
773*61046927SAndroid Build Coastguard Worker       break;
774*61046927SAndroid Build Coastguard Worker    default:
775*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
776*61046927SAndroid Build Coastguard Worker                   "glTexEnvx(pname=0x%x)", pname);
777*61046927SAndroid Build Coastguard Worker       return;
778*61046927SAndroid Build Coastguard Worker    }
779*61046927SAndroid Build Coastguard Worker }
780*61046927SAndroid Build Coastguard Worker 
781*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_TexEnvxv(GLenum target,GLenum pname,const GLfixed * params)782*61046927SAndroid Build Coastguard Worker _mesa_TexEnvxv(GLenum target, GLenum pname, const GLfixed *params)
783*61046927SAndroid Build Coastguard Worker {
784*61046927SAndroid Build Coastguard Worker    switch(target) {
785*61046927SAndroid Build Coastguard Worker    case GL_POINT_SPRITE:
786*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_FILTER_CONTROL_EXT:
787*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_ENV:
788*61046927SAndroid Build Coastguard Worker       break;
789*61046927SAndroid Build Coastguard Worker    default:
790*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
791*61046927SAndroid Build Coastguard Worker                   "glTexEnvxv(target=0x%x)", target);
792*61046927SAndroid Build Coastguard Worker       return;
793*61046927SAndroid Build Coastguard Worker    }
794*61046927SAndroid Build Coastguard Worker 
795*61046927SAndroid Build Coastguard Worker    switch(pname) {
796*61046927SAndroid Build Coastguard Worker    case GL_COORD_REPLACE:
797*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_ENV_MODE:
798*61046927SAndroid Build Coastguard Worker    case GL_COMBINE_RGB:
799*61046927SAndroid Build Coastguard Worker    case GL_COMBINE_ALPHA:
800*61046927SAndroid Build Coastguard Worker    case GL_SRC0_RGB:
801*61046927SAndroid Build Coastguard Worker    case GL_SRC1_RGB:
802*61046927SAndroid Build Coastguard Worker    case GL_SRC2_RGB:
803*61046927SAndroid Build Coastguard Worker    case GL_SRC0_ALPHA:
804*61046927SAndroid Build Coastguard Worker    case GL_SRC1_ALPHA:
805*61046927SAndroid Build Coastguard Worker    case GL_SRC2_ALPHA:
806*61046927SAndroid Build Coastguard Worker    case GL_OPERAND0_RGB:
807*61046927SAndroid Build Coastguard Worker    case GL_OPERAND1_RGB:
808*61046927SAndroid Build Coastguard Worker    case GL_OPERAND2_RGB:
809*61046927SAndroid Build Coastguard Worker    case GL_OPERAND0_ALPHA:
810*61046927SAndroid Build Coastguard Worker    case GL_OPERAND1_ALPHA:
811*61046927SAndroid Build Coastguard Worker    case GL_OPERAND2_ALPHA:
812*61046927SAndroid Build Coastguard Worker       _mesa_TexEnvf(target, pname, (GLfloat) params[0]);
813*61046927SAndroid Build Coastguard Worker       break;
814*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_LOD_BIAS_EXT:
815*61046927SAndroid Build Coastguard Worker    case GL_RGB_SCALE:
816*61046927SAndroid Build Coastguard Worker    case GL_ALPHA_SCALE:
817*61046927SAndroid Build Coastguard Worker       _mesa_TexEnvf(target, pname, (GLfloat) (params[0] / 65536.0f));
818*61046927SAndroid Build Coastguard Worker       break;
819*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_ENV_COLOR: {
820*61046927SAndroid Build Coastguard Worker       unsigned int i;
821*61046927SAndroid Build Coastguard Worker       GLfloat converted_params[4];
822*61046927SAndroid Build Coastguard Worker 
823*61046927SAndroid Build Coastguard Worker       for (i = 0; i < ARRAY_SIZE(converted_params); i++) {
824*61046927SAndroid Build Coastguard Worker          converted_params[i] = (GLfloat) (params[i] / 65536.0f);
825*61046927SAndroid Build Coastguard Worker       }
826*61046927SAndroid Build Coastguard Worker 
827*61046927SAndroid Build Coastguard Worker       _mesa_TexEnvfv(target, pname, converted_params);
828*61046927SAndroid Build Coastguard Worker       break;
829*61046927SAndroid Build Coastguard Worker    }
830*61046927SAndroid Build Coastguard Worker    default:
831*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
832*61046927SAndroid Build Coastguard Worker                   "glTexEnvxv(pname=0x%x)", pname);
833*61046927SAndroid Build Coastguard Worker       return;
834*61046927SAndroid Build Coastguard Worker    }
835*61046927SAndroid Build Coastguard Worker }
836*61046927SAndroid Build Coastguard Worker 
837*61046927SAndroid Build Coastguard Worker static void
_es_TexGenf(GLenum coord,GLenum pname,GLfloat param)838*61046927SAndroid Build Coastguard Worker _es_TexGenf(GLenum coord, GLenum pname, GLfloat param)
839*61046927SAndroid Build Coastguard Worker {
840*61046927SAndroid Build Coastguard Worker    if (coord != GL_TEXTURE_GEN_STR_OES) {
841*61046927SAndroid Build Coastguard Worker       GET_CURRENT_CONTEXT(ctx);
842*61046927SAndroid Build Coastguard Worker       _mesa_error( ctx, GL_INVALID_ENUM, "glTexGen[fx](pname)" );
843*61046927SAndroid Build Coastguard Worker       return;
844*61046927SAndroid Build Coastguard Worker    }
845*61046927SAndroid Build Coastguard Worker    /* set S, T, and R at the same time */
846*61046927SAndroid Build Coastguard Worker    _mesa_TexGenf(GL_S, pname, param);
847*61046927SAndroid Build Coastguard Worker    _mesa_TexGenf(GL_T, pname, param);
848*61046927SAndroid Build Coastguard Worker    _mesa_TexGenf(GL_R, pname, param);
849*61046927SAndroid Build Coastguard Worker }
850*61046927SAndroid Build Coastguard Worker 
851*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_TexGenxOES(GLenum coord,GLenum pname,GLfixed param)852*61046927SAndroid Build Coastguard Worker _mesa_TexGenxOES(GLenum coord, GLenum pname, GLfixed param)
853*61046927SAndroid Build Coastguard Worker {
854*61046927SAndroid Build Coastguard Worker    _es_TexGenf(coord, pname, (GLfloat) param);
855*61046927SAndroid Build Coastguard Worker }
856*61046927SAndroid Build Coastguard Worker 
857*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_TexGenxvOES(GLenum coord,GLenum pname,const GLfixed * params)858*61046927SAndroid Build Coastguard Worker _mesa_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params)
859*61046927SAndroid Build Coastguard Worker {
860*61046927SAndroid Build Coastguard Worker    _es_TexGenf(coord, pname, (GLfloat) params[0]);
861*61046927SAndroid Build Coastguard Worker }
862*61046927SAndroid Build Coastguard Worker 
863*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_TexParameterx(GLenum target,GLenum pname,GLfixed param)864*61046927SAndroid Build Coastguard Worker _mesa_TexParameterx(GLenum target, GLenum pname, GLfixed param)
865*61046927SAndroid Build Coastguard Worker {
866*61046927SAndroid Build Coastguard Worker    if (pname == GL_TEXTURE_MAX_ANISOTROPY_EXT) {
867*61046927SAndroid Build Coastguard Worker       _mesa_TexParameterf(target, pname, (GLfloat) (param / 65536.0f));
868*61046927SAndroid Build Coastguard Worker    } else {
869*61046927SAndroid Build Coastguard Worker       _mesa_TexParameterf(target, pname, (GLfloat) param);
870*61046927SAndroid Build Coastguard Worker    }
871*61046927SAndroid Build Coastguard Worker }
872*61046927SAndroid Build Coastguard Worker 
873*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_TexParameterxv(GLenum target,GLenum pname,const GLfixed * params)874*61046927SAndroid Build Coastguard Worker _mesa_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params)
875*61046927SAndroid Build Coastguard Worker {
876*61046927SAndroid Build Coastguard Worker    unsigned int i;
877*61046927SAndroid Build Coastguard Worker    unsigned int n_params = 4;
878*61046927SAndroid Build Coastguard Worker    GLfloat converted_params[4];
879*61046927SAndroid Build Coastguard Worker    bool convert_params_value = true;
880*61046927SAndroid Build Coastguard Worker 
881*61046927SAndroid Build Coastguard Worker    switch(target) {
882*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_2D:
883*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_CUBE_MAP:
884*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_EXTERNAL_OES:
885*61046927SAndroid Build Coastguard Worker       break;
886*61046927SAndroid Build Coastguard Worker    default:
887*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
888*61046927SAndroid Build Coastguard Worker                   "glTexParameterxv(target=0x%x)", target);
889*61046927SAndroid Build Coastguard Worker       return;
890*61046927SAndroid Build Coastguard Worker    }
891*61046927SAndroid Build Coastguard Worker    switch(pname) {
892*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_WRAP_S:
893*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_WRAP_T:
894*61046927SAndroid Build Coastguard Worker       convert_params_value = false;
895*61046927SAndroid Build Coastguard Worker       n_params = 1;
896*61046927SAndroid Build Coastguard Worker       break;
897*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_MIN_FILTER:
898*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_MAG_FILTER:
899*61046927SAndroid Build Coastguard Worker    case GL_GENERATE_MIPMAP:
900*61046927SAndroid Build Coastguard Worker       convert_params_value = false;
901*61046927SAndroid Build Coastguard Worker       n_params = 1;
902*61046927SAndroid Build Coastguard Worker       break;
903*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_MAX_ANISOTROPY_EXT:
904*61046927SAndroid Build Coastguard Worker       n_params = 1;
905*61046927SAndroid Build Coastguard Worker       break;
906*61046927SAndroid Build Coastguard Worker    case GL_TEXTURE_CROP_RECT_OES:
907*61046927SAndroid Build Coastguard Worker       n_params = 4;
908*61046927SAndroid Build Coastguard Worker       break;
909*61046927SAndroid Build Coastguard Worker    default:
910*61046927SAndroid Build Coastguard Worker       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
911*61046927SAndroid Build Coastguard Worker                   "glTexParameterxv(pname=0x%x)", pname);
912*61046927SAndroid Build Coastguard Worker       return;
913*61046927SAndroid Build Coastguard Worker    }
914*61046927SAndroid Build Coastguard Worker 
915*61046927SAndroid Build Coastguard Worker    if (convert_params_value) {
916*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
917*61046927SAndroid Build Coastguard Worker          converted_params[i] = (GLfloat) (params[i] / 65536.0f);
918*61046927SAndroid Build Coastguard Worker       }
919*61046927SAndroid Build Coastguard Worker    } else {
920*61046927SAndroid Build Coastguard Worker       for (i = 0; i < n_params; i++) {
921*61046927SAndroid Build Coastguard Worker          converted_params[i] = (GLfloat) params[i];
922*61046927SAndroid Build Coastguard Worker       }
923*61046927SAndroid Build Coastguard Worker    }
924*61046927SAndroid Build Coastguard Worker 
925*61046927SAndroid Build Coastguard Worker    _mesa_TexParameterfv(target, pname, converted_params);
926*61046927SAndroid Build Coastguard Worker }
927*61046927SAndroid Build Coastguard Worker 
928*61046927SAndroid Build Coastguard Worker void GL_APIENTRY
_mesa_Translatex(GLfixed x,GLfixed y,GLfixed z)929*61046927SAndroid Build Coastguard Worker _mesa_Translatex(GLfixed x, GLfixed y, GLfixed z)
930*61046927SAndroid Build Coastguard Worker {
931*61046927SAndroid Build Coastguard Worker     _mesa_Translatef((GLfloat) (x / 65536.0f),
932*61046927SAndroid Build Coastguard Worker                      (GLfloat) (y / 65536.0f),
933*61046927SAndroid Build Coastguard Worker                      (GLfloat) (z / 65536.0f));
934*61046927SAndroid Build Coastguard Worker }
935