summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordawes <dawes>2001-03-28 18:29:31 +0000
committerdawes <dawes>2001-03-28 18:29:31 +0000
commit024d1a25cb3355da76983b7015a054a620d15cbb (patch)
treefdc0266809e86035dfd7d8a10b5c2db262ce73d5
parent8e64ede5f2ce1ded9ed60e162e60f56de11fa089 (diff)
- mga, tdfx: add a "DRI" option to make it possible to turn DRI on/off per
screen, and to turn it off in a static server. - mga, tdfx, i810: make the "Direct rendering enabled/disabled" message the same across these drivers, and print the appropriate "reason" flag with the message. Note: other drivers should get these changes too.
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c23
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c18
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c25
3 files changed, 39 insertions, 27 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c
index 9bf19d0eb..d5bda3113 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c
@@ -1658,6 +1658,7 @@ I810ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
vgaHWPtr hwp;
I810Ptr pI810;
VisualPtr visual;
+ MessageType driFrom = X_DEFAULT;
pScrn = xf86Screens[pScreen->myNum];
pI810 = I810PTR(pScrn);
@@ -1696,11 +1697,12 @@ I810ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
* InitGLXVisuals call back.
*/
- if (!xf86ReturnOptValBool(I810Options, OPTION_NOACCEL, FALSE) &&
- xf86ReturnOptValBool(I810Options, OPTION_DRI, TRUE)) {
- pI810->directRenderingEnabled = I810DRIScreenInit(pScreen);
- } else {
+ if (xf86ReturnOptValBool(I810Options, OPTION_NOACCEL, FALSE) ||
+ !xf86ReturnOptValBool(I810Options, OPTION_DRI, TRUE)) {
pI810->directRenderingEnabled = FALSE;
+ driFrom = X_CONFIG;
+ } else {
+ pI810->directRenderingEnabled = I810DRIScreenInit(pScreen);
}
#else
@@ -1754,7 +1756,8 @@ I810ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
#ifdef XF86DRI
if (pI810->LpRing.mem.Start == 0 && pI810->directRenderingEnabled) {
- pI810->directRenderingEnabled = 0;
+ pI810->directRenderingEnabled = FALSE;
+ driFrom = X_PROBED;
I810DRICloseScreen(pScreen);
}
@@ -1828,15 +1831,9 @@ I810ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
#endif
if (pI810->directRenderingEnabled) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Enabled\n");
+ xf86DrvMsg(pScrn->scrnIndex, driFrom, "Direct rendering enabled\n");
} else {
- if(pI810->agpAcquired2d == TRUE) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Disabled\n");
- }
- else {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Failed\n");
- return FALSE;
- }
+ xf86DrvMsg(pScrn->scrnIndex, driFrom, "Direct rendering disabled\n");
}
pScreen->SaveScreen = I810SaveScreen;
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c
index ec0918929..a7eb5511b 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/mga/mga_driver.c
@@ -212,7 +212,8 @@ typedef enum {
OPTION_CABLETYPE,
OPTION_USEIRQZERO,
OPTION_NOHAL,
- OPTION_SWAPPED_HEAD
+ OPTION_SWAPPED_HEAD,
+ OPTION_DRI
} MGAOpts;
static OptionInfoRec MGAOptions[] = {
@@ -241,7 +242,8 @@ static OptionInfoRec MGAOptions[] = {
{ OPTION_TVSTANDARD, "TVStandard", OPTV_ANYSTR, {0}, FALSE },
{ OPTION_CABLETYPE, "CableType", OPTV_ANYSTR, {0}, FALSE },
{ OPTION_NOHAL, "NoHal", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_SWAPPED_HEAD, "SwappedHead", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_SWAPPED_HEAD, "SwappedHead", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_DRI, "DRI", OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
@@ -2767,6 +2769,7 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
int width, height, displayWidth;
MGAEntPtr pMgaEnt = NULL;
int f;
+ MessageType driFrom = X_DEFAULT;
/*
* First get the ScrnInfoRec
@@ -2962,15 +2965,19 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
* InitGLXVisuals call back.
* The DRI does not work when textured video is enabled at this time.
*/
- if ( pMga->NoAccel ) {
+ if (!xf86ReturnOptValBool(MGAOptions, OPTION_DRI, TRUE)) {
+ driFrom = X_CONFIG;
+ } else if ( pMga->NoAccel ) {
xf86DrvMsg( pScrn->scrnIndex, X_ERROR,
"Acceleration disabled, not initializing the DRI\n" );
pMga->directRenderingEnabled = FALSE;
+ driFrom = X_CONFIG;
}
else if ( pMga->TexturedVideo == TRUE ) {
xf86DrvMsg( pScrn->scrnIndex, X_ERROR,
"Textured video enabled, not initializing the DRI\n" );
pMga->directRenderingEnabled = FALSE;
+ driFrom = X_CONFIG;
}
else if ( pMga->SecondCrtc == TRUE ) {
xf86DrvMsg( pScrn->scrnIndex, X_ERROR,
@@ -2986,6 +2993,7 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
(3 * displayWidth * height *
(pScrn->bitsPerPixel >> 3)) / 1024 );
pMga->directRenderingEnabled = FALSE;
+ driFrom = X_PROBED;
}
else {
pMga->directRenderingEnabled = MGADRIScreenInit(pScreen);
@@ -3111,9 +3119,9 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
pMga->directRenderingEnabled = MGADRIFinishScreenInit(pScreen);
}
if (pMga->directRenderingEnabled) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Direct rendering enabled\n");
+ xf86DrvMsg(pScrn->scrnIndex, driFrom, "Direct rendering enabled\n");
} else {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Direct rendering disabled\n");
+ xf86DrvMsg(pScrn->scrnIndex, driFrom, "Direct rendering disabled\n");
}
if (xf86IsEntityShared(pScrn->entityList[0]) && pMga->SecondCrtc == FALSE)
pMgaEnt->directRenderingEnabled = pMga->directRenderingEnabled;
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c
index 55b2ad447..ca31bb47f 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_driver.c
@@ -172,7 +172,8 @@ typedef enum {
OPTION_USE_PIO,
OPTION_SHOWCACHE,
OPTION_VIDEO_KEY,
- OPTION_NO_SLI
+ OPTION_NO_SLI,
+ OPTION_DRI
} TDFXOpts;
static OptionInfoRec TDFXOptions[] = {
@@ -182,6 +183,7 @@ static OptionInfoRec TDFXOptions[] = {
{ OPTION_SHOWCACHE, "ShowCache", OPTV_BOOLEAN, {0}, FALSE},
{ OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE},
{ OPTION_NO_SLI, "NoSLI", OPTV_BOOLEAN, {0}, FALSE},
+ { OPTION_DRI, "DRI", OPTV_BOOLEAN, {0}, FALSE},
{ -1, NULL, OPTV_NONE, {0}, FALSE}
};
@@ -677,6 +679,7 @@ TDFXPreInit(ScrnInfoPtr pScrn, int flags)
if (xf86LoadSubModule(pScrn, "int10")) {
xf86Int10InfoPtr pInt;
+#if 0
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Softbooting the board (through the int10 interface).\n");
pInt = xf86InitInt10(pTDFX->pEnt->index);
@@ -691,6 +694,7 @@ TDFXPreInit(ScrnInfoPtr pScrn, int flags)
"Softbooting the board succeeded.\n");
xf86FreeInt10(pInt);
}
+#endif
}
match=pTDFX->PciInfo=xf86GetPciInfoForEntity(pTDFX->pEnt->index);
@@ -1768,6 +1772,7 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
TDFXPtr pTDFX;
VisualPtr visual;
BoxRec MemBox;
+ MessageType driFrom = X_DEFAULT;
TDFXTRACE("TDFXScreenInit start\n");
pScrn = xf86Screens[pScreen->myNum];
@@ -1851,10 +1856,14 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
* is called. fbScreenInit will eventually call into the drivers
* InitGLXVisuals call back.
*/
- if (!pTDFX->NoAccel) {
- if ((pTDFX->backOffset != -1) && (pTDFX->depthOffset != -1)) {
+ if (!xf86ReturnOptValBool(TDFXOptions, OPTION_DRI, TRUE) || pTDFX->NoAccel) {
+ pTDFX->directRenderingEnabled = FALSE;
+ driFrom = X_CONFIG;
+ } else if ((pTDFX->backOffset != -1) && (pTDFX->depthOffset != -1)) {
+ pTDFX->directRenderingEnabled = FALSE;
+ driFrom = X_PROBED;
+ } else {
pTDFX->directRenderingEnabled = TDFXDRIScreenInit(pScreen);
- }
}
#endif
@@ -1934,18 +1943,16 @@ TDFXScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
xf86DPMSInit(pScreen, TDFXDisplayPowerManagementSet, 0);
#ifdef XF86DRI
- if (!pTDFX->NoAccel) {
- if (pTDFX->directRenderingEnabled) {
+ if (pTDFX->directRenderingEnabled) {
/* Now that mi, fb, drm and others have done their thing,
* complete the DRI setup.
*/
pTDFX->directRenderingEnabled = TDFXDRIFinishScreenInit(pScreen);
- }
}
if (pTDFX->directRenderingEnabled) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering enabled\n");
+ xf86DrvMsg(pScrn->scrnIndex, driFrom, "Direct rendering enabled\n");
} else {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering disabled\n");
+ xf86DrvMsg(pScrn->scrnIndex, driFrom, "Direct rendering disabled\n");
}
#endif