diff options
author | Carl Worth <cworth@cworth.org> | 2009-04-06 14:02:08 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2009-04-06 14:02:08 -0700 |
commit | 5d9d9a2e466474a0508a15b294a91507ccb3ccc1 (patch) | |
tree | 3a57eec7202a0dbf7b285d89979575855c452e0d /src/i830_video.c | |
parent | 3d4ee3cac1d63dfdf7b54c8ba577f3b77637499f (diff) |
Fix new video sync-to-blank code for multi-head
We need to account for a non-zero Y offset for the CRTC. Without
this, we don't sync to the correct region, so tearing becomes
visible again.
Diffstat (limited to 'src/i830_video.c')
-rw-r--r-- | src/i830_video.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/i830_video.c b/src/i830_video.c index 3331dd30..13f3ab14 100644 --- a/src/i830_video.c +++ b/src/i830_video.c @@ -2517,6 +2517,7 @@ I830PutImage(ScrnInfoPtr pScrn, if (sync) { BoxPtr box; + int y1, y2; int event, pipe; I830CrtcPrivatePtr intel_crtc = crtc->driver_private; @@ -2529,14 +2530,16 @@ I830PutImage(ScrnInfoPtr pScrn, } box = REGION_EXTENTS(unused, clipBoxes); + y1 = box->y1 - crtc->y; + y2 = box->y2 - crtc->y; BEGIN_BATCH(5); /* The documentation says that the LOAD_SCAN_LINES command * always comes in pairs. Don't ask me why. */ OUT_BATCH(MI_LOAD_SCAN_LINES_INCL | pipe); - OUT_BATCH((box->y1 << 16) | box->y2); + OUT_BATCH((y1 << 16) | y2); OUT_BATCH(MI_LOAD_SCAN_LINES_INCL | pipe); - OUT_BATCH((box->y1 << 16) | box->y2); + OUT_BATCH((y1 << 16) | y2); OUT_BATCH(MI_WAIT_FOR_EVENT | event); ADVANCE_BATCH(); } |