summaryrefslogtreecommitdiff
path: root/src/savage_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/savage_driver.c')
-rw-r--r--src/savage_driver.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/savage_driver.c b/src/savage_driver.c
index 919bd1a..da472e9 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -278,6 +278,7 @@ typedef enum {
,OPTION_AGP_SIZE
,OPTION_DRI
,OPTION_IGNORE_EDID
+ ,OPTION_AGP_FOR_XV
} SavageOpts;
@@ -312,6 +313,7 @@ static const OptionInfoRec SavageOptions[] =
{ OPTION_AGP_MODE, "AGPMode", OPTV_INTEGER, {0}, FALSE },
{ OPTION_AGP_SIZE, "AGPSize", OPTV_INTEGER, {0}, FALSE },
{ OPTION_DRI, "DRI", OPTV_BOOLEAN, {0}, TRUE },
+ { OPTION_AGP_FOR_XV, "AGPforXv", OPTV_BOOLEAN, {0}, FALSE },
#endif
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
@@ -1870,6 +1872,20 @@ static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags)
"%s DVI port support (Savage4 only)\n",(psav->dvi?"Force":"Disable"));
}
+ psav->AGPforXv = FALSE;
+#ifdef XF86DRI
+ if (xf86GetOptValBool(psav->Options, OPTION_AGP_FOR_XV, &psav->AGPforXv)) {
+ if (psav->AGPforXv) {
+ if (psav->agpSize == 0) {
+ psav->AGPforXv = FALSE;
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "AGP not available, cannot use AGP for Xv\n");
+ }
+ }
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Option: %s use of AGP buffer for Xv\n",(psav->AGPforXv?"Enable":"Disable"));
+ }
+#endif
+
/* Add more options here. */
@@ -3678,6 +3694,11 @@ static Bool SavageScreenInit(int scrnIndex, ScreenPtr pScreen,
else
xf86DrvMsg(pScrn->scrnIndex,X_CONFIG,"XvMC is not enabled\n");
}
+
+ if (!psav->directRenderingEnabled && psav->AGPforXv) {
+ xf86DrvMsg(pScrn->scrnIndex,X_ERROR,"AGPforXV requires DRI to be enabled.\n");
+ psav->AGPforXv = FALSE;
+ }
#endif
if (serverGeneration == 1)