From 3a37e671bbe6905849b5e715963cedbbcc5fa9c6 Mon Sep 17 00:00:00 2001 From: q66 Date: Wed, 29 Jan 2020 14:42:32 +0100 Subject: [PATCH] New package: xf86-video-r128-6.12.0 --- .../xf86-video-r128/patches/fix-non-x86.patch | 123 ++++++++++++++++++ srcpkgs/xf86-video-r128/template | 20 +++ 2 files changed, 143 insertions(+) create mode 100644 srcpkgs/xf86-video-r128/patches/fix-non-x86.patch create mode 100644 srcpkgs/xf86-video-r128/template diff --git a/srcpkgs/xf86-video-r128/patches/fix-non-x86.patch b/srcpkgs/xf86-video-r128/patches/fix-non-x86.patch new file mode 100644 index 00000000000..efe9fbb9f73 --- /dev/null +++ b/srcpkgs/xf86-video-r128/patches/fix-non-x86.patch @@ -0,0 +1,123 @@ +From 827f6ce66f57bb5777b32d9badb943cc57b9b1c9 Mon Sep 17 00:00:00 2001 +From: q66 +Date: Thu, 23 Jan 2020 19:25:56 +0100 +Subject: [PATCH xf86-video-r128] Disable VBE on non-x86, disable XAA, fix + invalid VBIOS access + +This should fix the driver on non-x86 platforms. + +XAA disablement taken from: + +https://code.foxkit.us/adelie/packages/blob/master/user/xf86-video-r128 +--- + src/r128_driver.c | 24 ++++++++++++++++-------- + src/r128_output.c | 1 + + 2 files changed, 17 insertions(+), 8 deletions(-) + +diff --git src/r128_driver.c src/r128_driver.c +index 18ff57f..3f9159a 100644 +--- src/r128_driver.c ++++ src/r128_driver.c +@@ -91,7 +91,11 @@ + #endif + #include "xf86cmap.h" + #include "xf86xv.h" ++#if defined(__i386__) || defined(__x86_64__) + #include "vbe.h" ++#else ++typedef void *xf86Int10InfoPtr; ++#endif + + /* fbdevhw & vgahw */ + #ifdef WITH_VGAHW +@@ -417,11 +421,14 @@ static Bool R128GetBIOSParameters(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + return FALSE; + } + ++#if defined(__x86_64__) || defined(__i386__) + if (pInt10) { + info->BIOSAddr = pInt10->BIOSseg << 4; + (void)memcpy(info->VBIOS, xf86int10Addr(pInt10, info->BIOSAddr), + R128_VBIOS_SIZE); +- } else { ++ } else ++#endif ++ { + #ifdef XSERVER_LIBPCIACCESS + if (pci_device_read_rom(info->PciInfo, info->VBIOS)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, +@@ -986,7 +993,7 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn) + + static Bool R128PreInitDDC(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + { +-#if !defined(__powerpc__) && !defined(__alpha__) && !defined(__sparc__) ++#if defined(__i386__) || defined(__x86_64__) + R128InfoPtr info = R128PTR(pScrn); + vbeInfoPtr pVbe; + #endif +@@ -994,8 +1001,7 @@ static Bool R128PreInitDDC(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10) + if (!xf86LoadSubModule(pScrn, "ddc")) return FALSE; + if (!xf86LoadSubModule(pScrn, "i2c")) return FALSE; + +-#if defined(__powerpc__) || defined(__alpha__) || defined(__sparc__) +- /* Int10 is broken on PPC and some Alphas */ ++#if !defined(__i386__) && !defined(__x86_64__) + return TRUE; + #else + if (xf86LoadSubModule(pScrn, "vbe")) { +@@ -1031,9 +1037,8 @@ static Bool R128PreInitCursor(ScrnInfoPtr pScrn) + + static Bool R128PreInitInt10(ScrnInfoPtr pScrn, xf86Int10InfoPtr *ppInt10) + { ++#if defined(__i386__) || defined(__x86_64__) + R128InfoPtr info = R128PTR(pScrn); +-#if !defined(__powerpc__) && !defined(__alpha__) +- /* int10 is broken on some Alphas and powerpc */ + if (xf86LoadSubModule(pScrn, "int10")) { + xf86DrvMsg(pScrn->scrnIndex,X_INFO,"initializing int10\n"); + *ppInt10 = xf86InitInt10(info->pEnt->index); +@@ -1377,9 +1382,11 @@ static Bool R128LegacyMS(ScrnInfoPtr pScrn) + ret = TRUE; + freeInt10: + /* Free int10 info */ ++#if defined(__i386__) || defined(__x86_64__) + if (pInt10) { + xf86FreeInt10(pInt10); + } ++#endif + + exit: + return ret; +@@ -1887,14 +1894,15 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DECL) + } + + if (!info->noAccel) { ++#ifdef HAVE_XAA_H + if (R128XAAAccelInit(pScreen)) { + info->accelOn = TRUE; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "XAA acceleration enabled.\n"); +- } else { ++ } else ++#endif + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Acceleration disabled.\n"); +- } + } + } + } +diff --git src/r128_output.c src/r128_output.c +index 1d98fb9..5a94a3f 100644 +--- src/r128_output.c ++++ src/r128_output.c +@@ -426,6 +426,7 @@ void R128GetConnectorInfoFromBIOS(ScrnInfoPtr pScrn, R128OutputType *otypes) + /* non-x86 platform */ + if (!info->VBIOS) { + otypes[0] = OUTPUT_VGA; ++ return; + } + + bios_header = R128_BIOS16(0x48); +-- +2.25.0 + diff --git a/srcpkgs/xf86-video-r128/template b/srcpkgs/xf86-video-r128/template new file mode 100644 index 00000000000..4dbe1529aa5 --- /dev/null +++ b/srcpkgs/xf86-video-r128/template @@ -0,0 +1,20 @@ +# Template file for 'xf86-video-r128' +pkgname=xf86-video-r128 +version=6.12.0 +revision=1 +build_style=gnu-configure +hostmakedepends="pkg-config" +makedepends="xorgproto xorg-server-devel" +depends="virtual?xserver-abi-video-24_1" +short_desc="Xorg ATI Rage 128 video driver" +maintainer="q66 " +license="MIT" +homepage="https://wiki.freedesktop.org/xorg" +distfiles="${XORG_SITE}/driver/${pkgname}-${version}.tar.bz2" +checksum=801c86882cbd2bbb3084d471dcc5cfee2c1754dcbfb4dc446676d58a6bd9e057 +lib32disabled=yes +LDFLAGS="-Wl,-z,lazy" + +post_install() { + vlicense COPYING +}