JP4413936B2 - グラフィックス処理の最適化方法 - Google Patents

グラフィックス処理の最適化方法 Download PDF

Info

Publication number
JP4413936B2
JP4413936B2 JP2007035802A JP2007035802A JP4413936B2 JP 4413936 B2 JP4413936 B2 JP 4413936B2 JP 2007035802 A JP2007035802 A JP 2007035802A JP 2007035802 A JP2007035802 A JP 2007035802A JP 4413936 B2 JP4413936 B2 JP 4413936B2
Authority
JP
Japan
Prior art keywords
graphics
processor
processors
polygons
geometry
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.)
Expired - Lifetime
Application number
JP2007035802A
Other languages
English (en)
Other versions
JP2007179563A (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 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 Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2007179563A publication Critical patent/JP2007179563A/ja
Application granted granted Critical
Publication of JP4413936B2 publication Critical patent/JP4413936B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

本発明は、一般にはグラフィックス処理を最適化する方法に関し、より特定的にはマルチプロセッサシステム用のグラフィックス処理最適化方法に関する。
現在のコンピュータシステムは、一般にグラフィックス画像の生成を行う。グラフィックス画像の生成は、専門的でかつ計算コストのかかる手続である。このため多くのコンピュータシステムでは、グラフィックス処理の様々な部分を実行するために専用のハードウェアを用いる。
図1は、こうした現行システムの一例である。メインプロセッサ100は汎用プロセッサである。ジオメトリプロセッサ102はメインプロセッサ100内部の専用サブプロセッサであり、遠近法等の問題を考慮しながら3次元イメージを2次元イメージに変換するのに必要な一般的変換を実行する。このようなジオメトリプロセッサは他の一般的な3次元グラフィックス計算にも使用できる。
ジオメトリプロセッサ102はまた、メインプロセッサ100と別個に設けてもよいし、またはメインプロセッサ100上でソフトウェアプログラムとして実行してもよい。ジオメトリプロセッサ102からは、グラフィック図形の作成に必要な情報を含む表示リストが最終的に得られる。
一般的には、表示リストはポリゴン(多角形)生成用の情報を含む。ポリゴンは三角形であることが多いが、他のポリゴンも可能である。表示リストは描かれたポリゴンの種類と、そのポリゴン生成に必要な情報とを含む。ここでは三角形が示され、かつ三角形の各頂点についての情報も表示リストに含まれる。
バス104は、ジオメトリプロセッサ102−グラフィックプロセッサ106間の通信チャネルである。グラフィックプロセッサ106は表示リストをレンダリングするための専用回路である。グラフィックプロセッサ106は複数の副回路を含む。入力バッファ108は表示リストをバッファする。
ディジタル差動分析器112(以後、「DDA112」と称する)は、ポリゴンの頂点間の直線を計算する。DDA112はDDAセットアップエンジンを含む。画素(ピクセル)プロセッサ114は複数の機能を実行するが、主機能としてポリゴン中の各画素の最終的なRGB値を計算する。このステップはレンダリングと呼ばれる。
ポリゴンのレンダリング処理において、画素プロセッサ114はテクスチャリングステップを実行する。画素のRGB決定の一部は、ポリゴンに選択されたテクスチャによって異なる。このテクスチャマップ形式のテクスチャを、画素プロセッサ114によってポリゴンに適用する。
フレームバッファ116はダイナミックランダムアクセスメモリ、すなわちDRAMであり、フレームまたはフィールド(二重バッファリングの場合)全体が作成されるまでポリゴンから復元したフレームを蓄積する。その後、このフレームはバスを介してディジタル−アナログ変換器へ、かつ最終的にはモニタへ送られる。フレームバッファ116は画素プロセッサ114からデータを受信するが、画素プロセッサ114もフレームバッファ116として機能する。
テクスチャバッファ118とDRAMフレームバッファ120は、画素プロセッサ114またはフレームバッファ116のいずれかの内部に配置してもよいし、またはこのどちらからも独立して設けてもよい。一般に画素プロセッサは、これらバッファの読出し/書込みを行い、必要に応じてこれらバッファはフレームバッファ116から更新される。
上記の装置を使用した場合、フレーム全体をレンダリングしようとすると計算効率の点でいくつかの問題が生じる。例えばあるゲームの1シーンをレンダリングする場合、ゲームは、細部描写が少ない背景と、背景より細部描写が多い中間景と、細部描写がもっとも多い前景とをもつ。両端、すなわち背景と前景には、2つの異なるケースが生じる。第1のケースでは、少数の非常に大きなポリゴンを用いて背景図を生成する。第2のケースでは、多数の小さなポリゴンを用いて詳細な前景図を生成する。各ケースにはそれぞれ別の問題がある。
第1のケースにおいてフレームの背景を処理するには、少数の大型ポリゴンの処理が必要である。ジオメトリ変換に要する処理時間は、処理する頂点の数によって異なる。従って、ジオメトリプロセッサ102が背景ポリゴンを処理するのに必要な処理時間は、比較的短い。しかしグラフィックプロセッサ106は、大型ポリゴンの処理に複数の問題を有する。
第1に、ジオメトリプロセッサは、グラフィックプロセッサ106が大型ポリゴンをレンダリングできるよりも大幅に速く表示リストを発行する。このため、ジオメトリプロセッサは、グラフィックプロセッサ106が追いつくまでアイドル状態で待機しなければならない。
レンダリング速度が遅いことに加えて、大型ポリゴンの処理時には他のボトルネックがグラフィックプロセッサ106内部で発生する。大型ポリゴンはテクスチャマップの広い領域を占有する。この領域がテクスチャバッファ118のサイズよりかなり大きければ、「テクスチャミス」が頻繁に発生する。
テクスチャバッファ118がフレームバッファ中のテクスチャマップによって更新されてポリゴンの該当箇所に適切なテクスチャが適用される間、画素プロセッサ114はアイドル状態のままになる。さらに、大型ポリゴンのデータは多くのDRAMページにまたがる。ポリゴンのレンダリングがDRAMページの最後に達すると、「DRAM改ページ」が発生する。DRAMページバッファ120はその内容をフレームバッファにもどし、新たなページをフレームバッファからDRAMページバッファへ更新しなければならない。画素プロセッサ114はこの処理の間、アイドル状態にとどまる。
大型ポリゴンでは、ポリゴンのサイズがDRAMページバッファのサイズの何倍も大きいので、こうした改ページが頻繁に発生し、各レンダリングパスごとに何度もDRAM改ページを発生させてしまう。従って少数の大型ポリゴンでは、グラフィックプロセッサのところで処理減速の多くの理由がある。
図2は、少数の大型ポリゴンの処理を試みるグラフィックプロセッサとジオメトリックプロセッサのパイプラインの結果を示す。グラフィックプロセッサは、利用可能な計算力またはそれ以下の計算力で、ある時間内にポリゴンまたはその他のグラフィックオブジェクトを処理可能である。横棒部202は、所与のタスクについてジオメトリプロセッサのある処理速度における背景ポリゴンまたはその他のオブジェクトの処理に必要な計算時間を示す。グラフィックプロセッサ106は横棒部204によって示す。陰影をつけた横棒部206は、利用可能な計算時間を超過して背景ポリゴンの処理に必要な計算時間を示す。図2は、陰影をつけた横棒部206で示す時間内にグラフィックプロセッサ106がジオメトリプロセッサ102に追いつくまで、ジオメトリプロセッサ102がアイドル状態でとどまることを示す。従ってグラフィックプロセッサがボトルネックとなる。
第2のケースでは逆に、多数の小さなポリゴンの処理およびレンダリングが必要である。これは別のボトルネックとなる。多数の小型ポリゴンはかなり多数の頂点を与える。このため、ジオメトリ処理は上記のケースよりかなり長時間を要する。
この様子を図3に示す。横棒部302は、ジオメトリプロセッサの処理速度で前景ポリゴンまたは他のグラフィックオブジェクトを処理するのに要する計算時間を示す。陰影をつけた横棒部304は、グラフィックプロセッサに「追いつく」ためにジオメトリプロセッサが計算を行わなければならない追加時間を示す。
第1のケースに比べて、グラフィックプロセッサ106は前景ポリゴンを大幅に速くレンダリングできる。これは、各ポリゴンにレンダリングする画素数が少ないこと、かつ小型ポリゴンはDRAM改ページまたはテクスチャミスの可能性を低減するためである。処理速度の加速を横棒部306で示し、これは多数の小型ポリゴンのレンダリングに要する計算時間の短縮量を示す。ここでもまた、陰影をつけた横棒部304は、ジオメトリプロセッサ102がその背景計算を処理している間に、グラフィックプロセッサ106がアイドル状態にとどまらなければならない時間を表す。このように、第2のケースではジオメトリプロセッサがボトルネックとなる。
上記の問題は、高画質のレンダリングされたピクチャ等の解像度のより高いグラフィックスの使用を無理に続行することで、さらに悪化する。こうしたピクチャは高い解像度で描かれているため、ポリゴン線は目にみえず、滑らかな曲線ができる。
図4は、計算上最適な第3のケースを示す。このケースでは、ジオメトリプロセッサ102が所与の時間内にその表示リストすべてを処理することを横棒部402で示す。グラフィックプロセッサ106がこれと同時間でそのポリゴンすべての処理およびレンダリングを行うことは、横棒部404で示す。こうして、ジオメトリプロセッサ−グラフィックプロセッサのパイプラインにはボトルネックが存在しない。これが負荷が平衡した状態である。
コンピュータシステムの新たな構成は、複数のジオメトリプロセッサと複数のグラフィックプロセッサとを含む。このような装置を設けることにより、上述した問題、およびこうした多プロセッサシステムから生じるその他の問題に対処する新たな方法が可能となる。
本発明の一つの態様は、グラフィックス処理の最適化方法である。好適な方法は、第1の数のジオメトリプロセッサをグラフィックタスクの少なくとも第1の部分の処理に割当て、第2の数のグラフィックプロセッサをグラフィックタスクの少なくとも第2の部分の処理に割当てるステップを含む。ジオメトリプロセッサの第1の数は、グラフィックプロセッサの第2の数と同じでもよいし異なってもよい。好適には、ある期間にわたって第2の数のグラフィックプロセッサからパフォーマンスデータが採取され、そのデータはアルゴリズムで処理される。好適な方法の他の工程は、採取されたパフォーマンスデータの分析結果に応じて、グラフィックタスクに割当てられた第1の数のジオメトリプロセッサおよびグラフィックタスクに割当てられた第2の数のグラフィックプロセッサの少なくとも一方の数を変更するステップである。
他の好適な方法はまた、第1の数のジオメトリプロセッサをグラフィックタスクに割当て、第2の数のグラフィックプロセッサをグラフィックタスクに割当てるステップを含む。好適な実施形態では、第1の数のジオメトリプロセッサによって実行されるグラフィックタスクの一部は、オブジェクトデータを複数のポリゴンの頂点データに変換し、一方、第2の数のグラフィックプロセッサによって実行されるグラフィックタスクの一部はポリゴンをバッファメモリ内へレンダリングするステップを含む。
レンダリングされたポリゴンは、複数の画素を含みうる。この方法もまた、ある期間にわたってパフォーマンスデータを第2の数のグラフィックプロセッサから採取し、その後、採取されたパフォーマンスデータをアルゴリズムで分析するステップを含む。好適には、この方法は、採取したパフォーマンスデータの分析結果に応じて、レンダリングするグラフィックオブジェクトのテッセレーション(tessellation:ポリゴン分割)を増やすことにより、第1の数のジオメトリプロセッサによって生成されるポリゴンの数を増やし、かつポリゴンの平均サイズを小さくするステップを含む。
他の好適な方法は、第1の数のジオメトリプロセッサをグラフィックタスクに割当て、第2の数のグラフィックプロセッサをグラフィックタスクに割当てるステップを含む。好適には、ジオメトリプロセッサとグラフィックプロセッサは、ポリゴン生成を含むグラフィックタスクの異なる部分(例えばオブジェクトデータのポリゴン頂点データへの変換、およびポリゴンのバッファメモリ中へのレンダリング)を実行する。好適には、ある期間にわたって第2の数のグラフィックプロセッサからパフォーマンスデータが採取され、採取されたパフォーマンスデータはアルゴリズムで分析される。この方法はまた、採取されたパフォーマンスデータの分析結果に応じて、作成する面のテッセレーションを減らすことにより、第1の数のジオメトリプロセッサによって生成されるポリゴンの数を減じ、かつポリゴンの平均サイズを大きくするステップを含みうる。
さらに他の好適な方法は、第1の数のジオメトリプロセッサをグラフィックタスクに割当て、第2の数のグラフィックプロセッサをグラフィックタスクに割当てるステップを含む。好適には、第1の数のジオメトリプロセッサはグラフィックタスクの第1の部分を実行し、第2の数のグラフィックプロセッサはグラフィックタスクの第2の部分を実行する。ジオメトリプロセッサは、3次元オブジェクトデータをx、yおよびz座標を含むポリゴンの頂点データに変換しうる。ジオメトリプロセッサはまた、z座標が存在しない、または不要な場合は、xおよびy座標だけでポリゴンの頂点データを作成する。
グラフィックプロセッサは、ポリゴンをバッファメモリ内へレンダリングするのに使用できる。ある期間にわたってグラフィックプロセッサの第2の数からパフォーマンスデータが採取され、アルゴリズムで分析される。
この方法はまた、グラフィックタスクに割当てられた第1の数のジオメトリプロセッサ、グラフィックタスクに割当てられた第2の数のグラフィックプロセッサ、および第1の数のジオメトリプロセッサによってグラフィックスオブジェクトに適用されるテッセレーションの量、すなわちポリゴン分割数のうち、少なくともいずれかを変更するステップを含みうる。
グラフィックス処理を最適化する他の好適な方法は、第1の数のジオメトリプロセッサをグラフィックタスクに割当て、第2の数のグラフィックプロセッサをグラフィックタスクに割当てるステップを含む。ある期間にわたってパフォーマンスデータが第2の数のグラフィックプロセッサから採取され、アルゴリズムで分析される。その後、この方法は、第1の数のジオメトリプロセッサによって処理されたポリゴンを空間的にソートしてから、ポリゴンデータをグラフィックプロセッサに送る。
グラフィックス処理回路を有するコンピュータシステムにおけるグラフィックスデータ処理の他の好適な方法は、少なくとも1つのジオメトリプロセッサを用いてグラフィックタスクの少なくとも一部を実行し、かつ少なくとも1つのグラフィックプロセッサを用いてグラフィックタスクの少なくとも他の一部を実行するステップを含む。好適な方法はまた、少なくとも1つのジオメトリプロセッサおよびグラフィックプロセッサが有効に使用されているかどうかを判定し、必要に応じて1つ以上のジオメトリプロセッサおよびグラフィックプロセッサを選択的に割当てて、グラフィックス処理回路のグラフィックタスク実行効率を改善するステップを含む。
好適には、少なくとも1つのジオメトリプロセッサを利用してグラフィックタスクの少なくとも一部を実行するステップは、オブジェクトを3Dから2Dへ変換させてポリゴンの頂点データにするステップを含む。また、少なくとも1つのグラフィックプロセッサを利用してグラフィックタスクの少なくとも別の一部を実行させるステップは、ポリゴン頂点データをバッファメモリ内へレンダリングさせるステップを含むのが好適である。
ポリゴンは、好適には複数の画素を含む。少なくとも1つのジオメトリプロセッサおよび少なくとも1つのグラフィックプロセッサが有効に使用されているかどうかの判定は、レンダリングされたポリゴンの数および平均サイズを計算するステップを含みうる。好適な方法に従えば、レンダリングされたポリゴンの平均サイズの計算は、レンダリングされた画素数を数えて、レンダリングされたポリゴン数で除算するステップを含む。
またこの方法は、一組のバッファと、複数のジオメトリプロセッサをバッファの組に接続する第1のクロスバーチャネルと、複数のグラフィックプロセッサをバッファの組に接続する第2のクロスバーチャネルとを準備するステップを含むのが好適である。バッファの組は初期構成をもち、第1および第2のクロスバーチャネルもまた初期構成をもちうる。
1つ以上のジオメトリプロセッサおよびグラフィックプロセッサを選択的に割当てまたは割当て解除するステップは、好適には第1のクロスバーチャネル用の新たな構成を計算するステップと、バッファの組の新たな構成を計算するステップと、第2のクロスバーチャネル用の新たな構成を計算するステップとを含む。バッファの組と第1および第2のクロスバーチャネルは、その後、再構成されて新たな構成をもつことができる。
本発明の他の態様は、グラフィックスデータを処理するグラフィックス処理回路を有するコンピュータシステムに関する。好適には、コンピュータシステムは、グラフィックタスクの少なくとも一部を少なくとも部分的に実行する少なくとも1つのジオメトリプロセッサを含む。また、グラフィックタスクの少なくとも他の一部を少なくとも部分的に実行する少なくとも1つのグラフィックプロセッサも設ける。
少なくとも1つのジオメトリプロセッサと少なくとも1つのグラフィックプロセッサとの間の通信を実現する通信チャネルも準備する。
通信チャネルを介してジオメトリプロセッサおよびグラフィックプロセッサと通信するために、制御プロセッサを配置する。制御プロセッサは、好適にはジオメトリプロセッサおよびグラフィックプロセッサの少なくとも1つが有効に使用されているかどうかを判定し、必要に応じて1つ以上のジオメトリプロセッサおよびグラフィックプロセッサを選択的に割当てまたは割当て解除して、グラフィックス処理回路のグラフィックタスクの実行効率を改善する。
好適な実施形態では、少なくとも1つのジオメトリプロセッサは複数のジオメトリプロセッサを含み、少なくとも1つのグラフィックプロセッサは複数のグラフィックプロセッサを含む。好適には、複数のジオメトリプロセッサは任意のオブジェクトを3Dから2Dへ変換してポリゴンの頂点データにする。また、複数のグラフィックプロセッサを用いて、ポリゴンをバッファメモリ内へレンダリングするのが好適である。ポリゴンは、複数の画素を含みうる。
通信チャネルは、好適には、クロスバー構成を有する第1のチャネルと、第1のチャネルを介して複数のジオメトリプロセッサからデータを受信するように接続された少なくとも1つのバッファメモリと、複数のグラフィックプロセッサと少なくとも1つのバッファメモリとの間の通信を可能にするように配置された1対1クロスバー構成を有する第2のチャネルとを含む。
好適な実施形態では、通信チャネルは、複数のグラフィックプロセッサから制御プロセッサへのパフォーマンスデータの通信を促進する。
上述した本発明の特徴および利点は、以下に詳述する好適な実施形態の説明と添付図面とを考慮すればよりよく理解できる。
図5は、グラフィックス処理の最適化が可能なグラフィックス処理装置500を示す。ジオメトリプロセッサ群501は、ジオメトリプロセッサ102と同様のジオメトリプロセッサ502,504および506を含みうる。グラフィックプロセッサ群507は、グラフィックプロセッサ106と同様のグラフィックプロセッサ508,510および512を含みうる。ジオメトリプロセッサ502,504および506は、設定可能な通信チャネルおよびバッファ514によってグラフィックプロセッサ508,510および512に接続される。
設定可能な通信チャネルおよびバッファ514により、グラフィックス装置500中で各ジオメトリプロセッサは各グラフィックプロセッサにデータを送信できる。各グラフィックプロセッサ508,510および512は、レンダリング制御プロセッサ522と通信可能に接続する通信チャネル516,518および522を有する。通信チャネル516,518および520は、パフォーマンスデータをグラフィックプロセッサ508,510および512からレンダリング制御プロセッサ522へ伝送する。
2組のプロセッサ間は、既定のパイプラインの組では結合されていない。レンダリング制御プロセッサはフィードバックチャネル526によって制御プロセッサ524に接続される。制御プロセッサ524は、動作時にはプロセッサ割当てチャネル530によってジオメトリプロセッサ502,504および506に接続される。制御プロセッサ524はまた、制御信号チャネル528によって、設定可能な通信チャネルおよびバッファ514に接続される。
動作時には、定義された3−Dオブジェクトがジオメトリプロセッサ502,504および506に送られ、グラフィックスプリミティブの2−D表示リストに変換される。その後、表示リストは設定可能な通信チャネルおよびバッファ514を介してグラフィックプロセッサ508,510および512に送られる。このデータの流れを図5の太字の矢印で示す。グラフィックプロセッサ508,510および512は、グラフィックスプリミティブの2−D表示リストをレンダリングし、かつレンダリング中またはそれ以降のパス(図8参照)で、テクスチャおよびシェードを適用する。グラフィックタスクとは、定義された1つまたは複数の3−Dオブジェクトをフレームバッファ中で表示可能な画素マップに変換することと考えることができる。「変換」とは、3−Dオブジェクトを複数のポリゴンの頂点データからなる表示リストに変換し、それに続いて該データを画素形式にレンダリングすることを含みうる。
グラフィックプロセッサ508,510および512は、通信チャネル516,518および520によってパフォーマンスデータをレンダリング制御プロセッサ522に送る。このパフォーマンスデータはレンダリング制御プロセッサ522中で処理される。この結果がフィードバックチャネル526上に送られる。このフィードバックは、ハイレベルのパフォーマンスデータ形式、および/または制御プロセッサ524によって実行される特定の命令形式のいずれかの形式をとりうる。制御プロセッサ524は、このフィードバックデータをレンダリング制御プロセッサ522から受信し、これを用いてプロセッサの割当てと設定可能な通信チャネルおよびバッファ514の構成を行う。図5中、太字以外の矢印はデータ信号ではなく制御信号を示すことに注意されたい。
図8は、図5に示すグラフィックプロセッサ装置500のより詳細な実施形態を示す。一実施形態では、レンダリング制御プロセッサ522と制御プロセッサ524とは1つの論理制御プロセッサである。
他の実施形態では、制御プロセッサ524とレンダリング制御プロセッサ522とは、1つの集積回路上で論理的に互いに別個のプロセッサである。他の実施形態では制御プロセッサ524とレンダリング制御プロセッサ522とは別個の集積回路上に設ける。
さらに他の実施形態では、レンダリング制御プロセッサ522は通信チャネル516,518および520を通過するデータの単なる「導管」として機能し、制御プロセッサ524がすべての分析および制御機能を行う。さらに他の実施形態では、レンダリング制御プロセッサ522が分析および制御の大半を決定し、その決定を、フィードバックチャネル526によって、命令の単なる導管として機能する制御プロセッサ524へ送信する。
一実施形態では、ジオメトリプロセッサ502,504,506は主プロセッサのサブプロセッサとして設けて、ジオメトリの変換等の特定タスクに対して動的に専用化してもよい。他の実施形態では、ジオメトリプロセッサ502,504,506は、ジオメトリ変換に動的に割当てられる別個の汎用プロセッサである。
他の実施形態では、ジオメトリプロセッサ502,504,506は、上記のようなジオメトリ変換動作用の専用プロセッサである。こうした専用プロセッサは、主プロセッサ内部に設けてもよいし、または別個に設けてもよい。ジオメトリプロセッサ502,504および506は同一タイプである必要はない。例えば、ジオメトリプロセッサ502をサブプロセッサとし、ジオメトリプロセッサ504をジオメトリ変換を行う別のプロセッサとしてもよい。
図示するグラフィックス処理装置500は3つのジオメトリプロセッサを有する。グラフィックス処理装置500は任意の数の複数のジオメトリプロセッサを備えることができる。好適な実施形態では8つのジオメトリプロセッサを備える。実施形態および実施構成に関係なく、ジオメトリプロセッサ501の数は、所与の時間にグラフィックタスクのためのジオメトリ変換等を実行する個別の論理処理ユニットの数である。
図示するグラフィックス処理装置500は3つのグラフィックプロセッサ508,510および512を有する。グラフィックス処理装置500は任意の数の複数のグラフィックプロセッサを備えることができる。好適な実施形態では8つのグラフィックプロセッサを使用する。好適な実施形態では、各グラフィックプロセッサ508,510および512は、別々の集積回路上に設ける。他の実施形態では、2つ以上のグラフィックプロセッサ508,510および512が1つの集積回路上に位置する。実施構成および実施形態の条件に関係なく、グラフィックプロセッサ507の数は、所与の時間にグラフィックタスクのためのレンダリングおよび関連した他の計算を実行する個別の論理処理要素の数である。
ジオメトリプロセッサ501とグラフィックプロセッサ507の数は同じである必要はない。本発明のフレキシブルな構成では、ジオメトリプロセッサの数はグラフィックプロセッサの数と異なってもよい。
図6Aは、本発明の一実施形態のフローチャートである。図6Aに示す方法は、利用可能な複数のジオメトリプロセッサおよびグラフィックプロセッサを使用して、図5に示すグラフィックス処理装置500を最適化して負荷を平衡させる方法を示す。設定可能な通信チャネルおよびバッファ514を利用して、2つ以上のジオメトリプロセッサまたはグラフィックプロセッサをポリゴンまたはグラフィックタスクの描画およびレンダリングに適用することにより、先行技術のボトルネックを回避する。図6Aの方法は、構成負荷平衡法と呼ぶことができる。
ステップ601では、レンダリング制御プロセッサ522がグラフィックプロセッサ群507からパフォーマンスデータを採取する。ステップ602では、レンダリング制御プロセッサがこのパフォーマンスデータを分析する。レンダリング制御プロセッサ522によるパフォーマンスデータの採取は、ある期間にわたって行われる。好適な実施形態では、この期間はクロックサイクル10,000回程度である。ただしもちろん、これ以外の期間を適用してもよい。しかし構成負荷平衡法は統計的なやり方なので、当該期間は統計的に有為なデータ組の回収に十分な時間でなければならない。
このパフォーマンスデータの分析602は、グラフィックプロセッサ群507もしくはジオメトリプロセッサ群501が過負荷になっているかどうか、またはジオメトリプロセッサ群501とグラフィックプロセッサ群507とが負荷平衡状態かどうかを判定するステップを含む。パフォーマンスデータ分析ステップ602により、グラフィックプロセッサ群507の負荷がジオメトリプロセッサ群501の負荷と平衡していることがわかれば、ステップ601がある期間にわたって再度実行される。
しかし、グラフィックプロセッサ群507の計算負荷が過負荷になっていれば、ステップ603で、レンダリング制御プロセッサ522は制御プロセッサ524にフィードバックを送る。ステップ604では、制御プロセッサ524は追加するグラフィックプロセッサの数を決定して、一組のグラフィックタスクを処理しているグラフィックプロセッサの数を増加させる。
次のステップ、ステップ605では、制御プロセッサ524は、構成を決定した後、設定可能通信チャネルおよびバッファ514を修正する。ジオメトリプロセッサの表示リストの結果が分解されて2つ以上のグラフィックプロセッサに送られ、これにより問題に対処するグラフィックプロセッサの数を増やす。大型ポリゴンのレンダリングをより多くのグラフィックプロセッサ間で分けることにより、グラフィックプロセッサ間で計算負荷を分担する。グラフィックプロセッサ群がレンダリングに要する総時間が短縮される。これによりジオメトリプロセッサがアイドル状態にとどまる時間が短くなる。
ステップ602でジオメトリプロセッサ群の計算負荷が過負荷と判定されれば、ステップ606へ進む。このケースの一例として、多数の小型ポリゴンをレンダリングする場合を説明する。これは図3に示す問題に通ずる。このような問題に対処するため、ステップ606で、レンダリング制御プロセッサは制御プロセッサ524に適切なフィードバック情報を送信する。ステップ607では、制御プロセッサ524が追加するジオメトリプロセッサの数を決定して、グラフィックタスク処理中のジオメトリプロセッサの数を増加させる。こうして多数のジオメトリプロセッサ間で計算タスクが分担される。
ステップ608では、制御プロセッサ524は、新たな構成を決定した後、設定可能な通信チャネルおよびバッファ514を修正して、複数のジオメトリプロセッサの出力が1つの表示リストバッファ中へ入るように表示リストバッファ群を作成する。この表示リストバッファはFIFOバッファ、すなわち先入れ/先出しバッファである。このため表示リストを順番に並べることができ、それを1つのグラフィックプロセッサで処理できる。
こうして、ステップ602で決定される分岐に応じて、あるオブジェクト処理中の複数のグラフィックプロセッサまたはジオメトリプロセッサの数が増やされる。これにより負荷の平衡を達成できる。ステップ601でレンダリング制御プロセッサ522によってパフォーマンスデータが継続的にモニターされるフィードバックループが確立される。このため、もしレンダリングが必要なオブジェクトが変更されれば、該オブジェクトの描画に必要な計算負荷の分配をフィードバックループが自動的に調整する。
図6Bは、ステップ602の一実施形態を示す。ステップ610は、ある期間内にレンダリングされたポリゴン数とポリゴン数下閾とを比較する。このポリゴン数下閾は、多くの様々な方法で決定できる。一実施形態では、ポリゴン数下閾はグラフィックスプログラムのプログラミング時に調整によって決定される。
他の実施形態では、ポリゴン数下閾は、いくとおりもの実装が可能なアルゴリズムによって決定される。もちろん、こうしたアルゴリズムもプログラミング時に調整できる。ステップ611はこの比較の結果を問い合わせる。ポリゴン数下閾よりもポリゴン数が多ければ、ステップ612が実行される。ステップ612は、ある期間内にレンダリングされたポリゴンの平均サイズと、ポリゴンの平均サイズ上閾とを比較する。こうした平均サイズ上閾は、やはり事前の調整か、または多数の方法のいずれかで実装されたアルゴリズムによって決定され、該アルゴリズムはやはりグラフィックスプログラムのプログラミング時に、そのプログラム自体の中で調整可能である。
ステップ613は、ステップ612の結果を問い合わせる。ステップ613で、レンダリングされたポリゴンの平均サイズが、ポリゴンの平均サイズ上閾より大きいとわかれば、ステップ614が実行され、グラフィックプロセッサが過負荷であることが示される。その後、明示するようにステップ603が実行される(図6A参照)。ただしステップ611の結果が「いいえ」ならば、ステップ615が実行される。
ステップ615は、ポリゴン数上閾より多くのポリゴンがあるかどうかを判定する。回答が「はい」ならばステップ616が実行され、ある期間内にレンダリングされたポリゴンの平均サイズと、ポリゴンの平均サイズ下閾とが比較される。平均ポリゴンサイズ上閾の場合と同様に、ポリゴン平均サイズ下閾も、プログラムを調整するプログラマによって事前にコンピュータグラフィックスプログラムのプログラミング時に、またはアルゴリズムによりコンピュータグラフィックスプログラムの稼動中に決定される。こうしたアルゴリズムは多数の実装の中から実現され、グラフィックスプログラムの初期プログラミング中にそのプログラム自体の中で調整できる。
ステップ617はステップ616の結果を問い合わせる。ある期間内にレンダリングされたポリゴンの平均サイズがポリゴンの平均サイズ下閾より小さければ、ステップ618が実行され、ジオメトリプロセッサが過負荷であることが示される。その後、明示するようにステップ606が実行される(図6A参照)。ステップ615の判定結果が、ポリゴン数上閾以上のポリゴンが存在しないというものなら、ステップ619が実行され、ジオメトリプロセッサとグラフィックプロセッサとの負荷が平衡していることが示される。その後、上述のようにやはりステップ601が実行される(図6A参照)。
前言のとおり、以上はレンダリング制御プロセッサ522がパフォーマンスデータに対して行う多くの可能な分析のうちの一実施形態にすぎない。他の変数を問い合わせて、異なる閾値を適用してもよい。例えば、ステップ601でDRAM改ページの数とテクスチャミスの数とを集計してもよい。
ステップ602において、グラフィックタスクに割当てられたグラフィックプロセッサ群507の過負荷検査の一部として、ある閾値レベルよりも大きな改ページの数を使用してもよい。同様に、ある期間のテクスチャミスを閾値レベルと比較して、グラフィックプロセッサ群507の計算負荷が過負荷になっているかどうかの検査方法としてもよい。いずれの場合も、閾値を上回っているかどうかを検査する。ここでもまた、閾値は調整、アルゴリズム、または調整したアルゴリズムによって決定できる。
グラフィックスの最適化に構成負荷平衡法を適用するのが最適ではない場合もある。上述したように、パフォーマンスデータを採取する期間は、統計的に有為なデータ量を回収できるだけ十分長くなければならない。ただし、あるオブジェクトについてレンダリング中であるポリゴンの数、またはその平均面積もしくはサイズ等のポリゴンの各種特性が刻々と変化する場合は、プロセッサ、バッファ、およびチャネルの構成を十分迅速に変更するフィードバックループを得るために期間を短縮しなければならない。しかし、ステップ602のパフォーマンスデータの分析、ならびにステップ603,604および605、またはステップ606,607および608で実行される判定と再構成は、かなりの時間と計算を必要とする。従って、レンダリングされるフレームのポリゴン特性が迅速に変化する場合は、計算および再構成による遅延のため、フィードバックループ作成速度に制限が課される。
具体例として、コンピュータゲームのカークラッシュの場合に見られるように、背景で始まり急速に前景へと飛んでくる破壊された窓の破片が、このグラフィックオブジェクトについて特性が急速に変化するポリゴンの組となりうる。このようなグラフィックオブジェクトのグラフィック処理は、構成負荷平衡法では比較的困難と考えられる。この問題に対処する一つの方法は、データが採取される期間を可変にし、かつアルゴリズムで決定する方法である。これは事前決定するやり方(プログラミング時に調整によって)と対照的である。
しかし、上述した統計的なデータの採取、該データの分析、新たな構成の決定、ならびにジオメトリプロセッサおよびグラフィックプロセッサの数の再構成、かつ該プロセッサ群に関連したチャネルおよびバッファの再構成を行うアプローチには、可変期間の使用を制限する遅延が含まれる。
他のアプローチは、分析ステップ602が選択可能な構成の組を予め定めておく方法である。これにより、ジオメトリプロセッサ501の数、グラフィックプロセッサ507の数、ならびに構成チャネルおよびバッファ514の構成決定の計算負荷を大幅に減じることができる。構成負荷平衡法に対抗するこのような構成事前決定アプローチにより、フィードバックループの遅延時間応答を短縮し、これによりポリゴン特性が急速に変化するグラフィックオブジェクトの処理能力を大幅に改善できる。
上記の方法以外に、ジオメトリプロセッサ群501およびグラフィックプロセッサ群507の負荷を平衡させる方法がある。ある方法はテッセレーションを含む。テッセレーションは、表示するグラフィックオブジェクトを複数のポリゴンに変換する方法である。通常、テッセレーションはジオメトリプロセッサ群501中で行われる。テッセレーションの程度は増減可能である。
テッセレーション量を増やすと、あるグラフィックオブジェクトについてレンダリングするポリゴンの数が増え、かつポリゴンの平均サイズが減じられる。テッセレーションを減らすと、あるグラフィックオブジェクトをレンダリングするためにレンダリングされるポリゴンの数が減じられるが、ポリゴンの平均サイズが大きくなる。
コンピュータグラフィックスを最適化する上で、テッセレーション処理が特に有用な状況がいくつかある。図7Aは、平均ポリゴンサイズを採取するステップ701を示す。次のステップ702は、ある期間のDRAM改ページを集計する。つぎのステップ703では、ある期間のテクスチャミスの数を回収する。
ステップ704は、平均ポリゴンサイズをポリゴンサイズ上閾と比較する。ステップ705は、DRAM改ページ数をDRAM改ページ数上閾と比較する。ステップ706は、テクスチャミスの回数をテクスチャミス上閾数と比較する。テスト704,705および706のいずれかについて、ある期間の値が上閾値未満ならば、ステップ707,708および709のようにテッセレーション量には変化が生じない。しかし、各ケースにおいて、ある期間の値が上閾値を上回る場合は、ステップ710が発生してテッセレーション量の増加を決定する。
ステップ710でのテッセレーション量の増加は、種々の実装で実現可能なアルゴリズムによって異なる。しかし、ステップ711のテッセレーションの増加により、次の期間の間のポリゴン平均サイズが縮小され、これは次の期間の間の改ページ数の減少とテクスチャミス回数の低減につながる。
図7Bは、テッセレーションのサイズを縮小する手順を示す。この手順は様々な理由で行われることに注意されたい。オブジェクトのテッセレーションが多量すぎて、得られるポリゴンの平均サイズが画素サイズ以下になると、ポリゴン頂点内の情報が失われてしまう。すなわちテッセレーションが行われて大量の頂点情報が作成されるが、この情報がレンダリング時には使用されず、これは計算上非常に非効率的である。従って、ステップ722はある期間の平均ポリゴンサイズを一実施形態のグラフィックシステムの画素サイズと比較するステップを示す。
ステップ720は、ある期間の平均ポリゴンサイズを採取する。ステップ724はステップ722の結果を問い合わせる。ポリゴンサイズが画素サイズ以下ならば、ステップ726でテッセレーション減少量が計算される。ポリゴンサイズが画素サイズを上回れば、ステップ724で変更なしとなる。ステップ728では、あるグラフィックタスクについてジオメトリプロセッサ群501中のテッセレーション量が減じられる。乗算器、スケーラ、または画素値を用いて画素値をいくらか増加させて安全域を増やし、頂点情報の損失を回避できることに注意されたい。
構成負荷平衡方法と、グラフィック最適化テッセレーション方法とは、互いに矛盾するように見えるが、同時に適用することができる。例えば、ジオメトリプロセッサ群が1つのグラフィックプロセッサに結果を送信している場合、ジオメトリプロセッサは100,000個超のポリゴンを処理していると考えられる。この場合、ポリゴンが小さすぎて画素解像度未満となるかもしれない。従ってこの場合、矛盾しているようだが、図7Bのテッセレーション方法のように、テッセレーション量を減じてポリゴンサイズを増大させることができる。
ただしこれにより、平均ポリゴンサイズが少し増大し、ある期間中にレンダリングするポリゴン数が少し減少しうるが、これは2つのジオメトリエンジン−1つのグラフィックプロセッサを設ける現在のクロスバーチャネルおよびバッファ514の構成にはほとんど影響しない。
同様に、1つのジオメトリプロセッサがその出力を2つのグラフィックプロセッサに送信している場合、ジオメトリプロセッサは1、2個から10個のポリゴンを処理中と考えられる。この状況では、大きなポリゴンが過度の改ページおよびテクスチャミスを生じ、計算負荷を増大させていると予測できなくない。このため図7Aのテッセレーション方法を適用して、表示する1つ以上のグラフィックオブジェクトのテッセレーションを増大させ、ポリゴン数を増加させ、グラフィックタスク中のポリゴン平均サイズを減じることができる。
だが図7Aのテッセレーション方法の適用は、単に、例えば表示するポリゴン数を100個に増やすだけの場合もある。ある期間中のレンダリングするポリゴン数および該ポリゴンの平均サイズのこのような変更は、図6Aおよび図6Bの構成方法による2つのジオメトリプロセッサ−1つのグラフィックプロセッサ構成を変更するのに必要な種類の変更と比べるとやはり些細なものである。従って、負荷平衡構成方法とグラフィックスの最適化に対するテッセレーション方法とは、互いに矛盾しない。構成方法は、可変テッセレーション方法よりもポリゴン特性の変更がより大きな変更に対処する。
図8は、グラフィックプロセッサ装置500と同じ構成要素を示す。同一参照番号を付した構成要素は同じものである。設定可能な通信チャネルおよびバッファ514は基本構成要素部分を示す。
分割−結合クロスバーチャネル808は、ジオメトリプロセッサ502,504および506とDLFIFOバッファ810間を接続する。制御プロセッサ524は、ジオメトリプロセッサ割当て通信チャネル814によってジオメトリプロセッサ502,504および506を制御する。制御プロセッサ524はバッファ割当てチャネル816によって通信チャネル808を制御する。制御プロセッサ524は、やはりバッファ割当てチャネル816によって表示リストFIFOバッファ810も制御する。
グラフィックプロセッサ508,510および512は、1対1クロスバーチャネル812を介してDLFIFOバッファ810に接続される。ただし、図ではより詳細に示す。レンダリング制御プロセッサ522はグラフィックプロセッサ508,510および512からパフォーマンスデータを採取して、フィードバックチャネル526によって制御プロセッサ524へ送信する。
分割および結合クロスバーチャネル808は再設定可能であるので、1つのジオメトリプロセッサ、例えばジオメトリプロセッサ502はその出力表示リストを2つ以上のDLFIFOバッファ810へ送信させることができる。または、2つ以上のジオメトリプロセッサ、例えばジオメトリプロセッサ502とジオメトリプロセッサ504とが、その表示リストをクロスバーチャネルによって1つのDLFIFOバッファ810へ接続する。
これと対照的に、1対1クロスバーチャネル812は、出来上がったDLFIFOバッファ810中の順序付けた表示リストの分割または結合は行わず、代わりに、1つのDLFIFOバッファ810の順序付けた表示リストをグラフィックプロセッサ508等の1つのグラフィックプロセッサに通信できるだけである。1対1クロスバーチャネルは、入出力ASIC、すなわち特定用途向け集積回路である。これは通信チャネル818によって制御される。
グラフィックプロセッサ508,510および512から送信されるパフォーマンスデータは、グラフィックプロセッサ群の構成によって異なる。グラフィックプロセッサ508,510および512は、図示するようにグラフィックプロセッサ106と同じだが、ただしマルチパスコントローラ820,822および824が加えられている。例えば、グラフィックプロセッサ508はグラフィックプロセッサ106と同じである。グラフィックプロセッサ508は入力バッファ826を有する。マルチパスコントローラ820は入力バッファ826に接続される。DDA828はマルチパスコントローラ820に接続される。画素プロセッサ830はDDA828からデータを受信する。テクスチャバッファ832とDRAMページバッファ834は、ともに画素プロセッサ830と通信する。フレームバッファ836はテクスチャバッファ832およびDRAMページバッファ834と通信する。グラフィックプロセッサ510および512も同様に構成される。
グラフィックプロセッサ508の各構成要素は、レンダリング制御プロセッサ522へ制御情報を通信する。入力バッファ826は、その内部のデータ量をレンダリング制御プロセッサ522へ通信する。マルチパスコントローラ820は、レンダリング制御プロセッサ522にパス数を通信する。
DDA828は、DDAが描画しているポリゴンのサイズをレンダリング制御プロセッサ522へ通信する。ただし多くの実施形態では、DDA828のセットアップエンジンは、レンダリングするポリゴンのサイズを通信することに注意されたい。画素プロセッサ830は、テクスチャ読取り時間をレンダリング制御プロセッサ522に通信する。
最後に、フレームバッファ836は、DRAM改ページ発生時にレンダリング制御プロセッサ522と通信する。グラフィックプロセッサ510および512中の同様の構成要素は、レンダリング制御プロセッサ522に同様の情報を通信する。レンダリング制御プロセッサ522は、グラフィックプロセッサ508,510および512から与えられた情報を処理して、図5のところで説明したように制御プロセッサ524用のフィードバックを作成する。
動作時には、バッファ割当て通信チャネル816によって、制御プロセッサ524は、ジオメトリプロセッサが作成する表示リスト用のバッファとして使用するメモリ領域を指定できる。これらのバッファは1つのメモリ中に置いてもよいし、異なる複数のメモリ間に分配してもよい。通信チャネル818によって、制御プロセッサ524は通信チャネル812のクロスバー構成を利用して、ジオメトリプロセッサ502,504および506からの結果をグラフィックプロセッサ508,510および512に送ることができる。マルチパスコントローラ820は、同じポリゴンを複数回レンダリングできるようにする。
上記のグラフィックス処理装置800の構造、特にグラフィックプロセッサ508,510および512の内部構造は、レンダリング制御プロセッサ522が受信するパフォーマンスデータの種類を例示している。こうしたパフォーマンスデータに含まれるのは、入力バッファ内部のデータ量、マルチパスコントローラによってポリゴン上に形成されたパス数、ディジタル差動分析器すなわちDDAによって描画されたポリゴンのサイズ、テクスチャバッファミスが発生したかどうか、およびDRAMページバッファミスが発生したかどうか、という情報である。この情報を用いて、グラフィックプロセッサ内部の計算負荷をより正確に決定できる。また、この情報により他の最適化方法も可能となる。
例えば、小さなポリゴンは、フレームバッファ中のDRAM改ページを判定するライン上にくる確率は低いが、それでもくる場合はある。もしレンダリング制御プロセッサ522が、多数の改ページを示す改ページ情報と、ポリゴンサイズが小さいことを示す平均ポリゴンサイズ情報とを受信すれば、レンダリング制御プロセッサ522は制御プロセッサ524に小さなポリゴンを「クリップ」するように命令できる。すなわち、小さなポリゴンのうち一方のDRAMページ上にある狭い部分はレンダリングされず、他方のDRAMページ上にある広い部分はレンダリングされる。小型ポリゴンでは、計算効率上の利点と比べて、グラフィックス品質の劣化は小さい。
同じような状況下では、クリッピング以外の別のグラフィックス処理最適化技術が行われる。通常、クリッピングは多数のDRAM改ページとテクスチャミスが示された状態でポリゴンサイズが小さい場合に行われるが、もしこの状況に特に多数の小型ポリゴンが含まれ、小型ポリゴンがフレームバッファに関してランダムまたは擬似ランダムに分配されていれば、計算負荷が非常に大きくなる。
これはDRAM改ページの過度の増加によるもので、DRAMページスワップとも呼ばれるものである。表示されている多数のポリゴンがフレームバッファ830中にランダムに分配されていれば、DRAMメモリのページは継続的に入出力されるため、フレームバッファ830の帯域がいかに広くとも、かなりの速度低下が発生する。
ここでもまた、フィードバックループの概念を実行して、この問題を「タイリング(tiling)」によって対処できる。これは本質的にはフレームバッファのページを空間的に順序付けすることである。レンダリングするオブジェクトを本来表示すべき3次元オブジェクトに基づく順序でレンダリングするのではなく、オブジェクトをポリゴンにした後に、1つのフレームのポリゴンが連続して、例えば左から右へ、その後、上から下へ、というように処理されるように再命令される。
一例として、木のようなグラフィックオブジェクトをレンダリングする場合を考える。グラフィック装置800の通常の動作では、木のなかに発生する順序でポリゴンがレンダリングされる。空間の順序付けを行うと、木のオブジェクトのポリゴンの順序に関係なく、ページごとにフレームがレンダリングされる。このようなタイリングは、再命令の計算時間がいくぶん増えるが、テストした状況下では計算効率がかなり上昇した。
マルチパスコントローラ820は、元々、図1には表示していない特別な構成要素である。これはフレームバッファ836と画素プロセッサ830との間の広い帯域幅と、グラフィックプロセッサ508の比較的短いパイプライン全体を利用して、マルチパスレンダリングを可能にする。例えば、第1のレンダリングパスはポリゴンの描画と充填を行い、第2のレンダリングパスはこれにテクスチャをつけ、第3のレンダリングパスはこれに陰影をつける。1つ、2つ、または3つのパスを使用できる。
このマルチパスコントローラ820は、ある種の予測負荷平衡法を可能にする。この予測負荷平衡法は、マルチパス装置が持つべき大量の情報に依存する。この大量の情報は、充填された入力バッファ826の割合と、マルチパスコントローラ829によって作成されたパス数と、完了した現在のポリゴンのレンダリング割合と、グラフィックプロセッサ508に順序付けした表示リストを与えているDLFIFOバッファ810のバッファ中のポリゴン数とを少なくとも含む。
この情報により、レンダリング制御プロセッサ522または制御プロセッサ524は、入力バッファにより多くのデータが必要になり、これによりジオメトリプロセッサがより多くのオブジェクトをプリミティブポリゴンの表示リストに変換開始するのはいつかを推定するか、またはより多くのジオメトリプロセッサをすでに実行中のグラフィックタスクに割当てることができる。この推定モードの平衡法の実行に使用する情報は、構成負荷平衡法で使用する情報とは性質が異なるが、やはりグラフィックス処理の最適化は可能である。
以上、具体例を参照して本発明を説明したが、上記の各実施形態は本発明の原理および用途を例示したにすぎないことを理解されたい。従って、例示した各実施形態には多数の変形例が可能であり、前掲の特許請求の範囲で規定される本発明の精神および範囲から逸脱することなく他の構成を考案できることを理解されたい。
本発明は、一般にはグラフィック処理の最適化方法に適用でき、特にマルチプロセッサシステム用のグラフィック処理の最適化方法に適用できる。
先行技術のグラフィックス処理装置の図である。 ある状況下における先行技術のグラフィックス処理装置内部の計算負荷のグラフである。 他の状況下における先行技術のグラフィックス処理装置の計算負荷のグラフである。 負荷が平衡した状況下における先行技術のグラフィックス処理装置の計算負荷のグラフである。 本発明のグラフィックス処理装置の図である。 本発明の一実施形態のフローチャートである。 本発明の一実施形態のフローチャートである。 本発明の他の実施形態のフローチャートである。 グラフィックス処理装置の一実施形態のより詳細な図である。

Claims (6)

  1. グラフィックス処理の最適化方法であって、
    第1の数のジオメトリプロセッサをグラフィックタスクに割当て、第2の数のグラフィックプロセッサをグラフィックタスクに割当て、前記第1の数のジオメトリプロセッサはオブジェクトデータをポリゴンの頂点データに変換し、前記第2の数のグラフィックプロセッサは前記ポリゴンをバッファメモリ内へレンダリングするステップと、
    前記第2の数のグラフィックプロセッサからある期間にわたってパフォーマンスデータを採取するステップと、
    前記採取したパフォーマンスデータをアルゴリズムで分析するステップと、
    前記採取したパフォーマンスデータの分析結果に応じて、レンダリングするオブジェクトのテッセレーションを増やすことにより、前記第1の数のジオメトリプロセッサによって生成されるポリゴンの数を増やし、かつポリゴンの平均サイズを小さくするステップとを含み、
    採取する前記パフォーマンスデータは、
    レンダリングされたポリゴンの数とレンダリングされた画素の数とを用いて計算された平均ポリゴンサイズと、
    集計されたテクスチャミスの数と、
    集計されたDRAM改ページ数と、
    を含むことを特徴とする方法。
  2. 請求項1に記載の方法において、前記レンダリングされたポリゴンの平均サイズは、レンダリングされた画素を集計し、これをレンダリングされたポリゴンの数で除算することにより計算することを特徴とする方法。
  3. グラフィックス処理を最適化する方法であって、
    第1の数のジオメトリプロセッサをグラフィックタスクに割当て、第2の数のグラフィックプロセッサをグラフィックタスクに割当て、前記第1の数のジオメトリプロセッサはオブジェクトデータを、複数の画素を有するポリゴンの頂点データに変換し、前記第2の数のグラフィックプロセッサは前記ポリゴンをバッファメモリ内へレンダリングするステップと、
    前記第2の数のグラフィックプロセッサからある期間にわたってパフォーマンスデータを採取するステップと、
    前記採取したパフォーマンスデータをアルゴリズムで分析するステップと、
    前記採取したパフォーマンスデータの分析結果に応じて、生成するオブジェクトのテッセレーションを少なくすることにより、前記第1の数のジオメトリプロセッサによって生成されるポリゴンの数を減らし、かつポリゴンの平均サイズを大きくするステップとを含み、
    採取する前記パフォーマンスデータは、ポリゴンの平均サイズを含むことを特徴とする方法。
  4. 請求項3に記載の方法において、前記ポリゴン平均サイズは、
    レンダリングされたポリゴンの数とレンダリングされた画素の数とをカウントし、
    レンダリングされた画素を集計し、
    レンダリングされたポリゴンの数をレンダリングされた画素の数で除算することにより計算することを特徴とする方法。
  5. 請求項3に記載の方法において、前記パフォーマンスデータを分析するステップは、ポリゴン平均サイズが特定サイズより小さいかどうか検査するステップを含む方法。
  6. 請求項3に記載の方法において、前記パフォーマンスデータを分析するステップは、ポリゴン平均サイズが画素のサイズより小さいかどうかを検査するステップを含む方法。
JP2007035802A 2002-03-11 2007-02-16 グラフィックス処理の最適化方法 Expired - Lifetime JP4413936B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/095,213 US6919896B2 (en) 2002-03-11 2002-03-11 System and method of optimizing graphics processing

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2003575269A Division JP2005520234A (ja) 2002-03-11 2003-03-11 グラフィックス処理の最適化システムおよび方法

Publications (2)

Publication Number Publication Date
JP2007179563A JP2007179563A (ja) 2007-07-12
JP4413936B2 true JP4413936B2 (ja) 2010-02-10

Family

ID=27788216

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003575269A Pending JP2005520234A (ja) 2002-03-11 2003-03-11 グラフィックス処理の最適化システムおよび方法
JP2007035802A Expired - Lifetime JP4413936B2 (ja) 2002-03-11 2007-02-16 グラフィックス処理の最適化方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2003575269A Pending JP2005520234A (ja) 2002-03-11 2003-03-11 グラフィックス処理の最適化システムおよび方法

Country Status (8)

Country Link
US (1) US6919896B2 (ja)
EP (2) EP1662441B1 (ja)
JP (2) JP2005520234A (ja)
KR (1) KR100959468B1 (ja)
CN (1) CN1317682C (ja)
AU (1) AU2003212649A1 (ja)
DE (1) DE60331482D1 (ja)
WO (1) WO2003077120A2 (ja)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671407B1 (en) * 1999-10-19 2003-12-30 Microsoft Corporation System and method for hashing digital images
US6973574B2 (en) * 2001-04-24 2005-12-06 Microsoft Corp. Recognizer of audio-content in digital signals
US7356188B2 (en) * 2001-04-24 2008-04-08 Microsoft Corporation Recognizer of text-based work
US6996273B2 (en) 2001-04-24 2006-02-07 Microsoft Corporation Robust recognizer of perceptually similar content
US7020775B2 (en) 2001-04-24 2006-03-28 Microsoft Corporation Derivation and quantization of robust non-local characteristics for blind watermarking
US7006703B2 (en) * 2002-06-28 2006-02-28 Microsoft Corporation Content recognizer via probabilistic mirror distribution
US8259121B2 (en) 2002-10-22 2012-09-04 Broadcom Corporation System and method for processing data using a network
US7990390B2 (en) 2002-10-22 2011-08-02 Broadcom Corporation Multi-pass system and method supporting multiple streams of video
US7075542B1 (en) * 2002-11-12 2006-07-11 Ati Technologies Inc. Selectable multi-performance configuration
US6885376B2 (en) * 2002-12-30 2005-04-26 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US7119808B2 (en) * 2003-07-15 2006-10-10 Alienware Labs Corp. Multiple parallel processor computer graphics system
US20080211816A1 (en) * 2003-07-15 2008-09-04 Alienware Labs. Corp. Multiple parallel processor computer graphics system
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7782325B2 (en) * 2003-10-22 2010-08-24 Alienware Labs Corporation Motherboard for supporting multiple graphics cards
US9659339B2 (en) 2003-10-29 2017-05-23 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US8174531B1 (en) * 2003-10-29 2012-05-08 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US8860737B2 (en) * 2003-10-29 2014-10-14 Nvidia Corporation Programmable graphics processor for multithreaded execution of programs
US7961194B2 (en) 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US20080079737A1 (en) 2003-11-19 2008-04-03 Reuven Bakalash Multi-mode parallel graphics rendering and display system supporting real-time detection of mode control commands (MCCS) programmed within pre-profiled scenes of the graphics-based application
WO2005050557A2 (en) * 2003-11-19 2005-06-02 Lucid Information Technology Ltd. Method and system for multiple 3-d graphic pipeline over a pc bus
US7015914B1 (en) * 2003-12-10 2006-03-21 Nvidia Corporation Multiple data buffers for processing graphics data
US7831832B2 (en) 2004-01-06 2010-11-09 Microsoft Corporation Digital goods representation based upon matrix invariances
US20050156930A1 (en) * 2004-01-20 2005-07-21 Matsushita Electric Industrial Co., Ltd. Rendering device and rendering method
US20050165690A1 (en) * 2004-01-23 2005-07-28 Microsoft Corporation Watermarking via quantization of rational statistics of regions
US20050275760A1 (en) * 2004-03-02 2005-12-15 Nvidia Corporation Modifying a rasterized surface, such as by trimming
EP2341432A1 (en) 2004-03-13 2011-07-06 Adaptive Computing Enterprises, Inc. System and method of co-allocating a reservation spanning different compute resources types
WO2005089236A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for providing intelligent pre-staging of data in a compute environment
US7890629B2 (en) 2004-03-13 2011-02-15 Adaptive Computing Enterprises, Inc. System and method of providing reservation masks within a compute environment
US8782654B2 (en) 2004-03-13 2014-07-15 Adaptive Computing Enterprises, Inc. Co-allocating a reservation spanning different compute resources types
WO2005089246A2 (en) 2004-03-13 2005-09-29 Cluster Resources, Inc. System and method for providiing advanced reservations in a compute environment
US7770014B2 (en) * 2004-04-30 2010-08-03 Microsoft Corporation Randomized signal transforms and their applications
US7570267B2 (en) * 2004-05-03 2009-08-04 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US7978205B1 (en) 2004-05-03 2011-07-12 Microsoft Corporation Systems and methods for providing an enhanced graphics pipeline
US20070266388A1 (en) 2004-06-18 2007-11-15 Cluster Resources, Inc. System and method for providing advanced reservations in a compute environment
US8176490B1 (en) 2004-08-20 2012-05-08 Adaptive Computing Enterprises, Inc. System and method of interfacing a workload manager and scheduler with an identity manager
JP4450853B2 (ja) * 2004-09-16 2010-04-14 エヌヴィディア コーポレイション 負荷分散
US7721118B1 (en) * 2004-09-27 2010-05-18 Nvidia Corporation Optimizing power and performance for multi-processor graphics processing
US8271980B2 (en) 2004-11-08 2012-09-18 Adaptive Computing Enterprises, Inc. System and method of providing system jobs within a compute environment
US7576745B1 (en) 2004-11-17 2009-08-18 Nvidia Corporation Connecting graphics adapters
US7477256B1 (en) 2004-11-17 2009-01-13 Nvidia Corporation Connecting graphics adapters for scalable performance
US8066515B2 (en) * 2004-11-17 2011-11-29 Nvidia Corporation Multiple graphics adapter connection systems
US8134568B1 (en) 2004-12-15 2012-03-13 Nvidia Corporation Frame buffer region redirection for multiple graphics adapters
US8212831B1 (en) 2004-12-15 2012-07-03 Nvidia Corporation Broadcast aperture remapping for multiple graphics adapters
US7372465B1 (en) 2004-12-17 2008-05-13 Nvidia Corporation Scalable graphics processing for remote display
CN101849227A (zh) 2005-01-25 2010-09-29 透明信息技术有限公司 在单片构造的硅芯片上采用多个图形核心的图形处理和显示系统
US8863143B2 (en) 2006-03-16 2014-10-14 Adaptive Computing Enterprises, Inc. System and method for managing a hybrid compute environment
US7996455B2 (en) 2005-06-17 2011-08-09 Adaptive Computing Enterprises, Inc. System and method for providing dynamic roll-back reservations in time
US9231886B2 (en) 2005-03-16 2016-01-05 Adaptive Computing Enterprises, Inc. Simple integration of an on-demand compute environment
ES2614751T3 (es) 2005-04-07 2017-06-01 Iii Holdings 12, Llc Acceso bajo demanda a recursos informáticos
US10026140B2 (en) 2005-06-10 2018-07-17 Nvidia Corporation Using a scalable graphics system to enable a general-purpose multi-user computer system
US7886094B1 (en) 2005-06-15 2011-02-08 Nvidia Corporation Method and system for handshaking configuration between core logic components and graphics processors
US20070076869A1 (en) * 2005-10-03 2007-04-05 Microsoft Corporation Digital goods representation based upon matrix invariants using non-negative matrix factorizations
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
TWI322354B (en) * 2005-10-18 2010-03-21 Via Tech Inc Method and system for deferred command issuing in a computer system
US9092170B1 (en) * 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
JP4566120B2 (ja) * 2005-11-21 2010-10-20 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
US7434032B1 (en) 2005-12-13 2008-10-07 Nvidia Corporation Tracking register usage during multithreaded processing using a scoreboard having separate memory regions and storing sequential register size indicators
US7340557B2 (en) * 2005-12-15 2008-03-04 Via Technologies, Inc. Switching method and system for multiple GPU support
US7325086B2 (en) * 2005-12-15 2008-01-29 Via Technologies, Inc. Method and system for multiple GPU support
US7911467B2 (en) * 2005-12-30 2011-03-22 Hooked Wireless, Inc. Method and system for displaying animation with an embedded system graphics API
EP2023292B1 (en) * 2006-05-11 2020-02-26 Panasonic Intellectual Property Management Co., Ltd. Processing device
US7737984B2 (en) * 2006-06-30 2010-06-15 Honeywell International Inc. Method and system for an external front buffer for a graphical system
US8126993B2 (en) * 2006-07-18 2012-02-28 Nvidia Corporation System, method, and computer program product for communicating sub-device state information
US7768516B1 (en) * 2006-10-16 2010-08-03 Adobe Systems Incorporated Image splitting to use multiple execution channels of a graphics processor to perform an operation on single-channel input
US11836506B2 (en) 2007-04-11 2023-12-05 Apple Inc. Parallel runtime execution on multiple processors
US8341611B2 (en) 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
EP2135163B1 (en) 2007-04-11 2018-08-08 Apple Inc. Data parallel computing on multiple processors
US8276164B2 (en) 2007-05-03 2012-09-25 Apple Inc. Data parallel computing on multiple processors
US8286196B2 (en) 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US8108633B2 (en) * 2007-04-11 2012-01-31 Apple Inc. Shared stream memory on multiple processors
US8041773B2 (en) 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US8922565B2 (en) * 2007-11-30 2014-12-30 Qualcomm Incorporated System and method for using a secondary processor in a graphics system
SE0801742A0 (sv) * 2008-07-30 2010-01-31 Intel Corp Förfarande, apparat och datorprogramprodukt för förbättrad grafikprestanda
EP2289000B1 (en) * 2008-05-29 2018-08-08 Advanced Micro Devices, Inc. System, method, and computer program product for a tessellation engine using a geometry shader
US8286198B2 (en) 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
US9336028B2 (en) * 2009-06-25 2016-05-10 Apple Inc. Virtual graphics device driver
US10877695B2 (en) 2009-10-30 2020-12-29 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
US11720290B2 (en) 2009-10-30 2023-08-08 Iii Holdings 2, Llc Memcached server functionality in a cluster of data processing nodes
KR101651871B1 (ko) * 2009-12-28 2016-09-09 삼성전자주식회사 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US8587594B2 (en) * 2010-05-21 2013-11-19 International Business Machines Corporation Allocating resources based on a performance statistic
US8629867B2 (en) 2010-06-04 2014-01-14 International Business Machines Corporation Performing vector multiplication
US8692825B2 (en) 2010-06-24 2014-04-08 International Business Machines Corporation Parallelized streaming accelerated data structure generation
CN103105895A (zh) * 2011-11-15 2013-05-15 辉达公司 计算机系统及其显示卡及该系统进行图形处理的方法
US10217270B2 (en) * 2011-11-18 2019-02-26 Intel Corporation Scalable geometry processing within a checkerboard multi-GPU configuration
CN103946823B (zh) * 2011-11-18 2017-04-05 英特尔公司 棋盘多gpu配置内的可缩放几何形状处理
US9152872B2 (en) * 2012-11-12 2015-10-06 Accenture Global Services Limited User experience analysis system to analyze events in a computer desktop
US9019284B2 (en) 2012-12-20 2015-04-28 Nvidia Corporation Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline
US9123128B2 (en) * 2012-12-21 2015-09-01 Nvidia Corporation Graphics processing unit employing a standard processing unit and a method of constructing a graphics processing unit
KR101400270B1 (ko) * 2013-02-13 2014-05-28 부경대학교 산학협력단 컴퓨터 구동형 선망 어로 시뮬레이터
US9152601B2 (en) * 2013-05-09 2015-10-06 Advanced Micro Devices, Inc. Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
US9183611B2 (en) * 2013-07-03 2015-11-10 Apple Inc. Apparatus implementing instructions that impose pipeline interdependencies
KR101569093B1 (ko) * 2013-08-13 2015-11-13 삼성에스디에스 주식회사 분산 시스템에서 데이터를 처리하는 방법
KR102161742B1 (ko) * 2013-10-11 2020-10-05 삼성전자주식회사 피드백 경로를 포함하는 파이프 라인 시스템 및 그 동작방법
KR20150095144A (ko) * 2014-02-12 2015-08-20 삼성전자주식회사 그래픽스 데이터를 렌더링하는 방법 및 장치
US10147222B2 (en) * 2015-11-25 2018-12-04 Nvidia Corporation Multi-pass rendering in a screen space pipeline
US10825129B2 (en) * 2016-06-12 2020-11-03 Apple Inc. Eliminating off screen passes using memoryless render target
CN108228337B (zh) * 2016-12-22 2021-08-27 财团法人工业技术研究院 中央处理单元的配置方法及适用此方法的服务器
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
JP2021092934A (ja) 2019-12-09 2021-06-17 富士通株式会社 分析装置、分析プログラムおよびコンピュータシステム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4967375A (en) * 1986-03-17 1990-10-30 Star Technologies, Inc. Fast architecture for graphics processor
US5081575A (en) * 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
US5408606A (en) * 1993-01-07 1995-04-18 Evans & Sutherland Computer Corp. Computer graphics system with parallel processing using a switch structure
US5574847A (en) * 1993-09-29 1996-11-12 Evans & Sutherland Computer Corporation Computer graphics parallel system with temporal priority
US6241610B1 (en) * 1996-09-20 2001-06-05 Nintendo Co., Ltd. Three-dimensional image processing system having dynamically changing character polygon number
TW360823B (en) 1996-09-30 1999-06-11 Hitachi Ltd Data processor and graphic processor
US5852451A (en) * 1997-01-09 1998-12-22 S3 Incorporation Pixel reordering for improved texture mapping
AU2680699A (en) 1998-02-17 1999-08-30 Sun Microsystems, Inc. Estimating graphics system performance for polygons
US6191800B1 (en) * 1998-08-11 2001-02-20 International Business Machines Corporation Dynamic balancing of graphics workloads using a tiling strategy

Also Published As

Publication number Publication date
AU2003212649A1 (en) 2003-09-22
DE60331482D1 (de) 2010-04-08
US20030169269A1 (en) 2003-09-11
JP2007179563A (ja) 2007-07-12
AU2003212649A8 (en) 2003-09-22
US6919896B2 (en) 2005-07-19
CN1643545A (zh) 2005-07-20
KR20040104510A (ko) 2004-12-10
CN1317682C (zh) 2007-05-23
EP1662441B1 (en) 2010-02-24
EP1662441A1 (en) 2006-05-31
KR100959468B1 (ko) 2010-05-25
WO2003077120A3 (en) 2004-11-25
JP2005520234A (ja) 2005-07-07
WO2003077120A2 (en) 2003-09-18
EP1499962A2 (en) 2005-01-26

Similar Documents

Publication Publication Date Title
JP4413936B2 (ja) グラフィックス処理の最適化方法
US11880926B2 (en) Hybrid render with deferred primitive batch binning
US8144149B2 (en) System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
JP4938850B2 (ja) 拡張型頂点キャッシュを備えたグラフィック処理装置
JP5956770B2 (ja) タイルベースのグラフィックスシステム及びこのようなシステムの動作方法
US7551176B2 (en) Systems and methods for providing shared attribute evaluation circuits in a graphics processing unit
US11508028B2 (en) Tile assignment to processing cores within a graphics processing unit
US7079146B2 (en) Image producing device
US20070091088A1 (en) System and method for managing the computation of graphics shading operations
US10796483B2 (en) Identifying primitives in input index stream
KR100864998B1 (ko) 명령 전송 제어 장치 및 명령 전송 제어 방법
US8928679B2 (en) Work distribution for higher primitive rates
US10818067B1 (en) GPU assist using DSP pre-processor system and method
US9881392B2 (en) Mipmap generation method and apparatus
US11748933B2 (en) Method for performing shader occupancy for small primitives
US8427474B1 (en) System and method for temporal load balancing across GPUs
CN116802673A (zh) 用于使用两级装仓进行分布式渲染的系统和方法
US6667746B1 (en) Pre-blending textures
JP4000880B2 (ja) 画像処理装置およびその方法

Legal Events

Date Code Title Description
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: 20091117

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091118

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121127

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4413936

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121127

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131127

Year of fee payment: 4

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

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

EXPY Cancellation because of completion of term