When a game does not launch, stutters badly, or plays black bars instead of cutscenes, the first troubleshooting instinct for many Linux gamers is to switch Proton versions. The question is which one to try. Proton Experimental and GE-Proton are both common recommendations, but they are not the same thing and they do not always produce the same results.

Understanding what each one is -- and what goes into it -- makes the decision much less of a guessing game.

The Proton Version Landscape

Before comparing the two, it helps to understand where each sits in the broader picture. Valve ships Proton in several forms:

  • Numbered stable releases (Proton 9.0, Proton 10.0, and so on) -- tested, versioned releases that Valve assigns to specific games during verification. Each major version brings a Wine upgrade as its foundation; Proton 10.0, originally released in beta on April 29, 2025 and now at point release 10.0-5 as of April 2026, is built on Wine 10, DXVK 2.6.1, VKD3D-Proton 2.14.1, and DXVK-NVAPI 0.9.0. Point releases within a major version add targeted fixes without bumping the major version.
  • Proton Experimental -- Valve's own staging branch. It receives continuous updates with features and fixes that are not yet ready for a numbered release. Think of it as the beta queue for whatever becomes the next stable Proton. The Valve wiki describes it as intended for public testing of experimental features, with games already working only on Experimental tested for regressions before stable release.
  • Proton Hotfix -- a short-lived special variant Valve ships when a specific high-profile game needs a targeted patch and there is no time for a proper Experimental or stable cycle. It is phased out once the fix matures into one of the standard flavors.
  • Proton Experimental Bleeding Edge -- an opt-in beta within Proton Experimental that tracks every commit as it lands automatically. This picks up the latest development in DXVK, VKD3D-Proton, dxvk-nvapi, and Proton's Wine as it happens. It is genuinely unstable and not recommended for regular use.

GE-Proton lives outside that hierarchy entirely. It is a community fork maintained independently by Thomas Crider (GloriousEggroll) and is not distributed by Valve.

Current versions

As of April 2026, Valve's latest numbered stable release is Proton 10.0-5, which is built on Wine 10, DXVK 2.6.1, VKD3D-Proton 2.14.1, and DXVK-NVAPI 0.9.0. The changelog was last updated on April 10, 2026 per the official Valve GitHub wiki. The prior point release, Proton 10.0-4, shipped January 27, 2026. GE-Proton releases are numbered in a parallel series -- GE-Proton 10-34 as of March 22, 2026 -- and ship significantly more frequently than official Proton, sometimes multiple releases per week when game-specific fixes are needed. GE-Proton's major version number now tracks Proton's upstream base rather than being an independent sequence.

What Proton Experimental Is

Proton Experimental is the place where Valve stages changes before they land in a numbered release. It pulls in upstream Wine updates as they happen, incorporates DXVK and VKD3D-Proton improvements, and contains targeted hotfixes for newly released games that would otherwise wait weeks or months for the next numbered stable.

When a high-profile game ships and does not work on the current stable Proton, Valve's typical response is to push a fix into Proton Experimental while the numbered release catches up. This means Proton Experimental is often the fastest path to making a newly released game launch -- but it can also introduce regressions. A change that fixes one title may break another. Valve does not guarantee stability here.

Regression risk

Proton Experimental carries half-finished changes by design. Games that have been verified against a numbered Proton version may stop working if you switch them to Experimental. Use it as a targeted tool for specific problem titles, not as a global default.

When Valve merges a fix for Game A into Proton Experimental, they do not simultaneously verify the effect on Games B through Z. The staging model is intentional: ship the fix quickly, let the public surface regressions, then graduate the change to stable once it has proven safe. The practical consequence for you is that any game currently running well on Proton 10.0 stable has been through that QA gauntlet -- Experimental has not been held to the same standard. Switching a working game to Experimental to chase some theoretical improvement is low-value risk. Switching a broken new release to Experimental to catch a targeted hotfix is exactly what the branch is for.

What GE-Proton Is

GE-Proton starts from the same upstream sources as Proton Experimental -- Wine, DXVK, VKD3D-Proton -- and adds a curated set of patches and components that Valve either cannot include for legal reasons or has not yet merged upstream. The key additions are:

  • Media Foundation patches -- GE-Proton includes codec support for WMF-encoded video that Valve cannot ship due to licensing constraints. This covers formats including H.264, H.265, VC-1, WMV3, AAC, and WMA -- the codecs Windows ships as part of Media Foundation that games use for cutscene video and audio. This is the fix for in-game cutscenes that display as solid colored bars or play with no video. The GloriousEggroll GitHub README lists this explicitly as a feature Valve's Proton currently does not contain.
  • AMD FSR in fullscreen hack -- toggled with WINE_FULLSCREEN_FSR=1, this applies upscaling at the compatibility layer level. It is limited to Vulkan-rendered games (those using DXVK or VKD3D-Proton) and does not work with native OpenGL games or the wined3d renderer. This is separate from and older than the FSR4 upgrade path below.
  • FSR4, FSR3, and DLSS upgrade tooling -- GE-Proton 10-4 (June 2025) added an initial stub DLL approach for FSR4, requiring manual DLL placement. GE-Proton 10-9 (July 2025) replaced this with the automated download mechanism under PROTON_FSR4_UPGRADE=1, which pulls the DLL from AMD's CDN and caches it in the game's prefix. GE-Proton 10-26 (December 2025) expanded the variable set further: PROTON_FSR4_UPGRADE=1 downloads FSR DLL version 4.0.2 by default for games that ship FSR 3.1 on RDNA 4 hardware; a specific version can be pinned with PROTON_FSR4_UPGRADE="4.0.1". PROTON_FSR4_RDNA3_UPGRADE=1 provides a parallel path for RDNA 3 GPUs, defaulting to DLL version 4.0.0. PROTON_FSR3_UPGRADE=1 handles games shipping FSR 3.0 rather than FSR 3.1. PROTON_DLSS_UPGRADE=1 fetches the latest NVIDIA DLSS DLLs and replaces bundled versions. None of these environment variables are available in vanilla Proton or Proton Experimental.
  • FEX integration and aarch64 compile support -- GE-Proton bundles FEX, a dynamic binary translator that enables x86 and x86-64 application execution on aarch64 (ARM64) hardware. Support for compiling GE-Proton itself on aarch64 was added in GE-Proton 10-30 (February 2026). GloriousEggroll notes in the 10-30 release that this work is from upstream Valve and explicitly marked YMMV; currently the aarch64 path requires an unreleased version of umu-launcher because there is no aarch64 version of the Steam client. 32-bit game support on ARM is hit or miss. The feature is actively developed but remains experimental.
  • protonfixes -- an automated per-game fix system originally created by community developer simons-public (credited as "Chris" in the GloriousEggroll README) and imported into GE-Proton. The original repository is simons-public/protonfixes on GitHub. It applies winetricks verbs, registry edits, environment variable overrides, and EAC workarounds on a per-title basis using each game's Steam App ID as the key. When community members discover that a specific game needs a particular DLL or registry setting to run, a protonfixes entry gets added and it applies automatically on next launch. Valve cannot ship many of these fixes because they rely on proprietary DLLs or are too game-specific for the official QA pipeline.
  • umu-launcher integration -- GE-Proton supports the umu unified game launcher project, which applies protonfixes to games running outside of Steam (GOG, standalone launchers, Heroic Games Launcher). This makes GE-Proton the recommended compatibility layer for non-Steam Windows games on Linux.
  • VR outside Steam -- since GE-Proton 10-33 (March 2026), wineopenvr patches allow VR to function for non-Steam games. GloriousEggroll's release notes list the GOG version of Project Wingman, Overload, and Star Citizen as confirmed working examples. Compatibility was tested using Meta Quest 3 with WiVRn. Setup requires following the WiVRn environment variable instructions alongside the GE-Proton VR launch options.
  • Wayland monitor selection -- since GE-Proton 10-34 (March 2026), PROTON_WAYLAND_MONITOR=HDMI-A-1 documents and wraps the underlying WAYLANDDRV_PRIMARY_MONITOR variable with an easier-to-remember name, and by default GE-Proton now auto-detects the primary monitor via xrandr when no value is set, mirroring XWayland behavior. Useful on multi-monitor Wayland setups where the wine-wayland driver renders to the wrong display.
  • Faster Wine and DXVK updates -- GE-Proton tracks upstream more aggressively than even Proton Experimental in many cases, meaning newer Wine fixes land there first. GE-Proton 9-27 shipped on April 1, 2025 with the latest bleeding-edge Wine, DXVK, VKD3D-Proton, and dxvk-nvapi -- nearly four weeks before the Proton 10.0 beta landed on April 29, 2025. Patches for GTA V Enhanced and Microsoft Flight Simulator 2024 were already in GE-Proton 9-26/9-27 before Valve merged them upstream, and then were removed from GE-Proton once they graduated to official Proton.
  • Wine ALSA audio path -- since GE-Proton 10-27, a Wine ALSA driver is included as an alternative to the default PulseAudio path. Enabling it with WINEDLLOVERRIDES="winepulse.drv=d" WINEALSA_CHANNELS=2 (or 6 for 5.1, 8 for 7.1) bypasses PipeWire/PulseAudio entirely and can resolve audio latency and crackling issues in specific games. GE-Proton 10-28 added WINEALSA_SPATIAL=1 for spatial audio initialization errors. This path is not available in official Proton.

The tradeoff is that GE-Proton is maintained primarily by one person, Thomas Crider (GloriousEggroll), updates rapidly, and can introduce its own regressions. GloriousEggroll typically turns around fixes quickly when something breaks, but there is no Valve QA process behind it.

How the FSR4 and DLSS DLL Download Works

One detail that most coverage of GE-Proton skips: when you set PROTON_FSR4_UPGRADE=1 or PROTON_DLSS_UPGRADE=1, GE-Proton does not reach out to a vendor CDN at launch time every session. The DLLs are downloaded once and cached inside the game's Proton prefix. 64-bit upscaler DLLs (such as amdxcffx64.dll) land in steamapps/compatdata/[AppID]/pfx/drive_c/windows/system32/; 32-bit variants go into syswow64/ within the same prefix tree. On subsequent launches the cached version is used, which means there is no per-launch network dependency after the first run. If you want to force a fresh download (for example after pinning a newer DLL version by changing the environment variable value), delete the DLL file from that path and relaunch.

This matters for a few practical reasons. Games on a Steam Deck in offline mode will still use the FSR4 DLL on subsequent sessions after the initial download. If you are on an air-gapped system or have restricted outbound connections, the first launch with the upgrade variable set will fail silently to download and the game will fall back to its bundled DLL version. The GE-Proton changelog does not prominently document this caching behavior, which is why it rarely comes up in troubleshooting threads.

