summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorrern2022-04-25 12:51:41 +0000
committerrern2022-04-25 12:51:41 +0000
commitdfeb39d523c848e6a0db8e9c2d37c8d49e08ea4d (patch)
tree6e9f7576d6e7a7a0b98d0b1e026daf788b620178
downloadaur-dfeb39d523c848e6a0db8e9c2d37c8d49e08ea4d.tar.gz
Initial
-rw-r--r--.SRCINFO31
-rw-r--r--0001-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch156
-rw-r--r--0002-GCC-8-fix.patch33
-rw-r--r--0003-backStorage-fix.patch33
-rw-r--r--PKGBUILD60
5 files changed, 313 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..e9dc252763b1
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,31 @@
+pkgbase = xf86-video-fbturbo
+ pkgdesc = X.org MALI video driver
+ pkgver = 0.4.0
+ pkgrel = 1
+ url = https://github.com/ssvb/xf86-video-fbturbo
+ arch = armv7h
+ arch = aarch64
+ license = MIT
+ makedepends = xorg-server-devel
+ makedepends = X-ABI-VIDEODRV_VERSION>=24.0
+ makedepends = git
+ provides = xf86-video-fbturbo
+ conflicts = xorg-server<1.20
+ conflicts = X-ABI-VIDEODRV_VERSION<24
+ options = !libtool
+ source = git+https://github.com/ssvb/xf86-video-fbturbo
+ source = 0001-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch
+ source = 0002-GCC-8-fix.patch
+ source = 0003-backStorage-fix.patch
+ sha256sums = SKIP
+ sha256sums = 0af499820e3ade74ea6518caa96ec19f39150b1678ad6b33b2a3774b5a9f2c64
+ sha256sums = ccbd8f0d3fd9da180b2f5ab3be7284ec76e9dbf06762ec765e09a45c530d93bb
+ sha256sums = a8ca499527fc0da6177a7cca86badd021259e17b2d416bc7f7a6663821e90c12
+
+pkgname = xf86-video-fbturbo
+ depends = xf86-input-evdev
+ depends = xf86-video-fbdev
+ depends = xf86-video-vesa
+ depends = xinput_calibrator
+ depends = xorg-server
+ depends = xorg-xinit
diff --git a/0001-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch b/0001-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch
new file mode 100644
index 000000000000..445f10d3b3bd
--- /dev/null
+++ b/0001-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch
@@ -0,0 +1,156 @@
+From 5152fea67554f9fe8a6fcd194f88e31a47ec1381 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Wed, 21 May 2014 09:49:56 -0400
+Subject: [PATCH 1/2] Use own thunk functions instead of fbdevHW*Weak
+
+I plan to remove the Weak functions from a future server.
+
+Signed-off-by: Adam Jackson <ajax@redhat.com>
+---
+ src/fbdev.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++-----------
+ 1 file changed, 71 insertions(+), 15 deletions(-)
+
+diff --git a/src/fbdev.c b/src/fbdev.c
+index 2bbee6e..23ec855 100644
+--- a/src/fbdev.c
++++ b/src/fbdev.c
+@@ -269,6 +269,35 @@ FBDevIdentify(int flags)
+ xf86PrintChipsets(FBDEV_NAME, "driver for framebuffer", FBDevChipsets);
+ }
+
++static Bool
++fbdevSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
++{
++ return fbdevHWSwitchMode(pScrn, mode);
++}
++
++static void
++fbdevAdjustFrame(ScrnInfoPtr pScrn, int x, int y)
++{
++ fbdevHWAdjustFrame(pScrn, x, y);
++}
++
++static Bool
++fbdevEnterVT(ScrnInfoPtr pScrn)
++{
++ return fbdevHWEnterVT(pScrn);
++}
++
++static void
++fbdevLeaveVT(ScrnInfoPtr pScrn)
++{
++ fbdevHWLeaveVT(pScrn);
++}
++
++static ModeStatus
++fbdevValidMode(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool verbose, int flags)
++{
++ return fbdevHWValidMode(pScrn, mode, verbose, flags);
++}
+
+ #ifdef XSERVER_LIBPCIACCESS
+ static Bool FBDevPciProbe(DriverPtr drv, int entity_num,
+@@ -294,11 +323,11 @@ static Bool FBDevPciProbe(DriverPtr drv, int entity_num,
+ pScrn->Probe = FBDevProbe;
+ pScrn->PreInit = FBDevPreInit;
+ pScrn->ScreenInit = FBDevScreenInit;
+- pScrn->SwitchMode = fbdevHWSwitchModeWeak();
+- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak();
+- pScrn->EnterVT = fbdevHWEnterVTWeak();
+- pScrn->LeaveVT = fbdevHWLeaveVTWeak();
+- pScrn->ValidMode = fbdevHWValidModeWeak();
++ pScrn->SwitchMode = fbdevSwitchMode;
++ pScrn->AdjustFrame = fbdevAdjustFrame;
++ pScrn->EnterVT = fbdevEnterVT;
++ pScrn->LeaveVT = fbdevLeaveVT;
++ pScrn->ValidMode = fbdevValidMode;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "claimed PCI slot %d@%d:%d:%d\n",
+@@ -411,11 +440,11 @@ FBDevProbe(DriverPtr drv, int flags)
+ pScrn->Probe = FBDevProbe;
+ pScrn->PreInit = FBDevPreInit;
+ pScrn->ScreenInit = FBDevScreenInit;
+- pScrn->SwitchMode = fbdevHWSwitchModeWeak();
+- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak();
+- pScrn->EnterVT = fbdevHWEnterVTWeak();
+- pScrn->LeaveVT = fbdevHWLeaveVTWeak();
+- pScrn->ValidMode = fbdevHWValidModeWeak();
++ pScrn->SwitchMode = fbdevSwitchMode;
++ pScrn->AdjustFrame = fbdevAdjustFrame;
++ pScrn->EnterVT = fbdevEnterVT;
++ pScrn->LeaveVT = fbdevLeaveVT;
++ pScrn->ValidMode = fbdevValidMode;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "using %s\n", dev ? dev : "default device");
+@@ -656,6 +685,17 @@ FBDevPreInit(ScrnInfoPtr pScrn, int flags)
+ return TRUE;
+ }
+
++static void
++fbdevUpdateRotatePacked(ScreenPtr pScreen, shadowBufPtr pBuf)
++{
++ shadowUpdateRotatePacked(pScreen, pBuf);
++}
++
++static void
++fbdevUpdatePacked(ScreenPtr pScreen, shadowBufPtr pBuf)
++{
++ shadowUpdatePacked(pScreen, pBuf);
++}
+
+ static Bool
+ FBDevCreateScreenResources(ScreenPtr pScreen)
+@@ -675,7 +715,7 @@ FBDevCreateScreenResources(ScreenPtr pScreen)
+ pPixmap = pScreen->GetScreenPixmap(pScreen);
+
+ if (!shadowAdd(pScreen, pPixmap, fPtr->rotate ?
+- shadowUpdateRotatePackedWeak() : shadowUpdatePackedWeak(),
++ fbdevUpdateRotatePacked : fbdevUpdatePacked,
+ FBDevWindowLinear, fPtr->rotate, NULL)) {
+ return FALSE;
+ }
+@@ -699,6 +739,23 @@ FBDevShadowInit(ScreenPtr pScreen)
+ return TRUE;
+ }
+
++static void
++fbdevLoadPalette(ScrnInfoPtr pScrn, int num, int *i, LOCO *col, VisualPtr pVis)
++{
++ fbdevHWLoadPalette(pScrn, num, i, col, pVis);
++}
++
++static void
++fbdevDPMSSet(ScrnInfoPtr pScrn, int mode, int flags)
++{
++ fbdevHWDPMSSet(pScrn, mode, flags);
++}
++
++static Bool
++fbdevSaveScreen(ScreenPtr pScreen, int mode)
++{
++ return fbdevHWSaveScreen(pScreen, mode);
++}
+
+ static Bool
+ FBDevScreenInit(SCREEN_INIT_ARGS_DECL)
+@@ -1025,13 +1082,12 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL)
+ return FALSE;
+ }
+ flags = CMAP_PALETTED_TRUECOLOR;
+- if(!xf86HandleColormaps(pScreen, 256, 8, fbdevHWLoadPaletteWeak(),
+- NULL, flags))
++ if(!xf86HandleColormaps(pScreen, 256, 8, fbdevLoadPalette, NULL, flags))
+ return FALSE;
+
+- xf86DPMSInit(pScreen, fbdevHWDPMSSetWeak(), 0);
++ xf86DPMSInit(pScreen, fbdevDPMSSet, 0);
+
+- pScreen->SaveScreen = fbdevHWSaveScreenWeak();
++ pScreen->SaveScreen = fbdevSaveScreen;
+
+ /* Wrap the current CloseScreen function */
+ fPtr->CloseScreen = pScreen->CloseScreen;
+--
+2.16.2
diff --git a/0002-GCC-8-fix.patch b/0002-GCC-8-fix.patch
new file mode 100644
index 000000000000..7d5e5ec0844d
--- /dev/null
+++ b/0002-GCC-8-fix.patch
@@ -0,0 +1,33 @@
+From b0110d28c675dfc68ae8567c0b1712b187c7e61a Mon Sep 17 00:00:00 2001
+From: Kevin Mihelich <kevin@archlinuxarm.org>
+Date: Thu, 17 May 2018 12:53:53 -0600
+Subject: [PATCH 2/2] GCC 8 fix
+
+---
+ src/fbdev.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/fbdev.c b/src/fbdev.c
+index 23ec855..76ca968 100644
+--- a/src/fbdev.c
++++ b/src/fbdev.c
+@@ -1093,7 +1093,7 @@ FBDevScreenInit(SCREEN_INIT_ARGS_DECL)
+ fPtr->CloseScreen = pScreen->CloseScreen;
+ pScreen->CloseScreen = FBDevCloseScreen;
+
+-#if XV
++#ifdef XV
+ fPtr->SunxiVideo_private = NULL;
+ if (xf86ReturnOptValBool(fPtr->Options, OPTION_XV_OVERLAY, TRUE) &&
+ fPtr->sunxi_disp_private) {
+@@ -1183,7 +1183,7 @@ FBDevCloseScreen(CLOSE_SCREEN_ARGS_DECL)
+ fPtr->SunxiDispHardwareCursor_private = NULL;
+ }
+
+-#if XV
++#ifdef XV
+ if (fPtr->SunxiVideo_private) {
+ SunxiVideo_Close(pScreen);
+ free(fPtr->SunxiVideo_private);
+--
+2.16.2
diff --git a/0003-backStorage-fix.patch b/0003-backStorage-fix.patch
new file mode 100644
index 000000000000..df174c58b441
--- /dev/null
+++ b/0003-backStorage-fix.patch
@@ -0,0 +1,33 @@
+diff --git a/src/backing_store_tuner.c b/src/backing_store_tuner.c
+index 067c05f..13f7ec3 100644
+--- a/src/backing_store_tuner.c
++++ b/src/backing_store_tuner.c
+@@ -109,7 +109,7 @@ xPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind)
+ private->PostValidateTreeNestingLevel++;
+
+ /* Disable backing store for the focus window */
+- if (!private->ForceBackingStore && focusWin->backStorage) {
++ if (!private->ForceBackingStore && (focusWin->backingStore != NotUseful)) {
+ DebugMsg("Disable backing store for the focus window 0x%x\n",
+ (unsigned int)focusWin->drawable.id);
+ pScreen->backingStoreSupport = Always;
+@@ -125,7 +125,7 @@ xPostValidateTree(WindowPtr pWin, WindowPtr pLayerWin, VTKind kind)
+ /* And enable backing store for all the other children of root */
+ curWin = pScreen->root->firstChild;
+ while (curWin) {
+- if (!curWin->backStorage && (private->ForceBackingStore ||
++ if ((curWin->backingStore == NotUseful) && (private->ForceBackingStore ||
+ curWin != focusWin)) {
+ DebugMsg("Enable backing store for window 0x%x\n",
+ (unsigned int)curWin->drawable.id);
+@@ -158,7 +158,7 @@ xReparentWindow(WindowPtr pWin, WindowPtr pPriorParent)
+ }
+
+ /* We only want backing store set for direct children of root */
+- if (pPriorParent == pScreen->root && pWin->backStorage) {
++ if (pPriorParent == pScreen->root && (pWin->backingStore != NotUseful)) {
+ DebugMsg("Reparent window 0x%x from root, disabling backing store\n",
+ (unsigned int)pWin->drawable.id);
+ pScreen->backingStoreSupport = Always;
+--
+2.16.2
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..806de8e00b20
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,60 @@
+# based on: https://gitlab.manjaro.org/manjaro-arm/packages/community/xf86-video-fbturbo-git/-/tree/master
+# added: fix.patch (from: https://archlinuxarm.org/forum/viewtopic.php?f=15&t=15704#p68372)
+# Maintainer: rernrern@gmail.com
+
+pkgname=xf86-video-fbturbo
+pkgver=0.4.0
+pkgrel=1
+pkgdesc='X.org MALI video driver'
+arch=('armv7h' 'aarch64')
+url="https://github.com/ssvb/xf86-video-fbturbo"
+license=('MIT')
+makedepends=('xorg-server-devel' 'X-ABI-VIDEODRV_VERSION>=24.0' 'git')
+conflicts=('xorg-server<1.20' 'X-ABI-VIDEODRV_VERSION<24')
+options=('!libtool')
+provides=('xf86-video-fbturbo')
+source=('git+https://github.com/ssvb/xf86-video-fbturbo'
+ '0001-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch'
+ '0002-GCC-8-fix.patch'
+ '0003-backStorage-fix.patch')
+sha256sums=('SKIP'
+ '0af499820e3ade74ea6518caa96ec19f39150b1678ad6b33b2a3774b5a9f2c64'
+ 'ccbd8f0d3fd9da180b2f5ab3be7284ec76e9dbf06762ec765e09a45c530d93bb'
+ 'a8ca499527fc0da6177a7cca86badd021259e17b2d416bc7f7a6663821e90c12')
+
+prepare() {
+ cd "$srcdir/$pkgname"
+ patch -p1 -i ../0001-Use-own-thunk-functions-instead-of-fbdevHW-Weak.patch
+ patch -p1 -i ../0002-GCC-8-fix.patch
+ patch -p1 -i ../0003-backStorage-fix.patch
+}
+
+build() {
+ cd "$srcdir/$pkgname"
+
+ # Since pacman 5.0.2-2, hardened flags are now enabled in makepkg.conf
+ # With them, module fail to load with undefined symbol.
+ # See https://bugs.archlinux.org/task/55102 / https://bugs.archlinux.org/task/54845
+ export CFLAGS=${CFLAGS/-fno-plt}
+ export CXXFLAGS=${CXXFLAGS/-fno-plt}
+ export LDFLAGS=${LDFLAGS/,-z,now}
+
+ ./autogen.sh
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ depends=(xf86-input-evdev
+ xf86-video-fbdev
+ xf86-video-vesa
+ xinput_calibrator
+ xorg-server
+ xorg-xinit)
+ cd "$srcdir/$pkgname"
+ mkdir -p "$pkgdir/etc/X11/xorg.conf.d/"
+ cp "xorg.conf" "$pkgdir/etc/X11/xorg.conf.d/99-fbturbo.conf"
+ make DESTDIR="$pkgdir/" install
+ install -m755 -d "$pkgdir/usr/share/licenses/$pkgname"
+ install -m644 COPYING "$pkgdir/usr/share/licenses/$pkgname/"
+}