i965: Fix glTexImage when packing alignment != cpp
authorChad Versace <chad.versace@linux.intel.com>
Fri, 18 Oct 2013 21:06:49 +0000 (14:06 -0700)
committerChad Versace <chad.versace@linux.intel.com>
Thu, 24 Oct 2013 16:25:24 +0000 (09:25 -0700)
commitc4205590e731c2e6de6ecc6d13897740df9a7b5f
treec335ccd18930bbef684ff378a785cc5725b68972
parenta6e45b6a17462f4d261a2d176791469847356923
i965: Fix glTexImage when packing alignment != cpp

Fixes texture corruption of Weston clients on cairo-glesv2 backend.
Commit 49ed599 introduced the bug.

Corruption occured when glTexSubImage called
intel_texsubimage_tiled_memcpy() with:
  x,y=10,9
  w,h=7,7
  format=GL_ALPHA(0x1906)
  type=GL_UNSIGNED_BYTE(0x1401)
  gl_format=MESA_FORMAT_A8(0x18)
  packing.alignemnt=4

The function miscalculated the source image's stride as w*cpp=7 without
taking into account the packing alignment. The actual stride was 8.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70435
Reported-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
Tested-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by:Frank Henigman <fjhenigman@google.com>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
src/mesa/drivers/dri/i965/intel_tex_subimage.c