[Mesa-dev] [PATCH v2] mesa: add GL_OES_texture_stencil8 support
Ilia Mirkin
imirkin at alum.mit.edu
Thu Feb 18 01:27:29 UTC 2016
It's basically the same thing as GL_ARB_texture_stencil8 except that
glCopyTexImage isn't supported, so add STENCIL_INDEX to the list of
invalid GLES formats for glCopyTexImage.
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
v1 -> v2: add checking to es3_error_check_format_and_type.
I only get 2 dEQP test failures, and they're both related to the, I believe incorrect, computation of baseFormat based on the texture's/rb's real internal format instead of the "real" base format it was created with.
docs/GL3.txt | 2 +-
src/mesa/main/extensions_table.h | 1 +
src/mesa/main/glformats.c | 7 +++++++
src/mesa/main/teximage.c | 2 ++
4 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/docs/GL3.txt b/docs/GL3.txt
index 3c4db06..26847b9 100644
--- a/docs/GL3.txt
+++ b/docs/GL3.txt
@@ -256,7 +256,7 @@ GLES3.2, GLSL ES 3.2
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 not started (based on GL_ARB_texture_stencil8, which is done for some drivers)
+ GL_OES_texture_stencil8 DONE (all drivers that support GL_ARB_texture_stencil8)
GL_OES_texture_storage_multisample_2d_array DONE (all drivers that support GL_ARB_texture_multisample)
More info about these features and the work involved can be found at
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index c94928b..3a90bc9 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -345,6 +345,7 @@ EXT(OES_texture_half_float , OES_texture_half_float
EXT(OES_texture_half_float_linear , OES_texture_half_float_linear , x , x , x , ES2, 2005)
EXT(OES_texture_mirrored_repeat , dummy_true , x , x , ES1, x , 2005)
EXT(OES_texture_npot , ARB_texture_non_power_of_two , x , x , ES1, ES2, 2005)
+EXT(OES_texture_stencil8 , ARB_texture_stencil8 , x , x , x , 30, 2014)
EXT(OES_texture_storage_multisample_2d_array, ARB_texture_multisample , x , x , ES1, 31, 2014)
EXT(OES_texture_view , ARB_texture_view , x , x , x , 31, 2014)
EXT(OES_vertex_array_object , dummy_true , x , x , ES1, ES2, 2010)
diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index f528444..2660ecc 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -3153,6 +3153,13 @@ _mesa_es3_error_check_format_and_type(const struct gl_context *ctx,
}
break;
+ case GL_STENCIL_INDEX:
+ if (_mesa_has_OES_texture_stencil8(ctx) &&
+ type == GL_UNSIGNED_BYTE &&
+ internalFormat == GL_STENCIL_INDEX8)
+ break;
+ return GL_INVALID_OPERATION;
+
case GL_ALPHA:
case GL_LUMINANCE:
case GL_LUMINANCE_ALPHA:
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 57765d7..8a4c628 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -2285,8 +2285,10 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
}
if (baseFormat == GL_DEPTH_COMPONENT ||
baseFormat == GL_DEPTH_STENCIL ||
+ baseFormat == GL_STENCIL_INDEX ||
rb_base_format == GL_DEPTH_COMPONENT ||
rb_base_format == GL_DEPTH_STENCIL ||
+ rb_base_format == GL_STENCIL_INDEX ||
((baseFormat == GL_LUMINANCE_ALPHA ||
baseFormat == GL_ALPHA) &&
rb_base_format != GL_RGBA) ||
--
2.4.10
More information about the mesa-dev
mailing list