JP2023525725A - データ圧縮の方法及び装置 - Google Patents
データ圧縮の方法及び装置 Download PDFInfo
- Publication number
- JP2023525725A JP2023525725A JP2022567598A JP2022567598A JP2023525725A JP 2023525725 A JP2023525725 A JP 2023525725A JP 2022567598 A JP2022567598 A JP 2022567598A JP 2022567598 A JP2022567598 A JP 2022567598A JP 2023525725 A JP2023525725 A JP 2023525725A
- Authority
- JP
- Japan
- Prior art keywords
- fragment
- data
- color
- dcc
- color 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
Abstract
色データを処理するための方法及び装置は、フラグメントポインタ及び色データを共に色バッファに記憶することを含む。処理のためにフェッチする色データを示すデルタ色圧縮(DCC)キーが記憶され、フラグメントポインタ及び色データは、展開のために、読み取られたDCCキーに基づいてフェッチされる。【選択図】図7
Description
(関連出願の相互参照)
本願は、2020年5月13日に出願された米国仮特許出願第63/024,254号及び2020年12月28日に出願された米国特許出願第17/135,978号の利益を主張し、本明細書に完全に記載されているように参照により組み込まれる。
本願は、2020年5月13日に出願された米国仮特許出願第63/024,254号及び2020年12月28日に出願された米国特許出願第17/135,978号の利益を主張し、本明細書に完全に記載されているように参照により組み込まれる。
画像をサンプリングするためのマルチサンプルアンチエイリアシング(multisample antialiasing、MSAA)技術では、各ピクセルは、画像の品質を改善するための複数のサンプリング点(sampling points)を有する。これらのサンプリング点の各々は、固有の色値を有することができる。しかしながら、ピクセルのサンプリング点は、共通の色値を共有することがある。
値は、各共通の色値を1回記憶することのみ(例えば、サンプルごとに1回の代わりに、フラグメントごとに)によって記憶される。このデータは色表面(color surface)に記憶され、ピクセル内の各サンプルに対するフラグメントポインタ(fmask)が記憶される。このフラグメントポインタは、個別のfmask表面に記憶される。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
本方法及び装置は、以下に更に詳細に拡張されるが、色表面に対するデータ圧縮のための方法を本明細書で簡単に説明する。
色データを処理するための方法は、色バッファにフラグメントポインタ及び色データを共に記憶することを含む。処理のためにフェッチする色データを示すデルタ色圧縮(delta color compression、DCC)キーが記憶され、フラグメントポインタ及び色データは、展開のために読み取られたDCCキーに基づいてフェッチされる。
色データを処理するための装置は、メモリと、メモリと動作可能に結合され、メモリと通信するプロセッサと、を含む。プロセッサは、フラグメントポインタ及び色データをメモリ内の色バッファに共に記憶し、処理のためにフェッチする色データを示すデルタ色圧縮(DCC)キーを読み取り、展開のために読み取られたDCCキーに基づいてフラグメントポインタ及び色データをフェッチするように構成されている。
色データを処理するための非一時的なコンピュータ可読媒体には、プロセッサによって実行されると、プロセッサに動作を実行させる命令が記録されている。動作は、色バッファにフラグメントポインタ及び色データを共に記憶することと、処理のためにフェッチする色データを示すデルタ色圧縮(DCC)キーを読み取ることと、展開のために読み取られたDCCキーに基づいてフラグメントポインタ及び色データをフェッチすることと、を含む。
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、サーバ、タブレットコンピュータ、又は、グラフィック画像を生成するための他のタイプの計算デバイスを含むことができる。デバイス100は、プロセッサ102と、メモリ104と、記憶装置106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含み得る。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィック処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置するか、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ)を含む。図1に示す実施形態では、プロセッサ102は、CPUを含む。
記憶装置106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションの構成要素であることと、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合に同じ態様で操作されることになることに留意されたい。例示的な実施形態では、出力ドライバ114は、ディスプレイデバイス118に結合された加速処理デバイス(accelerated processing device、「APD」)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のためにピクセル出力をディスプレイデバイス118に提供する。以下に更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、「SIMD」)パラダイムに従って計算を行う1つ以上の並列処理ユニットを含む。こうして、様々な機能は、本明細書では、APD116によって、又は、APD116と併せて行われるものとして説明されているが、様々な代替例では、APD116によって行われるものとして説明される機能は、追加的又は代替的に、ホストプロセッサ(例えば、プロセッサ102)によってドライブされない同様の能力を有する他のコンピューティングデバイスによって行われ、ディスプレイデバイス118にグラフィック出力を提供する。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を行い得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を行い得ることが企図される。
図2は、APD116上の処理タスクの実行に関する追加の詳細を示すデバイス100のブロック図である。プロセッサ102は、システムメモリ104内で、プロセッサ102による実行のための1つ以上の制御論理モジュールを維持する。制御論理モジュールは、オペレーティングシステム120と、カーネルモードドライバ122と、アプリケーション126と、を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の操作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102上で実行される他のソフトウェアのためのハードウェアへのインターフェースを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)にアプリケーションプログラミングインターフェース(application programming interface、「API」)を提供して、APD116の様々な機能にアクセスすることによって、APD116の操作を制御する。また、カーネルモードドライバ122は、APD116の処理構成要素(以下に更に詳細に説明するSIMDユニット138等)によって実行するためのプログラムをコンパイルするジャストインタイムコンパイラを含む。
APD116は、並列処理に適しているか又は並列処理に適し得るグラフィック動作及び非グラフィック動作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、プロセッサ102から受信したコマンドに基づいて、ピクセル動作、幾何学計算、及び、ディスプレイデバイス118への画像のレンダリング等のようなグラフィックスパイプライン動作を実行するために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する動作等のようなグラフィック動作に直接関連しない計算処理動作を実行する。
APD116は、プロセッサ102の要求で、SIMDパラダイムに従って並列の態様で操作を行う1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、したがって同じプログラムを実行するが、そのプログラムを異なるデータで、又は、異なるデータ使用して実行することができるものである。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行することができる。レーンは、全てのレーンが所定の命令を実行する必要がない場合、予測でオフに切り替えることができる。また、予測は、分岐制御フローを有するプログラムを実行するために使用することができる。より具体的には、制御フローが個々のレーンによって行われる計算に基づいている条件付き分岐又は他の命令を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスのシリアル実行が、任意の制御フローを可能にする。
計算ユニット132内の実行の基本的単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列で実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMDユニット138上の「ウェーブフロント(wavefront)」として同時に実行することができる。1つ以上のウェーブフロントが「ワークグループ」に含まれ、これは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行することができる。代替例では、ウェーブフロントは、単一のSIMDユニット138上で連続して、又は、異なるSIMDユニット138上で部分的に若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138上で同時に実行することができるワークアイテムの最大集合体と考えることができる。したがって、プロセッサ102から受信されたコマンドが、特定のプログラムを単一のSIMDユニット138上で同時に実行させることができない程度にプログラムが並列化されることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上に並列化されるか、又は、同じSIMDユニット138上で直列化される(又は必要に応じて並列化及び直列化の両方が行われる)ウェーブフロントに分けられる。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上の様々なウェーブフロントのスケジューリングに関連する操作を行う。
計算ユニット132によって与えられる並列処理は、ピクセル値計算、頂点変換及び他のグラフィック動作等のグラフィック関連動作に好適である。したがって、場合によっては、プロセッサ102からのグラフィックス処理コマンドを受け入れるグラフィック処理パイプライン134は、並列で実行するために計算タスクを計算ユニット132に提供する。
また、計算ユニット132は、グラフィックに関連しないか又はグラフィック処理パイプライン134の「通常の」動作の一部(例えば、グラフィック処理パイプライン134の動作に対して行われる処理を補足するために行われるカスタム動作)として行われない計算タスクを行うために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
図3は、図2に示すグラフィック処理パイプライン134の追加の詳細を示すブロック図である。グラフィック処理パイプライン134は、各々が特定の機能を行う論理段階(ステージ)を含む。段階は、グラフィック処理パイプライン134の機能のサブディビジョンを表す。各段階は、プログラマブル処理ユニット202内で実行されるシェーダプログラムとして部分的若しくは完全に、又は、プログラム可能な処理ユニット202の外部の固定機能非プログラム可能ハードウェアとして部分的若しくは完全に実装される。
入力アセンブラ段階302は、ユーザが満たしたバッファ(例えば、アプリケーション126等のプロセッサ102によって実行されるソフトウェアの要求で満たされたバッファ)を読み取り、そのデータを、パイプラインの残りの部分によって使用されるプリミティブに組み立てる。入力アセンブラ段階302は、ユーザが満たしたバッファに含まれるプリミティブデータに基づいて、異なるタイプのプリミティブを生成することができる。入力アセンブラ段階302は、パイプラインの残りの部分によって使用するための組み立てられた(アセンブルされた)プリミティブをフォーマットする。
頂点シェーダ段階304は、入力アセンブラ段階302によって組み立てられたプリミティブの頂点を処理する。頂点シェーダ段階304は、変換、スキニング、モーフィング及び各々の頂点照明(per-vertex lighting)等の様々な頂点ごとの動作を実行する。変換動作は、頂点の座標を変換するための様々な動作を含む。これらの動作は、モデリング変換、ビュー変換、投影変換、斜視分割及びビューポート変換のうち1つ以上を含む。本明細書では、そのような変換は、変換が行われる頂点の座標又は「位置」を変更すると考えられる。頂点シェーダ段階304の他の動作は、座標以外の属性を変更する。
頂点シェーダ段階304は、1つ以上の計算ユニット132上で実行される頂点シェーダプログラムとして部分的又は完全に実装される。頂点シェーダプログラムは、プロセッサ102によって提供され、コンピュータプログラマによって事前に書き込まれたプログラムに基づいている。ドライバ122は、そのようなコンピュータプログラムをコンパイルして、計算ユニット132内での実行に適した形式を有する頂点シェーダプログラムを生成する。
ハルシェーダ段階306と、モザイク化器(テッセレータ)段階308と、ドメインシェーダ段階310とは、モザイク化(テッセレーション)を実装するために共に動作し、モザイク化は、プリミティブを細分することによって、単純なプリミティブをより複雑なプリミティブに変換する。ハルシェーダ段階306は、入力プリミティブに基づいて、モザイク化のためのパッチを生成する。モザイク化器段階308は、パッチのためのサンプルセットを生成する。ドメインシェーダ段階310は、パッチのサンプルに対応する頂点の頂点位置を計算する。ハルシェーダ段階306及びドメインシェーダ段階310は、プログラマブル処理ユニット202上で実行されるシェーダプログラムとして実装され得る。
ジオメトリシェーダ段階312は、プリミティブ基準で頂点動作を実行する。ポイントスプリント拡張、動的粒子システム操作、ファーフィン生成、シャドウボリューム生成、シングルパスレンダリング-キューブマップ、プリミティブごとの材料交換、及び、プリミティブごとの材料設定等の動作を含む様々な異なるタイプの動作が、ジオメトリシェーダ段階312によって実行され得る。場合によっては、プログラマブル処理ユニット202上で実行されるシェーダプログラムは、ジオメトリシェーダ段階312の動作を実行する。
ラスタライザ段階314は、単純なプリミティブを受け入れてラスタライズし、上流に生成される。ラスタライズは、何れのスクリーンピクセル(又はサブピクセルサンプル)が特定のプリミティブによってカバーされることを決定することを含む。ラスタライズは、固定機能ハードウェアによって行われる。
ピクセルシェーダ段階316は、上流に生成されたプリミティブ及びラスタライズの結果に基づいて、スクリーンピクセルの出力値を計算する。ピクセルシェーダ段階316は、テクスチャメモリからテクスチャを適用することができる。ピクセルシェーダ段階316の動作は、プログラマブル処理ユニット202上で実行されるシェーダプログラムによって実行される。
出力マージ段階318は、ピクセルシェーダ段階316からの出力を受け入れ、それらの出力をマージし、z試験及びアルファブレンド等の動作を実行して、スクリーンピクセルの最終色を決定する。
テクスチャを定義するテクスチャデータは、テクスチャユニット320によって記憶及び/又はアクセスされる。テクスチャは、グラフィック処理パイプライン134内の様々な点で使用されるビットマップ画像である。例えば、場合によっては、ピクセルシェーダ段階316は、テクスチャをピクセルに適用して、レンダリングされる頂点の数を増加させることなく、(例えば、より「写実的な」外観を提供するために)見かけのレンダリングの複雑さを改善する。
場合によっては、頂点シェーダ段階304は、テクスチャユニット320からのテクスチャデータを使用して、例えば、改善された美観のために頂点を生成又は変更することによって、複雑さを高めるためにプリミティブを修正する。一例では、頂点シェーダ段階304は、テクスチャユニット320に記憶された高さマップを使用して、頂点の変位を修正する。このタイプの技術は、例えば、水をレンダリングするために使用される頂点の位置及び数を修正することによって、ピクセルシェーダ段階316でのみ使用されるテクスチャと比較して、より現実的な外観の水を生成するために使用され得る。場合によっては、ジオメトリシェーダ段階312は、テクスチャユニット320からのテクスチャデータにアクセスする。
圧縮して画像データを記憶するために、特定の圧縮フォーマットが本明細書において提示されている。圧縮フォーマットは、他のアプリケーションの中でも、マルチサンプリングされた画像を圧縮するために有用である。図4は、マルチサンプリングされた画像に関連する態様を示すグラフィック表示400である。プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、加速処理デバイス116、スケジューラ136、グラフィック処理パイプライン134、計算ユニット132及びSIMDユニット138を含むが、これらに限定されない、図において示され、並びに/又は本明細書に記載される様々な機能ユニットは、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装され得る。
図4では、いくつかのピクセル(例えば、ピクセル1、ピクセル2、ピクセル3)が示されている。マルチサンプリングされた画像は、これらのピクセルのグリッドを含む。各ピクセルは、1つ以上のサンプル(例えば、サンプル1、サンプル2、サンプル3、サンプル4)を含む。サンプルは、特定の色を有するピクセル内の特定の位置である。各サンプルは、同じピクセル内の他のサンプルの色とは異なる色を有することが可能である。図4では、各サンプルの陰影は、サンプルに割り当てられた色を表す。
3つの異なるピクセルが示されている。ピクセル1は、1のフラグメント化度(fragmentation degree)を有する。したがって、ピクセル1は完全にフラグメント化されておらず、ピクセル1内の全てのサンプルは同じ色を有する。ピクセル1は、ピクセル1、フラグメント1として示される単一のフラグメントとして表現可能である。「フラグメント」は、全てのサンプルが同じ色を有するピクセルの一部分である。
ピクセル2は、2のフラグメント化度を有する。左側の2つのサンプルは1つの色を有し、右側の2つのサンプルは異なる色を有する。したがって、ピクセル2-フラグメント1は、左側の2つのサンプルを有し、ピクセル2-フラグメント2は、右側の2つのサンプルを有する。
ピクセル3は、3のフラグメント化度を有する。ピクセル3、フラグメント1は、左上のサンプルを含む。ピクセル3、フラグメント2は、右の2つのサンプルを含む。ピクセル3、フラグメント3は、左下のサンプルを含む。圧縮フォーマットは、1つ以上のハードウェアバッファに記憶するために、これらのピクセルを記述するデータをどのように圧縮するかを記述する。
図5は、一例による、圧縮フォーマット500を示す図である。圧縮フォーマットで記憶されたデータと画像との相関関係を示すために、画像が示されている。画像は、画像ユニットを含み、その各々は、1つ以上のピクセルを含む。画像ユニットは、1つ以上のピクセルを含む画像の一部分である。
圧縮フォーマットは、メタデータバッファ及び色バッファの内容を含む。いくつかの実装では、メタデータバッファ及び色バッファは、本明細書において説明されるデータを記憶するように構成されているキャッシュのような物理的バッファである。他の実装では、これらのバッファの一方又は両方は、キャッシュ、メモリ、不揮発性メモリ又は任意の他の記憶装置等の任意のメモリ構造に記憶されたデータを表す。
メタデータバッファは、(圧縮を記述するデータである)メタデータ圧縮ユニットを記憶し、色バッファは、色データ圧縮ユニットを記憶する。1つのメタデータ圧縮ユニットと1つの色データ圧縮ユニットとの各組み合わせは、圧縮ユニットを形成する。各メタデータ圧縮ユニットは、1つの圧縮ユニットのみに関連付けられ、各色データ圧縮ユニットは、1つの圧縮ユニットのみに関連付けられている。
圧縮ユニットは、画像の画像ユニットの圧縮されたデータである。いくつかの実装では、圧縮ユニットは、一定量のデータであり、対応する画像ユニットを圧縮するために必要なデータの量に応じて、「空」又は「未使用」空間を有することができる。いくつかのそのような実装では、メタデータバッファ及び色バッファの各々は、専用キャッシュメモリ等の専用メモリを表し、又は、キャッシュメモリ等のメモリの専用部分を表す。いくつかのそのような実装では、各圧縮ユニットは、1つ以上のキャッシュラインに対応する。他の実装では、圧縮ユニットは可変量のデータであり、圧縮ユニットは一緒にパッキングされて、画像のデータの総量を低減する。
メタデータ圧縮ユニットは、例えば、フラグメント化度及びデータサイズを記憶し、いくつかの実装では、サンプリングレートを記憶する。追加的に、メタデータユニットは、圧縮されたデータがフラグメント化を有し、フラグメント化度が圧縮されたデータ内に記憶されることを示すことができる。
代替的には、メタデータユニットは、圧縮の形式が存在することを示すことができ、これは、圧縮されたデータサイズがブロックのサイズよりも小さいことを示すことができ、圧縮されたデータは、フラグメント化が存在すること、及び、その程度を示すことができる。
フラグメント化度は、メタデータ圧縮ユニットを含む圧縮ユニットに対応する画像ユニット内のピクセルの最大フラグメント化度を示す。フラグメント化度は、図4に示されている。また、メタデータ圧縮ユニットは、データサイズを記憶する。データサイズは、対応する色データ圧縮ユニットのサイズ(すなわち、メタデータ圧縮ユニットと同じ圧縮ユニットに属する色データ圧縮ユニットのビット数)を示す。
各色データ圧縮ユニットは、1つ以上のフラグメント色ポインタ及びフラグメント色データの1つ以上の項目を含む。フラグメント色ポインタは、特定のピクセルに対する特定のサンプルがどのフラグメント色を有するかを示す。いくつかの例では、各色データ圧縮ユニットは、対応する画像ユニット内の各サンプルに対する1つのフラグメント色ポインタを含む。したがって、各色データ圧縮ユニットは、対応する画像ユニット内のサンプルの数に等しい数のフラグメント色ポインタを含む。
所定のサンプルに対して、対応するフラグメント色ポインタは、対応するフラグメント色を示すか、又は、それを指し示す。いくつかの実装では、色データ圧縮ユニット内のフラグメント色ポインタの順序は、どのフラグメント色ポインタがどのサンプルに対応するかの識別を可能にする。
ピクセルごとに2つのサンプルを有する例では、第1のフラグメント色ポインタ(例えば、最低桁ビット)は、画像ユニット内の第1のピクセルの第1のサンプルに対応し、第2のフラグメント色ポインタ(例えば、次の最低桁ビット)は、第1のピクセルの第2のサンプルに対応し、第3のフラグメント色ポインタ(例えば、次の最低桁ビット)は、画像ユニットの第2のピクセルの第1のサンプルに対応し、第4のフラグメント色ポインタ(例えば、次の最低桁ビット)は、画像ユニットの第2のピクセルの第2のサンプルに対応する。
サンプリングレートがメタデータ圧縮ユニットに記憶される実装では、サンプリングレートは、対応する画像ユニット内のピクセルごとのサンプルの数を示す。
色データ圧縮ユニット内のフラグメント色は、特定のフラグメントの実際の色値を含む。説明したように、各フラグメント色ポインタは、これらのフラグメント色のうち何れが実際に対応するフラグメントに適用されるかを示す。フラグメント色ポインタと同様に、いくつかの実装では、フラグメント色は、色データ圧縮ユニット内に順次配置され、各フラグメント色ポインタは、対応するサンプルの個々のフラグメント色データ項目を識別する。いくつかの例では、フラグメント色は、個々のピクセルに特有である。言い換えれば、各ピクセルは、1つ以上の色フラグメントを記憶し、フラグメント色ポインタが、各ピクセルに対して、対応するサンプルに対する色がどのフラグメント色であるかを選択する。
フラグメント色データ自体を圧縮することができる。フラグメント色データに対する例示的な圧縮スキームは、デルタ色圧縮(DCC)であり、これは、ベース色(例えば、ピクセル又は画像ユニット等の他の圧縮グループ内のサンプルのうち何れかに対する色)及び他の各サンプルに対する色デルタを記憶し、ここで、色デルタは、ベース色と対応するサンプルの実際の色との差である。
フラグメント色ポインタ及びフラグメント色データは、可変長のものであり得る。一例では、各フラグメント色ポインタの長さは、各ピクセル内のフラグメントの最大数を表すために必要なビット数に等しい。一例では、4つのフラグメントが各ピクセルで許可され、画像ユニットの各ピクセルが最大4つのフラグメントを有することが許可されることを意味する。この例では、各サンプルに対するフラグメント色ポインタのサイズは2ビットである(2ビットは4つの可能な値を表すことができる)。別の例では、画像ユニットの各ピクセル内のフラグメントの最大数は2であり、各ピクセルが最大2つのフラグメントを含むことが可能であり、したがって各サンプルに対するフラグメント色ポインタのサイズが1ビットであることを意味する。いくつかの例では、圧縮アルゴリズムが異なるサイズのデータを生成することができるため、各フラグメント色は異なる長さを有することができる。更に、単一のフラグメントのみが含まれる場合(すなわち、1フラグメント)、全てのサンプルが第1のフラグメントを指し示すため、記憶されるフラグメントポインタがない(例えば、それらは0の長さのものである)。
図6は、従来の圧縮方法の例示的なフロー図600である。ステップ610では、cmask表面が読み取られる。ステップ620では、cmask表面がデコードされて、fmaskがどの程度フェッチされる必要があるかを見出す。
ステップ620においてfmaskがどの程度フェッチされる必要があるかが判定されると、fmaskがフェッチされ(ステップ630)、DCCキーが読み取られる(ステップ640)。フラグメント動作が行われ、色データの量が読み取られる(ステップ650)。
次いで、DCC圧縮された色データが読み取られ(ステップ660)、色データがDCCキーに基づいて展開される(ステップ670)。従来の方法では、色データ全体を記述するための2つの表面、つまり、色データフラグメント自体及び色データフラグメントに対するポインタ情報であるfmaskデータが存在する。すなわち、従来の圧縮方法では、2対の表面があり、一方の対の表面は、フラグメントポインタ及び圧縮メタデータ(fmask及びcmask表面)であり、他方の対は、色表面及びそのメタデータ(色データフラグメント及びDCCキー)である。
図7は、データ処理方法700の例示的なフロー図である。ステップ710では、DCCキーが読み取られる。次いで、色データは、DCCキーに基づいてフェッチされ、fmaskデータを含む(ステップ720)。ステップ730では、色データ(色フラグメント及びDCC圧縮を含む)が展開される。また、DCCのみが圧縮され、色データは、フラグメント圧縮された形式でキャッシュに記憶される。代替的には、色データが完全に圧縮されて記憶され得る。このシナリオでは、キャッシュにアクセスしてピクセル/サンプルを処理するときに展開が行われ、次いでデータをキャッシュに書き戻す場合に再圧縮される。
例示的な方法700では、ステップ720においてフェッチされるデータは、データに関するフラグメントポインタ(例えば、fmaskデータ)及び色フラグメントデータ自体を含む。データがフェッチされると、それが完全に圧縮形式で記憶され得るか、又は、DCCが展開され、フラグメント圧縮形式で記憶される。また、データは完全に展開され得る。
フラグメント圧縮形式で記憶する場合、フラグメント色データ及びフラグメントポインタは、個別のデータ構造に記憶され、これは、より容易な処理を提供することができる。また、フラグメント化度が特定の程度未満である場合、データは、フラグメント圧縮形式で記憶され得る。例えば、フラグメント化が程度1である場合、フラグメント圧縮形式で記憶され得る。この場合、フラグメントポインタに必要な任意の記憶装置が存在する必要はないことがある(例えば、1フラグメントのみが存在する場合、フラグメントポインタは全てそのフラグメントを指し示す)。
データをフラグメント圧縮形式に記憶するための性能上の利点が存在し得る。例えば、完全にカバーされたものが単一のフラグメントピクセル上のブレンドされたピクセルである場合、ピクセル全体に対して1回ブレンドすることができる。しかしながら、ピクセルが完全に展開される場合、全てのサンプルが同じ値を有していることを示す情報が失われる可能性があるため、ブレンダーは、1ピクセルごとに1回の代わりに、サンプルごとに1回ブレンド動作を行う必要がある。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、加速処理デバイス116、スケジューラ136、グラフィック処理パイプライン134、計算ユニット132及びSIMDユニット138を含むが、これらに限定されない、図において示され、並びに/又は、本明細書に記載される様々な機能ユニットは、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装することができる。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態機械が挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリスト等の他の中間データ(そのような命令は、コンピュータ可読媒体に記憶させることが可能である)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークであることができ、このマスクワークをその後半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、磁気媒体(例えば、内蔵ハードディスク及びリムーバブルディスク)、磁気光学媒体、並びに、光学媒体(例えば、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD))が挙げられる。
Claims (32)
- 色データを処理するための方法であって、
フラグメントポインタ及び色データを共に色バッファに記憶することと、
処理のためにフェッチする前記色データを示すデルタ色圧縮(DCC)キーを読み取ることと、
展開のために、読み取られたDCCキーに基づいて、前記フラグメントポインタ及び色データをフェッチすることと、を含む、
方法。 - 展開された色データを記憶することを更に含む、
請求項1の方法。 - 前記色データを圧縮された形式で記憶することを更に含む、
請求項1の方法。 - 前記色データを展開することを更に含む、
請求項3の方法。 - 前記DCCを展開することを更に含む、
請求項1の方法。 - 前記DCCをフラグメント圧縮された形式で記憶することを更に含む、
請求項5の方法。 - 前記フラグメント色データ及び前記フラグメントポインタは、前記色バッファ内の個別のデータ構造に記憶される、
請求項6の方法。 - 前記DCCは、フラグメント化に基づいて、フラグメント圧縮された形式で記憶される、
請求項6の方法。 - 前記フラグメント化が1に等しい場合、前記DCCが、フラグメント圧縮された形式で記憶される、
請求項8の方法。 - 色データを処理するための装置であって、
メモリと、
前記メモリと動作可能に結合されたプロセッサであって、前記メモリと通信するプロセッサと、を備え、
前記プロセッサは、
フラグメントポインタ及び色データを共に前記メモリ内の色バッファに記憶することと、
処理のためにフェッチする前記色データを示すデルタ色圧縮(DCC)キーを読み取ることと、
展開のために、読み取られたDCCキーに基づいて、前記フラグメントポインタ及び色データをフェッチすることと、
を行うように構成されている、
装置。 - 前記プロセッサは、展開された色データを前記メモリに記憶する、
請求項10の装置。 - 前記プロセッサは、前記色データを圧縮された形式で前記メモリに記憶する、
請求項10の装置。 - 前記プロセッサは、前記色データを展開する、
請求項12の装置。 - 前記プロセッサは、前記DCCを展開する、
請求項10の装置。 - 前記プロセッサは、前記DCCをフラグメント圧縮された形式で記憶する、
請求項14の装置。 - 前記フラグメント色データ及び前記フラグメントポインタは、前記色バッファ内の個別のデータ構造に記憶される、
請求項15の装置。 - 前記DCCは、フラグメント化に基づいて、フラグメント圧縮された形式で記憶される、
請求項15の装置。 - 前記フラグメント化が1に等しい場合、前記DCCは、フラグメント圧縮された形式で記憶される、
請求項17の装置。 - 色データを処理するためのコンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体には、プロセッサによって実行されると、前記プロセッサに動作を実行させる命令が記録されており、前記動作は、
フラグメントポインタ及び色データを共に色バッファに記憶することと、
処理のためにフェッチする前記色データを示すデルタ色圧縮(DCC)キーを読み取ることと、
展開のために、前記読み取られたDCCキーに基づいて、前記フラグメントポインタ及び色データをフェッチすることと、を含む、
コンピュータ可読記憶媒体。 - 展開された色データを記憶することを更に含む、
請求項19のコンピュータ可読記憶媒体。 - 色データを処理するための方法であって、
第1のデータを圧縮及び記憶することと、
第2のデータを圧縮及び記憶することであって、前記第2のデータは、前記第1のデータの圧縮に関連する情報を含む、ことと、
前記第2のデータに記憶された情報に基づいて、前記第1のデータを処理するためにフェッチすることと、を含む、
方法。 - 前記第1のデータは、フラグメント色データと、前記フラグメント色データに関連するフラグメントポインタと、を含む、
請求項21の方法。 - 前記フラグメント色データ及び前記フラグメントポインタは、前記色バッファ内の個別のデータ構造に記憶される、
請求項22の方法。 - 前記第2のデータは、処理のためにフェッチする前記色データを示すデルタ色圧縮(DCC)キーを含む、
請求項21の方法。 - 前記DCCは、フラグメント化に基づいて、フラグメント圧縮された形式で記憶される、
請求項24の方法。 - 前記フラグメント化が1に等しい場合、前記DCCは、フラグメント圧縮された形式で記憶される、
請求項25の方法。 - 色データを処理するための装置であって、
メモリと、
前記メモリと動作可能に結合されたプロセッサであって、前記メモリと通信するプロセッサと、を備え、
前記プロセッサは、
第1のデータを圧縮及び記憶することと、
第2のデータを圧縮及び記憶することであって、前記第2のデータは、前記第1のデータの圧縮に関連する情報を含む、ことと、
前記第2のデータに記憶された情報に基づいて、前記第1のデータを処理するためにフェッチすることと、
を行うように構成されている、
装置。 - 前記第1のデータは、フラグメント色データと、前記フラグメント色データに関連するフラグメントポインタと、を含む、
請求項27の装置。 - 前記フラグメント色データ及び前記フラグメントポインタは、前記色バッファ内の個別のデータ構造に記憶される、
請求項28の装置。 - 前記第2のデータは、処理のためにフェッチする前記色データを示すデルタ色圧縮(DCC)キーを含む、
請求項27の装置。 - 前記DCCは、フラグメント化に基づいて、フラグメント圧縮された形式で記憶される、
請求項30の装置。 - 前記フラグメント化が1に等しい場合、前記DCCは、フラグメント圧縮された形式で記憶される、
請求項31の装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063024254P | 2020-05-13 | 2020-05-13 | |
US63/024,254 | 2020-05-13 | ||
US17/135,978 US11978234B2 (en) | 2020-12-28 | Method and apparatus of data compression | |
US17/135,978 | 2020-12-28 | ||
PCT/US2021/031631 WO2021231328A1 (en) | 2020-05-13 | 2021-05-10 | Method and apparatus of data compression |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023525725A true JP2023525725A (ja) | 2023-06-19 |
Family
ID=78512723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022567598A Pending JP2023525725A (ja) | 2020-05-13 | 2021-05-10 | データ圧縮の方法及び装置 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP4150582A4 (ja) |
JP (1) | JP2023525725A (ja) |
KR (1) | KR20230010672A (ja) |
CN (1) | CN115552470A (ja) |
WO (1) | WO2021231328A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116469336B (zh) * | 2023-06-20 | 2023-08-18 | 联士光电(深圳)有限公司 | 一种彩色微显示芯片的数字驱动方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9530189B2 (en) * | 2009-12-31 | 2016-12-27 | Nvidia Corporation | Alternate reduction ratios and threshold mechanisms for framebuffer compression |
US9330475B2 (en) * | 2012-05-01 | 2016-05-03 | Qualcomm Incorporated | Color buffer and depth buffer compression |
US9495721B2 (en) * | 2012-12-21 | 2016-11-15 | Nvidia Corporation | Efficient super-sampling with per-pixel shader threads |
US9305368B2 (en) * | 2013-06-21 | 2016-04-05 | Intel Corporation | Compression and decompression of graphics data using pixel region bit values |
US10062143B2 (en) * | 2016-09-12 | 2018-08-28 | Advanced Micro Devices, Inc. | Method and apparatus for compressing randomly accessed data |
KR20180050140A (ko) * | 2016-11-04 | 2018-05-14 | 삼성전자주식회사 | 텍스쳐 압축 방법 및 장치, 그리고 텍스쳐 압축 해제 방법 및 장치 |
US9912957B1 (en) * | 2017-04-01 | 2018-03-06 | Intel Corporation | Lossless compression for multisample render targets alongside fragment compression |
-
2021
- 2021-05-10 KR KR1020227042802A patent/KR20230010672A/ko unknown
- 2021-05-10 CN CN202180034571.5A patent/CN115552470A/zh active Pending
- 2021-05-10 JP JP2022567598A patent/JP2023525725A/ja active Pending
- 2021-05-10 EP EP21803494.0A patent/EP4150582A4/en active Pending
- 2021-05-10 WO PCT/US2021/031631 patent/WO2021231328A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021231328A1 (en) | 2021-11-18 |
EP4150582A4 (en) | 2024-04-03 |
KR20230010672A (ko) | 2023-01-19 |
US20210358174A1 (en) | 2021-11-18 |
EP4150582A1 (en) | 2023-03-22 |
CN115552470A (zh) | 2022-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11024007B2 (en) | Apparatus and method for non-uniform frame buffer rasterization | |
US9177351B2 (en) | Multi-primitive graphics rendering pipeline | |
JP7122396B2 (ja) | グラフィックスパイプラインにおけるメモリ使用削減のためのコンパイラ支援技法 | |
KR102480787B1 (ko) | 순서에 관계 없는 캐시 리턴 | |
US20170345121A1 (en) | Bandwidth-efficient lossless fragment color compression of multi-sample pixels | |
US20200167076A1 (en) | Compressed memory access improvement through compression-aware partial writes | |
JP2023525725A (ja) | データ圧縮の方法及び装置 | |
US20220414939A1 (en) | Render target compression scheme compatible with variable rate shading | |
US11978234B2 (en) | Method and apparatus of data compression | |
US11880924B2 (en) | Synchronization free cross pass binning through subpass interleaving | |
US20210304488A1 (en) | Sampling for partially resident textures | |
US11900499B2 (en) | Iterative indirect command buffers | |
US11972518B2 (en) | Hybrid binning | |
US20220414950A1 (en) | Per-pixel variable rate shading controls using stencil data | |
US20230377086A1 (en) | Pipeline delay elimination with parallel two level primitive batch binning | |
JP2023532433A (ja) | マルチサンプルアンチエイリアシングのためのロード命令 | |
WO2021262370A1 (en) | Fine grained replay control in binning hardware |