A related but separate behavior: PROTON_FSR4_UPGRADE=1 automatically disables AMD Anti-Lag 2 for the session. This is documented in the GloriousEggroll release notes as a known compatibility issue between the FSR 4 DLL and Anti-Lag 2 at the time of writing. If you rely on Anti-Lag 2 for latency reduction, you cannot combine it with the FSR4 upgrade path in the current implementation.

GloriousEggroll describes GE-Proton in the project README as containing things "Valve's Proton currently does not" -- specifically calling out the media foundation patches and the protonfixes automated system as the two core reasons to use it. Those gaps have remained consistent across every major version, even as the fork has grown to include FSR4 tooling, Wine ALSA audio, and VR support for non-Steam games.

Media Foundation codec support in GE-Proton relies on implementing decoders for WMV, WMA, H.264, and other formats that Microsoft ships as part of Windows. Shipping those implementations in an open-source project raises real licensing questions: the patents covering some of these codecs are held by third parties and the terms under which Microsoft licenses them do not obviously extend to a compatibility layer redistributed by Valve. GloriousEggroll's distribution model sidesteps this -- it is a community build, not a commercial product with the same legal exposure Valve faces. This is not a technical limitation; it is a legal one. The codecs work perfectly once included, which is exactly why GE-Proton's fix for black-bar cutscenes is so reliable.
GE-Proton 10.x Feature History -- click an entry to expand
GE-Proton 10-4  (June 2025)
Initial FSR4 stub DLL — basic upgrade path
First introduction of FSR 4 infrastructure into GE-Proton: a stub implementation of amdxc64.dll contributed by the community (OOOOOF123/Etaash). The early FSR4_UPGRADE=1 flag could trigger a manual upgrade for games shipping FSR 3.1, but it required manual DLL placement following external instructions. The automated download mechanism and the PROTON_-prefixed variable name had not yet landed.
GE-Proton 10-9  (July 2025)
PROTON_FSR4_UPGRADE=1 — automated DLL download introduced
This release replaced the manual stub approach with an automated download mechanism. PROTON_FSR4_UPGRADE=1 (note the PROTON_ prefix) now pulls the FSR 4 DLL directly from AMD's CDN at first launch and caches it in the game's prefix. Also added NTSync support in this release. This is the point where the FSR4 upgrade became practical for regular use without manual steps.
GE-Proton 10-26  (December 2025)
PROTON_FSR4_RDNA3_UPGRADE, PROTON_DLSS_UPGRADE, FEX aarch64
Expanded the upscaler upgrade variable set. PROTON_FSR4_UPGRADE=1 now downloads FSR 4.0.2 by default for RDNA 4 hardware; a specific version can be pinned (e.g. PROTON_FSR4_UPGRADE="4.0.1"). PROTON_FSR4_RDNA3_UPGRADE=1 adds a parallel path for RDNA 3 GPUs, defaulting to FSR DLL version 4.0.0. PROTON_DLSS_UPGRADE=1 adds NVIDIA DLSS DLL auto-download. FEX ARM binary translation support also appears in this release, enabling x86 and x86-64 execution on aarch64 (ARM64) hosts.
GE-Proton 10-27  (January 2026)
Wine ALSA direct audio path
Introduced the Wine ALSA driver as an alternative to the default PulseAudio bridge. Setting WINEDLLOVERRIDES="winepulse.drv=d" WINEALSA_CHANNELS=2 in Steam Launch Options bypasses PipeWire and PulseAudio entirely, resolving crackling and latency caused by the bridge layer in specific games.
GE-Proton 10-28  (January 2026)
WINEALSA_SPATIAL for spatial audio errors
Companion variable to the ALSA path. Adding WINEALSA_SPATIAL=1 alongside the ALSA flags suppresses spatial audio initialization errors that some games throw when spatial processing calls a code path the ALSA driver does not implement.
GE-Proton 10-30  (February 2026)
aarch64 (ARM64) compile support
GE-Proton can now be compiled natively on aarch64 (ARM64) hardware. GloriousEggroll notes this is upstream Valve work and explicitly YMMV; running the result requires an unreleased umu-launcher build since there is no official aarch64 Steam client. 32-bit game support on ARM remains hit-or-miss.
GE-Proton 10-33  (March 2026)
VR outside Steam (wineopenvr patches)
Introduced wineopenvr patches enabling VR for non-Steam games. Confirmed working with the GOG builds of Project Wingman and Overload, and with Star Citizen, using Meta Quest 3 and WiVRn. Requires following the WiVRn environment variable instructions alongside GE-Proton's VR launch flags.
GE-Proton 10-34  (March 2026)
PROTON_WAYLAND_MONITOR + xrandr primary auto-detect
Documents and wraps the previously undocumented WAYLANDDRV_PRIMARY_MONITOR variable as the user-facing PROTON_WAYLAND_MONITOR. When neither variable is set, GE-Proton now auto-detects the primary monitor via xrandr, mirroring XWayland behavior. Fixes God of War Ragnarok, GTA V, and Assassin's Creed rendering to the wrong display in multi-monitor Wayland sessions.

Side-by-Side Comparison

