次の方法で共有


IddCx バージョン 1.5、1.6 以降向けの更新

IddCx バージョン 1.5 の次の更新プログラムは、コンソールとリモート間接ディスプレイ ドライバー (IDD) の両方に適用されます。

更新された IddCxGetVersion バージョン

IddCxGetVersion が返す IddCx バージョンは、バージョン 1.5 では 0x1500 に更新され、バージョン 1.6 では 0x1600 に更新されました。 IddCx 関連のバージョン情報の完全な一覧については、 IddCx のバージョン を参照してください。

パブリック IddCx シンボルの WPP 情報

IddCx バージョン 1.5 以降では、パブリック IddCx シンボル ファイルには、すべての Windows ソフトウェア トレース プロセッサ (WPP) 情報が含まれています。 この変更は、!wmitrace.logdump デバッガー コマンドは、カーネル デバッガーで WPP メッセージをデコードし表示することを意味します。

システム メモリに割り当てられたバッファーにアクセスする機能

この特定のシナリオでは、スワップチェーン バッファーはシステム メモリに常駐します。たとえば、WARP (Windows Advanced Rasterization Platform、システム提供のソフトウェア レンダラー) が使用されているレンダー アダプターである場合などが挙げられます。 IddCx 1.5 では、次の OS コールバックが追加されます。これにより、ドライバーはシステム メモリ内のバッファーにアクセスできるため、サブリソースのコピーが回避されます。

  • IddCxSwapChainInSystemMemory を使用すると、IDD はスワップチェーンのバッファーがシステム メモリ内に存在するかどうかをチェックできます。 このコールバックの結果は、スワップチェーンの有効期間中メイン定数です。 ドライバーは、EvtIddCxMonitorAssignSwapChain コールバックでこのコールバックの値をチェックし、バッファーを解放して取得するように状態を設定する必要があります。

  • IddCxSwapChainReleaseAndAcquireSystemBuffer を使用すると、IDD はバッファーを解放して取得できるほか、バッファーにアクセスするための情報 (システム メモリ ポインター、バッファーのピッチ/ストライド、サーフェス形式、ディメンションなど) を取得できます。 返されたバッファーは、次にこの関数が正常に呼び出されるまで有効です。

    新しいスワップチェーンの割り当て時点で、ドライバーは IddCxSwapChainReleaseAndAcquireBuffer/IddCxSwapChainReleaseAndAcquireSystemBuffer のどのバリアントを特定のスワップチェーンを呼び出し、そのスワップチェーンの残りの有効期間にわたってそのバリアントを使用し続ける必要があります。 決定するには、ドライバーは、その特定の要件と IddCxSwapChainInSystemMemoryへの呼び出しの結果を考慮する必要があります。 ドライバがオペレーティング システムが UMDF プロセスのバグ チェックをする場合:

    • IddCxSwapChainReleaseAndAcquireSystemBuffer/IddCxSwapChainReleaseAndAcquireBufferのもう 1 つのバリアントを呼び出します。
    • IddCxSwapChainInSystemMemoryが false を返すときに、 IddCxSwapChainReleaseAndAcquireSystemBuffer を呼び出します。

ドライバが推奨されますが、これらのコールバック関数を使用する必要はありません。 IddCx 1.5 より前の動作は引き続きサポートされます。

物理的に連続したメモリ内のバッファーにアクセスする機能

Note

IddCxSwapChainGetPhysicallyContiguousAddress はどの Windows 10 システムでもサポートされていないため、今後、非推奨になる場合があります。

IddCx 1.6 以降では、バッファーが物理的に連続したメモリ内でアクセスできるように、 IDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUS フラグと IddCxSwapChainGetPhysicallyContiguousAddress OS コールバック関数が追加されました。

ディスプレイ ドライバーは、 IDDCX_ADAPTER_CAPSIDDCX_ADAPTER_FLAGS_PREFER_PHYSICALLY_CONTIGUOUSフラグを設定することで、物理的に連続したシステム メモリにプライマリ サーフェスを割り当てることができることを要求できます。 この機能により、ドライバは中間コピーなしでサーフェスを直接スキャンできます。

初期化中のドライバの要求が成功するとは限りません。 要求が成功しない場合、IddCxAdapterInitAsync の呼び出しは失敗しません。 代わりに、ドライバが IddCxSwapChainReleaseAndAcquireBuffer (または IddCxSwapChainReleaseAndAcquireSystemBuffer) を実行したら、 IddCxSwapChainGetPhysicallyContiguousAddress を呼び出して、サーフェスの物理アドレスを取得する必要があります。 IddCxSwapChainGetPhysicallyContiguousAddress は、最初に保留中のレンダリング コマンドを待機してから、サーフェスが格納されているアドレス範囲に関連付けられている CPU キャッシュをフラッシュして無効にします。 ただし、物理的に連続したメモリに割り当てられるサーフェスの初期要求が失敗した場合、 IddCxSwapChainGetPhysicallyContiguousAddress はE_NOINTERFACEを返します。