doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
13.06k stars 838 forks source link

dxvk failed to install on wine 5.6-staging #1569

Closed Ski-lleR closed 4 years ago

Ski-lleR commented 4 years ago

OS : Debian sid wine : 5.6-staging dxvk : 1.6

I'm using one wine profile per game, so each time i install a new game i just do (where OOT change for each game, here its for Ocarina of Time) :

 WINEPREFIX="/mnt/STOCKAGE_01/.wine/x64/OOT" WINEARCH=win64 winecfg

 WINEPREFIX="/mnt/STOCKAGE_01/.wine/x64/OOT" WINEARCH=win64 ./setup_dxvk.sh install

After i upgraded to wine 5.6-staging, i just get this at dxvk setup output :

wine: configuration in L"/mnt/STOCKAGE_01/.wine/x64/OOT" has been updated.
/dxgi.dll: File not found in wine prefixs/c:/windows/system32
/dxgi.dll: File not found in wine prefixs/c:/windows/syswow64
/d3d9.dll: File not found in wine prefixs/c:/windows/system32
/d3d9.dll: File not found in wine prefixs/c:/windows/syswow64
/d3d10core.dll: File not found in wine prefixwindows/system32
/d3d10core.dll: File not found in wine prefixwindows/syswow64
/d3d11.dll: File not found in wine prefix/c:/windows/system32
/d3d11.dll: File not found in wine prefix/c:/windows/syswow64

The strange thing is if i install dxvk 1.6 with winetrick-master (on the same wine profile that previously failed, that ensure it's not a prefix issue) it just work fine. I really don't understand what happen...

I don't know what to provide for debug purpose, so feel free to ask

doitsujin commented 4 years ago

Works fine for me. Was that a fresh prefix?

This is especially weird because our script calls wineboot -u which should restore the wine DLLs before installing DXVK, but I guess I can just remove the safeguard...

WinterSnowfall commented 4 years ago

I can confirm I'm seeing the same behaviour @Ski-lleR is describing, with a pre-existing prefix, which had DXVK 1.6 installed before upgrading to Wine Staging 5.6.

./setup_dxvk.sh uninstall
wine: configuration in L"/home/snowfall/.wine" has been updated.
/dxgi.dll: File not found. Skipping.indows/system32
/dxgi.dll: File not found. Skipping.indows/syswow64
/d3d9.dll: File not found. Skipping.indows/system32
/d3d9.dll: File not found. Skipping.indows/syswow64
/d3d10.dll: File not found. Skipping.ndows/system32
/d3d10.dll: File not found. Skipping.ndows/syswow64
/d3d10_1.dll: File not found. Skipping.ows/system32
/d3d10_1.dll: File not found. Skipping.ows/syswow64
/d3d10core.dll: File not found. Skipping.s/system32
/d3d10core.dll: File not found. Skipping.s/syswow64
/d3d11.dll: File not found. Skipping.ndows/system32
/d3d11.dll: File not found. Skipping.ndows/syswow64
./setup_dxvk.sh install
wine: configuration in L"/home/snowfall/.wine" has been updated.
/dxgi.dll: File not found in wine prefixws/system32
/dxgi.dll: File not found in wine prefixws/syswow64
/d3d9.dll: File not found in wine prefixws/system32
/d3d9.dll: File not found in wine prefixws/syswow64
/d3d10core.dll: File not found in wine prefixstem32
/d3d10core.dll: File not found in wine prefixswow64
/d3d11.dll: File not found in wine prefixs/system32
/d3d11.dll: File not found in wine prefixs/syswow64
doitsujin commented 4 years ago

Can't reproduce on an existing prefix either.

Kron4ek commented 4 years ago

This is due to Wine 5.6 has the winepath regression when compiled with MinGW installed.

https://github.com/Frogging-Family/wine-tkg-git/issues/17

WinterSnowfall commented 4 years ago

Great... I'm pulling Wine from the official Staging repo, so that's affected as well.

Jerickman commented 4 years ago

Same but different from me as well

setup_dxvk.sh: 31: setup_dxvk.sh: 0: not found wine: configuration in L"/home/jerick/.wine-witcher3" has been updated. /dxgi.dll: File not found in wine prefix:/windows/system32 /dxgi.dll: File not found in wine prefix:/windows/syswow64 setup_dxvk.sh: 177: setup_dxvk.sh: 1: not found setup_dxvk.sh: 177: setup_dxvk.sh: 1: not found /d3d9.dll: File not found in wine prefix:/windows/system32 /d3d9.dll: File not found in wine prefix:/windows/syswow64 setup_dxvk.sh: 177: setup_dxvk.sh: 1: not found setup_dxvk.sh: 177: setup_dxvk.sh: 1: not found setup_dxvk.sh: 205: [: install: unexpected operator /d3d10core.dll: File not found in wine prefixdows/system32 /d3d10core.dll: File not found in wine prefixdows/syswow64 setup_dxvk.sh: 177: setup_dxvk.sh: 1: not found setup_dxvk.sh: 177: setup_dxvk.sh: 1: not found /d3d11.dll: File not found in wine prefix/windows/system32 /d3d11.dll: File not found in wine prefix/windows/syswow64 setup_dxvk.sh: 177: setup_dxvk.sh: 1: not found setup_dxvk.sh: 177: setup_dxvk.sh: 1: not found

doitsujin commented 4 years ago

So apparently the problem is that winepath appends an \r character to the returned string, which would explain the weird console output.

@WinterSnowfall @Ski-lleR Does this version of the script fix the issue? (remove the .txt extension, Github won't let me upload it without it) setup-dxvk.sh.txt

Ski-lleR commented 4 years ago

That was on a fresh prefix, with nothing installed. Yes your fixed script fixed the issue :)

tjkl1 commented 4 years ago

adding -0 to winepath fixes it for me

(https://build.opensuse.org/package/view_file/home:tobijk:X11:vulkan/dxvk/0001-setup-Use-0-option-with-winepath.patch?expand=1)

shmerl commented 4 years ago

Using -0 with winepath sounds like a better approach than hacking on \r, since it's an official parameter:

  -0            separate output with \0 character, instead of a newline
doitsujin commented 4 years ago

I don't think this change was intended in the first place, and \0 sounds dangerous by definition. We do not want winepath to return \0, what we really want is for it to return something without special characters.

Again, I cannot reproduce the problem so I have to make do with something I know works, and replacing \r just happened to be the first thing people came up with.

gverm commented 4 years ago

@doitsujin The winepath regression should be fixed upstream now with this commit