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 [email protected]\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;