xf86-video-intel: src/i830_video.c

Eric Anholt anholt at kemper.freedesktop.org
Mon Jul 13 16:38:53 PDT 2009


 src/i830_video.c |   11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

New commits:
commit b74bf3f9a65af9e72921d4e9028d9d4d023f8bc6
Author: Barry Scott <barry.scott at onelan.co.uk>
Date:   Mon Jul 13 16:34:20 2009 -0700

    Fix XV scan line calculation when rotated.

diff --git a/src/i830_video.c b/src/i830_video.c
index 4bba902..92b6324 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2539,7 +2539,7 @@ I830PutImage(ScrnInfoPtr pScrn,
 
         if (sync) {
 	    BoxPtr box;
-	    int y1, y2;
+	    pixman_box16_t box_in_crtc_coordinates;
 	    int pipe = -1, event, load_scan_lines_pipe;
 
 	    if (pixmap_is_scanout(pPixmap))
@@ -2555,16 +2555,17 @@ I830PutImage(ScrnInfoPtr pScrn,
 		}
 
 		box = REGION_EXTENTS(unused, clipBoxes);
-		y1 = box->y1 - crtc->y;
-		y2 = box->y2 - crtc->y;
+		box_in_crtc_coordinates = *box;
+		if (crtc->transform_in_use)
+		    pixman_f_transform_bounds (&crtc->f_framebuffer_to_crtc, &box_in_crtc_coordinates);
 
 		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 | load_scan_lines_pipe);
-		OUT_BATCH((y1 << 16) | y2);
+		OUT_BATCH((box_in_crtc_coordinates.y1 << 16) | box_in_crtc_coordinates.y2);
 		OUT_BATCH(MI_LOAD_SCAN_LINES_INCL | load_scan_lines_pipe);
-		OUT_BATCH((y1 << 16) | y2);
+		OUT_BATCH((box_in_crtc_coordinates.y1 << 16) | box_in_crtc_coordinates.y2);
 		OUT_BATCH(MI_WAIT_FOR_EVENT | event);
 		ADVANCE_BATCH();
 	    }


More information about the xorg-commit mailing list