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