mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-30 11:30:22 +01:00
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 <airlied@redhat.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
(cherry picked from commit d6c5ad52b2)
This commit is contained in:
parent
aa17a8b81e
commit
ca8be6fe2b
1 changed files with 3 additions and 3 deletions
|
|
@ -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],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue