Microsoftは、ゲームの読み込み速度を劇的に改善する「DirectStorage」テクノロジーの新たなバージョン「DirectStorage 1.2」をリリースした。開発者は、NuGet updateを使用して最新バージョンにアップデートすることが出来る。
Microsoft DirectStorage APIは以前から提供されており、主要なGPUベンダーやSSDベンダーがサポートしているが、現状ではこれを採用するタイトルは、数ヶ月前に発売された『Forspoken』だけで、このゲームは非常に優れたロード時間を示したものの、売上自体は芳しくなかったため、大多数のPCゲーマーや観客は、まだこのAPIの実装を実際に見たことがないのが実状だ。だが、その効果はやはり目を見張るほど素晴らしかった事もまた事実である。
今回新たにリリースされたDirectStorage 1.2は、「Force Buffered IO」モードが新たに追加された。これにより、今後のゲームやアプリケーションに実装された場合、HDDのロードタイムをさらに改善する可能性があるとの事だ。加えて、GPUで解凍した後のコピーを、より高速なGPUのための計算キューに移動し、パフォーマンスの向上も図られている。
Force Buffered IO(強制バッファードIO)
DirectStorageは現在、バッファなしモードでファイルを開いている。これにより、データをできるだけ早くGPUに送ることで、不要なコピーを回避することが出来るが、一部の開発者から、高速SSDとレガシーハードディスクの両方で同じコードを使用できるようにしたいという意見があり、今回の強制バッファードIOの搭載に繋がったようだ。レガシーハードディスクでは、長いシークタイムを隠すためにバッファードIOが必要です。このため、DirectStorageでバッファリングモードでファイルを開くように設定できるようにしたのだ。
これは、DSTORAGE_CONFIGURATION1の「ForceFileBuffering」フィールドをTRUEに設定することで有効化できる。バッファリングされたIOはBypassIOと互換性がないため、このオプションを使用する場合はDisableBypassIOをTRUEに設定しなければならないことに注意が必要だ。
この設定をいつ使用するかの判断は、開発者に委ねられる。この機能は、オペレーティングシステムのファイルバッファリング機能の恩恵を受ける、より低速のHDDに対してのみ有効にする必要がある。
新しいGetCompressionSupport APIについて
DirectStorageは現在、GPUのサポートされた機能に基づいて、埋め込み圧縮フォーマットの解凍パスを選択する。CPUベースのフォールバックパスが選択されるシナリオもある。開発者からの“どの解凍パスが使用されているかを把握し、それに基づいてデフォルトのテクスチャ解像度を設定できるようになると便利だ”という意見を取り入れ、ランタイムが選択したパスを問い合わせるための新しいAPIが追加された。
IDStorageQueue2::GetCompressionSupport()は、解凍にGPU最適化実装が使用されているかどうか、CPUフォールバックに対するGPUフォールバック、DirectStorageが解凍に使用するキューの種類を示す値を返す。
バグ修正
- DSTORAGE_REQUEST_OPTIONS に “Reserved1” フィールドを追加することにより、https://github.com/microsoft/DirectStorage/issues/22を解決した。 これにより、構造体のメモリ内レイアウトがより明確になるが、実際には以前のバージョンからレイアウトが変更されることはない。
- DirectX Discordチャンネルで報告された、3DテクスチャのDSTORAGE_REQUEST_DESTINATION_TEXTURE_REGIONが修正された。
- 非圧縮データをメモリからバッファに転送する際に発生したスケジューリングの問題を修正した。
Source
- DirectX Developer Blog: DirectStorage 1.2 Available Now
コメントを残す