diff -uNr trident.orig/trident_driver.c trident/trident_driver.c --- trident.orig/trident_driver.c 2005-11-14 10:47:27.704414000 +0100 +++ trident/trident_driver.c 2005-11-26 16:49:10.131971000 +0100 @@ -2281,7 +2281,7 @@ clockRanges->maxClock = pTrident->MaxClock; clockRanges->clockIndex = -1; /* programmable */ clockRanges->interlaceAllowed = TRUE; - clockRanges->doubleScanAllowed = FALSE; /* XXX check this */ + clockRanges->doubleScanAllowed = TRUE; /* * xf86ValidateModes will check that the mode HTotal and VTotal values diff -uNr trident.orig/trident_video.c trident/trident_video.c --- trident.orig/trident_video.c 2005-11-14 10:47:27.824421000 +0100 +++ trident/trident_video.c 2005-11-26 17:14:09.323119000 +0100 @@ -878,6 +878,13 @@ offset += top * dstPitch; + /* Fix video position when using doublescan */ + if(pScrn->currentMode->Flags & V_DBLSCAN) { + dstBox.y1 <<= 1; + dstBox.y2 <<= 1; + drw_h <<= 1; + } + tridentFixFrame(pScrn,&pPriv->fixFrame); TRIDENTDisplayVideo(pScrn, id, offset, width, height, dstPitch, x1, y1, x2, y2, &dstBox, src_w, src_h, drw_w, drw_h);