説明

画像処理装置

【課題】ラインバッファ方式の画像処理装置において描画対象のラインに複数のスプライトが含まれている場合であっても、描画性能が極端に低下しないようにする。
【解決手段】スプライトの圧縮データを格納したROMを画像処理装置に接続するROMインタフェースに複数のコードバッファを設け、読み出し対象の圧縮データ毎に何れかのコードバッファを割り当てる。そして、割り当てたコードバッファに空きがある限り圧縮データを所定データ量ずつ読み出して当該コードバッファに保持するとともに、当該圧縮データの復号が完了した時点でその割り当てを解除する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、1ライン分の記憶容量を有するラインバッファを利用して画像データの描画および表示器への表示を行う画像処理装置に関する。
【背景技術】
【0002】
周知の通り、ゲーム機等のアミューズメント機器では、描画アプリケーションに従って静止画や動画の画像データをバッファに書き込む描画処理とバッファ内の画像データを読み出して表示器に表示させる表示処理が同時並行的に進められる。このような描画処理および表示処理を行う画像処理装置としては、1フレーム分の画像データを記憶するフレームバッファを備えたフレームバッファ方式の画像処理装置と、1ライン分の画像データを記憶するラインバッファを備えたラインバッファ方式の画像処理装置がある。なお、ラインバッファ方式の画像処理装置に関する文献として例えば特許文献1がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−215252号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
描画アプリケーションに従って表示器に表示される静止画や動画が各種のスプライトを配列して構成されている場合、これらスプライトの画像データは例えばJPEG(Joint Photographic Experts Group)等の高圧縮符号化アルゴリズムにより圧縮符号化されてアミューズメント機器に実装されることが一般的である。具体的には、各種スプライトの画像データに圧縮符号化を施して得られる圧縮データを格納したROMを画像処理装置のROMインタフェースに接続し、スプライトの表示を行う都度、当該ROMから該当する圧縮データを読み出して復号する、といった具合である。したがって、各スプライトの画像データが圧縮符号化されてアミューズメント機器に実装される場合、そのアミューズメント機器における画像の表示性能は、ROMからの圧縮データの読み出しに要する時間と、読み出した圧縮データの復号に要する時間に依存する。近年では画像処理装置の高速化が進んでいる。このため、圧縮データの復号に要する時間に比較してROMからの圧縮データの読み出しに要する時間の占める割合が大きくなっており、画像の表示性能は、後者の時間によって決まることが多い。前述したラインバッファ方式の画像処理装置では、1ライン分の画像データの生成をする毎にROMからの圧縮データの読み出しが行われることになるため、描画対象のラインが複数のスプライトを横切っている場合に画像の表示性能が大きく低下する虞がある。
【0005】
この発明は、以上説明した事情に鑑みてなされたものであり、ラインバッファ方式の画像処理装置において描画対象のラインが複数のスプライトを横切っている場合であっても、描画性能が大きく低下しないようにする技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、この発明は、各々スプライトの画像データに圧縮符号化を施して得られた複数の圧縮データを格納したROMから、読み出しを指示された圧縮データを読み出して出力するROMインタフェースと、表示器における1ライン分の画像データを記憶するラインバッファと、前記ROMインタフェースを介して読み出される圧縮データを復号する復号化部と、各水平走査期間において表示対象とする1ライン分の画像データを生成するのに必要な圧縮データの読み出しを前記ROMインタフェースに指示し、当該指示に応じて前記ROMインタフェースから出力される圧縮データを前記復号化部によって復号して1ライン分の画像データを生成し、前記ラインバッファに書き込む画像データ生成部と、を備え、前記ROMインタフェースは、複数のバッファ領域を有するコードバッファと、圧縮データの読み出しを指示される毎に、前記複数のバッファ領域のうちの未割り当てのものを選択し当該圧縮データの読み出しに割り当て、当該バッファ領域に空がある間、当該圧縮データを前記ROMから読み出して書き込む処理を継続するコードバッファ管理手段と、を具備することを特徴とする画像処理装置、を提供する。
【0007】
画像処理装置の描画性能を向上させる方策としては、ROMから読み出した画像データを一時的に記憶するコードバッファをROMインタフェースに設け、読み出しを指示された圧縮データが当該コードバッファに記憶されている場合には、当該コードバッファから圧縮データを読み出すことでROMからの圧縮データの読み出し回数を削減し、表示性能を向上させることが考えられる。しかし、ラインバッファ方式の画像処理装置では、ROMインタフェースにコードバッファを設けたとしても、描画対象のラインが複数のスプライトを横切っている場合における画像の表示性能の低下をくい止めることは難しい。その理由は、以下の通りである。描画対象のラインが複数のスプライトを横切っている場合には、描画対象のスプライトが切り換る毎にコードバッファの格納内容が破棄され、読み出し先のアドレスを切り換える処理が行われる。このアドレス切り換え時のオーバーヘッドによって帯域がロスされ、描画性能の低下を招くからである。スプライト等の圧縮データを記憶するROMとしてSPI(Serial Port Interface)ROMを用いると、SPIROMではデータ読み出し等のためのコマンド設定に十数クロック要するため、上記オーバーヘッドに起因した帯域ロスは大きな問題となる。
【0008】
これに対して、本発明の画像処理装置においては、コードバッファは複数のバッファ領域を有しており、コードバッファ管理手段は、圧縮データの読み出しを指示される毎にそれら複数のバッファ領域のうちの未割り当てのものを1つ選択して当該圧縮データの読み出しに割り当てる。したがって、描画対象のラインが複数のスプライトを横切っている場合であっても、未割り当てのバッファ領域がある間は、描画対象のスプライトの切り換えに起因してバッファ領域の格納内容が破棄されることはなく、読み出し先のアドレスを切り換える必要もない。つまり、本発明によれば、ラインバッファ方式の画像処理装置において描画対象のラインが複数のスプライトを横切っている場合であっても、読み出し先のアドレスの切り換えに起因したオーバーヘッドが生じることはなく、表示性能が大きく低下することはない。
【0009】
ここで、各圧縮データの読み出しに割り当てた各バッファ領域をどのようなタイミングで解放する(すなわち、その割り当てを解除する)のかについては種々の態様が考えられる。例えば、未割り当てのバッファ領域がある間は割り当て済みのバッファ領域の解放を行わず、未割り当てのバッファ領域がない状態において新たな圧縮データの読み出しを指示されたことを契機として何れかのバッファ領域を解放し、当該新たな圧縮データの読み出しに割り当てる態様が考えられる。なお、割り当て済みのバッファ領域のうちの何れを解放するのかについては、復号化の完了(すなわち、圧縮符号化前の画像データ全体の復元が完了した)した圧縮データを格納しているバッファ領域の何れか1つを解放する態様や、直近の所定期間における使用頻度(バッファ領域からのデータの読み出し頻度)が最も低いバッファ領域を解放する態様、最も古い割り当てのバッファ領域を解放する態様が考えられる。また、圧縮データの復号が完了した時点でその圧縮データの読み出しに割り当てたバッファ領域を解放する態様も考えられる。圧縮データの復号が完了した以上、当該バッファ領域に格納されている圧縮データを用いて再度復号化を行う必要はないと考えられるからである。
【0010】
また、ROMから圧縮データを読み出す際の読み出し態様としては、データ末尾の端数を除いて所定のデータ量ずつ読み出す態様や、コードバッファ管理手段にかかっている処理負荷或いは上記読み出しに利用可能な帯域幅に応じてデータ読み出し量を動的に調整(処理負荷が軽いほど或いは帯域幅が広いほどデータ読み出し量を多くするなど)しつつ読み出す態様が考えられる。例えば前者の態様の具体例としては、ROMから読み出す圧縮データのデータサイズに応じてデータ読み出し量を調整する態様(データサイズが大きいほど一回当りのデータ読み出し量を多くする態様)やROMに格納されている圧縮データのデータサイズの分布に応じて、データ読み出し量を調整する態様が考えられる。
【図面の簡単な説明】
【0011】
【図1】この発明による画像処理装置の一実施形態である画像表示LSI100を含むアミューズメント機器の構成を示すブロック図である。
【図2】同実施形態において属性データ記憶部102に記憶されるスプライト属性データの内容を示す図である。
【図3】同実施形態におけるコードバッファ管理テーブル104Cの格納内容の一例を示す図である。
【図4】同実施形態におけるワークメモリ108と管理テーブル109との関係を示す図である。
【図5】同実施形態において実行される各表示対象についての画像データ生成処理の実行手順を説明する図である。
【図6】同実施形態における各表示対象についての画像データ生成処理の実行スケジュールを例示する図である。
【図7】同実施形態における複数の復号化処理の並列実行の態様を示す図である。
【図8】同実施形態において行われる1ライン分の描画処理を示す図である。
【発明を実施するための形態】
【0012】
以下、図面を参照し、この発明の実施の形態を説明する。
(A:構成)
図1は、この発明による画像処理装置の一実施形態である画像表示LSI(Large Scale Integrated circuit;大規模集積回路)100を含むアミューズメント機器の構成を示すブロック図である。図1では、画像表示LSI100の機能の理解を容易にするため、同画像表示LSI100に接続されたホストCPU201と、LCD(Liquid Crystal Display;液晶表示器)202と、ROM203が同画像表示LSI100とともに図示されている。これらのうちホストCPU201は、アミューズメント機器全体を制御するプロセッサであり、画像表示LSI100に対しては、LCD202にスプライトやアウトラインフォント等の画像を表示させるためのコマンドやデータを供給する。ROM203には、各種のスプライト、アウトラインフォント等の表示対象についての圧縮形式または非圧縮形式の画像データやアルファブレンディングに用いる圧縮形式または非圧縮形式のアルファデータが記憶されている。
【0013】
図1に示すように、画像表示LSI100は、CPUインタフェース101と、属性データ記憶部102と、コントローラ103と、ROMインタフェース104と、画像データ生成部105と、復号化部106と、MMU(Memory Management Unit;メモリ管理装置)107と、SRAM(Static Random Access Memory;スタティックランダムアクセスメモリ)等によるワークメモリ108と、管理テーブル109と、画像出力部110と、ラインバッファ描画部112とを有している。
【0014】
CPUインタフェース101は、ホストCPU201から供給されるコマンドやデータを受け取って、画像表示LSI100内の関係する各部に供給するインタフェースである。属性データ記憶部102は、ホストCPU201からCPUインタフェース101を介して供給される属性データを記憶する回路である。ここで、属性データは、スプライト、アウトラインフォント等の各表示対象の表示属性を示すデータであり、各垂直走査期間において、LCD202に表示する表示対象毎にホストCPU201から供給され、CPUインタフェース101によって属性データ記憶部102に格納される。
【0015】
図2はこの種の属性データの一例としてスプライトの表示属性を示すスプライト属性データの内容を示すものである。このスプライト属性データにおいて、Y表示位置DOYおよびX表示位置DOXは、LCD202の表示画面における当該スプライトの左上頂点の垂直方向表示位置および水平方向表示位置を各々指定するデータである。パターンネームPNは、ROM203内の当該スプライトの画像データへのアクセスに用いるパターンネーム、具体的には当該画像データのROM203内における格納開始アドレスである。YスプライトサイズSZYおよびXスプライトサイズSZXは、当該スプライトのY方向のドット数およびX方向のドット数を示す。表示色モードCLMおよびパレット選択データPLTIは、当該スプライトの各構成ドットの表示色の演算に用いられるデータである。アルファブレンディングモードMXSLおよびアルファ係数MXは、当該スプライトの構成ドットとその背景の構成ドットとの間で行うアルファブレンディングの態様を指定するデータである。Y拡大縮小率MAGYは、当該スプライトのYスプライトサイズSZYに対するLCD202の表示画面における当該スプライトのY方向のドット数の比率、X拡大縮小率MAGXは、当該スプライトのXスプライトサイズSZXに対するLCD202の表示画面における当該スプライトのX方向のドット数の比率である。このY拡大縮小率MAGYおよびX拡大縮小率MAGXと、上述したYスプライトサイズSZYおよびXスプライトサイズSZXと、Y表示位置DOYおよびX表示位置DOXとに基づき、LCD202の表示画面における当該スプライトの各構成ドットの垂直方向および水平方向の位置を算出することができる。
【0016】
透明色指定データTPは、当該スプライトの表示時に当該スプライト内に透明な表示対象として扱うドットがあるか否かを指定するデータである。圧縮非圧縮指定データCOMPEは、ROM203に記憶された当該スプライトの画像データが圧縮形式の画像データであるか非圧縮形式の画像データであるかを示すデータである。圧縮モードCOMPMは、当該スプライトの画像データが圧縮形式の画像データである場合における圧縮アルゴリズムを指定するデータである。
【0017】
仮想アドレスWADRSは、当該スプライトの画像データをワークメモリ108に格納する際に、当該スプライトの画像データを識別するために発生される仮想アドレスのうち最初に発生される仮想アドレスである。LOCKビットは、当該スプライトの画像データをロックするか否か、すなわち、当該スプライトの画像データを記憶しているワークメモリ108内の格納領域への上書きを禁止するか否かを示すビットである。NODECビットは、当該スプライトの画像データの復号化処理が不要か否かを示すビットである。ULOCKビットは、当該スプライトの画像データのロックを解除するか否かを示すビットである。
【0018】
コントローラ103は、各垂直走査期間において、各表示対象の画像データのLCD202での表示に先行して、各表示対象の画像データの生成を画像データ生成部105に順次指令する回路である。具体的には、コントローラ103は、各垂直走査期間において、属性データ記憶部102に記憶された各表示対象の属性データに基づき、各表示対象の画像データを生成する処理の実行スケジュールを作成し、この実行スケジュールに従って、各表示対象についての画像データ生成指示を画像データ生成部105に供給する。なお、このコントローラ103によって行われる実行スケジュールの作成については、説明の重複を避けるため、本実施形態の動作説明において詳細を明らかにする。
【0019】
画像出力部110は、各々1ライン分の画像データを記憶可能な容量を持ったラインバッファ111Aおよび111Bを有している。これらのラインバッファ111Aおよび111Bは、一方が書き込み用ラインバッファ、他方が読み出し用ラインバッファとされ、LCD202の水平同期信号に同期して、その時点までに書き込み用ラインバッファであったものが読み出し用ラインバッファとされ、読み出し用ラインバッファであったものが書き込み用ラインバッファとされる。各水平走査期間では、読み出し用ラインバッファに記憶された1ライン分の画像データが読み出され、LCD202に供給されて表示される一方、1水平走査期間後に表示される1ライン(以下、表示予定ラインという)分の画像データがラインバッファ描画部112によって書き込み用バッファに書き込まれる。なお、ラインバッファ描画部112については後述する。
【0020】
ROMインタフェース104には、ROM203が接続される。ROMインタフェース104は、画像データ生成部105から与えられる指示に応じてROM203から圧縮形式または非圧縮形式の画像データを読み出し、画像データ生成部105に出力する。図1に示すように、ROMインタフェース104は、コントローラ104A、コードバッファ104Bおよびコードバッファ管理テーブル104Cを含んでいる。コードバッファ104Bは、ROM203から読み出される圧縮形式または非圧縮形式の画像データを一時的に記憶するバッファである。本実施形態では、後述する復号化部106が複数のスプライト等の圧縮データの復号化処理を時分割制御により並列実行する場合があるため、コードバッファ104Bには、スプライト等の圧縮データを一次記憶するための複数のバッファ領域(本実施形態では、16個のバッファ領域)が設けられている。コードバッファ104Bに設けるバッファ領域の数については、水平走査方向に並べて配置可能なスプライト等の個数の上限に応じて定めれば良い。
【0021】
コントローラ104Aは、画像データ生成部105から圧縮形式または非圧縮形式の画像データの読み出しを指示される毎に、複数のバッファ領域のうちの未割り当てのもの(すなわち、他の画像データの読み出しに使用されていないもの)を1つ選択して当該画像データの読み出しに割り当て、当該バッファ領域に空がある間、当該画像データを所定データ量ずつROM203から読み出して当該バッファ領域に書き込む処理を行う。コードバッファ管理テーブル104Cには、各バッファ領域の使用状況(画像データの読み出しに使用されているか否かなど)を示す情報が格納される。コントローラ104Aはコードバッファ管理テーブル104Cの格納内容を参照して、未割り当てのバッファ領域の選択等を行う。このように、コントローラ104Aとコードバッファ管理テーブル104Cは、画像データ生成部105により読み出しを指示された画像データに対するバッファ領域の割り当て、および当該バッファ領域への画像データの書き込み、を制御するコードバッファ管理手段の役割を果たす。
【0022】
より詳細に説明すると、コードバッファ管理テーブル104Cには、コードバッファ104Bの各バッファ領域に対応付けて当該バッファ領域に読み込む画像データ(本実施形態では、スプライト)に関する情報および当該バッファの使用状況を示す情報が格納される。コントローラ104Aは、コードバッファ管理テーブル104Cの格納内容の参照および更新を行うことで、読み出しを指示された画像データに対するバッファ領域の割り当て、各バッファ領域へのデータの書き込み或いはバッファ領域からのデータの読み出し、およびバッファ領域の解放を行う。図3は、コードバッファ管理テーブル104Cの格納内容の一例を示す図である。図3に示すように、コードバッファ管理テーブル104Cには、コードバッファ104Bの複数のバッファ領域の各々を示すコードバッファ番号CPに対応付けて、使用状態ビットvalid、スプライトネームSPN、ラスタブロックサイズRBS、仮想メモリアドレスVMA、仮想メモリ最終アドレスVMEA、仮想メモリワークアドレスVMWA、ROMアドレスRA、コードバッファリードポインタCBRP、およびコードバッファライトポインタCBWPが格納される。
【0023】
コードバッファ番号CPは、コードバッファ104B内の複数のバッファ領域の各々を一意に識別するための識別子であり、具体的には、コードバッファ140Bの記憶領域における各バッファ領域の先頭アドレスである。使用状態ビットvalidは、当該使用状態ビットvalidに対応するバッファ領域(当該使用状態ビットvalidに対応付けてコードバッファ管理テーブル104Cに格納されているコードバッファ番号CPの示すバッファ領域:以下、同様)が画像データの読み出しに割り当てられているか否かを示す。この使用状態ビットvalidには、対応するバッファ領域が画像データの読み出しに割り当てられている場合には“1”がセットされ、逆に未割り当てであれば“0”がセットされる。スプライトネームSPNには、対応するバッファ領域に読み出される画像データの表すスプライトのスプライト番号が格納され、ラスタブロックサイズRBSには、同スプライトのラスタブロックサイズ(当該画像データが圧縮データであればその復号を行う際の処理単位)がセットされる。
【0024】
仮想メモリアドレスVMAには、対応するバッファ領域に読み出される画像データ(圧縮形式の画像データであれば、その圧縮データを復号して得られる画像データ)についての仮想メモリ空間におけるラスタブロックの先頭アドレスがセットされ、仮想メモリ終了アドレスVMEAには、同最終ラスタブロックの先頭アドレスがセットされる。仮想メモリワークアドレスVMWAには、当該バッファ領域に読み出された画像データの処理の際に画像データ生成部105(圧縮形式の画像データであれば、画像データ生成部105および復号化部106)が使用するワークメモリの先頭アドレスがセットされる。ROMアドレスRAには、当該バッファ領域に読み込むべき画像データについてのROM203における格納アドレスがセットされる。コードバッファリードポインタCBRPは、当該バッファ領域におけるビット単位のリードポインタであり、コードバッファライトポインタCBWPは、対応するバッファ領域におけるビット単位のライトポインタである。ここで、リードポインタとは、バッファ領域から未処理のデータ(圧縮形式の画像データあれば未復号のデータ)の読み出し開始位置を示すポインタであり、ライトポインタとはバッファ領域に新たなデータを書き込む際の書き込み開始位置を示すポインタである。コードバッファリードポインタCBRPおよびコードバッファライトポインタCBWPの初期値は、対応するバッファ領域の先頭アドレスである。
【0025】
コントローラ104Aは、画像データ生成部105から圧縮形式または非圧縮形式の画像データの読み出しを指示されると、まず、各バッファ領域の使用状態ビットvalidを参照し、使用状態ビットvalidが“0”のバッファ領域のうちの1つ(例えば、コードバッファ番号CPが最も若いもの)を選択する。そして、コントローラ104Aは、選択したバッファ領域のコードバッファ番号CPに対応付けてコードバッファ管理テーブル104Cに格納されているスプライトネームSPNに当該読み出しを指示された画像データの表すスプライトのスプライト番号をセットする等、コードバッファ管理テーブル104Cの格納内容を更新し、さらに当該コードバッファ番号CPに対応する使用状態ビットvalidを“1”に更新する。これにより、画像データ生成部105から読み出しを指示された画像データに対するバッファ領域の割り当てが実現される。
【0026】
以降、コントローラ104Aは、仮想メモリ終了アドレスVMEAを先頭アドレスとして格納するべきデータが画像データ生成部105によって生成(或いは復号化部106によって復号)されるまで、以下の(S1)、(S2)および(S3)の処理を繰り返し実行する。
(S1)当該バッファ領域に空きがある間(すなわち、コードバッファライトポインタCBWPが当該バッファ領域の末尾に達するまで)、上記画像データを所定データ量ずつROM203から読み出して当該バッファ領域に書き込み、コードバッファライトポインタCBWPを更新する処理。
(S2)当該バッファ領域からデータを読み出して画像データ生成部105(或いは復号化部106)に与え、コードバッファリードポインタCBRPを更新する処理。
(S3)コードバッファライトポインタCBWPとコードバッファリードポインタCBRPの両者がバッファ領域の末尾に達したことを契機として両者を初期値にリセットする処理。
そして、コントローラ104Aは、仮想メモリ終了アドレスVMEAを先頭アドレスとして格納するべきデータが画像データ生成部105によって生成(或いは復号化部106によって復号)されると、使用状態ビットvalidを“0”に戻して上記割り当てを解除する。
以上がROMインタフェース104の構成である。
【0027】
画像データ生成部105は、復号化部106を利用することにより、コントローラ103からの画像データ生成指示により指示された表示対象の画像データを生成し、MMU107を介してワークメモリ108に格納する画像データ生成処理を実行する回路である。
【0028】
さらに詳述すると、画像データ生成処理では、画像データ生成部105は、コントローラ103から表示対象(例えばスプライトとする)についての画像データ生成指示を受け取ったとき、属性データ記憶部102内の当該スプライトのスプライト属性データを参照してパターンネームPNを取得し、当該パターンネームPNの示す画像データの読み出しをROMインタフェース104に指示する。前述したように、ROMインタフェース104のコントローラ104Aは、画像データ生成部105により画像データの読み出しを指示されると、コードバッファ104Bの複数のバッファ領域のうちの未割り当てのものを1つ選択し、該当する画像データをROM203から読み出して当該バッファ領域に書き込む。また、画像データ生成部105は、当該スプライトの画像データが圧縮形式の画像データであることをスプライト属性データの圧縮非圧縮指定データCOMPEが示している場合には、スプライト属性データの圧縮モードCOMPMを復号化部106に通知するとともに、ROM203からコードバッファ104Bに読み出された画像データ(この場合は圧縮データ)を復号化部106に供給する処理をコントローラ104Aに実行させ、復号化部106にその圧縮データの復号化処理を実行させる。
【0029】
本実施形態では、復号化部106があるスプライトの圧縮データの復号化処理を開始した後、その復号化処理が終了する前に、別のスプライトの圧縮データの復号化処理の実行を画像データ生成部105から命じられる場合がある。このような要求に対応するため、復号化部106は、時分割制御により複数のスプライトについての復号化処理を並列実行可能な構成となっている。コードバッファ104Bには複数のバッファ領域が設けられており、これら複数のバッファ領域のうちの未割り当てのものを1つ選択してROM203から画像データを読み出す処理がコントローラ104Aによって実行される。そして、復号化部106は、コードバッファ104Bの各バッファ領域から各スプライトの圧縮データを順次読み出して、復号化処理を実行する。
【0030】
画像データ生成処理では、このような復号化処理により得られる各スプライトの画像データを後述するワークメモリ108の1ページの記憶容量に対応したデータ量に区切り、区切った各画像データについて仮想アドレスを生成する。
【0031】
この仮想アドレスの生成方法には各種の態様が考えられる。ある好ましい態様では、復号化処理により得られたスプライトを構成する各ドットについて仮想アドレスを発生する。具体的には、そのスプライトのパターン名に基づいて、例えばそのスプライトを構成する各ドットの仮想アドレスの上位アドレスを決定し、そのスプライトを構成する各ドットのスプライト内のYアドレスおよびXアドレスに基づいて、各ドットの仮想アドレスの中位アドレスおよび下位アドレスを決定する。スプライト内において各ドットのラスタスキャンを行った場合において、各ドットの仮想アドレスがラスタスキャン順に1LSBずつ大きくなるように、各ドットの仮想アドレスを定めるのである。そして、スプライトの画像データを複数ページに区切る場合には、各ページの最初のエリアに格納するドットの仮想アドレスを各ページに対応した仮想アドレスとするのである。
【0032】
画像データ生成処理では、このようにして生成した画像データと仮想アドレスとをMMU107に供給し、画像データをワークメモリ108に格納させる。また、画像データ生成処理では、スプライトの画像データについて生成した仮想アドレスのうち最初のもの(例えばスプライトの左上頂点のドットの仮想アドレス)を当該スプライト属性データの一部である仮想アドレスWADRSとして属性データ記憶部102に格納する。
【0033】
MMU107、ワークメモリ108および管理テーブル109は、仮想メモリシステムを構成している。図4はワークメモリ108と管理テーブル109との関係を示す図である。図4に示すように、ワークメモリ108の実アドレス空間は、所定容量(例えば256バイト)のページに区切られている。管理テーブル109は、ワークメモリ108の各ページに対応付けて、当該ページに記憶されたデータの仮想アドレスと、当該ページ内のデータをロックするか否か、すなわち、当該ページへのデータの上書きを禁止する否かを示すPLOCKビットと、当該ページに有効な画像データが記憶されているか否かを示すVALIDビットとを格納するテーブルである。ここで、各ページに対応したPLOCKビットは当該ページ内のデータをロックするときには“1”、ロックしないときには“0”とされる。また、各ページに対応したVALIDビットは当該ページ内のデータが有効であるときには“1”、無効であるときには“0”とされる。
【0034】
MMU107は、画像データ生成部105からあるスプライトの画像データと仮想アドレスとを受け取ったとき、ワークメモリ108の各ページの中から管理テーブル109内のVALIDビットが“0”になっているページを探し、そのページを画像データの書き込み先とする。そして、MMU107は、属性データ記憶部102内のそのスプライトに対応した属性データのLOCKビットを参照し、そのスプライトのLOCKビットが“0”であれば、そのスプライトの画像データの書き込み先であるページに対応したPLOCKビットを“0”とし、そのスプライトのLOCKビットが“1”であれば、そのスプライトの画像データの書き込み先であるページに対応したPLOCKビットを“1”とする。そして、MMU107は、スプライトの画像データの書き込み先であるページへの書き込みを開始し、書き込みが完了したときVALIDビットを“1”とする。
【0035】
管理テーブル109においてVALIDビットが“1”となっているページ内の画像データが後述する描画処理により読み出され、表示に使用された場合、MMU107は、当該VAILDビットの更新を行う。すなわち、MMU107は、管理テーブル109において当該ページに対応したPLOCKビットが“0”になっている場合、当該ページに対応したVALIDビットを“0”とし、当該ページに対応したPLOCKビットが“1”になっている場合、当該ページに対応したVALIDビットを“1”のままにする。
【0036】
ラインバッファ描画部112は、各水平走査期間において、次の水平走査期間においてLCD202に表示させる1ライン分の画像データを生成し、この1ライン分の画像データを画像出力部110の書き込み用ラインバッファに書き込む描画処理を実行する手段である。
【0037】
この描画処理では、属性データ記憶部102内の各属性データを参照することにより、表示予定ラインが横切る各表示対象(例えばスプライトとする)を探索し、その探索結果である各スプライトの画像データのうち表示予定ライン上を占める1ライン分の各スプライトの画像データをMMU107を介してワークメモリ108から読み出す。
【0038】
ここで、表示対象がスプライトを拡大または縮小したものである場合もある。そのような場合、そのスプライトのスプライト属性データのY拡大縮小率MAGYおよびX拡大縮小率MAGXに従って拡大縮小処理を施した場合の画像データ、すなわち、Y方向サイズがSZY*MAGY(*は乗算)、X方向サイズがSZX*MAGXのスプライトの画像データを想定する。そして、この画像データにおいて表示予定ライン上を占める画像データを得るためのバイリニアフィルタ演算に用いる画像データ(スプライトにおいて拡大縮小後に表示予定ラインを挟むこととなる2本のライン上の画像データ)の仮想アドレスを演算し、その仮想アドレスに対応した画像データをMMU107を介してワークメモリ108から読み出し、当該表示ライン上を占める画像データを演算する。
【0039】
そして、描画処理では、必要に応じて各スプライト間でアルファブレンディングを行いながら、ワークメモリ108から読み出したデータに基づいて生成した各スプライトの1ライン分の画像データを、各スプライトのスプライト属性データの属性データ記憶部102内での並び順に合わせて順次重ね合わせ、表示予定ライン上の画像データを生成する。このような作業を画像出力部110の書き込み用バッファを使用して行うのである。
【0040】
(B:動作)
図5は本実施形態において実行される複数のスプライトについての画像データ生成処理の実行手順を説明する図である。また、図6は図5に示す各スプライトについての画像データ生成処理の実行スケジュールを例示する図である。図7は、本実施形態における複数の復号化処理の並列実行の態様を示す図である。以下、これらの図を参照し、本実施形態の動作を説明する。
【0041】
ある垂直走査期間において、属性データ記憶部102に、図5左側に示すように、スプライトSP0〜SP4のスプライト属性データが記憶されていたとする。この場合において、コントローラ103は、各スプライト属性データのY表示位置DOYおよびX表示位置DOXと、YスプライトサイズSZYおよびXスプライトサイズSZXとに基づき、各スプライトSP0〜SP4の画像データ(復号化処理を経ており、拡大縮小処理を経ていないもの)がそのままLCD202に表示された場合における表示画面内の占有領域を求める。図5右側はその結果を示すものである。
【0042】
次にコントローラ103は、各スプライトを所定ライン数からなるラスタブロックに区切り、ラスタブロック単位で画像データ生成処理の実行スケジュールを生成する。さらに詳述すると、コントローラ103は、各ラスタブロックの表示画面内での位置を求める。図5右側に示す例では、スプライトSP0はLCD202の表示画面の全領域を占める背景画像であり、ラスタブロックSP0−0〜SP0−6に分割されている。また、スプライトSP1はラスタブロックSP1−0〜SP1−2に分割され、スプライトSP2はラスタブロックSP2−0〜SP2−1に分割され、スプライトSP3はラスタブロックSP3−0〜SP3−2に分割され、スプライトSP4はラスタブロックSP4−0〜SP4−2に分割されている。
【0043】
次にコントローラ103は、表示画面の上から下に向かって、ラスタブロックを探索してゆく。この場合、表示画面を上から下に探索してゆくと、各ラスタブロックが、SP0−0→SP4−0→SP0−1→SP2−0→SP4−1→…→SP0−6→SP1−2という順に出現する。そこで、コントローラは、この表示画面を上から下へ探索していったときの各ラスタブロックの出現順に、各ラスタブロックについての画像データ生成処理の実行する旨の実行スケジュールを作成する。その結果を図6に示す。
【0044】
図6において、SEQ_NOは、各ラスタブロックの画像データ生成処理の実行の順番である。図5によると、ラスタブロックSP0−1の最上ラインとラスタブロックSP2−0の最上ラインは、表示画面における垂直方向の位置が同じである。しかし、属性データ記憶部102において、ラスタブロックSP0−1が属するスプライトSP0のスプライト属性データは、ラスタブロックSP2−0が属するスプライトSP2のスプライト属性データよりも前のアドレスに記憶されている。このため、ラインバッファ描画部112は、ラスタブロックSP0−1およびラスタブロックSP2−0を横切る表示予定ライン上の画像データを生成する際、まず、ラスタブロックSP0−1における表示予定ライン上の画像データをワークメモリ108から読み出して画像出力部110の書き込み用ラインバッファに書き込み、次にラスタブロックSP2−0における表示予定ライン上の画像データをワークメモリ108から読み出して画像出力部110の書き込み用ラインバッファに書き込むことになる。このように、ラスタブロックSP0−1とラスタブロックSP2−0とでは、ラスタブロックSP0−1の画像データの方が描画処理に先に使用されるので、図6に示す実行スケジュールでは、ラスタブロックSP0−1はSEQ_NO=3、ラスタブロックSP2−0はSEQ_NO=4としている。他の同時に出現する複数のラスタブロックについても同様な取扱いをしている。
【0045】
そして、コントローラ103は、このようにして得られた実行スケジュールにおいて、SEQ_NO=1にスケジューリングされたラスタブロックSP0−0の画像データ生成処理からSEQ_NO=18にスケジューリングされたラスタブロックSP1−2の画像データ生成処理までの各画像データ生成処理の実行指示を画像データ生成部105に順次送るのである。その際、コントローラ103は、各ラスタブロックのLCD202での表示に間に合うように、各ラスタブロックについての画像データ生成処理の実行指示の出力タイミングを、各ラスタブロックの表示タイミングに対して所定の余裕時間だけ先行させる。
【0046】
画像データ生成部105では、このようにしてコントローラ103から出力される実行指示を受け取ると、実行指示により指示されたラスタブロックについての画像データ生成処理(復号化部106に実行させる復号化処理を含む)を実行する。この場合において、画像データ生成部105が、あるスプライトの最初のラスタブロックについての画像データ生成処理の実行指示を受け取ったとき、先行して開始した他のスプライトの全てのラスタブロックについての画像データ生成処理が完了していない場合がある。このような場合、画像データ生成部105は、複数のスプライトについての画像データ生成処理を時分割制御により並列実行する。図7はこの場合の画像データ生成処理の並列実行の態様を示すものである。
【0047】
本実施形態では、スプライトの圧縮データのコードバッファ104Bへの取り込みをスプライト単位で行い、各スプライトの画像データ生成処理(復号化処理を含む)をラスタブロック単位で切り換えて実行する。さらに詳述すると、次の通りである。
【0048】
まず、画像データ生成部105は、あるスプライト(例えばスプライト1とする)の最初のラスタブロックについての画像データ生成処理の実行指示を受け取ったとき、そのスプライト1のスプライトネームPNをROMインタフェース104に与え、ROM203からの画像データの読み出しを指示する。この指示に応じて、ROMインタフェース104のコントローラ104Aは、コードバッファ104Bの複数のバッファ領域のうち、その時点において未割り当てのバッファ領域のうちの1つをコードバッファ管理テーブル104Cの格納内容を参照して選択する。以下では、バッファ領域CB0が選択され、このバッファ領域CB0のコードバッファ番号CPは0であるとする。
【0049】
次いで、コントローラ104Aは、コードバッファ番号CP=0に対応付けてコードバッファ管理テーブル104Cに格納されているスプライトネームSPN、ラスタブロックサイズRBS、仮想メモリアドレスVMA、仮想メモリ最終アドレスVMEA、仮想メモリワークアドレスVMWA、およびROMアドレスRAにスプライト1に対応したデータをセットし、さらにコードバッファリードポインタCBRP、およびコードバッファライトポインタCBWPに初期値(バッファ領域CB0の先頭を示す値)をセットし、使用状態ビットvalidを“1”に書き換える。これにより、バッファ領域CB0がスプライト1の画像データの読み出しに割り当てられ、その画像データの読み出しに使用されるのである。そして、コントローラ104Aは、スプライト1の圧縮データをROM203から読み出してバッファ領域CB0に格納する処理を、バッファ領域CB0に空きがある間継続する。この間、コントローラ104Aは、バッファ領域CB0に圧縮データを書き込む毎に、バッファ領域CB0に対応するコードバッファライトポインタCBWPを更新する。
【0050】
次いで、画像データ生成部105は、スプライト1の最初のラスタブロックの画像データ生成処理を立ち上げる。この画像データ生成処理において、復号化部106は、コントローラ104Aを介してバッファ領域CB0から圧縮データを読み出して、その復号化を行い、スプライト1の最初のラスタブロックの画像データを生成する。これと並列に、コントローラ104Aは、バッファ領域CB0からの画像データの読み出しに応じてコードバッファ管理テーブル104Cの格納内容(具体的には、コードバッファ番号CP=0に対応付けられたコードバッファリードポインタCBRP)を更新する。画像データ生成部105は、復号化部106によって生成された画像データと、この画像データについて発生した仮想アドレスとをMMU107に送り、ワークメモリ108に格納させる。この場合、MMU107は、画像データ生成部105から矩形領域(ラスタブロックをページ容量に合わせて区切ったもの)の各画素の画像データをラスタスキャン順に選択し、例えばページ内の連続した記憶領域に順次格納する。
【0051】
次に、画像データ生成部105がスプライト1の最初のラスタブロックの画像データ生成処理を実行している間に、画像データ生成部105に対して、他のスプライト(例えばスプライト2とする)の最初のラスタブロックについての画像データ生成処理の実行指示が与えられたとする。この場合、画像データ生成部105は、そのスプライト2の圧縮データの取り込みをROMインタフェース104のコントローラ104Aに指示する。この指示に応じて、コントローラ104Aは、その時点において未割り当てのバッファ領域のうちの1つをコードバッファ管理テーブル104Cの格納内容を参照して選択する。以下では、バッファ領域CB3が選択され、このバッファ領域CB3のコードバッファ番号CPは3であるとする。コントローラ104Aは、前述したスプライト1の圧縮データの読み出しの場合と同様に、バッファ領域CB3をスプライト2の圧縮データの読み出しに割り当て、当該圧縮データをROM203から読み出してバッファ領域CB3に格納する処理を、バッファ領域CB3に空きがある間継続する。この間、コントローラ104Aは、バッファ領域CB3に圧縮データを書き込む毎に、バッファ領域CB3に対応するコードバッファライトポインタCBWPを更新する。
【0052】
次いで、画像データ生成部105は、スプライト1の最初のラスタブロックの画像データ生成処理が完了するのを待って、スプライト2の最初のラスタブロックの画像データ生成処理を立ち上げる。その際、画像データ生成部105は、スプライト1の最初のラスタブロックの画像データ生成処理の処理結果をスタックに退避させる。この処理結果がスプライト1の後続のラスタブロックについての復号化処理等に必要になるからである。
【0053】
そして、新たに立ち上げられた画像データ生成処理において、復号化部106は、コントローラ104Aを介してバッファ領域CB3から圧縮データを読み出してその復号化を行い、スプライト2の最初のラスタブロックの画像データを生成する。コントローラ104Aは、前述したバッファ領域CB0からの画像データの読み出しの際と同様に、バッファ領域CB3からの画像データの読み出しに応じてコードバッファ管理テーブル104Cの格納内容(具体的には、コードバッファ番号CP=3に対応するコードバッファリードポインタCBRP)を更新する。画像データ生成部105は、復号化部106によって生成された画像データと、その画像データについて発生した仮想アドレスとをMMU107に送り、ワークメモリ108に格納させる。
【0054】
その後、画像データ生成部105がスプライト2の最初のラスタブロックの画像データ生成処理を実行している間に、画像データ生成部105に対して、スプライト1の2番目のラスタブロックについての画像データ生成処理の実行指示が与えられたとする。この場合、画像データ生成部105は、スプライト2の最初のラスタブロックの画像データ生成処理が完了するのを待って、スプライト1の2番目のラスタブロックの画像データ生成処理を立ち上げる。そして、画像データ生成部105は、スタックに退避させた上記処理結果を取り込んで、スプライト1の2番目のラスタブロックの画像データ生成処理を実行する。
【0055】
この画像データ生成処理において、復号化部106は、バッファ領域CB0に対応するコードバッファリードポインタCBRPが示す位置から圧縮データの読み出しをコントローラ104Aに再開させ、読み出された圧縮データの復号化を行い、スプライト1の2番目のラスタブロックの画像データを生成する。画像データ生成部105は、復号化部106によって生成された画像データと、その画像データについて発生した仮想アドレスとをMMU107に送り、ワークメモリ108に格納させる。以後、ラスタブロックについての画像データ生成処理の実行指示が画像データ生成部105に与えられる都度、同様な処理が繰り返される。
【0056】
前述したように、本実施形態では、スプライトの画像データの読み出しにコードバッファ104Bの何れかのバッファ領域が割り当てられると、当該バッファ領域に格納されたスプライトの圧縮データが全て読み出され、当該スプライトについての復号化処理が完了するまで、その割り当てが維持される。従って、復号化部106は、最大、コードバッファ104B内のバッファ領域と同じ個数のスプライトの圧縮データについての復号化処理を並列実行することが可能である。
【0057】
前掲図6には、各スプライトの圧縮データを格納するのに使用されたコードバッファ104Bのバッファ領域が示されている。この図6に示す例では、スプライトSP1の最初のラスタブロックSP1−0についての画像データ生成処理の実行指示(SEQ_NO=13)が発生するとき、コードバッファ104Bのバッファ領域CB1に格納されたスプライトSP4の圧縮データは全て読み出され、スプライトSP4の全ラスタブロックについての画像データ生成処理(復号化処理を含む)が完了している。このため、スプライトSP1の最初のラスタブロックSP1−0についての画像データ生成処理の実行指示が発生したとき、コントローラ104Aは、その時点において空いているバッファ領域CB1にスプライトSP1の圧縮データを取り込んでいる。
【0058】
ラインバッファ描画部112は、上述した画像データ生成処理を繰り返す間、これと並行し、水平同期信号に同期して、1ライン分の画像データの描画処理を繰り返す。図8はこの1ライン分の描画処理の内容を例示するものである。
【0059】
まず、図8(a)では、前掲図5の例において、拡大縮小処理を経たラスタブロックSP4−2、SP3−0、SP0−2を横切る位置に表示予定ラインがある。ここで、各スプライトのスプライト属性データが図5左側に示すように属性データ記憶部102に記憶されているものとすると、ラインバッファ描画部112は、表示予定ラインが横切る拡大縮小後のラスタブロックSP4−2、SP3−0、SP0−2のうちラスタブロックSP0−2の画像データであって、表示予定ライン上に位置する1ライン分の画像データを最初の生成対象とする。何故ならばラスタブロックSP4−2、SP3−0、SP0−2が各々属する各スプライトのスプライト属性データは、SP0→SP3→SP4の順に属性データ記憶部102に記憶されているからである(図5左側参照)。そして、ラインバッファ描画部112は、ラスタブロックSP0−2の表示予定ライン上の1ライン分の画像データを生成するための画像データをMMU107を介してワークメモリ108から読み出し、この読み出しデータを用いて拡大縮小処理を実行し、1ライン分の画像データを生成し、画像出力部110の書き込み用ラインバッファに書き込む(図8(b)参照)。
【0060】
次にラインバッファ描画部112は、拡大縮小後のラスタブロックSP3−0の画像データであって、表示予定ライン上に位置する1ライン分の画像データを生成するのに必要な画像データをMMU107を介してワークメモリ108から読み出す(図8(c)参照)。そして、スプライトSP3のスプライト属性データにおいてアルファブレンディングを行うべき旨の指定がされている場合には、ラスタブロックSP3−0の一部である表示予定ライン上の画像データと、既に画像出力部110の書き込み用ラインバッファに記憶されたラスタブロックSP0−2の一部である1ライン分の画像データとを用いてアルファブレンディングを実行する。これにより、アルファブレンディング後の1ライン分の画像データが書き込み用ラインバッファ内に残る(図8(d)参照)。
【0061】
次にラインバッファ描画部112は、拡大縮小後のラスタブロックSP4−2の画像データであって、表示予定ライン上に位置する1ライン分の画像データを生成するのに必要な画像データをMMU107を介してワークメモリ108から読み出す(図8(e)参照)。そして、スプライトSP4のスプライト属性データにおいてアルファブレンディングを行うべき旨の指定がされている場合には、このラスタブロックSP4−2の一部である表示予定ライン上の画像データと、既に画像出力部110の書き込み用ラインバッファに記憶された1ライン分の画像データとを用いてアルファブレンディングを実行する。これによりアルファブレンディング後の1ライン分の画像データが書き込み用ラインバッファ内に残る(図8(f)参照)。
【0062】
以上のようにして表示予定ラインにおいて表示させる1ライン分の画像データが完成し、書き込み用バッファに格納される。そして、水平走査期間が切り換わると、書き込み用バッファは読み出し用バッファとなり、この読み出し用バッファに記憶された1ライン分の画像データが読み出されてLCD202に供給され、LCD202の表示画面に表示される。
【0063】
MMU107は、ラインバッファ描画部112が以上のような1ライン分の描画処理を水平同期信号に同期して繰り返す間、ワークメモリ108の各ページの画像データの読み出し状況を監視する。そして、あるページに記憶された最後の画像データが読み出されて1ライン分の描画処理に使用された場合、MMU107は、原則として、管理テーブル109において、そのページに対応付けられたVALIDビットを“0”とし、そのページを他の画像データの格納のために解放する。このようなページの解放動作により、ワークメモリ108の全ページが塞がるのを回避することができる。従って、少ない容量のワークメモリ108により、描画処理に用いる画像データを格納することができる。
【0064】
以上、スプライトの表示を中心に説明を行ったが、アウトラインフォント等の表示に関しても同様である。本実施形態によれば、コントローラ103は、各垂直走査期間において、各表示対象の画像データのLCD202での表示に先行して、各表示対象の画像データの生成を画像データ生成部105に順次指令し、画像データ生成部105は、指令された表示対象の画像データを生成し、仮想メモリとしてのワークメモリ108にMMU107を介して格納する。
【0065】
一方、ラインバッファ描画部112は、このワークメモリ108内の画像データに基づいて、各水平走査期間において表示する1ライン分の画像データを生成する。また、MMU107は、ワークメモリ108において画像データを記憶しているページのうち表示のために使用された画像データを記憶するページを新たな画像データの記憶に備えて解放する。従って、ワークメモリ108は、小容量のもので済む。また、画像データ生成部105が表示対象の画像データを生成する期間は、1水平走査期間内に限定されないので、非圧縮の画像データやライン単位での復号化が可能な低圧縮の画像データに限らず、ライン単位での復号化を行うことのできない高圧縮の画像データを用いて表示対象の画像データを生成することができる。従って、本実施形態によれば、ラインバッファ方式の画像処理装置でありながら、高解像度かつフルカラーの表示を実現することができるという効果がある。
【0066】
加えて、本実施形態においては、コードバッファ104Bは複数のバッファ領域を有しており、コントローラ104Aは、画像データ生成部105から圧縮データの読み出しを指示される毎にそれら複数のバッファ領域のうちの未割り当てのものを1つ選択し、当該圧縮データの読み出しに割り当てる。したがって、描画対象のラインが複数のスプライトを横切っている場合であっても、未割り当てのバッファ領域がある間は、描画対象のスプライトが切り換ってもバッファ領域の格納内容が破棄されることはなく、読み出し先のアドレスを切り換える必要もない。つまり、本実施形態によれば、ラインバッファ方式の画像処理装置において描画対象のラインが複数のスプライトを横切っている場合であっても、読み出し先のアドレスの切り換えに起因したオーバーヘッドが生じることはなく、表示性能が大きく低下することはない。
【0067】
(C:変形)
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば次の通りである。
(1)同一のスプライトについて複数の属性データが属性データ記憶部102に書き込まれる場合が考えられる。例えば同一のスプライト(例えばスプライトSPとする)を複数の表示位置(例えば表示位置P1およびP2とする)に表示させるような場合である。この場合の対処法に関する態様としては次の2つが考えられる。
【0068】
第1の態様では、コントローラ103は、同一内容の2個のスプライトSPの画像データを画像データ生成部105に生成させ、MMU107を介してワークメモリ108にそれらのスプライトSPの画像データを記憶させる。第2の態様では、コントローラ103は、1つのスプライトSPの画像データを画像データ生成部105に生成させ、MMU107を介してワークメモリ108にそれらのスプライトの画像データを記憶させる。
【0069】
第1の態様では、例えば表示位置がP1であるスプライトSPのみについて属性データのLOCKビットを“1”とした場合、表示位置がP1であるスプライトの画像データを記憶するページのPLOCKビットのみが“1”とされ、表示位置がP2であるスプライトの画像データを記憶するページのPLOCKビットは“0”とされる。この場合、PLOCKビットが“0”であるページは、記憶している画像データが表示に使用された時点で解放されるが、PLOCKビットが“1”であるページは、記憶している画像データが表示に使用されても解放されない。従って、一時的に2個のスプライトSPの画像データをワークメモリ108に記憶させる場合が起こりうるが、一方のスプライトSPの画像データが表示に使用された時点でその画像データを記憶していたページが解放されるので、ワークメモリ108に必要な記憶容量を節約することができる。
【0070】
第2の態様では、例えば表示位置がP1であるスプライトSPのみについて属性データのLOCKビットを“1”とした場合、そのLOCKビットが“0”となるまで、スプライトSPの画像データを記憶するページのPLOCKビットを“1”とする必要がある。従って、PLOCKビットの更新の制御がやや複雑になる。しかし、この第2の態様は、同一種類のスプライトSPの画像データを複数位置に表示させるような場合に、1個のスプライトSPの画像データのみをワークメモリ108に記憶させればよく、ワークメモリ108の記憶容量を節約することができる。
【0071】
(2)仮想アドレスの生成方法は、上記実施形態のものに限定されない。例えばスプライトの画像データを複数ページに分割してワークメモリ108に格納する場合、同一スプライトの画像データの各部を記憶する各ページに対応付ける仮想アドレスを連続したアドレスとしてもよい。要は、ラインバッファ描画部112が表示対象ライン上のスプライトの画像データを生成するとき、その素材となる画像データを記憶しているページに対応付けられた仮想アドレスをラインバッファ描画部112が属性データ記憶部102内の属性データを参照することにより求めることができればよい。
【0072】
(3)上記実施形態においてMMU107は、PLOCKビットが“0”であり、かつ、VALIDビットが“1”であるページに関して、そのページ内の全ての画像データがLCD202での表示に使用されたとき、そのページに対応したVALIDビットを“0”とし、そのページを他の画像データの記憶のために解放した。しかし、このようにする代わりに、1フレーム分の表示が終わる毎に、PLOCKビットが“0”であるページに対応したVALIDビットを“0”としてもよい。
【0073】
(4)上記実施形態では、コントローラ103の負担を減らすため、拡大縮小前の各ラスタブロックの表示位置に基づいて、各ラスタブロックの画像データ生成処理の実行スケジュールをコントローラ103に生成させた。しかし、コントローラ103の演算能力に余裕がある場合には、コントローラ103に属性データ記憶部102内のスプライトの拡大縮小率を参照させて、拡大縮小後の各ラスタブロックの表示位置を求めさせ、この拡大縮小後の各ラスタブロックの表示位置に基づいて、各ラスタブロックの画像データ生成処理の実行スケジュールを生成させてもよい。
【0074】
(5)上述した実施形態では、圧縮データの復号を完了した時点で当該圧縮データの読み出しに割り当てたバッファ領域を解放した。しかし、未割り当てのバッファ領域がある間は割り当て済みのバッファ領域の解放を行わず、未割り当てのバッファ領域がない状態において新たな圧縮データの読み出しを指示された時点で何れかのバッファ領域を解放し、当該新たな圧縮データの読み出しに割り当てるようにしても良い。なお、割り当て済みのバッファ領域のうちの何れを解放するのかについては、直近の所定期間における使用頻度(バッファ領域からのデータの読み出し頻度)が最も低いバッファ領域を解放する態様や、最も古い割り当てのバッファ領域を解放する態様が考えられる。
【0075】
(6)ROM203からコードバッファ104Bのバッファ領域に画像データを読み出す際のデータ読み出し量を当該画像データのデータサイズに応じて調整しても良い。例えば、ROM203からコードバッファ104Bのバッファ領域に読み出す画像データのデータサイズが、M(2以上の自然数)バイト以下であれば、一回当りのデータ読み出し量をMバイトとし、同データサイズがM+1バイト以上10×Mバイト以下であれば、一回当りのデータ読み出し量を2×Mバイトとし、同データサイズが10×M+1バイト以上100×Mバイト以下であれば、一回当りのデータ読み出し量を10×Mバイトとする、といった具合である。このようなことを実現するには、一回当りのデータ読み出し量とそのデータ読み出し量を適用する画像データのデータサイズの範囲とを対応付けるテーブルをROMインタフェース104に予め記憶させておき、このテーブルの格納内容を参照して一回当りのデータ読み出し量を決定する処理をコントローラ104Aに実行させるようにすれば良い。
【0076】
また、ROM203に格納されている画像データのデータサイズの分布に基づいてデータ読み出し量を調整しても良い。例えば、ROM203に格納されている複数の圧縮データの大半が比較的データサイズの小さいもの(例えば、M(Mは2以上の自然数)バイト未満のもの)である場合には、コントローラ104AによるROM203からコードバッファ104Bのバッファ領域へのデータ読み出しをMバイトずつ実行させる、といった具合である。このようにすると、ROM203に格納されている複数の圧縮データの大半のものが1回のデータ読み出しでROM203からバッファ領域へ読み出されることになる。また、このようなことを実現するための方策としては、ROM203に格納されている複数の圧縮データのデータサイズの分布を求める分布算出処理と、当該分布の特徴を示す特徴量(平均値や標準偏差、或いは最頻出値)を算出する統計量算出処理と、ROM203からバッファ領域へのデータ読み出し量を当該統計量に基づいて設定するデータ読み出し量設定処理とをコントローラ104Aに実行させるようにすれば良い。例えば、上記分布としてヒストグラムを用いる場合には上記統計量として最頻出値を用い、上記データ読み出し量として当該最頻出値を設定するようにすれば良い。
【0077】
また、上記実施形態では、ROM203からの圧縮データの読み出しを所定データ量ずつ行ったが、コントローラ104Aにかかっている処理負荷或いはROM203からのデータ読み出しに利用可能な帯域幅に応じてデータ読み出し量を動的に調整する(処理負荷が軽いほど或いは帯域幅が広いほどデータ読み出し量を大きくするなど)ようにしても勿論良い。
【符号の説明】
【0078】
100……画像表示LSI、101……CPUインタフェース、102……属性データ記憶部、103……コントローラ、104……ROMインタフェース、104A……コントローラ、104B……コードバッファ、104C……コードバッファ管理テーブル、105……画像データ生成部、106……復号化部、107……MMU、108……ワークメモリ、109……管理テーブル、110……画像出力部、111A,111B……ラインバッファ、112……ラインバッファ描画部、201……ホストCPU、202……LCD、203……ROM。

