You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.2 KiB

WIP

Test DXVK

DXVK is a set of replacement dll files that translate from DirectX 11 to Vulkan.

https://github.com/doitsujin/dxvk

Get the mingw-w64 6.0 from Ubuntu Disco (19.04) repo:

# cat /etc/apt/apt.conf.d/01lock-release
APT::Default-Release "bionic";

# cat /etc/apt/preferences.d/01-disco-whitelist
# By default let's block everything from disco.
Package: *
Pin: release a=disco
Pin-Priority: -1

# Whitelist those packages which you want to take from disco.
Package: mingw-w64 mingw-w64-common mingw-w64-i686-dev mingw-w64-x86-64-dev
Pin: release a=disco
Pin-Priority: 990

# cat /etc/apt/sources.list.d/disco.list 
deb http://archive.ubuntu.com/ubuntu/ disco universe
deb http://archive.ubuntu.com/ubuntu/ disco-updates universe
deb http://security.ubuntu.com/ubuntu/ disco-security universe

# apt-get update && apt-get upgrade
$ sudo apt install meson glslang-tools mingw-w64

Remember to select the "Posix" version when running this:

$ sudo update-alternatives --config x86_64-w64-mingw32-gcc
$ sudo update-alternatives --config x86_64-w64-mingw32-g++
$ sudo update-alternatives --config i686-w64-mingw32-gcc
$ sudo update-alternatives --config i686-w64-mingw32-g++

Compile the DXVK with the tests

$ git clone https://github.com/doitsujin/dxvk
$ cd dxvk/
$ cat meson_options.txt
option('enable_tests', type : 'boolean', value : true)
$ TESTDIR="$(mktemp -d)"
$ meson --cross-file build-win64.txt --buildtype release --prefix $TESTDIR/dxvk-master build.w64
$ cd build.w64/
$ ninja
$ ninja install
$ ls -lah ${TESTDIR}/dxvk-master/bin/*exe

For 32-bit builds, replace 64 with 32.

$ docker cp ${TESTDIR}/dxvk-master/bin steam_steam_1:/dxvk-bin
$ docker cp ${TESTDIR}/dxvk-master/bin wine:/dxvk-bin
$ wine /dxvk-bin/d3d11-triangle.exe

$ WINEPREFIX=~/.wine-test-dxvk winecfg
OK

$ WINEPREFIX=~/.wine-test-dxvk ./setup_dxvk.sh install
DXVK_HUD="version,devinfo,fps" wine Origin.exe

Installing Origin and Battlefield 1

Get Origin v9.13.0.62213

curl -o OriginThinSetup.exe -fsSL https://www.dm.origin.com/download/legacy
wine OriginThinSetup.exe
Install to: "C:\Origin"

User -> Application Settings -> "INSTALLS & SAVES"
Games location: "C:\OriginGames"
Legacy game installers: "C:\ProgramData\Origin\DownloadCache"

User -> Application Settings -> MORE -> ORIGIN IN-GAME ->
Untick [ ] Enable Origin In-Game.
# su -l user
$ cd ~/.wine/drive_c/Origin
$ wine Origin.exe

Installing Battle.net and Call of Duty Black Ops 4

# su -l user
$ curl -o Battle.net-Setup.exe -fsSL "https://eu.battle.net/download/getInstaller?os=win&installer=Battle.net-Setup.exe&id=290573456.1505264452"
$ wine Battle.net-Setup.exe
Install Location: "C:/Battle.net"
Install CoD BO4 to "C:\Call of Duty Black Ops 4"
# su -l user
$ cd ~/.wine/drive_c/Battle.net/
$ wine Battle.net.exe

https://www.reddit.com/r/wine_gaming/comments/9r3t0v/call_of_duty_black_ops_4_wont_start/

Extra

Figuring DXVK version in use

$ find ~/git/wine/ -type f -name "d3d11.dll" -exec sh -c "strings '{}' | grep -A1 DXVK: |grep ^v0 && echo '{}'" \;
v0.94
/home/arno/git/wine/data/.wine/drive_c/windows/syswow64/d3d11.dll
v0.94
/home/arno/git/wine/data/.wine/drive_c/windows/system32/d3d11.dll
v0.94
/home/arno/git/wine/data/dxvk-0.94/x64/d3d11.dll
v0.94
/home/arno/git/wine/data/dxvk-0.94/x32/d3d11.dll

$ find ~/git/steam/ -type f -name "d3d11.dll" -exec sh -c "strings '{}' | grep -A1 DXVK: |grep ^v0 && echo '{}'" \;
v0.90-10-g60a03a2
/home/arno/git/steam/data/.local/share/Steam/steamapps/common/Proton 3.16/dist/lib64/wine/dxvk/d3d11.dll
v0.90-10-g60a03a2
/home/arno/git/steam/data/.local/share/Steam/steamapps/common/Proton 3.16/dist/lib/wine/dxvk/d3d11.dll
v0.80-19-gee8b469
/home/arno/git/steam/data/.local/share/Steam/steamapps/common/Proton 3.7/dist/lib64/wine/dxvk/d3d11.dll
v0.80-19-gee8b469
/home/arno/git/steam/data/.local/share/Steam/steamapps/common/Proton 3.7/dist/lib/wine/dxvk/d3d11.dll

Troubleshooting

unimplemented function vulkan-1.dll

wine: Call from 0x7bc77769 to unimplemented function vulkan-1.dll.vkGetInstanceProcAddr, aborting
wine: Unimplemented function vulkan-1.dll.vkGetInstanceProcAddr called at address 0x7bc77769 (thread 0009), starting debugger...

Install libvulkan1:i386