summaryrefslogtreecommitdiff
path: root/src/sna/sna_blt.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-07-02 23:59:02 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2013-07-02 23:59:02 +0100
commitc957f4171791447f1869f11fd724dbe92e6a8b91 (patch)
treea6547eb7a9325603487094beefff748fc7ecf694 /src/sna/sna_blt.c
parent158095ff2b2d38f54ca91d2a728f919cd705ff62 (diff)
sna: Try harder to do the BLT upload along the fallback path
Only in the !fallback path will we try using the render pipeline after the blt, in which case we can try using render rather than forcing a stall. In the fallback path, we are going to incur stalls and readbacks, anyway so ignore them when considering blt. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/sna/sna_blt.c')
-rw-r--r--src/sna/sna_blt.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c
index e3d6f108..8b10707c 100644
--- a/src/sna/sna_blt.c
+++ b/src/sna/sna_blt.c
@@ -2213,7 +2213,8 @@ fill:
if (src_pixmap->drawable.width <= sna->render.max_3d_size &&
src_pixmap->drawable.height <= sna->render.max_3d_size &&
- bo->pitch <= sna->render.max_3d_pitch)
+ bo->pitch <= sna->render.max_3d_pitch &&
+ !fallback)
{
return false;
}
@@ -2237,7 +2238,7 @@ fill:
if (!tmp->dst.bo) {
DBG(("%s: fallback -- unaccelerated read back\n",
__FUNCTION__));
- if (!kgem_bo_is_busy(bo))
+ if (fallback || !kgem_bo_is_busy(bo))
goto put;
} else if (bo->snoop && tmp->dst.bo->snoop) {
DBG(("%s: fallback -- can not copy between snooped bo\n",
@@ -2246,8 +2247,7 @@ fill:
} else if (!kgem_bo_can_blt(&sna->kgem, tmp->dst.bo)) {
DBG(("%s: fallback -- unaccelerated upload\n",
__FUNCTION__));
- if (!kgem_bo_is_busy(tmp->dst.bo) &&
- !kgem_bo_is_busy(bo))
+ if (fallback || !kgem_bo_is_busy(bo))
goto put;
} else {
ret = prepare_blt_copy(sna, tmp, bo, alpha_fixup);