From 18ed71c29863580e960293ff67465aaed69be9bb Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Wed, 5 Oct 2016 08:36:21 +0200 Subject: [PATCH 2/7] glamor: Fix pixmap offset for bitplane in glamor_copy_fbo_cpu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit cba28d5 - "glamor: Handle bitplane in glamor_copy_fbo_cpu" introduced a regression as the computed pixmap offset would not match the actual coordinates and write data elsewhere in memory causing a segfault in fbBltOne(). Translate the pixmap coordinates so that the data is read and written at the correct location. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97974 Signed-off-by: Olivier Fourdan Reviewed-and-Tested-by: Michel Dänzer Signed-off-by: Hans de Goede --- glamor/glamor_copy.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/glamor/glamor_copy.c b/glamor/glamor_copy.c index 8a329d2..3ca56fb 100644 --- a/glamor/glamor_copy.c +++ b/glamor/glamor_copy.c @@ -230,20 +230,22 @@ glamor_copy_cpu_fbo(DrawablePtr src, goto bail; } + src_pix->drawable.x = -dst->x; + src_pix->drawable.y = -dst->y; + fbGetDrawable(&src_pix->drawable, src_bits, src_stride, src_bpp, src_xoff, src_yoff); if (src->bitsPerPixel > 1) - fbCopyNto1(src, &src_pix->drawable, gc, box, nbox, - dst_xoff + dx, dst_yoff + dy, reverse, upsidedown, - bitplane, closure); + fbCopyNto1(src, &src_pix->drawable, gc, box, nbox, dx, dy, + reverse, upsidedown, bitplane, closure); else - fbCopy1toN(src, &src_pix->drawable, gc, box, nbox, - dst_xoff + dx, dst_yoff + dy, reverse, upsidedown, - bitplane, closure); + fbCopy1toN(src, &src_pix->drawable, gc, box, nbox, dx, dy, + reverse, upsidedown, bitplane, closure); - glamor_upload_boxes(dst_pixmap, box, nbox, 0, 0, 0, 0, - (uint8_t *) src_bits, src_stride * sizeof(FbBits)); + glamor_upload_boxes(dst_pixmap, box, nbox, src_xoff, src_yoff, + dst_xoff, dst_yoff, (uint8_t *) src_bits, + src_stride * sizeof(FbBits)); fbDestroyPixmap(src_pix); } else { fbGetDrawable(src, src_bits, src_stride, src_bpp, src_xoff, src_yoff); -- 2.9.3