Valve does what FromSoftware don’t, thanks to Steam Deck’s precaching update
While Elden Ring's recent launch has been a massive critical and commercial success, it continues developer FromSoftware's streak of leaving players in a technical lurch. Even on the newest Xbox and PlayStation consoles or the highest-end PCs, Elden Ring still manages to turn in a somewhat unsteady performance for various reasons.
In the case of one unoptimized aspect of the game's PC version, someone outside FromSoftware has swooped in to save the day. Usually, this kind of PC gaming story comes thanks to enterprising modders from the gaming community at large. In Elden Ring's case, however, the fix comes courtesy of an unlikely source: Valve, the massive company that runs the Steam storefront.
And Valve's fix, so far, only works on Steam Deck.
Compiling more stutter than shaders
Shortly after Elden Ring's launch last month, Digital Foundry correspondent Alex Battaglia delivered a comprehensive look at Elden Ring's PC version and found that, no matter what PC he tested with, Elden Ring exhibited frequent, erratic frame-rate stuttering. Even his highest-end PC (Intel Core i9 10900K, RTX 3090), running the game at a paltry 720p resolution with all settings at their lowest, suffered from the same stuttering.
How is that happening on a thousands-of-dollars PC? As Battaglia says, Elden Ring exclusively runs on Windows 10's DirectX 12 API, which "takes... the responsibility of the game's memory management threading away from the driver." As his team at Digital Foundry has comprehensively shown in the past, a game that has not been "fully baked" before it starts running can send players into a universe of constant shader-compilation stutter.
Elden Ring suffers terribly from this in its default state on PC. The game halts to generate the crucial parts of any new event: a new animation, a new enemy, a new explosion type, and so on.
The same thing can happen in games that lean on the Vulkan API, as well. Avid PC gamers have likely run into games that pause either upon their first boot or after any major changes (patch downloads, manual graphics toggles) to compile shaders. Forza Horizon 4 and 5 are both popular examples of this in action on PC. Their shader compilation process is so long, you may as well go brew a cup of tea while you wait. But the wait pays off: your game isn't interrupted whenever a new thing emerges in its massive, virtual world.
Since Elden Ring is FromSoftware's largest open-world game yet, stuttering isn't an issue that can be shrugged off. Nobody wants to be killed because a game-freezing stutter allowed a massive, detached, eight-finger hand to go from far away to in your face. So far, FromSoftware has not announced any plans to directly address Elden Ring's frame-rate stutter on PC, though the developer did mention a "frame rate phenomenon" in a blog post shortly after the game's launch.
No Vulkan, no dice
One day after Steam Deck reviews went live—and days before the new $400-and-up PC began shipping to preorder customers—Valve's software team had an idea. Shader compilation is at its best when it's optimized for a PC's specific specs—which is exactly why certain games pause, analyze your computer, and then compile shaders accordingly. What if a game maker doesn't bother with an efficiency-minded shader compilation process? Could Valve step in?
For some games, Valve already offers this toggle. Unfortunately, the toggle only works for Vulkan and OpenGL software. On the default Steam desktop client, Valve doesn't make these downloads visible on a game-by-game basis. You pick the toggle on Steam's highest-level menu, then hope that a game that would benefit from such a shader precache will embrace it. On Windows 10, Elden Ring doesn't qualify, since it's a DirectX 12 game.
But on Linux, the Steam Proton compatibility wrapper is sending all of a game's API calls to Deck's hardware via Vulkan. This makes any game running through Deck's default SteamOS 3.0 implementation compatible with the feature. And now, thanks to a Monday night Steam Deck update, a number of popular Steam games have begun receiving new patches, all labeled as "shader pre-cache updates." Unsurprisingly, Elden Ring was one of those.
We already knew Valve was on the case. Engineer Pierre-Loup Griffais announced his Deck-development intentions on Twitter one day after Steam Deck reviews went live:
Smoother than an RTX 3070? Believe it
Immediately after Griffais' post went live, I tried to reproduce his promising Elden Ring test results. Instead, I ran into the same issue his teaser video exhibited: significant frame-rate dips below 30 fps. But now that Steam Deck has warmly embraced shader precaching, that has changed.
While I cannot definitively speak to Elden Ring's performance through the entirety of its massive virtual world, I am happy to report that its baseline performance is now clearing the 30 fps threshold at a mix of "low" and "medium" settings in the few hours I've anecdotally tested thus far. What's more, with Deck's top-level 30 fps cap engaged, Elden Ring now runs smoothly, with nary a noticeable sub-30 frame-time dip. I cannot say the same for my own testing PC, which can reach much higher frame rates but still suffers from the same shader compilation stutter that Battaglia chronicled.
To be clear, shader precaching is not a booster rocket that will send average Steam Deck performance into the stratosphere. In but one example, Sonic Generations' notoriously unoptimized PC port continues to struggle with all matter of hitching and stutter on Deck, even with a 30 fps cap engaged.
In better news, Grand Theft Auto V's performance appears to be more stable after receiving its own shader precache update. At a mix of low and medium settings, traffic pileups no longer bring the game to a mid-40 fps count, though it's still not necessarily a stable 60 fps game on Deck. Even with downgraded settings, GTA V's particle-filled effects still push Deck's custom AMD APU to its limits. (GTA V on Deck ultimately feels better with visual effects cranked up and a 30 fps cap enforced. This week's new update better guarantee that the game's 30 fps refresh won't stutter below that count.)
Additionally, this Steam Deck update doesn't neatly translate to a PC gamer's custom-built system, unless a PC owner opts to punt Windows in favor of Linux and roll the dice on Steam Proton. (Without Vulkan in the mix, this hacked-together Valve solution is a no-go for Elden Ring and other games that don't utilize Vulkan by default.) While Valve's Windows compatibility layer is indeed a marvel to witness at its best, it's still far from a comprehensive option in terms of full compatibility with thousands of classic and modern Steam games.
Again, Deck benefits to some extent by having a fixed spec for Steam Proton to target. The same doesn't go for your PC's CPU, GPU, storage, and other specs, each with its own drivers and dependencies. Hence, you won't find the same shader precache option for Elden Ring on Steam's default Linux client just yet.
But this development does bode well for Steam Deck's compatibility with future DirectX 12 games, open world and otherwise. Deck's wattage-limited hardware needs all the bonuses and perks it can get to keep its owners in the thick of modern games (never mind the ones that may simply never work on Deck's default Arch Linux distro). And based on how much people love Elden Ring, there's something to be said about leaning on Deck as a dedicated Elden Ring machine for at least 100 hours of gameplay. After that, Valve will hopefully have made more strides toward getting your other favorite games working smoothly on Deck.