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
This commit is contained in:
Eric Anholt 2009-05-15 23:21:05 -07:00
parent 87332a7cc1
commit 34660fd2df
1 changed files with 8 additions and 6 deletions

View File

@ -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) {