サイズ変更可能な BAR に対するシステムとドライバーのサポート

現在、ディスクリート グラフィックス処理装置 (GPU) では、フレーム バッファーのごく一部のみが PCI バス経由で公開されているのが一般的です。 32 ビット OS との互換性を確保するために、ディスクリート GPU は通常、フレーム バッファーの 256 MB I/O リージョンを要求します。これが一般的なファームウェアの構成方法です。

サイズ変更可能なベース アドレス レジスタ (BAR) をサポートする GPU では、Windows ディスプレイ ドライバー モデル (WDDM) v2 以降でのファームウェアの初期化後に、GPU の BAR のサイズが再ネゴシエーションされます。 サイズ変更可能な BAR の詳細については、PCI SIG 仕様ライブラリのサイズ変更可能な BAR 機能の仕様を参照してください。

サイズ変更可能な BAR をサポートする GPU では、BAR の再プログラミング中にディスプレイを維持し、静的画像を表示できるようにする必要があります。 このプロセス中は、ディスプレイを空白にしてバックアップしないでください。 ファームウェアで表示される画像、ブート ローダー画像、カーネル モード ドライバーによって生成された最初の画像の間のスムーズな切替が重要です。 再ネゴシエーションが行われている間、GPU に対して PCI トランザクションは発生しません。

この再ネゴシエーションは、カーネル モード ドライバーではほとんど見えません。 再ネゴシエーションが成功すると、カーネル モード ドライバーは、ディスクリート GPU の VRAM 全体を公開するために、GPU BAR のサイズが最大サイズに変更されたことを確認します。

サイズ変更が成功すると、カーネル モード ドライバーは、1 つの CPUVisible メモリ セグメントをビデオ メモリ マネージャーに公開する必要があります。 ビデオ メモリ マネージャーは、CPU がメモリ セグメントのコンテンツにアクセスする必要がある場合に、CPU 仮想アドレスをこの範囲に直接マップします。