JP2013122769A - グラフィクス処理ユニットにおけるフラグメントシェーダのバイパス、その装置及び方法。 - Google Patents

グラフィクス処理ユニットにおけるフラグメントシェーダのバイパス、その装置及び方法。 Download PDF

Info

Publication number
JP2013122769A
JP2013122769A JP2012277985A JP2012277985A JP2013122769A JP 2013122769 A JP2013122769 A JP 2013122769A JP 2012277985 A JP2012277985 A JP 2012277985A JP 2012277985 A JP2012277985 A JP 2012277985A JP 2013122769 A JP2013122769 A JP 2013122769A
Authority
JP
Japan
Prior art keywords
shading
shader
unit
fragment shading
vertex
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012277985A
Other languages
English (en)
Other versions
JP5563054B2 (ja
Inventor
Guofang Jiao
グオファン・ジャオ
Du Yun
ユン・ドゥ
Yu Chun
チュン・ユ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2013122769A publication Critical patent/JP2013122769A/ja
Application granted granted Critical
Publication of JP5563054B2 publication Critical patent/JP5563054B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Power Sources (AREA)

Abstract

【課題】フラグメントシェーダをバイパスするグラフィクス処理ユニットを提供する。
【解決手段】グラフィクス処理ユニットのシェーダユニットによってフラグメントシェーディングをバイパスするという決定に基づいて、シェーダユニットは、頂点シェーディングを実行し、フラグメントシェーディングをバイパスする。シェーダユニットのほかの処理エレメント、例えばピクセルブレンダは、なんらかのフラグメントシェーディングを実行するために使用されることができる。電力は、フラグメントシェーディングがバイパスされる場合には、使用されていないコンポーネントの電力をオフにするにするように管理される。例えば、ある数の算術論理ユニットの電力はオフにされることができ、シェーダユニットは、頂点シェーディングを実行するために、減らされた数の算術論理ユニットを使用する。
【選択図】図3

Description

本開示は、グラフィック処理ユニット(graphics processing units)に関し、より具体的には、グラフィック処理ユニットを用いてイメージを処理することに関する。
グラフィック処理ユニット(graphics processing unit)(GPU)は、ディスプレイデバイス上のディスプレイのためにコンピュータ化されたグラフィックスを生成するために使用される専用グラフィックスレンダリングデバイス(a dedicated graphics rendering device)である。GPUsは、複雑アルゴリズムの範囲について、一般よりもより効率的な処理を提供する、高度並列構造の汎用セントラルプロセッシングユニット(CPUs)で作られている。例えば、複雑なアルゴリズムは、三次元コンピュータ化されたグラフィックスの表示に対応することができる。そのような場合では、GPUは、ディスプレイデバイス上のディスプレイのためのイメージを描くCPUを使用することよりも早く、ディスプレイデバイス上のディスプレイのための3次元イメージを作成する、ある数のプリミティブグラフィクスオペレーション(a number of primitive graphics operations)をインプリメントすることができる。
例えば、一般的なGPUは、イメージジオメトリを受信し、例えばディスプレイデバイス上のディスプレイのために出力されることができるグラフィックスを生成するパイプラインアプローチを使用する。一般的なグラフィックスパイプラインは、並列に動作する多数のステージ(a number of stages)を含んでおり、1ステージからの出力は、パイプラインの別のステージでおそらく使用される(possibly being used)。例えば、一般的なグラフィックスパイプラインは、頂点シェーダ、プリミティブアセンブリ(primitive assembly)、ビューポート変換(viewport transformation)、プリミティブセットアップ(primitive setup)、ラスター化(rasterization)、隠れプリミティブ及びピクセル拒絶(hidden primitive and pixel rejection)、属性セットアップ(attribute setup)、属性補間(attribute interpolation)、そして、フラグメントシェーダのステージを備えている。
頂点シェーダは、イメージのためのイメージジオメトリに適用されており、イメージジオメトリ内で、頂点座標と頂点の属性を生成する。頂点属性は、例えば、頂点に関連づけられた、カラー(color)、法線(normal)、及びテクスチャ(texture)の座標を含む。プリミティブアセンブリは、イメージジオメトリに基づいて頂点から、プリミティブ、例えば点、線、そして三角のプリミティブ、を形成する。形成されたプリミティブは、変換、例えば法線化されたデバイススペースからスクリーンスペースにプリミティブを変換するビューポート変換、を使用して1つのスペースから別のへと変換されることができる。プリミティブのエリア、すなわちエッジ係数(edge coefficients)、を決定し、オクルージョン選択(occlusion culling)(例バックフェース選択(backface culling))、及び3Dクリッピングオペレーションを実行するために、プリミティブセットアップが使用されることができる。
ラスター化は、プリミティブ内の頂点のXY座標と、プリミティブに含まれるピクセルの数と、に基づいて、プリミティブをピクセルに変換する。隠れプリミティブ及びピクセル拒絶は、プリミティブのz座標、及び/または、隠されるように決定されたプリミティブ及びピクセルを決定し拒絶するピクセル(例、イメージフレームにおいて別のプリミティブあるいはピクセルの後ろに位置しているプリミティブあるいはピクセル、トランスパレントプリミティブあるいはピクセル)、を使用する。属性セットアップ(attribute setup)は、プリミティブ内のピクセルに関連づけられた属性について、属性グラディエント(attribute gradients)、例えば横(X)方向、あるいは、縦(Y)方向のいずれかに動くプリミティブ内の第1ピクセルにおける属性値と第2ピクセルにおける属性値との差異、を決定する。属性補間は、その決定された属性グラディエント値に基づいて、プリミティブ内のピクセル全体にわたって、属性を補間する。補間された属性値は、ピクセルレンダリングのために、フラグメントシェーダに送られる。フラグメントシェーダの結果は、ディスプレイデバイス上で処理されたイメージのプレゼンテーションについて、ポスト処理ブロック及びフレームバッファに出力されることができる。
本開示は、当技術分野の欠点に取り組み、入力イメージジオメトリ(an input image geometry)にしたがって1つまたは複数のプログラマブルプロセッサを使用するためにグラフィクスイメージ処理における効率の良さを提供することを努める。GPUは、グラフィックスパイプラインを使用するための強力な処理機能を提供する、1つまたは複数のプロセッサを備えることができる。しかしながら、ある状況下では、アプリケーションは、GPUによって提供される処理機能のすべてを必要としない可能性があり、例えば、アプリケーションは、あまり強力ではない代替物(less-powerful alternative)を必要とすることができる。そのような場合に、例えばGPUを使用しているアプリケーションの必要性に基づいてGPUのリソースを効率的に使用するために、GPUのある部分、例えばフラグメントシェーダをバイパスすることができることは利点であろう。
グラフィクス処理ユニットのシェーダユニットによってフラグメントシェーディングをバイパスするあるいはそれなしで済ませる(forego)、という決定を行なうために構成情報を使用する、システム、方法、及び装置がここにおいて開示されており、なお、シェーダユニットは、頂点シェーディングとフラグメントシェーダの両方を実行することが可能である。その決定にしたがって、シェーダユニットは頂点シェーディング(vertex shading)と、バイパスフラグメントシェーディング(bypasses fragment shading)を実行する。なんらかのフラグメントシェーディングがグラフィクス処理ユニットによって実行される予定である場合には、シェーダユニット以外の処理エレメント(a processing element other than the shader unit)、例えばピクセルブレンダは、フラグメントシェーディングを実行するために使用されることができる。シェーダユニットによって使用される算術論理ユニットに対して供給される電力は、フラグメントシェーディングがバイパスされる場合に、ある数の算術論理ユニット(a number of the arithmetic logic unit)の電力がオフにされるように、管理されることができる。シェーダユニットは、頂点シェーディングを実行するために、減らされた数の算術論理演算ユニットを使用する。スレッドパッキングバッファと、そのスレッドパッキングバッファからシェーダユニットに対して情報をトランスポートするために使用される入力バス、のような他のコンポーネントの電力はまた切られることができる。シェーダユニットによって典型的に使用される少なくとも1つのレジスタバンクは、他の処理エレメントによるフラグメントシェーディングオペレーションを実行することにおいて、テクスチャデータと一緒に、使用ピクセル属性データ(pixel attribute data for use)をバッファリングするバッファとして使用されることができる。
本開示の1つまたは複数の実施形態にしたがって、頂点及びフラグメントシェーディングの両方を実行するように構成された、プログラマブル処理エレメント、すなわちシェーダユニットは、頂点シェーディングを実行するように、GPUに対して提供された情報に基づいて、フラグメントシェーディングをバイパスするあるいはそれなしで済ませるように、動的に「再構成(re-configured)」される。この配置によって、再構成されたパイプラインにおいて「不要である(unnecessary)」と決定されたコンポーネントは、バイパスされることができる。フラグメントシェーディングがバイパスされるという場合に使用されないコンポーネントは、代替目的に使用されることができる。あるいは、電力は、「そのようなコンポーネントの電力をオフにすること(turning off power to such components)によって節約されることができる。減らされた数の頂点を有する頂点シェーダスレッドのような、他の効率の良さが達成されることができる。
少なくとも1つの実施形態で、グラフィクス処理ユニットを使用するための方法が説明されており、そしてそれは、頂点シェーディング及びフラグメントシェーディングの両方を実行することができるシェーダユニットにおけるフラグメントシェーディングをバイパスあるいはそれなしで済ませる、という決定を行なうために構成情報を使用し、シェーダユニットを使用して頂点シェーディングを実行し、そして、その決定に基づいてシェーダユニットによってフラグメントシェーディングを実行することをバイパスする。
1つまたは複数の実施形態にしたがって、グラフィック処理ユニットとシェーダユニットを備えている装置(apparatus)が説明されている。グラフィック処理ユニットは、シェーダユニットにおけるフラグメントシェーディングを、バイパスし、あるいはそれなしで済ませる、という決定を行なうために、構成情報を使用するように構成されたコマンドデコーダを備えている。シェーダユニットは、頂点シェーディング及びフラグメントシェーディングの両方を実行することができる。シェーダユニットは、頂点シェーディングを実行し、その決定に基づいてフラグメントシェーディングを実行することをバイパスするように構成されている。
本発明の本質がすぐに理解することができるように簡単な概要(summary)が提供されている。本発明のより完全な理解は、添付図面と関連して、それらの好ましい実施形態(単数または複数)の詳細な説明を参照することにより得られることができる。
図1は、本開示の1つまたは複数の実施形態にしたがった、使用のためのグラフィック処理ユニット(graphics processing unit)を含んでいる例示的なデバイスを図示しているブロック図である。 図2は、本開示の1つまたは複数の実施形態にしたがって、頂点シェーダ及びフラグメントシェーダの処理エレメントをインプリメントすることができるシェーダユニットのコンポーネントの概観を提供する。 図3は、本開示の1つまたは複数の実施形態にしたがった、使用のためのグラフィック処理ユニットのグラフィックスパイプラインの例を提供する。 図4は、本開示の1つまたは複数の実施形態を使用するためのプログラマブルグラフィックス処理エレメントを図示している例示的なブロック図の例を提供する。
本開示の、上述された特徴及び目的は、同様の参照数字が同様の構成要素を示している添付図面と共に、以下の説明を参照して明らかとなるであろう。
本開示のある実施形態が、前述の図を参照して説明されており、ここでは、同様の参照数字は同様のコンポーネントを指している。
1つまたは複数の実施形態にしたがって、システム、方法、及び装置が開示されており、ここにおいては、シェーダユニットは、グラフィクス処理ユニットに対して提供される構成情報にしたがって構成されている。構成情報を使用して、フラグメントシェーディング及び頂点シェーディングの両方を実行することができるシェーダユニットは、頂点シェーディングを実行するように、そして、フラグメントシェーディングなしで済ませるように、構成されることができる。シェーダユニット以外の別の処理エレメントは、なんらかのフラグメントシェーディングを実行するために使用されることができる。別な方法でフラグメントシェーディングを実行するようにシェーダユニットによって使用される1つまたは複数のコンポーネント(one or more components that would otherwise be used by the shader unit to perform fragment shading)は、別の目的のために使用されることができ、あるいは他の点で、使用されないコンポーネント(components that are not otherwise used)の電力はオフにされることができる。
図1は、本開示の1つまたは複数の実施形態にしたがって、使用のためのグラフィック処理ユニット(GPU)104を含む、例示的なコンピューティングデバイス100を図示しているブロック図である。コンピューティングデバイス100は、パソコン、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、ビデオゲームプラットフォームあるいはコンソール、セルラあるいは衛星無線電話、地上通信線電話、インターネット電話、ポータブルビデオゲームデバイスあるいは携帯情報端末のようなハンドヘルドデバイス、パーソナルミュージックプレイヤー、サーバ、中間ネットワークデバイス、メインフレームコンピュータ、あるいはグラフィカル情報を出力する別のタイプのデバイス、を備えることができる。
図1の例では、コンピューティングデバイス100は、セントラルプロセッシングユニット(CPU)102、GPU104、及びメモリモジュール116、例えばランダムアクセスメモリ(RAM)メモリモジュール(単数または複数)、を含む。CPU102、GPU104、及びメモリモジュール116は、バス106を使用して通信し、そしてそれは、今知られているあるいは後で発見される、いずれのタイプのバスあるいはデバイス相互接続を備えることができる。CPU102は、汎用あるいは専用のマイクロプロセッサを備えることができる。例えば、CPU102は、カリフォルニア州のサンタクララのインテル社によって提供されているコア2プロセッサ、あるいは別のタイプのマイクロプロセッサを備えることができる。GPU104は、専用グラフィックスレンダリングデバイスである。GPU104は、例えば、コンピューティングデバイス100のマザーボードに組み込まれることができ、コンピューティングデバイスのマザーボードにおけるポートにおいてインストールされるグラフィクスカード上で存在することができ、あるいは、そうでなければコンピューティングデバイス100と補間するように構成されることができる。
コンピューティングデバイス100に結合されているディスプレイユニット124は、例えば、モニタ、テレビ、プロジェクションデバイス、液晶ディスプレイ、プラズマディスプレイパネル、発光ダイオード(LED)アレイ、カソードレイチューブディスプレイ (a cathode ray tube display)、電子ペーパー、表面伝導の電子放射されたディスプレイ (a surface-conduction electron-emitted display)(SED)、レーザーテレビディスプレイ、ナノクリスタルディスプレイ、あるいは、別のタイプのディスプレイユニット、を備えることができる。図1の例では、ディスプレイユニット124は、コンピューティングデバイス100の一部であることができる。例えば、ディスプレイユニット124は、モバイル電話のスクリーンであることができる。あるいは、ディスプレイユニット124は、コンピュータデバイス100に外付けであることができ、例えばワイヤードあるいはワイヤレス通信接続あるいは他の接続を介して、コンピューティングデバイス100と通信することができる。非限定の例として、ディスプレイユニット124は、ワイヤードあるいはワイヤレス接続を介して、パーソナルコンピュータに接続されたコンピュータモニタあるいはフラットパネルディスプレイであることができる。
ソフトウェアアプリケーション110は、CPU102を介して実行されることができる。ソフトウェアアプリケーション110は、限定されないが、例えばビデオゲーム、グラフィカルユーザインタフェースエンジン、キャド(a computer-aided design program for engineering or artistic applications)、あるいは、2次元(2D)あるいは3次元(3D)グラフィクスを使用する別のタイプのソフトウェアアプリケーション、のようなCPU102を介して実行することが可能であるいずれのソフトウェアアプリケーションを備えることができる。
CPU102がソフトウェアアプリケーション110を実行しているとき、ソフトウェアアプリケーション110は、限定されない例として、例えば、OpenVG API、OpenGL API、Direct3D API、グラフィクスデバイスインタフェース (Graphics Device Interface)(GDI)、Quartz、QuickDraw、あるいは別のタイプの2Dあるいは3Dグラフィクス処理APIのうちのいずれか1つまたは複数のような、グラフィクス処理アプリケーションプログラミングインタフェース(API)112のサブルーチンを呼び出す(invoke)ことができる。
少なくとも1つの実施形態にしたがって、ソフトウェアアプリケーション110がグラフィックス処理API112のサブルーチンを呼び出すとき、グラフィックス処理API112は、GPUドライバ114のサブルーチンのうちの1つまたは複数を呼び出し、そしてそれは、コンピューティングデバイス100上でCPU102を介して実行する。GPUドライバ114は、例えばグラフィックス処理API112及びGPU104間でインターフェースを提供する1セットのソフトウェア及び/またはファームウェアインストラクションを備えることができる。グラフィックス処理API112がGPUドライバ114のサブルーチンを呼び出すとき、GPUドライバ114は、GPU104に表示可能グラフィクス情報を生成させるコマンドを公式化し(formulates)、発行する。例えば、グラフィックス処理API112がグラフィックスプリミティブのバッチをレンダするためにGPUドライバ114のサブルーチンを呼び出すとき、GPUドライバ114は、処理構成(a processing configuration)をGPU104に提供し、そしてそれはGPUドライバ114がグラフィクスプリミティブのパッチをレンダするために使用する。GPU104は、例えば、グラフィックスプリミティブのバッチをレンダし、グラフィックスプリミティブのラスタイメージを出力する。
GPUドライバ114によって公式化されたコマンドは、GPU104がコマンドを実行するために使用する予定であるグラフィクス処理構成(単数または複数)を識別することができ、構成(単数または複数)は、GPU104によって実行される予定である1セットのインストラクション、1セットのステートレジスタ値、そして、GPU104がコマンドを実行する必要がありうる他のタイプの情報、を識別することができる。
GPUドライバ114がメモリ116にグラフィックス処理構成(単数または複数)を保存する場合において、GPUドライバ114は、GPUドライバ114によって公式化されたコマンドにおけるグラフィクス処理構成(単数または複数)に対応しているメモリモジュール116におけるストレージロケーション(storage locations)を参照することができる。GPU104がコマンドを受信するとき、GPU104は、GPUドライバ114から受信されたコマンドで参照されたグラフィックス処理構成(単数または複数)をメモリ116から検索することができる。
少なくとも1つの実施形態にしたがって、GPU104のコマンドデコーダ126は、GPUドライバ114からコマンドを復号し、コマンドを実行するために処理エレメント128のうちの1つあるいは複数を構成する。限定されない例として、コマンドデコーダ126は、メモリ116からグラフィックス処理構成(単数または複数)を検索し、処理エレメント(単数または複数)128に、グラフィックス処理構成(単数または複数)によって識別された1セットのインストラクションをロードする。コマンドデコーダ126はまた、1つまたは複数の処理エレメント128に、入力データを提供するように構成されることができる。
1つまたは複数の実施形態にしたがって、処理エレメント128は、グラフィックスパイプライン108をインプリメントする。そのような実施形態にしたがって、処理エレメント128は、並列モードで、グラフィックスパイプライン108をインプリメントすることができる。パラレルモードでは、処理エレメント128は、並行してデータ上で操作することができ、処理エレメント128からの出力は、別の処理エレメント128への入力として使用される。限定されない例として、処理エレメント128Aは、コマンドデコーダ126から受信された第1セットの初期入力データ上で第1グラフィクスオペレーションを実行し、処理エレメント128Bに対し、第1セットの中間結果を出力する。初期入力データは、1つまたは複数の頂点に対応するデータを備えることができ、そしてそのデータは、例えば座標及び属性データを備えることができる。頂点座標は、例えば、X、Y、及びZ(幅、高さ、及び深さ)座標と、遠近パラメータを備えたW座標と、を備えた4次元座標システムに基づいて、イメージ内でロケーションを識別する。頂点属性は、例えば、頂点に関連づけられた、カラー(color)、法線(normal)、及びテクスチャ(texture)の座標を含むことができる。処理エレメント128Bは、処理エレメント128Aによって出力された第1セットの中間結果に関して別のグラフィクスオペレーションを実行し、そして、処理エレメント128の別のものに対し、第2セットの中間結果を出力すること等ができる。処理エレメント128Bが第2のグラフィックスオペレーションを実行しているが、処理エレメント128Aは、コマンドデコーダ126から受信された第2セットの初期入力データに関する第1のグラフィックスオペレーションを実行することができる。
処理エレメント128は、処理エレメント128Nがメモリモジュール116における1以上のバッファに対してピクセルオブジェクトを出力する、あるいは、ある他の目的先 (destination)に対しこの新しいピクセルオブジェクトを出力するまで、この方法で継続することができる。ピクセルオブジェクトは、ピクセルを説明するデータである。各ピクセルオブジェクトは、マルチプルカラー値を規定することができ、また、透明レベルのピクセル(a transparency level of the pixel)を規定することができる。いくつかの状況において、ピクセルオブジェクトは、第1のカラーフォーマットにおける第1のカラー、及び、第2のカラーフォーマットにおける第2のカラー、を規定することができる。
本開示の1つまたは複数の実施形態にしたがって、処理エレメント128のうちの1つは、それぞれが頂点データで動作する1つまたは複数の頂点シェーディングオペレーションを実行するように、また、それぞれがピクセルデータ上で動作する1つまたは複数のフラグメントシェーディングオペレーションを実行するように、構成されることができるシェーダユニットを備えている。したがって、1つまたは複数の実施形態にしたがって、処理エレメント128は、一体化されたシェーダユニット(a unified shader unit)として構成されることができ、そしてそれは頂点データ上で動作する頂点シェーダとして実行することが可能であり、また、ピクセルデータ上で動作するフラグメントシェーダとして実行することがさらに可能である。1つまたは複数の実施形態にしたがって、シェーダユニットは、プログラマブル処理エレメントである。
図2は、本開示の1つまたは複数の実施形態にしたがって、頂点シェーダ及びフラグメントシェーダの処理エレメントをインプリメントすることができるシェーダユニットのコンポーネントの全体像(overview)を供給する。ここで詳細に説明されているように、コマンドデコーダ126は、いずれのシェーディングオペレーションがメモリモジュール116から検索されたグラフィクス処理構成情報(単数または複数)に基づいて、シェーダユニット206を使用して実行されることになっているとしたらどうなるのかを決定する。ある場合においては、アプリケーション110は、いずれの、あるいは、非常に最小限度のフラグメントシェーディングも必要としなくてもよい。最小限度のフラグメントシェーディングが必要とされている場合には、GPU104は、ここでさらに説明されているように、最小限度のフラグメントシェーディングを実行するためにシェーダユニット206以外の処理エレメント128を構成することができる。
本開示の1つまたは複数の実施形態にしたがって、GPU104は、シェーダユニット206を使用して実行される頂点シェーダスレッドの頂点データを処理するためにシェーダユニット206が使用されるように、構成されることができる。さらに、ここで開示されているように、GPU104の他の処理エレメント128は、フラグメントシェーダ処理エレメントの不在に適応するように構成されることができる。
シェーダユニット206は、2以上の算術論理演算ユニット(arithmetic logic unit)(ALU)グループ228を備えており、それらのそれぞれは、多数のALUs258を備えている。各ALU258は、インストラクションキャッシュ224からフェッチされたインストラクションとの順応(conformance)において、1以上のオペランドに関するオペレーションを実行する。オペランドは、通信回線248を介してRAM226から検索された1以上の定数と、及び/または、通信回線250を介してレジスタバンク262のうちの1つにおけるレジスタから検索された1以上の一時的に保存された値と、を備えることができる。ここで識別された、通信回線248及び250のような通信回線は、例えばバス、であることができる。シェーダユニット206の内部にある通信回線は、単独バスあるいは複数バス(multiple buses)を備えることができる。1つまたは複数の実施形態にしたがって、ロード制御モジュール、ここではロードコントローラ222と呼ばれる、はRAMに対する定数226のストレージ(通信回線264を介して)、及び/または、レジスタファイルバンク262に対する一時的な値のストレージ及びレジスタファイルバンク262からの一時的な値の検索(storage of temporary values to and retrieval of temporary values from register file banks 262)(通信回線260を介して)、を制御する。1つまたは複数の実施形態にしたがって、RAM226は、例えばメモリモジュール116のある部分を備えることができる。
RAM226において保存された定数は、シェーダスレッド210による使用のための広域の値(global value)であることができる。限定されない例として、ロード制御モジュール222の制御の下で、RAM226は、GPUドライバ114から受信されたコマンドを処理するために使用されたシェーダスレッド210のすべてを使用するために定数を保存することができる。レジスタファイルバンク262は、それに対するアクセスもまたロードコントローラ222の制御の下にあり、値を一時的に保存するために使用されるレジスタのバンクを備えることができる。1セットのあるいは1郡のレジスタは、シェーダスレッド210のうちの与えられた1つを使用する値を一時的に保存するために使用されることができる。ALUs258は、通信回線250を介して、レジスタバンク262において、一時的な値にアクセスすることができる(例えば、保存する、あるいは検索する)。
1つまたは複数の実施形態にしたがって、シェーダユニット206は、スレッドスケジューラ及びコンテキストレジスタ(TSCR)220をさらに備えており、そしてそれは、シェーダスレッド210をスケジュールするように、そして、与えられたシェーダスレッド210のためのコンテキストレジスタに含まれる情報にしたがってロード制御モジュール222でスレッドスイッチを同期化するように、動作する。TSCR220によってスケジュールされたシェーダスレッド210は、頂点及びフラグメントシェーダスレッドであることができる。頂点シェーダスレッド210は、グラフィックスパイプライン108で使用された頂点シェーダをインプリメントする多数のスレッドのうちの1つであり、各頂点シェーダスレッド210は、グラフィックスパイプライン108のための頂点シェーダを提供するために、シェーダユニット206によって実行されることができるある数の頂点シェーディングオペレーションを備える。同様に、フラグメントシェーダスレッド210は、フラグメントシェーダをインプリメントする多数のスレッドのうちの1つであり、各フラグメントシェーダスレッド210は、グラフィックスパイプライン108のためのフラグメントシェーダを提供するために、シェーダユニット206によって実行されることができるある数のフラグメントシェーディングオペレーションを備えている。本開示の実施形態にしたがって、シェーダユニット206は、頂点シェーダスレッド210をスケジュールするように構成されている。シェードユニット206は、GPUドライバ114から得られた情報に基づいて、フラグメントシェーダスレッド210をスケジュールするように、さらに構成されている。
TSCR220は、実行のためにシェーダスレッド210をスケジュールし、そして、通信回線236を介してロード制御モジュール222と通信するので、スケジュールされたシェーダスレッド210についてのコンテキストは、ロードコントローラ222によってロードされることができる。シェーダスレッド210のコンテキスト(context)は、シェーダスレッド210と関連して、シェーダユニット206によって処理されるべきインストラクション、を含む。ロードコントローラ222は、スケジュールされたシェーダスレッド210のためのALUs258によって実行される予定であるインストラクションがインストラクションキャッシュ224においてロードされ、RAM226に対するポインタ及びレジスタファイルバンク262におけるレジスタが、スケジュールされたシェーダスレッド210に対応する値(広域で一時的な)を保存するロケーション/レジスタを指すように、インストラクションキャッシュ224を制御する。そのため、スケジュールされたシェーダスレッド210に関連して実行するためにインストラクションキャッシュ224からフェッチされたインストラクションは、スケジュールされたシェーダスレッド210のコンテキストにおいて動作する。例えば、インストラクションは、インストラクションキャッシュ224からフェッチされ、スケジュールされたシェーダスレッド210のためにALUs258のうちの1つまたは複数によって実行される。スケジュールされたシェーダスレッド210は、スケジュールされたシェーダスレッド210に関連づけられたレジスタファイルバンク262からの1つまたは複数の一時的な値、及び/または、フェッチされたインストラクションにしたがったスケジュールされたシェーダスレッド210に関連づけられたRAM226からの1つまたは複数のグローバル値、を使用することができる。
スレッドパッキングバッファ202は、シェーダスレッド210のために、データを保存することができる。スケジュールされたシェーダスレッド210のためのシェーダインストラクションあるいはプログラムは、バス(図2に示されていない)を介してGPUパイプライン108における外部メモリあるいはL2キャッシュから、ロードコントローラ222によってインストラクションキャッシュ224へプリロードされる、あるいは、実行時間ロードされる(runtime-loaded)ことができ、データは、スケジュールされたシェーダスレッド210を識別するTSCR220によってロードコントローラ222に提供される情報に基づいて、スケジュールされたシェーダスレッド210に対応しているレジスタバンク262へとロードされることができる。定数RAM(Constant RAM)226は、シェーダスレッド210のすべてに対して利用可能なグローバル値のような値を保存する。ロード制御は、スケジュールされたシェーダスレッド210を使用するために、テクスチャエンジン212から、テクスチャサンプルをリクエストすることができる。
本開示の1つまたは複数の実施形態にしたがって、シェーダユニット206は、グラフィックスパイプライン108のクロックレート/スピードよりも速いかもしれない、クロックレートで動作する。アシンクロナスインタフェース(asynchronous interface)は、シェーダユニット206に外付けされているコンポーネントと通信するために、シェーダユニットを通信することを可能にするために使用される。通信回線230、232、234、238、及び240は、1つまたは複数の通信バスストラクチャを備えることができ、シェーダユニット206は、例えば1つまたは複数の外部コンポーネントと通信する。
シェーダユニット206は、他のグラフィクスパイプラインコンポーネントよりも高いクロックスピードで動作できるが、それは必要ではない。より高いクロックレートは、例えば、他のグラフィクスパイプラインスループットを整合させる頂点シェーダ及び/またはフラグメントシェーダのためのシェーダオペレーションのスループットを達成するために、望まれる場合に、オプションで使用される。あるいは、シェーダのコンピューテーション仕事量が軽い場合には、シェーダユニット206のクロックスピードはグラフィクスパイプライン108のクロックスピードよりも低いことがありうる。フラグメントシェーディングが本開示の実施形態にしたがってバイパスされるとき、シェーダユニット206は、頂点シェーダオペレーションについて排他的に使用されることができるので、たとえ、スレッドあたりの減らされた数の頂点及び減らされた数のALUs258、例グループ228AにおけるALUs、を有していたとしても、ALUs258のフルコンプリメント(full complement)で達成されるのと同じ頂点シェーディングスループットは、ユニット時間期間において減らされた数のALUs258を使用して達成されることができ、例えば、シェーダユニット206は、減らされた数のシェーダユニット206のALUs258を使用するある数の頂点シェーダスレッドをスケジュールする。フラグメントシェーディングがバイパスされないとき、シェーダユニット206は、頂点シェーダ及びフラグメントシェーダオペレーションの両方によって、例えば適切なスループットを保持するためにALUs258のフルコンプリメント及びより大きなスレッドサイズ(例、スレッドごとにより多くの頂点)を使用して、共有される。
限定されない例として、シェーダユニット206の各クロックサイクルにおいて、両方のALUグループ228A及び228BにおけるALUs258は、ALUグループ228A及び228BにおけるALUs258の数に等しい、ある数の頂点、あるいはピクセル上で動作することができる。例えば、Nが2に等しい場合、ALUグループ228A及び228Bは、シェーダユニット206のクロックサイクルあたりの4つの頂点、あるいはピクセル上で動作することができる。スケジュールされたシェーダスレッド210が頂点シェーダスレッド210である場合には、シェーダスレッド210における4つの頂点は、シェーダユニット206の与えられたクロックサイクルの間に、動作されており、それぞれは、ALUグループ228Aあるいは228BのALU258、あるいは228A及び228Bの両方のALU258によるものである。同様に、スケジュールされたスレッド210がフラグメントシェーダスレッド210である場合、フラグメントシェーダスレッド210における4つのピクセルは、動作されており、それぞれは、ALUグループ228Aあるいは228BのALU258、あるいは228A及び228Bの両方のALU258によるものである。
図2で示される例において、ALUグループ228A及び228Bは、同数のALUs258を有する。1つまたは複数の実施形態にしたがって、ALUグループ228Aは、ALUグループ228BにおけるALUs258の数とは異なる数のALUs258を有することができる。さらに、本開示の実施形態にしたがって、頂点シェーディングオペレーション(及び処理された頂点)の数は、フラグメントシェーディングオペレーション(及び処理されたピクセル)の数と同じである必要はない。いくつかの場合において、例えば、頂点シェーディングオペレーションとフラグメントシェーディングオペレーションとの仕事量の比は、1:4、1:2、1:1、2:1、あるいはいずれの他の比であることができる。同様に、レジスタファイルバンク262Aは、サイズにおいて、レジスタファイルバンク262Bと異なることができ、それらの両方のサイズは、静的に(statically)あるいは動的に(dynamically)構成されることができる。一般的に、ユニット時間期間において、そして、頂点シェーディングオペレーションのための仕事量が処理された頂点の数についての「NV」として指定され、フラグメントシェーディングオペレーションのための仕事量が処理されたピクセルの数についての「MP」として指定されている場合、シェーダユニット206は、ユニット時間期間の間に時間共有方法で、NV頂点を及びMPピクセルを終了する。時間共有の代替として、別の構成あるいは実施形態にしたがって、ALUグループ228Aは、頂点シェーダスレッド210上で動作するようにスケジュールされることができるが、ALUグループ228Bは、シェーダユニット206のクロックサイクルのときにフラグメントシェーダスレッド210上で動作するために並列でスケジュールされることができる。
上記で説明されているように、GPU104、例えばGPU104のコマンドデコーダ126は、例えばアプリケーション110によって提供される情報に基づいて、フラグメントシェーディングが必要とされていないあるいは最小限度のフラグメントシェーディングが必要とされるということを決定することができる。1つまたは複数の実施形態にしたがって、フラグメントシェーディングが必要とされていないあるいは最小限度のフラグメントシェーディングが必要とされる場合には、フラグメントシェーディングオペレーションは、シェーダユニット206においてバイパスされ、シェーダユニット206は、いずれのフラグメントシェーダスレッド210も処理する必要がない。さらに、また、1つまたは複数のそのような実施形態にしたがって、各頂点シェーダスレッド210に関連づけられた頂点の数は、下記で詳細に説明されるように、減らされることができ、また、グラフィックスパイプライン108のクロックサイクルごとに同じレベルの出力(the same level of output)を生成しながら、減らされた数のALUs258を使用してシェーダユニット206を動作することが可能である。そうすることで、シェーダユニット206の性能におけるいかなる顕著な低下、あるいは、シェーダユニット206による出力のレベルにおける変更、なしに節電(power conservation)は達成されることができる。フラグメントシェーディングが示されていないあるいは最小限度のフラグメントシェーディングが示されている、且つ、シェーダユニット206がフラグメントシェーディングオペレーションの除外に対し頂点シェーディングオペレーションをインプリメントする場合、フラグメントシェーディングオペレーションに関連して使用される限り、スレッドパッキングバッファ202及び対応する入力バス232、例、スレッドパッキングバッファ202B及び入力バス232B、は、ディスエーブルされることができ、これらのコンポーネントの電力はオフにされることができる。さらに、フラグメントシェーダスレッド210によって使用されるレジスタファイルバンク262は、属性インタポラータ204によって出力された、属性データ、例えばカラーデータ(color data)、を保存するのに利用可能である。そうすることで、例えばピクセルブレンダ208への入力のためのカラーあるいは他のデータを保存するために、先入れ先出し方式(FIFO)バッファとして、レジスタファイルバンク262Bを使用することが可能である。FIFOとしてのレジスタファイルバンク、例えばレジスタファイルバンク262B、の使用は、例えばテクスチャエンジン212を介して実行されるいくつかのテクスチャローディング/検索のレイテンシをカバーすることができる。
1つまたは複数の実施形態にしたがって、電力管理ユニット、すなわち電力コントローラは、シェーダユニット206に外付けされているコンポーネントに対する電力、例えばスレッドパッキングバッファ202及び入力バス232、に加えて、ALUs258を含んでいるシェーダユニット206のコンポーネントに供給される電力を制御するために使用されることができる。コンポーネント、例えばALU258、スレッドパッキングバッファ202、入力バス232等は、シェーダユニット206によって使用されない場合、電力管理ユニットは、コンポーネントに対して供給された電力を調節する、例えばオフにする、ことができる。そうすることにより、シェーダユニット206がフラグメントシェーディングオペレーションの除外に対して頂点シェーディングオペレーションを実行する場合に使用されないコンポーネント、使用されていない1つまたは複数のコンポーネントに対する電力は、GPU104によって減らされたレベルの電力消費を達成するために、減らされるあるいは完全にシャットオフされる(shut off)ことができる。そのような実施形態にしたがって、電力管理ユニットは、他のコンポーネントと独立した1つのコンポーネントに対して供給される電力を制御することができる。非限定の例として、電力管理ユニットは、他のALUs258と独立したALUs258のそれぞれに対し電力を制御することができる。この例において、電力管理ユニットは、ALUs258A及び258Bのうちの1つまたは複数の電力供給をオフにし、ALUs258A及び258Bの他に電力を供給するように動作する。あるいは、コンポーネントがALUグループを備える場合には、電力管理ユニットは、ALUグループ228の他のものと独立したALUグループ228に対し供給された電力を制御することができる。非限定の例として、電力管理ユニットは、ALUグループ228BにおけるALUs258Bと独立したALUグループ228AにおけるALUs258Aの電力を制御することができる。この例において、電力管理ユニットは、ALUs258Aの電力供給をオフにするように、また、ALUグループ228BのALUs258Bの電力を供給するように動作する。
最小限度のフラグメントシェーディングが必要とされる場合では、GPU104は、フラグメントシェーディングを実行するためにシェーダユニット206以外の処理エレメント128を構成することができる。1つまたは複数の実施形態にしたがって、必要とされる最小限度のフラグメントシェーディングは、下記で詳細に説明されるように、フラグメントシェーディングオペレーションを実行するようにプログラムされることができる処理エレメント128によって実行されることができる。そうすることにおいて、シェーダユニット210のリソースは、より関係するシェーディングオペレーション(more involved shading operations)に焦点を当てられることができ、シェーダユニット210のリソースは、電力を切られる(being power down)より関係するシェーディングオペレーションを実行するのに必要でない。
シェーダユニット206がフラグメントシェーディングオペレーションを実行しないように構成される場合には、TSCR220は、頂点シェーダスレッド210をスケジュールし、それらのそれぞれは、減らされた数の頂点を含むことができる。より具体的には、シェーダユニット206は、減らされた数のALUs258を使用して頂点を処理するように構成されており、一方で、同じユニット時間期間において同じレベルの出力(例、NV頂点)を生成しており、それは、シェーダユニット206が、シェーダユニット203がそう構成される各ユニット時間期間においてALUグループ228A上で動作するために排他的に頂点シェーダスレッドをスケジュールするためである。
本開示の実施形態は、限定されない例として説明されているが、ALUグループ228あたりのALUs258の数は2である。そのような場合には、シェーダユニット206、特にTSCR220は、ユニット時間期間において頂点シェーダスレッド210の数をスケジュールすることができる。各頂点シェーダスレッド210に関連づけられた頂点は、ALUグループ228A及び228Bのうちの1つ、例えばALUグループ228A、を使用して操作される。シェーダユニット206の第1のクロックサイクルにおいて、TSCR220は、第1頂点シェーダスレッド210をスケジュールしており、そしてそれは、ALUグループ228Aを使用しているシェーダユニット206によって処理されている第1の頂点シェーダスレッド210に対応している第1セットの2つの頂点をもたらす。シェーダユニット206の第2クロックサイクルにおいて、TSCR220は、第2頂点シェーダスレッド210をスケジュールし、そしてそれは、別の2つの頂点をもたらし、それらの頂点は第2頂点シェーダスレッド210にあり、シェーダユニット206及びALU228による処理である。したがって、ユニット時間期間において、期待された数の頂点を備えている1セットの頂点は、シェーダユニット206のALUs258の半分を使用して処理される。この配置により、ある数のALUs258はバイパスされることができ、そうでなければそのバイパスされたALUs258を動作するために消費された電力(the power otherwise consumed to operate the bypassed ALUs 258)は、使用されていないALUs258の電力を、縮小することによって、あるいは、完全にシャットオフすることによって、節電されることができる。
図3は、本開示の1つまたは複数の実施形態にしたがって使用のためにGPU104のグラフィックスパイプライン108の例を提供する。図3で示されているように、グラフィックスパイプライン108は、図1のコマンドデコーダ126、及び、図2の属性インタポラータ204、ピクセルブレンダ208、及びテクスチャエンジン212、を含んでいる。頂点シェーダ306はシェーダユニット206を使用してインプリメントされることができる。図3で示される例においては、1つまたは複数の実施形態にしたがって、フラグメントシェーダ318は、バイパスされており、そうでなければグラフィクスパイプライン108においてシェーダユニット206を使用してインプリメントされるであろう。ここにおいて開示される実施形態にしたがって、フラグメントシェーダ318がバイパスされる場合、フラグメントシェーダに転送されたであろう入力、例えばテクスチャエンジン212によって出力されたテクスチャ及び属性インタポラータ204によって出力されたカラー及び属性データ、はピクセルブレンダ208に転換される(diverted)。シェーダユニット206によって実行されないなんらかのフラグメントシェーディングが必要とされるように決定される場合、ピクセルブレンダ208は、そのブレンディングオペレーションに加えてフラグメントシェーディングを実行するように構成されることができる。
頂点シェーダ306に加えて、GPU104のグラフィックス108は、プリミティブセットアップ及び拒絶モジュール308、属性グラディエントセットアップモジュール(attribute gradient setup module)310、ラスタライザ(rasterizer)312、隠れプリミティブ及びピクセル拒絶モジュール314、属性インタポラータ204、ピクセルブレンダ208、及びテクスチャエンジン212、を含む。
頂点シェーダ306は、イメージ内の頂点において、イメージの表面プロパティを決定する。このように、頂点シェーダ306は、イメージジオメトリ内で、頂点の頂点座標及び属性のそれぞれを生成する。頂点座標は、例えばイメージジオメトリ内で頂点のロケーションを識別するX、Y、及びZ(幅、高さ及び深さ)座標と、イメージジオメトリのための遠近パラメータを備えるW座標と、を備えた4次元座標システムに基づいてイメージジオメトリ内で頂点を識別する。頂点属性は、例えば、頂点に関連づけられた、カラー、法線、及びテクスチャの座標、を含むことができる。ここに開示された実施形態にしたがって、GPU104内の頂点シェーダ306は、パイプライン108の他のステージに対し、頂点シェーダ306によって処理される頂点のための属性及び/または座標を作る。
プリミティブセットアップ及び拒絶モジュール308、属性グラディエントセットアップモジュール310、ラステライザ312、隠れプリミティブ及びピクセル拒絶モジュール314、及び属性インタポラータ204はそれぞれ、イメージジオメトリを処理するために頂点座標あるいは頂点属性を使用する。プリミティブセットアップ及び拒絶モジュール308は、イメージジオメトリ内で1つまたは複数の頂点でプリミティブをアセンブルし、プリミティブ頂点に関し遠隔プロジェクション及びビューポート変換を適用し、各プリミティブエッジについてエッジ係数を決定する。さらに、プリミティブセットアップ及び拒絶モジュール308は、例えば与えられたイメージフレームについての検討(consideration)からプリミティブあるいはその一部分を拒絶するかどうかを決定するためにプリミティブの頂点のXY座標を使用してシザリング(scissoring)あるいはバックフェース選択(backface culling)を実行することにより、プリミティブを拒絶するどうかを決定するプリミティブを考察する(examine)ことができる。例えば、プリミティブあるいはプリミティブ部分は、例えばイメージフレーム内でオブジェクトの後方に位置されており、不可視にするように決定されることができ、その場合には、プリミティブあるいはその部分は、プリミティブセットアップ及び拒絶モジュール308によって拒絶されることができる。
属性グラディエントセットアップモジュール310は、イメージジオメトリのためのプリミティブに関連づけられた属性のグラディエントを計算する。現在開示されている実施形態にしたがって、属性グラディエントは、横方向(X)あるいは縦方向(Y)のいずれかにおいて動いているプリミティブ内の、第1ピクセルにおける属性値と第2ピクセルにおける属性値との差異を備えている。属性グラディエントセットアップモジュール310は、属性グラディエントを計算するために頂点属性を使用する。
いったん属性グラディエント値が計算されると、ラステライザ312は、プリミティブ内の頂点のそれぞれのXY座標と、プリミティブに含まれるピクセルの数と、に基づいて、ピクセルにイメージジオメトリのためのプリミティブを変換する。隠れプリミティブ及びピクセル拒絶モジュール314は、例えばプリミティブ内の頂点のZ座標に基づいて初期深さ及びステンシルテスト(early depth and stencil test)を使用して、プリミティブ内で隠れプリミティブ及び隠れピクセルを拒絶する。プリミティブあるいはプリミティブ内のピクセルは、隠れであると検討され(considered)、例えばプリミティブあるいはプリミティブ内のピクセルがイメージフレーム内で別のオブジェクトの後ろに位置されるとき、イメージの特定フレームの処理の間、検討から拒絶されることができる。
属性インタポラータ204は、属性グラディエント値に基づいて、プリミティブ内のピクセルにわたって、属性を補間する。フラグメントシェーダスレッドは、属性インタポラータ204による処理の最後にパッキングされ(packed)、通信回線234を介してシェーダユニット206に通信される。属性インタポラータ204は、イメージジオメトリ内で拒絶されたプリミティブに関連づけられた頂点の属性を無視することができる。1つまたは複数の実施形態にしたがって、補間された属性値は、フラグメントシェーダ318をバイパスして、ピクセルブレンダ208への入力となる。ピクセルブレンダ208の結果は、ディスプレイユニット124のような、出力デバイスを使用して、処理された画像のプレゼンテーション(presentation)のために出力されることができる。
図3の例で図示されているように、頂点シェーダ306からの出力、例えば頂点シェーダ306によって生成されるテクスチャデータ、は、グラフィクスパイプライン108による後続処理における使用のために、テクスチャエンジン212に対して出力することができる。さらに、頂点シェーダ306は、頂点シェーダ306を使用するテクスチャデータを検索するために、テクスチャエンジン212に対しテクチャデータルックアップリクエスト(texture data lookup request)を投入(submit)ことができる。図2を参照すると、ロード制御モジュール222は、例えばテクスチャエンジン212を介して、頂点シェーダスレッド210のためにテクスチャデータをサンプリングすることができる。
フラグメントシェーダ318がグラフィクスパイプライン108で実行される場合に(例えば、それはバイパスされていない)、属性インタポラータ204は、フラグメントシェーダ318に対して、その出力、例えばピクセル属性/カラーデータ、を転送する。さらに、属性インタポラータ204は、テクスチャエンジン212に対し、初期テクスチャのためのリクエストを投入する。これに応じて、テクスチャエンジン212は、フラグメント318をインプリメントしているシェーダスレッド210による使用のために、そのリクエストされたテクスチャを得て、ロードコントローラ222と通信回線238及び260とを介してレジスタファイルバンク262にそれらを転送する。
あるいは、フラグメントシェーダ318がバイパスされ、ある最小限度のフラグメントシェーディングが実行される予定である場合、初期テクスチャのためのリクエストは、属性インタポラータ204からテクスチャエンジン212に投入される。これに応じて、テクスチャエンジン212は、ピクセルブレンダ208にそのリクエストされたテクスチャを転送し、そしてそれは、ピクセルブレンダ208によって実行されるフラグメントシェーディングオペレーションにおいてテクスチャデータを使用する。再び図2を参照すると、入力/出力(I/O)バス238は、テクスチャ、例えば前のオペレーションから生じるテクスチャを備えている従属テクスチャを、ロードコントローラ222を介して、テクスチャエンジン212に及びテクスチャエンジン212から、受け渡す。属性インタポラータ204は、通信回線254を介してテクスチャエンジン212から、初期テクスチャをリクエストする。これに応じて、テクスチャエンジン212は、通信回線252を介して、ピクセルブレンダ208に対して、初期テクスチャを転送する。上記で説明されるように、フラグメントシェーダスレッド210によって使用されていないレジスタファイルバンク、例えばレジスタファイルバンク262Bは、ピクセルブレンダ208に対し入力のために属性インタポラータ204によって出力された、カラー値、そしてノンテクスチャデータのような他のデータ、を保存するためにFIFOバッファとして使用されることができる。レジスタファイルバンク262のある部分を備えているFIFOバッファに保存されたデータは、通信回線240を介して、ピクセルブレンダに対して入力される。シェーダユニット206がフラグメントシェーディングをバイパスするときに属性/カラー値はピクセルブレンダ208に対してシェーダユニット206のレジスタファイルバンク262を介して送信されるということをさらに図示するために、図3の中で、属性インタポラータ204とフラグメントシェーダ318の間で、フラグメントシェーダ318とピクセルブレンダ208の間で点線が示されている。
ピクセルブレンダ208による初期処理の間に、レジスタファイルバンク262FIFOからのカラーデータは、テクスチャエンジン212から、ピクセルブレンダ208によって受信される初期テクスチャで同期化される。1つまたは複数の実施形態にしたがって、また、なんらかのフラグメントシェーディング、例えばテクスチャ組み合わせ(texture combining)、が実行される予定である場合に、ピクセルブレンダ208は、フラグメントシェーディング機能あるいはテクスチャ組み合わせ機能を、実行するあるいはエミュレートするように構成されている。ピクセルブレンダ208、ピクセルブレンダ208によって実行されるフラグメントシェーディングオペレーション(単数または複数)の結果に関して、ブレンディング、例えばアルファブレンディング、を実行するようにさらに構成されている。
ここにおいて開示されたそのような実施形態のうちの1つまたは複数にしたがって、プログラマブルグラフィックス処理エレメント(programmable graphics processing element)(PGPE)は、プログラムエレメント128のうちの1つまたは複数をインプリメントするために使用されることができる。例えば、そのような実施形態にしたがって、PGPEは、ピクセルブレンダをインプリメントするために使用されることができ、そしてそれは、いずれかが必要である場合、シェーダユニット206によって実行されないフラグメントシェーディングに加えて、ブレンディングを実行するようにプログラムされる。そのような実施形態の1つまたは複数にしたがって、PGPEは、例えば、「プログラマブルグラフィクス処理エレメント(Programmable Graphics Processing Element)」(クァルコムドケット番号070380)、と題された米国出願番号 / において説明されているようなPGPEであることができ、その内容は、参照によってここにおいて組み込まれている。
1つまたは複数の実施形態にしたがって、PGPEは、インストラクションセットを実行することができ、そしてそれは、PGPEを使用して実行されることが必要な機能によって変わることができる。図4は、例示的なPGPE405を図示しているブロック図である。図4の例で図示されているように、PGPE405は、入力モジュール430を備えており、そしてそれは、入力として、ここではピクセルオブジェクトと呼ばれるピクセルに対応するデータを受信する。例えば、PGPE405は、処理エレメント128、メモリモジュール116、レジスタファイルバンク262、等のうちの1つまたは複数から、1つまたは複数のピクセルオブジェクトを受信することができる。
1つまたは複数の実施形態にしたがって、入力モジュール430は、フォーマット変換を実行するために1つまたは複数の算術論理演算ユニット(ALUs)444を使用する。示された例において、ALUs(単数または複数)444は、ALUアレイの一部であるALU434である。ALUs444のそれぞれは、いくつかの非限定の例として、他のタイプの算術演算を含んでいる、単独乗算(single-multiplication)、ダブル乗算(double-multiplication)、2D内積(2D dot product)、最大オペレーション(maximum operation)、レジスタコピーオペレーション(register copy operation)、ガンマエンコーディング(gamma-encoding)、ガンマデコーディングオペレーション(gamma-decoding operation)、及び/または、他のタイプのオペレーション、のような算術演算を実行することができる。ALUアレイ434は、例えば、カラーコンポーネントあたり、8ビット整数、10ビット整数、16ビット浮動小数点、32ビット浮動小数点、等の値を使用することができる。ALUs444は、単一スレッド(single threaded)あるいはマルチスレッド(multi-threaded)であってもよい。
入力モジュール430は、単一化されたレジスタファイル432におけるレジスタにおいて、中間値、例えばフォーマット変換の結果、を保存することができ、例えば、レジスタファイルは、ある数のハードウェアレジスタを備えている。ALUアレイ434のインプリメンテーションに依拠して、例えば、各ハードウェアレジスタは、カラーコンポーネントを表す4つの8ビット整数、カラーコンポーネントを表す4つの10ビット整数、カラーコンポーネントを表す4つの16ビット浮動小数点値、等を保存することができる。
PGPE405におけるインストラクション実行モジュール(instruction execution module)(IEM)436は、インストラクションモジュール438から、プログラムカウンタ446を使用して、識別される1つまたは複数のインストラクションをフェッチする。インストラクションモジュール438は、例えば、ハードウェアレジスタ、同期化されたランダムアクセスメモリ(synchronized random access memory)(SRAM)等を使用して、多数のインストラクション(a number of instruction)を保存することなどができる。IEM436は、フェッチされたインストラクションを復号し、そして、その復号されたインストラクションによって規定されるようなオペランドをフェッチする。IEM436は、例えば単一化されたレジスタファイル(unified register file)432、及び/または、定数レジスタファイル(constant register file)440から、オペランドをフェッチすることができる。レジスタファイル432と同様に、定数レジスタファイル440は、例えば、ハードウェアレジスタ及び/またはSRAMを備えることができる。定数レジスタファイル440は、限定されない例として、ブレンディングファクタ、レガシ2Dラスタオペレーション(Raster Operation)(ROP)のためのパターン、あるいは、他の定数値、を保存することができる。
インストラクションは、IEM436に、一体化されたレジスタファイル432における1つまたは複数のレジスタにおいて保存されるピクセルオブジェクトから1つまたは複数のカラーコンポーネントを抽出させ、そして、オペランドとしてこれらのカラーコンポーネントを使用させることができる。例えば、一体化されたレジスタファイル432におけるレジスタに保存されたピクセルオブジェクトは、カラーコンポーネントにあたり8ビットを有しているRGBAフォーマットにフォーマットされることができる。ピクセルオブジェクトがRGBAフォーマットにフォーマット化されるとき、ビット0−7は、赤コンポーネントを表し、ビット8−15は、緑コンポーネントを表し、ビット16−23は、青コンポーネントを表し、そして、ビット24−31は、アルファコンポーネントを表すことができる。ピクセルのアルファコンポーネントは、ピクセルの透明のレベル(level of transparency of the pixel)を表す。この例を使用して、また、1つの例示的なインストラクションにしたがって、IEM436は、ピクセルオブジェクトの赤コンポーネントを抽出し、オペランドとしてその赤コンポーネントを使用し、例えば、ピクセルオブジェクトのビット0−7である。他のインストラクションは、IEM436に、ピクセルオブジェクトから、異なるあるいはマルチプルのコンポーネント、例えばカラー及び/またはアルファコンポーネント、を抽出するように、命令することができる。別の例において、深さ/ステンシルグラフィクスオペレーションにおけるインストラクションは、IEM436に、一体化されたレジスタファイル432におけるレジスタのうちの1つにおけるピクセルオブジェクトから、ステンシル値あるいはZ値を抽出するように、命令することができる。
インストラクションは、ALUアレイ434に対してオペランドを提供する前に、IEM436に、オペランドを修正するように、命令することができる。いくつかの例では、インストラクションは、どのようにオペランドを修正するかをIEM436に命令するために、いわゆるソース識別子を使用することができる。例えば、インストラクションは、IEM436に、オペランドの負(”−”)を提供するように、オペランドの絶対値(” abs”)を提供するように、あるいは、オペランドの逆数値(inverted value)「”~”」を提供するように、命令することができる。逆オペレーション(inverting operation)は、法線化された整数表示(normalized integer representation)における(1.0-x)のオペレーションを計算する。
オペランドをフェッチした後で、IEM436は、ALUアレイ434、特にALUアレイ434における1つまたは複数のALUs444、にフェッチされたオペランドを使用して復号されたインストラクションによって規定された1つまたは複数の算術演算を実行するように、命令することができる。ALUアレイ434が算術演算を実行し終わるとき、ALUアレイ434は、IEM436に戻って、結果として生じる値(resulting value(s))(単数または複数)を通信することができる。IEM436がALUアレイ434から結果(単数または複数)を受信するとき、IEM436は、一体化されたレジスタファイル432において結果(単数または複数)を保存する。IEM436は、別の算術演算に関連して、1つまたは複数のオペランドとして、ALUアレイ434に対する一体化されたレジスタファイル432において保存された値(単数または複数)を提供することができる。
プログラムカウンタ446は、インストラクションモジュール438における次のインストラクションを識別するためにインクリメントされ(incremented)、そしてそれは、新しい「現在のインストラクション(current instruction)」として実行のためにフェッチされることができる。これは、インストラクションのすべてが処理されるまで、継続する。
図4の例で図示されるように、PGPE405は、出力モジュール442を含むことができる。出力モジュール442は、例えば、一体化されたレジスタファイル432からデータを読み取り、グラフィクスパイプライン108の別の処理エレメント128における使用のためにデータを出力することができる。出力モジュール442は、例えば連続あるいは並列な方法で、複数のロケーションにデータを出力できる。出力モジュール442は、データを出力する前に、データに関して1つまたは複数のフォーマット変換を実行するために、ALUアレイ434を使用することができる。
1つまたは複数の実施形態にしたがって、例として図4を使用して、ALUs444は、入力モジュール430、IEM436、及びモジュール442、によって共有されており、それらのそれぞれは、ALU444によって動作される予定であるデータを得て、そして、インストラクションとその得られたデータを実行のためにALU444に対し送信することに責任を有する。オペレーションの完成の後で、ALU444は、ALU444への入力を供給するモジュールに対して、結果を戻す。したがって、そのような例では、ALU444は、別のモジュールのコマンドの下でオペレーションを実行することに責任を有するスレーブ(slave)として作用しており、そしてそれは、ALU444に、ALU444によって操作される予定である入力を、また、ALU444によって実行される予定であるインストラクションを、供給する。そのような場合では、ALU444は、レジスタファイルから、例えば一体化されたレジスタファイル432及び/または定数レジスタファイル440、ソース入力を読み取ること、あるいは、レジスタファイルに結果を書き込むこと、について責任を有さない。
代わりに、1つまたは複数の実施形態にしたがって、ALUs444は、入力モジュール430、IEM436、及び出力モジュール442によって共有されるが、ALUs444は、1つまたは複数のレジスタファイルから入力ソースデータを読み取ることについて責任を有し、そして、1つまたは複数のレジスタファイルに対し結果を出力することに責任を有することができる。そのような場合では、ALU444は、別のモジュール、例えば入力モジュール430、IEM436、及び出力モジュール442、からインストラクションを受信し、レジスタファイルのうちの1つまたは複数から入力ソースデータを読み取り、入力モジュール430、IEM436、あるいは出力モジュール442から受信されたインストラクション/コマンドに基づいて1つまたは複数のオペレーションを実行し、そして、1つまたは複数のレジスタファイルにその結果として生じているデータを書き込む。
そのような代わりのケースでは、ALUアレイ434と一体化されたレジスタファイル432との間の読み取り/書き込みの通信経路(図4で示されていない)は、入力モジュール430、IEM436、あるいは出力モジュール442から受信された制御信号情報に基づいて、一体化されたレジスタファイル434への/からの、データ入力/出力のためにALU444によって使用されることができる。同様に、読み取り通信経路(図4に示されていない)は、入力モジュール430、IEM436、あるいは出力モジュール442から受信された制御信号情報に基づいて、定数レジスタファイル440からALU444までの定数データ(constant data)の入力のためにALUアレイ434によって使用されることができる。通信経路は、例えば、定数レジスタファイル440あるいは一体化されたレジスタファイル434と、入力モジュール430のうちの1つまたは複数、IEM436、及び出力モジュール442、との間の通信経路の代わりに生じることができる。
1つまたは複数の実施形態にしたがって、ALUアレイ434は、同じ、あるいは、異なるクロックサイクルにおいて同時に、カラーコンポーネント及びアルファコンポーネントのためのインストラクションを実行することができる。
1つまたは複数の実施形態にしたがって、PGPE405を使用して実行される各インストラクションは、オペレーションコード(opcode)を規定する単独シンタクス、ある数のデスティネーションレジスタ、例1つまたは2つのデスティネーションレジスタ、そして、ある数のソースレジスタ、例4つのソースレジスタ、に適合させることができる。インストラクションで規定されたソースレジスタは、例えば、単一化されたレジスタファイル432におけるレジスタ、定数レジスタファイル440におけるレジスタ、あるいは、データを保存する別の場所(location)、であってもよい。
本開示の実施形態にしたがって使用するためのインストラクションセットは、いずれの数及びタイプのインストラクションを備えることができ、各インストラクションは、多数のオペランド上で操作することができる。インストラクションセットは、入力/出力、算術(例えば、加算、乗算、引き算、逆数、ガンマ復号、ガンマエンコード、等)、比較(例、最小、最大、比較、等)、ロジック(例、もし(if)、他に(else)、他に(else)、そしてその場合(endif)、等)、バイナリ(例、及び(and)、あるいは(or)、排他的論理和をとる(xor)、ない(not)、等)、バインディング(binding)、移動(move)、及びエンドインストラクション(end instruction)、を含むことができる。
ある数の様々な及び異なるグラフィクスオペレーションのいずれもが、PGPE405を使用してインプリメントされるインストラクションセット、を使用して実行されることができる。1つまたは複数の実施形態にしたがって、PGPE405は、シェーダユニット206を使用して実行されないフラグメントシェーディングオペレーションに加え、そのようなインストラクションセットを使用している1つまたは複数のブレンディングオペレーションをインプリメントするように構成されることができる。
1つまたは複数の実施形態にしたがって、ピクセルブレンダ208は、テクスチャデータで、レジスタファイルバンク262を使用してインプリメントされるFIFOから受信されたカラーデータを同期させる。その後で、ピクセルブレンダ208は、テクスチャ組み合わせオペレーションを使用して、例えばプライマリ及びセカンダリ入力ピクセルオブジェクトを使用して、ある量のフラグメントシェーディングを実行することができる。そのような場合においては、ピクセルブレンダ208は、属性インタポラータ204からプライマリ入力ピクセルオブジェクトを、例えばレジスタファイルバンク262を使用して提供されるFIFOを介して、そしてセカンダリ入力ピクセルオブジェクトを、受信する。セカンダリ入力ピクセルオブジェクトは、例えばテクスチャエンジン212によって実行されることができるフィルタリングファクタ及び/または重みと一緒に、テクスチャフィルタリングオペレーションを使用して生成されるテクスチャマッピングされるピクセルのためのテクスチャカラーと、近隣テクセルとして識別されるテクスチャピクセル(テクセル)のカラーと、を規定する、ピクセルオブジェクトであることができる。
テクスチャフィルタリングオペレーションを使用して生成された新しいピクセルオブジェクトは、セカンダリ入力ピクセルオブジェクトによって規定された近くのテクセル(nearby texels)のカラーを使用している、テクスチャマッピングされたピクセルのためのテクスチャカラーを規定する。新しいピクセルオブジェクトは、フラグメントシェーディングオペレーション、例えばテクスチャ組み合わせオペレーション、を実行するために、ピクセルブレンダ208に対するピクセルオブジェクト入力のうちの1つとして、ピクセルブレンダ208に対して供給されることができる。ピクセルブレンダ208がPGPE405を使用してインプリメントされる場合では、テクスチャ組み合わせオペレーションを実行するために、PGPE405は、プライマリ入力ピクセルオブジェクトと、セカンダリ入力ピクセルオブジェクトと、を使用する。その結果は、結果に関してピクセルブレンディングオペレーションを実行することにおいて、ピクセルブレンダ208によるアクセスのために保存されることができる。1つまたは複数の実施形態にしたがって、PGPE405は、OpenVG APIの、VG BLEND MULTIPLYモード、VG BLEND SCREENモード、VG BLEND D ARKENモード、あるいは、いくつかの限定されない例としてのPorter−Duff「ソース」オペレーション、「デスティネーション・オーバー・ソース(destination over source)」オペレーション、「ソース・イン・デスティネーション(source in destination)」オペレーション、及び「デスティネーション・イン・ソース(destination in source)」オペレーション、のようなPorter−Duffブレンディンググラフィクスオペレーション、をインプリメントするために使用されることができる。PGPE405は、シェーダユニット206と比較してサイズが比較的小さいので、PGPE405上で同じ量のオペレーションを実行するのに、より少ない電力を消費することができる。
1つまたは複数の例示的な実施形態において、説明された機能は、ハードウェア、ソフトウェア、及び/または、ファームウェア、あるいは、それらのいずれの組み合わせ、においてインプリメントされることができる。ハードウェアでインプリメントされる場合には、機能は、1つまたは複数のマイクロプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ(DSPs)、特定用途向け集積回路(ASICs)、フィールドプログラマブルゲートアレイ(FPGAs)、あるいは同様なもの、においてインプリメントされることができる。そのようなコンポーネントは、通信システム、データ書き込み及び/または読み取りシステム、あるいは他のシステム、の中で存在することができる。ソフトウェアでインプリメントされる場合には、機能は、コンピュータ可読媒体上の1つまたは複数のインストラクションあるいはコードとして、保存されあるいは送信されることができる。コンピュータ可読媒体(Computer-readable media)は、タンジブルコンピュータストレージ媒体(tangible computer storage media)と、1つの場所から別の場所へとコンピュータプログラムの転送を容易にするいずれの媒体をも含む通信媒体と、を含んでいる。ストレージ媒体は、コンピュータによってアクセスされることができる、いずれの利用可能な媒体であることができる。例として、限定されるものではなく、そのようなコンピュータ可読媒体は、RAM、フラッシュメモリ、読み取り専用メモリ(ROM)、電子的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)、コンパクトディスク読み取り専用メモリ(CD−ROM)あるいは他の光学ディスクストレージ、磁気ディスクストレージあるいは他の磁気ストレージデバイス、あるいは、インストラクションあるいはデータストラクチャの形で望ましいプログラムコードを保存するために使用されることができる、また、コンピュータによってアクセスされることができる、いずれの他の媒体、を備えることができる。用語「コンピュータ可読媒体(computer-readable medium)」はまた、タンジブルコンピュータプログラムプロダクト(tangible computer program product)として、定義されることができる。ここ
に使用されているように、ディスク(disk)とディスク(disc)は、コンパクトディスク(compact disc)(CD)、レーザーディスク(登録商標)(laser disc)、光学ディスク(optical disc)、デジタル汎用ディスク(digital versatile disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(blu-ray disc)を含んでおり、「ディスク(disks’)」は、大抵、データを磁気で再生しているが、「ディスク(discs’)」は、レーザーで光学的に再生する。上記の組み合わせはまた、コンピュータ可読媒体の範囲内に含まれるべきである。
装置及び方法が最も実践的で好ましい実施形態であると現在考えられている点から説明されているが、本開示は開示された実施形態に限定される必要はないと理解されるべきである。特許請求の範囲の精神及び範囲内に含まれる、様々な修正及び同様の組み合わせ(arrangement)を包含するように意図されており、その範囲は、すべてのそのような修正及び同様な構造を含有するように最も広い解釈を与えられるべきである。本開示は、特許請求の範囲のいずれの及びすべての実施形態を含む。
装置及び方法が最も実践的で好ましい実施形態であると現在考えられている点から説明されているが、本開示は開示された実施形態に限定される必要はないと理解されるべきである。特許請求の範囲の精神及び範囲内に含まれる、様々な修正及び同様の組み合わせ(arrangement)を包含するように意図されており、その範囲は、すべてのそのような修正及び同様な構造を含有するように最も広い解釈を与えられるべきである。本開示は、特許請求の範囲のいずれの及びすべての実施形態を含む。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[付記]
[1]グラフィクス処理ユニットを使用するための方法であって、
頂点シェーディング及びフラグメントシェーディングの両方を実行することが可能なシェーダユニットがフラグメントシェーディングをバイパスすべきかどうかの決定を行なうために構成情報を使用することと、
前記シェーダユニットを使用して頂点シェーディングを実行することと、
前記シェーダユニットがフラグメントシェーディングをバイパスするという決定に基づいて、前記シェーダユニットによってフラグメントシェーディングをバイパスすることと、を備える方法。
[2]前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記方法は、
前記シェーダユニットのある数の算術論理演算ユニットの電力をオフにし、前記算術論理演算ユニットの残りに電力を供給することと、なお、前記残りは、前記シェーダユニットの減らされた数の前記算術論理演算ユニットを備えている;
前記減らされた数の算術論理ユニットを使用して頂点シェーディングを実行するために、ある数の頂点シェーダスレッドをスケジュールすることと、なお、各頂点シェーダスレッドは、減らされた数の頂点上で動作する;
をさらに備えている、[1]記載の方法。
[3]前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記方法は、
前記シェーダユニットの少なくとも1つのスレッドパッキングバッファと、前記少なくとも1つのスレッドパッキングバッファから前記シェーダユニットへと情報を通信するために使用される入力バスと、の電力をオフにすることと、
をさらに備えている、[1]記載の方法。
[4]前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記方法は、
前記シェーダユニット以外の処理ユニットを使用してフラグメントシェーディングを実行することと;
前記の他の処理ユニットのためのバッファとして前記シェーダユニットのレジスタバンクを使用することと、なお、前記シェーダユニットのレジスタバンクは、フラグメントシェーディングを実行する前記の他の処理ユニットによる使用のために、ピクセルカラーデータを含んでいるピクセル属性データを保存するために使用されている;
他の場合には前記シェーダユニットによって使用されるテクスチャデータを前記他の処理ユニットに転送することと;
をさらに備えている、方法。
[5]前記の他の処理ユニットはピクセルブレンダを備えている、[4]記載の方法。
[6]フラグメントシェーディングを実行するために使用される前記の他の処理ユニットは、プログラマブルグラフィクス処理ユニットを備えており、前記方法は、
前記プログラマブルグラフィクス処理エレメントによって、テクスチャ組み合わせ及びピクセルブレンディングのオペレーションを実行することと、
をさらに備えている、[4]記載の方法。
[7]頂点シェーディング及びフラグメントシェーディングの両方を実行することが可能であるシェーダユニットがフラグメントシェーディングをバイパスすべきかどうかの決定を行なうために、構成情報を使用するように構成されたコマンドデコーダを備えているグラフィクス処理ユニットと、
を備えており、前記グラフィクス処理ユニットに結合されている前記シェーダユニットは、
頂点シェーディングを実行するように、
前記シェーダユニットがフラグメントシェーディングをバイパスするという決定に基づいてフラグメントシェーディングをバイパスするように、
構成されている、装置。
[8]前記シェーダユニットは、複数の算術論理演算ユニットを備えており、前記装置は、前記複数の算術論理演算ユニットに結合された電力管理ユニットと、なお、前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記電力管理ユニットは、ある数の前記算術論理演算ユニットの電力をオフにし、前記算術論理演算ユニットの残りに電力を供給するように構成されており、前記残りは、減らされた数の前記複数の算術論理ユニットを備えている;
前記シェーダユニットのスケジューラと、なお、前記スケジューラは、前記減らされた数の算術論理演算ユニットを使用して前記頂点シェーディングを実行するためにある数の頂点シェーダスレッドをスケジュールするように構成されており、各頂点シェーダスレッドは、減らされた数の頂点上で動作する;
を備えている、[7]記載の装置。
[9]前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記電力管理ユニットは、スレッドパッキングバッファと、前記スレッドパッキングバッファから前記シェーダユニットに情報を通信するために使用された入力バスと、の電力の供給をオフにするようにさらに構成されている、[8]記載の装置。
[10]前記シェーダユニットが前記シェーダユニットによってフラグメントシェーディングをバイパスするという決定に基づいて、前記シェーダユニット以外の処理ユニットは、フラグメントシェーディングを実行するように構成されており、前記シェーダユニットのレジスタバンクは、前記の他の処理ユニットのためのバッファとして使用されており、前記シェーダユニットのバッファは、フラグメントシェーディングを実行する前記他の処理ユニットによる使用のために、ピクセルカラーデータを含んでいるピクセル属性データを保存している、[7]記載の装置。
[11]前記の他の処理ユニットは、ピクセルブレンダを備えており、前記ピクセルブレンダは、前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいてフラグメントシェーディングを実行するように構成されている、[10]記載の装置。
[12]フラグメントシェーディングを実行するために使用された前記の他の処理ユニットは、プログラマブルグラフィクス処理エレメントを備えている、[10]記載の装置。
[13]前記プログラマブルグラフィクス処理エレメントは、テクスチャ組み合わせ及びピクセルブレンディングのオペレーションを実行するように構成されている、[12]記載の装置。
[14]コンピュータ実行可能プログラムコードが保存されるコンピュータ可読メモリ媒体であって、前記プログラムコードは、グラフィクス処理ユニットを使用するための前記プログラムコードで、
頂点シェーディング及びフラグメントシェーディングの両方を実行することが可能なシェーダユニットがフラグメントシェーディングをバイパスすべきかどうかの決定を行なうために構成情報を使用するコード、
前記シェーダユニットを使用して頂点シェーディングを実行するコード、
前記シェーダユニットがフラグメントシェーディングをバイパスするという決定に基づいて、前記シェーダユニットによってフラグメントシェーディングをバイパスするコード、
を備えている、媒体。
[15]前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記コードは、
前記シェーダユニットのある数の算術論理演算ユニットの電力をオフにし、前記算術論理演算ユニットの残りに電力を供給するコードと、なお、前記残りは、前記シェーダユニットの減らされた数の前記算術論理演算ユニットを備えている;
前記減らされた数の算術論理ユニットを使用して頂点シェーディングを実行するために、ある数の頂点シェーダスレッドをスケジュールするコードと、なお、各頂点シェーダスレッドは、減らされた数の頂点上で動作する;
をさらに備えている、[14]記載の媒体。
[16]前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記コードは、
前記シェーダユニットの少なくとも1つのスレッドパッキングバッファと、前記少なくとも1つのスレッドパッキングバッファから前記シェーダユニットへと情報を通信するために使用された入力バスと、の電力をオフにするコードと、をさらに備えている、[15]記載の媒体。
[17]前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記コードは、
前記シェーダユニット以外の処理ユニットを使用してフラグメントシェーディングを実行するコードと;
前記の他の処理ユニットのためのバッファとして前記シェーダユニットのレジスタバンクを使用するコードと、なお、前記シェーダユニットのレジスタバンクは、フラグメントシェーディングを実行する前記の他の処理ユニットによる使用のために、ピクセルカラーデータを含んでいるピクセル属性データを保存するために使用されている;
他の場合には前記シェーダユニットによって使用されるテクスチャデータを前記他の処理ユニットに転送するコードと;
をさらに備えている、[14]記載の媒体。
[18]前記の他の処理ユニットはピクセルブレンダを備えている、[17]記載の媒体。
[19]前記の他の処理ユニットは、プログラマブルグラフィクス処理ユニットを備えており、前記コードは、フラグメントシェーディングを実行するために前記プログラマブルグラフィクス処理ユニットを構成するコードをさらに備えており、フラグメントシェーディングは、テクスチャ組み合わせ及びピクセルブレンディングのオペレーションを備えている、[17]記載の媒体。
[20]グラフィクス処理手段を備える装置であって、前記グラフィクス処理手段は、
頂点シェーディング及びフラグメントシェーディングの両方を実行することが可能なシェーディング手段がフラグメントシェーディングをバイパスするかどうかについて、構成情報を使用して、決定を行なうためのコマンド復号手段を備えており、
前記シェーディング手段は、前記グラフィクス処理手段に結合されており、前記シェーディング手段は、頂点シェーディングを実行し、オプションとしてフラグメントシェーディングを実行するためのものであり、前記シェーディング手段は、前記シェーディング手段がフラグメントシェーディングをバイパスするという前記コマンド復号手段の決定に基づいて、フラグメントシェーディングをバイパスする、装置。
[21]前記シェーディング手段は複数の算術論理演算ユニットを備えており、前記装置は、前記複数の算術処理手段の電力の供給を管理するための電力管理手段と、なお、前記電力管理手段は、ある数の前記算術処理手段の電力がオフにされ、前記算術処理手段の残りに対して電力が供給され、前記残りは、減らされた数の前記複数の算術処理手段を備えるように、前記シェーディング手段がフラグメントシェーディングをバイパスするという前記決定に基づいて、前記複数の算術処理手段の電力を管理している;
前記シェーディング手段のスケジューリング手段と、なお、前記スケジューリング手段は、シェーダスレッドをスケジュールするためのものであり、前記シェーディング手段がフラグメントシェーディングをバイパスするという前記決定に基づいて、前記スケジューリング手段は、前記減らされた数の算術処理手段を使用して前記頂点シェーディングを実行するためにある数の頂点シェーダスレッドをスケジュールし、各頂点シェーダスレッドは、減らされた数の頂点上で動作する;[20]記載の装置。
[22]前記シェーディング手段がフラグメントシェーディングをバイパスするという前記決定に基づいて、前記電力管理手段は、スレッドパッキングバッファと、前記スレッドパッキングバッファから前記シェーディング手段に対し情報を通信するために使用される入力バスと、の電力をオフにするために、電力の供給を管理する、[21]記載の装置。
[23]前記シェーディング手段がフラグメントシェーディングをバイパスするという前記決定に基づいて、前記シェーディング手段以外の処理手段がフラグメントシェーディングのために使用されており、前記シェーディング手段のレジスタバンクは、前記の他の処理手段のためのバッファとして使用されており、前記バッファは、ピクセルカラーデータを含んでいるピクセル属性データを保存している、[20]記載の装置。
[24]前記の他の処理エレメントは、ピクセルブレンダを備えている、[23]記載の装置。
[25]フラグメントシェーディングを実行するために使用される前記の他の処理ユニットは、プログラマブルグラフィクス処理エレメントを備えており、前記プログラマブルグラフィクス処理エレメントは、テクスチャ組み合わせ及びピクセルブレンディングのオペレーションを実行するように構成されている、[23]記載の装置。

Claims (25)

  1. グラフィクス処理ユニットを使用するための方法であって、
    頂点シェーディング及びフラグメントシェーディングの両方を実行することが可能なシェーダユニットがフラグメントシェーディングをバイパスすべきかどうかの決定を行なうために構成情報を使用することと、
    前記シェーダユニットを使用して頂点シェーディングを実行することと、
    前記シェーダユニットがフラグメントシェーディングをバイパスするという決定に基づいて、前記シェーダユニットによってフラグメントシェーディングをバイパスすることと、
    を備える方法。
  2. 前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記方法は、
    前記シェーダユニットのある数の算術論理演算ユニットの電力をオフにし、前記算術論理演算ユニットの残りに電力を供給することと、なお、前記残りは、前記シェーダユニットの減らされた数の前記算術論理演算ユニットを備えている;
    前記減らされた数の算術論理ユニットを使用して頂点シェーディングを実行するために、ある数の頂点シェーダスレッドをスケジュールすることと、なお、各頂点シェーダスレッドは、減らされた数の頂点上で動作する;
    をさらに備えている、請求項1に記載の方法。
  3. 前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記方法は、
    前記シェーダユニットの少なくとも1つのスレッドパッキングバッファと、前記少なくとも1つのスレッドパッキングバッファから前記シェーダユニットへと情報を通信するために使用される入力バスと、の電力をオフにすることと、
    をさらに備えている、請求項1に記載の方法。
  4. 前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記方法は、
    前記シェーダユニット以外の処理ユニットを使用してフラグメントシェーディングを実行することと;
    前記の他の処理ユニットのためのバッファとして前記シェーダユニットのレジスタバンクを使用することと、なお、前記シェーダユニットのレジスタバンクは、フラグメントシェーディングを実行する前記の他の処理ユニットによる使用のために、ピクセルカラーデータを含んでいるピクセル属性データを保存するために使用されている;
    他の場合には前記シェーダユニットによって使用されるテクスチャデータを前記他の処理ユニットに転送することと;
    をさらに備えている、方法。
  5. 前記の他の処理ユニットはピクセルブレンダを備えている、請求項4に記載の方法。
  6. フラグメントシェーディングを実行するために使用される前記の他の処理ユニットは、プログラマブルグラフィクス処理ユニットを備えており、前記方法は、
    前記プログラマブルグラフィクス処理エレメントによって、テクスチャ組み合わせ及びピクセルブレンディングのオペレーションを実行することと、
    をさらに備えている、請求項4に記載の方法。
  7. 頂点シェーディング及びフラグメントシェーディングの両方を実行することが可能であるシェーダユニットがフラグメントシェーディングをバイパスすべきかどうかの決定を行なうために、構成情報を使用するように構成されたコマンドデコーダを備えているグラフィクス処理ユニットと、
    を備えており、前記グラフィクス処理ユニットに結合されている前記シェーダユニットは、
    頂点シェーディングを実行するように、
    前記シェーダユニットがフラグメントシェーディングをバイパスするという決定に基づいてフラグメントシェーディングをバイパスするように、
    構成されている、
    装置。
  8. 前記シェーダユニットは、複数の算術論理演算ユニットを備えており、前記装置は、 前記複数の算術論理演算ユニットに結合された電力管理ユニットと、なお、前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記電力管理ユニットは、ある数の前記算術論理演算ユニットの電力をオフにし、前記算術論理演算ユニットの残りに電力を供給するように構成されており、前記残りは、減らされた数の前記複数の算術論理ユニットを備えている;
    前記シェーダユニットのスケジューラと、なお、前記スケジューラは、前記減らされた数の算術論理演算ユニットを使用して前記頂点シェーディングを実行するためにある数の頂点シェーダスレッドをスケジュールするように構成されており、各頂点シェーダスレッドは、減らされた数の頂点上で動作する;
    を備えている、請求項7に記載の装置。
  9. 前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記電力管理ユニットは、スレッドパッキングバッファと、前記スレッドパッキングバッファから前記シェーダユニットに情報を通信するために使用された入力バスと、の電力の供給をオフにするようにさらに構成されている、請求項8に記載の装置。
  10. 前記シェーダユニットが前記シェーダユニットによってフラグメントシェーディングをバイパスするという決定に基づいて、前記シェーダユニット以外の処理ユニットは、フラグメントシェーディングを実行するように構成されており、前記シェーダユニットのレジスタバンクは、前記の他の処理ユニットのためのバッファとして使用されており、前記シェーダユニットのバッファは、フラグメントシェーディングを実行する前記他の処理ユニットによる使用のために、ピクセルカラーデータを含んでいるピクセル属性データを保存している、請求項7に記載の装置。
  11. 前記の他の処理ユニットは、ピクセルブレンダを備えており、前記ピクセルブレンダは、前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいてフラグメントシェーディングを実行するように構成されている、請求項10に記載の装置。
  12. フラグメントシェーディングを実行するために使用された前記の他の処理ユニットは、プログラマブルグラフィクス処理エレメントを備えている、請求項10に記載の装置。
  13. 前記プログラマブルグラフィクス処理エレメントは、テクスチャ組み合わせ及びピクセルブレンディングのオペレーションを実行するように構成されている、請求項12に記載の装置。
  14. コンピュータ実行可能プログラムコードが保存されるコンピュータ可読メモリ媒体であって、前記プログラムコードは、グラフィクス処理ユニットを使用するための前記プログラムコードで、
    頂点シェーディング及びフラグメントシェーディングの両方を実行することが可能なシェーダユニットがフラグメントシェーディングをバイパスすべきかどうかの決定を行なうために構成情報を使用するコード、
    前記シェーダユニットを使用して頂点シェーディングを実行するコード、
    前記シェーダユニットがフラグメントシェーディングをバイパスするという決定に基づいて、前記シェーダユニットによってフラグメントシェーディングをバイパスするコード、
    を備えている、
    媒体。
  15. 前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記コードは、
    前記シェーダユニットのある数の算術論理演算ユニットの電力をオフにし、前記算術論理演算ユニットの残りに電力を供給するコードと、なお、前記残りは、前記シェーダユニットの減らされた数の前記算術論理演算ユニットを備えている;
    前記減らされた数の算術論理ユニットを使用して頂点シェーディングを実行するために、ある数の頂点シェーダスレッドをスケジュールするコードと、なお、各頂点シェーダスレッドは、減らされた数の頂点上で動作する;
    をさらに備えている、請求項14に記載の媒体。
  16. 前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記コードは、
    前記シェーダユニットの少なくとも1つのスレッドパッキングバッファと、前記少なくとも1つのスレッドパッキングバッファから前記シェーダユニットへと情報を通信するために使用された入力バスと、の電力をオフにするコードと、
    をさらに備えている、請求項15に記載の媒体。
  17. 前記シェーダユニットがフラグメントシェーディングをバイパスするという前記決定に基づいて、前記コードは、
    前記シェーダユニット以外の処理ユニットを使用してフラグメントシェーディングを実行するコードと;
    前記の他の処理ユニットのためのバッファとして前記シェーダユニットのレジスタバンクを使用するコードと、なお、前記シェーダユニットのレジスタバンクは、フラグメントシェーディングを実行する前記の他の処理ユニットによる使用のために、ピクセルカラーデータを含んでいるピクセル属性データを保存するために使用されている;
    他の場合には前記シェーダユニットによって使用されるテクスチャデータを前記他の処理ユニットに転送するコードと;
    をさらに備えている、請求項14に記載の媒体。
  18. 前記の他の処理ユニットはピクセルブレンダを備えている、請求項17に記載の媒体。
  19. 前記の他の処理ユニットは、プログラマブルグラフィクス処理ユニットを備えており、前記コードは、フラグメントシェーディングを実行するために前記プログラマブルグラフィクス処理ユニットを構成するコードをさらに備えており、フラグメントシェーディングは、テクスチャ組み合わせ及びピクセルブレンディングのオペレーションを備えている、請求項17に記載の媒体。
  20. グラフィクス処理手段を備える装置であって、前記グラフィクス処理手段は、
    頂点シェーディング及びフラグメントシェーディングの両方を実行することが可能なシェーディング手段がフラグメントシェーディングをバイパスするかどうかについて、構成情報を使用して、決定を行なうためのコマンド復号手段を備えており、
    前記シェーディング手段は、前記グラフィクス処理手段に結合されており、前記シェーディング手段は、頂点シェーディングを実行し、オプションとしてフラグメントシェーディングを実行するためのものであり、前記シェーディング手段は、前記シェーディング手段がフラグメントシェーディングをバイパスするという前記コマンド復号手段の決定に基づいて、フラグメントシェーディングをバイパスする、
    装置。
  21. 前記シェーディング手段は複数の算術論理演算ユニットを備えており、前記装置は、 前記複数の算術処理手段の電力の供給を管理するための電力管理手段と、なお、前記電力管理手段は、ある数の前記算術処理手段の電力がオフにされ、前記算術処理手段の残りに対して電力が供給され、前記残りは、減らされた数の前記複数の算術処理手段を備えるように、前記シェーディング手段がフラグメントシェーディングをバイパスするという前記決定に基づいて、前記複数の算術処理手段の電力を管理している;
    前記シェーディング手段のスケジューリング手段と、なお、前記スケジューリング手段は、シェーダスレッドをスケジュールするためのものであり、前記シェーディング手段がフラグメントシェーディングをバイパスするという前記決定に基づいて、前記スケジューリング手段は、前記減らされた数の算術処理手段を使用して前記頂点シェーディングを実行するためにある数の頂点シェーダスレッドをスケジュールし、各頂点シェーダスレッドは、減らされた数の頂点上で動作する;
    請求項20に記載の装置。
  22. 前記シェーディング手段がフラグメントシェーディングをバイパスするという前記決定に基づいて、前記電力管理手段は、スレッドパッキングバッファと、前記スレッドパッキングバッファから前記シェーディング手段に対し情報を通信するために使用される入力バスと、の電力をオフにするために、電力の供給を管理する、請求項21に記載の装置。
  23. 前記シェーディング手段がフラグメントシェーディングをバイパスするという前記決定に基づいて、前記シェーディング手段以外の処理手段がフラグメントシェーディングのために使用されており、前記シェーディング手段のレジスタバンクは、前記の他の処理手段のためのバッファとして使用されており、前記バッファは、ピクセルカラーデータを含んでいるピクセル属性データを保存している、請求項20に記載の装置。
  24. 前記の他の処理エレメントは、ピクセルブレンダを備えている、請求項23に記載の装置。
  25. フラグメントシェーディングを実行するために使用される前記の他の処理ユニットは、プログラマブルグラフィクス処理エレメントを備えており、前記プログラマブルグラフィクス処理エレメントは、テクスチャ組み合わせ及びピクセルブレンディングのオペレーションを実行するように構成されている、請求項23に記載の装置。
JP2012277985A 2007-09-14 2012-12-20 グラフィクス処理ユニットにおけるフラグメントシェーダのバイパス、その装置及び方法。 Active JP5563054B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/855,832 2007-09-14
US11/855,832 US8325184B2 (en) 2007-09-14 2007-09-14 Fragment shader bypass in a graphics processing unit, and apparatus and method thereof

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010525035A Division JP5166535B2 (ja) 2007-09-14 2008-09-12 グラフィクス処理ユニットにおけるフラグメントシェーダのバイパス、その装置及び方法。

Publications (2)

Publication Number Publication Date
JP2013122769A true JP2013122769A (ja) 2013-06-20
JP5563054B2 JP5563054B2 (ja) 2014-07-30

Family

ID=39951607

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010525035A Active JP5166535B2 (ja) 2007-09-14 2008-09-12 グラフィクス処理ユニットにおけるフラグメントシェーダのバイパス、その装置及び方法。
JP2012277985A Active JP5563054B2 (ja) 2007-09-14 2012-12-20 グラフィクス処理ユニットにおけるフラグメントシェーダのバイパス、その装置及び方法。

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2010525035A Active JP5166535B2 (ja) 2007-09-14 2008-09-12 グラフィクス処理ユニットにおけるフラグメントシェーダのバイパス、その装置及び方法。

Country Status (8)

Country Link
US (1) US8325184B2 (ja)
EP (1) EP2037417B1 (ja)
JP (2) JP5166535B2 (ja)
KR (1) KR101134241B1 (ja)
CN (1) CN101802874B (ja)
HU (1) HUE046975T2 (ja)
TW (1) TW200931339A (ja)
WO (1) WO2009036314A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023278126A1 (en) * 2021-06-30 2023-01-05 Advanced Micro Devices, Inc. Accelerated processing device and method of sharing data for machine learning

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8253732B2 (en) * 2008-01-03 2012-08-28 International Business Machines Corporation Method and system for remote visualization client acceleration
US9142057B2 (en) 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US8675003B2 (en) * 2009-09-09 2014-03-18 Advanced Micro Devices, Inc. Efficient data access for unified pixel interpolation
EP2302845B1 (en) 2009-09-23 2012-06-20 Google, Inc. Method and device for determining a jitter buffer level
US8817031B2 (en) * 2009-10-02 2014-08-26 Nvidia Corporation Distributed stream output in a parallel processing unit
US8810592B2 (en) * 2009-10-09 2014-08-19 Nvidia Corporation Vertex attribute buffer for inline immediate attributes and constants
US8477050B1 (en) 2010-09-16 2013-07-02 Google Inc. Apparatus and method for encoding using signal fragments for redundant transmission of data
KR101719485B1 (ko) 2010-09-20 2017-03-27 삼성전자주식회사 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8751565B1 (en) 2011-02-08 2014-06-10 Google Inc. Components for web-based configurable pipeline media processing
GB201103699D0 (en) 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphic processing
GB201103698D0 (en) * 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphics processing
US10817043B2 (en) * 2011-07-26 2020-10-27 Nvidia Corporation System and method for entering and exiting sleep mode in a graphics subsystem
GB2496394B (en) * 2011-11-08 2014-12-17 Imagination Tech Ltd A method and system for implementing multisample antialiasing
US9239793B2 (en) * 2011-12-13 2016-01-19 Ati Technologies Ulc Mechanism for using a GPU controller for preloading caches
US8842122B2 (en) * 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor
US9202308B2 (en) 2011-12-28 2015-12-01 Think Silicon Sa Methods of and apparatus for assigning vertex and fragment shading operations to a multi-threaded multi-format blending device
US9093015B2 (en) * 2012-01-27 2015-07-28 Samsung Electronics Co., Ltd. Display apparatus, upgrade apparatus, control method thereof, and display system
US9691360B2 (en) * 2012-02-21 2017-06-27 Apple Inc. Alpha channel power savings in graphics unit
US10535185B2 (en) 2012-04-04 2020-01-14 Qualcomm Incorporated Patched shading in graphics processing
TWI597599B (zh) * 2012-06-05 2017-09-01 威盛電子股份有限公司 圖形處理單元與其管理方法
US8928680B1 (en) 2012-07-10 2015-01-06 Google Inc. Method and system for sharing a buffer between a graphics processing unit and a media encoder
US20140067894A1 (en) * 2012-08-30 2014-03-06 Qualcomm Incorporated Operations for efficient floating point computations
US9697006B2 (en) * 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9286647B2 (en) 2013-03-12 2016-03-15 Nvidia Corporation Pixel shader bypass for low power graphics rendering
US10096079B2 (en) * 2013-06-10 2018-10-09 Sony Interactive Entertainment Inc. Fragment shaders perform vertex shader computations
US9274591B2 (en) * 2013-07-22 2016-03-01 Globalfoundries Inc. General purpose processing unit with low power digital signal processing (DSP) mode
US9779534B2 (en) * 2013-08-28 2017-10-03 Qualcomm Incorporated Prefixed summed length in graphics processing
DE102015002581A1 (de) * 2014-04-03 2015-10-08 Intel Corporation Abbilden eines Mehrratenshadings auf monolithische Programme
CN103995725B (zh) * 2014-04-24 2018-07-20 深圳中微电科技有限公司 在cpu上执行像素着色器的程序转换方法及装置
US9659341B2 (en) * 2014-06-25 2017-05-23 Qualcomm Incorporated Texture pipe as an image processing engine
US9449363B2 (en) * 2014-06-27 2016-09-20 Intel Corporation Sampling, fault management, and/or context switching via a compute pipeline
US9946331B2 (en) 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. System and method to process signals having a common component
US9454841B2 (en) * 2014-08-05 2016-09-27 Qualcomm Incorporated High order filtering in a graphics processing unit
US9536342B2 (en) * 2014-08-15 2017-01-03 Intel Corporation Automatic partitioning techniques for multi-phase pixel shading
US9934606B2 (en) * 2014-09-16 2018-04-03 Intel Corporation Deferred coarse pixel shading
US10007965B2 (en) * 2014-12-16 2018-06-26 Intel Corporation Dynamic kernel modification for graphics processing units
KR20160074154A (ko) 2014-12-18 2016-06-28 삼성전자주식회사 컴파일러
KR101646194B1 (ko) * 2014-12-31 2016-08-05 서경대학교 산학협력단 멀티 스레드 그래픽 처리 장치
GB2536964B (en) 2015-04-02 2019-12-25 Ge Aviat Systems Ltd Avionics display system
US9881351B2 (en) * 2015-06-15 2018-01-30 Microsoft Technology Licensing, Llc Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation
CN104933752B (zh) * 2015-06-29 2018-08-07 上海兆芯集成电路有限公司 一种计算机系统、图形处理单元及其图形处理方法
US9824458B2 (en) * 2015-09-23 2017-11-21 Qualcomm Incorporated Dynamically switching between late depth testing and conservative depth testing
US10262455B2 (en) * 2015-12-04 2019-04-16 Intel Corporation Merging fragments for coarse pixel shading using a weighted average of the attributes of triangles
CN105574925A (zh) * 2015-12-11 2016-05-11 中国航空工业集团公司西安航空计算技术研究所 一种自适应的光照处理算法动态选择策略
US10311540B2 (en) 2016-02-03 2019-06-04 Valve Corporation Radial density masking systems and methods
US9817431B2 (en) * 2016-02-03 2017-11-14 Qualcomm Incorporated Frame based clock rate adjustment for processing unit
US10535186B2 (en) * 2016-08-30 2020-01-14 Intel Corporation Multi-resolution deferred shading using texel shaders in computing environments
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US9984434B1 (en) * 2016-09-23 2018-05-29 Apple Inc. Techniques to derive efficient conversion and/or color correction of video data
US10311627B2 (en) * 2016-12-16 2019-06-04 Samsung Electronics Co., Ltd. Graphics processing apparatus and method of processing graphics pipeline thereof
US10417815B2 (en) * 2017-01-27 2019-09-17 Advanced Micro Devices, Inc. Out of order pixel shader exports
US10417731B2 (en) 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10417734B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10431545B2 (en) * 2017-06-29 2019-10-01 Intel IP Corporation Cross-connected multi-chip modules coupled by silicon bent-bridge interconnects and methods of assembling same
CN111095294A (zh) * 2017-07-05 2020-05-01 深视有限公司 深度视觉处理器
US10074210B1 (en) * 2017-07-25 2018-09-11 Apple Inc. Punch-through techniques for graphics processing
CN108958921B (zh) * 2018-07-19 2023-06-20 南京军微半导体科技有限公司 Gpu中一种染色片段调度管理的硬件加速实现方法
CN109727186B (zh) * 2018-12-12 2023-03-21 中国航空工业集团公司西安航空计算技术研究所 一种基于SystemC面向GPU片元着色任务调度方法
CN109669770B (zh) * 2018-12-12 2022-10-11 中国航空工业集团公司西安航空计算技术研究所 一种图形处理器并行着色任务调度单元系统
GB2608094A (en) * 2021-01-27 2022-12-28 Advanced Risc Mach Ltd Graphics processing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007049610A1 (ja) * 2005-10-25 2007-05-03 Mitsubishi Electric Corporation 画像処理装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
JP3972784B2 (ja) 2002-09-30 2007-09-05 ソニー株式会社 画像処理装置およびその方法
US7385607B2 (en) 2004-04-12 2008-06-10 Nvidia Corporation Scalable shader architecture
US7570267B2 (en) 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7091982B2 (en) 2004-05-14 2006-08-15 Nvidia Corporation Low power programmable processor
US7324106B1 (en) * 2004-07-27 2008-01-29 Nvidia Corporation Translation of register-combiner state into shader microcode
US9098932B2 (en) * 2004-08-11 2015-08-04 Ati Technologies Ulc Graphics processing logic with variable arithmetic logic unit control and method therefor
US7362325B2 (en) 2004-12-21 2008-04-22 Qualcomm Incorporated 2D/3D line rendering using 3D rasterization algorithms
US7836284B2 (en) 2005-06-09 2010-11-16 Qualcomm Incorporated Microprocessor with automatic selection of processing parallelism mode based on width data of instructions
US7830390B2 (en) * 2005-07-19 2010-11-09 Graphics Properties Holdings, Inc. Color computation of pixels using a plurality of vertex or fragment shader programs
US20070091088A1 (en) 2005-10-14 2007-04-26 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US9135017B2 (en) * 2007-01-16 2015-09-15 Ati Technologies Ulc Configurable shader ALU units

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007049610A1 (ja) * 2005-10-25 2007-05-03 Mitsubishi Electric Corporation 画像処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023278126A1 (en) * 2021-06-30 2023-01-05 Advanced Micro Devices, Inc. Accelerated processing device and method of sharing data for machine learning

Also Published As

Publication number Publication date
JP5166535B2 (ja) 2013-03-21
WO2009036314A2 (en) 2009-03-19
US20090073168A1 (en) 2009-03-19
WO2009036314A3 (en) 2009-07-09
US8325184B2 (en) 2012-12-04
CN101802874A (zh) 2010-08-11
EP2037417A3 (en) 2009-07-01
KR20100051750A (ko) 2010-05-17
KR101134241B1 (ko) 2012-04-09
EP2037417B1 (en) 2020-01-08
HUE046975T2 (hu) 2020-04-28
EP2037417A2 (en) 2009-03-18
JP5563054B2 (ja) 2014-07-30
JP2010539602A (ja) 2010-12-16
TW200931339A (en) 2009-07-16
CN101802874B (zh) 2014-04-16

Similar Documents

Publication Publication Date Title
JP5563054B2 (ja) グラフィクス処理ユニットにおけるフラグメントシェーダのバイパス、その装置及び方法。
US8074224B1 (en) Managing state information for a multi-threaded processor
US8077174B2 (en) Hierarchical processor array
US10297003B2 (en) Efficient saving and restoring of context information for context switches
US20180061122A1 (en) Multi-resolution deferred shading using texel shaders in computing environments
US10430912B2 (en) Dynamic shader instruction nullification for graphics processing
EP3353746B1 (en) Dynamically switching between late depth testing and conservative depth testing
US20160292812A1 (en) Hybrid 2d/3d graphics rendering
CN109564694B (zh) 用于基于入库的图形处理的顶点着色器
US10643369B2 (en) Compiler-assisted techniques for memory use reduction in graphics pipeline
US7484076B1 (en) Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P)
US9646359B2 (en) Indefinite texture filter size for graphics processing
WO2017053022A1 (en) Speculative scalarization in vector processing
US10387119B2 (en) Processing circuitry for encoded fields of related threads
US6885375B2 (en) Stalling pipelines in large designs
US11880924B2 (en) Synchronization free cross pass binning through subpass interleaving
US11656877B2 (en) Wavefront selection and execution

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140219

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140513

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140611

R150 Certificate of patent or registration of utility model

Ref document number: 5563054

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250