sna/gen4+: Refine test for preferring GPU spans

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2012-12-09 11:19:13 +00:00
parent c8f622726a
commit 3e82fcc8d2
3 changed files with 27 additions and 13 deletions

View File

@ -2680,7 +2680,17 @@ gen4_check_composite_spans(struct sna *sna,
return FORCE_SPANS > 0;
if ((flags & COMPOSITE_SPANS_RECTILINEAR) == 0) {
DBG(("%s: fallback, non-rectilinear spans\n",
if ((flags & COMPOSITE_SPANS_INPLACE_HINT) == 0) {
struct sna_pixmap *priv = sna_pixmap_from_drawable(dst->pDrawable);
assert(priv);
if ((priv->cpu_bo && kgem_bo_is_busy(priv->cpu_bo)) ||
(priv->gpu_bo && kgem_bo_is_busy(priv->gpu_bo))) {
return true;
}
}
DBG(("%s: fallback, non-rectilinear spans to idle bo\n",
__FUNCTION__));
return false;
}

View File

@ -2692,13 +2692,15 @@ gen5_check_composite_spans(struct sna *sna,
return false;
}
if ((flags & (COMPOSITE_SPANS_RECTILINEAR | COMPOSITE_SPANS_INPLACE_HINT)) == 0) {
struct sna_pixmap *priv = sna_pixmap_from_drawable(dst->pDrawable);
assert(priv);
if ((flags & COMPOSITE_SPANS_RECTILINEAR) == 0) {
if ((flags & COMPOSITE_SPANS_INPLACE_HINT) == 0) {
struct sna_pixmap *priv = sna_pixmap_from_drawable(dst->pDrawable);
assert(priv);
if ((priv->cpu_bo && kgem_bo_is_busy(priv->cpu_bo)) ||
(priv->gpu_bo && kgem_bo_is_busy(priv->gpu_bo))) {
return true;
if ((priv->cpu_bo && kgem_bo_is_busy(priv->cpu_bo)) ||
(priv->gpu_bo && kgem_bo_is_busy(priv->gpu_bo))) {
return true;
}
}
DBG(("%s: fallback, non-rectilinear spans to idle bo\n",

View File

@ -3123,13 +3123,15 @@ gen6_check_composite_spans(struct sna *sna,
return false;
}
if ((flags & (COMPOSITE_SPANS_RECTILINEAR | COMPOSITE_SPANS_INPLACE_HINT)) == 0) {
struct sna_pixmap *priv = sna_pixmap_from_drawable(dst->pDrawable);
assert(priv);
if ((flags & COMPOSITE_SPANS_RECTILINEAR) == 0) {
if ((flags & COMPOSITE_SPANS_INPLACE_HINT) == 0) {
struct sna_pixmap *priv = sna_pixmap_from_drawable(dst->pDrawable);
assert(priv);
if ((priv->cpu_bo && kgem_bo_is_busy(priv->cpu_bo)) ||
(priv->gpu_bo && kgem_bo_is_busy(priv->gpu_bo))) {
return true;
if ((priv->cpu_bo && kgem_bo_is_busy(priv->cpu_bo)) ||
(priv->gpu_bo && kgem_bo_is_busy(priv->gpu_bo))) {
return true;
}
}
DBG(("%s: fallback, non-rectilinear spans to idle bo\n",