説明

画像データの記憶・検索技法

【課題】プリミティブおよびピクセルを処理する多様な仕方を許可する。
【解決手段】グラフィクス・パイプラインにおいて、ラスタ化段の途中または終了時に、クリップ後出力段がプリミティブを記憶し、ピクセルがメモリの一部分に記憶される。ラスタ化段の途中または終了時にプリミティブおよびピクセルが利用可能であることが、プリミティブおよびピクセルを処理する多様な仕方を許可する。

【発明の詳細な説明】
【技術分野】
【0001】
本稿に開示される主題は概括的には画像データを記憶および検索する技法に関する。
【背景技術】
【0002】
グラフィクス処理に対する要求は、コンピュータ・ゲーム、コンピュータ・アニメーションおよび医療撮像といった領域で明白である。グラフィクス・パイプラインがグラフィクスのレンダリングを受け持っている。数多くのグラフィクス・パイプライン構成が知られている。たとえば、一般的なレンダリング・パイプライン・アーキテクチャは非特許文献1および非特許文献2に記載されている。現代のパイプラインは三つのプログラム可能な段階をもつ。一つはバーテックス・データを処理する段階(たとえばバーテックス・シェーダー(vertex shader))、第二は幾何学的プリミティブを処理する段階(たとえば幾何シェーダー(geometry shader))、第三はピクセル・フラグメントを処理する段階(たとえば、フラグメントまたはピクセル・シェーダー(fragment or pixel shader))である。マイクロソフト〔登録商標〕DirectX 10は、幾何シェーダーおよび幾何ストリーム・アウト段を導入した。Direct3D 10システムの概観は非特許文献3で与えられている。DirectXは、入力装置、オーディオおよびビデオ/グラフィクスに関わるアプリケーション・プログラム・インターフェース(API: application program interface)群である。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Segal, M. and Akeley, K., “The OpenGL Graphics System: A Specification (Version 2.0)” (2004)
【非特許文献2】The Microsoft DirectX 9 Programmable Graphics Pipe-line, Microsoft Press (2003)
【非特許文献3】D. Blythe, “The Direct3D 10 System,” Microsoft Corporation (2006)
【非特許文献4】Gregory S. Johnson, William R. Mark, and Christopher A. Burns, “The Irregular Z-Buffer and its Application to Shadow Mapping,” The University of Texas at Austin, Department of Computer Sciences, Technical Report TR-04-09
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は従来技術の欠点を克服する。
【課題を解決するための手段】
【0005】
本発明の課題は請求項記載の手段によって解決される。
【0006】
本発明の実施形態は、限定ではなく例として、図面において例解されている。図面では、同様の参照符号は同様の要素を指す。
【図面の簡単な説明】
【0007】
【図1】ある実施形態に基づく、ブロック図形式での、グラフィクス処理パイプラインの一例を描いた図である。
【図2】ピクセル被覆マスクの従来式のピクセル・シェーダー処理と、さまざまな実施形態に基づくタイル内でのピクセル被覆マスクの処理との例を描いた図である。
【図3】単一のコアがタイルを処理するときのコア利用率と、単一タイルの処理を複数のコアに分散させる前およびあとのコア利用率の例を描いた図である。
【図4】プリミティブおよびピクセル被覆マスクのカスタマイズされたラスタ化処理の例を描いた図である。
【図5】ある実施形態に基づく、バッファリングされたモードにおける、プリミティブおよびピクセル被覆マスクを記憶する仕方の流れ図である。
【図6】ある実施形態に基づく、バッファリングされたモードにおける、プリミティブおよびピクセル被覆マスクを検索する仕方の流れ図である。
【発明を実施するための形態】
【0008】
本明細書を通じて「一つの実施形態」または「ある実施形態」への言及は、その実施形態との関連で記載される特定の機能、構造または特徴が本発明の少なくとも一つの実施形態に含まれるということを意味する。よって、本明細書の随所で「一つの実施形態では」または「ある実施形態では」といった句が現れることは、必ずしもこれらがみな同一の実施形態を指しているのではない。さらに、個別の機能、構造または特徴が一つまたは複数の実施形態において組み合わされてもよい。
【0009】
さまざまな実施形態は、グラフィクス・パイプラインにおけるラスタ化段の最中またはその後にプリミティブ属性およびピクセル被覆情報を記憶する仕方を提供する。ポストクリップ(post-clip)・ストリーム出力段は、プリミティブおよび該プリミティブに関係したピクセル被覆マスクを記憶するためにメモリ内のバッファの諸部分を用いる。タイルとして知られる画面の部分領域は、画面空間におけるピクセル・データの空間的にコヒーレントな集まりである。プリミティブはタイルごとに順序付けられ、任意的にはピクセル被覆マスクをもって、タイル境界にクリッピングされる。ピクセル被覆マスク(pixel coverage mask)は、ピクセルのプリミティブとの関係を同定する。たとえば、ピクセル被覆マスクは、あるピクセルがプリミティブ内にあるか、プリミティブ外にあるか、あるいはプリミティブのエッジ上にあるかを同定する。記憶されるプリミティブおよびピクセル被覆情報は、多様な仕方で読み出され、処理されることができる。たとえば、同じタイルに関係した複数のピクセル被覆マスクが、並列にまたはシーケンスで読み出されることができ、同じタイルに関係した複数のピクセル被覆マスクが一緒に処理されることができる。同じタイルに関連する複数のピクセル被覆マスクに対してピクセル処理が実行されることができる。これにより、可能な場合には処理されたデータがピクセル被覆マスクのために再利用できる。
【0010】
DirectX 10は、幾何シェーダーにおいてクリップされた三角形データを生成することを規定している。DirectX 10は、ピクセル・シェーダーにおいてはスカラー・モードで、被覆されたピクセル被覆マスクを露わにするのみである。これに対し、さまざまな実施形態は、プリミティブごとのピクセル被覆マスクを、単一命令複数データ(SIMD: Single Instruction, Multiple Data)ベクトル化コードによってまたは複数のコアもしくはスレッド上でいくつかのタスクを並列に実行することによって、諸タイル全体を並列に処理するために利用可能にする。
【0011】
図1は、ある実施形態に基づく、ブロック図形式での、グラフィクス処理パイプライン100の例を描いている。さまざまな実施形態において、パイプライン100は、少なくともマイクロソフトのDirectX 10またはOpenGL 2.1に基づいてプログラム可能である。さまざまな実施形態において、すべての段階は、一つまたは複数のアプリケーション・プログラム・インターフェース(API)を使って構成されることができる。描画プリミティブ(たとえば、三角形、長方形、正方形、直線、点または少なくとも一つのバーテックスをもつ形)がこのパイプラインの上部から流れ込み、コンピュータ画面上での描画のために画面空間のピクセルに変換およびラスタ化される。
【0012】
入力集合器(input-assembler)段102は、8個までのバーテックス・バッファ入力ストリームからバーテックス・データを集める。他の数のバーテックス・バッファ入力ストリームを集めることもできる。さまざまな実施形態において、入力集合器段102は、「インスタンス生成(instancing)」と呼ばれるプロセスをもサポートしていてもよい。インスタンス生成では、入力集合器段102は一回の描画コールだけでオブジェクトを何回か複製する。
【0013】
バーテックス・シェーダー(VS)段104は、バーテックスをオブジェクト空間からクリップ空間に変換する。VS段104は、単一のバーテックスを読んで単一の変換されたバーテックスを出力として生じる。
【0014】
幾何シェーダー段106は、単一プリミティブのバーテックスを受け取り、ゼロ個以上のプリミティブのバーテックスを生成する。幾何シェーダー段106は、プリミティブおよび線を、バーテックスの接続されたストリップとして出力する。場合によっては、幾何シェーダー段106は、データ増幅と呼ばれるプロセスにおいて、前記バーテックス・シェーダー段からの各バーテックスから1024個までのバーテックスを放出する。また、場合によっては、幾何シェーダー段106は、バーテックス・シェーダー段104から一群のバーテックスを受け、それらを組み合わせてより少数のバーテックスを放出する。
【0015】
ストリーム出力段108は、幾何シェーダー段106からの幾何データを直接、メモリ150内のフレーム・バッファの一部分に転送する。データがストリーム出力段108からフレーム・バッファに移ったのち、データはさらなる処理のためにパイプライン中の任意の点に戻ることができる。たとえば、ストリーム出力段108は、幾何シェーダー段106によって出力されたバーテックス情報の部分集合を、シーケンス順でメモリ150内の出力バッファにコピーしてもよい。
【0016】
ラスタ化段110は、クリッピング(clipping)、選別(culling)、フラグメント生成(fragment generation)、切り取り(scissoring)、透視分割(perspective dividing)、ビューポート変換(viewport transformation)、プリミティブ・セットアップ(primitive setup)および奥行きオフセット(depth offset)のような動作を実行する。さらに、ラスタ化段110は:並列処理のために画像空間プリミティブをタイル(たとえば画面の部分領域)と関連付ける;プリミティブをタイル(または単一タイルの場合は画面ビューポート全体)の範囲にクリッピングする;各タイル内においてプリミティブが接触するピクセルのリストであるピクセル被覆マスクを生成する;および/または接触する各ピクセルについて表面および材質属性の補間された値を生成する、のうちの任意のものまたは全部を実行できる。
【0017】
ラスタ化段110は、少なくとも一つの出力ストリームを与える。該出力ストリームは少なくとも二つのサブストリームを含む:一つはプリミティブについてのサブストリーム、一つはピクセル被覆マスクについてのサブストリームである。これらのサブストリームは、異なるレートで出力されることができる。ストリーミングされたデータは、利用可能になるとすぐに各ラスタ化されたタイルについて独立して消費されることができる。これは、他のタイルについてのストリーム・データがまだグラフィクス・パイプラインにおいて生成中の間に作業が異なるスレッドに割り当てられて並列に処理されることができるマルチスレッド環境において有利である。
【0018】
ピクセルのパイプライン順序処理(pipeline ordered processing)に関連して、クリップ後ストリーム出力段112が、パイプライン中でラスタ化段110のあと、ピクセル・シェーディング段114の前に位置される。クリップ後ストリーム出力段112は、プリミティブ・ストリームを、プリミティブ・メモリ領域152の一部分に記憶し、ピクセル被覆マスクをタイル・メモリ領域154の一部分に記憶する。場合によっては、ラスタ化段110によって生成されるピクセル被覆マスクは、メモリ領域154内に記憶されない。そのような場合、メモリ領域154は割り当てられない。
【0019】
さまざまな実施形態において、プリミティブ・ストリームは、クリッピングされた画面空間プリミティブを含み、描画順になっているが、必ずしもタイルごとにグループ化されてはいない。プリミティブ・ストリームは、カスタム補間のために、プリミティブの画面空間バーテックス位置およびバーテックスごとの奥行き情報を含む。プリミティブについての他の、バーテックスごとの属性は、テクスチャ座標、色、寿命、輝度(radiance)、照度(irradiance)および奥行きを含み、メモリ・フットプリント、機能およびパフォーマンスについてのアプリケーション要求に依存して、そうした属性もストリームに含められることができる。
【0020】
さまざまな実施形態において、ピクセル被覆ストリームはプリミティブを参照し、クリッピングされたプリミティブごとにグループ化される。ピクセル被覆マスクは、どの画面ピクセルが対応するプリミティブによって接触されるかを定義する。いくつかの実施形態では、このピクセル被覆マスク・ストリームは記憶されない。その代わり、カスタムのアプリケーション側被覆マスク生成コードが、ピクセル被覆マスクを生成する。ピクセル被覆マスクを生成するアプリケーションは、プリミティブのバーテックス位置を知っており、そのバーテックス位置に基づいてピクセルがプリミティブと関連するかどうかを判定する。そのようなアプリケーションは、メモリ150内のバッファを割り当て、メモリ内の割り当てられた領域にピクセル被覆マスクを記憶することができる。
【0021】
さまざまな実施形態において、クリップ後ストリーム出力段112は、プリミティブ・データおよび任意的にピクセル被覆データを可変サイズのメモリ・バッファに、ストリーミング・モードまたはバッファリングされるモードで、それらのプリミティブおよびピクセル被覆ストリームの描画順のシーケンシャルな消費を可能にするリンク・リスト表現(linked-list representation)をもって記憶する。ピクセル被覆マスクが生成される場合、被覆ストリーム・データ構造は、プリミティブ・ストリーム内のその関連付けられたプリミティブのデータ構造へのポインタを含む。
【0022】
ストリーミング・モードでは、プリミティブ・データは、タイルごとのコールバック関数においてアプリケーションによって処理される。ストリーミング・モードでは、ストリームの一部のみ(たとえばタイルのサイズ)がアプリケーションにとってすぐ利用可能である。ストリーミング・モードでは、プリミティブおよびピクセル被覆データは、処理後、上書きされることができる。アプリケーションがストリームのそのタイル・サイズの部分の処理を終えたのち、ストリームのその部分は上書きされるべく利用可能である。このモードは、メモリ消費がより少なく、マルチスレッド環境において準備ができるとすぐにデータを処理することを可能にするが、複数のタイルを横断しての作業分担(work sharing)は可能にしない。
【0023】
バッファリングされるモードでは、画面全体についてのデータがバッファ内に記憶され、ストリーム全体(たとえば全部のタイルまたは特定の数もしくは領域のタイル)が生成されたのちにアプリケーションによってアクセス可能となる。したがって、バッファリング・モードでは、フレームの全タイルのピクセル被覆マスクがタイル・メモリ領域154に記憶される。タイル・メモリ領域154はクリップ後出力段112によって埋められ、あるフレームの諸タイルのピクセル被覆マスクは、フレームの全タイルのピクセル被覆マスクが記憶されているまたはタイル・メモリ領域154が充填されている場合に、処理のために利用可能である。すると、一つまたは複数のアプリケーションはその後、全データをいっぺんに処理できる。
【0024】
ストリーミング・モードおよびバッファリング・モードのいずれでも、データは、グラフィクス・パイプライン上で管理されているメモリ資源にストリーム・アウトされ、直接プログラム可能ではなく、アプリケーションにとって直接アクセス可能ではない。データは、タイルごとのコールバック関数においてアプリケーション側で処理されることができる。データは、その後のレンダリング・パスにおいて、アプリケーション側の介在なしにパイプライン中にストリームし戻される、あるいはアプリケーションによって非同期的に読まれることができるようステージング(staging)資源にコピーされることができる。グラフィクス・パイプラインは管理されるストリーム・メモリ資源依存性について知っているので、グラフィクス・パイプラインはいかなる仕方でデータ・ストリームの生成をスケジュールするのも自由である。メモリ資源依存性は、ストリーム・アウト・データがその後のレンダリング・パスにおいて使用される場合、あるいはデータがアプリケーションによる処理が終わったあと破棄されることができる場合に起こりうる。バッファリング・モードでは、アプリケーションは、資源上へのロックまたは非同期コピーのいずれかを要求することによってデータにアクセスできる。
【0025】
ピクセル・シェーダー段114は、各単一ピクセル・フラグメントの属性を読み、色および奥行き値をもつ出力フラグメントを生成する。
【0026】
出力併合段116は、ピクセル・シェーダー段114からのフラグメントに対して、ステンシルおよび奥行き試験を実行する。場合によっては、出力併合段116はレンダー・ターゲット・ブレンディングを実行する。
【0027】
メモリ150は:これに限られないがランダム・アクセス・メモリ(RAM)、動的ランダム・アクセス・メモリ(DRAM)、静的RAM(SRAM)といった揮発性メモリ・デバイスまたは半導体ベースのメモリもしくは磁気メモリの他の任意の型の任意の組み合わせとして実装できる。
【0028】
図2は、従来式のピクセル・シェーダーのピクセル処理およびさまざまな実施形態に基づくタイル内のピクセルの処理の例を描いている。既知のグラフィクス・パイプラインにおける従来式のピクセル・シェーダーの処理については、プリミティブからのピクセルは、処理のために複数のピクセル・シェーダーに分配される。しかしながら、さまざまな実施形態では、同じタイルに関係するピクセルが処理のために利用可能になる。同じタイルに関係するピクセルの処理は、従来式のピクセル・シェーダーによるピクセルの処理に対していくつかの利点を提供しうるが、そのような利点はどの実施形態についても必須の特徴ではない。第一に、単独プリミティブに共通の多くの計算は、事前計算して、タイル内の全ピクセルについて再利用できる。そのような計算の例は、三角形内試験および早期アウト戦略のための補間行列の計算である。第二に、プリミティブごとの処理は、隣接ピクセル・データを通信する柔軟性を提供し、それによりアプリケーション側でのブルーム(bloom)および奥行き(depth-of-field)といった画面空間効果を可能にする。
【0029】
既知のグラフィクス・パイプラインでは、タイル処理は、幾何シェーダーまたはピクセル・シェーダー内の単一コアに制約される。しかしながら、さまざまな実施形態は、複数のコアがプリミティブおよびタイルのピクセルを並列に処理することを許容する。さまざまな実施形態では、ラスタ化後のプリミティブおよびピクセルの利用可能性が、ピクチャーの部分領域の処理のようなプリミティブのタイル化された処理を許容する。さらに、ラスタ化後のプリミティブおよびピクセルの利用可能性は、アプリケーション側で作業を並列化して再分配できるようにする。たとえば、複数コアがプリミティブおよびピクセルを並列に処理できる。結果として、ラスタ化後のプリミティブおよびピクセルの利用可能性は、従来式のグラフィクス・パイプラインに比べ、かなりのパフォーマンス上の改善を可能にする。
【0030】
タイル順の(tile-ordered)アクセス・パターンは、画面空間における空間的コヒーレンスをもつ傾向がある多くのグラフィクス処理技法のための著しいパフォーマンス上の利点を可能にする。そのような順序付けは、グラフィクス・キャッシュの最適な使用を可能にし、キャッシュ・ミスフェッチ・パフォーマンス・ペナルティを回避する。
【0031】
図3は、単一のコアが諸タイルを処理するときのコア利用率および単一タイルの処理の複数コアへの分配後のコア利用率の例を描いている。二つの図は、時間ごとのベクトル利用率(vector utilization)を表している。グラフ302は、各タイルについての作業が単一コアに制約される場合を示している。いくつかのコアはすぐアイドルになる一方、他のコアは作業集約的なタイルについてまだ処理を続けている。グラフ304はそれらのタイルの作業が複数コアを横断して再分配されて、時間がたってもずっとよいコア利用率を達成していることを示している。
【0032】
さまざまな実施形態において、ラスタ化後のプリミティブおよびピクセルの利用可能性は、プリミティブおよびピクセル被覆マスクのカスタム化された処理を可能にする。画面の一部がレンダリングされるたびにコールバック・ルーチンが呼ばれることができる。例示的なコールバック・ルーチンは、タイル・レンダリング動作である。ストリーミング・モードでは、新しいグラフィクス機能および効果は、コールバック・ルーチンに、プリミティブおよびピクセルのカスタム化されたラスタ化処理を実装するコードを追加することによって追加できる。
【0033】
図4は、プリミティブおよびピクセルのカスタム化されたラスタ化処理の例を描いている。たとえば、カスタム化されたラスタ化処理は不規則ラスタ化を含むことができる。不規則ラスタ化は、画像をレンダリングする際に、2Dでないグリッド・データ構造を利用するラスタ化を含む。たとえば、不規則なラスタ化およびシャドーイング(shadowing)アプリケーションについて、アプリケーションはカスタム補間技法を実装できる。プリミティブ固有の表面および材質属性が画面バーテックスごとに(per-screen-vertex)与えられ、プリミティブ・バーテックス値が使用のために利用可能だからである。カスタム補間は、プリミティブ・バーテックス値に基づいて、中心を外れたピクセル位置において、表面属性値を決定することを含みうる。このプリミティブ・バーテックス・データは、従来式のピクセル・シェーダーにおいては利用可能でない。従来式のピクセル・シェーダーはピクセルの中心において補間された値を与えられるだけだからである。カスタム補間は、ストリーム・アウトを使うアプリケーションによってなされ、よってそれらの結果は、グラフィクス・パイプラインではなく、前記アプリケーションによって使用されうる。
【0034】
第二の例として、アプリケーションは、ラスタ化器における通常の被覆マスク計算をやめ、その代わりにカスタム被覆マスクを計算することを選ぶことができる。被覆マスクは、どのピクセルがプリミティブによって触れられるかを定義するマスクである。たとえば、設計者は、ピクセルがプリミティブに接触するかどうかを判定するためにどんな規則を適用するかを決定しうる。たとえば、カスタム被覆マスクは、ピクセルがプリミティブにかろうじて接触するがピクセルの内部ではない場合に、プリミティブがピクセルに接触することを許容してもよい。アプリケーションは、そのようなカスタム被覆マスクを使うことができる。
【0035】
不規則Zバッファが非特許文献4の論文に記載されている。その論文の図3では、黄色のドットが、色および奥行きといったプリミティブの属性が計算される、ピクセル内の位置を示している。この計算は「補間」と呼ばれる。この論文の図3を参照すると、古典的なグラフィクス・パイプラインでは、奥行きはピクセル中心において計算される。対照的に、不規則Zバッファについて、奥行き(「Z」としても知られる)は任意の位置で決定される。さまざまな実施形態において、プリミティブおよびピクセル被覆マスクの記憶は、アプリケーションが任意の位置で補間することを許容し、これは、不規則Zバッファの実装において使用される。
【0036】
図5は、ある実施形態に基づく、バッファリング・モードにおいてプリミティブおよびピクセルを記憶する仕方を描いたプロセス500の流れ図を描いている。図5のプロセスは、プロセッサによって実行されるアプリケーションによって実行されることができる。ブロック502は、タイルに関連付けられたピクセル被覆マスクを記憶するためのメモリ中のタイル・バッファと、プリミティブを記憶するためのメモリ中のプリミティブ・バッファとを割り当てることを含む。ブロック502は、アプリケーションがカスタムのピクセル被覆マスクを生成する場合には実行される必要はない。たとえば、タイルに関連付けられたピクセル被覆マスクを記憶するためにメモリ中にタイル・バッファを割り当てることは、アプリケーションがカスタムのピクセル被覆マスクを生成する場合には実行されなくてもよい。アプリケーションがカスタムのピクセル被覆マスクを生成する場合には、アプリケーションはカスタムのピクセル被覆マスクを記憶するためのバッファを割り当てうる。たとえば、タイルは4×4のピクセル領域でありうる。たとえば、下記の擬似コードにおいて、命令SetFrontEndSOTargetsがバッファを割り当てる。
【0037】
ブロック504は、ラスタ化器からのプリミティブ属性をプリミティブ・バッファに記憶し、ラスタ化器からのプリミティブに関連付けられたピクセル被覆マスクをタイル・バッファに記憶するためのコールを発することを含む。ラスタ化器からのプリミティブに関連付けられたピクセル被覆マスクをタイル・バッファに記憶するためのコールを発することは、アプリケーションがカスタムのピクセル被覆マスクを生成する場合には、実行されなくてもよい。
【0038】
ブロック506は、ピクセル被覆マスクおよびプリミティブ属性の割り当てられたバッファへの記憶を無効にすることを含む。たとえば、下記の擬似コードにおいて、命令FrontEndSOSetTargetsが、割り当てられたバッファへの記憶を無効にする。ピクセル被覆マスクの割り当てられたバッファへの記憶を無効にすることは、アプリケーションがカスタムのピクセル被覆マスクを生成する場合には実行されなくてもよい。
【0039】
図6は、ある実施形態に基づく、プリミティブ属性およびピクセル被覆マスクにアクセスする仕方を描いたプロセス600の流れ図を描いている。プロセス600は、ホスト側アプリケーションによって実行できる。ブロック602は、プリミティブ属性およびタイル・バッファの特性を決定することを含む。たとえば、ブロック602は、各バッファに関連付けられたオーバーフロー・フラグを取得し、タイル・バッファに記憶されたタイルの数を決定することを含みうる。下記の擬似コードでは、命令Query_GetDataがオーバーフロー・フラグを取得する。
【0040】
ブロック604は、タイル・バッファおよびプリミティブ・バッファのオーバーフローが起こるかどうかを判定することを含む。たとえば、ブロック604は、オーバーフロー・フラグに基づいてそれらのバッファのオーバーフローを識別することを含みうる。オーバーフローが検出された場合、プロセスは終了できる。さまざまな実施形態において、プロセスは、バッファのオーバーフローが起こらないよう、タイルおよびプリミティブ・バッファ内の追加的メモリを求めてもよい。該追加的メモリは、オーバーフローしたバッファについて割り当てられたメモリよりも多くてもよい。たとえば、追加的メモリは、タイル・バッファ内に記憶されるよりも多くのタイルの記憶およびプリミティブ・バッファ内に記憶されているよりも多くのプリミティブの記憶を許容してもよい。たとえば、下記の擬似コードでは、命令SetFrontEndSOTargetsがバッファのサイズを割り当てる。したがって、命令SetFrontEndSOTargetsの次の実行では、バッファのサイズは変更されることができる。
【0041】
ブロック606は、プリミティブ属性および関連するピクセル被覆マスクを記憶するバッファまたはバッファの一部のメモリ・ロックを要求することを含む。メモリ・ロックは、他のプロセスを、対象バッファ内のデータを上書きすることから排除することに関わりうる。下記の擬似コードでは、命令ViewLockはタイル・バッファの一部のロックを引き起こす。
【0042】
ブロック608は、記憶されているプリミティブ属性および関連付けられたピクセル被覆マスクを取得することを含む。取得されたプリミティブ・データは、いかなる仕方で処理するために解放されることもできる。たとえば、図4との関連で述べたプロセスがプリミティブおよびピクセル・データを処理できる。
【0043】
ブロック610は、ロックされたバッファ部分のメモリ・ロックを解放することを含む。下記の擬似コードでは、命令ViewUnlockはバッファのロックされた部分を解放して、バッファが他のプロセスから読まれ、他のプロセスによって書き込まれることができるようにする。
【実施例】
【0044】
プリミティブおよびピクセルを記憶し(図5)、記憶されたプリミティブおよびピクセルにアクセスする(図6)方法についての擬似コードを下記に与えておく。
【0045】
【表1】

