diff options
author | Kevin Brace <kevinbrace@gmx.com> | 2020-07-27 14:08:38 -0700 |
---|---|---|
committer | Kevin Brace <kevinbrace@gmx.com> | 2020-07-27 14:20:12 -0700 |
commit | 838d7951eb9b2d48e2cb990221324c5d9d1682f5 (patch) | |
tree | 675d3fab811542051d8f096b9e02dfc6c2ddb9c8 | |
parent | 5255a42d8a31a17938176a70e73a7fd2ea202c31 (diff) |
Fix for DRI1 initialization failure
commit a245948 (Map FB during screen initialization rather than
pre-initialization) broke DRI1 initialization code. This was due to
frame buffer no longer being mapped prior to DRI1 initialization. Now,
frame buffer is mapped prior to DRI1 initialization.
Signed-off-by: Kevin Brace <kevinbrace@gmx.com>
-rw-r--r-- | src/via_driver.c | 8 | ||||
-rw-r--r-- | src/via_ums.c | 43 | ||||
-rw-r--r-- | src/via_ums.h | 3 |
3 files changed, 38 insertions, 16 deletions
diff --git a/src/via_driver.c b/src/via_driver.c index 3240677..3289e74 100644 --- a/src/via_driver.c +++ b/src/via_driver.c @@ -1480,6 +1480,12 @@ VIAScreenInit(SCREEN_INIT_ARGS_DECL) /* Must be after RGB ordering is fixed. */ fbPictureInit(pScreen, NULL, 0); + if (!pVia->KMS) { + if (!viaUMSMapIOResources(pScrn)) { + return FALSE; + } + } + #ifdef HAVE_DRI if (pVia->KMS) { if (drmSetMaster(pVia->drmmode.fd)) { @@ -1506,7 +1512,7 @@ VIAScreenInit(SCREEN_INIT_ARGS_DECL) if (pVia->directRenderingType != DRI_2) #endif /* HAVE_DRI */ { - if (!viaUMSCreate(pScrn)) { + if (!viaUMSScreenInit(pScrn)) { return FALSE; } } diff --git a/src/via_ums.c b/src/via_ums.c index 00fd0d6..309d1c3 100644 --- a/src/via_ums.c +++ b/src/via_ums.c @@ -778,7 +778,7 @@ exit: } Bool -viaUMSCreate(ScrnInfoPtr pScrn) +viaUMSMapIOResources(ScrnInfoPtr pScrn) { VIAPtr pVia = VIAPTR(pScrn); Bool ret = TRUE; @@ -822,6 +822,34 @@ viaUMSCreate(ScrnInfoPtr pScrn) goto exit; } +exit: + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Exiting %s.\n", __func__)); + return ret; +} + +void +viaUMSDestroy(ScrnInfoPtr pScrn) +{ + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Entered %s.\n", __func__)); + + viaUnmapFB(pScrn); + viaUnmapMMIO(pScrn); + + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Exiting %s.\n", __func__)); +} + +Bool +viaUMSScreenInit(ScrnInfoPtr pScrn) +{ + VIAPtr pVia = VIAPTR(pScrn); + Bool ret = TRUE; + + DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Entered %s.\n", __func__)); + if (pVia->directRenderingType == DRI_NONE) { if (!pVia->useEXA) { if (!viaInitFB(pScrn)) { @@ -854,19 +882,6 @@ exit: return ret; } -void -viaUMSDestroy(ScrnInfoPtr pScrn) -{ - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Entered %s.\n", __func__)); - - viaUnmapFB(pScrn); - viaUnmapMMIO(pScrn); - - DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Exiting %s.\n", __func__)); -} - static Bool viaProbeVRAM(ScrnInfoPtr pScrn) { diff --git a/src/via_ums.h b/src/via_ums.h index 8adef52..e937217 100644 --- a/src/via_ums.h +++ b/src/via_ums.h @@ -1558,8 +1558,9 @@ viaSetDisplayScaling(ScrnInfoPtr pScrn, Bool scalingState) /* via_ums.c */ void viaDisableVQ(ScrnInfoPtr pScrn); Bool viaUMSAccelInit(ScrnInfoPtr pScrn); -Bool viaUMSCreate(ScrnInfoPtr pScrn); +Bool viaUMSMapIOResources(ScrnInfoPtr pScrn); void viaUMSDestroy(ScrnInfoPtr pScrn); +Bool viaUMSScreenInit(ScrnInfoPtr pScrn); Bool viaUMSPreInit(ScrnInfoPtr pScrn); void viaUMSPreInitExit(ScrnInfoPtr pScrn); Bool viaUMSCrtcInit(ScrnInfoPtr pScrn); |