Microsoft DirectX 12 has a storage layer that can be used by game developers to leverage the hardware more effectively. Recent advancements in SSD and PCIe technologies, specifically NVMe technologies, allow gaming PCs to have storage solutions that deliver far more bandwidth than was ever possible with older hard drive technologies. Instead of tens of megabytes per second, drives like the upcoming Xbox Series X console’s custom NVMe can deliver a blazing-fast multiple gigabytes per second.
Games have long used compression to reduce the storage footprint. Games have continued to be larger and larger which has motivated successive SSD upgrades. Halo: MCC is about 125GB or so on the Xbox One while Halo 5 is even larger. Some Xbox users swapped their hard disks for SATA SSD which load games faster.
Some of the main design goals with DirectStorage is to support PCIe 3.0 NVMe SSD hardware which is dramatically faster than SATA hard disks. Now that M.2 SSD slots are very widespread in the PC gaming universe its now time to modernize with the upcoming Xbox console in mind. PCIe NVMe performance is substantially better than SATA. Sustained read speeds of over 3800 MB/s are now available. PCIe 4.0 will allow speeds of up to 7800 MB/s with the next generation products.
There are two primary areas this new API is going to improve: reducing frustratingly long load times of the past and enabling games to be more detailed and expansive than ever. The upcoming Xbox is going to have a 1TB NVMe SSD to boost performance. This architecture is the model for video cards and processors to match to be able to handle modern game engines.
The DirectStorage Runtime is placed above the D3D and storage stack in order for the layer to be consistent. By allowing a better flow path the PC and console are becoming more efficient. Modern SSD performance now easily saturates the PCIe 3.0 x4 slot bandwidth. The new AMD X570 brings PCIe 4.0 with double the bandwidth to handle faster NVMe performance.
The asset flow at present has storage going from the SSD to main memory and then to the CPU and GPU. The IOMMU handles the copy to the GPU while the main memory handles the decompression of assets. The approach is why CPU designs have worked to increase performance as much as possible.
With the redirected flow of GPU assets is now decompressed on the GPU itself. Modern cards based on RTX Turing and amove and RDNA have excellent support for DX12 ultimate. By copying game assets from the SSD both to the main memory but also the GPU is intended to reducing loading times. A good example of engine design is with Halo: Combat Evolved where the game’s loading ws momentary and did not adversely affect the gameplay. Much of what was developed there still has not filtered down much to smaller studios.
The new API is being used with the Xbox Series X|S which is why DX12 is being enhanced. The improvement are being driven by Xbox development teams who are tasked with making games better without making them unplayable. The DX12 Ultimate has been designed for optimizing gaming with modern shader designs.
DirectCompute is now being used to show how a GPU can handle graphics assets to boost game performance. Its very clear that any engine design has to consider the new console architecture along with DX12 Ultimate to have the best possible gaming experience.