JP2006318404A - 図形描画装置 - Google Patents

図形描画装置 Download PDF

Info

Publication number
JP2006318404A
JP2006318404A JP2005142992A JP2005142992A JP2006318404A JP 2006318404 A JP2006318404 A JP 2006318404A JP 2005142992 A JP2005142992 A JP 2005142992A JP 2005142992 A JP2005142992 A JP 2005142992A JP 2006318404 A JP2006318404 A JP 2006318404A
Authority
JP
Japan
Prior art keywords
pixel
thread
shader
data
processing
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
JP2005142992A
Other languages
English (en)
Other versions
JP4637640B2 (ja
Inventor
Yoshiyuki Kato
義幸 加藤
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2005142992A priority Critical patent/JP4637640B2/ja
Publication of JP2006318404A publication Critical patent/JP2006318404A/ja
Application granted granted Critical
Publication of JP4637640B2 publication Critical patent/JP4637640B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

【課題】 メモリアクセスとピクセルシェーダ本来の演算処理を並列に実行することにより、メモリアクセスのレイテンシを隠蔽することを可能とする、マルチスレッド型のピクセルシェーダを用いた図形描画装置を提供することを目的とする。
【解決手段】 図形描画装置は、頂点データを処理する頂点シェーダ300と、ビューポートクリッピング回路301と、セットアップ回路302と、ラスタライザ303と、テクスチャデータを保存するテクスチャメモリ305と、ピクセルデータを保存するフレームバッファ306と、ピクセルデータとテクスチャデータにアクセスしてピクセル単位のピクセルスレッドを生成して並列処理するマルチスレッドシェーダ304とを備えている。
【選択図】 図1

Description

この発明は、ディスプレイ上にコンピュータグラフィクスの画像を表示する図形描画装置に関しており、特に、ピクセルの描画処理をプログラマブルに行なうマルチスレッド型のピクセルシェーダを用いた図形描画装置に関するものである。
一般に3Dグラフィクスの処理は座標変換やライティング計算等を行なうジオメトリ処理と、三角形等をピクセルに分解してテクスチャマッピング等を施してフレームバッファへ描画するレンダリング処理に分類できる。近年、API(Application Program Interface)で予め決められた古典的なジオメトリ処理やレンダリング処理を用いるのではなく、プログラマブルなグラフィクスアルゴリズムによるフォトリアルな表現手法が用いられるようになってきた。
この手法の一つとして頂点シェーダとピクセルシェーダがある。頂点シェーダとピクセルシェーダをもつグラフィクスパイプラインの一例について説明する(例えば、非特許文献1参照)。頂点シェーダでは、アプリケーションプログラマがアセンブリ言語や高レベルのシェーディング言語等によりプログラマ自身のアルゴリズムをハードウェアでアクセラレーションすることができる。モデリングデータを変えることなく頂点データに対して移動、変形、回転、ライティング処理等を自由に加えることができる。これにより3Dモーフィング、屈折エフェクト、スキニング(間接等の頂点の不連続部分を滑らかに表現する)等が可能となり、CPUに負荷をかけずにリアリスティックな表現が可能である。
一方、ピクセルシェーダは、ピクセル単位でプログラマブルなピクセル演算をするためのもので、頂点シェーダ同様アセンブリ言語や高レベルのシェーディング言語を用いてプログラムする。これにより、テクスチャデータとして法線ベクトルを用いてピクセル単位でライティング処理を行なったり、テクスチャデータとして摂動データ(揺らぎ)を用いてバンプマップを行なう等の処理が可能となる。またピクセルシェーダはテクスチャアドレスの計算手法を変えるだけでなく、テクスチャカラーとピクセルのブレンド演算もプログラマブルに行なうことができる。これにより階調反転、色空間の変換等の画像処理も可能である。一般に頂点シェーダとピクセルシェーダは組み合わせて用いられ、頂点処理とピクセル処理を組み合わせることにより多彩な表現が可能となる。
以下、頂点シェーダとピクセルシェーダを含むグラフィクスパイプラインをより具体的に説明する。非特許文献1記載のグラフィックスパイプラインは、データ処理順に、頂点シェーダ、ビューポートクリッピング回路、セットアップ回路、ラスタライザ、ピクセルシェーダ、フォグブレンド、フラグメントテスト、アルファブレンドを備えている。また、テクスチャの色値(RGB)やアルファ値(透明度)等のテクスチャデータを保存するテクスチャメモリと、デスティネーションデータやソースデータ、最終カラーを保存するフレームバッファを有している。
次に、動作について説明する。頂点シェーダは、頂点データに対する回転、移動、拡大縮小等の座標変換処理とライティング処理を行なう。頂点シェーダはプログラマブルであるので、プログラマが独自のアルゴリズムを用いて処理を行なうことも可能である。ビューポートクリッピング回路は、頂点シェーダで計算された座標を表示デバイス座標へ変換し、頂点座標が画面枠からはみ出すかどうかのチェックを行い、はみ出した場合は画面内に収まるように三角形を分割する。セットアップ回路は、頂点データから描画処理に必要な増分値の計算を行なう。ラスタライザは、その増分値を用いてピクセルの補間処理を行ない、三角形をピクセルに分解する。ピクセルシェーダは、ラスタライザで生成されたテクスチャ座標を使ってテクスチャメモリにアクセスしてテクスチャデータを読み出す。そして、読み出されたテクスチャデータとカラーデータのブレンド処理等を行なう。ピクセルシェーダはプログラマブルな処理が可能で、テクスチャのアドレス計算やブレンド処理を、所望の演算式を用いて行なうことができる。フォグブレンドは、遠近感を付加するためのフォグ(霧)の生成とセカンダリカラー(以下、スペキュラーカラー)の加算処理を行なう。フラグメントテストは、フレームバッファから物体の奥行き情報(以下、デプスデータ)や同形状の重ね合せ情報(以下、ステンシルデータ)を読み出し、ソースデータとデスティネーションデータの間で比較処理行い、陰面消去等を行う。アルファテストもこのステージで処理する。アルファブレンドは、フレームバッファから読み出したデスティネーションデータとソースデータを使ってアルファブレンドの透過処理を行ない、最終カラーをフレームバッファへ書き込む。
Microsoft、「DirectX8プログラマーズリファレンスマニュアル」、2000年11月8日
従来の図形描画装置は、以上のように構成されていたので、通常、ピクセルシェーダのプログラムではテクスチャのアドレス計算、テクスチャのフェッチ、テクスチャカラーとピクセルのブレンド演算の順番で処理されることが多い。この処理の中でテクスチャのフェッチは、テクスチャアドレスを指定することによりテクスチャメモリからデータを読み出すので、所望のデータが実際に読み出されて次の処理が可能になるまでに待ち時間が発生する。一般に、テクスチャ読み出しにはテクスチャキャッシュ等が利用されるが、そうした場合でもミスヒットが発生すると、相当大きな遅延時間(以下、レイテンシ)が発生してしまう。そして、このレイテンシの発生により、次の処理であるテクスチャカラーとピクセルのブレンド演算が待たされてしまうという課題があった。
更に、ピクセルシェーダのプログラムの中でフレームバッファからデプスデータを読み出して陰面消去を行なったり、フレームバッファから読み出したデスティネーションのピクセルを使ってブレンド処理をする場合は、メモリからデータを読み出すまでの待ち時間が更に長くなってしまうという課題があった。
このような現象は、演算器がメモリアクセスのレイテンシのために有効に活用されていないこと示しており、メモリアクセスのために全体の性能が低下してしまうことになる。大容量FIFO等を用いてメモリアクセスのレイテンシを隠蔽すること等も考えられるが、本質的な解決にはならず演算器の稼働率はあまり向上しない。また組み込み分野においてはゲート規模LSIコストに与える影響が大きいので、効果のあまり期待できないFIFOを実装することは得策ではない。
この発明は上記のような課題を解消するためになされたもので、メモリからの読み出しや書き込み処理の完了を待たずに次の処理に移行し、メモリアクセスとピクセルシェーダ本来の演算処理を並列に実行することにより、メモリアクセスのレイテンシを隠蔽することを可能とする、マルチスレッド型のピクセルシェーダを用いた図形描画装置を提供することを目的とする。
この発明に係る図形描画装置は、テクスチャデータを保存するテクスチャメモリと、ピクセルデータを保存するフレームバッファと、前記ピクセルデータと前記テクスチャデータとにアクセスしてピクセル単位のピクセルスレッドを生成し、複数の前記ピクセルスレッドを並列処理するマルチスレッドシェーダとを備えている。
この発明によれば、メモリアクセスのレイテンシに影響を受けることなく、プログラマブルな3Dレンダリング処理を効率よく行なうことができる。
実施の形態1.
以下、この発明の実施の形態1について説明する。図1は、この発明の実施の形態1に係るマルチスレッド型のピクセルシェーダを用いた図形描画装置の構成図である。図1において、図形描画装置は、頂点シェーダ300、ビューポートクリッピング回路301、セットアップ回路302、ラスタライザ303、マルチスレッドシェーダ304、テクスチャメモリ305、フレームバッファ306を備えている。
次に、動作について説明する。頂点シェーダ300は、頂点データに対する回転、移動、拡大縮小等の座標変換処理とライティング処理を行なう。頂点シェーダ300は、プログラマブルなのでプログラマが独自のアルゴリズムを用いて処理を行なうことも可能である。ビューポートクリッピング回路301は、頂点シェーダ300で計算された座標を表示デバイス座標へ変換し、頂点座標が画面枠からはみ出すかどうかのチェックを行い、はみ出した場合は画面内に収まるように三角形(プリミティブ)を分割する。セットアップ回路302は、頂点データから、描画処理に必要な増分値の計算を行なう。ラスタライザ303は、その増分値を用いてピクセルの移動と三角形の内外判定処理を行なう。通常ラスタライザは、ピクセルの補間処理やパースペクティブコレクション(遠近補正)等も行なうが、これらの処理は後述のマルチスレッドシェーダ304が行なう。これにより、ラスタライザにおける、ピクセル補間処理とシェーダ処理との負荷バランスの問題が発生せず、効率よく処理することができる。また、ピクセル補間処理のための専用ユニットが不要となることから、ハードウェア規模も削減できる。
マルチスレッドシェーダ304は、上記のラスタライズのためのピクセル補間処理の他に、テクスチャのアドレス計算、テクスチャのフィルタ処理、ピクセルブレンド処理、フォグブレンド、スペキュラー加算、フラグメントテスト(アルファテスト、デプステスト、ステンシルテスト)、アルファブレンド処理等を統合的に行なう。テクスチャは、テクスチャメモリ305から読み出す。そして、演算された最終カラーはフレームバッファ306へ書き込まれる。また、デスティネーションデータが必要な場合はフレームバッファ306から読み出しを行なう。
なお、一般のピクセルシェーダのシェーダプログラムではテクスチャのアドレス計算とピクセルのブレンド演算のみ行なわれ、それ以外のフラグメント処理は別ユニットで処理される。本発明はレンダリング処理のほとんど全てをマルチスレッドシェーダ304で処理するのでハードウェア規模を削減できると同時に将来サポートされるであろう機能にもプログラマブルに柔軟に対応できる。
本発明のシェーダプログラムはレンダリングに必要な固定処理(例えば、ラスタライズのための平面の方程式計算、デプステスト、アルファブレンド等)と、ユーザが自由に設定できるプログラマブルな演算処理に分類される。早期のZ値(奥行き方向の距離を示す)比較を行う場合、まずZ値のピクセル補間処理(平面の方程式でデプスを計算)とデプステストを行い、その後デプス以外の要素のピクセル補間処理を行なう。これによりデプステストに失敗したときの無駄な処理を最小限に抑えることができる。
以上のように、この実施の形態1によれば、メモリアクセスのレイテンシに影響を受けることなく、プログラマブルな3Dレンダリング処理を効率よく行なうことができる。
実施の形態2.
以下、この発明の実施の形態2について説明する。図2は、図1中のマルチスレッドシェーダ304の一例を示す構成図である。図2において、マルチスレッドシェーダ304は、ピクセルレジスタウインドウ400、マルチプレクサ401、スレッドスケジューラ402、シェーダコア403、シェーダプログラム404、定数レジスタ405、テクスチャキャッシュ406、ピクセルキャッシュ407を備えている。
次に、動作について説明する。ピクセルレジスタウインドウ400は、図1のラスタライザ303から出力される増分値情報、シェーダコア403で処理された演算結果等を格納するためのレジスタセットである。ピクセルレジスタウインドウ400は、これらのリソースをピクセルスレッド単位でレジスタに保持する。マルチプレクサ400は、ピクセルレジスタウインドウ400中の、ピクセルスレッド単位の複数のレジスタセットから、処理対象のピクセルスレッドのレジスタセットを選択し、シェーダコア403と接続する。スレッドスケジューラ402は、処理対象のピクセルスレッドの切り替え処理(演算に割り当るか、メモリアクセスに割り当てるかの決定)等を行う。
シェーダコア403は、実施の形態1で説明した演算処理を行なう演算器で、シェーダプログラム404で記述された命令を逐次実行する。定数レジスタ405には、演算に使用する定数が設定される。定数レジスタ405は一般に複数個で構成され、シェーダプログラム404を読み込む際に同時に更新される。シェーダプログラム404が実行中の場合には、定数レジスタ405は更新されない。
シェーダコア403では、従来ラスタライザで行なっていたピクセル補間処理、パースペクティブコレクションを行なう。例えば、テクスチャ座標(s,t,q)に対するピクセル補間処理とパースペクティブコレクション(s_pers,t_pers)は以下の式で計算される。
s=As*X+Bs*Y+Cs
t=At*X+Bt*Y+Ct
q=Aq*X+Bq*Y+Cq
s_pers=s/q
t_pers=t/q
ここで、As、Bs、Cs、At、Bt、Ct、Aq、Bq、Cqは、頂点座標のテクスチャ座標から算出される平面の方程式の係数である。X、Yはラスタライザ303で行なわれる三角形の内外判定処理にパスした(即ち、三角形の内部に含まれる)表示デバイス座標である。
テクスチャキャッシュ406は、図1のテクスチャメモリ305からテクスチャデータを読み出すためのキャッシュで、シェーダコア403へ読み出されたテクスチャデータを出力する。従来のピクセルシェーダでは処理しないテクスチャのフィルタ処理も、このシェーダコア403で実行する。例えば、バイリニアフィルタでは以下の演算処理を行なう。
T01=T0*(1−ufrac)+T1*ufrac
T23=T2*(1−ufrac)+T2*ufrac
T=T01*(1−vfrac)+T23*vfrac
ここで、T0、T1、T2、T3は、テクスチャ座標で示された近傍の4テクセル(テクスチャを構成するピクセル)のカラー値である。また、ufrac、vfracは、それぞれテクセルの中心座標と真のテクスチャ座標のU方向及びV方向の差分(小数点以下の端数値)である。更に、T01はT0〜T1間の線形補間を、T23はT2〜T3間の線形補間を、TはT01〜T23間の線形補間を示す。
ピクセルキャッシュ407はフレームバッファ、デプスバッファ、ステンシルバッファ等に対してピクセルデータの読み書きを行なうためのキャッシュで、シェーダコア403に対してデスティネーションデータを出力し、シェーダコアで計算された演算結果(例えばカラーやデプス等)が書き込まれる。
図3は、図2中のピクセルレジスタウインドウ400の一例を示す図である。説明を簡単にするため、ピクセルスレッドを4個までサポートする場合について説明する。図3において、ピクセルスレッド0〜3の各レジスタセットには、プログラムカウンタレジスタ、ステータス情報レジスタ、XYアドレスレジスタ、増分値情報レジスタ、カラーレジスタ、デプスレジスタ、テクスチャ座標レジスタ、テンポラリレジスタが含まれる。
プログラムカウンタレジスタは、そのピクセルスレッドにおけるシェーダプログラムのプログラムカウンタの値を示すもので、ピクセルスレッドが切り替わる場合、その直前まで実行していたプログラムカウンタの値が保持される。
ステータス情報レジスタは、ピクセルスレッドの状態を記録するためのもので、状態の種類は“RUN”、“WAIT”、“SUSPEND”、“IDLE”の4種類に分類される。シェーダプログラム404の演算が実行中であるピクセルスレッドには“RUN”がマークされ、テクスチャリード等のメモリアクセスが発生しデータ待ち状態にあるピクセルスレッドには“WAIT”がマークされる。一方、演算やメモリアクセスを要求しているが、他のピクセルスレッドが使用中であるために待機中であるピクセルスレッドには“SUSPEND”がマークされる。“IDLE”がマークされた場合は、未だ一度も実行されていないピクセルスレッド、またはプログラムの実行が完了したピクセルスレッドであることを示している。
XYアドレスレジスタは、ラスタライザ303から出力されるピクセルのXY座標を保持する読み出し専用レジスタである。スレッドスケジューラ402は、ピクセルスレッドの状態を切り替えるときに、このXY座標を識別子として使用する。もし同一XY座標をもつピクセルがラスタライザ303から新規に入力された場合は、既に登録されている同じ識別子を持つピクセルスレッドが“IDLE”状態になるまで、そのピクセルはシェーダコア403に入力されない。つまりシェーダコア403内で同じ識別子(XY座標)を持つピクセルスレッドが処理されることがない。これにより、フレームバッファ306のピクセルデータのコヒーレンシを保つことができ、不整合が発生しない。
増分値情報レジスタは、ラスタライザ303から出力される各種成分(拡散カラー、スペキュラーカラー、デプス、テクスチャ等)の増分値情報が格納される読み出し専用のレジスタである。
カラーレジスタは、拡散カラーレジスタとスペキュラーカラーレジスタとから成り、平面の方程式の演算結果を格納するためのレジスタである。同様に、デプスレジスタ、テクスチャ座標レジスタには、それぞれデプス、テクスチャ座標に対する平面の方程式の演算結果を格納する。通常テクスチャ座標は、マルチテクスチャに対応するためレイヤの数だけ用意される。
一方、テンポラリレジスタは、演算の途中結果を格納するためのレジスタである。通常テンポラリレジスタは複数個用意される。なお、テンポラリレジスタ、カラーレジスタ、及びテクスチャ座標レジスタは、要素が4個のベクトルデータである。カラーは(r,g,b,a)、座標は(s,t,r,q)で表現される。
ピクセルレジスタウインドウ400は、ピクセルスレッド単位に、以上のレジスタからなるレジスタセットを備えている。図3の場合は、各ピクセルスレッド0〜3の合計4個分のレジスタセットが用意される。
図4は、マルチスレッドを用いない処理とマルチスレッドを用いた処理の違いを説明するための図である。図4において、マルチスレッドを用いない従来のピクセルシェーダによる処理シーケンス(以下、非マルチスレッド処理シーケンス)601と、マルチスレッドシェーダ304による並列処理シーケンス(以下、マルチスレッド処理シーケンス)602を説明する。なお、シェーダプログラム600は、図2中のシェーダプログラム404と同等である。
シェーダプログラム600は、演算A、テクスチャリードT、演算B、ピクセルリードR、演算C、ピクセルライトWの順に、演算とメモリアクセスを交互に行うプログラムであると仮定する。非マルチスレッド処理シーケンス601では、最初のピクセルに対してシェーダプログラム600の演算処理とメモリアクセスを順番に行なう。一連の処理が完了したら、次のピクセルに対して同じ処理を続けていく。このようにピクセル毎にシーケンシャルな処理が行われるので、メモリアクセスでレイテンシが発生すると、そのレイテンシの分だけ全体の処理が遅延してしまう。
一方、マルチスレッド処理シーケンス602では、スレッドスケジューラ402が、最初のピクセルスレッド0に対してシェーダコア403の演算器を割り当てる。演算器がピクセルスレッド0において演算Aを実行した後、テクスチャリードTでキャッシュがミスヒットした場合、データ待ち状態となる。この場合、前述したようにピクセルスレッド0のステータスが“WAIT”となる(図3のステータス情報レジスタにおいて、ピクセルスレッド0に“WAIT”がマークされる)。
ここで、シェーダコア403の演算器は空き状態となるので、スレッドスケジューラ402は次のピクセルスレッド1に対して同演算器を割り当てる。ピクセルスレッド0と同様に、ピクセルスレッド1において演算Aが実行される。同様に、ピクセルスレッド1の演算Aの終了後、スレッドスケジューラ402はピクセルスレッド2に対してシェーダコア403の演算器を割り当て、演算Aが実行される。
その後、ピクセルスレッド0のテクスチャリードTが完了してテクスチャデータの準備ができたら、スレッドスケジューラ402は、シェーダコア403の演算器の割り当てをピクセルスレッド2から切り離し、ピクセルスレッド0に再び割り当てて、ピクセルスレッド0の演算が再開される。即ち、ピクセルスレッド0において演算Bが実行される。それと並行して、ピクセルスレッド1において、演算Aの次処理であるテクスチャリードTが行なわれる。
以上のように、あるピクセルスレッドがテクスチャデータやピクセルデータへのアクセスで待ち状態となった場合、別のピクセルスレッドに対してシェーダコア403の演算処理を続行させ、演算器をできるだけ稼動状態にする。これにより演算器の処理、テクスチャデータへのアクセス、ピクセルデータへのアクセスを並列に実行させることができる。その結果、メモリアクセスのレイテンシを隠蔽でき、効率よく処理を行なうことができる。
図4の例では、マルチスレッド処理シーケンス602は、非マルチスレッド処理シーケンス601に比べて、スループットを約2倍向上することができる。一般に、シェーダプログラム600の中で、演算よりもメモリアクセスの占める割合が大きいほど、この効果は大きくなる。
図5は、図4中のマルチスレッド処理シーケンス602において、スレッドスケジューラ402が、ピクセルスレッドをどのようにスケジューリングするかを説明するための図である。図5において、各ピクセルスレッドのステータス情報の変遷を示している。
斜線の部分はピクセルスレッドのステータスが“RUN”(演算実行状態)であることを示している。図5において、シェーダコア403の演算器の稼働率を上げたことにより、常にいずれかのピクセルスレッドのステータスが“RUN”になっていることが示されている。
処理中のピクセルスレッドが“WAIT”状態か“SUSPEND”状態になった場合、シェーダコア403の演算器が稼動していないことになるので、新たにピクセルスレッドを割り当てて稼動状態にする。なお、各ピクセルスレッドの処理の優先順位は、最も古く割り当てられたピクセルスレッドほど高くなる。従って、ピクセルスレッド間で追い越しが発生することがなく、ピクセルスレッドが入力された順序で正しく処理される。
以上のように、この実施の形態2によれば、マルチスレッド処理シーケンス602により、演算器の処理、テクスチャデータへのアクセス、ピクセルデータへのアクセスを並列に実行させることができる。その結果、メモリアクセスのレイテンシを隠蔽でき、効率よく処理を行なうことができる。
実施形態3.
以下、この発明の実施の形態3について説明する。図6は、図2中のシェーダコア403の一例を示す構成図である。通常データは要素が4個のベクトルデータであるので、図6で示されるシェーダコア403が4組使用される。例えば、テクスチャアドレスは(s,t,r,q)、カラーは(r,g,b,a)で表現される。図6において、シェーダコア403は、入力引数修飾部800、除算器801、Power演算器802、複合演算器803、比較器804、スケール修飾部805、出力修飾部806を備えている。
次に、動作について説明する。入力引数修飾部800は、入力されるデータに対してマイナス(−)、補数、バイアス(0.5を引く)処理をモードに応じて施す。
除算器801は、パースペクティブコレクションに必要な割り算処理等を行う。Power演算器802は、a^Xのべき乗計算を行うためのもので、平方根等の計算も行なう。複合演算器803は、入力引数修飾部800で処理されたデータに対して、「a*X+b*Y+c」の複合演算を行う。この演算式はピクセルの補間処理である平面の方程式の計算に最適化されている。比較器804は、デプステスト、ステンシルテスト、アルファテストやその他のデータの大小比較を行うときに使用する。例えば、アルファテストやデプステストで“Fail”が確定したら、それ以降の描画処理は行なう必要がないので、そのピクセルスレッドは破棄される。
スケール修飾部805は、上記の演算器801〜804による演算結果に対して、1/2倍、2倍、4倍の逓倍処理を行なう。出力修飾部806は、スケール修飾部805による逓倍処理の後に、クランプ処理を行なう。演算を繰り返しているときには途中結果をクランプする必要がないが、最終結果をピクセルキャッシュ407に書き込むときにはクランプ処理を施す。
入力修飾処理部800、演算器801〜804、スケール修飾部805、出力修飾部806の動作は、シェーダプログラム404の命令コードのあるフィールドで定義される。
各演算器のフォーマットとしては、32bitのフル浮動小数点(符号:指数:仮数=1.8.23)、16bitのハーフ浮動小数点(符号:指数:仮数=1.5.10)、または固定小数点等が考えられる。
以上のように、この実施の形態3によれば、図6に示したシェーダコア403の演算器を用いることにより、例えば、OpenGLの拡張機能であるフラグメントプログラム(ピクセルシェーダ)の命令セットや、より高レベルなOpenGLシェーディング言語等にも効率よく対応することができる。
実施の形態4.
以下、この発明の実施の形態4について説明する。図7は、図2のマルチスレッドシェーダ304を並列構成(マルチコア化)にした場合の一例を示す構成図である。図7において、マルチコア化したマルチスレッドシェーダ304は、ピクセルレジスタウインドウ900、クロスバースイッチ901、スレッドスケジューラ902、シェーダプログラム903、定数レジスタ904、シェーダコアモジュール905〜907を備えている。更に、シェーダコアモジュール905〜907は、それぞれシェーダコア403、テクスチャキャッシュ406、ピクセルキャッシュ407を有している。
次に、動作について説明する。図7のマルチスレッドシェーダ304の基本的な動作は、図2のマルチスレッドシェーダ304と同様である。異なるのは、図2の場合は、シェーダコアモジュール(シェーダコア403、テクスチャキャッシュ406、ピクセルキャッシュ407)が1つだったのに対して、図9では複数用意されている。従って、複数のピクセルスレッドが、複数のシェーダコアモジュール905〜907に同時に割り当てらられる。ピクセルレジスタウインドウ900とシェーダコアモジュール905〜907は、クロスバースイッチ901を通して接続されている。従って、ピクセルレジスタウインドウ900のリソース(ピクセルスレッド)を、複数のシェーダコアモジュール905〜907が同時に使用することができる。
以上のように、この実施の形態4によれば、マルチスレッドシェーダ304をマルチコア化することで、ピクセルスレッドの並列処理が可能となる。その結果、容易にピクセル処理のスループットを向上させることができるので、ハードウェア規模が限定される組み込み向け分野向けからハイエンド向けまで、柔軟に幅広く対応することができる。
この発明の実施の形態1に係るマルチスレッド型のピクセルシェーダを用いた図形描画装置の構成図である。 図1中のマルチスレッドシェーダの一例を示す構成図である。 図2中のピクセルレジスタウインドウの一例を示す図である。 マルチスレッドを用いない処理とマルチスレッドを用いた処理の違いを説明するための図である。 図4中のマルチスレッド処理シーケンスにおいて、スレッドスケジューラがピクセルスレッドをどのようにスケジューリングするかを説明するため図である。 図2中のシェーダコアの一例を示す構成図である。 図4のマルチスレッドシェーダを並列構成(マルチコア化)にした場合の一例を示す構成図である。
符号の説明
300 頂点シェーダ、301 ビューポートクリッピング回路、302 セットアップ回路、303 ラスタライザ、304 マルチスレッドシェーダ、305 テクスチャメモリ、306 フレームバッファ、400 ピクセルレジスタウインドウ、401 マルチプレクサ、402 スレッドスケジューラ、403 シェーダコア、404 シェーダプログラム、405 定数レジスタ、406 テクスチャキャッシュ、407 ピクセルキャッシュ、600 シェーダプログラム、601 非マルチスレッド処理シーケンス、602 マルチスレッド処理シーケンス、800 入力引数修飾部、801 除算器、802 Power演算器、803 復号演算器、804 比較器、805 スケール修飾部、806 出力修飾部、900 ピクセルレジスタウインドウ、901 クロスバースイッチ、902 スレッドスケジューラ、903 シェーダプログラム、904 定数レジスタ、905〜907 シェーダコアモジュール。

Claims (6)

  1. テクスチャデータを保存するテクスチャメモリと、
    ピクセルデータを保存するフレームバッファと、
    前記ピクセルデータと前記テクスチャデータとにアクセスしてピクセル単位のピクセルスレッドを生成し、複数の前記ピクセルスレッドを並列処理するマルチスレッドシェーダとを備えた図形描画装置。
  2. 前記マルチスレッドシェーダが、
    前記ピクセルスレッドをスレッド単位で保持するレジスタセットからなるピクセルレジスタウインドウと、
    前記レジスタセットを指定して処理対象のピクセルスレッドを切り替えるスレッドスケジューラと、
    前記処理対象のピクセルスレッドに対して演算処理を実行するシェーダコアとを備え、
    前記処理対象のピクセルスレッドに対して、前記テクスチャデータまたは前記ピクセルデータへのアクセスと、前記シェーダコアでの演算処理とを所定のシーケンスで実行することを特徴とする請求項1記載の図形描画装置。
  3. 前記スレッドスケジューラが、前記ピクセルスレッド毎に前記テクスチャデータまたは前記ピクセルデータへのアクセスと、前記シェーダコアでの演算処理とを切り替えることにより、複数の前記ピクセルスレッドを並列処理することを特徴とする請求項2記載の図形描画装置。
  4. 前記レジスタセットが、
    前記ピクセルスレッド単位で前記ピクセルのXY座標を保持するXYレジスタを備え、
    前記スレッドスケジューラが、前記XY座標を識別子として前記ピクセルスレッドを管理することを特徴とする請求項3記載の図形描画装置。
  5. 前記シェーダコアが、
    入力データに対して所定の修飾処理を行なう入力引数修飾部と、
    前記修飾処理された入力データに対して所定の演算処理を行なう演算器と、
    前記演算処理された入力データに対して所定の逓倍処理を行なうスケール修飾部と、
    前記逓倍処理された入力データに対してクランプ処理を行なう出力修飾部とを備えていることを特徴とする請求項4記載の図形描画装置。
  6. 前記マルチスレッドシェーダが、
    複数の前記シェーダコアを備えていることを特徴とする請求項2から請求項5のうちのいずれか1項記載の図形描画装置。
JP2005142992A 2005-05-16 2005-05-16 図形描画装置 Expired - Fee Related JP4637640B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005142992A JP4637640B2 (ja) 2005-05-16 2005-05-16 図形描画装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005142992A JP4637640B2 (ja) 2005-05-16 2005-05-16 図形描画装置

Publications (2)

Publication Number Publication Date
JP2006318404A true JP2006318404A (ja) 2006-11-24
JP4637640B2 JP4637640B2 (ja) 2011-02-23

Family

ID=37538994

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005142992A Expired - Fee Related JP4637640B2 (ja) 2005-05-16 2005-05-16 図形描画装置

Country Status (1)

Country Link
JP (1) JP4637640B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009110362A (ja) * 2007-10-31 2009-05-21 Sammy Corp 画像生成装置および画像生成プログラム
JP2010515122A (ja) * 2006-12-22 2010-05-06 クゥアルコム・インコーポレイテッド 高速ピクセル・レンダリング処理
JP2010516001A (ja) * 2007-01-10 2010-05-13 クゥアルコム・インコーポレイテッド 3次元グラフィックスパイプラインの自動負荷分散
CN102156959A (zh) * 2010-04-21 2011-08-17 威盛电子股份有限公司 具有多线程执行单元的绘图处理装置及其存储器存取方法
JP4756107B1 (ja) * 2011-02-09 2011-08-24 株式会社ディジタルメディアプロフェッショナル グラフィックス処理装置
JP2012177986A (ja) * 2011-02-25 2012-09-13 Nec System Technologies Ltd 画像描画装置、画像描画方法、及びプログラム
JP2013025823A (ja) * 2011-07-18 2013-02-04 Apple Inc 仮想gpu
JP2014515856A (ja) * 2011-04-13 2014-07-03 クゥアルコム・インコーポレイテッド グラフィック処理のためのピクセル値圧縮
KR20160081503A (ko) * 2014-12-31 2016-07-08 서경대학교 산학협력단 멀티 스레드 그래픽 처리 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000311253A (ja) * 1999-04-28 2000-11-07 Ntt Data Corp 三次元画像生成システム、三次元画像生成方法及び記録媒体
JP2001357410A (ja) * 2000-04-11 2001-12-26 Hewlett Packard Co <Hp> 別々に生成された3次元イメージを合成するグラフィックス・システム
JP2003178293A (ja) * 2001-12-12 2003-06-27 Sony Corp 画像処理装置およびその方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000311253A (ja) * 1999-04-28 2000-11-07 Ntt Data Corp 三次元画像生成システム、三次元画像生成方法及び記録媒体
JP2001357410A (ja) * 2000-04-11 2001-12-26 Hewlett Packard Co <Hp> 別々に生成された3次元イメージを合成するグラフィックス・システム
JP2003178293A (ja) * 2001-12-12 2003-06-27 Sony Corp 画像処理装置およびその方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010515122A (ja) * 2006-12-22 2010-05-06 クゥアルコム・インコーポレイテッド 高速ピクセル・レンダリング処理
US8207972B2 (en) 2006-12-22 2012-06-26 Qualcomm Incorporated Quick pixel rendering processing
JP2010516001A (ja) * 2007-01-10 2010-05-13 クゥアルコム・インコーポレイテッド 3次元グラフィックスパイプラインの自動負荷分散
JP2009110362A (ja) * 2007-10-31 2009-05-21 Sammy Corp 画像生成装置および画像生成プログラム
CN102156959A (zh) * 2010-04-21 2011-08-17 威盛电子股份有限公司 具有多线程执行单元的绘图处理装置及其存储器存取方法
JP4756107B1 (ja) * 2011-02-09 2011-08-24 株式会社ディジタルメディアプロフェッショナル グラフィックス処理装置
JP2012177986A (ja) * 2011-02-25 2012-09-13 Nec System Technologies Ltd 画像描画装置、画像描画方法、及びプログラム
JP2014515856A (ja) * 2011-04-13 2014-07-03 クゥアルコム・インコーポレイテッド グラフィック処理のためのピクセル値圧縮
JP2013025823A (ja) * 2011-07-18 2013-02-04 Apple Inc 仮想gpu
US9727385B2 (en) 2011-07-18 2017-08-08 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
US10120728B2 (en) 2011-07-18 2018-11-06 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
KR20160081503A (ko) * 2014-12-31 2016-07-08 서경대학교 산학협력단 멀티 스레드 그래픽 처리 장치
KR101646194B1 (ko) 2014-12-31 2016-08-05 서경대학교 산학협력단 멀티 스레드 그래픽 처리 장치

Also Published As

Publication number Publication date
JP4637640B2 (ja) 2011-02-23

Similar Documents

Publication Publication Date Title
US10229529B2 (en) System, method and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
JP5242771B2 (ja) 混合精度命令実行を伴うプログラマブルストリーミングプロセッサ
JP4637640B2 (ja) 図形描画装置
US9202303B2 (en) System and method for compositing path color in path rendering
US8970608B2 (en) State objects for specifying dynamic state
US9183609B2 (en) Programmable blending in multi-threaded processing units
US9293109B2 (en) Technique for storing shared vertices
US20090051687A1 (en) Image processing device
TWI645371B (zh) 在上游著色器內設定下游著色狀態
US9953455B2 (en) Handling post-Z coverage data in raster operations
US20190138210A1 (en) Queue manager for streaming multiprocessor systems
US9418616B2 (en) Technique for storing shared vertices
CN106575430B (zh) 用于像素哈希的方法和装置
TW201618041A (zh) 來自片段著色器程式之樣本遮罩的控制
US9477477B2 (en) System, method, and computer program product for executing casting-arithmetic instructions
US9235392B2 (en) System, method, and computer program product for improved power efficiency during program code execution
US9269179B2 (en) System, method, and computer program product for generating primitive specific attributes
CN110728616A (zh) 图形处理单元内处理核心的图块分配
TWI601096B (zh) 用於細分表面的直接和互動式射線追蹤之方法及設備
TW201435581A (zh) 透過管線狀態繫結觸發的效能事件擷取
US20180158233A1 (en) System and method for generating temporally stable hashed values
TW201709085A (zh) 處理需要相加數個乘法結果之指令
US20150084952A1 (en) System, method, and computer program product for rendering a screen-aligned rectangle primitive
US9214008B2 (en) Shader program attribute storage
KR100791478B1 (ko) 정점 처리를 위한 인코딩 장치, 디코딩 장치 및 그 방법

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20071009

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080313

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100824

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101013

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: 20101116

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101124

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4637640

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees