diff --git a/man/radeon.man b/man/radeon.man index f0a6be1a..fa55c6d1 100644 --- a/man/radeon.man +++ b/man/radeon.man @@ -267,9 +267,10 @@ The default value is for R/RV6XX, R/RV7XX, RS780, RS880, EVERGREEN, CAYMAN, ARUBA, Southern Islands, and Sea Islands. .TP -.BI "Option \*qDRI3\*q \*q" boolean \*q -Enable the DRI3 extension. The default is -.B off. +.BI "Option \*qDRI\*q \*q" integer \*q +Define the maximum level of DRI to enable. Valid values are 2 for DRI2 or 3 for DRI3. +The default is +.B 2 for DRI2. .TP .BI "Option \*qEnablePageFlip\*q \*q" boolean \*q Enable DRI2 page flipping. The default is diff --git a/src/radeon.h b/src/radeon.h index 88df93f0..e2fd41cf 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -151,6 +151,7 @@ typedef enum { OPTION_SWAPBUFFERS_WAIT, OPTION_DELETE_DP12, OPTION_DRI3, + OPTION_DRI, OPTION_SHADOW_PRIMARY, OPTION_TEAR_FREE, } RADEONOpts; diff --git a/src/radeon_kms.c b/src/radeon_kms.c index c75aa97b..8aa76332 100644 --- a/src/radeon_kms.c +++ b/src/radeon_kms.c @@ -78,6 +78,7 @@ const OptionInfoRec RADEONOptions_KMS[] = { { OPTION_SWAPBUFFERS_WAIT,"SwapbuffersWait", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_DELETE_DP12, "DeleteUnusedDP12Displays", OPTV_BOOLEAN, {0}, FALSE}, { OPTION_DRI3, "DRI3", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_DRI, "DRI", OPTV_INTEGER, {0}, FALSE }, { OPTION_TEAR_FREE, "TearFree", OPTV_BOOLEAN, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; @@ -1518,6 +1519,7 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL) int subPixelOrder = SubPixelUnknown; MessageType from; Bool value; + int driLevel; const char *s; void *front_ptr; @@ -1629,10 +1631,15 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL) #endif value = FALSE; + from = X_DEFAULT; if (xf86GetOptValBool(info->Options, OPTION_DRI3, &value)) from = X_CONFIG; - else - from = X_DEFAULT; + + if (xf86GetOptValInteger(info->Options, OPTION_DRI, &driLevel) && + (driLevel == 2 || driLevel == 3)) { + from = X_CONFIG; + value = driLevel == 3; + } if (value) { value = radeon_sync_init(pScreen) && @@ -1642,6 +1649,7 @@ Bool RADEONScreenInit_KMS(SCREEN_INIT_ARGS_DECL) if (!value) from = X_WARNING; } + xf86DrvMsg(pScrn->scrnIndex, from, "DRI3 %sabled\n", value ? "en" : "dis"); pScrn->vtSema = TRUE;