kakra / wine-proton

Proton'ized Wine, served hot, extra spicy: Please read README.md as a starting point
https://github.com/kakra/wine-proton/blob/rebase/proton_3.16/README.md
Other
35 stars 1 forks source link

Unable to run Path of Exile with DX11 #8

Closed copygirl closed 5 years ago

copygirl commented 5 years ago

I've been trying to fiddle around with getting Path of Exile to run on my main Arch Linux install. Now that my graphics card broke and the new one does not even have drivers for my throw-away-gaming-only Windows 8.1 install, I would really love to get it working.

I wasn't quite sure if me building the repo myself could possibly fix the issue, but after following the instructions seemingly successfully and installing the dxvk-dist-wine-proton_3.16-4.0-rc7-unofficial-1.tar.xz over Proton 3.16 Beta, it doesn't appear to work. Now, I'm not entirely sure I did everything correctly, but ... perhaps you can tell me?

image

Here's what's being logged to my terminal when running steam straight from there. Let me know if you need any more of this or some additional information.

Unhandled exception: page fault on read access to 0x0002fc50 in 64-bit code (0x0000000140614095).
[...]
System information:
    Wine build: wine-4.0-rc7
    Platform: x86_64
    Version: Windows 7
    Host system: Linux
    Host version: 4.20.3-arch1-1-ARCH

Game launch options in Steam: %command% --waitforpreload --nologo

Thanks for your work! :green_heart:

kakra commented 5 years ago

Could you try the pre-built version (you can download the .tar.xz from the releases page).

kakra commented 5 years ago

Also: This message box appears after the client crashed before. So on first try with my version, it's normal to appear because the error still comes from using the other version. If it crashes again after clicking "no", we should look deeper.

copygirl commented 5 years ago

I've tried the release version before, including an older one, even; after resetting proton. Though I'm not 100% sure if it's the same exception - let me test. (Can I just override the already patched proton folder?)

(edit: Also added my launch options.)

kakra commented 5 years ago

You can just remove the dist sub-directory. Steam should unpack a clean original copy of Proton then automatically (I never tested that but the pyhton script says it does so). Only then (after running a Proton game once), re-apply my patch otherwise things may become messy or incomplete.

kakra commented 5 years ago

(edit: Also added my launch options.)

I'm running without any launch options.

Could you show the output of grep "model name" /proc/cpuinfo?

Maybe also enable/add "WINEDEBUG": "fixme+all", to user_settings.py in the Proton directory, it results in a log file in $HOME. Could you gist the log?

copygirl commented 5 years ago

You can just remove the dist sub-directory. Steam should unpack a clean original copy of Proton then automatically (I never tested that but the pyhton script says it does so).

Done that and reextracted your latest release:

Unhandled exception: page fault on read access to 0x0002fc50 in 64-bit code (0x0000000140614095).

Could you show the output of grep "model name" /proc/cpuinfo?

 copygirl@yuuko  ~  grep "model name" /proc/cpuinfo
model name  : AMD Ryzen 7 1700X Eight-Core Processor
model name  : AMD Ryzen 7 1700X Eight-Core Processor
[... repeated a total of 16 times]
kakra commented 5 years ago

I never tested on Ryzen. What CPU flags does it have? (also in /proc/cpuinfo)

kakra commented 5 years ago

BTW: With the latest PoE I had some texture loading issues, maybe we need another patch in wine now. OTOH, I just may have overloaded memory. I didn't inspect this deeper yet... Not using --waitforpreload could help in that case.

copygirl commented 5 years ago

Maybe also enable/add "WINEDEBUG": "fixme+all", to user_settings.py in the Proton directory, it results in a log file in $HOME. Could you gist the log?

https://gist.github.com/copygirl/37cd9c1c9d68e4bfed6e7ad6c3417f7b

I never tested on Ryzen. What CPU flags does it have? (also in /proc/cpuinfo)

This is the output for the first core:

flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca
kakra commented 5 years ago

Okay, we do not need to look any further: Your system doesn't support DXVK properly:

info:  Game: PathOfExile_x64Steam.exe
info:  DXVK: v0.95-25-g4f58c2b
warn:  OpenVR: Failed to locate module
info:  Required Vulkan extension VK_KHR_get_physical_device_properties2 not supported
info:  Required Vulkan extension VK_KHR_surface not supported
info:  Required Vulkan extension VK_KHR_win32_surface not supported
DxvkInstance: Failed to create instance
err:   DxvkInstance: Failed to create instance

