(57)【要約】【課題】グラフィック処理システムにおける累積バッファ動作を提供する。【解決手段】グラフィック処理システムの累積バッファ工程は、全体で累積されたフレームを構成する各サブフレームを順繰りにレンダリングすることによりではなく、累積されたフレームを構成する各個々のタイル2、3、4、及び5に異なるレンダリングパスの系列を個々に経験させることにより実行される。従って累積されたフレームを構成する各個々のタイルに関して、いくらかのサブタイル(例えば2'、2''、2'''、及び2'''')は順繰りに生成され、問題のタイルの累積されたバージョンとして出力される最終累積タイル(2acc)を提供するのに１つに累積される。これは累積されたフレーム1を構成している残りの個々のタイル3、4、及び5のそれぞれに関して反復され、個々の累積されたタイル2acc、3acc、4acc、及び5accは出力の累積されたフレーム6を提供するのに１つに結合される。【選択図】図１Ｃ
2011129123.tif 000002
【特許請求の範囲】
【請求項１】
フレームに関するいくらかのレンダリングパスの累積された結果を、タイルベースのグラフィック処理システムにおける出力フレームとして提供する方法であって、前記方法は、
各タイルに関して、前記タイルに関する前記レンダリングパスの前記累積された結果を含む出力タイルを生成するために、そして、前記レンダリングパスの全て、及びそれらのレンダリングパスの前記結果の前記累積が、その工程が他のタイルのために始められる前に少なくとも１つのタイルに関して完了するように、前記いくらかのレンダリングパスを実行し、前記出力フレームが個別に分割されることになっている各タイルに関して、それらのレンダリングパスの前記結果を累積する段階と、
前記フレームに関する前記いくらかのレンダリングパスの前記累積された結果を含む出力フレームを提供するために、そのように生成された前記出力タイルを結合する段階と
を含むことを特徴とする方法。
【請求項２】
前記グラフィック処理システムが、
出力されるべきフレームの第１のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに複数のレンダリングパスを個別に実行し、前記タイルに関して、または前記タイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積する段階と、
前記タイルに関する、または前記タイルのセットの各タイルに関する前記累積されたタイル出力を、レンダーターゲットに対して出力する段階と、
その後に、出力されるべき前記フレームの第２のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに前記複数のレンダリングパスを個別に実行し、前記第２のタイルに関して、または前記第２のタイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積する段階と、
前記第２のタイルに関する、または前記第２のタイルのセットの各タイルに関する前記累積されたタイル出力を、前記レンダーターゲットに対して出力する段階と、
前記出力フレームの残りのタイルに関してこの工程を反復する段階とを含み、
それによって、前記出力フレームに関するいくらかのレンダリングパスの前記累積された結果を含む出力フレームが、いくらかのレンダリングパスを実行すると共に、タイル毎ベースでそれらのレンダリングパスの結果を累積することによって生成される
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記出力フレームを構成する前記タイルが、一つずつ順繰りに処理される
ことを特徴とする請求項１または請求項２のいずれか一項に記載の方法。
【請求項４】
複数のタイルが、同時に、レンダリング工程及び累積工程を受ける
ことを特徴とする請求項１または請求項２のいずれか一項に記載の方法。
【請求項５】
タイルに関するレンダリングパスの結果を、前記グラフィック処理システムのグラフィックプロセッサのタイルバッファに累積する段階を含む
ことを特徴とする請求項１から請求項４のいずれか一項に記載の方法。
【請求項６】
タイルに関するレンダリングパスが完了された場合に、そのレンダリングパスの前記結果を前記タイルに関する前記レンダリングパスの前記累積された結果が累積パスに格納される累積バッファに累積する段階を含む
ことを特徴とする請求項１から請求項５のいずれか一項に記載の方法。
【請求項７】
タイルに関するレンダリングパスの前記レンダリング結果を、前記レンダリングパスが進行するのに従って前記タイルに関する前記レンダリングパスの前記累積された結果が格納される累積バッファに累積する段階を含む
ことを特徴とする請求項１から請求項５のいずれか一項に記載の方法。
【請求項８】
前記グラフィック処理システムが、グラフィックプロセッサと、前記グラフィックプロセッサによって実行されるべき命令を前記グラフィックプロセッサに送信する前記グラフィックプロセッサのためのドライバとを備え、前記方法は、
前記ドライバが、
累積バッファ動作が作り出されることをフレームが必要としているという指示を受信し、
前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合し、
出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信する段階を更に含み、
各上記新サブタイル開始命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の１つを開始するように、前記グラフィックプロセッサに指示する
ことを特徴とする請求項１から請求項７のいずれか一項に記載の方法。
【請求項９】
タイルベースのグラフィックプロセッサのためにドライバを作動させる方法であって、前記方法は、
前記ドライバが、
累積バッファ動作が作り出されることをフレームが必要としているという指示を受信し、
前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合し、
出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信する段階を含み、
各上記新サブタイル開始命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の１つを開始するように、前記グラフィックプロセッサに指示する
ことを特徴とする方法。
【請求項１０】
タイルベースのグラフィック処理システムであって、
各タイルに関して、前記タイルに関するレンダリングパスの累積された結果を含む出力タイルを生成するために、そして、前記レンダリングパスの全て、及びそれらのレンダリングパスの前記結果の前記累積が、その工程が他のタイルのために始められる前に少なくとも１つのタイルに関して完了するように、前記いくらかのレンダリングパスを実行し、フレームが個別に分割されることになっている各タイルに関して、それらのレンダリングパスの前記結果を累積するための手段と、
各タイルに関する前記いくらかのレンダリングパスの前記累積された結果を含む出力フレームを提供するために、そのように生成された前記出力タイルを結合するための手段と
を備えることを特徴とするタイルベースのグラフィック処理システム。
【請求項１１】
出力されるべきフレームの第１のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに複数のレンダリングパスを個別に実行し、
前記タイルに関して、または前記タイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積すると共に、前記タイルに関する、または前記タイルのセットの各タイルに関する前記累積されたタイル出力を、レンダーターゲットに対して出力するための手段と、
その後に、出力されるべき前記フレームの第２のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに前記複数のレンダリングパスを個別に実行し、前記第２のタイルに関して、または前記第２のタイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積すると共に、前記第２のタイルに関する、または前記第２のタイルのセットの各タイルに関する前記累積されたタイル出力を、前記レンダーターゲットに対して出力するための手段と、
前記出力フレームの残りのタイルに関してこの工程を反復するための手段とを備え、
それによって、前記出力フレームに関するいくらかのレンダリングパスの前記累積された結果を含む表示するための出力フレームが、いくらかのレンダリングパスを実行すると共に、タイル毎ベースでそれらのレンダリングパスの結果を累積することによって生成される
ことを特徴とする請求項１０に記載のタイルベースのグラフィック処理システム。
【請求項１２】
前記出力フレームを構成する前記タイルが、一つずつ順繰りに処理される
ことを特徴とする請求項１０または請求項１１のいずれか一項に記載のシステム。
【請求項１３】
複数のタイルが、同時に、レンダリング工程及び累積工程を受ける
ことを特徴とする請求項１０または請求項１１のいずれか一項に記載のシステム。
【請求項１４】
タイルに関する前記レンダリングパスの結果を累積するために前記グラフィック処理システムのグラフィックプロセッサにチップ上で提供されるタイルバッファを備える
ことを特徴とする請求項１０から請求項１３のいずれか一項に記載のシステム。
【請求項１５】
タイルに関するレンダリングパスが完了された場合に、そのレンダリングパスの前記結果を前記タイルに関する前記レンダリングパスの前記累積された結果が格納される累積バッファに累積するために累積パスを実行するための手段を備える
ことを特徴とする請求項１０から請求項１４のいずれか一項に記載のシステム。
【請求項１６】
タイルに関するレンダリングパスの前記レンダリング結果を、前記レンダリングパスが進行するのに従って前記タイルに関する前記レンダリングパスの前記累積された結果が格納される累積バッファに累積するための手段を備える
ことを特徴とする請求項１０から請求項１４のいずれか一項に記載のシステム。
【請求項１７】
前記グラフィック処理システムが、
グラフィックプロセッサと、
前記グラフィックプロセッサによって実行されるべき命令を前記グラフィックプロセッサに送信する前記グラフィックプロセッサのためのドライバとを備え、
前記ドライバが、
累積バッファ動作が作り出されることをフレームが必要としているという指示を受信し、
前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合し、
出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信するように準備され、
各上記新サブタイル開始命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の１つを開始するように、前記グラフィックプロセッサに指示する
ことを特徴とする請求項１０から請求項１６のいずれか一項に記載のシステム。
【請求項１８】
タイルベースのグラフィックプロセッサのためのドライバであって、累積バッファ動作が提示されることをフレームが必要としているという指示を受信することに応答して、前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合するための手段と、
出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信するための手段とを備え、
各上記命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の１つを開始するように、前記グラフィックプロセッサに指示する
ことを特徴とするドライバ。
【請求項１９】
コンピュータプログラム要素であって、前記コンピュータプログラム要素がデータ処理手段上で実行された場合に、請求項１から請求項９のいずれか一項に記載の方法を実行するためのコンピュータソフトウェアコード部分を備えることを特徴とするコンピュータプログラム要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィック処理システム、そして、特にグラフィック処理システムにおけるいわゆる“累積バッファ”動作に関係する。
【背景技術】
【０００２】
当該技術において知られているように、グラフィック処理には、一般的に“累積バッファ”と言われる工程がある。例えば、この工程は、デスクトップＯｐｅｎＧＬ標準の一部分である、周知の特徴である。
【０００３】
“累積バッファ”工程は、基本的に、例えばいくらかの異なる視角が提供する“フレーム”のいくらかの異なるバージョンをレンダリングすると共に、フレームの全ての異なるレンダリングされた所望の加重平均のバージョンを、１つのバッファ（前記“累積バッファ”）に累積することを必要とする。異なるフレームのこの結果として生じる“累積バッファ”の平均されたバージョンは、その場合に、出力フレームとして（そして例えば通常表示されるべきフレームとして）使用される。
【０００４】
“累積バッファ”は、概して、例えば被写界深度（depth of field）、モーションブラー（motion blur）、ソフトシャドウ（soft shadow）、及びアンチエイリアシング（anti-aliasing）のような、多くの異なる効果をエミュレートするために使用される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７０２３４３７号明細書
【特許文献２】英国特許出願公開第２３４３５９８号明細書
【特許文献３】国際公開第２００９／０６８８９５号明細書
【特許文献４】英国特許出願公開第２４２０６７９号明細書
【特許文献５】米国特許第６２５２６１０号明細書
【非特許文献】
【０００６】
【非特許文献１】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
【非特許文献２】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
【発明の概要】
【発明が解決しようとする課題】
【０００７】
“累積バッファ”を用いる１つの欠点は、現存する実装において、それが、累積バッファとして機能する（グラフィックプロセッサの）外部のフルフレーム浮動小数点バッファの使用を必要とすることである。これは、より強力なデスクトップグラフィック処理システムの場合には許容され得る一方、本出願人は、そのような装置が、携帯機器における使用のための内蔵されたグラフィック処理システム及び／または複数のグラフィック処理システムのような、より低い電力を供給されるグラフィック処理システムにおいて望ましくないということを認識した。実際には、この理由及び他の理由のために、例えば、ＯｐｅｎＧＬＥＳ標準は、累積バッファの使用を含まない。
【０００８】
本出願人は、従って、グラフィック処理システムにおける累積バッファの動作及び実装に、改良の余地が残っていると思量する。
【課題を解決するための手段】
【０００９】
本発明の第１の特徴によれば、フレームに関するいくらかのレンダリングパスの累積された結果を、タイルベースのグラフィック処理システムにおける出力フレームとして提供する方法であって、前記方法は、各タイルに関して、前記タイルに関する前記レンダリングパスの前記累積された結果を含む出力タイルを生成するために、そして、前記レンダリングパスの全て、及びそれらのレンダリングパスの前記結果の前記累積が、その工程が他のタイルのために始められる前に少なくとも１つのタイルに関して完了するように、前記いくらかのレンダリングパスを実行し、前記出力フレームが個別に分割されることになっている各タイルに関して、それらのレンダリングパスの前記結果を累積する段階と、前記フレームに関する前記いくらかのレンダリングパスの前記累積された結果を含む前記出力フレームを提供するために、そのように生成された前記出力タイルを結合する段階とを含むことを特徴とする方法が提供される。
【００１０】
本発明の第２の特徴によれば、タイルベースのグラフィック処理システムであって、各タイルに関して、前記タイルに関するレンダリングパスの累積された結果を含む出力タイルを生成するために、そして、前記レンダリングパスの全て、及びそれらのレンダリングパスの前記結果の前記累積が、その工程が他のタイルのために始められる前に少なくとも１つのタイルに関して完了するように、前記いくらかのレンダリングパスを実行し、出力フレームが個別に分割されることになっている各タイルに関して、それらのレンダリングパスの前記結果を累積するための手段と、各タイルに関する前記いくらかのレンダリングパスの前記累積された結果を含む出力フレームを提供するために、そのように生成された前記出力タイルを結合するための手段とを備えることを特徴とするタイルベースのグラフィック処理システムが提供される。
【００１１】
本発明の第３の特徴によれば、タイルベースのグラフィック処理システムを操作する方法であって、前記グラフィック処理システムが、出力されるべきフレームの第１のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに複数のレンダリングパスを個別に実行し、前記タイルに関して、または前記タイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積する段階と、前記タイルに関する、または前記タイルのセットの各タイルに関する前記累積されたタイル出力を、出力レンダーターゲット（output render target）、好ましくはフレームバッファに対して出力する段階と、その後に、出力されるべき前記フレームの第２のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに前記複数のレンダリングパスを個別に実行し、前記第２のタイルに関して、または前記第２のタイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積する段階と、前記第２のタイルに関する、または前記第２のタイルのセットの各タイルに関する前記累積されたタイル出力を、前記出力レンダーターゲット、好ましくは前記フレームバッファに対して出力する段階と、前記出力フレームの残りのタイルに関してこの工程を反復する段階とを含み、それによって、前記出力フレームに関するいくらかのレンダリングパスの前記累積された結果を含む出力フレームが、いくらかのレンダリングパスを実行すると共に、タイル毎ベースでそれらのレンダリングパスの結果を累積することによって生成されることを特徴とする方法が提供される。
【００１２】
本発明の第４の特徴によれば、タイルベースのグラフィック処理システムであって、出力されるべきフレームの第１のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに複数のレンダリングパスを個別に実行し、前記タイルに関して、または前記タイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積すると共に、前記タイルに関する、または前記タイルのセットの各タイルに関する前記累積されたタイル出力を、出力レンダーターゲット、好ましくはフレームバッファに対して出力するための手段と、その後に、出力されるべき前記フレームの第２のタイルまたは複数のタイルのセットに関して、前記タイルに、または前記セットの各タイルに前記複数のレンダリングパスを個別に実行し、前記第２のタイルに関して、または前記第２のタイルのセットの各タイルに関して、前記タイルに関する前記複数のレンダリングパスの前記累積された結果を表すタイル出力を提供するために、それぞれのタイルに関する、または各それぞれのタイルに関するそれらのレンダリングパスの結果を累積すると共に、前記第２のタイルに関する、または前記第２のタイルのセットの各タイルに関する前記累積されたタイル出力を、前記出力レンダーターゲット、好ましくは前記フレームバッファに対して出力するための手段と、前記出力フレームの残りのタイルに関してこの工程を反復するための手段とを備え、それによって、前記出力フレームに関するいくらかのレンダリングパスの前記累積された結果を含む表示するための出力フレームが、いくらかのレンダリングパスを実行すると共に、タイル毎ベースでそれらのレンダリングパスの結果を累積することによって生成されることを特徴とするタイルベースのグラフィック処理システムが提供される。
【００１３】
本発明は、上述のように、フレームに関する複数のレンダリングパスの累積された結果である出力フレームの供給、すなわち“累積バッファ”の動作に関係する。
【００１４】
しかしながら、何度も相次いで全てのフレームをレンダリングすると共に、結果を累積することによって“累積された”出力フレームを生成するよりむしろ、本発明では、累積動作は、タイル毎ベースで実行されると共に、そのように累積されたタイルは、出力の“累積された”フレームを提供するために結合される。すなわち、複数のレンダリングパス及びそれらの結果の累積は、個別に各タイルに関して実行されると共に、各個別のタイルの結果は、その場合に、出力の“累積フレーム”（例えばそれは表示されることになる）を提供するために結合される。
【００１５】
従って、本発明は、任意のタイルに関して、そのタイルに連続して複数のレンダリングパスを経験させる共に、タイルに関して、個別にそれらのレンダリングパスの結果を適切な（希望）の方法で累積することによって機能する。
【００１６】
従って、実際には、もし従来の累積バッファの実装において、任意の“サブフレーム”を生成するために、次の“サブフレーム”が開始される前に（そして全体のフレームに次のレンダリングパスを経験させる前に）、任意のレンダリングパスが全体のフレーム（すなわちフレームの全てのタイル）を横断して実行されると考えられるならば、本発明におけるレンダリングの順序は、その代りに、（フレームの全てのタイルを横断するよりむしろ、）システムが次のタイル（または、タイルのセット）に動いて、そしてそのタイル（またはタイルのセットのタイル）に一連のレンダリングパスを実行する前に、一連のレンダリングパスが、最初に、任意のタイル（またはタイルのセットのタイル）に相次いで実行されることになり、この処理が繰り返される。従って、実際には、別のタイル（または、タイルのセット）が開始される前に、任意のタイル（または、タイルのセット）に関する各“サブタイル”がレンダリングされ（累積され）ることになる。
【００１７】
従って、本発明では、特に、上述のように、レンダリングパス及びそれらのレンダリングパスの結果の累積は、その工程が出力フレームの他のタイルに関して開始される前に、少なくとも１つのタイルに関して（及び好ましくは少なくともいくらかのタイルに関して（すなわち複数のタイルに関して））完了する。すなわち、本発明では、累積工程は、全体として各全体のフレームを処理するよりむしろ、他のタイルに進む前に、１つ（または複数）のタイルに関して終了する。
【００１８】
同様に、従来の累積バッファ動作では、最終の累積された出力フレームが、最終の出力フレームに共に貢献するいくらかのサブフレームの累積から構成されるのに対して、本発明は、最終の累積された出力タイルを提供するために一緒に累積される任意のタイル及びいくらかのサブタイルに関する処理として見なされ得る。（その場合に、それは、全体の出力フレームを提供するために、フレームバッファに出力されると共に、他のタイルのそれぞれに関する出力の累積されたタイルと結合される。）
【００１９】
本出願人は、本発明の装置が多くの利点を授与し得るということを認識した。
【００２０】
第一に、累積動作が個別のタイルに関して実行されるので、それは、“累積バッファ”動作のために、フルフレーム“累積バッファ”を持つ必要性を取り除く。
【００２１】
更に、以下で更に論じられることになるように、本発明は、（例えば、そして好ましくは、いずれにしても存在することになるタイルバッファのような）グラフィックプロセッサ自身に存在するバッファを使用して累積工程が実装されることを可能にする。その場合に、これは、累積バッファ工程の一部分としてのあらゆる外部メモリ（及び外部メモリアクセス）の必要性を取り除く。その場合に、これは、累積バッファ動作のための外部メモリの帯域幅の除去に関して、有意の節約を提供することができる。例えば、これは、外部の累積バッファを使用する従来の累算器バッファの実装と比べると、有意の電力使用の節約、及び増加したレンダリング速度につながり得る。
【００２２】
実際には、本出願人は、本発明が、従来の累積バッファの実装とは対照的に、例えば携帯機器内の、より低い電力を供給されるグラフィック処理システム上で、累積バッファ動作を能率的に実施することを可能にすると思量する。更に、例えば携帯機器内のような、より低い電力供給状態における累積バッファ工程の使用を容易にすることは、そのような機器における有意のグラフィック性能の増加を可能にすることになる。
【００２３】
上で論じられたように、本発明は、タイルベースのグラフィック処理システムにおいて実行されることを意図している。
【００２４】
当該技術において知られているように、タイルベースレンダリングにおいて、レンダリング工程の２次元の出力配列または出力フレーム（“レンダーターゲット（render target）”）（例えば、及び典型的に、それはレンダリングされた場面を表示するために表示されることになる）は、レンダリング工程において通常は“タイル”と呼ばれる複数の小領域またはサブ領域にサブ分割またはサブ区分される。タイル（サブ領域）は、それぞれ別々に（概して相次いで）レンダリングされる。レンダリングされたタイル（サブ領域）は、その場合に、例えば表示するための完全な出力配列（出力フレーム）（レンダーターゲット）を提供するために、再結合される。
【００２５】
それらのタイルは、従って、レンダリング工程がその上で動作するレンダーターゲット領域（出力フレーム）のサブ分割と考えられ得る。そのような装置において、レンダーターゲット領域（出力フレーム）は、概して、規則正しいサイズに分割されると共に、成形されたタイル（それらは、通常、例えば正方形かまたは長方形である）であるが、しかし、これは、不可欠ではない。
【００２６】
“タイリング”レンダリング及び“タイルベース”レンダリングに関して一般的に使用される他の用語は、“チャンキング”(サブ領域は“チャンク”と呼ばれる）、及び“バケット”レンダリングを含む。用語“タイル”及び“タイリング”は、ここでは便宜上使用されることになるが、しかし、これらの用語が全ての選択肢、同義語、および技術を包含することを意図すると理解されるべきである。
【００２７】
本願発明においてレンダーターゲット（出力フレーム）がレンダリング目的のために分割されるタイルは、あらゆる所望のサイズや形状、及びあらゆる適当なサイズや形状であり得る。不可欠ではないが、当該技術において示されているように、タイルは、全て同じ大きさ及び形状であることが望ましい。好ましい実施例において、各タイルは、矩形であると共に、サイズにおいて、好ましくは、１６×１６、３２×３２、または１６×８のサンプリング位置（sampling position）を有する。
【００２８】
特に好ましい実施例においては、本願発明の目的のためにフレームが分割されるタイルは、レンダリング工程がその“通常の”レンダリング動作において影響することになるタイルに等しいか、またはそのタイルに類似している一方、本願発明は、必要に応じて“通常の”レンダリングタイルと異なるサイズ及び／または形状のタイルを使用して実行され得るということが、ここでは更に注意されるべきである。例えば、本願発明の“累積バッファ”工程が影響する“タイル”は、必要に応じて複数の“レンダリングタイル”または“レンダリングタイル”のサブ領域を含み得る。
【００２９】
上述のように、本願発明の重要な特徴は、複数のレンダリングパス及びそれらのレンダリングパスの結果の累積が、次のレンダリングパスが開始される前に全てのフレームを横断して各レンダリングパスを実行することによってよりむしろ、タイル毎ベースで実行される、ということである。すなわち、任意のタイルは、例えば、特にそのタイルに関する次のレンダリングパスが実行される前に任意のレンダリングパスが全てのタイルに関して（全てのフレームに関して）実行されるのを待つことよりむしろ、その結果が即座の連続において相次いで累積されることになっている複数のレンダリングパスを経験させられることになる。
【００３０】
従って、処理されている任意のタイルに関して、問題のタイルに関する次のレンダリングパスを開始する前に先行するレンダリングパスが他のすべてのタイルに関して完了するのを待つよりむしろ、一度そのタイルに関する先行するレンダリングパスが終了したならば、そのタイルに関する次のレンダリングパスが開始されることになる。（この効果は、上述のように、出力フレームを生成する工程の間に、タイルの内の少なくとも１つに関するレンダリングパス及び累積が、少なくとも他の１つのタイルに関するレンダリングパス及び累積が開始される前に完了することになる、ということであるだろう。（実際には、いくらかのタイルに関する、及び通常は多数のタイルに関するレンダリング工程及び累積工程が、それがタイルの他のものに関して開始される前に完了することになる。））
【００３１】
最も好ましくは、処理されている任意のタイルに関する次のレンダリングパスは、そのタイルに関する前のレンダリングパスが完了するとすぐに開始される。しかしながら、これは本質的ではないと共に、例えば以下で論じられるように、複数のタイルを並列に処理すること、及び／または、異なるタイルの処理をインタリーブすることが可能であろう。この場合、任意のタイルに関する次のレンダリングパスが開始される前に、別のタイルがレンダリングパスを経験させられることになり得る。（しかし、それは、まだ、他のタイルが開始される前に１つ以上のタイルが完了する場合であろう。）
【００３２】
最も好ましくは、１つのタイル（またはタイルのセット）は、次のタイル（またはタイルのセット）が開始される前に、（その最終の累積された出力を提供するために）完了まで処理される。同様に、好ましくは、現在処理されているタイル（またはタイルのセット）が完全に終了するまで、未処理のタイル（またはタイルのセット）は開始されない。（前のタイル（またはタイルのセット）が完了まで処理されるまで、次のタイル（またはタイルのセット）は開始されない。）（更に、上述のように、代替装置において、必要に応じて、前のタイル／タイルのセットが終了する前に、次のタイル／タイルのセットを開始することが可能であろう。）
【００３３】
特に好ましい実施例において、各タイルは、１つずつ順繰りに処理され、すなわち、それらのタイルは、相次いで順繰りに、複数のレンダリングパスと累積工程を全て受ける。この場合、各個々のタイルは、好ましくは、次のタイルが開始される前に、完了する（十分に累積される）ことになる。
【００３４】
別の好ましい実施例において、複数のタイル（複数のタイルのセット）が、同時にレンダリング工程と累積工程を受け得ると共に、好ましくは同時にレンダリング工程と累積工程を受ける。例えば、そして好ましくは、２つのタイルが、本発明の方法において処理を同時に受け得る。例えば、２つのタイルの処理はインタリーブされ得る。
【００３５】
この場合、出力の累積されたフレームを構成するタイルは、事実上、（上述のように）タイルのセットにおいて処理されていると考えられ得ると共に、各セットは、全てとは限らないが、出力フレームを構成する２つ以上（好ましくは２つ）のタイルを含んでいる。各そのようなタイルのセットは、その場合に、好ましくは次のセットが開始される前に１つのセットが完了する処理によって、順繰りに処理されることになる。
【００３６】
必要に応じて、他の装置が可能であろう。例えば、実際には、それらのタイルは相互から独立しているので、上述のように、異なるタイルを並列に処理するか、及び／または、例えば並列処理の速度を増加させるために、必要に応じて、異なるタイルをインタリーブ方式で処理することが可能であろう。この場合、前のタイル（またはタイルのセット）が終了する前に、次のタイル（またはタイルのセット）が開始され得る。それは、同様に、例えば、タイル処理のためのメカニズムが、時には、例えば異なるタイルに関する命令が並列に処理される、オーバーラップするタイルの処理になり得るような場合であり得る。しかしながら、これらの装置においてさえも、それは、まだ、他のタイルが開始される前に１つ以上のタイルが完了する場合であろう。
【００３７】
各タイルに対して実行さるべきであるレンダリングパスは、あらゆる適当な、そして所望の方法で実行され得る。認識されることになるように、表示されるべきフレームに関する累積バッファ動作を必要とするあらゆるアプリケーションに関して、グラフィックプロセッサは、典型的に、レンダリングパスの所望の系列を実行するように指示されることになり、従って、本発明においては、それは、各タイルに対して実行されるべきである所望の（定義された）レンダリングパスのこの系列である。レンダリングパスは、通常、累積バッファ動作に関して、当該技術において知られているように、例えば、異なる視角から見られた任意の場面、及び／または、異なる照明条件に支配された任意の場面、及び／または、空間的にジッタした（その位置が動かされた）任意の場面のような、異なるフレームをレンダリングする。従って、好ましい実施例において、レンダリングパスは、複数の異なるフレームをレンダリングすると共に、それは、次に、出力の累積されたフレームを提供するために累積される。
【００３８】
レンダリングパスは、好ましくは、グラフィック処理システムの通常の方法で、もしくは、グラフィック処理システムのための通常の方法で実行される。従って、好ましくは、あらゆる任意のレンダリングパスに関して、タイルがレンダリングされることになると共に、適切なレンダリングされた出力タイルが生成される。（それは、例えば、そして好ましくは、少なくとも当初は、グラフィックプロセッサのタイルバッファ内に格納されることになる。）これは、問題になっている累積された出力フレームのために必要とされる（定義された）一連のレンダリングパスにおける各レンダリングパスに関して、反復されることになる。上述のように、各レンダリングパスは、出力される全体の“累積された”タイルの“サブタイル”を生成すると見なされ得る。
【００３９】
認識されることになるように、それによって任意のタイルに関する各レンダリングパスの結果が累積され得る（すなわち、任意のタイルに関して生成された“サブタイル”を累積するための）メカニズムが必要とされることになる。これは、従来の“累積バッファ”装置における累積バッファに関する必要条件に類似しているが、しかし、フルフレームバッファである必要がある（すなわち、全てのフレームに関してレンダリング結果を同時に格納することができる）代わりに、本発明は、単一のタイル（または複数のタイルのセット)が同時に格納されることだけを必要とすることになる。従って、本発明における“累積バッファ”は、タイル（またはタイルのセット）“累積”バッファ（すなわちタイル（またはタイルの適切なセット、ここで本発明は複数のタイルのセットを同時に処理する）に関するレンダリング結果を累積することができるような大きさに作られたバッファ）であることだけを必要とすることになる。
【００４０】
このタイル“累積”バッファは、あらゆる適当な、そして所望の方法において提供され得る。例えば、それは、更に、従来の累積バッファの実装と類似の方式で、従来よりはるかに小さいが、外部のバッファとして提供され得る。
【００４１】
しかしながら、特に好ましい実施例において、そして上述のように、タイル“累積”バッファは、グラフィックプロセッサによってオンチップで（on-chip）（好ましくはグラフィックプロセッサの内部に）提供される。上述のように、これは、それが、累積工程のためのあらゆる外部メモリアクセス及び外部メモリの帯域幅の必要性を排除することができるので、有利である。更に、それが、累積工程と累積バッファのグラフィックプロセッサ自身によるチップ上の実装を容易にすることが、本発明の鍵となる利点である。この場合、グラフィックプロセッサは、従って“タイルバッファ”及び“累積バッファ”の両方を有していることになる。
【００４２】
従って、本発明の第５の特徴によれば、タイルベースのグラフィックプロセッサを作動させる方法であって、前記グラフィックプロセッサが、出力されるべきフレームのタイルに対して一連の複数のレンダリングパスを実行すると共に、それらのレンダリングパスの結果を前記グラフィックプロセッサのメモリに累積する段階と、一度それが一連のレンダリングパスを完了し、それらのレンダリングパスの結果を累積したならば、前記タイルに関する累積された結果をフレームバッファに出力する段階とを含むことを特徴とする方法が提供される。
【００４３】
本発明の第６の特徴によれば、タイルベースのグラフィックプロセッサであって、メモリと、出力されるべきフレームのタイルに対して一連の複数のレンダリングパスを実行すると共に、それらのレンダリングパスの結果を前記グラフィックプロセッサの前記メモリに累積するための手段と、一度一連のレンダリングパスが完了し、それらのレンダリングパスの結果が累積されたならば、前記タイルに関する累積された結果をフレームバッファに出力するための手段とを備えることを特徴とするタイルベースのグラフィックプロセッサが提供される。
【００４４】
当業者によって認識されることになるように、本発明のそれらの特徴は、必要に応じて、ここで説明されたあらゆる本発明の好ましい特徴及び任意の特徴の１つ以上または全部を含むことができるか、あるいは好ましくは含む。従って、例えば、複数のレンダリングパス及び累積工程は、好ましくは、累積された出力フレームを構成する各タイルまたは複数のタイルの各セットに関して順繰りに実行される。同様に、レンダリングパスの結果が累積されたグラフィックプロセッサのメモリは、（以下で論じられたように、）好ましくは、グラフィックプロセッサのタイルバッファを含む。
【００４５】
タイル累積バッファがグラフィックプロセッサ自身に提供される場合、その場合には、それは、例えば、グラフィックプロセッサ上に適当な追加のバッファ（メモリ）を提供することによって達成される。例えば、累積バッファは、“通常の”グラフィック処理ユニットの外側にあるオンチップブロックとして提供されるであろう。これは、例えば、この目的のために新しいバッファを追加することができる新しいプロセッサ上で行われ得る。
【００４６】
しかしながら、特に好ましい実施例において、タイル累積バッファは、その目的のためのグラフィックプロセッサの現存するメモリを使用することによって（すなわち、それが既に存在する別の機能を有しているので、いずれにせよ存在する、及び存在することになるグラフィックプロセッサのメモリを使用することによって）、グラフィックプロセッサ上に提供される。
【００４７】
特に好ましいそのような装置において、どんなことがあってもグラフィックプロセッサ上に存在するであろうタイルバッファは、本発明を実施する場合に使用されるべき“タイル累積”バッファを格納するためのメモリとして使用される。
【００４８】
従って、特に好ましい実施例において、グラフィックプロセッサのタイルバッファは、（通常の）タイルバッファ及びレンダリングされたタイルに関して累積された“タイル”の両方を格納する能力があり得る、及び好ましくは格納することができる（そして格納するように構成される）。
【００４９】
これらの装置において、少なくとも本発明は、グラフィックプロセッサの現存する（既に必要とされて提供されている）ロジックを用いて、すなわち追加費用なしで、実施され得る。同様に、本発明のこれらの装置は、（それらが追加のロジック（ハードウェア）を全く必要としないので）現存するグラフィックプロセッサ上で少なくとも実施され得ると共に、従って、本発明は、現存するグラフィック処理システムと互換性があり、そして現存するグラフィック処理システム上で実施され得る。
【００５０】
既にグラフィックプロセッサのタイルバッファのような現在のメモリが本発明の工程におけるタイルに関する結果を累積するために使用されることになっているこれらの装置において、そして、当業者によって認識されることになるように、タイル（またはタイルのセット）に関する結果を累積するためのメモリには余裕があることを保証することが必要であり得る。
【００５１】
必要に応じて、これは、あらゆる所望の、そして適当な方法において実行され得る。例えば、その場合に、実行されるマルチサンプリングの量は、それが例えばタイルバッファにおける余裕を解放するように、例えば４倍（４×）から２倍（２×）にまで減少する（例えば、そして好ましくは、２等分される）であろう。例えば、４つのＦＰ１６値（FP16-value）は、２つのＲＧＢＡ８８８８バッファと同じ記憶量を使用することになり、従って、４倍（４×）から２倍（２×）まで、そのような装置におけるマルチサンプリングの量を減少させることによって、“解放された”（もはや使用されない）サンプル（それらのサンプルのためのスペース）は、累積された“タイル”を格納するために使用されるであろう。１つの好ましい実施例において、これは実行される。
【００５２】
もう１つの方法として、マルチサンプル（タイル当たりに格納されるサンプル）の数を減少させる代りに、“累積”タイルのためのタイルバッファの“余裕”を提供するために、実際には、タイルの大きさが減らされる（例えば、そして好ましくは２等分される）であろう。例えば、１６×１６サンプリング点のサイズのタイルバッファを通常使用するシステムにおいて、本発明を実施する場合には、１６×８のタイルサイズがその代りに使用されるであろう。実際には、これは、一方の半分が１６×８の“通常の”タイルバッファになり、そしてもう一方の半分がタイルに関する１６×８の“累積”バッファになるように、１６×１６タイルのためのタイルバッファを２つに分割するであろう。この場合、例えば、本発明を使用する場合に、より高いレベルのマルチサンプリングが維持される（すなわち減らされない）と共に、より高いレベルの精度（例えば３２ビット値）が累積バッファに関して使用されるであろうが、しかし、それらのフレームは、更に小さなタイルサイズを用いて処理されるであろう。
【００５３】
従って、別の好ましい実施例において、本発明が使用されている場合、グラフィック処理システムが影響を与えるタイルのサイズは、それが使用することになっている（そして例えばそのタイルバッファが扱うように構成される）“通常の”タイルサイズと比較して、好ましくは半分に減らされる。
【００５４】
（グラフィック処理システムがフレームを処理するために本発明の方法において動作している場合に、本発明を実施するために必要である上述の（そして他の）工程及び技術だけが使用されることに、ここでは注意されるべきである。グラフィック処理システムは、そうでない場合は、（例えばフレームに関してバッファ動作の累積を必要としない）通常の動作を行う。）
【００５５】
本発明における任意のタイルに関するレンダリングパスの結果を累積する工程は、あらゆる適当な、そして所望の方法において実行され得る。
【００５６】
例えば、問題とされるレンダリングパスは、そのレンダリングパスに関して（上述のように）適切にレンダリングされたサブタイルを生成するために、全てのタイルに関して完了され、そして、その“サブタイル”が一度完了すると適切に“累積タイル”（バッファ）に加えられるであろう。これは、全体のサブフレームがレンダリングされると共に、次に“累積パス”におけるアキュムレータバッファに加えられる従来のアキュムレータバッファ動作と類似しているであろう。
【００５７】
従って、本発明は、１つの好ましい実施例において、これを行うと共に、累積パスステージを使用するか、あるいは含み、すなわち、それがタイルに関するレンダリングパスを完了する場合に、その場合に、それは、その結果生じるレンダリングされた“サブタイル”を、“累積パス”における（そのタイルのための）“タイル”累積バッファに加える。
【００５８】
この場合、例えば“累積パス”（レンダリングされた“サブタイル”から“累積バッファ”にデータが動くこと）は、望まれたように、例えば、そして好ましくは、グラフィックプロセッサのタイルライトバックロジック（tile writeback logic）またはシェーダ（shader）を使用することによって、実行され得る。
【００５９】
別の特に好ましい実施例においては、そのサブタイル（レンダリングパス）に関する結果を累積する前に、タイルに関する全体のレンダリングパスが完了する（全てに関して、最終の“サブタイル”が生成される）のを待つよりむしろ、好ましくは、レンダリングパスが進行すると、累積タイル（バッファ）は、連続的に更新される。
【００６０】
この場合、レンダリングパスを完了すると共に、その後、その結果生じるサブタイルをそのステージにおいて累積するよりむしろ、レンダリングパスが進行すると、タイルに関するレンダリング結果は、タイル累積バッファに効果的に加えられることになる。これは、従って、実際には、レンダリングされた各“サブタイル”の間の個別の“累積パス”の必要性を除外することになり、それは有利であり得る（例えば、累積パスが最初に完了することを待たなければならないよりむしろ、次のサブタイルが即座に開始されることを可能にすることになる）。
【００６１】
これは、要望通りに実行されるかもしれないが、しかし、特に好ましい実施例において、サンプリング位置がレンダリングパスにおいてレンダリングされるたびに、累積バッファ（タイル）は、必要に応じて更新される。
【００６２】
すなわち、レンダリングパスの間にサンプリング位置の（任意の場合の）レンダリングが完了する場合、累積バッファにおける問題のレンダリングパス（サブタイル）に関するそのサンプリング位置の累積された値は、判定されるべきそのサブタイル（レンダリングパス）に関するそのサンプリング位置の最終値を待つことなく、必要に応じて、更新される
【００６３】
好ましくは、累積バッファは、必要に応じて、各サンプリング位置に関するレンダリング結果、または（同時に複数のサンプリング位置が与えられる場合）複数のサンプリング位置のレンダリング結果によって、そのサンプリング位置または複数のサンプリング位置に関する新しいレンダリング結果が生成されるたびに更新される。
【００６４】
レンダリングが進行すると累積バッファが更新されるこれらの装置には、例えばレンダリングされたタイルの完成されたバージョンの中に（問題の“サブタイル”の最終バージョンの中に）、それらのサンプリング点に関する後でレンダリングされた値と交換されることになる、レンダリングパスの間にレンダリングされたサンプリング点に関して生成された値があり、オーバードロー（over-draw）のせいで、レンダリングパスにおいて、実際には、初期のサンプリング点の値は、後のサンプリング値によって見えなくされる（occluded）、ということを出願人は認識した。
【００６５】
更に、累積バッファが、実際には、他のサブタイル（レンダリングパス）を有する問題のサブタイルの最終バージョン（レンダリングパスの最終結果）だけを累積するべきであるので、任意のサンプリング点に関する全ての中間のレンダリングされた値を累積バッファに完全に累積できるというわけではない。
【００６６】
それが実際には誤った値を累積する累積バッファになり得るので、本発明のこれらの装置における累積バッファに、サンプリング位置に関する各々そして全ての新たにレンダリングされた値を単に累積することは、従って適切ではないかもしれない。
【００６７】
従って、特に好ましい実施例において、そのシステムは、レンダリングされたサブタイルにおける各サンプリング位置の現在の値（すなわちタイルバッファに現在格納されている値）のみが累積バッファに印加される（累積バッファに累積される）ことを保証するように構成されて、そして操作される。
【００６８】
タイルバッファがレンダリングされているサブタイルの現在のバージョン（すなわち時間通りにその瞬間において累積バッファに累積されるべきであるサブタイルのバージョン）を常に保持するべきであるので、もしその場合に、累積バッファがあらゆる任意のサンプリング位置に関する“現在の”タイルバッファの値（だけ）を累積したことが確認されるならば、たとえもし、サブタイルのレンダリングがまだ終了していないとしても、累積バッファは、（時間通りその瞬間に）常に正しいはずであると共に、サブタイル（レンダリングパス）が終了するときに正しくなるであろう。
【００６９】
これは、“サブタイル”がレンダリングされているので、累積が実行されているとしても、例えば全てのオーバードローの状況が正しく処理されることを保証するべきであると共に、従って、まるで（累積パスを有する）累積バッファに関する“通常の”手順に従っていたかのように、同じ累積出力が生成されるであろうように、生成されることになることを保証する。
【００７０】
これらの装置において、レンダリングされたサンプリング位置は、（すなわち、それらが現存するタイルバッファ値に取って代わるべきであるとき、そして、もしそれらが現存するタイルバッファ値に取って代わるべきであるならば、例えば、それらが、それらのサンプリング位置に関して格納された現存するフラグメントを見えなくするので、）好ましくは、基準としてタイルバッファに書き込まれる。
【００７１】
従って、そのシステムは、好ましくは、レンダリングパスが通常の方法で進行するとタイル（サブタイル）に関するタイルバッファを生成すると共に、その場合に、それが、常に、問題のレンダリングパス（サブタイル）に関する任意のサンプリング位置のための累積バッファに印加されたタイルバッファの現在の値であることを保証するように操作される。
【００７２】
本発明のこれらの装置の特に好ましい実施例においてではあるが、これは、要望通りに達成され得る。新たにレンダリングされた値が、レンダリングされているサブタイルに関するサンプリング位置に書き込まれるべきである場合に、問題のサブタイルにおけるそのサンプリング位置に関する現在の値が、最初に累積バッファから適切に（すなわち適切な重み付けによって）取り去られると共に、新たにレンダリングされた値が、その場合に、累積バッファに適切に加えられる。これは、それによって、それが、実際には累積バッファに印加されている、サブタイルにおけるサンプリング位置に関する“現在の”値のみであることを保証するべきである。
【００７３】
そのような好ましい実施例において、サンプリング位置に関して新しくレンダリングされた値が、サブタイルにおいてそのサンプリング位置に関して使用されている現存する値に取って代わるか否かが最初に判定されると共に、新しい値が現存する値に取って代わる場合にだけ、累積バッファは、新しい値によって更新される。（例えば、そして好ましくは、当該技術において知られている適当な深さ（Ｚ）の検査（比較）を使用することによって、サンプリング位置に関して新しくレンダリングされた値がそのサンプリング位置に関して現存する値に取って代わるか否かが、必要に応じて判定され得る。）
【００７４】
必要に応じて、そのような装置は達成され得るが、しかし、特に好ましい実施例において、そのような装置は、レンダリングされているサブタイルのサンプリング位置または複数のサンプリング位置をカバーする新しいフラグメントがレンダリングパイプラインから抜け出る場合に、新しいフラグメントによってカバーされたサンプリング位置に関する現存するタイルバッファ値を、それらのサンプリング位置に関する累積バッファから適切に取り去ると共に、次に、新しいフラグメントによってカバーされた（複数の）サンプリング位置に関する（新しくレンダリングされた）（複数の）タイルバッファ値を、それらのサンプリング位置に関する累積バッファに適切に加える（累積する）ことによって実行される。
【００７５】
（当該技術において知られているように、レンダリング工程は、概して、それに関して（シェーディングのような）グラフィックレンダリング動作が実行される“フラグメント”と通常言われる個別のグラフィックエンティティとして画像を表示するように、処理されているサンプリング点を“表す”ことによって実行される。実際には、各サンプリング点は、問題のサンプリング点に陰影を付けるために使用されるであろうフラグメントで表されることになる。フラグメントは、単一のサンプリング点または複数のサンプリング点を表し得る（それに関連付けたかもしれない）。その結果、“フラグメント”は、レンダリング工程（レンダリングパイプライン）を経験するグラフィックエンティティである。）
【００７６】
そのような好ましい別の実施例において、サンプリング位置がレンダリングされるべきである場合、問題のサブタイルのためのそのサンプリング位置に関する累積バッファに印加される現在の値は、そのサンプリング位置に関する累積バッファ値から適切に取り去られると共に、次に、サンプリング位置がレンダリングされた後に、そのサブタイルのためのタイルバッファにおけるそのサンプリング位置に関する現在の値（それは、そのサンプリング位置に関して新しい値が古い値に取って代わる場合の新しくレンダリングされた値であり得るか、あるいは、（新しい値が以前に保存された値に取って代わらない場合の）そのサンプリング位置に関する以前の（現存する）現在の値であり得る。）が、問題のサンプリング位置に関する累積バッファ値に適切に加えられる（累積される）。
【００７７】
従って、１つの特に好ましい実施例において、１つ以上のサンプリング位置を表すフラグメントがレンダリング工程（レンダリングパイプライン）に入る場合、タイルがレンダリングされている（そのレンダリングパスの内の１つを受けている）ので、問題のレンダリングパスにおけるそのフラグメントに関する（そのフラグメントが表すサンプリング位置に関する）現在のタイルバッファ値は、問題のタイルのためのそれらのサンプリング位置に関する（複数の）累積バッファ値から適切に取り去られると共に、次に、そのフラグメントがそのレンダリングを完了した場合に、フラグメントのレンダリングの結果として生じるサンプリング位置に関する現在の（複数の）タイルバッファ値は、問題のタイルのためのそれらのサンプリング位置に関する累積バッファ値に適切に加えられる（累積される）。
【００７８】
本発明のこれらの実施例の好ましい装置において、累積バッファは、固定小数点値を格納する。これは、この技術が申し分なく機能するために、いくらかの状況において必要であり得る。
【００７９】
上述のように、出力フレームのタイルに関して生成された“累積された”出力タイルのセットは、全体の出力の累積されたフレームを提供するために結合されるべきである。これは、（タイル累積バッファに格納されることになる）各出力の“累積された”タイルを、例えば準備が整うとすぐにフレームバッファに書き込むことによって実行される。その場合に、出力の累積されたタイルの全てが、例えばフレームバッファに書き込まれた場合に、出力フレームが、完成すると共に、例えば、そして好ましくは表示され得る（あるいは、他の場合は必要に応じて出力され得る）。
【００８０】
提供するのにグラフィックスプロセッサが使用されていることができるあらゆる適当な形式の累積された出力のために、本発明が使用され得ることが、ここでは注意されるべきである。従って、１つの特に好ましい実施例において、出力フレームが（例えば画面またはプリンタ上の）表示のための画像を形成するように意図されている場合には、それが使用される（その場合に、当該技術において知られているように、出力フレームはフレームバッファに格納されることになる）が、本発明は、更に、出力フレームが表示用として意図されていない場合、例えば出力フレーム（レンダーターゲット）が、生成するのに（例えば“テクスチャへの書き込み（render to texture）”動作において）グラフィックプロセッサが使用されているテクスチャである場合、あるいは、実際には、生成するのにグラフィックプロセッサが使用されている出力が他の形式のデータ配列である場合にも、使用され得る。グラフィックプロセッサによってここで生成されている“出力フレーム”に対する言及は、従って、状況が許す場合、表示のためのフレームだけでなく、必要に応じてグラフィックプロセッサがその出力として生成しているテクスチャまたは他の表面（surface）のような他の適当なレンダーターゲットを含むと考察されるべきである。
【００８１】
出力の累積されたタイルは、望まれたように、フレームバッファに書き込まれ得ると共に、例えば、必要に応じて、この工程の一部としてのダウンサンプリングのような更なる処理の対象となり得る。好ましくは、タイルをフレームバッファに書き込むための通常の手続きは、この工程のために使用される。
【００８２】
グラフィックプロセッサは、あらゆる所望の、そして適当な方式における本発明の方法において動作するように、命令されて、制御され得る。
【００８３】
当業者によって認識されることになるように、本発明の方法における動作は、好ましくは、例えば、ホスト上で動くアプリケーションからの“累積されたフレーム”の表示のための要求に応答して適切な命令の系列をグラフィックプロセッサに送信するグラフィックプロセッサのためのドライバ（ソフトウェア）（それは、例えば、グラフィックプロセッサが連結されるホストシステムまたはプロセッサ上で動いている）によって誘発される。
【００８４】
特に好ましい実施例において、本発明の方法における動作を誘発すると共に制御するために使用される命令の系列は、処理されるべき各タイルに関して、“新タイルの開始（begin new tile）”命令（それは、問題のタイルに関する最初のレンダリングパス（最初の“サブタイル”の生成）を誘発することになる）、そして、タイルが受けることになる各残りのレンダリングパスに対して１つずつの、“新サブタイルの開始（begin new sub-tile）”命令の系列を含む。これらの命令は、上述のように、グラフィックプロセッサに、出力の“累積された”タイルを提供するために累積されるべき“サブタイル”の適切な系列のレンダリングを行わせるはずである。
【００８５】
この装置において、“新タイルの開始（begin new tile）”命令は、好ましくは、（それが新タイルのスタートを合図するので、）タイルに使用されるべきタイルバッファとタイルに使用されるべき累積バッファの両方を消去するが、しかし、“新サブタイルの開始（begin new sub-tile）”命令は、累積バッファではなく、タイルバッファだけを消去するべきである。
【００８６】
“新タイルの開始（begin new tile）”命令及び“新サブタイルの開始（begin new sub-tile）”命令は、好ましくは、更に、問題のサブタイルを累積タイルに累積する場合に使用されるべき重みを示す。（当該技術において知られているように、更に、累積バッファ工程において累積されたフレームに寄与することになる、各“サブタイル”に適用されるべき重みを指定することは、通常のことであり、従って、これは、また、本発明で説明される必要があるであろう。“新タイルの開始（begin new tile）”命令及び“新サブタイルの開始（begin new sub-tile）”命令において、使用する重みを指定することは、これを行うための便利な方法である。）
【００８７】
特に好ましい実施例において、グラフィックプロセッサのためのドライバは、更に、累積バッファに入ることになる全てのレンダリングパス（サブフレーム）を、グラフィックプロセッサに関する単一のジョブに結合する。その場合に、これは、各タイル（またはタイルのセット）に関する順繰りの相次ぐレンダリングパスの実行を容易にすることになる。
【００８８】
グラフィックプロセッサのためのドライバのそのような動作が、それ自身で新しいかもしれなく、有利であるかもしれないと考えられている。
【００８９】
従って、本発明の第７の特徴によれば、タイルベースのグラフィックプロセッサのためにドライバを作動させる方法であって、前記方法は、前記ドライバが、累積バッファ動作が作り出されることをフレームが必要としているという指示を受信し、前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合し、出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信する段階を含み、各上記命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の１つを開始するように、前記グラフィックプロセッサに指示することを特徴とする方法が提供される。
【００９０】
本発明の第８の特徴によれば、タイルベースのグラフィックプロセッサのためのドライバであって、累積バッファ動作が出力されることをフレームが必要としているという指示を受信することに応答して、前記フレームのための前記累積バッファに入ることになるサブフレームを、前記グラフィックプロセッサのための単一のジョブに結合するための手段と、出力されるべき前記フレームの各タイルに関して、新タイル開始命令及び一連の新サブタイル開始命令を含む一連の命令を作成すると共に、前記グラフィックプロセッサに送信するための手段とを備え、各上記命令が、問題になっているタイルに関して、前記フレームのための前記累積バッファ動作に必要である一連の前記レンダリングパスの中にある前記レンダリングパスの内の１つを開始するように、前記グラフィックプロセッサに指示することを特徴とするドライバが提供される。
【００９１】
当業者によって認識されることになるように、本発明のそれらの特徴は、必要に応じて、ここで説明されたあらゆる本発明の好ましい特徴及び任意の特徴の１つ以上または全部を含むことができるか、あるいは好ましくは含む。例えば、新タイル開始命令／新サブタイル開始命令は、好ましくは、上述の形式である。
【００９２】
同様に、グラフィックプロセッサは、好ましくは、ドライバから一連の命令を受信することに応答して、本発明の方法において動作する。
【００９３】
実際には、そのドライバからのそのような一連の命令を受信することに応答して、グラフィックプロセッサは、出力フレームのタイルに一連のレンダリングパスを経験させると共に、従ってそれらのレンダリングパスの結果を累積するように動作することになる、ということが認識されることになる。これは、出力フレームが分割されることになっている各タイルに関して実行されることになる。
【００９４】
従って、本発明の第９の特徴によれば、タイルベースのグラフィック処理システムにおける出力フレームのタイルを処理する方法であって、タイルに複数のレンダリングパスの系列の内の第１のレンダリングパスを経験させると共に、結果として生じるレンダリングされたタイルを前記タイルに関する累積バッファに格納する段階と、前記タイルに定義された前記レンダリングパスの系列の内の第２のレンダリングパスを経験させると共に、そのレンダリングパスの結果を前記タイルに関する前記累積バッファに累積する段階と、前記タイルに関する前記複数のレンダリングパスの累積された結果を表すタイル出力を生成するために、前記レンダリングパスの系列における各残りのレンダリングパスに関してこの工程を反復する段階と、前記タイルに関する累積されたタイル出力を、出力レンダーターゲットに、好ましくはフレームバッファに出力する段階とを含むことを特徴とする方法が提供される。
【００９５】
本発明の第１０の特徴によれば、タイルベースのグラフィック処理システムであって、出力フレームに関するタイルに複数のレンダリングパスの系列の内の第１のレンダリングパスを経験させると共に、結果として生じるレンダリングされたタイルを前記タイルに関する累積バッファに格納するための手段と、前記タイルに前記レンダリングパスの系列の内の第２のレンダリングパスを経験させると共に、そのレンダリングパスの結果を前記タイルに関する前記累積バッファに累積するための手段と、前記タイルに関する前記複数のレンダリングパスの累積された結果を表すタイル出力を生成するために、前記レンダリングパスの系列における各残りのレンダリングパスに関してこの工程を反復するための手段と、前記タイルに関する累積されたタイル出力を、出力レンダーターゲットに、好ましくはフレームバッファに出力するための手段とを備えることを特徴とするタイルベースのグラフィック処理システムが提供される。
【００９６】
当業者によって認識されることになるように、本発明のそれらの特徴は、必要に応じて、ここで説明されたあらゆる本発明の好ましい特徴及び任意の特徴の１つ以上または全部を含むことができるか、あるいは好ましくは含む。
【００９７】
従って、例えば、その工程は、好ましくは、出力フレームが分割されるべきである各タイルに関して反復される。
【００９８】
この場合、方法またはシステムは、従って、タイルベースのグラフィック処理システムにおける出力フレームの一部分を構成するタイルのセットを処理するための段階または手段を有することになり、方法またはシステムは、前記タイルのセットの内の第１のタイルにレンダリングパスの系列の内の第１のレンダリングパスを経験させると共に、結果として生じるレンダリングされたタイルを前記タイルに関する累積バッファに格納し、前記第１のタイルに前記レンダリングパスの系列の内の第２のレンダリングパスを経験させると共に、そのレンダリングパスの結果を前記タイルに関する前記累積バッファに累積し、前記タイルに関する複数のレンダリングパスの累積された結果を表すタイル出力を生成するために、前記レンダリングパスの系列における各残りのレンダリングパスに関してこの工程を反復し、前記タイルに関する累積されたタイル出力を、出力レンダーターゲットに、好ましくはフレームバッファに出力し、そしてその後に、前記タイルのセットの内の第２のタイルに前記レンダリングパスの系列の内の前記第１のレンダリングパスを経験させると共に、結果として生じるレンダリングされたタイルを前記第２のタイルに関する累積バッファに格納し、前記タイルのセットの前記第２のタイルに前記レンダリングパスの系列の内の前記第２のレンダリングパスを経験させると共に、そのレンダリングパスの結果をそのタイルに関する累積バッファに累積し、前記第２のタイルに関する複数のレンダリングパスの累積された結果を表すタイル出力を生成するために、前記レンダリングパスの系列における各残りのレンダリングパスに関してこの工程を反復し、一度前記第２のタイルに関するレンダリングパスの系列の累積された結果が完成すると、前記第２のタイルに関する累積されたタイル出力を、前記出力レンダーターゲットに、好ましくはフレームバッファに出力し、前記タイルのセットの残りのタイルに関してこの工程を反復するための段階または手段を有する。
【００９９】
ここでは、更に、上述のタイル（またはタイルのセット）の相次ぐ処理の系列は、追随されることになると共に、基本的に追随されるべきである一方、出力の累積されたフレームが処理されている間、まだ、処理が他のタイルの処理によって先行されないいくらかのタイル、そして処理が他のタイルの処理によって追随されないいくらかのタイルがあることになる、ということが認識されるべきである。例えば、処理されるべき最終のタイル（または複数のタイル）は、（その場合に、出力フレームが終わることになるので、）更なるタイルの処理によって追随されないであろう。従って、例えば、上述のタイルのセット（系列）は、フレームの“中央”からのタイルのセットまたは系列を含むことになると共に、その処理系列は、まさに、出力フレームの最後のタイルに関して追随されないことになる。
【０１００】
本発明の様々な機能は、あらゆる所望の、そして適当な方法において実行され得る。例えば、本発明の機能は、必要に応じて、ハードウェアまたはソフトウェアで実施され得る。従って、例えば、本発明の様々な機能的要素及び“手段”は、例えば適切に専用であるハードウェア要素、及び／または、所望の方法において動作するようにプログラムされ得るプログラム可能なハードウェア要素のような、様々な機能等を実行するように動作可能である、適当なプロセッサまたは複数のプロセッサ、機能ユニット、回路構成、処理回路構成、管理回路構成、ロジック、処理ロジック、マイクロプロセッサ装置等を含み得る。
【０１０１】
好ましい実施例において、グラフィックプロセッサは、ハードウェア要素（例えばＡＳＩＣ）として実施される。従って、別の特徴において、本発明は、ここに示された発明の特徴のいずれか１つ以上を含むハードウェア要素、またはここに示された発明の特徴のいずれか１つ以上の方法に従って操作されるハードウェア要素を備える。
【０１０２】
特に好ましい実施例において、グラフィックプロセッサは、表示装置のためのフレームバッファに書き込まれるグラフィックデータを生成して出力する、単一のグラフィック処理プラットフォームを備える。
【０１０３】
更に、当業者によって認識されることになるように、本発明の様々な機能等は、任意のプロセッサ上で、複製され得るか、及び／または並列に実行され得るということが、ここでは注意されるべきである。
【０１０４】
本発明は、例えば“パイプライン化された”レンダリング装置を備える（その場合にレンダリング装置はレンダリングパイプラインの形式であろう）プロセッサのような、あらゆる形式または構成の（タイルベースの）グラフィックプロセッサ及びレンダラー（renderer）に適用できる。
【０１０５】
上記から認識されることになるように、本発明は、特に、排他的ではないが、３次元グラフィックプロセッサ及び３次元グラフィック処理装置に適用できると共に、従って、本発明は、ここで説明された発明の特徴のいずれか１つ以上の装置、またはここで説明された発明の特徴のいずれか１つ以上の方法に従って操作される装置を含む、３次元グラフィックプロセッサ及び３次元グラフィック処理プラットフォームにまで及ぶ。上述の特定の機能を実行するために必要なあらゆるハードウェアを条件として、そのような３次元グラフィックプロセッサは、その他に、３次元グラフィックプロセッサが含んでいる通常の機能ユニット等のいずれか１つ以上または全てを含むことができる。
【０１０６】
更に、本発明の説明された特徴及び実施例の全ては、必要に応じて、ここで説明された好ましい、そして任意の特徴のいずれか１つ以上または全てを含むことができるということが、当業者によって認識されることになる。
【０１０７】
本発明による方法は、ソフトウェア、例えばコンピュータプログラムを用いて、少なくとも部分的に実施され得る。更なる特徴から見たとき、本発明は、データ処理手段にインストールされたときに、ここで説明された方法を実行するように明確に構成されたコンピュータソフトウェア、プログラム要素がデータ処理手段上で実行されるときに、ここで説明された方法を実行するためのコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、そして、プログラムがデータ処理システム上で実行されるときに、ここで説明された方法または複数の方法の全ての段階を実行するように構成されたコード手段を含むコンピュータプログラムを提供するということが、従って分かることになる。データ処理システムは、マイクロプロセッサ、プログラム可能なＦＰＧＡ（Field Programmable Gate Array）等であり得る。
【０１０８】
本発明は、更に、データ処理手段を含むグラフィックプロセッサ、レンダラー、またはマイクロプロセッサシステムを動かすために使用されるとき、前記データ処理手段と連動して、前記プロセッサ、レンダラー、またはシステムに、本発明の方法の段階を実行させる、そのようなソフトウェアを含むコンピュータソフトウェア担体にまで及ぶ。そのようなコンピュータソフトウェア担体は、例えばＲＯＭチップ、ＣＤＲＯＭ、またはディスクのような物理的記憶媒体であるか、あるいは、例えば有線上の電気信号、光信号、または衛星等に対する無線信号のような信号であろう。
【０１０９】
必ずしも本発明の方法の全てのステップは、コンピュータソフトウェアによって実行される必要があるとは限らないと共に、従って、更に広い特徴から、本発明は、ここで提示された方法の段階の内の少なくとも１つを実行するための、コンピュータソフトウェア、及びコンピュータソフトウェア担体にインストールされたそのようなソフトウェアを提供する、ということが更に認識されることになる。
【０１１０】
本発明は、従って、コンピュータシステムによって使用するのためのコンピュータプログラム製品として適宜具体化され得る。そのような実施は、例えばディスケット、ＣＤＲＯＭ、ＲＯＭ等の非一時的なコンピュータ読み取り可能媒体のような有形的表現媒体か、またはハードディスクのいずれかに固定された一連のコンピュータ読み取り可能な命令を含み得る。それは、更に、光学通信回線またはアナログ通信回線を含むがそれに限定されるものではない有形的表現媒体によって、またはマイクロ波、赤外線、もしくは他の伝送方法を含むがそれに限定されない、手で触れることができない無線手法を使用して、モデムまたは他のインタフェース装置を介してコンピュータシステムに伝送可能な、一連のコンピュータ読み取り可能な命令を含むであろう。一連のコンピュータ読み取り可能な命令は、ここで前に説明された機能性の全部または一部を具体化する。
【０１１１】
当業者は、そのようなコンピュータ読み取り可能な命令が、多くのコンピュータアーキテクチャまたはオペレーティングシステムによる使用のために、多くのプログラミング言語で書かれ得るということを認識することになる。更に、そのような命令は、現在または将来に、半導体、磁性体、もしくは光を含むがそれに限定されるものではない、あらゆるメモリ技術を使用して保存され得るか、あるいは、現在または将来に、光、赤外線、もしくはマイクロ波を含むがそれに限定されるものではない、あらゆる通信技術を使用して伝送され得る。そのようなコンピュータプログラム製品は、プリントされた文書もしくは電子文書が添えられた取外し可能な媒体、例えば市販パッケージソフトウェアとして分配され得るか、コンピュータシステムに、例えばシステムＲＯＭまたは固定ディスクに最初から組み込まれ得るか、あるいは、ネットワーク、例えばインターネットまたはワールドワイドウェブを介して、サーバまたは電子掲示板から分配され得ると考えられる。
【図面の簡単な説明】
【０１１２】
【図１Ａ】本発明の実施例の主要な動作を概略的に示す図である。
【図１Ｂ】本発明の実施例の主要な動作を概略的に示す図である。
【図１Ｃ】本発明の実施例の主要な動作を概略的に示す図である。
【図２】本発明を実施するのに適当なグラフィックプロセッサの構造を概略的に示す図である。
【図３】本発明を実施する１つの好ましい方法を概略的に示す図である。
【図４】本発明を実施する別の好ましい方法を概略的に示す図である。
【図５】本発明を実施する別の好ましい方法を概略的に示す図である。
【発明を実施するための形態】
【０１１３】
本発明の多くの好ましい実施例が、一例のみとして、そして添付図面を参照して、ここから説明されることになる。
【０１１４】
上述のように、本発明は、グラフィック処理システムにおける“累積バッファ”工程に関係すると共に、特に、タイルベースのグラフィック処理システムにおいてそのような動作を実施するための好ましくかつ革新的なシステム及び方法に関係する。
【０１１５】
当業者において知られているように、“累積バッファ”工程は、基本的に、例えばいくらかの異なる視角からの、出力フレームの複数の異なるバージョンをレンダリングすると共に、次に、単一の出力の“累積された”フレームとして結果を累積することを必要とする。この操作は、概して、被写界深度、モーションブラー、ソフトシャドウ、及びアンチエイリアシングのような異なる効果をエミュレートするために使用される。
【０１１６】
図１は、本発明の基本概念を例証する。
【０１１７】
図１Ａは、複数のタイルもしくはサブ領域２、３、４、及び５に分割されたフレーム１を概略的に示し、当該技術において知られているように、そのタイルの各々は、別々にレンダリングされると共に、表示のための出力フレームを提供するために結合されることになる。
【０１１８】
（図１Ａは、説明を明瞭にするために、４つのタイルに分割されたフレームを示す。当業者によって認識されることになるように、任意のフレームは、一般的には、４つのタイルより更に多くに分割されることになる。）
【０１１９】
図１Ｂは、図１Ａで示されるフレーム１に適用されるであろう、従来の“累積バッファ”動作を概略的に示す。従って、図１Ｂで示されると共に、当該技術において知られているように、出力の“累積された”フレーム６を提供するために、フレーム１の複数の異なるバージョン１’、１’’、１’’’、１’’’’が、レンダリングされて一緒に累積される。この場合、そして当該技術において知られているように、第１のレンダリングパスが、その全体において、蓄積された出力フレーム６に寄与する第１のサブフレーム１’を生成することになる。第２の異なるレンダリングパスは、その場合に、この場合もやはり最終の累積出力フレーム６に累積されることになる全ての第２のサブフレーム１’’を生成することになり、この処理が繰り返される。
【０１２０】
図１Ｃは、累積されたフレーム６を生成するための累積バッファ動作がどのように本発明の実施例に従って実行されるであろうかを、概略的に示す。図１Ｃで示されたように、その全体において順繰りに各サブフレーム１’、１’’、１’’’、１’’’をレンダリングするよりむしろ、本発明の実施例によるシステムにおいては、各個々のタイル２、３、４、及び５が、異なるレンダリングパスを経験させられ、そして個々に累積される。
【０１２１】
従って、例えば、タイル２の場合、最終の出力の累積されたバージョンのタイル２ａｃｃを提供するために、第１のレンダリングパスが、そのタイルに関して、サブタイル２’を生成するために実行され、次に、第２のレンダリングパスが、そのタイルに関して、最初のバージョンのタイル２’に累積されるサブタイル２’’を生成するために実行され、次に、第３のレンダリングパスが、そのタイルに関して、以前にレンダリングされたバージョンのタイルに更に累積されるサブタイル２’’’を生成するために実行され、そしてこの処理が繰り返される。累積された出力タイル２ａｃｃは、その場合に、全体の累積された出力フレーム６に関する出力タイル２を形成するための出力として提供される。
【０１２２】
そして、これは、出力フレーム６を構成している残りの個々のタイル３、４、及び５のそれぞれに関して反復されると共に、個々の累積されたタイル２ａｃｃ、３ａｃｃ、４ａｃｃ、及び５ａｃｃは、出力の累積されたフレーム６を提供するために、１つに結合される。
【０１２３】
従って、もし、それらのいくらかのサブフレームの累積によって最終の画像６に共に寄与するいくらかのサブフレーム（フレーム１’、１’’、１’’’、及び１’’’’）を生成するとして、図１Ｂに示された従来の累積バッファ装置を考察するならば、その場合に、図１Ｃで例証された本実施例の概念は、類似的に、出力フレームを構成している各個々のタイルに関して、問題のタイルの出力バージョンである最終の累積タイル（例えば２ａｃｃ）に寄与するように１つに累積されるいくらかのサブタイル（例えば２’、２’’、２’’’、及び２’’’’）の生成を包含すると考えられ得る。各そのような出力の累積されたタイルは、その場合に、全体の累積された出力フレーム６を提供するために結合される。
【０１２４】
同様に、本実施例のレンダリングの順序（rendering order）は、従って、１つの特定のタイル（または、更に以下で論じられることになるように、複数の特定のタイルのセット）に関して、次のタイル（またはタイルのセット）に進む前に、（全てのレンダリングパスを実行して累積するように）全ての“サブタイル”をレンダリングすることである。（これと対照的に、従来の累積バッファ動作は、フレームの全てのタイルを含むサブフレームを生成し、一度そのサブフレームが生成されたならば、次に、フレームの全てのタイルを含む次のサブフレームを生成し、そしてこの処理が繰り返されることとして見なされ得る。）
【０１２５】
別の方法を参照すると、従来の累積バッファ動作では、累積されたフレームを生成するのに必要とされる一連のレンダリングパスの第１のレンダリングパスが、第１のサブフレームを生成するために、フレームの全てのタイルに関して実行されると共に、一度その第１のサブフレームが生成された場合にだけ、第２のサブフレームを生成するために、再度フレームの全てのタイルにわたって、第２のレンダリングパスの系列が実行され、この処理が繰り返される。
【０１２６】
これと対照的に、本実施例では、系列の第１のレンダリングパスが、タイルに関して実行されることになると共に、次に、それがそのタイルに関して完了した場合に、第１のレンダリングパスがフレームの全てのタイルに関して実行されるのを待つことなく、累積された出力フレームのための、系列の第２のレンダリングパスが、そのタイルに関する第２のサブフレームを生成するために、その同じタイルに関して実行されることになり、問題のタイルに関して全てのレンダリングパスが完了されるまで、この処理が繰り返される。そして、システムは、出力フレームの別のタイルに進むことになる。すなわち、本実施例において、レンダリングの順序は、１つの特定のタイルに関する全ての“サブタイル”が、出力フレームの他のタイルに関するレンダリングパスが完了されるのを待つことなく（そして、好ましくは出力フレームの他のタイルに進む前に）、レンダリングされることになるようなものになる。
【０１２７】
更に詳細に論じられることになるように、本実施例の装置では、その代わりに、各個々のタイル２、３、４、５は、図１Ｃで示されたように、相次いで順繰りに処理されるであろうと共に、例えば、出力フレームを構成するタイルが、複数のタイルの複数の異なるセットとして、効果的に処理されるように、２つ以上の個々のタイルを同時に処理することが可能であろう。
【０１２８】
例えば、図１Ｃで例証された装置に関して、タイル２、３のペアが同時に処理されるであろうと共に、次に、それらのタイルが終了した場合に、タイル４及び５のペアが処理されるであろう。これは、この装置ではタイル２、３のペアが同時に処理されるかもしれないが、それでも、累積及び複数のレンダリングパスが、他のタイルに対して独立して、まだ各タイルに関して実行されることは事実であり、それは、単に、それらのタイルの工程が同時に行われることを可能にするように、タイル２及び３の処理がインタリーブされることができるということであると、ここでは理解されるべきである、ということを示している。
【０１２９】
図２は、本発明に従って操作され得るグラフィックプロセッサの実施例を概略的に示す。
【０１３０】
図２において示されたグラフィックプロセッサは、当該技術において知られているように、レンダリングのためにグラフィックプリミティブ（graphics primitive：グラフィック基本要素）を受け取り、プリミティブをサンプリング点にラスタライズし（rasterize）、プリミティブをレンダリングするための適切な位置を有する（適切なサンプリング位置を表す）グラフィックフラグメント（graphics fragment）を生成する、ラスタライザー５０を備える。
【０１３１】
その場合に、レンダリングのために、ラスタライザー５０からグラフィックフラグメントを受け取ると共に、例えばフラグメントの表示のための適切なフラグメントデータを生成するために、それらのグラフィックフラグメントに、多くのレンダリング動作、例えば、テクスチャマッピング（texture mapping）、フォギング（fogging）、ブレンディング（blending）等を適用する、レンダリングパイプラインの形式のレンダラー５１が存在する。レンダラー５１が提供するレンダリングされたフラグメントデータは、次の処理のために、レンダリングパイプラインのタイルバッファ５２に格納される。
【０１３２】
当該技術において知られているように、タイルバッファ５２は、レンダリング工程の出力フレーム（例えば表示されるべき出力フレームの）の一部分を表すフラグメントデータの配列を格納する。一度各タイルが処理されたならば、そのデータは、適切な記憶装置に送出されると共に、次のタイルが次に処理され、全体の出力フレームを提供するために十分なタイルが処理されるまで、この処理が繰り返される。
【０１３３】
本実施例では、タイルバッファ５２は、通常動作で、サイズにおいて１６×１６のサンプリング位置を有するタイルを格納すると共に、各サンプリング点に関して４つのＦＰ１６値（FP16 value）を格納するように構成される。言うまでもなく、他の装置構成が可能であろう。
【０１３４】
タイルバッファ５２は、個別のバッファとして提供され得るか、または、実際には全てが同じ更に大きなバッファの一部分であり得る。それらは、グラフィックプロセッサに配置される（グラフィックスプロセッサに局所的である）。
【０１３５】
更に以下で論じられることになるように、本実施例において本発明を実施する場合、タイルバッファ５２の動作は修正される。
【０１３６】
当該技術において知られているように、タイルバッファ５２が提供するデータは、ダウンサンプリングユニット５３に入力され、それから、表示装置上の表示のための表示装置５５のフレームバッファ５４（それはグラフィックプロセッサ自身の上にはないかもしれない）に出力される。表示装置５５は、例えば、コンピュータモニタまたはプリンタのような画素の配列を有する表示装置を含む。
【０１３７】
ダウンサンプリングユニット５３は、タイルバッファに格納されたフラグメントデータを表示装置５５のための適切な解像度に（すなわち表示装置の画素に対応する画素データの配列が生成されるように）ダウンサンプリングする。
【０１３８】
本実施例において、グラフィックプロセッサが本発明の方法で動作している場合に、任意のタイルに関して、その一連の“サブタイル”が累積されているように、必要な“累積バッファ”記憶装置を提供するために、タイルバッファ５２の動作は修正される。
【０１３９】
（上記から認識されることになるように、例えば、一連のサブタイル２’、２’’、２’’’、及び２’’’’が、図３において示された方法で処理されている場合、各そのような“サブタイル”をレンダリングした結果は、そのレンダリングが進行するにつれて、１つに累積される必要があり、その累積されたレンダリングの結果は、出力の累積タイル２ａｃｃを最終的に提供することになる。それは、従って、そのレンダリングが進行するにつれて、サブタイルを累積するための“累積バッファ”を提供することが必要になる。これは、それが“従来の”累積バッファの実装において処理される場合の、各サブフレームの結果を累積するための累積バッファの提供に類似している。しかしながら、本発明では、“累積バッファ”は、完全なフレームではなく、タイル（またはタイルのセット）を同時に累積することだけを必要とする。）
【０１４０】
図２において示された装置において、任意のタイルに関して、それが本発明の方法で処理される場合、累積されたレンダリング結果を格納するための累積バッファが、グラフィックプロセッサのタイルバッファ５２におけるバッファとして提供される。
【０１４１】
従って、図２に示されるように、本発明の方法で処理されている任意のタイルに関して、タイルバッファ５２は、処理されているタイルに関する“通常の”タイルバッファ５６、及びそのタイルに関する累積タイル“累積バッファ”５７の両方を提供するように構成されることになる。
【０１４２】
その場合に、そして以下で更に論じられることになるように、タイルが、例えば図１Ｃに示されるサブタイル２’のようなサブタイルを生成するために、任意のレンダリングパスを経験させられる場合、そのタイルは、タイルバッファ５６に格納されることになると共に、その結果生じるレンダリングされたサブタイルは、その場合に、累積バッファ５７に累積されることになる。
【０１４３】
一度例えばサブタイル２’のような任意のサブタイルが完全にレンダリングされたならば、次に、タイルバッファ５６が、消去されると共に、例えばサブタイル２’’のような次のサブタイルがレンダリングされてその中に格納される。その結果生じるレンダリングされたサブタイル２’’は、（そのステージにおいて累積バッファ５７がサブタイル２’及び２’’の適切に累積されたレンダリング結果を格納するように、）累算バッファ５７に累積されることになる。
【０１４４】
そして、タイルバッファ５６は消去され、例えばサブタイル２’’’のような次のサブタイルがレンダリングされることになると共に、そのサブタイルの結果は、累積バッファ５７に累積されることになり、この処理が繰り返されることになる。
【０１４５】
そして、一度出力フレームの任意のタイルに関する全てのサブタイルがレンダリングされて、累積バッファ５７に累積されたならば、その場合に、適切な出力または表示のための出力の累積されたタイルとして、（ダウンサンプリングステージ５３を介して）フレームバッファ５４に出力されるのは、累積バッファ５７の内容である。
【０１４６】
この時点で、タイルバッファ５６と累積バッファ５７の両方が消去され得ると共に、次に、その工程は、（例えばタイル３のような）出力フレームの別のタイルのために開始され得る。これは、その場合に、出力されるべきフレームの各タイルに関して反復される。
【０１４７】
本実施例において、グラフィックプロセッサが本発明の方法で動作している場合に、タイルバッファ５２は、ラスタライズ工程（rasterization process）の一部分として実行されるマルチサンプリングの量を４倍（４×）から２倍（２×）に減少させることにより、タイルバッファ５６と組み合わせて累積バッファ５７を提供するように構成される。４つのＦＰ１６値（それは、通常、任意の１６×１６のタイルバッファがそれぞれのデータ位置として保存するものである）は、マルチサンプリングの量を２倍（２×）に減少させることによって、２つのＲＧＢＡ８８８８バッファと同じ記憶量を使用することになり、任意の１６×１６のデータ位置の４つのＦＰ１６値のタイルバッファは、２つのＲＧＢＡ８８８８バッファを提供するように再構成され得ると共に、従って、一方のそのようなバッファはタイルバッファ５６を形成し、もう一方のそのようなバッファは累積バッファ５７を形成する。これは、必要なタイル累積バッファ５７がタイルバッファの一部分として提供されると共に、例えば、その目的のために新しいバッファを追加しなければならないのを回避することを可能にする。
【０１４８】
言うまでもなく、タイルバッファにおける累積バッファ５７の提供を容易にする他の装置が可能であろう。例えば、４倍から２倍にマルチサンプル数を減少させる代りに、処理されているタイルのサイズが、１つの１６×１６のデータ位置のタイルバッファから、１６×８のタイルバッファ５６及び１６×８の累積バッファ５７を提供するために、その代りに２つに分割されるであろう。この装置は、より多い数のマルチサンプルが保持されることを可能にすると共に、例えば、累積バッファに関して、より高い精度値が使用されることを可能にするが、しかし、一方で、より小さなタイルサイズを用いて出力フレームが処理されることを必要とするであろう。
【０１４９】
これらの装置は、グラフィックプロセッサの現存するロジック（すなわちタイルバッファ）が、本発明の方法における動作のための必要なタイル累積バッファを提供することを可能にすることが、ここでは注意されるべきである。従って、タイル累積バッファは、追加費用なしで提供され得る。更に、従来の累積バッファ構造と比較したかなりの速力増加、そしてテクスチャーキャッシュ検索及び他のキャッシュ検索の減少になるはずである。
【０１５０】
更に、例えば、これはあまり好ましくはないが、追加のバッファをグラフィックプロセッサに加えるか、もしくは、実際に、タイル累積バッファとして機能するようにグラフィックプロセッサに外部バッファを提供することさえ可能であろう。
【０１５１】
本発明の方法で出力フレームを処理するようにグラフィックプロセッサを操作するための多くの好ましい実施例が、図３〜図５を参照してここから説明されることになる。図３は、個別のレンダリングステップ及び累積ステップが存在する本発明によるグラフィックプロセッサの動作の第１の好ましい実施例を示す。図４及び図５は、結合されたレンダリングステップ及び累積ステップが存在するそのような動作の第２の実施例を示す。
【０１５２】
図３から図５において、同等の参照符号が同等のステップに関して使用される。
【０１５３】
認識されることになるように、本発明の動作は、最初に、累積バッファ動作の要求によって、例えばグラフィック表示を要求するアプリケーションからそのような命令を受け取ったグラフィックプロセッサのためのドライバに応答して、誘発されることになる。当該技術において知られているように、この命令は、一般的に、例えば各サブフレームが定義されたレンダリングパス、及び最終の累積されたフレームに対するその寄与を示す指定された重みを有するように、一連のサブフレームを処理して累積バッファに累積することを、グラフィックプロセッサに指示することになる。
【０１５４】
本実施例において、そのような命令を受け取ることに応答して、グラフィックプロセッサドライバは、最初に、累積バッファに入ることになる全てのＮ個のレンダリングパス（サブフレーム）を、グラフィックプロセッサのための単一の“ジョブ”に結合する（ステップ２０）。これは、グラフィックプロセッサがそれらを１つのフレームに結合する前に別々に各サブフレームをレンダリングしないが、しかし、むしろ上述のように、各タイルに順繰りに各レンダリングパスを実行し得ることを保証するためのものである。言うまでもなく、他の装置が可能であろう。
【０１５５】
グラフィックプロセッサドライバは、更に、ステップ２０において、グラフィックプロセッサに本発明の方法で動作するように指示するための一連の命令を準備する。
【０１５６】
一連の命令は、処理されるべき各タイルの最初のサブタイルに対して“新タイルの開始（begin new tile）”命令を含み、同じタイルに関して処理されるべき他のサブタイルに対して“新サブタイルの開始（begin new sub-tile）”命令を含む。“新タイルの開始（begin new tile）”命令と“新サブタイルの開始（begin new sub-tile）”命令との差異は、各“新サブタイルの開始（begin new sub-tile）”命令が単純にタイルバッファ５６を消去する一方で、“新タイルの開始（begin new tile）”命令は、タイルバッファ５６を消去することに加えて、グラフィックプロセッサに累積バッファ５７を消去させる（すなわち累積バッファ５７をフレームバッファ５４に書き込ませる）ことになることである。
【０１５７】
（本実施例において、各タイルバッファは、どのサンプリング位置がまだレンダリングされていないかを示すために、“クリア”ビットマップ（"clear" bitmap）をそれに関連付けた。通常のレンダリング動作において、このクリアビットマップは、レンダリングされるべき各新しいタイルに関してリセットされる。しかしながら、本実施例の累積バッファ動作にこれを適用する場合、上述のように、タイルの最終バージョン（“累積された”タイル）がフレームバッファに出力される前に、レンダリングされたタイルの複数のバージョン（累積“サブタイル”）が存在することになる。従って、新しいサブタイルが始められるときはいつでも、“サブタイル”バッファを“消去”することが必要であると共に、新しいタイルが累積されることが始められるときはいつでも、“累積された”タイルバッファを消去することが必要である。）
【０１５８】
各“新タイルの開始（begin new tile）”命令と“新サブタイルの開始（begin new sub-tile）”命令は、更に、そのサブタイルを“累積”タイルに累積する場合に使用されるべき重みを指定する。
【０１５９】
そのような“新タイルの開始（begin new tile）”命令と“新サブタイルの開始（begin new sub-tile）”命令の系列は、出力フレームの各タイルに関して生成される。
【０１６０】
ドライバは、更に、当該技術において知られているように、グラフィックプロセッサに各それぞれのサブタイルを適切な方法でレンダリングさせるように、（適切に“新タイルの開始（begin new tile）”命令と“新サブタイルの開始（begin new sub-tile）”命令の後に続くことになる）適切な命令の系列を準備することになる。
【０１６１】
図３は、その場合に、本発明の第１の実施例における、そのドライバからそのような一連の命令を受け取ることに応答したグラフィックプロセッサの動作を概略的に示す。
【０１６２】
図３において示されたように、グラフィックプロセッサは、各タイルに関して（ステップ２１）（それに関してそれは新しいタイルが開始されていることを示す“新タイルの開始（begin new tile）”命令を受け取ることになる）、最初に累積バッファ５７を消去する（ステップ２２）（すなわち“累積された”タイルに対してクリアビットマップを設定する）。
【０１６３】
それは、その場合に、タイルに対する累積動作を構成するレンダリングパスのＮ個の系列を実行すると共に累積することになる（ステップ２３〜２６）。上述のように、（第１の後の）各次のレンダリングパスは、“新サブタイルの開始（begin new sub-tile）”命令によって示されることになると共に、次の“新タイルの開始（begin new tile）”命令は、現在のタイルの終了と次のタイルの開始を意味することになる。
【０１６４】
従って、（累積バッファに関して実行されるべきレンダリングパスのＮ個の系列の）各レンダリングパスｎに関して（ステップ２３）、グラフィックプロセッサは、最初にタイルバッファ（すなわちそこに現在の“サブタイル”が書かれるべきバッファ）を消去することになる（ステップ２４）。（タイルバッファ５６は、更に、当該技術において知られているように、必要に応じて、デフォルトのバックグラウンドカラー（すなわちプリミティブが実際にフレームにレンダリングされないそれらの場所でフレームが得ることになる色）によって初期化され得る。グラフィックプロセッサは、その場合に、レンダリングパスｎを実行する（サブタイルｎをレンダリングする）ことになると共に、結果をタイルバッファ５６に格納することになる（ステップ２５）。
【０１６５】
一度、そのレンダリングパスが完了された（サブタイルｎがタイルバッファ５６にレンダリングされた）ならば、グラフィックプロセッサは、その場合に、タイルバッファにおけるそのように格納されたレンダリングされたサブタイルｎを、累積バッファ５７に累積する（ステップ２６）。例えば、この累積は、グラフィックプロセッサのシェーダ（shader）またはタイルライトバックロジック（tile writeback logic）を使用することによって、実行され得る。
【０１６６】
この累積ステップは、当業者によって認識されることになるように、従来の累積バッファ動作において実行される“累積パス”に相当するが、しかし、それは、全体のレンダリングされたフレームを累積バッファに累積するパスよりむしろ、レンダリングされたサブタイルを“累積”タイルに累積するパスである。
【０１６７】
その累積がタイルライトバックロジック（tile writeback logic）を使用することによって実行される場合に、それは、例えば、累積のためのダウンサンプリングロジック５３における加算器を再使用し得る。累積ステップのためにグラフィックプロセッサのシェーダ（shader）を使用することは、例えば、累積パスのためにグラフィックプロセッサにロジックを追加する必要性を回避するであろう。
【０１６８】
一度現在のサブタイル（問題のサブタイル）がこのように累積バッファに累積されたならば、新しい“新サブタイルの開始（begin new sub-tile）”命令が存在することになり、そしてタイルバッファを消去し、サブタイルをレンダリングし、一度そのサブタイルがレンダリングされたならば、次にその結果生じるレンダリングされたサブタイルを累積バッファに累積するステップ２３、２４、２５、及び２６は、累積バッファ動作に必要とされるレンダリングパスの系列の次のサブタイル（次のレンダリングパス）に関して反復される。
【０１６９】
これは、累積バッファ動作に必要とされるレンダリングパスの系列の全てのレンダリングパスが完了されると共に、結果が問題のタイルに関して累積される（すなわち問題のタイルに関する全てのＮ個のサブタイルが生成されて累積される）まで、反復される。
【０１７０】
（本実施例では、累積工程が実行されると、フラグメント依存関係検査が、タイルバッファにおける特定のサンプリング位置と関連付けられた全てのフラグメントは、その同じサンプリング位置に関する全ての以前のフラグメントがパイプラインから出るまで、レンダリングパイプラインから出ることからブロックされることを保証する。（これは、更に、以前のサブタイル（またはタイル）における同じサンプリング位置に関するフラグメントを含む。）これは、各タイルに関するサンプリング位置が正しい順番に処理されることを保証する。）
【０１７１】
一度累積バッファ動作に必要とされるレンダリングパスの系列の全てのレンダリングパスが完了されると共に、結果が問題のタイルに関して累積されたならば、累積バッファ５７における格納された累積されたタイルは、外部メモリフレームバッファ５４に出力される（ステップ２７）。
【０１７２】
上述の工程において、サブタイルｎ（タイルに関するｎ番めのレンダリングパス）が完了された場合に、そのタイルが外部メモリへ書き戻されないが、しかし、その代りに（ステップ２６において）累積バッファ５７に適切に累積されることが、ここでは注意されるべきである。
【０１７３】
同様に、累積バッファ５７は、問題のタイルに関する全てのサブタイルがレンダリングされて累積されるまで、（ステップ２７において）外部メモリに（フレームバッファに）に書き戻されない。
【０１７４】
従って、累積バッファ動作のための外部メモリの帯域幅は全て消去された。
【０１７５】
その工程は、その場合に、出力フレームを構成する次のタイルに関して反復され、従って、累積バッファを消去し、そして、出力フレームの次のタイルに関する工程を開始するために、ステップ２１及びステップ２２に戻る。（これを始動させる“新タイルの開始（begin new tile）”命令が存在することになる。）
【０１７６】
この一連の動作は、その場合に、そのステージにおいて、出力フレームを構成する全てのタイルがカバーされたということがステップ２１において分かるまで、（図３に示されるように）反復されると共に、フレームバッファは、次に表示され得る（または、そうでない場合は要望通りに出力する）完全な累積された出力フレームを含むべきである。問題のフレームに関する累積は、従って終了することになる（ステップ２８）。
【０１７７】
図４及び図５は、本発明によるグラフィックプロセッサの動作の第２の好ましい実施例を示す。
【０１７８】
図４から見ることができるように、この実施例における本発明の方法の動作は、上述されると共に図３に示される以前の実施例の動作と類似しているが、以前の実施例では、関連するサブタイルのレンダリングを完了する代わりに、それをタイルバッファにセーブすると共に、その時にだけ累積パスにおける累積バッファにサブタイルを累積し（図３におけるステップ２５及びステップ２６）、この実施例では、各サブタイルは、レンダリングパスが進行すると、累積バッファ５７に“直接”レンダリングされる（図４におけるステップ３０）。一度任意のレンダリングパス（サブタイル）が完了されたならば、この装置は、従って、それが累積パスの必要性を回避する利点を有する。
【０１７９】
図５は、更に詳細に図４のステップ３０における累積バッファへの“直接的レンダリング”を概略的に示す。
【０１８０】
（図５において示された値“ｋ”及び“-k”は、当業者によって認識されることになるように、レンダリングされた値に対して、それらを累積バッファに累積しているときに適用されるべき適切な重みである。重みｋは、適切に格納され得ると共に、必要とされたときに要望通りにプロセッサによってフェッチされ得る。上述のように、重み情報は、好ましくは、“新タイルの開始（begin new tile）”命令及び“新サブタイルの開始（begin new sub-tile）”命令の一部分として提供される。）
【０１８１】
図５において示されたように、この装置において、任意のサブタイルをレンダリングしている場合に、サブタイルに関してレンダリングされる新しいフラグメントＦ（ｉ、ｊ）が、サブタイルに関するタイルバッファにおいてフラグメントが対応する現存するレンダリングされたサンプリング位置の値を置き換える（すなわち、新しいフラグメントは、タイルバッファにおける現存するフラグメント（サンプリング位置の値）を上書きする）と判定された場合はいつでも、新しくレンダリングされたフラグメント（すなわちそのレンダリングされた値）は、（タイルをレンダリングしているときの通常の場合であるように）問題のサンプリング位置に関するタイルバッファ５６に格納される。（本実施例では、適当な深さ（Ｚ）の検査装置が、新しいフラグメントが既存のフラグメントを上書きするべきであるかどうかを判定するのに使用される。必要に応じて、新しいフラグメントが現存するフラグメントを上書きするべきであるかどうかを判定するための他の適当なメカニズムが使用されるであろう。）
【０１８２】
しかしながら、問題のサンプリング位置に関して単に新しいフラグメントの値を現存する累積バッファ値に加えるよりむしろ、本実施例では、そのフラグメント位置に関する（問題のサンプリング位置に関する）以前のタイルバッファ値（すなわち新しいフラグメントと交換されているタイルバッファ値）Ｔ（ｉ、ｊ）は、問題のフラグメント位置に関する（サンプリング位置に関する）“補正された”累積バッファ値３２を提供するために、図５において示されたように、取り消しステージ３１（undo stage 31）において、問題のサンプリング位置に関する現在の累積バッファ値Ａ（ｉ、ｊ）から最初に適切に減じられる。
【０１８３】
そして、図５において示されたように、問題のサンプリング位置または複数のサンプリング位置に関する現在のフラグメントＦ（ｉ、ｊ）値３３は、問題のサンプリング位置に関する累積バッファに格納するための新しい累積バッファ値ＮＡ（ｉ、ｊ）３５を提供するために、そのように判定された（複数の）“補正された”累積バッファ値３２と共に、累積ステージ３４において適切に累積される。
【０１８４】
これの効果は、問題のフラグメントが対応するサンプリング位置に関する新しいレンダリングされた値が累積バッファ５７に累積される前に、以前のタイルバッファ値（すなわち新しくレンダリングされたフラグメントによって上書きされているタイルバッファ値）が累積バッファ値に及ぼす影響を取り除く（取り消す）ことである。
【０１８５】
“取り消し”動作は、従って、レンダリングされたサブタイル内のいくらかのサンプリング位置が何度も上書きされ得る可能性を明らかにするが、それにもかかわらず、累積バッファは、任意のサンプリング位置に関するサブタイルに、最終値だけを累積するべきである。
【０１８６】
例えば、もし、Ｆ１（１、１）、Ｆ２（１、１）、及びＦ３（１、１）が、任意のサブタイルのサンプリング位置（１、１）に書かれることになる３つのフラグメントを表すと共に、Ｆ１（１、１）がバックグラウンドカラーを上書きし、Ｆ２（１、１）がＦ１（１、１）を上書きし、そしてＦ３（１、１）がＦ２（１、１）を上書きするならば、その場合に、問題のサブタイルに関する特にこのサンプリング位置に関して累積バッファに累積するべき正しい値は、Ｆ３（１、１）であるべきである。
【０１８７】
しかしながら、本実施例の工程は、上述のように、各新しいレンダリングされたフラグメントを累積バッファに（それが現存するフラグメントによってふさがれない限り）即座に累積することによって機能する。取り消しステージ３１がない場合、これは、この場合にはＦ１（１、１）、Ｆ２（１、１）、及びＦ３（１、１）、そしてバックグラウンドカラー値を累積する、累積バッファになるであろう。それは、誤った累積バッファ値を与えるであろう。
【０１８８】
取り消しステージ３１は、累積バッファ５７において、以前に累積された値の影響を取り消す（取り去る）ことによって、この問題を取り除くと共に、ここでは、それらの値は、後の値によって上書きされるべきである。特に、この例において、Ｆ１（１、１）が問題のサンプリング位置に関するバックグラウンドカラーを上書きすることになると判定される場合、取り消しステージ３１は、最初に、位置（１、１）に関して、累積バッファ５７からバックグラウンドカラー値を減じることになり、その結果、累積ステップの終わりにおいて、累積バッファは、位置（１、１）に関する値Ｆ１だけを格納することになる。同様に、値Ｆ２（１、１）がサンプリング位置（１、１）に関する現在値を上書きすることになると判定される場合、取り消しステージ３１は、最初に、位置（１、１）に関して、累積バッファ５７から現在値Ｆ１を減じることになり、その結果、累積ステージ３４は、その場合に、位置（１、１）に関して、値Ｆ２が累積バッファ５７に格納されるという結果に終わると共に、この処理が繰り返される。
【０１８９】
従って、認識されることになるように、図５において示された有効な工程は、現存するフラグメントを上書きすることになる新しいフラグメントがレンダリング工程を終了させる場合にはいつでも、フラグメントのレンダリングの結果として生じる新しいタイルバッファ値が累積バッファに加えられる前に、適切なサンプリング位置に関する古いタイルバッファ値が、累積バッファから減じられるように機能する。これは、従って、全ての上書きの状況を正しく扱い、累積バッファのための通常の“累積パス”の手順として、同じ出力を生成することになる。
【０１９０】
言うまでもなく、他の装置構成が可能であろう。
【０１９１】
この実施例において、累積バッファ５７は、この方法の動作を容易にするために、固定小数点値によって格納される。
【０１９２】
（上述のように）プリミティブがレンダリングされない場所でフレームが得ることになるデフォルトのバックグラウンドカラーにタイルバッファが初期化される場合に、そして、この実施例において、あらゆる任意のサンプリング位置に関して第１のフラグメントが累積バッファ５７に累積されるとき、そのバックグラウンド値が取り消しステージ３１によって減じられる場合に累積バッファが適切な値を有することを保証するために、累積バッファ５７は、好ましくは、全てのサンプリング位置に関して、そのバックグラウンドデフォルトカラーを累積するように、最初に設定される。
【０１９３】
この装置において、各フラグメントは、それがレンダリングすることを完了すると、それは、通常通りタイルバッファ５６に書き込まれるが、しかし、累積バッファ５７が更新される前に、タイルの全てのフラグメントがレンダリングを完了すること（すなわち問題のサブタイルに関して完全にレンダリングされること）を待つ代わりに、累積バッファ５７は、タイルに関する新しいフラグメントがタイルバッファに加えられることになるとすぐに更新されるということが、上記から分かり得る。これは、従って、各サブタイルの間の累積パスの必要性を消去し、それによって性能を増加させる。
【０１９４】
当業者によって認識されることになるように、様々な修正が本発明に行われると共に、必要に応じて本発明の他の装置が使用されるであろう。
例えば、フレームの次のタイルに進む前に、任意のタイルに関して順番に全てのサブタイルをレンダリングする代りに、必要に応じて、例えば、タイルバッファの構造が許すならば、次の２つ（以上）のタイルのセットに進む前に、２つ（以上）の異なるタイルに関するサブタイルの処理をインタリーブすることが可能であろう。これは、例えば、図３において示されたように累積工程が実行される場合に、そして、タイルバッファからタイルライトバックユニットを介してタイル累積バッファにデータを移動することによって、更に効率的であり得る。
【０１９５】
同様に、個々のタイルが全て相互から独立しているので、それらは、相互とは無関係に処理され得ると共に、従って、必要に応じて、例えば、並列に、または相互間でインタリーブされて処理され得る。
【０１９６】
それと同時に、例えば、タイル処理が命令リストから順番に命令を処理すると共に、各命令が完了するのにいくらかの時間を要するが、しかし、（いくらかの命令が並列に処理され得るように（そして典型的に並列に処理されることになるように））新しい命令を処理することが前の命令の処理が始められた直後に始まり、そして、各タイルに関する命令のブロックが、お互いの後に処理のために列に並ばせられる場合、その場合に、もしそうなら、命令は、並列に処理され得るか、及び並列に処理されることになるので、そのような装置では、異なるタイルからの命令が同時に処理されている（すなわち２つ以上のタイルが同時に処理されている）時があり得る。
【０１９７】
しかしながら、２つ以上のタイルのそのような同時の、及び／または、並列の処理が存在する場合でさえ、他のタイルが開始される前に、いくつかのタイルの処理が終了するのは事実であるということが、注意されるべきである。
【０１９８】
上記から分かるように、本発明は、少なくともその好ましい実施例において、累積バッファ動作が必要とされる場合に、完全なフレーム累積バッファを提供する必要性を取り除く。これは、従って、累積バッファ動作を行う場合の（外部の）メモリ帯域幅を非常に減らすと共に、その結果、従来の累積バッファ動作と比較して、レンダリング速度の有意の増加を提供する。
【０１９９】
とりわけ、それは、本発明が提供し得る有意の帯域幅削減のおかげで、はるかに低い電力使用を容易にし、それによって、例えば、ポータブル及び組み込み式グラフィックシステムそして装置のような、より低い電力環境における累積バッファ動作を容易にする。
【０２００】
本発明の好ましい実施例において、これは、少なくとも、フレーム全体を横断するよりむしろ、タイルごとに基づく累積工程を実行することによって達成される。更に、累積バッファは、グラフィックプロセッサの内部に、そして、好ましくは、グラフィックプロセッサの既存のタイルバッファを使用して、実装され得る。本発明の実施例は、更に、レンダリングが進行すると、累積工程を実行し、それによって、個別の累積パスの必要性を排除する。
【０２０１】
本発明の好ましい実施例において、これは、少なくとも、使用されるべきタイルベースのグラフィック処理システムの現存するロジックが、追加費用なしで累積バッファ動作を提供することを可能にすると共に、本発明の好ましい実施例において、少なくとも、テクスチャーキャッシュ及び他のキャッシュ検索の削減と一緒に、従来のレンダラーと比較してかなりの速度増加を提供することを可能にする。
【符号の説明】
【０２０２】
１    フレーム
２、３、４、５    サブ領域
６    フレーム
３１    取り消しステージ
３２    補正された累積バッファ値
３３    現在のフラグメントＦ（ｉ、ｊ）値
３４    累積ステージ
３５    新しい累積バッファ値ＮＡ（ｉ、ｊ）
５０    ラスタライザー
５１    レンダラー
５２    タイルバッファ
５３    ダウンサンプリングユニット
５４    フレームバッファ
５５    表示装置
５６    通常のタイルバッファ
５７    累積バッファ
【図１Ａ】
2011129123.tif 000003
【図１Ｂ】
2011129123.tif 000004
【図１Ｃ】
2011129123.tif 000005
【図２】
2011129123.tif 000006
【図３】
2011129123.tif 000007
【図４】
2011129123.tif 000008
【図５】
2011129123.tif 000009
【外国語明細書】
2011129123.tif 000010
2011129123.tif 000011
2011129123.tif 000012
2011129123.tif 000013
2011129123.tif 000014
2011129123.tif 000015
2011129123.tif 000016
2011129123.tif 000017
2011129123.tif 000018
2011129123.tif 000019
2011129123.tif 000020
2011129123.tif 000021
2011129123.tif 000022
2011129123.tif 000023
2011129123.tif 000024
2011129123.tif 000025
2011129123.tif 000026
2011129123.tif 000027
2011129123.tif 000028
2011129123.tif 000029
2011129123.tif 000030
2011129123.tif 000031
2011129123.tif 000032
2011129123.tif 000033
2011129123.tif 000034
2011129123.tif 000035
2011129123.tif 000036
2011129123.tif 000037
2011129123.tif 000038
2011129123.tif 000039
2011129123.tif 000040
2011129123.tif 000041
2011129123.tif 000042
2011129123.tif 000043
2011129123.tif 000044
2011129123.tif 000045
2011129123.tif 000046
2011129123.tif 000047
2011129123.tif 000048
2011129123.tif 000049
2011129123.tif 000050
2011129123.tif 000051
2011129123.tif 000052
2011129123.tif 000053
2011129123.tif 000054
2011129123.tif 000055
2011129123.tif 000056
2011129123.tif 000057
2011129123.tif 000058
2011129123.tif 000059
2011129123.tif 000060
2011129123.tif 000061