ValveSoftware / Proton

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

Ghostwire Tokyo (1475810) #5720

Open asaokej opened 2 years ago

asaokej commented 2 years ago

Compatibility Report

System Information

I confirm:

Proton log: https://gist.github.com/asaokej/0c9723f623441fab314e6001e847dad4 ## Symptoms

Blackscreens and freezes in certain cutscenes. First cutscene in the start you can skip before freezing/black screen but then after ca 20 minutes there comes a cutscene that you cant skip. Tried installing mfplat but it still does not work

Reproduction

Every time you try to progress story

Mar0xy commented 2 years ago

I have the exact same issue you can skip the first cutscene right after clicking play and selecting difficulty but at the cutscene where akito enters mari's room it fades to black and then just stays black not doing anything.

I have tried it with Proton Experimental aswell as Proton GE both resulting in the same issue.

tizzir commented 2 years ago

I'm encountering this issue as well. I can skip the first cutscene to get around the black screen there, but skipping the cutscene of entering Mari's room doesn't help.

Interestingly, the program isn't completely frozen. If you use something like mangohud you can see that the game is still rendering frames and the CPU/GPU have substantial usage. I'm not sure what the game thinks it's doing, but whatever it is it never seems to finish it.

EDIT: I've attached the output from PROTON_LOG=1. I can see that the game continually repeats the following line when the game is stuck at the black screen, but I have no idea if it's of any use.

0278:warn:d3d12_device_SetResidencyPriority: iface 000000002d3f0030, object_count 2, objects 000000003b9ff738, priorities 000000003b9ff730 stub!

steam-1475810.log

tizzir commented 2 years ago

As per a related discussion on the Linux Gaming Dev Discord, it seems this issue is caused by Ghostwire's prerendered cutscenes being encoded as VP9:

winegstreamer error: decodebin6: ../src-gst_base/gst/playback/gstdecodebin2.c(4719): gst_decode_bin_expose (): /GstBin:bin6/GstDecodeBin:decodebin6:
no suitable plugins found:
Missing decoder: VP9 (video/x-vp9, width=(int)3840, height=(int)2160, framerate=(fraction)30/1)

As per this Reddit thread, it seems that using an older version of Proton GE fixes the issue. I have been using Proton GE 7.2 GE 3 test 2 and it's been working well for displaying cutscenes that otherwise cause black screens. I'm not sure why only this older version of GE has VP9 support when the newer ones don't, but presumably having VP9 decode support through GStreamer in Proton is the fix for this issue.

Also of note is that this game stutters quite a bit when traversing the open world. This seems more related to asset streaming than shader compilation stuttering.

Billli11 commented 2 years ago

Maybe because proton now use steamdeck soldier runtime to build? Seems like soldier do not have libvpx installed and gstreamer won't build with vp9 support if libvpx is not exist.

./gst-plugins-good/meson_options.txt

option('vpx', type : 'feature', value : 'auto', description : 'VP8 and VP9 video codec plugin')

./gst-plugins-good/meson_options.txt

vpx_features = [`
    [ 'vpx/vp8cx.h', 'vpx_codec_vp8_cx_algo', '-DHAVE_VP8_ENCODER', 'VP8 encoder' ],
    [ 'vpx/vp8dx.h', 'vpx_codec_vp8_dx_algo', '-DHAVE_VP8_DECODER', 'VP8 decoder' ],
    [ 'vpx/vp8cx.h', 'vpx_codec_vp9_cx_algo', '-DHAVE_VP9_ENCODER', 'VP9 encoder' ],
    [ 'vpx/vp8dx.h', 'vpx_codec_vp9_dx_algo', '-DHAVE_VP9_DECODER', 'VP9 decoder' ],
]

The only header file in soldier SDK image that is vp9 related is

/usr/include/va/va_enc_vp9.h
/usr/include/va/va_dec_vp9.h

EDIT(2022-03-30 19:00:00+00:00):The soldier runtime is updated in client beta to included libvpx.so

SteamLinuxRuntime_soldier/soldier_platform_0.20220329.0/files/lib/i386-linux-gnu/libvpx.so.5.0.0
SteamLinuxRuntime_soldier/soldier_platform_0.20220329.0/files/lib/steamrt/expectations/i386-linux-gnu/libvpx5.symbols
SteamLinuxRuntime_soldier/soldier_platform_0.20220329.0/files/lib/steamrt/expectations/x86_64-linux-gnu/libvpx5.symbols
SteamLinuxRuntime_soldier/soldier_platform_0.20220329.0/files/lib/x86_64-linux-gnu/libvpx.so.5.0.0
SteamLinuxRuntime_soldier/soldier_platform_0.20220329.0/files/share/doc/libvpx5

soldier SDK is not yet updated.

EDIT2:meson auto feature is disabled in Makefile.in

GST_GOOD_MESON_ARGS := \
-Dauto_features=disabled \
ThisNekoGuy commented 9 months ago

I was playing the game for a few hours and came across a mandatory loading screen for progressing the game (the first underground area of the game) where the loading screen stalled and became infinite. The log says that: (null) wait timed out in thread 025c, blocked by 0148 (Proton Log)

Screenshot: ![Screenshot_20231212_134234](https://github.com/ValveSoftware/Proton/assets/28468662/55d7a8bd-aa61-49c2-b169-7ce8ee6ae217)

Re-launching the game and loading an autosave to try again worked, so it appears that the issue might be associated with the length of time the game was running? I'm not sure.

The game also exhibits intermittent audio crackling and mutes, and they get significantly worse in cutscenes.

yuiiio commented 8 months ago

only on raytracing mode, game has a lot of memory leak. (proton experimental breeding edge + mesa-git) steam-1475810.log

yuiiio commented 8 months ago
vkd3d_view_map_create_view: Intense view map pressure! Got 1024 views in hash map 000000003ceccfc8. This may lead to out-of-memory errors in the extreme case.

only get when enabled raytracing mode.

UPDATE: It was a mesa bug. and fixed in https://gitlab.freedesktop.org/mesa/mesa/-/commit/34cc76517286b88c8191a3e10dda0a3293c09127 (thanks pixelcluster !)