xf86-video-intel: 2 commits - src/sna/gen7_render.c src/sna/sna_accel.c
Chris Wilson
ickle at kemper.freedesktop.org
Wed Aug 1 12:38:39 PDT 2012
src/sna/gen7_render.c | 19 ++++++++++++++++---
src/sna/sna_accel.c | 5 +++++
2 files changed, 21 insertions(+), 3 deletions(-)
New commits:
commit ca46d1c7a18596ea9fe2b0577ccf1d110e3e42ac
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Aug 1 20:20:29 2012 +0100
sna/gen7: Prefer the BLT for self-copies
Looking at the test results for a third time, gives the edge to the BLT
again.
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 96eb86a..193de00 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2470,6 +2470,13 @@ try_blt(struct sna *sna,
if (can_switch_rings(sna)) {
if (sna_picture_is_solid(src, NULL))
return true;
+
+ if (dst->pDrawable == src->pDrawable)
+ return true;
+
+ if (src->pDrawable &&
+ get_drawable_pixmap(dst->pDrawable) == get_drawable_pixmap(src->pDrawable))
+ return true;
}
return false;
@@ -3311,7 +3318,8 @@ static inline bool prefer_blt_copy(struct sna *sna,
}
static inline bool
-overlaps(struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy,
+overlaps(struct sna *sna,
+ struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy,
struct kgem_bo *dst_bo, int16_t dst_dx, int16_t dst_dy,
const BoxRec *box, int n)
{
@@ -3320,6 +3328,9 @@ overlaps(struct kgem_bo *src_bo, int16_t src_dx, int16_t src_dy,
if (src_bo != dst_bo)
return false;
+ if (can_switch_rings(sna))
+ return true;
+
extents = box[0];
while (--n) {
box++;
@@ -3352,7 +3363,8 @@ gen7_render_copy_boxes(struct sna *sna, uint8_t alu,
DBG(("%s (%d, %d)->(%d, %d) x %d, alu=%x, self-copy=%d, overlaps? %d\n",
__FUNCTION__, src_dx, src_dy, dst_dx, dst_dy, n, alu,
src_bo == dst_bo,
- overlaps(src_bo, src_dx, src_dy,
+ overlaps(sna,
+ src_bo, src_dx, src_dy,
dst_bo, dst_dx, dst_dy,
box, n)));
@@ -3391,7 +3403,8 @@ gen7_render_copy_boxes(struct sna *sna, uint8_t alu,
}
if (!(alu == GXcopy || alu == GXclear) ||
- overlaps(src_bo, src_dx, src_dy,
+ overlaps(sna,
+ src_bo, src_dx, src_dy,
dst_bo, dst_dx, dst_dy,
box, n)) {
fallback_blt:
commit e4a3cd3d16447b5d83d1c8c63c342f1240935267
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Wed Aug 1 17:37:33 2012 +0100
sna: Add validation of the clear flag to pixmap debugging
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 a4287f7..8760f91 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -314,6 +314,11 @@ static void assert_pixmap_damage(PixmapPtr p)
if (priv == NULL)
return;
+ if (priv->clear) {
+ assert(DAMAGE_IS_ALL(priv->gpu_damage));
+ assert(priv->cpu_damage == NULL);
+ }
+
if (DAMAGE_IS_ALL(priv->gpu_damage) && DAMAGE_IS_ALL(priv->cpu_damage)) {
/* special upload buffer */
assert(priv->gpu_bo && priv->gpu_bo->proxy);
More information about the xorg-commit
mailing list