(57)【特許請求の範囲】
【請求項１】
複数のプロセッサを有し、ラスタ画像をブロック単位で出力する画像処理装置であって、
ディスプレイリストを解釈し、１ラインに含まれるオブジェクトのエッジ情報を生成する手段と、前記エッジ情報を１ラインの単位でソートし、前記オブジェクトのエッジの間の幅情報と前記エッジ情報及び前記オブジェクトの重なり情報へのリンク情報を持つレベルデータを転送する手段とを有する第１のプロセッサと、
前記ブロックの主走査方向の画素数と副走査方向の画素数の情報を取得する取得手段と、前記第１のプロセッサから転送される前記レベルデータを受信し、各ラインの先頭にある前記レベルデータのメモリへの格納場所を、前記副走査方向の画素数に応じて管理する管理手段と、前記副走査方向の画素数に応じた前記レベルデータを前記メモリに格納すると、前記メモリより前記レベルデータの読み出し順序を制御して読み出す読み出し制御手段と、前記読み出し制御手段により読み出された前記レベルデータを第２のプロセッサへ転送する送信手段とを有するＤＭＡ手段と、
前記ＤＭＡ手段から転送される前記レベルデータから、オブジェクトの重なり情報であるレベル情報を取り出す手段と、前記オブジェクトの重なり順序をソートし、前記オブジェクトの色情報を後続のプロセッサに転送する手段とを有する第２のプロセッサと、
を有することを特徴とする画像処理装置。
【請求項２】
前記オブジェクトの色情報をもとに当該オブジェクトの塗りつぶしを行う第３のプロセッサを更に有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記ソートされた前記オブジェクトの重なり順序をもとに前記オブジェクトの重ねあわせ処理を行う第４のプロセッサを更に有することを特徴とする請求項２に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを処理する画像処理装置に関する。
【背景技術】
【０００２】
近年、電子写真方式で画像を形成する複合機（ＭＦＰ）では、画像データに対して様々なハンドリングを行っている。例えばＰＤＬ（Page Description Language）データをラスタライズした後のラスタ画像データに対する処理には、以下に述べるようなものが考えられる。
【０００３】
例えば、第１の方法として、ラスタ画像データのまま色処理等の画像処理を行ってプリンタエンジンに出力する。また第２の方法として、メモリから読み出したラスタ画像データを矩形画像に展開し、符号化して他の機器へ転送する。更に第３の方法として、矩形画像に展開した後、矩形画像単位のまま回転処理を行う。このような処理を行うため、ＭＦＰには、ラスタ画像データとタイル画像データとを相互に変換できるような専用プロセッサモジュールが存在していた（特許文献１）。これによればＭＦＰのメインＣＰＵは、画像データの処理の流れに合わせて、レジスタ等のモード情報格納部に動作モードを設定して、様々な画像処理と画像データの処理フローを実現している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１５７６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１では、レンダリング後のラスタ画像データを一度ＤＲＡＭへ格納した後、更に、その画像データを矩形単位に分割する必要がある。そのため、高画質化が進むとＤＲＡＭと画像処理回路との間でのデータ転送量が大きくなり、ＭＦＰの処理性能を達成できなくなる可能性がある。つまり、ＰＤＬデータのレンダリング方式として一般に知られるスキャンライン方式やペインタ方式のいずれにおいても、レンダリングされたラスタ画像データを部分的でもメモリに格納しなければ、ラスタ画像データを矩形単位に分割するのは難しい。例えば、レンダリング後の画像データをＤＲＡＭを介さずに矩形単位に分割しようとすると、大量のラインバッファが必要となり、プリンタの解像度に依存しないレンダリング処理ができなくなってしまう。
【０００６】
本発明の目的は、上記従来技術の問題点を解決することにある。
【０００７】
本発明の特徴は、レンダリング後の画像データを用いずに、ブロック単位のラスタライズ画像データを出力する技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明の一態様に係る画像処理装置は以下のような構成を備える。即ち、
複数のプロセッサを有し、ラスタ画像をブロック単位で出力する画像処理装置であって、
ディスプレイリストを解釈し、１ラインに含まれるオブジェクトのエッジ情報を生成する手段と、前記エッジ情報を１ラインの単位でソートし、前記オブジェクトのエッジの間の幅情報と前記エッジ情報及び前記オブジェクトの重なり情報へのリンク情報を持つレベルデータを転送する手段とを有する第１のプロセッサと、
前記ブロックの主走査方向の画素数と副走査方向の画素数の情報を取得する取得手段と、前記第１のプロセッサから転送される前記レベルデータを受信し、各ラインの先頭にある前記レベルデータのメモリへの格納場所を、前記副走査方向の画素数に応じて管理する管理手段と、前記副走査方向の画素数に応じた前記レベルデータを前記メモリに格納すると、前記メモリより前記レベルデータの読み出し順序を制御して読み出す読み出し制御手段と、前記読み出し制御手段により読み出された前記レベルデータを第２のプロセッサへ転送する送信手段とを有するＤＭＡ手段と、
前記ＤＭＡ手段から転送される前記レベルデータから、オブジェクトの重なり情報であるレベル情報を取り出す手段と、前記オブジェクトの重なり順序をソートし、前記オブジェクトの色情報を後続のプロセッサに転送する手段とを有する第２のプロセッサと、
を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、主要なレンダリング処理を変えることなく、スキャンライン処理用に作られたディスプレイリストをブロック順に処理することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る複合機の構成を示すブロック図。
【図２】複合機の画像制御部の詳細を説明するブロック図。
【図３】複合機レンダリング部の構成を説明するブロック図。
【図４】レンダリング部がレンダリングを行うディスプレイリスト例を説明する図。
【図５】レンダリング部におけるレンダリング処理の流れを説明する図。
【図６】プログラムエレメント間で転送する命令データフォーマットを説明する図。
【図７】ＰＥの処理内容を説明する図。
【図８】ＰＥ３０１とＰＥ３０３との間にあるＦＩＦＯの機能と効果を説明する図。
【図９】ディスプレイリストに対応した２つのラスタ画像の生成方法を説明する図。
【図１０】ブロック情報へ変換するプロセッサエレメントを説明する図。
【図１１】実施形態に係るレンダリング対象の描画オブジェクト例を示す図。
【図１２】走査ラインの位置に応じて図１１の領域を切り出した場合のエッジ情報を示す図。
【図１３】ＤＭＡ３１５のライトシーケンス部が管理するメモリ状態を示す図。
【図１４】ＤＭＡ３１５のリードシーケンス部が管理するメモリ状態を示す図。
【図１５】、ＤＭＡ３１５の構成と、図１及び図３で示した周辺ブロックとの接続関係を説明する図。
【図１６】図１２で示すブロックラインの描画データのエッジ位置の一例を示す図。
【図１７】、
【図１８】、
【図１９】ＤＭＡのリードシーケンス部が制御するデータの遷移を示す図。
【図２０】実施形態に係るレンダリング部の全体的な処理を説明するフローチャート。
【図２１】ＤＭＡ３１５の処理の詳細を説明するフローチャート。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１２】
図１は、本発明の実施形態に係る複合機（ＭＦＰ）１００の構成を示すブロック図である。このＭＦＰ１００は、ＦＡＸ、プリンタ、複写機の機能を備えており、カラー画像データを処理することができる。
【００１３】
ＣＰＵ１０１はスキャナ部１０８やプリンタ部１１２等の画像入出力装置、画像処理部や通信機能部等といったＭＦＰ１００の機能全体を制御する。ＲＯＭ１０２は、ＣＰＵ１０１で実行されるプログラム等を格納している。ＲＡＭ１０３は、ＣＰＵ１０１により実行されるプログラムを記憶するとともに、その処理の実行時にワークエリアとして利用され、画像データなどが格納される。ＨＤＤ１０４は、ＣＰＵ１０１によって実行されるソフトウェアプログラム並びに他機器（図示せず）から転送される、或いは他機器へ転送する画像データ、ＰＤＬデータや、スキャンデータや、プリント出力前データの一時保存に利用される。操作部１０５は、ユーザに対してＭＦＰ１００の状態や設定情報を表示し、ユーザの操作命令をＣＰＵ１０１に転送する。ＣＰＵ１０１により実行されるプログラムはＨＤＤ１０４にインストールされており、ＲＯＭ１０２に記憶されたブートプログラムによりＲＡＭ１０３にロードされる。
【００１４】
画像制御部１１５は、ＭＦＰ１００内のデータを最適な場所に転送制御する機能を有している。ＦＡＸ機能部１０６は、通信回線から受信したファクシミリ画像をＨＤＤ１０４に格納したり、ネットワーク部１０７から他の機器に転送したり印刷することができる。スキャナ部１０８は、原稿画像を読み取って画像データを生成する。スキャナ部１０８は、原稿の反射光を集光するレンズ、光を入力して電気信号に変換するＣＣＤセンサ、アナログ信号処理部、Ａ／Ｄ変換部等（図示せず）等を備える。スキャナ部１０８は、その生成された画像データをスキャナＩ／Ｆ（インターフェイス）部１０９を介してスキャナ画像処理部１１０に供給し、空間フィルタ処理や入力色空間変換等様々なスキャナ画像処理が行われる。編集画像処理部１１１は、色空間変換、解像度変換、２値化、回転等様々な画像処理を行うための複数のＩＰ（Image Process）機能部を備えている。
【００１５】
プリンタ部１１２は、例えば、レーザビームプリンタやＬＥＤプリンタ等のプリンタ装置であり、レーザビームプリンタの場合は、半導体レーザを備えた露光制御部、画像形成部、転写紙の搬送制御部等（図示せず）等を具備している。プリンタ画像処理部１１４は画像制御部１１５を介して入力した画像データに対して、像域（オブジェクト）処理、スムージング等のプリンタ画像処理を行う。また画像データをページ画像データに合成し、プリンタＩ／Ｆ部１１３を介してプリンタ部１１２に出力する。プリンタＩ／Ｆ部１１３は、プリンタ部１１２が要求するタイミングに合わせてプリントデータを出力する。コピー機能の時は、プリンタ部１１２は、スキャナＩ／Ｆ部１０８から出力された画像データに基づいて印刷媒体に画像を形成する。
【００１６】
図２は、画像制御部１１５の詳細を説明するブロック図である。ここではＰＤＬプリント画像の圧縮のための符号化回路を例に説明する。尚、この符号化回路は、スキャナ画像処理部１１０にあってもよい。ここでは図１と共通する部分は同じ記号で示している。
【００１７】
画像パス制御部２１５は、ＣＰＵ１０１，ＲＡＭ１０３，ＨＤＤ１０４だけでなく、画像制御部１１５内の各ブロックや、スキャナ部１０８やプリンタ部１１２から転送されるデータの行き先を決定する。以下にＰＤＬプリントの場合を例に説明する。
【００１８】
ＣＰＵ１０１は、ネットワーク部１０７から、ホストコンピュータが展開したＰＤＬデータを受信するとＨＤＤ１０４に格納する。その後、ＣＰＵ１０１は、そのＰＤＬデータを展開し、レンダリング部２００がラスタライズするための中間言語であるディスプレイリストに展開してＲＡＭ１０３に格納する。こうしてＲＡＭ１０３にディスプレイリストが展開されると、ＣＰＵ１０１はレンダリング部２００にレンダリング開始指示を行う。これによりレンダリング部２００は、ディスプレイリスト解釈してラスタ画像に展開する。レンダリング部２００がラスタ画像データへの展開を完了すると、そのラスタ画像データを画像圧縮部２０１に転送する。画像圧縮部２０１は、ラスタ画像データを画像符号化してＨＤＤ１０４やＲＡＭ１０３に格納する。また符号化された画像を出力Ｉ／Ｆ部２１１を通して画像制御Ｉ／Ｆ部２１６に供給する。またこの符号化された画像を編集画像処理部１１１に転送して、色空間変換、解像度変換、２値化、回転等の画像処理を行う。その後、編集画像処理部１１０、入力Ｉ／Ｆ部２１０を介して画像パス制御部２１５に戻して、ＲＡＭ１０３やＨＤＤ１０４に再度展開することも可能である。
【００１９】
図３は、レンダリング部２００の構成を説明するブロック図で、ＣＰＵ１０１，ＨＤＤ１０４，ＲＡＭ１０３との接続関係を図示している。
【００２０】
レンダリング部２００は、プロセッサエレメントＰＥ３０１，３０３，３０５，３０７，ローカルメモリＬＲＡＭ３１０，３１１，３１２，ＤＭＡ３０８，ＦＩＦＯ３０２，３０４，３０６、ＲＥＧＩＳＴＥＲ３０９を有している。このレンダリング部２００は、ＣＰＵ１０１，ＨＤＤ１０４，ＲＡＭ１０３とはシステムバス３２２を介して接続される。またシステムバス３２２からレジスタインターフェース３２３を介して、レンダリング部２００のＲＥＧＩＳＴＥＲ３０９に動作モード等の情報を設定できる。レンダリング部２００内部は、２種類のバスが存在する。一つは、ＢＵＳ＿ＡＲＢ３１３に接続するレンダリングバス３２０と、プロセッサエレメント間を接続するＰＥバス３２１である。このＰＥバス３２１は単方向バスであり、例えば、ＰＥ３０１（第１のプロセッサ）からプロセッサ間ＦＩＦＯ３０２を介して、ＰＥ３０３（第２のプロセッサ）に向かってデータを転送する。ここでプロセッサ間ＦＩＦＯ３０２は、ＦＩＦＯ３１４とＤＭＡ３１５とを有している。このようにプロセッサ間ＦＩＦＯ３０２をＦＩＦＯ３１４とＤＭＡ３１５とで構成することにより、ＢＵＳ＿ＡＲＢ３１３を介してローカルメモリＬＲＡＭ３１０，３１１，３１２やＲＡＭ１０３に対してデータを退避することが可能になる。この効果については後述する。尚、プロセッサ間ＦＩＦＯ３０４，３０６も、プロセッサ間ＦＩＦＯ３０２と同様の構成である。尚、図３では、プロセッサ間ＦＩＦＯが全てＦＩＦＯ（３１４，３１６，３１８）とＤＭＡ（３１５，３１７，３１９）で構成するように示しているが、これらはＦＩＦＯのみで構成されても良い。
【００２１】
図４は、実施形態に係るレンダリング部２００がレンダリングを行うためのディスプレイリストを説明する図である。
【００２２】
メモリマップ４００で示すように、ディスプレイリストは、ＩＮＳＴＲＵＣＴＩＯＮ・ＥＤＧＥ＿ＩＮＦＯ４０１とＬＥＶＥＬ＿ＩＮＦＯ４０２，ＦＩＬＬ＿ＩＮＦＯ４０３，ＦＩＬＬ４０４とＷＯＲＫ＿ＡＲＥＡ４０５とを有する。ここでＥＤＧＥ＿ＩＮＦＯ４０１は、あるライン上に存在する色の変化点を表す情報である。ＬＥＶＥＬ＿ＩＮＦＯ４０２は、ある位置に重なる色情報の描画順序を示す情報である。ＦＩＬＬ＿ＩＮＦＯ４０３は、色情報と重ね合わせを示し、ＦＩＬＬ４０４は写真等の画像情報そのものである。ＷＯＲＫ＿ＡＲＥＡ４０５は、レンダリング処理において一時的に必要となる情報を格納する領域である。またディスプレイリストの各要素データは、図４に示すように、各情報間がリンク構造になっている。このため、レンダリング部２００を複数のプロセッサエレメントに分割して、各情報（ＥＤＧＥ／ＬＥＶＥＬ／ＦＩＬＬ）の処理に専念させることが可能となる。
【００２３】
図５は、実施形態に係るレンダリング部２００におけるレンダリング処理の流れを説明する図である。ここで、各プロセッサエレメント（ＰＥ）間はパイプラインで動作しており、図中の点線は、データの受け渡し及び、連携関係を示している。
【００２４】
Ｓ５００は、ＰＥ３０１の処理を示すフローチャートである。まずＳ５０１で、初期設定を行うと、描画するライン（スキャンライン）がレンダリング領域を超えるまでの間（Ｓ５０２〜Ｓ５０６）の処理を繰り返す。ＰＥ３０１は、Ｓ５０３で、ディスプレイリストのＩＮＳＴＲＵＣＴＩＯＮ・ＥＤＧＥ＿ＩＮＦＯ４０１からエッジ情報を取得して、エッジを生成する。次にＳ５０４で、エッジ情報ができると、そのエッジ情報に関連するレベル情報を「レベルデータ」としてＰＥ３０３に転送する。そしてＳ５０５で、スキャンラインを更新する。
【００２５】
Ｓ５１０は、ＰＥ３０３の処理を示すフローチャートである。Ｓ５１１で、ＰＥ３０３がＰＥ３０１からレベルデータを受信する。次にＳ５１２で、ＰＥ３０３は、ページ終了か否かを判定し、ページ終了であれば処理を終了する。一方、終了でなければＳ５１３に進み、描画するオブジェクトの重なり情報を取得して重なり順序を並び替える。そしてＳ５１４に進み、ＰＥ３０３は、描画する色情報のリンク情報をＰＥ３０５（第３のプロセッサ）へ転送する。
【００２６】
Ｓ５２０は、ＰＥ３０５の処理を示すフローチャートである。ＰＥ３０５は、Ｓ５２１で、ＰＥ３０３からフィルデータを受信する。そしてＳ５２２で、ＰＥ３０５は、ページ終了か否かを判定し、ページ終了であれば処理を終了する。一方、終了でなければＳ５２３に進み、描画する色情報をオブジェクトの重なり分だけ取得してオブジェクトを塗りつぶす。そしてＳ５２４に進み、ＰＥ３０５は、重ね合わせ処理手順（コンポジット情報）を後続のＰＥ３０７（第４のプロセッサ）へ転送する。
【００２７】
Ｓ５３０は、ＰＥ３０７の処理を示すフローチャートである。Ｓ５３１で、ＰＥ３０５からコンポジットデータを受信する。次にＳ５３２で、ＰＥ３０７は、ページ終了か否かを判定し、ページ終了であれば処理を終了する。一方、終了でなければＳ５３３に進んで、描画する各オブジェクトの色情報コンポジット情報を基にオブジェクトの重ね合わせ処理を行う。そしてＳ５３４で、ＰＥ３０７は、最終的に得られるラスタ画像データをＤＭＡ３０８へ転送する。
【００２８】
Ｓ５４０は、ＤＭＡ３０８の処理を示すフローチャートである。まずＳ５４１で、ＤＭＡ３０８は、ＰＥ３０７からラスタ画像データを受信する。次にＳ５４２に進み、ＤＭＡ３０８は、ページ終了か否かを判定し、ページ終了であれば処理を終了する。一方、ページ終了でなければＳ５４３に進み、ラスタデータをバッファに格納する。そしてＳ５４４に進み、ＤＭＡ３０８は、バッファにデータが格納されると、予め指定されたＲＡＭ空間にラスタデータを出力する。
【００２９】
図６（Ａ）〜（Ｃ）は、プロセッサエレメント間で転送する命令データフォーマットを説明する図である。
【００３０】
図６（Ａ）は、ＰＥ３０１からＰＥ３０３に転送する命令データフォーマットを示す。この命令データフォーマットは、命令種類（ＩＮＳＴ）、エッジとエッジ間の幅情報（ＷＩＤＴＨ）、当該エッジに関連するレベル番号（ＬＥＶＥＬ＿ＮＵＭ）、その他の情報（ＡＤＤＩＴＩＯＮＡＬ＿ＩＮＦＯ）を含む。
【００３１】
図６（Ｂ）は、ＰＥ３０３からＰＥ３０５に転送する命令データフォーマットを示す。この命令データフォーマットは、命令種類、エッジとエッジ間の幅情報、当該エッジに関連するフィル番号、その他の情報を含む。
【００３２】
図６（Ｃ）は、ＰＥ３０５からＰＥ３０７に転送する命令データフォーマットを示す。この命令データフォーマットは、コンポジット命令種類（ＣＯＭＰＳＴ＿ＩＮＳＴ）、エッジとエッジ間の幅情報、重ね合わせをする色情報（ＦＩＬＬ０〜ＦＩＬＬ３）を含む。ここで命令種類とは、ページ開始、ライン開始、ページ終了等の処理内容を変化させるための情報である。
【００３３】
図７は、ＰＥ３０１の処理内容を説明する図である。
【００３４】
描画領域７００には、三角形（色は編点、色が指定）と四角形（色は塗りつぶし、色が指定）がある。またＰＥ３０１が管理するエッジ番号を管理する管理エッジ部７０５と、そのエッジの位置を座標の走査方向にソートしたエッジ情報を格納するソートエッジ部７０６が示されている。各エッジは、図７の７０１〜７０４で示すような始点と終点情報を結ぶベクトル情報で表される。
【００３５】
描画領域７００の最上位のラインから走査を開始し、描画するラインがエッジ７０１，７０２の位置に来ると、ＰＥ３０１は、ディスプレイリストのＥＤＧＥ＿ＩＮＦＯ４０１からエッジ７０１，７０２の位置を読み出して管理エッジ部７０５に格納する。続いてＰＥ３０１は、そのエッジ情報を走査方向に並び替えたエッジ情報をソートエッジ部７０６に格納する。従って、エッジ７０１，７０２の順にソートして格納される。
【００３６】
次に走査ラインが、エッジ７０３，７０４のラインまで到達すると、管理エッジ部７０５に四角形のエッジ情報を追加格納し、ソートエッジ部７０６にソート結果を格納する。ここでは１ラインあたり４つのエッジが検出されて、そのソート順は走査方向に、エッジ７０３、エッジ７０１、エッジ７０４のエッジ７０２の順となる。
【００３７】
次に走査ラインが、三角形のエッジ７０１，７０２から外れるラインまで到達すると、管理エッジ部７０５からエッジ７０１，７０２のエッジ情報を削除して、残ったエッジ７０３，７０４のエッジ情報のみをソートエッジ部７０６にソートして格納する。そして走査ラインがエッジ７０３，７０４から外れると、管理エッジ部７０５，ソートエッジ部７０６にはエッジ情報がなくなり、白（或いは背景色）を描画する命令のみを、ＰＥ３０３以降のプロセッサエレメントに指示することになる。
【００３８】
図８は、ＰＥ３０１とＰＥ３０３との間にあるＦＩＦＯ３０２の機能と効果を説明する図で、ＰＥ３０１とＰＥ３０３の処理時間関係を示すタイミングチャートである。図中、斜線部８００は各プロセッサエレメントのデータ処理時間帯を示し、網部８０２はプロセッサ間ＦＩＦＯ３０２へのデータ送信を、縦線部８０１は、前段のプロセッサエレメントからのデータ受信処理時間を示している。
【００３９】
８１０は、プロセッサ間ＦＩＦＯ３０２が、ＦＩＦＯ３１４のみで構成された場合のタイミングチャートを示す。８１１は、プロセッサ間ＦＩＦＯ３０２が、図３のように、ＦＩＦＯ３１４とＤＭＡ３１５で構成された場合のタイミングチャートを示している。
【００４０】
８１０では、次に述べる状況を想定する。ＰＥ３０１が、１ライン分のエッジ情報をディスプレイリストから取得し、ソートした後にＰＥ３０３にデータ転送を行った。ここでＦＩＦＯ３０２のＦＩＦＯ３１４は、４個分のレベルデータが格納できる場合を図示している。このときＰＥ３０１は、８２０で、ライン２のデータ処理を完了している。しかしこのとき、ＰＥ３０３は、まだライン１の３個目のレベル情報を処理しているため、ＦＩＦＯ３１４がフル状態となって、ＰＥ３０１からＰＥ３０３へデータを転送できない。
【００４１】
これに対して８１１では、プロセッサ間ＦＩＦＯ３０２にＤＭＡ３１５が設けられているため、ＰＥ３０１から転送されるデータを、容量の大きいローカルメモリ（ＬＲＡＭ）や、ＲＡＭ１０３に格納することができる。これにより、８１１では、８１０で示すような、プロセッサエレメント間で処理するデータと、転送する１つのデータあたりの時間間隔をなくすことができる。また、ローカルメモリなどに退避できるデータ量は可変であるため、描画するデータによりデータ量が可変するレンダリング部２００にとっては最適な構成となる。
【００４２】
次に、レンダリング部２００から出力された画像を画像圧縮部２０１で符号化圧縮する場合を考える。レンダリングされた多値のラスタ画像に対する画像符号化としては、ＪＰＥＧなどに代表されるブロックに対して符号化する方式のものが多い。その場合、レンダリング部２００が出力するラスタ順に並んだ画素データをラインバッファに格納することになり、画像符号化ブロックの画素数や解像度が大きくなるほどシステムコストが増大する。そこで、スキャンライン出力のためのディスプレイリストからブロック単位の順番でラスタ画像を生成する方式について説明する。
【００４３】
図９（Ａ）（Ｂ）は、スキャンライン順に出力するディスプレイリストに対応した２つのラスタ画像の生成方法を説明する図である。
【００４４】
図９（Ａ）は、スキャンライン順にラスタ画像を生成する順序を示している。図９（Ｂ）は、ブロック順にラスタ画像を生成する順序を示している。前記のブロック順のレンダリング処理を行うには、ディスプレイリストから生成されたライン単位のエッジ情報をブロック情報に変換する必要がある。上述したようなスキャンライン順に出力するためのディスプレイリストから、ブロック順にラスタ画像を生成する場合、どのプロセッサエレメントがブロック情報への変換を行うかが課題となる。
【００４５】
図１０は、ブロック情報変換を行う最適なプロセッサエレメントを説明する図である。図１０は、図９（Ａ）（Ｂ）のそれぞれ対応した方式でレンダリングを行った場合のＦＩＦＯ部３０２のＤＭＡ３１５とＰＥ３０３で管理するＷＯＲＫ＿ＡＲＥＡ４０５の状態を示す図である。
【００４６】
図１０（Ａ）に示すように、ＤＭＡ３１５は、予め設定されたバッファ量に応じた数のエッジデータをＷＯＲＫ＿ＡＲＥＡ４０５に格納する。ＰＥ３０３は、そのＤＭＡ３１５から受信したレベルデータの重なり順序をソートした結果をＷＯＲＫ＿ＡＲＥＡ４０５に格納する。このとき、最大でも１ライン分のソート結果を保持しておくことで、エッジ間の幅のみが異なる同一のレベル情報をＰＥ３０１から受信した場合、ソート処理を省略することができる効果がある。
【００４７】
一方、図１０（Ｂ）では、ＰＥ３０３がブロック情報変換を行う場合のＰＥ３０３のＷＯＲＫ＿ＡＲＥＡ４０５（上部）と、ＤＭＡ３１５がブロック情報変換を行う場合（下部）のＰＥ３０３のＷＯＲＫ＿ＡＲＥＡ４０５の使用状況を示している。ＤＭＡ３１５は、ブロック情報変換処理を行うブロックに関係せずに、ブロックの副走査方向の画素数（図では３２ライン）分のエッジデータをＷＯＲＫ＿ＡＲＥＡ４０５に格納することになる。しかし、ＰＥ３０３がブロック情報の変換処理を行う場合、ＰＥ３０３も３２ライン分のレベル処理情報結果をＷＯＲＫ＿ＡＲＥＡ４０５に格納する。もしくは、レベル情報は全く保持しない構成も有り得る。そこで、ＤＭＡ３１５がブロック情報の変換処理を行うことができれば、ＰＥ３０３は各ブロック単位のレベル処理結果のみを保持しておけばよい。以上のことから、ＤＭＡ３１５がブロック情報の変換処理を行うことで、システムメモリ削減の効果が大きくなることを示している。更に、ＤＭＡ３１５がブロック情報の変換処理を行うと、ＰＥ３０１，ＰＥ３０３の処理内容を変更することなく、ＤＭＡ３１５の動作モードのみの切り替えで２つのレンダリング方式に対応できる効果もある。
【００４８】
次に、図１１乃至図２１を参照して、ＤＭＡ３１５を備えたＦＩＦＯ部３０２を使用したブロック情報の変換処理について説明する。
【００４９】
図１１は、描画領域を示している。図１１には、三角、丸、四角の３つのオブジェクト１１０２〜１１０４があり、斜線で示した領域１１０１の３２ライン分（ブロックライン）の処理を図１２から図１４を用いて説明する。
【００５０】
図１２（Ａ）〜（Ｆ）は、走査ライン１２００の位置に応じて、図１１の領域１１０１を切り出した場合のエッジ情報を図示したものである。図１２（Ａ）は、走査ライン１２００が領域１１０１の最上位であるときのエッジ情報を示す。図１２では、エッジ間の幅をｗｉｄｔｈ［ｉ］で定義している。また、オブジェクト１１０３（半円）の上部は最上位のラインと接しているため、オブジェクト１１０３のエッジは存在していない。
【００５１】
図１２（Ｂ）は、走査ライン１２００が最上位のラインよりも少し下のラインである場合のエッジ情報を示す。図１２（Ｂ）と図１２（Ｃ）では、エッジ数の変化はなく、エッジ間の幅ｗｉｄｔｈが変化している。図１２（Ｄ）、図１２（Ｅ）では、走査ライン１２００が四角形のオブジェクト１１０４から外れているため、ｗｉｄｔｈ６とｗｉｄｔｈ７がなくなっている。図１２（Ｆ）は、走査ライン１２００が領域１１０１の最下位であるときのエッジ情報を示す。ＰＥ３０１は、エッジ情報から各ｗｉｄｔｈ情報を生成し、その幅と重ね合わせ情報であるレベル情報へのリンク情報を図６（Ａ）のレベルデータとして、ＤＭＡ３１５，ＰＥ３０３へ転送する。
【００５２】
図１３及び図１４は、ＤＭＡ３１５が管理するメモリの状態と、読み書き順序の概略を説明する図である。また、図中左部分の各ラインの開始アドレスの後にあるアルファベット（ａ）〜（ｆ）は、図１２の（Ａ）〜（Ｆ）に対応している。
【００５３】
図１３は、ＤＭＡ３１５がＷＯＲＫ＿ＡＲＥＡ４０５に格納するブロックライン分のメモリ情報を示している。ＤＭＡ３１５は、１３００で、Ｌｉｎｅ１の開始アドレスをアドレス格納部（ＲＡＭ＿ｓｔａｒｔ＿Ａｄｄｒｅｓｓ）に書き込んだ後、６個のレベル情報（ｗｉｄｔｈ）をメモリに書き込む。次に１３０１でＤＭＡ３１５は、ＰＥ３０１から新しいラインが開始されたことを受信すると、Ｌｉｎｅ２の開始アドレスを、ＲＡＭ＿ｓｔａｒｔ＿Ａｄｄｒｅｓｓに書き込み、続いて７個のレベル情報をメモリに格納する。以下、領域１１０１の最下位ラインに達するまで、各ラインの開始アドレスとレベル情報を受信した順番で書き込む。
【００５４】
図１４は、ＤＭＡ３１５がスキャンライン順のレベルデータを読み出す順序を説明する図である。読み出し制御部は、１ライン目の開始アドレスからレベル情報（ｗｉｄｔｈ）を格納したアドレスを読み出す。ここでは１ライン目の最初のレベル情報（ｗｉｄｔｈ１）を読み出し、次に２ライン目の開始アドレスからｗｉｄｔｈ１を取り出す。以下、１〜８の始点から矢印で示した順序で読み出しを行うことになる。
【００５５】
図１５は、ＤＭＡ３１５の内部ブロック構成と、図１及び図３で示した周辺ブロックとの接続関係を説明する図である。
【００５６】
ＡＬＵ１５０１は、汎用プロセッサよりも簡易な演算（例えば、加算、減算、シフト演算）のみに対応する演算部である。ＢＵＳ＿ＩＦ１５０３は、レンダリングバス３１３に対してトランザクションを生成する。ＱＩＦ＿ＩＮ１５０４，ＱＩＦ＿ＯＵＴ１５０５は、ＰＥ３０１からＦＩＦＯ３１４を経由して入力されるデータ及び、ＰＥ３０３に対してＦＩＦＯ３１４を経由して出力されるデータのバス制御を行うＩ／Ｆ部である。ＲＥＧ１５０６は、ＤＭＡ３１５のレジスタ部でありＡＬＵ１５０１により制御される。そして、ＭＡＩＮ＿ＳＥＱ１５０２は、上述したＡＬＵ１５０１，ＢＵＳ＿ＩＦ１５０３，ＱＩＦ＿ＩＮ１５０４，ＱＩＦ＿ＯＵＴ１５０５，ＲＥＧ１５０６を制御するシーケンサである。このシーケンサ１５０２は、今回説明する動作を専用で行うハードウェアロジックであっても、プログラマブルで動作内容を変えるものであっても構わない。またＤＭＡ３１５は、ＣＰＵ１０１がＲＥＧＩ３０９に格納した情報に応じて動作モードなどを切り替えることができる。次にＤＭＡ３１５が管理するデータの格納場所について説明する。
【００５７】
ＲＡＭ１０３には、領域１１０１（ブロックライン）の全ラインのｗｉｄｔｈ［ｉ］（レベルデータ）を格納する。性能向上のために、２ブロックライン分のデータを格納する方式でも良い。ローカルメモリＬＲＡＭ３１０には、各ブロックラインのＲＡＭ１０３上の開始アドレス（ＲＡＭ＿ｓｔａｒｔ Ａｄｄｒｅｓｓ）と、継続レベル情報（ｃｏｎｔｉｎｕｅ ｉｎｆｏ）と、継続レベルデータ（ｃｏｎｔｉｎｕｅ ｄａｔａ）を格納する。図示していないが、ＬＲＡＭ３１０の情報も２ブロックライン分の構成としても良い。
【００５８】
図１６は、図１２で示すブロックラインの描画データのエッジ位置の一例を示す図である。図１６の矢印に示した２ライン分１６０１，１６０２のＤＭＡ３１５の動作について図１７を用いて詳細に説明する。そしてＤＭＡ３１５の動作シーケンスを図１８及び図１９にフローチャートとして示した。
【００５９】
図１７（Ａ）〜（Ｃ）、図１８（Ａ）（Ｂ），図１９（Ａ）（Ｂ）は、図１６で示したブロック１６１０〜１６１６に対する処理を左端のブロック１６１０から順に対応させて示している。また、左にあるＬＲＡＭ０（３１０）／ＲＥＧ／ＱＩＦ＿ＯＵＴなどは、それぞれのデータの読み出し先、又は格納先を示している。
【００６０】
図１７（Ａ）は、図１６に示すブロックラインの左端ブロック１６１０の矢印で示した２ライン１６０１，１６０２において、ＤＭＡ３１５が処理するデータの遷移を示している。まずＤＭＡ３１５は、エッジ情報の座標位置（レベルデータ）が前処理ブロックから継続しているか否かを判定する。ここでは最初のブロックであるため、前処理ブロックから続いていることはない（＊ｓｔａｒｔ）。次にＤＭＡ３１５は、ブロック内の開始座標を初期化（ｓｔ＿ｐｏｓ＝０）をセットする。ＤＭＡ３１５は、レベルデータが格納されているＲＡＭ１０３のアドレス情報を取得して、レベルデータ（ここではｗｉｄｔｈ１＝５４）をＲＡＭ１０３から読み出す。次にＤＭＡ３１５は、ｓｔ＿ｐｏｓとｗｉｄｔｈ１とを足し、シフト演算或いはビット切り出し操作によってその加算結果を３２で割り、商部分と剰余部分に分解する。このとき、商部分に「１」以上の数字が得られた場合は、当該ブロックの当該ラインの処理は終了となる。そこで、ＤＭＡ３１５は、３２（ブロック主走査方向の画素数）からｓｔ＿ｐｏｓを引き、ＰＥ３０３に転送すべきｗｉｄｔｈ情報を生成し、レベルデータのｗｉｄｔｈ部分を置換してからＰＥ３０３に転送する。ＤＭＡ３１５が、ＰＥ３０３に転送したレベルデータの一部は次ブロックの処理の時に利用するため、一時的にＬＲＡＭ３１０のｃｏｎｔｉｎｕｅ ｄａｔａ領域に格納する。ＤＭＡ３１５は、ｗｉｄｔｈ情報を、元のｗｉｄｔｈ（ここでは５４）から転送のため置換したｗｉｄｔｈ（ここでは３２）を引いた「２２」に置換してＬＲＡＭ３１０へ格納する。また、ＬＲＡＭ３１０へ継続するレベルデータ（エッジ情報）を格納したことをＬＲＡＭ３１０の継続情報領域（ｃｏｎｔｉｎｕｅ ｉｎｆｏ領域）に格納する。以上で、左端ブロックの１ラインのレベルデータ読み出し及び転送処理を完了する。
【００６１】
続いてＤＭＡ３１５は、数ラインの処理を終えると、図１６の下段の矢印に相当するライン１６０２の処理に到達する。これにより図１７（Ａ）の点線部より下に示したデータ処理を行う。ＤＭＡ３１５がＲＡＭ１０３から読み出すレベルデータとしては上ラインで読み出したものと同じで、ｗｉｄｔｈ情報のみが異なるため、上記に述べた処理と同様の処理を行う。異なる点は、ｗｉｄｔｈ情報の取り扱いである。ＤＭＡ３１５は、ｗｉｄｔｈ＝５０のうち、ｗｉｄｔｈ＝３２をＰＥ３０３へ転送し、残りのｗｉｄｔｈ＝１８をＬＲＡＭ３１０へ格納する。ＤＭＡ３１５は、１ブロック分（３２ライン分）の処理を終えると、ＲＥＧ部にＢＬＯＣＫ＿ＥＮＤ情報を書き込み、次のブロックの処理へ遷移する。
【００６２】
図１７（Ｂ）は、図１７（Ａ）で、１ブロック目の３２ライン分の処理が終了した後にＤＭＡ３１５が行う処理に基づいてる。ここでＤＭＡ３１５は、ｃｏｎｔｉｎｕｅ ｉｎｆｏから継続情報と格納先ＬＲＡＭ３１０のアドレスを取得し、図１７（Ａ）で格納したレベルデータをメモリから読み出す。そのため、ＬＲＡＭ３１０のｗｉｄｔｈは、ＰＥ３０１が生成したｗｉｄｔｈ＝５４から３２を引いた「２２」となっている。このときＤＭＡ３１５は、ｓｔ＿ｐｏｓとｗｉｄｔｈの合計値が「３２」に達しないため、商部分は０と演算する。そこで、ＤＭＡ３１５は、ｗｉｄｔｈの「２２」は全てＰＥ３０３に転送し、当該レベルデータは終了したと判断する。続いて、新しいレベル情報が格納されているＲＡＭ１０３上のアドレス情報をＬＲＡＭ３１０から内部のアドレスレジスタにセットし直して、新しいレベルデータをＲＡＭ１０３から読み出す。ここでは、ＤＭＡ３１５は、ｗｉｄｔｈ＝３６のデータを読み出す。この場合、ｅｎｄ＿ｐｓｏ ５８＝２２（ｓｔ＿ｐｏｓ）＋３６（ｗｉｄｔｈ）となり、商部分が１よりも大きくなる。そのため、ＤＭＡ３１５は、ｗｉｄｔｈ（１０）のレベルデータをＰＥ３０３にデータを転送する。その後、元のｗｉｄｔｈ（３６）から転送幅の「１０」（ｔｒ＿ｗｉｄｔｈ＝３２−２２（ｅｎｄ＿ｐｏｓ））を引いた「２６」（ｗｉｄｔｈ（３６）−ｔｒ＿ｗｉｄｔｈ（１０））を次ブロックで利用するデータとしてＬＲＡＭ３１０へ格納する。数ライン後の点線部以下についても、処理は同様であり、ｗｉｄｔｈ情報が異なるのみである。
【００６３】
図１７（Ｃ）及び図１８（Ａ）は、上ラインでは、１つ目のレベルデータは前ブロックから継続するレベルデータであり、２つ目のレベルデータで当該ブロックの処理を完了するケースを示す。但し、図１７（Ｃ）については、図１６の３個目のブロックにあるようにオブジェクトの重なりがあるため、レベルデータは継続するレベルデータを含めて３個となり、図１７（Ｃ）と図１８（Ａ）では、下ラインにおいて処理するデータ量が異なる。
【００６４】
図１８（Ｂ）では、前ブロックから継続したレベルデータで開始し、２つ目のレベルデータもｗｉｄｔｈが小さく、ＤＭＡ３１５がさらにもう一つの新しいレベルデータをメモリから読み出しを行っている。このとき、３つ目のレベルデータについては、ｓｔ＿ｐｏｓ＝２４とｗｉｄｔｈ＝４８を加算して、ブロック画素数（３２）で除算（シフト演算（７２／３２）＝２余り８）すると、商が「２」で余りが「８」となる。この場合も、ＤＭＡ３１５は、ＰＥ３０３に送信するレベルデータのｗｉｄｔｈを「４８」から「８」に置換して送信し、その後、ｗｉｄｔｈを「４０」（ｗｉｄｔｈ ４８−ｔｒ＿ｗｉｄｔｈ ８）にしてからＬＲＡＭ３１０へ継続データとして格納している。
【００６５】
図１９（Ａ）は、前ブロックから当該ブロックを過ぎ、次のブロックまで継続する単一色データのみで構成されている。そこで、ＤＭＡ３１５は、次ブロックまでレベルデータを継続使用するために、ｗｉｄｔｈ４０をｗｉｄｔｈ３２にして転送後、残りのｗｉｄｔｈを８に置換して、ＬＲＡＭ３１０へ格納している。
【００６６】
図１９（Ｂ）では、ＤＭＡ３１５は、前ブロックで格納したｗｉｄｔｈ８のデータをＰＥ３０３へ転送し、新しいレベル情報をＲＡＭ１０３から読み出す。ＤＭＡ３１５は、ｓｔ＿ｐｏｓ＝８とｗｉｄｔｈ＝２４を足した値の剰余部分が「０」となり、ブロックライン端の画素位置と一致することがわかる。このときは元のｗｉｄｔｈ２４（ｔｒ＿ｗｉｄｔｈ＝３２−ｓｔ＿ｐｏｓ８）をＰＥ３０３へ転送する。図１７（Ａ）から図１９（Ａ）で示した例では、ブロック端（３２の倍数の位置）でエッジが終了することはなかった。もし、ブロックライン内のブロック端でエッジが終了する場合は、ｃｏｎｔｉｎｕｅ  ｉｎｆｏには継続しない旨の情報を書き込むことになる。次ブロック処理時において、継続しない旨の情報（ｃｏｎｔｉｎｕｅ ｉｎｆｏ＝＝０）を読み出したＤＭＡ３１５は、ＲＡＭ＿ｓｔａｒｔ＿Ａｄｄｒｅｓｓからアドレス情報を取得し、ＲＡＭ１０３から新規レベル情報を処理する。
【００６７】
上記に説明したようなデータの遷移によりＤＭＡ３１５は、ブロック情報変換処理を行う。
【００６８】
図２０は、実施形態に係るレンダリング部２００の全体的な処理を説明するフローチャート、図２１は、ＤＭＡ３１５の処理の詳細を説明するフローチャートである。図２０は、図５で示したフローチャートに、Ｓ１８００で示すＤＭＡ３１５の動作を追加したブロック処理レンダリングに対応した全体の動作を示すフローチャートである。従って、図５と共通する部分は同じ記号で示し、それらの説明を省略する。
【００６９】
ＤＭＡ３１５が、ＤＭＡ３１５のＷＯＲＫ＿ＡＲＥＡ４０５にデータをスキャンライン順に書き込む処理をＳ１８１０番台に、ＷＯＲＫＡ＿ＡＲＥＡ４０５からブロック処理順に変換するための読み出し処理をＳ１８２０番台に示す。
【００７０】
まず最初に、Ｓ１８１０番台のレベルデータの書き込み処理を説明する。Ｓ１８１０で、ＤＭＡ３１５の書き込みシーケンサ（以下、ＤＭＡ１＿ＷＲ）が初期設定を行う。次にＳ１８１１で、ＰＥ３０１からＦＩＦＯ３１４に転送するデータのＥｍｐｔｙ状態を確認する。Ｓ１８１１でＥｍｐｔｙでなければＳ１８１２に進み、ＤＭＡ１＿ＷＲは、ＤＭＡ３１５のリードシーケンサ（ＤＭＡ１＿ＲＤ）と同期処理を行う。ここでは、ダブルバッファで管理しても良いし、シングルバッファで管理及び同期処理を行っても良い。そしてＳ５１１で、ＤＭＡ１＿ＷＲは、ＰＥ３０１からデータを受信すると、Ｓ１８１３で新規ラインであるかを判定する。新規ライン、即ち、ラインの先頭データであればＳ１８１４に進んで、そのアドレスをＬＲＡＭ３１０へ格納する）。続いてＳ１８１５に進み、ＤＭＡ１＿ＷＲは、ＲＡＭ１０３へレベルデータを書き込み、Ｓ１８１６で、ブロックラインが終了するか否かを判定する。そしてＳ１８１６で、ブロックライン分のレベルデータ書き込みが完了するとＳ１８１７に進み、ＤＭＡ１＿ＲＤとの同期処理を行い、次ブロックラインの処理に進むか否かを判定する。
【００７１】
一方、ＤＭＡ１＿ＲＤは、Ｓ１８２０で初期設定の後、Ｓ１８２１に進み、ＤＭＡ１＿ＷＲとの同期処理を行う。ＤＭＡ１＿ＲＤの繰り返し処理は、Ｓ１８２２でブロックラインあたりのブロック数に達するまでと、Ｓ１８２３で、カレントライン数がブロックのライン数（本実施形態では３２ライン）に達するまでの処理をループする２重ループ構造になる。この２重ループの繰り返し処理の中で、Ｓ１８２４で、ＤＭＡ１＿ＲＤはブロック変換及び転送を行う。
【００７２】
こうしてＤＭＡ３１５がブロック化したデータは、ＰＥ３０３，ＰＥ３０５，ＰＥ３０７，ＰＥ３０８で処理されてブロック画像となり、Ｓ１８９７で、ＰＥ３０７からＤＭＡ３０８に出力される。これによりＤＭＡ３０８は、Ｓ１８９８で、そのブロック画像を受信し、Ｓ１８９９で画像圧縮を行う。
【００７３】
図２１は、図２０のＤＭＡ１＿ＲＤのブロック変換及び転送処理を説明する図である。尚、図２０と共通する部分は同じ記号で示し、それらの説明を省略する。
【００７４】
まずＳ１９００で、ＤＭＡ１＿ＲＤは、各ブロック単位で、ｃｏｎｔｉｎｕｅ ｉｎｆｏアドレスとＲＡＭ＿ｓｔａｒｔ＿Ａｄｄｒｅｓｓを初期化する。次にＳ１９０１に進み、ＤＭＡ１＿ＲＤは、各ブロック内のライン処理の初めにｓｔ＿ｐｏｓ，ｅｎｄ＿ｐｏｓ，ｒｅｐａｅｔ＿ｎｕｍを初期化する。このときＤＭＡ１＿ＲＤは、Ｓ１１８２３で、ブロック内の各ライン処理を行う。次にＳ１９０２に進み、ＤＭＡ１＿ＲＤは、ｃｏｎｔｉｎｕｅ ｉｎｆｏアドレスを内部ＲＥＧのアドレスレジスタにセットし、４バイト分加算する。次にＳ１９０３に進み、ＤＭＡ１＿ＲＤはｃｏｎｔｉｎｕｅ ｉｎｆｏを読み出すと、次にＳ１９０４に進み、読み出すべきＲＡＭ＿Ｓｔａｒｔ＿Ａｄｄｒｅｓｓをアドレスレジスタにセットする。続いて、ＤＭＡ１＿ＲＤは、継続情報が継続と取得できれば（ｃｏｎｔｉｎｕｅ ｉｎｆｏ＝＝１）にセットする（Ｓ１９０５）。そしてＳ１９０６で、ローカルメモリＬＲＡＭ３１０上の継続データ格納用アドレスを読み出しアドレスとしてアドレスレジスタにセットする。
【００７５】
そしてＳ１９０７で、ＤＭＡ１＿ＲＤはレベルデータを、ＬＲＡＭ３１０かＲＡＭ１０３から読み出して、ＲＡＭ＿Ｓｔａｒｔ＿Ａｄｄｒｅｓｓを次のレベルデータへ進める（４バイト分加算する）。続いてＳ１９０８に進み、ｓｔ＿ｐｏｓ＋ｗｉｄｔｈから、終了位置を算出する。そしてＳ１９０９で、ＤＭＡ１＿ＲＤは、Ｓ１９０８で読み出したｅｎｄ＿ｐｏｓ（終了位置）を、ブロック画素数（本実施例では３２）を割った、或いは、ビットシフトした値が「１」より小さいかを判定し、小さいときはＳ１９１０に示すループ処理に入る。このＳ１９１０のループは、当該レベルデータをＰＥ３０３に転送した後、新しいレベルデータを取得するためのループである。
【００７６】
このループ処理では、Ｓ１９１１で、ＤＭＡ１＿ＲＤは、転送すべきレベルデータのｗｉｄｔｈ情報を算出する（ｔｒ＿ｗｉｄｔｈ＝ｅｎｄ＿ｐｏｓ − ｓｔ＿ｐｏｓ）。続いてＳ１９１２に進み、ＤＭＡ１＿ＲＤは続くレベルデータの開始位置をセットする（ｓｔ＿ｐｏｓ＝ｅｎｄ＿ｐｏｓ）。尚、このＳ１９１２の処理は、Ｓ１９１２からＳ１９１５までの間に行われれば良い。続いてＳ１９１３に進み、ＤＭＡ１＿ＲＤは、ｗｉｄｔｈ情報を置換し、Ｓ１９１４で、ＰＥ３０３にレベルデータを転送する。そしてＳ１９１５で、ＤＭＡ１＿ＲＤは続く新規レベルデータのＲＡＭ＿ｓｔａｒｔ＿Ａｄｄｒｅｓｓをアドレスレジスタにセットして、Ｓ１９０７の次のレベルデータの読み出し処理に戻る。
【００７７】
そしてＤＭＡ１＿ＲＤは、ｅｎｄ＿ｐｏｓを算出した結果（ｒｅｐｅａｔ＿ｎｕｍ）が１以上となれば、そのレベルデータの一部をＰＥ３０３へ転送し、残りは継続データとしてＬＲＡＭ３１０へ格納する。継続するレベルデータと判断された場合は、Ｓ１９１７で、転送する幅（ｗｉｄｔｈ）をｅｎｄ＿ｐｏｓの剰余値として算出する。次にＳ１９１８に進み、ＤＭＡ１＿ＲＤは、ｗｉｄｔｈ部分を置換し、Ｓ１９１４で、レベルデータをＰＥ３０３へ転送する。ここで継続するレベルデータについては、以下の手順でデータ及び継続情報を生成する。
【００７８】
まずＳ１９１９で、ＤＭＡ１＿ＲＤは継続するレベルデータのｗｉｄｔｈ（ｔｒ＿ｗｉｄｔｈ＝ｗｉｄｔｈ−ｅｎｄ＿ｐｏｓ）を算出する。そしてＳ１９２０で、レベルデータのｗｉｄｔｈ部分を置換し、ＬＲＡＭ３１０へ書き込む。これら処理によって、次ブロックでは、Ｓ１９２１で、継続レベル情報あり（ｃｏｎｔｉｎｕｅ ｉｎｆｏ＝＝１）のｃｏｎｔｉｎｕｅ ｉｎｆｏをＬＲＡＭ３１０の所定アドレスに書き込む。これら処理を１ブロックライン分繰り返して（Ｓ１９２２，Ｓ１９２３）、ＤＭＡ１＿ＷＲのシーケンスと同期処理を行うこととなる。
【００７９】
以上説明したように、汎用的なＤＭＡ処理に簡易演算と、ＬＲＡＭ３１０とＤＭＡ間でデータ移動を行うシーケンス制御機能を追加する。これにより、スキャンライン順にレンダリング用のディスプレイリストから生成されるデータを、ブロックの処理順で出力することが可能になる。また、レンダリング処理を行うプロセッサエレメントの処理は、スキャンライン処理とブロック処理で変更しなくて済むため、２つのレンダリングモードを共存させることができる。
【００８０】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005571977.tif 000002
【図２】
0005571977.tif 000003
【図３】
0005571977.tif 000004
【図４】
0005571977.tif 000005
【図５】
0005571977.tif 000006
【図６】
0005571977.tif 000007
【図７】
0005571977.tif 000008
【図８】
0005571977.tif 000009
【図９】
0005571977.tif 000010
【図１０】
0005571977.tif 000011
【図１１】
0005571977.tif 000012
【図１２】
0005571977.tif 000013
【図１３】
0005571977.tif 000014
【図１４】
0005571977.tif 000015
【図１５】
0005571977.tif 000016
【図１６】
0005571977.tif 000017
【図１７】
0005571977.tif 000018
【図１８】
0005571977.tif 000019
【図１９】
0005571977.tif 000020
【図２０】
0005571977.tif 000021
【図２１】
0005571977.tif 000022