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