From 362b0dc6a3b1692b752d8f250075ccc81debfca3 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 26 Jun 2013 12:04:46 +0100 Subject: [PATCH] sna/gen4+: Fix determination of intermediate extents Complete logic fail for finding the bounding box of the boxes to be copied. Reported-by: Clemens Eisserer Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66168 Signed-off-by: Chris Wilson --- src/sna/gen4_render.c | 8 ++++---- src/sna/gen5_render.c | 8 ++++---- src/sna/gen6_render.c | 8 ++++---- src/sna/gen7_render.c | 8 ++++---- src/sna/sna_render.c | 5 +++-- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c index e6b6d440..b27e531a 100644 --- a/src/sna/gen4_render.c +++ b/src/sna/gen4_render.c @@ -2377,14 +2377,14 @@ fallback_blt: int i; for (i = 1; i < n; i++) { - if (extents.x1 < box[i].x1) + if (box[i].x1 < extents.x1) extents.x1 = box[i].x1; - if (extents.y1 < box[i].y1) + if (box[i].y1 < extents.y1) extents.y1 = box[i].y1; - if (extents.x2 > box[i].x2) + if (box[i].x2 > extents.x2) extents.x2 = box[i].x2; - if (extents.y2 > box[i].y2) + if (box[i].y2 > extents.y2) extents.y2 = box[i].y2; } diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c index f7f7e6fe..689332c1 100644 --- a/src/sna/gen5_render.c +++ b/src/sna/gen5_render.c @@ -2323,14 +2323,14 @@ fallback_blt: int i; for (i = 1; i < n; i++) { - if (extents.x1 < box[i].x1) + if (box[i].x1 < extents.x1) extents.x1 = box[i].x1; - if (extents.y1 < box[i].y1) + if (box[i].y1 < extents.y1) extents.y1 = box[i].y1; - if (extents.x2 > box[i].x2) + if (box[i].x2 > extents.x2) extents.x2 = box[i].x2; - if (extents.y2 > box[i].y2) + if (box[i].y2 > extents.y2) extents.y2 = box[i].y2; } diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c index 5cdfec70..e9136d74 100644 --- a/src/sna/gen6_render.c +++ b/src/sna/gen6_render.c @@ -2758,14 +2758,14 @@ fallback_blt: extents = box[0]; for (i = 1; i < n; i++) { - if (extents.x1 < box[i].x1) + if (box[i].x1 < extents.x1) extents.x1 = box[i].x1; - if (extents.y1 < box[i].y1) + if (box[i].y1 < extents.y1) extents.y1 = box[i].y1; - if (extents.x2 > box[i].x2) + if (box[i].x2 > extents.x2) extents.x2 = box[i].x2; - if (extents.y2 > box[i].y2) + if (box[i].y2 > extents.y2) extents.y2 = box[i].y2; } diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c index 49a82e11..665d5152 100644 --- a/src/sna/gen7_render.c +++ b/src/sna/gen7_render.c @@ -2941,14 +2941,14 @@ fallback_blt: extents = box[0]; for (i = 1; i < n; i++) { - if (extents.x1 < box[i].x1) + if (box[i].x1 < extents.x1) extents.x1 = box[i].x1; - if (extents.y1 < box[i].y1) + if (box[i].y1 < extents.y1) extents.y1 = box[i].y1; - if (extents.x2 > box[i].x2) + if (box[i].x2 > extents.x2) extents.x2 = box[i].x2; - if (extents.y2 > box[i].y2) + if (box[i].y2 > extents.y2) extents.y2 = box[i].y2; } diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c index 330bfadf..f27d1d8d 100644 --- a/src/sna/sna_render.c +++ b/src/sna/sna_render.c @@ -1890,11 +1890,12 @@ sna_render_composite_redirect(struct sna *sna, return false; #endif - DBG(("%s: target too large (%dx%d), copying to temporary %dx%d, max %d\n", + DBG(("%s: target too large (%dx%d), copying to temporary %dx%d, max %d / %d\n", __FUNCTION__, op->dst.width, op->dst.height, width, height, - sna->render.max_3d_size)); + sna->render.max_3d_size, + sna->render.max_3d_pitch)); if (!width || !height) return false;