ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
22.91k stars 1.01k forks source link

Horizon Zero Dawn (1151640) #4125

Open NamoDev opened 3 years ago

NamoDev commented 3 years ago

Compatibility Report

System Information

I confirm:

Note: current NVIDIA driver is the latest version available in RPMFusion for Fedora 32

Symptoms

Game doesn't start - a dialog pops up saying "Unfortunately the game crashed" without providing any error details.

Screenshot from 2020-08-07 11-11-08

Reproduction

Just start the game through Steam. steam-1151640.log

olav-valle commented 3 years ago

Same issue here. Identical error box, and nothing else.

System Information

A comment further down noticed that the logs are different if you click "yes" or "no" to sending a report. Here are logs for both cases:

Log when clicking "no" to sending crash report: steam-1151640-no_crash_report.log

Log when clicking "yes" to sending crash report: steam-1151640-yes_crash_report.log

Edit: Out of curiosity I tried with the newest GloriousEggroll/proton-ge-custom release, with seemingly same result. Log here, in case it helps anyone: proton_5.9-GE-5-ST_steam-1151640.log

NTMan commented 3 years ago

Same issue here. Identical error box, and nothing else. steam-1151640.log Steam Sys-info

korodarn commented 3 years ago

Looking at the logs from everyone, looks like this is common point where error occurs.

warn:debugstr:OutputDebugStringA "An unknown unhandled exception (C06D007Eh) has occurred in thread 'Main' (0) at instruction location 000000007B00FC3Eh\n\nCall stack:\nBase address: 0x000140000000\n 0. 0x00007BCDAC6C RtlVirtualUnwind\n 1. 0x00007BCDAF82 RtlVirtualUnwind\n 2. 0x00007BCDB2FE NtRaiseException\n 3"

I"m having same issue, the same line was also in my proton log, along with the error cpu_context_win.cc:144] non-x64 context

abhishek-rawal commented 3 years ago

Same issue as mentioned by other users. However, I am still updating my results, incase it helps further to find the root cause.

System Info steam-1151640_GE_5.9-5_ST.log steam-1151640_Proton509.log steam-1151640_Proton509_next.log

fsyy commented 3 years ago

same here System Info

Cxpher commented 3 years ago

Same issue here.

liberodark commented 3 years ago

same here

CuteSC2 commented 3 years ago

I think, "error cpu_context_win.cc:144] non-x64 context" is the crash-reporter crashing and not hzd. When you click on no when being asked to send the error report, you get a much different proton log. Then warn:debugstr:OutputDebugStringA "Initializing DLMalloc Heap\n" maybe looks like the evil witch, that caused all of this. steam-1151640.log

NextGenRyo commented 3 years ago

It's also dx12 only. That might not help a lot either.

77boaz commented 3 years ago

I'm getting the same pop-up.. I tried multiple versions of proton including proton-ge and proton-tkg..

wannfq commented 3 years ago

I'm having the same issue

ghost commented 3 years ago

Then warn:debugstr:OutputDebugStringA "Initializing DLMalloc Heap\n" maybe looks like the evil witch, that caused all of this. steam-1151640.log

It isn't. These logs have a lot of info and possibly not enough.

Point in fact you can look at

fixme:msvcrt:MSVCRT__stdio_common_vsnwprintf_s options 24 not handled
warn:debugstr:OutputDebugStringA "Initializing DLMalloc Heap\n"

and think that could cause a failure. But, it is highly likely a red herring.

Also, stuff like "execute_cfa_instructions", "raise_exception", "dump_unwind_info" can all be present in a working game. Logs can also present other challenges with log entries appearing at different places.

There's also fixme and warnings appearing for dx12 but that may or may not mean anything important as well.

fixme:d3d12_device_caps_init_feature_options1: TotalLaneCount = 3840, may be inaccurate.
fixme:dxgi:dxgi_adapter_QueryVideoMemoryInfo Returning fake video memory info.
fixme:dxgi:dxgi_adapter_SetVideoMemoryReservation iface 0xd97f40, node_index 0, segment_group 0, reservation 0x180000000 stub!
warn:d3d12_device_CheckFeatureSupport: Shader cache features not supported.fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x55.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x56.
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x73.

Its possible this one may take months or more to solve. Just depends on the problems and how many.

karzinogen commented 3 years ago

Same issue here. Identical error box. steam-1151640.log steam-sysinfo.txt

