From b6654831c36f9780e6bcd23bb211470ec0db7de2 Mon Sep 17 00:00:00 2001
From: Ilia Mirkin
Date: Mon, 15 Feb 2016 19:09:15 -0500
Subject: [PATCH] mesa: add GL_OES_texture_border_clamp support
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit
Only minor differences to the existing ARB_texture_border_clamp support.
Signed-off-by: Ilia Mirkin
Reviewed-by: Samuel Iglesias Gonsálvez
---
docs/GL3.txt | 2 +-
docs/relnotes/11.3.0.html | 1 +
src/mapi/glapi/gen/es_EXT.xml | 58 ++++++++++++++++++++++++-
src/mesa/main/extensions_table.h | 1 +
src/mesa/main/samplerobj.c | 6 ++-
src/mesa/main/tests/dispatch_sanity.cpp | 10 +++++
src/mesa/main/texparam.c | 11 +++--
7 files changed, 81 insertions(+), 8 deletions(-)
diff --git a/docs/GL3.txt b/docs/GL3.txt
index 73974de42a9..76f40e44c22 100644
--- a/docs/GL3.txt
+++ b/docs/GL3.txt
@@ -253,7 +253,7 @@ GLES3.2, GLSL ES 3.2
GL_OES_shader_io_blocks not started (based on parts of GLSL 1.50, which is done)
GL_OES_shader_multisample_interpolation not started (based on parts of GL_ARB_gpu_shader5, which is done)
GL_OES_tessellation_shader not started (based on GL_ARB_tessellation_shader, which is done for some drivers)
- GL_OES_texture_border_clamp not started (based on GL_ARB_texture_border_clamp, which is done)
+ GL_OES_texture_border_clamp DONE (all drivers)
GL_OES_texture_buffer not started (based on GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_range, and GL_ARB_texture_buffer_object_rgb32 that are all done)
GL_OES_texture_cube_map_array not started (based on GL_ARB_texture_cube_map_array, which is done for all drivers)
GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8)
diff --git a/docs/relnotes/11.3.0.html b/docs/relnotes/11.3.0.html
index 56c1542a867..eee4373e359 100644
--- a/docs/relnotes/11.3.0.html
+++ b/docs/relnotes/11.3.0.html
@@ -44,6 +44,7 @@ Note: some of the new features are only available with certain drivers.
+- GL_OES_texture_border_clamp and GL_EXT_texture_border_clamp on all drivers that support GL_ARB_texture_border_clamp
Bug fixes
diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
index 86df980304b..fb0ef05f853 100644
--- a/src/mapi/glapi/gen/es_EXT.xml
+++ b/src/mapi/glapi/gen/es_EXT.xml
@@ -982,5 +982,61 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 0c90f010cc9..2cd9d7586d6 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -333,6 +333,7 @@ EXT(OES_stencil8 , dummy_true
EXT(OES_stencil_wrap , dummy_true , x , x , ES1, x , 2002)
EXT(OES_surfaceless_context , dummy_true , x , x , ES1, ES2, 2012)
EXT(OES_texture_3D , dummy_true , x , x , x , ES2, 2005)
+EXT(OES_texture_border_clamp , ARB_texture_border_clamp , x , x , x , ES2, 2014)
EXT(OES_texture_cube_map , ARB_texture_cube_map , x , x , ES1, x , 2007)
EXT(OES_texture_env_crossbar , ARB_texture_env_crossbar , x , x , ES1, x , 2005)
EXT(OES_texture_float , OES_texture_float , x , x , x , ES2, 2005)
diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c
index fe15508696e..ca366d967ab 100644
--- a/src/mesa/main/samplerobj.c
+++ b/src/mesa/main/samplerobj.c
@@ -1518,7 +1518,8 @@ _mesa_GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params)
sampObj = _mesa_lookup_samplerobj(ctx, sampler);
if (!sampObj) {
- _mesa_error(ctx, GL_INVALID_VALUE,
+ _mesa_error(ctx, (_mesa_is_gles(ctx) ?
+ GL_INVALID_OPERATION : GL_INVALID_VALUE),
"glGetSamplerParameterIiv(sampler %u)",
sampler);
return;
@@ -1593,7 +1594,8 @@ _mesa_GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params)
sampObj = _mesa_lookup_samplerobj(ctx, sampler);
if (!sampObj) {
- _mesa_error(ctx, GL_INVALID_VALUE,
+ _mesa_error(ctx, (_mesa_is_gles(ctx) ?
+ GL_INVALID_OPERATION : GL_INVALID_VALUE),
"glGetSamplerParameterIuiv(sampler %u)",
sampler);
return;
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index e6412962251..24e3d189091 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -2436,6 +2436,16 @@ const struct function gles3_functions_possible[] = {
{ "glGetFragDataIndexEXT", 30, -1 },
{ "glBindFragDataLocationEXT", 30, -1 },
+ /* GL_OES_texture_border_clamp */
+ { "glTexParameterIivOES", 30, -1 },
+ { "glTexParameterIuivOES", 30, -1 },
+ { "glGetTexParameterIivOES", 30, -1 },
+ { "glGetTexParameterIuivOES", 30, -1 },
+ { "glSamplerParameterIivOES", 30, -1 },
+ { "glSamplerParameterIuivOES", 30, -1 },
+ { "glGetSamplerParameterIivOES", 30, -1 },
+ { "glGetSamplerParameterIuivOES", 30, -1 },
+
{ NULL, 0, -1 }
};
diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
index 260b3c32887..20770a77e15 100644
--- a/src/mesa/main/texparam.c
+++ b/src/mesa/main/texparam.c
@@ -72,7 +72,7 @@ validate_texture_wrap_mode(struct gl_context * ctx, GLenum target, GLenum wrap)
break;
case GL_CLAMP_TO_BORDER:
- supported = is_desktop_gl && e->ARB_texture_border_clamp
+ supported = ctx->API != API_OPENGLES && e->ARB_texture_border_clamp
&& (target != GL_TEXTURE_EXTERNAL_OES);
break;
@@ -717,7 +717,8 @@ set_tex_parameterf(struct gl_context *ctx,
break;
case GL_TEXTURE_BORDER_COLOR:
- if (!_mesa_is_desktop_gl(ctx))
+ if (ctx->API == API_OPENGLES ||
+ !ctx->Extensions.ARB_texture_border_clamp)
goto invalid_pname;
if (!target_allows_setting_sampler_parameters(texObj->Target))
@@ -1735,7 +1736,8 @@ get_tex_parameterfv(struct gl_context *ctx,
*params = ENUM_TO_FLOAT(obj->Sampler.WrapR);
break;
case GL_TEXTURE_BORDER_COLOR:
- if (!_mesa_is_desktop_gl(ctx))
+ if (ctx->API == API_OPENGLES ||
+ !ctx->Extensions.ARB_texture_border_clamp)
goto invalid_pname;
if (ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP))
@@ -1969,7 +1971,8 @@ get_tex_parameteriv(struct gl_context *ctx,
*params = (GLint) obj->Sampler.WrapR;
break;
case GL_TEXTURE_BORDER_COLOR:
- if (!_mesa_is_desktop_gl(ctx))
+ if (ctx->API == API_OPENGLES ||
+ !ctx->Extensions.ARB_texture_border_clamp)
goto invalid_pname;
{
--
2.30.2