From f5f3135e3cc1f4740508773cfefca0954aed2fd3 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 14 Oct 2011 10:40:39 +0100 Subject: [PATCH] sna: Ensure that the scanout is flushed before we sleep So that we do not see any delayed rendering on i965+. Signed-off-by: Chris Wilson --- src/sna/sna_accel.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c index 10737573..963ff9ba 100644 --- a/src/sna/sna_accel.c +++ b/src/sna/sna_accel.c @@ -3793,7 +3793,7 @@ static Bool sna_accel_do_expire(struct sna *sna) { return sna->kgem.need_expire; static void _sna_accel_disarm_timer(struct sna *sna, int id) { } #endif -static void sna_accel_flush(struct sna *sna) +static bool sna_accel_flush(struct sna *sna) { struct sna_pixmap *priv = sna_accel_scanout(sna); bool nothing_to_do = @@ -3802,13 +3802,12 @@ static void sna_accel_flush(struct sna *sna) DBG(("%s (time=%ld), nothing_to_do=%d\n", __FUNCTION__, (long)GetTimeInMillis(), nothing_to_do)); - if (nothing_to_do) { + if (nothing_to_do) _sna_accel_disarm_timer(sna, FLUSH_TIMER); - return; - } - - sna_pixmap_move_to_gpu(priv->pixmap); + else + sna_pixmap_move_to_gpu(priv->pixmap); kgem_bo_flush(&sna->kgem, priv->gpu_bo); + return !nothing_to_do; } static void sna_accel_expire(struct sna *sna) @@ -3955,8 +3954,8 @@ static void sna_accel_throttle(struct sna *sna) void sna_accel_block_handler(struct sna *sna) { if (sna_accel_do_flush(sna)) { - sna_accel_flush(sna); - sna_accel_throttle(sna); + if (sna_accel_flush(sna)) + sna_accel_throttle(sna); } if (sna_accel_do_expire(sna))