summaryrefslogtreecommitdiff
path: root/media-libs/mesa
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-05-12 23:49:59 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-05-12 23:49:59 +0100
commit241157fae4eae88cefc48b4644bad8b9e53583dc (patch)
tree21c5bcbe695778c057090452592e3861a780352b /media-libs/mesa
parent229d5601ae2eca4f143dabdfb36406376cf88c03 (diff)
gentoo auto-resync : 12:05:2023 - 23:49:59
Diffstat (limited to 'media-libs/mesa')
-rw-r--r--media-libs/mesa/Manifest8
-rw-r--r--media-libs/mesa/files/clang_resource_dir.patch24
-rw-r--r--media-libs/mesa/files/mesa-23.1.0-intel-Disable-shader-cache-when-executing-intel_clc-.patch30
-rw-r--r--media-libs/mesa/mesa-23.1.0.ebuild423
-rw-r--r--media-libs/mesa/mesa-9999.ebuild142
-rw-r--r--media-libs/mesa/metadata.xml2
6 files changed, 537 insertions, 92 deletions
diff --git a/media-libs/mesa/Manifest b/media-libs/mesa/Manifest
index 1be4d6658a2f..fef47c503856 100644
--- a/media-libs/mesa/Manifest
+++ b/media-libs/mesa/Manifest
@@ -1,8 +1,12 @@
+AUX clang_resource_dir.patch 1129 BLAKE2B 40cf2bc3381d5318c95d3fdadef1bdb6bb57f3b04270e07c0a66613b6432ad617be73d34122be3280d861dde0663fc5c96bb37a9312c2e333e39e69287a9e33a SHA512 493585cf0a93fda04d4577095ae04e1c3dc37aa446ea0873e81857cd2f2c6519bbdf34f0d6e6dd47dd1e927cc776f46901ebab14c7040a92688c3868204b3856
AUX mesa-23.0.2-wayland-crash-warnings-2.patch 1854 BLAKE2B e0aaa149f3a3c45dc4ea57b28146b19774d386bfd070ad22344596caa8fbba1eaed37ce6938792be448bb1adb1a37fc3c004bdca486592db84aea26dacf4d167 SHA512 762f2917aead5ead4586a0875cb79f56c5a1becc80fa37e15e46bfb432a679f8e31025cca55c1d5068efebb60367eb11223e24c729406a9ce56ba536796acb0d
AUX mesa-23.0.2-wayland-crash-warnings.patch 1430 BLAKE2B a7c7ef4a34ac9c76c4c5af783510887705a1d6acbc62978b2cc8a021534e215404de3d5828d9c052dccc85808da5b0553f9172fa8edccb40ed7fdc6bc1df35c3 SHA512 98b8a3de99c96474a07615b225b00773c9988a05e25a70cc6586c60762bea8d1a0bbbb47d45e8a38d780951a83abd2c6bbda19180b2457a686625b140b570014
+AUX mesa-23.1.0-intel-Disable-shader-cache-when-executing-intel_clc-.patch 1072 BLAKE2B e8c221f448ae22ce77694478a5c380fdc01837aa0a4cd0aeab9c3b37d4dfe47a0c9c127a7ed2051ee9b8b8c5a05c12a4127bda285e9d35558a10100994389570 SHA512 608f3f1bdfd2cb7be39ebff2843e64245ee75e1cd2d13cf9e767488b5b8bbeb419966881338334f39bece5f853b066405fc9d17d0d7b2c264f030361e4dcd72e
DIST mesa-22.3.7.tar.xz 17136476 BLAKE2B 291e94302d3a177f842def9339d1ba012bf10de792b7120985255168faac6b87a73d1d59d8b430f56ea2a2640ca0890a5c3721188b70c528b9aad9788d7e139d SHA512 c37bbcb3c0be1908726d6f83bfe98126d681935e401e03946e8b540611f832d2f272a2ac470600c2b77caa5b9a3a9059eb34bd9a93fcf88df114bedf8c39bf5a
DIST mesa-23.0.3.tar.xz 17627728 BLAKE2B e716d9ddce3da649239c1bc37ec208b9669f316f6b547ca0c69937043f371f0d59ead34fec427297171916045061ddb8783d126f6dec5ece90a0719003fe2c40 SHA512 52c778de61daa406c6a1e96a657e9b6fdcc71c8cfda80b7f53acc6470556c7d502c057b9481bb0c3d57ef0263263413fd0d25d53ebf5aa0246fbcc3309de64ae
+DIST mesa-23.1.0.tar.xz 18204148 BLAKE2B 47cc90da14a2c33bb54c7811e99b439fadef81a15b63e535210a329bad5e2524fcb415cc5ed51a8deb65ccc9a341af78f02178c93758f09946978179e494382c SHA512 bbcfd0dd8e5414826631e80edbbe48218115a7461ef4ac1f2e4e090a48d6c0e1ab3b51dd45e988d5f1572f29bfc03c33769263c0f3e04033138d5b1ec102e8c9
EBUILD mesa-22.3.7-r1.ebuild 12130 BLAKE2B a735afabb891b4b8600c5f00046496b12f845670b461f7fa078987368a2e0600729d45031dab04a7ad65a877df37445d33b25111ad43a65c0847f5a241bdf3d0 SHA512 c115092f8a8583f5f5bd71791541a6ff989b78b612a90ed95b9c189acb4ba9e3676269ad19e68df24b78dde8f84ad549e4976da7d50d9e6ca5c963d4c163192f
EBUILD mesa-23.0.3-r1.ebuild 12279 BLAKE2B e6da53781a68ab1705eb35403ff2349985ed88d3d23ba1772b060185fca16fd28c94061fd97ffee7caad4b8cacf8688dfe42db7ce8f2a0b4d894d4dc8ee4966c SHA512 205bdcd6d31efe9b54af48f9cc8e13ed2ae65590408ffcb3b7be23ea86f56965a2b9a76c2b71d866003f94d17f4e7a84163ae8bdd702b0a20292f0e2477e969b
-EBUILD mesa-9999.ebuild 12152 BLAKE2B 29d5a5df3e9222d41402b7a530264178d6c786b99334dca52b198a3ae0c49e5d1bb6d562fe3df718d78936b76592eebec5803efd5da2120d0ff464a0bcc69ffc SHA512 aa422813ae441467a77bc3e8af3c69a371788c80691f7e120b017b4a1cb0a609846c3661506d6ccce469ad1315c78f7431e479e703661ab0c8b59c3db7bc21dd
-MISC metadata.xml 1606 BLAKE2B 0f0d0be785aef5042a0a0ae6ce0855dea4ff0105db96339f6f81ac8e3e956f363a90d08bf087924e33873e9bf0182487cdd7ba7baa72b97d17db8afdc375b7e5 SHA512 cf6fe4938eef2e6bccbea43e63b271b5f55ad73b3201a36c484b0f72cd56efb70df6502296828a778477d72848474d8bdbf5ab270dc1dbe96b7464716a1bdc82
+EBUILD mesa-23.1.0.ebuild 12000 BLAKE2B 86f54877bc002d2ba829179df70b31b3c633cbf89635f0cefdf736745a877bd2e10ac4f6be9f4b119bd9358c83ad600c15d6e69c285b42635c4c9ffface866c5 SHA512 b5f3c4aa37cafc97cb730684709259a6a82ff64a366f970dfe5d7c35fa42a6df42875302406d63c1898ce52f980695ca3495894d98b660c34dc6fd14547ebb5c
+EBUILD mesa-9999.ebuild 11919 BLAKE2B 2868ea9b5f8ee0a083d40c9eb3760a650f65cfe7e1c4e00a1ad2987da73ae289f7d8a46f545cb5af2c1aeda1ebd68b101b0c6a42fa9f9ce405f2f35898253b2c SHA512 3dff0cb3d875b466398bfe445e0ed4a2f8a6db654d20ac38efcd9ad7c2f2352d863cf82f859baeae664325eb69ebefa6f1e8b83d9afed57b6619ef3e0e80f9de
+MISC metadata.xml 1607 BLAKE2B e862a9e259e0fb0a4dd73d021105cddd3063d914c0579fa76443fd59a26cf4c3687269ff28de542d7aeb462f42f7ac995dc9fe9a4ed8926c9c0b23205554e7e1 SHA512 fcf927604dd3b7a10a0159a4d25d1cbaf349e6aab8bb00e7c98176d98d207f998b75fa39f343b07edb1d6987b3223d8a5d2bdc61852e4c004f0217e7c8e75459
diff --git a/media-libs/mesa/files/clang_resource_dir.patch b/media-libs/mesa/files/clang_resource_dir.patch
new file mode 100644
index 000000000000..6e0c3c7cb745
--- /dev/null
+++ b/media-libs/mesa/files/clang_resource_dir.patch
@@ -0,0 +1,24 @@
+https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19232#note_1776640
+https://gitlab.freedesktop.org/mesa/mesa/-/issues/7717#note_1832122
+
+diff --git a/src/compiler/clc/clc_helpers.cpp b/src/compiler/clc/clc_helpers.cpp
+index 80bc84831e4..34d156bf227 100644
+--- a/src/compiler/clc/clc_helpers.cpp
++++ b/src/compiler/clc/clc_helpers.cpp
+@@ -39,6 +39,7 @@
+ #include <llvm-c/Target.h>
+ #include <LLVMSPIRVLib/LLVMSPIRVLib.h>
+
++#include <clang/Config/config.h>
+ #include <clang/Driver/Driver.h>
+ #include <clang/CodeGen/CodeGenAction.h>
+ #include <clang/Lex/PreprocessorOptions.h>
+@@ -866,7 +867,7 @@ clc_compile_to_llvm_module(LLVMContext &llvm_ctx,
+ // because we might have linked clang statically.
+ auto libclang_path = fs::path(LLVM_LIB_DIR) / "libclang.so";
+ auto clang_res_path =
+- fs::path(clang::driver::Driver::GetResourcesPath(libclang_path.string())) / "include";
++ fs::path(clang::driver::Driver::GetResourcesPath(libclang_path.string(), CLANG_RESOURCE_DIR)) / "include";
+
+ c->getHeaderSearchOpts().UseBuiltinIncludes = true;
+ c->getHeaderSearchOpts().UseStandardSystemIncludes = true;
diff --git a/media-libs/mesa/files/mesa-23.1.0-intel-Disable-shader-cache-when-executing-intel_clc-.patch b/media-libs/mesa/files/mesa-23.1.0-intel-Disable-shader-cache-when-executing-intel_clc-.patch
new file mode 100644
index 000000000000..511dfed9fab5
--- /dev/null
+++ b/media-libs/mesa/files/mesa-23.1.0-intel-Disable-shader-cache-when-executing-intel_clc-.patch
@@ -0,0 +1,30 @@
+From 28efca603bf11f361eb741d23ef181a3b6905f74 Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Thu, 11 May 2023 13:51:25 -0400
+Subject: [PATCH] intel: Disable shader cache when executing intel_clc during
+ the build
+
+With the shader cache enabled, intel_clc attempts to write to ~/.cache.
+Many distributions' build systems limit file-system access, and will
+kill the process thus causing the build to fail.
+
+Fixes: 639665053fa ("anv/grl: Build OpenCL kernels")
+---
+ src/intel/vulkan/grl/meson.build | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/intel/vulkan/grl/meson.build b/src/intel/vulkan/grl/meson.build
+index 3d7567cfc13..c0056b3493d 100644
+--- a/src/intel/vulkan/grl/meson.build
++++ b/src/intel/vulkan/grl/meson.build
+@@ -142,6 +142,7 @@ foreach t : [['125', 'gfx125', 'dg2']]
+ # without modifying grl source code, remove
+ # if fixed there
+ ],
++ env: ['MESA_SHADER_CACHE_DISABLE=true'],
+ depends : [prog_intel_clc]
+ )
+ endforeach
+--
+2.39.3
+
diff --git a/media-libs/mesa/mesa-23.1.0.ebuild b/media-libs/mesa/mesa-23.1.0.ebuild
new file mode 100644
index 000000000000..3e8e181feb85
--- /dev/null
+++ b/media-libs/mesa/mesa-23.1.0.ebuild
@@ -0,0 +1,423 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..11} )
+
+inherit llvm meson-multilib python-any-r1 linux-info
+
+MY_P="${P/_/-}"
+
+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"
+ inherit git-r3
+else
+ SRC_URI="https://archive.mesa3d.org/${MY_P}.tar.xz"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~sparc-solaris ~x64-solaris ~x86-solaris"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+RESTRICT="!test? ( test )"
+
+RADEON_CARDS="r300 r600 radeon radeonsi"
+VIDEO_CARDS="${RADEON_CARDS} d3d12 freedreno intel lima nouveau panfrost v3d vc4 virgl vivante vmware"
+for card in ${VIDEO_CARDS}; do
+ IUSE_VIDEO_CARDS+=" video_cards_${card}"
+done
+
+IUSE="${IUSE_VIDEO_CARDS}
+ cpu_flags_x86_sse2 d3d9 debug gles1 +gles2 +llvm
+ lm-sensors opencl osmesa +proprietary-codecs selinux
+ test unwind vaapi valgrind vdpau vulkan
+ vulkan-overlay wayland +X xa zink +zstd"
+
+REQUIRED_USE="
+ d3d9? ( || ( video_cards_intel video_cards_r300 video_cards_r600 video_cards_radeonsi video_cards_nouveau video_cards_vmware ) )
+ vulkan? ( video_cards_radeonsi? ( llvm ) )
+ vulkan-overlay? ( vulkan )
+ video_cards_radeon? ( x86? ( llvm ) amd64? ( llvm ) )
+ video_cards_r300? ( x86? ( llvm ) amd64? ( llvm ) )
+ video_cards_radeonsi? ( llvm )
+ vdpau? ( X )
+ xa? ( X )
+ zink? ( vulkan )
+"
+
+LIBDRM_DEPSTRING=">=x11-libs/libdrm-2.4.110"
+RDEPEND="
+ >=dev-libs/expat-2.1.0-r3[${MULTILIB_USEDEP}]
+ >=media-libs/libglvnd-1.3.2[X?,${MULTILIB_USEDEP}]
+ >=sys-libs/zlib-1.2.8[${MULTILIB_USEDEP}]
+ unwind? ( sys-libs/libunwind[${MULTILIB_USEDEP}] )
+ llvm? (
+ video_cards_radeonsi? (
+ virtual/libelf:0=[${MULTILIB_USEDEP}]
+ )
+ video_cards_r600? (
+ virtual/libelf:0=[${MULTILIB_USEDEP}]
+ )
+ video_cards_radeon? (
+ virtual/libelf:0=[${MULTILIB_USEDEP}]
+ )
+ )
+ lm-sensors? ( sys-apps/lm-sensors:=[${MULTILIB_USEDEP}] )
+ opencl? (
+ >=virtual/opencl-3
+ dev-libs/libclc[spirv(-)]
+ >=dev-util/spirv-tools-1.3.231.0
+ virtual/libelf:0=
+ )
+ vaapi? (
+ >=media-libs/libva-1.7.3:=[${MULTILIB_USEDEP}]
+ )
+ vdpau? ( >=x11-libs/libvdpau-1.1:=[${MULTILIB_USEDEP}] )
+ vulkan? ( video_cards_intel? ( >=dev-util/spirv-tools-1.3.231.0 ) )
+ selinux? ( sys-libs/libselinux[${MULTILIB_USEDEP}] )
+ wayland? ( >=dev-libs/wayland-1.18.0[${MULTILIB_USEDEP}] )
+ ${LIBDRM_DEPSTRING}[video_cards_freedreno?,video_cards_intel?,video_cards_nouveau?,video_cards_vc4?,video_cards_vivante?,video_cards_vmware?,${MULTILIB_USEDEP}]
+ X? (
+ >=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
+ >=x11-libs/libxshmfence-1.1[${MULTILIB_USEDEP}]
+ >=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
+ >=x11-libs/libXxf86vm-1.1.3[${MULTILIB_USEDEP}]
+ >=x11-libs/libxcb-1.13:=[${MULTILIB_USEDEP}]
+ x11-libs/libXfixes[${MULTILIB_USEDEP}]
+ )
+ zink? ( media-libs/vulkan-loader:=[${MULTILIB_USEDEP}] )
+ zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )
+"
+for card in ${RADEON_CARDS}; do
+ RDEPEND="${RDEPEND}
+ video_cards_${card}? ( ${LIBDRM_DEPSTRING}[video_cards_radeon] )
+ "
+done
+RDEPEND="${RDEPEND}
+ video_cards_radeonsi? ( ${LIBDRM_DEPSTRING}[video_cards_amdgpu] )
+"
+
+# Please keep the LLVM dependency block separate. Since LLVM is slotted,
+# we need to *really* make sure we're not pulling one than more slot
+# simultaneously.
+#
+# How to use it:
+# 1. Specify LLVM_MAX_SLOT (inclusive), e.g. 16.
+# 2. Specify LLVM_MIN_SLOT (inclusive), e.g. 15.
+LLVM_MAX_SLOT="16"
+LLVM_MIN_SLOT="15"
+LLVM_USE_DEPS="llvm_targets_AMDGPU(+),${MULTILIB_USEDEP}"
+PER_SLOT_DEPSTR="
+ (
+ !opencl? ( sys-devel/llvm:@SLOT@[${LLVM_USE_DEPS}] )
+ opencl? ( sys-devel/clang:@SLOT@[${LLVM_USE_DEPS}] )
+ opencl? ( dev-util/spirv-llvm-translator:@SLOT@ )
+ vulkan? ( video_cards_intel? ( dev-util/spirv-llvm-translator:@SLOT@ ) )
+ )
+"
+LLVM_DEPSTR="
+ || (
+ $(for ((slot=LLVM_MAX_SLOT; slot>=LLVM_MIN_SLOT; slot--)); do
+ echo "${PER_SLOT_DEPSTR//@SLOT@/${slot}}"
+ done)
+ )
+ !opencl? ( <sys-devel/llvm-$((LLVM_MAX_SLOT + 1)):=[${LLVM_USE_DEPS}] )
+ opencl? ( <sys-devel/clang-$((LLVM_MAX_SLOT + 1)):=[${LLVM_USE_DEPS}] )
+"
+RDEPEND="${RDEPEND}
+ llvm? ( ${LLVM_DEPSTR} )
+"
+unset LLVM_MIN_SLOT {LLVM,PER_SLOT}_DEPSTR
+
+DEPEND="${RDEPEND}
+ video_cards_d3d12? ( dev-util/directx-headers[${MULTILIB_USEDEP}] )
+ valgrind? ( dev-util/valgrind )
+ wayland? ( >=dev-libs/wayland-protocols-1.24 )
+ X? (
+ x11-libs/libXrandr[${MULTILIB_USEDEP}]
+ x11-base/xorg-proto
+ )
+"
+BDEPEND="
+ >=dev-util/meson-1.0.0
+ ${PYTHON_DEPS}
+ opencl? (
+ >=virtual/rust-1.62.0
+ >=dev-util/bindgen-0.58.0
+ )
+ sys-devel/bison
+ sys-devel/flex
+ virtual/pkgconfig
+ $(python_gen_any_dep ">=dev-python/mako-0.8.0[\${PYTHON_USEDEP}]")
+ vulkan? ( dev-util/glslang )
+ wayland? ( dev-util/wayland-scanner )
+"
+
+S="${WORKDIR}/${MY_P}"
+EGIT_CHECKOUT_DIR=${S}
+
+QA_WX_LOAD="
+x86? (
+ usr/lib/libglapi.so.0.0.0
+ usr/lib/libOSMesa.so.8.0.0
+ usr/lib/libGLX_mesa.so.0.0.0
+)"
+
+llvm_check_deps() {
+ if use opencl; then
+ has_version "sys-devel/clang:${LLVM_SLOT}[${LLVM_USE_DEPS}]" || return 1
+ fi
+ if use opencl || { use vulkan && use video_cards_intel; }; then
+ has_version "dev-util/spirv-llvm-translator:${LLVM_SLOT}" || return 1
+ fi
+ has_version "sys-devel/llvm:${LLVM_SLOT}[${LLVM_USE_DEPS}]"
+}
+
+PATCHES=(
+ # Temporary rusticl workaround: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7717#note_1832122
+ "${FILESDIR}/clang_resource_dir.patch"
+
+ "${FILESDIR}"/${PN}-23.1.0-intel-Disable-shader-cache-when-executing-intel_clc-.patch
+)
+
+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"
+ fi
+ fi
+
+ if use vaapi; then
+ if ! use video_cards_d3d12 &&
+ ! use video_cards_r600 &&
+ ! use video_cards_radeonsi &&
+ ! use video_cards_nouveau; then
+ ewarn "Ignoring USE=vaapi since VIDEO_CARDS does not contain d3d12, r600, radeonsi, or nouveau"
+ fi
+ fi
+
+ if use vdpau; then
+ if ! use video_cards_d3d12 &&
+ ! use video_cards_r300 &&
+ ! use video_cards_r600 &&
+ ! use video_cards_radeonsi &&
+ ! use video_cards_nouveau; then
+ ewarn "Ignoring USE=vdpau since VIDEO_CARDS does not contain d3d12, r300, r600, radeonsi, or nouveau"
+ fi
+ fi
+
+ if use xa; then
+ if ! use video_cards_freedreno &&
+ ! use video_cards_nouveau &&
+ ! use video_cards_vmware; then
+ ewarn "Ignoring USE=xa since VIDEO_CARDS does not contain freedreno, nouveau, or vmware"
+ fi
+ fi
+
+ if ! use llvm; then
+ use opencl && ewarn "Ignoring USE=opencl since USE does not contain llvm"
+ fi
+
+ if use osmesa && ! use llvm; then
+ ewarn "OSMesa will be slow without enabling USE=llvm"
+ fi
+}
+
+python_check_deps() {
+ python_has_version -b ">=dev-python/mako-0.8.0[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+ # warning message for bug 459306
+ if use llvm && has_version sys-devel/llvm[!debug=]; then
+ ewarn "Mismatch between debug USE flags in media-libs/mesa and sys-devel/llvm"
+ ewarn "detected! This can cause problems. For details, see bug 459306."
+ fi
+
+ if use video_cards_intel ||
+ use video_cards_radeonsi; then
+ if kernel_is -ge 5 11 3; then
+ CONFIG_CHECK="~KCMP"
+ elif kernel_is -ge 5 11; then
+ CONFIG_CHECK="~CHECKPOINT_RESTORE"
+ elif kernel_is -ge 5 10 20; then
+ CONFIG_CHECK="~KCMP"
+ else
+ CONFIG_CHECK="~CHECKPOINT_RESTORE"
+ fi
+ linux-info_pkg_setup
+ fi
+
+ if use llvm; then
+ llvm_pkg_setup
+ fi
+ python-any-r1_pkg_setup
+}
+
+multilib_src_configure() {
+ local emesonargs=()
+
+ local platforms
+ use X && platforms+="x11"
+ use wayland && platforms+=",wayland"
+ emesonargs+=(-Dplatforms=${platforms#,})
+
+ if use video_cards_intel ||
+ use video_cards_r300 ||
+ use video_cards_r600 ||
+ use video_cards_radeonsi ||
+ use video_cards_nouveau ||
+ use video_cards_vmware; then
+ emesonargs+=($(meson_use d3d9 gallium-nine))
+ else
+ emesonargs+=(-Dgallium-nine=false)
+ fi
+
+ if use video_cards_d3d12 ||
+ use video_cards_r600 ||
+ use video_cards_radeonsi ||
+ use video_cards_nouveau; then
+ emesonargs+=($(meson_feature vaapi gallium-va))
+ use vaapi && emesonargs+=( -Dva-libs-path="${EPREFIX}"/usr/$(get_libdir)/va/drivers )
+ else
+ emesonargs+=(-Dgallium-va=disabled)
+ fi
+
+ if use video_cards_d3d12; then
+ emesonargs+=($(meson_feature vaapi gallium-d3d12-video))
+ fi
+
+ if use video_cards_d3d12 ||
+ use video_cards_r300 ||
+ use video_cards_r600 ||
+ use video_cards_radeonsi ||
+ use video_cards_nouveau; then
+ emesonargs+=($(meson_feature vdpau gallium-vdpau))
+ else
+ emesonargs+=(-Dgallium-vdpau=disabled)
+ fi
+
+ if use video_cards_freedreno ||
+ use video_cards_nouveau ||
+ use video_cards_vmware; then
+ emesonargs+=($(meson_feature xa gallium-xa))
+ else
+ emesonargs+=(-Dgallium-xa=disabled)
+ fi
+
+ if use video_cards_freedreno ||
+ use video_cards_lima ||
+ use video_cards_panfrost ||
+ use video_cards_v3d ||
+ use video_cards_vc4 ||
+ use video_cards_vivante; then
+ gallium_enable -- kmsro
+ fi
+
+ gallium_enable -- swrast
+ gallium_enable video_cards_freedreno freedreno
+ gallium_enable video_cards_intel crocus i915 iris
+ gallium_enable video_cards_lima lima
+ gallium_enable video_cards_d3d12 d3d12
+ gallium_enable video_cards_nouveau nouveau
+ gallium_enable video_cards_panfrost panfrost
+ gallium_enable video_cards_v3d v3d
+ gallium_enable video_cards_vc4 vc4
+ gallium_enable video_cards_virgl virgl
+ gallium_enable video_cards_vivante etnaviv
+ gallium_enable video_cards_vmware svga
+ gallium_enable zink zink
+
+ gallium_enable video_cards_r300 r300
+ gallium_enable video_cards_r600 r600
+ gallium_enable video_cards_radeonsi radeonsi
+ if ! use video_cards_r300 && \
+ ! use video_cards_r600; then
+ gallium_enable video_cards_radeon r300 r600
+ fi
+
+ if use llvm && use opencl; then
+ PKG_CONFIG_PATH="$(get_llvm_prefix)/$(get_libdir)/pkgconfig"
+ # See https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/docs/rusticl.rst
+ emesonargs+=(
+ $(meson_native_true gallium-rusticl)
+ -Drust_std=2021
+ )
+ fi
+
+ if use vulkan; then
+ vulkan_enable video_cards_freedreno freedreno
+ vulkan_enable video_cards_intel intel intel_hasvk
+ vulkan_enable video_cards_d3d12 microsoft-experimental
+ vulkan_enable video_cards_radeonsi amd
+ vulkan_enable video_cards_v3d broadcom
+ fi
+
+ driver_list() {
+ local drivers="$(sort -u <<< "${1// /$'\n'}")"
+ echo "${drivers//$'\n'/,}"
+ }
+
+ local vulkan_layers
+ use vulkan && vulkan_layers+="device-select"
+ use vulkan-overlay && vulkan_layers+=",overlay"
+ emesonargs+=(-Dvulkan-layers=${vulkan_layers#,})
+
+ if use vulkan && use video_cards_intel; then
+ PKG_CONFIG_PATH="$(get_llvm_prefix)/$(get_libdir)/pkgconfig"
+ emesonargs+=($(meson_feature llvm intel-clc))
+ fi
+
+ emesonargs+=(
+ $(meson_use test build-tests)
+ -Dglx=$(usex X dri disabled)
+ -Dshared-glapi=enabled
+ -Ddri3=enabled
+ -Degl=enabled
+ -Dgbm=enabled
+ -Dglvnd=true
+ $(meson_feature gles1)
+ $(meson_feature gles2)
+ $(meson_feature llvm)
+ $(meson_feature lm-sensors lmsensors)
+ $(meson_use osmesa)
+ $(meson_use selinux)
+ $(meson_feature unwind libunwind)
+ $(meson_feature zstd)
+ $(meson_use cpu_flags_x86_sse2 sse2)
+ -Dvalgrind=$(usex valgrind auto disabled)
+ -Dvideo-codecs=$(usex proprietary-codecs "h264dec,h264enc,h265dec,h265enc,vc1dec" "")
+ -Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
+ -Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
+ --buildtype $(usex debug debug plain)
+ -Db_ndebug=$(usex debug false true)
+ )
+ meson_src_configure
+}
+
+multilib_src_test() {
+ meson_src_test -t 100
+}
+
+# $1 - VIDEO_CARDS flag (check skipped for "--")
+# other args - names of DRI drivers to enable
+gallium_enable() {
+ if [[ $1 == -- ]] || use $1; then
+ shift
+ GALLIUM_DRIVERS+=("$@")
+ fi
+}
+
+vulkan_enable() {
+ if [[ $1 == -- ]] || use $1; then
+ shift
+ VULKAN_DRIVERS+=("$@")
+ fi
+}
diff --git a/media-libs/mesa/mesa-9999.ebuild b/media-libs/mesa/mesa-9999.ebuild
index 1d4bb730495f..1cafc813c908 100644
--- a/media-libs/mesa/mesa-9999.ebuild
+++ b/media-libs/mesa/mesa-9999.ebuild
@@ -67,14 +67,16 @@ RDEPEND="
)
lm-sensors? ( sys-apps/lm-sensors:=[${MULTILIB_USEDEP}] )
opencl? (
- >=virtual/opencl-3[${MULTILIB_USEDEP}]
- dev-libs/libclc
- virtual/libelf:0=[${MULTILIB_USEDEP}]
- )
+ >=virtual/opencl-3
+ dev-libs/libclc[spirv(-)]
+ >=dev-util/spirv-tools-1.3.231.0
+ virtual/libelf:0=
+ )
vaapi? (
>=media-libs/libva-1.7.3:=[${MULTILIB_USEDEP}]
)
vdpau? ( >=x11-libs/libvdpau-1.1:=[${MULTILIB_USEDEP}] )
+ vulkan? ( video_cards_intel? ( >=dev-util/spirv-tools-1.3.231.0 ) )
selinux? ( sys-libs/libselinux[${MULTILIB_USEDEP}] )
wayland? ( >=dev-libs/wayland-1.18.0[${MULTILIB_USEDEP}] )
${LIBDRM_DEPSTRING}[video_cards_freedreno?,video_cards_intel?,video_cards_nouveau?,video_cards_vc4?,video_cards_vivante?,video_cards_vmware?,${MULTILIB_USEDEP}]
@@ -103,73 +105,32 @@ RDEPEND="${RDEPEND}
# simultaneously.
#
# How to use it:
-# 1. List all the working slots (with min versions) in ||, newest first.
-# 2. Update the := to specify *max* version, e.g. < 10.
-# 3. Specify LLVM_MAX_SLOT, e.g. 9.
+# 1. Specify LLVM_MAX_SLOT (inclusive), e.g. 16.
+# 2. Specify LLVM_MIN_SLOT (inclusive), e.g. 15.
LLVM_MAX_SLOT="16"
+LLVM_MIN_SLOT="15"
+LLVM_USE_DEPS="llvm_targets_AMDGPU(+),${MULTILIB_USEDEP}"
+PER_SLOT_DEPSTR="
+ (
+ !opencl? ( sys-devel/llvm:@SLOT@[${LLVM_USE_DEPS}] )
+ opencl? ( sys-devel/clang:@SLOT@[${LLVM_USE_DEPS}] )
+ opencl? ( dev-util/spirv-llvm-translator:@SLOT@ )
+ vulkan? ( video_cards_intel? ( dev-util/spirv-llvm-translator:@SLOT@ ) )
+ )
+"
LLVM_DEPSTR="
|| (
- sys-devel/llvm:16[${MULTILIB_USEDEP}]
- sys-devel/llvm:15[${MULTILIB_USEDEP}]
+ $(for ((slot=LLVM_MAX_SLOT; slot>=LLVM_MIN_SLOT; slot--)); do
+ echo "${PER_SLOT_DEPSTR//@SLOT@/${slot}}"
+ done)
)
- <sys-devel/llvm-$((LLVM_MAX_SLOT + 1)):=[${MULTILIB_USEDEP}]
+ !opencl? ( <sys-devel/llvm-$((LLVM_MAX_SLOT + 1)):=[${LLVM_USE_DEPS}] )
+ opencl? ( <sys-devel/clang-$((LLVM_MAX_SLOT + 1)):=[${LLVM_USE_DEPS}] )
"
-LLVM_DEPSTR_AMDGPU=${LLVM_DEPSTR//]/,llvm_targets_AMDGPU(-)]}
-CLANG_DEPSTR=${LLVM_DEPSTR//llvm/clang}
-CLANG_DEPSTR_AMDGPU=${CLANG_DEPSTR//]/,llvm_targets_AMDGPU(-)]}
RDEPEND="${RDEPEND}
- llvm? (
- opencl? (
- video_cards_r600? (
- ${CLANG_DEPSTR_AMDGPU}
- )
- !video_cards_r600? (
- video_cards_radeonsi? (
- ${CLANG_DEPSTR_AMDGPU}
- )
- )
- !video_cards_r600? (
- !video_cards_radeonsi? (
- video_cards_radeon? (
- ${CLANG_DEPSTR_AMDGPU}
- )
- )
- )
- !video_cards_r600? (
- !video_cards_radeon? (
- !video_cards_radeonsi? (
- ${CLANG_DEPSTR}
- )
- )
- )
- )
- !opencl? (
- video_cards_r600? (
- ${LLVM_DEPSTR_AMDGPU}
- )
- !video_cards_r600? (
- video_cards_radeonsi? (
- ${LLVM_DEPSTR_AMDGPU}
- )
- )
- !video_cards_r600? (
- !video_cards_radeonsi? (
- video_cards_radeon? (
- ${LLVM_DEPSTR_AMDGPU}
- )
- )
- )
- !video_cards_r600? (
- !video_cards_radeon? (
- !video_cards_radeonsi? (
- ${LLVM_DEPSTR}
- )
- )
- )
- )
- )
+ llvm? ( ${LLVM_DEPSTR} )
"
-unset {LLVM,CLANG}_DEPSTR{,_AMDGPU}
+unset LLVM_MIN_SLOT {LLVM,PER_SLOT}_DEPSTR
DEPEND="${RDEPEND}
video_cards_d3d12? ( dev-util/directx-headers[${MULTILIB_USEDEP}] )
@@ -181,9 +142,11 @@ DEPEND="${RDEPEND}
)
"
BDEPEND="
+ >=dev-util/meson-1.0.0
${PYTHON_DEPS}
opencl? (
- >=sys-devel/gcc-4.6
+ >=virtual/rust-1.62.0
+ >=dev-util/bindgen-0.58.0
)
sys-devel/bison
sys-devel/flex
@@ -198,27 +161,26 @@ EGIT_CHECKOUT_DIR=${S}
QA_WX_LOAD="
x86? (
- usr/lib*/libglapi.so.0.0.0
- usr/lib*/libGLESv1_CM.so.1.1.0
- usr/lib*/libGLESv2.so.2.0.0
- usr/lib*/libGL.so.1.2.0
- usr/lib*/libOSMesa.so.8.0.0
+ usr/lib/libglapi.so.0.0.0
+ usr/lib/libOSMesa.so.8.0.0
usr/lib/libGLX_mesa.so.0.0.0
)"
llvm_check_deps() {
- local flags=${MULTILIB_USEDEP}
- if use video_cards_r600 || use video_cards_radeon || use video_cards_radeonsi
- then
- flags+=",llvm_targets_AMDGPU(-)"
- fi
-
if use opencl; then
- has_version "sys-devel/clang:${LLVM_SLOT}[${flags}]" || return 1
+ has_version "sys-devel/clang:${LLVM_SLOT}[${LLVM_USE_DEPS}]" || return 1
fi
- has_version "sys-devel/llvm:${LLVM_SLOT}[${flags}]"
+ if use opencl || { use vulkan && use video_cards_intel; }; then
+ has_version "dev-util/spirv-llvm-translator:${LLVM_SLOT}" || return 1
+ fi
+ has_version "sys-devel/llvm:${LLVM_SLOT}[${LLVM_USE_DEPS}]"
}
+PATCHES=(
+ # Temporary rusticl workaround: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7717#note_1832122
+ "${FILESDIR}/clang_resource_dir.patch"
+)
+
pkg_pretend() {
if use vulkan; then
if ! use video_cards_d3d12 &&
@@ -230,13 +192,6 @@ pkg_pretend() {
fi
fi
- if use opencl; then
- if ! use video_cards_r600 &&
- ! use video_cards_radeonsi; then
- ewarn "Ignoring USE=opencl since VIDEO_CARDS does not contain r600 or radeonsi"
- fi
- fi
-
if use vaapi; then
if ! use video_cards_d3d12 &&
! use video_cards_r600 &&
@@ -386,10 +341,14 @@ multilib_src_configure() {
gallium_enable video_cards_radeon r300 r600
fi
- # opencl stuff
- emesonargs+=(
- -Dgallium-opencl="$(usex opencl icd disabled)"
- )
+ if use llvm && use opencl; then
+ PKG_CONFIG_PATH="$(get_llvm_prefix)/$(get_libdir)/pkgconfig"
+ # See https://gitlab.freedesktop.org/mesa/mesa/-/blob/main/docs/rusticl.rst
+ emesonargs+=(
+ $(meson_native_true gallium-rusticl)
+ -Drust_std=2021
+ )
+ fi
if use vulkan; then
vulkan_enable video_cards_freedreno freedreno
@@ -409,6 +368,11 @@ multilib_src_configure() {
use vulkan-overlay && vulkan_layers+=",overlay"
emesonargs+=(-Dvulkan-layers=${vulkan_layers#,})
+ if use vulkan && use video_cards_intel; then
+ PKG_CONFIG_PATH="$(get_llvm_prefix)/$(get_libdir)/pkgconfig"
+ emesonargs+=($(meson_feature llvm intel-clc))
+ fi
+
emesonargs+=(
$(meson_use test build-tests)
-Dglx=$(usex X dri disabled)
diff --git a/media-libs/mesa/metadata.xml b/media-libs/mesa/metadata.xml
index ca05a0be0104..69f5a6733cc6 100644
--- a/media-libs/mesa/metadata.xml
+++ b/media-libs/mesa/metadata.xml
@@ -11,7 +11,7 @@
<flag name="gles2">Enable GLESv2 support.</flag>
<flag name="llvm">Enable LLVM backend for Gallium3D.</flag>
<flag name="lm-sensors">Enable Gallium HUD lm-sensors support.</flag>
- <flag name="opencl">Enable the Clover Gallium OpenCL state tracker.</flag>
+ <flag name="opencl">Enable the Rusticl Gallium OpenCL state tracker.</flag>
<flag name="osmesa">Build the Mesa library for off-screen rendering.</flag>
<flag name="proprietary-codecs">Enable codecs for patent-encumbered audio and video formats.</flag>
<flag name="valgrind">Compile in valgrind memory hints</flag>