| #include <stdbool.h> |
| #include "main/mfeatures.h" |
| |
| #if FEATURE_ES1 |
| |
| #include "api_loopback.h" |
| #include "api_exec.h" |
| #include "blend.h" |
| #include "clear.h" |
| #include "clip.h" |
| #include "context.h" |
| #include "depth.h" |
| #include "fog.h" |
| #include "imports.h" |
| #include "light.h" |
| #include "lines.h" |
| #include "matrix.h" |
| #include "multisample.h" |
| #include "pixelstore.h" |
| #include "points.h" |
| #include "polygon.h" |
| #include "readpix.h" |
| #include "texenv.h" |
| #include "texgen.h" |
| #include "texobj.h" |
| #include "texparam.h" |
| #include "mtypes.h" |
| #include "viewport.h" |
| #include "main/drawtex.h" |
| #include "vbo/vbo.h" |
| |
| #ifndef GL_APIENTRY |
| #define GL_APIENTRY GLAPIENTRY |
| #endif |
| |
| #include "main/es1_conversion.h" |
| |
| void GL_APIENTRY |
| _es_AlphaFuncx(GLenum func, GLclampx ref) |
| { |
| _mesa_AlphaFunc(func, (GLclampf) (ref / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_ClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) |
| { |
| _mesa_ClearColor((GLclampf) (red / 65536.0f), |
| (GLclampf) (green / 65536.0f), |
| (GLclampf) (blue / 65536.0f), |
| (GLclampf) (alpha / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_ClearDepthx(GLclampx depth) |
| { |
| _mesa_ClearDepthf((GLclampf) (depth / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_ClipPlanef(GLenum plane, const GLfloat *equation) |
| { |
| unsigned int i; |
| GLdouble converted_equation[4]; |
| |
| for (i = 0; i < Elements(converted_equation); i++) { |
| converted_equation[i] = (GLdouble) (equation[i]); |
| } |
| |
| _mesa_ClipPlane(plane, converted_equation); |
| } |
| |
| void GL_APIENTRY |
| _es_ClipPlanex(GLenum plane, const GLfixed *equation) |
| { |
| unsigned int i; |
| GLdouble converted_equation[4]; |
| |
| for (i = 0; i < Elements(converted_equation); i++) { |
| converted_equation[i] = (GLdouble) (equation[i] / 65536.0); |
| } |
| |
| _mesa_ClipPlane(plane, converted_equation); |
| } |
| |
| void GL_APIENTRY |
| _es_Color4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) |
| { |
| _es_Color4f((GLfloat) (red / 255.0f), |
| (GLfloat) (green / 255.0f), |
| (GLfloat) (blue / 255.0f), |
| (GLfloat) (alpha / 255.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_Color4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) |
| { |
| _es_Color4f((GLfloat) (red / 65536.0f), |
| (GLfloat) (green / 65536.0f), |
| (GLfloat) (blue / 65536.0f), |
| (GLfloat) (alpha / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_DepthRangex(GLclampx zNear, GLclampx zFar) |
| { |
| _mesa_DepthRangef((GLclampf) (zNear / 65536.0f), |
| (GLclampf) (zFar / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_DrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h) |
| { |
| |
| _mesa_DrawTexf((GLfloat) (x / 65536.0f), |
| (GLfloat) (y / 65536.0f), |
| (GLfloat) (z / 65536.0f), |
| (GLfloat) (w / 65536.0f), |
| (GLfloat) (h / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_DrawTexxvOES(const GLfixed *coords) |
| { |
| unsigned int i; |
| GLfloat converted_coords[5]; |
| |
| for (i = 0; i < Elements(converted_coords); i++) { |
| converted_coords[i] = (GLfloat) (coords[i] / 65536.0f); |
| } |
| |
| _mesa_DrawTexfv(converted_coords); |
| } |
| |
| void GL_APIENTRY |
| _es_Fogx(GLenum pname, GLfixed param) |
| { |
| if (pname != GL_FOG_MODE) { |
| _mesa_Fogf(pname, (GLfloat) (param / 65536.0f)); |
| } else { |
| _mesa_Fogf(pname, (GLfloat) param); |
| } |
| |
| } |
| |
| void GL_APIENTRY |
| _es_Fogxv(GLenum pname, const GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| bool convert_params_value = true; |
| |
| switch(pname) { |
| case GL_FOG_MODE: |
| convert_params_value = false; |
| n_params = 1; |
| break; |
| case GL_FOG_COLOR: |
| n_params = 4; |
| break; |
| case GL_FOG_DENSITY: |
| case GL_FOG_START: |
| case GL_FOG_END: |
| n_params = 1; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glFogxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| if (convert_params_value) { |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) (params[i] / 65536.0f); |
| } |
| } else { |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) params[i]; |
| } |
| } |
| |
| _mesa_Fogfv(pname, converted_params); |
| } |
| |
| void GL_APIENTRY |
| _es_Frustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, |
| GLfloat zNear, GLfloat zFar) |
| { |
| _mesa_Frustum((GLdouble) (left), |
| (GLdouble) (right), |
| (GLdouble) (bottom), |
| (GLdouble) (top), |
| (GLdouble) (zNear), |
| (GLdouble) (zFar)); |
| } |
| |
| void GL_APIENTRY |
| _es_Frustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, |
| GLfixed zNear, GLfixed zFar) |
| { |
| _mesa_Frustum((GLdouble) (left / 65536.0), |
| (GLdouble) (right / 65536.0), |
| (GLdouble) (bottom / 65536.0), |
| (GLdouble) (top / 65536.0), |
| (GLdouble) (zNear / 65536.0), |
| (GLdouble) (zFar / 65536.0)); |
| } |
| |
| void GL_APIENTRY |
| _es_GetClipPlanef(GLenum plane, GLfloat *equation) |
| { |
| unsigned int i; |
| GLdouble converted_equation[4]; |
| |
| _mesa_GetClipPlane(plane, converted_equation); |
| for (i = 0; i < Elements(converted_equation); i++) { |
| equation[i] = (GLfloat) (converted_equation[i]); |
| } |
| } |
| |
| void GL_APIENTRY |
| _es_GetClipPlanex(GLenum plane, GLfixed *equation) |
| { |
| unsigned int i; |
| GLdouble converted_equation[4]; |
| |
| _mesa_GetClipPlane(plane, converted_equation); |
| for (i = 0; i < Elements(converted_equation); i++) { |
| equation[i] = (GLfixed) (converted_equation[i] * 65536); |
| } |
| } |
| |
| void GL_APIENTRY |
| _es_GetLightxv(GLenum light, GLenum pname, GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| |
| if (light < GL_LIGHT0 || light > GL_LIGHT7) { |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetLightxv(light=0x%x)", light); |
| return; |
| } |
| switch(pname) { |
| case GL_AMBIENT: |
| case GL_DIFFUSE: |
| case GL_SPECULAR: |
| case GL_POSITION: |
| n_params = 4; |
| break; |
| case GL_SPOT_DIRECTION: |
| n_params = 3; |
| break; |
| case GL_SPOT_EXPONENT: |
| case GL_SPOT_CUTOFF: |
| case GL_CONSTANT_ATTENUATION: |
| case GL_LINEAR_ATTENUATION: |
| case GL_QUADRATIC_ATTENUATION: |
| n_params = 1; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetLightxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| _mesa_GetLightfv(light, pname, converted_params); |
| for (i = 0; i < n_params; i++) { |
| params[i] = (GLint) (converted_params[i] * 65536); |
| } |
| } |
| |
| void GL_APIENTRY |
| _es_GetMaterialxv(GLenum face, GLenum pname, GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| |
| switch(face) { |
| case GL_FRONT: |
| case GL_BACK: |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetMaterialxv(face=0x%x)", face); |
| return; |
| } |
| switch(pname) { |
| case GL_SHININESS: |
| n_params = 1; |
| break; |
| case GL_AMBIENT: |
| case GL_DIFFUSE: |
| case GL_SPECULAR: |
| case GL_EMISSION: |
| n_params = 4; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetMaterialxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| _mesa_GetMaterialfv(face, pname, converted_params); |
| for (i = 0; i < n_params; i++) { |
| params[i] = (GLint) (converted_params[i] * 65536); |
| } |
| } |
| |
| void GL_APIENTRY |
| _es_GetTexEnvxv(GLenum target, GLenum pname, GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| bool convert_params_value = true; |
| |
| switch(target) { |
| case GL_POINT_SPRITE: |
| if (pname != GL_COORD_REPLACE) { |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetTexEnvxv(target=0x%x)", target); |
| return; |
| } |
| break; |
| case GL_TEXTURE_FILTER_CONTROL_EXT: |
| if (pname != GL_TEXTURE_LOD_BIAS_EXT) { |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetTexEnvxv(target=0x%x)", target); |
| return; |
| } |
| break; |
| case GL_TEXTURE_ENV: |
| 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) { |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetTexEnvxv(target=0x%x)", target); |
| return; |
| } |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetTexEnvxv(target=0x%x)", target); |
| return; |
| } |
| switch(pname) { |
| case GL_COORD_REPLACE: |
| convert_params_value = false; |
| n_params = 1; |
| break; |
| case GL_TEXTURE_LOD_BIAS_EXT: |
| n_params = 1; |
| break; |
| case GL_TEXTURE_ENV_COLOR: |
| n_params = 4; |
| break; |
| case GL_RGB_SCALE: |
| case GL_ALPHA_SCALE: |
| n_params = 1; |
| break; |
| case GL_TEXTURE_ENV_MODE: |
| case GL_COMBINE_RGB: |
| case GL_COMBINE_ALPHA: |
| case GL_SRC0_RGB: |
| case GL_SRC1_RGB: |
| case GL_SRC2_RGB: |
| case GL_SRC0_ALPHA: |
| case GL_SRC1_ALPHA: |
| case GL_SRC2_ALPHA: |
| case GL_OPERAND0_RGB: |
| case GL_OPERAND1_RGB: |
| case GL_OPERAND2_RGB: |
| case GL_OPERAND0_ALPHA: |
| case GL_OPERAND1_ALPHA: |
| case GL_OPERAND2_ALPHA: |
| convert_params_value = false; |
| n_params = 1; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetTexEnvxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| _mesa_GetTexEnvfv(target, pname, converted_params); |
| if (convert_params_value) { |
| for (i = 0; i < n_params; i++) { |
| params[i] = (GLint) (converted_params[i] * 65536); |
| } |
| } else { |
| for (i = 0; i < n_params; i++) { |
| params[i] = (GLfixed) converted_params[i]; |
| } |
| } |
| } |
| |
| void GL_APIENTRY |
| _check_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params) |
| { |
| _mesa_GetTexGeniv(coord, pname, params); |
| } |
| |
| void GL_APIENTRY |
| _check_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params) |
| { |
| _mesa_GetTexGeniv(coord, pname, (GLint *) params); |
| } |
| |
| void GL_APIENTRY |
| _es_GetTexParameterxv(GLenum target, GLenum pname, GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| bool convert_params_value = true; |
| |
| switch(target) { |
| case GL_TEXTURE_2D: |
| case GL_TEXTURE_CUBE_MAP: |
| case GL_TEXTURE_EXTERNAL_OES: |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetTexParameterxv(target=0x%x)", target); |
| return; |
| } |
| switch(pname) { |
| case GL_TEXTURE_WRAP_S: |
| case GL_TEXTURE_WRAP_T: |
| case GL_TEXTURE_MIN_FILTER: |
| case GL_TEXTURE_MAG_FILTER: |
| case GL_GENERATE_MIPMAP: |
| convert_params_value = false; |
| n_params = 1; |
| break; |
| case GL_TEXTURE_CROP_RECT_OES: |
| n_params = 4; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glGetTexParameterxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| _mesa_GetTexParameterfv(target, pname, converted_params); |
| if (convert_params_value) { |
| for (i = 0; i < n_params; i++) { |
| params[i] = (GLint) (converted_params[i] * 65536); |
| } |
| } else { |
| for (i = 0; i < n_params; i++) { |
| params[i] = (GLfixed) converted_params[i]; |
| } |
| } |
| } |
| |
| void GL_APIENTRY |
| _es_LightModelx(GLenum pname, GLfixed param) |
| { |
| _mesa_LightModelf(pname, (GLfloat) param); |
| } |
| |
| void GL_APIENTRY |
| _es_LightModelxv(GLenum pname, const GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| bool convert_params_value = true; |
| |
| switch(pname) { |
| case GL_LIGHT_MODEL_AMBIENT: |
| n_params = 4; |
| break; |
| case GL_LIGHT_MODEL_TWO_SIDE: |
| convert_params_value = false; |
| n_params = 1; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glLightModelxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| if (convert_params_value) { |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) (params[i] / 65536.0f); |
| } |
| } else { |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) params[i]; |
| } |
| } |
| |
| _mesa_LightModelfv(pname, converted_params); |
| } |
| |
| void GL_APIENTRY |
| _es_Lightx(GLenum light, GLenum pname, GLfixed param) |
| { |
| _mesa_Lightf(light, pname, (GLfloat) (param / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_Lightxv(GLenum light, GLenum pname, const GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| |
| if (light < GL_LIGHT0 || light > GL_LIGHT7) { |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glLightxv(light=0x%x)", light); |
| return; |
| } |
| switch(pname) { |
| case GL_AMBIENT: |
| case GL_DIFFUSE: |
| case GL_SPECULAR: |
| case GL_POSITION: |
| n_params = 4; |
| break; |
| case GL_SPOT_DIRECTION: |
| n_params = 3; |
| break; |
| case GL_SPOT_EXPONENT: |
| case GL_SPOT_CUTOFF: |
| case GL_CONSTANT_ATTENUATION: |
| case GL_LINEAR_ATTENUATION: |
| case GL_QUADRATIC_ATTENUATION: |
| n_params = 1; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glLightxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) (params[i] / 65536.0f); |
| } |
| |
| _mesa_Lightfv(light, pname, converted_params); |
| } |
| |
| void GL_APIENTRY |
| _es_LineWidthx(GLfixed width) |
| { |
| _mesa_LineWidth((GLfloat) (width / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_LoadMatrixx(const GLfixed *m) |
| { |
| unsigned int i; |
| GLfloat converted_m[16]; |
| |
| for (i = 0; i < Elements(converted_m); i++) { |
| converted_m[i] = (GLfloat) (m[i] / 65536.0f); |
| } |
| |
| _mesa_LoadMatrixf(converted_m); |
| } |
| |
| void GL_APIENTRY |
| _es_Materialx(GLenum face, GLenum pname, GLfixed param) |
| { |
| if (face != GL_FRONT_AND_BACK) { |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glMaterialx(face=0x%x)", face); |
| return; |
| } |
| |
| if (pname != GL_SHININESS) { |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glMaterialx(pname=0x%x)", pname); |
| return; |
| } |
| |
| _es_Materialf(face, pname, (GLfloat) (param / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_Materialxv(GLenum face, GLenum pname, const GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| |
| if (face != GL_FRONT_AND_BACK) { |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glMaterialxv(face=0x%x)", face); |
| return; |
| } |
| |
| switch(pname) { |
| case GL_AMBIENT: |
| case GL_DIFFUSE: |
| case GL_AMBIENT_AND_DIFFUSE: |
| case GL_SPECULAR: |
| case GL_EMISSION: |
| n_params = 4; |
| break; |
| case GL_SHININESS: |
| n_params = 1; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glMaterialxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) (params[i] / 65536.0f); |
| } |
| |
| _es_Materialfv(face, pname, converted_params); |
| } |
| |
| void GL_APIENTRY |
| _es_MultMatrixx(const GLfixed *m) |
| { |
| unsigned int i; |
| GLfloat converted_m[16]; |
| |
| for (i = 0; i < Elements(converted_m); i++) { |
| converted_m[i] = (GLfloat) (m[i] / 65536.0f); |
| } |
| |
| _mesa_MultMatrixf(converted_m); |
| } |
| |
| void GL_APIENTRY |
| _es_MultiTexCoord4x(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) |
| { |
| _es_MultiTexCoord4f(texture, |
| (GLfloat) (s / 65536.0f), |
| (GLfloat) (t / 65536.0f), |
| (GLfloat) (r / 65536.0f), |
| (GLfloat) (q / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_Normal3x(GLfixed nx, GLfixed ny, GLfixed nz) |
| { |
| _es_Normal3f((GLfloat) (nx / 65536.0f), |
| (GLfloat) (ny / 65536.0f), |
| (GLfloat) (nz / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_Orthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, |
| GLfloat zNear, GLfloat zFar) |
| { |
| _mesa_Ortho((GLdouble) (left), |
| (GLdouble) (right), |
| (GLdouble) (bottom), |
| (GLdouble) (top), |
| (GLdouble) (zNear), |
| (GLdouble) (zFar)); |
| } |
| |
| void GL_APIENTRY |
| _es_Orthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, |
| GLfixed zNear, GLfixed zFar) |
| { |
| _mesa_Ortho((GLdouble) (left / 65536.0), |
| (GLdouble) (right / 65536.0), |
| (GLdouble) (bottom / 65536.0), |
| (GLdouble) (top / 65536.0), |
| (GLdouble) (zNear / 65536.0), |
| (GLdouble) (zFar / 65536.0)); |
| } |
| |
| void GL_APIENTRY |
| _es_PointParameterx(GLenum pname, GLfixed param) |
| { |
| _mesa_PointParameterf(pname, (GLfloat) (param / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_PointParameterxv(GLenum pname, const GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 3; |
| GLfloat converted_params[3]; |
| |
| switch(pname) { |
| case GL_POINT_SIZE_MIN: |
| case GL_POINT_SIZE_MAX: |
| case GL_POINT_FADE_THRESHOLD_SIZE: |
| n_params = 1; |
| break; |
| case GL_POINT_DISTANCE_ATTENUATION: |
| n_params = 3; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glPointParameterxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) (params[i] / 65536.0f); |
| } |
| |
| _mesa_PointParameterfv(pname, converted_params); |
| } |
| |
| void GL_APIENTRY |
| _es_PointSizex(GLfixed size) |
| { |
| _mesa_PointSize((GLfloat) (size / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_PolygonOffsetx(GLfixed factor, GLfixed units) |
| { |
| _mesa_PolygonOffset((GLfloat) (factor / 65536.0f), |
| (GLfloat) (units / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_Rotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) |
| { |
| _mesa_Rotatef((GLfloat) (angle / 65536.0f), |
| (GLfloat) (x / 65536.0f), |
| (GLfloat) (y / 65536.0f), |
| (GLfloat) (z / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_SampleCoveragex(GLclampx value, GLboolean invert) |
| { |
| _mesa_SampleCoverageARB((GLclampf) (value / 65536.0f), |
| invert); |
| } |
| |
| void GL_APIENTRY |
| _es_Scalex(GLfixed x, GLfixed y, GLfixed z) |
| { |
| _mesa_Scalef((GLfloat) (x / 65536.0f), |
| (GLfloat) (y / 65536.0f), |
| (GLfloat) (z / 65536.0f)); |
| } |
| |
| void GL_APIENTRY |
| _es_TexEnvx(GLenum target, GLenum pname, GLfixed param) |
| { |
| switch(target) { |
| case GL_POINT_SPRITE: |
| case GL_TEXTURE_FILTER_CONTROL_EXT: |
| case GL_TEXTURE_ENV: |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glTexEnvx(target=0x%x)", target); |
| return; |
| } |
| |
| switch(pname) { |
| case GL_COORD_REPLACE: |
| case GL_TEXTURE_ENV_MODE: |
| case GL_COMBINE_RGB: |
| case GL_COMBINE_ALPHA: |
| case GL_SRC0_RGB: |
| case GL_SRC1_RGB: |
| case GL_SRC2_RGB: |
| case GL_SRC0_ALPHA: |
| case GL_SRC1_ALPHA: |
| case GL_SRC2_ALPHA: |
| case GL_OPERAND0_RGB: |
| case GL_OPERAND1_RGB: |
| case GL_OPERAND2_RGB: |
| case GL_OPERAND0_ALPHA: |
| case GL_OPERAND1_ALPHA: |
| case GL_OPERAND2_ALPHA: |
| _mesa_TexEnvf(target, pname, (GLfloat) param); |
| break; |
| case GL_TEXTURE_LOD_BIAS_EXT: |
| case GL_RGB_SCALE: |
| case GL_ALPHA_SCALE: |
| _mesa_TexEnvf(target, pname, (GLfloat) (param / 65536.0f)); |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glTexEnvx(pname=0x%x)", pname); |
| return; |
| } |
| } |
| |
| void GL_APIENTRY |
| _es_TexEnvxv(GLenum target, GLenum pname, const GLfixed *params) |
| { |
| switch(target) { |
| case GL_POINT_SPRITE: |
| case GL_TEXTURE_FILTER_CONTROL_EXT: |
| case GL_TEXTURE_ENV: |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glTexEnvxv(target=0x%x)", target); |
| return; |
| } |
| |
| switch(pname) { |
| case GL_COORD_REPLACE: |
| case GL_TEXTURE_ENV_MODE: |
| case GL_COMBINE_RGB: |
| case GL_COMBINE_ALPHA: |
| case GL_SRC0_RGB: |
| case GL_SRC1_RGB: |
| case GL_SRC2_RGB: |
| case GL_SRC0_ALPHA: |
| case GL_SRC1_ALPHA: |
| case GL_SRC2_ALPHA: |
| case GL_OPERAND0_RGB: |
| case GL_OPERAND1_RGB: |
| case GL_OPERAND2_RGB: |
| case GL_OPERAND0_ALPHA: |
| case GL_OPERAND1_ALPHA: |
| case GL_OPERAND2_ALPHA: |
| _mesa_TexEnvf(target, pname, (GLfloat) params[0]); |
| break; |
| case GL_TEXTURE_LOD_BIAS_EXT: |
| case GL_RGB_SCALE: |
| case GL_ALPHA_SCALE: |
| _mesa_TexEnvf(target, pname, (GLfloat) (params[0] / 65536.0f)); |
| break; |
| case GL_TEXTURE_ENV_COLOR: { |
| unsigned int i; |
| GLfloat converted_params[4]; |
| |
| for (i = 0; i < Elements(converted_params); i++) { |
| converted_params[i] = (GLfloat) (params[i] / 65536.0f); |
| } |
| |
| _mesa_TexEnvfv(target, pname, converted_params); |
| break; |
| } |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glTexEnvxv(pname=0x%x)", pname); |
| return; |
| } |
| } |
| |
| void GL_APIENTRY |
| _check_TexGeniOES(GLenum coord, GLenum pname, GLint param) |
| { |
| _es_TexGenf(coord, pname, (GLfloat) param); |
| } |
| |
| void GL_APIENTRY |
| _check_TexGenivOES(GLenum coord, GLenum pname, const GLint *params) |
| { |
| _es_TexGenf(coord, pname, (GLfloat) params[0]); |
| } |
| |
| void GL_APIENTRY |
| _check_TexGenxOES(GLenum coord, GLenum pname, GLfixed param) |
| { |
| _es_TexGenf(coord, pname, (GLfloat) param); |
| } |
| |
| void GL_APIENTRY |
| _check_TexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params) |
| { |
| _es_TexGenf(coord, pname, (GLfloat) params[0]); |
| } |
| |
| void GL_APIENTRY |
| _es_TexParameterx(GLenum target, GLenum pname, GLfixed param) |
| { |
| if (pname == GL_TEXTURE_MAX_ANISOTROPY_EXT) { |
| _mesa_TexParameterf(target, pname, (GLfloat) (param / 65536.0f)); |
| } else { |
| _mesa_TexParameterf(target, pname, (GLfloat) param); |
| } |
| } |
| |
| void GL_APIENTRY |
| _es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params) |
| { |
| unsigned int i; |
| unsigned int n_params = 4; |
| GLfloat converted_params[4]; |
| bool convert_params_value = true; |
| |
| switch(target) { |
| case GL_TEXTURE_2D: |
| case GL_TEXTURE_CUBE_MAP: |
| case GL_TEXTURE_EXTERNAL_OES: |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glTexParameterxv(target=0x%x)", target); |
| return; |
| } |
| switch(pname) { |
| case GL_TEXTURE_WRAP_S: |
| case GL_TEXTURE_WRAP_T: |
| convert_params_value = false; |
| n_params = 1; |
| break; |
| case GL_TEXTURE_MIN_FILTER: |
| case GL_TEXTURE_MAG_FILTER: |
| case GL_GENERATE_MIPMAP: |
| convert_params_value = false; |
| n_params = 1; |
| break; |
| case GL_TEXTURE_MAX_ANISOTROPY_EXT: |
| n_params = 1; |
| break; |
| case GL_TEXTURE_CROP_RECT_OES: |
| n_params = 4; |
| break; |
| default: |
| _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, |
| "glTexParameterxv(pname=0x%x)", pname); |
| return; |
| } |
| |
| if (convert_params_value) { |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) (params[i] / 65536.0f); |
| } |
| } else { |
| for (i = 0; i < n_params; i++) { |
| converted_params[i] = (GLfloat) params[i]; |
| } |
| } |
| |
| _mesa_TexParameterfv(target, pname, converted_params); |
| } |
| |
| void GL_APIENTRY |
| _es_Translatex(GLfixed x, GLfixed y, GLfixed z) |
| { |
| _mesa_Translatef((GLfloat) (x / 65536.0f), |
| (GLfloat) (y / 65536.0f), |
| (GLfloat) (z / 65536.0f)); |
| } |
| |
| #endif /* FEATURE_ES1 */ |