(57)【要約】【課題】３Ｄグラフィック処理のための装置及び方法を提供する。【解決手段】グラフィックプロセッサーは、固定されたパイプラインをサポートするＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を第１のマイクロコードに切り替える固定パイプラインコード生成部、プログラマブルパイプラインをサポートするＡＰＩを第２のマイクロコードに切り替えるシェイダーパイプラインコード生成部、及びシェイダープログラムを利用して前記第１のマイクロコードまたは前記第２のマイクロコードを処理するシェイダーパイプライン、を含む。【選択図】図３
2011513874.tif 000002
【特許請求の範囲】
【請求項１】
３Ｄグラフィック処理のためのグラフィックプロセッサーにおいて、
固定されたパイプラインをサポートするＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を第１のマイクロコードに切り替える固定パイプラインコード生成部；
プログラマブルパイプラインをサポートするＡＰＩを第２のマイクロコードに切り替えるシェイダーパイプラインコード生成部；及び、
前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、シェイダープログラムを利用して前記第１のマイクロコード及び前記第２のマイクロコードのうち少なくともいずれか一つを処理するシェイダーパイプラインを含むグラフィックプロセッサー。
【請求項２】
前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、入力ＡＰＩの入力を受けて固定されたパイプラインまたはプログラマブルパイプラインをサポートするか否かを判断するＡＰＩ選択部をさらに含む請求項１に記載のグラフィックプロセッサー。
【請求項３】
前記シェイダーパイプラインは、バーテックスシェイダー及び断片シェイダーを含む請求項１に記載のグラフィックプロセッサー。
【請求項４】
前記固定パイプラインコード生成部は、
受信した入力ＡＰＩのオブジェクトの属性をパーシング（ｐａｒｓｅ）し、パーシングされた属性にともなう状態情報を出力する状態部；
前記出力された状態情報に基づいて前記第１のマイクロコードを生成するコード生成器；及び、
前記第１のマイクロコードを格納するコードバッファー；
を含む請求項２に記載のグラフィックプロセッサー。
【請求項５】
前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、ストール（ｓｔａｌｌ）を表すハザード（ｈａｚａｒｄ）の発生を区分するために、前記第１のマイクロコード及び前記第２のマイクロコードのうち少なくともいずれか一つの処理順序と実行時間を確認し、前記ハザードの発生にともなう処理を実行するハザード制御器をさらに含む請求項１に記載のグラフィックプロセッサー。
【請求項６】
前記ハザード制御器は、
各マイクロコードの処理順序と実行時間を確認し、前記ハザードが発生するか否かを確認するハザード確認部；及び、
前記制御器は、前記ハザードが発生したマイクロコードの処理順序を再整列する再整列部；
を含む請求項５に記載のグラフィックプロセッサー。
【請求項７】
前記ハザード制御器は、
前記ハザードが発生したマイクロコードの以前マイクロコードの結果値を他のマイクロコードの実行のためにフォーワーディングするフォーワーディング部をさらに含む請求項６に記載のグラフィックプロセッサー。
【請求項８】
前記固定されたパイプラインをサポートするＡＰＩは、ＯｐｅｎＧＬ  ＥＳ  １．ｘであり、前記プログラマブルパイプラインをサポートするＡＰＩは、ＯｐｅｎＧＬ  ＥＳ  ２．ｘである請求項１に記載のグラフィックプロセッサー。
【請求項９】
グラフィックプロセッサーにより実行される３Ｄグラフィックプロセシング方法において、
固定されたパイプラインをサポートするＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）からプログラマブルパイプラインをサポートするシェイダーが認識できる第１のマイクロコードに切り替える段階；及び、
前記第１のマイクロコードを処理して３Ｄグラフィック処理を実行する段階；
を含む方法。
【請求項１０】
プログラマブルパイプラインをサポートするＡＰＩから前記シェイダーが認識できる第２のマイクロコードに切り替える段階をさらに含む請求項９に記載の方法。
【請求項１１】
前記固定されたパイプラインをサポートするＡＰＩを前記第１のマイクロコード切り替える段階、及び前記プログラマブルパイプラインをサポートするＡＰＩを前記第２のマイクロコード切り替える段階は、
入力ＡＰＩのオブジェクトの属性にともなう状態情報を獲得する段階；及び、
前記状態情報に基づいて前記第１及び第２のマイクロコードを生成する段階；
を含む請求項９に記載の方法。
【請求項１２】
前記固定されたパイプラインをサポートするＡＰＩを前記第１のマイクロコード切り替える段階、及び前記プログラマブルパイプラインをサポートするＡＰＩを前記第２のマイクロコード切り替える段階は、
各マイクロコードに後続するマイクロコードの実行がストール（ｓｔａｌｌ）されるハザードが発生するか否かを確認する段階をさらに含む請求項９に記載の方法。
【請求項１３】
前記固定されたパイプラインをサポートするＡＰＩを前記第１のマイクロコード切り替える段階、及び前記プログラマブルパイプラインをサポートするＡＰＩを前記第２のマイクロコード切り替える段階は、
前記ハザードが発生する場合、前記ハザードが発生したマイクロコードを再整列する段階をさらに含む請求項１２に記載の方法。
【請求項１４】
前記固定されたパイプラインをサポートするＡＰＩを前記第１のマイクロコード切り替える段階、及び前記プログラマブルパイプラインをサポートするＡＰＩを前記第２のマイクロコード切り替える段階は、
前記ハザードが発生する場合、ハザードが発生したマイクロコードの以前マイクロコードの結果値を他のマイクロコードにフォーワーディングする段階をさらに含む請求項１２に記載の方法。
【請求項１５】
ＣＰＵ；及び、
前記ＣＰＵと連結され、３Ｄグラフィックを処理するグラフィックプロセッサーを含み、
前記グラフィックプロセッサーは、
固定されたパイプラインをサポートするＡＰＩを第１のマイクロコードに切り替える固定パイプラインコード生成部；
プログラマブルパイプラインをサポートするＡＰＩを第２のマイクロコードに切り替えるシェイダーパイプラインコード生成部；及び、
前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、シェイダープログラムを利用して前記第１のマイクロコード及び前記第２のマイクロコードのうち少なくともいずれか一つを処理するシェイダーパイプライン；
を含むコンピュータ装置。
【請求項１６】
前記グラフィックプロセッサーは、前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、入力ＡＰＩの入力を受けて固定されたパイプラインまたはプログラマブルパイプラインをサポートするか否かを判断するＡＰＩ選択部をさらに含む請求項１５に記載のコンピュータ装置。
【請求項１７】
前記シェイダーパイプラインは、バーテックスシェイダー及び断片シェイダーを含む請求項１５に記載のコンピュータ装置。
【請求項１８】
前記固定パイプラインコード生成部は、
受信した入力ＡＰＩのオブジェクトの属性をパーシング（ｐａｒｓｅ）し、パーシングされた属性にともなう状態情報を出力する状態部；
前記出力された状態情報に基づいて前記第１のマイクロコードを生成するコード生成器；及び、
前記第１のマイクロコードを格納するコードバッファー；
を含む請求項１５に記載のコンピュータ装置。
【請求項１９】
前記グラフィックプロセッサーは、前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、ストール（ｓｔａｌｌ）を表すハザード（ｈａｚａｒｄ）の発生を区分するために、前記第１のマイクロコード及び前記第２のマイクロコードのうち少なくともいずれか一つの処理順序と実行時間を確認し、前記ハザードの発生にともなう処理を実行するハザード制御器をさらに含む請求項１５に記載のコンピュータ装置。
【請求項２０】
前記ハザード制御器は、
各マイクロコードの処理順序と実行時間を確認し、前記ハザードが発生するか否かを確認するハザード確認部；及び、
前記制御器は、前記ハザードが発生したマイクロコードの処理順序を再整列する再整列部；
を含む請求項１９に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３Ｄ（３−ｄｉｍｅｎｓｉｏｎａｌ）グラフィック処理に関する。
【背景技術】
【０００２】
多様な３Ｄグラフィックアプリケーションは、携帯電話（ｍｏｂｉｌｅ  ｐｈｏｎｅ）、ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、ポータブルゲームコンソールのようなモバイル環境で実行されている。３Ｄアプリケーションを処理するために、モバイル環境のための３ＤグラフィックＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）が提供されている。３ＤグラフィックＡＰＩのうちいくつかは、固定されたパイプライン（ｆｉｘｅｄ  ｐｉｐｅｌｉｎｅ）をサポートするが、他の３ＤグラフィックＡＰＩは、プログラマブルパイプライン（ｐｒｏｇｒａｍｍａｂｌｅ  ｐｉｐｅｌｉｎｅ）をサポートする。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
３Ｄグラフィック処理のための技術、装置及びシステムが記述される。前記３Ｄグラフィック処理技術、装置及びシステムは、固定されたパイプライン及びプログラマブルパイプラインを同時にサポートすることができる。
【課題を解決するための手段】
【０００４】
一態様において、３Ｄグラフィック処理のためのグラフィックプロセッサーが提供される。前記グラフィックプロセッサーは、固定されたパイプラインをサポートするＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を第１のマイクロコードに切り替える固定パイプラインコード生成部、プログラマブルパイプラインをサポートするＡＰＩを第２のマイクロコードに切り替えるシェイダーパイプラインコード生成部、及び前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、シェイダープログラムを利用して前記第１のマイクロコード及び前記第２のマイクロコードのうち少なくともいずれか一つを処理するシェイダーパイプラインを含む。
【０００５】
前記グラフィックプロセッサーは、前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、入力ＡＰＩの入力を受けて固定されたパイプラインまたはプログラマブルパイプラインをサポートするか否かを判断するＡＰＩ選択部をさらに含む。
【０００６】
また、前記シェイダーパイプラインは、バーテックスシェイダー及び断片シェイダーを含む。
【０００７】
前記固定パイプラインコード生成部は、受信した入力ＡＰＩのオブジェクトの属性をパーシング（ｐａｒｓｅ）し、パーシングされた属性にともなう状態情報を出力する状態部、前記出力された状態情報に基づいて前記第１のマイクロコードを生成するコード生成器、及び前記第１のマイクロコードを格納するコードバッファー、を含む。
【０００８】
前記グラフィックプロセッサーは、前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、ストール（ｓｔａｌｌ）を表すハザード（ｈａｚａｒｄ）の発生を区分するために、前記第１のマイクロコード及び前記第２のマイクロコードのうち少なくともいずれか一つの処理順序と実行時間を確認し、前記ハザードの発生にともなう処理を実行するハザード制御器をさらに含む。前記ハザード制御器は、各マイクロコードの処理順序と実行時間を確認し、前記ハザードが発生するか否かを確認するハザード確認部、及び前記制御器は、前記ハザードが発生したマイクロコードの処理順序を再整列する再整列部；を含む。前記ハザード制御器は、前記ハザードが発生したマイクロコードの以前マイクロコードの結果値を他のマイクロコードの実行のためにフォーワーディングするフォーワーディング部をさらに含む。
【０００９】
前記固定されたパイプラインをサポートするＡＰＩは、ＯｐｅｎＧＬ  ＥＳ  １．ｘであり、前記プログラマブルパイプラインをサポートするＡＰＩは、ＯｐｅｎＧＬ  ＥＳ  ２．ｘである。
【００１０】
他の態様において、グラフィックプロセッサーにより実行される３Ｄグラフィックプロセシング方法が提供される。前記方法は、固定されたパイプラインをサポートするＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）からプログラマブルパイプラインをサポートするシェイダーが認識できる第１のマイクロコードに切り替える段階、及び前記第１のマイクロコードを処理して３Ｄグラフィック処理を実行する段階、を含む。処理された３Ｄグラフィックは、バッファーのようなメモリーに格納されることができる。また、処理された３Ｄグラフィックは、モバイル環境のディスプレイ上に表示されることもできる。
【００１１】
前記方法は、プログラマブルパイプラインをサポートするＡＰＩから前記シェイダーが認識できる第２のマイクロコードに切り替える段階をさらに含む。
【００１２】
前記固定されたパイプラインをサポートするＡＰＩを前記第１のマイクロコード切り替える段階、及び前記プログラマブルパイプラインをサポートするＡＰＩを前記第２のマイクロコード切り替える段階は、入力ＡＰＩのオブジェクトの属性にともなう状態情報を獲得する段階、及び前記状態情報に基づいて前記第１及び第２のマイクロコードを生成する段階、を含む。
【００１３】
前記固定されたパイプラインをサポートするＡＰＩを前記第１のマイクロコード切り替える段階、及び前記プログラマブルパイプラインをサポートするＡＰＩを前記第２のマイクロコード切り替える段階は、各マイクロコードに後続するマイクロコードの実行がストール（ｓｔａｌｌ）されるハザードが発生するか否かを確認する段階をさらに含む。前記固定されたパイプラインをサポートするＡＰＩを前記第１のマイクロコード切り替える段階、及び前記プログラマブルパイプラインをサポートするＡＰＩを前記第２のマイクロコード切り替える段階は、前記ハザードが発生する場合、前記ハザードが発生したマイクロコードを再整列する段階をさらに含む。前記固定されたパイプラインをサポートするＡＰＩを前記第１のマイクロコード切り替える段階、及び前記プログラマブルパイプラインをサポートするＡＰＩを前記第２のマイクロコード切り替える段階は、前記ハザードが発生する場合、ハザードが発生したマイクロコードの以前マイクロコードの結果値を他のマイクロコードにフォーワーディングする段階をさらに含む。
【００１４】
他の態様において、コンピュータ装置は、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）；及び、前記ＣＰＵと連結され、３Ｄグラフィックを処理するグラフィックプロセッサーを含む。前記グラフィックプロセッサーは、固定されたパイプラインをサポートするＡＰＩを第１のマイクロコードに切り替える固定パイプラインコード生成部、プログラマブルパイプラインをサポートするＡＰＩを第２のマイクロコードに切り替えるシェイダーパイプラインコード生成部、及び前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と連結され、シェイダープログラムを利用して前記第１のマイクロコード及び前記第２のマイクロコードのうち少なくともいずれか一つを処理するシェイダーパイプライン、を含む。
【００１５】
前記コンピュータ装置は、入力ＡＰＩを受信し、前記受信されたＡＰＩが前記固定されたパイプライン（ｆｉｘｅｄ  ｐｉｐｅｌｉｎｅ）またはプログラマブルパイプライン（ｐｒｏｇｒａｍｍａｂｌｅ  ｐｉｐｅｌｉｎｅ）をサポートするか否かを判断するために、前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と通信するＡＰＩ選択部をさらに含む。前記シェイダーパイプラインは、バーテックスシェイダー（ｖｅｒｔｅｘ  ｓｈａｄｅｒ）及び断片シェイダー（ｆｒａｇｍｅｎｔ  ｓｈａｄｅｒ）を含む。前記固定パイプラインコード生成部は、前記受信したＡＰＩのオブジェクトの属性をパーシング（ｐａｒｓｅ）し、前記パーシングされた属性にともなう状態情報を出力する状態部、前記出力された状態情報に基づいて前記第１のマイクロコードを生成するコード生成器、及び前記第１のマイクロコードを格納するコードバッファー、を含む。前記グラフィックプロセッサーは、前記第１のマイクロコードまたは前記第２のマイクロコードの処理順序と実行時間を識別してハザードの発生にともなう処理を実行するために、前記固定パイプラインコード生成部及び前記シェイダーパイプラインコード生成部と通信するハザード制御器をさらに含む。前記ハザード制御器は、各マイクロコードの処理順序と実行時間を確認して、ハザードが発生するか否かを確認するハザード確認部（ｈａｚａｒｄ  ｃｈｅｃｋｅｒ）及び前記制御器は、前記ハザードが発生したマイクロコードの処理順序を再整列する再整列部を含む。
【発明の効果】
【００１６】
技術、装置及びシステムの具現（ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ）は、次の長所の一つまたは複数を提供することができる。提案された３Ｄグラフィック処理装置、システム及び方法は、ハードウェアの大きさ及び電力消耗を減少させることができる。さらに、固定されたパイプラインまたはプログラマブルパイプラインによって追加的な命令やコンパイルが必要でなく、必要なメモリーを最小化することができる。また、ハザードによるシェイダーのストールを緩和して３Ｄグラフィックの性能を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】シェイダーを利用したプログラマブルパイプラインの構造を示す。
【図２】３Ｄグラフィック処理を具現することができるコンピュータ装置のブロック図を示す。
【図３】本発明の一実施例に係るグラフィックプロセッサーのブロック図の一例を示す。
【図４】本発明の一実施例に係る固定パイプラインコード生成部のブロック図を示す。
【図５】属性にともなう状態の一例を示す。
【図６】一般的動作のための６４ビットマイクロコードのフォーマットの一例を示す。
【図７】流れ制御のための６４ビットマイクロコードのフォーマットの一例を示す。
【図８】フォグ状態でマイクロコードの生成を示す。
【図９】ハザードが発生される場合を示す。
【図１０】本発明の一実施例に係るハザード制御器を示すブロック図である。
【図１１】本発明の一実施例に係るグラフィックプロセシング方法のフローチャートを示す。
【発明を実施するための形態】
【００１８】
ＯｐｅｎＧＬ  ＥＳ（ＯｐｅｎＧＬ  ｆｏｒ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ）は、携帯電話（ｍｏｂｉｌｅ  ｐｈｏｎｅ）、ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、コンソールのような内臓型（ｅｍｂｅｄｄｅｄ）装置のために設計されたＯｐｅｎＧＬ  ３ＤグラフィックＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）の副集合である。ＯｐｅｎＧＬ  ＥＳは、非営利技術グループである“Ｋｈｒｏｎｏｓ  Ｇｒｏｕｐ”により管理されている。
【００１９】
ＯｐｅｎＧＬ  ＥＳには複数のバージョン（ｖｅｒｓｔｉｏｎ）がある。例えば、ＯｐｅｎＧＬ  ＥＳ  １．０は、ＯｐｅｎＧＬ  １．３バージョンに基づいて作成された。ＯｐｅｎＧＬ  ＥＳ  １．０は、ＯｐｅｎＧＬ  １．５バージョンと関連付けられて作成された。ＯｐｅｎＧＬ  ＥＳ  ２．０は、ＯｐｅｎＧＬ  ２．０バージョンと関連付けられて作成された。２００７年５月に頒布されたＯｐｅｎＧＬ  ＥＳ  ２．０は、固定されたレンダリングパイプラインをなくしてプログラマブルパイプラインを導入している。固定された機能ＡＰＩ（ｆｉｘｅｄ−ｆｕｎｃｔｉｏｎ  ＡＰＩ）により記述された媒体（ｍａｔｅｒｉａｌ）や光源パラメーターの明細のような切り替え及び光源パイプラインの大部分のレンダリング特徴がグラフィックプログラマにより使われるシェイダー（ｓｈａｄｅｒ）に交替された。
【００２０】
ＯｐｅｎＧＬ  ＥＳ  １．ｘは、ＯｐｅｎＧＬ  ＥＳ  １．０、１．１及び１．５のうち少なくとも一つのバージョンを含み、ＯｐｅｎＧＬ  ＥＳ  ２．ｘは、ＯｐｅｎＧＬ  ＥＳ  ２．０を含む。
【００２１】
ＯｐｅｎＧＬ  ＥＳ  １．ｘは、固定された機能ハードウェアのために設計され、加速、画像品質及び性能を提供する。また、ＯｐｅｎＧＬ  ＥＳ  １．ｘは、ＡＰＩのハードウェア加速を強調する。ＯｐｅｎＧＬ  ＥＳ  １．ｘとは異なり、ＯｐｅｎＧＬ  ＥＳ  ２．ｘは、完全なプログラマブル３Ｄグラフィックを可能にする。また、ＯｐｅｎＧＬ  ＥＳ  ２．ｘは、シェイダー及びプログラムオブジェクトを生成するための能力と、バーテックス（ｖｅｒｔｅｘ）及び断片シェイダー（ｆｒａｇｍｅｎｔ  ｓｈａｄｅｒ）の能力とを強調する。ＯｐｅｎＧＬ  ＥＳ  ２．ｘは、ＯｐｅｎＧＬ  ＥＳ  １．ｘの固定された機能切り替え及び断片パイプラインをサポートしない。従って、ＯｐｅｎＧＬ  ＥＳ  ２．ｘは、ＯｐｅｎＧＬ  ＥＳ  １．ｘと下位互換されない。
【００２２】
前述した通り、ＯｐｅｎＧＬ  ＥＳ  １．ｘは、固定されたパイプラインをサポートするが、ＯｐｅｎＧＬ  ＥＳ  ２．ｘは、プログラマブルパイプライン（ｐｒｏｇｒａｍｍａｂｌｅ  ｐｉｐｅｌｉｎｅ）をサポートする。ＯｐｅｎＧＬ  ＥＳ  ２．ｘによりサポートされるプログラマブルパイプラインは、シェイダーを使用する。シェイダーは、高い柔軟性を有するグラフィックハードウェア上で主にレンダリング効果を演算するために使われるソフトウェア命令の集合である。
【００２３】
例えば、Ｄｉｒｅｃｔ３Ｄ、ＯｐｅｎＧＬ及びＯｐｅｎＧＬ  ＥＳグラフィックライブラリーは、次のような三つの類型のシェイダーを使用する。
【００２４】
（１）バーテックスシェイダー（ｖｅｒｔｅｘ  ｓｈａｄｅｒ）は、グラフィックプロセッサーで各バーテックス毎に一回ずつ実行される。これは各バーテックスの仮想空間上の３Ｄ位置をスクリーン上に表示される３Ｄ位置である２Ｄ座標（Ｚ−バッファーの深度値（ｄｅｐｔｈ  ｖａｌｕｅ）のように）に切り換えることである。バーテックスシェイダーは、位置、色相及びテクスチャ座標のような特性を扱うことができる。バーテックスシェイダーの出力は、幾何シェイダー（ｇｅｏｍｅｔｒｙ  ｓｈａｄｅｒ）やラスタライザー（ｒａｓｔｅｒｉｚｅｒ）のような次の段階のパイプラインに提供される。
【００２５】
（２）幾何シェイダー（ｇｅｏｍｅｔｒｙ  ｓｈａｄｅｒ）は、メッシュ（ｍｅｓｈ）からバーテックスを追加したり除去することができる。幾何シェイダーは、手順的に幾何を生成するのに使われたり、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）により処理されるのに重い現在メッシュに体積詳細（ｖｏｌｕｍｅｔｒｉｃ  ｄｅｔａｉｌ）を追加するのに使われる。幾何シェイダーが使われる場合、その出力は、ラスタライザーに提供される。
【００２６】
（３）断片シェイダー（ｆｒａｇｍｅｎｔ  ｓｈａｄｅｒ）は、ピクセルシェイダー（ｐｉｘｅｌ  ｓｈａｄｅｒ）ともいい、各断片（またはピクセル）の色相を演算することができる。この段階の入力は、グラフィックパイプラインを介して送られるポリゴン（ｐｏｌｙｇｏｎ）を詰めるラスタライザーから提供される。断片シェイダーは、バンプマッピング（ｂｕｍｐ  ｍａｐｐｉｎｇ）や色相トーニング（ｃｏｌｏｒ  ｔｏｎｉｎｇ）のような効果と景観照明（ｓｃｅｎｅ  ｌｉｇｈｔｉｎｇ）に使われることができる。固定されたパイプラインは、固定された構造に有限な（ｆｉｎｉｔｅ）状態変数を調整することによって、制限された類型の演算のみを提供する。しかし、断片シェイダーは、プログラミングを介する一般的で複雑な演算を可能にして、理論的に無限な状態変数を提供することができる。
【００２７】
図１は、シェイダーを利用したプログラマブルパイプライン（ｐｒｏｇｒａｍｍａｂｌｅ  ｐｉｐｅｌｉｎｅ）の構造を示す。バーテックスシェイダー１１０は、ユーザ定義属性値（ｕｓｅｒ  ｄｅｆｉｎｅｄ  ａｔｔｒｉｂｕｔｅ  ｖａｒｉａｂｌｅｓ）の入力を受けて、座標切り替え及び／または照明を計算する。バーテックスシェイダー１１０の出力は、ラスタライザー１２０によりラスターフォーマット（ｒａｓｔｅｒ  ｆｏｒｍａｔ）に切り替えられる。断片シェイダー１３０は、テクスチャ演算と色相トーニング（ｃｏｌｏｒ  ｔｏｎｉｎｇ）のような処理を実行する。断片シェイダー１３０の出力は、フレームバッファー１４０に送られてディスプレイのための処理が実行される。
【００２８】
ＯｐｅｎＧＬ  ＥＳ  ２．ｘがＯｐｅｎＧＬ  ＥＳ  １．ｘと下位互換されないことは、固定されたパイプラインとプログラマブルパイプラインとの差に起因する。プログラマブルパイプラインは、ユーザに柔軟性を提供することができるが、固定されたパイプラインも処理速度の面で利点がある。
【００２９】
グラフィックの一シーン（ｓｃｅｎｅ）に含まれるあらゆるオブジェクト（ｏｂｊｅｃｔ）がシェイダーを必要とすることではなく、華麗なグラフィック効果が相対的に必要でない部分や演算処理の迅速性が要求される部分ではＯｐｅｎＧＬ  ＥＳ  １．ｘを基準として表現されることができる。従って、提案された技術、装置及び方法は、プログラマブルパイプライン及び固定されたパイプラインを同時にサポートする場合に使われることができる。プログラマブルパイプライン及び固定されたパイプラインを同時にサポートすることによって、ハードウェアの大きさとパワー消耗が減少され、特定モバイル環境に効率的である。
【００３０】
以下の技術は、Ｄｉｒｅｃｔ３Ｄ、ＯｐｅｎＧＬ、ＯｐｅｎＧＬ  ＥＳなどのような多様な３ＤグラフィックＡＰＩを処理するためのハードウェア及び／またはソフトウェアで具現されることができる。ＯｐｅｎＧＬ  ＥＳ  １．ｘは、ＯｐｅｎＧＬ  ＥＳ  １．０、１．１及び１．５のうち少なくとも一つのバージョンを含み、ＯｐｅｎＧＬ  ＥＳ  ２．ｘは、ＯｐｅｎＧＬ  ＥＳ  ２．０を含む。
【００３１】
説明を明確にするために、固定されたパイプラインをサポートするグラフィックＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）でＯｐｅｎＧＬ  ＥＳ  １．ｘを記述し、プログラマブルパイプラインをサポートするグラフィックＡＰＩでＯｐｅｎＧＬ  ＥＳ  ２．ｘを記述するが、これは例示に過ぎず、制限でない。本発明の技術的思想は、固定されたパイプラインまたはプログラマブルパイプラインをサポートする他のグラフィックＡＰＩにも適用されることができる。
【００３２】
次の文書の内容が参照されることができる。
【００３３】
ｈｔｔｐ：／／ｗｗｗ．ｋｈｒｏｎｏｓ．ｏｒｇ  ／ｒｅｇｉｓｔｒｙ／ｇｌｅｓ／ｓｐｅｃｓ／１．１／ｅｓ＿ｆｕｌｌ＿ｓｐｅｃ．１．１．１２．ｐｄｆから得られる“ＯｐｅｎＧＬ  ＥＳ  １．１  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”；及び、
ｈｔｔｐ：／／ｗｗｗ．ｋｈｒｏｎｏｓ．ｏｒｇ  ／ｒｅｇｉｓｔｒｙ／ｇｌｅｓ／ｓｐｅｃｓ／２．０／ｅｓ＿ｆｕｌｌ＿ｓｐｅｃ．２．０．２３．ｐｄｆから得られる“ＯｐｅｎＧＬ  ＥＳ  ２．０  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”。
【００３４】
図２は、３Ｄグラフィック処理を具現することができるコンピュータ装置のブロック図を示す。コンピュータ装置２００は、携帯電話、ＰＤＡ、コンソール、モバイルＰＣ（ｐｅｒｓｏｎｎｅｌ  ｃｏｍｐｕｔｅｒ）などのような携帯用機器（ｍｏｂｉｌｅ  ｄｅｖｉｃｅ）である。コンピュータ装置２００は、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）２１０、メモリー２２０、グラフィックプロセッサー２３０及びインターフェース部（ｉｎｔｅｒｆａｃｅ  ｕｎｉｔ）２４０を含む。コンピュータ装置２００の各要素は、システムバス２９０を介して連結されることができる。ＣＰＵ２１０は、ソフトウェアアプリケーションを実行する。メモリー２２０は、ＣＰＵ２２１０により使われるアプリケーションとデータを格納する。
【００３５】
グラフィックプロセッサー２３０は、３Ｄグラフィック処理を実行する。グラフィックプロセッサー２３０は、固定されたパイプラインをサポートするグラフィックＡＰＩ及びプログラマブルパイプラインをサポートするグラフィックＡＰＩを処理することができる。例えば、グラフィックプロセッサー２３０は、ＯｐｅｎＧＬ  ＥＳ  １．ｘ及び／またはＯｐｅｎＧＬ  ＥＳ  ２．ｘをサポートするＡＰＩを処理することができる。グラフィックプロセッサー２３０に関しては、以下、図３ないし図８を参照して詳細に記述する。
【００３６】
図３は、本発明の一実施例に係るグラフィックプロセッサーのブロック図の一例を示す。グラフィックプロセッサー３００は、ＡＰＩ選択部３１０、固定パイプラインコード生成部３３０、シェイダーパイプラインコード生成部３４０、ハザード制御器３５０及びシェイダーパイプライン３６０を含む。
【００３７】
ＡＰＩ選択部３１０は、ＡＰＩの入力を受けて固定されたパイプライン及び／またはプログラマブルパイプラインをサポートするか否かを判断する。ＡＰＩ選択部３１０は、入力されるＡＰＩが固定されたパイプラインをサポートすると判断されると、固定パイプラインコード生成部３３０に送り、プログラマブルパイプラインをサポートすると判断されると、シェイダーパイプラインコード生成部３４０に送る。
【００３８】
固定パイプラインコード生成部３３０は、固定されたパイプラインをサポートするＡＰＩをシェイダーパイプライン３６０が認識できるマイクロコード（ｍｉｃｒｏ  ｃｏｄｅ、即ち、第１のマイクロコード）に切り換える。第１のマイクロコードは、シェイダーパイプライン３６０でいかなる演算を実行するかを表すコードである。例えば、固定パイプラインコード生成部３３０は、ＯｐｅｎＧＬ  ＥＳ  １．ｘに基づくＡＰＩをシェイダーベースのマイクロコードに切り換えることができる。
【００３９】
シェイダーパイプラインコード生成部３４０は、プログラマブルパイプラインをサポートするＡＰＩをシェイダーパイプライン３６０が認識できる他のマイクロコード（即ち、第２のマイクロコード）に切り換える。第２のマイクロコードは、シェイダーパイプライン３６０でいかなる演算を実行するかを表すコードである。例えば、シェイダーパイプラインコード生成部３４０は、ＯｐｅｎＧＬ  ＥＳ  ２．ｘに基づくＡＰＩをシェイダーベースのマイクロコードに切り換えることができる。
【００４０】
ハザード制御器３５０は、固定パイプラインコード生成部３３０により生成された第１のマイクロコード及び／またはシェイダーパイプラインコード生成部３４０により生成された第２のマイクロコードからシェイダーパイプライン３６０における実行時にストール（ｓｔａｌｌ）が発生するか否かに関するハザードを検査する。ハザードが発生する場合、ストールを緩和させることができる処理を実行する。ハザード制御器３５０は、ハザード（ｈａｚａｒｄ）が発生すると、前記第１及び第２のマイクロコードの再整列（ｒｅｏｒｄｅｒｉｎｇ）、フォーワーディング（ｆｏｒｗａｒｄｉｎｇ）及び／またはインターロック（ｉｎｔｅｒ−ｌｏｃｋ）を実行することができる。
【００４１】
シェイダーパイプライン３６０は、第１及び第２のマイクロコードを取り出し（ｆｅｔｃｈ）、デコーディングして（ｄｅｃｏｄｉｎｇ）実行する（ｅｘｅｃｕｔｅ）過程を介してシェイダープログラムを処理する。シェイダーパイプライン３６０は、図１の例に記述した通り、バーテックスシェイダー及び断片シェイダーで構成されることができる。バーテックスシェイダーは、各バーテックス及びバーテックス計算に必要な定数の入力を受けて座標切り替え及び照明を計算し、切り替えられた値を出力する。切り替えられた値は、クリッピング（ｃｌｉｐｐｉｎｇ）とラスタライゼーション（ｒａｓｔｅｒｉｚａｔｉｏｎ）過程を経て断片シェイダーに入力されることができる。断片シェイダーは、テクスチャ演算と色相トーニング（ｔｏｎｉｎｇ）を処理する。
【００４２】
プログラマブルパイプラインをサポートするＯｐｅｎＧＬ  ＥＳ  ２．ｘは、基本的にシェイダープログラムを利用する。従って、シェイダーパイプラインコード生成部３３０は、シェイダーパイプライン３６０のためな第２のマイクロコードを生成することができる。
【００４３】
しかし、固定されたパイプラインをサポートするＯｐｅｎＧＬ  ＥＳ  １．ｘからシェイダーベースのマイクロコードを生成することは容易でない。ＯｐｅｎＧＬ  ＥＳ  １．ｘをサポートするために、オブジェクトの属性が変わる時ごとにリアルタイムでコンパイルを実行することができるが、これはハードウェアに追加的なコードメモリーが要求されることができる。もし、一つのコードメモリーのみを使用すると、ＯｐｅｎＧＬ  ＥＳ  ２．ｘからＯｐｅｎＧＬ  ＥＳ  １．ｘへの切り替え及び／またはＯｐｅｎＧＬ  ＥＳ  １．ｘからＯｐｅｎＧＬ  ＥＳ  ２．ｘへの切り替えが発生する時ごとに以前コードメモリーの命令を消し、新しくコンパイルされた命令語を挿入するオーバーヘッドが発生することができる。
【００４４】
モバイル環境で追加的なメモリーまたはオーバーヘッドの増加は、ハードウェア面積の増加、追加的なパワー消耗をもたらすおそれがある。従って、小さいハードウェアの大きさ、低い電力、高い性能向上を有するようにグラフィックプロセッサー３００を設計する必要がある。
【００４５】
図４は、本発明の一実施例に係る固定パイプラインコード生成部のブロック図を示す。固定パイプラインコード生成部３３０は、状態部（ｓｔａｔｅ  ｕｎｉｔ）３３１、コード生成器３３２、コードバッファー３３３及び制御器３３４を含む。
【００４６】
状態部３３１は、入力されるオブジェクトの属性をパーシング（ｐａｒｓｅ）し、パーシングされた属性にともなう状態情報を出力する。状態部３３１は、有限状態マシン（ｆｉｎｉｔｅ  ｓｔａｔｅ  ｍａｃｈｉｎｅ）であり、ユーザ定義された属性によって状態を変更する。各状態は、複数のサブ−状態を含む。
【００４７】
コード生成器３３２は、状態情報にともなうマイクロコードを生成する。各状態は、マイクロコードマルチプレクサー（未図示）に入力され、少なくとも一つのマイクロコードを選択して出力する。一つのマイクロコードは、６４ビットである。
【００４８】
コードバッファー３３３は、生成されたマイクロコードを格納し、制御器３３４の指示によってシェイダーに格納されたマイクロコードを送る。
【００４９】
制御器３３４は、状態部３１１、コード生成器３３２及びコードバッファー３３３を管理する。制御器３３４は、オブジェクトの属性によって状態部３３１の状態の変更または維持（ｈｏｌｄ）を制御することができる。
【００５０】
前記の通りに構成された固定パイプラインコード生成部３３０の大きさは、一般的なコードメモリーの５％に過ぎない大きさを有する。従って、ハードウェアの大きさが小さくなり、低い電力消耗を提供することができる。
【００５１】
以下、固定パイプラインコード生成部３３０の動作に対し、さらに具体的な例を挙げて記述する。
【００５２】
図５は、属性にともなう状態の一例を示す。入力される属性によって、現在状態は、初期化状態（ｉｎｉｔｉａｌ  ｓｔａｔｅ）、バーテックス状態（ｖｅｒｔｅｘ  ｓｔａｔｅ）、テクスチャ状態（ｔｅｘｔｕｒｅ  ｓｔａｔｅ）、ライト状態（ｌｉｇｈｔ  ｓｔａｔｅ）及びフォグ状態（ｆｏｇ  ｓｔａｔｅ）のうち少なくともいずれか一つの状態に変更される。各状態は、相互階層的に関連する５０ないし１７０個のサブ−状態を含むことができる。
【００５３】
例えば、ＯｐｅｎＧＬ  ＥＳ  １．１におけるフォグ状態を考慮する。設定されると、フォグ状態は、フォグ色相をブレンディングファクター（ｂｌｅｎｄｉｎｇ  ｆａｃｔｏｒ）ｆを利用してラスタライズされた断片のポストテクスチャ（ｐｏｓｔ−ｔｅｘｔｕｒｅ）色相にブレンディングする。ブレンディングファクターｆは、次の三つの数式のうち一つにより計算される。
【００５４】
【数１】
2011513874.tif 000003
【００５５】
【数２】
2011513874.tif 000004
【００５６】
【数３】
2011513874.tif 000005
【００５７】
ここで、ｃは、視線座標（０；０；０；１）である視線から断片中心までの視線座標長さ（ｅｙｅ−ｃｏｏｒｄｉｎａｔｅ  ｄｉｓｔａｎｃｅ）である。ｄ、ｅ及びｓを介して前記数式は、次の通り設定される。
【００５８】
ｖｏｉｄ  Ｆｏｇ｛ｘｆ｝（ｅｎｕｍ  ｐｎａｍｅ、Ｔ  ｐａｒａｍ）；
ｖｏｉｄ  Ｆｏｇ｛ｘｆ｝ｖ（ｅｎｕｍ  ｐｎａｍｅ、Ｔ  ｐａｒａｍｓ）；
ｐｎａｍｅが‘ＦＯＧ  ＭＯＤＥ’であると、ｐａｒａｍ及び／またはｐａｒａｍｓは、フォグ演算のために選択される各式を表すシンボル定数‘ＥＸＰ’、‘ＥＸＰ２’または‘ＬＩＮＥＡＲ’のうち一つを示す。もし、ｐｎａｍｅが‘ＦＯＧ  ＤＥＮＳＩＴＹ’、‘ＦＯＧ  ＳＴＡＲＴ’または‘ＦＯＧ  ＥＮＤ’であると、ｐａｒａｍ及び／またはｐａｒａｍｓは、各々、ｄ、ｅまたはｓを示す。
【００５９】
従って、前記式により定義されるフォグモード‘ＥＸＰ’、‘ＥＸＰ２’、‘ＬＩＮＥＡＲ’は、結果的にフォグがどれぐらいの濃度にレンダリングされるかを示しているといえる。‘ＥＸＰ’、‘ＥＸＰ２’、‘ＬＩＮＥＡＲ’が、各々、フォグ状態のサブ−状態になる。即ち、フォグモードが設定され、フォグＡＰＩが入力により提供されると、現在状態は、フォグ状態に変更され（または現在状態がフォグ状態であると、そのまま維持）、フォグ状態のサブ−状態として‘ＥＸＰ’、‘ＥＸＰ２’、‘ＬＩＮＥＡＲ’のうちいずれか一つが指定される。
【００６０】
シェイダーパイプライン３６０で認識可能なマイクロコードは、６４ビットのフォーマットを有することができる。マイクロコードの命令語の種類として、一般的動作（ｏｒｄｉｎａｒｙ  ｏｐｅｒａｔｉｏｎ）と流れ制御（ｆｌｏｗ  ｃｏｎｔｒｏｌ）の二つとに分けることができる。
【００６１】
図６は、一般的動作のための６４ビットマイクロコードのフォーマットの一例を示し、図７は、流れ制御のための６４ビットマイクロコードのフォーマットの一例を示す。各フィールドは、次の表のように定義される。
【００６２】
【表１】
2011513874.tif 000006
【００６３】
次の表は、ＯｐｅｎＧＬ  ＥＳシェイダーをサポートする命令語集合の一例を示す。
【００６４】
【表２】
2011513874.tif 000007
【００６５】
図８は、フォグ状態でマイクロコードの生成を示す。現在状態としてフォグモードが選択されると、コード生成器３３２は、各サブ−状態にともなうマイクロコードを生成する。生成されたマイクロコードは、シェイダーに入力されて処理される。
【００６６】
‘ＬＩＮＥＡＲ’、‘ＥＸＰ’、‘ＥＸＰ２’によって生成されるマイクロコードは，例示に過ぎず、本発明の技術的思想を制限することではない。
【００６７】
以下、マイクロコードをシェイダーパイプライン３６０がより効率的に処理するためのハザード（ｈａｚａｒｄ）防止に対して記述する。ＡＰＩをシェイダーが認識できるマイクロコードに切り替えることによって、シェイダーにおけるマイクロコードの実行にストール（ｓｔａｌｌ）が発生することができる。ストールの発生をハザードともいう。
【００６８】
例えば、シェイダーがマイクロコードを処理するためにＦ（ｆｅｔｃｈ）、Ｄ（ｄｅｃｏｄｅ）、Ｅ（ｅｘｅｃｕｔｉｏｎ）、Ｗ（ｗｒｉｔｅｂａｃｋ）の四つの過程を順次実行すると仮定する。
【００６９】
図９は、ハザードが発生される場合を示す。命令コード（Ｏｐｃｏｄｅ）ＲＳＰは、一般的に命令コードＡＤＤまたはＳＵＢより長い実行時間（ｅｘｅｃｕｔｉｏｎ  ｔｉｍｅ）を必要とする。例えば、ＲＳＰは、総５単位時間（Ｆ／Ｄ／Ｅ１／Ｅ２／Ｗ）が所要され、ＡＤＤまたはＳＵＢは、４単位時間（Ｆ／Ｄ／Ｅ／Ｗ）が所要されると仮定する。マイクロコード‘ＲＳＱ  Ｒ２  Ｒ０’、‘ＡＤＤ  Ｒ３  Ｒ１  Ｒ２’、‘ＳＵＢ  Ｒ６  Ｒ４  Ｒ５’が１単位時間の間隔に順次実行されるとすると、‘ＡＤＤ  Ｒ３  Ｒ１  Ｒ２’を処理するためには、まず‘ＲＳＱ  Ｒ２  Ｒ０’の実行が完了されなければならない。ところが、‘ＡＤＤ  Ｒ２  Ｒ１  Ｒ２’の開始時点に、まだ、‘ＲＳＱ  Ｒ２  Ｒ０’が完了されていないため、シェイダーは、‘ＡＤＤ  Ｒ３  Ｒ１  Ｒ２’の実行を延期する。これをインターロック（ｉｎｔｅｒ−ｌｏｃｋ）という。‘ＡＤＤ  Ｒ３  Ｒ１  Ｒ２’の実行が遅延されるため、次のマイクロコード‘ＳＵＢ  Ｒ６  Ｒ４  Ｒ５’の処理も遅延される。
【００７０】
前記の例題で、‘ＳＵＢ  Ｒ６  Ｒ４  Ｒ５’は、以前マイクロコード‘ＲＳＱ  Ｒ２  Ｒ０’、‘ＡＤＤ  Ｒ２  Ｒ１  Ｒ２’の実行可否と関係なしに処理が可能である。‘ＡＤＤ  Ｒ３  Ｒ１  Ｒ２’と‘ＳＵＢ  Ｒ６  Ｒ４  Ｒ５’の処理順序を変えると、シェイダーのストールを最小化して処理速度を高めることができる。これを再整列（ｒｅｏｒｄｅｒｉｎｇ）という。
【００７１】
図１０は、本発明の一実施例に係るハザード制御器を示すブロック図である。ハザード制御器８００は、ハザード確認部（ｈａｚａｒｄ  ｃｈｅｃｋｅｒ）８１０、再整列部（ｒｅｏｒｄｅｒｉｎｇ  ｕｎｉｔ）８２０及びフォーワーディング部（ｆｏｒｗａｒｄｉｎｇ  ｕｎｉｔ）８３０を含む。
【００７２】
バッファー部８５０は、複数のバッファー（ｂｕｆｆｅｒ＃０，ｂｕｆｆｅｒ＃１，…，ｂｕｆｆｅｒ＃Ｍ）を含み、各バッファーにはマイクロコードが格納される。バッファー部８５０は、固定パイプラインコード生成部３３０またはシェイダーパイプラインコード生成部３４０内に含まれることができ、システムバス３９０を介してハザード制御器８００にマイクロコードを送ることができる。または、バッファー部８５０は、ハザード制御器８００内に含まれることもできる。
【００７３】
ハザード確認部８１０は、各マイクロコードの処理順序と実行時間を確認して、ハザードが発生するか否かを確認する。ハザード確認部８１０は、ハザードが発生されると、ハザードが発生されるマイクロコードの以前または以後のマイクロコードの実行時間と処理順序を確認して再整列可否を決定する。
【００７４】
ハザード確認部８１０は、再整列情報を再整列部８２０に送り、再整列部８２０がマイクロコードを再整列するようにする。前述した図９の例題で、‘ＡＤＤ  Ｒ３  Ｒ１  Ｒ２’と‘ＳＵＢ  Ｒ６  Ｒ４  Ｒ５’の処理順序を再整列することによって、シェイダーのストールの発生を緩和させることができる。
【００７５】
フォーワーディング部８３０は、前記ハザードが発生したマイクロコードの以前マイクロコードの結果値が他のマイクロコードの実行のために使われると、前記結果値を他のマイクロコードにフォーワーディングする。
【００７６】
ハザードが発生する場合、ストールによる遅延を防止するために、再整列及び／またはフォーワーディングを使用することによって、シェイダーの性能を向上させることができる。グラフィックプロセッサーとＣＰＵとの間のデータ送信を減らしてバス帯域幅の浪費を防止することができる。
【００７７】
図１１は、本発明の一実施例に係るグラフィックプロセシング方法のフローチャートを示す。段階Ｓ８１０で、入力されるＡＰＩに対して固定されたパイプラインをサポートするＡＰＩであるかまたはプログラマブルパイプラインをサポートするＡＰＩであるかを判断する。例えば、ＯｐｅｎＧＬ  ＥＳ  １．ｘに該当するＡＰＩであるかまたはＯｐｅｎＧＬ  ＥＳ  ２．ｘに該当するＡＰＩであるかを判断する。
【００７８】
段階Ｓ８２０で、グラフィックプロセッサーは、プログラマブルパイプラインをサポートするＡＰＩをシェイダーが認識できる第１のマイクロコードに切り替える。
【００７９】
段階Ｓ８３０で、グラフィックプロセッサーは、固定されたパイプラインをサポートするＡＰＩをプログラマブルパイプラインをサポートするシェイダーが認識できる第２のマイクロコードに切り替える。前記マイクロコードに切り替えるために、入力される前記ＡＰＩのオブジェクトの属性にともなう状態情報を獲得し、前記状態情報に基づいて前記マイクロコードを生成することができる。
【００８０】
段階Ｓ８４０で、グラフィックプロセッサーは、生成されたマイクロコードの実行がストール（ｓｔａｌｌ）されるハザードが発生するか否かを確認する。
【００８１】
段階Ｓ８５０で、グラフィックプロセッサーは、前記ハザードが発生する場合、ハザードが発生したマイクロコードを再整列したり、または以前マイクロコードのフォーワーディングを介してストールを減少させることができるか否かを判断する。段階Ｓ８６０で、グラフィックプロセッサーは、マイクロの再整列及び／またはフォーワーディングを実行したり、段階Ｓ８７０で、マイクロコードのインターロックを実行する。
【００８２】
段階Ｓ８９０で、グラフィックプロセッサーは、前記マイクロコードを処理して３Ｄグラフィック処理を実行する。処理された３Ｄグラフィックは、モバイル環境のディスプレイユニット上に表示されたり、モバイル環境の格納ユニット上に格納されたりすることができる。
【００８３】
詳細な説明で記述された主要部や機能的動作の実施例は、詳細な説明に開示された構造または均等物を含むデジタル電子回路、コンピュータソフトウェア、ファームウェアまたはハードウェア、またはこれらの組合せで具現されることができる。詳細な説明に開示された主要部の実施例は、例えば、データ処理装置により実行可能なコンピュータ可読媒体上にエンコーディングされたコンピュータプログラム命令語の一つまたはその以上のモジュールのような一つまたはその以上のコンピュータプログラム製品で具現されることができる。コンピュータ可読媒体は、機械可読格納装置、機械可読格納媒体、メモリー装置、機械可読信号に影響を与える媒体の合成またはこれらの組合せである。
【００８４】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプトなどとして知られた）は、コンパイルされた言語、インタープリットされる言語、手順的言語のようなある形態のプログラミング言語で書かれることができる。これは独自のプログラムやモジュール、コンポーネント、サブルーチンまたはコンピュータ環境への使用に適する他のユニットに展開されることができる。
【００８５】
コンピュータプログラムは、ファイルシステム内のファイルに必ず対応されることではない。プログラムは、他のプログラムやデータ（マークアップ（ｍａｒｋｕｐ）言語文書内に格納される一つまたはその以上のスクリプトのような）を含むファイルの一部として格納されることができる。コンピュータプログラムは、一つのコンピュータ上に実行されるように配置されることができ、一つの位置に位置する多重コンピュータ、多重位置上に分散される多重コンピュータまたは通信ネットワークに連結された多重コンピュータ上に実行されるように配置されることもできる。
【００８６】
詳細な説明内のプロセスや論理的の流れは、入力データを処理して出力を生成する機能を遂行する少なくとも一つのコンピュータプログラムを実行する一つまたはその以上のプログラマブルプロセッサーにより実行されることができる。また、プロセスや論理的の流れは、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）やＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のように特別な目的の回路により具現される装置により実行されることもできる。
【００８７】
コンピュータプログラムの実行に適するプロセッサーは、例えば、一般的なマイクロプロセッサー（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）またはある種類のディジタルコンピューターの少なくとも一つのプロセッサーを含むことができる。プロセッサーは、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）またはＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）からデータ及び命令語を得る。コンピュータの必須な要素は、命令語を実行するプロセッサーと、命令語及びデータを格納する少なくとも一つのメモリー装置である。一般的に、コンピュータは、光ディスクのようなデータ格納のための大容量格納装置をさらに含む。コンピュータは、他の装置に内臓（ｅｍｂｅｄ）されることもできる。
【００８８】
コンピュータプログラム命令語及びデータの格納に適するコンピュータ可読媒体は、非揮発性メモリー、媒体、ハードディスク、除去可能なディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ及びメモリー装置を含む。メモリー装置は、ＥＰＲＯＭ、ＥＥＰＲＯＭ及びフラッシュメモリー装置のような半導体メモリー装置を含む。
【００８９】
詳細な説明は、特定的な要素を含むが、これらは、本発明の範囲の制限であると解釈することはできず、特定の実施例に特定的な特徴の技術であると判断すべきである。分離された実施例の前後関係上に詳細な説明に記述されたどんな特徴は、一つの実施例における組合せで具現されることができる。一つの実施例の前後関係に記述された多様な特徴は、多重実施例から分離されて具現されることができる。さらに、どんな特徴は、どんな組合せで作動すると記述できるが、一つまたはその以上の特徴は、組合せから除外されることもでき、多様な副組合せ（ｓｕｂｃｏｍｂｉｎａｔｉｏｎ）からなることもできる。
【００９０】
たとえ、図面で特定の順序で動作を記述しているとしても、特定の順序または順次的な順序への動作が行われることを要求することではなく、所望の結果を得るためのあらゆる例示的な動作で実行されることができる。ある状態で、マルチタスキングやパラレルプロセシングが有利なこともある。さらに、前述した実施例で多様なシステム要素の分離は、あらゆる実施例で分離を要求しない。前述したプログラム要素やシステムは、一つのソフトウェア製品などで共に統合されることができる。
【００９１】
但し、一部の具現や例題が開示されており、詳細な説明で例示されて記述された内容に基づいて他の具現、向上、変形が可能である。
【図１】
2011513874.tif 000008
【図２】
2011513874.tif 000009
【図３】
2011513874.tif 000010
【図４】
2011513874.tif 000011
【図５】
2011513874.tif 000012
【図６】
2011513874.tif 000013
【図７】
2011513874.tif 000014
【図８】
2011513874.tif 000015
【図９】
2011513874.tif 000016
【図１０】
2011513874.tif 000017
【図１１】
2011513874.tif 000018
【国際調査報告】
2011513874.tif 000019
2011513874.tif 000020
2011513874.tif 000021