(57)【要約】描画パイプライン１は多数の異なる描画ユニット２、３を有し、描画するためのフラグメント４を受信する。描画ユニット２、３がフラグメントを描画するとき描画ユニット２、３を設定するために使用される描画状態データを記憶するために、描画器状態ワードキャッシュ５が使用される。各描画ユニット２、３は、受信したフラグメントについて描画操作を実行する機能ブロック１０、描画器状態ワードキャッシュ５から要求される描画状態データを探索するために使用する描画器状態ワードインタフェース１１を含む。描画パイプライン１の描画ユニット２、３が描画されるフラグメントを受信すると、フラグメント４と対応付けられた描画器状態ワードインデックス８を使用して、描画器状態ワードインタフェース１１を用いて描画器状態ワードキャッシュ５から関連する描画状態データを探索し、描画状態データを用いて機能ブロック１０を設定し、フラグメントを描画する。
2008520021.tif 000002
【特許請求の範囲】
【請求項１】
異なる描画状態に設定することが可能な１つまたは複数の描画ユニットを具備する、表示のためのグラフィックスフラグメントを描画する描画器と、
複数のデータセットを記憶する手段と、
を具備し、
各データセットは、前記描画器の描画ユニットを設定するために異なる描画状態を定義し、
描画されるグラフィックスフラグメントを前記記憶された描画状態のデータセットの１つと対応付ける手段と、
記憶された描画状態のデータセットと対応付けられたグラフィックスフラグメントを、描画するために前記描画器の描画ユニットに送出する手段と、
をさらに具備し、
前記描画器の描画ユニットの１つまたは複数は、
描画されるグラフィックスフラグメントと対応付けられた描画状態のデータセットを判定する手段と、
前記判定された描画状態のデータセットに従って前記描画ユニットを設定する手段と、
を具備するグラフィックス処理装置。
【請求項２】
１つまたは複数のフラグメントを対応する描画状態のデータセットと対応付けるためにグラフィックス処理のラスタ化ステップが使用される請求項１に記載のグラフィックス処理装置。
【請求項３】
前記描画器の描画ユニットによってアクセス可能な、前記描画器と対応付けられた１つまたは複数の描画状態のデータセットを記憶するキャッシュメモリを具備し、
前記描画器の描画ユニットは、前記キャッシュメモリから描画状態のデータセットを取得するために探索するように構成される請求項１または２に記載のグラフィックス処理装置。
【請求項４】
描画するために使用される異なる描画状態を定義する複数のデータセットを記憶する第１メモリ手段と、
前記複数の描画状態のデータセットのうちの選択された数のデータセットを記憶するために前記描画器の描画ユニットによってアクセス可能な第２メモリ手段と、
を具備する請求項１から３のいずれか１項に記載のグラフィックス処理装置。
【請求項５】
特定の描画状態に設定することが可能な１つまたは複数の描画ユニットを有する描画器を含むグラフィックス処理システムであって、
描画するために使用される異なる描画状態を定義する複数のデータセットを記憶する第１メモリ手段と、
前記複数のデータセットのうちの選択された数のデータセットを記憶するために前記描画器の描画ユニットによってアクセス可能な第２メモリ手段と、
を具備するグラフィックス処理システム。
【請求項６】
描画するためのプリミティブが受信されると、要求される描画状態のデータセットが前記描画器の描画ユニットによってアクセス可能なメモリに記憶されているか否か検査する手段と、
前記要求される描画状態のデータセットが記憶されていないならば、適切な描画状態のデータセットが前記描画ユニットによってアクセス可能なメモリにおいて利用可能となる時までプリミティブの処理を停止する手段と、
を具備する請求項１から５のいずれか１項に記載のグラフィックス処理装置またはグラフィックス処理システム。
【請求項７】
前記描画器の描画ユニットによる描画状態のデータセットの使用を監視する手段を具備する請求項１から６のいずれか１項に記載のグラフィックス処理装置またはグラフィックス処理システム。
【請求項８】
特定の１つまたは複数の描画状態と対応付けられたグラフィックスフラグメントの前記描画器を通る進行を追跡する手段を具備する請求項１から７のいずれか１項に記載のグラフィックス処理装置またはグラフィックス処理システム。
【請求項９】
描画器と、
描画されるグラフィックスフラグメントを特定の描画状態と対応付ける手段と、
特定の１つまたは複数の描画状態と対応付けられたグラフィックスフラグメントの前記描画器を通る進行を追跡する手段と、
を具備するグラフィックス処理装置。
【請求項１０】
前記描画ユニットによってアクセス可能なメモリにおける描画状態のデータセットの記憶を制御し、かつラスタ化するためのプリミティブの送出および描画するためのフラグメントの送出を制御するリソース割当器を具備する請求項１から９のいずれか１項に記載のグラフィックス処理装置またはグラフィックス処理システム。
【請求項１１】
描画する前にプリミティブの描画状態以外の基準によってプリミティブを整列する手段を具備する請求項１から１０のいずれか１項に記載のグラフィックス処理装置またはグラフィックス処理システム。
【請求項１２】
グラフィックス処理装置において使用する装置であって、
複数のデータセットを記憶する手段を具備し、
各データセットは、グラフィックス処理装置の描画ユニットを設定するために異なる描画状態を定義し、
描画されるグラフィックスフラグメントを前記記憶された描画状態のデータセットの１つと対応付ける手段と、
記憶された描画状態のデータセットと対応付けられたグラフィックスフラグメントを、描画するためにグラフィックス処理装置の描画ユニットに送出する手段と、
を具備する装置。
【請求項１３】
グラフィックスフラグメントを描画状態のデータセットと対応付ける前記手段は、フラグメントについて使用される前記描画状態のデータセットを示すフラグを前記フラグメントに割り当てる手段を具備する請求項１から１２のいずれか１項に記載のグラフィックス処理装置または装置またはグラフィックス処理システム。
【請求項１４】
前記フラグは、前記描画状態のデータセットが記憶されたメモリ位置を示す請求項１３に記載のグラフィックス処理装置または装置またはグラフィックス処理システム。
【請求項１５】
グラフィックス処理装置において使用する描画ユニットであって、
描画されるグラフィックスフラグメントと対応付けられた描画状態を判定する手段と、
前記判定された描画状態に従って前記描画ユニットを設定する手段と、
を具備する描画ユニット。
【請求項１６】
前記描画ユニットの１つまたは複数は、描画状態のデータセットの一部のみを選択的に取得することが可能である請求項１から１５のいずれか１項に記載のグラフィックス処理装置またはグラフィックス処理システムまたは装置または描画ユニット。
【請求項１７】
グラフィックス処理のための描画器において、
描画するためのグラフィックスフラグメントは、それぞれの記憶された描画状態のデータセットに結合され、
前記描画器の描画ユニットは、フラグメントを受信すると前記フラグメントに結合された前記描画状態に従って自身を設定する描画器。
【請求項１８】
グラフィックス処理のための描画器において、
前記描画器の異なる描画ユニットは、同時に異なる描画状態に設定することが可能である描画器。
【請求項１９】
表示のためのグラフィックスフラグメントを描画するための1つまたは複数の描画ユニットを含む描画器を有するグラフィックス処理装置を動作させる方法であって、
前記描画器の描画ユニットを設定するために１つまたは複数の描画状態を定義するデータセットを記憶するステップと、
描画される各フラグメントを前記記憶された描画状態の１つと対応付けるステップと、
描画ユニットが、描画されるフラグメントを受信すると、そのフラグメントと対応付けられた描画状態を判定し、前記判定された描画状態に従って設定され、前記受信したフラグメントについて描画操作を実行するステップと、
を有する方法。
【請求項２０】
１つまたは複数のフラグメントを対応する描画状態のデータセットと対応付けるためにグラフィックス処理のラスタ化ステップを用いるステップを有する請求項１９に記載の方法。
【請求項２１】
前記描画器の描画ユニットによってアクセス可能な、前記描画器と対応付けられたキャッシュメモリに１つまたは複数の描画状態のデータセットを記憶するステップを有し、
前記描画器の描画ユニットは、前記キャッシュメモリから描画状態のデータセットを取得する請求項１９または２０に記載の方法。
【請求項２２】
描画するために使用される異なる描画状態を定義する複数のデータセットを第１メモリ手段に記憶するステップと、
前記複数の描画状態のデータセットのうちの選択された数のデータセットを前記描画器の描画ユニットによってアクセス可能な第２メモリ手段に記憶するステップと、
を有する請求項１９から２１のいずれか１項に記載の方法。
【請求項２３】
特定の描画状態に設定することが可能な１つまたは複数の描画ユニットを有する描画器を含むグラフィックス処理装置を動作させる方法であって、
描画するために使用される異なる描画状態を定義する複数のデータセットを第１メモリ手段に記憶するステップと、
前記複数の描画状態のデータセットのうちの選択された数のデータセットを前記描画器の描画ユニットによってアクセス可能な第２メモリ手段に記憶するステップと、
を有する方法。
【請求項２４】
描画するためのプリミティブが受信されると、要求される描画状態のデータセットが前記描画器の描画ユニットによってアクセス可能なメモリに記憶されているか否か検査するステップと、
前記要求される描画状態のデータセットが記憶されていないならば、適切な描画状態のデータセットが前記描画ユニットによってアクセス可能なメモリにおいて利用可能となる時まで前記プリミティブの処理を停止するステップと、
を有する請求項１９から２３のいずれか１項に記載の方法。
【請求項２５】
前記描画器の描画ユニットによる描画状態のデータセットの使用を監視するステップを有する請求項１９から２４のいずれか１項に記載の方法。
【請求項２６】
特定の１つまたは複数の描画状態と対応付けられたグラフィックスフラグメントの前記描画器を通る進行を追跡するステップを有する請求項１９から２５のいずれか１項に記載の方法。
【請求項２７】
グラフィックス描画器を動作させる方法であって、
描画されるグラフィックスフラグメントを特定の描画状態と対応付けるステップと、
特定の１つまたは複数の描画状態と対応付けられたグラフィックスフラグメントの前記描画器を通る進行を追跡するステップと、
を有する方法。
【請求項２８】
描画する前にプリミティブの描画状態以外の基準によってプリミティブを整列するステップを有する請求項１９から２７のいずれか１項に記載の方法。
【請求項２９】
グラフィックス処理装置を動作させる方法であって、
複数のデータセットを記憶するステップを有し、
各データセットは、前記グラフィックス処理装置の描画ユニットを設定するために異なる描画状態を定義し、
描画されるグラフィックスフラグメントを前記記憶された描画状態のデータセットの１つと対応付けるステップと、
記憶された描画状態のデータセットと対応付けられたグラフィックスフラグメントを描画するために前記グラフィックス処理装置の描画ユニットに送出するステップと、
を有する方法。
【請求項３０】
グラフィックスフラグメントを描画状態のデータセットと対応付ける前記手段は、フラグメントについて使用される前記描画状態のデータセットを示すフラグを前記フラグメントに割り当てるステップを有する請求項１９から２９のいずれか１項に記載の方法。
【請求項３１】
グラフィックス処理装置の描画ユニットを動作させる方法であって、
前記描画ユニットと、
描画されるグラフィックスフラグメントと対応付けられた描画状態を判定するステップと、
前記判定された描画状態に従って自身を設定するステップと、
を有する方法。
【請求項３２】
前記描画ユニットの１つまたは複数が、描画状態のデータセットの一部のみを選択的に取得するステップを有する請求項１９から３１のいずれか１項に記載の方法。
【請求項３３】
グラフィックス処理のための描画器を動作させる方法であって、
描画するためのグラフィックスフラグメントをそれぞれの記憶された描画状態のデータセットに結合し、前記描画器の描画ユニットがフラグメントを受信すると前記フラグメントに結合された前記描画状態に従って自身を設定するステップを有する方法
【請求項３４】
グラフィックス処理のための描画器を動作させる方法であって、
前記描画器の異なる描画ユニットを同時に異なる描画状態に設定するステップを有する方法。
【請求項３５】
データ処理手段において実行されるとき請求項１９から３４のいずれか１項に記載の方法を実行するためのコンピュータソフトウェアコード部分を有するコンピュータプログラムの構成要素。
【請求項３６】
請求項１から１８のいずれか１項に記載のグラフィックス処理装置またはグラフィックス処理システムまたは装置または描画ユニットまたは描画器を含む、または、請求項１９から３４のいずれか１項に記載の方法に従って動作する、３Ｄグラフィックス処理装置または３Ｄグラフィックス処理プラットフォーム。
【請求項３７】
添付図面のいずれか１つを参照して実質的に説明されたグラフィックス処理装置。
【請求項３８】
添付図面のいずれか１つを参照して実質的に説明されたグラフィックス処理システム。
【請求項３９】
添付図面のいずれか１つを参照して実質的に説明されたグラフィックス処理装置において使用する装置。
【請求項４０】
添付図面のいずれか１つを参照して実質的に説明された描画ユニット。
【請求項４１】
添付図面のいずれか１つを参照して実質的に説明されたグラフィックス処理のための描画器。
【請求項４２】
添付図面のいずれか１つを参照して実質的に説明されたグラフィックス処理装置または描画器または描画ユニットを動作させる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、ディスプレイ画面上の表示のための３次元（３Ｄ）グラフィックスの処理に関し、特に、表示のための３次元グラフィックスの描画に関する。
【背景技術】
【０００２】
この技術分野において知られているように、通常、３Ｄグラフィックス処理は、３Ｄグラフィックス処理操作がより容易に実行されることを可能とするために、まず、表示される場面を多数の類似の基本的な構成要素（いわゆる“プリミティブ”）に分割することによって実行される。通常、これらの“プリミティブ”は、三角形のような簡単な多角形の形態であり、通常、それらの頂点を定義することによって描画される。
表示される場面が複数のグラフィックスプリミティブに分割されると、通常、グラフィックスプリミティブは、この技術分野において知られているように、通常、“フラグメント”と呼ばれる離散的な図形単位または図形要素にさらに分割され、それらについて（描画操作のような）実際のグラフィックス処理操作が実行される。そのようなグラフィックフラグメントの各々は、プリミティブにおける与えられた位置を表わし、かつ与えられた位置に対応し、実際、当該位置について（色値および深さ値（depth value）のような）データセットを具備する。
【０００３】
各グラフィックスフラグメント（データ要素）は、通常、最終的な表示における単一のピクセル（画素）に対応する（表示される最終的な画像においてピクセルは特異点であるので、通常、３Ｄグラフィックス処理装置がそれについて動作する“フラグメント”と、表示におけるピクセルとの間に１対１写像が存在する）。しかし、“フラグメント”と“ピクセル”との間の直接の対応が存在しない場合、例えば、最終的な画像を表示する前に描画される画像について縮小のような特定の形態の前処理が実行される場合があり得る。
従って、典型的に実行される３Ｄグラフィックス処理の２つの形態は、グラフィックス“プリミティブ”（または多角形）の位置データをグラフィックスフラグメントの位置データに“ラスタ化すること（rasterising）”（すなわち、表示される場面において各プリミティブを表わすために使用されるグラフィックスフラグメントの（ｘ，ｙ）位置を決定すること）、および、ディスプレイ画面上に表示するために“ラスタ化された”フラグメントを“描画すること”（すなわち、フラグメントに着色、シェーディング等すること）である。
（３Ｄグラフィックス作品において、多くの場合、用語“ラスタ化”は、フラグメントへのプリミティブ変換および描画の両方を意味するために使用される。しかし、ここで“ラスタ化”は、プリミティブデータをフラグメントアドレスに変換することのみを指し示すために使用される。）
【０００４】
基本的に、描画処理は、各フラグメントを表示するために必要なデータを導出することを含む。典型的に、そのようなデータは、各フラグメントについての赤、緑、青（ＲＧＢ）の色値（これらは基本的にディスプレイ上のフラグメントの色を決定する）、および、各フラグメントについてのいわゆる“アルファ” 値（透明値）を含む。
この技術分野において知られているように、典型的に、このデータは、線形方式またはパイプライン方式において順々に、各フラグメント（すなわち、そのフラグメントについてのデータ）について個々の描画処理（ステップ）を実行することによって導出される。従って、例えば、各フラグメントは、まず、例えば、フラグメントが属するプリミティブの頂点について記録された色および透明度のデータに基づいて初期のＲＧＢ値およびアルファ値が割り当てられ、そして、次々に、フラグメントデータに、テクスチャリング（texturing）、ぼかし（fogging）、ブレンディング（blending）、等のような操作が実行される。これらの操作は、最後の処理操作の後に、ディスプレイ画面上にそのフラグメントが正しく表示されることを可能とするために、各フラグメントがＲＧＢ値およびアルファ値の適切なセットを有するように、各フラグメントについて設定された初期のＲＧＢ値およびアルファ値を修正する。このＲＧＢ値およびアルファ値の最後のセットは、ディスプレイ画面上のフラグメントの表示のための準備を完了して記憶される。そして、この処理は、現在描画されている場面の領域における全てのフラグメントについて繰り返される。
【０００５】
典型的に個々の描画操作は互いに独立であるので描画処理はこの方式で実行され、描画処理は、損失なく線形、パイプライン方式で実行することが可能であるように、他の描画ステップまたはフラグメントを参照することなく実行することが可能である。そのようなパイプライン方式で（いわゆる“描画パイプライン”で）描画操作を実行することは、“パイプライン”の異なる描画単位が同時に異なるフラグメントについて操作することが可能であり、それによって、描画処理をより効率的にすることを意味する。
正しい描画操作を実行するために、描画処理の各段階は適切に構成される、すなわち、いわゆる、正しい“描画状態”に設定される必要がある。描画状態は、描画処理の段階が各フラグメントについてどのように操作するかを決定し、典型的に、例えば、アンチエイリアシング（anti-aliasing）モード、ブレンディングモード、ステンシルバッファ操作、テクスチャー機能、テクスチャーマップ情報、ｚ−テストモード、ＲＧＢバッファ書き込みモード、等のうちの１つまたは複数が、グラフィックスフラグメントを描画するために使用されることを決定する。
典型的に、描画状態は、グラフィックス処理装置を駆動する“ドライバ”ソフトウェアによって判定および設定される。（この技術分野において知られているように、典型的に、グラフィックス処理装置は、（例えば、グラフィックス処理装置のホストシステム上の）“マスタ”デバイスによって制御され、マスタデバイスは、マスタデバイス上で動作するソフトウェア“ドライバ”によって、グラフィックス処理装置と通信し、かつグラフィックス処理装置を制御し、マスタデバイスは、グラフィックス処理装置の使用を要求するマスタデバイス上で動作する（ソフトウェア）アプリケーションから受信したコマンドに応答してグラフィックス処理装置と通信し、かつグラフィックス処理装置を制御する。）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
既存の３Ｄグラフィックス処理システムにおいて、通常、描画処理の全てのステージは、まず、所望の描画状態に設定され、そして、描画するためにグラフィックスフラグメントが送出される。言い換えると、描画器全体が、グラフィックスフラグメントが送信される前に、単一の描画状態に設定される。
しかし、これは、描画器の現在の状態と異なる描画状態を用いてフラグメントが描画されるとき（例えば、第１フラグメントが、異なる描画状態を有するもう１つのプリミティブから描画されるとき）、描画器は、新たなフラグメントが描画可能となる前に、その描画状態を新たな描画状態に変更しなければならない。さらに、描画器における現在の全てのフラグメントの処理が完了するまで、描画器の描画状態は変更することができない。実際、これは、描画状態の変更が必要であるとき、新たなフラグメントが描画可能となる前に、新たな描画状態を要求する新たなフラグメントが“停止”され、既に描画器内にあるフラグメントが描画器を通して“排出”され、描画状態が変更されなければならない。これは、描画器の性能を劣化させる。
【０００７】
従って、プリミティブを描画器に“送出”する前に、それらの描画状態に従って描画されるプリミティブを整列することによって、行う必要がある描画状態の変更の数を減少させる試みが知られている。しかし、そのような整列を用いてもなお、状態の変更は比較的頻繁に発生する傾向がある。
また、例えば、描画状態の変更を実行するために必要な時間を減少させるように、描画器に与えられるプリミティブのデータストリームに描画状態変更コマンドおよびデータを含めることによって、描画器状態の変更が行われる速度を向上させる試みが知られている。しかし、そのような操作は、やはり、描画状態の変更を行う必要があるときはいつでも描画器が停止および排出される必要がある。
【課題を解決するための手段】
【０００８】
その結果、出願人は、特に描画状態の変更の文脈において、描画操作を改善する余地が残っていると考える。
本発明の第１態様によれば、異なる描画状態に設定することが可能な１つまたは複数の描画ユニットを具備する、表示のためのグラフィックスフラグメントを描画する描画器と、複数のデータセットを記憶する手段と、を具備し、各データセットは、前記描画器の描画ユニットを設定するために異なる描画状態を定義し、描画されるグラフィックスフラグメントを前記記憶された描画状態のデータセットの１つと対応付ける手段と、記憶された描画状態のデータセットと対応付けられたグラフィックスフラグメントを、描画するために前記描画器の描画ユニットに送出する手段と、をさらに具備し、前記描画器の描画ユニットの１つまたは複数は、描画されるグラフィックスフラグメントと対応付けられた描画状態のデータセットを判定する手段と、前記判定された描画状態のデータセットに従って前記描画ユニットを設定する手段と、を具備するグラフィックス処理装置が提供される。
【０００９】
本発明の第２態様によれば、表示のためのグラフィックスフラグメントを描画するための1つまたは複数の描画ユニットを含む描画器を有するグラフィックス処理装置を動作させる方法であって、前記描画器の描画ユニットを設定するために１つまたは複数の描画状態を定義するデータセットを記憶するステップと、描画される各フラグメントを前記記憶された描画状態の１つと対応付けるステップと、描画ユニットが、描画されるフラグメントを受信すると、そのフラグメントと対応付けられた描画状態を判定し、前記判定された描画状態に従って設定され、前記受信したフラグメントについて描画操作を実行するステップと、を有する方法が提供される。
【００１０】
本発明において、描画されるグラフィックスフラグメントはそれらの描画状態と対応付けされ、そして、描画器の描画ユニットは、フラグメントを描画するために使用すべき描画状態を判定するためにその対応付けを使用する。言い換えると、描画ユニットは描画するためのフラグメントを受信すると、フラグメントと対応付けられた描画状態に基づいてフラグメントについて使用する描画状態を“探索”し、そして、フラグメントを描画する。これは、任意のフラグメントが描画される前に、描画器全体を与えられた描画状態に設定する必要を回避する。また、描画器の描画ユニットは、描画器における残りの描画ユニットの現在の１つまたは複数の描画状態と独立に、そられ自身をそれらの現在のフラグメントに要求される描画状態に、各々効率的に設定することが可能である。
【００１１】
本発明のこの構成の効果は、描画器の描画ユニットが同時に異なる描画状態を要求するフラグメントについて動作することが可能であるように、描画器の異なるユニットを同時に異なる描画状態に設定することが可能である（好ましくは、設定する）ことである。従って、これは、連続するフラグメントの間で描画状態の変更が発生すると、描画器の他のまたは全てのユニットを新たな描画状態に再設定する必要なしに、異なる描画状態を有するフラグメントが同時に描画器に送信される（かつ描画される）ことを可能とする。
【００１２】
従って、本発明は、描画状態の変更による描画器の停止および排出を減少または除去するために用いることが可能であり、それによって、描画操作の速度および効率を増加させ、かつ、より長い（かつより複雑な）描画器の使用を容易にする（そうでなければ、描画状態の変更が発生するごとに描画器を停止および排出する必要があるならば、使用するには非効率過ぎることになり得る）。より長い、かつ、より複雑な描画器の使用が可能であることは、例えば、“リアルタイム”の描画処理においてさえ、フォンシェーディング（phong shading）のような、より複雑な描画操作を実現することを容易にする。
【００１３】
さらに、本発明は描画状態の変更の有害作用を減少させることが可能であるので、描画する前に描画状態に従ってプリミティブおよびフラグメントを事前に整列する必要を減少または除去することが可能である。そしてこれは、プリミティブおよびフラグメントが描画する前に他の基準に従って整列されることを可能とし、効果的であり得る。例えば、プリミティブは、代わりに、深さに従って整列することが可能である（好ましくは、整列する）。
また、本発明は、上述したように動作することが可能である描画ユニット、および、適切にグラフィックスフラグメントを準備することが可能な描画器とともに使用する装置に及ぶ。
【００１４】
本発明の第３態様によれば、グラフィックス処理装置において使用する描画ユニットであって、描画されるグラフィックスフラグメントと対応付けられた描画状態を判定する手段と、前記判定された描画状態に従って前記描画ユニットを設定する手段と、を具備する描画ユニットが提供される。
【００１５】
本発明の第４態様によれば、グラフィックス処理装置において使用する装置であって、複数のデータセットを記憶する手段を具備し、各データセットは、グラフィックス処理装置の描画ユニットを設定するために異なる描画状態を定義し、描画されるグラフィックスフラグメントを前記記憶された描画状態のデータセットの１つと対応付ける手段と、記憶された描画状態のデータセットと対応付けられたグラフィックスフラグメントを、描画するためにグラフィックス処理装置の描画ユニットに送出する手段と、を具備する装置が提供される。
【００１６】
描画状態を定義するために使用されるデータセットは、上述したように、描画器の描画ユニットのために必要な設定情報を含むべきである。従って、描画ユニットは、好ましくは、使用されるアクティブなテクスチャーマップ（例えば、この技術分野において知られているように、使用されるテクスチャーマップが記憶されるメモリアドレスおよびそのテクスチャーマップのサイズ）、使用されるテクスチャー機能およびブレンディングモード、使用されるｚ−バッファおよびステンシルバッファモード、および／または、アンチエイリアシングが有効とされるか否か、等のようなデータを指定する。また、望まれるならば、この技術分野において知られているように、ラスタ化のような、他の操作を指定するためのデータを含むことが可能である。
【００１７】
グラフィックス処理装置がピクセルシェーダー（pixel shader）プログラミング（この技術分野において知られているように、ある３Ｄグラフィックス処理装置は“ピクセルシェーダー”プログラムの使用をサポートし、例えば、特に、フラグメントごとに、より複雑な描画操作を実行するために使用することが可能なピクセルシェーダー処理装置を含むことが可能である）のような操作をサポートする場合、記憶された描画状態データセットは、ピクセルシェーディングプログラムおよび使用されるデータを示すデータを含むことが可能であり、好ましくは、含む。このデータは、例えば、関連するシェーダープログラムが取得されるメモリアドレスおよびそのプログラムのサイズを定義するデータの形式、および／または、描画器のピクセルシェーダー処理装置を設定するために使用される記憶されたピクセルシェーダープログラムへのポインタの形式とすることが可能である。
【００１８】
描画状態データセットは、好ましくは、グラフィックス処理装置のためのドライバソフトウェアによって生成される。それらは、好ましくは、プリミティブごとに指定される。
描画状態データセットは、望まれるように選択および構成することが可能である。それらは、例えば、通常、描画器（例えば、描画パイプライン）について描画状態を定義する場合として構成することが可能である。好ましい実施形態において、データセットは、各データセットが共通の形式を有するように、予め定義されたデータ構造で構成される。最も好ましくは、異なる描画状態を定義するデータセットはデータワードとして構成される。特に好ましい実施形態において、各データセット、例えば、描画状態ワードは、複数の離散的なより小さい部分（例えば、サブワード）に細分され、その各々は、例えば、描画状態の異なる態様を定義する。
【００１９】
描画器の描画ユニットは、望まれるように選択することが可能である。好ましくは、描画器において通常見られる描画ユニットの１つまたは複数を具備する。従って、それらは、好ましくは、例えば、１つまたは複数の関数発生器、テクスチャーマッパー、１つまたは複数のブレンダー、１つまたは複数のぼかし（fogging）ユニット、論理演算ユニット、ピクセルシェーダーユニット、１つまたは複数の出力バッファ、のうちの１つまたは複数を具備する。好ましくは、描画器において複数の描画ユニットが存在する。各描画ユニットは、この技術分野において知られているように、描画ユニットが設定される描画状態に従って、受信するグラフィックスフラグメントを描画する。
【００２０】
好ましい実施形態において、描画器の各描画ユニットは、フラグメントと対応付けられた描画状態を判定し、それ自身をその描画状態に設定する。しかし、これは必須ではなく、従って、もう１つの好ましい実施形態において、個々の描画ユニットのうちのいくつかのみが描画状態“探索”を実行することが可能である。例えば、（全てのブレンディングユニットのような）描画器の選択されたユニットは、一緒にグループにされ、フラグメントがグループ内の第１ユニットにおいて受信されると、そのグループのユニットについて一緒に、単一の描画状態の判定および設定を実行することが可能である。
【００２１】
描画ユニットが描画状態探索を実行するとき、その描画状態について描画状態データセット全体を取得（探索）することが可能であるが、描画ユニットは、それ自身を所望の描画状態に設定可能であることが実際必要である描画状態データセットの部分を探索（取得）するのみであることが好ましい。従って、描画ユニットは、好ましくは、描画状態データセットの選択された部分のみを探索または取得することが可能であり、そうであるべきである。これは、描画するためにフラグメントを受信すると、描画ユニットによって取得されることが必要なデータ量を減少させる。
従って、描画状態データセットの異なる部分は、例えば、描画ユニットは、メモリから描画状態データセット全体を取得する必要なしに適切な描画状態データセットの部分を探索することが可能であるように、データセット全体を探索または取得する必要と関係なく探索することが可能であることが好ましい。
【００２２】
グラフィックスフラグメントが与えられた描画状態データセットと対応付けされる方法は、望まれるように選択することが可能である。最も好ましくは、各フラグメントは、そのフラグメントとともに描画器を通して“渡され”、かつ、そのフラグメントについて使用される描画状態データセットを示すフラグまたはインデックスポインタが割り当てられる。そして、描画ユニットは、記憶された場所から適切な描画状態データを取得するためにフラグメントの描画状態データセットのフラグまたはポインタを使用することが可能である。描画状態データセットのフラグまたはポインタは、好ましくは、描画器を通して“渡される”（ＲＧＢ値のような）フラグメントについて他のデータと対応付けされる。
【００２３】
フラグまたはポインタは、使用される実際の描画状態データセットを識別することが可能であるが、好ましい実施形態において、以下でさらに説明するように、これをせず、代わりに、データセットが記憶されたメモリ位置を単に示す（指し示す）。これは、使用可能な全ての描画状態データセットの間で識別することが潜在的に必要ないので、フラグまたはポインタの複雑さを減少させる。
【００２４】
特に好ましい実施形態において、（典型的に、与えられたプリミティブは、同一の、単一の描画状態を用いてその全体において描画されるので、）描画されるプリミティブは、そのプリミティブを描画するために使用される描画状態データセットと対応付け（およびフラグ付け）され、そして、プリミティブがフラグメントにラスタ化されると、各フラグメントは、プリミティブに割り当てられた描画状態データセットのポインタまたはフラグが割り当てられる。従って、好ましくは、ラスタ化ステップは、フラグメントを対応する描画状態データセットと対応付けるために使用される。
【００２５】
描画器の描画ユニットによって使用するための描画状態データセットを記憶する方法は、同様に望むように選択することが可能である。描画器が同時に異なる描画状態を有するフラグメントを描画することを容易にするように、複数のデータセットを記憶することが好ましい。
【００２６】
しかし、出願人は、使用において同時に描画ユニットによってアクセス可能であるように、多数の描画状態データセット全部を記憶することは、比較的大きくかつ低速なメモリ装置を必要とすることを認識していた。さらに、各フラグメントと対応付けられた描画状態データセットのポインタまたはフラグは、全ての可能な描画状態を識別するように、必然的に十分に大きくなければならない。
【００２７】
従って、特に好ましい実施形態において、場面を描画するために使用される、より限定され、選択された数の使用され得る描画状態データセットが、描画ユニットによるアクセスのために記憶される。これらの描画状態データセットは、好ましくは、描画器に“ローカル”に、好ましくは、描画器と対応付けられたキャッシュメモリのような、より高速にアクセス可能なローカルメモリユニットに記憶される。これは、ローカルメモリユニットに記憶される描画状態データセットを描画ユニットによってより高速に取得することが可能であり、（それらの間で識別するためにより少ないデータセットが存在するので、）各フラグメントと対応付けられた描画状態データセットのポインタをより短くすることが可能であるという効果を有する。
【００２８】
従って、本発明の装置は、好ましくは、描画器と対応付けられ、かつ、１つまたは複数の（好ましくは複数の）描画状態データセットが記憶される描画器の描画ユニットによってアクセス可能なローカルメモリ、好ましくはローカルキャッシュメモリをさらに含む。さらに、描画ユニットは、好ましくは、描画装置にアクセス可能なもう１つのメモリからよりも、このローカルメモリから描画状態データセットを取得するために探索するように構成される。
【００２９】
描画ユニットがアクセスするメモリ、例えばローカルキャッシュメモリにおいて描画ユニットによるアクセスのために記憶される描画状態データセットの数は、望まれるように選択することが可能である。上述したように、記憶されるそのようなデータセットがより多くなると、描画器が同時に処理することが可能な異なる描画状態がより多くなり、従って、描画状態の変更による描画器の停止がより少なくなる傾向がある。一方、記憶されるデータセットがより多くなると、必要なメモリがより大きくなり、システムがより複雑になる。
【００３０】
記憶するデータセットの数は、好ましくは、より長い描画器についてより多くの描画状態が記憶されるように、描画器の長さに基づいて選択される。例えば、描画状態の変更による停止が発生し得ないことを保証するために、描画器において個々に設定可能な描画ユニット（または共通に設定されるユニットのグループ）が存在するのと同じくらい多くの描画状態データセットを記憶すべきである。
【００３１】
出願人は、（比較的少ない）描画器の大多数の実際の実装について、４つの異なる描画状態についてデータを記憶することが、描画状態の変更による描画器の停止の発生を除去することを発見した。８または１６の描画状態が記憶されるならば、描画器の停止の可能性はさらに減少する。従って、好ましくは、４から１６、より好ましくは４、８、または１６、最も好ましくは４の描画状態データセットが、描画ユニットによるアクセスのために記憶される。
【００３２】
描画器の描画ユニットによるアクセスのために限定された数の描画状態データセットが記憶され、特に、描画器のローカルメモリにそれらが記憶される構成において、例えば、ローカルの限定されたメモリが必要なデータセットを記憶していないならば、必要ならばそれらのデータセットが利用可能であるように、当該場面を描画するために必要となり得るまたは必要な描画状態データセットのより多く（好ましくは全て）を、描画器にアクセス可能な、外部メモリのような、もう１つのメモリに記憶することが好ましい。最も好ましくは、データセットは、描画するために必要とされるときに、（全ての）データセットを記憶するより大きなメモリから（その全体の容量に従う）より限定された（ローカルの）メモリにコピーすることが可能である。
【００３３】
そのような構成はそれ自身、新規かつ効果的であると考えられる。従って、本発明の第５態様によれば、特定の描画状態に設定することが可能な１つまたは複数の描画ユニットを有する描画器を含むグラフィックス処理装置を動作させる方法であって、描画される場面を描画するために使用される異なる描画状態を定義する複数のデータセットを第１メモリ手段に記憶するステップと、前記複数の描画状態のデータセットのうちの選択された数のデータセットを前記描画器の描画ユニットによってアクセス可能な第２メモリ手段に記憶するステップと、を有する方法が提供される。
【００３４】
本発明の第６態様によれば、特定の描画状態に設定することが可能な１つまたは複数の描画ユニットを有する描画器を含むグラフィックス処理システムであって、描画される場面を描画するために使用される異なる描画状態を定義する複数のデータセットを記憶する第１メモリ手段と、前記複数のデータセットのうちの選択された数のデータセットを記憶するために前記描画器の描画ユニットによってアクセス可能な第２メモリ手段と、を具備するグラフィックス処理システムが提供される。
【００３５】
上述したように、本発明のこれらの態様および実施形態において、描画器の描画ユニットは、描画状態データセットのサブセットを記憶するメモリにアクセスするのみであることが好ましい。
描画器の描画ユニットによってアクセス可能であるように限定された数の描画状態データセットのみが記憶される場合、上述したように、描画ユニットによって現在アクセス可能でない描画状態を要求するフラグメントが描画されることが必要となる可能性がある。その場合、上述したように、その新たな描画状態が、使用するために描画ユニットにアクセス可能なメモリに書き込み可能であることが好ましい。しかし、出願人は、適切な描画状態データセットが描画ユニットに利用可能となるまで、好ましくは、描画するためにフラグメントが渡されるべきでないと認識している。
従って、特に好ましい実施形態において、（例えば、描画器のローカルメモリに記憶された、）フラグメントと対応付けられた描画状態データセットが描画ユニットにアクセス可能であるならば、描画するためにフラグメントが“送出”されるのみである。必要な描画状態データセットが利用可能でない場合において、関連する描画状態データセットが描画ユニットに利用可能となるまで、フラグメントの処理は中止（停止）されることが好ましい。（当該フラグメントの処理は停止されるが、必要な描画状態データセットが利用可能である他のフラグメントの処理は継続することが可能であり、継続することが好ましいことに留意すべきである。言い換えると、描画処理（パイプライン）は停止せず、当該フラグメント（プリミティブ）のみ停止する。）
【００３６】
上述したように、実際、与えられたプリミティブについての全てのフラグメントは同一の描画状態を有するので、（例えば、描画器のローカルメモリに記憶された、）プリミティブと対応付けられた描画状態データセットが描画ユニットにアクセス可能であるか否かを判定することによってこの操作を実行することが好ましい。描画状態データセットが利用可能であるならば、プリミティブは、フラグメントへのラスタ化および描画のために送出することが可能である。そうでないならば、必要な描画状態データセットが利用可能となるまで、プリミティブは引き止めされる。
フラグメント（プリミティブ）のこの停止は、パイプライン全体（全ての新たなフラグメントの処理）が停止する従来のシステムと対照をなし、本発明において、１つ（または複数）のフラグメント（プリミティブ）の処理が停止しても、適切な描画状態データセットが描画ユニットにアクセス可能な続くフラグメント（プリミティブ）の処理は継続することが望ましい。
【００３７】
従って、特に好ましい実施形態において、描画するためにプリミティブ（またはフラグメント）が受信されると、まず、要求される描画状態データセットが描画器の描画ユニットにアクセス可能な（例えば、ローカル）メモリに記憶されているかを調べる検査が行われる。記憶されているならば、プリミティブ（フラグメント）は通常のように処理するために描画器に渡すことが可能である。描画状態データセットがメモリに記憶されていないならば、適切な描画状態データセットが描画ユニットによってアクセス可能なメモリにおいて利用可能となるまで、プリミティブ（またはフラグメント）の処理は停止し、適切な描画状態データセットが描画ユニットによってアクセス可能なメモリにおいて利用可能となったとき、プリミティブ（フラグメント）は描画するために送信することが可能である。
【００３８】
従って、新たな描画状態データセットが要求されるとき、例えば、（ローカル）メモリにまだ存在しない新たな描画状態を要求するプリミティブまたはフラグメントを描画するとき、描画器の描画ユニットにアクセス可能なメモリに新たな描画状態データセットをロードすることが可能であることが好ましい。上述したように、新たな描画状態データセットのそのようなロードは、予期され、必要とされ得る（全ての）描画状態データセットの既存の記憶からなされることが好ましい。
そのような構成において、描画ユニットにアクセス可能なメモリに新たなデータセットを記憶するための空き容量が存在する場合、新たなデータセットは単純にメモリにロードすることが可能である。しかし、描画状態データセットのためのメモリ容量が全て使用中であるならば、新たなデータセットは既存の記憶された描画状態データセットを置換しなければならない。
【００３９】
後者の場合において、描画ユニットにアクセス可能な（例えば、ローカル）メモリにロードされる新たな描画状態データセットが既に記憶された描画状態データセットを置換する場合、既存の描画状態データセットが描画するためにもはや必要でなくなるまで（例えば、フラグメントが既に描画器に入力され、または、描画器への送信が進行していることが分かっている間は）、既に記憶された描画状態データセットを置換しないことが好ましい。
その時に既存の記憶されたデータセットを置換することが可能でないならば、既存の記憶された描画状態データセットがもはや必要とされず、置換することが可能である時を判定するために、システムはメモリの監視を継続することが好ましい。
【００４０】
従って、本発明による方法および装置は、例えば、描画ユニットにアクセス可能なメモリに既に記憶された描画状態データセットがもはや使用中でないまたは必要とされていないか否か（従って、置換することが可能であるか否か）、および、もはや使用中でないまたは必要とされていない時を判定することが可能であるように、描画ユニットにアクセス可能なメモリに記憶された描画状態データセットの使用を監視するためのステップまたは手段を含むことが好ましい。好ましくは、例えば、当該データセットを必要とするまたは後に必要とするフラグメントが、描画器に存在するか否か、または、描画器に送信されることが予期されるか否かを判定するように、そのような“使用”は、描画器を通して記憶されたデータセットを用いたフラグメントおよび／またはプリミティブの進行を追跡することによって監視することが最も好ましい。そのようなフラグメントが存在しないと判定すると、描画状態データセットは置換することが可能である。
【００４１】
そのような構成はそれ自身、新規かつ効果的であると考えられる。従って、本発明の第７態様によれば、グラフィックス描画器を動作させる方法であって、描画されるグラフィックスフラグメントを特定の描画状態と対応付けるステップと、特定の１つまたは複数の描画状態と対応付けられたグラフィックスフラグメントの前記描画器を通る進行を追跡するステップと、を有する方法が提供される。
【００４２】
本発明の第８態様によれば、描画器と、描画されるグラフィックスフラグメントを特定の描画状態と対応付ける手段と、特定の１つまたは複数の描画状態と対応付けられたグラフィックスフラグメントの前記描画器を通る進行を追跡する手段と、を具備するグラフィックス処理装置が提供される。
【００４３】
各々の記憶されたデータセットを用いたフラグメントの進行の追跡は、好ましくは、最後のそのようなフラグメントが描画器を解放する時を少なくとも判定し、そのデータセットを用いたプリミティブが現在描画されようとしているか否か（それは、そのデータセットを用いてフラグメントが描画器に送信されようとしているか否かを示す）を判定することを含む。
【００４４】
特に好ましい実施形態において、例えば、各々の記憶された描画状態データセットを用いた、フラグメントの進行は、フラグメントおよび／またはプリミティブの進行を追跡する一連のカウンタを保持することによって実行される。
最も好ましくは、各々の記憶された描画状態データセットについて２つのカウンタが保持される。第１カウンタであるプリミティブカウンタは、好ましくは、描画状態データセットを用いるプリミティブが描画されるために送信されるごとに増加（または減少）し、ラスタ化器が特定の描画状態データセットを用いるプリミティブについて最後のフラグメントを送出するごとに減少（または増加）する。第２カウンタは“フラグメント”カウンタであり、描画状態データセットを用いるフラグメントが描画器に送出されるごとに増加（または減少）し、その描画状態データセットを用いるフラグメントの描画が完了するごとに減少（または増加）する。望まれるならば、両方のカウンタがゼロであるとき、描画状態データセットは現在使用中でなく、従って置換することが可能であることを示す。
【００４５】
好ましい実施形態において、本発明の装置は、描画ユニットにアクセス可能なメモリにおける描画状態データセットの記憶（および置換）、および、ラスタ化するためのプリミティブおよび描画するためのフラグメントの適切な送出を制御するリソース割当器を含む。
本発明において、この技術分野において知られているように、プリミティブを描画する前に、描画器状態によってプリミティブを整列することが可能である。それは、描画器状態の変更の発生のために描画が停止する危険性をさらに減少させる。しかし、上述したように、本発明の重要な効果は、描画する前に描画状態によってプリミティブを整列する必要を除去するために用いることが可能であることである。従って、好ましい実施形態において、プリミティブは、描画する前に、もう１つの基準によって（すなわち、描画状態によってではなく）整列される。最も好ましくは、プリミティブは描画する前に深さによって整列される。
【００４６】
上記から理解されるように、本発明は、その好ましい実施形態において、少なくとも、与えられた描画状態データセットを描画される各フラグメントに結合し、描画器の描画ユニットは、フラグメントに結合された描画状態を受信するとそれに従って描画ユニット自身を設定する。言い換えると、フラグメントを受信すると、描画ユニットは、要求される描画状態を判定し、フラグメントを描画する前にその描画状態に自分自身を設定する。
【００４７】
従って、本発明の第９態様によれば、グラフィックス処理のための描画器において、描画するためのグラフィックスフラグメントは、それぞれの記憶された描画状態のデータセットに結合され、前記描画器の描画ユニットは、フラグメントを受信すると前記フラグメントに結合された前記描画状態に従って自身を設定する描画器が提供される。
【００４８】
さらに、本発明は、描画器の描画ユニットが同時に異なる描画状態に設定されることを可能とし、異なる描画状態を要求するフラグメントが同時に描画器に送出され存在することを可能とする。
【００４９】
従って、本発明の第１０態様によれば、グラフィックス処理のための描画器において、前記描画器の異なる描画ユニットは、同時に異なる描画状態に設定することが可能である描画器が提供される。
【００５０】
本発明は、描画器の任意の形態または設定に適用可能であり、上記から理解されるが、特に、“パイプライン”構成を有する描画器に適用可能であり、その場合、描画器は描画パイプラインの形態である。直接モード描画、遅延モード描画、タイルに基づく描画、等のような全ての形態の描画に適用可能である。
【００５１】
上記から理解されるように、本発明は、特に、３Ｄグラフィックス処理装置および処理デバイス、従って、ここで説明した本発明の任意の１つまたは複数の態様に従う装置を含む、または、ここで説明した本発明の任意の１つまたは複数の態様に従って動作する装置を含む、３Ｄグラフィックス処理装置または３Ｄグラフィックス処理プラットフォームに及ぶ。上述した特定の機能を実行するために必要な任意のハードウェアに従って、そのような３Ｄグラフィックス処理装置は、あるいは、３Ｄグラフィックス処理装置が含む任意の１つまたは複数または全ての通常の機能ユニット等を含むことが可能である。
【００５２】
この技術分野の当業者によって理解されるように、説明された本発明の態様および実施形態の全ては、ここで説明される好ましいかつ選択的な特徴の１つまたは複数または全てを含むことが可能である。
本発明による方法は、少なくとも部分的にソフトウェア、例えばコンピュータプログラムを用いて実装することが可能である。従って、さらなる態様から見ると、本発明は、データ処理手段にインストールされると、ここで説明された方法を実行するように具体的に構成されるコンピュータソフトウェア、データ処理手段において実行されるときに上述した方法を実行するためのコンピュータソフトウェアコード部分を有するコンピュータプログラムの構成要素（computer program element）、データ処理システムにおいて実行されるときに上述した１つまたは複数の方法の全てのステップを実行するように構成されたコード手段を有するコンピュータプログラムを提供することが理解される。また、本発明は、データ処理手段を具備するグラフィックス処理装置、描画器、またはマイクロプロセッサシステムを動作させるために使用されるとき、前記データ処理手段と結合して、前記処理装置、描画器、またはシステムに、本発明の方法のステップを実行させるソフトウェアを含むコンピュータソフトウェアの運搬体（carrier）に及ぶ。そのようなコンピュータソフトウェアの運搬体は、ＲＯＭチップ、ＣＤ−ＲＯＭ、またはディスクのような物理的記憶媒体、または、導線上の電子的信号、光信号、または衛星等への無線信号、等の信号とすることが可能である。
【００５３】
さらに、本発明による方法の全てのステップがコンピュータソフトウェアによって実行される必要はなく、従って、さらに広い態様から、本発明は、ここで説明された方法のステップの少なくとも１つを実行するためのコンピュータソフトウェアおよびコンピュータソフトウェアの運搬体に導入されたそのようなソフトウェアを提供することが理解される。
従って、本発明は、コンピュータシステムとともに使用するためのコンピュータプログラム製品として適切に実現することが可能である。そのような実装は、コンピュータ読み取り可能な媒体、例えば、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、またはハードディスクのような有形の媒体に定着された、または、モデムまたは他のインタフェース装置を介して、限定しないが光またはアナログの通信回線を含む有形の媒体上で、または、限定しないがマイクロ波、赤外線、または他の伝送技術を含む無線技術を用いて無形に、コンピュータシステムに送信可能な、一連のコンピュータ読み取り可能な命令を含むことが可能である。一連のコンピュータ読み取り可能な命令は、前述の機能の全部または一部を実現する。
【００５４】
この技術分野の当業者は、そのようなコンピュータ読み取り可能な命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するために多数のプログラム言語で記述することが可能であることを理解する。さらに、そのような命令は、限定しないが、半導体、磁気、または光を含む現在または将来の任意のメモリ技術を用いて記憶すること、または、限定しないが光、赤外線、またはマイクロ波を含む現在および将来の任意の通信技術を用いて伝送することが可能である。そのようなコンピュータプログラム製品は、添付の印刷されたまたは電子的なドキュメントを伴う取り外し可能な媒体、例えばシステムＲＯＭ上のまたは固定ディスク上の、例えば、収縮包装されたソフトウェア、コンピュータシステムに予めロードされて配布し、または、ネットワーク、例えば、インターネットまたはワールドワイドウェブ上で、サーバまたは電子掲示板から配布することが考えられる。
【発明を実施するための最良の形態】
【００５５】
ここで、本発明の多数の好ましい実施形態が、単に例として添付図面を参照して説明される。
上述したように、本発明は、３Ｄグラフィックス処理装置の描画操作に関する。
この技術分野において知られているように、３Ｄグラフィックスオブジェクトが描画されるとき、通常はまず、それらは一連のプリミティブ（多角形）として定義され、そして、プリミティブはグラフィックスフラグメントに分割され、そして、フラグメントは順番に描画される。通常の３Ｄ描画操作の間に、描画器は、フラグメントを正しく表示することができるように、（例えば）各フラグメントと対応付けられたＲＧＢデータを修正する。フラグメントが描画器を完全に移動すると、それらの対応するデータ値はメモリに記憶され、表示のための準備が完了する。
また、各プリミティブは、典型的に、プリミティブがどのようにラスタ化および描画されるかを定義する描画状態（プリミティブのフラグメントを描画するために使用される、例えば、テクスチャーモード、ブレンディングモード、ｚ−テストモード、アンチエイリアシングモード、等）と対応付けされる。通常の経過において、与えられたプリミティブについての描画状態は、３Ｄグラフィックス処理装置を用いるホストシステム上で動作するソフトウェアドライバによって設定される。典型的に、このドライバは、異なる描画状態を定義するデータセットを定義し、そのデータセットは、所望のときに描画器の描画ユニットを正しい描画状態に設定するために用いることができるような方法で記憶される。
【００５６】
図１および図２は、本発明によって動作することが可能な３Ｄグラフィックス処理プラットフォームの実施形態を表わす図である。図１は、グラフィックス処理システム全体を表わす。図２は、より詳細に描画器（描画パイプライン）の動作を表わす。
本発明によるこの実施形態において、描画される各フラグメントは与えられた描画状態と対応付けられ、そして、描画器の各描画ユニットは、描画するためのフラグメントを受信するとフラグメントについての描画状態を“探索”する。
【００５７】
図１に表わされているように、（以下でさらに説明されるように、）グラフィックス処理システム２５は、描画するためのフラグメントを受信する描画パイプライン１の形態の描画器、フラグメントを描画するために描画パイプライン１の描画ユニットがそれら自身を設定することを可能とするために、描画パイプライン１の描画ユニットによるアクセスのために描画状態を定義するデータを記憶するキャッシュメモリ５を含む。
また、グラフィックス処理システムは、（（この技術分野において知られているように）描画されるプリミティブについての頂点等へのポインタを含むプリミティブリスト要素を読み取るための）プリミティブリスト読取器２０、（（プリミティブがラスタ化および描画されるように準備が完了しているときにプリミティブの頂点を決定するために）プリミティブリスト読取器２０によって読み取られたプリミティブリストにおけるポインタによって指し示される頂点データをフェッチするための）頂点ローダー２１、（頂点ローダー２１から受信されたプリミティブデータ上に三角形配置（triangle set up）を実行するための）三角形配置ユニット２２、（この技術分野において知られているように、プリミティブデータを描画するためにプリミティブデータをフラグメント位置に変換するための）ラスタ化器（rasteriser）２３のような、３Ｄグラフィックス処理システムにおいて典型的に存在する多数の他の機能ユニットを含む。
【００５８】
また、図１に表わされているシステムは、システムの各ユニットと通信し、特に、描画器状態キャッシュメモリ５における描画状態データセットの記憶、および、システムの頂点ローディング、三角形配置、ラスタ化、描画パイプラインのステージへのプリミティブ（従って、フラグメント）の送出を制御するために動作することが可能なリソース割当器２４を含む。
キャッシュメモリ５は、描画器状態“ワード”（renderer state word（ＲＳＷ））の形式で異なる描画状態を定義するデータセットを記憶する。各描画器状態ワードは、アクティブなテクスチャーマップ、使用するテクスチャー機能およびブレンディングモード、使用するｚ−バッファおよびステンシルバッファモード、アンチエイリアシングが有効であるか否かのようなデータを指定する、描画パイプライン１のための設定情報を含む。また、描画器状態“ワード”は、１つまたは複数のフラグメントについて使用されるピクセルシェーダープログラム（およびデータ）を示すデータを含むことが可能である。
【００５９】
この実施形態において、各描画器状態ワードは８個のサブワードからなり、各々は３２ビットの大きさであり、連続したメモリに記憶される。しかし、この技術分野の当業者に理解されるように、望むならば、異なる構成を用いることが可能である。
描画器状態ワードキャッシュ５は、４つのレジスタまたはラインを含み、各々が１つの描画器状態ワードを記憶することが可能であり、すなわち、描画器状態ワードキャッシュ５は、いつでも４つの異なる描画器状態ワードを記憶することが可能である。これは、４つの現在の記憶された描画器状態ワードのうち任意の１つと対応付けられたフラグメントが描画パイプライン１を通して進行することを可能とする。（この技術分野の当業者によって理解されるように、望むならば、描画器状態ワードキャッシュ５において他の数の状態ワードレジスタを使用することが可能である。）
【００６０】
描画器状態ワードキャッシュ５に記憶された描画器状態ワードは変更することが可能である。これは、リソース割当器２４の制御のもとで行われる。
描画器状態ワードキャッシュ５における描画器状態ワードの記憶および置換を制御するために、リソース割当器２４は、描画器状態ワードキャッシュ５において記憶される与えられた描画器状態ワードと対応付けられたフラグメントの進行を追跡することを可能とするために、各描画器状態ワードレジスタ（ライン）について２つのカウンタ、プリミティブカウンタおよびフラグメントカウンタを保持する。
プリミティブカウンタは、対応する描画器状態ワードを必要とするプリミティブが、実際、システムにロードされるごとに増加し、ラスタ化器２３が、その描画器状態ワードを用いるプリミティブについて最後のフラグメントを送出するごとに減少する。これは、図１に表わされているように、三角形配置ユニットが配置のためにプリミティブを受信すると、そのプリミティブに結び付けられた描画器状態ワードについてプリミティブカウンタを増加させる三角形配置ユニット、および、プリミティブからの最後のフラグメントがラスタ化器２３を解放すると、対応する描画器状態ワードについて多角形カウンタ減少信号をリソース割当器２４に送出するラスタ化器２３によって実行される。
フラグメントカウンタは同様に動作し、描画パイプライン１に送出される対応する描画器状態ワードを用いる各フラグメントについて１だけ増加し、その描画器状態ワードを用いるフラグメントが完了するごとに１だけ減少する。これは、図１に表わされているように、フラグメントがパイプラインに入ると、対応する描画器状態ワードについてフラグメントカウンタ増加信号を送出し、フラグメントがパイプラインを解放すると減少信号を送出する描画パイプラインによって実行される。
【００６１】
リソース割当器２４は、描画器状態ワードキャッシュレジスタラインが“解除”可能であるか否か判定するためにこれらのカウンタを用いる（すなわち、対応する描画器状態ワードは、新たな描画器状態ワードで置換することが可能である）。プリミティブカウンタおよびフラグメントカウンタの両方がゼロである（かつ、描画される新たな多角形がその特定の描画器状態ワードを用いない（または、プリミティブリストが終了したならば、現在のプリミティブが存在しない））とき、必要ならば、その描画器状態ワードを、必要とされる新たな描画器状態ワードで上書きすることが可能であるように、リソース割当器２４はその特定の描画器状態ワードのために描画器状態ワードレジスタを“解除”する。このようにして、リソース割当器２４は、その描画器状態ワードと対応付けられた全ての現在のフラグメントが描画パイプライン１を完了するまで、描画器状態ワードキャッシュ５に既に記憶された描画器状態ワードは置換できないことを保証する。
【００６２】
本実施形態の動作において、場面が描画されるとき、この技術分野において知られているように、ドライバソフトウェアは、描画されるプリミティブを定義するために、（プリミティブデータごとの）必要な頂点データ等を準備および記憶する。また、場面全体を描画するために必要な描画状態データセット（描画器状態ワード）を生成および記憶する。描画状態データセットは、任意の適切な方法で生成および記憶することが可能である。好ましい構成において、プリミティブについて必要とされる描画状態データセットが、より早いプリミティブについて既に生成されたか否かをドライバソフトウェアが判定することを可能とするように描画状態データセットが生成されるので、描画状態データセットの記録（例えば、リスト）は、好ましくはソフトウェアで保持される。これは、ドライバソフトウェアが、同一の描画状態データセットのいくつかの複製を不必要に生成することを減少させまたは防止するために役立つ。
必要なデータが生成および記憶されると、この技術分野において知られているように、ドライバソフトウェアは、（プリミティブが描画されることを可能とするように、プリミティブリスト読取器２０による取得のために）場面のために描画される各プリミティブについて、記憶された頂点データ等へのポインタを含む適切なプリミティブリストを準備する。
また、ドライバソフトウェアは、各プリミティブを、それを描画するために使用される適切な描画器状態ワード（描画状態データ）に結合するように、各プリミティブを描画するために使用される記憶された描画器状態ワードデータへのポインタをプリミティブリストに含む。（従って、この構成において、描画状態データセットはプリミティブごとに指定されるが、これは必須ではなく、望むならば、他の構成を用いることが可能である。）
【００６３】
場面が描画されているときドライバソフトウェアに復帰する必要を回避するように、プリミティブが描画するために送出される前に、場面全体（またはフレーム部分、例えば、タイル）を描画するために必要な、描画器状態ワードを含む、全てのプリミティブデータおよびプリミティブリストが準備されることが好ましい。しかし、望むならば、他の構成を用いることが可能である。
【００６４】
プリミティブデータおよびプリミティブリストが準備および記憶されると、プリミティブを描画することが可能である。この処理における第１ステップは、プリミティブリスト読取器２０が、プリミティブについて関連するプリミティブリスト要素（すなわち、頂点データ、描画器状態ワードポインタ、等）を、それらが記憶されたメモリから読み取ることである。そして、プリミティブリスト読取器２０は、三角形配置操作のために（すなわち、プリミティブを描画することが可能であるように、）リソース割当器２４に要求を送信する。
そのような要求を受信すると、リソース割当器２４は、当該プリミティブと対応付けられた描画器状態ワードが描画器状態ワードキャッシュ５に既に記憶されているか否か判定する。要求される描画器状態ワードがキャッシュ５に既に記憶されているならば、リソース割当器２４は三角形配置操作のためにプリミティブを渡す。（従って、描画器状態ワードはプリミティブごとに定義されるが、システムは、そうすることが適切であるとき、１つのプリミティブから次のプリミティブへ描画器状態ワードをキャッシュするように動作する。）
【００６５】
一方、リソース割当器２４が、プリミティブリスト読取器２０から三角形配置操作についての要求を受信したときに、要求される描画器状態ワードが描画器状態ワードキャッシュ５にまだ記憶されていないことを発見したならば、描画器状態ワードキャッシュ５のレジスタ（ライン）が解除されるまでプリミティブの処理を停止し、そして、描画器状態ワードキャッシュ５において関連する描画器状態ワードを記憶し、プリミティブの処理を継続する。
後者の動作を行うために、リソース割当器２４は、上述したように、各描画器状態ワードレジスタについてのプリミティブカウンタおよびフラグメントカウンタを用いて、描画器状態ワードキャッシュ５において描画器状態ワードのための空き容量が存在するか否か、および、存在する時を判定する（すなわち、少なくとも１つのキャッシュレジスタが“解除”されたか否かを判定する）。
描画器状態ワードキャッシュ５において空きレジスタが存在すると判定したとき、リソース割当器２４は、新たな描画器状態ワードが記憶されたメモリからそれをフェッチし、それを空きの描画器状態ワードキャッシュレジスタにロードする。
リソース割当器２４は、当該プリミティブについて関連する描画器状態ワードが描画器状態ワードキャッシュ５に記憶されている（または、描画器状態ワードキャッシュ５にそれを記憶した）と判定すると、そのプリミティブについて描画器状態ワードキャッシュ５に記憶された描画器状態ワードが識別されることを可能とするために、描画器状態ワードキャッシュ５への適切な描画器状態ワードインデックス（ポインタ）をプリミティブに割り当てる。
【００６６】
本実施形態において、リソース割当器２４が各プリミティブと対応づける描画器状態ワードインデックスは、単に描画器状態ワードキャッシュレジスタへのポインタであり、要求される描画器状態ワードを記憶する。従って、このインデックスは、（キャッシュ５は、４つの描画器状態ワードレジスタを有するので、）描画器状態ワードキャッシュ５への２ビットのインデックスである。（もちろん、他のサイズの描画器状態ワードキャッシュ５について、他のインデックス構成を用いることが可能である。また、望むならば、描画器状態ワードインデックスは、記憶されるメモリ位置（レジスタ）を単に指し示すよりも、使用する実際の描画器状態ワードを示すことが可能である。）
そして、プリミティブは、三角形配置操作および描画するために渡され、システムを通して進行する。
【００６７】
そして、頂点ローダー２１は、プリミティブリスト読取器２０によって読み取られるプリミティブリストにおけるポインタによって指し示される頂点データをフェッチし、三角形配置ステージ２２は、プリミティブデータ上に三角形配置を実行する。
そして、プリミティブは、ラスタ化するためにラスタ化器２３に渡される。この技術分野において知られているように、ラスタ化器２３は、描画するためにプリミティブデータをフラグメント位置に変換する。また、ラスタ化器２３は、フラグメントと対応付けられた描画器状態ワード（多角形リスト読取器２０によって読み取られたリスト要素におけるプリミティブと対応付けられたのと同一の描画器状態ワード）を記憶する描画器状態ワードキャッシュ５レジスタを示すインデックスポインタを各フラグメントと対応付ける。
そして、ラスタ化されたフラグメントは、描画するために描画パイプライン１に渡される。上述したように、プリミティブからのフラグメントは描画されるので、描画パイプラインの描画ユニットが適切な描画状態に設定されるように、各フラグメントの描画器状態ワードインデックスは描画パイプラインにおける各ステップにおいて描画器状態ワード探索を実行するために使用される。
フラグメントが描画されると、表示する前に記憶するための、タイルバッファのような適切なメモリに渡される。
【００６８】
図２は、描画パイプライン１の動作をより詳細に表わす。図２に表されているように、描画パイプライン１は、多数の異なる機能ブロックまたは描画ユニット２、３を有し、描画するためのフラグメント４を受信する。これらの描画ユニット２、３は、この技術分野において知られているように、関数発生器、テクスチャーマッパー、ブレンダー、ぼかし（fogging）ユニット、等のような、任意の適切なユニットを具備することが可能である。
描画パイプライン１の各描画ユニット２、３は、受信したフラグメントについて描画操作を実行する機能ブロック１０（従って、適切な描画状態に設定される必要がある）、描画器状態ワード（ＲＳＷ）キャッシュ５から適切な描画状態データを探索するために用いることが可能な描画器状態ワード（ＲＳＷ）インタフェース１１の両方を含む。
図２に表されているように、各フラグメントは、とりわけ、フラグメントインデックス、描画器状態ワード（ＲＳＷ）インデックス、およびフラグメントを描画するために必要な任意の他のフラグメントデータ（この技術分野において知られているように、ＲＧＢ値のような任意の適切なデータとすることが可能である）を示すフラグメントデータ６とともに描画パイプライン１に与えられる。
【００６９】
上述したように、描画器状態ワードインデックス８は、描画器状態ワードキャッシュ５における描画器状態ワードレジスタのいずれかを示す２ビットのポインタであり、描画器状態ワードキャッシュ５における描画器状態ワードレジスタは、当該フラグメントを描画するために用いなければならない描画器状態ワードを記憶する。
描画パイプライン１の描画ユニット２、３が描画されるフラグメントを受信すると、まず、その描画器状態ワードインタフェース１１を用いて、フラグメント４と対応付けられた描画器状態ワードインデックス８を使用して、描画器状態ワードキャッシュ５から関連する描画状態データを探索する。そして、そのデータを用いてその機能ブロック１０を設定し、フラグメントを描画する。この実施形態において、機能ブロック１０は、（望むならば、描画器状態ワード全体を探索することが可能であるが、）それらの動作に関連する描画器状態ワードの部分を探索および取得するのみである。
次のフラグメントが描画ユニットによって受信されると、そのフラグメントと対応付けられた描画器状態ワードインデックス８を再び検査し、描画器状態ワードキャッシュ５から関連する設定データを取得し、その機能ブロック１０を設定し、そして、フラグメントを描画する、等である。
【００７０】
このようにして、描画状態の変更が発生するときはいつも描画パイプライン全体を再設定する必要は回避される。さらに、描画パイプライン１は、（描画器状態ワードキャッシュ５に記憶された異なる描画器状態ワードの数に応じて、）同時に異なる描画状態を有するフラグメントを処理することが可能である。
図２に表されているように、フラグメントが受信されるごとに描画器状態の“探索”を実行するための追加のハードウェアが必要とされ得るが、従来の描画システムと比較して、描画操作の速度または効率に関して追加のコストは存在しないことに留意すべきである。
【００７１】
図３および図４は、本発明によって構成される３Ｄグラフィックス処理システムのもう１つの例を表わす。
図３は、特に、描画パイプライン１の構成をより詳細に表わす。図３に表されているように、グラフィックスシステムは、再び、図１に関して上述したように動作するリソース割当器２４、この実施形態において２つの描画器状態ワードレジスタを含むものとして表わされている描画器状態ワードキャッシュ５、上述したように動作するラスタ化器２３、描画パイプライン１における多数の描画ユニットを含む。
また、描画器入力ステージ３０が図示され、これは上述したように、基本的に、描画器状態ワードデータを含むプリミティブリスト情報を受信し、そして、ラスタ化するためにラスタ化器２３に適切なプリミティブデータを与える。
【００７２】
ラスタ化器２３は、この技術分野において知られているように、描画器入力ステージ３０に与えられたグラフィックスプリミティブをグラフィックスフラグメントに変換する。ラスタ化器２３は、描画器入力ステージ３０によって決定された（または描画器入力ステージ３０に与えられた）線分を用いて、一連の（ｘ，ｙ）座標の組を生成し、各組は、プリミティブによって覆われる全ての（ｘ，ｙ）位置について、プリミティブを描画するために使用されるグラフィックスフラグメントの位置に対応する。
【００７３】
次のステージは、１つまたは複数の関数発生器３１であり、この技術分野において知られているように、関数発生器３１は、プリミティブの各フラグメントを描画するために必要な補間データを決定するために、ラスタ化器２３によって決定されるｘ，ｙフラグメント位置と一緒に、とりわけ、描画されるプリミティブの各頂点と対応付けられたデータを用いて、グラフィックスフラグメントを描画するために、例えば、そのテクスチャー、色等を設定および変更等するために、関数を補間する。そのような補間されるデータは、通常、テクスチャーマップ座標、原色、原色の混合、ぼかし（fog）、のうちの１つまたは２つである。
【００７４】
そして、描画パイプライン１は、テクスチャーマッパーステージ３２を含む。このテクスチャーマッパー３２は、この技術分野において知られているように、メモリ（図示しない）からテクスチャーマップデータを取得し、各グラフィックスフラグメントについて、決定されたテクスチャー座標データ（ｓ，ｔ）に従って、描画パイプライン１に渡すグラフィックスフラグメントにテクスチャーマップデータを適用する。テクスチャーマッパー３２は、テクスチャーマッパー３２によるより高速な取得のためにテクスチャーマップデータを記憶することが可能なテクスチャーマップキャッシュメモリを含むことが可能である
【００７５】
次のステージは、ブレンディングステージ３３である。このステージは、この技術分野において知られているように、その入力として（フラグメントのシェーディングおよびテクスチャーマッピングの後に）描画パイプライン１から色値またはフラグメントの値、および、対応するフラグメントｘ，ｙについて描画パイプラインの出力バッファ３４（以下を参照）に存在する対応する色値を取得し、２つのフラグメントの色値の混合されたものを生成する。
【００７６】
描画パイプライン１の最後のステージは、一揃いの出力バッファ３４であり、描画されるグラフィックスフラグメントデータ（すなわち、各フラグメントの赤、緑、青のデータ値（および、適切ならばアルファ値））がディスプレイ画面上の表示のために与えられる前に記憶される。この技術分野において知られているように、タイルに基づく描画の場合において、出力バッファ３４は１つまたは複数のタイルバッファを具備する。直接モード描画の場合において、出力バッファ３４は表示の前にグラフィックスフラグメントデータを記憶する１つまたは複数のキャッシュメモリを具備する。
この３Ｄグラフィックスシステムは、図１および図２に関して上述したのと同様に動作する。
従って、描画器入力３０およびラスタ化器２３は、（上述しように、描画するためのプリミティブを送出する前に、キャッシュ５に適切な描画器状態ワードが記憶されることを検査および保証するように動作するリソース割当器２４を用いて、）キャッシュ５において適切な描画器状態ワードキャッシュのエントリを指し示すインデックスを、描画される各フラグメントと対応付けるように動作する。従って、フラグメントが描画されるならば、フラグメントを正しく描画することができるように、描画器状態ワードキャッシュ５から適切な描画器状態ワードデータを探索するために、および、描画ユニットを設定するために、各フラグメントと対応付けられた描画器状態ワードインデックスは描画パイプライン１の描画ユニットによって使用される。
【００７７】
この動作は、図４においてより詳細に図示され、描画パイプライン１の各描画ユニットは汎用の機能ユニットとして表されている。本発明は、好ましい実施形態において、少なくとも、描画器状態の変更が発生すると、描画器を停止させる必要を減少させ、または回避するように構成することが可能なグラフィックス描画器および描画パイプラインを提供することが上記から理解することができる。
これは、好ましい実施形態において、少なくとも、描画器を通るフラグメントに従う描画状態インデックスまたはポインタを描画器において各フラグメントと対応付けることによって達成される。そして、その特定のフラグメントについて特定の描画状態に従う使用において描画ユニットを設定することが可能であるように、描画状態の探索が描画器における各ステップにおいて実行される。このようにして、異なる描画状態を要求するフラグメントは、同時に描画器に存在し、描画器によって処理することが可能であり、それによって、描画状態の変更による“フラグメントバブル（fragment bubble）”の発生およびパイプラインのブロッキングを防止することが可能である。
【００７８】
従って、好ましい実施形態において、少なくとも、本発明は、描画器状態の変更が発生すると、描画器を停止または排出させる必要を回避する。さらにこれは、描画状態によって描画器に供給されるプリミティブをもはや整列する必要がないことを意味し、望むならば、深さ等のような他の基準によってプリミティブを整列することが可能である。
また、本発明は、好ましい実施形態において、少なくとも、ドライバソフトウェアの複雑さを減少することができるように、ドライバソフトウェアに描画状態の変更を通知する必要がないという効果を有する。
さらに、本発明は、使用において描画器全体がブロッキングおよび停止する危険を防止または減少することが可能であるので、より長い描画器（描画パイプライン）の使用を容易にする。従って、フォンシェーディングのような、より複雑な描画操作の使用を容易にする。
【図面の簡単な説明】
【００７９】
【図１】本発明の実施形態による３Ｄグラフィックス処理システムを表わす図である。
【図２】図１の実施形態の３Ｄグラフィックス描画器の動作を表わす図である。
【図３】本発明によって構成される３Ｄグラフィックス処理システムのもう１つの実施形態を表わす。
【図４】本発明によって構成される３Ｄグラフィックス処理システムのもう１つの実施形態を表わす。
【符号の説明】
【００８０】
１  描画パイプライン
２、３  描画ユニット
４  フラグメント
５  描画器状態ワードキャッシュ
６  フラグメントデータ
７  フラグメントインデックス
８  描画器状態ワードインデックス
９  他のフラグメントごとのデータ
１０  機能ブロック
１１  描画器状態ワードインタフェース
２０  プリミティブリスト読取器
２１  頂点ローダー
２２  三角形配置ユニット
２３  ラスタ化器
２４  リソース割当器
２５  グラフィックス処理システム
３０  描画器入力
３１  関数発生器
３２  テクスチャーマッパー
３３  ブレンダー
３４  出力バッファ
４０  機能ユニット
【図１】
2008520021.tif 000003
【図２】
2008520021.tif 000004
【図３】
2008520021.tif 000005
【図４】
2008520021.tif 000006
【国際調査報告】
2008520021.tif 000007
2008520021.tif 000008