From 068609244832f4376b2d8c961b89de752615146d Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Fri, 9 Feb 2018 11:03:59 -0600 Subject: [PATCH] proton: Support launching with dxvk --- proton | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/proton b/proton index 08a422db..7ae76cb6 100755 --- a/proton +++ b/proton @@ -33,7 +33,12 @@ if not ("STEAM_COMPAT_DATA_PATH" in os.environ): sys.exit(1) if "STEAM_COMPAT_CONFIG" in os.environ: - config = os.environ["STEAM_COMPAT_CONFIG"] + config_opts = os.environ["STEAM_COMPAT_CONFIG"].split(",") +else: + config_opts = [] + +if "PROTON_USE_DXVK" in os.environ: + config_opts.append("dxvk") basedir = os.path.dirname(sys.argv[0]) bindir = basedir + "/dist/bin/" @@ -173,6 +178,26 @@ if not vr_runtime is None: except: pass +def make_dxvk_links(dll_dir, link_dir): + if os.path.lexists(link_dir + "/d3d11.dll"): + os.remove(link_dir + "/d3d11.dll") + if os.path.lexists(link_dir + "/dxgi.dll"): + os.remove(link_dir + "/dxgi.dll") + os.symlink(dll_dir + "/d3d11.dll", link_dir + "/d3d11.dll") + os.symlink(dll_dir + "/dxgi.dll", link_dir + "/dxgi.dll") + +if "dxvk" in config_opts: + make_dxvk_links(basedir + "/dist/lib64/wine/dxvk/", + prefix + "drive_c/windows/system32") + make_dxvk_links(basedir + "/dist/lib/wine/dxvk/", + prefix + "drive_c/windows/syswow64") + env["WINEDLLOVERRIDES"] = "dxgi,d3d11=n" +else: + make_dxvk_links(basedir + "/dist/lib64/wine/", + prefix + "drive_c/windows/system32") + make_dxvk_links(basedir + "/dist/lib/wine/", + prefix + "drive_c/windows/syswow64") + #determine mode if sys.argv[1] == "run": #start target app