Direct3D 12 での作業の送信Work submission in Direct3D 12

Direct3D アプリの CPU 効率を向上させるために、バージョン 12 の時点で Direct3D では、デバイスに関連した即時コンテキストはサポートされなくなりました。To improve the CPU efficiency of Direct3D apps, as of version 12, Direct3D no longer supports an immediate context associated with a device. 代わりに、アプリケーションでコマンド一覧を記録し、送信します。これには、描画およびリソース管理の呼び出しが含まれます。Instead, your application records and then submits command lists, which contain drawing and resource management calls. これらのコマンド一覧は、複数のスレッドから、コマンドの実行を管理する 1 つ以上のコマンド キューに送信できます。You can submit these command lists from multiple threads to one or more command queues, which manage the execution of the commands. この根本的な変更によって、後で再使用できるようにアプリケーションでレンダリング処理を事前計算できるようになり、シングル スレッドの効率が向上しました。また、複数のスレッドにレンダリング処理を拡散することで、マルチコア システムを利用できるようになりました。This fundamental change increases single-threaded efficiency by allowing your application to pre-compute rendering work for later re-use, and it takes advantage of multi-core systems by spreading rendering work across multiple threads.

このセクションの内容In this section

トピックTopic 説明Description
コマンド キューおよびコマンド一覧の設計指針Design philosophy of command queues and command lists レンダリング作業、およびマルチスレッド スケーリングを再利用できるようにするために、Direct3D アプリがレンダリング作業を GPU に送信する方法を根本的に変更する必要があります。The goals of enabling reuse of rendering work and of multi-threaded scaling, required fundamental changes to how Direct3D apps submit rendering work to the GPU.
コマンド一覧およびバンドルの作成と記録Creating and recording command lists and bundles このトピックでは、Direct3D 12 アプリでコマンド一覧とバンドルを記録する方法について説明します。This topic describes recording command lists and bundles in Direct3D 12 apps. コマンド一覧とバンドルはいずれも、GPU (Graphics Processing Unit) で後で実行する目的で、描画または状態変更の呼び出しを記録できます。Command lists and bundles both allow apps to record drawing or state-changing calls for later execution on the graphics processing unit (GPU).
コマンド一覧の実行と同期Executing and synchronizing command lists Microsoft Direct3D 12 には、前バージョンの即時モードがなくなりました。In Microsoft Direct3D 12, the immediate mode of previous versions is no longer present. 代わりに、アプリではコマンド リストやバンドルを作成してから、一連の GPU コマンドを記録します。Instead, apps create command lists and bundles and then record sets of GPU commands. 実行されるコマンド一覧の送信にコマンド キューが使用されます。Command queues are used to submit command lists to be executed. このモデルでは、GPU と CPU の両方の効率的使用を開発者はさらに細かく制御できます。This model allows developers to have more control over the efficient usage of both GPU and CPU.
Direct3D 12 でグラフィックス パイプラインの状態を管理するManaging graphics pipeline state in Direct3D 12 このトピックでは、Direct3D 12 でグラフィックス パイプラインの状態を設定する方法について説明します。This topic describes how graphics pipeline state is set in Direct3D 12.
リソースの障壁を使用して、Direct3D 12 のリソースの状態を同期するUsing resource barriers to synchronize resource states in Direct3D 12 Direct3D 12 では、全体的な CPU 使用量を減らし、ドライバーのマルチスレッド処理と前処理を可能にするために、リソースごとの状態を管理する責任がグラフィックス ドライバーからアプリケーションに移されます。To reduce overall CPU usage and enable driver multi-threading and pre-processing, Direct3D 12 moves the responsibility of per-resource state management from the graphics driver to the application.
Direct3D 12 でのパイプラインとシェーダーPipelines and shaders with Direct3D 12 Direct3D 12 のプログラミング可能なパイプラインによって、前世代のグラフィックス プログラミング インターフェイスと比較して、レンダリングのパフォーマンスが大幅に向上します。The Direct3D 12 programmable pipeline significantly increases rendering performance compared to previous generation graphics programming interfaces.
可変レート シェーディング (VRS)Variable-rate shading (VRS) 可変レート シェーディング (または粗ピクセル シェーディング) は、レンダリング画像全体で異なるレートでレンダリング パフォーマンス/パワーを割り当てることができるメカニズムです。Variable-rate shading—or coarse pixel shading—is a mechanism that lets you allocate rendering performance/power at rates that vary across your rendered image.
レンダー パスRender passes レンダー パス機能をレンダラーに使用すると、オフチップ メモリとの間のメモリ トラフィックが減るため (これは、アプリケーションがリソースのレンダリング順の要件とデータの依存関係をより適切に識別できるようになることで実現します)、GPU の効率を向上できます。The render passes feature helps your renderer improve GPU efficiency by reducing memory traffic to/from off-chip memory; it does this by enabling your application to better identify resource rendering ordering requirements and data dependencies.