JP2007533026A - グラフィックオペレーションのための高レベルプログラムインターフェース - Google Patents
グラフィックオペレーションのための高レベルプログラムインターフェース Download PDFInfo
- Publication number
- JP2007533026A JP2007533026A JP2007508356A JP2007508356A JP2007533026A JP 2007533026 A JP2007533026 A JP 2007533026A JP 2007508356 A JP2007508356 A JP 2007508356A JP 2007508356 A JP2007508356 A JP 2007508356A JP 2007533026 A JP2007533026 A JP 2007533026A
- Authority
- JP
- Japan
- Prior art keywords
- image
- graph
- node
- filter
- program
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Digital Computer Display Output (AREA)
- Processing Or Creating Images (AREA)
Abstract
【選択図】図1
Description
1.技術
本明細書で説明される本発明の実施形態は、特に種々のタイプのプロセッサが1つのシステム内で利用される、全てのタイプのマルチプロセッサコンピューティングシステムに関連し、用途を有する。本明細書での説明のほとんどは、CPU資源やGPU資源を有する一般的なコンピューティング構成に焦点を絞っている。この説明は、例証のためのものであり、GPUなし、複数のCPUと1つのGPU、複数のGPUと1つのCPU、或いは複数のGPUと複数のCPUのいずれかを有する他のシステムに対して本発明の適用を制限するものではない。この注意に関して、発明者らは典型的なハードウェアとソフトウェア動作環境に関する情報を提供するものとする。
数学や他の計算科学において、問題を、機械実行の計算やこのような機械のプログラミングに結び付くパーズ(構文解析)方式で表することができる。パーズ表現の実施例は、図4に示されるような一般化ツリー構造である。図4を参照すると、ツリー構造41は、最も近い従属ノードの結果を表すリンク(42、43、44、45、46、47、48、49、410、411、412、413、414)と、2つのタイプのノードとから構成される。事前に存在している計算入力(例えば、オペランド)、419、424、425、426、427、428、429を表すリーフ(葉)ノードが存在する。或いは、計算関数(例えば演算子)415、416、417、418、420、421、422、423を表す機能ノードが存在する。全体的な実施例として、図4を参照すると、リンク46は、機能ノード417への入力として役割を果たし、リーフノード424の結果(単にリーフであるリーフノードの結果)を表す。
本発明の多くの実施形態は、オブジェクト指向のプログラミングを含み、4つのタイプのオブジェクトをプログラマに利用可能にする。これらのオブジェクトタイプは、イメージ、フィルタ、コンテキスト、ベクトルである。各々については、簡潔に説明するが、その普遍性を制限しないようにする。
Core Imagingは、多くのルーチンを含み、特にグラフィック機能のために構成された高レベルプログラミング言語又はAPIとして機能するが、数値計算単独(例えば畳み込みオペレーション)などの他の機能にも適用可能なソフトウェアスーツである。いずれか1つの実施形態又は実施形態のいずれかのグループに言及するためにモニカCore Imagingを使用するが、「Core Imaging」に関するどのような特定のコメントにも本発明を限定するものではない点を想起されたい。同様に、Core Imagingとして或いはCore Imaging内でルーチン又はプロセスに言及するが、それにより、本発明が単一のユニット又はレイヤとしてこのようなソフトウェアが実装されることを意味するものではない。
ここでCore Imagingの機能を更に詳しく見てみると、1つの実施形態においてAPIは、プログラマ及び最終的にはアプリケーションプログラムのユーザーのための6つの高レベル機能、すなわち、コンテキストの作成、イメージの生成、フィルタの生成、フィルタに関連したパラメータを設定する機能(例えば、フィルタ関数の引数)、アセンブリされたフィルタ又はフィルタのグループの出力を要求する機能、イメージをコンテキストにレンダリングする機能を提供する。
コンテキストを作成する機能はメモリ内のオブジェクトの定義を可能にするツールから得られるので、一般に出力はコンテキストと呼ばれる。オペレーションの結果に対するデスティネーションが存在することができるように、このようなオブジェクトの定義が必要とされる。例えば、コンテキストは、メインメモリ内のビットマップ又はOpenGLビューに関連付けることができる。これらの関連付けられたイメージコンテナは、レンダリングのデスティネーションとして使用される。本発明は、システムのグラフィック機能に関連するビデオメモリなどのメモリを第一に企図しており、ここで説明される概念は、システム内のいずれかで見出される、或いはシステムにアクセス可能なあらゆるメモリ又は記憶装置に等しく適用される。従って限定ではないが、メモリは、ダイナミックメモリ又はスタティックメモリのような全てのタイプの半導体メモリを含むことができ、これは、特にグラフィックサブシステムに関連付けられるか、グラフィックサブシステムと共用されるか、或いはメインシステム又はメインシステムによってアクセス可能な別のサブシステムに名目上専用であるか否かに関係しない。更に、速度は確かに問題であるが、本明細書の概念は磁気又は光メモリを排除するものではない。
一般的に入力をイメージと呼ぶ、なぜなら、イメージ内の座標又は画素は、関連性のある値が得られるようにサンプリングすることができるからである。本発明のAPIの実施形態を使用すると、イメージを、ゼロから或いは別のイメージから生成することができる。画素値を生成するメカニズムが提供されることによりイメージがゼロから生成される。例えばイメージを色又は色の数値的な組合せ(チェッカーボード又は縞模様のページのような)として単純に定義することにより、イメージをゼロから生成することができる。より一般的には、イメージは、1つ又はそれ以上のフィルタを既存のイメージに加えることによって別のイメージから生成される。
一般的にフィルタを、ゼロ又はそれ以上のイメージ(最終的には画素)上で実行できるいずれかの機能と呼ぶことにする。更に具体的に言うと、フィルタは、入力としてイメージと他のパラメータ(特定のフィルタに関連付けられ、これに依存する)を受け入れて新しいイメージを生成する機能とすることができる。APIは現在のところ、この開示内容のいずれかでリストされ説明される数十のフィルタを提供する。しかしながら、本発明の実施形態は、発明者らが継続してフィルタを開発し、その上フィルタを開発するために他の機能を提供したような拡張的な性質を求めている。本発明は、事前定義タイプのフィルタの追加を可能にする拡張性を企図しており、この説明は、ゼロ又はそれ以上の事前定義フィルタの組合せと処理によって作成された新しいフィルタに注目する。
上記で参照されたように、各高レベルフィルタは、上記のように作成されるか、或いは本明細書のリストで事前に定義されるかに関わらず、必要とされ且つフィルタ機能によって定義される入力値のセットを有することができる。海岸の実施例においては、一般的な入力を表すためにベクトル"パラメータ(X、Y、Z、W)としてこれらの入力パラメータを示した(図5を参照)。別の一般的でない実施例は、ブラーフィルタであり、入力パラメータとしてほぼ確実にブラーの半径が必要となる。更に他の実施例は、入力カラー、入力の強さ、入力飽和度などである。(コンテキストにおけるより多くの実施例のフィルタのリストを参照。)Core ImagingのためのAPIは、これらの入力パラメータの設定機能をプログラマ及びプログラムに必然的に提供し、イメージの予測可能な作成又は編集を可能にする。
1つの実施形態において、特定のフィルタに対するグラフが存在すると、プログラム又はプログラマは、そのフィルタを出力するためにCore Imagingを呼び出すことができる。これに応じて、Core Imagingは、ジャストインタイムコンパイル、次いでGPU上での通常の実行の準備ができたオブジェクトを作成する。高レベルフィルタのこの出力は、単に未計算の又は代表的なイメージである。別の実施形態において、Core Imagingは、この時点でグラフの最適化或いはイメージの計算のいずれかを行うことができる。最適化には処理サイクルが必要とされ、計算は処理サイクル及びメモリを用いることになるので、多くの場合、前者の最適化の実施形態が好ましい。これらの資源は通常、イメージをコンテキストにレンダリングする必要があることを確認するまで保存するのが適切である。
多くのグラフィック処理エンジンと同様に、Core Imagingは、1つだけのカラー空間、例えば「ライトリニア」で動作するように構築される可能性が高い。従ってグラフを処理するために、幾つかの実施形態では、カラー空間をライトリニアに変換する必要があり、結果を返す前にカラー空間をその元のカラーに変換して戻さなければならない。幾つかの実施形態において、この変換は、高レベルグラフの入力と出力に適切なカラー変換高レベルフィルタを配置することによって、高レベルグラフ上で行われる。別の実施形態においては、これは、低レベルグラフ上で極めて類似の方式で行う。低レベルグラフの場合、カラー変換のための「カーネル」又はフラグメントプログラムノードは、グラフの入力と出力に配置される。ノードがグラフ(高又は低レベル)に配置されるほとんどの実施形態では、この状況は、そのカラー変換ノードの結果が今後極めて有用となる可能性が高いことを決定付ける。従って、カラー変換ノードの結果は、ほとんどの実施形態でキャッシュしなければならない。カラー変換のためのグラフノードを作成する代替の方法は、このような変換をCore Imagingルーチンの1つにプログラムすることである。
最終的に、ほとんどのイメージはディスプレイのような視覚的用途のために生成される。従って、イメージ生成のこの実施形態における極めて一般的なステップは、イメージをある定義されたコンテキストにレンダリングする段階を呼び出すことである。ほとんどの実施形態において、Core Imagingは、この時点でグラフの最適化を実行することになる。要約すると、最適化は、以下のいずれか又は全てを含むことができ、すなわち、(1)低レベルグラフを作成する段階、ここで概念化の目的において、グラフのノードはフラグメントプログラムを表し、低レベルグラフはイメージとフラグメントプログラムとの間の関係を定義する(これは、イメージと高レベルフィルタさらにその内部関係を含む高レベルグラフと対照的である)、(2)定義ドメインに対する最適化段階、(3)関心領域に対する最適化段階、(4)フラグメントプログラムを組み合わせて、グラフのサイズ又は最終的にはその実行が必要となるメモリ空間を低減させる段階、(5)最適化された低レベルグラフの実行要件を常駐ハードウェア(GPU、CPU、メモリなど)と比較する段階である。最適化されると、低レベルグラフはコンパイルされ、1つ又はそれ以上の実行可能なオブジェクトが作成される。説明されたように、一般的にはGPUのための1つの実行可能なオブジェクトが存在するが、最適化又はコンパイル中に、複数のプロセッサを用いることを決定することができる。コンパイル後、結果として得られたオブジェクトが実行され、イメージが指定コンテキストにレンダリングされる。
最適化は、タスクが実際に実行されたときに最も効率良く或いは容易に実行されるように、プログラム又はタスクを解析し変更するプロセスである。本明細書で説明されるほとんどの実施形態のコンテキストでは、1つのマイクロプロセッサを使用して別のマイクロプロセッサのためのプログラムコードを最適化するよう試みている。更に特定の実施形態において、システムCPU資源を使用して、GPU上で実行されるプログラムを最適化しようと試みている。また更に特定の実施形態において、グラフとして表されたグラフィックタスク(通常はイメージへのエフェクトの適用)を解析したCPUはグラフを最適化し、グラフがジャストインタイムコンパイルされたときにGPU上で最も効率良く実行するようにする。
最新のコンピューティングに内在する理由から、アプリケーションプログラムは、同一又は類似のイメージの計算を何度も要求する場合が多い。アプリケーションプログラムはまた、以前に計算されたイメージのサブセット又はスーパーセットであるイメージの計算を要求する場合が多い。この理由のために、Core Imagingは、不必要な作業をさせないためにキャッシング技術を利用する。ほとんどの実施形態において、グラフノードはキャッシュ管理のためのベースを形成する。詳細には、図5のツリーによって表されるような高レベルグラフを説明したことを想起されたい。同様に、図4や図6に示されるツリーのように概念化することができる低レベルグラフについても言及している。幾つかの実施形態において、グラフ内の各ノードは不変であり、その下のグラフの部分によって定義(すなわちノードを解くのに必要なオブジェクト及び計算)されると仮定する。このように仮定すると、発明者らはノードの結果(通常はイメージ)をキャッシュし、次いで同じノード(その下のグラフの和として定義される)が再計算される待ち行列にあるかどうかを判定することができる。ノードを再計算するのではなく、メモリから結果を単にフェッチしてもよい。種々の実施形態によれば、これは全ノードに対して行うことができる。メモリを効率的に使用するために、様々なタイミング(例えば、メモリ使用量が多い場合、又はキャッシュされた入力が古い場合、又は関連するアプリケーションプログラムがクローズした場合、又はシステムがシャットダウンした場合)でキャッシュの削除を選ぶことができる。更に、メモリを効率的に使用するために、別の記憶装置を使用することができる。ほとんどの実施形態においては、ビデオサブシステム又はGPUに割り当てられたスタティックメモリ又はダイナミックメモリが主として使用されている。しかしながら、システムメモリ、ハードドライブ、或いはシステム又は場合によってはネットワークアクセス可能な記憶装置内の他の磁気メモリなど、どのようなアクセス可能な記憶装置内にこれらのキャッシュを配置するように選択してもよい。
本発明の幾つかの実施形態で利用される別の効率化技術は、不要なノードを削除することによってグラフを最適化することである。成功すると、これは、一般的に一時イメージ全体及びこれに応じたバッファの必要性が排除されるので、その節約において重大な意味を持つ。更に、ノードの統合又は削除は、実行中の処理サイクルを節約することになる。
図4及び図9を参照し、ノード415、420が結合できるか否かをCore Imagingが解析すると仮定する。ステップ9100で始まると、ほとんどの実施形態において、Core Imagingは、ノード415の出力がノード420の入力に事実上十分に近い場合にこれらのノードを結合しようとする。多くの実施形態において、ノード415の出力は、出力バッファが入力テクスチャの常駐する場所に存在するはずである点において、ノード420の入力と同じでなくてはならない。しかしながら、別の実施形態において、Core Imagingは、このような出力と入力から正確な結果が得られ、或いは更に別の実施形態では正確に近い結果が得られるほど十分に類似しているかどうかを評価することができる。
一般的な意味では、イメージは、これらが存在する座標系以外の何れによっても境界付けられない。ほとんどの座標系では、この「境界」は有用な制限を加えない。従って、イメージを考察する場合、発明者らはその定義ドメインを考慮することができる。イメージの定義ドメインは、イメージが定義される全ての場所の表現である(すなわち名前「定義ドメイン」)。定義ドメインに関して考察する実用的な方法は、明示的に定義され且つ透明でないイメージの全ての場所の表現としてのものである。定義ドメインの1つの実施例は、全ての不透明な画素が存在する幾何学形状である。
ノードに対するDODを有する場合、次に、関連するノードの関心領域(ROI)を決定する。要約すると、関心領域は、所与の出力DODを計算するのに必要な入力イメージの部分である。従って、各ノードはその出力上にDODを有し、各入力に対するROIを有する(グラフをビューする際に、リンク毎にROIとしてこれを概念化することができる)。ROIの実施例として、「大きな矩形」である入力イメージと「小さな矩形」である出力DODを備えたブラーであるノード関数を仮定する。このブラー用のROI関数は、入力イメージ「大きな矩形」のどの部分が出力DODのブラー結果の部分を計算するのに関係するかを定義する形状を返すことになる。このROI領域を理解することの重要性は、発明者らは単に入力イメージの関連部分を記憶する必要があるに過ぎず、中間段階の結果(及び同様に最終結果の幾つか)を記憶するためのメモリが節約され、最終的に無関係とすることができる画素にエフェクトを加える処理時間が節約されることである。例えば、リンク46で発生するはずのバッファは、ノード24の出力DODとノード17のROIの交差である関連の結果を記憶することのみ必要とし、このような交差は、最適化された結果の領域である。
上記で説明されたように、アプリケーションプログラムは、Core Imaging APIを使用して高レベルグラフを構成する。これらのグラフの1つを使用するか、或いは他の手段により、アプリケーションプログラムのプログラマは、グラフィックタスクの実行をCore Imagingに依頼することができる。図11(a)を参照し、タスクは結果ROIを描画するものであると仮定する。図11(b)を参照すると、Core Imagingに対する第1タスクは、ステップ11100で低レベルグラフを作成することである。低レベルグラフ(図11(a)にツリーで示される)の作成にはより多く関わっているものがあるが、この実施例の目的においては、グローバルDOD(ルートノード116のDOD)を含む出力DODがこのステップ11100の最後のノードで計算され表現されることを認識することだけが重要である。次にステップ11101で、Core ImagingはグローバルDOD及び結果ROIの交差を求める。便宜上、これを「結果交差」と呼ぶことにする。
上述のように、プログラマは、種々の順序で最適化技術の編成の効率を求めることができる。しかしながら、本発明の幾つかの実施形態は、グラフの一部分だけにわたる定義シーケンスにおける技術の1つ又はそれ以上を実施する。特に、同じ(又は類似の)プログラムシーケンスは、グラフの一部分に対し一度に1つの部分を再帰的に加えることができる。この方法は、メモリ再使用及びシーケンシャル処理(ある程度までの)に対する機会を提供することによって、効率の向上を可能にする。簡単にするために、キャッシングの概念はこれらの実施形態の説明から大部分が省かれている。しかしながら、本明細書の開示事項が与えられると、当業者であれば、キャッシングステップを実装する必要がある場合を理解するであろう。
例証として、以下は、Core Imaging APIが簡単な露出フィルタにどのように用いることができるかを示すコードの実施例である。
高レベルフィルタ結合をコンパイルする際に、Core Imagingは、レンダリング中に実行するための複数のオブジェクトを生成する。Core Imagingのこの特徴は、複数の異機種プロセッサを備えたシステムに広く適用可能である。例えばこれは、ジャストインタイムコンパイルを行い、航行中の航空機で行われる天気予報計算を分割するのに有用である。ジャストインタイムコンパイルにより、効率アルゴリズムがどの処理資源を使用するかを判定する際に航空機(飛行中)の状態を考慮に入れることができる。この一般的なプロセスは、7つのステップに要約できるが、効率的なシステムでは、これらのステップのサブセット上で動作することができ、すなわち、(1)プロセッサ、コントローラ、メモリ空間などのどの資源が有功に利用可能であるかをチェックする;(2)資源の各々の能力を評価する;(3)各資源の動作状態をチェックする;(4)現在のタスクの要件を評価する;(5)利用可能な資源の一部又は全てに関してタスクの要件を解析する;(6)システム内のハードウェア使用量の全体的な効率を高めながら(一般的にはタスクによって使用される資源を低減させるが、恐らくは十分に利用されていない資源又は使用されていない資源を用いる)、タスクの要件を満たすようにソフトウェアを最適化しコンパイルする;(7)コンパイルされたコードを実行する;である。実施形態によっては、1から5までのステップを実行時又は実行前に行ってもよいが、ステップ6と7は、実行時又は実行時の近くで行う場合にプロセスにおいて最も有用である点は注目すべきである。
上記で説明されたように、過去数年の間、フレキシブルなグラフィック関連ハードウェアとソフトウェア技術は、本発明の多くの実施形態のような有用な技術のベースを発展させ提供してきた。特に、OpenGLとプログラム可能GPUなどの技術の出現は、本明細書で説明される技術革新の多くに対するツールを提供した。しかしながら、これらのツールは、必ずしも後方互換性があるものではなく、利用可能なインフラストラクチャ(例えばプログラム可能GPU)がないため、Core Imagingの機能の全てがあらゆるプラットフォームで実行可能な訳ではない場合がある。従って、Core Imagingのサービスに依存するプログラマ又はプログラムが存在する場合、これらのプログラマ又はプログラムは、Core Imagingのサービスの一部又は全てが利用可能でない場合に特定のプラットフォーム上で損なわれる可能性がある。
エミュレートを行う決定は、ホストシステムの特性とエミュレーションの事由に応じて種々のタイミングで行うことができる。例えば、プログラム可能GPUサポートがないシステムでは、ソフトウェアスイッチは適切なグラフィック呼出しをエミュレートするように構成を恒久的に設定することができる。或いは、Core Imagingが特定のタスクに対して呼び出された後でこの決定を行うことができる。この場合、タスクの特性は、常駐GPUの特定の機能を考慮するだけでなく、場合によってはプロセスの状態やハードウェア項目を考慮する。幾つかの特定の実施形態において、Core Imagingは、グラフィック呼出しの時点でエミュレーションに関する決定を行う。このような実施形態の幾つかにおいては、エミュレーションは、常駐GPUが存在しないか、或いは常駐GPUがプログラム可能でない場合に使用される。これらの実施形態の他のものでは、グラフ最適化が少なくとも部分的に加えられた後で決定が行われ、GPUが特定のフラグメントを処理できないか、或いはこのような特定のフラグメントはCPU上でのエミュレーションにより処理する方が賢明であるかが判定される。更に別の実施形態において、エミュレートの決定は、グラフィック要求のソース又は出力のデスティネーションに依存する。これは、グラフィック要求に対する全体のシステム応答をメモリオペレーションの速度を向上させることによって改善することができるためである。例えば、Core Imagingが結果をシステムメモリにレンダリングするよう求められる場合、エミュレーションはCPU上で行われることにより、その最終的なデスティネーションは、エミュレーションに関する1つの要因である。メインメモリへのアクセスは一般的に、GPUからよりもCPUからの方が高速である。同様に、ビデオRAM内のメモリオペレーションは一般にGPUからの方が高速になる。従って、Core ImagingがVRAMにレンダリングするよう求められる場合、これはGPUを使用する傾向への要因である。
図3(a)、3(b)を参照して、エリア3100、3101におけるサービスを一般に提供するCore Imagingを説明した。Core Imagingエミュレータの多くの実施形態において、OpenGL36又は320のレイヤに存在するサービスに言及することができる。従って、これらの実施形態のエミュレータは、OpenGLでのほぼ同じレベルでサービスを提供する。これは、エミュレータがOpenGLの下位のサービスを提供する別の実施形態との違いである。この違いは、1つには、前の実施形態がOpenGLの(又は同様の状態にあるサービス)機能のサブセットだけに関するエミュレーションを提供することによって性能を達成することによって生じる。別の実施形態において、エミュレータはOpenGL(又は類似の)実装の一部とすることができる。更に別の実施形態において、エミュレータは、OpenGL(又は類似のサービス)の下位とすることができ、より包括的な適用範囲を提供することができる。当然、これは性能を犠牲にする可能性がある。
エミュレートの決定が行われると、多くの実施形態は、CPU対応プログラムの以下の汎用プロセスを使用する。上記の説明から、GPUコードによる開始を仮定することは明らかなはずである。更に詳細には、これは通常、グラフのノードに関連付けられたフラグメントプログラムとすることができる。各フラグメントプログラムは、1つ又はそれ以上のGPU命令を有する。(これらはラインと呼ぶ場合がある。)次いでプログラムの各ラインは、CPU等価命令に翻訳される。追加命令を含むラインのような多くのラインは、単一の命令CPU均等物を有することができる。他のラインは、フラグメントコードの単一のラインが複数のCPU命令に翻訳する必要がある点で高度なエミュレーションを必要とする。翻訳のいずれかのタイプ(1対1又は1対多)は、熟練したプログラマが理解できるどのような種類の方式でも達成することができる。1つの好ましい実施形態において、命令翻訳は、大きな「if」文によって行われる。別の実施形態において、テーブルやルックアップは、GPU命令を等価の1つ又はそれ以上のCPU命令に位置合わせするために使用される。
図16を参照すると、本発明のエミュレータの実施形態のサンプルプログラムフローが示されている。プログラムフロー及び説明は、例証のためだけのものとする。実際の実施形態は、フラットなフローチャートでは容易に説明できないオブジェクト指向手法を用いることができる。
多くの実施形態がスラブを使用する。スラブの代わりとして、説明された同じ方法で全多角形をレンダリングすることができる。しかしながら、スラブは、テクスチャ計算において有意な利点を提供する。特に、出力多角形の頂点に対してテクスチャ座標が知られている。ほとんどの実施形態において、これは、上にあるレイヤ(例えばグラフオプティマイザ)がこの情報を提供することによる。しかしながら、通常ハードウェアは、その基本ユニット多角形(一般に三角形)の頂点を関連するテクスチャマップにマップすることができ、ハードウェアの基本ユニット多角形の頂点は、出力多角形の頂点と一致しなければならない。図17(a)、図17(b)を参照すると、これらの頂点は、円形のドットで示されている。図17(a)、図17(b)を再度参照すると、スラブが形成される場合、スラブは通常、オリジナルの多角形上の頂点ではない1つ又はそれ以上の頂点を含む。図17の全てにおいて、これらの「新しい」頂点は三角形で示されている。従って、1つ又はそれ以上の実施形態において、スラブが形成されると、新しい頂点のテクスチャ値(図17の三角形)を種々の技術によって計算する。幾つかの実施形態では、既知の多角形頂点から座標値を補間することによって新しい頂点のテクスチャ座標を計算する。好ましい実施形態において、直線補間を用いて、分割スラブの端部まで補間される。その結果、各スラブは、既知のテクスチャ座標で3つ又は4つの頂点を有する。スラブの頂点での3つ又は4つの既知の座標で、スラブ上のどの画素のテクスチャ値も、補間、又はより詳細には直線補間のような数学的手法によって求めることができる。
例えばスラブや多角形の頂点のコンテキストにおいてテクスチャルックアップを説明した。ここで、開示されてきた実施形態の幾つかに効率的にテクスチャルックアップを組み込む方法に関してより詳細に説明する。最初に、テクスチャルックアップの2つの関連するタイプを述べ、次に前述の説明に類似する可能性のあるコンテキストを提供することによって、この詳細な説明の裏付けを与える必要がある。
発明者らは既に幾度もコードのセットアップを説明してきたが、幾つかの例示的な実施形態を提供する。例えば、所与の実施形態において、各多角形についてセットアップされるコードの部分と、各スラブのためにセットアップされる部分、各走査線のセットアップの部分と、各画素グループ(例えば、L又は残りのグループ)に対してセットアップされる部分が存在することができる。所与のセットアップでの種々のアクティビティは、本明細書での他の説明から外挿することができる。
前述の実施例に類似する技術に従う実施形態は、複数のCPUに極めて良好に適合する。これは、ステップ169(図16)で作成されたループ機械コードが種々のスラブ又は種々の多角形上で別々のインスタンスにおいて実行できるためである。特に、Core Imaging又は別の適切なプログラムは、プロセッサ間でタスクを分割することによってマルチプロセッサシステム上でのグラフィックレンダリングの速度を大幅に高めることができる。好ましい実施形態において、各プロセッサに送られることになるタスクのインクリメントは、スラブ(又は他の細分化されたもの)である。しかしながら、インクリメントは、より小さいもの(例えば走査線)又はより大きいもの(例えば全多角形)であってもよい。
仮想マシンはまた、CPU上でGPUコードをエミュレートするのに用いることができる。仮想マシンは、命令を受け取りプロセッサ資源を別のプロセッサにエミュレートすることができる点で、ハードウェアのように動作するプロセスである。一般的な意味で、仮想マシンエミュレータソリューションの利点は、仮想マシンがよりポータブルであることである。特に、仮想マシンは高レベル言語で記述することができ、次いでどのようなプラットフォームにもコンパイルすることができる。或いは、GPUプログラムを機械コードにコンパイルする実施形態は、各ハードウェアプラットフォーム用に特注とすることができる。
性能を得るために、多くの実施形態では全ての利用可能な低レベルグラフィック呼出しをエミュレートしない。一般に、利用可能なグラフィック命令のサブセットだけをエミュレートすることによって、サポートされる呼出しについてのより多くの想定が実装により行われ、従って幾つかの偶発事象が回避され、これによって作業を短縮することができる。例えば幾つかの実施形態において、Core Imagingは、透視用法の正確な補間に対し必要ではない。特にOpenGLは通常、1つの補間されたテクスチャ座標あたりの画素毎に少なくとも1つの分割命令を必要とする。分割は、コンピュータ的に極めて高コストであり、Core Imagingのこれらの実施形態が透視図を持たないので、分割は必要ではない。オペレーションのサブセットだけをサポートすることによって向上する性能の別の実施例は、Core Imagingの幾つかの実施形態が少数のテクスチャフォーマットとデスティネーションフォーマットだけをサポートものである。これはデータ変換を制限し、より容易なインラインコード作成を可能にする。
本明細書の種々の箇所で、フィルタの例証的なリストに言及してきた。以下の多くのページは、そのリストに充てられる。このリスト及び添付のパラメータは例証として、説明を完全にするために提供される。上記の発明の本発明者らの実装に関して、リストされたフィルタの各々を使用又は修正してもよく、或いは使用又は修正しなくてもよい。更に、より多くのフィルタを作成することができ、これらは、開示されたものとはかなり異なる場合がある。
Claims (85)
- 初期イメージを編集する方法であって、
第1プロセスが第2プロセスにフィルタを要求するステップと、
前記第1プロセスが前記フィルタと前記初期イメージ間の関係を定義するステップであって、その関係付けられたフィルタと初期イメージがプログラムを含む、前記定義するステップと、
前記第2プロセスが前記プログラムをコンパイルして、コンパイルされたプログラムを作成するステップと、
前記コンパイルされたプログラムの少なくとも一部を実行して、前記フィルタの関数を前記イメージに加え、画素イメージ結果を得るステップと、
を含む方法。 - 前記プログラムを最適化する追加ステップを有する請求項1に記載の方法。
- 前記最適化するステップは、キャッシュルックアップを使用して前記画素イメージ結果が既にキャッシュ内にあるかどうか調べるステップを含む請求項2に記載の方法。
- 前記最適化するステップは交差を計算するステップを含み、前記交差は、前記画素イメージ結果が、定義され且つ前記第2プロセスの要求された結果領域にあるエリアを表すことを特徴とする請求項2に記載の方法。
- 前記コンパイルされたプログラムの実行中に、前記計算された交差を使用して、計算を必要とする画素数を制限するステップを更に含む請求項4に記載の方法。
- 前記計算された交差を使用して、計算されたイメージを記憶するのに必要なメモリの量を制限するステップを更に含む請求項4に記載の方法。
- 前記コンパイルされたプログラムは、単一のマイクロプロセッサ用であることを特徴とする請求項1に記載の方法。
- 前記コンパイルされたプログラムは、第1マイクロプロセッサ用の構成要素と第2マイクロプロセッサ用の構成要素とを含むことを特徴とする請求項1に記載の方法。
- 前記単一のマイクロプロセッサはCPUであることを特徴とする請求項7に記載の方法。
- 前記単一のマイクロプロセッサはプログラム可能GPUであることを特徴とする請求項7に記載の方法。
- 前記第1マイクロプロセッサはCPUであり、前記第2マイクロプロセッサはGPUであることを特徴とする請求項8に記載の方法。
- 前記第1と第2マイクロプロセッサは両方ともCPUであることを特徴とする請求項8に記載の方法。
- 前記第1と第2マイクロプロセッサは両方ともGPUであることを特徴とする請求項8に記載の方法。
- 前記初期イメージはカラーだけであることを特徴とする請求項1に記載の方法。
- 前記第1プロセスはアプリケーションプログラムであることを特徴とする請求項1に記載の方法。
- 前記第2プロセス、一式のグラフィックサービス機能を含むことを特徴とする請求項1に記載の方法。
- オペレーティングシステムは前記第2プロセスを含むことを特徴とする請求項1に記載の方法。
- 前記第1プロセスは、高レベルフィルタを要求し、前記第2プロセスは、低レベルフィルタを表現するオブジェクトに応答することを特徴とする請求項1に記載の方法。
- 前記第1プロセスと第2プロセスはCPU上で実行され、前記コンパイルされたプログラムはGPU上で実行されることを特徴とする請求項1に記載の方法。
- 前記第1プロセスと第2プロセスはCPU上で実行され、前記コンパイルされたプログラムはGPU上で実行されることを特徴とする請求項2に記載の方法。
- 前記第1プロセスと第2プロセスはCPU上で実行され、前記コンパイルされたプログラムはGPU上で実行されることを特徴とする請求項5に記載の方法。
- 初期イメージを編集するためのシステムであって、
前記第1プロセスからの要求をサービスするための第1プロセスと第2プロセスを実行する第1マイクロプロセッサと、
前記第1プロセスによって要求されたフィルタを記憶するためのメモリと、
前記初期イメージと前記フィルタとの間の関係を含み、前記第1プロセスにより作成されるデータ構造を記憶するための第2メモリと、
前記データ構造を使用して作成されたプログラムを実行するための第2マイクロプロセッサと、
前記プログラムを実行することで得られる画素イメージを記憶するための第3メモリと、
を備えるシステム。 - 前記第1と第2メモリは同じものであることを特徴とする請求項22に記載のシステム。
- 前記第1、第2、第3メモリは同じものであることを特徴とする請求項22に記載のシステム。
- 前記第1と第2メモリはシステムメモリ内にあり、前記第3メモリはビデオメモリ内にあることを特徴とする請求項22に記載のシステム。
- 前記第1マイクロプロセッサは前記データ構造を処理し、前記第2マイクロプロセッサ上で使用するための前記プログラムを生成することを特徴とする請求項22に記載のシステム。
- 前記第2マイクロプロセッサにより、前記プログラムの制御下で前記画素イメージが前記第3メモリ内に記憶されることを特徴とする請求項22に記載のシステム。
- 結果イメージを生成する方法であって、
第1プロセスがコンテキストの作成を要求するステップと、
前記第1プロセスが結果イメージの生成を要求するステップと、
前記第1プロセスが、前記結果イメージの生成に関連付けられたパラメータを示すステップと、
前記第1プロセスが、前記結果イメージを前記コンテキストにレンダリングするように要求するステップと、
前記第2プロセスが、
前記結果イメージを表すグラフを最適化するステップと、
前記最適化されたグラフをコンパイルするステップと、
前記コンパイルされ最適化されたグラフの前記コンテキストへのレンダリングを生じさせるステップと、
を含む前記第1プロセスの要求をサービスするステップと、
を含む方法。 - 前記結果イメージの生成は、事前に存在するイメージを編集するステップを含む請求項28に記載の方法。
- 前記第1イメージを表すグラフを最適化する前記ステップは、
前記結果イメージ結果が前記第1プロセスによって結果として定義され且つ要求されるエリアを表す交差を計算するステップを含む請求項28に記載の方法。 - 前記第1イメージを表すグラフを最適化する前記ステップは、
ノードを統合しようとする目的のために前記グラフ内の隣接するノードを解析するステップを含む請求項28に記載の方法。 - 前記第1イメージを表すグラフを最適化する前記ステップは、
ノードを統合しようとする目的のために前記グラフの隣接するノードを解析する追加ステップを含む請求項30に記載の方法。 - 隣接するノードを解析する前記ステップはキャッシュをチェックし、このような解析の結果がメモリ内で利用可能であるかどうかを判定するステップを含む請求項31に記載の方法。
- 前記グラフを最適化する前記ステップは、キャッシュをチェックし前記グラフが既に最適化されているかどうかを判定するステップを含む請求項28に記載の方法。
- 前記グラフを最適化する前記ステップは、キャッシュをチェックして前記グラフをレンダリングした結果がメモリ内で利用可能であるかどうかを判定するステップを含む請求項28に記載の方法。
- 前記第1プロセスは、前記第1プロセスによってプログラム的に組み立てられたグラフの出力を要求し、1つ又はそれ以上の事前に定義されたフィルタを含む請求項28に記載の方法。
- 前記第1プロセスは、前記第2プロセスと協働して前記グラフをプログラム的に組み立てる請求項36に記載の方法。
- 前記第1プロセスは、アプリケーションプログラムである請求項28に記載の方法。
- 前記第2プロセスは、一式のグラフィックサービス機能を含む請求項28に記載の方法。
- オペレーティングシステムは前記第2プロセスを含む請求項39に記載の方法。
- オペレーティングシステムは前記第2プロセスを含む請求項28に記載の方法。
- 前記第2プロセスは前記グラフにノードを挿入して、オリジナルカラー方式をオペレーティングカラー方式に変換し、更に該オペレーティングカラー方式を該オリジナルカラー方式に変換し戻すことを特徴とする請求項28に記載の方法。
- 結果イメージを生成する方法であって、
第1プロセスがコンテキストの作成を要求する第1マイクロプロセッサ上で実行されるステップと、
前記第1プロセスが結果イメージの生成を要求するステップと、
前記第1プロセスが前記結果イメージの生成に関連するパラメータを示すステップと、
前記第1プロセスが前記結果イメージを前記コンテキストにレンダリングすることを要求するステップと、
第2プロセスが、前記第1プロセスの前記要求をサービスする前記第1マイクロプロセッサ上で実行されるステップと、
を含み、
前記サービスは、
前記結果イメージを表すグラフを最適化するステップと、
前記最適化されたグラフをコンパイルするステップと、
前記コンパイルされ最適化されたグラフの前記コンテキストへのレンダリングを前記第2マイクロプロセッサ上で生じさせるステップと、
を含む方法。 - 前記結果イメージの生成は、事前に存在するイメージを編集するステップを含む請求項43に記載の方法。
- 前記第1イメージを表すグラフを最適化する前記ステップは、
前記結果イメージ結果が前記第1プロセスによって定義され且つ要求されるエリアを表す交差を計算するステップを含む請求項43に記載の方法。 - 前記第1イメージを表すグラフを最適化する前記ステップは、
ノードを統合しようとする目的のために前記グラフ内の隣接するノードを解析するステップを含む請求項43に記載の方法。 - 前記第1イメージを表すグラフを最適化する前記ステップは、
ノードを統合しようとする目的のために前記グラフの隣接するノードを解析する追加ステップを含む請求項45に記載の方法。 - 隣接するノードを解析する前記ステップは、キャッシュをチェックし、このような解析の結果がメモリ内で利用可能であるかどうかを判定するステップを含む請求項46に記載の方法。
- 前記グラフを最適化する前記ステップは、キャッシュをチェックし前記グラフが既に最適化されているかどうかを判定するステップを含む請求項43に記載の方法。
- 前記グラフを最適化する前記ステップは、キャッシュをチェックして前記グラフをレンダリングした結果がメモリ内で利用可能であるかどうかを判定するステップを含む請求項43に記載の方法。
- 前記第1プロセスは、前記第1プロセスによってプログラム的に組み立てられたグラフの出力を要求し、1つ又はそれ以上の事前に定義されたフィルタを含むことを特徴とする請求項43に記載の方法。
- 前記第1プロセスは、前記第2プロセスと協働して前記グラフをプログラム的に組み立てる請求項51に記載の方法。
- 前記第1プロセスはアプリケーションプログラムである請求項43に記載の方法。
- 前記第2プロセスは一式のグラフィックサービス機能を含む請求項43に記載の方法。
- オペレーティングシステムは前記第2プロセスを含む請求項54に記載の方法。
- オペレーティングシステムは前記第2プロセスを含む請求項43に記載の方法。
- 前記第2プロセスが、前記グラフにノードを挿入して、オリジナルカラー方式をオペレーティングカラー方式に変換し、更に該オペレーティングカラー方式を該オリジナルカラー方式に変換し戻すことを特徴とする請求項43に記載の方法。
- グラフィック処理資源に高レベルインターフェースを提供するための方法であって、
第1プロセスが、前記グラフィック処理資源によってサービスされる1つ又はそれ以上の関数呼び出しを介してタスクの性能を要求し、該関数呼び出しが、(i)イメージの生成、(ii)フィルタの作成、(iii)該フィルタに関連付けられた引数の設定、(iv)前記フィルタ又は別のフィルタの出力の要求、(v)コンテキストの作成、(v)イメージの前記コンテキスト又は別のコンテキストへのレンダリングの選択肢のうちの1つ又はそれ以上から選択され、
前記要求がこれに関連付けられたオブジェクトを有し、該オブジェクトが、コンテキスト、イメージ、フィルタ、又はベクトルのうちの1つを含み、
前記要求が、前記機能の少なくとも1つと前記オブジェクトの1つとの間の関係を定義し、
前記グラフィック処理資源が、前記要求をサービスする
ことを含む方法。 - 前記要求はGPUとCPUを使用してサービスされる請求項58に記載の方法。
- 前記要求はCPU上でGPUプログラムを実行するためにエミュレータを使用してサービスされる請求項58に記載の方法。
- イメージを表すグラフを作成する追加ステップを含む請求項58に記載の方法。
- 前記グラフを最適化する追加ステップを含む請求項61に記載の方法。
- グラフィック処理資源に高レベルインターフェースを提供するための方法であって、
第1プロセスが、前記グラフィック処理資源によってサービスされる1つ又はそれ以上の関数呼び出しを介してタスクの性能を要求し、該関数呼び出しが、(i)イメージの生成、(ii)コンテキストの作成、(v)イメージの該コンテキスト又は別のコンテキストへのレンダリングの選択肢のうちの1つ又はそれ以上から選択され、
前記要求がこれに関連付けられたオブジェクトを有し、該オブジェクトが、コンテキスト又はイメージの1つを含み、
前記要求が、前記機能の少なくとも1つと前記オブジェクトの1つとの間の関係を定義し、
前記グラフィック処理資源が前記要求をサービスする、
ことを含む方法。 - 前記要求はGPUとCPUを使用してサービスされる請求項63に記載の方法。
- 前記要求はCPU上でGPUプログラムを実行するためにエミュレータを使用してサービスされる請求項63に記載の方法。
- イメージを表すグラフを作成する追加ステップを含む請求項63に記載の方法。
- 前記グラフを最適化するステップを更に含む請求項66に記載の方法。
- 前記関数呼び出しはフィルタを作成するオプションを含む請求項63に記載の方法。
- 前記関数呼び出しは前記フィルタに関連付けられた引数を設定するオプションを含む請求項63に記載の方法。
- 前記関数呼び出しは前記フィルタに関連付けられた引数を設定するオプションを含む請求項68に記載の方法。
- 前記要求に関連付けられた前記別のオブジェクトはフィルタを含むことができる請求項63に記載の方法。
- 前記要求に関連付けられた別のオブジェクトはベクトルとすることができる請求項63に記載の方法。
- 前記要求に関連付けられた別のオブジェクトはベクトルとすることができる請求項71に記載の方法。
- イメージをレンダリングするための方法であって、
第1プロセスがCPU上で実行されてイメージの生成を要求するステップと、
グラフィックサービス資源が、前記CPU上で前記イメージを表すグラフを最適化するための第1ルーチンを実行することによって前記要求に応答するステップと、
前記第1プロセスが前記イメージの指定されたコンテキストへのレンダリングを要求するステップと、
前記グラフィックサービス資源が前記イメージを表す前記グラフのレンダリングをGPU上で生じさせるステップと、
を含む方法。 - 第1イメージ表示を第2イメージ表示に変換するための方法であって、
このようなグラフを作成するためのソフトウェアルーチンがCPU上で実行される前記第1イメージ表示と関連付けられた第1グラフを作成するステップと、
前記第1グラフのグローバルな定義ドメインとグローバルな関心領域との交差を求めるステップと、
前記CPU上でソフトウェアルーチンを実行して、(i)前記第1ノードが第2ノードと結合できるかどうかを判定し、(ii)前記交差に関係するいずれかの中間イメージの部分だけを計算し記憶するための、前記CPU上でコンパイルし且つGPU上で実行するプログラムステップを作成することによって、前記第1グラフの第1ノードを決定するステップと、
を含む方法。 - 前記第1ノードが前記第2ノードと結合できるかどうかを判定する前記ステップが、キャッシュをチェックし、結合ノードに関したこのような判定に関する結果がメモリにあるかどうかを判定するステップを含む請求項75に記載の方法。
- 前記第1ノードを決定する前記ステップはキャッシュをチェックし、前記第1ノードの決定に関する結果がメモリ内にあるかどうかを判定するステップを含む請求項75に記載の方法。
- 前記第1ノードはルートノードである請求項75に記載の方法。
- 1つ又はそれ以上のコンピュータ可読媒体上で具現化されるイメージ処理アプリケーションプログラムインターフェースであって、フィルタオブジェクトに関するサービスの第1グループと、イメージオブジェクトに関するサービスの第2グループと、コンテキストオブジェクトに関するサービスの第3グループと、ベクトルオブジェクトに関するサービスの第4グループとを含むイメージ処理アプリケーションプログラムインターフェース。
- 前記サービスの第1グループは、フィルタオブジェクトを作成するための第1機能、フィルタオブジェクトパラメータを設定するための第2機能、フィルタオブジェクト出力を取得するための第3機能を含む請求項79に記載のイメージ処理アプリケーションプログラムインターフェース。
- 前記サービスの第2グループは、イメージオブジェクトを作成するための第1機能と、イメージオブジェクトをコンテキストオブジェクトにレンダリングするための第2機能とを含む請求項79に記載のイメージ処理アプリケーションプログラムインターフェース。
- 前記サービスの第3グループは、コンテキストオブジェクトを作成するための第1機能を含む請求項79に記載のイメージ処理アプリケーションプログラムインターフェース。
- 前記サービスの第4グループは、ベクトルオブジェクトを作成するための第1機能を含む請求項79に記載のイメージ処理アプリケーションプログラムインターフェース。
- イメージ処理を容易にするためのアプリケーションプログラムインターフェースであって、イメージオブジェクトを作成する機能、コンテキストオブジェクトを作成する機能、フィルタオブジェクトを作成する機能、フィルタオブジェクトパラメータを設定する機能、フィルタオブジェクト出力を取得する機能、イメージオブジェクトをコンテキストオブジェクトに変換する機能を含むアプリケーションプログラムインターフェース。
- 請求項1、28、43、58、63、74、又は75のいずれか1つに記載された方法を実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/826,762 US8704837B2 (en) | 2004-04-16 | 2004-04-16 | High-level program interface for graphics operations |
PCT/US2005/008804 WO2005106652A1 (en) | 2004-04-16 | 2005-03-16 | High-level program interface for graphics operations |
Related Child Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009281419A Division JP5113143B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
JP2009281421A Division JP5043922B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
JP2009281420A Division JP5043921B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007533026A true JP2007533026A (ja) | 2007-11-15 |
Family
ID=34962678
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007508356A Pending JP2007533026A (ja) | 2004-04-16 | 2005-03-16 | グラフィックオペレーションのための高レベルプログラムインターフェース |
JP2009281419A Active JP5113143B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
JP2009281420A Active JP5043921B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
JP2009281421A Active JP5043922B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009281419A Active JP5113143B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
JP2009281420A Active JP5043921B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
JP2009281421A Active JP5043922B2 (ja) | 2004-04-16 | 2009-12-11 | グラフィックオペレーションのための高レベルプログラムインターフェース |
Country Status (5)
Country | Link |
---|---|
US (2) | US8704837B2 (ja) |
EP (6) | EP3249522A1 (ja) |
JP (4) | JP2007533026A (ja) |
CN (1) | CN1942896B (ja) |
WO (1) | WO2005106652A1 (ja) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7636489B2 (en) * | 2004-04-16 | 2009-12-22 | Apple Inc. | Blur computation algorithm |
US7295208B2 (en) * | 2005-06-24 | 2007-11-13 | Microsoft Corporation | Translating layers into effect graphs in digital image processing |
US20060290705A1 (en) * | 2005-06-24 | 2006-12-28 | Microsoft Corporation | Performing a pre-rendering pass in digital image processing |
US7519233B2 (en) * | 2005-06-24 | 2009-04-14 | Microsoft Corporation | Accumulating transforms through an effect graph in digital image processing |
US7619628B2 (en) * | 2005-06-24 | 2009-11-17 | Microsoft Corporation | Caching digital image data |
US7554550B2 (en) * | 2005-06-24 | 2009-06-30 | Microsoft Corporation | Non-destructive processing of digital image data |
US8860752B2 (en) * | 2006-07-13 | 2014-10-14 | Apple Inc. | Multimedia scripting |
US8615747B2 (en) * | 2007-04-18 | 2013-12-24 | Apple Inc. | Method and apparatus for dynamic code optimization |
US8884981B2 (en) * | 2007-09-04 | 2014-11-11 | Apple Inc. | Dynamically reconfigurable graphics layer system and method |
US8610725B2 (en) * | 2007-10-10 | 2013-12-17 | Apple Inc. | Framework for dynamic configuration of hardware resources |
US8347310B1 (en) * | 2007-11-12 | 2013-01-01 | Nvidia Corporation | System and method for representing and managing a multi-architecure co-processor application program |
US8229211B2 (en) * | 2008-07-29 | 2012-07-24 | Apple Inc. | Differential image enhancement |
US8584027B2 (en) * | 2009-06-02 | 2013-11-12 | Apple Inc. | Framework for designing physics-based graphical user interface |
US9778921B2 (en) | 2009-06-02 | 2017-10-03 | Apple Inc. | Method for creating, exporting, sharing, and installing graphics functional blocks |
CN101706961B (zh) * | 2009-11-10 | 2012-12-12 | 北京航空航天大学 | 一种图像的配准方法及装置 |
US8301716B2 (en) * | 2009-11-20 | 2012-10-30 | Time Warner Cable Inc. | Interface for a multi-processor gateway apparatus and method for using the same |
US8982151B2 (en) * | 2010-06-14 | 2015-03-17 | Microsoft Technology Licensing, Llc | Independently processing planes of display data |
US9727385B2 (en) * | 2011-07-18 | 2017-08-08 | Apple Inc. | Graphical processing unit (GPU) implementing a plurality of virtual GPUs |
US9682315B1 (en) * | 2011-09-07 | 2017-06-20 | Zynga Inc. | Social surfacing and messaging interactions |
JP2013073543A (ja) * | 2011-09-29 | 2013-04-22 | Fixstars Corp | 画像処理フィルタ統合装置、画像処理フィルタ統合方法、およびプログラム |
CN102810200A (zh) * | 2012-06-15 | 2012-12-05 | 成都平行视野科技有限公司 | 一种图像批处理的方法 |
FR2996037B1 (fr) * | 2012-09-24 | 2015-05-29 | Allegorithmic | Moteur hybride pour processeur central et processeur graphique |
GB2524287B (en) * | 2014-03-19 | 2020-07-01 | Advanced Risc Mach Ltd | Graphics processing systems |
US10445319B2 (en) | 2017-05-10 | 2019-10-15 | Oracle International Corporation | Defining subgraphs declaratively with vertex and edge filters |
US10445218B2 (en) | 2017-06-06 | 2019-10-15 | Microsoft Technology Licensing, Llc | Execution of graphic workloads on a simulated hardware environment |
CN107945099B (zh) * | 2017-11-24 | 2021-06-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向OpenGL实现的属性配置优化方法 |
CN108074272A (zh) * | 2017-12-21 | 2018-05-25 | 珠海亿智电子科技有限公司 | 一种仿真图形混合处理的方法 |
CN111768464B (zh) * | 2019-04-01 | 2023-09-19 | 珠海金山办公软件有限公司 | 一种图形调整方法及装置 |
CN110133625B (zh) * | 2019-05-20 | 2020-05-08 | 北京奥特贝睿科技有限公司 | 一种快速球坐标激光雷达仿真方法 |
CN112233202B (zh) * | 2019-07-15 | 2023-09-19 | 珠海金山办公软件有限公司 | 一种正多边形绘制方法、装置、电子设备及可读存储介质 |
US11263060B2 (en) | 2019-11-21 | 2022-03-01 | International Business Machines Corporation | Dynamic distribution of loads across heterogeneous computing structures in computational rendering |
CN111242838B (zh) * | 2020-01-09 | 2022-06-03 | 腾讯科技(深圳)有限公司 | 模糊图像渲染方法和装置、存储介质及电子装置 |
CA3113347A1 (en) * | 2020-03-26 | 2021-09-26 | Mappedin Inc. | Systems and methods for geometry simplification and filtering |
CN113127945B (zh) * | 2021-05-18 | 2022-07-19 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时布料仿真的方法及其系统 |
CN116468597B (zh) * | 2023-02-16 | 2023-11-17 | 深圳技术大学 | 基于多gpu的图像渲染方法、装置及可读存储介质 |
Family Cites Families (155)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4752893A (en) | 1985-11-06 | 1988-06-21 | Texas Instruments Incorporated | Graphics data processing apparatus having image operations with transparent color having a selectable number of bits |
US5113494A (en) | 1987-02-27 | 1992-05-12 | Eastman Kodak Company | High speed raster image processor particularly suited for use in an image management system |
US5063375A (en) | 1987-07-27 | 1991-11-05 | Sun Microsystems, Inc. | Method and apparatus for shading images |
GB8823239D0 (en) | 1988-10-04 | 1988-11-09 | Gems Of Cambridge Ltd | Improved data processing |
US5262965A (en) | 1988-10-31 | 1993-11-16 | Bts-Broadcast Television Systems, Inc. | System and method for high speed computer graphics image computation using a parallel connected, asynchronous multiprocessor ring coupled to a synchronous special purpose video processing ring |
US5140444A (en) | 1989-10-10 | 1992-08-18 | Unisys Corporation | Image data processor |
US5410649A (en) | 1989-11-17 | 1995-04-25 | Texas Instruments Incorporated | Imaging computer system and network |
US5168441A (en) | 1990-05-30 | 1992-12-01 | Allen-Bradley Company, Inc. | Methods for set up and programming of machine and process controllers |
US5388201A (en) | 1990-09-14 | 1995-02-07 | Hourvitz; Leonard | Method and apparatus for providing multiple bit depth windows |
DE69225544T2 (de) | 1991-08-13 | 1998-12-03 | Xerox Corp | Elektronische Bilderzeugung |
US5274760A (en) | 1991-12-24 | 1993-12-28 | International Business Machines Corporation | Extendable multiple image-buffer for graphics systems |
DE69315969T2 (de) | 1992-12-15 | 1998-07-30 | Sun Microsystems Inc | Darstellung von Informationen in einem Anzeigesystem mit transparenten Fenstern |
JPH06282602A (ja) | 1993-03-29 | 1994-10-07 | Hitachi Ltd | 多段論理生成方法 |
US5475840A (en) | 1993-04-13 | 1995-12-12 | Sun Microsystems, Inc. | High performance dynamic linking through caching |
US5522022A (en) | 1993-11-24 | 1996-05-28 | Xerox Corporation | Analyzing an image showing a node-link structure |
US6396504B1 (en) | 1994-04-29 | 2002-05-28 | Sun Microsystems, Inc. | Graphical image data reformatting method and apparatus |
US6757438B2 (en) | 2000-02-28 | 2004-06-29 | Next Software, Inc. | Method and apparatus for video compression using microwavelets |
US6031937A (en) | 1994-05-19 | 2000-02-29 | Next Software, Inc. | Method and apparatus for video compression using block and wavelet techniques |
US5706478A (en) | 1994-05-23 | 1998-01-06 | Cirrus Logic, Inc. | Display list processor for operating in processor and coprocessor modes |
AUPM704194A0 (en) | 1994-07-25 | 1994-08-18 | Canon Information Systems Research Australia Pty Ltd | Efficient methods for the evaluation of a graphical programming language |
AUPM704294A0 (en) | 1994-07-25 | 1994-08-18 | Canon Information Systems Research Australia Pty Ltd | Method and apparatus for the creation of images |
JP2951572B2 (ja) * | 1994-09-12 | 1999-09-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 画像データ変換方法及びシステム |
JP3647487B2 (ja) | 1994-12-02 | 2005-05-11 | 株式会社ソニー・コンピュータエンタテインメント | テクスチャマッピング装置 |
JP3578498B2 (ja) | 1994-12-02 | 2004-10-20 | 株式会社ソニー・コンピュータエンタテインメント | 画像情報処理装置 |
US5949409A (en) | 1994-12-02 | 1999-09-07 | Sony Corporation | Image processing in which the image is divided into image areas with specific color lookup tables for enhanced color resolution |
JP3763079B2 (ja) | 1994-12-22 | 2006-04-05 | アップル コンピューター インコーポレイテッド | 三次元グラフィックス・レンダリング・システム |
US5877762A (en) | 1995-02-27 | 1999-03-02 | Apple Computer, Inc. | System and method for capturing images of screens which display multiple windows |
US5742796A (en) | 1995-03-24 | 1998-04-21 | 3Dlabs Inc. Ltd. | Graphics system with color space double buffering |
US5877741A (en) | 1995-06-07 | 1999-03-02 | Seiko Epson Corporation | System and method for implementing an overlay pathway |
DE69610548T2 (de) | 1995-07-21 | 2001-06-07 | Koninkl Philips Electronics Nv | Multi-media-prozessorarchitektur mit hoher leistungsdichte |
US5793374A (en) | 1995-07-28 | 1998-08-11 | Microsoft Corporation | Specialized shaders for shading objects in computer generated images |
US5990904A (en) | 1995-08-04 | 1999-11-23 | Microsoft Corporation | Method and system for merging pixel fragments in a graphics rendering system |
US5854637A (en) * | 1995-08-17 | 1998-12-29 | Intel Corporation | Method and apparatus for managing access to a computer system memory shared by a graphics controller and a memory controller |
US6331856B1 (en) | 1995-11-22 | 2001-12-18 | Nintendo Co., Ltd. | Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing |
US5872729A (en) | 1995-11-27 | 1999-02-16 | Sun Microsystems, Inc. | Accumulation buffer method and apparatus for graphical image processing |
ATE404922T1 (de) | 1996-02-29 | 2008-08-15 | Sony Computer Entertainment Inc | Bildverarbeitungsgerät und bildverarbeitungsverfahren |
US6044408A (en) | 1996-04-25 | 2000-03-28 | Microsoft Corporation | Multimedia device interface for retrieving and exploiting software and hardware capabilities |
US5764229A (en) | 1996-05-09 | 1998-06-09 | International Business Machines Corporation | Method of and system for updating dynamic translucent windows with buffers |
JP3537259B2 (ja) | 1996-05-10 | 2004-06-14 | 株式会社ソニー・コンピュータエンタテインメント | データ処理装置およびデータ処理方法 |
AUPO002196A0 (en) | 1996-05-22 | 1996-06-13 | Canon Information Systems Research Australia Pty Ltd | A method of optimising an expression tree for the production of images |
US5896139A (en) | 1996-08-01 | 1999-04-20 | Platinum Technology Ip, Inc. | System and method for optimizing a scene graph for optimizing rendering performance |
US6078688A (en) | 1996-08-23 | 2000-06-20 | Nec Research Institute, Inc. | Method for image segmentation by minimizing the ratio between the exterior boundary cost and the cost of the enclosed region |
US6006231A (en) | 1996-09-10 | 1999-12-21 | Warp 10 Technologies Inc. | File format for an image including multiple versions of an image, and related system and method |
US5933155A (en) | 1996-11-06 | 1999-08-03 | Silicon Graphics, Inc. | System and method for buffering multiple frames while controlling latency |
US5913038A (en) | 1996-12-13 | 1999-06-15 | Microsoft Corporation | System and method for processing multimedia data streams using filter graphs |
US6195664B1 (en) | 1997-02-21 | 2001-02-27 | Micrografx, Inc. | Method and system for controlling the conversion of a file from an input format to an output format |
DE19709305A1 (de) | 1997-03-07 | 1998-09-17 | Fraunhofer Ges Forschung | Vorrichtung zur Ausgabe von auf einem Datenträger digital gespeicherten Daten |
WO1998045815A1 (en) * | 1997-04-04 | 1998-10-15 | Intergraph Corporation | Apparatus and method for applying effects to graphical images |
US6215495B1 (en) * | 1997-05-30 | 2001-04-10 | Silicon Graphics, Inc. | Platform independent application program interface for interactive 3D scene management |
US6496190B1 (en) | 1997-07-02 | 2002-12-17 | Mental Images Gmbh & Co Kg. | System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system |
US6026478A (en) | 1997-08-01 | 2000-02-15 | Micron Technology, Inc. | Split embedded DRAM processor |
US5987256A (en) | 1997-09-03 | 1999-11-16 | Enreach Technology, Inc. | System and process for object rendering on thin client platforms |
US6272558B1 (en) | 1997-10-06 | 2001-08-07 | Canon Kabushiki Kaisha | Application programming interface for manipulating flashpix files |
US6266053B1 (en) * | 1998-04-03 | 2001-07-24 | Synapix, Inc. | Time inheritance scene graph for representation of media content |
US6480205B1 (en) | 1998-07-22 | 2002-11-12 | Nvidia Corporation | Method and apparatus for occlusion culling in graphics systems |
US6577317B1 (en) | 1998-08-20 | 2003-06-10 | Apple Computer, Inc. | Apparatus and method for geometry operations in a 3D-graphics pipeline |
US6771264B1 (en) | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US8332478B2 (en) * | 1998-10-01 | 2012-12-11 | Digimarc Corporation | Context sensitive connected content |
JP3566889B2 (ja) | 1998-10-08 | 2004-09-15 | 株式会社ソニー・コンピュータエンタテインメント | 情報追加方法、ビデオゲーム機及び記録媒体 |
US6300953B1 (en) | 1998-10-15 | 2001-10-09 | Nvidia | Apparatus and method for grouping texture cache requests |
US6115054A (en) | 1998-12-29 | 2000-09-05 | Connectix Corporation | Graphics processor emulation system and method with adaptive frame skipping to maintain synchronization between emulation time and real time |
US6477683B1 (en) | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
JP3428922B2 (ja) | 1999-02-26 | 2003-07-22 | キヤノン株式会社 | 画像表示制御方法及び装置 |
US6753878B1 (en) | 1999-03-08 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | Parallel pipelined merge engines |
US6362822B1 (en) | 1999-03-12 | 2002-03-26 | Terminal Reality, Inc. | Lighting and shadowing methods and arrangements for use in computer graphic simulations |
US6919895B1 (en) | 1999-03-22 | 2005-07-19 | Nvidia Corporation | Texture caching arrangement for a computer graphics accelerator |
US6421060B1 (en) | 1999-03-31 | 2002-07-16 | International Business Machines Corporation | Memory efficient system and method for creating anti-aliased images |
US6369830B1 (en) | 1999-05-10 | 2002-04-09 | Apple Computer, Inc. | Rendering translucent layers in a display system |
US6434742B1 (en) | 1999-05-10 | 2002-08-13 | Lucent Technologies Inc. | Symbol for automatically renaming symbols in files during the compiling of the files |
US6321314B1 (en) | 1999-06-09 | 2001-11-20 | Ati International S.R.L. | Method and apparatus for restricting memory access |
US6542160B1 (en) | 1999-06-18 | 2003-04-01 | Phoenix Technologies Ltd. | Re-generating a displayed image |
US6433788B1 (en) | 1999-07-30 | 2002-08-13 | Ati International Srl | Dual fragment-cache pixel processing circuit and method therefore |
US6260370B1 (en) | 1999-08-27 | 2001-07-17 | Refrigeration Research, Inc. | Solar refrigeration and heating system usable with alternative heat sources |
US7170511B2 (en) | 1999-09-24 | 2007-01-30 | Sun Microsystems, Inc. | Creating a parallel structure for scene-based rendering |
US6221890B1 (en) * | 1999-10-21 | 2001-04-24 | Sumitomo Chemical Company Limited | Acaricidal compositions |
US6411301B1 (en) * | 1999-10-28 | 2002-06-25 | Nintendo Co., Ltd. | Graphics system interface |
US6452600B1 (en) | 1999-10-28 | 2002-09-17 | Nintendo Co., Ltd. | Graphics system interface |
US6618048B1 (en) | 1999-10-28 | 2003-09-09 | Nintendo Co., Ltd. | 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components |
US6263302B1 (en) | 1999-10-29 | 2001-07-17 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating the cache of a target processor |
US6457034B1 (en) | 1999-11-02 | 2002-09-24 | Ati International Srl | Method and apparatus for accumulation buffering in the video graphics system |
US6867779B1 (en) * | 1999-12-22 | 2005-03-15 | Intel Corporation | Image rendering |
US6977661B1 (en) * | 2000-02-25 | 2005-12-20 | Microsoft Corporation | System and method for applying color management on captured images |
US6525725B1 (en) | 2000-03-15 | 2003-02-25 | Sun Microsystems, Inc. | Morphing decompression in a graphics system |
US20010029205A1 (en) | 2000-03-30 | 2001-10-11 | Sagahiro Taho | Game program delivery system and apparatus used in same |
US6955606B2 (en) | 2000-03-30 | 2005-10-18 | Nintendo Co., Ltd. | Game information storage medium and game system using the same |
US6857061B1 (en) | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US6707462B1 (en) | 2000-05-12 | 2004-03-16 | Microsoft Corporation | Method and system for implementing graphics control constructs |
US7042467B1 (en) | 2000-05-16 | 2006-05-09 | Adobe Systems Incorporated | Compositing using multiple backdrops |
US7285051B2 (en) | 2000-05-25 | 2007-10-23 | Nintendo Co., Ltd. | Game information storage medium and game system using the same |
US6910000B1 (en) | 2000-06-02 | 2005-06-21 | Mitsubishi Electric Research Labs, Inc. | Generalized belief propagation for probabilistic systems |
US6801202B2 (en) * | 2000-06-29 | 2004-10-05 | Sun Microsystems, Inc. | Graphics system configured to parallel-process graphics data using multiple pipelines |
US6717599B1 (en) * | 2000-06-29 | 2004-04-06 | Microsoft Corporation | Method, system, and computer program product for implementing derivative operators with graphics hardware |
US6931633B1 (en) | 2000-08-01 | 2005-08-16 | National Instruments Corporation | System and method of evaluating the performance of an image processing algorithm |
JP3964142B2 (ja) | 2000-08-15 | 2007-08-22 | 株式会社ソニー・コンピュータエンタテインメント | エミュレート装置及び部品、情報処理装置、エミュレーション方法、記録媒体、プログラム |
US6633297B2 (en) | 2000-08-18 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | System and method for producing an antialiased image using a merge buffer |
US6580430B1 (en) | 2000-08-23 | 2003-06-17 | Nintendo Co., Ltd. | Method and apparatus for providing improved fog effects in a graphics system |
US7002591B1 (en) | 2000-08-23 | 2006-02-21 | Nintendo Co., Ltd. | Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system |
US6636214B1 (en) | 2000-08-23 | 2003-10-21 | Nintendo Co., Ltd. | Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode |
US6664958B1 (en) | 2000-08-23 | 2003-12-16 | Nintendo Co., Ltd. | Z-texturing |
US6609977B1 (en) | 2000-08-23 | 2003-08-26 | Nintendo Co., Ltd. | External interfaces for a 3D graphics system |
US6639595B1 (en) | 2000-08-23 | 2003-10-28 | Nintendo Co., Ltd. | Achromatic lighting in a graphics system and method |
US6664962B1 (en) | 2000-08-23 | 2003-12-16 | Nintendo Co., Ltd. | Shadow mapping in a low cost graphics system |
KR100373323B1 (ko) | 2000-09-19 | 2003-02-25 | 한국전자통신연구원 | 영상회의 시스템에서의 다자간 영상회의 방법 |
US6715053B1 (en) | 2000-10-30 | 2004-03-30 | Ati International Srl | Method and apparatus for controlling memory client access to address ranges in a memory pool |
US20020080143A1 (en) | 2000-11-08 | 2002-06-27 | Morgan David L. | Rendering non-interactive three-dimensional content |
US6882346B1 (en) | 2000-11-17 | 2005-04-19 | Hewlett-Packard Development Company, L.P. | System and method for efficiently rendering graphical data |
US6697074B2 (en) | 2000-11-28 | 2004-02-24 | Nintendo Co., Ltd. | Graphics system interface |
JP3548521B2 (ja) | 2000-12-05 | 2004-07-28 | Necマイクロシステム株式会社 | 半透明画像処理装置及び方法 |
US6801208B2 (en) | 2000-12-27 | 2004-10-05 | Intel Corporation | System and method for cache sharing |
US7098921B2 (en) | 2001-02-09 | 2006-08-29 | Activision Publishing, Inc. | Method, system and computer program product for efficiently utilizing limited resources in a graphics device |
JP3450833B2 (ja) | 2001-02-23 | 2003-09-29 | キヤノン株式会社 | 画像処理装置及びその方法並びにプログラムコード、記憶媒体 |
US6831635B2 (en) | 2001-03-01 | 2004-12-14 | Microsoft Corporation | Method and system for providing a unified API for both 2D and 3D graphics objects |
US7038690B2 (en) | 2001-03-23 | 2006-05-02 | Microsoft Corporation | Methods and systems for displaying animated graphics on a computing device |
US20020144101A1 (en) | 2001-03-30 | 2002-10-03 | Hong Wang | Caching DAG traces |
US20020174181A1 (en) | 2001-04-13 | 2002-11-21 | Songxiang Wei | Sharing OpenGL applications using application based screen sampling |
US6828984B2 (en) | 2001-04-19 | 2004-12-07 | Sony Corporation | System and method for optimizing the processing of images |
US6919906B2 (en) * | 2001-05-08 | 2005-07-19 | Microsoft Corporation | Discontinuity edge overdraw |
US6697064B1 (en) | 2001-06-08 | 2004-02-24 | Nvidia Corporation | System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline |
US7162716B2 (en) | 2001-06-08 | 2007-01-09 | Nvidia Corporation | Software emulator for optimizing application-programmable vertex processing |
US6995765B2 (en) | 2001-07-13 | 2006-02-07 | Vicarious Visions, Inc. | System, method, and computer program product for optimization of a scene graph |
US7564460B2 (en) | 2001-07-16 | 2009-07-21 | Microsoft Corporation | Systems and methods for providing intermediate targets in a graphics system |
US7064766B2 (en) | 2001-10-18 | 2006-06-20 | Microsoft Corporation | Intelligent caching data structure for immediate mode graphics |
US7600222B2 (en) * | 2002-01-04 | 2009-10-06 | Microsoft Corporation | Systems and methods for managing drivers in a computing system |
US7234144B2 (en) | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
JP2003216943A (ja) | 2002-01-22 | 2003-07-31 | Toshiba Corp | 画像処理装置、この装置に用いられるコンパイラおよび画像処理方法 |
US7159212B2 (en) * | 2002-03-08 | 2007-01-02 | Electronic Arts Inc. | Systems and methods for implementing shader-driven compilation of rendering assets |
US7145570B2 (en) | 2002-03-11 | 2006-12-05 | Sun Microsystems, Inc. | Magnified texture-mapped pixel performance in a single-pixel pipeline |
US6906720B2 (en) | 2002-03-12 | 2005-06-14 | Sun Microsystems, Inc. | Multipurpose memory system for use in a graphics system |
US6891543B2 (en) | 2002-05-08 | 2005-05-10 | Intel Corporation | Method and system for optimally sharing memory between a host processor and graphics processor |
US6952206B1 (en) | 2002-08-12 | 2005-10-04 | Nvidia Corporation | Graphics application program interface system and method for accelerating graphics processing |
GB2392072B (en) | 2002-08-14 | 2005-10-19 | Autodesk Canada Inc | Generating Image Data |
DE10242087A1 (de) | 2002-09-11 | 2004-03-25 | Daimlerchrysler Ag | Bildverarbeitung auf für Vektorrechnung und Farbmischung optimierter Hardware |
GB0226292D0 (en) | 2002-11-12 | 2002-12-18 | Autodesk Canada Inc | Generating image data |
US7268785B1 (en) | 2002-12-19 | 2007-09-11 | Nvidia Corporation | System and method for interfacing graphics program modules |
US7928997B2 (en) | 2003-02-06 | 2011-04-19 | Nvidia Corporation | Digital image compositing using a programmable graphics processor |
US20050140672A1 (en) | 2003-02-18 | 2005-06-30 | Jeremy Hubbell | Shader editor and compiler |
US6911984B2 (en) | 2003-03-12 | 2005-06-28 | Nvidia Corporation | Desktop compositor using copy-on-write semantics |
US6911983B2 (en) | 2003-03-12 | 2005-06-28 | Nvidia Corporation | Double-buffering of pixel data using copy-on-write semantics |
US7530062B2 (en) | 2003-05-23 | 2009-05-05 | Microsoft Corporation | Optimizing compiler transforms for a high level shader language |
US8214588B2 (en) | 2003-11-05 | 2012-07-03 | International Business Machines Corporation | Parallel asynchronous order-preserving transaction processing |
US7075541B2 (en) | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
WO2005016926A1 (en) * | 2003-08-19 | 2005-02-24 | Warner-Lambert Company Llc | Pyrido [3,4-d] pyrimidine derivatives as matrix metalloproteinase-13 inhibitors |
US7293264B2 (en) | 2003-09-17 | 2007-11-06 | Nokia Corporation | Method and a device for abstracting instruction sequences with tail merging |
US7839419B2 (en) | 2003-10-23 | 2010-11-23 | Microsoft Corporation | Compositing desktop window manager |
US7817163B2 (en) | 2003-10-23 | 2010-10-19 | Microsoft Corporation | Dynamic window anatomy |
US7382378B2 (en) | 2003-10-30 | 2008-06-03 | Sensable Technologies, Inc. | Apparatus and methods for stenciling an image |
US8077778B2 (en) | 2003-10-31 | 2011-12-13 | Broadcom Corporation | Video display and decode utilizing off-chip processor and DRAM |
US7180525B1 (en) | 2003-11-25 | 2007-02-20 | Sun Microsystems, Inc. | Spatial dithering to overcome limitations in RGB color precision of data interfaces when using OEM graphics cards to do high-quality antialiasing |
US7219085B2 (en) | 2003-12-09 | 2007-05-15 | Microsoft Corporation | System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit |
US7015914B1 (en) * | 2003-12-10 | 2006-03-21 | Nvidia Corporation | Multiple data buffers for processing graphics data |
US7053904B1 (en) | 2003-12-15 | 2006-05-30 | Nvidia Corporation | Position conflict detection and avoidance in a programmable graphics processor |
US7463259B1 (en) | 2003-12-18 | 2008-12-09 | Nvidia Corporation | Subshader mechanism for programming language |
US7274370B2 (en) | 2003-12-18 | 2007-09-25 | Apple Inc. | Composite graphics rendered using multiple frame buffers |
US7554538B2 (en) | 2004-04-02 | 2009-06-30 | Nvidia Corporation | Video processing, such as for hidden surface reduction or removal |
US7248265B2 (en) | 2004-04-16 | 2007-07-24 | Apple Inc. | System and method for processing graphics operations with graphics processing unit |
-
2004
- 2004-04-16 US US10/826,762 patent/US8704837B2/en active Active
-
2005
- 2005-03-16 EP EP17178572.8A patent/EP3249522A1/en not_active Withdrawn
- 2005-03-16 EP EP06026985.9A patent/EP1775680B1/en active Active
- 2005-03-16 EP EP06027056A patent/EP1785850A3/en not_active Withdrawn
- 2005-03-16 JP JP2007508356A patent/JP2007533026A/ja active Pending
- 2005-03-16 EP EP06027057.6A patent/EP1775681B1/en not_active Not-in-force
- 2005-03-16 WO PCT/US2005/008804 patent/WO2005106652A1/en not_active Application Discontinuation
- 2005-03-16 CN CN2005800114618A patent/CN1942896B/zh not_active Expired - Fee Related
- 2005-03-16 EP EP06026984.2A patent/EP1777618B1/en not_active Not-in-force
- 2005-03-16 EP EP05725763.6A patent/EP1735701B1/en not_active Not-in-force
-
2007
- 2007-04-04 US US11/696,647 patent/US20070182747A1/en not_active Abandoned
-
2009
- 2009-12-11 JP JP2009281419A patent/JP5113143B2/ja active Active
- 2009-12-11 JP JP2009281420A patent/JP5043921B2/ja active Active
- 2009-12-11 JP JP2009281421A patent/JP5043922B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP1775681A3 (en) | 2007-06-13 |
EP1777618A3 (en) | 2007-06-20 |
EP1775681A2 (en) | 2007-04-18 |
CN1942896A (zh) | 2007-04-04 |
CN1942896B (zh) | 2010-05-26 |
JP2010113724A (ja) | 2010-05-20 |
EP1777618B1 (en) | 2017-05-03 |
EP1775681B1 (en) | 2017-09-27 |
EP3249522A1 (en) | 2017-11-29 |
EP1777618A2 (en) | 2007-04-25 |
WO2005106652A1 (en) | 2005-11-10 |
EP1775680B1 (en) | 2019-10-16 |
EP1775680A3 (en) | 2008-06-04 |
EP1785850A2 (en) | 2007-05-16 |
JP2010102721A (ja) | 2010-05-06 |
EP1775680A2 (en) | 2007-04-18 |
JP5043922B2 (ja) | 2012-10-10 |
US20050231502A1 (en) | 2005-10-20 |
JP5043921B2 (ja) | 2012-10-10 |
US8704837B2 (en) | 2014-04-22 |
EP1735701A1 (en) | 2006-12-27 |
EP1785850A3 (en) | 2007-06-13 |
JP2010102722A (ja) | 2010-05-06 |
US20070182747A1 (en) | 2007-08-09 |
JP5113143B2 (ja) | 2013-01-09 |
EP1735701B1 (en) | 2018-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5113143B2 (ja) | グラフィックオペレーションのための高レベルプログラムインターフェース | |
US10402934B2 (en) | System for optimizing graphics operations | |
US8044963B2 (en) | System for emulating graphics operations | |
US7788656B2 (en) | System for reducing the number of programs necessary to render an image | |
US8520021B2 (en) | System and method for processing graphics operations with graphics processing unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090203 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090507 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090514 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090603 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090610 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090701 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090811 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091211 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20100118 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20100212 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20100617 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100621 |