summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGonçalo Negrier Duarte <gonegrier.duarte@gmail.com>2024-04-29 15:31:00 +0100
committerMatt Turner <mattst88@gentoo.org>2024-05-08 16:42:50 -0400
commitb0dfc07d460383e694939048199ea032b7a2d31e (patch)
treed0aabcadacdc97d343abb97d1c2cbbc70a352a82 /media-libs/mesa
parentdev-util/intel_clc: Version bump to 24.1.0_rc3 (diff)
downloadgentoo-b0dfc07d460383e694939048199ea032b7a2d31e.tar.gz
gentoo-b0dfc07d460383e694939048199ea032b7a2d31e.tar.bz2
gentoo-b0dfc07d460383e694939048199ea032b7a2d31e.zip
media-libs/mesa: Add VIDEO_CARDS=nvk
* Add VIDEO_CARDS=nvk to build the Vulkan driver for NVIDIA GPUs * Add all Rust submodules required by NVK * Fix rust submodules not compiling on multilib system (see * https://gitlab.freedesktop.org/mesa/mesa/-/issues/10490) * Limit meson to < 1.4.0, to avoid a regression building Rust submodules * Mesa bug report: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10855 * Meson bug report: https://github.com/mesonbuild/meson/issues/12973 * Notes: since nouveau is also required make sure VIDEO_CARDS=nouveau is also set. Closes: https://github.com/gentoo/gentoo/pull/35658 Signed-off-by: Gonçalo Negrier Duarte <gonegrier.duarte@gmail.com> Signed-off-by: Matt Turner <mattst88@gentoo.org>
Diffstat (limited to 'media-libs/mesa')
-rw-r--r--media-libs/mesa/Manifest5
-rw-r--r--media-libs/mesa/mesa-9999.ebuild74
2 files changed, 73 insertions, 6 deletions
diff --git a/media-libs/mesa/Manifest b/media-libs/mesa/Manifest
index 7ae411f2b90d..47794ae1af38 100644
--- a/media-libs/mesa/Manifest
+++ b/media-libs/mesa/Manifest
@@ -2,3 +2,8 @@ DIST mesa-24.0.4.tar.xz 20057744 BLAKE2B 6de755081f7e9dd9303af791e1a405203388787
DIST mesa-24.0.5.tar.xz 20096384 BLAKE2B c4c5f493206f761a7171f19c6549dc791559a1fdbcf49aea98016f98c10f9130081a16df6b780062621495a42dc49ef5f0800bda64058e8ba60106f6a046ccef SHA512 9476af4b9ac8db5dce397084ef169927d10b28adea7e74aa5b3136810b499ac98ddf7ab564e7d1ff81c887208c8ebab3ad2d4e27e7f46136609b5c67527018eb
DIST mesa-24.0.6.tar.xz 20115628 BLAKE2B 531482c1a01ec4c0bd6b2f0857640c14fcc2ba70e85a14e4edf0f44ba466c12e39ad067690e6a571a0744ae06080943b1328a29263225cb7570f119464e17fbe SHA512 60fcc77132c3cb0c98e650d97d3324bfd18abe7f8f8a3aa5209f71b2fddd94510f939bbf5272b2241749307184d5badde9da4842be57ce13f5760875885ea6fc
DIST mesa-24.1.0-rc1.tar.xz 28863968 BLAKE2B 6d1b72395c208fcc82838f42b79455ebde3474a5e0362f6ee0ca52031c5ea15e1419bd4c9768649eecdeea51806e3dd7584fc70941b36efc23eb39a1716ac425 SHA512 575252e76e9fd0266ca9cdb0acb8b12f2890dcecca904ff46b81d439d70520d58f719c90806a4a72d553fca4214cfa3333e1271a8831a1e6a68ca257affc84e3
+DIST paste-1.0.14.tar.gz 18429 BLAKE2B 88f533fd336bbbe24872b100777703832ff46b52970b94981fea202726de35ac0d3466f96370fa89c966b33e0f13c75cbf7f5f88bba290dc490a63c9e08a0b16 SHA512 0ec40c228afe645cb027a99c8bd8f7c65158aab48655018a45736727906b05f7354df114405f2eae88c4eba73dec62e8228f8be9834afa0f22b5f31c18006d34
+DIST proc-macro2-1.0.70.tar.gz 46747 BLAKE2B 808e3a30c89fd979663899124853d386cc53862621f4d872bba87fe91baccddbc6612bd658b4c18b44f8420fcb10700b2906cde9c9512a616ab800ebbfb0867d SHA512 cd5c41ef6a410e310e90828a33fee42c1e2bf30dfc2b0a0cf429fcc60fa1262393c977b2cab5f8a50a35fd1394fd6cc7e7a482581f88dcde20d9ad030c7414a5
+DIST quote-1.0.33.tar.gz 32169 BLAKE2B 2438915aebe30b79929ddc6ed8bad5282537b081c763a3d6b2b9483b63e7b5e99b9bba6f1f7deb725031b23384410b60c7cc4aef0b00bb1d94541cde54408ee3 SHA512 3c000577d0e9f82bc379570a4fa63283d73cfc6dee0475475ba201994491dece0110cdefc26fcf9a3b9d0bf50a3649ca5b68c8a0f6f2e620946b624ff8b8f38b
+DIST syn-2.0.39.tar.gz 286899 BLAKE2B 8bf5e89cb961195b48896294dc876d4e5e81fe7ac1df5330b972e6fdcfa2cf89fd1467f315081f84c1f447d402850e0ab4c7dc2bd20271c5e2bc9a2e3008f70b SHA512 2ee6bb196bef427a9b9aada38fb3a3a11e893c4e9e8808063f544f5c05cda58d554dfea24488dd60b4c299457852b52bf17e5de8595333ff4f2358441964c672
+DIST unicode-ident-1.0.12.tar.gz 50118 BLAKE2B 04e2651e14251d68f4e7e70e1e7a6d5eded21aa4f684c6162a91608189f6dcabaca4aa22204c40e08c82d76773c679ff965f21836264885a3b4cb62d7aa762db SHA512 0d0228bfd8eb6a94d8ae4a003511dd5ad52a58b08d98a8f0a8c5e3dc8b3e6b987ea5009255dc1e9c411f91aec16edc4aaff26ed7a9c48430272f970cd2a9510d
diff --git a/media-libs/mesa/mesa-9999.ebuild b/media-libs/mesa/mesa-9999.ebuild
index a25510a044f3..f9c4e1acfcbb 100644
--- a/media-libs/mesa/mesa-9999.ebuild
+++ b/media-libs/mesa/mesa-9999.ebuild
@@ -7,18 +7,36 @@ LLVM_COMPAT=( {15..17} )
LLVM_OPTIONAL=1
PYTHON_COMPAT=( python3_{10..12} )
-inherit llvm-r1 meson-multilib python-any-r1 linux-info
+inherit llvm-r1 meson-multilib python-any-r1 linux-info rust-toolchain
MY_P="${P/_/-}"
+SYN_PV=2.0.39
+PROC_MACRO2_PV=1.0.70
+QUOTE_PV=1.0.33
+UNICODE_IDENT_PV=1.0.12
+PASTE_PV=1.0.14
+
+NAK_URI="
+ https://github.com/dtolnay/syn/archive/refs/tags/${SYN_PV}.tar.gz -> syn-${SYN_PV}.tar.gz
+ https://github.com/dtolnay/proc-macro2/archive/refs/tags/${PROC_MACRO2_PV}.tar.gz -> proc-macro2-${PROC_MACRO2_PV}.tar.gz
+ https://github.com/dtolnay/quote/archive/refs/tags/${QUOTE_PV}.tar.gz -> quote-${QUOTE_PV}.tar.gz
+ https://github.com/dtolnay/unicode-ident/archive/refs/tags/${UNICODE_IDENT_PV}.tar.gz -> unicode-ident-${UNICODE_IDENT_PV}.tar.gz
+ https://github.com/dtolnay/paste/archive/refs/tags/${PASTE_PV}.tar.gz -> paste-${PASTE_PV}.tar.gz
+"
+
DESCRIPTION="OpenGL-like graphic library for Linux"
HOMEPAGE="https://www.mesa3d.org/ https://mesa.freedesktop.org/"
if [[ ${PV} == 9999 ]]; then
EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/mesa.git"
+ SRC_URI="${NAK_URI}"
inherit git-r3
else
- SRC_URI="https://archive.mesa3d.org/${MY_P}.tar.xz"
+ SRC_URI="
+ https://archive.mesa3d.org/${MY_P}.tar.xz
+ ${NAK_URI}
+ "
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-solaris"
fi
S="${WORKDIR}/${MY_P}"
@@ -28,7 +46,7 @@ LICENSE="MIT SGI-B-2.0"
SLOT="0"
RADEON_CARDS="r300 r600 radeon radeonsi"
-VIDEO_CARDS="${RADEON_CARDS} d3d12 freedreno intel lavapipe lima nouveau panfrost v3d vc4 virgl vivante vmware"
+VIDEO_CARDS="${RADEON_CARDS} d3d12 freedreno intel lavapipe lima nouveau nvk panfrost v3d vc4 virgl vivante vmware"
for card in ${VIDEO_CARDS}; do
IUSE_VIDEO_CARDS+=" video_cards_${card}"
done
@@ -55,6 +73,7 @@ REQUIRED_USE="
video_cards_lavapipe? ( llvm vulkan )
video_cards_radeon? ( x86? ( llvm ) amd64? ( llvm ) )
video_cards_r300? ( x86? ( llvm ) amd64? ( llvm ) )
+ video_cards_nvk? ( vulkan video_cards_nouveau )
vdpau? ( X )
xa? ( X )
zink? ( opengl vulkan )
@@ -126,6 +145,8 @@ DEPEND="${RDEPEND}
x11-base/xorg-proto
)
"
+# meson-1.4.0 contains a regression, so it fails to compile nouveau/NVK
+# see https://gitlab.freedesktop.org/mesa/mesa/-/issues/10855
BDEPEND="
${PYTHON_DEPS}
opencl? (
@@ -142,7 +163,15 @@ BDEPEND="
dev-libs/libclc[spirv(-)]
$(python_gen_any_dep "dev-python/ply[\${PYTHON_USEDEP}]")
)
- vulkan? ( dev-util/glslang )
+ vulkan? (
+ dev-util/glslang
+ video_cards_nvk? (
+ >=dev-util/bindgen-0.68.1
+ >=dev-util/cbindgen-0.26.0
+ >=virtual/rust-1.74.1
+ <dev-build/meson-1.4.0
+ )
+ )
wayland? ( dev-util/wayland-scanner )
"
@@ -153,14 +182,20 @@ x86? (
usr/lib/libGLX_mesa.so.0.0.0
)"
+src_unpack() {
+ [[ ${PV} == 9999 ]] && git-r3_src_unpack
+ unpack ${A}
+}
+
pkg_pretend() {
if use vulkan; then
if ! use video_cards_d3d12 &&
! use video_cards_freedreno &&
! use video_cards_intel &&
! use video_cards_radeonsi &&
- ! use video_cards_v3d; then
- ewarn "Ignoring USE=vulkan since VIDEO_CARDS does not contain d3d12, freedreno, intel, radeonsi, or v3d"
+ ! use video_cards_v3d &&
+ ! use video_cards_nvk; then
+ ewarn "Ignoring USE=vulkan since VIDEO_CARDS does not contain d3d12, freedreno, intel, radeonsi, v3d, or nvk"
fi
fi
@@ -236,6 +271,20 @@ src_prepare() {
default
sed -i -e "/^PLATFORM_SYMBOLS/a '__gentoo_check_ldflags__'," \
bin/symbols-check.py || die # bug #830728
+
+ if use video_cards_nvk; then
+ # NVK Subproject Handling
+ pushd "${S}" >/dev/null || die
+ for subpkg in proc-macro2-${PROC_MACRO2_PV} syn-${SYN_PV} quote-${QUOTE_PV} unicode-ident-${UNICODE_IDENT_PV} paste-${PASTE_PV}; do
+ # copy subprojects folder
+ cp -r ../${subpkg} subprojects || die
+ # copy meson.build
+ cp subprojects/packagefiles/${subpkg%-*}/meson.build subprojects/${subpkg} || die
+ # ovewrite subpkg version when needed
+ sed -i -e "s/directory = \S\+/directory = ${subpkg}/" subprojects/${subpkg%-*}.wrap || die
+ done
+ popd >/dev/null || die
+ fi
}
multilib_src_configure() {
@@ -336,6 +385,15 @@ multilib_src_configure() {
vulkan_enable video_cards_d3d12 microsoft-experimental
vulkan_enable video_cards_radeonsi amd
vulkan_enable video_cards_v3d broadcom
+ if use video_cards_nvk; then
+ vulkan_enable video_cards_nvk nouveau
+ if ! multilib_is_native_abi; then
+ echo -e "[binaries]\nrust = ['rustc', '--target=$(rust_abi $CBUILD)']" > "${T}/rust_fix.ini"
+ emesonargs+=(
+ --native-file "${T}"/rust_fix.ini
+ )
+ fi
+ fi
fi
driver_list() {
@@ -383,6 +441,10 @@ multilib_src_configure() {
-Db_ndebug=$(usex debug false true)
)
meson_src_configure
+
+ if ! multilib_is_native_abi && use video_cards_nvk; then
+ sed -i -E '{N; s/(rule rust_COMPILER_FOR_BUILD\n command = rustc) --target=[a-zA-Z0-9=:-]+ (.*) -C link-arg=-m[[:digit:]]+/\1 \2/g}' build.ninja || die
+ fi
}
multilib_src_test() {