From 3145530feed879082bcfab11ffc8e7fd0911c920 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 7 May 2011 19:51:04 +0100 Subject: Ensure that the partial batch is flushed upon the blockhandler Currently, we require that a batch containing a dirty bo be submitted before we mark the device as requiring a flush. So if we never submit a batch between block handlers, we can end up sleeping without ever flushing either the partial batch or the rendering to the scanout. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36776 Tested-by: Vasily Khoruzhick Signed-off-by: Chris Wilson --- src/intel_batchbuffer.c | 9 --------- src/intel_batchbuffer.h | 2 ++ 2 files changed, 2 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/intel_batchbuffer.c b/src/intel_batchbuffer.c index 289ed2b2..95eca434 100644 --- a/src/intel_batchbuffer.c +++ b/src/intel_batchbuffer.c @@ -175,13 +175,6 @@ void intel_batch_emit_flush(ScrnInfoPtr scrn) intel_batch_do_flush(scrn); } -static Bool intel_batch_needs_flush(intel_screen_private *intel) -{ - ScreenPtr screen = intel->scrn->pScreen; - PixmapPtr pixmap = screen->GetScreenPixmap(screen); - return intel_get_pixmap_private(pixmap)->batch_write; -} - void intel_batch_submit(ScrnInfoPtr scrn) { intel_screen_private *intel = intel_get_screen_private(scrn); @@ -241,8 +234,6 @@ void intel_batch_submit(ScrnInfoPtr scrn) } } - intel->needs_flush |= intel_batch_needs_flush(intel); - while (!list_is_empty(&intel->batch_pixmaps)) { struct intel_pixmap *entry; diff --git a/src/intel_batchbuffer.h b/src/intel_batchbuffer.h index 2403a387..f5f118ef 100644 --- a/src/intel_batchbuffer.h +++ b/src/intel_batchbuffer.h @@ -137,6 +137,8 @@ intel_batch_mark_pixmap_domains(intel_screen_private *intel, priv->batch_write |= write_domain != 0; priv->busy = 1; + + intel->needs_flush |= write_domain != 0; } static inline void -- cgit v1.2.3