Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes
@ 2020-04-27  0:39 q66
  2020-04-27  0:44 ` q66
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: q66 @ 2020-04-27  0:39 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 901 bytes --]

There is a new pull request by q66 against master on the void-packages repository

https://github.com/void-ppc/void-packages mesa-reorg
https://github.com/void-linux/void-packages/pull/21362

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.

Also fix dependencies of mesa-opencl.

Just PRing this so travis can run.

A patch file from https://github.com/void-linux/void-packages/pull/21362.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mesa-reorg-21362.patch --]
[-- Type: text/x-diff, Size: 9436 bytes --]

From 081dc326dff2420eb6b9259eb677dae1f0796d06 Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
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.

Also fix dependencies of mesa-opencl.
---
 srcpkgs/mesa/template | 208 +++++++++++++++++++++++++++---------------
 1 file changed, 136 insertions(+), 72 deletions(-)

diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template
index fc4550e7686..df805fbe75e 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"
@@ -30,88 +29,153 @@ build_options="wayland"
 build_options_default="wayland"
 
 # Set subpackages manually to set proper rdeps in 32bit pkgs.
-subpackages="libglapi libgbm libOSMesa"
+subpackages="libglapi libgbm libOSMesa mesa-dri"
 
 # 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, dri3 and virgl
+case "$XBPS_TARGET_MACHINE" in
+	i686*|x86_64*|ppc*|armv[67]*|aarch64*)
+		_have_nv=yes
+		_have_dri3=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
+
+if [ "$_have_dri3" ]; then
+	configure_args+=" -Ddri3=true"
+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"
 
 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 +225,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 +245,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.*"

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: mesa: reorg driver config to be mostly feature based + fixes
  2020-04-27  0:39 [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes q66
@ 2020-04-27  0:44 ` q66
  2020-04-27  0:56 ` [PR PATCH] [Updated] " q66
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: q66 @ 2020-04-27  0:44 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 222 bytes --]

New comment by q66 on void-packages repository

https://github.com/void-linux/void-packages/pull/21362#issuecomment-619652448

Comment:
oops, left the conditional dri3 in; will remove that for merge, shouldn't hurt travis

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PR PATCH] [Updated] mesa: reorg driver config to be mostly feature based + fixes
  2020-04-27  0:39 [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes q66
  2020-04-27  0:44 ` q66
@ 2020-04-27  0:56 ` q66
  2020-04-27  1:21 ` q66
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: q66 @ 2020-04-27  0:56 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 906 bytes --]

There is an updated pull request by q66 against master on the void-packages repository

https://github.com/void-ppc/void-packages mesa-reorg
https://github.com/void-linux/void-packages/pull/21362

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.

Also fix dependencies of mesa-opencl.

Just PRing this so travis can run.

A patch file from https://github.com/void-linux/void-packages/pull/21362.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mesa-reorg-21362.patch --]
[-- Type: text/x-diff, Size: 9208 bytes --]

From 3a8f8b86efc673676706b25ae77b3ff28d18e51a Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
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 | 205 +++++++++++++++++++++++++++---------------
 1 file changed, 132 insertions(+), 73 deletions(-)

diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template
index fc4550e7686..b665c26a28e 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.*"

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PR PATCH] [Updated] mesa: reorg driver config to be mostly feature based + fixes
  2020-04-27  0:39 [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes q66
  2020-04-27  0:44 ` q66
  2020-04-27  0:56 ` [PR PATCH] [Updated] " q66
@ 2020-04-27  1:21 ` q66
  2020-04-27  1:44 ` q66
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: q66 @ 2020-04-27  1:21 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 906 bytes --]

There is an updated pull request by q66 against master on the void-packages repository

https://github.com/void-ppc/void-packages mesa-reorg
https://github.com/void-linux/void-packages/pull/21362

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.

Also fix dependencies of mesa-opencl.

Just PRing this so travis can run.

A patch file from https://github.com/void-linux/void-packages/pull/21362.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mesa-reorg-21362.patch --]
[-- Type: text/x-diff, Size: 9948 bytes --]

From d68f147b101ba4a5f25b7e607b094261ec839b18 Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
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() {

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PR PATCH] [Updated] mesa: reorg driver config to be mostly feature based + fixes
  2020-04-27  0:39 [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes q66
                   ` (2 preceding siblings ...)
  2020-04-27  1:21 ` q66
@ 2020-04-27  1:44 ` q66
  2020-04-27  1:57 ` q66
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: q66 @ 2020-04-27  1:44 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 906 bytes --]

There is an updated pull request by q66 against master on the void-packages repository

https://github.com/void-ppc/void-packages mesa-reorg
https://github.com/void-linux/void-packages/pull/21362

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.

Also fix dependencies of mesa-opencl.

Just PRing this so travis can run.

A patch file from https://github.com/void-linux/void-packages/pull/21362.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mesa-reorg-21362.patch --]
[-- Type: text/x-diff, Size: 9915 bytes --]

From e0b4db4799614c6e9d5f5c093045b2965d9b181a Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
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 | 213 +++++++++++++++++++++++++++---------------
 1 file changed, 138 insertions(+), 75 deletions(-)

diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template
index fc4550e7686..3ecdd859b2b 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,141 @@ 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=" -Dgallium-drivers=swrast"
+_vulkan_drivers=" -Dvulkan-drivers="
+# legacy drivers only on x86 and ppc in general
+_dri_drivers=" -Ddri-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+=" ${_gallium_drivers} ${_vulkan_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 +218,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 +238,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 +319,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 +364,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() {

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PR PATCH] [Updated] mesa: reorg driver config to be mostly feature based + fixes
  2020-04-27  0:39 [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes q66
                   ` (3 preceding siblings ...)
  2020-04-27  1:44 ` q66
@ 2020-04-27  1:57 ` q66
  2020-04-27  1:58 ` q66
  2020-04-27  1:59 ` [PR PATCH] [Merged]: " q66
  6 siblings, 0 replies; 8+ messages in thread
From: q66 @ 2020-04-27  1:57 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 906 bytes --]

There is an updated pull request by q66 against master on the void-packages repository

https://github.com/void-ppc/void-packages mesa-reorg
https://github.com/void-linux/void-packages/pull/21362

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.

Also fix dependencies of mesa-opencl.

Just PRing this so travis can run.

A patch file from https://github.com/void-linux/void-packages/pull/21362.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mesa-reorg-21362.patch --]
[-- Type: text/x-diff, Size: 9917 bytes --]

From 644723d928949ba3927c870cb477a8c932d3f42d Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
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 | 214 +++++++++++++++++++++++++++---------------
 1 file changed, 139 insertions(+), 75 deletions(-)

diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template
index fc4550e7686..04911f6b74e 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,142 @@ 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=" -Dgallium-drivers=swrast"
+_vulkan_drivers=" -Dvulkan-drivers="
+# legacy drivers only on x86 and ppc in general
+_dri_drivers=" -Ddri-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"
+		subpackages+=" mesa-tegra-dri"
+	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-v3d-dri mesa-vc4-dri"
+	subpackages+=" 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+=" ${_gallium_drivers} ${_vulkan_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 +219,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 +239,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 +320,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 +365,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() {

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PR PATCH] [Updated] mesa: reorg driver config to be mostly feature based + fixes
  2020-04-27  0:39 [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes q66
                   ` (4 preceding siblings ...)
  2020-04-27  1:57 ` q66
@ 2020-04-27  1:58 ` q66
  2020-04-27  1:59 ` [PR PATCH] [Merged]: " q66
  6 siblings, 0 replies; 8+ messages in thread
From: q66 @ 2020-04-27  1:58 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 906 bytes --]

There is an updated pull request by q66 against master on the void-packages repository

https://github.com/void-ppc/void-packages mesa-reorg
https://github.com/void-linux/void-packages/pull/21362

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.

Also fix dependencies of mesa-opencl.

Just PRing this so travis can run.

A patch file from https://github.com/void-linux/void-packages/pull/21362.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-mesa-reorg-21362.patch --]
[-- Type: text/x-diff, Size: 9958 bytes --]

From 9e420eedd9b883642431becde5fb563682da08bd Mon Sep 17 00:00:00 2001
From: q66 <daniel@octaforge.org>
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.

[ci skip]
---
 srcpkgs/mesa/template | 215 +++++++++++++++++++++++++++---------------
 1 file changed, 140 insertions(+), 75 deletions(-)

diff --git a/srcpkgs/mesa/template b/srcpkgs/mesa/template
index fc4550e7686..014107d2541 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=" -Dgallium-drivers=swrast"
+_vulkan_drivers=" -Dvulkan-drivers="
+# legacy drivers only on x86 and ppc in general
+_dri_drivers=" -Ddri-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 [ "$_have_arm" ]; then
+		_gallium_drivers+=",tegra"
+		# transitional dummy packages
+		subpackages+=" mesa-tegra-dri"
+	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-v3d-dri mesa-vc4-dri"
+	subpackages+=" 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+=" ${_gallium_drivers} ${_vulkan_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() {

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PR PATCH] [Merged]: mesa: reorg driver config to be mostly feature based + fixes
  2020-04-27  0:39 [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes q66
                   ` (5 preceding siblings ...)
  2020-04-27  1:58 ` q66
@ 2020-04-27  1:59 ` q66
  6 siblings, 0 replies; 8+ messages in thread
From: q66 @ 2020-04-27  1:59 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 750 bytes --]

There's a merged pull request on the void-packages repository

mesa: reorg driver config to be mostly feature based + fixes
https://github.com/void-linux/void-packages/pull/21362

Description:
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.

Also fix dependencies of mesa-opencl.

Just PRing this so travis can run.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-04-27  1:59 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-27  0:39 [PR PATCH] mesa: reorg driver config to be mostly feature based + fixes q66
2020-04-27  0:44 ` q66
2020-04-27  0:56 ` [PR PATCH] [Updated] " q66
2020-04-27  1:21 ` q66
2020-04-27  1:44 ` q66
2020-04-27  1:57 ` q66
2020-04-27  1:58 ` q66
2020-04-27  1:59 ` [PR PATCH] [Merged]: " q66

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).