Closed adolfintel closed 1 month ago
I wasn't able to bisect the exact commit but it's something in valve's wine between commit 8d6dcef50fc084c560f3dc6cf5ceba1ca19b9835 (good, July 4) and 727b74b4d1b1b970143800817ca42fcb594fe2d0 (bad, July 5). They seem to have implemented a new video transcoder that's active for all games (06d7664cc3e09a0483d1da2dc5a6cee00a417592) with no fallback, but almost all of the intermediate commits don't compile. Maybe it needs to be disabled for non proton builds?
Yeah, this breaks the proton media converter for me. The libprotonmediaplayer.so compiled OK (and looks correct on the system with its linkage) but doesn't work at runtime. At first I thought it was due to Steam's pinned libraries (had a symbol missing from this libcurl.so.4 symlink to an incorrect library). Well it still could be, but it's more than just what's in pinned_libs_64.
(wine:6747): GStreamer-WARNING **: 17:50:34.262: Failed to load plugin '/usr/lib/gstreamer-1.0/libgstcurl.so': /storage3/shit/steam/ubuntu12_32/steam-runtime/pinned_libs_64/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by /usr/lib/gstreamer-1.0/libgstcurl.so)
0:00:00.059417618 6747 0x7fc95c0e8b80 ERROR WINE wg_source.c:423:check_decoding_support: pad <avdec_h264-0:sink>
0:00:00.060246240 6747 0x7fc95c0e8b80 ERROR WINE wg_source.c:423:check_decoding_support: pad <avdec_aac0:sink>
4507.925:0138:03ec:fixme:mfplat:topology_loader_Load iface 00000000250A3C20, input_topology 00000000250A9C70, ret_topology 000000005C9BFCF8, current_topology 0000000000000000 stub!
0:00:00.068932993 6747 0x7fc95c0e8b80 ERROR WINE wg_transform.c:757:wg_transform_create: Failed to create winegstreamer transform.
0:00:00.070584045 6747 0x7fc95c0e8b80 ERROR WINE wg_transform.c:757:wg_transform_create: Failed to create winegstreamer transform.
However, I got rid of that error by removing the pinned_libs_64/libcurl.so.4 symlink, but it still doesn't play the videos (black screen) and fails to create the contexts. I also tried dropping in my own libcurl with the same result. It's not just that.
The last time I tried a game using that media foundation was with proton_tkg_experimental.bleeding.edge.9.0.105874.20240703 that I built on July 03 and it still worked then. I'd think this is the same issue.
This is going to be a "won't fix" I see. Using a full gstreamer is not a supported use case. If this is what they are doing going forward, then are we to build in a crippled gstreamer?
I tried last night but only succeeded in not only a black screen but no audio for mp4's (was testing Borderlands 3 which cannot progress, as quest triggers are tied to completion of the embedded videos as is the case for most games that use that Unreal4/mfplat bollocks. I guess I'll have to find their gstreamer config.
My proton-tkg builds are actually the only place that protonmediaconverter has ever worked for me. Against my gstreamer (those are packages I roll). It's never worked for me on Arch with Valve's Protons, I used to have to drop in those mf-installcab libraries (which stopped working) before I discovered this. It never worked in Proton-GE for me either, even when I did my own builds (all in podman container against Valves environment... pointless build). My first proton-tkg build was the first time I ever saw that protonmediaconverter work.
I'm experimenting with it to find some kind of compromise but yeah the switch made it both better and worse in different ways :D Quite a few things to adapt in our build system too, and not that much time and energy on my end. Things are moving forward nonetheless and I'm hopeful !
Oh jeeze... I've been screwing around with gstreamer for most of my available day here, trying to duplicate valve's build (I found the top level proton Makefile.in had a lot of configuration clues) and use it in this one etc. I just gave up and did a normal proton-tkg build to use for the rest of my games (hey, why settle for yesterday's when I can have what I was going to have today) without enabling gstreamer in the build or anything.
This clone of valve bleeding edge seems to work. Borderlands 3 is working again. I'm not dreaming (I rebooted even, to make sure all environments are cleared... somewhat superstitiously), it works on the intro screens and embedded in game.
I am at a loss to see anything that has changed recently enough to affect this today since my last build, nothing in this project that I can see, however I'm not so familiar with Valve, so I could be missing it in their git web interfaces and submodules etc.
If someone else doing a valve bleeding edge build of proton-tkg can confirm that it works again built against your system's gstreamer, that would be good. My uncertainty is that I rebuilt mine today, and I can't remember the time line. Having this working right now is an unexpected result (from my observations). I do disable some stuff vs. Arch PKGBUILD to avoid getting unwanted/unnecessary dependencies on the system, but nothing that should have affected this. I don't think it's relevant, but I'll elabourate more if it seems to be.
@mikeserv-git can you share the config used in your build?
If you think it will help you, sure thing. I actually haven't been doing that much to gstreamer on this Arch install, just to avoid installing some things I don't need, and build it the way I like things to be. I'll give a .diff against Arch's current gstreamer PKGBUILD as well as my PKGBUILD for context.
Also, I build a lot of my own packages and I don't like Arch's dog food (hardening flags and some very silly things like LTO that should be opt in, not opt out etc.) Not sure if it matters, but this is what I do in /etc/makepkg.conf so as to completely describe my environment here.
CFLAGS="-march=alderlake -O2 -pipe -fno-plt" CXXFLAGS="$CFLAGS" LDFLAGS="-Wl,-O1,--sort-common,--as-needed" RUSTFLAGS="-C target-cpu=alderlake -C debuginfo=0"
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug !lto)
(just in case, I'll mention that AVX will subtly break DXVK and vkd3d-proton, so don't anyone use -march=anything that turns it on for those parts of a proton build)
What you're probably more interested in is my proton-tkg config, what I'll do is give all the files that I change. Since it's multiple files and I'm not sure how well I'll make out with the attachment posting interface, I'll put them in a .tar.gz and you can get them from my web server in the link below.
For gstreamer in case you want to look at that: gstreamerpkgbuild.diff PKGBUILD
For wine-tkg-git: proton-tkg/proton-tkg.sh proton-tkg/proton-tkg.cfg proton-tkg/proton-tkg-profiles/advanced-customization.cfg proton-tkg/proton_template/conf/usersettings.py
This is for a 1) Valve Bleeding Edge choice when running proton-tkg.sh
Note that I have -march= settings in some of those files.
http://www.mikeserv.com/files/wine-tkg-configs_mikeserv.tar.gz
It will unpack to wine-tkg-configs
I just retested this and I think it's been fixed. Can you confirm that it works for you as well @mikeserv-git ?
I just did a build a few nights ago and was still fine, but I just did one right now (Valve Bleeding Edge proton-tkg) just to make sure, and I'm still fine. I tested Borderlands 3 :-)
Closing the issue then
I noticed that games are having issues with video playback on newer builds of valve-exp-bleeding. I'm trying to bisect the exact commit that broke it, but it happened somewhere between June 24 and July 6, I'll update the issue when I find it.
Here's the log from gstreamer, it fails both with and without vaapi.