(57)【特許請求の範囲】
【請求項１】
３Ｄシーンをレンダリングするグラフィックプロセッサ（１）であって，
コマンドおよび頂点データをフェッチするコマンドインターフェース部（１１）と，
前記コマンドインターフェース部（１１）からの前記コマンドおよび前記頂点データを使用してシーンジオメトリ処理を行って幾何プリミティブおよびフラグメントごとの処理結果を得る１つもしくは複数のプログラマブル部（１２）と，
前記１つもしくは複数のプログラマブル部（１２）から前記幾何プリミティブを受け取り，前記幾何プリミティブをフラグメントへ変換するラスタライザ部（１３）と，
前記１つもしくは複数のプログラマブル部（１２）からの前記フラグメントごとの処理結果と，フラグメントフレームバッファ（１５）で記憶されたコンテンツとを受け取り，前記フラグメントごとの処理結果と前記コンテンツをマージするカラーアップデータ部（１４）と，
前記１つもしくは複数のプログラマブル部（１２）から要求があり次第，フィルタリングされたテクスチャサンプルをフェッチするテクスチャサンプリング部（１６）と，
フラグメントごとの処理演算の特定の部分を実行する１つもしくは複数の専用固定機能部（１７）と，
前記プログラマブル部を，前記テクスチャサンプリング部（１６）および１つもしくは複数の専用固定機能部（１７）と並列に結合するアービタ部（１８）とを備え，
前記アービタ部（１８）が，前記テクスチャサンプリング部（１６）または前記１つもしくは複数の専用固定機能部（１７）へ処理要求を渡し，前記処理要求が，前記１つもしくは複数のプログラマブル部（１２）によって行われたプログラム実行の結果であり，前記アービタ部（１８）が，前記テクスチャサンプリング部（１６）または前記１つもしくは複数の専用固定機能部（１７）からの処理結果を，前記１つもしくは複数のプログラマブル部（１２）へ渡す，
グラフィックプロセッサ。
【請求項２】
請求項１に記載のグラフィックプロセッサであって，
前記１つもしくは複数の専用固定機能部（１７）が第２のテクスチャサンプリング部として前記アービタ部（１８）と対話し，その入力および出力の数が前記テクスチャサンプリング部（１６）の入力および出力の数と異なる，
グラフィックプロセッサ。
【請求項３】
３Ｄコンピュータグラフィックスをレンダリングする方法を実行するためのコンピュータによって実行されるコンピュータプログラムであって，
前記コンピュータがグラフィックプロセッサ（１）を備え，前記グラフィックプロセッサ（１）が，
コマンドおよび頂点データをフェッチするコマンドインターフェース部（１１）と，
前記コマンドインターフェース部（１１）からの前記コマンドおよび前記頂点データを使用してシーンジオメトリ処理を行って幾何プリミティブおよびフラグメントごとの処理結果を得る１つもしくは複数のプログラマブル部（１２）と，
前記１つもしくは複数のプログラマブル部（１２）から要求があり次第，フィルタリングされたテクスチャサンプルをフェッチするテクスチャサンプリング部（１６）と，
フラグメント前の処理演算の特定の部分を実行する１つもしくは複数の専用固定機能部（１７）と，
前記プログラマブル部を，前記テクスチャサンプリング部（１６）および１つもしくは複数の専用固定機能部（１７）と並列に結合するアービタ部（１８）であって，前記テクスチャサンプリング部（１６）または前記１つもしくは複数の専用固定機能部（１７）へ，前記１つもしくは複数のプログラマブル部（１２）によって行われたプログラム実行の結果である処理要求を渡すように構成されており，および，前記テクスチャサンプリング部（１６）または前記１つもしくは複数の専用固定機能部（１７）からの処理結果を前記１つもしくは複数のプログラマブル部（１２）へ渡すように構成されているアービタ部（１８）とを備え，
前記方法が，
前記グラフィックプロセッサ（１）によって実行されるシェーダプログラムを，１つもしくは複数のプログラマブル部（１２）へインストールするステップと，
前記シェーダプログラムの第１のパラメータセットを発見するステップであって，前記第１のパラメータセットは，前記グラフィックプロセッサ（１）がＡＰＩ関数を呼び出すことによって前記シェーダプログラムを実行する間は一定のままであるステップと，
前記１つもしくは複数の専用固定機能部（１７）の動作を制御するための第２のパラメータセットを発見するステップであって，前記第２のパラメータセットは，前記グラフィックプロセッサ（１）がＡＰＩ関数を呼び出すことによって前記シェーダプログラムを実行する間は一定のままであるステップと，
ＡＰＩ関数を１回または複数回呼び出すことによって前記第１のセットの発見されたパラメータの値を設定するステップと，
ＡＰＩ関数を１回または複数回呼び出すことによって前記第２のセットの発見されたパラメータの値を設定するステップとを含む，
コンピュータプログラム。
【請求項４】
請求項３に記載のコンピュータプログラムであって，
前記呼び出されるＡＰＩ関数が前記第１のパラメータセットの種類に特有のものである，
コンピュータプログラム。
【請求項５】
コンピュータで読み取り可能なプログラム記憶装置であって，
請求項３に記載のコンピュータプログラムを記憶している，
プログラム記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はヘテロジニアス３Ｄグラフィックスプロセッサのアーキテクチャに関し，詳細には，ヘテロジニアス３Ｄグラフィックスプロセッサの同じグラフィックスパイプラインステージ内のプログラマブルパイプラインと固定機能パイプラインの両方の組み合わせおよび相互運用の方法に関する。本発明の別の応用は，そのようなヘテロジニアスグラフィックスパイプラインを，３Ｄグラフィックスアプリケーションプログラムの視点から構成する方法に関する。
【背景技術】
【０００２】
ハードウェア３Ｄグラフィックスプロセッサは，各ステージが，最終画像の，頂点，幾何プリミティブ，画素（またはフラグメント）といったある特定の種類の図形要素の処理を行い，あるステージの出力を次ステージの入力とする，相互につなぎ合わされた複数のステージで構成されたパイプラインを表す。３Ｄハードウェアパイプライン実装の改良は，固定機能、構成可能な実装から，様々なパイプラインステージにおいて異なる度合いのプログラム可能性を備えた柔軟でプログラム可能な実装へと進んだ。例えばある設計では，株式会社ディジタルメディアプロフェッショナルのＰＩＣＡ２００シリーズの３Ｄグラフィックスアクセラレータの場合のように，プログラマブル頂点ステージの後に完全に固定機能の構成可能なフラグメントステージが続いた。その動作をより一般的にいうと，プログラマブルパイプラインステージは固定機能パイプライン実装と比べて，性能およびゲートサイズの点で効率が劣るが，プログラマブルパイプラインのより大きい柔軟性という利点のために，固定機能実装はデスクトップ３Ｄグラフィックスプロセッサの市場から結局は排除された。一方，組み込みアプリケーションは依然として利用可能なゲートサイズおよび電力消費の制限を強いるものであり，よって，それが原因で組み込みにおける市販の３Ｄハードウェア実装の大部分がせいぜい部分的にしかプログラマブルにならず（頂点／幾何変換およびフラグメントラスタ化部分のプログラム可能性に関してヘテロジニアス設計を有し），または，特定の動作に関して固定機能の設計と比べて完全にプログラマブルな設計では著しく低い性能を有する。よって，組み込みでは，固定機能３Ｄハードウェアパイプラインの性能および低電力消費を，プログラマブルパイプラインの柔軟性と組み合わせた設計の必要が存在し，（デスクトップ市場でのアプリケーションとは異なり）電力消費の制限を満たすことができなければ，３Ｄハードウェアパイプラインの組み込み製品における使用が妨げられる可能性が高いため，そのような必要は決定的なものである。
【０００３】
米国特許第７８６５８９４号明細書には，プロセッサ内で処理タスクを分散させることが開示されている。
【０００４】
米国特許第７８５２３４６号明細書には，汎用テクスチャリングのためのプログラマブルグラフィックプロセッサが開示されている。
【０００５】
米国特許第７６２３１３２号明細書には，レジスタファイル帯域幅消費を低減させるためのレジスタフォワーディングを有するプログラマブルシェーダが開示されている。
【０００６】
米国特許第７７０６６３３号明細書には，位置合わせアプリケーションのためのＧＰＵベースの画像操作方法が開示されている。
【０００７】
米国特許第７７７７７４８号明細書には，グラフィックアプリケーションの実行時に収集される性能データに応答して自動モードコントローラを用いるマルチモード並列グラフィックレンダリングサブシステムを備えるＰＣレベルのコンピューティングシステムが開示されている。
【０００８】
米国特許第７９１１４８０号明細書には，グラフィックパイプラインにおける複数サンプル・アンチエイリアシング・タイル・データの圧縮が開示されている。
【０００９】
米国特許出願公開第２００６／００８２５７８号明細書には，画像プロセッサ，画像処理方法および画像処理プログラム製品が開示されている。これらの参照文献の内容はすべて，本願明細書の内容を理解するための参考とすることができる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第７８６５８９４号明細書
【特許文献２】米国特許第７８５２３４６号明細書
【特許文献３】米国特許第７６２３１３２号明細書
【特許文献４】米国特許第７７０６６３３号明細書
【特許文献５】米国特許第７７７７７４８号明細書
【特許文献６】米国特許第７９１１４８０号明細書
【特許文献７】米国特許出願公開第２００６／００８２５７８号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
柔軟性と高性能の両方のメリットをゲート効率のよいやり方で達成する従来の方法は，処理パイプラインを，固定機能ステージ（例えば，ラスタ化／画素処理の）とプログラマブルステージ（頂点および幾何変換）の両方から組み合わせるものである。それでもなお，この手法は，設計において，特定のパイプライン部分の柔軟性を制限する。よって，３Ｄグラフィックスプロセッサのプログラマブルパイプライン部分および固定機能パイプライン部分を，ステージごとのプログラマブルパイプラインの柔軟性と，固定機能パイプラインのゲートサイズの小規模化ゲートサイズの小規模化および速度とを組み合わせたより効率のよいやり方で，アセンブルする必要が存在する。
【００１２】
固定パイプラインと完全にプログラマブルなパイプラインとでは，グラフィックスアプリケーションが用いるアプリケーションプログラミングインターフェースで反映される構成の方法が大きく異なる。固定機能パイプラインでは，ある固定機能パイプライン部分と別の固定機能パイプライン部分とで構成パラメータが大きく異なるため，パイプライン機能の特定の部分を構成するのに専用のＡＰＩ関数または関数のセットが使用される。プログラマブルパイプラインは，そうではなく，パイプラインによって実行される実際のシェーダプログラムおよびその実際上の機能にかかわらず，同じＡＰＩを使用して構成される。よって，ヘテロジニアスパイプラインでは，構成は，グラフィックスアプリケーションについても，アプリケーションのためのデータを供給するコンテンツ作成ツールについてもどちらも困難である。これは，構成の方法がグラフィックスパイプラインの様々な部分で大きく異なるからである。しかも，今日の３Ｄグラフィックスアプリケーションで広範に使用されるＯｐｅｎＧＬ  ＥＳ  ２．０のようなある特定のＡＰＩは，ヘテロジニアスグラフィックスパイプラインをサポートせず，これらの設計者らはＡＰＩから固定機能パイプライン部分のためのＡＰＩ関数を意図的に除外してある。よって，プログラマブルパイプライン部分の構成方法と統一された，ヘテロジニアス３Ｄグラフィックスプロセッサにおいて固定機能パイプライン部分を構成する方法を提供する必要が存在する。
【課題を解決するための手段】
【００１３】
本発明の第１の態様は，図８に示すようなアービタ部１８を有するグラフィックプロセッサを対象とする。アービタ部１８はプログラマブル部を，テクスチャサンプリング部１６および固定機能部１７と並列に結合する。アービタ部１８とテクスチャサンプリング部１６とは直接接続されており，アービタ部１８と固定機能部１７ともやはり直接接続されている。アービタ部１８は，テクスチャサンプリング部１６または専用固定機能部１７へ処理要求を渡す。処理要求は，１つもしくは複数のプログラマブル部１２によって行われたプログラム実行の結果である。アービタ部１８は，テクスチャサンプリング部１６または専用固定機能部１７からの処理結果を，１つもしくは複数のプログラマブル部１２へ渡す。
【００１４】
本発明の第１の態様のグラフィックプロセッサ１は，３Ｄシーンをレンダリングするグラフィックプロセッサである。プロセッサ１は，コマンドインターフェース部１１と，１つもしくは複数のプログラマブル部１２と，ラスタライザ部１３と，カラーアップデータ部１４と，テクスチャサンプリング部１６と，１つもしくは複数の専用固定機能部１７と，アービタ部１８とを備える。
【００１５】
コマンドインターフェース部１１は，グラフィックプロセッサの各部分を構成するためにホストコンピュータからコマンドおよび頂点データをフェッチする。コマンドインターフェース部１１はシーンの頂点データをフェッチし，それらのデータを残りのグラフィックプロセッサの各部分へ渡す。コマンドインターフェース部１１はフェッチした情報をプログラマブル部１２へ向けて転送してもよい。
【００１６】
１つもしくは複数のプログラマブル部１２は，コマンドインターフェース部１１からのコマンドおよび頂点データを使用してシーンジオメトリ処理を行って幾何プリミティブおよびフラグメントごとの処理結果を得る。プログラマブル部１２はジオメトリ処理を行い，ラスタ化シーン要素のための処理を実行する。
【００１７】
ラスタライザ部１３は，１つもしくは複数のプログラマブル部１２から幾何プリミティブを受け取り，幾何プリミティブをフラグメントへ変換する。フラグメントはプログラマブル部１２によって処理される。
【００１８】
カラーアップデータ部１４は，フラグメントごとの処理結果をフラグメントフレームバッファ１５で記憶されたコンテンツにマージするために，１つもしくは複数のプログラマブル部１２からのフラグメントごとの処理結果と，フラグメントフレームバッファ１５で記憶されたコンテンツを受け取る。フラグメントフレームバッファ１５はフラグメントごとのコンテンツを記憶する。カラーアップデータ部１４は，フラグメントごとのコンテンツを更新するように，フラグメントごとの処理結果を，そのフラグメント前のコンテンツにマージする。
【００１９】
テクスチャサンプリング部１６は，１つもしくは複数のプログラマブル部１２から要求を受け取ると，フィルタリングされたテクスチャサンプルをフェッチする。テクスチャサンプリング部１６は，テクスチャ情報を記憶しているデータベースにアクセスし，テクスチャデータを得ることができる。
【００２０】
１つもしくは複数の専用固定機能部１７は，フラグメントごとの処理演算の特定の部分を実行する。専用固定機能部１７は，フラグメントごとの処理演算の特定の部分をハードウェアによって実行してもよい。フラグメントごとの処理演算の例は，フラグメントシェーディング演算，カラーブレンディング演算，手続型テクスチャサンプリング演算である。プログラマブル部１２は，専用固定機能部１７にフラグメントごとの処理演算の特定の部分を実行させる１つまたは複数のプログラムをインストールしてもよい。プログラマブル部１２はそのようなプログラムをホストまたはプログラムを記憶しているデータベースから獲得してもよい。プログラマブル部１２は，コマンドインターフェース部１１がフェッチするホストからのコマンドに基づいてプログラムを記憶してもよい。
【００２１】
アービタ部１８はプログラマブル部１２を，テクスチャサンプリング部１６および固定機能部１７と並列に結合する。すなわち，アービタ部１８は，プログラマブル部１２の一部であり，テクスチャサンプリング部１６と直接接続されている。さらに，アービタ部１８は固定機能部１７とも直接接続されている。
【００２２】
アービタ部１８は，テクスチャサンプリング部１６または専用固定機能部１７へ，処理要求を渡す。処理要求は，１つもしくは複数のプログラマブル部１２によって行われたプログラム実行の結果である。アービタ部１８は，テクスチャサンプリング部１６または専用固定機能部１７からの処理結果を１つもしくは複数のプログラマブル部１２へ渡す。
【００２３】
本発明の好ましい実施形態は，専用固定機能部１７の１つが，別の種類のテクスチャサンプリング部としてアービタ部１８と対話するものである。別の種類のテクスチャサンプリング部として働く専用固定機能部１７は，テクスチャサンプリング部１６が有するのと同数の入力および出力を有していてもよい。別の種類のテクスチャサンプリング部として働く専用固定機能部１７は，テクスチャサンプリング部１６が有するのと異なる数の入力および出力を有していてもよい。
【００２４】
本発明の実施形態は，ヘテロジニアス３Ｄグラフィックスプロセッサアーキテクチャにおける固定機能パイプライン部分のゲートサイズの小規模化および速度とプログラマブルパイプライン部分の柔軟性との達成を，これらの部分を従来の順次方式ではなく並列に組み合わせることによって容易にする。このようにしたプログラマブルパイプライン部分は，固定機能パイプラインと対話し，シェーダプログラムの実行中に固定機能パイプライン部分の処理結果を１回または複数回消費することができる。一実施形態では，固定機能パイプライン部分は，固定機能フラグメントシェーディング演算器，プロシージャルテクスチャ処理部，テクスチャブレンディング部などを含み，各部分はプログラマブルパイプラインによって独立にアクセスされ，プログラマブルパイプラインおよび固定機能パイプライン部分相互と並列に動作する。
【００２５】
本発明の別の実施形態では，各固定機能パイプライン部分は，おそらくは異なる数の入力および出力を有し，結果を得る際の待ち時間が異なる，別の種類のテクスチャ部としてやりとりの対象とされる。したがって，プログラマブルパイプラインからのアクセスリクエスト時の，テクスチャ部において発生するテクスチャアクセスの待ち時間を，既存の機構により隠蔽する。
【００２６】
本発明の別の態様の実施形態は，プログラマブルパイプライン部分に使用される構成の方法を固定機能パイプライン部分の構成に拡張適用することによって，ヘテロジニアスグラフィックスプロセッサの構成を容易にする。
【００２７】
本発明の第２の態様はコンピュータプログラムを対象とする。コンピュータプログラムは３Ｄコンピュータグラフィックスをレンダリングする方法を実行するためのコンピュータによって実行される。コンピュータは，前述のグラフィックプロセッサ１またはプロセッサ１の各部分を備える。
【００２８】
プロセッサは，コマンドおよび頂点データをフェッチするコマンドインターフェース部１１と，コマンドインターフェース部１１からのコマンドおよび頂点データを使用してシーンジオメトリ処理を行って幾何プリミティブおよびフラグメントごとの処理結果を得る１つもしくは複数のプログラマブル部１２と，１つもしくは複数のプログラマブル部１２から要求があり次第，フィルタリングされたテクスチャサンプルをフェッチするテクスチャサンプリング部１６と，フラグメントごとの処理演算の特定の部分を実行する１つもしくは複数の専用固定機能部１７と，プログラマブル部を，テクスチャサンプリング部１６および１つもしくは複数の専用固定機能部１７に並列に結合するアービタ部１８とを備え，アービタ部１８は，処理要求，１つもしくは複数のプログラマブル部１２に従って，テクスチャサンプリング部１６または１つもしくは複数の専用固定機能部１７へ，１つもしくは複数のプログラマブル部１２によって行われたシェーダプログラム実行の結果である処理要求を渡し，またアービタ部１８は，テクスチャサンプリング部１６または１つもしくは複数の専用固定機能部１７からの処理結果を１つもしくは複数のプログラマブル部１２へ渡す。
【００２９】
コンピュータによって実行された３Ｄグラフィックスアプリケーションプログラムは，グラフィックプロセッサ１によって実行されるシェーダプログラムを１つもしくは複数のプログラマブル部１２へインストールする。
【００３０】
コンピュータによって実行された３Ｄグラフィックスアプリケーションプログラムは，コンピュータプロセッサによって実行されたＡＰＩ関数を呼び出すことによってシェーダプログラムの第１のパラメータセットを発見する。シェーダプログラムはシェーダプログラムデベロッパによって導入されてもよい。第１のパラメータセットは，グラフィックプロセッサ１がシェーダプログラムを実行する間は一定のままである。
【００３１】
コンピュータによって実行された３Ｄグラフィックスアプリケーションプログラムは，１つもしくは複数の専用固定機能部１７の動作を制御するための第２のパラメータセットを発見する。第２のパラメータセットは，グラフィックプロセッサ１がシェーダプログラムを実行する間は一定のままである。コンピュータによって実行された３Ｄグラフィックスアプリケーションプログラムは，ＡＰＩ関数を１回または複数回呼び出すことによって第１のパラメータセットの発見されたパラメータの値を設定する。コンピュータによって実行された３Ｄグラフィックスアプリケーションプログラムは，ＡＰＩ関数を１回または複数回呼び出すことによって第２のパラメータセットの発見されたパラメータの値を設定する。
【００３２】
本発明の好ましい実施形態は，呼び出されるＡＰＩ関数が第１のパラメータセットの種類に特有のものである実施形態である。
【００３３】
本発明の好ましい実施形態は，コンピュータで読み取り可能なプログラム記憶装置である。プログラム記憶装置の例は，ＣＤ，ＣＤ−ＲＯＭ，ＤＶＤ，ＵＳＢメモリ，ＳＤカード，データベースおよびハードディスクである。プログラム記憶装置は上記の３Ｄグラフィックスアプリケーションプログラムを記憶する。
【００３４】
本発明の実施形態の１つでは，固定機能パイプライン部分の構成パラメータの種類，名前およびサイズの情報は，プログラマブルパイプライン部分によって実行されるシェーダプログラムのパラメータのものと同じＡＰＩ関数によって公開される。固定機能パイプライン部分の構成パラメータ値の設定にも，シェーダプログラムパラメータのものと同じＡＰＩ関数が用いられる。したがって本発明は，固定機能パイプライン部分を構成する方法がプログラマブルパイプライン部分を構成する方法と同じである，３Ｄグラフィックスアプリケーションの視点から見たヘテロジニアスグラフィックスパイプラインを構成するための統一されたＡＰＩを提供する。
【００３５】
本発明の一実施形態では，そのような構成方法が，プログラマブルパイプライン部分と固定機能パイプライン部分の両方が同時に並列に使用されるヘテロジニアスパイプラインを構成するために適用される。
【００３６】
本発明の別の実施形態では，そのような構成方法が，（頂点，ジオメトリまたはフラグメント処理ステージである）１つまたは複数のグラフィックスパイプラインステージがプログラマブルではないヘテロジニアスグラフィックスパイプラインの構成に適用される。この場合，パイプラインを構成する方法は，固定機能パイプラインステージについてのシェーダプログラムソースを特定するという存在しないステップを除いて，完全にプログラマブルなパイプラインを構成する方法と同じである。
【発明の効果】
【００３７】
本発明は，プログラマブルパイプライン部分および固定機能パイプライン部分を，ステージごとのプログラマブルパイプラインの柔軟性と，固定機能パイプラインのゲートサイズの小規模化および速度とを組み合わせたより効率のよいやり方でアセンブルすることができる，プロセッサまたはシステムを提供することができる。
【図面の簡単な説明】
【００３８】
【図１】プログラマブル頂点処理を固定機能フラグメント処理と組み合わせる先行技術のヘテロジニアスグラフィックスプロセッサを示すブロック図である。
【図２】頂点およびフラグメントのシェーダ処理を実現するために頂点とフラグメント両方のシェーダプログラムを実行する統一されたシェーダプロセッサ部を有する先行技術のプログラマブルグラフィックスプロセッサを示すブロック図である。
【図３】本発明の実施形態によるヘテロジニアスグラフィックスプロセッサを示すブロック図である。
【図４】拡張を伴うＯｐｅｎＧＬ  ＥＳ  １．Ｘ  ＡＰＩを示すブロック図である。
【図５】ＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩと，これによって管理されるシェーダプログラムオブジェクトとを示すブロック図である。
【図６】シェーダプログラムオブジェクトが，図３の本発明の実施形態の固定機能パイプライン部分の状態をカプセル化する本発明の実施形態のためのＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩを示すブロック図である。
【図７】シェーダプログラムオブジェクトが，図１のヘテロジニアスグラフィックスプロセッサのプログラマブルフラグメントシェーダ状態の不在時に固定機能パイプライン部分の状態をカプセル化する本発明の別の実施形態についてのＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩを示すブロック図である。
【図８】本発明を示すブロック図である。
【発明を実施するための形態】
【００３９】
本発明の実施形態は，ヘテロジニアスグラフィックスプロセッサアーキテクチャにおける固定機能パイプライン部分のゲートサイズの小規模化および速度とプログラマブルパイプライン部分の柔軟性との達成を容易にし，ヘテロジニアスグラフィックスプロセッサの構成を容易にする。図１は，プログラマブル頂点処理ステージが固定機能フラグメント処理ステージと順次に組み合わされる先行技術のヘテロジニアスグラフィックスプロセッサについてのブロック図である。
【００４０】
図１のプロセッサは，コマンドインターフェース部１１００と，プログラマブルシェーダ処理部１２００と，固定機能フラグメント処理部１４００と，ラスタライザ部１３００と，テクスチャ部１５００と，カラーアップデータ部１６００とを備える。固定機能フラグメント処理部１４００は，固定機能シェーディング部１４０１と，固定機能プロシージャルテクスチャ処理部１４０２と，固定機能テクスチャブレンディング部１４０３とを備える。固定機能フラグメント処理部１４００は，テクスチャ部１５００と接続されるように構成されている。よって，図１のプロセッサは，フラグメントシェーディング演算を行う高速で，ゲート効率のよい方法を実現することができるが，その動作に柔軟性を欠く。
【００４１】
図２に，同じプログラマブル処理部のセット上で実行されるシェーダプログラムによって実現され，例えば図１のようなフラグメント処理のための専用固定機能パイプライン部分を全く使用しない完全にプログラマブルな処理ステージを有するグラフィックスプロセッサの別の例を示す。
【００４２】
図２のプロセッサは，コマンドインターフェース部２１００と，プログラマブルシェーダ処理部２２００と，ラスタライザ部２３００と，テクスチャ部２５００と，カラーアップデータ部２６００とを備える。プログラマブルシェーダ処理部２２００は，頂点シェーダタスク待ち行列２２０１と，テクスチャ保留中タスク待ち行列２２０２と，１つまたは複数のプログラマブルシェーダプロセッサ部２２０３と，テクスチャ要求待ち行列２２０４と，フラグメントシェーダタスク待ち行列２２０５とを備える。図２のプロセッサは，プログラマブルシェーダ処理部２２００とテクスチャ部２５００とを，テクスチャ要求待ち行列２２０４を介して接続する。よってこのプロセッサは，プロセッサの処理速度は図１のプロセッサほど高速ではないが，柔軟性を有する。これは，このプロセッサは専用固定機能パイプライン部分を持たず，組み込み実装のゲートサイズ制限のために少数のプログラマブルシェーダ処理部２２００しか備えることができないからである。
【００４３】
図３は，本発明の一実施形態のヘテロジニアスグラフィックスプロセッサのブロック図である。先行技術のグラフィックスプロセッサとは異なり，このプロセッサは，固定機能パイプライン部分を完全にプログラマブルなグラフィックスプロセッサと組み合わせたものであり，固定機能パイプラインは図１のグラフィックスプロセッサの場合のようにプログラマブルパイプラインステージを置き換えるのではなく，プログラマブルパイプライン状態と並列に動作して，その要求時に動作を行う。
【００４４】
図２の完全にプログラマブルなグラフィックスプロセッサと同様に，図３の実施形態のグラフィックスプロセッサは，コマンドインターフェース部３１００と，プログラマブルシェーダ処理部３２００と，ラスタライザ部３３００と，テクスチャ部３５００と，カラーアップデータ部３６００とを含む。
【００４５】
コマンドインターフェース部３１００は，ホストから実行コマンドを受け取り，ホストメモリからジオメトリデータをフェッチするシステムの部分である。コマンドインターフェース部３１００は，ハードウェアリソースによって実行されてもよい。ハードウェアも，ソフトウェアと同様に，コマンドインターフェース部３１００として機能してもよい。本発明の各部または手段のすべては，ハードウェアリソースによっても，ハードウェアリソースとソフトウェアの両方によっても，実行されてもよい。
【００４６】
ラスタライザ部３３００は，頂点シェーダプログラムによって変形された頂点で構成される，点，線および三角形の単純な幾何プリミティブを，画面上でプリミティブによってカバーされるフラグメントのセットへ変換する部分である。ラスタライザは当分野ですでに公知であり，よって本発明のプロセッサは，任意の種類のラスタライザを備えていればよい。
【００４７】
テクスチャ部３５００は，テクスチャアクセス要求を処理する部分である。テクスチャ部３５００は，テクスチャ情報を記憶するデータベースにアクセスすることができ，データベースに記憶されたテクスチャ情報を得ることができる。
【００４８】
カラーアップデータ部３６００は，プログラマブルシェーダ処理部３２００によるフラグメント処理結果を，フレームバッファのコンテンツにマージする部分である。
【００４９】
プログラマブルシェーダプロセッサ部３２００は，プログラマブル頂点およびフラグメントパイプライン処理ステージを実現する部分である。プログラマブルシェーダプロセッサ部３２００は，頂点シェーダタスク待ち行列３２０１と，１つまたは複数のプログラマブルシェーダプロセッサ部３２０３と，外部装置アクセス待ち行列３２０４と，フラグメントシェーダタスク待ち行列３２０５とを備える。プログラマブルシェーダプロセッサ部３２００は，外部装置アクセス保留中待ち行列３２０２をさらに含んでいてもよい。プログラマブルシェーダプロセッサ部３２００は，他のタスクを実行するための他の部分を備えていてもよい。
【００５０】
頂点シェーダタスク待ち行列３２０１は，頂点シェーダステージが処理すべきタスクのシーケンスを記憶する部分である。
【００５１】
外部装置アクセス保留中待ち行列３２０２は，テクスチャ部や固定機能パイプライン部分を含む外部装置のためのアクセス保留中タスクのシーケンスを記憶する部分である。待ち行列３２０２は，保留中外部装置アクセス要求完了時にストールされ，よって，シェーダプロセッサ３２０３上でのアクティブな実行と入れ替えられたタスクを記憶してもよい。
【００５２】
１つまたは複数のプログラマブルシェーダプロセッサ部３２０３は，待ち行列３２０１，３２０５から利用可能な頂点およびフラグメントシェーダタスクをフェッチし，対応するタスクの処理のための頂点およびフラグメントシェーダプログラムを実行する部分である。プログラマブルシェーダプロセッサ部３２０３は，外部装置アクセス保留中待ち行列３２０２および外部装置アクセス待ち行列３２０４と接続されるように構成されている。
【００５３】
外部装置アクセス待ち行列３２０４は，テクスチャ部および固定機能シェーディング部および固定機能手続型部のような固定機能パイプライン部分を含む，外部装置のためのアクセス要求のシーケンスを記憶する部分であり，類似の待ち行列２２０４がテクスチャ部アクセス要求のみを記憶するのに使用される図２の完全にプログラマブルなグラフィックスプロセッサに対して違いを生む部分である。
【００５４】
フラグメントシェーダタスク待ち行列３２０５は，ラスタライザ部３３００によって生成されたフラグメントに対応するフラグメントシェーダ処理タスクを記憶する部分である。
【００５５】
図２のプログラマブルグラフィックスプロセッサとは異なり，図３の本発明の実施形態は，アービタ部３２０６と，固定機能シェーディング部３４０１と，固定機能プロシージャルテクスチャ処理部３４０２とをさらに含む。
【００５６】
前述のように，図３のプログラマブルシェーダプロセッサ部３２００はアービタ部３２０６をさらに備える。アービタ部３２０６は，外部装置アクセス要求待ち行列３２０４から要求を受け取り，それらの要求を，待ち行列の宛先装置に従って，テクスチャ部３５００を含む２つ以上の外部装置に発行する部分である。アービタ部３２０６は，返される要求完了結果を受け取り，要求完了イベントを外部装置アクセス要求待ち行列３２０４へ送る。アービタ部３２０６は，ハードウェアリソースによって，固定機能シェーディング部３４０１および固定機能プロシージャルテクスチャ処理部３４０２と接続されるように構成されている。テクスチャ部３５００，固定機能シェーディング部３４０１および固定機能プロシージャルテクスチャ処理部３４０２は，アービタ部３２０６と並列に接続されている。
【００５７】
固定機能シェーディング部３４０１は，構成選択可能光反射モデルのうちの１つに従ってフラグメントの色を決定するための，いくつかの光反射演算を行う部分である。
【００５８】
固定機能プロシージャルテクスチャ処理部３４０２は，テクスチャを定義する手続きをこの部の構成に従って選択することができる，手続的に定義されたテクスチャ画像のためのテクセル色を演算する部分である。
【００５９】
本明細書で示す実施形態は例示であり，変形および改変が可能であることを理解すべきである。待ち行列３２０２，３２０４，３２０５は，コレクション内の各項目が特定の種類のタスク専用である待ち行列のコレクションとして実現することができる。プログラマブルパイプラインステージの数は，頂点およびフラグメント処理ステージによって制限されない。プログラマブルパイプラインステージの数は，数段のプログラマブル幾何プリミティブ処理を含むことができる。待ち行列３２０１，３２０５と同様に，追加のプログラマブルパイプラインステージと関連付けられた他の種類のタスクを保持するために，追加の待ち行列が存在していてもよい。
【００６０】
図３の本発明の実施形態において，コマンドインターフェース部３１００は，ホストシステムメモリに位置するコマンドバッファを読み取り，実行することによって，ホストシステムコマンドを処理する。コマンドバッファは構成レジスタコマンドを含み，構成レジスタコマンドを実行すると，グラフィックスプロセッサが構成され，ホストシステム上で，１つまたは複数のジオメトリデータ処理要求の完了を表示する割り込みが生成されると共に，ホストシステムメモリ内にあるジオメトリデータの処理がトリガされることになる。ジオメトリデータは，コマンドインターフェース部３１００によってフェッチされ，処理のためにプログラマブルシェーダ処理部３２００へ渡されたインデックスおよび頂点バッファのコンテンツを含む。プログラマブルシェーダ処理部３２００は，フェッチされた頂点データについての頂点データ処理要求を，シェーダプロセッサ３２０３のコレクションのための入力タスク待ち行列の１つとして使用される頂点シェーダタスク待ち行列３２０１に入れる。
【００６１】
シェーダプロセッサ３２０３は，頂点シェーダタスク待ち行列３２０１から利用可能なタスクをフェッチし，頂点シェーダプログラムを実行することにより関連付けられた頂点データの処理を開始する。待ち行列３２０１の特定のタスクについての処理が完了すると，そのタスクは待ち行列から取り除かれ，頂点処理の結果は，コマンドインターフェース部３１００によってフェッチされたインデックスバッファのコンテンツによって定義される頂点のシーケンスから，または，インデックスバッファの存在がホストによって構成されなかった場合には，コマンドインターフェース部３１００によってフェッチされた頂点バッファ内の頂点のシーケンスから，点，線または三角形のような単純なプリミティブをアセンブルするためにラスタライザ部３３００へ送られる。
【００６２】
ラスタライザ部３３００は，アセンブルされたプリミティブの画面空間への投影を行い，プリミティブをフラグメントのセットへ展開する。各フラグメントの属性は，画面上のフラグメント位置に従ってラスタライザへ入力された頂点データの属性値間の補間の結果である。フラグメントデータを処理するために，タスクが近傍フラグメントのグループについて作成され，フラグメントシェーダタスク待ち行列３２０５へ追加される。この待ち行列３２０５は，頂点シェーダタスク待ち行列３２０１と共に，シェーダプロセッサ３２０３のための入力として使用される。待ち行列３２０５の項目と関連付けられたフラグメントデータは，シェーダプロセッサ３２０３によってフェッチされ，これらがフラグメントシェーダプログラムを実行することによって処理される。フラグメント処理が終了すると，対応するタスク項目が待ち行列３２０５から取り除かれ，フラグメント処理結果が，宛先フレームバッファのコンテンツとブレンドするようにカラーアップデータ部３６００へ送られる。
【００６３】
シェーダ部３２０３による頂点またはフラグメントシェーダプログラムの実行中に，シェーダプログラムは，テクスチャ座標，サンプリングされるべきテクスチャ画像を特定するテクスチャ画像識別子，ＬＯＤレベル（詳細レベル）までのオフセットなどを含む特定のパラメータセットについてのテクスチャサンプリング結果を，シェーダ部が要求するよう求めてもよい。テクスチャアクセスは，その完了のための何十クロックから数百クロックもの長い待ち時間を特徴とする。これは，長いアクセス待ち時間を伴うメモリが，多くの場合，テクスチャ画像データを記憶するために用いられるからである。テクスチャアクセス結果を待つことと関連付けられる性能低下を防ぐために，図２のプログラマブルグラフィックスプロセッサと類似の，図３の本発明の実施形態では，テクスチャアクセス結果の待機時にストールされたタスクは，外部装置アクセス保留中待ち行列３２０２へ入れられ，そのためのシェーダプロセッサ３２０３内の実行リソースが解放される。このときに，待ち行列３２０１，３２０５から，または，それらのテクスチャアクセス要求を完了させるタスクのための待ち行列３２０２からも，別のタスクがフェッチされ，その実行が開始され，または続行される。待ち行列３２０１，３２０５内の利用可能なタスク，および／または待ち行列３２０２からの完了された要求を伴うタスクの数が十分にあれば，シェーダプロセッサ３２０３の動作中にさらなるストールサイクルを導入することなく，テクスチャアクセスの待ち時間を隠すことが可能である。待ち行列３２０２のタスクは，待ち行列３２０４が，テクスチャ部３５００から対応する表示を受け取るアービタ部３２０６によってこのイベントを通知され次第，関連付けられたテクスチャ要求を完了したものとしてマークされる。
【００６４】
テクスチャアクセス待ち時間は相当な長さであるため，各待ち行列３２０１，３２０２，３２０４，３２０５のサイズは，顕著なゲートコストをもたらす何十，何百ものタスク項目に関する情報を保持するのに十分なものとしてもよい。ただし，この代価は，グラフィックスプロセッサの全般的性能を定義するシェーダプロセッサ３２０３の効率的動作を達成するのに必要である。
【００６５】
グラフィックスプロセッサのデスクトップ実装では，シェーダプロセッサ部３２０３の数は，何十個から何百個，何千個にまでさえ及ぶ。これらのプロセッサの大きなグループが同時に複数のデータ項目に対して同じ命令を実行し，よって，プロセッサの実際の性能を定義する１クロックあたりの高い実行命令数（ＩＰＣ）を達成する。組み込みの場合には，ゲートサイズ制限によりシェーダプロセッサの数が数個単位，おそらくは数十個単位に制限される。このようにして実効ＩＰＣが低下し，よって，すでにパワー不足の組み込みプログラマブル３Ｄグラフィックスプロセッサの性能低下がもたらされる。
【００６６】
複雑な物理ベースの光反射モデルは，その評価のために数十ものプログラムステップを必要とし，よって，組み込みグラフィックスプロセッサの低ＩＰＣ率が原因で少数のフラグメントについての結果を取得するのに多数のサイクルが費やされる結果になる。固定機能パイプラインでは，これらの複雑な光反射モデルは，これらをシェーダプログラム内で実行する場合よりも１オーダ高い実効ＩＰＣを有する結果を得る際の数十から数百クロックの待ち時間を犠牲にして，１サイクルにつき１フラグメントが処理されるという性能で実行することができる。プロシージャルテクスチャ処理などのように，固定機能パイプライン実装から利益を得ることができる種類の演算が他にもいくつかある。
【００６７】
そのような演算についての固定機能パイプライン実装の大きな待ち時間および高スループットの特性は，そのようなパイプライン部分が相互につなぎ合わされたときに，また，図１の先行技術のヘテロジニアスグラフィックスプロセッサで行われるようにプログラマブルパイプラインステージの前または後の位置で動作するときにさえも，ほとんど問題を生じない。しかし，この手法は，固定機能パイプライン部分についての処理結果をさらに別の処理のために同じパイプラインステージ内のプログラマブルパイプライン部分へフィードバックすることができないために，グラフィックスパイプラインの柔軟性を制限することになる。本発明では，そうではなく，固定機能パイプライン部分はプログラマブルステージと並列に配置され，シェーダプログラムの実行と並行して，そのシェーダプログラムによって生成される要求に対して作用し，演算結果が要求側プログラムインスタンスに返され，その演算結果をプログラム自体によって生成される結果と組み合わせることができる。このようにしてプログラマブルパイプラインの柔軟性が保持されると同時に，固定機能パイプライン部分の高い実効ＩＰＣ数も，グラフィックスプロセッサの全般的性能を高める。
【００６８】
固定機能パイプライン部分とプログラマブルシェーダプロセッサとを組み合わせることの最大の課題は，固定機能パイプライン部分の大きな待ち時間の扱いにある。しかし，その待ち時間および高スループットは，固定機能パイプライン部分を，その特性においてテクスチャ部に類似したものにする。本発明はこの類似性を利用することに基づくものであり，固定機能パイプライン部分との通信における待ち時間を隠すために，利用可能なタスクおよび要求保留中タスクのための大きなタスク待ち行列の同じ方法を用いる。図３の本発明の実施形態では，外部装置要求待ち行列は，テクスチャ部についてのみならず，固定機能シェーディング部３４０１および固定機能プロシージャルテクスチャ処理部３４０２といった固定機能パイプライン部分についての要求データも記憶することができる。アービタ部３２０６は待ち行列３２０４に記憶された要求の宛先装置情報をパースし，要求を適切な装置へ宛先指定する。テクスチャアクセス結果を保留にするタスクと同様に，固定機能パイプラインアクセス結果を保留にするタスクも，関連付けられた要求が完了され，シェーダプロセッサ３２０３に次のタスクの実行のための利用可能なリソースが生じるまで，外部装置アクセス保留中待ち行列３２０２に入れられる。待ち行列３２０１，３２０５内のタスクおよび待ち行列３２０２内の完了された要求を有するタスクが十分にあれば，固定機能パイプライン部分３４０１，３４０２にアクセスする際の待ち時間を隠すという目的が，プログラマブルシェーダ処理部３２００の最小限の変更で達成され，よって，埋め込み空間アプリケーションでは決定的に重要なゲートコスト増加が最小限しか生じないことになる。
【００６９】
構成方法
本発明の別の態様は，図１の先行技術のものと，図３に示す本発明の実施形態の両方のヘテロジニアスパイプラインの構成を容易にする。図４は，拡張を伴うＯｐｅｎＧＬ  ＥＳ  １．Ｘ  ＡＰＩのブロック図である。図４に示すように，ＯｐｅｎＧＬ  ＥＳ  １．Ｘ  ＡＰＩの一部は，テクスチャブレンディング部動作の特定の態様を構成するためのＡＰＩ関数４１０１，４１０２を有する固定機能テクスチャブレンディング部構成ＡＰＩ４１００を備える。さらにＡＰＩは，固定機能プロシージャルテクスチャ処理部動作の特定の態様を構成するためのＡＰＩ関数４２０１，４２０２を有する固定機能プロシージャルテクスチャ処理部構成ＡＰＩ拡張４２００を備える。
【００７０】
パイプラインの各部分についての構成に特有のＡＰＩ関数を公開することによって特定の固定機能パイプライン部分の構成をサポートする図４のＯｐｅｎＧＬ  ＥＳ  １．Ｘ  ＡＰＩの先行技術の手法，ならびに頂点およびフラグメントパイプライン処理ステージについての固定機能パイプライン部分構成を全くサポートしないＯｐｅｎＧＬ  ＥＳ  ２．０の先行技術の手法とは異なり，図６の本発明の実施形態は，その内部のプログラマブルパイプラインステージと固定機能パイプライン部分両方の構成のための統一されたＡＰＩを提供し，よって，先行技術の，または提案されるヘテロジニアス３Ｄグラフィックスプロセッサ上で動作する３Ｄグラフィックスアプリケーションの開発，およびそのようなアプリケーションのコンテンツを作成するのに必要とされるコンテンツ作成ツールの開発を，大幅に円滑化する。
【００７１】
図５の先行技術のＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩの場合，ＡＰＩ関数は，プログラムオブジェクト５１００を作成し，操作し，削除するのに使用される。プログラムオブジェクト５１００が一度作成されると，プログラムオブジェクト５１００は頂点シェーダオブジェクト５２００およびフラグメントシェーダオブジェクト５３００を用いて構成することができる。作成時には，シェーダオブジェクト５２００およびシェーダオブジェクト５３００は，どの実際のシェーダプログラムとも関連付けられていない。しかし，最終的には，テキスト形式またはコンパイルされたバイナリ形式のシェーダプログラムソースを特定することができ，頂点シェーダソースもしくはバイナリオブジェクト５２０１を含む頂点シェーダオブジェクト５２００およびフラグメントシェーダソースもしくはバイナリオブジェクト５３０１を含むフラグメントシェーダオブジェクト５３００が得られる。シェーダソースまたはバイナリオブジェクトを処理した結果として，その名前および種類がシェーダプログラムにおいて特定された構成パラメータセットが発見され，構成パラメータのための構成記憶空間が，頂点シェーダユニフォーム状態オブジェクト５３００およびフラグメントシェーダユニフォーム状態オブジェクト５５００の形で，プログラムオブジェクト５１００において，それらのために利用可能になる。「ユニフォーム」という語は，ＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩ用語における構成パラメータの同義語である。状態オブジェクト５３００，５５００はプログラムオブジェクト５１００の状態を形成し，頂点シェーダパラメータグループとフラグメントシェーダパラメータグループとがＡＰＩの視点から共にマージされてプログラム状態を形成する。プログラムオブジェクト５１００の特定のインスタンスについて利用可能なパラメータに関する情報は，それについてのリンク操作が完了した後で利用可能になり，問題となる実際のプログラムオブジェクトおよびその内部のシェーダプログラムソースにかかわらず，ユニフォームの数，その名前，種類を提供すること，および，その値を統一されたやり方で特定し，問い合わせることを可能にするＡＰＩ関数のセットによって発見することができる。ＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩによって定義される標準に従うグラフィックスプロセッサでは，その頂点およびフラグメント処理パイプラインステージは，アプリケーション指定のジオメトリデータを処理する要求を実行する瞬間において有効な，プログラムオブジェクト５１００を特定することによって完全に構成される。よって，図１の先行技術のヘテロジニアスグラフィックスプロセッサ上では，ＯｐｅｎＧＬ  ＥＳ  ２．０プログラムオブジェクト５１００によって必要とされるフラグメントシェーダプログラムの実行のための機能がないために，そのような形でＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩを実現することができない。加えて，図３の３Ｄグラフィックスプロセッサの形の本発明の実施形態を，ＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩによってサポートすることもできない。これは，プログラムオブジェクトが，本発明で導入される固定機能パイプライン部分の構成パラメータの値を保持するための状態を含まな��からである。
【００７２】
そのような限界を克服し，図３のヘテロジニアスグラフィックスプロセッサについての統一された構成方法を提供するために，図６の本発明の一実施形態では，ＯｐｅｎＧＬ  ＥＳ  ＡＰＩのプログラムオブジェクト６１００が，固定機能ユニフォーム状態オブジェクト６６００，頂点シェーダソース／バイナリオブジェクト６２０１を含む頂点シェーダオブジェクト６２００，頂点シェーダユニフォーム状態オブジェクト６３００，フラグメントシェーダソース／バイナリオブジェクト６４０１を含むフラグメントシェーダオブジェクト６４００，およびフラグメントシェーダユニフォーム状態オブジェクト６５００を含むように拡張される。
【００７３】
固定機能パイプライン部分の構成パラメータのリストがプログラムオブジェクト６１００のユニフォームリストに追加され，ｇｌＧｅｔＡｃｔｉｖｅＵｎｉｆｏｒｍやｇｌＧｅｔＵｎｉｆｏｒｍＬｏｃａｔｉｏｎといったＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩの既存のプログラムユニフォーム列挙関数によって公開される。ユニフォーム列挙ＡＰＩ関数は頂点シェーダユニフォームとフラグメントシェーダユニフォームとを区別しないため，ユニフォーム列挙関数への変更は不要である。同様に，ＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩの既存のユニフォーム問い合わせ／指定関数も，固定機能パイプライン部分の状態を発見し，操作するためのいかなる変更もなしで使用することができ，よって，図３のヘテロジニアス３Ｄグラフィックスプロセッサの構成が大幅に簡略化される。
【００７４】
図７に示す本発明の構成態様の別の実施形態では，ＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩ関数によって制御されるプログラムオブジェクト７１００が，固定機能ユニフォーム状態オブジェクト７６００，頂点シェーダソース／バイナリオブジェクト７２０１を含む頂点シェーダオブジェクト７２００，および頂点シェーダユニフォーム状態オブジェクト７３００を含むように変更される場合に，図１の先行技術のヘテロジニアスグラフィックスプロセッサを，ＯｐｅｎＧＬ  ＥＳ  ２．０プログラムオブジェクト構成ＡＰＩ関数を使用して構成することができる。
【００７５】
そのような実施形態では，固定機能ユニフォーム状態オブジェクト７６００は，フラグメント処理パイプラインステージ全体の状態を完全に記述する。プログラムオブジェクト７６００のためのシェーダオブジェクトを特定するステップは，フラグメントシェーダオブジェクトを特定するステップを省き，またはフラグメントシェーダオブジェクトの識別子としてある既定の値を取り，よって，ＯｐｅｎＧＬ  ＥＳ  ２．０  ＡＰＩの視点から，プログラムオブジェクト指定ステップを模倣する。このようにしてＯｐｅｎＧＬ  ＥＳ  ２．０グラフィックスアプリケーションを，図１のヘテロジニアスグラフィックスプロセッサを配備するようにわずかに変更することができる。
【産業上の利用可能性】
【００７６】
本発明はコンピュータ産業および娯楽産業において使用される。
【図１】
0005829684.tif 000002
【図２】
0005829684.tif 000003
【図３】
0005829684.tif 000004
【図４】
0005829684.tif 000005
【図５】
0005829684.tif 000006
【図６】
0005829684.tif 000007
【図７】
0005829684.tif 000008
【図８】
0005829684.tif 000009