Skip to content
HN On Hacker News ↗

Release GE-Proton11-1 Released · GloriousEggroll/proton-ge-custom

▲ 97 points 47 comments by d3Xt3r 2w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this document is primarily human-written, with some AI-generated content detected

18 %

AI likelihood · overall

Mixed
81% human-written 19% AI-generated
SEGMENTS · HUMAN 5 of 7
SEGMENTS · AI 2 of 7
WORD COUNT 1,797
PEAK AI % 88% · §4
Analyzed
Jun 25
backend: pangram/v3.3
Segments scanned
7 windows
avg 257 words each
Distribution
81 / 19%
human / AI fraction
Verdict
Mixed
Pangram v3.3

Article text · 1,797 words · 7 segments analyzed

Human AI-generated
§1 Human · 0%

The long awaited video rework and Proton 11 rebase is finally done! GE-Proton11-1 is now available! Proton updates:

d7vk added (not enabled by default). Use PROTON_USE_D7VK=1 to enable. It is enabled via protonfix on Tex Murphy: Overseer discord bridge added. (not enabled by default). Use PROTON_DISCORD_BRIDGE=1 to enable. (proton-cachyos) optiscaler support added. (not enabled by default). Use PROTON_USE_OPTISCALER=1 to enable' (proton-cachyos) winealsa channel count override option added. (not enabled by default). Use WINEALSA_CHANNELS to tune. Possible values is the number of speakers, such as 2 (to disable spatial audio), such as 4 (2 front, 2 rear), 6 (5.1) or 8 (7.1). (Vyrolian) winealsa spacial downmix override option added. (not enabled by default). Use WINEALSA_SPACIAL=1 to enable. (Vyrolian) xrandr added to build so that auto-detection of default monitor can work without relying on host xrandr when a default monitor is not set for wine-wayland. This means if you accidentally forget to set a monitor for wine-wayland it should display on the default one found by xrandr now instead of just defaulting to the far left. updated star citizen patches added patches for Task Bar Hero (thaylorz) added patches for VRChat webcam face tracking (LilFishyChan) Entire build rebased onto latest proton 11 bleeding-edge Standalone patches for VR rebased onto proton 11 (so you can use with umu outside of steam on non-steam VR games) wine-native rsx3d library created to for older games (games like Tex Murphy no longer need 3rd party rsx3d winetricks) Enable .exe dynamic relocation and only relocate files which have relocations. For XIV specifically, this fixes issues with low address space being filled up by everyone and everything and, as a result, some plugins failing to apply their hooks and leaving the game in an unstable state. (

§2 Human · 0%

0x0ade)

