(57)【特許請求の範囲】
【請求項１】
グラフィックスパイプラインに対する少なくとも1つの外部処理装置をグラフィクスパイプラインと同期化する方法であって、
外部処理装置によってグラフィクスパイプラインの始端へプログラマブルコンテンツ同期化トークンを送信するステップ、および
グラフィクスパイプライン内の所定点に同期化トークンが到達したタイミングを検出するステップ、および
グラフィックスパイプライン内の前記所定点に同期化トークンが到達したことが検出されたとき外部処理装置に信号を送るステップを含む、同期化方法。
【請求項２】
同期化トークンは、グラフィクスパイプラインが変更しない可変コンテンツデータメッセージを含む、請求項１記載の方法。
【請求項３】
前記所定点から返送された値と送信した同期化トークンの値とを比較するステップをさらに含む、請求項１または２記載の方法。
【請求項４】
さらに、グラフィクスパイプラインへ送信する可変トークン値を前記外部処理装置上で動作しているアプリケーションプログラムによって特定するステップを含む、請求項１ないし３のいずれかに記載の方法。
【請求項５】
同期化トークンは１６ビット可変値を含む、請求項１ないし４のいずれかに記載の方法。
【請求項６】
前記所定点からの割込に応答して前記外部処理装置がグラフィックスパイプラインの前記所定点をポーリングするステップをさらに含む、請求項１ないし５のいずれかに記載の方法。
【請求項７】
グラフィックスパイプラインに対する少なくとも1つの外部処理装置をグラフィクスパイプラインと同期化する方法であって、前記グラフィックスパイプラインは、変換ユニット，ライティングユニット，テクスチャ座標発生器，テクスチャマッパ，ラスタライザ，ブレンダ，ピクセルエンジンおよびフレームバッファを含む形式のものであり、
前記外部処理装置からグラフィクスパイプラインの始端へ可変コンテンツ同期化メッセージを挿入するステップ、
グラフィクスパイプライン中の所定位置に到達した可変コンテンツ同期化メッセージを捕捉するステップ、
グラフィクスパイプライン中の前記所定位置に可変コンテンツ同期化メッセージが到達したときに外部処理装置に信号を伝達するステップ、および
捕捉した可変コンテンツ同期化メッセージが挿入した可変コンテンツ同期化メッセージに対応するかどうか前記外部処理装置で判断するステップを含み、同期化方法。
【請求項８】
信号伝達ステップは、グラフィクスパイプラインの前記所定位置に可変コンテンツ同期化メッセージが到達したときに前記外部所定装置に割込を発生するステップを含む、請求項７記載の方法。
【請求項９】
捕捉ステップは可変コンテンツ同期化メッセージをレジスタにストアするステップを含み、そして判断ステップはそのレジスタの内容を読み出すステップを含み、レジスタから読み出した可変コンテンツ同期化メッセージと挿入した可変コンテンツ同期化メッセージとが対応するかどうか判断する、請求項７または８記載の方法。
【請求項１０】
ピクセルエンジンが信号伝達ステップを実行する、請求項７ないし９のいずれかに記載の方法。
【請求項１１】
グラフィクスパイプラインは可変コンテンツ同期化メッセージを変更しない、請求項７ないし１０のいずれかに記載の方法。
【請求項１２】
コマンドプロセサに結合され、変換ユニット，ライティングユニット，テクスチャ座標発生器，テクスチャマッパ，ラスタライザ，ブレンダ，ピクセルエンジン，およびフレームバッファを含むグラフィクスパイプラインにおいて、
コマンドプロセサは外部処理装置から可変コンテンツ同期化メッセージを受けてその可変コンテンツ同期化メッセージをグラフィクスパイプラインを通してピクセルエンジンへパスし、ピクセルエンジンは、可変コンテンツ同期化メッセージが到達したときそれを捕捉するレジスタを含み、その可変コンテンツ同期化メッセージがレジスタに到達したときに信号を前記外部処理装置へ伝達するようにしたことを特徴とする、グラフィクスパイプライン。
【請求項１３】
可変コンテンツ同期化メッセージを変更しない、請求項１２記載のグラフィクスパイプライン。
【請求項１４】
グラフィクスコマンドストリームを受信しかつそのグラフィクスコマンドストリームに基づいてイメージを発生する形式のグラフィクスシステムであって、
可変コンテンツ同期化メッセージを含む同期化トークンをそのグラフィクスコマンドストリーム中で受信するようにされ、さらに
グラフィクスコマンドシーケンス中で同期化トークンに対してより早いグラフィクスストリームの部分が処理されたかどうかについての問い合わせに対して応答を与え、それによってグラフィクスシステムのイベントのグラフィックスコマンドストリーム処理に対する少なくとも1つの外部処理装置との同期化を許容するようにした、グラフィクスシステム。
【請求項１５】
アプリケーションに特定した集積回路を含む、請求項１４記載のグラフィクスシステム。
【請求項１６】
３Ｄグラフィクスパイプラインを含む、請求項１４または１５記載のグラフィクスシステム。
【請求項１７】
３Ｄグラフィックスパイプラインに対する少なくとも1つの外部処理装置を３Ｄグラフィクスパイプラインと同期化する方法であって、前記３Ｄグラフィックスパイプラインは、変換，ライティング，テクスチャ座標発生，テクスチャマッピング，ラスタライジング，およびブレンドを含む形式のものであり、
外部処理装置によってグラフィクスパイプラインの始端へ可変コンテンツ同期化トークンを挿入するステップ、および
トークンがグラフィクスパイプライン中の所定点に到達したことに応答して外部処理装置に信号を送るステップを含む、方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はコンピュータグラフィクスに関し、特にたとえば家庭用ビデオゲームプラットフォームのようなインタラクティブなグラフィクスシステムに関する。さらに具体的には、この発明は、可変コンテンツ同期化トークンを使用する、グラフィクスパイプラインとグラフィクスコマンドプロセサとの間の同期化に関する。
【０００２】
【発明の背景】
多くの人々はかなりリアルな恐竜，エイリアン，生き生きとしたおもちゃおよび他の空想的な動物を含む映画をかつて見たことがある。そのようなアニメーションはコンピュータグラフィクスによって可能とされた。そのような技術を用いて、コンピュータグラフィクスのアーティストは、各オブジェクトがどのように見えるべきかや時間の経過とともに外見上どのように変化すべきかを特定し、コンピュータは、そのオブジェクトをモデル化してテレビジョンやコンピュータスクリーンのようなディスプレイに表示する。コンピュータは、表示される映像の各部分を、場面中の各オブジェクトの位置や向き，各オブジェクトを照らすように見える照明の方向，各オブジェクトの表面テクスチャ，および他の要素に正確に基づいて、色付けしまた形作るために必要な多くのタスクを実行する。
【０００３】
コンピュータグラフィクスの生成は複雑であるので、ここ数年前のコンピュータによって生成された３次元（３Ｄ）グラフィクスは、ほとんど高価な特殊なフライトシミュレータ，ハイエンドグラフィクスワークステーションおよびスーパーコンピュータに限られていた。大衆は映画や高価なテレビコマーシャルにおいてこれらのコンピュータシステムによって生成された映像のいくつかを見たが、大部分の人はグラフィクスを生成しているコンピュータに対して実際に相互作用をさせることはできない。たとえば、Nintendo64（登録商標）や今や利用可能であるパソコン用の種々の３Ｄグラフィクスカードのような比較的安価な３Ｄグラフィクスプラットフォームの利用によって、このすべてが変わった。今や、家庭や会社の比較的安価なコンピュータグラフィクスシステム上でエキサイティングな３Ｄアニメーションやシミュレーションに対して相互作用を及ぼすことができる。
【０００４】
グラフィクスシステム設計者が過去に直面した問題は、グラフィクスパイプラインをグラフィクスコマンド生成器のような外部コンポーネントと如何に同期化するかである。典型的なグラフィクスレンダリングシステムは、いくつかの非同期コンポーネンツ（たとえば、グラフィクスコマンドを発生するグラフィクスコマンド生成器、コマンドを消費しかつフレームバッファ出力を生成するグラフィクスプロセサ、およびフレームバッファを表示する表示インタフェース）を含む。レンダリングシステムの異なるステージを同期化して各種の動作間において等時性(time-coherence)を確立することがしばしば望まれる。たとえば、グラフィクスコマンド生成器にとって、或る状況下において、グラフィクスプロセサが或るグラフィクスコマンドの処理をいつ終えたかを知ることは非常に有用である。このような同期化問題は、典型的なグラフィクスプロセサが異なるグラフィクスコマンドを処理するについて異なる時間量を要するという点で煩瑣である。
【０００５】
この問題に対する種々のソリューションが提案されている。たとえば、グラフィクスパイプラインとグラフィクスコマンド生成器との間の同期化を提供するために過去に用いられた１つの技術は、グラフィクス表示リスト中のすべてのコマンドが処理されたときにグラフィクスパイプラインにコマンド生成器に対して割込を送るようにさせることである。この同期化能力は非常に有用ではあるけれども、グラフィクス表示リスト中のより中間的な同期化要求（たとえば、グラフィクスパイプラインが表示リストの残りのものについて仕事を続けている間、グラフィクスコマンド生成器あるいは他の動作コンポーネントをイネーブルして新たなグラフィクスコマンドを送信する以外の何らかのタスクを実行する）を解決できるものではない。
【０００６】
グラフィクスコマンドストリーム中に可変コンテンツトークン識別子を挿入することによってグラフィクスプロセサが処理のために異なるアイテムを選択できるようにすることが知られている。しかしながら、そのようなトークン識別子は、同期化目的のためには一般的ではなく、グラフィクスパイプラインがそれに基づいて動作するデータ構造や他のアイテムを識別するために使用された。
【０００７】
過去に意義深い仕事がなされたが、さらなる改良が望まれている。
【０００８】
【発明の概要】
この発明は、グラフィクスパイプラインをたとえばグラフィクスコマンド生成器のような外部動作コンポーネントと同期化する技術および構成を提供することによって、上述のような同期化問題を解決する。この発明によって提供される１つの局面によれば、可変データメッセージを含むトークンがグラフィクスパイプラインへ送られるグラフィクスコマンドストリーム中に挿入される。パイプラインの所定点においてトークンが捕捉され、信号が発生されてトークンが到着したことを示す。外部コンポーネントは、その捕捉されたトークンを見て、複数の可能性のあるトークンのどれが捕捉されたかを判断することができる。
【０００９】
具体的な実施例においては、グラフィクスパイプラインは、パイプライン中の所定点にトークンが到達したとき割込を発生し、他の動作コンポーネントは捕捉されたトークンの値を判断するためにトークンレジスタをポーリングすることができる。グラフィクスコマンド生成器あるいは他の動作コンポーネントは、タスクをグラフィクスパイプラインと同期化するために、たとえばグラフィクスパイプラインおよびグラフィクスコマンド生成器の間で共用されるメモリにおけるメモリ等時性を維持するために、トークン同期化情報を使用することができる。この発明の他の局面によれば、グラフィクスコマンド生成器は同じグラフィクスコマンドストリーム中に異なる値の複数のトークンを挿入することができ、グラフィクスパイプライン中の所定点にどのトークンが到達したかを判断するために比較を用いる。異なるタスクが、その点にどのトークンが到達したかに基づいて、トリガされ得る。
【００１０】
この発明によって提供される１つの局面によれば、グラフィクスパイプラインとの同期化方法では、グラフィクスパイプラインに可変コンテンツ同期化トークンを送信し、そしてパイプライン中の所定点にトークンが到達したタイミングを検出する。このトークンは、或る実施例では、グラフィクスパイプラインが変更もしくは修飾しない可変コンテンツデータメッセージを含む。検出ステップでは、トークンレジスタによって返送された値と送信したトークンの値とを比較する。そして、検出ステップは、割込に応答してトークンレジスタをポーリングするようにしてもよい。
【００１１】
この発明によって提供される他の局面によれば、コマンドプロセサ，変換ユニット，ライティングユニット，テクスチャ座標発生器，テクスチャマッパ，ラスタライザ，ブレンダ，ピクセルエンジンおよびフレームバッファを含む形式のグラフィクスパイプラインと同期化する方法では、グラフィクスパイプライン中に可変コンテンツデータメッセージを挿入し、グラフィクスパイプラインの所定点でその可変コンテンツデータメッセージを捕捉し、可変コンテンツデータメッセージがそのグラフィクスパイプライン中の所定点に到達したときに信号を伝達し、そして捕捉した可変コンテンツデータメッセージが挿入した可変コンテンツデータメッセージと対応するかどうかを判断する。信号伝達ステップは、可変コンテンツデータメッセージがグラフィクスパイプラインの終端(bottom)に到達したとき割込を発生する。捕捉ステップでは、可変コンテンツデータメッセージをレジスタにストアし、そして判断ステップでは、そのレジスタの内容を読み出す。
【００１２】
この発明によって提供されるさらに他の局面によれば、コマンドプロセサは可変コンテンツデータメッセージを受け、かつその可変コンテンツデータメッセージをパイプラインを通してピクセルエンジンにパスする。ピクセルエンジンは可変コンテンツデータメッセージを捕捉するレジスタを含み、可変コンテンツデータメッセージがピクセルエンジンに到達したときに信号を伝達する。
【００１３】
この発明によって提供される別の局面は、グラフィクスコマンドストリーム中に挿入される可変コンテンツデータメッセージを含むトークンを提供する。グラフィクスシステムは、トークンより前のグラフィクスストリームの部分が処理されたかどうかについての問い合わせに対して応答を与えることによって、グラフィクスシステムのイベントを同期化することができる。
【００１４】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００１５】
【実施例】
図１は対話型（インタラクティブ）３Ｄコンピュータグラフィクスシステム５０の一例を示す。システム５０は対話型３Ｄビデオゲームをステレオ音声とともにプレイするのに用いられ得る。これはまた多様な他のアプリケーションにも用いられ得る。
【００１６】
この実施例において、システム５０は３次元世界のディジタル表現ないしモデルをインタラクティブにかつリアルタイムに処理することができる。システム５０は、任意の視点から、その世界の一部または全部を表示することができる。たとえば、システム５０は、手持ちコントローラ５２ａおよび５２ｂまたは他の入力デバイスからのリアルタイム入力に応答して、視点をインタラクティブに変化できる。このことによって、ゲームプレーヤは、その世界内もしくは外の誰かの目を通してその世界を見ることができる。システム５０は、リアルタイム３Ｄインタラクティブ表示を必要としないアプリケーション（たとえば２Ｄ表示の発生やおよび／またはノンインタラクティブ表示）に使用できるが、高品質の３Ｄ映像を非常に速く表示する能力は、非常にリアルでエキサイティングなゲームプレイや他のグラフィクスインタラクションを創造するのに使用され得る。
【００１７】
システム５０を用いてビデオゲームまたは他のアプリケーションをプレイするために、ユーザはまず、主ユニット５４を、カラーテレビ５６または他の表示装置に、両者の間にケーブル５８を接続することによって、接続する。主ユニット５４はカラーテレビ５６を制御するためのビデオ信号およびオーディオ信号を発生する。ビデオ信号はテレビジョン画面５９上に表示されている映像を制御するものであり、オーディオ信号はテレビのステレオスピーカ６１Ｌおよび６１Ｒを通して音声として再生される。
【００１８】
ユーザはまた主ユニット５４を電源につなぐ必要がある。この電源は従来のＡＣアダプタ（図示せず）であってよく、そのＡＣアダプタは家庭用の標準的な壁ソケットに差し込まれ、家庭用電源を、主ユニット５４を駆動するのに適した低いＤＣ電圧信号に変換する。他の実施例ではバッテリが用いられてもよい。
【００１９】
ユーザは主ユニット５４を制御するために手持ちコントローラ５２ａおよび５２ｂを用いる。コントロール６０は、たとえば、３Ｄ世界内においてテレビ５６に表示されているキャラクタが移動すべき方向（上または下、左または右、近づいてまたは遠ざかって）を指示するために使用され得る。コントロール６０は、また他のアプリケーションのための入力（たとえばメニュー選択，ポインタ／カーソル制御，その他）を与える。コントローラ５２は多様な形態をとり得る。この実施例においては、図示されるコントローラ５２は、各々ジョイスティック，押しボタンおよび／または方向スイッチのようなコントロール６０を含む。コントローラ５２は、ケーブルによって、もしくは電磁波（たとえば電波または赤外線）を介してワイヤレスで、主ユニット５４に接続され得る。
【００２０】
ゲームのようなアプリケーションをプレイするために、ユーザはビデオゲームもしくはプレイしたいと思う他のアプリケーションをストアしている適宜の記憶媒体６２を選択し、その記憶媒体を主ユニット５４のスロット６４に差し込む。記憶媒体６２は、たとえば、特別にエンコードされおよび／または記号化された光学的ならびに／もしくは磁気的ディスクであってよい。ユーザは主ユニット５４をオンするために電源スイッチ６６を操作し、主ユニットがその記憶媒体６２にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザは主ユニットに入力を与えるためにコントローラ５２を操作する。たとえば、コントロール６０を操作することによってゲームもしくは他のアプリケーションをスタートさせる。他のコントロール６０を動かすことによって、動画キャラクタを異なる方向に移動させ、または３Ｄ世界におけるユーザの視点を変化させる。記憶媒体６２にストアされている具体的なソフトウェアによって、コントローラ５２上の種々のコントロール６０は異なる時間で異なる機能を達成することができる。
全体システムの例
図２はシステム５０の例示的なコンポーネントのブロック図であり、重要なコンポーネントは、
・主プロセサ（ＣＰＵ）１１０、
・主メモリ１１２、および
・グラフィクス／オーディオプロセサ１１４
を含む。
【００２１】
この実施例において、主プロセサ１１０（たとえばＩＢＭパワーＰＣ７５０の改良版）は、手持ちコントローラ５２（および／または他の入力デバイス）からの入力をグラフィクス／オーディオプロセサ１１４を通して受ける。主プロセサ１１０はユーザ入力にインタラクティブに応答し、光ディスクドライブのような大容量記憶媒体アクセス装置１０６を介して、たとえば外部記憶媒体６２から供給されるビデオゲームもしくは他のプログラムを実行する。一例として、ビデオゲームプレイの状況では、主プロセサ１１０は、多様なインタラクティブ制御機能に加えて、衝突検出および動画処理を実行する。
【００２２】
この実施例では、主プロセサ１１０は３Ｄグラフィクス／オーディオコマンドを発生し、それらをグラフィクス／オーディオプロセサ１１４に送る。グラフィクス／オーディオプロセサ１１４はこれらのコマンドを処理し、ディスプレイ５９上での可視映像を生成し、ステレオスピーカ６１Ｒおよび６１Ｌもしくは他の適宜の音声発生デバイス上でのステレオ音声を生成する。
【００２３】
実施例のシステム５０はビデオエンコーダ１２０を含み、このビデオエンコーダは、グラフィクス／オーディオプロセサ１１４からの映像信号を受けて、その映像信号をコンピュータモニタや家庭用テレビ５６のような標準的な表示装置上での表示に適したアナログおよび／またはディジタルビデオ信号に変換する。システム１００はまたオーディオコーデック（圧縮器／伸長器）１２２を含み、このオーディオコーデックはディジタル化されたオーディオ信号を圧縮しかつ伸長するとともに、必要に応じてディジタルオーディオ信号のフォーマットとアナログオーディオ信号のフォーマットとの間で変換を行う。オーディオコーデック１２２はバッファ１２４を介してオーディオ入力を受けることができ、処理（たとえば、プロセサが生成したおよび／または大容量記憶媒体アクセス装置１０６のストリームオーディオ出力を介して受信した他のオーディオ信号とのミキシング）するために、そのオーディオ入力をグラフィクス／オーディオプロセサ１１４に与える。この実施例におけるグラフィクス／オーディオプロセサ１１４は、オーディオタスクに利用可能なオーディオメモリ１２６にオーディオ関連情報をストアすることができる。グラフィクス／オーディオプロセサ１１４は、結果的に得られるオーディオ出力信号を、圧縮およびアナログ信号への変換のために、オーディオコーデック１２２に与え、したがってそのオーディオ出力信号が（たとえばバッファアンプ１２８Ｌおよび１２８Ｒを介して）スピーカ６１Ｌおよび６１Ｒによって再生され得る。
【００２４】
グラフィクス／オーディオプロセサ１１４はシステム１００内に存在するであろう種々の付加的なデバイスと通信する能力を有する。たとえば、パラレルディジタルバス１３０は大容量記憶媒体アクセス装置１０６および／または他のコンポーネントと通信するために用いられる。シリアル周辺バス１３２は多様な周辺機器または、たとえば、
・ＰＲＯＭおよび／またはＲＴＣ（リアルタイムクロック）１３４、
・モデム１３６もしくは他のネットワークインタフェース（それはシステム１００を、プログラム命令および／またはデータがダウンロードもしくはアップロードされ得るインターネットあるいは他のディジタルネットワークのようなテレコミュニケーションネットワーク１３８に接続する）、および
・フラッシュメモリ１４０
を含む他のデバイスと通信する。
別の外部シリアルバス１４２は、付加的な拡張メモリ１４４（たとえばメモリカード）もしくは他のデバイスと通信するために使用され得る。コネクタが種々のデバイスをバス１３０，１３２および１４２に接続するために使用され得る。
グラフィクス／オーディオプロセサの例
図３は実施例のグラフィクス／オーディオプロセサ１１４を示すブロック図である。或る実施例においては、グラフィクス／オーディオプロセサ１１４はシングルチップＡＳＩＣであってよい。この実施例においては、グラフィクス／オーディオプロセサ１１４は、
・プロセサインタフェース１５０、
・メモリインタフェース／コントローラ１５２、
・３Ｄグラフィクスプロセサ１５４、
・オーディオディジタル信号プロセサ（ＤＳＰ）１５６、
・オーディオメモリインタフェース１５８、
・オーディオインタフェース／ミキサ１６０，
・周辺コントローラ１６２、および
・表示コントローラ１６４
を含む。
【００２５】
３Ｄグラフィクスプロセサ１５４はグラフィクス処理タスクを実行する。オーディオディジタル信号プロセサ１５６はオーディオ処理タスクを実行する。表示コントローラ１６４は主メモリ１１２からの映像情報にアクセスし、表示装置１０２上での表示のためにその映像情報をビデオエンコーダ１２０に与える。オーディオインタフェース／ミキサ１６０はオーディオコーデック１２２をインタフェースし、また異なるソースからのオーディオ（たとえば、大容量記憶媒体アクセス装置１０６からのオーディオストリーム，オーディオＤＳＰ１５６の出力，およびオーディオコーデック１２２を通して受ける外部オーディオ入力）をミックスすることができる。プロセサインタフェース１５０は主プロセサ１１０およびグラフィクス／オーディオプロセサ１１４の間のデータおよび制御インタフェースを提供する。
【００２６】
メモリインタフェース１５２はグラフィクス／オーディオプロセサ１１４とメモリ１１２との間のデータおよび制御インタフェースを提供する。この実施例においては、主プロセサ１１０は、プロセサインタフェース１５０およびグラフィクス／オーディオプロセサ１１４の一部であるメモリインタフェース１５２を介して、主メモリ１１２にアクセスする。周辺コントローラ１６２はグラフィクス／オーディオプロセサ１１４と上で述べた種々の周辺機器との間のデータおよび制御インタフェースを提供する。オーディオメモリインタフェース１５８はオーディオメモリ１２６とのインタフェースを提供する。
グラフィクスパイプラインの例
図４は図３の３Ｄグラフィクスプロセサ１５４をより詳細に示すグラフィクス処理システムを示す。この３Ｄグラフィクスプロセサ１５４は、とりわけ、コマンドプロセサ２００および３Ｄグラフィクスパイプライン１８０を含む。主プロセサ１１０はデータストリーム（たとえばグラフィクスコマンドストリームおよび表示リスト）をコマンドプロセサ２００に通信する。主プロセサ１１０はメモリレイテンシを最小化するために２レベルキャッシュ１１２を有し、さらにまたグラフィクス／オーディオプロセサ１１４に向けられたキャッシュされていないデータストリームのための書込収集(write-gathering)バッファ１１１を有する。この書込収集バッファ１１は部分キャッシュラインを全キャッシュラインに集め、バスの最大使用時に、グラフィクス／オーディオプロセサ１１４からのデータを１つのキャッシュラインに送る。
【００２７】
コマンドプロセサ２００は主プロセサ１１０からの表示コマンドを受け、それらを解剖し、メモリコントローラ１５２を介して共用メモリ１１２からのそのコマンドを処理するに必要な付加的なデータを入手する。コマンドプロセサ２００は、２Ｄおよび／または３Ｄ処理およびレンダリングのために、頂点コマンドのストリームをグラフィクスパイプライン１８０に与える。グラフィクスパイプライン１８０はこれらのコマンドに基づいて映像を生成する。結果として得られた映像情報は、表示コントローラ／ビデオインタフェースユニット１６４によるアクセスのために主メモリ１２０に転送され得て、この映像情報は表示装置１５６上にパイプライン１８０のフレームバッファ出力を表示する。
【００２８】
図５はグラフィクスプロセサ１５４を用いて実行される処理を図解的に示すブロック論理フロー図である。主プロセサ１０は、グラフィクスコマンドストリーム２１０，表示リスト２１２および頂点アレイ２１４を主メモリ１１２にストアし、ポインタをバスインタフェース１５０を介してコマンドプロセサ２００に送る。主プロセサ１１０は主メモリ１１０内に割り付けられた１つ以上のグラフィクスＦＩＦＯバッファ２１０にグラフィクスコマンドをストアする。このコマンドプロセサ２００は、
・同期／フロー制御および負荷バランスのためにグラフィクスコマンドを受けかつバッファするオンチップＦＩＦＯメモリバッファ２１６を介して主メモリ１１２からのコマンドストリーム、
・オンチップコールＦＩＦＯメモリバッファ２１８を介して主メモリ１１２からの表示リスト２１２、および
・コマンドストリームからおよび／または主メモリ１１２の頂点アレイ２１４からの頂点アトリビュート
を頂点キャッシュ２２０を介して取り込む。
【００２９】
コマンドプロセサ２００はコマンド処理動作２００ａを実行し、そのコマンド処理動作２００ａはアトリビュート形式を浮動小数点フォーマットに変換し、結果的に得られた完全頂点ポリゴンデータをレンダリング／ラスタライゼーションのためにグラフィクスパイプライン１８０に与える。プログラマブルメモリ調停回路１３０（グラフィクスメモリ要求調停回路：図４）は、グラフィクスパイプライン１８０，コマンドプロセサ２００および表示コントローラ／ビデオインタフェースユニット１６４の間での共用主メモリ１１２へのアクセスを調停する。
【００３０】
図４は、グラフィクスパイプライン１８０が
・変換ユニット３００、
・セットアップ／ラスタライザ４００、
・テクスチャユニット５００、
・テクスチャ環境ユニット６００、および
・ピクセルエンジン７００
を含むことを示す。
【００３１】
変換ユニット３００は多様な２Ｄおよび３Ｄ変換および他の動作３００ａ（図５）を実行する。変換ユニット３００は変換処理３００ａに用いられるマトリクスをストアするための１つ以上のマトリクスメモリ３００ｂを含む。変換ユニット３００は、入来する頂点毎のジオメトリをオブジェクト空間からスクリーン空間へ変換し、そして入来するテクスチャ座標を変換しかつ投影テクスチャ座標（３００ｃ）を計算する。変換ユニット３００はまたポリゴンクリッピング／カリング(clipping/culling)３００ｄを実行する。変換ユニット３００ｂによってまた達成される照明処理３００ｅが、この実施例では８つまでの独立した照明について、頂点毎に照明計算を行う。変換ユニット３００は、エンボス(embossed)タイプのバンプマッピング効果およびポリゴンクリッピング／カリング動作（３００ｄ）のために、テクスチャ座標を発生する（３００ｃ）。
【００３２】
セットアップ／ラスタライザ４００はセットアップユニットを含み、このセットアップユニットは、変換ユニット３００からの頂点データを受け、三角形セットアップ情報を、エッジラスタライゼーション，テクスチャ座標ラスタライゼーションおよびカラーラスタライゼーションを実行する１つ以上のラスタライザユニット（４００ｂ）に送る。
【００３３】
テクスチャユニット５００は、オンチップテクスチャメモリ（ＴＭＥＭ）５０２を含んでもよく、たとえば、
・主メモリ１１２からのテクスチャ５０４の検索、
・たとえばマルチテクスチャ処理，ポストキャッシュテクスチャ伸長，テクスチャフィルタリング，エンボシング，投影テクスチャの使用を通しての陰影付け，およびアルファトランスパーレンシおよびデプスを用いるＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング，偽(pseudo)テクスチャおよびテクスチャタイル(tiling)効果（５００ｂ）のためのテクスチャ座標置換を計算するバンプマップ処理、および
・間接テクスチャ処理（５００ｃ）
を含むテクスチャリングに関連する種々のタスクを実行する。
【００３４】
テクスチャユニット５００はテクスチャ環境処理（６００ａ）のためにフィルタされたテクスチャ値をテクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンおよびテクスチャカラー／アルファ／デプスをブレンドし、また逆レンジベース(reverse range based)のフォグ効果を達成するために、テクスチャフォグ処理（６００ｂ）を実行する。テクスチャ環境ユニット６００はたとえばカラー／アルファ変調，エンボシング，詳細テクスチャ，テクスチャスワッピング，クランピングおよびデプスブレンディングに基づく多様な他の環境関連機能を実行するマルチステージ(multi stages)を提供する。
【００３５】
ピクセルエンジン７００はデプス（ｚ）比較（７００ａ）およびピクセルブレンディング（７００ｂ）を実行する。この実施例では、ピクセルエンジン７００はデータを埋め込み（オンチップ：内蔵）フレームバッファメモリ７０２にストアする。グラフィクスパイプライン１８０は、フレームバッファおよび／またはテクスチャ情報をローカルにストアするために１つ以上の内蔵ＤＲＡＭメモリ７０２を含む。ｚ比較７００ａは、現在有効なレンダリングモードに依存して、グラフィクスパイプライン１８０におけるより早いステージで実行される（たとえば、ｚ比較は、もしアルファブレンディングが要求されていないならば早くに実行され得る）。このピクセルエンジン７００は表示コントローラ／ビデオインタフェースユニット１６４による主メモリ１１２へのアクセスのために、オンチップフレームバッファ７０２を周期的に書き込むコピー動作７００ｃを含む。このコピー動作７００ｃはまた動的テクスチャ合成効果のために、埋め込みフレームバッファ７０２の内容を主メモリ１１２中のテクスチャにコピーするために使用され得る。エイリアス補正ないしアンチエイリアシング(anti-aliasing：エイリアス補正)および他のフィルタリングがコピーアウト動作中に実行され得る。最終的に主メモリ１１２にストアされるグラフィクスパイプライン１８０のフレームバッファ出力は、表示コントローラ／ビデオインタフェースユニット１６４によってフレーム毎に読み出される。表示コントローラ／ビデオインタフェース１６４は表示装置５６上での表示のためにディジタルＲＧＢピクセル値を与える。
グラフィクスパイプライン同期化メカニズム
図４に示すように、システム５０のレンダリングパイプラインはいくつかの非同期コンポーネントを含む。それらの中で、主プロセサ１１０はグラフィクスコマンドを発生し、グラフィクス／オーディオプロセサ１１４はそのコマンドを消費してフレームバッファを生成し、そして表示コントローラ／ビデオインタフェース１６４はフレームバッファを表示する。この発明はこれらのコンポーネントを同期化するためのメカニズムを提供し、複雑さの異なるレベルで種々のプログラムモデルを許容する。
【００３６】
実施例において、主プロセサ１１０はグラフィクス／オーディオプロセサ１１４と調和されるべきである。たとえば、主プロセサ１１０が与えるプリミティブデータやテクスチャデータはグラフィクス／オーディオプロセサ１１４がそれを読み取るまで利用可能にされていなければならず、その後、主プロセサは次のフレームのためにデータを変更したり必要に応じてそれを削除する。また、グラフィクス／オーディオプロセサ１１４は、内蔵フレームバッファ７０２がアクティブでない外部フレームバッファ１１３へ単にコピーされ、表示コントローラ／ビデオインタフェース１６４が正しい時間に新たな外部フレームバッファの走査へ切り換え、次のフレームによる使用のために先に走査されていた外部フレームバッファを開放するように、表示コントローラ／ビデオインタフェース１６４と調和されなければならない。同期化のための他のアプリケーションは、主プロセサ１１０とグラフィクス／オーディオプロセサ１１４との間で共用される主メモリ１１２の一部のための他のメモリ等時性(memory coherence) タスクを含む。
【００３７】
実施例が提供する同期化のためのメカニズムはいわゆる「ドローダン(draw done) 」コマンドである。具体的な例では、この「ドローダン」コマンドは、好ましい実施例において、廻り込み(wrapper around)２同期化機能：「セットドローダン(set draw done) 」および「ウェイトドローダン(wait draw done)」である。この「セットドローダン」コマンドは、主プロセサ１１０とグラフィクス／オーディオプロセサ１１４との間のＦＩＦＯバッファにドローダントークン(draw-done token) を送り、そのバッファをフラッシュ(flush)する。「ウェイトドローダン」コマンドは、グラフィクスパイプライン１８０がフラッシュしかつトークンがグラフィクスパイプラインの終端に現れるのを待つ。トークンを待つのに代えて、ドローダン割込の結果として生じるコールバック(callback)を使用することもできる。このコールバックはディスエーブルされた割込とともに走り、そしてそれゆえに、素早く終了する。コールバックルーチンを設定するための関数は先のコールバック関数ポインタへリターンする。
【００３８】
上で述べた「ドローダン」同期化メカニズムに加えて、システム５０の好ましい実施例は、グラフィクスパイプライン１８０が或るコマンドの処理を完了した（たとえば、或るジオメトリが完全にレンダリングされた）ことを検出するために使用される「ドローシンク(draw sync) 」コマンドを含む。この「ドローシンク」メカニズムを用いることによって、プログラマは、たとえば、可変コンテンツトークンたとえば主プロセサ１１０の選択した１６ビット数をグラフィクスパイプライン１８０へ送ることができる。このトークンはグラフィクスパイプライン中の所定点に、この具体的な実施例では、ピクセルエンジン７００内のグラフィクスパイプラインの終端(very bottom)にそれが到達すると、トークンレジスタ７０４にストアされる。主プロセサ１１０はグラフィクス／オーディオプロセサ１１４へ付加的なコマンドを送ることによって、そのトークンレジスタ７０４を読み出す。返送されたトークンレジスタ値が主プロセサ１１４が送ったトークンと一致すると、主プロセサは、そのトークンに関連する特定のジオメトリが完全にレンダリングされたことを知る。
【００３９】
詳しくいえば、グラフィクス／オーディオプロセサはそれの同期化コマンドのレパートリに次のようなコマンドを含むことができる。
【００４０】
GXSetDrawSync(Token)
GXReadDrawSync(Token)
これらの例において、引数(argument)「Token 」は、１６ビットの未符号化(unsigned)整数値である。GXSetDrawSync コマンドに応答して、グラフィクスパイプライン１８０のハードウェアは、このコマンドが描画パイプラインの終端に達したとき、Token をトークンレジスタ７０４へ書き込む。このレジスタ７０４は、描画のプロセスをチェックするために、読み出され（たとえば、ポーリングされ）得る。好ましい実施例において、GXDrawSyncは、したがって、グラフィクスパイプライン１８０中へ数値（１６ビットトークン）を挿入し、それがグラフィクスパイプラインの終端に達したときそのトークン値を読み出すようにでき、グラフィクスパイプラインを強制的にフラッシュさせることがない（そしてグラフィクスパイプライン中の「バブル(bubble)」のアイドリングサイクルを作ることがない）。このGXReadDrawSyncコマンドはグラフィクスパイプライン１８０の終端でトークンレジスタ７０４を読み出し、そのトークン値を返送する。
【００４１】
具体的な実施例においては、割込ライン７０６がピクセルエンジン７００からプロセサインタフェース１５０へ設けられる。この割込ライン７０６はトークンレジスタ７０４およびそれの関連機能に関連する。ピクセルエンジン７００は、ピクセルエンジン７００内のトークンレジスタ７０４が上で述べた「GXSetDrawSync 」コマンドに応答してトークンを受けかつストアしたとき、この割込ライン７０６をアクティブ（たとえば、ハイレベル）にする。この割込機能は、主プロセサ１１０がピクセルエンジン７００内の別の割込制御レジスタ（図示せず）へ割込イネーブル値を書き込むことによってイネーブルされまたはディスエーブルされ得る。主プロセサ１１０はピクセルエンジン７００内の割込制御レジスタへ書き込むことによって一旦設定された割込をクリアすることができ、そして上で述べた「ReadDrawSync」コマンドを送ることによって、トークンレジスタ７０４の内容をポーリングすることができる。
【００４２】
好ましい実施例において、主プロセサ１１０上で走るアプリケーションはトークン割込コールバックを設定する「GXDrawSyncCallback」コマンドを登録することができる。このコールバックの引数は最も直近に遭遇したトークンの値である。トークンを取り損なうことができる（コールバックが動作している間グラフィクス処理は停止しない）ので、アプリケーションは、たとえば単純に値を増加させることによって、任意のトークンが取り逃されたことを推測することができる。
【００４３】
図６は上で述べたトークン同期化メカニズムを使用したフロー図の例である。図６のフロー図は、たとえば、主プロセサ１１０上で動いているアプリケーションによって実行される。具体的な例においては、アプリケーションはグラフィクスパイプライン１８０へ１つまたはそれ以上のグラフィクスコマンドを挿入し（ブロック８００）、ユニークなデータメッセージを発生し（ブロック８０２）、そして上で述べたReadDrawSyncコマンドを用いてそのユニークなデータメッセージをトークンとしてグラフィクスパイプライン中へ挿入する（ブロック８０４）。具体的な実施例においては、その挿入するトークンは、解剖されているデータ中の非演繹的テキスト要素(non-reducible textual element)、たとえば、可変ネーム，値，数，キャラクタあるいはワードを含む独特に構成されたデータオブジェクトまたはメッセージである。アプリケーションは、ピクセルエンジン７００からの割込を待つ間、他のタスクを実行する（ブロック８０６）。割込を受けると、アプリケーションは、既に述べたGetDrawSync コマンドを用いてピクセルエンジンのトークンレジスタ７０４を読み取る（ブロック８０８）。アプリケーションがトークンレジスタ７０４の内容を抽出すると、アプリケーションはその値をトークンとして送られた具体的な値と比較して、２つの値が一致するかどうかを判断する（決定ブロック８１０）。この比較が好都合ないし肯定的であるとき、アプリケーションはグラフィクスパイプライン１８０がブロック８００によるトークンより前に挿入されたコマンドの処理を終了したことを「知る」ので、アプリケーションは、次いで、グラフィクスパイプライン１８０と同期化させるに必要なタスクを実行する（ブロック８１２）。次表１は使用例である。
【００４４】
【表１】
0004808858.tif 000002
上で述べた同期化トークンは、主プロセサ１１０上で動作しているアプリケーションが任意の数の異なる同期化イベントを定義し、トークン値に基づいてこれらの同期化イベントを区別することを許容する。好ましい実施例においては、グラフィクスパイプライン１８０はトークン値を変更ないし修飾することはなく、そのために主プロセサ１１０はそれを容易に認識できる。しかしながら、他の実施例においては、グラフィクスパイプライン１８０は、それがグラフィクスパイプライン１８０中に挿入したトークンをピクセルエンジン７００で受け取ったトークン値と相互に関連付ける主プロセサ１１０の能力を破壊することなく、その値を変更するためにトークン値上に所定の関数（による計算）を実行することができる。好ましい実施例においては、トークンレジスタ７０４はグラフィクスパイプライン１８０の終端へ配置されたが、他の場所に配置されてもよく、あるいは最終完了のほかにジオメトリの完了状態をモニタする必要があれば、複数のトークンレジスタやそれに関連する割込ラインを設けることができる。
【００４５】
この同期化メカニズムの１つの有用な応用は、主プロセサ１１０がグラフィクスパイプライン１８０とは別のメモリ（たとえば主プロセサ１１０とグラフィクスパイプライン１８０との間で共用される主メモリ１１２）へ書き込みかつメモリ等時性を維持したいときである。
互換性のある他の実施例
上述のシステム５０は上で述べた家庭用ビデオゲームコンソールの構成以外としても実現できる。たとえば、或るものは、システム５０をエミュレートする異なる構成を有するプラットフォームもしくはそれと同等のものにおいて、システム５０のために書かれたグラフィクスアプリケーションや他のソフトウェアを実行させることができる。もし、他のプラットフォームがシステム５０のいくつかのもしくはすべてのハードウェアおよびソフトウェアリソースをエミュレートしシミュレートしおよび／または提供することができれば、その他のプラットフォームはそのソフトウェアを成功裏に実行することができる。
【００４６】
一例として、エミュレータがシステム５０のハードウェアおよび／またはソフトウェア構成（プラットフォーム）とは異なるハードウェアおよび／またはソフトウェア構成（プラットフォーム）を提供できる。そのエミュレータシステムは、それのためにアプリケーションソフトウェアが書かれているシステムのいくつかのもしくはすべてのハードウェアおよび／またはソフトウェアコンポーネンツをエミュレートしもしくはシミュレートするソフトウェアおよび／またはハードウェアコンポーネンツを含む。たとえば、エミュレータシステムはパソコンのような汎用ディジタルコンピュータを含み、それはシステム５０のハードウェアおよび／またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行する。上述のオーディオシステムのＤＳＰ処理がパソコンによってエミュレートされ得る。
【００４７】
或る汎用ディジタルコンピュータ（たとえばＩＢＭやマッキントッシュのパソコンおよびそれらの同等物）は、ダイレクトＸ(DirectX)または他の標準的な３ＤグラフィクスコマンドＡＰＩｓに従った３Ｄグラフィクスパイプラインを提供する３Ｄグラフィクスカードを備える。それらはまた、音声コマンドの標準的なセットに基づいて高品質のステレオ音声を提供するステレオ音声カードを備える。エミュレータソフトウェアを実行するそのようなマルチメディアのハードウェアを備えるパソコンは、システム５０のグラフィクスおよび音声性能とほぼ等しい十分な性能を有する。エミュレータソフトウェアはパソコンプラットフォーム上のハードウェアリソースを制御して、それのためにゲームプログラマがゲームソフトウェアを書いた家庭用ビデオゲームコンソールプラットフォームの処理，３Ｄグラフィクス，音声，周辺および他の能力をシミュレートする。
【００４８】
図７はホストプラットフォーム１２０１，エミュレータコンポーネント１３０３および記憶媒体６２上のゲームソフトウェア実行可能バイナリ映像を用いる全体のエミュレーション処理を図解する。ホスト１２０１は、たとえばパソコン，ビデオゲームコンソールあるいは十分な計算力を有する任意の他のプラットフォームのような汎用または特定目的ディジタル計算装置である。エミュレータ１３０３はそのホストプラットフォーム１２０１上で走るソフトウェアおよび／またはハードウェアであり、記憶媒体６２からのコマンド，データおよび他の情報のそのホスト１２０１によって実行可能な形態へのリアルタイム変換を行う。たとえば、エミュレータ１３０３は記憶媒体６２からシステム５０によって実行されるように意図された「ソース」であるバイナリ映像プログラム命令を取り込み、これらのプログラム命令をホスト１２０１によって実行されもしくは処理され得るターゲットとなる形態に変換する。
【００４９】
一例として、ソフトウェアがＩＢＭパワーＰＣまたは他の特定のプロセサを用いるプラットフォーム上での実行のために書かれかつホスト１２０１が異なる（たとえばインテル）プロセサを用いるパソコンである場合、エミュレータ１２０３は記憶媒体１３０５からの１つのもしくは一連のバイナリ映像プログラム命令を取り込み、これらのプログラム命令を１つまたはそれ以上の同等のインテルのバイナリ映像プログラム命令に変換する。エミュレータ１２０３はまたグラフィクス／オーディオプロセサ１１４によって処理されるように意図されたグラフィクスコマンドおよびオーディオコマンドを取り込みかつ／あるいは生成し、そしてホスト１２０１上で利用可能なハードウェアおよび／またはソフトウェアグラフィクス／オーディオ処理リソースによって処理され得る形態にこれらのコマンドを変換する。一例として、エミュレータ１３０３はホスト１２０１の特別なグラフィクスおよび／または音声ハードウェア（たとえば標準的なダイレクトＸ，オープンＧＬおよび／または音声ＡＰＩｓ）によって処理され得るコマンドにこれらのコマンドを変換する。
【００５０】
上で述べたビデオゲームシステムのいくつかのもしくはすべての特徴を与えるために用いられるエミュレータ１３０３は、また、エミュレータを使ってゲームを走らせている種々のオプションおよびスクリーンモードの選択を簡単化しもしくは自動化するグラフィックユーザインタフェース（ＧＵＩ）を備える。一例において、そのようなエミュレータ１３０３はさらにそのソフトウェアが本来的に目的とされたホストプラットフォームに比べてより増強された機能性を含むこともできる。
【００５１】
図８はエミュレータ１３０３で用いるに適したエミュレーションホストシステム１２０１を図解的に示す。このシステム１２０１は処理ユニット１２０３およびシステムメモリ１２０５を含む。システムバス１２０７がシステムメモリ１２０５を含む種々のシステムコンポーネンツを処理ユニット１２０３に結合する。システムバス１２０７は多様なバスアーキテクチャのいずれかを用いるメモリバスもしくはメモリコントローラ，周辺バスおよびローカルバスを含むいくつかのタイプのバス構造の任意のものである。システムメモリ１２０７はＲＯＭ１２５２およびＲＡＭ１２５４を含む。起動中においてのようにパソコンシステム１２０１中のエレメント（要素）間に情報を伝送する手助けをする基本ルーチンを含む基本入力／出力システム（ＢＩＯＳ）１２５６がＲＯＭ１２５２中にストアされる。システム１２０１はさらに種々のドライブおよび関連のコンピュータ読出可能な媒体を含む。ハードディスクドライブ１２０９が（典型的には固定の）磁気ハードディスク１２１１から読み出しそれへ書き込む。付加的な（たぶんオプションとしての）磁気ディスクドライブ１２１３が着脱可能な「フロッピィ」または他の磁気ディスク１２５１から読み出しかつそれへ書き込む。光ディスクドライブ１２１７はＣＤ−ＲＯＭあるいは他の光学媒体のような着脱自在な光ディスク１２１９から読み出しかつそれへ書き込む。ハードディスクドライブ１２０９および光ディスクドライブ１２１７は、ハードディスクドライブインタフェース１２２１および光ディスクドライブインタフェース１２２５によって、システムバス１２０７にそれぞれ接続される。これらのドライブおよびその関連するコンピュータ読出可能な媒体は、パソコンシステム１２０１のためのコンピュータ読出可能な命令，データ構造，プログラムモジュール，ゲームプログラムおよび他のデータの不揮発性の記憶媒体を提供する。他の構成では、コンピュータによってアクセス可能なデータをストアすることができる他のタイプのコンピュータ読出可能な媒体（たとえば磁気カセット，フラッシュメモリカード，ディジタルビデオディスク，ベルヌーイカートリッジ，ＲＡＭ，ＲＯＭあるいはその他のもの）がまた使用できる。
【００５２】
エミュレータ１３０３を含む多数のプログラムモジュールがハードディスク１２１１，着脱可能な磁気ディスク１２１５，光ディスク１２１９および／またはシステムメモリ１２０５のＲＯＭ１２５２および／またはＲＡＭ１２５４にストアされ得る。このようなプログラムモジュールはグラフィクス／音声ＡＰＩｓ，１つ以上のアプリケーションプログラム，他のプログラムモジュール，プログラムデータおよびゲームデータを提供するオペレーティングシステム（ＯＳ）を含む。ユーザは、キーボード１２２７，ポインティングデバイス１２２９，マイクロフォン，ジョイスティック，ゲームコントローラ，衛星アンテナ(satellite dish)，スキャナあるいはその他のもののような入力デバイスを通して、パソコンシステム１２０１にコマンドおよび情報を入力することができる。これらのそして他の入力デバイスは、システムバス１２０７に結合されたシリアルポートインタフェース１２３１を通して処理ユニット１２０３に接続され得るが、パラレルポート，ゲームポートファイヤワイヤバス(Fire Wire)もしくはユニバーサルシリアルバス（ＵＳＢ）のような他のインタフェースによって接続されてもよい。モニタまたは他のタイプの表示デバイスがまたビデオアダプタ１２３５のようなインタフェースを介してシステムバス１２０７に接続される。
【００５３】
システム１２０１はモデム１１５４またはインターネットのようなネットワーク１１５２を通しての通信を確立するための他のネットワークインタフェース手段を含む。内部もしくは外付けであってよいモデム１１５４はシリアルポートインタフェース１２３１を介してシステムバス１２３に接続される。システム１２０１がローカルエリアネットワーク１１５８を介して遠隔コンピュータ装置１１５０（たとえば他のシステム１２０１）と通信するのを許容するために、ネットワークインタフェース１１５６がまた設けられてもよい（もしくはそのような通信はダイヤルアップもしくは他の通信手段のようなワイドエリアネットワーク１１５２もしくは他の通信経路を介してもよい）。システム１２０１はプリンタのような周辺出力装置および他の標準的な周辺装置を含む。
【００５４】
一例では、ビデオアダプタ１２３５は、マイクロソフト(Microsoft)のダイレクトＸ７．０、または他のバージョンのような標準的な３Ｄグラフィクスアプリケーションプログラマインタフェースに基づいて発行された３Ｄグラフィクスコマンドに応答して、高速の３Ｄグラフィクスレンダリングを提供する３Ｄグラフィクスパイプラインチップセットを含んでもよい。１組のスピーカ１２３７はまた、バス１２０７によって与えられる音声コマンドに基づいて高品質ステレオ音声を生成するハードウェアおよび埋め込みソフトウェアを提供する従来の「音声カード」のような音声生成インタフェースを介して、システムバス１２０７に接続される。これらのハードウェア能力によって記憶媒体１３０５中にストアされているソフトウェアを再生するためにシステム１２０１に十分なグラフィクスおよび音声の速度性能を与えることができる。
【００５５】
上で言及したすべての書類を、ここで、参照によって取り入れる。
【００５６】
最も現実的かつ好ましい実施例であると現在考えられているものに関連してこの発明が説明されたが、この発明は開示された実施例に限定されるものではなく、逆に、特許請求の範囲内に含まれる種々の変形例や等価的な構成をカバーするように意図されていることを理解されたい。
【図面の簡単な説明】
【図１】図１はインタラクティブコンピュータグラフィクスシステムの実施例を示す全体図である。
【図２】図２は図１実施例のコンピュータグラフィクスシステムのブロック図である。
【図３】図３は図２に示す実施例のグラフィクス／オーディオプロセサのブロック図である。
【図４】図４は図３に示す実施例の３Ｄグラフィクスプロセサのブロック図である。
【図５】図４のグラフィクス／オーディオプロセサの例示的な論理フロー図である。
【図６】図６は同期化トークンを用いたグラフィクスパイプラインの同期化の例のフロー図である。
【図７】図７は別の互換性のある実施例を示す。
【図８】図８は別の互換性のある実施例を示す。
【符号の説明】
５０  …インタラクティブ３Ｄコンピュータグラフィクスシステム
１１０  …主プロセサ
１１２  …主メモリ
１１４  …グラフィクス／オーディオプロセサ
１８０  …グラフィクスパイプライン
５００  …テクスチャユニット
７００  …ピクセルエンジン
７０４  …トークンレジスタ
７０６  …割込ライン
【図１】
0004808858.tif 000003
【図２】
0004808858.tif 000004
【図３】
0004808858.tif 000005
【図４】
0004808858.tif 000006
【図５】
0004808858.tif 000007
【図６】
0004808858.tif 000008
【図７】
0004808858.tif 000009
【図８】
0004808858.tif 000010