Last active
April 16, 2021 14:06
-
-
Save wicast/c984f2af3e157f4e9fe1d64293aa9f88 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pkgbase=mesa | |
pkgname=('vulkan-mesa-layers' 'opencl-mesa' 'vulkan-panfrost' 'mesa') | |
pkgdesc="An open-source implementation of the OpenGL specification" | |
pkgver=21.0.2 | |
pkgrel=1 | |
arch=('any') | |
makedepends=('python-mako' 'libxml2' 'libx11' 'xorgproto' 'libdrm' 'libxshmfence' 'libxxf86vm' | |
'libxdamage' 'libvdpau' 'libva' 'wayland' 'wayland-protocols' 'zstd' 'elfutils' 'llvm' | |
'libomxil-bellagio' 'libclc' 'clang' 'libglvnd' 'libunwind' 'lm_sensors' 'libxrandr' | |
'glslang' 'vulkan-icd-loader' 'cmake' 'meson') | |
url="https://www.mesa3d.org/" | |
license=('custom') | |
source=(git+file:///home/wicast/Third-party/mesa/#branch=panvk | |
0001-Rip-out-VC4-forced-NEON.patch | |
LICENSE) | |
sha512sums=('SKIP' | |
'57e23d911d3de9bb4021d3d417270483d6edd53a81ad2d59b4e9cf2a9970901cde582b4a2167ee6d9ed47bd9ca90c3abd4e7cee38c028ad5ad183493560e7faf' | |
'f9f0d0ccf166fe6cb684478b6f1e1ab1f2850431c06aa041738563eb1808a004e52cdec823c103c9e180f03ffc083e95974d291353f0220fe52ae6d4897fecc7') | |
prepare() { | |
cd mesa | |
[[ $CARCH == "armv6h" || $CARCH == "armv7h" ]] && patch -p1 -i ../0001-Rip-out-VC4-forced-NEON.patch || true | |
} | |
build() { | |
MESON_OPT="-D asm=false" | |
case "${CARCH}" in | |
armv6h) GALLIUM=",vc4" ;; | |
armv7h) GALLIUM=",etnaviv,kmsro,lima,panfrost,tegra,v3d,vc4" ;; | |
aarch64) GALLIUM=",etnaviv,kmsro,lima,panfrost,v3d,vc4" ;; | |
esac | |
arch-meson mesa build --buildtype debugoptimized \ | |
-D b_lto=false \ | |
-D b_ndebug=true \ | |
-D platforms=x11,wayland \ | |
-D dri-drivers=r100,r200,nouveau \ | |
-D gallium-drivers=swrast,panfrost \ | |
-D vulkan-drivers=panfrost \ | |
-D vulkan-overlay-layer=true \ | |
-D vulkan-device-select-layer=true \ | |
-D dri3=enabled \ | |
-D egl=enabled \ | |
-D gallium-extra-hud=true \ | |
-D gallium-nine=false \ | |
-D gallium-omx=disabled \ | |
-D gallium-opencl=icd \ | |
-D gallium-va=disabled \ | |
-D gallium-vdpau=disabled \ | |
-D gallium-xa=disabled \ | |
-D gallium-xvmc=disabled \ | |
-D gbm=enabled \ | |
-D gles1=disabled \ | |
-D gles2=enabled \ | |
-D glvnd=true \ | |
-D glx=dri \ | |
-D libunwind=disabled \ | |
-D llvm=enabled \ | |
-D lmsensors=enabled \ | |
-D osmesa=true \ | |
-D shared-glapi=enabled \ | |
-D microsoft-clc=disabled \ | |
-D valgrind=disabled $MESON_OPT | |
# Print config | |
meson configure build | |
ninja -C build | |
meson compile -C build | |
# fake installation to be seperated into packages | |
# outside of fakeroot but mesa doesn't need to chown/mod | |
DESTDIR="${srcdir}/fakeinstall" meson install -C build | |
} | |
_install() { | |
local src f dir | |
for src; do | |
f="${src#fakeinstall/}" | |
dir="${pkgdir}/${f%/*}" | |
install -m755 -d "${dir}" | |
mv -v "${src}" "${dir}/" | |
done | |
} | |
package_vulkan-mesa-layers() { | |
pkgdesc="Mesa's Vulkan layers" | |
depends=('libdrm' 'libxcb' 'wayland' 'python') | |
conflicts=('vulkan-mesa-layer') | |
replaces=('vulkan-mesa-layer') | |
_install fakeinstall/usr/share/vulkan/explicit_layer.d | |
_install fakeinstall/usr/lib/libVkLayer_MESA_overlay.so | |
_install fakeinstall/usr/bin/mesa-overlay-control.py | |
_install fakeinstall/usr/share/vulkan/implicit_layer.d | |
_install fakeinstall/usr/lib/libVkLayer_MESA_device_select.so | |
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE | |
} | |
package_opencl-mesa() { | |
pkgdesc="OpenCL support for AMD/ATI Radeon mesa drivers" | |
depends=('libdrm' 'libclc' 'clang') | |
optdepends=('opencl-headers: headers necessary for OpenCL development') | |
provides=('opencl-driver') | |
_install fakeinstall/etc/OpenCL | |
_install fakeinstall/usr/lib/lib*OpenCL* | |
_install fakeinstall/usr/lib/gallium-pipe | |
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE | |
} | |
#package_vulkan-radeon() { | |
# pkgdesc="Radeon's Vulkan mesa driver" | |
# depends=('wayland' 'libx11' 'libxshmfence' 'libelf' 'libdrm' 'llvm-libs') | |
# optdepends=('vulkan-mesa-layers: additional vulkan layers') | |
# provides=('vulkan-driver') | |
# | |
# _install fakeinstall/usr/share/vulkan/icd.d/radeon_icd*.json | |
# _install fakeinstall/usr/lib/libvulkan_radeon.so | |
# | |
# install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE | |
#} | |
#package_vulkan-swrast() { | |
# pkgdesc="Vulkan software rasteriser driver" | |
# depends=('wayland' 'libx11' 'libxshmfence' 'libdrm' 'zstd' 'llvm-libs') | |
# optdepends=('vulkan-mesa-layers: additional vulkan layers') | |
# conflicts=('vulkan-mesa') | |
# replaces=('vulkan-mesa') | |
# provides=('vulkan-driver') | |
# | |
# _install fakeinstall/usr/share/vulkan/icd.d/lvp_icd*.json | |
# _install fakeinstall/usr/lib/libvulkan_lvp.so | |
# | |
# install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE | |
#} | |
package_vulkan-panfrost() { | |
pkgdesc="Panfrost's Vulkan mesa driver" | |
depends=('wayland' 'libx11' 'libxshmfence' 'libdrm') | |
optdepends=('vulkan-mesa-layers: additional vulkan layers') | |
provides=('vulkan-driver') | |
_install fakeinstall/usr/share/vulkan/icd.d/panfrost_icd*.json | |
_install fakeinstall/usr/lib/libvulkan_panfrost.so | |
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE | |
} | |
package_mesa() { | |
depends=('libdrm' 'wayland' 'libxxf86vm' 'libxdamage' 'libxshmfence' 'libelf' | |
'libomxil-bellagio' 'libunwind' 'llvm-libs' 'lm_sensors' 'libglvnd' | |
'zstd' 'vulkan-icd-loader') | |
depends+=('libsensors.so' 'libexpat.so' 'libvulkan.so') | |
optdepends=('opengl-man-pages: for the OpenGL API man pages' | |
'mesa-vdpau: for accelerated video playback' | |
'libva-mesa-driver: for accelerated video playback') | |
provides=('mesa-libgl' 'opengl-driver') | |
conflicts=('mesa-libgl') | |
replaces=('mesa-libgl') | |
_install fakeinstall/usr/share/drirc.d/00-mesa-defaults.conf | |
_install fakeinstall/usr/share/glvnd/egl_vendor.d/50_mesa.json | |
# ati-dri, nouveau-dri, intel-dri, svga-dri, swrast, swr | |
_install fakeinstall/usr/lib/dri/*_dri.so | |
#_install fakeinstall/usr/lib/bellagio | |
#_install fakeinstall/usr/lib/d3d | |
_install fakeinstall/usr/lib/lib{gbm,glapi}.so* | |
_install fakeinstall/usr/lib/libOSMesa.so* | |
# in vulkan-headers | |
rm -rfv fakeinstall/usr/include/vulkan | |
_install fakeinstall/usr/include | |
rm -f fakeinstall/usr/lib/pkgconfig/{egl,gl}.pc | |
_install fakeinstall/usr/lib/pkgconfig | |
# libglvnd support | |
_install fakeinstall/usr/lib/libGLX_mesa.so* | |
_install fakeinstall/usr/lib/libEGL_mesa.so* | |
# indirect rendering | |
ln -s /usr/lib/libGLX_mesa.so.0 "${pkgdir}/usr/lib/libGLX_indirect.so.0" | |
# make sure there are no files left to install | |
find fakeinstall -depth -print0 | xargs -0 rmdir | |
install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment