diff --git a/src/sna/kgem.c b/src/sna/kgem.c index bf24664e..6703e7e7 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -3001,10 +3001,10 @@ void _kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo) __kgem_bo_destroy(kgem, bo); } -void __kgem_flush(struct kgem *kgem, struct kgem_bo *bo) +bool __kgem_flush(struct kgem *kgem, struct kgem_bo *bo) { /* The kernel will emit a flush *and* update its own flushing lists. */ - kgem_busy(kgem, bo->handle); + return kgem_busy(kgem, bo->handle); } bool kgem_check_bo(struct kgem *kgem, ...) diff --git a/src/sna/kgem.h b/src/sna/kgem.h index 69562f4b..11950e41 100644 --- a/src/sna/kgem.h +++ b/src/sna/kgem.h @@ -258,7 +258,7 @@ static inline void kgem_bo_submit(struct kgem *kgem, struct kgem_bo *bo) _kgem_submit(kgem); } -void __kgem_flush(struct kgem *kgem, struct kgem_bo *bo); +bool __kgem_flush(struct kgem *kgem, struct kgem_bo *bo); static inline void kgem_bo_flush(struct kgem *kgem, struct kgem_bo *bo) { kgem_bo_submit(kgem, bo); diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index dbf7e306..2c0fd578 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -11998,7 +11998,7 @@ static bool sna_accel_do_flush(struct sna *sna) DBG(("%s (time=%ld), triggered\n", __FUNCTION__, (long)sna->time)); sna->timer_expire[FLUSH_TIMER] = sna->time + sna->vblank_interval; - return true; + return priv->cpu_damage || !__kgem_flush(&sna->kgem, priv->gpu_bo); } } else { if (priv->cpu_damage == NULL && priv->gpu_bo->exec == NULL) {