説明

画像処理装置

【課題】 ラインバッファ方式の画像処理装置においてフルカラーかつ高解像度の画像表示を実現する。
【解決手段】 コントローラ103は、各垂直走査期間において、各表示対象の画像データのLCD202での表示に先行して、各表示対象の画像データの生成を画像データ生成部105に順次指令し、画像データ生成部105は、指令された表示対象の画像データを生成し、仮想メモリとしてのワークメモリ108にMMU107を介して格納する。ラインバッファ描画部112は、このワークメモリ108内の画像データに基づいて、各水平走査期間において表示する1ライン分の画像データを生成する。また、MMU107は、ワークメモリ108において画像データを記憶しているページのうちLCD202での表示に使用された画像データを記憶するページを新たな画像データの記憶に備えて解放する。

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

【特許請求の範囲】
【請求項1】
水平同期信号に同期して表示器に表示される1ライン分の画像データを記憶するラインバッファと、
前記表示器の表示対象の画像データを記憶するためのワークメモリと、
各垂直走査期間において、前記表示器の表示対象となる画像データを生成する画像データ生成手段と、
前記ワークメモリを仮想メモリとして機能させる手段であって、前記表示器の表示対象となる画像データが発生した場合に当該画像データを格納するための前記ワークメモリの記憶領域を選択し、この選択した記憶領域に当該画像データを格納する一方、前記ワークメモリにおいて画像データを記憶している記憶領域のうち前記表示器での表示に使用された画像データを記憶する記憶領域を新たな画像データの記憶に備えて解放するメモリ管理ユニットと、
各水平走査期間において表示対象とする1ライン分の画像データを生成するのに必要な画像データを前記メモリ管理ユニットを介して前記ワークメモリから読み出し、読み出した画像データに基づいて1ライン分の画像データを生成して前記ラインバッファに格納する描画手段と、
各垂直走査期間内において、各表示対象の画像データの前記表示器での表示に先行して、前記画像データ生成手段に各表示対象の画像データの生成を順次指令するコントローラと
を具備することを特徴とする画像処理装置。
【請求項2】
表示対象の圧縮符号化画像データを記憶媒体から読み出して復号化し、復号結果である表示対象の画像データを前記画像データ生成手段に供給するデコーダを具備することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記画像データ生成手段は、表示対象を所定ライン数からなるラスタブロックに分割し、ラスタブロック単位で各ラスタブロックの画像データを生成し、前記メモリ管理ユニットを介して前記ワークメモリに格納するものであり、
前記コントローラは、各表示対象を分割したラスタブロック単位で前記画像データ生成手段に画像データの生成を指令することを特徴とする請求項1または2に記載の画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−32456(P2012−32456A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願番号】特願2010−169823(P2010−169823)
【出願日】平成22年7月28日(2010.7.28)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】