Microsoft is bringing the DirectStorage API to Windows 10 to speed up gaming
Microsoft is taking steps to improve game performance in Windows 10 by implementing some of the Velocity Architecture used by the Xbox Series X.
Specifically, Microsoft is bringing the DirectStorage API to Windows 10 to help overcome NVMe bandwidth bottlenecks. With compatible hardware, the change will not only mean that games load faster, but also that graphics can be even more detailed.
- Microsoft blocks the installation of Windows 10 version 2004 on laptops with LTE modems
- Microsoft pushes out KB4023057 yet again to force Windows 10 feature updates
- Microsoft releases Windows Terminal Preview 1.3 with advanced tab switcher, new commands and more
Microsoft unveiled the Xbox Velocity Architecture earlier this year with the promise that it will bring "a new era of no-compromise gameplay". But the company knows that it is not just console owners that enjoy games, hence the latest focus on Windows 10.
In a post on its developer blog, Microsoft explains that modern games generate a very large number of I/O requests due to the way components like textures are stored in small chunks.
Unfortunately, current storage APIs were not optimized for this high number of IO requests, preventing them from scaling up to these higher NVMe bandwidths creating bottlenecks that limit what games can do. Even with super-fast PC hardware and an NVMe drive, games using the existing APIs will be unable to fully saturate the IO pipeline leaving precious bandwidth on the table.
And this is precisely why Microsoft is bringing the DirectStorage API to Windows 10. Microsoft explains that: "previous gen games had an asset streaming budget on the order of 50MB/s which even at smaller 64k block sizes (ie. one texture tile) amounts to only hundreds of IO requests per second. With multi-gigabyte a second capable NVMe drives, to take advantage of the full bandwidth, this quickly explodes to tens of thousands of IO requests a second. Taking the Series X's 2.4GB/s capable drive and the same 64k block sizes as an example, that amounts to >35,000 IO requests per second to saturate it".
The company goes on to say:
Existing APIs require the application to manage and handle each of these requests one at a time first by submitting the request, waiting for it to complete, and then handling its completion. The overhead of each request is not very large and wasn't a choke point for older games running on slower hard drives, but multiplied tens of thousands of times per second, IO overhead can quickly become too expensive preventing games from being able to take advantage of the increased NVMe drive bandwidths.
On top of that, many of these assets are compressed. In order to be used by the CPU or GPU, they must first be decompressed. A game can pull as much data off the disk as it wants, but you still need an efficient way to decompress and get it to the GPU for rendering. By using DirectStorage, your games are able to leverage the best current and upcoming decompression technologies.
In a world where a game knows it needs to load and decompress thousands of blocks for the next frame, the one-at-a-time model results in loss of efficiency at various points in the data block's journey. The DirectStorage API is architected in a way that takes all this into account and maximizes performance throughout the entire pipeline from NVMe drive all the way to the GPU.
It does this in several ways: by reducing per-request NVMe overhead, enabling batched many-at-a-time parallel IO requests which can be efficiently fed to the GPU, and giving games finer grain control over when they get notified of IO request completion instead of having to react to every tiny IO completion.
In this way, developers are given an extremely efficient way to submit/handle many orders of magnitude more IO requests than ever before ultimately minimizing the time you wait to get in game, and bringing you larger, more detailed virtual worlds that load in as fast as your game character can move through it.
While this is all great news for gamers, it's not quite time to get excited just yet. Microsoft is currently working with its partners to finish development of the API and says that game developers will be able to try out a preview sometime next year -- so it will be a good while before gamers get to reap the benefits.