RkBlog

Analyzing WoW Shadowlands Spires of Ascension 9.0.5 performance regression

2021-04-14

After patch 9.0.5 lot of players reported FPS drops in various places in the game. Blizzard followed this by some fixes but some spots like Spires of Ascension still remain problematic to some players on PC and macOS. Lets analyze the problem.

Spires of Ascension problem

Problems were reported for Apple M1 silicon (and older Apple hardware) as well as for PC, especially for iGPU laptops and GPUs with slower VRAM configurations (pixel fill rates?). Some pointed to the anima conductor as the source of the FPS drop. Here is few EU/US forum topics about the problem:

tldr - quick facts

If you want full analysis, then follow on with the article :)

Comparison to historical data

Old benchmarks aside of using older version of the game would also run on different drivers and Windows version (and potentially different BIOS and AGESA version for Ryzen systems) - so they may have many variables affecting performance and not perfectly comparable. Below I compared my Shadowlands 9.0 and Beta results with 9.0.5 and 9.1 PTR.

Average and 1% low FPS was measured via MSI Afterburner on 2000-4000 frames. Dungeons were benchmarked on a static view on their entrances.

Dungeon FPS was measured on the start of each instance

Dungeon FPS was measured on the start of each instance

High-end - RTX 3070 + Ryzen 5900X

For my main system I had data collected from WoW Shadowlands launch - multiple dungeon runs with average FPS for each boss. I compared single SoA run on current 9.0.5.38134 patch with those results plus open world Bastion and Ardenweald benchmark spots for reference:

FPS comparison for WoW Shadowlands patches on RTX 3070 + R9 5900X

The benchmarks were run at 3440x1440 with no FPS limiters or VSync. Game set to mode 7 without DXR, Nvidia 465.89 drivers, 4 x 8 GB RAM (3800MHz CL16) and with some addons.

As you can see the FPS for SoA bosses is lower, aside maybe for Oryphiron but doesn't change much for open world Ardenweald and Bastion spots. The combat benchmark is the mass combat single-core limited benchmark done in Karazan TBC.

No change in the Karazan benchmark means the game very likely doesn't have any global problems that would be CPU related. This scenario is heavily limited by single core performance. Bastion open world static view is bit more GPU dependent, while Ardenweald is quite heavy on the GPU side. As the results are quite similar it seems the game doesn't have any global issue.

Even though the FPS is lower in SoA it’s still way above very good framerate so without measuring it it would not be detectable on such system (unless you are running a 200+ high refresh display).

Low-end systems

I've also tested RX 460 4GB, GTX 1050Ti and GTX 1070 running on i5-9400F system with 2x8GB 3200CL15 RAM and 1080p resolution and mode 7.

My historical data (Shadowlands Beta) pretty much lines up for Bastion and Ardenweald test spots. For patch 9.0.5.38134 RX 460 performed as follow:

RX 460 benchmarks

De Other Side is performing really well, while SoA and to some extent also HoA are quite low. In all of those cases the GPU was at 100% load. Game was using around 1,7GB or VRAM (where as the GPU has 4GB available).

Ardenweald is quite GPU demanding zone, likely the most demanding in the history of WoW and you can see it's very similar in terms of performance to SoA.

With GPU bottlenecks lowering game settings increases the performance by a lot for GPU bound scenarios (a.k.a. non-combat). However for SoA the change is quite small (9.1.0.38312 PTR):

RX 460 Mode scalling

And here is comparison between GPUs:

Shadowlands SoA FPS comparison

As you can see at 1080p only weaker GPUs like GTX 1050Ti and RX 460 would be perceivable as having lower FPS and being less fluid. The question is why SoA has 37 FPS on RX 460 while Necrotic Wake 84 FPS and De Other Side 120 FPS?

GPU workload analysis - Radeon GPU Profiler

Using Radeon GPU profiler I captured data for each of the benchmark spots (dungeons, Ardenweald and Bastion). This tool gives an insight on what GPU is doing to render a frame so that game engine developers can optimize and debug their code. I got the quantities of different workloads to see if there will be something out of ordinary for SoA:

Radeom GPU Profiler

Radeon GPU Profiler can be used to see what GPU is doing to render a frame.

GPU got similar amount of events during a frame (aside of De Other Side which wasn't super fast for no reason):

GPU events comparison

Also amount of shaded vertices is similar:

GPU shaded vertices count

But if we look at the amount of shaded pixels we see SoA topping the chart as 125 million shaded pixels per frame, even more than quite detailed and GPU intensive Ardenweald.

GPU shaded pixels count

There is a bug in SoA causing the game engine to render way more stuff than needed which results in a performance penalty that mostly affects integrated graphics and low tier dedicated graphics with slow VRAM - low pixel fill rate.

Similar bug was in Battle for Azeroth when after a hotfix Rustbolt also dropped FPS by a lot and the profiler also showcased excess amount of shaded pixels.

This should be fixed and maybe even optimized so that so more of the dungeons perform like graphically simple De Other Side (or at least the main Muehzala chamber).

WoW patches/benchmarking problem

After a patch WoW technical forums get flooded with people having performance problems, #132 memory crashes and more. The game has no benchmark/test mode so hardware reviewers don't benchmark World of Warcraft - and if some result does show up from non-WoW-player then it's pretty much useless as FPS in WoW is highly dependent on where you are and what is happening around you.

Lack of benchmark/test tools means that players can't reliably benchmark their system and Blizzard doesn't immediately and reliably know that they have a regression for some hardware. Instead they have to go through forums and ask for DxDiag logs...

And if the game had some bit more advanced benchmark system, with like using the Rivatuner statistics server or alike - the game could look for common problems like overheating, SSD throttling and alike and inform the player about them. This would limit the amount of forum posts by a lot.

RX 460 in a WoW Classic cave gives like 100 FPS

RX 460 in a WoW Classic cave gives like 100 FPS

But if you put one of those waterfalls in your field of view the FPS drops a lot, especially on iGPU

But if you put one of those waterfalls in your field of view the FPS drops a lot, especially on iGPU

Comment article