Share via


ビデオ ミニポート ドライバーのバス マスター DMA

Windows XP 以降、オペレーティング システム のグラフィックス インターフェイスは、PCI バス マスター デバイス上の DMA をサポートします。 PCI バス マスター デバイスのビデオ ミニポート ドライバーは、ビデオ ポート ドライバーによって提供されるヘルパー関数を使用して、次の種類の DMA サポートを実装できます。

  • パケット ベースの DMA

    パケット ベースの DMA では、要求元の領域とデバイスの間でデータが直接転送されます。 要求者の領域は連続していない可能性があるため、パケット ベースの DMA は、ハードウェアスキャッター/ギャザーサポートを備えたデバイスでより効率的です。 パケット ベースの DMA は、ユーザー空間とデバイスの間で大量の任意のデータを移動する場合に最適な選択肢です。

  • 共通バッファー DMA

    共通バッファー DMA では、バッファーは (そのため、共通の) 間で共有され、DMA 操作を繰り返すためにホストとデバイスの両方で使用されます。 一部のドライバーは、共通バッファー DMA を使用して、一連のコマンドなどのドライバー操作データをグラフィックス エンジンにアップロードします。 共通バッファーは連続しており、デバイスとホスト CPU の両方から常にアクセスできます。

    共通バッファーは貴重なシステム リソースです。 ドライバーとシステムの全体的なパフォーマンスを向上させるには、ドライバーはできるだけ経済的に共通バッファー DMA を使用する必要があります。

バス マスター アダプターの性質に応じて、ミニポート ドライバーは、排他的にパケット ベースの DMA を使用したり、他のドライバーは排他的に共通バッファー DMA を使用したりします。また一部は両方を使用します。

使用する DMA の種類に関係なく、ミニポート ドライバーは VideoPortGetDmaAdapter を呼び出して VP_DMA_ADAPTER 構造体へのポインターを取得し、後続の DMA 関数呼び出しに使用する必要があります。 DMA 操作を継続する必要がなくなった場合、ミニポート ドライバーは VideoPortPutDmaAdapter を呼び出してアダプター オブジェクトカードを削除する必要があります。

次のサブセクションでは、ビデオ ポート ドライバーによって提供されるパケット ベースおよび共通バッファー DMA サポートを使用する方法について説明します。

パケットベース バス マスター DMA

共通バッファー バス マスター DMA

DMA 使用時の考慮点