The DirectX team at Microsoft has published a few blog posts this week as part of the Microsoft Ignite developers conference, providing status updates on various game development-related projects.
The most significant and intriguing of these is a revamp of Microsoft’s DirectStorage API, which expedites the loading of game assets. Essentially, Microsoft plans to release the API to developers by the end of this year, making possible the long-awaited 1.1 update that adds support for GPU asset decompression.
For those who need a refresher, DirectStorage is Microsoft’s next-gen API for loading game assets. It takes advantage of today’s powerful graphics processing units (GPUs) and storage hardware to speed up the transfer of game data from the developer’s computer to the GPU.
On the input/output (I/O) side, DirectStorage provides new batched I/O operations that aim to reduce the number of individual I/O operations and, by extension, the I/O overhead. Not only does DirectStorage allow for modern compressed assets to be decompressed on the GPU rather than the CPU, but it also enables (or will enable) this feature.
Microsoft’s goal with DirectStorage is for PCs (and consoles) to take better advantage of the low random access times and high transfer rates of modern SSDs, allowing games to more efficiently stream in new assets rather than pre-loading everything or experiencing noticeably slow asset loading, as is sometimes the case today.
There are significant CPU costs associated with tracking so many I/O operations and decompressing game assets before passing them on to the GPU, making the CPU a potential bottleneck when trying to scale up I/O rates to meet what SSDs can provide under current game development paradigms. DirectStorage, on the other hand, is meant to lessen both of these burdens and, ultimately, to try to eliminate the CPU from game asset streaming.
Microsoft’s Xbox Series X and XS consoles will ship with DirectStorage technology pre-installed in 2020, so the company’s recent efforts have focused on porting DirectStorage to Windows and taking the heterogeneous nature of the hardware ecosystem into account.
When Microsoft released DirectStorage 1.0 earlier this year, it included the aforementioned I/O batching enhancements but omitted the GPU decompression features. This is where DirectStorage version 1.1 comes in; it enables the second and arguably more crucial feature of DirectStorage on personal computers.
DirectStorage 1.1 will tap the PC's GPU to decompress the game assets and will roll out to software developers later this year. https://t.co/DmNUDQD3lC
— PCMag (@PCMag) October 14, 2022
Allowing graphics processing units to handle decompressing game assets is a great way to relieve strain on the central processing unit. Because of this, the CPU can be used for other things, and a potential bottleneck in the streaming of game assets is eliminated.
The central processing unit (CPU) is the bottleneck between super-fast storage devices like modern SSDs (on the order of hundreds of thousands of IOPS) and massively parallel graphics processing units (GPUs). As a result, DirectStorage eliminates the need for the CPU in almost all cases.
DirectStorage 1.1 improves performance, but the exact amount of speedup is dependent on the hardware being used and the amount of data being pushed by a game or other application. The full DirectStorage 1.1 stack is most likely to improve performance for games that transfer large amounts of data on very fast systems, but even lighter games can take advantage of the quick read/write times of NVMe SSDs.
Microsoft included a screenshot from their Bulk Loading sample program for game developers in their blog post, which serves as both a simple demonstration of DirectStorage 1.1 in action and a benchmark for its performance. With GPU decompression on an unknown PC, Microsoft was able to load 5.65GB of assets in 0.8 seconds.
while the same task would have taken 2.36 seconds under full CPU utilization. Moving asset decompression from the CPU to the GPU when you have a large amount of asset data can improve performance, but this test case is simplistic and only focuses on one feature like most SDK sample programs.
In the background, DirectStorage GPU decompression is being made possible with the introduction of GDeflate, a general-purpose compression algorithm created by NVIDIA. deflate is a GPU-optimized variant of Deflate that has been modified to work more efficiently with the massively parallel (and not-very-serial) nature of graphics processing units.
For its part, DirectStorage plans to add GDeflate support in two distinct ways. In the first (and ideally only) approach, responsibility is delegated to the graphics processing unit (GPU) drivers and the GPU vendor is free to handle the situation as it sees fit.
Vendors can tailor their products to the underlying hardware and architecture, taking advantage of any specialized processing units if they exist. It’s likely that at least one of the three companies will have DirectStorage 1.1-capable drivers ready before the API ships to game developers.
However, if you don’t have a GPU that supports DirectX12 Shader Model 6.0, Microsoft also provides a generic (but optimized) decompressor called DirectCompute GDeflate. This means that GDeflate can be used with pretty much any graphics processing unit (GPU) in a personal computer that was produced in the last decade, though newer GPUs will provide noticeably better performance.
Other than that, all that will be required to make use of GPU decompression, and DirectStorage 1.1 in general, will be Windows 10 1909 (or later) or Windows 11, and a fast storage device. DirectStorage can be used with any storage device, including SATA SSDs, but it is designed for and performs best with NVMe SSD-based systems.
Please be aware, though, that the benefits of DirectStorage will depend on whether or not individual games choose to implement the API. This includes not only integrating the required API hooks but also distributing games with assets compressed with the new GDeflate algorithm.
Given the wide backward compatibility of GDeflate, developers can get a head start on DX12 games; any system worth running a new game on will support DirectStorage and deflate.
However, since DirectStorage 1.1 requires changes to game assets, adding it is not a simple task for already-released games. While it is possible for developers to redistribute (or otherwise recompress) game assets for GDeflate, doing so would force players to re-download a significant portion of the game.
Therefore, players should anticipate DirectStorage 1.1 to be implemented in upcoming games rather than retroactively added to older titles. Last but not least, Microsoft’s announcement this week is directed at its target audience (developers) and is meant to encourage them to prepare for the updated API before its release later this year.
Although Microsoft has yet to release the API documentation or tools, they are urging developers to get started with DirectStorage 1.0 so that they are ready to take advantage of DirectStorage 1.1 and its GPU decompression capabilities when it is released later this year.
Final Lines:
Hope you find our post valuable for you… Many thanks for taking the time to read this! If you appreciate it, please leave a comment and share it with your friends. There are other articles available on Tech Ballad. com