DMA バッファーに対するセグメントの指定
ディスプレイ ミニポート ドライバーは、DMA バッファーを割り当てることができる絞りセグメントを指定できます。 DMA バッファーは、連続したロックダウン システム メモリとしても割り当てることができます。
ビデオ メモリ マネージャーは、アプリケーションで必要なときに DMA バッファーを割り当て、破棄します。 そのため、ビデオ メモリ マネージャーには、DMA バッファーを割り当てることができるセグメントのセットが必要です。 セグメント セットは、1 つのセグメントのみで構成される場合があることに注意してください。
Microsoft DirectX グラフィックス カーネル サブシステムがディスプレイ ミニポート ドライバーの DxgkDdiCreateDevice 関数を呼び出してグラフィックス コンテキスト デバイスを作成する場合、ディスプレイ ミニポート ドライバーは、ビデオ メモリ マネージャーが DMA バッファーを割り当てることができるセグメント セットを指定できます。 ディスプレイ ミニポート ドライバーが、DXGK_DEVICEINFO構造体の DmaBufferSegmentSet メンバーを 0 に設定する場合、ビデオ メモリ マネージャーは、DMA バッファーの連続した非ページ メモリを割り当てます。この場合、ディスプレイ ミニポート ドライバーは PCI サイクルを使用してメモリにアクセスする必要があります。DMA を介して、メモリの物理アドレスから直接データを送信する必要があります。 ディスプレイ ミニポート ドライバーが DmaBufferSegmentSet を 0 以外に設定する場合、ビデオ メモリ マネージャーはページング可能なメモリを割り当て、ページを指定された絞りセグメントにマップします。 絞りセグメント内のページは、DxgkDdiSubmitCommand 関数の呼び出しでディスプレイ ミニポート ドライバーに表示されます。
基本的なビデオ メモリ マネージャー モデルでは、ローカル ビデオ メモリ内の DMA バッファーはサポートされないことに注意してください。