From 89f97d561d94fde5c4c71875f92c39be4f45877aeb71c2f6d007668bff457cb9 Mon Sep 17 00:00:00 2001
From: Stefan Dirsch <sndirsch@suse.com>
Date: Wed, 11 Dec 2024 16:16:03 +0000
Subject: [PATCH 1/5] -
 0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch  
 0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch  
 0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch  
 0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch  
 0005-Fix-3-Wunused-but-set-variable-warnings.patch  
 0006-Fix-4-Wunused-variable-warnings.patch  
 0007-voodoo_find_dac-doesn-t-check-device_ids-2.patch  
 0008-use-XNFalloc-instead-of-xnfalloc.patch  
 0009-use-XNFcallocarray-instead-of-xnfcalloc-macro.patch  
 0010-bump-minimal-xorg-version-to-1.18.patch  
 0011-drop-compat-with-ancient-xserver-versions.patch  
 0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch  
 0013-Remove-XAA-support.patch   0014-drop-dead-code.patch  
 0015-drop-remains-of-old-compat-code.patch   * latest changes to fix build
 against current xserver

OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xf86-video-voodoo?expand=0&rev=15
---
 .gitattributes                                |  23 +
 .gitignore                                    |   1 +
 ...-libtool-is-installed-in-build-conta.patch |  38 +
 ..._INIT-from-libtool-2-instead-of-depr.patch |  38 +
 ...tandard-C-warning-flags-to-AM_CFLAGS.patch |  26 +
 ...-decls-from-xorg-os.h-fallbacks-for-.patch |  35 +
 ...-3-Wunused-but-set-variable-warnings.patch |  59 ++
 0006-Fix-4-Wunused-variable-warnings.patch    |  56 ++
 ..._find_dac-doesn-t-check-device_ids-2.patch |  31 +
 0008-use-XNFalloc-instead-of-xnfalloc.patch   |  30 +
 ...llocarray-instead-of-xnfcalloc-macro.patch |  39 +
 0010-bump-minimal-xorg-version-to-1.18.patch  |  30 +
 ...compat-with-ancient-xserver-versions.patch |  72 ++
 ...op-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch |  31 +
 0013-Remove-XAA-support.patch                 | 818 ++++++++++++++++++
 0014-drop-dead-code.patch                     |  92 ++
 0015-drop-remains-of-old-compat-code.patch    | 218 +++++
 xf86-video-voodoo-1.2.6.tar.xz                |   3 +
 xf86-video-voodoo-1.2.6.tar.xz.sig            | Bin 0 -> 543 bytes
 xf86-video-voodoo.changes                     |  74 ++
 xf86-video-voodoo.keyring                     |  59 ++
 xf86-video-voodoo.spec                        | 112 +++
 22 files changed, 1885 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
 create mode 100644 0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch
 create mode 100644 0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch
 create mode 100644 0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch
 create mode 100644 0005-Fix-3-Wunused-but-set-variable-warnings.patch
 create mode 100644 0006-Fix-4-Wunused-variable-warnings.patch
 create mode 100644 0007-voodoo_find_dac-doesn-t-check-device_ids-2.patch
 create mode 100644 0008-use-XNFalloc-instead-of-xnfalloc.patch
 create mode 100644 0009-use-XNFcallocarray-instead-of-xnfcalloc-macro.patch
 create mode 100644 0010-bump-minimal-xorg-version-to-1.18.patch
 create mode 100644 0011-drop-compat-with-ancient-xserver-versions.patch
 create mode 100644 0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch
 create mode 100644 0013-Remove-XAA-support.patch
 create mode 100644 0014-drop-dead-code.patch
 create mode 100644 0015-drop-remains-of-old-compat-code.patch
 create mode 100644 xf86-video-voodoo-1.2.6.tar.xz
 create mode 100644 xf86-video-voodoo-1.2.6.tar.xz.sig
 create mode 100644 xf86-video-voodoo.changes
 create mode 100644 xf86-video-voodoo.keyring
 create mode 100644 xf86-video-voodoo.spec

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9b03811
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,23 @@
+## Default LFS
+*.7z filter=lfs diff=lfs merge=lfs -text
+*.bsp filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gem filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.lz filter=lfs diff=lfs merge=lfs -text
+*.lzma filter=lfs diff=lfs merge=lfs -text
+*.obscpio filter=lfs diff=lfs merge=lfs -text
+*.oxt filter=lfs diff=lfs merge=lfs -text
+*.pdf filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.rpm filter=lfs diff=lfs merge=lfs -text
+*.tbz filter=lfs diff=lfs merge=lfs -text
+*.tbz2 filter=lfs diff=lfs merge=lfs -text
+*.tgz filter=lfs diff=lfs merge=lfs -text
+*.ttf filter=lfs diff=lfs merge=lfs -text
+*.txz filter=lfs diff=lfs merge=lfs -text
+*.whl filter=lfs diff=lfs merge=lfs -text
+*.xz filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.zst filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..57affb6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.osc
diff --git a/0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch b/0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
new file mode 100644
index 0000000..ca2db4e
--- /dev/null
+++ b/0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
@@ -0,0 +1,38 @@
+From 59113321b1eb9b5d476861a0ff82b08cd534365c Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Fri, 6 Oct 2023 14:36:33 -0700
+Subject: [PATCH 01/15] gitlab CI: ensure libtool is installed in build
+ container
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ .gitlab-ci.yml | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
+index 35a3702..564e281 100644
+--- a/.gitlab-ci.yml
++++ b/.gitlab-ci.yml
+@@ -4,7 +4,7 @@
+ # Please see the ci-templates documentation for details:
+ # https://freedesktop.pages.freedesktop.org/ci-templates/
+ 
+-.templates_sha: &template_sha 34f4ade99434043f88e164933f570301fd18b125 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
++.templates_sha: &template_sha 25e8e9f020880aa35fffe3d6b259b933f0f9449f # see https://docs.gitlab.com/ee/ci/yaml/#includefile
+ 
+ 
+ include:
+@@ -30,8 +30,8 @@ variables:
+   # The tag should be updated each time the list of packages is updated.
+   # Changing a tag forces the associated image to be rebuilt.
+   # Note: the tag has no meaning, we use a date format purely for readability
+-  FDO_DISTRIBUTION_TAG:  '2022-01-30.0'
+-  FDO_DISTRIBUTION_PACKAGES:  'git gcc pkgconf autoconf automake make xorg-util-macros xorgproto xorg-server-devel pixman libpciaccess'
++  FDO_DISTRIBUTION_TAG:  '2023-10-06.0'
++  FDO_DISTRIBUTION_PACKAGES:  'git gcc pkgconf autoconf automake libtool make xorg-util-macros xorgproto xorg-server-devel pixman libpciaccess'
+ 
+ 
+ #
+-- 
+2.43.0
+
diff --git a/0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch b/0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch
new file mode 100644
index 0000000..f7d83da
--- /dev/null
+++ b/0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch
@@ -0,0 +1,38 @@
+From f1434139a366539ef632ad1aec4764a8c89f2f99 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Mon, 15 Jan 2024 11:33:07 -0800
+Subject: [PATCH 02/15] configure: Use LT_INIT from libtool 2 instead of
+ deprecated AC_PROG_LIBTOOL
+
+AC_PROG_LIBTOOL was replaced by LT_INIT in libtool 2 in 2008,
+so it's time to rely on it.
+
+Clears autoconf warnings:
+
+configure.ac:44: warning: The macro 'AC_PROG_LIBTOOL' is obsolete.
+configure.ac:44: You should run autoupdate.
+aclocal.m4:3515: AC_PROG_LIBTOOL is expanded from...
+configure.ac:44: the top level
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ configure.ac | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index bd48b58..b7a711b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -40,8 +40,7 @@ XORG_MACROS_VERSION(1.8)
+ XORG_DEFAULT_OPTIONS
+ 
+ # Initialize libtool
+-AC_DISABLE_STATIC
+-AC_PROG_LIBTOOL
++LT_INIT([disable-static])
+ 
+ AH_TOP([#include "xorg-server.h"])
+ 
+-- 
+2.43.0
+
diff --git a/0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch b/0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch
new file mode 100644
index 0000000..3525c8a
--- /dev/null
+++ b/0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch
@@ -0,0 +1,26 @@
+From 2495db60d9c163941e1ae4b89982ecb8ce4e954a Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Mon, 15 Jan 2024 11:38:33 -0800
+Subject: [PATCH 03/15] Add X.Org's standard C warning flags to AM_CFLAGS
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ src/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index c145c27..7a6d4d9 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -23,7 +23,7 @@
+ # -avoid-version prevents gratuitous .0.0.0 version numbers on the end
+ # _ladir passes a dummy rpath to libtool so the thing will actually link
+ # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
+-AM_CFLAGS = @XORG_CFLAGS@
++AM_CFLAGS = $(BASE_CFLAGS) $(XORG_CFLAGS)
+ voodoo_drv_la_LTLIBRARIES = voodoo_drv.la
+ voodoo_drv_la_LDFLAGS = -module -avoid-version
+ voodoo_drv_ladir = @moduledir@/drivers
+-- 
+2.43.0
+
diff --git a/0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch b/0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch
new file mode 100644
index 0000000..d43491d
--- /dev/null
+++ b/0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch
@@ -0,0 +1,35 @@
+From cfe1fcb4eefba66243ecf1336e38f4e77a491cff Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Mon, 15 Jan 2024 11:44:21 -0800
+Subject: [PATCH 04/15] Quiet -Wredundant-decls from xorg/os.h fallbacks for
+ new libc functions
+
+The Xorg headers provide their own versions of strlcat, strlcpy, and
+timingsafe_memcmp for platforms that don't have them in libc yet, but
+rely on configure to set HAVE_* defines to determine if they should be
+defined in the headers.
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ configure.ac | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index b7a711b..fe407d7 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -63,7 +63,10 @@ PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
+                   HAVE_XEXTPROTO_71="no")
+ AM_CONDITIONAL(HAVE_XEXTPROTO_71, [ test "$HAVE_XEXTPROTO_71" = "yes" ])
+ 
+-# Checks for libraries.
++# Checks for library functions
++# We don't use strlcat, strlcpy, or timingsafe_memcmp, but check to quiet
++# -Wredundant-decls warning from xorg/os.h which will otherwise redefine them.
++AC_CHECK_FUNCS([strlcat strlcpy timingsafe_memcmp])
+ 
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
+-- 
+2.43.0
+
diff --git a/0005-Fix-3-Wunused-but-set-variable-warnings.patch b/0005-Fix-3-Wunused-but-set-variable-warnings.patch
new file mode 100644
index 0000000..e4538d2
--- /dev/null
+++ b/0005-Fix-3-Wunused-but-set-variable-warnings.patch
@@ -0,0 +1,59 @@
+From ead68c88de422c82004715403776ec0d21c6d6aa Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue, 16 Jan 2024 16:27:27 -0800
+Subject: [PATCH 05/15] Fix 3 -Wunused-but-set-variable warnings
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ src/voodoo_dga.c    | 5 -----
+ src/voodoo_driver.c | 4 ----
+ 2 files changed, 9 deletions(-)
+
+diff --git a/src/voodoo_dga.c b/src/voodoo_dga.c
+index c30c5c2..76da169 100644
+--- a/src/voodoo_dga.c
++++ b/src/voodoo_dga.c
+@@ -91,18 +91,13 @@ static Bool VoodooDGASetMode(ScrnInfoPtr pScrn, DGAModePtr pDGAMode)
+ {
+     DisplayModePtr pMode;
+     int scrnIdx = pScrn->pScreen->myNum;
+-    int frameX0, frameY0;
+ 
+     if (pDGAMode) {
+ 	pMode = pDGAMode->mode;
+-	frameX0 = frameY0 = 0;
+     }
+     else {
+ 	if (!(pMode = pScrn->currentMode))
+ 	    return TRUE;
+-
+-	frameX0 = pScrn->frameX0;
+-	frameY0 = pScrn->frameY0;
+     }
+ 
+     if (!(*pScrn->SwitchMode)(SWITCH_MODE_ARGS(pScrn, pMode)))
+diff --git a/src/voodoo_driver.c b/src/voodoo_driver.c
+index 11bf2cf..456152f 100644
+--- a/src/voodoo_driver.c
++++ b/src/voodoo_driver.c
+@@ -834,7 +834,6 @@ static Bool
+ VoodooModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ {
+   VoodooPtr pVoo;
+-  int width, height;
+ 
+   pVoo = VoodooPTR(pScrn);
+ 
+@@ -860,9 +859,6 @@ VoodooModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
+     return FALSE;
+   }
+ 
+-  width = mode->HDisplay;
+-  height = mode->VDisplay;
+-
+   /* Initialize the video card */
+   if(VoodooMode(pScrn, mode))
+   {
+-- 
+2.43.0
+
diff --git a/0006-Fix-4-Wunused-variable-warnings.patch b/0006-Fix-4-Wunused-variable-warnings.patch
new file mode 100644
index 0000000..2bd8e48
--- /dev/null
+++ b/0006-Fix-4-Wunused-variable-warnings.patch
@@ -0,0 +1,56 @@
+From a2b65b4bca30a9805e4757e5e05860aa00d56483 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue, 16 Jan 2024 16:30:18 -0800
+Subject: [PATCH 06/15] Fix 4 -Wunused-variable warnings
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ src/voodoo_dga.c      | 1 -
+ src/voodoo_hardware.c | 4 +++-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/voodoo_dga.c b/src/voodoo_dga.c
+index 76da169..a13c9e7 100644
+--- a/src/voodoo_dga.c
++++ b/src/voodoo_dga.c
+@@ -90,7 +90,6 @@ static Bool VoodooDGAOpenFramebuffer(ScrnInfoPtr pScrn, char **DeviceName,
+ static Bool VoodooDGASetMode(ScrnInfoPtr pScrn, DGAModePtr pDGAMode)
+ {
+     DisplayModePtr pMode;
+-    int scrnIdx = pScrn->pScreen->myNum;
+ 
+     if (pDGAMode) {
+ 	pMode = pDGAMode->mode;
+diff --git a/src/voodoo_hardware.c b/src/voodoo_hardware.c
+index c360263..8dcfb63 100644
+--- a/src/voodoo_hardware.c
++++ b/src/voodoo_hardware.c
+@@ -84,8 +84,8 @@ static Bool VoodooSetupForCPUToScreenTexture(ScrnInfoPtr pScrn, int op,
+ static void VoodooSubsequentCPUToScreenTexture(ScrnInfoPtr pScrn,
+ 	int dstx, int dsty, int srcx, int srcy, int width, int height);
+ 
+-#endif
+ static int debug = 0;
++#endif
+ 
+ /*
+  *	Big endian might need to byteswap these ?
+@@ -866,6 +866,7 @@ static void VoodooReadWriteBank(ScreenPtr pScreen, int bank)
+ }
+ #endif
+ 
++#ifdef HAVE_XAA_H
+ /*
+  *	We normally want to load all four rop variants at once so
+  *	the table is the 16bits for the lot equal.
+@@ -912,6 +913,7 @@ static CARD16 tropxlate[16] = {
+ 	0xAA77,		/* GXnand */
+ 	0xAAFF		/* GXset */
+ };
++#endif
+ 
+ 	
+ void VoodooSync(ScrnInfoPtr pScrn)
+-- 
+2.43.0
+
diff --git a/0007-voodoo_find_dac-doesn-t-check-device_ids-2.patch b/0007-voodoo_find_dac-doesn-t-check-device_ids-2.patch
new file mode 100644
index 0000000..23934fb
--- /dev/null
+++ b/0007-voodoo_find_dac-doesn-t-check-device_ids-2.patch
@@ -0,0 +1,31 @@
+From 3065954a83c966901baecf686619e6679833632f Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Tue, 16 Jan 2024 16:38:58 -0800
+Subject: [PATCH 07/15] voodoo_find_dac doesn't check device_ids (#2)
+
+Closes: #2
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+---
+ src/voodoo_hardware.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/voodoo_hardware.c b/src/voodoo_hardware.c
+index 8dcfb63..d1463e7 100644
+--- a/src/voodoo_hardware.c
++++ b/src/voodoo_hardware.c
+@@ -389,10 +389,10 @@ static int voodoo_find_dac(VoodooPtr pVoo)
+ 	device_id = dac_in(pVoo, 2);
+ 	
+ 	/* AT&T 20C409 and clones */
+-	if(vendor_id == DAC_VENDOR_ATT && DAC_DEVICE_ATT20C409)
++	if(vendor_id == DAC_VENDOR_ATT && device_id == DAC_DEVICE_ATT20C409)
+ 		return DAC_ID_ATT;
+ 		
+-	if(vendor_id == DAC_VENDOR_TI && DAC_DEVICE_TITVP3409)
++	if(vendor_id == DAC_VENDOR_TI && device_id == DAC_DEVICE_TITVP3409)
+ 		return DAC_ID_TI;
+ 		
+ 	/* ICS5432 doesn't implement the back door. Glide does some
+-- 
+2.43.0
+
diff --git a/0008-use-XNFalloc-instead-of-xnfalloc.patch b/0008-use-XNFalloc-instead-of-xnfalloc.patch
new file mode 100644
index 0000000..94c7be3
--- /dev/null
+++ b/0008-use-XNFalloc-instead-of-xnfalloc.patch
@@ -0,0 +1,30 @@
+From 7f0ef65c8b7735152689085deb7556e03ab63a10 Mon Sep 17 00:00:00 2001
+From: "Enrico Weigelt, metux IT consult" <info@metux.net>
+Date: Wed, 8 May 2024 13:20:10 +0200
+Subject: [PATCH 08/15] use XNFalloc() instead of xnfalloc
+
+xnfalloc is just an alias for XNFalloc() that doesn't seem to serve
+any practical purpose, so it can go away once all drivers stopped using it.
+
+Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
+Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/merge_requests/6>
+---
+ src/voodoo_driver.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/voodoo_driver.c b/src/voodoo_driver.c
+index 456152f..377da32 100644
+--- a/src/voodoo_driver.c
++++ b/src/voodoo_driver.c
+@@ -627,7 +627,7 @@ VoodooScreenInit(SCREEN_INIT_ARGS_DECL)
+   if(pVoo->ShadowFB)
+   {
+     pVoo->ShadowPitch = ((pScrn->virtualX * pScrn->bitsPerPixel >> 3) + 3) & ~3L;
+-    pVoo->ShadowPtr = xnfalloc(pVoo->ShadowPitch * pScrn->virtualY);
++    pVoo->ShadowPtr = XNFalloc(pVoo->ShadowPitch * pScrn->virtualY);
+     FBStart = pVoo->ShadowPtr;
+     displayWidth = pScrn->virtualX;
+   }
+-- 
+2.43.0
+
diff --git a/0009-use-XNFcallocarray-instead-of-xnfcalloc-macro.patch b/0009-use-XNFcallocarray-instead-of-xnfcalloc-macro.patch
new file mode 100644
index 0000000..1315864
--- /dev/null
+++ b/0009-use-XNFcallocarray-instead-of-xnfcalloc-macro.patch
@@ -0,0 +1,39 @@
+From 2da59302a2fe1a16225af4e7da9ef5b00727a663 Mon Sep 17 00:00:00 2001
+From: "Enrico Weigelt, metux IT consult" <info@metux.net>
+Date: Wed, 8 May 2024 17:27:13 +0200
+Subject: [PATCH 09/15] use XNFcallocarray() instead of xnfcalloc macro
+
+xnfcalloc is just an alias for XNFcallocarray() that doesn't seem to serve
+any practical purpose, so it can go away once all drivers stopped using it.
+
+Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
+Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/merge_requests/6>
+---
+ src/voodoo_driver.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/voodoo_driver.c b/src/voodoo_driver.c
+index 377da32..559fdc8 100644
+--- a/src/voodoo_driver.c
++++ b/src/voodoo_driver.c
+@@ -182,7 +182,7 @@ VoodooGetRec(ScrnInfoPtr pScrn)
+   if (pScrn->driverPrivate != NULL)
+     return TRUE;
+ 
+-  pScrn->driverPrivate = xnfcalloc(sizeof(VoodooRec), 1);
++  pScrn->driverPrivate = XNFcallocarray(sizeof(VoodooRec), 1);
+ 
+   /* Initialize it */
+   /* No init here yet */
+@@ -480,7 +480,7 @@ VoodooPreInit(ScrnInfoPtr pScrn, int flags)
+ 
+   /* Set up clock ranges so that the xf86ValidateModes() function will not fail a mode because of the clock
+      requirement (because we don't use the clock value anyway) */
+-  clockRanges = xnfcalloc(sizeof(ClockRange), 1);
++  clockRanges = XNFcallocarray(sizeof(ClockRange), 1);
+   clockRanges->next = NULL;
+   clockRanges->minClock = 10000;
+   clockRanges->maxClock = 250000;	/* 250MHz DAC */
+-- 
+2.43.0
+
diff --git a/0010-bump-minimal-xorg-version-to-1.18.patch b/0010-bump-minimal-xorg-version-to-1.18.patch
new file mode 100644
index 0000000..5a4dbd8
--- /dev/null
+++ b/0010-bump-minimal-xorg-version-to-1.18.patch
@@ -0,0 +1,30 @@
+From 12b735fe2cd084f9c135792f55e7cfc8c1bc5339 Mon Sep 17 00:00:00 2001
+From: "Enrico Weigelt, metux IT consult" <info@metux.net>
+Date: Tue, 14 May 2024 16:30:38 +0200
+Subject: [PATCH 10/15] bump minimal xorg version to 1.18
+
+1.18 was released a decade ago, so it seems reasonable stop supporting
+older ones.
+
+Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
+Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/merge_requests/7>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index fe407d7..c1e826f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -57,7 +57,7 @@ XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
+ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
+ 
+ # Obtain compiler/linker options for the driver dependencies
+-PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto fontsproto xf86dgaproto $REQUIRED_MODULES])
++PKG_CHECK_MODULES(XORG, [xorg-server >= 1.18 xproto fontsproto xf86dgaproto $REQUIRED_MODULES])
+ PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
+                   HAVE_XEXTPROTO_71="yes"; AC_DEFINE(HAVE_XEXTPROTO_71, 1, [xextproto 7.1 available]),
+                   HAVE_XEXTPROTO_71="no")
+-- 
+2.43.0
+
diff --git a/0011-drop-compat-with-ancient-xserver-versions.patch b/0011-drop-compat-with-ancient-xserver-versions.patch
new file mode 100644
index 0000000..2e27a2d
--- /dev/null
+++ b/0011-drop-compat-with-ancient-xserver-versions.patch
@@ -0,0 +1,72 @@
+From deeaf931fe2451cd2589959368bea5c4c1bb503e Mon Sep 17 00:00:00 2001
+From: "Enrico Weigelt, metux IT consult" <info@metux.net>
+Date: Tue, 14 May 2024 16:31:01 +0200
+Subject: [PATCH 11/15] drop compat with ancient xserver versions
+
+We're relying on at least 1.18 now.
+
+Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
+Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/merge_requests/7>
+---
+ src/compat-api.h | 41 -----------------------------------------
+ 1 file changed, 41 deletions(-)
+
+diff --git a/src/compat-api.h b/src/compat-api.h
+index 6bc946f..2376b25 100644
+--- a/src/compat-api.h
++++ b/src/compat-api.h
+@@ -28,45 +28,6 @@
+ #ifndef COMPAT_API_H
+ #define COMPAT_API_H
+ 
+-#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
+-#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
+-#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
+-#endif
+-
+-#ifndef XF86_HAS_SCRN_CONV
+-#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
+-#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
+-#endif
+-
+-#ifndef XF86_SCRN_INTERFACE
+-
+-#define SCRN_ARG_TYPE int
+-#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
+-
+-#define SCREEN_ARG_TYPE int
+-#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
+-
+-#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv
+-
+-#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
+-#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
+-
+-#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
+-#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
+-
+-#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
+-#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0
+-
+-#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+-#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0
+-
+-#define FREE_SCREEN_ARGS_DECL int arg, int flags
+-
+-#define VT_FUNC_ARGS_DECL int arg, int flags
+-#define VT_FUNC_ARGS pScrn->scrnIndex, 0
+-
+-#define XF86_SCRN_ARG(x) ((x)->scrnIndex)
+-#else
+ #define SCRN_ARG_TYPE ScrnInfoPtr
+ #define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
+ 
+@@ -95,5 +56,3 @@
+ #define XF86_SCRN_ARG(x) (x)
+ 
+ #endif
+-
+-#endif
+-- 
+2.43.0
+
diff --git a/0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch b/0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch
new file mode 100644
index 0000000..6d30f7a
--- /dev/null
+++ b/0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch
@@ -0,0 +1,31 @@
+From 014923aa853a50f9afe07d900f6bc6f006f78e91 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed, 22 May 2024 18:51:20 -0700
+Subject: [PATCH 12/15] Drop ifdefs for ABI_VIDEODRV_VERSION < 6
+
+ABI_VIDEODRV_VERSION 6 shipped in Xserver 1.7, less than our new minimum
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/merge_requests/8>
+---
+ src/voodoo_driver.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/src/voodoo_driver.c b/src/voodoo_driver.c
+index 559fdc8..01c2710 100644
+--- a/src/voodoo_driver.c
++++ b/src/voodoo_driver.c
+@@ -53,10 +53,6 @@
+ #include "xf86Pci.h"
+ #include "xf86cmap.h"
+ #include "shadowfb.h"
+-#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
+-#include "xf86RAC.h"
+-#include "xf86Resources.h"
+-#endif
+ #include "compiler.h"
+ #ifdef HAVE_XAA_H
+ #include "xaa.h"
+-- 
+2.43.0
+
diff --git a/0013-Remove-XAA-support.patch b/0013-Remove-XAA-support.patch
new file mode 100644
index 0000000..63be53a
--- /dev/null
+++ b/0013-Remove-XAA-support.patch
@@ -0,0 +1,818 @@
+From 38537b4dffdcba1dfde99f3e7106a5c23c9859b3 Mon Sep 17 00:00:00 2001
+From: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Wed, 22 May 2024 19:02:40 -0700
+Subject: [PATCH 13/15] Remove XAA support
+
+Mostly done via unifdef -UHAVE_XAA_H, followed by minor manual editing
+
+Since recent commits require xserver-1.18.0 or later to build against,
+there's no reason leaving behind big chunks of code that can only build
+against the XAA support removed in xserver-1.13.0 (released in 2012).
+
+Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/merge_requests/8>
+---
+ configure.ac          |  18 --
+ src/voodoo.h          |  10 -
+ src/voodoo_dga.c      |   3 -
+ src/voodoo_driver.c   |  19 +-
+ src/voodoo_hardware.c | 629 ------------------------------------------
+ 5 files changed, 4 insertions(+), 675 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c1e826f..827d293 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -84,24 +84,6 @@ fi
+ AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
+ 
+ 
+-AC_ARG_ENABLE(xaa,
+-              AS_HELP_STRING([--enable-xaa],
+-                             [Enable legacy X Acceleration Architecture (XAA) [default=auto]]),
+-              [XAA="$enableval"],
+-              [XAA=auto])
+-if test "x$XAA" != xno; then
+-        save_CFLAGS=$CFLAGS
+-        save_CPPFLAGS=$CPPFLAGS
+-        CFLAGS=$XORG_CFLAGS
+-        CPPFLAGS="$XORG_CFLAGS"
+-        AC_CHECK_HEADERS([xaa.h], XAA=yes, XAA=no)
+-        CFLAGS=$save_CFLAGS
+-        CPPFLAGS=$save_CPPFLAGS
+-fi
+-AC_MSG_CHECKING([whether to include XAA support])
+-AM_CONDITIONAL(XAA, test "x$XAA" = xyes)
+-AC_MSG_RESULT([$XAA])
+-
+ AC_SUBST([moduledir])
+ 
+ DRIVER_NAME=voodoo
+diff --git a/src/voodoo.h b/src/voodoo.h
+index 846ce66..772b3b6 100644
+--- a/src/voodoo.h
++++ b/src/voodoo.h
+@@ -13,9 +13,6 @@ typedef struct {
+   CARD8 *             ShadowPtr;	/* Shadow buffer */
+   CARD32              ShadowPitch;
+   CloseScreenProcPtr  CloseScreen;	/* Wrapped Close */
+-#ifdef HAVE_XAA_H
+-  XAAInfoRecPtr	      AccelInfoRec;	/* Cached Accel rec for close */
+-#endif
+   Bool                Blanked;
+   Bool                PassThrough;     /* Set to restore pass through on exit */
+   EntityInfoPtr       pEnt;
+@@ -33,9 +30,6 @@ typedef struct {
+   CARD32	      FullHeight;	/* Height including pixmap cache */
+   CARD32	      Tiles;		/* 32 tile count */
+   
+-  int		      BlitDirX;		/* Cache blitter direction */
+-  int		      BlitDirY;		/* Cache blitter direction */
+-  
+   CARD32	      lfbMode;		/* Cached lfbMode value */
+ 
+   CARD32	      alpha;		/* Cached alpha reg for sw blit */
+@@ -71,9 +65,6 @@ typedef struct {
+ 
+   PLLClock	      vClock;
+   PLLClock	      gClock;
+-  
+-  unsigned char	      LineBuffer[1028];	/* Draw buffer */
+-  unsigned char       *LinePtr;		/* To keep XAA amused */  
+ } VoodooRec, *VoodooPtr;
+ 
+ #define TRUE 1
+@@ -105,7 +96,6 @@ extern int VoodooHardwareInit(VoodooPtr pVoo);
+ extern int VoodooMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
+ extern void VoodooBlank(VoodooPtr pVoo);
+ extern int VoodooMemorySize(VoodooPtr pVoo);
+-extern void Voodoo2XAAInit(ScreenPtr pScreen);
+ extern void VoodooSync(ScrnInfoPtr pScrn);
+ extern void VoodooReadBank(ScreenPtr pScreen, int bank);
+ extern void VoodooWriteBank(ScreenPtr pScreen, int bank);
+diff --git a/src/voodoo_dga.c b/src/voodoo_dga.c
+index a13c9e7..b0865dc 100644
+--- a/src/voodoo_dga.c
++++ b/src/voodoo_dga.c
+@@ -47,9 +47,6 @@
+ #include "vgaHW.h"
+ #include "compiler.h"
+ #include "dgaproc.h"
+-#ifdef HAVE_XAA_H
+-#include "xaa.h"
+-#endif
+ #include "voodoo.h"
+ 
+ #define _XF86DGA_SERVER_
+diff --git a/src/voodoo_driver.c b/src/voodoo_driver.c
+index 01c2710..88de297 100644
+--- a/src/voodoo_driver.c
++++ b/src/voodoo_driver.c
+@@ -54,9 +54,6 @@
+ #include "xf86cmap.h"
+ #include "shadowfb.h"
+ #include "compiler.h"
+-#ifdef HAVE_XAA_H
+-#include "xaa.h"
+-#endif
+ #include "voodoo.h"
+ 
+ #define _XF86DGA_SERVER_
+@@ -555,11 +552,10 @@ VoodooPreInit(ScrnInfoPtr pScrn, int flags)
+     return FALSE;
+   }
+ 
+-  if (!xf86LoadSubModule(pScrn, "xaa")) {
+-      xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Falling back to shadowfb\n");
+-      pVoo->Accel = 0;
+-      pVoo->ShadowFB = 1;
+-  }
++  /* No acceleration support since XAA was removed */
++  xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Falling back to shadowfb\n");
++  pVoo->Accel = 0;
++  pVoo->ShadowFB = 1;
+   
+   if(pVoo->ShadowFB)
+   {
+@@ -672,9 +668,6 @@ VoodooScreenInit(SCREEN_INIT_ARGS_DECL)
+     VoodooDGAInit(pScrn, pScreen);
+ 
+   /* Activate accelerations */
+-  if(pVoo->Accel)
+-  	Voodoo2XAAInit(pScreen);
+-
+   xf86SetBackingStore(pScreen);
+   
+ 
+@@ -764,10 +757,6 @@ VoodooCloseScreen(CLOSE_SCREEN_ARGS_DECL)
+       VoodooRestore(pScrn, TRUE);
+   if(pVoo->ShadowPtr)
+       free(pVoo->ShadowPtr);
+-#ifdef HAVE_XAA_H
+-  if(pVoo->AccelInfoRec)
+-      free(pVoo->AccelInfoRec);
+-#endif
+   if (pVoo->pDGAMode) {
+     free(pVoo->pDGAMode);
+     pVoo->pDGAMode = NULL;
+diff --git a/src/voodoo_hardware.c b/src/voodoo_hardware.c
+index d1463e7..be33dd8 100644
+--- a/src/voodoo_hardware.c
++++ b/src/voodoo_hardware.c
+@@ -48,10 +48,6 @@
+ #include "vgaHW.h"
+ #include "compiler.h"
+ 
+-#ifdef HAVE_XAA_H
+-#include "xaa.h"
+-#endif
+-
+ #include "voodoo.h"
+ 
+ #include <X11/extensions/xf86dgaproto.h>
+@@ -69,23 +65,6 @@
+ 
+ #include <unistd.h>
+ 
+-#ifdef HAVE_XAA_H
+-#if 0
+-static void VoodooReadWriteBank(ScreenPtr pScreen, int bank);
+-#endif
+-static Bool VoodooSetupForCPUToScreenAlphaTexture(ScrnInfoPtr pScrn, int op,
+-	CARD16 red, CARD16 green, CARD16 blue, CARD16 alpha, int alphaType,
+-	CARD8 *alphaPtr, int alphaPitch, int width, int height, int flags);
+-static void VoodooSubsequentCPUToScreenAlphaTexture(ScrnInfoPtr pScrn,
+-	int dstx, int dsty, int srcx, int srcy, int width, int height);
+-static Bool VoodooSetupForCPUToScreenTexture(ScrnInfoPtr pScrn, int op,
+-	int texType, CARD8 *texPtr, int texPitch, int width, int height,
+-	int flags);
+-static void VoodooSubsequentCPUToScreenTexture(ScrnInfoPtr pScrn,
+-	int dstx, int dsty, int srcx, int srcy, int width, int height);
+-
+-static int debug = 0;
+-#endif
+ 
+ /*
+  *	Big endian might need to byteswap these ?
+@@ -865,56 +844,6 @@ static void VoodooReadWriteBank(ScreenPtr pScreen, int bank)
+ 	mmio32_w(pVoo, 0x114, pVoo->lfbMode);
+ }
+ #endif
+-
+-#ifdef HAVE_XAA_H
+-/*
+- *	We normally want to load all four rop variants at once so
+- *	the table is the 16bits for the lot equal.
+- */
+-
+-static CARD16 ropxlate[16] = {
+-	0x0000, 	/* GXclear */
+-	0x8888,		/* GXand */
+-	0x4444,		/* GXandReverse */
+-	0xCCCC,		/* GXcopy */
+-	0x2222,		/* GXandInverted */
+-	0xAAAA,		/* GXnop */
+-	0x6666,		/* GXxor */
+-	0xEEEE,		/* GXor */
+-	0x1111,		/* GXnor */
+-	0x9999,		/* GXequiv */
+-	0x5555,		/* GXinvert */
+-	0xDDDD,		/* GXorReverse */
+-	0x3333,		/* GXcopyInverted */
+-	0xBBBB,		/* GXorInverted */
+-	0x7777,		/* GXnand */
+-	0xFFFF		/* GXset */
+-};
+-
+-/*
+- *	Transparent mask rops
+- */
+-
+-static CARD16 tropxlate[16] = {
+-	0xAA00, 	/* GXclear */
+-	0xAA88,		/* GXand */
+-	0xAA44,		/* GXandReverse */
+-	0xAACC,		/* GXcopy */
+-	0xAA22,		/* GXandInverted */
+-	0xAAAA,		/* GXnop */
+-	0xAA66,		/* GXxor */
+-	0xAAEE,		/* GXor */
+-	0xAA11,		/* GXnor */
+-	0xAA99,		/* GXequiv */
+-	0xAA55,		/* GXinvert */
+-	0xAADD,		/* GXorReverse */
+-	0xAA33,		/* GXcopyInverted */
+-	0xAABB,		/* GXorInverted */
+-	0xAA77,		/* GXnand */
+-	0xAAFF		/* GXset */
+-};
+-#endif
+-
+ 	
+ void VoodooSync(ScrnInfoPtr pScrn)
+ {
+@@ -923,561 +852,3 @@ void VoodooSync(ScrnInfoPtr pScrn)
+ 	wait_idle(pVoo);
+ 	mmio32_w(pVoo, 0x10C, 0);	/* Maybe flag this */
+ }
+-
+-#ifdef HAVE_XAA_H
+-static void Voodoo2Setup2D(VoodooPtr pVoo)
+-{
+-	wait_idle(pVoo);
+-}
+-
+-static void Voodoo2SetupForScreenToScreenCopy(ScrnInfoPtr pScrn,
+-			int xdir, int ydir, int rop,
+-			unsigned int planemask,
+-			int trans_color)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	Voodoo2Setup2D(pVoo);
+-	pVoo->BlitDirX = xdir;
+-	pVoo->BlitDirY = ydir;
+-	
+-	if(trans_color == -1)
+-	{
+-		mmio32_w_chuck(pVoo, 0x2EC, ropxlate[rop]);	/* Set the rop */
+-		mmio32_w_chuck(pVoo, 0x2F8, 0 | (1<<14) | (1<<15) | (1<<16));	/* 16bpp no color compare */
+-	}
+-	else
+-	{
+-		mmio32_w_chuck(pVoo, 0x2EC, tropxlate[rop]);	 /* Transparent src rop */
+-		mmio32_w_chuck(pVoo, 0x2CC, (trans_color << 16) | trans_color);	/* Match transparent colour */
+-		mmio32_w_chuck(pVoo, 0x2F8, 0 | (1<<10) | (1<<14) | (1<<15) | (1<<16));	/* 16bpp color compare */
+-	}
+-}
+-
+-static void Voodoo2SubsequentScreenToScreenCopy(ScrnInfoPtr pScrn,
+-			int x1, int y1,
+-			int x2, int y2,
+-			int width, int height)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	wait_idle(pVoo);
+-	/* Adjust coordinates for backward blits */
+-	height --;	/* Adjust for fenceposting in the hardware */
+-	width --;
+-	if(pVoo->BlitDirY < 0)
+-	{
+-		y1 += height;
+-		y2 += height;
+-		height = -height;
+-	}
+-	if(pVoo->BlitDirY < 0)
+-	{
+-		x1 += width;
+-		x2 += width;
+-		width = -width;
+-	}
+-	mmio32_w_chuck(pVoo, 0x2E0, (y1 << 16) | x1);  /* Src x/y */
+-	mmio32_w_chuck(pVoo, 0x2E4, (y2 << 16) | x2);  /* Dst x/y */
+-	/* Set size and fire */
+-	height &= 0xFFF;
+-	width  &= 0xFFF;
+-	mmio32_w_chuck(pVoo, 0x2E8, (height << 16) | width | (1<<31));
+-}
+-
+-static void Voodoo2SetupForSolidFill(ScrnInfoPtr pScrn, int color,
+-			int rop, unsigned int planemask)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	if (debug)
+-	    ErrorF("Setup for solid fill colour %04X, rop %d, Mask %04X.\n",
+-		   color, rop, planemask);
+-	Voodoo2Setup2D(pVoo);
+-	mmio32_w_chuck(pVoo, 0x2EC, ropxlate[rop]); 	/* rop */
+-	mmio32_w_chuck(pVoo, 0x2F0, color);		/* fg color */
+-	mmio32_w_chuck(pVoo, 0x2F8, 2 | (1<<14) | (1<<15) | (0/*1*/<<16)); /* Solid fill 16bpp front */
+-}
+-
+-static void Voodoo2SubsequentSolidFillRect(ScrnInfoPtr pScrn, int x, int y, 
+-			int w, int h)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	if (debug)
+-	    ErrorF("Fill (%d, %d) for (%d, %d)\n", x, y, w, h);
+-	wait_idle(pVoo);
+-	mmio32_w_chuck(pVoo, 0x2E4, (y<<16) | x);	/* Dst x,y */
+-	/* Set size and fire */
+-	mmio32_w_chuck(pVoo, 0x2E8, ((h-1) << 16) | (w-1) | (1<<31));
+-}
+-
+-
+-/*
+- *	Colour expand fills are standard hardware goodies
+- */
+- 
+-static void Voodoo2SetupForScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
+-			int fg, int bg,
+-			int rop,
+-			unsigned int planemask)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	Voodoo2Setup2D(pVoo);
+-	mmio32_w_chuck(pVoo, 0x2EC, ropxlate[rop]);	/* Pattern op */
+-	mmio32_w_chuck(pVoo, 0x2F0, fg | (bg << 16));	/* colors */
+-	if(bg != -1)	/* Set transparent if needed */
+-		mmio32_w_chuck(pVoo, 0x2F8, 1 | (1<<14) | (1<<15) | (1<<16));
+-	else
+-		mmio32_w_chuck(pVoo, 0x2F8, 1 | (1<<14) | (1<<15) | (1<<16) | (1<<17));
+-}
+-
+-static void Voodoo2SubsequentScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn,
+-			int x, int y, int w, int h,
+-			int skipleft)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	wait_idle(pVoo);
+-	mmio32_w_chuck(pVoo, 0x2E4,  x | (y<<16));			/* destination */
+-	mmio32_w_chuck(pVoo, 0x2E8, (w-1) | ((h-1)<<16) | (1<<31)); 	/* fire */
+-	pVoo->texW = w;
+-}
+-
+-static void Voodoo2SubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	CARD32 *data = (CARD32 *)pVoo->LineBuffer;
+-	int w = pVoo->texW;
+-	int i;
+-	
+-	wait_idle(pVoo);
+-	for(i = 0; i < w; i += 32)	/* Each dword is 32 pixels mask */
+-		mmio32_w(pVoo, 0x2FC, *data++);
+-}
+-
+-static void Voodoo2SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int patx, int paty,
+-	int fg, int bg, int rop, unsigned int planemask)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	Voodoo2Setup2D(pVoo);
+-	mmio32_w_chuck(pVoo, 0x2EC, ropxlate[rop]);
+-	mmio32_w_chuck(pVoo, 0x2F0, fg | (bg << 16));
+-	if(bg != -1)
+-		mmio32_w_chuck(pVoo, 0x2F8, 1 | (1<<14) | (1<<15) | (1<<16));
+-	else
+-		mmio32_w_chuck(pVoo, 0x2F8, 1 | (1<<14) | (1<<15) | (1<<16) | (1<<17));
+-}
+-
+-/*
+- *	We don't have pattern fill hardware but for any operation that
+- *	references dst it is going to be faster to use the hardware
+- *	and simply upload the pattern a lot as we avoid reading
+- *	video memory. GXcopy ought to be the same either way.
+- */
+- 
+-static __inline__ CARD32 spread(CARD32 v)
+-{
+-	return v * 16843009;
+-}
+-
+-static void Voodoo2SubsequentMono8x8PatternFillRect(ScrnInfoPtr pScrn, int patx, int paty,
+-	int x, int y, int w, int h)
+-{
+-	int ln = 0;
+-	CARD32 l[8];
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-
+-	wait_idle(pVoo);
+-	
+-	if( w <3)
+-		return;
+-	
+-	mmio32_w_chuck(pVoo, 0x2E4,  x | (y<<16));
+-	mmio32_w_chuck(pVoo, 0x2E8, (w - 1) | ((h - 1)<<16) | (1<<31));
+-	
+-	/* Turn the pattern into 32x8 for the expansion engine */
+-	l[0] = spread((patx >> 24) & 0xFF);
+-	l[1] = spread((patx >> 16) & 0xFF);
+-	l[2] = spread((patx >> 8)  & 0xFF);
+-	l[3] = spread(patx & 0xFF);
+-	
+-	l[4] = spread((paty >> 24) & 0xFF);
+-	l[5] = spread((paty >> 16) & 0xFF);
+-	l[6] = spread((paty >> 8)  & 0xFF);
+-	l[7] = spread(paty & 0xFF);
+-	
+-	while(h > 0)
+-	{
+-		int i;
+-		for(i = 0; i < w; i += 32) /* DWORD pad */
+-			mmio32_w_chuck(pVoo, 0x2FC, l[ln]);
+-		wait_idle(pVoo);
+-		ln = (ln + 1) & 7;
+-		h--;
+-	}
+-}
+-
+-/*
+- *	The XAA layer uses video memory as the basis for colour pattern
+- *	fill, so we can't usefully perform it. 
+- */
+- 
+-static void Voodoo2SetupForSolidLine(ScrnInfoPtr pScrn, int color, int rop,
+-	unsigned int planemask)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	Voodoo2Setup2D(pVoo);
+-	mmio32_w_chuck(pVoo, 0x2CC, color);
+-	mmio32_w_chuck(pVoo, 0x2EC, ropxlate[rop]);
+-	mmio32_w_chuck(pVoo, 0x2F8, 2 | (1<<14) | (1<<15) | (1<<16)); 	/* Solid fill 16 bpp front */
+-}	
+-
+-static void Voodoo2SubsequentSolidHorVertLine(ScrnInfoPtr pScrn, int x, int y, int len, int dir)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	wait_idle(pVoo);
+-	mmio32_w_chuck(pVoo, 0x2E4, (y<<16) | x);	/* Dst x,y */
+-	if(dir == DEGREES_0)
+-		mmio32_w_chuck(pVoo, 0x2E8,  (len - 1) | (1<<31));
+-	else
+-		mmio32_w_chuck(pVoo, 0x2E8, ((len - 1) << 16) | (1<<31));
+-}
+-	
+-static void Voodoo2SetupForScanlineImageWrite(ScrnInfoPtr pScrn, int rop,
+-			unsigned int planemask, int trans_color,
+-			int bpp, int depth)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	Voodoo2Setup2D(pVoo);
+-	if(trans_color != -1)
+-	{
+-		mmio32_w_chuck(pVoo, 0x2CC, (trans_color << 16) | trans_color);
+-		mmio32_w_chuck(pVoo, 0x2EC, tropxlate[rop]);
+-		mmio32_w_chuck(pVoo, 0x2F8, 1 | (2<<3) | (1<<10) | (1<<14) | (1<<15) | (1<<16));
+-	}
+-	else
+-	{
+-		mmio32_w_chuck(pVoo, 0x2EC, ropxlate[rop]);
+-		mmio32_w_chuck(pVoo, 0x2F8, 1 | (2<<3) | (1<<14) | (1<<15) | (1<<16));
+-	}
+-	if(debug)
+-		ErrorF("Setup for image write rop %d col %d bpp %d depth %d\n",
+-			rop, trans_color, bpp, depth);
+-}
+-
+-static void Voodoo2SubsequentImageWriteRect(ScrnInfoPtr pScrn, 
+-			int x, int y,
+-			int w, int h,
+-			int skipleft)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	wait_idle(pVoo);
+-	mmio32_w_chuck(pVoo, 0x2E4, x | (y<<16));
+-	mmio32_w_chuck(pVoo, 0x2E8, (w - 1) | ((h - 1)<<16) | (1<<31));
+-	if(debug)
+-		ErrorF("Image Write (%d,%d) [%d,%d]\n", x,y,w,h);
+-	pVoo->texW = w;
+-}
+-
+-static void Voodoo2SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	CARD32 *data = (CARD32 *)pVoo->LineBuffer;
+-	int w = pVoo->texW;
+-	int i;
+-	
+-	wait_idle(pVoo);
+-	for(i = 0; i < w; i += 2)
+-		mmio32_w(pVoo, 0x2FC, *data++);
+-}
+-
+-static void Voodoo2SetClippingRectangle(ScrnInfoPtr pScrn,
+-			int left, int top, int right, int bottom)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	if(debug)
+-		ErrorF("Clip to (%d,%d)-(%d,%d)\n", left,top,right,bottom);
+-	mmio32_w_chuck(pVoo, 0x2D4, (left << 16) | right);
+-	mmio32_w_chuck(pVoo, 0x2D8, (top << 16 ) | bottom);
+-}
+-
+-static void Voodoo2DisableClipping(ScrnInfoPtr pScrn)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	/* FIXME: pVoo->FullHeight for the cache ! */
+-	if(debug)
+-		ErrorF("Clip to (0,0)-(%d,%d)\n", (int)pVoo->Width, (int)pVoo->Height);
+-	mmio32_w_chuck(pVoo, 0x2D4, pVoo->Width);
+-	mmio32_w_chuck(pVoo, 0x2D8, pVoo->FullHeight);
+-}
+-
+-/*
+- *	TODO: Implement 2D line acceleration using the 3D engines
+- */
+- 
+-#ifdef RENDER
+-
+-/*
+- *	Render acceleration. All Voodoo chips support cpu driver alpha
+- *	composite to the frame buffer. This is presumably meant for software
+- *	fallbacks on rendering 3D but happens to be very useful to avoid
+- *	some render operations reading from the frame buffer as much
+- *
+- *	Possibly we could the 3D engine for this once we get it working.
+- *	We can't however use the 2D engine much as it lacks Alpha
+- */
+- 
+-
+-static Bool VoodooSetupForCPUToScreenAlphaTexture(ScrnInfoPtr pScrn, int op,
+-	CARD16 red, CARD16 green, CARD16 blue, CARD16 alpha, int alphaType,
+-	CARD8 *alphaPtr, int alphaPitch, int width, int height, int flags)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-
+-	pVoo->alphaType = alphaType;
+-	pVoo->alphaPitch = alphaPitch;
+-	pVoo->alphaPtr = alphaPtr;
+-	pVoo->alphaW = width;
+-	pVoo->alphaH = height;
+-	pVoo->alphaC = (red & 0xFF00)  << 8 | (green & 0xFF00) | blue >> 8;
+-	
+-	if(op != PictOpOver && op != PictOpSrc)
+-		return FALSE;
+-
+-	if(debug)
+-		ErrorF("Supported CPU To Screen Alpha Texture (%d) -> %d,%d\n", op, width, height);		
+-	wait_idle(pVoo);
+-	if(op == PictOpSrc)
+-		pVoo->alpha = 0;
+-	else	/* dst = src * srcalpha + (1-a) * dst */
+-		pVoo->alpha = (1<<4) | (1<<8) | (5<<12);
+-
+-	return TRUE;	
+-}	
+-
+-static void VoodooSubsequentCPUToScreenAlphaTexture(ScrnInfoPtr pScrn,
+-	int dstx, int dsty, int srcx, int srcy, int width, int height)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	/* 32bit LFB write mode */
+-	CARD32 *fb = (CARD32 *)(pVoo->FBBase + 4096 * dsty + 4 * dstx);
+-	CARD8 *db = pVoo->alphaPtr + pVoo->alphaW * srcy + srcx;
+-	int x, y;
+-	CARD32 *fdb;
+-	CARD8 *cdb;
+-	CARD32 colour = pVoo->alphaC;
+-	int dw, dh;
+-	int w, h;
+-
+-	mmio32_w(pVoo, 0x10C, pVoo->alpha);
+-	mmio32_w(pVoo, 0x110, 1 | (1<<9));
+-	mmio32_w(pVoo, 0x114, (1<<8) | 5);	/* ARGB888 */
+-
+-	dh = srcy;
+-	w = pVoo->alphaW;
+-	h = pVoo->alphaH;
+-	
+-	for(y = 0; y < height; y++)
+-	{
+-		cdb = db;
+-		fdb = fb;
+-
+-		dw = srcx;
+-		for(x = 0; x < width; x++)
+-		{
+-			*fdb++ = (*cdb++<< 24) | colour;
+-			if(++dw == w)
+-			{
+-				dw = 0;
+-				cdb -= pVoo->alphaW;
+-			}
+-		}
+-		db += pVoo->alphaW;
+-		fb += 1024;
+-		if(++dh == h)
+-		{
+-			db = pVoo->alphaPtr + srcx;
+-			dh = 0;
+-		}
+-	}	
+-	mmio32_w(pVoo, 0x114, pVoo->lfbMode);
+-	mmio32_w(pVoo, 0x10C, 0);
+-}
+-
+-static Bool VoodooSetupForCPUToScreenTexture(ScrnInfoPtr pScrn, int op,
+-	int texType, CARD8 *texPtr, int texPitch, int width, int height,
+-	int flags)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	
+-	if(op != PictOpOver && op != PictOpSrc)
+-		return FALSE;	/* For now */
+-
+-	if(debug)
+-		ErrorF("Supported CPU TO Screen Texture (%d) -> %d,%d\n", op, width, height);		
+-	pVoo->texType = texType;
+-	pVoo->texPitch = texPitch;
+-	pVoo->texPtr = texPtr;
+-	pVoo->texW = width;
+-	pVoo->texH = height;
+-
+-	wait_idle(pVoo);
+-	if(op == PictOpSrc || texType == PICT_x8r8g8b8)
+-		pVoo->alpha = 0;
+-	else
+-		pVoo->alpha = (1<<4) | (1<<8) | (5<<12);
+-		
+-	return TRUE;
+-}
+-
+-static void VoodooSubsequentCPUToScreenTexture(ScrnInfoPtr pScrn,
+-	int dstx, int dsty, int srcx, int srcy, int width, int height)
+-{
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	/* 32bit LFB write mode */
+-	CARD32 *fb = (CARD32 *)(pVoo->FBBase + 4096 * dsty + 4 * dstx);
+-	CARD32 *db = ((CARD32 *)(pVoo->texPtr)) + pVoo->texW * srcy + srcx;
+-	int x, y;
+-	CARD32 *cdb, *fdb;
+-	int dw, dh;
+-	int w, h;
+-
+-	mmio32_w(pVoo, 0x10C, pVoo->alpha);
+-	mmio32_w(pVoo, 0x110, 1 | (1<<9));
+-	
+-	if(pVoo->texType == PICT_a8r8g8b8)
+-		mmio32_w(pVoo, 0x114, (1<<8) | 5);	/* ARGB888 */
+-	else if(pVoo->texType == PICT_x8r8g8b8)
+-		mmio32_w(pVoo, 0x114, (1<<8) | 4);	/* xRGB888 */
+-	else ErrorF("BOGOFORMAT\n");
+-	
+-	dh = srcy;
+-	w = pVoo->texW;
+-	h = pVoo->texH;
+-	
+-	if(debug)
+-		ErrorF("CPUToScreenTexture (%d,%d)->(%d,%d)[%d,%d]\n",
+-			srcx,srcy,dstx,dsty,width,height);
+-	/*
+-	 *	Tiled software render letting hardware do the read merge
+-	 *	that we don't want the CPU to do.
+-	 */
+-	 
+-	for(y = 0; y < height; y++)
+-	{
+-		cdb = db;
+-		fdb = fb;
+-		dw = srcx;
+-		for(x = 0; x < width; x++)
+-		{
+-			*fdb++ = *cdb++;
+-			
+-			if(++dw == w)
+-			{
+-				dw = 0;
+-				cdb -= pVoo->texW;
+-			}
+-		}
+-		db += pVoo->texW;
+-		fb += 1024;
+-		dh ++;
+-		if(dh == h)
+-		{
+-			db = ((CARD32 *)pVoo->texPtr) + srcx;
+-			dh = 0;
+-		}
+-	}	
+-	mmio32_w(pVoo, 0x114, pVoo->lfbMode);
+-	mmio32_w(pVoo, 0x10C, 0);
+-}
+-
+-CARD32 VoodooAlphaTextureFormats[2] = {PICT_a8, 0};
+-CARD32 VoodooTextureFormats[3] = {PICT_a8r8g8b8, PICT_x8r8g8b8, 0};
+-
+-#endif
+-#endif
+-
+-void Voodoo2XAAInit(ScreenPtr pScreen)
+-{
+-#ifdef HAVE_XAA_H
+-	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	XAAInfoRecPtr pAccel = XAACreateInfoRec();
+-	BoxRec cacheArea;
+-	
+-	pAccel->Flags = OFFSCREEN_PIXMAPS|LINEAR_FRAMEBUFFER;
+-	pAccel->Sync = VoodooSync;
+-
+-	pAccel->ScreenToScreenCopyFlags =  NO_PLANEMASK;
+-	pAccel->SetupForScreenToScreenCopy = Voodoo2SetupForScreenToScreenCopy;
+-	pAccel->SubsequentScreenToScreenCopy = Voodoo2SubsequentScreenToScreenCopy;
+-
+-	pAccel->SolidFillFlags = NO_PLANEMASK;
+-	pAccel->SetupForSolidFill = Voodoo2SetupForSolidFill;
+-	pAccel->SubsequentSolidFillRect = Voodoo2SubsequentSolidFillRect;
+-
+-	pAccel->ScanlineCPUToScreenColorExpandFillFlags = 
+-		BIT_ORDER_IN_BYTE_MSBFIRST | NO_PLANEMASK | 
+-			SCANLINE_PAD_DWORD | CPU_TRANSFER_BASE_FIXED;
+-	pAccel->SetupForScanlineCPUToScreenColorExpandFill = 
+-				Voodoo2SetupForScanlineCPUToScreenColorExpandFill;
+-	pAccel->SubsequentScanlineCPUToScreenColorExpandFill =
+-				Voodoo2SubsequentScanlineCPUToScreenColorExpandFill;
+-	pAccel->SubsequentColorExpandScanline = 
+-				Voodoo2SubsequentColorExpandScanline;
+-
+-	pAccel->NumScanlineColorExpandBuffers = 1;
+-	pVoo->LinePtr = pVoo->LineBuffer;
+-	pAccel->ScanlineColorExpandBuffers = &pVoo->LinePtr;
+-
+-	pAccel->SetupForSolidLine = Voodoo2SetupForSolidLine;
+-	pAccel->SubsequentSolidHorVertLine = Voodoo2SubsequentSolidHorVertLine;
+-	pAccel->SolidLineFlags = NO_PLANEMASK;
+-
+-	pAccel->Mono8x8PatternFillFlags = HARDWARE_PATTERN_PROGRAMMED_BITS;
+-	pAccel->SetupForMono8x8PatternFill = Voodoo2SetupForMono8x8PatternFill;
+-	pAccel->SubsequentMono8x8PatternFillRect = Voodoo2SubsequentMono8x8PatternFillRect;
+-
+-	pAccel->ScanlineImageWriteFlags = NO_PLANEMASK;
+-	pAccel->SetupForScanlineImageWrite = Voodoo2SetupForScanlineImageWrite;
+-	pAccel->SubsequentImageWriteRect = Voodoo2SubsequentImageWriteRect;
+-	pAccel->SubsequentImageWriteScanline = Voodoo2SubsequentImageWriteScanline;
+-
+-	pAccel->ClippingFlags =
+-		HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND |
+-		HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY |
+-		HARDWARE_CLIP_MONO_8x8_FILL |
+-		HARDWARE_CLIP_SOLID_FILL;
+-		
+-	pAccel->SetClippingRectangle = Voodoo2SetClippingRectangle;
+-	pAccel->DisableClipping = Voodoo2DisableClipping;
+-	
+-#ifdef RENDER
+-	pAccel->CPUToScreenAlphaTextureFlags = 0;
+-	pAccel->SetupForCPUToScreenAlphaTexture = VoodooSetupForCPUToScreenAlphaTexture;
+-	pAccel->SubsequentCPUToScreenAlphaTexture = VoodooSubsequentCPUToScreenAlphaTexture;
+-	
+-	pAccel->CPUToScreenTextureFlags = 0;
+-	pAccel->SetupForCPUToScreenTexture = VoodooSetupForCPUToScreenTexture;
+-	pAccel->SubsequentCPUToScreenTexture = VoodooSubsequentCPUToScreenTexture;
+-	
+-	pAccel->CPUToScreenTextureFormats = VoodooTextureFormats;
+-	pAccel->CPUToScreenAlphaTextureFormats = VoodooAlphaTextureFormats;
+-#endif
+-
+-	cacheArea.x1 = 0;
+-	cacheArea.x2 = pScrn->displayWidth;
+-	cacheArea.y1 = pVoo->Height;
+-	cacheArea.y2 = (pScrn->videoRam * 1024) / (pVoo->Tiles * 64);
+-	if(cacheArea.y2 > 2047)
+-		cacheArea.y2 = 2047;
+-		
+-	if(cacheArea.y2 > cacheArea.y1)
+-	{
+-		xf86DrvMsg(pScrn->scrnIndex, X_DEFAULT, "Using %d lines of pixmap cache.\n", cacheArea.y2-cacheArea.y1);
+-		pAccel->Flags |= PIXMAP_CACHE;
+-		pVoo->FullHeight = cacheArea.y2;
+-		xf86InitFBManager(pScreen, &cacheArea);
+-	}
+-	if( XAAInit(pScreen, pAccel) == FALSE)
+-		ErrorF("Unable to set up acceleration.\n");
+-		
+-	Voodoo2DisableClipping(pScrn);
+-#endif
+-}
+-- 
+2.43.0
+
diff --git a/0014-drop-dead-code.patch b/0014-drop-dead-code.patch
new file mode 100644
index 0000000..b9a54ae
--- /dev/null
+++ b/0014-drop-dead-code.patch
@@ -0,0 +1,92 @@
+From 4f34e3c1b12127f985be6073f59b68bb482236d5 Mon Sep 17 00:00:00 2001
+From: "Enrico Weigelt, metux IT consult" <info@metux.net>
+Date: Fri, 24 May 2024 20:04:48 +0200
+Subject: [PATCH 14/15] drop dead code
+
+Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/merge_requests/9>
+---
+ configure.ac          |  1 -
+ src/voodoo_hardware.c | 41 -----------------------------------------
+ 2 files changed, 42 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 827d293..8818f24 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -83,7 +83,6 @@ if test "x$XSERVER_LIBPCIACCESS" = xyes; then
+ fi
+ AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
+ 
+-
+ AC_SUBST([moduledir])
+ 
+ DRIVER_NAME=voodoo
+diff --git a/src/voodoo_hardware.c b/src/voodoo_hardware.c
+index be33dd8..6305b35 100644
+--- a/src/voodoo_hardware.c
++++ b/src/voodoo_hardware.c
+@@ -65,7 +65,6 @@
+ 
+ #include <unistd.h>
+ 
+-
+ /*
+  *	Big endian might need to byteswap these ?
+  */
+@@ -754,25 +753,6 @@ void VoodooCopy24(VoodooPtr pVoo, CARD32 x1, CARD32 y1, CARD32 w, CARD32 h, CARD
+ void VoodooClear(VoodooPtr pVoo)
+ {
+ 	memset(pVoo->FBBase,0, 0x400000);
+-#if 0
+-	/*
+-	 *	We can't do this as the 3D engine setup is not
+-	 *	done by this driver..
+-	 */
+-	mmio32_w(pVoo, 0x130, 0);		/* No Alpha ! */
+-	
+-	mmio32_w(pVoo, 0x118, pVoo->Width);
+-	mmio32_w(pVoo, 0x11C, pVoo->Height << 16);
+-	/* On entry we know Clip is set correctly so we will clear the lot */
+-	mmio32_w(pVoo, 0x148, 0xC0C0C0);	/* RGB888 black */
+-	mmio32_w(pVoo, 0x130, 0xFFFF);	/* I think ?? */
+-	/* We want to write to screen and depth, front buffer, and no dither */
+-	mmio32_w(pVoo, 0x110, (mmio32_r(pVoo, 0x110) | 0x601) & 0xFFE00EE1);
+-	/* Fire */
+-	mmio32_w(pVoo, 0x124, 1);
+-	wait_idle(pVoo);
+-	/* In case X decides to read the LFB before clear finishes */
+-#endif	
+ }
+ 
+ /*
+@@ -824,27 +804,6 @@ void VoodooWriteBank(ScreenPtr pScreen, int bank)
+ 	mmio32_w(pVoo, 0x114, pVoo->lfbMode);
+ }
+ 
+-#if 0
+-static void VoodooReadWriteBank(ScreenPtr pScreen, int bank)
+-{
+-	ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+-	VoodooPtr pVoo = VoodooPTR(pScrn);
+-	if(bank)
+-	{
+-		mmio32_w(pVoo, 0x2C0, pVoo->Height);
+-		mmio32_w(pVoo, 0x2C4, pVoo->Height);
+-		pVoo->lfbMode |= (1<<4) | (1<<6);
+-	}
+-	else
+-	{
+-		mmio32_w(pVoo, 0x2C0, 0);
+-		mmio32_w(pVoo, 0x2C4, 0);
+-		pVoo->lfbMode &= ~((1<<4) | (1<<6));
+-	}
+-	mmio32_w(pVoo, 0x114, pVoo->lfbMode);
+-}
+-#endif
+-	
+ void VoodooSync(ScrnInfoPtr pScrn)
+ {
+ 	VoodooPtr pVoo = VoodooPTR(pScrn);
+-- 
+2.43.0
+
diff --git a/0015-drop-remains-of-old-compat-code.patch b/0015-drop-remains-of-old-compat-code.patch
new file mode 100644
index 0000000..0d7ad39
--- /dev/null
+++ b/0015-drop-remains-of-old-compat-code.patch
@@ -0,0 +1,218 @@
+From c70353ddf49d557c596a47b835b6b8d8bbe35ebe Mon Sep 17 00:00:00 2001
+From: "Enrico Weigelt, metux IT consult" <info@metux.net>
+Date: Tue, 28 May 2024 10:43:35 +0200
+Subject: [PATCH 15/15] drop remains of old compat code
+
+Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
+Part-of: <https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/merge_requests/9>
+---
+ src/Makefile.am     |  1 -
+ src/compat-api.h    | 58 ---------------------------------------------
+ src/voodoo.h        |  2 --
+ src/voodoo_dga.c    |  2 +-
+ src/voodoo_driver.c | 30 ++++++++++-------------
+ 5 files changed, 14 insertions(+), 79 deletions(-)
+ delete mode 100644 src/compat-api.h
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 7a6d4d9..04e9ea5 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -29,7 +29,6 @@ voodoo_drv_la_LDFLAGS = -module -avoid-version
+ voodoo_drv_ladir = @moduledir@/drivers
+ 
+ voodoo_drv_la_SOURCES = \
+-         compat-api.h \
+          voodoo_dga.c \
+          voodoo_driver.c \
+          voodoo.h \
+diff --git a/src/compat-api.h b/src/compat-api.h
+deleted file mode 100644
+index 2376b25..0000000
+--- a/src/compat-api.h
++++ /dev/null
+@@ -1,58 +0,0 @@
+-/*
+- * Copyright 2012 Red Hat, Inc.
+- *
+- * Permission is hereby granted, free of charge, to any person obtaining a
+- * copy of this software and associated documentation files (the "Software"),
+- * to deal in the Software without restriction, including without limitation
+- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+- * and/or sell copies of the Software, and to permit persons to whom the
+- * Software is furnished to do so, subject to the following conditions:
+- *
+- * The above copyright notice and this permission notice (including the next
+- * paragraph) shall be included in all copies or substantial portions of the
+- * Software.
+- *
+- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+- * DEALINGS IN THE SOFTWARE.
+- *
+- * Author: Dave Airlie <airlied@redhat.com>
+- */
+-
+-/* this file provides API compat between server post 1.13 and pre it,
+-   it should be reused inside as many drivers as possible */
+-#ifndef COMPAT_API_H
+-#define COMPAT_API_H
+-
+-#define SCRN_ARG_TYPE ScrnInfoPtr
+-#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
+-
+-#define SCREEN_ARG_TYPE ScreenPtr
+-#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
+-
+-#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
+-
+-#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
+-#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
+-
+-#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
+-#define CLOSE_SCREEN_ARGS pScreen
+-
+-#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
+-#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y
+-
+-#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+-#define SWITCH_MODE_ARGS(arg, m) arg, m
+-
+-#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+-
+-#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+-#define VT_FUNC_ARGS pScrn
+-
+-#define XF86_SCRN_ARG(x) (x)
+-
+-#endif
+diff --git a/src/voodoo.h b/src/voodoo.h
+index 772b3b6..9667081 100644
+--- a/src/voodoo.h
++++ b/src/voodoo.h
+@@ -1,8 +1,6 @@
+ #include "voodoo_pcirename.h"
+ #include <string.h>
+ 
+-#include "compat-api.h"
+-
+ typedef struct {
+   CARD32		m;
+   CARD32		n;
+diff --git a/src/voodoo_dga.c b/src/voodoo_dga.c
+index b0865dc..d1cb891 100644
+--- a/src/voodoo_dga.c
++++ b/src/voodoo_dga.c
+@@ -96,7 +96,7 @@ static Bool VoodooDGASetMode(ScrnInfoPtr pScrn, DGAModePtr pDGAMode)
+ 	    return TRUE;
+     }
+ 
+-    if (!(*pScrn->SwitchMode)(SWITCH_MODE_ARGS(pScrn, pMode)))
++    if (!(*pScrn->SwitchMode)(pScrn, pMode))
+ 	return FALSE;
+     return TRUE;
+ }
+diff --git a/src/voodoo_driver.c b/src/voodoo_driver.c
+index 88de297..8f336c6 100644
+--- a/src/voodoo_driver.c
++++ b/src/voodoo_driver.c
+@@ -72,15 +72,15 @@ static const OptionInfoRec * VoodooAvailableOptions(int chipid, int busid);
+ static void	VoodooIdentify(int flags);
+ static Bool	VoodooProbe(DriverPtr drv, int flags);
+ static Bool	VoodooPreInit(ScrnInfoPtr pScrn, int flags);
+-static Bool	VoodooScreenInit(SCREEN_INIT_ARGS_DECL);
+-static Bool	VoodooEnterVT(VT_FUNC_ARGS_DECL);
+-static void	VoodooLeaveVT(VT_FUNC_ARGS_DECL);
+-static Bool	VoodooCloseScreen(CLOSE_SCREEN_ARGS_DECL);
++static Bool	VoodooScreenInit(ScreenPtr pScreen, int argc, char **argv);
++static Bool	VoodooEnterVT(ScrnInfoPtr pScrn);
++static void	VoodooLeaveVT(ScrnInfoPtr pScrn);
++static Bool	VoodooCloseScreen(ScreenPtr pScreen);
+ static Bool	VoodooSaveScreen(ScreenPtr pScreen, int mode);
+-static void     VoodooFreeScreen(FREE_SCREEN_ARGS_DECL);
++static void     VoodooFreeScreen(ScrnInfoPtr arg);
+ static void     VoodooRefreshArea16(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
+ static void     VoodooRefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
+-static Bool	VoodooSwitchMode(SWITCH_MODE_ARGS_DECL);
++static Bool	VoodooSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
+ static Bool     VoodooModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
+ static void     VoodooRestore(ScrnInfoPtr pScrn, Bool Closing);
+ 
+@@ -572,7 +572,7 @@ VoodooPreInit(ScrnInfoPtr pScrn, int flags)
+ /* Mandatory */
+ /* This gets called at the start of each server generation */
+ static Bool
+-VoodooScreenInit(SCREEN_INIT_ARGS_DECL)
++VoodooScreenInit(ScreenPtr pScreen, int argc, char **argv)
+ {
+   ScrnInfoPtr pScrn;
+   VoodooPtr pVoo;
+@@ -718,9 +718,8 @@ VoodooScreenInit(SCREEN_INIT_ARGS_DECL)
+ 
+ /* Mandatory */
+ static Bool
+-VoodooEnterVT(VT_FUNC_ARGS_DECL)
++VoodooEnterVT(ScrnInfoPtr pScrn)
+ {
+-  SCRN_INFO_PTR(arg);
+   return VoodooModeInit(pScrn, pScrn->currentMode);
+ }
+ 
+@@ -733,9 +732,8 @@ VoodooEnterVT(VT_FUNC_ARGS_DECL)
+ 
+ /* Mandatory */
+ static void
+-VoodooLeaveVT(VT_FUNC_ARGS_DECL)
++VoodooLeaveVT(ScrnInfoPtr pScrn)
+ {
+-  SCRN_INFO_PTR(arg);
+   VoodooRestore(pScrn, FALSE);
+ }
+ 
+@@ -748,7 +746,7 @@ VoodooLeaveVT(VT_FUNC_ARGS_DECL)
+ 
+ /* Mandatory */
+ static Bool
+-VoodooCloseScreen(CLOSE_SCREEN_ARGS_DECL)
++VoodooCloseScreen(ScreenPtr pScreen)
+ {
+   ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
+   VoodooPtr pVoo = VoodooPTR(pScrn);
+@@ -766,7 +764,7 @@ VoodooCloseScreen(CLOSE_SCREEN_ARGS_DECL)
+   pScrn->vtSema = FALSE;
+ 
+   pScreen->CloseScreen = pVoo->CloseScreen;
+-  return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
++  return (*pScreen->CloseScreen)(pScreen);
+ }
+ 
+ 
+@@ -774,9 +772,8 @@ VoodooCloseScreen(CLOSE_SCREEN_ARGS_DECL)
+ 
+ /* Optional */
+ static void
+-VoodooFreeScreen(FREE_SCREEN_ARGS_DECL)
++VoodooFreeScreen(ScrnInfoPtr pScrn)
+ {
+-  SCRN_INFO_PTR(arg);
+   VoodooPtr pVoo = VoodooPTR(pScrn);
+   /*
+    * This only gets called when a screen is being deleted.  It does not
+@@ -860,9 +857,8 @@ VoodooModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
+  *	this is needed but it does no harm.
+  */
+  
+-static Bool VoodooSwitchMode(SWITCH_MODE_ARGS_DECL)
++static Bool VoodooSwitchMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ {
+-  SCRN_INFO_PTR(arg);
+   VoodooSync(pScrn);
+   return VoodooModeInit(pScrn, mode);
+ }
+-- 
+2.43.0
+
diff --git a/xf86-video-voodoo-1.2.6.tar.xz b/xf86-video-voodoo-1.2.6.tar.xz
new file mode 100644
index 0000000..e36f8b2
--- /dev/null
+++ b/xf86-video-voodoo-1.2.6.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:622973f03ac0bd0c854794ebeac268f15f4f831ec0dbe36e6cfa2b65042af602
+size 276472
diff --git a/xf86-video-voodoo-1.2.6.tar.xz.sig b/xf86-video-voodoo-1.2.6.tar.xz.sig
new file mode 100644
index 0000000000000000000000000000000000000000000000000000000000000000..c5fbc654f9bfd06cdba54b3b0f53d0225fdd4c2667e878869fca26644706d4f8
GIT binary patch
literal 543
zcmV+)0^t3L0vrSY0SW*H1p;G}oNNFJ2@ucU6o@FsLZ^Mf5Bv$l|LZm|tu=OCt(vo~
zT~)O2keQ&nH9#{K+`@|98+1PKn+oQeN{J0|&<)SHRWp)-P2%CD73uIE@k)%d)O-9-
zRlZ+|CzrW<op08h9mi~b!WrX$Hq5}Y_QEm99+U?jMb^Ai+~ESKFqJzIQ0`^pyK!=w
z1kTR#3?uHpMthSQ5|Vhp%vfY{8lR^viG}P2IBCLvK`6S~1z>L^0hMR=PSX;&q8A!V
zHSWom7nlTUN?23Cv%U<zCLY;N_Kog?qU^(4pji||H^A=D{FaX|3$ir7@^~uhbOoQ{
zny|@u$~l`l!pLBrwkO&icy@aKI?LeUq^trCG~@`G8!6StsGA~|=0@ZN(JT8q7l$WP
zn?$TxSAsdp4srRL#&Y4BclgPaQ?1&1qO^FrOFD2K>^E{@^^sIfN}cupHm(yo0+5>X
zq4OLf8u2=04~!WT@MCBog)F)*yKL>uGz(m)g&Ylig@Gxr9%_<&tUM9DKWDif7u?f?
zW?2QQB2oc`a`uGbZ7q4=r`=(UD9El@&uY6&feD^X>(p!fv%R(OlaW^>nvx<6Td${A
z;!J)_QL98bnnx+M@Deleg0lLFkoRqXkU+4B4<4OYvE=kkvx6|`hFze~2w?lLQ0sCp
hny^XlUtlCx^<j~QRtq^m#;ELsT_D~*?vqfgf46Wd3HAU0

literal 0
HcmV?d00001

diff --git a/xf86-video-voodoo.changes b/xf86-video-voodoo.changes
new file mode 100644
index 0000000..41385b7
--- /dev/null
+++ b/xf86-video-voodoo.changes
@@ -0,0 +1,74 @@
+-------------------------------------------------------------------
+Wed Dec 11 16:10:06 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
+
+- 0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
+  0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch
+  0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch
+  0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch
+  0005-Fix-3-Wunused-but-set-variable-warnings.patch
+  0006-Fix-4-Wunused-variable-warnings.patch
+  0007-voodoo_find_dac-doesn-t-check-device_ids-2.patch
+  0008-use-XNFalloc-instead-of-xnfalloc.patch
+  0009-use-XNFcallocarray-instead-of-xnfcalloc-macro.patch
+  0010-bump-minimal-xorg-version-to-1.18.patch
+  0011-drop-compat-with-ancient-xserver-versions.patch
+  0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch
+  0013-Remove-XAA-support.patch
+  0014-drop-dead-code.patch
+  0015-drop-remains-of-old-compat-code.patch
+  * latest changes to fix build against current xserver
+
+-------------------------------------------------------------------
+Sun Dec 18 15:32:28 UTC 2022 - Dirk Müller <dmueller@suse.com>
+
+- update to 1.2.6:
+  * Remove miInitializeBackingStore
+    Stop using deprecated xf86PciInfo.h
+    Fix spelling/wording issues
+    Build xz tarballs instead of bzip2
+    Update configure.ac bug URL for gitlab migration
+    autogen: add default patch prefix
+    autogen.sh: use quoted string variables
+    autogen.sh: use exec instead of waiting for configure to finish
+    autogen.sh: Honor NOCONFIGURE=1
+    configure: Drop AM_MAINTAINER_MODE
+    don't use PCITAG in struct anymore
+- drop U_don-t-use-PCITAG-in-struct-anymore.patch (upstream)
+
+-------------------------------------------------------------------
+Fri Feb  6 15:03:35 UTC 2015 - sndirsch@suse.com
+
+- U_don-t-use-PCITAG-in-struct-anymore.patch
+  * fixes build against xorg-server 1.17 
+
+-------------------------------------------------------------------
+Wed Aug  7 15:03:57 CEST 2013 - ro@suse.de
+
+- add ExcludeArch for s390 and s390x 
+
+-------------------------------------------------------------------
+Wed Mar 20 14:42:42 UTC 2013 - sndirsch@suse.com
+
+- introduce hardware supplements conditional on xorg-x11-server
+  package (bnc#810333) 
+
+-------------------------------------------------------------------
+Sun Sep  2 19:26:08 UTC 2012 - zaitor@opensuse.org
+
+- Update to version 1.2.5:
+  + Fix build against older X servers.
+  + Fix build against XAA-less server.
+  + Drop useless vgaHW include.
+  + Fall back to shadowfb if XAA is unavailable.
+
+-------------------------------------------------------------------
+Fri Apr 20 07:37:57 UTC 2012 - vuntz@opensuse.org
+
+- Use %x11_abi_videodrv_req instead of static ABI Requires.
+
+-------------------------------------------------------------------
+Wed Apr 18 15:51:24 UTC 2012 - vuntz@opensuse.org
+
+- Split xf86-video-voodoo from xorg-x11-driver-video.
+  Initial version: 1.2.4.
+
diff --git a/xf86-video-voodoo.keyring b/xf86-video-voodoo.keyring
new file mode 100644
index 0000000..8085973
--- /dev/null
+++ b/xf86-video-voodoo.keyring
@@ -0,0 +1,59 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQGiBEab+moRBACDH5yKqS3wcc5bdxY7PBNuwKvF5TKMfagmSvuRDtZjjIIWaA/n
+Z1KboV9Gq5g7kP7+Kfu+Qgd8u65eVsWwmPW10fXvj3aCU53glx2EdGdrHcgiyH2g
+EQfPiyBw+trIppWFRV0IDXSLMA1FNC92t2nSG/VFHaPTVwcgkIRSfcXDvwCglGdE
+a6f4uLqoNHP+m4yYnzapFuMD/R4+2AJDAvEWKDdYCGZzlawjAmmWyXrmT7/C/mx9
+8qUR473l4buXjHgDkkXXlHqdzil1vK85PhrKzNJDCCmlHUJNz+QwiAMOLwpD+kwV
+Pb57RG7y+a5JQ5+jtVw4RlUxZIk/wj2An9YBO3A5vR7PdjM32ZJCN2+aM4dYfNzQ
+xQKTA/47icvBaBVTl9rztjg2pd2Aqpc1P/GsIYLGj7XjnnJvGAENBHSH1QjpZMJG
+CTS9oJ+B0/wrIr+pA+MdFgYAb6ojMQJOO6UChjWWSGjMFcs/CeXhxlLBido3DtAE
+TbNTwO6OEfAvdosvTdhJFnwvZlJ+zZGGy5CrF2Fd9PUe9tmASbQuQWxhbiBDb29w
+ZXJzbWl0aCA8YWxhbi5jb29wZXJzbWl0aEBvcmFjbGUuY29tPohrBBMRCgArAhsD
+BgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAIZAQUCWtvjmAUJHaXqrgAKCRCi+54I
+Hy0TDmAsAJ4ubyCVncwKtAGVIx9whDq7f6SxZgCfXAVWUqRR20c98J39lLTtcopZ
+Dfi0KEFsYW4gQ29vcGVyc21pdGggPGFsYW5jQGZyZWVkZXNrdG9wLm9yZz6IaAQT
+EQoAKAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AFAlrb454FCR2l6q4ACgkQ
+ovueCB8tEw6whACdFj9U5SQuhv0e8BQvI4orGPzUMSkAoImqdVB7sU7Z++djBrj3
+uJc4m0F6tCtBbGFuIENvb3BlcnNtaXRoIDxhbGFuLmNvb3BlcnNtaXRoQHN1bi5j
+b20+iGYEExEKACYCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCWtvjngUJHaXq
+rgAKCRCi+54IHy0TDhtDAJ95lL7Flj8EzdWqYogu7V9W5Xmd4gCgi0vN3iglPVNH
+2gHOcTpdNyl0wcy5Ag0EUXnVIQEQAKHpjOmY056n0tsZoW9q5egsMcl5tKC8uimr
+hO05nnq+5/60/YedC++V9c9b/3/X7O28LyBkAtBgD0xJZSDQ0DhTzKAp6AzjQtBv
+I68uinGwxSjT+oQpPMxqhA1I0kzoEDCdEqV+HsVOAEdbAi/tP9bbdTDzwVc8MWDr
+iamBUqc53Rb00Mffy9435UgTS4gAhMwANhy6XZmOMBhITOzxFJUEDTDJtLbE0b1j
+PRQS7NHQgak1inmuvPMc3wAuoEcSCSt1xupbYsBoXOjK5wC/eE1LIdZoRyW2OkT1
+40DqDZ8zfRID860hnirnYgb09TPNtj93pudUAUt6T9+tcLN4/rxhxHOwse66KGHO
+4bQ1rZ6mfco6SYd9V60cL6hC2eMecyxZliMu17lj7EX8lxUH+omIgHc7HGoyUR6V
++WB60cxWj5v05zdeLeZ2aLBcPFhxlfDESm8f4ezdJSDS1QZmC0P5h3RJfhhfmdBr
+8kHzr7111D1/O71Av1VV5FyJ9YxUSxp4IPuzK7JbbgVHcA6PvXrDzWUslmZgPADp
+KH4hTmG/NdCqhEXcufvY6s5yNksB8X3ReNvuSSyfGnRz3kvtyK0XzC7KRX2PquLI
+6A8KJprHwZGqEB1NDG8b2iaYnghOjyfIYEVQF3nGfaBwv4lrCPEoZSUaK8f/NQZj
+NU8NQyTnABEBAAGJAm4EGBEKAA8CGwIFAlrb470FCRLIEBwCKcFdIAQZAQoABgUC
+UXnVIQAKCRDP3xSIKMZCp9bmD/9050ke3bdx0zLPlUANoTu74vQT55f0a0cXgnrj
+15ey6Ln0S1seHadd0aF3lKpDwUOL0YIQppDhLfWf9gEsQEKSPtHQgyKRbajvz8nE
+Oi8Hz5ovrTqGCZp81XHVoiyEiCWuXxeW7eyN4C8bjxbpiN0vaZ+sgMeMhXA5mwyK
+Fs4m9JPpDe6kd2eaMO0zkcJCYjk0RcNZiPohm6EmeesNbA2zJhXgo+hQHEByojIJ
+5ltWyy5Zacc9dfxVq9Wr3y+lXKd8bMZiklsOPX0L+60yMoYjl1y9tVq5wDtf+iS3
+GvFLpIEOG4hoAT3hkeVvGp/Id8RMj8trZn8AsMC1h2ElHaBKRMfIpJbVCpiW6VJ8
+H/+WedrjiaZO5E41sM2BvQUZK+2wExnzSIcOo+BR9LrSTEJ8WuxIZ9MVT5fhADOl
+O1QkRyv4ngdQsN4x/A6CCFV+YrEVdZ+53zENoJe7LAtO1WAwJmng/swDK4mVrGwV
+O75zVWXL3iCuThQy0AssyoJdKiwDj3SAtNJ2DcdLDG3ZD8sl3Ljbtkgy+MZciu6e
+zxT86Yv11WBa7dskewvrxKTHxOzrepM31Bcz88H7xXA5oLs8n6Dq3jQOV46Z2xLx
+w3fXJ/koHyuwvi6fi7XKswl+mdJuU8y7nAmLeSOgD4N3lkWrH2dOLjAGN9VgYI+y
+V6rn0gkQovueCB8tEw7nxACeNnR9mrdd+VMF32hm6lu54QUhWiQAoJLzrvm3uK/H
+XyfDrNoGAjiyAj+3uQINBEab+m8QCACaeWlJYaOa1IaUuopO7KbAEBT0bsnDyjDb
+tCeBdL/zqD89PObKFfMrS4+B6ghpNmWpodY0oJYmcLpPZu1e1oMcfpwSWsKVg1/3
+iizmxK3w8EOHXzhb421y0DJjZ0DWlBiFizz95fBrgThzKutAbvkz4Ietu71J7S+U
+REBEKk1yM1gulNdELA25S8CL3TlUnRhecZfzdZsl80ir67GcFraBXPBvb/YXAo4b
+TdbJvW+zo3OdYmV73HrXLz8uUQOgFFt8hBMWnnVHS57yBfbIxWCHyVhVWIdgIGr5
+xq3unxfjVdr9838d8EU+x/f/5uGCA2CZoGYMkHHF3oE8HxgSKt6LAAMGB/9RYjFD
+DBEuSJc9pw6iHfgwlhAgFOsILyBUXF62VsQ8Qfma55kwl6AA9MXnaXzpER6fF01X
+P/TFPsEPpWUcdjkOjCVtFxrhbx5veCmRf/B81gNgIe1OJ9Pt7C6ZOs1nHmats2TR
+dMlU48A/fPsTStUPbD/GjinbYPMjB94YrCkeq3Vvpn1+atEPBqJdoWbBR/6siIZz
+84Vw5J7jofBOYjJM63o1V1BJ/vmM49t14z+fUjmy851ZMsSPpASPar1RD3xQQ8m4
+x1qi3IEXAqVwM44sxIvv3d9Yg2thKyR1eEeNqG3nBaoj56A7Yl9yIj+8/X5sTOGl
+j2WUar6vtYbecJJ/iEkEGBECAAkFAkab+m8CGwwACgkQovueCB8tEw6C6ACgh2Ea
+cP138hLp8NWC/7jGc5e/KiEAnRVXFzW6g/N6lYVuC8u4cgy/KNGi
+=zQQb
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/xf86-video-voodoo.spec b/xf86-video-voodoo.spec
new file mode 100644
index 0000000..047bc89
--- /dev/null
+++ b/xf86-video-voodoo.spec
@@ -0,0 +1,112 @@
+#
+# spec file for package xf86-video-voodoo
+#
+# Copyright (c) 2024 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+
+Name:           xf86-video-voodoo
+Version:        1.2.6
+Release:        0
+Summary:        Voodoo video driver for the Xorg X server
+License:        MIT
+Group:          System/X11/Servers/XF86_4
+URL:            https://xorg.freedesktop.org/
+Source0:        http://xorg.freedesktop.org/releases/individual/driver/%{name}-%{version}.tar.xz
+Source1:        http://xorg.freedesktop.org/releases/individual/driver/%{name}-%{version}.tar.xz.sig
+Source2:        xf86-video-voodoo.keyring
+#Patch1:         0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
+Patch2:         0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch
+Patch3:         0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch
+Patch4:         0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch
+Patch5:         0005-Fix-3-Wunused-but-set-variable-warnings.patch
+Patch6:         0006-Fix-4-Wunused-variable-warnings.patch
+Patch7:         0007-voodoo_find_dac-doesn-t-check-device_ids-2.patch
+Patch8:         0008-use-XNFalloc-instead-of-xnfalloc.patch
+Patch9:         0009-use-XNFcallocarray-instead-of-xnfcalloc-macro.patch
+Patch10:        0010-bump-minimal-xorg-version-to-1.18.patch
+Patch11:        0011-drop-compat-with-ancient-xserver-versions.patch
+Patch12:        0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch
+Patch13:        0013-Remove-XAA-support.patch
+Patch14:        0014-drop-dead-code.patch
+Patch15:        0015-drop-remains-of-old-compat-code.patch
+BuildRequires:  pkgconfig
+BuildRequires:  pkgconfig(fontsproto)
+BuildRequires:  pkgconfig(pciaccess) >= 0.8.0
+BuildRequires:  pkgconfig(randrproto)
+BuildRequires:  pkgconfig(renderproto)
+BuildRequires:  pkgconfig(xextproto)
+BuildRequires:  pkgconfig(xf86dgaproto)
+BuildRequires:  pkgconfig(xorg-macros) >= 1.8
+BuildRequires:  pkgconfig(xorg-server) >= 1.0.99.901
+BuildRequires:  pkgconfig(xproto)
+Supplements:    modalias(xorg-x11-server:pci:v0000121Ad*sv*sd*bc03sc*i*)
+# This was part of the xorg-x11-driver-video package up to version 7.6
+Conflicts:      xorg-x11-driver-video <= 7.6
+ExcludeArch:    s390 s390x
+%{?x11_abi_videodrv_req}
+
+%description
+voodoo is an Xorg driver for Voodoo 1 and Voodoo 2 series video cards.
+
+On the Voodoo 1 the driver uses a shadow buffer in system memory as the
+video adapter has only 3D acceleration. Selected portions of the shadow
+framebuffer are copied out to the Voodoo board at the right time.
+Because of this, the speed of the driver is very dependent on the CPU.
+Processors nowadays are actually rather fast at moving data so we get
+very good speed anyway as the shadow framebuffer is in cached RAM.
+
+The Voodoo2 has 16bpp acceleration and the driver provides accelerated
+versions of most operations except angled lines and stipples.
+Accelerated alpha blending with the Render extension is also supported
+as is DGA.
+
+This driver supports 16bpp modes currently. The video hardware supports
+image conversion from 24bpp to 16bpp but the hardware is 16bpp only.
+
+The Voodoo 1 series cards can go up to 800x600 resolution while the
+Voodoo 2 can reach 1024x768 providing it has at least 2Mb of frame
+buffer memory. 1024x768 2D mode does not require two cards configured in
+scan-line interleave mode (SLI).
+
+Multihead and Xinerama configurations are supported. SLI configurations
+will be treated as multiple video cards.
+
+Limited support for DPMS screen saving is available. The "standby" and
+"suspend" modes are just painting the screen black. The "off" mode turns
+the Voodoo board off and thus works correctly.
+
+This driver does not support a virtual screen size different from the
+display size. This is a hardware limitation. 3D rendering is also not
+supported.
+
+%prep
+%autosetup -p1
+
+%build
+%configure
+%make_build
+
+%install
+%make_install
+find %{buildroot} -type f -name "*.la" -delete -print
+
+%files
+%license COPYING
+%doc ChangeLog README
+%dir %{_libdir}/xorg/modules/drivers
+%{_libdir}/xorg/modules/drivers/voodoo_drv.so
+%{_mandir}/man4/voodoo.4%{?ext_man}
+
+%changelog

From 2fba257bdb8aef4964c65f4393de5e0c3ac0ae6a53c3b4c05fcbda3b15397426 Mon Sep 17 00:00:00 2001
From: Stefan Dirsch <sndirsch@suse.com>
Date: Wed, 11 Dec 2024 16:19:34 +0000
Subject: [PATCH 2/5] added automake brq

OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xf86-video-voodoo?expand=0&rev=16
---
 xf86-video-voodoo.spec | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xf86-video-voodoo.spec b/xf86-video-voodoo.spec
index 047bc89..0afd517 100644
--- a/xf86-video-voodoo.spec
+++ b/xf86-video-voodoo.spec
@@ -41,6 +41,7 @@ Patch12:        0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch
 Patch13:        0013-Remove-XAA-support.patch
 Patch14:        0014-drop-dead-code.patch
 Patch15:        0015-drop-remains-of-old-compat-code.patch
+BuildRequires:  automake
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(fontsproto)
 BuildRequires:  pkgconfig(pciaccess) >= 0.8.0

From 6e181cafa70fa4ea87bf01cb80a3835ba9237fb4a3e3d3b7683533e2f63b73b6 Mon Sep 17 00:00:00 2001
From: Stefan Dirsch <sndirsch@suse.com>
Date: Wed, 11 Dec 2024 16:23:42 +0000
Subject: [PATCH 3/5] autoreconf

OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xf86-video-voodoo?expand=0&rev=17
---
 xf86-video-voodoo.spec | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xf86-video-voodoo.spec b/xf86-video-voodoo.spec
index 0afd517..ea7ecf8 100644
--- a/xf86-video-voodoo.spec
+++ b/xf86-video-voodoo.spec
@@ -41,6 +41,7 @@ Patch12:        0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch
 Patch13:        0013-Remove-XAA-support.patch
 Patch14:        0014-drop-dead-code.patch
 Patch15:        0015-drop-remains-of-old-compat-code.patch
+BuildRequires:  autoconf
 BuildRequires:  automake
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(fontsproto)
@@ -96,6 +97,7 @@ supported.
 %autosetup -p1
 
 %build
+autoreconf --force
 %configure
 %make_build
 

From 317a99e3945e3e42aa7ca20ac0aa3f0bdf979c59e5911e8f22a812965c919d10 Mon Sep 17 00:00:00 2001
From: Stefan Dirsch <sndirsch@suse.com>
Date: Wed, 11 Dec 2024 16:32:57 +0000
Subject: [PATCH 4/5] - u_buildfix.patch   * fixes build on i586 (hopefully)

OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xf86-video-voodoo?expand=0&rev=18
---
 u_buildfix.patch          | 12 ++++++++++++
 xf86-video-voodoo.changes |  2 ++
 xf86-video-voodoo.spec    |  1 +
 3 files changed, 15 insertions(+)
 create mode 100644 u_buildfix.patch

diff --git a/u_buildfix.patch b/u_buildfix.patch
new file mode 100644
index 0000000..70c34b3
--- /dev/null
+++ b/u_buildfix.patch
@@ -0,0 +1,12 @@
+diff -u -r xf86-video-voodoo-1.2.6.old/src/voodoo_hardware.c xf86-video-voodoo-1.2.6/src/voodoo_hardware.c
+--- xf86-video-voodoo-1.2.6.old/src/voodoo_hardware.c	2024-12-11 17:27:10.628925000 +0100
++++ xf86-video-voodoo-1.2.6/src/voodoo_hardware.c	2024-12-11 17:29:56.398752000 +0100
+@@ -144,7 +144,7 @@
+ static void pci_enable(VoodooPtr pVoo, int wr, int dac, int fifo)
+ {
+ 	CARD32 x;
+-	PCI_READ_LONG(pVoo->PciInfo, &x, 0x40);
++	PCI_READ_LONG(pVoo->PciInfo, (uint32_t *) &x, 0x40);
+ 	x &= ~7;
+ 	x |= wr;
+ 	x |= fifo<<1;
diff --git a/xf86-video-voodoo.changes b/xf86-video-voodoo.changes
index 41385b7..04db1e9 100644
--- a/xf86-video-voodoo.changes
+++ b/xf86-video-voodoo.changes
@@ -17,6 +17,8 @@ Wed Dec 11 16:10:06 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
   0014-drop-dead-code.patch
   0015-drop-remains-of-old-compat-code.patch
   * latest changes to fix build against current xserver
+- u_buildfix.patch
+  * fixes build on i586 (hopefully)
 
 -------------------------------------------------------------------
 Sun Dec 18 15:32:28 UTC 2022 - Dirk Müller <dmueller@suse.com>
diff --git a/xf86-video-voodoo.spec b/xf86-video-voodoo.spec
index ea7ecf8..0e613fb 100644
--- a/xf86-video-voodoo.spec
+++ b/xf86-video-voodoo.spec
@@ -41,6 +41,7 @@ Patch12:        0012-Drop-ifdefs-for-ABI_VIDEODRV_VERSION-6.patch
 Patch13:        0013-Remove-XAA-support.patch
 Patch14:        0014-drop-dead-code.patch
 Patch15:        0015-drop-remains-of-old-compat-code.patch
+Patch20:        u_buildfix.patch
 BuildRequires:  autoconf
 BuildRequires:  automake
 BuildRequires:  pkgconfig

From e1830aa54cf3a830d7ff0660ef5fab3b06079b5cbbcfa606d75beec37aa7cee3 Mon Sep 17 00:00:00 2001
From: Stefan Dirsch <sndirsch@suse.com>
Date: Wed, 11 Dec 2024 22:04:21 +0000
Subject: [PATCH 5/5] removed no apply-able patch
 0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch

OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xf86-video-voodoo?expand=0&rev=19
---
 ...-libtool-is-installed-in-build-conta.patch | 38 -------------------
 xf86-video-voodoo.changes                     |  3 +-
 xf86-video-voodoo.spec                        |  1 -
 3 files changed, 1 insertion(+), 41 deletions(-)
 delete mode 100644 0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch

diff --git a/0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch b/0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
deleted file mode 100644
index ca2db4e..0000000
--- a/0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 59113321b1eb9b5d476861a0ff82b08cd534365c Mon Sep 17 00:00:00 2001
-From: Alan Coopersmith <alan.coopersmith@oracle.com>
-Date: Fri, 6 Oct 2023 14:36:33 -0700
-Subject: [PATCH 01/15] gitlab CI: ensure libtool is installed in build
- container
-
-Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
----
- .gitlab-ci.yml | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
-index 35a3702..564e281 100644
---- a/.gitlab-ci.yml
-+++ b/.gitlab-ci.yml
-@@ -4,7 +4,7 @@
- # Please see the ci-templates documentation for details:
- # https://freedesktop.pages.freedesktop.org/ci-templates/
- 
--.templates_sha: &template_sha 34f4ade99434043f88e164933f570301fd18b125 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
-+.templates_sha: &template_sha 25e8e9f020880aa35fffe3d6b259b933f0f9449f # see https://docs.gitlab.com/ee/ci/yaml/#includefile
- 
- 
- include:
-@@ -30,8 +30,8 @@ variables:
-   # The tag should be updated each time the list of packages is updated.
-   # Changing a tag forces the associated image to be rebuilt.
-   # Note: the tag has no meaning, we use a date format purely for readability
--  FDO_DISTRIBUTION_TAG:  '2022-01-30.0'
--  FDO_DISTRIBUTION_PACKAGES:  'git gcc pkgconf autoconf automake make xorg-util-macros xorgproto xorg-server-devel pixman libpciaccess'
-+  FDO_DISTRIBUTION_TAG:  '2023-10-06.0'
-+  FDO_DISTRIBUTION_PACKAGES:  'git gcc pkgconf autoconf automake libtool make xorg-util-macros xorgproto xorg-server-devel pixman libpciaccess'
- 
- 
- #
--- 
-2.43.0
-
diff --git a/xf86-video-voodoo.changes b/xf86-video-voodoo.changes
index 04db1e9..e030a2b 100644
--- a/xf86-video-voodoo.changes
+++ b/xf86-video-voodoo.changes
@@ -1,8 +1,7 @@
 -------------------------------------------------------------------
 Wed Dec 11 16:10:06 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
 
-- 0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
-  0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch
+- 0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch
   0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch
   0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch
   0005-Fix-3-Wunused-but-set-variable-warnings.patch
diff --git a/xf86-video-voodoo.spec b/xf86-video-voodoo.spec
index 0e613fb..d71ad65 100644
--- a/xf86-video-voodoo.spec
+++ b/xf86-video-voodoo.spec
@@ -26,7 +26,6 @@ URL:            https://xorg.freedesktop.org/
 Source0:        http://xorg.freedesktop.org/releases/individual/driver/%{name}-%{version}.tar.xz
 Source1:        http://xorg.freedesktop.org/releases/individual/driver/%{name}-%{version}.tar.xz.sig
 Source2:        xf86-video-voodoo.keyring
-#Patch1:         0001-gitlab-CI-ensure-libtool-is-installed-in-build-conta.patch
 Patch2:         0002-configure-Use-LT_INIT-from-libtool-2-instead-of-depr.patch
 Patch3:         0003-Add-X.Org-s-standard-C-warning-flags-to-AM_CFLAGS.patch
 Patch4:         0004-Quiet-Wredundant-decls-from-xorg-os.h-fallbacks-for-.patch