summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2019-12-25 02:00:38 -0600
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2019-12-25 02:00:38 -0600
commit053121bf4e9e40a816ec509cc2e28af994ed91cf (patch)
tree9ea93caa18a3781f9821f15cec7011b0491d9e89
parent82c5817cb62ed83a5d708538c7606576987fbab6 (diff)
downloadpackages-053121bf4e9e40a816ec509cc2e28af994ed91cf.tar.gz
packages-053121bf4e9e40a816ec509cc2e28af994ed91cf.tar.bz2
packages-053121bf4e9e40a816ec509cc2e28af994ed91cf.tar.xz
packages-053121bf4e9e40a816ec509cc2e28af994ed91cf.zip
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
-rw-r--r--user/mesa/APKBUILD212
-rw-r--r--user/mesa/disk_cache-stack-overflow.patch42
-rw-r--r--user/mesa/drmdeps.patch41
-rw-r--r--user/mesa/fix-non-altivec-ppc32.patch66
4 files changed, 63 insertions, 298 deletions
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 <awilfox@adelielinux.org>
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 <sys/sysctl.h>
-+#elif defined(PIPE_OS_LINUX)
-+#include <asm/cputable.h>
-+#include <linux/auxvec.h>
- #else
- #include <signal.h>
- #include <setjmp.h>
-@@ -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);