(57)【要約】      （修正有）【課題】入力されるベクタデータに基づいて複数のラインで構成される１フレーム内に描画される図形の表示データを算出するグラフィックス演算において、中間データを格納するワーク領域が割り付けられるＲＡＭの記憶容量を低く抑える画像処理ＬＳＩ及び画像処理プログラムを提供する。【解決手段】グラフィックス演算を実行するときに、図形が表示されるフレームを複数のライン毎に複数の描画領域に分割し、中間データを格納するためのワーク領域は、全ての描画領域に対して同じ領域が割り付けられる。それぞれの描画領域の中間データを算出するグラフィックス演算は、前記同じワーク領域を繰り返し使って、順次実行される。１つのワーク領域が、分割された描画領域それぞれについての中間データを算出するグラフィックス演算に繰り返し使われるので、ワーク領域が割り付けられるＲＡＭの記憶容量を低く抑えることができる。【選択図】図１
2014164551.tif 000002
【特許請求の範囲】
【請求項１】
入力されるベクタデータに基づいて複数のラインで構成される１フレーム内に描画される図形の表示データを算出するグラフィックス演算を実行可能な画像処理ＬＳＩであって、
前記グラフィックス演算を実行可能なグラフィックス演算部と、前記グラフィックス演算の中間データを格納するためのワーク領域を含み前記グラフィックス演算部からアクセス可能な記憶部とを備え、
前記グラフィックス演算部は、前記図形が表示されるフレームを複数のライン毎の複数の描画領域に分割し、前記複数の描画領域に含まれるそれぞれの描画領域の前記グラフィックス演算を順次実行可能に構成され、
前記グラフィックス演算部は、前記複数の描画領域に含まれるそれぞれの描画領域の前記グラフィックス演算について、前記中間データを格納するために、全ての描画領域について、前記記憶部の同じワーク領域を割り付け可能に構成される、画像処理ＬＳＩ。
【請求項２】
請求項１において、前記グラフィックス演算部は、前記ワーク領域に割り付けられる所定の記憶容量に基づいて、前記描画領域を構成するラインの数を算出可能に構成される、画像処理ＬＳＩ。
【請求項３】
請求項１において、前記１フレームは複数の画素からなる複数のラインで構成され、
前記中間データは、前記図形のライン毎の全てのエッジの位置を表す画素の座標データを含んで構成され、
前記ワーク領域は、複数ラインの中間データを格納可能であり、
前記グラフィックス演算部は、前記記憶部内に前記ワーク領域として、ライン毎の前記エッジの数のうち前記１フレーム内の最大値と、記憶するラインの数の積に基づいて規定される記憶容量を割り付け可能に構成される、画像処理ＬＳＩ。
【請求項４】
請求項３において、前記グラフィックス演算部は、前記ワーク領域に割り付けられる所定の記憶容量に基づいて、前記描画領域を構成するラインの数を算出可能に構成される、画像処理ＬＳＩ。
【請求項５】
請求項１において、前記グラフィックス演算部は、前記ベクタデータが入力され前記中間データを出力可能なグラフィックスエンジンと、前記グラフィックスエンジンを制御可能なＣＰＵとを含んで構成される、画像処理ＬＳＩ。
【請求項６】
グラフィックスエンジンとＣＰＵと記憶部を用いて、入力されるベクタデータに基づいて複数のラインで構成される１フレーム内に描画される図形の表示データを算出するグラフィックス演算を実行可能な画像処理プログラムであって、
前記ＣＰＵで実行されることにより、前記記憶部に前記グラフィックス演算の中間データを格納するためのワーク領域を割り付け、前記図形が表示されるフレームを複数のライン毎の複数の描画領域に分割し、前記グラフィックスエンジンに前記ベクタデータを入力して前記複数の描画領域に含まれるそれぞれの描画領域の前記グラフィックス演算を順次実行させ、それぞれ描画領域についての前記グラフィックス演算によって出力される前記中間データを、全ての描画領域について同じ前記ワーク領域に格納する、画像処理プログラム。
【請求項７】
請求項６において、前記ワーク領域に割り付けられる所定の記憶容量に基づいて、前記描画領域を構成するラインの数を、前記ＣＰＵに算出させる、画像処理プログラム。
【請求項８】
請求項６において、前記１フレームは複数の画素からなる複数のラインで構成され、
前記中間データは、前記図形のライン毎の全てのエッジの位置を表す画素の座標データを含んで構成され、
前記ワーク領域は、複数ラインの中間データを格納可能であり、
前記記憶部内に前記ワーク領域として、ライン毎の前記エッジの数のうち前記１フレーム内の最大値と、記憶するラインの数の積に基づいて規定される記憶容量を、前記ＣＰＵに割り付けさせる、画像処理プログラム。
【請求項９】
請求項８において、前記ワーク領域に割り付けられる所定の記憶容量に基づいて、前記描画領域を構成するラインの数を、前記ＣＰＵに算出させる、画像処理プログラム。
【請求項１０】
請求項９において、前記図形のライン毎の前記エッジの数を算出する第１ステップと、前記第１ステップで算出したライン毎の前記エッジの数から、ライン当たりの最大エッジ数を求める第２ステップと、前記最大エッジ数に基づいて前記描画領域のライン数を算出する第３ステップを含む、画像処理プログラム。
【請求項１１】
請求項９において、前記描画領域のライン数とライン毎のエッジの数とを仮決めする第４ステップと、前記図形のライン毎の前記エッジの数を算出する第１ステップと、前記第１ステップで算出したライン毎の前記エッジの数から、ライン当たりの最大エッジ数を求める第２ステップと、前記最大エッジ数に基づいて前記仮決めした、前記描画領域のライン数を変更する第５ステップを含む、画像処理プログラム。
【請求項１２】
請求項１０において、前記第３ステップの後、全ての前記描画領域のそれぞれについて、前記中間データを算出して前記ワーク領域に格納する第６ステップをさらに含み、前記第６ステップは、前記図形の外接矩形の範囲内のみについて実行される、画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックス演算を行う画像処理ＬＳＩ（Large Scale Integrated circuit）及びそれを使って動作する画像処理プログラムに関し、特にグラフィックス演算に用いるＲＡＭ（Random Access Memory）のワーク領域を限られた記憶容量に抑えるために好適に利用できるものである。
【背景技術】
【０００２】
画像処理ＬＳＩによるグラフィックス描画処理は、多数の線分や単純な図形の描画データを組合せることによって、所望の画像を合成して表示デバイスに表示する。描画の素になる線分や図形は、その頂点などの特徴点の座標や曲率などのベクタデータと呼ばれるパラメータによって表現されている。グラフィックス演算では、そのフレームの画像を構成する多数の線分や図形のそれぞれについて、ベクタデータから、フレーム内の個々の画素に描画すべき描画データを算出し、全ての線分や図形についての描画データを、フレームバッファ上で組合せることによって、表示デバイスに表示される表示データをフレーム毎に算出する。表示データは、表示デバイスの１フレームを構成する各画素の、３原色ごとの輝度、或いは輝度と色差であり、フレームバッファ上に格納される。
【０００３】
このようなグラフィックス描画処理を行う画像処理装置は、一般に、画像処理ＬＳＩに、ベクタデータを格納するＲＯＭ（Read Only Memory）とフレームバッファが割り付けられるＲＡＭを外付けして構成される。グラフィックス演算における中間データである描画データも、外付けされたＲＡＭに割り付けられたワーク領域に格納される。
【０００４】
特許文献１には、複数の演算部を用いてラスタライズ処理を実行する際にメモリ使用量の増大を抑える技術が開示されている。ページ記述言語データに基づいてバンド単位で生成された中間データをラスタライズ処理する場合に、複数のコア（演算部）を備え、各中間データを構成するバンドを複数に分割して複数の分割領域を生成し、コア毎にラスタライズ処理を行う分割領域を割り当てる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１５８９５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１などについて本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００７】
上述のように、グラフィックス演算の中間データである描画データは、グラフィックス演算に用いるＲＡＭのワーク領域に格納される。２Ｄベクターグラフィックスの業界標準ＡＰＩ（Application Program Interface）の一つであるOpenVGの仕様を満たすための主な手段では、中間データは、各ラインにおける線分や図形の全てのエッジの座標を含んで構成される。中間データは、１フレーム内の複数の線分または図形ごとに、ワーク領域に格納される。１つの線分または図形の１フレーム分の中間データは、１ライン当たりのエッジ数の最大値で決められる１ライン当たりのデータ容量に、１フレームのライン数を乗じた記憶容量を持つ。OpenVGの仕様を満たすための主な手段では、１ライン当たりのサイズは、下に示す式１によって算出される。さらに、例えばアンチエイリアス処理を追加する場合の１フレーム当たりのワーク領域に必要な記憶容量は、式２によって算出される。
【０００８】
【数１】
2014164551.tif 000003
【０００９】
【数２】
2014164551.tif 000004
【００１０】
ここで、垂直ライン数とは、１フレームを構成するラインの数である。
【００１１】
表示する画像のサイズが、４８０×８００のワイドＶＧＡである場合、例えば最大エッジ数が６８と仮定すると、１ライン当たりのサイズは１４４Byteである。ここで、ＲＡＭの構成から６４Byte単位で割り付けられるとすると、１ライン当たりのサイズは１９２Byteとなる。ワイドＶＧＡの垂直ライン数は４８０本であるから、ワーク領域に必要な記憶容量は368,640Byte（360KByte）となる。このワーク領域に必要な記憶容量は、表示する画像の高精細化に伴って増加する。
【００１２】
360KByte程度の記憶容量は、外付けＲＡＭにとっては大きな問題にはならないが、このＲＡＭを画像処理ＬＳＩと同一のオンチップに集積する場合に隘路となる。
【００１３】
特許文献１に記載される技術は、ラスタライズ処理におけるメモリ使用量の増加防止である。ラスタライズ処理とは、上記グラフィックス演算における中間データである描画データに基づいて、フレームバッファ上の画素の表示データを算出する処理である。このとき、複数のコア（演算部）を使って並列処理するために、１フレーム内を複数のラインで構成されるバンドに分割する。中間データがライン毎に算出されているので、フレームバッファ上の画素の表示データを、それに対応するライン毎に算出する。中間データ自体は、１フレーム全体で１つのワーク領域内に保持される。中間データを生成するためのベクタデータは、図形の特徴点の座標などであるから、中間データは１フレーム全体を一括して割り付けられたワーク領域に格納されるのが便宜である。図形の特徴点の座標はフレーム内で任意であるから、中間データが算出される順序は、中間データを算出するハードウェアまたはソフトウェアの実装方式、アルゴリズムに依存して変化するからである。
【００１４】
したがって、グラフィックス演算における中間データを格納する、ワーク領域の記憶容量を減らすことは容易ではない。
【００１５】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１６】
一実施の形態によれば、下記の通りである。
【００１７】
すなわち、入力されるベクタデータに基づいて複数のラインで構成される１フレーム内に描画される図形の表示データを算出するグラフィックス演算を実行するときに、図形が表示されるフレームを複数のライン毎に複数の描画領域に分割し、中間データを格納するためのワーク領域は、全ての描画領域に対して同じ領域が割り付けられる。それぞれの描画領域の中間データを算出するグラフィックス演算は、前記同じワーク領域を繰り返し使って、順次実行される。
【発明の効果】
【００１８】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１９】
すなわち、１つのワーク領域が、分割された描画領域それぞれについての中間データを算出するグラフィックス演算に繰り返し使われるので、ワーク領域が割り付けられるＲＡＭの記憶容量を低く抑えることができる。
【図面の簡単な説明】
【００２０】
【図１】図１は、一実施の形態に係る画像処理ＬＳＩ及びそれを用いた画像処理装置の構成例を表すブロック図である。
【図２】図２は、線分を描画する動作を表す説明図である。
【図３】図３は、図２の一部拡大図である。
【図４】図４は、矩形を描画する動作を表す説明図である。
【図５】図５は、図４の一部拡大図である。
【図６】図６は、一実施の形態に係る画像処理プログラムの動作例を表すフローチャートである。
【図７】図７は、図６におけるワーク領域の変更例を表す説明図である。
【発明を実施するための形態】
【００２１】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２２】
〔１〕＜画像処理ＬＳＩ；  描画領域を分割し、同じワーク領域を再利用＞
入力されるベクタデータ（１２）に基づいて複数のラインで構成される１フレーム（２０）内に描画される図形（２２、２３）の表示データを算出するグラフィックス演算を実行可能な画像処理ＬＳＩ（１）であって、以下のように構成される。
【００２３】
前記グラフィックス演算を実行可能なグラフィックス演算部（２）と、前記グラフィックス演算の中間データを格納するためのワーク領域（１３）を含み前記グラフィックス演算部からアクセス可能な記憶部（例えばＲＡＭ）（５）とを備える。
【００２４】
前記グラフィックス演算部は、前記図形が表示されるフレームを複数のライン毎の複数の描画領域（２１）に分割し、前記複数の描画領域に含まれるそれぞれの描画領域の前記グラフィックス演算を順次実行する。
【００２５】
前記グラフィックス演算部は、前記複数の描画領域に含まれるそれぞれの描画領域の前記グラフィックス演算について、前記中間データを格納するために、全ての描画領域について、前記記憶部の同じワーク領域（１３）を割り付ける。
【００２６】
これにより、記憶部におけるワーク領域に必要な記憶容量を、少なく抑えることができる。
【００２７】
〔２〕＜ワーク領域のサイズに基づいて描画領域の分割サイズを規定＞
項１において、前記グラフィックス演算部は、前記ワーク領域に割り付けられる所定の記憶容量に基づいて、前記描画領域を構成するラインの数を算出する。
【００２８】
これにより、画像処理ＬＳＩにオンチップ形成された記憶容量の限られた記憶部に、ワーク領域を割り付けることができる。
【００２９】
〔３〕＜２Ｄベクターグラフィックス＞
項１において、前記１フレームは複数の画素からなる複数のラインで構成され、前記中間データは、前記図形のライン毎の全てのエッジの位置を表す画素の座標データを含んで構成され、前記ワーク領域は、複数ラインの中間データを格納可能に構成される。
【００３０】
前記グラフィックス演算部は、前記記憶部内に前記ワーク領域として、ライン毎の前記エッジの数のうち前記１フレーム内の最大値と、記憶するラインの数の積に基づいて規定される記憶容量を割り付ける。
【００３１】
これにより、例えばOpenVGに準拠する２Ｄベクターグラフィックスにおけるワーク領域の記憶容量を正確に算出することができる。
【００３２】
〔４〕＜２Ｄベクターグラフィックスにおける描画領域の分割サイズ＞
項３において、前記グラフィックス演算部は、前記ワーク領域に割り付けられる所定の記憶容量に基づいて、前記描画領域を構成するラインの数を算出する（ステップ３４）。
【００３３】
これにより、例えばOpenVGに準拠する２Ｄベクターグラフィックスにおいても、画像処理ＬＳＩにオンチップ形成された記憶容量の限られた記憶部に、ワーク領域を割り付けることができる。
【００３４】
〔５〕＜グラフィックスエンジン＋ＣＰＵ（Central Processing Unit）＞
項１乃至項４のいずれか１項において、前記グラフィックス演算部は、前記ベクタデータが入力され前記中間データを出力可能なグラフィックスエンジン（４）と、前記グラフィックスエンジンを制御可能なＣＰＵ（３）とを含んで構成される。
【００３５】
これにより、グラフィックス演算を高速に処理することができる。
【００３６】
〔６〕＜画像処理プログラム；  描画領域を分割し、同じワーク領域を再利用＞
グラフィックスエンジン（４）とＣＰＵ（３）と記憶部（例えばＲＡＭ）（５）を用いて、入力されるベクタデータ（１２）に基づいて複数のラインで構成される１フレーム（２０）内に描画される図形（２２、２３）の表示データを算出するグラフィックス演算を実行可能な画像処理プログラム（３０）であって、以下のように構成される。
【００３７】
前記ＣＰＵで実行されることにより、前記記憶部に前記グラフィックス演算の中間データを格納するためのワーク領域（１３）を割り付け、前記図形が表示されるフレームを複数のライン毎の複数の描画領域（２１）に分割する。前記グラフィックスエンジンに前記ベクタデータを入力して前記複数の描画領域に含まれるそれぞれの描画領域の前記グラフィックス演算を順次実行させ、それぞれ描画領域についての前記グラフィックス演算によって出力される前記中間データを、全ての描画領域について同じ前記ワーク領域に格納する。
【００３８】
これにより、記憶部におけるワーク領域に必要な記憶容量を、少なく抑えることができる。
【００３９】
〔７〕＜ワーク領域のサイズに基づいて描画領域の分割サイズを規定＞
項６において、前記ワーク領域に割り付けられる所定の記憶容量に基づいて、前記描画領域を構成するラインの数を、前記ＣＰＵに算出させる（ステップ３４）。
【００４０】
これにより、画像処理ＬＳＩにオンチップ形成された記憶容量の限られた記憶部にも、ワーク領域を割り付けることができる。
【００４１】
〔８〕＜２Ｄベクターグラフィックス＞
項６において、前記１フレームは複数の画素からなる複数のラインで構成され、前記中間データは、前記図形のライン毎の全てのエッジの位置を表す画素の座標データを含んで構成される。
【００４２】
前記ワーク領域は、複数ラインの中間データを格納可能であり、前記画像処理プログラムは、前記記憶部内に前記ワーク領域として、ライン毎の前記エッジの数のうち前記１フレーム内の最大値と、記憶するラインの数の積に基づいて規定される記憶容量を、前記ＣＰＵに割り付けさせる。
【００４３】
これにより、例えばOpenVGに準拠する２Ｄベクターグラフィックスにおけるワーク領域の記憶容量を正確に算出することができる。
【００４４】
〔９〕＜２Ｄベクターグラフィックスにおける描画領域の分割サイズ＞
項８において、前記ワーク領域に割り付けられる所定の記憶容量に基づいて、前記描画領域を構成するラインの数を、前記ＣＰＵに算出させる（ステップ３４）。
【００４５】
これにより、例えばOpenVGに準拠する２Ｄベクターグラフィックスにおいても、画像処理ＬＳＩにオンチップ形成された記憶容量の限られた記憶部に、ワーク領域を割り付けることができる。
【００４６】
〔１０〕＜分割描画領域の高さ（ライン数）の算出＞
項９において、前記画像処理プログラムは、前記図形のライン毎の前記エッジの数を算出する第１ステップ（ステップ３２）と、前記第１ステップで算出したライン毎の前記エッジの数から、ライン当たりの最大エッジ数を求める第２ステップ（ステップ３３）と、前記最大エッジ数に基づいて前記描画領域のライン数を算出する第３ステップ（ステップ３４）を含む。
【００４７】
これにより、所定の記憶容量のワーク領域に適する分割描画領域の高さを、ライン数で算出することができる。
【００４８】
〔１１〕＜分割描画領域の高さの初期化と変更＞
項９において、前記画像処理プログラムは、前記描画領域のライン数とライン毎のエッジの数とを仮決めする第４ステップ（ステップ３１）と、前記図形のライン毎の前記エッジの数を算出する第１ステップ（ステップ３２）と、前記第１ステップで算出したライン毎の前記エッジの数から、ライン当たりの最大エッジ数を求める第２ステップ（ステップ３３）とを含む。前記画像処理プログラムは、さらに、前記最大エッジ数に基づいて前記仮決めした、前記描画領域のライン数を変更する第５ステップ（ステップ３６）を含む。
【００４９】
これにより、所定の記憶容量のワーク領域に適する分割描画領域の高さ（ライン数）を、描画対象の図形ごとに、適切に調整することができる。
【００５０】
〔１２〕＜外接矩形の範囲内でエッジ数を算出＞
項１０または項１１において、前記画像処理プログラムは、前記第３ステップの後、全ての前記描画領域のそれぞれについて、前記中間データを算出して前記ワーク領域に格納する第６ステップ（ステップ３７）をさらに含み、前記第６ステップは、前記図形の外接矩形（２４）の範囲内のみについて実行される。
【００５１】
これにより、画像処理の演算時間を短縮することができる。
【００５２】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００５３】
〔実施形態１〕＜画像処理ＬＳＩ＞
図１は、一実施の形態に係る画像処理ＬＳＩ及びそれを用いた画像処理装置の構成例を表すブロック図である。
【００５４】
本実施形態１に係る画像処理ＬＳＩ１は、入力されるベクタデータ１２に基づいて複数のラインで構成される１フレーム内に描画される図形の表示データを算出するグラフィックス演算を実行可能に構成される。例えば、表示デバイス１０と、外部バス１１を介して、ベクタデータ１２などが格納される不揮発メモリ（ＲＯＭ）９が、それぞれ接続される。ＲＯＭ９は、例えばフラッシュメモリ（登録商標）であってもよい。また、ＲＯＭ９には、画像処理ＬＳＩ１を動作させるためのプログラムがさらに格納されてもよい。画像処理ＬＳＩ１は、グラフィックス演算部２と、例えばＲＡＭなどの記憶部５と、システムインターフェース７とビデオインターフェース８が互いにバス６を介して接続されている。ＲＡＭ５には、ワーク領域１３とフレームバッファ１４が割り付けられている。ビデオインターフェース８は、外部の表示デバイス１０と接続するためのインターフェース回路である。グラフィックス演算部２は、入力されるベクタデータ１２に基づいてグラフィックス演算を実行し、中間データをＲＡＭ５に割り付けられたワーク領域１３に格納する。
【００５５】
グラフィックス演算部２は、ベクタデータ１２で描画される図形が表示されるフレームを、複数のライン毎の複数の描画領域に分割する。全ての分割された描画領域について、同じワーク領域１３が割り付けられている。グラフィックス演算部２は、分割されたそれぞれの描画領域のグラフィックス演算を順次実行するときに、同じワーク領域１３を、それぞれの描画領域の中間データを格納するために、繰り返し利用する。
【００５６】
これにより、ＲＡＭ５におけるワーク領域１３に必要な記憶容量を、少なく抑えることができる。
【００５７】
本実施形態１に係る画像処理ＬＳＩ１の動作原理を説明する。
【００５８】
図２は、線分を描画する動作を表す説明図であり、図３は、図２の一部拡大図である。フレーム２０に複数の線分で構成された図形２２を描画する場合が例示されている。縦軸はライン番号であり、横軸は画素番号である。「発明が解決しようとする課題」で説明したのと同様に、表示する画像のサイズが、４８０×８００のワイドＶＧＡである場合を例示する。このとき、既に説明したように、OpenVGの仕様を満たすための主な手段では、最大エッジ数に応じて、ワーク領域に必要な記憶容量が算出される。ここで、エッジとは、描画される線分とフレームを構成するラインの交点を指す。図３に例示されるように、描画される線分は、フレームを構成するラインと交差している。ライン番号１０１のエッジは８７であり、ライン番号１０２のエッジも８７である。ライン番号１０３〜１０５のエッジは８６であり、以下、各ラインでエッジの位置が算出される。図２に示すように、１ライン当たりのエッジの数は、図形の複雑さによって変わる。OpenVGの仕様を満たすための主な手段では、１つの図形を描画するときに、１ライン当たりのエッジ数が最大となるラインにおけるエッジ数（最大エッジ数）に合わせて、フィールド内の全てのラインの中間データを格納するワーク領域の大きさが規定される。１ライン当たりのサイズは、前述の式１で算出され、１フィールド全体のワーク領域の記憶容量は式２で算出される。
【００５９】
本実施形態１によれば、フレーム２０を複数の描画領域２１に分割する。図２には、１つの描画領域あたり２０ラインとし、フレーム２０を２４個の描画領域２１＿１〜２１＿２４に分割した例が示されている。ワーク領域１３としては、２０ライン分の中間データを格納する記憶領域を、ＲＡＭ５内に割り付ける。「発明が解決しようとする課題」で説明した例と同じく、最大エッジ数が６８と仮定すると、１ライン当たりのサイズは、同じ１９２Byteとなる。しかし、本実施形態１によれば、１つの描画領域あたりに必要なワーク領域が２０ライン分のみで良いので、ワーク領域１３に必要な記憶容量は、15,360Byte（15KByte）となり、１フレーム全体を一括して割り付ける従来の368,640Byte（360KByte）の２４分の１に抑えることができる。
【００６０】
描画すべき図形が、線ではなく２次元的な図形であっても、同様である。
【００６１】
図４は、矩形を描画する動作を表す説明図であり、図５は、図４の一部拡大図である。フレーム２０に複数の２次元図形で構成された図形２３を描画する場合が例示されている。縦軸はライン番号であり、横軸は画素番号である。描画すべき図形が幅を持たない線の場合は、ラインとの交点をエッジとした。これに対して、描画すべき図形が２次元で、幅を持つので、例えば、各ラインにおいて、画素番号の小さい画素から順に見たとき、描画データを反転させる座標を、エッジとすればよい。ライン番号１０１のラインでは、画素番号８４までが白、８５〜８９が黒、９０以降が再び白であるから、画素番号８５と９０をエッジとして中間データとすればよい。エッジの規定の仕方は、中間データから表示データを算出する演算プロセスとの間で整合していればよい。以上のように、描画される図形が、幅を持たない線であるか、幅のある２次元図形かによって、エッジの定義は多少調整する必要があるが、ワーク領域に必要な記憶容量は、どちらの場合も同様にエッジの数に基づいて、算出することができる。
【００６２】
以上、フレームの描画領域への分割数から、ワーク領域１３の記憶容量を算出する例を示したが、逆に、ワーク領域１３に割り付けることができるＲＡＭ５内の記憶容量を予め規定しておき、その記憶容量のワーク領域１３に格納することができる中間データの量を逆算して、描画領域の分割数、即ち、分割後の描画領域２１のライン数を、算出することができる。
【００６３】
これにより、画像処理ＬＳＩ１にオンチップ形成された記憶容量の限られたＲＡＭ５に、ワーク領域１３を割り付けることができる。
【００６４】
画像処理ＬＳＩ１の具体的な実施形態について、さらに詳しく説明する。
【００６５】
画像処理ＬＳＩ１は、特に制限されないが、例えば、公知のＣＭＯＳ（Complementary Metal-Oxide-Semiconductor field effect transistor）ＬＳＩの製造技術を用いて、単一シリコン基板上に形成される。
【００６６】
グラフィックス演算部２は、ベクタデータ１２が入力され中間データを算出可能なグラフィックスエンジン４と、グラフィックスエンジン４を制御可能なＣＰＵ３とを含んで構成することができる。これにより、グラフィックス演算を高速に処理することができる。ＣＰＵ３は、ＭＰＵ（Micro-Processing Unit）、ＭＣＵ（Micro-Controller Unit）、その他如何なる形態のプロセッサでもよい。グラフィックスエンジン４は、例えば、ベクタデータ１２から中間データを算出するハードウェアアクセラレータであり、これ自体がプログラマブルなプロセッサで構成されてもよい。
【００６７】
画像処理ＬＳＩ１は、他の機能モジュールを含んで構成されてもよい。例えば、ＤＭＡ（Direct Memory Access）コントローラを備えることにより、ＣＰＵによるプログラム動作のバックグラウンドで、表示データをフレームバッファ１４からビデオインターフェース８へ転送し、表示デバイス１０に表示させることができる。この場合、バス６のバス権を調停するバス調停回路も合わせて備える必要がある。
【００６８】
ＲＯＭ９は、必ずしも外付けである必要はなく、画像処理ＬＳＩ１の内部のバス６に接続されるオンチップＲＯＭとして構成しても良い。この場合には、システムインターフェース７を省略することにより回路規模を低減し、外部バスに接続するための端子を省略して端子数を減らし、画像処理ＬＳＩ１を実装するパッケージのサイズを小さくすることができる。
【００６９】
一方、外部バス１１にさらにＲＡＭを接続し、その外部ＲＡＭ上に、フレームバッファを割り付け、外部ＲＡＭから直接表示デバイス１０へ、表示データを転送する構成とすることもできる。表示デバイスが高精細で、オンチップＲＡＭにフレームバッファを割り付けることが、コスト面で負担となる場合には、このような構成とすることにより、コストを低減することができる。
【００７０】
〔実施形態２〕＜画像処理プログラム＞
グラフィックスエンジン４とＣＰＵ３と記憶部（例えばＲＡＭ）５を用いて、入力されるベクタデータ１２に基づいて複数のラインで構成される１フレーム２０内に描画される図形２２、２３の表示データを算出するグラフィックス演算を実行可能な画像処理プログラム３０について説明する。
【００７１】
画像処理プログラム３０は、ＣＰＵ３で実行されることにより、ＲＡＭ５にグラフィックス演算の中間データを格納するためのワーク領域１３を割り付け、図形２２、２３が表示されるフレーム２０を複数のライン毎の複数の描画領域２１に分割する。グラフィックスエンジン４にベクタデータ１２を入力して複数の描画領域２１に含まれるそれぞれの描画領域２１のグラフィックス演算を順次実行させる。それぞれ描画領域についてのグラフィックス演算によって出力される中間データを、全ての描画領域について同じワーク領域１３に格納する。
【００７２】
これにより、記憶部におけるワーク領域に必要な記憶容量を、少なく抑えることができる。
【００７３】
本実施形態２に係る画像処理プログラム３０の動作例についてさらに詳しく説明する。
【００７４】
図６は、一実施の形態に係る画像処理プログラムの動作例を表すフローチャートである。
【００７５】
描画領域のライン数（Height）とライン毎のエッジの数とを仮決めし、そのエッジ数に対応する中間データを格納可能な、１ライン当たりの記憶容量（Stride）を決めることにより、初期状態のワーク領域１３を確保する（ステップ３１）。次に、描画対象図形２２、２３のライン毎のエッジの数を算出する（ステップ３２）。これは、例えば、グラフィックスエンジン４に、描画対象図形２２、２３のベクタデータ１２を入力して算出させることができる。その結果に基づいて、ライン当たりの最大エッジ数、即ち、１ライン当たりのエッジ数が最大となるラインにおけるエッジ数を算出する（ステップ３３）。次に、算出した最大エッジ数に基づいて描画領域のライン数を算出し、ステップ３１で仮決めした描画領域のライン数（Height）を変更する（ステップ３４）。これにより、描画対象の図形ごとに、適切なサイズ（記憶容量）のワーク領域１３を確保することができる。２Ｄベクターグラフィックスにおいては、多数の描画対象の図形について順次、中間データを生成し、それらを組合せて表示データを合成するので、描画対象の図形が変わる度に、ラーク領域のサイズを適切に設定することができる。適切なワークサイズを確保した後に、分割された描画領域ごとのエッジ計算行う（ステップ３７）。例えば、グラフィックスエンジン４に、描画対象図形２２、２３のベクタデータ１２を入力して算出させることができる。
【００７６】
ここで、ベクタデータ１２は、当然のことながら、領域分割されてはいない。そのため、従来のグラフィックスエンジンをそのまま用いれば、グラフィックスエンジン４は、１フレーム全体の全ての中間データを算出する。その場合には、処理対象の描画領域についての中間データのみを、ワーク領域１３に格納する。それ以外の描画領域についての中間データは、破棄される。一方、グラフィックスエンジン４を、算出すべき領域として指定された領域についてのみ中間データを算出する演算を実行可能に構成することにより、より少ない演算量、より短い演算時間で、エッジ計算（ステップ３７）を実行することができる。
【００７７】
分割された描画領域２１の全てについて、エッジ計算処理（ステップ３７）が完了した否かを判定し（ステップ３８）、未了の描画領域２１に処理領域を変更して（ステップ３９）、エッジ計算処理（ステップ３７）を繰り返すことにより、１フレーム２０内の全領域の処理を完了して終了する。
【００７８】
ステップ３４においては、ワーク領域１３に割り付けることができる記憶容量を予め所定の記憶容量に制限しておき、その所定の記憶容量に基づいて、分割する各描画領域２１を構成するラインの数を、算出することもできる。より具体的には、ステップ３３で算出したライン当たりの最大エッジ数と、ステップ３１で確保した１ライン当たりの記憶容量（Stride）に格納可能なエッジ数とを比較し（ステップ３５）、前者の方が大きければ、１ライン当たりの記憶容量（Stride）を拡張し、合せて描画領域のライン数（Height）を縮小する（ステップ３６）。１ライン当たりの記憶容量（Stride）と描画領域のライン数（Height）の積がワーク領域１３の記憶容量となるので、これを、制限された所定の記憶容量に常に等しくなるように、調整すればよい。
【００７９】
ワーク領域１３の変更例を、図７を引用して説明する。図７は、図６におけるワーク領域の変更例を表す説明図である。例えばステップ３１で、（ａ）に示すように、６４エッジ分のストライドＳ０と４０ライン分の高さＨ０によって規定される、7,680Byte（7.5KByte）の領域がワーク領域として確保されたとする。ステップ３３で算出した最大エッジ数が、想定した６４を超え、例えば１００個であった場合は、（ｂ）に示すように、ストライドを２倍に拡張し（Stride=S1=S0×2）、これと反比例して高さ（描画領域のライン数）を１／２に縮小する（Height=H1=H0÷2）。変更後のワーク領域のサイズも、当初のサイズと同じく7,680Byte（7.5KByte）となる。
【００８０】
これにより、画像処理ＬＳＩ１にオンチップ形成された記憶容量の限られた記憶部（ＲＡＭ）５にも、適切にワーク領域１３を割り付けることができる。
【００８１】
図６では、分割された描画領域２１の全てについて、エッジ計算処理（ステップ３７）を実行する実施形態について説明したが、例えば図４に示すように描画対象の図形２３が小さくフレーム内の一部の領域にしか存在しない場合には、中間データを算出してワーク領域１３に格納するステップ３７を、図形２３の外接矩形２４を含む描画領域２１＿２〜２１＿７についてのみ、実行すればよい。これにより、画像処理の演算時間を短縮することができる。外接矩形２４は、描画対象図形の、横方向（画素番号方向）と縦方向（ライン番号方向）の最大と最小の座標によって規定される。グラフィックエンジン４を、入力されるベクタデータ１２から外接矩形２４を算出可能に構成することができる。
【００８２】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００８３】
例えば、各種のサイズの表示デバイスに接続される画像処理ＬＳＩに適用することができる。接続される表示デバイスのサイズに応じて、ワーク領域１３の１ライン当たりの記憶容量（Stride）と描画領域のライン数（Height）を調整すればよい。
【符号の説明】
【００８４】
１  画像処理ＬＳＩ
２  グラフィックス演算部
３  ＣＰＵ
４  グラフィックスエンジン
５  記憶部（ＲＡＭ）
６  バス
７  システムインターフェース
８  ビデオインターフェース
９  不揮発性メモリ（ＲＯＭ）
１０  表示デバイス
１１  外部バス
１２  ベクタデータ
１３  ワーク領域
１４  フレームバッファ
２０  フレーム
２１  分割された描画領域
２２  描画される線分
２３  描画される図形
２４  外接矩形
３０  画像処理プログラム
３１  ワーク領域を仮決めするステップ
３２  描画対象図形のライン毎のエッジ数を算出するステップ
３３  ライン当たりの最大エッジ数を算出するステップ
３４  最大エッジ数に基づいて描画領域のライン数を算出するステップ
３５  ライン当たりの最大エッジ数を評価するステップ
３６  ワーク領域を変更するステップ
３７  エッジ計算を行うステップ
３８  未処理の描画領域の有無を判定するステップ
３９  処理対象の描画領域を変更するステップ
【図１】
2014164551.tif 000005
【図２】
2014164551.tif 000006
【図３】
2014164551.tif 000007
【図４】
2014164551.tif 000008
【図５】
2014164551.tif 000009
【図６】
2014164551.tif 000010
【図７】
2014164551.tif 000011