Simple implementations in terms of get_[compressed_]texture_image(). --- src/mesa/main/texgetimage.c | 38 ++++++++++++++++++++++++++++++++++++++ src/mesa/main/texgetimage.h | 15 +++++++++++++++ 2 files changed, 53 insertions(+)
diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index bcdcfe8..07da5f4 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -1367,6 +1367,22 @@ _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); + struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, texture); + + get_texture_image(ctx, texObj, 0, level, + xoffset, yoffset, zoffset, width, height, depth, + format, type, bufSize, pixels, "glGetTextureSubImage"); +} + + /** * Do error checking for getting compressed texture images. @@ -1423,6 +1439,10 @@ getcompressedteximage_error_check(struct gl_context *ctx, } +/** + * Compute the number of bytes which will be written when retrieving + * a sub-region of a compressed texture. + */ static GLsizei packed_compressed_size(GLuint dimensions, mesa_format format, GLsizei width, GLsizei height, GLsizei depth, @@ -1637,3 +1657,21 @@ _mesa_GetCompressedTextureImage(GLuint texture, GLint level, bufSize, pixels, "glGetCompressedTextureImage"); } + + +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); + struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, texture); + + get_compressed_texture_image(ctx, texObj, 0, level, + xoffset, yoffset, zoffset, + width, height, depth, + bufSize, pixels, + "glGetCompressedTextureImage"); +} 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