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