IddCx バージョン 1.6 以降向けの更新
IddCx バージョン 1.6 の次の更新プログラムは、コンソールとリモート間接ディスプレイ ドライバー (IDD) の両方に適用されます。
IddCx バージョン 1.6 より前のリリースはバージョン 1.4 でした。 IddCx バージョン 1.5 には、外部間接ディスプレイ ドライバー (IDD) に影響しない内部変更のみが含まれています。 バージョン 1.4 の詳細については、 IddCx 1.4 のアップデートを参照してください。
更新された IddCxGetVersion バージョン
Windows 10 バージョン 20H2 の IddCxGetVersion によって返される IddCx バージョンは、IDDCX_VERSION_MANGANE Standard Edition (0x1600) に更新されました。 IddCx 関連のバージョン情報の完全な一覧については、 IddCx のバージョン を参照してください。
パブリック IddCx シンボルの WPP 情報
IddCx バージョン 1.6 以降では、パブリック IddCx シンボル ファイルには、すべての Windows ソフトウェア トレース プロセッサ (WPP) 情報が含まれています。 つまり、 !wmitrace.logdump デバッガー コマンドは、カーネル デバッガーで WPP メッセージをデコードして表示します。
システム メモリに割り当てられたバッファーにアクセスする機能
特定のシナリオでは、スワップチェーン バッファーはシステム メモリに常駐します。たとえば、使用されているレンダー アダプターが WARP (Windows Advanced Rasterization Platform、システム提供のソフトウェア レンダラー) である場合などです。 IddCx 1.6 では、次の OS コールバックが追加されます。これにより、ドライバーはシステム メモリ内のバッファーにアクセスできるため、サブリソースのコピーが回避されます。
IddCxSwapChainInSystemMemory を使用すると、IDD はスワップチェーンのバッファーがシステム メモリ内に存在するかどうかをチェックできます。 このコールバックの結果は、スワップチェーンの有効期間中メイン定数です。 ドライバーは、EvtIddCxMonitorAssignSwapChain コールバックでこのコールバックの値をチェックし、バッファーを解放して取得するように状態を設定する必要があります。
IddCxSwapChainReleaseAndAcquireSystemBuffer を使用すると、IDD はバッファーを解放して取得できるほか、バッファーにアクセスするための情報 (システム メモリ ポインター、バッファーのピッチ/ストライド、サーフェス形式、ディメンションなど) を取得できます。 返されたバッファーは、次にこの関数が正常に呼び出されるまで有効です。
新しいスワップチェーンの割り当て時点で、ドライバーは IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer のどのバリアントを特定のスワップチェーンを呼び出し、そのスワップチェーンの残りの有効期間にわたってそのバリアントを使用し続ける必要があります。 決定するには、ドライバーは、その特定の要件と IddCxSwapChainInSystemMemoryへの呼び出しの結果を考慮する必要があります。 ドライバーは、オペレーティング システムのバグを引き起こすチェック UMDF プロセスの場合:
- IddCxSwapChainReleaseAndAcquireSystemBuffer/IddCxSwapChainReleaseAndAcquireBufferのもう 1 つのバリアントを呼び出します。
- IddCxSwapChainInSystemMemoryが false を返すときに、 IddCxSwapChainReleaseAndAcquireSystemBuffer を呼び出します。
推奨されますが、ドライバーがこれらのコールバック関数を使用する必要はありません。 IddCx 1.6 より前の動作はメインサポートされています。
物理的に連続したメモリ内のバッファーにアクセスする機能
IddCx 1.6 以降では、バッファーが物理的に連続したメモリ内でアクセスできるように、 IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUS フラグと IddCxSwapChainGetPhysicallyContiguousAddress OS コールバック関数が追加されました。
ディスプレイ ドライバーは、 IDDCX_ADAPTER_CAPS で IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUSフラグを設定することで、物理的に連続したシステム メモリにプライマリ サーフェスを割り当てることができることを要求できます。 これにより、ドライバーは中間コピーなしでサーフェスを直接スキャンできます。
初期化中のドライバーの要求が成功するとは限りません。 要求が成功しない場合、 IddCxAdapterInitAsync の呼び出しは失敗しません。 代わりに、ドライバーが IddCxSwapChainReleaseAndAcquireBuffer (または IddCxSwapChainReleaseAndAcquireSystemBuffer) を実行したら、 IddCxSwapChainGetPhysicallyContiguousAddress を呼び出して、サーフェスの物理アドレスを取得する必要があります。 IddCxSwapChainGetPhysicallyContiguousAddress は、最初に保留中のレンダリング コマンドを待機してから、サーフェスが格納されているアドレス範囲に関連付けられている CPU キャッシュをフラッシュして無効にします。 ただし、物理的に連続したメモリに割り当てられるサーフェスの初期要求が失敗した場合、 IddCxSwapChainGetPhysicallyContiguousAddress はE_NOINTERFACEを返します。