Unverified Commit ba7016d6 authored by Thiago Kenji Okada's avatar Thiago Kenji Okada Committed by GitHub
Browse files

Merge pull request #200618 from reckenrode/dxvk2

dxvk: 1.10.3 -> 2.0
parents a3c953a3 33b682eb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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 ];
  };
+9 −3
Original line number Diff line number Diff line
@@ -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
+14 −1
Original line number Diff line number Diff line
@@ -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";