While I guess I’m one of the lucky ones, with my performance having been pretty good so far, there are a lot of people out there having problems trying to play Elden Ring on the PC. Those playing on Valve’s Steam Deck are not among them.
Stuttering has been a huge issue for PC players since the game’s launch, even after an update, and many suspected this was down to the way the game compiled shaders, or in this case, how it doesn’t do it very well (not that Elden Ring is alone here, google “compile shaders PC” and you’ll find a ton of games suffering performance hits and a case of the stutters).
This doesn’t happen on consoles because, with fixed hardware (as in, everyone’s console is exactly the same, and doesn’t have the infinite component variations present on PC), it can be done ahead of time instead of every time you fire a game up, as so often happens with a PC game. The Steam Deck, while being a PC, is also a piece of fixed hardware, so can enjoy the same benefits, provided Valve is able to implement them.
Which in this case they have. Here’s Valve’s Pierre-Loup Griffais showing off the Steam Deck version’s improvements last month in a preview build of an optimisation fix that is now live for all users:
The graphics team has been hard at work on optimizing ELDEN RING for Steam Deck. Fixes for heavy stutter during background streaming of assets will be available in a Proton release next week, but are available to test now on the bleeding-edge branch of Experimental. pic.twitter.com/5oSnXtF2OG— Pierre-Loup Griffais (@Plagman2) February 26, 2022
As Griffais tells Eurogamer,
On the Linux/Proton side, we have a pretty extensive shader pre-caching system with multiple levels of source-level and binary cache representations pre-seeded and shared across users. On the Deck, we take this to the next level, since we have a unique GPU/driver combination to target, and the majority of the shaders that you run locally are actually pre-built on servers in our infrastructure. When the game is trying to issue a shader compile through its graphics API of choice, those are usually skipped, as we find the pre-compiled cache entry on disk.
That said, it turns out shader compiling wasn’t the main issue here, as was originally thought. Instead, Graffais says it was actually down to:
Shader pipeline-driven stutter isn’t the majority of the big hitches we’ve seen in that game. The recent example we’ve highlighted has more to do with the game creating many thousand resources such as command buffers at certain spots, which was making our memory manager go into overdrive trying to handle it. We cache such allocations more aggressively now, which seems to have helped a ton.
Who could have guessed that one of this handheld PC’s biggest surprise strengths would be the fact it was basically built like a console. Anyway if you want get really into the technical stuff behind this, Eurogamer and Digital Foundry put a video together explaining the nitty gritty here.