virtual/opencl: Only pull in media-libs/mesa on supported GPUs
authorMarek Szuba <marecki@gentoo.org>
Fri, 28 Feb 2020 11:45:43 +0000 (12:45 +0100)
committerMarek Szuba <marecki@gentoo.org>
Fri, 28 Feb 2020 11:45:43 +0000 (12:45 +0100)
virtual/opencl uses media-libs/mesa[opencl] as driver-independent
fallback OpenCL provider. However, media-libs/mesa[opencl] depends
on dev-libs/libclc - which at the time of me writing this only
supports nvidia, r600 and radeonsi, and whose REQUIRED_USE clause
requires at least one of the corresponding VIDEO_CARDS flags to be
set. This effectively breaks the OpenCL dependency cycle for a lot of
configurations, e.g. for VIDEO_CARDS="nouveau" systems.

Only try to use Mesa as an OpenCL provider when VIDEO_CARDS includes a
GPU supported by dev-libs/libclc.

Note that this means there is now no fallback OpenCL provider for
ABI_X86_32. Moreover, for ABI_X86_64 the fallback provider is now
dev-util/intel-ocl-sdk, which almost certainly doesn't work on AMD CPUs
- which however should be mostly harmless (the package should simply do
nothing beyond satisfying virtual/opencl dependencies), especially given
many OpenCL-aware applications ignore CPU-type devices anyway.

Closes: https://bugs.gentoo.org/710724
Signed-off-by: Marek Szuba <marecki@gentoo.org>
virtual/opencl/opencl-2.ebuild

index 81e5238f3c1422bbb49809681b6b0b47a427f13e..9963833977efa68bb3f2d0016f2fc42c9b22c894 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
@@ -8,7 +8,7 @@ inherit multilib-build
 DESCRIPTION="Virtual for OpenCL implementations"
 SLOT="0"
 KEYWORDS="amd64 x86"
-CARDS=( amdgpu i965 nvidia )
+CARDS=( amdgpu i965 nvidia r600 radeonsi )
 IUSE="${CARDS[@]/#/video_cards_}"
 
 # intel-neo and intel-ocl-sdk are amd64-only
@@ -17,11 +17,15 @@ RDEPEND="app-eselect/eselect-opencl
                video_cards_i965? ( || (
                        abi_x86_64? ( !abi_x86_32? ( dev-libs/intel-neo ) )
                        dev-libs/beignet ) )
-               >=media-libs/mesa-9.1.6[opencl,X(+),${MULTILIB_USEDEP}]
                video_cards_amdgpu? ( || (
                        dev-libs/rocm-opencl-runtime
                        dev-libs/amdgpu-pro-opencl ) )
                video_cards_nvidia? (
-                       >=x11-drivers/nvidia-drivers-290.10-r2[uvm] )
+                       >=x11-drivers/nvidia-drivers-290.10-r2[uvm]
+                       >=media-libs/mesa-9.1.6[opencl,X(+),${MULTILIB_USEDEP}] )
+               video_cards_r600? (
+                       >=media-libs/mesa-9.1.6[opencl,X(+),${MULTILIB_USEDEP}] )
+               video_cards_radeonsi? (
+                       >=media-libs/mesa-9.1.6[opencl,X(+),${MULTILIB_USEDEP}] )
                abi_x86_64? ( !abi_x86_32? ( dev-util/intel-ocl-sdk ) )
        )"