In the past, games weren’t too complex. The playable levels were rather small, the characters were few, and the textures were simple. Over the years, games have improved exponentially. From massive open worlds to highly detailed characters, games can often look photorealistic.
But all of this innovation comes at a cost.
Modern games need tens of gigabytes of data to render those beautiful characters and environments. But some tools game developers use weren’t built to handle such a huge amount of data, creating a performance bottleneck.
This is where Microsoft DirectStorage comes in.
Why Do We Need Microsoft DirectStorage?
Before we discuss DirectStorage, let us see how the current methods of data streaming work.
When you launch a game, it needs data like textures, character models, and audio to present to you on the screen. This data is stored on a storage device like a hard drive. The game requests this data through software tools known as Application Programming Interfaces (APIs).
After the game has requested the data through an API, it fetches the data from the storage device and places it in the system RAM before passing it on to the GPU for rendering.
When you download a game, all the data is compressed to save as much storage as possible. But GPUs can’t use compressed data. Hence, it must be decompressed.
So once the data is in RAM, it goes to the CPU for decompression.
After decompression, the data that the game requested is copied into the VRAM of the GPU.
Finally, the GPU renders this data into beautiful graphics that we see on the display.
Now, this streaming method has two major drawbacks.
First, data decompression takes a lot of time. Not only does this result in increased game load times, but this also makes the CPU unavailable for other tasks. And because the CPU is caught up with decompression most of the time, it can’t keep up with the demands of the GPU, resulting in lower frame rates.
Second, existing storage APIs don’t take full advantage of modern storage hardware. For instance, storage devices back in the day were slow mechanical hard drives that didn’t have the speed and the bandwidth to send gigabytes of data per second. So, the APIs were written to only stream a limited amount of data.
Developers who use these old APIs today must circumvent this limited data streaming budget using methods like reducing scene complexity to minimize the need for a lot of assets, only rendering textures and the environment that the player can see, and increasing load times to make sure they the game has enough time to load all the assets before starting.
These methods work better in theory than in practice. Because, even with the fastest storage drives on the market, the games still have long load times, texture pop-in, and cramped draw distances.
DirectStorage aims to help developers solve these issues through a better data streaming process.
How Does Microsoft DirectStorage Work?
Microsoft DirectStorage is a set of storage APIs that aim to fix everything wrong with the current APIs.
When a developer invokes DirectStorage APIs to request data from the storage device, the process is almost the same with two major differences.
First, after copying the data into the RAM, there is no CPU decompression routine. The data is not copied into the CPU and decompressed. Unlike old APIs, the compressed data is sent directly to the GPU.
Second, the APIs take full advantage of the super-fast NVMe SSD hardware. DirectStorage needs an NVMe SSD to work, as NVMe SSDs have exponentially higher bandwidth than mechanical hard drives. DirectStorage uses the full bandwidth of these SSDs, which is in the order of GB/s, to read a lot of data at once. This is unlike older APIs that read data slowly and in the order of MB/s.
So, the GPU receives a lot of compressed data at once, and it doesn’t have to wait around for more data to arrive before rendering. The only thing left to do is to decompress the data for the GPU to render.
DirectStorage packs in state-of-the-art GPU decompression techniques. GPUs decompress data at a much higher rate than CPUs. They can also sustain this high-rate decompression for a long time which a CPU can’t. This is what makes a GPU a prime candidate for the future of data decompression.
Offloading decompression to the GPU also frees up the CPU to handle other tasks like processing audio and preparing frames to be displayed.
How Does DirectStorage Improve Games?
Because DirectStorage provides your GPU with a lot of data incredibly quickly, it can revolutionize your gaming experience.
First up, if the developers build their games with DirectStorage, games will have near-instant load times. So, you won’t have to wait to sit through a long loading screen to jump into your favorite game.
Secondly, because DirectStorage frees up the CPU to handle other tasks, it increases performance. In other words, you will get better frame rates even if you haven’t upgraded your hardware.
Finally, with DirectStorage, games will have more expansive and complex worlds with minimal texture pop-in. This will allow the developers to build the next generation of games without holding their creative vision back due to data streaming concerns.
DirectStorage Can Change Gaming for Good if the Developers Allow It
Microsoft has been pushing DirectStorage hard. And rightfully so. The old methods of data streaming are a choke point that has been holding games back.
If DirectStorage manages to become an industry standard, gaming will move into a new era of immersion.
If Microsoft can perfect DirectStorage and convince the developers that it’s worthwhile to invest their time into it, gamers can finally be free of annoyances like load times and texture pop-in.
So, let’s hope that we see the day when there are no fake elevator rides, no never-ending stairways, and no fast travel that takes a million years.