Direct3D 12 での作業の送信
Direct3D アプリの CPU 効率を向上させるために、バージョン 12 の時点で Direct3D では、デバイスに関連した即時コンテキストはサポートされなくなりました。 代わりに、アプリケーションでコマンド一覧を記録し、送信します。これには、描画およびリソース管理の呼び出しが含まれます。 これらのコマンド一覧は、複数のスレッドから、コマンドの実行を管理する 1 つ以上のコマンド キューに送信できます。 この根本的な変更によって、後で再使用できるようにアプリケーションでレンダリング処理を事前計算できるようになり、シングル スレッドの効率が向上しました。また、複数のスレッドにレンダリング処理を拡散することで、マルチコア システムを利用できるようになりました。
このセクションの内容
トピック | 説明 |
---|---|
コマンド キューとコマンド リストの設計哲学 | レンダリング作業およびマルチスレッド スケーリングを再利用できるようにするために、Direct3D アプリがレンダリング作業を GPU に送信する方法を根本的に変更する必要があります。 |
コマンド一覧およびバンドルの作成と記録 | このトピックでは、Direct3D 12 アプリでコマンド一覧とバンドルを記録する方法について説明します。 コマンド一覧とバンドルはいずれも、GPU (Graphics Processing Unit) で後で実行する目的で、描画または状態変更の呼び出しを記録できます。 |
コマンド リストの実行と同期 | Microsoft Direct3D 12 には、前バージョンの即時モードがなくなりました。 代わりに、アプリではコマンド リストやバンドルを作成してから、一連の GPU コマンドを記録します。 実行されるコマンド一覧の送信にコマンド キューが使用されます。 このモデルでは、GPU と CPU の両方の効率的使用を開発者はさらに細かく制御できます。 |
Direct3D 12でのグラフィックス パイプラインの状態の管理 | このトピックでは、Direct3D 12 でグラフィックス パイプラインの状態を設定する方法について説明します。 |
リソース バリアを使用してDirect3D 12のリソースの状態を同期する | Direct3D 12 では、全体的な CPU 使用量を減らし、ドライバーのマルチスレッド処理と前処理を可能にするために、リソースごとの状態を管理する責任がグラフィックス ドライバーからアプリケーションに移されます。 |
Direct3D 12を使用したパイプラインとシェーダー | Direct3D 12 のプログラミング可能なパイプラインによって、前世代のグラフィックス プログラミング インターフェイスと比較して、レンダリングのパフォーマンスが大幅に向上します。 |
可変レート シェーディング (VRS) | 可変レート シェーディング (粗ピクセル シェーディング) は、レンダリングイメージ全体で異なるレートでレンダリングパフォーマンス/パワーを割り当てることができるメカニズムです。 |
レンダー パス | レンダー パス機能をレンダラーに使用すると、オフチップ メモリとの間のメモリ トラフィックが減るため (これは、アプリケーションがリソースのレンダリング順の要件とデータの依存関係をより適切に識別できるようになることで実現します)、GPU の効率を向上できます。 |