変更の提供と再利用
Windows ディスプレイ ドライバー モデル (WDDM) v2 では、提供と再利用に関する要件が緩和されています。 ユーザー モード ドライバーは、内部割り当てで提供を使用して再利用する必要がなくなりました。 アイドル状態または中断されたアプリケーションは、Microsoft DirectX 11.1 で導入された TrimAPI を使用してドライバーの内部リソースを取り除きます。
提供と再利用は引き続き API レベルでサポートされ、ユーザー モード ドライバーは、カーネルにリソースを提供または再利用するためのアプリケーション要求を転送する必要があります。 WDDM v2 では、オファリングの割り当ては割り当て一覧でサポートされなくなり、その結果、ユーザー モード ドライバーは提供の実装方法と再利用方法を変更する必要があります。
アプリケーションによって提供されているリソースは、すべてのコンテキストで現在ビルドされているダイレクト メモリ アクセス (DMA) バッファーに参照がない場合は、OfferCb を呼び出すことによって、ユーザー モード ドライバーによってすぐに提供される必要があります。 リソースがビルド中の DMA バッファーに保留中の参照がある場合、ユーザー モード ドライバーは、依存 DMA バッファーが RenderCb 経由で送信されるまで OfferCb の呼び出しを延期する必要があります。 グラフィックス カーネルは、リソースを安全に提供できるようになるまで、非ブロッキングの方法で操作を延期します。そのため、ユーザー モード ドライバーは、依存する操作がグラフィックス処理装置 (GPU) で完了するまで OfferCb への呼び出しを延期する必要はありません。
再利用を呼び出すと、所在地要件リストに含まれている場合は、割り当てが自動的にページングされます (つまり、ユーザーまたはドライバーが MakeResidentCb 呼び出しを介して割り当てを常駐するように要求しました)。 ReclaimAllocations2Cb の場合、この操作は非同期であり、ページング フェンスが返され、MakeResidentCb から返されるフェンスと同じ方法で処理する必要があります。 割り当ては、フェンスが通知されたときに GPU 上に常駐し、使用可能であることが保証されます。
ReclaimAllocationsCb/ReclaimAllocations2Cb から戻った直後に、割り当てのバッキング ストアが有効であることが保証され、Lock2Cb を介した CPU アクセスの下に配置される可能性があります。 ドライバーは、ページング フェンスを待機する必要はありません。