(57)【要約】   システム、方法及び装置は開示される。その中で処理ユニットは、グラフィックスパイプラインの外側のグラフィックスパイプラインデータ上で２次処理を実行するように構成され、２次処理からの出力は、グラフィックスパイプラインに利用可能になるようにグラフィックスパイプラインに統合されている。２次処理を使用するかどうかについて決定が行われる。そして、２次処理が使用されるべきである場合、１つ以上のコマンドを備えることができるコマンドストリームは、２次処理ユニットに提供されるので、そのユニットは、バッファに入れられたグラフィックスパイプラインデータ上で動作し、位置付けることができる。２次処理は、グラフィックスパイプライン処理モジュールとともに２次処理ユニットによるデータアクセスを同期させるように監視され、管理される。
2011505633.tif 000002
【特許請求の範囲】
【請求項１】
ドロー要求に応じて、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有することと、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求することと、
前記割り付け要求が成功した場合に、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にすることと、
前記処理ユニットの処理ステータスを監視することと、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することと
を具備する、方法。
【請求項２】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、請求項１に記載の方法。
【請求項３】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、請求項１に記載の方法。
【請求項４】
前記処理ユニットがその１次処理機能を実行しているかどうかを決定することと、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付けることと
を更に具備する、請求項１に記載の方法。
【請求項５】
前記割り付け要求が成功した場合に、前記方法は、前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成することを更に具備する、請求項１に記載の方法。
【請求項６】
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別することと、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定することと、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせることと
を更に備える、請求項１に記載の方法。
【請求項７】
グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、
前記グラフィックス処理ユニットに結合されている２次処理マネージャとを具備し、
前記２次処理マネージャは、
前記２次処理マネージャに結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するように構成され、前記処理ユニットが１次処理機能を有し、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求するように構成され、
前記割り付け要求が成功した場合に、前記２次処理マネージャは、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、
前記処理ユニットの処理ステータスを監視し、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する
ように更に構成されている、装置。
【請求項８】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、請求項７に記載の装置。
【請求項９】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、請求項７に記載の装置。
【請求項１０】
前記２次処理マネージャに結合されている割り付け器を更に具備し、前記割り付け器は、
前記前記処理ユニットがその１次処理機能を実行しているかどうかを決定し、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける
ように構成されている、請求項７に記載の装置。
【請求項１１】
前記割り付け要求が成功した場合に、前記２次処理マネージャは、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成するように更に構成されている、請求項７に記載の装置。
【請求項１２】
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するように構成されている前記２次処理マネージャは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別し、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定し、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせる
ように更に構成されている、請求項７に記載の装置。
【請求項１３】
コンピュータ実行可能なプログラムコードが記憶されているコンピュータ読み取り可能なメモリ媒体であって、前記プログラムコードは、
ドロー要求に応じて、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有し、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求し、
前記割り付け要求が成功した場合に、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、
前記処理ユニットの処理ステータスを監視し、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する
ためのコードを備える、コンピュータ読み取り可能なメモリ媒体。
【請求項１４】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、請求項１３に記載の媒体。
【請求項１５】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、請求項１３に記載の媒体。
【請求項１６】
処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するための前記プログラムコードは、
前記処理ユニットがその１次処理機能を実行しているかどうかを決定するためのコードを更に備える、請求項１３に記載の媒体。
【請求項１７】
前記処理ユニットがその１次処理機能を実行しているかどうかを決定し、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける
ためのプログラムコードを更に備える、請求項１３に記載の媒体。
【請求項１８】
前記割り付け要求が成功した場合に、前記プログラムコードは、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成するためのコードを更に備える、請求項１３に記載の媒体。
【請求項１９】
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するためのプログラムコードは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別し、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定し、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせる
ためのプログラムコードを更に備える、請求項１３に記載の媒体。
【請求項２０】
グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、
前記グラフィックス処理ユニットに結合されている２次処理管理手段とを具備し、
前記２次処理管理手段は、
前記２次処理管理手段に結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有する手段と、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求する手段と
を備え、
前記割り付け要求が成功した場合に、前記２次処理管理手段は、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にする手段と、
前記処理ユニットの処理ステータスを監視する手段と、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する手段と
を更に備える、装置。
【請求項２１】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、請求項２０に記載の装置。
【請求項２２】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、請求項２０に記載の装置。
【請求項２３】
前記２次処理管理手段に結合されている割り付け手段を更に具備し、前記割り付け手段は、
前記処理ユニットがその１次処理機能を実行しているかどうかを決定する手段と、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける手段と
を備える、請求項２０に記載の装置。
【請求項２４】
前記割り付け要求が成功した場合に、前記２次処理管理手段は、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成する手段を更に具備する、請求項２０に記載の装置。
【請求項２５】
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する手段は、
１つ以上のグラフィックパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別する手段と、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定する手段と、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックパイプライン処理モジュールをさせる手段と
を備える、請求項２０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、グラフィック処理システムにおける並列処理に関し、特に、グラフィックス処理ユニット及び中央処理ユニットのような、他の処理ユニットに関して２次プロセッサの使用を同期させてこのような２次プロセッサによって処理されるデータをグラフィックス処理パイプラインに再統合することを含む、並列にグラフィックス処理を実行することに関する。
【背景技術】
【０００２】
グラフィックス処理ユニット（ＧＰＵ）は、表示デバイス上での表示のためにコンピュータ化されたグラフィックスを生成するのに使用される専用のグラフィックスレンダリングデバイスである。ＧＰＵは、汎用中央処理ユニット（ＣＰＵ）とともに典型的に使用され、グラフィック画像データ、例えば、３次元のコンピュータ化されたグラフィック画像データを処理する。そのような場合、ＧＰＵは、多数の基本要素グラフィックスオペレーションを実行し、ＣＰＵを使用するよりも速く表示デバイス上で表示するための３次元画像を生成し、表示デバイス上で表示するために画像を描くことができる。典型的には、ＧＰＵは、ハードウェアにおいて若干の複雑なアルゴリズムを実行するハードウェアを含む。
【０００３】
典型的なＧＰＵは、画像ジオメトリーを受け取り、パイプラインアプローチを使用して、例えば、表示デバイス上で表示のために出力することができるグラフィックスを生成する。典型的なグラフィックスパイプラインは、並列して動作する多数のステージを含み、１つのステージからの出力はおそらくパイプライン中の別のステージで使用される。例えば、典型的なグラフィックスパイプラインは、頂点シェーダ、基本要素アセンブリ、ビューポート変換、基本要素セットアップ、ラスター化、隠れた基本要素及びピクセル消去、属性セットアップ、属性補間及びフラグメントシェーダのステージを含む。
【０００４】
頂点シェーダは、画像のための画像ジオメトリーに適用され、画像ジオメトリー内で頂点の頂点座標及び属性を生成する。頂点属性は、例えば、頂点と関連づけられた色、法線及びテクスチャ座標を含む。基本要素アセンブリは、画像ジオメトリーに基づいて、頂点から、基本要素、例えば、点、線、及び三角形基本要素を形成する。変換を用いて、例えば正規化されたデバイス空間からスクリーン空間へ基本要素を変換するビューポート変換を用いて、形成された基本要素は、ある空間から別の空間に変換することができる。基本要素セットアップは、基本要素の領域、エッジ係数を決定し、オクルージョンカリング（例えば、バックフェースカリング）及び３−Ｄクリッピングオペレーションを実行するために用いることができる。
【０００５】
ラスター化は、基本要素内での頂点のＸＹ座標と基本要素に含まれるピクセル数とに基づいて、基本要素をピクセルに変換する。隠れた基本要素及びピクセル消去は、基本要素及び／またはピクセルのｚ座標を使用し、隠されることが決定されたこれらの基本要素及びピクセル（画像フレームにおいて別の基本要素またはピクセルの後に配置されている基本要素またはピクセル、透明な基本要素またはピクセル）を決定して、消去する。属性セットアップは、基本要素内でピクセルと関連づけられた属性に対して、属性勾配、例えば水平の（Ｘ）方向または垂直の（Ｙ）方向のいずれか一方において動く基本要素内で、第１のピクセルでの属性値及び第２のピクセルでの属性値間の差を決定する。属性補間は、決定された属性勾配値に基づいて、基本要素内のピクセル上にわたる属性を補間する。補間された属性値は、ピクセルレンダリングのためにフラグメントシェーダに送られる。フラグメントシェーダの結果は、表示デバイス上での処理された画像のプレゼンテーションのために、後の処理ブロック及びフレームバッファに出力することができる。
【０００６】
増加されたスループットを達成するためにグラフィックスパイプライン処理を促進することは有益である。グラフィックスパイプラインの一部を実行するソフトウェアを最適化することによってスループットを増加するために努力がされている。しかしながら、最適化されたプログラムコードを生成するのにかなりのプログラマの労力及び時間を典型的に必要とするので、このようなアプローチはコストがかかる。増加されたスループットは、専用のハードウェアを用いて達成されるかもしれない。しかしながら、このようなアプローチは、専用のハードウェアのための付加的なコストを必要とする。そのハードウェアは、専用の目的のために使用されるためだけに利用可能である。
【概要】
【０００７】
本開示は、技術的な欠点を取り扱い、このような処理と関連づけられたデータ依存を識別し、このようなデータ依存を満足させるために２次処理ユニットによって生成された出力をグラフィックス処理パイプラインに統合するために、グラフィックス処理ユニット及び／または中央処理ユニットのような、他の処理ユニットによって実行される処理を補足するために、２次処理ユニットを使用してグラフィックス処理パイプラインにおいてグラフィックス処理を実行してグラフィックス画像処理において効率を提供しようと努める。
【０００８】
システム、方法及び装置が開示されている。その中で処理ユニットは、グラフィックスパイプラインの外側のグラフィックスパイプラインデータ上で２次処理を実行するように構成され、２次処理からの出力はグラフィックスパイプラインに利用可能になるようにグラフィックスパイプラインに統合されている。２次処理を使用するかどうかについて決定が行われる。そして、２次処理が使用されるべきである場合、１つ以上のコマンドを含むことができるコマンドストリームは２次処理ユニットに提供されるので、そのユニットは、バッファに入れられたグラフィックスパイプラインデータ上に位置付けられ、グラフィックスパイプラインデータ上で動作することができる。２次処理は、グラフィックスパイプラインにおいて１つ以上の処理モジュール及び２次処理によるデータアクセスを同期させるように管理され、監視される。
【０００９】
本開示の実施形態に従うと、グラフィックス処理パイプラインとともに２次処理ユニット、すなわち２次プロセッサを使用するための機会は識別され、グラフィックスパイプラインデータは２次処理ユニットに利用可能になる。２次処理ユニットによって生成されたグラフィックスパイプラインデータは、グラフィックスパイプラインに再統合される。制限しない例として、２次プロセッサは、デジタル信号プロセッサである。デジタル信号プロセッサは、グラフィックスパイプラインからデジタル信号プロセッサに利用可能になった色データからｌｉｔ色を生成するように照射処理モジュールとして構成されている。
【００１０】
そうすることにおいて、本開示の実施形態は、利用可能な２次プロセッサを使用して処理負荷のバランスを保たせるための能力を提供する。そうでなければアイドルであるままであるかもしれない２次プロセッサを使用して、グラフィックス処理ユニットによって実行されるグラフィックスパイプライン処理及び／または中央処理ユニット、すなわち他の処理ユニットによって実行される処理を促進することができる。したがって、例えば、そうでなければ処理リソースを待つかもしれない動作は、利用可能な２次プロセッサに向けることができる。これは、より速いスループットになる。２次プロセッサが使用されていない処理上で２次プロセッサを使用して、例えばフレーム／秒において測定されるスループットにおいて増加があるということが測定されていることは有利なことである。更に、本開示の実施形態は、２次処理からフィードバックされた情報を使用して、負荷のバランス処理を実行することができる。フィードバックを使用して、例えば、いつ２次プロセッサがあるしきい値処理レベルに達しているかを決定することができる。２次プロセッサがしきい値処理能力に達することを決定されている場合、処理は、中央処理ユニットのような、別の処理ユニットに向けるができる。
【００１１】
更に、本開示の実施形態は、その１次処理目的以外のために処理ユニットを使用し、このような処理ユニットが利用可能である場合に１つ以上の他の２次機能を実行する能力を提供する。そうでなければアイドルであるかもしれないこのようなハードウェア、例えば処理ユニットの使用は、そのハードウェアのより効率的な使用となる。
【００１２】
本開示の１つの観点に従うと、方法は、ドロー要求に応じて、処理ユニットがグラフィックパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有することと、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記２次プロセッサの割り付けを要求することと、前記割り付け要求が成功した場合に、グラフィックスパイプラインデータを前記処理ユニットに利用可能にすることと、前記処理ユニットによる処理のステータスを監視することと、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することとを具備する。
【００１３】
本開示の別の観点に従うと、プログラムコードを記憶するコンピュータ読み取り可能なメモリ媒体が提供され、前記プログラムコードは、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有し、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記２次プロセッサの割り付けを要求し、前記割り付け要求が成功した場合に、グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、前記処理ユニットによる処理のステータスを監視し、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するためのコードを備える。
【００１４】
本開示の別の観点に従うと、装置は、グラフィックスパイプラインを実行するように構成されている処理ユニットと、前記グラフィックス処理ユニットに結合されている２次処理マネージャとを具備し、前記２次処理マネージャは、前記２次処理マネージャに結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するように構成され、前記処理ユニットが１次処理機能を有し、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記２次プロセッサの割り付けを要求するように構成され、前記割り付け要求が成功した場合に、前記２次処理マネージャは、グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、前記処理ユニットによる処理のステータスを監視し、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するように更に構成されている。
【００１５】
本開示の更に別の観点に従うと、装置は、グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、前記グラフィックス処理ユニットに結合されている２次処理管理手段とを具備し、前記２次処理管理手段は、前記２次処理マネージャに結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有する手段と、グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記２次プロセッサの割り付けを要求する手段とを備え、前記割り付け要求が成功した場合に、前記２次処理管理手段は、グラフィックスパイプラインデータを前記処理ユニットに利用可能にするための手段と、前記処理ユニットによる処理のステータスを監視する手段と、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するための手段とを更に備える。
【００１６】
この簡潔な概要は、発明の性質が速く理解されるように提供されている。発明のより完全な理解は、付属の図に関するその好ましい実施形態の以下の詳細な記述への言及によって得ることができる。
【図面の簡単な説明】
【００１７】
本開示の上述されている特徴及び目的は、添付の図と併用される以下の記述に関してより明白になるであろう。そこで、同様な参照数字は、同様な要素を示す。
【図１】図１は、本開示の１つ以上の実施形態に従って使用するための例示的なデバイスを示すブロック図である。
【図２】図２は、本開示の１つ以上の実施形態に従って使用されるコンポーネント及びコンポーネント間通信を含むブロック図を示す。
【図３Ａ】図３Ａは、本開示の１つ以上の実施形態に従って２次処理管理モジュールを実現するプログラムコードプロセスフローを示す。
【図３Ｂ】図３Ｂは、本開示の１つ以上の実施形態に従って２次処理管理モジュールを実現するプログラムコードプロセスフローを示す。
【図４】図４は、本開示の１つ以上の実施形態に従って２次処理インタフェースモジュールを実現するプログラムコードプロセスフローを示す。
【図５】図５は、本開示の１つ以上の実施形態に従って使用するための同期プログラムコードプロセスフローを示す。
【図６Ａ】図６Ａは、本開示の１つ以上の実施形態に従った同期例を提供する。
【図６Ｂ】図６Ｂは、本開示の１つ以上の実施形態に従った同期例を提供する。
【図７】図７は、本開示の１つ以上の実施形態に従って２次処理モジュールに転送される構成メッセージに含まれる情報の例を提供する。
【図８】図８は、本開示の１つ以上の実施形態に従ってフィードバック２１６Ａ中に記憶させることができる情報の例を提供する。
【図９】図９は、本開示の１つ以上の実施形態に従ってコマンドストリーム及びコマンドストリームに含まれる１つ以上のコマンドの例示的な内容を示す。
【詳細な説明】
【００１８】
本開示のある実施形態を、前述の図に関してこれから議論する。ここで、同様の参照数字は、同様のコンポーネントを参照している。
【００１９】
１つ以上の実施形態に従って、システム、方法及び装置が開示されている。２次プロセッサユニットは、グラフィックスパイプラインデータ上で動作するように構成されている。グラフィックスパイプラインにおいて実行する１つ以上のモジュールに出力が利用可能になるように、２次プロセッサからの出力は、グラフィックスパイプラインに統合されている。このような実施形態に従うと、２次プロセッサを使用するかどうかについて決定が行われる。そして、２次プロセッサが使用されるべきである場合、コマンドストリームが、２次プロセッサに提供される。例えば、コマンドストリームは、１つ以上のコマンドを含むことができる。２次プロセッサに提供される各々のコマンドは、現在のコマンドを識別する情報を含む。別のコマンドがある場合、現在のコマンドは、次のコマンドを識別する情報を含む。現在のコマンドが最後のコマンドである場合、現在のコマンドは、最後のコマンドとして現在のコマンドを識別するための情報を含む。コマンドストリームは、２次プロセッサに情報を提供する。そして、この情報は、これらに制限されないが、入力及び／または出力データ記憶位置、及びフィードバック記憶位置を含むことができる。
【００２０】
１つ以上の実施形態に従うと、２次プロセッサは、デジタル信号プロセッサ（ＤＳＰ）である。ＤＳＰは、１次処理を実行するように、例えばオーディオ及び／またはビデオデータを処理するように構成可能であり、２次処理を実行するように構成することができる。１つ以上のこのような実施形態では、ＤＳＰは、オーディオ及び／またはビデオデータ処理を実行するために利用可能であるように共有され、利用可能である場合、例えばオーディオ／ビデオデータを処理していない場合に、グラフィックスパイプライン処理を支援することができる。単純化するためだけに、ここで開示されている実施形態は、ＤＳＰとして第２のプロセッサを参照して記述されている。本開示の実施形態とともに、任意のプロセッサ、すなわち処理ユニットを使用できることは明白である。
【００２１】
図１は、本開示の１つ以上の実施形態に従って使用するための例示的なコンピューティングデバイス１００を示すブロック図である。例示的なコンピューティングデバイス１００は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、ビデオゲームプラットフォームまたはコンソール、セル式のまたは衛星の無線電話、地上通信線電話、インターネット電話、携帯用のビデオゲームデバイスまたは携帯情報端末のようなハンドヘルドデバイス、パーソナルミュージックプレイヤー、サーバ、中間のネットワークデバイス、メインフレームコンピュータ、すなわちグラフィカル情報を出力する別のタイプのデバイスを含むことができる。
【００２２】
図１の例において、コンピューティングデバイス１００は、中央処理ユニット（ＣＰＵ）１０２、ＧＰＵ１０４、２次プロセッサの例として、ＤＳＰ１０８、ディスプレイユニット１２４、及びメモリモジュール１１６、例えばランダムアクセスメモリ（ＲＡＭ）メモリモジュールを含む。コンピューティングデバイス１００のコンポーネント、例えばＣＰＵ１０２、ＧＰＵ１０４、ＤＳＰ１０８及びメモリモジュール１１６は、バス１０６を用いて通信することができる。バスは、今知られているまたは後で発見される任意のタイプのバスまたはデバイス相互接続を含むことができる。ＣＰＵ１０２は、汎用または専用マイクロプロセッサを含むことができる。例えば、ＣＰＵ１０２は、親会社がＵＫのケンブリッジのＡＲＭホールディングスＰＬＣであり、ＣＡのＩｒｖｉｎｅを含む、世界中の様々な位置にオフィスを有する、ＡＲＭ社によって設計されている縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサを含むことができる。更に制限しない例として、ＣＰＵ１０２は、カリフォルニアのサンタクララのインテル（登録商標）社によって提供されているコア２プロセッサまたは別のタイプのマイクロプロセッサを含むことができる。ＧＰＵ１０４は、専用のグラフィックコンピューティングデバイスである。ＧＰＵ１０４は、例えば、ＣＡのサニーヴェールのＡＭＤによって提供されているＩｍａｇｅｏｎメディアコプロセッサ（Imageon media co-processor）または別のタイプのグラフィック処理ユニットである。ＧＰＵ１０４は、例えば、コンピューティングデバイス１００のマザーボードに実装することができ、コンピューティングデバイス１００のマザーボードのポートにインストールされるグラフィックスカード上に存在させることができ、またはそうでなければコンピューティングデバイス１００と同時に使用するように構成することができる。
【００２３】
コンピューティングデバイス１００に結合されているディスプレイユニット１２４は、例えば、モニタ、テレビ、投影デバイス、液晶ディスプレイ、プラズマディスプレイパネル、発光ダイオード（ＬＥＤ）アレイ、陰極線管ディスプレイ、電子ペーパー、表面伝導型電子放出素子ディスプレイ（ＳＥＤ）、レーザーテレビディスプレイ、ナノクリスタルディスプレイ（nanocrystal display）、または別のタイプのディスプレイユニットを含むことができる。図１の例において、ディスプレイユニット１２４は、コンピューティングデバイス１００の一部とすることができる。例えば、ディスプレイユニット１２４は、携帯電話のスクリーンとすることができる。代替的に、例えば、コンピュータデバイス１００に対して外側にすることができ、ディスプレイユニット１２４は、例えば、有線または無線通信接続あるいは他の接続を介してコンピューティングデバイス１００と通信することができる。制限しない例として、ディスプレイユニット１２４は、有線または無線接続を経てパーソナルコンピュータに接続されるコンピュータモニタまたはフラットパネルディスプレイとすることができる。
【００２４】
ソフトウェアアプリケーション１１０は、制限しない例として、ビデオゲーム、グラフィカルユーザインタフェースエンジン、あるいは、技術または芸術のアプリケーションのためのコンピュータ支援設計プログラムのような、ＣＰＵ１０２によって実行することができる任意のソフトウェアアプリケーション、あるいは、２次元または３次元グラフィックスを使用する別のタイプのソフトウェアアプリケーションを含むことができる。ＣＰＵ１０２がソフトウェアアプリケーション１１０を実行しているとき、ソフトウェアアプリケーション１１０は、制限しない例として、ＯｐｅｎＶＧ ＡＰＩ、ＯｐｅｎＧＬ ＡＰＩ、Ｄｉｒｅｃｔ３Ｄ ＡＰＩ、グラフィックスデバイスインタフェース（ＧＤＩ）、Ｑｕａｒｔｚ、ＱｕｉｃｋＤｒａｗ、または別のタイプの２Ｄまたは３Ｄのグラフィックス処理ＡＰＩのうちの任意の１つ以上のもののような、グラフィックス処理アプリケーションプログラミングインタフェース（ＡＰＩ）１１２のサブルーチンを呼び出すことができる。
【００２５】
少なくとも１つの実施形態に従うと、ソフトウェアアプリケーション１１０がグラフィックス処理ＡＰＩ１１２のサブルーチンを呼び出すとき、グラフィックス処理ＡＰＩ１１２は、ＧＰＵドライバ１１４の１つ以上のサブルーチンを呼び出す。ＧＰＵドライバ１１４は、コンピューティングデバイス１００上のＣＰＵ１０２によって実行する。ＧＰＵドライバ１１４は、例えば、グラフィックス処理ＡＰＩ１１２及びＧＰＵ１０４の間にインタフェースを提供する１組のソフトウェア及び／またはファームウェア命令を含むことができる。グラフィックス処理ＡＰＩ１１２がＧＰＵドライバ１１４のサブルーチンを呼び出すとき、ＧＰＵドライバ１１４は、表示可能なグラフィックス情報をＧＰＵ１０４に発生させるコマンドを生成し、発行する。例えば、グラフィックス処理ＡＰＩ１１２がグラフィックス基本要素のバッチを描く、すなわちレンダリングするためにＧＰＵドライバ１１４のサブルーチンを呼び出すとき、ＧＰＵドライバ１１４は、ＧＰＵ１０４に処理コンフィギュレーションを供給する。ＧＰＵ１０４は、グラフィックス基本要素のバッチをレンダリングするために処理コンフィギュレーションを使用する。ＧＰＵ１０４は、例えば、グラフィックス基本要素のバッチをレンダリングして、グラフィックス基本要素のラスター画像を出力する。
【００２６】
ＧＰＵドライバ１１４によって生成されたコマンドは、ＧＰＵ１０４がコマンドを実行するために使用すべきであるグラフィックス処理コンフィグレーションを識別することができる。コンフィグレーションは、ＧＰＵ１０４によって実行される１組の命令、１組の状態レジスタ値、及びコマンドを実行するためにＧＰＵ１０４が必要とするかもしれない別のタイプの情報を識別することができる。
【００２７】
ＧＰＵドライバ１１４がメモリ１１６中にグラフィックス処理コンフィグレーションを記憶させる場合、ＧＰＵドライバ１１４は、ＧＰＵドライバ１１４によって生成されたコマンド中のグラフィックス処理コンフィグレーションに対応する、メモリモジュール１１６中の記憶位置を参照することができる。ＧＰＵ１０４がコマンドを受け取るとき、ＧＰＵ１０４は、ＧＰＵドライバ１１４から受け取ったコマンドにおいて参照されているグラフィックス処理コンフィグレーションをメモリ１１６から取得することができる。
【００２８】
少なくとも１つの実施形態に従うと、ＧＰＵ１０４のコマンドデコーダ（示されない）は、ＧＰＵ１１４からのコマンドを復号し、データを使用して、例えば、メモリ１１６から取得されたデータ、位置、色、テクスチャ等のデータを使用してコマンドを実行するようにＧＰＵ１０４の処理要素のうちの１つ以上のものを構成する。
【００２９】
１つ以上の実施形態に従うと、ＧＰＵ１０４の処理要素、すなわちモジュールは、グラフィックスパイプラインを実現する。このような実施形態に従うと、ＧＰＵ１０４の処理要素は、パラレルモードでグラフィックスパイプラインを実現することができるので、その処理要素は、並列してデータ上で動作し、１つの処理要素からの出力は、別の処理要素に対する入力として使用される。制限しない例として、第１の処理要素は、第１の組の初期入力データ上で第１のグラフィックス動作を実行し、第２の処理要素に第１の組の中間結果を出力する。初期入力データは、１つ以上の頂点に対応するデータを含むことができる。そのデータは、例えば、座標及び属性データを含むことができる。頂点座標は、例えばＸ，Ｙ及びＺ（幅、高さ、深さ）座標を有する４次元座標系に基づいて画像内で位置を識別し、Ｗ座標は、斉次座標を形成する。頂点属性は、例えば、頂点と関連づけられた色、法線、及びテクスチャ座標を含むことができる。第２の処理要素は、第１の処理要素によって出力された第１の組の中間結果上で別のグラフィックス動作を実行することができ、第３の処理要素に第２の組の中間結果を出力するなどすることができる。第２の処理要素が第２のグラフィックス動作を実行している間、第１の処理要素は、第２の組の初期入力データ上で第１のグラフィックス動作を実行することができる。
【００３０】
最後の処理要素がメモリモジュール１１６の１つ以上のバッファにピクセルオブジェクトを出力する、すなわちある他の宛先にこの新しいピクセルオブジェクトを出力するまで、ＧＰＵ１０４、及びその処理要素は、この方法を継続することができる。ピクセルオブジェクトは、ピクセルを記述するデータである。各々のピクセルオブジェクトは、複数の色値を指定することができ、ピクセルの透明度レベルを指定することができる。いくつかの状況において、ピクセルオブジェクトは、第１の色フォーマット中で第１の色を、第２の色フォーマット中で第２の色を指定することができる。
【００３１】
開示の１つ以上の実施形態に従うと、ＧＰＵ１０４の処理モジュールは、ＧＰＵ１０４、ＧＰＵ１０４の処理モジュールのうちの１つ以上のものを実行するように構成されている専用のハードウェアモジュール及び／またはプログラム可能な処理モジュールによって実行されるソフトウェアを含むことができる。ＧＰＵ１０４の処理モジュールは、グラフィックスパイプラインを実現する。グラフィックスパイプラインは、例えば、頂点シェーダ、基本要素アセンブリ、ビューポート変換、基本要素セットアップ、ラスター化、隠れた基本要素及びピクセル消去、属性セットアップ、属性補間及びフラグメントシェーダステージを含むことができる。
【００３２】
本発明の実施形態は、ＤＳＰ１０８、すなわち他の２次プロセッサに２次使用を割り当て、グラフィックスパイプラインにおいて使用されるデータ上で動作させることができる。１つ以上の実施形態に従うと、２次使用は、２次プロセッサの１次使用とは異なる。例えば、ＤＳＰ１０８は、オーディオ及びビデオデータを処理するために使用することができ、グラフィックスパイプラインデータ上で動作する１つ以上の照射処理モジュールを実現するために更に使用することができる。そうすることにおいて、２次プロセッサは、グラフィックスパイプラインを実現するために使用されるリソースを補足することができる。
【００３３】
本開示の実施形態に従うと、２次プロセッサは、２次プロセッサがその主目的のために使用されていないということが決定されたときに使用される。例えば、ＤＳＰ１０８がアイドルである、すなわち、オーディオまたはビデオデータを処理していないことが決定された場合、グラフィックスパイプラインに関して２次プロセッサとして使用するためにＤＳＰ１０８を割り付ける要求がなされる。このような場合、ＤＳＰ１０８は、グラフィックスパイプラインデータ上に例えば照射処理のような、何らかの形態の２次処理、または他の処理、例えばスキン処理を実行するために使用することができる。
【００３４】
図２は、本開示の１つ以上の実施形態に従って使用されるコンポーネント及びコンポーネント間通信を含むブロック図を示す。２次処理管理モジュール（ＳＰＭＭ）、すなわち２次処理マネージャ２０２は、１つ以上の２次処理インタフェースモジュール（ＳＰＩＭ）との組み合わせにおいて２次処理を管理する。１つ以上の実施形態に従うと、ＳＰＭＭ及びＳＰＩＭモジュールは、個別のモジュールである。代替的に、ＳＰＭＭ及びＳＰＩＭモジュールのうちの１つ以上のものが、単一のモジュールを形成するために組み合わされる。更に別の代替として、ＳＰＭＭ及びＳＰＩＭモジュールのうちの１つ以上のものを、他のプログラムコードと統合することができる。制限しない例として、ＳＰＩＭは、２次処理を実行するプログラムコードと統合することができる、及び／または、ＳＰＩＭは、グラフィックスパイプラインのモジュールを実行するプログラムコードと統合することができる。ＳＰＭＭ２０２は、２次プロセッサを使用することが可能であるかどうかを決定し、コマンドストリームを２次プロセッサに提供する。コマンドストリームは、１つ以上のコマンドを含む。ＳＰＭＭ２０２は、２次処理によるデータアクセス及び１つ以上のグラフィックスパイプライン処理モジュールを同期させ、２次プロセッサによって操作されたグラフィックスパイプラインデータはグラフィックスパイプラインによって処理されたデータに統合される。
【００３５】
図２に示される例において、ＤＳＰ１０８は、２次プロセッサとして使用されている。本開示の１つ以上の実施形態に従うとどんな処理ユニットでも２次プロセッサとして使用できることは明白である。ＳＰＭＭ２０２は、アプリケーション１１０がドローコールを発行するときに通知２２０を受け取る。ＳＰＭＭ２０２は、アプリケーション１１０によって提供されるドローコール及び関連づけられた情報を分析し、ドローコールの処理が２次プロセッサによって実行できる処理を含むかどうかを決定する。例えば、ＳＰＭＭ２０２は、ドローコールの処理が１つ以上の照射処理モデルの色データへの適用を必要とするかどうかを決定する。別の制限しない例として、ＳＰＭＭ２０２は、ドローコールを調査して、スキン処理が適用されるべきかどうかを決定することができる。
【００３６】
処理が２次プロセッサによって実行できるということをＳＰＭＭ２０２が決定する場合、ＳＰＭＭ２０２は、２次処理のための２次プロセッサを割り付けることを試みる。例えば、ＳＰＭＭ２０２は、ＤＳＰ１０８を要求するために、ＤＳＰ１０８のリアルタイムオペレーティングシステム（ＲＴＯＳ）２０６と通信２２２する。通信２２２は、ＤＳＰ１０８が利用可能であるかどうか、例えばＳＰＭＭ２０２の割り付け要求が成功したかどうかをＳＰＭＭ２０２に通知するために、ＲＴＯＳ２０６によって使用されるコールバックを含む。ＤＳＰ１０８が利用可能であるということ、例えばＤＳＰ１０８が主目的のために使用されていないということをＲＴＯＳ２０６が決定する場合、ＲＴＯＳ２０６は、ＤＳＰモジュール２０８をロードする。ＤＳＰモジュール２０８は、２次処理モジュール２０８Ｂ及び２次処理インタフェースモジュール（ＳＰＩＭ）２０８Ａを含む。
【００３７】
２次処理モジュール２０８Ｂは、２次処理を実行するために使用されるプログラムコードを備える。ＳＰＩＭ２０８Ａは、通信路２２８を経てメモリモジュール１１６中のフィードバックメモリ領域２１６Ａにフィードバックを提供するように、ＳＰＭＭ２０２とインタフェースするように構成されているプログラムコードを備える。ＳＰＭＭ２０２は、通信路２２６を経て、ＳＰＩＭ２０８Ａに情報を提供する。この情報は、フィードバック領域２１６Ａ、入力データ及び出力データの記憶位置、例えばデータバッファ２１６Ｃ中の位置を識別する。更に、ＳＰＩＭ２０８Ａは、情報を処理モジュール２０８Ｂに提供する。その情報は、２次処理、例えば照射処理を実行するために処理モジュール２０８Ｂによって使用することができる。
【００３８】
１つ以上の実施形態に従うと、ＳＰＭＭ２０２は通信路２２６を使用して、処理モジュール２０８Ｂによって使用され、コマンドのストリームまたはコマンドストリームとして言及される、１組のコマンドと関連づけられた情報を提供する。１つ以上のこのような実施形態に従うと、ＳＰＭＭ２０２は、初期メッセージをＳＰＩＭ２０８Ａに通信する。初期メッセージは、メモリモジュール１１６のコマンドストリーム領域２１６Ｂ中に記憶されているコマンドストリームの最初のコマンドへのポインタ、及びメモリモジュール１１６中のフィードバック領域２１６Ａへのポインタを含む。簡潔に説明すると、コマンドストリーム中のコマンドは、データバッファ２１６Ｃの中の入力及び出力データの位置、フィードバック２１６Ａの位置、ストリーム中の次のコマンドへのポインタまたは現在のコマンドが最後のコマンドであるという表示を識別するための情報、及び、ＤＳＰモジュール２０８が照射処理を実行する場合に使用される照射処理モデルのような、他の情報を含む。コマンドの内容は、以下で、より詳細に記述する。
【００３９】
ＳＰＭＭ２０２は、通信路２２４を経て各々のコマンドをコマンドストリーム２１６Ｂにロードし、通信路２２６を経てコマンドストリーム２１６Ｂ中の最初のコマンドへのポインタをＳＰＩＭ２０８Ａに転送し、ＳＰＭＭ２０２によって送られた初期メッセージをＳＰＩＭ２０８Ａに転送する。その後、ＳＰＩＭ２０８Ａは、最初の、すなわち現在のコマンド中に含まれる情報を使用して、コマンドストリーム２１６Ｂ中の次のコマンドを位置付け、すなわち最初の／現在のコマンドを最後のコマンドとして識別する。ＳＰＩＭ２０８Ａは、コマンドストリーム中の所定のコマンドに含まれる情報と通信路２２６を経てＳＰＭＭ２０２によって提供された初期情報とに基づいて、フィードバック２１６Ａ、コマンドストリーム２１６Ｂ及び／またはデータバッファ２１６Ｃにアクセスすることができる。ＳＰＩＭ２０８Ａ及び処理モジュール２０８Ｂを含むＤＳＰモジュール２０８は、例えば、通信路２２８を経てメモリ１１６の１つ以上の領域にアクセスすることができる。
【００４０】
データバッファ２１６Ｃに含まれるデータは、処理モジュール２０８Ｂ及びグラフィックスパイプライン処理モジュール２１８の両方によって使用される。モジュール２０８Ｂとモジュール２１８のうちの少なくとも１つとの間に少なくとも１つのデータ依存がある場合、ＳＰＭＭ２０２は、フィードバック２１６Ａ中に記憶されているＳＰＩＭ２０８Ａによって提供された情報及びＳＰＩＭ２１４によって提供された情報に基づいて、モジュール２０８Ｂ及び２１８によるデータアクセスを同期させる。ＳＰＩＭ２１４は、グラフィックスパイプライン処理モジュール２１８とともに動作する。例えば、ＳＰＭＭ２０２は、フィードバック２１６Ａ中の情報を使用して、ｌｉｔ色データが１つ以上のグラフィックスパイプライン処理モジュール２１８による処理のために利用可能であるということをＳＰＩＭ２１４に通知することができる。更に制限しない例として、クリッピングモジュールによって必要とされる基本要素の全てに対応する色データが処理モジュール２０８Ｂによって処理されているということをＳＰＭＭ２０２がいったん決定すると、ｌｉｔ色データは、グラフィックスパイプライン処理モジュール２１８のクリッピングモジュールに利用可能になる。ＳＰＭＭ２０２及びＳＰＩＭ２１４は、通信経路２３２を経て通信することができる、例えばＳＰＩＭ２１４は、グラフィックスパイプライン処理モジュール２１８のうち１つ以上のものがデータを処理するための準備ができているということをＳＰＭＭ２０２に通知する、及び／または、ＳＰＭＭ２０２は、グラフィックスパイプライン処理モジュール２１８によって処理されるデータが利用可能であるということをＳＰＩＭ２１４に通知する。
【００４１】
更に、ＳＰＭＭ２０２は、フィードバック領域２１６Ａ中の情報を使用して、いつコマンドストリーム２１６Ｂ中の領域がコマンドストリーム中の新しいコマンドで上書きすることができるかを決定することができる。制限しない例として、フィードバック２１６Ａは、２次処理モジュール２０８Ｂによって完了された最新のコマンドを識別する情報を含む。２次処理モジュール２０８Ｂがコマンドストリーム２１６中のコマンドにもはやアクセスしておらず、そしてコマンドがもはや必要とされないということをＳＰＭＭ２０２が決定した場合、ＳＰＭＭ２０２は、コマンドストリーム中の新しいコマンドのために領域を使用することを決定することができる。コマンドに対応するグラフィックスパイプラインデータをグラフィックスパイプラインが処理し終えている場合に、ＳＰＭＭ２０２は、コマンドがもはや必要とされないということを決定するかもしれない。
【００４２】
１つ以上の実施形態に従うと、ＳＰＭＭ２０２、ＳＰＩＭ２０８Ａ及びＳＰＩＭ２１４は、１つ以上の処理ユニット、すなわちプロセッサによって実行されるプログラムコードを備える。このような処理ユニットは、制限なしで、ＣＰＵ１０３、ＤＳＰ１０８及びＧＰＵ１０４を含むことができる。制限しない例として、ＳＰＭＭ２０２及びＳＰＩＭ２１４は、ＣＰＵ１０３によって実行されるプログラムコードを備え、ＳＰＩＭ２０８Ａは、ＤＳＰ１０８によって実行されるプログラムコードを備える。更に制限しない例として、ＳＰＭＭ２０２のプログラムコードはＣＰＵ１０３によって実行され、ＳＰＩＭ２１４はＧＰＵ１０４によって実行されるプログラムコードを備え、ＳＰＩＭ２０８ＡはＤＳＰ１０８によって実行されるプログラムコードを備える。しかしながら、ＳＰＭＭ２０２、ＳＰＩＭ２０８及びＳＰＩＭ２１４のプログラムコードを実現するためにどんな１つ以上の処理ユニットでも使用することができることは明らかである。更に制限しない例として、通信路２２０，２２２，２２４，２２６，２２８，２３０及び２３２、及び／または、ＳＰＭＭ２０２と、ＲＴＯＳ２０６と、ＳＰＩＭ２０８Ａ及び処理モジュール２０８Ｂを含むＤＳＰモジュール２０８と、メモリモジュール１１６、ＳＰＩＭ２１４及びグラフィックスパイプライン処理モジュール２１８との間の通信を促進するためにバス１０６を使用することができる。通信路２３０は、例えば、データバッファ２１６Ｃ中に記憶されているグラフィックスパイプラインデータにアクセスするために、グラフィックパイプライン処理モジュール２１８のうちの１つ以上のものによって使用することができる。
【００４３】
図３Ａ及び３Ｂを含む図３は、本開示の１つ以上の実施形態に従ってＳＰＭＭ２０２を実現するプログラムコードプロセスフローを示す。ステップ３０２で、ＳＰＭＭ２０２は、ドローコール、例えばアプリケーション１１０によってグラフィックスＡＰＩ１１２に対してなされたコールを受け取る。ＳＰＭＭ２０２は、ステップ３０４で、ドローコールを調査し、２次処理を使用するための機会を識別する。例えば、ＳＰＭＭ２０２は、ドローコールを調査し、１つ以上の照射処理モデルを色データに適用することをアプリケーション１１０が要求しているかどうかを識別することができる。ドローコールの調査から、２次処理の機会が存在しないということをステップ３０６でＳＰＭＭ２０２が決定する場合、処理はステップ３１２で継続して、２次処理がないということをグラフィックスパイプライン、例えばＳＰＩＭ２１４に通知する。このような通知は、例えば、データバッファ２１６Ｃ中に記憶されているデータに対するグラフィックスパイプライン処理モジュール２１８によるアクセスをＳＰＩＭ２１４が調整する必要をなくす。
【００４４】
２次処理を使用するための機会があるということをステップ３０６でＳＰＭＭ２０２が決定する場合、処理はステップ３０８に継続し、ここで、ＳＰＭＭ２０２が２次プロセッサを要求する。例えば、ＤＰＭＭ２０２は、ＤＳＰモジュール２０８をロードするための要求をＤＳＰ１０８のＲＴＯＳ２０６に送り、ＳＰＭＭ２０２の要求が成功したかまたは失敗したかどうかをＳＰＭＭ２０２に通知するためのコールバックをＲＴＯＳ２０６に提供する。要求が失敗したということをＲＴＯＳ２０６がＳＰＭＭ２０２に通知するということがステップ３１０で決定された場合、処理は継続して、ステップ３１２で、２次処理がないということをグラフィックスパイプラインに通知する。このような場合、１つ以上の実施形態に従うと、ＳＰＭＭ２０２は、照射処理を実行することをＣＰＵ１０２に通知することができる。
【００４５】
２次プロセッサに対する要求が成功したということをＲＴＯＳ２０６がＳＰＭＭ２０２に通知する場合、処理は、図３Ｂのステップ３２２に継続する。ステップ３２２で、ＳＰＭＭ２０２は、コマンドストリーム中の最初のコマンドを準備し、コマンドストリーム２１６Ｂ中に最初のコマンドを記憶させる。１つ以上の実施形態に従うと、ＳＰＭＭ２０２は、リンクされたリストのアプローチを使用して、２次プロセッサにコマンドストリームを通信する。制限しない例として、各々のコマンドは、次のコマンドへのポインタを含む。更に制限しない例として、コマンドは、コマンドストリーム中の前のコマンドへのポインタのような、コマンドストリーム中の任意のコマンドへのポインタを含むことができる。現在のコマンドが最後のコマンドである場合、次のコマンドへのポインタは、値、例えば０ｘＦＦＦＦＦＦＦＦの１６進値を含む。それは、最後のコマンドとして現在のコマンドを識別する。
【００４６】
１つ以上の実施形態では、ＳＰＭＭ２０２は、コマンドストリーム２１６Ｂにコマンドを記憶させるときには、付加的なコマンドがあるかどうかを知らないかもしれない。このような場合、ＳＰＭＭ２０２は、付加的なコマンドがあるかもしれないということをＳＰＩＭ２０８Ａに通知するために、リンクされたリストに次のコマンドへのポインタとして０の値を記憶させる。モジュール２０８Ｂが現在のコマンドと関連づけられた処理を完了する場合、ＳＰＩＭ２０８Ａは、ちょうど完了されたコマンドの中のポインタを見て、コマンドストリーム２１６Ｂにもしあるなら次のコマンドを位置付ける。ポインタが０の値に設定されている場合、ＳＰＩＭ２０８Ａは、ＳＰＭＭ２０２がポインタをまだ更新していないということを知る。このような場合、ＳＰＩＭ２０２は、ＳＰＭＭ２０２がポインタを更新しているかどうかを見るためにポインタをチェックする前に一定期間待つことができる。ポインタが０でない値を有する場合、ＳＰＩＭ２０８Ａは、その値を調査し、それがコマンドストリーム２１６Ｂ中の次のコマンドを指す、すなわち完了されているコマンドがコマンドストリーム中の最後のコマンドであることを示しているかを決定する。後の場合では、ＳＰＭＭ２０２は、現在のコマンドストリームには処理すべきコマンドがこれ以上ないということをＳＰＩＭ２０８Ａに通知するために、ポインタに値、例えば０ｘＦＦＦＦＦＦＦＦの１６進値を記憶させることができ、ＤＳＰ１０８は、その１次、すなわち他の処理を実行するために使用することができる。
【００４７】
ステップ３２４で、ＳＰＭＭ２０２は、最初のコマンドに対応する情報を含む初期メッセージを２次プロセッサに送る。ＳＰＭＭ２０２によってＳＰＩＭ２０８Ａに送られるメッセージは、最初のコマンドに対応する情報を有する。ＳＰＭＭ２０２によって送られるメッセージは、それが処理を開始させることができるということを２次プロセッサに通知し、最初のコマンドを位置付けるための情報を提供する。本開示の１つ以上の実施形態に従うと、図７に関して、初期メッセージ７００は、コマンドストリームメモリ２１６Ｂ中のコマンドへのポインタ７０２、コマンドストリームメモリ２１６Ｂ中のコマンドの記憶領域サイズを識別する情報７０４、及びメモリモジュール２１６のフィードバック２１６Ａ記憶領域へのポインタ７０６を含む。図３Ｂについて再び参照すると、ＳＰＭＭ２０２がステップ３２４で、コマンドストリーム中の最初のコマンドを２次プロセッサに通知するメッセージを送った後、ＳＰＭＭ２０２の処理は、ステップ３２６に継続して、コマンドストリーム中に付加的なコマンドがあるかどうかを決定する。
【００４８】
ステップ３２６で、現在のドローコールのために生成すべきである少なくとも１つの付加的なコマンドがあるということをＳＰＭＭ２０２が決定する場合、処理は、ステップ３２８で継続する。ステップ３２８で、ＳＰＭＭ２０２は、新しいコマンドを準備し、コマンドストリーム２１６Ｂ中に新しいコマンドを記憶させる。ステップ３３０で、ＳＰＭＭ２０２は、コマンドストリーム２１６Ｂにおける新しいコマンドを指すために、例えば新しいコマンドが記憶されるべきコマンドストリーム２１６Ｂ中の位置を指すために、コマンドストリーム２１６Ｂ中の直前のコマンド、例えば最初のコマンドにポインタを設定する。最初のコマンドと同様に、新しいコマンド及び任意の後続のコマンドは、（次のコマンドがＳＰＭＭ２０２によって生成される場合に）次のコマンドを指すポインタ、または、（次のコマンドがない場合に）新しいコマンドが最後のコマンドであるというインジケータを含む。１つ以上の実施形態に従うと、初期メッセージが２次プロセッサに送られた後、ＳＰＭＭ２０２及び２次プロセッサの処理モジュール、例えばＤＳＰモジュール２０８は、コマンドストリーム２１６Ｂ及びフィードバック２１６Ａを経て通信する。そうすることにおいて、２つの処理モジュールの間でメッセージを送る必要がないので、オーバヘッドは、最小化することができる。ＤＳＰモジュール２０８は、データを処理するために、コマンドストリーム２１６Ｂ中のコマンドのリンクされたリストをナビゲートし、メモリモジュール２１６のフィードバック２１６Ａにステータス情報を書き込むことによってＳＰＭＭにフィードバックを提供する。１つ以上の実施形態に従うと、ＤＳＰモジュール２０８は、ＳＰＭＭ２０２及びグラフィックスパイプライン処理モジュール２１８とは非同期に独立して動作する。
【００４９】
いったんＳＰＭＭ２０２が新しいコマンドを指すために先行するコマンド中のポインタを更新すると、処理は、ステップ３２６で継続して、生成すべき何らかの付加的なコマンドが残っているかどうかを決定する。そうでない場合、処理は、ステップ３３２で継続して、最後のコマンドに含まれるポインタを値、例えば０ｘＦＦＦＦＦＦＦＦの１６進値に更新し、コマンドが現在のコマンドストリーム２１６Ｂにおける最後のコマンドであるということをＳＰＩＭ２０８Ａに通知し、現在のドローコールに対する処理は終わる。付加的なドローコールがある場合、処理は、ステップ３２２で継続して、別のドローコールに関するコマンドストリームを準備する。
【００５０】
ＳＰＩＭ２０８Ａは、ＳＰＭＭ２０２及び処理モジュール２０８Ｂ間のインタフェースを提供する。１つ以上の実施形態に従うと、ＳＰＩＭ２０８Ａは、ＳＰＩＭ２０２によって生成されたコマンドストリームに対応する情報を受け取り、処理モジュール２０８Ｂによって実行される処理を促進し、処理モジュール２０８Ｂの処理ステータスを監視し、処理モジュール２０８Ｂの処理上でフィードバックを提供する。図４は、本開示の１つ以上の実施形態に従ってＳＰＩＭ２０８Ａを実現するプログラムコードプロセスフローを示す。
【００５１】
ステップ４０２で、ＳＰＩＭ２０８Ａは、初期設定メッセージをＳＰＩＭ２０２から受け取る。制限しない例として、ＳＰＩＭ２０８Ａは、初期設定メッセージ７００を受け取る。初期設定メッセージ７００は、最初のコマンドに対応するコマンドストリーム２１６Ｂ中の位置へのポインタ、例えばバイトでの最初のコマンドのサイズを識別するための情報７０４、及びフィードバック２１６Ａ領域中の位置へのポインタ７０６を含む。ステップ４０４で、ＳＰＩＭ２０８Ａはメッセージ７００中の情報を使用して、最初のコマンドをコマンドストリーム２１６Ｂに位置付けて、現在のコマンドが最後のコマンドであるかどうかを識別する。
【００５２】
ステップ４０６で、ＳＰＩＭ２０８Ａは、現在のコマンドに含まれる情報を処理モジュール２０８Ｂに利用可能にする。例えば、位置情報例えばポインタ、及びサイズ情報を使用して、データバッファ２１６Ｃ中のデータにアクセスするための、例えばデータをロード及び／または記憶させるためのデータ移動動作を始める。更に、コマンドは、最初の頂点と関連づけられた色データを入力するためのポインタ、及び次の頂点のために色データを位置付けるためにポインタに加算するためのインクリメントのような、データバッファ２１６Ｃ中の色データの位置を含むことができる。現在のコマンドは、最初の頂点と関連づけられたデータバッファ２１６Ｃにおける出力バッファ中の位置へのポインタとともに、次の頂点と関連づけられた色データに対する出力位置を位置付けるためのインクリメントを更に含むことができる。更に制限しない例として、処理モジュール２０８Ｂが照射処理を実行する場合、現在のコマンドは、１つ以上の照射処理モデルを含むことができる。別の制限しない例として、処理モジュール２０８Ｂがスキン処理を実行する場合、コマンドは、スキン処理マトリックスを含むことができる。１つ以上の実施形態に従うと、最初のコマンドは、完全な組の照射処理モデル、すなわちスキン処理マトリックスを供給することができ、後続するコマンドは、前のコマンドにおいて指定されている照射処理モデル中の、すなわちスキン処理マトリックス中の何らかの変化を識別する。
【００５３】
ステップＳ４０８で、ＳＰＩＭ２０８Ａは、処理モジュール２０８Ｂの進行を監視し、ステップ４１０で処理モジュール２０８Ｂによって実行される処理のステータスを識別する情報で、フィードバック２１６Ａ中の情報を更新する。図８は、本開示の１つ以上の実施形態に従ってフィードバック２１６Ａ中に記憶させることができる情報の例を提供する。１つ以上のこのような実施形態に従うと、各々のコマンドは頂点の有限集合を識別し、いったん処理モジュール２０８Ｂが、コマンドによって識別される頂点と関連づけられた頂点データを処理すると、コマンドは完了したと考えられる。フィードバック２１６Ａは、処理モジュール２０８Ｂによって完了された最新のコマンドを識別するための情報、例えば最後のコマンド識別子（ＩＤ）８０２及びコマンドストリーム２１６Ｂ中のコマンドへのポインタ８０４を含むことができる。
【００５４】
図４を再び参照すると、ＳＰＩＭ２０８Ａは、ステップ４０４に進行し、現在のコマンド中の情報を使用して、処理において使用されるデータを処理モジュール２０８Ｂに利用可能にし、そして２次処理のステータスで、フィードバック２１６Ａを更新する。
【００５５】
１つ以上の実施形態に従って上で議論したように、２次プロセッサは、ＳＰＭＭ２０２及びグラフィックスパイプライン処理モジュール２１８とは非同期に独立して動作する。しかしながら、少なくとも１つの場合において、２次処理、例えばＤＳＰモジュール２０８によって実行される処理は、グラフィックスパイプライン処理モジュール２１８によって実行される処理と同期されるので、２次プロセッサによって処理され、グラフィックスパイプライン処理モジュール２１８によって更に処理されるべきであるデータは同期される。このような場合、ＳＰＭＭ２０２は、ＳＰＩＭ２１４に関連して動作する。ＳＰＩＭ２１４は、グラフィックスパイプライン処理モジュール２１８及びＳＰＭＭ２０２の間でインタフェースを提供して、２次プロセッサによって処理されているデータをモジュール２１８は使用するように、グラフィックスパイプライン処理モジュール２１８によるデータアクセスを管理することができる。１つ以上の実施形態に従うと、ＳＰＭＭ２０２及びＳＰＩＭ２１４は、単一のモジュールを構成することができる。
【００５６】
図５は、本開示の１つ以上の実施形態に従って使用するためのプログラムコードプロセスフローを示す。１つ以上の実施形態に従うと、グラフィックスパイプライン及びＧＰＵ１０４は、基本要素のブロック上で動作し、その各々は、１組の頂点を有する。例えば、基本要素が三角形を構成する場合、各々の基本要素は、３つの頂点の関連づけられた組を有する。基本要素のブロックは、基本要素及びそれらの頂点のリストとして表現することができる。１つ以上の実施形態に従うと、ＳＰＭＭ２０２は、所定の基本要素リスト中の基本要素のために２次処理が実行されるべきであるかどうかを決定し、そして、基本要素リスト中の値、例えば論理値を設定して、基本要素リスト中で識別された基本要素で２次処理が使用されるかどうかを示す。
【００５７】
１つ以上の実施形態に従うと、基本要素リスト中に設定されている値をＳＰＭＭ２０２によって使用して、グラフィックスパイプラインによって処理される基本要素と関連づけられたデータが、２次プロセッサによって最初に処理されているかどうかを決定することができる。ステップ５０２で、ＳＰＭＭ２０２は、基本要素リスト中に設定されている値にアクセスし、ステップ５０４でＳＰＭＭ２０２は、２次処理が使用されているかどうかを決定する。２次処理が実行されているということをＳＰＭＭ２０２がステップ５０４で決定する場合、データがモジュール２１８に利用可能になる前に、グラフィックスパイプライン処理モジュール２１８によって更に処理されるべきデータのその処理を２次プロセッサが完了するように、ＳＰＭＭ２０２は、２次プロセッサによって処理されているデータへのグラフィックスパイプライン処理モジュール２１８によるアクセスを同期させる。
【００５８】
制限しない例として、２次処理が使用されていないということを基本要素リスト中に記憶されている値が示している場合、グラフィックスパイプライン処理モジュール２１８によってアクセスされるデータは、２次処理モジュール２０８Ｂによるデータアクセスと同期させる必要がない。このような場合、グラフィックスパイプライン処理モジュール２１８は、非同期モードにおいて動作することができる。それは、頂点データのグラフィックスパイプライン処理モジュール２１８の使用と、２次処理モジュール２０８Ｂによってこのような頂点データの使用との間のデータアクセスを同期させることを伴わない。２次処理が使用されているということを基本要素リスト中に記憶されている値が示している場合、頂点データへのモジュール２１８のアクセスを処理モジュール２０８Ｂのそれと同期させるために、グラフィックスパイプライン処理モジュール２１８は、同期モードにおいて動作する。
【００５９】
データアクセスが同期されるべきである場合、１つ以上の実施形態に従うと、ＳＰＭＭ２０２は、ステップ５０６で、ＳＰＩＭ２０８Ａによって提供されるフィードバック情報を使用して、処理モジュール２０８Ｂの状態を決定する。１つ以上の実施形態に従うと、ＳＰＩＭ２０８Ａは、処理モジュール２０８Ｂによって完了された最後の基本要素を識別することによって処理モジュール２０８Ｂの処理状態を識別する情報をフィードバック２１６Ａに記憶させる。１つ以上の実施形態に従うと、基本要素は、連続する識別子が割り当てられるので、ＳＰＭＭ２０２は、ＳＰＩＭ２０８Ａによって供給されたフィードバック情報に基づいてステップ５０８で、その識別子がＳＰＩＭ２０８Ａによって供給された基本要素識別子以下である基本要素が、処理モジュール２０８Ｂによって完了されているということを決定することができる。ステップ５１０で、ＳＰＩＭ２１４とともに、ＳＰＭＭ２０２は、処理モジュール２０８Ｂによって処理されていることが決定された基本要素と関連づけられ、データバッファ２１６Ｃに記憶されているデータにグラフィックス処理モジュール２１８がアクセスすることを可能にする。
【００６０】
図６Ａ及び６Ｂを含む図６は、本開示の１つ以上の実施形態に従った同期例を提供する。図６Ａを参照すると、モジュール６０４及び６０８は、グラフィックスパイプライン処理モジュール２１８の例を提供する。グラフィックスパイプライン処理モジュール２１８は、データバッファ２１６Ｃ中に記憶されているデータにアクセスする。非同期モードにおいて、変換前バッファ６０２は、頂点データを記憶する。頂点データは、位置データ、例えばＸ，Ｙ，Ｚ及びＷ座標データ、テクスチャデータ及び色データを含む。変換前バッファ６０２中に記憶されている色データは、ｌｉｔ色データ、すなわち２次プロセッサを使用すること以外の方法において照射処理を受けている色データを含む。例えば、２次プロセッサ、例えばＤＳＰ１０８が２次処理のために利用不可能であるということをＳＰＭＭ２０２が決定する場合には、このような場合にあたるかもしれない。このような場合、ＣＰＵ１０２が照射処理を実行して、変換前バッファ６０２に値を記憶させることができる。
【００６１】
非同期モードにおいて、モデルビュー変換モジュール６０４は、ｌｉｔ色データを含む頂点データを取得し、ｌｉｔ色データ以外の頂点データ上で動作し、変換後バッファ６０６中に頂点データを記憶させる。非同期モードにおいて、モデルビュー変換モジュール６０４は、他の頂点データとともに色データを転送するように命じられる。変換モジュール６０４は色データを修正しないが、それは、命じられたときに、変換前バッファ６０２からｌｉｔ色データを取得し、変換後バッファ６０６にそのｌｉｔ色データを記憶させるので、その色データは、グラフィックパイプライン中の後続のモジュール、例えばビューポート変換モジュール６０８による処理のために利用可能である。図６Ａに示される例において、ビューポート変換モジュール６０８は変換後バッファ６０６にアクセスして、その変換動作において、モデルビュー変換モジュール６１４によって転送されたｌｉｔ色データを取得し、ｌｉｔ色データを使用して、例えば色データを補間する。
【００６２】
図６Ｂは、２次処理同期モードにおけるバッファ６０２及び６０６と変換モジュール６０４及び６０８とに関係する処理を示す。図６Ｂに示される例において、２次プロセッサ６１０、例えば処理モジュール２０８Ｂを実現するＤＳＰ１０８は、位置データと一緒に、変換前バッファ６０２からｕｎｌｉｔ頂点色データを取得する。２次プロセッサ６１０は、他のデータ、例えば照射処理モデルデータ、スキン処理マトリックスデータ等と一緒に、取得した情報を使用して、色データを処理する。照射処理の場合、２次プロセッサ６１０は、１つ以上の照射処理モデル及び頂点データを使用して、ｌｉｔ頂点色データを生成する。そして、２次プロセッサ６１０は、コマンドストリーム２１６Ｂ中に含まれる情報を使用して識別される位置で、ｌｉｔ頂点色データを変換後バッファ６０６中に記憶させる。
【００６３】
非同期モードにおいて、モデルビュー変換モジュール６０４は、変換後バッファ６０６に色データを書き込む。しかしながら、変換モジュール６０４が変換後バッファ６０６に色データを書き込んだ場合、変換モジュール６０４は、２次プロセッサ６１０によってバッファ６０６に書き込まれたｌｉｔ色データに上書きする可能性がある。同期モードにおいて、モデルビュー変換モジュール６０４は、変換後バッファ６０６に色データを転送しないように、通知、例えばＳＰＩＭ２１４からの通知を受け取る。モデルビュー変換モジュール６０４によって変換後バッファ６０６に書き込まれる頂点データの一部分としての色データの転送を先行することによって、変換モジュール６０４は、２次プロセッサ６１０によって変換後バッファ６０６に書き込まれたｌｉｔ色データを上書きすることを避ける。
【００６４】
同期モードにおいて、ＳＰＩＭ２１４は、変換後バッファ６０６に記憶されているデータのステータスを提供するので、ビューポート変換モジュール６０８は、２次プロセッサ６１０によって出力されたｌｉｔ色データを含む頂点データを取得する。制限しない例として、ＳＰＭＭ２０２及びＳＰＩＭ２１４は、フィードバック２１６Ａを管理して、ビューポート変換モジュール６０８が処理すべきである基本要素と関連づけられた頂点を２次プロセッサ６１０が処理しているかどうかを識別することができる。その結果、モジュール６０８は、ｌｉｔ色データを含む頂点データを処理する。例えば、コマンドは、その中の頂点がコマンドによって処理されている基本要素リストとコマンドとを関連づける情報を含むことができる。１つ以上の実施形態に従うと、関連づけられた基本要素リスト中の基本要素の全てを処理するために１つのコマンドが２次プロセッサ６１０によって使用されているように、コマンド及び関連づけられた基本要素リストの間で１対１の対応がある。したがって、所定のコマンドに対して処理が完了したことがいったん決定されると、関連づけられた基本要素リスト中の基本要素は、ビューポート変換モジュール６０８によって処理するために利用可能である。
【００６５】
１つ以上の実施形態に従うと、各々のコマンドは識別子が与えられ、コマンド識別子は、連続的な順序で割り当てられる。そうすることにおいて、フィードバック２１６Ａに含まれる最後のコマンド識別子８０２情報に基づいて、所定のコマンドに対する処理が完了されているかどうかを決定することができる。例えば、最後のコマンドＩＤ８０２において識別される値以下であるコマンド識別子の値を有するコマンドは２次プロセッサ６１０によって完了されている一方で、最後のコマンドＩＤ８０２の値よりも大きいコマンド識別子の値を有するコマンドは２次プロセッサ６１０によって終えられていないと考えられる。
【００６６】
図９は、本開示の１つ以上の実施形態に従ってコマンドストリーム及びコマンドストリームに含まれる１つ以上のコマンドの例示的な内容を示す。コマンドストリーム２１６Ｂは、１つ以上のコマンド９００を含む。各々のコマンド９００は、コマンド９００の１つ以上の情報項目を含む。下記は、コマンドストリーム中のコマンド９００の内容の制限しない例を提供する。それは、照射処理またはスキン処理プログラムコードのような、頂点上で動作するように構成されているプログラムコードとともに使用するための情報を含む。以下に議論される情報と置換するために、他の情報を加えたり、使用できることは明白である。そして、この情報は、本開示の１つ以上の実施形態に従って２次プロセッサによって使用される任意のプログラムコードと同時に使用するように適合させることができる。
【００６７】
情報項目９０２及び９０４は、現在のコマンド９００とともに使用するための識別情報を含む。１つ以上の実施形態に従うと、次の情報は、２次処理管理及び制御を促進するために使用することができる。下記は、このような情報項目の例を提供する：
ｔｉｍｅｓｔａｍｐ：２次プロセッサによって処理されている現在のコマンドを識別する。ＳＰＩＭ２０８Ａは、例えば、フィードバック２１３Ａ中にこのタイムスタンプを出力し、２次プロセッサがこのコマンドを現在処理しているということを示すことができる。
【００６８】
ｐｒｉｍｉｔｉｖｅＴｉｍｅＳｔａｍｐ：この変数は、現在のコマンド９００に対応する基本要素リストを識別する際に使用するためのタイムスタンプを含む。基本要素タイムスタンプの値は、例えば、コマンド９００を所定の基本要素にコマンド９００をマッピングするために使用することができる。基本要素タイムスタンプは、２次プロセッサによって無視することができる。
【００６９】
Ｇｒａｎｕｌａｒｉｔｙ：１つ以上の実施形態に従って使用するための任意の変数。この粒度変数は、頂点グループを構成するコマンド９００に関連づけられた多数の頂点、すなわちコマンド９００と関連づけられた頂点の部分集合を示す。１つ以上の実施形態に従うと、２次プロセッサは、フィードバックとして、情報を出力し、頂点グループを構成する多数の頂点が処理されているということを示す。コマンド９００が頂点を処理する場合、粒度は、コマンド９００に関連づけられた頂点の部分集合である多数の頂点、例えば頂点グループの完成時にフィードバックを提供するようにＳＰＩＭ２０８Ａに命ずる。粒度の値を使用すると、ＳＰＩＭ２０８Ａは、各々の頂点グループが処理されるとフィードバックを提供することができる。そして、コマンド９００と関連づけられた頂点の全ての処理を２次プロセッサが完了したときに、ＳＰＩＭ２０８Ａによって提供されるフィードバックにこのフィードバックを加えることができ、したがって、付加的な及び／またはより優れたレベルのフィードバックを提供する。
【００７０】
ｖｅｒｔｅｘＣｏｕｎｔ：現在のコマンド９００に関連して処理される多数の頂点を示す値を構成する変数。
【００７１】
ｎｅｘｔＣｏｍｍａｎｄＧｒｏｕｐＳｉｚｅ：この変数は、次のコマンドのサイズを識別する。次のリンクされたコマンドがない場合、変数は、０に設定することができる。そうでなければ、その値は、次のコマンドに含まれるバイト数を反映する値を含む。
【００７２】
ｎｅｘｔＣｏｍｍａｎｄＧｒｏｕｐＰｔｒ：この変数は、次のコマンドＩＤ情報９０４の一部または全てを含む。それは、コマンドストリーム２１６Ｂ中の次のコマンドへのポインタを含むことができる。次のコマンドがない場合、その値は、ＮＵＬＬ値に設定することができる。そうでなければ、その値は、次のコマンドの、例えばコマンドストリーム２１６Ｂ中の初期記憶位置に対応するメモリ位置へのポインタを含む。
【００７３】
情報項目９０６は、記憶されているデータ、例えばデータバッファ２１６Ｃに記憶されているデータを位置付けるために使用することができる情報、例えばポインタ及びストライドを含む。下記は、このような情報項目の例を提供する：
ｖｅｒｔｅｘＩｎＰｔｒ：入力頂点位置を含むバッファへのポインタを含む変数。１つ以上の実施形態に従うと、この変数の値は、ＮＵＬＬとすることができる。制限しない例として、２次プロセッサによって実行されている照射処理プログラムは、処理が無限の照射処理モデルに関係する場合に、頂点に関連づけられた位置情報の代わりに、法線を使用するかもしれない。処理がスポットライト処理または位置の照射処理モデルのうちの１つ以上のものに関係する場合、ｖｅｒｔｅｘＩｎＰｔｒは、処理されるべき１つ以上の頂点に対する位置データを記憶している記憶装置へのポインタとして使用することができる。
【００７４】
ｖｅｒｔｅｘＯｕｔＰｔｒ：スキン処理された頂点を２次プロセッサが書き込むことができるバッファへのポインタを含む変数。ｖｅｒｔｅｘＯｕｔＰｔｒ変数は、２次プロセッサがスキン処理を実行する場合に使用される。
【００７５】
ｃｏｌｏｒｓＩｎＰｔｒ：頂点色（ＲＧＢＡ）を記憶しているバッファへのポインタを含む変数。赤、緑、青及びアルファ値の組の各々の組は、頂点色グループを含む。２面の照射処理が実行される場合、バッファは、そのバッファ中に連続で２つの頂点色グループを記憶する。各々の頂点色グループは、現在のｃｏｌｏｒＩｎＰｔｒ値にｖｅｒｔｅｘＯｕｔＳｉｚｅ変数の値を加えることによって、次の頂点色グループを位置付けることができるように、ｖｅｒｔｅｘＯｕｔＳｉｚｅバイトだけ分離されている。ｃｏｌｏｒＩｎＰｔｒ変数がＮＵＬＬ値を有する場合、は、各々の頂点に対する入力色グループとして、マテリアルデータ構造が使用される。
【００７６】
ｃｏｌｏｒＯｕｔＰｔｒ：２次プロセッサによって生成された色出力を記憶しているバッファへのポインタを含む変数。２面の照射処理がイネーブルにされている場合に各々の頂点に対して、２次プロセッサによって２つの色グループは連続で出力される。各々の頂点色グループは、ｖｅｒｔｅｘＯｕｔＳｉｚｅバイトだけ分離されている。
【００７７】
ｎｏｒｍａｌｓＩｎＰｔｒ：ｖｅｒｔｅｘＩｎＰｔｒによって指される頂点、例えば２次処理プロセッサによって現在処理されている頂点に対応する頂点法線を含んでいるバッファへのポインタを含む変数。ｎｏｒｍａｌｓＩｎＰｔｒ変数がＮＵＬＬ値を有する場合、２次プロセッサは、全ての頂点に対してＣｕｒｒｅｎｔＮｏｒｍａｌを使用する。
【００７８】
ｂｏｎｅＩｎｄｉｃｅｓＰｔｒ：頂点をスキン処理する際に使用するためのマトリックスパレットにインデックスを付けるバイトの配列へのポインタを含む変数。制限しない例として、インデックスの数は、例えばｂｏｎｅＣｏｕｎｔ変数によって示されるように、頂点あたりのボーンの数かける頂点の数に等しい。
【００７９】
ｂｏｎｅＷｅｉｇｈｔｓＰｔｒ：頂点スキンプロセスの間に使用することができるｓ１５．１６ボーン重み付けを含んでいるバッファを指す変数。制限しない例として、重み付けの数は、例えばｂｏｎｅＣｏｕｎｔ変数によって示されるように、頂点あたりのボーンの数かける頂点の数に等しい。
【００８０】
ｖｅｒｔｅｘＩｎＳｉｚｅ：（頂点毎の）１つの入力頂点構造に含まれているバイト数を示す変数。制限しない例として、この変数と関連づけられた値は、頂点バッファ中の次の頂点位置を計算するためにストライドとして使用することができる。
【００８１】
ｖｅｒｔｅｘＯｕｔＡｎｄＣｏｌｏｒＳｉｚｅ：（頂点毎の）１つの出力頂点構造に含まれているバイト数を識別する変数。制限しない例として、この変数と関連づけられた値は、色または位置のいずれか一方に対する次の出力位置を計算するためにストライドとして使用することができる。
【００８２】
ｎｕｍＤｉｍｅｎｓｉｏｎｓ：位置ベクトル（３＝ＸＹＺ）、（４＝ＸＹＺＷ）毎に要素の数を指定する変数。その数が３である場合、Ｗは、１．０であると仮定することができる。制限しない例として、この変数と関連づけられた値は、次の頂点に対する位置データへのポインタを計算するためにストライドとして使用することができる。
【００８３】
情報項目９０８は、２次処理において使用することができる他の処理情報を含む。下記は、このような情報項目の例を提供する：
ＣｕｒｒｅｎｔＮｏｒｍａｌ（ＸＹＺ）：ｎｏｒｍａｌｓＩｎＰｔｒがＮＵＬＬポインタ値である場合に使用される法線を含む変数。この法線は、コマンドストリームにおいて参照されている全ての頂点に適用される。
【００８４】
ｒｅｓｃａｌｅＮｏｒｍａｌｓＦｌａｇ：頂点法線を再基準化すべきかどうかを示す変数。フラグが（例えば、０ｘＦＦＦＦＦＦＦＦの値に）設定されている場合、２次プロセッサは、オープンＧＬ−ＥＳ仕様（セクション２．１１．３）につき、照射処理均等化の前に頂点法線を再基準化する。
【００８５】
ＲｅｓｃａｌｅＮｏｒｍａｌｉｚｅＦｌａｇ：いつ頂点法線を再基準化すべきかを示す変数。最初の意味のあるビット、例えばビット０が設定されている場合、２次プロセッサは、オープンＧＬ−ＥＳ仕様（セクション２．１１．３）において明示されているように、照射処理の前だが変換の後に法線を正規化する。ビット１が設定されている場合、２次プロセッサは、オープンＧＬ使用において述べられるように再基準化法線アルゴリズムを使用することができ、または、全ての場合において標準正規化を使用することができる。正規化は全ての場合において使用することができるので、法線を正規化することが適切であるときはいつでもビット０を設定することができ、代替として、再基準化法線を使用することが２次プロセッサに許されているときにはビット１も設定することができる。
【００８６】
ｔｗｏＳｉｄｅｄＬｉｇｈｔｉｎｇＦｌａｇ：２面の照射処理を実行すべきかどうかを示す変数。フラグが（例えば０ｘＦＦＦＦＦＦＦＦの値に）設定されている場合、２次プロセッサは、（法線に関して）頂点の各々の側に対して１つというように、頂点毎に２つの色を計算する。１つ以上の実施形態に従うと、ｔｗｏＳｉｄｅｄＬｉｇｈｔｉｎｇＦｌａｇを使用して、頂点に関連づけられた複数の色、例えば各々の側に対して１つあるということを示すことができる。
【００８７】
ｌｉｇｈｔｉｎｇＥｎａｂｌｅｄＦｌａｇ：照射処理を実行すべきかどうかを示すために使用される変数。フラグが（例えば０ｘＦＦＦＦＦＦＦＦの値に）設定されている場合、２次プロセッサは頂点上で照射処理計算を実行し、ｔｗｏＳｉｄｅｄＬｉｇｈｔｉｎｇフラグがイネーブルにされているかどうかに依存して、頂点毎に１つまたは２つの色を出力する。１つ以上の実施形態に従うと、ｌｉｇｈｔｉｎｇＥｎａｂｌｅｄＦｌａｇは、照射処理が複数の動作、例えば照射処理及びスキン処理を実行する２次処理の間に任意に実行される場合に使用することができる。
【００８８】
ｎｕｍＡｃｔｉｖｅＬｉｇｈｔｓ：頂点毎に適用されるライトの数を指定する変数。１つ以上の実施形態に従うと、８つまでのライトがサポートされ、アクティブなライトは番号順である。（例えば３つのアクティブなライトはライト０，１，２を参照する）
ｎｕｍＬｉｇｈｔｓＵｐｄａｔｅｄ：ｌｉｇｈｔｉｎｇＩｎｆｏＰｔｒ変数値によって指される照射処理情報配列の数を指定する変数。１つ以上の実施形態に従うと、現在のコマンドに対して照射処理計算が頂点上で実行される前に、コマンドとともに送られるライト情報配列は更新されるべきであり、更新されていない任意のアクティブなライトは、その前の値を使用する。
【００８９】
ｌｉｇｈｔＵｐｄａｔｅＭａｓｋ：ｌｉｇｈｔｉｎｇＩｎｆｏＡｒｒａｙＰｔｒを使用してどのライトが更新されるべきであるかを示すビットフィールドを含む変数。ビットセットの数は、ｎｕｍＬｉｇｈｔｓＵｐｄａｔｅｄのエントリに対応する。最下位ビットはライト０に対応し、ビット７はライト７に対応する。最上位ビットが設定（０ｘ８０００）されている場合、現在のコマンド対して、更新されたマテリアル構造がある。
【００９０】
Ｍａｔｅｒｉａｌ：照射処理モデルデータが更新されている場合、照射処理モデルデータを更新するために、必要であるならば、使用することができるデータ構造。この構造の存在は、ｌｉｇｈｔＵｐｄａｔｅＭａｓｋ変数の最上位ビットの値を設定することによって識別することができる。マテリアルデータ構造の定義の例は、以下に提供される。
【００９１】
ＵｐｄａｔｅｄＬｉｇｈｔｓ：照射処理情報構造の数、例えばｎｕｍＬｉｇｈｔｓＵｐｄａｔｅｄを（必要とされる場合）含むデータ構造。その各々は、最後のコマンドから変化しているライトに対する新しいデータを含む。１つ以上の実施形態に従うと、２次処理は、ｌｉｇｈｔＵｐｄａｔｅＭａｓｋ変数を使用して、更新されている実際のライトにライト構造をマッピングする。
【００９２】
ｂｏｎｅＣｏｕｎｔ：スキン処理の中で使用される頂点毎にボーンの数を含む変数。１つ以上の実施形態に従うと、値が０と等しい場合、２次プロセッサは、マトリックスパレット［０］を適用する。それは、ＭＶＴを含むが、この場合においては変換された頂点を出力しない。例えば、その結果、アイスペース頂点は、照明処理計算のみのために使用される。
【００９３】
ｍａｔｒｉｘＰａｌｅｔｔｅＰｔｒ−最後のＣＣＧからのマトリックスパレットエントリ変化を含む４ｘ４固定点マトリックスのバッファへのポインタを含む変数。このバッファのサイズは、ｉｎｃｌｕｄｅｄＭａｔｒｉｃｅｓＳｉｚｅエントリによって示され、インデックスマップは、ＭＰＩｎＵｓｅビットマスクに含まれる。
【００９４】
ｉｎｃｌｕｄｅｄＭａｔｒｉｃｅｓＳｉｚｅ：ｍａｔｒｉｘＰａｌｅｔｔｅＰｔｒによって指されるマトリックスパレットのバイトでのサイズを示す変数。１つ以上の実施形態に従うと、バッファは、更新されたマトリックスだけを含む必要があり、ＭＰＩｎＵｓｅマスク変数におけるフィールドを使用して、データをコピーするための適切なインデックス位置を決定する。
【００９５】
ＭＰＩｎＵｓｅ０−１５：各々のビットセットが、ｍａｔｒｉｘＰａｌｅｔｔｅＰｔｒ変数によって指されるバッファに含まれる更新されたマトリックスパレットに対応している、１６ビットマスク。最下位ビットは、マトリックスインデックス０に対応する。その一方で、例えば、最上位ビットは、マトリックスインデックス１５に対応する。
【００９６】
ＭＰＩｎＵｓｅ１６−３１：各々のビットセットが、ｍａｔｒｉｘＰａｌｅｔｔｅＰｔｒによって指されるバッファに含まれる更新されたマトリックスパレットに対応している１６ビットマスク。最下位ビットはマトリックスインデックス１６に対応する。その一方で、例えば、最上位ビットは、マトリックスインデックス３１に対応する。
【００９７】
ＭＰＩｎＵｓｅ３２−４７：各々のビットセットが、ｍａｔｒｉｘＰａｌｅｔｔｅＰｔｒによって指されるバッファに含まれる更新されたマトリックスパレットに対応している１６ビットマスク。最下位ビットはマトリックスインデックス３２に対応する。その一方で、例えば、最上位ビットは、マトリックスインデックス４７に対応する。
【００９８】
下記は、本開示の１つ以上の実施形態に従って実行される２次処理によって、例えば、照射処理によって使用することができるマテリアルデータ構造の内容の例を提供する。
【００９９】
Ｌｉｇｈｔ Ｍｏｄｅｌ Ａｍｂｉｅｎｔ Ｓｃｅｎｅ Ｃｏｌｏｒ（ＲＧＢＡ）−照射処理モデルに対して使用することができるＡｍｂｉｅｎｔ Ｓｃｅｎｅ色の組を含む。
【０１００】
Ｍａｔｅｒｉａｌ Ｅｍｉｓｓｉｖｅ（ＲＧＢＡ）−Ｍａｔｅｒｉａｌ Ｅｍｉｓｓｉｖｅ色に対して使用することができる固定点ＲＧＢＡ色の組を含む。
【０１０１】
Ｍａｔｅｒｉａｌ Ａｍｂｉｅｎｔ（ＲＧＢＡ）−Ｍａｔｅｒｉａｌ Ａｍｂｉｅｎｔ色に対して使用することができる固定点ＲＧＢＡ色の組を含む。
【０１０２】
Ｍａｔｅｒｉａｌ Ｄｉｆｆｕｓｅ（ＲＧＢＡ）−Ｍａｔｅｒｉａｌ Ｄｉｆｆｕｓｅ色に対して使用することができる固定点ＲＧＢＡ色の組を含む。
【０１０３】
Ｍａｔｅｒｉａｌ Ｓｐｅｃｕｌａｒ（ＲＧＢＡ）−Ｍａｔｅｒｉａｌ Ｓｐｅｃｕｌａｒ色に対して使用することができる固定点ＲＧＢＡ色の組を含む。
【０１０４】
Ｍａｔｅｒｉａｌ Ｓｐｅｃｕｌａｒ Ｅｘｐｏｎｅｎｔ−固定点Ｍａｔｅｒｉａｌ Ｓｐｅｃｕｌａｒ Ｅｘｐｏｎｅｎｔ係数を含む。それは、０．０及び１２８．０の間の範囲にわたることができる。
【０１０５】
下記は、データ構造、例えばライトモデルデータ構造の付加的な例を提供することができる。これは、１つ以上の実施形態に従って２次処理によって使用することができる。制限しない例として、ライトモデルデータ構造は、２次処理の中で実行される照射処理の中で使用される各々のライトモデルに対して存在することができる。
【０１０６】
Ａｍｂｉｅｎｔ（ＲＧＢＡ）−Ａｍｂｉｅｎｔ Ｌｉｇｈｔ Ｃｏｍｐｏｎｅｎｔに対する固定点値を含む。
【０１０７】
Ｓｐｏｔｌｉｇｈｔ Ｖｅｃｔｏｒ（ＸＹＺ）−スポットライトが使用される場合、スポットライト方向ベクトルを含む。
【０１０８】
Ｄｉｆｆｕｓｅ（ＲＧＢＡ）−Ｄｉｆｆｕｓｅ Ｃｏｍｐｏｎｅｎｔに対する固定点値を含む。
【０１０９】
Ｓｐｅｃｕｌａｒ（ＲＧＢＡ）−Ｓｐｅｃｕｌａｒ Ｃｏｍｐｏｎｅｎｔに対する固定点値を含む。
【０１１０】
Ｓｐｏｔｌｉｇｈｔ Ｃｕｔｏｆｆ Ｃｏｓｉｎｅ−スポットライトに対するコサインカットオフ値を含む。例えば、コサイン値は、１．０から０．０（０度から９０度）または−１（１８０度）までの範囲にわたることができる。−１（１８０度）の特別な場合において、ライトは、スポットライトではなく、全方向のライトである。
【０１１１】
Ｓｐｏｔｌｉｇｈｔ Ｅｘｐｏｎｅｎｔ−スポットライトが使用される場合、固定点Ｓｐｏｔｌｉｇｈｔ Ｅｘｐｏｎｅｎｔを含む。
【０１１２】
Ｌｉｇｈｔ Ｐｏｓｉｔｉｏｎ（ＸＹＺＷ）−固定点ライト位置または方向を含む。Ｗ成分の値が０である場合、そのときライトは無限の方向のライトであり、そうでなければポジショナルライトである。Ｗが０である場合、Ａｔｔｅｎｕａｔｉｏｎ及びＳｐｏｔｌｉｇｈｔ値は無視することができる。
【０１１３】
Ａｔｔｅｎｕａｔｉｏｎ Ｆａｃｔｏｒ（一定）−減衰係数に対する一定の値を含む。
【０１１４】
Ａｔｔｅｎｕａｔｉｏｎ Ｆａｃｔｏｒ（１次）−減衰係数の１次成分を含む。
【０１１５】
Ａｔｔｅｎｕａｔｉｏｎ Ｆａｃｔｏｒ（２次）−減衰係数の２次成分を含む。
【０１１６】
本開示の実施形態は、システム、方法及び装置を提供する。その中で２次プロセッサユニットは、グラフィックスパイプラインデータ上で動作するように構成されている。グラフィックスパイプラインにおいて実行する１つ以上のモジュールに対して出力が利用可能となるように、２次プロセッサからの出力は、グラフィックスパイプラインに統合されている。このような実施形態に従うと、２次プロセッサを使用するかどうかについて決定が行われ、２次プロセッサが使用されるべきである場合、１つ以上のコマンドを含むことができるコマンドストリームが２次プロセッサに提供される。２次処理は、コマンドストリームに含まれる情報を使用し、１つ以上のグラフィックスパイプライン処理モジュールと同期してバッファに入れられたグラフィックスパイプラインデータ上で動作する。その結果、２次プロセッサの処理モジュールも、どんなグラフィックスパイプライン処理モジュールもデータに上書きしない。ＳＰＭＭは、２次処理モジュールの処理ステータスを含むフィードバック情報を使用して、グラフィックスパイプライン処理モジュール及び２次処理モジュールによるデータアクセスを同期させるために１つ以上のＳＰＩＭと組み合わさって動作する。
【０１１７】
そうすることにおいて、本開示の実施形態は、利用可能な２次プロセッサを使用して処理負荷のバランスを保たせる能力を提供する。そうでなければアイドルであるままであるかもしれない２次プロセッサを使用して、グラフィックス処理ユニットによって実行されるグラフィックスパイプライン処理及び／または中央処理ユニット、すなわち他の処理ユニットによって実行される処理を促進することができる。したがって、例えば、そうでなければ処理リソースを待つかもしれない動作は、利用可能な２次プロセッサに向けることができる。これは、より速いスループットになる。２次プロセッサが使用されていない処理上で２次プロセッサを使用して、例えばフレーム／秒において測定されるスループットにおいて増加があるということが測定されていることは有利なことである。更に、本開示の実施形態は、２次処理からフィードバックされた情報を使用して、負荷のバランス処理を実行することができる。フィードバックを使用して、例えば、いつ２次プロセッサがあるしきい値処理レベルに達しているかを決定することができる。２次プロセッサがしきい値処理能力に達することが決定されるとき、処理は、中央処理ユニットのような、別の処理ユニットに向けることができる。
【０１１８】
更に、本開示の実施形態は、その１次処理目的以外のために処理ユニットを使用し、このような処理ユニットが利用可能である場合に１つ以上の他の２次機能を実行する能力を提供する。そうでなければアイドルであるかもしれないこのようなハードウェア、例えば処理ユニットの使用は、ハードウェアのより効率的な使用となる。
【０１１９】
１つ以上の例示的な実施形態において、記述されている機能は、ハードウェア、ソフトウェア、及び／またはファームウェア、またはそれらの任意の組み合わせにおいて実現することができる。ハードウェアにおいて実現される場合、機能は、１つ以上のマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）またはそれと同様なものにおいて実現することができる。このような構成要素は、通信システム、データ書き込み及び／または読み込みシステム、あるいは他のシステムに存することができる。ソフトウェアにおいて実現される場合、機能は、コンピュータ読み取り可能媒体上に、１つ以上の命令またはコードとして記憶させることができ、また、１つ以上の命令またはコードとしてコンピュータ読み取り可能媒体上で送信することができる。コンピュータ読み取り可能媒体は、ある場所から別の場所にコンピュータプログラムの転送を促進する任意の媒体を含む通信媒体及びタンジブルコンピュータ記憶媒体を含む。記憶媒体は、コンピュータによってアクセスすることができる任意の利用可能な媒体とすることができる。制限でない例として、このようなコンピュータ読み取り可能媒体は、ＲＡＭ、フラッシュメモリ、リードオンリーメモリ（ＲＯＭ）、電気的消去可能でプログラム可能なリードオンリーメモリ（ＥＥＰＲＯＭ）、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）または他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、またはコンピュータによってアクセスすることができ、データ構造または命令の形態で望まれるプログラムコードを記憶するために使用することができる他の任意の媒体を含むことができる。“コンピュータ読み取り可能媒体”という用語はまた、タンジブルコンピュータプログラム製品として定義することもできる。ここで用いられるディスク（disk）及びディスク（disc）は、コンパクト・ディスク（disc）（ＣＤ）、レーザー・ディスク（disc）、光ディスク（disc）、デジタル・バーサタイル・ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）及びブルーレイ（登録商標）・ディスク（disc）を含み、“ディスク（disk）”は通常データを磁気的に再生するのに対し、“ディスク（disc）”はレーザによって光的にデータを再生する。上記の組み合わせもまた、コンピュータ読み取り可能媒体の範囲内に含まれるべきである。
【０１２０】
最も実際的で好ましい実施形態であると現在考えられる点から装置及び方法を記述したが、開示が開示された実施形態に制限される必要がないことが理解されるべきである。特許請求の範囲の精神及び範囲内に含まれる様々な変更及び同様の構成をカバーすることが意図されている。その範囲は、全てのこのような変更及び同様の構造を包含するように最も広い解釈と一致されるべきである。本開示は、以下の特許請求の範囲の任意の及び全ての実施形態を含む。
【図１】
2011505633.tif 000003
【図２】
2011505633.tif 000004
【図３Ａ】
2011505633.tif 000005
【図３Ｂ】
2011505633.tif 000006
【図４】
2011505633.tif 000007
【図５】
2011505633.tif 000008
【図６Ａ】
2011505633.tif 000009
【図６Ｂ】
2011505633.tif 000010
【図７】
2011505633.tif 000011
【図８】
2011505633.tif 000012
【図９】
2011505633.tif 000013
【手続補正書】
【提出日】平成22年8月2日(2010.8.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１２０
【補正方法】変更
【補正の内容】
【０１２０】
最も実際的で好ましい実施形態であると現在考えられる点から装置及び方法を記述したが、開示が開示された実施形態に制限される必要がないことが理解されるべきである。特許請求の範囲の精神及び範囲内に含まれる様々な変更及び同様の構成をカバーすることが意図されている。その範囲は、全てのこのような変更及び同様の構造を包含するように最も広い解釈と一致されるべきである。本開示は、以下の特許請求の範囲の任意の及び全ての実施形態を含む。  
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
〔１〕ドロー要求に応じて、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有することと、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求することと、
前記割り付け要求が成功した場合に、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にすることと、
前記処理ユニットの処理ステータスを監視することと、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することと
を具備する、方法。
〔２〕前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、前記〔１〕に記載の方法。
〔３〕前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、前記〔１〕に記載の方法。
〔４〕前記処理ユニットがその１次処理機能を実行しているかどうかを決定することと、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付けることと
を更に具備する、前記〔１〕に記載の方法。
〔５〕  前記割り付け要求が成功した場合に、前記方法は、前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成することを更に具備する、前記〔１〕に記載の方法。
〔６〕前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別することと、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定することと、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせることと
を更に備える、前記〔１〕に記載の方法。
〔７〕グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、
前記グラフィックス処理ユニットに結合されている２次処理マネージャとを具備し、
前記２次処理マネージャは、
前記２次処理マネージャに結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するように構成され、前記処理ユニットが１次処理機能を有し、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求するように構成され、
前記割り付け要求が成功した場合に、前記２次処理マネージャは、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、
前記処理ユニットの処理ステータスを監視し、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する
ように更に構成されている、装置。
〔８〕前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、前記〔７〕に記載の装置。
〔９〕前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、前記〔７〕に記載の装置。
〔１０〕前記２次処理マネージャに結合されている割り付け器を更に具備し、前記割り付け器は、
前記前記処理ユニットがその１次処理機能を実行しているかどうかを決定し、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける
ように構成されている、前記〔７〕に記載の装置。
〔１１〕前記割り付け要求が成功した場合に、前記２次処理マネージャは、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成するように更に構成されている、前記〔７〕に記載の装置。
〔１２〕前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するように構成されている前記２次処理マネージャは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別し、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定し、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせる
ように更に構成されている、前記〔７〕に記載の装置。
〔１３〕コンピュータ実行可能なプログラムコードが記憶されているコンピュータ読み取り可能なメモリ媒体であって、前記プログラムコードは、
ドロー要求に応じて、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有し、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求し、
前記割り付け要求が成功した場合に、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、
前記処理ユニットの処理ステータスを監視し、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する
ためのコードを備える、コンピュータ読み取り可能なメモリ媒体。
〔１４〕前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、前記〔１３〕に記載の媒体。
〔１５〕前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、前記〔１３〕に記載の媒体。
〔１６〕処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するための前記プログラムコードは、
前記処理ユニットがその１次処理機能を実行しているかどうかを決定するためのコードを更に備える、前記〔１３〕に記載の媒体。
〔１７〕前記処理ユニットがその１次処理機能を実行しているかどうかを決定し、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける
ためのプログラムコードを更に備える、前記〔１３〕に記載の媒体。
〔１８〕前記割り付け要求が成功した場合に、前記プログラムコードは、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成するためのコードを更に備える、前記〔１３〕に記載の媒体。
〔１９〕前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するためのプログラムコードは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別し、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定し、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせる
ためのプログラムコードを更に備える、前記〔１３〕に記載の媒体。
〔２０〕グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、
前記グラフィックス処理ユニットに結合されている２次処理管理手段とを具備し、
前記２次処理管理手段は、
前記２次処理管理手段に結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが１次処理機能を有する手段と、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求する手段と
を備え、
前記割り付け要求が成功した場合に、前記２次処理管理手段は、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にする手段と、
前記処理ユニットの処理ステータスを監視する手段と、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する手段と
を更に備える、装置。
〔２１〕前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、前記〔２０〕に記載の装置。
〔２２〕前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、前記〔２０〕に記載の装置。
〔２３〕前記２次処理管理手段に結合されている割り付け手段を更に具備し、前記割り付け手段は、
前記処理ユニットがその１次処理機能を実行しているかどうかを決定する手段と、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける手段と
を備える、前記〔２０〕に記載の装置。
〔２４〕前記割り付け要求が成功した場合に、前記２次処理管理手段は、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成する手段を更に具備する、前記〔２０〕に記載の装置。
〔２５〕前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する手段は、
１つ以上のグラフィックパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別する手段と、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定する手段と、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックパイプライン処理モジュールをさせる手段と
を備える、前記〔２０〕に記載の装置。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ドロー要求に応じて、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが前記グラフィックスパイプラインの外側のデータを処理し、１次処理機能を有することと、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求し、前記２次処理機能が前記処理ユニットにとって任意であり、前記グラフィックスパイプラインの外側のグラフィックスパイプラインデータを処理することを備えることと、
前記割り付け要求が成功した場合に、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にすることと、
前記処理ユニットの処理ステータスを監視することと、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することと、
前記割り付け要求が失敗した場合に、前記グラフィックスパイプラインの内側の前記グラフィックスパイプラインデータを処理することと
を具備する、方法。
【請求項２】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、請求項１に記載の方法。
【請求項３】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、請求項１に記載の方法。
【請求項４】
前記処理ユニットがその１次処理機能を実行しているかどうかを決定することと、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付けることと
を更に具備する、請求項１に記載の方法。
【請求項５】
前記割り付け要求が成功した場合に、前記方法は、前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成することを更に具備する、請求項１に記載の方法。
【請求項６】
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合することは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別することと、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定することと、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせることと
を更に備える、請求項１に記載の方法。
【請求項７】
グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、
前記グラフィックス処理ユニットに結合されている２次処理マネージャとを具備し、
前記２次処理マネージャは、
前記２次処理マネージャに結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するように構成され、前記処理ユニットが前記グラフィックスパイプラインの外側のデータを処理し、１次処理機能を有し、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求するように構成され、前記２次処理機能が前記処理ユニットにとって任意であり、前記グラフィックスパイプラインの外側のグラフィックスパイプラインデータを処理することを備え、
前記割り付け要求が成功した場合に、前記２次処理マネージャは、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、
前記処理ユニットの処理ステータスを監視し、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合し、
前記割り付け要求が失敗した場合に、前記グラフィックスパイプラインの内側の前記グラフィックスパイプラインデータを処理する
ように更に構成されている、装置。
【請求項８】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、請求項７に記載の装置。
【請求項９】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、請求項７に記載の装置。
【請求項１０】
前記２次処理マネージャに結合されている割り付け器を更に具備し、前記割り付け器は、
前記前記処理ユニットがその１次処理機能を実行しているかどうかを決定し、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける
ように構成されている、請求項７に記載の装置。
【請求項１１】
前記割り付け要求が成功した場合に、前記２次処理マネージャは、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成するように更に構成されている、請求項７に記載の装置。
【請求項１２】
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するように構成されている前記２次処理マネージャは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別し、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定し、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせる
ように更に構成されている、請求項７に記載の装置。
【請求項１３】
コンピュータ実行可能なプログラムコードが記憶されているコンピュータ読み取り可能なメモリ媒体であって、前記プログラムコードは、
ドロー要求に応じて、処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが前記グラフィックスパイプラインの外側のデータを処理し、１次処理機能を有し、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求し、前記２次処理機能が前記処理ユニットにとって任意であり、前記グラフィックスパイプラインの外側のグラフィックスパイプラインデータを処理することを備え、
前記割り付け要求が成功した場合に、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にし、
前記処理ユニットの処理ステータスを監視し、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合し、
前記割り付け要求が失敗した場合に、前記グラフィックスパイプラインの内側の前記グラフィックスパイプラインデータを処理する
ためのコードを備える、コンピュータ読み取り可能なメモリ媒体。
【請求項１４】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、請求項１３に記載の媒体。
【請求項１５】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、請求項１３に記載の媒体。
【請求項１６】
処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定するための前記プログラムコードは、
前記処理ユニットがその１次処理機能を実行しているかどうかを決定するためのコードを更に備える、請求項１３に記載の媒体。
【請求項１７】
前記処理ユニットがその１次処理機能を実行しているかどうかを決定し、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける
ためのプログラムコードを更に備える、請求項１３に記載の媒体。
【請求項１８】
前記割り付け要求が成功した場合に、前記プログラムコードは、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成するためのコードを更に備える、請求項１３に記載の媒体。
【請求項１９】
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合するためのプログラムコードは、
１つ以上のグラフィックスパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別し、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定し、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックスパイプライン処理モジュールをさせる
ためのプログラムコードを更に備える、請求項１３に記載の媒体。
【請求項２０】
グラフィックスパイプラインを実行するように構成されているグラフィックス処理ユニットと、
前記グラフィックス処理ユニットに結合されている２次処理管理手段とを具備し、
前記２次処理管理手段は、
前記２次処理管理手段に結合されている処理ユニットがグラフィックスパイプライン処理を支援するために利用可能であるかどうかを決定し、前記処理ユニットが前記グラフィックスパイプランの外側のデータを処理し、１次処理機能を有する手段と、
グラフィックスパイプライン処理を支援するための、前記処理ユニットの前記１次処理機能以外の２次処理機能を実行するために、前記処理ユニットの割り付けを要求し、前記２次処理機能が前記処理ユニットにとって任意であり、前記グラフィックスパイプラインの外側のグラフィックスパイプラインデータを処理することを備える手段と
を備え、
前記割り付け要求が成功した場合に、前記２次処理管理手段は、
グラフィックスパイプラインデータを前記処理ユニットに利用可能にする手段と、
前記処理ユニットの処理ステータスを監視する手段と、
前記処理ステータスを使用して、前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する手段と、
前記割り付け要求が失敗した場合に、前記グラフィックスパイプラインの内側の前記グラフィックスパイプラインデータを処理することと
を更に備える、装置。
【請求項２１】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上の照射処理機能を備える、請求項２０に記載の装置。
【請求項２２】
前記処理ユニットはデジタル信号プロセッサを備え、前記２次処理機能は１つ以上のスキン処理機能を備える、請求項２０に記載の装置。
【請求項２３】
前記２次処理管理手段に結合されている割り付け手段を更に具備し、前記割り付け手段は、
前記処理ユニットがその１次処理機能を実行しているかどうかを決定する手段と、
前記処理ユニットがその１次処理機能を実行していない場合に前記処理ユニットを割り付ける手段と
を備える、請求項２０に記載の装置。
【請求項２４】
前記割り付け要求が成功した場合に、前記２次処理管理手段は、
前記処理ユニットによって使用されるべき情報を通信するためにコマンドストリームを生成する手段を更に具備する、請求項２０に記載の装置。
【請求項２５】
前記処理ユニットによって出力されたデータを前記グラフィックスパイプラインデータに統合する手段は、
１つ以上のグラフィックパイプライン処理モジュール及び前記処理ユニットに関係するデータ依存を識別する手段と、
前記処理ユニットが前記データ依存に関係する依存データを処理し終えたかどうかを前記処理ステータスを使用して決定する手段と、
前記処理ユニットが前記依存データを処理し終えるまで、前記依存データを待つように前記１つ以上のグラフィックパイプライン処理モジュールをさせる手段と
を備える、請求項２０に記載の装置。
【国際調査報告】
2011505633.tif 000014
2011505633.tif 000015
2011505633.tif 000016