次の方法で共有


コンテキストの割り当て

コンテキストのコンテキスト保存領域にメモリを割り当てるために、カーネル モード ドライバーは DxgkCbCreateContextAllocation を介してコンテキスト割り当てを使用できます。 コンテキスト割り当てにいくつかの新機能が追加され、新しいグラフィックス処理装置 (GPU) 仮想アドレス モデルに収まるようにします。

物理的にアクセスされた

コンテキスト割り当てでは、 AccessedPhysically フラグを指定して、メモリ セグメント内で割り当てを連続して割り当てるか、システム メモリからアクセスする場合はアパーチャにマップする必要があることを示すことができます。

コンテキスト割り当てへの GPU 仮想アドレスの割り当て

ビデオ メモリ マネージャーは、新しい DxgkCbMapContextAllocation サービスをカーネル モード ドライバーに公開して、GPU 仮想アドレスをコンテキスト割り当てに割り当てます。

コンテキスト割り当ては、指定されたコンテキストに関連付けられているアプリケーション GPU 仮想アドレス空間にマップされます。

手記 ドライバーは、コンテキストの割り当てがアプリケーション GPU 仮想アドレス空間に直接マップされるときに、特権情報を公開しないように注意する必要があります。

これらのサービスは、対応するユーザー モードと同様に動作します。

コンテキスト割り当ての内容の更新

カーネル モード ドライバーがコンテキスト割り当ての内容を更新することが必要な場合があります。 たとえば、特権 (AccessedPhysically、GPU 仮想マッピングなし) のコンテキスト割り当てには、特定のコンテキストに関連付けられているページ ディレクトリへの参照が含まれている場合があります。 DxgkDdiSetRootPageTable によってページ ディレクトリの再配置がカーネル モード ドライバーに通知されると、カーネル モード ドライバーは、そのコンテキスト割り当ての内容を更新する必要があります。

このために、新しい DxgkCbUpdateContextAllocationデバイス ドライバー インターフェイス (DDI) が追加されます。 この DDI は、コンテキスト割り当ての更新を開始する要求をビデオ メモリ マネージャーにキューに入れます。 更新中のコンテキスト割り当ては、ビデオ メモリ マネージャーのページング プロセスのスクラッチ領域にマップされ、ドライバーは新しい UpdateContextAllocation ページング操作で呼び出され、コンテキスト割り当ての実際の更新が行われます。 ビデオ メモリ マネージャーは、更新が完了後にDxgkCbUpdateContextAllocationから戻ります。

カーネル モード ドライバーは、 DxgkCbUpdateContextAllocation への呼び出しと結果の UpdateContextAllocation ページング操作の間にプライベート ドライバー データを渡すことができます。