diff options
author | Ian Romanick <[email protected]> | 2012-07-27 16:07:19 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2012-08-29 15:09:35 -0700 |
commit | fb4f2d34256aee6b0005b18769a395dd066d3820 (patch) | |
tree | 610f616cbe0f528eed4ebbe280f9d4780fcdf4a1 | |
parent | 8df3f9bd5f7626a4548e9901c0b7af33a21af8a6 (diff) |
mesa/es: Validate glMaterial face and pname in Mesa code rather than the ES wrapper
Signed-off-by: Ian Romanick <[email protected]>
-rw-r--r-- | src/mesa/main/APIspec.xml | 20 | ||||
-rw-r--r-- | src/mesa/main/es1_conversion.c | 17 | ||||
-rw-r--r-- | src/mesa/vbo/vbo_exec_api.c | 8 |
3 files changed, 11 insertions, 34 deletions
diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index e7777a7cbcf..baa7abf7f49 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -126,26 +126,6 @@ <param name="param" type="GLtype"/> </vector> </proto> - - <desc name="face"> - <value name="GL_FRONT_AND_BACK"/> - </desc> - - <desc name="pname"> - <value name="GL_AMBIENT"/> - <value name="GL_DIFFUSE"/> - <value name="GL_AMBIENT_AND_DIFFUSE"/> - <value name="GL_SPECULAR"/> - <value name="GL_EMISSION"/> - - <desc name="params" vector_size="4"/> - </desc> - - <desc name="pname"> - <value name="GL_SHININESS"/> - - <desc name="params" vector_size="1"/> - </desc> </template> <template name="PointSize"> diff --git a/src/mesa/main/es1_conversion.c b/src/mesa/main/es1_conversion.c index c1bcfbe1f57..9b13f13d8a3 100644 --- a/src/mesa/main/es1_conversion.c +++ b/src/mesa/main/es1_conversion.c @@ -635,18 +635,13 @@ _es_LoadMatrixx(const GLfixed *m) void GL_APIENTRY _es_Materialx(GLenum face, GLenum pname, GLfixed param) { - switch(face) { - case GL_FRONT_AND_BACK: - break; - default: + if (face != GL_FRONT_AND_BACK) { _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glMaterialx(face=0x%x)", face); return; } - switch(pname) { - case GL_SHININESS: - break; - default: + + if (pname != GL_SHININESS) { _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, "glMaterialx(pname=0x%x)", pname); return; @@ -662,14 +657,12 @@ _es_Materialxv(GLenum face, GLenum pname, const GLfixed *params) unsigned int n_params = 4; GLfloat converted_params[4]; - switch(face) { - case GL_FRONT_AND_BACK: - break; - default: + 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: diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index fc7e4069232..a97f8d7f3b4 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -457,10 +457,10 @@ vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params) updateMats = ALL_MATERIAL_BITS; } - if (face == GL_FRONT) { + if (ctx->API == API_OPENGL && face == GL_FRONT) { updateMats &= FRONT_MATERIAL_BITS; } - else if (face == GL_BACK) { + else if (ctx->API == API_OPENGL && face == GL_BACK) { updateMats &= BACK_MATERIAL_BITS; } else if (face != GL_FRONT_AND_BACK) { @@ -506,6 +506,10 @@ vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params) MAT_ATTR(VBO_ATTRIB_MAT_BACK_SHININESS, 1, params); break; case GL_COLOR_INDEXES: + if (ctx->API != API_OPENGL) { + _mesa_error(ctx, GL_INVALID_ENUM, "glMaterialfv(pname)"); + return; + } if (updateMats & MAT_BIT_FRONT_INDEXES) MAT_ATTR(VBO_ATTRIB_MAT_FRONT_INDEXES, 3, params); if (updateMats & MAT_BIT_BACK_INDEXES) |