(57)【要約】パイプラインは、テクスチャブロックと、このテクスチャブロックの圧縮パラメータ及びテクスチャブロックの常駐状態を符号化するメタデータと、を記憶するメモリにアクセスするように構成されている。プロセッサは、シェーディング操作を実行するためにテクスチャブロック内のデータを要求すると共にメタデータへのアクセスを要求する。パイプラインは、テクスチャブロックがメモリに常駐していることをメタデータが示すかどうかに応じて、テクスチャブロック内のデータを選択的にプロセッサに返す。また、テクスチャブロックの圧縮パラメータを符号化するメタデータのコピーを記憶するために、キャッシュを含むこともできる。キャッシュに記憶された常駐状態及びメタデータは、キャッシュに記憶されたメタデータへのアクセス要求に応じて変更されてもよい。【選択図】図４
2020531994.tif 000002
【特許請求の範囲】
【請求項１】
テクスチャブロックと、前記テクスチャブロックの圧縮パラメータと前記テクスチャブロックがメモリに常駐しているかどうかを示す常駐状態とを符号化するメタデータと、を記憶するメモリにアクセスするように構成されたパイプラインと、
シェーディング操作を実行するために前記テクスチャブロック内のデータを要求すると共に、前記メタデータへのアクセスを要求するプロセッサと、を備え、
前記パイプラインは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示しているかどうかに応じて、前記テクスチャブロック内の前記データを選択的に前記プロセッサに返す、
装置。
【請求項２】
前記パイプラインは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示していることに応じて、前記テクスチャブロック内の前記データを返す、
請求項１の装置。
【請求項３】
前記プロセッサは、前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることに応じて、前記要求されたデータが利用可能でないことを示す信号を受信し、前記信号を受信したことに応じて、データを前記テクスチャブロックに投入し、前記データを前記テクスチャブロックに投入したことに応じて、前記テクスチャブロックを再要求すると共に前記メタデータに再アクセスする、
請求項１の装置。
【請求項４】
前記プロセッサは、前記メタデータを含むメタデータ面の第１パスの間に、前記テクスチャブロックを含む複数のテクスチャブロックの常駐状態及びサンプリング状態のうち少なくとも１つを決定し、前記常駐状態及び前記サンプリング状態のうち前記少なくとも１つに基づいて前記複数のテクスチャブロックに選択的に投入し、第２パスの間に前記複数のテクスチャブロック内のテクスチャデータをサンプリングする、
請求項１〜３の何れかの装置。
【請求項５】
前記テクスチャブロックの前記圧縮パラメータ及び前記常駐状態を符号化する前記メタデータのコピーを記憶するエントリを含むキャッシュをさらに備える、
請求項１〜３の何れかの装置。
【請求項６】
前記キャッシュに記憶された前記メタデータのサンプリング状態は、前記テクスチャブロックが前記メモリに常駐していないことを前記テクスチャブロックの以前の常駐チェックが示したかどうかを示す、
請求項５の装置。
【請求項７】
前記サンプリング状態は、前記キャッシュの前記エントリに記憶された前記メタデータへのアクセス要求に応じて変更される、
請求項６の装置。
【請求項８】
前記プロセッサは、前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることと、前記キャッシュが前記エントリ内の前記メタデータにアクセスするための少なくとも１つの以前の要求を受信したことを前記サンプリング状態が示していることとに応じて、データを前記テクスチャブロックに投入する、
請求項７の装置。
【請求項９】
テクスチャブロックの圧縮パラメータと前記テクスチャブロックがメモリに常駐しているかどうかを示す常駐状態とを符号化するメタデータにアクセスすると共に、前記メモリに記憶された前記テクスチャブロックのデータへのアクセスを要求することと、
データが前記メモリに常駐していることを前記常駐状態が示しているかどうかに応じて、前記テクスチャブロック内の前記データを選択的に受信することと、を含む、
方法。
【請求項１０】
前記テクスチャブロック内の前記データを選択的に受信することは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示していることに応じて、前記テクスチャブロック内の前記データを受信することを含む、
請求項９の方法。
【請求項１１】
前記データを選択的に受信することは、
前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることに応じて、前記要求されたデータが利用可能でないことを示す信号を受信することを含み、
前記信号を受信したことに応じてデータを前記テクスチャブロックに投入することと、
前記データを前記テクスチャブロックに投入したことに応じて、前記テクスチャブロック内の前記データを再要求すると共に前記メタデータに再アクセスすることと、をさらに含む、
請求項９の方法。
【請求項１２】
前記メタデータを含むメタデータ面の第１パスの間に、前記テクスチャブロックを含む複数のテクスチャブロックの前記常駐状態及びサンプリング状態のうち少なくとも１つを決定することと、
前記常駐状態及び前記サンプリング状態のうち前記少なくとも１つに基づいて前記複数のテクスチャブロックに選択的に投入することと、
第２パスの間に前記複数のテクスチャブロック内のテクスチャデータをサンプリングすることと、をさらに含む、
請求項９〜１１の何れかの方法。
【請求項１３】
前記テクスチャブロックの前記圧縮パラメータ及び前記常駐状態を符号化する前記メタデータのコピーをキャッシュすることをさらに含む、
請求項９の方法。
【請求項１４】
キャッシュに記憶された前記メタデータのサンプリング状態は、前記テクスチャブロックが前記メモリに常駐していないことを前記テクスチャブロックの以前の常駐チェックが示したかどうかを示す、
請求項１３の方法。
【請求項１５】
前記メタデータの前記キャッシュされたコピーへのアクセス要求に応じて前記サンプリング状態を変更することをさらに含む、
請求項１４の方法。
【請求項１６】
前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることと、前記キャッシュが前記メタデータの前記キャッシュされたコピーにアクセスするための少なくとも１つの以前の要求を受信したことを前記サンプリング状態が示していることとに応じて、データを前記テクスチャブロックに投入することをさらに含む、
請求項１５の方法。
【請求項１７】
複数のシェーダを含むグラフィックスパイプラインと、
テクスチャブロックと、前記テクスチャブロックの圧縮パラメータと前記テクスチャブロックがストレージリソースに常駐しているかどうかを示す常駐状態とを符号化するメタデータと、を記憶するストレージリソースと、を備え、
前記複数のシェーダのうち何れかのシェーダは、シェーディング操作を実行するために前記テクスチャブロックに要求すると共に前記メタデータにアクセスするように構成されており、
前記テクスチャブロック内のデータは、前記テクスチャブロックが前記ストレージリソースに常駐していることを前記常駐状態が示すかどうかに応じて、選択的に前記シェーダに返される、
グラフィックス処理ユニット。
【請求項１８】
前記テクスチャブロック内の前記データは、前記テクスチャブロックが前記ストレージリソースに常駐していることを前記常駐状態が示すことに応じて、前記シェーダに返される、
請求項１７のグラフィックス処理ユニット。
【請求項１９】
前記シェーダは、前記テクスチャブロックが前記ストレージリソースに常駐していないことを前記常駐状態が示すことに応じて、前記要求されたデータが利用可能でないことを示す信号を受信するように構成されている、
請求項１７のグラフィックス処理ユニット。
【請求項２０】
前記シェーダは、前記信号を受信したことに応じて、データを前記テクスチャブロックに投入するように構成されており、
前記シェーダは、前記データを前記テクスチャブロックに投入したことに応じて、前記テクスチャブロックを再要求すると共に前記メタデータに再アクセスする、
請求項１９のグラフィックス処理ユニット。
【発明の詳細な説明】
【背景技術】
【０００１】
グラフィックス処理ユニット（ＧＰＵ）は、通常、プログラマブルシェーダ及び固定機能ハードウェアブロックのシーケンスから形成されるグラフィックスパイプラインを使用して、三次元（３Ｄ）グラフィックスを処理する。例えば、フレーム内で可視であるオブジェクトの３Ｄモデルは、ユーザに表示するための画素の値を生成するように、グラフィックスパイプラインで処理される三角形、他の多角形又はパッチのセットによって表すことができる。三角形、他の多角形又はパッチは、まとめてプリミティブと呼ばれる。このプロセスは、プリミティブの解像度よりも高い解像度を有する視覚的な詳細を組み込むために、テクスチャをプリミティブにマッピングすることを含む。ＧＰＵは、テクスチャ値を記憶するために使用される専用メモリを備えているため、テクスチャ値は、グラフィックスパイプラインで処理されているプリミティブへのマッピングするに利用可能である。テクスチャは、ディスクに記憶することもできるし、グラフィックスパイプラインが必要とする場合にプロシージャに従って生成することができる。専用ＧＰＵメモリに記憶されたテクスチャデータは、テクスチャをディスクからロードするか、データをプロシージャに従って生成することによって取り込まれる。通常、専用ＧＰＵメモリは、比較的小さいメモリであり、専用ＧＰＵメモリに記憶可能なテクスチャデータの量を制限する。さらに、テクスチャデータを取り込むために必要なオーバーヘッドは、特に、最終的なスクリーン画像をレンダリングするためにテクスチャデータの小さなサブセットのみが使用される場合に、大きくなる可能性がある。例えば、ページ内のデータの僅かな部分のみを使用して画像をレンダリングする場合であっても、テクスチャは、ページ毎にディスクからロードされる。
【０００２】
添付図面を参照することによって本開示をより良く理解することができ、その多数の特徴及び利点が当業者に明らかになる。異なる図面での同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、ディスプレイへの出力を意図した視覚画像を生成するグラフィックス処理ユニット（ＧＰＵ）を含む処理システムのブロック図である。
【図２】いくつかの実施形態による、三次元（３Ｄ）シーンのラスタライズ画像を所定の解像度で生成するために高次ジオメトリプリミティブを処理することができるグラフィックスパイプラインを示す図である。
【図３】いくつかの実施形態による、テクスチャブロック及び対応するメタデータを記憶するために使用されるメモリ構造のブロック図である。
【図４】いくつかの実施形態による、テクスチャデータを含むテクスチャブロックの常駐状態に基づいてテクスチャデータを選択的に返す方法のフロー図である。
【図５】いくつかの実施形態による、ＧＰＵメモリに関連するメタデータキャッシュを操作する方法のフロー図である。
【図６】いくつかの実施形態による、ＧＰＵメモリ及び関連するキャッシュにテクスチャデータを投入する方法のフロー図である。
【図７】いくつかの実施形態による、テクスチャブロックに関連するメタデータ面のブロック図である。
【図８】いくつかの実施形態による、メタデータ面をサンプリングすることによって非常駐タイルのワークリストを生成する方法のフロー図である。
【図９】いくつかの実施形態による、テクスチャデータを、非常駐の、以前にサンプリングされたタイルに投入する方法のフロー図である。
【発明を実施するための形態】
【０００４】
テクスチャのサブセットを投入し、メモリ内に常駐するテクスチャの部分を示す常駐構造を使用することによって、専用ＧＰＵメモリ内のスペースを節約することができる。次に、テクスチャデータにアクセスする前に常駐構造にクエリして、テクスチャデータが専用ＧＰＵメモリに常駐していることを確認することができる。したがって、ＧＰＵは、テクスチャデータにアクセスする要求に応じて、専用ＧＰＵメモリに未だ常駐していないテクスチャの部分を投入することのみが要求される。したがって、常駐構造を実装すると、専用ＧＰＵメモリに記憶された各テクスチャを完全に投入する必要がなくなるので、パフォーマンスを向上させることができる。しかしながら、ハードウェアアクセラレーションによる常駐チェックは、仮想メモリアドレス変換テーブルを用いて実装されているので、常駐チェックの粒度は、仮想メモリページの粒度（通常、６４ｋＢ）によって決定される。各仮想メモリページ内のテクスチャデータのごく一部のみが、通常、グラフィックスパイプラインによって使用され、テクスチャデータを各仮想メモリページに投入するために大きなオーバーヘッドを招くハードウェアアクセラレーションされた常駐チェックが生じる。ソフトウェアベースの常駐チェックは、任意の小さな粒度を実装することができるが、ソフトウェアベースの常駐チェックを実装するアプリケーションは、全てのテクスチャサンプリング操作に対して常駐構造のトラバーサル（アプリケーションと常駐構造との間の少なくとも１つのコマンド／応答交換を含む）を実行する必要がある。したがって、レンダリングされた画素毎に常駐構造をトラバースするために、ソフトウェアベースの常駐チェックが必要になる可能性があり、これは、グラフィックスパイプラインのパフォーマンスを低下させ、レイテンシを増加させる。
【０００５】
テクスチャブロックの圧縮パラメータ及びこのテクスチャブロックの常駐状態を符号化するメタデータを記憶することによって、任意の粒度のテクスチャブロックの常駐チェックをハードウェアにおいて、したがって、ソフトウェアベースの常駐チェックのコマンド／応答オーバーヘッドなしに実行することができる。メタデータは、ＧＰＵによって実装されるグラフィックスパイプラインによるアクセスのためにテクスチャブロックを記憶するのに使用されるＧＰＵメモリに記憶される。グラフィックスパイプライン内のシェーダは、テクスチャブロックに対してシェーディング操作を実行するように要求すると共に、テクスチャブロックのメタデータにアクセスする。例えば、テクスチャブロックに要求すると同時にメタデータにアクセスすることができる。テクスチャブロックがＧＰＵメモリに常駐していることをメタデータが示す場合に、テクスチャブロック内のデータに対する要求がシェーダに返される。したがって、テクスチャブロックがＧＰＵメモリに常駐している場合に、常駐チェックによって追加のオーバーヘッドが生じない。テクスチャブロックがＧＰＵメモリに常駐していないことをメタデータが示す場合に、要求されたデータがＧＰＵメモリに常駐していないことを示す信号が、シェーダにフィードバックされる。このシェーダは、フィードバックの受信に応じて、（例えば、テクスチャブロックをディスクからロードするか、テクスチャブロックのデータをプロシージャに従って生成することによって）非常駐テクスチャブロックに投入することができる。次に、シェーダは、テクスチャブロックと共に（例えば、同時に）メタデータに再アクセスすることができる。テクスチャブロックがＧＰＵメモリに常駐していない場合に常駐チェックを実行するのに必要な追加のオーバーヘッドは、サンプリング操作のフローにおいて、例えばテクスチャブロックにアクセスしようとすると共に又は同時に実行されるので、最小限である。さらに、従来のテクスチャ要求は、要求されたテクスチャの圧縮率を示すメタデータにアクセスする必要があるので、追加のオーバーヘッドは、従来のテクスチャ要求によって生じるオーバーヘッドと比較して最小限である。
【０００６】
いくつかの実施形態において、メタデータキャッシュは、シェーダが頻繁にアクセスするテクスチャブロックのメタデータを記憶する。メタデータキャッシュは、関連するテクスチャブロックがＧＰＵメモリに常駐していなかったことを、以前の常駐チェック中にシェーダによってアクセスされたメタデータが示しているかどうかを示す情報を含むことができる。メタデータキャッシュのいくつかの実施形態は、テクスチャブロックの部分（例えば、タイル又はキャッシュライン）にアクセスするためのいくつかのタイプの要求に応じて、常駐状態を変更する。例えば、メタデータキャッシュから非常駐タイルのメタデータにアクセスしようとするテクスチャブロックフェッチ操作に応じて、タイルの常駐状態を「非常駐、サンプリング」に変更することができる。したがって、シェーダによって実行されたサンプリング操作が関わる非常駐タイルのメタデータは、キャッシュされたメタデータにおいてマークされ、メタデータキャッシュが、変更されたメタデータをエビクトしてグローバルメモリに返す場合に、最終的にメモリに書き戻される。例えば、アプリケーションが将来、非常駐のサンプリングされたタイルにアクセスすることが期待される場合に、アプリケーションは、メタデータを読み出し、非常駐のサンプリングされたタイルを特定し、例えば、アプリケーションが、将来、非常駐のサンプリングされたタイルにアクセスすることを期待する場合に、有効なデータを非常駐のサンプリングされたタイルに投入することができる。別の例では、テクスチャデータがタイルに書き込まれることに応じて、タイルの常駐状態を「常駐」に変更することができる。いくつかの実施形態では、タイルに書き込まれる圧縮された有効なデータの圧縮率を示すのに使用されるメタデータ値は、このタイルの常駐状態を表すのに使用される。例えば、メタデータ値を、メタデータ値の第１サブセットが、圧縮された有効なデータの実際の圧縮率を示し、常駐状態が「常駐」であることを示すように、符号化することができる。メタデータの第２サブセットは、予約されたビットパターンを使用して、常駐状態が「非常駐、サンプリング」であることを示す。
【０００７】
図１は、いくつかの実施形態による、ディスプレイ１１０への出力を意図した視覚画像を生成するグラフィックス処理ユニット（ＧＰＵ）１０５を含む処理システム１００のブロック図である。処理システム１００は、メモリ１１５を含む。メモリ１１５のいくつかの実施形態は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）として実装される。しかしながら、メモリ１１５は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、不揮発性ＲＡＭ等を含む他のタイプのメモリを使用して実装されてもよい。図示した実施形態では、ＧＰＵ１０５は、バス１２０を介してメモリ１１５と通信する。しかしながら、ＧＰＵ１０５のいくつかの実施形態は、直接接続を介して又は他のバス、ブリッジ、スイッチ、ルータ等を介してメモリ１１５と通信する。ＧＰＵ１０５は、メモリ１１５に記憶された命令を実行することができ、実行された命令の結果等の情報をメモリ１１５に記憶することができる。例えば、メモリ１１５は、ＧＰＵ１０５によって実行されるプログラムコードからの命令のコピー１２５を記憶することができる。ＧＰＵ１０５のいくつかの実施形態は、命令を同時に又は並列に独立して実行することができる複数のプロセッサコア（明確さのために示されていない）を含む。
【０００８】
処理システム１００は、命令を実行する中央処理装置（ＣＰＵ）１３０を含む。ＣＰＵ１３０のいくつかの実施形態は、命令を同時に又は並列に独立して実行することができる複数のプロセッサコア（明確さのために示されていない）を含む。また、ＣＰＵ１３０は、バス１２０に接続されているので、バス１２０を介してＧＰＵ１０５及びメモリ１１５と通信することができる。ＣＰＵ１３０は、メモリ１１５に記憶されたプログラムコード１３５等の命令を実行することができ、実行された命令の結果等の情報をメモリ１１５に記憶することができる。また、ＣＰＵ１３０は、ドローコールをＧＰＵ１０５に発行することによって、グラフィックス処理を開始することができる。ドローコールは、ＣＰＵ１３０によって生成され、ＧＰＵ１０５に送信され、ＧＰＵ１０５がフレーム内のオブジェクト（又は、オブジェクトの一部）をレンダリングすることを指示するコマンドである。ドローコールのいくつかの実施形態は、ＧＰＵ１０５がオブジェクト又はその一部をレンダリングするために使用するテクスチャ、状態、シェーダ、レンダリングオブジェクト、バッファ等を定義する情報を含む。ドローコールに含まれる情報は、状態情報を含む状態ベクトルと呼ぶことができる。ＧＰＵ１０５は、オブジェクトをレンダリングして、ディスプレイ１１０に提供される画素値を生成し、ディスプレイは、画素値を使用して、レンダリングされたオブジェクトを表す画像を表示する。
【０００９】
入出力（Ｉ／Ｏ）エンジン１４０は、キーボード、マウス、プリンタ、外部ディスク等の処理システム１００の他の要素と同様に、ディスプレイ１１０に関連する入出力動作を処理する。Ｉ／Ｏエンジン１４０は、バス１２０に接続されており、ＧＰＵ１０５、メモリ１１５又はＣＰＵ１３０と通信することができる。図示した実施形態では、Ｉ／Ｏエンジン１４０は、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）等の外部記憶媒体１４５に記憶された情報を読み出すように構成されている。
【００１０】
外部記憶媒体１４５は、ビデオゲーム等のアプリケーションを実装するのに使用されるプログラムコードを表す情報を記憶する。外部記憶媒体１４５のプログラムコードは、メモリ１１５に書き込まれ、ＧＰＵ１０５又はＣＰＵ１３０によって実行される命令のコピー１２５を形成することができる。また、外部記憶媒体１４５は、ディスプレイ１１０上に提示される画像をレンダリングするのに使用されるテクスチャを表す情報を記憶する。外部記憶媒体１４５に記憶されるテクスチャの一部は、メモリ１１５に書き込まれ、テクスチャ情報１５０として記憶される。例えば、テクスチャ情報１５０は、テクスチャブロックと、テクスチャ情報１５０内のテクスチャブロックに適用される圧縮の度合いを示す対応する圧縮メタデータと、を含むことができる。
【００１１】
ＧＰＵ１０５は、ドローコールに応じて異なるプリミティブ又はビンの同時処理のために構成された複数のステージを含むグラフィックスパイプライン（明確さのために図１に示されていない）を実装する。ＧＰＵ１０５内のグラフィックスパイプラインのステージは、ビデオゲーム等のアプリケーションによって生成される異なるプリミティブを同時に処理することができる。プリミティブの処理は、例えばさらなる詳細を提供するために、テクスチャをプリミティブにマッピングすることを含む。ＧＰＵ１０５は、メモリ１１５に記憶されたテクスチャ情報１５０からのテクスチャデータにアクセスする。しかしながら、本明細書で説明するように、全てのテクスチャブロックに対するテクスチャデータは、ＧＰＵ１０５がテクスチャデータへのアクセスを要求する前に必ずしも投入されない。例えば、テクスチャデータは、外部記憶媒体１４５からメモリ１１５に書き込まれていなくてもよい。別の例では、ＣＰＵ１３０は、プログラムコード１３５内の命令によって、テクスチャデータをプロシージャに従って生成しなくてもよい。
【００１２】
ＧＰＵ１０５は、テクスチャ情報１５０に記憶されたテクスチャブロックへのアクセスを要求すると共にメタデータのクエリを行うことによって、要求されたテクスチャブロックのテクスチャデータがテクスチャ情報１５０において利用可能であるかどうかを判別する。本明細書に使用される場合に、「と共に」という用語は、ＧＰＵ１０５が、テクスチャブロックにアクセスする要求毎にメタデータのクエリを発行することを示す。例えば、ＧＰＵ１０５は、テクスチャブロックへのアクセスを要求すると同時にメタデータのクエリを行うことができる。別の例では、ＧＰＵ１０５は、テクスチャブロックへのアクセスを要求する前にメタデータのクエリを行うことができ、これにより、テクスチャブロックの常駐状態を判別することができ、必要に応じて、アクセス要求の前にテクスチャブロックを投入することができる。
【００１３】
メタデータは、テクスチャブロックの圧縮率を符号化することに加えて、テクスチャブロックの常駐状態を符号化する。例えば、メタデータは、テクスチャブロック内のテクスチャデータが投入されているかどうかを示す情報を符号化するので、テクスチャマッピング操作のためにＧＰＵ１０５に利用可能である。テクスチャブロックがメモリ１１５に常駐していることをメタデータが示すかどうかによって、テクスチャブロック内のデータがＧＰＵ１０５に選択的に返される。例えば、メモリ１１５は、テクスチャブロックがメモリ１１５に常駐していることを示すメタデータに応じて、テクスチャブロック内のデータを返す。別の例では、テクスチャブロックがメモリ１１５に常駐していないことを示すメタデータに応じて、要求されたデータが利用可能ではないことを示す信号がＧＰＵ１０５に返される。次に、ＧＰＵ１０５は、外部記憶媒体１４５からメモリ１１５にデータを書き込ませることによって、データをプロシージャに従って生成してメモリ１１５に記憶することによって、又は、ＣＰＵ１３０にデータをプロシージャに従って生成させてメモリ１１５に記憶させることによって、信号の受信に応じてデータをテクスチャブロックに投入することができる。ＧＰＵ１０５は、データをテクスチャブロックに投入することに応じてテクスチャブロックを再要求すると共に（例えば、再要求と同時に）、メタデータに再アクセスすることができる。また、本明細書で説明するように、テクスチャデータ及びメタデータのキャッシングを実行することができる。
【００１４】
図２は、いくつかの実施形態による、三次元（３Ｄ）シーンのラスタライズ画像を所定の解像度で生成するために高次ジオメトリプリミティブを処理することができるグラフィックスパイプライン２００を示す図である。グラフィックスパイプライン２００は、図１に示すＧＰＵ１０５のいくつかの実施形態に実装される。グラフィックスパイプライン２００は、バッファを実装し、頂点データ、テクスチャデータ等を記憶するのに使用される１つ以上のメモリ又はキャッシュの階層等のストレージリソース２０１にアクセスする。図１に示すメモリ１１５のいくつかの実施形態を使用して、ストレージリソース２０１を実装することができる。
【００１５】
入力アセンブラ２０２は、シーンのモデルの一部を表すオブジェクトを定義するために使用されるストレージリソース２０１からの情報にアクセスするように構成されている。頂点シェーダ２０３は、ソフトウェアで実装することができ、プリミティブの単一の頂点を入力として論理的に受信し、単一の頂点を出力する。頂点シェーダ２０３等のシェーダのいくつかの実施形態は、複数の頂点を同時に処理できるように、大規模な単一命令複数データ（ＳＩＭＤ）処理を実施する。図２に示すグラフィックスパイプライン２００は、グラフィックスパイプライン２００に含まれる全てのシェーダが、共有された大規模なＳＩＭＤ計算ユニット上で同一の実行プラットフォームを含むように、統合型シェーダモデルを実装する。したがって、本明細書において統合型シェーダプール２０４と呼ばれる共通のリソースセットを使用して、頂点シェーダ２０３を含むシェーダが実装される。図１に示すＧＰＵ１０５内のプロセッサを使用して、統合型シェーダプール２０４のいくつかの実施形態が実装される。
【００１６】
ハルシェーダ２０５は、入力パッチを定義するのに使用される入力高次パッチ（input high-order patches）又は制御点に対して動作する。ハルシェーダ２０５は、テッセレーション係数及び他のパッチデータを出力する。ハルシェーダ２０５によって生成されたプリミティブを、オプションでテッセレータ２０６に提供することができる。テッセレータ２０６は、オブジェクト（パッチ等）をハルシェーダ２０５から受信し、例えば、ハルシェーダ２０５によってテッセレータ２０６に提供されたテッセレーション係数に基づいて入力オブジェクトをテッセレーションすることによって、入力オブジェクトに対応するプリミティブを識別する情報を生成する。テッセレーションは、例えば、テッセレーションプロセスによって生成されるプリミティブの粒度を指定するテッセレーション係数によって示されるように、パッチ等の入力高次プリミティブを、より詳細なレベルを表す低次出力プリミティブのセットに細分化する。したがって、シーンのモデルを、（メモリ又は帯域幅を節約するために）少数の高次プリミティブによって表すことができ、高次プリミティブをテッセレーションすることによってさらなる詳細を追加することができる。
【００１７】
ドメインシェーダ２０７は、ドメイン位置及び（オプションで）他のパッチデータを入力する。ドメインシェーダ２０７は、提供された情報に対して動作し、入力ドメイン位置及び他の情報に基づいて出力用の単一の頂点を生成する。ジオメトリシェーダ２０８は、入力プリミティブを受信し、入力プリミティブに基づいてジオメトリシェーダ２０８によって生成される最大４つのプリミティブを出力する。プリミティブの１つのストリームがラスタライザ２０９に提供され、プリミティブの最大４つのストリームを、ストレージリソース２０１のバッファにおいて連結することができる。ラスタライザ２０９は、シェーディング操作や、クリッピング、パースペクティブ分割、シザリング及びビューポート選択等の他の操作を実行する。画素シェーダ２１０は、画素フローを入力し、入力画素フローに応じて０又は別の画素フローを出力する。出力マージャブロック２１１は、画素シェーダ２１０から受信した画素に対してブレンド、深度、ステンシル又は他の動作を実行する。
【００１８】
グラフィックスパイプライン２００内のいくつかの又は全てのシェーダは、ストレージリソース２０１に記憶されているテクスチャデータを使用してテクスチャマッピングを実行することができる。例えば、画素シェーダ２１０は、テクスチャデータをストレージリソース２０１から読み出し、このテクスチャデータを使用して１つ以上の画素をシェーディングすることができる。次に、シェーディングされた画素は、ユーザに提示するためにディスプレイ（図１に示すディスプレイ１１０等）に提供される。しかしながら、本明細書で説明するように、テクスチャデータは、グラフィックスパイプライン２００内のシェーダによってテクスチャデータが必要とされる前に、必ずしもストレージリソース２０１に投入されない。したがって、画素シェーダ２１０等のシェーダは、シェーディング操作を実行することをテクスチャブロックに要求すると共に（例えば、要求すると同時に）、メタデータにアクセスするように構成されている。メタデータは、テクスチャブロックの圧縮率及びこのテクスチャブロックの常駐状態を符号化する。テクスチャブロック内のデータは、テクスチャブロックがストレージリソース２０１に常駐していることをメタデータが示すかどうかに応じて、シェーダに選択的に返される。
【００１９】
図３は、いくつかの実施形態による、テクスチャブロック及び対応するメタデータを記憶するために使用されるメモリ構造３００のブロック図である。メモリ構造３００は、図１に示す処理システム１００及び図２に示すグラフィックスパイプライン２００のいくつかの実施形態に実装される。メモリ構造３００は、テクスチャブロック３１０（明確さのために符号によって１つのみを示す）を記憶するのに使用されるＧＰＵメモリ３０５を含む。図１に示すメモリ１１５及び図２に示すストレージリソース２０１のいくつかの実施形態を使用して、ＧＰＵメモリ３０５を実装する。
【００２０】
図示した実施形態では、テクスチャブロック３１０は、テクスチャ情報のページ３１５のサブセットである。例えば、ページ３１５を、４〜６４ｋＢの範囲内の値に設定することができる仮想マシンページ粒度で実装することができる。テクスチャブロック３１０は、ページ３１５の粒度の１／８、１／１６又は１／３２等の任意の粒度で構成されてもよい。例えば、各テクスチャブロック３１０は、キャッシュライン、タイル、又は、仮想マシンページの他の区画を表すことができる。また、ＧＰＵメモリ３０５は、対応するテクスチャブロック３１０のメタデータ３２０（明確さのために符号によって１つのみを示す）を記憶する。メタデータ３２０は、対応するテクスチャブロック３１０内の情報を圧縮するために使用される圧縮率を符号化する。例えば、テクスチャブロック３１０内のテクスチャデータが７つの圧縮率のセットのうち何れかで圧縮され得る場合には、３つのビットを使用して圧縮率の値を符号化することができる。
【００２１】
全てのテクスチャブロック３１０に有効なテクスチャデータが投入されるとは限らない。図示した実施形態では、有効なテクスチャデータが投入されたテクスチャブロック３１０をハッチングされたボックスで示し、有効なテクスチャデータが投入されていないテクスチャブロック３１０を白いボックスで示している。したがって、メタデータ３２０は、対応するテクスチャブロック３１０について有効なテクスチャデータがＧＰＵメモリ３０５に常駐しているかどうかを示す常駐状態を含む。図示した実施形態では、有効なテクスチャデータがＧＰＵメモリ３０５に常駐していることを示す符号化情報を含むメタデータ３２０を斜線付きのボックスで示し、有効なテクスチャデータがＧＰＵメモリ３０５に常駐していないことを示す符号化情報を含むメタデータ３２０を白いボックスで示している。メタデータ３２０は、対応するテクスチャブロック３１０内のテクスチャデータがＧＰＵメモリ３０５に常駐しているかどうかを示すために、異なる値に設定された別のビットを含むことができる。例えば、このビットを１の値に設定して、テクスチャデータが常駐していることを示すことができ、このビットを０の値に設定して、テクスチャデータが常駐していないことを示すことができる。また、メタデータ３２０は、圧縮率と組み合わせて常駐状態を符号化することができる。例えば、７つの可能な圧縮率を符号化するのに使用される３つのビットは、圧縮率を示す７つの値が、テクスチャブロック３１０のテクスチャデータがＧＰＵメモリ３０５に常駐していることも示す場合に、常駐状態を符号化するために使用されてもよい。８番目の値は、テクスチャブロック３１０のテクスチャデータがＧＰＵメモリ３０５に常駐していないことを示す。
【００２２】
メタデータ３２０のいくつかの実施形態は、メタデータ３２０のサンプリング状態３２５を示す情報を記憶（又は符号化）する。サンプリング状態３２５は、メタデータ３２０に関連するテクスチャブロック３１０の以前の常駐チェックが、テクスチャブロック３１０がＧＰＵメモリ３０５に常駐していなかったことを示していたかどうかを示す。例えば、０に等しいサンプリング状態３２５の値は、テクスチャブロック３１０がＧＰＵメモリ３０５に常駐していなかったことを示していると以前の常駐チェックが示すものであり、１に等しい値は、テクスチャブロック３１０がＧＰＵメモリ３０５に常駐していなかったことを示していると少なくとも１つの以前の常駐チェックが示すものである。サンプリング状態３２５を使用して、ロード又は生成されたデータが投入されるタイルについてアプリケーションが生成するタスクリスト内の重複したエントリを排除することができる。サンプリング状態３２５は、図３においてビットの値によって示されているが、いくつかの実施形態は、メタデータ３２０を表すために使用されるビットの値を使用して、サンプリング状態３２５を符号化することができる。
【００２３】
メモリ構造３００は、頻繁にアクセスされるメタデータ３３０を記憶するのに使用されるメタデータキャッシュ３３０を含む。キャッシュされたメタデータ３３５を、キャッシュ置換ポリシーに従って、メタデータキャッシュ３３０に追加したり、メタデータキャッシュ３３０からエビクトすることができる。メタデータ３３０は、対応するテクスチャブロック３１０の常駐状態を示し、例えば、ハッチングは、テクスチャデータがＧＰＵメモリ３０５に常駐していることを示す。また、メタデータキャッシュは、キャッシュされたメタデータ３３５に対応するサンプリング状態３２５を記憶する。メタデータ３３０に関するサンプリング状態３２５を、キャッシュされたメタデータ３３５へのアクセス要求に応じて変更することができる。例えば、サンプリング状態３４０及びメタデータ３３５がメタデータキャッシュ３３０に追加されている場合に、サンプリング状態３２５の値（又は符号化）が「サンプリングされていない」場合には、メタデータ３３５に対する最初のヒットに応じて、サンプリング状態３２５を「サンプリングされた」値（又は符号化）に変更する。サンプリング状態３２５は、対応するテクスチャブロック３１０のテクスチャデータがＧＰＵメモリ３０５に常駐していないままである場合に、後続のヘッドに応じて「サンプリングされた」値（又は符号化）を保持する。いくつかの実施形態では、「サンプリングされた」値を含むサンプリング状態と、テクスチャブロック３１０のテクスチャデータがＧＰＵメモリ３０５に常駐していないことを示す常駐状態とに応じて、テクスチャブロック３１０のテクスチャデータが投入される。したがって、投入されたテクスチャブロック３１０のテクスチャデータは、後続のアクセス要求に利用可能である。サンプリング状態は「サンプリングされていない」値に設定され、常駐状態は、テクスチャブロック３１０のテクスチャデータの投入に応じて、常駐に設定される。
【００２４】
いくつかの実施形態のメモリ構造３００は、頻繁にアクセスされるテクスチャブロック３４５（明確さのために符号によって１つのみを示す）を記憶するＬ２キャッシュ３４０等のキャッシュを含む。キャッシュされたテクスチャブロック３４５は、キャッシュ置換ポリシーに従って、Ｌ２キャッシュ３４０に追加されるか、Ｌ２キャッシュ３４０からエビクトされる。例えば、Ｌ２キャッシュ３４０によって、最近最も使用されていない（least-recently-used）キャッシュ置換ポリシーを実装することができる。図示した実施形態では、クロスハッチングで示すように有効なテクスチャデータが投入され、これにより、Ｌ２キャッシュ３４０は、キャッシュヒットに応じて有効なテクスチャデータを返すことができる。
【００２５】
シェーダ３５０等のシェーダは、パイプライン３５５を介して対応するテクスチャブロックにアクセスすると共に、メタデータにアクセスすることができる。例えば、シェーダ３５０は、対応するテクスチャブロックにアクセスすると同時にメタデータにアクセスすることができる。図示した実施形態では、シェーダ３５０は、テクスチャ要求をパイプライン３５５に送り、パイプラインは、このテクスチャ要求を１つ以上の同時テクスチャデータ及びメタデータ要求に変換する。例えば、パイプライン３５５は、タイルのメタデータアドレスと、タイル内のテクスチャデータのデータアドレスとの両方を含む要求を生成することができる。パイプライン３５５のいくつかの実施形態は、Ｌ２キャッシュ３４０及びＧＰＵメモリ３０５にも記憶される、頻繁にアクセスされるテクスチャデータのコピーを記憶する内部データキャッシュを実装する。したがって、パイプライン３５５は、その内部データキャッシュに記憶されたテクスチャデータを返すことによって、いくつかのテクスチャデータ要求に応答することができる。
【００２６】
パイプライン３５５は、テクスチャデータの要求をＬ２キャッシュ３４０に送るように構成されている。この要求がＬ２キャッシュ３４０においてヒットした場合に、要求されたテクスチャデータがＬ２キャッシュ３４０からパイプライン３５５に返される。この要求がＬ２キャッシュ３４０においてミスした場合に、この要求がＧＰＵメモリ３０５に転送される。テクスチャデータの常駐状態のクエリがメタデータキャッシュ３３０に送られる。このクエリがメタデータキャッシュ３３０においてヒットした場合に、メタデータキャッシュ３３０は、メタデータ３３０をパイプライン３５５に返し、このパイプラインは、メタデータ３３０を使用して、常住状態（例えば、常駐又は非常駐等）と、テクスチャデータのサンプリング状態３２５（例えば、以前にサンプリングされたか否か等）とを判別する。本明細書で説明するように、常駐状態又はサンプリング状態を、クエリに応じて変更することができる。このクエリがメタデータキャッシュ３３０においてミスした場合に、クエリがＧＰＵメモリ３０５に転送される。
【００２７】
ＧＰＵメモリ３０５は、テクスチャブロック３１０の常駐状態についてのクエリを受信したことに応じて、符号化されたメタデータ３２０をパイプライン３５５に返し、このパイプラインは、符号化されたメタデータ３２０を使用して、テクスチャブロック３１０のテクスチャデータがＧＰＵメモリ３０５に常駐しているか否かを判別する。ＧＰＵメモリ３０５は、テクスチャデータが常駐している場合に、テクスチャブロック３１０内のテクスチャデータに対する要求に応じて、要求されたテクスチャデータをパイプライン３５５に返す。
【００２８】
パイプライン３５５は、要求されたテクスチャデータ及び要求されたメタデータを、メタデータキャッシュ３３０又はＧＰＵメモリ３０５から受信する。パイプライン３５５は、この情報を変換し、変換された情報をシェーダ３５０に返すことができる。例えば、パイプライン３５５は、メタデータを使用して、要求されたテクスチャデータがＧＰＵメモリ３０５に常駐しているかどうかを判別する。常駐している場合、パイプライン３５５は、要求されたテクスチャデータをシェーダ３５０に返す。要求されたテクスチャデータがＧＰＵメモリ３０５に常駐していないことをメタデータが示す場合、パイプライン３５５は、要求されたテクスチャデータがＧＰＵメモリ３０５に常駐していないことを示す信号を返す。要求されたテクスチャデータが返された場合、シェーダ３５０は、要求されたテクスチャデータを用いて処理を進める。要求されたテクスチャデータがＧＰＵメモリ３０５に常駐していないことを示す信号をシェーダ３５０が受信した場合、シェーダ３５０は、この信号を受信したことに応じて、有効なテクスチャデータをテクスチャブロック３１０に投入する命令を発行することができる。その後、シェーダ３５０は、テクスチャデータの要求、及び、テクスチャブロック３１０に対するメタデータのクエリを再度送ることができる。
【００２９】
図４は、いくつかの実施形態による、テクスチャデータを含むテクスチャブロックの常駐状態に基づいてテクスチャデータを選択的に返す方法４００のフロー図である。方法は、図１に示す処理システム１００、図２に示すグラフィックスパイプライン２００、及び、図３に示すメモリ構造３００のいくつかの実施形態において実装される。
【００３０】
ブロック４０５において、シェーダは、メモリに記憶されるテクスチャブロックのメタデータ及びテクスチャデータに同時にアクセスする要求を送る。本明細書で説明するように、テクスチャデータは、シェーダが要求を送る前に必ずしも投入されない。したがって、メタデータは、テクスチャデータの常駐状態を符号化して、テクスチャデータがメモリに常駐しているか否かを示す。したがって、メタデータアクセスは、テクスチャデータをキャッシュ又はメモリから取得するのに使用されるテクスチャデータにアクセスする要求と同時に、テクスチャデータの常駐状態を決定するために使用される。また、メタデータは、テクスチャデータの圧縮率を決定するために使用される。
【００３１】
判別ブロック４１０において、テクスチャブロックのテクスチャデータの常駐状態が決定される。例えば、符号化されたメタデータが常駐テクスチャデータに対応する値を含む場合に、テクスチャデータの常駐状態は、「常駐」と判別される。符号化されたメタデータが、テクスチャデータがメモリに常駐していないことを示す値を含む場合に、テクスチャデータの常駐状態は、「非常駐」と判別される。テクスチャデータがメモリに常駐している場合、方法はブロック４１５に進む。テクスチャデータがメモリに常駐していない場合、方法はブロック４２０に進む。
【００３２】
ブロック４１５において、要求されたテクスチャデータがシェーダに返される。本明細書で説明するように、常駐テクスチャデータを、図３に示すＧＰＵメモリ３０５等のメモリ又はＬ２キャッシュ３４０等の対応するキャッシュからシェーダに返すことができる。
【００３３】
ブロック４２０において、要求されたテクスチャデータがメモリに常駐していないことを示す信号が、シェーダに返される。シェーダは、この信号を受信したことに応じて、テクスチャブロックに要求されたテクスチャデータを投入するための命令を発行する（ブロック４２５）。次に、方法４００はブロック４０５に進み、シェーダは、テクスチャブロック内のメタデータ及びテクスチャデータにアクセスするために同時要求を再度送る。テクスチャデータは、この時点でメモリに常駐する必要がある。しかしながら、テクスチャデータが未だメモリに常駐していない場合に、方法４００は、シェーダが、要求されたテクスチャデータをメモリから正常に取得するまで、繰り返すことができる。
【００３４】
図５は、いくつかの実施形態による、ＧＰＵメモリに関連するメタデータキャッシュを操作する方法５００のフロー図である。方法５００は、図３に示すメタデータキャッシュ３３０及びＧＰＵメモリ３０５のいくつかの実施形態において実施される。
【００３５】
ブロック５０５において、テクスチャブロックのメタデータへのアクセス要求がメタデータキャッシュに発行される。例えば、この要求は、タイルのメタデータアドレスを含むことができる。判別ブロック５１０において、メタデータキャッシュは、例えば、メタデータアドレスの一部をメタデータキャッシュ内のタグアレイと比較することによって、この要求がメタデータキャッシュ内でヒットするかどうかを判別する。この要求がメタデータキャッシュ内でヒットした場合、方法は、判別ブロック５１５に進む。この要求がメタデータキャッシュ内でミスした場合、方法は、ブロック５２０に進む。
【００３６】
ブロック５２０において、メタデータに対する要求がＧＰＵメモリに転送され、要求されたメタデータがＧＰＵメモリからアクセスされる。本明細書で説明するように、要求されたメタデータを使用して、対応するテクスチャデータの圧縮率及び常駐状態を決定することができる。ブロック５２５において、ＧＰＵメモリから取得されたメタデータは、キャッシュ置換ポリシーに従って、メタデータキャッシュにキャッシュされる。例えば、最近最も使用されていないキャッシュエントリをメタデータキャッシュからエビクトし、取得されたメタデータに置き換えることができる。
【００３７】
判別ブロック５１５において、メタデータを使用して、要求されたテクスチャデータがＧＰＵメモリに常駐しているかどうかを判別する。例えば、図３に示すパイプライン３５５等のパイプラインは、要求されたテクスチャデータが常駐しているか、常駐していないかを判別するように、メタデータを変換することができる。テクスチャデータがメモリに常駐していない場合に、方法５００は、ブロック５３０に進む。テクスチャデータがメモリに常駐している場合に、方法５００は、ブロック５３５に進む。
【００３８】
ブロック５３０において、キャッシュされたメタデータのサンプリング状態が「サンプリング」に変更され、以前にキャッシュされたメタデータが他のアクセス要求によってサンプリングされたことを示す。いくつかの実施形態では、キャッシュされたメタデータのサンプリング状態を使用して、タスクリストの重複を排除することができる。次に、方法５００は、ブロック５３０からブロック５３５に進む。ブロック５３５において、キャッシュされたメタデータ値が返される。例えば、キャッシュされたメタデータ値をパイプラインに返すことができる。パイプラインは、キャッシュされたメタデータ値を変換し、要求されたテクスチャデータ、又は、要求されたテクスチャデータがメモリに常駐していないことを示す信号の何れかを、シェーダに提供する。
【００３９】
図６は、いくつかの実施形態による、ＧＰＵメモリ及び関連するキャッシュにテクスチャデータを投入する方法６００のフロー図である。方法６００は、図３に示すメモリ構造３００のいくつかの実施形態において実施される。例えば、方法６００は、図３に示すテクスチャブロック３１０に非常駐テクスチャデータを投入するためのシェーダ３５０からの要求に応じて実施されてもよい。
【００４０】
ブロック６０５において、ＧＰＵメモリ内のテクスチャブロックのテクスチャデータが投入される。例えば、図１に示す記憶媒体１４５等のディスクからテクスチャデータを取得することによって、テクスチャデータを投入することができる。また、プロシージャに従ってテクスチャデータを生成することによって、テクスチャデータを投入することができる。例えば、ＣＰＵ１３０は、プログラムコードのコピー１２５内の命令を実行して、ＧＰＵメモリ内のテクスチャブロックのテクスチャデータを、プロシージャに従って生成することができる。
【００４１】
ブロック６１０において、投入されたテクスチャブロックのメタデータは、テクスチャデータがＧＰＵメモリに常駐していることを示すように変更される。例えば、テクスチャデータの圧縮率及びテクスチャデータの常駐状態を符号化するメタデータの値を変更して、テクスチャデータの圧縮率及び「常駐」という常駐状態を示すことができる。テクスチャブロックのメタデータが以前にメタデータキャッシュにキャッシュされていた場合、メタデータキャッシュのエントリが変更され（ブロック６１５）、テクスチャブロックの新たな常駐状態が示される。例えば、キャッシュコヒーレンシプロトコルを使用して、符号化されたメタデータのキャッシュされた値を変更することができる。
【００４２】
図７は、いくつかの実施形態による、テクスチャブロックに関連するメタデータ面７００のブロック図である。メタデータ面７００は、タイルの常駐状態と、テクスチャの対応する部分（タイル等）に使用される圧縮率と、を示すエントリ７０５（明確さのために符号によって１つのみが示されている）を含む。したがって、メタデータ面７００は、図３に示す対応するテクスチャブロック３１０のメタデータ３２０のいくつかの実施形態を表すことができる。メモリに常駐しているタイルは、クロスハッチングされたエントリ７１０（明確さのために符号によって１つのみが示されている）によって示されており、以前にサンプリングされた常駐タイル７１５は、「Ｓ」という文字によって示されている。本明細書で説明するように、ビットの異なるサブセットによって常駐状態及びサンプリング状態を示すことができ、又は、これらを同じビットのセットに符号化することができる。
【００４３】
タイルの常駐状態又はサンプリング状態は、メタデータ面７００のサンプリング部分によって決定されてもよい。例えば、シェーダは、サンプリングフットプリント７２０内のエントリ７０５，７１０をサンプリングして、メタデータ面７００に関連するテクスチャ内の対応するタイルの常駐状態又はサンプリング状態を決定することができる。いくつかの実施形態では、シェーダは、タイルのテクスチャデータを要求することなく、サンプリングフットプリント７２０内のタイルの常駐状態をチェックする。タイルの常駐状態のチェックを、タイルからテクスチャデータへのアクセスと共に実行することができる。例えば、シェーダは、テクスチャ内の非常駐タイルを示すフィードバックを使用して、別のパス間で処理されるタイルのワークリストを生成することができる。ワークリスト内の非常駐タイルには、別のパスの間に有効なデータを投入することができる。シェーダは、テクスチャデータのサンプリングをタイル上で実行し、有効なデータがタイルに投入されていることによって、メタデータ面７００への追加のアクセスを必要としない。いくつかの実施形態では、シェーダは、タイルのサンプリング状態を変更するチェック動作を実行する。例えば、サンプリングフットプリント７２０内のタイルに対してチェック動作を実行する場合、サンプリングフットプリント７２０内のメタデータの一部のエントリのサンプリング状態が、チェック動作に応じて「サンプリング」に変更される。別のパスでは、シェーダは、メタデータ面７００を読み出し、「非常駐」及び「サンプリング」であるエントリを識別する。次に、有効なデータが、非常駐のサンプリングされたタイルに投入される。このアプローチは、１つ以上の以前のパスの間のタイルのサンプリングアクセス数にかかわらず、シェーダがメタデータ検査パスの間にのみサンプリング状態にアクセスするので、重複排除の問題に対処する。
【００４４】
図８は、いくつかの実施形態による、メタデータ面をサンプリングすることによって非常駐タイルのワークリストを生成する方法８００のフロー図である。方法８００は、図７に示すメタデータ面７００のいくつかの実施形態を使用して実施され、図１に示す処理システム１００及び図２に示すグラフィックスパイプライン２００のいくつかの実施形態において実施されてもよい。
【００４５】
ブロック８０５において、第１パスでは、シェーダは、メタデータ面のサンプリングフットプリント内でメタデータをサンプリングすることによって、常駐チェックを実行する。例えば、シェーダは、テクスチャの対応する部分又はタイルのメタデータエントリにおいて符号化された常駐状態をチェックすることができる。本明細書で説明するように、常駐状態は、ＧＰＵメモリが対応する部分又はタイルのテクスチャデータを含むかどうかを示す。テクスチャデータは、常駐チェックに応じてシェーダに返されない。
【００４６】
ブロック８１０において、シェーダは、テクスチャデータを投入する必要がある非常駐タイルを含むワークリストを構築する。例えば、シェーダは、メタデータにおいて符号化された常駐状態に基づいて、非常駐タイルを識別することができる。次に、シェーダは、テクスチャデータが投入されていないタイルの識別子又はアドレスを含むワークリストを生成することができる。このワークリストを、サンプリングフットプリント内のメタデータエントリを通過した後のアクセスのために記憶することができる。
【００４７】
ブロック８１５において、シェーダは、ワークリスト内の情報を使用して、非常駐タイルに入力する。例えば、シェーダは、ワークリストを取得した後に、ワークリスト内の情報に基づいてテクスチャデータを取得し、又は、プロシージャに従って生成することができる。
【００４８】
ブロック８２０において、第２パスでは、シェーダは、テクスチャデータサンプリングを実行して、テクスチャ内のタイルからテクスチャデータを取得することができる。このパスの間にシェーダがテクスチャデータを取得することができるように、テクスチャデータをＧＰＵメモリで利用可能にする必要がある。したがって、メタデータをサンプリングすることによって実行される常駐チェックと共に、テクスチャデータサンプリングが実行される。
【００４９】
図９は、いくつかの実施形態による、テクスチャデータを、非常駐の、以前にサンプリングされたタイルに投入する方法９００のフロー図である。方法９００は、図７に示すメタデータ面７００のいくつかの実施形態を使用して実施され、図１に示す処理システム１００及び図２に示すグラフィックスパイプライン２００のいくつかの実施形態において実施されてもよい。
【００５０】
ブロック９０５において、メタデータ面を通過する第１パスでは、シェーダは、常駐チェックを実行して、１つ以上のタイルのサンプリング状態を変更する。シェーダのいくつかの実施形態は、メタデータ面のサンプリングフットプリント内でメタデータをサンプリングすることによって、常駐チェックを実行することができる。以前にサンプリングされていない非常駐タイルのサンプリング状態は、例えば、メタデータ面内のエントリのビット値又は符号化を変更することによって、「サンプリングされていない」から「サンプリング」に変更する。しかしながら、ブロック９０５において実行される常駐チェックは、如何なるフィードバックもシェーダに返さない。本明細書で説明するように、常駐状態は、ＧＰＵメモリが対応する部分又はタイルのテクスチャデータを含むかどうかを示す。
【００５１】
ブロック９１０において、第２パスでは、シェーダは、メタデータ面内のエントリを読み出し、エントリを検査して、非常駐のサンプリングされたタイルを識別する。ブロック９１５において、シェーダは、非常駐のサンプリングされたタイルに入力する。例えば、シェーダは、非常駐のサンプリングされたタイルのテクスチャデータを取得し、又は、プロシージャに従って生成することができる。ブロック９２０において、シェーダは、ＧＰＵメモリに記憶されたタイル上でテクスチャデータサンプリングを実行して、テクスチャデータを取得する。したがって、シェーダは、タイルの常駐状態のチェックと共に、テクスチャデータサンプリングを実行する。
【００５２】
いくつかの実施形態では、上述した装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステム（例えば、図１〜図６を参照して上述したグラフィックス処理システム等）において実施される。これらのＩＣデバイスの設計及び製造には、通常、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００５３】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００５４】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００５５】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００５６】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2020531994.tif 000003
【図２】
2020531994.tif 000004
【図３】
2020531994.tif 000005
【図４】
2020531994.tif 000006
【図５】
2020531994.tif 000007
【図６】
2020531994.tif 000008
【図７】
2020531994.tif 000009
【図８】
2020531994.tif 000010
【図９】
2020531994.tif 000011
【手続補正書】
【提出日】令和2年6月11日(2020.6.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
テクスチャブロックと、前記テクスチャブロックの圧縮パラメータと前記テクスチャブロックがメモリに常駐しているかどうかを示す常駐状態とを符号化するメタデータと、を記憶するメモリにアクセスするパイプラインと、
シェーディング操作を実行するために前記テクスチャブロック内のデータを要求すると共に、前記メタデータへのアクセスを要求するプロセッサと、を備え、
前記パイプラインは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示しているかどうかに応じて、前記テクスチャブロック内の前記データを選択的に前記プロセッサに返す、
装置。
【請求項２】
前記パイプラインは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示していることに応じて、前記テクスチャブロック内の前記データを返す、
請求項１の装置。
【請求項３】
前記プロセッサは、前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることに応じて、前記要求されたデータが利用可能でないことを示す信号を受信し、前記信号を受信したことに応じて、データを前記テクスチャブロックに投入し、前記データを前記テクスチャブロックに投入したことに応じて、前記テクスチャブロックを再要求すると共に前記メタデータに再アクセスする、
請求項１の装置。
【請求項４】
前記プロセッサは、前記メタデータを含むメタデータ面の第１パスの間に、前記テクスチャブロックを含む複数のテクスチャブロックの常駐状態及びサンプリング状態のうち少なくとも１つを決定し、前記常駐状態及び前記サンプリング状態のうち前記少なくとも１つに基づいて前記複数のテクスチャブロックに選択的に投入し、第２パスの間に前記複数のテクスチャブロック内のテクスチャデータをサンプリングする、
請求項１〜３の何れかの装置。
【請求項５】
前記テクスチャブロックの前記圧縮パラメータ及び前記常駐状態を符号化する前記メタデータのコピーを記憶するエントリを含むキャッシュをさらに備える、
請求項１〜３の何れかの装置。
【請求項６】
前記キャッシュに記憶された前記メタデータのサンプリング状態は、前記テクスチャブロックが前記メモリに常駐していないことを前記テクスチャブロックの以前の常駐チェックが示したかどうかを示す、
請求項５の装置。
【請求項７】
前記サンプリング状態は、前記キャッシュの前記エントリに記憶された前記メタデータへのアクセス要求に応じて変更され、
前記プロセッサは、前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることと、前記キャッシュが前記エントリ内の前記メタデータにアクセスするための少なくとも１つの以前の要求を受信したことを前記サンプリング状態が示していることとに応じて、データを前記テクスチャブロックに投入する、
請求項６の装置。
【請求項８】
テクスチャブロックの圧縮パラメータと前記テクスチャブロックがメモリに常駐しているかどうかを示す常駐状態とを符号化するメタデータにアクセスすると共に、前記メモリに記憶された前記テクスチャブロックのデータへのアクセスを要求することと、
データが前記メモリに常駐していることを前記常駐状態が示しているかどうかに応じて、前記テクスチャブロック内の前記データを選択的に受信することと、を含む、
方法。
【請求項９】
前記テクスチャブロック内の前記データを選択的に受信することは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示していることに応じて、前記テクスチャブロック内の前記データを受信することを含む、
請求項８の方法。
【請求項１０】
前記データを選択的に受信することは、
前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることに応じて、前記要求されたデータが利用可能でないことを示す信号を受信することを含み、
前記信号を受信したことに応じてデータを前記テクスチャブロックに投入することと、
前記データを前記テクスチャブロックに投入したことに応じて、前記テクスチャブロック内の前記データを再要求すると共に前記メタデータに再アクセスすることと、をさらに含む、
請求項８の方法。
【請求項１１】
前記メタデータを含むメタデータ面の第１パスの間に、前記テクスチャブロックを含む複数のテクスチャブロックの前記常駐状態及びサンプリング状態のうち少なくとも１つを決定することと、
前記常駐状態及び前記サンプリング状態のうち前記少なくとも１つに基づいて前記複数のテクスチャブロックに選択的に投入することと、
第２パスの間に前記複数のテクスチャブロック内のテクスチャデータをサンプリングすることと、をさらに含む、
請求項８〜１０の何れかの方法。
【請求項１２】
前記テクスチャブロックの前記圧縮パラメータ及び前記常駐状態を符号化する前記メタデータのコピーをキャッシュすることをさらに含む、
請求項８の方法。
【請求項１３】
キャッシュに記憶された前記メタデータのサンプリング状態は、前記テクスチャブロックが前記メモリに常駐していないことを前記テクスチャブロックの以前の常駐チェックが示したかどうかを示す、
請求項１２の方法。
【請求項１４】
前記メタデータの前記キャッシュされたコピーへのアクセス要求に応じて前記サンプリング状態を変更することをさらに含む、
請求項１３の方法。
【請求項１５】
前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることと、前記キャッシュが前記メタデータの前記キャッシュされたコピーにアクセスするための少なくとも１つの以前の要求を受信したことを前記サンプリング状態が示していることとに応じて、データを前記テクスチャブロックに投入することをさらに含む、
請求項１４の方法。
【国際調査報告】
2020531994.tif 000012
2020531994.tif 000013