mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
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 <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
d53101a9f3
commit
842efb9447
3 changed files with 12 additions and 26 deletions
|
|
@ -239,18 +239,8 @@
|
|||
<value name="GL_TEXTURE_WRAP_S"/>
|
||||
<value name="GL_TEXTURE_WRAP_T"/>
|
||||
<value name="GL_TEXTURE_WRAP_R_OES" category="OES_texture_3D"/>
|
||||
|
||||
<desc name="param">
|
||||
<value name="GL_CLAMP_TO_EDGE"/>
|
||||
<value name="GL_REPEAT"/>
|
||||
<value name="GL_MIRRORED_REPEAT" category="GLES2.0"/>
|
||||
<value name="GL_MIRRORED_REPEAT_OES" category="OES_texture_mirrored_repeat"/>
|
||||
</desc>
|
||||
</desc>
|
||||
|
||||
<desc name="pname">
|
||||
<value name="GL_TEXTURE_MIN_FILTER"/>
|
||||
<value name="GL_TEXTURE_MAG_FILTER"/>
|
||||
<value name="GL_TEXTURE_MIN_FILTER"/>
|
||||
<value name="GL_TEXTURE_MAG_FILTER"/>
|
||||
<value name="GL_TEXTURE_MAX_ANISOTROPY_EXT" category="EXT_texture_filter_anisotropic"/>
|
||||
</desc>
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue