xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Thu Feb 12 09:04:15 PST 2009


 src/atombios_crtc.c |   19 ++-----------------
 src/radeon.h        |    3 +++
 src/radeon_driver.c |    6 ++++++
 3 files changed, 11 insertions(+), 17 deletions(-)

New commits:
commit 0804dde9012cf33f614a1c2ee6d5d0def040a9af
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Thu Feb 12 12:02:57 2009 -0500

    AVIVO: fix dualhead/rotation for real

diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index e79ba13..432cebe 100644
--- a/src/atombios_crtc.c
+++ b/src/atombios_crtc.c
@@ -455,23 +455,6 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc,
 	    x = 0;
 	    y = 0;
 	    fb_location = fb_location + (char *)crtc->rotatedData - (char *)info->FB;
-	    switch (crtc->rotation) {
-	    case RR_Rotate_0:
-	    case RR_Rotate_180:
-		OUTREG(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, pScrn->virtualX);
-		OUTREG(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, pScrn->virtualY);
-	    default:
-		break;
-	    case RR_Rotate_90:
-	    case RR_Rotate_270:
-		OUTREG(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, pScrn->virtualY);
-		OUTREG(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, pScrn->virtualX);
-		break;
-
-	    }
-	} else {
-	    OUTREG(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, pScrn->virtualX);
-	    OUTREG(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, pScrn->virtualY);
 	}
 
 	OUTREG(AVIVO_D1GRPH_PRIMARY_SURFACE_ADDRESS + radeon_crtc->crtc_offset, fb_location);
@@ -482,6 +465,8 @@ atombios_crtc_mode_set(xf86CrtcPtr crtc,
 	OUTREG(AVIVO_D1GRPH_SURFACE_OFFSET_Y + radeon_crtc->crtc_offset, 0);
 	OUTREG(AVIVO_D1GRPH_X_START + radeon_crtc->crtc_offset, 0);
 	OUTREG(AVIVO_D1GRPH_Y_START + radeon_crtc->crtc_offset, 0);
+	OUTREG(AVIVO_D1GRPH_X_END + radeon_crtc->crtc_offset, info->virtualX);
+	OUTREG(AVIVO_D1GRPH_Y_END + radeon_crtc->crtc_offset, info->virtualY);
 	OUTREG(AVIVO_D1GRPH_PITCH + radeon_crtc->crtc_offset,
 	       crtc->scrn->displayWidth);
 	OUTREG(AVIVO_D1GRPH_ENABLE + radeon_crtc->crtc_offset, 1);
diff --git a/src/radeon.h b/src/radeon.h
index 66b2330..2944fe8 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -836,6 +836,9 @@ typedef struct {
     /* some server chips have a hardcoded edid in the bios so that they work with KVMs */
     Bool get_hardcoded_edid_from_bios;
 
+    int               virtualX;
+    int               virtualY;
+
 } RADEONInfoRec, *RADEONInfoPtr;
 
 #define RADEONWaitForFifo(pScrn, entries)				\
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index b0817b0..813b25e 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -3248,6 +3248,12 @@ Bool RADEONScreenInit(int scrnIndex, ScreenPtr pScreen,
     info->crtc_on = FALSE;
     info->crtc2_on = FALSE;
 
+    /* save the real front buffer size
+     * it changes with randr, rotation, etc.
+     */
+    info->virtualX = pScrn->virtualX;
+    info->virtualY = pScrn->virtualY;
+
     RADEONSave(pScrn);
 
     /* set initial bios scratch reg state */


More information about the xorg-commit mailing list