mesa: Fix glCompressedTexImage when dstRowStride != srcRowStride.
authorEric Anholt <eric@anholt.net>
Wed, 30 Nov 2011 20:04:14 +0000 (12:04 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 2 Dec 2011 23:28:44 +0000 (15:28 -0800)
commitbda361e0d47a670f318664abcdf0a065bef22883
treeba729248af046ab013ba5992bbb9d61e0f9f5fb1
parent27e77cb902b4f7f5e127dcd78951e3167f13d59c
mesa: Fix glCompressedTexImage when dstRowStride != srcRowStride.

Since the MapTextureImage changes on Intel, nwn had corruption in the
scrollbar at the load game menu, and corrupted ground textures in the
starting zone.  Heroes of Newerth's intro screen was also thoroughly
garbled.  A new piglit test "compressedteximage" was created to
regression test this.

The issue was this code now seeing dstRowStride aligned to hardware
requirements instead of a temporary buffer that gets uploaded to
hardware later.  The existing code was just trying to memcpy
srcRowStride * height / bh, while the glCompressedTexSubImage2D()
storage code nearby did the correct walking by blockheight rows at a
time.  Just reuse the subimage upload instead of duplicating that
logic.

v2: Update comment at the top of the function (suggestion by Joel
Forsberg)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41451
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> (v1)
src/mesa/main/texstore.c