summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorRico Schüller <[email protected]>2013-10-20 12:39:55 +0200
committerKenneth Graunke <[email protected]>2013-10-20 20:12:08 -0700
commit1bbd3bb98a90dc38679566083fd72d7480c7df00 (patch)
treed32bb90fae8dadeedd2f14603d8b61798a4aed20 /src/mesa
parent50370e483ba500fa3c65e8b67b915782a6f7fad0 (diff)
mesa: Add infrastructure for GL_ARB_texture_mirror_clamp_to_edge.
Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Signed-off-by: Rico Schüller <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/main/extensions.c1
-rw-r--r--src/mesa/main/mtypes.h1
-rw-r--r--src/mesa/main/samplerobj.c2
-rw-r--r--src/mesa/main/texparam.c12
4 files changed, 12 insertions, 4 deletions
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 2507fdf34b8..bf8d7a36b8b 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -144,6 +144,7 @@ static const struct extension extension_table[] = {
{ "GL_ARB_texture_float", o(ARB_texture_float), GL, 2004 },
{ "GL_ARB_texture_gather", o(ARB_texture_gather), GL, 2009 },
{ "GL_ARB_texture_mirrored_repeat", o(dummy_true), GLL, 2001 },
+ { "GL_ARB_texture_mirror_clamp_to_edge", o(ARB_texture_mirror_clamp_to_edge), GL, 2013 },
{ "GL_ARB_texture_multisample", o(ARB_texture_multisample), GL, 2009 },
{ "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), GL, 2003 },
{ "GL_ARB_texture_query_levels", o(ARB_texture_query_levels), GL, 2012 },
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 15893ecac89..6374e8c0d58 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -3218,6 +3218,7 @@ struct gl_extensions
GLboolean ARB_texture_env_dot3;
GLboolean ARB_texture_float;
GLboolean ARB_texture_gather;
+ GLboolean ARB_texture_mirror_clamp_to_edge;
GLboolean ARB_texture_multisample;
GLboolean ARB_texture_non_power_of_two;
GLboolean ARB_texture_query_levels;
diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c
index c3b612c7618..7285ef5ed34 100644
--- a/src/mesa/main/samplerobj.c
+++ b/src/mesa/main/samplerobj.c
@@ -305,7 +305,7 @@ validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap)
case GL_MIRROR_CLAMP_EXT:
return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp;
case GL_MIRROR_CLAMP_TO_EDGE_EXT:
- return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp;
+ return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp || e->ARB_texture_mirror_clamp_to_edge;
case GL_MIRROR_CLAMP_TO_BORDER_EXT:
return e->EXT_texture_mirror_clamp;
default:
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
index 31723c37784..c9d928f6343 100644
--- a/src/mesa/main/texparam.c
+++ b/src/mesa/main/texparam.c
@@ -84,16 +84,22 @@ validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap)
break;
case GL_MIRROR_CLAMP_EXT:
+ 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_EDGE_EXT:
supported = is_desktop_gl
- && (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp)
- && (target != GL_TEXTURE_RECTANGLE_NV)
+ && (e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp || e->ARB_texture_mirror_clamp_to_edge)
+ && (target != GL_TEXTURE_RECTANGLE_NV)
&& (target != GL_TEXTURE_EXTERNAL_OES);
break;
case GL_MIRROR_CLAMP_TO_BORDER_EXT:
supported = is_desktop_gl && e->EXT_texture_mirror_clamp
- && (target != GL_TEXTURE_RECTANGLE_NV)
+ && (target != GL_TEXTURE_RECTANGLE_NV)
&& (target != GL_TEXTURE_EXTERNAL_OES);
break;