From 8b80312330fe5b281804231ceebf5149e2c0b2d0 Mon Sep 17 00:00:00 2001 From: SlimJiM Date: Mon, 20 May 2024 18:23:05 +1200 Subject: [PATCH] New package: mesa-asahi-25.0.0+20241211 --- srcpkgs/MesaLib-asahi-devel | 1 + srcpkgs/libOSMesa-asahi | 1 + srcpkgs/libgbm-asahi | 1 + srcpkgs/libgbm-asahi-devel | 1 + srcpkgs/mesa-asahi-dri | 1 + srcpkgs/mesa-asahi-opencl | 1 + srcpkgs/mesa-asahi-vaapi | 1 + srcpkgs/mesa-asahi-vdpau | 1 + srcpkgs/mesa-asahi-vulkan-overlay-layer | 1 + srcpkgs/mesa-asahi/patches/musl-endian.patch | 19 ++ .../mesa-asahi/patches/musl-stacksize.patch | 37 ++++ srcpkgs/mesa-asahi/patches/musl.patch | 40 ++++ srcpkgs/mesa-asahi/template | 176 ++++++++++++++++++ 13 files changed, 281 insertions(+) create mode 120000 srcpkgs/MesaLib-asahi-devel create mode 120000 srcpkgs/libOSMesa-asahi create mode 120000 srcpkgs/libgbm-asahi create mode 120000 srcpkgs/libgbm-asahi-devel create mode 120000 srcpkgs/mesa-asahi-dri create mode 120000 srcpkgs/mesa-asahi-opencl create mode 120000 srcpkgs/mesa-asahi-vaapi create mode 120000 srcpkgs/mesa-asahi-vdpau create mode 120000 srcpkgs/mesa-asahi-vulkan-overlay-layer create mode 100644 srcpkgs/mesa-asahi/patches/musl-endian.patch create mode 100644 srcpkgs/mesa-asahi/patches/musl-stacksize.patch create mode 100644 srcpkgs/mesa-asahi/patches/musl.patch create mode 100644 srcpkgs/mesa-asahi/template diff --git a/srcpkgs/MesaLib-asahi-devel b/srcpkgs/MesaLib-asahi-devel new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/MesaLib-asahi-devel @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/libOSMesa-asahi b/srcpkgs/libOSMesa-asahi new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/libOSMesa-asahi @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/libgbm-asahi b/srcpkgs/libgbm-asahi new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/libgbm-asahi @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/libgbm-asahi-devel b/srcpkgs/libgbm-asahi-devel new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/libgbm-asahi-devel @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/mesa-asahi-dri b/srcpkgs/mesa-asahi-dri new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/mesa-asahi-dri @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/mesa-asahi-opencl b/srcpkgs/mesa-asahi-opencl new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/mesa-asahi-opencl @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/mesa-asahi-vaapi b/srcpkgs/mesa-asahi-vaapi new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/mesa-asahi-vaapi @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/mesa-asahi-vdpau b/srcpkgs/mesa-asahi-vdpau new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/mesa-asahi-vdpau @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/mesa-asahi-vulkan-overlay-layer b/srcpkgs/mesa-asahi-vulkan-overlay-layer new file mode 120000 index 00000000000..643f3dbeeba --- /dev/null +++ b/srcpkgs/mesa-asahi-vulkan-overlay-layer @@ -0,0 +1 @@ +mesa-asahi \ No newline at end of file diff --git a/srcpkgs/mesa-asahi/patches/musl-endian.patch b/srcpkgs/mesa-asahi/patches/musl-endian.patch new file mode 100644 index 00000000000..57b3cc3d09f --- /dev/null +++ b/srcpkgs/mesa-asahi/patches/musl-endian.patch @@ -0,0 +1,19 @@ +--- a/src/util/u_endian.h 2017-12-21 18:31:22.000000000 +0100 ++++ b/src/util/u_endian.h 2017-12-26 09:22:52.597199480 +0100 +@@ -68,6 +68,16 @@ + + #define PIPE_ARCH_LITTLE_ENDIAN + ++#else ++/* Musl libc */ ++#include ++ ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++# define PIPE_ARCH_LITTLE_ENDIAN ++#elif __BYTE_ORDER == __BIG_ENDIAN ++# define PIPE_ARCH_BIG_ENDIAN ++#endif ++ + #endif + + #endif diff --git a/srcpkgs/mesa-asahi/patches/musl-stacksize.patch b/srcpkgs/mesa-asahi/patches/musl-stacksize.patch new file mode 100644 index 00000000000..cf5b2cd1fb9 --- /dev/null +++ b/srcpkgs/mesa-asahi/patches/musl-stacksize.patch @@ -0,0 +1,37 @@ +--- a/src/c11/impl/threads_posix.c 2022-10-04 16:30:04.564345425 -0400 ++++ b/src/c11/impl/threads_posix.c 2022-10-04 16:43:51.794135619 -0400 +@@ -255,18 +255,33 @@ + thrd_create(thrd_t *thr, thrd_start_t func, void *arg) + { + struct impl_thrd_param *pack; ++#ifdef __GLIBC__ ++ pthread_attr_t *attrp = NULL; ++#else ++ pthread_attr_t attr = { 0 }; ++ pthread_attr_init(&attr); ++ pthread_attr_setstacksize(&attr, 8388608); ++ pthread_attr_t *attrp = &attr; ++#endif + assert(thr != NULL); + pack = (struct impl_thrd_param *)malloc(sizeof(struct impl_thrd_param)); + if (!pack) return thrd_nomem; + pack->func = func; + pack->arg = arg; +- if (pthread_create(thr, NULL, impl_thrd_routine, pack) != 0) { ++ if (pthread_create(thr, attrp, impl_thrd_routine, pack) != 0) { ++#ifndef __GLIBC__ ++ pthread_attr_destroy(&attr); ++#endif + free(pack); + return thrd_error; + } ++#ifndef __GLIBC__ ++ pthread_attr_destroy(&attr); ++#endif + return thrd_success; + } + ++ + // 7.25.5.2 + thrd_t + thrd_current(void) diff --git a/srcpkgs/mesa-asahi/patches/musl.patch b/srcpkgs/mesa-asahi/patches/musl.patch new file mode 100644 index 00000000000..d50221dee72 --- /dev/null +++ b/srcpkgs/mesa-asahi/patches/musl.patch @@ -0,0 +1,40 @@ +--- a/src/util/rand_xor.c 2020-10-03 12:27:48.489024729 +0200 ++++ b/src/util/rand_xor.c 2020-10-03 12:31:05.927113521 +0200 +@@ -28,6 +28,7 @@ + #if defined(HAVE_GETRANDOM) + #include + #endif ++#include /* size_t, ssize_t */ + #include + #include + #endif +--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h ++++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h +@@ -30,6 +30,7 @@ + + #include + #include ++#include + #include "util/list.h" + #include "util/rwlock.h" + #include "ac_gpu_info.h" +--- a/src/gallium/frontends/nine/nine_debug.c 2020-03-06 07:46:48.278918421 +0100 ++++ b/src/gallium/frontends/nine/nine_debug.c 2020-03-06 07:51:32.919964119 +0100 +@@ -65,7 +65,7 @@ _nine_debug_printf( unsigned long flag, + { + static boolean first = TRUE; + static unsigned long dbg_flags = DBG_ERROR | DBG_WARN; +- unsigned long tid = 0; ++ pthread_t tid = 0; + + if (first) { + first = FALSE; +@@ -74,7 +74,7 @@ _nine_debug_printf( unsigned long flag, + + #if defined(HAVE_PTHREAD) + if (dbg_flags & DBG_TID) +- tid = (unsigned long)pthread_self(); ++ tid = pthread_self(); + #endif + + if (dbg_flags & flag) { diff --git a/srcpkgs/mesa-asahi/template b/srcpkgs/mesa-asahi/template new file mode 100644 index 00000000000..c3a68c76b1b --- /dev/null +++ b/srcpkgs/mesa-asahi/template @@ -0,0 +1,176 @@ +# Template file for 'mesa-asahi' +pkgname=mesa-asahi +version=25.0.0+20241211 +revision=1 +_llvmver=19 +_mesaver=${version%+*} +build_style=meson +build_helper="qemu" +#Disable LTO flag should be present, see https://gitlab.freedesktop.org/mesa/mesa/-/issues/6911 +configure_args="-Dglvnd=enabled -Dshared-glapi=enabled -Dgbm=enabled -Degl=enabled + -Dosmesa=true -Dgles1=enabled -Dgles2=enabled -Dglx=dri + -Dlmsensors=enabled -Dplatforms=x11$(vopt_if wayland ,wayland) + -Dllvm=enabled -Db_lto=false -Dcpp_std=gnu++17 + -Dgallium-vdpau=enabled -Dgallium-va=enabled + -Dvulkan-drivers=swrast,virtio -Dvulkan-layers=device-select,overlay + -Dgallium-drivers=swrast,asahi,virgl,zink + -Dgallium-opencl=icd -Dgallium-rusticl=true -Drust_std=2021" +hostmakedepends="gettext flex pkg-config python3-Mako glslang llvm${_llvmver} + $(vopt_if wayland 'wayland-protocols wayland-devel') python3-pycparser python3-yaml + clang${_llvmver} rust rust-bindgen" +makedepends="elfutils-devel expat-devel libXdamage-devel + libXxf86vm-devel libdrm-devel libffi-devel libva-devel + libvdpau-devel libxshmfence-devel ncurses-devel zlib-devel + $(vopt_if wayland 'wayland-devel wayland-protocols') llvm${_llvmver}-devel libsensors-devel + libXrandr-devel libglvnd-devel libzstd-devel libxml2-devel lua53-devel + libarchive-devel vulkan-loader clang${_llvmver} libclc${_llvmver} rust + SPIRV-LLVM-Translator${_llvmver}-devel SPIRV-Tools-devel" +depends="libglvnd" +short_desc="Open source implementation of OpenGL and Vulkan - Asahi" +maintainer="dkwo " +license="MIT, LGPL-2.1-or-later" +homepage="https://www.mesa3d.org/" +changelog="https://docs.mesa3d.org/relnotes.html" +distfiles="https://gitlab.freedesktop.org/asahi/mesa/-/archive/asahi-${version#*+}/mesa-asahi-${version#*+}.tar.gz" +checksum=b92a8a2bf034fd29aa1f619eda241e874be1a4cbd3db0bafaba534eef6674145 +replaces="mesa>=0 mesa-libgallium>=0 libglapi>=0" +provides="mesa-${_mesaver}_${revision} mesa-libgallium-${_mesaver}_${revision} libglapi-${_mesaver}_${revision}" +shlib_provides="libglapi.so libgallium-${_mesaver}-devel.so" + +build_options="wayland" +build_options_default="wayland" + +# Replace old mesa pkgs, superseded by libglvnd. +replaces="libGL>=10_1<19.2.5_2 libEGL>=10_1<19.2.5_2 libGLES>=10_1<19.2.5_2" + +post_configure() { + if [ "$CROSS_BUILD" ]; then + find -iname "*.ninja" -exec sed -i "{}" \ + -e "/rustc/s; --sysroot ${XBPS_CROSS_BASE}/usr;;g" \ + -e "s|-isystem/usr/include||g" \ + \; + fi +} + +post_install() { + vlicense docs/license.rst + + # ensure that each eligible architecture ships its multilib icd files + # in some cases, multiple counterpart architectures may exist (aarch64) + # this allows us to not have to ship these files in the current *-32bit packages + local arch=${XBPS_TARGET_MACHINE%-*} + local oarchs + local olibdir="/usr/lib32/" + if [ "$XBPS_TARGET_WORDSIZE" = "32" ]; then + olibdir="/usr/lib64/" + fi + oarchs="armv6l armv7l" + for oarch in $oarchs; do + for icd in ${DESTDIR}/usr/share/vulkan/icd.d/*_icd.${arch}.json; do + sed "s#/usr/lib${XBPS_TARGET_WORDSIZE}/#${olibdir}#g" \ + ${icd} > ${icd/.${arch}/.${oarch}} + done + done +} + +libgbm-asahi_package() { + short_desc="Mesa Generic buffer management API - runtime" + replaces="libgbm>=0" + provides="libgbm-${_mesaver}_${revision}" + pkg_install() { + vmove "usr/lib/libgbm.so.*" + } +} + +libgbm-asahi-devel_package() { + short_desc="Mesa Generic buffer management API - development files" + depends="libgbm-asahi>=${version}_${revision}" + replaces="libgbm-devel>=0" + provides="libgbm-devel-${_mesaver}_${revision}" + pkg_install() { + vmove usr/include/gbm.h + vmove usr/lib/libgbm.so + vmove usr/lib/pkgconfig/gbm.pc + } +} + +libOSMesa-asahi_package() { + short_desc="Mesa Off-Screen interface library" + replaces="libOSMesa>=0" + provides="libOSMesa-${_mesaver}_${revision}" + pkg_install() { + vmove "usr/lib/libOSMesa.so.*" + } +} + +MesaLib-asahi-devel_package() { + depends="mesa-asahi>=${version}_${revision} libOSMesa-asahi>=${version}_${revision} + libgbm-asahi-devel>=${version}_${revision}" + depends+=" libdrm-devel libglvnd-devel" + replaces="MesaLib-devel>=0" + provides="MesaLib-devel-${_mesaver}_${revision}" + short_desc+=" - development files" + pkg_install() { + vmove usr/include + vmove usr/lib/pkgconfig + vmove usr/lib/libEGL_mesa.so + vmove usr/lib/libGLX_mesa.so + vmove usr/lib/libOSMesa.so + vmove usr/lib/libglapi.so + } +} + +mesa-asahi-dri_package() { + short_desc="Mesa DRI drivers" + depends="mesa-asahi-${version}_${revision}" + replaces="mesa-dri>=0" + provides="mesa-dri-${_mesaver}_${revision}" + shlib_provides="libgallium_dri.so" # workaround for mesa-dri-32bit + pkg_install() { + vmove usr/lib/dri + } +} + +mesa-asahi-opencl_package() { + short_desc="Mesa implementation of OpenCL (r600+ only)" + depends="libclc${_llvmver}" + replaces="mesa-opencl>=0" + provides="mesa-opencl-${_mesaver}_${revision}" + pkg_install() { + vmove etc/OpenCL + vmove usr/lib/gallium-pipe + vmove "usr/lib/libMesaOpenCL.so.*" + vmove "usr/lib/libRusticlOpenCL.so.*" + } +} + +mesa-asahi-vaapi_package() { + short_desc="Mesa VA-API drivers" + replaces="mesa-vaapi>=0" + provides="mesa-vaapi-${_mesaver}_${revision}" + shlib_provides="libgallium_drv_video.so" # workaround for mesa-vaapi-32bit + pkg_install() { + vmove "usr/lib/dri/*_drv_video.so" + } +} + +mesa-asahi-vdpau_package() { + short_desc="Mesa VDPAU drivers" + replaces="mesa-vdpau>=0" + provides="mesa-vdpau-${_mesaver}_${revision}" + pkg_install() { + vmove "usr/lib/vdpau/libvdpau_*" + } +} + +mesa-asahi-vulkan-overlay-layer_package() { + short_desc="Vulkan layer to display information about the running application" + replaces="mesa-vulkan-overlay-layer>=0" + provides="mesa-vulkan-overlay-layer-${_mesaver}_${revision}" + pkg_install() { + vmove "usr/share/vulkan/explicit_layer.d/VkLayer_*.json" + vmove "usr/share/vulkan/implicit_layer.d/VkLayer_*.json" + vmove "usr/bin/mesa-overlay-control.py" + vmove "usr/lib/libVkLayer_*.so" + } +}