(57)【特許請求の範囲】
【請求項１】
データ処理作業を実行するように構成される処理回路と、
前記処理回路に結合され、かつ、一連のプログラム命令に応じて前記データ処理作業を実行するように前記処理回路を制御する制御信号を生成する、命令デコーダ回路と、
前記処理回路に結合され、かつ、前記処理回路から出力データを受信し、前記出力データに専用処理作業を実行してハードウェア生成結果データを生成するように構成される、専用機能ハードウェアと、を備え、
前記命令デコーダ回路が、前記命令デコーダ回路に前記専用機能ハードウェアまたは前記処理回路をトリガさせる終了命令、およびソフトウェア処理フラグに応じて、現在のソフトウェアルーチンを終了するように前記処理回路を制御する制御信号を生成し、前記出力データを生成し、
（ｉ）前記終了命令のデコード時に、前記ソフトウェア処理フラグが第１の値を有している場合、前記処理回路から前記出力データを受信し、前記ハードウェア生成結果データを生成するために前記専用処理作業を実行するように、前記専用機能ハードウェアをトリガし、または、
（ｉｉ）前記終了命令のデコード時に、前記ソフトウェア処理フラグが第２の値を有している場合、前記ハードウェア生成結果データの代わりにソフトウェア生成結果データを生成するために、前記出力データにさらなるソフトウェアルーチンを実行するように前記処理回路をトリガする、データを処理するための装置。
【請求項２】
前記処理回路が複数のプロセッサを備え、前記命令デコーダ回路は複数の命令デコーダを備え、前記複数のプロセッサのうちの各プロセッサが前記複数の命令デコーダのうちの１つに結合され、前記命令デコーダが一連のプログラム命令に応じて、前記プロセッサを制御する制御信号を生成する、請求項１に記載の装置。
【請求項３】
前記現在のソフトウェアルーチンおよび前記さらなるソフトウェアルーチンが、前記複数のプロセッサの共通の１つによって実行される、請求項２に記載の装置。
【請求項４】
前記プロセッサのそれぞれが、複数の一連のプログラム命令に応じて、複数の処理スレッドを実行する、請求項２に記載の装置。
【請求項５】
前記処理回路が、複数の一連のプログラム命令に応じて、複数の処理スレッドを実行する、請求項１に記載の装置。
【請求項６】
前記装置が専用グラフィックス処理回路である、請求項１に記載の装置。
【請求項７】
前記現在のソフトウェアルーチンがフラグメントシェーダであり、前記出力データが出力ピクセル明度である、請求項６に記載の装置。
【請求項８】
前記専用機能ハードウェアが、前記出力されたピクセル明度および少なくともフレームバッファーメモリ内に現在格納されている現在のピクセル明度に応じて、前記現在のピクセル明度の代わりに前記フレームバッファーメモリに格納される結果ピクセル明度を生成する、混合機能ハードウェアである、請求項７に記載の装置。
【請求項９】
前記さらなるソフトウェアルーチンが、前記出力されたピクセル明度および少なくともフレームバッファーメモリ内に現在格納されている前記現在のピクセル明度に応じて、前記現在のピクセル明度の代わりに前記フレームバッファーメモリに格納される前記結果ピクセル明度を生成する、混合シェーダである、請求項８に記載の装置。
【請求項１０】
前記専用機能ハードウェアが、１つもしくは複数の構成パラメータに応じて、前記専用機能ハードウェアによって実行される前記専用処理作業を変更する、請求項１に記載の装置。
【請求項１１】
前記終了命令が、前記現在のソフトウェアルーチンおよび前記さらなるソフトウェアルーチンを終了させ、かつ、前記命令デコーダ回路が前記終了命令のデコード時に、前記処理回路が前記現在のソフトウェアルーチンを現在実行しているかどうかを示すルーチンフラグに応じて、前記ルーチンフラグが、前記処理回路が前記現在のソフトウェアルーチンを実行していることを示さない場合、前記さらなるソフトウェアルーチンの実行トリガを抑制する、請求項１に記載の装置。
【請求項１２】
前記命令デコーダ回路が、前記装置の構成パラメータとして格納され、前記さらなるソフトウェアルーチンの開始アドレスを指定する、プログラム可能な分岐アドレスに応じる、請求項１に記載の装置。
【請求項１３】
前記終了命令が、１つもしくは複数の所定の依存条件が満たされるまで、前記終了命令によって指定にされた宛先アドレスへ分岐する、請求項１に記載の装置。
【請求項１４】
データ処理作業を実行するための処理手段と、
一連のプログラム命令に応じて、前記データ処理作業を実行するように前記処理手段を制御する制御信号を生成するための命令デコード手段と、
前記処理手段から出力データを受信し、ハードウェア生成結果データを生成するために前記出力データに専用処理作業を実行する、専用機能ハードウェア手段と、を備え
前記命令デコード手段が、前記命令デコード手段に前記専用機能ハードウェア手段または前記処理手段をトリガさせる終了命令、およびソフトウェア処理フラグに応じて、現在のソフトウェアルーチンを終了するように前記処理手段を制御する制御信号を生成し、前記出力データを生成し、
（ｉ）前記終了命令のデコード時に、前記ソフトウェア処理フラグが第１の値を有している場合、前記処理手段から前記出力データを受信し、前記ハードウェア生成結果データを生成するために前記専用処理作業を実行するように、前記専用機能ハードウェア手段をトリガし、または、
（ｉｉ）前記終了命令のデコード時に、前記ソフトウェア処理フラグが第２の値を有している場合、前記ハードウェア生成結果データの代わりにソフトウェア生成結果データを生成するために、前記出力データにさらなるソフトウェアルーチンを実行するように、前記処理手段をトリガする、データを処理するための装置。
【請求項１５】
処理回路を使用したデータ処理作業を実行するステップと、
前記データ処理作業を実行するように前記処理回路を制御する制御信号を生成するために、一連のプログラム命令をデコードするステップと、
前記処理回路から出力データを受信し、そして専用機能ハードウェアを使用してハードウェア生成結果データを生成するために、前記出力データに専用処理作業を実行するステップと、を含み、
前記デコードするステップが、命令デコーダに前記専用機能ハードウェアまたは前記処理回路をトリガさせる終了命令、およびソフトウェア処理フラグに応じて、現在のソフトウェアルーチンを終了するように前記処理回路を制御する制御信号を生成して、前記出力データを生成し、
（ｉ）前記終了命令のデコード時に、前記ソフトウェア処理フラグが第１の値を有している場合、前記処理回路から前記出力データを受信し、前記ハードウェア生成結果データを生成するために前記専用処理作業を実行するように、前記専用機能ハードウェアをトリガし、または、
（ｉｉ）前記終了命令のデコード時に、前記ソフトウェア処理フラグが第２の値を有している場合、前記ハードウェア生成結果データの代わりにソフトウェア生成結果データを生成するために、前記出力データにさらなるソフトウェアルーチンを実行するように、前記処理回路をトリガする、データ処理方法。
【請求項１６】
前記処理回路が複数のプロセッサを備え、前記デコードが複数の命令デコーダによって実行され、前記複数のプロセッサのうちの各プロセッサが前記複数の命令デコーダのうちの１つに結合され、前記命令デコーダが一連のプログラム命令に応じて前記プロセッサを制御する制御信号を生成する、請求項１５に記載の方法。
【請求項１７】
前記現在のソフトウェアルーチンおよび前記さらなるソフトウェアルーチンが前記複数のプロセッサの共通の１つによって実行される、請求項１６に記載の方法。
【請求項１８】
前記プロセッサのそれぞれが、複数の一連のプログラム命令に応じて、複数の処理スレッドを実行する、請求項１６に記載の方法。
【請求項１９】
前記処理回路が、複数の一連のプログラム命令に応じて、複数の処理スレッドを実行する、請求項１５に記載の方法。
【請求項２０】
前記方法が専用グラフィックス処理方法である、請求項１５に記載の方法。
【請求項２１】
前記現在のソフトウェアルーチンがフラグメントシェーダであり、前記出力データが出力ピクセル明度である、請求項２０に記載の方法。
【請求項２２】
前記専用機能ハードウェアが、前記出力されたピクセル明度および少なくともフレームバッファーメモリ内に現在格納されている現在のピクセル明度に応じて、前記現在のピクセル明度の代わりに前記フレームバッファーメモリに格納される結果ピクセル明度を生成する、混合機能ハードウェアである、請求項２１に記載の方法。
【請求項２３】
前記さらなるソフトウェアルーチンが、前記出力ピクセル明度および少なくともフレームバッファーメモリ内に現在格納されている現在のピクセル明度に応じて、前記現在のピクセル明度の代わりに前記フレームバッファーメモリに格納される結果ピクセル明度を生成する、混合シェーダである、請求項２２に記載の方法。
【請求項２４】
前記専用機能ハードウェアが、１つもしくは複数の構成パラメータに応じて、前記専用機能ハードウェアによって実行される前記専用処理作業を変更する、請求項１５に記載の方法。
【請求項２５】
前記終了命令が、前記現在のソフトウェアルーチンおよび前記さらなるソフトウェアルーチンを終了させ、前記命令デコーダが前記終了命令のデコード時、前記処理回路が前記現在のソフトウェアルーチンを現在実行しているかどうかを示すルーチンフラグに応じて、前記ルーチンフラグが、前記処理回路が前記現在のソフトウェアルーチンを実行していることを示さない場合、前記さらなるソフトウェアルーチンの実行のトリガを抑制する、請求項１５に記載の方法。
【請求項２６】
前記命令デコーダが、前記さらなるソフトウェアルーチンの開始アドレスを指定する構成パラメータとして格納される、プログラム可能な分岐アドレスに応じる、請求項１５に記載の方法。
【請求項２７】
前記終了命令が、１つもしくは複数の所定の依存条件が満たされるまで、前記終了命令によって指定された宛先アドレスへ分岐する、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、プログラム命令を実行するための処理回路とともに、専用処理作業を実行するためにその処理回路に結合された専用機能ハードウェアを含む、データ処理システムに関する。
【背景技術】
【０００２】
専用機能ハードウェアとともに、一連のプログラム命令を実行するための汎用プロセッサの両方を含むデータ処理システムを提供することが知られている。専用機能ハードウェアは、例えば、大量のメディアデータの圧縮または復元等、特定の処理機能を実行するために設計および提供されたアクセラレータハードウェアであり得る。別の例は、特定の作業を実行するためのコプロセッサとともに提供される汎用プロセッサであろう。この場合では、コプロセッサが実装中に存在していない場合、そのコプロセッサを利用しようとするソフトウェアは、通常は例外をトリガし、コプロセッサ（専用機能ハードウェア）によって実行されるはずであった処理を、代わりに汎用プロセッサ上で稼動するエミュレーションソフトウェアにより実行させる。それ故に、コプロセッサの使用は、コプロセッサが存在しているかどうかに依存する。
【発明の概要】
【課題を解決するための手段】
【０００３】
一態様から見ると、本発明は、データ処理作業を実行するよう構成される処理回路と、前記処理回路に結合され、かつ、一連のプログラム命令に応じて前記データ処理作業を実行するように前記処理回路を制御する制御信号を生成する命令デコーダ回路と、前記処理回路に結合され、かつ、前記処理回路から出力データを受信し、前記出力データに専用処理作業を実行してハードウェア生成結果データを生成するように構成される専用機能ハードウェアと、を備え、前記命令デコーダ回路が、終了命令およびソフトウェア処理フラグに応じて、現在のソフトウェアルーチンを終了するように前記処理回路を制御する制御信号を生成し、前記出力データを生成し、（ｉ）前記ソフトウェア処理フラグが第１の値を有している場合、前記処理回路から前記出力データを受信し、前記ハードウェア生成結果データを生成するために前記専用処理作業を実行するように、前記専用機能ハードウェアをトリガし、または、（ｉｉ）前記ソフトウェア処理フラグが第２の値を有している場合、前記ハードウェア生成結果データの代わりにソフトウェア生成結果データを生成するために、前記出力データにさらなるソフトウェアルーチンを実行するように前記処理回路をトリガする、データを処理するための装置を提供する。
【０００４】
本技術は、専用機能ハードウェアが常に提供される実施形態においてさえ、専用機能ハードウェアを使用せず、代わりにソフトウェアルーチンを使用して、いくつかの所望の処理を実行することが望ましい状況があり得ることを認識する。さらに、本技術は、切り替えの制御に関連するハードウェアおよび性能の低オーバーヘッドで専用機能ハードウェアの代わりにソフトウェアルーチンを使用する、かかる切り替えを許可する機構を提供することを模索する。現在のソフトウェアルーチンは、終了命令で終了し、その終了命令のデコードに関与する命令デコーダは、ソフトウェアルーチンがそのソフトウェアルーチンの実行をトリガするのに使用されるべきであることを示すフラグに応じるよう修正される。そうでない場合、デフォルトの動作は常に存在する専用機能ハードウェアを使用するだろう。このようにして、さらなる柔軟性が達成され、それにより専用機能ハードウェアによって容易には提供されない特定の特性を有する処理が、代わりにソフトウェアルーチンによって実行され得る。
【０００５】
本処理回路が、一連のプログラム命令に応じる単一のプロセッサを備え得ることが理解されよう。代替として、処理回路は複数のプロセッサを備えてもよく、命令デコーダ回路は、複数の命令デコーダを備えて、各プロセッサを対応する命令デコーダに結合させることができる。そして、これらのプロセッサと命令デコーダとのそれぞれの組み合わせが、それら自体の一連のプログラム命令に応じることができる。これによって、並行実行環境が提供される。
【０００６】
現在のソフトウェアルーチンおよびさらなるソフトウェアルーチンは異なるプロセッサによって実行可能である。しかし、共通のプロセッサが現在のソフトウェアルーチンを実行し、そしてその後に、続いてさらなるソフトウェアルーチンを実行することは都合がよい、というのも、このことがさらなるソフトウェアルーチンの使用によって利用可能な現在のソフトウェアルーチンによって生成されたそのデータを確保するだけでなく、プロセッサを切り替えなければならないオーバーヘッドおよび複雑さを回避するためである。
【０００７】
システムで実行される該処理は、複数スレッドであってもよい。複数プロセッサにわたる複数スレッドだけでなく、単一プロセッサで実行する複数スレッドがあってもよい。
【０００８】
本技術に一般的な適用性がある間は、該装置が専用グラフィックス処理回路である場合の使用に非常に好適である。かかる専用グラフィックス処理回路は、複数セクションに分解されたタスクで通常高度にコンピュータ的に集約しているが、このセクションのいくつかは専用機能ハードウェアによって実行されるのに非常に好適な一方、プログラムされた汎用プロセッサによってより良好に実行されるものがある。
【０００９】
グラフィックス処理回路がこのコンテキストの間、現在のソフトウェアルーチンは出力ピクセル明度である出力データを生成するフラグメントシェーダであってもよい。この場合、専用機能ハードウェアは、出力されたピクセル明度および少なくともフレームバッファーメモリ内に格納されている現在のピクセル明度に応じて、現在のピクセル明度の代わりにフレームバッファーメモリに格納される結果ピクセル明度を生成する、混合機能ハードウェアであってもよい。かかるフラグメント処理に続く混合処理は、グラフィックス処理環境の典型である。本技術は、提供されている混合機能ハードウェアが、所望の処理特性を提供することができない場合、トリガされる可能性のあるさらなるソフトウェアルーチンが、出力されたピクセル明度および少なくともフレームバッファーメモリ内に格納されている現在のピクセル明度に応じて、現在のピクセル明度の代わりにフレームバッファーメモリに格納される結果ピクセル明度を生成する、混合シェーダになり得ることを容易する。
【００１０】
専用機能ハードウェアは、専用機能ハードウェアによって実行される専用処理作業を修正する１つもしくは複数の構成パラメータに応じてもよい。それ故に、専用機能ハードウェアは実行する処理でいくらかの変形が実施可能であるが、さらなるソフトウェアルーチン等の一連のプログラム命令を実行する汎用プロセッサほどの柔軟性はない。
【００１１】
専用機能ハードウェアがその専用処理作業を開始するようトリガできる方法は、ハードウェアで検出されたかかる格納制御で出力データをメモリに格納し、そしてその後に専用処理ハードウェアの制御をトリガする。
【００１２】
現在のソフトウェアルーチンを終了させる終了命令は、さらなるソフトウェアルーチンも終了させてもよい。これは、命令エンコードの観点から効率的である。この状況では、ルーチンフラグは処理回路が現在のところ現在のソフトウェアルーチンを実行しているかどうかを示すよう提供されていてもよい。それ故に、ルーチンフラグが、処理回路が現在のソフトウェアルーチンを実行しているかどうかを示さない場合、さらなるソフトウェアルーチンの実行トリガは抑制されることになる。
【００１３】
プログラム可能な分岐アドレスは、さらなるソフトウェアルーチンの開始アドレスを指定する構成パラメータとして格納されてもよい。
【００１４】
終了命令は、１つもしくは複数の所定の依存条件が満たされるまで、終了命令それ自体によって指定された宛先アドレスへ分岐するようトリガするように設定されてもよい。それ故に、専用機能ハードウェアによる処理の開始、またはさらなるソフトウェアルーチンは、専用機能ハードウェアまたはソフトウェアルーチンによって、処理をトリガする代わりに分岐機能を実行する終了命令を有することで、１つもしくは複数の所定の依存条件をゲートでコントロールしてもよい。
【００１５】
さらなる態様から見ると、本発明は、データ処理作業を実行する処理手段と、一連のプログラム命令に応じて前記データ処理作業を実行するように前記処理回路を制御する制御信号を生成する、命令デコード手段と、前記処理手段から出力データを受信し、およびハードウェア生成結果データを生成するために前記出力データに専用処理作業を実行する、専用機能ハードウェア手段と、を備え、前記命令デコード手段が終了命令およびソフトウェア処理フラグに応じて、現在のソフトウェアルーチンを終了するように前記処理回路を制御する制御信号を生成し、前記出力データを生成し、（ｉ）前記ソフトウェア処理フラグが第１の値を有している場合、前記処理手段から前記出力データを受信し、前記ハードウェア生成結果データを生成するために前記専用処理作業を実行するように、前記専用機能ハードウェアをトリガし、または、（ｉｉ）前記ソフトウェア処理フラグが第２の値を有している場合、前記ハードウェア生成結果データの代わりにソフトウェア生成結果データを生成するために、前記出力データにさらなるソフトウェアルーチンを実行するように前記処理手段をトリガする、データを処理するための装置を提供する。
【００１６】
さらなる態様から見ると、本発明は、処理回路を使用するデータ処理作業を実行するステップと、前記データ処理作業を実行するための前記処理回路を制御する制御信号を生成する一連のプログラム命令をデコードするステップと、前記処理回路から出力データを受信し、専用機能ハードウェアを使用してハードウェア生成結果データを生成するために前記出力データに前記専用処理作業を実行するステップと、を含み、前記デコードステップが、終了命令およびソフトウェア処理フラグに応じて、現在のソフトウェアルーチンを終了するように前記処理手段を制御する制御信号を生成し、前記出力データを生成し、（ｉ）前記ソフトウェア処理フラグが第１の値を有している場合、前記処理手段から前記出力データを受信し、前記ハードウェア生成結果データを生成するために前記専用処理作業を実行するように、前記専用機能ハードウェアをトリガし、または、（ｉｉ）前記ソフトウェア処理フラグが第２の値を有している場合、前記ハードウェア生成結果データの代わりにソフトウェア生成結果データを生成するために、前記出力データにさらなるソフトウェアルーチンを実行するように前記処理手段をトリガする、データを処理する方法を提供する。
【００１７】
本発明の上述および他の目的、特徴、および利点は、関連する添付の図に関連して読み取られる、以下の例示的実施形態の詳細な説明記述から明らかとなろう。
【図面の簡単な説明】
【００１８】
【図１】専用機能ハードウェアおよび専用機能ハードウェアに代わって使用されるさらなるソフトウェアルーチンの両方を含むグラフィックス処理システムの一部を図的に説明する。
【図２】一連のプログラム命令に応じる汎用プロセッサを図的に説明する。
【図３】プロセッサのアレイ、および、グラフィックスコンテキスト状態およびグラフィックス処理に関連付けられた他のデータを格納するメモリを含む、グラフィックス処理装置を図的に説明する。
【図４】終了命令をデコードする時の命令デコーダの制御を図的に説明するフローチャートである。
【図５】本技術の一実施形態に従った終了命令の機能性を説明する擬似コードである。
【発明を実施するための形態】
【００１９】
図１は図的にグラフィックス処理システム２を説明する。ラスタライザーハードウェア４は、描かれるグラフィックスプリミティブ（例えば、プリミティブトライアングル）を指定するグラフィックスコンテキスト状態６を読み込み、そして、これらから、ラスタライズされたグラフィックスプリミティブの表現の一部として、描かれる１ピクセルに一般的に相当する一連のグラフィックスフラグメントを生成することに関与する。さらなるグラフィックス処理作業が、システム空間変換、頂点およびプリミティブソート等のラスタライザーハードウェア４の動作より先に実行され得ることが理解されよう。
【００２０】
ラスタライザーハードウェア４は、描かれる一連のデータ識別フラグメント（ピクセル）を生成する。これらは、フラグメントそれぞれに関連するピクセル明度の決定のためフラグメントシェーダソフトウェア８に渡される。フラグメントシェーダ８は、グラフィックス処理システム２の汎用プロセッサ上で実行するソフトウェアルーチンの形態で提供される。一般的に、多くの汎用プロセッサは、グラフィックス処理システム内で並行して提供されるので、複数ピクセルは並行して処理されてもよく、他の処理作業と並行して処理されてもよい。
【００２１】
フラグメントシェーダ８（現在のソフトウェアルーチン）は、終了命令で終了する。この終了命令は、所定の依存条件に合致するまで、それ自体に分岐して戻る。このようにして、フラグメントシェーダ８によって生成されたピクセル明度のさらなる処理は、処理シーケンス内の適切な場所に到達するまで（全ての依存関係が合致することに相当する）遅延してよく、そして、ピクセル明度が混合処理の方に渡され得る。
【００２２】
フラグメントシェーダを実行している汎用プロセッサ内で、命令デコーダによってデコードされる終了命令である。命令デコーダ実行は、混合処理をどう実行するかを制御する制御信号を生成する。そのピクセル値の処理（個別処理スレッド）に関連付けられた、グラフィックスコンテキスト状態６は、ｉｎ＿ｆｒａｇｍｅｎｔ＿ｓｈａｄｅｒフラグだけでなく、ｂｌｅｎｄ＿ｓｈａｄｅｒ＿ｅｎａｂｌｅｄフラグも含む。終了命令がデコードされる時、ｂｌｅｎｄ＿ｓｈａｄｅｒ＿ｅｎａｂｌｅｄフラグが真の場合、これは混合処理が、専用混合機能ハードウェア１２よりも、混合シェーダ１０（さらなるソフトウェアルーチン）によって実行されるべきであることを示す。専用混合機能ハードウェア１２および混合シェーダ１０の両方ともシステム内で提供される。それ故に、ｂｌｅｎｄ＿ｓｈａｄｅｒ＿ｅｎａｂｌｅｄフラグが真の場合、混合シェーダ１０は、フレームバッファーメモリ１４内の相当する位置にライトバックされる、ソフトウェア生成結果ピクセル明度を生成するために、フレームバッファーメモリ１４内の相当する位置にある現在のピクセル明度で混合作業を実行するピクセル明度を処理することになる。代替として、ｂｌｅｎｄ＿ｓｈａｄｅｒ＿ｅｎａｂｌｅｄフラグが偽の場合、ピクセル明度は、フレームバッファーメモリ１４に再度書き込まれるハードウェア生成結果ピクセル明度をデフォルトで生成するために存在する、専用混合機能ハードウェア１２によって処理される。それ故に、フラグメントシェーダ８（現在のソフトウェアルーチン）内の同一終了命令は、ｂｌｅｎｄ＿ｓｈａｄｅｒ＿ｅｎａｂｌｅｄフラグに基づいて、専用混合機能ハードウェア１２または混合シェーダ１０（さらなるソフトウェアルーチン）のいずれかの使用をトリガするのに使用されてもよい。
【００２３】
さらなる特徴は、ｉｎ＿ｆｒａｇｍｅｎｔ＿ｓｈａｄｅｒフラグの使用である。これは、フラグメントシェーダ８および混合シェーダ１０の両方を終了するのに使用され得る同一終了命令として提供される。混合シェーダ１０を終了する時、さらなる混合シェーダ１０によって混合シェーダ１０からの出力の処理をトリガすることは不適切である。それ故に、その終了命令に遭遇し、デコードされた時、ｉｎ＿ｆｒａｇｍｅｎｔ＿ｓｈａｄｅｒフラグが、汎用プロセッサがフラグメントシェーダ８を実行していたことを示す場合、終了命令は混合シェーダ１０のみを呼び出すであろう。
【００２４】
図２は、フラグメントシェーダ８および／または混合シェーダ１０を実行するのに使用されてもよいタイプのグラフィックス処理ユニット内の、汎用プロセッサ１６を説明する。フラグメントシェーダ８または混合シェーダ１０を構成するプログラム命令は、命令パイプライン１８に供給されている。命令デコーダ２０は、これらのプログラム命令に応じて、レジスタ２６内に格納されるデータ値を処理中のデータパス２４によって実行される処理作業を制御する制御信号２２を生成する。命令デコーダ２０は、別個のメモリにデータを格納し、その別個のメモリからデータを読み取るためのプロセッサ１６もまた制御することができる。レジスタ２６は、異なる実行スレッド（異なる一連のプログラム命令）間で切り替える時、異なるレジスタバンク間での切り替えの使用によって促進されるプロセッサ１６の複数スレッド機能を示すバンクフォームで説明する。
【００２５】
図３は、プロセッサ１６のアレイ２８を含むグラフィックス処理ユニットを説明する。かかるアレイ２８は、グラフィックス処理作業に非常に好適なタイプの高度な並行処理を促進する。メモリ３０は、プロセッサ１６の個別のインスタンスで実行される、フラグメントシェーダプログラム３２および混合シェーダプログラム３４を格納する。メモリ３０は、結果ピクセル明度が混合処理によってアセンブルされる、フレームバッファー１４も含む。メモリ３０は、終了命令がさらなるソフトウェアルーチン（混合シェーダ１０）の使用をトリガする時、実行されるべき混合シェーダプログラム３４の開始アドレスを示すプログラム可能な分岐宛先アドレス３６とともに、グラフィックスコンテキスト状態６をさらに格納する。
【００２６】
図４は終了命令のデコードを図的に説明するフローチャートである。終了命令はニーモニックＢＲＮＤＥＮＤ（依存関係の無い終了への分岐）を有する。ステップ３８は、終了命令が受信されるまで待機する。終了命令が受信される時、ステップ４０が処理スレッドに関連する全ての依存関係（およびそれ故に終了命令とも関連する）が満たされているかどうかを決定する。全ての依存関係が満たされない時、処理はステップ３８に戻る。
【００２７】
全ての依存関係がステップ４０で満たされる場合、処理は、ｂｌｅｎｄ＿ｓｈａｄｅｒ＿ｅｎａｂｌｅｄフラグが真かどうかについての決定が行われるステップ４２に進む。ｂｌｅｎｄ＿ｓｈａｄｅｒ＿ｅｎａｂｌｅｄフラグが偽の時、処理は、フラグメントシェーダ８からのピクセル明度が、出力（例えば、メモリ３０に書き込まれる）であり、そのピクセル明度を計算するためのフラグメントシェーダスレッド８が終了する、ステップ４４に進む。メモリ３０へのピクセル明度の書き込みは、メモリ３０からそのピクセル明度を読み込み、それに関して専用処理作業を開始するために専用混合機能ハードウェア１２をトリガする。
【００２８】
ステップ４２の決定が、ｂｌｅｎｄ＿ｓｈａｄｅｒ＿ｅｎａｂｌｅｄフラグが真の場合、処理はｉｎ＿ｆｒａｇｍｅｎｔ＿ｓｈａｄｅｒフラグが真か否かに関して決定するステップ４６に進む。ｉｎ＿ｆｒａｇｍｅｎｔ＿ｓｈａｄｅｒフラグが偽である場合、処理は再度ステップ４４に進む。この場合、ピクセル明度が再度出力され、スレッドを終了することになるだろう。しかし、終了したスレッドはフラグメントシェーダ８ではないので、専用混合機能ハードウェア１２によって処理を呼び出すのは不適切である。他の状況データだけでなく、ピクセル明度が格納される位置は、ステップ４４においてピクセル明度の出力時に、専用混合機能ハードウェア１２が呼び出されるべきかどうかを示すのに役立つ。
【００２９】
決定ステップ４６が、ｉｎ＿ｆｒａｇｍｅｎｔ＿ｓｈａｄｅｒフラグが真である場合、処理は、ｉｎ＿ｆｒａｇｍｅｎｔ＿ｓｈａｄｅｒフラグが偽に設定されるステップ４８に進む。これは、混合シェーダ１０が呼び出されようとしていて、それに応じてｉｎ＿ｆｒａｇｍｅｎｔ＿ｓｈａｄｅｒフラグが、実行しようとしているプログラム命令制御プロセスがフラグメントシェーダ処理ではないことを示すべきであるからである。ステップ５０は、メモリ３０内に格納され、混合シェーダプログラム３４の開始アドレスに相当するｂｌｅｎｄ＿ｓｈａｄｅｒ＿ａｄｄｒｅｓｓによって示される宛先アドレスに分岐する。ステップ５２は、混合シェーダ１０を実行し、フレームバッファーメモリ１４に再度書き込まれる結果ピクセル明度を生成する。
【００３０】
図５は、終了命令５４がデコードされるときに実行される処理作業を図的に説明する擬似コードである。これらの処理作業は、図４で説明される。
【００３１】
本発明の例示的実施形態を、本明細書で添付の図面を参照しながら詳細に説明したが、本発明はその正確な実施形態に限られるものではなく、当業者により、添付の特許請求の範囲により定義される本発明の範囲および趣旨から逸脱することなく、種々の変更および修正を生じ得ることが理解されよう。
【符号の説明】
【００３２】
２  グラフィックス処理システム
４  ラスタライザーハードウェア
６  グラフィックスコンテキスト状況
８  フラグメントシェーダ
１０  混合シェーダ
１２  混合機能ハードウェア
１４  フレームバッファーメモリ
【図１】
0005723679.tif 000002
【図２】
0005723679.tif 000003
【図３】
0005723679.tif 000004
【図４】
0005723679.tif 000005
【図５】
0005723679.tif 000006