(57)【要約】【課題】描画プログラムから発行される描画コマンドの種類に偏りが生じても、現在使用されていないハードウェアリソースを有効に活用して、高速に描画処理を実施することができるようにする。【解決手段】複数の描画プロセッサ３の負荷状況を判定し、その負荷状況と描画コマンド保持部１２により保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサ３を決定する割当プロセッサ決定部１３を設け、割当プロセッサ決定部１３により決定された描画プロセッサ３が、本来、その描画コマンドを処理する描画プロセッサではない場合、その描画コマンドを上記描画プロセッサ３が対応可能な描画コマンドに変換する。【選択図】図１
2010218130.tif 000002
【特許請求の範囲】
【請求項１】
描画処理を実行する複数の描画プロセッサと、描画プログラムから発行される描画コマンドを保持する描画コマンド保持手段と、上記複数の描画プロセッサの負荷状況を判定し、上記負荷状況と上記描画コマンド保持手段により保持されている描画コマンドの種類に応じて、上記描画コマンドを割り当てる描画プロセッサを決定する割当プロセッサ決定手段と、上記割当プロセッサ決定手段により決定された描画プロセッサが、本来、上記描画コマンドを処理する描画プロセッサではない場合、上記描画コマンドを上記描画プロセッサが対応可能な描画コマンドに変換する描画コマンド変換手段とを備えた描画制御装置。
【請求項２】
描画プログラムから発行される描画コマンドに優先度を付加する優先度付加手段を設け、描画コマンド保持手段が描画コマンドに付加されている優先度を考慮して、描画コマンドの実行順序を決定し、実行順序に対応するキューに上記描画コマンドを格納することを特徴とする請求項１記載の描画制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の描画プロセッサの負荷分散を実現して、図形や文字などを高速に描画する描画制御装置に関するものである。
【背景技術】
【０００２】
図形や文字などを描画する描画制御装置が、例えば、２Ｄ（二次元）用のアクセラレータ（描画プロセッサ）と、３Ｄ（三次元）用のアクセラレータ（描画プロセッサ）とを実装している場合、２Ｄ描画では、２Ｄ用のアクセラレータを使用し、３Ｄ描画では、３Ｄ用のアクセラレータを使用するのが一般である。
したがって、描画プログラムから２Ｄ描画コマンドが発行されると、その２Ｄ描画コマンドを２Ｄ用のアクセラレータに割り当てることで、２Ｄ用のアクセラレータが２Ｄ描画を実施し、描画プログラムから３Ｄ描画コマンドが発行されると、その３Ｄ描画コマンドを３Ｄ用のアクセラレータに割り当てることで、３Ｄ用のアクセラレータが３Ｄ描画を実施する。
【０００３】
このため、例えば、２Ｄ描画コマンドが大量に発行されて、２Ｄ用のアクセラレータの負荷が高く、３Ｄ用のアクセラレータの負荷が低い場合でも、描画プログラムから新たに発行された２Ｄ描画コマンドが３Ｄ用のアクセラレータに割り当てられることはなく、２Ｄ用のアクセラレータに割り当てられるので、現在使用されていないハードウェアリソースを有効に活用することができない。
【０００４】
以下の特許文献１には、描画プログラムから２Ｄ描画コマンドが発行されると、その２Ｄ描画コマンドを３Ｄ用のアクセラレータが対応可能な３Ｄ描画コマンドに変換することで、３Ｄ用のアクセラレータが描画することができるようにしている描画制御装置が開示されている。
ただし、この描画制御装置では、現在使用されていないハードウェアリソースを有効に活用するために、負荷が低いアクセラレータに描画コマンドを割り当てる技術については開示されていない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００８−５２４７５６号公報（段落番号［００１４］から［００２９］）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の描画制御装置は以上のように構成されているので、例えば、描画プログラムから２Ｄ描画コマンドが発行されたときに、２Ｄ用のアクセラレータの負荷が低ければ、その２Ｄ描画コマンドを２Ｄ用のアクセラレータに割り当てることで、高速に２Ｄ描画を実施する一方、２Ｄ用のアクセラレータの負荷が高ければ、その２Ｄ描画コマンドを３Ｄ描画コマンドに変換して３Ｄ用のアクセラレータに割り当てることで、負荷分散を図るなどの処理を実施することができない。このため、現在使用されていないハードウェアリソースを有効に活用することができず、描画プログラムから発行される描画コマンドの種類に偏りが生じると、高速に描画処理を実施することができなくなるなどの課題があった。
【０００７】
この発明は上記のような課題を解決するためになされたもので、描画プログラムから発行される描画コマンドの種類に偏りが生じても、現在使用されていないハードウェアリソースを有効に活用して、高速に描画処理を実施することができる描画制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係る描画制御装置は、複数の描画プロセッサの負荷状況を判定し、その負荷状況と描画コマンド保持手段により保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサを決定する割当プロセッサ決定手段を設け、描画コマンド変換手段が、割当プロセッサ決定手段により決定された描画プロセッサが、本来、その描画コマンドを処理する描画プロセッサではない場合、その描画コマンドを上記描画プロセッサが対応可能な描画コマンドに変換するようにしたものである。
【発明の効果】
【０００９】
この発明によれば、複数の描画プロセッサの負荷状況を判定し、その負荷状況と描画コマンド保持手段により保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサを決定する割当プロセッサ決定手段を設け、描画コマンド変換手段が、割当プロセッサ決定手段により決定された描画プロセッサが、本来、その描画コマンドを処理する描画プロセッサではない場合、その描画コマンドを上記描画プロセッサが対応可能な描画コマンドに変換するように構成したので、描画プログラムから発行される描画コマンドの種類に偏りが生じても、現在使用されていないハードウェアリソースを有効に活用して、高速に描画処理を実施することができる効果がある。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１による描画制御装置を示す構成図である。
【図２】描画コマンド保持部１２のキューに保持されている描画コマンドと、その描画コマンドによる描画イメージとを示す説明図である。
【図３】描画コマンド変換部１４に実装されている変換手段を示す説明図である。
【図４】この発明の実施の形態２による描画制御装置を示す構成図である。
【図５】描画コマンド保持部１２のキューに保持されている描画コマンドと、その描画コマンドによる描画イメージとを示す説明図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１はこの発明の実施の形態１による描画制御装置を示す構成図である。
図１において、演算プロセッサ１は例えばＣＰＵなどの中央処理装置である。
システムメモリ２は演算プロセッサ１の命令コードやデータを保持するメモリである。
描画プロセッサ３は例えばアクセラレータ、グラフィックスエンジンやＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などと呼ばれる描画用のハードウェアであり、文字や図形の描画処理を実施する。
この実施の形態１では、描画プロセッサ３として、例えば、直線描画や領域転送などの２次元描画処理を行う２Ｄ用描画プロセッサと、３次元グラフィックス処理を行う３Ｄ用描画プロセッサと、ベクタグラフィックス処理などを扱えるベクタ用描画プロセッサとが実装されているものとする。
描画メモリ４は描画プロセッサ３の描画処理に使用されるメモリである。
【００１２】
描画プログラム１１は演算プロセッサ１により実行されるアプリケーションプログラムであって、２Ｄ描画コマンド、３Ｄ描画コマンド、ベクタ描画コマンド（ベクタグラフィックスコマンド）などが記述されている。
演算プロセッサ１により描画プログラム１１が実行されることで、２Ｄ描画コマンド、３Ｄ描画コマンド、ベクタ描画コマンドなどが発行される。
描画コマンド保持部１２は描画コマンドを保持する複数のキーを備えており、描画プログラム１１から発行される描画コマンドを任意のキーに格納する処理を実施する。なお、描画コマンド保持部１２は描画コマンド保持手段を構成している。
【００１３】
割当プロセッサ決定部１３は複数の描画プロセッサ３の負荷状況を判定し、その負荷状況と描画コマンド保持部１２のキューにより保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサ３を決定する処理を実施する。なお、割当プロセッサ決定部１３は割当プロセッサ決定手段を構成している。
描画コマンド変換部１４は割当プロセッサ決定部１３により決定された描画プロセッサ３が、本来、上記描画コマンドを処理する描画プロセッサではない場合（例えば、描画コマンド保持部１２のキューにより保持されている描画コマンドの種類が２Ｄ描画コマンドであり、割当プロセッサ決定部１３により決定された描画プロセッサ３が３Ｄ用描画プロセッサやベクタ用描画プロセッサである場合）、その描画コマンドを上記描画プロセッサ３が対応可能な描画コマンドに変換する処理を実施する。なお、描画コマンド変換部１４は描画コマンド変換手段を構成している。
【００１４】
図１の描画制御装置の各処理部は、ＣＰＵ、メモリやＬＳＩなどのハードウェアとソフトウェアの組み合わせで実現されるものである。
したがって、各処理部がハードウェアやソフトウェアの単体で実現される場合のほか、ハードウェアやソフトウェアの組み合わせによって実現することができることは明らかであり、いずれかに限定されるものではない。
【００１５】
次に動作について説明する。
演算プロセッサ１には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などが実装されており、ＯＳ上で複数のアプリケーションや複数のタスクが動作しており、その一つが描画プログラム１１である。
演算プロセッサ１が、描画プログラム１１を実行することで、描画コマンドが発行される。
即ち、描画内容が２Ｄ描画の場合には２Ｄ描画コマンドが発行され、３Ｄ描画の場合には３Ｄ描画コマンドが発行される。また、ベクタグラフィックス描画の場合にはベクタ描画コマンドが発行される。
一般に、２Ｄ描画コマンドはＸＷｉｎｄｏｗをはじめとするＷｉｎｄｏｗｓ（登録商標）描画関連の描画コマンドであり、３Ｄ描画コマンドはＯｐｅｎＧＬやＤｉｒｅｃｔ３Ｄと呼ばれるコマンドであり、ベクタ描画コマンドはＯｐｅｎＶＧと呼ばれる描画コマンドである。
【００１６】
描画コマンド保持部１２は、描画プログラム１１から描画コマンドが発行されると、その描画コマンドを入力して、その描画コマンドを任意のキーに格納する。
このとき、描画コマンド保持部１２は、描画プログラム１１から発行された描画コマンドを入力順に並べて管理している。
【００１７】
割当プロセッサ決定部１３は、描画コマンド保持部１２のキューに保持されている描画コマンドを解析して、描画プロセッサ３の使用状況（負荷状況）を判定するとともに、描画コマンドが並列動作可能か否かを判定する。
並列動作可能か否かは、以下の状況で判断する。
【００１８】
例えば、図２（Ａ）に示すように、描画コマンド保持部１２のキューに対して描画コマンド“１”から“５”までがキューイングされ、これらの描画コマンドによる描画イメージが「Ｐ１」から「Ｐ５」で示されるような関係である場合、これらの描画コマンドによる描画領域が重なり合っていないため、これらの描画コマンドは並列動作が可能であると判定する。
これに対して、図２（Ｂ）に示すように、描画コマンド“５”に対応する描画イメージ「Ｐ５」が、描画コマンド“１”に対応する描画イメージ「Ｐ１」及び描画コマンド“２”に対応する描画イメージ「Ｐ２」と重なり合っているため、これらの部分は描画順序を正しく守る必要があることから、描画コマンド“５”と描画コマンド“１”と描画コマンド“２”は並列動作が不可であると判定する。
【００１９】
割当プロセッサ決定部１３は、複数の描画プロセッサ３の負荷状況の判定処理を実施した結果、複数の描画プロセッサ３の負荷状況に偏りがない場合、描画コマンド保持部１２のキューにより保持されている描画コマンドの種類と、描画プロセッサ３の用途が一致するように、その描画コマンドを割り当てる描画プロセッサ３を決定する。
具体的には、描画コマンド保持部１２のキューにより保持されている描画コマンドが２Ｄ描画コマンドであれば、その描画コマンドを２Ｄ用描画プロセッサに割り当て、その描画コマンドが３Ｄ描画コマンドであれば、その描画コマンドを３Ｄ用描画プロセッサに割り当てるように決定する。また、その描画コマンドがベクタ描画コマンドであれば、その描画コマンドをベクタ用描画プロセッサに割り当てるように決定する。
【００２０】
一方、割当プロセッサ決定部１３は、複数の描画プロセッサ３の負荷状況に偏りがあり、描画コマンド保持部１２のキューにより保持されている描画コマンドの種類に対応する描画プロセッサ３の負荷状況が高い場合、その描画コマンドの種類に対応していない他の描画プロセッサ３（現在、負荷状況が低い描画プロセッサ３）に当該描画コマンドを割り当てるように決定する。
具体的には、例えば、２Ｄ描画コマンドが大量に連続して描画コマンド保持部１２のキューに保持されている場合において、それらの２Ｄ描画コマンドが並列動作可能であれば、割当プロセッサ決定部１３が、２Ｄ描画コマンドを当初使用予定の２Ｄ用描画プロセッサではなく、３Ｄ用描画プロセッサやベクタ用描画プロセッサに割り当てるように決定する。
【００２１】
描画コマンド変換部１４は、割当プロセッサ決定部１３により決定された描画プロセッサ３が、本来、その描画コマンドを処理する描画プロセッサ３である場合、描画コマンドの変換処理を実施することなく、その描画コマンドを当該描画プロセッサ３に転送する。
即ち、２Ｄ描画コマンドが２Ｄ用描画プロセッサに割り当てられた場合、その２Ｄ描画コマンドを２Ｄ用描画プロセッサに転送し、３Ｄ描画コマンドが３Ｄ用描画プロセッサに割り当てられた場合、その３Ｄ描画コマンドを３Ｄ用描画プロセッサに転送する。
また、ベクタ描画コマンドがベクタ用描画プロセッサに割り当てられた場合、そのベクタ描画コマンドをベクタ用描画プロセッサに転送する。
【００２２】
一方、描画コマンド変換部１４は、割当プロセッサ決定部１３により決定された描画プロセッサ３が、本来、その描画コマンドを処理する描画プロセッサ３でない場合、その描画コマンドを上記描画プロセッサ３が対応可能な描画コマンドに変換し、変換後の描画コマンドを当該描画プロセッサ３に転送する。
即ち、描画コマンド変換部１４は、図３に示すように、３Ｄ描画コマンド又はベクタ描画コマンドを２Ｄ描画コマンドに変換する２Ｄ変換手段１４ａと、２Ｄ描画コマンド又はベクタ描画コマンドを３Ｄ描画コマンドに変換する３Ｄ変換手段１４ｂと、２Ｄ描画コマンド又は３Ｄ描画コマンドをベクタ描画コマンドに変換するベクタ変換手段１４ｃとを備えており、例えば、３Ｄ描画コマンド又はベクタ描画コマンドが２Ｄ用描画プロセッサに割り当てられた場合、２Ｄ変換手段１４ａが３Ｄ描画コマンド又はベクタ描画コマンドを２Ｄ描画コマンドに変換して、変換後の２Ｄ描画コマンドを２Ｄ用描画プロセッサに転送する。
【００２３】
また、２Ｄ描画コマンド又はベクタ描画コマンドが３Ｄ用描画プロセッサに割り当てられた場合、３Ｄ変換手段１４ｂが２Ｄ描画コマンド又はベクタ描画コマンドを３Ｄ描画コマンドに変換して、変換後の３Ｄ描画コマンドを３Ｄ用描画プロセッサに転送する。
また、２Ｄ描画コマンド又は３Ｄ描画コマンドがベクタ用描画プロセッサに割り当てられた場合、ベクタ変換手段１４ｃが２Ｄ描画コマンド又は３Ｄ描画コマンドをベクタ描画コマンドに変換して、変換後のベクタ描画コマンドをベクタ用描画プロセッサに転送する。
【００２４】
ただし、描画コマンドの変換において、例えば、３Ｄ描画コマンドを２Ｄ描画コマンドに変換する場合、扱う頂点データの次元が減るため、全ての３Ｄ描画コマンドを変換できるわけではない。
極端な場合、３Ｄ描画コマンドから２Ｄ描画コマンドへの変換が可能なものとしては、画面をクリアする描画コマンドのみに限定されることがある。
したがって、割当プロセッサ決定部１３が描画コマンドを割り当てる描画プロセッサ３を決定するに際して、予め、どのような描画コマンドであれば、描画コマンド変換部１４において変換可能であるかを認識しておく必要がある。
なお、２Ｄ描画コマンドを３Ｄ描画コマンドで描画するような場合には、扱う頂点の次元が上がるので、比較的変換できる描画コマンドが多い。
【００２５】
描画プロセッサ３は、描画コマンド変換部１４から描画コマンドを受けると、その描画コマンドにしたがって描画メモリ４上に文字や図形の描画を行う。
【００２６】
以上で明らかなように、この実施の形態１によれば、複数の描画プロセッサ３の負荷状況を判定し、その負荷状況と描画コマンド保持部１２により保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサ３を決定する割当プロセッサ決定部１３を設け、描画コマンド変換部１４が、割当プロセッサ決定部１３により決定された描画プロセッサ３が、本来、その描画コマンドを処理する描画プロセッサではない場合、その描画コマンドを上記描画プロセッサ３が対応可能な描画コマンドに変換するように構成したので、描画プログラム１１から発行される描画コマンドの種類に偏りが生じても、現在使用されていないハードウェアリソースを有効に活用して、高速に描画処理を実施することができる効果を奏する。
【００２７】
なお、この実施の形態１では、描画プロセッサ３が、描画メモリ４上に文字や図形の描画を行うものについて示しているが、描画プロセッサ３の描画先が描画メモリ４ではなく、システムメモリ２であるようなユニファイドメモリの構成をとるようにしてもよい。
【００２８】
また、この実施の形態１では、描画コマンド変換部１４が描画コマンドを変換するに際して、異なる種類の描画プロセッサ３（２Ｄ用描画プロセッサ、３Ｄ用描画プロセッサ、ベクタ用描画プロセッサ）間で、描画コマンドの変換を行うものについて示しているが、異なるインタフェースを有する同一種類の描画プロセッサ３間で、描画コマンドの変換を行うようにしてもよい。
例えば、３Ｄ描画対応のＯｐｅｎＧＬ用描画プロセッサと、Ｄｉｒｅｃｔ３Ｄ対応の描画プロセッサとが搭載されている場合、ＯｐｅｎＧＬ用描画プロセッサに対応する３Ｄ描画コマンドを、Ｄｉｒｅｃｔ３Ｄ対応の描画プロセッサが対応できるようにする変換と、Ｄｉｒｅｃｔ３Ｄ対応の描画プロセッサに対応する３Ｄ描画コマンドを、ＯｐｅｎＧＬ用描画プロセッサが対応できるようにする変換とを実施するようにしてもよい。
また、この実施の形態１は、同一の描画プロセッサ３が複数搭載されている場合の並列動作の制御方法としても有効な構成である。
【００２９】
実施の形態２．
図４はこの発明の実施の形態２による描画制御装置を示す構成図であり、図において、図１と同一符号は同一又は相当部分を示すので説明を省略する。
優先度付き描画コマンド生成部２１は描画プログラム１１から発行される描画コマンドに優先度を付加する処理を実施する。なお、優先度付き描画コマンド生成部２１は優先度付加手段を構成している。
【００３０】
描画コマンド保持部２２は図１の描画コマンド保持部１２と同様に、描画コマンドを保持する複数のキーを備えており、描画プログラム１１から発行される描画コマンドを任意のキーに格納する処理を実施する。
ただし、描画コマンド保持部２２は図１の描画コマンド保持部１２と異なり、描画コマンドに付加されている優先度を考慮して、描画コマンドの実行順序を決定し、実行順序に対応するキューに描画コマンドを格納する。
なお、描画コマンド保持部２２は描画コマンド保持手段を構成している。
【００３１】
次に動作について説明する。
上記実施の形態１と同様に、演算プロセッサ１が描画プログラム１１を実行することで、描画コマンドが発行される。
即ち、描画内容が２Ｄ描画の場合には２Ｄ描画コマンドが発行され、３Ｄ描画の場合には３Ｄ描画コマンドが発行される。また、ベクタグラフィックス描画の場合にはベクタ描画コマンドが発行される。
【００３２】
優先度付き描画コマンド生成部２１は、描画プログラム１１から描画コマンドが発行されると、その描画コマンドに優先度を付加する処理を実施する。
例えば、先に処理する必要がある描画コマンドには高い優先度を付加し、先に処理する必要がない描画コマンドには低い優先度を付加するようにする。
【００３３】
描画コマンド保持部１２は、優先度付き描画コマンド生成部２１から優先度が付加されている描画コマンドを入力すると、既にキュー内に溜まっている描画コマンドの優先度と、新たに入力した描画コマンドの優先度とを比較して、その描画コマンドを適切な位置のキューに挿入する。
即ち、描画コマンド保持部１２は、既にキュー内に溜まっている描画コマンドの中で、新たに入力した描画コマンドの優先度より高い優先度が付加されている描画コマンドと、新たに入力した描画コマンドの優先度より低い優先度が付加されている描画コマンドとの間に、新たに入力した描画コマンドを挿入する。
ただし、新たに入力した描画コマンドの描画領域が、既にキュー内に溜まっている描画コマンドの描画領域と重なるような場合には、それらの描画コマンドの後ろに、新たに入力した描画コマンドを挿入する。
【００３４】
具体的には、図５（Ａ）に示すように、新たに入力した描画コマンド“５”の優先度が、既にキュー内に溜まっている描画コマンド“１”〜“４”の優先度より高い場合、新たに入力した描画コマンド“５”の描画領域が、描画コマンド“１”〜“４”の描画領域と重ならない場合、新たに入力した描画コマンド“５”をキューの先頭に挿入する。
ただし、図５（Ｂ）に示すように、新たに入力した描画コマンド“５”の描画領域が、描画コマンド“１”と描画コマンド“２”の描画領域と重なる場合、描画コマンド“１”，“２”の優先度より高いが、正しい描画イメージを維持するため、描画コマンド“２”の後ろに、新たに入力した描画コマンド“５”を挿入する。
【００３５】
割当プロセッサ決定部１３の処理内容は、上記実施の形態１と同様であるが、描画コマンド保持部１２における複数のキューのうち、先頭のキューに保持されている優先度が高い描画コマンドから割当先を決定する。
これにより、優先度が高い描画コマンドから順番に割当先が決定されて、割当先の描画プロセッサ３に転送されて描画処理が実施される。
したがって、高優先度の描画コマンドが割込み的処理で描画の高速化が図られる。
【００３６】
割込み要因が描画コマンドであって、割込み発生時において、描画プロセッサ３を長時間占有するような処理が実行されている場合、従来の描画制御装置であれば、この描画プロセッサ３の処理の終了を待つ必要がある。
しかし、割込み要因の描画コマンドが、本来、使用する描画プロセッサ３以外の描画プロセッサ３で実行でき、かつ、その描画コマンドを並列実行可能な場合には、割当プロセッサ決定部１３が、上記実施の形態１と同様に、当該描画コマンドを他の描画プロセッサ３に割り当てるようにするので、割込み的処理の高速化を図ることができる。
【符号の説明】
【００３７】
１  演算プロセッサ、２  システムメモリ、３  描画プロセッサ、４  描画メモリ、１１  描画プログラム、１２  描画コマンド保持部（描画コマンド保持手段）、１３  割当プロセッサ決定部（割当プロセッサ決定手段）、１４  描画コマンド変換部（描画コマンド変換手段）、１４ａ  ２Ｄ変換手段、１４ｂ  ３Ｄ変換手段、１４ｃ  ベクタ変換手段、２１  優先度付き描画コマンド生成部（優先度付加手段）、２２  描画コマンド保持部（描画コマンド保持手段）。
【図１】
2010218130.tif 000003
【図２】
2010218130.tif 000004
【図３】
2010218130.tif 000005
【図４】
2010218130.tif 000006
【図５】
2010218130.tif 000007