mirror of
https://github.com/ValveSoftware/Proton.git
synced 2025-04-23 14:53:37 +03:00
Merge branch 'proton_3.16-next' into proton_3.16
This commit is contained in:
commit
c8d12e78a7
13
CHANGELOG.md
13
CHANGELOG.md
@ -1,7 +1,16 @@
|
|||||||
## Available in Proton 3.7 Beta:
|
## Available in Proton 3.16 Beta:
|
||||||
|
###### 3.16-1:
|
||||||
|
- Rebased Proton patches onto Wine 3.16.
|
||||||
|
- Updated Vulkan support in Wine to 1.1.86, plus support for transform feedback.
|
||||||
|
- DXVK has been updated to [0.81](https://github.com/doitsujin/dxvk/releases/tag/v0.81) plus support for transform feedback which should fix missing models in many D3D11 games. *Transform feedback requires using Mesa git or NVIDIA's 396.54.09 Vulkan Beta driver*.
|
||||||
|
- DXVK's d3d10 mode is now enabled by default.
|
||||||
|
- DXVK is now built as a native Linux library, which may give a small performance boost, and should make debugging easier for DXVK and driver developers.
|
||||||
|
- Missing textures for models in some VR games has been resolved.
|
||||||
|
- Ask the window manager to bypass the compositor in fullscreen mode. This may improve performance in some situations.
|
||||||
|
- All new makefile-based build system.
|
||||||
|
## Available in Proton 3.7:
|
||||||
###### 3.7-8:
|
###### 3.7-8:
|
||||||
- Minor compatibility fixes in preparation for future Proton versions.
|
- Minor compatibility fixes in preparation for future Proton versions.
|
||||||
## Available in Proton 3.7:
|
|
||||||
###### 3.7-7:
|
###### 3.7-7:
|
||||||
- Improvements to alt-tab and fullscreen behavior in many games.
|
- Improvements to alt-tab and fullscreen behavior in many games.
|
||||||
- Fix mouse behavior in some games and mice with high sample rates.
|
- Fix mouse behavior in some games and mice with high sample rates.
|
||||||
|
11
README.md
11
README.md
@ -68,7 +68,7 @@ which can have [security
|
|||||||
implications](https://docs.docker.com/engine/security/security/).
|
implications](https://docs.docker.com/engine/security/security/).
|
||||||
|
|
||||||
Starting from a stock Debian 9 installation, you will need to install the
|
Starting from a stock Debian 9 installation, you will need to install the
|
||||||
`gpgv2`, `gnupg2`, `g++`, and `g++-6-multilib` packages from the
|
`gpgv2`, `gnupg2`, `g++`, `g++-6-multilib`, and `mingw-w64` packages from the
|
||||||
Debian repos. You will also need to install `meson` version 0.43 or later,
|
Debian repos. You will also need to install `meson` version 0.43 or later,
|
||||||
which can be [acquired from backports](https://backports.debian.org/Instructions/). Next,
|
which can be [acquired from backports](https://backports.debian.org/Instructions/). Next,
|
||||||
[install Docker-CE from the official Docker repositories](https://docs.docker.com/install/linux/docker-ce/debian/).
|
[install Docker-CE from the official Docker repositories](https://docs.docker.com/install/linux/docker-ce/debian/).
|
||||||
@ -78,6 +78,13 @@ This will pull in all of the dependencies required to run wine. You can then
|
|||||||
(and we do) uninstall the `winehq-devel` package in order to ensure that a
|
(and we do) uninstall the `winehq-devel` package in order to ensure that a
|
||||||
system Wine installation does not interfere with your build process.
|
system Wine installation does not interfere with your build process.
|
||||||
|
|
||||||
|
DXVK requires that we choose the posix alternative for the mingw-w64 compilers:
|
||||||
|
|
||||||
|
sudo update-alternatives --set x86_64-w64-mingw32-gcc `which x86_64-w64-mingw32-gcc-posix`
|
||||||
|
sudo update-alternatives --set x86_64-w64-mingw32-g++ `which x86_64-w64-mingw32-g++-posix`
|
||||||
|
sudo update-alternatives --set i686-w64-mingw32-gcc `which i686-w64-mingw32-gcc-posix`
|
||||||
|
sudo update-alternatives --set i686-w64-mingw32-g++ `which i686-w64-mingw32-g++-posix`
|
||||||
|
|
||||||
Next we set up the Steam runtime build environments. Here we use the
|
Next we set up the Steam runtime build environments. Here we use the
|
||||||
`wip-docker` branch to get access to the Docker images.
|
`wip-docker` branch to get access to the Docker images.
|
||||||
|
|
||||||
@ -174,7 +181,7 @@ the Wine prefix. Removing the option will revert to the previous behavior.
|
|||||||
| | <tt>PROTON_LOG</tt> | Convenience method for dumping a useful debug log to `$HOME/steam-$APPID.log`. For more thorough logging, use `user_settings.py`. |
|
| | <tt>PROTON_LOG</tt> | Convenience method for dumping a useful debug log to `$HOME/steam-$APPID.log`. For more thorough logging, use `user_settings.py`. |
|
||||||
| | <tt>PROTON_DUMP_DEBUG_COMMANDS</tt> | When running a game, Proton will write some useful debug scripts for that game into `$PROTON_DEBUG_DIR/proton_$USER/`. |
|
| | <tt>PROTON_DUMP_DEBUG_COMMANDS</tt> | When running a game, Proton will write some useful debug scripts for that game into `$PROTON_DEBUG_DIR/proton_$USER/`. |
|
||||||
| | <tt>PROTON_DEBUG_DIR<tt> | Root directory for the Proton debug scripts, `/tmp` by default. |
|
| | <tt>PROTON_DEBUG_DIR<tt> | Root directory for the Proton debug scripts, `/tmp` by default. |
|
||||||
| <tt>wined3d11</tt> | <tt>PROTON_USE_WINED3D11</tt> | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11. |
|
| <tt>wined3d</tt> | <tt>PROTON_USE_WINED3D</tt> | 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. |
|
||||||
| <tt>nod3d11</tt> | <tt>PROTON_NO_D3D11</tt> | Disable <tt>d3d11.dll</tt>, for games which can fall back to and run better with d3d9. |
|
| <tt>nod3d11</tt> | <tt>PROTON_NO_D3D11</tt> | Disable <tt>d3d11.dll</tt>, for games which can fall back to and run better with d3d9. |
|
||||||
| <tt>noesync</tt> | <tt>PROTON_NO_ESYNC</tt> | Do not use eventfd-based in-process synchronization primitives. |
|
| <tt>noesync</tt> | <tt>PROTON_NO_ESYNC</tt> | Do not use eventfd-based in-process synchronization primitives. |
|
||||||
|
|
||||||
|
@ -230,8 +230,8 @@ STEAM_DIR := $(HOME)/.steam/root
|
|||||||
DIST_COPY_FILES := toolmanifest.vdf filelock.py proton proton_3.7_tracked_files user_settings.sample.py
|
DIST_COPY_FILES := toolmanifest.vdf filelock.py proton proton_3.7_tracked_files user_settings.sample.py
|
||||||
DIST_COPY_TARGETS := $(addprefix $(DST_BASE)/,$(DIST_COPY_FILES))
|
DIST_COPY_TARGETS := $(addprefix $(DST_BASE)/,$(DIST_COPY_FILES))
|
||||||
DIST_VERSION := $(DST_DIR)/version
|
DIST_VERSION := $(DST_DIR)/version
|
||||||
DIST_OVR32 := $(DST_DIR)/lib/openvr_api_dxvk.so
|
DIST_OVR32 := $(DST_DIR)/lib/wine/dxvk/openvr_api_dxvk.dll
|
||||||
DIST_OVR64 := $(DST_DIR)/lib64/openvr_api_dxvk.so
|
DIST_OVR64 := $(DST_DIR)/lib64/wine/dxvk/openvr_api_dxvk.dll
|
||||||
DIST_PREFIX := $(DST_DIR)/share/default_pfx/
|
DIST_PREFIX := $(DST_DIR)/share/default_pfx/
|
||||||
DIST_COMPAT_MANIFEST := $(DST_BASE)/compatibilitytool.vdf
|
DIST_COMPAT_MANIFEST := $(DST_BASE)/compatibilitytool.vdf
|
||||||
DIST_LICENSE := $(DST_BASE)/LICENSE
|
DIST_LICENSE := $(DST_BASE)/LICENSE
|
||||||
@ -247,12 +247,12 @@ DEPLOY_COPY_TARGETS := $(DIST_COPY_TARGETS) $(DIST_VERSION) $(DIST_LICENSE)
|
|||||||
$(DIST_LICENSE): $(LICENSE)
|
$(DIST_LICENSE): $(LICENSE)
|
||||||
cp -a $< $@
|
cp -a $< $@
|
||||||
|
|
||||||
$(DIST_OVR32): $(SRCDIR)/openvr/bin/linux32/libopenvr_api.so | $(DST_DIR)
|
$(DIST_OVR32): $(SRCDIR)/openvr/bin/win32/openvr_api.dll | $(DST_DIR)
|
||||||
mkdir -p $(DST_DIR)/lib/
|
mkdir -p $(DST_DIR)/lib/wine/dxvk
|
||||||
cp -a $< $@
|
cp -a $< $@
|
||||||
|
|
||||||
$(DIST_OVR64): $(SRCDIR)/openvr/bin/linux64/libopenvr_api.so | $(DST_DIR)
|
$(DIST_OVR64): $(SRCDIR)/openvr/bin/win64/openvr_api.dll | $(DST_DIR)
|
||||||
mkdir -p $(DST_DIR)/lib64/
|
mkdir -p $(DST_DIR)/lib64/wine/dxvk
|
||||||
cp -a $< $@
|
cp -a $< $@
|
||||||
|
|
||||||
$(DIST_COPY_TARGETS): | $(DST_DIR)
|
$(DIST_COPY_TARGETS): | $(DST_DIR)
|
||||||
@ -831,24 +831,22 @@ DXVK_CONFIGURE_FILES32 := $(DXVK_OBJ32)/build.ninja
|
|||||||
DXVK_CONFIGURE_FILES64 := $(DXVK_OBJ64)/build.ninja
|
DXVK_CONFIGURE_FILES64 := $(DXVK_OBJ64)/build.ninja
|
||||||
|
|
||||||
# 64bit-configure
|
# 64bit-configure
|
||||||
# the sed junk is to work around meson being unable to pass linker args to
|
$(DXVK_CONFIGURE_FILES64): $(MAKEFILE_DEP) | $(DXVK_OBJ64)
|
||||||
# cross-file builds.
|
|
||||||
$(DXVK_CONFIGURE_FILES64): $(MAKEFILE_DEP) $(WINE_BUILDTOOLS64) | $(DXVK_OBJ64)
|
|
||||||
cd "$(DXVK)" && \
|
cd "$(DXVK)" && \
|
||||||
sed -e "s|@PROTON_C_LINK_ARGS@|'-L$(abspath $(TOOLS_DIR64))/lib64', '-L$(abspath $(TOOLS_DIR64))/lib64/wine'|" \
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" \
|
||||||
-e "s|@PROTON_C_ARGS@|'-I$(abspath $(TOOLS_DIR64))/include', '-I$(abspath $(TOOLS_DIR64))/include/wine', '-I$(abspath $(TOOLS_DIR64))/include/wine/windows'|" \
|
meson --prefix="$(abspath $(DXVK_OBJ64))" --cross-file build-win64.txt "$(abspath $(DXVK_OBJ64))"
|
||||||
< build-wine64.txt > proton-build-wine64.txt && \
|
|
||||||
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(abspath $(TOOLS_DIR64))/bin/:$(PATH)" \
|
cd "$(DXVK_OBJ64)" && \
|
||||||
meson --libdir=lib/ --prefix="$(abspath $(DXVK_OBJ64))" --cross-file proton-build-wine64.txt --buildtype=release "$(abspath $(DXVK_OBJ64))"
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" meson configure -Dbuildtype=release
|
||||||
|
|
||||||
# 32-bit configure
|
# 32-bit configure
|
||||||
$(DXVK_CONFIGURE_FILES32): $(MAKEFILE_DEP) $(WINE_BUILDTOOLS32) | $(DXVK_OBJ32)
|
$(DXVK_CONFIGURE_FILES32): $(MAKEFILE_DEP) | $(DXVK_OBJ32)
|
||||||
cd "$(DXVK)" && \
|
cd "$(DXVK)" && \
|
||||||
sed -e "s|@PROTON_C_LINK_ARGS@|'-L$(abspath $(TOOLS_DIR32))/lib', '-L$(abspath $(TOOLS_DIR32))/lib/wine'|" \
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" \
|
||||||
-e "s|@PROTON_C_ARGS@|'-I$(abspath $(TOOLS_DIR32))/include', '-I$(abspath $(TOOLS_DIR32))/include/wine', '-I$(abspath $(TOOLS_DIR32))/include/wine/windows'|" \
|
meson --prefix="$(abspath $(DXVK_OBJ32))" --cross-file build-win32.txt "$(abspath $(DXVK_OBJ32))"
|
||||||
< build-wine32.txt > proton-build-wine32.txt && \
|
|
||||||
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(abspath $(TOOLS_DIR32))/bin/:$(PATH)" \
|
cd "$(DXVK_OBJ32)" && \
|
||||||
meson --libdir=lib/ --prefix="$(abspath $(DXVK_OBJ32))" --cross-file proton-build-wine32.txt --buildtype=release "$(abspath $(DXVK_OBJ32))"
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" meson configure -Dbuildtype=release
|
||||||
|
|
||||||
## dxvk goals
|
## dxvk goals
|
||||||
DXVK_TARGETS = dxvk dxvk_configure dxvk32 dxvk64 dxvk_configure32 dxvk_configure64
|
DXVK_TARGETS = dxvk dxvk_configure dxvk32 dxvk64 dxvk_configure32 dxvk_configure64
|
||||||
@ -867,31 +865,31 @@ dxvk_configure32: $(DXVK_CONFIGURE_FILES32)
|
|||||||
dxvk: dxvk32 dxvk64
|
dxvk: dxvk32 dxvk64
|
||||||
|
|
||||||
dxvk64: $(DXVK_CONFIGURE_FILES64)
|
dxvk64: $(DXVK_CONFIGURE_FILES64)
|
||||||
(cd "$(DXVK_OBJ64)" && \
|
cd "$(DXVK_OBJ64)" && \
|
||||||
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(abspath $(TOOLS_DIR64))/bin/:$(PATH)" ninja && \
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" ninja && \
|
||||||
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(abspath $(TOOLS_DIR64))/bin/:$(PATH)" ninja install) && \
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" ninja install
|
||||||
mkdir -p "$(DST_DIR)"/lib64/wine/dxvk "$(DST_DIR)"/lib64/wine/wined3d && \
|
|
||||||
cp -a "$(DXVK_OBJ64)"/lib/*.dll.so "$(DST_DIR)"/lib64/wine/dxvk && \
|
mkdir -p "$(DST_DIR)/lib64/wine/dxvk"
|
||||||
( cd $(SRCDIR) && git submodule status -- dxvk ) > "$(DST_DIR)"/lib64/wine/dxvk/version && \
|
cp "$(DXVK_OBJ64)"/bin/dxgi.dll "$(DST_DIR)"/lib64/wine/dxvk
|
||||||
for f in "$(DST_DIR)"/lib64/wine/dxvk/*.dll.so; do \
|
cp "$(DXVK_OBJ64)"/bin/d3d11.dll "$(DST_DIR)"/lib64/wine/dxvk
|
||||||
if [ -e "$(DST_DIR)"/lib64/wine/$$(basename $$f) ]; then \
|
cp "$(DXVK_OBJ64)"/bin/d3d10.dll "$(DST_DIR)"/lib64/wine/dxvk
|
||||||
mv "$(DST_DIR)"/lib64/wine/$$(basename $$f) "$(DST_DIR)"/lib64/wine/wined3d/; \
|
cp "$(DXVK_OBJ64)"/bin/d3d10_1.dll "$(DST_DIR)"/lib64/wine/dxvk
|
||||||
fi; \
|
cp "$(DXVK_OBJ64)"/bin/d3d10core.dll "$(DST_DIR)"/lib64/wine/dxvk
|
||||||
done
|
( cd $(SRCDIR) && git submodule status -- dxvk ) > "$(DST_DIR)"/lib64/wine/dxvk/version
|
||||||
|
|
||||||
|
|
||||||
dxvk32: $(DXVK_CONFIGURE_FILES32)
|
dxvk32: $(DXVK_CONFIGURE_FILES32)
|
||||||
(cd "$(DXVK_OBJ32)" && \
|
cd "$(DXVK_OBJ32)" && \
|
||||||
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(abspath $(TOOLS_DIR32)/bin/):$(PATH)" ninja && \
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" ninja && \
|
||||||
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(abspath $(TOOLS_DIR32)/bin/):$(PATH)" ninja install) && \
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" ninja install
|
||||||
mkdir -p "$(DST_DIR)"/lib/wine/dxvk "$(DST_DIR)"/lib/wine/wined3d && \
|
|
||||||
cp -a "$(DXVK_OBJ32)"/lib/*.dll.so "$(DST_DIR)"/lib/wine/dxvk && \
|
mkdir -p "$(DST_DIR)"/lib/wine/dxvk
|
||||||
( cd $(SRCDIR) && git submodule status -- dxvk ) > "$(DST_DIR)"/lib/wine/dxvk/version && \
|
cp "$(DXVK_OBJ32)"/bin/dxgi.dll "$(DST_DIR)"/lib/wine/dxvk/
|
||||||
for f in "$(DST_DIR)"/lib/wine/dxvk/*.dll.so; do \
|
cp "$(DXVK_OBJ32)"/bin/d3d11.dll "$(DST_DIR)"/lib/wine/dxvk/
|
||||||
if [ -e "$(DST_DIR)"/lib/wine/$$(basename $$f) ]; then \
|
cp "$(DXVK_OBJ32)"/bin/d3d10.dll "$(DST_DIR)"/lib/wine/dxvk/
|
||||||
mv "$(DST_DIR)"/lib/wine/$$(basename $$f) "$(DST_DIR)"/lib/wine/wined3d/; \
|
cp "$(DXVK_OBJ32)"/bin/d3d10_1.dll "$(DST_DIR)"/lib/wine/dxvk/
|
||||||
fi; \
|
cp "$(DXVK_OBJ32)"/bin/d3d10core.dll "$(DST_DIR)"/lib/wine/dxvk/
|
||||||
done
|
( cd $(SRCDIR) && git submodule status -- dxvk ) > "$(DST_DIR)"/lib/wine/dxvk/version
|
||||||
|
|
||||||
endif # NO_DXVK
|
endif # NO_DXVK
|
||||||
|
|
||||||
|
2
dxvk
2
dxvk
@ -1 +1 @@
|
|||||||
Subproject commit 38d6268cc4a622bf95efc0bf43075edf27b3c59b
|
Subproject commit 6558b275824e57131b0214ae33abd82e8d1d34c3
|
74
proton
74
proton
@ -82,31 +82,6 @@ def upgrade_pfx(old_ver):
|
|||||||
shutil.rmtree(prefix)
|
shutil.rmtree(prefix)
|
||||||
return
|
return
|
||||||
|
|
||||||
if old_proton_ver == "3.7":
|
|
||||||
#proton 3.7 used symlinks to install DXVK. this is no longer needed,
|
|
||||||
#restore to correct wine configuration
|
|
||||||
log("Fixing up d3d11 symlinks")
|
|
||||||
|
|
||||||
#64-bit
|
|
||||||
link_dir = prefix + "drive_c/windows/system32"
|
|
||||||
dll_dir = basedir + "/dist/lib64/wine/fakedlls"
|
|
||||||
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")
|
|
||||||
shutil.copy(dll_dir + "/d3d11.dll", link_dir + "/d3d11.dll")
|
|
||||||
shutil.copy(dll_dir + "/dxgi.dll", link_dir + "/dxgi.dll")
|
|
||||||
|
|
||||||
#32-bit
|
|
||||||
link_dir = prefix + "drive_c/windows/syswow64"
|
|
||||||
dll_dir = basedir + "/dist/lib/wine/fakedlls"
|
|
||||||
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")
|
|
||||||
shutil.copy(dll_dir + "/d3d11.dll", link_dir + "/d3d11.dll")
|
|
||||||
shutil.copy(dll_dir + "/dxgi.dll", link_dir + "/dxgi.dll")
|
|
||||||
|
|
||||||
def run_wine(args):
|
def run_wine(args):
|
||||||
subprocess.call(args, env=env, stderr=lfile)
|
subprocess.call(args, env=env, stderr=lfile)
|
||||||
|
|
||||||
@ -213,29 +188,29 @@ if os.path.exists(basedir + "/user_settings.py"):
|
|||||||
|
|
||||||
def check_environment(env_name, config_name):
|
def check_environment(env_name, config_name):
|
||||||
if not env_name in env:
|
if not env_name in env:
|
||||||
return
|
return False
|
||||||
if env[env_name] == "0" or len(env[env_name]) == 0:
|
if env[env_name] == "0" or len(env[env_name]) == 0:
|
||||||
config_opts.discard(config_name)
|
config_opts.discard(config_name)
|
||||||
else:
|
else:
|
||||||
config_opts.add(config_name)
|
config_opts.add(config_name)
|
||||||
|
return True
|
||||||
|
|
||||||
if "STEAM_COMPAT_CONFIG" in os.environ:
|
if "STEAM_COMPAT_CONFIG" in os.environ:
|
||||||
config_opts = set(os.environ["STEAM_COMPAT_CONFIG"].split(","))
|
config_opts = set(os.environ["STEAM_COMPAT_CONFIG"].split(","))
|
||||||
else:
|
else:
|
||||||
config_opts = set()
|
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_D3D11", "nod3d11")
|
||||||
check_environment("PROTON_NO_ESYNC", "noesync")
|
check_environment("PROTON_NO_ESYNC", "noesync")
|
||||||
|
|
||||||
if not "noesync" in config_opts:
|
if not "noesync" in config_opts:
|
||||||
env["WINEESYNC"] = "1"
|
env["WINEESYNC"] = "1"
|
||||||
|
|
||||||
if "wined3d11" in config_opts:
|
|
||||||
env["WINEDLLPATH"] = lib64dir + "/wine/wined3d:" + libdir + "/wine/wined3d:" + env["WINEDLLPATH"]
|
|
||||||
else:
|
|
||||||
env["WINEDLLPATH"] = lib64dir + "/wine/dxvk:" + libdir + "/wine/dxvk:" + env["WINEDLLPATH"]
|
|
||||||
|
|
||||||
lfile = None
|
lfile = None
|
||||||
if "SteamGameId" in env:
|
if "SteamGameId" in env:
|
||||||
if env["WINEDEBUG"] != "-all":
|
if env["WINEDEBUG"] != "-all":
|
||||||
@ -288,6 +263,9 @@ with prefix_lock:
|
|||||||
shutil.copy(basedir + "/dist/lib/wine/fakedlls/vrclient.dll", dst)
|
shutil.copy(basedir + "/dist/lib/wine/fakedlls/vrclient.dll", dst)
|
||||||
shutil.copy(basedir + "/dist/lib64/wine/fakedlls/vrclient_x64.dll", dst)
|
shutil.copy(basedir + "/dist/lib64/wine/fakedlls/vrclient_x64.dll", dst)
|
||||||
|
|
||||||
|
shutil.copy(basedir + "/dist/lib/wine/dxvk/openvr_api_dxvk.dll", prefix + "/drive_c/windows/syswow64/")
|
||||||
|
shutil.copy(basedir + "/dist/lib64/wine/dxvk/openvr_api_dxvk.dll", prefix + "/drive_c/windows/system32/")
|
||||||
|
|
||||||
#parse linux openvr config and present it in win32 format to the app.
|
#parse linux openvr config and present it in win32 format to the app.
|
||||||
#logic from openvr's CVRPathRegistry_Public::GetPaths
|
#logic from openvr's CVRPathRegistry_Public::GetPaths
|
||||||
|
|
||||||
@ -312,10 +290,7 @@ with prefix_lock:
|
|||||||
vr_config is None or \
|
vr_config is None or \
|
||||||
vr_log is None:
|
vr_log is None:
|
||||||
try:
|
try:
|
||||||
if "XDG_CONFIG_HOME" in os.environ:
|
path = os.environ.get("XDG_CONFIG_HOME", os.environ["HOME"] + "/.config")
|
||||||
path = os.environ["XDG_CONFIG_HOME"]
|
|
||||||
else:
|
|
||||||
path = os.environ["HOME"] + "/.config"
|
|
||||||
path = path + "/openvr/openvrpaths.vrpath"
|
path = path + "/openvr/openvrpaths.vrpath"
|
||||||
|
|
||||||
with open(path, "r") as jfile:
|
with open(path, "r") as jfile:
|
||||||
@ -362,6 +337,30 @@ with prefix_lock:
|
|||||||
except (ValueError, OSError):
|
except (ValueError, OSError):
|
||||||
log("Unable to write VR config! " + str(sys.exc_info()[1]))
|
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):
|
||||||
|
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 "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 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")
|
||||||
|
for f in dxvkfiles:
|
||||||
|
dlloverrides[f] = "n"
|
||||||
|
|
||||||
if "nod3d11" in config_opts:
|
if "nod3d11" in config_opts:
|
||||||
dlloverrides["d3d11"] = ""
|
dlloverrides["d3d11"] = ""
|
||||||
if "dxgi" in dlloverrides:
|
if "dxgi" in dlloverrides:
|
||||||
@ -374,6 +373,9 @@ for dll in dlloverrides:
|
|||||||
s = s + ";" + dll + "=" + setting
|
s = s + ";" + dll + "=" + setting
|
||||||
else:
|
else:
|
||||||
s = dll + "=" + setting
|
s = dll + "=" + setting
|
||||||
|
if "WINEDLLOVERRIDES" in os.environ:
|
||||||
|
env["WINEDLLOVERRIDES"] = os.environ["WINEDLLOVERRIDES"] + ";" + s
|
||||||
|
else:
|
||||||
env["WINEDLLOVERRIDES"] = s
|
env["WINEDLLOVERRIDES"] = s
|
||||||
|
|
||||||
ARCH_UNKNOWN=0
|
ARCH_UNKNOWN=0
|
||||||
|
@ -9,8 +9,8 @@ user_settings = {
|
|||||||
#Enable DXVK's HUD
|
#Enable DXVK's HUD
|
||||||
# "DXVK_HUD": "devinfo,fps",
|
# "DXVK_HUD": "devinfo,fps",
|
||||||
|
|
||||||
#Use wined3d for d3d11 instead of dxvk
|
#Use gl-based wined3d for d3d11 and d3d10 instead of vulkan-based dxvk
|
||||||
# "PROTON_USE_WINED3D11": "1",
|
# "PROTON_USE_WINED3D": "1",
|
||||||
|
|
||||||
#Disable d3d11 entirely
|
#Disable d3d11 entirely
|
||||||
# "PROTON_NO_D3D11": "1",
|
# "PROTON_NO_D3D11": "1",
|
||||||
|
@ -650,6 +650,10 @@ static EVRCompositorError ivrcompositor_submit_dxvk(
|
|||||||
load_vk_unwrappers();
|
load_vk_unwrappers();
|
||||||
|
|
||||||
vkdata.m_nImage = (uint64_t)image_handle;
|
vkdata.m_nImage = (uint64_t)image_handle;
|
||||||
|
vkdata.m_pDevice = get_native_VkDevice(vkdata.m_pDevice);
|
||||||
|
vkdata.m_pPhysicalDevice = get_native_VkPhysicalDevice(vkdata.m_pPhysicalDevice);
|
||||||
|
vkdata.m_pInstance = get_native_VkInstance(vkdata.m_pInstance);
|
||||||
|
vkdata.m_pQueue = get_native_VkQueue(vkdata.m_pQueue);
|
||||||
vkdata.m_nWidth = image_info.extent.width;
|
vkdata.m_nWidth = image_info.extent.width;
|
||||||
vkdata.m_nHeight = image_info.extent.height;
|
vkdata.m_nHeight = image_info.extent.height;
|
||||||
vkdata.m_nFormat = image_info.format;
|
vkdata.m_nFormat = image_info.format;
|
||||||
|
2
wine
2
wine
@ -1 +1 @@
|
|||||||
Subproject commit 266d11ab06d55dc4ca34e5842cc3ab945b6e9b0b
|
Subproject commit d992dcb8200c704e50f7b19a38ba617c2ed78a61
|
Loading…
x
Reference in New Issue
Block a user