Hello community, here is the log from the commit of package xf86-video-mga for openSUSE:Factory checked in at 2018-12-12 17:29:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xf86-video-mga (Old) and /work/SRC/openSUSE:Factory/.xf86-video-mga.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "xf86-video-mga" Wed Dec 12 17:29:39 2018 rev:23 rq:657247 version:2.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/xf86-video-mga/xf86-video-mga.changes 2018-05-29 16:50:58.542686459 +0200 +++ /work/SRC/openSUSE:Factory/.xf86-video-mga.new.28833/xf86-video-mga.changes 2018-12-12 17:29:45.354780310 +0100 @@ -1,0 +2,17 @@ +Mon Dec 10 14:23:30 UTC 2018 - sndirsch@suse.com + +- Update to version 2.0.0 + * This is a maintenance release of Matrox DDX. + Just for disclosure, the code is currently broken for Millennium, Millennium II, and G550. + For those models, you may have to disable acceleration to workaround the issue. (the workaround is untested) + The code is untested on Mystique and G100 due to lack of access to the hardware at this time. + The code works generally okay on G200, G400, and G450. + That being said, EXA occasionally leaves artifacts and standby resume is currently broken. + Standby resume used to work, but someone broke the code in the last few years. + (Kevin Brace, Brace Computer Laboratory, https://bracecomputerlab.com) +- adjusted u_Fix-compiler-warnings.patch, + u_shadow-Calulate-the-shadow-buffer-size-correctly.patch, + u_Change-shadow-fb-implementation-from-DDX-based-to-miext-damage-based.patch +- supersedes u_EXA-Fix-UploadToScreen.patch + +------------------------------------------------------------------- Old: ---- u_EXA-Fix-UploadToScreen.patch xf86-video-mga-1.6.5.tar.bz2 New: ---- xf86-video-mga-2.0.0.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xf86-video-mga.spec ++++++ --- /var/tmp/diff_new_pack.gjOCYA/_old 2018-12-12 17:29:46.150779304 +0100 +++ /var/tmp/diff_new_pack.gjOCYA/_new 2018-12-12 17:29:46.150779304 +0100 @@ -17,7 +17,7 @@ Name: xf86-video-mga -Version: 1.6.5 +Version: 2.0.0 Release: 0 Summary: Matrox video driver for the Xorg X server License: MIT @@ -26,7 +26,6 @@ Source0: http://xorg.freedesktop.org/releases/individual/driver/%{name}-%{version}.tar.bz2 Patch0: u_Change-shadow-fb-implementation-from-DDX-based-to-miext-damage-based.patch Patch1: u_Fix-compiler-warnings.patch -Patch3: u_EXA-Fix-UploadToScreen.patch Patch4: u_shadow-Calulate-the-shadow-buffer-size-correctly.patch Patch5: n_xorg-server-1.20.patch BuildRequires: Mesa-devel @@ -69,7 +68,6 @@ %setup -q %patch0 -p1 %patch1 -p1 -%patch3 -p1 %patch4 -p1 %patch5 -p1 @@ -83,7 +81,7 @@ %files %defattr(-,root,root) -%doc ChangeLog COPYING README +%doc ChangeLog COPYING README.md %dir %{_libdir}/xorg/modules/drivers %{_libdir}/xorg/modules/drivers/mga_drv.so %{_datadir}/man/man4/mga.4%{?ext_man} ++++++ u_Change-shadow-fb-implementation-from-DDX-based-to-miext-damage-based.patch ++++++ --- /var/tmp/diff_new_pack.gjOCYA/_old 2018-12-12 17:29:46.174779273 +0100 +++ /var/tmp/diff_new_pack.gjOCYA/_new 2018-12-12 17:29:46.174779273 +0100 @@ -17,11 +17,11 @@ src/mga_shadow.c | 266 +++++++++++-------------------------------------------- 3 files changed, 94 insertions(+), 254 deletions(-) -diff --git a/src/mga.h b/src/mga.h -index 5f75d37..3334331 100644 ---- a/src/mga.h -+++ b/src/mga.h -@@ -545,7 +545,6 @@ typedef struct { +Index: xf86-video-mga-2.0.0/src/mga.h +=================================================================== +--- xf86-video-mga-2.0.0.orig/src/mga.h ++++ xf86-video-mga-2.0.0/src/mga.h +@@ -539,7 +539,6 @@ typedef struct { Bool ShowCache; Bool ShadowFB; unsigned char * ShadowPtr; @@ -29,7 +29,7 @@ int MemClk; int MinClock; int MaxClock; -@@ -582,6 +581,8 @@ typedef struct { +@@ -576,6 +575,8 @@ typedef struct { void (*PointerMoved)(SCRN_ARG_TYPE arg, int x, int y); CloseScreenProcPtr CloseScreen; ScreenBlockHandlerProcPtr BlockHandler; @@ -38,7 +38,7 @@ unsigned int (*ddc1Read)(ScrnInfoPtr); void (*DDC1SetSpeed)(ScrnInfoPtr, xf86ddcSpeed); Bool (*i2cInit)(ScrnInfoPtr); -@@ -751,19 +752,14 @@ void MGAPolyArcThinSolid(DrawablePtr, GCPtr, int, xArc*); +@@ -743,19 +744,14 @@ void MGAPolyArcThinSolid(DrawablePtr, GC Bool MGADGAInit(ScreenPtr pScreen); @@ -60,10 +60,10 @@ void MGAInitVideo(ScreenPtr pScreen); void MGAResetVideo(ScrnInfoPtr pScrn); -diff --git a/src/mga_driver.c b/src/mga_driver.c -index 46478a6..08c836d 100644 ---- a/src/mga_driver.c -+++ b/src/mga_driver.c +Index: xf86-video-mga-2.0.0/src/mga_driver.c +=================================================================== +--- xf86-video-mga-2.0.0.orig/src/mga_driver.c ++++ xf86-video-mga-2.0.0/src/mga_driver.c @@ -92,7 +92,7 @@ #endif @@ -73,7 +73,7 @@ #include "fbdevhw.h" #ifdef MGADRI -@@ -2109,7 +2109,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) +@@ -2046,7 +2046,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) pMga->ShadowFB = TRUE; pMga->NoAccel = TRUE; pMga->HWCursor = FALSE; @@ -82,7 +82,7 @@ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Rotating screen clockwise - acceleration disabled\n"); } else -@@ -2117,10 +2117,17 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) +@@ -2054,10 +2054,17 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) pMga->ShadowFB = TRUE; pMga->NoAccel = TRUE; pMga->HWCursor = FALSE; @@ -102,7 +102,7 @@ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "\"%s\" is not a valid value for Option \"Rotate\"\n", s); xf86DrvMsg(pScrn->scrnIndex, X_INFO, -@@ -2141,6 +2148,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) +@@ -2078,6 +2085,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) "Falling back to shadowfb\n"); pMga->ShadowFB = TRUE; pMga->NoAccel = TRUE; @@ -110,7 +110,7 @@ } } else { #endif -@@ -2150,6 +2158,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) +@@ -2087,6 +2095,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) "Falling back to shadowfb\n"); pMga->ShadowFB = TRUE; pMga->NoAccel = TRUE; @@ -118,7 +118,7 @@ } #endif #ifdef USE_EXA -@@ -2662,7 +2671,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) +@@ -2605,7 +2614,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags) /* Load shadowfb if needed */ if (pMga->ShadowFB) { @@ -127,7 +127,7 @@ MGAFreeRec(pScrn); return FALSE; } -@@ -3207,7 +3216,6 @@ MGACrtc2FillStrip(ScrnInfoPtr pScrn) +@@ -3159,7 +3168,6 @@ MGACrtc2FillStrip(ScrnInfoPtr pScrn) } } @@ -135,7 +135,7 @@ /* Mandatory */ /* This gets called at the start of each server generation */ -@@ -3391,9 +3399,8 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) +@@ -3339,9 +3347,8 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) } if(pMga->ShadowFB) { @@ -147,16 +147,16 @@ FBStart = pMga->ShadowPtr; } else { pMga->ShadowPtr = NULL; -@@ -3436,7 +3443,7 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) +@@ -3380,7 +3387,7 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) "Static buffer allocation failed, not initializing the DRI\n"); xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Need at least %d kB video memory at this resolution, bit depth\n", - (3 * displayWidth * height * (pScrn->bitsPerPixel >> 3)) / 1024 ); + (3 * pScrn->displayWidth * height * (pScrn->bitsPerPixel >> 3)) / 1024 ); pMga->directRenderingEnabled = FALSE; - driFrom = X_PROBED; } -@@ -3447,7 +3454,7 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) + else { +@@ -3390,7 +3397,7 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) if (!fbScreenInit(pScreen, FBStart, width, height, pScrn->xDpi, @@ -165,7 +165,7 @@ return FALSE; } -@@ -3470,6 +3477,20 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) +@@ -3413,6 +3420,20 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) /* must be after RGB ordering fixed */ fbPictureInit (pScreen, 0, 0); @@ -186,7 +186,7 @@ xf86SetBlackWhitePixels(pScreen); pMga->BlockHandler = pScreen->BlockHandler; -@@ -3526,26 +3547,6 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) +@@ -3469,26 +3490,6 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) NULL, f)) return FALSE; @@ -213,7 +213,7 @@ xf86DPMSInit(pScreen, mga_dpms_set_proc, 0); pScrn->memPhysBase = pMga->FbAddress; -@@ -3869,7 +3870,11 @@ MGACloseScreen(CLOSE_SCREEN_ARGS_DECL) +@@ -3812,7 +3813,11 @@ MGACloseScreen(CLOSE_SCREEN_ARGS_DECL) #endif if (pMga->CursorInfoRec) xf86DestroyCursorInfoRec(pMga->CursorInfoRec); @@ -226,15 +226,15 @@ free(pMga->DGAModes); free(pMga->adaptor); free(pMga->portPrivate); -@@ -4272,3 +4277,4 @@ MGAG100BlackMagic(ScrnInfoPtr pScrn) +@@ -4220,3 +4225,4 @@ MGAG100BlackMagic(ScrnInfoPtr pScrn) OUTREG(MGAREG_MACCESS, 1<<15); usleep(10); } + -diff --git a/src/mga_shadow.c b/src/mga_shadow.c -index a8d5cfb..93badb6 100644 ---- a/src/mga_shadow.c -+++ b/src/mga_shadow.c +Index: xf86-video-mga-2.0.0/src/mga_shadow.c +=================================================================== +--- xf86-video-mga-2.0.0.orig/src/mga_shadow.c ++++ xf86-video-mga-2.0.0/src/mga_shadow.c @@ -9,244 +9,82 @@ #include "xf86.h" @@ -286,7 +286,9 @@ - SCRN_INFO_PTR(arg); - MGAPtr pMga = MGAPTR(pScrn); - int newX, newY; -- ++ if (!pScrn->vtSema) ++ return NULL; + - if(pMga->Rotate == 1) { - newX = pScrn->pScreen->height - y - 1; - newY = x; @@ -294,9 +296,7 @@ - newX = y; - newY = pScrn->pScreen->width - x - 1; - } -+ if (!pScrn->vtSema) -+ return NULL; - +- - (*pMga->PointerMoved)(arg, newX, newY); + *size = pScrn->displayWidth * (pScrn->bitsPerPixel >> 3); + return ((CARD8 *)pMga->FbStart + (row * *size) + offset); @@ -345,17 +345,19 @@ - srcPtr += pMga->Rotate; - dstPtr += dstPitch; - } -- -- pbox++; -- } --} + PixmapPtr pPixmap; + Bool ret; +- pbox++; +- } +-} + pScreen->CreateScreenResources = pMga->CreateScreenResources; + ret = pScreen->CreateScreenResources(pScreen); + pScreen->CreateScreenResources = MGAShadowCreateScreenResources; ++ if (!ret) ++ return FALSE; + -void -MGARefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox) -{ @@ -396,13 +398,9 @@ - srcPtr += pMga->Rotate; - dstPtr += dstPitch; - } -- -- pbox++; -+ if (!ret) -+ return FALSE; -+ + pPixmap = pScreen->GetScreenPixmap(pScreen); -+ + +- pbox++; + if (!shadowAdd(pScreen, pPixmap, pMga->Rotate ? + shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(), + MGAShadowWindowLinear, pMga->Rotate, NULL)) { @@ -463,9 +461,8 @@ - srcPtr += pMga->Rotate * 3; - dstPtr += dstPitch; - } -- + - pbox++; -+ + if (!shadowSetup(pScreen)) { + return FALSE; } @@ -515,19 +512,18 @@ - srcPtr += pMga->Rotate; - dstPtr += dstPitch; - } -- -- pbox++; -- } --} + int newX, newY; +- pbox++; + if(pMga->Rotate == 1) { + newX = pScrn->pScreen->height - y - 1; + newY = x; + } else { + newX = y; + newY = pScrn->pScreen->width - x - 1; -+ } + } +-} +- + (*pMga->PointerMoved)(arg, newX, newY); +} ++++++ u_Fix-compiler-warnings.patch ++++++ --- /var/tmp/diff_new_pack.gjOCYA/_old 2018-12-12 17:29:46.182779263 +0100 +++ /var/tmp/diff_new_pack.gjOCYA/_new 2018-12-12 17:29:46.186779257 +0100 @@ -12,41 +12,11 @@ src/mga_driver.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) -diff --git a/src/mga_driver.c b/src/mga_driver.c -index 08c836d..d3b25f0 100644 ---- a/src/mga_driver.c -+++ b/src/mga_driver.c -@@ -1003,7 +1003,8 @@ MGASoftReset(ScrnInfoPtr pScrn) - MGAPtr pMga = MGAPTR(pScrn); - - pMga->FbMapSize = 8192 * 1024; -- MGAMapMem(pScrn); -+ if (!MGAMapMem(pScrn)) -+ return; - - /* set soft reset bit */ - OUTREG(MGAREG_Reset, 1); -@@ -1124,7 +1125,8 @@ MGACountRam(ScrnInfoPtr pScrn) - ProbeSize = 16384; - ProbeSizeOffset = 0x10000; - pMga->FbMapSize = ProbeSize * 1024; -- MGAMapMem(pScrn); -+ if (!MGAMapMem(pScrn)) -+ return 0; - base = pMga->FbBase; - } - -@@ -1164,7 +1166,8 @@ MGACountRam(ScrnInfoPtr pScrn) - else { - MGAUnmapMem(pScrn); - pMga->FbMapSize = ProbeSize * 1024; -- MGAMapMem(pScrn); -+ if (!MGAMapMem(pScrn)) -+ return 0; - base = pMga->FbBase; - } - } -@@ -2746,7 +2749,7 @@ MGAMapMem(ScrnInfoPtr pScrn) +Index: xf86-video-mga-2.0.0/src/mga_driver.c +=================================================================== +--- xf86-video-mga-2.0.0.orig/src/mga_driver.c ++++ xf86-video-mga-2.0.0/src/mga_driver.c +@@ -2690,7 +2690,7 @@ MGAMapMem(ScrnInfoPtr pScrn) err = pci_device_map_range(dev, region->base_addr, region->size, PCI_DEV_MAP_FLAG_WRITABLE, ++++++ u_shadow-Calulate-the-shadow-buffer-size-correctly.patch ++++++ --- /var/tmp/diff_new_pack.gjOCYA/_old 2018-12-12 17:29:46.194779248 +0100 +++ /var/tmp/diff_new_pack.gjOCYA/_new 2018-12-12 17:29:46.194779248 +0100 @@ -17,11 +17,11 @@ src/mga_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/src/mga_driver.c b/src/mga_driver.c -index 1a83836..3b8e890 100644 ---- a/src/mga_driver.c -+++ b/src/mga_driver.c -@@ -3280,7 +3280,7 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) +Index: xf86-video-mga-2.0.0/src/mga_driver.c +=================================================================== +--- xf86-video-mga-2.0.0.orig/src/mga_driver.c ++++ xf86-video-mga-2.0.0/src/mga_driver.c +@@ -3347,7 +3347,7 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL) } if(pMga->ShadowFB) { ++++++ xf86-video-mga-1.6.5.tar.bz2 -> xf86-video-mga-2.0.0.tar.bz2 ++++++ ++++ 4025 lines of diff (skipped)