# Maintainer: Natanael Copa pkgname=mesa-asahi pkgdesc="Mesa DRI OpenGL library" url="https://gitlab.freedesktop.org/asahi/mesa" _asahiver=20230603 _commit=asahi-$_asahiver pkgver=23.1.0_pre$_asahiver pkgrel=0 arch="aarch64" license="MIT SGI-B-2.0 BSL-1.0" subpackages=" $pkgname-dev $pkgname-dri-gallium:_gallium $pkgname-va-gallium:_va $pkgname-vdpau-gallium:_vdpau $pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles $pkgname-xatracker $pkgname-osmesa $pkgname-gbm $pkgname-vulkan-swrast:_vulkan $pkgname-libd3dadapter9 " _llvmver=15 depends_dev=" libdrm-dev libxext-dev libxdamage-dev libxcb-dev libxshmfence-dev " makedepends=" $depends_dev bison expat-dev findutils flex gettext elfutils-dev glslang-dev libtool libxfixes-dev libva-dev libvdpau-dev libx11-dev libxml2-dev libxrandr-dev libxxf86vm-dev llvm$_llvmver-dev lm-sensors-dev meson py3-mako python3 vulkan-loader-dev wayland-dev wayland-protocols xorgproto zlib-dev zstd-dev " #libvdpau-dev #libva-dev # # https://mesa.freedesktop.org/archive/mesa-23.1.0-rc2.tar.xz source=" https://gitlab.freedesktop.org/asahi/mesa/-/archive/$_commit/mesa-$_commit.tar.gz " # $pkgname-$_commitid.tar.gz::https://gitlab.freedesktop.org/asahi/mesa/-/archive/$_commitid/mesa-$_commitid.tar.gz #builddir="$srcdir"/mesa-$pkgver-rc2 builddir="$srcdir"/mesa-asahi-$_asahiver replaces="mesa-dricore" options="!check" # we skip tests intentionally _dri_driverdir=/usr/lib/xorg/modules/dri _vulkan_layers="device-select,overlay" _gallium_drivers="$_gallium_drivers,kmsro,asahi,freedreno" # ~5% smaller _lto=false build() { # use -g1 to generate less debug info: # 485 MiB -> ~80 MiB export CFLAGS="$CFLAGS -O2 -g1" export CXXFLAGS="$CXXFLAGS -O2 -g1" export CPPFLAGS="$CPPFLAGS -O2 -g1" echo '23.0.0' > VERSION case "$CARCH" in armhf|armv7) # gnu2 tlsdesc is broken in binutils export CFLAGS="$CFLAGS -mtls-dialect=gnu" export CXXFLAGS="$CXXFLAGS -mtls-dialect=gnu" ;; esac PATH="$PATH:/usr/lib/llvm$_llvmver/bin" \ abuild-meson \ -Ddri-drivers-path=$_dri_driverdir \ -Dgallium-drivers=swrast,virgl,kmsro,asahi,zink,freedreno \ -Dvulkan-drivers=swrast \ -Dvulkan-layers= \ -Dplatforms=x11,wayland \ -Dllvm=enabled \ -Dshared-llvm=enabled \ -Dshared-glapi=enabled \ -Dgbm=enabled \ -Dglx=dri \ -Dopengl=true \ -Dosmesa=true \ -Dgles1=disabled \ -Dgles2=enabled \ -Ddri3=enabled \ -Degl=enabled \ -Dgallium-extra-hud=true \ -Dgallium-xa=enabled \ -Dgallium-vdpau=enabled \ -Dgallium-va=enabled \ -Dgallium-nine=true \ -Dvideo-codecs=h264dec,h264enc,h265dec,h265enc \ -Db_ndebug=true \ -Db_lto=$_lto \ . output # Print config meson configure --no-pager output # parallel build workaround ninja -C output \ src/compiler/nir/nir_intrinsics.h \ src/util/format/u_format_pack.h \ $build_first meson compile -C output } package() { DESTDIR="$pkgdir" meson install --no-rebuild -C output provides="mesa" replaces="mesa" } egl() { pkgdesc="Mesa libEGL runtime libraries" depends="mesa-asahi=$pkgver-r$pkgrel" provides="mesa-egl" replaces="mesa-egl" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libEGL.so* "$subpkgdir"/usr/lib/ } gl() { pkgdesc="Mesa libGL runtime libraries" depends="mesa-asahi=$pkgver-r$pkgrel" provides="mesa-gl" replaces="mesa-gl" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libGL.so* "$subpkgdir"/usr/lib/ } glapi() { pkgdesc="Mesa shared glapi" replaces="$pkgname-gles=$pkgver-r$pkgrel" provides="mesa-glapi" replaces="mesa-glapi" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libglapi.so.* "$subpkgdir"/usr/lib/ } gles() { pkgdesc="Mesa libGLESv2 runtime libraries" depends="mesa-asahi=$pkgver-r$pkgrel" provides="mesa-gles" replaces="mesa-gles" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libGLES*.so* "$subpkgdir"/usr/lib/ } xatracker() { pkgdesc="Mesa XA state tracker for vmware" depends="mesa-asahi=$pkgver-r$pkgrel" provides="mesa-xatracker" replaces="mesa-xatracker" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libxatracker*.so.* "$subpkgdir"/usr/lib/ } osmesa() { pkgdesc="Mesa offscreen rendering libraries" depends="mesa-asahi=$pkgver-r$pkgrel" provides="mesa-osmesa" replaces="mesa-osmesa" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libOSMesa.so.* "$subpkgdir"/usr/lib/ } gbm() { pkgdesc="Mesa gbm library" depends="mesa-asahi=$pkgver-r$pkgrel" provides="mesa-gbm" replaces="mesa-gbm" install -d "$subpkgdir"/usr/lib mv "$pkgdir"/usr/lib/libgbm.so.* "$subpkgdir"/usr/lib/ } libd3dadapter9() { pkgdesc="Mesa directx9 adapter" depends="mesa-asahi=$pkgver-r$pkgrel" amove usr/lib/d3d/d3dadapter9.so* } # Move links referencing the same file to the subpackage. # Usage: _mv_links # where is one of the libraries covered by the megadriver. # The example is used to find other links that point to the same file. _mv_links() { install -d "$subpkgdir"/$1 find -L "$pkgdir"/$1 -samefile "$pkgdir"/$1/$2 -print0 \ | xargs -0 -I{} mv {} "$subpkgdir"/$1/ } _mv_vulkan() { local i install -d "$subpkgdir"/usr/lib install -d "$subpkgdir"/usr/share/vulkan/icd.d for i in "$@"; do mv "$pkgdir"/usr/lib/libvulkan_$i.so "$subpkgdir"/usr/lib/ mv "$pkgdir"/usr/share/vulkan/icd.d/${i}* "$subpkgdir"/usr/share/vulkan/icd.d/ done } # Mesa uses "megadrivers" where multiple drivers are linked into one shared # library. This library is then hard-linked to separate files (one for each driver). # Each subpackage contains one megadriver so that all the hard-links are preserved. _gallium() { pkgdesc="Mesa gallium DRI drivers" depends="mesa-asahi=$pkgver-r$pkgrel" provides="mesa-dri-gallium" replaces="mesa-dri-gallium" # libgallium_dri.so _mv_links $_dri_driverdir swrast_dri.so } _va() { local n=${subpkgname##*-va-} pkgdesc="Mesa $n VAAPI drivers" depends="mesa=$pkgver-r$pkgrel libva" case $n in gallium) # libgallium_drv_video.so _mv_links /usr/lib/dri radeonsi_drv_video.so ;; esac } _vdpau() { local n=${subpkgname##*-vdpau-} pkgdesc="Mesa $n VDPAU drivers" depends="mesa=$pkgver-r$pkgrel libvdpau" case $n in gallium) # libvdpau_gallium.so.1.0.0 _mv_links /usr/lib/vdpau libvdpau_radeonsi.so.1.0.0 ;; esac } _vulkan() { local n=${subpkgname##*-vulkan-} pkgdesc="Mesa Vulkan API driver for $n" depends="mesa-asahi=$pkgver-r$pkgrel" provides="mesa-vulkan" replaces="mesa-vulkan" case $n in swrast) _mv_vulkan lvp ;; esac } _vulkan_layers() { pkgdesc="collection of vulkan layers from mesa" depends="python3" provides="mesa-vulkan-layers" # Remove this after the release of the next stable (3.14) # it originally was claed layer as it only packaged the # overlay one but now it also packages device-select and # intel-nullhw (on x86*) provides="$pkgname-vulkan-layer=$pkgver-r$pkgrel" replaces="$pkgname-vulkan-layer=$pkgver-r$pkgrel" amove usr/share/vulkan/explicit_layer.d amove usr/share/vulkan/implicit_layer.d amove usr/lib/libVkLayer_*.so amove usr/bin/mesa-overlay-control.py } sha512sums=" 41b8c246e046d0e07cec548ea67315471a0709003291f19eea7bf7a4713ce872279f12955273e217a7f2670c3c00df566f480b4e91109b41570bdcfa5b3c7410 mesa-asahi-20230603.tar.gz "