ID3D12Device6::SetBackgroundProcessingMode メソッド (d3d12.h)
ドライバーのバックグラウンド処理の最適化のモードを設定します。
構文
HRESULT SetBackgroundProcessingMode(
[in] D3D12_BACKGROUND_PROCESSING_MODE Mode,
[in] D3D12_MEASUREMENTS_ACTION MeasurementsAction,
[in] HANDLE hEventToSignalUponCompletion,
[out] BOOL *pbFurtherMeasurementsDesired
);
パラメーター
[in] Mode
種類: D3D12_BACKGROUND_PROCESSING_MODE
その後送信される GPU 作業に適用する動的最適化のレベル。
[in] MeasurementsAction
以前のワークロード インストルメンテーションの結果で実行するアクション。
[in] hEventToSignalUponCompletion
型: HANDLE
関数が完了したときに通知する省略可能なハンドル。 たとえば、 MeasurementsAction が D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS に設定されている場合、結果のすべてのコンパイルが完了すると 、hEventToSignalUponCompletion が通知されます。
[out] pbFurtherMeasurementsDesired
種類: BOOL*
ブール値への省略可能なポインター。 関数は、プロファイリングを続行する必要があることを示す 値を に true
設定します。それ以外の場合 false
は 。
注釈
グラフィックス ドライバーでは、アイドル優先度のバックグラウンド CPU スレッドを使用して、シェーダー プログラムを動的に再コンパイルできます。 これにより、シェーダー コードを特殊化して、実行されているハードウェアの詳細や、使用されているコンテキストをより適切に照合することで、GPU のパフォーマンスを向上させることができます。
開発者は、この機能の恩恵を受けるために何もする必要はありません (時間の経過と伴い、ドライバーがバックグラウンド処理の最適化を採用すると、既存のシェーダーはより効率的に自動的にチューニングされます)。 ただし、コードをプロファイリングするときは、 SetBackgroundProcessingMode を呼び出して、タイミング測定を行う前にドライバーのバックグラウンド処理の最適化が行われたかどうかを確認する必要があります。 次に例を示します。
SetBackgroundProcessingMode(
D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS,
D3D_MEASUREMENTS_ACTION_KEEP_ALL,
nullptr, nullptr);
// Here, prime the system by rendering some typical content.
// For example, a level flythrough.
SetBackgroundProcessingMode(
D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED,
D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS,
nullptr, nullptr);
// Here, continue rendering. This time with dynamic optimizations applied.
// And then take your measurements.
PIX は SetBackgroundProcessingMode を自動的に使用します。最初にシステムのプライムを設定してから、分析の途中でそれ以上の変更が行われるのを防ぎます。 PIX は、測定を開始する前に、イベント (すべてのバックグラウンド シェーダーの再コンパイルが完了したことを確認するため) を待機します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
対象プラットフォーム | Windows |
ヘッダー | d3d12.h |
Library | d3d12.lib |
[DLL] | d3d12.dll |