Direct3D 12 での作業の提出
Direct3D アプリの CPU 効率を向上させるために、バージョン 12 以降、Direct3D はデバイスに関連付けられた即時コンテキストをサポートしなくなりました。 代わりに、アプリケーションは、描画とリソース管理の呼び出しを含む コマンド リストを記録して送信します。 複数のスレッドから 1 つ以上のコマンド キューにこれらのコマンド リストを送信して、コマンドの実行を管理できます。 この基本的な変更により、アプリケーションが後で再利用できるようにレンダリング作業を事前に計算できるため、シングルスレッドの効率が向上し、レンダリング作業を複数のスレッドに分散することでマルチコア システムを利用できます。
このセクションでは、次の操作を行います。
話題 | 形容 |
---|---|
コマンド キューとコマンド リストの設計理念 | レンダリング作業とマルチスレッド スケーリングの再利用を有効にする目標は、Direct3D アプリがレンダリング作業を GPU に送信する方法に基本的な変更を加える必要がありました。 |
コマンド リストとバンドルの作成と記録 | このトピックでは、Direct3D 12 アプリでのコマンド リストとバンドルの記録について説明します。 コマンド リストとバンドルの両方を使用すると、アプリはグラフィックス処理装置 (GPU) で後で実行するために描画呼び出しまたは状態変更呼び出しを記録できます。 |
コマンド リストの実行と同期 | Microsoft Direct3D 12 では、以前のバージョンの即時モードは存在しなくなりました。 代わりに、アプリはコマンド リストとバンドルを作成し、GPU コマンドのセットを記録します。 コマンド キューは、実行するコマンド リストを送信するために使用されます。 このモデルにより、開発者は GPU と CPU の両方の効率的な使用をより詳細に制御できます。 |
Direct3D 12 でのグラフィックス パイプラインの状態の管理 | このトピックでは、Direct3D 12 でグラフィックス パイプラインの状態を設定する方法について説明します。 |
リソース バリアを使用して Direct3D 12 でリソースの状態を同期する | 全体的な CPU 使用率を減らし、ドライバーのマルチスレッドと前処理を有効にするために、Direct3D 12 はリソースごとの状態管理の役割をグラフィックス ドライバーからアプリケーションに移動します。 |
Direct3D 12 を使用したパイプラインとシェーダーの | Direct3D 12 プログラミング可能なパイプラインは、前世代のグラフィックス プログラミング インターフェイスと比較してレンダリング パフォーマンスを大幅に向上させます。 |
可変レート シェーディング (VRS) | 可変レート シェーディング (粗ピクセル シェーディング) は、レンダリングイメージ全体で異なるレートでレンダリングパフォーマンス/パワーを割り当てることができるメカニズムです。 |
レンダー パス を する | レンダー パス機能は、レンダラーがオフチップ メモリを送受信するメモリ トラフィックを減らすことで GPU 効率を向上するのに役立ちます。これは、アプリケーションがリソースレンダリングの順序要件とデータ依存関係をより適切に識別できるようにすることで行われます。 |