JP4489806B2 - スケーラブルシェーダアーキテクチャ - Google Patents

スケーラブルシェーダアーキテクチャ Download PDF

Info

Publication number
JP4489806B2
JP4489806B2 JP2007508417A JP2007508417A JP4489806B2 JP 4489806 B2 JP4489806 B2 JP 4489806B2 JP 2007508417 A JP2007508417 A JP 2007508417A JP 2007508417 A JP2007508417 A JP 2007508417A JP 4489806 B2 JP4489806 B2 JP 4489806B2
Authority
JP
Japan
Prior art keywords
shader
pixel data
pipelines
raster
pipeline
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
JP2007508417A
Other languages
English (en)
Other versions
JP2007533029A (ja
Inventor
ルイ, エム. バストス,
カリム, エム. アブダラ,
クリスチャン ルエット,
マイケル, ジェー. トクスヴィグ,
ジョニー, ビー. ロアデス,
ロジャー, エル. アレン,
ジョン, ダグラス, ジュニア. ティネフィールド,
エメット, エム. キルガリフ,
ゲリー, エム. タロリ,
ブライアン キャブラル,
マイケル ウィッテンブリンク,クレイグ,
ショーン, ジェー. トレイクラー,
Original Assignee
エヌヴィディア コーポレイション
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 エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2007533029A publication Critical patent/JP2007533029A/ja
Application granted granted Critical
Publication of JP4489806B2 publication Critical patent/JP4489806B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Description

関連出願の相互参照
[0001]本出願は、2004年4月20日に出願された”グラフィックシェーダアーキテクチャ”と題する米国仮特許出願第60/561,617号(整理番号P001278)の利益を主張するものであり、当該仮出願は参照として本明細書に組み込まれる。
発明の分野
[0002]本発明は、コンピュータシステムに関するものであり、より詳細にはコンピュータシェーディングに関するものである。
発明の背景
[0003]グラフィック処理は、現代の高性能計算システムにとって重要な特徴である。グラフィック処理では、算術手順を実施して図形プリミティブ、例えば三角形又は矩形をレンダリング、即ち描画し、所望の視覚画像を生成する。実時間グラフィック処理は、視覚的に満足のいく動画を生成するために、図形プリミティブの高速処理に基づいている。
[0004]初期のグラフィックシステムは、滑らかな表面をもつ図形プリミティブからなる画像オブジェクトを表示することに限定されていた。即ち、視覚的なテクスチャ、隆起(bump)、スクラッチ、又は他の表面の特徴が、図形プリミティブではモデル化されていなかった。そして、画質を向上するために、実世界の特質のテクスチャマッピングが導入された。一般的には、テクスチャマッピングは、画像を図形プリミティブの表面上にマッピングするものであり、複雑な画像の外観を、オブジェクトの実際の三次元の細部をレンダリングすることに関連する高い計算コストをもたらすことなく、生成するものである。
[0005]グラフィック処理は、通常、アプリケーションプログラムインターフェイス(API)を用いて実行されるものであり、APIは、マルチプラットフォームのオペレーティングシステム及びハードウェアで実行することが可能な標準ソフトウェアインターフェイスを提供する。APIの例には、オープングラフィックライブラリ(OpenGL)とD3Dがある。一般的には、このようなアプリケーションプログラムは、関連のハードウェアによって実行される所定の標準化されたコマンドのセットを含む。例えば、OpenGLをサポートするコンピュータシステムでは、オペレーティングシステムとアプリケーションソフトウェアプログラムが、システムハードウェアに関する如何なる仕様も知ることなく、標準に基づいて呼び出しを行うことができる。アプリケーションの作者は、APIを使用して、それらのコマンドが如何に実装されるかについての関心をもつことなく、それらアプリケーションの視覚的態様を設計することが可能である。
[0006]APIは、それらが専用ハードウェアによってサポートされる場合に、特に有益である。実際に、グラフィック画像の高速処理は、しばしば、半導体基板上に製造された専用のグラフィック処理ユニット(GPU)を用いて実行される。有益なことに、GPUを設計し使用して、他のシステムリソースに大きな影響を与えることなく、高速且つ正確にコマンドを処理することができる。
[0007]図1は、グラフィック処理ユニット102を含むグラフィックシステム100の簡略化したブロック図を示している。図示するように、グラフィック処理ユニット102は、ホストインタフェイス/フロントエンド104を有している。ホストインタフェイス/フロントエンド104は、未加工のグラフィックデータを中央処理ユニット(CPU)103から受け取る。当該CPU103は、メモリ105に記憶されたアプリケーションプログラムを実行する。ホストインタフェイス/フロントエンド104は、入力情報を蓄積し、当該情報をジオメトリエンジン106に供給する。ジオメトリエンジンは、フレームバッファメモリ120にフレームバッファインタフェイス116を介してアクセスする。ジオメトリエンジン106は、フレームバッファメモリ120に記憶されている「モデル」座標における図形プリミティブの三次元の頂点を、二次元フレームバッファ座標へと生成、スケーリング、回転、及び投影する。通常、三角形が三次元オブジェクト用の図形プリミティブとして使用されるが、矩形がしばしば二次元オブジェクト(例えばテキスト表示)用に使用される。
[0008]ジオメトリエンジン106からの図形プリミティブの頂点の二次元フレームバッファ座標は、ラスタライザ108に与えられる。ラスタライザ108は、図形プリミティブ内の全ピクセルの位置を特定する。これは、通常、図形プリミティブを定義するライン間に延在するラスタ(水平)ラインに沿って実行される。ラスタライザ108の出力は、ラスタピクセルデータと称される。
[0009]ラスタピクセルデータは、シェーダ110に与えられ、シェーダ110は、入力データ(コード、位置、テクスチャ、状態、定数等)を、シェーダプログラム(命令の系列)を使用して処理し、出力データを生成する。シェーダはグラフィック処理に関連して記述されるものであるが、一般には、多くの他の機能に有益なものである。シェーダは、データを並列に扱うように、大容量のデータを同時に扱うことができる処理機能の集合、であると考えることができる。
[0010]シェーダ110は、テクスチャエンジン112を含み、当該テクスチャエンジン112は、ラスタピクセルデータを所望のテクスチャ及び光学的特長を有するように変更する。テクスチャエンジン112は、フレームバッファメモリ120に記憶されたデータへのアクセスが可能であり、大容量のデータを非常に高速に処理するハードウェアパイプラインを用いて実装することが可能である。陰影付(Shaded)ピクセルデータは、次いで、ラスタオペレーションプロセッサ114(図1のRaster Op)に送られ、当該ラスタオペレーションプロセッサ114が、任意的に、追加の処理を陰影付ピクセルデータに施す。その結果のピクセルデータは、フレームバッファメモリ120にフレームバッファインタフェイス116によって記憶される。フレームピクセルデータは、ディスプレイ122に表示するなど、種々の処理に使用される。
[0011]プログラム可能なシェーダは、達成可能な視覚効果における柔軟性を実現し、グラフィック機能が利用可能とされてから当該グラフィック機能がグラフィックAPIの一部として標準化されるまでの間の時間を削減することが可能である。プログラム可能なシェーダは、そのモードにおいて標準APIコマンドが実施される標準APIモードと、そのモードにおいて新たなグラフィックの特徴をプログラム可能な非標準モードと、を有することができる。
[0012]シェーダはそれ自体が有益であると分かっている一方で、シェーダの性能に対する要求は、既存のシェーダの性能を超えている。既存のシェーダを改良することは幾つかの要求に対処できるが、かかる改良は実装することが困難である。さらに、将来の要求が既存のシェーダアーキテクチャ及び実装形態の改良によって達成可能な能力を超えることが予想される。したがって、新たなシェーダアーキテクチャが有益となろう。新たな高性能のプログラム可能なシェーダアーキテクチャは、ソフトウェアプログラム化されたグラフィック特徴を実現するものであり、更に有益であろう。また、新たな高性能のプログラム可能なシェーダアーキテクチャは、必要に応じてシェーダの性能への要求を満たすよう拡張可能であり、且つ進化したグラフィック機能を実現するよう拡張可能であり、有益であろう。
[0013]さらに、GPUは大きく複雑な半導体デバイスであり、高速で動作して多くの熱を発生するものであるので、また、シェーダはGPUの大部分を占めるので、シェーダの欠陥はGPUチップの廃棄の大部分をもたらす。シェーダの処理機能を提供しつつシェーダの機能部を有効又は無効にする能力を有するシェーダアーキテクチャが、有益であろう。
発明の簡単な概要
[0014]本発明の原理は、新規、有用、且つ非自明なスケーラブルシェーダアーキテクチャを提供する。かかるシェーダアーキテクチャは、必要に応じてスケールアップ及びスケールダウンが可能であり、性能要求を満たし、低減又は向上された性能をもつことが可能である。
[0015]本発明の原理を用いた幾つかの実施の形態は、高性能でプログラム可能な形態をとることができ、多数のシェーダパイプラインを含むことができ、それらの各々がデータ処理オペレーションをラスタピクセルデータに実施するようにプログラムすることが可能である。有益なことに、シェーダパイプラインは同一のものであり、これらを個別にプログラムすることができ、個々のシェーダパイプラインを無効にすることができ、一以上のシェーダパイプラインが無効である場合でもシェーダ処理オペレーションを実行することができる。
[0016]本発明の実施の形態では、シェーダディストリビュータが、ラスタピクセルデータを、多種のシェーダパイプラインに、当該シェーダパイプラインの負荷を同等にするようなバランスのとれた形で有益に、分配する。しかしながら、有益な場合には、一以上のシェーダパイプラインを機能的に無効にすることができ、これによってシェーダパイプラインにおける欠陥が機能しないチップを生じさせることを防止する。シェーダコレクタは、シェーダパイプラインの出力を集めて編成することにより、当該出力を適切な順として、陰影付ピクセルデータをもたらす。シェーダ命令プロセッサは、必要に応じて個々のシェーダパイプラインをプログラムして、その処理タスクを実行する。本発明の幾つかの実施の形態は、一より多いシェーダ命令プロセッサを有する。
[0017]各シェーダパイプラインは、ゲートキーパを含み、当該ゲートキーパは、シェーダディストリビュータ及びシェーダ命令プロセッサと連携し、これによってシェーダパイプラインを通るピクセルデータが必要に応じて制御及び処理される。
[0018]前述の及び他の側面並びに利点は、図面を参照しつつ、本発明の好適な実施の形態を以下に詳細に説明することによって、より良く理解される。
好適な実施の形態の説明
[0024]本発明の原理は、新規、スケーラブル、且つプログラム可能なシェーダアーキテクチャを提供する。当該原理に従うシェーダアーキテクチャは、多数のシェーダパイプラインを含み、当該シェーダパイプラインは、処理オペレーションをラスタピクセルデータに実施し陰影付ピクセルデータを生成するようにプログラムすることが可能である。一以上のシェーダパイプラインは、シェーダの機能を維持しつつ、機能無効にすることが可能である。これは、チップの廃棄を削減することを可能にし、所与のチップにおいて利用可能なパイプラインの数を単に調整することによって低性能又は高性能のチップを実施することを可能にする。かかるシェーダアーキテクチャは、シェーダディストリビュータを有し、当該シェーダディストリビュータは、処理されたラスタピクセルデータではあるが、ラスタピクセルデータを多種のシェーダパイプラインに、有益にはそれらの負荷をバランスさせるように与える。シェーダコレクタは、シェーダパイプラインの出力を集めて適切な順に編成し、陰影付ピクセルデータを生成する。シェーダ命令プロセッサ(スケジューラ)は、個々のシェーダパイプラインを目的のタスクを実行するようにプログラムする。幾つかの実施の形態は、各シェーダパイプライン用に一つのシェーダ命令プロセッサを有するといったように、多数のシェーダ命令プロセッサを使用することが可能である。
[0025]各シェーダパイプラインは、種々の処理オペレーション(プログラム)を実装する相異なるセットのプログラムコマンドを実行するようにプログラムすることが可能である。それらのコマンドは、分岐命令(branching instructions)、テクスチャ処理、並びに、浮動小数点、固定小数点、及び又は整数値を用いる算術オペレーションを含む。各シェーダパイプラインは、シェーダゲートキーパを含み、当該ゲートキーパは、シェーダディストリビュータ及びシェーダ命令プロセッサと連携し、これによってシェーダパイプラインを通るデータを必要に応じて処理する。
[0026]新規なシェーダアーキテクチャをより良く理解するためには、その機能をより詳細に理解することが役立つであろう。ここで、図1に戻る。シェーダへの入力は、グラフィックシステムにおいて使用される図形プリミティブの頂点の二次元表示座標である。さらに、テクスチャステーション112は、フレームバッファ120内のデータへのアクセスが可能である。通常、必ずしもそうではないが、それらの図形プリミティブは三角形である。例えば、図2Aは、図形プリミティブの三角形202を定義する頂点の座標(0,0)、(1,0)、及び(1,1)を示している。矩形が使用される場合には、追加の座標(0,1)が図形プリミティブに含まれる。しかしながら、テキストといった二次元プリミティブを除いて、三角形が最も一般的である。
[0027]三角形202の頂点201が既知になると、図形プリミティブ内のピクセルが決定される。これは、これらのピクセルが、図形プリミティブを形成する線210の間に位置するピクセルだからである。通常、ピクセルはラスタ走査線に沿って編成される。例えば、図2Bは、走査線299によって配列された、三角形202内の複数のピクセル298を示す。
[0028]図3は、本発明の原理に従っているシェーダアーキテクチャの高レベルのブロック図である。シェーダ300は、図1の一般的なシェーダ110の新規、有用、且つ非自明な実施の形態である。シェーダ300の目的は、ラスタライザ108からのラスタピクセルデータを、フレームバッファに送られるべき各ピクセルについての適切な色値及び深度値に変換することである(ラスタピクセルデータは、フラグメントごとに未加工のX,Yと、色、深度、テクスチャ、座標等といった頂点の属性ごとに平面方程式と、を有する)。そうするために、シェーダ300は、グラフィックAPI機能に応答し、また、アプリケーションプログラムコマンドに応答して、算術方程式を解くための多数のオペレーションを実行し、所望の色値及び深度値を生成して、陰影付ピクセルデータを形成する。ラスタオペレーションプロセッサによる追加の処理の後、陰影付ピクセルデータは、フレームピクセルデータに変換され、当該フレームピクセルデータはフレームバッファインタフェイス116によってフレームバッファメモリ120内に記憶される(図1を参照のこと)。
[0029]シェーダ300の注目すべき特徴は、その多数のシェーダパイプライン302である。各シェーダパイプライン302は、フレームバッファメモリ120に記憶されたプログラム情報を介して個々にプログラム可能であり、算術及び他の処理オペレーションをラスタピクセルデータに実施し、陰影付ピクセルデータを生成する。シェーダ300は、四つのシェーダパイプライン302を有するように示されているが、一般には、1からN個のシェーダパイプライン302からなることができる。なお、Nは、整数である。この拡張性を使用して、単にシェーダパイプラインを追加又は減らすことによって、シェーダ処理パワーを制御することが可能である。さらに、かかる拡張性は、シェーダパイプライン302の冗長構成を実現する。言い換えると、欠陥のあるシェーダパイプライン302を機能無効にする能力を、シェーダ300の全体の動作を維持しつつ、実現する。シェーダパイプライン302は、有益なことに同一のものであるので、必要に応じて追加のパイプライン302を製造することは、比較的単純な作業である。これは、同じマスク及び半導体製造プロセスを利用可能であるからである。
[0030]シェーダ300は、また、シェーダディストリビュータ304を含む。シェーダディストリビュータ304の一つの機能は、ラスタライザ108からの情報(ラスタピクセルデータ)を、種々のシェーダパイプライン302に分配することであり、これによって、シェーダパイプラインがラスタピクセルデータを処理し得るようになる。有益なことに、この分配は、シェーダパイプライン302間でのバランスした負荷を提供するように実施される。即ち、各シェーダパイプライン302は、同様の量の処理を実施し、他のものを超えるように選択されない。シェーダディストリビュータ304の他の機能は、ラスタライザ108からのデータを処理して、シェーダパイプライン302が必要なものだけを受け取るようにする。
[0031]制御データの一部は、状態データと称されるものであり、ラスタライザから到来しシェーダパイプラインによって利用されないものであり、シェーダディストリビュータ304によってファーストインファーストアウト(FIFO)バッファメモリ306に与えられる。状態データの他に、ファーストインファーストアウトバッファメモリ306は、また、シェーダパイプラインを通らないピクセルカバレージデータ及びX−Y座標を受け取る。
[0032]シェーダパイプライン302はラスタピクセルデータを個別に処理するので、シェーダパイプライン302の出力は、結果として生じる処理済のピクセルデータがフレームバッファ内のピクセルに(ラスタ走査線によって)、適切に整合するように編成されなければならない。シェーダ300は、したがって、シェーダコレクタ308を有している。このシェーダコレクタ308は、シェーダパイプライン302の出力と、ファーストインファーストアウトバッファメモリ306の出力とを受け取り、シェーダオペレーションの結果を編成して、ラスタオペレーションプロセッサ(RPO)114用の陰影付ピクセルデータを生成する。
[0033]シェーダコレクタ308の出力は、フレームバッファインタフェイス116を介してフレームバッファメモリ120に与えられ、それ故にディスプレイ122に与えられる。シェーダパイプライン302は全て、フレームバッファメモリからデータを(テクスチャ要求を経て)要求するので、シェーダ300は、また、その処理を支援するL2キャッシュメモリ310を含んでいる。
[0034]シェーダ300は、本発明の原理に従うシェーダアーキテクチャを有する。このアーキテクチャは、多数の個別にプログラム可能なシェーダパイプライン、シェーダパイプラインにデータを分配するシェーダディストリビュータ、及び、シェーダパイプラインの計算結果を集め、シェーダパイプラインの計算結果を編成して、ROP114によって使用される陰影付ピクセルデータを生成するシェーダコレクタを実現する。陰影付ピクセルデータはROP114によって更に処理されて、フレームバッファデータを形成する。全体のアーキテクチャのスキームは明確であるが、本発明の利益及び応用の理解を助けるために、シェーダ300のより詳細な説明が有益であろう。そのために、図4は、シェーダ300の部分400の更に詳細なブロック図を示す。部分400は、一つのシェーダパイプライン302と一つのスケジューラのみを示すが、多数のシェーダパイプライン302及び多数のスケジューラが本発明の原理に完全に従うことを理解すべきである。
[0035]図4を参照すると、シェーダディストリビュータ304はラスタライザ108からの情報を受け取り、次いでラスタストリーム情報及び矩形ラスタストリーム情報をシェーダパイプライン302内のシェーダゲートキーパ404(更に詳細には後述する)に、分配する。ラスタライザ108からの情報は、二つの主なフォーマット、平面方程式情報として示す三角平面方程式情報、及びラスタストリーム情報の形式の三角ラスタピクセルデータの形態をとっている。さらに、シェーダ300は、また、三角形の図形プリミティブに関する入力である二次元の情報を取り扱うので、シェーダディストリビュータ304はまた、三角ラスタピクセルデータを受け取る。
[0036]シェーダディストリビュータ304の主な機能は、三角平面方程式情報とラスタストリーム情報とを、個々のシェーダパイプライン302に分配することであり、シェーダパイプライン302間のシェーダパイプライン負荷をバランスさせるようにすることが有益である。即ち、処理において優先されるシェーダパイプライン302はなく、各々が同じ機能をもつ。これによって、通常、種々のシェーダパイプライン302によって実行される均等な作業をもたらす。先述したように、シェーダパイプライン302に必要とされないが他の目的に必要とされる情報は、シェーダディストリビュータ304によってファーストインファーストアウトバッファメモリ306(図3を参照のこと)に転送される。
[0037]データをシェーダパイプライン302に実際に分配することには、二つのフェーズ、即ちセグメンテーションと分配において実行される。これは、少なくとも部分的には、各シェーダパイプライン302が、一時に限られた数のピクセルに対する処理を実行するからである。この数は、通常、グラフィックオペレーションを完了するために処理されなければならないピクセルの数より非常に小さいものである。したがって、入力データは、「エンドオブセグメント(end−of−segment)」トークンを用いて部分に分割される。エンドオブセグメントトークン及び他のリソースの制限は、入力データを「セグメント」と呼ばれるグループに分断する。
[0038]分割は、入力ラスタストリーム情報をセグメントに分断する処理である。実際に分割をすることには、多くの理由がある。その一つは多数のシェーダパイプライン302間の負荷バランスにあり、他の一つは単一のシェーダパイプライン302によってなし得る作業負荷サイズにある。後者は、シェーダパイプライン内のシェーダ処理ステーション309によって取り扱うことが可能なピクセルの数に依存する。この数は、デッドロックと称される条件によって制限される。これについては後述する。単一のシェーダパイプライン302によって取り扱うことのできるピクセルの数は、また、シェーダ登録ファイル(RAM)420のメモリ記憶容量によって制限される。
[0039]単一の処理ステーション309、及びシェーダ登録ファイル(RAM)420のメモリ記憶容量によって取り扱うことの可能な最大のピクセル数に加えて、他の実用性がセグメントのサイズを制限する。各シェーダゲートキーパ404は、制限された量のRAMを有する。実際に、RAMは、セグメントの一部となり得る三角形(属性及びピクセル)の数を制限する。その数は、シェーダゲートキーパ404のRAMの中に占める各三角形のワードの数に依存し、これは三角形ごとに処理されるテクスチャ座標の数(及びそれぞれの次元)といった因子に動的に依存する。処理される実際のピクセルの数は、シェーダパイプラインの編成とシェーダパイプラインプロセッサ309の利用可能なレイテンシー(待ち時間)に依存する。
[0040]分割することの別の理由は、シェーダパイプライン302が状態バンドル(state bundles)を再循環し得ないことにある。状態バンドルは、シェーダのオペレーションを制御するデータである。状態バンドルは処理済データにはなり得ないので、セグメント境界、従ってセグメントが必要である。
[0041]分割に関連するのは、データを編成する方法である。一実施の形態では、シェーダ300は、ピクセルクワッド(quads)について演算を行う。これは、同時に処理されるコンポーネントを有する2×2のピクセルブロックである。次いで、クワッドのセグメントが形成される。しかしながら、クワッドを使用することは、本発明の原理の要件ではない。幾つかの実施の形態では、特定のピクセルのグループを全く処理しないことがあり、一方、他の幾つかの実施の形態ではグループにおけるピクセルの他の数を使用することもある。例えば、これは、トライアッド(Triads)と呼ばれる3ピクセルのグループである。一般的に、ピクセルのグループ化は、1〜Mの数を用いることができる。なお、Mは整数である。
[0042]分配は、シェーダパイプライン302の一つを選択し、そのシェーダパイプライン302に完全なセグメントを供給し、次いで、次のセグメントを次のシェーダパイプライン302に供給するプロセスである。シェーダ300(図3を参照のこと)では、セグメントの分配のシーケンスが、動作可能なシェーダパイプライン302間の単純なラウンドロビン方式の割り当てである。例えば、四つのシェーダパイプライン302があり、その三つが動作可能である場合には、分配シーケンスは三つの動作可能なシェーダパイプライン302の間におけるものとなる。第1のセグメントはシェーダパイプライン0に向かい、次のセグメントがシェーダパイプライン1に向かい、次のセグメントがシェーダパイプライン2に向かい、次いでシェーダパイプライン0に戻るであろう。
[0043]先述したように、シェーダディストリビュータ304は、(動作時及び製造時のいずれかにおいて)選択されたシェーダパイプライン302を無効にするよう構成可能である。これは、欠陥のあるシェーダパイプライン302の機能が他のシェーダパイプライン302によって実施されることを可能とし、製造者が低下又は向上させた性能のデバイスを提供することを可能にする。したがって、欠陥のあるシェーダパイプライン302は、必ずしも全体の半導体チップの廃棄をもたらさない。シェーダパイプラインが作動することを決定するのに、如何なる方法も使用可能である。例えば、製造時におけるチップのテスト、テストプログラム、チップ又はその計算結果の視覚検査を使用して、作動するシェーダパイプライン302を特定することができる。
[0044]ここで図3に戻る。選択されたシェーダパイプライン302を無効にすることは、シェーダパイプラインを実現することに関連する。単一の三角形は非常に大きいものであってもよいので、それを処理することが多数のセグメントに及ぶことも可能である。しかし、一つのシェーダパイプライン302は、所与の時間で一つのセグメントを処理することができるだけであるから、大きな三角形は、多数のシェーダパイプライン302によって処理されなければならない。これを支援するために、シェーダディストリビュータ304は、三角形の情報を実際にはセグメントを処理していないシェーダパイプライン302の全てにブロードキャストする。受け取ったシェーダパイプライン302の各々は、プログラム情報を使用してそれ自体を設定するよう試み、到来するラスタピクセルデータを受け取る準備をする。次いで、セグメントを処理するシェーダパイプライン302は、ラスタピクセルデータを受け取って、その処理を開始する。ラスタピクセルデータは、唯一のシェーダパイプライン302に分配される。
[0045]分配の実施を支援し、使用されないシェーダパイプラインをターンオフするために、シェーダ300は、パイプイネーブルマスク(pipe enable mask)を使用することができる。これは、どのシェーダパイプライン302が動作可能であるかをシェーダ300に通知する。かかるマスク信号は、シェーダディストリビュータ304にバス408を介して与えることができる。動作可能なシェーダパイプライン302は、それらのマスクビットを1に設定し、動作不可能なピクセルパイプラインはそれらのマスクを0に設定する。マスク信号は、ジャンパスイッチ、ソフトウェアコマンド、ハードウェア、又は他のメカニズムによって与えられる。
[0046]セグメントを処理しない全てのシェーダパイプラインを設定することは、明確な利点を有する。この利点は、三角形が他のセグメントに波及する場合、そのセグメントを既に設定されたシェーダパイプライン302に送ることができるというものである。そして、その三角形を一つのシェーダパイプライン302上で有効にすることによって、セグメント内の三角形用のラスタデータを処理することが可能である。このプロセスは、新たなセグメントに波及する大きな三角形用の新たなプログラムデータを送る必要性を避けるだけでなく、追加のシェーダパイプライン302が複雑なメカニズムを要せずに有効とされて、シェーダディストリビュータ304からセグメントを再送することを可能にする。利用可能なシェーダパイプライン302は、単に、到来するセグメントを受容し、有効化を待つだけである。三角形の情報がシェーダパイプラインによって利用されない場合には、その三角形の情報はシェーダゲートキーパによって上書きされる。
[0047]シェーダディストリビュータ304の出力ストリームについて幾つか言及することが有益であろう。シェーダディストリビュータ304は、少なくとも一つの非ゼロのピクセルを有する三角形の情報を転送するだけである。このメカニズムは、ナル三角形放棄(Null Triangle Discard)と呼ばれる。これは、シェーダパイプライン302のデータを要求することで処理パワーを浪費しないことを保障することによってオペレーションの処理を改善する。
[0048]幾つかの実施の形態では、シェーダディストリビュータ304は、シェーダパイプライン302のプログラミングに関連する機能を有している。これらの実施の形態では、プログラミング命令が、シェーダディストリビュータ304によってシェーダパイプライン302に送られる。これら実施の形態の幾つかにおいては、最初のN個(8個とする)プログラミング命令が送られる。かかる実施の形態において、又はシェーダディストリビュータがシェーダパイプライン302にプログラム情報を送らない実施の形態においては、スケジューラ424がプログラム命令をシェーダパイプラインに与える。スケジューラ424は、次いで、シェーダディストリビュータ304からシェーダパイプライン302へのラスタピクセルデータの適用を調整しなければならない。
[0049]図1及び図3を参照すると、プログラム命令のコピーが、有益なことにフレームバッファメモリ120に記憶されている。シェーダパイプライン302のプログラミングは、フラグメントプログラム、即ち完全なグラフィカルプログラムのサブセットを実装する小さな命令セットを用いて実行される。フラグメントプログラムが使用される理由は、シェーダパイプライン302がリソースを制限するからである。このことは、完全なグラフィックプログラムが通常非常に大きくてシェーダパイプライン302に直接与えることができないことを意味する。このように、フラグメントプログラムが形成され、シェーダパイプライン302に与えられる。例えば、N個の(8個とする)プログラム命令を得て、対応のフラグメントプログラムに変換して、シェーダパイプライン302をプログラムするのに使用することができる。セグメントがN(8)個の命令によって処理された後、次のN(8)個の命令を実装する他のフラグメントプログラムが形成され、シェーダパイプライン302に与えられる。
[0050]先述したように、本発明の幾つかの実施の形態では、最初のN個の命令がシェーダディストリビュータ304を介して与えられる。これは、多くの異なる方法で実施することが可能である。例えば、最初のN個の命令をスケジューラ424に(直接に、又は他のメカニズムを介して)送ることが可能である。スケジューラ424は、次いで、最初のフラグメントプログラムを最初のN個の命令から形成することが可能である。この最初のフラグメントプログラムは、次いで直接、シェーダパイプライン302に送ることが可能である。後続のフラグメントプログラム、及び/又は最初のフラグメントプログラムは、次いで、それ自身のフレームバッファメモリ120に直接、又はある種の他のメカニズムを解してアクセスするスケジューラ424によって形成することができる。所与のシェーダパイプライン302はフラグメントプログラムを用いてプログラムすることが可能なだけである一方、異なるシェーダパイプライン302を異なるフラグメントプログラムでプログラムすることが可能であることに注意されたい。さらに、パイプラインルーピングと分岐を必要に応じて実行して、所望のフラグメントプログラムを実装し、フラグメントプログラムを連続して動作させる。
[0051]説明した実施の形態では、分岐命令は、最後のシェーディングパスの終端に付け加えることができる。分岐オペレーションが発生する場合には、新たなプログラム命令が提供される間、シェーダパイプラインを介する空のパスが発生する。次のパスは、シェーダ計算の下部(shader computation bottom)で再開される。これはシェーダ登録ファイル420の内容の読み込みを実現する。分岐オペレーションは二つのパスを必要とするが、分岐オペレーションは有益となりうる。例えば大きな分岐ブロックは、しばしばシェーダの再コンパイルを不要とする。
[0052]ここで図4に戻る。プログラム可能なシェーダパイプラインは、参照文献、例えば先述のように組みこまれた特許文献により知られているが、シェーダ300は新規なシェーダゲートキーパ404を有している。シェーダゲートキーパ404は、セグメント、三角方程式情報、及び、プログラムデータをシェーダディストリビュータ304から受け取る。これは、三角形のストリーム情報が全てのシェーダパイプライン302に送られるような態様で、行われる。しかしながら、シェーダディストリビュータ304は、処理される三角形を有効にする。
[0053]陰影付ピクセルデータが処理された後、シェーダコレクタ308は、陰影付ピクセルデータを多数のシェーダパイプライン302から集め、当該データをファーストインファーストアウトバッファメモリ306からのカバレージデータ、及びX、Yと結合して、編成された陰影付ピクセルデータパケットを形成する。得られたデータは、ラスタオペレーションプロセッサ114に送られ、当該プロセッサ114が、追加の処理(グラフィック処理ユニット102を参照)を実行する。ラスタオペレーションプロセッサが処理を行った後、最終的なフレームピクセルデータがフレームバッファインタフェイス116に出力される
[0054]種々の実施の形態を説明したが、それらは例示の目的のみに提供されたものであり、制限を目的にするものでないこと理解されたい。特定の数、例えば、クワッドの使用に関する先の言及は、説明及び例示だけを目的としている。従って、好適な実施の形態の幅、及び範囲は、上述の例示的な実施の形態の何れかによって限定されるべきものではなく、特許請求の範囲及びその均等の範囲に基づいてのみ定義されるべきものである。
従来技術のグラフィックシステムを概略的に示す図である。 三角形の幾何図形プリミティブを概略的に示す図である。 各走査線に沿って配列されたピクセルをもつ三角形の幾何図形プリミティブを示す図である。 多数のシェーダパイプラインを有しており、本発明の原理に従っているシェーダアーキテクチャの高レベルのブロック図である。 図3に示すシェーダアーキテクチャから選択されたアーキテクチャの特徴を示し、幾つかのシェーダパイプラインのうちの一つのみを示すブロック図である。

Claims (44)

  1. それぞれがラスタピクセルデータのセグメントを処理する複数のシェーダパイプラインと、
    グラフィックプログラムの一部分を選択して、前記ラスタピクセルデータのセグメントの処理を制御する有限な数のプログラム命令を含んだフラグメントプログラムを生成する複数のシェーダスケジューラであって、前記複数のシェーダパイプラインに対応付けられており、前記有限な数は前記複数のシェーダパイプラインのリソースに基づき定められている、当該複数のシェーダスケジューラと、
    ピクセルデータのラスターストリームを、限定されたサイズのラスタピクセルデータのセグメントに分割し、得られた前記ラスタピクセルデータのセグメントを前記複数のシェーダパイプラインに選択的に分配するシェーダディストリビュータであって、ラスタピクセルデータのセグメントの処理を行わないシェーダパイプラインの集合を構成する複数のシェーダパイプライン全てに対し三角形情報をブロードキャストし、当該三角形情報を有効化し、当該三角形情報を利用してラスタピクセルデータのセグメントの処理を開始する、当該シェーダディストリビュータと、
    陰影付ピクセルデータを形成するための、前記シェーダパイプラインからの計算結果を集めるシェーダコレクタと、
    を備えるシェーダ。
  2. 前記コマンドが、少なくとも一つのシェーダパイプラインに分岐オペレーションを実行させる分岐コマンドを含む、請求項1に記載のシェーダ。
  3. 前記ラスタピクセルデータを前記シェーダディストリビュータに送るラスタライザを更に含む、請求項1に記載のシェーダ。
  4. 前記シェーダは、
    各シェーダパイプラインのメモリ記憶容量以下の容量のシェーダ登録ファイル、をさらに備え、
    前記シェーダディストリビュータにより生成されるラスタピクセルデータのセグメントの限定されたサイズは、前記シェーダ登録ファイルの容量の範囲内で記憶可能なラスタピクセルデータのデータ量に基づくサイズである、請求項3に記載のシェーダ。
  5. 前記シェーダパイプラインの少なくとも一つが、前記ラスタピクセルデータを処理して、テクスチャ情報を加える、請求項1に記載のシェーダ。
  6. 前記シェーダパイプラインの少なくとも一つが、算術オペレーションを前記ラスタピクセルデータに対して実行する、請求項1に記載のシェーダ。
  7. 前記シェーダディストリビュータが、前記シェーダパイプラインの少なくとも一つを、受信した設定情報に基づいて、機能無効にする、請求項1に記載のシェーダ。
  8. 前記シェーダディストリビュータは、前記シェーダパイプラインの前記少なくとも一つを、ラスタピクセルデータを前記少なくとも一つのシェーダパイプラインに分配しないことによって、機能無効にする、請求項7に記載のシェーダ。
  9. 異なる前記シェーダパイプラインは、異なるフラグメントプログラムによりプログラムされている、請求項1に記載のシェーダ。
  10. 前記フラグメントプログラム内の前記プログラム命令の数は8である、請求項1に記載のシェーダ。
  11. 前記シェーダは、
    前記シェーダディストリビュータと前記シェーダコレクタの間に配置されたファーストインファーストアウトバッファメモリであって、前記複数のシェーダパイプラインにより処理されないピクセルカバレージデータ及びX−Y座標を記憶する、当該ファーストインファーストアウトバッファメモリ、
    をさらに備える、請求項1に記載のシェーダ。
  12. アプリケーションプログラムを動作させる中央処理ユニットであって、該アプリケーションプログラムが該中央処理ユニットにデータを生成させる、該中央処理ユニットと、
    前記データをフレームバッファピクセルデータに変換する処理ユニットであって、シェーダを有する該処理ユニットと、
    を備えるコンピュータシステムであって、
    前記シェーダは、
    それぞれがラスタピクセルデータのセグメントを処理して陰影付ピクセルデータを生成する複数のシェーダパイプラインと、
    グラフィックプログラムの一部分を選択して、前記ラスタピクセルデータのセグメントの処理を制御する有限な数のプログラム命令を含んだフラグメントプログラムを生成する複数のシェーダスケジューラであって、前記複数のシェーダパイプラインに対応付けられており、前記有限な数は前記複数のシェーダパイプラインのリソースに基づき定められている、当該複数のシェーダスケジューラと、
    ピクセルデータのラスターストリームを、限定されたサイズのラスタピクセルデータのセグメントに分割し、得られた前記ラスタピクセルデータのセグメントを前記複数のシェーダパイプラインに選択的に分配するシェーダディストリビュータであって、ラスタピクセルデータのセグメントの処理を行わないシェーダパイプラインの集合を構成する複数のシェーダパイプライン全てに対し三角形情報を通知し、当該三角形情報を有効化し、当該三角形情報を利用してラスタピクセルデータのセグメントの処理を開始する、当該シェーダディストリビュータと、
    前記陰影付ピクセルデータを前記複数のシェーダパイプラインから集めて前記フレームバッファピクセルデータを生成するシェーダコレクタと、
    を有する、コンピュータシステム。
  13. フレームバッファピクセルデータを記憶するためのフレームバッファメモリを備える、請求項12に記載のコンピュータシステム。
  14. 前記フレームバッファピクセルデータを表示するためのディスプレイを更に備える、請求項12に記載のコンピュータシステム。
  15. 前記コマンドが、少なくとも一つのシェーダパイプラインに分岐オペレーションを実行させる分岐コマンドを含む、請求項12に記載のコンピュータシステム。
  16. 前記処理ユニットが、前記ラスタピクセルデータを前記シェーダディストリビュータに送るラスタライザを更に含む、請求項12に記載のコンピュータシステム。
  17. 前記コンピュータシステムは、
    各シェーダパイプラインのメモリ記憶容量以下の容量のシェーダ登録ファイル、をさらに備え、
    前記シェーダディストリビュータにより生成されるラスタピクセルデータのセグメントの限定されたサイズは、前記シェーダ登録ファイルの容量の範囲内で記憶可能なラスタピクセルデータのデータ量に基づくサイズである、請求項16に記載のコンピュータシステム。
  18. 前記シェーダパイプラインの少なくとも一つが、ラスタピクセルデータを選択的に処理してテクスチャ情報を加える、請求項12に記載のコンピュータシステム。
  19. 少なくとも一つのシェーダパイプラインが、算術オペレーションを前記ラスタピクセルデータに対して選択的に実行する、請求項12に記載のコンピュータシステム。
  20. 前記シェーダディストリビュータが、前記シェーダパイプラインの少なくとも一つを、受信される設定情報に基づいて、機能無効にする、請求項12に記載のコンピュータシステム。
  21. 前記シェーダディストリビュータは、前記シェーダパイプラインの前記少なくとも一つを、ラスタピクセルデータを前記少なくとも一つのシェーダパイプラインに分配しないことによって、機能無効にする、請求項20に記載のコンピュータシステム。
  22. 異なる前記シェーダパイプラインは、異なるフラグメントプログラムによりプログラムされている、請求項12に記載のコンピュータシステム。
  23. 前記フラグメントプログラム内の前記プログラム命令の数は8である、請求項12に記載のコンピュータシステム。
  24. 前記シェーダは、
    前記シェーダディストリビュータと前記シェーダコレクタの間に配置されたファーストインファーストアウトバッファメモリであって、前記複数のシェーダパイプラインにより処理されないピクセルカバレージデータ及びX−Y座標を記憶する、当該ファーストインファーストアウトバッファメモリ、
    をさらに備える、請求項12に記載のコンピュータシステム。
  25. 未加工のグラフィックデータを受け取るフロントエンドと、
    前記未加工のグラフィックデータを幾何図形プリミティブへと編成するジオメトリエンジンと、
    前記幾何図形プリミティブをラスタピクセルデータに変換するラスタライザと、
    前記ラスタピクセルデータを処理するシェーダと、
    を備え、
    前記シェーダは、
    それぞれがラスタピクセルデータのセグメントを処理して陰影付ピクセルデータを生成する複数のシェーダパイプラインと、
    グラフィックプログラムの一部分を選択して、前記ラスタピクセルデータのセグメントの処理を制御する有限な数のプログラム命令を含んだフラグメントプログラムを生成する複数のシェーダスケジューラであって、前記複数のシェーダパイプラインに対応付けられており、前記有限な数は前記複数のシェーダパイプラインのリソースに基づき定められている、当該複数のシェーダスケジューラと、
    ピクセルデータのラスターストリームを、限定されたサイズのラスタピクセルデータのセグメントに分割し、得られた前記ラスタピクセルデータのセグメントを前記複数のシェーダパイプラインに選択的に分配するシェーダディストリビュータであって、ラスタピクセルデータのセグメントの処理を行わないシェーダパイプラインの集合を構成する複数のシェーダパイプライン全てに対し三角形情報を通知し、当該三角形情報を有効化し、当該三角形情報を利用してラスタピクセルデータのセグメントの処理を開始する、当該シェーダディストリビュータと、
    前記陰影付ピクセルデータを前記複数のシェーダパイプラインから集めるシェーダコレクタと、
    を含む、グラフィック処理集積回路。
  26. 前記グラフィック処理集積回路は、
    各シェーダパイプラインのメモリ記憶容量以下の容量のシェーダ登録ファイル、をさらに備え、
    前記シェーダディストリビュータにより生成されるラスタピクセルデータのセグメントの限定されたサイズは、前記シェーダ登録ファイルの容量の範囲内で記憶可能なラスタピクセルデータのデータ量に基づくサイズである、請求項25に記載のグラフィック処理集積回路。
  27. 前記シェーダディストリビュータが、少なくとも一つのシェーダパイプラインを機能有効にする、請求項25に記載のグラフィック処理集積回路。
  28. 前記シェーダディストリビュータが、前記少なくとも一つのシェーダパイプラインを、ラスタピクセルデータを該少なくとも一つのシェーダパイプラインに分配しないことによって、機能無効にする、請求項27に記載のグラフィック処理集積回路。
  29. 少なくとも一つのシェーダパイプラインが、前記ラスタピクセルデータを選択的に処理して、テクスチャ情報を加える、請求項25に記載のグラフィック処理集積回路。
  30. 前記シェーダパイプラインの少なくとも一つが、算術オペレーションを前記ラスタピクセルデータに対して実行する、請求項25に記載のグラフィック処理集積回路。
  31. 前記シェーダパイプラインの少なくとも一つが、分岐オペレーションを実行する、請求項25に記載のグラフィック処理集積回路。
  32. 前記シェーダパイプラインの少なくとも一つは、
    実行中のフラグメントプログラムの終端に分岐コマンドを付け加え、前記少なくとも一つのシェーダパイプラインを介して空のパスが実行される間に、前記分岐コマンドにより指定された新たなフラグメントプログラムを読み込むことによって、前記分岐オペレーションを実行する、請求項31に記載のグラフィック処理集積回路。
  33. 前記グラフィック処理集積回路は、
    前記シェーダディストリビュータと前記シェーダコレクタの間に配置されたファーストインファーストアウトバッファメモリであって、前記複数のシェーダパイプラインにより処理されないピクセルカバレージデータ及びX−Y座標を記憶する、当該ファーストインファーストアウトバッファメモリ、
    をさらに備える、請求項25に記載のグラフィック処理集積回路。
  34. ラスタピクセルデータをラスタライザから受け取るステップであって、前記ラスタピクセルデータが、幾何図形プリミティブに関する情報と、前記幾何図形プリミティブ内のピクセルに関する情報とを含む、該ステップと、
    前記受信したラスタピクセルデータを、所定の長さのセグメントに分割するステップと、
    エンドオブセグメントタグを前記セグメントのそれぞれに加えるステップと、
    前記セグメントを複数のシェーダパイプラインに選択的に分配するステップと、
    グラフィックプログラムの一部分を選択して、前記ラスタピクセルデータのセグメントの処理を制御する有限な数のプログラム命令を含んだフラグメントプログラムを生成するステップであって、前記有限な数は前記複数のシェーダパイプラインのリソースに基づき定められている、当該選択するステップと、
    を含み、
    各シェーダパイプラインが、前記セグメントの一つを処理して陰影付ピクセルデータを生成し、
    第1のシェーダパイプラインが、前記セグメントのうちの第1のセグメントを受け取り、第2のシェーダパイプラインが前記セグメントのうちの第2のセグメントを受け取り、利用可能な場合に、付加的なシェーダパイプラインが、N個のシェーダパイプラインが前記セグメントのうちのN個を受け取るまで、前記セグメントのうちの一つを連続して受け取り、
    セグメントを受け取るべき全てのシェーダパイプラインがセグメントを受け取った後に、前記セグメントのうちの次のセグメントが前記第1のシェーダパイプラインに与えられる、
    シェーダを動作させる方法。
  35. シェーダパイプラインのいずれかが、前記セグメントのうちの一つを受け取ることがない、請求項34に記載のシェーダを動作させる方法。
  36. シェーダパイプラインが機能無効にされる、請求項35に記載のシェーダを動作させる方法。
  37. 前記シェーダパイプラインからの処理結果を集めて編成することによって、陰影付ピクセルデータを形成するステップを更に含む、請求項34に記載のシェーダを動作させる方法。
  38. シェーダを動作させる方法であって、
    グラフィックプログラムの一部分を選択して、第1のプログラム命令セットを含む第1のフラグメントプログラムおよび第2のプログラム命令セットを含む第2のフラグメントプログラムを生成するステップであって、前記第1のフラグメントプログラムおよび前記第2のフラグメントプログラムの各々は、ラスタピクセルデータの処理を制御する有限な数のプログラム命令を含んでおり、前記有限な数は第1および第2のシェーダパイプラインのリソースに基づき定められている、当該ステップと、
    前記第1のシェーダパイプラインを、オペレーションを実行するための前記第1のプログラム命令セットでプログラムするステップと、
    ラスタピクセルデータを受け取るステップと、
    前記ラスタピクセルデータの第1の部分を前記第1のシェーダパイプラインに選択的に分配するステップと、
    前記第2のシェーダパイプラインを、オペレーションを実行するための前記第2のプログラム命令セットでプログラムするステップと、
    前記ラスタピクセルデータの第2の部分を前記第2のシェーダパイプラインに選択的に分配するステップと、
    少なくとも前記第1のシェーダパイプラインの出力を集めて編成し、陰影付ピクセルデータを形成するステップと、
    を含む、シェーダを動作させる方法。
  39. 前記第1及び第2のプログラム命令セットが異なる、請求項38に記載のシェーダを動作させる方法。
  40. 前記ラスタピクセルデータの第1および第2の部分を選択的に分配する前記ステップが、前記ラスタピクセルデータを、デッドロックを防止するように分割するステップを含む、請求項38に記載のシェーダを動作させる方法。
  41. 未加工のグラフィックデータを受け取るフロントエンドと、
    前記未加工のグラフィックデータを幾何図形プリミティブへと編成するジオメトリエンジンと、
    前記幾何図形プリミティブをラスタピクセルデータに変換するラスタライザと、
    前記ラスタピクセルデータを処理するシェーダと、
    前記処理されたピクセルデータをフレームバッファデータへと処理するラスタオペレーションプロセッサと、
    を備えるグラフィック処理ユニットであり、
    前記シェーダは、
    それぞれがラスタピクセルデータのセグメントを処理して陰影付ピクセルデータを生成する複数のシェーダパイプラインと、
    グラフィックプログラムの一部分を選択して、前記ラスタピクセルデータのセグメントの処理を制御する有限な数のプログラム命令を含んだフラグメントプログラムを生成する複数のシェーダスケジューラであって、前記複数のシェーダパイプラインに対応付けられており、前記有限な数は前記複数のシェーダパイプラインのリソースに基づき定められている、当該複数のシェーダスケジューラと、
    前記ラスタピクセルデータのセグメントを前記複数のシェーダパイプラインに分配するシェーダディストリビュータであって、ラスタピクセルデータのセグメントの処理を行わないシェーダパイプラインの集合を構成する複数のシェーダパイプライン全てに対し三角形情報を通知し、当該三角形情報を有効化し、当該三角形情報を利用してラスタピクセルデータのセグメントの処理を開始する、当該シェーダディストリビュータと、
    陰影付ピクセルデータを前記複数のシェーダパイプラインの出力から形成するシェーダコレクタと、
    を含む、当該グラフィック処理ユニット。
  42. 異なる前記シェーダパイプラインは、異なるフラグメントプログラムによりプログラムされている、請求項41に記載のグラフィック処理ユニット。
  43. 前記フラグメントプログラム内の前記プログラム命令の数は8である、請求項41に記載のグラフィック処理ユニット。
  44. 前記複数のシェーダパイプラインは、
    実行中のフラグメントプログラムの終端に分岐コマンドを付け加え、前記シェーダパイプラインを介して空のパスが実行される間に、前記分岐コマンドにより指定された新たなフラグメントプログラムを読み込むことによって、分岐オペレーションを実行する、請求項41に記載のグラフィック処理ユニット。
JP2007508417A 2004-04-12 2005-04-08 スケーラブルシェーダアーキテクチャ Active JP4489806B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US56161704P 2004-04-12 2004-04-12
US10/938,042 US7385607B2 (en) 2004-04-12 2004-09-10 Scalable shader architecture
PCT/US2005/012107 WO2005101322A1 (en) 2004-04-12 2005-04-08 Scalable shader architecture

Publications (2)

Publication Number Publication Date
JP2007533029A JP2007533029A (ja) 2007-11-15
JP4489806B2 true JP4489806B2 (ja) 2010-06-23

Family

ID=34965907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007508417A Active JP4489806B2 (ja) 2004-04-12 2005-04-08 スケーラブルシェーダアーキテクチャ

Country Status (6)

Country Link
US (2) US7385607B2 (ja)
EP (1) EP1738330B1 (ja)
JP (1) JP4489806B2 (ja)
CN (1) CN1957376B (ja)
TW (1) TWI363312B (ja)
WO (1) WO2005101322A1 (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7218291B2 (en) * 2004-09-13 2007-05-15 Nvidia Corporation Increased scalability in the fragment shading pipeline
US8189002B1 (en) * 2004-10-29 2012-05-29 PME IP Australia Pty, Ltd. Method and apparatus for visualizing three-dimensional and higher-dimensional image data sets
US7542042B1 (en) * 2004-11-10 2009-06-02 Nvidia Corporation Subpicture overlay using fragment shader
US7623132B1 (en) * 2004-12-20 2009-11-24 Nvidia Corporation Programmable shader having register forwarding for reduced register-file bandwidth consumption
US7830390B2 (en) * 2005-07-19 2010-11-09 Graphics Properties Holdings, Inc. Color computation of pixels using a plurality of vertex or fragment shader programs
CN1928918B (zh) * 2005-10-14 2012-10-10 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
US8111260B2 (en) 2006-06-28 2012-02-07 Microsoft Corporation Fast reconfiguration of graphics pipeline state
US7692660B2 (en) * 2006-06-28 2010-04-06 Microsoft Corporation Guided performance optimization for graphics pipeline state management
US8954947B2 (en) * 2006-06-29 2015-02-10 Microsoft Corporation Fast variable validation for state management of a graphics pipeline
US8232991B1 (en) 2006-11-03 2012-07-31 Nvidia Corporation Z-test result reconciliation with multiple partitions
US8547395B1 (en) 2006-12-20 2013-10-01 Nvidia Corporation Writing coverage information to a framebuffer in a computer graphics system
KR101349171B1 (ko) * 2007-01-17 2014-01-09 삼성전자주식회사 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
FR2917199B1 (fr) * 2007-06-05 2011-08-19 Thales Sa Generateur de code source pour une carte graphique
US8004522B1 (en) * 2007-08-07 2011-08-23 Nvidia Corporation Using coverage information in computer graphics
US8325203B1 (en) 2007-08-15 2012-12-04 Nvidia Corporation Optimal caching for virtual coverage antialiasing
US8392529B2 (en) 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
US8325184B2 (en) * 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
WO2009067675A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Client-server visualization system with hybrid data processing
US9904969B1 (en) 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US10311541B2 (en) 2007-11-23 2019-06-04 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8548215B2 (en) 2007-11-23 2013-10-01 Pme Ip Australia Pty Ltd Automatic image segmentation of a volume by comparing and correlating slice histograms with an anatomic atlas of average histograms
US8319781B2 (en) 2007-11-23 2012-11-27 Pme Ip Australia Pty Ltd Multi-user multi-GPU render server apparatus and methods
WO2009113811A2 (en) * 2008-03-11 2009-09-17 Core Logic Inc. Processing 3d graphics supporting fixed pipeline
JP5491498B2 (ja) * 2008-05-30 2014-05-14 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 拡大縮小可能で且つ統合化されたコンピュータシステム
US20090309896A1 (en) * 2008-05-30 2009-12-17 Advanced Micro Devices, Inc. Multi Instance Unified Shader Engine Filtering System With Level One and Level Two Cache
WO2009145916A1 (en) 2008-05-30 2009-12-03 Advanced Micro Devices, Inc. Redundancy methods and apparatus for shader column repair
US8502832B2 (en) * 2008-05-30 2013-08-06 Advanced Micro Devices, Inc. Floating point texture filtering using unsigned linear interpolators and block normalizations
US8456478B2 (en) * 2008-10-30 2013-06-04 Microchip Technology Incorporated Microcontroller with integrated graphical processing unit
US9013498B1 (en) * 2008-12-19 2015-04-21 Nvidia Corporation Determining a working set of texture maps
US8056080B2 (en) * 2009-08-31 2011-11-08 International Business Machines Corporation Multi-core/thread work-group computation scheduler
US20110134120A1 (en) * 2009-12-07 2011-06-09 Smart Technologies Ulc Method and computing device for capturing screen images and for identifying screen image changes using a gpu
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
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9595074B2 (en) 2011-09-16 2017-03-14 Imagination Technologies Limited Multistage collector for outputs in multiprocessor systems
US9338036B2 (en) 2012-01-30 2016-05-10 Nvidia Corporation Data-driven charge-pump transmitter for differential signaling
US20130222411A1 (en) * 2012-02-28 2013-08-29 Brijesh Tripathi Extended range color space
US10535185B2 (en) 2012-04-04 2020-01-14 Qualcomm Incorporated Patched shading in graphics processing
US9105125B2 (en) * 2012-12-05 2015-08-11 Advanced Micro Devices, Inc. Load balancing for optimal tessellation performance
US9509802B1 (en) 2013-03-15 2016-11-29 PME IP Pty Ltd Method and system FPOR transferring data to improve responsiveness when sending large data sets
US11244495B2 (en) 2013-03-15 2022-02-08 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US8976190B1 (en) 2013-03-15 2015-03-10 Pme Ip Australia Pty Ltd Method and system for rule based display of sets of images
US10540803B2 (en) 2013-03-15 2020-01-21 PME IP Pty Ltd Method and system for rule-based display of sets of images
US10070839B2 (en) 2013-03-15 2018-09-11 PME IP Pty Ltd Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images
US9076551B2 (en) * 2013-03-15 2015-07-07 Nvidia Corporation Multi-phase ground-referenced single-ended signaling
US11183292B2 (en) 2013-03-15 2021-11-23 PME IP Pty Ltd Method and system for rule-based anonymized display and data export
CN103400338A (zh) * 2013-07-25 2013-11-20 天津大学 嵌入式gpu中面积有效、功能复用的裁剪方法及模块
CN105446704B (zh) * 2014-06-10 2018-10-19 北京畅游天下网络技术有限公司 一种着色器的解析方法和装置
US9536342B2 (en) * 2014-08-15 2017-01-03 Intel Corporation Automatic partitioning techniques for multi-phase pixel shading
US11599672B2 (en) 2015-07-31 2023-03-07 PME IP Pty Ltd Method and apparatus for anonymized display and data export
US9984478B2 (en) 2015-07-28 2018-05-29 PME IP Pty Ltd Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images
CN105118089B (zh) * 2015-08-19 2018-03-20 上海兆芯集成电路有限公司 三维图形管道中的可程序化像素设定方法及使用其的装置
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
CN106648551A (zh) * 2016-12-12 2017-05-10 中国航空工业集团公司西安航空计算技术研究所 一种混合图形处理器指令处理系统
CN106844044B (zh) * 2016-12-30 2020-07-24 东方晶源微电子科技(北京)有限公司 一种数据处理方法和装置
US10290141B2 (en) 2017-04-17 2019-05-14 Intel Corporation Cloud based distributed single game calculation of shared computational work for multiple cloud gaming client devices
US10909679B2 (en) 2017-09-24 2021-02-02 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
DE102019101720A1 (de) * 2018-01-26 2019-08-01 Nvidia Corporation Techniken zur Darstellung und Verarbeitung von Geometrie innerhalb einer erweiterten Grafikverarbeitungspipeline
CN111831273B (zh) * 2019-04-30 2022-10-28 厦门雅基软件有限公司 基于着色器的数据处理方法、装置及电子设备
US11216993B2 (en) 2019-11-27 2022-01-04 Arm Limited Graphics processing systems
US11170555B2 (en) 2019-11-27 2021-11-09 Arm Limited Graphics processing systems
US11210821B2 (en) * 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US11210847B2 (en) 2019-11-27 2021-12-28 Arm Limited Graphics processing systems
US20220414967A1 (en) * 2021-06-24 2022-12-29 Intel Corporation Out-of-order pixel shading and rasterization
US11935175B2 (en) * 2022-04-07 2024-03-19 Huawei Technologies Co., Ltd. Apparatus, method, and computer-readable medium for image processing using variable-precision shading

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901064A (en) * 1987-11-04 1990-02-13 Schlumberger Technologies, Inc. Normal vector shading for 3-D graphics display system
CN1093970C (zh) * 1993-06-03 2002-11-06 郭玉霞 图形分层产生的方法及装置
JP3097955B2 (ja) * 1994-12-01 2000-10-10 富士通株式会社 情報処理装置及び情報処理方法
US5764228A (en) * 1995-03-24 1998-06-09 3Dlabs Inc., Ltd. Graphics pre-processing and rendering system
JP3038139B2 (ja) * 1995-08-30 2000-05-08 株式会社クボタ グラフィックプロセッサ
JP3090605B2 (ja) 1995-12-26 2000-09-25 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチプロセッサ装置
US5821950A (en) * 1996-04-18 1998-10-13 Hewlett-Packard Company Computer graphics system utilizing parallel processing for enhanced performance
KR100261077B1 (ko) * 1996-04-25 2000-07-01 윤종용 볼륨 렌더링 장치 및 이에 적합한 방법
US6351681B1 (en) 1997-05-09 2002-02-26 Ati International Srl Method and apparatus for a multi-chip module that is testable and reconfigurable based on testing results
JP2001014478A (ja) * 1999-06-28 2001-01-19 Nec Eng Ltd グラフィックス並列処理装置
AU2001239559A1 (en) 2000-03-23 2001-10-03 Sony Computer Entertainment Inc. Image processing apparatus and method
US6791559B2 (en) * 2001-02-28 2004-09-14 3Dlabs Inc., Ltd Parameter circular buffers
US6925520B2 (en) * 2001-05-31 2005-08-02 Sun Microsystems, Inc. Self-optimizing crossbar switch
US7187383B2 (en) * 2002-03-01 2007-03-06 3D Labs Inc., Ltd Yield enhancement of complex chips
US7015909B1 (en) * 2002-03-19 2006-03-21 Aechelon Technology, Inc. Efficient use of user-defined shaders to implement graphics operations
US7176914B2 (en) * 2002-05-16 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for directing the flow of data and instructions into at least one functional unit
JP4158413B2 (ja) * 2002-05-22 2008-10-01 ソニー株式会社 画像処理装置
US6952214B2 (en) * 2002-07-12 2005-10-04 Sun Microsystems, Inc. Method for context switching a graphics accelerator comprising multiple rendering pipelines
US6825843B2 (en) * 2002-07-18 2004-11-30 Nvidia Corporation Method and apparatus for loop and branch instructions in a programmable graphics pipeline
US7109987B2 (en) * 2004-03-02 2006-09-19 Ati Technologies Inc. Method and apparatus for dual pass adaptive tessellation

Also Published As

Publication number Publication date
US20050225554A1 (en) 2005-10-13
CN1957376B (zh) 2010-08-18
EP1738330B1 (en) 2012-05-30
WO2005101322A1 (en) 2005-10-27
TWI363312B (en) 2012-05-01
JP2007533029A (ja) 2007-11-15
US7385607B2 (en) 2008-06-10
EP1738330A1 (en) 2007-01-03
CN1957376A (zh) 2007-05-02
TW200539059A (en) 2005-12-01
US7852340B2 (en) 2010-12-14
US20080094405A1 (en) 2008-04-24

Similar Documents

Publication Publication Date Title
JP4489806B2 (ja) スケーラブルシェーダアーキテクチャ
US10109099B2 (en) Method and apparatus for efficient use of graphics processing resources in a virtualized execution enviornment
US8933943B2 (en) Technique for performing load balancing for parallel rendering
US7830392B1 (en) Connecting multiple pixel shaders to a frame buffer without a crossbar
EP2033085B1 (en) Fast reconfiguration of graphics pipeline state
CN109923519B (zh) 用于加速多核计算架构中的图形工作负荷的机制
US7663621B1 (en) Cylindrical wrapping using shader hardware
US20170206623A9 (en) Managing deferred contexts in a cache tiling architecture
US8587596B2 (en) Multithreaded software rendering pipeline with dynamic performance-based reallocation of raster threads
US20150178879A1 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
JP4810605B2 (ja) マルチプロセッサ環境のためのテクスチャユニット
CN110352403B (zh) 图形处理器寄存器重命名机制
US9659399B2 (en) System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline
TW201432609A (zh) 已分配的拼貼快取
US20110043518A1 (en) Techniques to store and retrieve image data
CN110807827B (zh) 系统生成稳定的重心坐标和直接平面方程访问
US20160093069A1 (en) Method and apparatus for pixel hashing
US10068366B2 (en) Stereo multi-projection implemented using a graphics processing pipeline
TW201430764A (zh) 使用每像素著色器執行緒的高效超取樣
US10818054B2 (en) Apparatus and method for asynchronous texel shading
US20140267276A1 (en) System, method, and computer program product for generating primitive specific attributes
CN110675480A (zh) 用于获取纹理操作的采样位置的方法和装置
TW201719571A (zh) 經由渲染命令串流器之僅關於位置的著色器背景提交
US8363059B2 (en) Rendering processing apparatus, parallel processing apparatus, and exclusive control method
US8368704B2 (en) Graphic processor and information processing device

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100217

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: 20100316

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: 20100331

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4489806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140409

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250