【0046】
【表2】

【0047】
【表3】

【0048】
【表4】

本発明の諸実施形態は:マザーボードを使って相互接続された一つまたは複数のマイクロチップまたは集積回路、結線論理、メモリ・デバイスによって記憶されマイクロプロセッサによって実行されるソフトウェア、ファームウェア、特定用途向け集積回路(ASIC)および/または現場プログラム可能なゲートアレイ(FPGA)のうちの任意のものまたは組み合わせとして実装されうる。用語「論理(logic)」は、例として、ソフトウェアまたはハードウェアおよび/またはソフトウェアとハードウェアの組み合わせを含みうる。
【0049】
本稿に記載されたグラフィクスおよび/またはビデオ処理技法は、さまざまなハードウェア・アーキテクチャにおいて実装されうる。たとえば、グラフィクスおよび/またはビデオ機能性はチップセット内に統合されてもよい。あるいはまた、離散的なグラフィクスおよび/またはビデオ・プロセッサが使用されてもよい。さらにもう一つの実施形態としては、グラフィクスおよび/またはビデオ機能は、マルチコア・プロセッサを含む汎用プロセッサによって実装されてもよい。さらなる実施形態では、それらの機能は、ポータブル・モバイル・コンピュータまたは携帯電話のような、グラフィクス・パイプラインによって処理された画像もしくはビデオを表示する表示装置をもつ消費者電子装置において実装されてもよい。
【0050】
本発明の諸実施形態は、たとえば、コンピュータ、コンピュータのネットワークまたは他の電子装置のような一つまたは複数の機械によって実行されたときに該一つまたは複数の機械に本発明の実施形態に基づく動作を実行させうる機械実行可能命令が格納されている一つまたは複数の機械可読媒体を含みうるコンピュータ・プログラム・プロダクトとして提供されてもよい。機械可読媒体は、これに限られないが、フロッピー(登録商標)ディスケット、光ディスク、CD-ROM(コンパクトディスクを利用した読み出し専用メモリ)および光磁気ディスク、ROM(読み出し専用メモリ)、RAM(ランダム・アクセス・メモリ)、EPROM(消去可能なプログラム可能型読み出し専用メモリ)、EEPROM(電気的に消去可能なプログラム可能型読み出し専用メモリ)、磁気もしくは光カード、フラッシュ・メモリまたは機械実行可能命令を記憶するのに好適な他の型の媒体/機械可読媒体を含みうる。
【0051】
図面および以上の記述は、本発明の例を与えるものである。いくつかの別個の機能要素として描かれていても、当業者はそのような要素の一つまたは複数が単一の機能要素に組み合わされてもよいことを認識するであろう。あるいはまた、ある種の要素が複数の機能要素に分割されてもよい。一つの実施形態からの要素が別の実施形態に加えられてもよい。たとえば、本稿に記載されるプロセスの順序は変更されてもよく、本稿に記載される仕方に限定されるものではない。さらに、いかなる流れ図の動作も、図示した順序に実装される必要はないし、すべての工程が必ずしも実行される必要はない。また、他の工程に依存しないような工程は、該他の工程と並行して実行されてもよい。ただし、本発明の範囲は、これらの個別的な例によって決して限定されるものではない。本明細書において明示的に与えられているか否かによらず、構造、大きさおよび材料の使用における相違のような数多くの変形が可能である。本発明の範囲は、少なくとも、付属の請求項によって与えられるのと同じ広さをもつものである。
【符号の説明】
【0052】
102 入力集合段
104 バーテックス・シェーダー段
106 幾何シェーダー段
108 ストリーム出力段
110 ラスタ化段
112 クリップ後ストリーム出力段
114 ピクセル・シェーダー段
116 出力マージャー段
150 メモリ資源
152 プリミティブ・メモリ領域
154 タイル・メモリ領域
502 タイルに関連付けられたピクセル被覆マスクを記憶するためのメモリ中のタイル・バッファと、プリミティブ属性を記憶するためのメモリ中のプリミティブ・バッファとを割り当てる
504 プリミティブをプリミティブ・メモリに記憶し、プリミティブ属性に関連付けられたピクセル被覆マスクをタイル・バッファに記憶するためのコールを発する
506 タイル・バッファおよびプリミティブ・バッファへの記憶を無効にする
602 タイル・バッファおよびプリミティブ・バッファの特性を決定
604 タイル・バッファおよびプリミティブ・バッファのオーバーフロー?
606 プリミティブ属性および関連するピクセル被覆マスクを記憶するバッファのロックを要求
608 記憶されているプリミティブ属性および関連付けられたピクセル被覆マスクを取得
610 プリミティブ属性および関連するピクセル被覆マスクを記憶するバッファのアンロックを要求

