mesa/es: Validate GL_TEXTURE_WRAP param in Mesa code rather than the ES wrapper
[mesa.git] / src / mesa / main / es1_conversion.c
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
38 void GL_APIENTRY
39 _es_AlphaFuncx(GLenum func, GLclampx ref)
40 {
41 _mesa_AlphaFunc(func, (GLclampf) (ref / 65536.0f));
42 }
43
44 void 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
53 void GL_APIENTRY
54 _es_ClearDepthx(GLclampx depth)
55 {
56 _mesa_ClearDepthf((GLclampf) (depth / 65536.0f));
57 }
58
59 void 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
72 void 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
85 void 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
94 void 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
103 void GL_APIENTRY
104 _es_DepthRangex(GLclampx zNear, GLclampx zFar)
105 {
106 _mesa_DepthRangef((GLclampf) (zNear / 65536.0f),
107 (GLclampf) (zFar / 65536.0f));
108 }
109
110 void 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
121 void 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
134 void 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
166 void 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
211 void 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
223 void 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
235 void 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
247 void 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
259 void 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
300 void 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
339 void 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
425 void 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
456 void 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
487 void 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
535 void 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
555 void 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
595 void GL_APIENTRY
596 _es_Lightx(GLenum light, GLenum pname, GLfixed param)
597 {
598 _mesa_Lightf(light, pname, (GLfloat) (param / 65536.0f));
599 }
600
601 void 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
643 void GL_APIENTRY
644 _es_LineWidthx(GLfixed width)
645 {
646 _mesa_LineWidth((GLfloat) (width / 65536.0f));
647 }
648
649 void 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
662 void 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
685 void 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
724 void 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
737 void 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
747 void 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
755 void 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
767 void 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
779 void 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
796 void 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
825 void GL_APIENTRY
826 _es_PointSizex(GLfixed size)
827 {
828 _mesa_PointSize((GLfloat) (size / 65536.0f));
829 }
830
831 void GL_APIENTRY
832 _es_PolygonOffsetx(GLfixed factor, GLfixed units)
833 {
834 _mesa_PolygonOffset((GLfloat) (factor / 65536.0f),
835 (GLfloat) (units / 65536.0f));
836 }
837
838 void 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
847 void GL_APIENTRY
848 _es_SampleCoveragex(GLclampx value, GLboolean invert)
849 {
850 _mesa_SampleCoverageARB((GLclampf) (value / 65536.0f),
851 invert);
852 }
853
854 void 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
862 void 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
976 void 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
1107 void 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
1135 void 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
1172 void 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
1200 void 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
1237 void 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(target) {
1244 case GL_TEXTURE_2D:
1245 case GL_TEXTURE_CUBE_MAP:
1246 case GL_TEXTURE_EXTERNAL_OES:
1247 break;
1248 default:
1249 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1250 "glTexParameterx(target=0x%x)", target);
1251 return;
1252 }
1253 switch(pname) {
1254 case GL_TEXTURE_WRAP_S:
1255 case GL_TEXTURE_WRAP_T:
1256 convert_param_value = false;
1257 break;
1258 case GL_TEXTURE_MIN_FILTER:
1259 case GL_TEXTURE_MAG_FILTER:
1260 convert_param_value = false;
1261 break;
1262 case GL_GENERATE_MIPMAP:
1263 if (param != GL_TRUE && param != GL_FALSE) {
1264 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1265 "glTexParameterx(pname=0x%x)", pname);
1266 return;
1267 }
1268 convert_param_value = false;
1269 break;
1270 case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1271 break;
1272 default:
1273 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1274 "glTexParameterx(pname=0x%x)", pname);
1275 return;
1276 }
1277
1278 if (convert_param_value) {
1279 converted_param = (GLfloat) (param / 65536.0f);
1280 } else {
1281 converted_param = (GLfloat) param;
1282 }
1283
1284 _mesa_TexParameterf(target, pname, converted_param);
1285 }
1286
1287 void GL_APIENTRY
1288 _es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params)
1289 {
1290 unsigned int i;
1291 unsigned int n_params = 4;
1292 GLfloat converted_params[4];
1293 bool convert_params_value = true;
1294
1295 switch(target) {
1296 case GL_TEXTURE_2D:
1297 case GL_TEXTURE_CUBE_MAP:
1298 case GL_TEXTURE_EXTERNAL_OES:
1299 break;
1300 default:
1301 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1302 "glTexParameterxv(target=0x%x)", target);
1303 return;
1304 }
1305 switch(pname) {
1306 case GL_TEXTURE_WRAP_S:
1307 case GL_TEXTURE_WRAP_T:
1308 convert_params_value = false;
1309 n_params = 1;
1310 break;
1311 case GL_TEXTURE_MIN_FILTER:
1312 case GL_TEXTURE_MAG_FILTER:
1313 convert_params_value = false;
1314 n_params = 1;
1315 break;
1316 case GL_GENERATE_MIPMAP:
1317 if (params[0] != GL_TRUE && params[0] != GL_FALSE) {
1318 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1319 "glTexParameterxv(pname=0x%x)", pname);
1320 return;
1321 }
1322 convert_params_value = false;
1323 n_params = 1;
1324 break;
1325 case GL_TEXTURE_MAX_ANISOTROPY_EXT:
1326 n_params = 1;
1327 break;
1328 case GL_TEXTURE_CROP_RECT_OES:
1329 n_params = 4;
1330 break;
1331 default:
1332 _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
1333 "glTexParameterxv(pname=0x%x)", pname);
1334 return;
1335 }
1336
1337 if (convert_params_value) {
1338 for (i = 0; i < n_params; i++) {
1339 converted_params[i] = (GLfloat) (params[i] / 65536.0f);
1340 }
1341 } else {
1342 for (i = 0; i < n_params; i++) {
1343 converted_params[i] = (GLfloat) params[i];
1344 }
1345 }
1346
1347 _mesa_TexParameterfv(target, pname, converted_params);
1348 }
1349
1350 void GL_APIENTRY
1351 _es_Translatex(GLfixed x, GLfixed y, GLfixed z)
1352 {
1353 _mesa_Translatef((GLfloat) (x / 65536.0f),
1354 (GLfloat) (y / 65536.0f),
1355 (GLfloat) (z / 65536.0f));
1356 }
1357
1358 #endif /* FEATURE_ES1 */