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.
This commit is contained in:
parent
3d4ee3cac1
commit
5d9d9a2e46
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue