summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDave Airlie <airlied@clockmaker.usersys.redhat.com>2007-08-23 19:42:19 +1000
committerDave Airlie <airlied@redhat.com>2007-08-23 19:43:58 +1000
commitc08e6ec9e7ac06caee53689b0ec50ef6a7a0ba37 (patch)
treefcda07f47f2b006ac534c3480c57da870eeb75d4 /src
parent5793e8753d11432bf95c7c6dd80c811e16aba058 (diff)
parenta0d0fcd3bab765b4db25e04884fd8a342abb9c66 (diff)
Merge branch 'master' into randr-merge
Conflicts: src/radeon.h src/radeon_bios.c src/radeon_display.c src/radeon_dri.c src/radeon_driver.c src/radeon_modes.c src/radeon_probe.h src/radeon_video.c
Diffstat (limited to 'src')
-rw-r--r--src/atimach64xv.c3
-rw-r--r--src/r128_driver.c3
-rw-r--r--src/radeon.h3
-rw-r--r--src/radeon_display.c1
-rw-r--r--src/radeon_dri.c44
-rw-r--r--src/radeon_driver.c6
6 files changed, 31 insertions, 29 deletions
diff --git a/src/atimach64xv.c b/src/atimach64xv.c
index 997fa699..67bececf 100644
--- a/src/atimach64xv.c
+++ b/src/atimach64xv.c
@@ -979,6 +979,9 @@ ATIMach64PutImage
if (pATI->ActiveSurface)
return Success;
+ if (DstH < 16)
+ return Success;
+
if (!ATIMach64ClipVideo(pScreenInfo, pATI, ImageID,
SrcX, SrcY, SrcW, SrcH,
DstX, DstY, &DstW, &DstH,
diff --git a/src/r128_driver.c b/src/r128_driver.c
index b03bd42b..6e26a6ef 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -4257,6 +4257,9 @@ ModeStatus R128ValidMode(int scrnIndex, DisplayModePtr mode,
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
R128InfoPtr info = R128PTR(pScrn);
+ if (info->BIOSDisplay == R128_BIOS_DISPLAY_CRT)
+ return MODE_OK;
+
if(info->isDFP) {
if(info->PanelXRes < mode->CrtcHDisplay ||
info->PanelYRes < mode->CrtcVDisplay)
diff --git a/src/radeon.h b/src/radeon.h
index a8f72fcd..aee4c3ec 100644
--- a/src/radeon.h
+++ b/src/radeon.h
@@ -613,7 +613,6 @@ typedef struct {
unsigned long gartOffset;
unsigned char *AGP; /* Map */
int agpMode;
- int agpFastWrite;
CARD32 pciCommand;
@@ -914,13 +913,13 @@ extern void RADEONDisableDisplays(ScrnInfoPtr pScrn);
extern void RADEONGetPanelInfo(ScrnInfoPtr pScrn);
extern void RADEONGetTVDacAdjInfo(xf86OutputPtr output);
extern void RADEONUnblank(ScrnInfoPtr pScrn);
+extern void RADEONUnblank(ScrnInfoPtr pScrn);
extern void RADEONBlank(ScrnInfoPtr pScrn);
extern void RADEONDisplayPowerManagementSet(ScrnInfoPtr pScrn,
int PowerManagementMode,
int flags);
extern Bool RADEONAllocateControllers(ScrnInfoPtr pScrn);
extern Bool RADEONAllocateConnectors(ScrnInfoPtr pScrn);
-extern xf86OutputPtr RADEONGetCrtcConnector(ScrnInfoPtr pScrn, int crtc_num);
extern int RADEONValidateMergeModes(ScrnInfoPtr pScrn);
extern int RADEONValidateDDCModes(ScrnInfoPtr pScrn1, char **ppModeName,
RADEONMonitorType DisplayType, int crtc2);
diff --git a/src/radeon_display.c b/src/radeon_display.c
index 43340169..e76ffa44 100644
--- a/src/radeon_display.c
+++ b/src/radeon_display.c
@@ -809,4 +809,3 @@ void RADEONUnblank(ScrnInfoPtr pScrn)
}
}
}
-
diff --git a/src/radeon_dri.c b/src/radeon_dri.c
index 1b17e2ef..7949c5b5 100644
--- a/src/radeon_dri.c
+++ b/src/radeon_dri.c
@@ -748,28 +748,6 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen)
xf86DrvMsg(pScreen->myNum, from, "Using AGP %dx\n", info->agpMode);
- info->agpFastWrite = 0; // Always off by default as it sucks
-
- from = xf86GetOptValInteger(info->Options, OPTION_AGP_FW,
- &info->agpFastWrite) ? X_CONFIG : X_DEFAULT;
-
- if (info->agpFastWrite &&
- (vendor == PCI_VENDOR_AMD) &&
- (device == PCI_CHIP_AMD761)) {
-
- /* Disable fast write for AMD 761 chipset, since they cause
- * lockups when enabled.
- */
- info->agpFastWrite = FALSE;
- from = X_DEFAULT;
- xf86DrvMsg(pScreen->myNum, X_WARNING,
- "[agp] Not enabling Fast Writes on AMD 761 chipset to avoid "
- "lockups");
- }
-
- xf86DrvMsg(pScreen->myNum, from, "AGP Fast Writes %sabled\n",
- info->agpFastWrite ? "en" : "dis");
-
mode &= ~RADEON_AGP_MODE_MASK;
if (is_v3) {
/* only set one mode bit for AGPv3 */
@@ -788,8 +766,26 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen)
}
}
- if (info->agpFastWrite) mode |= RADEON_AGP_FW_MODE;
- else mode &= ~RADEON_AGP_FW_MODE;
+ /* AGP Fast Writes.
+ * TODO: take into account that certain agp modes don't support fast
+ * writes at all */
+ mode &= ~RADEON_AGP_FW_MODE; /* Disable per default */
+ if (xf86ReturnOptValBool(info->Options, OPTION_AGP_FW, FALSE)) {
+ xf86DrvMsg(pScreen->myNum, X_WARNING,
+ "WARNING: Using the AGPFastWrite option is not recommended.\n");
+ xf86Msg(X_NONE, "\tThis option does not provide much of a noticable speed"
+ " boost, while it\n\twill probably hard lock your machine."
+ " All bets are off!\n");
+
+ /* Black list some host/AGP bridges. */
+ if ((vendor == PCI_VENDOR_AMD) && (device == PCI_CHIP_AMD761))
+ xf86DrvMsg(pScreen->myNum, X_PROBED, "Ignoring AGPFastWrite option "
+ "for the AMD 761 northbridge.\n");
+ else {
+ xf86DrvMsg(pScreen->myNum, X_CONFIG, "Enabling AGP Fast Writes.\n");
+ mode |= RADEON_AGP_FW_MODE;
+ }
+ } /* Don't mention this otherwise, so that people don't get funny ideas */
xf86DrvMsg(pScreen->myNum, X_INFO,
"[agp] Mode 0x%08lx [AGP 0x%04x/0x%04x; Card 0x%04x/0x%04x]\n",
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index ae34cf3c..f338d166 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -5567,8 +5567,10 @@ static Bool RADEONSaveScreen(ScreenPtr pScreen, int mode)
if (unblank) SetTimeSinceLastInputEvent();
if ((pScrn != NULL) && pScrn->vtSema) {
- if (unblank) RADEONUnblank(pScrn);
- else RADEONBlank(pScrn);
+ if (unblank)
+ RADEONUnblank(pScrn);
+ else
+ RADEONBlank(pScrn);
}
return TRUE;
}