From d68f147b101ba4a5f25b7e607b094261ec839b18 Mon Sep 17 00:00:00 2001 From: q66 Date: Mon, 27 Apr 2020 02:19:35 +0200 Subject: [PATCH] mesa: reorg driver config to be mostly feature based + fixes This makes sure we can simply turn on features on/off per arch in one place and then never explicitly check architecture again. Also makes turning features on/off easy. This also goes back to the manual driver list, so that we aren't subject to mesa randomly turning things on/off. Also, always enable dri3 and glx=dri, this seems to be the default anyway, but be explicit about it; on the other hand, control enablement of gallium-va and other hwdec stuff properly. --- srcpkgs/mesa/template | 215 +++++++++++++++++++++++++++--------------- 1 file changed, 140 insertions(+), 75 deletions(-) diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template index fc4550e7686..f656d03cc4e 100644 --- a/srcpkgs/mesa/template +++ b/srcpkgs/mesa/template @@ -1,14 +1,13 @@ # Template file for 'mesa' pkgname=mesa version=20.0.5 -revision=2 +revision=3 wrksrc="mesa-${version}" build_style=meson configure_args="-Dglvnd=true -Dshared-glapi=true -Dgbm=true -Degl=true - -Dgallium-vdpau=true -Dgallium-xvmc=true -Dosmesa=gallium - -Dgles1=true -Dgles2=true -Dgallium-va=true -Dlmsensors=true - -Dplatforms=x11,drm,$(vopt_if wayland wayland),surfaceless -Dllvm=true - -Db_lto=false" + -Dosmesa=gallium -Dgles1=true -Dgles2=true -Dglx=dri -Ddri3=true + -Dlmsensors=true -Dplatforms=x11,drm,$(vopt_if wayland wayland),surfaceless + -Dllvm=true -Db_lto=false" hostmakedepends="gettext flex libxml2-python llvm pkg-config python3-Mako $(vopt_if wayland 'wayland-protocols wayland-devel') glslang" @@ -35,83 +34,143 @@ subpackages="libglapi libgbm libOSMesa" # 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" +# Driver configuration +# Check for correctness on major mesa version updates +# Particularly, check if any new worthwhile drivers were added + +# swrast always present +_gallium_drivers="swrast" +_vulkan_drivers= +# legacy drivers only on x86 and ppc in general +_dri_drivers= + +# amd drivers only on x86 and ppc +# this also enables clover opencl case "$XBPS_TARGET_MACHINE" in -i686*|x86_64*) - # Enable all x86 drivers. - configure_args+=" -Dgallium-drivers=auto" - configure_args+=" -Ddri-drivers=auto" - configure_args+=" -Dgallium-xa=true -Ddri3=true -Dgallium-nine=true" - configure_args+=" -Dvulkan-drivers=auto" - configure_args+=" -Dgallium-opencl=icd" - configure_args+=" -Dvulkan-overlay-layer=true" + i686*|x86_64*|ppc*) _have_amd=yes ;; +esac + +# hardware video decoding on x86, ppc, aarch64 +case "$XBPS_TARGET_MACHINE" in + i686*|x86_64*|ppc*|aarch64*) _have_hwdec=yes ;; +esac + +# most platforms get nvidia and virgl +case "$XBPS_TARGET_MACHINE" in + i686*|x86_64*|ppc*|armv[67]*|aarch64*) + _have_nv=yes + _have_virgl=yes + ;; +esac + +# x86 additionally gets intel, vmware and gallium nine +case "$XBPS_TARGET_MACHINE" in + i686*|x86_64*) + _have_intel=yes + _have_vmware=yes + _have_nine=yes + ;; +esac + +if [ "$_have_amd" ]; then + # amd cards can use clover + _have_opencl=yes + _gallium_drivers+=",r300,r600,radeonsi" + _vulkan_drivers+=",amd" + _dri_drivers+=",r100,r200" + subpackages+=" mesa-vulkan-radeon" + # transitional dummy packages + subpackages+=" mesa-ati-dri" +fi + +if [ "$_have_intel" ]; then + _gallium_drivers+=",iris" + _vulkan_drivers+=",intel" + _dri_drivers+=",i915,i965" + subpackages+=" mesa-vulkan-intel" + # transitional dummy packages + subpackages+=" mesa-intel-dri" +fi + +if [ "$_have_nv" ]; then + _gallium_drivers+=",nouveau" + if [ -n "$_have_arm" ]; then + _gallium_drivers+=",tegra" + else + _dri_drivers+=",nouveau" + fi + # transitional dummy packages + subpackages+=" mesa-nouveau-dri" +fi + +if [ "$_have_arm" ]; then + _gallium_drivers+=",kmsro" + _gallium_drivers+=",v3d,vc4,freedreno,etnaviv,lima,panfrost" + # transitional dummy packages + subpackages+=" mesa-kmsro-dri mesa-tegra-dri mesa-nouveau-dri mesa-v3d-dri" + subpackages+=" mesa-vc4-dri mesa-etnaviv-dri mesa-freedreno-dri" + subpackages+=" mesa-lima-dri mesa-panfrost-dri" +fi + +if [ "$_have_virgl" ]; then + _gallium_drivers+=",virgl" +fi + +if [ "$_have_nine" ]; then + configure_args+=" -Dgallium-nine=true" +fi + +if [ "$_have_vmware" ]; then + _gallium_drivers+=",svga" + configure_args+=" -Dgallium-xa=true" + subpackages+=" libxatracker" + # transitional dummy packages + subpackages+=" mesa-vmwgfx-dri" +else + configure_args+=" -Dgallium-xa=false" +fi + +# enabled currently by amd drivers +if [ "$_have_opencl" ]; then hostmakedepends+=" clang" makedepends+=" libclc-git" - subpackages+=" libxatracker mesa-opencl mesa-dri mesa-vaapi mesa-vdpau" - subpackages+=" mesa-XvMC mesa-vulkan-intel mesa-vulkan-radeon mesa-vulkan-overlay-layer" - # Transitional dummy packages - subpackages+=" mesa-ati-dri mesa-intel-dri mesa-nouveau-dri mesa-vmwgfx-dri" - ;; -ppc*) - # Enable all ppc drivers. - configure_args+=" -Dgallium-drivers=r300,r600,radeonsi,swrast,nouveau,virgl" - configure_args+=" -Ddri-drivers=r100,r200,nouveau" - configure_args+=" -Dgallium-xa=false -Ddri3=true -Dgallium-opencl=icd" - configure_args+=" -Dvulkan-drivers=amd" + subpackages+=" mesa-opencl" + configure_args+=" -Dgallium-opencl=icd" +fi + +if [ "$_have_hwdec" ]; then + configure_args+=" -Dgallium-vdpau=true -Dgallium-va=true -Dgallium-xvmc=true" + subpackages+=" mesa-vaapi mesa-vdpau mesa-XvMC" +else + configure_args+=" -Dgallium-vdpau=false -Dgallium-va=false -Dgallium-xvmc=false" +fi + +configure_args+=" -Dgallium-drivers=${_gallium_drivers}" +configure_args+=" -Dvulkan-drivers=${_vulkan_drivers}" +configure_args+=" -Ddri-drivers=${_dri_drivers}" + +if [ "$_vulkan_drivers" ]; then configure_args+=" -Dvulkan-overlay-layer=true" - # Explicitly control power8 feature usage, disable on BE - case "$XBPS_TARGET_MACHINE" in - ppc64le*) configure_args+=" -Dpower8=true";; - *) configure_args+=" -Dpower8=false";; - esac - hostmakedepends+=" clang" - makedepends+=" libclc-git" - subpackages+=" mesa-opencl mesa-dri mesa-vaapi mesa-vdpau mesa-XvMC mesa-vulkan-radeon" subpackages+=" mesa-vulkan-overlay-layer" - # Transitional dummy packages - subpackages+=" mesa-ati-dri mesa-nouveau-dri" - ;; -aarch64*) - # Enable all ARM drivers - configure_args+=" -Dgallium-drivers=auto" - configure_args+=" -Dvulkan-drivers= -Ddri-drivers=" - configure_args+=" -Dgallium-xa=false -Ddri3=true" - subpackages+=" mesa-dri mesa-vaapi mesa-vdpau mesa-XvMC" - # Transitional dummy packages - subpackages+=" mesa-kmsro-dri mesa-tegra-dri mesa-nouveau-dri mesa-v3d-dri mesa-vc4-dri" - subpackages+=" mesa-etnaviv-dri mesa-freedreno-dri mesa-lima-dri mesa-panfrost-dri" - ;; -armv[67]l*) - configure_args+=" -Dgallium-drivers=auto" - configure_args+=" -Dvulkan-drivers= -Ddri-drivers= -Dgallium-xvmc=false" - configure_args+=" -Dgallium-xa=false -Dgallium-vdpau=false -Dgallium-va=false" - subpackages+=" mesa-dri" - # Transitional dummy packages - subpackages+=" mesa-etnaviv-dri mesa-freedreno-dri mesa-kmsro-dri mesa-lima-dri mesa-panfrost-dri mesa-vc4-dri" - ;; -*) - # Enable swrast driver. - configure_args+=" -Dgallium-drivers=swrast" - configure_args+=" -Ddri-drivers= -Dvulkan-drivers= -Dgallium-va=false" - configure_args+=" -Dgallium-vdpau=false -Dgallium-xvmc=false" - configure_args+=" -Dgallium-xa=false" - subpackages+=" mesa-dri" - ;; -esac +fi -# -devel must be the last one for proper order. -subpackages+=" MesaLib-devel" +# must be the last one for proper order +subpackages+=" mesa-dri MesaLib-devel" case "$XBPS_TARGET_MACHINE" in - i686) configure_args+=" -Ddri-drivers-path=/usr/lib32/xorg/modules/drivers";; - *) configure_args+=" -Ddri-drivers-path=/usr/lib/xorg/modules/drivers";; + ppc64le*) configure_args+=" -Dpower8=true" ;; + ppc*) configure_args+=" -Dpower8=false" ;; esac case "$XBPS_TARGET_MACHINE" in - # Disable TLS with musl: https://gitlab.freedesktop.org/mesa/mesa/issues/966 - *-musl) configure_args+=" -Duse-elf-tls=false";; - *) configure_args+=" -Dglx=dri";; + i686) configure_args+=" -Ddri-drivers-path=/usr/lib32/xorg/modules/drivers";; + *) configure_args+=" -Ddri-drivers-path=/usr/lib/xorg/modules/drivers";; esac +if [ "$XBPS_TARGET_LIBC" = "musl" ]; then + configure_args+=" -Duse-elf-tls=false" +fi + post_configure() { if [ "$CROSS_BUILD" ]; then find -iname "*.ninja" -exec sed -i "{}" \ @@ -161,9 +220,9 @@ MesaLib-devel_package() { libdrm-devel libglvnd-devel libOSMesa>=${version}_${revision} libgbm>=${version}_${revision} mesa>=${version}_${revision}" - case "$XBPS_TARGET_MACHINE" in - i686*|x86_64*) depends+=" libxatracker>=${version}_${revision}";; - esac + if [ "$_have_vmware" ]; then + depends+=" libxatracker>=${version}_${revision}" + fi short_desc+=" - development files" pkg_install() { vmove usr/include @@ -181,7 +240,7 @@ libxatracker_package() { mesa-opencl_package() { short_desc="Mesa implementation of OpenCL (r600+ only)" - depends="libclc libOpenCL" + depends="libclc-git ocl-icd" pkg_install() { vmove etc/OpenCL vmove "usr/lib/libMesaOpenCL.so.*" @@ -262,7 +321,10 @@ mesa-ati-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for ATI GPUs (transitional dummy package)" - depends="mesa-dri mesa-vaapi mesa-vdpau mesa-XvMC mesa-vulkan-radeon" + depends="mesa-dri mesa-vulkan-radeon" + if [ "$_have_hwdec" ]; then + depends+=" mesa-vaapi mesa-vdpau mesa-XvMC" + fi } mesa-etnaviv-dri_package() { @@ -304,7 +366,10 @@ mesa-nouveau-dri_package() { build_style=meta lib32mode=full short_desc="Mesa DRI drivers for NVIDIA GPUs (transitional dummy package)" - depends="mesa-dri mesa-vaapi mesa-vdpau mesa-XvMC" + depends="mesa-dri" + if [ "$_have_hwdec" ]; then + depends+=" mesa-vaapi mesa-vdpau mesa-XvMC" + fi } mesa-panfrost-dri_package() {