es1_conversion.c revision a0595cb4506251509e032a2592d6bb684480de4b
1#include <stdbool.h>
2#include "main/mfeatures.h"
3
4#if FEATURE_ES1
5
6#include "api_loopback.h"
7#include "api_exec.h"
8#include "blend.h"
9#include "clear.h"
10#include "clip.h"
11#include "context.h"
12#include "depth.h"
13#include "fog.h"
14#include "imports.h"
15#include "light.h"
16#include "lines.h"
17#include "matrix.h"
18#include "multisample.h"
19#include "pixelstore.h"
20#include "points.h"
21#include "polygon.h"
22#include "readpix.h"
23#include "texenv.h"
24#include "texgen.h"
25#include "texobj.h"
26#include "texparam.h"
27#include "mtypes.h"
28#include "viewport.h"
29#include "main/drawtex.h"
30#include "vbo/vbo.h"
31
32#ifndef GL_APIENTRY
33#define GL_APIENTRY GLAPIENTRY
34#endif
35
36#include "main/es1_conversion.h"
37
38void GL_APIENTRY
39_es_AlphaFuncx(GLenum func, GLclampx ref)
40{
41   _mesa_AlphaFunc(func, (GLclampf) (ref / 65536.0f));
42}
43
44void GL_APIENTRY
45_es_ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
46{
47   _mesa_ClearColor((GLclampf) (red / 65536.0f),
48                    (GLclampf) (green / 65536.0f),
49                    (GLclampf) (blue / 65536.0f),
50                    (GLclampf) (alpha / 65536.0f));
51}
52
53void GL_APIENTRY
54_es_ClearDepthx(GLclampx depth)
55{
56   _mesa_ClearDepthf((GLclampf) (depth / 65536.0f));
57}
58
59void GL_APIENTRY
60_es_ClipPlanef(GLenum plane, const GLfloat *equation)
61{
62   unsigned int i;
63   GLdouble converted_equation[4];
64
65   for (i = 0; i < Elements(converted_equation); i++) {
66      converted_equation[i] = (GLdouble) (equation[i]);
67   }
68
69   _mesa_ClipPlane(plane, converted_equation);
70}
71
72void GL_APIENTRY
73_es_ClipPlanex(GLenum plane, const GLfixed *equation)
74{
75   unsigned int i;
76   GLdouble converted_equation[4];
77
78   for (i = 0; i < Elements(converted_equation); i++) {
79      converted_equation[i] = (GLdouble) (equation[i] / 65536.0);
80   }
81
82   _mesa_ClipPlane(plane, converted_equation);
83}
84
85void GL_APIENTRY
86_es_Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
87{
88    _es_Color4f((GLfloat) (red / 255.0f),
89                (GLfloat) (green / 255.0f),
90                (GLfloat) (blue / 255.0f),
91                (GLfloat) (alpha / 255.0f));
92}
93
94void GL_APIENTRY
95_es_Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
96{
97    _es_Color4f((GLfloat) (red / 65536.0f),
98                (GLfloat) (green / 65536.0f),
99                (GLfloat) (blue / 65536.0f),
100                (GLfloat) (alpha / 65536.0f));
101}
102
103void GL_APIENTRY
104_es_DepthRangex(GLclampx zNear, GLclampx zFar)
105{
106    _mesa_DepthRangef((GLclampf) (zNear / 65536.0f),
107                      (GLclampf) (zFar / 65536.0f));
108}
109
110void GL_APIENTRY
111_es_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h)
112{
113
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));
119}
120
121void GL_APIENTRY
122_es_DrawTexxvOES(const GLfixed *coords)
123{
124    unsigned int i;
125    GLfloat converted_coords[5];
126
127    for (i = 0; i < Elements(converted_coords); i++) {
128        converted_coords[i] = (GLfloat) (coords[i] / 65536.0f);
129    }
130
131    _mesa_DrawTexfv(converted_coords);
132}
133
134void GL_APIENTRY
135_es_Fogx(GLenum pname, GLfixed param)
136{
137   bool convert_param_value = true;
138
139   switch(pname) {
140   case GL_FOG_MODE:
141      if (param != GL_EXP && param != GL_EXP2 && param != GL_LINEAR) {
142         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
143                     "glFogx(pname=0x%x)", pname);
144         return;
145      }
146      convert_param_value = false;
147      break;
148   case GL_FOG_DENSITY:
149   case GL_FOG_START:
150   case GL_FOG_END:
151      break;
152   default:
153      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
154                  "glFogx(pname=0x%x)", pname);
155      return;
156   }
157
158   if (convert_param_value) {
159      _mesa_Fogf(pname, (GLfloat) (param / 65536.0f));
160   } else {
161      _mesa_Fogf(pname, (GLfloat) param);
162   }
163
164}
165
166void GL_APIENTRY
167_es_Fogxv(GLenum pname, const GLfixed *params)
168{
169   unsigned int i;
170   unsigned int n_params = 4;
171   GLfloat converted_params[4];
172   bool convert_params_value = true;
173
174   switch(pname) {
175   case GL_FOG_MODE:
176      if (params[0] != GL_EXP && params[0] != GL_EXP2 && params[0] != GL_LINEAR) {
177         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
178                     "glFogxv(pname=0x%x)", pname);
179         return;
180      }
181      convert_params_value = false;
182      n_params = 1;
183      break;
184   case GL_FOG_COLOR:
185      n_params = 4;
186      break;
187   case GL_FOG_DENSITY:
188   case GL_FOG_START:
189   case GL_FOG_END:
190      n_params = 1;
191      break;
192   default:
193      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
194                  "glFogxv(pname=0x%x)", pname);
195      return;
196   }
197
198   if (convert_params_value) {
199      for (i = 0; i < n_params; i++) {
200         converted_params[i] = (GLfloat) (params[i] / 65536.0f);
201      }
202   } else {
203      for (i = 0; i < n_params; i++) {
204         converted_params[i] = (GLfloat) params[i];
205      }
206   }
207
208   _mesa_Fogfv(pname, converted_params);
209}
210
211void GL_APIENTRY
212_es_Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
213             GLfloat zNear, GLfloat zFar)
214{
215   _mesa_Frustum((GLdouble) (left),
216                 (GLdouble) (right),
217                 (GLdouble) (bottom),
218                 (GLdouble) (top),
219                 (GLdouble) (zNear),
220                 (GLdouble) (zFar));
221}
222
223void GL_APIENTRY
224_es_Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
225             GLfixed zNear, GLfixed zFar)
226{
227   _mesa_Frustum((GLdouble) (left / 65536.0),
228                 (GLdouble) (right / 65536.0),
229                 (GLdouble) (bottom / 65536.0),
230                 (GLdouble) (top / 65536.0),
231                 (GLdouble) (zNear / 65536.0),
232                 (GLdouble) (zFar / 65536.0));
233}
234
235void GL_APIENTRY
236_es_GetClipPlanef(GLenum plane, GLfloat *equation)
237{
238   unsigned int i;
239   GLdouble converted_equation[4];
240
241   _mesa_GetClipPlane(plane, converted_equation);
242   for (i = 0; i < Elements(converted_equation); i++) {
243      equation[i] = (GLfloat) (converted_equation[i]);
244   }
245}
246
247void GL_APIENTRY
248_es_GetClipPlanex(GLenum plane, GLfixed *equation)
249{
250   unsigned int i;
251   GLdouble converted_equation[4];
252
253   _mesa_GetClipPlane(plane, converted_equation);
254   for (i = 0; i < Elements(converted_equation); i++) {
255      equation[i] = (GLfixed) (converted_equation[i] * 65536);
256   }
257}
258
259void GL_APIENTRY
260_es_GetLightxv(GLenum light, GLenum pname, GLfixed *params)
261{
262   unsigned int i;
263   unsigned int n_params = 4;
264   GLfloat converted_params[4];
265
266   if (light < GL_LIGHT0 || light > GL_LIGHT7) {
267      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
268                  "glGetLightxv(light=0x%x)", light);
269      return;
270   }
271   switch(pname) {
272   case GL_AMBIENT:
273   case GL_DIFFUSE:
274   case GL_SPECULAR:
275   case GL_POSITION:
276      n_params = 4;
277      break;
278   case GL_SPOT_DIRECTION:
279      n_params = 3;
280      break;
281   case GL_SPOT_EXPONENT:
282   case GL_SPOT_CUTOFF:
283   case GL_CONSTANT_ATTENUATION:
284   case GL_LINEAR_ATTENUATION:
285   case GL_QUADRATIC_ATTENUATION:
286      n_params = 1;
287      break;
288   default:
289      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
290                  "glGetLightxv(pname=0x%x)", pname);
291      return;
292   }
293
294   _mesa_GetLightfv(light, pname, converted_params);
295   for (i = 0; i < n_params; i++) {
296      params[i] = (GLint) (converted_params[i] * 65536);
297   }
298}
299
300void GL_APIENTRY
301_es_GetMaterialxv(GLenum face, GLenum pname, GLfixed *params)
302{
303   unsigned int i;
304   unsigned int n_params = 4;
305   GLfloat converted_params[4];
306
307   switch(face) {
308   case GL_FRONT:
309   case GL_BACK:
310      break;
311   default:
312      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
313                  "glGetMaterialxv(face=0x%x)", face);
314      return;
315   }
316   switch(pname) {
317   case GL_SHININESS:
318      n_params = 1;
319      break;
320   case GL_AMBIENT:
321   case GL_DIFFUSE:
322   case GL_AMBIENT_AND_DIFFUSE:
323   case GL_SPECULAR:
324   case GL_EMISSION:
325      n_params = 4;
326      break;
327   default:
328      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
329                  "glGetMaterialxv(pname=0x%x)", pname);
330      return;
331   }
332
333   _mesa_GetMaterialfv(face, pname, converted_params);
334   for (i = 0; i < n_params; i++) {
335      params[i] = (GLint) (converted_params[i] * 65536);
336   }
337}
338
339void GL_APIENTRY
340_es_GetTexEnvxv(GLenum target, GLenum pname, GLfixed *params)
341{
342   unsigned int i;
343   unsigned int n_params = 4;
344   GLfloat converted_params[4];
345   bool convert_params_value = true;
346
347   switch(target) {
348   case GL_POINT_SPRITE:
349      if (pname != GL_COORD_REPLACE) {
350         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
351                     "glGetTexEnvxv(target=0x%x)", target);
352         return;
353      }
354      break;
355   case GL_TEXTURE_FILTER_CONTROL_EXT:
356      if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
357         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
358                     "glGetTexEnvxv(target=0x%x)", target);
359         return;
360      }
361      break;
362   case GL_TEXTURE_ENV:
363      if (pname != GL_TEXTURE_ENV_COLOR && pname != GL_RGB_SCALE && pname != GL_ALPHA_SCALE && pname != GL_TEXTURE_ENV_MODE && pname != GL_COMBINE_RGB && pname != GL_COMBINE_ALPHA && pname != GL_SRC0_RGB && pname != GL_SRC1_RGB && pname != GL_SRC2_RGB && pname != GL_SRC0_ALPHA && pname != GL_SRC1_ALPHA && pname != GL_SRC2_ALPHA && pname != GL_OPERAND0_RGB && pname != GL_OPERAND1_RGB && pname != GL_OPERAND2_RGB && pname != GL_OPERAND0_ALPHA && pname != GL_OPERAND1_ALPHA && pname != GL_OPERAND2_ALPHA) {
364         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
365                     "glGetTexEnvxv(target=0x%x)", target);
366         return;
367      }
368      break;
369   default:
370      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
371                  "glGetTexEnvxv(target=0x%x)", target);
372      return;
373   }
374   switch(pname) {
375   case GL_COORD_REPLACE:
376      convert_params_value = false;
377      n_params = 1;
378      break;
379   case GL_TEXTURE_LOD_BIAS_EXT:
380      n_params = 1;
381      break;
382   case GL_TEXTURE_ENV_COLOR:
383      n_params = 4;
384      break;
385   case GL_RGB_SCALE:
386   case GL_ALPHA_SCALE:
387      n_params = 1;
388      break;
389   case GL_TEXTURE_ENV_MODE:
390   case GL_COMBINE_RGB:
391   case GL_COMBINE_ALPHA:
392   case GL_SRC0_RGB:
393   case GL_SRC1_RGB:
394   case GL_SRC2_RGB:
395   case GL_SRC0_ALPHA:
396   case GL_SRC1_ALPHA:
397   case GL_SRC2_ALPHA:
398   case GL_OPERAND0_RGB:
399   case GL_OPERAND1_RGB:
400   case GL_OPERAND2_RGB:
401   case GL_OPERAND0_ALPHA:
402   case GL_OPERAND1_ALPHA:
403   case GL_OPERAND2_ALPHA:
404      convert_params_value = false;
405      n_params = 1;
406      break;
407   default:
408      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
409                  "glGetTexEnvxv(pname=0x%x)", pname);
410      return;
411   }
412
413   _mesa_GetTexEnvfv(target, pname, converted_params);
414   if (convert_params_value) {
415      for (i = 0; i < n_params; i++) {
416         params[i] = (GLint) (converted_params[i] * 65536);
417      }
418   } else {
419      for (i = 0; i < n_params; i++) {
420         params[i] = (GLfixed) converted_params[i];
421      }
422   }
423}
424
425void GL_APIENTRY
426_check_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params)
427{
428   unsigned int i;
429   unsigned int n_params = 1;
430   GLfloat converted_params[1];
431
432   switch(coord) {
433   case GL_TEXTURE_GEN_STR_OES:
434      break;
435   default:
436      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
437                  "glGetTexGenivOES(coord=0x%x)", coord);
438      return;
439   }
440   switch(pname) {
441   case GL_TEXTURE_GEN_MODE:
442      n_params = 1;
443      break;
444   default:
445      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
446                  "glGetTexGenivOES(pname=0x%x)", pname);
447      return;
448   }
449
450   _es_GetTexGenfv(coord, pname, converted_params);
451   for (i = 0; i < n_params; i++) {
452      params[i] = (GLfloat) converted_params[i];
453   }
454}
455
456void GL_APIENTRY
457_check_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
458{
459   unsigned int i;
460   unsigned int n_params = 1;
461   GLfloat converted_params[1];
462
463   switch(coord) {
464   case GL_TEXTURE_GEN_STR_OES:
465      break;
466   default:
467      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
468                  "glGetTexGenxvOES(coord=0x%x)", coord);
469      return;
470   }
471   switch(pname) {
472   case GL_TEXTURE_GEN_MODE:
473      n_params = 1;
474      break;
475   default:
476      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
477                  "glGetTexGenxvOES(pname=0x%x)", pname);
478      return;
479   }
480
481   _es_GetTexGenfv(coord, pname, converted_params);
482   for (i = 0; i < n_params; i++) {
483      params[i] = (GLfloat) converted_params[i];
484   }
485}
486
487void GL_APIENTRY
488_es_GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params)
489{
490   unsigned int i;
491   unsigned int n_params = 4;
492   GLfloat converted_params[4];
493   bool convert_params_value = true;
494
495   switch(target) {
496   case GL_TEXTURE_2D:
497   case GL_TEXTURE_CUBE_MAP:
498   case GL_TEXTURE_EXTERNAL_OES:
499      break;
500   default:
501      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
502                  "glGetTexParameterxv(target=0x%x)", target);
503      return;
504   }
505   switch(pname) {
506   case GL_TEXTURE_WRAP_S:
507   case GL_TEXTURE_WRAP_T:
508   case GL_TEXTURE_MIN_FILTER:
509   case GL_TEXTURE_MAG_FILTER:
510   case GL_GENERATE_MIPMAP:
511      convert_params_value = false;
512      n_params = 1;
513      break;
514   case GL_TEXTURE_CROP_RECT_OES:
515      n_params = 4;
516      break;
517   default:
518      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
519                  "glGetTexParameterxv(pname=0x%x)", pname);
520      return;
521   }
522
523   _mesa_GetTexParameterfv(target, pname, converted_params);
524   if (convert_params_value) {
525      for (i = 0; i < n_params; i++) {
526         params[i] = (GLint) (converted_params[i] * 65536);
527      }
528   } else {
529      for (i = 0; i < n_params; i++) {
530         params[i] = (GLfixed) converted_params[i];
531      }
532   }
533}
534
535void GL_APIENTRY
536_es_LightModelx(GLenum pname, GLfixed param)
537{
538   switch(pname) {
539   case GL_LIGHT_MODEL_TWO_SIDE:
540      if (param != GL_TRUE && param != GL_FALSE) {
541         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
542                     "glLightModelx(pname=0x%x)", pname);
543         return;
544      }
545      break;
546   default:
547      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
548                  "glLightModelx(pname=0x%x)", pname);
549      return;
550   }
551
552   _mesa_LightModelf(pname, (GLfloat) param);
553}
554
555void GL_APIENTRY
556_es_LightModelxv(GLenum pname, const GLfixed *params)
557{
558   unsigned int i;
559   unsigned int n_params = 4;
560   GLfloat converted_params[4];
561   bool convert_params_value = true;
562
563   switch(pname) {
564   case GL_LIGHT_MODEL_AMBIENT:
565      n_params = 4;
566      break;
567   case GL_LIGHT_MODEL_TWO_SIDE:
568      if (params[0] != GL_TRUE && params[0] != GL_FALSE) {
569         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
570                     "glLightModelxv(pname=0x%x)", pname);
571         return;
572      }
573      convert_params_value = false;
574      n_params = 1;
575      break;
576   default:
577      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
578                  "glLightModelxv(pname=0x%x)", pname);
579      return;
580   }
581
582   if (convert_params_value) {
583      for (i = 0; i < n_params; i++) {
584         converted_params[i] = (GLfloat) (params[i] / 65536.0f);
585      }
586   } else {
587      for (i = 0; i < n_params; i++) {
588         converted_params[i] = (GLfloat) params[i];
589      }
590   }
591
592   _mesa_LightModelfv(pname, converted_params);
593}
594
595void GL_APIENTRY
596_es_Lightx(GLenum light, GLenum pname, GLfixed param)
597{
598   _mesa_Lightf(light, pname, (GLfloat) (param / 65536.0f));
599}
600
601void GL_APIENTRY
602_es_Lightxv(GLenum light, GLenum pname, const GLfixed *params)
603{
604   unsigned int i;
605   unsigned int n_params = 4;
606   GLfloat converted_params[4];
607
608   if (light < GL_LIGHT0 || light > GL_LIGHT7) {
609      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
610                  "glLightxv(light=0x%x)", light);
611      return;
612   }
613   switch(pname) {
614   case GL_AMBIENT:
615   case GL_DIFFUSE:
616   case GL_SPECULAR:
617   case GL_POSITION:
618      n_params = 4;
619      break;
620   case GL_SPOT_DIRECTION:
621      n_params = 3;
622      break;
623   case GL_SPOT_EXPONENT:
624   case GL_SPOT_CUTOFF:
625   case GL_CONSTANT_ATTENUATION:
626   case GL_LINEAR_ATTENUATION:
627   case GL_QUADRATIC_ATTENUATION:
628      n_params = 1;
629      break;
630   default:
631      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
632                  "glLightxv(pname=0x%x)", pname);
633      return;
634   }
635
636   for (i = 0; i < n_params; i++) {
637      converted_params[i] = (GLfloat) (params[i] / 65536.0f);
638   }
639
640   _mesa_Lightfv(light, pname, converted_params);
641}
642
643void GL_APIENTRY
644_es_LineWidthx(GLfixed width)
645{
646   _mesa_LineWidth((GLfloat) (width / 65536.0f));
647}
648
649void GL_APIENTRY
650_es_LoadMatrixx(const GLfixed *m)
651{
652   unsigned int i;
653   GLfloat converted_m[16];
654
655   for (i = 0; i < Elements(converted_m); i++) {
656      converted_m[i] = (GLfloat) (m[i] / 65536.0f);
657   }
658
659   _mesa_LoadMatrixf(converted_m);
660}
661
662void GL_APIENTRY
663_es_Materialx(GLenum face, GLenum pname, GLfixed param)
664{
665   switch(face) {
666   case GL_FRONT_AND_BACK:
667      break;
668   default:
669      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
670                  "glMaterialx(face=0x%x)", face);
671      return;
672   }
673   switch(pname) {
674   case GL_SHININESS:
675      break;
676   default:
677      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
678                  "glMaterialx(pname=0x%x)", pname);
679      return;
680   }
681
682   _es_Materialf(face, pname, (GLfloat) (param / 65536.0f));
683}
684
685void GL_APIENTRY
686_es_Materialxv(GLenum face, GLenum pname, const GLfixed *params)
687{
688   unsigned int i;
689   unsigned int n_params = 4;
690   GLfloat converted_params[4];
691
692   switch(face) {
693   case GL_FRONT_AND_BACK:
694      break;
695   default:
696      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
697                  "glMaterialxv(face=0x%x)", face);
698      return;
699   }
700   switch(pname) {
701   case GL_AMBIENT:
702   case GL_DIFFUSE:
703   case GL_AMBIENT_AND_DIFFUSE:
704   case GL_SPECULAR:
705   case GL_EMISSION:
706      n_params = 4;
707      break;
708   case GL_SHININESS:
709      n_params = 1;
710      break;
711   default:
712      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
713                  "glMaterialxv(pname=0x%x)", pname);
714      return;
715   }
716
717   for (i = 0; i < n_params; i++) {
718      converted_params[i] = (GLfloat) (params[i] / 65536.0f);
719   }
720
721   _es_Materialfv(face, pname, converted_params);
722}
723
724void GL_APIENTRY
725_es_MultMatrixx(const GLfixed *m)
726{
727   unsigned int i;
728   GLfloat converted_m[16];
729
730   for (i = 0; i < Elements(converted_m); i++) {
731      converted_m[i] = (GLfloat) (m[i] / 65536.0f);
732   }
733
734   _mesa_MultMatrixf(converted_m);
735}
736
737void GL_APIENTRY
738_es_MultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
739{
740   _es_MultiTexCoord4f(texture,
741                       (GLfloat) (s / 65536.0f),
742                       (GLfloat) (t / 65536.0f),
743                       (GLfloat) (r / 65536.0f),
744                       (GLfloat) (q / 65536.0f));
745}
746
747void GL_APIENTRY
748_es_Normal3x(GLfixed nx, GLfixed ny, GLfixed nz)
749{
750   _es_Normal3f((GLfloat) (nx / 65536.0f),
751                (GLfloat) (ny / 65536.0f),
752                (GLfloat) (nz / 65536.0f));
753}
754
755void GL_APIENTRY
756_es_Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top,
757           GLfloat zNear, GLfloat zFar)
758{
759   _mesa_Ortho((GLdouble) (left),
760               (GLdouble) (right),
761               (GLdouble) (bottom),
762               (GLdouble) (top),
763               (GLdouble) (zNear),
764               (GLdouble) (zFar));
765}
766
767void GL_APIENTRY
768_es_Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top,
769           GLfixed zNear, GLfixed zFar)
770{
771   _mesa_Ortho((GLdouble) (left / 65536.0),
772               (GLdouble) (right / 65536.0),
773               (GLdouble) (bottom / 65536.0),
774               (GLdouble) (top / 65536.0),
775               (GLdouble) (zNear / 65536.0),
776               (GLdouble) (zFar / 65536.0));
777}
778
779void GL_APIENTRY
780_es_PointParameterx(GLenum pname, GLfixed param)
781{
782   switch(pname) {
783   case GL_POINT_SIZE_MIN:
784   case GL_POINT_SIZE_MAX:
785   case GL_POINT_FADE_THRESHOLD_SIZE:
786      break;
787   default:
788      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
789                  "glPointParameterx(pname=0x%x)", pname);
790      return;
791   }
792
793   _mesa_PointParameterf(pname, (GLfloat) (param / 65536.0f));
794}
795
796void GL_APIENTRY
797_es_PointParameterxv(GLenum pname, const GLfixed *params)
798{
799   unsigned int i;
800   unsigned int n_params = 3;
801   GLfloat converted_params[3];
802
803   switch(pname) {
804   case GL_POINT_SIZE_MIN:
805   case GL_POINT_SIZE_MAX:
806   case GL_POINT_FADE_THRESHOLD_SIZE:
807      n_params = 1;
808      break;
809   case GL_POINT_DISTANCE_ATTENUATION:
810      n_params = 3;
811      break;
812   default:
813      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
814                  "glPointParameterxv(pname=0x%x)", pname);
815      return;
816   }
817
818   for (i = 0; i < n_params; i++) {
819      converted_params[i] = (GLfloat) (params[i] / 65536.0f);
820   }
821
822   _mesa_PointParameterfv(pname, converted_params);
823}
824
825void GL_APIENTRY
826_es_PointSizex(GLfixed size)
827{
828   _mesa_PointSize((GLfloat) (size / 65536.0f));
829}
830
831void GL_APIENTRY
832_es_PolygonOffsetx(GLfixed factor, GLfixed units)
833{
834   _mesa_PolygonOffset((GLfloat) (factor / 65536.0f),
835                       (GLfloat) (units / 65536.0f));
836}
837
838void GL_APIENTRY
839_es_Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
840{
841   _mesa_Rotatef((GLfloat) (angle / 65536.0f),
842                 (GLfloat) (x / 65536.0f),
843                 (GLfloat) (y / 65536.0f),
844                 (GLfloat) (z / 65536.0f));
845}
846
847void GL_APIENTRY
848_es_SampleCoveragex(GLclampx value, GLboolean invert)
849{
850   _mesa_SampleCoverageARB((GLclampf) (value / 65536.0f),
851                           invert);
852}
853
854void GL_APIENTRY
855_es_Scalex(GLfixed x, GLfixed y, GLfixed z)
856{
857   _mesa_Scalef((GLfloat) (x / 65536.0f),
858                (GLfloat) (y / 65536.0f),
859                (GLfloat) (z / 65536.0f));
860}
861
862void GL_APIENTRY
863_es_TexEnvx(GLenum target, GLenum pname, GLfixed param)
864{
865   GLfloat converted_param;
866   bool convert_param_value = true;
867
868   switch(target) {
869   case GL_POINT_SPRITE:
870      if (pname != GL_COORD_REPLACE) {
871         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
872                     "glTexEnvx(target=0x%x)", target);
873         return;
874      }
875      break;
876   case GL_TEXTURE_FILTER_CONTROL_EXT:
877      if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
878         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
879                     "glTexEnvx(target=0x%x)", target);
880         return;
881      }
882      break;
883   case GL_TEXTURE_ENV:
884      if (pname != GL_TEXTURE_ENV_MODE && pname != GL_COMBINE_RGB && pname != GL_COMBINE_ALPHA && pname != GL_RGB_SCALE && pname != GL_ALPHA_SCALE && pname != GL_SRC0_RGB && pname != GL_SRC1_RGB && pname != GL_SRC2_RGB && pname != GL_SRC0_ALPHA && pname != GL_SRC1_ALPHA && pname != GL_SRC2_ALPHA && pname != GL_OPERAND0_RGB && pname != GL_OPERAND1_RGB && pname != GL_OPERAND2_RGB && pname != GL_OPERAND0_ALPHA && pname != GL_OPERAND1_ALPHA && pname != GL_OPERAND2_ALPHA && pname != GL_TEXTURE_ENV_COLOR) {
885         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
886                     "glTexEnvx(target=0x%x)", target);
887         return;
888      }
889      break;
890   default:
891      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
892                  "glTexEnvx(target=0x%x)", target);
893      return;
894   }
895   switch(pname) {
896   case GL_COORD_REPLACE:
897      if (param != GL_TRUE && param != GL_FALSE) {
898         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
899                     "glTexEnvx(pname=0x%x)", pname);
900         return;
901      }
902      convert_param_value = false;
903      break;
904   case GL_TEXTURE_LOD_BIAS_EXT:
905      break;
906   case GL_TEXTURE_ENV_MODE:
907      if (param != GL_REPLACE && param != GL_MODULATE && param != GL_DECAL && param != GL_BLEND && param != GL_ADD && param != GL_COMBINE) {
908         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
909                     "glTexEnvx(pname=0x%x)", pname);
910         return;
911      }
912      convert_param_value = false;
913      break;
914   case GL_COMBINE_RGB:
915      if (param != GL_REPLACE && param != GL_MODULATE && param != GL_ADD && param != GL_ADD_SIGNED && param != GL_INTERPOLATE && param != GL_SUBTRACT && param != GL_DOT3_RGB && param != GL_DOT3_RGBA) {
916         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
917                     "glTexEnvx(pname=0x%x)", pname);
918         return;
919      }
920      convert_param_value = false;
921      break;
922   case GL_COMBINE_ALPHA:
923      if (param != GL_REPLACE && param != GL_MODULATE && param != GL_ADD && param != GL_ADD_SIGNED && param != GL_INTERPOLATE && param != GL_SUBTRACT) {
924         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
925                     "glTexEnvx(pname=0x%x)", pname);
926         return;
927      }
928      convert_param_value = false;
929      break;
930   case GL_RGB_SCALE:
931   case GL_ALPHA_SCALE:
932      break;
933   case GL_SRC0_RGB:
934   case GL_SRC1_RGB:
935   case GL_SRC2_RGB:
936   case GL_SRC0_ALPHA:
937   case GL_SRC1_ALPHA:
938   case GL_SRC2_ALPHA:
939      convert_param_value = false;
940      break;
941   case GL_OPERAND0_RGB:
942   case GL_OPERAND1_RGB:
943   case GL_OPERAND2_RGB:
944      if (param != GL_SRC_COLOR && param != GL_ONE_MINUS_SRC_COLOR && param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) {
945         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
946                     "glTexEnvx(pname=0x%x)", pname);
947         return;
948      }
949      convert_param_value = false;
950      break;
951   case GL_OPERAND0_ALPHA:
952   case GL_OPERAND1_ALPHA:
953   case GL_OPERAND2_ALPHA:
954      if (param != GL_SRC_ALPHA && param != GL_ONE_MINUS_SRC_ALPHA) {
955         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
956                     "glTexEnvx(pname=0x%x)", pname);
957         return;
958      }
959      convert_param_value = false;
960      break;
961   default:
962      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
963                  "glTexEnvx(pname=0x%x)", pname);
964      return;
965   }
966
967   if (convert_param_value) {
968      converted_param = (GLfloat) (param / 65536.0f);
969   } else {
970      converted_param = (GLfloat) param;
971   }
972
973   _mesa_TexEnvf(target, pname, converted_param);
974}
975
976void GL_APIENTRY
977_es_TexEnvxv(GLenum target, GLenum pname, const GLfixed *params)
978{
979   unsigned int i;
980   unsigned int n_params = 4;
981   GLfloat converted_params[4];
982   bool convert_params_value = true;
983
984   switch(target) {
985   case GL_POINT_SPRITE:
986      if (pname != GL_COORD_REPLACE) {
987         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
988                     "glTexEnvxv(target=0x%x)", target);
989         return;
990      }
991      break;
992   case GL_TEXTURE_FILTER_CONTROL_EXT:
993      if (pname != GL_TEXTURE_LOD_BIAS_EXT) {
994         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
995                     "glTexEnvxv(target=0x%x)", target);
996         return;
997      }
998      break;
999   case GL_TEXTURE_ENV:
1000      if (pname != GL_TEXTURE_ENV_MODE && pname != GL_COMBINE_RGB && pname != GL_COMBINE_ALPHA && pname != GL_RGB_SCALE && pname != GL_ALPHA_SCALE && pname != GL_SRC0_RGB && pname != GL_SRC1_RGB && pname != GL_SRC2_RGB && pname != GL_SRC0_ALPHA && pname != GL_SRC1_ALPHA && pname != GL_SRC2_ALPHA && pname != GL_OPERAND0_RGB && pname != GL_OPERAND1_RGB && pname != GL_OPERAND2_RGB && pname != GL_OPERAND0_ALPHA && pname != GL_OPERAND1_ALPHA && pname != GL_OPERAND2_ALPHA && pname != GL_TEXTURE_ENV_COLOR) {
1001         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1002                     "glTexEnvxv(target=0x%x)", target);
1003         return;
1004      }
1005      break;
1006   default:
1007      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1008                  "glTexEnvxv(target=0x%x)", target);
1009      return;
1010   }
1011   switch(pname) {
1012   case GL_COORD_REPLACE:
1013      if (params[0] != GL_TRUE && params[0] != GL_FALSE) {
1014         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1015                     "glTexEnvxv(pname=0x%x)", pname);
1016         return;
1017      }
1018      convert_params_value = false;
1019      n_params = 1;
1020      break;
1021   case GL_TEXTURE_LOD_BIAS_EXT:
1022      n_params = 1;
1023      break;
1024   case GL_TEXTURE_ENV_MODE:
1025      if (params[0] != GL_REPLACE && params[0] != GL_MODULATE && params[0] != GL_DECAL && params[0] != GL_BLEND && params[0] != GL_ADD && params[0] != GL_COMBINE) {
1026         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1027                     "glTexEnvxv(pname=0x%x)", pname);
1028         return;
1029      }
1030      convert_params_value = false;
1031      n_params = 1;
1032      break;
1033   case GL_COMBINE_RGB:
1034      if (params[0] != GL_REPLACE && params[0] != GL_MODULATE && params[0] != GL_ADD && params[0] != GL_ADD_SIGNED && params[0] != GL_INTERPOLATE && params[0] != GL_SUBTRACT && params[0] != GL_DOT3_RGB && params[0] != GL_DOT3_RGBA) {
1035         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1036                     "glTexEnvxv(pname=0x%x)", pname);
1037         return;
1038      }
1039      convert_params_value = false;
1040      n_params = 1;
1041      break;
1042   case GL_COMBINE_ALPHA:
1043      if (params[0] != GL_REPLACE && params[0] != GL_MODULATE && params[0] != GL_ADD && params[0] != GL_ADD_SIGNED && params[0] != GL_INTERPOLATE && params[0] != GL_SUBTRACT) {
1044         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1045                     "glTexEnvxv(pname=0x%x)", pname);
1046         return;
1047      }
1048      convert_params_value = false;
1049      n_params = 1;
1050      break;
1051   case GL_RGB_SCALE:
1052   case GL_ALPHA_SCALE:
1053      break;
1054   case GL_SRC0_RGB:
1055   case GL_SRC1_RGB:
1056   case GL_SRC2_RGB:
1057   case GL_SRC0_ALPHA:
1058   case GL_SRC1_ALPHA:
1059   case GL_SRC2_ALPHA:
1060      convert_params_value = false;
1061      n_params = 1;
1062      break;
1063   case GL_OPERAND0_RGB:
1064   case GL_OPERAND1_RGB:
1065   case GL_OPERAND2_RGB:
1066      if (params[0] != GL_SRC_COLOR && params[0] != GL_ONE_MINUS_SRC_COLOR && params[0] != GL_SRC_ALPHA && params[0] != GL_ONE_MINUS_SRC_ALPHA) {
1067         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1068                     "glTexEnvxv(pname=0x%x)", pname);
1069         return;
1070      }
1071      convert_params_value = false;
1072      n_params = 1;
1073      break;
1074   case GL_OPERAND0_ALPHA:
1075   case GL_OPERAND1_ALPHA:
1076   case GL_OPERAND2_ALPHA:
1077      if (params[0] != GL_SRC_ALPHA && params[0] != GL_ONE_MINUS_SRC_ALPHA) {
1078         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1079                     "glTexEnvxv(pname=0x%x)", pname);
1080         return;
1081      }
1082      convert_params_value = false;
1083      n_params = 1;
1084      break;
1085   case GL_TEXTURE_ENV_COLOR:
1086      n_params = 4;
1087      break;
1088   default:
1089      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1090                  "glTexEnvxv(pname=0x%x)", pname);
1091      return;
1092   }
1093
1094   if (convert_params_value) {
1095      for (i = 0; i < n_params; i++) {
1096         converted_params[i] = (GLfloat) (params[i] / 65536.0f);
1097      }
1098   } else {
1099      for (i = 0; i < n_params; i++) {
1100         converted_params[i] = (GLfloat) params[i];
1101      }
1102   }
1103
1104   _mesa_TexEnvfv(target, pname, converted_params);
1105}
1106
1107void GL_APIENTRY
1108_check_TexGeniOES(GLenum coord, GLenum pname, GLint param)
1109{
1110   switch(coord) {
1111   case GL_TEXTURE_GEN_STR_OES:
1112      break;
1113   default:
1114      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1115                  "glTexGeniOES(coord=0x%x)", coord);
1116      return;
1117   }
1118   switch(pname) {
1119   case GL_TEXTURE_GEN_MODE:
1120      if (param != GL_NORMAL_MAP && param != GL_REFLECTION_MAP) {
1121         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1122                     "glTexGeniOES(pname=0x%x)", pname);
1123         return;
1124      }
1125      break;
1126   default:
1127      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1128                  "glTexGeniOES(pname=0x%x)", pname);
1129      return;
1130   }
1131
1132   _es_TexGenf(coord, pname, (GLfloat) param);
1133}
1134
1135void GL_APIENTRY
1136_check_TexGenivOES(GLenum coord, GLenum pname, const GLint *params)
1137{
1138   unsigned int i;
1139   unsigned int n_params = 1;
1140   GLfloat converted_params[1];
1141
1142   switch(coord) {
1143   case GL_TEXTURE_GEN_STR_OES:
1144      break;
1145   default:
1146      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1147                  "glTexGenivOES(coord=0x%x)", coord);
1148      return;
1149   }
1150   switch(pname) {
1151   case GL_TEXTURE_GEN_MODE:
1152      if (params[0] != GL_NORMAL_MAP && params[0] != GL_REFLECTION_MAP) {
1153         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1154                     "glTexGenivOES(pname=0x%x)", pname);
1155         return;
1156      }
1157      n_params = 1;
1158      break;
1159   default:
1160      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1161                  "glTexGenivOES(pname=0x%x)", pname);
1162      return;
1163   }
1164
1165   for (i = 0; i < n_params; i++) {
1166      converted_params[i] = (GLfloat) params[i];
1167   }
1168
1169   _es_TexGenfv(coord, pname, converted_params);
1170}
1171
1172void GL_APIENTRY
1173_check_TexGenxOES(GLenum coord, GLenum pname, GLfixed param)
1174{
1175   switch(coord) {
1176   case GL_TEXTURE_GEN_STR_OES:
1177      break;
1178   default:
1179      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1180                  "glTexGenxOES(coord=0x%x)", coord);
1181      return;
1182   }
1183   switch(pname) {
1184   case GL_TEXTURE_GEN_MODE:
1185      if (param != GL_NORMAL_MAP && param != GL_REFLECTION_MAP) {
1186         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1187                     "glTexGenxOES(pname=0x%x)", pname);
1188         return;
1189      }
1190      break;
1191   default:
1192      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1193                  "glTexGenxOES(pname=0x%x)", pname);
1194      return;
1195   }
1196
1197   _es_TexGenf(coord, pname, (GLfloat) param);
1198}
1199
1200void GL_APIENTRY
1201_check_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params)
1202{
1203    unsigned int i;
1204    unsigned int n_params = 1;
1205    GLfloat converted_params[1];
1206
1207    switch(coord) {
1208    case GL_TEXTURE_GEN_STR_OES:
1209       break;
1210    default:
1211       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1212                   "glTexGenxvOES(coord=0x%x)", coord);
1213       return;
1214    }
1215    switch(pname) {
1216    case GL_TEXTURE_GEN_MODE:
1217       if (params[0] != GL_NORMAL_MAP && params[0] != GL_REFLECTION_MAP) {
1218          _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1219                      "glTexGenxvOES(pname=0x%x)", pname);
1220          return;
1221       }
1222       n_params = 1;
1223       break;
1224    default:
1225       _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1226                   "glTexGenxvOES(pname=0x%x)", pname);
1227       return;
1228    }
1229
1230    for (i = 0; i < n_params; i++) {
1231       converted_params[i] = (GLfloat) params[i];
1232    }
1233
1234    _es_TexGenfv(coord, pname, converted_params);
1235}
1236
1237void GL_APIENTRY
1238_es_TexParameterx(GLenum target, GLenum pname, GLfixed param)
1239{
1240   GLfloat converted_param;
1241   bool convert_param_value = true;
1242
1243   switch(pname) {
1244   case GL_TEXTURE_WRAP_S:
1245   case GL_TEXTURE_WRAP_T:
1246      convert_param_value = false;
1247      break;
1248   case GL_TEXTURE_MIN_FILTER:
1249   case GL_TEXTURE_MAG_FILTER:
1250      convert_param_value = false;
1251      break;
1252   case GL_GENERATE_MIPMAP:
1253      if (param != GL_TRUE && param != GL_FALSE) {
1254         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1255                     "glTexParameterx(pname=0x%x)", pname);
1256         return;
1257      }
1258      convert_param_value = false;
1259      break;
1260   case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1261      break;
1262   default:
1263      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1264                  "glTexParameterx(pname=0x%x)", pname);
1265      return;
1266   }
1267
1268   if (convert_param_value) {
1269      converted_param = (GLfloat) (param / 65536.0f);
1270   } else {
1271      converted_param = (GLfloat) param;
1272   }
1273
1274   _mesa_TexParameterf(target, pname, converted_param);
1275}
1276
1277void GL_APIENTRY
1278_es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params)
1279{
1280   unsigned int i;
1281   unsigned int n_params = 4;
1282   GLfloat converted_params[4];
1283   bool convert_params_value = true;
1284
1285   switch(target) {
1286   case GL_TEXTURE_2D:
1287   case GL_TEXTURE_CUBE_MAP:
1288   case GL_TEXTURE_EXTERNAL_OES:
1289      break;
1290   default:
1291      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1292                  "glTexParameterxv(target=0x%x)", target);
1293      return;
1294   }
1295   switch(pname) {
1296   case GL_TEXTURE_WRAP_S:
1297   case GL_TEXTURE_WRAP_T:
1298      convert_params_value = false;
1299      n_params = 1;
1300      break;
1301   case GL_TEXTURE_MIN_FILTER:
1302   case GL_TEXTURE_MAG_FILTER:
1303      convert_params_value = false;
1304      n_params = 1;
1305      break;
1306   case GL_GENERATE_MIPMAP:
1307      if (params[0] != GL_TRUE && params[0] != GL_FALSE) {
1308         _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1309                     "glTexParameterxv(pname=0x%x)", pname);
1310         return;
1311      }
1312      convert_params_value = false;
1313      n_params = 1;
1314      break;
1315   case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1316      n_params = 1;
1317      break;
1318   case GL_TEXTURE_CROP_RECT_OES:
1319      n_params = 4;
1320      break;
1321   default:
1322      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1323                  "glTexParameterxv(pname=0x%x)", pname);
1324      return;
1325   }
1326
1327   if (convert_params_value) {
1328      for (i = 0; i < n_params; i++) {
1329         converted_params[i] = (GLfloat) (params[i] / 65536.0f);
1330      }
1331   } else {
1332      for (i = 0; i < n_params; i++) {
1333         converted_params[i] = (GLfloat) params[i];
1334      }
1335   }
1336
1337   _mesa_TexParameterfv(target, pname, converted_params);
1338}
1339
1340void GL_APIENTRY
1341_es_Translatex(GLfixed x, GLfixed y, GLfixed z)
1342{
1343    _mesa_Translatef((GLfloat) (x / 65536.0f),
1344                     (GLfloat) (y / 65536.0f),
1345                     (GLfloat) (z / 65536.0f));
1346}
1347
1348#endif /* FEATURE_ES1 */
1349