From f205ee9cd9494b522a28556fbd97a55775357c6b Mon Sep 17 00:00:00 2001 From: Proton Merge Bot Date: Wed, 4 Sep 2024 22:35:19 +0000 Subject: [PATCH 1/2] update submodules --- dxvk | 2 +- dxvk-nvapi | 2 +- vkd3d-proton | 2 +- wine | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dxvk b/dxvk index bac7ae292..daccde764 160000 --- a/dxvk +++ b/dxvk @@ -1 +1 @@ -Subproject commit bac7ae2929da476cd646507722f2e7fb51fb67d4 +Subproject commit daccde7643a2b3ce0e67c2d460d29145c788d6bb diff --git a/dxvk-nvapi b/dxvk-nvapi index bb3d4ad63..ae4aeeee9 160000 --- a/dxvk-nvapi +++ b/dxvk-nvapi @@ -1 +1 @@ -Subproject commit bb3d4ad63becaf9c4eebfd0a19e266d6eb8bd46e +Subproject commit ae4aeeee92c3099fa180007743579295f56469ab diff --git a/vkd3d-proton b/vkd3d-proton index ebe7279e7..0cfe14127 160000 --- a/vkd3d-proton +++ b/vkd3d-proton @@ -1 +1 @@ -Subproject commit ebe7279e7960d204f5b1bd3d89408929140cdd0f +Subproject commit 0cfe1412731bb12048f4b3035f62bdce94bf975e diff --git a/wine b/wine index 48cd14fc0..322ce67c5 160000 --- a/wine +++ b/wine @@ -1 +1 @@ -Subproject commit 48cd14fc026c8ab87eb8ce779888b8669d7e3787 +Subproject commit 322ce67c5916b0eb67350274142cfb8dbd972295 From d380d66632c4fa3f0e122628005150301cbd1ca1 Mon Sep 17 00:00:00 2001 From: Liam Middlebrook Date: Mon, 9 Sep 2024 17:12:05 -0700 Subject: [PATCH 2/2] proton: Populate NVIDIA_WINE_DLL_DIR when available NVIDIA-software may check the environment variable `NVIDIA_WINE_DLL_DIR` for a path where DLLs provided by the NVIDIA Linux driver can be found. This is done as a fallback for when the "DriverStore" cannot be detected via the D3DDDI functions for querying an adapter-specific registry key. Tested with an application that reads `NVIDIA_WINE_DLL_DIR` from the environment and tries to load a known DLL from it. As expected manually setting the environment variable to the on-disk location did not work, as the path is not accurate within the pressure-vessel environment. --- proton | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/proton b/proton index b6bb6a79e..1a2041a05 100755 --- a/proton +++ b/proton @@ -997,11 +997,14 @@ class CompatData: # Try to detect known DLLs that ship with the NVIDIA Linux Driver # and add them into the prefix - nvidia_wine_dll_dir = find_nvidia_wine_dll_dir() - if nvidia_wine_dll_dir: + if g_session.nvidia_wine_dll_dir: for dll in ["_nvngx.dll", "nvngx.dll"]: - try_copy(nvidia_wine_dll_dir + "/" + dll, "drive_c/windows/system32", optional=True, - prefix=self.prefix_dir, track_file=tracked_files, link_debug=True) + try_copy(g_session.nvidia_wine_dll_dir + "/" + dll, + "drive_c/windows/system32", + optional=True, + prefix=self.prefix_dir, + track_file=tracked_files, + link_debug=True) setup_game_dir_drive() setup_steam_dir_drive() @@ -1461,6 +1464,17 @@ class Session: if "PROTON_CRASH_REPORT_DIR" in self.env: self.env["WINE_CRASH_REPORT_DIR"] = self.env["PROTON_CRASH_REPORT_DIR"] + # NVIDIA software may check for the "DriverStore" by querying the + # NGXCore\NGXPath registry key via `D3DDDI_QUERYREGISTRY_SERVICEKEY` for + # a given adapter. In the case where this path cannot be found, the + # `NVIDIA_WINE_DLL_DIR` environment variable is read as a fallback. + # + # TODO: Add support for populating NGXCore\NGXPath so we can remove the + # NGX copies done in setup_prefix(), and this environment variable. + self.nvidia_wine_dll_dir = find_nvidia_wine_dll_dir() + if self.nvidia_wine_dll_dir: + self.env["NVIDIA_WINE_DLL_DIR"] = self.nvidia_wine_dll_dir + if "PROTON_LOG" in self.env and nonzero(self.env["PROTON_LOG"]): if self.setup_logging(append_forever=False): self.log_file.write("======================\n")