mesa/es: Validate glGetTexGen parameters in Mesa code rather than the ES wrapper

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Ian Romanick 2012-07-27 16:47:27 -07:00
parent f329adfa49
commit d2b03f6e99
4 changed files with 22 additions and 62 deletions

View file

@ -672,14 +672,6 @@
<param name="pname" type="GLenum"/>
<vector name="params" type="GLtype *" size="dynamic"/>
</proto>
<desc name="coord">
<value name="GL_TEXTURE_GEN_STR_OES"/>
</desc>
<desc name="pname">
<value name="GL_TEXTURE_GEN_MODE_OES"/>
<desc name="params" vector_size="1" convert="false"/>
</desc>
</template>
<template name="GetTexParameter" direction="get">

View file

@ -398,63 +398,13 @@ _es_GetTexEnvxv(GLenum target, GLenum pname, GLfixed *params)
void GL_APIENTRY
_check_GetTexGenivOES(GLenum coord, GLenum pname, GLint *params)
{
unsigned int i;
unsigned int n_params = 1;
GLfloat converted_params[1];
switch(coord) {
case GL_TEXTURE_GEN_STR_OES:
break;
default:
_mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
"glGetTexGenivOES(coord=0x%x)", coord);
return;
}
switch(pname) {
case GL_TEXTURE_GEN_MODE:
n_params = 1;
break;
default:
_mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
"glGetTexGenivOES(pname=0x%x)", pname);
return;
}
_es_GetTexGenfv(coord, pname, converted_params);
for (i = 0; i < n_params; i++) {
params[i] = (GLfloat) converted_params[i];
}
_mesa_GetTexGeniv(coord, pname, params);
}
void GL_APIENTRY
_check_GetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
{
unsigned int i;
unsigned int n_params = 1;
GLfloat converted_params[1];
switch(coord) {
case GL_TEXTURE_GEN_STR_OES:
break;
default:
_mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
"glGetTexGenxvOES(coord=0x%x)", coord);
return;
}
switch(pname) {
case GL_TEXTURE_GEN_MODE:
n_params = 1;
break;
default:
_mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
"glGetTexGenxvOES(pname=0x%x)", pname);
return;
}
_es_GetTexGenfv(coord, pname, converted_params);
for (i = 0; i < n_params; i++) {
params[i] = (GLfloat) converted_params[i];
}
_mesa_GetTexGeniv(coord, pname, (GLint *) params);
}
void GL_APIENTRY

View file

@ -220,7 +220,6 @@ _mesa_TexGend(GLenum coord, GLenum pname, GLdouble param )
void GLAPIENTRY
_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)
{
ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
_mesa_GetTexGenfv(GL_S, pname, params);
}
@ -358,9 +357,17 @@ _mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params )
params[0] = ENUM_TO_FLOAT(texgen->Mode);
break;
case GL_OBJECT_PLANE:
if (ctx->API != API_OPENGL) {
_mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(param)" );
return;
}
COPY_4V(params, texgen->ObjectPlane);
break;
case GL_EYE_PLANE:
if (ctx->API != API_OPENGL) {
_mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGenfv(param)" );
return;
}
COPY_4V(params, texgen->EyePlane);
break;
default:
@ -370,7 +377,7 @@ _mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params )
static void GLAPIENTRY
void GLAPIENTRY
_mesa_GetTexGeniv( GLenum coord, GLenum pname, GLint *params )
{
struct gl_texture_unit *texUnit;
@ -396,12 +403,20 @@ _mesa_GetTexGeniv( GLenum coord, GLenum pname, GLint *params )
params[0] = texgen->Mode;
break;
case GL_OBJECT_PLANE:
if (ctx->API != API_OPENGL) {
_mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(param)" );
return;
}
params[0] = (GLint) texgen->ObjectPlane[0];
params[1] = (GLint) texgen->ObjectPlane[1];
params[2] = (GLint) texgen->ObjectPlane[2];
params[3] = (GLint) texgen->ObjectPlane[3];
break;
case GL_EYE_PLANE:
if (ctx->API != API_OPENGL) {
_mesa_error( ctx, GL_INVALID_ENUM, "glGetTexGeniv(param)" );
return;
}
params[0] = (GLint) texgen->EyePlane[0];
params[1] = (GLint) texgen->EyePlane[1];
params[2] = (GLint) texgen->EyePlane[2];

View file

@ -48,6 +48,9 @@ _mesa_TexGeni( GLenum coord, GLenum pname, GLint param );
extern void GLAPIENTRY
_mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
extern void GLAPIENTRY
_mesa_GetTexGeniv( GLenum coord, GLenum pname, GLint *params );
extern void
_mesa_init_texgen_dispatch(struct _glapi_table *disp);