(57)【要約】【課題】デプス値を効率的に符号化及び復号化する画像データ処理装置を提供する。【解決手段】画像データ処理装置は、３次元グラフィックス描画の１つの画素のデプス値を示す浮動小数点データを指数部の第１部分と符号及び仮数部の第２部分との２つの部分に分離する浮動小数分離部と、第１部分の予測値と第１部分の値との差分である第１の差分値を整数データとして演算するとともに、第２部分の予測値と第２部分の値との差分である第２の差分値を整数データとして演算する差分生成部と、第１の差分値と第２の差分値とを可変長符号化する符号化器とを含むことを特徴とする。【選択図】図１４
2011175542.tif 000002
【特許請求の範囲】
【請求項１】
３次元グラフィックス描画の１つの画素のデプス値を示す浮動小数点データを指数部の第１部分と符号及び仮数部の第２部分との２つの部分に分離する浮動小数分離部と、
前記第１部分の予測値と前記第１部分の値との差分である第１の差分値を整数データとして演算するとともに、前記第２部分の予測値と前記第２部分の値との差分である第２の差分値を整数データとして演算する差分生成部と、
前記第１の差分値と前記第２の差分値とを可変長符号化する符号化器と
を含むことを特徴とする画像データ処理装置。
【請求項２】
着目画素に対する前記予測値は、前記着目画素の周辺画素の平均値であることを特徴とする請求項１記載の画像データ処理装置。
【請求項３】
前記符号化器は、少なくとも前記第２の差分値のデータをビット数のより少ない複数のデータに分割する差分データ分割部を含み、前記差分データ分割部が分割した前記複数のデータを別個に可変長符号化することを特徴とする請求項１又は２記載の画像データ処理装置。
【請求項４】
前記符号化器により符号化されたデータを復号化して前記第１の差分値と前記第２の差分値とを生成する復号化部と、
前記復号化器により復号化された前記第１の差分値と前記第２の差分値とに基づいて前記第１部分の値と前記第２部分の値とを算出する差分加算部と、
前記差分加算部により算出された前記第１部分の値と前記第２部分の値とを結合することにより前記浮動小数点データを復元する浮動小数結合部と
を更に含むことを特徴とする請求項１乃至３何れか一項記載の画像データ処理装置。
【請求項５】
前記差分データ分割部は、前記第２の差分値のデータを３つのデータに分割することを特徴とする請求項３又は４記載の画像データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、一般にデータ処理装置に関し、詳しくは画像データを符号化及び復号化する画像データ処理装置に関する。
【背景技術】
【０００２】
近年、３次元グラフィックス描画ＬＳＩ（大規模集積回路）に対してより高い描画性能と描画品質とが要求されるようになってきている。これは、フルハイビジョン化などにより表示画面サイズが拡大したり、動きを滑らかに見せるために高いフレームレートで描画するようになってきたためである。この高い描画性能を実現するために、単位時間当たりに多数のオブジェクトを描画する必要がある。また、高い描画品質を実現するために、同時に複数のテクスチャを使用したり、アンチエイリアシングのために表示面積よりも広い面積を描画する必要がある。これらのことを実現するためには、より多くのメモリアクセスが必要になるが、メモリアクセスの増大によりメモリ帯域が逼迫して高性能化のネックになってしまう。これを回避するためには、メモリバス幅を広げて１クロックあたりの転送データ量を増大させるか、メモリクロック速度を上げて時間当たりのメモリ転送回数を増加させる方法がある。しかし、バス幅を広げるためには接続するメモリの個数を増やす必要があり、クロック速度を上げるためにはより高性能なメモリを使用する必要があるため、何れの方法もコストが増大することになる。
【０００３】
図１は、３次元グラフィックス描画の原理を示す図である。３次元グラフィックスの描画では、描画対象の３次元オブジェクトをポリゴンと呼ばれる３角形または４角形に分割し、ポリゴンを単位として描画する。その際、ＸＹＺ座標のＺ軸方向が視点から見た奥行き方向となるようにポリゴン１０が３次元空間上に配置され、表示スクリーンであるＸＹ平面に視点位置から見えるポリゴン像１１が投影される。各ポリゴンは視点から見て最も手前にある画素のみが描画される。他のポリゴンによって隠される部分は描画されない。これによって視点から見えるシーンが描画され、描画結果がディスプレイに表示される。各ポリゴンを構成する画素を描画する際に、既に描画済みの他のポリゴンに対して当該画素が最も手前にあるかどうかを判断するために、デプス値及びデプスバッファが使用される。デプス値は３次元空間でのＺ座標として表現される。描画された各画素のデプス値はデプスバッファに格納される。新しく描画しようとしている着目画素のデプス値が、デプスバッファの該当画素位置の値より奥を示す値であれば、その着目画素は他のポリゴンによって隠蔽されていると判断し、画素色を描画しない。一方、着目画素のデプス値が、デプスバッファの該当画素位置の値より手前を示す値であれば、その着目画素は視点から見える場所にあると判断し、画素色を描画するとともにデプスバッファの値を更新する。デプス値による描画の有無の判定（デプステスト）は描画を行おうとする画素毎に行うので、多くのメモリアクセスを必要とする。このデプスバッファアクセスで発生するメモリアクセスの量を削減することが大きな課題となっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２１２６２１号公報
【特許文献２】特開２００６−１８６５３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以上を鑑みると、デプス値を効率的に符号化及び復号化する画像データ処理装置が望まれる。
【課題を解決するための手段】
【０００６】
画像データ処理装置は、３次元グラフィックス描画の１つの画素のデプス値を示す浮動小数点データを指数部の第１部分と符号及び仮数部の第２部分との２つの部分に分離する浮動小数分離部と、前記第１部分の予測値と前記第１部分の値との差分である第１の差分値を整数データとして演算するとともに、前記第２部分の予測値と前記第２部分の値との差分である第２の差分値を整数データとして演算する差分生成部と、前記第１の差分値と前記第２の差分値とを可変長符号化する符号化器とを含むことを特徴とする。
【発明の効果】
【０００７】
本願開示の少なくとも１つの実施例によれば、浮動小数点演算ではなく整数演算が行なわれるので、演算に起因する誤差が発生することがない。また指数部と符号付き仮数部とに分けて処理を行なうので、効率的な符号化を実現することができる。
【図面の簡単な説明】
【０００８】
【図１】３次元グラフィックス描画の原理を示す図である。
【図２】浮動小数点データを指数部の第１部分と符号及び仮数部の第２部分との２つの部分に分離する様子を示す図である。
【図３】差分値の演算の一例を示す図である。
【図４】差分演算時のビット数拡張を示す図である。
【図５】整数データの分割を示す図である。
【図６】グラフィクスＬＳＩとメモリとの構成を示す図である。
【図７】ポリゴン描画処理におけるデプスデータの処理の流れを示すフローチャートである。
【図８】描画＆デプスデータＲＡＭの入れ替え処理を示す図である。
【図９】図８のステップＳ１のブロック符号化処理の流れを示すフローチャートである。
【図１０】図８のステップＳ４のブロック復号化処理の流れを示すフローチャートである。
【図１１】図８のステップＳ２のブロックデータ出力処理の流れを示すフローチャートである。
【図１２】メモリの構造を示す図である。
【図１３】図８のステップＳ３のブロックデータ読込処理の流れを示すフローチャートである。
【図１４】図８のステップＳ１に示すデータ符号化処理を実行する構成及び処理の流れを示す図である。
【図１５】図８のステップＳ４に示すデータ復号化処理を実行する構成及び処理の流れを示す図である。
【発明を実施するための形態】
【０００９】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１０】
デプスバッファに格納するデプス値ではなく、画素値（画素色）を表わすデータの場合であれば、圧縮方式として例えば差分圧縮が考えられる。１つの画素の色は、Ｒ（赤）成分、Ｇ（緑）成分、及びＢ（青）成分の３色で表現され、各色成分の階調は例えば８ビットの整数値（０〜２５５）として表わされる。画像は隣接する画素間の相関が非常に高いので、隣接画素の色成分ごとの差分値を算出すると、差分値は０近くに分布する。この差分値をハフマン符号化することにより、画像データの圧縮を行うことができる。
【００１１】
それに対して、デプスバッファに格納するデプス値は、３２ビットの浮動小数点データで表現される。デプス値の場合も隣接する画素間の相関が非常に高いので、差分圧縮を適用することが考えられるが、浮動小数点データ間の差分を計算した場合、演算時の下位ビットの桁落ちによる演算誤差が発生する。差分圧縮の場合には、伸長時に差分値を累積的に加算していくので、誤差も累積されることになる。描画画素のデプス値に誤差が発生すると、隠れるべき画素が描画されたり、描画されるべき画素が隠れたりし、ユーザの意図したものとは全く異なる描画結果になってしまう。そのためデプス値データの圧縮過程で誤差が発生することは許容されない。従って、浮動小数点データの差分計算を行なうことは現実的ではない。
【００１２】
３２ビット浮動小数点表示のビットパターンを３２ビットの整数として取り扱い、整数同士の差分を算出してデータ圧縮を行うことも考えられる。しかしながら、元が浮動小数点表示であるデプス値をそのまま整数データとして扱った場合には、画素間の相関が低くなってしまう。そのため、符号化の効率（圧縮率）が悪くなってしまう。特に正の値と、負の値の差分を計算するときに、差分が大きな値となることがある。これは、指数部が１２７をバイアスした正の整数の形式で表現されており、実際の指数部分は値から１２７を減算することによって求めるためである。例えば−１．０は０ｘＢＦ８０００００，＋１．０は０ｘ３Ｆ８０００００と表され、−１２７と＋１２７の間の計算となり、その差分値は大きな値となる。また、デプス値を画素値と同様の方法で８ビットの４要素に分割すると、分割箇所が指数部の途中となってしまい、要素間の差分を計算した際に大きな差分値を発生させる。
【００１３】
そこで、３次元グラフィックス描画の１つの画素のデプス値を示す浮動小数点データを指数部の第１部分と符号及び仮数部の第２部分との２つの部分に分離する。次に、第１部分の予測値と第１部分の値との差分である第１の差分値を整数データとして演算するとともに、第２部分の予測値と第２部分の値との差分である第２の差分値を整数データとして演算する。更に、上記のようにして求めた第１の差分値と第２の差分値とを可変長符号化する。以下に、これらの処理について説明する。
【００１４】
図２は、浮動小数点データを指数部の第１部分と符号及び仮数部の第２部分との２つの部分に分離する様子を示す図である。図２に示されるように、３２ビット浮動小数点データ２０は、１ビットの符号２１、８ビットの指数部２２、及び２３ビットの仮数部２３を含む。このうち指数部２２を８ビット整数の第１部分２４とする。また１ビットの符号２１と２３ビットの仮数部２３とを合わせて、２４ビット符号付き整数の第２部分２５とする。このように３２ビット浮動小数点データを２つの整数に分解する。
【００１５】
図３は、差分値の演算の一例を示す図である。図３は所定の方向（例えば走査方向）に連続する４つの画素の第１部分Ｅ０乃至Ｅ３及び第２部分Ｆ０乃至Ｆ３を示す。４つの画素の第１部分Ｅ０乃至Ｅ３間の１階差分がｄＥ０乃至ｄＥ２であり、４つの画素の第２部分Ｆ０乃至Ｆ３間の１階差分がｄＥ０乃至ｄＥ２である。例えば、ｄＥ１＝Ｅ２−Ｅ１である。またｄＥ０乃至ｄＥ２間の差分、即ち第１部分Ｅ０乃至Ｅ３間の２階差分がｄ２Ｅ０乃至ｄ２Ｅ１であり、ｄＦ０乃至ｄＦ２間の差分、即ち第２部分Ｆ０乃至Ｆ３間の２階差分がｄ２Ｆ０乃至ｄ２Ｆ１である。例えば、ｄ２Ｅ１＝ｄＥ２−ｄＥ１である。
【００１６】
例えば、着目画素のデプス値の第２部分の値がＦ２であり、１つ前の隣接画素のデプス値の第２部分の値がＦ１であるとする。このとき、同一値が連続するであろうという予測判断により得られる着目画素の予測値はＦ１であり、この予測値Ｆ１と着目画素の第２部分の値Ｆ２との差分Ｆ２−Ｆ１を演算する。これは１階差分であり、１階差分の場合の上記予測値は隣接画素のデプス値である。隣接画素としては、１つ前の画素（走査方向を左から右とすると１つ左の画素）に限らずに、例えば１つ上の画素等であってもよい。
【００１７】
また、着目画素のデプス値の第２部分の値がＦ２であり、１つ前の隣接画素のデプス値の第２部分の値がＦ１であり、１つ後の隣接画素のデプス値の第２部分の値がＦ３であるとする。このとき、一定の増加量又は減少量で値が変化するとの予測判断により得られる着目画素の予測値は（Ｆ３＋Ｆ１）／２であり、この予測値と着目画素の第２部分の値Ｆ２との差分（Ｆ３＋Ｆ１）／２−Ｆ２を演算する。この差分は、２倍すればＦ３＋Ｆ１−２Ｆ２となり、これは（Ｆ３−Ｆ２）−（Ｆ２−Ｆ１）に等しい。これは２階差分であり、２階差分の場合の上記予測値は着目画素の周辺画素の値Ｆ１及びＦ３の平均値である。周辺画素としては、１つ前の画素及び１つ後の画素に限らずに、例えば周囲８画素等であってもよい。
【００１８】
デプス値は、一定の増加量又は減少量を有する変化（即ち一様な傾き）を示すことが多く、仮数部に対応する第２部分について上記のように２階差分をとれば、大多数の値がゼロ近辺に分布することになる。従って、例えばゼロを中心とする正規分布等を仮定したハフマン符号化テーブルを用意しておけば、ゼロ近辺の値には符号長の短い符号が割り当てられ、高効率の符号化を実現することができる。また指数部については、一定値であることが多く、２階差分をとれば、同様に大多数の値がゼロ近辺に分布することになる。従って、同様に２階差分値を可変長符号化すれば、高効率の符号化を実現することができる。なお指数部については、１階差分をとるだけでも大多数の値がゼロ近辺に分布するので、１階差分した結果を符号化する構成としてもよい。このような予測処理及び符号化処理においては、浮動小数点演算ではなく整数演算が行なわれるので、演算に起因する誤差が発生することがない。また指数部と符号付き仮数部とに分けて処理を行なうので、効率的な符号化を実現することができる。
【００１９】
図４は、差分演算時のビット数拡張を示す図である。上記のように差分演算を行なう場合、指数部である第１部分については、１階差分時には負の演算結果を表現するために１ビットの拡張が必要になり、２階差分時には演算結果を桁あふれ無く表現するために更に１ビットの拡張が必要になる。また符号付き仮数部である第２部分については、１階差分時及び２階差分時の各々において、演算結果を桁あふれ無く表現するために１ビットの拡張が必要になる。従って、図４に示すように、指数部である第１部分については、元の８ビット整数データが１階差分後には９ビット整数データとなり、２階差分後には１０ビット整数データとなる。また符号付き仮数部である第２部分については、元の２４ビット整数データが１階差分後には２５ビット整数データとなり、２階差分後には２６ビット整数データとなる。
【００２０】
なお可変長符号化する際、ビット数が長いままのデータを符号化することは効率的でない。ハフマン符号化等の可変長符号化では、一般に、符号化対象のデータと符号化後の符号化データとが１対１に対応する可変長符号化テーブルを使用する。符号化対象データが与えられると、この符号化テーブルを参照して対応する符号化データを求めることにより、符号化を行なう。この際、２６ビット整数をそのまま符号化しようとすると、符号化テーブルのエントリ数が２２６個となり、膨大なメモリ空間を使用してしまう。そこで、２６ビット整数のデータをビット数のより少ない複数のデータに分割し、この分割した後の複数のデータを別個に可変長符号化することが好ましい。なお指数部のデータについても必要に応じて細かく分割してもよい。
【００２１】
図５は、整数データの分割を示す図である。図５に示すように、例えば、符号部と仮数部との２階差分データである２６ビットの整数データを、上位から９ビット、９ビット、８ビットの３つのデータ長が短いデータに分割する。ビット数の組み合わせはこの分割例に限定されるものではなく、他のビット数の組み合わせを使用してもよい。例えば、７ビット、７ビット、６ビット、６ビットのように４つに分割してもよい。
【００２２】
図６は、グラフィクスＬＳＩとメモリとの構成を示す図である。図６においては、デプスデータの処理に関係する部分が主に示されており、描画データ（画素色データ等）についての処理部分の全体は示されていない。図６のグラフィクスＬＳＩ６０は、外部メモリ６６にバスを介して接続されている。グラフィクスＬＳＩ６０は、グラフィクス描画コア６１、描画＆デプスデータＲＡＭ６２、伸長回路部６３、圧縮回路部６４、及びメモリコントローラ部６５を含む。外部メモリ６６は、デプスバッファ６７及びブロック長バッファ６８を含む。
【００２３】
各画素のデプス値（第１部分と第２部分とに分離されたデータ）の符号化データが、外部メモリ６６のデプスバッファ６７に格納されている。また最も最近アクセスしたデプス値は、グラフィクスＬＳＩ６０内の描画＆デプスデータＲＡＭ６２に格納されている。描画＆デプスデータＲＡＭ６２は、一部のデータを手元に置いておくキャッシュメモリと同様の役割を果たす。描画＆デプスデータＲＡＭ６２に格納されるのは、表示画面に対応する全体の画像のうちの一部の小領域のデータであり、例えば１６×１６画素のブロックに対するデプス値及び描画色データが格納される。また外部メモリ６６のデプスバッファ６７には、このブロック単位で、デプス値の符号化データが格納される。符号化の結果、１６×１６画素のブロックに対するデプス値の符号化データのビット数は一定ではなくなるので、各ブロックに対する有効データの長さを示すデータがブロック長バッファ６８に格納されている。グラフィクスＬＳＩ６０による一連の描画処理により、外部メモリ６６の所定の領域には、表示画面に対応した画像の全画素について描画色データが書き込まれることになる。
【００２４】
図７は、ポリゴン描画処理におけるデプスデータの処理の流れを示すフローチャートである。ある１つのポリゴンの描画処理が開始されると、ステップＳ１で、ポリゴン図形が描画画素に分解される。即ち、ポリゴン内部に入る画素を特定し、これらの画素を所定の順番で走査する。このようにして、順に走査される一つ一つの画素について、所定の描画処理が実行されることになる。ステップＳ２で、着目画素について、描画位置及び描画色等を生成する。例えば、着目ポリゴンの頂点を結んだ辺上に位置する画素から水平方向に一画素ずつ走査していくことで、現在処理対象の着目画素の画素位置が定まる。また着目ポリゴンの頂点毎に求めた画像パラメータに基づいて、ポリゴン内部に含まれる各画素の画像パラメータを補間により求める。例えば、上記のように水平方向に一画素ずつ走査し、水平方向のパラメータ値の増分を加算していくことで、各画素におけるデプス値や描画色等の画像パラメータを求める。画像パラメータには、ＲＧＢ各色の輝度、奥行き方向の距離を表すデプス値、テクスチャ表示のためのテクスチャ座標値等が含まれる。上記ステップＳ１及びＳ２の処理は、グラフィクス描画コア６１により実行される。
【００２５】
ステップＳ３で、着目画素位置を含むブロックが描画＆デプスデータＲＡＭ６２に格納されているか否かを判定する。着目画素位置を含むブロックが描画＆デプスデータＲＡＭ６２に格納されている場合には、ステップＳ５に進み、デプス値比較及び画素書き込みが行なわれる。着目画素位置を含むブロックが描画＆デプスデータＲＡＭ６２に格納されていない場合には、ステップＳ４で、描画＆デプスデータＲＡＭの入れ替え処理を実行する。これにより、現在描画＆デプスデータＲＡＭ６２に格納されているブロックのデータ（デプス値及び描画色データ）を外部メモリ６６に格納し、更に、着目画素位置を含むブロックのデータを外部メモリ６６から読み出して描画＆デプスデータＲＡＭ６２に格納する。なおここで、現在描画＆デプスデータＲＡＭ６２に格納されているデータを外部メモリ６６に格納する処理は、手元のデータに行なった更新処理を外部メモリ６６上のデータに反映させるために実行される。この入れ替え処理後、ステップＳ５に進み、デプス値比較及び画素書き込みが行なわれる。
【００２６】
デプス値比較及び画素書き込み処理は、グラフィクス描画コア６１により実行される。このデプス値比較及び画素書き込み処理では、着目画素に対して計算された着目ポリゴンのデプス値と既に描画済みのデータのデプス値（描画＆デプスデータＲＡＭ６２に格納されているデプス値）とを比較する。着目ポリゴンの方が、描画済みのデータよりも手前に位置するのであれば描画処理及びデプス値更新処理を行なう。即ち、ステップＳ２で生成された描画色を、描画＆デプスデータＲＡＭ６２に格納されているブロックの着目画素の描画色として書き込む（既存の描画色データに上書きする）。また更に、ステップＳ２で生成されたデプス値を、描画＆デプスデータＲＡＭ６２に格納されているブロックの着目画素のデプス値として書き込む（既存のデプスデータに上書きする）。なお着目ポリゴンの方が、描画済みのデータよりも奥に位置するのであれば描画処理及びデプス値更新処理を行なわない。
【００２７】
ステップＳ６で、ポリゴン図形内に未描画の画素があるか否かを判定する。未描画の画素が有る場合には、ステップＳ２に戻り、以降の処理を繰り返す。未描画の画素が無い場合には、着目ポリゴンの描画処理を終了する。
【００２８】
図８は、描画＆デプスデータＲＡＭの入れ替え処理を示す図である。ステップＳ１で、図６の圧縮回路部６４がブロック符号化処理を実行する。即ち、描画＆デプスデータＲＡＭ６２に格納されるデプス値のブロックに対して、前述の浮動小数点データ分離、差分データ生成、及び可変長符号化の各処理が実行される。ステップＳ２で、図６のメモリコントローラ部６５がブロックデータ出力処理を実行する。即ち、メモリコントローラ部６５が、圧縮回路部６４の生成した符号化データを、デプスバッファ６７中の所定のブロック格納位置に格納すると共に、ブロック長データをブロック長バッファ６８に格納する。
【００２９】
ステップＳ３で、図６のメモリコントローラ部６５がブロックデータ読込処理を実行する。即ち、メモリコントローラ部６５が、着目画素を含むブロックについて、ブロック長バッファ６８のブロック長が示す長さのデータを、デプスバッファ６７中の所定のブロック格納位置の先頭から読み出す。ステップＳ４で、図６の伸長回路部６３がブロック復号化処理を実行する。即ち、ステップＳ３で読み出された符号化データを復号化して差分値データを生成し、差分値データに基づいて第１部分の値と第２部分の値とを算出し、第１部分（指数部）と第２部分（符号付き仮数部）とを結合することにより浮動小数点データを復元する。復元した浮動小数点形式のデプス値のブロックは、描画＆デプスデータＲＡＭ６２に格納される。
【００３０】
なお描画色データについても、描画＆デプスデータＲＡＭ６２の描画色データに対して必要に応じて所定の符号化処理が実行され、更に、外部メモリ６６の所定の領域に書き込まれる。また更に、着目画素を含むブロックについて、外部メモリ６６の所定の領域から描画色データが描画＆デプスデータＲＡＭ６２に読み込まれる。この時、必要に応じて復号化処理が実行される。
【００３１】
図９は、図８のステップＳ１のブロック符号化処理の流れを示すフローチャートである。ブロック符号化処理が開始されると、ステップＳ１で、データ符号化処理が実行される。これは描画＆デプスデータＲＡＭ６２に格納されるブロックの各画素のデプス値に対して、前述の浮動小数点データ分離、差分データ生成、及び可変長符号化の各処理を実行するものである。ステップＳ２で、ブロック内に未符号化のデータが残っているか否かを判定する。未符号化のデータが有る場合には、ステップＳ１に戻り、処理を繰り返す。未符号化のデータが無い場合には、ブロック符号化処理を終了する。
【００３２】
図１０は、図８のステップＳ４のブロック復号化処理の流れを示すフローチャートである。ブロック復号化処理が開始されると、ステップＳ１で、データ復号化処理が実行される。これは外部メモリ６６から読み出されたブロックの各画素の符号化デプス値に対して、前述の復号化、差分値データからの各データの復元、及び浮動小数点データの復元の各処理を実行するものである。ステップＳ２で、読み込んだデータ内に未復号化のデータが残っているか否かを判定する。未復号化のデータが有る場合には、ステップＳ１に戻り、処理を繰り返す。未復号化のデータが無い場合には、ブロック復号化処理を終了する。
【００３３】
図１１は、図８のステップＳ２のブロックデータ出力処理の流れを示すフローチャートである。ステップＳ１で、ブロックデータ長を算出する。即ち、圧縮回路部６４による可変長符号化により生成された符号化データの長さ（ビット長又はバイト長等）を算出する。ステップＳ２で、外部メモリ６６のデプスバッファ６７の所定のブロック位置にブロックデータを書き込む。ステップＳ３で、ブロックデータ長を書き出す。即ち、外部メモリ６６のブロック長バッファ６８に、ステップＳ１で算出したブロックデータ長を示すデータを書き込む。
【００３４】
図１２は、メモリの構造を示す図である。外部メモリ６６のメモリ空間中にデプスバッファ６７の領域とブロック長バッファ６８の領域とが設けられている。なお描画色データを書き込む領域も、外部メモリ６６のメモリ空間中に設けられている。デプスバッファ６７は、複数のブロック領域１２１に分割されている。各ブロック領域は予め決められた固定長であり、符号化データ１２５は、各ブロック領域の先頭から詰めて格納される。ブロック長バッファ６８は、複数のブロックデータ長格納領域１２２に分割されている。各ブロックデータ長格納領域には、対応するブロックに格納される符号化データ１２５のデータ長を示すデータが格納されている。例えば、３番目のブロックデータ長格納領域には、３番目のブロックに格納される符号化データ１２５（ブロック２データ）のデータ長を示すデータ（ブロック２データ長）が格納されている。
【００３５】
図１３は、図８のステップＳ３のブロックデータ読込処理の流れを示すフローチャートである。ステップＳ１で、ブロックデータ長を読み込む。即ち、所望のブロックについて、ブロック長バッファ６８に格納されているデータ長を示すデータを読み込む。ステップＳ２で、ブロックデータを読み込む。即ち、ステップＳ１で読み込んだデータが示すデータ長分のバイト数（又はワード数等）のデータをデプスバッファ６７の対応するブロックから読み出す。
【００３６】
図１４は、図８のステップＳ１に示すデータ符号化処理を実行する構成及び処理の流れを示す図である。図１４に示す構成は、図６の圧縮回路部６４の構成に相当し、Ｚ値入力部１４１、浮動小数分離部１４２、１階差分生成部１４３、２階差分生成部１４４、差分データ分割部１４５、符号化部１４６、及び符号化テーブル１４７を含む。データ符号化処理が開始されると、Ｚ値入力部１４１は、描画＆デプスデータＲＡＭ６２から着目画素のデプス値を読み込む。浮動小数分離部１４２は、デプス値の浮動小数点データを指数部の第１部分と符号及び仮数部の第２部分との２つの部分に分離する。１階差分生成部１４３は、上記第１部分と第２部分との各々について別個に、１階差分を求める。即ち、着目画素に隣接する画素（前回読み込んだ画素）の第１部分と着目画素の第１部分との差分を求めると共に、着目画素に隣接する画素（前回読み込んだ画素）の第２部分と着目画素の第２部分との差分を求める。隣接する画素（前回読み込んだ画素）の第１部分と第２部分のとのデータは内部レジスタ等に保持しておいてよい。２階差分生成部１４４は、第１部分と第２部分との各々について別個に、１階差分値に基づいて２階差分を求める。例えば、着目画素に隣接する画素（前回読み込んだ画素）について求めた１階差分値と着目画素について求めた１階差分値との差分を求める。隣接する画素（前回読み込んだ画素）の１階差分値のデータは内部レジスタ等に保持しておいてよい。
【００３７】
差分データ分割部１４５は、少なくとも第２部分について求めた２階差分値のデータをビット数のより少ない複数のデータに分割する。符号化部１４６は、符号化テーブル１４７を参照して、第１部分と第２部分との各々について求めた２階差分値を可変長符号化する。なおブロックの先頭画素の第１部分と第２部分とのデータについては、１階差分演算に用いられると共に、そのまま符号化データとして出力される。このデータについては、符号化処理してから出力してもよい。またブロックの先頭画素及び次の画素の第１部分と第２部分との１階差分値については、２階差分演算に用いられると共に、そのまま符号化データとして出力される。この１階差分値については、符号化処理してから出力してもよい。
【００３８】
図１５は、図８のステップＳ４に示すデータ復号化処理を実行する構成及び処理の流れを示す図である。図１５に示す構成は、図６の伸長回路部６３の構成に相当し、復号化部１５１、差分データ結合部１５２、２階差分加算部１５３、１階差分加算部１５４、浮動小数結合部１５５、Ｚ値出力部１５６、及び復号化テーブル１５７を含む。データ符号化処理が開始されると、復号化部１５１は、符号化されたデプス値（第１部分と第２部分とに分離されたデータ）を受け取り、復号化テーブル１５７を参照して、復号化データを求める。この際、先頭画素のデプス値と先頭画素及び次の画素の１階差分値とは、符号化されていないので、そのままの値がそれぞれ浮動小数結合部１５５と２階差分加算部１５３とに送られる。差分データ結合部１５２は、復号化部１５１により可変長復号されたデータの第２部分に相当するデータを結合することにより、２６ビット整数データの２階差分データを生成する。２階差分加算部１５３は、２階差分値を直前の２階差分値に加算することにより１階差分値を生成する。１階差分加算部１５４は、１階差分値を直前の１階差分値に加算することにより１階差分値を生成する。これにより、第１部分である指数部データと第２部分である符号付き仮数部データとを生成する。これらのデータは浮動小数結合部１５５により結合されて、浮動小数形式のデータに変換される。Ｚ値出力部１５６は、浮動小数点データをデプス値として出力する。なお符号化及び復号化に使用する符号化テーブル及び復号化テーブルとしては、それぞれの処理対象毎に異なった値のテーブルを用意すれば最適化をおこなうことができる。或いは、共通化することによりテーブル容量を小さくしてもよい。
【００３９】
上記の処理により、３２ビット浮動小数で表現されるデプス値を誤差無く圧縮することができる。非圧縮の元データに対する圧縮後のデータの圧縮率としては、２０％〜３０％を実現することができる。
【００４０】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００４１】
６０  グラフィクスＬＳＩ
６１  グラフィクス描画コア
６２  描画＆デプスデータＲＡＭ
６３  伸長回路部
６４  圧縮回路部
６５  メモリコントローラ部
６６  外部メモリ
６７  デプスバッファ
６８  ブロック長バッファ
【図１】
2011175542.tif 000003
【図２】
2011175542.tif 000004
【図３】
2011175542.tif 000005
【図４】
2011175542.tif 000006
【図５】
2011175542.tif 000007
【図６】
2011175542.tif 000008
【図７】
2011175542.tif 000009
【図８】
2011175542.tif 000010
【図９】
2011175542.tif 000011
【図１０】
2011175542.tif 000012
【図１１】
2011175542.tif 000013
【図１２】
2011175542.tif 000014
【図１３】
2011175542.tif 000015
【図１４】
2011175542.tif 000016
【図１５】
2011175542.tif 000017