説明

グラフィック処理システム

【課題】グラフィック処理システムにおける累積バッファ動作を提供する。
【解決手段】グラフィック処理システムの累積バッファ工程は、全体で累積されたフレームを構成する各サブフレームを順繰りにレンダリングすることによりではなく、累積されたフレームを構成する各個々のタイル2、3、4、及び5に異なるレンダリングパスの系列を個々に経験させることにより実行される。従って累積されたフレームを構成する各個々のタイルに関して、いくらかのサブタイル(例えば2'、2''、2'''、及び2'''')は順繰りに生成され、問題のタイルの累積されたバージョンとして出力される最終累積タイル(2acc)を提供するのに1つに累積される。これは累積されたフレーム1を構成している残りの個々のタイル3、4、及び5のそれぞれに関して反復され、個々の累積されたタイル2acc、3acc、4acc、及び5accは出力の累積されたフレーム6を提供するのに1つに結合される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィック処理システム、そして、特にグラフィック処理システムにおけるいわゆる“累積バッファ”動作に関係する。
【背景技術】
【0002】
当該技術において知られているように、グラフィック処理には、一般的に“累積バッファ”と言われる工程がある。例えば、この工程は、デスクトップOpenGL標準の一部分である、周知の特徴である。
【0003】
“累積バッファ”工程は、基本的に、例えばいくらかの異なる視角が提供する“フレーム”のいくらかの異なるバージョンをレンダリングすると共に、フレームの全ての異なるレンダリングされた所望の加重平均のバージョンを、1つのバッファ(前記“累積バッファ”)に累積することを必要とする。異なるフレームのこの結果として生じる“累積バッファ”の平均されたバージョンは、その場合に、出力フレームとして(そして例えば通常表示されるべきフレームとして)使用される。
【0004】
“累積バッファ”は、概して、例えば被写界深度(depth of field)、モーションブラー(motion blur)、ソフトシャドウ(soft shadow)、及びアンチエイリアシング(anti-aliasing)のような、多くの異なる効果をエミュレートするために使用される。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第7023437号明細書
【特許文献2】英国特許出願公開第2343598号明細書
【特許文献3】国際公開第2009/068895号明細書
【特許文献4】英国特許出願公開第2420679号明細書
【特許文献5】米国特許第6252610号明細書
【非特許文献】
【0006】
【非特許文献1】Tomoyuki Nishita, Eihachiro Nakamae, 「Method of Displaying Optical Effects within Water using Accumulation Buffer」, ACM SIGGRAPH '94, July 24-29, Orlando, Florida, Copyright(C) ACM 1994 ISBN:0-89791-667-0
【非特許文献2】Paul Haeberli, Kurt Akeley, 「The Accumulation Buffer: Hardware Support for High-Quality Rendering」, ACM Computer Graphics, Volume 24, Number 4, August 1990, Copyright(C)1990 ACM-0-89791-344-2/90/008/0309
【発明の概要】
【発明が解決しようとする課題】
【0007】
“累積バッファ”を用いる1つの欠点は、現存する実装において、それが、累積バッファとして機能する(グラフィックプロセッサの)外部のフルフレーム浮動小数点バッファの使用を必要とすることである。これは、より強力なデスクトップグラフィック処理システムの場合には許容され得る一方、本出願人は、そのような装置が、携帯機器における使用のための内蔵されたグラフィック処理システム及び/または複数のグラフィック処理システムのような、より低い電力を供給されるグラフィック処理システムにおいて望ましくないということを認識した。実際には、この理由及び他の理由のために、例えば、OpenGLES標準は、累積バッファの使用を含まない。
【0008】
本出願人は、従って、グラフィック処理システムにおける累積バッファの動作及び実装に、改良の余地が残っていると思量する。
【課題を解決するための手段】
【0009】
本発明の第1の特徴によれば、フレームに関するいくらかのレンダリングパスの累積された結果を、タイルベースのグラフィック処理システムにおける出力フレームとして提供する方法であって、前記方法は、各タイルに関して、前記タイルに関する前記レンダリングパスの前記累積された結果を含む出力タイルを生成するために、そして、前記レンダリングパスの全て、及びそれらのレンダリングパスの前記結果の前記累積が、その工程が他のタイルのために始められる前に少なくとも1つのタイルに関して完了するように、前記いくらかのレンダリングパスを実行し、前記出力フレームが個別に分割されることになっている各タイルに関して、それらのレンダリングパスの前記結果を累積する段階と、前記フレームに関する前記いくらかのレンダリングパスの前記累積された結果を含む前記出力フレームを提供するために、そのように生成された前記出力タイルを結合する段階とを含むことを特徴とする方法が提供される。
【0010】
本発明の第2の特徴によれば、タイルベースのグラフィック処理システムであって、各タイルに関して、前記タイルに関するレンダリングパスの累積された結果を含む出力タイルを生成するために、そして、前記レンダリングパスの全て、及びそれらのレンダリングパスの前記結果の前記累積が、その工程が他のタイルのために始められる前に少なくとも1つのタイルに関して完了するように、前記いくらかのレンダリングパスを実行し、出力フレームが個別に分割されることになっている各タイルに関して、それらのレンダリングパスの前記結果を累積するための手段と、各タイルに関する前記いくらかのレンダリングパスの前記累積された結果を含む出力フレームを提供するために、そのように生成された前記出力タイルを結合するための手段とを備えることを特徴とするタイルベースのグラフィック処理システムが提供される。
【0011】
本発明の第3の特徴によれば、タイルベースのグラフィック処理システムを操作する方法であって、前記グラフィック処理システムが、出力されるべきフレームの第1のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに複数のレンダリングパスを個別に実行し、前記タイルに関して、または前記タイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積する段階と、前記タイルに関する、または前記タイルのセットの各タイルに関する前記累積されたタイル出力を、出力レンダーターゲット(output render target)、好ましくはフレームバッファに対して出力する段階と、その後に、出力されるべき前記フレームの第2のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに前記複数のレンダリングパスを個別に実行し、前記第2のタイルに関して、または前記第2のタイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積する段階と、前記第2のタイルに関する、または前記第2のタイルのセットの各タイルに関する前記累積されたタイル出力を、前記出力レンダーターゲット、好ましくは前記フレームバッファに対して出力する段階と、前記出力フレームの残りのタイルに関してこの工程を反復する段階とを含み、それによって、前記出力フレームに関するいくらかのレンダリングパスの前記累積された結果を含む出力フレームが、いくらかのレンダリングパスを実行すると共に、タイル毎ベースでそれらのレンダリングパスの結果を累積することによって生成されることを特徴とする方法が提供される。
【0012】
本発明の第4の特徴によれば、タイルベースのグラフィック処理システムであって、出力されるべきフレームの第1のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに複数のレンダリングパスを個別に実行し、前記タイルに関して、または前記タイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積すると共に、前記タイルに関する、または前記タイルのセットの各タイルに関する前記累積されたタイル出力を、出力レンダーターゲット、好ましくはフレームバッファに対して出力するための手段と、その後に、出力されるべき前記フレームの第2のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに前記複数のレンダリングパスを個別に実行し、前記第2のタイルに関して、または前記第2のタイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積すると共に、前記第2のタイルに関する、または前記第2のタイルのセットの各タイルに関する前記累積されたタイル出力を、前記出力レンダーターゲット、好ましくは前記フレームバッファに対して出力するための手段と、前記出力フレームの残りのタイルに関してこの工程を反復するための手段とを備え、それによって、前記出力フレームに関するいくらかのレンダリングパスの前記累積された結果を含む表示するための出力フレームが、いくらかのレンダリングパスを実行すると共に、タイル毎ベースでそれらのレンダリングパスの結果を累積することによって生成されることを特徴とするタイルベースのグラフィック処理システムが提供される。
【0013】
本発明は、上述のように、フレームに関する複数のレンダリングパスの累積された結果である出力フレームの供給、すなわち“累積バッファ”の動作に関係する。
【0014】
しかしながら、何度も相次いで全てのフレームをレンダリングすると共に、結果を累積することによって“累積された”出力フレームを生成するよりむしろ、本発明では、累積動作は、タイル毎ベースで実行されると共に、そのように累積されたタイルは、出力の“累積された”フレームを提供するために結合される。すなわち、複数のレンダリングパス及びそれらの結果の累積は、個別に各タイルに関して実行されると共に、各個別のタイルの結果は、その場合に、出力の“累積フレーム”(例えばそれは表示されることになる)を提供するために結合される。
【0015】
従って、本発明は、任意のタイルに関して、そのタイルに連続して複数のレンダリングパスを経験させる共に、タイルに関して、個別にそれらのレンダリングパスの結果を適切な(希望)の方法で累積することによって機能する。
【0016】
従って、実際には、もし従来の累積バッファの実装において、任意の“サブフレーム”を生成するために、次の“サブフレーム”が開始される前に(そして全体のフレームに次のレンダリングパスを経験させる前に)、任意のレンダリングパスが全体のフレーム(すなわちフレームの全てのタイル)を横断して実行されると考えられるならば、本発明におけるレンダリングの順序は、その代りに、(フレームの全てのタイルを横断するよりむしろ、)システムが次のタイル(または、タイルのセット)に動いて、そしてそのタイル(またはタイルのセットのタイル)に一連のレンダリングパスを実行する前に、一連のレンダリングパスが、最初に、任意のタイル(またはタイルのセットのタイル)に相次いで実行されることになり、この処理が繰り返される。従って、実際には、別のタイル(または、タイルのセット)が開始される前に、任意のタイル(または、タイルのセット)に関する各“サブタイル”がレンダリングされ(累積され)ることになる。
【0017】
従って、本発明では、特に、上述のように、レンダリングパス及びそれらのレンダリングパスの結果の累積は、その工程が出力フレームの他のタイルに関して開始される前に、少なくとも1つのタイルに関して(及び好ましくは少なくともいくらかのタイルに関して(すなわち複数のタイルに関して))完了する。すなわち、本発明では、累積工程は、全体として各全体のフレームを処理するよりむしろ、他のタイルに進む前に、1つ(または複数)のタイルに関して終了する。
【0018】
同様に、従来の累積バッファ動作では、最終の累積された出力フレームが、最終の出力フレームに共に貢献するいくらかのサブフレームの累積から構成されるのに対して、本発明は、最終の累積された出力タイルを提供するために一緒に累積される任意のタイル及びいくらかのサブタイルに関する処理として見なされ得る。(その場合に、それは、全体の出力フレームを提供するために、フレームバッファに出力されると共に、他のタイルのそれぞれに関する出力の累積されたタイルと結合される。)
【0019】
本出願人は、本発明の装置が多くの利点を授与し得るということを認識した。
【0020】
第一に、累積動作が個別のタイルに関して実行されるので、それは、“累積バッファ”動作のために、フルフレーム“累積バッファ”を持つ必要性を取り除く。
【0021】
更に、以下で更に論じられることになるように、本発明は、(例えば、そして好ましくは、いずれにしても存在することになるタイルバッファのような)グラフィックプロセッサ自身に存在するバッファを使用して累積工程が実装されることを可能にする。その場合に、これは、累積バッファ工程の一部分としてのあらゆる外部メモリ(及び外部メモリアクセス)の必要性を取り除く。その場合に、これは、累積バッファ動作のための外部メモリの帯域幅の除去に関して、有意の節約を提供することができる。例えば、これは、外部の累積バッファを使用する従来の累算器バッファの実装と比べると、有意の電力使用の節約、及び増加したレンダリング速度につながり得る。
【0022】
実際には、本出願人は、本発明が、従来の累積バッファの実装とは対照的に、例えば携帯機器内の、より低い電力を供給されるグラフィック処理システム上で、累積バッファ動作を能率的に実施することを可能にすると思量する。更に、例えば携帯機器内のような、より低い電力供給状態における累積バッファ工程の使用を容易にすることは、そのような機器における有意のグラフィック性能の増加を可能にすることになる。
【0023】
上で論じられたように、本発明は、タイルベースのグラフィック処理システムにおいて実行されることを意図している。
【0024】
当該技術において知られているように、タイルベースレンダリングにおいて、レンダリング工程の2次元の出力配列または出力フレーム(“レンダーターゲット(render target)”)(例えば、及び典型的に、それはレンダリングされた場面を表示するために表示されることになる)は、レンダリング工程において通常は“タイル”と呼ばれる複数の小領域またはサブ領域にサブ分割またはサブ区分される。タイル(サブ領域)は、それぞれ別々に(概して相次いで)レンダリングされる。レンダリングされたタイル(サブ領域)は、その場合に、例えば表示するための完全な出力配列(出力フレーム)(レンダーターゲット)を提供するために、再結合される。
【0025】
それらのタイルは、従って、レンダリング工程がその上で動作するレンダーターゲット領域(出力フレーム)のサブ分割と考えられ得る。そのような装置において、レンダーターゲット領域(出力フレーム)は、概して、規則正しいサイズに分割されると共に、成形されたタイル(それらは、通常、例えば正方形かまたは長方形である)であるが、しかし、これは、不可欠ではない。
【0026】
“タイリング”レンダリング及び“タイルベース”レンダリングに関して一般的に使用される他の用語は、“チャンキング”(サブ領域は“チャンク”と呼ばれる)、及び“バケット”レンダリングを含む。用語“タイル”及び“タイリング”は、ここでは便宜上使用されることになるが、しかし、これらの用語が全ての選択肢、同義語、および技術を包含することを意図すると理解されるべきである。
【0027】
本願発明においてレンダーターゲット(出力フレーム)がレンダリング目的のために分割されるタイルは、あらゆる所望のサイズや形状、及びあらゆる適当なサイズや形状であり得る。不可欠ではないが、当該技術において示されているように、タイルは、全て同じ大きさ及び形状であることが望ましい。好ましい実施例において、各タイルは、矩形であると共に、サイズにおいて、好ましくは、16×16、32×32、または16×8のサンプリング位置(sampling position)を有する。
【0028】
特に好ましい実施例においては、本願発明の目的のためにフレームが分割されるタイルは、レンダリング工程がその“通常の”レンダリング動作において影響することになるタイルに等しいか、またはそのタイルに類似している一方、本願発明は、必要に応じて“通常の”レンダリングタイルと異なるサイズ及び/または形状のタイルを使用して実行され得るということが、ここでは更に注意されるべきである。例えば、本願発明の“累積バッファ”工程が影響する“タイル”は、必要に応じて複数の“レンダリングタイル”または“レンダリングタイル”のサブ領域を含み得る。
【0029】
上述のように、本願発明の重要な特徴は、複数のレンダリングパス及びそれらのレンダリングパスの結果の累積が、次のレンダリングパスが開始される前に全てのフレームを横断して各レンダリングパスを実行することによってよりむしろ、タイル毎ベースで実行される、ということである。すなわち、任意のタイルは、例えば、特にそのタイルに関する次のレンダリングパスが実行される前に任意のレンダリングパスが全てのタイルに関して(全てのフレームに関して)実行されるのを待つことよりむしろ、その結果が即座の連続において相次いで累積されることになっている複数のレンダリングパスを経験させられることになる。
【0030】
従って、処理されている任意のタイルに関して、問題のタイルに関する次のレンダリングパスを開始する前に先行するレンダリングパスが他のすべてのタイルに関して完了するのを待つよりむしろ、一度そのタイルに関する先行するレンダリングパスが終了したならば、そのタイルに関する次のレンダリングパスが開始されることになる。(この効果は、上述のように、出力フレームを生成する工程の間に、タイルの内の少なくとも1つに関するレンダリングパス及び累積が、少なくとも他の1つのタイルに関するレンダリングパス及び累積が開始される前に完了することになる、ということであるだろう。(実際には、いくらかのタイルに関する、及び通常は多数のタイルに関するレンダリング工程及び累積工程が、それがタイルの他のものに関して開始される前に完了することになる。))
【0031】
最も好ましくは、処理されている任意のタイルに関する次のレンダリングパスは、そのタイルに関する前のレンダリングパスが完了するとすぐに開始される。しかしながら、これは本質的ではないと共に、例えば以下で論じられるように、複数のタイルを並列に処理すること、及び/または、異なるタイルの処理をインタリーブすることが可能であろう。この場合、任意のタイルに関する次のレンダリングパスが開始される前に、別のタイルがレンダリングパスを経験させられることになり得る。(しかし、それは、まだ、他のタイルが開始される前に1つ以上のタイルが完了する場合であろう。)
【0032】
最も好ましくは、1つのタイル(またはタイルのセット)は、次のタイル(またはタイルのセット)が開始される前に、(その最終の累積された出力を提供するために)完了まで処理される。同様に、好ましくは、現在処理されているタイル(またはタイルのセット)が完全に終了するまで、未処理のタイル(またはタイルのセット)は開始されない。(前のタイル(またはタイルのセット)が完了まで処理されるまで、次のタイル(またはタイルのセット)は開始されない。)(更に、上述のように、代替装置において、必要に応じて、前のタイル/タイルのセットが終了する前に、次のタイル/タイルのセットを開始することが可能であろう。)
【0033】
特に好ましい実施例において、各タイルは、1つずつ順繰りに処理され、すなわち、それらのタイルは、相次いで順繰りに、複数のレンダリングパスと累積工程を全て受ける。この場合、各個々のタイルは、好ましくは、次のタイルが開始される前に、完了する(十分に累積される)ことになる。
【0034】
別の好ましい実施例において、複数のタイル(複数のタイルのセット)が、同時にレンダリング工程と累積工程を受け得ると共に、好ましくは同時にレンダリング工程と累積工程を受ける。例えば、そして好ましくは、2つのタイルが、本発明の方法において処理を同時に受け得る。例えば、2つのタイルの処理はインタリーブされ得る。
【0035】
この場合、出力の累積されたフレームを構成するタイルは、事実上、(上述のように)タイルのセットにおいて処理されていると考えられ得ると共に、各セットは、全てとは限らないが、出力フレームを構成する2つ以上(好ましくは2つ)のタイルを含んでいる。各そのようなタイルのセットは、その場合に、好ましくは次のセットが開始される前に1つのセットが完了する処理によって、順繰りに処理されることになる。
【0036】
必要に応じて、他の装置が可能であろう。例えば、実際には、それらのタイルは相互から独立しているので、上述のように、異なるタイルを並列に処理するか、及び/または、例えば並列処理の速度を増加させるために、必要に応じて、異なるタイルをインタリーブ方式で処理することが可能であろう。この場合、前のタイル(またはタイルのセット)が終了する前に、次のタイル(またはタイルのセット)が開始され得る。それは、同様に、例えば、タイル処理のためのメカニズムが、時には、例えば異なるタイルに関する命令が並列に処理される、オーバーラップするタイルの処理になり得るような場合であり得る。しかしながら、これらの装置においてさえも、それは、まだ、他のタイルが開始される前に1つ以上のタイルが完了する場合であろう。
【0037】
各タイルに対して実行さるべきであるレンダリングパスは、あらゆる適当な、そして所望の方法で実行され得る。認識されることになるように、表示されるべきフレームに関する累積バッファ動作を必要とするあらゆるアプリケーションに関して、グラフィックプロセッサは、典型的に、レンダリングパスの所望の系列を実行するように指示されることになり、従って、本発明においては、それは、各タイルに対して実行されるべきである所望の(定義された)レンダリングパスのこの系列である。レンダリングパスは、通常、累積バッファ動作に関して、当該技術において知られているように、例えば、異なる視角から見られた任意の場面、及び/または、異なる照明条件に支配された任意の場面、及び/または、空間的にジッタした(その位置が動かされた)任意の場面のような、異なるフレームをレンダリングする。従って、好ましい実施例において、レンダリングパスは、複数の異なるフレームをレンダリングすると共に、それは、次に、出力の累積されたフレームを提供するために累積される。
【0038】
レンダリングパスは、好ましくは、グラフィック処理システムの通常の方法で、もしくは、グラフィック処理システムのための通常の方法で実行される。従って、好ましくは、あらゆる任意のレンダリングパスに関して、タイルがレンダリングされることになると共に、適切なレンダリングされた出力タイルが生成される。(それは、例えば、そして好ましくは、少なくとも当初は、グラフィックプロセッサのタイルバッファ内に格納されることになる。)これは、問題になっている累積された出力フレームのために必要とされる(定義された)一連のレンダリングパスにおける各レンダリングパスに関して、反復されることになる。上述のように、各レンダリングパスは、出力される全体の“累積された”タイルの“サブタイル”を生成すると見なされ得る。
【0039】
認識されることになるように、それによって任意のタイルに関する各レンダリングパスの結果が累積され得る(すなわち、任意のタイルに関して生成された“サブタイル”を累積するための)メカニズムが必要とされることになる。これは、従来の“累積バッファ”装置における累積バッファに関する必要条件に類似しているが、しかし、フルフレームバッファである必要がある(すなわち、全てのフレームに関してレンダリング結果を同時に格納することができる)代わりに、本発明は、単一のタイル(または複数のタイルのセット)が同時に格納されることだけを必要とすることになる。従って、本発明における“累積バッファ”は、タイル(またはタイルのセット)“累積”バッファ(すなわちタイル(またはタイルの適切なセット、ここで本発明は複数のタイルのセットを同時に処理する)に関するレンダリング結果を累積することができるような大きさに作られたバッファ)であることだけを必要とすることになる。
【0040】
このタイル“累積”バッファは、あらゆる適当な、そして所望の方法において提供され得る。例えば、それは、更に、従来の累積バッファの実装と類似の方式で、従来よりはるかに小さいが、外部のバッファとして提供され得る。
【0041】
しかしながら、特に好ましい実施例において、そして上述のように、タイル“累積”バッファは、グラフィックプロセッサによってオンチップで(on-chip)(好ましくはグラフィックプロセッサの内部に)提供される。上述のように、これは、それが、累積工程のためのあらゆる外部メモリアクセス及び外部メモリの帯域幅の必要性を排除することができるので、有利である。更に、それが、累積工程と累積バッファのグラフィックプロセッサ自身によるチップ上の実装を容易にすることが、本発明の鍵となる利点である。この場合、グラフィックプロセッサは、従って“タイルバッファ”及び“累積バッファ”の両方を有していることになる。
【0042】
従って、本発明の第5の特徴によれば、タイルベースのグラフィックプロセッサを作動させる方法であって、前記グラフィックプロセッサが、出力されるべきフレームのタイルに対して一連の複数のレンダリングパスを実行すると共に、それらのレンダリングパスの結果を前記グラフィックプロセッサのメモリに累積する段階と、一度それが一連のレンダリングパスを完了し、それらのレンダリングパスの結果を累積したならば、前記タイルに関する累積された結果をフレームバッファに出力する段階とを含むことを特徴とする方法が提供される。
【0043】
本発明の第6の特徴によれば、タイルベースのグラフィックプロセッサであって、メモリと、出力されるべきフレームのタイルに対して一連の複数のレンダリングパスを実行すると共に、それらのレンダリングパスの結果を前記グラフィックプロセッサの前記メモリに累積するための手段と、一度一連のレンダリングパスが完了し、それらのレンダリングパスの結果が累積されたならば、前記タイルに関する累積された結果をフレームバッファに出力するための手段とを備えることを特徴とするタイルベースのグラフィックプロセッサが提供される。
【0044】
当業者によって認識されることになるように、本発明のそれらの特徴は、必要に応じて、ここで説明されたあらゆる本発明の好ましい特徴及び任意の特徴の1つ以上または全部を含むことができるか、あるいは好ましくは含む。従って、例えば、複数のレンダリングパス及び累積工程は、好ましくは、累積された出力フレームを構成する各タイルまたは複数のタイルの各セットに関して順繰りに実行される。同様に、レンダリングパスの結果が累積されたグラフィックプロセッサのメモリは、(以下で論じられたように、)好ましくは、グラフィックプロセッサのタイルバッファを含む。
【0045】
タイル累積バッファがグラフィックプロセッサ自身に提供される場合、その場合には、それは、例えば、グラフィックプロセッサ上に適当な追加のバッファ(メモリ)を提供することによって達成される。例えば、累積バッファは、“通常の”グラフィック処理ユニットの外側にあるオンチップブロックとして提供されるであろう。これは、例えば、この目的のために新しいバッファを追加することができる新しいプロセッサ上で行われ得る。
【0046】
しかしながら、特に好ましい実施例において、タイル累積バッファは、その目的のためのグラフィックプロセッサの現存するメモリを使用することによって(すなわち、それが既に存在する別の機能を有しているので、いずれにせよ存在する、及び存在することになるグラフィックプロセッサのメモリを使用することによって)、グラフィックプロセッサ上に提供される。
【0047】
特に好ましいそのような装置において、どんなことがあってもグラフィックプロセッサ上に存在するであろうタイルバッファは、本発明を実施する場合に使用されるべき“タイル累積”バッファを格納するためのメモリとして使用される。
【0048】
従って、特に好ましい実施例において、グラフィックプロセッサのタイルバッファは、(通常の)タイルバッファ及びレンダリングされたタイルに関して累積された“タイル”の両方を格納する能力があり得る、及び好ましくは格納することができる(そして格納するように構成される)。
【0049】
これらの装置において、少なくとも本発明は、グラフィックプロセッサの現存する(既に必要とされて提供されている)ロジックを用いて、すなわち追加費用なしで、実施され得る。同様に、本発明のこれらの装置は、(それらが追加のロジック(ハードウェア)を全く必要としないので)現存するグラフィックプロセッサ上で少なくとも実施され得ると共に、従って、本発明は、現存するグラフィック処理システムと互換性があり、そして現存するグラフィック処理システム上で実施され得る。
【0050】
既にグラフィックプロセッサのタイルバッファのような現在のメモリが本発明の工程におけるタイルに関する結果を累積するために使用されることになっているこれらの装置において、そして、当業者によって認識されることになるように、タイル(またはタイルのセット)に関する結果を累積するためのメモリには余裕があることを保証することが必要であり得る。
【0051】
必要に応じて、これは、あらゆる所望の、そして適当な方法において実行され得る。例えば、その場合に、実行されるマルチサンプリングの量は、それが例えばタイルバッファにおける余裕を解放するように、例えば4倍(4×)から2倍(2×)にまで減少する(例えば、そして好ましくは、2等分される)であろう。例えば、4つのFP16値(FP16-value)は、2つのRGBA8888バッファと同じ記憶量を使用することになり、従って、4倍(4×)から2倍(2×)まで、そのような装置におけるマルチサンプリングの量を減少させることによって、“解放された”(もはや使用されない)サンプル(それらのサンプルのためのスペース)は、累積された“タイル”を格納するために使用されるであろう。1つの好ましい実施例において、これは実行される。
【0052】
もう1つの方法として、マルチサンプル(タイル当たりに格納されるサンプル)の数を減少させる代りに、“累積”タイルのためのタイルバッファの“余裕”を提供するために、実際には、タイルの大きさが減らされる(例えば、そして好ましくは2等分される)であろう。例えば、16×16サンプリング点のサイズのタイルバッファを通常使用するシステムにおいて、本発明を実施する場合には、16×8のタイルサイズがその代りに使用されるであろう。実際には、これは、一方の半分が16×8の“通常の”タイルバッファになり、そしてもう一方の半分がタイルに関する16×8の“累積”バッファになるように、16×16タイルのためのタイルバッファを2つに分割するであろう。この場合、例えば、本発明を使用する場合に、より高いレベルのマルチサンプリングが維持される(すなわち減らされない)と共に、より高いレベルの精度(例えば32ビット値)が累積バッファに関して使用されるであろうが、しかし、それらのフレームは、更に小さなタイルサイズを用いて処理されるであろう。
【0053】
従って、別の好ましい実施例において、本発明が使用されている場合、グラフィック処理システムが影響を与えるタイルのサイズは、それが使用することになっている(そして例えばそのタイルバッファが扱うように構成される)“通常の”タイルサイズと比較して、好ましくは半分に減らされる。
【0054】
(グラフィック処理システムがフレームを処理するために本発明の方法において動作している場合に、本発明を実施するために必要である上述の(そして他の)工程及び技術だけが使用されることに、ここでは注意されるべきである。グラフィック処理システムは、そうでない場合は、(例えばフレームに関してバッファ動作の累積を必要としない)通常の動作を行う。)
【0055】
本発明における任意のタイルに関するレンダリングパスの結果を累積する工程は、あらゆる適当な、そして所望の方法において実行され得る。
【0056】
例えば、問題とされるレンダリングパスは、そのレンダリングパスに関して(上述のように)適切にレンダリングされたサブタイルを生成するために、全てのタイルに関して完了され、そして、その“サブタイル”が一度完了すると適切に“累積タイル”(バッファ)に加えられるであろう。これは、全体のサブフレームがレンダリングされると共に、次に“累積パス”におけるアキュムレータバッファに加えられる従来のアキュムレータバッファ動作と類似しているであろう。
【0057】
従って、本発明は、1つの好ましい実施例において、これを行うと共に、累積パスステージを使用するか、あるいは含み、すなわち、それがタイルに関するレンダリングパスを完了する場合に、その場合に、それは、その結果生じるレンダリングされた“サブタイル”を、“累積パス”における(そのタイルのための)“タイル”累積バッファに加える。
【0058】
この場合、例えば“累積パス”(レンダリングされた“サブタイル”から“累積バッファ”にデータが動くこと)は、望まれたように、例えば、そして好ましくは、グラフィックプロセッサのタイルライトバックロジック(tile writeback logic)またはシェーダ(shader)を使用することによって、実行され得る。
【0059】
別の特に好ましい実施例においては、そのサブタイル(レンダリングパス)に関する結果を累積する前に、タイルに関する全体のレンダリングパスが完了する(全てに関して、最終の“サブタイル”が生成される)のを待つよりむしろ、好ましくは、レンダリングパスが進行すると、累積タイル(バッファ)は、連続的に更新される。
【0060】
この場合、レンダリングパスを完了すると共に、その後、その結果生じるサブタイルをそのステージにおいて累積するよりむしろ、レンダリングパスが進行すると、タイルに関するレンダリング結果は、タイル累積バッファに効果的に加えられることになる。これは、従って、実際には、レンダリングされた各“サブタイル”の間の個別の“累積パス”の必要性を除外することになり、それは有利であり得る(例えば、累積パスが最初に完了することを待たなければならないよりむしろ、次のサブタイルが即座に開始されることを可能にすることになる)。
【0061】
これは、要望通りに実行されるかもしれないが、しかし、特に好ましい実施例において、サンプリング位置がレンダリングパスにおいてレンダリングされるたびに、累積バッファ(タイル)は、必要に応じて更新される。
【0062】
すなわち、レンダリングパスの間にサンプリング位置の(任意の場合の)レンダリングが完了する場合、累積バッファにおける問題のレンダリングパス(サブタイル)に関するそのサンプリング位置の累積された値は、判定されるべきそのサブタイル(レンダリングパス)に関するそのサンプリング位置の最終値を待つことなく、必要に応じて、更新される
【0063】
好ましくは、累積バッファは、必要に応じて、各サンプリング位置に関するレンダリング結果、または(同時に複数のサンプリング位置が与えられる場合)複数のサンプリング位置のレンダリング結果によって、そのサンプリング位置または複数のサンプリング位置に関する新しいレンダリング結果が生成されるたびに更新される。
【0064】
レンダリングが進行すると累積バッファが更新されるこれらの装置には、例えばレンダリングされたタイルの完成されたバージョンの中に(問題の“サブタイル”の最終バージョンの中に)、それらのサンプリング点に関する後でレンダリングされた値と交換されることになる、レンダリングパスの間にレンダリングされたサンプリング点に関して生成された値があり、オーバードロー(over-draw)のせいで、レンダリングパスにおいて、実際には、初期のサンプリング点の値は、後のサンプリング値によって見えなくされる(occluded)、ということを出願人は認識した。
【0065】
更に、累積バッファが、実際には、他のサブタイル(レンダリングパス)を有する問題のサブタイルの最終バージョン(レンダリングパスの最終結果)だけを累積するべきであるので、任意のサンプリング点に関する全ての中間のレンダリングされた値を累積バッファに完全に累積できるというわけではない。
【0066】
それが実際には誤った値を累積する累積バッファになり得るので、本発明のこれらの装置における累積バッファに、サンプリング位置に関する各々そして全ての新たにレンダリングされた値を単に累積することは、従って適切ではないかもしれない。
【0067】
従って、特に好ましい実施例において、そのシステムは、レンダリングされたサブタイルにおける各サンプリング位置の現在の値(すなわちタイルバッファに現在格納されている値)のみが累積バッファに印加される(累積バッファに累積される)ことを保証するように構成されて、そして操作される。
【0068】
タイルバッファがレンダリングされているサブタイルの現在のバージョン(すなわち時間通りにその瞬間において累積バッファに累積されるべきであるサブタイルのバージョン)を常に保持するべきであるので、もしその場合に、累積バッファがあらゆる任意のサンプリング位置に関する“現在の”タイルバッファの値(だけ)を累積したことが確認されるならば、たとえもし、サブタイルのレンダリングがまだ終了していないとしても、累積バッファは、(時間通りその瞬間に)常に正しいはずであると共に、サブタイル(レンダリングパス)が終了するときに正しくなるであろう。
【0069】
これは、“サブタイル”がレンダリングされているので、累積が実行されているとしても、例えば全てのオーバードローの状況が正しく処理されることを保証するべきであると共に、従って、まるで(累積パスを有する)累積バッファに関する“通常の”手順に従っていたかのように、同じ累積出力が生成されるであろうように、生成されることになることを保証する。
【0070】
これらの装置において、レンダリングされたサンプリング位置は、(すなわち、それらが現存するタイルバッファ値に取って代わるべきであるとき、そして、もしそれらが現存するタイルバッファ値に取って代わるべきであるならば、例えば、それらが、それらのサンプリング位置に関して格納された現存するフラグメントを見えなくするので、)好ましくは、基準としてタイルバッファに書き込まれる。
【0071】
従って、そのシステムは、好ましくは、レンダリングパスが通常の方法で進行するとタイル(サブタイル)に関するタイルバッファを生成すると共に、その場合に、それが、常に、問題のレンダリングパス(サブタイル)に関する任意のサンプリング位置のための累積バッファに印加されたタイルバッファの現在の値であることを保証するように操作される。
【0072】
本発明のこれらの装置の特に好ましい実施例においてではあるが、これは、要望通りに達成され得る。新たにレンダリングされた値が、レンダリングされているサブタイルに関するサンプリング位置に書き込まれるべきである場合に、問題のサブタイルにおけるそのサンプリング位置に関する現在の値が、最初に累積バッファから適切に(すなわち適切な重み付けによって)取り去られると共に、新たにレンダリングされた値が、その場合に、累積バッファに適切に加えられる。これは、それによって、それが、実際には累積バッファに印加されている、サブタイルにおけるサンプリング位置に関する“現在の”値のみであることを保証するべきである。
【0073】
そのような好ましい実施例において、サンプリング位置に関して新しくレンダリングされた値が、サブタイルにおいてそのサンプリング位置に関して使用されている現存する値に取って代わるか否かが最初に判定されると共に、新しい値が現存する値に取って代わる場合にだけ、累積バッファは、新しい値によって更新される。(例えば、そして好ましくは、当該技術において知られている適当な深さ(Z)の検査(比較)を使用することによって、サンプリング位置に関して新しくレンダリングされた値がそのサンプリング位置に関して現存する値に取って代わるか否かが、必要に応じて判定され得る。)
【0074】
必要に応じて、そのような装置は達成され得るが、しかし、特に好ましい実施例において、そのような装置は、レンダリングされているサブタイルのサンプリング位置または複数のサンプリング位置をカバーする新しいフラグメントがレンダリングパイプラインから抜け出る場合に、新しいフラグメントによってカバーされたサンプリング位置に関する現存するタイルバッファ値を、それらのサンプリング位置に関する累積バッファから適切に取り去ると共に、次に、新しいフラグメントによってカバーされた(複数の)サンプリング位置に関する(新しくレンダリングされた)(複数の)タイルバッファ値を、それらのサンプリング位置に関する累積バッファに適切に加える(累積する)ことによって実行される。
【0075】
(当該技術において知られているように、レンダリング工程は、概して、それに関して(シェーディングのような)グラフィックレンダリング動作が実行される“フラグメント”と通常言われる個別のグラフィックエンティティとして画像を表示するように、処理されているサンプリング点を“表す”ことによって実行される。実際には、各サンプリング点は、問題のサンプリング点に陰影を付けるために使用されるであろうフラグメントで表されることになる。フラグメントは、単一のサンプリング点または複数のサンプリング点を表し得る(それに関連付けたかもしれない)。その結果、“フラグメント”は、レンダリング工程(レンダリングパイプライン)を経験するグラフィックエンティティである。)
【0076】
そのような好ましい別の実施例において、サンプリング位置がレンダリングされるべきである場合、問題のサブタイルのためのそのサンプリング位置に関する累積バッファに印加される現在の値は、そのサンプリング位置に関する累積バッファ値から適切に取り去られると共に、次に、サンプリング位置がレンダリングされた後に、そのサブタイルのためのタイルバッファにおけるそのサンプリング位置に関する現在の値(それは、そのサンプリング位置に関して新しい値が古い値に取って代わる場合の新しくレンダリングされた値であり得るか、あるいは、(新しい値が以前に保存された値に取って代わらない場合の)そのサンプリング位置に関する以前の(現存する)現在の値であり得る。)が、問題のサンプリング位置に関する累積バッファ値に適切に加えられる(累積される)。
【0077】
従って、1つの特に好ましい実施例において、1つ以上のサンプリング位置を表すフラグメントがレンダリング工程(レンダリングパイプライン)に入る場合、タイルがレンダリングされている(そのレンダリングパスの内の1つを受けている)ので、問題のレンダリングパスにおけるそのフラグメントに関する(そのフラグメントが表すサンプリング位置に関する)現在のタイルバッファ値は、問題のタイルのためのそれらのサンプリング位置に関する(複数の)累積バッファ値から適切に取り去られると共に、次に、そのフラグメントがそのレンダリングを完了した場合に、フラグメントのレンダリングの結果として生じるサンプリング位置に関する現在の(複数の)タイルバッファ値は、問題のタイルのためのそれらのサンプリング位置に関する累積バッファ値に適切に加えられる(累積される)。
【0078】
本発明のこれらの実施例の好ましい装置において、累積バッファは、固定小数点値を格納する。これは、この技術が申し分なく機能するために、いくらかの状況において必要であり得る。
【0079】
上述のように、出力フレームのタイルに関して生成された“累積された”出力タイルのセットは、全体の出力の累積されたフレームを提供するために結合されるべきである。これは、(タイル累積バッファに格納されることになる)各出力の“累積された”タイルを、例えば準備が整うとすぐにフレームバッファに書き込むことによって実行される。その場合に、出力の累積されたタイルの全てが、例えばフレームバッファに書き込まれた場合に、出力フレームが、完成すると共に、例えば、そして好ましくは表示され得る(あるいは、他の場合は必要に応じて出力され得る)。
【0080】
提供するのにグラフィックスプロセッサが使用されていることができるあらゆる適当な形式の累積された出力のために、本発明が使用され得ることが、ここでは注意されるべきである。従って、1つの特に好ましい実施例において、出力フレームが(例えば画面またはプリンタ上の)表示のための画像を形成するように意図されている場合には、それが使用される(その場合に、当該技術において知られているように、出力フレームはフレームバッファに格納されることになる)が、本発明は、更に、出力フレームが表示用として意図されていない場合、例えば出力フレーム(レンダーターゲット)が、生成するのに(例えば“テクスチャへの書き込み(render to texture)”動作において)グラフィックプロセッサが使用されているテクスチャである場合、あるいは、実際には、生成するのにグラフィックプロセッサが使用されている出力が他の形式のデータ配列である場合にも、使用され得る。グラフィックプロセッサによってここで生成されている“出力フレーム”に対する言及は、従って、状況が許す場合、表示のためのフレームだけでなく、必要に応じてグラフィックプロセッサがその出力として生成しているテクスチャまたは他の表面(surface)のような他の適当なレンダーターゲットを含むと考察されるべきである。
【0081】
出力の累積されたタイルは、望まれたように、フレームバッファに書き込まれ得ると共に、例えば、必要に応じて、この工程の一部としてのダウンサンプリングのような更なる処理の対象となり得る。好ましくは、タイルをフレームバッファに書き込むための通常の手続きは、この工程のために使用される。
【0082】
グラフィックプロセッサは、あらゆる所望の、そして適当な方式における本発明の方法において動作するように、命令されて、制御され得る。
【0083】
当業者によって認識されることになるように、本発明の方法における動作は、好ましくは、例えば、ホスト上で動くアプリケーションからの“累積されたフレーム”の表示のための要求に応答して適切な命令の系列をグラフィックプロセッサに送信するグラフィックプロセッサのためのドライバ(ソフトウェア)(それは、例えば、グラフィックプロセッサが連結されるホストシステムまたはプロセッサ上で動いている)によって誘発される。
【0084】
特に好ましい実施例において、本発明の方法における動作を誘発すると共に制御するために使用される命令の系列は、処理されるべき各タイルに関して、“新タイルの開始(begin new tile)”命令(それは、問題のタイルに関する最初のレンダリングパス(最初の“サブタイル”の生成)を誘発することになる)、そして、タイルが受けることになる各残りのレンダリングパスに対して1つずつの、“新サブタイルの開始(begin new sub-tile)”命令の系列を含む。これらの命令は、上述のように、グラフィックプロセッサに、出力の“累積された”タイルを提供するために累積されるべき“サブタイル”の適切な系列のレンダリングを行わせるはずである。
【0085】
この装置において、“新タイルの開始(begin new tile)”命令は、好ましくは、(それが新タイルのスタートを合図するので、)タイルに使用されるべきタイルバッファとタイルに使用されるべき累積バッファの両方を消去するが、しかし、“新サブタイルの開始(begin new sub-tile)”命令は、累積バッファではなく、タイルバッファだけを消去するべきである。
【0086】
“新タイルの開始(begin new tile)”命令及び“新サブタイルの開始(begin new sub-tile)”命令は、好ましくは、更に、問題のサブタイルを累積タイルに累積する場合に使用されるべき重みを示す。(当該技術において知られているように、更に、累積バッファ工程において累積されたフレームに寄与することになる、各“サブタイル”に適用されるべき重みを指定することは、通常のことであり、従って、これは、また、本発明で説明される必要があるであろう。“新タイルの開始(begin new tile)”命令及び“新サブタイルの開始(begin new sub-tile)”命令において、使用する重みを指定することは、これを行うための便利な方法である。)
【0087】
特に好ましい実施例において、グラフィックプロセッサのためのドライバは、更に、累積バッファに入ることになる全てのレンダリングパス(サブフレーム)を、グラフィックプロセッサに関する単一のジョブに結合する。その場合に、これは、各タイル(またはタイルのセット)に関する順繰りの相次ぐレンダリングパスの実行を容易にすることになる。
【0088】
グラフィックプロセッサのためのドライバのそのような動作が、それ自身で新しいかもしれなく、有利であるかもしれないと考えられている。
【0089】
従って、本発明の第7の特徴によれば、タイルベースのグラフィックプロセッサのためにドライバを作動させる方法であって、前記方法は、前記ドライバが、累積バッファ動作が作り出されることをフレームが必要としているという指示を受信し、前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合し、出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信する段階を含み、各上記命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の1つを開始するように、前記グラフィックプロセッサに指示することを特徴とする方法が提供される。
【0090】
本発明の第8の特徴によれば、タイルベースのグラフィックプロセッサのためのドライバであって、累積バッファ動作が出力されることをフレームが必要としているという指示を受信することに応答して、前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合するための手段と、出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信するための手段とを備え、各上記命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の1つを開始するように、前記グラフィックプロセッサに指示することを特徴とするドライバが提供される。
【0091】
当業者によって認識されることになるように、本発明のそれらの特徴は、必要に応じて、ここで説明されたあらゆる本発明の好ましい特徴及び任意の特徴の1つ以上または全部を含むことができるか、あるいは好ましくは含む。例えば、新タイル開始命令/新サブタイル開始命令は、好ましくは、上述の形式である。
【0092】
同様に、グラフィックプロセッサは、好ましくは、ドライバから一連の命令を受信することに応答して、本発明の方法において動作する。
【0093】
実際には、そのドライバからのそのような一連の命令を受信することに応答して、グラフィックプロセッサは、出力フレームのタイルに一連のレンダリングパスを経験させると共に、従ってそれらのレンダリングパスの結果を累積するように動作することになる、ということが認識されることになる。これは、出力フレームが分割されることになっている各タイルに関して実行されることになる。
【0094】
従って、本発明の第9の特徴によれば、タイルベースのグラフィック処理システムにおける出力フレームのタイルを処理する方法であって、タイルに複数のレンダリングパスの系列の内の第1のレンダリングパスを経験させると共に、結果として生じるレンダリングされたタイルを前記タイルに関する累積バッファに格納する段階と、前記タイルに定義された前記レンダリングパスの系列の内の第2のレンダリングパスを経験させると共に、そのレンダリングパスの結果を前記タイルに関する前記累積バッファに累積する段階と、前記タイルに関する前記複数のレンダリングパスの累積された結果を表すタイル出力を生成するために、前記レンダリングパスの系列における各残りのレンダリングパスに関してこの工程を反復する段階と、前記タイルに関する累積されたタイル出力を、出力レンダーターゲットに、好ましくはフレームバッファに出力する段階とを含むことを特徴とする方法が提供される。
【0095】
本発明の第10の特徴によれば、タイルベースのグラフィック処理システムであって、出力フレームに関するタイルに複数のレンダリングパスの系列の内の第1のレンダリングパスを経験させると共に、結果として生じるレンダリングされたタイルを前記タイルに関する累積バッファに格納するための手段と、前記タイルに前記レンダリングパスの系列の内の第2のレンダリングパスを経験させると共に、そのレンダリングパスの結果を前記タイルに関する前記累積バッファに累積するための手段と、前記タイルに関する前記複数のレンダリングパスの累積された結果を表すタイル出力を生成するために、前記レンダリングパスの系列における各残りのレンダリングパスに関してこの工程を反復するための手段と、前記タイルに関する累積されたタイル出力を、出力レンダーターゲットに、好ましくはフレームバッファに出力するための手段とを備えることを特徴とするタイルベースのグラフィック処理システムが提供される。
【0096】
当業者によって認識されることになるように、本発明のそれらの特徴は、必要に応じて、ここで説明されたあらゆる本発明の好ましい特徴及び任意の特徴の1つ以上または全部を含むことができるか、あるいは好ましくは含む。
【0097】
従って、例えば、その工程は、好ましくは、出力フレームが分割されるべきである各タイルに関して反復される。
【0098】
この場合、方法またはシステムは、従って、タイルベースのグラフィック処理システムにおける出力フレームの一部分を構成するタイルのセットを処理するための段階または手段を有することになり、方法またはシステムは、前記タイルのセットの内の第1のタイルにレンダリングパスの系列の内の第1のレンダリングパスを経験させると共に、結果として生じるレンダリングされたタイルを前記タイルに関する累積バッファに格納し、前記第1のタイルに前記レンダリングパスの系列の内の第2のレンダリングパスを経験させると共に、そのレンダリングパスの結果を前記タイルに関する前記累積バッファに累積し、前記タイルに関する複数のレンダリングパスの累積された結果を表すタイル出力を生成するために、前記レンダリングパスの系列における各残りのレンダリングパスに関してこの工程を反復し、前記タイルに関する累積されたタイル出力を、出力レンダーターゲットに、好ましくはフレームバッファに出力し、そしてその後に、前記タイルのセットの内の第2のタイルに前記レンダリングパスの系列の内の前記第1のレンダリングパスを経験させると共に、結果として生じるレンダリングされたタイルを前記第2のタイルに関する累積バッファに格納し、前記タイルのセットの前記第2のタイルに前記レンダリングパスの系列の内の前記第2のレンダリングパスを経験させると共に、そのレンダリングパスの結果をそのタイルに関する累積バッファに累積し、前記第2のタイルに関する複数のレンダリングパスの累積された結果を表すタイル出力を生成するために、前記レンダリングパスの系列における各残りのレンダリングパスに関してこの工程を反復し、一度前記第2のタイルに関するレンダリングパスの系列の累積された結果が完成すると、前記第2のタイルに関する累積されたタイル出力を、前記出力レンダーターゲットに、好ましくはフレームバッファに出力し、前記タイルのセットの残りのタイルに関してこの工程を反復するための段階または手段を有する。
【0099】
ここでは、更に、上述のタイル(またはタイルのセット)の相次ぐ処理の系列は、追随されることになると共に、基本的に追随されるべきである一方、出力の累積されたフレームが処理されている間、まだ、処理が他のタイルの処理によって先行されないいくらかのタイル、そして処理が他のタイルの処理によって追随されないいくらかのタイルがあることになる、ということが認識されるべきである。例えば、処理されるべき最終のタイル(または複数のタイル)は、(その場合に、出力フレームが終わることになるので、)更なるタイルの処理によって追随されないであろう。従って、例えば、上述のタイルのセット(系列)は、フレームの“中央”からのタイルのセットまたは系列を含むことになると共に、その処理系列は、まさに、出力フレームの最後のタイルに関して追随されないことになる。
【0100】
本発明の様々な機能は、あらゆる所望の、そして適当な方法において実行され得る。例えば、本発明の機能は、必要に応じて、ハードウェアまたはソフトウェアで実施され得る。従って、例えば、本発明の様々な機能的要素及び“手段”は、例えば適切に専用であるハードウェア要素、及び/または、所望の方法において動作するようにプログラムされ得るプログラム可能なハードウェア要素のような、様々な機能等を実行するように動作可能である、適当なプロセッサまたは複数のプロセッサ、機能ユニット、回路構成、処理回路構成、管理回路構成、ロジック、処理ロジック、マイクロプロセッサ装置等を含み得る。
【0101】
好ましい実施例において、グラフィックプロセッサは、ハードウェア要素(例えばASIC)として実施される。従って、別の特徴において、本発明は、ここに示された発明の特徴のいずれか1つ以上を含むハードウェア要素、またはここに示された発明の特徴のいずれか1つ以上の方法に従って操作されるハードウェア要素を備える。
【0102】
特に好ましい実施例において、グラフィックプロセッサは、表示装置のためのフレームバッファに書き込まれるグラフィックデータを生成して出力する、単一のグラフィック処理プラットフォームを備える。
【0103】
更に、当業者によって認識されることになるように、本発明の様々な機能等は、任意のプロセッサ上で、複製され得るか、及び/または並列に実行され得るということが、ここでは注意されるべきである。
【0104】
本発明は、例えば“パイプライン化された”レンダリング装置を備える(その場合にレンダリング装置はレンダリングパイプラインの形式であろう)プロセッサのような、あらゆる形式または構成の(タイルベースの)グラフィックプロセッサ及びレンダラー(renderer)に適用できる。
【0105】
上記から認識されることになるように、本発明は、特に、排他的ではないが、3次元グラフィックプロセッサ及び3次元グラフィック処理装置に適用できると共に、従って、本発明は、ここで説明された発明の特徴のいずれか1つ以上の装置、またはここで説明された発明の特徴のいずれか1つ以上の方法に従って操作される装置を含む、3次元グラフィックプロセッサ及び3次元グラフィック処理プラットフォームにまで及ぶ。上述の特定の機能を実行するために必要なあらゆるハードウェアを条件として、そのような3次元グラフィックプロセッサは、その他に、3次元グラフィックプロセッサが含んでいる通常の機能ユニット等のいずれか1つ以上または全てを含むことができる。
【0106】
更に、本発明の説明された特徴及び実施例の全ては、必要に応じて、ここで説明された好ましい、そして任意の特徴のいずれか1つ以上または全てを含むことができるということが、当業者によって認識されることになる。
【0107】
本発明による方法は、ソフトウェア、例えばコンピュータプログラムを用いて、少なくとも部分的に実施され得る。更なる特徴から見たとき、本発明は、データ処理手段にインストールされたときに、ここで説明された方法を実行するように明確に構成されたコンピュータソフトウェア、プログラム要素がデータ処理手段上で実行されるときに、ここで説明された方法を実行するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、そして、プログラムがデータ処理システム上で実行されるときに、ここで説明された方法または複数の方法の全ての段階を実行するように構成されたコード手段を含むコンピュータプログラムを提供するということが、従って分かることになる。データ処理システムは、マイクロプロセッサ、プログラム可能なFPGA(Field Programmable Gate Array)等であり得る。
【0108】
本発明は、更に、データ処理手段を含むグラフィックプロセッサ、レンダラー、またはマイクロプロセッサシステムを動かすために使用されるとき、前記データ処理手段と連動して、前記プロセッサ、レンダラー、またはシステムに、本発明の方法の段階を実行させる、そのようなソフトウェアを含むコンピュータソフトウェア担体にまで及ぶ。そのようなコンピュータソフトウェア担体は、例えばROMチップ、CDROM、またはディスクのような物理的記憶媒体であるか、あるいは、例えば有線上の電気信号、光信号、または衛星等に対する無線信号のような信号であろう。
【0109】
必ずしも本発明の方法の全てのステップは、コンピュータソフトウェアによって実行される必要があるとは限らないと共に、従って、更に広い特徴から、本発明は、ここで提示された方法の段階の内の少なくとも1つを実行するための、コンピュータソフトウェア、及びコンピュータソフトウェア担体にインストールされたそのようなソフトウェアを提供する、ということが更に認識されることになる。
【0110】
本発明は、従って、コンピュータシステムによって使用するのためのコンピュータプログラム製品として適宜具体化され得る。そのような実施は、例えばディスケット、CDROM、ROM等の非一時的なコンピュータ読み取り可能媒体のような有形的表現媒体か、またはハードディスクのいずれかに固定された一連のコンピュータ読み取り可能な命令を含み得る。それは、更に、光学通信回線またはアナログ通信回線を含むがそれに限定されるものではない有形的表現媒体によって、またはマイクロ波、赤外線、もしくは他の伝送方法を含むがそれに限定されない、手で触れることができない無線手法を使用して、モデムまたは他のインタフェース装置を介してコンピュータシステムに伝送可能な、一連のコンピュータ読み取り可能な命令を含むであろう。一連のコンピュータ読み取り可能な命令は、ここで前に説明された機能性の全部または一部を具体化する。
【0111】
当業者は、そのようなコンピュータ読み取り可能な命令が、多くのコンピュータアーキテクチャまたはオペレーティングシステムによる使用のために、多くのプログラミング言語で書かれ得るということを認識することになる。更に、そのような命令は、現在または将来に、半導体、磁性体、もしくは光を含むがそれに限定されるものではない、あらゆるメモリ技術を使用して保存され得るか、あるいは、現在または将来に、光、赤外線、もしくはマイクロ波を含むがそれに限定されるものではない、あらゆる通信技術を使用して伝送され得る。そのようなコンピュータプログラム製品は、プリントされた文書もしくは電子文書が添えられた取外し可能な媒体、例えば市販パッケージソフトウェアとして分配され得るか、コンピュータシステムに、例えばシステムROMまたは固定ディスクに最初から組み込まれ得るか、あるいは、ネットワーク、例えばインターネットまたはワールドワイドウェブを介して、サーバまたは電子掲示板から分配され得ると考えられる。
【図面の簡単な説明】
【0112】
【図1A】本発明の実施例の主要な動作を概略的に示す図である。
【図1B】本発明の実施例の主要な動作を概略的に示す図である。
【図1C】本発明の実施例の主要な動作を概略的に示す図である。
【図2】本発明を実施するのに適当なグラフィックプロセッサの構造を概略的に示す図である。
【図3】本発明を実施する1つの好ましい方法を概略的に示す図である。
【図4】本発明を実施する別の好ましい方法を概略的に示す図である。
【図5】本発明を実施する別の好ましい方法を概略的に示す図である。
【発明を実施するための形態】
【0113】
本発明の多くの好ましい実施例が、一例のみとして、そして添付図面を参照して、ここから説明されることになる。
【0114】
上述のように、本発明は、グラフィック処理システムにおける“累積バッファ”工程に関係すると共に、特に、タイルベースのグラフィック処理システムにおいてそのような動作を実施するための好ましくかつ革新的なシステム及び方法に関係する。
【0115】
当業者において知られているように、“累積バッファ”工程は、基本的に、例えばいくらかの異なる視角からの、出力フレームの複数の異なるバージョンをレンダリングすると共に、次に、単一の出力の“累積された”フレームとして結果を累積することを必要とする。この操作は、概して、被写界深度、モーションブラー、ソフトシャドウ、及びアンチエイリアシングのような異なる効果をエミュレートするために使用される。
【0116】
図1は、本発明の基本概念を例証する。
【0117】
図1Aは、複数のタイルもしくはサブ領域2、3、4、及び5に分割されたフレーム1を概略的に示し、当該技術において知られているように、そのタイルの各々は、別々にレンダリングされると共に、表示のための出力フレームを提供するために結合されることになる。
【0118】
(図1Aは、説明を明瞭にするために、4つのタイルに分割されたフレームを示す。当業者によって認識されることになるように、任意のフレームは、一般的には、4つのタイルより更に多くに分割されることになる。)
【0119】
図1Bは、図1Aで示されるフレーム1に適用されるであろう、従来の“累積バッファ”動作を概略的に示す。従って、図1Bで示されると共に、当該技術において知られているように、出力の“累積された”フレーム6を提供するために、フレーム1の複数の異なるバージョン1’、1’’、1’’’、1’’’’が、レンダリングされて一緒に累積される。この場合、そして当該技術において知られているように、第1のレンダリングパスが、その全体において、蓄積された出力フレーム6に寄与する第1のサブフレーム1’を生成することになる。第2の異なるレンダリングパスは、その場合に、この場合もやはり最終の累積出力フレーム6に累積されることになる全ての第2のサブフレーム1’’を生成することになり、この処理が繰り返される。
【0120】
図1Cは、累積されたフレーム6を生成するための累積バッファ動作がどのように本発明の実施例に従って実行されるであろうかを、概略的に示す。図1Cで示されたように、その全体において順繰りに各サブフレーム1’、1’’、1’’’、1’’’をレンダリングするよりむしろ、本発明の実施例によるシステムにおいては、各個々のタイル2、3、4、及び5が、異なるレンダリングパスを経験させられ、そして個々に累積される。
【0121】
従って、例えば、タイル2の場合、最終の出力の累積されたバージョンのタイル2accを提供するために、第1のレンダリングパスが、そのタイルに関して、サブタイル2’を生成するために実行され、次に、第2のレンダリングパスが、そのタイルに関して、最初のバージョンのタイル2’に累積されるサブタイル2’’を生成するために実行され、次に、第3のレンダリングパスが、そのタイルに関して、以前にレンダリングされたバージョンのタイルに更に累積されるサブタイル2’’’を生成するために実行され、そしてこの処理が繰り返される。累積された出力タイル2accは、その場合に、全体の累積された出力フレーム6に関する出力タイル2を形成するための出力として提供される。
【0122】
そして、これは、出力フレーム6を構成している残りの個々のタイル3、4、及び5のそれぞれに関して反復されると共に、個々の累積されたタイル2acc、3acc、4acc、及び5accは、出力の累積されたフレーム6を提供するために、1つに結合される。
【0123】
従って、もし、それらのいくらかのサブフレームの累積によって最終の画像6に共に寄与するいくらかのサブフレーム(フレーム1’、1’’、1’’’、及び1’’’’)を生成するとして、図1Bに示された従来の累積バッファ装置を考察するならば、その場合に、図1Cで例証された本実施例の概念は、類似的に、出力フレームを構成している各個々のタイルに関して、問題のタイルの出力バージョンである最終の累積タイル(例えば2acc)に寄与するように1つに累積されるいくらかのサブタイル(例えば2’、2’’、2’’’、及び2’’’’)の生成を包含すると考えられ得る。各そのような出力の累積されたタイルは、その場合に、全体の累積された出力フレーム6を提供するために結合される。
【0124】
同様に、本実施例のレンダリングの順序(rendering order)は、従って、1つの特定のタイル(または、更に以下で論じられることになるように、複数の特定のタイルのセット)に関して、次のタイル(またはタイルのセット)に進む前に、(全てのレンダリングパスを実行して累積するように)全ての“サブタイル”をレンダリングすることである。(これと対照的に、従来の累積バッファ動作は、フレームの全てのタイルを含むサブフレームを生成し、一度そのサブフレームが生成されたならば、次に、フレームの全てのタイルを含む次のサブフレームを生成し、そしてこの処理が繰り返されることとして見なされ得る。)
【0125】
別の方法を参照すると、従来の累積バッファ動作では、累積されたフレームを生成するのに必要とされる一連のレンダリングパスの第1のレンダリングパスが、第1のサブフレームを生成するために、フレームの全てのタイルに関して実行されると共に、一度その第1のサブフレームが生成された場合にだけ、第2のサブフレームを生成するために、再度フレームの全てのタイルにわたって、第2のレンダリングパスの系列が実行され、この処理が繰り返される。
【0126】
これと対照的に、本実施例では、系列の第1のレンダリングパスが、タイルに関して実行されることになると共に、次に、それがそのタイルに関して完了した場合に、第1のレンダリングパスがフレームの全てのタイルに関して実行されるのを待つことなく、累積された出力フレームのための、系列の第2のレンダリングパスが、そのタイルに関する第2のサブフレームを生成するために、その同じタイルに関して実行されることになり、問題のタイルに関して全てのレンダリングパスが完了されるまで、この処理が繰り返される。そして、システムは、出力フレームの別のタイルに進むことになる。すなわち、本実施例において、レンダリングの順序は、1つの特定のタイルに関する全ての“サブタイル”が、出力フレームの他のタイルに関するレンダリングパスが完了されるのを待つことなく(そして、好ましくは出力フレームの他のタイルに進む前に)、レンダリングされることになるようなものになる。
【0127】
更に詳細に論じられることになるように、本実施例の装置では、その代わりに、各個々のタイル2、3、4、5は、図1Cで示されたように、相次いで順繰りに処理されるであろうと共に、例えば、出力フレームを構成するタイルが、複数のタイルの複数の異なるセットとして、効果的に処理されるように、2つ以上の個々のタイルを同時に処理することが可能であろう。
【0128】
例えば、図1Cで例証された装置に関して、タイル2、3のペアが同時に処理されるであろうと共に、次に、それらのタイルが終了した場合に、タイル4及び5のペアが処理されるであろう。これは、この装置ではタイル2、3のペアが同時に処理されるかもしれないが、それでも、累積及び複数のレンダリングパスが、他のタイルに対して独立して、まだ各タイルに関して実行されることは事実であり、それは、単に、それらのタイルの工程が同時に行われることを可能にするように、タイル2及び3の処理がインタリーブされることができるということであると、ここでは理解されるべきである、ということを示している。
【0129】
図2は、本発明に従って操作され得るグラフィックプロセッサの実施例を概略的に示す。
【0130】
図2において示されたグラフィックプロセッサは、当該技術において知られているように、レンダリングのためにグラフィックプリミティブ(graphics primitive:グラフィック基本要素)を受け取り、プリミティブをサンプリング点にラスタライズし(rasterize)、プリミティブをレンダリングするための適切な位置を有する(適切なサンプリング位置を表す)グラフィックフラグメント(graphics fragment)を生成する、ラスタライザー50を備える。
【0131】
その場合に、レンダリングのために、ラスタライザー50からグラフィックフラグメントを受け取ると共に、例えばフラグメントの表示のための適切なフラグメントデータを生成するために、それらのグラフィックフラグメントに、多くのレンダリング動作、例えば、テクスチャマッピング(texture mapping)、フォギング(fogging)、ブレンディング(blending)等を適用する、レンダリングパイプラインの形式のレンダラー51が存在する。レンダラー51が提供するレンダリングされたフラグメントデータは、次の処理のために、レンダリングパイプラインのタイルバッファ52に格納される。
【0132】
当該技術において知られているように、タイルバッファ52は、レンダリング工程の出力フレーム(例えば表示されるべき出力フレームの)の一部分を表すフラグメントデータの配列を格納する。一度各タイルが処理されたならば、そのデータは、適切な記憶装置に送出されると共に、次のタイルが次に処理され、全体の出力フレームを提供するために十分なタイルが処理されるまで、この処理が繰り返される。
【0133】
本実施例では、タイルバッファ52は、通常動作で、サイズにおいて16×16のサンプリング位置を有するタイルを格納すると共に、各サンプリング点に関して4つのFP16値(FP16 value)を格納するように構成される。言うまでもなく、他の装置構成が可能であろう。
【0134】
タイルバッファ52は、個別のバッファとして提供され得るか、または、実際には全てが同じ更に大きなバッファの一部分であり得る。それらは、グラフィックプロセッサに配置される(グラフィックスプロセッサに局所的である)。
【0135】
更に以下で論じられることになるように、本実施例において本発明を実施する場合、タイルバッファ52の動作は修正される。
【0136】
当該技術において知られているように、タイルバッファ52が提供するデータは、ダウンサンプリングユニット53に入力され、それから、表示装置上の表示のための表示装置55のフレームバッファ54(それはグラフィックプロセッサ自身の上にはないかもしれない)に出力される。表示装置55は、例えば、コンピュータモニタまたはプリンタのような画素の配列を有する表示装置を含む。
【0137】
ダウンサンプリングユニット53は、タイルバッファに格納されたフラグメントデータを表示装置55のための適切な解像度に(すなわち表示装置の画素に対応する画素データの配列が生成されるように)ダウンサンプリングする。
【0138】
本実施例において、グラフィックプロセッサが本発明の方法で動作している場合に、任意のタイルに関して、その一連の“サブタイル”が累積されているように、必要な“累積バッファ”記憶装置を提供するために、タイルバッファ52の動作は修正される。
【0139】
(上記から認識されることになるように、例えば、一連のサブタイル2’、2’’、2’’’、及び2’’’’が、図3において示された方法で処理されている場合、各そのような“サブタイル”をレンダリングした結果は、そのレンダリングが進行するにつれて、1つに累積される必要があり、その累積されたレンダリングの結果は、出力の累積タイル2accを最終的に提供することになる。それは、従って、そのレンダリングが進行するにつれて、サブタイルを累積するための“累積バッファ”を提供することが必要になる。これは、それが“従来の”累積バッファの実装において処理される場合の、各サブフレームの結果を累積するための累積バッファの提供に類似している。しかしながら、本発明では、“累積バッファ”は、完全なフレームではなく、タイル(またはタイルのセット)を同時に累積することだけを必要とする。)
【0140】
図2において示された装置において、任意のタイルに関して、それが本発明の方法で処理される場合、累積されたレンダリング結果を格納するための累積バッファが、グラフィックプロセッサのタイルバッファ52におけるバッファとして提供される。
【0141】
従って、図2に示されるように、本発明の方法で処理されている任意のタイルに関して、タイルバッファ52は、処理されているタイルに関する“通常の”タイルバッファ56、及びそのタイルに関する累積タイル“累積バッファ”57の両方を提供するように構成されることになる。
【0142】
その場合に、そして以下で更に論じられることになるように、タイルが、例えば図1Cに示されるサブタイル2’のようなサブタイルを生成するために、任意のレンダリングパスを経験させられる場合、そのタイルは、タイルバッファ56に格納されることになると共に、その結果生じるレンダリングされたサブタイルは、その場合に、累積バッファ57に累積されることになる。
【0143】
一度例えばサブタイル2’のような任意のサブタイルが完全にレンダリングされたならば、次に、タイルバッファ56が、消去されると共に、例えばサブタイル2’’のような次のサブタイルがレンダリングされてその中に格納される。その結果生じるレンダリングされたサブタイル2’’は、(そのステージにおいて累積バッファ57がサブタイル2’及び2’’の適切に累積されたレンダリング結果を格納するように、)累算バッファ57に累積されることになる。
【0144】
そして、タイルバッファ56は消去され、例えばサブタイル2’’’のような次のサブタイルがレンダリングされることになると共に、そのサブタイルの結果は、累積バッファ57に累積されることになり、この処理が繰り返されることになる。
【0145】
そして、一度出力フレームの任意のタイルに関する全てのサブタイルがレンダリングされて、累積バッファ57に累積されたならば、その場合に、適切な出力または表示のための出力の累積されたタイルとして、(ダウンサンプリングステージ53を介して)フレームバッファ54に出力されるのは、累積バッファ57の内容である。
【0146】
この時点で、タイルバッファ56と累積バッファ57の両方が消去され得ると共に、次に、その工程は、(例えばタイル3のような)出力フレームの別のタイルのために開始され得る。これは、その場合に、出力されるべきフレームの各タイルに関して反復される。
【0147】
本実施例において、グラフィックプロセッサが本発明の方法で動作している場合に、タイルバッファ52は、ラスタライズ工程(rasterization process)の一部分として実行されるマルチサンプリングの量を4倍(4×)から2倍(2×)に減少させることにより、タイルバッファ56と組み合わせて累積バッファ57を提供するように構成される。4つのFP16値(それは、通常、任意の16×16のタイルバッファがそれぞれのデータ位置として保存するものである)は、マルチサンプリングの量を2倍(2×)に減少させることによって、2つのRGBA8888バッファと同じ記憶量を使用することになり、任意の16×16のデータ位置の4つのFP16値のタイルバッファは、2つのRGBA8888バッファを提供するように再構成され得ると共に、従って、一方のそのようなバッファはタイルバッファ56を形成し、もう一方のそのようなバッファは累積バッファ57を形成する。これは、必要なタイル累積バッファ57がタイルバッファの一部分として提供されると共に、例えば、その目的のために新しいバッファを追加しなければならないのを回避することを可能にする。
【0148】
言うまでもなく、タイルバッファにおける累積バッファ57の提供を容易にする他の装置が可能であろう。例えば、4倍から2倍にマルチサンプル数を減少させる代りに、処理されているタイルのサイズが、1つの16×16のデータ位置のタイルバッファから、16×8のタイルバッファ56及び16×8の累積バッファ57を提供するために、その代りに2つに分割されるであろう。この装置は、より多い数のマルチサンプルが保持されることを可能にすると共に、例えば、累積バッファに関して、より高い精度値が使用されることを可能にするが、しかし、一方で、より小さなタイルサイズを用いて出力フレームが処理されることを必要とするであろう。
【0149】
これらの装置は、グラフィックプロセッサの現存するロジック(すなわちタイルバッファ)が、本発明の方法における動作のための必要なタイル累積バッファを提供することを可能にすることが、ここでは注意されるべきである。従って、タイル累積バッファは、追加費用なしで提供され得る。更に、従来の累積バッファ構造と比較したかなりの速力増加、そしてテクスチャーキャッシュ検索及び他のキャッシュ検索の減少になるはずである。
【0150】
更に、例えば、これはあまり好ましくはないが、追加のバッファをグラフィックプロセッサに加えるか、もしくは、実際に、タイル累積バッファとして機能するようにグラフィックプロセッサに外部バッファを提供することさえ可能であろう。
【0151】
本発明の方法で出力フレームを処理するようにグラフィックプロセッサを操作するための多くの好ましい実施例が、図3〜図5を参照してここから説明されることになる。図3は、個別のレンダリングステップ及び累積ステップが存在する本発明によるグラフィックプロセッサの動作の第1の好ましい実施例を示す。図4及び図5は、結合されたレンダリングステップ及び累積ステップが存在するそのような動作の第2の実施例を示す。
【0152】
図3から図5において、同等の参照符号が同等のステップに関して使用される。
【0153】
認識されることになるように、本発明の動作は、最初に、累積バッファ動作の要求によって、例えばグラフィック表示を要求するアプリケーションからそのような命令を受け取ったグラフィックプロセッサのためのドライバに応答して、誘発されることになる。当該技術において知られているように、この命令は、一般的に、例えば各サブフレームが定義されたレンダリングパス、及び最終の累積されたフレームに対するその寄与を示す指定された重みを有するように、一連のサブフレームを処理して累積バッファに累積することを、グラフィックプロセッサに指示することになる。
【0154】
本実施例において、そのような命令を受け取ることに応答して、グラフィックプロセッサドライバは、最初に、累積バッファに入ることになる全てのN個のレンダリングパス(サブフレーム)を、グラフィックプロセッサのための単一の“ジョブ”に結合する(ステップ20)。これは、グラフィックプロセッサがそれらを1つのフレームに結合する前に別々に各サブフレームをレンダリングしないが、しかし、むしろ上述のように、各タイルに順繰りに各レンダリングパスを実行し得ることを保証するためのものである。言うまでもなく、他の装置が可能であろう。
【0155】
グラフィックプロセッサドライバは、更に、ステップ20において、グラフィックプロセッサに本発明の方法で動作するように指示するための一連の命令を準備する。
【0156】
一連の命令は、処理されるべき各タイルの最初のサブタイルに対して“新タイルの開始(begin new tile)”命令を含み、同じタイルに関して処理されるべき他のサブタイルに対して“新サブタイルの開始(begin new sub-tile)”命令を含む。“新タイルの開始(begin new tile)”命令と“新サブタイルの開始(begin new sub-tile)”命令との差異は、各“新サブタイルの開始(begin new sub-tile)”命令が単純にタイルバッファ56を消去する一方で、“新タイルの開始(begin new tile)”命令は、タイルバッファ56を消去することに加えて、グラフィックプロセッサに累積バッファ57を消去させる(すなわち累積バッファ57をフレームバッファ54に書き込ませる)ことになることである。
【0157】
(本実施例において、各タイルバッファは、どのサンプリング位置がまだレンダリングされていないかを示すために、“クリア”ビットマップ("clear" bitmap)をそれに関連付けた。通常のレンダリング動作において、このクリアビットマップは、レンダリングされるべき各新しいタイルに関してリセットされる。しかしながら、本実施例の累積バッファ動作にこれを適用する場合、上述のように、タイルの最終バージョン(“累積された”タイル)がフレームバッファに出力される前に、レンダリングされたタイルの複数のバージョン(累積“サブタイル”)が存在することになる。従って、新しいサブタイルが始められるときはいつでも、“サブタイル”バッファを“消去”することが必要であると共に、新しいタイルが累積されることが始められるときはいつでも、“累積された”タイルバッファを消去することが必要である。)
【0158】
各“新タイルの開始(begin new tile)”命令と“新サブタイルの開始(begin new sub-tile)”命令は、更に、そのサブタイルを“累積”タイルに累積する場合に使用されるべき重みを指定する。
【0159】
そのような“新タイルの開始(begin new tile)”命令と“新サブタイルの開始(begin new sub-tile)”命令の系列は、出力フレームの各タイルに関して生成される。
【0160】
ドライバは、更に、当該技術において知られているように、グラフィックプロセッサに各それぞれのサブタイルを適切な方法でレンダリングさせるように、(適切に“新タイルの開始(begin new tile)”命令と“新サブタイルの開始(begin new sub-tile)”命令の後に続くことになる)適切な命令の系列を準備することになる。
【0161】
図3は、その場合に、本発明の第1の実施例における、そのドライバからそのような一連の命令を受け取ることに応答したグラフィックプロセッサの動作を概略的に示す。
【0162】
図3において示されたように、グラフィックプロセッサは、各タイルに関して(ステップ21)(それに関してそれは新しいタイルが開始されていることを示す“新タイルの開始(begin new tile)”命令を受け取ることになる)、最初に累積バッファ57を消去する(ステップ22)(すなわち“累積された”タイルに対してクリアビットマップを設定する)。
【0163】
それは、その場合に、タイルに対する累積動作を構成するレンダリングパスのN個の系列を実行すると共に累積することになる(ステップ23〜26)。上述のように、(第1の後の)各次のレンダリングパスは、“新サブタイルの開始(begin new sub-tile)”命令によって示されることになると共に、次の“新タイルの開始(begin new tile)”命令は、現在のタイルの終了と次のタイルの開始を意味することになる。
【0164】
従って、(累積バッファに関して実行されるべきレンダリングパスのN個の系列の)各レンダリングパスnに関して(ステップ23)、グラフィックプロセッサは、最初にタイルバッファ(すなわちそこに現在の“サブタイル”が書かれるべきバッファ)を消去することになる(ステップ24)。(タイルバッファ56は、更に、当該技術において知られているように、必要に応じて、デフォルトのバックグラウンドカラー(すなわちプリミティブが実際にフレームにレンダリングされないそれらの場所でフレームが得ることになる色)によって初期化され得る。グラフィックプロセッサは、その場合に、レンダリングパスnを実行する(サブタイルnをレンダリングする)ことになると共に、結果をタイルバッファ56に格納することになる(ステップ25)。
【0165】
一度、そのレンダリングパスが完了された(サブタイルnがタイルバッファ56にレンダリングされた)ならば、グラフィックプロセッサは、その場合に、タイルバッファにおけるそのように格納されたレンダリングされたサブタイルnを、累積バッファ57に累積する(ステップ26)。例えば、この累積は、グラフィックプロセッサのシェーダ(shader)またはタイルライトバックロジック(tile writeback logic)を使用することによって、実行され得る。
【0166】
この累積ステップは、当業者によって認識されることになるように、従来の累積バッファ動作において実行される“累積パス”に相当するが、しかし、それは、全体のレンダリングされたフレームを累積バッファに累積するパスよりむしろ、レンダリングされたサブタイルを“累積”タイルに累積するパスである。
【0167】
その累積がタイルライトバックロジック(tile writeback logic)を使用することによって実行される場合に、それは、例えば、累積のためのダウンサンプリングロジック53における加算器を再使用し得る。累積ステップのためにグラフィックプロセッサのシェーダ(shader)を使用することは、例えば、累積パスのためにグラフィックプロセッサにロジックを追加する必要性を回避するであろう。
【0168】
一度現在のサブタイル(問題のサブタイル)がこのように累積バッファに累積されたならば、新しい“新サブタイルの開始(begin new sub-tile)”命令が存在することになり、そしてタイルバッファを消去し、サブタイルをレンダリングし、一度そのサブタイルがレンダリングされたならば、次にその結果生じるレンダリングされたサブタイルを累積バッファに累積するステップ23、24、25、及び26は、累積バッファ動作に必要とされるレンダリングパスの系列の次のサブタイル(次のレンダリングパス)に関して反復される。
【0169】
これは、累積バッファ動作に必要とされるレンダリングパスの系列の全てのレンダリングパスが完了されると共に、結果が問題のタイルに関して累積される(すなわち問題のタイルに関する全てのN個のサブタイルが生成されて累積される)まで、反復される。
【0170】
(本実施例では、累積工程が実行されると、フラグメント依存関係検査が、タイルバッファにおける特定のサンプリング位置と関連付けられた全てのフラグメントは、その同じサンプリング位置に関する全ての以前のフラグメントがパイプラインから出るまで、レンダリングパイプラインから出ることからブロックされることを保証する。(これは、更に、以前のサブタイル(またはタイル)における同じサンプリング位置に関するフラグメントを含む。)これは、各タイルに関するサンプリング位置が正しい順番に処理されることを保証する。)
【0171】
一度累積バッファ動作に必要とされるレンダリングパスの系列の全てのレンダリングパスが完了されると共に、結果が問題のタイルに関して累積されたならば、累積バッファ57における格納された累積されたタイルは、外部メモリフレームバッファ54に出力される(ステップ27)。
【0172】
上述の工程において、サブタイルn(タイルに関するn番めのレンダリングパス)が完了された場合に、そのタイルが外部メモリへ書き戻されないが、しかし、その代りに(ステップ26において)累積バッファ57に適切に累積されることが、ここでは注意されるべきである。
【0173】
同様に、累積バッファ57は、問題のタイルに関する全てのサブタイルがレンダリングされて累積されるまで、(ステップ27において)外部メモリに(フレームバッファに)に書き戻されない。
【0174】
従って、累積バッファ動作のための外部メモリの帯域幅は全て消去された。
【0175】
その工程は、その場合に、出力フレームを構成する次のタイルに関して反復され、従って、累積バッファを消去し、そして、出力フレームの次のタイルに関する工程を開始するために、ステップ21及びステップ22に戻る。(これを始動させる“新タイルの開始(begin new tile)”命令が存在することになる。)
【0176】
この一連の動作は、その場合に、そのステージにおいて、出力フレームを構成する全てのタイルがカバーされたということがステップ21において分かるまで、(図3に示されるように)反復されると共に、フレームバッファは、次に表示され得る(または、そうでない場合は要望通りに出力する)完全な累積された出力フレームを含むべきである。問題のフレームに関する累積は、従って終了することになる(ステップ28)。
【0177】
図4及び図5は、本発明によるグラフィックプロセッサの動作の第2の好ましい実施例を示す。
【0178】
図4から見ることができるように、この実施例における本発明の方法の動作は、上述されると共に図3に示される以前の実施例の動作と類似しているが、以前の実施例では、関連するサブタイルのレンダリングを完了する代わりに、それをタイルバッファにセーブすると共に、その時にだけ累積パスにおける累積バッファにサブタイルを累積し(図3におけるステップ25及びステップ26)、この実施例では、各サブタイルは、レンダリングパスが進行すると、累積バッファ57に“直接”レンダリングされる(図4におけるステップ30)。一度任意のレンダリングパス(サブタイル)が完了されたならば、この装置は、従って、それが累積パスの必要性を回避する利点を有する。
【0179】
図5は、更に詳細に図4のステップ30における累積バッファへの“直接的レンダリング”を概略的に示す。
【0180】
(図5において示された値“k”及び“-k”は、当業者によって認識されることになるように、レンダリングされた値に対して、それらを累積バッファに累積しているときに適用されるべき適切な重みである。重みkは、適切に格納され得ると共に、必要とされたときに要望通りにプロセッサによってフェッチされ得る。上述のように、重み情報は、好ましくは、“新タイルの開始(begin new tile)”命令及び“新サブタイルの開始(begin new sub-tile)”命令の一部分として提供される。)
【0181】
図5において示されたように、この装置において、任意のサブタイルをレンダリングしている場合に、サブタイルに関してレンダリングされる新しいフラグメントF(i、j)が、サブタイルに関するタイルバッファにおいてフラグメントが対応する現存するレンダリングされたサンプリング位置の値を置き換える(すなわち、新しいフラグメントは、タイルバッファにおける現存するフラグメント(サンプリング位置の値)を上書きする)と判定された場合はいつでも、新しくレンダリングされたフラグメント(すなわちそのレンダリングされた値)は、(タイルをレンダリングしているときの通常の場合であるように)問題のサンプリング位置に関するタイルバッファ56に格納される。(本実施例では、適当な深さ(Z)の検査装置が、新しいフラグメントが既存のフラグメントを上書きするべきであるかどうかを判定するのに使用される。必要に応じて、新しいフラグメントが現存するフラグメントを上書きするべきであるかどうかを判定するための他の適当なメカニズムが使用されるであろう。)
【0182】
しかしながら、問題のサンプリング位置に関して単に新しいフラグメントの値を現存する累積バッファ値に加えるよりむしろ、本実施例では、そのフラグメント位置に関する(問題のサンプリング位置に関する)以前のタイルバッファ値(すなわち新しいフラグメントと交換されているタイルバッファ値)T(i、j)は、問題のフラグメント位置に関する(サンプリング位置に関する)“補正された”累積バッファ値32を提供するために、図5において示されたように、取り消しステージ31(undo stage 31)において、問題のサンプリング位置に関する現在の累積バッファ値A(i、j)から最初に適切に減じられる。
【0183】
そして、図5において示されたように、問題のサンプリング位置または複数のサンプリング位置に関する現在のフラグメントF(i、j)値33は、問題のサンプリング位置に関する累積バッファに格納するための新しい累積バッファ値NA(i、j)35を提供するために、そのように判定された(複数の)“補正された”累積バッファ値32と共に、累積ステージ34において適切に累積される。
【0184】
これの効果は、問題のフラグメントが対応するサンプリング位置に関する新しいレンダリングされた値が累積バッファ57に累積される前に、以前のタイルバッファ値(すなわち新しくレンダリングされたフラグメントによって上書きされているタイルバッファ値)が累積バッファ値に及ぼす影響を取り除く(取り消す)ことである。
【0185】
“取り消し”動作は、従って、レンダリングされたサブタイル内のいくらかのサンプリング位置が何度も上書きされ得る可能性を明らかにするが、それにもかかわらず、累積バッファは、任意のサンプリング位置に関するサブタイルに、最終値だけを累積するべきである。
【0186】
例えば、もし、F1(1、1)、F2(1、1)、及びF3(1、1)が、任意のサブタイルのサンプリング位置(1、1)に書かれることになる3つのフラグメントを表すと共に、F1(1、1)がバックグラウンドカラーを上書きし、F2(1、1)がF1(1、1)を上書きし、そしてF3(1、1)がF2(1、1)を上書きするならば、その場合に、問題のサブタイルに関する特にこのサンプリング位置に関して累積バッファに累積するべき正しい値は、F3(1、1)であるべきである。
【0187】
しかしながら、本実施例の工程は、上述のように、各新しいレンダリングされたフラグメントを累積バッファに(それが現存するフラグメントによってふさがれない限り)即座に累積することによって機能する。取り消しステージ31がない場合、これは、この場合にはF1(1、1)、F2(1、1)、及びF3(1、1)、そしてバックグラウンドカラー値を累積する、累積バッファになるであろう。それは、誤った累積バッファ値を与えるであろう。
【0188】
取り消しステージ31は、累積バッファ57において、以前に累積された値の影響を取り消す(取り去る)ことによって、この問題を取り除くと共に、ここでは、それらの値は、後の値によって上書きされるべきである。特に、この例において、F1(1、1)が問題のサンプリング位置に関するバックグラウンドカラーを上書きすることになると判定される場合、取り消しステージ31は、最初に、位置(1、1)に関して、累積バッファ57からバックグラウンドカラー値を減じることになり、その結果、累積ステップの終わりにおいて、累積バッファは、位置(1、1)に関する値F1だけを格納することになる。同様に、値F2(1、1)がサンプリング位置(1、1)に関する現在値を上書きすることになると判定される場合、取り消しステージ31は、最初に、位置(1、1)に関して、累積バッファ57から現在値F1を減じることになり、その結果、累積ステージ34は、その場合に、位置(1、1)に関して、値F2が累積バッファ57に格納されるという結果に終わると共に、この処理が繰り返される。
【0189】
従って、認識されることになるように、図5において示された有効な工程は、現存するフラグメントを上書きすることになる新しいフラグメントがレンダリング工程を終了させる場合にはいつでも、フラグメントのレンダリングの結果として生じる新しいタイルバッファ値が累積バッファに加えられる前に、適切なサンプリング位置に関する古いタイルバッファ値が、累積バッファから減じられるように機能する。これは、従って、全ての上書きの状況を正しく扱い、累積バッファのための通常の“累積パス”の手順として、同じ出力を生成することになる。
【0190】
言うまでもなく、他の装置構成が可能であろう。
【0191】
この実施例において、累積バッファ57は、この方法の動作を容易にするために、固定小数点値によって格納される。
【0192】
(上述のように)プリミティブがレンダリングされない場所でフレームが得ることになるデフォルトのバックグラウンドカラーにタイルバッファが初期化される場合に、そして、この実施例において、あらゆる任意のサンプリング位置に関して第1のフラグメントが累積バッファ57に累積されるとき、そのバックグラウンド値が取り消しステージ31によって減じられる場合に累積バッファが適切な値を有することを保証するために、累積バッファ57は、好ましくは、全てのサンプリング位置に関して、そのバックグラウンドデフォルトカラーを累積するように、最初に設定される。
【0193】
この装置において、各フラグメントは、それがレンダリングすることを完了すると、それは、通常通りタイルバッファ56に書き込まれるが、しかし、累積バッファ57が更新される前に、タイルの全てのフラグメントがレンダリングを完了すること(すなわち問題のサブタイルに関して完全にレンダリングされること)を待つ代わりに、累積バッファ57は、タイルに関する新しいフラグメントがタイルバッファに加えられることになるとすぐに更新されるということが、上記から分かり得る。これは、従って、各サブタイルの間の累積パスの必要性を消去し、それによって性能を増加させる。
【0194】
当業者によって認識されることになるように、様々な修正が本発明に行われると共に、必要に応じて本発明の他の装置が使用されるであろう。
例えば、フレームの次のタイルに進む前に、任意のタイルに関して順番に全てのサブタイルをレンダリングする代りに、必要に応じて、例えば、タイルバッファの構造が許すならば、次の2つ(以上)のタイルのセットに進む前に、2つ(以上)の異なるタイルに関するサブタイルの処理をインタリーブすることが可能であろう。これは、例えば、図3において示されたように累積工程が実行される場合に、そして、タイルバッファからタイルライトバックユニットを介してタイル累積バッファにデータを移動することによって、更に効率的であり得る。
【0195】
同様に、個々のタイルが全て相互から独立しているので、それらは、相互とは無関係に処理され得ると共に、従って、必要に応じて、例えば、並列に、または相互間でインタリーブされて処理され得る。
【0196】
それと同時に、例えば、タイル処理が命令リストから順番に命令を処理すると共に、各命令が完了するのにいくらかの時間を要するが、しかし、(いくらかの命令が並列に処理され得るように(そして典型的に並列に処理されることになるように))新しい命令を処理することが前の命令の処理が始められた直後に始まり、そして、各タイルに関する命令のブロックが、お互いの後に処理のために列に並ばせられる場合、その場合に、もしそうなら、命令は、並列に処理され得るか、及び並列に処理されることになるので、そのような装置では、異なるタイルからの命令が同時に処理されている(すなわち2つ以上のタイルが同時に処理されている)時があり得る。
【0197】
しかしながら、2つ以上のタイルのそのような同時の、及び/または、並列の処理が存在する場合でさえ、他のタイルが開始される前に、いくつかのタイルの処理が終了するのは事実であるということが、注意されるべきである。
【0198】
上記から分かるように、本発明は、少なくともその好ましい実施例において、累積バッファ動作が必要とされる場合に、完全なフレーム累積バッファを提供する必要性を取り除く。これは、従って、累積バッファ動作を行う場合の(外部の)メモリ帯域幅を非常に減らすと共に、その結果、従来の累積バッファ動作と比較して、レンダリング速度の有意の増加を提供する。
【0199】
とりわけ、それは、本発明が提供し得る有意の帯域幅削減のおかげで、はるかに低い電力使用を容易にし、それによって、例えば、ポータブル及び組み込み式グラフィックシステムそして装置のような、より低い電力環境における累積バッファ動作を容易にする。
【0200】
本発明の好ましい実施例において、これは、少なくとも、フレーム全体を横断するよりむしろ、タイルごとに基づく累積工程を実行することによって達成される。更に、累積バッファは、グラフィックプロセッサの内部に、そして、好ましくは、グラフィックプロセッサの既存のタイルバッファを使用して、実装され得る。本発明の実施例は、更に、レンダリングが進行すると、累積工程を実行し、それによって、個別の累積パスの必要性を排除する。
【0201】
本発明の好ましい実施例において、これは、少なくとも、使用されるべきタイルベースのグラフィック処理システムの現存するロジックが、追加費用なしで累積バッファ動作を提供することを可能にすると共に、本発明の好ましい実施例において、少なくとも、テクスチャーキャッシュ及び他のキャッシュ検索の削減と一緒に、従来のレンダラーと比較してかなりの速度増加を提供することを可能にする。
【符号の説明】
【0202】
1 フレーム
2、3、4、5 サブ領域
6 フレーム
31 取り消しステージ
32 補正された累積バッファ値
33 現在のフラグメントF(i、j)値
34 累積ステージ
35 新しい累積バッファ値NA(i、j)
50 ラスタライザー
51 レンダラー
52 タイルバッファ
53 ダウンサンプリングユニット
54 フレームバッファ
55 表示装置
56 通常のタイルバッファ
57 累積バッファ

【特許請求の範囲】
【請求項1】
フレームに関するいくらかのレンダリングパスの累積された結果を、タイルベースのグラフィック処理システムにおける出力フレームとして提供する方法であって、前記方法は、
各タイルに関して、前記タイルに関する前記レンダリングパスの前記累積された結果を含む出力タイルを生成するために、そして、前記レンダリングパスの全て、及びそれらのレンダリングパスの前記結果の前記累積が、その工程が他のタイルのために始められる前に少なくとも1つのタイルに関して完了するように、前記いくらかのレンダリングパスを実行し、前記出力フレームが個別に分割されることになっている各タイルに関して、それらのレンダリングパスの前記結果を累積する段階と、
前記フレームに関する前記いくらかのレンダリングパスの前記累積された結果を含む出力フレームを提供するために、そのように生成された前記出力タイルを結合する段階と
を含むことを特徴とする方法。
【請求項2】
前記グラフィック処理システムが、
出力されるべきフレームの第1のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに複数のレンダリングパスを個別に実行し、前記タイルに関して、または前記タイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積する段階と、
前記タイルに関する、または前記タイルのセットの各タイルに関する前記累積されたタイル出力を、レンダーターゲットに対して出力する段階と、
その後に、出力されるべき前記フレームの第2のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに前記複数のレンダリングパスを個別に実行し、前記第2のタイルに関して、または前記第2のタイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積する段階と、
前記第2のタイルに関する、または前記第2のタイルのセットの各タイルに関する前記累積されたタイル出力を、前記レンダーターゲットに対して出力する段階と、
前記出力フレームの残りのタイルに関してこの工程を反復する段階とを含み、
それによって、前記出力フレームに関するいくらかのレンダリングパスの前記累積された結果を含む出力フレームが、いくらかのレンダリングパスを実行すると共に、タイル毎ベースでそれらのレンダリングパスの結果を累積することによって生成される
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記出力フレームを構成する前記タイルが、一つずつ順繰りに処理される
ことを特徴とする請求項1または請求項2のいずれか一項に記載の方法。
【請求項4】
複数のタイルが、同時に、レンダリング工程及び累積工程を受ける
ことを特徴とする請求項1または請求項2のいずれか一項に記載の方法。
【請求項5】
タイルに関するレンダリングパスの結果を、前記グラフィック処理システムのグラフィックプロセッサのタイルバッファに累積する段階を含む
ことを特徴とする請求項1から請求項4のいずれか一項に記載の方法。
【請求項6】
タイルに関するレンダリングパスが完了された場合に、そのレンダリングパスの前記結果を前記タイルに関する前記レンダリングパスの前記累積された結果が累積パスに格納される累積バッファに累積する段階を含む
ことを特徴とする請求項1から請求項5のいずれか一項に記載の方法。
【請求項7】
タイルに関するレンダリングパスの前記レンダリング結果を、前記レンダリングパスが進行するのに従って前記タイルに関する前記レンダリングパスの前記累積された結果が格納される累積バッファに累積する段階を含む
ことを特徴とする請求項1から請求項5のいずれか一項に記載の方法。
【請求項8】
前記グラフィック処理システムが、グラフィックプロセッサと、前記グラフィックプロセッサによって実行されるべき命令を前記グラフィックプロセッサに送信する前記グラフィックプロセッサのためのドライバとを備え、前記方法は、
前記ドライバが、
累積バッファ動作が作り出されることをフレームが必要としているという指示を受信し、
前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合し、
出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信する段階を更に含み、
各上記新サブタイル開始命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の1つを開始するように、前記グラフィックプロセッサに指示する
ことを特徴とする請求項1から請求項7のいずれか一項に記載の方法。
【請求項9】
タイルベースのグラフィックプロセッサのためにドライバを作動させる方法であって、前記方法は、
前記ドライバが、
累積バッファ動作が作り出されることをフレームが必要としているという指示を受信し、
前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合し、
出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信する段階を含み、
各上記新サブタイル開始命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の1つを開始するように、前記グラフィックプロセッサに指示する
ことを特徴とする方法。
【請求項10】
タイルベースのグラフィック処理システムであって、
各タイルに関して、前記タイルに関するレンダリングパスの累積された結果を含む出力タイルを生成するために、そして、前記レンダリングパスの全て、及びそれらのレンダリングパスの前記結果の前記累積が、その工程が他のタイルのために始められる前に少なくとも1つのタイルに関して完了するように、前記いくらかのレンダリングパスを実行し、フレームが個別に分割されることになっている各タイルに関して、それらのレンダリングパスの前記結果を累積するための手段と、
各タイルに関する前記いくらかのレンダリングパスの前記累積された結果を含む出力フレームを提供するために、そのように生成された前記出力タイルを結合するための手段と
を備えることを特徴とするタイルベースのグラフィック処理システム。
【請求項11】
出力されるべきフレームの第1のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに複数のレンダリングパスを個別に実行し、
前記タイルに関して、または前記タイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積すると共に、前記タイルに関する、または前記タイルのセットの各タイルに関する前記累積されたタイル出力を、レンダーターゲットに対して出力するための手段と、
その後に、出力されるべき前記フレームの第2のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに前記複数のレンダリングパスを個別に実行し、前記第2のタイルに関して、または前記第2のタイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積すると共に、前記第2のタイルに関する、または前記第2のタイルのセットの各タイルに関する前記累積されたタイル出力を、前記レンダーターゲットに対して出力するための手段と、
前記出力フレームの残りのタイルに関してこの工程を反復するための手段とを備え、
それによって、前記出力フレームに関するいくらかのレンダリングパスの前記累積された結果を含む表示するための出力フレームが、いくらかのレンダリングパスを実行すると共に、タイル毎ベースでそれらのレンダリングパスの結果を累積することによって生成される
ことを特徴とする請求項10に記載のタイルベースのグラフィック処理システム。
【請求項12】
前記出力フレームを構成する前記タイルが、一つずつ順繰りに処理される
ことを特徴とする請求項10または請求項11のいずれか一項に記載のシステム。
【請求項13】
複数のタイルが、同時に、レンダリング工程及び累積工程を受ける
ことを特徴とする請求項10または請求項11のいずれか一項に記載のシステム。
【請求項14】
タイルに関する前記レンダリングパスの結果を累積するために前記グラフィック処理システムのグラフィックプロセッサにチップ上で提供されるタイルバッファを備える
ことを特徴とする請求項10から請求項13のいずれか一項に記載のシステム。
【請求項15】
タイルに関するレンダリングパスが完了された場合に、そのレンダリングパスの前記結果を前記タイルに関する前記レンダリングパスの前記累積された結果が格納される累積バッファに累積するために累積パスを実行するための手段を備える
ことを特徴とする請求項10から請求項14のいずれか一項に記載のシステム。
【請求項16】
タイルに関するレンダリングパスの前記レンダリング結果を、前記レンダリングパスが進行するのに従って前記タイルに関する前記レンダリングパスの前記累積された結果が格納される累積バッファに累積するための手段を備える
ことを特徴とする請求項10から請求項14のいずれか一項に記載のシステム。
【請求項17】
前記グラフィック処理システムが、
グラフィックプロセッサと、
前記グラフィックプロセッサによって実行されるべき命令を前記グラフィックプロセッサに送信する前記グラフィックプロセッサのためのドライバとを備え、
前記ドライバが、
累積バッファ動作が作り出されることをフレームが必要としているという指示を受信し、
前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合し、
出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信するように準備され、
各上記新サブタイル開始命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の1つを開始するように、前記グラフィックプロセッサに指示する
ことを特徴とする請求項10から請求項16のいずれか一項に記載のシステム。
【請求項18】
タイルベースのグラフィックプロセッサのためのドライバであって、累積バッファ動作が提示されることをフレームが必要としているという指示を受信することに応答して、前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合するための手段と、
出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信するための手段とを備え、
各上記命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の1つを開始するように、前記グラフィックプロセッサに指示する
ことを特徴とするドライバ。
【請求項19】
コンピュータプログラム要素であって、前記コンピュータプログラム要素がデータ処理手段上で実行された場合に、請求項1から請求項9のいずれか一項に記載の方法を実行するためのコンピュータソフトウェアコード部分を備えることを特徴とするコンピュータプログラム要素。

【図1A】
image rotate

【図1B】
image rotate

【図1C】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−129123(P2011−129123A)
【公開日】平成23年6月30日(2011.6.30)
【国際特許分類】
【外国語出願】
【出願番号】特願2010−280458(P2010−280458)
【出願日】平成22年12月16日(2010.12.16)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】