(57)【特許請求の範囲】
【請求項１】
グラフィックスプロセッサであって、
画像処理回路と、
組み込みフレームバッファとを含み、
前記組み込みフレームバッファは、
ポイントサンプルされたフォーマット、
スーパーサンプルされたフォーマットおよび
ＹＵＶフォーマットのうち、
いずれかのフォーマットの受信データに対して選択的に構成可能であり、
前記ポイントサンプルされたフォーマットは、１ピクセルにつき、カラーデータ用の第１ビット数、およびデプスデータ用の第２ビット数を有し、
前記スーパーサンプルされたフォーマットは、１ピクセルにつき複数のスーパーサンプル位置の各々について、前記第１ビット数より少ないカラーデータ用のビット数、および
前記第２ビット数より少ないデプスデータ用のビット数を有する、グラフィックスプロセッサ。
【請求項２】
前記ポイントサンプルされたフォーマットは、４８ビットフォーマットであり、前記スーパーサンプルされたフォーマットは、９６ビットフォーマットである、請求項１に記載のグラフィックスプロセッサ。
【請求項３】
前記４８ビットフォーマットは、前記第１ビット数が２４ビットであり、かつ、前記第２ビット数が２４ビットであるフォーマットである、請求項２に記載のグラフィックスプロセッサ。
【請求項４】
前記第１ビット数が、２４ビットである場合に、前記第１ビット数が、赤８ビット、青８ビットおよび緑８ビット（ＲＧＢ８）、または赤６ビット、緑６ビット、青６ビットおよびアルファ６ビット（ＲＧＢＡ６）を選択的に含むように、前記組み込みフレームバッファをさらに構成可能とする、請求項３に記載のグラフィックスプロセッサ。
【請求項５】
前記スーパーサンプルされたフォーマットが９６ビットフォーマットである場合、前記スーパーサンプルされたフォーマットは、１ピクセルにつき３つのスーパーサンプル位置についての、カラーデータおよびデプスデータを含む、請求項２ないし４のいずれかに記載のグラフィックスプロセッサ。
【請求項６】
前記スーパーサンプルされたフォーマットにおいて、前記カラーデータは、１６ビットであり、前記デプスデータは、１６ビットである、請求項５に記載のグラフィックスプロセッサ。
【請求項７】
前記スーパーサンプルされたフォーマットにおいて、前記カラーデータは、赤５ビット、緑６ビット、および青５ビット（Ｒ５Ｇ６Ｂ５）を含む、請求項６に記載のグラフィックスプロセッサ。
【請求項８】
前記ＹＵＶフォーマットは、ＹＵＶが４：２：０となるフォーマットである、請求項１ないし７のいずれかに記載のグラフィックスプロセッサ。
【請求項９】
前記組み込みフレームバッファは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）である、請求項１ないし８のいずれかに記載のグラフィックスプロセッサ。
【請求項１０】
前記組み込みフレームバッファは、アンチエイリアシングが行われる場合に、前記スーパーサンプルされたフォーマットの受信データに対して構成され、前記組み込みフレームバッファは、アンチエイリアシングが行われない場合に、前記ポイントサンプルされたフォーマットの受信データに対して構成される、請求項１ないし９のいずれかに記載のグラフィックスプロセッサ。
【請求項１１】
前記ＹＵＶ４：２：０の構成において、前記組み込みフレームバッファのカラーバッファは、ＹＵＶ４：２：０フレームに関して７２０ｘ５７６のＹ、３６０ｘ２８８のＵ、および３６０ｘ２８８のＶの画像平面を記憶するために分割されている、請求項８に記載のグラフィックスプロセッサ。
【請求項１２】
前記カラーバッファの分割によって、
１０２４ｘ６４０  ８ビットＹ画像と、
５２８ｘ３２０    ８ビットＵ画像と、
５２８ｘ３２０    ８ビットＶ画像とが割り当てられる、請求項１１に記載のグラフィックスプロセッサ。
【請求項１３】
グラフィックスシステムであって、
画像処理回路と、
組み込みフレームバッファとを含み、
前記組み込みフレームバッファは、
ポイントサンプルされたフォーマット、
スーパーサンプルされたフォーマットおよび
ＹＵＶフォーマットのうち、
いずれかのフォーマットの受信データに対して選択的に構成可能であり、
前記ポイントサンプルされたフォーマットは、１ピクセルにつき、カラーデータ用の第１ビット数、およびデプスデータ用の第２ビット数を有し、
前記スーパーサンプルされたフォーマットは、１ピクセルにつき複数のスーパーサンプル位置の各々について、前記第１ビット数より少ないカラーデータ用のビット数、および
前記第２ビット数より少ないデプスデータ用のビット数を有する、グラフィックスシステム。
【請求項１４】
プログラマが組み込みフレームバッファを選択的に構成することができるようなグラフィックスに対するインターフェースをさらに含む、請求項１３に記載のグラフィックスシステム。
【請求項１５】
ピクセル処理回路と、外部の宛先へ転送する前にピクセルデータを記憶する組み込みフレームバッファを備える、グラフィックスチップであって、
前記組み込みフレームバッファは、
ポイントサンプルされたフォーマット、
スーパーサンプルされたフォーマットおよび
ＹＵＶフォーマットのうち、
いずれかのフォーマットの受信データに対して選択的に構成可能であり、
前記ポイントサンプルされたフォーマットは、１ピクセルにつき、カラーデータ用の第１ビット数、およびデプスデータ用の第２ビット数を有し、
前記スーパーサンプルされたフォーマットは、１ピクセルにつき複数のスーパーサンプル位置の各々について、前記第１ビット数より少ないカラーデータ用のビット数、および
前記第２ビット数より少ないデプスデータ用のビット数を有する、グラフィックスチップ。
【請求項１６】
画像処理回路と、組み込みフレームバッファとを含むグラフィックスシステムにおいて、組み込みフレームバッファを制御するための方法であって、
前記グラフィックスシステムに接続する制御用プロセッサが、
ポイントサンプルされたフォーマット、
スーパーサンプルされたフォーマットおよび
ＹＵＶフォーマットのうち、
いずれかのフォーマットの受信データに対して選択的に構成可能な前記組み込みフレー
ムバッファを提供するステップを含み、
ここで、前記ポイントサンプルされたフォーマットは、１ピクセルにつき、カラーデータ用の第１ビット数、およびデプスデータ用の第２ビット数を有し、
前記スーパーサンプルされたフォーマットは、１ピクセルにつき複数のスーパーサンプル位置の各々について、前記第１ビット数より少ないカラーデータ用のビット数、および
前記第２ビット数より少ないデプスデータ用のビット数を有する、方法。
【請求項１７】
前記制御用プロセッサが、前記組み込みフレームバッファの構成を制御するグラフィックスシステムへのインターフェースを提供するステップをさらに包含し、
前記インターフェースが前記組み込みフレームバッファを選択的に構成できるようにすることをさらに含む、請求項１６に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータグラフィックスに関し、より特定的には、家庭用ビデオゲームプラットフォームのような対話式グラフィックスシステムに関する。さらにより特定的には、本発明は、再構成可能な組み込みフレームバッファを有するグラフィックスシステムであって、当該組み込みフレームバッファは、記憶するデータについての特定のピクセルフォーマットをフレーム毎に選択可能にするという利点がある、グラフィックスシステムに関する。
【０００２】
【従来の技術】
我々の多くは、非常に現実感のある恐竜や宇宙人、アニメ化されたおもちゃといった空想的な生物を含む映像を目にしたことがある。このようなアニメーションは、コンピュータグラフィックスによって可能となっている。このような技術を用いて、コンピュータグラフィックス製作者は、各物体がどのように見えるか、および時間の経過に伴ってどのような外見上の変化が生じるかを特定することができる。そして、コンピュータが、物体をモデル化し、テレビやコンピュータ画面などのディスプレイに表示する。表示画像の各部分の着色や形状が、その光景に存在する個々の物体の位置や向き、各物体に対する照明方向、各物体の面の質感、その他様々な要素に基づいて確実にうまく行なわれるために必要な数多くのタスクは、コンピュータが引き受ける。
【０００３】
コンピュータグラフィックスの生成は複雑なため、ほんの数年前まで、コンピュータで作成した３次元グラフィックスの活用は、高価で専門化されたフライトシミュレータやハイエンドグラフイックスワークステーション、スーパーコンピュータにほぼ限定されていた。人々は、コンピュータシステムによって生成された画像を、映画や制作費の高いテレビ広告において目にすることはあっても、グラフィックス生成を行なうコンピュータに実際に接することはできなかった。このような状況が変化したのは、ニンテンドウ６４（登録商標）やパーソナルコンピュータで利用可能な各種の３Ｄグラフィックスカードなど、比較的安価な３Ｄグラフィックスプラットフォームの出現によるものである。今や、自宅や勤務先でも、比較的安価なコンピュータグラフィックスシステム上において、迫力のある３Ｄアニメーションやシミュレーションと対話的に接することが可能となっている。
【０００４】
【発明が解決しようとする課題】
グラフィックス設計者がこれまで直面した課題の１つとして、様々なデータフォーマットを記憶して効率的かつ有利に処理可能な、強力だが安価なシステムを提供することがあった。グラフィックスシステムに用いられるグラフィックスチップは、グラフィックスパイプラインによって描画されたデータをそのまま記憶するためのローカルメモリまたはオンチップメモリを備えていた。グラフィックスチップによってデータが生成されると、データはローカルメモリから外部メモリに転送され、たとえばビデオインターフェース部が表示装置上に表示するために用いることができるようになる。この外部メモリは、典型的にはグラフィックスシステムのメインメモリの一部であり、外部フレームバッファ（ＸＦＢ）と呼ばれる。ローカルメモリから外部フレームバッファへのデータ処理パスは、コピーパイプラインとも呼ばれる。
【０００５】
ローカルメモリや外部メモリバッファは、グラフィックスシステムにおいて様々な機能を達成するための様々なデータフォーマットを有することが可能である。グラフィックスシステム設計者がこれまで直面した課題の１つとして、当該システム上で実行するアプリケーションによって有利で効率的にデータを利用できるようにするためには、ローカルメモリと外部フレームバッファとにおいて対応するデータフォーマットをどれにするかということがあった。この課題についての様々な解決策が提案されている。たとえば、グラフィックスシステムに様々なデータフォーマットを利用させて、システムの全体的な動作の改善または最大活用化を図ろうとした。このようなメモリやデータフォーマットに関連して、これまで何らかの努力が行なわれてきた一方で、さらなる改善が望まれる。特に、家庭用ビデオゲームシステムなどの高性能低コストのグラフィックスシステムに対して、さらなる改善が望まれる。
【０００６】
【課題を解決するための手段および発明の効果】
本発明は、この課題に対処する方法として、グラフィックスシステムにおける組み込みフレームバッファに関して用いられる手法および機構を提供するものである。本発明は、対話型３Ｄビデオゲームプレイ用に設計されたシステム内で用いると特に有利である組み込みフレームバッファに対して、ピクセルフォーマットの組み合わせを提供する。本発明により、組み込みフレームバッファを再構成可能となり、たとえばアンチエイリアシングモードやデフリッカモード、ＹＵＶ（すなわち、輝度／色度）モードなど様々なモードにおいて効率的に用いることができるようになる。これによって、システムの柔軟性が増し、様々なアプリケーションに対応できるようになる。たとえば、組み込みフレームバッファが与えられているグラフィックスハードウェアに対するコマンドを用いることによって、各モードにおいて望まれるピクセルフォーマットを選択することができる。
【０００７】
本発明によれば、コピーパイプラインは、外部フレームバッファ内のデータを記憶する前に、組み込みフレームバッファからのデータをさらに処理するために用いられるという利点を有する。たとえば、コピーパイプラインは、データを有用な様々なフォーマットに変換するために用いることができ、それによって、たとえば、データを記憶するのに必要なメモリ量を減らしたり、および／またはグラフィックスシステムによって行なわれる今後の処理において用いられるデータを望ましいフォーマットで提供したりする。また、コピーパイプラインは、表示品質を向上したり、および／または表示特性を修正したりするように、フレームをさらに処理するために用いることもできる。
【０００８】
本発明によって提供される局面によれば、グラフィックスプロセッサは、ピクセルデータを生成するためのピクセル処理回路と、ピクセルデータを受け取る組み込みフレームバッファとを含み、組み込みフレームバッファは、以下のいずれかのフォーマットで受け取ったピクセルデータを記憶するように、選択的に再構成可能である。
・ＲＧＢカラーおよびデプス（Ｚ）、
・スーパーサンプルされたＲＧＢカラーおよびデプス（Ｚ）、および
・ＹＵＶ（輝度／色度）。
【０００９】
本発明の好ましい実施例によれば、ＲＧＢカラーおよびデプスは、４８ビットフォーマットであって、２４カラービットと、２４デプス（Ｚ）ビットとを含む。組み込みフレームバッファは、２４カラービットが、赤８ビット、青８ビット、緑８ビット（ＲＧＢ８）、または赤６ビット、緑６ビット、青６ビット、アルファ６ビット（ＲＧＢＡ６）を選択的に含むように、さらに構成可能である。好ましくは、スーパーサンプルされたＲＧＢカラーおよびデプスは、９６ビットフォーマットであり、各ピクセルについて３つのスーパーサンプル位置における１６ビットカラーと１６ビットデプスデータを含む。１６ビットスーパーサンプルカラーデータは、好ましくは、赤５ビット、緑６ビット、青５ビット（Ｒ５Ｇ６Ｂ５）を含む。ＹＵＶフォーマットは、好ましくはＹＵＶの比率が４：２：０のフォーマットである。組み込みフレームバッファ（ＥＦＢ）は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）であってもよい。本発明の一実施例では、ＥＦＢは、たとえばモーゼス社によって提供されるような１ＴＳＲＡＭであり、ＳＲＡＭとして機能するＤＲＡＭである。
【００１０】
本発明の他の局面によれば、グラフィックスシステムにおいて組み込みフレームバッファを用いる方法が提供される。この方法は、カラーとＺとを含むポイントサンプルされたピクセルデータ、カラーとＺとを含むスーパーサンプルされたピクセルデータ、およびＹＵＶフォーマットデータを記憶するように選択的に構成可能な組み込みフレームバッファを提供し、かつ、１つ以上のＡＰＩコマンドなどインターフェースをグラフィックスシステムに提供して、プログラマがフレーム毎に組み込みフレームバッファについての特定の構成を確立できるようにする。
【００１１】
【発明の実施の形態】
図１は、対話式３Ｄコンピュータグラフィックスシステム５０の例を示す。システム５０は、興味をそそる立体音響を伴う対話式３Ｄビデオゲームをプレイするのに用いることができる。また、これは、他の様々な用途に応用できる。
【００１２】
本例において、システム５０は、デジタル表現や３次元世界モデルを、対話的にリアルタイムで処理することができる。システム５０は、世界のすべてまたは一部を、任意の視点から表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂなどの入力装置からのリアルタイム入力に応答して、視点を対話的に変化させることができる。これにより、ゲームプレイヤは、世界の内部または外部の者から見た世界を見ることができる。システム５０は、リアルタイム３Ｄ対話式表示を要求しないような用途（たとえば、２Ｄ表示生成および／または非対話式表示）に用いることもできるが、上質の３Ｄ画像を非常に高速に表示する能力は、現実感の高いおもしろいゲームプレイなどの視覚的な対話を生成するのに用いることができる。
【００１３】
システム５０を用いてビデオゲームなどのアプリケーションをプレイするためには、ユーザは、まず、ケーブル５８を用いて、メインユニット５４をユーザのカラーテレビ５６などの表示装置に接続する。メインユニット５４は、カラーテレビ５６を制御するためのビデオ信号および音声信号を生成する。ビデオ信号は、テレビ画面５９に表示される画像を制御するものであり、音声信号は、テレビのステレオスピーカ６１Ｌおよび６１Ｒを介して、音として再生される。
【００１４】
また、ユーザは、メインユニット５４を電源に接続する必要がある。この電源は、家庭の壁にある電気コンセントに差し込む従来のＡＣアダプタ（図示せず）であってもよく、家庭用電流を、メインユニット５４に電力供給するのに適切な、より低いＤＣ電圧信号に変換する。他の態様として、電池を用いることも可能である。
【００１５】
ユーザは、ハンドコントローラ５２ａおよび５２ｂを用いて、メインユニット５４を制御してもよい。たとえば、操作部６０を用いて、テレビ５６に表示されるキャラクタが３次元世界内で移動すべき方向（上または下、左または右、近または遠）を指定することができる。また、操作部６０は、他の用途のための入力を与える（たとえば、メニュー選択、ポインタ／カーソル制御など）。コントローラ５２は、様々な形態を取り得る。本例においては、図示された各コントローラ５２は、ジョイスティック、押しボタン、および／または方向スイッチなどの操作部６０を含む。コントローラ５２のメインユニット５４への接続は、ケーブルであってもよいし、電磁波（たとえば、電波または赤外線波）を介した無線であってもよい。
【００１６】
ゲームなどのアプリケーションをプレイするためには、ユーザは、プレイしたいと思う当該ビデオゲームなどのアプリケーションを記憶する適切な記憶媒体６２を選択して、当該記憶媒体をメインユニット５４内のスロット６４に挿入する。記憶媒体６２は、たとえば、特に符号化されたおよび／または暗号化された光学および／または磁気ディスクであってもよい。ユーザは、電源スイッチ６６を操作して、メインユニット５４をオンして、記憶媒体６２に記憶されたソフトウェアに基づいてビデオゲームなどのアプリケーションの実行を開始してもよい。ユーザは、コントローラ５２を操作して、メインユニット５４に入力を与えてもよい。たとえば、操作部６０を操作すると、ゲームなどのアプリケーションが開始されてもよい。他の操作部６０を動かすと、動くキャラクタを異なる方向へ移動させたり、３Ｄ世界内でのユーザの視点を変化させたりすることができる。記憶媒体６２内に記憶された特定のソフトウェアに基づいて、コントローラ５２上の様々な制御部６０は、異なる時に異なる機能を実行することができる。
【００１７】
＜システム全体の電子回路例＞
図２は、システム５０の構成要素例のブロック図を示す。主な構成要素は以下のものを含む。
・メインプロセッサ（ＣＰＵ）１１０、
・メインメモリ１１２、および
・グラフィックス＆音声プロセッサ１１４
【００１８】
本例においては、メインプロセッサ１１０（たとえば、拡張されたＩＢＭＰｏｗｅｒＰＣ７５０）は、グラフィックス＆音声プロセッサ１１４を介して手持ちコントローラ１０８（および／または他の入力装置）からの入力を受ける。メインプロセッサ１１０は、ユーザ入力に対話的に応答して、たとえば外部記憶媒体６２から光学ディスクドライブなどの大容量記憶アクセス装置１０６を介して供給されるビデオゲームなどのプログラムを実行する。一例として、ビデオゲームプレイの場合、メインプロセッサ１１０は、様々な対話的な制御機能に加えて、衝突検出や動画処理を行うことができる。
【００１９】
本例において、メインプロセッサ１１０は、３Ｄグラフィックスコマンドおよび音声コマンドを生成して、グラフィックス＆音声プロセッサ１１４に送る。グラフィックス＆音声プロセッサ１１４は、これらのコマンドを処理して、興味をそそる視覚的な画像をディスプレイ５９に生成したり、興味をそそる立体音響をステレオスピーカ６１Ｒおよび６１Ｌなどの適切な音発生装置に生成したりする。
【００２０】
本例のシステム５０が含むビデオエンコーダ１２０は、グラフィックス＆音声プロセッサ１１４から画像信号を受信して、当該画像信号を、コンピュータモニタや家庭用カラーテレビ５６などの標準的な表示装置に表示するのに適切なアナログおよび／またはデジタルビデオ信号に変換する。また、システム５０が含む音声コーデック（圧縮器／伸長器）１２２は、デジタル化された音声信号の圧縮および伸長を行い、また、必要に応じて、デジタルまたはアナログ音声信号形式への変換を行なってもよい。音声コーデック１２２は、音声入力をバッファ１２４を介して受信して、グラフィックス＆音声プロセッサ１１４に与えて、処理を行なうことができる（たとえば、プロセッサが生成した他の音声信号とミキシングするおよび／または大容量記憶アクセス装置１０６のストリーミング音声出力を介して受信する）。本例のグラフィックス＆音声プロセッサ１１４は、音声関連情報を音声タスク用に利用可能な音声メモリ１２６に記憶することができる。グラフィックス＆音声プロセッサ１１４は、処理結果の音声出力信号を音声コーデック１１２に与えて、スピーカ６１Ｌおよび６１Ｒによって再生できるように、（たとえば、バッファ増幅器１２８Ｌおよび１２８Ｒを介して）伸長やアナログ信号への変換が行われる。
【００２１】
グラフィックス＆音声プロセッサ１１４は、システム５０内にある様々な付加的な装置と通信を行うことが可能である。たとえば、パラレルデジタルバス１３０が、大容量記憶アクセス装置１０６および／または他の構成要素との通信に用いられてもよい。シリアル周辺機器バス１３２が、様々な周辺機器などの機器との通信に用いられてもよく、それらの機器としては、たとえば、以下のものを含む。
・プログラム可能な読み出し専用メモリおよび／またはリアルタイムクロック１３４、
・モデム１３６などのネットワークインターフェース（インターネットなどのデジタルネットワークのような、プログラム命令および／またはデータをダウンロードしたりアップロードしたりすることが可能な電気通信ネットワーク１３８に対して、システム５０を接続するようなものであってもよい）、および
・フラッシュメモリ１４０。
【００２２】
別の外部シリアルバス１４２が、付加的な拡張メモリ１４４（たとえば、メモリカード）などの装置との通信に用いられてもよい。コネクタが、様々な装置をバス１３０、１３２、および１４２を接続するために用いられてもよい。
【００２３】
＜グラフィックス＆音声プロセッサの例＞
図３は、グラフィックス＆音声プロセッサ１１４の例のブロック図である。一例として、グラフィックス＆音声プロセッサ１１４は、単一チップＡＳＩＣ（特定用途向けＩＣ）であってもよい。本例において、グラフィックス＆音声プロセッサ１１４は、以下のものを含む。
・プロセッサインターフェース１５０、
・メモリインターフェース／コントローラ１５２、
・３Ｄグラフィックスプロセッサ１５４、
・音声デジタル信号プロセッサ（ＤＳＰ）１５６、
・音声メモリインターフェース１５８
・音声インターフェース＆ミキサ１６０
・周辺機器コントローラ１６２、および
・ディスプレイコントローラ１６４。
【００２４】
３Ｄグラフィックスプロセッサ１５４は、グラフィック処理タスクを行う。音声デジタル信号プロセッサ１５６は、音声処理タスクを行う。ディスプレイコントローラ１６４は、画像情報をメインメモリ１１２からアクセスして、それをビデオエンコーダ１２０に与えて、表示装置５６に表示させる。音声インターフェース＆ミキサ１６０は、音声コーデック１２２とインターフェースし、また、別のソースからの音声（たとえば、大容量記憶アクセス装置１０６からのストリーミング音声、音声ＤＳＰ１５６の出力、および音声コーデック１２２を介して受信した外部音声入力）をミキシングすることも可能である。プロセッサインターフェース１５０は、メインプロセッサ１１０およびグラフィックス＆音声プロセッサ１１４間のデータおよび制御インターフェースを提供する。
【００２５】
メモリインターフェース１５２は、グラフィックス＆音声プロセッサ１１４およびメモリ１１２間のデータおよび制御に関するインターフェースを提供する。本例において、メインプロセッサ１１０は、グラフィックス＆音声プロセッサ１１４の一部であるプロセッサインターフェース１５０およびメモリインターフェース１５２を介して、メインメモリ１１２にアクセスする。周辺機器コントローラ１６２は、グラフィックス＆音声プロセッサ１１４および上述の様々な周辺機器間におけるデータおよび制御に関するインターフェースを提供する。音声メモリインターフェース１５８は、音声メモリ１２６とのインターフェースを提供する。
【００２６】
＜グラフィックスパイプラインの例＞
図４は、３Ｄグラフィックスプロセッサ１５４の例のより詳細な図である。３Ｄグラフィックスプロセッサ１５４は、特に、コマンドプロセッサ２００と、３Ｄグラッフィックスパイプライン１８０とを含む。メインプロセッサ１１０は、データのストリーム（たとえば、グラフィックスコマンドストリームやデータリスト）をコマンドプロセッサ２００に伝達する。メインプロセッサ１１０は、メモリの待ち時間を最小限にするための２レベルキャッシュ１１５を有し、また、グラフィックス＆音声プロセッサ１１４向けの未キャッシュのデータストリームのためのライトギャザリングバッファ１１１も有する。ライトギャザリングバッファ１１１は、部分キャッシュラインを集めて完全キャッシュラインとし、このデータを１キャッシュラインずつグラフィックス＆音声プロセッサ１１４に送出して、バスが最大限に利用できるようにする。
【００２７】
コマンドプロセッサ２００は、メインプロセッサ１１０から表示コマンドを受信し、これを解析して、処理に必要な付加データを共通メモリ１１２から取得する。コマンドプロセッサ２００は、頂点コマンドのストリームをグラフィックスパイプライン１８０に与えて、２Ｄおよび／または３Ｄ処理および描画を行う。グラフィックスパイプライン１８０は、これらのコマンドに基づいて画像を生成する。生成された画像情報は、メインメモリ１１２に転送されて、表示制御部／ビデオインターフェース部１６４によってアクセスできるようにしてもよく、それによって、ディスプレイ５６にパイプライン１８０のフレームバッファ出力が表示される。
【００２８】
図５は、グラフィックスプロセッサ１５４の論理フロー図である。メインプロセッサ１１０は、グラフィックスコマンドストリーム２１０と、表示リスト２１２と、頂点アレイ２１４とをメインメモリ１１２に記憶してもよく、バスインターフェース１５０を介してポインタをコマンドプロセッサ２００に渡す。メインプロセッサ１１０は、メインメモリ１１０内に割り当てた１つ以上のグラフィックス先入れ先出し（ＦＩＦＯ）バッファ２１０にグラフィックスコマンドを記憶する。コマンドプロセッサ２００は、以下のものを取り出す。
・グラフィックスコマンドを受信およびバッファリングして、同期／フロー制御およびロードバランシングを行なうオンチップＦＩＦＯメモリバッファ２１６を介して、メインメモリ１１２からのコマンドストリーム、
・オンチップ呼び出しＦＩＦＯメモリバッファ２１８を介して、メインメモリ１１２からの表示リスト２１２、および
・コマンドストリームからの、および／または頂点キャッシュ２２０を介してメインメモリ１１２内の頂点アレイ２１４からの頂点属性。
【００２９】
コマンドプロセッサ２００は、コマンド処理動作２００ａを行って、属性型を浮動小数点形式に変換し、その結果の完全な頂点ポリゴンデータをグラフィックスパイプライン１８０に渡して、描画／ラスタライズする。プログラム可能なメモリ調停回路１３０（図４参照）は、グラフィックスパイプライン１８０、コマンドプロセッサ２００、および表示制御部／ビデオインターフェース部１６４の間で共通のメインメモリ１１２に対するアクセスを調停する。
【００３０】
図４に示すように、グラフィックスパイプライン１８０は、以下のものを含んでもよい。
・変換部３００、
・セットアップ／ラスタライザ４００、
・テクスチャ部５００、
・テクスチャ環境部６００、および
・ピクセルエンジン部７００。
【００３１】
変換部３００は、２Ｄおよび３Ｄ変換などの様々な処理３００ａを行う（図５参照）。変換部３００は、変換処理３００ａに用いられるマトリックスを記憶する１以上のマトリックスメモリ３００ｂを含んでもよい。変換部３００は、頂点毎に入力される形状を、オブジェクト空間から画面空間へ変換し、入力されるテクスチャ座標を変換して投影テクスチャ座標を計算する（３００ｃ）。変換部３００は、ポリゴンクリッピング／カリング（３００ｄ）を行ってもよい。また、変換部３００ｂによって行われるライティング処理３００ｅによって、一実施例においては、８個の独立した光に対するライティング計算が頂点毎に行われる。また、変換部３００は、エンボス型のバンプマッピング効果を出すためのテクスチャ座標生成（３００ｃ）や、ポリゴンクリッピング／カリング処理（３００ｄ）を行うこともできる。
【００３２】
セットアップ／ラスタライザ４００は、セットアップ部を含む。セットアップ部は、頂点データを変換部３００から受信して三角形セットアップ情報を１以上のラスタライザ（４００ｂ）に送信して、エッジラスタライズ、テクスチャ座標ラスタライズ、およびカラーラスタライズを行う。
【００３３】
テクスチャ部５００（オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよい）、テクスチャリング関連の様々なタスクを行う。タスクには、たとえば、以下のものが含まれる。
・メインメモリ１１２からテクスチャ５０４を取り出す、
・たとえばマルチテクスチャ処理、ポストキャッシュテクスチャ伸展、テクスチャフィルタリング、エンボス、投影テクスチャを用いたシャドウおよびライティング、ならびにアルファ透明およびデプスを用いたＢＬＩＴを含む、テクスチャ処理（５００ａ）、
・バンプマッピング、疑似テクスチャ、テクスチャタイリング効果のためのテクスチャ座標変換量を計算するバンプマップ処理（５００ｂ）、および
・間接テクスチャ処理（５００ｃ）。
【００３４】
テクスチャ部５００は、透過されたテクスチャ値をテクスチャ環境部６００に出力して、テクスチャ環境処理を行なう（６００ａ）。テクスチャ環境部６００は、ポリゴンとテクスチャカラー／アルファ／デプスをブレンドし、テクスチャフォグ処理（６００ｂ）をも行って、インバースレンジに基づくフォグ効果を達成する。テクスチャ環境部６００は、複数の段階を提供して、たとえばカラー／アルファ・モジュレーション、エンボス、ディテールテクスチャリング、テクスチャスワッピング、クランピング、およびデプスブレンディングに基づいて、他の興味をそそる様々な環境関連の機能を行うことができる。
【００３５】
ピクセルエンジン７００は、デプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を行う。本例において、ピクセルエンジン７００は、組み込み（オンチップ）フレームバッファメモリ７０２にデータを記憶する。グラフィックスパイプライン１８０は、１以上の組み込みＤＲＡＭメモリ７０２を含んでもよく、フレームバッファの内容および／またはテクスチャ情報をローカルに記憶する。現在有効な描画モードによっては、Ｚ比較７００ａ’は、グラフィックスパイプラインの早い段階において行われることもできる（たとえば、アルファスレッショルディングが不要であれば、ｚ比較は早い段階で行うことができる。）。
【００３６】
ピクセルエンジン７００は、コピー処理７００ｃを含む。これは、オンチップフレームバッファの内容をメインメモリに周期的に書き込むものであり、表示／ビデオインターフェース部１６４がアクセスできるようにする。このコピー処理７００ｃを用いて、組み込みフレームバッファ７０２の内容からテクスチャまでを、メインメモリ１１２にコピーすることもでき、動的なテクスチャ合成効果が得られる。アンチエイリアシングやその他のフィルタリングは、コピーアウト処理中に行うことができる。（最終的にはメインメモリ１１２に記憶される）グラフィックスパイプライン１８０のフレームバッファ出力は、フレーム毎に、表示／ビデオインターフェース部１６４によって読み出される。表示制御部／ビデオインターフェース１６４は、ディジタルＲＧＢピクセル値を与えて、ディスプレイ１０２に表示する。
【００３７】
＜組み込みフレームバッファの構成例＞
図４に一般的に示すように、組み込みフレームバッファ７０２は、データをグラフィックスパイプライン１８０から受け取る。グラフィックスパイプラインは、ＲＧＢ（Ａ）フォーマットのプリミティブを描画する。これにより、以下で詳細に説明するように、組み込みフレームバッファ７０２は、ピクセルデータを様々なＲＧＢ（Ａ）フォーマットで記憶するように構成することができる。図４からわかるように、プロセッサインターフェース１５０は、グラフィックスパイプライン１８０にデータを供給するためだけでなく、メインプロセッサ（ＣＰＵ）１１０がデータを直接組み込みフレームバッファにロードすることができるようにするためにも用いることができる。このＣＰＵによる組み込みフレームバッファの直接ロードにより、ＲＧＢ型フォーマット以外のピクセルフォーマットも組み込みフレームバッファに送ることができ、これによって、システムの柔軟性が増し、様々なアプリケーションに対応できるようになる。特に、プロセッサインターフェース１５０は、メインプロセッサ１１０がＹＵＶフォーマット（すなわち、輝度／色度フォーマット）のピクセルデータを、たとえば光ディスクなどの他の記憶媒体から組み込みフレームバッファにロードすることができるようにする。組み込みフレームバッファに入ると、ＹＵＶフォーマットデータは、コピーパイプラインを用いることによって、様々なテクスチャフォーマットでメインメモリにコピーアウトでき、後続の描画処理中に、テクスチャ環境部（ＴＥＶ）によってテクスチャとして用いられる。よって、本発明によれば、組み込みフレームバッファは、様々なＲＧＢ（Ａ）フォーマットおよびＹＵＶフォーマットに再構成可能である。このようなフォーマットのそれぞれについて、以下詳細に説明する。
【００３８】
＜組み込みフレームバッファ用のＲＧＢ（Ａ）フォーマットの例＞
この例においては、組み込みフレームバッファ（ＥＦＢ）は、約２ＭＢのメモリ容量を有する。フレームバッファの最大ピクセル幅および高さは、各ピクセルのサイズによって決定される。本発明によれば、図６に示すように、２つの異なるＲＧＢピクセルサイズを、組み込みフレームバッファ７０２内のデータに対して用いることができる。これらのサイズは、
・４８ビットのカラーおよびＺ、ならびに
・９６ビットのスーパーサンプルされたカラーおよびＺ
である。
【００３９】
＜４８ビットピクセルサイズの構成＞
組み込みフレームバッファ（ＥＦＢ）用の４８ビットフォーマットは、好ましくはアンチエイリアシングを行なわない場合に用いられ、以下の特徴を有する。
・２４ビットのカラー（アルファのない８／８／８、または６ビットのアルファありで６／６／６）
・２４ビットのＺ
【００４０】
このアンチエイリアシングを行なわないモードにおいて、４８ビットフォーマットは、本例では、６４０ｘ５２８の最大解像度に対応する。よって、幅は、０〜６４０の間でなければならず、ＥＦＢのストライドは６４０ピクセルに固定される。このアンチエイリアシングを行なわないモードは、各ピクセルにつき単一のポイントサンプルに基づいている。上に示すように、各ピクセルのポイントサンプルは、２４ビットのカラー値と２４ビットのＺ値が与えられる。カラー値は、アルファを用いない場合は赤緑青それぞれ８ビットを有してもよく、赤緑青アルファそれぞれ６ビットを有してもよい。
【００４１】
＜９６ビットピクセルサイズの構成＞
９６ビットのスーパーサンプリングピクセルフォーマットは、好ましくはアンチエイリアシングを行なう場合に用いられ、以下の特徴を有する。
・３サンプル分の１６ビットのカラー（赤５ビット、緑６ビット、青５ビット、アルファなし）
・３サンプル分の１６ビットＺ
【００４２】
この９６ビットフォーマットは、６４０ｘ２６４の最大解像度に対応する。幅は、好ましくは０〜６４０の間であり、ＥＦＢの性能は６４０ピクセルに固定される。
【００４３】
本例においては、９６ビットは、アンチエイリアシングを行なう場合に用いられる。しかしながら、このフォーマットは、アンチエイリアシング以外でも、各ピクセルにつき３つのスーパーサンプルが望ましいような機能を達成するために用いてもよい。言い換えると、４８ビットの構成においては、各ピクセルにつき単一のポイントサンプルを用いるのに対して、９６ビットフォーマットは、各ピクセルにつき３つのサンプル（スーパーサンプル）を記憶する機能を提供する。
【００４４】
以上からわかるように、４８ビットと９６ビットとの間では、固有のトレードオフがある。９６ビットのアンチエイリアシングフォーマットは、ポリゴンの輪郭や交点の画質を向上させるが、性能やＺの品質は犠牲となる。９６ビットスーパーサンプリングＥＦＢフォーマットは、４８ビットポイントサンプルピクセルの２倍のメモリが必要となる。他のモードでは、Ｚバッファリング精度は２４ビットなのに対し、このモードでは１６ビットに減少する。また、本例において、アンチエイリアシングは、最大フィル速度が８００Ｍピクセル／秒から４００Ｍピクセル／秒に減少する。しかしながら、テクスチャ環境部（ＴＥＶ）において１段階以上が行なわれている場合には、この減少はわからなくなる。というのは、本例においては、２つのＴＥＶ段階によっても、フィル速度は４００Ｍピクセル／秒に減少するからである。
【００４５】
実施例において、アンチエイリアシング起動中の描画速度は、組み込みフレームバッファ７０２の帯域制限により、２ピクセル／クロックに減少する。しかしながら、本実施例においては、２つ以上のテクスチャがオンされている場合、ピクセルクワッドがピクセルエンジン７００に送られる速度は、２クロックにつき１ピクセルと同等かまたはそれ以下に落ち込む。この場合、アンチエイリアシングがオンされていることは、フィル速度に影響を与えない。よって、特定の光景の形状が限定されている場合には、アンチエイリアシングは、描画性能に悪い影響を与えない。その一方で、特定の光景のフィルが限定されている場合には、ポイントサンプルモードを用いる場合と異なり、アンチエイリアシングを起動することよって生じる悪影響を描画モードがかなり受けることがある。同一のアプリケーションは、異なる光景や異なる画像に対して、それらの形状が限定されているか、フィルが限定されているかに基づいて、または特定の光景や画像について要求される画質に基づいて、アンチエイリアシングを起動および停止させることができる。たとえばアンチエイリアシングを起動および停止させるために、フレームバッファ内のピクセルフォーマットをフレーム毎に動的に変化させることができることにより、アプリケーションプログラマが画質と速度性能とのいずれを取るかを決めることができるという高い柔軟性が提供される。
【００４６】
＜９６ビット構成を用いたアンチエイリアシング＞
本発明の関連して用いられる、特定の好ましいアンチエイリアシング方法および機構は、共通して所有する同時係属出願番号０９／７２６，２２６、出願日２０００年１１月２８日、名称「グラフィックスシステムにおけるアンチエイリアシングのための方法および装置」に開示されており、本願にすべて援用されている。このアンチエイリアシングの簡単な説明を以下に示し、これにより、組み込みフレームバッファ用の９６ビットピクセルフォーマットをより完全に理解されるようになるであろう。
【００４７】
アンチエイリアシングの実施例によれば、アンチエイリアシングは、２つの主な局面に分かれて行なわれる。第１局面では、ピクセル毎に３つのスーパーサンプルと９６ビットピクセルＥＦＢフォーマットとを用いて、データを組み込みフレームバッファにロードする。第２局面では、組み込みフレームバッファからデータを読み出し（コピーアウト）して、そのデータに対して、コピーパイプラインによってさらに処理が行なわれる。９６ビットフォーマットは、アンチエイリアシングの第１局面を達成する際に特に利点を有するが、他の適切な目的のためにも用いることもできる。
【００４８】
９６ビットフォーマットを用いた本アンチエイリアシング例において、アンチエイリアシングの第１局面が生じるのは、ラスタライザが組み込みフレームバッファ（ＥＦＢ）７０２にエッジラスタライズを行なったときである。好ましくは、本ラスタライザは、エッジ＆ｚラスタライザであって、ｘ、ｙ、ｚおよびカバレージマスク値を、現在描画している三角形などのプリミティブに含まれる各可視ピクセルクワッド内にある、プログラム可能なスーパーサンプル位置に生成するラスタライザである。ピクセルクワッドは、各ピクセル内に３つのプログラム可能なサブピクセル位置を有する。ピクセルクワッドは、２ｘ２構成の４ピクセルを含む。クワッドの各ピクセル内には、３つのスーパーサンプル位置が、プログラム可能に選択および指定される。好ましくは、プログラマは、グローバルレジスタに書き込むことによって、サブサンプル位置を設定できる。本実施例においては、各ピクセルの各スーパーサンプル位置はプログラム可能であるので、各クワッドについての特定のサンプル位置は、特定の用途に応じて変更可能である。一方、他の実施例においては、特に最適なマルチサンプル位置の値を固定して（たとえば、ハードウェアに設定）、アプリケーションプログラマが煩わされないようにすることも可能である。よって、本実施例においては、位置はプログラム可能であるが、物理的に組み込まれた別のパターンをプログラム可能性と引き換えに用いることも可能である。いずれのパターンが選ばれても、フレーム内の一定の隣接ピクセルに渡って繰り返される。
【００４９】
あるフレームに関してすべてのプリミティブが描画されると、組み込みフレームバッファは、フレーム全体についてのスーパーサンプルされたピクセル情報を含むことになる。各ピクセルに対して３つのスーパーサンプルが与えられることから、各サンプルは、１６ビットのカラー値と、１６ビットのｚ値を含み、各ピクセルは、組み込みフレームバッファ内において９６ビットで表現される。そして、組み込みフレームバッファは、コピーパイプラインによって利用可能となり、アンチエイリアシングの第２局面が実行できるようになる。この第２局面については、コピーパイプラインに関連して以下で詳細に述べる。アンチエイリアシングについては、上記の同時係属出願にさらに詳述されている。
【００５０】
＜ＹＵＶ組み込みフレームバッファ構成＞
図７は、ＹＵＶ（輝度／色度）フォーマットのピクセルデータを記憶するように設計された組み込みフレームバッファ７０２のさらなる構成を示す。本フレームバッファは、たとえば、システムが対応しているＭＰＥＧ規格（たとえば、ＭＰＥＧ２）において動き補償を可能にする。このＹＵＶ構成において、カラーバッファは、好ましくは分割されて、ＹＵＶ４：２：０フレームについてのＹ（７２０ｘ５７６）、Ｕ（３６０ｘ２８８）、Ｖ（３６０ｘ２８８）の画像平面を記憶する。カラーバッファのこの分割は、好ましくは以下のように割り当てる。
・１０２４ｘ６４０  ８ビットＹ画像、
・５２８ｘ３２０  ８ビットＵ画像、
・５２８ｘ３２０  ８ビットＶ画像
【００５１】
画像の好ましい位置は、図７に示す。ＹＵＶデータは、好ましくは、メインプロセッサによって、たとえば光ディスクなどの外部から提供される媒体から、またはグラフィックスパイプライン以外の適切なソースから、組み込みフレームバッファに記憶される。なお、グラッフィクスパイプラインは、単一成分のＹ、Ｕ、またはＶ画像を描画することはできるが、３つの成分からなるＹＵＶピクセルを描画することはできない。以下に詳述するように、組み込みフレームバッファ内のＹＵＶデータを、コピーパイプラインによってさらに処理して、表示するか、またはグラフィックスパイプラインによって将来使われるときのためにテクスチャデータに変換することができる。
【００５２】
＜ピクセルフォーマットコマンドの例＞
上述のように、組み込みフレームバッファ７０２は、ＲＧＢ（Ａ）ピクセルフォーマット（４８ビットおよび９６ビット）およびＹＵＶフォーマットという２つのフォーマットに対応して、選択的に構成可能である。望ましいピクセルフォーマットは、ＡＰＩを用いて、フレーム毎に設定できるのが好ましい。この目的のためのＡＰＩ関数は以下の通りである。
【００５３】
＜ＧＸＳｅｔＰｉｘｅｌＦｏｒｍａｔ＞
引数：
ＧＸＰｉｘｅｌＦｏｒｍａｔｓ  Ｆｏｒｍａｔ  ／／フレームバッファにピクセルフォーマットを設定
ＧＸＺＣｍｐｒＦｏｒｍａｔｓ  ＺＣｍｐｒ    ／／１６ビットｚに圧縮フォーマットを設定
ＧＸＢｏｏｌ ／／テクスチャの前にＺ比較
【００５４】
この関数は、組み込みフレームバッファのフォーマットを設定する。この関数は、いずれの描画動作も実行される前に、呼び出される。ピクセルフォーマットは、本実施例のフレームの中ほどでは変更できない。１６ビットＺ値（マルチサンプルまたはアンチエイリアシングモード）は、非圧縮も圧縮も可能である。圧縮された値は、精度および範囲が向上する。Ｚｔｏｐフラグを用いて、テクスチャマッピングまえのデプス比較（テクスチャ前Ｚ）を行うこともできる。これにより、テクスチャ帯域幅が向上する。なぜならば、取り出したりフィルタリングすべきテクセルが減少するからである。
【００５５】
＜ピクセルエンジンおよび組み込みフレームバッファ間のインターフェース＞
ピクセルエンジン７００および組み込みフレームバッファ７０２間のインターフェースの例を図８に示す。好ましくは、図８に示すように、４つ組み込みフレームバッファのコピー（７０２ａ、７０２ｂ、７０２ｃ、および７０３ｄ）があり、そのうちの２つはカラー用、２つはＺ用である。本例において、ピクセルエンジンからの組み込みフレームバッファに対する読み出しおよび書き込みアクセスによって、９６ビットのデータまたは９６クワッドのカラーおよびＺが転送される。各バッファの中心には、４つのアドレス／制御および読み出しバスがある。ＺチャンネルＡおよびＢは、書き込みポート７０３ａを共用するのが好ましく、カラーチャンネルＡおよびＢは、書き込みポート７０３ｂを共用するのが好ましい。組み込みフレームバッファは、好ましくは、最大フィル速度が毎秒８００Ｍピクセルで、１クロック当たり４ピクセルをブレンドするのに充分な帯域を有する。組み込みフレームバッファの最大サイズは、６４０ｘ５２８ｘ２４ｂカラーおよび２４ｂＺである。組み込みフレームバッファは、シングルバッファであり、完成した画像を表示するためにフレームバッファに転送するように設計されている。ダブルバッファリングされた表示は、このようにして達成される。図８に示すアドレス／制御読み出し書き込みバスは、以下の表によって定義される。
【表１】
0004683760.tif 000002
【００５６】
＜コピーアウト処理およびパイプラインの例＞
コピーアウト処理は、本例においてはコピーパイプラインと呼ばれるものを通じて実現される。本処理が用いられるのは、組み込みフレームバッファ（ＥＦＢ）からのピクセルデータをさらに処理して、ビデオインターフェースによって表示される表示データとして、またはグラフィックスパイプライン（図１参照）によって後に利用する際のテクスチャデータとして、メインメモリ１１２の外部フレームバッファ（ＸＦＢ）１１３に、選択されたフォーマットでフレームデータを書き込むためである。ＥＦＢ内のＲＧＢ（Ａ）またはＹＵＶ４２０データは、メインメモリのＹＵＶ４２２、フィールド、またはフレームにコピーアウトできる。ＹＵＶ４２２は、走査線順にコピーアウトされる。走査線間にはメモリバイトのスキップを許可するストライドがある。Ｙ８は、最下位アドレスであり、続いてＵ８、Ｙ８、そしてＶ８となる。ＹＵＶフォーマットでのコピーは、メインメモリで使用されるメモリ量を１／３に削減する。
【００５７】
コピーパイプラインの一般的なブロック図は、いずれの２つのＲＧＢ（Ａ）ピクセル構成においてもＥＦＢからのデータ処理に主に関連するので、図９に示されている。図９に示すように、このようなコピーパイプラインは、アンチエイリアス／デフリッカ部６２２、ガンマ補正部６２３、ＲＧＢからＹＵＶへの変換部６２４、およびＹスケール部６２６を含む。
【００５８】
ＥＦＢ全体の構成（すなわち、ＲＧＢ（Ａ）およびＹＵＶ）についてのコピーアウトパイプラインのより完全なブロック図は、図１３に示されている。図１２は、システムの様々な構成要素間でデータが通ることが可能な様々なパスを示す。図１３に示すように、本例においては、フィルタリング処理に必要なバッファリング量を減らすために、コピー矩形は３２ｘ３２タイルに分割されている。このタイルは、２つのタイルバッファ６２５ａょび６２５ｂを用いてダブルバッファリングされる。これによって、一方のタイルはフィルされ、他方のタイルは読み出され、処理されて、メインメモリに送られる。好ましくは、矩形は分割されてＹ方向の複数のタイルとなり、それに続いてＸ方向の複数のタイルとなる。１つのタイル内において、ある範囲の４ピクセルが、１周期毎に処理される。ピクセルクワッドは、Ｙ順に処理され、次にＸ順に処理される。
【００５９】
より特定的には図１３を参照して、特定のコピーパイプライン処理は、組み込みフレームバッファ内のデータの特定の構造、またはプログラマが望むコピーアウト処理結果に依存する。上述のように、カラーバッファは、ＲＧＢ８、ＲＧＢＡ６、Ｒ５Ｇ６Ｂ５（アンチエイリアシング）、またはＹＵＶ４２０データを含んでもよく、また、Ｚバッファは、２４ビットＺまたは３ｘ１６ビットＺ（アンチエイリアシング）を含んでもよい。図１８は、本例における様々なフォーマットについての好ましい変換マトリックスを示す。
【００６０】
組み込みフレームバッファが上述のＲＧＢ（Ａ）フォーマットのいずれかの対応して構成され、またそのフォーマットのデータを含む場合には、コピーパイプラインは、アンチエイリアシング／デフリッカリング処理を行う。この処理は、好ましくは、図１３のブロック６２８に示す、プログラム可能な７タップの垂直フィルタを用いて行われる。以下に詳細に説明するように、このフィルタは、複数のピクセルからのポイントサンプルまたはスーパーサンプルされた（アンチエイリアシング）ピクセルデータをブレンドし、その結果得られたピクセルカラーを出力する。ブレンドが行われると、ブロック６２３に示すようなガンマ補正が行われる。その後、特定のアプリケーションが要求するのであれば追加の変換を行うこともでき、ＲＧＢデータはＹＵＶ４４４フォーマットに変換される（ブロック６４１）。もしデータがブロック６４４においてＹＵＶ４４４に変換されたのであれば、ブロック６４４においてまた別の変換を行うこともでき、ＹＵＶ４４４はＹＵＶ４２２に変換される。コピーパイプラインが表示に使われるのであれば、このＹＵＶ４２２への変換は、データをメインメモリの表示フォーマット、すなわち本例においてはＹＵＶ４２２にするために行うことができる。その後、タイルデータは、上述のタイルバッファ６２５ａおよび６２５ｂにバッファされる。その後、タイルを表示しようとする場合には、Ｙスケーリングがブロック６２６において行われ、スケールされたデータがＹＵＶ４２２フォーマットでメインメモリにコピーアウトされ（ブロック６４２）、ビデオインターフェースによって用いられる。一方、データをテクスチャのために用いようとする場合には、Ｙスケーリングは行わない。その代わりに、ブロック６４０において、所望するテクスチャにタイルデータをフォーマットして、後続のグラフィックスパイプライン処理に用いることができるテクスチャタイルとして、メインメモリに送る。本例において取り得るテクスチャフォーマットの例は、図１８に示されており、テクスチャコピーコマンドおよびレジスタビット定義に関連して以下に列挙されている。
【００６１】
組み込みフレームバッファが上述のＹＵＶ４２０フォーマットに対応して構成され、またそのフォーマットのデータを保持している場合には、コピーパイプラインは、図１３下部に示す処理とはやや異なる処理を行う。特定的には、カラーバッファからのＹＵＶ４２０データは、まずＹＵＶ４４４フォーマットに変換される（ブロック６４６）。その後、ブロック６４８において、ＹＵＶ４４４からＲＧＢへの追加の変換を行うことも可能である。それ以降は、データパスは、ＲＧＢ（Ａ）構成に関して上述したのと同様である。すなわち、タイルは、必要に応じて、ブロック６４４においてＹＵＶ４２２に変換され（もしＹＵＶ４４４に既に変換されていれば）、その後、バッファされ、そして、スケールして表示データとしてメインメモリに送られるか、もしくは所望のテクスチャフォーマットに変換されてメインメモリにテクスチャタイルとして記憶される。図１９は、テクスチャタイル（たとえば、１〜４）がメインメモリにどのように記憶されるかを示す。
【００６２】
テクスチャは、ＧＸＣｏｐｙＴｅｘ関数を用いて組み込みフレームバッファ（ＥＦＢ）をメインメモリにコピーすることによって作成される。これは、動的なシャドウマップ、環境マップ、動きぼかし効果を生み出す場合に役に立つ。
【００６３】
圧縮テクスチャ（ＧＸ＿ＴＦ＿ＣＭＰＲ）を除くすべての非カラーインデックステクスチャタイプは、コピー中に作成可能である。テクスチャコピー処理は、テクスチャを正確にタイリングおよびフォーマットするので、ハードウェアから直接読み出すことができる。低レベル詳細（ＬＯＤ）テクスチャを作成するために、必要に応じて、ボックスフィルタをＥＦＢ内の画像に適用することもできる。以下の表に、テクスチャコピーフォーマットおよび変換についての解説を示す。
【表２】
0004683760.tif 000003
【００６４】
通常は、ソースおよび宛先矩形は同一のサイズである。しかしながら、合成して大きなテクスチャを作るような小テクスチャをコピーする場合は、ソースおよび宛先矩形は、異なってもよい。フォーマットＧＸ＿ＴＦ＿ＡＦ８は、ＥＦＢからのアルファチャンネルをＧＸ＿ＴＦ＿Ｉ８のフォーマットにされたテクスチャにコピーするために特に用いられる。ＧＸ＿ＴＦ＿Ｉ８は、ＥＦＢの輝度をＧＸ＿ＴＦ＿Ｉ８テクスチャにコピーする。テクスチャを読み出す際には、ＧＸ＿ＴＦ＿Ａ８およびＧＸ＿ＴＦ＿Ｉ８は同等である。カラーテクスチャがＧＸ＿ＰＦ＿ＲＧＢ８＿Ｚ２４ピクセルフォーマットからＧＸ＿ＴＦ＿ＲＧＢ５６５などの低解像度のカラーフォーマットに変換される場合は、８ビットカラーの最小桁のビット（ＬＳＢ）は切り捨てられる。カラーテクスチャが、ＧＸ＿ＰＦ＿ＲＧＢ５６５＿Ｚ１６などの低解像度のピクセルフォーマットからＧＸ＿ＴＦ＿ＲＧＢ８などの高解像度のピクセルフォーマット変換される場合には、各ピクセルの最上位ビット（ＭＳＢ）は、各テクセル内のＬＳＢに複製される。この変換処理により、推定誤差は均等に分散され、各テクセルが最小値または最大値を示すことが可能となる。通常は、アルファを含むフォーマットＧＸ＿ＰＦ＿ＲＧＢＡ６＿Ｚ２４のテクスチャをＥＦＢからコピーするだけである。アルファを含むテクスチャをアルファなしでＥＦＢからコピーする場合は、アルファは、最大値に設定される。ＧＸ＿ＴＦ＿Ｚ２４Ｘ８フォーマットは、２４ビットＺバッファを３２ビットテクスチャ（ＧＸ＿ＴＦ＿ＲＧＢＡ８と同等）にコピーして用いることが可能である。テクスチャをコピーするためには、アプリケーションは、好ましくは、まず、コピーすべきテクスチャと同じサイズのバッファをメインメモリ内に割り当てる。このサイズは、たとえばＧＸＧｅｔＴｅｘＢｕｆｆｅｒＳｉｚｅ関数を用いて決定することができる。この関数は、計算時において、テクスチャパディングやテクスチャタイプを考慮するのが望ましい。
【００６５】
以上の説明からわかるように、本発明に係るコピーアウト処理によって、様々なデータフォーマットが使用可能となり、また、様々な変換／処理が可能となり、それにより、高い柔軟性と機能性を提供できる。ＹＵＶフォーマットに対応し、テクスチャとしてコピーアウトできることによって、コピーパイプラインを、たとえば、メインプロセッサが動き補償を行うのを補助するために用いることができる。上述のコピーアウト処理は、データを組み込みフレームバッファから外部フレームバッファに表示用またはテクスチャとして効率的に移動したり処理したりするために用いられるだけでなく、たとえば、ＹＵＶカラー空間を用いるＭＰＥＧデータに基づいてテクスチャコピー機能を用いることにより、ストリーミングビデオをポリゴンに重畳することもできるようになる。
上述の各コピーパイプライン処理を、以下に詳述する。
【００６６】
＜コピーアウト中のアンチエイリアシングの例＞
既に簡単に述べたように、アンチエイリアシングが所望され、かつ組み込みフレームバッファが９６ビットアンチエイリアシングピクセルデータ（たとえば、Ｒ５Ｇ６Ｂ５およびＺ１６））に対応して構成されている場合、アンチエイリアシングの第２段階がコピーアウト中に行われる。特定的には、アンチエイリアシングの第２段階は、組み込みフレームバッファ（ＥＦＢ）７０２から外部フレームバッファ（ＸＦＢ）１１３にコピーアウト中に、アンチエイリアシング／デフリッカ部６２２によって行われる。
【００６７】
コピーパイプラインのアンチエイリアシング／デフリッカリング部６２２は、好ましくは、プログラム可能な重み（Ｗ０〜Ｗ６）を各スーパーサンプルについて有する７タップ垂直フィルタ６２８（図１４参照）を用いる。垂直フィルタが対応するのは、好ましくは、３垂直ピクセル領域である。よって、アンチエイリアシングモードにおける現在のピクセルＮについてのカラーを決定する場合、現在のピクセルのすぐ上のピクセル内のスーパーサンプル（Ｎ−１）と、現在のピクセルのすぐ下のピクセル内のスーパーサンプル（Ｎ＋１）とが用いられるのが好ましい。好ましくは、２つの周辺ピクセルそれぞれのうち現在のピクセルから最も遠いサンプルは、フィルタリング処理には用いられない。よって、３つのピクセルは、フィルタ用に９つのサンプルを有するものの、本実施例のブレンディング処理には、９つのサンプルのうちの７つしか使われない。処理結果の垂直フィルタ出力によって、単一の画面ピクセルカラー値（Ｎ’）が与えられ、最終的に外部フレームバッファにコピーされて、表示装置５６に表示される。
【００６８】
フルラインバッファの使用を避けるため、コピー処理は、好ましくは、アンチエイリアシング（ＡＡ）バッファリングを用いる。ここでは、幅（Ｘ軸））が３２ピクセルのストリップで、コピーが行われる。本例のＡＡバッファリングにおけるストリップバッファのデータパスを、図１５のブロック図に示す。
【００６９】
アンチエイリアシング／デフリッカリング技術および機構に関する詳細については、上記の共通して所有する同時係属出願に記載されている。本発明は、組み込みフレームバッファおよびコピーアウト処理全体に向けられたものであり、特定のアンチエイリアシング処理を用いるわけではないので、アンチエイリアシングに関するこれ以上の詳細は記載しない。
【００７０】
＜コピーアウト中のデフリッカフィルタリングの例＞
アンチエイリアシングを行わないモードにおいても同じ垂直フィルタをコピーアウト中に用いて、ポイントサンプルされたピクセルを用いたデフリッカリング機能を達成することができる。このモードにおいては、サンプルパターンはプログラム可能ではない。図１６に示すように、ハードウェアは、サンプル位置としてピクセルの中央のみを用いる。各ポイントサンプルの重み付け係数（Ｗ０〜Ｗ６）は、アンチエイリアシングフィルタと同様、プログラム可能である。よって、垂直フィルタ６２８ａは、デフリッカモードでは、現在のピクセルから３つの入力（中央のみ）と、２つの垂直方向にある周辺ピクセルそれぞれから２つの入力（中央のみ）を用いることによって、フィルタリング処理のために７つの値を得る。プログラム可能な重み付け係数は、７つのサンプルに適用され、その結果は最終的なピクセルカラー（Ｎ’）を得るために足し合わされる。好ましくは、デフリッカリングフィルタとＡＡフィルタとは共用される。ＡＡデータパスで用いられる４つのストリップバッファ（図１５参照）が、クワッドストリップを記憶するためにも用いられる。デフリッカバッファリングにおけるデータパスのブロック図の例を、図１７に示す。デフリッカリングに関するこれ以上の詳細は、上記の同時係属出願に記載されている。
【００７１】
＜コピーアウト中のＲＧＢからＹＵＶへの変換例＞
輝度／色度（ＹＵＶ）フォーマットは、ＲＧＢと同一の画質ピクセルを記憶するが、メモリは２／３しか必要としない。したがって、外部フレームバッファ（ＸＦＢ）が使用するメインメモリ量を減らすために、コピー処理中に、ＥＦＢ内のＲＧＢ（Ａ）フォーマットは、ＸＦＢ内のＹＵＶフォーマットに変換される。この変換は、ＲＧＢ−ＹＵＶ部６２４によって行われる。変換処理は、図１０に図示されている。ＲＧＢデータは、まずＹＵＶ４４４フォーマットに変換され、その後、ＹＵＶ４２２にダウンサンプルされて、表示データとしてＸＦＢに記憶される。
【００７２】
＜コピーアウト中の垂直（Ｙ）スケーリング＞
コピーパイプライン内のＹスケール部６２６は、描画された画像を垂直方向に任意にスケーリング可能である。水平スケーリングは、好ましくはビデオ表示中に行われる。Ｙスケール係数は、ＡＰＩで定義され、コピーすべき線数を決定し、また、適切なＸＦＢサイズを計算するために用いることができる。本実施例に係る好ましい垂直スケーリングのブロック図を図１１に示す。垂直スケーリングは、２つの隣接するストリップ間の８ビットの線形補間（lerp）を用いて行われる。線形補間係数は、１．０から開始する。走査線が出力されると、固定点（１．８）値が線形補間係数に加算される。線形補間係数からの繰り上がりによって、新しい走査線が用いられることが知らされる。２つのストリップバッファ６２６ａおよび６２６ｂを用いて、２つの部分走査線が互いに上位にあるように保持する。バッファＡ（６２６ａ）は、すべての入力ストリップを偶数のｙ値で保持し、バッファＢ（６２６ｂ）は、すべて奇数のｙ値ストリップを保持する。
【００７３】
ガンマ補正部６２３は、カラー輝度値の線型変化に対する目（時にはモニタ）の非線型応答を補正するために用いられる。ガンマとしては、３つの選択肢が与えられる（たとえば、１．０、１．７、および２．２）。デフォルトのガンマは、好ましくは１．０であり、たとえばＡＰＩのＧＸＩｎｉｔコマンドに設定される。
【００７４】
＜コピーアウト中に利用可能な変換処理の例＞
＜ＲＧＢからＹＣｒＣｂ（４：４：４）への変換＞
この変換は、必要とされる外部フレームバッファの量を１／３に削減するために用いられる。この変換には、以下の式が用いられる。
Ｙ＝  ０．２５７Ｒ＋０．５０４Ｇ＋０．０９８Ｂ＋１６
Ｃｂ＝−０．１４８Ｒ−０．２９１Ｇ＋０．４３９Ｂ＋１２８
Ｃｒ＝  ０．４３９Ｒ−０．３６８Ｇ−０．０７１Ｂ＋１２８
１周期につき、走査線内の４ピクセルが変換される。
【００７５】
＜ＹＣｒＣｂ（４：４：４）からＹＣｒＣｂ（４：２：２）＞
ＹＵＶ４４４からＹＵＶ４２２への変換は、図２０に図示されている。この変換には、以下の式が用いられる。
ｃ’（０，０）＝１／４＊ｃ（０，０）＋１／２＊ｃ（０，０）＋１／４＊ｃ（１，０）
ｃ’（２，０）＝１／４＊ｃ（１，０）＋１／２＊ｃ（２，０）＋１／４＊ｃ（３，０）
ｃ’（４，０）＝１／４＊ｃ（３，０）＋１／２＊ｃ（４，０）＋１／４＊ｃ（５，０）
ｃ’（ｍ，ｎ）＝１／４＊ｃ（ｍ−１，ｎ）＋１／２＊ｃ（ｍ，ｎ）＋１／４＊ｃ（ｍ＋１，ｎ）
【００７６】
＜ＹＣｒＣｂ（４：２：０）からＹＣｒＣｂ（４：４：４）＞
この変換は、図２１および２２に示すように、２つの部に分かれて行なわれる。第１部では、図２１に示すように、ＹＵＶ４２０フォーマットからＹＵＶ４２２フォーマットに変換する。この変換は、以下の式を用いる。
ｃ’（０，０）＝３／４＊ｃ（０，０．５）＋１／４＊ｃ（０，０．５）
ｃ’（２，０）＝３／４＊ｃ（２，０．５）＋１／４＊ｃ（２，０．５）
ｃ’（４，０）＝３／４＊ｃ（４，０．５）＋１／４＊ｃ（４，０．５）
ｃ’（０，１）＝３／４＊ｃ（０，０．５）＋１／４＊ｃ（０，２．５）
ｃ’（２，１）＝３／４＊ｃ（２，０．５）＋１／４＊ｃ（２，２．５）
ｃ’（４，１）＝３／４＊ｃ（４，０．５）＋１／４＊ｃ（４，２．５）
ｃ’（０，２）＝３／４＊ｃ（０，２．５）＋１／４＊ｃ（０，０．５）
ｃ’（２，２）＝３／４＊ｃ（２，２．５）＋１／４＊ｃ（２，０．５）
ｃ’（４，２）＝３／４＊ｃ（４，２．５）＋１／４＊ｃ（４，０．５）
ｃ’（ｍ，ｎ）＝３／４＊ｃ（ｍ，ｎ−０．５）＋１／４＊ｃ（ｍ，ｎ＋１．５）    ｎ＝奇数
ｃ’（ｍ，ｎ）＝３／４＊ｃ（ｍ，ｎ＋０．５）＋１／４＊ｃ（ｍ，ｎ−１．５）    ｎ＝偶数
【００７７】
ＹＵＶ４２０からＹＵＶ４４４への変換の第２部では、図２２に示すように、ＹＵＶ４２２を１つ上の部分からアップサンプルしてＹＵＶ４４４とする。この変換は、以下の式を用いる。
ｃ’（０，０）＝ｃ（０，０）
ｃ’（１，０）＝１／２＊ｃ（０，０）＋１／２＊ｃ（２，０）
ｃ’（２，０）＝ｃ（２，０）
ｃ’（３，０）＝１／２＊ｃ（２，０）＋１／２＊ｃ（４，０）
ｃ’（ｍ，ｎ）＝ｃ（ｍ，ｎ）  ｍは奇数
ｃ（ｍ，ｎ）＝１／２＊ｃ（ｍ−１，ｎ）＋１／２ｃ（ｍ＋１，ｎ）  ｍは偶数
【００７８】
＜ＹｃｂＣｒ（４：４：４）からＲＧＢへの変換＞
ＭＰＥＧ２は、ＹＣｂＣｒ（ＹＵＶ）カラースペースにおいて動作する。この変換は、コピーアウト中にＹＵＶデータをＲＧＢデータに変換するために用いることができる。以下の式は、この変換のために用いられる。
Ｒ＝１．１６４（Ｙ−１６）＋１．５９６（Ｃｒ−１２８）
Ｇ＝１．１６４（Ｙ−１６）−０．８１３（Ｃｒ−１２８）−０．３９１（Ｃｂ−１２８）
Ｂ＝１．１６４（Ｙ−１６）＋２．０１８（Ｃｂ−１２８）
【００７９】
１周期につき、走査線内の４ピクセルが変換される。
【００８０】
＜コピーアウトコマンドの例＞
表示コピー動作のＥＦＢソースおよび宛先は、以下のＡＰＩ関数の例を用いて指定される。
【００８１】
＜ＧＸＣｏｐｙＦＢＴｏＤｉｓｐｌａｙ＞
引数：
ｕ１６  ＳｒｃＬｅｆｔ      ／／ソース矩形の左上座標
ｕ１６  ＳｒｃＴｏｐ
ｕ１６  ＳｒｃＷｉｄｔｈ    ／／ソース矩形のピクセル幅
ｕ１６  ＳｒｃＨｅｉｇｈｔ  ／／ソース矩形のピクセル高
Ｖｏｉｄ＊ＤｓｔＢａｓｅ    ／／メモリ内の宛先バッファアドレス
ｕ１６  ＤｓｔＳｔｒｉｄ    ／／宛先バッファの３２Ｂの倍数のストライド
ＧＸＢｏｏｌ  Ｃｌｅａｒ    ／／Ｚフレームバッファのカラーをクリア可能
【００８２】
この関数は、組み込みフレームバッファ（ＥＦＢ）の内容をメインメモリ内の表示バッファ１１３にコピーするものである。「コピーアウト」という用語は、単にすべての情報を転送するという意味ではなく、むしろ、組み込みフレームバッファの内容を読み出して、さらに処理し（たとえば、フィルタリングする、再サンプリングする、スケーリングするなど）、結果得られたデータを他へ（たとえば、外部のポイントサンプル型のフレームバッファへ）送るという意味である。矩形の原点は、ＳｒｃＬｅｆｔ（Ｘ）およびＳｒｃＴｏｐ（Ｙ）によって規定される。Ｃｌｅａｒフラグによって、カラーおよびｚバッファをクリアして、現在のクリアカラーおよびｚ値とすることができる。組み込みフレームバッファのクリアは、コピー処理と同時に生じる。
【００８３】
以下の関数例は、コピー処理の制御を設定するのに用いることができる。
【００８４】
＜ＧＸＳｅｔＣｏｐｙＣｏｎｔｒｏｌ＞
引数：
ＧＸＦｂＣｌａｍｐｓ  ＣｌａｍｐＦｌａｇｓ；  ／／フレームバッファフィルタリングのために、フラグをクランプ。
ＧＸＴｅｘＦｏｒｍａｔｓ  ＴｅｘＦｏｒｍａｔ；  ／／テクスチャ（すなわち、宛先）ピクセルのフォーマット。
ＧＸＦｂＩｎｔｅｒｌａｃｅ  Ｉｎｔｅｒｌａｃｅｄ；  ／／表示バッファはインターレース（ＹＵＶ４２２）。
ＧＸＧａｍｍａ  Ｇａｍｍａ；  ／／表示バッファピクセルに対するガンマ補正。
ｕ１６  ＶｅｒｔＳｃａｌｅ；  ／／垂直  １／スケール値（１．８フォーマット）。
ＧＸＢｏｏｌ  ＭｉｐＦｉｌｔｅｒ；  ／／ミップマップフィルタを適用（テクスチャコピーのみ）。
【００８５】
この関数は、組み込みフレームバッファから表示バッファへコピー中に使用される制御を設定する。これらの制御をいったん設定すると、複数のコマンドが発行できる。
【００８６】
以下は、データを組み込みフレームバッファからテクスチャとしてコピーアウトするためのＡＰＩコマンドの例である。
【００８７】
＜ＧＸＣｏｐｙＦＢＴｏＴｅｘｔｕｒｅ＞
引数：
ｕ１６  ＳｒｃＬｅｆｔ  ／／ソース矩形の左上座標。
ｕ１６  ＳｒｃＴｏｐ；
ｕ１６  ＳｒｃＷｉｄｔｈ；  ／／ソースのピクセル幅。
ｕ１６  ＳｒｃＨｅｉｇｈｔ；  ／／ソース矩形のピクセル高。
ｖｏｉｄ＊  ＤｓｔＢａｓｅ；  ／／メモリ内の宛先バッファのアドレス（３２Ｂに調整）。
ｕ１６  ＤｓｔＳｔｒｉｄｅ；  ／／３２Ｂの倍数で示される、宛先バッファのストライド。
ＧＸＢｏｏｌ  Ｃｌｅａｒ；  ／／カラーおよびｚフレームバッファのクリアを許可。
【００８８】
この関数は、グラフィックスパイプラインによって後で使えるようにテクスチャ画像を生成する目的で、組み込みフレームバッファの内容を、メインメモリ内のテクスチャ画像バッファにコピーするものである。
【００８９】
以下に、上述のＡＰＩコマンドの例を用いて指定することが可能なパラメータの例を挙げる。
【００９０】
＜ＧＸＦｂＣｌａｍｐｓ：＞
ＧＸ＿ＣＬＡＭＰ＿ＴＯＰ，  ／／フィルタリングのために、画像の上端をクランプ
ＧＸ＿ＣＬＡＭＰ＿ＢＯＴＴＯＭ，  ／／フィルタリングのために、画像の下端をクランプ
＜ＧＸＦｂＩｎｔｅｒｌａｃｅ：＞
ＧＸ＿ＩＮＴＬＣ＿ＯＦＦ  ／／インターレースはオフ。
ＧＸ＿ＩＮＴＬＣ＿ＥＶＥＮ  ／／偶数線をインターレース。
ＧＸ＿ＩＮＴＬＣ＿ＯＤＤ  ／／奇数線をインターレース。
＜ＧＸＺＣｍｐｒＦｏｒｍａｔｓ：＞
ＧＸ＿ＺＣ＿ＬＩＮＥＡＲ，  ／／リニア１６ビットｚ。圧縮なし。
ＧＸ＿ＺＣ＿１４Ｅ２  ／／１４ｅ２浮動小数点フォーマット。
ＧＸ＿ＺＣ＿１３Ｅ３  ／／１３ｅ３浮動小数点フォーマット。
＜ＧＸＧａｍｍａ：＞
ＧＸ＿ＧＭ＿１＿０  ／／ガンマ  １．０
ＧＸ＿ＧＭ＿１＿７  ／／ガンマ  １．７
ＧＸ＿ＧＭ＿２＿２  ／／ガンマ  ２．２
ＧＸＴｅｘＦｏｒｍａｔｓ：
ＧＸ＿ＴＦ＿Ｉ４      ／／輝度４ビット
ＧＸ＿ＴＦ＿Ｉ８      ／／輝度８ビット
ＧＸ＿ＴＦ＿ＩＡ４    ／／輝度アルファ８ビット（４４）
ＧＸ＿ＴＦ＿ＩＡ８    ／／輝度アルファ１６ビット（８８）
ＧＸ＿ＴＦ＿Ｃ４      ／／カラーインデックス４ビット
ＧＸ＿ＴＦ＿Ｃ８      ／／カラーインデックス８ビット
ＧＸ＿ＴＦ＿ＣＡ      ／／カラーインデックス＋アルファ８ビット（４４）
ＧＸ＿ＴＦ＿Ｃ６Ａ２  ／／カラーインデックス＋アルファ８ビット（６２）
ＧＸ＿ＴＦ＿ＣＡ８  ／／カラーインデックス＋アルファ１６ビット（８８）
ＧＸ＿ＴＦ＿Ｒ５Ｇ６Ｂ５  ／／ＲＧＢ１６ビット（５６５）
ＧＸ＿ＴＦ＿ＲＧＢ５Ａ１  ／／ＲＧＢ１６ビット（５５５１）
ＧＸ＿ＴＦ＿ＲＧＢＡ８    ／／ＲＧＢ３２ビット（８８８８）
ＧＸ＿ＴＦ＿ＣＭＰＲ      ／／４ビット／テクセルに圧縮。ＲＧＢ８Ａ１．ＧＸＰｉｘｅｌＦｏｒｍａｔｓ：
ＧＸ＿ＰＦ＿ＲＧＢ８＿Ｚ２４
ＧＸ＿ＰＦ＿ＲＧＢＡ６＿Ｚ２４
ＧＸ＿ＰＦ＿ＲＧＢ５６５＿Ｚ１６
ＧＸ＿ＰＦ＿Ｚ２４  ／／Ｚバッファコピーに使用される（診断のみ）
ＧＸ＿ＰＦ＿Ｙ８
ＧＸ＿ＰＦ＿Ｕ８
ＧＸ＿ＰＦ＿Ｖ８
ＧＸ＿ＰＦ＿ＹＵＶ４２０  ／／ＹＵＶコピーに使用される。
【００９１】
＜ピクセルエンジンレジスタの例＞
図２３〜２５は、コピーアウト処理に関連してピクセルエンジンによって使用されるレジスタの例を示す。具体的には、図２３は、制御レジスタの例を示す。このレジスタ例におけるビット定義は、以下の通りである
【表３】
0004683760.tif 000004
【００９２】
０〜２ビットは、コピー動作のピクセルタイプを指定する。この制御レジスタに書き込みを行なうと、エッジラスタライザ（ＲＡＳ０）からピクセルエンジン（ＰＥ）までの間のグラフィックスパイプ段階がフラッシュされる。この処理は、本例においては、最低９０周期行なうことが可能である。このレジスタへの書き込みは、テクスチャをコピーするのとテクスチャを用いるプリミティブを描画するのとを同期させるために用いることもできる。
【００９３】
図２４は、テクスチャコピー動作におけるレジスタの例を示す。このレジスタ例におけるビット定義は、以下の通りである。
【表４】
0004683760.tif 000005
【００９４】
８：７  ガンマ（ａｒｃ＿ｆｏｒｍａｔがＲＧＢフォーマットのいずれかである場合のみ）
００：  ガンマ  ＝  １．０
０１：  ガンマ  ＝  １．７
１０：  ガンマ  ＝  ２．２
１１：  予約
９：  ｍｉｐ＿ｍａｐ＿ｆｉｌｔｅｒ
０：  フィルタリングなし（１：１）
１：  ボックスフィルタリング（２：１）
１１：  ｃｌｒ  （ｒｇｂ＿ａａの場合は、０に設定要）
０：  Ｚおよびカラーｅｆｂをクリアしない
１：  Ｚおよびカラーｅｆｂをクリア
１３：１２  ｉｎｔｌｃ
００：  プログレッシブ
０１：  予約
１０：  インターレース（偶数線）
１１：  インターレース（奇数線）
１６：１５  ｃｃｖ＿ｍｏｄｅ
０ｘ：  ピクセルタイプとテクスチャフォーマットとに基づく自動カラー変換
１０：  カラー変換オフ（ｒｇｂからｙｕｖ）
１１：  カラー変換オン（ｒｇｂからｙｕｖ）
【００９５】
本動作で可能なピクセルタイプは、ＲＧＢ８、ＲＧＢＡ６、ＲＧＢ＿ＡＡ（アンチエイリアシング（Ｒ５Ｇ６Ｂ５））、ＹＵＶ８、およびＹＵＶ４２０である。３〜６ビットが、コピーコマンドによってテクスチャバッファに記憶されたテクスチャのフォーマットを規定する。本例において、テクスチャフォーマッティングは、図１３に示すテクスチャフォーマット部において行なわれる。本例において、ピクセルタイプがＹＵＶ４２０の場合は、Ｃｌｒは対応しておらず、０に設定されなければならない。ガンマ補正も、ピクセルタイプがＹＵＶ４２０の場合には対応していない。
【００９６】
図２５は、表示コピー動作におけるレジスタの例を示す。このレジスタ例におけるビット定義は、以下の通りである。
【表５】
0004683760.tif 000006
【００９７】
本動作で可能なピクセルタイプは、ＲＧＢ８、ＲＧＢＡ６、ＲＧＢ＿ＡＡ（アンチエイリアシング）、およびＹＵＶ４２０である。ピクセルタイプがＹＵＶ４２０の場合は、Ｃｌｒは対応しておらず、０に設定されなければならない。ガンマ補正も、ピクセルタイプがＹＵＶ４２０の場合には対応していない。
【００９８】
＜互換可能な他の実施例＞
上述のシステム構成要素５０のうちのあるものは、上述の家庭用ビデオゲームコンソール以外であっても実施できる。たとえば、システム５０のために書き込まれているグラフィックスアプリケーションなどのソフトウェアを、システム５０をエミュレートするかまたはそれと互換性のある他の構成を用いたプラットフォーム上で実行することができる。他のプラットフォームが、システム５０のハードウェアおよびソフトウェア資源の一部または全部をうまくエミュレート、模倣、および／または提供できるのであれば、当該他のプラットフォームは、ソフトウェアをうまく実行することができるであろう。
【００９９】
一例として、エミュレータは、システム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供してもよい。エミュレータシステムは、アプリケーションソフトウェアを書き込む対象であるシステムのハードウェアおよび／またはソフトウェア構成要素の一部またはすべてをエミュレートするハードウェアおよび／またはソフトウェア構成要素を含んでいてもよい。たとえば、エミュレータシステムは、パーソナルコンピュータなどの汎用デジタルコンピュータを備えることができ、これによって、システム５０のハードウェアおよび／またはファームウェアを模倣するソフトウェアエミュレータプログラムが実行される。
【０１００】
汎用デジタルコンピュータの中には（たとえば、ＩＢＭまたはマッキントッシュ製パーソナルコンピュータおよびその互換機）、現在、ＤｉｒｅｃｔＸ３Ｄやその他の標準グラフィックスコマンドＡＰＩに対応したグラフィックスパイプラインを提供する３Ｄグラフィックスカードが搭載されているものもある。これらには、また、標準的なサウンドコマンドに基づいて高品質の立体音響を提供する立体音響サウンドカードも搭載されている場合もある。エミュレータソフトウェアを実行させるこのようなマルチメディアハードウェアを搭載したコンピュータは、システム５０のグラフィックス性能およびサウンド性能を近似するに充分な性能を有している場合がある。エミュレータソフトウェアは、パーソナルコンピュータプラットフォーム上のハードウェア資源を制御して、ゲームプログラマがゲームソフトウェアを書き込む対象である家庭用ビデオゲームゲームコンソールプラットフォームの処理性能、３Ｄグラフィックス性能、サウンド性能、周辺性能などを模倣する。
【０１０１】
図２６は、エミュレーション処理全体の例を示しており、この処理は、ホストプラットフォーム１２０１と、エミュレータ構成要素１３０３と、記憶媒体６２上に与えられているバイナリ画像を実行可能なゲームソフトウェアとを用いる。ホスト１２０１は、汎用または専用デジタルコンピューティング装置であってもよく、たとえばパーソナルコンピュータやビデオゲームコンソールなど、充分な計算能力を備えたプラットフォームが挙げられる。エミュレータ１３０３は、ホストプラットフォーム１２０１上で実行されるソフトウェアおよび／またはハードウェアであってもよく、コマンドやデータなどの記憶媒体６２からの情報をリアルタイムで変換して、ホスト１２０１が処理可能な形式にすることができる。たとえば、エミュレータ１３０３は、システム５０が実行しようとする「ソース」バイナリ画像プログラム命令を記憶媒体６２から取り出して、実行可能な形式またはホスト１２０１によって処理可能な形式に当該プログラム命令を変換する。
【０１０２】
一例として、ＩＢＭのＰｏｗｅｒＰＣなどの特定のプロセッサを用いたプラットフォーム上で実行するためにソフトウェアが書き込まれており、ホスト１２０１は、異なる（たとえば、インテルの）プロセッサを用いたパーソナルコンピュータである場合、エミュレータ１３０３は、バイナリ画像プログラム命令の１つまたはシーケンスを記憶媒体１３０５から取り出して、これらのプログラム命令を、インテルのバイナリ画像プログラム命令に相当するものに変換する。また、エミュレータ１３０３は、グラフィックス音声プロセッサ１１４によって処理されるグラフィックスコマンドや音声コマンドを取り出しおよび／または生成し、ハードウェアおよび／またはソフトウェアグラフィックスおよびホスト１２０１で利用可能な音声処理資源によって処理可能な形式に、これらコマンドを変換する。一例として、エミュレータ１３０３は、これらのコマンドを、ホスト１２０１の特定のグラフィックスおよび／またはサウンドハードウェアによって処理可能なコマンドに変換する（たとえば、ＤｉｒｅｃｔＸ、オープンＧＬおよび／またはサウンドＡＰＩを用いる）。
【０１０３】
上述のビデオゲームシステムの機能の一部または全部を提供するために用いられるエミュレータ１３０３には、エミュレータを用いて実行される様々なオプションや画面モードの選択を簡略化または自動化するグラフィックユーザインターフェース（ＧＵＩ）が与えられてもよい。一例として、そのようなエミュレータ１３０３は、ソフトウェアが本来対象としていたホストプラットフォームに比較して、拡張された機能をさらに含んでいてもよい。
【０１０４】
図２７は、エミュレータ１３０３と共に用いられるのに適したエミュレーションホストシステム１２０１を示す。システム１２０１は、処理部１２０３と、システムメモリ１２０５とを含む。システムバス１２０７は、システムメモリ１２０５から処理部１２０３までを含む様々なシステム構成要素を結合する。システム１２０７は、メモリバスまたはメモリコントローラ、周辺機器バス、ローカルバスなど、様々なバスアーキテクチャのいずれかを用いたものを含む、数種のバス構成のいずれであってもよい。システムメモリ１２０７は、読み出し専用メモリ（ＲＯＭ）１２５２と、ランダムアクセスメモリ（ＲＡＭ）１２５４とを含む。ベーシック入出力システム（ＢＩＯＳ）１２５６は、パーソナルコンピュータシステム１２０１内の要素間において情報を転送するのを助ける基本ルーチンを含んでおり、ＲＯＭ１２５２に記憶される。システム１２０１は、様々なドライブや、関連したコンピュータが読み取り可能な媒体をさらに含む。ハードディスクドライブ１２０９は、（典型的には固定された）磁気ハードディスク１２１１からの読み出しやそれに対する書き込みを行う。付加的な（選択可能な）磁気ディスクドライブ１２１３は、着脱可能な「フロッピー」などの磁気ディスク１２１５からの読み出しやそれに対する書き込みを行う。随意のディスクドライブ１２１７は、ＣＤＲＯＭなどの随意の媒体のような着脱可能な光ディスク１２１９からの読み出しや、構成によってはそれに対する書き込みも行う。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、それぞれ、ハードディスクドライブインターフェース１２２１および光ドライブインターフェース１２２５によって、システムバス１２０７に接続している。ドライブやそれに関連するコンピュータが読み出し可能な媒体によって、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、ゲームプログラムなどのパーソナルコンピュータシステム１２０１のためのデータが不揮発的に記憶される。他の構成においては、コンピュータが読み出し可能な他の種類の媒体が用いられていてもよく、コンピュータによってアクセス可能なデータを記憶できる媒体（たとえば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）など）であってもよい。
【０１０５】
エミュレータ１３０３を含む多くのプログラムモジュールは、ハードディスク１２１１、着脱可能な磁気ディスク１２１５、光学ディスク１２１９、および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４に記憶されてもよい。そのようなプログラムモジュールは、グラフィックスやサウンドＡＰＩを提供するオペレーティングシステム、１つ以上のアプリケーションプログラム、他のプログラムモジュール、プログラムデータ、ゲームデータを含んでもよい。ユーザは、コマンドや情報を、キーボード１２２７、ポインティングデバイス１２２９、マイク、ジョイスティック、ゲームコントローラ、衛星アンテナ、スキャナなどの入力装置を通じて、パーソナルコンピュータシステム１２０１に対して入力する。このような入力装置は、システムバス１２０７に結合されたシリアルポートインターフェース１２３１を介して処理部１２０３に接続されることが可能であるが、パラレルポートや、ゲームポートファイアワイヤーバス、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースによって接続されてもよい。モニタ１２３３などの表示装置も、ビデオアダプタ１２３５などのインターフェースを介して、システムバス１２０７に接続される。
【０１０６】
また、システム１２０１は、インターネットのようなネットワーク１１５２上での通信を確立するための、モデム１１５４などのネットワークインターフェース手段を含んでもよい。モデム１１５４は、内蔵であっても外付けであってもよく、シリアルポートインターフェース１２３１を介してシステムバス１２３に接続される。また、、ローカルエリアネットワーク１１５８を介して（または、ワイドエリアネットワーク１１５２、ダイアルアップなどの他の通信路、または他の通信手段を介してもよい）、システム１２０１が遠隔コンピューティング装置１１５０（たとえば、他のシステム１２０１）と通信できるように、ネットワークインターフェース１１５６が与えられてもよい。システム１２０１は、典型的には、プリンタなどの標準周辺機器のような、他の周辺出力装置を含む。
【０１０７】
一例において、ビデオアダプタ１２３５は、Ｍｉｃｒｏｓｏｆｔ製ＤｉｒｅｘｔＸ７．０などのバージョンのような標準３Ｄグラフィックスアプリケーションプログラマインターフェースに基づいて出される３Ｄグラフィックスコマンドに応答して、高速３Ｄグラフィックス描画を提供するグラフィックスパイプラインチップセットを含んでいてもよい。立体音響スピーカセット１２３７も、システムバス１２０７に対して、従来の「サウンドカード」のような音声生成インターフェースを介して接続されている。そのようなインターフェースは、バス１２０７から与えられたサウンドコマンドに基づいて高品質な立体音響を生成するための支援をハードウェアや組み込みソフトウェアに対して行う。このようなハードウェアの機能によって、システム１２０１は、記憶媒体６２に記憶されたソフトウェアを実行するのに充分なグラフィックスおよび音響の速度性能を提供することができる。
【０１０８】
本発明は、現時点において最も現実的で最適な実施例と思われるものに関連して説明してきたが、本発明は、開示された実施例に限定されるものではなく、添付の請求項の範囲に含まれる様々な変形例や相当する仕組みを含むことを意図していると解釈されるべきである。
【図面の簡単な説明】
【図１】対話式コンピュータグラフィックスシステムの一例の概略図である。
【図２】図１のコンピュータグラフィックスシステムの例のブロック図である。
【図３】図２に示すグラフィックス＆音声プロセッサの例のブロック図である。
【図４】図３に示す３Ｄグラフィックスプロセッサの例のブロック図である。
【図５】図４のグラフィックス＆音声プロセッサの論理フロー図の例である。
【図６】組み込みフレームバッファの例およびそこで用いられる２つのＲＧＢベースのフォーマットを示す。
【図７】ＹＵＶフォーマットのデータを記憶するために再構成された、図６のフレームバッファの例を示す。
【図８】ピクセルエンジンおよび組み込みフレームバッファ間のインターフェースの例を示す。
【図９】コピーパイプラインのブロック図の例を示す。
【図１０】ＲＧＢフォーマットからＹＵＶフォーマットへの変換例を示す。
【図１１】垂直スケーリングに用いられるデータパスのブロック図の例である。
【図１２】グラフィックスシステムのブロック図であって、データがシステムの様々な構成要素間をどのように移動するかを示す。
【図１３】図９のコピーパイプラインのより詳細なブロック図を示す。
【図１４】本発明の好ましい実施例による、アンチエイリアシングに用いられる７タップ垂直フィルタの例を示す。
【図１５】本発明の好ましい実施例による、アンチエイリアシングバッファリングのブロック図を示す。
【図１６】デフリッカリングに用いられる図１４の垂直フィルタを示す。
【図１７】本発明の好ましい実施例によって用いられるデフリッカリングバッファリングのブロック図を示す。
【図１８】本発明の好ましい実施例による、変換マトリックスを示す。
【図１９】メインメモリ内に記憶されているテクスチャタイルを示す。
【図２０】ＹＵＶ４４４フォーマットからＹＵＶ４２２フォーマットへのダウンサンプリング変換を示す。
【図２１】ＹＵＶ４２０フォーマットからＹＵＶ４４４フォーマットへのデータ変換に用いられる２つの変換を示す。
【図２２】ＹＵＶ４２０フォーマットからＹＵＶ４４４フォーマットへのデータ変換に用いられる２つの変換を示す。
【図２３】現在のピクセルフォーマットを規定するために用いられる制御レジスタの例を示す。
【図２４】テクスチャコピーコマンドに関連して用いられるレジスタの例を示す。
【図２５】表示コピーコマンドに関連して用いられるレジスタの例を示す。
【図２６】他の代替可能な実施例を示す。
【図２７】他の代替可能な実施例を示す。
【図１】
0004683760.tif 000007
【図２】
0004683760.tif 000008
【図３】
0004683760.tif 000009
【図４】
0004683760.tif 000010
【図５】
0004683760.tif 000011
【図６】
0004683760.tif 000012
【図７】
0004683760.tif 000013
【図８】
0004683760.tif 000014
【図９】
0004683760.tif 000015
【図１０】
0004683760.tif 000016
【図１１】
0004683760.tif 000017
【図１２】
0004683760.tif 000018
【図１３】
0004683760.tif 000019
【図１４】
0004683760.tif 000020
【図１５】
0004683760.tif 000021
【図１６】
0004683760.tif 000022
【図１７】
0004683760.tif 000023
【図１８】
0004683760.tif 000024
【図１９】
0004683760.tif 000025
【図２０】
0004683760.tif 000026
【図２１】
0004683760.tif 000027
【図２２】
0004683760.tif 000028
【図２３】
0004683760.tif 000029
【図２４】
0004683760.tif 000030
【図２５】
0004683760.tif 000031
【図２６】
0004683760.tif 000032
【図２７】
0004683760.tif 000033