On 12/16/2014 03:22 PM, Laura Ekstrand wrote:
On Sat, Dec 13, 2014 at 6:42 AM, Brian Paul <bri...@vmware.com <mailto:bri...@vmware.com>> wrote: Needed for GL_ARB_get_texture_sub_image. But at this point, the offsets are always zero and the sizes match the whole texture image. --- src/mesa/main/texgetimage.c | 105 ++++++++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 47 deletions(-) diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 03ad5f4..71c25bb 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -74,12 +74,11 @@ type_needs_clamping(GLenum type) */ static void get_tex_depth(struct gl_context *ctx, GLuint dimensions, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLint depth, GLenum format, GLenum type, GLvoid *pixels, struct gl_texture_image *texImage) { - const GLint width = texImage->Width; - GLint height = texImage->Height; - GLint depth = texImage->Depth; GLint img, row; GLfloat *depthRow = malloc(width * sizeof(GLfloat)); @@ -98,9 +97,9 @@ get_tex_depth(struct gl_context *ctx, GLuint dimensions, GLint srcRowStride; You are not checking here to make sure that zoffset + img < depth. I looked in the next patch (implement _mesa_GetTextureSubImage) and found that the dimensions_error_check does this. It might be good to make a note of that here.
I've added a comment and assertion there and before similar loops.
/* map src texture buffer */ - ctx->Driver.MapTextureImage(ctx, texImage, img, - 0, 0, width, height, GL_MAP_READ_BIT, - &srcMap, &srcRowStride); + ctx->Driver.MapTextureImage(ctx, texImage, zoffset + img, + xoffset, yoffset, width, height, + GL_MAP_READ_BIT, &srcMap, &srcRowStride); if (srcMap) { for (row = 0; row < height; row++) { Why didn't you update ctx->Driver.UnmapTextureImage(ctx, texImage, img) to take zoffset + img here? You did that for get_tex_rgba_uncompressed. Is there some reason that it has to be UnmapTextureImage(.. img only) for all of the other functions?
Those were oversights. Fixed now. I'll post a v2 patch. Thanks. -Brian _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev