(57)【要約】【課題】描画される画像の品質を向上させる。【解決手段】コマンド制御装置１は、第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納される第一優先度コマンド列格納部１１と、第一描画優先度より低い第二描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納される第二優先度コマンド列格納部１２と、所定の周期ごとに、第一優先度コマンド列格納部１１に格納された第一コマンドを実行することで、第一描画領域に画像を描画するコマンド列実行部１８とを備え、コマンド列実行部１８は、さらに、所定の周期の開始時から、所定の周期より短い閾値時間以内に第一コマンドの実行が完了したか否かを判定し、閾値時間以内に第一コマンドの実行が完了したと判定した場合に、第二優先度コマンド列格納部１２に格納された第二コマンドを実行することで第二描画領域に画像を描画する。【選択図】図１
2015195003.tif 000002
【特許請求の範囲】
【請求項１】
画面上の複数の描画領域に対して画像の描画のためのコマンドを実行するためのコマンド制御装置であって、
前記複数の描画領域の内の第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納される第一格納部と、
前記複数の描画領域の内の前記第一描画優先度より低い第二描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納される第二格納部と、
所定の周期ごとに、前記第一格納部に格納された前記第一コマンドを実行することで、前記第一描画領域に画像を描画するコマンド実行部とを備え、
前記コマンド実行部は、さらに、
前記所定の周期の開始時から、前記所定の周期より短い閾値時間以内に前記第一コマンドの実行が完了したか否かを判定し、前記閾値時間以内に前記第一コマンドの実行が完了したと判定した場合に、前記第二格納部に格納された前記第二コマンドを実行することで前記第二描画領域に画像を描画する
コマンド制御装置。
【請求項２】
前記コマンド制御装置は、さらに、
前記所定の周期の開始時から前記閾値時間が経過した時点で、前記コマンド実行部が前記第二コマンドを実行しているか否かを判定し、前記コマンド実行部が前記第二コマンドを実行していると判定した場合に、前記第二コマンドの実行を中止させるコマンド実行中止部を備える
請求項１に記載のコマンド制御装置。
【請求項３】
前記コマンド制御装置は、さらに、
前記第二コマンドの実行を中止させた場合に、中止させた後の所定のタイミングに前記コマンド実行部による前記第二コマンドの実行を再開させる中断コマンド列復旧部を備える
請求項２に記載のコマンド制御装置。
【請求項４】
前記コマンド実行部は、さらに、
前記第一コマンドの実行が完了した時点が、前記所定の周期の開始時から前記閾値時間が経過した後であるか否かを判定し、前記閾値時間が経過した後であると判定した場合に前記第二コマンドの実行を禁止する
請求項１〜３のいずれか１項に記載のコマンド制御装置。
【請求項５】
前記所定の周期は、
前記コマンド制御装置が描画した画像を表示する表示装置の垂直同期間隔と同じである
請求項１〜４のいずれか１項に記載のコマンド制御装置。
【請求項６】
画面上の複数の描画領域に対して画像の描画のためのコマンドを実行するためのコマンド制御装置におけるコマンド制御方法であって、
前記コマンド制御装置は、
前記複数の描画領域の内の第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納される第一格納部と、
前記複数の描画領域の内の前記第一描画優先度より低い第二描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納される第二格納部とを備え、
前記コマンド制御方法は、
所定の周期ごとに、前記第一格納部に格納された前記第一コマンドを実行することで、前記第一描画領域に画像を描画する第一コマンド実行ステップと、
前記所定の周期の開始時から、前記所定の周期より短い閾値時間以内に前記第一コマンドの実行が完了したか否かを判定し、前記閾値時間以内に前記第一コマンドの実行が完了したと判定した場合に、前記第二格納部に格納された前記第二コマンドを実行することで前記第二描画領域に画像を描画する第二コマンド実行ステップとを含む
コマンド制御方法。
【請求項７】
画面上の複数の描画領域に対して画像の描画のためのコマンドを実行するための集積回路であって、
前記複数の描画領域の内の第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納される第一格納部と、
前記複数の描画領域の内の前記第一描画優先度より低い第二描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納される第二格納部と、
所定の周期ごとに、前記第一格納部に格納された前記第一コマンドを実行することで、前記第一描画領域に画像を描画するコマンド実行部とを備え、
前記コマンド実行部は、さらに、
前記所定の周期の開始時から、前記所定の周期より短い閾値時間以内に前記第一コマンドの実行が完了したか否かを判定し、前記閾値時間以内に前記第一コマンドの実行が完了したと判定した場合に、前記第二格納部に格納された前記第二コマンドを実行することで前記第二描画領域に画像を描画する
集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コマンド制御装置、コマンド制御方法および集積回路に関する。
【背景技術】
【０００２】
特許文献１は、ハードウェアが割り込み等に対応していない場合でも、優先度の高い処理が発生した時点から、当該処理の実行が開始される時点までの時間を短縮することができる描画制御装置を開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１８２１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、描画される画像の品質を向上させるコマンド制御装置などを提供する。
【課題を解決するための手段】
【０００５】
本開示におけるコマンド制御装置は、画面上の複数の描画領域に対して画像の描画のためのコマンドを実行するためのコマンド制御装置であって、前記複数の描画領域の内の第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納される第一格納部と、前記複数の描画領域の内の前記第一描画優先度より低い第二描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納される第二格納部と、所定の周期ごとに、前記第一格納部に格納された前記第一コマンドを実行することで、前記第一描画領域に画像を描画するコマンド実行部とを備え、前記コマンド実行部は、さらに、前記所定の周期の開始時から、前記所定の周期より短い閾値時間以内に前記第一コマンドの実行が完了したか否かを判定し、前記閾値時間以内に前記第一コマンドの実行が完了したと判定した場合に、前記第二格納部に格納された前記第二コマンドを実行することで前記第二描画領域に画像を描画する。
【発明の効果】
【０００６】
本開示におけるコマンド制御装置は、描画される画像の品質を向上させることができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態に係るコマンド制御装置の構成を示すブロック図。
【図２Ａ】実施の形態に係るコマンド制御装置の処理を示す第一の説明図。
【図２Ｂ】実施の形態に係るコマンド制御装置の処理を示す第二の説明図。
【図３】実施の形態に係るコマンド制御装置のコマンド実行処理を示すフローチャート。
【図４】実施の形態に係るコマンド制御装置の中断・復旧処理を示すフローチャート。
【図５】実施の形態に係るコマンド制御装置による一連の処理を示す説明図。
【図６】実施の形態に係るコマンド制御装置の別形態の構成を示すブロック図。
【発明を実施するための形態】
【０００８】
以下、適宜図面を参照しながら、実施の形態を詳細に説明する。但し、必要以上に詳細な説明は省略する場合がある。例えば、既によく知られた事項の詳細説明や実質的に同一の構成に対する重複説明を省略する場合がある。これは、以下の説明が不必要に冗長になるのを避け、当業者の理解を容易にするためである。
【０００９】
なお、発明者（ら）は、当業者が本開示を十分に理解するために添付図面および以下の説明を提供するのであって、これらによって特許請求の範囲に記載の主題を限定することを意図するものではない。
【００１０】
（実施の形態）
［１−１．構成］
図１は、本実施の形態に係るコマンド制御装置の構成を示すブロック図である。
【００１１】
図１において、コマンド制御装置１は、第一優先度コマンド列格納部１１と、第二優先度コマンド列格納部１２と、状態管理部１３と、第一優先度コマンド列実行開始部１４と、第二優先度コマンド列実行開始部１５と、コマンド列中断部１６と、中断コマンド列復旧部１７と、コマンド列実行部１８とを備える。
【００１２】
コマンド制御装置１は、画面上の複数の描画領域の描画領域毎に設定される描画の優先度に基づき、描画領域に画像を描画するコマンド列（以下、単にコマンドともいう）の実行を制御する。
【００１３】
第一優先度コマンド列格納部１１には、画面上の複数の描画領域の内の最も描画優先度が高い描画領域に画像を描画するためのコマンド列（以降、「第一優先度コマンド列」又は「第一コマンド」ともいう）が設定される。第一優先度コマンド列の優先度のことを第一描画優先度ともいう。つまり、第一優先度コマンド列格納部１１は、複数の描画領域の内の第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納されるレジスタ又は記憶領域である、といえる。第一優先度コマンド列格納部１１は、第一格納部に相当する。
【００１４】
より具体的には、第一優先度コマンド列格納部１１には、当該コマンド列が記憶されているメモリ（図示せず）の先頭アドレスおよび終了アドレスが設定される。第一優先度コマンド列格納部１１は、第一優先度コマンド列実行開始部１４からの要求に応じて、第一優先度コマンド列実行開始部１４に第一優先度コマンド列を送る。
【００１５】
ここで、コマンド列とは、コマンド列実行部１８が解釈可能な描画コマンド群のことである。コマンド列に含まれるコマンドは、例えば、点、線若しくは三角形などの描画プリミティブに関するコマンド、又は、参照するテクスチャ情報などを設定するコマンドを含む。
【００１６】
第二優先度コマンド列格納部１２には、画面上の複数の描画領域の内の最も描画優先度が高い描画領域とは異なる描画領域に画像を描画するためのコマンド列（以降、「第二優先度コマンド列」又は「第二コマンド」ともいう）が設定される。第二優先度コマンド列の優先度のことを第二描画優先度ともいう。つまり、第二優先度コマンド列格納部１２は、複数の描画領域の内の第一描画優先度より低い描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納されるレジスタ又は記憶領域である、といえる。第二優先度コマンド列格納部１２は、第二格納部に相当する。
【００１７】
より具体的には、第二優先度コマンド列格納部１２には、当該コマンド列が記憶されているメモリ（図示せず）の先頭アドレスおよび終了アドレスが設定される。画面上の複数の描画領域の内の最も描画優先度が高い描画領域とは異なる描画領域が複数ある場合、各描画領域に設定されるコマンド列間でアドレスジャンプを行うコマンドを当該コマンド列間に挿入することで、連結したコマンド列が生成され、その連結したコマンド列が第二優先度コマンド列として第二優先度コマンド列格納部１２に設定される。第二優先度コマンド列格納部１２は、第二優先度コマンド列実行開始部１５からの要求に応じて、第二優先度コマンド列格納部１２に第二優先度コマンド列を送る。
【００１８】
状態管理部１３は、コマンド列実行部１８によるコマンド列の実行状態を管理する。ここで、実行状態とは、コマンド列実行部１８が第一優先度コマンド列または第二優先度コマンド列を実行しているか否かをいう。実行状態とは、より詳細には、コマンド列を実行中であるか否か、また、コマンド列を実行している場合には、第一優先度コマンド列及び第二優先度コマンド列のいずれを実行しているかをいう。
【００１９】
また、状態管理部１３は、タイマーカウンタ（図示せず）を備え、タイマーカウンタがカウントするカウンタ値を計測する。タイマーカウンタは、カウンタ値「０」から開始し、クロックが立ち上がるたびに「１」をインクリメントし、カウンタ値が一定周期Ｔになるたびにカウンタ値を「０」に戻す。すなわち、カウンタ値は「０」以上「Ｔ−１」以下の値を遷移する。ここで、一定周期Ｔとは、少なくとも第一優先度コマンド列の実行が開始されてから実行が完了することが可能な時間であり、一例としては、表示装置の１画面に画像を描画する垂直同期期間である。言い換えると、一定周期Ｔが垂直同期期間である場合、必ず第一優先度コマンド列の実行が垂直同期期間中に完了することが保証されていることが前提となる。
【００２０】
第一優先度コマンド列実行開始部１４は、状態管理部１３が計測するタイマーカウンタのカウンタ値を参照し、一定周期Ｔの開始時（カウンタ値＝０）になると、第一優先度コマンド列格納部１１から第一優先度コマンド列を読み込むよう要求する。また、第一優先度コマンド列実行開始部１４は、第一優先度コマンド列格納部１１から第一優先度コマンド列を読み込むと、当該第一優先度コマンド列の実行開始をコマンド列実行部１８に指示する。その結果、一定周期が経過するたびに、複数の描画領域の内の最も描画優先度が高い描画領域への描画が必ず実行される。ここで、第一優先度コマンド列実行開始部１４による第一優先度コマンド列の実行開始トリガは、ソフトウェアからの実行指示によるものではなく、状態管理部１３が計測する一定周期Ｔのカウンタ値である。
【００２１】
第二優先度コマンド列実行開始部１５は、状態管理部１３が管理するコマンド列実行部１８によるコマンド列の実行状態および状態管理部１３が計測するタイマーカウンタのカウンタ値を参照する。第二優先度コマンド列実行開始部１５は、コマンド列実行部１８による第一優先度コマンド列の実行完了が一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）以内であれば、第二優先度コマンド列格納部１２から第二優先度コマンド列を読み込むよう要求する。また、第二優先度コマンド列実行開始部１５は、第二優先度コマンド列格納部１２から第二優先度コマンド列を読み込むと、当該第二優先度コマンド列の実行開始をコマンド列実行部１８に指示する。一方、第二優先度コマンド列実行開始部１５は、コマンド列実行部１８による第一優先度コマンド列の実行完了が一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）を超えていると、第二優先度コマンド列格納部１２から第二優先度コマンド列を読み込むよう要求しない。その結果、複数の描画領域の内の最も描画優先度が高い描画領域への描画が完了した時点で、一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）以内であれば、複数の描画領域の内の最も描画優先度が高い描画領域とは異なる描画領域への描画が実行される。ここで、第二優先度コマンド列実行開始部１５による第二優先度コマンド列の実行開始トリガは、ソフトウェアからの割り込み指示によるものではなく、状態管理部１３が管理するコマンド列実行部１８によるコマンド列の実行状態と状態管理部１３が計測する一定周期Ｔのカウンタ値である。
【００２２】
なお、上記所定の時間のことを閾値時間ともいう。
【００２３】
コマンド列中断部１６は、状態管理部１３が管理するコマンド列実行部１８によるコマンド列の実行状態および状態管理部１３が計測するタイマーカウンタのカウンタ値を参照する。コマンド列中断部１６は、コマンド列実行部１８による第二優先度コマンド列の実行完了時刻が、一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）を越える場合、コマンド列実行部１８に第二優先度コマンド列の実行中断を指示する。実行の中断のことを、実行の中止ということもある。コマンド列中断部１６は、コマンド実行中止部に相当する。
【００２４】
また、コマンド列中断部１６は、コマンド列実行部１８による第二優先度コマンド列の実行完了時刻が一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）以内である場合、その旨を中断コマンド列復旧部１７に通知する。
【００２５】
ここで、所定の時間（カウンタ値＝Ｔｍ）は、一定周期Ｔからカウンタ値＝Ｔｍを引いた「Ｔ−Ｔｍ」の時間に、第二優先度コマンド列の中断時までに当該第二優先度コマンド列の実行により行われた色設定やテクスチャ設定などの情報（以降、中断時描画コンテキスト）などを中断コマンド列復旧部１７が指定するメモリ領域に退避するために要する時間により定められる。ここで、コマンド列中断部１６による第二優先度コマンド列の中断トリガは、ソフトウェアからの実行指示によるものではなく、状態管理部１３が管理するコマンド列実行部１８によるコマンド列の実行状態と状態管理部１３が計測する一定周期Ｔのカウンタ値である。
【００２６】
中断コマンド列復旧部１７は、コマンド列中断部１６から第二優先度コマンド列の実行中断の通知を受けると、中断時描画コンテキストなどを指定のメモリ領域に退避する退避コマンド列を設定する。より具体的には、中断コマンド列復旧部１７は、中断時描画コンテキストに、第二優先度コマンド列がどこまで実行されたのかを示す第二優先度コマンド列の中断アドレスと、第二優先度コマンド列がどこまで実行されるべきだったのかを示す第二優先度コマンド列の終了アドレス（以降、中断時第二優先度コマンド列）とを加え、これらのアドレスを指定のメモリ領域に記憶する。
【００２７】
中断コマンド列復旧部１７は、退避コマンド列の実行完了後、中断時描画コンテキストを復旧し、中断時第二優先度コマンド列を中断時点から実行再開する復旧コマンド列を生成する。より具体的には、中断コマンド列復旧部１７は、第二優先度コマンド列格納部１２に対し、中断時第二優先度コマンド列を設定するとともに、中断時描画コンテキストを記憶したメモリ領域を通知する。第二優先度コマンド列実行開始部１５は、中断時第二優先度コマンド列が第二優先度コマンド列格納部１２に設定されている場合、ソフトウェアからの割り込み指示により、第二優先度コマンド列格納部１２から中断時第二優先度コマンド列を読み込むよう要求する。また、第二優先度コマンド列実行開始部１５は、第二優先度コマンド列格納部１２から中断時第二優先度コマンド列を読み込むと、指定のメモリ領域から中断時描画コンテキストを復旧するとともに、当該中断時第二優先度コマンド列の実行開始をコマンド列実行部１８に指示する。
【００２８】
コマンド列実行部１８は、第一優先度コマンド列実行開始部１４または第二優先度コマンド列実行開始部１５からの実行開始の指示を受けて、指定されたコマンド列を実行する。また、コマンド列実行部１８は、コマンド列中断部１６からの実行中断の指示を受けて、実行しているコマンド列の実行を中断する。コマンド列実行部１８は、コマンド実行部に相当する。
【００２９】
なお、コマンド制御装置１は、例えば、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。従来のＧＰＵは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）からのコマンドを受け付ける格納部（第一優先度コマンド列格納部１１に相当）を１つだけ有する。そのため、ＧＰＵが、描画優先度の異なる複数のコマンド列を受け付けることはできない。
【００３０】
一方、１画像内に複雑な描画を行うことを想定する場合、コマンド列が多くなり、１画面の描画のために予め定められた時間内に、行うべき描画を実行完了することが困難となり、その結果、ＧＰＵが生成及び表示する画像にフレーム落ちが生ずるという問題が生じ得る。また、この問題は、描画すべき画像のサイズが大型化すればさらに顕著になる。
【００３１】
本実施の形態のコマンド制御装置１は、描画優先度の異なる複数のコマンド列を、第一優先度コマンド列格納部１１及び第二優先度コマンド列格納部１２という複数の格納部により受け付ける。そして、コマンド制御装置１は、コマンド列それぞれの描画優先度に応じて当該コマンド列の実行し、また、必要に応じて適切なタイミングでコマンド列の実行を中止することで、フレーム落ちを抑制することができる。
【００３２】
［１−２．動作］
以上のように構成されたコマンド制御装置１について、その動作を以下に説明する。
【００３３】
図２Ａ及び図２Ｂは、本実施の形態に係るコマンド制御装置の処理を示す説明図である。図２Ａに示すように、表示装置の１画面に４つの描画領域（ウィンドウＡ，Ｂ，Ｃ，Ｄ）が表示され、その内のウィンドウＢがカーソル等で選択されたという状況を例に、コマンド制御装置１の動作を説明する。
【００３４】
このとき、図２Ｂに示すように、第一優先度コマンド列格納部１１には、選択されたウィンドウＢを４つの描画領域の内の最も描画優先度が高い描画領域とし、ウィンドウＢを描画するためのコマンド列が、第一優先度コマンド列として設定されている。第一優先度コマンド列格納部１１は、図２Ｂにおけるメモリ領域のアドレス３１からアドレス３２に相当する。なお、単に「アドレス」という場合は、メモリ領域上のアドレス（いわゆるメモリアドレス）を意味する。
【００３５】
また、第二優先度コマンド列格納部１２には、４つの描画領域の内の最も描画優先度が高い描画領域とは異なる描画領域として、ウィンドウＡ，Ｃ，Ｄを描画するためのコマンド列が第二優先度コマンド列として設定されている。ウィンドウＡ，Ｃ，Ｄを描画するためのコマンド列は、アドレスジャンプコマンドが挿入された形になっている。第二優先度コマンド列格納部１２は、図２Ｂにおけるメモリ領域のアドレス３３からアドレス３４に相当する。
【００３６】
また、第二優先度コマンド列格納部１２には、当該第二優先度コマンド列の実行中断時に設定される中断時第二優先度コマンド列がメモリ領域のアドレス３５からアドレス３４に、中断時描画コンテキストがメモリ領域のアドレス３６からアドレス３７に示されている。
【００３７】
なお、４つの描画領域のうちカーソル等で選択されるウィンドウは、例えばユーザの操作により動的に変動する。このように変動があった場合には、動的に、新たにカーソル等で選択されたウィンドウに対する描画コマンド列が新たに第一優先度コマンド列になる。
【００３８】
なお、選択されるウィンドウは、１つだけに限定されるわけではなく、２以上であってもよい。
【００３９】
図３〜５を参照しながら、本実施の形態に係るコマンド制御装置の処理について説明する。なお、図３及び図４にコマンド制御装置の処理を示し、図５に、経過時間に対する一連の処理の流れを示す。図５には、各処理に対応する図３及び図４の処理ステップを併せて示している。図５において、コマンド列実行部１８による第一優先度コマンド列の実行（第一優先度コマンド列を実行している期間）を符号Ｐ１で示し、コマンド列実行部１８による第二優先度コマンド列の実行（第二優先度コマンド列を実行している期間）を符号Ｐ２で示し、コマンド列中断部１６による中断・復旧処理の実行（中断・復旧処理を実行している期間）を符号Ｐ３でしめす。
【００４０】
図３は、本実施の形態に係るコマンド制御装置のコマンド実行処理を示すフローチャートである。
【００４１】
ステップＳ２１において、第一優先度コマンド列実行開始部１４は、状態管理部１３が計測するタイマーカウンタのカウンタ値を参照し、カウンタ値が一定周期Ｔの開始時（カウンタ値＝０）になったか否かを判定する。
【００４２】
ステップＳ２１において、タイマーカウンタのカウンタ値が一定周期Ｔの開始時になったと判定された場合（ステップＳ２１でＹｅｓ）、ステップＳ２２へ進む。タイマーカウンタのカウンタ値が一定周期Ｔの開始時になっていないと判定された場合（ステップＳ２１でＮｏ）、再びステップＳ２１を実行する。つまり、第一優先度コマンド列実行開始部１４は、タイマーカウンタのカウンタ値が一定周期Ｔの開始時になるまでステップＳ２１で待機する。
【００４３】
ステップＳ２２において、第一優先度コマンド列実行開始部１４は、第一優先度コマンド列格納部１１から第一優先度コマンド列（より具体的には、第一優先度コマンド列が記憶されたアドレス３１からアドレス３２）を読み込むよう要求する。第一優先度コマンド列実行開始部１４は、第一優先度コマンド列格納部１１から第一優先度コマンド列を読み込むと、当該第一優先度コマンド列の実行開始をコマンド列実行部１８に指示する。コマンド列実行部１８は、第一優先度コマンド列実行開始部１４から第一優先度コマンド列の実行開始の指示を受けると、アドレス３１からアドレス３２に記憶された第一優先度コマンド列の実行を開始する。第一優先度コマンド列実行開始部１４は、第一優先度コマンド列の実行を開始すると、次の一定周期Ｔの開始時（カウンタ値＝０）に次の第一優先度コマンド列の実行を開始するまで待機する。
【００４４】
ステップＳ２３において、第二優先度コマンド列実行開始部１５は、第一優先度コマンド列の実行が完了したか否かを判定する。具体的には、第二優先度コマンド列実行開始部１５は、状態管理部１３が管理するコマンド列実行部１８によるコマンド列の実行状態および状態管理部１３が計測するタイマーカウンタのカウンタ値を参照する。第二優先度コマンド列実行開始部１５は、コマンド列実行部１８による第一優先度コマンド列の実行が完了したと判定した場合（ステップＳ２３でＹｅｓ）、ステップＳ２４に進む。一方、第一優先度コマンド列の実行が完了していない場合、再びステップＳ２３を実行する。
【００４５】
ステップＳ２４において、第二優先度コマンド列実行開始部１５は、タイマーカウンタのカウンタ値が一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）以内であるか否かを判定する。タイマーカウンタのカウンタ値が所定の時間以内である場合（ステップＳ２４でＹｅｓ）、ステップＳ２５に進む。一方、上記カウンタ値が所定の時間以内でない（つまり、所定の時間を超えている）場合（ステップＳ２４でＮｏ）、ステップＳ２１に進む。また、第二優先度コマンド列が設定されていない場合にも、ステップＳ２１に進む。
【００４６】
なお、上記カウンタ値Ｔｍは、カウンタ値が０から当該Ｔｍまでカウントアップする間にコマンド列実行部１８が第一優先度コマンド列を実行完了できるように、予め定められているものとする。
【００４７】
上記のようにステップＳ２４からステップＳ２１に進む場合、第二優先度コマンド列実行開始部１５は、第二優先度コマンド列の実行開始を行わず、次の一定周期Ｔにおいて、次の第一優先度コマンド列の実行が完了まで待機する。
【００４８】
ステップＳ２５において、第二優先度コマンド列実行開始部１５は、第二優先度コマンド列格納部１２から第二優先度コマンド列（より具体的には、第二優先度コマンド列が記憶されたアドレス３３からアドレス３４）を読み込むよう要求する。ただし、中断時第二優先度コマンド列が第二優先度コマンド列格納部１２に設定されている場合、第二優先度コマンド列実行開始部１５は、第二優先度コマンド列格納部１２から中断時第二優先度コマンド列（より具体的には、中断時第二優先度コマンド列が記憶されたアドレス３５からアドレス３４）を読み込むよう要求する。また、第二優先度コマンド列実行開始部１５は、第二優先度コマンド列格納部１２から中断時第二優先度コマンド列を読み込むと、指定のメモリ領域（より具体的には、中断時描画コンテキストが記憶されたアドレス３６からアドレス３７）から中断時描画コンテキストを復旧するとともに、当該中断時第二優先度コマンド列の実行開始をコマンド列実行部１８に指示する。
【００４９】
第二優先度コマンド列実行開始部１５は、第二優先度コマンド列格納部１２から第二優先度コマンド列を読み込むと、当該第二優先度コマンド列の実行開始をコマンド列実行部１８に指示する。コマンド列実行部１８は、第二優先度コマンド列実行開始部１５から第二優先度コマンド列の実行開始の指示を受けると、アドレス３３からアドレス３４に記憶された第二優先度コマンド列の実行を開始する。
【００５０】
また、第二優先度コマンド列実行開始部１５は、中断時第二優先度コマンド列が第二優先度コマンド列格納部１２に設定されている場合、ソフトウェアからの割り込み指示により、第二優先度コマンド列格納部１２から中断時第二優先度コマンド列（より具体的には、中断時第二優先度コマンド列が記憶されたアドレス３５からアドレス３４）を読み込むよう要求する。また、第二優先度コマンド列実行開始部１５は、第二優先度コマンド列格納部１２から中断時第二優先度コマンド列を読み込むと、指定のメモリ領域（より具体的には、中断時描画コンテキストが記憶されたアドレス３６からアドレス３７）から中断時描画コンテキストを復旧するとともに、当該中断時第二優先度コマンド列の実行開始をコマンド列実行部１８に指示する。
【００５１】
第二優先度コマンド列実行開始部１５は、第二優先度コマンド列の実行を開始すると、次の一定周期Ｔにおいて、次の第一優先度コマンド列の実行が完了まで待機する。
【００５２】
ステップＳ２６において、コマンド列中断部１６は、状態管理部１３が管理するコマンド列実行部１８によるコマンド列の実行状態および状態管理部１３が計測するタイマーカウンタのカウンタ値を参照し、一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）が経過したか否かを判定する。
【００５３】
ステップＳ２６において一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）が経過していないと判定された場合（ステップＳ２６でＮｏ）、ステップＳ２７に進む。一方、一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）が経過したと判定された場合（ステップＳ２６でＹｅｓ）、ステップＳ２８に進む。
【００５４】
ステップＳ２７において、コマンド列実行部１８は、コマンド列実行部１８に第二優先度コマンド列の実行中断を指示することなく、第二優先度コマンド列の実行を継続する。また、コマンド列実行部１８は、第二優先度コマンド列の実行が完了したか否かを判定する。第二優先度コマンド列の実行が完了したと判定された場合（ステップＳ２７でＹｅｓ）には、ステップＳ２１に進む。一方、第二優先度コマンド列の実行が完了していないと判定された場合（ステップＳ２７でＮｏ）には、ステップＳ２６に進む。
【００５５】
ステップＳ２８において、コマンド列中断部１６は、中断・復旧処理を実行する。中断・復旧処理の詳細は、後で詳しく説明する。
【００５６】
以上のステップＳ２１からステップＳ２８までの一連の処理により、コマンド列実行部１８が、一定周期Ｔごとに、一定周期Ｔの開始時から第一優先度コマンド列を実行することができる。
【００５７】
なお、図５の（ａ）に示される処理の流れは、第一優先度コマンドの実行Ｐ１の開始（ステップＳ２２）並びに実行Ｐ１の完了（ステップＳ２３でＹｅｓ）、及び、第二優先度コマンド列の実行Ｐ２の開始（ステップＳ２５）の後に、所定の時間内に第二優先度コマンド列の実行Ｐ２を完了（ステップＳ２７でＹｅｓ）した場合を示す。
【００５８】
また、図５の（ｂ）に示される処理の流れは、第一優先度コマンドの実行Ｐ１開始（ステップＳ２２）並びに実行Ｐ１の完了（ステップＳ２３でＹｅｓ）、及び、第二優先度コマンド列の実行Ｐ２の開始（ステップＳ２５）の後に、第二優先度コマンド列の実行中に所定の時間が経過した（ステップＳ２７でＮｏ）したので、中断・復旧処理の実行Ｐ３をした場合を示す。
【００５９】
また、図５の（ｃ）に示される処理の流れは、第一優先度コマンドの実行Ｐ１の開始（ステップＳ２２）の後、第一優先度コマンドの実行Ｐ１の完了（ステップＳ２３でＹｅｓ）が所定の時間の経過後（ステップＳ２４でＮｏ）となった場合を示す。
【００６０】
このように、図５の（ａ）〜（ｃ）のいずれの場合でも、時刻０及びＴにおいて、第一優先度コマンド列の実行Ｐ１が行われる。また、一定周期Ｔ内で第二優先度コマンド列の実行Ｐ２のための時間が確保できる場合に第二優先度コマンド列の実行Ｐ２が行われる。さらに、第二優先度コマンド列の実行Ｐ２の最中に、一定周期Ｔの終了までに実行Ｐ２が完了しないと予想される場合に実行Ｐ２を中止することにより、時刻Ｔにおける第一優先度コマンド列の実行Ｐ１を妨げないようにする。このようにして、コマンド制御装置１により、描画される画像の品質を向上させる。
【００６１】
図４は、本実施の形態に係るコマンド制御装置の中断・復旧処理を説明するためのフローチャートである。
【００６２】
ステップＳ４１において、コマンド列中断部１６は、状態管理部１３が管理するコマンド列実行部１８によるコマンド列の実行状態および状態管理部１３が計測するタイマーカウンタのカウンタ値を参照する。コマンド列中断部１６は、コマンド列実行部１８による第二優先度コマンド列の実行完了が一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）を越える場合、コマンド列実行部１８に第二優先度コマンド列の実行の中断（又は、中止）を指示する。また、コマンド列中断部１６は、コマンド列実行部１８による第二優先度コマンド列の実行完了が一定周期Ｔの開始時（カウンタ値＝０）から所定の時間（カウンタ値＝Ｔｍ）を超える場合、その旨を中断コマンド列復旧部１７に通知する。
【００６３】
ステップＳ４２において、中断コマンド列復旧部１７は、コマンド列中断部１６から第二優先度コマンド列の実行の中断の通知を受けると、中断時描画コンテキストなどを指定のメモリ領域に退避するための退避コマンド列を設定する。より具体的には、中断コマンド列復旧部１７は、中断時描画コンテキストに中断時第二優先度コマンド列を加え、メモリ領域のアドレス３６からアドレス３７に中断時描画コンテキストとして記憶する。
【００６４】
ステップＳ４３において、中断コマンド列復旧部１７は、退避コマンド列の実行完了後、中断時描画コンテキストを復旧し、中断時第二優先度コマンド列を中断時点から実行再開する復旧コマンド列を設定する。より具体的には、中断コマンド列復旧部１７は、第二優先度コマンド列格納部１２に対し、中断時第二優先度コマンド列（より具体的には、中断時第二優先度コマンド列が記憶されたアドレス３５からアドレス３４）を設定するとともに、中断時描画コンテキストを記憶したアドレス３６からアドレス３７を通知する。
【００６５】
なお、第二優先度コマンド列実行開始部１５は、上記で中断した、第二優先度コマンド列の実行を、所定のタイミングで復旧する。所定のタイミングとは、例えば、ソフトウェアからの割り込み指示があったタイミングである。
【００６６】
具体的には、第二優先度コマンド列実行開始部１５は、中断時第二優先度コマンド列が第二優先度コマンド列格納部１２に設定されている場合、ソフトウェアからの割り込み指示により、第二優先度コマンド列格納部１２から中断時第二優先度コマンド列（より具体的には、中断時第二優先度コマンド列が記憶されたアドレス３５からアドレス３４）を読み込むよう要求し、第二優先度コマンド列格納部１２から中断時第二優先度コマンド列を読み込むと、指定のメモリ領域から中断時描画コンテキストを復旧するとともに、当該中断時第二優先度コマンド列の実行開始をコマンド列実行部１８に指示する。なお、第二優先度コマンド列の実行の復旧は、第二優先度コマンド列の実行を中断したフレームの時間的に次のフレームに対する第一優先度コマンド列の実行の後に行われる。
【００６７】
［１−３．構成の変形例］
図６は、本実施の形態に係るコマンド制御装置の別形態（コマンド制御装置２）の構成を示すブロック図である。
【００６８】
図６に示されるように、コマンド制御装置２は、機能ブロック２Ａ及び２Ｂを備える。
【００６９】
機能ブロック２Ａは、高優先度コマンドアドレス設定レジスタ２１と、低優先度コマンドアドレス設定レジスタ２２と、ステータスレジスタ２３Ａと、カウントレジスタ２３Ｂと、高優先度コマンド実行開始回路２４と、低優先度コマンド実行開始回路２５と、中断割込回路２６と、グラフィックス処理回路２８とを備える。なお、機能ブロック２Ａは、ハードウェアにより実現されることが想定される。
【００７０】
高優先度コマンドアドレス設定レジスタ２１は、第一優先度コマンド列格納部１１に相当する。
【００７１】
低優先度コマンドアドレス設定レジスタ２２は、第二優先度コマンド列格納部１２に相当する。
【００７２】
ステータスレジスタ２３Ａ及びカウントレジスタ２３Ｂは、状態管理部１３に相当する。
【００７３】
高優先度コマンド実行開始回路２４は、第一優先度コマンド列実行開始部１４に相当する。
【００７４】
低優先度コマンド実行開始回路２５は、第二優先度コマンド列実行開始部１５に相当する。
【００７５】
中断割込回路２６は、コマンド列中断部１６に相当する。
【００７６】
グラフィックス処理回路２８は、コマンド列実行部１８に相当する。
【００７７】
機能ブロック２Ｂは、コンテキスト退避復旧モジュール２７を備える。なお、機能ブロック２Ｂは、ソフトウェア、より具体的には、ドライバソフトウェアにより実現されることが想定される。
【００７８】
コンテキスト退避復旧モジュール２７は、中断コマンド列復旧部１７に相当する。
【００７９】
このようなコマンド制御装置２により、上記コマンド制御装置１と同様の効果を奏する。
【００８０】
［１−４．効果等］
以上のように、本実施の形態に係るコマンド制御装置１は、画面上の複数の描画領域に対して画像の描画のためのコマンドを実行するためのコマンド制御装置１であって、複数の描画領域の内の第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納される第一優先度コマンド列格納部１１と、複数の描画領域の内の第一描画優先度より低い第二描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納される第二優先度コマンド列格納部１２と、所定の周期ごとに、第一優先度コマンド列格納部１１に格納された第一コマンドを実行することで、第一描画領域に画像を描画するコマンド列実行部１８とを備え、コマンド列実行部１８は、さらに、所定の周期の開始時から、所定の周期より短い閾値時間以内に第一コマンドの実行が完了したか否かを判定し、閾値時間以内に第一コマンドの実行が完了したと判定した場合に、第二優先度コマンド列格納部１２に格納された第二コマンドを実行することで第二描画領域に画像を描画する。
【００８１】
これにより、コマンド制御装置１は、所定の周期のたびに第一コマンドを実行する。また、所定の周期の中で、第一コマンドを実行した後で第二コマンドを実行する時間を確保できる場合に第二コマンドを実行する。このようにすることで、所定の周期のたびに第一コマンドを実行することができるので、第一描画領域の描画品質を高く維持するとともに、第二描画領域の描画品質を向上させることができる。よって、コマンド制御装置１は、描画される画像の品質を向上させることができる。
【００８２】
また、コマンド制御装置１は、複数の描画領域において描画領域毎の描画優先度が動的に変わるような場合であっても、最も描画優先度が高い描画領域の描画の表示品位を向上することができる。
【００８３】
また、コマンド制御装置１は、さらに、所定の周期の開始時から閾値時間が経過した時点で、コマンド列実行部１８が第二コマンドを実行しているか否かを判定し、コマンド列実行部１８が第二コマンドを実行していると判定した場合に、第二コマンドの実行を中止させるコマンド列中断部１６を備えてもよい。
【００８４】
これにより、コマンド制御装置１は、第二コマンドを実行している最中に、実行している第二コマンドが当該周期の中で完了することができない可能性がある場合に、第二コマンドの実行を中止する。そして、コマンド制御装置１は、所定の周期の開始時に第一コマンドの実行を必ず開始できるので、複数の描画領域において描画領域毎の描画優先度が動的に変わるような場合であっても、最も描画優先度が高い描画領域の描画の表示品位を向上することができる。
【００８５】
また、コマンド制御装置１は、さらに、第二コマンドの実行を中止させた場合に、中止させた後の所定のタイミングにコマンド列実行部１８による第二コマンドの実行を再開させる中断コマンド列復旧部１７を備えてもよい。
【００８６】
これにより、コマンド制御装置１は、画像を描画している途中に中止した場合に、中止した処理を再開させることで、描画していた画像を完成させることができる。よって、コマンド制御装置は、描画される画像の品質を向上させることができる。
【００８７】
また、コマンド列実行部１８は、さらに、第一コマンドの実行が完了した時点が、所定の周期の開始時から閾値時間が経過した後であるか否かを判定し、閾値時間が経過した後であると判定した場合に第二コマンドの実行を禁止してもよい。
【００８８】
これにより、コマンド制御装置１は、第一コマンドの実行後に第二コマンドの実行のための時間が確保することができない場合に、第二コマンドの実行を行わずに、次の所定の周期における第一コマンドの実行のために待機する。その結果、コマンド制御装置１は、次の所定の周期に、より確実に第一コマンドを実行することができる。
【００８９】
また、所定の周期は、コマンド制御装置１が描画した画像を表示する表示装置の垂直同期間隔と同じであるとしてもよい。
【００９０】
これにより、コマンド制御装置は、表示装置の垂直同期間隔ごとに第一コマンドの実行を行う。よって、コマンド制御装置は、描画される画像の品質を向上させることができる。
【００９１】
また、本実施の形態に係るコマンド制御方法は、画面上の複数の描画領域に対して画像の描画のためのコマンドを実行するためのコマンド制御装置１におけるコマンド制御方法であって、コマンド制御装置１は、複数の描画領域の内の第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納される第一優先度コマンド列格納部１１と、複数の描画領域の内の第一描画優先度より低い第二描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納される第二優先度コマンド列格納部１２とを備え、コマンド制御方法は、所定の周期ごとに、第一優先度コマンド列格納部１１に格納された第一コマンドを実行することで、第一描画領域に画像を描画する第一コマンド実行ステップと、所定の周期の開始時から、所定の周期より短い閾値時間以内に第一コマンドの実行が完了したか否かを判定し、閾値時間以内に第一コマンドの実行が完了したと判定した場合に、第二優先度コマンド列格納部１２に格納された第二コマンドを実行することで第二描画領域に画像を描画する第二コマンド実行ステップとを含む。
【００９２】
これにより、上記コマンド制御装置と同様の効果を奏する。
【００９３】
また、本実施の形態に係る集積回路は、画面上の複数の描画領域に対して画像の描画のためのコマンドを実行するための集積回路であって、複数の描画領域の内の第一描画優先度を有する第一描画領域に画像を描画するための第一コマンドが格納される第一優先度コマンド列格納部１１と、複数の描画領域の内の第一描画優先度より低い第二描画優先度を有する第二描画領域に画像を描画するための第二コマンドが格納される第二優先度コマンド列格納部１２と、所定の周期ごとに、第一優先度コマンド列格納部１１に格納された第一コマンドを実行することで、第一描画領域に画像を描画するコマンド列実行部１８とを備え、コマンド列実行部１８は、さらに、所定の周期の開始時から、所定の周期より短い閾値時間以内に第一コマンドの実行が完了したか否かを判定し、閾値時間以内に第一コマンドの実行が完了したと判定した場合に、第二優先度コマンド列格納部１２に格納された第二コマンドを実行することで第二描画領域に画像を描画する。
【００９４】
これにより、上記コマンド制御装置と同様の効果を奏する。
【００９５】
以上のように、本開示における技術の例示として、実施の形態を説明した。そのために、添付図面および詳細な説明を提供した。
【００９６】
したがって、添付図面および詳細な説明に記載された構成要素の中には、課題解決のために必須な構成要素だけでなく、上記実装を例示するために、課題解決のためには必須でない構成要素も含まれ得る。そのため、それらの必須ではない構成要素が添付図面や詳細な説明に記載されていることをもって、直ちに、それらの必須ではない構成要素が必須であるとの認定をするべきではない。
【００９７】
また、上述の実施の形態は、本開示における技術を例示するためのものであるから、特許請求の範囲またはその均等の範囲において種々の変更、置き換え、付加、省略などを行うことができる。
【産業上の利用可能性】
【００９８】
本開示は、画面上の複数の描画領域の描画領域毎に画像を描画するコマンド列の実行を制御するコマンド列制御技術として有用である。
【符号の説明】
【００９９】
１、２    コマンド制御装置
１１  第一優先度コマンド列格納部
１２  第二優先度コマンド列格納部
１３  状態管理部
１４  第一優先度コマンド列実行開始部
１５  第二優先度コマンド列実行開始部
１６  コマンド列中断部
１７  中断コマンド列復旧部
１８  コマンド列実行部
【図１】
2015195003.tif 000003
【図２Ａ】
2015195003.tif 000004
【図２Ｂ】
2015195003.tif 000005
【図３】
2015195003.tif 000006
【図４】
2015195003.tif 000007
【図５】
2015195003.tif 000008
【図６】
2015195003.tif 000009