--The video playback rework-- Q. What was the problem? A. Originally, proton uses two methods for video playback with two different backends. The first is typically winedmo->ffmpeg. The second is typically quartz->gstreamer. For most games, especially older games, the quartz->gstreamer path was the default. winedmo was introduced recently (as of either proton 9 or 10, I don't remember which) as a modern approach to fixing video playback. The problem is the inner workings of the quartz->gstreamer path were complicated, to convert, thus two paths were used. Seeing as both ffmpeg and gstreamer effectively do the same thing and can handle the same codecs -- it does not make sense to use both, especially when gstreamer is split into several different libraries that need to be built independently (gst-base, gst-good, gst-bad, gst-ugly, gst-orc, gst-libav, etc), and gstreamer also has surface display problems such as X11 vs Wayland vs Surfaceless. Q. How did I "fix" it? A. As many of you know, the last GE-Proton release was in March. It is now June. That is a 4 month gap, which is most definitely not the norm for GE Releases. Why is that? It's because I spent the last 4 months converting the quartz->gstreamer path to instead use quartz->winedmo->ffmpeg, and completely gutted all gstreamer libraries from the proton build. Yes, I used AI for this work. No, it likely unfortunately will not be able to be upstreamed because CodeWeavers policy does not accept AI generated code. You might be asking "how the hell did you use AI for this?" -- the same way I would without it, the only difference is AI was used to compare code logic when things were failing or incorrect. So how does that work? First, I did a base rework. I completely removed winegstreamer from wine, and had the AI agent look at the current code and convert what it could so that quartz used winedmo instead.

§3 Human · 4%

Next, about 80% of the games in the video rework list used the quartz path and relied on protonfixes with winedll overrides for quartz, lavfilters, amstream, dshow, wmp9, wmp11, and so on. This was GREAT because it meant I was able to get winedebug logs with valid, working instances. Once I gathered those logs for each game, I them removed the protonfixes, created a clean prefix, then ran and logged the broken instance. After that I fed a working log and a broken log into the AI agent for comparison to see what WINE was doing when the overrides were in place and working, versus when it was broken natively. I found that in pretty much every instance the agent was quickly able to identify the difference and either correct or implement the missing native code needed to make the videos work as if the overrides were in place, given a small amount of trial and failure retries. Additionally if the game provided the video files I would point the AI agent to those files so that it could properly analyze what kind of files they were in order to implement into wine the ability to play them. There were very very few games that needed fixing "from scratch" and needed a lot more trials and failures before getting a successful fix -- examples being Darksiders Warmastered Edition and Nukitashi 2. I also in the process managed to get rid of a few game-specific hacks that were used and implement solutions that did not break other games -- such as audio fixes that were previously in place for The Medium and Metal Gear Solid V. You will also see a lot of VN (Visual Novel) games have been fixed, as many of those games use the same few engines and fixing one or two fixed the rest of the games that used the same engine. In fact, we even found a bug with steam runtime 4 missing some required libraries for 32 bit video playback that we were able to report upstream to get fixed (you will see liblzma and xz added to the build for this reason).

§4 AI · 88%

Here is a detailed breakdown of old quartz behavior versus new: • Current Quartz Flow For a game using quartz / DirectShow now:

Game calls IGraphBuilder::RenderFile() or manually builds a graph.

quartz/filesource.c identifies the media:

Extension/registry if available. ASF header sniffing for extensionless ASF files, e.g. Persona 4 Arena Ultimax.

For ASF files, RenderFile() now tries:

AsyncReader first. Falls back to WMAsfReader if async rendering fails.

FilterGraph2_Render() autoplugs the graph.

Before generic filtermapper enumeration, Quartz now explicitly tries known-good paths:

MPEG stream -> MPEG-I Stream Splitter MPEG video -> Wine MPEG video decoder AC3 audio -> winedmo AC3 decoder WMA audio -> DMOWrapperFilter around winedmo WMA decoder

If none of those apply, it falls back to normal IFilterMapper2_EnumMatchingFilters().

Decoding is now mostly routed through winedmo, backed by FFmpeg, instead of winegstreamer.

Audio renderer now rejects compressed audio and only accepts PCM / float PCM, forcing the graph to insert a decoder first.

DirectSound buffer creation is delayed until stream start instead of happening at connect/filter creation time.

Video output still lands in the normal Quartz video renderer path: DDraw / VMR-style surfaces depending on what the graph builds.

Previously Before the rework, Quartz relied much more on the stock Wine DirectShow path:

Source filter selection was mostly extension/registry driven. ASF files generally went straight to WMAsfReader. Filter insertion relied more heavily on generic filtermapper enumeration. Some compressed audio could incorrectly reach DSoundRender, causing failed buffer creation or partial render failures. A lot of media handling still depended on winegstreamer / GStreamer behavior. Game-specific workarounds and external overrides were needed more often: lavfilters, quartz, wmp11, dgvoodoo2, etc.

§5 AI · 77%

Practical Difference The new flow is more deterministic: Game -> Quartz RenderFile -> source detection / ASF sniffing -> AsyncReader or WMAsfReader -> explicit known decoder/splitter choices -> winedmo/FFmpeg decode -> PCM audio to DSoundRender -> decoded video to Quartz video renderer Previously it was closer to: Game -> Quartz RenderFile -> registry-selected source -> generic filtermapper search -> Wine/GStreamer/native override behavior -> renderer So the current design tries to keep legacy DirectShow games inside Wine’s own Quartz graph while using winedmo/FFmpeg for the media formats that Wine’s older Quartz path handled poorly.

§6 Human · 8%

Q. Are there currently any known issues? A. Some older WMV videos can occasionally start playback distorted/pixelated, but they will correct themselves after a few seconds. This is most noticeable in the skill videos in Ghosts N' Goblins Resurrection. WRC 4 Also has some intro logo videos that have a weird frame-splitting issue. Apart from that most games should work, especially if they are in the Verified working test list below: Godfall Akiba's Trip: Undead & Undressed Nukitashi Nukitashi 2 Ys Origin Darksiders Warmastered Edition Breath of Fire IV Watch Dogs Dark Souls: Prepare to Die Edition Silent Hill 3 Full Metal Daemon Muramasa Bloodstained: Ritual of the Night Blops 3 Final Fantasy XIV RE 0 RE1 Remaster RE2 Remake RE3 Remake RE4 Remake RE4 RE7 RE8 Nioh 2 Nioh 3 Ninja Gaiden Sigma Ultimate Marvel Vs. Capcom 3 Ghosts 'n Goblins Resurrection Halo Infinite soul calibur vi age of empires II: Definitive edition age of empires III age of empires IV: Anniversary Edition The Great Ace Attorney Chronicles Memento Mori Devil May Cry HD Remaster Mortal Kombat 11 Injustice Injustice 2 Endless Space 2 oddworld: munch's oddysee Oddworld: Abe's Oddysee Fable - The Lost Chapters tokyo xanadu ex+ Ghostwire tokyo Tokyo Necro Order of Battle: World War II Not For Broadcast Blue Protocol: Star Resonance Ryse: Son of Rome Life Makeover Street Racing Syndicate Juarez: Gunslinger BlazBlue

§7 Human · 1%

Centralfiction BlazBlue Chronophantasma Extend Tree Of Savior Record of Agarest War Mariage Agarest: Generations of War 2 Agarest: Generations of War Agarest Zero Atelier Ryza 3: Alchemist of the End & the Secret Key DX Atelier Ryza 2: Lost Legends & the Secret Fairy Atelier Ryza: Ever Darkness & the Secret Hideout Atelier Rorona The Alchemist of Arland DX Atelier Marie Remake: The Alchemist of Salburg Riddle Joker (should also fix other NekoNyan VNs: Senren*Banka, Sanoba Witch FHD Edition, Sabbat of the Witch, Cafe Stella, Dracu-riot, Parquet, Angelic Chaos: RE-BOOT!) Seven: Enhanced Edition Catherine Classic Spyro Reignited Trilogy Borderlands 3 Ceville Grandia HD Grandia II HD Sky: Children of the Light Trials of Mana Secret of Mana Legend of Mana ARK: Survival Evolved Power Rangers: Battle for the Grid Persona 3 Reload Persona 4 Golden Persona 4 Arena Ultimax Persona 5 Royal Persona 5 Strikers WRC 4 Nekopara Vol.1 (KiriKiri engine games) Guilty Gear Accent Core Plus R 我打不过漂亮的她们 I Can't Win Against Those Pretty Girls 神都不良探 Underdog Detective UberSoldier The Medium Liminal Border Part III YOU and ME and HER: A Love Story Mojika - Truth Rears Its Ugly Head Moero Chronicle Megadimension Neptunia VII BLUE REFLECTION Hell Yeah! Bully: Scholarship Edition Nine Witches: Family Disruption Gabriel Knight 3: Blood of the Sacred, Blood of the Damned ONE PIECE: PIRATE WARRIORS 4 Alternativa Arcania (Gothic 4) Arcania: Fall of Setarrif Legend of Heroes: Trails in the Sky Legend of Heroes: Trails in