diff options
author | Eric Anholt <eric@anholt.net> | 2009-05-15 23:21:05 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-05-18 10:44:34 -0700 |
commit | 34660fd2df5d61b77ed7041d32ac29053fc94f5a (patch) | |
tree | 6e012632db4ac531e7b514d7e1d6d1b46e7a8406 /src/i830_video.c | |
parent | 87332a7cc16af82aa47e07fbf90da3635b071dbf (diff) |
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
Diffstat (limited to 'src/i830_video.c')
-rw-r--r-- | 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 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; - - 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) { |