Property Proton Experimental GE-Proton
Maintained by Valve / CodeWeavers GloriousEggroll (community)
Installation Built into Steam library Requires ProtonUp-Qt or manual install
Update frequency Continuous (Valve schedule) Very frequent (often weekly)
Media codecs (WMF) No Yes
protonfixes No Yes
AMD FSR in fullscreen hack No Yes (WINE_FULLSCREEN_FSR=1)
FSR4 / DLSS runtime upgrade No Yes (PROTON_FSR4_UPGRADE, PROTON_DLSS_UPGRADE)
FSR3 upgrade (FSR 3.0 games) No Yes (PROTON_FSR3_UPGRADE)
Wayland monitor selection No Yes (PROTON_WAYLAND_MONITOR, since 10-34)
Wine ALSA audio path No Yes (WINEDLLOVERRIDES + WINEALSA_CHANNELS, since 10-27)
FEX (ARM/aarch64) No Yes (experimental, since 10-26)
umu non-Steam launcher support No Yes
VR outside Steam No Yes (since 10-33)
FSR4 on-screen indicator No Yes (PROTON_FSR4_INDICATOR=1)
DLSS on-screen indicator No Yes (PROTON_DLSS_INDICATOR=1)
XeSS runtime upgrade No Yes (PROTON_XESS_UPGRADE=1)
Stability guarantee Low (staging branch) Low (community fork)
Supported by Valve Yes No
Does not auto-update Updates silently with Steam Must update manually via ProtonUp-Qt
Proton ExperimentalValve / CodeWeavers
GE-ProtonGloriousEggroll (community)
Proton ExperimentalBuilt into Steam library
GE-ProtonRequires ProtonUp-Qt or manual install
Proton ExperimentalNo
GE-ProtonYes
Proton ExperimentalNo
GE-ProtonYes
Proton ExperimentalNo
GE-ProtonYes (PROTON_FSR4_UPGRADE, PROTON_DLSS_UPGRADE)
Proton ExperimentalNo
GE-ProtonYes (PROTON_FSR3_UPGRADE)
Proton ExperimentalNo
GE-ProtonYes (PROTON_WAYLAND_MONITOR, since 10-34)
Proton ExperimentalNo
GE-ProtonYes (WINEDLLOVERRIDES + WINEALSA_CHANNELS, since 10-27)
Proton ExperimentalContinuous (Valve schedule)
GE-ProtonVery frequent, often weekly
Proton ExperimentalNo
GE-ProtonYes (PROTON_DLSS_INDICATOR=1)
Proton ExperimentalNo
GE-ProtonYes (PROTON_XESS_UPGRADE=1)
Proton ExperimentalNo
GE-ProtonYes (experimental, since 10-26)
Proton ExperimentalNo
GE-ProtonYes (since 10-33)
Proton ExperimentalNo
GE-ProtonYes
Proton ExperimentalLow (staging branch)
GE-ProtonLow (community fork)
Proton ExperimentalUpdates silently with Steam
GE-ProtonManual update required (ProtonUp-Qt)
Proton ExperimentalYes
GE-ProtonNo (community fork)

When to Use Proton Experimental

Proton Experimental is the right first step when a game that just released is not working on the current numbered stable. Valve typically pushes targeted hotfixes here before they graduate to stable, so for a brand-new title where the community is still figuring out compatibility, Experimental is often the fix that arrives first.

It is also a reasonable choice when ProtonDB reports show users having success on Experimental but not on GE-Proton for a specific title. Always check ProtonDB before guessing -- community reports often name the exact Proton version that resolved a problem.

ProtonDB workflow

Before switching versions, search the game on protondb.com. User reports frequently include the exact Proton version used and the specific fix that worked. This saves significant trial-and-error time.

When to Use GE-Proton

GE-Proton tends to be the better choice in a few specific situations:

  • In-game video is broken -- if cutscenes show as colored bars or simply do not play, this is almost always the Media Foundation codec gap. GE-Proton includes the patches; official Proton does not. This is the clearest, most consistent win for GE-Proton.
  • The game refuses to launch under any official Proton version -- protonfixes may have a per-game workaround already in place that Valve has not merged. Check the GloriousEggroll GitHub release notes, which list specific games fixed in each release.
  • Performance is noticeably worse than community benchmarks suggest -- GE-Proton sometimes ships Wine or DXVK updates ahead of official Proton that include performance improvements for specific rendering paths. For example, GE-Proton 9-27 (April 2025) carried a newer bleeding-edge Wine and DXVK build nearly four weeks before the Proton 10.0 beta dropped, during which time games hitting Wine rendering regressions that the upstream had already fixed would perform better under GE-Proton than under the then-current Proton 9.0 stable.
  • You want FSR without in-game support -- WINE_FULLSCREEN_FSR=1 applies AMD FidelityFX Super Resolution at the compatibility layer level for any title. Note that this path is limited to Vulkan-rendered games (those running through DXVK or VKD3D-Proton); it does not work with native OpenGL games or the wined3d renderer. For games using the Direct3D-to-OpenGL path, this variable has no effect.
  • You have RDNA 4 or RDNA 3 hardware and want FSR4 -- the PROTON_FSR4_UPGRADE=1 environment variable (set in Steam Launch Options before %command%) automatically downloads and substitutes FSR 4 DLLs in games that ship FSR 3.1. RDNA 3 users should use PROTON_FSR4_RDNA3_UPGRADE=1 instead. For older games that ship FSR 3.0 rather than 3.1, use PROTON_FSR3_UPGRADE=1. None of these variables work in vanilla Proton or Proton Experimental.
  • You want to upgrade DLSS versions -- PROTON_DLSS_UPGRADE=1 fetches newer NVIDIA DLSS DLLs and replaces the versions bundled with the game, which is only available in GE-Proton and similar forks.
  • You run games on Wayland and use multiple monitors -- PROTON_WAYLAND_MONITOR=HDMI-A-1 (introduced in GE-Proton 10-34) lets you specify which physical display the wine-wayland driver targets. By default GE-Proton will attempt to detect the primary monitor via xrandr when no value is set, but the env var gives you explicit control when auto-detection does not behave as expected. The previous internal variable, WAYLANDDRV_PRIMARY_MONITOR, was undocumented; PROTON_WAYLAND_MONITOR maps to the same value and is the recommended form going forward.
  • You are running games outside of Steam -- GE-Proton's umu-launcher integration makes it the standard choice for running Windows games through Heroic Games Launcher, Lutris, and other non-Steam front-ends on Linux. protonfixes apply to these games using the game's IGDB or GOG ID as the key, just as they do for Steam App IDs.
  • You have persistent audio crackling or high latency -- GE-Proton 10-27 added an optional Wine ALSA audio path that bypasses PipeWire and PulseAudio entirely. Setting WINEDLLOVERRIDES="winepulse.drv=d" WINEALSA_CHANNELS=2 (or 6 for 5.1, 8 for 7.1) switches to the ALSA driver directly. If you also see spatial audio initialization errors, add WINEALSA_SPATIAL=1 (available since 10-28). This is not available in official Proton.
