From d8fe941bc245e24c83c417ccff5c57e83baac3f7 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 28 Sep 2011 23:04:03 +0100 Subject: [PATCH] sna: Check for request retires after every batch In the beginning, I did perform a retire after ever batch. Then I decided that it was too much CPU overhead for too little gain. On reflection, i.e. further benchmarking, we do see a performance improvement for recycling active buffers faster. Signed-off-by: Chris Wilson --- src/sna/kgem.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 50374250..4dd876b2 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -591,12 +591,13 @@ void kgem_retire(struct kgem *kgem) struct kgem_bo *bo, *next; list_for_each_entry_safe(bo, next, &kgem->flushing, request) { - if (!kgem_busy(kgem, bo->handle)) { - bo->needs_flush = 0; - bo->gpu = false; - list_move(&bo->list, inactive(kgem, bo->size)); - list_del(&bo->request); - } + if (kgem_busy(kgem, bo->handle)) + break; + + bo->needs_flush = 0; + bo->gpu = false; + list_move(&bo->list, inactive(kgem, bo->size)); + list_del(&bo->request); } while (!list_is_empty(&kgem->requests)) { @@ -1019,6 +1020,7 @@ void _kgem_submit(struct kgem *kgem) } } + kgem_retire(kgem); kgem_commit(kgem); if (kgem->wedged) kgem_cleanup(kgem);