(57)【要約】最終ステージ（ピクセル・レンダリング）において、サブスクリーンのピクセルを並列かつ独立に処理する、三次元（３Ｄ）グラフィックス・パイプライン。サブスクリーンタスクは共有メモリーのリストに保存されている。共有メモリーは、ピクセル・レンダリング処理に割り当てられた複数個の処理スレッドからアクセスされる。処理スレッドは、サブスクリーンタスクを順序に従って、捕捉し、ロックし、スクリーン上に表示するビットマップを生成するタスクを実行する。タスクは、頂点情報が重ねあわされている表示エリアを分割することにより、Ｍ×Ｎサブスクリーンタスクに生成される。システム分析に基づいて、ＭおよびＮの値は変化する。
2010515122.tif 000002
【特許請求の範囲】
【請求項１】
三次元（３Ｄ）グラフィックス画像に用いる頂点情報を出力する機能を有する頂点処理ステージと、
サブスクリーン・タスクリストを構成しているサブスクリーンに、出力頂点情報を重ね合わせた表示エリアのピクセルを分割する機能を有する表示のサブ分割ステージと、
サブスクリーン・タスクリストにおける複数のサブスクリーンタスクを並列にかつ独立に処理する機能を有するピクセル・レンダリング・ステージと、
を備える三次元（３Ｄ）グラフィックス・パイプライン。
【請求項２】
前記ピクセル・レンダリング・ステージは、前記複数のサブスクリーンタスクのそれぞれの一つを並列かつ独立に処理する１セットの個別処理スレッドを有するインターリーブ複数スレッド・プロセッサーを使用する、請求項１に記載のパイプライン。
【請求項３】
前記インターリーブ複数スレッド・プロセッサーは、前記頂点情報を処理する処理スレッドを含む、請求項２に記載のパイプライン。
【請求項４】
前記表示のサブ分割ステージは、前記頂点情報を処理するために使用する処理スレッドを共有する請求項３に記載のパイプライン。
【請求項５】
前記表示のサブ分割ステージは他の処理スレッドを使用する、請求項３に記載のパイプライン。
【請求項６】
前記ピクセル・レンダリング・ステージは、前記３Ｄグラフィックス画像のビットマップを生成するために、ラスター化、ブレンディング、テクスチャー処理、および陰面消去操作を含む、請求項１に記載のパイプライン。
【請求項７】
前記表示エリアは、携帯情報端末（ＰＤＡ）、パームパイロット（ｐａｌｍ  ｐｉｌｏｔ）、移動電話、携帯電話、衛星電話、ラップトップ、ノートブック、およびタブレット型ＰＣのうちの１つと関連している、請求項１に記載のパイプライン。
【請求項８】
三次元（３Ｄ）グラフィックス画像用の頂点情報を出力するために頂点オブジェクトの頂点処理を行うことと、
表示エリアに前記出力頂点情報を重ね合わせることと、
タスクリストにサブスクリーンタスクを生成するために、ピクセルを含んでいる前記表示エリアを複数個のサブスクリーンに分割することと、
前記タスクリストにおける複数個のサブスクリーンタスクのそれらのピクセルに並列かつ独立にピクセル・レンダリングを行うこと、
を含む処理方法。
【請求項９】
前記ピクセル・レンダリングのステップは、
インターリーブ複数スレッド・プロセッサーの処理スレッドにより前記タスクリストにおけるそれぞれ一つの利用可能なサブスクリーンタスクを捕捉しロックすることと、
捕捉した場合には前記それぞれ一つのサブスクリーンタスクにおけるそれらのピクセルを独立に処理することと、
前記捕捉とロックのステップ、および引き続いて利用可能となるサブスクリーンタスクそれぞれについてのインターリーブ複数スレッド・プロセッサーの他の処理スレッドによる処理ステップをくり返すこと、
のステップを含む、請求項８に記載の方法。
【請求項１０】
前記頂点処理のステップは、
前記頂点情報出力を生成するために、前記インターリーブ複数スレッド・プロセッサーの他の処理スレッドにより、前記頂点オブジェクトを処理すること、
のステップを含む、請求項９に記載の方法。
【請求項１１】
前記分割するステップは、前記他の処理スレッドを、前記頂点処理ステップと共有するステップを含む、請求項１０に記載の方法。
【請求項１２】
前記ピクセル・レンダリング・ステップは、前記３Ｄグラフィックス画像のビットマップを生成するために、前記タスクリストが空になるまで、各々のサブスクリーンタスクのそれらのピクセルのラスター化、ブレンディング、およびテクスチャー処理を行うステップを含む、請求項８に記載の方法。
【請求項１３】
前記ピクセル・レンダリング・ステップは、携帯情報端末（ＰＤＡ）、パームパイロット（ｐａｌｍ  ｐｉｌｏｔ）、移動電話、携帯電話、衛星電話、ラップトップ、ノート、およびタブレット型ＰＣのうちの一つに関連する前記表示エリアにおける表示のためのビットマップを生成するステップを含む、請求項８に記載の方法。
【請求項１４】
三次元（３Ｄ）グラフィックス画像用の頂点出力情報を生成する頂点処理と、
タスクリストにおける、ピクセルを含むサブスクリーンタスクを生成するように、重ね合わせた頂点出力情報を有する表示エリアをサブスクリーンに分割することと、
複数のサブスクリーンタスクのピクセルを並列かつ独立に処理するようにピクセル・レンダリングを行うこと、
をコンピューターに実行させる命令を含むコンピューター可読媒体を含む、コンピューター・プログラム製品。
【請求項１５】
前記ピクセル・レンダリングを行う命令は、
インターリーブ・複数スレッド・プロセッサーの一つの処理スレッドにより、前記タスクリストにおける、それぞれ一つの利用可能なサブスクリーンタスクを捕捉およびロックすることと、
前記処理スレッドにより捕捉されているとき、前記それぞれ一つのサブスクリーンタスクのそれらのピクセルを独立して処理することと、
捕捉とロック、および引き続いて利用可能となるサブスクリーンタスクそれぞれについてインターリーブ・複数スレッド・プロセッサーの他のスレッドによる処理を行うように操作可能な命令をくり返すこと、
を含む、請求項１４に記載のコンピューター・プログラム製品。
【請求項１６】
前記頂点処理のための命令は、
前記頂点情報出力を生成するために、前記インターリーブ・複数スレッド・プロセッサーのもう一つの処理スレッドを使用して頂点処理するように、
操作可能な命令を含む、請求項１５に記載のコンピューター・プログラム製品。
【請求項１７】
前記分割するための命令は、前記もう一つの処理スレッドを頂点処理のための命令と共有する命令を含む、請求項１６に記載のコンピューター・プログラム製品。
【請求項１８】
前記コンピューター可読媒体は、無線通信デバイスの共有プロセッサー可読媒体を含む、請求項１７に記載のコンピューター・プログラム製品。
【請求項１９】
前記ピクセル・レンダリングを行うための命令は、３Ｄグラフィックス画像のビットマップを生成するために、それぞれのサブスクリーンタスクにおけるピクセルに対してラスター化、ブレンディング、およびテクスチャー処理を行う命令を含む、請求項１４に記載のコンピューター・プログラム製品。
【請求項２０】
複数の処理スレッドを有するディジタル信号処理プロセッサーと、
前記複数の処理スレッドによりアクセスされる共有メモリーと、
頂点出力情報を重ね合わせた表示エリアのピクセルの一部分を含むサブスクリーンタスクであって、前記共有メモリーに保存されたサブスクリーン・タスクリスト内の複数のサブスクリーンタスクにおけるピクセルを並列かつ独立に処理することにより、専用のグラフィックス・アクセラレーターを使わずに、ピクセル・レンダリングを可能とした処理手段、
を備える無線通信装置。
【請求項２１】
前記装置は、携帯情報端末（ＰＤＡ）、パームパイロット（ｐａｌｍ  ｐｉｌｏｔ）、移動電話、携帯電話、衛星電話、ラップトップ、ノートブック、およびタブレット型ＰＣうちの一つを含む、請求項２０に記載の装置。
【発明の詳細な説明】
【背景】
【０００１】
Ｉ．    分野
本発明は、一般に画像処理に関するものであり、特に、専用のハードウエア・グラフィックス・アクセラレーターを使わずに、高速ピクセル・レンダリング処理を提供するための三次元（ｔｈｒｅｅ−ｄｉｍｅｎｓｉｏｎａｌ）（３Ｄ）グラフィックス・パイプライン技術に関するものである。
【０００２】
ＩＩ．    背景
３Ｄ物体に関する情報を、表示できるビットマップに変換することはピクセル・レンダリングとして知られている。この変換には、かなり大きなメモリーと処理能力とを必要とする。過去には、３Ｄグラフィックスは高性能なワークステーションでのみ利用可能であった。現在では、３Ｄグラフィックス・アクセラレーターが大半のパーソナルコンピューター（ＰＣ）に使われている。ハードウエア・グラフィックス・アクセラレーターでは、メモリー（例えば命令ランダム・アクセス・メモリー（ｉｎｓｔｒｕｃｔｉｏｎ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）（ＩＲＡＭ））と専用のマイクロプロセッサーを用いて、３Ｄレンダリングの大半を処理している。デスクトップ・コンピューター向けのＯｐｅｎ  ＧＬ（Ｒ）（注：「（Ｒ）」は、○内にＲが入った文字を意味する。以下同様。）  （Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）では、３Ｄおよび２Ｄのコンピューター・グラフィックスを生成するアプリケーション・プログラムとのインターフェイス（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ：ＡＰＩ）を定義している。このＡＰＩは、プリミティブ（ｐｒｉｍｉｔｉｖｅ）から複雑な三次元のシーンを描画する数百の機能を有している。
【０００３】
Ｏｐｅｎ  ＧＬ（Ｒ）  ＥＳは、ソフトウエアとグラフィックスとのインターフェイスを形成するｄｅｓｋｔｏｐ  Ｏｐｅｎ  ＧＬ（Ｒ）のサブセットである。ソ。この３Ｄグラフィックス・エンジン（Ｏｐｅｎ  ＧＬ（Ｒ）  ＥＳ）は通常、二つの部分から構成される。第１の部分は、頂点を処理する機能を有し、一般に、ディジタル信号処理プロセッサー（ＤＳＰ）のファームウエア中に構成される。第２の部分は、ピクセル・レンダリングを行う機能を有しており、専用ハードウエアグラフィックス・アクセラレーターとして構成される。ピクセルのレンダリングを実行する機能を含んでいる第２の部分は、従来の３Ｄグラフィックス・エンジンのパイプラインの最終段である。パイプラインの最終段では、入力された三角形のセットを処理し、グラフィック・イメージのピクセル表示を作り出す。しかしながら、パイプラインの最終段は、一般に、エンジンにおける３Ｄグラフィックス・パイプライン全体の性能のボトルネックとなる。したがって、ピクセル・レンダリングを行うパイプラインの最終段の性能（ピクセル／秒）を改善することは極めて重要である。
【０００４】
一般に、ピクセル・レンダリング操作を行っている間、入力された三角形のデータは、三角形のデータが入力された順に、連続して処理する必要がある。このため、マルチスレッドを持つプロセッサーを使っても、入力された三角形を処理するのに、インターリーブ並列処理を利用することができない。
【０００５】
さらに、ハードウエアのグラフィック・アクセラレーターは、一般に、柔軟ではなく、容易に変更可能ではない。このように、ハードウエアで構成したグラフィック・アクセラレーターでは、新しい機能を追加したり、より高いバージョンの３Ｄグラフィクス規格（たとえばＯｐｅｎＧＬ（Ｒ）ＥＳ  １．０，１．１  …）を使えるようにしたり、異なるアプリケーション・プログラムの設定を使えるようにしたり、要求仕様にあわせたりすることは簡単にはできない。さらに、ハードウエア・グラフィック・アクセラレーターでは、シリコンコストおよびシステムの消費パワーを最適化するために、種々の性能要求（フレーム・レート、スクリーンサイズ、ピクセル・レート、三角形レート等）を満たすように変更することはそんなに簡単ではない。
【０００６】
容易に理解できるように、専用ハードウエアのグラフィックス・アクセラレーターは、携帯用パソコンや携帯電話のような小型の携帯型コンピューター機器に使うシリコン面積を占める。したがって、専用ハードウエアで構成したグラフィックス・アクセラレーターを携帯型コンピューター機器に使うと、専用ハードウエアのグラフィックス・アクセラレーターとＩＲＡＭが必要なため、携帯型コンピューター機器全体のコストが増加してしまう。専用ハードウエアのグラフィックス・アクセラレーターを使うと、さらに、オーバーヘッドを加え、パワーを消費するＤＳＰとのデータのやり取りが生じる。
【０００７】
したがって、専用ハードウエアのグラフィックス・アクセラレーターを使わずに、さらに高速のピクセル・レンダリング処理を提供する、三次元（３Ｄ）グラフィックス・パイプラインに係わる技術が必要とされている。
【発明の概要】
【０００８】
専用ハードウエアのグラフィックス・アクセラレーターを使わずに、より高速のピクセル・レンダリング処理を提供する、三次元（３Ｄ）グラフィックス用パイプラインに関する技術について、以下に説明をする。一つの実施例では、三次元（３Ｄ）グラフィックス用パイプラインは、３Ｄグラフィックス画像用の頂点情報を出力することができる頂点情報処理ステージを含んでいる。表示のサブ分割ステージ（ｓｕｂ−ｄｉｖｉｄｉｎｇ  ｓｔａｇｅ）では、その上に重ね合わせた出力頂点情報がある表示エリアに複数のピクセルを分割し、サブスクリーンとする。そのサブスクリーンがサブスクリーン・タスクリストを形成する。ピクセル・レンダリング・ステージでは、サブスクリーン・タスクリストにおける複数のサブスクリーンタスクを並列にかつ独立に処理する。
【０００９】
別の態様において、無線機器には、複数の処理スレッドを有するディジタル信号処理プロセッサー、複数の処理スレッドからアクセスされる一つの共有メモリー、と一つのプロセッサーがある。共有メモリーに記憶されたサブスクリーン・タスクリストに存在する、複数のサブスクリーンタスクにおいてピクセルに対する処理を並列かつ独立に行うことにより、このプロセッサーは、専用のグラフィックス・アクセラレーターを使わずに、ピクセル・レンダリング処理を行うことができる。サブスクリーンタスクは、重ね合わされた頂点出力情報がある表示エリアのピクセルの一部を含んでいる。
【００１０】
本発明の種々の態様や実施例は、さらに、詳細に下で説明される。
【００１１】
本発明の態様と実施例は、後述の発明の詳細な説明と、同一の参照文字が全体にわたってそれに相当するものとして識別する図面と組み合わせて理解することにより、さらに明確になるであろう。
【図面の簡単な説明】
【００１２】
【図１】３Ｄ画像処理装置の一般的なブロック・ダイアグラムを示す。
【図２】共有メモリーとのインターフェイスを持つ、インターリーブ・複数スレッド・プロセッサーを示す。
【図３】各スレッドの詳細が示されたインターリーブ・複数スレッド・プロセッサーの詳細を示す。
【図４】６個のスレッドを有するマルチスレッド・プロセッサーにより処理されるインターリーブ命令のコア・パイプライン対実行時間のグラフを示す。
【図５】２つのスレッドで処理される２つの並列命令を示す。
【図６】典型的な３Ｄ画像処理装置における、３Ｄグラフィックス・パイプラインの一般的な処理の流れ図を示す。
【図７】３Ｄグラフィックス・パイプラインのプロセスの一般的な構成図を示す。
【図８Ａ】Ｍ×Ｎのグリッド（Ｍ＞１、Ｎ＞１）にサブ分割した表示エリア示す。
【図８Ｂ】、図８Ａのサブ分割した表示エリアを処理するためにタスクリストを示す。
【図９】Ｍ×Ｎのグリッド（Ｍ＝１、Ｎ＞１）にサブ分割した表示エリアを示す。
【図１０】Ｍ×Ｎのグリッド（Ｍ＞１、Ｎ＝１）にサブ分割した表示エリアを示す。
【図１１】複数個のピクセルの頂点座標により定義された三角形を示す。
【図１２】あるエリアの三角形を、４個のサブ分割されたエリアの組にサブ分割する処理のために実行する命令のグラフ表示を示す。
【図１３】複数スレッド・プロセッサーを使用した３Ｄグラフィック・パイプライン方法のフローチャートを示す。
【発明の詳細な説明】
【００１３】
ここにおいて、“典型的な”という言葉は、“実例、事例、一例である”という意味で使っている。本明細書に“典型的”として示されている実施例や設計例は、他の実施例や設計例と比較して、必ずしもより好ましく、有利なものと解釈する必要はない。
【００１４】
多くのゲームアプリケーションでは、二次元（２Ｄ）空間（例えばディスプレイのスクリーン）上に、３Ｄ物体を表示する三次元（３Ｄ）グラフィックスアプリケーションを必要とする。２Ｄグラフィックのピクセルは、位置および色と明るさの特性を有するのに対して、３Ｄのピクセルでは、仮想のＺ軸軸上でピクセルがどこに存在するのかを示す、奥行き（ｄｅｐｔｈ）の特性が加わる。３Ｄピクセルが各々それ自身の奥行き値に結合されるので、テクスチャー（ｔｅｘｔｕｒｅ）が形成される。
【００１５】
ここで、図１を参照すると、番号１０で一般に指定している３Ｄ表示装置の実施例が示される。３Ｄ表示装置１０は、通信装置１２、ディジタル信号プロセッサー（ＤＳＰ）２０、表示エリア１８を含むスクリーン１６、メモリー２４、および入出力（Ｉ／Ｏ）ユニット４５を含んでいる。共有メモリー２４は、ユーザーにより望まれるような、または装置１０の機能セットをサポートするために、ゲームアプリケーションやその他のアプリケーション（すなわち、有線および無線ネットワークにおける双方向通信やその他のソフトウエア・アプリケーション）を記憶することができる。入出力ユニット４５は、キーパッド、キーボードまたはデータ通信ポートから構成することができる。スクリーン１６は、その表示エリア１８に２Ｄ情報および３Ｄグラフィックスを表示することができる。
【００１６】
３Ｄ画像処理装置１０は、携帯情報端末（ＰＤＡ）や、移動（ｍｏｂｉｌｅ）電話、携帯電話または衛星電話、ラップトップ、ノートブック、タブレット型ＰＣ、パームパイロット（ｐａｌｍ  ｐｉｌｏｔ）、無線通信機器などの内の一つを含み得る。
【００１７】
ここで図２−５を参照すると、典型的な実施例においては、ＤＳＰ２０はインターリーブ・複数スレッド・プロセッサー（ｉｎｔｅｒｌｅａｖｅｄ  ｍｕｌｔｉ−ｔｈｒｅａｄｉｎｇ  ｐｒｏｃｅｓｓｏｒ）２２を含んでいる。インターリーブ・複数スレッド・プロセッサー２２は複数の処理スレッド（ＰＴ）ＰＴ１，ＰＴ２，  ．．．ＰＴＸを有している。それぞれの処理スレッド（ｐｒｏｃｅｓｓｉｎｇ  ｔｈｒｅａｄｓ：ＰＴ）ＰＴ１，ＰＴ２，  ．．．ＰＴＸは、共有メモリー２４で表示した、同一のメモリーを共有する。それぞれの処理スレッド１，  ．．．Ｘは、それぞれに対応付けられた命令２６１．．．２６Ｘ、コア２７１．．．２７Ｘ（処理ユニット）およびレジスターファイル２８１．．．２８Ｘを含んでいる。各コアの出力２７１．．．２７Ｘは、共有メモリー２４と通信する。命令２６１．．．２６Ｘは、この後に定義を示す操作、および、３Ｄ画像処理装置１０のマルチメディアようなの機能セットを実行するための他の操作を実行するためのプログラミング・コードを含んでいる。コア２７１．．．２７Ｘは、命令２６１．．．２６Ｘを実行する。
【００１８】
レジスターファイル２８１．．．２８Ｘは一組の汎用レジスターであり、ＤＳＰ２０またはマイクロプロセッサーの中心となるステージである。これらのレジスターファイル２８１．．．２８Ｘは、すべてのオペランド（一般にメモリーから読み出される）を保持している。すなわち、処理結果を共有メモリー２４に保存するまでは、全ての処理（演算処理、ロジック処理など）により得た結果を保持している。
【００１９】
いくつかのＤＳＰアーキテクチャーは４個のスレッドを持つ。しかしながら、ＤＳＰ２９は、（限定されずに）並列動作する６個のスレッドのごとく、４個より多くのスレッドを持っていてもよい。典型的な実施例では、それぞれの処理スレッド（ＰＴ）ＰＴ１，ＰＴ２，  ．．．ＰＴＸは、並列に、一秒間に１億回（１００ＭＩＰＳ）の命令パケットを供給する。それぞれの命令パケットは、４個の命令、２個の命令（Ｓｕｐ−スカラー）、あるいは単に１個の命令を含む。しかしながら、ＤＳＰ２０のアーキテクチャーは、命令相互間のデータ依存性によって生じる、効率低下を除去するので、１個の命令は、効率の点で薦められない。
【００２０】
スレッドおよびマルチスレッディングという言葉は、同時に実行されるタスクを説明するために使われる用語である。単一パスの実行に代わって、プログラム（操作）は複数個の同時に実行するスレッドに分けることができる。典型的な実施例において、  関数呼出し（あるいは命令）を必要とし、通常の場合には、少なくとも２個の引数（ａｒｇｕｍｅｎｔ）：（１）開始命令のアドレス；（２）コンテキスト引数、を必要とする開始スレッドがある。スレッドが操作中および（または）終了するときは、そのスレッドは、他の処理スレッドに関して、２つの基本的なジョブ：（１）共有リソースを獲得し、他のスレッドにそのリソースを使わせない；（２）メッセージ（行われた（ｄｏｎｅ）、準備ができている（ｒｅａｄｙ）等）を他のスレッドに確実に伝える、を実行できるようにする必要がある。
【００２１】
次に、図４には、インターリーブ複数スレッド並列処理の図を示す。この例では、６個の処理スレッドＰＴ１、ＰＴ２、ＰＴ３、ＰＴ４、ＰＴ５、ＰＴ６が存在する。最初の処理スレッドＰＴ１は、最初の命令セット１を処理する。これは、コア・パイプラインに対する実行時間ラインで、最初（一番上）の列に示されている。コア・パイプラインは、コア２７１，．．．２７Ｘにより示されている。最初の命令セット１が１番目の処理スレッドＰＴ１により処理されている間に、２番目の処理スレッドＰＴ２はその最初の命令セット１を処理する。これは、実行時間ラインの２列目に示されている。このようにして、最初の命令セット１は並列に処理される。
【００２２】
１番目と２番目の処理スレッド、ＰＴ１，ＰＴ２が、最初の命令セット１を実行している間に、３番目の処理スレッドＰＴ３は、最初の命令セット１を処理する。これは、コア・パイプラインに対する実行時間ラインで、３行目に示されている。ついで、４番目の処理スレッドＰＴ４が、その最初の命令セット１を処理する。この時、１番目、２番目、３番目のスレッドＰＴ１，ＰＴ２，ＰＴ３は、それぞれに与えられた、最初の命令セット１の処理を継続している。これは、コア・パイプラインに対する実行時間ラインで、４列目に示されている。
【００２３】
１番目、２番目、３番目、４番目のスレッドＰＴ１，ＰＴ２，ＰＴ３，ＰＴ４が、それぞれに与えられた、最初の命令セット１の処理を継続している間に、５番目の処理スレッドＰＴ５が、その最初の命令セット１を処理する。これは、コア・パイプラインと実行時間ラインで、５列目に示されている。１番目、２番目、３番目、４番目、５番目のスレッドＰＴ１，ＰＴ２，ＰＴ３，ＰＴ４，ＰＴ５が、それぞれに与えられた、最初の命令セット１の処理を継続している間に、６番目の処理スレッドＰＴ６が、その最初の命令セット１を処理する。これは、コア・パイプラインに対する実行時間ラインで、６列目に示されている。このように、処理スレッドによる命令の処理はインターリーブされている。
【００２４】
次に、図４の７番目（最後）の列を参照すると、最初の処理スレッドＰＴ１は最初の命令セット１を終了したとすると、最初の処理スレッドＰＴ１は２番目の命令セット２を開始する。一方、２番目、３番目、４番目、５番目、６番目の処理スレッド、ＰＴ２、ＰＴ３、ＰＴ４、ＰＴ５、ＰＴ６は、それぞれの命令セット１の処理を継続している。したがって、それぞれの処理スレッドＰＴ１，ＰＴ２．．．ＰＴＸは、並列に、かつインターリーブされている。
【００２５】
全てのスレッドについてのインターリーブ処理を説明するのは、ひどく手間がかかる。そこで、説明の目的のために、命令２６１、２６２を用いたインターリーブ処理はミューテックス（ｍｕｔｅｘ）に関わるものとして図５に示される。このミューテックスは、同一時刻に、ただ一つの制御スレッドにより「所有される（ｏｗｎｅｄ）」ツールである。ある処理スレッドがあるミューテックスの権限を得ようとするときには、そのスレッドはそのミューテックスをロックする。これに対して、そのミューテックスが既にロックされている場合には、その処理スレッドは停止される。所有している処理スレッドがロックを解除すると、処理を停止していたスレッドは処理を再開し、そのミューテックスの所有権（ｏｗｎｅｒｓｈｉｐ）を得る。この処理は図５に示される。
【００２６】
１番目の処理スレッドＰＴ１から開始する場合に、非重要コード（ｎｏｎ−ｃｒｉｔｉｃａｌ  ｃｏｄｅ）であるステップＳ２２Ａの命令２６１が実行される。ステップＳ２２Ａに引き続いて、ステップＳ２４Ａが実行される。そこにおいては、最初の処理スレッドＰＴ１がミューテックス１をロックする命令（ミューテックス１はロック解除されているものと仮定）を実行する。このようにして、最初の処理スレッドＰＴ１は、この時点で、ミューテックス１を所有する。ステップＳ２４Ａに後に、重要コード（ｃｒｉｔｉｃａｌ  ｃｏｄｅ）が実行されるステップＳ２６Ａが続く。ステップＳ２６Ａの後に、ステップＳ２８Ａが続く。そこでは重要コードの実行が終了した後に、最初の処理スレッドＰＴ１が、ミューテックス１のロックを解除する命令を実行する。その後、最初の処理スレッドＰＴ１は、ステップＳ３０Ａで非重要コードの実行を再開する。
【００２７】
１番目の処理スレッドＰＴ１と並列に、２番目の処理スレッドＰＴ２が命令２６２を、非重要コードが実行されるステップＳ２２Ｂから開始する。ステップＳ２２Ｂに続いて、ステップＳ２４Ｂが実行される。このステップＳ２４Ｂで、２番目の処理スレッドＰＴ２がミューテックス１をロックすることを望む。しかしながら、ミューテックス１はロックされた状態になっている。したがって、ステップＳ２８Ａにおいて、１番目の処理スレッドＰＴ１がミューテックス１をロック解除するまで、２番目の処理スレッドＰＴ２の動作は停止される。引き続いて、重要コードが実行され得るステップＳ２６Ｂが開始される。Ｓ２６Ｂの後にステップＳ２８Ｂが続く。そこでは重要コードの処理が終了した後、２番目の処理スレッドＰＴ２が、ミューテックス１のロック解除する命令を実行する。他の命令が引き続いて実行され得る。
【００２８】
ミューテックスまたは他のトークンツールは、必要とされる場合にのみ、異なる処理スレッド間で重要な部分の順次実行を保証するために使用される。これは、さらに、他の処理スレッドによるコードの実行と衝突する場合に、あるコードは並列に処理することができないことを意味する直列化実行である。共有メモリー２４（共有リソース）が使用されるので、ミューテックス・ツールは、有用である。
【００２９】
次に図６、図７を参照すると、一般に番号１００で指定された３Ｄグラフィックス・パイプラインの一般的なフローと構成の一実施例が示される。３Ｄグラフィックス・パイプライン１００は、スクリーン（ｓｃｒｅｅｎ）１６の表示エリア（ｄｉｓｐｌａｙ  ａｒｅａ）１８における、３Ｄ表示のタスク全体を、一般に、３つのパイプライン・ステージ（頂点処理（ｖｅｒｔｅｘ  ｐｒｏｃｅｓｓｉｎｇ：ＶＰ）ステージ１１０、スクリーンのサブ分割（ｓｃｒｅｅｎ  ｓｕｂ−ｄｉｖｉｄｉｎｇ：ＳＳＤ）ステージ１３０、およびピクセル・レンダリング（ｐｉｘｅｌ  ｒｅｎｄｅｒｉｎｇ：ＰＲ）ステージ１４０）に分割する。動作において、頂点処理（ＶＰ）ステージ１１０は、ＯｐｅｎＧＬ（Ｒ）またはＯｐｅｎＧＬ（Ｒ）ＥＳに従って既にインプリメントされている全ての関数またはその関数のサブセットを含んでおり、ディジタル信号処理プロセッサー（ＤＳＰ）２０により処理される。スクリーン１６への線は、スクリーン１６が３Ｄグラフィックス・パイプライン１００の一部ではないので、二点鎖線で示されている。
【００３０】
ＶＰステージ１１０は、モデルビュー変換操作（ｍｏｄｅｌ  ｖｉｅｗ  ｔｒａｎｓｆｏｒｍ  ｏｐｅｒａｔｉｏｎ）１１２、プロジェクション操作（ｐｒｏｊｅｃｔｉｏｎ  ｏｐｅｒａｔｉｏｎ）１１４、カリング操作（ｃｕｌｌｉｎｇ  ｏｐｅｒａｔｉｏｎ）１１６、ライトニングとカラーリング操作（ｌｉｇｈｔｉｎｇ  ａｎｄ  ｃｏｌｏｒｉｎｇ  ｏｐｅｒａｔｉｏｎ）１１８、プリミティブ組み立て操作（ｐｒｉｍｉｔｉｖｅ  ａｓｓｅｍｂｌｙ  ｏｐｅｒａｔｉｏｎ）１２０、クリッピング（ｃｌｉｐｐｉｎｇ）（すなわちユーザー定義のクリッピング）操作１２２、遠近法による分割およびビューポート操作（ｐｅｒｓｐｅｃｔｉｖｅ  ｄｉｖｉｓｉｏｎ  ａｎｄ  ｖｉｅｗｐｏｒｔ  ｏｐｅｒａｔｉｏｎ）１２４を含んでいる。ＶＰステージ１１０におけるこれらの操作それぞれは、ＯｐｅｎＧＬ（Ｒ）またはＯｐｅｎＧＬ（Ｒ）ＥＳにおいて、適切に定義されている。
【００３１】
一般に、モデルビュー変換操作１１２では、オブジェクト・モデルを所望の位置および方向に配置するために、演算操作を使用する。プロジェクション操作１１４では、近くにある物体を大きく、遠くにある物体を小さくする、演算操作を使用する。オクルージョン（ｏｃｃｌｕｓｉｏｎ）では、近くにある物体を遠くにある物体の前に描く。カリング（ｃｕｌｌｉｎｇ）操作１１６とクリッピング操作１２２では、見えない物を取り除く。ライトニング（ｌｉｇｈｔｉｎｇ）操作１１８では、表面に対する光の影響を計算する。
【００３２】
典型的な実施例では、ＶＰステージ１１０は一つの処理スレッド（図２、図３）により構成できる。頂点出力情報は、表示エリア１６における三角形の形状とその場所とを規定する頂点の情報を含んでいる。表示エリア１６において、頂点出力情報は、表示エリア１６におけるピクセルが、ＯｐｅｎＧＬ（Ｒ）、ＯｐｅｎＧＬ（Ｒ）ＥＳまたは他のグラフィクス・ライブラリーに従って、三角形を指定する頂点出力情報を含んでいるように、重ねられる。
【００３３】
スクリーンサブ分割（ｓｃｒｅｅｎ  ｓｕｂ−ｄｉｖｉｄｉｎｇ：ＳＳＤ）ステージ１３０は、表示エリア１８をＭ×Ｎのサブスクリーンに分割する、スクリーンサブ分割操作１３２を含んでいる。表示エリア１８は、頂点出力情報を重ね合わせた、複数個のピクセルＰ（図１１）から構成されている。ＶＰステージ１１０からの頂点情報により、表示エリア１８に重ね合わせるために、三角形（たとえば図８ＡのＴ１、Ｔ２）を定義する頂点情報（たとえば図１１のＶ１、Ｖ２、Ｖ３）が与えられる。頂点情報は、頂点の座標とそのエッジ情報を含み得る。一般に、それぞれの三角形の頂点出力情報は、単に閉じた領域を定義する数学的表現のセットである。この数学的表現のセットは、共有メモリー２４に記憶されていて、それぞれの処理スレッド（ＰＴ１，ＰＴ２，…ＰＴＸ）は、それ自身のサブスクリーンタスク内の各ピクセルＰ（図１１）を計算するために、かつ、そのピクセルが三角形の中に含まれているかどうかを判定するためにこの数学的表現のセットを使用することができる。
【００３４】
図８Ａは、表示エリア１８に重ね合わせる頂点出力情報を示している。スクリーンサブ分割（ＳＳＤ）ステージ１３０の間に、表示エリア１８を構成するピクセルを、図８Ｂにもっとも良く示されるように、Ｍ×Ｎのサブスクリーンタスクに分割または組分けることにより、表示エリア１８はサブ分割される。Ｍ×Ｎのサブスクリーンのタスクは、共有メモリー２４に記憶される、Ｍ×Ｎの独立したタスクとなる。ＳＳＤステージ１３０の操作は、ＶＰステージ１１０の間に使用される処理スレッドから離れている処理スレッドを使用することによって実行することができる。あるいは、ＳＳＤステージ１３０の操作は、同じ処理スレッドでＶＰステージ１１０の操作と組み合わせることができる。
【００３５】
図８Ａに示す実施例では、表示アリア１８はＭ×Ｎのサブスクリーンに分割される。ここで、１個のグリッドを作成するために、Ｍ＞１およびＮ＞１。説明の目的のために、図９は、Ｍ×Ｎのサブスクリーンに分割された表示エリア１８’を示している。ここでＭ＝１およびＮ＞１。矢印は、走査、すなわちワークフローの方向を示している。図１０を参照して、表示エリア１８”は、Ｍ×Ｎのサブスクリーンに分割されている。ここでＭ＞１およびＮ＝１。このように、表示エリア１８”のサブスクリーンは、一連のカラムを形成する。
【００３６】
ピクセル・レンダリング（ＰＲ）・ステージ１４０は、ラスター化（ｒａｓｔｅｒｉｚａｔｉｏｎ）、ブレンディング（ｂｌｅｎｄｉｎｇ）、テクスチャー（ｔｅｘｔｕｒｅ）アプリケーション操作１４２および陰面消去操作（ｈｉｄｄｅｎ  ｓｕｒｆａｃｅ  ｒｅｍｏｖａｌ  ｏｐｅｒａｔｉｏｎ）１４４を含んでいる。しかしながら、ピクセル・レンダリング・ステージ１４０は、ＯｐｅｎＧＬ（Ｒ）またはＯｐｅｎＧＬ（Ｒ）ＥＳで規定されている、その他の操作を含めることができる。ＰＲステージ１４０は、ＶＰステージ１１０からの３Ｄ物体（ｏｂｊｅｃｔ）に関する情報を、スクリーン１６上の表示エリア１８に表示することのできる、ビットマップに変換する。ＰＲステージ１４０では、入力された三角形のセットを処理し、３Ｄグラフィックス画像のピクセル表現を作り出す。
【００３７】
典型的なピクセル・レンダリング（ＰＲ）・ステージは、最初に、頂点出力情報のリストから１つの三角形を取り出す。次に、ＰＲステージは、表示エリアの１つのピクセルを取り出し、そのピクセルがその三角形の中にあるかどうかを確かめるために三角形に対するピクセルを計算するだろう。評価の下のピクセルが三角形の中にある場合には、ＰＲステージは、そのピクセルに、その三角形に対応する色を使ってカラーリング（ｃｏｌｏｒｉｎｇ）を行う。評価の下のピクセルが三角形の中にない場合には、そのピクセルはスキップされる。次に、ＰＲステージは、表示エリア１８にある次のピクセルの処理をするだろう。ＰＲステージは、すべてのピクセルが、三角形に対して評価され、あるいは処理されてしまうまで、以上の処理を、表示エリア内の他のピクセルに対して繰り返す。このように、ピクセルは１個ずつ処理をされる。
【００３８】
ついで、典型的なＰＲステージは、頂点出力情報のリストにある、次の三角形に移り、現在の三角形に対するピクセルの評価をくり返す。
【００３９】
ＰＲステージ１４０は、複数のサブスクリーンあるいはサブスクリーンタスクについて同様に動作する。違いは、サブスクリーンは評価と処理をするピクセルの数が少ないことであり、そして、複数のサブスクリーンは、処理スレッド（ＰＴ１，ＰＴ２，…ＰＴＸ）により、独立にかつ並列に処理されることが可能なことである。したがって、ＰＲステージ１４０における処理時間は、それぞれのサブスクリーンのピクセル数が少なく、複数のサブスクリーンを並列に処理（それぞれの処理スレッドが、それぞれのサブスクリーン内のピクセルについての処理を独立に行う）できるので、典型的なＰＲステージよりはるかに迅速である。
【００４０】
典型的な実施形態において、ＰＲステージ１４０は、インターリーブ複数スレッド・プロセッサー２２の１セットの多重処理スレッド、ＰＲ１，ＰＲ２，…ＰＲＸを使って処理される。ＰＲステージ１４０で使われる、スレッドのセットの数は、２または２より大きく、最大値はＸである。
【００４１】
実際の動作では、ピクセル・レンダリング・ステージ１４０に割り当てられた各処理スレッド、ＰＲ１，ＰＲ２，…ＰＲＸは、タスクリスト１３５から処理可能なサブスクリーンタスクを捕捉し、そしてタスクリスト１３５からそれを除去する。処理スレッドのセット、ＰＲ１、ＰＲ２、…ＰＲＸは、インターリーブ・並列処理により、入力三角形を、サブスクリーンのピクセルにレンダリング（入力された三角形の情報をサブスクリーンに表示するビットマップに変換）するために処理する。それぞれ一つの処理スレッドが、捕捉したサブスクリーンタスクのピクセル・レンダリング処理を完了した後、その処理スレッドは、タスクリスト１３５内の次に処理可能なサブスクリーンタスクに移る。この操作は、全てのサブスクリーンが処理されるまで繰り返され、そしてピクセル・レンダリング・ステージ１４０は完了する。
【００４２】
インターリーブ・複数スレッド・プロセッサー２２は、複数スレッド処理を拡張可能かつ均質にすることができる。操作
【数１】
2010515122.tif 000003
【００４３】
は次の式で定義される。
【数２】
2010515122.tif 000004
【００４４】
図１２を参照すると、単一の三角形Ｔがある４個のサブスクリーンのブロックが、ピクセル・レンダリングのために示される。操作
【数３】
2010515122.tif 000005
【００４５】
は、三角形Ｔのサブ分割された部分（ｉ）を有する４個のサブスクリーン（ｉ）各々に対して、サブスクリーンタスクＳ１１、Ｓ１２、Ｓ２１、Ｓ２２を処理する。したがって、操作
【数４】
2010515122.tif 000006
【００４６】
は、サブスクリーンＳ１１に対する処理
【数５】
2010515122.tif 000007
【００４７】
に、サブスクリーンＳ１２に対する処理
【数６】
2010515122.tif 000008
【００４８】
、サブスクリーンＳ２１に対する処理
【数７】
2010515122.tif 000009
【００４９】
、およびサブスクリーンＳ２２に対する処理
【数８】
2010515122.tif 000010
【００５０】
を加えた操作になる。全ての操作
【数９】
2010515122.tif 000011
【００５１】
が並列に実行されるとすると、ピクセル・レンダリング・ステージ１４０を実行する際の、全体としてのピーク性能は、一つのスレッドのピーク性能に使用している処理スレッドの数を乗じた値となる。サブスクリーンＳ１１は、三角形Ｔのピクセルのサブ分割部分Ｔ１を有している。サブスクリーンＳ１２は、三角形Ｔのピクセルのサブ分割部分Ｔ２を有している。サブスクリーンＳ２１は、三角形Ｔのピクセルのサブ分割部分Ｔ３を有している。サブスクリーンＳ２２は、三角形Ｔのピクセルのサブ分割部分Ｔ４を有している。図示の目的のために、スレッドの数は４である。したがって、この例における全体の性能は、一つの処理スレッドの性能に処理スレッドの数を乗じた値となる。このように、ＰＲステージ１４０は、複数のサブスクリーンのピクセルを並列に処理する能力による、高速ピクセル・レンダリング・ステージである。
【００５２】
さらに、ＭおよびＮの数は、実際のアプリケーションでのプロファイリングの後に、適切な値に設定することができる。そのため、種々の状況に対して、さらに性能を最適化することができる。ＭおよびＮの値の設定は、別の次元でのより大きな柔軟性（ｆｌｅｘｉｂｉｌｉｔｙ）とスケーラビリティ（ｓｃａｌａｂｉｌｉｔｙ）を提供する。プロファイリングは、処理スレッドのローディングを識別すること（ティックカウント（ｔｉｃｋ  ｃｏｕｎｔ））または処理タスクの大きさや複雑さを識別することを含んでいる。プロファイリングは、さらに、共有メモリー２４からのデータ転送量および共有メモリー２４のメモリー容量に関連するパラメーター等の、他の構成要素についての評価を含むことができる。プロファイリングおよび調節により、フレーム・レート、スクリーンサイズ、ピクセル・レート、三角形のレート等は、ＭおよびＮの値を変更または変化させ、および／または、ＰＲステージ１４０において使用される処理スレッドＰＲ１、ＰＲ２、…ＰＲＸの数を変化させるために使用され得るだろう。残っている処理スレッドＰＲ１、ＰＲ２、…ＰＲＸは、同時に動作している他のアプリケーション、例えば、ゲーム−オーディオに使用される。
【００５３】
次に図１３を参照すると、３Ｄグラフィックス・パイプライン１００に用いる、３Ｄグラフィックス・パイプライン方法２００のフローチャートが示される。方法２００は、頂点処理を実行し、頂点出力情報を生成するステップＳ２０２から開始する。ステップ２０２の次にステップ２０４が続き、そこでは頂点出力情報が重ね合わせて表示されている表示エリア１８が、Ｍ×Ｎのサブスクリーンにサブ分割される。例えば、図８Ａにおいて最も良く見られるように、三角形Ｔ１がサブスクリーンＳ１１、Ｓ２１、Ｓ２２にまたがって展開していて、図８Ｂに示されるように、それぞれのサブ分割部分Ｔ１１，Ｔ１２，Ｔ１３にサブ分割されている。このように、図８Ｂのタスクリスト１３５は、三角形Ｔ１，Ｔ２（説明目的のために三角形を２個だけを示した）のサブ分割された部分を示す。認識することができるように、三角形とは関連付けられていない、または、三角形のサブ分割した小さい部分を有する、頂点出力情報によるタスクリスト１３５におけるそれらのエントリは、より迅速に処理され得る。したがって、ピクセル・レンダリング・ステージ１４０が、表示エリア１８に三角形の３Ｄイメージの標本を表示する前に、三角形のすべてのサブ分割部分の処理が完了している必要がある。
【００５４】
ステップＳ２０４にステップＳ２０６が続く。そこでは、三角形のサブ部分を持っているか、持っていないサブスクリーンタスクが生成され、タスクリスト１３５に置かれる。ステップＳ２０６にステップＳ２０８１，Ｓ２０８２，およびＳ２０８Ｙが続く。ここで、Ｙは、ピクセル・レンダリング・ステージ１４０で使われている処理スレッドのセットにおける数（２またはより多くの）である。ステップＳ２０８１では、第１の処理スレッド（以下、スレッド１と呼ぶ）は、（最初の）利用可能なサブスクリーンタスク（図８Ｂ）を得て、ステップＳ２１０１でサブスクリーンタスクにおける各ピクセルを処理する（特に、タスクに関係する三角形または三角形の一部分の内部か内側にあると決定されたそれらのピクセル）。ステップＳ２１０１にステップＳ２１２１が続く。そこでは、タスクリスト１３５が終了であるかどうかを判定する。判定が、“ＹＥＳ”であれば、スレッド１による処理は終了する。その逆に、判定が“ＮＯ”である場合、ステップＳ２１２１からステップＳ２０８１に戻る。２番目の処理スレッド（以下、スレッド２と呼ぶ）の操作は、本質的にはスレッド１と同じである。スレッド２は、タスクリスト１３５における、次の利用可能なサブスクリーンタスクを得るか、または捕捉する。ステップＳ２０８２にステップＳ２１０２が続く。そこでは、サブスクリーンタスクを実行する。ステップＳ２０８２にステップＳ２１０２が続く。ステップＳ２１０２にステップＳ２１２２が続く。ステップＳ２１２２において、タスクリスト１３５にさらにタスクがあるかどうかを判定する。ステップＳ２１２２における判定が“ＮＯ”であると、この方法は終了する。一方に、判定が“ＹＥＳ”であると、ステップＳ２１２２からステップＳ２０８２に戻る。
【００５５】
ステップＳ２０８Ｙは、スレッドＹにより、Ｙ番目のサブスクリーンタスクを得るか、捕捉する。ステップＳ２０８Ｙに、ステップＳ２１０Ｙが実行される。Ｓ２１０Ｙでは、サブスクリーンタスクが処理される。ステップＳ２１０ＹにステップＳ２１２Ｙが続く。そこでは、タスクリスト１３５にタスクがあるかどうかを判定する。判定が“ＮＯ”であると、この方法は終了する。反対に、判定が”ＹＥＳ”であると、ステップＳ２１２ＹからステップＳ２０８Ｙに戻る。
【００５６】
ステップＳ２１０１，Ｓ２１０２およびＳ２１０Ｙの間に実行される処理は、ラスター化、ブレンディング、テクスチャー・アプリケーション操作１４２、および陰面消去処理１４４である。特に図１１に示すように、中央に点を有する正方形はピクセルＰを示している。ピクセルＰのうちいくつかは、三角形Ｔ１１の内側に存在するが、一方、いくつかのピクセルは、Ｔ１１の外側に存在する。頂点Ｖ１、Ｖ２、Ｖ３は、それぞれ、スムースシェーディングが付けられたカラー値を持つ。それぞれのピクセルＰにおけるカラー値を計算するために線形補間が使用される。頂点情報Ｖ１、Ｖ２、Ｖ３は、三角形Ｔ１１を形成するために、および、表示エリア１８の内にこの三角形を位置決めするために使用される。正方形の中央に黒の点で示される、それぞれのピクセルの中心で、カラー値は計算される。種々のパラメーターは、Ｚ方向の深さ（Ｚ−ｄｅｐｔｈ）、アルファ（ａｌｐｈａ）、フォッグ（ｆｏｇ）、テクスチャー（ｔｅｘｔｕｒｅ）を含んで、書き加えられる。
【００５７】
再度、図２−４を参照する。この例では、６個のスレッド、ＰＴ１，ＰＴ２、ＰＴ３、ＰＴ４、ＰＴ５、ＰＴ６がある。最初のスレッドＰＴ１は、ＶＰステージ１１０を処理するのに使うことができる。２番目のスレッドＰＴ２はＳＳＤステージ１３０を処理するのに使うことができる。残りのスレッド、ＰＴ３、ＰＴ４、ＰＴ５、ＰＴ６は、タスクリスト１３５からのサブスクリーンタスクを並列に処理するのに使うことができる。ここでは、処理スレッドＰＴ３は、最初に利用可能なサブスクリーンタスク１，１を得て、捕捉した最初のサブスクリーンタスク１，１のピクセルを処理するだろう。処理スレッドＰＴ４は、次の（２番目の）利用可能なサブスクリーンタスク１，２を得て、捕捉したサブスクリーンタスク１，２のピクセルを処理するだろう。処理スレッドＰＴ５は、次の（３番目の）利用可能なサブスクリーンタスク１，３（ここでは、Ｍは３より大きいものと仮定する。）を得て、捕捉したサブスクリーンタスク１，３のピクセルを処理するだろう。
【００５８】
Ｍの値を４とすると、処理スレッドＰＴ６は、次の（４番目の）実行可能なサブスクリーンタスク１，Ｍを得て、捕捉したサブスクリーンタスク１，Ｍのピクセルを処理するだろう。処理スレッド、ＰＴ３、ＰＴ４、ＰＴ５、ＰＴ６が、それらの各サブスクリーンタスクを終了すると、タスクリスト１３５が空になるまで追加のサブスクリーンタスクは捕捉され、並列に処理されるだろう。
【００５９】
一つの処理スレッドが３Ｍピクセル／秒のレンダリングを実行する場合、一つのピクセルの処理をするのに、およそ３０個の命令パケットを必要とすることになる。ピクセル１個について平均１００命令である。６個中２個の処理スレッドをＶＰステージ１１０およびＳＳＤステージ１３０に割り当てて、残りの４個の処理スレッドをピクセル・レンダリングの実行に割り当てると、専用ハードウエアによるグラフィックス・アクセラレーターを用いた場合の４倍の性能（１２Ｍピクセル／秒）となるＶＧＡの分解能をサポートするだろう。
【００６０】
全ての処理スレッドが同じメモリー２４を共有しているので、処理スレッドは、ミューテックス・ツールを使って、非常に効率良く（重複せずに）、入力三角形データの同じセット（サブスクリーンタスク）をすべて処理することができる。
【００６１】
ピクセル・レンダリング・ステージ１４０は、３Ｄグラフィックス・パイプライン１００の中で、最後のパイプライン・ステージである。このＰＲステージ１４０は入力三角形リストを処理して３Ｄグラフィックス・イメージのピクセル表示を生成する。以上で説明した、３Ｄグラフィックス・パイプライン１００は、ＰＲステージ１４０の性能（ピクセル／秒）を改善する。インターリーブ・複数スレッド・プロセッサー２２は、タスクリスト１３５を処理するために並列に動作する処理スレッド数の倍数だけ、性能を向上させる。
【００６２】
３Ｄグラフィックス・パイプライン・アーキテクチャーの利点は、ＭおよびＮの値の調節を可能にする、柔軟性にある。ＭおよびＮの値を大きくすることにより、ピクセル・レンダリング・ステージ１４０における、ＭＩＰＳの要求値を小さくする。それぞれのサブスクリーンが小さくなるので、レンダリング・タスクは簡単になる。この結果、複数個の処理スレッドの性能を向上することを助長する。この処理スレッドは、オーディオのような他の並列処理のアプリケーションにも使用することができる。
【００６３】
容易に理解することができるように、また、ここに開示した、３Ｄグラフィックス・イメージのレンダリングをソフトウエアによる構成は、専用のグラフィックス・アクセラレーターを用いたハードウエアによる構成よりも、高い性能を持つ。グラフィックス・アクセラレーターのハードウエア構成と比較して、ここに説明した実施例は、柔軟性があり、かつ、拡張性がある。実施例は柔軟であるので、新しい機能を追加するためにソフトウエアコードを拡張すること、高水準の３Ｄグラフィックス規格（例えば、ＯｐｅｎＧＬ  ＥＳ  １．０，１．１  ．．．）をサポートすること、および、種々のアプリケーション構成やカスタム要求をサポートすることが容易である。実施例の拡張性のある特徴は、種々の性能要求（フレーム・レート、スクリーンサイズ、ピクセルのレート、三角形のレート等）を満たすことが可能であり、シリコンコストおよびシステムの消費電力を最適化することができる。
【００６４】
本実施例は、さらに、同じ性能を得るために、クロックスピードが、数ＧＨｚのハイエンド・プロセッサーを使わずに、低価格の低消費電力のプロセッサーを使ったソフトウエア構成の使用も可能にする。
【００６５】
典型的な実施例において、ここで説明されたたプロセスや方法は、ハードウエア、ソフトウエア、ファームウエア、またはこれらの任意の組み合わせにより、コンピューターで実行可能な１つ以上の命令から構成されたコンピューター・プログラム製品の形で実現される。ソフトウエアで構成された場合には、コンピューター・プログラム製品は、コンピューター記憶媒体かコンピューター通信媒体を含むコンピューター可読媒体上に記憶されるか、伝送され得る。
【００６６】
“コンピューター記憶媒体”という言葉は、ここにおいては、方法をコンピューターで実行させる命令を、記憶するために使われる、任意のメディアを指す。限定ではなく一例として、コンピューター記憶媒体は、電子記憶素子（例えば、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ等）、光記憶素子（例えば、コンパクト・ディスク（ＣＤ）、ディジタル多用途ディスク（ＤＶＤ）等）、磁気記憶素子（例えば、ハード・ドライブ、フラッシュ・ドライブ、テープ・ドライブ等）やその他のコンピューター・プログラム製品を記憶するのに適合した記憶素子を含む固体記憶素子、およびこのような記憶素子の組み合わせを含み得る。
【００６７】
“コンピューター通信媒体”という用語は、ここにおいては、例えば、変調された搬送波、光信号、ＤＣまたはＡＣ電流等の手段を使用して、ある場所から他の場所にコンピューター・プログラム製品を伝送するのに適合した、任意の物理的インターフェイスを表す。限定ではなく一例として、コンピューター通信媒体は、ツイストペア線、プリント配線ケーブル、フラットケーブル、同軸ケーブル、光ファイバーケーブル、ディジタル加入者線（ｄｉｇｉｔａｌ  ｓｕｂｓｃｒｉｂｅｒ  ｌｉｎｅ：ＤＳＬ）やその他の有線および無線、光の直列／並列インターフェイスまたはそれらの組み合わせを含み得る。
【００６８】
開示された実施例についての以上の説明は、当業者が、開示されたものを作成したり、利用したりすることができるように提供されている。実施例に関する種々の変更は、当業者とっては、容易に類推できるものであろう。ここに定義されている一般的な原理は、この開示の精神や範囲から乖離することなく、他の実施例にも適用される得るものである。以上のように、この開示は、ここに記載された実施例に限定されるものではなく、ここに開示されている、原理と新規な特徴と矛盾しない最も広い範囲に権利を与えられるべきものである。
【図１】
2010515122.tif 000012
【図２】
2010515122.tif 000013
【図３】
2010515122.tif 000014
【図４】
2010515122.tif 000015
【図５】
2010515122.tif 000016
【図６】
2010515122.tif 000017
【図７】
2010515122.tif 000018
【図８Ａ】
2010515122.tif 000019
【図８Ｂ】
2010515122.tif 000020
【図９】
2010515122.tif 000021
【図１０】
2010515122.tif 000022
【図１１】
2010515122.tif 000023
【図１２】
2010515122.tif 000024
【図１３】
2010515122.tif 000025
【国際調査報告】
2010515122.tif 000026
2010515122.tif 000027