(57)【要約】【課題】タイルベースのグラフィックス処理、およびこのようなタイルベースのグラフィックス処理内の中間値に対する、画素単位の汎用データストアの提供をすること。【解決手段】タイルベースのグラフィックスプロセッサは、タイルバッファおよび画素単位の汎用データストアの両方を有する、タイル処理回路を含む。画素単位の汎用データストアは、中間値を記憶するために、タイル処理回路により読取りアクセス可能であり、書込みアクセス可能である。これらの中間値は、タイル処理回路によって生成され、次いで処理されるタイルに対して出力値を生成するために、タイル処理回路によって消費される。【選択図】図３
2013131216.tif 000002
【特許請求の範囲】
【請求項１】
複数のグラフィックス要素からグラフィックスデータのフレームを形成する、グラフィックス値を生成するための装置であって、前記装置は、
前記フレームを複数のタイルに分割するように構成され、前記複数のタイルのそれぞれはが隣りあう画素位置の配列を含む、分割回路と、
出力値が所与のタイルのために生成される画素位置に依存する、グラフィックス要素を、前記複数のタイルの前記所与のタイルに対して、重複するグラフィックス要素として識別するように構成されたビニング回路と、
所与のグラフィックス要素によって重複される一部またはすべての画素位置に対して、一連のプログラム可能な命令を前記所与のタイルのために、一部またはすべての重複するグラフィックス要素に対して実行するように構成されたタイル処理回路であって、タイルバッファおよび画素単位の汎用データストアを含む、タイル処理回路と、を含み、
前記タイル処理回路は、出力値を生成するために前記所与のタイルをレンダリング中、中間値を記憶するための前記画素単位の汎用データストアに、書込みアクセスおよび読取りアクセスを実行するために、前記プログラム可能な命令を、要素によって重複された画素位置で実行するように構成された装置。
【請求項２】
前記タイル処理回路は、前記出力値を生成する際に、使用後の、前記画素単位の汎用データストア内に記憶された前記中間値を廃棄するように構成された、請求項１に記載の装置。
【請求項３】
前記画素単位の汎用データストアは、
前記タイルバッファの使用されない部分と、
キャッシュメモリ内に記憶されたメインメモリの一部と、の内の１つである、請求項１に記載の装置。
【請求項４】
前記画素単位の汎用データストアは、前記所与のタイルの各画素位置に対する複数の中間値を個々に記憶するように構成された、請求項１に記載の装置。
【請求項５】
前記画素単位の汎用データストアは、インターリーブされた配置において、前記画素単位の汎用データストアの記憶位置内の異なる画素に対して、前記複数の中間値を記憶するように構成された、請求項４に記載の装置。
【請求項６】
前記タイル処理回路は、グラフィックス処理ユニットの一部である、請求項１に記載の装置。
【請求項７】
前記画素単位の汎用データストアは、メモリスタックとして前記中間値を記憶するように構成された、請求項１に記載の装置。
【請求項８】
前記タイル処理回路は、読取りが、前記所与のタイルに対して以前に書き込まれたことがない前記画素単位の汎用データストア内の位置で実行される場合、初期値を戻すように構成された、請求項１に記載の装置。
【請求項９】
前記初期値は、鮮明な色彩値である、請求項８に記載の装置。
【請求項１０】
前記タイル処理回路は、前記画素単位の汎用データストアにドローコールの順番で、アクセスを実行するように構成された、請求項１に記載の装置。
【請求項１１】
前記タイルバッファ内の容量は、前記複数のタイルのそれぞれの画素数のタイルサイズを低減することにより、画素単位の汎用データストアとして働くために開放される、請求項１に記載の装置。
【請求項１２】
出力データの複数の組は、各画素に対して生成され、前記組の出力データの少なくとも一部は、前記画素単位の汎用データストア内に記憶され、前記画素単位の汎用データストアは、メインメモリ内のメモリアドレス空間に対応する、請求項１に記載の装置。
【請求項１３】
前記タイル処理回路は、前記画素単位の汎用バッファストア内に記憶された画素単位のカウンタを使用して、前記画素単位の汎用データストアに付加アクセスを実行するために、前記プログラム可能な命令に応答するように構成された、請求項１に記載の装置。
【請求項１４】
前記画素単位の汎用データストアは、各画素位置内の各試料位置から複数の組の中間値を記憶するように構成された、請求項１に記載の装置。
【請求項１５】
前記画素単位の汎用データストアは、
前記画素単位の汎用データストアの割当ての際に固定された固定サイズと、
最大サイズの限度まで必要に応じて増加される可変サイズと、の内の１つを有する、請求項１に記載の装置。
【請求項１６】
メインメモリへのデータ値の記憶は、前記画素単位の汎用データストアへの前記データ値の記憶より多くのエネルギーを消費する、請求項１に記載の装置。
【請求項１７】
前記画素単位の汎用データストアへの前記書込みアクセスは、処理される要素が、１つまたは複数のフラグメントテストに前記画素位置で合格する場合のみ許可される、請求項１に記載の装置。
【請求項１８】
複数のグラフィックス要素からグラフィックスデータのフレームを形成する、グラフィックス値を生成するための方法であって、
前記フレームを複数のタイルに分割するステップであって、前記複数のタイルのそれぞれは隣りあう画素位置の配列を含む、分割するステップと、
出力値が、所与のタイルのために生成される画素位置に依存するグラフィックス要素を、前記複数のタイルの前記所与のタイルに対して、重複するグラフィックス要素として識別するために前記グラフィックス要素をビニングするステップと、
前記所与の選択されたタイルとしてそれぞれに働く前記複数の各タイルに対して、
（ｉ）前記所与のタイルのレンダリング中の使用のために、前記出力値を記憶するためのタイルバッファおよび画素単位の汎用データストアを提供するステップと、
（ｉｉ）前記所与のタイルに対して一部またはすべての重複するグラフィックス要素のために、所与のグラフィックス要素によって重複された一部またはすべての画素位置に対する一連のプログラム可能な命令を実行することにより、処理操作を実行するステップであって、前記処理操作は、プログラム可能な命令制御の下で、複数の中間値を、前記所与のタイルに対して前記画素単位の汎用データストアに書き込む段階と、前記画素単位の汎用データストアから前記複数の中間値を読み取る段階と、出力値を生成するために前記中間値を使用する段階とを含む、実行するステップと、を含む、方法。
【請求項１９】
前記画素単位の汎用データストア内に記憶された前記中間値は、前記出力値を生成する際に、使用後、廃棄される、請求項１８に記載の方法。
【請求項２０】
前記画素単位の汎用データストアは、
前記タイルバッファの使用されない部分と、
キャッシュメモリ内に記憶されたメインメモリの一部と、の内の１つである、請求項１８に記載の方法。
【請求項２１】
前記画素単位の汎用データストアは、前記所与のタイルの各画素位置に対する複数の中間値を個々に記憶する、請求項１８に記載の方法。
【請求項２２】
異なる画素に対する前記複数の中間値は、インターリーブされた配置で前記画素単位の汎用データストアの記憶位置内に記憶される、請求項２１に記載の方法。
【請求項２３】
前記処理操作は、グラフィックス処理ユニットによって実行される、請求項１８に記載の方法。
【請求項２４】
前記中間値は、前記画素単位の汎用データストア内に、メモリスタックとして記憶される、請求項１８に記載の方法。
【請求項２５】
前記所与のタイルに対して、以前に書き込まれたことがない前記画素単位の汎用データストア内の位置に、読込みが実施される場合、初期値が戻される、請求項１８に記載の方法。
【請求項２６】
前記初期値は、鮮明な色彩値である、請求項２５に記載の方法。
【請求項２７】
前記画素単位の汎用データストアへのアクセスは、ドローコールの順番で実行される、請求項１８に記載の方法。
【請求項２８】
前記タイルバッファ内の容量は、前記複数のタイルのそれぞれの画素数のタイルサイズを低減することにより、画素単位の汎用データストアとして働くために開放される、請求項１８に記載の方法。
【請求項２９】
出力データの複数の組は、各画素に対して生成され、前記組の出力データの少なくとも一部は、前記画素単位の汎用データストア内に記憶され、前記画素単位の汎用データストアは、メインメモリ内のメモリアドレス空間に対応する、請求項１８に記載の方法。
【請求項３０】
前記画素単位の汎用バッファストア内に記憶された画素単位のカウンタを使用して、前記画素単位の汎用データストアに付加アクセスを実行することを含む、請求項１８に記載の方法。
【請求項３１】
各画素位置内の各試料位置に対して複数の組の中間値を、前記画素単位の汎用データストア内に記憶することを含む、請求項１８に記載の方法。
【請求項３２】
前記画素単位の汎用データストアは、
前記画素単位の汎用データストアの割当ての際に固定された固定サイズと、
最大サイズの限度まで必要に応じて増加される可変サイズと、の内の１つを有する、請求項１８に記載の方法。
【請求項３３】
メインメモリへのデータ値の記憶は、前記画素単位の汎用データストアへの前記データ値の記憶より多くのエネルギーを消費する、請求項１８に記載の方法。
【請求項３４】
書き込むステップは、処理される要素が、１つまたは複数のフラグメントテストに前記画素位置で合格する場合のみ許可される、請求項１８に記載の方法。
【請求項３５】
複数のグラフィックス要素からグラフィックスデータのフレームを形成する、グラフィックス値を生成するための装置であって、前記装置は、
前記フレームを複数のタイルに分割するための分割手段であって、前記複数のタイルのそれぞれは、隣りあう画素位置の配列を含む、分割手段と、
出力値が、所与のタイルのために生成される画素位置に依存するグラフィックス要素を、前記複数のタイルの前記所与のタイルに対して、重複するグラフィックス要素として識別するためのビニング手段と、
選択されたタイルとして、前記複数のタイルの各タイルを個別に処理するための、タイル処理手段であって、出力値を記憶するためのタイルバッファ手段と、中間値を記憶するための画素単位の汎用データ記憶手段とを含むタイル処理手段と、を含み、
前記タイル処理手段は、前記タイルバッファ手段において記憶するための、前記出力値を生成するために前記選択されたタイルをレンダリング中、前記中間値を記憶するための、前記画素単位の汎用データ記憶手段への書込みアクセスおよび読取りアクセスを有し、
前記タイル処理手段は、前記フレームの一部を形成するために、前記対象タイルに対する前記出力値を、前記タイルバッファからメインメモリに記憶させる、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックス処理の分野に関する。より詳細には、本発明は、タイルベースのグラフィックス処理、およびこのようなタイルベースのグラフィックス処理内の中間値に対する、画素単位の汎用データストアの提供に関する。
【背景技術】
【０００２】
タイルベースの処理技法に関連して作動する、グラフィックス処理装置の提供は公知である。タイルベースの処理技法では、処理される画像フレームは、隣接する画素位置の複数のタイルに分割される。次いで引き出すグラフィックスオブジェクトを指定するグラフィックス要素データが、該タイルに対して生成される出力値に影響を及ぼす、グラフィックス要素のそれぞれのタイルに対して識別が行なわれるビニング動作を受ける。通常、全体画像フレームに対するグラフィックス要素のサブセットのみが、個々のタイルに影響を与えることになる。
【０００３】
タイルが識別され、グラフィックス要素がビニングされると、処理回路は、関係したタイルに対して所望のグラフィックス処理操作を行なう必要があるデータを、メモリから取り出すことができる。各要素は、一連のプログラム可能な命令である、フラグメント・シェーダに関する。たとえば、特殊画像（テクスチャと呼ばれる）からロードし、基本算術および正余弦関数をサポートし、分岐およびループなどをサポートするいくつかの命令が存在する。ユーザは、各要素に対してフラグメント・シェーダを供給する。フラグメント・シェーダは、通常、要素が重複する各画素毎に１回実行される。たとえば、基本命令を使用して、ユーザは、画素単位のライティングを計算するプログラムをアセンブルすることができる。ＧＰＵの視点から、任意の命令が実行される。該タイルに対する出力値が、該タイルに影響を与えるように、ビニングするステップにおいて識別されるグラフィックス要素のすべてを使用して生成されると、出力値は、メインメモリに書き戻されてもよい。タイルベース処理は、メインメモリにアクセスするデータがほとんどなく、それによりエネルギー消費が低減されるので、エネルギーが制約された環境で使用される際に特に有利である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
最終画素色彩値を構築するために引き続き１回または複数回使用される、中間値を生成する非タイルベースのグラフィックス処理システムを使用して実行される、グラフィックス処理操作の提供は公知である。これらのグラフィックス処理技法の例は、遅延されたシェーディングを行ない、引き出す順番に依存しない透明オブジェクトである。これらの工程を実施する公知の方法は、画像フレーム内の各画素について中間データを収集するために、画像要素を介する１つまたは複数のパスを実行することである。次いでこの中間データは、最終画素色彩値を生成するために複数回使用することができる。この手法に関する問題は、大量の中間値が生成され、記憶装置を必要とし得ることである。別の問題としては、このような方法は、タイルベースの処理システムに適用される際に、タイルベース処理を活用せず、メインメモリへの記憶か、またはメインメモリからの読取りの、いずれかの必要がある中間値をその回数増加することである。
【課題を解決するための手段】
【０００５】
一態様から見ると、本発明は、複数のグラフィックス要素からグラフィックスデータフレームを形成する、グラフィックス値を生成するための装置であって、該装置は、該フレームを複数のタイルに分割するように構成された分割回路であって、該複数のタイルのそれぞれは、隣りあう画素位置の配列を含む、分割回路と、出力値が、所与のタイルのために生成される画素位置に依存するグラフィックス要素を、該複数のタイルの該所与のタイルに対して、重複するグラフィックス要素として識別するように構成されたビニング回路と、所与のグラフィックス要素によって重複される一部またはすべての画素位置に対して、一連のプログラム可能な命令を該所与のタイルのために、一部またはすべての重複するグラフィックス要素に対して実行するように構成されたタイル処理回路と、を含み、該タイル処理回路は、出力値を生成するために該所与のタイルをレンダリング中、中間値を記憶するための、該画素単位の汎用データストアに書込みアクセスおよび読取りアクセスを実行するために、該プログラム可能な命令を要素によって重複された画素位置で実行するように構成された、装置を提供する。
【０００６】
本技法は、タイルベースの処理システムにおいて、画素単位の汎用データストアが、中間パラメータ値を生成するプログラム可能な命令によって制御される、タイル処理回路に提供される場合、これらの中間値をメインメモリに書き戻すことなく、これらの中間値を記憶することが可能であり、その結果、中間値は、所望の出力値を生成するように、（たとえば、命令を使用してまたは直接）タイル処理回路によって消耗されることができる。タイルベース・プロセッサは、処理の作業負荷をすべてのタイルに対して個別の作業負荷に分割するように、グラフィックス要素のそのビニングにより、タイル自体のみに必要とされる、必要とされた中間値のストレージの量をその本質から低減するので、これは比較的管理しやすい量のデータストレージであってもよく、したがってメインメモリに大量の中間値を記憶するあらゆる要求を回避するために、タイル処理回路が書込みアクセスおよび読取りアクセスの両方を有する、画素単位の汎用データストアを提供することができる。
【０００７】
画素単位の汎用データストアは、出力値がタイル処理回路によって正常に蓄積される、正常なタイルバッファと同様に提供される。画素単位の汎用データストアは、命令プログラムの制御の下で、タイル処理回路によって実行される、広範囲の異なる処理操作に対して使用することができる。したがって、たとえば、プログラム可能な命令は、順番に依存しない透明操作と組み合わせた遅延シェーディングなどの、処理操作を達成するために、タイル処理回路によって実行されてもよい。他のグラフィックス処理操作はまた、汎用データを記憶すること、また画素単位の汎用データストアにおける各画素に対して、動的配列およびスタックなどの、データ構造を実装することにより、命令のプログラムによってサポートされてもよい。
【０００８】
生成された出力値は、様々な形を有することができる。出力値は、画素色彩値であってもよく、または他の形の値であってもよく、これは色彩画素値を最終的に生成するように、さらに処理されてもよい。
【０００９】
タイル処理回路は、出力値の使用および／または生成後、画素単位の汎用データストア内に記憶された中間値を廃棄するように構成されてもよい。本技法は、タイルに実行される処理をブレークダウンし、タイルに対する出力値が一旦生成されると、もはや該タイルに対する中間値を記憶するいかなる必要もなくなってもよい。したがって、これらの中間値は廃棄されてもよい。これは、現在処理されている該１つまたは複数のタイルに対する中間値のみが記憶される必要があるので、中間値に対して提供される必要があるストレージの量を低減する。これにより、必要とされる記憶容量全体の量が低減される。
【００１０】
画素単位の汎用データストアは、様々な異なる形を有することができる。一部の実施形態では、タイルバッファは、現在実行されている処理操作に必要とされるより大きい容量を有してもよい。たとえば、タイルバッファは、複数の画素値が、最終的に生成される各画素位置について記憶される、アンチエイリアス処理をサポートするために十分な容量を有してもよい。この状況では、アンチエイリアシングが利用されない際は、タイルバッファの過剰容量は、使用されず、タイルバッファのこの使用されない部分は、画素単位の汎用データストアとして働くことができる。またタイルのサイズも、画素単位の汎用データストアとして働くタイルバッファ内の容量を解放するために、低減されてもよい。
【００１１】
他の実施形態では、メインメモリアドレスの一部は、画素単位の汎用データストアとして働くために割り当てられてもよい。これらの実施形態では、メインメモリとタイル処理回路との間に配置されたキャッシュメモリは、メインメモリ内に割り当てられたメモリ位置をキャッシュするために働くことができる。したがって、メインメモリへの実際の書込みまたは読取りは、キャッシュメモリへの書込み、および読取りによって置き換えられてもよく、それにより、メインメモリからの書込み、およびメインメモリへの読取りに関連した高エネルギーコストが回避される。この手法は、画素単位の汎用データストアが概して小さくなり、したがって少なくともその使用中、キャッシュメモリに完全に収容されるようになることの実現性を拓く。
【００１２】
メインメモリへのトラフィックは、この役割においてライト・ギャザリング・キャッシュメモリ(write gathering cache memory)を利用することによって、または潜在的にこの役割においてキャッシュメモリのロックされた部分を使用することによって、さらに低減することができる。画素単位の汎用データストアとして使用が必要な際に、利用可能なグラフィックス処理ユニット内の使用されないレジスタ記憶装置または使用されない他のバッファストアなどの、画素単位の汎用データストアとして働いてもよい、記憶装置の他の可能性がある。
【００１３】
画素単位の汎用データストアは、選択されたタイルの各画素位置に対して、複数の中間値を個別に記憶するように好都合に構成されてもよい。したがって、タイル処理回路は、次いで画素単位の汎用データストア内の、位置内に記憶された画素位置に関する、複数の中間値を各画素位置に対して生成してもよい。次にこの方法で記憶された中間値は、出力値を生成するために画素毎ベースに基づいた、画素単位の汎用データストアから消費されてもよい。
【００１４】
画素単位の汎用データストア内の異なる画素位置に対する複数の中間値は、インターリーブされた配置に記憶されてもよい。したがって、特定のタイプであるが、異なる画素位置に関するすべての中間値は、互いに隣接して記憶されてもよい。この方法で画素単位の汎用データストアを配置すると、データの一貫性を向上する傾向があり、データの一貫性は、追加データストアがキャッシュメモリの一部の形をもつ際に特に有益である。インターリーブ・フォーマットは変化してもよく、構成可能であってもよい。
【００１５】
画素単位の汎用データストアは、メモリスタックとして中間値を記憶するように構成されてもよい。この方法で中間値を記憶すると、特に何個の中間値が画素単位の汎用データストアに書き込まれ、何個の中間値が画素単位の汎用データストアから読み取られるかが、正確にわからない場合に柔軟性を増加する。
【００１６】
画素単位の汎用データストアに関連したオーバーヘッドを削減するために、一部の実施形態は、現在処理されている選択されたタイルに対して、以前に書き込まれたことがない画素単位の汎用データストア内の位置に、読込みが実施される場合、初期値が戻されるように構成されてもよい。これは、選択されたタイルによって使用される部分を鮮明にするに過ぎないので、選択されたタイルによって使用される前に、完全な画素単位の汎用データストアを鮮明にする必要が回避される。一部の実施形態では、ハードウェアは、ハードウェア制御下で画素単位の汎用データストアを鮮明にすることにより、初期値の戻りを作動させる、こうした読取りに応答するように構成されてもよい。戻される初期値は、一部の実施形態では鮮明な色彩値であってもよい。
【００１７】
タイル処理回路は、グラフィックス要素が順序付けられた順番（すなわち、ドローコールの順番）で画素単位の汎用データストアにアクセスを実行するように構成されてもよい。これにより、タイル処理回路が、要素が一度に１つを処理したかのように、画素単位の汎用データストアにおいて依然として正しい値を生成している間に、並行して複数の要素に属する画素を処理することが可能になる。
【００１８】
上述のように、生成された中間値は、幅広い異なる所望の処理操作の結果であってもよい。一部の実施形態では、中間値は、関係する画素をライティングする、１つまたは複数の光源を画定するデータに依存する、対応する画素値を計算するために、生成され、次いで消費される画素単位のライティング・パラメータである。この状況では、画素単位のライティングの中間値は、関係する画素に対応する表面位置に対する、１つまたは複数の法線ベクトル値、反射強度値、光強度値、材料識別子値、色彩値およびアルベド値を含んでもよい。
【００１９】
本技法が有効な指示を提供する別のタイプの処理操作では、中間値は、１つまたは複数の透明オブジェクトのあらゆる効果を含む、対応する画素値を計算するために、該１つまたは複数の透明オブジェクトを表すように処理させる操作中に、生成され消費される画素単位の透明オブジェクトパラメータである。この状況では、透明オブジェクトパラメータは、関係する画素に対応する位置に対して、透明オブジェクトの深度値、透明値および色彩値を含んでもよい。
【００２０】
有効な処理操作は、画素に対応する中間値を生成するものであってもよく、さらなる操作において画素に対応する中間値を消費する。一部の処理操作は、複数の中間値を生成し、後にまだ処理されていないタイルからの位置を含む、画素位置から中間値にアクセスする必要がある。中間値は、複数のレンダリング・ターゲット（ＭＲＴ）に出力される。画素単位の汎用データストアは、複数のレンダリング・ターゲットとして使用されるように構成されることが可能であり、この場合、画素単位の汎用データストアの内容は、画素当たりの複数の出力値として出力される。これらの具体的な処理操作は、画像フレーム内のすべてのタイルに対してメモリ内に割り当てられるストレージを必要とする。
【００２１】
画素単位の汎用データストアは、一部の実施形態では、画素単位の汎用データストアの固定された割当てであり得る、静的サイズを有する。他の実施形態では、画素単位の汎用データストアは、必要に応じて最大サイズ化された限度に増加される可変サイズを有してもよい。個々の実施は、これらの選択肢の両方をサポートするように構成されてもよい。複数のレンダリング・ターゲットが使用される際、ストレージは、フレーム内のすべてのタイルに対して中間値を記憶するために十分な容量を有する、画素単位の汎用データストアとして使用するために割り当てられる。
【００２２】
前述のように、本技法は、メインメモリへのデータ値のストレージは、画素単位の汎用データストアへのデータ値のストレージより多くのエネルギーを消費する、実施形態での利点とともに使用されてもよい。しかし、そうでない場合であっても、本技法は、処理を受けている所与のいかなる時でも、それらのタイルに関して、供給のみが必要な画素単位の汎用ストレージとして求められるストレージの量を、単に低減することにおいて有利であり得る。
【００２３】
別の態様から見ると、本発明は、複数のグラフィックス要素からグラフィックスデータのフレームを形成する、グラフィックス値を生成する方法であって、
該フレームを複数のタイルに分割することであって、該複数のタイルのそれぞれは、隣りあう画素位置の配列を含む、分割するステップと、
出力値が、所与のタイルのために生成される画素位置に依存するグラフィックス要素を、該複数のタイルの該所与のタイルに対して、重複するグラフィックス要素として識別するために該グラフィックス要素をビニングするステップと、
該複数のタイルのそれぞれに対して、
（ｉ）該所与のタイルのレンダリング中の使用のために、該出力値を記憶するためのタイルバッファおよび画素単位の汎用データストアを提供することと、
（ｉｉ）該所与のタイルに対して一部またはすべての重複するグラフィックス要素のために、所与のグラフィックス要素によって重複された一部またはすべての画素位置に対する一連のプログラム可能な命令を実行することにより、処理操作を実行することであって、該処理操作は、プログラム可能な命令制御の下で、複数の中間値を、該所与のタイルに対して該画素単位の汎用データストアに書き込むことと、該画素単位の汎用データストアから該複数の中間値を読み取ることと、出力値を生成するために該中間値を使用することと、を含む、実行することと、を該所与の選択されたタイルとしてそれぞれに働くステップと、を含む方法を提供する。
【００２４】
さらなる態様から見ると、本発明は、複数のグラフィックス要素からグラフィックスデータのフレームを形成する、グラフィックス値を生成するための装置であって、該装置は、
該フレームを複数のタイルに分割するための分割手段であって、該複数のタイルのそれぞれは、隣りあう画素位置の配列を含む、分割手段と、
出力値が、所与のタイルのために生成される画素位置に依存するグラフィックス要素を、該複数のタイルの該所与のタイルに対して、重複するグラフィックス要素として識別するためのビニング手段と、
選択されたタイルとして、該複数のタイルの各タイルを個別に処理するための、タイル処理手段であって、該タイル処理手段は、出力値を記憶するためのタイルバッファ手段と、中間値を記憶するための画素単位の汎用データ記憶手段と、を含む、タイル処理手段と、を含み、
該タイル処理手段は、該タイルバッファ手段において記憶するための、該出力値を生成するために該選択されたタイルをレンダリング中、該中間値を記憶するための、該画素単位の汎用データ記憶手段への書込みアクセスおよび読取りアクセスを有し、
該タイル処理手段は、該フレームの一部を形成するために、該対象タイルに対する該出力値を、該タイルバッファからメインメモリに記憶させる、装置を提供する。
【００２５】
本発明の上記ならびに他の目的、特徴および利点は、添付図面とともに読むと、以下の例示的な実施形態の詳細な説明から明らかになろう。
【図面の簡単な説明】
【００２６】
【図１】メインメモリ、キャッシュメモリ・システムおよび複数のグラフィックス・コアを組み込んだグラフィックス処理ユニットを、概略的に示す図である。
【図２】複数のグラフィックス要素を含んで形成される画像の概略を示す図である。
【図３】本技法の実施形態の一例による、処理操作を概略的に示す流れ図である。
【図４】遅延シェーディング操作をサポートするために使用され得る、中間値を概略的に示す図である。
【図５】順番に依存しない透明オブジェクトのレンダリングをサポートするために使用され得る、中間値の一例を示す図である。
【図６】画素単位の汎用データストア内の異なる画素位置に対する、中間値のインターリーブを概略的に示す図である。
【図７】タイルバッファの使用されない部分の形で、画素単位の汎用データストアの提供を概略的に示す図である。
【図８】ライト・ギャザリング・キャッシュの一部として、画素単位の汎用データストアの提供を概略的に示す図である。
【図９】タイルベースのグラフィックス処理ユニット内の一部のグラフィックス・パイプラインの段階を概略的に示す図である。
【図１０】タイルベースのグラフィックス処理ユニット内の遅延シェーディングのサポートにおける、本技法の使用を概略的に示す図である。
【発明を実施するための形態】
【００２７】
図１は、複数のレベル０のキャッシュ６、８、１０、１２およびレベル１のキャッシュ１４を含むキャッシュシステムを介して、それぞれのグラフィックス処理ユニット１６、１８、２０、２２に結合された、メインメモリ４を含むシステムを概略的に示す。各グラフィックス処理ユニットは、処理コア２４およびタイルバッファ２６を含む。グラフィックス・コア２４は、各画素位置および該画素位置に対してレンダリングされる各グラフィックス要素について、プログラム可能な命令を繰り返し実行することにより、画素位置のタイル上で動作する少なくともフラグメント・シェーダ・パイプラインの段階を含む。このようなタイルベース・プロセッサは、当技術分野においてそれ自体が公知であり、本明細書に詳述されない。特に、グラフィックス要素のビニングを実行するための機構、および出力画素値を収集し、画素色彩値の最終的に所望するフレームを形成するための機構は、当業者には理解されよう。
【００２８】
図２は、レンダリングされる画像２８を示す。この画像２８は、個別の処理を受ける複数のタイル３０に分割されてもよい。画像２８は、ソリッド三角３２、３４および透明三角３６、３８などの、複数のグラフィックス要素を含む。また、画像２８内のオブジェクトをライティングするかつ／またはシェーディングするために使用される、複数の光源Ｌ０、Ｌ１およびＬ２も画像２８内に含まれる。ソリッドグラフィックス要素および透明グラフィックス要素のレンダリング、ならびに画像フレーム２８により最終的に使用される、画素色彩値を生成するための複数の光源の使用も、当業者には理解されよう。しかし、各画素位置についてのプログラム可能な命令を実行する、タイル処理回路に読取りおよび書込みアクセス可能な、画素単位の汎用データストアを提供し、利用する本技法は、以下にさらに説明される。
【００２９】
図３は、本技法の一実施形態による、処理操作を示す概略的な流れ図である。ステップ４０では、画像フレームは、それぞれが個別に処理される複数のタイルに分割される。ステップ４２では、処理される画像フレーム内のグラフィックス要素は、所与のタイルに対して生成される出力値を制御するグラフィックス要素が、該所与のタイルに対してビンにすべてが割り当てられるように、識別され、ビン（異なるタイルについての収集）に割り当てられる。
【００３０】
ステップ４４では、第１のタイルが、現行の処理操作のために選択される。現行の処理操作は、たとえば、順番に依存しない透明オブジェクトをレンダリングするアルゴリズムを使用する、透明オブジェクトのレンダリングであってもよい。実行される処理の別の例は、その状況内の１つまたは複数の光源に依存する、画素位置をライティングするための、シェーディング操作であってもよい。画素に対応する中間値が生成され、後に消費される場合の、レンダリングの他の形も想定されてもよく、本技法内に包含される。
【００３１】
ステップ４６では、実行される処理に必要とされる入力パラメータは、メインメモリから読み取られる。ステップ４８では、選択されたタイルに対して、画素単位の汎用データストアが割り当てられる。この画素単位の汎用データストアは、たとえば、タイルバッファ２６内の使用されない記憶空間の使用によって、提供されてもよく、またはキャッシュメモリ６、８、１０、１２（恣意的にロックされる）内の記憶位置として提供されてもよい。ステップ５０は、中間値を画素単位の汎用データストアに書き込み得る各要素に対応する、画素に命令を実行することと、出力値をタイルバッファ２６に書き込むことを含む、選択されたタイルに対して、所望の処理操作を実行する。次いでステップ５２は、画素値を選択されたタイルに対して、タイルバッファからメインメモリに書き戻す。
【００３２】
ステップ４６および５２は、メインメモリにアクセスを実行することが、上記から理解されよう。多くのアクセスが、中間値を画素単位の汎用データストアに書き込み、画素単位の汎用データストアから中間値を読み取ることの両方がステップ５０で実行されてもよく（テクスチャリング命令は、ステップ５０でしばしば使用され、メインメモリへのアクセスを構成する）、これらは、比較的低エネルギーコストで実行されることがある。さらに、これらの中間値は、処理のために現在選択されているタイルに関するので、中間値は画像フレームに対応する画像データの総量に比べて比較的少ない数である。さらに、中間値が一旦生成され、ステップ５０で消費されると、中間値は該タイルに対する処理が完了すると、廃棄されてもよい。
【００３３】
ステップ５４は、最後のタイルが処理されたかどうかを判定する。最後のタイルが処理された場合は、処理はステップ５６で終了する。最後のタイルがまだ処理されていない場合は、ステップ５８は、シーケンス内の次のタイルを選択し、処理はステップ４６に戻る。
【００３４】
図４は、本技法による光をシェーディングする処理の一部として、生成／消費され得る複数の中間値を概略的に示す。画素単位の汎用データストア内に画素単位ベースで記憶できる中間値は、該画素についての法線ベクトル、アルベド値、色彩値、反射強度値、光強度値および材料識別子値を含む。上記は、記憶され得る中間値の一例に過ぎないことが理解されよう。さらなる中間値が異なる実施形態において記憶されてもよく、一部の実施形態は、上記に収載された中間値のすべてを記憶しなくてもよい。これらの変形形態のすべては、本技法に含まれる。
【００３５】
図４に示された中間値が固定したサイズを有するのは、タイル内の画素数が固定しており、画素当たりの中間パラメータ数が、固定しているからである。したがって、図４に示された中間値は、固定したサイズの画素単位の汎用データストア内に記憶されてもよい。サイズがタイルバッファ２６の使用されない部分内であることが可能である場合は、このような使用されない部分は、図４の中央値に対して画素単位の汎用データストアとして働くことがある。
【００３６】
図５は、プログラム可能な命令制御下で、タイル処理回路によって実行される、異なるタイプの処理に対して、画素単位の汎用データストア内に記憶され得る中間値の別の組を概略的に示す。この例は、実行される処理は、順番に依存しないアルゴリズムに従って、透明オブジェクトをレンダリングすることである。このようなレンダリングを実行するために、中間値は、レンダリングされるそれぞれの透明オブジェクトを表すように組み立てられる。各透明オブジェクトについて、中間値は、深度値、透明値および色彩値を指定してもよい。これらの中間値は、画素ベース上に記憶される。したがって、すべての中間値が生成されると、各画素位置に対して該画素位置に影響を与える、透明オブジェクトを指定する中間値が読み取られてもよい。深度値を使用して、最終透明オブジェクトが処理されるまで、それらの透明オブジェクトが処理される、順番を制御してもよい。
【００３７】
事前に、何個の透明オブジェクトが、画素位置に影響を及ぼし得るかはわからないことが、理解されよう。したがって、画素単位の汎用データストアは、可変数の透明オブジェクトについて、中間値を記憶するために、最大値までの可変サイズを有してもよい。このような画素単位の汎用データストアは、メインメモリ４内のメモリアドレス空間を割り当てることによって、提供されてもよい。介入するキャッシュメモリを代わりに使用して、中間値に有効にアクセスするエネルギーを提供する方法で、タイル処理回路に近接した中間値を記憶し得るので、このようなメモリアドレス空間が割り当てられると、中間値は、メインメモリ４に実際に書き込まれる、またはメインメモリ４から読み取られる必要がない。特に、キャッシュメモリがライト・ギャザリング・キャッシュである場合は、実行される正常な処理はすべての中間値を生成し得る。中間値は、関係したタイルが処理された後、中間値は必要とされず、一旦該タイルに対する出力値が生成されると廃棄され得るので、次いで処理は、ライト・ギャザリング・キャッシュから中間値をメインメモリに実際に書き戻すいかなる必要もなしに消費する。
【００３８】
図６は、画素単位の汎用データストア内の異なる画素位置から同じタイプのパラメータ値の介入を概略的に示す。図６に示されたように、画素０〜Ｎについての中間値Ａは、連続した記憶位置に記憶されたすべてである。次いで画素値の同じシーケンスに対する中間値Ｂは、互いに接触または隣接する。タイル処理回路が、個々の画素に対して個々のパラメータ値にアクセスを要求すると、オフセットを使用して、画素単位の汎用データストアの中に指標を付け、正しいパラメータタイプの適切な中間値および正しい画素に対する適切な中間値を選択してもよい。
【００３９】
画素単位の汎用データストアが、メインメモリ４内の割り当てられた領域に関係する際は、タイル処理回路には、メインメモリ４内の該画素単位の汎用データストアに対するアドレス空間の開始を示す基本指標値が、プログラムされてもよいことが理解されよう。したがって、タイル処理回路によって実行されるプログラム可能な命令は、画素単位の汎用データストアから（たとえば、メモリアドレスに指標を付けられるキャッシュメモリから）取り出される、所望の中間値の記憶位置を計算するために、この基本アドレス・オフセットを使用してもよい。
【００４０】
図７は、出力値のために使用されないタイルバッファ２６内の空間が、中間値に対して画素単位の汎用データストアを提供するために働く、一例示的実施形態を示す。一例として、タイルバッファ２６は、複数の画素値が、各画素位置に対して最終出力値を生成する際に使用するために記憶される、アンチエイリアス処理をサポートするのに十分な大きさであってもよい。アンチエイリアスが利用されない際は、タイルバッファ２６の追加容量を使用して、画素単位の汎用データストアとして働いてもよい。
【００４１】
図８は、別の例示的実施形態を概略的に示す。この例示的実施形態では、画素単位の汎用データストアは、メインメモリ４内の割り当てられた領域に対応する。しかし、中間値を記憶するために働き、画素単位の汎用データストアとして作用するライト・ギャザリング・キャッシュ６０が提供されている。中間値は、グラフィックス・コア２４によって生成され、それらが消費されると、ライト・ギャザリング・キャッシュ６０から読み返される前に、ライト・ギャザリング・キャッシュ６０に書き込まれる。中間値は、各タイルの処理の最後に廃棄され、したがって、メインメモリ４に書き戻される必要は決してない。
【００４２】
画素単位の汎用データストアの一部として使用される、ライト・ギャザリング・キャッシュ６０内の各キャッシュラインは、グラフィックス・コア２４内の「鮮明にされた(cleared)」ビットと関連付けられてもよい。新しいタイルの処理が開始されると、これらのビットのすべては、対応するキャッシュラインが鮮明にされなかったことを示すように設定される。キャッシュラインが、画素単位の汎用データストアの一部として使用されるために割り当てられ、次いで読取りまたは書込み操作を受ける場合、「クリア」ビットは、キャッシュラインが関連したタイルの処理のために、すでに鮮明にされたかどうかを判定するために、該キャッシュラインについて読み取られる。キャッシュラインがまだ鮮明にされていない場合は、キャッシュラインが鮮明にされ、したがって「クリア」ビットは、現行のタイル処理で再度鮮明にされないように変更される。関連したアクセスが読取りアクセスである場合は、クリア操作に加えて、初期値が、読取りのために戻される。この初期値は、たとえば鮮明な色彩値であってもよい。アクセス操作が書込みである場合は、キャッシュラインに対して実行される鮮明さに加えて、関連したパラメータ値がキャッシュラインに書き込まれる。
【００４３】
画素単位の汎用データストアは、先に論じられたように、固定サイズまたは可変サイズを有してもよいことが理解されよう。画素単位の汎用データストアは、メモリスタックとして構成されることが可能である。こうした構成は、図５に関して記載されたように、可変サイズの画素単位の汎用データストアにおいて特に有益である。
【００４４】
図９は、グラフィックスコア２４内に提供された処理段階の一部を概略的に示す。これらには、ラスタライザ６２、フラグメント・シェーダ６４、フラグメントテスト装置６６、フラグメント操作段階６８および書き戻し段階７０として働く段階が含まれる。フラグメント・シェーダ６４は、プログラム可能であり、処理操作を実行するために、プログラム可能な命令を、各要素に関する各画素位置に対して繰り返し実行する。それらの命令の一部は、上に論じたように中間値を生成してもよい。これらの中間値は、画素単位の汎用データストア７２内に記憶される。フラグメント・シェーダ６４は、タイルバッファ２６への読取りアクセスおよび書込みアクセスを有する。一部の実施形態では、書き戻し段階７０は、画素単位の汎用データストアから一部の出力値を引き出してもよい。一般に、書き戻し段階７０は、タイルバッファ２６から出力値を引き出す。フラグメント・シェーダ６４によって使用される中間値に対するストレージを提供する、画素単位の汎用データストア７２を提供することは、フラグメント・シェーダ６４によって実行され得る処理操作の機能を増加させる。柔軟性のあるこの増加は、記憶された中間値が、処理されるタイルに関する中間値であり、したがって、ほとんどの状況で画素単位の汎用データストア７２に対して、比較的小さい容量が必要とされるので、提供される必要のある記憶量の過剰な増加なしに達成される。
【００４５】
一部の実施形態では、画素単位の汎用データストア７２への書込みは、処理されるグラフィックス要素が、該画素／サンプル位置でフラグメントテスト装置６６によって実行される、１つまたは複数のフラグメントテストに合格する場合のみ、起こることができるような構成であってもよい。
【００４６】
適切な背景において作動する図９の実施形態の場合では、各要素に対して、ラスタライザは、要素が重複する各画素に対するフラグメントを生成する。次いで各フラグメントは、図９に示された段階を通過する。フラグメント・シェーダ段階では、命令は、該フラグメントに対応して実行される。フラグメントテスト段階では、フラグメントは、様々なフラグメントテストに対してテストされる。いずれかのテストに落ちた場合は、フラグメントは、削除される（さらに処理されず、タイルバッファに書き込まれることはない）。
【００４７】
フラグメントテストには、シザー(scissor)、アルファ(alpha)、ステンシル(stencil)、深さ(depth)が含まれてもよい。これらの内で最も一般的なのは、深さテストおよびステンシルテストである。フラグメントは、フラグメントの深さが、タイルバッファ内に記憶された深さと該画素位置で比較した際に、深さ機能を通す場合、深さテストに合格する。深さ機能は、「より小さい」、「以下」、「より大きい」、「以上」、「等しい」、「等しくない」、「常に」、「決してない(never)」などの比較を実行するように構成することができる。ステンシルテストは、基準値が、タイルバッファ内に記憶されたステンシル値と該画素位置で比較される以外は、同様であってよい。シザーテストおよびアルファテストは、フラグメントテストにおけることが論理的に予期されるが、これらは他の段階でも実施されてよい。
【００４８】
図１０は、複数の光源を使用する画像のライティング／シェーディングにおいて、本技法の作動を検討する別の方法を概略的に示す。グラフィックス要素７４の集合は、状況、各画素位置に対する法線、各画素位置に対する深さ、各画素位置に対するアルベド、各画素位置に対する反射強度などをレンダリングする、処理を受ける。法線ベクトル値、深さ値、アルベド値、反射強度値などは、画素単位の汎用データストア７２内に記憶される中間値である。このようなＮ個の光の集合内の光ｉによって影響を及ぼされる各画素位置に対して、中間値は、画素単位の汎用データストア７２から読み取られ、画素位置に対するライティングを計算し、ライティングの結果を画素位置に対する最終色出力の中に蓄積するために使用される。したがって、所与のタイルに対して、双方とも中間値を生成するために、グラフィックス・パイプラインを通る唯一の通路が存在し、中間値は画素単位の汎用データストア７２内に一時的に記憶され、次いで関するタイルに対して最終色出力を生成するために消費される。
【００４９】
本発明の例示的実施形態が、添付図面を参照しつつ本明細書に詳しく説明されたが、本発明は、これらの正確な実施形態に限定されず、様々な変形形態および修正形態が、添付の特許請求の範囲によって定義された本発明の範囲および精神から逸脱することなく、その中で効果があることは、当業者には理解されたい。
【符号の説明】
【００５０】
４  メインメモリ
６、８、１０、１２  キャッシュメモリ
１４  キャッシュ
１６、１８、２０、２２  グラフィックス処理装置
２４  処理コア、グラフィックス・コア、グラフィックス・コア
２６  タイルバッファ
２８  画像、画像フレーム
３０  複数のタイル
３２、３４  ソリッド三角
３６、３８  透明三角
６０  ライト・ギャザリング・キャッシュ
６２  ラスタライザ
６４  フラグメント・シェーダ
６６  フラグメントテスト装置
６８  フラグメント操作段階
７０  書き戻し段階
７２  画素単位の汎用データストア
７４  グラフィックス要素
【図１】
2013131216.tif 000003
【図２】
2013131216.tif 000004
【図３】
2013131216.tif 000005
【図４】
2013131216.tif 000006
【図５】
2013131216.tif 000007
【図６】
2013131216.tif 000008
【図７】
2013131216.tif 000009
【図８】
2013131216.tif 000010
【図９】
2013131216.tif 000011
【図１０】
2013131216.tif 000012
【外国語明細書】
2013131216000001.pdf