[Mesa-dev] [PATCH] st/dri/sw: Fix pitch calculation in drisw_update_tex_buffer
Richard Sandiford
rsandifo at linux.vnet.ibm.com
Tue Jun 18 08:41:43 PDT 2013
swrastGetImage rounds the pitch up to 4 bytes for compatibility reasons
that are explained in drisw_glx.c:bytes_per_line, so drisw_update_tex_buffer
must do the same.
Fixes window skew seen while running firefox over vnc on a 16-bit screen.
Signed-off-by: Richard Sandiford <rsandifo at linux.vnet.ibm.com>
---
src/gallium/state_trackers/dri/sw/drisw.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c
index 7a5f797..f9fddf7 100644
--- a/src/gallium/state_trackers/dri/sw/drisw.c
+++ b/src/gallium/state_trackers/dri/sw/drisw.c
@@ -265,8 +265,9 @@ 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. */
- ximage_stride = w * cpp;
+ /* The pipe transfer has a pitch rounded up to the nearest 64 pixels.
+ get_image() has a patch rounded up to 4 bytes. */
+ ximage_stride = ((w * cpp) + 3) & -4;
for (line = h-1; line; --line) {
memmove(&map[line * transfer->stride],
&map[line * ximage_stride],
--
1.7.11.7
More information about the mesa-dev
mailing list