xf86-video-ati: Branch 'master' - 2 commits

Alex Deucher agd5f at kemper.freedesktop.org
Sun Aug 26 15:07:23 PDT 2007


 src/radeon_crtc.c |   18 +++++++++++++-----
 src/radeon_tv.c   |    2 +-
 2 files changed, 14 insertions(+), 6 deletions(-)

New commits:
diff-tree d43596e5f5d7c60f96b57bc3e743a9b40eb7109d (from 47eb3327c258bb0cfd9a1d5677624b9988a39057)
Author: Alex Deucher <alex at botch2.(none)>
Date:   Sun Aug 26 18:07:50 2007 -0400

    RADEON: Fix rotation.  works now

diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c
index 026cd8a..e976e2c 100644
--- a/src/radeon_crtc.c
+++ b/src/radeon_crtc.c
@@ -188,7 +188,7 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RAD
 #endif
 	save->crtc_offset_cntl = 0;
 
-    if (info->tilingEnabled) {
+    if (info->tilingEnabled && (crtc->rotatedData == NULL)) {
        if (IS_R300_VARIANT)
           save->crtc_offset_cntl |= (R300_CRTC_X_Y_MODE_EN |
 				     R300_CRTC_MICRO_TILE_BUFFER_DIS |
@@ -207,7 +207,7 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RAD
 
     Base = pScrn->fbOffset;
 
-    if (info->tilingEnabled) {
+    if (info->tilingEnabled && (crtc->rotatedData == NULL)) {
         if (IS_R300_VARIANT) {
 	/* On r300/r400 when tiling is enabled crtc_offset is set to the address of
 	 * the surface.  the x/y offsets are handled by the X_Y tile reg for each crtc
@@ -249,6 +249,10 @@ RADEONInitCrtcBase(xf86CrtcPtr crtc, RAD
        Base += offset;
     }
 
+    if (crtc->rotatedData != NULL) {
+	Base = pScrn->fbOffset + (char *)crtc->rotatedData - (char *)info->FB;
+    }
+
     Base &= ~7;                 /* 3 lower bits are always 0 */
 
 
@@ -419,7 +423,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RA
 #endif
 	save->crtc2_offset_cntl = 0;
 
-    if (info->tilingEnabled) {
+    if (info->tilingEnabled && (crtc->rotatedData == NULL)) {
        if (IS_R300_VARIANT)
           save->crtc2_offset_cntl |= (R300_CRTC_X_Y_MODE_EN |
 				      R300_CRTC_MICRO_TILE_BUFFER_DIS |
@@ -438,7 +442,7 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RA
 
     Base = pScrn->fbOffset;
 
-    if (info->tilingEnabled) {
+    if (info->tilingEnabled && (crtc->rotatedData == NULL)) {
         if (IS_R300_VARIANT) {
 	/* On r300/r400 when tiling is enabled crtc_offset is set to the address of
 	 * the surface.  the x/y offsets are handled by the X_Y tile reg for each crtc
@@ -480,6 +484,10 @@ RADEONInitCrtc2Base(xf86CrtcPtr crtc, RA
        Base += offset;
     }
 
+    if (crtc->rotatedData != NULL) {
+	Base = pScrn->fbOffset + (char *)crtc->rotatedData - (char *)info->FB;
+    }
+
     Base &= ~7;                 /* 3 lower bits are always 0 */
 
 #ifdef XF86DRI
@@ -560,7 +568,7 @@ RADEONInitCrtc2Registers(xf86CrtcPtr crt
 				      ? RADEON_CRTC2_V_SYNC_POL
 				      : 0));
 
-    save->crtc2_pitch  = ((info->CurrentLayout.displayWidth * pScrn->bitsPerPixel) +
+    save->crtc2_pitch  = ((pScrn->displayWidth * pScrn->bitsPerPixel) +
 			  ((pScrn->bitsPerPixel * 8) -1)) / (pScrn->bitsPerPixel * 8);
     save->crtc2_pitch |= save->crtc2_pitch << 16;
 
diff-tree 47eb3327c258bb0cfd9a1d5677624b9988a39057 (from f36720377737210c985b196d9a988efdd767f1c7)
Author: Alex Deucher <alex at botch2.(none)>
Date:   Sun Aug 26 15:43:22 2007 -0400

    RADEON: minor tweak to tv out

diff --git a/src/radeon_tv.c b/src/radeon_tv.c
index c5917bc..3a26a0a 100644
--- a/src/radeon_tv.c
+++ b/src/radeon_tv.c
@@ -343,7 +343,7 @@ void RADEONInitTVRegisters(xf86OutputPtr
 	                       | RADEON_SYNC_TIP_LEVEL
 	                       | RADEON_YFLT_EN
 	                       | RADEON_UVFLT_EN
-	                       | (2 << RADEON_CY_FILT_BLEND_SHIFT);
+	                       | (6 << RADEON_CY_FILT_BLEND_SHIFT);
 
     if (radeon_output->tvStd == TV_STD_NTSC ||
 	radeon_output->tvStd == TV_STD_NTSC_J) {


More information about the xorg-commit mailing list