Anti-cheat caveat

Games with kernel-level anti-cheat (Easy Anti-Cheat, BattlEye) that have not been explicitly enabled for Linux/Proton will not work under GE-Proton any more than they do under official Proton. GE-Proton cannot override anti-cheat requirements. Check areweanticheatyet.com for the current state of a specific game.

GE-Proton does not auto-update

Unlike Proton Experimental, which updates silently through Steam, GE-Proton must be updated manually. When a new GE-Proton version ships, your existing installation stays at the version you installed until you open ProtonUp-Qt, add the new version, and optionally remove the old one. Games pinned to a specific GE-Proton version will continue using that version until you change it. This is intentional design -- it prevents surprise regressions -- but it means you need to check for updates yourself.

How to Install and Use GE-Proton on Linux

GE-Proton is not in the Steam library. You install it separately using ProtonUp-Qt, which is available as a Flatpak on Flathub and is the recommended approach for Steam Deck users as well.

install ProtonUp-Qt via Flatpak
# Install ProtonUp-Qt from Flathub
$ flatpak install flathub net.davidotek.pupgui2

# Launch it
$ flatpak run net.davidotek.pupgui2

Once open, confirm Steam is selected at the top of the ProtonUp-Qt window, click Add version, select GE-Proton, and click Install. ProtonUp-Qt automatically detects whether your Steam installation is native or Flatpak and extracts the tarball to the correct compatibilitytools.d directory -- either ~/.steam/steam/compatibilitytools.d/ for native Steam or ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/ for Flatpak Steam.

Restart Steam (or return to Gaming Mode on Steam Deck) so the new version appears in the compatibility tool dropdown.

Manual install (native Steam)

Download the .tar.gz release from the GloriousEggroll GitHub releases page, then run:

mkdir -p ~/.steam/steam/compatibilitytools.d
tar -xf GE-Proton*.tar.gz -C ~/.steam/steam/compatibilitytools.d/

For Flatpak Steam installations, the target path is different:
mkdir -p ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d
tar -xf GE-Proton*.tar.gz -C ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/

For Snap Steam installations (unofficial, unsupported by GloriousEggroll and Valve):
mkdir -p ~/snap/steam/common/.steam/steam/compatibilitytools.d
tar -xf GE-Proton*.tar.gz -C ~/snap/steam/common/.steam/steam/compatibilitytools.d/

Each release also includes a .sha512sum file alongside the tarball. Verify the download before extracting with sha512sum -c GE-Proton*.sha512sum. Restart Steam after extraction so it detects the new version.

Switching Per Game

Both Proton Experimental and GE-Proton should be assigned per game, not globally. Setting either as the global default will affect every game in your library, including titles that Valve has verified against a specific numbered Proton version and that may regress under a different one.

To switch a specific game:

  1. Right-click the game in your Steam library and choose Properties.
  2. Go to the Compatibility tab.
  3. Tick Force the use of a specific Steam Play compatibility tool.
  4. Select the desired Proton version from the dropdown.

On Steam Deck in Gaming Mode, the same option is accessible from the game's properties via the gear icon on the right side of the game page.

FSR4 and DLSS Upgrade Environment Variables

One of GE-Proton's most significant recent additions -- not available in Proton Experimental -- is a set of environment variables that upgrade in-game upscalers at runtime, and others that give you finer control over the Wayland display path. These go into the Steam Launch Options field for a specific game (under Properties > General).

$ build-launch-options --interactive
Steam Launch Options
%command%
Note: PROTON_FSR4_UPGRADE disables AMD Anti-Lag 2 -- do not combine if you rely on Anti-Lag 2.
PROTON_DLSS_UPGRADE is for NVIDIA GPUs only.
Steam Launch Options examples (GE-Proton only)
# Upgrade FSR 3.1 to FSR 4 -- RDNA 4 hardware (RX 9000 series)
PROTON_FSR4_UPGRADE=1 %command%

# Optionally pin a specific FSR 4 DLL version instead of the default (4.0.2)
PROTON_FSR4_UPGRADE="4.0.1" %command%

# Upgrade FSR 3.1 to FSR 4 -- RDNA 3 hardware (RX 7000 series)
PROTON_FSR4_RDNA3_UPGRADE=1 %command%

# Upgrade games shipping FSR 3.0 to FSR 3.1 SDK (any AMD GPU)
PROTON_FSR3_UPGRADE=1 %command%

# Auto-upgrade bundled DLSS DLLs to the latest version (NVIDIA only)
PROTON_DLSS_UPGRADE=1 %command%

