mangohud: suport nvidia cards when directly using vulkan layer

Before this change, NVIDIA GPUs were only supported when using the
mangohud & mangoapp binaries.

This extends support to direct use of the Vulkan layer
(enabled through `MANGOHUD=1`).
This commit is contained in:
Kira Bruneau 2023-04-13 23:20:12 -04:00
parent d9cb109138
commit 62bad427ff

View File

@ -12,6 +12,7 @@
, dbus
, hwdata
, mangohud32
, addOpenGLRunpath
, appstream
, glslang
, makeWrapper
@ -28,7 +29,6 @@
, glfw
, nlohmann_json
, xorg
, addOpenGLRunpath
, gamescopeSupport ? true # build mangoapp and mangohudctl
}:
@ -134,6 +134,7 @@ stdenv.mkDerivation (finalAttrs: {
];
nativeBuildInputs = [
addOpenGLRunpath
appstream
glslang
makeWrapper
@ -167,18 +168,17 @@ stdenv.mkDerivation (finalAttrs: {
"$out/share/vulkan/implicit_layer.d/MangoHud.x86.json"
'';
# Support Nvidia cards by adding OpenGL path and support overlaying
# Vulkan applications without requiring MangoHud to be installed
postFixup = ''
# Add OpenGL driver path to RUNPATH to support NVIDIA cards
addOpenGLRunpath "$out/lib/mangohud/libMangoHud.so"
${lib.optionalString gamescopeSupport ''
addOpenGLRunpath "$out/bin/mangoapp"
''}
# Prefix XDG_DATA_DIRS to support overlaying Vulkan apps without
# requiring MangoHud to be installed
wrapProgram "$out/bin/mangohud" \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ addOpenGLRunpath.driverLink ]} \
--prefix XDG_DATA_DIRS : "$out/share"
'' + lib.optionalString (gamescopeSupport) ''
if [[ -e "$out/bin/mangoapp" ]]; then
wrapProgram "$out/bin/mangoapp" \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ addOpenGLRunpath.driverLink ]} \
--prefix XDG_DATA_DIRS : "$out/share"
fi
'';
meta = with lib; {