JP5436526B2 - グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置 - Google Patents

グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置 Download PDF

Info

Publication number
JP5436526B2
JP5436526B2 JP2011267090A JP2011267090A JP5436526B2 JP 5436526 B2 JP5436526 B2 JP 5436526B2 JP 2011267090 A JP2011267090 A JP 2011267090A JP 2011267090 A JP2011267090 A JP 2011267090A JP 5436526 B2 JP5436526 B2 JP 5436526B2
Authority
JP
Japan
Prior art keywords
command
graphics
model data
graphics command
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011267090A
Other languages
English (en)
Other versions
JP2013120438A (ja
Inventor
健一郎 横田
敬介 井上
允 井澤
武 中川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment Inc
Sony Computer Entertainment Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment Inc, Sony Computer Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Priority to JP2011267090A priority Critical patent/JP5436526B2/ja
Priority to US13/690,004 priority patent/US9424617B2/en
Priority to CN201210511387.8A priority patent/CN103150699B/zh
Publication of JP2013120438A publication Critical patent/JP2013120438A/ja
Application granted granted Critical
Publication of JP5436526B2 publication Critical patent/JP5436526B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4435Detection or removal of dead or redundant code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Description

この発明は、グラフィックスコマンドを生成する技術、特に中間コマンドからグラフィックスコマンドを生成する技術に関する。
パーソナルコンピュータやゲーム専用機において、高品質な3次元コンピュータグラフィックスを用いたゲームやシミュレーションなどのアプリケーションを実行したり、実写とコンピュータグラフィックスを融合させた映像コンテンツの再生を行うなど、高画質のグラフィックスの利用が広がっている。
一般に、グラフィックス処理は、CPUとグラフィックスプロセッシングユニット(GPU)が連携することで実行される。CPUが汎用的な演算を行う汎用プロセッサであるのに対して、GPUは高度なグラフィックス演算を行うための専用プロセッサである。CPUはオブジェクトの3次元モデルにもとづいて投影変換などのジオメトリ演算を行い、GPUはCPUから頂点データなどを受け取ってレンダリングを実行する。GPUはラスタライザやピクセルシェーダなどの専用ハードウェアから構成され、パイプライン処理でグラフィックス処理を実行する。最近のGPUには、プログラムシェーダと呼ばれるように、シェーダ機能がプログラム可能なものもあり、シェーダプログラミングをサポートするために、一般にグラフィックスライブラリが提供されている。
オブジェクトをレンダリングする際、CPUは、GPUのハードウェアにより実行されるグラフィックスコマンドを生成してGPUに渡す必要がある。このグラフィックスコマンドの生成処理には多くのCPU時間を要するため、中間コマンドを導入し、グラフィックスコマンドの生成処理を中間コマンドの生成と中間コマンドからグラフィックスコマンドへの変換の2段階に分けることがある。中間コマンドの生成と中間コマンドからグラフィックスコマンドへの変換を別のスレッドにより実行することで、中間コマンドの生成後、中間コマンドをグラフィックスコマンドに変換する処理と、次のフレームを描画するための物理モデル計算などのグラフィックス以外の処理とを並列に実行することが可能になり、CPUの使用効率を向上させることができる。
特開2008−123520号公報
しかしながら、複数の中間コマンドをグラフィックスコマンドに変換すると、生成されたグラフィックスコマンドのシーケンスでは、ステートが変更されていないにもかかわらず同じグラフィックスコマンドが繰り返し実行されることがあり、その冗長性のゆえに、実行効率が低下する。
本発明はこうした課題に鑑みてなされたものであり、その目的は、中間コマンドから生成されるグラフィックスコマンドの実行効率を向上させることのできる技術を提供することにある。
上記課題を解決するために、本発明のある態様のグラフィックスコマンド生成装置は、オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドを生成する中間コマンド生成部と、生成された中間コマンドをグラフィックスプロセッサに実行させるためのグラフィックスコマンド列に変換するグラフィックスコマンド変換部とを含む。前記グラフィックスコマンド変換部は、前記中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であるかどうかを判定する同一性判定部と、前記同一性判定部により、ステートが同一でないと判定されたグラフィックスコマンドを生成し、ステートが同一であると判定されたグラフィックスコマンドは冗長なコマンドであるとして生成しないグラフィックスコマンド生成部とを含む。
本発明の別の態様は、グラフィックスコマンド生成方法である。この方法は、オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドを生成する中間コマンド生成ステップと、生成された中間コマンドをグラフィックスプロセッサに実行させるためのグラフィックスコマンド列に変換するグラフィックスコマンド変換ステップとを含む。前記グラフィックスコマンド変換ステップは、前記中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であるかどうかを判定する同一性判定ステップと、前記同一性判定ステップにより、ステートが同一でないと判定されたグラフィックスコマンドを生成し、ステートが同一であると判定されたグラフィックスコマンドは冗長なコマンドであるとして生成しないグラフィックスコマンド生成ステップとを含む。
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
本発明によれば、中間コマンドから生成されるグラフィックスコマンドの実行効率を向上させることができる。
実施の形態に係るグラフィックス処理システムの構成図である。 グラフィックスコマンド生成装置の構成図である。 図3(a)〜(d)は、中間コマンドからグラフィックスコマンドが生成される様子を説明する図である。 図4(a)は、図2の遷移コスト計算部によるモデルデータの遷移コストの計算方法を説明する図であり、図4(b)は、図2のソートキー付与部によるモデルデータへのソートキーの付与方法とを説明する図である。 実施の形態に係るグラフィックスコマンド生成装置によるグラフィックコマンド生成処理の手順を示すフローチャートである。 図2のグラフィックスコマンド変換部によって実行されるステップS60のグラフィックスコマンドへの変換処理の詳細な手順を示すフローチャートである。 複数のプロセスによりレンダリングの中間コマンド列が生成され、一つのレンダリングプロセスでソーティングと冗長性削除が行われるシステムを説明する図である。 複数のサーバによりレンダリングの中間コマンド列が生成され、サーバと通信するクライアントでソーティングと冗長性削除が行われるシステムを説明する図である。 複数のクライアントによりレンダリングの中間コマンド列が生成され、複数のクライアントと通信するサーバでソーティングと冗長性削除が行われるシステムを説明する図である。
図1は、実施の形態に係るグラフィックス処理システムの構成図である。このグラフィックス処理システムは、メインプロセッシングユニット100と、グラフィックスプロセッシングユニット140と、システムメモリ180と、ローカルメモリ160とを含む。
メインプロセッシングユニット100は、単一のメインプロセッサであってもよく、複数のプロセッサを含むマルチプロセッサシステムであってもよく、あるいは、複数のプロセッサコアを1個のパッケージに集積したマルチコアプロセッサであってもよい。ここでは、一例として、メインプロセッシングユニット100は、メインプロセッサ101と複数のサブプロセッサ110とを含むヘテロジニアス(Heterogeneous:異種混合)マルチコアプロセッサである。メインプロセッサ101と複数のサブプロセッサ110はバス120に接続されており、バス120にはメモリインタフェース170を介してシステムメモリ180が接続されている。メインプロセッサ101と複数のサブプロセッサ110はバス120を介してシステムメモリ180に対してデータを読み書きすることができる。
バス120には入出力インタフェース(以下、「IOIF」と呼ぶ)130を介して外部デバイス190が接続されている。ここでは、一例であり、これに限定するものではないが、外部デバイス190は、グラフィックスプロセッシングユニット140とローカルメモリ160を含む。
グラフィックスプロセッシングユニット(以下、単に「GPU」という)140は、グラフィックプロセッサコアを搭載したグラフィックチップであり、ローカルバス150を介してローカルメモリ160に対してデータを読み書きすることができる。
メインプロセッシングユニット100とGPU140は、IOIF130で接続されており、メインプロセッシングユニット100とGPU140は互いにIOIF130を介してデータをやりとりすることができる。
メインプロセッシングユニット100は、オブジェクトを描画するための描画コマンドを生成し、システムメモリ180内に設けられたコマンドバッファにキューイングする。GPU140は、コマンドバッファに蓄積された描画コマンドを順次読み出して処理する。
メインプロセッシングユニット100は、オブジェクトの3次元モデルにもとづいて、ポリゴンの頂点座標値、頂点カラー、法線ベクトル、UV値などのジオメトリデータを生成し、システムメモリ180に格納する。また、メインプロセッシングユニット100は、ポリゴン表面にマッピングするためのテクスチャをシステムメモリ180に格納する。さらに、メインプロセッシングユニット100は、ハードディスクなどの記録媒体からシェーダプログラムを読み込み、システムメモリ180に格納する。
システムメモリ180のメモリ領域はI/Oアドレス空間にメモリマッピングされており、GPU140は、I/Oアドレス空間にメモリマップされたシステムメモリ180のメモリ領域をIOIF130経由で読み取ることができる。
ジオメトリデータ、テクスチャおよびシェーダプログラムが格納されたシステムメモリ180内のメモリ領域は、IOIF130のコントローラに設けられたメモリ内のI/Oアドレス空間にメモリマッピングされる。GPU140は、IOIF130を介して、I/Oアドレス空間にメモリマッピングされたジオメトリデータ、テクスチャおよびシェーダプログラムを読み出す。GPU140は、システムメモリ180から読み出したジオメトリデータ、テクスチャなどグラフィックス演算に必要なデータをローカルメモリ160に格納することができる。
GPU140は、シェーダプログラムにしたがって、ジオメトリデータを用いてポリゴンのラスタライズデータを生成し、ピクセルデータをローカルメモリ160内のフレームバッファに書き込む。さらに、GPU140は、ポリゴン表面にテクスチャをマッピングし、テクスチャマッピング後のピクセルデータをフレームバッファに書き込む。
図2は、グラフィックスコマンド生成装置200の構成図である。グラフィックスコマンド生成装置200は、メインプロセッシングユニット100に実現される機能構成である。メインプロセッシングユニット100がマルチコアプロセッサである場合、メインプロセッサ101または少なくとも一つのサブプロセッサ110上のスレッドにより、グラフィックスコマンド生成装置200の各機能構成が実行される。
グラフィックスコマンド生成装置200は、遷移コスト計算部10、ソートキー付与部20、中間コマンド生成部30、モデルデータ記憶部32、ワークデータ記憶部34、ソーティング部40、およびグラフィックスコマンド変換部50を含み、グラフィックスコマンド変換部50は、同一性判定部60、グラフィックスコマンド生成部70、およびステートキャッシュ80を含む。
中間コマンドは、オブジェクトをレンダリングするためのデータとしてモデルデータとワークデータを有する。モデルデータは、ジオメトリデータ、テクスチャ、シェーダプログラムなどフレーム間で更新されない情報であり、モデルデータ記憶部32に記憶される。ワークデータは、オブジェクトの位置・姿勢などフレームごとに更新される情報であり、ワークデータ記憶部34に記憶される。
遷移コスト計算部10は、モデルデータ記憶部32からモデルデータを読み出し、二つの中間コマンド間でモデルデータが遷移する際の遷移コストを計算し、遷移コストをモデルデータ記憶部32に格納する。
ソートキー付与部20は、遷移コストにもとづいてモデルデータを遷移させる順序を決定し、その遷移順序にしたがってモデルデータにソートキーを付与し、モデルデータ記憶部32に記憶する。ソートキー付与部20は、ある一つのモデルデータ、たとえば、表示される画面領域を最も占有するモデルデータから開始して、遷移コストの小さい順にモデルデータを巡回することにより、モデルデータを遷移させる順序を決定し、その遷移順序にしたがってモデルデータにソートキーを付与する。
中間コマンド生成部30は、レンダリングするオブジェクトの情報を含むシーングラフから、フレームごとに、モデルデータ記憶部32からモデルデータを、ワークデータ記憶部34からワークデータを読み出し、モデルデータとワークデータを有する中間コマンドを生成する。
ソーティング部40は、中間コマンド生成部30により生成された複数の中間コマンドの実行順序を各中間コマンドのモデルデータに付与されたソートキーにもとづいて入れ替える。
グラフィックスコマンド変換部50は、ソーティング部40により実行順序が入れ替えられた複数の中間コマンドのそれぞれをグラフィックスプロセッサに実行させるためのグラフィックスコマンド列に変換する。
グラフィックスコマンド変換部50において、同一性判定部60は、中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であるかどうかを判定する。グラフィックスコマンド生成部70は、同一性判定部60により、ステートが同一でないと判定されたグラフィックスコマンドを生成するが、ステートが同一であると判定されたグラフィックスコマンドは冗長なコマンドであるとして生成しない。
より具体的には、グラフィックスコマンド生成部70により生成されたグラフィックスコマンドのステートはステートキャッシュ80にキャッシュされる。同一性判定部60は、中間コマンドから生成されるべきグラフィックスコマンドのステートにもとづいてステートキャッシュ80を参照し、キャッシュヒットした場合は、中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であると判定し、キャッシュヒットしない場合は、中間コマンドから生成されるべきグラフィックスコマンドのステート値によってステートキャッシュ80にキャッシュされたステート値を更新する。グラフィックスコマンド生成部70は、キャッシュヒットした場合は、そのグラフィックスコマンドは冗長なコマンドであるとして生成しないが、キャッシュヒットしない場合は、グラフィックスコマンドを生成する。
グラフィックスコマンド生成部70により生成されたグラフィックスコマンドは、GPU140に渡され、GPU140のハードウェア機能を用いて実行され、オブジェクトがレンダリングされる。
図3(a)〜(d)は、中間コマンドからグラフィックスコマンドが生成される様子を説明する図である。
図3(a)は、中間コマンド生成部30により生成された中間コマンド列を示す。ここでは、中間コマンドとしてDrawPacket1、DrawPacket2、DrawPacket3がこの順で生成されている。図3(b)は、ソーティング部40によりソートされた中間コマンド列を示す。ここでは、ソーティングの結果、2つの中間コマンドDrawPacket1、DrawPacket2の実行順序が入れ替わり、中間コマンドの実行順序はDrawPacket2、DrawPacket1、DrawPacket3の順になる。ソーティング部40によって生成される中間コマンドの実行順序で中間コマンドを実行すると、中間コマンド生成部30によって生成された実行順序で中間コマンドを実行した場合よりもモデルデータの遷移コストが小さくなる。
図3(c)および図3(d)は、グラフィックスコマンド変換部50が中間コマンドからグラフィックスコマンドへ変換する様子を示す。
まず、比較のために、図3(c)を参照して、同一性判定部60を動作させなかった場合に中間コマンドから変換されるグラフィックスコマンド列を説明する。
グラフィックスコマンド生成部70が、ソーティング部40によりソートされた中間コマンド列において最初の中間コマンドDrawPacket2をグラフィックスコマンド列に変換すると、
SetTexture(A);
SetVertexShader(P);
SetFragmentShader(X);
DrawIndexArray(J);
となる。これを第1グラフィックスコマンド列と呼ぶ。ここで、SetTextureはテクスチャを設定するグラフィックスコマンド、SetVertexShaderは頂点シェーダプログラムを設定するグラフィックスコマンド、SetFragmentShaderはフラグメントシェーダを設定するグラフィックスコマンドであり、DrawIndexArrayは設定されたパラメータやプログラムにもとづいてレンダリングを実行するグラフィックスコマンドである。括弧内のA、P、X、Jはステートである。たとえば、関数SetTexture()の引数AはテクスチャID、SetVertexShader()の引数PはシェーダIDまたはメモリ上のプログラムのアドレスである。
次に、グラフィックスコマンド生成部70が、ソーティング部40によりソートされた中間コマンド列において2番目の中間コマンドDrawPacket1をグラフィックスコマンド列に変換すると、
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(K);
となる。これを第2グラフィックスコマンド列と呼ぶ。
さらに、グラフィックスコマンド生成部70が、ソーティング部40によりソートされた中間コマンド列において3番目の中間コマンドDrawPacket3をグラフィックスコマンド列に変換すると、
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(L);
となる。これを第3グラフィックスコマンド列と呼ぶ。
次に、図3(d)を参照して、同一性判定部60を動作させた場合に中間コマンドから変換されるグラフィックスコマンド列を説明する。
同一性判定部60は、第1グラフィックスコマンド列と第2グラフィックスコマンド列を比較し、同じステート値で同じグラフィックスコマンドが繰り返し生成されているかどうかを判定する。第2グラフィックスコマンド列におけるSetTexture(B)は、第1グラフィックスコマンド列におけるSetTexture(A)と同じグラフィックスコマンドであるが、ステート値が異なる(B≠A)。第2グラフィックスコマンド列におけるSetVertexShader(P)は、第1グラフィックスコマンド列におけるSetVertexShader(P)と同じグラフィックスコマンドであり、ステート値も同じである(どちらもP)。第2グラフィックスコマンド列におけるSetFragmentShader(Y)は、第1グラフィックスコマンド列におけるSetFragmentShader(X)と同じグラフィックスコマンドであるが、ステート値が異なる(Y≠X)。第2グラフィックスコマンド列におけるDrawIndexArray(K)は、第1グラフィックスコマンド列におけるDrawIndexArray(J)と同じグラフィックスコマンドであるが、ステート値が異なる(K≠J)。
第2グラフィックスコマンド列におけるSetVertexShader(P)は、第1グラフィックスコマンド列におけるSetVertexShader(P)と同一ステートの同一コマンドであるから、冗長なコマンドであり、実行する必要がない。そこで、グラフィックスコマンド生成部70は、同一性判定部60の判定結果にもとづき、第2グラフィックスコマンド列におけるSetVertexShader(P)は生成せず、残りのSetTexture(B)、SetFragmentShader(Y)、DrawIndexArray(K)を生成する。すなわち、同一性判定部60が動作する場合、グラフィックスコマンド生成部70が生成する第2グラフィックスコマンド列は以下のようになる。
SetTexture(B);
SetFragmentShader(Y);
DrawIndexArray(K);
同様に、同一性判定部60は、第2グラフィックスコマンド列と第3グラフィックスコマンド列を比較し、同じステート値で同じグラフィックスコマンドが繰り返し生成されているかどうかを判定する。第3グラフィックスコマンド列におけるSetTexture(B)は、第2グラフィックスコマンド列におけるSetTexture(B)と同じグラフィックスコマンドであり、ステート値も同じである(どちらもB)。第3グラフィックスコマンド列におけるSetVertexShader(P)は、第2グラフィックスコマンド列におけるSetVertexShader(P)と同じグラフィックスコマンドであり、ステート値も同じである(どちらもP)。第3グラフィックスコマンド列におけるSetFragmentShader(Y)は、第2グラフィックスコマンド列におけるSetFragmentShader(Y)と同じグラフィックスコマンドであり、ステート値も同じである(どちらもY)。第3グラフィックスコマンド列におけるDrawIndexArray(L)は、第2グラフィックスコマンド列におけるDrawIndexArray(K)と同じグラフィックスコマンドであるが、ステート値が異なる(L≠K)。
第3グラフィックスコマンド列におけるSetTexture(B)、SetVertexShader(P)、SetFragmentShader(Y)は、第2グラフィックスコマンド列におけるSetTexture(B)、SetVertexShader(P)、SetFragmentShader(Y)と同一ステートの同一コマンドであるから、冗長なコマンドであり、実行する必要がない。そこで、グラフィックスコマンド生成部70は、同一性判定部60の判定結果にもとづき、第3グラフィックスコマンド列におけるSetTexture(B)、SetVertexShader(P)、SetFragmentShader(Y)は生成せず、残りのDrawIndexArray(L)を生成する。すなわち、同一性判定部60が動作する場合、グラフィックスコマンド生成部70が生成する第3グラフィックスコマンド列は以下のようになる。
DrawIndexArray(L);
以上をまとめると、本実施の形態のグラフィックスコマンド変換部50によれば、同一性判定部60がグラフィックスコマンドのステートの同一性を判定し、グラフィックスコマンド生成部70は同一性判定結果にもとづいて、ソーティング部40によってソートされた中間コマンド列から、冗長性を削除した以下のグラフィックスコマンド列を生成する。
SetTexture(A);
SetVertexShader(P);
SetFragmentShader(X);
DrawIndexArray(J);
SetTexture(B);
SetFragmentShader(Y);
DrawIndexArray(K);
DrawIndexArray(L);
図3(c)の同一性判定部60が動作しなかった場合と比べれば、生成されるグラフィックスコマンドの数は12から8に減っており、処理効率が向上する。
ここで、ソーティング部40が、図3(a)に示した中間コマンド生成部30が生成した中間コマンド列を図3(b)に示すようにソーティングすることの意義を説明する。
仮にソーティング部40によるソーティングが行われなかったとすると、図3(a)の中間コマンド列の順序でグラフィックコマンド列が生成される。その場合、同一性判定部60が動作しないとすると、中間コマンド列は以下のグラフィックコマンド列に変換されることになる。
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(K);
SetTexture(A);
SetVertexShader(P);
SetFragmentShader(X);
DrawIndexArray(J);
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(L);
ここで、同一性判定部60が動作すると、上記のグラフィックスコマンド列の6番目のSetVertexShader(P)はそれより前に実行される2番目のSetVertexShader(P)と同一ステートであり、10番目のSetVertexShader(P)はそれより前に実行される6番目のSetVertexShader(P)と同一ステートであるから冗長であるとして削除することができる。しかし、他のグラフィックスコマンドは、それより前に実行される同一のグラフィックスコマンドとステートが異なるから、冗長ではない。たとえば、5番目のSetTexture(A)はそれより前に実行される1番目のSetTexture(B)とステートが異なり、9番目のSetTexture(B)はそれより前に実行される5番目のSetTexture(A)とステートが異なるため、それぞれ実行を省くことはできないものである。
したがって、同一性判定部60の同一判定の結果、冗長であるとして削除できるグラフィックスコマンドは2つだけであり、グラフィックスコマンド生成部70により生成される冗長性を削除したグラフィックスコマンド列は以下のようにグラフィックスコマンドの数が10になる。
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(K);
SetTexture(A);
SetFragmentShader(X);
DrawIndexArray(J);
SetTexture(B);
SetFragmentShader(Y);
DrawIndexArray(L);
このように、ソーティング部40によって中間コマンド列の実行順序をソーティングすることによって、同一性判定部60が冗長であると判定するグラフィックスコマンドの数を増やすことができ、グラフィックスコマンド生成部70によって冗長性を削除して最適化したグラフィックスコマンド列を生成して、グラフィックス処理の効率を高めることができる。
以下、遷移コストにもとづく中間コマンド列のソーティング処理について、詳しく説明する。
図4(a)は、遷移コスト計算部10によるモデルデータの遷移コストの計算方法を説明する図であり、図4(b)は、ソートキー付与部20によるモデルデータへのソートキーの付与方法とを説明する図である。
遷移コスト計算部10は、あるモデルデータから別のモデルデータへ遷移した場合、グラフィックス演算に係るハードウェアが受ける処理負荷を示す遷移コストを計算する。たとえば、モデルデータが遷移することにより、テクスチャが変更される場合、遷移コストを10ポイントとし、フラグメントシェーダが変更される場合、遷移コストを30ポイントとし、頂点シェーダが変更される場合、遷移コストを20ポイントとする。これらのポイントは、グラフィックスハードウェアにおいて、テクスチャ、フラグメントシェーダ、頂点シェーダを変更する際の負荷を相対的に表したものである。
たとえば、モデルデータAからモデルデータBに遷移するとき、テクスチャが3枚、フラグメントシェーダが1個変更になるとすると、遷移コストは合計すると、10×3+30=60ポイントとなる。
遷移コスト計算部10は、各フレームでレンダリングされるすべてのオブジェクトのモデルデータについて、2つのモデルデータ間を遷移するときの遷移コストを計算する。図4(a)は、4つのモデルデータA〜Dについて、任意の2つのモデルデータ間の遷移コストを計算した例を示す。モデルデータAからモデルデータBへの遷移コストは10、モデルデータAからモデルデータCへの遷移コストは30、モデルデータAからモデルデータDへの遷移コストは50、モデルデータBからモデルデータCへの遷移コストは40、モデルデータBからモデルデータDへの遷移コストは20、モデルデータCからモデルデータDへの遷移コストは10である。
ソートキー付与部20は、表示される画面領域を最も占有するモデルデータ、たとえば、画面の中心を占めるであろうモデルデータを開始点として、遷移コストが最も小さいモデルデータを次に選択することを繰り返すことにより、すべてのモデルデータを巡回する。これにより、モデルデータを遷移させる順序を決定し、その遷移順序にしたがってモデルデータにソートキーを付与する。
画面の中心を占めるであろうモデルデータから始めるのは、そのモデルデータを最初に描画することで、後続する中間コマンドの生成するピクセルがその後ろに隠れ、カリングにより処理をスキップできる可能性が高まり、処理効率が向上するからである。
ここでは、モデルデータAが画面の中心を占めると想定し、モデルデータAから開始する。図4(b)に示すように、モデルデータAを起点として、モデルデータBに遷移すると遷移コストは10ポイント、モデルデータCに遷移すると遷移コストは30ポイント、モデルデータDに遷移すると遷移コストは50ポイントであるから、3つのモデルデータB、C、Dの中から遷移コストが最小であるモデルデータBを2番目として選択する。
同様に、モデルデータBから、モデルデータCに遷移すると遷移コストは40ポイント、モデルデータDに遷移すると遷移コストは20ポイントであるから、残り2つのモデルデータC、Dの中から遷移コストが最小であるモデルデータDを3番目として選択する。最後に、モデルデータDから残りのモデルデータCに遷移する。4番目のモデルデータCへの遷移コストは10である。
このようにして、ソートキー付与部20は、モデルデータ間の遷移コストにもとづいてモデルデータA、B、D、Cの順にモデルデータを遷移させる順序を決定し、この順にモデルデータA、B、D、Cにそれぞれソートキー0、1、2、3を割り当てる。
ここでは、任意の2つのモデルデータ間の遷移コストを計算して、あるモデルデータを起点として、最小遷移コストを探索することにより、モデルデータの遷移順序を決定し、ソートキーを付与したが、遷移コストにもとづいて別の探索アルゴリズムを用いてモデルデータの遷移順序を決定してもよい。また、任意の2つのモデルデータ間の遷移コストをすべて計算することが処理負荷になる場合は、モデルデータの一部の組み合わせについて遷移コストを求め、モデルデータを巡回するパスを遷移コストを求めた範囲に限定してもよい。
中間コマンド生成部30がモデルデータとワークデータを有する中間コマンドを生成するとき、モデルデータにはソートキーが割り当てられており、ソーティング部40はソートキーの順に中間コマンド生成部30が生成した中間コマンド列をソーティングする。これにより、モデルデータが似ている中間コマンドがクラスタリングされて連続して実行されるようになる。
モデルデータの遷移コストが小さい順にモデルデータを遷移させると、中間コマンド列からグラフィックスコマンド列を生成したとき、繰り返し実行されるグラフィックスコマンドのステートが一致することが多くなる。たとえば、遷移コストが小さいということは、テクスチャやシェーダの変更が少ないということであり、グラフィックスコマンドのステートが変更されることも少なくなる。そのため、モデルデータの遷移コストが小さい順に中間コマンド列をソーティングした上で、中間コマンド列をグラフィックスコマンド列に変更すると、同一性判定によって削除できるグラフィックスコマンドの数を増やすことができる。
図5は、実施の形態に係るグラフィックスコマンド生成装置200によるグラフィックコマンド生成処理の手順を示すフローチャートである。
レンダリングされるすべてのオブジェクトのモデルデータを生成する(S10)。遷移コスト計算部10は、モデルデータ間を遷移するときの遷移コストを計算する(S20)。ソートキー付与部20は、遷移コストにもとづいてモデルデータを遷移する順序を決定し、その順序にしたがってモデルデータにソートキーを付与する(S30)。ステップS10〜S30の処理はオフラインで実行され、モデルデータ記憶部32にはソートキー付きのモデルデータが記憶される。
各フレームについて、以下のステップS40〜S70が繰り返し実行される。まず、中間コマンド生成部30は、モデルデータとワークデータを有する中間コマンドを生成する(S40)。ソーティング部40は、モデルデータに付与されたソートキーの順に中間コマンド生成部30が生成した中間コマンドをソーティングする(S50)。グラフィックスコマンド変換部50は、ソーティング後の中間コマンドをグラフィックスコマンドに変換する(S60)。次のフレームのレンダリングをする場合(S70のY)は、ステップS40に戻ってステップS40〜S60の処理を繰り返し、現フレームでレンダリングを終える場合(S70のN)、グラフィックスコマンド生成処理を終了する。
図6は、グラフィックスコマンド変換部50によって実行されるステップS60のグラフィックスコマンドへの変換処理の詳細な手順を示すフローチャートである。
グラフィックスコマンド変換部50において、同一性判定部60は、中間コマンドからこれから生成されようとしているグラフィックスコマンドのステートとその設定値にもとづいてステートキャッシュ80を参照し、当該ステート値がキャッシュされているかどうかを調べる(S80)。
ステートキャッシュ80において当該ステート値がキャッシュヒットした場合(S82のY)、既に同一のステート値のグラフィックスコマンドが実行されていることから、同一性判定部60は、中間コマンドから生成されようとしているグラフィックスコマンドが冗長であると判定し、グラフィックスコマンド生成部70は、このグラフィックスコマンドを生成しないで終了する。
一方、ステートキャッシュ80において当該ステート値がキャッシュヒットしなかった場合(S82のN)、中間コマンドからこれから生成されようとしているグラフィックスコマンドが以前は異なるステート値で実行されていたか、そのグラフィックスコマンドはまだ実行されたことがない。この場合、同一性判定部60は、中間コマンドから生成されようとしているグラフィックスコマンドは冗長ではないと判定し、当該ステート値によってステートキャッシュ80を更新し(S84)、グラフィックスコマンド生成部70は、中間コマンドからグラフィックスコマンドを生成する(S86)。
同一性判定部60とグラフィックスコマンド生成部70は、ステートキャッシュ80を用いて、ステップS80〜S86の処理を繰り返し、中間コマンド列をグラフィックスコマンド列に変換する。これにより、同一の設定を行う冗長なグラフィックスコマンドを削除したグラフィックスコマンド列が生成される。
以下、ステートキャッシュ80にキャッシュされるステートの種類の具体例を挙げる。
(1)フラグメントシェーダ/頂点シェーダのプログラムID
フラグメントシェーダ/頂点シェーダのプログラムの生成時に、ユニークIDをふっておき、ステートキャッシュ80にそのIDを保持し、同一性判定部60は、同一のIDの場合はプログラム設定コマンドは冗長であると判定し、グラフィックスコマンド生成部70はそのプログラム設定コマンドの生成をスキップする。このIDは、シェーダが一つの論理アドレス空間内に存在する場合はその先頭アドレスでもよい。
(2)テクスチャID
テクスチャ生成時に、ユニークIDをふっておき、ステートキャッシュ80にそのIDをテクスチャユニット毎に保持する。同一性判定部60は、レンダリング時にテクスチャユニットのIDをチェックし同一であれば、テクスチャ設定コマンドは冗長であると判定し、グラフィックスコマンド生成部70は、そのテクスチャ設定コマンドの生成をスキップする。このIDは、テクスチャ一つの論理アドレス空間内に存在する場合はその先頭アドレスでもよい。
(3)デプステスト/ブレンド/ステンシルテストの設定値
デプステスト、ブレンド、ステンシルテストを行うか行わないか(enable/disable)の設定をBool値でステートキャッシュ80に保持し、同一性判定部60は、設定値が同一の場合はこれらの処理を行うか行わないかを設定するコマンドは冗長であると判定し、グラフィックスコマンド生成部70はその設定コマンドの生成をスキップする。
(4)デプステスト関数/ブレンド関数/ステンシルテストオペレータ
設定した各関数を意味する定数をステートキャッシュ80にキャッシュする。デプステスト関数であれば、そのデプス関数がイコール(=)、less than(<)、greater than(>)のいずれであるかを識別する定数、ブレンド関数であれば、ブレンド比率を識別する定数、ステンシルテストオペレータであれば、インクリメント/デクリメントのいずれであるかを識別する定数がステートキャッシュ80に保持される。同一性判定部60は、各関数を識別する定数が同一の場合はこれらの関数の設定コマンドは冗長であると判定し、グラフィックスコマンド生成部70はその設定コマンドの生成をスキップする。
(5)各種行列
各種行列にIDをふっておき、ステートキャッシュ80にそのIDを保持する。同一性判定部60は、同一のIDの場合は、行列の設定コマンドは冗長であると判定し、グラフィックスコマンド生成部70はその行列の設定コマンドの生成をスキップする。たとえば、View行列やProjection行列は、レンダリングを通して切り替わるのはシャドウマップレンダリング時と通常レンダリングの時ぐらいでおおよそ変わらないから、多くの場合、行列の設定コマンドの生成はスキップすることができる。
ステートキャッシュ80にキャッシュされるステートをまとめると、以下のようになる。
View Matrix ID
Projection Matrix ID
Model Matrix ID
Fragment Shader ID
Vertex Shader ID
Texture ID
Depth Test (Enable / Disable)
Depth Test Function
Stencil Test(Enable / Disable)
Stencil Test Function
Blend (Enable / Disable)
Blend Function
以上述べたように、本実施の形態のグラフィックスコマンド生成装置200によれば、モデルデータの遷移コストにもとづいてソートされた中間コマンドを順次グラフィックスコマンドに変換する。グラフィックスコマンドに変換する際、グラフィックスコマンドによって設定したステートの値をキャッシュしておき、ステートの設定値が変化した場合のみグラフィックスコマンドを生成することで、生成されるグラフィックスコマンドの数を減らすことができ、処理効率を高めることができる。GPUハードウェアは深いパイプライン動作を行うようになっており、一部のステートが変化する場合、パイプラインの上段でストールしてステートの更新を待つことになるが、本実施の形態では、GPUハードウェア内部のコンテキスト切り替えに伴う性能低下を抑えることができるため、より多くのデータをレンダリング可能である。
図7〜図9を参照して、実施の形態のグラフィックスコマンド生成装置200の応用例をいくつか説明する。
図7は、複数のプロセスによりレンダリングの中間コマンド列が生成され、一つのレンダリングプロセスでソーティングと冗長性削除が行われるシステムを説明する図である。
複数のプロセスA〜Cが並列にレンダリングの中間コマンド列を生成するが、テクスチャ、シェーダなどの各種リソースに対してIDをふって管理するユニーク管理プロセスが存在し、システム全体でリソースのIDがユニークになるように管理する。各プロセスA〜Cは、ユニークID管理プロセスに各種リソースのIDを問い合わせ、モデルデータにソートキーを付与する。各プロセスA〜Cが生成した中間コマンド列は一つのレンダリングプロセスに渡され、最終的にレンダリングプロセスがソートキーによる中間コマンド列のソーティング、中間コマンド列からグラフィックコマンド列への変換、ステートにもとづく同一性判定による冗長性削除を行う。
この場合、グラフィックスコマンド生成装置200の遷移コスト計算部10、ソートキー付与部20、中間コマンド生成部30の機能は、各プロセスA〜Cに実装されるが、ソーティング部40、同一性判定部60、グラフィックスコマンド生成部70の各機能は、1つのレンダリングプロセスに実装される。
この応用例では、複数のプロセスを用いて処理を分散化し、処理効率を上げることができるという効果を奏する。
図8は、複数のサーバによりレンダリングの中間コマンド列が生成され、サーバと通信するクライアントでソーティングと冗長性削除が行われるシステムを説明する図である。
サービス提供者側でテクスチャ、シェーダなどの各種リソースに対してIDをふって管理し、各サーバA〜Cが並列にレンダリングの中間コマンド列を生成し、モデルデータのソートキーをコンテンツとともにクライアントのアプリケーションに配信することで、クライアントは中間コマンドをソートし、冗長性を削除したグラフィックスコマンドを生成することができる。
この場合、グラフィックスコマンド生成装置200の遷移コスト計算部10、ソートキー付与部20、中間コマンド生成部30の機能は、各サーバA〜Cに実装されるが、ソーティング部40、同一性判定部60、グラフィックスコマンド生成部70の各機能は、クライアントに実装される。
この応用例では、クライアントの描画負荷を削減でき、クライアントの描画効率を高められ、また、クライアントの消費電力を削減することができるという効果を奏する。
図9は、複数のクライアントによりレンダリングの中間コマンド列が生成され、複数のクライアントと通信するサーバでソーティングと冗長性削除が行われるシステムを説明する図である。
クライアントは、サービス提供側が事前に作成したモデルデータを組み合わせたモデルを作成し、レンダリング中間コマンドをサーバへ送付する。サーバは、複数のクライアントA〜Cが作成した中間コマンドを受けつけ、それらを一つの画面にレンダリングする。たとえば、大きな画像をレンダリングする場合、複数のクライアントが並列に中間コマンドを生成し、サーバが複数のクライアントA〜Cから中間コマンドを受信して、レンダリングをすることがある。
サーバは、複数のクライアントA〜Cから受信した中間コマンドのソーティングを行い、グラフィックスコマンド列に変換する際、冗長なグラフィックスコマンドを削減してレンダリングを行う。
最後に、サーバはレンダリングした画像を各クライアントA〜Cに配信する。この画像には、他クライアントが送信したモデルデータが含まれている。
この場合、グラフィックスコマンド生成装置200の遷移コスト計算部10、ソートキー付与部20、中間コマンド生成部30の機能は、各クライアントA〜Cに実装されるが、ソーティング部40、同一性判定部60、グラフィックスコマンド生成部70の各機能は、サーバに実装される。
この応用例では、サーバーの消費電力、計算資源を削減することができる。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
10 遷移コスト計算部、 20 ソートキー付与部、 30 中間コマンド生成部、 32 モデルデータ記憶部、 34 ワークデータ記憶部、 40 ソーティング部、 50 グラフィックスコマンド変換部、 60 同一性判定部、 70 グラフィックスコマンド生成部、 80 ステートキャッシュ、 100 メインプロセッシングユニット、 101 メインプロセッサ、 110 サブプロセッサ、 120 バス、 130 IOIF、 140 GPU、 150 ローカルバス、 160 ローカルメモリ、 170 メモリインタフェース、 180 システムメモリ、 190 外部デバイス、 200 グラフィックスコマンド生成装置。

Claims (10)

  1. オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドを生成する中間コマンド生成部と、
    生成された中間コマンドをグラフィックスプロセッサに実行させるためのグラフィックスコマンド列に変換するグラフィックスコマンド変換部と
    オブジェクトを描画するためのモデルデータを変更することによってグラフィックス演算に係るハードウェアが受ける負荷を表す遷移コストを計算する遷移コスト計算部と、
    前記遷移コストにもとづいてモデルデータを遷移させる順序を決定し、その遷移順序にしたがって各モデルデータにソートキーを付与するソートキー付与部と、
    前記中間コマンド生成部により生成された複数の中間コマンドの実行順序を各中間コマンドのモデルデータに付与されたソートキーにもとづいて入れ替えるソーティング部とを含み、
    前記グラフィックスコマンド変換部は、
    前記中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であるかどうかを判定する同一性判定部と、
    前記同一性判定部により、ステートが同一でないと判定されたグラフィックスコマンドを生成し、ステートが同一であると判定されたグラフィックスコマンドは冗長なコマンドであるとして生成しないグラフィックスコマンド生成部とを含み、
    前記グラフィックスコマンド変換部は、前記ソーティング部により実行順序が入れ替えられた複数の中間コマンドのそれぞれをグラフィックスコマンド列に変換することを特徴とするグラフィックスコマンド生成装置。
  2. 前記グラフィックスコマンド変換部は、前記グラフィックスコマンド生成部により生成されたグラフィックスコマンドのステートをキャッシュするステートキャッシュをさらに含み、
    前記同一性判定部は、前記中間コマンドから生成されるべきグラフィックスコマンドのステートについて前記ステートキャッシュを参照し、キャッシュヒットした場合は、前記中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であると判定し、キャッシュヒットしない場合は、前記中間コマンドから生成されるべきグラフィックスコマンドのステートによってキャッシュを更新することを特徴とする請求項1に記載のグラフィックスコマンド生成装置。
  3. 前記ソートキー付与部は、ある一つのモデルデータから開始して、前記遷移コストの小さい順にモデルデータを巡回することにより、モデルデータを遷移させる順序を決定することを特徴とする請求項1または2に記載のグラフィックスコマンド生成装置。
  4. 前記ソーティング部は、表示される画面領域を最も占有するモデルデータを先頭にして、前記遷移コストの小さい順にモデルデータを巡回することにより、モデルデータを遷移させる順序を決定することを特徴とする請求項1または2に記載のグラフィックスコマンド生成装置。
  5. グラフィックスコマンド生成装置において実行されるグラフィックスコマンド生成方法であって、
    中間コマンド生成部が、オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドを生成する中間コマンド生成ステップと、
    グラフィックスコマンド変換部が、生成された中間コマンドをグラフィックスプロセッサに実行させるためのグラフィックスコマンド列に変換するグラフィックスコマンド変換ステップと
    遷移コスト計算部が、オブジェクトを描画するためのモデルデータを変更することによってグラフィックス演算に係るハードウェアが受ける負荷を表す遷移コストを計算する遷移コスト計算ステップと、
    ソートキー付与部が、前記遷移コストにもとづいてモデルデータを遷移させる順序を決定し、その遷移順序にしたがって各モデルデータにソートキーを付与するソートキー付与ステップと、
    ソーティング部が、前記中間コマンド生成ステップにより生成された複数の中間コマンドの実行順序を各中間コマンドのモデルデータに付与されたソートキーにもとづいて入れ替えるソーティングステップとを含み、
    前記グラフィックスコマンド変換ステップは、
    同一性判定部が、前記中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であるかどうかを判定する同一性判定ステップと、
    グラフィックスコマンド生成部が、前記同一性判定ステップにより、ステートが同一でないと判定されたグラフィックスコマンドを生成し、ステートが同一であると判定されたグラフィックスコマンドは冗長なコマンドであるとして生成しないグラフィックスコマンド生成ステップとを含み、
    前記グラフィックスコマンド変換ステップは、前記ソーティングステップにより実行順序が入れ替えられた複数の中間コマンドのそれぞれをグラフィックスコマンド列に変換することを特徴とするグラフィックスコマンド生成方法。
  6. オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドを生成する中間コマンド生成機能と、
    生成された中間コマンドをグラフィックスプロセッサに実行させるためのグラフィックスコマンド列に変換するグラフィックスコマンド変換機能と
    オブジェクトを描画するためのモデルデータを変更することによってグラフィックス演算に係るハードウェアが受ける負荷を表す遷移コストを計算する遷移コスト計算機能と、
    前記遷移コストにもとづいてモデルデータを遷移させる順序を決定し、その遷移順序にしたがって各モデルデータにソートキーを付与するソートキー付与機能と、
    前記中間コマンド生成機能により生成された複数の中間コマンドの実行順序を各中間コマンドのモデルデータに付与されたソートキーにもとづいて入れ替えるソーティング機能とをコンピュータに実現させ、
    前記グラフィックスコマンド変換機能は、
    前記中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であるかどうかを判定する同一性判定機能と、
    前記同一性判定機能により、ステートが同一でないと判定されたグラフィックスコマンドを生成し、ステートが同一であると判定されたグラフィックスコマンドは冗長なコマンドであるとして生成しないグラフィックスコマンド生成機能とを含み、
    前記グラフィックスコマンド変換機能は、前記ソーティング機能により実行順序が入れ替えられた複数の中間コマンドのそれぞれをグラフィックスコマンド列に変換することを特徴とするグラフィックスコマンド生成プログラム。
  7. オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドを生成する中間コマンド生成部と、
    オブジェクトを描画するためのモデルデータを変更することによってグラフィックス演算に係るハードウェアが受ける負荷を表す遷移コストを計算する遷移コスト計算部と、
    前記遷移コストにもとづいてモデルデータを遷移させる順序を決定し、その遷移順序にしたがって各モデルデータにソートキーを付与するソートキー付与部と、
    前記中間コマンド生成部により生成された複数の中間コマンドの実行順序を各中間コマンドのモデルデータに付与されたソートキーにもとづいて入れ替えさせるために、生成された中間コマンドをモデルデータに付与されたソートキーとともにクライアント装置に送信する通信部とを含むことを特徴とするサーバ装置。
  8. オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドをモデルデータに付与されたソートキーとともにサーバ装置から受信する通信部と、
    受信された中間コマンドをグラフィックスプロセッサに実行させるためのグラフィックスコマンド列に変換するグラフィックスコマンド変換部と、
    前記通信部により受信された複数の中間コマンドの実行順序を各中間コマンドのモデルデータに付与されたソートキーにもとづいて入れ替えるソーティング部とを含み、
    前記グラフィックスコマンド変換部は、
    前記中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であるかどうかを判定する同一性判定部と、
    前記同一性判定部により、ステートが同一でないと判定されたグラフィックスコマンドを生成し、ステートが同一であると判定されたグラフィックスコマンドは冗長なコマンドであるとして生成しないグラフィックスコマンド生成部とを含み、
    前記グラフィックスコマンド変換部は、前記ソーティング部により実行順序が入れ替えられた複数の中間コマンドのそれぞれをグラフィックスコマンド列に変換することを特徴とするクライアント装置。
  9. オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドを生成する中間コマンド生成部と、
    オブジェクトを描画するためのモデルデータを変更することによってグラフィックス演算に係るハードウェアが受ける負荷を表す遷移コストを計算する遷移コスト計算部と、
    前記遷移コストにもとづいてモデルデータを遷移させる順序を決定し、その遷移順序にしたがって各モデルデータにソートキーを付与するソートキー付与部と、
    前記中間コマンド生成部により生成された複数の中間コマンドの実行順序を各中間コマンドのモデルデータに付与されたソートキーにもとづいて入れ替えさせるために、生成された中間コマンドをモデルデータに付与されたソートキーとともにサーバ装置に送信する通信部とを含むことを特徴とするクライアント装置。
  10. オブジェクトを描画するためのモデルデータを有する中間的な描画コマンドである中間コマンドをモデルデータに付与されたソートキーとともにクライアント装置から受信する通信部と、
    受信された中間コマンドをグラフィックスプロセッサに実行させるためのグラフィックスコマンド列に変換するグラフィックスコマンド変換部と、
    前記通信部により受信された複数の中間コマンドの実行順序を各中間コマンドのモデルデータに付与されたソートキーにもとづいて入れ替えるソーティング部とを含み、
    前記グラフィックスコマンド変換部は、
    前記中間コマンドから生成されるべきグラフィックスコマンドのステートが以前に生成されたグラフィックスコマンドのステートと同一であるかどうかを判定する同一性判定部と、
    前記同一性判定部により、ステートが同一でないと判定されたグラフィックスコマンドを生成し、ステートが同一であると判定されたグラフィックスコマンドは冗長なコマンドであるとして生成しないグラフィックスコマンド生成部とを含み、
    前記グラフィックスコマンド変換部は、前記ソーティング部により実行順序が入れ替えられた複数の中間コマンドのそれぞれをグラフィックスコマンド列に変換することを特徴とするサーバ装置。
JP2011267090A 2011-12-06 2011-12-06 グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置 Active JP5436526B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011267090A JP5436526B2 (ja) 2011-12-06 2011-12-06 グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置
US13/690,004 US9424617B2 (en) 2011-12-06 2012-11-30 Graphics command generation device and graphics command generation method
CN201210511387.8A CN103150699B (zh) 2011-12-06 2012-12-04 图形指令生成装置和图形指令生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011267090A JP5436526B2 (ja) 2011-12-06 2011-12-06 グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置

Publications (2)

Publication Number Publication Date
JP2013120438A JP2013120438A (ja) 2013-06-17
JP5436526B2 true JP5436526B2 (ja) 2014-03-05

Family

ID=48523671

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011267090A Active JP5436526B2 (ja) 2011-12-06 2011-12-06 グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置

Country Status (3)

Country Link
US (1) US9424617B2 (ja)
JP (1) JP5436526B2 (ja)
CN (1) CN103150699B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262391B2 (en) 2016-10-10 2019-04-16 Samsung Electronics Co., Ltd. Graphics processing devices and graphics processing methods

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9342857B2 (en) * 2013-03-29 2016-05-17 Nvidia Corporation Techniques for locally modifying draw calls
US9256729B2 (en) * 2013-06-20 2016-02-09 International Business Machines Corporation Address translation/specification field for hardware accelerator
CN104679486B (zh) * 2013-11-28 2019-05-28 华为技术有限公司 一种图形数据的处理方法、装置及系统
CN103714569B (zh) * 2013-12-19 2017-12-15 华为技术有限公司 一种渲染指令的处理方法、装置和系统
EP2995494B1 (en) * 2014-09-11 2020-04-08 Continental Automotive GmbH Animation arrangement
US10078883B2 (en) 2015-12-03 2018-09-18 Qualcomm Incorporated Writing graphics data from local memory to system memory
EP3185214A1 (en) * 2015-12-22 2017-06-28 Dassault Systèmes Streaming of hybrid geometry and image based 3d objects
KR102091398B1 (ko) * 2017-01-27 2020-03-20 미쓰비시덴키 가부시키가이샤 화상 묘화 장치, 화상 묘화 방법, 및 화상 묘화 프로그램
CN109558187B (zh) * 2017-09-27 2022-08-23 斑马智行网络(香港)有限公司 一种用户界面渲染方法及装置
JP6826021B2 (ja) * 2017-11-20 2021-02-03 株式会社日立製作所 ストレージシステム
US10269167B1 (en) 2018-05-21 2019-04-23 Apple Inc. Indirect command buffers for graphics processing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03155593A (ja) * 1989-11-14 1991-07-03 Toshiba Corp グラフィック表示装置
US5329616A (en) 1990-08-16 1994-07-12 Canon Kabushiki Kaisha Compressed image stores for high resolution computer graphics
JPH0540463A (ja) * 1991-08-08 1993-02-19 Hitachi Ltd 多階調文字発生装置
US5966140A (en) * 1997-06-20 1999-10-12 Microsoft Corporation Method for creating progressive simplicial complexes
JPH11170657A (ja) * 1997-12-16 1999-06-29 Fuji Xerox Co Ltd 画像処理装置
US6574360B1 (en) * 1999-07-23 2003-06-03 International Business Machines Corp. Accelerated occlusion culling using directional discretized occluders and system therefore
US20070013694A1 (en) * 2005-07-13 2007-01-18 Microsoft Corporation Optimized meshlet ordering
US7694290B2 (en) * 2005-09-01 2010-04-06 Intel Corporation System and method for partitioning an application utilizing a throughput-driven aggregation and mapping approach
US8269782B2 (en) 2006-11-10 2012-09-18 Sony Computer Entertainment Inc. Graphics processing apparatus
US8448067B2 (en) * 2006-12-07 2013-05-21 Sony Computer Entertainment America, LLC Graphics command management tool and methods for analyzing performance for command changes before application modification
CN101663640A (zh) 2007-06-27 2010-03-03 国际商业机器公司 提供合成显示的系统和方法
US8200594B1 (en) * 2008-09-10 2012-06-12 Nvidia Corporation System, method, and computer program product for accelerating a game artificial intelligence process
JP5304443B2 (ja) * 2009-05-28 2013-10-02 富士通セミコンダクター株式会社 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム
JP2011083914A (ja) * 2009-10-13 2011-04-28 Ricoh Co Ltd 画像形成装置、その制御方法及び制御プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10262391B2 (en) 2016-10-10 2019-04-16 Samsung Electronics Co., Ltd. Graphics processing devices and graphics processing methods

Also Published As

Publication number Publication date
US9424617B2 (en) 2016-08-23
JP2013120438A (ja) 2013-06-17
CN103150699A (zh) 2013-06-12
US20130141448A1 (en) 2013-06-06
CN103150699B (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
JP5436526B2 (ja) グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置
US10210651B2 (en) Allocation of tiles to processing engines in a graphics processing system
JP4674729B2 (ja) グラフィックス処理装置、グラフィックスライブラリモジュール、およびグラフィックス処理方法
JP4550878B2 (ja) グラフィックス処理装置
US9411596B2 (en) Tiled cache invalidation
JP5154551B2 (ja) グラフィックスパイプラインステートの高速再構成
JP6073533B1 (ja) タイルベースのアーキテクチャ上での最適化されたマルチパスレンダリング
JP5956770B2 (ja) タイルベースのグラフィックスシステム及びこのようなシステムの動作方法
US8933943B2 (en) Technique for performing load balancing for parallel rendering
US8587602B2 (en) GPU texture tile detail control
JP5960368B2 (ja) ビジビリティ情報を用いたグラフィックスデータのレンダリング
US20150178879A1 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
US20170004647A1 (en) Rendering graphics data on demand
KR101609079B1 (ko) 그래픽 프로세싱 유닛에서의 명령 선별
CN111737019B (zh) 一种显存资源的调度方法、装置及计算机存储介质
AU2008258132B2 (en) Load balancing in multiple processor rendering systems
US20150213638A1 (en) Hierarchical tiled caching
JP5320334B2 (ja) 画像処理装置及びプログラム
KR102521654B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법
JP2013186770A (ja) データ処理装置
Willmott Rapid simplification of multi-attribute meshes
US8988444B2 (en) System and method for configuring graphics register data and recording medium
US20230195626A1 (en) Variable dispatch walk for successive cache accesses
TW202341062A (zh) 計算機圖形處理方法以及系統
CN117495655A (zh) 图形处理器

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131210

R150 Certificate of patent or registration of utility model

Ref document number: 5436526

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250