The game crashes because it doesn't handle this situation gracefully. It just assumes the D3D11 initialization never fails.

Which graphics card are you using?

copygirl commented 5 years ago

Which graphics card are you using?

Radeon RX 580

Should I be trying to non DXVK build?

kakra commented 5 years ago

Without DXVK there's no D3D11/64-bit support in PoE, at least not with my build because I'm not using the deferred D3D patches from staging.

But Radeon drivers may require bleeding edge drivers and bleeding edge mesa to be fully supported by DXVK. You may need to update both to beta or nightly builds first.

EDIT: Maybe look here: https://aur.archlinux.org/packages/mesa-git/ tho I cannot really tell you the pros and cons because I'm not running Arch here. Also look here: https://wiki.archlinux.org/index.php/Vulkan

copygirl commented 5 years ago

I just installed vulkan-radeon and the game does start up now with DX11! :tada: (I was of the impression that mesa just comes with Vulkan support for some reason.)

Will complain if I have any further issues in a quick test-run, otherwise close.

kakra commented 5 years ago

Yay! Have fun. Let me know how my build compares to the official Proton if you do any compares...

kakra commented 5 years ago

I'll keep this open until next release. I'll add some troubleshooting instructions to the README.md so the next user can detect your problem and solution quicker.

kakra commented 5 years ago

You should try your own build now as it has created an optimized wine version for your CPU. You can just unpack it over Proton, no need to reset anything. Also, your log shows you're not running a SCHED_ISO enabled kernel. Doing so can further improve game performance. My next version of README.md also contains some notes about optimizing Linux memory management towards gaming but this still needs some testing. But I found it can help PoE stalling and freezing.

copygirl commented 5 years ago

I was able to run a tier 1 map from start to finish with pretty bad lag spikes / short freezes as it was .. appearing to load in assets or shaders, though without any other issues like the crashes I had before on official Proton with DX9. I haven't looked into the realms of building my own kernel before - I'll have to see about that at a later point.

Thanks for running me through this and helping me solve the main problem!

kakra commented 5 years ago

It's known to be laggy the first view hours of gameplay. It should settle down as soon as the pipeline state cache of DXVK has built up for most of the shaders used by the game. On successive runs, DXVK will precompile the cached shaders, and stutter should be mostly removed. However, stutters may return if PoE/Proton/DXVK was updated, as the new shaders have to be compiled back in. I recommend running through a few different maps for at least 15 minutes before starting a serious game session.

To confirm: Does it still lag when you play the same map again? It works fine here. I'm using PoE together with Feral GameMode (latest git version which includes my wine support patches).

My small gamemode helper:

$ cat /usr/local/bin/gamemode
#!/bin/sh
export LD_PRELOAD=$LD_PRELOAD:/usr/\$LIB/libgamemodeauto.so.0
# for libFAudio until SDL support patches are upstreamed, adjust to your needs
export SDL_AUDIO_FREQUENCY=48000
export SDL_AUDIO_CHANNELS=6
exec "$@"

Then install gamemode-git and add gamemode %command% to the game launch options.

PS: Arch has a SCHED_ISO-enabled kernel: https://wiki.archlinux.org/index.php/linux-ck

copygirl commented 5 years ago

The alternative kernel and gamemode seems to help a little bit, but yes, gameplay-affecting slowdowns still occur at times in new areas. It is becoming quite playable over time though and I'm quite happy with the result!

kakra commented 5 years ago

Wine 4.0 is out and I'm in the process of rebasing my branch. I'm closing this because I'm soon pushing the new commits including revised README.md (work is committed, just not pushed yet).

I'm quite happy with you seeing improvements with CK and gamemode, too. So my scheduler revision patches in my branch seem to have an effect also on your CPU architecture. Thanks for confirming.

kakra commented 5 years ago

@copygirl It's finally there... And the latest DXVK master seems to make multiple games I tested feel smoother, including PoE. But average FPS is reduced a little. Overall I count this as an improvement. Can you confirm?

copygirl commented 5 years ago

I rebuilt wine-proton after resetting to the latest git commit and noticed actually that I didn't appear to have been using the alternative kernel or gamemode at all. After making sure I did, I didn't appear to get much of a difference between using it or not with Path of Exile.

I didn't follow all of the recommendations in the readme, such as Hints regarding Memory Allocation Issues and Reducing Stutters due to "allocstall" just yet and not sure if How to Benefit from the Scheduler Patches applies to me just yet.