From 34660fd2df5d61b77ed7041d32ac29053fc94f5a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 15 May 2009 23:21:05 -0700 Subject: [PATCH] Only sync XV to vblank when drawing to the frontbuffer. 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 | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/i830_video.c b/src/i830_video.c index 1c3a5b7c..6fec8ff5 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; + int pipe = -1, 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; + 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) {