Skip to content

Commit

Permalink
Merge pull request #231874 from Atemu/fix/mangohud-layer-name-bitness
Browse files Browse the repository at this point in the history
mangohud: add bitness suffix to layer name
  • Loading branch information
Atemu authored May 15, 2023
2 parents 6d6c7c5 + 7eacc7f commit 746a5fc
Showing 1 changed file with 21 additions and 10 deletions.
31 changes: 21 additions & 10 deletions pkgs/tools/graphics/mangohud/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
, glfw
, xorg
, gamescopeSupport ? true # build mangoapp and mangohudctl
, lowerBitnessSupport ? stdenv.hostPlatform.is64bit # Support 32 bit on 64bit
, nix-update-script
}:

Expand Down Expand Up @@ -128,7 +129,7 @@ stdenv.mkDerivation (finalAttrs: {
substituteInPlace bin/mangohud.in \
--subst-var-by libraryPath ${lib.makeSearchPath "lib/mangohud" ([
(placeholder "out")
] ++ lib.optionals (stdenv.hostPlatform.system == "x86_64-linux") [
] ++ lib.optionals lowerBitnessSupport [
mangohud32
])} \
--subst-var-by dataDir ${placeholder "out"}/share
Expand Down Expand Up @@ -184,7 +185,7 @@ stdenv.mkDerivation (finalAttrs: {

# Support 32bit Vulkan applications by linking in 32bit Vulkan layers
# This is needed for the same reason the 32bit preload workaround is needed.
postInstall = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") ''
postInstall = lib.optionalString lowerBitnessSupport ''
ln -s ${mangohud32}/share/vulkan/implicit_layer.d/MangoHud.x86.json \
"$out/share/vulkan/implicit_layer.d"
Expand All @@ -194,16 +195,26 @@ stdenv.mkDerivation (finalAttrs: {
''}
'';

postFixup = ''
postFixup = let
archMap = {
"x86_64-linux" = "x86_64";
"i686-linux" = "x86";
};
layerPlatform = archMap."${stdenv.hostPlatform.system}" or null;
# We need to give the different layers separate names or else the loader
# might try the 32-bit one first, fail and not attempt to load the 64-bit
# layer under the same name.
in lib.optionalString (layerPlatform != null) ''
substituteInPlace $out/share/vulkan/implicit_layer.d/MangoHud.${layerPlatform}.json \
--replace "VK_LAYER_MANGOHUD_overlay" "VK_LAYER_MANGOHUD_overlay_${toString stdenv.hostPlatform.parsed.cpu.bits}"
'' + ''
# Add OpenGL driver path to RUNPATH to support NVIDIA cards
addOpenGLRunpath "$out/lib/mangohud/libMangoHud.so"
${lib.optionalString gamescopeSupport ''
addOpenGLRunpath "$out/bin/mangoapp"
''}
${lib.optionalString finalAttrs.doCheck ''
# libcmocka.so is only used for tests
rm "$out/lib/libcmocka.so"
''}
'' + lib.optionalString gamescopeSupport ''
addOpenGLRunpath "$out/bin/mangoapp"
'' + lib.optionalString finalAttrs.doCheck ''
# libcmocka.so is only used for tests
rm "$out/lib/libcmocka.so"
'';

passthru.updateScript = nix-update-script { };
Expand Down

0 comments on commit 746a5fc

Please sign in to comment.