67a8c0a
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
67a8c0a
index d5bb24d..7992646 100644
67a8c0a
--- a/src/radeon_driver.c
67a8c0a
+++ b/src/radeon_driver.c
67a8c0a
@@ -2935,32 +2935,41 @@ Bool RADEONPreInit(ScrnInfoPtr pScrn, int flags)
33566ed
 	    if (crtc_max_Y > 8192)
33566ed
 		crtc_max_Y = 8192;
33566ed
 	} else {
33566ed
+
33566ed
 	    /*
33566ed
-	     * note that these aren't really the CRTC limits, they're just
33566ed
-	     * heuristics until we have a better memory manager.
33566ed
+	     * <ssp> In radeon_driver.c it says:
33566ed
+	     *        *
33566ed
+	     *        * note that these aren't really the CRTC limits, they're just
33566ed
+	     *        * heuristics until we have a better memory manager.
33566ed
+	     *	      *
33566ed
+	     *	  then it goes on to heuristically assign numbers to crtc_max_X/Y
33566ed
+	     *        I think that's wrong because xf86InitialConfiguration will already pick a
33566ed
+	     *	  reasonable value for xf86CrtcSetSizeRange() - there is no need for driver
33566ed
+	     *	  heuristics. So I think it should just set the size range to whatever the crtc
33566ed
+	     *	  limits are. Does anyone know the actual values?
33566ed
+	     * <ajax> depends on whether your front buffer is tiled
33566ed
+	     * <ssp>  Ah, so info->MaxSurfaceWidth would be a resonable setting
33566ed
+	     * <ajax> 3968 if it is.  otherwise i think it's 8k for r500+ and 4k for previous
33566ed
+	     * <ssp>  Cool, I'll patch it to do something like that in Fedora then
33566ed
+	     * <ajax> ta
33566ed
+	     *
33566ed
 	     */
33566ed
-	    if (pScrn->videoRam <= 16384) {
33566ed
-		crtc_max_X = 1600;
33566ed
-		crtc_max_Y = 1200;
33566ed
-	    } else if (IS_R300_VARIANT) {
33566ed
-		crtc_max_X = 2560;
33566ed
-		crtc_max_Y = 1200;
33566ed
-	    } else if (IS_AVIVO_VARIANT) {
33566ed
-		crtc_max_X = 2560;
33566ed
-		crtc_max_Y = 1600;
33566ed
-	    } else {
33566ed
-		crtc_max_X = 2048;
33566ed
-		crtc_max_Y = 1200;
33566ed
-	}
33566ed
+	    if (info->allowColorTiling) {
33566ed
+		crtc_max_X = info->MaxSurfaceWidth;
33566ed
+		crtc_max_Y = info->MaxLines;
33566ed
+	    }
33566ed
+	    else {
33566ed
+               if (IS_AVIVO_VARIANT) {
33566ed
+		    crtc_max_X = 8192;
33566ed
+		    crtc_max_Y = 8192;
33566ed
+		}
33566ed
+		else {
33566ed
+		    crtc_max_X = 4096;
33566ed
+		    crtc_max_Y = 4096;
33566ed
+		}
33566ed
+	    }
33566ed
 	}
33566ed
-	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Max desktop size set to %dx%d\n",
33566ed
-		   crtc_max_X, crtc_max_Y);
33566ed
-	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
33566ed
-		   "For a larger or smaller max desktop size, add a Virtual line to your xorg.conf\n");
33566ed
-	xf86DrvMsg(pScrn->scrnIndex, X_INFO,
33566ed
-		   "If you are having trouble with 3D, "
33566ed
-		   "reduce the desktop size by adjusting the Virtual line to your xorg.conf\n");
33566ed
-	
33566ed
+
33566ed
     /*xf86CrtcSetSizeRange (pScrn, 320, 200, info->MaxSurfaceWidth, info->MaxLines);*/
33566ed
 	xf86CrtcSetSizeRange (pScrn, 320, 200, crtc_max_X, crtc_max_Y);
33566ed