Using Windows 11 DirectStorage to Reduce Game Load Times
Learn how Windows 11’s DirectStorage API lets games offload asset decompression to the GPU, cutting load times on NVMe SSDs, and see the steps to enable, verify, and measure the effect.
07 Jul 2026, 15:10 UTC

Problem: CPU‑bound asset decompression slows game launches
Modern games ship large textures, meshes and audio compressed to save disk space. At launch or level change the CPU must read the compressed data from storage, decompress it, and copy the result to GPU memory. On systems with fast NVMe drives this step can still become a bottleneck because the CPU spends cycles on decompression instead of game logic.
Thesis: DirectStorage lets the GPU decompress assets directly from an NVMe SSD, cutting load times
When the required hardware and OS are present, Windows 11’s DirectStorage API creates a GPU‑direct path that bypasses the CPU for both data transfer and decompression. The result is a measurable reduction in level‑load latency, especially for titles that already ship assets in a supported compression format.
What DirectStorage needs
- An NVMe SSD (PCIe 3.0 x4 or better) – SATA or HDD cannot sustain the GPU‑direct bandwidth.
- Windows 11 version 22H2 (build 22621) or newer.
- A GPU that supports DirectX 12 Ultimate (feature level 12_2) and has the DirectStorage driver component.
- Game assets compressed with a format understood by the runtime (Zlib, GDeflate, or the newer BCpack).
How the GPU‑direct path works
When a game calls the DirectStorage runtime, it creates a ID3D12Resource that lives in GPU memory and submits a CopyBufferRegion command that tells the storage driver to DMA compressed bytes straight from the NVMe drive into that resource. The GPU then decompresses the data in‑place using its own shader cores, so the CPU never sees the raw bytes.
Worked example: checking support and launching a DirectStorage‑enabled title
The following steps can be performed on a developer workstation. No administrative rights are required for the checks; only the game launch may need permission to write to its folder.
- Verify the OS version – open a Command Prompt and run:
The dialog should show “Version 22H2” or a higher build number.winver - Confirm GPU and storage capability – run the DirectX Diagnostic Tool:
On the Display tab look for “Feature Levels” ≥ 12_2 and on the System tab ensure “DirectStorage” is listed as “Supported”.dxdiag - Query support programmatically – a minimal C++ snippet using the DirectStorage SDK:
Compile with the DirectStorage SDK headers and link against#include #include #include bool IsDirectStorageSupported(ID3D12Device* device) { D3D12_FEATURE_DATA_D3D12_OPTIONS7 opts7{}; HRESULT hr = device->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS7, &opts7, sizeof(opts7)); return SUCCEEDED(hr) && (opts7.DirectStorageSupported != 0); }d3d12.libanddxgi.lib. The function returns true only when the GPU‑direct path is available. - Launch the game with DirectStorage enabled – many titles expose a launch option or a configuration file flag, e.g.:
MyGame.exe -directstorage 1
If the game does not provide a switch, verify that the executable was built with the DirectStorage runtime (check the import table for DirectStorage.dll).
Measure load time – start a stopwatch (or use an in‑game timer) from the moment you select “New Game” until the first playable frame appears. Record the time. Then repeat the same test with the feature disabled (e.g., rename DirectStorage.dll or set the launch flag to 0) on identical hardware and compare.
Trade‑off and limitation
DirectStorage shifts work from the CPU to the GPU, which can increase GPU memory usage during decompression. In memory‑constrained scenarios (e.g., 4 GB GPUs) this may cause texture streaming stalls or force the driver to evict other resources. The feature also provides no benefit on SATA SSDs or hard drives because the NVMe‑to‑GPU DMA path cannot exceed the slower link speed.
Developers must ship assets in a supported compression format; legacy Zlib‑only pipelines need to be re‑processed with GDeflate or BCpack to see gains. This extra pipeline step can add build time and storage overhead.
Practical way to check the result
After a test run, open Windows Performance Analyzer (WPA) and load an ETW trace captured with:
wpr.exe -start GeneralProfile -filemode
# launch the game
wpr.exe -stop DirectStorageTrace.etl
In WPA, look for the Microsoft-Windows-DirectStorage/Operational provider. Presence of DirectStorageDecompressionCompleted events confirms that the GPU‑direct path was active. Absence of these events while the game is running indicates a fallback to the legacy CPU path.
Actionable closing
If you are developing a Windows 11 title and target users with NVMe SSDs and DX12‑Ultimate GPUs, enable DirectStorage early in the asset pipeline:
- Process all textures and meshes with the GDeflate or BCpack compressor shipped in the DirectStorage SDK.
- Integrate the runtime check shown above and gate any DirectStorage‑specific code paths behind it.
- Automate a nightly performance test that compares load times with the feature on and off, using the WPA method to verify GPU‑direct utilization.
- Document the increased GPU memory budget in your technical design sheet so that QA can monitor for spikes on lower‑end GPUs.
When the hardware prerequisites are met, the payoff is a tangible reduction in load‑time latency—often 20‑40 % in real‑world benchmarks—without requiring changes to the game’s core rendering loop. Keep the limitation in mind, profile rigorously, and ship only when the benefit outweighs the memory cost.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.