diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2013-07-02 23:59:02 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2013-07-02 23:59:02 +0100 |
commit | c957f4171791447f1869f11fd724dbe92e6a8b91 (patch) | |
tree | a6547eb7a9325603487094beefff748fc7ecf694 /src/sna/sna_blt.c | |
parent | 158095ff2b2d38f54ca91d2a728f919cd705ff62 (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.c | 8 |
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); |