Every "switch to Linux for gaming" article follows the same template: install Steam, enable Proton, done. It treats you like you cannot handle the truth about what is happening inside your machine. This guide does the opposite. It assumes you want to understand the machinery, not just push the buttons.
The honest answer to "can I game on Linux?" is this: yes, for a wide swath of your library, often at comparable or superior performance to Windows, but with specific, technically interesting reasons why some titles remain inaccessible. Understanding those reasons will make you a sharper thinker about operating systems, security, and software architecture --- and it will help you make a genuinely informed decision rather than a leap of faith.
Why the Landscape Changed --- and What the Numbers Say Now
The "year of the Linux desktop" has been a running joke for over two decades. But something has quietly and concretely changed. As of late 2025, approximately 80% of the top 100 most-played games on Steam run on Linux via Proton, according to ProtonDB community data reported by Tom's Hardware. Separately, data compiled by Boiling Steam from ProtonDB in October 2025 placed the overall Windows game compatibility figure at close to 90% of all titles tracked. That number would have been unimaginable five years ago, and the mechanism that produced it is worth understanding precisely. For a broader look at where things stand across the platform, see Gaming on Linux: A Practical State of the Union.
The Steam Hardware Survey tells a parallel story. Linux reached 3.20% of Steam's active user base in November 2025, a 57% year-over-year increase from 2.03% in November 2024. December 2025 recorded 3.58%, and January 2026 settled at 3.38%. February 2026 then showed an anomalous drop to 2.23% --- a figure Phoronix noted was almost certainly caused by a Simplified Chinese language skew in that month's survey sample, with Chinese-language Steam use spiking 30% month-over-month in February, heavily diluting the Linux share. The March 2026 survey then recorded 5.33%, the first time Linux has crossed the 5% threshold in Steam's survey history and an all-time high. Within the Linux segment for March, SteamOS Holo accounted for 24.48% of reported Linux systems, and AMD held a 67.48% CPU vendor share among Linux users --- unsurprising given that the Steam Deck runs AMD hardware. Analysts caution that the March 5.33% figure is likely itself a partial sampling artifact of the same geographic swings that distorted February, and that the true trend sits closer to 3.5-4% on a normalized basis --- still a historically high number and clearly on an upward trajectory. Each percentage point in the survey represents roughly 400,000 peak concurrent players at the service's scale, and game developers track these numbers closely.
Valve's decision to build the Steam Deck on a Linux foundation was not ideological. It was economic and strategic. Valve could not build a profitable handheld if it had to pay Microsoft a per-device Windows license fee, and it could not build a coherent software stack on a closed operating system it did not control. So Valve invested seriously --- not in advocacy but in engineering. The result is a compatibility infrastructure that now benefits every Linux desktop gamer as a side effect.
That infrastructure has a name: Proton.
Proton: What It Is, What It Is Not, and Why the Distinction Matters
Wine --- the foundational technology beneath Proton --- is famously "not an emulator," and the acronym is recursive on purpose. Its developers wanted to be precise: Wine does not run a virtualized copy of Windows. It does not simulate Windows hardware. It reimplements the Windows API on top of POSIX-compliant operating systems. When a Windows game calls CreateWindow() or LoadLibrary(), Wine intercepts that call and translates it into the Linux equivalent in real time.
Proton is a fork of Wine maintained by Valve Corporation and bundled directly into the Steam client. But calling it "just Wine" would be like calling a Formula 1 car "just a car." Proton generally has better compatibility than upstream Wine due to additional patches and components that Wine has not yet accepted. Those component names deserve unpacking.
~/.cache/mesa_shader_cache_db (1 GB cap by default, adjustable via MESA_SHADER_CACHE_MAX_SIZE).esync (Eventfd Synchronization)
Windows uses Event objects heavily for thread synchronization. The Wine implementation historically used Unix pipes and sockets for this, which incurred significant overhead because the Linux kernel has to wake up and schedule threads for each synchronization event. Esync replaces this with Linux's eventfd file descriptors, which are dramatically cheaper. A game with many simultaneous threads --- a modern AAA title, for instance --- can see measurable framerate improvements simply from this one change.
NTSYNC
The architectural successor to esync, and the most significant single improvement to Linux gaming performance in years. Where esync moved synchronization to eventfd file descriptors in user space, NTSYNC goes further: it moves Windows NT-style synchronization primitives --- mutexes, semaphores, events --- directly into the Linux kernel itself, eliminating the round-trip RPC calls to the Wine wineserver process that had been a performance ceiling for years.
The NTSYNC driver was merged into mainline Linux kernel 6.14, which shipped in March 2025. Wine 11.0, released January 13, 2026, added full NTSYNC support and auto-detects kernel 6.14+ at runtime --- no manual configuration required. On older kernels, Wine falls back gracefully to the prior wineserver model.
The performance implications are substantial in CPU-bound scenarios. NTSYNC's author described typical gains of 50-150% for most games in benchmarks accompanying the kernel patch series. In synthetic workloads heavily exercising thread synchronization, specific titles have shown far larger jumps: Dirt 3 went from 110 FPS to 860 FPS in one benchmark (678%), while Resident Evil 2 nearly tripled from 26 to 77 FPS. Real-world gains in most modern titles are more modest but measurable --- and the gains matter most in games with heavy multi-threaded workloads such as open-world titles and physics-intensive simulations.
XDA Developers noted that any distribution running kernel 6.14 or later --- including Fedora 42 and Ubuntu 25.04 --- gains NTSYNC support with no custom patches or out-of-tree modules required.
XDA Developers, covering NTSYNC and Wine 11, March 2026
NTSYNC creates a single char device at /dev/ntsync. Each process that opens it gets an isolated instance; multiple threads within the same process share one instance. The driver exposes three object types, each created via ioctl() calls: semaphores (a volatile 32-bit counter with a maximum), mutexes (recursive, owner-tracked, with explicit abandoned-mutex state when an owner dies), and events (boolean, with both auto-reset and manual-reset modes). The NTSYNC_IOC_WAIT_ANY and NTSYNC_IOC_WAIT_ALL ioctls implement the Windows NtWaitForMultipleObjects() semantics --- including the "wait for all" variant that atomically acquires every resource in a list. This particular operation, including NtPulseEvent() (an instantaneous set-and-reset that wakes exactly one waiter), is impossible to implement correctly on top of Linux futexes, which is precisely why NTSYNC required a dedicated kernel driver rather than an extension to the existing futex(2) API. The Linux kernel documentation for NTSYNC explicitly states it exists because user-space implementation cannot match Windows performance while offering accurate semantics. NTSYNC was initially merged as broken in Linux 6.10 in late 2024 while implementation work continued; it was completed and marked non-broken for Linux 6.14, the version that shipped in March 2025.
To verify NTSYNC is active, use lsof /dev/ntsync while a Wine or Proton game is running --- you should see the game's exe and wine-related processes listed with /dev/ntsync as an open file. An empty result means NTSYNC is not in use. Mainline Wine 11 provides no console log message confirming NTSYNC activation (the "NTSync up and running!" message that circulates online comes from unofficial patch builds, not from mainline Wine). If your kernel has the module but it is not loading automatically, load it once with sudo modprobe ntsync and make it persistent across reboots with echo ntsync | sudo tee /etc/modules-load.d/ntsync.conf. Confirm it loaded with lsmod | grep ntsync.
For Proton users: Proton 10 (released November 2025) is built on Wine 10 and does not yet include Wine 11's NTSYNC support. Proton-GE added NTSYNC support starting with GE-Proton 10-9. Valve will incorporate Wine 11 into a future Proton release.
DXVK
The translation layer that arguably did more for Linux gaming than anything else. DirectX 8, 9, 10, and 11 are Windows-proprietary graphics APIs that assume very specific Windows-internal driver interfaces. DXVK translates DirectX 8, 9, 10, and 11 calls into Vulkan API calls, significantly improving performance for DirectX-based games on Linux. Vulkan is a cross-platform, low-overhead graphics API. By translating DX calls into Vulkan, DXVK bypasses the need to reimplement Microsoft's graphics stack entirely. The translation is not lossless --- some edge cases require workarounds --- but in many workloads it is efficient enough that games run at parity or better with their Windows counterparts.
VKD3D-Proton
The same principle applied to DirectX 12, which is a substantially more complex API. VKD3D-Proton is not the official VKD3D project; it is a Valve-maintained fork with aggressive performance optimizations that upstream VKD3D has not yet incorporated. It implements the Microsoft Direct3D 12 APIs atop Vulkan for better Windows gaming on Linux.
Version 3.0, released November 17, 2025, was a landmark update. Developer Philip Rebohle (doitsujin, the author of DXVK) rewrote the entire DXBC shader backend, replacing the legacy vkd3d-shader path with a cleaner intermediate representation that DXVK now also shares. Because DXVK had already battle-tested the new DXBC frontend extensively before VKD3D-Proton 3.0 shipped, the regression rate in DXBC games was very minor. This shared frontend means the dxil-spirv standalone project now also supports DXBC, and improvements to one layer benefit the other directly. The rewrite fixed many previously broken games --- Red Dead Redemption 2 in DX12 mode became fully functional as a direct result.
The FSR4 implementation in 3.0 is worth understanding precisely: it works by supporting AGS WMMA intrinsics through two Vulkan extensions, VK_KHR_cooperative_matrix and VK_KHR_shader_float8. FSR4 shaders are tightly coded for AMD hardware with implementation-defined behavior around matrix layouts, which means they do not work on other GPU vendors using the native path. An emulation path exists for older AMD GPUs using int8 and float16 cooperative matrix support, but it carries a significant performance cost and is not included in the default Proton build --- it requires building VKD3D-Proton from source with the appropriate flags. The official release notes are explicit: the default build only exposes FSR4 when native VK_KHR_shader_float8 is supported, which currently means RDNA4+ only. The plan is to ship FSR4 support in a more robust way in a future Proton release.
Version 3.0 also added: AMD Anti-Lag support via AMD_anti_lag when exposed by the driver; experimental D3D12 work graph support; tight alignment from the recent AgilitySDK; a bump to DGC (Device Generated Commands) scratch size on NVIDIA specifically to fix massive performance drops in Halo Infinite on NVIDIA hardware; and a performance optimization for The Last of Us Part 1 to prefer 2D tiling on 3D images (which also required a Mesa update for the full effect). A 3.0b bugfix release followed in December 2025, addressing frame synchronization edge cases and a shader workaround for Wuthering Waves.
The VKD3D-Proton 3.0 release notes confirm that certain recently released DXBC-based games run only on the new backend path, meaning the rewrite expanded compatibility beyond fixing previously broken titles.
VKD3D-Proton 3.0 release notes, HansKristian-Work/vkd3d-proton, November 2025
When you launch a game through Steam on Linux, this entire translation stack fires up transparently: your DX12 calls become Vulkan calls via VKD3D-Proton, your Windows thread synchronization becomes Linux kernel objects via NTSYNC (on kernel 6.14+), and your Windows filesystem paths get mapped through Wine's virtual file system. All of this happens in microseconds, per frame. Proton 10 (November 2025) ships on Wine 10 with VKD3D-Proton 2.14.1. The upstream VKD3D-Proton 3.0b release is the current standalone version; Valve will incorporate it into a future Proton release. Wine 11.0 (January 2026) adds full NTSYNC support; a future Proton release will incorporate it. Proton-GE already includes both NTSYNC and the newer VKD3D-Proton builds for users who want them now.
Syscall User Dispatch (Wine 11.5)
Wine 11.5, released March 20, 2026, introduced a capability that has been on the community's wishlist for years: Syscall User Dispatch (SUD) support in NTDLL. This addresses a category of Windows game crash that had resisted every previous compatibility approach.
Some Windows software --- including certain game engines and copy-protection layers --- skips the Windows DLL layer entirely and issues raw NT system calls by instruction number. On real Windows hardware, those instructions hit the NT kernel and succeed. On Linux, the same instruction hits the Linux kernel, which uses a completely different system call numbering scheme. The result is an immediate crash or silent data corruption.
Proton worked around this for years using seccomp-bpf filters to intercept the rogue syscalls and redirect them. The workaround functioned, but seccomp is a blunt instrument: it cannot be removed once installed in a process, it applies per-process rather than per-thread, and every syscall in the process carries overhead even if only a fraction need interception. Wine 11.5's SUD implementation moves this to the kernel-level Syscall User Dispatch mechanism introduced in Linux 5.11, which provides fine-grained, per-thread control and eliminates the overhead on the fast path. Red Dead Redemption 2 and Detroit: Become Human, which previously required the seccomp workaround, now run correctly in mainline Wine without any patches.
SUD is configured per-thread via prctl(PR_SET_SYSCALL_USER_DISPATCH, PR_SYS_DISPATCH_ON, ...). Once active, the kernel intercepts system calls and delivers a SIGSYS signal to a registered handler in Wine whenever the game issues an unrecognized NT syscall number. Wine's handler catches the signal, emulates the Windows system call in user space by modifying the register context in the ucontext_t argument, then returns. The kernel then completes the intercepted call with the value Wine set, without ever executing the original syscall. Two performance-critical design choices make this fast: a single-byte selector variable in userspace memory can flip interception on or off without a kernel round-trip (set to SYSCALL_DISPATCH_FILTER_ALLOW or SYSCALL_DISPATCH_FILTER_BLOCK), and an excluded memory range is defined at setup time from which syscalls always execute directly regardless of the selector (this covers the C library and signal trampoline, preventing a recursive SIGSYS during signal return). The Linux kernel documentation for SUD was written explicitly for Wine's use case, and notes that raw Windows NT syscalls are infrequent in modern gaming, so the per-signal overhead is not a practical bottleneck. The previous seccomp-bpf approach had no equivalent fast path: it applied to every syscall in the process, and once installed, seccomp filters are permanent.
If you have been running RDR2 or Detroit: Become Human via Proton-GE specifically to get the syscall workaround, Wine 11.5 means mainline Wine now handles this correctly. Once Valve rebases Proton on Wine 11, official Proton will handle it too. Check your Proton version via the game's Properties > Compatibility tab and switch to official Proton when the Wine 11 rebase lands.
The Kernel: Where Linux Gaming Lives or Dies
Everything described above runs in user space. But the real story of Linux gaming performance is often in the kernel itself, specifically in how the scheduler allocates CPU time and how the memory subsystem handles the access patterns of a demanding game.
Standard Linux kernels are optimized for throughput and fairness across many processes. A web server, a compilation job, a desktop compositor, and a game all run on the same scheduler. For gaming, you often want the opposite of fairness: you want the game's threads to run with minimal latency, even if that means other processes wait longer. This is why gaming-focused distributions ship customized kernels.
The Zen Kernel is developed by a team including Arch Linux maintainers and patches the scheduler to prefer lower latency. It reduces timer resolution and applies patches that keep interactive tasks snappy even under CPU load. CachyOS and Garuda Linux both ship Zen-variant kernels by default.
The BORE Scheduler (Burst-Oriented Response Enhancer) ships in CachyOS and modifies the Completely Fair Scheduler (CFS) to give CPU-intensive bursts higher priority. Games regularly produce burst workloads --- physics simulations, AI pathfinding, asset streaming --- that benefit from a scheduler that recognizes and prioritizes these patterns.
FUTEX2 and Low-Latency Mutex Operations: The futex (fast userspace mutex) is the fundamental primitive that most synchronization in Linux user space ultimately relies on. Patches improving futex performance show up directly in Wine/Proton benchmark numbers.
Proton-GE: The Community's Answer to Valve's Caution
Valve maintains Proton conservatively. They ship only what has been tested, and they move deliberately because a regression in Proton can break millions of Steam Deck owners' experience overnight. Proton-GE is a community-built Proton version maintained by GloriousEggroll that often includes patches for better performance and compatibility before they reach the official release.
Proton-GE frequently incorporates Wine patches awaiting upstream acceptance, DXVK and VKD3D-Proton builds ahead of what Valve has shipped, media codec support (FFmpeg patches for cutscene video playback that official Proton omits for licensing reasons), and game-specific workarounds patched in faster than Valve's release cadence allows. As of late 2025, GE-Proton 10-x (the 10.x series based on Wine 10) includes NTSYNC support. GE-Proton 10-9 required the manual launch option PROTON_USE_NTSYNC=1 to enable it; starting with GE-Proton 10-10, NTSYNC is enabled automatically on kernels that support it --- no launch option required. Verify it is active with lsof /dev/ntsync while the game is running.
The tool ProtonUp-Qt gives you a graphical interface to install and manage Proton-GE and other Proton forks alongside the official releases. You can then select which Proton version a specific game uses from Steam's per-game Properties menu under the Compatibility tab. Each game's Wine prefix (its virtual Windows C: drive) is isolated, so problems in one game's compatibility layer cannot bleed into another's.
The WoW64 Architecture Change and What It Means for 32-Bit Games
Wine 11.0 completed a multi-year architectural effort called the new WoW64 mode. Understanding what this means is important if you have older games in your library.
Traditionally, running a 32-bit Windows game on a 64-bit Linux system with Wine required a separate set of 32-bit system libraries (the lib32-* packages in Arch Linux, or :i386 packages in Debian-based systems). This is what the "multilib" repository provides on Arch. Wine's new WoW64 mode --- "Windows-on-Windows 64-bit," mirroring a Windows subsystem of the same name --- replaces this model: a single 64-bit Wine binary handles both 64-bit and 32-bit Windows applications by thunking 32-bit code into 64-bit Wine internals, with no 32-bit system libraries required on the host. Arch Linux switched to pure WoW64 Wine builds in June 2025 (starting with Wine 10.8-2), eliminating the multilib dependency for Wine entirely.
There are two practical caveats worth knowing. First, any existing 32-bit Wine prefix (a Wine environment created with WINEARCH=win32) will stop working after the WoW64 transition and must be recreated as a 64-bit prefix. The 32-bit application can then be installed into the new 64-bit prefix; the thunking layer handles the bitness mismatch transparently. Second, 32-bit Windows applications that call OpenGL directly (not through DXVK) see a performance regression in new WoW64 mode, because the OpenGL thunking path is not yet as optimized as the fully compiled 32-bit path was. This affects a specific class of older OpenGL games; DXVK-translated games are unaffected. If you run old OpenGL games that appear slower after a Wine or distro upgrade, this is the likely cause. The AUR provides a wine32 package for users who specifically need the old multilib build for these cases.
Proton uses its own internal Wine build and manages 32-bit compatibility independently of the system Wine. Steam games running via Proton are not affected by Arch Linux's transition to WoW64 system Wine. The WoW64 change affects only users running Wine directly (via Lutris, Bottles, or the command line), not Steam/Proton users.
The Anti-Cheat Problem: A Technical and Political Story
Kernel-level anti-cheat software represents the single largest category of games that will not work on Linux, and understanding why requires understanding what kernel-level access actually means.
When software runs in kernel space (Ring 0), it has unrestricted access to all system memory, all hardware interfaces, and the ability to intercept any system call. Anti-cheat systems like Riot's Vanguard, Activision's Ricochet, and EA's AntiCheat use this access to look for memory modifications, hooking of game functions, and the signatures of known cheat tools. BattlEye can scan in both user mode and kernel mode, giving it access to low-level system activity that can be used to detect cheats that try to hide their presence.
The complication for Linux is structural, not technical. Proton creates a Windows environment inside Linux. A kernel-level anti-cheat needs to load a Windows kernel driver, but Linux does not have Windows kernel driver infrastructure. The anti-cheat would need to be ported to run as a Linux kernel module, which requires genuine engineering investment from the anti-cheat vendor.
Both BattlEye and Easy Anti-Cheat have stated support for Proton. BattlEye supports Valve's Proton compatibility layer and is usable on the Steam Deck if the game developer opts in. The "opt-in" detail is the crucial one. The anti-cheat vendor has done the work, but each individual game developer must flip a switch to enable Linux/Proton support for their specific title. Many simply have not. Some have deliberately chosen not to.
The GTA Online situation illustrates this starkly. Rockstar Games implemented a more invasive BattlEye integration in a September 2024 update that retroactively broke Steam Deck compatibility. BattlEye compatibility can be enabled by an email to the BattlEye developers, yet Rockstar deliberately chose not to take these minimal steps.
The situation goes deeper than convenience. Riot Games' Vanguard loads at system startup --- before you even launch the game --- and remains resident in kernel memory continuously. This design is fundamentally incompatible with Linux's security model, where a commercial anti-cheat vendor cannot reasonably be given persistent kernel access to an open-source kernel whose interface may change with any update.
There is a principled security argument worth examining carefully. A kernel-mode driver from a proprietary game publisher is, technically, a rootkit by architecture, even if by legitimate intent. Kernel-level anti-cheats are de facto rootkits by design --- and the privacy implications on any platform are worth scrutinizing. On Linux, no game can load an arbitrary kernel module without explicit administrator consent, making the attack surface smaller by default.
The practical consequence: Valorant, League of Legends (since Vanguard integration), and similar titles cannot run on Linux. This is not a solvable technical problem with a compatibility layer --- it is a business and security boundary.
| Game / Title | Anti-Cheat | Linux Status | Why |
|---|
► Click any row to expand the technical reason
Choosing Your Distro: Architecture, Not Branding
The common advice is to "just try Bazzite" or "Pop!_OS is beginner-friendly." This is not wrong, but it obscures a more interesting architectural question: what kind of system model do you want to live in?
| Distribution | Base | Model | Best For |
|---|---|---|---|
| Bazzite | Fedora Atomic | Immutable, atomic updates | Stability-first, dual-boot users |
| Nobara | Fedora (mutable) | Gaming-patched, rolling packages | Out-of-the-box gaming with latest drivers |
| CachyOS | Arch | Performance-tuned kernel, x86-64-v3 packages | Maximum optimization, enthusiast users |
| Pop!_OS | Ubuntu LTS | Stable, long-term support | Nvidia users, stability over cutting-edge |
The honest answer about distro performance differences from a pure gaming benchmark standpoint: FPS numbers and frame timing are all within margin of error between distros on the same hardware. What differs is scheduling latency, frame pacing, and the friction required to get gaming-relevant software configured. The scheduler and kernel patches in Nobara and CachyOS can produce tangibly smoother frame pacing --- especially at high refresh rates --- without necessarily increasing raw FPS.
Lutris and the Non-Steam Library Problem
Steam's Proton integration is seamless, but it only covers your Steam library. Millions of gamers also have libraries on Epic Games Store, GOG, Battle.net, and Ubisoft Connect. Lutris is the answer.
Lutris is a gaming client and installer framework that wraps Wine/Proton configurations into shareable installation scripts. The community maintains a database of Wine runners, DXVK versions, and per-game configuration scripts, so installing a game from GOG often means clicking "Install" on a pre-configured script rather than manually configuring a Wine prefix. The Heroic Games Launcher provides a more native GOG/Epic experience built on Electron and Legendary (a command-line Epic Games client), and it integrates with Proton directly.
The conceptual model Lutris introduces is worth understanding: a "wine bottle" is an isolated Windows environment with its own C: drive, Windows registry, and DLL configuration. When you install a game through Lutris, it creates a dedicated bottle for that game. Bugs in one game's Wine configuration --- a DLL override, a registry entry --- are contained within that bottle. This is why "just use a fresh prefix" is standard troubleshooting advice.
GPU Drivers: The Nvidia/AMD Divide That Shapes Your Experience
The GPU driver situation on Linux is asymmetric and politically interesting.
AMD's graphics driver stack is almost entirely open source. The amdgpu kernel driver and the Mesa userspace libraries are developed in public, with AMD engineers contributing directly alongside community developers. This means that when a new AMD GPU ships, support lands in the mainline Linux kernel relatively quickly. The Vulkan implementation for AMD, RADV, is Mesa-maintained and in many workloads outperforms AMD's own proprietary Vulkan driver (AMDVLK). For a Linux gamer, AMD hardware is the path of least friction.
Nvidia's driver situation is the opposite. For decades, Nvidia shipped only a proprietary binary blob driver for Linux --- functional, but a black box that community developers could not inspect, patch, or optimize. Every system update carries the risk that a kernel ABI change will break the proprietary module. The akmods or dkms system automatically rebuilds the module when the kernel updates, which works most of the time but occasionally does not.
Nvidia's announcement of open-source kernel modules (released under MIT/GPLv2 dual license in 2022 and progressively developed since) changes this picture but has not yet equalized it. As of 2025, the open kernel modules are production-quality for Turing (RTX 20xx) and later architectures, but the actual rendering path --- the userspace OpenGL and Vulkan implementations --- remains proprietary. If you have an Nvidia GPU, Nobara and Pop!_OS's Nvidia-specific ISOs remove significant configuration friction.
Display Protocols: X11 vs Wayland and Why It Matters for Gaming
X11 historically allowed screen tearing to occur, which some gamers prefer (it reduces latency versus vsync), but it also meant that compositors had to work around X11's fundamental design to implement VSync and adaptive sync properly. Variable Refresh Rate (VRR/FreeSync/G-Sync) support under X11 is incomplete and fragile.
Wayland was designed with compositors as first-class citizens. VRR support under KDE Plasma on Wayland is substantially more reliable than under X11. HDR support --- increasingly relevant for gaming --- exists in Wayland compositors but is essentially unavailable under X11.
Wine 11.0 (January 2026) brought the most substantial Wayland gaming improvements yet. Clipboard support now works bidirectionally between Wine and native Wayland applications. Drag-and-drop from Wayland apps into Wine windows is supported. Display mode changes are now emulated through compositor scaling, which means older games that force resolution switches (a common issue with DirectX 9-era titles expecting to own the display at 640x480) behave correctly instead of producing a broken desktop state. Exclusive fullscreen mode is now supported, and EGL is now the default backend for OpenGL rendering on X11, replacing the older GLX path --- meaning fixes to the Wayland path benefit X11 users as well.
The tradeoff: Wine's Wayland support, while now mature for many workloads after Wine 11, is not yet universal. Some games run better under XWayland (an X11 compatibility layer that runs inside a Wayland session) than under native Wayland mode. Checking ProtonDB reports for your specific titles will tell you whether Wayland or XWayland is recommended. If you have been holding off on switching your compositor to Wayland because of Wine compatibility concerns, Wine 11 removes a large portion of those barriers.
ProtonDB: Crowdsourced Intelligence as a Technical Resource
ProtonDB is one of the most practically useful tools in the Linux gaming ecosystem. It collects and displays crowdsourced compatibility data on a rating scale from "Borked" (doesn't work at all) to "Platinum" (works perfectly out of the box with no configuration).
The intermediate ratings carry specific meaning. "Gold" means the game works well but requires minor tweaks --- often a launch option or a specific Proton version. "Silver" means more significant workarounds are needed. "Bronze" means it runs but with major issues. The individual reports are more valuable than the aggregate rating. A single detailed report describing the exact environment (GPU, distro, Proton version, kernel) and the specific tweak applied is often the difference between a game working and not.
Common Proton launch options you should understand mechanically. Note that DXVK_ASYNC=1 — once widely cited in older guides — is not a mainline DXVK variable and does nothing in Proton 9+ (which ships DXVK 2.x with GPL-based shader compilation). The dxvk-async patch project was archived in November 2025. If you see it recommended on ProtonDB, it is outdated. The options below are current and verified against the Proton GitHub README and official tooling documentation:
# Force Wine's software DirectX (wined3d) instead of DXVK for d3d8/9/10/11 # Falls back to OpenGL -- slower, but fixes crashes where DXVK has a driver bug PROTON_USE_WINED3D=1 %command% # Enable Proton-GE's NTSYNC support (kernel 6.14+ required; /dev/ntsync must exist) # Not needed for official Wine 11+ or once Valve rebases Proton on Wine 11 PROTON_USE_NTSYNC=1 %command% # Activate MangoHUD overlay (FPS, CPU/GPU usage, VRAM, frame time) MANGOHUD=1 %command% # Invoke GameMode -- adjusts CPU governor and IO priority for this session # gamemoderun is a wrapper command, not an env var; it must come before %command% gamemoderun %command% # Generate a Proton debug log at ~/steam-$APPID.log -- essential for bug reports PROTON_LOG=1 %command%
The Shader Compilation Stutter Problem and What Is Being Done About It
One of the most noticeable performance differences between Windows and Linux is shader compilation stutter. When a game encounters a new shader --- a new rendering path, a new effect --- it must compile that shader for the GPU. On first play, stutters occur; on subsequent plays, compiled shaders are reused.
Valve's Steam Deck and Steam Linux distribution infrastructure addresses this with pre-compiled shader caches. When Valve identifies a game as Steam Deck verified, they run it in their testing pipeline, generate a shader cache, and ship that cache to users automatically. On first launch, the game downloads this pre-built cache, dramatically reducing first-session stutter.
Mesa, the open-source OpenGL and Vulkan driver stack used by AMD hardware, implements its own shader cache. As of Mesa 24.2 the default cache format changed from a flat directory at ~/.cache/mesa_shader_cache to a multi-part database at ~/.cache/mesa_shader_cache_db, consisting of 50 subdirectories (part0 through part49), each containing a mesa_cache.db and an index. The default maximum size for this cache is 1 GB; it can be adjusted with the MESA_SHADER_CACHE_MAX_SIZE environment variable (e.g. MESA_SHADER_CACHE_MAX_SIZE=2G). Critically, a separate cache instance is created for each architecture: on a 64-bit system with 32-bit multilib, you may accumulate a 1 GB x86_64 cache and a separate 1 GB i386 cache. Additionally, each Proton game prefix stores its own Mesa cache inside the prefix directory at ~/.local/share/Steam/steamapps/compatdata/<appid>/pfx/mesa_shader_cache_sf (using the single-file Fossilize format that Steam uses for per-game caching). After a Mesa upgrade, all existing on-disk caches are silently invalidated and rebuilt from scratch on next play --- this is the real cause of severe first-session stutter after a driver update, and it is separate from the Steam cloud shader cache Valve downloads for Deck-verified games. If you are troubleshooting post-upgrade stutter, running find ~/.local/share/Steam/steamapps/compatdata -name 'mesa_shader_cache*' -exec rm -rf '{}' + forces a clean rebuild rather than letting stale invalidated entries persist.
Filesystem Considerations: NTFS and the Hidden Performance Traps
If you are dual-booting, you may be tempted to store your Steam library on an NTFS partition that both Windows and Linux can access. This is technically possible but architecturally problematic.
Wine creates hundreds of thousands of small files in the Wine prefix directories. NTFS, as implemented by the Linux ntfs3 kernel driver, handles small file operations less efficiently than ext4 or btrfs. Worse, Wine requires case-insensitive filesystem behavior (Windows is case-insensitive; Linux filesystems are case-sensitive by default), which NTFS provides but with overhead.
Btrfs with transparent compression is an increasingly popular choice for Linux gaming installations. The zstd compression algorithm can reduce game installation sizes significantly (often 10-20% for many titles) while actually improving read performance on fast NVMe drives, because the CPU decompresses data faster than the storage device can read it uncompressed. Btrfs also supports subvolumes and snapshots, allowing you to snapshot your system state before a major update.
The Wider Security Case for Linux Gaming
There is a dimension of the switch-to-Linux conversation that gaming guides rarely address seriously: you are changing your threat model.
Windows is the dominant target for malware for obvious reasons --- market share means more reward for attackers. But there is a specific, gaming-relevant threat that the Linux model handles better. Kernel-level anti-cheat software on Windows has been implicated in security vulnerabilities multiple times. A poorly written kernel driver from a game publisher runs at Ring 0 with no additional sandboxing, and if it has a vulnerability, an attacker can use the game installation process as a privilege escalation vector. This has occurred in practice: malware has leveraged legitimate anti-cheat kernel drivers to achieve elevated access.
The Linux model makes this attack surface smaller by default. No game on Linux can load an arbitrary kernel module without explicit administrator consent. Wine and Proton run entirely in user space, with no more privilege than any other application. The worst a buggy or malicious game on Linux can do is damage your user account, not your system.
The "security" features of kernel-level anti-cheat on Windows require you to grant game publishers the highest level of system access in exchange for a reduction in cheating. On Linux, you get a more constrained execution environment without having to make that tradeoff --- and you lose access to the games that require it. Whether that tradeoff is worth it depends on which games matter to you.
How to Switch from Windows to Linux for Gaming
Step 1: Install a gaming-focused distribution alongside Windows
Start with a dual-boot setup. This lets you test your game library without commitment, and it means you have a fallback for the anti-cheat titles you are not ready to give up. Choose Bazzite for minimal configuration overhead; Nobara for Fedora's cutting-edge packages; CachyOS for maximum performance if you are comfortable with Arch Linux's model.
Step 2: Audit your library on ProtonDB before migrating
On ProtonDB, go through your library before you migrate. Sort by "Borked" and "Unknown" to understand what you are giving up. For everything else, note the recommended Proton version and any required launch options. If your library is NTFS, consider migrating games to a Linux-native partition over time. Add your Steam library drive and configure Steam to use it.
Step 3: Install MangoHUD and compare performance across platforms
Install MangoHUD and run it for a week. Compare FPS and frame timing between Windows and Linux for titles you care about using MANGOHUD=1 %command% as a Steam launch option. Some games will run better on Linux immediately. Some will need configuration. A handful will run worse.
Step 4: Set up Lutris and Heroic for your non-Steam libraries
Set up Lutris and Heroic for your non-Steam libraries. Configure Proton-GE through ProtonUp-Qt as your default runner in Lutris. Give the system sixty days before deciding. The knowledge curve is real, but it is not vertical. By day sixty, you will understand your specific hardware and library's Linux behavior well enough to make an informed judgment.
What the Future Looks Like
Wine 11.0 shipped January 13, 2026, with NTSYNC support (using the kernel 6.14 driver), a completed WoW64 architecture that handles 16-bit, 32-bit, and 64-bit Windows binaries from a single loader, bidirectional Wayland clipboard, exclusive fullscreen mode, Vulkan 1.4 API support, hardware H.264 decoding via D3D11 over Vulkan Video, and significantly improved joystick and gamepad support including force feedback. Wine has continued advancing rapidly: Wine 11.5 (March 20, 2026) added Syscall User Dispatch support in NTDLL, which handles Windows games that issue raw NT syscalls directly rather than through DLL wrappers --- games like Red Dead Redemption 2 and Detroit: Become Human that previously required workarounds now work in mainline Wine without any patches. Wine 11.6 (April 3, 2026) delivered two significant changes for gamers: it improved DLL load order heuristics so that Wine now automatically uses a non-Microsoft DLL (such as a mod's custom DLL) over its own built-in version, removing the need for manual WINEDLLOVERRIDES in many modded games; and it fixed game-specific crashes including a Cyberpunk 2077 crash caused by ICU DLL loading and a Diablo IV bug that blocked access to the in-game shop menu. Wine 11.6 also revived the Android driver codebase with modernized build system support, which is foundational work for a potential future Wine-on-Android capability. Proton is currently built on Wine 10; Valve will rebase Proton onto Wine 11 in a future release, bringing every downstream Steam and Steam Deck user the NTSYNC, Syscall User Dispatch, Wayland, and mod improvements.
On the kernel side, Linux 7.0 releases today, April 12, 2026, following release candidate 7 which shipped on April 5. Linus Torvalds announced the version number jump from 6.19 to 7.0 in February 2026, citing his preference for keeping version numbers countable on fingers and toes. The version number change carries no architectural significance --- Linux promises stable interfaces across major versions --- but Linux 7.0 does include meaningful gaming-relevant changes: driver updates for Intel Nova Lake and AMD Zen 6 hardware, Rust memory-safety improvements, and broader VRR support at the platform level. For gaming purposes, Linux 6.14 (which shipped the NTSYNC driver) remains the minimum kernel version worth targeting; Linux 7.0 is what you will receive from rolling-release distributions like Arch and openSUSE Tumbleweed in April and May 2026.
VKD3D-Proton 3.0 (November 2025) closed a substantial gap in DirectX 12 compatibility and performance. Red Dead Redemption 2 in DX12 mode, previously problematic, now runs properly. FSR4 is available on RDNA4 hardware. The DXBC shader backend rewrite means both DXVK and VKD3D-Proton now share a common frontend, which accelerates development on both simultaneously.
The trajectory is consistent and steep. NTSYNC kernel integration improves Wine thread synchronization in ways that compound with each generation of multi-threaded game engine. HDR gaming under Wayland compositors is becoming practical. AMD's open-source driver stack benefits from every Mesa contributor's work globally, compounding with each release cycle. The mod-compatibility improvement in Wine 11.6 is particularly practical: games that use BepInEx (a popular modding framework) can now launch with mods active without manual DLL override configuration in many cases.
GamingOnLinux called this change an exciting improvement for game modding, noting that Wine now prioritizes non-Microsoft DLLs automatically so that mods no longer require manual override configuration in many cases.
GamingOnLinux, covering Wine 11.6, April 2026
The anti-cheat situation is less linear. It will not resolve through technology alone --- it requires game publishers to make business decisions about whether Linux market share justifies engineering investment. The Steam Deck's commercial success has moved that needle for some publishers. The Windows 10 end-of-life date (October 14, 2025) pushed additional users toward Linux, which increases the commercial argument. But for competitive multiplayer games with aggressive kernel-level anti-cheat, the barrier remains political and commercial rather than technical.
Frequently Asked Questions
How does Proton allow Windows games to run on Linux?
Proton is a Valve-maintained fork of Wine that reimplements the Windows API on Linux. When a game calls DirectX or other Windows-specific functions, Proton intercepts those calls and translates them in real time using components like DXVK (DirectX 9/10/11 to Vulkan) and VKD3D-Proton (DirectX 12 to Vulkan). Thread synchronization is handled by esync, fsync, or NTSYNC (kernel 6.14+) rather than emulation, keeping overhead low.
Why do some games still not work on Linux even with Proton?
The main barrier is kernel-level anti-cheat software. Anti-cheat systems like Riot Vanguard load Windows kernel drivers that Linux cannot run. Even when vendors like BattlEye and Easy Anti-Cheat have built Proton support, individual game developers must opt in. Some publishers, like Rockstar with GTA Online, have deliberately chosen not to enable it.
Which Linux distribution is best for gaming?
It depends on your priorities. Bazzite offers an immutable, stable base ideal for users who want their machine to just work. Nobara ships a Fedora-based system with gaming patches, codecs, and tools pre-installed. CachyOS provides the most aggressive performance tuning with custom kernels and x86-64-v3 compiled packages. Pop!_OS is a strong choice for Nvidia users thanks to its dedicated Nvidia ISO.
Is gaming on Linux faster or slower than Windows?
Performance varies by game and hardware. Many titles run at comparable or better FPS on Linux versus Windows, especially on AMD hardware with the open-source RADV driver. The bigger differences show up in frame pacing and scheduling latency rather than raw FPS. Gaming-focused distros like Nobara and CachyOS with patched kernels can produce tangibly smoother frame timing. First-session shader compilation stutter is a known issue that improves with subsequent play.
What is NTSYNC and does it require special configuration?
NTSYNC is a Linux kernel driver, merged into mainline Linux 6.14 (March 2025), that implements Windows NT synchronization primitives directly in the kernel. This eliminates the wineserver RPC overhead that previously bottlenecked multi-threaded games. Wine 11.0 (January 2026) added full NTSYNC support and auto-detects the driver on kernel 6.14+ --- no manual configuration needed. On older kernels, Wine falls back to the prior model. For Proton users, Proton-GE already includes NTSYNC; official Proton will incorporate it in a future release based on Wine 11.
What did VKD3D-Proton 3.0 change for DX12 gaming on Linux?
VKD3D-Proton 3.0 (November 17, 2025, with a 3.0b bugfix release in December 2025) rewrote the entire DXBC shader backend, fixing many previously broken DirectX 12 games including Red Dead Redemption 2 in DX12 mode. It added AMD FSR4 support for RDNA4+ GPUs (natively via Vulkan cooperative matrix; an emulation path exists for older AMD hardware but must be built from source), AMD Anti-Lag support, experimental D3D12 work graph support, and a batching logic rewrite that improved performance broadly. DXVK and VKD3D-Proton now share the same DXBC frontend, meaning improvements in one benefit the other directly.
What did Wine 11.5 add for Linux gaming?
Wine 11.5 (March 20, 2026) added Syscall User Dispatch support in NTDLL. Some Windows games bypass the DLL layer and issue raw NT system calls by number; on Linux this previously caused immediate crashes, and Proton worked around it with seccomp-bpf filters. Wine 11.5 implements the cleaner kernel-level SUD mechanism (available since Linux 5.11), providing per-thread control with lower overhead. Games like Red Dead Redemption 2 and Detroit: Become Human that depended on direct syscalls now work in mainline Wine without any patches. Once Valve rebases Proton on Wine 11, these fixes will reach all Steam and Steam Deck users automatically.
What happened to Linux's Steam market share?
Linux reached 3.20% of Steam's active user base in November 2025, a year-over-year increase of 57%, and the upward trend has continued. December 2025 recorded 3.58%, January 2026 settled at 3.38%, and February 2026 dropped anomalously to 2.23% due to a Simplified Chinese language sampling spike that month. The March 2026 Steam Hardware Survey then showed Linux at 5.33% --- the first time it has crossed 5% in the survey's history and an all-time high, though analysts note the sharp swing from February's 2.23% to March's 5.33% reflects the same geographic sampling variance running in the opposite direction. The normalized trend across the November 2025 to March 2026 window places Linux in the 3.5-4% range. SteamOS Holo (the Steam Deck's operating system) accounts for roughly 24% of the Linux survey segment. The growth is driven by Steam Deck adoption, continued Proton compatibility improvements, and a wave of users migrating from Windows 10 following its October 2025 end-of-support date.
Sources and References
Technical details in this article are drawn from official documentation and verified sources.
- Proton GitHub Repository -- architecture, component list, release notes. Proton 10 is based on Wine 10 with DXVK 2.6.2, VKD3D-Proton 2.14.1, and dxvk-nvapi 0.9.0-10.
- VKD3D-Proton GitHub Releases -- VKD3D-Proton 3.0 (November 17, 2025): DXBC backend rewrite, FSR4 support, Anti-Lag, RDR2 DX12 fix.
- Wine 11.0 Release Notes -- Wine 11.0 (January 13, 2026): NTSYNC support, WoW64 completion, Wayland clipboard and exclusive fullscreen, Vulkan 1.4, H.264 hardware decode.
- Wine 11.5 Release Notes -- Wine 11.5 (March 20, 2026): Syscall User Dispatch support in NTDLL, fixing direct-syscall games including Red Dead Redemption 2 and Detroit: Become Human in mainline Wine.
- Wine 11.6 Release Notes -- Wine 11.6 (April 3, 2026): DLL load order heuristics for mod support (non-Microsoft DLLs now preferred automatically), Cyberpunk 2077 ICU DLL crash fix, Diablo IV shop menu fix, Android driver revival with modernized build system.
- Linux Kernel NTSYNC Documentation -- official kernel docs for the NTSYNC driver API, merged in Linux 6.14.
- ProtonDB -- compatibility ratings, community reports, launch option examples.
- Phoronix -- Linux gaming benchmarks and driver news, including NTSYNC kernel merge coverage, VKD3D-Proton 3.0 coverage, and Steam Survey monthly analysis.
- Phoronix: Steam Survey February 2026 -- February 2026 Linux share dropped to 2.23% due to Simplified Chinese language skew in that month's survey sample.
- GamingOnLinux: Linux crosses 5% in March 2026 Steam Survey -- March 2026 Linux share at 5.33%, all-time high; SteamOS Holo at 24.48% of Linux segment; analysis of sampling variance.
- BattlEye Official FAQ -- anti-cheat architecture and Proton opt-in details.
- Wine Project Release Notes -- Wine 10, 11.0, 11.5, and 11.6 feature documentation.
- Steam Hardware and Software Survey -- Linux market share data: 3.20% November 2025, 3.58% December 2025, 3.38% January 2026, 2.23% February 2026 (anomalous Chinese-language skew), 5.33% March 2026 (all-time high).
- Linux Kernel Syscall User Dispatch Documentation -- official kernel docs for the SUD mechanism used by Wine 11.5, including the SIGSYS signal delivery model, single-byte selector fast path, and excluded memory region design.
- Mesa Environment Variables Documentation -- MESA_SHADER_CACHE_MAX_SIZE (default 1 GB), MESA_SHADER_CACHE_DIR, MESA_DISK_CACHE_SINGLE_FILE, and multi-architecture cache behavior.
- Arch Linux WoW64 Wine Transition Announcement (June 2025) -- transition to pure WoW64 Wine builds, elimination of multilib dependency, and caveats for 32-bit prefixes and OpenGL performance.
- Arch Linux Wiki: Gaming -- kernel options, GPU driver configuration, performance tuning.