JP7252209B2 - 圧縮メタデータを用いたテクスチャ常駐チェック - Google Patents

圧縮メタデータを用いたテクスチャ常駐チェック Download PDF

Info

Publication number
JP7252209B2
JP7252209B2 JP2020510572A JP2020510572A JP7252209B2 JP 7252209 B2 JP7252209 B2 JP 7252209B2 JP 2020510572 A JP2020510572 A JP 2020510572A JP 2020510572 A JP2020510572 A JP 2020510572A JP 7252209 B2 JP7252209 B2 JP 7252209B2
Authority
JP
Japan
Prior art keywords
texture
metadata
resident
texture block
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020510572A
Other languages
English (en)
Other versions
JP2020531994A (ja
JP2020531994A5 (ja
Inventor
ヴィー. カザコフ マキシム
ジェイ. サレハ スカイラー
ウ― ルイジン
シャンカル バンダーレー サーガル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2020531994A publication Critical patent/JP2020531994A/ja
Publication of JP2020531994A5 publication Critical patent/JP2020531994A5/ja
Application granted granted Critical
Publication of JP7252209B2 publication Critical patent/JP7252209B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Image Generation (AREA)

Description

グラフィックス処理ユニット(GPU)は、通常、プログラマブルシェーダ及び固定機能ハードウェアブロックのシーケンスから形成されるグラフィックスパイプラインを使用して、三次元(3D)グラフィックスを処理する。例えば、フレーム内で可視であるオブジェクトの3Dモデルは、ユーザに表示するための画素の値を生成するように、グラフィックスパイプラインで処理される三角形、他の多角形又はパッチのセットによって表すことができる。三角形、他の多角形又はパッチは、まとめてプリミティブと呼ばれる。このプロセスは、プリミティブの解像度よりも高い解像度を有する視覚的な詳細を組み込むために、テクスチャをプリミティブにマッピングすることを含む。GPUは、テクスチャ値を記憶するために使用される専用メモリを備えているため、テクスチャ値は、グラフィックスパイプラインで処理されているプリミティブへのマッピングするに利用可能である。テクスチャは、ディスクに記憶することもできるし、グラフィックスパイプラインが必要とする場合にプロシージャに従って生成することができる。専用GPUメモリに記憶されたテクスチャデータは、テクスチャをディスクからロードするか、データをプロシージャに従って生成することによって取り込まれる。通常、専用GPUメモリは、比較的小さいメモリであり、専用GPUメモリに記憶可能なテクスチャデータの量を制限する。さらに、テクスチャデータを取り込むために必要なオーバーヘッドは、特に、最終的なスクリーン画像をレンダリングするためにテクスチャデータの小さなサブセットのみが使用される場合に、大きくなる可能性がある。例えば、ページ内のデータの僅かな部分のみを使用して画像をレンダリングする場合であっても、テクスチャは、ページ毎にディスクからロードされる。
添付図面を参照することによって本開示をより良く理解することができ、その多数の特徴及び利点が当業者に明らかになる。異なる図面での同じ符号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態による、ディスプレイへの出力を意図した視覚画像を生成するグラフィックス処理ユニット(GPU)を含む処理システムのブロック図である。 いくつかの実施形態による、三次元(3D)シーンのラスタライズ画像を所定の解像度で生成するために高次ジオメトリプリミティブを処理することができるグラフィックスパイプラインを示す図である。 いくつかの実施形態による、テクスチャブロック及び対応するメタデータを記憶するために使用されるメモリ構造のブロック図である。 いくつかの実施形態による、テクスチャデータを含むテクスチャブロックの常駐状態に基づいてテクスチャデータを選択的に返す方法のフロー図である。 いくつかの実施形態による、GPUメモリに関連するメタデータキャッシュを操作する方法のフロー図である。 いくつかの実施形態による、GPUメモリ及び関連するキャッシュにテクスチャデータを投入する方法のフロー図である。 いくつかの実施形態による、テクスチャブロックに関連するメタデータ面のブロック図である。 いくつかの実施形態による、メタデータ面をサンプリングすることによって非常駐タイルのワークリストを生成する方法のフロー図である。 いくつかの実施形態による、テクスチャデータを、非常駐の、以前にサンプリングされたタイルに投入する方法のフロー図である。
テクスチャのサブセットを投入し、メモリ内に常駐するテクスチャの部分を示す常駐構造を使用することによって、専用GPUメモリ内のスペースを節約することができる。次に、テクスチャデータにアクセスする前に常駐構造にクエリして、テクスチャデータが専用GPUメモリに常駐していることを確認することができる。したがって、GPUは、テクスチャデータにアクセスする要求に応じて、専用GPUメモリに未だ常駐していないテクスチャの部分を投入することのみが要求される。したがって、常駐構造を実装すると、専用GPUメモリに記憶された各テクスチャを完全に投入する必要がなくなるので、パフォーマンスを向上させることができる。しかしながら、ハードウェアアクセラレーションによる常駐チェックは、仮想メモリアドレス変換テーブルを用いて実装されているので、常駐チェックの粒度は、仮想メモリページの粒度(通常、64kB)によって決定される。各仮想メモリページ内のテクスチャデータのごく一部のみが、通常、グラフィックスパイプラインによって使用され、テクスチャデータを各仮想メモリページに投入するために大きなオーバーヘッドを招くハードウェアアクセラレーションされた常駐チェックが生じる。ソフトウェアベースの常駐チェックは、任意の小さな粒度を実装することができるが、ソフトウェアベースの常駐チェックを実装するアプリケーションは、全てのテクスチャサンプリング操作に対して常駐構造のトラバーサル(アプリケーションと常駐構造との間の少なくとも1つのコマンド/応答交換を含む)を実行する必要がある。したがって、レンダリングされた画素毎に常駐構造をトラバースするために、ソフトウェアベースの常駐チェックが必要になる可能性があり、これは、グラフィックスパイプラインのパフォーマンスを低下させ、レイテンシを増加させる。
テクスチャブロックの圧縮パラメータ及びこのテクスチャブロックの常駐状態を符号化するメタデータを記憶することによって、任意の粒度のテクスチャブロックの常駐チェックをハードウェアにおいて、したがって、ソフトウェアベースの常駐チェックのコマンド/応答オーバーヘッドなしに実行することができる。メタデータは、GPUによって実装されるグラフィックスパイプラインによるアクセスのためにテクスチャブロックを記憶するのに使用されるGPUメモリに記憶される。グラフィックスパイプライン内のシェーダは、テクスチャブロックに対してシェーディング操作を実行するように要求すると共に、テクスチャブロックのメタデータにアクセスする。例えば、テクスチャブロックに要求すると同時にメタデータにアクセスすることができる。テクスチャブロックがGPUメモリに常駐していることをメタデータが示す場合に、テクスチャブロック内のデータに対する要求がシェーダに返される。したがって、テクスチャブロックがGPUメモリに常駐している場合に、常駐チェックによって追加のオーバーヘッドが生じない。テクスチャブロックがGPUメモリに常駐していないことをメタデータが示す場合に、要求されたデータがGPUメモリに常駐していないことを示す信号が、シェーダにフィードバックされる。このシェーダは、フィードバックの受信に応じて、(例えば、テクスチャブロックをディスクからロードするか、テクスチャブロックのデータをプロシージャに従って生成することによって)非常駐テクスチャブロックに投入することができる。次に、シェーダは、テクスチャブロックと共に(例えば、同時に)メタデータに再アクセスすることができる。テクスチャブロックがGPUメモリに常駐していない場合に常駐チェックを実行するのに必要な追加のオーバーヘッドは、サンプリング操作のフローにおいて、例えばテクスチャブロックにアクセスしようとすると共に又は同時に実行されるので、最小限である。さらに、従来のテクスチャ要求は、要求されたテクスチャの圧縮率を示すメタデータにアクセスする必要があるので、追加のオーバーヘッドは、従来のテクスチャ要求によって生じるオーバーヘッドと比較して最小限である。
いくつかの実施形態において、メタデータキャッシュは、シェーダが頻繁にアクセスするテクスチャブロックのメタデータを記憶する。メタデータキャッシュは、関連するテクスチャブロックがGPUメモリに常駐していなかったことを、以前の常駐チェック中にシェーダによってアクセスされたメタデータが示しているかどうかを示す情報を含むことができる。メタデータキャッシュのいくつかの実施形態は、テクスチャブロックの部分(例えば、タイル又はキャッシュライン)にアクセスするためのいくつかのタイプの要求に応じて、常駐状態を変更する。例えば、メタデータキャッシュから非常駐タイルのメタデータにアクセスしようとするテクスチャブロックフェッチ操作に応じて、タイルの常駐状態を「非常駐、サンプリング」に変更することができる。したがって、シェーダによって実行されたサンプリング操作が関わる非常駐タイルのメタデータは、キャッシュされたメタデータにおいてマークされ、メタデータキャッシュが、変更されたメタデータをエビクトしてグローバルメモリに返す場合に、最終的にメモリに書き戻される。例えば、アプリケーションが将来、非常駐のサンプリングされたタイルにアクセスすることが期待される場合に、アプリケーションは、メタデータを読み出し、非常駐のサンプリングされたタイルを特定し、例えば、アプリケーションが、将来、非常駐のサンプリングされたタイルにアクセスすることを期待する場合に、有効なデータを非常駐のサンプリングされたタイルに投入することができる。別の例では、テクスチャデータがタイルに書き込まれることに応じて、タイルの常駐状態を「常駐」に変更することができる。いくつかの実施形態では、タイルに書き込まれる圧縮された有効なデータの圧縮率を示すのに使用されるメタデータ値は、このタイルの常駐状態を表すのに使用される。例えば、メタデータ値を、メタデータ値の第1サブセットが、圧縮された有効なデータの実際の圧縮率を示し、常駐状態が「常駐」であることを示すように、符号化することができる。メタデータの第2サブセットは、予約されたビットパターンを使用して、常駐状態が「非常駐、サンプリング」であることを示す。
図1は、いくつかの実施形態による、ディスプレイ110への出力を意図した視覚画像を生成するグラフィックス処理ユニット(GPU)105を含む処理システム100のブロック図である。処理システム100は、メモリ115を含む。メモリ115のいくつかの実施形態は、ダイナミックランダムアクセスメモリ(DRAM)として実装される。しかしながら、メモリ115は、スタティックランダムアクセスメモリ(SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装されてもよい。図示した実施形態では、GPU105は、バス120を介してメモリ115と通信する。しかしながら、GPU105のいくつかの実施形態は、直接接続を介して又は他のバス、ブリッジ、スイッチ、ルータ等を介してメモリ115と通信する。GPU105は、メモリ115に記憶された命令を実行することができ、実行された命令の結果等の情報をメモリ115に記憶することができる。例えば、メモリ115は、GPU105によって実行されるプログラムコードからの命令のコピー125を記憶することができる。GPU105のいくつかの実施形態は、命令を同時に又は並列に独立して実行することができる複数のプロセッサコア(明確さのために示されていない)を含む。
処理システム100は、命令を実行する中央処理装置(CPU)130を含む。CPU130のいくつかの実施形態は、命令を同時に又は並列に独立して実行することができる複数のプロセッサコア(明確さのために示されていない)を含む。また、CPU130は、バス120に接続されているので、バス120を介してGPU105及びメモリ115と通信することができる。CPU130は、メモリ115に記憶されたプログラムコード135等の命令を実行することができ、実行された命令の結果等の情報をメモリ115に記憶することができる。また、CPU130は、ドローコールをGPU105に発行することによって、グラフィックス処理を開始することができる。ドローコールは、CPU130によって生成され、GPU105に送信され、GPU105がフレーム内のオブジェクト(又は、オブジェクトの一部)をレンダリングすることを指示するコマンドである。ドローコールのいくつかの実施形態は、GPU105がオブジェクト又はその一部をレンダリングするために使用するテクスチャ、状態、シェーダ、レンダリングオブジェクト、バッファ等を定義する情報を含む。ドローコールに含まれる情報は、状態情報を含む状態ベクトルと呼ぶことができる。GPU105は、オブジェクトをレンダリングして、ディスプレイ110に提供される画素値を生成し、ディスプレイは、画素値を使用して、レンダリングされたオブジェクトを表す画像を表示する。
入出力(I/O)エンジン140は、キーボード、マウス、プリンタ、外部ディスク等の処理システム100の他の要素と同様に、ディスプレイ110に関連する入出力動作を処理する。I/Oエンジン140は、バス120に接続されており、GPU105、メモリ115又はCPU130と通信することができる。図示した実施形態では、I/Oエンジン140は、コンパクトディスク(CD)、デジタルビデオディスク(DVD)等の外部記憶媒体145に記憶された情報を読み出すように構成されている。
外部記憶媒体145は、ビデオゲーム等のアプリケーションを実装するのに使用されるプログラムコードを表す情報を記憶する。外部記憶媒体145のプログラムコードは、メモリ115に書き込まれ、GPU105又はCPU130によって実行される命令のコピー125を形成することができる。また、外部記憶媒体145は、ディスプレイ110上に提示される画像をレンダリングするのに使用されるテクスチャを表す情報を記憶する。外部記憶媒体145に記憶されるテクスチャの一部は、メモリ115に書き込まれ、テクスチャ情報150として記憶される。例えば、テクスチャ情報150は、テクスチャブロックと、テクスチャ情報150内のテクスチャブロックに適用される圧縮の度合いを示す対応する圧縮メタデータと、を含むことができる。
GPU105は、ドローコールに応じて異なるプリミティブ又はビンの同時処理のために構成された複数のステージを含むグラフィックスパイプライン(明確さのために図1に示されていない)を実装する。GPU105内のグラフィックスパイプラインのステージは、ビデオゲーム等のアプリケーションによって生成される異なるプリミティブを同時に処理することができる。プリミティブの処理は、例えばさらなる詳細を提供するために、テクスチャをプリミティブにマッピングすることを含む。GPU105は、メモリ115に記憶されたテクスチャ情報150からのテクスチャデータにアクセスする。しかしながら、本明細書で説明するように、全てのテクスチャブロックに対するテクスチャデータは、GPU105がテクスチャデータへのアクセスを要求する前に必ずしも投入されない。例えば、テクスチャデータは、外部記憶媒体145からメモリ115に書き込まれていなくてもよい。別の例では、CPU130は、プログラムコード135内の命令によって、テクスチャデータをプロシージャに従って生成しなくてもよい。
GPU105は、テクスチャ情報150に記憶されたテクスチャブロックへのアクセスを要求すると共にメタデータのクエリを行うことによって、要求されたテクスチャブロックのテクスチャデータがテクスチャ情報150において利用可能であるかどうかを判別する。本明細書に使用される場合に、「と共に」という用語は、GPU105が、テクスチャブロックにアクセスする要求毎にメタデータのクエリを発行することを示す。例えば、GPU105は、テクスチャブロックへのアクセスを要求すると同時にメタデータのクエリを行うことができる。別の例では、GPU105は、テクスチャブロックへのアクセスを要求する前にメタデータのクエリを行うことができ、これにより、テクスチャブロックの常駐状態を判別することができ、必要に応じて、アクセス要求の前にテクスチャブロックを投入することができる。
メタデータは、テクスチャブロックの圧縮率を符号化することに加えて、テクスチャブロックの常駐状態を符号化する。例えば、メタデータは、テクスチャブロック内のテクスチャデータが投入されているかどうかを示す情報を符号化するので、テクスチャマッピング操作のためにGPU105に利用可能である。テクスチャブロックがメモリ115に常駐していることをメタデータが示すかどうかによって、テクスチャブロック内のデータがGPU105に選択的に返される。例えば、メモリ115は、テクスチャブロックがメモリ115に常駐していることを示すメタデータに応じて、テクスチャブロック内のデータを返す。別の例では、テクスチャブロックがメモリ115に常駐していないことを示すメタデータに応じて、要求されたデータが利用可能ではないことを示す信号がGPU105に返される。次に、GPU105は、外部記憶媒体145からメモリ115にデータを書き込ませることによって、データをプロシージャに従って生成してメモリ115に記憶することによって、又は、CPU130にデータをプロシージャに従って生成させてメモリ115に記憶させることによって、信号の受信に応じてデータをテクスチャブロックに投入することができる。GPU105は、データをテクスチャブロックに投入することに応じてテクスチャブロックを再要求すると共に(例えば、再要求と同時に)、メタデータに再アクセスすることができる。また、本明細書で説明するように、テクスチャデータ及びメタデータのキャッシングを実行することができる。
図2は、いくつかの実施形態による、三次元(3D)シーンのラスタライズ画像を所定の解像度で生成するために高次ジオメトリプリミティブを処理することができるグラフィックスパイプライン200を示す図である。グラフィックスパイプライン200は、図1に示すGPU105のいくつかの実施形態に実装される。グラフィックスパイプライン200は、バッファを実装し、頂点データ、テクスチャデータ等を記憶するのに使用される1つ以上のメモリ又はキャッシュの階層等のストレージリソース201にアクセスする。図1に示すメモリ115のいくつかの実施形態を使用して、ストレージリソース201を実装することができる。
入力アセンブラ202は、シーンのモデルの一部を表すオブジェクトを定義するために使用されるストレージリソース201からの情報にアクセスするように構成されている。頂点シェーダ203は、ソフトウェアで実装することができ、プリミティブの単一の頂点を入力として論理的に受信し、単一の頂点を出力する。頂点シェーダ203等のシェーダのいくつかの実施形態は、複数の頂点を同時に処理できるように、大規模な単一命令複数データ(SIMD)処理を実施する。図2に示すグラフィックスパイプライン200は、グラフィックスパイプライン200に含まれる全てのシェーダが、共有された大規模なSIMD計算ユニット上で同一の実行プラットフォームを含むように、統合型シェーダモデルを実装する。したがって、本明細書において統合型シェーダプール204と呼ばれる共通のリソースセットを使用して、頂点シェーダ203を含むシェーダが実装される。図1に示すGPU105内のプロセッサを使用して、統合型シェーダプール204のいくつかの実施形態が実装される。
ハルシェーダ205は、入力パッチを定義するのに使用される入力高次パッチ(input high-order patches)又は制御点に対して動作する。ハルシェーダ205は、テッセレーション係数及び他のパッチデータを出力する。ハルシェーダ205によって生成されたプリミティブを、オプションでテッセレータ206に提供することができる。テッセレータ206は、オブジェクト(パッチ等)をハルシェーダ205から受信し、例えば、ハルシェーダ205によってテッセレータ206に提供されたテッセレーション係数に基づいて入力オブジェクトをテッセレーションすることによって、入力オブジェクトに対応するプリミティブを識別する情報を生成する。テッセレーションは、例えば、テッセレーションプロセスによって生成されるプリミティブの粒度を指定するテッセレーション係数によって示されるように、パッチ等の入力高次プリミティブを、より詳細なレベルを表す低次出力プリミティブのセットに細分化する。したがって、シーンのモデルを、(メモリ又は帯域幅を節約するために)少数の高次プリミティブによって表すことができ、高次プリミティブをテッセレーションすることによってさらなる詳細を追加することができる。
ドメインシェーダ207は、ドメイン位置及び(オプションで)他のパッチデータを入力する。ドメインシェーダ207は、提供された情報に対して動作し、入力ドメイン位置及び他の情報に基づいて出力用の単一の頂点を生成する。ジオメトリシェーダ208は、入力プリミティブを受信し、入力プリミティブに基づいてジオメトリシェーダ208によって生成される最大4つのプリミティブを出力する。プリミティブの1つのストリームがラスタライザ209に提供され、プリミティブの最大4つのストリームを、ストレージリソース201のバッファにおいて連結することができる。ラスタライザ209は、シェーディング操作や、クリッピング、パースペクティブ分割、シザリング及びビューポート選択等の他の操作を実行する。画素シェーダ210は、画素フローを入力し、入力画素フローに応じて0又は別の画素フローを出力する。出力マージャブロック211は、画素シェーダ210から受信した画素に対してブレンド、深度、ステンシル又は他の動作を実行する。
グラフィックスパイプライン200内のいくつかの又は全てのシェーダは、ストレージリソース201に記憶されているテクスチャデータを使用してテクスチャマッピングを実行することができる。例えば、画素シェーダ210は、テクスチャデータをストレージリソース201から読み出し、このテクスチャデータを使用して1つ以上の画素をシェーディングすることができる。次に、シェーディングされた画素は、ユーザに提示するためにディスプレイ(図1に示すディスプレイ110等)に提供される。しかしながら、本明細書で説明するように、テクスチャデータは、グラフィックスパイプライン200内のシェーダによってテクスチャデータが必要とされる前に、必ずしもストレージリソース201に投入されない。したがって、画素シェーダ210等のシェーダは、シェーディング操作を実行することをテクスチャブロックに要求すると共に(例えば、要求すると同時に)、メタデータにアクセスするように構成されている。メタデータは、テクスチャブロックの圧縮率及びこのテクスチャブロックの常駐状態を符号化する。テクスチャブロック内のデータは、テクスチャブロックがストレージリソース201に常駐していることをメタデータが示すかどうかに応じて、シェーダに選択的に返される。
図3は、いくつかの実施形態による、テクスチャブロック及び対応するメタデータを記憶するために使用されるメモリ構造300のブロック図である。メモリ構造300は、図1に示す処理システム100及び図2に示すグラフィックスパイプライン200のいくつかの実施形態に実装される。メモリ構造300は、テクスチャブロック310(明確さのために符号によって1つのみを示す)を記憶するのに使用されるGPUメモリ305を含む。図1に示すメモリ115及び図2に示すストレージリソース201のいくつかの実施形態を使用して、GPUメモリ305を実装する。
図示した実施形態では、テクスチャブロック310は、テクスチャ情報のページ315のサブセットである。例えば、ページ315を、4~64kBの範囲内の値に設定することができる仮想マシンページ粒度で実装することができる。テクスチャブロック310は、ページ315の粒度の1/8、1/16又は1/32等の任意の粒度で構成されてもよい。例えば、各テクスチャブロック310は、キャッシュライン、タイル、又は、仮想マシンページの他の区画を表すことができる。また、GPUメモリ305は、対応するテクスチャブロック310のメタデータ320(明確さのために符号によって1つのみを示す)を記憶する。メタデータ320は、対応するテクスチャブロック310内の情報を圧縮するために使用される圧縮率を符号化する。例えば、テクスチャブロック310内のテクスチャデータが7つの圧縮率のセットのうち何れかで圧縮され得る場合には、3つのビットを使用して圧縮率の値を符号化することができる。
全てのテクスチャブロック310に有効なテクスチャデータが投入されるとは限らない。図示した実施形態では、有効なテクスチャデータが投入されたテクスチャブロック310をハッチングされたボックスで示し、有効なテクスチャデータが投入されていないテクスチャブロック310を白いボックスで示している。したがって、メタデータ320は、対応するテクスチャブロック310について有効なテクスチャデータがGPUメモリ305に常駐しているかどうかを示す常駐状態を含む。図示した実施形態では、有効なテクスチャデータがGPUメモリ305に常駐していることを示す符号化情報を含むメタデータ320を斜線付きのボックスで示し、有効なテクスチャデータがGPUメモリ305に常駐していないことを示す符号化情報を含むメタデータ320を白いボックスで示している。メタデータ320は、対応するテクスチャブロック310内のテクスチャデータがGPUメモリ305に常駐しているかどうかを示すために、異なる値に設定された別のビットを含むことができる。例えば、このビットを1の値に設定して、テクスチャデータが常駐していることを示すことができ、このビットを0の値に設定して、テクスチャデータが常駐していないことを示すことができる。また、メタデータ320は、圧縮率と組み合わせて常駐状態を符号化することができる。例えば、7つの可能な圧縮率を符号化するのに使用される3つのビットは、圧縮率を示す7つの値が、テクスチャブロック310のテクスチャデータがGPUメモリ305に常駐していることも示す場合に、常駐状態を符号化するために使用されてもよい。8番目の値は、テクスチャブロック310のテクスチャデータがGPUメモリ305に常駐していないことを示す。
メタデータ320のいくつかの実施形態は、メタデータ320のサンプリング状態325を示す情報を記憶(又は符号化)する。サンプリング状態325は、メタデータ320に関連するテクスチャブロック310の以前の常駐チェックが、テクスチャブロック310がGPUメモリ305に常駐していなかったことを示していたかどうかを示す。例えば、0に等しいサンプリング状態325の値は、テクスチャブロック310がGPUメモリ305に常駐していなかったことを示していると以前の常駐チェックが示すものであり、1に等しい値は、テクスチャブロック310がGPUメモリ305に常駐していなかったことを示していると少なくとも1つの以前の常駐チェックが示すものである。サンプリング状態325を使用して、ロード又は生成されたデータが投入されるタイルについてアプリケーションが生成するタスクリスト内の重複したエントリを排除することができる。サンプリング状態325は、図3においてビットの値によって示されているが、いくつかの実施形態は、メタデータ320を表すために使用されるビットの値を使用して、サンプリング状態325を符号化することができる。
メモリ構造300は、頻繁にアクセスされるメタデータ330を記憶するのに使用されるメタデータキャッシュ330を含む。キャッシュされたメタデータ335を、キャッシュ置換ポリシーに従って、メタデータキャッシュ330に追加したり、メタデータキャッシュ330からエビクトすることができる。メタデータ330は、対応するテクスチャブロック310の常駐状態を示し、例えば、ハッチングは、テクスチャデータがGPUメモリ305に常駐していることを示す。また、メタデータキャッシュは、キャッシュされたメタデータ335に対応するサンプリング状態325を記憶する。メタデータ330に関するサンプリング状態325を、キャッシュされたメタデータ335へのアクセス要求に応じて変更することができる。例えば、サンプリング状態340及びメタデータ335がメタデータキャッシュ330に追加されている場合に、サンプリング状態325の値(又は符号化)が「サンプリングされていない」場合には、メタデータ335に対する最初のヒットに応じて、サンプリング状態325を「サンプリングされた」値(又は符号化)に変更する。サンプリング状態325は、対応するテクスチャブロック310のテクスチャデータがGPUメモリ305に常駐していないままである場合に、後続のヘッドに応じて「サンプリングされた」値(又は符号化)を保持する。いくつかの実施形態では、「サンプリングされた」値を含むサンプリング状態と、テクスチャブロック310のテクスチャデータがGPUメモリ305に常駐していないことを示す常駐状態とに応じて、テクスチャブロック310のテクスチャデータが投入される。したがって、投入されたテクスチャブロック310のテクスチャデータは、後続のアクセス要求に利用可能である。サンプリング状態は「サンプリングされていない」値に設定され、常駐状態は、テクスチャブロック310のテクスチャデータの投入に応じて、常駐に設定される。
いくつかの実施形態のメモリ構造300は、頻繁にアクセスされるテクスチャブロック345(明確さのために符号によって1つのみを示す)を記憶するL2キャッシュ340等のキャッシュを含む。キャッシュされたテクスチャブロック345は、キャッシュ置換ポリシーに従って、L2キャッシュ340に追加されるか、L2キャッシュ340からエビクトされる。例えば、L2キャッシュ340によって、最近最も使用されていない(least-recently-used)キャッシュ置換ポリシーを実装することができる。図示した実施形態では、クロスハッチングで示すように有効なテクスチャデータが投入され、これにより、L2キャッシュ340は、キャッシュヒットに応じて有効なテクスチャデータを返すことができる。
シェーダ350等のシェーダは、パイプライン355を介して対応するテクスチャブロックにアクセスすると共に、メタデータにアクセスすることができる。例えば、シェーダ350は、対応するテクスチャブロックにアクセスすると同時にメタデータにアクセスすることができる。図示した実施形態では、シェーダ350は、テクスチャ要求をパイプライン355に送り、パイプラインは、このテクスチャ要求を1つ以上の同時テクスチャデータ及びメタデータ要求に変換する。例えば、パイプライン355は、タイルのメタデータアドレスと、タイル内のテクスチャデータのデータアドレスとの両方を含む要求を生成することができる。パイプライン355のいくつかの実施形態は、L2キャッシュ340及びGPUメモリ305にも記憶される、頻繁にアクセスされるテクスチャデータのコピーを記憶する内部データキャッシュを実装する。したがって、パイプライン355は、その内部データキャッシュに記憶されたテクスチャデータを返すことによって、いくつかのテクスチャデータ要求に応答することができる。
パイプライン355は、テクスチャデータの要求をL2キャッシュ340に送るように構成されている。この要求がL2キャッシュ340においてヒットした場合に、要求されたテクスチャデータがL2キャッシュ340からパイプライン355に返される。この要求がL2キャッシュ340においてミスした場合に、この要求がGPUメモリ305に転送される。テクスチャデータの常駐状態のクエリがメタデータキャッシュ330に送られる。このクエリがメタデータキャッシュ330においてヒットした場合に、メタデータキャッシュ330は、メタデータ330をパイプライン355に返し、このパイプラインは、メタデータ330を使用して、常住状態(例えば、常駐又は非常駐等)と、テクスチャデータのサンプリング状態325(例えば、以前にサンプリングされたか否か等)とを判別する。本明細書で説明するように、常駐状態又はサンプリング状態を、クエリに応じて変更することができる。このクエリがメタデータキャッシュ330においてミスした場合に、クエリがGPUメモリ305に転送される。
GPUメモリ305は、テクスチャブロック310の常駐状態についてのクエリを受信したことに応じて、符号化されたメタデータ320をパイプライン355に返し、このパイプラインは、符号化されたメタデータ320を使用して、テクスチャブロック310のテクスチャデータがGPUメモリ305に常駐しているか否かを判別する。GPUメモリ305は、テクスチャデータが常駐している場合に、テクスチャブロック310内のテクスチャデータに対する要求に応じて、要求されたテクスチャデータをパイプライン355に返す。
パイプライン355は、要求されたテクスチャデータ及び要求されたメタデータを、メタデータキャッシュ330又はGPUメモリ305から受信する。パイプライン355は、この情報を変換し、変換された情報をシェーダ350に返すことができる。例えば、パイプライン355は、メタデータを使用して、要求されたテクスチャデータがGPUメモリ305に常駐しているかどうかを判別する。常駐している場合、パイプライン355は、要求されたテクスチャデータをシェーダ350に返す。要求されたテクスチャデータがGPUメモリ305に常駐していないことをメタデータが示す場合、パイプライン355は、要求されたテクスチャデータがGPUメモリ305に常駐していないことを示す信号を返す。要求されたテクスチャデータが返された場合、シェーダ350は、要求されたテクスチャデータを用いて処理を進める。要求されたテクスチャデータがGPUメモリ305に常駐していないことを示す信号をシェーダ350が受信した場合、シェーダ350は、この信号を受信したことに応じて、有効なテクスチャデータをテクスチャブロック310に投入する命令を発行することができる。その後、シェーダ350は、テクスチャデータの要求、及び、テクスチャブロック310に対するメタデータのクエリを再度送ることができる。
図4は、いくつかの実施形態による、テクスチャデータを含むテクスチャブロックの常駐状態に基づいてテクスチャデータを選択的に返す方法400のフロー図である。方法は、図1に示す処理システム100、図2に示すグラフィックスパイプライン200、及び、図3に示すメモリ構造300のいくつかの実施形態において実装される。
ブロック405において、シェーダは、メモリに記憶されるテクスチャブロックのメタデータ及びテクスチャデータに同時にアクセスする要求を送る。本明細書で説明するように、テクスチャデータは、シェーダが要求を送る前に必ずしも投入されない。したがって、メタデータは、テクスチャデータの常駐状態を符号化して、テクスチャデータがメモリに常駐しているか否かを示す。したがって、メタデータアクセスは、テクスチャデータをキャッシュ又はメモリから取得するのに使用されるテクスチャデータにアクセスする要求と同時に、テクスチャデータの常駐状態を決定するために使用される。また、メタデータは、テクスチャデータの圧縮率を決定するために使用される。
判別ブロック410において、テクスチャブロックのテクスチャデータの常駐状態が決定される。例えば、符号化されたメタデータが常駐テクスチャデータに対応する値を含む場合に、テクスチャデータの常駐状態は、「常駐」と判別される。符号化されたメタデータが、テクスチャデータがメモリに常駐していないことを示す値を含む場合に、テクスチャデータの常駐状態は、「非常駐」と判別される。テクスチャデータがメモリに常駐している場合、方法はブロック415に進む。テクスチャデータがメモリに常駐していない場合、方法はブロック420に進む。
ブロック415において、要求されたテクスチャデータがシェーダに返される。本明細書で説明するように、常駐テクスチャデータを、図3に示すGPUメモリ305等のメモリ又はL2キャッシュ340等の対応するキャッシュからシェーダに返すことができる。
ブロック420において、要求されたテクスチャデータがメモリに常駐していないことを示す信号が、シェーダに返される。シェーダは、この信号を受信したことに応じて、テクスチャブロックに要求されたテクスチャデータを投入するための命令を発行する(ブロック425)。次に、方法400はブロック405に進み、シェーダは、テクスチャブロック内のメタデータ及びテクスチャデータにアクセスするために同時要求を再度送る。テクスチャデータは、この時点でメモリに常駐する必要がある。しかしながら、テクスチャデータが未だメモリに常駐していない場合に、方法400は、シェーダが、要求されたテクスチャデータをメモリから正常に取得するまで、繰り返すことができる。
図5は、いくつかの実施形態による、GPUメモリに関連するメタデータキャッシュを操作する方法500のフロー図である。方法500は、図3に示すメタデータキャッシュ330及びGPUメモリ305のいくつかの実施形態において実施される。
ブロック505において、テクスチャブロックのメタデータへのアクセス要求がメタデータキャッシュに発行される。例えば、この要求は、タイルのメタデータアドレスを含むことができる。判別ブロック510において、メタデータキャッシュは、例えば、メタデータアドレスの一部をメタデータキャッシュ内のタグアレイと比較することによって、この要求がメタデータキャッシュ内でヒットするかどうかを判別する。この要求がメタデータキャッシュ内でヒットした場合、方法は、判別ブロック515に進む。この要求がメタデータキャッシュ内でミスした場合、方法は、ブロック520に進む。
ブロック520において、メタデータに対する要求がGPUメモリに転送され、要求されたメタデータがGPUメモリからアクセスされる。本明細書で説明するように、要求されたメタデータを使用して、対応するテクスチャデータの圧縮率及び常駐状態を決定することができる。ブロック525において、GPUメモリから取得されたメタデータは、キャッシュ置換ポリシーに従って、メタデータキャッシュにキャッシュされる。例えば、最近最も使用されていないキャッシュエントリをメタデータキャッシュからエビクトし、取得されたメタデータに置き換えることができる。
判別ブロック515において、メタデータを使用して、要求されたテクスチャデータがGPUメモリに常駐しているかどうかを判別する。例えば、図3に示すパイプライン355等のパイプラインは、要求されたテクスチャデータが常駐しているか、常駐していないかを判別するように、メタデータを変換することができる。テクスチャデータがメモリに常駐していない場合に、方法500は、ブロック530に進む。テクスチャデータがメモリに常駐している場合に、方法500は、ブロック535に進む。
ブロック530において、キャッシュされたメタデータのサンプリング状態が「サンプリング」に変更され、以前にキャッシュされたメタデータが他のアクセス要求によってサンプリングされたことを示す。いくつかの実施形態では、キャッシュされたメタデータのサンプリング状態を使用して、タスクリストの重複を排除することができる。次に、方法500は、ブロック530からブロック535に進む。ブロック535において、キャッシュされたメタデータ値が返される。例えば、キャッシュされたメタデータ値をパイプラインに返すことができる。パイプラインは、キャッシュされたメタデータ値を変換し、要求されたテクスチャデータ、又は、要求されたテクスチャデータがメモリに常駐していないことを示す信号の何れかを、シェーダに提供する。
図6は、いくつかの実施形態による、GPUメモリ及び関連するキャッシュにテクスチャデータを投入する方法600のフロー図である。方法600は、図3に示すメモリ構造300のいくつかの実施形態において実施される。例えば、方法600は、図3に示すテクスチャブロック310に非常駐テクスチャデータを投入するためのシェーダ350からの要求に応じて実施されてもよい。
ブロック605において、GPUメモリ内のテクスチャブロックのテクスチャデータが投入される。例えば、図1に示す記憶媒体145等のディスクからテクスチャデータを取得することによって、テクスチャデータを投入することができる。また、プロシージャに従ってテクスチャデータを生成することによって、テクスチャデータを投入することができる。例えば、CPU130は、プログラムコードのコピー125内の命令を実行して、GPUメモリ内のテクスチャブロックのテクスチャデータを、プロシージャに従って生成することができる。
ブロック610において、投入されたテクスチャブロックのメタデータは、テクスチャデータがGPUメモリに常駐していることを示すように変更される。例えば、テクスチャデータの圧縮率及びテクスチャデータの常駐状態を符号化するメタデータの値を変更して、テクスチャデータの圧縮率及び「常駐」という常駐状態を示すことができる。テクスチャブロックのメタデータが以前にメタデータキャッシュにキャッシュされていた場合、メタデータキャッシュのエントリが変更され(ブロック615)、テクスチャブロックの新たな常駐状態が示される。例えば、キャッシュコヒーレンシプロトコルを使用して、符号化されたメタデータのキャッシュされた値を変更することができる。
図7は、いくつかの実施形態による、テクスチャブロックに関連するメタデータ面700のブロック図である。メタデータ面700は、タイルの常駐状態と、テクスチャの対応する部分(タイル等)に使用される圧縮率と、を示すエントリ705(明確さのために符号によって1つのみが示されている)を含む。したがって、メタデータ面700は、図3に示す対応するテクスチャブロック310のメタデータ320のいくつかの実施形態を表すことができる。メモリに常駐しているタイルは、クロスハッチングされたエントリ710(明確さのために符号によって1つのみが示されている)によって示されており、以前にサンプリングされた常駐タイル715は、「S」という文字によって示されている。本明細書で説明するように、ビットの異なるサブセットによって常駐状態及びサンプリング状態を示すことができ、又は、これらを同じビットのセットに符号化することができる。
タイルの常駐状態又はサンプリング状態は、メタデータ面700のサンプリング部分によって決定されてもよい。例えば、シェーダは、サンプリングフットプリント720内のエントリ705,710をサンプリングして、メタデータ面700に関連するテクスチャ内の対応するタイルの常駐状態又はサンプリング状態を決定することができる。いくつかの実施形態では、シェーダは、タイルのテクスチャデータを要求することなく、サンプリングフットプリント720内のタイルの常駐状態をチェックする。タイルの常駐状態のチェックを、タイルからテクスチャデータへのアクセスと共に実行することができる。例えば、シェーダは、テクスチャ内の非常駐タイルを示すフィードバックを使用して、別のパス間で処理されるタイルのワークリストを生成することができる。ワークリスト内の非常駐タイルには、別のパスの間に有効なデータを投入することができる。シェーダは、テクスチャデータのサンプリングをタイル上で実行し、有効なデータがタイルに投入されていることによって、メタデータ面700への追加のアクセスを必要としない。いくつかの実施形態では、シェーダは、タイルのサンプリング状態を変更するチェック動作を実行する。例えば、サンプリングフットプリント720内のタイルに対してチェック動作を実行する場合、サンプリングフットプリント720内のメタデータの一部のエントリのサンプリング状態が、チェック動作に応じて「サンプリング」に変更される。別のパスでは、シェーダは、メタデータ面700を読み出し、「非常駐」及び「サンプリング」であるエントリを識別する。次に、有効なデータが、非常駐のサンプリングされたタイルに投入される。このアプローチは、1つ以上の以前のパスの間のタイルのサンプリングアクセス数にかかわらず、シェーダがメタデータ検査パスの間にのみサンプリング状態にアクセスするので、重複排除の問題に対処する。
図8は、いくつかの実施形態による、メタデータ面をサンプリングすることによって非常駐タイルのワークリストを生成する方法800のフロー図である。方法800は、図7に示すメタデータ面700のいくつかの実施形態を使用して実施され、図1に示す処理システム100及び図2に示すグラフィックスパイプライン200のいくつかの実施形態において実施されてもよい。
ブロック805において、第1パスでは、シェーダは、メタデータ面のサンプリングフットプリント内でメタデータをサンプリングすることによって、常駐チェックを実行する。例えば、シェーダは、テクスチャの対応する部分又はタイルのメタデータエントリにおいて符号化された常駐状態をチェックすることができる。本明細書で説明するように、常駐状態は、GPUメモリが対応する部分又はタイルのテクスチャデータを含むかどうかを示す。テクスチャデータは、常駐チェックに応じてシェーダに返されない。
ブロック810において、シェーダは、テクスチャデータを投入する必要がある非常駐タイルを含むワークリストを構築する。例えば、シェーダは、メタデータにおいて符号化された常駐状態に基づいて、非常駐タイルを識別することができる。次に、シェーダは、テクスチャデータが投入されていないタイルの識別子又はアドレスを含むワークリストを生成することができる。このワークリストを、サンプリングフットプリント内のメタデータエントリを通過した後のアクセスのために記憶することができる。
ブロック815において、シェーダは、ワークリスト内の情報を使用して、非常駐タイルに入力する。例えば、シェーダは、ワークリストを取得した後に、ワークリスト内の情報に基づいてテクスチャデータを取得し、又は、プロシージャに従って生成することができる。
ブロック820において、第2パスでは、シェーダは、テクスチャデータサンプリングを実行して、テクスチャ内のタイルからテクスチャデータを取得することができる。このパスの間にシェーダがテクスチャデータを取得することができるように、テクスチャデータをGPUメモリで利用可能にする必要がある。したがって、メタデータをサンプリングすることによって実行される常駐チェックと共に、テクスチャデータサンプリングが実行される。
図9は、いくつかの実施形態による、テクスチャデータを、非常駐の、以前にサンプリングされたタイルに投入する方法900のフロー図である。方法900は、図7に示すメタデータ面700のいくつかの実施形態を使用して実施され、図1に示す処理システム100及び図2に示すグラフィックスパイプライン200のいくつかの実施形態において実施されてもよい。
ブロック905において、メタデータ面を通過する第1パスでは、シェーダは、常駐チェックを実行して、1つ以上のタイルのサンプリング状態を変更する。シェーダのいくつかの実施形態は、メタデータ面のサンプリングフットプリント内でメタデータをサンプリングすることによって、常駐チェックを実行することができる。以前にサンプリングされていない非常駐タイルのサンプリング状態は、例えば、メタデータ面内のエントリのビット値又は符号化を変更することによって、「サンプリングされていない」から「サンプリング」に変更する。しかしながら、ブロック905において実行される常駐チェックは、如何なるフィードバックもシェーダに返さない。本明細書で説明するように、常駐状態は、GPUメモリが対応する部分又はタイルのテクスチャデータを含むかどうかを示す。
ブロック910において、第2パスでは、シェーダは、メタデータ面内のエントリを読み出し、エントリを検査して、非常駐のサンプリングされたタイルを識別する。ブロック915において、シェーダは、非常駐のサンプリングされたタイルに入力する。例えば、シェーダは、非常駐のサンプリングされたタイルのテクスチャデータを取得し、又は、プロシージャに従って生成することができる。ブロック920において、シェーダは、GPUメモリに記憶されたタイル上でテクスチャデータサンプリングを実行して、テクスチャデータを取得する。したがって、シェーダは、タイルの常駐状態のチェックと共に、テクスチャデータサンプリングを実行する。
いくつかの実施形態では、上述した装置及び技術は、1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を備えるシステム(例えば、図1~図6を参照して上述したグラフィックス処理システム等)において実施される。これらのICデバイスの設計及び製造には、通常、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールが使用される。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし(例えば、システムRAM又はROM)、コンピュータシステムに固定的に取り付けられてもよいし(例えば、磁気ハードドライブ)、コンピュータシステムに着脱可能に取り付けられてもよいし(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい(例えば、ネットワークアクセス可能なストレージ(NAS))。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. テクスチャブロックと、前記テクスチャブロックの圧縮パラメータと前記テクスチャブロックがメモリに常駐しているかどうかを示す常駐状態とを符号化するメタデータと、を記憶するメモリにアクセスするように構成されたパイプラインと、
    シェーディング操作を実行するために前記テクスチャブロック内のデータを要求すると共に、前記メタデータへのアクセスを要求するプロセッサと、を備え、
    前記パイプラインは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示しているかどうかに応じて、前記テクスチャブロック内の前記データを選択的に前記プロセッサに返す、
    装置。
  2. 前記パイプラインは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示していることに応じて、前記テクスチャブロック内の前記データを返す、
    請求項1の装置。
  3. 前記プロセッサは、前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることに応じて、前記要求されたデータが利用可能でないことを示す信号を受信し、前記信号を受信したことに応じて、データを前記テクスチャブロックに投入し、前記データを前記テクスチャブロックに投入したことに応じて、前記テクスチャブロックを再要求すると共に前記メタデータに再アクセスする、
    請求項1の装置。
  4. 前記プロセッサは、前記メタデータを含むメタデータ面の第1パスの間に、前記テクスチャブロックを含む複数のテクスチャブロックの常駐状態及びサンプリング状態のうち少なくとも1つを決定し、前記常駐状態及び前記サンプリング状態のうち前記少なくとも1つに基づいて前記複数のテクスチャブロックに選択的に投入し、第2パスの間に前記複数のテクスチャブロック内のテクスチャデータをサンプリングする、
    請求項1~3の何れかの装置。
  5. 前記テクスチャブロックの前記圧縮パラメータ及び前記常駐状態を符号化する前記メタデータのコピーを記憶するエントリを含むキャッシュをさらに備える、
    請求項1~3の何れかの装置。
  6. 前記キャッシュに記憶された前記メタデータのサンプリング状態は、前記テクスチャブロックが前記メモリに常駐していないことを前記テクスチャブロックの以前の常駐チェックが示したかどうかを示す、
    請求項5の装置。
  7. 前記サンプリング状態は、前記キャッシュの前記エントリに記憶された前記メタデータへのアクセス要求に応じて変更される、
    請求項6の装置。
  8. 前記プロセッサは、前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることと、前記キャッシュが前記エントリ内の前記メタデータにアクセスするための少なくとも1つの以前の要求を受信したことを前記サンプリング状態が示していることとに応じて、データを前記テクスチャブロックに投入する、
    請求項7の装置。
  9. テクスチャブロックの圧縮パラメータと前記テクスチャブロックがメモリに常駐しているかどうかを示す常駐状態とを符号化するメタデータにアクセスすると共に、前記メモリに記憶された前記テクスチャブロックのデータへのアクセスを要求することと、
    データが前記メモリに常駐していることを前記常駐状態が示しているかどうかに応じて、前記テクスチャブロック内の前記データを選択的に受信することと、を含む、
    方法。
  10. 前記テクスチャブロック内の前記データを選択的に受信することは、前記テクスチャブロックが前記メモリに常駐していることを前記常駐状態が示していることに応じて、前記テクスチャブロック内の前記データを受信することを含む、
    請求項の方法。
  11. 前記データを選択的に受信することは、
    前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることに応じて、前記要求されたデータが利用可能でないことを示す信号を受信することを含み、
    前記信号を受信したことに応じてデータを前記テクスチャブロックに投入することと、
    前記データを前記テクスチャブロックに投入したことに応じて、前記テクスチャブロック内の前記データを再要求すると共に前記メタデータに再アクセスすることと、をさらに含む、
    請求項の方法。
  12. 前記メタデータを含むメタデータ面の第1パスの間に、前記テクスチャブロックを含む複数のテクスチャブロックの前記常駐状態及びサンプリング状態のうち少なくとも1つを決定することと、
    前記常駐状態及び前記サンプリング状態のうち前記少なくとも1つに基づいて前記複数のテクスチャブロックに選択的に投入することと、
    第2パスの間に前記複数のテクスチャブロック内のテクスチャデータをサンプリングすることと、をさらに含む、
    請求項9~11の何れかの方法。
  13. 前記テクスチャブロックの前記圧縮パラメータ及び前記常駐状態を符号化する前記メタデータのコピーをキャッシュすることをさらに含む、
    請求項の方法。
  14. キャッシュに記憶された前記メタデータのサンプリング状態は、前記テクスチャブロックが前記メモリに常駐していないことを前記テクスチャブロックの以前の常駐チェックが示したかどうかを示す、
    請求項13の方法。
  15. 前記メタデータの前記キャッシュされたコピーへのアクセス要求に応じて前記サンプリング状態を変更することをさらに含む、
    請求項14の方法。
  16. 前記テクスチャブロックが前記メモリに常駐していないことを前記常駐状態が示していることと、前記キャッシュが前記メタデータの前記キャッシュされたコピーにアクセスするための少なくとも1つの以前の要求を受信したことを前記サンプリング状態が示していることとに応じて、データを前記テクスチャブロックに投入することをさらに含む、
    請求項15の方法。
  17. 複数のシェーダを含むグラフィックスパイプラインと、
    テクスチャブロックと、前記テクスチャブロックの圧縮パラメータと前記テクスチャブロックがストレージリソースに常駐しているかどうかを示す常駐状態とを符号化するメタデータと、を記憶するストレージリソースと、を備え、
    前記複数のシェーダのうち何れかのシェーダは、シェーディング操作を実行するために前記テクスチャブロックに要求すると共に前記メタデータにアクセスするように構成されており、
    前記テクスチャブロック内のデータは、前記テクスチャブロックが前記ストレージリソースに常駐していることを前記常駐状態が示すかどうかに応じて、選択的に前記シェーダに返される、
    グラフィックス処理ユニット。
  18. 前記テクスチャブロック内の前記データは、前記テクスチャブロックが前記ストレージリソースに常駐していることを前記常駐状態が示すことに応じて、前記シェーダに返される、
    請求項17のグラフィックス処理ユニット。
  19. 前記シェーダは、前記テクスチャブロックが前記ストレージリソースに常駐していないことを前記常駐状態が示すことに応じて、前記要求されたデータが利用可能でないことを示す信号を受信するように構成されている、
    請求項17のグラフィックス処理ユニット。
  20. 前記シェーダは、前記信号を受信したことに応じて、データを前記テクスチャブロックに投入するように構成されており、
    前記シェーダは、前記データを前記テクスチャブロックに投入したことに応じて、前記テクスチャブロックを再要求すると共に前記メタデータに再アクセスする、
    請求項19のグラフィックス処理ユニット。
JP2020510572A 2017-08-25 2018-08-22 圧縮メタデータを用いたテクスチャ常駐チェック Active JP7252209B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/687,108 US10783694B2 (en) 2017-08-25 2017-08-25 Texture residency checks using compression metadata
US15/687,108 2017-08-25
PCT/US2018/047539 WO2019040630A1 (en) 2017-08-25 2018-08-22 TEXTURE RESIDENCE CHECKS USING COMPRESSION METADATA

Publications (3)

Publication Number Publication Date
JP2020531994A JP2020531994A (ja) 2020-11-05
JP2020531994A5 JP2020531994A5 (ja) 2021-10-07
JP7252209B2 true JP7252209B2 (ja) 2023-04-04

Family

ID=65435472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020510572A Active JP7252209B2 (ja) 2017-08-25 2018-08-22 圧縮メタデータを用いたテクスチャ常駐チェック

Country Status (6)

Country Link
US (1) US10783694B2 (ja)
EP (1) EP3673456A4 (ja)
JP (1) JP7252209B2 (ja)
KR (1) KR102633002B1 (ja)
CN (1) CN111052172B (ja)
WO (1) WO2019040630A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US10834413B2 (en) * 2018-08-24 2020-11-10 Disney Enterprises, Inc. Fast and accurate block matching for computer generated content
US10802970B1 (en) 2019-03-27 2020-10-13 Intel Corporation Control surface access using flat memory mapping
US10872458B1 (en) 2019-09-06 2020-12-22 Apple Inc. Graphics surface addressing
US11010863B2 (en) 2019-09-27 2021-05-18 Apple Inc. Bindpoint emulation
US12106418B2 (en) * 2020-03-25 2024-10-01 Advanced Micro Devices, Inc. Sampling for partially resident textures
US11308648B2 (en) * 2020-09-23 2022-04-19 Advanced Micro Devices, Inc. Compressing texture data on a per-channel basis
US11636625B2 (en) * 2020-12-11 2023-04-25 Qualcomm Incorporated Image compression and decompression

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150379684A1 (en) 2014-06-27 2015-12-31 Samsung Electronics Co., Ltd. Texture pipeline with online variable rate dictionary compression

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3365293B2 (ja) * 1998-02-12 2003-01-08 株式会社日立製作所 Dram,ロジック混載lsiを使ったキャッシュメモリ及びそれを用いたグラフィックスシステム
US6339428B1 (en) * 1999-07-16 2002-01-15 Ati International Srl Method and apparatus for compressed texture caching in a video graphics system
US7948498B1 (en) 2006-10-13 2011-05-24 Nvidia Corporation Efficient texture state cache
KR100882842B1 (ko) * 2007-02-26 2009-02-17 삼성전자주식회사 피포를 포스트 버텍스 캐쉬처럼 사용하기 위한 기하학 처리장치와 그 방법
US8823724B2 (en) * 2009-12-31 2014-09-02 Nvidia Corporation Sparse texture systems and methods
US8587602B2 (en) 2010-08-16 2013-11-19 Microsoft Corporation GPU texture tile detail control
US8907969B2 (en) * 2010-12-13 2014-12-09 Advanced Micro Devices, Inc. Partially resident textures
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US10019829B2 (en) * 2012-06-08 2018-07-10 Advanced Micro Devices, Inc. Graphics library extensions
US9754561B2 (en) * 2013-10-04 2017-09-05 Nvidia Corporation Managing memory regions to support sparse mappings
US10032246B2 (en) * 2013-10-09 2018-07-24 Nvidia Corporation Approach to caching decoded texture data with variable dimensions
US9355465B2 (en) 2013-12-27 2016-05-31 Intel Corporation Dynamic programmable texture sampler for flexible filtering of graphical texture data
US9852522B2 (en) * 2014-03-17 2017-12-26 Sony Interactive Entertainment Inc. Image decoder, graphics processing system, image decoding method, and graphics processing method
US9811875B2 (en) 2014-09-10 2017-11-07 Apple Inc. Texture state cache
KR102245137B1 (ko) * 2014-09-17 2021-04-28 삼성전자 주식회사 렌더링 데이터의 압축을 해제하는 장치, 방법 및 기록매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150379684A1 (en) 2014-06-27 2015-12-31 Samsung Electronics Co., Ltd. Texture pipeline with online variable rate dictionary compression

Also Published As

Publication number Publication date
CN111052172A (zh) 2020-04-21
CN111052172B (zh) 2023-11-21
EP3673456A4 (en) 2022-07-13
WO2019040630A1 (en) 2019-02-28
EP3673456A1 (en) 2020-07-01
US10783694B2 (en) 2020-09-22
KR102633002B1 (ko) 2024-02-05
JP2020531994A (ja) 2020-11-05
KR20200035446A (ko) 2020-04-03
US20190066352A1 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
JP7252209B2 (ja) 圧縮メタデータを用いたテクスチャ常駐チェック
US12080032B2 (en) Real time on-chip texture decompression using shader processors
KR102659643B1 (ko) 레지던시 맵 디스크립터
KR102646818B1 (ko) 그래픽스 파이프라인에서의 인덱스들의 압축 및 압축 해제
JP7078628B2 (ja) 圧縮されたリソースへのシェーダ書き込み
US20240273767A1 (en) Compressing texture data on a per-channel basis
JP2024501015A (ja) キャッシュラインに対するミス要求の選択的生成
JP2023530428A (ja) 処理と同時のダーティキャッシュラインの選択的書き戻し
US20230206380A1 (en) Optimizing partial writes to compressed blocks

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210820

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220628

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220928

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230323

R150 Certificate of patent or registration of utility model

Ref document number: 7252209

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150