On Mon, Aug 10, 2015 at 12:54 PM, Marek Olšák <mar...@gmail.com> wrote: > On Mon, Aug 10, 2015 at 1:02 PM, Rob Clark <robdcl...@gmail.com> wrote: >> From: Rob Clark <robcl...@freedesktop.org> >> >> These extensions allow reading depth/stencil for GLES contexts, which is >> useful for tools like apitrace. >> >> Signed-off-by: Rob Clark <robcl...@freedesktop.org> >> --- >> I have a patch, which I will send out after some cleanup, that makes >> apitrace able to dump depth/stencil buffers with GLES, thanks to this >> extension. >> >> src/mesa/main/extensions.c | 3 +++ >> src/mesa/main/readpix.c | 25 +++++++++++++++++++------ >> 2 files changed, 22 insertions(+), 6 deletions(-) >> >> diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c >> index 2dbfabd..d934d19 100644 >> --- a/src/mesa/main/extensions.c >> +++ b/src/mesa/main/extensions.c >> @@ -385,6 +385,9 @@ static const struct extension extension_table[] = { >> { "GL_NV_point_sprite", o(NV_point_sprite), >> GL, 2001 }, >> { "GL_NV_primitive_restart", o(NV_primitive_restart), >> GLL, 2002 }, >> { "GL_NV_read_buffer", o(dummy_true), >> ES2, 2011 }, >> + { "GL_NV_read_depth", o(dummy_true), >> ES2, 2011 }, >> + { "GL_NV_read_depth_stencil", o(dummy_true), >> ES2, 2011 }, >> + { "GL_NV_read_stencil", o(dummy_true), >> ES2, 2011 }, >> { "GL_NV_texgen_reflection", o(dummy_true), >> GLL, 1999 }, >> { "GL_NV_texture_barrier", o(NV_texture_barrier), >> GL, 2009 }, >> { "GL_NV_texture_env_combine4", >> o(NV_texture_env_combine4), GLL, 1999 }, >> diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c >> index 2744232..65751aa 100644 >> --- a/src/mesa/main/readpix.c >> +++ b/src/mesa/main/readpix.c >> @@ -917,7 +917,9 @@ read_pixels_es3_error_check(GLenum format, GLenum type, >> GLboolean is_unsigned_int = GL_FALSE; >> GLboolean is_signed_int = GL_FALSE; >> >> - if (!_mesa_is_color_format(internalFormat)) { >> + /* TODO just drop the check? Are there any formats to filter out? */ > > Yes, please drop it. > >> + if (!(_mesa_is_color_format(internalFormat) || >> + _mesa_is_depth_or_stencil_format(internalFormat))) { >> return GL_INVALID_OPERATION; >> } >> >> @@ -950,6 +952,22 @@ read_pixels_es3_error_check(GLenum format, GLenum type, >> (is_unsigned_int && type == GL_UNSIGNED_INT)) >> return GL_NO_ERROR; >> break; >> + case GL_DEPTH_STENCIL: >> + if ((internalFormat == GL_DEPTH24_STENCIL8) && >> + (type == GL_UNSIGNED_INT_24_8)) >> + return GL_NO_ERROR; >> + if ((internalFormat == GL_DEPTH32F_STENCIL8) && >> + (type == GL_FLOAT_32_UNSIGNED_INT_24_8_REV)) >> + return GL_NO_ERROR; >> + break; >> + case GL_DEPTH_COMPONENT: >> + if ((internalFormat == GL_DEPTH_COMPONENT32F) && >> + (type == GL_FLOAT)) >> + return GL_NO_ERROR; >> + if ((internalFormat == GL_DEPTH_COMPONENT24) && >> + (type == GL_UNSIGNED_INT)) >> + return GL_NO_ERROR; >> + break; > > What about GL_STENCIL_INDEX? Mesa does support GL_OES_stencil8.
hmm.. the gles3 glTexImage2D page (where I got the mapping of internalFormat and type) didn't include GL_STENCIL_INDEX. So I'm a bit unclear what (if any) the check for internalFormat should be? Or should we just check that type is GL_STENCIL_INDEX (which is all the NV_read_* spec says)? BR, -R > Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev