summaryrefslogtreecommitdiff
path: root/src/i830_video.c
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2009-05-15 23:21:05 -0700
committerEric Anholt <eric@anholt.net>2009-05-18 10:44:34 -0700
commit34660fd2df5d61b77ed7041d32ac29053fc94f5a (patch)
tree6e012632db4ac531e7b514d7e1d6d1b46e7a8406 /src/i830_video.c
parent87332a7cc16af82aa47e07fbf90da3635b071dbf (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.c16
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) {