korodarn commented 3 years ago

I added some additional debug channels for this log that will hopefully be helpful.

steam-1151640.zip sysinfo.txt

ghost commented 3 years ago

I added some additional debug channels for this log that will hopefully be helpful.

steam-1151640.zip sysinfo.txt

That does help a bit. The logs previously I don't think any other logs here show the dialog - the issuer's doesn't and I checked one other making two before this large one you provided.

You get that crash dialog box within [edit: 3k] lines [probably ~2.7 or 2.8k] of the dx12 info I posted above notably

"warn:d3d12_device_CheckFeatureSupport: Shader cache features not supported"
fixme:d3d12_device_CheckFeatureSupport: Unhandled format 0x56

Since its mostly garbage in between, its probable that its happening at the dx12 stuff or before (I haven't looked into it yet any further).

The error dialog.

0150:Ret  PE DLL (proc=0x11007bb8,module=0x11000000 L"amd_ags_x64.dll",reason=THREAD_ATTACH,res=(nil)) retval=1
0150:Starting thread proc 0x140375730 (arg=0x4fc5500)
0150:Call user32.MessageBoxW(00000000,141b588b0 L"Unfortunately the game has crashed.\nDo you want to help us fix the issue by sending a crash report?",141b59dc0 L"Error",00040014) ret=1403757c8

So it looks like much of the log is the end result of it crashing. I included the amd dll line in there just because its next to it and it may not mean anything.

zagortenej commented 3 years ago

I tried the game on Windows 10 too and it also won't run, displaying exactly the same dialog box.

However, before the "Unfortunately the game has crashed..." error, it displays different dialog box that says the game will only run with driver version 27. This is NVidia DirectX driver version and that version supports DirectX12 Ultimate, which I couldn't install on the computer I have running Windows 10 because... reasons...

So, I assume that the reason for this crash on Proton is essentially because there is no DirectX 12 Ultimate support either in Proton, or DX dlls being used in Proton prefix for this game, or because NVidia driver I have on Linux (440.100) does not provide features needed to implement/emulate DX12 Ultimate, or some other place (I'm not really familiar with all the Wine/Proton stack to be able to pinpoint this more precisely).

Just my 2 cents, thought it may help in some way.

ghost commented 3 years ago

So, I assume that the reason for this crash on Proton is essentially because there is no DirectX 12 Ultimate support either in Proton, or DX dlls being used in Proton prefix for this game, or because NVidia driver I have on Linux (440.100) does not provide features needed to implement/emulate DX12 Ultimate, or some other place (I'm not really familiar with all the Wine/Proton stack to be able to pinpoint this more precisely).

Its certainly possible. Though Death Stranding is I believe the only other game that is using this version of the Decima engine and dx12, and it has been working with the Proton next version, although that seems to be iffy and not without problems.

VKD3D is still a work-in-progress but they also note that 440.100 is one that works with dx12 and also a higher version driver may be needed. I'm not sure anyone has tested here with the Nvidia Vulkan developer beta driver as well.

But, it definitely looks possible that everyone may need to wait for VKD3D to improve and to have a driver that will work with it. Should find out in time.

NextGenRyo commented 3 years ago

it is most probably a dx12 issue, I get "fixme:d3d12_device_CheckFeatureSupport: Unhandled feature 0x13." before it crashes, in logs.

Looks like we have to wait for vkd3d to progress more.

Danacus commented 3 years ago

it is most probably a dx12 issue, I get "fixme:d3d12_device_CheckFeatureSupport: Unhandled feature 0x13." before it crashes, in logs.

Looks like we have to wait for vkd3d to progress more.

You can get rid of these error in a dirty way by adding some lines to vkd3d. It doesn't make a difference. Copying dxcompiler.dll from the tools directory to the executable's directory does make it show the loading screen, but it still crashes with the same message, so it's not really useful.

Vbitz commented 3 years ago

I noticed doing some debugging that the error message is from a generic exception handler. It doesn't indicate what's happening behind the scenes except that the game crashed.

qsniyg commented 3 years ago

As @Danacus says, the initial error is likely due to dxcompiler.dll being missing (from @korodarn's log - thank you!):

00bc:Call KERNEL32.LoadLibraryExA(141e94fc0 "dxcompiler.dll",00000000,00000000) ret=1416abd49
...
00bc:Ret  KERNEL32.LoadLibraryExA() retval=00000000 ret=1416abd49
00bc:Call KERNEL32.GetLastError() ret=1416abd57
00bc:Ret  KERNEL32.GetLastError() retval=0000007e ret=1416abd57
00bc:Call KERNEL32.RaiseException(c06d007e,00000000,00000001,0021e290) ret=1416abd9d

If someone who has copied dxcompiler.dll from the tools directory to the executable's directory (and got to the loading screen, as Danacus stated) could provide a WINEDEBUG=+relay,module,seh,timestamp log, it might help find a way around it :) (remember to compress it, otherwise it'll be pretty huge haha)

korodarn commented 3 years ago

I don't think it got to loading screen, but log does look a bit different so maybe it will be useful, maybe not. steam-1151640_2.zip

qsniyg commented 3 years ago

@korodarn No idea if this will help or not, but try installing the native d3dcompiler_47 (protontricks 1151640 d3dcompiler_47):

73612.804:00bc:Call d3dcompiler_47.D3DCreateBlob(0000022c,0021e360) ret=1401f327e
73612.804:00bc:Ret  d3dcompiler_47.D3DCreateBlob() retval=00000000 ret=1401f327e
...
73612.804:00bc:trace:seh:raise_exception code=c0000005 flags=0 addr=0x1400f0787 ip=1400f0787 tid=00bc
korodarn commented 3 years ago

steam-1151640_1.zip I copied the d3dcompiler_47 into the executable folder as well the run prior to the one I uploaded. I zipped it right before so it is here

*I know this might not do exactly the same thing as the install, since I didn't change the setting so I'm verifying if it used this file and will try re-running after.

qsniyg commented 3 years ago

I'm guessing this might be related to cause of the crash then:

warn:d3d12_swapchain_set_display_mode: Failed to find closest matching mode, hr 0x887a0001.
...
err:d3d12_swapchain_resize_target: Failed to set display mode, hr 0x887a0001.
...
73337.021:00bc:trace:seh:raise_exception code=c0000005 flags=0 addr=0x1400f0787 ip=1400f0787 tid=00bc

There are also a few warning messages above it, not sure if they're relevant:

d3d12 fixmes in log ``` fixme:d3d12_rtv_desc_create_rtv: NULL resource RTV not implemented. fixme:d3d12_pipeline_library_LoadGraphicsPipeline: iface 000000000086E0F0, name "a7c87623f47cdb58f8e2d75445db3985", desc 000000000021E3E0, iid {765a30f3-f624-4c6f-a828-ace948622445}, pipeline_state 000000000021E3A0 stub! fixme:d3d12_pipeline_library_StorePipeline: iface 000000000086E0F0, name "a7c87623f47cdb58f8e2d75445db3985", pipeline 00000000008EC1F0 stub! fixme:d3d12_pipeline_library_LoadGraphicsPipeline: iface 000000000086E0F0, name "2537307d2151a4df271e4f83d59bb13a", desc 000000000021E7A0, iid {765a30f3-f624-4c6f-a828-ace948622445}, pipeline_state 000000000021E760 stub! fixme:d3d12_pipeline_library_StorePipeline: iface 000000000086E0F0, name "2537307d2151a4df271e4f83d59bb13a", pipeline 00000000008ECC80 stub! fixme:d3d12_pipeline_library_LoadGraphicsPipeline: iface 000000000086E0F0, name "21027ab47f814a59b74aac09a0de8a03", desc 000000000021E7A0, iid {765a30f3-f624-4c6f-a828-ace948622445}, pipeline_state 000000000021E760 stub! fixme:d3d12_pipeline_library_StorePipeline: iface 000000000086E0F0, name "21027ab47f814a59b74aac09a0de8a03", pipeline 00000000008ED710 stub! fixme:d3d12_pipeline_library_LoadGraphicsPipeline: iface 000000000086E0F0, name "27b94cf050813cc52a0b50f27d19c573", desc 000000000021E740, iid {765a30f3-f624-4c6f-a828-ace948622445}, pipeline_state 000000000021E700 stub! fixme:d3d12_pipeline_library_StorePipeline: iface 000000000086E0F0, name "27b94cf050813cc52a0b50f27d19c573", pipeline 00000000008EE1A0 stub! ```
fsyy commented 3 years ago

Patch 1.01 is out, i didn't get to test it yet.

https://www.reddit.com/r/horizon/comments/i9jaa0/horizon_zero_dawn_complete_edition_for_pc_patch/

intersectRaven commented 3 years ago

Still crashes for me.

ghost commented 3 years ago

Suppose its worth nothing and giving intersectRaven a break for the low quality post as the patch includes "Some players are experiencing startup crashes. Patch 1.01 fixes a few, but not all, of these crashes."

That patch should only benefit you when you can run it.

But, it still may need Proton/Wine/VKD3D/etc fixes before this game even runs.

nyz93 commented 3 years ago

By cherry-picking the some commits from upstream vkd3d into the valve tree you can fix the "unhandled feature" errors, and you can fix the "unhandled format" errors by simply adding the missing formats (not hard, these are supported formats in vulkan you just need to add the correct mapping). After this the game complains about missing DXIL support. Unfortunately even if you enable dxil-spirv in vkd3d you still can't get further than the loading screen because it fails with an "[ERROR] UNKNOWN unimplemented" which is coming from dxil-spirv. I tried going deeper but this stuff (vulkan/spirv/llvm) is way over my head and I'm not even sure what I did so far is correct. Anyway I think this game needs DXIL and dxil-spirv is not enough yet.

nyz93 commented 3 years ago

Well, there are bad news and good news. There was a recent update to dxil-spirv and now the graphics initialization seems to be done and now the input that's broken. The game tries to load "Windows.Gaming.Input" and fails to do so. It seems like it's some kind of WinRT/UWP API but I can't find many references to this in wine, not sure what's the next step here.

Edit: found some interesting stuff in wine and made some stubs hoping it would crash later but it's the same, I think this game is now blocked by fundamental missing features from wine.

CuteSC2 commented 3 years ago

@nyz93 can you publish your changes you made so far for HZD, maybe i find some time this weekend and add all that missing WinRT/UWP stuff.

nyz93 commented 3 years ago

@lyra00 you have to install dxil-spirv and build this vkd3d using --with-dxil-spirv. As to how do you get this into proton I'm not 100% sure I'm using an EGS copy, regular wine 5.14-staging and an empty prefix with just vcrun2015 from winetricks.

CuteSC2 commented 3 years ago

@nyz93: OK, I think I got your changes implemented in Proton locally(with buildsystem integration). Im currently building and testing it and when its works I create a public FORK on my github account tomorrow. Then i get this WinRT/UWP stuff running. Hopefully that is the last thing missing there.

intersectRaven commented 3 years ago

Have you tried with the vkd3d-proton fork? It has a ton of commits ahead of official vkd3d repository at winehq ever since it was forked.

CuteSC2 commented 3 years ago

Interesting vkd3d-proton fork have already dxil-spirv integrated so maybe its better to use it instead of adding it to proton directly.

fsyy commented 3 years ago

Hi,

this should be integrated in TKG proton builds already.

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

Comes with the latest devel version of HansKristian & Doitsujin's vkd3d-proton standalone - https://github.com/HansKristian-Work/vkd3d

CuteSC2 commented 3 years ago

Ok, I'm working on a Proton HZD Fork, where I'm adding all those changes figured out by @nyz93(a biiiig thanks to him). I get his vkd3d changes running, but i have troubles building dxil-spirv with the default steam runtime.

@fsyy sadly i couldn't compile TKG Proton(so many merge conflicts O_o), but the only difference to the standard Proton is that "--with-dxil-spirv" is ON as default, so it was not worth for me to following that path any longer. I'll stick with Proton-5.0-next and cherry picking changes from Wine-5.x when I need to.

Here is a Fork i created, when you have a HZD specific solution you can add a PR. https://github.com/lyra00/Proton When we have HZD running we can contribute the changes to the Original Proton.

Things i did, planning to do:

I hope i can get into the WinRT/UWP stuff next Weekend.

korodarn commented 3 years ago

One thing to note with this game is it has a lot of bugs. Even in Windows I had a lot of trouble with it crashing every 10 minutes or so. I finally found out how to get it to stop doing that in Windows thanks to a reddit post, and I'm not sure which part of that really fixed it but I haven't had a crash since I followed this series of things, and thought it might be helpful to note it here

Disable Control Flow guard in Windows Defender only for HZD Enable Large Pages If you're on the latest windows build (v2004 or 19041.xxx), ensure you enable HAGS. There is a program called "Intelligent Standby List Cleaner", which cleans standby memory over time based on certain parameters, get it and ensure it runs in the background.

Of these, HAGS seems to be noted to fix the crashes for others so I'm thinking that might be the most important part. Of course hopefully a patch comes out again in the mean time that makes settings like this in windows unnecessary for more of us.

Tk-Glitch commented 3 years ago

Thanks to Paul's patches and continuous efforts from Hans-Kristian we're getting somewhere. https://www.winehq.org/pipermail/wine-devel/2020-August/172365.html https://www.winehq.org/pipermail/wine-devel/2020-August/172366.html

RADV/ACO: Screenshot_20200825_202131

AMDGPU-PRO: Screenshot_20200825_175256

This is unstable and slow on AMDGPU-PRO, and while it seems stable and perf is pretty good on RADV/ACO it's visually more glitchy (though both are). But hey, it's something.

In case someone's wondering, that was done with current head of proton-tkg, staging 5.15.2r7 (aaea13a1) based. Edit: There are blocking issues on Nvidia currently.

xcom169 commented 3 years ago

Congrats lads! So this is using an on-the-fly DX12 to Vulkan (SPIR-V) converter?

Tk-Glitch commented 3 years ago

@xcom169 https://github.com/HansKristian-Work/vkd3d-proton

Galcian79 commented 3 years ago

Replying to https://github.com/ValveSoftware/Proton/issues/4125#issuecomment-680129597

Now I'm curious to see how it'll look on nvidia GPU. Nvidia drivers are less glitchy than AMDs.

Tk-Glitch commented 3 years ago

@Galcian79 It's rendering similarly to AMDGPU-PRO. Floating rocks, plants, missing objects etc. but no lines all over. Not sure about the stability though.

fsyy commented 3 years ago

doesn't work here, nvidia user, same error as before.

log with a fresh prefix:

https://gist.github.com/fsyy/587f85abfea2a3ca2b993afe531c561e

system specs:

https://gist.github.com/fsyy/b6b4a73f60114d0cd1c40ecef95c83c2

Danacus commented 3 years ago

It didn't work for me at first, but compiling vkd3d-proton to a dll and setting a dll override to native did work. I don't know why the native vkd3d-proton from @Tk-Glitch 's PKGBUILD didn't work.

Tk-Glitch commented 3 years ago

@Danacus The shared library has limited functionalities compared to the standalone dll build. Using the standalone version is needed for various d3d12 games to work at all as it allows to bypass some wine limitations.

Danacus commented 3 years ago

@Tk-Glitch Oh okay, good to know. Thanks!

slapin commented 3 years ago

which limitations?

On Wed, Aug 26, 2020 at 4:40 PM Daan Vanoverloop notifications@github.com wrote:

@Tk-Glitch Oh okay, good to know. Thanks!

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

D3SOX commented 3 years ago

@Tk-Glitch I've used your vkd3d-git PKGBUILD to install vkd3d-proton. Then I compiled proton-tkg with _use_vkd3dlib="false" and tried HZD again but it still crashes.

I've also tried (as mentioned in https://github.com/ValveSoftware/Proton/issues/4125#issuecomment-680883714) compiling vkd3d-proton and copying the dll's inside system32 and syswow64 inside the wineprefix and adding an override in winecfg for d3d12.dll to native. That didn't change anything either.

Do I need to change something in the wineprefix of HZD? Is it possible that it has something to do with me using mesa-aco-git or amdvlk instead of vulkan-radeon?

Tk-Glitch commented 3 years ago

Sidenote for the adventurous: The game requires native d3dcompiler_47.dll (you can run cp ./Tools/ShaderCompiler/PC/10.0.18362.0/x64/d3dcompiler_47.dll . from the game's dir to "enforce" making use of it, as the game doesn't by default).

@D3SOX Apparently current head of mesa-git prevents the game from running. mesa-aco-git should be deprecated by now also. AMDVLK doesn't work with the game afaik (-pro does though, possibly only on Navi as I haven't tested Vega nor Polaris). Native d3d12.dll should be used by default when building proton-tkg without you doing anything. You also do not require a vkd3d package installed to use the standalone d3d12.dll.

@slapin The need for a wine's side D3D12CreateVersionedRootSignatureDeserializer implementation for example, or being able to use a different dxgi such as DXVK's. Hans-Kristian and Doitsujin know better :stuck_out_tongue: