From b74bf3f9a65af9e72921d4e9028d9d4d023f8bc6 Mon Sep 17 00:00:00 2001 From: Barry Scott Date: Mon, 13 Jul 2009 16:34:20 -0700 Subject: [PATCH] Fix XV scan line calculation when rotated. --- src/i830_video.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/i830_video.c b/src/i830_video.c index 4bba902e..92b6324c 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(); }