On Tue, 2009-05-19 at 10:09 -0700, Eric Anholt wrote:
> commit 34660fd2df5d61b77ed7041d32ac29053fc94f5a
> Author: Eric Anholt <e...@anholt.net>
> Date:   Fri May 15 23:21:05 2009 -0700
> 
>     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
> 
> 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;
> +             }

This seems to do the opposite of what the commit message says, i.e. only
sync when not drawing to the front buffer.


-- 
Earthling Michel Dänzer           |                http://www.vmware.com
Libre software enthusiast         |          Debian, X and DRI developer
_______________________________________________
xorg mailing list
xorg@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to