build and ship d9vk
This commit is contained in:
parent
22354ec32f
commit
f52ecfc6a7
6 changed files with 75 additions and 3 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -19,3 +19,6 @@
|
||||||
[submodule "FAudio"]
|
[submodule "FAudio"]
|
||||||
path = FAudio
|
path = FAudio
|
||||||
url = https://github.com/FNA-XNA/FAudio/
|
url = https://github.com/FNA-XNA/FAudio/
|
||||||
|
[submodule "d9vk"]
|
||||||
|
path = d9vk
|
||||||
|
url = https://github.com/ValveSoftware/dxvk/
|
||||||
|
|
|
@ -259,6 +259,7 @@ the Wine prefix. Removing the option will revert to the previous behavior.
|
||||||
| | <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>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>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>d9vk</tt> | <tt>PROTON_USE_D9VK</tt> | Use Vulkan-based d9vk instead of OpenGL-based wined3d for d3d9. |
|
||||||
| <tt>nod3d11</tt> | <tt>PROTON_NO_D3D11</tt> | Disable <tt>d3d11.dll</tt>, for d3d11 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 d3d11 games which can fall back to and run better with d3d9. |
|
||||||
| <tt>nod3d10</tt> | <tt>PROTON_NO_D3D10</tt> | Disable <tt>d3d10.dll</tt> and <tt>dxgi.dll</tt>, for d3d10 games which can fall back to and run better with d3d9. |
|
| <tt>nod3d10</tt> | <tt>PROTON_NO_D3D10</tt> | Disable <tt>d3d10.dll</tt> and <tt>dxgi.dll</tt>, for d3d10 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. |
|
||||||
|
|
|
@ -228,6 +228,10 @@ DXVK := $(SRCDIR)/dxvk
|
||||||
DXVK_OBJ32 := ./obj-dxvk32
|
DXVK_OBJ32 := ./obj-dxvk32
|
||||||
DXVK_OBJ64 := ./obj-dxvk64
|
DXVK_OBJ64 := ./obj-dxvk64
|
||||||
|
|
||||||
|
D9VK := $(SRCDIR)/d9vk
|
||||||
|
D9VK_OBJ32 := ./obj-d9vk32
|
||||||
|
D9VK_OBJ64 := ./obj-d9vk64
|
||||||
|
|
||||||
CMAKE := $(SRCDIR)/cmake
|
CMAKE := $(SRCDIR)/cmake
|
||||||
CMAKE_OBJ32 := ./obj-cmake32
|
CMAKE_OBJ32 := ./obj-cmake32
|
||||||
CMAKE_OBJ64 := ./obj-cmake64
|
CMAKE_OBJ64 := ./obj-cmake64
|
||||||
|
@ -246,6 +250,7 @@ OBJ_DIRS := $(TOOLS_DIR32) $(TOOLS_DIR64) \
|
||||||
$(WINE_OBJ32) $(WINE_OBJ64) \
|
$(WINE_OBJ32) $(WINE_OBJ64) \
|
||||||
$(VRCLIENT_OBJ32) $(VRCLIENT_OBJ64) \
|
$(VRCLIENT_OBJ32) $(VRCLIENT_OBJ64) \
|
||||||
$(DXVK_OBJ32) $(DXVK_OBJ64) \
|
$(DXVK_OBJ32) $(DXVK_OBJ64) \
|
||||||
|
$(D9VK_OBJ32) $(D9VK_OBJ64) \
|
||||||
$(CMAKE_OBJ32) $(CMAKE_OBJ64)
|
$(CMAKE_OBJ32) $(CMAKE_OBJ64)
|
||||||
|
|
||||||
$(OBJ_DIRS):
|
$(OBJ_DIRS):
|
||||||
|
@ -366,7 +371,7 @@ $(DIST_FONTS): fonts
|
||||||
ALL_TARGETS += dist
|
ALL_TARGETS += dist
|
||||||
GOAL_TARGETS += dist
|
GOAL_TARGETS += dist
|
||||||
|
|
||||||
dist: $(DIST_TARGETS) wine vrclient lsteamclient steam dxvk | $(DST_DIR)
|
dist: $(DIST_TARGETS) wine vrclient lsteamclient steam dxvk d9vk | $(DST_DIR)
|
||||||
echo `date '+%s'` `GIT_DIR=$(abspath $(SRCDIR)/.git) git describe --tags` > $(DIST_VERSION)
|
echo `date '+%s'` `GIT_DIR=$(abspath $(SRCDIR)/.git) git describe --tags` > $(DIST_VERSION)
|
||||||
cp $(DIST_VERSION) $(DST_BASE)/
|
cp $(DIST_VERSION) $(DST_BASE)/
|
||||||
rm -rf $(abspath $(DIST_PREFIX)) && \
|
rm -rf $(abspath $(DIST_PREFIX)) && \
|
||||||
|
@ -1038,6 +1043,60 @@ dxvk32: $(DXVK_CONFIGURE_FILES32)
|
||||||
cp "$(DXVK_OBJ32)"/bin/d3d10core.dll "$(DST_DIR)"/lib/wine/dxvk/
|
cp "$(DXVK_OBJ32)"/bin/d3d10core.dll "$(DST_DIR)"/lib/wine/dxvk/
|
||||||
if test -e $(SRCDIR)/.git; then ( cd $(SRCDIR) && git submodule status -- dxvk ) > "$(DST_DIR)"/lib/wine/dxvk/version; fi
|
if test -e $(SRCDIR)/.git; then ( cd $(SRCDIR) && git submodule status -- dxvk ) > "$(DST_DIR)"/lib/wine/dxvk/version; fi
|
||||||
|
|
||||||
|
D9VK_CONFIGURE_FILES32 := $(D9VK_OBJ32)/build.ninja
|
||||||
|
D9VK_CONFIGURE_FILES64 := $(D9VK_OBJ64)/build.ninja
|
||||||
|
|
||||||
|
# 64bit-configure. Remove coredata file if already configured (due to e.g. makefile changing)
|
||||||
|
# sed is used to sub in our special cross compiler
|
||||||
|
$(D9VK_CONFIGURE_FILES64): $(MAKEFILE_DEP) $(D9VK)/build-win64.txt | $(D9VK_OBJ64)
|
||||||
|
if [ -e "$(abspath $(D9VK_OBJ64))"/build.ninja ]; then \
|
||||||
|
rm -f "$(abspath $(D9VK_OBJ64))"/meson-private/coredata.dat; \
|
||||||
|
fi
|
||||||
|
cd "$(abspath $(D9VK))" && \
|
||||||
|
sed -e "s|@PROTON_DXVK_CROSSCC_PREFIX@|$(subst ",\\\",$(DXVK_CROSSCC_PREFIX))|" < build-win64.txt > "$(abspath $(D9VK_OBJ64))/proton-build-win64.txt" && \
|
||||||
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" \
|
||||||
|
meson --prefix="$(abspath $(D9VK_OBJ64))" --cross-file "$(abspath $(D9VK_OBJ64))/proton-build-win64.txt" --strip --buildtype=release -Denable_dxgi=false -Denable_d3d10=false -Denable_d3d11=false "$(abspath $(D9VK_OBJ64))"
|
||||||
|
|
||||||
|
# 32-bit configure. Remove coredata file if already configured (due to e.g. makefile changing)
|
||||||
|
# sed is used to sub in our special cross compiler
|
||||||
|
$(D9VK_CONFIGURE_FILES32): $(MAKEFILE_DEP) $(D9VK)/build-win32.txt | $(D9VK_OBJ32)
|
||||||
|
if [ -e "$(abspath $(D9VK_OBJ32))"/build.ninja ]; then \
|
||||||
|
rm -f "$(abspath $(D9VK_OBJ32))"/meson-private/coredata.dat; \
|
||||||
|
fi
|
||||||
|
cd "$(abspath $(D9VK))" && \
|
||||||
|
sed -e "s|@PROTON_DXVK_CROSSCC_PREFIX@|$(subst ",\\\",$(DXVK_CROSSCC_PREFIX))|" < build-win32.txt > "$(abspath $(D9VK_OBJ32))/proton-build-win32.txt" && \
|
||||||
|
PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" \
|
||||||
|
meson --prefix="$(abspath $(D9VK_OBJ32))" --cross-file "$(abspath $(D9VK_OBJ32))/proton-build-win32.txt" --strip --buildtype=release -Denable_dxgi=false -Denable_d3d10=false -Denable_d3d11=false "$(abspath $(D9VK_OBJ32))"
|
||||||
|
|
||||||
|
## d9vk goals
|
||||||
|
D9VK_TARGETS = d9vk d9vk_configure d9vk32 d9vk64 d9vk_configure32 d9vk_configure64
|
||||||
|
|
||||||
|
ALL_TARGETS += $(D9VK_TARGETS)
|
||||||
|
GOAL_TARGETS_LIBS += d9vk
|
||||||
|
|
||||||
|
.PHONY: $(D9VK_TARGETS)
|
||||||
|
|
||||||
|
d9vk_configure: $(D9VK_CONFIGURE_FILES32) $(D9VK_CONFIGURE_FILES64)
|
||||||
|
|
||||||
|
d9vk_configure64: $(D9VK_CONFIGURE_FILES64)
|
||||||
|
|
||||||
|
d9vk_configure32: $(D9VK_CONFIGURE_FILES32)
|
||||||
|
|
||||||
|
d9vk: d9vk32 d9vk64
|
||||||
|
|
||||||
|
d9vk64: $(D9VK_CONFIGURE_FILES64)
|
||||||
|
env PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" ninja -C "$(D9VK_OBJ64)" install
|
||||||
|
mkdir -p "$(DST_DIR)/lib64/wine/dxvk"
|
||||||
|
cp "$(D9VK_OBJ64)"/bin/d3d9.dll "$(DST_DIR)"/lib64/wine/dxvk
|
||||||
|
if test -e $(SRCDIR)/.git; then ( cd $(SRCDIR) && git submodule status -- d9vk ) > "$(DST_DIR)"/lib64/wine/dxvk/d9vk_version; fi
|
||||||
|
|
||||||
|
|
||||||
|
d9vk32: $(D9VK_CONFIGURE_FILES32)
|
||||||
|
env PATH="$(abspath $(SRCDIR))/glslang/bin/:$(PATH)" ninja -C "$(D9VK_OBJ32)" install
|
||||||
|
mkdir -p "$(DST_DIR)"/lib/wine/dxvk
|
||||||
|
cp "$(D9VK_OBJ32)"/bin/d3d9.dll "$(DST_DIR)"/lib/wine/dxvk/
|
||||||
|
if test -e $(SRCDIR)/.git; then ( cd $(SRCDIR) && git submodule status -- d9vk ) > "$(DST_DIR)"/lib/wine/dxvk/d9vk_version; fi
|
||||||
|
|
||||||
endif # NO_DXVK
|
endif # NO_DXVK
|
||||||
|
|
||||||
# TODO Tests
|
# TODO Tests
|
||||||
|
|
1
d9vk
Submodule
1
d9vk
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 10e386a0ffe13b85a1bb62ad96847b6409134469
|
7
proton
7
proton
|
@ -263,6 +263,7 @@ if "wined3d11" in config_opts:
|
||||||
|
|
||||||
if not check_environment("PROTON_USE_WINED3D", "wined3d"):
|
if not check_environment("PROTON_USE_WINED3D", "wined3d"):
|
||||||
check_environment("PROTON_USE_WINED3D11", "wined3d")
|
check_environment("PROTON_USE_WINED3D11", "wined3d")
|
||||||
|
check_environment("PROTON_USE_D9VK", "d9vk")
|
||||||
check_environment("PROTON_NO_D3D11", "nod3d11")
|
check_environment("PROTON_NO_D3D11", "nod3d11")
|
||||||
check_environment("PROTON_NO_D3D10", "nod3d10")
|
check_environment("PROTON_NO_D3D10", "nod3d10")
|
||||||
check_environment("PROTON_NO_ESYNC", "noesync")
|
check_environment("PROTON_NO_ESYNC", "noesync")
|
||||||
|
@ -440,7 +441,7 @@ 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")
|
dxvkfiles = ("d3d11", "d3d10", "d3d10core", "d3d10_1", "d3d9", "dxgi")
|
||||||
def make_dxvk_links(dll_dir, link_dir):
|
def make_dxvk_links(dll_dir, link_dir):
|
||||||
for f in dxvkfiles:
|
for f in dxvkfiles:
|
||||||
dst = link_dir + "/" + f + ".dll"
|
dst = link_dir + "/" + f + ".dll"
|
||||||
|
@ -462,6 +463,10 @@ with prefix_lock:
|
||||||
make_dxvk_links(basedir + "/dist/lib/wine/dxvk/",
|
make_dxvk_links(basedir + "/dist/lib/wine/dxvk/",
|
||||||
prefix + "drive_c/windows/syswow64")
|
prefix + "drive_c/windows/syswow64")
|
||||||
for f in dxvkfiles:
|
for f in dxvkfiles:
|
||||||
|
if f == "d3d9":
|
||||||
|
if "d9vk" in config_opts:
|
||||||
|
dlloverrides[f] = "n"
|
||||||
|
else:
|
||||||
dlloverrides[f] = "n"
|
dlloverrides[f] = "n"
|
||||||
|
|
||||||
if "nod3d11" in config_opts:
|
if "nod3d11" in config_opts:
|
||||||
|
|
|
@ -21,6 +21,9 @@ user_settings = {
|
||||||
#Use OpenGL-based wined3d for d3d11 and d3d10 instead of Vulkan-based DXVK
|
#Use OpenGL-based wined3d for d3d11 and d3d10 instead of Vulkan-based DXVK
|
||||||
# "PROTON_USE_WINED3D": "1",
|
# "PROTON_USE_WINED3D": "1",
|
||||||
|
|
||||||
|
#Use Vulkan-based D9VK instead of OpenGL-based wined3d for d3d9.
|
||||||
|
# "PROTON_USE_D9VK": "1",
|
||||||
|
|
||||||
#Disable d3d11 entirely
|
#Disable d3d11 entirely
|
||||||
# "PROTON_NO_D3D11": "1",
|
# "PROTON_NO_D3D11": "1",
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue