diff options
Diffstat (limited to 'src/savage_driver.c')
-rw-r--r-- | src/savage_driver.c | 21 |
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) |