AGP サポート

Microsoft DirectDraw は、高速グラフィックス ポート (AGP) メモリを表示メモリのサブクラスとして扱います。 この種のメモリは、非ローカル表示メモリと呼ばれます。 「AGP メモリ」と「非ローカル表示メモリ」という用語は、DirectDraw と DirectDraw ドライバーの観点からすれば同義です。

AGP メモリは、表示メモリの純粋なサブクラスと見なされます。 つまり、ドライバーが AGP メモリをサポートしていることを示す場合、ほとんどの場合、パフォーマンスの違いは許容されますが、ローカルおよび非ローカルの表示メモリに対して同じ機能を持っている必要があります。 例外は、DDCAPS2_NONLOCALVIDMEMCAPS フラグが設定されている場合です。この場合、非表示メモリの blt 機能は、ローカル表示メモリと異なっていても構いません。

たとえば、ドライバーが表示メモリからテクスチャを作成できることを示している場合は、ローカルと非ローカル両方の表示メモリからテクスチャを作成できる必要があります。 ブリッティングも同様に扱われます。 ソース カラー キーの blt 機能をエクスポートするドライバーは、非ローカル表示メモリとの間で、ソース カラー キー付き blt を実行できる必要があります。 この規則の 1 つの例外は、特定のサーフェスの種類が、非ローカル表示メモリに割り当てられるのを妨げる可能性があることです。 たとえば、ヒープを使用して、オーバーレイ サーフェスが AGP メモリに割り当てられないようにすることができます。

AGP メモリは表示メモリのサブクラスとして扱われるため、DirectDraw には AGP メモリ用のディスプレイ ドライバ エントリ ポイントの独立したセットがありません。 既存のディスプレイ ドライバー呼び出しは、AGP サーフェスとローカル表示メモリ サーフェスの両方に使用されます。 AGP 対応ドライバは、受信サーフェスをチェックして、それらが非ローカルとローカルどちらの表示メモリ内にあるのかを確認し、適切なアクションを実行する必要があります。 システムから AGP への blts (およびその逆) は、通常どおり DirectDraw エミュレーション レイヤーを通過します。ただし、ドライバーがシステムからディスプレイへのメモリ blts をサポートしている場合は別で、システムから AGP への転送もサポートする必要があります。

ドライバーは、可能な限り DDCAPS2_TEXMANINNONLOCALVIDMEM フラグを設定する必要があります。これは、Direct3D テクスチャ マネージャーが、(システム メモリではなく) AGP メモリ内のサーフェスのビデオ メモリ コピーのバッキング イメージを保持するためです (該当する場合)。

このセクションの残りの部分では、DirectDraw の非ローカル表示メモリ機能を使用して AGP メモリをサポートするように既存のドライバーを改変するために必要な手順について説明します。