【特許請求の範囲】
【請求項1】
プリミティブ属性を記憶するためにメモリ内の第一のバッファの部分を割り当てる段階と;
前記第一のバッファの部分にラスタ化器からのプリミティブ属性を記憶することを要求する段階と;
グラフィクス・パイプラインから独立なアプリケーションによる前記プリミティブ属性へのアクセスを許可する段階とを含む、
コンピュータによって実装される方法。
【請求項2】
前記プリミティブ属性が画面空間バーテックス位置、バーテックスごとの奥行き情報、クリッピングされたタイル境界の識別情報および描画順のうちの一つまたは複数を含む、請求項1記載の方法。
【請求項3】
前記プリミティブ属性が、テクスチャ座標、色、寿命、輝度および照度のうちの少なくとも一つから選択されるバーテックスごとの属性を含む、請求項1記載の方法。
【請求項4】
請求項1記載の方法であって、さらに:
前記ラスタ化器からのプリミティブ属性に関連付けられたピクセル被覆マスクの受領を要求する段階と;
前記プリミティブ属性に関連付けられたピクセル被覆マスクを記憶するためにメモリ内の第二のバッファの部分を割り当てる段階と;
前記第二のバッファの前記部分にピクセル被覆マスクを記憶することを要求する段階とを含み、記憶されるピクセル被覆マスクの少なくとも一つは、少なくとも一つのピクセルとプリミティブとの関係を同定する、
方法。
【請求項5】
請求項1記載の方法であって、さらに:
プリミティブ属性へのアクセスを許可する段階と、
アプリケーションが、バーテックス位置および奥行きを含む選択されたプリミティブ属性に基づいてピクセル被覆マスクを生成することを許可する段階であって、前記ピクセル被覆マスクはピクセルがプリミティブ内にあるか、プリミティブ外にあるか、またはプリミティブのエッジ上にあるかを同定する、段階とを含む、
方法。
【請求項6】
請求項1記載の方法であって、さらに:
複数のコアによる並列処理のために諸ピクセル被覆マスクの諸タイルへのアクセスを許可する段階をさらに含む、
方法。
【請求項7】
請求項1記載の方法であって、さらに:
色、奥行きおよび座標のうちから選択されるプリミティブ・バーテックス属性に部分的に基づいて、アプリケーションが、ピクセルの色および奥行きを、そのピクセルの中心から外れた位置において補間することを許可する段階を含む、
方法。
【請求項8】
メモリと;
少なくともラスタ化器およびクリップ後ストリーム出力段を有するグラフィクス・パイプラインと;
プロセッサ実行アプリケーションであって:
前記ラスタ化器からのプリミティブ属性を記憶するために前記メモリ内の第一のバッファの部分を割り当て、
前記第一のバッファの部分に前記プリミティブ属性を記憶することを前記クリップ後ストリーム出力段に要求し、
第二のプロセッサ実行アプリケーションによる前記プリミティブ属性へのアクセスを許可する、プロセッサ実行アプリケーションとを有する、
装置。
【請求項9】
前記プリミティブ属性が画面空間バーテックス位置、バーテックスごとの奥行き情報、クリッピングされたタイル境界の識別情報および描画順のうちの一つまたは複数を含む、請求項8記載の装置。
【請求項10】
前記プリミティブ属性が、テクスチャ座標、色、寿命、輝度および照度のうちの少なくとも一つから選択されるバーテックスごとの属性を含む、請求項8記載の装置。
【請求項11】
請求項8記載の装置であって、前記第二のアプリケーションが:
前記ラスタ化器からのプリミティブ属性に関連付けられたピクセル被覆マスクの受領を要求し、
前記プリミティブ属性に関連付けられたピクセル被覆マスクを記憶するためにメモリ内の第二のバッファの部分を割り当て、
前記第二のバッファの前記部分にピクセル被覆マスクを記憶することを要求し、ピクセル被覆マスクは、少なくとも一つのピクセルとプリミティブとの関係を同定する、
装置。
【請求項12】
請求項8記載の装置であって、前記第二のアプリケーションが:
バーテックス位置および奥行きを含む選択されたプリミティブ属性に基づいてピクセル被覆マスクを生成する段階であって、前記ピクセル被覆マスクはピクセルがプリミティブ内にあるか、プリミティブ外にあるか、またはプリミティブのエッジ上にあるかを同定する、段階;
複数のコアによる並列処理のために諸ピクセル被覆マスクを割り当てる段階;および
色、奥行きおよび座標のうちから選択されるプリミティブ属性に部分的に基づいて、ピクセルの色および奥行きを、そのピクセルの中心から外れた位置において補間する段階のうちの一つまたは複数の段階を実行する、
装置。
【請求項13】
ディスプレイおよびコンピュータ・システムを有するシステムであって、前記コンピュータ・システムは:
前記ディスプレイによるレンダリングのために画像またはビデオを処理することのできるグラフィクス・パイプラインであって、少なくともラスタ化器およびクリップ後ストリーム出力段を有するグラフィクス・パイプラインと;
ロジックとを有し、前記ロジックは:
前記ラスタ化器からのプリミティブ属性を記憶するためにメモリ内の第一のバッファの部分を割り当て、
前記第一のバッファの部分に前記プリミティブ属性を記憶することを前記出力段に要求する、
システム。
【請求項14】
前記プリミティブ属性が画面空間バーテックス位置およびバーテックスごとの奥行き情報を含む、請求項13記載のシステム。
【請求項15】
記憶された前記プリミティブ属性が、テクスチャ座標、色、寿命、輝度および照度のうちの少なくとも一つから選択されるバーテックスごとの属性を含む、請求項13記載のシステム。
【請求項16】
請求項13記載のシステムであって、さらに:
バーテックス位置および奥行きを含む選択されたプリミティブ属性に基づいてピクセル被覆マスクを生成する段階ならびに
複数のコアによる並列処理のために諸ピクセル被覆マスクを割り当てる段階のうちの少なくとも一つの段階を実行するロジックを有する、
システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−44143(P2011−44143A)
【公開日】平成23年3月3日(2011.3.3)
【国際特許分類】
【出願番号】特願2010−182881(P2010−182881)
【出願日】平成22年8月18日(2010.8.18)
【出願人】(593096712)インテル コーポレイション (931)
【Fターム(参考)】