It's a partial solution, but after updating a few packages I got the menu of Dungeon of the Endless to lag a lot less. Below is my /etc/portage/package.accept_keywords/steam file. Not sure what's strictly needed, but it seems the important LLVM bits are that sys-devel/llvm and sys-devel/clang have something installed in slot 7. I had to restart after install to get the right clang executable to run (even after installing clang --version returned the 6.x.x I have installed in my 6 slot).
games-util/steam-launcher ~amd64
x11-drivers/nvidia-drivers ~amd64
media-libs/mesa ~amd64
x11-libs/libdrm ~amd64
dev-libs/wayland ~amd64
sys-devel/clang:7 **
sys-devel/llvm:7 **
sys-libs/compiler-rt-sanitizers:7.0.0 **
sys-devel/clang-runtime:7.0.0 **
sys-libs/compiler-rt:7.0.0 **
sys-libs/libomp **
@jaccarmac The true dependency should be on LLVM, rather than Clang. This page is fairly clear that LLVM 7 is what is recommended to avoid GPU hangs:
https://github.com/ValveSoftware/Proton/blob/proton_3.7/PREREQS.md
That is because DXVK seems to expose bugs in LLVM 6:
https://github.com/doitsujin/dxvk/wiki/Driver-support
https://github.com/doitsujin/dxvk/issues/252#issuecomment-382544128 (overwatch hang regression in LLVM 6)
If you are using Intel graphics like I am, I am not even sure if LLVM is needed because Intel didn't use LLVM as a shader compiler as of last check.
Hello @jaccarmac, LLVM 7 is for mesa's dependency on it, so the subset of the llvm package family in mesa's ebuild is all that matters in this case.
Thanks for the information. mesa-18.2.0_rc2.ebuild seems to define 7 as the max version of LLVM that can be used, but not required. So it seems unmasking LLVM 7 is necessary for 7 to install. Meanwhile, there's this subsection of the ebuild.
LLVM_DEPSTR="
|| (
sys-devel/llvm:7[${MULTILIB_USEDEP}]
sys-devel/llvm:6[${MULTILIB_USEDEP}]
sys-devel/llvm:5[${MULTILIB_USEDEP}]
sys-devel/llvm:4[${MULTILIB_USEDEP}]
>=sys-devel/llvm-3.9.0:0[${MULTILIB_USEDEP}]
)
sys-devel/llvm:=[${MULTILIB_USEDEP}]
"
...
CLANG_DEPSTR=${LLVM_DEPSTR//llvm/clang}
I'm not totally clear on the use of double slashes (//) in ebuilds, I suppose that depstring could either be sys-devel/llvm:7//llvm/clang or sys-devel/clang:7. Latter seems more likely to me but see above as to my ebuild knowledge :).
@jaccarmac The syntax ${VAR//llvm/clang} returns the value of VAR with all occurrences of llvm replaced by clang.
See http://wiki.bash-hackers.org/syntax/pe#search_and_replace
The prereqs file suggests LLVM 7 is necessary for proper performance of DirectX 11 games. On Gentoo LLVM consists of several packages, including the library, common files, and Clang itself. The slotting wiki page gives an overview of some of the packages and what version 7 means to each of them.
The PPA linked in the prereq file suggests the 7.0 version of Clang is necessary. Is this the case? If the exact packages necessary are unknown what's the best way to test whether or not DX11 is accelerated properly?