Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu>
On Wed, Jul 15, 2015 at 7:40 PM, Brian Paul <bri...@vmware.com> wrote: > Simple implementations in terms of get_[compressed_]texture_image(). > --- > src/mesa/main/texgetimage.c | 62 > ++++++++++++++++++++++++++++++++++++++++++++- > src/mesa/main/texgetimage.h | 15 +++++++++++ > 2 files changed, 76 insertions(+), 1 deletion(-) > > diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c > index 6ac1779..ee086d1 100644 > --- a/src/mesa/main/texgetimage.c > +++ b/src/mesa/main/texgetimage.c > @@ -893,7 +893,8 @@ legal_getteximage_target(struct gl_context *ctx, GLenum > target, bool dsa) > /** > * Wrapper for _mesa_select_tex_image() which can handle target being > * GL_TEXTURE_CUBE_MAP_ARB in which case we use zoffset to select a cube > face. > - * This can happen for glGetTextureImage (DSA function). > + * This can happen for glGetTextureImage and glGetTextureSubImage (DSA > + * functions). > */ > static struct gl_texture_image * > select_tex_image(const struct gl_texture_object *texObj, GLenum target, > @@ -1437,6 +1438,35 @@ _mesa_GetTextureImage(GLuint texture, GLint level, > GLenum format, GLenum type, > } > > > +void GLAPIENTRY > +_mesa_GetTextureSubImage(GLuint texture, GLint level, > + GLint xoffset, GLint yoffset, GLint zoffset, > + GLsizei width, GLsizei height, GLsizei depth, > + GLenum format, GLenum type, GLsizei bufSize, > + void *pixels) > +{ > + GET_CURRENT_CONTEXT(ctx); > + static const char *caller = "glGetTextureSubImage"; > + struct gl_texture_object *texObj = > + _mesa_lookup_texture_err(ctx, texture, caller); > + > + if (!texObj) { > + return; > + } > + > + if (getteximage_error_check(ctx, texObj, texObj->Target, level, > + xoffset, yoffset, zoffset, width, height, > depth, > + format, type, bufSize, pixels, caller)) { > + return; > + } > + > + get_texture_image(ctx, texObj, texObj->Target, level, > + xoffset, yoffset, zoffset, width, height, depth, > + format, type, bufSize, pixels, caller); > +} > + > + > + > /** > * Compute the number of bytes which will be written when retrieving > * a sub-region of a compressed texture. > @@ -1720,3 +1750,33 @@ _mesa_GetCompressedTextureImage(GLuint texture, GLint > level, > 0, 0, 0, width, height, depth, > bufSize, pixels, caller); > } > + > + > +void APIENTRY > +_mesa_GetCompressedTextureSubImage(GLuint texture, GLint level, > + GLint xoffset, GLint yoffset, > + GLint zoffset, GLsizei width, > + GLsizei height, GLsizei depth, > + GLsizei bufSize, void *pixels) > +{ > + GET_CURRENT_CONTEXT(ctx); > + static const char *caller = "glGetCompressedTextureImage"; > + struct gl_texture_object *texObj; > + > + texObj = _mesa_lookup_texture_err(ctx, texture, caller); > + if (!texObj) { > + return; > + } > + > + if (getcompressedteximage_error_check(ctx, texObj, texObj->Target, level, > + xoffset, yoffset, zoffset, > + width, height, depth, > + bufSize, pixels, caller)) { > + return; > + } > + > + get_compressed_texture_image(ctx, texObj, texObj->Target, level, > + xoffset, yoffset, zoffset, > + width, height, depth, > + bufSize, pixels, caller); > +} > diff --git a/src/mesa/main/texgetimage.h b/src/mesa/main/texgetimage.h > index 040495a..63c75eb 100644 > --- a/src/mesa/main/texgetimage.h > +++ b/src/mesa/main/texgetimage.h > @@ -71,6 +71,14 @@ _mesa_GetTextureImage(GLuint texture, GLint level, GLenum > format, > GLenum type, GLsizei bufSize, GLvoid *pixels); > > extern void GLAPIENTRY > +_mesa_GetTextureSubImage(GLuint texture, GLint level, > + GLint xoffset, GLint yoffset, GLint zoffset, > + GLsizei width, GLsizei height, GLsizei depth, > + GLenum format, GLenum type, GLsizei bufSize, > + void *pixels); > + > + > +extern void GLAPIENTRY > _mesa_GetCompressedTexImage(GLenum target, GLint lod, GLvoid *img); > > extern void GLAPIENTRY > @@ -81,4 +89,11 @@ extern void GLAPIENTRY > _mesa_GetCompressedTextureImage(GLuint texture, GLint level, GLsizei bufSize, > GLvoid *pixels); > > +extern void APIENTRY > +_mesa_GetCompressedTextureSubImage(GLuint texture, GLint level, > + GLint xoffset, GLint yoffset, > + GLint zoffset, GLsizei width, > + GLsizei height, GLsizei depth, > + GLsizei bufSize, void *pixels); > + > #endif /* TEXGETIMAGE_H */ > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev