xf86-video-intel: src/sna/sna_accel.c
Chris Wilson
ickle at kemper.freedesktop.org
Sat Jul 9 06:20:23 PDT 2011
src/sna/sna_accel.c | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
New commits:
commit f4c5dc88171435aa04a5d99372913120cdafe92b
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sat Jul 9 14:17:24 2011 +0100
sna/accel: Fix fallback for depth=1 copy
A little carelessness with passing down the offsets caused us to
incorrectly copy depth=1 bitmaps, as exemplified by gkrellm.
Reported-by: Nicolas Kalkhof <nkalkhof at web.de>
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 8e8202a..1cd1a2e 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1295,14 +1295,14 @@ fallback:
dst_stride = dst_pixmap->devKind;
src_stride = src_pixmap->devKind;
- dst_bits = (FbBits *)
- ((char *)dst_pixmap->devPrivate.ptr +
- dst_dy * dst_stride + dst_dx * bpp / 8);
- src_bits = (FbBits *)
- ((char *)src_pixmap->devPrivate.ptr +
- src_dy * src_stride + src_dx * bpp / 8);
-
if (alu == GXcopy && !reverse && !upsidedown && bpp >= 8) {
+ dst_bits = (FbBits *)
+ ((char *)dst_pixmap->devPrivate.ptr +
+ dst_dy * dst_stride + dst_dx * bpp / 8);
+ src_bits = (FbBits *)
+ ((char *)src_pixmap->devPrivate.ptr +
+ src_dy * src_stride + src_dx * bpp / 8);
+
do {
DBG(("%s: memcpy_blt(box=(%d, %d), (%d, %d), src=(%d, %d), dst=(%d, %d), pitches=(%d, %d))\n",
__FUNCTION__,
@@ -1321,6 +1321,9 @@ fallback:
box++;
} while (--n);
} else {
+ dst_bits = dst_pixmap->devPrivate.ptr;
+ src_bits = src_pixmap->devPrivate.ptr;
+
dst_stride /= sizeof(FbBits);
src_stride /= sizeof(FbBits);
do {
@@ -1328,13 +1331,13 @@ fallback:
__FUNCTION__,
box->x1, box->y1,
box->x2, box->y2));
- fbBlt(src_bits + box->y1 * src_stride,
+ fbBlt(src_bits + (box->y1 + src_dy) * src_stride,
src_stride,
- box->x1 * bpp,
+ (box->x1 + src_dx) * bpp,
- dst_bits + box->y1 * dst_stride,
+ dst_bits + (box->y1 + dst_dy) * dst_stride,
dst_stride,
- box->x1 * bpp,
+ (box->x1 + dst_dx) * bpp,
(box->x2 - box->x1) * bpp,
(box->y2 - box->y1),
@@ -1363,6 +1366,11 @@ sna_copy_area(DrawablePtr src, DrawablePtr dst, GCPtr gc,
BoxRec box;
RegionRec region;
+ DBG(("%s: -- fallback, wedged=%d, solid=%d [%x]\n",
+ __FUNCTION__, sna->kgem.wedged,
+ PM_IS_SOLID(dst, gc->planemask),
+ (unsigned)gc->planemask));
+
box.x1 = dst_x + dst->x;
box.y1 = dst_y + dst->y;
box.x2 = box.x1 + width;
More information about the xorg-commit
mailing list