diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-12-22 22:15:42 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-12-22 23:36:33 +0000 |
commit | f8575b8bd150ae11147fbf6b59171cbbb072dfec (patch) | |
tree | 336ba789ff2e79749bd737b7c8537b999ab73dcb | |
parent | 609e1d9da282323ab7abc1baad4d3f24ac55588f (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.c | 6 |
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; } |