xf86-video-intel: src/intel_batchbuffer.c src/intel_batchbuffer.h

Chris Wilson ickle at kemper.freedesktop.org
Sat May 7 12:04:44 PDT 2011


 src/intel_batchbuffer.c |    9 ---------
 src/intel_batchbuffer.h |    2 ++
 2 files changed, 2 insertions(+), 9 deletions(-)

New commits:
commit 3145530feed879082bcfab11ffc8e7fd0911c920
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat May 7 19:51:04 2011 +0100

    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 <anarsoul at gmail.com>
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_batchbuffer.c b/src/intel_batchbuffer.c
index 289ed2b..95eca43 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 2403a38..f5f118e 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


More information about the xorg-commit mailing list