# Pin a specific DLSS version -- supply the branch prefix, not the full version string
# e.g. "310.2" downloads version 310.2.1.0; do NOT supply the full "310.2.1.0" string
PROTON_DLSS_UPGRADE="310.2" %command%

# Auto-upgrade bundled XeSS DLLs to the latest version (Intel XeSS games)
PROTON_XESS_UPGRADE=1 %command%

# Show FSR4 indicator watermark (useful for verifying it is active)
PROTON_FSR4_INDICATOR=1 PROTON_FSR4_UPGRADE=1 %command%

# Show DLSS overlay (bottom-left corner) to verify DLSS is active
PROTON_DLSS_INDICATOR=1 PROTON_DLSS_UPGRADE=1 %command%

# Legacy fullscreen hack FSR -- Vulkan-based games only (DXVK/VKD3D-Proton)
# Does NOT work with native OpenGL games or wined3d rendering paths
WINE_FULLSCREEN_FSR=1 %command%

# Force wine-wayland to use a specific monitor (added in GE-Proton 10-34)
# Use: xrandr --listmonitors to find your output name
PROTON_WAYLAND_MONITOR=HDMI-A-1 %command%

# Wine ALSA audio path -- bypasses PipeWire/PulseAudio (added in GE-Proton 10-27)
# Use 2 for stereo, 6 for 5.1 surround, 8 for 7.1 surround
WINEDLLOVERRIDES="winepulse.drv=d" WINEALSA_CHANNELS=2 %command%

# Add WINEALSA_SPATIAL=1 if you get spatial audio initialization errors (since 10-28)
WINEDLLOVERRIDES="winepulse.drv=d" WINEALSA_CHANNELS=2 WINEALSA_SPATIAL=1 %command%
FSR4, DLSS, and WINEALSA details

Native FSR 4 support requires AMD RDNA 4 hardware (RX 9000 series) and downloads version 4.0.2 of amdxcffx64.dll by default. RDNA 3 support uses a separate emulation path via PROTON_FSR4_RDNA3_UPGRADE=1 which defaults to version 4.0.0 of the DLL. A specific version can be pinned for either variable by supplying it as a value instead of 1, e.g. PROTON_FSR4_UPGRADE="4.0.1". Note that PROTON_FSR4_UPGRADE also disables AMD Anti-Lag 2 due to known compatibility issues. For games that ship FSR 3.0 rather than FSR 3.1, PROTON_FSR3_UPGRADE=1 handles the FSR 3.x upgrade path. For NVIDIA users, PROTON_DLSS_UPGRADE=1 downloads the latest DLSS DLLs and also sets DXVK_NVAPI_DRS_SETTINGS to the latest preset automatically; to pin a specific version supply the branch prefix as a quoted value (e.g. PROTON_DLSS_UPGRADE="310.2" downloads version 310.2.1.0 -- note you supply the prefix, not the full version string). PROTON_DLSS_INDICATOR=1 enables a bottom-left overlay to confirm DLSS is active. For Intel XeSS games, PROTON_XESS_UPGRADE=1 auto-downloads updated XeSS DLLs. The legacy WINE_FULLSCREEN_FSR=1 applies FSR upscaling at the compatibility layer level and works on any GPU, but is limited to Vulkan-rendered games (DXVK and VKD3D-Proton paths); it does not function with native OpenGL games or the wined3d renderer. PROTON_WAYLAND_MONITOR=HDMI-A-1 (substituting your actual output name from xrandr --listmonitors) was introduced in GE-Proton 10-34 as a documented alias for WAYLANDDRV_PRIMARY_MONITOR; GE-Proton now auto-detects the primary display via xrandr if neither is set. For audio issues, the Wine ALSA path (WINEDLLOVERRIDES="winepulse.drv=d" WINEALSA_CHANNELS=2) was added in GE-Proton 10-27 and can resolve audio latency and crackling in specific games by bypassing PipeWire/PulseAudio. None of the FSR4/DLSS/FSR3/XeSS/WINEALSA variables function under official Proton or Proton Experimental -- they require GE-Proton or a similar community fork.

Step 1: Install ProtonUp-Qt

Install ProtonUp-Qt from Flathub with flatpak install flathub net.davidotek.pupgui2. On Steam Deck, switch to Desktop Mode and install it from the Discover store. ProtonUp-Qt is also available as an AppImage from its GitHub releases page, and as protonup-qt / protonup-qt-bin in the AUR for Arch-based distributions.

Step 2: Install GE-Proton

Open ProtonUp-Qt, confirm Steam is selected at the top, click Add version, select GE-Proton from the list, and click Install. ProtonUp-Qt detects whether your Steam installation is native or Flatpak and extracts to the correct compatibilitytools.d path automatically. On Steam Deck, return to Gaming Mode or restart Steam on desktop Linux so the new version is detected. GE-Proton does not auto-update -- you must return to ProtonUp-Qt each time a new release ships and want the latest fixes.

Step 3: Assign GE-Proton to a specific game

Right-click the game in your Steam library and choose Properties. Go to the Compatibility tab, tick Force the use of a specific Steam Play compatibility tool, and select GE-Proton from the dropdown. Launch the game as normal.

Step 4 (optional): Enable FSR4, FSR3, DLSS upgrades, or Wine ALSA audio

