Module Name: xsrc Committed By: mrg Date: Mon Nov 9 00:54:21 UTC 2009
Modified Files: xsrc/external/mit/xf86-video-ati/dist/src: radeon_dri.c radeon_driver.c Log Message: merge xf86-video-ati 6.12.4 To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ xsrc/external/mit/xf86-video-ati/dist/src/radeon_dri.c cvs rdiff -u -r1.3 -r1.4 \ xsrc/external/mit/xf86-video-ati/dist/src/radeon_driver.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: xsrc/external/mit/xf86-video-ati/dist/src/radeon_dri.c diff -u xsrc/external/mit/xf86-video-ati/dist/src/radeon_dri.c:1.4 xsrc/external/mit/xf86-video-ati/dist/src/radeon_dri.c:1.5 --- xsrc/external/mit/xf86-video-ati/dist/src/radeon_dri.c:1.4 Wed Jun 10 09:21:30 2009 +++ xsrc/external/mit/xf86-video-ati/dist/src/radeon_dri.c Mon Nov 9 00:54:21 2009 @@ -747,6 +747,8 @@ { PCI_VENDOR_INTEL,0x2570, PCI_VENDOR_ATI,0x4a4e, PCI_VENDOR_DELL,0x5106, 4 }, /* Intel 82865G/PE/P DRAM Controller/Host-Hub / RV280 [Radeon 9200 SE] Needs AGPMode 4 (lp #300304) */ { PCI_VENDOR_INTEL,0x2570, PCI_VENDOR_ATI,0x5964, 0x148c,0x2073, 4 }, + /* Intel 82855PM host bridge / Mobility M7 LW Needs AGPMode 4 (lp: #353996) */ + { PCI_VENDOR_INTEL,0x3340, PCI_VENDOR_ATI,0x4c57, PCI_VENDOR_IBM,0x0530, 4 }, /* Intel 82855PM Processor to I/O Controller / Mobility M6 LY Needs AGPMode 1 (deb #467235) */ { PCI_VENDOR_INTEL,0x3340, PCI_VENDOR_ATI,0x4c59, PCI_VENDOR_IBM,0x052f, 1 }, /* Intel 82855PM host bridge / Mobility 9600 M10 RV350 Needs AGPMode 1 (lp #195051) */ @@ -769,6 +771,16 @@ { PCI_VENDOR_INTEL,0x3580, PCI_VENDOR_ATI,0x4e50, PCI_VENDOR_ASUS,0x1942, 1 }, /* Intel 82852/82855 host bridge / Mobility 9600/9700 Needs AGPMode 1 (deb #510208) */ { PCI_VENDOR_INTEL,0x3580, PCI_VENDOR_ATI,0x4e50, 0x10cf,0x127f, 1 }, + /* Intel 82443BX/ZX/DX Host bridge / RV280 [Radeon 9200] Needs AGPMode 1 (lp #370205) */ + { PCI_VENDOR_INTEL,0x7190, PCI_VENDOR_ATI,0x5961, 0x174b,0x7c13, 1 }, + + /* Ali Corp M1671 Super P4 Northbridge / Mobility M6 LY Needs AGPMode 1 (lp #146303)*/ + { 0x10b9,0x1671, PCI_VENDOR_ATI,0x4c59, 0x103c,0x0027, 1 }, + + /* SiS Host Bridge 655 / R420 [Radeon X800] Needs AGPMode 4 (lp #371296) */ + { 0x1039,0x0655, PCI_VENDOR_ATI,0x4a4b, PCI_VENDOR_ATI,0x4422, 4 }, + /* SiS Host Bridge / RV280 Needs AGPMode 4 */ + { 0x1039,0x0741, PCI_VENDOR_ATI,0x5964, 0x148c,0x2073, 4 }, /* ASRock K7VT4A+ AGP 8x / ATI Radeon 9250 AGP Needs AGPMode 4 (lp #133192) */ { 0x1849,0x3189, PCI_VENDOR_ATI,0x5960, 0x1787,0x5960, 4 }, @@ -789,6 +801,10 @@ { PCI_VENDOR_VIA,0x3189, PCI_VENDOR_ATI,0x5960, 0x1462,0x0380, 4 }, /* VIA VT8377 Host Bridge / RV280 Needs AGPMode 4 (ati ML) */ { PCI_VENDOR_VIA,0x3189, PCI_VENDOR_ATI,0x5964, 0x148c,0x2073, 4 }, + /* VIA VT8377 Host Bridge / RV280 Needs AGPMode 4 (fdo #12544) */ + { PCI_VENDOR_VIA,0x3189, PCI_VENDOR_ATI,0x5964, PCI_VENDOR_ASUS,0xc008, 4 }, + /* VIA VT8377 Host Bridge / RV280 Needs AGPMode 4 (deb #545040) */ + { PCI_VENDOR_VIA,0x3189, PCI_VENDOR_ATI,0x5960, PCI_VENDOR_ASUS,0x004c, 4 }, /* ATI Host Bridge / RV280 [M9+] Needs AGPMode 1 (phoronix forum) */ { PCI_VENDOR_ATI,0xcbb2, PCI_VENDOR_ATI,0x5c61, PCI_VENDOR_SONY,0x8175, 1 }, @@ -796,6 +812,9 @@ /* HP Host Bridge / R300 [FireGL X1] Needs AGPMode 2 (fdo #7770) */ { PCI_VENDOR_HP,0x122e, PCI_VENDOR_ATI,0x4e47, PCI_VENDOR_ATI,0x0152, 2 }, + /* nVidia Host Bridge / R420 [X800 Pro] Needs AGPMode 4 (fdo #22726) */ + { 0x10de,0x00e1, PCI_VENDOR_ATI,0x4a49, PCI_VENDOR_ATI,0x0002, 4 }, + { 0, 0, 0, 0, 0, 0, 0 }, }; @@ -1373,7 +1392,7 @@ if (!xf86LoaderCheckSymbol("drmAvailable")) return FALSE; if (!xf86LoaderCheckSymbol("DRIQueryVersion")) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "[dri] RADEONDRIGetVersion failed (libdri.a too old)\n" + "[dri] RADEONDRIGetVersion failed (libdri too old)\n" "[dri] Disabling DRI.\n"); return FALSE; } @@ -1397,7 +1416,7 @@ info->dri->pLibDRMVersion = drmGetLibVersion(info->dri->drmFD); if (info->dri->pLibDRMVersion == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "[dri] RADEONDRIGetVersion failed because libDRM is really " + "[dri] RADEONDRIGetVersion failed because libdrm is really " "way to old to even get a version number out of it.\n" "[dri] Disabling DRI.\n"); return FALSE; @@ -1408,7 +1427,7 @@ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[dri] RADEONDRIGetVersion failed because of a " "version mismatch.\n" - "[dri] libdrm.a module version is %d.%d.%d but " + "[dri] libdrm module version is %d.%d.%d but " "version 1.2.x is needed.\n" "[dri] Disabling DRI.\n", info->dri->pLibDRMVersion->version_major, @@ -1472,7 +1491,7 @@ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "[dri] RADEONDRIGetVersion failed because of a version " "mismatch.\n" - "[dri] radeon.o kernel module version is %d.%d.%d " + "[dri] radeon kernel module version is %d.%d.%d " "but version 1.%d.%d or newer is needed.\n" "[dri] Disabling DRI.\n", info->dri->pKernelDRMVersion->version_major, @@ -1555,12 +1574,13 @@ info->dri->pDRIInfo = pDRIInfo; pDRIInfo->drmDriverName = RADEON_DRIVER_NAME; - if ( (info->ChipFamily >= CHIP_FAMILY_R300) ) { + if ( (info->ChipFamily >= CHIP_FAMILY_R600) ) + pDRIInfo->clientDriverName = R600_DRIVER_NAME; + else if ( (info->ChipFamily >= CHIP_FAMILY_R300) ) pDRIInfo->clientDriverName = R300_DRIVER_NAME; - } else - if ( info->ChipFamily >= CHIP_FAMILY_R200 ) + else if ( info->ChipFamily >= CHIP_FAMILY_R200 ) pDRIInfo->clientDriverName = R200_DRIVER_NAME; - else + else pDRIInfo->clientDriverName = RADEON_DRIVER_NAME; if (xf86LoaderCheckSymbol("DRICreatePCIBusID")) { Index: xsrc/external/mit/xf86-video-ati/dist/src/radeon_driver.c diff -u xsrc/external/mit/xf86-video-ati/dist/src/radeon_driver.c:1.3 xsrc/external/mit/xf86-video-ati/dist/src/radeon_driver.c:1.4 --- xsrc/external/mit/xf86-video-ati/dist/src/radeon_driver.c:1.3 Wed Jun 10 09:07:50 2009 +++ xsrc/external/mit/xf86-video-ati/dist/src/radeon_driver.c Mon Nov 9 00:54:21 2009 @@ -92,9 +92,11 @@ /* X and server generic header files */ #include "xf86.h" #include "xf86_OSproc.h" -#include "xf86RAC.h" #include "xf86RandR12.h" +#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 +#include "xf86RAC.h" #include "xf86Resources.h" +#endif #include "xf86cmap.h" #include "vbe.h" @@ -104,8 +106,13 @@ #include "vgaHW.h" #endif +#ifdef HAVE_XEXTPROTO_71 +#include <X11/extensions/dpmsconst.h> +#else #define DPMS_SERVER #include <X11/extensions/dpms.h> +#endif + #include "atipciids.h" #include "radeon_chipset_gen.h" @@ -1814,16 +1821,6 @@ break; } - if (info->ChipFamily >= CHIP_FAMILY_R600) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "R600 support is mostly incomplete and very experimental\n"); - } - - if ((info->ChipFamily >= CHIP_FAMILY_RV515) && (info->ChipFamily < CHIP_FAMILY_R600)) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "R500 support is under development. Please report any issues to xorg-driver-...@lists.x.org\n"); - } - from = X_PROBED; info->LinearAddr = PCI_REGION_BASE(info->PciInfo, 0, REGION_MEM) & ~0x1ffffffULL; pScrn->memPhysBase = info->LinearAddr; @@ -1942,7 +1939,6 @@ } } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%s card detected\n", (info->cardType==CARD_PCI) ? "PCI" : (info->cardType==CARD_PCIE) ? "PCIE" : "AGP"); @@ -1962,12 +1958,15 @@ if (strcmp(s, "AGP") == 0) { info->cardType = CARD_AGP; xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into AGP mode\n"); - } else if (strcmp(s, "PCI") == 0) { - info->cardType = CARD_PCI; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI mode\n"); - } else if (strcmp(s, "PCIE") == 0) { - info->cardType = CARD_PCIE; - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI Express mode\n"); + } else if ((strcmp(s, "PCI") == 0) || + (strcmp(s, "PCIE") == 0)) { + if (info->ChipFamily >= CHIP_FAMILY_RV380) { + info->cardType = CARD_PCIE; + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI Express mode\n"); + } else { + info->cardType = CARD_PCI; + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI mode\n"); + } } else { xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Invalid BusType option, using detected type\n"); @@ -2065,6 +2064,9 @@ } info->useEXA = FALSE; + /* if we have shadow fb bail */ + if (info->r600_shadow_fb) + return TRUE; if (info->ChipFamily >= CHIP_FAMILY_R600) { xf86DrvMsg(pScrn->scrnIndex, X_DEFAULT, @@ -2238,9 +2240,6 @@ } } - if (info->ChipFamily == CHIP_FAMILY_RS880) - return FALSE; - if (!xf86ReturnOptValBool(info->Options, OPTION_DRI, TRUE)) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Direct rendering forced off\n"); @@ -2778,7 +2777,6 @@ xf86Int10InfoPtr pInt10 = NULL; void *int10_save = NULL; const char *s; - int crtc_max_X, crtc_max_Y; RADEONEntPtr pRADEONEnt; DevUnion* pPriv; @@ -2882,12 +2880,14 @@ PCI_DEV_DEV(info->PciInfo), PCI_DEV_FUNC(info->PciInfo)); +#ifndef XSERVER_LIBPCIACCESS if (xf86RegisterResources(info->pEnt->index, 0, ResExclusive)) goto fail; xf86SetOperatingState(resVga, info->pEnt->index, ResUnusedOpr); pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_VIEWPORT | RAC_CURSOR; +#endif pScrn->monitor = pScrn->confScreen->monitor; /* Allocate an xf86CrtcConfig */ @@ -2984,51 +2984,10 @@ RADEONPreInitColorTiling(pScrn); - /* we really need an FB manager... */ - if (pScrn->display->virtualX) { - crtc_max_X = pScrn->display->virtualX; - crtc_max_Y = pScrn->display->virtualY; - if (info->allowColorTiling) { - if (crtc_max_X > info->MaxSurfaceWidth || - crtc_max_Y > info->MaxLines) { - info->allowColorTiling = FALSE; - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Requested desktop size exceeds surface limts for tiling, ColorTiling disabled\n"); - } - } - if (crtc_max_X > 8192) - crtc_max_X = 8192; - 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. - */ - 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; - } - } - 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); + if (IS_AVIVO_VARIANT) + xf86CrtcSetSizeRange (pScrn, 320, 200, 8192, 8192); + else + xf86CrtcSetSizeRange (pScrn, 320, 200, 4096, 4096); RADEONPreInitDDC(pScrn); @@ -3765,6 +3724,10 @@ } } + /* Clear the framebuffer */ + memset(info->FB + pScrn->fbOffset, 0, + pScrn->virtualY * pScrn->displayWidth * info->CurrentLayout.pixel_bytes); + /* set the modes with desired rotation, etc. */ if (!xf86SetDesiredModes (pScrn)) return FALSE; @@ -5661,6 +5624,10 @@ pScrn->vtSema = TRUE; + /* Clear the framebuffer */ + memset(info->FB + pScrn->fbOffset, 0, + pScrn->virtualY * pScrn->displayWidth * info->CurrentLayout.pixel_bytes); + if (!xf86SetDesiredModes(pScrn)) return FALSE;