about summary refs log tree commit diff
path: root/pkgs/misc
diff options
context:
space:
mode:
authorRandy Eckenrode <randy@largeandhighquality.com>2022-11-10 19:41:42 -0500
committerRandy Eckenrode <randy@largeandhighquality.com>2022-11-10 19:52:32 -0500
commit33b682ebaf5df1db6db775e23ab4356a266cff62 (patch)
tree36a3b177b1e1050d21137f02bcd5e5104cbe97fe /pkgs/misc
parent8b5bf4260fb912ab893da2b58861cca1103b5839 (diff)
dxvk: 1.10.3 -> 2.0
Diffstat (limited to 'pkgs/misc')
-rw-r--r--pkgs/misc/dxvk/default.nix12
-rw-r--r--pkgs/misc/dxvk/dxvk.nix15
2 files changed, 23 insertions, 4 deletions
diff --git a/pkgs/misc/dxvk/default.nix b/pkgs/misc/dxvk/default.nix
index 6664db0e9ec94..7d5af28d81072 100644
--- a/pkgs/misc/dxvk/default.nix
+++ b/pkgs/misc/dxvk/default.nix
@@ -22,12 +22,16 @@ stdenvNoCC.mkDerivation (finalAttrs:
     # platforms diverge (due to the need for Darwin-specific patches that would fail to apply).
     # Should that happen, set `darwin` to the last working `rev` and `hash`.
     srcs = rec {
-      darwin = { inherit (default) rev hash version; };
-      default = {
+      darwin = {
         rev = "v${finalAttrs.version}";
         hash = "sha256-T93ZylxzJGprrP+j6axZwl2d3hJowMCUOKNjIyNzkmE=";
         version = "1.10.3";
       };
+      default = {
+        rev = "v${finalAttrs.version}";
+        hash = "sha256-mboVLdPgZMzmqyeF0jAloEz6xqfIDiY/X98e7l2KZnw=";
+        version = "2.0";
+      };
     };
   in
   {
@@ -60,10 +64,12 @@ stdenvNoCC.mkDerivation (finalAttrs:
 
     installPhase = ''
       mkdir -p $out/bin $bin $lib
+      # Replace both basedir forms to support both DXVK 2.0 and older versions.
       substitute setup_dxvk.sh $out/bin/setup_dxvk.sh \
         --subst-var-by mcfgthreads32 "${pkgsCross.mingw32.windows.mcfgthreads}" \
         --subst-var-by mcfgthreads64 "${pkgsCross.mingwW64.windows.mcfgthreads}" \
-        --replace 'basedir=$(dirname "$(readlink -f $0)")' "basedir=$bin"
+        --replace 'basedir=$(dirname "$(readlink -f $0)")' "basedir=$bin" \
+        --replace 'basedir="$(dirname "$(readlink -f "$0")")"' "basedir=$bin"
       chmod a+x $out/bin/setup_dxvk.sh
       declare -A dxvks=( [x32]=${dxvk32} [x64]=${dxvk64} )
       for arch in "''${!dxvks[@]}"; do
diff --git a/pkgs/misc/dxvk/dxvk.nix b/pkgs/misc/dxvk/dxvk.nix
index 2eb4f30df2bc3..7607c9ee44128 100644
--- a/pkgs/misc/dxvk/dxvk.nix
+++ b/pkgs/misc/dxvk/dxvk.nix
@@ -7,18 +7,31 @@
 , windows
 , src
 , version
+, spirv-headers
+, vulkan-headers
 , dxvkPatches
 }:
 
+let
+  # DXVK 2.0+ no longer vendors certain dependencies. This derivation also needs to build on Darwin,
+  # which does not currently support DXVK 2.0, so adapt conditionally for this situation.
+  isDxvk2 = lib.versionAtLeast version "2.0";
+in
 stdenv.mkDerivation {
   pname = "dxvk";
   inherit src version;
 
   nativeBuildInputs = [ glslang meson ninja ];
-  buildInputs = [ windows.pthreads ];
+  buildInputs = [ windows.pthreads ]
+    ++ lib.optionals isDxvk2 [ spirv-headers vulkan-headers ];
 
   patches = dxvkPatches;
 
+  preConfigure = lib.optionalString isDxvk2 ''
+    ln -s ${lib.getDev spirv-headers}/include include/spirv/include
+    ln -s ${lib.getDev vulkan-headers}/include include/vulkan/include
+  '';
+
   mesonFlags =
     let
       arch = if stdenv.is32bit then "32" else "64";