In the game's Properties under the General tab, find the Launch Options field. For FSR4 on RDNA 4 hardware: PROTON_FSR4_UPGRADE=1 %command% (downloads FSR DLL version 4.0.2 by default). For RDNA 3: PROTON_FSR4_RDNA3_UPGRADE=1 %command% (defaults to version 4.0.0). For games shipping FSR 3.0 (older FSR 3): PROTON_FSR3_UPGRADE=1 %command%. For DLSS: PROTON_DLSS_UPGRADE=1 %command%. For audio crackling or latency issues: WINEDLLOVERRIDES="winepulse.drv=d" WINEALSA_CHANNELS=2 %command% (use 6 or 8 for surround; add WINEALSA_SPATIAL=1 for spatial audio errors). For multi-monitor Wayland rendering on the wrong display (since GE-Proton 10-34): PROTON_WAYLAND_MONITOR=HDMI-A-1 %command% with your output name from xrandr. These environment variables are only available in GE-Proton and similar community forks -- they do nothing under vanilla Proton or Proton Experimental.

Step 5: Check ProtonDB before switching

Visit protondb.com and search for the game you are troubleshooting. Community reports will often tell you which Proton version resolves a specific issue. Use this to choose between numbered stable, Proton Experimental, and GE-Proton rather than guessing through all three sequentially.

Version Decision Tree

Rather than guessing through Proton versions sequentially, you can narrow the choice quickly by matching your symptom to the version that is most likely to resolve it. Use the interactive tool below, or read the full logic beneath it.

$ proton-version-selector --interactive
What is happening with your game?
Cutscenes: colored bars / black video > diagnosis complete
Use GE-Proton
This is almost always a Media Foundation codec gap. Official Proton -- including Proton Experimental -- cannot ship the required WMF decoders due to licensing constraints. GE-Proton includes them. Proton Experimental will not fix this regardless of version. Switch the specific game to GE-Proton in Properties > Compatibility and relaunch.
Game will not launch >
Is this a newly released game (launched within the last few weeks)?
Game will not launch > newly released > diagnosis complete
Try Proton Experimental first
Valve typically pushes targeted hotfixes for newly released titles into Proton Experimental before they reach the next numbered stable. Experimental is the right first step here. If Experimental also fails, then try GE-Proton -- check the GloriousEggroll GitHub release notes to see if your specific title is mentioned. Also check ProtonDB for community reports naming an exact version that worked.
Game will not launch > older title > diagnosis complete
Try GE-Proton (check protonfixes)
For an established game that stopped launching, GE-Proton's protonfixes system may have a per-game workaround already merged that Valve has not picked up. Read the GloriousEggroll release notes for the last few releases to see if your title appears. Also check ProtonDB -- reports often name the exact version and the specific fix.
Bad performance >
Do you have AMD hardware (RDNA 3 or RDNA 4)?
Bad performance > RDNA 4 > diagnosis complete
GE-Proton + PROTON_FSR4_UPGRADE=1
Switch to GE-Proton and add PROTON_FSR4_UPGRADE=1 %command% in Steam Launch Options (under Properties > General). This downloads and substitutes FSR 4.0.2 DLLs for games shipping FSR 3.1. Note: this disables AMD Anti-Lag 2. To verify FSR4 is active, add PROTON_FSR4_INDICATOR=1 to the same launch options. GE-Proton also often ships Wine and DXVK updates faster than official Proton, which may help independent of FSR.
Bad performance > RDNA 3 > diagnosis complete
GE-Proton + PROTON_FSR4_RDNA3_UPGRADE=1
Use PROTON_FSR4_RDNA3_UPGRADE=1 %command% in Steam Launch Options. This uses version 4.0.0 of the FSR DLL via an RDNA 3 emulation path. If the game ships FSR 3.0 rather than 3.1, use PROTON_FSR3_UPGRADE=1 instead. GE-Proton's faster Wine/DXVK update cadence may also help for certain rendering paths.
Bad performance > non-AMD hardware > diagnosis complete
Try GE-Proton (faster upstream cadence)
GE-Proton ships Wine, DXVK, and VKD3D-Proton updates more aggressively than Proton Experimental in many cases. If a newer version of one of those components includes a performance improvement for your game's rendering path, GE-Proton may have it first. For NVIDIA users, PROTON_DLSS_UPGRADE=1 can also help if the game ships an older DLSS version. Always check ProtonDB for game-specific reports.
Want FSR4 / DLSS upgrade > diagnosis complete
GE-Proton required
PROTON_FSR4_UPGRADE=1, PROTON_FSR4_RDNA3_UPGRADE=1, PROTON_FSR3_UPGRADE=1, and PROTON_DLSS_UPGRADE=1 are GE-Proton-only environment variables. They do not function under vanilla Proton or Proton Experimental. Use the env-var builder further down this page to construct the correct launch options string for your hardware and use case.
Audio crackling / latency > diagnosis complete
GE-Proton + Wine ALSA path
Switch to GE-Proton 10-27 or later and add WINEDLLOVERRIDES="winepulse.drv=d" WINEALSA_CHANNELS=2 %command% to Steam Launch Options. Use 6 for 5.1 surround, 8 for 7.1. If you also see spatial audio errors in the game's log, add WINEALSA_SPATIAL=1. This path bypasses PipeWire and PulseAudio entirely and resolves issues caused by the bridge layer rather than the game itself.
Non-Steam game (Heroic, GOG, Lutris) > diagnosis complete
GE-Proton via umu-launcher
GE-Proton includes umu-launcher integration, which applies protonfixes to non-Steam games using their GOG or IGDB ID. Heroic Games Launcher, Lutris, and similar front-ends support umu natively. Official Proton Experimental has no equivalent for this workflow. GE-Proton is the standard recommendation for Windows games run outside of Steam on Linux.
VR outside Steam > diagnosis complete
GE-Proton 10-33 or later
Wineopenvr patches added in GE-Proton 10-33 enable VR for non-Steam games. Tested with Meta Quest 3 via WiVRn. Confirmed working: GOG versions of Project Wingman and Overload, and Star Citizen. Follow the WiVRn environment variable instructions alongside GE-Proton's VR launch options. Official Proton does not support this use case.
Wrong display on Wayland > diagnosis complete
GE-Proton 10-34 + PROTON_WAYLAND_MONITOR
Use GE-Proton 10-34 or later and add PROTON_WAYLAND_MONITOR=HDMI-A-1 %command% (substituting your actual output name from xrandr --listmonitors) to Steam Launch Options. This explicitly tells the wine-wayland driver which physical display to target. When neither this variable nor the older WAYLANDDRV_PRIMARY_MONITOR is set, GE-Proton 10-34 auto-detects via xrandr.
Anti-cheat disconnects > diagnosis complete
Check areweanticheatyet.com first
This is not a Proton version problem that GE-Proton can solve. Kernel-level anti-cheat (Easy Anti-Cheat, BattlEye) requires the game's developer to explicitly enable Linux/Proton support. No version of Proton -- including GE-Proton -- can bypass this requirement. Check areweanticheatyet.com to see whether your game's developer has enabled Linux support. If they have not, the game will not work in multiplayer on Linux regardless of the compatibility layer used.
Broke after Proton update > diagnosis complete
Revert to numbered stable
Both Proton Experimental and GE-Proton can introduce regressions. Numbered stable releases are what Valve QAs against. Open the game's Properties > Compatibility tab and revert to the numbered stable version it was running on before the update. If it was Steam Verified, check which Proton version Valve assigned it to -- that version should still be available in the dropdown and is the baseline you want.
Valve's verification process assigns each Steam-verified game to a specific numbered Proton version -- the version that passed QA for that title. When you set a global Proton default, you override that assignment for every game in your library simultaneously. A game verified on Proton 9 may have regressions on Proton 10 or on GE-Proton 10-34. The compatibility dropdown exists precisely so you can treat each game as an independent variable. The mental model to adopt: your default is always the numbered stable, and the override field in Properties is your surgical instrument. Use it only when a game needs it, and only for that game.

