From 053121bf4e9e40a816ec509cc2e28af994ed91cf Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Wed, 25 Dec 2019 02:00:38 -0600 Subject: user/mesa: bump to 19.3.1 - complete overhaul * Supports VA API, XvMC * Vulkan support enabled * Uses 'megadrivers' for significant install-size decrease * Supports many more drivers on ARM machines * Uses Meson instead of autotools --- user/mesa/APKBUILD | 212 +++++++++--------------------- user/mesa/disk_cache-stack-overflow.patch | 42 ------ user/mesa/drmdeps.patch | 41 ------ user/mesa/fix-non-altivec-ppc32.patch | 66 ---------- 4 files changed, 63 insertions(+), 298 deletions(-) delete mode 100644 user/mesa/disk_cache-stack-overflow.patch delete mode 100644 user/mesa/drmdeps.patch delete mode 100644 user/mesa/fix-non-altivec-ppc32.patch diff --git a/user/mesa/APKBUILD b/user/mesa/APKBUILD index 50100c2bb..b6684032d 100644 --- a/user/mesa/APKBUILD +++ b/user/mesa/APKBUILD @@ -1,113 +1,71 @@ # Maintainer: A. Wilcox pkgname=mesa -pkgver=18.3.6 +pkgver=19.3.1 +_llvmver=8 pkgrel=0 pkgdesc="Mesa DRI OpenGL library" url="https://www.mesa3d.org" arch="all" +options="!check" # No test suite. license="MIT AND X11 AND SGI-B-2.0 AND BSL-1.0 AND LGPL-2.1+" -depends= -subpackages="$pkgname-dev - $pkgname-dri-ati:_dri - $pkgname-dri-nouveau:_dri - $pkgname-dri-freedreno:_dri - $pkgname-dri-swrast:_dri - $pkgname-dri-virtio:_dri - $pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles - $pkgname-xatracker $pkgname-osmesa $pkgname-gbm - " -_llvmver=8 +depends="" depends_dev="libdrm-dev libxcb-dev libxdamage-dev libxext-dev libxshmfence-dev xorgproto-dev" -makedepends="$depends_dev byacc eudev-dev expat-dev flex libelf-dev - libvdpau-dev libx11-dev libxfixes-dev libxrandr-dev libxt-dev - libxvmc-dev libxxf86vm-dev llvm$_llvmver-dev makedepend python3 - py3-libxml2 py3-mako zlib-dev" +makedepends="$depends_dev bison eudev-dev expat-dev flex libelf-dev + libva-dev libvdpau-dev libx11-dev libxfixes-dev libxrandr-dev libxt-dev + libxv-dev libxvmc-dev libxxf86vm-dev llvm$_llvmver-dev makedepend meson + ninja python3 py3-libxml2 py3-mako zlib-dev" +subpackages="$pkgname-dev $pkgname-dri + $pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles + $pkgname-xatracker $pkgname-osmesa $pkgname-gbm" +# requires glslang: $pkgname-vulkan-overlay source="https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz + amdgpu-pthread-header.patch musl-fixes.patch musl-fix-includes.patch - amdgpu-pthread-header.patch - disk_cache-stack-overflow.patch - drmdeps.patch - fix-non-altivec-ppc32.patch " _dri_driverdir=/usr/lib/xorg/modules/dri -_dri_drivers="r200,radeon,nouveau,swrast" +_dri_drivers="r200,nouveau" _gallium_drivers="r300,r600,radeonsi,nouveau,freedreno,swrast,virgl" -_vulkan_drivers="radeon" - -builddir="$srcdir/mesa-$pkgver" - -_arch_opts= +_vulkan_drivers="amd" case "$CARCH" in x86* | pmmx) - _dri_drivers="${_dri_drivers},i915,i965" - _gallium_drivers="${_gallium_drivers},svga" + _dri_drivers="${_dri_drivers},i965" + _gallium_drivers="${_gallium_drivers},i915,svga" _vulkan_drivers="${_vulkan_drivers},intel" - subpackages="$subpackages $pkgname-dri-intel:_dri $pkgname-dri-vmwgfx:_dri" ;; aarch64 | arm*) - _gallium_drivers="${_gallium_drivers},vc4" - subpackages="$subpackages $pkgname-dri-vc4:_dri" + _gallium_drivers="${_gallium_drivers},vc4,freedreno,tegra,kmsro,v3d,lima,panfrost,etnativ" + _vulkan_drivers="${_vulkan_drivers},freedreno" case "$CARCH" in armhf) CFLAGS="$CFLAGS -mfpu=neon";; esac ;; +ppc64) + _arch_conf="-Dpower8=false" + ;; esac -prepare() { - default_prepare - libtoolize --force \ - && aclocal \ - && automake --add-missing \ - && autoreconf -} - build() { - export CFLAGS="$CFLAGS -D_XOPEN_SOURCE=700" - PYTHON=python3 ./configure \ - --build=$CBUILD \ - --host=$CHOST \ - --prefix=/usr \ - --sysconfdir=/etc \ - --with-dri-driverdir=$_dri_driverdir \ - --disable-asm \ - --with-gallium-drivers=${_gallium_drivers} \ - --with-dri-drivers=${_dri_drivers} \ - --with-vulkan-drivers=${_vulkan_drivers} \ - --with-llvm-prefix=/usr/lib/llvm$_llvmver \ - --enable-llvm-shared-libs \ - --enable-llvm \ - --with-platforms=x11,drm \ - --enable-shared-glapi \ - --enable-gbm \ - --disable-glx-tls \ - --disable-nine \ - --enable-dri \ - --enable-dri3 \ - --enable-glx \ - --enable-osmesa \ - --enable-gles1 \ - --enable-gles2 \ - --enable-egl \ - --enable-xa \ - --enable-vdpau \ - $_arch_opts - - make -} - -check() { - # Compiler test requires LLVM 3.8 and Python 2 - for i in gtest util mapi; do - make -C "src/$i" check - done + meson \ + -Dprefix=/usr \ + -Ddri-drivers-path=$_dri_driverdir \ + -Dplatforms=x11,drm,surfaceless \ + -Ddri-drivers=$_dri_drivers \ + -Dgallium-drivers=$_gallium_drivers \ + -Dvulkan-drivers=$_vulkan_drivers \ + -Dosmesa=gallium \ + -Duse-elf-tls=false \ + $_arch_conf \ + build + + ninja -C build } package() { - make -j1 DESTDIR="$pkgdir" install + DESTDIR="$pkgdir" ninja -C build install } egl() { @@ -128,7 +86,7 @@ gl() { glapi() { replaces="$pkgname-gles" - pkgdesc="Mesa shared glapi" + pkgdesc="Mesa OpenGL API" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libglapi.so.* \ "$subpkgdir"/usr/lib/ @@ -143,7 +101,7 @@ gles() { } xatracker() { - pkgdesc="Mesa XA state tracker for vmware" + pkgdesc="Mesa XA state tracker for VMware" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libxatracker*.so.* \ "$subpkgdir"/usr/lib/ @@ -157,83 +115,39 @@ osmesa() { } gbm() { - pkgdesc="Mesa gbm library" + pkgdesc="Mesa GBM library" replaces="mesa" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libgbm.so.* \ "$subpkgdir"/usr/lib/ } -_mv_dri() { - install -d "$subpkgdir"/$_dri_driverdir - - while [ $# -gt 0 ]; do - mv "$pkgdir"/$_dri_driverdir/${1}.so \ - "$subpkgdir"/$_dri_driverdir/ || return 1 - shift - done -} - -_mv_vdpau() { - local i - install -d "$subpkgdir"/usr/lib/vdpau - for i in "$@"; do - mv "$pkgdir"/usr/lib/vdpau/libvdpau_$i.* \ - "$subpkgdir"/usr/lib/vdpau/ || return 1 - done -} - -_mv_gpipe() { - return 0 - # http://cgit.freedesktop.org/mesa/mesa/commit/?id=44ec468e8033553c26a112cebba41c343db00eb1 - # https://code.google.com/p/chromium/issues/detail?id=412089 -# local i -# install -d "$subpkgdir"/usr/lib/gallium-pipe -# for i in "$@"; do -# mv "$pkgdir"/usr/lib/gallium-pipe/pipe_$i.* \ -# "$subpkgdir"/usr/lib/gallium-pipe/ || return 1 -# done +vulkan_overlay() { + pkgdesc="Vulkan layer to display information about the current window" + install -d "$subpkgdir"/usr/lib + install -d "$subpkgdir"/usr/share/vulkan/explicit_layer.d + mv "$pkgdir"/usr/lib/libVkLayer_MESA_overlay.so \ + "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/share/vulkan/explicit_layer.d/VkLayer_MESA_overlay.json \ + "$subpkgdir"/usr/share/vulkan/explicit_layer.d/ } -_dri() { - local n="${subpkgname##*-dri-}" - pkgdesc="Mesa DRI driver for $n" - case $n in - ati) - _mv_dri radeon_dri r200_dri r300_dri r600_dri radeonsi_dri \ - && _mv_vdpau r300 r600 radeonsi \ - && _mv_gpipe r300 r600 - ;; - intel) - _mv_dri i915_dri i965_dri - ;; - nouveau) - _mv_dri nouveau_dri nouveau_vieux_dri \ - && _mv_vdpau nouveau \ - && _mv_gpipe nouveau - ;; - freedreno) - _mv_dri msm_dri kgsl_dri - ;; - swrast) - _mv_dri swrast_dri kms_swrast_dri && _mv_gpipe swrast - ;; - vc4) - _mv_dri vc4_dri - ;; - vmwgfx) - _mv_dri vmwgfx_dri && _mv_gpipe vmwgfx - ;; - virtio) - _mv_dri virtio_gpu_dri - ;; - esac +dri() { + pkgdesc="Mesa DRI drivers" + replaces="mesa-dri-ati mesa-dri-freedreno mesa-dri-intel + mesa-dri-nouveau mesa-dri-swrast mesa-dri-tegra mesa-dri-vc4 + mesa-dri-virtio mesa-dri-vmwgfx" + install -d "$subpkgdir"/usr/lib + install -d "$subpkgdir"/usr/share/vulkan + install -d "$subpkgdir"/$_dri_driverdir + mv "$pkgdir"/usr/lib/dri "$subpkgdir"/usr/lib/ + # XvMC drivers + mv "$pkgdir"/usr/lib/libXvMC*.so* "$subpkgdir"/usr/lib/ + mv "$pkgdir"/usr/lib/vdpau "$subpkgdir"/usr/lib/ + mv "$pkgdir"/usr/share/vulkan/icd.d "$subpkgdir"/usr/share/vulkan/ } -sha512sums="3a6dcaba99185e28d162b130bbd760fe87e6072065958189b28f41ea287ef041397897e098d93218a64802cf11c73806f7400a866bd8e5ed69694fa15c147487 mesa-18.3.6.tar.xz -9f7a050f09571a2b17098d495b82e2e85b293fb7285e7d6d7c3c48cd4220a1bdcc61a7321ba78dd14860939ecabe7e89b32d6110f3728f793273e1e26b78a553 musl-fixes.patch -c7d91a660a033df91fac9c557039efc8669f0c26b2d35997d50753938b70d1af0bd110dcab3f8236eafab7d4be5dd7cd128a3e057e67e7e6a38a73fd6a7ef62e musl-fix-includes.patch +sha512sums="338d2e37122ef22cc4e27a2f3c39e23e419703a507ace99383c749a563936c5f0428cce9a68ac80d0bd2ff57be8a55f42aee0ed6d16bf6b77b4e59d428729568 mesa-19.3.1.tar.xz 245d0d64d858dfadeeb544f31f7d0bb6ecb746a7fd5ec99755d679ae1a1eef4198d66473fb24d333eb6786bb8657012771e8285d67f165dc61a031df801947aa amdgpu-pthread-header.patch -f40ff04ac73c090c74d1955de6013c5aa41fb77f28b2b82d89cfc1880306a9ca1dde4581592db19f0a0ec6d85032f1ed5d953103ab0d075f9f0b7e459a028c45 disk_cache-stack-overflow.patch -6800bc62aebfba22a2562c858c27391b47c5675020bd67f040da93ffe4d5d8ac828907a44c7cee6a4ebe63821b58c2515b4012f1f23473670b1de8670426a430 drmdeps.patch -71a397cf9937e623d21abacb2726602f1b5165b18543e11fdfdaac748c221aeafbbda790492a2180b590dace9a17c931c1eac199de32e90c3fa3305706a4011f fix-non-altivec-ppc32.patch" +9f7a050f09571a2b17098d495b82e2e85b293fb7285e7d6d7c3c48cd4220a1bdcc61a7321ba78dd14860939ecabe7e89b32d6110f3728f793273e1e26b78a553 musl-fixes.patch +c7d91a660a033df91fac9c557039efc8669f0c26b2d35997d50753938b70d1af0bd110dcab3f8236eafab7d4be5dd7cd128a3e057e67e7e6a38a73fd6a7ef62e musl-fix-includes.patch" diff --git a/user/mesa/disk_cache-stack-overflow.patch b/user/mesa/disk_cache-stack-overflow.patch deleted file mode 100644 index 3fad95259..000000000 --- a/user/mesa/disk_cache-stack-overflow.patch +++ /dev/null @@ -1,42 +0,0 @@ -The disk cache code tries to allocate a 256 Kbyte buffer on the stack. -Since musl only gives 80 Kbyte of stack space per thread, this causes a trap. - ---- mesa-17.3.1/src/util/disk_cache.c.old 2017-12-21 11:31:22.000000000 -0600 -+++ mesa-17.3.1/src/util/disk_cache.c 2017-12-29 01:17:15.625633901 -0600 -@@ -716,7 +716,7 @@ - deflate_and_write_to_disk(const void *in_data, size_t in_data_size, int dest, - const char *filename) - { -- unsigned char out[BUFSIZE]; -+ unsigned char *out; - - /* allocate deflate state */ - z_stream strm; -@@ -733,6 +733,11 @@ - /* compress until end of in_data */ - size_t compressed_size = 0; - int flush; -+ -+ out = calloc(1, BUFSIZE); -+ if (out == NULL) -+ return 0; -+ - do { - int remaining = in_data_size - BUFSIZE; - flush = remaining > 0 ? Z_NO_FLUSH : Z_FINISH; -@@ -754,6 +759,7 @@ - ssize_t written = write_all(dest, out, have); - if (written == -1) { - (void)deflateEnd(&strm); -+ free(out); - return 0; - } - } while (strm.avail_out == 0); -@@ -768,6 +774,7 @@ - - /* clean up and return */ - (void)deflateEnd(&strm); -+ free(out); - return compressed_size; - } - diff --git a/user/mesa/drmdeps.patch b/user/mesa/drmdeps.patch deleted file mode 100644 index edcb80643..000000000 --- a/user/mesa/drmdeps.patch +++ /dev/null @@ -1,41 +0,0 @@ ---- a/src/gallium/winsys/radeon/drm/Makefile.am 2017-08-10 11:45:20.737377457 -0400 -+++ b/src/gallium/winsys/radeon/drm/Makefile.am 2017-08-10 11:50:23.414534307 -0400 -@@ -7,4 +7,6 @@ - - noinst_LTLIBRARIES = libradeonwinsys.la - -+libradeonwinsys_la_LIBADD = -ldrm_radeon -+ - libradeonwinsys_la_SOURCES = $(C_SOURCES) ---- a/src/gallium/winsys/radeon/drm/Makefile.in 2017-08-10 11:45:25.577298181 -0400 -+++ b/src/gallium/winsys/radeon/drm/Makefile.in 2017-08-10 11:57:11.151189074 -0400 -@@ -119,7 +119,7 @@ - CONFIG_CLEAN_FILES = - CONFIG_CLEAN_VPATH_FILES = - LTLIBRARIES = $(noinst_LTLIBRARIES) --libradeonwinsys_la_LIBADD = -+libradeonwinsys_la_LIBADD = -ldrm_radeon - am__objects_1 = radeon_drm_bo.lo radeon_drm_cs.lo \ - radeon_drm_surface.lo radeon_drm_winsys.lo - am_libradeonwinsys_la_OBJECTS = $(am__objects_1) ---- a/src/gallium/winsys/amdgpu/drm/Makefile.am 2017-12-21 11:31:21.000000000 -0600 -+++ b/src/gallium/winsys/amdgpu/drm/Makefile.am 2017-12-28 19:24:48.613693400 -0600 -@@ -11,6 +11,6 @@ - noinst_LTLIBRARIES = libamdgpuwinsys.la - - libamdgpuwinsys_la_LIBADD = \ -- $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la -+ $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la -ldrm_amdgpu - - libamdgpuwinsys_la_SOURCES = $(C_SOURCES) ---- a/src/gallium/winsys/amdgpu/drm/Makefile.in 2017-12-21 11:31:30.000000000 -0600 -+++ b/src/gallium/winsys/amdgpu/drm/Makefile.in 2017-12-28 19:25:22.553597353 -0600 -@@ -572,7 +572,7 @@ - AM_CXXFLAGS = $(AM_CFLAGS) - noinst_LTLIBRARIES = libamdgpuwinsys.la - libamdgpuwinsys_la_LIBADD = \ -- $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la -+ $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la -ldrm_amdgpu - - libamdgpuwinsys_la_SOURCES = $(C_SOURCES) - all: all-am diff --git a/user/mesa/fix-non-altivec-ppc32.patch b/user/mesa/fix-non-altivec-ppc32.patch deleted file mode 100644 index 846cf5031..000000000 --- a/user/mesa/fix-non-altivec-ppc32.patch +++ /dev/null @@ -1,66 +0,0 @@ ---- mesa-18.3.2/src/util/u_cpu_detect.c.old 2019-01-17 11:26:23.000000000 +0000 -+++ mesa-18.3.2/src/util/u_cpu_detect.c 2019-02-22 19:23:26.620000000 +0000 -@@ -41,6 +41,9 @@ - #if defined(PIPE_ARCH_PPC) - #if defined(PIPE_OS_APPLE) - #include -+#elif defined(PIPE_OS_LINUX) -+#include -+#include - #else - #include - #include -@@ -92,7 +95,7 @@ - #endif - - --#if defined(PIPE_ARCH_PPC) && !defined(PIPE_OS_APPLE) -+#if defined(PIPE_ARCH_PPC) && !defined(PIPE_OS_APPLE) && !defined(PIPE_OS_LINUX) - static jmp_buf __lv_powerpc_jmpbuf; - static volatile sig_atomic_t __lv_powerpc_canjump = 0; - -@@ -126,7 +129,43 @@ - util_cpu_caps.has_altivec = 1; - } - } --#else /* !PIPE_OS_APPLE */ -+#elif defined(PIPE_OS_LINUX) -+ /* Taken from FFmpeg 4.1.1 (LGPL-2.1+) */ -+ // The linux kernel could have the altivec support disabled -+ // even if the cpu has it. -+ int i, ret = 0; -+ int fd = open("/proc/self/auxv", O_RDONLY); -+ unsigned long buf[64] = { 0 }; -+ ssize_t count; -+ boolean enable_vsx = TRUE; -+ /* VSX instructions can be explicitly enabled/disabled via GALLIVM_VSX=1 or 0 */ -+ char *env_vsx = getenv("GALLIVM_VSX"); -+ if (env_vsx && env_vsx[0] == '0') { -+ enable_vsx = FALSE; -+ } -+ -+ if (fd < 0) -+ return 0; -+ -+ while ((count = read(fd, buf, sizeof(buf))) > 0) { -+ for (i = 0; i < count / sizeof(*buf); i += 2) { -+ if (buf[i] == AT_NULL) -+ goto out; -+ if (buf[i] == AT_HWCAP) { -+ if (buf[i + 1] & PPC_FEATURE_HAS_ALTIVEC) -+ util_cpu_caps.has_altivec = 1; -+#ifdef PPC_FEATURE_HAS_VSX -+ if (enable_vsx && buf[i + 1] & PPC_FEATURE_HAS_VSX) -+ util_cpu_caps.has_vsx = 1; -+#endif -+ goto out; -+ } -+ } -+ } -+ -+out: -+ close(fd); -+#else /* !PIPE_OS_APPLE, !PIPE_OS_LINUX */ - /* not on Apple/Darwin, do it the brute-force way */ - /* this is borrowed from the libmpeg2 library */ - signal(SIGILL, sigill_handler); -- cgit v1.2.3-70-g09d2