dxvk: 1.10.3 -> 2.0

This commit is contained in:
Randy Eckenrode 2022-11-10 19:41:42 -05:00
parent 8b5bf4260f
commit 33b682ebaf
No known key found for this signature in database
GPG key ID: 64C1CD4EC2A600D9
2 changed files with 23 additions and 4 deletions

View file

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

View file

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