(57)【要約】      （修正有）【課題】描画処理毎に異なるディスプレイリストを使用しなくても複数の描画処理を並列に実行することができる画像形成装置および画像形成プログラムを提供する。【解決手段】ディスプレイリストに基づいて１スキャンラインずつレンダリングするレンダースレッド１８ｂを備えることが可能なＭＦＰ１０は、レンダースレッド１８ｂを同時に備える数をＭＦＰ１０の状況に応じて決定する並列処理数決定手段１８ｃを備え、ページのうち複数のスキャンラインを含むバンドをレンダリングの対象とする２つのレンダースレッドを同時に備えることを並列処理数決定手段１８ｃが決定した場合、バンドをレンダリングの対象とする２つのレンダースレッドのそれぞれは、レンダリングの対象とする全てのレンダースレッドの数である「２」から１を減じた数である「１」のスキャンラインを飛ばしながら１スキャンラインずつ、互いに異なるスキャンラインに対してレンダリングする。【選択図】図１
2018083319.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイリストに基づいて１ラインずつレンダリングする描画処理手段を備えることが可能な画像形成装置であって、
前記描画処理手段を同時に備える数を前記画像形成装置の状況に応じて決定する並列処理数決定手段を備え、
ページのうち複数のラインを含む特定の領域をレンダリングの対象とする複数の前記描画処理手段を同時に備えることを前記並列処理数決定手段が決定した場合、前記特定の領域をレンダリングの対象とする複数の前記描画処理手段のそれぞれは、前記特定の領域をレンダリングの対象とする全ての前記描画処理手段の数から１を減じた数のラインを飛ばしながら１ラインずつ、互いに異なるラインに対してレンダリングすることを特徴とする画像形成装置。
【請求項２】
前記特定の領域をレンダリングの対象とする複数の前記描画処理手段を同時に備えることを前記並列処理数決定手段が決定した場合、前記特定の領域をレンダリングの対象とする前記描画処理手段は、前記特定の領域内に複数のオブジェクトが含まれるとき、前記特定の領域を基準として数えたラインに基づいて、前記複数のオブジェクトのそれぞれを順番にレンダリングすることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記並列処理数決定手段は、前記ページを分割した複数の領域のうち互いに異なる領域をレンダリングの対象とする複数の前記描画処理手段を同時に備えることを決定することを特徴とする請求項１または請求項２に記載の画像形成装置。
【請求項４】
前記複数の領域は、同じ面積を有し、
前記並列処理数決定手段は、前記複数の描画処理手段を対象として、前記複数の領域のそれぞれのレンダリングの処理時間が均一になるように予測して、前記複数の領域のそれぞれをレンダリングの対象とする前記描画処理手段を同時に備える数を決定することを特徴とする請求項３に記載の画像形成装置。
【請求項５】
ディスプレイリストに基づいて１ラインずつレンダリングする描画処理手段と、
前記描画処理手段を同時に備える数をコンピューターの状況に応じて決定する並列処理数決定手段と
を前記コンピューターに実現させ、
ページのうち複数のラインを含む特定の領域をレンダリングの対象とする複数の前記描画処理手段を同時に備えることを前記並列処理数決定手段が決定した場合、前記特定の領域をレンダリングの対象とする複数の前記描画処理手段のそれぞれは、前記特定の領域をレンダリングの対象とする全ての前記描画処理手段の数から１を減じた数のラインを飛ばしながら１ラインずつ、互いに異なるラインに対してレンダリングすることを特徴とする画像形成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画処理を実行する画像形成装置および画像形成プログラムに関する。
【背景技術】
【０００２】
従来、ディスプレイリストに基づいて１ラインずつレンダリングする複数の描画処理手段として、ページのうち複数のラインを含む領域における上から下に、トップダウン・ディスプレイリストに基づいてレンダリングする描画処理手段と、この領域における下から上に、ボトムアップ・ディスプレイリストに基づいてレンダリングする描画処理手段とを同時に備える描画処理装置が知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２６８１８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の描画処理装置においては、並列に実行される描画処理毎に異なるディスプレイリストが使用される必要があるという問題がある。
【０００５】
そこで、本発明は、描画処理毎に異なるディスプレイリストを使用しなくても複数の描画処理を並列に実行することができる画像形成装置および画像形成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の画像形成装置は、ディスプレイリストに基づいて１ラインずつレンダリングする描画処理手段を備えることが可能な画像形成装置であって、前記描画処理手段を同時に備える数を前記画像形成装置の状況に応じて決定する並列処理数決定手段を備え、ページのうち複数のラインを含む特定の領域をレンダリングの対象とする複数の前記描画処理手段を同時に備えることを前記並列処理数決定手段が決定した場合、前記特定の領域をレンダリングの対象とする複数の前記描画処理手段のそれぞれは、前記特定の領域をレンダリングの対象とする全ての前記描画処理手段の数から１を減じた数のラインを飛ばしながら１ラインずつ、互いに異なるラインに対してレンダリングすることを特徴とする。
【０００７】
この構成により、本発明の画像形成装置は、ページのうち複数のラインを含む特定の領域をレンダリングの対象とする複数の描画処理手段を同時に備えることを決定した場合、これらの描画処理手段が同一のディスプレイリストに基づいて並列にレンダリングするので、描画処理毎に異なるディスプレイリストを使用しなくても複数の描画処理を並列に実行することができる。
【０００８】
本発明の画像形成装置において、前記特定の領域をレンダリングの対象とする複数の前記描画処理手段を同時に備えることを前記並列処理数決定手段が決定した場合、前記特定の領域をレンダリングの対象とする前記描画処理手段は、前記特定の領域内に複数のオブジェクトが含まれるとき、前記特定の領域を基準として数えたラインに基づいて、前記複数のオブジェクトのそれぞれを順番にレンダリングしても良い。
【０００９】
この構成により、本発明の画像形成装置は、特定の領域をレンダリングの対象とする複数の描画処理手段を同時に備えることを決定した場合、これらの描画処理手段が、オブジェクトを基準として数えたラインではなく、特定の領域を基準として数えたラインに基づいて、複数のオブジェクトのそれぞれを順番にレンダリングするので、これらの描画処理手段がオブジェクト毎に同期してレンダリングをする必要がなく、スループットを向上することができる。
【００１０】
本発明の画像形成装置は、前記並列処理数決定手段は、前記ページを分割した複数の領域のうち互いに異なる領域をレンダリングの対象とする複数の前記描画処理手段を同時に備えることを決定しても良い。
【００１１】
この構成により、本発明の画像形成装置は、画像形成装置の状況によっては複数の領域を並列にレンダリングすることができるので、スループットを向上することができる。
【００１２】
本発明の画像形成装置は、前記複数の領域は、同じ面積を有し、前記並列処理数決定手段は、前記複数の描画処理手段を対象として、前記複数の領域のそれぞれのレンダリングの処理時間が均一になるように予測して、前記複数の領域のそれぞれをレンダリングの対象とする前記描画処理手段を同時に備える数を決定しても良い。
【００１３】
この構成により、本発明の画像形成装置は、ページを複数の領域に均等に分割した場合でも、複数の領域で同時にレンダリングを完了することができる。
【００１４】
本発明の画像形成プログラムは、ディスプレイリストに基づいて１ラインずつレンダリングする描画処理手段と、前記描画処理手段を同時に備える数をコンピューターの状況に応じて決定する並列処理数決定手段とを前記コンピューターに実現させ、ページのうち複数のラインを含む特定の領域をレンダリングの対象とする複数の前記描画処理手段を同時に備えることを前記並列処理数決定手段が決定した場合、前記特定の領域をレンダリングの対象とする複数の前記描画処理手段のそれぞれは、前記特定の領域をレンダリングの対象とする全ての前記描画処理手段の数から１を減じた数のラインを飛ばしながら１ラインずつ、互いに異なるラインに対してレンダリングすることを特徴とする。
【００１５】
この構成により、本発明の画像形成プログラムを実行するコンピューターは、ページのうち複数のラインを含む特定の領域をレンダリングの対象とする複数の描画処理手段を同時に備えることを決定した場合、これらの描画処理手段が同一のディスプレイリストに基づいて並列にレンダリングするので、描画処理毎に異なるディスプレイリストを使用しなくても複数の描画処理を並列に実行することができる。
【発明の効果】
【００１６】
本発明の画像形成装置および画像形成プログラムは、描画処理毎に異なるディスプレイリストを使用しなくても複数の描画処理を並列に実行することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施の形態に係るＭＦＰのブロック図である。
【図２】図１に示すレンダースレッドによってレンダリングされるページの一例を示す図である。
【図３】図２に示すバンドのスキャンラインの一例を示す図である。
【図４】（ａ）図２に示すバンドに含まれるオブジェクトの一例を示す図である。  （ｂ）図４（ａ）に示すオブジェクトのうちレンダースレッドＡによるレンダリングの対象の部分の一例を示す図である。  （ｃ）図４（ａ）に示すオブジェクトのうちレンダースレッドＢによるレンダリングの対象の部分の一例を示す図である。
【図５】（ａ）図２に示すバンドに含まれるオブジェクトの一例であって、６本のスキャンラインから構成される台形のオブジェクトを示す図である。  （ｂ）レンダースレッドＡおよびレンダースレッドＢによって図５（ａ）に示すオブジェクトをレンダリングする場合の、レンダースレッドＡおよびレンダースレッドＢのそれぞれの処理量を示す図である。
【図６】（ａ）図２に示すバンドに含まれるオブジェクトの一例であって、７本のスキャンラインから構成される台形のオブジェクトを示す図である。  （ｂ）レンダースレッドＡおよびレンダースレッドＢによって図６（ａ）に示すオブジェクトをレンダリングする場合の、レンダースレッドＡおよびレンダースレッドＢのそれぞれの処理量を示す図である。
【図７】（ａ）２つのオブジェクトが重なって含まれる場合の図２に示すバンドの一例を示す図である。  （ｂ）図７（ａ）に示す２つのオブジェクトのうち重ね順が下のオブジェクトを示す図である。  （ｃ）図７（ａ）に示す２つのオブジェクトのうち重ね順が上のオブジェクトを示す図である。
【図８】（ａ）バンドに含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ａ）に示す２つのオブジェクトのうち、レンダースレッドＡによってレンダリングされる部分を示す図である。  （ｂ）バンドに含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ｂ）に示すオブジェクトのうち、レンダースレッドＡによってレンダリングされる部分を示す図である。  （ｃ）バンドに含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ｃ）に示すオブジェクトのうち、レンダースレッドＡによってレンダリングされる部分を示す図である。
【図９】（ａ）バンドに含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ａ）に示す２つのオブジェクトのうち、レンダースレッドＢによってレンダリングされる部分を示す図である。  （ｂ）バンドに含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ｂ）に示すオブジェクトのうち、レンダースレッドＢによってレンダリングされる部分を示す図である。  （ｃ）バンドに含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ｃ）に示すオブジェクトのうち、レンダースレッドＢによってレンダリングされる部分を示す図である。
【図１０】レンダースレッドＡおよびレンダースレッドＢが図２に示すバンドに含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングを実行する場合の処理のタイミングを示す図である。
【図１１】（ａ）バンドを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ａ）に示す２つのオブジェクトのうち、レンダースレッドＡによってレンダリングされる部分を示す図である。  （ｂ）バンドを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ｂ）に示すオブジェクトのうち、レンダースレッドＡによってレンダリングされる部分を示す図である。  （ｃ）バンドを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ｃ）に示すオブジェクトのうち、レンダースレッドＡによってレンダリングされる部分を示す図である。
【図１２】（ａ）バンドを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ａ）に示す２つのオブジェクトのうち、レンダースレッドＢによってレンダリングされる部分を示す図である。  （ｂ）バンドを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ｂ）に示すオブジェクトのうち、レンダースレッドＢによってレンダリングされる部分を示す図である。  （ｃ）バンドを基準として数えたスキャンラインに基づいてレンダリングが実行される場合の、図７（ｃ）に示すオブジェクトのうち、レンダースレッドＢによってレンダリングされる部分を示す図である。
【図１３】レンダースレッドＡおよびレンダースレッドＢが図２に示すバンドを基準として数えたスキャンラインに基づいてレンダリングを実行する場合の処理のタイミングを示す図である。
【図１４】ページ記述言語に基づいて印刷を実行する場合の図１に示すＭＦＰの動作のフローチャートである。
【図１５】レンダースレッドの数を決定する場合の図１に示すＭＦＰの動作のフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、図面を用いて説明する。
【００１９】
まず、本発明の一実施の形態に係る画像形成装置としてのＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）の構成について説明する。
【００２０】
図１は、本実施の形態に係るＭＦＰ１０のブロック図である。
【００２１】
図１に示すように、ＭＦＰ１０は、種々の操作が入力されるボタンなどの入力デバイスである操作部１１と、種々の情報を表示するＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などの表示デバイスである表示部１２と、原稿から画像を読み取る読取デバイスであるスキャナー１３と、用紙などの記録媒体に印刷を実行する印刷デバイスであるプリンター１４と、図示していない外部のファクシミリ装置と公衆電話回線などの通信回線経由でファックス通信を行うファックスデバイスであるファックス通信部１５と、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク経由で、または、ネットワークを介さずに有線または無線によって直接に、外部の装置と通信を行う通信デバイスである通信部１６と、各種の情報を記憶する半導体メモリー、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの不揮発性の記憶デバイスである記憶部１７と、ＭＦＰ１０全体を制御する制御部１８とを備えている。
【００２２】
記憶部１７は、画像を形成するための画像形成プログラム１７ａを記憶している。画像形成プログラム１７ａは、ＭＦＰ１０の製造段階でＭＦＰ１０にインストールされていても良いし、ＳＤカード、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリーなどの外部記憶媒体からＭＦＰ１０に追加でインストールされても良いし、ネットワーク上からＭＦＰ１０に追加でインストールされても良い。
【００２３】
制御部１８は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、プログラムおよび各種のデータを記憶しているＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）と、ＣＰＵの作業領域として用いられるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とを備えている。ＣＰＵは、ＲＯＭまたは記憶部１７に記憶されているプログラムを実行する。ＣＰＵは、４コアなど、複数のコアを備えていても良い。
【００２４】
制御部１８は、記憶部１７に記憶されている画像形成プログラム１７ａを実行することによって、ページ記述言語からディスプレイリストを生成するディスプレイリスト生成手段１８ａを実現する。
【００２５】
制御部１８は、記憶部１７に記憶されている画像形成プログラム１７ａを実行することによって、ディスプレイリストに基づいて１ライン（スキャンライン）ずつレンダリングする描画処理手段としてのレンダースレッド（Ｒｅｎｄｅｒ  Ｔｈｒｅａｄ）１８ｂを実現する。なお、制御部１８は、複数のレンダースレッド１８ｂを同時に実現することができる。また、制御部１８が複数のコアを備えるＣＰＵを含む場合、複数のレンダースレッド１８ｂを少なくとも２つ以上（例えば、全ての）のコアに配分（例えば、均等に配分）しても良い。この場合、例えば、各コアが１又は複数のレンダースレッドを同時に備えても良い。
【００２６】
制御部１８は、記憶部１７に記憶されている画像形成プログラム１７ａを実行することによって、レンダースレッド１８ｂを同時に備える数をＭＦＰ１０の状況に応じて決定する並列処理数決定手段１８ｃを実現する。
【００２７】
制御部１８は、記憶部１７に記憶されている画像形成プログラム１７ａを実行することによって、ラスターイメージデータに基づいてプリンター１４に印刷を実行させる印刷手段１８ｄを実現する。
【００２８】
以下においては、レンダースレッド１８ｂとしてレンダースレッドＡ、レンダースレッドＢ、レンダースレッドＣおよびレンダースレッドＤという４個のレンダースレッドを同時に備える場合について説明する。
【００２９】
図２は、レンダースレッド１８ｂによってレンダリングされるページ２０の一例を示す図である。
【００３０】
図２に示すように、ページ２０は、矢印２０ａで示す方向に延在するスキャンラインが、矢印２０ａで示す方向とは直交する矢印２０ｂで示す方向に多数並んで構成されている。レンダースレッドＡおよびレンダースレッドＢと、レンダースレッドＣおよびレンダースレッドＤとは、ページ２０を矢印２０ｂで示す方向において分割した領域（バンド）２１、２２のうち互いに異なるバンドをレンダリングの対象とする。例えば、レンダースレッドＡおよびレンダースレッドＢは、バンド２１をレンダリングの対象とする。レンダースレッドＣおよびレンダースレッドＤは、バンド２２をレンダリングの対象とする。なお、バンド２１、２２は、それぞれ、複数のスキャンラインを含んでいる。レンダースレッドＡおよびレンダースレッドＢは、バンド２１を描画するための専用のバッファー（以下「バンド２１用バッファー」と言う。）をＲＡＭ上に確保する。同様に、レンダースレッドＣおよびレンダースレッドＤは、バンド２２を描画するための専用のバッファー（以下「バンド２２用バッファー」と言う。）をＲＡＭ上に確保する。
【００３１】
図３は、バンド２１のスキャンラインの一例を示す図である。
【００３２】
図３に示すように、バンド２１は、スキャンラインＳＬ１、スキャンラインＳＬ２、スキャンラインＳＬ３、スキャンラインＳＬ４、スキャンラインＳＬ５、・・・、スキャンラインＳＬ２ｎ−４、スキャンラインＳＬ２ｎ−３、スキャンラインＳＬ２ｎ−２、スキャンラインＳＬ２ｎ−１、スキャンラインＳＬ２ｎで構成されている。バンド２１をレンダリングの対象とするレンダースレッドＡおよびレンダースレッドＢは、バンド２１をレンダリングの対象とする全てのレンダースレッド１８ｂの数、すなわち、「２」から１を減じた数である「１」のスキャンラインを飛ばしながら１スキャンラインずつ、互いに異なるスキャンラインに対してレンダリングする。例えば、レンダースレッドＡは、レンダリングを開始するスキャンラインのオフセット（以下「スタートラインオフセット」と言う。）が０であり、飛ばす（スキップする）スキャンライン（以下「スキップライン」と言う。）が１である。すなわち、レンダースレッドＡは、スタートラインオフセットが０であるのでスキャンラインＳＬ１からレンダリングを開始し、１スキャンラインずつ飛ばしてスキャンラインＳＬ３、スキャンラインＳＬ５、・・・、スキャンラインＳＬ２ｎ−３、スキャンラインＳＬ２ｎ−１をレンダリングの対象にする。また、レンダースレッドＢは、スタートラインオフセットが１であり、スキップラインが１である。すなわち、レンダースレッドＢは、スタートラインオフセットが１であるのでスキャンラインＳＬ２からレンダリングを開始し、１スキャンラインずつ飛ばしてスキャンラインＳＬ４、・・・、スキャンラインＳＬ２ｎ−４、スキャンラインＳＬ２ｎ−２、スキャンラインＳＬ２ｎをレンダリングの対象にする。なお、図３に示すスキャンラインにおいて、ｎは５以上の整数である。
【００３３】
バンド２２をレンダリングの対象とするレンダースレッドＣおよびレンダースレッドＤも、レンダースレッドＡおよびレンダースレッドＢと同様に、１のスキャンラインを飛ばしながら１スキャンラインずつ、互いに異なるスキャンラインに対してレンダリングする。例えば、レンダースレッドＣは、スタートラインオフセットが０であり、スキップラインが１である。また、レンダースレッドＤは、スタートラインオフセットが１であり、スキップラインが１である。
【００３４】
図４（ａ）は、バンド２１に含まれるオブジェクトの一例を示す図である。図４（ｂ）は、図４（ａ）に示すオブジェクトのうちレンダースレッドＡによるレンダリングの対象の部分の一例を示す図である。図４（ｃ）は、図４（ａ）に示すオブジェクトのうちレンダースレッドＢによるレンダリングの対象の部分の一例を示す図である。
【００３５】
図４（ａ）に示すオブジェクト２１ａがバンド２１に含まれている場合に、オブジェクト２１ａのうちレンダースレッドＡによるレンダリングの対象の部分が図４（ｂ）に示す部分２１ｂであるとき、オブジェクト２１ａのうちレンダースレッドＢによるレンダリングの対象の部分は図４（ｃ）に示す部分２１ｃである。図４（ｂ）および図４（ｃ）に示すように、レンダースレッドＡによるレンダリングの対象の部分２１ｂと、レンダースレッドＢによるレンダリングの対象の部分２１ｃとは、大きな差異が無い。
【００３６】
以上においては、図４（ａ）に示すオブジェクト２１ａがバンド２１に含まれている場合について説明している。バンド２１に含まれているオブジェクトの形状によっては、レンダースレッドＡによるレンダリングの対象の部分と、レンダースレッドＢによるレンダリングの対象の部分とに大きな差異が生じる場合もある。しかしながら、レンダースレッドＡおよびレンダースレッドＢが１のスキャンラインを飛ばしながら１スキャンラインずつ互いに異なるスキャンラインに対してレンダリングするので、バンド２１に含まれているオブジェクトが特殊な形状ではない限り、通常は、レンダースレッドＡによるレンダリングの対象の部分と、レンダースレッドＢによるレンダリングの対象の部分とは、大きな差異が無い。したがって、レンダースレッドＡによるレンダリングの処理量と、レンダースレッドＢによるレンダリングの処理量とは、通常は、大きな差異が無い。
【００３７】
以下、レンダースレッドＡによるレンダリングの処理量と、レンダースレッドＢによるレンダリングの処理量との差異について詳細に説明する。
【００３８】
図５（ａ）は、バンド２１に含まれるオブジェクトの一例であって、６本のスキャンラインから構成される台形のオブジェクト３０を示す図である。図５（ｂ）は、レンダースレッドＡおよびレンダースレッドＢによってオブジェクト３０をレンダリングする場合の、レンダースレッドＡおよびレンダースレッドＢのそれぞれの処理量を示す図である。
【００３９】
図５（ａ）に示すオブジェクト３０において、スキャンラインＳＬ１、ＳＬ２、ＳＬ３、・・・、ＳＬ６の部分の長さをそれぞれＬｅｎｇｔｈ１、Ｌｅｎｇｔｈ２、Ｌｅｎｇｔｈ３、・・・、Ｌｅｎｇｔｈ６とすると、Ｌｅｎｇｔｈ２、Ｌｅｎｇｔｈ３、・・・、Ｌｅｎｇｔｈ６は、それぞれ「Ｌｅｎｇｔｈ１＋ΔＬ１」、「Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２」、・・・、「Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２＋ΔＬ３＋ΔＬ４＋ΔＬ５」と表すことができる。ここで、ΔＬ１、ΔＬ２、・・・、ΔＬ５は、それぞれ、「Ｌｅｎｇｔｈ２−Ｌｅｎｇｔｈ１」、「Ｌｅｎｇｔｈ３−Ｌｅｎｇｔｈ２」、・・・、「Ｌｅｎｇｔｈ６−Ｌｅｎｇｔｈ５」である。
【００４０】
ここで、奇数行のスキャンライン、すなわち、スキャンラインＳＬ１、ＳＬ３、ＳＬ５は、レンダースレッドＡによってレンダリングされ、偶数行のスキャンライン、すなわち、スキャンラインＳＬ２、ＳＬ４、ＳＬ６は、レンダースレッドＢによってレンダリングされるとする。
【００４１】
オブジェクト３０に対してレンダースレッドＡがレンダリングする長さの合計は、「（Ｌｅｎｇｔｈ１）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２＋ΔＬ３＋ΔＬ４）」、すなわち、「（Ｌｅｎｇｔｈ１）×３＋ΔＬ１×２＋ΔＬ２×２＋ΔＬ３＋ΔＬ４」である。また、オブジェクト３０に対してレンダースレッドＢがレンダリングする長さの合計は、「（Ｌｅｎｇｔｈ１＋ΔＬ１）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２＋ΔＬ３）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２＋ΔＬ３＋ΔＬ４＋ΔＬ５）」、すなわち、「（Ｌｅｎｇｔｈ１）×３＋ΔＬ１×３＋ΔＬ２×２＋ΔＬ３×２＋ΔＬ４＋ΔＬ５」である。そのため、レンダースレッドＢがレンダースレッドＡより多くレンダリングする長さは、「｛（Ｌｅｎｇｔｈ１）×３＋ΔＬ１×３＋ΔＬ２×２＋ΔＬ３×２＋ΔＬ４＋ΔＬ５｝−｛（Ｌｅｎｇｔｈ１）×３＋ΔＬ１×２＋ΔＬ２×２＋ΔＬ３＋ΔＬ４｝」、すなわち、「ΔＬ１＋ΔＬ３＋ΔＬ５」である。以上に説明したように、オブジェクト３０に対してレンダースレッドＡがレンダリングする長さの合計と、オブジェクト３０に対してレンダースレッドＢがレンダリングする長さの合計との差異は、図５（ｂ）に示すように「ΔＬ１＋ΔＬ３＋ΔＬ５」となる。
【００４２】
以上においては、オブジェクト３０が６本のスキャンラインで構成されている場合について説明したが、オブジェクト３０が偶数（２ｍ）のスキャンラインで構成されている場合のレンダースレッドＡおよびレンダースレッドＢのそれぞれがレンダリングする長さの差異は、数１に示す式で一般化して表すことができる。ここで、ｍは、１以上の整数である。
【数１】
2018083319.tif 000003
【００４３】
図６（ａ）は、バンド２１に含まれるオブジェクトの一例であって、７本のスキャンラインから構成される台形のオブジェクト４０を示す図である。図６（ａ）に示す例では、図５（ａ）に示すオブジェクトのスキャンラインＳＬ６の下にスキャンラインＳＬ７が追加されている。図６（ｂ）は、レンダースレッドＡおよびレンダースレッドＢによってオブジェクト４０をレンダリングする場合の、レンダースレッドＡおよびレンダースレッドＢのそれぞれの処理量を示す図である。
【００４４】
図６（ａ）に示すオブジェクト４０において、奇数行のスキャンライン、すなわち、スキャンラインＳＬ１、ＳＬ３、ＳＬ５、ＳＬ７は、レンダースレッドＡによってレンダリングされ、偶数行のスキャンライン、すなわち、スキャンラインＳＬ２、ＳＬ４、ＳＬ６は、レンダースレッドＢによってレンダリングされるとする。
【００４５】
オブジェクト４０に対してレンダースレッドＡがレンダリングする長さの合計は、「（Ｌｅｎｇｔｈ１）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２＋ΔＬ３＋ΔＬ４）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２＋ΔＬ３＋ΔＬ４＋ΔＬ５＋ΔＬ６）」、すなわち、「（Ｌｅｎｇｔｈ１）×４＋ΔＬ１×３＋ΔＬ２×３＋ΔＬ３×２＋ΔＬ４×２＋ΔＬ５＋ΔＬ６」である。また、オブジェクト４０に対してレンダースレッドＢがレンダリングする長さの合計は、「（Ｌｅｎｇｔｈ１＋ΔＬ１）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２＋ΔＬ３）＋（Ｌｅｎｇｔｈ１＋ΔＬ１＋ΔＬ２＋ΔＬ３＋ΔＬ４＋ΔＬ５）」、すなわち、「（Ｌｅｎｇｔｈ１）×３＋ΔＬ１×３＋ΔＬ２×２＋ΔＬ３×２＋ΔＬ４＋ΔＬ５」である。そのため、レンダースレッドＡがレンダースレッドＢより多くレンダリングする長さは、「｛（Ｌｅｎｇｔｈ１）×４＋ΔＬ１×３＋ΔＬ２×３＋ΔＬ３×２＋ΔＬ４×２＋ΔＬ５＋ΔＬ６｝−｛（Ｌｅｎｇｔｈ１）×３＋ΔＬ１×３＋ΔＬ２×２＋ΔＬ３×２＋ΔＬ４＋ΔＬ５｝」、すなわち、「Ｌｅｎｇｔｈ１＋ΔＬ２＋ΔＬ４＋ΔＬ６」である。以上に説明したように、オブジェクト４０に対してレンダースレッドＡがレンダリングする長さの合計と、オブジェクト４０に対してレンダースレッドＢがレンダリングする長さの合計との差異は、図６（ｂ）に示すように「Ｌｅｎｇｔｈ１＋ΔＬ２＋ΔＬ４＋ΔＬ６」となる。
【００４６】
以上においては、オブジェクト４０が７本のスキャンラインで構成されている場合について説明したが、オブジェクト４０が奇数（２ｍ＋１）のスキャンラインで構成されている場合のレンダースレッドＡおよびレンダースレッドＢのそれぞれがレンダリングする長さの差異は、数２に示す式で一般化して表すことができる。ここで、ｍは、１以上の整数である。
【数２】
2018083319.tif 000004
【００４７】
以上に説明したように、レンダースレッドＡによるレンダリングの処理量と、レンダースレッドＢによるレンダリングの処理量との間には、数１または数２に示す差異のみがあり、レンダリングの対象のオブジェクトが特殊な形状ではない限り、通常は、大きな差異が無い。
【００４８】
以上においては、レンダースレッドＡおよびレンダースレッドＢについて説明している。しかしながら、レンダースレッドＡによるレンダリングの処理量と、レンダースレッドＢによるレンダリングの処理量とについてと同様に、レンダースレッドＣによるレンダリングの処理量と、レンダースレッドＤによるレンダリングの処理量とについても、バンド２２に含まれているオブジェクトが特殊な形状ではない限り、通常は、両者の間に大きな差異が無い。
【００４９】
レンダースレッドＡおよびレンダースレッドＢは、バンド２１に含まれる各オブジェクトを基準として数えたスキャンラインではなく、バンド２１を基準として数えたスキャンライン、すなわち、バンド２１用バッファーにおける座標を基準として数えたスキャンラインに基づいてレンダリングを実行する。以下、詳細に説明する。
【００５０】
図７（ａ）は、オブジェクト５０およびオブジェクト６０が重なって含まれる場合のバンド２１の一例を示す図である。図７（ｂ）は、オブジェクト５０およびオブジェクト６０のうち重ね順が下のオブジェクト５０を示す図である。図７（ｃ）は、オブジェクト５０およびオブジェクト６０のうち重ね順が上のオブジェクト６０を示す図である。
【００５１】
図７（ｂ）に示すオブジェクト５０の上に図７（ｃ）に示すオブジェクト６０が重ねられることによって、図７（ａ）に示す画像が生成される場合について考える。オブジェクト５０およびオブジェクト６０は、それぞれ、６本のスキャンラインによって構成される台形のオブジェクトである。
【００５２】
奇数行のスキャンラインがレンダースレッドＡによってレンダリングされ、偶数行のスキャンラインがレンダースレッドＢによってレンダリングされるとする。
【００５３】
仮に、レンダースレッドＡおよびレンダースレッドＢがバンド２１に含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングを実行する場合について考える。
【００５４】
レンダースレッドＡは、バンド２１に含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングを実行する場合、図８に示すように、オブジェクト５０については、オブジェクト５０を基準として数えた奇数行のスキャンラインに基づいてレンダリングを実行し、オブジェクト６０については、オブジェクト６０を基準として数えた奇数行のスキャンラインに基づいてレンダリングを実行する。
【００５５】
レンダースレッドＢは、バンド２１に含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングを実行する場合、図９に示すように、オブジェクト５０については、オブジェクト５０を基準として数えた偶数行のスキャンラインに基づいてレンダリングを実行し、オブジェクト６０については、オブジェクト６０を基準として数えた偶数行のスキャンラインに基づいてレンダリングを実行する。
【００５６】
図１０は、レンダースレッドＡおよびレンダースレッドＢがバンド２１に含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングを実行する場合の処理のタイミングを示す図である。
【００５７】
図１０に示すように、レンダースレッドＡおよびレンダースレッドＢがバンド２１に含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングを実行する場合、レンダースレッドＡおよびレンダースレッドＢは、オブジェクト５０のレンダリングを同時に開始することができる（ｔ７１）。しかしながら、オブジェクト６０のうちレンダースレッドＡの担当分（図８（ｃ）参照。）は、オブジェクト５０のうちレンダースレッドＢの担当分（図９（ｂ）参照。）の上に重ねられる必要がある。したがって、レンダースレッドＡは、オブジェクト５０のうちレンダースレッドＡの担当分のレンダリングを終了しても（ｔ７２）、レンダースレッドＢがオブジェクト５０のうちレンダースレッドＢの担当分のレンダリングを終了する（ｔ７３）まで、待機する必要がある。レンダースレッドＢがオブジェクト５０のうちレンダースレッドＢの担当分のレンダリングを終了すると、レンダースレッドＡおよびレンダースレッドＢは、オブジェクト６０のレンダリングを同時に開始することができる（ｔ７３）。以上に説明したように、レンダースレッドＡおよびレンダースレッドＢは、バンド２１に含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングを実行する場合、互いに同期をとる必要がある。
【００５８】
しかしながら、レンダースレッドＡおよびレンダースレッドＢは、実際には、バンド２１に含まれる各オブジェクトを基準として数えたスキャンラインではなく、バンド２１を基準として数えたスキャンラインに基づいてレンダリングを実行する。
【００５９】
レンダースレッドＡは、バンド２１を基準として数えたスキャンラインに基づいてレンダリングを実行する場合、図１１に示すように、オブジェクト５０およびオブジェクト６０の両方について、バンド２１を基準として数えた奇数行のスキャンラインに基づいてレンダリングを実行する。
【００６０】
レンダースレッドＢは、バンド２１を基準として数えたスキャンラインに基づいてレンダリングを実行する場合、図１２に示すように、オブジェクト５０およびオブジェクト６０の両方について、バンド２１を基準として数えた偶数行のスキャンラインに基づいてレンダリングを実行する。
【００６１】
図１３は、レンダースレッドＡおよびレンダースレッドＢがバンド２１を基準として数えたスキャンラインに基づいてレンダリングを実行する場合の処理のタイミングを示す図である。
【００６２】
図１３に示すように、レンダースレッドＡおよびレンダースレッドＢがバンド２１を基準として数えたスキャンラインに基づいてレンダリングを実行する場合、レンダースレッドＡおよびレンダースレッドＢは、オブジェクト５０のレンダリングを同時に開始することができる（ｔ７１）。ここで、レンダースレッドＡおよびレンダースレッドＢがバンド２１を基準として数えたスキャンラインに基づいてレンダリングを実行するので、オブジェクト６０のうちレンダースレッドＡの担当分（図１１（ｃ）参照。）が、オブジェクト５０のうちレンダースレッドＢの担当分（図１２（ｂ）参照。）の上に重ねられることはない。したがって、レンダースレッドＡは、オブジェクト５０のうちレンダースレッドＡの担当分のレンダリングを終了すると（ｔ７２）、レンダースレッドＢがオブジェクト５０のうちレンダースレッドＢの担当分のレンダリングを終了する（ｔ７３）か否かに関わらず、オブジェクト６０のレンダリングを開始することができる（ｔ７２）。同様に、レンダースレッドＢも、オブジェクト５０のうちレンダースレッドＢの担当分のレンダリングを終了すると（ｔ７３）、レンダースレッドＡがオブジェクト５０のうちレンダースレッドＡの担当分のレンダリングを終了する（ｔ７２）か否かに関わらず、オブジェクト６０のレンダリングを開始することができる（ｔ７３）。すなわち、レンダースレッドＡおよびレンダースレッドＢは、バンド２１を基準として数えたスキャンラインに基づいてレンダリングを実行する場合、互いに同期をとる必要がない。
【００６３】
以上に説明したように、レンダースレッドＡおよびレンダースレッドＢは、バンド２１を基準として数えたスキャンラインに基づいてレンダリングを実行する場合、バンド２１に含まれる各オブジェクトを基準として数えたスキャンラインに基づいてレンダリングを実行する場合のレンダリングの終了のタイミング（ｔ７４（図１０参照。））より、早いタイミング（ｔ７５（図１３参照。））で、レンダリングを終了することができる。
【００６４】
以上においては、レンダースレッドＡおよびレンダースレッドＢについて説明している。しかしながら、レンダースレッドＣおよびレンダースレッドＤも、バンド２２に含まれる各オブジェクトを基準として数えたスキャンラインではなく、バンド２２を基準として数えたスキャンライン、すなわち、バンド２２用バッファーにおける座標を基準として数えたスキャンラインに基づいてレンダリングを実行する。
【００６５】
次に、ＭＦＰ１０の動作について説明する。
【００６６】
図１４は、ページ記述言語に基づいて印刷を実行する場合のＭＦＰ１０の動作のフローチャートである。
【００６７】
図１４に示すように、ディスプレイリスト生成手段１８ａは、通信部１６を介して受信するなどしてページ記述言語を取得すると、取得したページ記述言語からディスプレイリストを生成する（Ｓ１０１）。例えば、図２に示すページ２０について、ディスプレイリスト生成手段１８ａは、取得したページ記述言語から、バンド２１への描画命令に対応するディスプレイリストと、バンド２２への描画命令に対応するディスプレイリストを生成する。
【００６８】
次いで、レンダースレッド１８ｂは、Ｓ１０１において生成されたディスプレイリストに基づいて１スキャンラインずつレンダリングしてラスターイメージデータを生成する（Ｓ１０２）。
【００６９】
次いで、印刷手段１８ｄは、Ｓ１０２において生成されたラスターイメージデータに基づいてプリンター１４に印刷を実行させて（Ｓ１０３）、図１４に示す動作を終了する。
【００７０】
なお、並列処理数決定手段１８ｃは、レンダースレッド１８ｂがＳ１０２の処理を実行する前に、レンダースレッド１８ｂの数をＭＦＰ１０の状況に応じて決定する。
【００７１】
図１５は、レンダースレッド１８ｂの数を決定する場合のＭＦＰ１０の動作のフローチャートである。
【００７２】
図１５に示すように、並列処理数決定手段１８ｃは、ＭＦＰ１０の状況を取得する（Ｓ１３１）。ここで、ＭＦＰ１０の状況とは、描画処理に関わる機能、すなわち、プリンター機能へのシステムリソースの状況であり、例えば、ＣＰＵリソースや、メモリー（ＲＡＭ）リソースである。ＭＦＰ１０は、プリンター機能だけでなく、スキャナー機能、コピー機能、ファックス機能など、複数の機能を有するので、プリンター機能以外の機能の実行が増えると、プリンター機能へのシステムリソースの割り当てが減るし、プリンター機能以外の機能の実行が減ると、プリンター機能へのシステムリソースの割り当てが増える。すなわち、ＭＦＰ１０において、プリンター機能へのシステムリソースの状況は、動的に変化する。
【００７３】
並列処理数決定手段１８ｃは、Ｓ１３１の処理の後、Ｓ１３１において取得した状況に応じてページ２０の分割数を決定する（Ｓ１３２）。なお、ＭＦＰ１０の状況と、ページ２０の分割数との関係は、事前に設定されている。
【００７４】
次いで、並列処理数決定手段１８ｃは、Ｓ１３２において決定した分割数でページ２０を分割して生成されるバンドのそれぞれに対して、Ｓ１３１において取得した状況に応じてレンダースレッド１８ｂの数を決定する（Ｓ１３３）。なお、ＭＦＰ１０の状況と、バンド毎のレンダースレッド１８ｂの数との関係は、事前に設定されている。
【００７５】
次いで、並列処理数決定手段１８ｃは、Ｓ１３２において決定した分割数でページ２０を分割して生成されるバンドのそれぞれに対して、Ｓ１３３において決定した数のレンダースレッド１８ｂを生成して（Ｓ１３４）、図１５に示す動作を終了する。
【００７６】
したがって、Ｓ１３４において生成されたレンダースレッド１８ｂは、Ｓ１０１において生成されたディスプレイリストに基づいて１スキャンラインずつレンダリングしてラスターイメージデータを生成する（Ｓ１０２）。ここで、各レンダースレッド１８ｂは、レンダースレッド１８ｂ自身が対象とするバンドと、レンダースレッド１８ｂ自身のスタートラインオフセットおよびスキップラインとに基づいて、レンダリングを実行する。
【００７７】
以上に説明したように、ＭＦＰ１０は、バンド２１をレンダリングの対象とするレンダースレッドＡおよびレンダースレッドＢが同一のディスプレイリストに基づいて並列にレンダリングするので、描画処理毎に異なるディスプレイリストを使用しなくても複数の描画処理を並列に実行することができる。したがって、ＭＦＰ１０は、例えば、ディスプレイリスト生成手段１８ａを、ＣＰＵのコアが１つのＭＦＰのように描画処理を並列に実行しないＭＦＰのものと共通化することができ、ＭＦＰ１０の製造を容易化することができる。以上においては、レンダースレッドＡおよびレンダースレッドＢについて説明したが、レンダースレッドＣおよびレンダースレッドＤについても同様である。
【００７８】
ＭＦＰ１０は、レンダースレッドＡおよびレンダースレッドＢによってスキャンライン毎にインターリーブして並列レンダリングを行うことによって、レンダースレッドＡによるレンダリングの処理量と、レンダースレッドＢによるレンダリングの処理量との差異を抑えることができ、レンダースレッドＡおよびレンダースレッドＢによる処理時間を平均化することができる。したがって、ＭＦＰ１０は、スループットを向上することができる。なお、レンダースレッドＡおよびレンダースレッドＢによる１つのオブジェクトに対するレンダリングの処理時間の差異は、このオブジェクトの形状にもよるが、通常は、高々１つのスキャンライン分の差異しか発生しない（数１および数２参照。）。更に、１つのバンド内には、通常、複数のオブジェクトが様々な位置に配置されているので、１つのバンド内に含まれる複数のオブジェクトに対するレンダースレッドＡおよびレンダースレッドＢによるレンダリングの処理時間の差異は、それぞれのオブジェクトに対するレンダースレッドＡおよびレンダースレッドＢによるレンダリングの処理時間の差異が平均化されて、殆ど無視することができるほど少なくなる。以上においては、レンダースレッドＡおよびレンダースレッドＢについて説明したが、レンダースレッドＣおよびレンダースレッドＤについても同様である。
【００７９】
ＭＦＰ１０は、バンド２１をレンダリングの対象とするレンダースレッドＡおよびレンダースレッドＢが、オブジェクトを基準として数えたスキャンラインではなく、バンド２１を基準として数えたスキャンラインに基づいて、複数のオブジェクトのそれぞれを順番にレンダリングするので、これらのレンダースレッドがオブジェクト毎に同期してレンダリングをする必要がなく、スループットを向上することができる。なお、レンダースレッドＡおよびレンダースレッドＢは、オブジェクトを基準として数えたスキャンラインに基づいて、複数のオブジェクトのそれぞれを順番にレンダリングしても良い。以上においては、レンダースレッドＡおよびレンダースレッドＢについて説明したが、レンダースレッドＣおよびレンダースレッドＤについても同様である。
【００８０】
ＭＦＰ１０は、ＭＦＰ１０が同時に備えるレンダースレッド１８ｂの数をＭＦＰ１０の状況に応じて決定するので、レンダースレッド１８ｂの数を、システム全体、すなわち、ＭＦＰ１０全体としての処理効率を低下させない範囲で多くなるように動的に変化させることができる。
【００８１】
例えば、ＭＦＰ１０がコピー機能をプリンター機能より優先する構成である場合、コピー機能が実行されるとき、プリンター機能へのシステムリソースは減少する。したがって、並列処理数決定手段１８ｃは、プリンター機能へのシステムリソースに応じて、ページ２０の分割数や、バンド毎のレンダースレッド１８ｂの数を減少させることができる。このように、ＭＦＰ１０は、ＭＦＰ１０が同時に備えるレンダースレッド１８ｂの数を、システムの動作状況、すなわち、ＭＦＰ１０の動作状況に応じて動的に変更することができる。
【００８２】
ＲＡＭが増設されていない場合、ＲＡＭが増設されている場合と比較して、プリンター機能へのシステムリソースは減少する。したがって、ＭＦＰ１０は、ＭＦＰ１０が同時に備えるレンダースレッド１８ｂの数を、ＲＡＭの増設状況に応じて動的に変更することができる。
【００８３】
ＭＦＰ１０は、ページ２０のうち特定のバンドを３個以上のレンダースレッドによってスキャンライン毎にインターリーブして並列レンダリングを行っても良い。例えば、ページ２０のうち特定のバンドをスキャンライン毎にインターリーブして並列レンダリングを行う３個のレンダースレッドは、スタートラインオフセット、スキップラインがそれぞれ０、２であるレンダースレッドと、スタートラインオフセット、スキップラインがそれぞれ１、２であるレンダースレッドと、スタートラインオフセット、スキップラインがそれぞれ２、２であるレンダースレッドとである。つまり、ページ２０のうち特定のバンドをｎ個（ここで、ｎは２以上の整数である。）のレンダースレッドによって、スキャンライン毎にインターリーブして並列レンダリングを行う場合、ｎ個のレンダースレッドのスタートラインオフセットは、それぞれ、０、１、２、・・・、ｎ−１であり、ｎ個のレンダースレッドのスキップラインは、ｎ−１である。
【００８４】
また、ＭＦＰ１０は、ページ２０のうち特定のバンドを１個のレンダースレッドによってスキャンライン毎にレンダリングを行っても良い。ページ２０のうち特定のバンドをスキャンライン毎にレンダリングを行う１個のレンダースレッドは、スタートラインオフセット、スキップラインがそれぞれ０、０である。  
【００８５】
ＭＦＰ１０は、ページ２０のうちバンド２１をレンダリングの対象とするレンダースレッドＡおよびレンダースレッドＢと、ページ２０のうちバンド２２をレンダリングの対象とするレンダースレッドＣおよびレンダースレッドＤとを同時に備えているので、バンド２１およびバンド２２を並列にレンダリングすることができ、スループットを向上することができる。
【００８６】
ＭＦＰ１０は、ページ２０をバンド２１およびバンド２２に分割する場合に、単純に面積に基づいてページ２０を半分ずつに分割しても良い。つまり、ＭＦＰ１０は、ページ２０を複数のバンドに分割する場合に、単純に面積に基づいて均等に分割しても良い。この場合、図１５に示すＳ１３３において、並列処理数決定手段１８ｃは、Ｓ１３１において取得した状況に応じて決定された数のレンダースレッド１８ｂを対象として、バンド毎のレンダリングの処理時間が均一になるように予測してバンド２１およびバンド２２のそれぞれのレンダースレッドの数を決定しても良い。この構成により、ＭＦＰ１０は、ページ２０を複数のバンドに均等に分割した場合でも、複数のバンドで同時にレンダリングを完了することができる。なお、ＭＦＰ１０の状況と、ページ２０全体のレンダースレッド１８ｂの数との関係は、事前に設定されている。
【００８７】
また、ＭＦＰ１０は、バンド毎のレンダリングの処理時間が均一になるように予測してページ２０をバンド２１およびバンド２２に分割しても良い。すなわち、ＭＦＰ１０は、各バンドに含まれる文字、イメージ、ベクターグラフィックなどの特性の違いや、どのようなＲＯＰ（Ｒａｓｔｅｒ  Ｏｐｅｒａｔｉｏｎ）が行われるかなどの各種の情報に基づいて、バンド毎のレンダリングの処理時間を予測し、バンド毎のレンダリングの処理時間が均一になるようにページ２０をバンド２１およびバンド２２に分割しても良い。
【００８８】
なお、ＭＦＰ１０は、ページ２０を３以上に分割した各バンドをレンダリングの対象とする複数のレンダースレッドを同時に備えても良い。例えば、ＭＦＰ１０は、ページ２０を４個のバンドに分割し、これら４個のバンドのうち、互いに異なるバンドをレンダリングの対象とする４個のレンダースレッドを同時に備えても良い。
【００８９】
また、ＭＦＰ１０は、ページ２０を複数のバンドに分割せずにページ２０の全領域をレンダリングの対象とするレンダースレッドを備えても良い。例えば、ＭＦＰ１０は、ページ２０の全領域を４個のレンダースレッドによってスキャンライン毎にインターリーブして並列レンダリングを行っても良い。
【００９０】
なお、複数のレンダースレッド１８ｂは、互いに異なるＣＰＵコアによって実行されることが処理効率の点で好ましい場合が多いので、実行されるＣＰＵコアが固定であっても良い。しかしながら、ＣＰＵは、レンダースレッド１８ｂ以外の処理も実行するので、何れのレンダースレッドを何れのＣＰＵコアが実行するかが固定されていない方が好ましい場合もある。したがって、ＭＦＰ１０は、何れのレンダースレッドを何れのＣＰＵコアが実行するかをＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に任せても良い。例えば、ＯＳがＬｉｎｕｘ（登録商標）である場合、ＭＦＰ１０は、何れのレンダースレッドを何れのＣＰＵコアが実行するかをＬｉｎｕｘのスケジューラーに任せても良い。何れのレンダースレッドを何れのＣＰＵコアが実行するかをＯＳに任せる場合、１つのＣＰＵコアが複数のレンダースレッドを実行するタイミングが発生することもある。
【００９１】
本発明の画像形成装置は、本実施の形態においてＭＦＰであるが、プリンター専用機など、ＭＦＰ以外の画像形成装置であっても良い。
【００９２】
本発明の画像形成プログラムは、本実施の形態においてコンピューターとしてのＭＦＰによって実行されるが、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）など、画像形成装置以外のコンピューターによって実行されても良い。
【符号の説明】
【００９３】
１０  ＭＦＰ（画像形成装置、コンピューター）
１７ａ  画像形成プログラム
１８ｂ  レンダースレッド（描画処理手段）
１８ｃ  並列処理数決定手段
２０  ページ
２１  バンド（特定の領域）
２１ａ  オブジェクト
２２  バンド（特定の領域）
３０、４０、５０、６０  オブジェクト
【図１】
2018083319.tif 000005
【図２】
2018083319.tif 000006
【図３】
2018083319.tif 000007
【図４】
2018083319.tif 000008
【図５】
2018083319.tif 000009
【図６】
2018083319.tif 000010
【図７】
2018083319.tif 000011
【図８】
2018083319.tif 000012
【図９】
2018083319.tif 000013
【図１０】
2018083319.tif 000014
【図１１】
2018083319.tif 000015
【図１２】
2018083319.tif 000016
【図１３】
2018083319.tif 000017
【図１４】
2018083319.tif 000018
【図１５】
2018083319.tif 000019