diff options
author | Krzysztof Halasa <khc@pm.waw.pl> | 2010-09-21 22:56:26 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-09-21 22:57:36 +0100 |
commit | bfba6d6148b938588ffbefdf04f4e71683c66dfd (patch) | |
tree | 0b9926406b17bf530d42977cdc8d99c85dd40bce | |
parent | f63c7df6866fed61551d39209b1a262e2a0c4b28 (diff) |
Allow interlaced modes.
This may not the best method, but it should be a good base on which to
build...
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/intel_display.c | 1 | ||||
-rw-r--r-- | src/intel_dri.c | 6 | ||||
-rw-r--r-- | src/intel_video.c | 10 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/intel_display.c b/src/intel_display.c index 5d85baa7..ffcdb739 100644 --- a/src/intel_display.c +++ b/src/intel_display.c @@ -1299,6 +1299,7 @@ intel_output_init(ScrnInfoPtr scrn, struct intel_mode *mode, int num) output->possible_crtcs = kencoder->possible_crtcs; output->possible_clones = kencoder->possible_clones; + output->interlaceAllowed = TRUE; intel_output->output = output; list_add(&intel_output->link, &mode->outputs); diff --git a/src/intel_dri.c b/src/intel_dri.c index db1f81ab..4f669372 100644 --- a/src/intel_dri.c +++ b/src/intel_dri.c @@ -367,6 +367,12 @@ I830DRI2CopyRegion(DrawablePtr drawable, RegionPtr pRegion, event = MI_WAIT_FOR_PIPEB_SVBLANK; } + if (scrn->currentMode->Flags & V_INTERLACE) { + /* DSL count field lines */ + y1 /= 2; + y2 /= 2; + } + BEGIN_BATCH(5); /* * The documentation says that the LOAD_SCAN_LINES diff --git a/src/intel_video.c b/src/intel_video.c index 30a0c375..9c918d5d 100644 --- a/src/intel_video.c +++ b/src/intel_video.c @@ -1348,13 +1348,19 @@ intel_wait_for_scanline(ScrnInfoPtr scrn, PixmapPtr pixmap, event = MI_WAIT_FOR_PIPEB_SVBLANK; } + if (scrn->currentMode->Flags & V_INTERLACE) { + /* DSL count field lines */ + y1 /= 2; + y2 /= 2; + } + 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(); } |