(57)【要約】【課題】  演算資源が限られていても、優先度の高い描画処理命令による描画に関するコマ落ちを防ぎ、品質の高い描画処理を実行可能な技術を提供する。【解決手段】  複数の描画処理命令を入力して描画処理を行う描画処理装置は、前記複数の描画処理命令を複数の描画命令群にグループ化し、前記複数の描画命令群のそれぞれに対して描画処理命令を実行するための演算資源を割り当て、前記複数の描画命令群毎に、割り当てた演算資源を使用して、描画命令群に含まれる描画処理命令に基づいて描画処理を行い画像を生成し、生成した画像を前記複数の描画命令群毎に記憶手段に格納し、前記記憶手段に前記複数の描画命令群毎に格納された画像を合成する。ただし、より優先度の高い前記描画命令群に対して、より大きな演算資源を割り当てる。【選択図】  図２
2009075888.tif 000002
【特許請求の範囲】
【請求項１】
複数の描画処理命令を入力して描画処理を行う描画処理装置であって、
前記複数の描画処理命令を複数の描画命令群にグループ化するグループ化手段と、
前記複数の描画命令群のそれぞれに対して、描画処理命令を実行するための演算資源を割り当てる割当手段と、
前記複数の描画命令群毎に、前記割当手段が割り当てた演算資源を使用して、描画命令群に含まれる描画処理命令に基づいて描画処理を行い、画像を生成する生成手段と、
前記生成手段が生成した画像を、前記複数の描画命令群毎に記憶手段に格納する格納手段と、
前記記憶手段に前記複数の描画命令群毎に格納された画像を合成する合成手段と、
を備え、
前記割当手段は、より優先度の高い前記描画命令群に対して、より大きな演算資源を割り当てる
ことを特徴とする描画処理装置。
【請求項２】
描画命令群に含まれる各描画処理命令で規定されるフレームレートに合わせて前記生成手段が画像を生成できなかったことに応じて、前記複数の描画命令群にそれぞれ割り当てられた演算資源の割り当てを更新する更新手段を更に備えることを特徴とする請求項１に記載の描画処理装置。
【請求項３】
前記グループ化手段は、連続する１以上の前記描画処理命令を１つの描画命令群にグループ化することを特徴とする請求項１又は２に記載の描画処理装置。
【請求項４】
前記グループ化手段は、優先度の等しい前記描画処理命令を同じ描画命令群にグループ化することを特徴とする請求項３に記載の描画処理装置。
【請求項５】
前記複数の描画処理命令には、図形を描画する図形描画処理命令と、動画像を描画する動画描画処理命令と、静止画を描画する静止画描画処理命令と、の少なくともいずれかが含まれることを特徴とする請求項１乃至４のいずれか１項に記載の描画処理装置。
【請求項６】
前記図形描画処理命令には、時間経過に従って図形が変化するアニメーション処理が含まれることを特徴とする請求項５に記載の描画処理装置。
【請求項７】
前記複数の描画処理命令には動画像を描画する動画描画処理命令が含まれ、
前記動画描画処理命令を含む描画命令群の優先度は、他の描画命令群の優先度よりも大きい
ことを特徴とする請求項１乃至４のいずれか１項に記載の描画処理装置。
【請求項８】
前記描画処理命令の種類毎に優先度を記憶する優先度記憶手段と、
前記優先度記憶手段に記憶された優先度に基づいて、前記グループ化手段がグループ化した描画命令群の優先度を決定する優先度決定手段と、
を更に備え、
前記割当手段は、前記優先度決定手段が決定した描画命令群の優先度に基づいて、前記演算資源を割り当てる
ことを特徴とする請求項１乃至７のいずれか１項に記載の描画処理装置。
【請求項９】
複数の描画処理命令を入力して描画処理を行う描画処理装置であって、
前記複数の描画処理命令のそれぞれに対して、描画処理命令を実行するための演算資源を割り当てる割当手段と、
前記複数の描画処理命令毎に、前記割当手段が割り当てた演算資源を使用して描画処理命令に基づいて描画処理を行い、画像を生成する生成手段と、
前記生成手段が生成した画像を、前記複数の描画処理命令毎に記憶手段に格納する格納手段と、
前記記憶手段に前記複数の描画処理命令毎に格納された画像を合成する合成手段と、
を備え、
前記割当手段は、より優先度の高い前記描画処理命令に対して、より大きな演算資源を割り当てる
ことを特徴とする描画処理装置。
【請求項１０】
複数の描画処理命令を入力して描画処理を行う描画処理装置の描画処理方法であって、
前記複数の描画処理命令を複数の描画命令群にグループ化するグループ化工程と、
前記複数の描画命令群のそれぞれに対して、描画処理命令を実行するための演算資源を割り当てる割当工程と、
前記複数の描画命令群毎に、前記割当工程において割り当てた演算資源を使用して、描画命令群に含まれる描画処理命令に基づいて描画処理を行い、画像を生成する生成工程と、
前記生成工程において生成した画像を、前記複数の描画命令群毎に記憶手段に格納する格納工程と、
前記記憶手段に前記複数の描画命令群毎に格納された画像を合成する合成工程と、
を備え、
前記割当工程においては、より優先度の高い前記描画命令群に対して、より大きな演算資源を割り当てる
ことを特徴とする描画処理方法。
【請求項１１】
コンピュータを請求項１乃至９のいずれか１項に記載の描画処理装置として機能させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムを格納したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画処理装置及びその方法、プログラム、記録媒体に関する。
【背景技術】
【０００２】
従来、一連の描画処理命令が入力され、順次描画処理を実行するものとして、Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍと呼ばれる描画アルゴリズムが一般的に知られている。Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍは、１つの描画用バッファに対して、入力された描画処理命令の順に上書き処理を行うことによって、１フレーム分の静止画を生成するというものである。アニメーションのような動的に変化する表示を実現するには、描画処理命令のパラメータを変更してから一連の描画処理命令を入力することを繰り返し行う。
【０００３】
Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍの概要について図１３を参照して説明する。図１３は、Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍについて説明した模式図である。
【０００４】
図１３（ａ）は、入力される一連の描画処理命令の一例を示している。図１３（ａ）では、多角形描画処理命令、楕円描画処理命令、動画描画処理命令、矩形描画処理命令の順に描画処理命令が入力される例が示されている。
【０００５】
図１３（ｂ）は、図１３（ａ）に例示した描画処理命令が順に入力された場合に実行する描画処理を模式的に示している。Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍに従うと、まず多角形描画処理命令を受信し（ステップ１３０１）、描画する（ステップ１３０２）。次に楕円描画処理命令を受信し（ステップ１３０３）、描画する（ステップ１３０４）。次に動画描画処理命令を受信し（ステップ１３０５）、描画する（ステップ１３０６）。最後に矩形描画処理命令を受信し（ステップ１３０７）、描画する（ステップ１３０８）。これらステップ１３０１〜１３０８の処理により、１フレーム分の描画が完了する。
【０００６】
一方、動画とグラフィックスをコンピュータ上で混在して合成して表示させる技術が知られている。一般的には、動画データとグラフィックスデータが独立して存在し、入力された動画データを変換し、グラフィックスの上に重ねて、モニタに表示している（特許文献１参照）。
【特許文献１】特開２００５−３２１４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、一連の描画処理命令が入力され、順次描画処理を実行するのに、Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍをそのまま実行すると、描画処理命令の中に時間のかかる処理が含まれていた場合に、いわゆるコマ落ちが発生する場合があった。例えば、動画のフレームレートよりも表示のフレームレートが低くなり、動画がいわゆるコマ落ちを起こすことがあった。このことについて図１４を参照して説明する。図１４は、Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍの課題を説明した模式図である。
【０００８】
図１４（ａ）はコマ落ちが発生する様子を説明した模式図である。動画がある一定のフレームレートで再生されており、１フレーム当たりの時間をΔＴ１とし、描画装置が１フレーム描画するのにかかる時間をΔＴ２とする。ΔＴ２＞ΔＴ１となった場合、時刻ｔ０でＮフレーム目を表示した次に表示を行うのがＮ＋２フレーム目になり、Ｎ＋１フレーム目が飛ばされる可能性がある。
【０００９】
また、表示するコンテンツに重要なグラフィックスのアニメーションが含まれていた場合に、アニメーションの効果が適切に表示されないことがあった。図１４（ｂ）は、アニメーションの効果が適切に表示されない状況を説明した模式図である。
【００１０】
図１４（ｂ）では、グラフィックスのアニメーションが、時間ΔＴ１ごとに点滅を繰り返すように設定されている。描画装置が１フレームの描画にかかる時間をΔＴ２とし、ΔＴ２＞ΔＴ１が成立するとき、時刻Ｔ０で表示されていたグラフィックスが、次の描画のタイミングである時刻Ｔ０＋ΔＴ２においても表示状態となっている。しかしΔＴ２の時間内にグラフィックスが非表示にならなければならないため、実質的にコマ落ちのような現象が発生してしまう。
【００１１】
これらの現象は、描画処理装置の演算資源が、要求された描画処理を実行するのに十分でないことに起因するものである。
【００１２】
本発明は上記課題に鑑みなされたものであり、演算資源が限られていても、優先度の高い描画処理命令による描画に関するコマ落ちを防ぎ、品質の高い描画処理を実行可能な技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明による描画処理装置は以下の構成を備える。即ち、
複数の描画処理命令を入力して描画処理を行う描画処理装置であって、
前記複数の描画処理命令を複数の描画命令群にグループ化するグループ化手段と、
前記複数の描画命令群のそれぞれに対して、描画処理命令を実行するための演算資源を割り当てる割当手段と、
前記複数の描画命令群毎に、前記割当手段が割り当てた演算資源を使用して、描画命令群に含まれる描画処理命令に基づいて描画処理を行い、画像を生成する生成手段と、
前記生成手段が生成した画像を、前記複数の描画命令群毎に記憶手段に格納する格納手段と、
前記記憶手段に前記複数の描画命令群毎に格納された画像を合成する合成手段と、
を備え、
前記割当手段は、より優先度の高い前記描画命令群に対して、より大きな演算資源を割り当てる
ことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、演算資源が限られていても、優先度の高い描画処理命令による描画に関するコマ落ちを防ぎ、品質の高い描画処理を実行可能な技術を提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。また、本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１６】
＜＜実施形態１＞＞
以下、本発明の実施形態１について、図面を参照しながら説明する。
【００１７】
〔ハードウェア構成〕
まず、本実施形態に係る描画処理装置２００のハードウェア構成について、図１を参照して説明する。図１は本実施形態に係る描画処理装置２００のハードウェア構成について説明したブロック図である。
【００１８】
図１において、ＣＰＵ１０２は、描画処理装置２００が装備している各機能を実行、制御する。ＲＯＭ１０３は読み出し専用メモリであり、変更を必要としないプログラムや各種パラメータを格納する。ＲＡＭ１０４は書き込み可能メモリであり、ＳＤＲＡＭ、ＤＲＡＭなどによって構成され、外部装置などから供給されるプログラムやデータを一時記憶する。
【００１９】
表示ユニット１０５はプログラムによって描画された表示画面をディスプレイへ出力する。バス１０１は、システムバスであって、ＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４、表示ユニット１０５を接続する。
【００２０】
尚、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【００２１】
本実施形態では、本実施形態に係るプログラムをＲＯＭ１０３に記録しておき、これをメモリマップの一部をなすように構成し、直接ＣＰＵ１０２で実行する例を想定するが、これに限られない。例えば、本実施形態に係るプログラムを動作させる度に、既にプログラムがインストールされているＲＯＭ１０３からＲＡＭ１０４にロードするようにしてもよい。
【００２２】
また、本実施形態では、説明の便宜のため、本実施形態に係る描画処理装置２００を１つの装置で実現した構成について述べるが、複数の装置にリソースを分散した構成によって実現してもよい。例えば、記憶や演算のリソースを複数の装置に分散した形に構成してもよい。或いは、描画処理装置２００上で仮想的に実現される構成要素毎にリソースを分散し、並列処理を行うようにしてもよい。
【００２３】
〔機能構成〕
次に、本実施形態に係る描画処理装置２００の機能構成について、図２を用いて説明する。図２は描画処理装置２００の機能構成を示すブロック図である。図２のように、描画処理装置２００は以下の機能ブロックを備える。
・プログラムの実行によって呼び出される描画処理命令を受信する描画処理命令受信部２０１。
・受信した描画処理命令をグループ化し、複数の描画処理命令単位（描画命令群）を生成する描画処理命令単位生成部２０２。
・生成された描画処理命令単位毎（描画命令群毎）にＲＡＭ１０４上に描画バッファを確保する描画バッファ確保部２０３。
・描画処理命令単位を実行し、描画バッファへの描画処理を実行する描画処理命令単位実行部２０４。
・描画処理命令単位を優先度によって制御する描画処理命令単位制御部２０５。
・複数生成された描画バッファを１つに合成する描画バッファ合成部２０６。
・合成結果を外部モニタに出力する合成結果出力部２０７。
【００２４】
〔全体処理〕
次に、本実施形態に係る描画処理装置２００が実行する処理について、図３を参照して説明する。図３は、描画処理装置２００の処理の流れを示すフローチャートである。描画処理装置２００は、ビデオ（動画像）データの描画処理命令（動画像描画処理命令）とグラフィックスデータ（図形）の描画処理命令（図形描画処理命令）を順次受信する。ここでは、ビデオの再生がコマ落ちしないよう、ビデオの描画命令の優先順位を高くして描画処理を行う場合について説明する。以下の各ステップの処理は、ＣＰＵ１０２の制御に基づいて行われる。なお、描画処理装置２００は、静止画を描画する静止画描画処理命令も入力してもよい。また、図形描画処理命令には、時間経過に従って図形が変化するアニメーション処理が含まれてもよい。
【００２５】
はじめに、描画処理命令を受信する（ステップＳ３０１）。図４は、入力される描画処理命令と、それらに対する処理について説明した模式図であり、図４（ａ）は描画処理命令のシーケンスを例示している。
【００２６】
図４（ａ）の例では、多角形描画処理命令４０１、楕円描画処理命令４０２、ビデオ（動画）描画処理命令４０３、矩形描画処理命令４０４の順に描画処理命令が呼び出される。それぞれの描画処理命令を実行した場合の描画内容を、描画領域と共に図示すると図４（ｂ）のようになる。なお、これらの描画処理命令は時間経過と共に変化するアニメーションを含んでいてもよい。
【００２７】
次に、各描画処理命令をグループ化し、描画処理命令単位を生成する（ステップＳ３０２）。ここでは、ビデオの描画処理命令の優先順位を高くするので、ビデオ描画の命令の前後でグループに分ける。すなわち、ビデオ描画の命令の前に呼び出される一連の描画処理命令を一つのグループ、ビデオ描画の描画処理命令を一つのグループ、ビデオ描画の命令の後に呼び出される一連の描画処理命令を一つのグループに分ける。そして、各グループを描画処理命令単位とする。なお、描画処理装置は、描画処理命令の種類毎に優先度を記憶する優先度記憶部（不図示）を備えており、ここ記憶された優先度に基づいて、グループ化した描画処理命令単位の優先度を決定する優先度決定処理を行う。
【００２８】
具体的には、図４（ｃ）に示したように、まずビデオ描画処理命令４０３より前に呼び出される多角形描画処理命令４０１と楕円描画処理命令４０２をグループ化し、描画処理命令単位Ｅａとする。次にビデオ描画処理命令４０３を描画処理命令単位Ｅｂとする。次に、ビデオ描画処理命令４０３より後に呼び出される矩形描画処理命令４０４を描画処理命令単位Ｅｃとする。
【００２９】
次に、それぞれの描画処理命令単位に対して描画用のバッファをＲＡＭ１０４に確保する（ステップＳ３０３）。図４（ｃ）の例では、描画処理命令単位Ｅａに対応する描画バッファを描画バッファＢａ４１０、描画処理命令単位Ｅｂに対応する描画バッファを描画バッファＢｂ４１１、描画処理命令単位Ｅｃに対応する描画バッファを描画バッファＢｃ４１２としている。
【００３０】
次に、目標フレームレートを設定する（ステップＳ３０４）。例えば、優先順位の高い描画処理命令を含んだ描画処理命令単位によって描画処理される画像をコマ落ちなく表示するためのフレームレートを目標フレームレートとして設定する。ここでの例ではビデオの描画処理命令の優先順位が高いため、ビデオ描画処理命令４０３を含んだ描画処理命令単位Ｅｂによって描画処理されるビデオをコマ落ちなく表示するために、ビデオのフレームレートを目標フレームレートとして設定する。
【００３１】
次に、各描画処理命令単位を起動する（ステップＳ３０５）。ここでは、各描画処理命令単位をそれぞれ別個のスレッドとし、各スレッドに対して描画処理命令を実行するための演算資源を割り当てる割当処理を行う。本実施形態では、ＣＰＵ時間を細かく分割して各スレッドに割り当てる。これにより、各描画処理命令単位の処理を並列に実行し、描画処理命令単位に含まれる描画処理命令に基づいて描画処理を行った結果生成される画像を描画バッファに格納する。
【００３２】
ここで、描画処理命令単位がそれぞれ実行する処理について、図５を参照して説明する。図５はステップＳ３０５において起動された各描画処理命令単位の一連の処理の流れを示したフローチャートである。
【００３３】
まず、描画処理命令単位の更新回数を０にクリアする（ステップＳ５０１）。次に描画処理命令単位を実行し、対応する描画バッファに描画する（ステップＳ５０２）。即ち、描画処理命令により描かれる画像を対応する描画バッファに格納する。次に、タイマーシグナルの受信待機を行う（ステップＳ５０３）。ここでタイマーシグナルは、ステップＳ３０４で決定した目標フレームレートに基づいて、一定の間隔で送信されるシグナルである。描画処理装置２００は時刻を計時し、タイマーシグナルを生成する計時手段（不図示）を備えており、各描画処理命令単位は、この計時手段からタイマーシグナルを受信する。
【００３４】
続いて更新回数を１加算する（ステップＳ５０４）。そして、描画処理命令単位の実行を停止、終了するように信号が送られるまでステップＳ５０２〜ステップＳ５０４の処理を繰り返す（ステップＳ５０５）。以上の処理を、描画処理命令単位毎に並列かつ非同期に実行する。
【００３５】
図３の説明に戻る。ステップＳ３０５における各描画処理命令単位の起動を終えると、次に各描画処理命令単位に対するＣＰＵ時間の割り当ての初期値を設定する（ステップＳ３０６）。ここでは初期化処理として、すべての描画処理命令単位に対し、均一のＣＰＵ時間を割り当てる。
【００３６】
次に、各描画処理命令単位に対応した描画バッファの合成を行う（ステップＳ３０７）。すなわち、描画バッファＢａ４１０に格納された画像、描画バッファＢｂ４１１に格納された画像、描画バッファＢｃ４１２に格納された画像を順に合成する。そして、その合成した結果をＲＡＭ１０４に格納する。
【００３７】
描画バッファの合成の詳細について、図６を参照して説明する。図６は、描画バッファを合成する手順について示した模式図である。
【００３８】
まず、合成結果を格納するための出力用バッファ６１１をＲＡＭ１０４上に確保し、描画バッファＢａ４１０の内容（画像）を出力用バッファ６１１に転送しコピーする（ステップ６０１）。次に、出力用バッファ６１１上に描画バッファＢｂ４１１の内容（画像）を上から合成する（ステップ６０２）。次に、描画バッファＢｃ４１２の内容（画像）を出力用バッファ５１１上に合成する（ステップ６０３）。これらの処理を行うことによって、１フレーム出力するためのフレーム合成結果６１２を取得する。
【００３９】
図３の説明に戻る。ステップＳ３０７における描画バッファの合成を終えると、次にタイマーシグナルを受信するまで待機する（ステップＳ３０８）。ただし、タイマーシグナルは、ステップＳ３０４で決定した目標フレームレートに基づき、一定の間隔で生成されるシグナルである。ステップＳ３０８でタイマーシグナルを受信すると、合成結果出力部２０７へ出力する（３０９）。
【００４０】
次に、各描画処理命令単位に配分するＣＰＵ時間を計算する（ステップＳ３１０）。以下、描画処理命令単位へのＣＰＵ時間の配分方法について、図７に示したフローチャートに従って説明する。図７は、描画処理命令単位へＣＰＵ時間を配分する処理の流れを示したフローチャートである。ここでは描画処理命令単位Ｅｂの優先度が高いため、描画処理命令単位Ｅｂに配分するＣＰＵ時間を計算する場合について説明する。
【００４１】
まず、図５のフローチャートのステップＳ５０１およびステップＳ５０４においてＲＡＭ１０４上に格納される描画処理命令単位Ｅｂの更新回数を取得する（ステップＳ７０１）。
【００４２】
次に、前回に各処理へのＣＰＵ時間割り当て決定処理（ステップＳ３０８）が行われたときの描画処理命令単位Ｅｂの更新回数を取得する（ステップＳ７０２）。もしステップＳ３０８の処理が１回目であれば、取得する値は０である。
【００４３】
次に、描画処理命令単位Ｅｂの更新処理が完了しているかどうかを、ステップＳ７０１とステップＳ７０２で取得した値を比較して判定する（ステップＳ７０３）。すなわち、ステップＳ７０１で取得した値がステップＳ７０２で取得した値を上回っている場合は、更新回数が変化しているため、描画処理命令単位Ｅｂの更新処理が完了していると判定する。一方、両者の値が一致する場合は、更新回数が変化していないため、更新処理は完了していないと判定する。
【００４４】
なお、図５のように、更新回数のカウントアップ（Ｓ５０４）は、描画処理命令単位を実行した後にタイマーシグナルを受信してから行う（Ｓ５０２、Ｓ５０３）。一方で、図７の処理（図３のＳ３１０）もタイマーシグナルに同期して行う（Ｓ３０８）。従って、ステップＳ７０３で更新処理が完了していないことは、タイマーシグナル、即ち、描画処理命令単位に含まれる各描画処理命令で規定されるフレームレートに合わせて、描画処理命令単位が実行できていないことを示している。このため、本実施形態では、フレームレートに合わせて、描画処理命令単位が実行できず、画像を生成できなかった場合は、それに応じて、描画処理命令単位にそれぞれ割り当てられたＣＰＵ時間の割り当てを更新する処理を行う。これにより、ＣＰＵ時間の割り当てを最適化することができる。
【００４５】
図８は、図７のステップＳ７０１〜Ｓ７０３における処理を説明した模式図である。描画処理命令単位Ｅｂはタイマーシグナルを時間ΔＴ間隔で受信している。描画処理命令単位Ｅｂが１フレーム分の描画を行うのにかかる処理時間をＴとする。ＴはＣＰＵが描画処理命令単位Ｅｂのために消費した時間Ｊを描画処理命令単位ＥｂのＣＰＵ使用率Ｒで割ったものである。ここでは、２ΔＴ≧Ｔ＞ΔＴとなる場合について説明する。
【００４６】
まず描画処理命令単位Ｅｂは、シグナル８０１を受信して、描画処理命令単位を実行する。このときのシグナル８０２は描画処理命令単位を実行中であるため、無視される。シグナル８０３を受信したときには描画処理命令単位の実行を完了しているので、更新回数を１加算し、Ｎ＋１とする（図５のステップＳ５０４）。
【００４７】
一方、ステップＳ３１０におけるＣＰＵ時間割り当て決定処理は、ステップＳ３０８で受信するタイマーシグナルと同期して行われ、その間隔はΔＴである。シグナル８０１が発生する時刻をＴｓし、更新回数取得を行う時刻をｔ（Ｔｓ＜ｔ＜Ｔｓ＋ΔＴ）とする。
【００４８】
例えば、図８では、時刻ｔにおいて取得する更新回数はＮであり、前回取得した更新回数はＮ−１である。このため、ステップＳ７０３において描画処理命令単位Ｅｂの更新処理が完了していると判断することになる。
【００４９】
また、図８では、時刻ｔ＋ΔＴにおいて、取得する更新回数はＮであり、前回取得した更新回数もＮである。このため、ステップＳ７０３において描画処理命令単位Ｅｂの更新処理が完了していないと判断することになる。なお、Ｔ＜ΔＴであれば、更新回数取得時に毎回描画処理命令単位Ｅｂの更新処理が完了していることになる。
【００５０】
図７に戻り、ステップＳ７０３において、描画処理命令単位Ｅｂの更新処理が完了していないと判定された場合（ステップＳ７０３でＮＯ）はステップＳ７０４へ進み、完了していると判定された場合（ステップＳ７０３でＹＥＳ）はステップＳ７０５へ進む。
【００５１】
ステップＳ７０４では、描画処理命令単位Ｅｂに対するＣＰＵ使用率の割り当てを増加させ、各描画処理命令単位のＣＰＵ使用率の再割り当てを行う。
【００５２】
図９はＣＰＵ使用率の割り当てを増加させる方法について説明した模式図である。図９の例の初期状態では、ステップＳ３０５において、３つの描画処理命令単位に対して均一に割り当てられているので、各描画処理命令単位のＣＰＵ使用率はそれぞれ１／３である。この場合、ステップＳ７０４において、描画処理命令単位Ｅａおよび描画処理命令単位ＥｃのＣＰＵ使用率をそれぞれ１／４に減少させ、描画処理命令単位ＥｂのＣＰＵ使用率を１／２にする。
【００５３】
２回目以降にステップＳ７０３で同じように更新処理が完了していないと判定をされた場合は、描画処理命令単位ＥｂのＣＰＵ使用率を更に増加させる。ステップＳ７０３での判定の時点での描画処理命令単位Ｅａおよび描画処理命令単位ＥｃのＣＰＵ使用率が１／Ｍ、描画処理命令単位ＥｂのＣＰＵ使用率が（Ｍ−２）／Ｍであるとする。この場合、描画処理命令単位Ｅａおよび描画処理命令単位ＥｃのＣＰＵ使用率を１／（Ｍ＋１）、描画処理命令単位ＥｂのＣＰＵ使用率を（Ｍ−１）／（Ｍ＋１）にする。
【００５４】
描画処理命令単位Ｅｂがフレーム分の描画を行うのにかかった処理時間をＴ、ＣＰＵが描画処理命令単位Ｅｂのために消費した時間をＪ、描画処理命令単位ＥｂのＣＰＵ使用率をＲとすると、Ｊ＝Ｔ×Ｒが成立しており、Ｊが不変あるいはほぼ一定とする。この場合、ＣＰＵ使用率Ｒを増加させることによってＴを減少させることができる。
【００５５】
なお、ＣＰＵ時間の割り当てを更新する方法は、ここに例示したものに限られない。例えば、ＣＰＵ時間を増加させる必要がある場合、ＣＰＵ時間を一定の割合（例えば、１０％）ずつ増加させてもよい。
【００５６】
次に、ステップＳ７０１で取得した描画処理命令単位Ｅｂの更新回数を保存し、ステップＳ３１０の処理を完了する。プログラムの終了処理が行われるまでステップＳ３０７からステップＳ３１０の処理を繰り返し行う。
【００５７】
上記のように、本実施形態の構成は、優先度に基づいて各描画処理命令単位に描画処理を行うための演算資源を割り当てる。このため、演算資源が限られていても、優先度の高い描画処理命令による描画に関するコマ落ちを防ぎ、品質の高い描画処理を実行可能である。従って、以上の処理により、ビデオをコマ落ちすることなく表示することが可能になる。
【００５８】
また、本実施形態では、描画処理命令を複数の描画処理命令単位にグループ化し、各描画処理命令単位の優先度に基づいて描画処理を行うための演算リソースを割り当てる。このため、グラフィックスと動画１つのコンテンツの中に混在し、それらを描画するときに、１フレームごとに一連の描画処理命令として入力され、入力された順に描画処理を行う場合も、品質の高い描画処理を行うことができる。
【００５９】
なお、描画処理命令を描画処理命令単位にグループ化せずに、描画処理命令毎に、その優先度に基づいて、描画処理命令を実行するための演算資源を割り当て、描画処理を行うようにしてもよい。この場合も、演算資源が限られていても、優先度の高い描画処理命令による描画に関するコマ落ちを防ぎ、品質の高い描画処理を実行可能である。
【００６０】
また、本実施形態では、連続する１以上の前記描画処理命令を１つの描画処理命令単位にグループ化する。このため、描画処理順序を維持することができる。
【００６１】
ここで、上記構成の効果について、図１０を用いて説明する。図１０（ａ）、（ｂ）、（ｃ）は本実施形態の構成による効果を説明するための模式図である。
【００６２】
図１０（ａ）において、描画処理命令単位Ｅａが１フレーム分の描画を完了するのに要するＣＰＵ時間をＴａとする。同様に、描画処理命令単位Ｅｂが１フレーム分の描画を完了するのに要するＣＰＵ時間をＴｖ、描画処理命令単位Ｅｃが１フレーム分の描画を完了するのに要するＣＰＵ時間をＴｂとする。図３のステップＳ３０４において設定された目標フレームレートから求まる１フレーム当たりの時間をΔＴとすると、ΔＴ＜Ｔａ＋Ｔｖ＋Ｔｂの場合、すべての描画処理命令単位を時間ΔＴ以内に完了させることはできない。
【００６３】
そこで、時間ΔＴを時分割し、各処理に均等に割り当てたのが図１０（ｂ）である。図１０（ｂ）のように、時分割したＣＰＵ時間のうち、描画処理命令単位Ｅｂに割り当てたものを集めても、Ｔｖより小さくなる場合は、ΔＴ内に処理を完了できない。一方で優先順位の低い、例えば描画処理命令単位Ｅａに割り当てたＣＰＵ時間を集めてもＴａより大きくなる。
【００６４】
そこで、ＣＰＵ時間の割り当てを変更したのが図１０（ｃ）に示した模式図である。例えば描画処理命令単位Ｅａに割り当てたＣＰＵ時間を集めてもＴａより小さくなり、ΔＴ内に処理を完了しない。しかし、優先順位の高い描画処理命令単位Ｅｂに割り当てたものを集めると、Ｔｖよりも大きくなり、ΔＴ内に処理を完了させることが可能になる。
【００６５】
なお、本実施形態では、単一のビデオ描画処理命令と複数のグラフィックス描画処理命令が入力され、ビデオ描画処理命令を優先度の高い描画処理命令であるとし、ビデオ描画処理命令にＣＰＵ時間を多く割り当てるための方法について説明した。しかし、入力される描画処理命令の種類や優先順位の高低は、これに限られない。例えば、入力される描画処理命令がすべてグラフィックス描画処理命令であり、その中の１つが優先度の高い描画処理命令であるとしても構わない。また、入力される描画処理命令がビデオ描画処理命令であり、その中の１つが優先度の高い描画処理命令であるとしても構わない。
【００６６】
また、本実施形態では入力される描画処理命令の中に、単一の優先度の高い描画処理命令が含まれている場合について説明したが、優先度の高い描画処理命令は複数含まれていてもよく、さらに優先度を細かく設定してもよい。
【００６７】
図１１（ａ）は、多段階の優先度が与えられた描画処理命令が、描画処理命令Ａ、描画処理命令Ｂ、描画処理命令Ｃ、描画処理命令Ｄ、描画処理命令Ｅ、描画処理命令Ｆの順に入力されることを示した模式図である。ここで、優先度は数値が大きい方が、優先度が高いとする。
【００６８】
図１１（ａ）のように入力された描画処理命令は、図３におけるステップＳ３０２の描画処理命令単位へのグループ化処理によって、優先度が同じで、連続した描画処理命令がグループ化される。グループ化の結果は、図１１（ｂ）のようになる。すなわち、描画処理命令Ａと描画処理命令Ｂはともに優先度１で、入力が連続しているので描画処理命令単位Ｅｐとしてグループ化される。描画処理命令Ｃと描画処理命令Ｄはともに優先度２で、入力が連続しているので描画処理命令単位Ｅｑとしてグループ化される。描画処理命令Ｅは単独で描画処理命令単位Ｅｒとされ、描画処理命令単位Ｆも単独で描画処理命令単位Ｅｓされる。
【００６９】
また、それぞれの描画処理命令単位に対して描画用バッファをＲＡＭ１０４に確保する。具体的には、描画バッファＢｐ、描画バッファＢｑ、描画バッファＢｒ、描画バッファＢｓを確保する。
【００７０】
さらに、各描画処理命令単位の優先度は、グループに含まれる描画処理命令の優先度の和であるとする。従って、描画処理命令単位Ｅｐには１×２＝２、描画処理命令単位Ｅｑには２×２＝４、描画処理命令単位Ｅｒには１、描画処理命令単位Ｅｓには３の優先度を割り当てる。
【００７１】
図３の各描画処理命令単位へのＣＰＵ時間割り当て決定処理（ステップＳ３１０）において、まずＣＰＵ時間割り当ての初期値として、各描画処理命令単位の優先度の値の比で割り当てる。例えば、描画処理命令単位Ｅｐは全体の２／１０、描画処理命令単位Ｅｑは全体の４／１０、描画処理命令単位Ｅｒは全体の１／１０、描画処理命令単位Ｅｓは全体の３／１０のＣＰＵ時間を占めるように配分する。これを図示したものが図１２（ａ）である。
【００７２】
優先度の高い描画処理命令単位Ｅｓの１フレーム分の描画時間内に処理を完了しない場合、ＣＰＵ時間の再割り当てを行う。ここでは、各描画処理命令単位のＣＰＵ時間割り当ての比を、各描画処理命令単位が含んでいる描画処理命令の優先度をそれぞれ２乗して和を計算したものを用いる。
【００７３】
上記の例では、描画処理命令Ａ、Ｂの優先度をそれぞれ１2＝１として、描画処理命令単位Ｅｐの優先度を１2×２＝２とする。同様に、描画処理命令Ｃ、Ｄの優先度をそれぞれ２2＝４として、描画処理命令単位Ｅｑの優先度を２2×２＝８とする。描画処理命令Ｅの優先度をそれぞれ１2＝１として、描画処理命令単位Ｅｒの優先度を１2＝１とする。描画処理命令Ｆの優先度をそれぞれ３2＝９として、描画処理命令単位Ｅｓの優先度を３2＝９とする。
【００７４】
これにより、描画処理命令単位Ｅｐは全体の２／２０、描画処理命令単位Ｅｑは全体の８／２０、描画処理命令単位Ｅｒは全体の１／２０、描画処理命令単位Ｅｓは全体の９／２０のＣＰＵ時間が与えられる。これにより、優先度の高い描画処理をコマ落ちすることなくフレームレートを維持して行うことができる。
【００７５】
＜＜その他の実施形態＞＞
なお、上記実施形態では、処理を開始してからフレームレートに合わせて描画処理命令単位を実行できなかった場合に、優先度に基づいてＣＰＵ時間の割り当てを更新していくが、初めから割り当ててもよい。例えば、描画処理命令又は描画処理命令単位に対するＣＰＵ時間の割当を、はじめからその優先度に基づいて増減しておいてもよい。
【００７６】
以上、本発明の実施形態例について詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様を取ることが可能である。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
【００７７】
尚、本発明の目的は、前述した実施形態の機能を実現するプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成してもよい。
【００７８】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明の技術的範囲に含まれる。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含む。
【００７９】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００８０】
プログラムを供給するための記録媒体としては、例えば、次のものが含まれる。即ち、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）等が含まれる。
【００８１】
その他、プログラムの供給形態としては、次のようなものも考えられる。即ち、クライアント装置のブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明に係るコンピュータプログラム、或いは、圧縮され自動インストール機能を含むファイルをＨＤ等の記録媒体にダウンロードする形態も考えられる。また、本発明に係るプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００８２】
また、次のような供給形態も考えられる。即ち、まず、本発明に係るプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布する。そして、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報の使用により暗号化されたプログラムを実行してコンピュータにインストールさせて本発明に係る構成を実現する。このような供給形態も可能である。
【００８３】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、次のような実現形態も想定される。即ち、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００８４】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づいても前述した実施形態の機能が実現される。即ち、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【００８５】
以上のように、描画処理装置２００によれば、一連の描画処理命令が入力され、順次描画処理を実行するのに、アニメーションや動画を描画するときにコマ落ちを防ぐことによって、高品位なアニメーション表示や動画表示が可能となる。
【図面の簡単な説明】
【００８６】
【図１】描画処理装置のハードウェア構成について説明したブロック図である。
【図２】描画処理装置の機能構成を示すブロック図である。
【図３】描画処理装置の処理の流れを示すフローチャートである。
【図４】入力される描画処理命令と、それらに対する処理について説明した模式図である。
【図５】各描画処理命令単位の一連の処理の流れを示したフローチャートである。
【図６】描画バッファを合成する手順について示した模式図である。
【図７】描画処理命令単位へＣＰＵ時間を配分する処理の流れを示したフローチャートである。
【図８】図７のステップＳ７０１〜Ｓ７０３における処理を説明した模式図である。
【図９】ＣＰＵ使用率の割り当てを増加させる方法について説明した模式図である。
【図１０】本実施形態の構成による効果を説明するための模式図である。
【図１１】描画処理命令、描画処理命令単位の一例を示す模式図である。
【図１２】各描画処理命令単位に対するＣＰＵ使用率の割り当てを示す模式図である。
【図１３】Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍについて説明した模式図である。
【図１４】Ｐａｉｎｔｅｒ'ｓ ａｌｇｏｒｉｔｈｍの課題を説明した模式図である。
【図１】
2009075888.tif 000003
【図２】
2009075888.tif 000004
【図３】
2009075888.tif 000005
【図４】
2009075888.tif 000006
【図５】
2009075888.tif 000007
【図６】
2009075888.tif 000008
【図７】
2009075888.tif 000009
【図８】
2009075888.tif 000010
【図９】
2009075888.tif 000011
【図１０】
2009075888.tif 000012
【図１１】
2009075888.tif 000013
【図１２】
2009075888.tif 000014
【図１３】
2009075888.tif 000015
【図１４】
2009075888.tif 000016