xf86-video-intel: src/intel_display.c src/intel_dri.c src/intel_video.c

Chris Wilson ickle at kemper.freedesktop.org
Tue Sep 21 14:54:54 PDT 2010


 src/intel_display.c |    1 +
 src/intel_dri.c     |    6 ++++++
 src/intel_video.c   |   10 ++++++++--
 3 files changed, 15 insertions(+), 2 deletions(-)

New commits:
commit bfba6d6148b938588ffbefdf04f4e71683c66dfd
Author: Krzysztof Halasa <khc at pm.waw.pl>
Date:   Tue Sep 21 22:56:26 2010 +0100

    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 at chris-wilson.co.uk>

diff --git a/src/intel_display.c b/src/intel_display.c
index 5d85baa..ffcdb73 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 db1f81a..4f66937 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 30a0c37..9c918d5 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();
 }


More information about the xorg-commit mailing list