If you ran g-s in 16-bpp we'd do a bunch of memory corruption. now it just misrenders for some other reasons.
applies to stable. Signed-off-by: Dave Airlie <airl...@redhat.com> --- src/gallium/state_trackers/dri/sw/drisw.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c index f5d1555..91ba3df 100644 --- a/src/gallium/state_trackers/dri/sw/drisw.c +++ b/src/gallium/state_trackers/dri/sw/drisw.c @@ -253,6 +253,7 @@ drisw_update_tex_buffer(struct dri_drawable *drawable, char *map; int x, y, w, h; int ximage_stride, line; + int cpp = util_format_get_blocksize(res->format); get_drawable_info(dPriv, &x, &y, &w, &h); @@ -267,7 +268,7 @@ drisw_update_tex_buffer(struct dri_drawable *drawable, /* The pipe transfer has a pitch rounded up to the nearest 64 pixels. We assume 32 bit pixels. */ - ximage_stride = w * 4; + ximage_stride = w * cpp; for (line = h-1; line; --line) { memmove(&map[line * transfer->stride], &map[line * ximage_stride], -- 1.7.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev