Mesa (master): mesa: only copy the requested teximage faces

Ilia Mirkin imirkin at kemper.freedesktop.org
Thu Aug 27 21:20:12 UTC 2015


Module: Mesa
Branch: master
Commit: 2259b111003f2e8c55cae42677ec45345fb1b6e3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2259b111003f2e8c55cae42677ec45345fb1b6e3

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Thu Aug 27 15:28:24 2015 -0400

mesa: only copy the requested teximage faces

Cube maps are special in that they have separate teximages for each
face. We handled that by copying the data to them separately, but in
case zoffset != 0 or depth != 6 we would read off the end of the client
array or modify the wrong images.

zoffset/depth have already been verified by the time the code gets to
this stage, so no need to double-check.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Brian Paul <brianp at vmware.com>
Cc: "10.6 11.0" <mesa-stable at lists.freedesktop.org>

---

 src/mesa/main/teximage.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 8d94903..ee4b610 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -3805,12 +3805,12 @@ texturesubimage(struct gl_context *ctx, GLuint dims,
       rowStride = _mesa_image_image_stride(&ctx->Unpack, width, height,
                                            format, type);
       /* Copy in each face. */
-      for (i = 0; i < 6; ++i) {
+      for (i = zoffset; i < zoffset + depth; ++i) {
          texImage = texObj->Image[i][level];
          assert(texImage);
 
          _mesa_texture_sub_image(ctx, 3, texObj, texImage, texObj->Target,
-                                 level, xoffset, yoffset, zoffset,
+                                 level, xoffset, yoffset, 0,
                                  width, height, 1, format,
                                  type, pixels, true);
          pixels = (GLubyte *) pixels + rowStride;




More information about the mesa-commit mailing list