DirectStorage利用 NVMe 加速游戲加載
DirectStorage 是一項旨在讓游戲充分利用高速存儲(例如 NVMe SSD)的功能,它可以以最小的 CPU 開銷提供每秒數(shù) GB 的小(例如 64kb)數(shù)據(jù)讀取。
使用傳統(tǒng)的基于 ReadFile 的 IO 可以使驅(qū)動器飽和,但隨著單個讀取大小的減小,CPU 開銷會非線性增加。此外,大多數(shù)游戲選擇將其資產(chǎn)壓縮存儲在磁盤上,以減少安裝占用空間,這些資產(chǎn)在加載時會即時解壓縮。隨著帶寬的增加,這種 CPU 開銷變得越來越昂貴。
DirectStorage for Windows 是一個 API,允許游戲開發(fā)人員充分發(fā)揮高速 NVMe 驅(qū)動器來加速游戲資產(chǎn)加載的過程,諸如 Xbox Series X|S 之類的游戲機通過將這些壓力卸載到硬件來解決這些問題——利用 NVMe 硬件隊列來管理 IO 和硬件加速解壓縮。
Xbox 上已經(jīng)存在 DirectStorage API,為了便于在 Xbox 和 Windows 之間移植游戲,這兩個 API 盡可能相似。
DirectStorage 僅支持讀取操作,可以在開發(fā)人員指南中找到一些很好的入門信息。
API 示例
Samples 目錄包含演示如何使用 DirectStorage API 的示例代碼。
-
HelloDirectStorage:這個基本示例通過讀取文件的內(nèi)容并使用 DirectStorage 將其寫入 GPU 上的緩沖區(qū),提供了一種快速簡便的方法來熟悉 DirectStorage 運行時。
-
BulkLoadDemo:這演示了使用 DirectStorage、GPU 解壓和自定義 CPU 解壓。
-
GpuDecompressionBenchmark:此示例提供了一種快速查看 DirectStorage 運行時解壓縮性能的方法,方法是讀取文件的內(nèi)容,對其進行壓縮,然后以多種方式解壓縮,同時測量帶寬和 CPU 使用率。使用 GPU 和 CPU 執(zhí)行解壓縮以進行比較。