Frequently Asked Questions

What is the difference between ProtonGE and Proton Experimental?

Proton Experimental is Valve's official staging branch, updated with features and fixes not yet ready for a numbered stable release. ProtonGE (GE-Proton) is a community fork maintained by Thomas Crider (GloriousEggroll) that builds on Proton Experimental and adds extra patches Valve cannot include for legal or practical reasons, including Media Foundation codecs, AMD FSR in fullscreen hack, FSR4 and DLSS runtime upgrade variables, FEX for ARM, umu-launcher support for non-Steam games, and the protonfixes automated per-game fix system. Proton Experimental is built and tested by Valve; ProtonGE is built by an independent maintainer and updated more frequently.

When should I use ProtonGE instead of Proton Experimental?

Use ProtonGE when a game has in-game video playback issues (colored bars or missing cutscenes), when a game refuses to launch under any official Proton version, when you want to use PROTON_FSR4_UPGRADE=1, PROTON_FSR3_UPGRADE=1, or PROTON_DLSS_UPGRADE=1, when you are running games outside of Steam via umu-launcher, or when ProtonDB reports that the community has better results with GE-Proton. GE-Proton also tends to ship Wine and DXVK updates faster than official Proton.

How do I install GE-Proton?

The easiest method is ProtonUp-Qt, available as a Flatpak from Flathub. Install it with flatpak install flathub net.davidotek.pupgui2, select Steam as the target, click Add version, choose GE-Proton, and install. Restart Steam or return to Gaming Mode on Steam Deck. GE-Proton can then be selected per-game from Properties > Compatibility. For manual installation on native Steam: mkdir -p ~/.steam/steam/compatibilitytools.d then tar -xf GE-Proton*.tar.gz -C ~/.steam/steam/compatibilitytools.d/. For Flatpak Steam the path is ~/.var/app/com.valvesoftware.Steam/data/Steam/compatibilitytools.d/. Each release includes a .sha512sum file -- verify before extracting with sha512sum -c GE-Proton*.sha512sum.

Should I set ProtonGE as the global default?

Generally no. Setting ProtonGE globally can break games that have been verified against a specific numbered Proton version. The recommended workflow is to start with the numbered stable Proton version for any given game, check ProtonDB if you encounter issues, and switch to ProtonGE only for titles that benefit from it. Game-specific overrides in Steam Properties let you do this without affecting other titles.

Does GE-Proton auto-update?

No. Unlike Proton Experimental, which updates silently through Steam, GE-Proton must be updated manually. When a new version is released, you open ProtonUp-Qt, add the new version, and optionally remove the old one. Games stay pinned to the GE-Proton version you assigned them until you change it explicitly. This is intentional -- it prevents surprise regressions from automatic updates -- but it means you are responsible for keeping up with new releases if you want the latest fixes.

Can I use GE-Proton for games outside of Steam?

Yes. GE-Proton includes umu-launcher integration, which is a unified launcher project that applies protonfixes to non-Steam games using each game's GOG or IGDB ID as the key. It is the standard recommendation for Windows games run through Heroic Games Launcher, Lutris, and similar front-ends on Linux. Official Proton Experimental does not support this use case out of the box.

Sources and References

Technical details in this guide are drawn from official documentation and verified sources.