summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Brace <kevinbrace@gmx.com>2018-07-27 11:08:29 -0700
committerKevin Brace <kevinbrace@gmx.com>2018-07-27 11:08:29 -0700
commit7dbb89d6fd11d3521b8a0085f4d9640910081bf2 (patch)
tree12f0a51de615084bb2e4f13ebb12b4923e281092
parentc4c05c95ae9f1b02fcbc9f6ee431d466c1c0b519 (diff)
Move loading of EXA and XAA modules into R128PreInitAccel
Moving them away from R128ScreenInit callback function. This is how other DDXs do it. Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
-rw-r--r--src/r128_accel.c1
-rw-r--r--src/r128_driver.c48
-rw-r--r--src/r128_exa.c12
3 files changed, 43 insertions, 18 deletions
diff --git a/src/r128_accel.c b/src/r128_accel.c
index bfadaf6..589f49b 100644
--- a/src/r128_accel.c
+++ b/src/r128_accel.c
@@ -1909,7 +1909,6 @@ R128XAAAccelInit(ScreenPtr pScreen)
R128InfoPtr info = R128PTR(pScrn);
XAAInfoRecPtr a;
- if (!xf86LoadSubModule(pScrn, "xaa")) return FALSE;
if (!(a = info->accel = XAACreateInfoRec())) return FALSE;
#ifdef R128DRI
diff --git a/src/r128_driver.c b/src/r128_driver.c
index 773038c..afa41ca 100644
--- a/src/r128_driver.c
+++ b/src/r128_driver.c
@@ -1325,6 +1325,46 @@ exit:
return ret;
}
+static void
+R128PreInitAccel(ScrnInfoPtr pScrn)
+{
+ R128InfoPtr info = R128PTR(pScrn);
+#ifdef USE_EXA
+ int errmaj, errmin;
+#endif
+
+ if (!info->noAccel) {
+ if (info->useEXA) {
+#ifdef USE_EXA
+ info->exaReq.majorversion = EXA_VERSION_MAJOR;
+ info->exaReq.minorversion = EXA_VERSION_MINOR;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Loading EXA module...\n");
+ if (LoadSubModule(pScrn->module, "exa", NULL, NULL, NULL,
+ &info->exaReq, &errmaj, &errmin)) {
+ info->accelOn = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "EXA acceleration enabled.\n");
+ } else {
+ LoaderErrorMsg(NULL, "exa", errmaj, errmin);
+ }
+#endif
+ }
+
+ if ((!info->useEXA) ||
+ ((info->useEXA) && (!info->accelOn))) {
+#ifdef HAVE_XAA_H
+ if (xf86LoadSubModule(pScrn, "xaa")) {
+ info->accelOn = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "XAA acceleration enabled.\n");
+ }
+#endif
+ }
+ }
+}
+
/* R128PreInit is called once at server startup. */
Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
{
@@ -1404,6 +1444,7 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, info->Options);
info->noAccel = FALSE;
+ info->accelOn = FALSE;
info->useEXA = FALSE;
#ifdef USE_EXA
@@ -1467,6 +1508,8 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
/* Get ScreenInit function */
if (!xf86LoadSubModule(pScrn, "fb")) return FALSE;
+ R128PreInitAccel(pScrn);
+
info->CurrentLayout.displayWidth = pScrn->displayWidth;
if (!xf86RandR12PreInit(pScrn)) {
@@ -1630,14 +1673,10 @@ R128AccelInit(Bool noAccel, ScreenPtr pScreen)
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
- /* Initially, assume that acceleration is off. */
- info->accelOn = FALSE;
-
if (!noAccel) {
if (info->useEXA) {
#ifdef USE_EXA
if (R128EXAAccelInit(pScreen)) {
- info->accelOn = TRUE;
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"EXA acceleration enabled.\n");
}
@@ -1648,7 +1687,6 @@ R128AccelInit(Bool noAccel, ScreenPtr pScreen)
((info->useEXA) && (!info->accelOn))) {
#ifdef HAVE_XAA_H
if (R128XAAAccelInit(pScreen)) {
- info->accelOn = TRUE;
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"XAA acceleration enabled.\n");
}
diff --git a/src/r128_exa.c b/src/r128_exa.c
index 425fd64..5a54740 100644
--- a/src/r128_exa.c
+++ b/src/r128_exa.c
@@ -398,18 +398,6 @@ R128EXAAccelInit(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
- int errmaj = 0, errmin = 0;
-
- info->exaReq.majorversion = EXA_VERSION_MAJOR;
- info->exaReq.minorversion = EXA_VERSION_MINOR;
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Loading EXA module...\n");
- if (!LoadSubModule(pScrn->module, "exa", NULL, NULL, NULL,
- &info->exaReq, &errmaj, &errmin)) {
- LoaderErrorMsg(NULL, "exa", errmaj, errmin);
- return FALSE;
- }
/* Don't init EXA here because it'll be taken care of in mm init */
xf86DrvMsg(pScrn->scrnIndex, X_INFO,