From d532dbefb98521a1bf56d7b6d8796ee9b1b4e875 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Tue, 11 Jul 2023 11:09:20 -0600 Subject: [PATCH 1/3] dxvk: add an update script --- pkgs/misc/dxvk/dxvk.nix | 15 +++++++++++---- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pkgs/misc/dxvk/dxvk.nix b/pkgs/misc/dxvk/dxvk.nix index e0aa7105bb35..fccdf38a0d28 100644 --- a/pkgs/misc/dxvk/dxvk.nix +++ b/pkgs/misc/dxvk/dxvk.nix @@ -5,12 +5,13 @@ , meson , ninja , windows -, dxvkVersion +, dxvkVersion ? "default" , spirv-headers , vulkan-headers , SDL2 , glfw , pkgsBuildHost +, gitUpdater , sdl2Support ? true , glfwSupport ? false }: @@ -43,7 +44,7 @@ let ./darwin-thread-primitives.patch ]; }; - "2.1" = rec { + "default" = rec { version = "2.1"; src = fetchFromGitHub { owner = "doitsujin"; @@ -59,7 +60,7 @@ let isWindows = stdenv.targetPlatform.uname.system == "Windows"; isCross = stdenv.hostPlatform != stdenv.targetPlatform; in -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "dxvk"; inherit (srcs.${dxvkVersion}) version src patches; @@ -95,6 +96,12 @@ stdenv.mkDerivation { doCheck = isDxvk2 && !isCross; + passthru = lib.optionalAttrs (lib.versionAtLeast finalAttrs.version "2.0") { + updateScript = gitUpdater { + rev-prefix = "v"; + }; + }; + meta = { description = "A Vulkan-based translation layer for Direct3D 9/10/11"; homepage = "https://github.com/doitsujin/dxvk"; @@ -103,4 +110,4 @@ stdenv.mkDerivation { license = lib.licenses.zlib; platforms = lib.platforms.windows ++ lib.optionals isDxvk2 lib.platforms.linux; }; -} +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c9847af05129..e222bc6c3ecb 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -39521,7 +39521,7 @@ with pkgs; dxvk = callPackage ../misc/dxvk { }; dxvk_1 = callPackage ../misc/dxvk/dxvk.nix { dxvkVersion = "1.10"; }; - dxvk_2 = callPackage ../misc/dxvk/dxvk.nix { dxvkVersion = "2.1"; }; + dxvk_2 = callPackage ../misc/dxvk/dxvk.nix { }; ec2stepshell = callPackage ../tools/security/ec2stepshell { }; From a8bb233a094da5398a07da99ee406be30bd6f3aa Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Tue, 11 Jul 2023 11:12:36 -0600 Subject: [PATCH 2/3] dxvk: 2.1 -> 2.2 https://github.com/doitsujin/dxvk/releases/tag/v2.2 --- pkgs/misc/dxvk/dxvk.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/misc/dxvk/dxvk.nix b/pkgs/misc/dxvk/dxvk.nix index fccdf38a0d28..f2f34c6f72c8 100644 --- a/pkgs/misc/dxvk/dxvk.nix +++ b/pkgs/misc/dxvk/dxvk.nix @@ -45,12 +45,12 @@ let ]; }; "default" = rec { - version = "2.1"; + version = "2.2"; src = fetchFromGitHub { owner = "doitsujin"; repo = "dxvk"; rev = "v${version}"; - hash = "sha256-A4KR11brfQbR56dGt371MRwMN/H6HFAU8TlFC97/bRs="; + hash = "sha256-GKRd66DvcA+7p3/wDqAUi02ZLRSVZ/fvJM0PQDEKVMA="; fetchSubmodules = true; # Needed for the DirectX headers and libdisplay-info }; patches = [ ]; From 1e4e27a99f2efbe6a4c6866ca1f170babcd2f85c Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Tue, 11 Jul 2023 11:23:32 -0600 Subject: [PATCH 3/3] dxvk: move Darwin detection to the wrapper package --- pkgs/misc/dxvk/default.nix | 8 ++++++-- pkgs/misc/dxvk/dxvk.nix | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pkgs/misc/dxvk/default.nix b/pkgs/misc/dxvk/default.nix index 49b6c4d0bebd..88b7e5b104fb 100644 --- a/pkgs/misc/dxvk/default.nix +++ b/pkgs/misc/dxvk/default.nix @@ -8,8 +8,12 @@ stdenvNoCC.mkDerivation (finalAttrs: let - dxvk32 = if stdenv.isDarwin then pkgsCross.mingw32.dxvk_1 else pkgsCross.mingw32.dxvk_2; - dxvk64 = if stdenv.isDarwin then pkgsCross.mingwW64.dxvk_1 else pkgsCross.mingwW64.dxvk_2; + dxvk32 = if stdenv.isDarwin + then pkgsCross.mingw32.dxvk_1.override { enableMoltenVKCompat = true; } + else pkgsCross.mingw32.dxvk_2; + dxvk64 = if stdenv.isDarwin + then pkgsCross.mingwW64.dxvk_1.override { enableMoltenVKCompat = true; } + else pkgsCross.mingwW64.dxvk_2; in { pname = "dxvk"; diff --git a/pkgs/misc/dxvk/dxvk.nix b/pkgs/misc/dxvk/dxvk.nix index f2f34c6f72c8..b7bc4f2fc127 100644 --- a/pkgs/misc/dxvk/dxvk.nix +++ b/pkgs/misc/dxvk/dxvk.nix @@ -14,6 +14,7 @@ , gitUpdater , sdl2Support ? true , glfwSupport ? false +, enableMoltenVKCompat ? false }: # SDL2 and GLFW support are mutually exclusive. @@ -35,7 +36,7 @@ let hash = "sha256-T93ZylxzJGprrP+j6axZwl2d3hJowMCUOKNjIyNzkmE="; }; # These patches are required when using DXVK with Wine on Darwin. - patches = lib.optionals stdenv.buildPlatform.isDarwin [ + patches = lib.optionals enableMoltenVKCompat [ # Patch DXVK to work with MoltenVK even though it doesn’t support some required features. # Some games work poorly (particularly Unreal Engine 4 games), but others work pretty well. ./darwin-dxvk-compat.patch