# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mesa
pkgver=24.3.0
_llvmver=18
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=""
depends_dev="libdrm-dev libxcb-dev libxdamage-dev libxext-dev libxshmfence-dev
xorgproto-dev"
makedepends="$depends_dev bison eudev-dev expat-dev flex libelf-dev libglvnd-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 py3-pygments py3-markupsafe
py3-cparser py3-pyyaml rust wayland-dev wayland-protocols glslang-dev
zlib-dev zstd-dev bindgen-cli cbindgen clang-dev libarchive-dev"
replaces="mesa-egl mesa-gl mesa-glapi mesa-gles"
subpackages="$pkgname-dev $pkgname-dri $pkgname-vulkan-overlay $pkgname-gbm
$pkgname-d3d $pkgname-xatracker $pkgname-osmesa"
source="https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz"
_dri_driverdir=/usr/lib/xorg/modules/dri
_gallium_drivers="r300,r600,radeonsi,nouveau,softpipe,llvmpipe,virgl,zink,svga"
_vulkan_drivers="amd,nouveau,swrast,virtio"
case "$CARCH" in
x86_64)
_gallium_drivers="${_gallium_drivers},i915,svga,crocus"
_vulkan_drivers="${_vulkan_drivers},microsoft-experimental"
_arch_conf="-Dintel-rt=enabled"
;;
x86* | pmmx)
_gallium_drivers="${_gallium_drivers},i915,svga,crocus"
_arch_conf="-Dsse2=false"
;;
aarch64 | arm*)
_gallium_drivers="${_gallium_drivers},vc4,freedreno,tegra,v3d,lima,panfrost,etnaviv"
_vulkan_drivers="${_vulkan_drivers},freedreno,panfrost,broadcom"
case "$CARCH" in
armhf) CFLAGS="$CFLAGS -mfpu=neon";;
esac
;;
ppc64)
_arch_conf="-Dpower8=disabled"
;;
esac
build() {
# This is to fix #796, and is derived from:
# https://gitlab.freedesktop.org/mesa/mesa/-/commit/cc2b3a99ccf035a084d768e5c5ffa81478d685c1
cat > native.file <<EOF
[binaries]
llvm-config = '$(command -v llvm${_llvmver}-config)'
rust = ['rustc', '--target=${CHOST}']
EOF
meson \
--native-file=native.file \
-Dprefix=/usr \
-Ddri-drivers-path=$_dri_driverdir \
-Dgallium-drivers=$_gallium_drivers \
-Dgallium-nine=true \
-Dgallium-opencl=disabled \
-Dgallium-rusticl=false \
-Dgallium-va=enabled \
-Dgallium-vdpau=enabled \
-Dgallium-xa=enabled \
-Dglvnd=enabled \
-Dglx=dri \
-Dmicrosoft-clc=disabled \
-Dopencl-spirv=false \
-Dosmesa=true \
-Dplatforms=x11,wayland \
-Dvideo-codecs=all_free \
-Dvulkan-drivers=$_vulkan_drivers \
-Dvulkan-layers=device-select,overlay \
$_arch_conf \
build
ninja -C build
}
package() {
DESTDIR="$pkgdir" ninja -C build install
}
d3d() {
replaces="mesa"
pkgdesc="Mesa Direct3D adaptor libraries"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/d3d \
"$subpkgdir"/usr/lib/
}
xatracker() {
pkgdesc="Mesa XA state tracker for VMware"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libxatracker*.so.* \
"$subpkgdir"/usr/lib/
}
osmesa() {
pkgdesc="Mesa offscreen rendering libraries"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libOSMesa.so.* \
"$subpkgdir"/usr/lib/
}
gbm() {
pkgdesc="Mesa GBM library"
replaces="mesa"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libgbm.so.* \
"$subpkgdir"/usr/lib/
}
overlay() {
pkgdesc="Vulkan overlays to display information"
install -d "$subpkgdir"/usr/bin
install -d "$subpkgdir"/usr/lib
install -d "$subpkgdir"/usr/share
mv "$pkgdir"/usr/lib/libVkLayer_MESA_*.so \
"$subpkgdir"/usr/lib
mv "$pkgdir"/usr/share/vulkan \
"$subpkgdir"/usr/share/vulkan
mv "$pkgdir"/usr/bin/mesa-overlay-control.py "$subpkgdir"/usr/bin
}
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"
depends="mesa=$pkgver-r$pkgrel"
provides="$replaces"
install -d "$subpkgdir"/usr/lib/xorg/modules
install -d "$subpkgdir"/usr/share/vulkan
mv "$pkgdir"/usr/lib/dri "$subpkgdir"/usr/lib/
mv "$pkgdir"/usr/lib/xorg/modules/dri "$subpkgdir"/usr/lib/xorg/modules/
mv "$pkgdir"/usr/share/drirc.d "$subpkgdir"/usr/share/
mv "$pkgdir"/usr/share/glvnd "$subpkgdir"/usr/share/
mv "$pkgdir"/usr/lib/libgallium*.so* "$subpkgdir"/usr/lib/ || true
# support non-Vulkan arches
mv "$pkgdir"/usr/lib/libvulkan*.so* "$subpkgdir"/usr/lib/ || true
mv "$pkgdir"/usr/lib/vdpau "$subpkgdir"/usr/lib/
mv "$pkgdir"/usr/share/vulkan/icd.d "$subpkgdir"/usr/share/vulkan/
}
sha512sums="20168ae4c278776a60d5febf53b3367cf08bffffb40ef2054821e68d7a8c37a07871d097ab17555f41a4fe716f0de7df95ad7d452b1ed57db6527838eb839ba4 mesa-24.3.0.tar.xz"