diff --git a/README.md b/README.md
index 87050094..9342dca2 100644
--- a/README.md
+++ b/README.md
@@ -181,7 +181,7 @@ the Wine prefix. Removing the option will revert to the previous behavior.
| | PROTON_LOG | Convenience method for dumping a useful debug log to `$HOME/steam-$APPID.log`. For more thorough logging, use `user_settings.py`. |
| | PROTON_DUMP_DEBUG_COMMANDS | When running a game, Proton will write some useful debug scripts for that game into `$PROTON_DEBUG_DIR/proton_$USER/`. |
| | PROTON_DEBUG_DIR | Root directory for the Proton debug scripts, `/tmp` by default. |
-| wined3d11 | PROTON_USE_WINED3D11 | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11. |
+| wined3d | PROTON_USE_WINED3D | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11 and d3d10. This used to be called `PROTON_USE_WINED3D11`, which is now an alias for this same option. |
| nod3d11 | PROTON_NO_D3D11 | Disable d3d11.dll, for games which can fall back to and run better with d3d9. |
| noesync | PROTON_NO_ESYNC | Do not use eventfd-based in-process synchronization primitives. |
diff --git a/build/makefile_base.mak b/build/makefile_base.mak
index 6d9a802f..7a01a719 100644
--- a/build/makefile_base.mak
+++ b/build/makefile_base.mak
@@ -871,6 +871,9 @@ dxvk64: $(DXVK_CONFIGURE_FILES64)
mkdir -p "$(DST_DIR)/lib64/wine/dxvk"
cp "$(DXVK_OBJ64)"/bin/dxgi.dll "$(DST_DIR)"/lib64/wine/dxvk
cp "$(DXVK_OBJ64)"/bin/d3d11.dll "$(DST_DIR)"/lib64/wine/dxvk
+ cp "$(DXVK_OBJ64)"/bin/d3d10.dll "$(DST_DIR)"/lib64/wine/dxvk
+ cp "$(DXVK_OBJ64)"/bin/d3d10_1.dll "$(DST_DIR)"/lib64/wine/dxvk
+ cp "$(DXVK_OBJ64)"/bin/d3d10core.dll "$(DST_DIR)"/lib64/wine/dxvk
( cd $(SRCDIR) && git submodule status -- dxvk ) > "$(DST_DIR)"/lib64/wine/dxvk/version
@@ -882,6 +885,9 @@ dxvk32: $(DXVK_CONFIGURE_FILES32)
mkdir -p "$(DST_DIR)"/lib/wine/dxvk
cp "$(DXVK_OBJ32)"/bin/dxgi.dll "$(DST_DIR)"/lib/wine/dxvk/
cp "$(DXVK_OBJ32)"/bin/d3d11.dll "$(DST_DIR)"/lib/wine/dxvk/
+ cp "$(DXVK_OBJ32)"/bin/d3d10.dll "$(DST_DIR)"/lib/wine/dxvk/
+ cp "$(DXVK_OBJ32)"/bin/d3d10_1.dll "$(DST_DIR)"/lib/wine/dxvk/
+ cp "$(DXVK_OBJ32)"/bin/d3d10core.dll "$(DST_DIR)"/lib/wine/dxvk/
( cd $(SRCDIR) && git submodule status -- dxvk ) > "$(DST_DIR)"/lib/wine/dxvk/version
endif # NO_DXVK
diff --git a/proton b/proton
index f36a085d..93294658 100755
--- a/proton
+++ b/proton
@@ -188,18 +188,23 @@ if os.path.exists(basedir + "/user_settings.py"):
def check_environment(env_name, config_name):
if not env_name in env:
- return
+ return False
if env[env_name] == "0" or len(env[env_name]) == 0:
config_opts.discard(config_name)
else:
config_opts.add(config_name)
+ return True
if "STEAM_COMPAT_CONFIG" in os.environ:
config_opts = set(os.environ["STEAM_COMPAT_CONFIG"].split(","))
else:
config_opts = set()
-check_environment("PROTON_USE_WINED3D11", "wined3d11")
+if "wined3d11" in config_opts:
+ config_opts.add("wined3d")
+
+if not check_environment("PROTON_USE_WINED3D", "wined3d"):
+ check_environment("PROTON_USE_WINED3D11", "wined3d")
check_environment("PROTON_NO_D3D11", "nod3d11")
check_environment("PROTON_NO_ESYNC", "noesync")
@@ -335,28 +340,29 @@ with prefix_lock:
except (ValueError, OSError):
log("Unable to write VR config! " + str(sys.exc_info()[1]))
+ dxvkfiles = ("d3d11", "d3d10", "d3d10core", "d3d10_1", "dxgi")
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")
+ for f in dxvkfiles:
+ dst = link_dir + "/" + f + ".dll"
+ src = dll_dir + "/" + f + ".dll"
+ if os.path.lexists(dst):
+ os.remove(dst)
+ os.symlink(src, dst)
- if "wined3d11" in config_opts:
- #use gl-based wined3d for d3d11
+ if "wined3d" in config_opts:
+ #use gl-based wined3d for d3d11 and d3d10
make_dxvk_links(basedir + "/dist/lib64/wine/fakedlls/",
prefix + "drive_c/windows/system32")
make_dxvk_links(basedir + "/dist/lib/wine/fakedlls/",
prefix + "drive_c/windows/syswow64")
else:
- #use vulkan-based dxvk for d3d11
+ #use vulkan-based dxvk for d3d11 and d3d10
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")
- dlloverrides["dxgi"] = "n"
- dlloverrides["d3d11"] = "n"
+ for f in dxvkfiles:
+ dlloverrides[f] = "n"
if "nod3d11" in config_opts:
dlloverrides["d3d11"] = ""
diff --git a/user_settings.sample.py b/user_settings.sample.py
index 084f0c5b..487a7a8d 100755
--- a/user_settings.sample.py
+++ b/user_settings.sample.py
@@ -9,8 +9,8 @@ user_settings = {
#Enable DXVK's HUD
# "DXVK_HUD": "devinfo,fps",
- #Use wined3d for d3d11 instead of dxvk
-# "PROTON_USE_WINED3D11": "1",
+ #Use gl-based wined3d for d3d11 and d3d10 instead of vulkan-based dxvk
+# "PROTON_USE_WINED3D": "1",
#Disable d3d11 entirely
# "PROTON_NO_D3D11": "1",