Testing Hardware-accelerated GPU scheduling in World of Warcraft
Hardware-accelerated GPU scheduling or HAGS for short is a new feature present in the
May update of Windows 10. It's an architectural change inside Windows and may reduce the latency and some CPU overhead while gaming. Let's check how it affects WoW this early in it's existence.
For tasks requiring GPU Windows has a high-priority thread running on the CPU that coordinates, prioritizes, and schedules the work submitted by various applications. This approach has the downside in terms of submission overhead and latency for the work to reach the GPU. It would end up that a game would have GPU work on frame N while the CPU would already start working on fame N + 1. This negated the scheduling overhead but increased latency in a game as your action taken on frame N would be taken into account at a frame N + 2 or alike.
The new GPU scheduler is a big change in the GPU driver model and does require addition support from the specific GPU driver and hardware to work. When active Windows will be able to offload most of GPU scheduling to a dedicated GPU-based scheduling processor. This can open the potential for lower latency in games and slightly lower CPU overhead when running an application that uses the GPU (not only when gaming).
This feature got a lot of interest among the gaming community and various speculations arose as there wasn't much detail on how it exactly works. Nvidia and AMD released initial drivers with support for it with somewhat vague but positive wording. Microsoft described this feature in a more neutral manner – you should not see any changes after enabling HAGS.
You can check Microsoft description of this feature as well as GamersNexus analysis. In short HAGS should be transparent to the end user - if you enable it don't expect any noticeable performance gains just yet. There can be edge case scenarios where it does actually help but this is still bit early in it's life cycle to fully understand and for game developers/GPU drivers to take full advantage of.
Microsoft is slowly enabling this update through standard Windows 10 updates. If you would want to force it you would have to download the
May Update Media Creation Tool and create a USB Flash drive Windows installer and do a clean install of Windows. Aside of that to use HAGS you would need Navi based AMD GPU or Nvidia Pascal or Turing based GPU. Intel iGPU support is starting to surface in a beta driver at the time of writing this article.
After that you should be able to turn HAGS on in Settings -> System -> Display -> Graphics Settings.
I run my standard set of benchmarks for WoW with HAGS on and off to check if there will be any noticeable change in game performance. Any noticeable uplift isn't expected although some games had a regressions (bugs) that were being addressed by appropriate companies. The test platform:
- CPU: i5-9400F, 6C/6T
- GPU: GTX 1070, driver 451.48
- RAM: 2 x 8GB Ripjaws V DDR4 3200 C15 2x8GB
- Storage: Apacer AS350 512GB SATA SSD
- Motherboard: ASUS PRIME Z390-P (BIOS 20191024)
- Game settings: 1080p, mode 7
Note that some of those benchmarks do have some variability to it so any small performance changes will be lost in the higher error margin. Aside of that there are not clear performance changes.
Stonard is an old zone where you can cap weaker GPU when running hundreds of FPS. In this case GTX 1070 weren't capped and the benchmark represents CPU/game engine limitation. As it's an empty zone with no players the variability is low and HAGS off having big higher performance may be actually a valid result.
Similarly empty Karazan being an old raid puts similar workload and 1%/0.1% low FPS is bit better with HAGS off. Karazan combat test simulates raid encounters and other mass combat scenarios (dungeons and alike). Here we see bit higher FPS with HAGS on, but overall the difference in Karazan is small and can be within the margin of error.
Xibala cave with it semi-transparent fog can be quite demanding for some GPUs, especially iGPUs as the effect can flood pixel fill rate limiting the FPS (HBM2 based cards are least impacted while AMD and Intel iGPU the most). GTX 1070 pulls 280 FPS on average but the 0.1% low is only 95 FPS. There can be cases where such effects even with good average FPS will bring stutter to the game. HAGS seems to have no effect on it.
Boralus flyby is a test where I keep the city of Boralus in the field of view when flying between two flight points. The 1/0.1% low FPS is very tricky to measure repeatedly as for most of the flyby it's around 45 FPS 0.1% low on this system. Big cities/structures were a challenge for WoW to render and Boralus wasn't an exception from this rule, although heavily optimized during BfA life cycle. The difference is small and it's rather hard to tell if HAGS creates any difference here. The 0.1% low data is most unreliable in this case.
Entrance to the Great Seal in Dazar'alor is a mix of GPU and high CPU load with some variability due to players activity. Here HAGS seems to have no real performance implications.
Legion Dalaran is a mix of I/O and rendering lots of various objects. The test consists of few loops around the city to average the performance of various parts of if. There is some variability to it due to players presence but it should be somewhat averaged out. Only 0.1% low changes which can have a bigger error margin - there is a slight chance HAGS improves some part of the city - and surely doesn't give any regressions.
Input latency wasn't measured - and that may be a parameter that actually changes a bit with HAGS. To test that I'll have to create a proper setup with a fast framerate camera.
May update brings other changes to the system so it's good to check if performance differs between clean v1909 Windows version vs clean v2004 version. I've added the data set to the previous charts and here is what I got (essentially HAGS off should be compared to the performance on the old Windows version):
The old version does show slightly lower or equal FPS so there may be a slight performance uplift with the latest WDDM and other changes made in the May update. It's good that there are no regressions too.
It's also worth pointing out hardware related features coming out with Shadowlands. Support for Variable Rate Shading (VRS) was announced with the expansion reveal but we are still waiting for this feature to land in alpha. There are already configuration options for raytraced shadows.
VRS can improve the performance from the GPU side (WoW is often CPU bound) and at the time of writing this article VRS is supported by Nvidia Turing GPUs (tier 2) and Intel Gen 11 graphics in Ice Lake (tier 1) or newer. AMD is expected to support VRS with the upcoming Navi 2 architecture.
Hardware accelerated ray tracing (DXR) is currently only supported by Nvidia Turing GPUs but this support will be improved in upcoming Nvidia Ampere architecture. AMD will have DXR support in some Navi 2 based graphics cards.
Both new generations of cards should launch before Shadowlands so you may wait with your purchasing decisions for pricing and benchmarks of those next gen cards or discounts on current gen cards that next gen will bring as well.
Also note that Shadowlands may be bundled for free with AMD RX 5000 GPUs - according to some leaked promotional materials - so if you don't have Shadowlands yet and you are upgrading you GPU this can save you some cash. It's unclear if the promotion will include next gen cards (VRS and DXR support!).
HAGS is a big step with refactoring how WDDM works in Windows. Even though the description of the feature may implied noticeable improvements in performance it's not really the case. We may see some benefits in the future when it becomes widespread and more matured. With the development of DX12, Metal and Vulkan we are moving away from CPU single core bottlenecks and moving into many-core and distributed load era of gaming. It will take time for games using those latest features to be released though.
WoW BfA doesn't seems to be affected by HAGS which is in line with many other benchmarks already on the web. There are no bugs/regressions as well. As other benchmarks showed there can be some performance improvements on weaker CPUs but the clear picture of when it happens is still bit unclear.