diff --git a/srcpkgs/xf86-video-mach64/patches/0001-avoid-including-VBE-paths-when-not-used.patch b/srcpkgs/xf86-video-mach64/patches/0001-avoid-including-VBE-paths-when-not-used.patch new file mode 100644 index 0000000000..1810a81f57 --- /dev/null +++ b/srcpkgs/xf86-video-mach64/patches/0001-avoid-including-VBE-paths-when-not-used.patch @@ -0,0 +1,36 @@ +From 73d1c4ecbddf64b729a16aa4ebe9e9151c975891 Mon Sep 17 00:00:00 2001 +From: Daniel Kolesa +Date: Thu, 23 Jan 2020 19:49:43 +0100 +Subject: [PATCH xf86-video-mach64 1/4] avoid including VBE paths when not used + +--- + src/atipreinit.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git src/atipreinit.c src/atipreinit.c +index 96ec68f..be30141 100644 +--- src/atipreinit.c ++++ src/atipreinit.c +@@ -51,7 +51,9 @@ + #include "atixv.h" + #include "atiadjust.h" + ++#if !defined(AVOID_CPIO) || defined(TV_OUT) + #include "vbe.h" ++#endif + #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 + #include "xf86RAC.h" + #endif +@@ -572,7 +574,9 @@ ATIPreInit + return FALSE; + } + #endif ++#if !defined(AVOID_CPIO) || defined(TV_OUT) + ConfiguredMonitor = NULL; ++#endif + (void)memset(BIOS, 0, SizeOf(BIOS)); + + if (!(flags & PROBE_DETECT)) +-- +2.25.0 + diff --git a/srcpkgs/xf86-video-mach64/patches/0002-configure-Include-xorg-server.h-before-exa.h.patch b/srcpkgs/xf86-video-mach64/patches/0002-configure-Include-xorg-server.h-before-exa.h.patch new file mode 100644 index 0000000000..78048a409e --- /dev/null +++ b/srcpkgs/xf86-video-mach64/patches/0002-configure-Include-xorg-server.h-before-exa.h.patch @@ -0,0 +1,38 @@ +From ca72e41e15fb9b59b367cba2baca0d5467dcc8c7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= +Date: Fri, 5 Jul 2019 11:01:56 +0200 +Subject: [PATCH xf86-video-mach64 2/4] configure: Include xorg-server.h before + exa.h + +Fixes EXA detection spuriously failing with current xserver. +--- + configure.ac | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git configure.ac configure.ac +index d3933b2..b8b722b 100644 +--- configure.ac ++++ configure.ac +@@ -169,7 +169,8 @@ if test "x$EXA" = xyes; then + SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $XORG_CFLAGS" + AC_CHECK_HEADER(exa.h, +- [have_exa_h="yes"], [have_exa_h="no"]) ++ [have_exa_h="yes"], [have_exa_h="no"], ++ [#include ]) + CPPFLAGS="$SAVE_CPPFLAGS" + else + AC_MSG_RESULT(no) +@@ -180,7 +181,8 @@ CPPFLAGS="$CPPFLAGS $XORG_CFLAGS" + if test "x$have_exa_h" = xyes; then + AC_MSG_CHECKING([whether EXA version is at least 2.0.0]) + AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[ +-#include "exa.h" ++#include ++#include + #if EXA_VERSION_MAJOR < 2 + #error OLD EXA! + #endif +-- +2.25.0 + diff --git a/srcpkgs/xf86-video-mach64/patches/0003-Fix-debugging-traces.patch b/srcpkgs/xf86-video-mach64/patches/0003-Fix-debugging-traces.patch new file mode 100644 index 0000000000..3d1bc10738 --- /dev/null +++ b/srcpkgs/xf86-video-mach64/patches/0003-Fix-debugging-traces.patch @@ -0,0 +1,28 @@ +From 22200891efea69eb17772da8ae5e074860ba1ad4 Mon Sep 17 00:00:00 2001 +From: George Matsumura +Date: Sun, 6 Oct 2019 17:43:24 +0000 +Subject: [PATCH xf86-video-mach64 3/4] Fix debugging traces + +Without this change, the compiler emits an error about pPict being undefined when fallback messages are turned on. +--- + src/atimach64render.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git src/atimach64render.c src/atimach64render.c +index 8d259fa..e4ddea8 100644 +--- src/atimach64render.c ++++ src/atimach64render.c +@@ -701,8 +701,8 @@ Mach64PrepareComposite + break; + } + if (i == MACH64_NR_TEX_FORMATS) +- MACH64_FALLBACK(("Unsupported picture format 0x%x\n", +- (int)pPict->format)); ++ MACH64_FALLBACK(("Unsupported dst format 0x%x\n", ++ (int)pDstPicture->format)); + dstFormat = Mach64TexFormats[i].dstFormat; + + m3d->dp_pix_width = SetBits(dstFormat, DP_DST_PIX_WIDTH) | +-- +2.25.0 + diff --git a/srcpkgs/xf86-video-mach64/patches/0004-Fix-compositing-rotation.patch b/srcpkgs/xf86-video-mach64/patches/0004-Fix-compositing-rotation.patch new file mode 100644 index 0000000000..d82c35034e --- /dev/null +++ b/srcpkgs/xf86-video-mach64/patches/0004-Fix-compositing-rotation.patch @@ -0,0 +1,88 @@ +From fd9eef74b85d9280c90ba640b939effad9707f57 Mon Sep 17 00:00:00 2001 +From: George Matsumura +Date: Tue, 24 Dec 2019 06:12:01 +0000 +Subject: [PATCH xf86-video-mach64 4/4] Fix compositing rotation + +This corrects the composite operation's interpretation of a +source picture transformation matrix indicating rotation, +correcting a previous behavior where the source image was simply +flipped and not rotated. This is done by using a transformed vector +for each vertex of the source rectangle, instead of just two at +each of the diagonally opposed corner vertices. +--- + src/atimach64render.c | 44 +++++++++++++++++++++++-------------------- + 1 file changed, 24 insertions(+), 20 deletions(-) + +diff --git src/atimach64render.c src/atimach64render.c +index e4ddea8..e172546 100644 +--- src/atimach64render.c ++++ src/atimach64render.c +@@ -814,7 +814,10 @@ Mach64Composite + float ooa; + CARD32 col; + PictVector v; +- int srcXend, srcYend; ++ struct vertcoords { ++ int x; ++ int y; ++ } srcvert[4]; + float dxy = 0.0, dwh = 0.0; + + ATIDRISync(pScreenInfo); +@@ -830,22 +833,23 @@ Mach64Composite + } + + /* Handle transform */ +- srcXend = srcX + w; +- srcYend = srcY + h; ++ srcvert[0].x = srcX; ++ srcvert[0].y = srcY; ++ srcvert[1].x = srcX + w; ++ srcvert[1].y = srcY; ++ srcvert[2].x = srcX + w; ++ srcvert[2].y = srcY + h; ++ srcvert[3].x = srcX; ++ srcvert[3].y = srcY + h; + if (m3d->transform) { +- v.vector[0] = IntToxFixed(srcX); +- v.vector[1] = IntToxFixed(srcY); +- v.vector[2] = xFixed1; +- PictureTransformPoint(m3d->transform, &v); +- srcX = xFixedToInt(v.vector[0]); +- srcY = xFixedToInt(v.vector[1]); +- +- v.vector[0] = IntToxFixed(srcXend); +- v.vector[1] = IntToxFixed(srcYend); +- v.vector[2] = xFixed1; +- PictureTransformPoint(m3d->transform, &v); +- srcXend = xFixedToInt(v.vector[0]); +- srcYend = xFixedToInt(v.vector[1]); ++ for (int i = 0; i < 4; i++) { ++ v.vector[0] = IntToxFixed(srcvert[i].x); ++ v.vector[1] = IntToxFixed(srcvert[i].y); ++ v.vector[2] = xFixed1; ++ PictureTransformPoint(m3d->transform, &v); ++ srcvert[i].x = xFixedToInt(v.vector[0]); ++ srcvert[i].y = xFixedToInt(v.vector[1]); ++ } + + #if 0 + /* Bilinear needs manipulation of texture coordinates */ +@@ -857,10 +861,10 @@ Mach64Composite + } + + /* Create vertices in clock-wise order */ +- VTX_SET(v0, col, dstX, dstY, srcX, dxy, srcY, dxy); +- VTX_SET(v1, col, dstX + w, dstY, srcXend, dwh, srcY, dxy); +- VTX_SET(v2, col, dstX + w, dstY + h, srcXend, dwh, srcYend, dwh); +- VTX_SET(v3, col, dstX, dstY + h, srcX, dxy, srcYend, dwh); ++ VTX_SET(v0, col, dstX, dstY, srcvert[0].x, dxy, srcvert[0].y, dxy); ++ VTX_SET(v1, col, dstX + w, dstY, srcvert[1].x, dwh, srcvert[1].y, dxy); ++ VTX_SET(v2, col, dstX + w, dstY + h, srcvert[2].x, dwh, srcvert[2].y, dwh); ++ VTX_SET(v3, col, dstX, dstY + h, srcvert[3].x, dxy, srcvert[3].y, dwh); + + /* Setup upper triangle (v0, v1, v3) */ + VTX_OUT(v0, 1); +-- +2.25.0 + diff --git a/srcpkgs/xf86-video-mach64/template b/srcpkgs/xf86-video-mach64/template new file mode 100644 index 0000000000..4936efb78c --- /dev/null +++ b/srcpkgs/xf86-video-mach64/template @@ -0,0 +1,24 @@ +# Template file for 'xf86-video-mach64' +pkgname=xf86-video-mach64 +version=6.9.6 +revision=1 +build_style=gnu-configure +hostmakedepends="automake libtool pkg-config xorg-util-macros" +makedepends="xorgproto xorg-server-devel" +depends="virtual?xserver-abi-video-24_1" +short_desc="Xorg ATI Rage Pro video driver" +maintainer="q66 " +license="MIT" +homepage="https://wiki.freedesktop.org/xorg" +distfiles="${XORG_SITE}/driver/${pkgname}-${version}.tar.bz2" +checksum=7a0707c71bb522430f83bb5e9d9ee697e661e35534a3a2d10834f86b327a3c9c +lib32disabled=yes +LDFLAGS="-Wl,-z,lazy" + +pre_configure() { + autoreconf -if +} + +post_install() { + vlicense COPYING +}