summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-12-22 22:15:42 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2011-12-22 23:36:33 +0000
commitf8575b8bd150ae11147fbf6b59171cbbb072dfec (patch)
tree336ba789ff2e79749bd737b7c8537b999ab73dcb
parent609e1d9da282323ab7abc1baad4d3f24ac55588f (diff)
sna: Cancel the immediate batch submit once handled in the block handler
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_accel.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 8a2ff9a7..b1d11979 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -8815,6 +8815,7 @@ sna_accel_flush_callback(CallbackListPtr *list,
}
kgem_submit(&sna->kgem);
+ sna->kgem.flush_now = 0;
if (sna->kgem.sync) {
kgem_sync(&sna->kgem);
@@ -8901,7 +8902,7 @@ static Bool sna_accel_do_flush(struct sna *sna)
if (sna->kgem.flush_now) {
sna->kgem.flush_now = 0;
- if (priv->gpu_bo->rq != NULL) {
+ if (priv->gpu_bo->exec) {
DBG(("%s -- forcing flush\n", __FUNCTION__));
sna_accel_drain_timer(sna, FLUSH_TIMER);
return TRUE;
@@ -8910,7 +8911,7 @@ static Bool sna_accel_do_flush(struct sna *sna)
return_if_timer_active(FLUSH_TIMER);
- if (priv->cpu_damage == NULL && priv->gpu_bo->rq == NULL) {
+ if (priv->cpu_damage == NULL && priv->gpu_bo->exec == NULL) {
DBG(("%s -- no pending write to scanout\n", __FUNCTION__));
return FALSE;
}
@@ -9031,6 +9032,7 @@ static bool sna_accel_flush(struct sna *sna)
sna_pixmap_move_to_gpu(priv->pixmap);
sna->kgem.busy = !nothing_to_do;
kgem_bo_flush(&sna->kgem, priv->gpu_bo);
+ sna->kgem.flush_now = 0;
return need_throttle;
}