summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-10-21 15:30:52 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-10-21 16:11:15 +0100
commita3a075201c8e47cfad6ec296b7baf549deb44cb3 (patch)
treefaf7dd2a3f17f1ee2fa811458592795e11886b98
parent999d13f32162ce11fe4042825b5b849073944ca8 (diff)
sna: Treat a bo marked as being last seen on the GPU as requiring a flush
We are hitting this path upon retiring the old scanout buffer following a page-flip. We want to treat this as being hot and available for reuse, so mark it as such until the next retirement pass. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/kgem.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index d5084f87..6f98f273 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -564,12 +564,11 @@ static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
kgem->need_expire = true;
if (bo->rq) {
list_move(&bo->list, active(kgem, bo->size));
- } else if (bo->needs_flush) {
+ } else if (bo->needs_flush | bo->gpu) {
assert(list_is_empty(&bo->request));
list_add(&bo->request, &kgem->flushing);
list_move(&bo->list, active(kgem, bo->size));
} else {
- assert(bo->gpu == 0);
list_move(&bo->list, inactive(kgem, bo->size));
}