Unverified Commit 746a5fc2 authored by Atemu's avatar Atemu Committed by GitHub
Browse files

Merge pull request #231874 from Atemu/fix/mangohud-layer-name-bitness

mangohud: add bitness suffix to layer name
parents 6d6c7c59 7eacc7f5
Loading
Loading
Loading
Loading
+21 −10
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
, glfw
, xorg
, gamescopeSupport ? true # build mangoapp and mangohudctl
, lowerBitnessSupport ? stdenv.hostPlatform.is64bit # Support 32 bit on 64bit
, nix-update-script
}:

@@ -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
@@ -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"

@@ -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 ''
  '' + lib.optionalString gamescopeSupport ''
    addOpenGLRunpath "$out/bin/mangoapp"
    ''}
    ${lib.optionalString finalAttrs.doCheck ''
  '' + lib.optionalString finalAttrs.doCheck ''
    # libcmocka.so is only used for tests
    rm "$out/lib/libcmocka.so"
    ''}
  '';

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