(57)【特許請求の範囲】
【請求項１】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定するためにプロセッサを使用する段階と、
ＺｍｉｎおよびＺｍａｘをスワップすることにより、適応デプスオフセット圧縮を示す段階と、
複数のＺｍｉｎ残差に対するおよび複数のＺｍａｘ残差に対する異なる数の残差ビットを使用する段階と、
を備える方法。
【請求項２】
適応オフセットが利用される場合、ＺｍｉｎおよびＺｍａｘに関してエンコードされる前記複数のＺｍｉｎ残差および前記複数のＺｍａｘ残差に対する複数の残差ビットの分配を示す複数のビットを格納する段階を含む、請求項１に記載の方法。
【請求項３】
残差ごとに第１の数のビットを用いてＺｍｉｎに対してエンコードされる複数のサンプルに対して前記複数の残差ビットを格納する段階と、第２の数のビットを用いてＺｍａｘに対してエンコードされる複数のサンプルに対して前記複数の残差を格納する段階と、を含み、前記第１の数および前記第２の数は異なる、請求項２に記載の方法。
【請求項４】
デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対して複数のヒストグラムを生成することにより、Ｚｍｉｎ範囲に属するかまたはＺｍａｘ範囲に属するかを決定する段階であり、各ビンは、前記複数のＺｍｉｎ残差および前記複数のＺｍａｘ残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す、段階を含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定するためにプロセッサを使用する段階と、
デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対して複数のヒストグラムを生成することにより、Ｚｍｉｎ範囲に属するかまたはＺｍａｘ範囲に属するかを決定する段階であり、各ビンは、複数のＺｍｉｎ残差および複数のＺｍａｘ残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す、段階と、
前記複数のＺｍｉｎ残差に対するおよび前記複数のＺｍａｘ残差に対する異なる数の残差ビットを使用する段階と、
を備える方法。
【請求項６】
前記複数のヒストグラムのうちの少なくとも１つを用いる段階と、総ビット数における最小増加を生成する範囲に対して複数の残差ビットの前記数を増大する段階と、を含む、請求項４または５に記載の方法。
【請求項７】
Ｚｍａｘヒストグラムの累積和を算出する段階と、Ｚｍａｘに対する複数の残差ビットの分配を示す複数のビットの複数の値に対して全数検索を実行する段階と、を含む、請求項４から６のいずれか１項に記載の方法。
【請求項８】
Ｚｍｉｎに対してエンコードされるべき複数のサンプルの残りの数を判断する段階と、Ｚｍｉｎに対して総数のサンプルをエンコードするためのビット配分を判断する段階と、残りのビット配分までの前記Ｚｍａｘヒストグラムの前記累積和がＺｍａｘに対してエンコードされる必要のある複数のサンプルの残りの数と少なくとも同じであるかどうかを判断する段階と、を含む、請求項７に記載の方法。
【請求項９】
１つの組み合わせにより、より支配的でない範囲の分散を、および３つの組み合わせにより、より支配的な範囲の分散を、示すために、サンプルごとに２つのビットを格納する段階を含む、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定するためにプロセッサを使用する段階と、
１つの組み合わせにより、より支配的でない範囲の分散を、および３つの組み合わせにより、より支配的な範囲の分散を、示すために、サンプルごとに２つのビットを格納する段階と、
複数のＺｍｉｎ残差に対するおよび複数のＺｍａｘ残差に対する異なる数の残差ビットを使用する段階と、
を備える方法。
【請求項１１】
タイルごとに余分の単一ビットを格納することにより、前記範囲の分散を表す１または２つのビットを使うかを示す段階を含む、請求項９または１０に記載の方法。
【請求項１２】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定する段階と、
ＺｍｉｎおよびＺｍａｘをスワップすることにより、適応デプスオフセット圧縮を示す段階と、
複数のＺｍｉｎ残差に対するおよび複数のＺｍａｘ残差に対する異なる数の残差ビットを使用する段階と、
を備える方法をプロセッサに実行させるプログラム。
【請求項１３】
前記方法は、適応オフセットが利用される場合、ＺｍｉｎおよびＺｍａｘに関してエンコードされる前記複数のＺｍｉｎ残差および前記複数のＺｍａｘ残差に対する複数の残差ビットの分配を示す複数のビットを格納する段階を含む、請求項１２に記載のプログラム。
【請求項１４】
前記方法は、残差ごとに第１の数のビットを用いてＺｍｉｎに対してエンコードされる複数のサンプルに対して前記複数の残差ビットを格納する段階と、第２の数のビットを用いてＺｍａｘに対してエンコードされる複数のサンプルに対して前記複数の残差を格納する段階と、を含み、前記第１の数および前記第２の数は異なる、請求項１３に記載のプログラム。
【請求項１５】
前記方法は、デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対して複数のヒストグラムを生成することにより、Ｚｍｉｎ範囲に属するかまたはＺｍａｘ範囲に属するかを決定する段階であり、各ビンは、前記複数のＺｍｉｎ残差および前記複数のＺｍａｘ残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す、段階を含む、請求項１２から１４のいずれか一項に記載のプログラム。
【請求項１６】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定する段階と、
デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対して複数のヒストグラムを生成することにより、Ｚｍｉｎ範囲に属するかまたはＺｍａｘ範囲に属するかを決定する段階であり、各ビンは、複数のＺｍｉｎ残差および複数のＺｍａｘ残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す、段階と、
前記複数のＺｍｉｎ残差に対するおよび前記複数のＺｍａｘ残差に対する異なる数の残差ビットを使用する段階と、
を備える方法をプロセッサに実行させるプログラム。
【請求項１７】
前記方法は、前記複数のヒストグラムのうちの少なくとも１つを用いる段階と、総ビット数における最小増加を生成する範囲に対して複数の残差ビットの前記数を増大する段階と、を含む、請求項１５または１６に記載のプログラム。
【請求項１８】
前記方法は、Ｚｍａｘヒストグラムの累積和を算出する段階と、Ｚｍａｘに対する複数の残差ビットの分配を示す複数のビットのすべての可能な値をテストする段階と、を含む、請求項１５から１７のいずれか１項に記載のプログラム。
【請求項１９】
前記方法は、Ｚｍａｘに対してエンコードされるべき複数のサンプルの残りの数を判断する段階と、Ｚｍａｘに対して総数のサンプルをエンコードするためのビット配分を判断する段階と、前記ビット配分までの前記Ｚｍａｘヒストグラムの前記累積和がＺｍａｘに対してエンコードされる必要のある複数のサンプルの前記数と少なくとも同じであるかどうかを判断する段階と、を含む、請求項１８に記載のプログラム。
【請求項２０】
前記方法は、１つの組み合わせにより、より支配的でない範囲の分散を、および３つの組み合わせにより、より支配的な範囲の分散を、示すために、サンプルごとに２つのビットを格納する段階を含む、請求項１２から１９のいずれか一項に記載のプログラム。
【請求項２１】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定するためにプロセッサを使用する段階と、
１つの組み合わせにより、より支配的でない範囲の分散を、および３つの組み合わせにより、より支配的な範囲の分散を、示すために、サンプルごとに２つのビットを格納する段階と、
複数のＺｍｉｎ残差に対するおよび複数のＺｍａｘ残差に対する異なる数の残差ビットを使用する段階と、
を備える方法をプロセッサに実行させるプログラム。
【請求項２２】
前記方法は、タイルごとに余分の単一ビットを格納することにより、前記範囲の分散を表す１または２つのビットを使うかを示す段階を含む、請求項２０または２１に記載のプログラム。
【請求項２３】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定し、複数のＺｍｉｎ残差に対するおよび複数のＺｍａｘ残差に対する異なる数の残差ビットを使用するプロセッサと、
前記プロセッサに連結されたメモリと、
を備え、
前記プロセッサは、ＺｍｉｎおよびＺｍａｘをスワップすることにより、適応デプスオフセット圧縮を示す装置。
【請求項２４】
適応オフセットが利用される場合、前記プロセッサは、ＺｍｉｎおよびＺｍａｘに関してエンコードされる前記複数のＺｍｉｎ残差および前記複数のＺｍａｘ残差に対する複数の残差ビットの分配を示す複数のビットを格納する、請求項２３に記載の装置。
【請求項２５】
前記プロセッサは、残差ごとに第１の数のビットを用いてＺｍｉｎに対してエンコードされる複数のサンプルに対して前記複数の残差ビットを格納し、第２の数のビットを用いてＺｍａｘに対してエンコードされる複数のサンプルに対して前記複数の残差を格納し、前記第１の数および前記第２の数は異なる、請求項２４に記載の装置。
【請求項２６】
前記プロセッサは、デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対して複数のヒストグラムを生成することにより、Ｚｍｉｎ範囲に属するかまたはＺｍａｘ範囲に属するかを決定し、各ビンは、前記複数のＺｍｉｎ残差および前記複数のＺｍａｘ残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す、請求項２３から２５のいずれか一項に記載の装置。
【請求項２７】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定し、複数のＺｍｉｎ残差に対するおよび複数のＺｍａｘ残差に対する異なる数の残差ビットを使用するプロセッサと、
前記プロセッサに連結されたメモリと、
を備え、
前記プロセッサは、デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対して複数のヒストグラムを生成することにより、Ｚｍｉｎ範囲に属するかまたはＺｍａｘ範囲に属するかを決定し、各ビンは、前記複数のＺｍｉｎ残差および前記複数のＺｍａｘ残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す装置。
【請求項２８】
デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定し、複数のＺｍｉｎ残差に対するおよび複数のＺｍａｘ残差に対する異なる数の残差ビットを使用するプロセッサと、
前記プロセッサに連結されたメモリと、
を備え、
前記プロセッサは、１つの組み合わせにより、より支配的でない範囲の分散を、および３つの組み合わせにより、より支配的な範囲の分散を、示すために、サンプルごとに２つのビットを格納する装置。
【発明の詳細な説明】
【背景技術】
【０００１】
これは、該してコンピュータのグラフィック処理、特にデプスオフセット圧縮に関する。
【０００２】
デプスオフセット圧縮では、ピクセルのタイル又は矩形領域の最小デプスＺｍｉｎ及び最大デプスＺｍａｘが格納される。各サンプルのデプスは、Ｚｍｉｎ又はＺｍａｘのいずれかに対してしてエンコードされる。残りのビットは、各サンプルがＺｍｉｎ又はＺｍａｘに対して取られるかどうかを示し、Ｚｍｉｎ又はＺｍａｘのいずれかに対する各サンプルに対する差分値を特定する所謂残差ビットをエンコードするマスクを格納するために使われる。既存のデプスオフセット圧縮技術は、同じ数の残差あたりのビットを使う。
【０００３】
圧縮方法は、電力を減少し及び／又はパフォーマンスを向上し得るため、グラフィックハードウェアキテクチャにとってますます重要になっている。圧縮は、すべての残差がタイルの所望のビット配分内で一致する程度に十分小さい場合、成功する。そうでなければ、データは、非圧縮形式で格納される又は幾つかの他の技術を使って圧縮されてよい。同じデプスオフセット圧縮は、カラーバッファ圧縮に対する個々のカラー成分に使用することもできる。
【図面の簡単な説明】
【０００４】
幾つかの実施形態が、次の図面を参照して記載される。
【図１】一実施形態の概略図である。
【図２】一実施形態のフローチャートである。
【図３】一実施形態に従う残差を分割するためのフローチャートである。
【図４】残差を分割するための別の技術のフローチャートである。
【図５】一実施形態に従って、図４に示されるように、すべての可能なＺｍｉｎビットをテストする方法を示すフローチャートである。
【図６】一実施形態に従って、Ｚｍｉｎ及びＺｍａｘの歪んだ分配を取り扱うためのフローチャートである。
【図７】縦軸上にＺｍｉｎに対して割り当てられたビット及び横軸内のタイルを横切るサンプル位置のグラフである。
【図８】一実施形態に従ってどう分配が処理できるかを示す同じグラフの仮説例の図である。
【図９】一実施形態のシステム図である。
【図１０】一実施形態の正面図である。
【発明を実施するための形態】
【０００５】
残差あたりの同じ数のビットを使うことはビットのベストな分配ではないため、残差あたりのビットは、タイルのデプスのコンテンツに応じて、代わりに分散されてよい。例えば、Ｚｍａｘに近いデプス差が小さい場合、より少数のビットをＺｍａｘに対してエンコードされるサンプルに対する残差に費やすことができる。それにより、より多くのビットを、Ｚｍｉｎに対してエンコードされるサンプルの残差に費やすことができる。その結果、より多くのタイルを、必要な数のビットに圧縮することができる。
【０００６】
図１において、グラフィクスプロセッサ１０は、ラスタライズユニット４０を含むラスタライズパイプライン、テクスチャ及びフラグメント処理ユニット４２、及びデプス又はＺ比較及び混合ユニット４４を含む。これらのユニットのそれぞれは、幾つかの実施形態において、ソフトウェア又はハードウェアにより全体的又は部分的に実装されてよい。
【０００７】
テクスチャ及びフラグメント処理ユニット４２は、テクスチャキャッシュ４６に連結される。キャッシュ４６は、順に、テクスチャ解凍モジュール５４を介してメモリ区画６０に連結される。従って、キャッシュに格納されるテクスチャ情報は、メモリ区画とキャッシュの間で解凍されてよい。
【０００８】
デプス比較及び混合ユニット４４は、デプス・バッファ・キャッシュ４８、カラー・バッファ・キャッシュ５０、及びタイル・テーブル・キャッシュ５２に連結される。次に、デプス・バッファ・キャッシュ４８は、デプス・バッファ・コーダ／デコーダ（コーデック）５６を介してメモリ区画６０に連結される。同様に、カラー・バッファ・キャッシュ５０は、カラー・バッファ・コーダ／デコーダ（コーデック）５８を介してメモリ区画６０に連結する。メモリ区画６０は、システムメモリの一部でもよいダイナミックランダムアクセスメモリ（ＤＲＡＭ）６２，６４，６６及び６８に連結されてよい。幾つかの実施形態では、テクスチャキャッシュ、デプス・バッファ・キャッシュ、及びカラー・バッファ・キャッシュを含む統合キャッシュを使ってもよい。
【０００９】
幾つかの実施形態では、統合コーデックがユニット５４，５６及び５８を置き換えてもよい。様々な構成が、著作「Ｆｌｏａｔｉｎｇ  Ｐｏｉｎｔ  Ｂｕｆｆｅｒ  Ｃｏｍｐｒｅｓｓｉｏｎ  ｉｎ  ａ  Ｕｎｉｆｉｅｄ  Ｃｏｄｅｃ  Ａｒｃｈｉｔｅｃｔｕｒｅ，  Ｓｔｒｏｍ，ｅｔ  ａｌ．  Ｇｒａｐｈｉｃｓ  Ｈａｒｄｗａｒｅ（２００８）」に記載されている。
【００１０】
適応デプスオフセット圧縮の一実施形態に従って、ビットは、ＺｍｉｎがＺｍａｘより小さいかどうかテストすることにより抽出される。そうであれば、抽出されたビットはゼロに等しくセットされ、そうでなければ、抽出されたビットは１に等しくセットされる。一実施形態では、標準デプスオフセット圧縮が使われる場合、これはビットをゼロにセットすることによりフラグされ、適応デプスオフセット圧縮が使われる場合、ビットを１にセットすることによりフラグされる（しかし、逆のビットスキームが使われてもよい）。一実施形態では、両標準デプスオフセット及び適応デプスオフセット圧縮がタイルに適用され、タイルを首尾よく圧縮することができる１つめのアルゴリズムが選択される。タイルの特性に基づいて、どの圧縮アルゴリズムを使うか前もって選択して、それにより両圧縮アルゴリズムを動作する余分な動作をセーブする経験則を使うことも可能である。その結果、適応結果が、標準デプスオフセット圧縮より常に良い又は少なくとも等しい。タイルの一部がクリアされると、ゼロビットが、Ｚｍａｘ（すなわち、クリアされたサンプル）に対してエンコードされるサンプルに割り当てられてよいし、より多くのビットが他の残差に割り当てられてよい。残差を与えられたビット分配とリバランスするメカニズムは、さらに、タイルを首尾よく圧縮する可能性を増大する。
【００１１】
適応デプスオフセット圧縮は、デプスサンプルがＺｍｉｎ又はＺｍａｘに対してエンコードされるかどうかを示すために、タイルごとにＺｍｉｎ及びＺｍａｘ値を格納するとともに、デプスサンプルごとに１ビットを格納する。これらの後者のビットは、タイルに対して選択マスクと呼ぶ。圧縮表現において、Ｚｍｉｎ、Ｚｍａｘ、及び選択マスクがエンコードされる。
【００１２】
ＺｍｉｎがＺｍａｘより小さい場合、表現の残りは、標準デプスオフセット圧縮を含む。ただし、各残差は同じ数のビットを有する。しかし、ＺｍｉｎがＺｍａｘより大きい又は等しい場合、圧縮表現は適応デプスオフセット圧縮されたタイルを含む。ただし、Ｚｍｉｎ及びＺｍａｘ値はスワップされる。
【００１３】
タイルが適応デプスオフセット圧縮モードにある場合、残差ビットの分配を示すために、Ｚｍｉｎ、Ｚｍａｘ、及び選択マスクが格納され、そしてＮ個のビットが格納される。これらのＮ個のビットの値は、Ｚｍｉｎに対してエンコードされるデプスサンプルに対して使われるビットの数であるＺｍｉｎｂｉｔｓにより表されてよい。類似の標記Ｚｍａｘｂｉｔｓは、Ｚｍａｘに対する対応するビットに対して使われてよい。タイルごとにＳ個のデプスサンプルがあり、Ｚｍｉｎに対してエンコードされるＭ個のデプスサンプルがある場合、Ｚｍａｘに対してエンコードされるＳ−Ｍ個のデプスサンプルがあることになる。なお、Ｍは、選択マスクから抽出することができる。
【００１４】
Ｚｍｉｎ、Ｚｍａｘ、選択マスク、及びデプスオフセット又は適応デプスオフセット圧縮が使われるかどうかの表示をエンコードした後、残差のための余分のＬ個のビットがある。Ｚｍａｘに対してエンコードされる値に対するビットの最大数は、Ｚｍａｘｂｉｔｓ＝ｆｌｏｏｒ（（Ｌ−Ｚｍｉｎｂｉｔｓ×Ｍ）／（Ｓ−Ｍ））と算出される。
【００１５】
図２に示される適応デプスオフセット圧縮を実行するためのシーケンスは、ソフトウェア、ファームウェア、及び／又はハードウェアにおいて実装される。ソフトウェア及びファームウェア実施形態では、磁気、光、又は半導体ストレージのような１又は複数の非一時的コンピュータ可読媒体に格納されるコンピュータで実行される命令により実装されてよい。例えば、図１を参照して、幾つかの例を言及すると、命令は、キャッシュ５０又はＤＲＡＭ６２，６４、６６、又は６８に格納されてよい。
【００１６】
シーケンスは、ブロック７２に示すように、Ｚｍｉｎ、Ｚｍａｘ、及び選択マスクを格納することにより始まる。そして、ダイアモンド７４でのチェックは、標準デプスオフセット又は適応デプスオフセットアルゴリズムがタイルを首尾よく圧縮できたかどうかを判断する。タイルが標準デプスオフセットを用いて圧縮できる場合、圧縮表現は、先行技術に従って格納される。タイルが適応デプスオフセットを用いて格納できる場合（ダイアモンド７５）、ブロック７６に示すように、Ｚｍｉｎ及びＺｍａｘ値がスワップされる。次に、ブロック７８に示すように、Ｎ個のビットが、残差ビットの分配を示すために格納される。そして、ブロック８０に示すように、残差が格納される。
【００１７】
標準デプスオフセットと適応デプスオフセットのいずれもタイルを首尾よく圧縮できない場合、非圧縮形式で格納される（ブロック８３）、又は別のアルゴリズムを用いて圧縮される（ブロック８２）。
【００１８】
図７を参照すると、この例において、サンプルＲは残差範囲内で表せないため、標準デプスオフセットアルゴリズムはタイルの圧縮に失敗する。対照的に、図８に示すように、同じ分配が、Ｚｍｉｎ及びＺｍａｘに対して残差ビットの数を最適に割り当てることにより処理することができることで、適応Ｚｍｉｎ範囲により多くのビットが存在し、その結果、タイルは、両図面で同じビット配分の範囲内で表すことができる。
【００１９】
Ｚｍｉｎ又はＺｍａｘ範囲に属するものとして各デプスサンプルを分類するためのアルゴリズムは、Ｚｍｉｎ／Ｚｍａｘ参照デプスからの距離を用いるのではなく、タイルをエンコードするのに要するビットの数を減少する。例えば、サンプルの大多数がＺｍｉｎの近くにあると、Ｚｍａｘに対して範囲外のサンプルを表し、Ｚｍａｘに対してエンコードされる比較的少ないサンプルのビットコストを増大するのがより良い。
【００２０】
２ステップアルゴリズムでは、第１ステップが２つのヒストグラムを、Ｚｍｉｎ及びＺｍａｘに対して各１つ作成する。各ヒストグラムのビンは、残差を表すビット数を前提として、どれだけの数のサンプルをその値に対してエンコードすることができるかを表す。第２ステップでは、最小及び最大残差の数がゼロに初期化され、各範囲に対してエンコードされたサンプルの数がゼロに初期化される。そして、ヒストグラムが使われ、残差ビットの数が、最小限、総ビット数を増大する範囲に対して増大される。プロセスは、すべてのサンプルがエンコードされるまで、又は許容ビット配分を超えるまで、繰り返す。
【００２１】
Ｚｍｉｎ又はＺｍａｘに属するように各デプスサンプルを分類するための図３に示されるシーケンスは、ソフトウェア、ファームウェア、及び／又はハードウェアにおいて実装されてよい。ソフトウェア及びファームウェア実施形態では、磁気、光、又は半導体ストレージのような１又は複数の非一時的コンピュータ可読媒体に格納されるコンピュータで実行される命令により実装されてよい。例えば、一実施形態において、図１を参照して、幾つかの例を言及すると、命令は、キャッシュ５０又はＤＲＡＭ６２，６４、６６、又は６８に格納されてよい。
【００２２】
シーケンスは、ブロック８４において、Ｚｍｉｎ及びＺｍａｘに対してそれぞれヒストグラムを作成することにより始まる。そして、ビットの数及び範囲ごとにエンコードされるサンプルの数が、ブロック８６に示すように、初期化される。その後、最小限、総ビット配分を増大する残差ビットが増大される（ブロック８８）。ダイアモンド９０でのチェックは、すべてのサンプルがここでエンコードされるかどうか、又は許容ビット配分を超えたかどうかを判断する。そうである場合、フローは終了し、そうでなければ、フローはブロック８８を介して戻って繰り返す。
【００２３】
残差を分割する別の方法によると、上記の残差を分割する方法の第２ステップが、解が存在する場合に解を見つけることを保証する全数検索を取得するよう変更される。まず、Ｚｍｉｎヒストグラムの累積和が算出される。その後に、Ｚｍｉｎビットのすべての可能な値が、最小から最高まで、解が見つかるまで、テストされる。
【００２４】
図４に示される残差を分割するこの技術のシーケンスは、ソフトウェア、ファームウェア、及び／又はハードウェアにおいて実装されてよい。ソフトウェア及びファームウェア実施形態では、磁気、光、又は半導体ストレージのような１又は複数の非一時的コンピュータ可読媒体に格納されるコンピュータで実行される命令により実装されてよい。図１を参照して、幾つかの例を言及すると、命令は、キャッシュ５０又はＤＲＡＭ６２，６４、６６、又は６８に格納されてよい。
【００２５】
シーケンスは、ブロック９２に示すように、Ｚｍａｘヒストグラムの累積和を算出することにより開始する。そして、すべての可能なＺｍｉｎｂｉｔｓがブロック９４に示されるようにテストされ、解が見つかるまで又はＺｍｉｎｂｉｔｓに対して試行する適当な値がなくなるまで、テストが続く。
【００２６】
ブロック９４に示される与えられたＺｍｉｎｂｉｔｓ値のテストは、次の通りである。Ｚｍｉｎｂｉｔｓを用いてＺｍｉｎに対してエンコードできるサンプルの数Ｍは、Ｚｍｉｎヒストグラムから次の値を加えることにより決めて、Ｚｍｉｎヒストグラムの累積和を効率良く算出する。エンコードできない、つまりＺｍａｘに対してエンコードすべきサンプルの数はＳ−Ｍである。これらのサンプルをエンコードするためのビット配分は、上記の通り、Ｚｍａｘｂｉｔｓ＝ｆｌｏｏｒ（（Ｌ−Ｍ×Ｚｍｉｎｂｉｔｓ）／（Ｓ−Ｍ））である。Ｚｍａｘｂｉｔｓを用いてＺｍａｘに対してエンコードできるサンプルの数Ｋは、Ｚｍａｘヒストグラムの累積和内で検索される。最後に、Ｋ＋Ｍ＞＝Ｓの場合、すべてのサンプルはテストされたＺｍｉｎｂｉｔｓ及びＺｍａｘｂｉｔｓの組み合わせを用いてエンコードでき、解が見つけられる。全ての可能なＺｍｉｎｂｉｔｓを試行した後に解が見つからなかった場合、タイルは圧縮できない。
【００２７】
図５に示されるシーケンスは、与えられたＺｍｉｎｂｉｔｓ値に対してこのテストを実行するために用いてよい。ソフトウェア、ファームウェア、及び／又はハードウェアに実装されてよい。ソフトウェア及びファームウェア実施形態では、磁気、光、又は半導体ストレージのような１又は複数の非一時的コンピュータ可読媒体に格納されるコンピュータで実行される命令により実装されてよい。図１を参照して、幾つかの例を言及すると、それは例えばキャッシュ５０又はＤＲＡＭ６２，６４、６６、又は６８に格納されてよい。
【００２８】
シーケンスは、ブロック９６に示すように、サンプルの数Ｍを決定することにより始まる。そして、ブロック９８に示すように、ＫをＺｍａｘヒストグラムの累積和内で検索する。
【００２９】
ダイアモンド１００でのチェックは、Ｋ＋ＭがＳより大きい又は等しいかどうかを判断する。もしそうであれば、ブロック１０２に示されるように、すべてのサンプルがエンコードされる。そうでなければ、ブロック１０４に示されるように、サンプルは、この技術を用いて圧縮できない。
【００３０】
Ｚｍｉｎ及びＺｍａｘに関連するサンプルの分配が高く偏っている場合、一方又は他方の極値がそれに関連する少数のサンプルを有するため、範囲の分散はサンプルごとのビットの数に影響することなく変更することができる。選択マスクは、拡張して、サンプルあたり２つのビットを格納する。その結果、４つの可能な組み合わせがあり、１つのみが、支配的でない極値であるＺｍｉｎ又はＺｍａｘのいずれかが参照されることを意味する。残りの３つの組み合わせは、より支配的な一方が参照されることを意味する。同じ極値を表すこれらの３つの異なる残りの組み合わせは、マスクコードに応じて残差に００、０１、又は１０のような２つの最上位ビットをプリンペンドすることにより、１つ半のビットの余分の残差を提供する。
【００３１】
従って、非支配的な極値でのアドレス指定可能範囲は、サンプルあたり１ビットより少なくＬに利用できるため、半分まで減る。支配的極値のアドレス指定可能範囲は５０％拡張されるとともに範囲は３倍になるが、正確に同じ数の合計ビットを使用するとともにサンプルマスクごとに単一ビットを使用するのと比べて、Ｌにサンプルあたり１ビットより少ないビットが利用可能である。
【００３２】
この２つのビットのサンプルマスクエンコーディングが使用されるか否かは、様々な手段によってデコーダに搬送される。例えば、タイルあたり単一のエクストラビットを格納することにより、システムは、与えられたタイルに適用されるマスクモードを示すことができる。残差を分割することは、通常のとおり継続しながら本明細書に記載の５０％の増加又は減少に応じて、単にビンを拡大又は縮小することによりゆがんだ分配で動作するように拡張することもできる。
【００３３】
必要ならば、Ｚｍｉｎｂｉｔｓは、順に量子化して、ストレージにセーブすることができる。欠点は、少数の異なる分配が使用可能になることである。１つは、線形又は非線形量子化のいずれかを使うことができる。
【００３４】
図６に示されるシーケンスは、関連するサンプルの分配が高くゆがんでいる場合に使われ得る。ソフトウェア、ファームウェア、及び／又はハードウェアにより実装されてよい。ソフトウェア及びファームウェア実施形態では、磁気、光、又は半導体ストレージのような１又は複数の非一時的コンピュータ可読媒体に格納されるコンピュータで実行される命令により実装されてよい。例えば、図１を参照して、幾つかの例を言及すると、命令は、キャッシュ５０又はＤＲＡＭ６２，６４、６６、又は６８に格納されてよい。
【００３５】
シーケンスは、ダイアモンド１０６において、２つのビットコードが指定されたかどうか判断することにより始まる。もしそうであれば、２つのビットは、ブロック１０８に示されるように、サンプルごとに格納される。そして、２つのビットコードは、ブロック１１０に示されるように、マスクコードに応じて残差にプリペンドされる。
【００３６】
図９は、システム７００の実施形態を示す。実施形態では、システム７００はメディアシステムであってよいが、システム７００はこのコンテキストに限定されない。例えば、システム７００は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット、又はスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス等に組み込まれてよい。
【００３７】
実施形態では、システム７００は、ディスプレイ７２０に連結されたプラットフォーム７０２を備える。プラットフォーム７０２は、コンテンツサービスデバイス７３０又はコンテンツ配信デバイス７４０のようなコンテンツデバイス又は他の同様のコンテンツソースからコンテンツを受信してよい。１又は複数のナビゲーション機能を備えるナビゲーションコントローラ７５０は、例えば、プラットフォーム７０２及び／又はディスプレイ７２０と相互伝達する。これらのコンポーネントの其々は、以下に詳細に記載される。
【００３８】
実施形態では、プラットフォーム７０２は、チップセット７０５、プロセッサ７１０、メモリ７１２、ストレージ７１４、グラフィックサブシステム７１５、アプリケーション７１６、及び／又は無線７１８の任意の組み合わせを備えてよい。チップセット７０５は、プロセッサ７１０、メモリ７１２、ストレージ７１４、グラフィックサブシステム７１５、アプリケーション７１６、及び／又は無線７１８間の相互通信を提供してよい。例えば、チップセット７０５は、ストレージ７１４との相互通信を提供することのできるストレージアダプタ（不図示）を含んでよい。
【００３９】
プロセッサ７１０は、複合命令セットコンピュータ（ＣＩＳＣ）又は縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ、ｘ８６命令セットコンパチブルプロセッサ、マルチコア、又は任意の他のマイクロプロセッサ又は中央処理ユニット（ＣＰＵ）として実装されてよい。実施形態では、プロセッサ７１０は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ等を備えてよい。プロセッサは、図２から図６のシーケンスをメモリ７１２をともに用いて実行してよい。
【００４０】
メモリ７１２は、限定されないが、ランダムアクセスメモリ（ＲＡＭ），ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、又はスタティックＲＡＭ（ＳＲＡＭ）のような揮発性メモリデバイスとして実装されてよい。
【００４１】
ストレージ７１４は、限定されないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、付属ストレージデバイス、フラッシュメモリ、バッテリバックアップＳＤＲＡＭ（シンクロナスＤＲＡＭ）、及び／又はネットワークアクセス可能ストレージデバイスのような不揮発性ストレージデバイスとして実装されてよい。実施形態では、ストレージ７１４は、例えば複数ハードドライブが含まれる場合、貴重なデジタルメディアのストレージパフォーマンスが強化された保護を増大するための技術を備えてよい。
【００４２】
グラフィックサブシステム７１５は、ディスプレイの静止画又は動画のような画像の処理を実行してよい。グラフィックサブシステム７１５は、例えば、グラフィックプロセッシングユニット（ＧＰＵ）又はビジュアルプロセッシングユニット（ＶＰＵ）であってよい。アナログ又はデジタルインタフェースが、グラフィックサブシステム７１５及びディスプレイ７２０に通信可能に結合するために使われてよい。例えば、インタフェースは、高精細度マルチメディアインターフェース（ＨＤＭＩ（登録商標））、ＤｉｓｐｌａｙＰｏｒｔ、ワイヤレスＨＤＭＩ（登録商標）、及び／又はワイヤレスＨＤ準拠技術のいずれかであってよい。グラフィックサブシステム７１５は、プロセッサ７１０又はチップセット７０５に組み込むことができる。グラフィックサブシステム７１５は、チップセット７０５に通信可能に連結されたスタンドアローンカードとすることができる。
【００４３】
本明細書に記載されるグラフィック及び／又は動画処理技術は、様々なハードウェアキテクチャにおいて実装されてよい。例えば、グラフィック及び／又は動画機能は、チップセット内に組み込まれてよい。代わりに、ディスクリートグラフィックス及び／又は動画プロセッサが使われてよい。さらに別の実施形態として、グラフィック及び／又は動画機能は、マルチコアプロセッサを含む汎用プロセッサにより実装されておい。さらなる実施形態では、機能は、家電機器に実装されてよい。
【００４４】
無線７１８は、様々な適当なワイヤレス通信技術を用いて信号を送信及び受信可能な１又は複数の無線を含んでよい。そのような技術は、１又は複数の無線ネットワークを超える通信を含んでよい。典型的な無線ネットワークは、（限定されないが）無線ローカルエリアネットワーク（ＷＬＡＮ）、無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）、セルラーネットワーク、及び衛星ネットワークを含む。そのようなネットワークを超えての通信では、無線７１８は、任意のバージョンにおける１又は複数の適用規格に従って動作してよい。
【００４５】
実施形態では、ディスプレイ７２０は、テレビタイプモニタ又はディスプレイを備えてよい。ディスプレイ７２０は、例えば、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、動画モニタ、テレビのようなデバイス、及び／又はテレビを備えてよい。ディスプレイ７２０は、デジタル及び／又はアナログでよい。実施形態では、ディスプレイ７２０は、ホログラフィックディスプレイでよい。また、ディスプレイ７２０は、視覚的投影を受信し得る透明な表面であってよい。そのような投影は、様々な形成の情報、画像、及び／又は物を搬送してよい。例えば、そのような投影は、モバイル拡張現実（ＭＡＲ）アプリケーション用のビジュアルオーバーレイであってよい。１又は複数のソフトウェアアプリケーション７１６の制御の下で、プラットフォーム７０２は、ディスプレイ７２０上のユーザインタフェース７２２を表示してよい。
【００４６】
実施形態では、コンテンツサービスデバイス７３０は、任意の全国的、国際的及び／又は独立したサービスにより管理されてよく、それにより、例えば、インターネットを介してプラットフォーム７０２にアクセス可能であってよい。コンテンツサービスデバイス７３０は、プラットフォーム７０２及び／又はディスプレイ７２０に連結されてよい。プラットフォーム７０２及び／又はコンテンツサービスデバイス７３０は、ネットワーク７６０へ及びからメディア情報を通信（例えば、送信及び／又は受信）するためにネットワーク７６０に連結されてよい。コンテンツ配信デバイス７４０は、プラットフォーム７０２及び／又はディスプレイ７２０に連結されてもよい。
【００４７】
実施形態では、コンテンツサービスデバイス７３０は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、デジタル情報及び／又はコンテンツを供給することができるインターネット対応デバイス又は器具、及びネットワーク７６０を介して又は直接、コンテンツプロバイダ及びプラットフォーム７０２及び／又はディスプレイ７２０の間でコンテンツを一方向又は双方向に通信可能な任意の他の同様のデバイスを備えてよい。コンテンツは、ネットワーク７６０を介して、一方向及び／又は双方向にシステム７００内のコンポーネント及びコンテンツプロバイダのいずれか１つに及びから通信されてよいと理解される。  コンテンツの例は、例えば動画、音楽、医療及びゲーム情報等を含む任意のメディア情報を含んでよい。
【００４８】
コンテンツサービスデバイス７３０は、メディア情報、デジタル情報、及び／又は他のコンテンツを含むケーブルテレビ番組のようなコンテンツを受信する。コンテンツプロバイダの例は、任意のケーブル又は衛生テレビ又は無線又はコンテンツプロバイダを含んでよい。提供された例は、開示の実施形態に限定することを意味するものではない。
【００４９】
実施形態では、プラットフォーム７０２は、１又は複数のナビゲーション機能を有するナビゲーションコントローラ７５０から制御信号を受信してよい。コントローラ７５０のナビゲーション機能は、例えば、ユーザインタフェース７２２と相互伝達するために使われてよい。実施形態では、ナビゲーションコントローラ７５０は、ユーザに空間（例えば、連続及び多次元）データをコンピュータに入力することを可能にするコンピュータハードウェアコンポーネント（特に、ヒューマンインタフェースデバイス）であってよいポインティングデバイスであってよい。ユーザインタフェース（ＧＵＩ）、及びテレビ及びモニタのような多くのシステムは、物理的ジェスチャを用いて、ユーザにデータを制御し、コンピュータ又はテレビに提供することを可能とする。
【００５０】
コントローラ７５０のナビゲーション機能の移動は、ディスプレイ上に表示されるポインタ、カーソル、フォーカスリング、又は他の視覚的表示の移動により、ディスプレイ（例えば、ディスプレイ７２０）上で忠実に写されてよい。例えば、ソフトウェアアプリケーション７１６の制御の下で、ナビゲーションコントローラ７５０上に位置するナビゲーション機能は、例えば、ユーザインタフェース７２２上に表示される視覚的ナビゲーション機能にマップされてよい。実施形態では、コントローラ７５０は、別個のコンポーネントではなく、プラットフォーム７０２及び／又はディスプレイ７２０に組み込まれなくてよい。実施形態は、しかし、本明細書に示される又は記載される要素又は内容に限定されない。
【００５１】
実施形態では、ドライバ（不図示）は、ユーザに、例えばイネーブルした場合に、初期起動の後にボタンをタッチすることでテレビのようにプラットフォーム７０２を瞬時にオン及びオフすることを可能にする技術を備えてよい。プログラムロジックは、プラットフォーム７０２に、プラットフォームがオフにされた場合に、コンテンツをメディアアダプタ又は他のコンテンツサービスデバイス７３０又はコンテンツ配信デバイス７４０に流すことができるようにしてよい。加えて、チップセット７０５は、例えば、５．１サラウンドサウンドオーディオ及び／又は高解像度７．１サラウンドサウンドオーディオをサポートするハードウェア及び／又はソフトウェアを備えてよい。ドライバは、組み込みグラフィックプラットフォームのグラフィックドライバを含んでよい。実施形態では、グラフィックドライバは、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）エクスプレス・グラフィックカードを備えてよい。
【００５２】
様々な実施形態では、システム７００に示されるコンポーネントの任意の１又は複数が組み込まれてよい。例えば、プラットフォーム７０２及びコンテンツサービスデバイス７３０が組み込まれる、又はプラットフォーム７０２及びコンテンツ配信デバイス７４０が組み込まれる、又はプラットフォーム７０２、コンテンツサービスデバイス７３０、及びコンテンツ配信デバイス７４０が組み込まれてよい。様々な実施形態では、プラットフォーム７０２及びディスプレイ７２０は組み込みユニットでよい。例えば、ディスプレイ７２０及びコンテンツサービスデバイス７３０が組み込まれる、又はディスプレイ７２０及びコンテンツ配信デバイス７４０が組み込まれてよい。これらの例は、開示を限定することを意味しない。
【００５３】
様々な実施形態では、システム７００は、無線システム、有線システム、又は両方の組み合わせとして実装されてよい。無線システムとして実装される場合、システム７００は、１又は複数のアンテナ、送信機、受信機、送受信機、増幅器、フィルタ、制御ロジック等のような無線共有メディアを介して通信するのに好適なコンポーネント及びインタフェースを含んでよい。無線共有媒体の例は、ＲＦスペクトル等のような無線スペクトルの部分を含んでよい。有線システムとして実装される場合、システム７００は、入出力（Ｉ／Ｏ）アダプタ、Ｉ／Ｏアダプタを対応する有線通信媒体に接続する物理コネクタ、ネットワークインタフェースカード（ＮＩＣ）、ディスクコントローラ、動画コントローラ、オーディオコントローラ等のような有線通信媒体を介して通信するのに好適なコンポーネント及びインタフェースを含んでよい。有線通信媒体の例は、ワイヤ、ケーブル、金属リード、プリント回路基板（ＰＣＢ）、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバ等を含んでよい。
【００５４】
プラットフォーム７０２は、情報を通信するために１又は複数の論理又は物理チャネルを確立してよい。情報は、メディア情報及び制御情報を含んでよい。メディア情報は、ユーザ向けのコンテンツを表しているあらゆるデータを示してよい。コンテンツの例は、例えば、音声会話、ビデオ会議、ストリーミング動画、電子メール（Ｅメール）メッセージ、ボイスメイルメッセージ、英数字記号、グラフィック、画像、動画、テキスト等からのデータを含んでよい。音声会話からのデータは、例えば、スピーチ情報、沈黙期間、バックグラウンドノイズ、コンフォートノイズ、トーン等であってよい。制御情報は、自動システム向けのコマンド、命令又は制御ワードを表している任意のデータを示してよい。例えば、制御情報は、システムを介して、メディア情報を送信する、または所定の方法でメディア情報を処理するノードに命令するために使用されてよい。実施形態は、しかし、図５に示される又は記載される要素又は内容に限定されるものではない。
【００５５】
上記の通り、システム７００は、物理スタイル又はフォームファクタを変更して実施されてもよい。図６は、システム７００が実施され得る小さいフォームファクタデバイス８００の実施形態を示す。実施形態では、例えば、デバイス８００は、ワイヤレス機能を有するモバイルコンピューティングデバイスとして実装されてよい。モバイルコンピューティングデバイスは、例えば、１又は複数のバッテリのようなプロセッシングシステム及びモバイル電力源又はサプライを有する任意のデバイスを示してよい。
【００５６】
上記の通り、モバイルコンピューティングデバイスの例は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（例えば、スマートフォン、スマートタブレット、又はスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス等を含んでよい。
【００５７】
モバイルコンピューティングデバイスの例は、リストコンピュータ、フィンガコンピュータ、リングコンピュータ、メガネコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、シューズコンピュータ、衣服コンピュータ、及び他のウェアラブルコンピュータのような、人が着用するように構成されるコンピュータ含んでもよい。実施形態では、例えば、モバイルコンピューティングデバイスは、コンピュータアプリケーションと同様に音声通信及び／又はデータ通信を実行可能なスマートフォンとして実装されてよい。幾つかの実施形態は、例としてスマートフォンとして実装されるモバイルコンピューティングデバイスを用いて記載されてよいが、同様に、他の実施形態は他のワイヤレスモバイルコンピューティングデバイスを用いて実装されてよいことは理解できる。実施形態は、この内容に限定されるものではない。
【００５８】
プロセッサ７１０は、幾つかの実施形態では、カメラ７２３及び全地球測位システムセンサ７２１と通信してよい。プロセッサ７１０と連結されるメモリ７１２は、図２から図６に示されるシーケンスを実行するためのコンピュータ可読命令をソフトウェア及び／又はファームウェア形態で格納してよい。
【００５９】
図１０に示されるように、デバイス８００は、ハウジング８０２、ディスプレイ８０４、入出力（Ｉ／Ｏ）デバイス８０６、及びアンテナ８０８を備えてよい。デバイス８００は、ナビゲーション機能８１２を備えてもよい。ディスプレイ８０４は、モバイルコンピューティングデバイスに適当な情報を表示するための任意の好適なディスプレイユニットを備えてもよい。Ｉ／Ｏデバイス８０６は、モバイルコンピューティングデバイスに情報を入力するための任意の好適なＩ／Ｏデバイスを備えてもよい。  Ｉ／Ｏデバイス８０６の例は、英数字キーボード、テンキー、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイク、スピーカ、音声認識デバイス、及びソフトウェア等を含んでよい。情報は、マイクを用いてデバイス８００に入力されてもよい。そのような情報は、音声認識デバイスによりデジタル化されてよい。実施形態は、この内容に限定されない。
【００６０】
様々な実施形態は、ハードウェア要素、ソフトウェア要素、又は両方の組み合わせを用いて実装されてよい。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路要素（例えば、トランジスタ、抵抗、コンデンサ、インダクタ等）、組み込み回路、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能な論理デバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、書替え可能ゲートアレイ（ＦＰＧＡ）、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含んでよい。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラムアプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーションプログラムインターフェース（ＡＰＩ）、命令セット、算出コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、又はそれらの任意の組み合わせを含んでよい。実施形態がハードウェア要素及び／又はソフトウェア要素を用いて実装されるかどうかの判断は、所望の演算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度及び他の設計又は性能制約のような任意の数のファクタに応じて変わる。
【００６１】
次の節及び／又は例は、さらなる実施形態に関連する。
【００６２】
１つの例示的な実施形態は、デプスオフセット圧縮または適応デプスオフセット圧縮を使用するかどうかを決定するためにプロセッサを使用する段階と、ＺｍｉｎおよびＺｍａｘをスワップすることにより適応デプスオフセット圧縮を示す段階を備える方法でよい。  方法は、適応オフセットが使われる場合、Ｚｍｉｎ及びＺｍａｘをスワップする段階と、Ｚｍｉｎ及びＺｍａｘに対してエンコードされる残差に対する残差ビットの分配を示すビットを格納する段階と、を含んでもよい。方法は、残差ごとに第１の数のビットを用いてＺｍｉｎに対してエンコードされるサンプルに対して残差ビットを格納する段階と、第２の数のビットを用いてＺｍａｘに対してエンコードされるサンプルに対して残差を格納する段階と、を含み、第１の数および第２の数は異なってもよい。方法は、デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対してヒストグラムを生成することにより、ＺｍｉｎまたはＺｍａｘ範囲に属するか否かを決定する段階であり、各ビンは、残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す、段階を含んでもよい。方法は、ヒストグラムを用いる段階と、総ビット数における最小増加を生成する範囲に対して残差ビットの数を増大する段階と、を含んでもよい。方法は、Ｚｍａｘヒストグラムの累積和を算出する段階と、Ｚｍａｘに対する残差ビットの分配を示すビットのすべての可能な値をテストする段階と、を含んでもよい。方法は、Ｚｍａｘに対してエンコードされるべきサンプルの残りの数を判断する段階と、Ｚｍａｘに対して総数のサンプルをエンコードするためのビット配分を判断する段階と、Ｚｍａｘヒストグラムのビット配分までの累積和が少なくともＺｍａｘに対してエンコードされる必要のあるサンプルの数と同じであるかどうかを判断する段階と、を含んでもよい。方法は、あまり支配的でない範囲の分散の１つの組み合わせにより、およびより支配的な範囲の分散における３つの組み合わせにより示すために、サンプルごとに２つのビットを格納する段階を含んでもよい。方法は、タイルごとに余分の単一ビットを格納することにより、範囲の分散を表す１または２つのビットを使うかどうかを示す段階を含んでもよい。方法は、Ｚｍｉｎ残差に対する及びＺｍａｘ残差に対する異なる数の残差ビットを使用する段階を含んでもよい。
【００６３】
別の例示的な実施形態は、１又は複数のプロセッサにより実行されて、デプスオフセット圧縮又は適応デプスオフセット圧縮を使用するかどうかを決定するためにプロセッサを使用する段階と、Ｚｍｉｎ及びＺｍａｘをスワップすることにより適応デプスオフセット圧縮を示す段階を備える方法を実行する命令を格納する１又は複数の非一時的なコンピュータ読み取り可能媒体でよい。メディアは、適応オフセットが使われる場合、Ｚｍｉｎ及びＺｍａｘをスワップする段階と、Ｚｍｉｎ及びＺｍａｘに対してエンコードされる残差に対する残差ビットの分配を示すビットを格納する段階と、を含む方法を含んでよい。メディアは、残差ごとに第１の数のビットを用いてＺｍｉｎに対してエンコードされるサンプルに対して残差ビットを格納する段階と、第２の数のビットを用いてＺｍａｘに対してエンコードされるサンプルに対して残差を格納する段階と、を含む方法を含み、第１の数および第２の数は異なってもよい。メディアは、デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対してヒストグラムを生成することにより、ＺｍｉｎまたはＺｍａｘ範囲に属するか否かを決定する段階であり、各ビンは、残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す、段階を含む方法を含んでよい。メディアは、ヒストグラムを用いる段階と、総ビット数における最小増加を生成する範囲に対して残差ビットの数を増大する段階と、を含む方法を含んでよい。メディアは、Ｚｍａｘヒストグラムの累積和を算出する段階と、Ｚｍａｘに対する残差ビットの分配を示すビットのすべての可能な値をテストする段階と、を含む方法を含んでよい。メディアは、Ｚｍａｘに対してエンコードされるべきサンプルの残りの数を判断する段階と、Ｚｍａｘに対して総数のサンプルをエンコードするためのビット配分を判断する段階と、Ｚｍａｘヒストグラムのビット配分までの累積和が少なくともＺｍａｘに対してエンコードされる必要のあるサンプルの数と同じであるかどうかを判断する段階と、を含む方法を含んでよい。メディアは、あまり支配的でない範囲の分散の１つの組み合わせにより、およびより支配的な範囲の分散における３つの組み合わせにより示すために、サンプルごとに２つのビットを格納する段階を含む方法を含んでよい。メディアは、タイルごとに余分の単一ビットを格納することにより、範囲の分散を表す１または２つのビットを使うかどうかを示す段階を含む方法を含んでよい。メディアは、Ｚｍｉｎ残差に対する及びＺｍａｘ残差に対する異なる数の残差ビットを使用する段階を含む方法を含んでよい。
【００６４】
別の例示的な実施形態は、デプスオフセット圧縮又は適応デプスオフセット圧縮を使用するかどうかを決定し、Ｚｍｉｎ及びＺｍａｘをスワップすることにより適応デプスオフセット圧縮を示すプロセッサと、プロセッサと連結されるメモリと、を備える装置でよい。装置は、適応オフセットが使われる場合、Ｚｍｉｎ及びＺｍａｘをスワップし、Ｚｍｉｎ及びＺｍａｘに対してエンコードされる残差に対する残差ビットの分配を示すビットを格納するプロセッサを含んでよい。装置は、残差ごとに第１の数のビットを用いてＺｍｉｎに対してエンコードされるサンプルに対して残差ビットを格納し、第２の数のビットを用いてＺｍａｘに対してエンコードされるサンプルに対して残差を格納するプロセッサを含み、第１の数及び第２の数は異なってもよい。装置は、デプスサンプルが、ＺｍｉｎおよびＺｍａｘに対してヒストグラムを生成することにより、ＺｍｉｎまたはＺｍａｘ範囲に属するか否かを決定するプロセッサを含んでよく、各ビンは、残差を表すビット数を前提として、幾つのサンプルがＺｍｉｎまたはＺｍａｘ値に対してエンコードされ得るかを表す。装置は、ヒストグラムを用い、総ビット数における最小増加を生成する範囲に対して残差ビットの数を増大するプロセッサを含んでよい。装置は、Ｚｍａｘヒストグラムの累積和を算出し、Ｚｍａｘに対する残差ビットの分配を示すビットのすべての可能な値をテストするプロセッサを含んでよい。装置は、Ｚｍａｘに対してエンコードされるべきサンプルの残りの数を判断し、Ｚｍａｘに対して総数のサンプルをエンコードするためのビット配分を判断し、Ｚｍａｘヒストグラムのビット配分までの累積和が少なくともＺｍａｘに対してエンコードされる必要のある複数のサンプルの数と同じであるかどうかを判断するプロセッサを含んでよい。装置は、オペレーティングシステム、バッテリ、及びファームウェア、及びファームウェアをアップデートするモジュールを含んでよい。
【００６５】
本明細書に記載されるグラフィックプロセッシング技術は、様々なハードウェアキテクチャにより実装されてよい。例えば、グラフィック機能は、チップセット内に組み込まれてよい。代わりに、別個のグラフィクスプロセッサが使われてよい。さらに別の実施形態として、グラフィック機能は、マルチコアプロセッサを含む一般の汎用プロセッサにより実装されてよい。
【００６６】
本明細書を通しての参照「一実施形態」又は「実施形態」は、本開示の範囲内に含まれる少なくとも１つの実装に含まれる実施形態に関連して記載された特定の特徴、構造、又は特性を意味する。従って、フレーズ「一実施形態」又は「実施形態」の出現は、必ずしも同じ実施形態を示すものではない。さらに、特定の特徴、構造、又は特性は、図示された特定の実施形態以外の他の適切な形で実施されてよく、すべてのそのような形は本願の特許請求の範囲に含まれる。
【００６７】
限られた数の実施形態を記載したが、当業者は、そこから多くの修正及び変形を理解するであろう。添付の特許請求の範囲は、本開示の真の精神及び範囲内に入るそのようなすべての修正及び変形を含むことが意図される。
【図１】
0005923589.tif 000002
【図２】
0005923589.tif 000003
【図３】
0005923589.tif 000004
【図４】
0005923589.tif 000005
【図５】
0005923589.tif 000006
【図６】
0005923589.tif 000007
【図７】
0005923589.tif 000008
【図８】
0005923589.tif 000009
【図９】
0005923589.tif 000010
【図１０】
0005923589.tif 000011