From 8b5bf4260fb912ab893da2b58861cca1103b5839 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Thu, 10 Nov 2022 19:40:46 -0500 Subject: [PATCH 1/2] vulkan-headers: add Windows to meta.platforms --- pkgs/development/libraries/vulkan-headers/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/vulkan-headers/default.nix b/pkgs/development/libraries/vulkan-headers/default.nix index 47cdccf41fc1..1db531e3732c 100644 --- a/pkgs/development/libraries/vulkan-headers/default.nix +++ b/pkgs/development/libraries/vulkan-headers/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { meta = with lib; { description = "Vulkan Header files and API registry"; homepage = "https://www.lunarg.com"; - platforms = platforms.unix; + platforms = platforms.unix ++ platforms.windows; license = licenses.asl20; maintainers = [ maintainers.ralith ]; }; From 33b682ebaf5df1db6db775e23ab4356a266cff62 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Thu, 10 Nov 2022 19:41:42 -0500 Subject: [PATCH 2/2] dxvk: 1.10.3 -> 2.0 --- pkgs/misc/dxvk/default.nix | 12 +++++++++--- pkgs/misc/dxvk/dxvk.nix | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkgs/misc/dxvk/default.nix b/pkgs/misc/dxvk/default.nix index 6664db0e9ec9..7d5af28d8107 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 2eb4f30df2bc..7607c9ee4412 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";