グラフィックスプロセッサの複数のディスプレイヘッドを用いたアンチエイリアシング
【課題】1つのグラフィックスプロセッサの複数のディスプレイヘッドを用いた画像データのアンチエイリアシングを提供する。
【解決手段】同じグラフィックスプロセッサ122の2つのディスプレイヘッド206が、画素転送パスを介してマスター/スレーブ形式で互いに結合されている。「マスター」ディスプレイヘッドは、それ自体の画素に加えて「スレーブ」ディスプレイヘッドから画素を受け取り、マスターディスプレイヘッド中の画素選択論理回路がこの2画素を混合するか、いずれか一方を選択して他方を除外する。2画素が同じ画像の異なるサンプリング位置に対応する場合には、混合した画素がアンチエイリアシング処理画素となる。
【解決手段】同じグラフィックスプロセッサ122の2つのディスプレイヘッド206が、画素転送パスを介してマスター/スレーブ形式で互いに結合されている。「マスター」ディスプレイヘッドは、それ自体の画素に加えて「スレーブ」ディスプレイヘッドから画素を受け取り、マスターディスプレイヘッド中の画素選択論理回路がこの2画素を混合するか、いずれか一方を選択して他方を除外する。2画素が同じ画像の異なるサンプリング位置に対応する場合には、混合した画素がアンチエイリアシング処理画素となる。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
[0001]本願は、2006年5月12日に出願された「Antialiasing Using Multiple Display Heads of a Graphics
Processor」と題する米国仮出願第60/747,154号、および同一出願人による同時係属中の2006年5月12日に出願された「Distributed Antialiasing in a Multiprocessor Graphics
System」と題する米国特許出願第11/383,048号の利益を主張するものである。
【発明の背景】
【0002】
[0002]本発明は、概してコンピュータグラフィックスに関し、特にグラフィックスプロセッサの複数のディスプレイヘッドを用いた画像データのアンチエイリアシングに関する。
【0003】
[0003]当分野で既知のように、コンピュータ生成画像は、画像データを離散カラーサンプル(画素)のアレイへと変換するのに用いる有限サンプリング解像度から生じる様々なビジュアルアーチファクトに影響を受けやすい。一般に「エイリアシング」と呼ばれるこのようなアーチファクトには、平滑なラインのジャギー、規則的なパターンのムラ等が含まれる。
【0004】
[0004]エイリアシングを減らすために、カラーを「オーバーサンプリング」する、すなわち最終(例えばディスプレイまたは記憶)画像を構成する画素数を上回る数のサンプリング位置でサンプリングすることが多い。例えば、画素数の2倍または4倍で画像をサンプリングすることもある。当分野では、各サンプリング位置を別個の画素として扱うスーパーサンプリングや、画素の少なくとも一部をカバーする基本形状毎に1つのカラー値を計算するが、この基本形状による画素のカバレージは複数の位置で決定するマルチサンプリングを含む、各種のオーバーサンプリングが既知である。
【0005】
[0005]アンチエイリアシング(AA)フィルタは、1画素あたり複数のサンプルを混合して1つのカラー値を決定する。従来、AAフィルタは、画素を生成してフレームバッファに記憶するレンダリングパイプライン内、または、画素をフレームバッファから読み出してディスプレイ装置に送るディスプレイパイプライン内のいずれかに適用される。
【発明の概要】
【0006】
[0006]本発明の実施形態は、1つのグラフィックスプロセッサの複数のディスプレイヘッドを利用してアンチエイリアシングおよび他の処理タスクを行うシステムおよび方法を提供するものである。一実施形態では、同じグラフィックスプロセッサの2つのディスプレイヘッドが画素転送パスを介してマスター/スレーブ形式で互いに結合されている。「マスター」ディスプレイヘッドは、それ自体の画素に加えて「スレーブ」ディスプレイヘッドから画素を受信し、マスターディスプレイヘッド中の画素選択論理回路がこの2画素を混合するか、いずれか一方を選択して他方を除外する。2画素が同じ画像の異なるサンプリング位置に対応する場合には、混合した画素がAAフィルタ処理画素となる。
【0007】
[0007]本発明の一態様によれば、グラフィックス処理装置が、第1のディスプレイヘッドと、第2のディスプレイヘッドと、画素転送パスとを含む。第1のディスプレイヘッドは、第1の出力画素を生成するように構成され、集積回路内に配置される。第2のディスプレイヘッドは、第2の出力画素を生成するように構成されており、これも集積回路内に配置されている。第2のディスプレイヘッドは、外部画素を受信するように構成された第1の入力パスと、内部画素を受信するように構成された第2の入力パスと、上記第1の入力パスおよび上記第2の入力パスに結合され、上記外部画素と上記内部画素を混合して、上記混合画素を生成するように構成された画素合成器と、上記外部画素、上記内部画素、または上記混合画素の1つを第2の出力画素として選択するように構成された選択回路とを有利に含む。上記画素転送パスは、上記第1の出力画素が上記外部画素として上記第1の入力パスにより受信されるように、上記第1の出力画素を上記第1のディスプレイヘッドから上記第2のディスプレイヘッドの上記第1の入力パスへと送るように設定可能である。
【0008】
[0008]いくつかの実施形態では、上記画素転送パスも集積回路内に配置される。他の実施形態では、上記画素転送パスの少なくとも一部が上記集積回路の外部にある。例えば、上記画素転送パスが取り外し可能なコネクタを含む。
【0009】
[0009]本発明の別の態様によれば、グラフィックスサブシステムが、画素出力コネクタおよび画素入力コネクタを有するグラフィックスアダプタを含む。グラフィックスプロセッサは、上記グラフィックスアダプタ上に実装することもできるが、上記画素出力コネクタに通信可能に結合された画素出力ポートと上記画素入力コネクタに通信可能に結合された画素入力ポートとを有する。グラフィックスサブシステムは、上記グラフィックスアダプタの上記画素出力コネクタを上記グラフィックスアダプタの上記画素入力コネクタに接続するように適合された取り外し可能なコネクタユニットも含む。
【0010】
[0010]本発明のまた別の態様によれば、画像を生成する方法が、グラフィックスプロセッサのレンダリングパイプラインを用いて、画像用の入力画素の第1セットおよび入力画素の第2セットをレンダリングするステップを含む。入力画素の第1セットをレンダリングするのに用いられる第1のレンダリング動作は、少なくとも一点で上記入力画素の第2セットをレンダリングするのに用いられる第2のレンダリング動作と異なる。例えば、上記2つのレンダリング動作は、各画素に適用されるサンプリングパターンに関して異なっても、またはレンダリングされる画像の視野域オフセットに関して異なってもよい。上記入力画素の第1セットが上記グラフィックスプロセッサの第1のディスプレイヘッドに送られ、上記入力画素の第2セットが上記グラフィックスプロセッサの第2のディスプレイヘッドに送られる。上記入力画素の第1セットは、さらに上記第1のディスプレイヘッドから上記第2のディスプレイヘッドに送られる。上記第2のディスプレイヘッドで、上記入力画素の第1セットおよび上記入力画素の第2セットの対応する画素が混合され出力画素のセットを生成する。
【0011】
[0011]以下の詳細な説明が、添付の図面と併せて本発明の性質および利点のより良い理解を与えるであろう。
【発明の詳細な説明】
【0012】
[0020]本発明の実施形態は、1つのグラフィックスプロセッサの複数のディスプレイヘッドを利用してアンチエイリアシングおよび他の処理タスクを行うシステムおよび方法を提供するものである。一実施形態では、同じグラフィックスプロセッサの2つのディスプレイヘッドが画素転送パスを介してマスター/スレーブ形式で互いに結合されている。「マスター」ディスプレイヘッドは、それ自体の画素に加えて「スレーブ」ディスプレイヘッドから画素を受信し、マスターディスプレイヘッド中の画素選択論理回路がこの2画素を混合するか、いずれか一方を選択して他方を除外する。2画素が同じ画像の異なるサンプリング位置に対応する場合には、混合した画素がAAフィルタ処理画素となる。[システム概観]
【0013】
[0021]図1は、本発明の実施形態によるコンピュータシステム100のブロック図である。コンピュータシステム100は、中央演算処理装置(CPU)102と、ノースブリッジチップ等のメモリブリッジ105を含むバスパスを介して通信するシステムメモリ104とを含む。メモリブリッジ105は、バスまたは他の通信パス106を介してサウスブリッジチップ等のI/O(入力/出力)ブリッジ107と接続されている。I/Oブリッジ107は、一又は複数のユーザ入力デバイス108(キーボード、マウス等)からユーザ入力を受信し、バス106およびメモリブリッジ105を介してその入力をCPU102へと転送する。ビジュアル出力は、バスまたは他の通信パス113を介してメモリブリッジ105に結合されたグラフィックスサブシステム112の制御下で動作する画素ベースディスプレイ装置110(従来のCRTまたはLCDベースモニタ)上で提供される。システムディスク114は、I/Oブリッジ107にも接続されている。スイッチ116は、I/Oブリッジ107とネットワークアダプタ118および各種アドインカード120、121等の他のコンポーネントとの間を接続する。USBまたは他のポート接続、CDドライブ、DVDドライブ等の他のコンポーネント(明示せず)をI/Oブリッジ107に接続することもできる。各種コンポーネント間の通信パスは、PCI(Peripheral Component Interconnect)、PCI Express(PCI−E)、AGP(Accelerated Graphics Port)、HyperTransport、または任意の他のバスまたはポイントツーポイントプロトコルを用いて実施することができ、異なるデバイス間の接続は当分野で既知の異なるプロトコルを用いることができる。
【0014】
[0022]グラフィックスサブシステム112は、N個(一又は複数)のグラフィックス処理装置(GPU)122を含んでいる。(本明細書では、同様の物の複数の例は、その物を特定する参照番号および必要に応じてその例を特定する括弧付き番号で示す。)各GPU122は、関連付けられたグラフィックスメモリ124を有する。GPU122およびグラフィックスメモリ124は、例えば、プログラマブルプロセッサ、特定用途向け集積回路(ASIC)およびメモリデバイス等の一又は複数の集積回路デバイスを用いて実施することができる。いくつかの実施形態では、GPU122およびグラフィックスメモリ124が、システム100の拡張スロット(PCI−Eスロット等)に挿入または当該拡張スロットから取り外し可能な一又は複数の拡張カードまたは他のアダプタで実施される。任意の数NのGPU122を用いることができる。
【0015】
[0023]各GPU122は、メモリブリッジ105およびバス113を介してCPU102および/またはシステムメモリ104から供給されるグラフィックスデータから画素データ(本明細書では「画素」ともいう)を生成することに関連する各種タスクを行うように構成することができ、各グラフィックスメモリ124と情報をやりとりして画素データ等を記憶したり更新したりする。例えば、GPU122は、CPU102上で実行する各種プログラムにより提供される2Dまたは3Dシーンデータから画素データを生成することができる。GPU122は、メモリブリッジ105を介して受信した画素データをさらなる処理の有無を問わずグラフィックスメモリ124に書き込むこともできる。各GPU122は、画素データをグラフィックスメモリ124から後述するGPU122の出力ポートへと送るように構成可能なスキャンアウトモジュール(本明細書ではディスプレイパイプラインともいう)も含んでいる。出力ポートは、モニタまたは別のGPU122に接続してもしなくてもよい。
【0016】
[0024]分散レンダリングモードでの動作のために、1つのGPU(例えばGPU122(0))がスキャンアウトされた画素を別のGPU(例えばGPU122(N−1))に送るように好適に構成され、その後者のGPU(例えばGPU122(N−1))は、それ自体のディスプレイパイプラインからの内部画素およびGPU122(0)から受信した外部画素間で選択する。3つ以上のGPU122を、スレーブGPU122がその画素を中間GPU122に送るように「デイジーチェーン」式に相互接続可能であり、中間GPU122は、それ自体の内部画素およびスレーブからの外部画素間で選択して、最終のマスターGPU(すなわちモニタに接続されたGPU)が最終の選択画素をディスプレイ装置に送るまで、選択した画素を別のGPU等に転送する。
【0017】
[0025]いくつかの実施形態では、任意のGPU122を任意の他のGPU122のスレーブとなれるように、物理的接続を何ら変えることなくGPU122の配置設定を調整することによってGPU122を互いに相互接続可能である。例えば、GPU122は、単方向または双方向リングトポロジーで接続可能である。
【0018】
[0026]各種の分散レンダリングモードがサポート可能である。例えば、分割フレームレンダリングでは、同じ画像の異なる部分をレンダリングするために異なるGPU122が割り当てられ、交互フレームレンダリングでは、表示される一連の画像中の異なる画像に異なるGPU122が割り当てられる。本発明には、特定の分散レンダリングモードが必須ということはない。
【0019】
[0027]本発明の実施形態によれば、GPU122は、「外部分散」AAモードでも動作可能である。このモードでは、GPU122の画素選択論理回路が、内部画素および外部画素の一方を選択して他方を除外するのではなくこれらを混合する。内部画素および外部画素が異なるサンプリング位置で同じ画像を表す場合には、画素混合の結果がAA解像動作(本明細書ではAAフィルタともいう)に相当する。本発明の別の実施形態によれば、1つのGPU122が、「内部分散」AAモードでも動作可能である。このモードでは、GPU122の画素選択論理回路が、同じGPU122の2つのディスプレイヘッドにより生成された画素を混合する。(外部分散モードおよび内部分散モードを含む)分散AAモードの例および関連する画素選択論理回路については後述する。
【0020】
[0028]いくつかの実施形態では、GPU122のいくつかまたは全てを、複数のGPU122のうち異なるものが異なるディスプレイ装置用の画像をレンダリングする「独立レンダリング」モードでも動作可能とすることができる。独立レンダリングモードで異なるGPU122によってレンダリングされた画像を互いに関連させてもさせなくてもよい。当然のことながら、GPU122は、上記または他のモードのいずれでも動作するように設定可能である。
【0021】
[0029]CPU102は、システム100のマスタープロセッサとして動作し、他のシステムコンポーネントの動作を制御および調整する。特に、CPU102は、GPU122の動作を制御するコマンドを発する。いくつかの実施形態では、CPU102はGPU122用のコマンドストリームをコマンドバッファに書き込むが、これはシステムメモリ104、グラフィックスメモリ124、またはCPU102およびGPU122の両方にアクセス可能な別の記憶場所とすることができる。GPU122は、コマンドバッファからコマンドストリームを読み出し、CPU102の動作と非同期でコマンドを実行する。コマンドは、画像を生成するための従来のレンダリングコマンドと、CPU102上で実行するアプリケーションがGPU122の画像生成に関連しないようなデータ処理のための処理能力を活用できるようにする汎用コンピュータコマンドとを含むことができる。
【0022】
[0030]本明細書に示すシステムは例示的であって、変更および修正が可能であることが理解されよう。ブリッジの数および配列を含む相互接続トポロジーは、所望のとおりに修正可能である。例えば、いくつかの実施形態では、システムメモリ104がブリッジを介するのではなく直接CPU102に接続され、他のデバイスがメモリブリッジ105およびCPU102を介してシステムメモリ104と通信する。他の代替的なトポロジーでは、グラフィックスサブシステム112が、メモリブリッジ105ではなくI/Oブリッジ107に接続される。また他の実施形態では、I/Oブリッジ107およびメモリブリッジ105を1つのチップ内に集積することもできる。本明細書で示す特定のコンポーネントは任意であって、例えば、任意の数のアドインカードまたは周辺デバイスをサポートすることもできる。いくつかの実施形態では、スイッチ116をなくし、ネットワークアダプタ118およびアドインカード120、121が直接I/Oブリッジ107に接続する。
【0023】
[0031]システム100の他の部分へのGPU122の接続も変更することができる。いくつかの実施形態では、グラフィックスシステム112が、システム100の拡張スロットに挿入可能な一又は複数の拡張またはアドインカードとして実施される。他の実施形態では、GPUがメモリブリッジ105またはI/Oブリッジ107等のバスブリッジとともに1つのチップ上に集積される。
【0024】
[0032]各GPUには、任意の量のローカルグラフィックスメモリを設けることができ(ローカルメモリ無しの状況を含む)、ローカルメモリとシステムメモリを任意の組み合わせで用いることができる。例えば、統合メモリアーキテクチャ(UMA)実施形態では、専用グラフィックスメモリデバイスは設けないが、GPUのいくつかまたは全てがシステムメモリを専用またはほとんど専用で用いる。UMA実施形態では、GPUをバスブリッジチップに集積するか、またはGPUをブリッジチップおよびシステムメモリに接続する高速バス(例えばPCI−E)を持った個別チップとして設けることができる。
【0025】
[0033]加えて、本発明の態様を具現化するGPUは、汎用コンピュータシステム、ビデオゲームコンソールおよび他の特殊用途コンピュータシステム、DVDプレーヤー、携帯電話または携帯情報端末等のハンドヘルドデバイス等の各種デバイスに組み込むことができる。[複数のディスプレイヘッドを備えたGPU]
【0026】
[0034]図2は、本発明の実施に使用可能なGPU122内の画素出力パスのブロック図である。マルチGPUグラフィックスシステムが本発明の実施形態には必要ない場合もあるが、GPU122は、このようなシステムで使用可能なように好適に構成されている。
【0027】
[0035]特に、図2に示すように、GPU122は、メモリインターフェース204に結合されたディスプレイ(またはスキャンアウト)パイプライン202を含んでいる。ディスプレイパイプライン202は、ディスプレイヘッド206a(「ヘッドA」)およびディスプレイヘッド206b(「ヘッドB」)にも結合されている。GPU122は、デジタル出力ポート210、211およびアナログ出力ポート212、213を含む複数の出力ポート210〜213を有する。GPU122は、別のGPUまたは別の外部デジタルデバイスとの通信を含む様々な目的用に設定可能な2つの多目的入力/出力(MIO)ポート214a(「MIOA」)および214b(「MIOB」)も有している。ディスプレイヘッド206aおよび206bは、クロスバー220を介してそれぞれ出力ポート210〜213およびMIOポート214a、214bに接続されている。
【0028】
[0036]メモリインターフェース204は、GPU122により生成される画素データを記憶するメモリ(図2には図示せず)、例えば図1のグラフィックスメモリ124に結合されている。ディスプレイパイプライン202は、メモリインターフェース204と通信して記憶された画素データにアクセスする。ディスプレイパイプライン202は、画素データをディスプレイヘッド206a、206bのいずれかまたは両方に送る。いくつかの実施形態では、ディスプレイパイプライン202がディスプレイヘッド206a、206bに送る前に画素データに各種の処理動作を施すが、ディスプレイヘッド206aに送られる画素データは、ディスプレイヘッド206b宛の画素データとは異なって処理されてもされなくてもよい。加えて、処理およびディスプレイヘッド206aへの送達用のディスプレイパイプライン202に提供される画素データは、処理およびディスプレイヘッド206bへの送達用のディスプレイパイプライン202に提供される画素データと同じでも異なってもよい。本発明には、ディスプレイパイプライン202およびメモリインターフェース204の特定の構成が必須ということはなく、詳細な説明は省略する。
【0029】
[0037]デジタル出力ポート210、211は、概して従来の設計のものとしてよく、画素データを修正してデジタル出力標準に準拠する回路を含むことができる。例えば、一実施形態では、ポート210、211のそれぞれが標準DVI(Digital Video Interface)コネクタ用のTMDS(Transition Minimized Differential Signaling)を実施する。同様に、アナログ出力ポート212、213は、概して従来の設計のものとしてよく、例えば、多数の例が当分野で既知のあらゆるアナログビデオ標準に準拠するデジタル/アナログコンバータを含むことができる。本発明には、特定のデジタルまたはアナログ出力ポートの有無、その数または性質が必須ということはないことが理解されよう。
【0030】
[0038]MIOAポート214aおよびMIOBポート214bは、ディスプレイヘッド206a、206bのいずれかにより生成された画素データをGPU122の出力ライン上へと送り出す出力ポートとして設定可能である。MIOAポート214aおよびMIOBポート214bは、ディスプレイヘッドA206aまたはディスプレイヘッドB206bに外部画素データを送る入力ポートとしても設定可能である。いくつかの実施形態では、MIOAポート214aおよびMIOBポート214bをそれぞれ個別に入力ポートまたは出力ポートのいずれかとして設定可能である。MIOAポート214aおよびMIOBポート214bの設定は、システム起動中に決定するか、またはシステム動作中の様々な時点で動的に修正が可能である。例えば、各MIOポートは、ポート設定を特定する値を記憶する制御レジスターを含むことができ、新たな値を所望のとおりシステム起動時または他の時点でレジスターに書き込むことができる。
【0031】
[0039]ヘッドA206aおよびヘッドB206bは、クロスバー220を介してそれぞれMIOポート214a、214bだけでなく出力ポート210〜213に結合される。この実施形態では、クロスバー220が、ヘッドA206aからポート210〜213、214aまたは214bのいずれか1つへの任意の接続をサポートするように、また同時にヘッドB206bから現状ではクロスバー220によりヘッドA206aに接続されていないポート210〜213、214aまたは214bのいずれか1つへの任意の接続をサポートするように設定可能である。例えば、GPU122が、ヘッド206a、206bから2つの異なるモニタに(例えば、デジタル出力ポート210、211および/またはアナログ出力ポート212、213のいずれか2つを介して)同時に画素データを送り出すことが可能である。あるいは、GPU122が、ポート210〜213の1つを介してモニタに、またMIOAポート214aまたはMIOBポート214bを介して別のGPUに同時に画素データを送り出すことが可能である。例によっては、ディスプレイヘッド206a、206bの一方または両方をアイドル状態、すなわちどの出力ポートにも画素を送っていない状態にすることもできる。
【0032】
[0040]MIOポート214a、214bは、画素データをGPU122の別の1つから受信し、受信した画素データをディスプレイヘッド206a、206b内へと通信するようにも設定可能である。各GPU122は、各ディスプレイヘッド206a、206b内にMIOポート214a、214bの一方から受信した「外部」画素、それ自体のディスプレイパイプライン202から受信した「内部」画素、または内部画素および外部画素の組み合わせを選択するための画素選択論理回路(後述する)も有している。
【0033】
[0041]いくつかの実施形態では、クロスバー220がシステム起動で設定され、また他の実施形態では、システム動作中に接続を変更可能なようにクロスバー220が動的に設定可能である。クロスバー220は、MIOポート214a、214bの一方で受信された入力された画素データをディスプレイヘッド206a、206bのいずれかに結合するように設定可能とすることもできる。
【0034】
[0042]図3Aは、本発明の実施形態によるGPU122のディスプレイヘッド206a内の画素選択論理回路300のブロック図である。当然のことながら、ディスプレイヘッド206bは類似の設計の画素選択論理回路を有することができる。いくつかの実施形態では、GPU122の各ディスプレイヘッド206a、206bがそれ自体の画素選択論理回路300を有している。
【0035】
[0043]画素選択論理回路300は、第1のパス302上で図2のディスプレイパイプライン202から内部画素を受信する。図2のMIOAポート214a(または、いくつかの実施形態ではMIOBポート214b)が入力ポートとして設定される場合には、画素選択論理回路300は第2のパス304上で外部画素も受信する。
【0036】
[0044]外部画素および内部画素は、それぞれ画素合成回路306へと伝播され、これが外部画素および内部画素を混合して混合画素を生成する。画素合成回路306は、例えば従来の演算論理回路を用いて実施することができる。一実施形態では、画素合成回路306が、内部画素を多くの候補除数(例えば1、2、4等)の1つにより除する第1の除算回路308と、(除算後の)内部画素を外部画素に加算して合計画素を生成する加算回路310と、制御信号(PSEL1)に応答して内部画素および合計画素間で選択をする選択回路312と、選択された画素を多くの候補除数(例えば1、2等)の1つにより除する第2の除算回路314とを含んでおり、パス316上に混合画素としての結果を与える。
【0037】
[0045]パス304上の外部画素およびパス316上の混合画素は、選択回路318(マルチプレクサ等)に渡される。制御信号(PSEL2)に応答して、選択回路318が図2のクロスバー220に接続する出力パス320に送るために内部画素、混合画素、または外部画素のいずれかを選択する。
【0038】
[0046]PSEL1およびPSEL2信号は、ディスプレイヘッド206a中の制御論理回路(明示せず)により好適に生成される。いくつかの実施形態では、概して従来の設計のものとしてよいこの制御論理回路が、図1のGPU102上で実行するグラフィックスドライバプログラムにより生成される制御情報に応答する。例えば、除算回路308、314用の候補除数間で選択して特定用途向けの適当な加重平均を生成することによって、類似の制御情報を画素合成器308の動作を制御するためにも用いることができる。本発明の教示を利用可能な当業者であれば、PSELおよび画素合成器制御信号を生成するのに適した制御論理回路を実施可能なので、制御論理回路の詳細な説明は省略する。
【0039】
[0047]図3Bは、本発明の代替的な実施形態による画素選択論理回路350のブロック図である。画素選択論理回路350は、図3Aの画素選択論理回路300と概ね同様であるが、ガンマ補正画素を混合する能力を持って好適に設計されている。画素選択論理回路350は、第1のパス352上で図2のディスプレイパイプライン202から内部画素を受信する。内部画素は画素合成器358へと伝播される。MIOAポート214aが入力ポートとして設定される場合には、画素選択論理回路350は第2のパス354上で外部画素も受信する。この外部画素も画素合成器358へと伝播される。
【0040】
[0048]画素合成器358は、内部画素および外部画素を混合し、結果として単一のパス360上に混合画素を供給する。画素合成器358は、図3Aの除算回路306に類似の除算回路および/または図3Aの加算回路308に類似の加算器を含むことができる。加えて(または代わりに)、画素合成器358は、パス352および354上で受信したガンマ補正画素を混合する演算論理回路を含むこともできる。当分野で既知のように、ガンマ補正は、例えば画素値Pを定数γについてPγに変換することによりディスプレイ装置で線形強度応答を生成する非線形スケールに合わせて画素値を調整する。(典型的なディスプレイ装置については、定数γがおよそ2.0〜2.5である。)このような一実施形態では、γ≒2.2についてγ補正出力画素Poγが、以下の式を用いて算出可能である。
Poγ=(4Piγ+4Peγ+|Piγ-Peγ|)/4 (式1)
【0041】
[0049]ここで、Piγおよび4Peγは、パス352および354上に供給されるガンマ補正画素を表す。当業者であれば、厳密な結果に必要な計算ではなく簡単なハードウェアを用いて式1が許容可能な近似を与えることが分かるだろう。(例えば、4による乗算および除算はビットシフトとして実施可能である)また、他の近似で代用可能なことも理解されよう。
【0042】
[0050]図3Bを再び参照すると、選択マルチプレクサ362が、パス352上で内部画素を、パス354上で外部画素を、及び、パス360上で混合画素を受信する。画素選択信号(PSEL)に応答して、選択マルチプレクサ362は、図2のクロスバー220に接続する出力パス364へ送るためにこれらの候補画素の1つを選択する。出力パス364は、第2の除算回路366を含むことができるが、これは図3Aの除算回路314と同様であってもよい。代替的な実施形態では、図3Aに示すものと同様の2つの選択マルチプレクサを出力画素の選択に用いるが、除算回路366を第2の選択マルチプレクサ前方に配置してもよい。他の選択回路構成も用いることができる。
【0043】
[0051]いくつかの実施形態では、画素合成器350は、画素がガンマ補正されない場合には簡単な加算を用いて、ガンマ補正画素および非ガンマ補正(線形)画素のいずれかに動作するように設定可能である。この設定は、起動動作中(システム起動時)にグラフィックスドライバにより有利に行われる。ガンマ補正フィルタが必要ないのは当然であるが、いくつかの実施形態では最終の画素選択後に任意のガンマ補正を適用することができる。[複数のGPUを用いた分散アンチエイリアシング]
【0044】
[0052]画素選択論理回路300または画素選択論理回路350を備えた図2のGPU122は、2つ以上のGPU122を備えたシステムでの分散アンチエイリアシング動作について好適に使用可能である。図4Aは、マスター/スレーブ読み出し構成の2つのGPU122(0)および122(1)を有するグラフィックスサブシステム400の簡略ブロック図である。(明確にするために、アクティブポートとディスプレイヘッドのみを示す。この例では、GPU1つにつきディスプレイヘッドが1つだけ用いられる。)スレーブGPU122(1)は、そのMIOAポート214a(1)が出力ポートとして設定され、マスターGPU122(0)は、そのMIOAポート214a(0)が入力ポートとして設定されている。MIOAポート214a(1)は、MIOAポート214a(0)に結合され、出力画素Po1をスレーブGPU122(1)からマスターGPU122(0)へと流す。
【0045】
[0053]スレーブGPU122(1)のヘッドA206a(1)は、スレーブGPU122(1)のディスプレイパイプライン202(1)により与えられた画素Pi1を出力画素としてMIOAポート214a(1)に転送する。スレーブGPU122(1)からの出力画素Po1は、マスターGPU122(0)のMIOAポート214a(0)により受信され、これが画素をディスプレイヘッドA206a(0)に転送する。ヘッドA206a(0)では、画素選択論理回路300(0)(図3の画素選択論理回路300の一例)が、マスターGPU122(0)のディスプレイパイプライン202(0)からの内部画素Pi0、スレーブGPU122(1)のディスプレイパイプライン202(1)由来の外部画素Po1、または、加算回路308により供給される合計(例えば、Pi0+Po1)を選択するように動作する。
【0046】
[0054]マスターGPU122(0)のヘッドA206a(0)は、選択された画素(Pfinal)を出力ポート、この場合はデジタル出力ポート210(0)に送る。GPU122(0)のヘッドA206a(0)がMIOAポート214b(0)(図2Cに明示せず)に画素データを送るように設定することもでき、これを第3のGPU122のMIOポートに接続し、それで第3のGPU122がGPU122(0)をマスターとすることが理解されよう。このように、任意の数のGPU122をデイジーチェーン式に接続することができる。
【0047】
[0055]本発明の実施形態によれば、GPU122(0)および122(1)は、外部分散アンチエイリアシング(AA)モードで用いることが可能である。このモードでは、各GPU122が、GPU122(0)によって用いられるサンプリング位置がGPU122(1)によって用いられるサンプリング位置と異なるように、表示パラメータまたはサンプリングパラメータにいくらかの変化量をもって、同じ画像をレンダリングする。例えば、若干異なる表示域または表示面の法線を2つのGPU122について画成し、2つの画像の画素境界に小さいオフセットを作り出すこともできる。あるいは、画素内のサンプリング位置が(例えばグラフィックスドライバにより)設定可能な場合には、各GPU122を同じ表示パラメータの組と各画素内の異なるサンプリング位置を用いるように設定することもできる。
【0048】
[0056]分散AAモードでは、GPU122(0)のディスプレイヘッド206aで画素選択論理回路300(0)により受信された外部画素Po1および内部画素Pi0が、最終画像の同じ画素についての異なるサンプリング位置に対応する。内部画素および外部画素を平均することによって、表示解像度の2倍のアンチエイリアシングが得られる。より具体的には、選択マルチプレクサ310が加算回路308により提供される画素合計Po1+Pi0を選択するように設定されており、除算回路316が選択された画素合計を2で除するように設定されているため、最終画素がPfinal=(Po1+Pi0)/2となる。このようにして、画素選択論理回路300は2×AAフィルタを実施可能である。
【0049】
[0057]GPU122(0)および122(1)が、内部画素または外部画素の一方が他方を除外するように選択されるモードを含む他の分散レンダリングモードでも動作可能であることに留意されたい。特定の選択は、分散レンダリングモードの詳細、例えば、異なるGPU122が同じフレーム異なる部分と異なる連続的なフレームのいずれをレンダリングするかに依存することになるが、本発明とは関係ない。また、3つ以上のGPU122があれば、より高度なアンチエイリアシングを達成可能である。例えば、任意の数のGPU122をそれぞれのMIOAおよびMIOBポートを用いてデイジーチェーン式に接続可能であり、デイジーチェーン内の各GPUが、適切な重み係数を用いてそれ自体の内部画像を上流のGPUから受信する外部画像と混合可能である。
【0050】
[0058]本明細書に記載のディスプレイヘッド、画素選択論理回路、および分散AA動作は例示的なものであり、変更および修正が可能であることが理解されよう。例えば、本明細書の除算回路は、少数の離散除数による除算をサポートするものである。他の実施形態では、広範囲のアンチエイリアシングフィルタがサポートされるように、除算回路が(任意に選択された除数を含む)より多くの離散除数をサポートすることもある。また、除算回路は、本明細書に記載のものとは異なる位置に配置することができ、除算回路の数を修正することもできる。例えば、除算回路を内部画素パスに加えて、またはその代わりに外部画素パス上に配置することもできる。
【0051】
[0059]選択回路318の特定の構成を修正することもできる。当業者であれば、内部画素および外部画素の両方から得られた内部画素、外部画素および混合画素間で制御可能に選択できるあらゆる回路素子または回路素子の組み合わせを選択回路として使用可能であることが分かるであろう。
【0052】
[0060]本明細書で用いるように、「画素」は、概して画像内のある位置でサンプリングされたカラー値のあらゆる表現またはこのような値(例えば図3の加算回路308により生成されたような)の組み合わせを指す。GPUでパイプラインをレンダリングすることにより、名目上の解像度(ここで解像度は画像内の画素数を指す)で画素が生成されるが、これがディスプレイ装置の解像度と一致することもしないこともある。いくつかの実施形態では、ディスプレイパイプラインが、名目上の解像度をディスプレイ解像度に変換するために必要とされるあらゆるアップフィルタリングまたはダウンフィルタリングを行う。
【0053】
[0061]本明細書中のMIOポートおよびディスプレイヘッドを本明細書中の「A」および「B」とするラベリングは、単に説明の利便性のためである。当然のことながら、任意のMIOポートを任意の他のMIOポートに接続可能であり、そのポートが出力ポートとして設定される場合にいずれかのディスプレイヘッドがいずれかのMIOポートを駆動可能である。加えて、いくつかのGPUが2つ超または2つ未満のMIOポートおよび/または2つ超または2つ未満のディスプレイヘッドを含むことができる。
【0054】
[0062]一般に、1つのGPUに別のGPUとの画素データ通信を可能にする任意の1つのポートまたは複数のポートをI/Oポートとして用いて本発明を実施することができる。いくつかの実施形態では、上述のように、MIOポートが別のGPUと通信する以外の目的のためにも設定可能である。例えば、MIOポートは、TVエンコーダ等の各種外部デバイスと通信するように設定可能である。いくつかの実施形態では、DVO(インテル社製Digital Video Output Interface)または他のビデオ出力標準をサポート可能である。いくつかの実施形態では、グラフィックスアダプタをアセンブルする際に各MIOポートの設定を決定する。システム起動時に、アダプタがシステムにそのMIOポートの設定について通知する。他の実施形態では、MIOポートを専用入力または出力ポートを置き換えることもできる。
【0055】
[0063]I/Oポート、ディスプレイヘッド、および他のグラフィックスサブシステムのアスペクトの設定は、全てのグラフィックスプロセッサと通信するように構成されたシステム設定ユニットにより達成することができる。いくつかの実施形態では、システム設定ユニットが、マルチプロセッサグラフィックスサブシステムを含むシステムのCPU上で実行するグラフィックスドライバプログラムで実施される。ハードウェアおよび/またはソフトウェアコンポーネントのあらゆる組み合わせを含む他の任意の適当なエージェントを、システム設定ユニットとして用いることができる。[内部分散アンチエイリアシング]
【0056】
[0064]本発明の実施形態によれば、1つのGPU122の2つのディスプレイヘッド206a、206bをマスター/スレーブ形式で互いに結合することができる。この形式では、GPU122が、マスターとして動作するディスプレイヘッド(例えばディスプレイヘッドA206a)の画素選択論理回路300を用いて「内部分散」AAフィルタリングを実行可能である。
【0057】
[0065]図4Bは、本発明の実施形態によるマスター/スレーブ形式でディスプレイヘッド206bに接続されたディスプレイヘッド206aを示すGPU122のブロック図である。当然のことながら、図4BのGPU122は図2のGPU122と同一である。図4BではアクティブなI/Oポートのみを示しており、クロスバー220は示していない。図4Bのディスプレイパイプライン202は、2つの平行なセクションを有して示されている。画素をディスプレイヘッド206aへと送るディスプレイパイプラインA402aと、画素をディスプレイヘッド206bへと送るディスプレイパイプラインB402bである。ディスプレイパイプラインA402aおよびB402bは、それぞれ従来の設計とすることができ、それぞれ各種の画素処理動作を行うようにすることができる。ディスプレイパイプライン402aおよび402bは、所望のとおりに同じ動作を行うことも異なる動作を行うこともできる。
【0058】
[0066]MIOBポート214bは、画素転送パス400を介して同じGPU122のMIOAポート214aに結合されている。画素転送パス400は、ディスプレイヘッドB206bにより生成された画素をMIOBポート214bからMIOAポート214aへ転送する。MIOAポート214aは、受信した画素をGPU122のディスプレイヘッドA206aに送る。画素転送パス400は、任意の適当な信号転送技術を用いて実施することができる。以下で例を説明する。
【0059】
[0067]ディスプレイヘッドA206aの観点からは、ディスプレイヘッドB206bから受信した画素は、異なるGPUから受信した画素と区別ができない。よって、例えば、ヘッドA206a由来の「内部」画素(PA)、ヘッドB206b由来の「外部」画素(PB)、または、画素合成回路308により画素PAおよびPBから作り出した混合画素のいずれか1つを出力画素として選択するようにディスプレイヘッドA206aの画素選択論理回路300が動作可能である。(画素PBが画素PAとは異なりディスプレイパイプラインA402aによりディスプレイヘッドA206aに提供されないという意味で、画素PBはディスプレイヘッドA206aに対して「外部」である。)
【0060】
[0068]この構成では、GPU122が、ディスプレイヘッドA206の画素選択論理回路300により混合されるサンプル値を供給する2つのディスプレイパイプライン402a、402bによる「内部分散」AAの実行に使用可能である。動作においては、GPU122のレンダリングパイプライン(明示せず)が、2つの画像について用いられるサンプリング位置が互いに異なるように、表示パラメータまたはサンプリングパラメータにいくらかの変化量をもって、同じシーンの2つの画像をレンダリングする。例えば、若干異なる表示域または表示面の法線を2つのGPU122について画成し、2つの画像の画素境界に小さいオフセットを作り出すこともできる。あるいは、画素内のサンプリング位置が(例えばグラフィックスドライバにより)設定可能な場合には、各GPU122を同じ表示パラメータの組と各画素内の異なるサンプリング位置を用いて各画像を生成することもできる。
【0061】
[0069]レンダリングした画像の一方がフレームバッファ「A」404に記憶され、他方がフレームバッファ「B」406に記憶される。フレームバッファA404およびB406は、GPU122のオンチップメモリを含む任意の1つのメモリデバイスまたは複数のメモリデバイス、図1のグラフィックスメモリ124および/またはシステムメモリ104で実施可能である。この2つのフレームバッファは所望のとおりに同じメモリデバイス中にも異なるデバイス中にも配置することができる。
【0062】
[0070]ディスプレイパイプラインB402bは、フレームバッファB406から画素を読み出し、各種の処理動作(概して従来の性質のものでよい)を画素に施し、得られた画素PBをディスプレイヘッドB206bに転送する。ディスプレイヘッドB206bは、画素PBを選択するように動作する画素選択論理回路300を有しており、それらの画素がクロスバー220(図4に明示せず)を介してMIOBポート214bへと転送される。画素PBは、画素パス400を介して同じGPU122のMIOAポート214aへと転送され、これが画素PBをディスプレイヘッドA206aに転送する。
【0063】
[0071]この動作と平行して、ディスプレイパイプラインA402aがフレームバッファAから画素を読み出し、画素に(概して従来の性質のものでよい)各種の処理動作を施し、得られた画素PAをディスプレイヘッドA206aに転送する。ディスプレイパイプラインB402b、ディスプレイヘッドB206b、および画素パス400は、同じスクリーン画素に対応する画素値PAおよびPBが同時に(例えば、同じクロックサイクルで)ディスプレイヘッドA206aの画素選択論理回路300に送られるように、適切なタイミングで好適に設定される。
【0064】
[0072]画素合成回路308内では、加算回路310が画素PAとPBを加算し、マルチプレクサ312が合計画素を選択し、除算回路314が合計を2で除し、こうしてパス316上の混合画素が画素PAおよびPBの平均となる。マルチプレクサ318は、混合画素を出力画素Pfinalとして選択する。ディスプレイヘッドA206aが出力画素Pfinalをディスプレイ装置への送信のために出力ポート(例えばデジタル出力ポート210)に送る。
【0065】
[0073]GPU122のレンダリングパイプラインが各フレームを2回レンダリングするため、本明細書に記載の内部分散AAモードで動作する際のGPU122の最大フレームレートが非AAモードで動作する際の最大フレームレートよりも概して低いことに留意されたい。いくつかの実施形態では、この内部分散AAモードのフレームレートはおよそ非AAモードのフレームレートの約1/2である。リアルタイムアニメーションについては、内部分散AAモードのフレームレートが約毎秒30フレーム(以上)であれば、フレームレートの低下はアニメーションの平滑性にほとんどあるいは全く悪影響を与えない。また、非AAモードで生成される画質は、内部分散AAモードで生成される画質よりも概して低くなる。このように、内部分散AAは高画質化と引き換えにフレームレートが低下する。
【0066】
[0074]本明細書に記載の内部分散AAモードを用いて得られるフレームレートが、単一のGPUにおいて従来のAA技術(例えば、レンダリングパイプラインおよび/またはディスプレイパイプラインでのフィルタリング)を用いて得られるフレームレートに匹敵することについても留意されたい。単一のGPUを用いた従来のAAには、単一の画像を生成するが、1画素あたり複数のサンプルを用いるGPUのレンダリングパイプラインが必要となる。1画素あたりより多くのサンプルを処理することによって、画質の改善と引き換えに非AAモードに対するフレームレートも低下する。2画像のレンダリングの方法によって、レンダリングパイプラインにおいて管理され、内部分散AAモードを用いたGPUのスループットは、従来のAAを用いるGPUのスループットに匹敵することができる。
【0067】
[0075]より高次のAAフィルタを実施することもできるが、このようなフィルタは単一パイプラインおよび内部分散アンチエイリアシング動作の組み合わせを採用することができる。一実施形態では、ディスプレイパイプラインA402aおよびディスプレイパイプラインB402bがそれぞれ内部N×AAフィルタを実施するフィルタオンスキャン(FOS)モジュール(明示せず)を含んでいる。より具体的には、レンダリングされる画像の各バージョンについて、GPU122のレンダリングパイプラインが、例えば従来のスーパーサンプリングおよび/またはマルチサンプリング技術を用いて、1画素あたりN個(例えば2、4または1より大きい任意の他の数)のサンプルを生成する。画像の一方のバージョン用のサンプルがフレームバッファA404に記憶され、画像の他方のバージョン用のサンプルがフレームバッファB406に記憶される。
【0068】
[0076]ディスプレイパイプラインA402aは、各画素についてのN個のサンプル全てをフレームバッファAから受信する。ディスプレイパイプラインA402a内では、第1のフィルタオンスキャン(FOS)モジュール(図4には明示せず)が、N×AAフィルタを実施し、N個のサンプルを混合して1画素あたり1つのカラー値を生成する。FOSモジュールにより決定されたカラー値は、画素PAとしてディスプレイヘッドA206aに(場合によってはさらなる処理の後で)供給される。
【0069】
[0077]同様に、ディスプレイパイプライン402bは、各画素についてのN個のサンプル全てをフレームバッファB406から受信する。ディスプレイパイプライン402b内では、第2のFOSモジュール(これも図4には明示せず)が、N×AAフィルタを実施し、N個のサンプルを混合して1画素あたり1つのカラー値を決定する。第2のFOSモジュールにより決定されたカラー値は、画素PBとしてディスプレイヘッドB206bに(場合によってはさらなる処理の後で)供給される。
【0070】
[0078]このように、ディスプレイパイプ402aおよび402bによりそれぞれ生成された画素PAおよびPBは、それぞれN×オーバーサンプリング画像からのフィルタ処理画素とすることが可能である。フレームバッファA404を埋めるために用いられるサンプリング点がフレームバッファB406を埋めるために用いられるものと一致しない限り、各ディスプレイパイプ402a、402b内のN×AAフィルタを上述の内部分散AAフィルタ技術に組み合わせることによって、(2N)×AAフィルタが得られる。例えば、各ディスプレイパイプ402a、402b内のFOSモジュールが4×AAフィルタであれば、GPU122は8×AAを提供可能である。
【0071】
[0079]本発明には、特定のFOSモジュールまたはAAフィルタリングアルゴリズムが必須ということはなく、従来のモジュールおよびアルゴリズムを用いることができる。したがって、詳細な説明は省略する。いくつかの実施形態では、得られる最終画像が特定のディスプレイパイプラインによって処理される画像のバージョンに依存しないように、ディスプレイパイプラインA402aおよび402b内のFOSモジュールが同一のフィルタアルゴリズムに適合する。また、画像生成プロセスの初期にN×AAフィルタリングを行うことが可能である。例えば、代替的な一実施形態では、従来の技術を用いてGPU122のレンダリングパイプライン内でN×AAフィルタリングを行うこともできる。
【0072】
[0080]いくつかの実施形態では、異なるフレームバッファを埋めるサンプリング点が、一致するサンプリング点がないように選択される。例えば、図5Aは画素500に適用される「グリッド」サンプリングパターンを図示している。画素は、画素内の位置501〜504(丸で示す)で4回サンプリングされる。図5Bは画素500に適用される「回転グリッド」サンプリングパターンを図示している。画素は、画素内の位置501〜504とは異なる位置511〜514(ひし形で示す)で4回サンプリングされる。
【0073】
[0081]一実施形態では、フレームバッファA404内の画素データが図5Aのグリッドサンプリングパターンを用いて生成され、フレームバッファB406内の画素データが図5Bの回転グリッドサンプリングパターンを用いて生成される。ディスプレイパイプA402aのFOSモジュールは、4つのサンプル値(501〜504)にフィルタをかけて1つの値PAとし、ディスプレイパイプB402bのFOSモジュールは、4つのサンプル値(511〜514)にフィルタをかけて1つの値PBとする。ディスプレイヘッド206aの画素選択論理回路300が上述のように値PAおよびPBを混合して、全部で8つのサンプルの平均に相当する最終画像を得る。この手順は、図5Cの8点パターンを用いて各画素をサンプリングする単一のレンダリングプロセスと同じアンチエイリアシングパワーをもたらす。
【0074】
[0082]本明細書に記載の内部分散AA技術は例示的なものであって、変更および修正が可能であることが理解されよう。例えば、本明細書に記載のGPU122は、それぞれが最大限で1つの出力ポートを駆動可能な丁度2つのディスプレイヘッドを有しており、その結果、両方のディスプレイヘッドを内部分散アンチエイリアシングに用いれば、GPU122がディスプレイ装置に最大限で1つの画素ストリームを送ることができる。しかしながら、本発明の実施形態は、少なくとも2つのディスプレイヘッドならびに適当な画素選択論理回路およびI/Oポートを有する任意のGPUで実施することができる。GPUが3つ以上のディスプレイヘッドを有する場合には、GPUが内部分散AAをサポート可能であり、2つ以上のディスプレイデバイスに個々の画素ストリームを供給することも可能である。加えて、GPUが3つ以上のディスプレイヘッドを有する場合には、GPUのAAパワーを一層高めるために、GPUのディスプレイヘッドの全てをマスター/スレーブデイジーチェーン式に互いに接続できるようになる。
【0075】
[0083]また、本明細書に記載のGPU122は、いずれも内部分散AAに用いられる2つのMIOポートを有している。この実施形態では、ヘッドA206aとヘッドB206bのどちらも任意の他のGPUまたはディスプレイヘッドに対してマスターあるいはスレーブとして使用できなくなる。他の実施形態では、GPUが追加のMIOポートを有することができ、このMIOポートが1つのポートに画素の受信送信を同時に行わせ、内部分散AAと組み合わせて他のGPUとの相互接続を可能にする動作モードを有することができる。例えば、第3のMIOポートがある場合、そのポートは、外部画素を別のGPUからディスプレイヘッドB206bに送る入力ポートまたはディスプレイヘッドA206aにより生成された画素を別のGPUに送る出力ポートとして設定することもできる。このような実施形態において、他のGPUはそれ自体の内部分散AAフィルタリングを行うように設定されることもされないこともある。[画素転送パス]
【0076】
[0084]本発明の実施形態による画素転送パス実施の例について説明する。明らかなように、画素転送パスはGPUの外部にあっても内部にあってもよい。
【0077】
[0085]図6は、本発明の実施形態によるプリント基板カードとして実施され、外部画素転送パスを用いて構成されたグラフィックスアダプタ600を示す。グラフィックスアダプタ600は、PCI−Eまたは別の相互接続標準に適合するプリント回路基板(PCB)602を用いて拡張カードとして実施される。GPU122は、PCB602上に実装され、PCB602上で配線(図示せず)を介してシステムコネクタ604と電気的に結合される。システムコネクタ604は、PCI−E拡張スロット(または任意の他種の拡張スロット)に挿入可能なように設計され、GPU122と図1のシステム100等のコンピュータシステムの他の部分の間の通信を可能にする。GPU122は、PCB602上で配線(図示せず)を介してディスプレイ出力コネクタ606とも電気的に結合されている。ディスプレイ出力コネクタ606は、GPU122のデジタル出力ポート210、211またはアナログ出力ポート212、213(図2参照)の1つと好適に結合される。いくつかの実施形態では、当分野で既知のように、PCB602が、それぞれが出力ポート210〜213の異なる1つに結合された複数のディスプレイ出力コネクタ606を提供することができる。
【0078】
[0086]PCB602は、同一設計が可能な2つのグラフィックスエッジコネクタ614a、614bも含んでいる。グラフィックスエッジコネクタ614aは、配線616を介してGPU122のMIOAポート214aに接続しており、グラフィックスエッジコネクタ614bは、配線618を介してGPU122のMIOBポート214bに接続している。各グラフィックスエッジコネクタ614a、614bは、取り外し可能な相互接続デバイスとの電気的かつ機械的接続用に構成されている。いくつかの実施形態では、グラフィックスエッジコネクタ614a、614bが同一の構成を有し、交換して用いることができる。
【0079】
[0087]一実施形態のグラフィックスアダプタ600は、2つ以上のGPUが協働してレンダリングタスクの異なる部分を行う分散レンダリングシステムでの使用のために設計されている。このようなシステムは、例えば、各CPUが画像の異なる部分をレンダリングする分割フレームモード、各CPUが一連の画像中の異なる画像をレンダリングする代替フレームモード、または分散アンチエイリアシングモードで動作させることができる。これらモードのそれぞれにおいて、1つのGPU(マスター)がもう1つのGPU(スレーブ)から画素を受信し、マスターGPU内の画素選択論理回路300が上述のようにディスプレイ用の画素を選択する。異なるグラフィックスアダプタ600のGPUは、適当な相互接続デバイスを用いてそれぞれのグラフィックスエッジコネクタ614a、614bを介して有利に接続される。
【0080】
[0088]本発明の実施形態では、取り外し可能な相互接続デバイス620が、図6に示すように、同じグラフィックスアダプタ600のグラフィックスエッジコネクタ614a、614bに接続可能なように構成かつ形成されている。相互接続デバイス620は、例えば、グラフィックスエッジコネクタ614a、614bを受容するレセプタクルを片側に有するリボンケーブルや長さに沿ってプリントされた配線付きPCBとすることが可能であり、2つのグラフィックスエッジコネクタ614a、614bを互いに接続する。
【0081】
[0089]この実施形態では、相互接続デバイス620が、グラフィックスアダプタ600によりサポートされる分散レンダリングシステムのタイミング特性を利用して画素転送パス400(図4)を構築する。より具体的には、分散レンダリング構成において、GPU122のMIOBポート214bから異なるグラフィックスアダプタ600上のGPUのMIOAポート(またはMIOBポート)への画素転送パスが、転送パスの任意のセグメントに沿って含まれ得る任意の電子コンポーネント(FIFO、ラッチ等)だけでなく、配線618および/または616の長さおよび2つのアダプタ間の相互接続デバイス由来の特性転送時間を有する。分散レンダリング動作では、スレーブGPUおよびマスターGPUからの画素がマスターGPUのディスプレイヘッドにほぼ同時に(例えば同じクロックサイクル中に)到達するように、スレーブGPUのディスプレイヘッドからマスターGPUのディスプレイヘッドへの画素の転送が有利に調整される。
【0082】
[0090]相互接続デバイス620は、異なるGPUを接続する分散レンダリング相互接続デバイスとの送信時間マッチングを与え、相互接続デバイス620により提供される画素転送パスは、信号を正しいタイミングでMIOAポート214aに送る。このように、外部相互接続デバイスを用いた内部分散AAの実施には、元々分散レンダリング用に設計されたGPU122またはアダプタカード600に何ら内部修正を必要とするものではない。
【0083】
[0091]本明細書に記載のグラフィックスアダプタおよび相互接続デバイスは、例示的なものであって、変更および修正が可能であることが理解されよう。アダプタおよび相互接続デバイスの形状、レイアウト、および材料組成は、本明細書で示し記載したものから修正することができ、MIOポート間のデータ転送用にあらゆる通信プロトコルを実施することができる。
【0084】
[0092]代替的な一実施形態では、例えばパス618〜パス616を接続する配線を用いて、相互接続デバイス620をPCB602の一部として実施することもできる。この実施形態では、パス618からパス616へまたは逆方向のデータ転送を有効または無効とするように、制御デバイス(例えば取り外し可能なジャンパまたはドライバ制御スイッチ)が有利に用いられる。
【0085】
[0093]いくつかの実施形態では、同じGPUの2つのMIOポート間の相互接続デバイス620または他の外部接続の存在が自動的に内部分散AAを有効にするわけではないことにも留意されたい。上述のように、画素選択論理回路300の動作が内部分散AAを行うか否かを決定するが、画素選択論理回路300の動作はグラフィックスドライバを介して制御される。
【0086】
[0094]代替的な別の実施形態では、内部分散AAに用いられる画素転送パスがGPU内に構築される。図7は、本発明のこのような一実施形態によるGPU700のブロック図である。GPU700は、図4のGPU122とほぼ同様であり、同じ参照番号が対応するコンポーネントを識別するのに用いられている。GPU122とは異なり、GPU700は、ディスプレイヘッドB206bの出力パス702をディスプレイヘッドA206aの外部画素入力パス704に接続する内部画素転送パスを含んでいる。
【0087】
[0095]この実施形態では、画素転送パスが、ディスプレイヘッドB206bからの画素およびクロスバー220を介してMIOポート(例えばMIOAポート214a)の一方からのパス708上で受信した画素の間で選択する選択ユニット(例えばマルチプレクサ)706を含んでいる。選択された画素は、ディスプレイヘッドA206aの外部画素入力パス704に提供される。
【0088】
[0096]選択ユニット706は、制御信号(明示せず)に応答して動作する。制御信号は、GPU700が内部分散AAモードで動作している場合には選択ユニット706がパス702上の画素を選択するように、GPU700のディスプレイヘッドA206aが別のGPUに対してマスターとして動作している場合にはパス708上の画素を選択するように設定する。この制御信号は、グラフィックスドライバから発せられたコマンドに応答して生成することができ、グラフィックソフトウェアにアクセスする必要なく適切なソフトウェアインターフェースを通じて、ユーザ(またはアプリケーション開発者)が内部分散AAを有効または無効にすることを可能にする。
【0089】
[0097]この実施形態では、分散レンダリングモードにおいて外部GPUから画素が到着するのと同じタイミングでディスプレイヘッドB206bからの画素が選択回路706に到達するように、ディスプレイヘッドB206bから選択回路706へのパス702がFIFO、ラッチ、および他のタイミング制御デバイスを含むことができることに留意されたい。この場合、ディスプレイヘッドB206bおよびディスプレイヘッドA206aの動作タイミングは、GPUが分散レンダリングモードまたは内部分散AAモードに依存しない。
【0090】
[0098]内部画素転送パスは、GPUに修正を要するものの、GPUのI/Oポートのいずれの使用も必要としない。故に、例えば、GPU700が内部分散AAフィルタリングを実行し続ける間、GPU700のディスプレイヘッドA206aは別のGPUのディスプレイヘッドに対してスレーブ化可能であり、あるいはGPU700のディスプレイヘッドB206bは別のGPUのディスプレイヘッドに対してマスター化可能である。
【0091】
[0099]本明細書に記載の内部画素転送パスは例示的なものであって、変更および修正が可能であることが理解されよう。例えば、(ディスプレイヘッドA206aからディスプレイヘッドB206bへの)「逆方向」画素転送パスを示したパスに追加して設けることもできる。[他の実施形態]
【0092】
[0100]上述のように、本発明の実施形態は、AAフィルタ処理画像を生成するために、1つのGPUだけでなく、複数のGPUにわたって分散レンダリングに広く関連付けられた読み出し技術およびコンポーネントを用いることが可能なマルチGPUシステム用の分散アンチエイリアシング技術を提供する。適当なグラフィックスドライバインターフェースを介して、任意のグラフィックスプログラムについてプログラムそれ自体に与えられたAA(またはその欠如)に関係なく、適切に設定されたGPUのエンドユーザが内部分散AAを有効にすることを選択可能である。プログラムがAAを提供する場合、本明細書に記載の内部分散AAは、AA解像度を上げる(例えば2倍にする)ために用いることが可能である。
【0093】
[0101]本発明を特定の実施形態に関連して説明してきたが、当業者であれば多数の修正が可能であることが理解されよう。例えば、本発明はAAフィルタリングを参照して説明してきたが、本明細書に記載の単一GPUのディスプレイヘッド間または複数GPUのディスプレイヘッド間の結合を別の方法で用いることもできる。
【0094】
[0102]代替的な一実施形態では、ステレオアナグリフを生成するために分散フィルタリングを用いることが可能である。当分野で既知のように、ステレオアナグリフはシーンの左目視野および右目視野を重ねて1つの画像を作り出す。通常、左目画素と右目画素には異なるカラーフィルタが適用されるが、例えば、右目画素を赤色パスフィルタでフィルタ処理し、左目画素を青/緑色パスフィルタを用いてフィルタ処理することができる。左目視野および右目視野間の視野域または視点オフセットにより、シーンの同じ点に対応する左目画素と右目画素はアナグリフの異なる位置にくる。故に、裸眼には、アナグリフが歪んだ色の二重画像に見える。画像を正確に観るには、観察者が、右目画素用に用いた色をフィルタで除外する左レンズと左目画素用に用いた色をフィルタで除外する左レンズの特殊なメガネを着用する。
【0095】
[0103]図4Aを参照すると、シーンの右目視野を生成するためにGPU122(0)のレンダリングパイプライン(図示せず)を用い、シーンの左目視野を生成するためにGPU122(1)のレンダリングパイプライン(図示せず)を用いることができる。右目および左目視野用のレンダリングパラメータを決定するのに既知の技術を用いることができる。
【0096】
[0104]右目画素Pi1および左目画素Pi0は、GPU122(0)およびGPU122(1)のそれぞれのレンダリングパイプラインまたはそれぞれのディスプレイパイプライン202(0)および202(1)のいずれかにおいて、有利にカラーフィルタ処理される。一実施形態では、異なる赤、緑および青色成分を用いて画素色が特定される。右目画素は、例えば赤色成分をゼロまで減らし、緑および青色成分を不変のままにすることによりフィルタ処理可能である。同様に、左目画素は、緑および青色成分をゼロまで減らし、赤色成分を不変のままにすることによりフィルタ処理可能である。
【0097】
[0105]右目画素Pi1は、GPU122(1)のディスプレイヘッドA206aに送られる。ディスプレイヘッド206(a)は、画素Pi1をMIOAポート214a(1)に転送し、これが画素をPo1としてGPU122(0)のMIOAポート214a(0)へと送る。ディスプレイヘッド206a(0)は、このようにして右目画素を外部画素として受信する。
【0098】
[0106]左目画素Pi0は、内部画素としてディスプレイヘッド206a(0)に送られる。一般に、対応する左目画素および右目画素はシーンの異なる位置を再生するが、右目視野および左目視野を生成するのに用いられる視野域または視点オフセットによって、画素選択論理回路300により処理される対応する左目画素および右目画素がアナグリフフレーム内の同じ位置にある画素となることに留意されたい。
【0099】
[0107]一実施形態では、ディスプレイヘッド206a(0)が図3の画素選択論理回路300を含んでいる。アナグリフを生成するために、除算回路306および314がともに1の除数を選択するように設定される。加算回路308は、左目画素Pi0と右目画素Pi1を加算し、初期のカラーフィルタリングの結果として、左目画素の赤色成分と右目画素の青色および緑色成分を有する合計画素をパス310上に生成する。選択マルチプレクサ312がパス310から合計画素を選択し、選択マルチプレクサ316がパス315上で混合画素を出力画素として選択する。
【0100】
[0108]他の実施形態では、画素選択論理回路300の前のカラーフィルタは用いない。例えば、選択が各色成分について独立に制御可能であるように選択マルチプレクサ312および/または316を設定可能である。このような一実施形態では、選択マルチプレクサ312がパス302から左目画素Pi0の全ての色成分を通過し、選択マルチプレクサ316が左目画素Pi0の赤色成分と右目画素Pi1の青色および緑色成分を通過する。結果はパス318上の左目画素の赤色成分と右目画素の青色および緑色成分を有する出力画素となる。
【0101】
[0109]当業者であれば、アナグリフレンダリングに3つ以上のGPUを使用可能であることを理解することができる。4つのGPU(例えば図4B)の実施形態では、2つのGPUを右目視野生成用に用い、2つのGPUを左目視野生成用に用いることが可能である。各視野を生成する2つのGPUは、アナグリフの画質を高めるために上述したような分散アンチエイリアシング技術を採用することが可能である。
【0102】
[0110]ステレオアナグリフは、内部分散フィルタリングを用いてもレンダリング可能である。図4Bを参照すると、GPU122(0)のレンダリングパイプライン(図示せず)が両方の視野を生成可能であり、左目視野をフレームバッファAに、右目視野をフレームバッファBに(あるいはその反対に)記憶する。ディスプレイパイプラインB402bおよびディスプレイヘッドB206bが右目視野を画素PBとしてディスプレイヘッドA206aに送り、ディスプレイパイプラインA402aが左目視野を画素PAとしてディスプレイヘッドA206aに送る。ディスプレイヘッドA206aでは、画素合成器308(図3)がアナグリフを生成するように適切に画素を混合する。
【0103】
[0111]フェードイン、フェードアウト、またはディゾルブ等の遷移効果を発生させるためにも分散フィルタリングを用いることが可能である。例えば、内部分散の場合、フレームバッファBはフェードアウトする画像を記憶することができ、フレームバッファAはフェードインする画像を記憶する。各フレームでは、画素合成器308が画素の相対的な重みをフレームバッファAおよびフレームバッファBから調整し、それによってフレームAからの画像が徐々に最高強度まで上がり、フレームバッファBからの画像がゼロ強度まで弱まる。(フレームバッファBの画像がベタ色領域であったら効果はフェードインとなり、フレームバッファAの画像がベタ色領域であったら効果はフェードアウトとなる。)遷移の平滑性は、一部には、画素合成器308が形成可能な画素PAおよび画素PBの異なる加重平均の数に依存するが、これは設計上の選択の問題である。外部分散フィルタリングの複数のGPUも同様の効果を達成するのに用いることが可能である。
【0104】
[0112]別の実施形態では、分散フィルタリングを各ディスプレイヘッドのルックアップテーブルと組み合わせて用いることにより、このような遷移効果を達成可能である。当分野で既知のように、ディスプレイヘッドは、内部画素表現をディスプレイ装置に適したカラー強度に変換するルックアップテーブルを含んでいることが多く、時には異なる値をルックアップテーブルにロードしたりリロードしたりすることが可能である。ルックアップテーブル内の値のカラー強度をあるフレームから次のフレームへと下げる(または上げる)ことによってフェードアウト(またはフェードイン)を達成可能である。故に、フレームバッファB内の画像からフレームバッファA内の画像へとディゾルブするには、従来のフェードアウトルックアップテーブルをディスプレイヘッドBに適用することも可能であり、従来のフェードインルックアップテーブルをディスプレイヘッドAに適用する。画素合成器308は、2つの画像を一定の(例えば等しい)重みで合成し、ディゾルブ効果を作り出す。
【0105】
[0113]他の実施形態では、同じGPUのディスプレイヘッド間の画素転送が、混合とは関係ないディスプレイ特性を実施するために用いられる。例えば、ディスプレイヘッド間の画素転送は、LCDオーバードライブ(当分野では「LCDフィードフォワード」または「応答時間補正」(RTC)ともいう)機能を制御するために用いることが可能である。当分野で既知のように、LCD画面は、画素を駆動する信号が部分的には所望の新たな強度また部分的には所望の新たな強度と前の強度との差分に基づいて、フレーム毎に調整される場合に、より速く応答するようにすることが可能である。
【0106】
[0114]LCDオーバードライブ機能を実施するには、フレームバッファBが前の画像の画素を記憶するのに対し、フレームバッファAを新たな画像の画素を記憶するように用いることが可能である。ディスプレイヘッドBは前の画素値をディスプレイヘッドAに送り、ディスプレイヘッドAの画素合成器308は、例えば従来のLCDオーバードライブ信号を計算するための記述を用いて新たな値および前の値に基づいてオーバードライブ値を計算するように設定可能である。
【0107】
[0115]あるGPUのディスプレイヘッド間の画素転送は、合成画像を生成するためにも用いることができる。例えば、フレームバッファBは、フレームバッファAに記憶された画像の一部に重ねられるオーバーレイ画像用の画素を含むことができる。ディスプレイヘッドBがディスプレイヘッドAにオーバーレイ画素を送り、ディスプレイヘッドAの画素選択論理回路300が、外部画素が選択されるオーバーレイ領域以外で内部画素を選択する。
【0108】
[0116]このように、本発明を特定の実施形態に関連して説明してきたが、本発明が特許請求項の範囲内の全ての変形物および均等物を対象とするように意図されていることが理解されよう。
【図面の簡単な説明】
【0109】
【図1】本発明の実施形態によるコンピュータシステムのブロック図である。
【図2】本発明の実施形態で使用可能なグラフィックス処理ユニット(GPU)内の画素出力パスのブロック図である。
【図3A】本発明の実施形態で使用可能なGPUのディスプレイヘッド内の画素選択論理回路のブロック図である。
【図3B】本発明の実施形態で使用可能なGPUのディスプレイヘッド内の画素選択論理回路のブロック図である。
【図4A】本発明の実施形態による2つのGPUを有するグラフィックスサブシステムのブロック図である。
【図4B】本発明の実施形態によるマスター/スレーブ形式で結合された2つのディスプレイヘッドを示すGPUのブロック図である。
【図5A】本発明のいくつかの実施形態で使用可能なサンプリングパターンを示す図である。
【図5B】本発明のいくつかの実施形態で使用可能なサンプリングパターンを示す図である。
【図5C】本発明のいくつかの実施形態で使用可能なサンプリングパターンを示す図である。
【図6】本発明の実施形態によるプリント基板カードとして実施され、外部画素転送パスを用いて構成されたグラフィックスアダプタである。
【図7】本発明の実施形態による内部画素転送パスを持ったGPUのブロック図である。
【符号の説明】
【0110】
100…コンピュータシステム、102…中央演算処理装置(CPU)、104…システムメモリ、105…メモリブリッジ、106、113…バス、107…I/O(入力/出力)ブリッジ、112…グラフィックスサブシステム、110…ディスプレイ装置、114…システムディスク、122…グラフィックス処理装置(GPU)、124…グラフィックスメモリ、202、402…ディスプレイパイプライン、206a、206b…ディスプレイヘッド、210、211…デジタル出力ポート、212、213…アナログ出力ポート、214a、214b…多目的入力/出力(MIO)ポート、220…クロスバー、300、350…画素選択論理回路、302、352…第1のパス、304、354…第2のパス、306、358…画素合成回路、308…第1の除算回路、310…加算回路、312…選択回路、314、366…第2の除算回路、316、360…パス、318…選択回路、320、364…出力パス、362…選択マルチプレクサ、400…画素転送パス、404…フレームバッファA、406…フレームバッファB。
【関連出願の相互参照】
【0001】
[0001]本願は、2006年5月12日に出願された「Antialiasing Using Multiple Display Heads of a Graphics
Processor」と題する米国仮出願第60/747,154号、および同一出願人による同時係属中の2006年5月12日に出願された「Distributed Antialiasing in a Multiprocessor Graphics
System」と題する米国特許出願第11/383,048号の利益を主張するものである。
【発明の背景】
【0002】
[0002]本発明は、概してコンピュータグラフィックスに関し、特にグラフィックスプロセッサの複数のディスプレイヘッドを用いた画像データのアンチエイリアシングに関する。
【0003】
[0003]当分野で既知のように、コンピュータ生成画像は、画像データを離散カラーサンプル(画素)のアレイへと変換するのに用いる有限サンプリング解像度から生じる様々なビジュアルアーチファクトに影響を受けやすい。一般に「エイリアシング」と呼ばれるこのようなアーチファクトには、平滑なラインのジャギー、規則的なパターンのムラ等が含まれる。
【0004】
[0004]エイリアシングを減らすために、カラーを「オーバーサンプリング」する、すなわち最終(例えばディスプレイまたは記憶)画像を構成する画素数を上回る数のサンプリング位置でサンプリングすることが多い。例えば、画素数の2倍または4倍で画像をサンプリングすることもある。当分野では、各サンプリング位置を別個の画素として扱うスーパーサンプリングや、画素の少なくとも一部をカバーする基本形状毎に1つのカラー値を計算するが、この基本形状による画素のカバレージは複数の位置で決定するマルチサンプリングを含む、各種のオーバーサンプリングが既知である。
【0005】
[0005]アンチエイリアシング(AA)フィルタは、1画素あたり複数のサンプルを混合して1つのカラー値を決定する。従来、AAフィルタは、画素を生成してフレームバッファに記憶するレンダリングパイプライン内、または、画素をフレームバッファから読み出してディスプレイ装置に送るディスプレイパイプライン内のいずれかに適用される。
【発明の概要】
【0006】
[0006]本発明の実施形態は、1つのグラフィックスプロセッサの複数のディスプレイヘッドを利用してアンチエイリアシングおよび他の処理タスクを行うシステムおよび方法を提供するものである。一実施形態では、同じグラフィックスプロセッサの2つのディスプレイヘッドが画素転送パスを介してマスター/スレーブ形式で互いに結合されている。「マスター」ディスプレイヘッドは、それ自体の画素に加えて「スレーブ」ディスプレイヘッドから画素を受信し、マスターディスプレイヘッド中の画素選択論理回路がこの2画素を混合するか、いずれか一方を選択して他方を除外する。2画素が同じ画像の異なるサンプリング位置に対応する場合には、混合した画素がAAフィルタ処理画素となる。
【0007】
[0007]本発明の一態様によれば、グラフィックス処理装置が、第1のディスプレイヘッドと、第2のディスプレイヘッドと、画素転送パスとを含む。第1のディスプレイヘッドは、第1の出力画素を生成するように構成され、集積回路内に配置される。第2のディスプレイヘッドは、第2の出力画素を生成するように構成されており、これも集積回路内に配置されている。第2のディスプレイヘッドは、外部画素を受信するように構成された第1の入力パスと、内部画素を受信するように構成された第2の入力パスと、上記第1の入力パスおよび上記第2の入力パスに結合され、上記外部画素と上記内部画素を混合して、上記混合画素を生成するように構成された画素合成器と、上記外部画素、上記内部画素、または上記混合画素の1つを第2の出力画素として選択するように構成された選択回路とを有利に含む。上記画素転送パスは、上記第1の出力画素が上記外部画素として上記第1の入力パスにより受信されるように、上記第1の出力画素を上記第1のディスプレイヘッドから上記第2のディスプレイヘッドの上記第1の入力パスへと送るように設定可能である。
【0008】
[0008]いくつかの実施形態では、上記画素転送パスも集積回路内に配置される。他の実施形態では、上記画素転送パスの少なくとも一部が上記集積回路の外部にある。例えば、上記画素転送パスが取り外し可能なコネクタを含む。
【0009】
[0009]本発明の別の態様によれば、グラフィックスサブシステムが、画素出力コネクタおよび画素入力コネクタを有するグラフィックスアダプタを含む。グラフィックスプロセッサは、上記グラフィックスアダプタ上に実装することもできるが、上記画素出力コネクタに通信可能に結合された画素出力ポートと上記画素入力コネクタに通信可能に結合された画素入力ポートとを有する。グラフィックスサブシステムは、上記グラフィックスアダプタの上記画素出力コネクタを上記グラフィックスアダプタの上記画素入力コネクタに接続するように適合された取り外し可能なコネクタユニットも含む。
【0010】
[0010]本発明のまた別の態様によれば、画像を生成する方法が、グラフィックスプロセッサのレンダリングパイプラインを用いて、画像用の入力画素の第1セットおよび入力画素の第2セットをレンダリングするステップを含む。入力画素の第1セットをレンダリングするのに用いられる第1のレンダリング動作は、少なくとも一点で上記入力画素の第2セットをレンダリングするのに用いられる第2のレンダリング動作と異なる。例えば、上記2つのレンダリング動作は、各画素に適用されるサンプリングパターンに関して異なっても、またはレンダリングされる画像の視野域オフセットに関して異なってもよい。上記入力画素の第1セットが上記グラフィックスプロセッサの第1のディスプレイヘッドに送られ、上記入力画素の第2セットが上記グラフィックスプロセッサの第2のディスプレイヘッドに送られる。上記入力画素の第1セットは、さらに上記第1のディスプレイヘッドから上記第2のディスプレイヘッドに送られる。上記第2のディスプレイヘッドで、上記入力画素の第1セットおよび上記入力画素の第2セットの対応する画素が混合され出力画素のセットを生成する。
【0011】
[0011]以下の詳細な説明が、添付の図面と併せて本発明の性質および利点のより良い理解を与えるであろう。
【発明の詳細な説明】
【0012】
[0020]本発明の実施形態は、1つのグラフィックスプロセッサの複数のディスプレイヘッドを利用してアンチエイリアシングおよび他の処理タスクを行うシステムおよび方法を提供するものである。一実施形態では、同じグラフィックスプロセッサの2つのディスプレイヘッドが画素転送パスを介してマスター/スレーブ形式で互いに結合されている。「マスター」ディスプレイヘッドは、それ自体の画素に加えて「スレーブ」ディスプレイヘッドから画素を受信し、マスターディスプレイヘッド中の画素選択論理回路がこの2画素を混合するか、いずれか一方を選択して他方を除外する。2画素が同じ画像の異なるサンプリング位置に対応する場合には、混合した画素がAAフィルタ処理画素となる。[システム概観]
【0013】
[0021]図1は、本発明の実施形態によるコンピュータシステム100のブロック図である。コンピュータシステム100は、中央演算処理装置(CPU)102と、ノースブリッジチップ等のメモリブリッジ105を含むバスパスを介して通信するシステムメモリ104とを含む。メモリブリッジ105は、バスまたは他の通信パス106を介してサウスブリッジチップ等のI/O(入力/出力)ブリッジ107と接続されている。I/Oブリッジ107は、一又は複数のユーザ入力デバイス108(キーボード、マウス等)からユーザ入力を受信し、バス106およびメモリブリッジ105を介してその入力をCPU102へと転送する。ビジュアル出力は、バスまたは他の通信パス113を介してメモリブリッジ105に結合されたグラフィックスサブシステム112の制御下で動作する画素ベースディスプレイ装置110(従来のCRTまたはLCDベースモニタ)上で提供される。システムディスク114は、I/Oブリッジ107にも接続されている。スイッチ116は、I/Oブリッジ107とネットワークアダプタ118および各種アドインカード120、121等の他のコンポーネントとの間を接続する。USBまたは他のポート接続、CDドライブ、DVDドライブ等の他のコンポーネント(明示せず)をI/Oブリッジ107に接続することもできる。各種コンポーネント間の通信パスは、PCI(Peripheral Component Interconnect)、PCI Express(PCI−E)、AGP(Accelerated Graphics Port)、HyperTransport、または任意の他のバスまたはポイントツーポイントプロトコルを用いて実施することができ、異なるデバイス間の接続は当分野で既知の異なるプロトコルを用いることができる。
【0014】
[0022]グラフィックスサブシステム112は、N個(一又は複数)のグラフィックス処理装置(GPU)122を含んでいる。(本明細書では、同様の物の複数の例は、その物を特定する参照番号および必要に応じてその例を特定する括弧付き番号で示す。)各GPU122は、関連付けられたグラフィックスメモリ124を有する。GPU122およびグラフィックスメモリ124は、例えば、プログラマブルプロセッサ、特定用途向け集積回路(ASIC)およびメモリデバイス等の一又は複数の集積回路デバイスを用いて実施することができる。いくつかの実施形態では、GPU122およびグラフィックスメモリ124が、システム100の拡張スロット(PCI−Eスロット等)に挿入または当該拡張スロットから取り外し可能な一又は複数の拡張カードまたは他のアダプタで実施される。任意の数NのGPU122を用いることができる。
【0015】
[0023]各GPU122は、メモリブリッジ105およびバス113を介してCPU102および/またはシステムメモリ104から供給されるグラフィックスデータから画素データ(本明細書では「画素」ともいう)を生成することに関連する各種タスクを行うように構成することができ、各グラフィックスメモリ124と情報をやりとりして画素データ等を記憶したり更新したりする。例えば、GPU122は、CPU102上で実行する各種プログラムにより提供される2Dまたは3Dシーンデータから画素データを生成することができる。GPU122は、メモリブリッジ105を介して受信した画素データをさらなる処理の有無を問わずグラフィックスメモリ124に書き込むこともできる。各GPU122は、画素データをグラフィックスメモリ124から後述するGPU122の出力ポートへと送るように構成可能なスキャンアウトモジュール(本明細書ではディスプレイパイプラインともいう)も含んでいる。出力ポートは、モニタまたは別のGPU122に接続してもしなくてもよい。
【0016】
[0024]分散レンダリングモードでの動作のために、1つのGPU(例えばGPU122(0))がスキャンアウトされた画素を別のGPU(例えばGPU122(N−1))に送るように好適に構成され、その後者のGPU(例えばGPU122(N−1))は、それ自体のディスプレイパイプラインからの内部画素およびGPU122(0)から受信した外部画素間で選択する。3つ以上のGPU122を、スレーブGPU122がその画素を中間GPU122に送るように「デイジーチェーン」式に相互接続可能であり、中間GPU122は、それ自体の内部画素およびスレーブからの外部画素間で選択して、最終のマスターGPU(すなわちモニタに接続されたGPU)が最終の選択画素をディスプレイ装置に送るまで、選択した画素を別のGPU等に転送する。
【0017】
[0025]いくつかの実施形態では、任意のGPU122を任意の他のGPU122のスレーブとなれるように、物理的接続を何ら変えることなくGPU122の配置設定を調整することによってGPU122を互いに相互接続可能である。例えば、GPU122は、単方向または双方向リングトポロジーで接続可能である。
【0018】
[0026]各種の分散レンダリングモードがサポート可能である。例えば、分割フレームレンダリングでは、同じ画像の異なる部分をレンダリングするために異なるGPU122が割り当てられ、交互フレームレンダリングでは、表示される一連の画像中の異なる画像に異なるGPU122が割り当てられる。本発明には、特定の分散レンダリングモードが必須ということはない。
【0019】
[0027]本発明の実施形態によれば、GPU122は、「外部分散」AAモードでも動作可能である。このモードでは、GPU122の画素選択論理回路が、内部画素および外部画素の一方を選択して他方を除外するのではなくこれらを混合する。内部画素および外部画素が異なるサンプリング位置で同じ画像を表す場合には、画素混合の結果がAA解像動作(本明細書ではAAフィルタともいう)に相当する。本発明の別の実施形態によれば、1つのGPU122が、「内部分散」AAモードでも動作可能である。このモードでは、GPU122の画素選択論理回路が、同じGPU122の2つのディスプレイヘッドにより生成された画素を混合する。(外部分散モードおよび内部分散モードを含む)分散AAモードの例および関連する画素選択論理回路については後述する。
【0020】
[0028]いくつかの実施形態では、GPU122のいくつかまたは全てを、複数のGPU122のうち異なるものが異なるディスプレイ装置用の画像をレンダリングする「独立レンダリング」モードでも動作可能とすることができる。独立レンダリングモードで異なるGPU122によってレンダリングされた画像を互いに関連させてもさせなくてもよい。当然のことながら、GPU122は、上記または他のモードのいずれでも動作するように設定可能である。
【0021】
[0029]CPU102は、システム100のマスタープロセッサとして動作し、他のシステムコンポーネントの動作を制御および調整する。特に、CPU102は、GPU122の動作を制御するコマンドを発する。いくつかの実施形態では、CPU102はGPU122用のコマンドストリームをコマンドバッファに書き込むが、これはシステムメモリ104、グラフィックスメモリ124、またはCPU102およびGPU122の両方にアクセス可能な別の記憶場所とすることができる。GPU122は、コマンドバッファからコマンドストリームを読み出し、CPU102の動作と非同期でコマンドを実行する。コマンドは、画像を生成するための従来のレンダリングコマンドと、CPU102上で実行するアプリケーションがGPU122の画像生成に関連しないようなデータ処理のための処理能力を活用できるようにする汎用コンピュータコマンドとを含むことができる。
【0022】
[0030]本明細書に示すシステムは例示的であって、変更および修正が可能であることが理解されよう。ブリッジの数および配列を含む相互接続トポロジーは、所望のとおりに修正可能である。例えば、いくつかの実施形態では、システムメモリ104がブリッジを介するのではなく直接CPU102に接続され、他のデバイスがメモリブリッジ105およびCPU102を介してシステムメモリ104と通信する。他の代替的なトポロジーでは、グラフィックスサブシステム112が、メモリブリッジ105ではなくI/Oブリッジ107に接続される。また他の実施形態では、I/Oブリッジ107およびメモリブリッジ105を1つのチップ内に集積することもできる。本明細書で示す特定のコンポーネントは任意であって、例えば、任意の数のアドインカードまたは周辺デバイスをサポートすることもできる。いくつかの実施形態では、スイッチ116をなくし、ネットワークアダプタ118およびアドインカード120、121が直接I/Oブリッジ107に接続する。
【0023】
[0031]システム100の他の部分へのGPU122の接続も変更することができる。いくつかの実施形態では、グラフィックスシステム112が、システム100の拡張スロットに挿入可能な一又は複数の拡張またはアドインカードとして実施される。他の実施形態では、GPUがメモリブリッジ105またはI/Oブリッジ107等のバスブリッジとともに1つのチップ上に集積される。
【0024】
[0032]各GPUには、任意の量のローカルグラフィックスメモリを設けることができ(ローカルメモリ無しの状況を含む)、ローカルメモリとシステムメモリを任意の組み合わせで用いることができる。例えば、統合メモリアーキテクチャ(UMA)実施形態では、専用グラフィックスメモリデバイスは設けないが、GPUのいくつかまたは全てがシステムメモリを専用またはほとんど専用で用いる。UMA実施形態では、GPUをバスブリッジチップに集積するか、またはGPUをブリッジチップおよびシステムメモリに接続する高速バス(例えばPCI−E)を持った個別チップとして設けることができる。
【0025】
[0033]加えて、本発明の態様を具現化するGPUは、汎用コンピュータシステム、ビデオゲームコンソールおよび他の特殊用途コンピュータシステム、DVDプレーヤー、携帯電話または携帯情報端末等のハンドヘルドデバイス等の各種デバイスに組み込むことができる。[複数のディスプレイヘッドを備えたGPU]
【0026】
[0034]図2は、本発明の実施に使用可能なGPU122内の画素出力パスのブロック図である。マルチGPUグラフィックスシステムが本発明の実施形態には必要ない場合もあるが、GPU122は、このようなシステムで使用可能なように好適に構成されている。
【0027】
[0035]特に、図2に示すように、GPU122は、メモリインターフェース204に結合されたディスプレイ(またはスキャンアウト)パイプライン202を含んでいる。ディスプレイパイプライン202は、ディスプレイヘッド206a(「ヘッドA」)およびディスプレイヘッド206b(「ヘッドB」)にも結合されている。GPU122は、デジタル出力ポート210、211およびアナログ出力ポート212、213を含む複数の出力ポート210〜213を有する。GPU122は、別のGPUまたは別の外部デジタルデバイスとの通信を含む様々な目的用に設定可能な2つの多目的入力/出力(MIO)ポート214a(「MIOA」)および214b(「MIOB」)も有している。ディスプレイヘッド206aおよび206bは、クロスバー220を介してそれぞれ出力ポート210〜213およびMIOポート214a、214bに接続されている。
【0028】
[0036]メモリインターフェース204は、GPU122により生成される画素データを記憶するメモリ(図2には図示せず)、例えば図1のグラフィックスメモリ124に結合されている。ディスプレイパイプライン202は、メモリインターフェース204と通信して記憶された画素データにアクセスする。ディスプレイパイプライン202は、画素データをディスプレイヘッド206a、206bのいずれかまたは両方に送る。いくつかの実施形態では、ディスプレイパイプライン202がディスプレイヘッド206a、206bに送る前に画素データに各種の処理動作を施すが、ディスプレイヘッド206aに送られる画素データは、ディスプレイヘッド206b宛の画素データとは異なって処理されてもされなくてもよい。加えて、処理およびディスプレイヘッド206aへの送達用のディスプレイパイプライン202に提供される画素データは、処理およびディスプレイヘッド206bへの送達用のディスプレイパイプライン202に提供される画素データと同じでも異なってもよい。本発明には、ディスプレイパイプライン202およびメモリインターフェース204の特定の構成が必須ということはなく、詳細な説明は省略する。
【0029】
[0037]デジタル出力ポート210、211は、概して従来の設計のものとしてよく、画素データを修正してデジタル出力標準に準拠する回路を含むことができる。例えば、一実施形態では、ポート210、211のそれぞれが標準DVI(Digital Video Interface)コネクタ用のTMDS(Transition Minimized Differential Signaling)を実施する。同様に、アナログ出力ポート212、213は、概して従来の設計のものとしてよく、例えば、多数の例が当分野で既知のあらゆるアナログビデオ標準に準拠するデジタル/アナログコンバータを含むことができる。本発明には、特定のデジタルまたはアナログ出力ポートの有無、その数または性質が必須ということはないことが理解されよう。
【0030】
[0038]MIOAポート214aおよびMIOBポート214bは、ディスプレイヘッド206a、206bのいずれかにより生成された画素データをGPU122の出力ライン上へと送り出す出力ポートとして設定可能である。MIOAポート214aおよびMIOBポート214bは、ディスプレイヘッドA206aまたはディスプレイヘッドB206bに外部画素データを送る入力ポートとしても設定可能である。いくつかの実施形態では、MIOAポート214aおよびMIOBポート214bをそれぞれ個別に入力ポートまたは出力ポートのいずれかとして設定可能である。MIOAポート214aおよびMIOBポート214bの設定は、システム起動中に決定するか、またはシステム動作中の様々な時点で動的に修正が可能である。例えば、各MIOポートは、ポート設定を特定する値を記憶する制御レジスターを含むことができ、新たな値を所望のとおりシステム起動時または他の時点でレジスターに書き込むことができる。
【0031】
[0039]ヘッドA206aおよびヘッドB206bは、クロスバー220を介してそれぞれMIOポート214a、214bだけでなく出力ポート210〜213に結合される。この実施形態では、クロスバー220が、ヘッドA206aからポート210〜213、214aまたは214bのいずれか1つへの任意の接続をサポートするように、また同時にヘッドB206bから現状ではクロスバー220によりヘッドA206aに接続されていないポート210〜213、214aまたは214bのいずれか1つへの任意の接続をサポートするように設定可能である。例えば、GPU122が、ヘッド206a、206bから2つの異なるモニタに(例えば、デジタル出力ポート210、211および/またはアナログ出力ポート212、213のいずれか2つを介して)同時に画素データを送り出すことが可能である。あるいは、GPU122が、ポート210〜213の1つを介してモニタに、またMIOAポート214aまたはMIOBポート214bを介して別のGPUに同時に画素データを送り出すことが可能である。例によっては、ディスプレイヘッド206a、206bの一方または両方をアイドル状態、すなわちどの出力ポートにも画素を送っていない状態にすることもできる。
【0032】
[0040]MIOポート214a、214bは、画素データをGPU122の別の1つから受信し、受信した画素データをディスプレイヘッド206a、206b内へと通信するようにも設定可能である。各GPU122は、各ディスプレイヘッド206a、206b内にMIOポート214a、214bの一方から受信した「外部」画素、それ自体のディスプレイパイプライン202から受信した「内部」画素、または内部画素および外部画素の組み合わせを選択するための画素選択論理回路(後述する)も有している。
【0033】
[0041]いくつかの実施形態では、クロスバー220がシステム起動で設定され、また他の実施形態では、システム動作中に接続を変更可能なようにクロスバー220が動的に設定可能である。クロスバー220は、MIOポート214a、214bの一方で受信された入力された画素データをディスプレイヘッド206a、206bのいずれかに結合するように設定可能とすることもできる。
【0034】
[0042]図3Aは、本発明の実施形態によるGPU122のディスプレイヘッド206a内の画素選択論理回路300のブロック図である。当然のことながら、ディスプレイヘッド206bは類似の設計の画素選択論理回路を有することができる。いくつかの実施形態では、GPU122の各ディスプレイヘッド206a、206bがそれ自体の画素選択論理回路300を有している。
【0035】
[0043]画素選択論理回路300は、第1のパス302上で図2のディスプレイパイプライン202から内部画素を受信する。図2のMIOAポート214a(または、いくつかの実施形態ではMIOBポート214b)が入力ポートとして設定される場合には、画素選択論理回路300は第2のパス304上で外部画素も受信する。
【0036】
[0044]外部画素および内部画素は、それぞれ画素合成回路306へと伝播され、これが外部画素および内部画素を混合して混合画素を生成する。画素合成回路306は、例えば従来の演算論理回路を用いて実施することができる。一実施形態では、画素合成回路306が、内部画素を多くの候補除数(例えば1、2、4等)の1つにより除する第1の除算回路308と、(除算後の)内部画素を外部画素に加算して合計画素を生成する加算回路310と、制御信号(PSEL1)に応答して内部画素および合計画素間で選択をする選択回路312と、選択された画素を多くの候補除数(例えば1、2等)の1つにより除する第2の除算回路314とを含んでおり、パス316上に混合画素としての結果を与える。
【0037】
[0045]パス304上の外部画素およびパス316上の混合画素は、選択回路318(マルチプレクサ等)に渡される。制御信号(PSEL2)に応答して、選択回路318が図2のクロスバー220に接続する出力パス320に送るために内部画素、混合画素、または外部画素のいずれかを選択する。
【0038】
[0046]PSEL1およびPSEL2信号は、ディスプレイヘッド206a中の制御論理回路(明示せず)により好適に生成される。いくつかの実施形態では、概して従来の設計のものとしてよいこの制御論理回路が、図1のGPU102上で実行するグラフィックスドライバプログラムにより生成される制御情報に応答する。例えば、除算回路308、314用の候補除数間で選択して特定用途向けの適当な加重平均を生成することによって、類似の制御情報を画素合成器308の動作を制御するためにも用いることができる。本発明の教示を利用可能な当業者であれば、PSELおよび画素合成器制御信号を生成するのに適した制御論理回路を実施可能なので、制御論理回路の詳細な説明は省略する。
【0039】
[0047]図3Bは、本発明の代替的な実施形態による画素選択論理回路350のブロック図である。画素選択論理回路350は、図3Aの画素選択論理回路300と概ね同様であるが、ガンマ補正画素を混合する能力を持って好適に設計されている。画素選択論理回路350は、第1のパス352上で図2のディスプレイパイプライン202から内部画素を受信する。内部画素は画素合成器358へと伝播される。MIOAポート214aが入力ポートとして設定される場合には、画素選択論理回路350は第2のパス354上で外部画素も受信する。この外部画素も画素合成器358へと伝播される。
【0040】
[0048]画素合成器358は、内部画素および外部画素を混合し、結果として単一のパス360上に混合画素を供給する。画素合成器358は、図3Aの除算回路306に類似の除算回路および/または図3Aの加算回路308に類似の加算器を含むことができる。加えて(または代わりに)、画素合成器358は、パス352および354上で受信したガンマ補正画素を混合する演算論理回路を含むこともできる。当分野で既知のように、ガンマ補正は、例えば画素値Pを定数γについてPγに変換することによりディスプレイ装置で線形強度応答を生成する非線形スケールに合わせて画素値を調整する。(典型的なディスプレイ装置については、定数γがおよそ2.0〜2.5である。)このような一実施形態では、γ≒2.2についてγ補正出力画素Poγが、以下の式を用いて算出可能である。
Poγ=(4Piγ+4Peγ+|Piγ-Peγ|)/4 (式1)
【0041】
[0049]ここで、Piγおよび4Peγは、パス352および354上に供給されるガンマ補正画素を表す。当業者であれば、厳密な結果に必要な計算ではなく簡単なハードウェアを用いて式1が許容可能な近似を与えることが分かるだろう。(例えば、4による乗算および除算はビットシフトとして実施可能である)また、他の近似で代用可能なことも理解されよう。
【0042】
[0050]図3Bを再び参照すると、選択マルチプレクサ362が、パス352上で内部画素を、パス354上で外部画素を、及び、パス360上で混合画素を受信する。画素選択信号(PSEL)に応答して、選択マルチプレクサ362は、図2のクロスバー220に接続する出力パス364へ送るためにこれらの候補画素の1つを選択する。出力パス364は、第2の除算回路366を含むことができるが、これは図3Aの除算回路314と同様であってもよい。代替的な実施形態では、図3Aに示すものと同様の2つの選択マルチプレクサを出力画素の選択に用いるが、除算回路366を第2の選択マルチプレクサ前方に配置してもよい。他の選択回路構成も用いることができる。
【0043】
[0051]いくつかの実施形態では、画素合成器350は、画素がガンマ補正されない場合には簡単な加算を用いて、ガンマ補正画素および非ガンマ補正(線形)画素のいずれかに動作するように設定可能である。この設定は、起動動作中(システム起動時)にグラフィックスドライバにより有利に行われる。ガンマ補正フィルタが必要ないのは当然であるが、いくつかの実施形態では最終の画素選択後に任意のガンマ補正を適用することができる。[複数のGPUを用いた分散アンチエイリアシング]
【0044】
[0052]画素選択論理回路300または画素選択論理回路350を備えた図2のGPU122は、2つ以上のGPU122を備えたシステムでの分散アンチエイリアシング動作について好適に使用可能である。図4Aは、マスター/スレーブ読み出し構成の2つのGPU122(0)および122(1)を有するグラフィックスサブシステム400の簡略ブロック図である。(明確にするために、アクティブポートとディスプレイヘッドのみを示す。この例では、GPU1つにつきディスプレイヘッドが1つだけ用いられる。)スレーブGPU122(1)は、そのMIOAポート214a(1)が出力ポートとして設定され、マスターGPU122(0)は、そのMIOAポート214a(0)が入力ポートとして設定されている。MIOAポート214a(1)は、MIOAポート214a(0)に結合され、出力画素Po1をスレーブGPU122(1)からマスターGPU122(0)へと流す。
【0045】
[0053]スレーブGPU122(1)のヘッドA206a(1)は、スレーブGPU122(1)のディスプレイパイプライン202(1)により与えられた画素Pi1を出力画素としてMIOAポート214a(1)に転送する。スレーブGPU122(1)からの出力画素Po1は、マスターGPU122(0)のMIOAポート214a(0)により受信され、これが画素をディスプレイヘッドA206a(0)に転送する。ヘッドA206a(0)では、画素選択論理回路300(0)(図3の画素選択論理回路300の一例)が、マスターGPU122(0)のディスプレイパイプライン202(0)からの内部画素Pi0、スレーブGPU122(1)のディスプレイパイプライン202(1)由来の外部画素Po1、または、加算回路308により供給される合計(例えば、Pi0+Po1)を選択するように動作する。
【0046】
[0054]マスターGPU122(0)のヘッドA206a(0)は、選択された画素(Pfinal)を出力ポート、この場合はデジタル出力ポート210(0)に送る。GPU122(0)のヘッドA206a(0)がMIOAポート214b(0)(図2Cに明示せず)に画素データを送るように設定することもでき、これを第3のGPU122のMIOポートに接続し、それで第3のGPU122がGPU122(0)をマスターとすることが理解されよう。このように、任意の数のGPU122をデイジーチェーン式に接続することができる。
【0047】
[0055]本発明の実施形態によれば、GPU122(0)および122(1)は、外部分散アンチエイリアシング(AA)モードで用いることが可能である。このモードでは、各GPU122が、GPU122(0)によって用いられるサンプリング位置がGPU122(1)によって用いられるサンプリング位置と異なるように、表示パラメータまたはサンプリングパラメータにいくらかの変化量をもって、同じ画像をレンダリングする。例えば、若干異なる表示域または表示面の法線を2つのGPU122について画成し、2つの画像の画素境界に小さいオフセットを作り出すこともできる。あるいは、画素内のサンプリング位置が(例えばグラフィックスドライバにより)設定可能な場合には、各GPU122を同じ表示パラメータの組と各画素内の異なるサンプリング位置を用いるように設定することもできる。
【0048】
[0056]分散AAモードでは、GPU122(0)のディスプレイヘッド206aで画素選択論理回路300(0)により受信された外部画素Po1および内部画素Pi0が、最終画像の同じ画素についての異なるサンプリング位置に対応する。内部画素および外部画素を平均することによって、表示解像度の2倍のアンチエイリアシングが得られる。より具体的には、選択マルチプレクサ310が加算回路308により提供される画素合計Po1+Pi0を選択するように設定されており、除算回路316が選択された画素合計を2で除するように設定されているため、最終画素がPfinal=(Po1+Pi0)/2となる。このようにして、画素選択論理回路300は2×AAフィルタを実施可能である。
【0049】
[0057]GPU122(0)および122(1)が、内部画素または外部画素の一方が他方を除外するように選択されるモードを含む他の分散レンダリングモードでも動作可能であることに留意されたい。特定の選択は、分散レンダリングモードの詳細、例えば、異なるGPU122が同じフレーム異なる部分と異なる連続的なフレームのいずれをレンダリングするかに依存することになるが、本発明とは関係ない。また、3つ以上のGPU122があれば、より高度なアンチエイリアシングを達成可能である。例えば、任意の数のGPU122をそれぞれのMIOAおよびMIOBポートを用いてデイジーチェーン式に接続可能であり、デイジーチェーン内の各GPUが、適切な重み係数を用いてそれ自体の内部画像を上流のGPUから受信する外部画像と混合可能である。
【0050】
[0058]本明細書に記載のディスプレイヘッド、画素選択論理回路、および分散AA動作は例示的なものであり、変更および修正が可能であることが理解されよう。例えば、本明細書の除算回路は、少数の離散除数による除算をサポートするものである。他の実施形態では、広範囲のアンチエイリアシングフィルタがサポートされるように、除算回路が(任意に選択された除数を含む)より多くの離散除数をサポートすることもある。また、除算回路は、本明細書に記載のものとは異なる位置に配置することができ、除算回路の数を修正することもできる。例えば、除算回路を内部画素パスに加えて、またはその代わりに外部画素パス上に配置することもできる。
【0051】
[0059]選択回路318の特定の構成を修正することもできる。当業者であれば、内部画素および外部画素の両方から得られた内部画素、外部画素および混合画素間で制御可能に選択できるあらゆる回路素子または回路素子の組み合わせを選択回路として使用可能であることが分かるであろう。
【0052】
[0060]本明細書で用いるように、「画素」は、概して画像内のある位置でサンプリングされたカラー値のあらゆる表現またはこのような値(例えば図3の加算回路308により生成されたような)の組み合わせを指す。GPUでパイプラインをレンダリングすることにより、名目上の解像度(ここで解像度は画像内の画素数を指す)で画素が生成されるが、これがディスプレイ装置の解像度と一致することもしないこともある。いくつかの実施形態では、ディスプレイパイプラインが、名目上の解像度をディスプレイ解像度に変換するために必要とされるあらゆるアップフィルタリングまたはダウンフィルタリングを行う。
【0053】
[0061]本明細書中のMIOポートおよびディスプレイヘッドを本明細書中の「A」および「B」とするラベリングは、単に説明の利便性のためである。当然のことながら、任意のMIOポートを任意の他のMIOポートに接続可能であり、そのポートが出力ポートとして設定される場合にいずれかのディスプレイヘッドがいずれかのMIOポートを駆動可能である。加えて、いくつかのGPUが2つ超または2つ未満のMIOポートおよび/または2つ超または2つ未満のディスプレイヘッドを含むことができる。
【0054】
[0062]一般に、1つのGPUに別のGPUとの画素データ通信を可能にする任意の1つのポートまたは複数のポートをI/Oポートとして用いて本発明を実施することができる。いくつかの実施形態では、上述のように、MIOポートが別のGPUと通信する以外の目的のためにも設定可能である。例えば、MIOポートは、TVエンコーダ等の各種外部デバイスと通信するように設定可能である。いくつかの実施形態では、DVO(インテル社製Digital Video Output Interface)または他のビデオ出力標準をサポート可能である。いくつかの実施形態では、グラフィックスアダプタをアセンブルする際に各MIOポートの設定を決定する。システム起動時に、アダプタがシステムにそのMIOポートの設定について通知する。他の実施形態では、MIOポートを専用入力または出力ポートを置き換えることもできる。
【0055】
[0063]I/Oポート、ディスプレイヘッド、および他のグラフィックスサブシステムのアスペクトの設定は、全てのグラフィックスプロセッサと通信するように構成されたシステム設定ユニットにより達成することができる。いくつかの実施形態では、システム設定ユニットが、マルチプロセッサグラフィックスサブシステムを含むシステムのCPU上で実行するグラフィックスドライバプログラムで実施される。ハードウェアおよび/またはソフトウェアコンポーネントのあらゆる組み合わせを含む他の任意の適当なエージェントを、システム設定ユニットとして用いることができる。[内部分散アンチエイリアシング]
【0056】
[0064]本発明の実施形態によれば、1つのGPU122の2つのディスプレイヘッド206a、206bをマスター/スレーブ形式で互いに結合することができる。この形式では、GPU122が、マスターとして動作するディスプレイヘッド(例えばディスプレイヘッドA206a)の画素選択論理回路300を用いて「内部分散」AAフィルタリングを実行可能である。
【0057】
[0065]図4Bは、本発明の実施形態によるマスター/スレーブ形式でディスプレイヘッド206bに接続されたディスプレイヘッド206aを示すGPU122のブロック図である。当然のことながら、図4BのGPU122は図2のGPU122と同一である。図4BではアクティブなI/Oポートのみを示しており、クロスバー220は示していない。図4Bのディスプレイパイプライン202は、2つの平行なセクションを有して示されている。画素をディスプレイヘッド206aへと送るディスプレイパイプラインA402aと、画素をディスプレイヘッド206bへと送るディスプレイパイプラインB402bである。ディスプレイパイプラインA402aおよびB402bは、それぞれ従来の設計とすることができ、それぞれ各種の画素処理動作を行うようにすることができる。ディスプレイパイプライン402aおよび402bは、所望のとおりに同じ動作を行うことも異なる動作を行うこともできる。
【0058】
[0066]MIOBポート214bは、画素転送パス400を介して同じGPU122のMIOAポート214aに結合されている。画素転送パス400は、ディスプレイヘッドB206bにより生成された画素をMIOBポート214bからMIOAポート214aへ転送する。MIOAポート214aは、受信した画素をGPU122のディスプレイヘッドA206aに送る。画素転送パス400は、任意の適当な信号転送技術を用いて実施することができる。以下で例を説明する。
【0059】
[0067]ディスプレイヘッドA206aの観点からは、ディスプレイヘッドB206bから受信した画素は、異なるGPUから受信した画素と区別ができない。よって、例えば、ヘッドA206a由来の「内部」画素(PA)、ヘッドB206b由来の「外部」画素(PB)、または、画素合成回路308により画素PAおよびPBから作り出した混合画素のいずれか1つを出力画素として選択するようにディスプレイヘッドA206aの画素選択論理回路300が動作可能である。(画素PBが画素PAとは異なりディスプレイパイプラインA402aによりディスプレイヘッドA206aに提供されないという意味で、画素PBはディスプレイヘッドA206aに対して「外部」である。)
【0060】
[0068]この構成では、GPU122が、ディスプレイヘッドA206の画素選択論理回路300により混合されるサンプル値を供給する2つのディスプレイパイプライン402a、402bによる「内部分散」AAの実行に使用可能である。動作においては、GPU122のレンダリングパイプライン(明示せず)が、2つの画像について用いられるサンプリング位置が互いに異なるように、表示パラメータまたはサンプリングパラメータにいくらかの変化量をもって、同じシーンの2つの画像をレンダリングする。例えば、若干異なる表示域または表示面の法線を2つのGPU122について画成し、2つの画像の画素境界に小さいオフセットを作り出すこともできる。あるいは、画素内のサンプリング位置が(例えばグラフィックスドライバにより)設定可能な場合には、各GPU122を同じ表示パラメータの組と各画素内の異なるサンプリング位置を用いて各画像を生成することもできる。
【0061】
[0069]レンダリングした画像の一方がフレームバッファ「A」404に記憶され、他方がフレームバッファ「B」406に記憶される。フレームバッファA404およびB406は、GPU122のオンチップメモリを含む任意の1つのメモリデバイスまたは複数のメモリデバイス、図1のグラフィックスメモリ124および/またはシステムメモリ104で実施可能である。この2つのフレームバッファは所望のとおりに同じメモリデバイス中にも異なるデバイス中にも配置することができる。
【0062】
[0070]ディスプレイパイプラインB402bは、フレームバッファB406から画素を読み出し、各種の処理動作(概して従来の性質のものでよい)を画素に施し、得られた画素PBをディスプレイヘッドB206bに転送する。ディスプレイヘッドB206bは、画素PBを選択するように動作する画素選択論理回路300を有しており、それらの画素がクロスバー220(図4に明示せず)を介してMIOBポート214bへと転送される。画素PBは、画素パス400を介して同じGPU122のMIOAポート214aへと転送され、これが画素PBをディスプレイヘッドA206aに転送する。
【0063】
[0071]この動作と平行して、ディスプレイパイプラインA402aがフレームバッファAから画素を読み出し、画素に(概して従来の性質のものでよい)各種の処理動作を施し、得られた画素PAをディスプレイヘッドA206aに転送する。ディスプレイパイプラインB402b、ディスプレイヘッドB206b、および画素パス400は、同じスクリーン画素に対応する画素値PAおよびPBが同時に(例えば、同じクロックサイクルで)ディスプレイヘッドA206aの画素選択論理回路300に送られるように、適切なタイミングで好適に設定される。
【0064】
[0072]画素合成回路308内では、加算回路310が画素PAとPBを加算し、マルチプレクサ312が合計画素を選択し、除算回路314が合計を2で除し、こうしてパス316上の混合画素が画素PAおよびPBの平均となる。マルチプレクサ318は、混合画素を出力画素Pfinalとして選択する。ディスプレイヘッドA206aが出力画素Pfinalをディスプレイ装置への送信のために出力ポート(例えばデジタル出力ポート210)に送る。
【0065】
[0073]GPU122のレンダリングパイプラインが各フレームを2回レンダリングするため、本明細書に記載の内部分散AAモードで動作する際のGPU122の最大フレームレートが非AAモードで動作する際の最大フレームレートよりも概して低いことに留意されたい。いくつかの実施形態では、この内部分散AAモードのフレームレートはおよそ非AAモードのフレームレートの約1/2である。リアルタイムアニメーションについては、内部分散AAモードのフレームレートが約毎秒30フレーム(以上)であれば、フレームレートの低下はアニメーションの平滑性にほとんどあるいは全く悪影響を与えない。また、非AAモードで生成される画質は、内部分散AAモードで生成される画質よりも概して低くなる。このように、内部分散AAは高画質化と引き換えにフレームレートが低下する。
【0066】
[0074]本明細書に記載の内部分散AAモードを用いて得られるフレームレートが、単一のGPUにおいて従来のAA技術(例えば、レンダリングパイプラインおよび/またはディスプレイパイプラインでのフィルタリング)を用いて得られるフレームレートに匹敵することについても留意されたい。単一のGPUを用いた従来のAAには、単一の画像を生成するが、1画素あたり複数のサンプルを用いるGPUのレンダリングパイプラインが必要となる。1画素あたりより多くのサンプルを処理することによって、画質の改善と引き換えに非AAモードに対するフレームレートも低下する。2画像のレンダリングの方法によって、レンダリングパイプラインにおいて管理され、内部分散AAモードを用いたGPUのスループットは、従来のAAを用いるGPUのスループットに匹敵することができる。
【0067】
[0075]より高次のAAフィルタを実施することもできるが、このようなフィルタは単一パイプラインおよび内部分散アンチエイリアシング動作の組み合わせを採用することができる。一実施形態では、ディスプレイパイプラインA402aおよびディスプレイパイプラインB402bがそれぞれ内部N×AAフィルタを実施するフィルタオンスキャン(FOS)モジュール(明示せず)を含んでいる。より具体的には、レンダリングされる画像の各バージョンについて、GPU122のレンダリングパイプラインが、例えば従来のスーパーサンプリングおよび/またはマルチサンプリング技術を用いて、1画素あたりN個(例えば2、4または1より大きい任意の他の数)のサンプルを生成する。画像の一方のバージョン用のサンプルがフレームバッファA404に記憶され、画像の他方のバージョン用のサンプルがフレームバッファB406に記憶される。
【0068】
[0076]ディスプレイパイプラインA402aは、各画素についてのN個のサンプル全てをフレームバッファAから受信する。ディスプレイパイプラインA402a内では、第1のフィルタオンスキャン(FOS)モジュール(図4には明示せず)が、N×AAフィルタを実施し、N個のサンプルを混合して1画素あたり1つのカラー値を生成する。FOSモジュールにより決定されたカラー値は、画素PAとしてディスプレイヘッドA206aに(場合によってはさらなる処理の後で)供給される。
【0069】
[0077]同様に、ディスプレイパイプライン402bは、各画素についてのN個のサンプル全てをフレームバッファB406から受信する。ディスプレイパイプライン402b内では、第2のFOSモジュール(これも図4には明示せず)が、N×AAフィルタを実施し、N個のサンプルを混合して1画素あたり1つのカラー値を決定する。第2のFOSモジュールにより決定されたカラー値は、画素PBとしてディスプレイヘッドB206bに(場合によってはさらなる処理の後で)供給される。
【0070】
[0078]このように、ディスプレイパイプ402aおよび402bによりそれぞれ生成された画素PAおよびPBは、それぞれN×オーバーサンプリング画像からのフィルタ処理画素とすることが可能である。フレームバッファA404を埋めるために用いられるサンプリング点がフレームバッファB406を埋めるために用いられるものと一致しない限り、各ディスプレイパイプ402a、402b内のN×AAフィルタを上述の内部分散AAフィルタ技術に組み合わせることによって、(2N)×AAフィルタが得られる。例えば、各ディスプレイパイプ402a、402b内のFOSモジュールが4×AAフィルタであれば、GPU122は8×AAを提供可能である。
【0071】
[0079]本発明には、特定のFOSモジュールまたはAAフィルタリングアルゴリズムが必須ということはなく、従来のモジュールおよびアルゴリズムを用いることができる。したがって、詳細な説明は省略する。いくつかの実施形態では、得られる最終画像が特定のディスプレイパイプラインによって処理される画像のバージョンに依存しないように、ディスプレイパイプラインA402aおよび402b内のFOSモジュールが同一のフィルタアルゴリズムに適合する。また、画像生成プロセスの初期にN×AAフィルタリングを行うことが可能である。例えば、代替的な一実施形態では、従来の技術を用いてGPU122のレンダリングパイプライン内でN×AAフィルタリングを行うこともできる。
【0072】
[0080]いくつかの実施形態では、異なるフレームバッファを埋めるサンプリング点が、一致するサンプリング点がないように選択される。例えば、図5Aは画素500に適用される「グリッド」サンプリングパターンを図示している。画素は、画素内の位置501〜504(丸で示す)で4回サンプリングされる。図5Bは画素500に適用される「回転グリッド」サンプリングパターンを図示している。画素は、画素内の位置501〜504とは異なる位置511〜514(ひし形で示す)で4回サンプリングされる。
【0073】
[0081]一実施形態では、フレームバッファA404内の画素データが図5Aのグリッドサンプリングパターンを用いて生成され、フレームバッファB406内の画素データが図5Bの回転グリッドサンプリングパターンを用いて生成される。ディスプレイパイプA402aのFOSモジュールは、4つのサンプル値(501〜504)にフィルタをかけて1つの値PAとし、ディスプレイパイプB402bのFOSモジュールは、4つのサンプル値(511〜514)にフィルタをかけて1つの値PBとする。ディスプレイヘッド206aの画素選択論理回路300が上述のように値PAおよびPBを混合して、全部で8つのサンプルの平均に相当する最終画像を得る。この手順は、図5Cの8点パターンを用いて各画素をサンプリングする単一のレンダリングプロセスと同じアンチエイリアシングパワーをもたらす。
【0074】
[0082]本明細書に記載の内部分散AA技術は例示的なものであって、変更および修正が可能であることが理解されよう。例えば、本明細書に記載のGPU122は、それぞれが最大限で1つの出力ポートを駆動可能な丁度2つのディスプレイヘッドを有しており、その結果、両方のディスプレイヘッドを内部分散アンチエイリアシングに用いれば、GPU122がディスプレイ装置に最大限で1つの画素ストリームを送ることができる。しかしながら、本発明の実施形態は、少なくとも2つのディスプレイヘッドならびに適当な画素選択論理回路およびI/Oポートを有する任意のGPUで実施することができる。GPUが3つ以上のディスプレイヘッドを有する場合には、GPUが内部分散AAをサポート可能であり、2つ以上のディスプレイデバイスに個々の画素ストリームを供給することも可能である。加えて、GPUが3つ以上のディスプレイヘッドを有する場合には、GPUのAAパワーを一層高めるために、GPUのディスプレイヘッドの全てをマスター/スレーブデイジーチェーン式に互いに接続できるようになる。
【0075】
[0083]また、本明細書に記載のGPU122は、いずれも内部分散AAに用いられる2つのMIOポートを有している。この実施形態では、ヘッドA206aとヘッドB206bのどちらも任意の他のGPUまたはディスプレイヘッドに対してマスターあるいはスレーブとして使用できなくなる。他の実施形態では、GPUが追加のMIOポートを有することができ、このMIOポートが1つのポートに画素の受信送信を同時に行わせ、内部分散AAと組み合わせて他のGPUとの相互接続を可能にする動作モードを有することができる。例えば、第3のMIOポートがある場合、そのポートは、外部画素を別のGPUからディスプレイヘッドB206bに送る入力ポートまたはディスプレイヘッドA206aにより生成された画素を別のGPUに送る出力ポートとして設定することもできる。このような実施形態において、他のGPUはそれ自体の内部分散AAフィルタリングを行うように設定されることもされないこともある。[画素転送パス]
【0076】
[0084]本発明の実施形態による画素転送パス実施の例について説明する。明らかなように、画素転送パスはGPUの外部にあっても内部にあってもよい。
【0077】
[0085]図6は、本発明の実施形態によるプリント基板カードとして実施され、外部画素転送パスを用いて構成されたグラフィックスアダプタ600を示す。グラフィックスアダプタ600は、PCI−Eまたは別の相互接続標準に適合するプリント回路基板(PCB)602を用いて拡張カードとして実施される。GPU122は、PCB602上に実装され、PCB602上で配線(図示せず)を介してシステムコネクタ604と電気的に結合される。システムコネクタ604は、PCI−E拡張スロット(または任意の他種の拡張スロット)に挿入可能なように設計され、GPU122と図1のシステム100等のコンピュータシステムの他の部分の間の通信を可能にする。GPU122は、PCB602上で配線(図示せず)を介してディスプレイ出力コネクタ606とも電気的に結合されている。ディスプレイ出力コネクタ606は、GPU122のデジタル出力ポート210、211またはアナログ出力ポート212、213(図2参照)の1つと好適に結合される。いくつかの実施形態では、当分野で既知のように、PCB602が、それぞれが出力ポート210〜213の異なる1つに結合された複数のディスプレイ出力コネクタ606を提供することができる。
【0078】
[0086]PCB602は、同一設計が可能な2つのグラフィックスエッジコネクタ614a、614bも含んでいる。グラフィックスエッジコネクタ614aは、配線616を介してGPU122のMIOAポート214aに接続しており、グラフィックスエッジコネクタ614bは、配線618を介してGPU122のMIOBポート214bに接続している。各グラフィックスエッジコネクタ614a、614bは、取り外し可能な相互接続デバイスとの電気的かつ機械的接続用に構成されている。いくつかの実施形態では、グラフィックスエッジコネクタ614a、614bが同一の構成を有し、交換して用いることができる。
【0079】
[0087]一実施形態のグラフィックスアダプタ600は、2つ以上のGPUが協働してレンダリングタスクの異なる部分を行う分散レンダリングシステムでの使用のために設計されている。このようなシステムは、例えば、各CPUが画像の異なる部分をレンダリングする分割フレームモード、各CPUが一連の画像中の異なる画像をレンダリングする代替フレームモード、または分散アンチエイリアシングモードで動作させることができる。これらモードのそれぞれにおいて、1つのGPU(マスター)がもう1つのGPU(スレーブ)から画素を受信し、マスターGPU内の画素選択論理回路300が上述のようにディスプレイ用の画素を選択する。異なるグラフィックスアダプタ600のGPUは、適当な相互接続デバイスを用いてそれぞれのグラフィックスエッジコネクタ614a、614bを介して有利に接続される。
【0080】
[0088]本発明の実施形態では、取り外し可能な相互接続デバイス620が、図6に示すように、同じグラフィックスアダプタ600のグラフィックスエッジコネクタ614a、614bに接続可能なように構成かつ形成されている。相互接続デバイス620は、例えば、グラフィックスエッジコネクタ614a、614bを受容するレセプタクルを片側に有するリボンケーブルや長さに沿ってプリントされた配線付きPCBとすることが可能であり、2つのグラフィックスエッジコネクタ614a、614bを互いに接続する。
【0081】
[0089]この実施形態では、相互接続デバイス620が、グラフィックスアダプタ600によりサポートされる分散レンダリングシステムのタイミング特性を利用して画素転送パス400(図4)を構築する。より具体的には、分散レンダリング構成において、GPU122のMIOBポート214bから異なるグラフィックスアダプタ600上のGPUのMIOAポート(またはMIOBポート)への画素転送パスが、転送パスの任意のセグメントに沿って含まれ得る任意の電子コンポーネント(FIFO、ラッチ等)だけでなく、配線618および/または616の長さおよび2つのアダプタ間の相互接続デバイス由来の特性転送時間を有する。分散レンダリング動作では、スレーブGPUおよびマスターGPUからの画素がマスターGPUのディスプレイヘッドにほぼ同時に(例えば同じクロックサイクル中に)到達するように、スレーブGPUのディスプレイヘッドからマスターGPUのディスプレイヘッドへの画素の転送が有利に調整される。
【0082】
[0090]相互接続デバイス620は、異なるGPUを接続する分散レンダリング相互接続デバイスとの送信時間マッチングを与え、相互接続デバイス620により提供される画素転送パスは、信号を正しいタイミングでMIOAポート214aに送る。このように、外部相互接続デバイスを用いた内部分散AAの実施には、元々分散レンダリング用に設計されたGPU122またはアダプタカード600に何ら内部修正を必要とするものではない。
【0083】
[0091]本明細書に記載のグラフィックスアダプタおよび相互接続デバイスは、例示的なものであって、変更および修正が可能であることが理解されよう。アダプタおよび相互接続デバイスの形状、レイアウト、および材料組成は、本明細書で示し記載したものから修正することができ、MIOポート間のデータ転送用にあらゆる通信プロトコルを実施することができる。
【0084】
[0092]代替的な一実施形態では、例えばパス618〜パス616を接続する配線を用いて、相互接続デバイス620をPCB602の一部として実施することもできる。この実施形態では、パス618からパス616へまたは逆方向のデータ転送を有効または無効とするように、制御デバイス(例えば取り外し可能なジャンパまたはドライバ制御スイッチ)が有利に用いられる。
【0085】
[0093]いくつかの実施形態では、同じGPUの2つのMIOポート間の相互接続デバイス620または他の外部接続の存在が自動的に内部分散AAを有効にするわけではないことにも留意されたい。上述のように、画素選択論理回路300の動作が内部分散AAを行うか否かを決定するが、画素選択論理回路300の動作はグラフィックスドライバを介して制御される。
【0086】
[0094]代替的な別の実施形態では、内部分散AAに用いられる画素転送パスがGPU内に構築される。図7は、本発明のこのような一実施形態によるGPU700のブロック図である。GPU700は、図4のGPU122とほぼ同様であり、同じ参照番号が対応するコンポーネントを識別するのに用いられている。GPU122とは異なり、GPU700は、ディスプレイヘッドB206bの出力パス702をディスプレイヘッドA206aの外部画素入力パス704に接続する内部画素転送パスを含んでいる。
【0087】
[0095]この実施形態では、画素転送パスが、ディスプレイヘッドB206bからの画素およびクロスバー220を介してMIOポート(例えばMIOAポート214a)の一方からのパス708上で受信した画素の間で選択する選択ユニット(例えばマルチプレクサ)706を含んでいる。選択された画素は、ディスプレイヘッドA206aの外部画素入力パス704に提供される。
【0088】
[0096]選択ユニット706は、制御信号(明示せず)に応答して動作する。制御信号は、GPU700が内部分散AAモードで動作している場合には選択ユニット706がパス702上の画素を選択するように、GPU700のディスプレイヘッドA206aが別のGPUに対してマスターとして動作している場合にはパス708上の画素を選択するように設定する。この制御信号は、グラフィックスドライバから発せられたコマンドに応答して生成することができ、グラフィックソフトウェアにアクセスする必要なく適切なソフトウェアインターフェースを通じて、ユーザ(またはアプリケーション開発者)が内部分散AAを有効または無効にすることを可能にする。
【0089】
[0097]この実施形態では、分散レンダリングモードにおいて外部GPUから画素が到着するのと同じタイミングでディスプレイヘッドB206bからの画素が選択回路706に到達するように、ディスプレイヘッドB206bから選択回路706へのパス702がFIFO、ラッチ、および他のタイミング制御デバイスを含むことができることに留意されたい。この場合、ディスプレイヘッドB206bおよびディスプレイヘッドA206aの動作タイミングは、GPUが分散レンダリングモードまたは内部分散AAモードに依存しない。
【0090】
[0098]内部画素転送パスは、GPUに修正を要するものの、GPUのI/Oポートのいずれの使用も必要としない。故に、例えば、GPU700が内部分散AAフィルタリングを実行し続ける間、GPU700のディスプレイヘッドA206aは別のGPUのディスプレイヘッドに対してスレーブ化可能であり、あるいはGPU700のディスプレイヘッドB206bは別のGPUのディスプレイヘッドに対してマスター化可能である。
【0091】
[0099]本明細書に記載の内部画素転送パスは例示的なものであって、変更および修正が可能であることが理解されよう。例えば、(ディスプレイヘッドA206aからディスプレイヘッドB206bへの)「逆方向」画素転送パスを示したパスに追加して設けることもできる。[他の実施形態]
【0092】
[0100]上述のように、本発明の実施形態は、AAフィルタ処理画像を生成するために、1つのGPUだけでなく、複数のGPUにわたって分散レンダリングに広く関連付けられた読み出し技術およびコンポーネントを用いることが可能なマルチGPUシステム用の分散アンチエイリアシング技術を提供する。適当なグラフィックスドライバインターフェースを介して、任意のグラフィックスプログラムについてプログラムそれ自体に与えられたAA(またはその欠如)に関係なく、適切に設定されたGPUのエンドユーザが内部分散AAを有効にすることを選択可能である。プログラムがAAを提供する場合、本明細書に記載の内部分散AAは、AA解像度を上げる(例えば2倍にする)ために用いることが可能である。
【0093】
[0101]本発明を特定の実施形態に関連して説明してきたが、当業者であれば多数の修正が可能であることが理解されよう。例えば、本発明はAAフィルタリングを参照して説明してきたが、本明細書に記載の単一GPUのディスプレイヘッド間または複数GPUのディスプレイヘッド間の結合を別の方法で用いることもできる。
【0094】
[0102]代替的な一実施形態では、ステレオアナグリフを生成するために分散フィルタリングを用いることが可能である。当分野で既知のように、ステレオアナグリフはシーンの左目視野および右目視野を重ねて1つの画像を作り出す。通常、左目画素と右目画素には異なるカラーフィルタが適用されるが、例えば、右目画素を赤色パスフィルタでフィルタ処理し、左目画素を青/緑色パスフィルタを用いてフィルタ処理することができる。左目視野および右目視野間の視野域または視点オフセットにより、シーンの同じ点に対応する左目画素と右目画素はアナグリフの異なる位置にくる。故に、裸眼には、アナグリフが歪んだ色の二重画像に見える。画像を正確に観るには、観察者が、右目画素用に用いた色をフィルタで除外する左レンズと左目画素用に用いた色をフィルタで除外する左レンズの特殊なメガネを着用する。
【0095】
[0103]図4Aを参照すると、シーンの右目視野を生成するためにGPU122(0)のレンダリングパイプライン(図示せず)を用い、シーンの左目視野を生成するためにGPU122(1)のレンダリングパイプライン(図示せず)を用いることができる。右目および左目視野用のレンダリングパラメータを決定するのに既知の技術を用いることができる。
【0096】
[0104]右目画素Pi1および左目画素Pi0は、GPU122(0)およびGPU122(1)のそれぞれのレンダリングパイプラインまたはそれぞれのディスプレイパイプライン202(0)および202(1)のいずれかにおいて、有利にカラーフィルタ処理される。一実施形態では、異なる赤、緑および青色成分を用いて画素色が特定される。右目画素は、例えば赤色成分をゼロまで減らし、緑および青色成分を不変のままにすることによりフィルタ処理可能である。同様に、左目画素は、緑および青色成分をゼロまで減らし、赤色成分を不変のままにすることによりフィルタ処理可能である。
【0097】
[0105]右目画素Pi1は、GPU122(1)のディスプレイヘッドA206aに送られる。ディスプレイヘッド206(a)は、画素Pi1をMIOAポート214a(1)に転送し、これが画素をPo1としてGPU122(0)のMIOAポート214a(0)へと送る。ディスプレイヘッド206a(0)は、このようにして右目画素を外部画素として受信する。
【0098】
[0106]左目画素Pi0は、内部画素としてディスプレイヘッド206a(0)に送られる。一般に、対応する左目画素および右目画素はシーンの異なる位置を再生するが、右目視野および左目視野を生成するのに用いられる視野域または視点オフセットによって、画素選択論理回路300により処理される対応する左目画素および右目画素がアナグリフフレーム内の同じ位置にある画素となることに留意されたい。
【0099】
[0107]一実施形態では、ディスプレイヘッド206a(0)が図3の画素選択論理回路300を含んでいる。アナグリフを生成するために、除算回路306および314がともに1の除数を選択するように設定される。加算回路308は、左目画素Pi0と右目画素Pi1を加算し、初期のカラーフィルタリングの結果として、左目画素の赤色成分と右目画素の青色および緑色成分を有する合計画素をパス310上に生成する。選択マルチプレクサ312がパス310から合計画素を選択し、選択マルチプレクサ316がパス315上で混合画素を出力画素として選択する。
【0100】
[0108]他の実施形態では、画素選択論理回路300の前のカラーフィルタは用いない。例えば、選択が各色成分について独立に制御可能であるように選択マルチプレクサ312および/または316を設定可能である。このような一実施形態では、選択マルチプレクサ312がパス302から左目画素Pi0の全ての色成分を通過し、選択マルチプレクサ316が左目画素Pi0の赤色成分と右目画素Pi1の青色および緑色成分を通過する。結果はパス318上の左目画素の赤色成分と右目画素の青色および緑色成分を有する出力画素となる。
【0101】
[0109]当業者であれば、アナグリフレンダリングに3つ以上のGPUを使用可能であることを理解することができる。4つのGPU(例えば図4B)の実施形態では、2つのGPUを右目視野生成用に用い、2つのGPUを左目視野生成用に用いることが可能である。各視野を生成する2つのGPUは、アナグリフの画質を高めるために上述したような分散アンチエイリアシング技術を採用することが可能である。
【0102】
[0110]ステレオアナグリフは、内部分散フィルタリングを用いてもレンダリング可能である。図4Bを参照すると、GPU122(0)のレンダリングパイプライン(図示せず)が両方の視野を生成可能であり、左目視野をフレームバッファAに、右目視野をフレームバッファBに(あるいはその反対に)記憶する。ディスプレイパイプラインB402bおよびディスプレイヘッドB206bが右目視野を画素PBとしてディスプレイヘッドA206aに送り、ディスプレイパイプラインA402aが左目視野を画素PAとしてディスプレイヘッドA206aに送る。ディスプレイヘッドA206aでは、画素合成器308(図3)がアナグリフを生成するように適切に画素を混合する。
【0103】
[0111]フェードイン、フェードアウト、またはディゾルブ等の遷移効果を発生させるためにも分散フィルタリングを用いることが可能である。例えば、内部分散の場合、フレームバッファBはフェードアウトする画像を記憶することができ、フレームバッファAはフェードインする画像を記憶する。各フレームでは、画素合成器308が画素の相対的な重みをフレームバッファAおよびフレームバッファBから調整し、それによってフレームAからの画像が徐々に最高強度まで上がり、フレームバッファBからの画像がゼロ強度まで弱まる。(フレームバッファBの画像がベタ色領域であったら効果はフェードインとなり、フレームバッファAの画像がベタ色領域であったら効果はフェードアウトとなる。)遷移の平滑性は、一部には、画素合成器308が形成可能な画素PAおよび画素PBの異なる加重平均の数に依存するが、これは設計上の選択の問題である。外部分散フィルタリングの複数のGPUも同様の効果を達成するのに用いることが可能である。
【0104】
[0112]別の実施形態では、分散フィルタリングを各ディスプレイヘッドのルックアップテーブルと組み合わせて用いることにより、このような遷移効果を達成可能である。当分野で既知のように、ディスプレイヘッドは、内部画素表現をディスプレイ装置に適したカラー強度に変換するルックアップテーブルを含んでいることが多く、時には異なる値をルックアップテーブルにロードしたりリロードしたりすることが可能である。ルックアップテーブル内の値のカラー強度をあるフレームから次のフレームへと下げる(または上げる)ことによってフェードアウト(またはフェードイン)を達成可能である。故に、フレームバッファB内の画像からフレームバッファA内の画像へとディゾルブするには、従来のフェードアウトルックアップテーブルをディスプレイヘッドBに適用することも可能であり、従来のフェードインルックアップテーブルをディスプレイヘッドAに適用する。画素合成器308は、2つの画像を一定の(例えば等しい)重みで合成し、ディゾルブ効果を作り出す。
【0105】
[0113]他の実施形態では、同じGPUのディスプレイヘッド間の画素転送が、混合とは関係ないディスプレイ特性を実施するために用いられる。例えば、ディスプレイヘッド間の画素転送は、LCDオーバードライブ(当分野では「LCDフィードフォワード」または「応答時間補正」(RTC)ともいう)機能を制御するために用いることが可能である。当分野で既知のように、LCD画面は、画素を駆動する信号が部分的には所望の新たな強度また部分的には所望の新たな強度と前の強度との差分に基づいて、フレーム毎に調整される場合に、より速く応答するようにすることが可能である。
【0106】
[0114]LCDオーバードライブ機能を実施するには、フレームバッファBが前の画像の画素を記憶するのに対し、フレームバッファAを新たな画像の画素を記憶するように用いることが可能である。ディスプレイヘッドBは前の画素値をディスプレイヘッドAに送り、ディスプレイヘッドAの画素合成器308は、例えば従来のLCDオーバードライブ信号を計算するための記述を用いて新たな値および前の値に基づいてオーバードライブ値を計算するように設定可能である。
【0107】
[0115]あるGPUのディスプレイヘッド間の画素転送は、合成画像を生成するためにも用いることができる。例えば、フレームバッファBは、フレームバッファAに記憶された画像の一部に重ねられるオーバーレイ画像用の画素を含むことができる。ディスプレイヘッドBがディスプレイヘッドAにオーバーレイ画素を送り、ディスプレイヘッドAの画素選択論理回路300が、外部画素が選択されるオーバーレイ領域以外で内部画素を選択する。
【0108】
[0116]このように、本発明を特定の実施形態に関連して説明してきたが、本発明が特許請求項の範囲内の全ての変形物および均等物を対象とするように意図されていることが理解されよう。
【図面の簡単な説明】
【0109】
【図1】本発明の実施形態によるコンピュータシステムのブロック図である。
【図2】本発明の実施形態で使用可能なグラフィックス処理ユニット(GPU)内の画素出力パスのブロック図である。
【図3A】本発明の実施形態で使用可能なGPUのディスプレイヘッド内の画素選択論理回路のブロック図である。
【図3B】本発明の実施形態で使用可能なGPUのディスプレイヘッド内の画素選択論理回路のブロック図である。
【図4A】本発明の実施形態による2つのGPUを有するグラフィックスサブシステムのブロック図である。
【図4B】本発明の実施形態によるマスター/スレーブ形式で結合された2つのディスプレイヘッドを示すGPUのブロック図である。
【図5A】本発明のいくつかの実施形態で使用可能なサンプリングパターンを示す図である。
【図5B】本発明のいくつかの実施形態で使用可能なサンプリングパターンを示す図である。
【図5C】本発明のいくつかの実施形態で使用可能なサンプリングパターンを示す図である。
【図6】本発明の実施形態によるプリント基板カードとして実施され、外部画素転送パスを用いて構成されたグラフィックスアダプタである。
【図7】本発明の実施形態による内部画素転送パスを持ったGPUのブロック図である。
【符号の説明】
【0110】
100…コンピュータシステム、102…中央演算処理装置(CPU)、104…システムメモリ、105…メモリブリッジ、106、113…バス、107…I/O(入力/出力)ブリッジ、112…グラフィックスサブシステム、110…ディスプレイ装置、114…システムディスク、122…グラフィックス処理装置(GPU)、124…グラフィックスメモリ、202、402…ディスプレイパイプライン、206a、206b…ディスプレイヘッド、210、211…デジタル出力ポート、212、213…アナログ出力ポート、214a、214b…多目的入力/出力(MIO)ポート、220…クロスバー、300、350…画素選択論理回路、302、352…第1のパス、304、354…第2のパス、306、358…画素合成回路、308…第1の除算回路、310…加算回路、312…選択回路、314、366…第2の除算回路、316、360…パス、318…選択回路、320、364…出力パス、362…選択マルチプレクサ、400…画素転送パス、404…フレームバッファA、406…フレームバッファB。
【特許請求の範囲】
【請求項1】
グラフィックスプロセッサ用のディスプレイヘッドであって、
第1のグラフィックスプロセッサにより生成された、ガンマ補正された第1の画素を伝播するように構成された第1の入力パスと、
第2のグラフィックスプロセッサにより生成された、ガンマ補正された第2の画素を伝播するように構成された第2の入力パスと、
前記第1の入力パスおよび前記第2の入力パスに結合され、前記ガンマ補正された第1の画素と前記ガンマ補正された第2の画素を混合して、混合画素を生成するように構成された画素合成器と、
前記ガンマ補正された第1の画素、前記ガンマ補正された第2の画素、又は、前記混合画素の1つを出力画素として選択するように構成された選択回路と、を備える、ディスプレイヘッド。
【請求項2】
前記ディスプレイヘッドが、除数により混合画素を除するように構成された除算回路をさらに含む、請求項1に記載のグラフィックスプロセッサ。
【請求項3】
前記除数は、1及び2を除数として含む候補除数から選択される、請求項2に記載のグラフィックスプロセッサ。
【請求項4】
前記除数は、1、2及び4を除数として含む候補除数から選択される、請求項1に記載のグラフィックスプロセッサ。
【請求項5】
前記画素合成器が、前記ガンマ補正された第1の画素および前記ガンマ補正された第2の画素を加算することによって前記混合画素を生成するように構成される、請求項1に記載のグラフィックスプロセッサ。
【請求項6】
前記第1の画素及び前記第2の画素がガンマ補正画素であり、
前記画素合成器が、前記第1の画素および前記第2の画素のガンマ補正混合を計算することによって前記混合画素を生成するように構成される、請求項1に記載のグラフィックスプロセッサ。
【請求項7】
前記ガンマ補正混合の近似は、前記ガンマ補正された第1の画素をPi、前記ガンマ補正された第2の画素をPe、としたときに、下記式
(4Pi+4Pe+|Pi−Pe|)/4
により計算される、請求項6に記載のグラフィックスプロセッサ。
【請求項8】
前記画素合成器が、前記ガンマ補正された第1の画素と前記ガンマ補正された第2の画素との混合より前に、前記ガンマ補正された第1の画素を除数を用いて除するように構成された除算回路を含む、請求項1に記載のグラフィックスプロセッサ。
【請求項9】
ガンマ補正された第1の画素を生成するように構成されたディスプレイパイプラインと、
ガンマ補正された第2の画素を外部画素の供給源から受信するように構成された入力ポートと、
ディスプレイヘッドとを備え、
前記ディスプレイヘッドは、
前記ディスプレイパイプラインに結合され、前記ディスプレイパイプラインから前記ガンマ補正された第1の画素を受信するように構成された第1の入力パスと、
前記入力ポートに結合され、前記入力ポートから前記ガンマ補正された第2の画素を受信するように構成された第2の入力パスと、
前記第1の入力パスおよび前記第2の入力パスに結合され、前記ガンマ補正された第1の画素と前記ガンマ補正された第2の画素を混合して、混合画素を生成するように構成された画素合成器と、
前記ガンマ補正された第1の画素、前記ガンマ補正された第2の画素、又は、前記混合画素の1つを出力画素として選択するように構成された選択回路とを有する、グラフィックスプロセッサ。
【請求項10】
前記ディスプレイパイプラインは、前記ガンマ補正された第1の画素に関連付けられた複数のサンプル値に対するアンチエイリアシングフィルタに適合するフィルタユニットを含む、請求項9に記載のグラフィックスプロセッサ。
【請求項11】
複数の出力ポートと、
前記ディスプレイヘッドと複数の出力ポートとの間に結合された外部回路とを更に含み、
前記外部回路は、出力画素を前記出力ポートの一つに選択的に転送するように構成された、請求項9に記載のグラフィックスプロセッサ。
【請求項12】
前記複数の出力ポートは、他のグラフィックスプロセッサの入力ポートに接続されるように構成された第1の出力ポートを含む、請求項11に記載のグラフィックスプロセッサ。
【請求項13】
画像を生成する方法であって、
第1のグラフィックスプロセッサを用いて、画像用のガンマ補正された入力画素の第1セットをレンダリングするステップと、
第2のグラフィックスプロセッサを用いて、画像用のガンマ補正された入力画素の第2セットをレンダリングするステップであって、前記第1のグラフィックスプロセッサ及び前記第2のグラフィックスプロセッサの各々のレンダリング動作は、少なくとも一つの点で異なるステップと、
前記ガンマ補正された入力画素の第1セット及び前記ガンマ補正された入力画素の第2セットを第1のディスプレイヘッドに送るステップと、
前記第1のディスプレイヘッドで、前記ガンマ補正された入力画素の第1セット及び前記ガンマ補正された入力画素の第2セットの対応する画素を混合して、出力画素の第1セットを生成するステップと、を含む方法。
【請求項14】
前記第1のディスプレイヘッドは、前記第1のグラフィックスプロセッサに設けられた、請求項13に記載の方法。
【請求項15】
前記第1のグラフィックスプロセッサ及び前記第2のグラフィックスプロセッサの各々のレンダリング動作は、各画素に適用されるサンプリングパターンに関して異なる、請求項13に記載の方法。
【請求項16】
前記第1のグラフィックスプロセッサ及び前記第2のグラフィックスプロセッサの各々のレンダリング動作は、レンダリングされる画像の視野域オフセットに関して異なる、請求項13に記載の方法。
【請求項17】
前記第1のグラフィックスプロセッサ及び前記第2のグラフィックスプロセッサの各々のレンダリング動作は、前記第1のグラフィックスプロセッサによるレンダリング動作が、ステレオアナグリフの左目視野を生成し、前記第2のグラフィックスプロセッサによるレンダリング動作が、ステレオアナグリフの右目視野を生成するという点で異なる、請求項13に記載の方法。
【請求項18】
前記出力画素の第1セットをディスプレイ装置に送るステップを更に含む、請求項13に記載の方法。
【請求項1】
グラフィックスプロセッサ用のディスプレイヘッドであって、
第1のグラフィックスプロセッサにより生成された、ガンマ補正された第1の画素を伝播するように構成された第1の入力パスと、
第2のグラフィックスプロセッサにより生成された、ガンマ補正された第2の画素を伝播するように構成された第2の入力パスと、
前記第1の入力パスおよび前記第2の入力パスに結合され、前記ガンマ補正された第1の画素と前記ガンマ補正された第2の画素を混合して、混合画素を生成するように構成された画素合成器と、
前記ガンマ補正された第1の画素、前記ガンマ補正された第2の画素、又は、前記混合画素の1つを出力画素として選択するように構成された選択回路と、を備える、ディスプレイヘッド。
【請求項2】
前記ディスプレイヘッドが、除数により混合画素を除するように構成された除算回路をさらに含む、請求項1に記載のグラフィックスプロセッサ。
【請求項3】
前記除数は、1及び2を除数として含む候補除数から選択される、請求項2に記載のグラフィックスプロセッサ。
【請求項4】
前記除数は、1、2及び4を除数として含む候補除数から選択される、請求項1に記載のグラフィックスプロセッサ。
【請求項5】
前記画素合成器が、前記ガンマ補正された第1の画素および前記ガンマ補正された第2の画素を加算することによって前記混合画素を生成するように構成される、請求項1に記載のグラフィックスプロセッサ。
【請求項6】
前記第1の画素及び前記第2の画素がガンマ補正画素であり、
前記画素合成器が、前記第1の画素および前記第2の画素のガンマ補正混合を計算することによって前記混合画素を生成するように構成される、請求項1に記載のグラフィックスプロセッサ。
【請求項7】
前記ガンマ補正混合の近似は、前記ガンマ補正された第1の画素をPi、前記ガンマ補正された第2の画素をPe、としたときに、下記式
(4Pi+4Pe+|Pi−Pe|)/4
により計算される、請求項6に記載のグラフィックスプロセッサ。
【請求項8】
前記画素合成器が、前記ガンマ補正された第1の画素と前記ガンマ補正された第2の画素との混合より前に、前記ガンマ補正された第1の画素を除数を用いて除するように構成された除算回路を含む、請求項1に記載のグラフィックスプロセッサ。
【請求項9】
ガンマ補正された第1の画素を生成するように構成されたディスプレイパイプラインと、
ガンマ補正された第2の画素を外部画素の供給源から受信するように構成された入力ポートと、
ディスプレイヘッドとを備え、
前記ディスプレイヘッドは、
前記ディスプレイパイプラインに結合され、前記ディスプレイパイプラインから前記ガンマ補正された第1の画素を受信するように構成された第1の入力パスと、
前記入力ポートに結合され、前記入力ポートから前記ガンマ補正された第2の画素を受信するように構成された第2の入力パスと、
前記第1の入力パスおよび前記第2の入力パスに結合され、前記ガンマ補正された第1の画素と前記ガンマ補正された第2の画素を混合して、混合画素を生成するように構成された画素合成器と、
前記ガンマ補正された第1の画素、前記ガンマ補正された第2の画素、又は、前記混合画素の1つを出力画素として選択するように構成された選択回路とを有する、グラフィックスプロセッサ。
【請求項10】
前記ディスプレイパイプラインは、前記ガンマ補正された第1の画素に関連付けられた複数のサンプル値に対するアンチエイリアシングフィルタに適合するフィルタユニットを含む、請求項9に記載のグラフィックスプロセッサ。
【請求項11】
複数の出力ポートと、
前記ディスプレイヘッドと複数の出力ポートとの間に結合された外部回路とを更に含み、
前記外部回路は、出力画素を前記出力ポートの一つに選択的に転送するように構成された、請求項9に記載のグラフィックスプロセッサ。
【請求項12】
前記複数の出力ポートは、他のグラフィックスプロセッサの入力ポートに接続されるように構成された第1の出力ポートを含む、請求項11に記載のグラフィックスプロセッサ。
【請求項13】
画像を生成する方法であって、
第1のグラフィックスプロセッサを用いて、画像用のガンマ補正された入力画素の第1セットをレンダリングするステップと、
第2のグラフィックスプロセッサを用いて、画像用のガンマ補正された入力画素の第2セットをレンダリングするステップであって、前記第1のグラフィックスプロセッサ及び前記第2のグラフィックスプロセッサの各々のレンダリング動作は、少なくとも一つの点で異なるステップと、
前記ガンマ補正された入力画素の第1セット及び前記ガンマ補正された入力画素の第2セットを第1のディスプレイヘッドに送るステップと、
前記第1のディスプレイヘッドで、前記ガンマ補正された入力画素の第1セット及び前記ガンマ補正された入力画素の第2セットの対応する画素を混合して、出力画素の第1セットを生成するステップと、を含む方法。
【請求項14】
前記第1のディスプレイヘッドは、前記第1のグラフィックスプロセッサに設けられた、請求項13に記載の方法。
【請求項15】
前記第1のグラフィックスプロセッサ及び前記第2のグラフィックスプロセッサの各々のレンダリング動作は、各画素に適用されるサンプリングパターンに関して異なる、請求項13に記載の方法。
【請求項16】
前記第1のグラフィックスプロセッサ及び前記第2のグラフィックスプロセッサの各々のレンダリング動作は、レンダリングされる画像の視野域オフセットに関して異なる、請求項13に記載の方法。
【請求項17】
前記第1のグラフィックスプロセッサ及び前記第2のグラフィックスプロセッサの各々のレンダリング動作は、前記第1のグラフィックスプロセッサによるレンダリング動作が、ステレオアナグリフの左目視野を生成し、前記第2のグラフィックスプロセッサによるレンダリング動作が、ステレオアナグリフの右目視野を生成するという点で異なる、請求項13に記載の方法。
【請求項18】
前記出力画素の第1セットをディスプレイ装置に送るステップを更に含む、請求項13に記載の方法。
【図1】
【図2】
【図3A】
【図3B】
【図4A】
【図4B】
【図5A】
【図5B】
【図5C】
【図6】
【図7】
【図2】
【図3A】
【図3B】
【図4A】
【図4B】
【図5A】
【図5B】
【図5C】
【図6】
【図7】
【公開番号】特開2011−123894(P2011−123894A)
【公開日】平成23年6月23日(2011.6.23)
【国際特許分類】
【外国語出願】
【出願番号】特願2010−275767(P2010−275767)
【出願日】平成22年12月10日(2010.12.10)
【分割の表示】特願2007−128378(P2007−128378)の分割
【原出願日】平成19年5月14日(2007.5.14)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】
【公開日】平成23年6月23日(2011.6.23)
【国際特許分類】
【出願番号】特願2010−275767(P2010−275767)
【出願日】平成22年12月10日(2010.12.10)
【分割の表示】特願2007−128378(P2007−128378)の分割
【原出願日】平成19年5月14日(2007.5.14)
【出願人】(501261300)エヌヴィディア コーポレイション (166)
【Fターム(参考)】
[ Back to top ]