[Intel-gfx] [PATCH] Only sync XV to vblank when drawing to the frontbuffer.

Eric Anholt eric at anholt.net
Sat May 16 08:23:11 CEST 2009


This fixes emitting syncs to random pipes with boxes bigger than that
pipe's vertical, leading to GPU hangs.

Bug #21738
---
 src/i830_video.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/i830_video.c b/src/i830_video.c
index 1c3a5b7..6fec8ff 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2495,13 +2495,15 @@ I830PutImage(ScrnInfoPtr pScrn,
         if (sync) {
 	    BoxPtr box;
 	    int y1, y2;
-            int pipe, event, load_scan_lines_pipe;
-
-	    if (pI830->use_drm_mode)
-		pipe = drmmode_get_pipe_from_crtc_id(pI830->bufmgr, crtc);
-	    else {
-		I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
-		pipe = intel_crtc->pipe;
+	    int pipe = -1, event, load_scan_lines_pipe;
+
+	    if (pPixmap != pScreen->GetScreenPixmap(pScreen)) {
+		if (pI830->use_drm_mode)
+		    pipe = drmmode_get_pipe_from_crtc_id(pI830->bufmgr, crtc);
+		else {
+		    I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
+		    pipe = intel_crtc->pipe;
+		}
 	    }
 
 	    if (pipe >= 0) {
-- 
1.6.2.4




More information about the Intel-gfx mailing list