From 842efb9447bd4c8c29599f1baeee8a380d5276c2 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 3 Oct 2011 13:03:47 -0700 Subject: [PATCH] mesa/es: Validate GL_TEXTURE_WRAP param in Mesa code rather than the ES wrapper v2: Add proper core-profile filtering. Signed-off-by: Ian Romanick Reviewed-by: Kenneth Graunke Reviewed-by: Jordan Justen --- src/mesa/main/APIspec.xml | 14 ++------------ src/mesa/main/es1_conversion.c | 10 ---------- src/mesa/main/texparam.c | 14 ++++++++++---- 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index c26caf6..6d7dbfd 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -239,18 +239,8 @@ - - - - - - - - - - - - + + diff --git a/src/mesa/main/es1_conversion.c b/src/mesa/main/es1_conversion.c index ebd1e88..0d9f5b4 100644 --- a/src/mesa/main/es1_conversion.c +++ b/src/mesa/main/es1_conversion.c @@ -1253,11 +1253,6 @@ _es_TexParameterx(GLenum target, GLenum pname, GLfixed param) switch(pname) { case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - if (param != GL_CLAMP_TO_EDGE && param != GL_REPEAT && param != GL_MIRRORED_REPEAT) { - _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, - "glTexParameterx(pname=0x%x)", pname); - return; - } convert_param_value = false; break; case GL_TEXTURE_MIN_FILTER: @@ -1310,11 +1305,6 @@ _es_TexParameterxv(GLenum target, GLenum pname, const GLfixed *params) switch(pname) { case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - if (params[0] != GL_CLAMP_TO_EDGE && params[0] != GL_REPEAT && params[0] != GL_MIRRORED_REPEAT) { - _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM, - "glTexParameterxv(pname=0x%x)", pname); - return; - } convert_params_value = false; n_params = 1; break; diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index a0c508c..a0f736c 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -56,11 +56,16 @@ static GLboolean validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) { const struct gl_extensions * const e = & ctx->Extensions; + const bool is_desktop_gl = _mesa_is_desktop_gl(ctx); bool supported; switch (wrap) { case GL_CLAMP: - supported = (target != GL_TEXTURE_EXTERNAL_OES); + /* GL_CLAMP was removed in the core profile, and it has never existed in + * OpenGL ES. + */ + supported = (ctx->API == API_OPENGL) + && (target != GL_TEXTURE_EXTERNAL_OES); break; case GL_CLAMP_TO_EDGE: @@ -68,7 +73,7 @@ validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) break; case GL_CLAMP_TO_BORDER: - supported = e->ARB_texture_border_clamp + supported = is_desktop_gl && e->ARB_texture_border_clamp && (target != GL_TEXTURE_EXTERNAL_OES); break; @@ -80,13 +85,14 @@ validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap) case GL_MIRROR_CLAMP_EXT: case GL_MIRROR_CLAMP_TO_EDGE_EXT: - supported = (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp) + supported = is_desktop_gl + && (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp) && (target != GL_TEXTURE_RECTANGLE_NV) && (target != GL_TEXTURE_EXTERNAL_OES); break; case GL_MIRROR_CLAMP_TO_BORDER_EXT: - supported = e->EXT_texture_mirror_clamp + supported = is_desktop_gl && e->EXT_texture_mirror_clamp && (target != GL_TEXTURE_RECTANGLE_NV) && (target != GL_TEXTURE_EXTERNAL_OES); break; -- 2.7.4