【特許請求の範囲】
【請求項1】
各々スプライトの画像データに圧縮符号化を施して得られた複数の圧縮データを格納したROMから、読み出しを指示された圧縮データを読み出して出力するROMインタフェースと、
表示器における1ライン分の画像データを記憶するラインバッファと、
前記ROMインタフェースを介して読み出される圧縮データを復号する復号化部と、
各水平走査期間において表示対象とする1ライン分の画像データを生成するのに必要な圧縮データの読み出しを前記ROMインタフェースに指示し、当該指示に応じて前記ROMインタフェースから出力される圧縮データを前記復号化部によって復号し、1ライン分の画像データを生成して前記ラインバッファに書き込む画像データ生成部と、を備え、
前記ROMインタフェースは、
複数のバッファ領域を有するコードバッファと、
圧縮データの読み出しを指示される毎に、前記複数のバッファ領域のうちの未割り当てのものを選択し当該圧縮データの読み出しに割り当て、当該バッファ領域に空がある間、当該圧縮データを前記ROMから読み出して書き込む処理を継続するコードバッファ管理手段と、
を具備することを特徴とする画像処理装置。
【請求項2】
前記コードバッファ管理手段は、圧縮データの読み出しを指示されるのに応じて当該圧縮データの読み出しに割り当てたバッファ領域について、当該圧縮データの復号が完了したことを契機としてその割り当てを解除することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記コードバッファ管理手段は、読み出しを指示された圧縮データを所定のデータ量ずつ前記ROMから読み出して当該圧縮データの読み出しに割り当てたバッファ領域に書き込むとともに、当該圧縮データのデータサイズに応じて前記データ量を調整することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記コードバッファ管理手段は、読み出しを指示された圧縮データを所定のデータ量ずつ前記ROMから読み出して当該圧縮データの読み出しに割り当てたバッファ領域に書き込むとともに、前記ROMに格納されている圧縮データのデータサイズの分布に応じて前記データ量を調整することを特徴とする請求項1または2に記載の画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−109190(P2013−109190A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−254647(P2011−254647)
【出願日】平成23年11月22日(2011.11.22)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】