(57)【要約】テクスチャ情報を受信することと、そのテクスチャ情報に対応するコンパイル済みシェーダが存在するか否かを決定することと、を含む方法である。テクスチャ情報に対応するコンパイル済みシェーダが存在しない場合は、テクスチャ情報に基づいて新しいシェーダがコンパイルされる。テクスチャ情報に対応するコンパイル済みシェーダが存在する場合は、そのコンパイル済みシェーダが使用される。【選択図】図２
2008507037.tif 000002
【特許請求の範囲】
【請求項１】
テクスチャ情報を受信することと、
前記テクスチャ情報に対応するコンパイル済みシェーダが存在するか否かを決定することと、
前記テクスチャ情報に対応する前記コンパイル済みシェーダが存在しない場合に前記テクスチャ情報に基づいて新しいシェーダをコンパイルすることと、
前記テクスチャ情報に対応する前記コンパイル済みシェーダが存在する場合に前記コンパイル済みシェーダを使用することとを含む方法。
【請求項２】
前記決定することは、前記テクスチャ情報に関連する署名を生成することと、前記署名が既にメモリに格納されているか否かをチェックすることとを含む、請求項１に記載の方法。
【請求項３】
前記チェックすることが前記署名が既にメモリに格納されてはいないと決定した場合に、前記署名および前記新しいシェーダを格納することをさらに含む、請求項２に記載の方法。
【請求項４】
前記生成することは、前記テクスチャ情報を圧縮して前記署名を生成することを含む、請求項２に記載の方法。
【請求項５】
前記テクスチャ情報は、アプリケーション・プログラミング・インターフェース（ＡＰＩ）に含まれる、請求項１に記載の方法。
【請求項６】
テクスチャリングプログラムを格納するためのメモリと、
テクスチャリングプログラムを実行するためのプログラミング可能ハードウェアと、
テクスチャ情報を受信し、前記テクスチャ情報に対応するテクスチャリングプログラムを求めて前記メモリをチェックし、および、前記テクスチャ情報に対応する前記テクスチャリングプログラムが前記メモリ中に見つかる場合に、前記テクスチャ情報に対応する前記テクスチャリングプログラムを前記プログラミング可能ハードウェアに実行させるための処理装置とを含むシステム。
【請求項７】
前記処理装置は、前記テクスチャ情報に対応する前記テクスチャリングプログラムが前記メモリ中に見つからない場合に、前記テクスチャ情報を新しいテクスチャリングプログラムにコンパイルするように構成される、請求項６に記載のシステム。
【請求項８】
前記処理装置は、前記テクスチャリングプログラムを前記メモリに格納し、および、前記プログラミング可能ハードウェアに前記新しいテクスチャリングプログラムを実行させるようにさらに構成される、請求項７に記載のシステム。
【請求項９】
前記処理装置は、前記新しいテクスチャリングプログラムに対応する署名を生成し、および、前記署名を前記メモリに格納するように構成される、請求項８に記載のシステム。
【請求項１０】
前記処理装置は、前記テクスチャ情報から署名を生成し、および、前記テクスチャ情報に対応する前記テクスチャリングプログラムを求めて前記署名を使用して前記メモリをチェックするように構成される、請求項６に記載のシステム。
【請求項１１】
アプリケーション・プログラミング・インターフェース（ＡＰＩ）における前記テクスチャ情報を前記処理装置へ送信するもう一つの処理装置をさらに含む、請求項６に記載のシステム。
【請求項１２】
受信したグラフィックス・アプリケーション・プログラミング・インターフェース（ＡＰＩ）から署名を生成することと、
前記署名に基づいて、前記グラフィックスＡＰＩに対応するピクセルシェーダプログラムをメモリが含むか否かを決定することと、
前記メモリが前記ピクセルシェーダプログラムを含む場合に、前記グラフィックスＡＰＩに対応するピクセルシェーダプログラムを実行するようにプログラミング可能ハードウェアに命令することと、
前記メモリが前記グラフィックスＡＰＩに対応する前記ピクセルシェーダプログラムを含まない場合に、前記グラフィックスＡＰＩに基づいて新しいピクセルシェーダプログラムをコンパイルすることと、を実行の際に機械にさせる命令を含む、機械によってアクセス可能な媒体。
【請求項１３】
前記メモリに新しいピクセルシェーダプログラムを格納することを、実行の際に前記機械にさせる命令をさらに含む、請求項１２に記載の機械によってアクセス可能な媒体。
【請求項１４】
前記メモリが前記グラフィックスＡＰＩに対応する前記ピクセルシェーダプログラムを含まない場合に、前記新しいピクセルシェーダプログラムを前記プログラミング可能ハードウェアに実行させるように命令することを、実行の際に前記機械にさせる命令をさらに含む、請求項１２に記載の機械によってアクセス可能な媒体。
【請求項１５】
新しいテクスチャ環境を受信することと、
前記新しいテクスチャ環境に対応する新しい署名を生成することと、
前記新しい署名に対応する格納済み署名を求めてメモリをチェックすることと、
前記メモリが前記格納済み署名を含む場合に、前記格納済み署名に対応する格納済みピクセルシェーダによってハードウェアをプログラミングすることとを含む方法。
【請求項１６】
前記メモリが前記格納済み署名を含まない場合に、前記新しいテクスチャ環境に対応する新しいピクセルシェーダを生成することをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記新しいピクセルシェーダおよび前記新しい署名を前記メモリに格納することをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記新しいピクセルシェーダによって前記ハードウェアウェアをプログラミングすることをさらに含む、請求項１６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
請求項に記載された発明の実施例は一般に、グラフィック画像処理に関し、より詳しくは、レガシーテクスチャユニットを伴うグラフィック画像処理に関する。
【背景技術】
【０００２】
グラフィックス処理においては、テクスチャが、画像中の幾何要素（ｇｅｏｍｅｔｒｉｃ  ｐｒｉｍｉｔｉｖｅｓ）（例えば、三角形）に対して適用または「マッピング」される。過去において、かかるテクスチャのマッピングは、ハードウェア・テクスチャユニットの様々な組み合わせによって決まる、いわゆる「固定関数」を伴っていた。例えば、固定関数は、加色、フォグ追加、点描等のための付加的なハードウェアユニットを備えてまたは備えないで様々なテクスチャ環境を実装する、一つ以上のテクスチャユニットを伴う。このように、グラフィックスハードウェアには様々な固定処理関数が組み込まれており、グラフィックスソフトウェア・アプリケーションは、かかる固定関数の存在に依存していた。
【０００３】
さらに最近では、グラフィックスハードウェアは、とりわけ、以前のプログラミング不可能なグラフィックスハードウェアが実装していた固定関数を、オンザフライでプログラミング可能に実装している。かかるプログラミング可能なハードウェアは、レガシー固定関数に寄与するテクスチャユニット（ここでは、例えば「レガシー」テクスチャユニットという）をエミュレートする（さもなければその機能を実装する）。グラフィックス処理装置は、必要に応じて、新しい固定関数（例えば、ピクセルシェーダ）をコンパイルする。しかし、グラフィックスソフトウェア・アプリケーションは、レガシー固定関数に対応するレガシー・アプリケーション・プログラミング・インターフェース（ＡＰＩ）を依然使用している。かかるソフトウェア・アプリケーションはまた、比較的頻繁にテクスチャ環境を変更し、変更のたびごとに固定関数（例えば、ピクセルシェーダ）の再計算が余儀なくされる。
【発明の開示】
【０００４】
添付の図面は、本明細書に組み込まれかつ一部をなし、本発明の原理に整合する一つ以上の実施例を示し、かかる実施例を本明細書とともに説明する。図面は必ずしも縮尺通りではなく、本発明の原理を示すことが重視される。
【発明を実施するための最良の形態】
【０００５】
以下の詳細な説明では、添付の図面が参照される。同一または類似の要素を特定するために、異なる図面においても同一の参照番号が使用される。以下の説明では、限定ではなく説明を目的としており、具体的詳細が、請求項に記載された発明の様々な側面の完全な理解を与えるために、特定の構造、アーキテクチャ、インターフェース、技術等として示される。しかし、本開示の利益を有する当業者にとっては、請求項に記載された発明の様々な面が、こうした具体的詳細から逸脱するその他の例でも実施できることがわかるだろう。所定の例において、周知の装置、回路および方法の記載は、不必要な詳細によって本発明の説明をあいまいにすることがないように省略される。
【０００６】
図１は、一例のシステム１００を示す。システム１００は、処理装置１１０、グラフィックス処理装置１２０、グラフィックスメモリ１３０、プログラミング可能ハードウェア１４０およびフレームバッファ１５０を含む。いくつかの実施例において、一つ以上の要素１２０−１５０は、データバスを介して処理装置１１０に接続される、物理的に別個のグラフィックスカードに含まれてもよい。いくつかの実施例において、要素１２０−１５０は、要素１１０と共通のサーキットボード（例えば、マザーボード、ドータカード等）上に配置されてもよい。いくつかの実施例において、一つ以上の要素１２０−１５０が、装置の一部分（例えば、コア）の部分となって、処理装置１１０が、その装置の他の一部分（例えば、他の一つのコア）に含まれてもよい。
【０００７】
処理装置１１０は、汎用処理装置、特定用途処理装置および／または特定用途に設定されたロジックを含む。処理装置１１０は、データバスを介してグラフィックスデータ（例えば、状態ベクトル）をグラフィックス処理装置１２０に分配するように構成される。処理装置１１０は、レンダリング、ゲーム、作画またはその他の種類のグラフィックス関連プログラムのようなプログラムの制御のもとで、グラフィックスデータを送信する。いくつかの実施例において、処理装置１１０は、レガシーグラフィックスＡＰＩのようなアプリケーション・プログラミング・インターフェース（ＡＰＩ）を使用してグラフィックス情報を送信する。グラフィックス情報には、例えば、テクスチャ環境、幾何学的データ等が含まれる。
【０００８】
グラフィックス処理装置１２０は、汎用処理装置、特定用途処理装置および／または特定用途に設定されたロジックを含む。グラフィックス処理装置１２０は、処理装置１１０からグラフィックスデータを受信して、そのグラフィックスデータを、プログラミング可能ハードウェア１４０によって実行されるべきプログラム（例えば、ピクセルシェーダ）に変換するように構成される。いくつかの場合、グラフィックス処理装置１２０は、処理装置１１０から受信したグラフィックスデータを主として使用してそのプログラムをコンパイルする。
【０００９】
いくつかの場合、グラフィックス処理装置１２０は、受信したグラフィックス情報を、グラフィックスメモリ１３０に格納されたコンパイル済みプログラム（例えば、ピクセルシェーダ）を参照および再使用のために使用する。かかる場合、グラフィックス処理装置１２０は、受信したグラフィックスデータから署名またはその他のインデックスを生成し、かかるコンパイル済みプログラムをメモリ１３０中で迅速に見つけるのを促す。新しいプログラムを生成すること、または既に生成されたプログラムを使用することの関連におけるグラフィックス処理装置１２０の操作は、以下にさらに説明される。
【００１０】
グラフィックスメモリ１３０は、グラフィックスデータを格納するための記憶装置を含む。グラフィックスメモリ１３０は、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＲＡＭ（ＤＤＲ  ＲＡＭ）等のようなランダムアクセスメモリ（ＲＡＭ）装置を含む。グラフィックス処理装置に関連して示されているが、いくつかの実施例のグラフィックスメモリ１３０はまた、一つ以上の処理装置１１０およびプログラミング可能ハードウェア１４０に接続される（または、それらに対して／によって少なくとも直接的に読み取り可能／書き込み可能である）。
【００１１】
グラフィックスメモリ１３０は、処理装置１１０およびグラフィックス処理装置１２０から、グラフィックスデータおよび／またはプログラムを受信および格納する。グラフィックスデータを格納することに加え、グラフィックスメモリ１３０はまた、かかるグラフィックスデータおよび／またはプログラムに関連するインデックスおよび／または署名のリストを格納するので、特定の情報（例えば、特定のピクセルシェーダプログラム）の存在を迅速にチェックすることが可能となる。
【００１２】
プログラミング可能ハードウェア１４０は、受信したプログラム（例えば、ピクセルシェーダ）に基づいて、グラフィックスデータに対して所定のグラフィックス・レンダリング操作を行うように構成される。かかる操作は、ラスタライズされたグラフィックスデータに対して行われ、テクスチャリング、加色、フォグ追加、点描等の所定の組み合わせを含む。プログラミング可能ハードウェア１４０は、かかるプログラムをグラフィックス処理装置１２０から受信し、例えば、レガシー固定関数の演算を行う。いくつかの実施例において、プログラミング可能ハードウェア１４０は、メモリ１３０におけるプログラムのアドレスを受信して、メモリ１３０から直接そのプログラムを読み取る。
【００１３】
フレームバッファ１５０は、プログラミング可能ハードウェア１４０から処理済みデータを受信してバッファリングするように構成される。これは、必要であれば、ディスプレイに先立って行われる。フレームバッファ１５０はまた、場合によってはグラフィックス処理装置１２０の制御のもとで、ディスプレイまたはディスプレイ・インターフェースにデータを出力する。関連するディスプレイ（図示せず）は、テレビジョン、モニタ、プロジェクタ、または、かかるビデオおよび／またはグラフィックスのようなグラフィックス情報をディスプレイするためのその他適切な装置を含む。かかるディスプレイは、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、プラズマおよび／またはプロジェクタ関連技術のようないくつかの技術を利用する。
【００１４】
図２は、グラフィックスデータの処理を示すフローチャート２００である。処理２００は、説明の便宜上システム１００に対して記載されるが、請求項に記載された発明は必ずしもこの点で限定されない。いくつかの実施例において、処理２００は、現行のテクスチャ環境の所定側面が変更された場合にのみ行われる。いくつかの実施例において、処理２００は、レガシーＡＰＩが使用され、かつ、現行のテクスチャリング・スキームの所定側面が変更される場合にのみ行われる。
【００１５】
処理は、グラフィックス処理装置１２０が、処理装置１１０からグラフィックスデータ、いくつかの実施例では状態ベクトル、を受信することから始まる。グラフィックス処理装置１２０は、受信した状態ベクトルに対して署名を生成する（ステップ２１０）。いくつかの実施例において、この署名は、例えば、単数または複数のテクスチャ環境、フォグ、加色情報等を含む状態ベクトルの短縮および／または圧縮バージョンである。この圧縮状態ベクトル署名は、状態ベクトルに対するテクスチャ当たり数十バイトを含むのではなく、テクスチャユニット当たり数バイトのみを含む。いくつかの実施例において、署名は、所定のグラフィックスデータに対して比較的迅速に生成されるハッシュ、チェックサムまたはその他の周知のＩＤ照合スキームである。かかるハッシュ操作は、状態ベクトルかその圧縮バージョンかのいずれかに対して、グラフィックス処理装置１２０によって行われる。
【００１６】
処理が継続し、グラフィックス処理装置１２０は、ステップ２１０で生成された署名にマッチングする既存署名を求めてメモリ１３０をチェックする（ステップ２２０）。メモリ１３０中に既存署名が存在するということは、受信した状態ベクトルに対応するコンパイル済みプログラム（例えば、ピクセルシェーダ）がメモリ１３０において利用可能であることを示す。
【００１７】
署名のマッチングが見つからない（つまり、コンパイル済みシェーダが見つからない）場合（ステップ２３０）、グラフィックス処理装置１２０は、受信した状態ベクトルに対応するピクセルシェーダプログラムをコンパイルする（ステップ２４０）。かかる新しいピクセルシェーダは、所定のグラフィックスアプリケーションでは以前生じなかったレガシー固定関数に対応する。
【００１８】
このようにして、グラフィックス処理装置１２０は、後に起こり得る再使用の備えて新しいピクセルシェーダをグラフィックスメモリ１３０に格納する（ステップ２５０）。ステップ２５０において、グラフィックス処理装置はまた、ステップ２１０で生成された関連署名も格納するので、新しいピクセルシェーダはその後のステップ２２０において見つかる可能性がある。
【００１９】
処理は、グラフィックス処理装置１２０が、さらなる処理のためにプログラミング可能ハードウェア１４０にピクセルシェーダを返すことで終了する（ステップ２６０）。いくつかの実施例において（例えば、ステップ２５０が既に行われている場合）、処理装置１２０は、プログラミング可能ハードウェア１４０に、メモリ１３０中のシェーダのアドレスを送信する。そして、プログラミング可能ハードウェア１４０は、所定の場合にそのアドレスにおいてプログラムを実行する。いくつかの実施例において、処理装置１２０は、プログラミング可能ハードウェア１４０に直接ピクセルシェーダプログラムを送信するので、それと並行してステップ２５０および２６０を実行可能な場合がある。
【００２０】
ステップ２２０に戻ると、マッチングした署名（および所定のコンパイル済みシェーダ）がメモリ１３０に見つかる場合（ステップ２３０）、グラフィックス処理装置１２０は、さらなる処理のためにプログラミング可能ハードウェア１４０にそのコンパイル済みピクセルシェーダを返す（２６０）。かかるコンパイル済みピクセルシェーダは、所定のグラフィックスアプリケーションでは以前生じなかったレガシー固定関数に対応し、再使用される。かかるピクセルシェーダの再使用によって、以前遭遇したピクセルシェーダをテクスチャ環境変更のたびに再コンパイルするべくリソースを使用することが防止される。
【００２１】
上述の一つ以上の実施例は、図示および記載を与えるが、本発明の範囲を網羅するものでも、開示の正確な形態に限定するものでもない。修正例および変更例は上記教示に鑑みて可能であり、本発明の様々な実施例の実施から得られる。
【００２２】
例えば、本明細書に記載のシェーダ再使用スキームが主にレガシーＡＰＩに対して説明されているが、かかるスキームはまた、不必要な再コンパイルを防止するために任意の数のおよび組み合わせのグラフィックスＡＰＩによって使用されてよい。
【００２３】
さらに、図２のステップは、図示の順序で実行される必要はないし、必ずしも全てのステップが実行される必要もない。また、それらのステップは他のステップに依存するわけではなく、他のステップと並行して実行されてもよい。さらに、この図の少なくともいくつかのステップは、命令として、または命令のグループとして実行されてもよく、機械によって読み取り可能な媒体において実行されてもよい。
【００２４】
本願の明細書中で使用されたいずれの要素、ステップまたは命令も、明示的に記載されない限りは本発明にとって決定的または不可欠なものと解釈してはならない。また、本明細書で使用されるように、冠詞「ａ」は一つ以上のものを含むことを意図している。変形例および修正例が、本発明の要旨および原理から実質的に逸脱することなく、請求項に記載された発明の上述の単数または複数の実施例に対してなされ得る。かかる修正例および変形例の全てが、本明細書すなわち本開示の範囲内に含まれ、以下の請求項によって保護される。
【図面の簡単な説明】
【００２５】
【図１】一例のシステムを示す。
【図２】グラフィックスデータの処理を示すフローチャートである。
【図１】
2008507037.tif 000003
【図２】
2008507037.tif 000004
【国際調査報告】
2008507037.tif 000005
2008507037.tif 000006
2008507037.tif 000007