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

Author: Dave Airlie <[email protected]>
Date:   Thu Mar 22 11:56:43 2012 +0000

drisw: fix image stride calculation for 16-bit.

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 <[email protected]>
Reviewed-by: Brian Paul <[email protected]>

---

 src/gallium/state_trackers/dri/sw/drisw.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/gallium/state_trackers/dri/sw/drisw.c 
b/src/gallium/state_trackers/dri/sw/drisw.c
index f5d1555..c4c4264 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);
 
@@ -265,9 +266,8 @@ drisw_update_tex_buffer(struct dri_drawable *drawable,
    /* Copy the Drawable content to the mapped texture buffer */
    get_image(dPriv, x, y, w, h, map);
 
-   /* The pipe transfer has a pitch rounded up to the nearest 64 pixels.
-      We assume 32 bit pixels. */
-   ximage_stride = w * 4;
+   /* The pipe transfer has a pitch rounded up to the nearest 64 pixels. */
+   ximage_stride = w * cpp;
    for (line = h-1; line; --line) {
       memmove(&map[line * transfer->stride],
               &map[line * ximage_stride],

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to