sna: Check source bo is suitable for BLT before doing so

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2014-06-27 10:38:59 +01:00
parent 157e22cb8e
commit 6ba4ee1fe8
1 changed files with 8 additions and 4 deletions

View File

@ -2804,8 +2804,13 @@ fill:
if (!tmp->dst.bo) {
DBG(("%s: fallback -- unaccelerated read back\n",
__FUNCTION__));
fallback:
if (flags & COMPOSITE_FALLBACK || !kgem_bo_is_busy(bo))
goto put;
} else if (!kgem_bo_can_blt(&sna->kgem, bo)) {
DBG(("%s: fallback -- cannot blit from source\n",
__FUNCTION__));
goto fallback;
} else if (bo->snoop && tmp->dst.bo->snoop) {
DBG(("%s: fallback -- can not copy between snooped bo\n",
__FUNCTION__));
@ -2813,12 +2818,11 @@ fill:
} else if (!kgem_bo_can_blt(&sna->kgem, tmp->dst.bo)) {
DBG(("%s: fallback -- unaccelerated upload\n",
__FUNCTION__));
if (flags & COMPOSITE_FALLBACK || !kgem_bo_is_busy(bo))
goto put;
goto fallback;
} else {
ret = prepare_blt_copy(sna, tmp, bo, alpha_fixup);
if (flags & COMPOSITE_FALLBACK && !ret)
goto put;
if (!ret)
goto fallback;
}
} else {
RegionRec region;