説明

描画制御装置

【課題】描画プログラムから発行される描画コマンドの種類に偏りが生じても、現在使用されていないハードウェアリソースを有効に活用して、高速に描画処理を実施することができるようにする。
【解決手段】複数の描画プロセッサ3の負荷状況を判定し、その負荷状況と描画コマンド保持部12により保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサ3を決定する割当プロセッサ決定部13を設け、割当プロセッサ決定部13により決定された描画プロセッサ3が、本来、その描画コマンドを処理する描画プロセッサではない場合、その描画コマンドを上記描画プロセッサ3が対応可能な描画コマンドに変換する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、複数の描画プロセッサの負荷分散を実現して、図形や文字などを高速に描画する描画制御装置に関するものである。
【背景技術】
【0002】
図形や文字などを描画する描画制御装置が、例えば、2D(二次元)用のアクセラレータ(描画プロセッサ)と、3D(三次元)用のアクセラレータ(描画プロセッサ)とを実装している場合、2D描画では、2D用のアクセラレータを使用し、3D描画では、3D用のアクセラレータを使用するのが一般である。
したがって、描画プログラムから2D描画コマンドが発行されると、その2D描画コマンドを2D用のアクセラレータに割り当てることで、2D用のアクセラレータが2D描画を実施し、描画プログラムから3D描画コマンドが発行されると、その3D描画コマンドを3D用のアクセラレータに割り当てることで、3D用のアクセラレータが3D描画を実施する。
【0003】
このため、例えば、2D描画コマンドが大量に発行されて、2D用のアクセラレータの負荷が高く、3D用のアクセラレータの負荷が低い場合でも、描画プログラムから新たに発行された2D描画コマンドが3D用のアクセラレータに割り当てられることはなく、2D用のアクセラレータに割り当てられるので、現在使用されていないハードウェアリソースを有効に活用することができない。
【0004】
以下の特許文献1には、描画プログラムから2D描画コマンドが発行されると、その2D描画コマンドを3D用のアクセラレータが対応可能な3D描画コマンドに変換することで、3D用のアクセラレータが描画することができるようにしている描画制御装置が開示されている。
ただし、この描画制御装置では、現在使用されていないハードウェアリソースを有効に活用するために、負荷が低いアクセラレータに描画コマンドを割り当てる技術については開示されていない。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特表2008−524756号公報(段落番号[0014]から[0029])
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来の描画制御装置は以上のように構成されているので、例えば、描画プログラムから2D描画コマンドが発行されたときに、2D用のアクセラレータの負荷が低ければ、その2D描画コマンドを2D用のアクセラレータに割り当てることで、高速に2D描画を実施する一方、2D用のアクセラレータの負荷が高ければ、その2D描画コマンドを3D描画コマンドに変換して3D用のアクセラレータに割り当てることで、負荷分散を図るなどの処理を実施することができない。このため、現在使用されていないハードウェアリソースを有効に活用することができず、描画プログラムから発行される描画コマンドの種類に偏りが生じると、高速に描画処理を実施することができなくなるなどの課題があった。
【0007】
この発明は上記のような課題を解決するためになされたもので、描画プログラムから発行される描画コマンドの種類に偏りが生じても、現在使用されていないハードウェアリソースを有効に活用して、高速に描画処理を実施することができる描画制御装置を得ることを目的とする。
【課題を解決するための手段】
【0008】
この発明に係る描画制御装置は、複数の描画プロセッサの負荷状況を判定し、その負荷状況と描画コマンド保持手段により保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサを決定する割当プロセッサ決定手段を設け、描画コマンド変換手段が、割当プロセッサ決定手段により決定された描画プロセッサが、本来、その描画コマンドを処理する描画プロセッサではない場合、その描画コマンドを上記描画プロセッサが対応可能な描画コマンドに変換するようにしたものである。
【発明の効果】
【0009】
この発明によれば、複数の描画プロセッサの負荷状況を判定し、その負荷状況と描画コマンド保持手段により保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサを決定する割当プロセッサ決定手段を設け、描画コマンド変換手段が、割当プロセッサ決定手段により決定された描画プロセッサが、本来、その描画コマンドを処理する描画プロセッサではない場合、その描画コマンドを上記描画プロセッサが対応可能な描画コマンドに変換するように構成したので、描画プログラムから発行される描画コマンドの種類に偏りが生じても、現在使用されていないハードウェアリソースを有効に活用して、高速に描画処理を実施することができる効果がある。
【図面の簡単な説明】
【0010】
【図1】この発明の実施の形態1による描画制御装置を示す構成図である。
【図2】描画コマンド保持部12のキューに保持されている描画コマンドと、その描画コマンドによる描画イメージとを示す説明図である。
【図3】描画コマンド変換部14に実装されている変換手段を示す説明図である。
【図4】この発明の実施の形態2による描画制御装置を示す構成図である。
【図5】描画コマンド保持部12のキューに保持されている描画コマンドと、その描画コマンドによる描画イメージとを示す説明図である。
【発明を実施するための形態】
【0011】
実施の形態1.
図1はこの発明の実施の形態1による描画制御装置を示す構成図である。
図1において、演算プロセッサ1は例えばCPUなどの中央処理装置である。
システムメモリ2は演算プロセッサ1の命令コードやデータを保持するメモリである。
描画プロセッサ3は例えばアクセラレータ、グラフィックスエンジンやGPU(Graphics Processing Unit)などと呼ばれる描画用のハードウェアであり、文字や図形の描画処理を実施する。
この実施の形態1では、描画プロセッサ3として、例えば、直線描画や領域転送などの2次元描画処理を行う2D用描画プロセッサと、3次元グラフィックス処理を行う3D用描画プロセッサと、ベクタグラフィックス処理などを扱えるベクタ用描画プロセッサとが実装されているものとする。
描画メモリ4は描画プロセッサ3の描画処理に使用されるメモリである。
【0012】
描画プログラム11は演算プロセッサ1により実行されるアプリケーションプログラムであって、2D描画コマンド、3D描画コマンド、ベクタ描画コマンド(ベクタグラフィックスコマンド)などが記述されている。
演算プロセッサ1により描画プログラム11が実行されることで、2D描画コマンド、3D描画コマンド、ベクタ描画コマンドなどが発行される。
描画コマンド保持部12は描画コマンドを保持する複数のキーを備えており、描画プログラム11から発行される描画コマンドを任意のキーに格納する処理を実施する。なお、描画コマンド保持部12は描画コマンド保持手段を構成している。
【0013】
割当プロセッサ決定部13は複数の描画プロセッサ3の負荷状況を判定し、その負荷状況と描画コマンド保持部12のキューにより保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサ3を決定する処理を実施する。なお、割当プロセッサ決定部13は割当プロセッサ決定手段を構成している。
描画コマンド変換部14は割当プロセッサ決定部13により決定された描画プロセッサ3が、本来、上記描画コマンドを処理する描画プロセッサではない場合(例えば、描画コマンド保持部12のキューにより保持されている描画コマンドの種類が2D描画コマンドであり、割当プロセッサ決定部13により決定された描画プロセッサ3が3D用描画プロセッサやベクタ用描画プロセッサである場合)、その描画コマンドを上記描画プロセッサ3が対応可能な描画コマンドに変換する処理を実施する。なお、描画コマンド変換部14は描画コマンド変換手段を構成している。
【0014】
図1の描画制御装置の各処理部は、CPU、メモリやLSIなどのハードウェアとソフトウェアの組み合わせで実現されるものである。
したがって、各処理部がハードウェアやソフトウェアの単体で実現される場合のほか、ハードウェアやソフトウェアの組み合わせによって実現することができることは明らかであり、いずれかに限定されるものではない。
【0015】
次に動作について説明する。
演算プロセッサ1には、OS(Operating System)などが実装されており、OS上で複数のアプリケーションや複数のタスクが動作しており、その一つが描画プログラム11である。
演算プロセッサ1が、描画プログラム11を実行することで、描画コマンドが発行される。
即ち、描画内容が2D描画の場合には2D描画コマンドが発行され、3D描画の場合には3D描画コマンドが発行される。また、ベクタグラフィックス描画の場合にはベクタ描画コマンドが発行される。
一般に、2D描画コマンドはXWindowをはじめとするWindows(登録商標)描画関連の描画コマンドであり、3D描画コマンドはOpenGLやDirect3Dと呼ばれるコマンドであり、ベクタ描画コマンドはOpenVGと呼ばれる描画コマンドである。
【0016】
描画コマンド保持部12は、描画プログラム11から描画コマンドが発行されると、その描画コマンドを入力して、その描画コマンドを任意のキーに格納する。
このとき、描画コマンド保持部12は、描画プログラム11から発行された描画コマンドを入力順に並べて管理している。
【0017】
割当プロセッサ決定部13は、描画コマンド保持部12のキューに保持されている描画コマンドを解析して、描画プロセッサ3の使用状況(負荷状況)を判定するとともに、描画コマンドが並列動作可能か否かを判定する。
並列動作可能か否かは、以下の状況で判断する。
【0018】
例えば、図2(A)に示すように、描画コマンド保持部12のキューに対して描画コマンド“1”から“5”までがキューイングされ、これらの描画コマンドによる描画イメージが「P1」から「P5」で示されるような関係である場合、これらの描画コマンドによる描画領域が重なり合っていないため、これらの描画コマンドは並列動作が可能であると判定する。
これに対して、図2(B)に示すように、描画コマンド“5”に対応する描画イメージ「P5」が、描画コマンド“1”に対応する描画イメージ「P1」及び描画コマンド“2”に対応する描画イメージ「P2」と重なり合っているため、これらの部分は描画順序を正しく守る必要があることから、描画コマンド“5”と描画コマンド“1”と描画コマンド“2”は並列動作が不可であると判定する。
【0019】
割当プロセッサ決定部13は、複数の描画プロセッサ3の負荷状況の判定処理を実施した結果、複数の描画プロセッサ3の負荷状況に偏りがない場合、描画コマンド保持部12のキューにより保持されている描画コマンドの種類と、描画プロセッサ3の用途が一致するように、その描画コマンドを割り当てる描画プロセッサ3を決定する。
具体的には、描画コマンド保持部12のキューにより保持されている描画コマンドが2D描画コマンドであれば、その描画コマンドを2D用描画プロセッサに割り当て、その描画コマンドが3D描画コマンドであれば、その描画コマンドを3D用描画プロセッサに割り当てるように決定する。また、その描画コマンドがベクタ描画コマンドであれば、その描画コマンドをベクタ用描画プロセッサに割り当てるように決定する。
【0020】
一方、割当プロセッサ決定部13は、複数の描画プロセッサ3の負荷状況に偏りがあり、描画コマンド保持部12のキューにより保持されている描画コマンドの種類に対応する描画プロセッサ3の負荷状況が高い場合、その描画コマンドの種類に対応していない他の描画プロセッサ3(現在、負荷状況が低い描画プロセッサ3)に当該描画コマンドを割り当てるように決定する。
具体的には、例えば、2D描画コマンドが大量に連続して描画コマンド保持部12のキューに保持されている場合において、それらの2D描画コマンドが並列動作可能であれば、割当プロセッサ決定部13が、2D描画コマンドを当初使用予定の2D用描画プロセッサではなく、3D用描画プロセッサやベクタ用描画プロセッサに割り当てるように決定する。
【0021】
描画コマンド変換部14は、割当プロセッサ決定部13により決定された描画プロセッサ3が、本来、その描画コマンドを処理する描画プロセッサ3である場合、描画コマンドの変換処理を実施することなく、その描画コマンドを当該描画プロセッサ3に転送する。
即ち、2D描画コマンドが2D用描画プロセッサに割り当てられた場合、その2D描画コマンドを2D用描画プロセッサに転送し、3D描画コマンドが3D用描画プロセッサに割り当てられた場合、その3D描画コマンドを3D用描画プロセッサに転送する。
また、ベクタ描画コマンドがベクタ用描画プロセッサに割り当てられた場合、そのベクタ描画コマンドをベクタ用描画プロセッサに転送する。
【0022】
一方、描画コマンド変換部14は、割当プロセッサ決定部13により決定された描画プロセッサ3が、本来、その描画コマンドを処理する描画プロセッサ3でない場合、その描画コマンドを上記描画プロセッサ3が対応可能な描画コマンドに変換し、変換後の描画コマンドを当該描画プロセッサ3に転送する。
即ち、描画コマンド変換部14は、図3に示すように、3D描画コマンド又はベクタ描画コマンドを2D描画コマンドに変換する2D変換手段14aと、2D描画コマンド又はベクタ描画コマンドを3D描画コマンドに変換する3D変換手段14bと、2D描画コマンド又は3D描画コマンドをベクタ描画コマンドに変換するベクタ変換手段14cとを備えており、例えば、3D描画コマンド又はベクタ描画コマンドが2D用描画プロセッサに割り当てられた場合、2D変換手段14aが3D描画コマンド又はベクタ描画コマンドを2D描画コマンドに変換して、変換後の2D描画コマンドを2D用描画プロセッサに転送する。
【0023】
また、2D描画コマンド又はベクタ描画コマンドが3D用描画プロセッサに割り当てられた場合、3D変換手段14bが2D描画コマンド又はベクタ描画コマンドを3D描画コマンドに変換して、変換後の3D描画コマンドを3D用描画プロセッサに転送する。
また、2D描画コマンド又は3D描画コマンドがベクタ用描画プロセッサに割り当てられた場合、ベクタ変換手段14cが2D描画コマンド又は3D描画コマンドをベクタ描画コマンドに変換して、変換後のベクタ描画コマンドをベクタ用描画プロセッサに転送する。
【0024】
ただし、描画コマンドの変換において、例えば、3D描画コマンドを2D描画コマンドに変換する場合、扱う頂点データの次元が減るため、全ての3D描画コマンドを変換できるわけではない。
極端な場合、3D描画コマンドから2D描画コマンドへの変換が可能なものとしては、画面をクリアする描画コマンドのみに限定されることがある。
したがって、割当プロセッサ決定部13が描画コマンドを割り当てる描画プロセッサ3を決定するに際して、予め、どのような描画コマンドであれば、描画コマンド変換部14において変換可能であるかを認識しておく必要がある。
なお、2D描画コマンドを3D描画コマンドで描画するような場合には、扱う頂点の次元が上がるので、比較的変換できる描画コマンドが多い。
【0025】
描画プロセッサ3は、描画コマンド変換部14から描画コマンドを受けると、その描画コマンドにしたがって描画メモリ4上に文字や図形の描画を行う。
【0026】
以上で明らかなように、この実施の形態1によれば、複数の描画プロセッサ3の負荷状況を判定し、その負荷状況と描画コマンド保持部12により保持されている描画コマンドの種類に応じて、その描画コマンドを割り当てる描画プロセッサ3を決定する割当プロセッサ決定部13を設け、描画コマンド変換部14が、割当プロセッサ決定部13により決定された描画プロセッサ3が、本来、その描画コマンドを処理する描画プロセッサではない場合、その描画コマンドを上記描画プロセッサ3が対応可能な描画コマンドに変換するように構成したので、描画プログラム11から発行される描画コマンドの種類に偏りが生じても、現在使用されていないハードウェアリソースを有効に活用して、高速に描画処理を実施することができる効果を奏する。
【0027】
なお、この実施の形態1では、描画プロセッサ3が、描画メモリ4上に文字や図形の描画を行うものについて示しているが、描画プロセッサ3の描画先が描画メモリ4ではなく、システムメモリ2であるようなユニファイドメモリの構成をとるようにしてもよい。
【0028】
また、この実施の形態1では、描画コマンド変換部14が描画コマンドを変換するに際して、異なる種類の描画プロセッサ3(2D用描画プロセッサ、3D用描画プロセッサ、ベクタ用描画プロセッサ)間で、描画コマンドの変換を行うものについて示しているが、異なるインタフェースを有する同一種類の描画プロセッサ3間で、描画コマンドの変換を行うようにしてもよい。
例えば、3D描画対応のOpenGL用描画プロセッサと、Direct3D対応の描画プロセッサとが搭載されている場合、OpenGL用描画プロセッサに対応する3D描画コマンドを、Direct3D対応の描画プロセッサが対応できるようにする変換と、Direct3D対応の描画プロセッサに対応する3D描画コマンドを、OpenGL用描画プロセッサが対応できるようにする変換とを実施するようにしてもよい。
また、この実施の形態1は、同一の描画プロセッサ3が複数搭載されている場合の並列動作の制御方法としても有効な構成である。
【0029】
実施の形態2.
図4はこの発明の実施の形態2による描画制御装置を示す構成図であり、図において、図1と同一符号は同一又は相当部分を示すので説明を省略する。
優先度付き描画コマンド生成部21は描画プログラム11から発行される描画コマンドに優先度を付加する処理を実施する。なお、優先度付き描画コマンド生成部21は優先度付加手段を構成している。
【0030】
描画コマンド保持部22は図1の描画コマンド保持部12と同様に、描画コマンドを保持する複数のキーを備えており、描画プログラム11から発行される描画コマンドを任意のキーに格納する処理を実施する。
ただし、描画コマンド保持部22は図1の描画コマンド保持部12と異なり、描画コマンドに付加されている優先度を考慮して、描画コマンドの実行順序を決定し、実行順序に対応するキューに描画コマンドを格納する。
なお、描画コマンド保持部22は描画コマンド保持手段を構成している。
【0031】
次に動作について説明する。
上記実施の形態1と同様に、演算プロセッサ1が描画プログラム11を実行することで、描画コマンドが発行される。
即ち、描画内容が2D描画の場合には2D描画コマンドが発行され、3D描画の場合には3D描画コマンドが発行される。また、ベクタグラフィックス描画の場合にはベクタ描画コマンドが発行される。
【0032】
優先度付き描画コマンド生成部21は、描画プログラム11から描画コマンドが発行されると、その描画コマンドに優先度を付加する処理を実施する。
例えば、先に処理する必要がある描画コマンドには高い優先度を付加し、先に処理する必要がない描画コマンドには低い優先度を付加するようにする。
【0033】
描画コマンド保持部12は、優先度付き描画コマンド生成部21から優先度が付加されている描画コマンドを入力すると、既にキュー内に溜まっている描画コマンドの優先度と、新たに入力した描画コマンドの優先度とを比較して、その描画コマンドを適切な位置のキューに挿入する。
即ち、描画コマンド保持部12は、既にキュー内に溜まっている描画コマンドの中で、新たに入力した描画コマンドの優先度より高い優先度が付加されている描画コマンドと、新たに入力した描画コマンドの優先度より低い優先度が付加されている描画コマンドとの間に、新たに入力した描画コマンドを挿入する。
ただし、新たに入力した描画コマンドの描画領域が、既にキュー内に溜まっている描画コマンドの描画領域と重なるような場合には、それらの描画コマンドの後ろに、新たに入力した描画コマンドを挿入する。
【0034】
具体的には、図5(A)に示すように、新たに入力した描画コマンド“5”の優先度が、既にキュー内に溜まっている描画コマンド“1”〜“4”の優先度より高い場合、新たに入力した描画コマンド“5”の描画領域が、描画コマンド“1”〜“4”の描画領域と重ならない場合、新たに入力した描画コマンド“5”をキューの先頭に挿入する。
ただし、図5(B)に示すように、新たに入力した描画コマンド“5”の描画領域が、描画コマンド“1”と描画コマンド“2”の描画領域と重なる場合、描画コマンド“1”,“2”の優先度より高いが、正しい描画イメージを維持するため、描画コマンド“2”の後ろに、新たに入力した描画コマンド“5”を挿入する。
【0035】
割当プロセッサ決定部13の処理内容は、上記実施の形態1と同様であるが、描画コマンド保持部12における複数のキューのうち、先頭のキューに保持されている優先度が高い描画コマンドから割当先を決定する。
これにより、優先度が高い描画コマンドから順番に割当先が決定されて、割当先の描画プロセッサ3に転送されて描画処理が実施される。
したがって、高優先度の描画コマンドが割込み的処理で描画の高速化が図られる。
【0036】
割込み要因が描画コマンドであって、割込み発生時において、描画プロセッサ3を長時間占有するような処理が実行されている場合、従来の描画制御装置であれば、この描画プロセッサ3の処理の終了を待つ必要がある。
しかし、割込み要因の描画コマンドが、本来、使用する描画プロセッサ3以外の描画プロセッサ3で実行でき、かつ、その描画コマンドを並列実行可能な場合には、割当プロセッサ決定部13が、上記実施の形態1と同様に、当該描画コマンドを他の描画プロセッサ3に割り当てるようにするので、割込み的処理の高速化を図ることができる。
【符号の説明】
【0037】
1 演算プロセッサ、2 システムメモリ、3 描画プロセッサ、4 描画メモリ、11 描画プログラム、12 描画コマンド保持部(描画コマンド保持手段)、13 割当プロセッサ決定部(割当プロセッサ決定手段)、14 描画コマンド変換部(描画コマンド変換手段)、14a 2D変換手段、14b 3D変換手段、14c ベクタ変換手段、21 優先度付き描画コマンド生成部(優先度付加手段)、22 描画コマンド保持部(描画コマンド保持手段)。

【特許請求の範囲】
【請求項1】
描画処理を実行する複数の描画プロセッサと、描画プログラムから発行される描画コマンドを保持する描画コマンド保持手段と、上記複数の描画プロセッサの負荷状況を判定し、上記負荷状況と上記描画コマンド保持手段により保持されている描画コマンドの種類に応じて、上記描画コマンドを割り当てる描画プロセッサを決定する割当プロセッサ決定手段と、上記割当プロセッサ決定手段により決定された描画プロセッサが、本来、上記描画コマンドを処理する描画プロセッサではない場合、上記描画コマンドを上記描画プロセッサが対応可能な描画コマンドに変換する描画コマンド変換手段とを備えた描画制御装置。
【請求項2】
描画プログラムから発行される描画コマンドに優先度を付加する優先度付加手段を設け、描画コマンド保持手段が描画コマンドに付加されている優先度を考慮して、描画コマンドの実行順序を決定し、実行順序に対応するキューに上記描画コマンドを格納することを特徴とする請求項1記載の描画制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate