JP2004348169A - グラフィック・システムにおけるサンプル密度および/またはいくつかのレンダリング・パスの動的な調整 - Google Patents
グラフィック・システムにおけるサンプル密度および/またはいくつかのレンダリング・パスの動的な調整 Download PDFInfo
- Publication number
- JP2004348169A JP2004348169A JP2003066615A JP2003066615A JP2004348169A JP 2004348169 A JP2004348169 A JP 2004348169A JP 2003066615 A JP2003066615 A JP 2003066615A JP 2003066615 A JP2003066615 A JP 2003066615A JP 2004348169 A JP2004348169 A JP 2004348169A
- Authority
- JP
- Japan
- Prior art keywords
- sample
- buffer
- graphics system
- frame buffer
- samples
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General 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)
- Controls And Circuits For Display Device (AREA)
- Image Input (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
Abstract
【課題】ウィンドウイング環境でより効果的に動作できるグラフィカル・コンピューティング・システムと対応する方法を提供すること。
【解決手段】本システムは、ハードウェア・アクセラレータ(HA)とフレーム・バッファ(FB)を含む。FBは、サンプル記憶域とダブル・バッファされた表示領域を含む。HAは、(a)プリミティブのストリームをサンプルにレンダリングし、(b)サンプルをサンプル記憶域に格納し、(c)ピクセルを生成するためにプログラム可能サンプル密度に基づいてサンプル記憶域からサンプルを読み取ってフィルタリングし、(d)表示領域の第1のバッファにピクセルを格納する。ハードウェア・アクセラレータは、第1のバッファの制御を出力プロセスに渡す前にアニメーションのフレームをレンダリングするために、1つまたは複数の対応するプリミティブのストリーム上で(a)、(b)、(c)、(d)を1回または複数回実行する。さらに、ホスト・コンピュータは、ウィンドウ・サイズの変化に応答してHAの達成可能最大サンプル密度DMAXを算出し、それに応じてHAを更新する。
【選択図】 図1A
【解決手段】本システムは、ハードウェア・アクセラレータ(HA)とフレーム・バッファ(FB)を含む。FBは、サンプル記憶域とダブル・バッファされた表示領域を含む。HAは、(a)プリミティブのストリームをサンプルにレンダリングし、(b)サンプルをサンプル記憶域に格納し、(c)ピクセルを生成するためにプログラム可能サンプル密度に基づいてサンプル記憶域からサンプルを読み取ってフィルタリングし、(d)表示領域の第1のバッファにピクセルを格納する。ハードウェア・アクセラレータは、第1のバッファの制御を出力プロセスに渡す前にアニメーションのフレームをレンダリングするために、1つまたは複数の対応するプリミティブのストリーム上で(a)、(b)、(c)、(d)を1回または複数回実行する。さらに、ホスト・コンピュータは、ウィンドウ・サイズの変化に応答してHAの達成可能最大サンプル密度DMAXを算出し、それに応じてHAを更新する。
【選択図】 図1A
Description
【0001】
【発明の属する技術分野】
本発明は、一般にコンピュータ・グラフィックスの分野に関し、より詳細には、最適なスーパーサンプル密度を達成するためにサンプル記憶域を動的に再割当てするように構成された、かつ/またはターゲットとなるイメージ品質を達成するためにいくつかのレンダリング・パスを動的に調整するように構成された、グラフィカル・コンピューティング・システムに関する。
【0002】
【従来の技術】
グラフィカル・コンピューティング・システムはスーパーサンプリングを実施することが可能であり、すなわちピクセル解像度よりも高いサンプルを生成することが可能であり、ピクセルを生成するためにサンプルをフィルタリングすることが可能である。最終的なイメージ品質は、サンプル密度(すなわち、単位ピクセル領域あたりで生成されるサンプル数)にある程度依存する。さらに、グラフィカル・コンピューティング・システムは、ユーザが画面上のウィンドウをサイズ変更できるウィンドウイング環境で動作するように構成可能である。ただし、多くのグラフィカル・コンピューティング・システムは、サンプル密度またはレンダリング・パスの数をウィンドウ・サイズの変化に応答して調整できる方法で構成されていない。
【0003】
【発明が解決しようとする課題】
ウィンドウイング環境でより効果的に動作できるグラフィカル・コンピューティング・システムおよび対応する方法の必要性がある。具体的に言えば、ウィンドウ・サイズの変化に応答してサンプル密度および/またはレンダリング・パスの数を動的に調整できるグラフィカル・コンピューティング・システムおよび対応する制御方法の必要性である。
【0004】
【課題を解決するための手段】
様々な実施態様では、グラフィックス・システムがフレーム・バッファおよびハードウェア・アクセラレータを含む。フレーム・バッファは、サンプル・バッファおよびダブル・バッファされた表示域を含むことができる。ハードウェア・アクセラレータを、フレーム・バッファに結合され、さらに(a)プリミティブを受け取り、(b)動的に調整可能なサンプル密度値に基づいてプリミティブ用のサンプルを生成し、(c)サンプルをサンプル・バッファに書き込み、(d)サンプル・バッファからサンプルを読み出し、(e)ピクセルを生成するためにサンプルをフィルタリングし、(f)ピクセルをダブル・バッファされた表示域のバック・バッファに格納するように構成することができる。ホスト・コンピュータは、1つまたは複数のウィンドウ・サイズ・パラメータの変更を指定するユーザ入力に応答して、フレーム・バッファ内でサンプル・バッファを再割り振りするために、(たとえば、格納済みのプログラム命令を使用して)グラフィックス・システムのプログラム可能レジスタを動的に更新するように構成されている。
【0005】
一実施態様では、グラフィックス・アクセラレータを制御するための方法を以下のようにすることができる。(グラフィックス・アクセラレータは、プログラム可能サンプル密度に基づいてフレーム・バッファの使用可能スペースにサンプルをレンダリングし、サンプル・バッファからフレーム・バッファのダブル・バッファされた表示域へのサンプルをフィルタリングするように構成される。)本方法には、
(a)ウィンドウの幅および高さを決める入力を受け取ること、
(b)ウィンドウの幅およびサンプル密度推定値に基づいてウィンドウを水平にカバーするメモリ割振りページの第1の数を計算すること、
(c)ウィンドウの高さおよびサンプル密度推定値に基づいてウィンドウを垂直にカバーするメモリ割振りページの第2の数を計算すること、
(d)第1の数と第2の数を掛け合わせて、メモリ割振りページの第3の数を決定すること、
(e)(b)、(c)、および(d)を1回または複数回実行して、メモリ割振りページの第3の数がフレーム・バッファの使用可能スペースに納まる条件によって決まるサンプル密度推定値を最大化すること、
(f)最大化されたサンプル密度推定値を使用して、グラフィックス・アクセラレータのサンプル密度を再プログラミングすることが含まれる。この方法により、ウィンドウ・サイズの減少(増加)に応答してサンプル密度を増加(減少)させることができる。したがって、ウィンドウ・サイズが小さくなるほどピクセルあたりのイメージ品質が向上する。
【0006】
他の実施態様では、グラフィックス・システムがハードウェア・アクセラレータおよびフレーム・バッファを含むことができる。フレーム・バッファは、サンプル記憶域およびダブル・バッファされた表示ピクセル領域を含む。ハードウェア・アクセラレータは、(a)サンプルを生成するためにプリミティブのストリームをレンダリングし、(b)サンプルをフレーム・バッファのサンプル記憶域に格納し、(c)サンプル記憶域からサンプルを読み取り、(d)ピクセルを生成するためにサンプルをフィルタリングし、(e)フレーム・バッファの表示ピクセル領域の第1のバッファにピクセルを格納するように動作可能である。さらにハードウェア・アクセラレータは、第1のバッファの制御をビデオ出力プロセッサに渡す前にアニメーションのフレームを完了させるために、1つまたは複数の対応するプリミティブのストリームに(a)、(b)、(c)、(d)、および(e)を1回または複数回実行するように動作可能でもある。
【0007】
他の実施態様では、グラフィックス・システムによって生成されるイメージの品質を維持するための方法を以下のようにすることができる。(グラフィックス・システムは、プログラム可能サンプル密度に基づいてフレーム・バッファの使用可能スペースにサンプルをレンダリングし、サンプル・バッファからフレーム・バッファのダブル・バッファされた表示域へのサンプルをフィルタリングするように構成することができる。)本方法には、
(a)新しいウィンドウ・サイズを決める入力の受取りに応答して、アニメーション・フレーム用のグラフィックス・システムのパスの第1の数に対応する実現可能なサンプル密度を計算すること、
(b)ユーザ指定サンプル密度よりも大きいかまたはこれに等しい実現可能なサンプル密度に対応する第1の数の値を決定するために、(a)を1回または複数回実行すること、
(c)この値に等しいグラフィックス・システムのパスの第1の数を設定するために、グラフィックス・システムの1つまたは複数のプログラム可能レジスタに書き込むことが含まれる。
【0008】
こうした方法は、システム・バスまたはコンピュータ・ネットワークを介してグラフィックス・アクセラレータに結合されたホスト・コンピュータで実行することができる。
【0009】
他の実施態様では、グラフィックス・システムによって生成されるイメージの品質を維持する方法であって、本方法は、
(a)調整済みウィンドウのウィンドウ幅および高さを決める入力を受け取ること、
(b)グラフィックス・システムによって達成可能なサンプル密度のセットから、サンプル密度値を選択すること、
(d)正の整数値Nを選択すること、
(c)ウィンドウ幅を選択されたサンプル密度に対応するページ幅で割った第1の上限を計算すること、
(d)ウィンドウ高さを整数値Nで割って第1の結果を決定すること、
(e)第1の結果を選択されたサンプル密度に対応するページ高さで割って第2の上限を計算すること、
(f)第1の上限と第2の上限を掛け合わせてパスあたりのページ推定値を決定すること、
(g)パスあたりのページ推定値がフレーム・バッファの使用可能スペースよりも大きい場合は、整数値Nを増やして(c)、(d)、(e)、および(f)を繰り返すこと、
(h)アニメーション・フレームのNパス・レンダリング用のグラフィックス・システムに構成されるように、グラフィックス・システムの1つまたは複数のプログラム可能レジスタに書き込むことが含まれる。
【0010】
以下の詳細な説明は、添付の図面と共に考察すると、本発明をより良く理解することができる。本発明は、様々な修正態様および代替形式による影響を受けやすいものであり、その特定の実施態様が例示的なものとして図面に示されており、本明細書で詳細に説明される。ただし、図面およびその詳細な説明は、本発明を開示された特定の形式に限定することを意図するものではなく、その逆に、添付の特許請求の範囲で定義された本発明の精神および範囲に当てはまるすべての修正態様、等価態様、および代替態様をカバーすることを意図するものであることを理解されたい。見出しは編成のためだけのものであり、説明または特許請求の範囲を限定または解釈するために使用することを意味するものではないことに留意されたい。さらに「できる、場合がある」という語は、本出願全体を通じて、強制的な意味(すなわち、しなければならない)ではなく、許容的な意味(すなわち、可能性がある、可能である)で使用されている。「含む」という語およびその派生語は、「含むが、それに限定されるものではない」ことを意味する。「接続される」という語は「直接的または間接的に接続される」ことを意味し、「結合される」という語は「直接的または間接的に結合される」ことを意味する。
【0011】
【発明の実施の形態】
一実施形態では、図1Aで提案されるように、グラフィックス・レンダリング・システムは、メディア・プロセッサ14、ハードウェア・アクセラレータ(HA)18、フレーム・バッファ22、およびビデオ出力プロセッサ24を含むことができる。グラフィックス・レンダリング・システムは、ホスト・インターフェース、共用メモリ11(たとえばDRDRAM)、テクスチャ・メモリ20(たとえばSDRAMデバイスのアレイ)、ブートPROM 30、およびRGBDAC 26、およびビデオ・エンコーダ28も含むことができる。
【0012】
RAMは、ランダム・アクセス・メモリの頭字語である。
SRAMは、スタティック・ランダム・アクセス・メモリの頭字語である。
DRAMは、ダイナミック・ランダム・アクセス・メモリの頭字語である。
SDRAMは、同期式ダイナミック・ランダム・アクセス・メモリの頭字語である。
RDRAMは、Rambus DRAMの頭字語である。
DRDRAMは、ダイレクトRambus DRAMの頭字語である。
PROMは、プログラム可能読み取り専用メモリの頭字語である。
DACは、デジタル・アナログ変換器の頭字語である。
RGBは、赤、緑、青の頭字語である。
【0013】
メディア・プロセッサ14は、多角形、線、および点などのプリミティブを定義するグラフィックス・データのストリームを外部システム(たとえばホストプロセッサ)から受け取り、このグラフィックス・データ・ストリームに対していくつかの処理動作を実行することができる。事前に処理されたグラフィックス・データをハードウェア・アクセラレータに転送することができる。ハードウェア・アクセラレータは、グラフィックス・プリミティブ用のサンプルを生成し、そのサンプルをフレーム・バッファ内で割り振られたサンプル・バッファに格納することができる。ハードウェア・アクセラレータは、サンプル・バッファからサンプルを読み取り、サンプルをフィルタリングしてピクセルを生成し、さらにフレーム・バッファ内で割り振られたダブル・バッファされた表示バッファにそのピクセルを格納する。ピクセルの単一フレームが、サンプル・レンダリング・プロセスおよびサンプル・フィルタリング・プロセスの複数のパスで構成されることに留意されたい。ビデオ出力プロセッサは、表示バッファからピクセルを読み取り、表示デバイスへの出力用にビデオ出力信号(またはデジタル・ビデオ・ストリーム)を生成することができる。
【0014】
一実施形態では、グラフィックス・レンダリング・システムには、(フレーム・バッファ・メモリ内で割り振られた)サイズの限定されたサンプル・バッファを効率的に使用することを目標としたいくつかの機能がある。
【0015】
1.0 システム・アーキテクチャ
図1Aは、グラフィックス・レンダリング・システムの一実施形態に関する基板レベルの構成図である。
【0016】
メディア・プロセッサ14は、受け取ったグラフィックス・データに対して、変換および書き込み動作ならびに他の汎用処理動作を実行することができる。メディア・プロセッサは、グラフィックス・プリプロセッサ150およびRPUメガヘルツで動作する2つの処理ユニット(PU)を含むことができる。図1Dは、メディア・プロセッサの一実施形態に関する構成図である。
【0017】
メディア・プロセッサ14は、複数のバス・インターフェースを使用することができる。一実施形態では、メディア・プロセッサは北インターフェース11(たとえば拡張UPA64Sインターフェース)、ダイレクトRAMBUSインターフェース154、および南インターフェース160を含む。外部プロセッサ(たとえばホストプロセッサ)は、グラフィックス・レンダリング・システムを制御するために北インターフェースを使用することができる。ダイレクトRAMBUSインターフェースは、1つまたは複数のDRAMメモリをサポートすることができる。南インターフェースはUPA64Sバスの拡張変形であってよく、メディア・プロセッサがハードウェア・アクセラレータを制御できるようにするものである。
【0018】
一実施形態では、共用メモリ16が2つまたはそれ以上のDRDRAMチップを含むことができる。共用メモリ16は、プログラム命令(たとえばマイクロコード)および一時データを格納するために使用することができる。共用メモリは、グラフィックス・レンダリング・システムとホスト・システムとの間の通信用のバッファを格納するため、およびコンテキスト・スイッチング用のコンテキスト情報を格納するために使用することもできる。共用メモリは、表示リスト・メモリとして使用することもできる。
【0019】
ハードウェア・アクセラレータ18は、2Dおよび3Dラスタ化、2Dおよび3Dテクスチャ化、ピクセル転送、イメージング・オペレーション、ならびにフラグメント処理を実行することができる。図1Bは、ハードウェア・アクセラレータ18の一実施形態に関する構成図である。図1Cは、ハードウェア・アクセラレータ18の一実施形態のより詳細な構成図である。以下に、図1Cで使用される頭字語の凡例を示す。
VP=頂点プロセッサ
PSU=プリセットアップ・ユニット
SU=セットアップ・ユニット
EW=エッジ・ウォーカ
SW=スパン・ウォーカ
SG=サンプル生成器
SE=サンプル評価器
TE=テクスチャ環境
FP=フラグメント・パイプライン
FBA=フレーム・バッファ・アドレス・ユニット
FBI=フレーム・バッファ・インターフェース
FB=フレーム・バッファ
TA=テクスチャ・アドレス・ユニット
TRB=テクスチャ・バッファ読取りバッファ
TF=テクスチャ・フィルタ
FRB=フレーム・バッファ読取りバッファ
SF=サンプル・フィルタ
PXM=ピクセル転送マルチプレクサ
PX=ピクセル転送ユニット
TBM=テクスチャ・バッファ・マルチプレクサ
TBI=テクスチャ・バッファ・インターフェース
【0020】
ハードウェア・アクセラレータ18は、複数のインターフェースを有することができる。たとえば一実施形態では、ハードウェア・アクセラレータは、
(a)ハードウェア・アクセラレータがメディア・プロセッサからコマンドおよび/またはデータを受け取るときに介する、第1のインターフェース161(たとえば拡張UPA64Sインターフェース)と、
(b)ハードウェア・アクセラレータがデバイス・ブートPROMをアドレス指定し、ビデオ出力プロセッサを制御するときに介する、第2のインターフェース176と、
(c)ハードウェア・アクセラレータがテクスチャ・バッファ20の読取りおよび書込みの際に介する、第3のインターフェース187(たとえばエイトウェイ・インターリーブ・テクセル・バス用)と、
(d)ハードウェア・アクセラレータがフレーム・バッファ22の読取りおよび書込みの際に介する、第4のインターフェース300(たとえばフォーウェイ・インターリーブ・ピクセル・バス)とを含む、4つのインターフェースを有することができる。
【0021】
テクスチャ・バッファ・メモリ20は、SDRAM(すなわち同期式ダイナミック・ランダム・アクセス・メモリ)のアレイを含むことができる。たとえば一実施形態では、テクスチャ・バッファは8つのSDRAMを有する。テクスチャ・バッファは、テクスチャ・マップ、イメージ処理バッファ、およびアキュムレーション・バッファを格納するために使用することができる。ハードウェア・アクセラレータ18は、NTMAビット・セットのテクスチャ・バッファ・データをSDRAMクロック速度で読み取るかまたは書き込むことができる。たとえば、NTMAは128ビットに等しくてよい。ただし、NTMAの他の様々な値が可能であり、企図される。一実施形態では、2×2のテクスチャ・フットプリントの任意アドレス指定を可能にするために、SDRAMの各ペアが独立して行および列のアドレス指定が可能である。さらに、各ペア内で2つのSDRAMが独立した列アドレスを受け取ることができる。
【0022】
フレーム・バッファ22は、DRAMメモリ・デバイス(DMD)のアレイを含むことができる。アレイは、NDRAMのDRAMメモリ・デバイスを含むことができる。DRAMメモリ・デバイスの第1のサブセットはハードウェア・アクセラレータによってアクセス可能であり、DRAMメモリ・デバイスの第2のサブセットは、ハードウェア・アクセラレータとビデオ出力プロセッサ24の両方によってアクセス可能である。たとえば一実施形態では、NDRAMは16に等しくてよく、各サブセットは8つのDRAMメモリ・デバイスを含むことができる。さらに16のDRAMメモリ・デバイスを、図1Aで提案されるように、4つのランクに編成することができる。
【0023】
ハードウェア・アクセラレータ18は、フレーム・バッファ・インターフェース300を含むことができる。フレーム・バッファ・インターフェースは、DRAMメモリ・デバイスから入出力するデータの流れを制御する、アドレス信号および制御信号をアサートする。フレーム・バッファ・インターフェースを、ビデオ出力プロセッサ24によってアサートされたフレーム・バッファ・データ(すなわちフレーム・バッファに格納されたデータ)に対する要求を処理するように構成することができる。
【0024】
フレーム・バッファ22の記憶容量CFBは、任意の様々な値を取ることができる。一実施形態では、フレーム・バッファは72メガバイトを格納することができる。フレーム・バッファは最高520万のデータ・アイテムの容量を持つことができる。データ・アイテムはピクセルまたはサンプルを表す。フレーム・バッファ内の記憶域の各ピクセルは、
60ビットのカラー情報(すなわち30ビットのダブル・バッファされたRGB)と、
8ビットのアルファと、
8ビットのオーバレイと、
10ビットのウィンドウIDと、
26ビットのz深さと、
4ビットのステンシルとを含む、116プレーンを有することができる。
【0025】
一実施形態では、ハードウェア・アクセラレータ18は、単一のフレーム・バッファ・クロックで4ピクセルまたは8サンプルまでを書き込むことが可能であり、2つのフレーム・バッファ・クロックの4つのピクセルまたはサンプルを読み取ることが可能である。
【0026】
フレーム・バッファ22のDRAMメモリ・デバイス(DMD)は、シリアル出力ポートを有することができる。一実施形態では、8つのDRAMメモリ・デバイスの第1のサブセットは、ビデオ出力プロセッサに結合されたシリアル出力ポートを有することが可能であり、それを表示可能ピクセル・バッファ、オフスクリーン・ピクセル・バッファ、またはマルチサンプル・バッファを格納するのに使用することができる。DRAMメモリ・デバイスの第2のサブセットはビデオ出力プロセッサへの接続を有することができないため、オフスクリーン・ピクセル・バッファまたはマルチサンプル・バッファを格納するのに使用することができる。その結果、一実施形態では、フレーム・バッファが最高260万ピクセルを表示可能であり、サンプル・バッファは、最高520万サンプルから表示されたピクセル数を引いた数まで格納する。マルチサンプルおよびスーパーサンプルという語は、本明細書では同義語として使用される。
【0027】
ビデオ出力プロセッサ24は、DRAMメモリ・デバイスの第1のサブセットから出力されたビデオ・データをバッファリングおよび処理することができる。ビデオ出力プロセッサは、DRAMメモリ・デバイスからのビデオ・データをバースト単位で読み取ることができる。バーストは、Nburstピクセル長さであってよい。バースト時には、2ビデオ・クロックごとにNccピクセルを転送することができる。たとえば一実施形態では、Nburstが160に等しく、Nccが8に等しくてよい。NburstおよびNccには、様々な値が割当て可能であることに留意されたい。ビデオ出力プロセッサは、ガンマ補正、疑似カラーのカラー・マップ、およびカーソル生成を実行するようにも構成可能である。ビデオ出力プロセッサは、2つのビデオ出力ストリームを提供する2つ(またはそれ以上)の独立したラスタ・タイミング生成器を含むことができる。たとえば、ビデオ出力ストリームのうち1つをRGB DAC 26に提供し、ビデオ出力ストリームのうち1つをビデオ・エンコーダ28に提供することができる。
【0028】
RGB DAC 26は、最高Rdotメガヘルツのドット・レートで、高解像度RGBアナログ・ビデオ出力を提供することができる。たとえば一実施形態では、Rdotは270メガヘルツに等しくてよい。
【0029】
ビデオ・エンコーダ28は、符号化されたNTSCまたはPALビデオ出力を、Sビデオまたは合成ビデオのテレビジョン・モニタまたはレコーディング・デバイスに提供することができる。NTSCとは、米国国内でのテレビジョンおよびビデオの規格を定義する責務を負ったグループ、National Televition Standards Committee(米国テレビジョン方式審議委員会)の略語である。PALとは、Phase Alternating Line(位相反転ライン)の略語である。
【0030】
ブートPROM 30は、システム初期化およびフレーム・バッファ制御コードを含むことができる。
【0031】
図2は、一実施形態に従ったグラフィックス・レンダリング・システムを示す高水準構成図である。この構成図には、いくつかの主要な処理ブロック(四角で囲む)、主要なメモリ、テーブルおよびデータ・バッファ(丸で囲む)、ならびに経路(矢印)が含まれる。
【0032】
上方の四角で囲まれた領域から点線で囲まれたサブ領域を除いたものが、メディア・プロセッサ14に対応する。中央の四角で囲まれた領域から点線で囲まれた2つのサブ領域を除いたものが、ハードウェア・アクセラレータ18に対応する。下方の四角で囲まれた領域が、ビデオ出力プロセッサ24に対応する。
【0033】
上方領域の点線で囲まれたサブ領域は共用メモリ16に対応する。中央領域の点線で囲まれた2つのサブ領域はそれぞれテクスチャ・バッファ20およびフレーム・バッファ22に対応する。
【0034】
システム・バス104(たとえばUPA64Sバス)は、ホストプロセッサ(またはホスト・システム)をメディア・プロセッサ14のホスト・インターフェース11に結合する。(システム・バスは本明細書ではホスト・バスとも称される。)制御装置160は、メディア・プロセッサ14およびハードウェア・アクセラレータ18を結合する。バス32はハードウェア・アクセラレータをデバイスPROM 30およびビデオ出力プロセッサ24に結合する。バス32は、本明細書ではHvbusとも称される。
【0035】
グラフィックス・レンダリング・システムは、フレーム・バッファ、テクスチャ・バッファ、共用メモリ、およびデバイスPROM 30などのいくつかのメモリを含むことができる。
【0036】
グラフィックス・レンダリング・システムは、グラフィックスをフレーム・バッファ22に加速描画し、その後フレーム・バッファのコンテンツを1つまたは複数のビデオ出力ストリームで表示することが可能ないくつかの機能を有する。一実施形態では、フレーム・バッファ・メモリを使用して、最高520万のデータ・アイテム(データ・アイテムはサンプルまたはピクセルのいずれかであってよい)を格納するために使用することが可能であり、最高260万のピクセルを表示することが可能であって、残りのデータ・アイテムをオフスクリーン・ピクセルまたはサンプル・バッファに使用することが可能である。
【0037】
デバイスPROMは、メディア・プロセッサ用のブートストラップ・コードを含むことができる。デバイスPROMは、システムOpenBoot FCODE(デバイスの識別および初期化、コンソール端末エミュレータ)を含むこともできる。
【0038】
メディア・プロセッサ14における処理ブロック
図1Dおよび2は、メディア・プロセッサ14の例示的実施形態を提供するものである。メディア・プロセッサ14はホスト・インターフェース11を含む。ホスト・インターフェース11は北UPAインターフェース(NUPA)であってよい。ホスト・インターフェースは、ホストとグラフィックス・レンダリング・システムとの間のトランザクションを処理するスレーブである。ホスト・インターフェースは、状態および制御レジスタ、割込み論理、ならびにデータおよびアドレス・バッファを含むことができる。アドレス・デコーダは、状態および制御レジスタ、グラフィックス待ち行列GQ、共用メモリ、またはダイレクト経路ブリッジに向けてデータを送ることができる。
【0039】
ホストは、グラフィックス・レンダリング・システムによる処理のためにコマンドを待ち行列に入れるグラフィックス待ち行列に、「ストリーム」コマンドを書き込むことができる。ホストは、グラフィックス待ち行列のオーバフローを防ぐために、フロントエンドの状態レジスタで自由なワード・カウントをポーリングすることができる。
【0040】
ストリーム・コマンドは、それぞれがヘッダ・ワードとそれに続く1つまたは複数のデータ・ワードからなる一連のコマンド文字列を含むことができる。グラフィックス・プリプロセッサ(GPP)は、GQから文字列を引き出してそれらを解釈する。文字列タイプに応じて、GPPは以下の様々な方法で出力をルーティングすることができる。
(1)HA(ハードウェア・アクセラレータ)レジスタ書き込み(2D頂点を含む)を他の処理なしにハードウェア・アクセラレータ18に渡すことができる。
(2)GPP制御レジスタ書き込みが、GPPそれ自体によって吸収される。
(3)メディア・プロセッサのマイクロコード・ルーチンへの属性および命令をバッファリングし、プロセッサ・ユニットPU0およびPU1に渡すことができる。プロセッサ・ユニットはこれらを消費し、ハードウェア・アクセラレータ18に渡すことができる。
(4)3D頂点構成要素をフォーマット変換し、頂点アセンブリ・バッファで完全な頂点にアセンブルすることができる。頂点に頂点構成要素がない場合、この値を以前の頂点から引き継ぐことができる。頂点のグループをバッファリングし、次の使用可能なプロセッサ・ユニットにディスパッチすることができる。頂点の変換およびライティングの後、プロセッサ・ユニットのマイクロコード・ルーチンが処理済みの3D頂点をハードウェア・アクセラレータ18に送信する。
(5)圧縮された文字列が、属性、頂点、メッシュ・バッファ・オペレーション、およびGPP制御書込みに圧縮解除される。メッシュ・バッファ・オペレーションはGPPメッシュ・バッファにシャドウイングされ、ハードウェア・アクセラレータに渡され、その他は上記のように処理される。
【0041】
GPPは「ハード・タグ」モードで動作することができる。このモードでは、GPPは各頂点または属性に関してハードウェア・アクセラレータ18に、処理ユニットに送信する旨の命令タグを送信することができる。すなわち、ハードウェア・アクセラレータは、プロセッサをバイパスしたHAレジスタ書込みおよびメッシュ・バッファ・オペレーションと共に、プロセッサ・ユニットから着信する処理済みの属性および頂点を集めて、それらすべてを正しいストリームの順序で配置しなおすことができる。(HAレジスタ書込みは、ハードウェア・アクセラレータ内のレジスタをターゲットとするレジスタ書込みである。)
【0042】
ある特殊なケースでは、すべてのトランザクションをプロセッサ・ユニットを介してルーティングすることが望ましい場合がある。したがってGPPは、こうした特殊なケースをサポートするために「ソフト・タグ」を有することができる。
【0043】
メディア・プロセッサ14は、NPU処理ユニットを含むことができる。例示された実施形態では、メディア・プロセッサが2つの処理ユニットPU0およびPU1(すなわちNPU=2)を含む。処理ユニットは、本明細書ではMPUとも称される。プロセッサ・ユニット(PU)で実行するマイクロコード・ルーチンは、以下の機能を含むがこれらに限定されることのない、いくつかの機能を実行する。
(a)頂点バッチを変換およびライティングする、高度に最適化された1頂点あたりの処理ルーチン。一実施形態では、1つのバッチが2つまたは4つの頂点を含んでよい。
(b)頂点処理パイプライン・マイクロコード状態、および/またはハードウェア・アクセラレータ(HA)描画パイプライン(すなわちHAにおける描画パイプライン)のハードウェア状態を定義および更新する、属性処理ルーチン。
(c)最適化された頂点処理ルーチンによって、またはHAハードウェア・パイプによって直接サポートされていない特殊なケースでは、マイクロコードは独自のプリミティブ・アセンブリ、ラスタ化、および/またはテクスチャリングを実行することができる。
(d)システムは、初期化、トラップ処理、ホスト・ドライバ通信、コンテキスト・スイッチング、およびメモリ割振り用のマイクロコードを処理する。
【0044】
制御装置160(たとえば南UPAインターフェース)は、メディア・プロセッサをハードウェア・アクセラレータ18内の様々なブロックのマスタとすることができる。GPPおよびPUは、ハードウェア・アクセラレータの頂点コレクションおよびプリミティブ・アセンブリ・ブロックに書き込むことができる。PUは、PUダイレクト経路を使用して、フレーム・バッファ・ピクセル、テクスチャ・バッファ・テクセル、ならびに(DPユーザ、プリミティブ・アセンブリ、クリップ・トラップ処理、構成およびコンテキスト・スイッチ・レジスタを含む)ハードウェア・アクセラレータおよびビデオ出力プロセッサ内の様々なレジスタに、読取りおよび書込みすることもできる。
【0045】
一実施形態では、ダイレクト経路ブリッジは、ホスト・バスを、FBピクセル、TBテクセル、ならびに(DPユーザ、プリミティブ・アセンブリ、クリップ・トラップ処理、構成およびコンテキスト・スイッチ・レジスタを含む)ハードウェア・アクセラレータおよびHVbus内の様々なレジスタに読取りおよび書込みをするためのSUPAマスタとすることができる、NUPAからSUPAへのバス・ブリッジである。ダイレクト経路ブリッジは、本明細書ではバス・インターフェース・ユニット(BIU)154とも称される。
【0046】
FBはフレーム・バッファの頭字語である。
TBはテクスチャ・バッファの頭字語である。
UPAはユニバーサル・ポート・アーキテクチャの頭字語である。
NUPAは北UPAの頭字語である。
SUPAは南UPAの頭字語である。
【0047】
ユニバーサル・ポート・アーキテクチャ(UPA)はバス仕様である。マスタおよびスレーブをサポートするCPU用の128ビットUPAポート(「UPA128」)、マスタおよびスレーブをサポートするI/Oチップ用の64ビット・ポート(「UPA64M」)、さらにスレーブ専用デバイス用の64ビット・ポート(「UPA64S」)がある。
【0048】
ハードウェア・アクセラレータの処理ブロック
一実施形態では、図1B、1C、および2で様々に例示されたように、ハードウェア・アクセラレータ18は以下の処理ブロックを含む。
【0049】
スレーブ・インターフェース:スレーブ・インターフェース(たとえば南UPAインターフェース)は、メディア・プロセッサ内のSUPAマスタに応答する。スレーブ・インターフェースは、状態および制御レジスタ、割込み論理、ピクセル先行読取り論理、データおよびアドレス・バッファを含むことができる。スレーブ・インターフェースは、メディア・プロセッサからトランザクションを受け取る。各トランザクションにはアドレスおよび何らかのデータが含まれる。スレーブ・インターフェース内のアドレス・デコーダは、トランザクションを送信しなければならない場所を決定するために、(たとえばルックアップ・テーブルを使用して)アドレスをデコードする。たとえば、アドレス・デコーダはデータを、様々なHAレジスタ、頂点プロセッサ(VP)、ダイレクト経路、レンダリング/加速経路、またはビデオ出力プロセッサのうちいずれかにルーティングすることができる。スレーブ・インターフェースは、本明細書ではUBI(UPAバス・インターフェース)とも称される。
【0050】
頂点プロセッサ(VP):頂点コレクションおよびプリミティブ・アセンブリは、頂点プロセッサ内で実行される。頂点プロセッサは命令タグ、HAレジスタ書込み、属性書込み、および処理済みの3D頂点構成要素を収集する。
【0051】
3D頂点は、後で再使用するためにメッシュ・バッファに入れておくことができる。タグ・ストリームの順序に基づいて、新しい頂点および再使用される頂点は、プリミティブ・アセンブリ・ブロックによって3Dプリミティブにアセンブルされ、その後クリップ・テストされる。クリップ・テストに合格したプリミティブは、ラスタ化パイプに向けて発信される。クリップ・テストに不合格のプリミティブはトスされる。曖昧な場合は、メディア・プロセッサのマイクロコードによって処理されるクリップ・トラップを生じさせる。
【0052】
一実施形態では、2D頂点がHAレジスタ書込みとして着信し、どんなメッシュ・バッファまたはクリッピング・サポートもなしに、プリミティブ・アセンブリが単純化される。
【0053】
ラスタ化パイプ(RP):ラスタ化パイプは発信されたプリミティブ(線、多角形など)を受け入れ、それらをピクセル・フラグメントに圧縮解除する。フラグメントの位置、カラー、アルファ、および深さがサンプル生成器に送信される。フラグメント・テクスチャ座標がテクスチャ・アドレス・ブロックに送信される。
【0054】
サンプル生成器(SG):3Dプリミティブの確率的にサンプリングされたラスタ化が実行可能である場合、SGはどのサンプル位置がプリミティブの内側にあるかを決定し、各内部サンプル位置でカラー、アルファ、および深さを補間して、その結果をテクスチャ環境ユニット(TE)に送信する。
【0055】
3Dの線または点のフィルタリング(たとえばガウス・フィルタリング)が実行可能である場合、SGはその線または点の有効領域内部にある各ピクセルでのフィルタ重みを決定し、その後アルファとそのフィルタ重みとを掛け合わせ、ピクセル・フラグメントのカラー、アルファ、深さ、および位置をテクスチャ環境ユニットに送信する。
【0056】
サンプリングおよびガウス・フィルタリングが実行不能である場合、またはプリミティブが2Dである場合、SGは、ラスタ化されたピクセル・フラグメントのカラー、アルファ、深さ、および位置を、修正せずにテクスチャ環境ユニットに渡すことができる。
【0057】
テクスチャ・アドレス・ユニット(TA):テクスチャリングが実行可能である場合、ラスタ化パイプはフラグメント・テクスチャ座標をTAに送信する。TAは、テクセル・サンプル・アドレス、ならびに指定されたフィルタ・フットプリント内のテクセル・サンプルを検索およびフィルタリングするために必要な詳細かつブレンドされた要素のレベルを決定する。TAは、必要な各テクセル・サンプルに関して、テクスチャ・バッファ(TB)への読取り要求を生成する。「サンプル」という語は、グラフィックス・プリミティブの内部にある各サンプル位置でサンプル生成器SGによって算出されたデータ値のセット(たとえばrgbaz)を示す際にも使用されることに留意されたい。コンテキストが、どの用法を意味しているかを判定する。
【0058】
テクスチャ・ファイル(TF):TFは、TAからのブレンド要素と共にテクセル・サンプル・データをTBから受け取り、フィルタリング済みのテクセルを生成するために、テクセル・サンプルをブレンドする。
【0059】
ピクセル転送ユニット(PX):テクスチャリング中に、TF出力がPXに送信され、ここで、フィルタリング済みテクセルのカラーおよびアルファ値に関して検索機能を実行することができる。さらにPXは、ダイレクト経路およびコピー・オペレーション中にも使用される。
【0060】
テクスチャ環境ユニット(TE):テクスチャリング中に、TEは、PX出力(テクスチャのカラー/アルファ)とSG出力(フラグメントのカラー/アルファ)とをマージして、テクスチャ済みフラグメントを取得する。テクスチャリングが実行不能である場合、TEはRP/SGフラグメントのカラー、アルファ、深さを通過させる。
【0061】
テクスチャ・パイプ(TP):TA、TB、TF、PX、TEクラスタは、本明細書ではテクスチャ・パイプと称される。
【0062】
レンダリング・パイプ:VP、RP、SG、およびTEによって定義されるユニットのクラスが、レンダリング・パイプと呼ばれる。
【0063】
ストリーム経路:ストリーム経路はGQおよびGPPから始まり、PUの中または周囲を通過し、VPおよびRPを通過して、テクスチャをTPへ、ピクセルをSGへと分岐させ、それらをTEで再結合させることができる。TEの結果は、ストリーム/ダイレクト結合パイプ同期ポイントへ送られる。
【0064】
ストリーム/ダイレクト結合:ストリームおよびダイレクト経路は、メディア・プロセッサ14のホスト・インターフェースで分岐する(すなわち、ストリームはGQへ進み、ダイレクトはダイレクト経路ブリッジへ進む)。ストリーム/ダイレクト結合ポイントは、ストリームおよびダイレクト経路が再結合する場所であり、共用経路が始まる場所である。
【0065】
共用経路:フレーム・バッファへのフラグメント・パイプおよび書込みは、ストリームおよびダイレクト経路によって共用される。任意の所与の時点に、ストリームまたはダイレクト経路のうちの1つが共用経路を所有することができる。
【0066】
フラグメント・パイプ(FP):FPは、
定数の置き換え、
領域のパターン化、
アドレス、カラー、およびアルファのクリッピング、
ウィンドウID(WID)、ステンシル、および深さのテスト、
プレーン・グループの実行可能化およびビット・プレーンのマスク、
フォグ、ブレンド、およびラスタ・オペレーションなどの、
1フラグメントあたりの書込みオペレーションを実施する。
【0067】
一実施形態では、FPは、一部はハードウェア・アクセラレータ18に、一部はフレーム・バッファ22にある。
【0068】
コピー/フィルタリング・オペレーション:ストリーム・コマンドには、ラスタ化パイプがTBとFBとの間またはその中でデータを移動させるメモリ・アドレス生成器となる、以下のような様々なコピー/フィルタリング・オペレーションが含まれる。
【0069】
(A)ブロック・コピー・オペレーションは、任意選択のピクセル転送(PX)オペレーション(たとえばスケール、バイアス、カラー・マトリクス、検索、ヒストグラム、最小/最大)を使用して、TBとFBとの間またはその中でピクセルまたはテクセルを移動させる。
【0070】
(B)イメージ・フィルタリング・オペレーションは、テクスチャ・フィルタ(TF)を使用して、TBピクセル・データ(すなわち、テクスチャ・バッファに格納されたピクセル・データ)での畳み込みを実行する。畳み込みの結果に対してオプションのPXオペレーション(前述)を実行し、TBまたはFBに送信することができる。
【0071】
(C)レンダリング・パイプは、確率的にサンプリングされたシーンを、FBのオフスクリーン・サンプル・バッファにレンダリングすることができる。シーンがレンダリングされた後、確率的サンプル・フィルタ(SSF)を使用して、FBサンプル・バッファからのサンプルで畳み込みを実行し、FBの表示領域にエイリアス除去されたシーンを作成することができる。SSF出力は、PXによって補正されたガンマであってよい。
【0072】
(D)アキュムレーション・バッファ・オペレーションは、TBの領域をアキュムレーション・バッファとして使用し、OpenGL負荷、累算、乗算、加算、および復帰オペレーション、ならびにボリューム・レンダリングに対する高度に精密なスライス・ブレンド・オペレーションをサポートする。TB内の連続したメモリ領域を、アキュムレーション・バッファ(たとえばRGB16バッファ)として割り振ることができる。
【0073】
ダイレクト・ピクセル/テクセル書込み経路:ダイレクト書込み経路はホスト・インターフェースおよびダイレクト経路ブリッジから始まり、制御装置(SUPA)へと向かう。書込みアドレスおよびデータは、PX入力セレクタ(本明細書ではピクセル転送マルチプレクサとも称される)を介してPXユニットへ送信され、書込みデータ上でピクセル転送(PX)オペレーションを実行するために割り当てることができる。PXの結果はストリーム/ダイレクト結合ポイントに送信され、その後(共用経路フラグメント・パイプを介して)TBまたはFBのいずれかに送信される。
【0074】
ダイレクト・ピクセル/テクセル読取り経路:ダイレクト読取り経路はホスト・インターフェースおよびダイレクト経路ブリッジから始まり、制御装置へと向かう。読取りアドレスはPXを通過してストリーム/ダイレクト結合ポイントに渡され、その後TBまたはFBに渡される。メモリ読取りデータはPX入力セレクタを介してPXユニットに戻り、結果が(制御装置160およびホスト・インターフェース11を介して)ホストに戻される前に、読取りデータに対してピクセル転送(PX)オペレーションを実行するために割り当てることができる。
【0075】
ビデオ出力プロセッサ24内にあるかまたはこれに関する処理ブロック
HVBusインターフェース(HBI):HBIは、SUPAバスが(およびMPUまたはホスト・コンピュータの拡張により)、デバイスPROMの読取り、ならびにビデオ出力プロセッサ(VOP)のレジスタおよびテーブルの間接的な読取り/書込みを実行できるようにするものである。
【0076】
ウィンドウ・ルックアップ・テーブル(WLUT):WLUTは、各ウィンドウの視覚表示属性を定義するものであって、ウィンドウIDプレーンによって索引付けされる。WLUTエントリは、
RGB対索引付けカラー、
索引付けカラー・ソース(R、G、B、オーバレイ)、
カラー・ルックアップ・テーブル数、ガンマ補正、またはバイパス、
オーバレイなし、不透明オーバレイ、または透明オーバレイ
などの視覚表示属性を指定することができる。
【0077】
WLUTは物理的に分離し、一部はハードウェア・アクセラレータ18に、一部はフレーム・バッファ22に、一部はビデオ出力プロセッサ24に常駐することができる。フレーム・バッファにはオーバレイ論理もあり、これが1次プレーンまたはオーバレイ・プレーンが表示されるかどうかを決定する。
【0078】
カラー・フックアップ・テーブル(CLUT):一実施形態では、擬似カラーまたはダイレクト・カラー・マップを格納するために、1つのCLUTについて256のトリプル・エントリを備えた4つのCLUTが使用可能である。真のカラー・ウィンドウの場合、代わりに単一のガンマLUT(GLUT)(1024のトリプル・エントリ)を使用することができる。GLUTをバイパスすることも可能である。
【0079】
追加のビデオ出力機能は、ハードウェア・カーソルおよびデュアル・ビデオ・タイミング生成器を含むことが可能であり、これによって1次および2次ビデオ出力ストリームへのタイミングおよびデータ要求を生成することができる。
【0080】
ビデオ・デジタル・アナログ変換器(DAC)またはエンコーダ:1次ビデオ出力ストリームは、ビデオDAC(たとえば、赤、緑、および青それぞれに10ビットを受け取るビデオDAC)をアナログ・コンピュータ・ディスプレイに対して駆動させることができる。2次ビデオ・ストリームは、
(1)オンボードTVエンコーダをSビデオTVモニタまたはレコーディング・デバイスに対して駆動させるか、または
(2)機能拡張コネクタを駆動させることができる。可能なドーター・カード・オプションには、
第2のアナログ・コンピュータ・ディスプレイ、
デジタル・フラット・パネル・リンク、または
シリアル・デジタル・ビデオ出力リンクが含まれる。
【0081】
2.0 マルチサンプリングのレンダリング後のフィルタリング
一実施形態では、グラフィックス・レンダリング・システムは、フル・シーンのレンダリング完了までのサンプル・フィルタリングとは異なる。
【0082】
グラフィックス・レンダリング・システムは、表示バッファ・スワップ直前までのサンプル・フィルタリングとは異なる場合がある。シーン全体がアニメーション速度(シーンの複雑さによって異なる)でフィルタリングされる。
【0083】
グラフィックス・レンダリング・システムは、
(a)シーンを(FB内に割り振られた)サンプル・バッファにレンダリングするステップと、
(b)シーンをサンプル・バッファから(同様にFB内に割り振られた)バック表示バッファへ、アニメーション速度でフィルタリングし、、
(c)フロントおよびバック表示バッファを(アニメーション速度で)スワップし、
(d)各表示リフレッシュについて、表示バッファ内のピクセルを(アニメーション速度よりも速い場合の多いビデオ速度で)表示することの、一連のステップを実行する。
【0084】
2.1 フレーム・バッファ(FB)割振り
2.1.1 FBビット・プレーンの用法
フレーム・バッファ22の一実施形態では、各ピクセル(またはサンプル)は116ビット・プレーンのデータを有することができる。図3は、116ビット・プレーンを編成する1つの方法を示す図である。図4は、ピクセル(またはサンプル)を構成する様々なフィールドを記載した表である。
【0085】
サンプル・バッファにレンダリングする場合、ハードウェア・アクセラレータ18はR、G、B、AをバッファAに書き込み、さらにSおよびZも書き込むことができる。SおよびZは、最終シーンでどのサンプルが見えるかを決定する、ステンシルおよび隠面消去オペレーションに必要となる。最終シーンでRGBカラー値に影響を与える可能性のある合成および透過性のために、アルファ(A)を使用することができる。
【0086】
フィルタリングの際、ハードウェア・アクセラレータ18は、サンプル・バッファからR、G、Bを読み取り、フィルタリング結果を(PXユニットおよびフラグメント・パイプを介して)表示バッファ(バッファAまたはバッファBのいずれか、ダブル・バッファされたレンダリング中に現在「バック」バッファである方)のR、G、Bプレーンに書き込むことができる。ウィンドウ・システムは、Wおよびオーバレイ・プレーンをフィルタリング・プロセスとは別に維持することが可能であり、Wp面はRGBの真のカラー表示を発生させるように設定可能である。
【0087】
表示の際、Wp面は「フロント」表示バッファから、RGBの真のカラー表示を選択することができる。
【0088】
2.1.2 FBメモリ割振り
以下の考察では、フレーム・バッファ22が、4つのランクに編成された16のDRAMメモリ・デバイスを有すると想定される。ただし、フレーム・バッファ内のDRAMメモリ・デバイスの数は様々ないずれの値を取ってもよく、同様に、フレーム・バッファ内のランク数も様々ないずれの値を取ってもよいことに留意されたい。
【0089】
単一のDRAMメモリ・デバイスは、640×512のデータ・アイテム用の記憶域を含むことができる。(データ・アイテムは、図3で提案されたように116ビットを有することができる。)したがって、フレーム・バッファは、最高16×640×512=5120Kのデータ・アイテムを格納することができる。各データ・アイテムがピクセルまたはサンプルを表すことができる。一実施形態では、DRAMメモリ・デバイスの半分がビデオ出力プロセッサに結合され、DRAMメモリ・デバイスの残りの半分はそのように結合されない。これらの実施形態では、フレーム・バッファは、最高2560Kの表示ピクセル(すなわちオンスクリーン・メモリ・ピクセル)を格納することができる。
【0090】
フレーム・バッファ・メモリを割り振るための基本単位が「ページ」と呼ばれる。一実施形態では、1ページに5120のデータ・アイテムを含むことができる。したがって、フレーム・バッファ・ページ容量は、5120K/5120=1024ページに等しくすることができる。最初の512ページが表示可能である。
【0091】
グラフィックス・レンダリング・システムは、最高Ndrの表示可能領域をサポートすることが可能であり、Ndrは正の整数である。一実施形態では、グラフィックス・レンダリング・システムは、最高2つの表示可能領域および無制限数のオフスクリーン領域をサポートすることができる。
【0092】
たとえば、コンソールが第1の表示可能領域であってよい。第1の表示可能領域は、図5で提案されるように、FBメモリのページ0から開始されるように割り振ることができる。したがって、第1の表示可能領域にD1ページが割り振られた場合、第1の表示可能領域はページ0からD1−1までを占有することになる。
【0093】
第2の表示可能領域がある場合、コンソールのすぐ上に割り振ることができる。例では、第2の表示可能領域にD2ページが割り振られた場合、第2の表示可能領域はページD1からD1+D2−1までを占有することが可能であり、ここでD1+D2<=512ページである。記号「<=」は「より少ないかまたは等しい」ことを示す。
【0094】
スーパーサンプリングが要求された場合、オフスクリーン・スーパーサンプリング領域はFBメモリの頂部(ページ1023より下方から)に割り振ることができる。例では、S1ページが割り振られる場合、オフスクリーン・スーパーサンプリング領域は1024−S1から1023までを占有することが可能であり、ここでS1+D1+D2<=1024である。
【0095】
追加のオフスクリーン・メモリが割り振られた場合、第1のスーパーサンプリング領域よりも下まで及ぶ可能性がある。
【0096】
所与のフレーム・バッファ記憶モード(FB_*_MODEレジスタによって設定)では、各割振りページが、固定されたピクセル高さと幅を有する。図6の表は、グラフィックス・レンダリング・システムの一実施形態に従った、様々なFB_MODEオプションでのページ・サイズを列挙したものである。サンプル密度が2のべき乗でない場合、2のべき乗でない数は2のべき乗で割り切れないため、割振りページの幅掛ける高さは5120データ・アイテムのページ容量よりも少なくなる。
【0097】
フレーム・バッファ領域は四角形の領域である。領域の幅は割振りページ幅の整数倍に対応する。領域の高さは割振りページ高さの整数倍に対応する。端数サイズの領域(領域幅がページ幅の整数倍でないか、または領域高さがページ高さの整数倍でない)が所望の場合、次に大きな整数倍幅および整数倍高さを割り振ることができる。
widthPages=roundup(widthPixels/pageWidth)
heightPages=roundup(heightPixels/pageHeight)
割り振られる合計領域(ページ単位)は、単純に領域の幅と高さの積である(どちらも整数ページに切り上げられる)。
areaPages=widthPages*heightPages
たとえば、1152×900の非立体表示用のFBメモリ領域を割り振るためには、pageWidthが320でありpegeHeightが16であることに留意されたい。以下の計算式は、1152×900の表示領域が、228ページを有するフレーム・バッファ領域でカバーできることを示すものである。
widthPages=4 pages wide=roundup(1152/320)
heightPages=57 pages high=roundup(900/16)
areaPages=228 pages=4*57
グラフィックス・ウィンドウが700×700ピクセルを有するものと想定すると、オフスクリーン・スーパーサンプル・バッファはサンプル密度4でウィンドウに割り振られることになる(すなわち単位ピクセル領域あたり4つのサンプルが生成される)。サンプル密度4の場合、pageWidthは80でありpageHeightは16である。以下の計算式は、スーパーサンプル・バッファに396ページのフレーム・バッファが割り振られることを示すものである。
widghPages=9 pages wide=roundup(700/80)
heightPages=44 pages high=roundup(700/16)
areaPages=396 pages=9*44
ライブラリ機能は、所望のピクセル単位の高さと幅と共にFB_MODEを指定してFB領域を割り振るために、メモリ割振り要求をアサートすることができる。ソフトウェア・ドライバは上記の計算を実行し、所望の領域を所望のFB_MODEで格納するのに必要なページ数を割り振ることが可能であり、失敗/成功状態とFB_BASE(最初に割り振られたページ)およびFB_STRIDE(割り振られた領域のページ単位の幅)とを戻す。ドライバは、その後の要求時に使用するために、割り振られた領域の独自の記録も維持することができる。
【0098】
まだ割り振られずに残っているメモリの量の照会、ならびに、指定のモード、高さ、および幅が要求された場合にはどれだけの量のメモリが割り振られることになるのかを確認するための他の照会を実行するライブラリ機能も可能である。
【0099】
Wd×Hdピクセルを有する表示のための(ダブル・バッファされた)ピクセル表示バッファが割り振られるものと想定する。この表示をサポートするために、ドライバは以下の式によって整数のFBメモリ・ページを割り振ることが可能であり、
ceiling(Wd/pageWidth)*ceiling(Hd/pageHeight)
上式で、pageWidthおよびpageHeightはそれぞれFBメモリ・ページの幅および高さである。pageWidthおよびpageHeightの値は、FBメモリ割振りモードに応じて変化する。モードは、割り振られるバッファが表示バッファとして働くものであるか、またはオフスクリーン・バッファとして働くものであるかを示すことができる。さらにモードは、表示バッファが立体用に構成されるものであるか、非立体用に構成されるものであるか、あるいはオフスクリーン・バッファがピクセル用に使用されるものであるか、サンプル用に使用されるものであるかも示すことができる。後者の場合、モードはサンプル密度、すなわちピクセルあたりのサンプル数を示すことができる。
【0100】
ウィンドウ・システムでは、グラフィックス・レンダリング・システムは全画面サイズよりも小さいウィンドウにレンダリングすることができる。ウィンドウがWw×Hwピクセル・サイズを有すると想定すると、サンプル・フィルタ(SF)はWf×Hfピクセルのフットプリントを有し、サンプル密度はDSである。この場合ドライバは、ウィンドウに対応するオフスクリーン・サンプル・バッファに関して、以下の式で与えられる整数のFBメモリ・ページを割り振ることができる。
Ceiling{(Ww+Wf)/pageWidth}*Ceiling{(Hw+Hf)/pageHeight}
【0101】
オフスクリーン・サンプル・バッファが、サンプル・フィルタ・フットプリントの「スカート」を収容するためのWw×Hwウィンドウを囲む境界線を含むことに留意されたい。フットプリントを備えた拡大されていないボックス・フィルタが厳密に表示されるピクセルであるという特殊なケースでは、Wf×Hfはゼロであり(ピクセル外部からの寄与がないため)、特別な境界線割振りは不要である。
【0102】
有限のFB容量は、表示バッファとサンプル・バッファで共用される。したがって最大サンプル密度はほぼ以下に等しく、
Floor{データ・アイテム単位のFBサイズ−ピクセル単位の表示サイズ)÷(ピクセル単位のウィンドウ・サイズ)}
ここでFloor{x}は整数下限関数である。これは、解像度の低い表示および/またはサイズの小さいウィンドウが、固定サイズのサンプル・バッファ内でより高いサンプル密度をサポートできることを暗に示している。
【0103】
例:
単一ヘッドの1280×1024非立体表示の場合、表示バッファは(ceil(1280/320)*ceil(1024/16))=256ページのFBメモリを使用する。これで、(1024−256)=768ページが、1ページあたり5120サンプルでサンプル・バッファ用に残される。
1000×1000ピクセル・ウィンドウは(ceil(1000/80)*ceil(1000/20)650ページであり、768ページよりも少ないため、サンプル密度3をサポートすることができる。
720×670ピクセル・ウィンドウはceil(720/40)*ceil(670/16)=756ページであり、768ページよりも少ないため、サンプル密度8をサポートすることができる。
【0104】
単一ヘッドの960×680立体表示の場合、表示バッファは(ceil(960/320)*ceil(680/8))=255ページのFBメモリを使用する。これで(1024−255)=769ページがサンプル・バッファ用に残される。したがって、第1の例と同じサイズのウィンドウをサポートすることができる。
【0105】
単一ヘッドの640×480立体VGA表示の場合、表示バッファは(ceil(640/320)*ceil(480/8))=120ページのFBメモリを使用する。これで(1024−120)=904ページがサンプル・バッファ用に残される。ceil(600/40)*ceil(480/8)=900ページであり、904ページよりも少ないため、ほぼ全画面のウィンドウ(600×480)はサンプル密度16をサポートする。
【0106】
2.2 レンダリングおよびフィルタリング段階
マルチサンプリングを使用してシーン・フレームをレンダリングするために、グラフィックス・レンダリング・システムは一連のステップを実行する。この一連のステップは、シーン・アニメーション中、何回も繰り返される。以下の記述は、ウィンドウ・サイズ(フィルタ・フットプリントを加える)のサンプル・レンダリング・バッファおよびスクリーン・サイズのピクセル表示バッファがFBメモリで事前に割り振られていると想定したものである。
【0107】
2.2.1 サンプル・レンダリング・バッファのクリア
レンダリングの前に、(ウィンドウ・サイズの)サンプル・バッファにあるサンプルは、深さを無限にしてステンシル・プレーンをリセットした背景RGBカラーへと「クリア」される。高速フィル機能は、このステップを加速させるものである。一実施形態では、高速フィル機能はおよそ53億サンプル/秒で動作可能である。
【0108】
図7は、この流れを表す図である。ラスタ化パイプはウィンドウ領域のサンプル・ブロック・アドレスを生成し、フラグメント・パイプはFBメモリ内にサンプル・ブロックを充てんする。クリア・オペレーションでアクティブでない経路は点線で示されている。
【0109】
2.2.2 サンプル・バッファへのマルチサンプルのレンダリング
次に、図8および9に示されるように、シーンを定義する頂点(および属性)データが、3−Dストリーム・レンダリング経路を介し、FBで割り振られたサンプル・バッファをターゲットとして送信され、マルチサンプリングされたレンダリングを実行可能にする。
【0110】
メディア・プロセッサ14(すなわちグラフィックス・プリプロセッサおよびプロセッサ・ユニット)は、シーン内の各頂点において、変換、ライティング、およびクリップ・コード生成機能を実行することができる。これらの機能は、OpenGL標準または何らかの他の標準に準拠した方法で実行することができる。
【0111】
頂点は、OpenGL標準によってプリミティブ(典型的には三角形)にアセンブルすることができる。クリップ・テストおよびフェース−カリング・テストに合格したプリミティブがラスタ化される。この作業は、頂点プロセッサおよびラスタ化パイプラインによって実行することができる。(ラスタ化パイプラインRPには、図1Cで提案されるように、プリセットアップ・ユニットPSU、セットアップ・ユニットSU、エッジ・ウォーカEW、およびスパン・ウォーカSWユニットが含まれることを想起されたい。)
【0112】
ラスタ化パイプラインRPは、位置(x,y)、テクスチャ座標(s,t,r)、ならびに深さ(z)およびカラー(r,g,b,a)の値で、ピクセルを生成する。
【0113】
テクスチャ処理経路には、テクスチャ・アドレス・ユニット(TA)およびテクスチャ・フィルタ(TF)ユニットが含まれる。テクスチャ処理経路は、単一のテクスチャ座標ベクトル(s,t,r)に基づいて、最高のテクセル・サンプル(たとえばNtms=8)をテクスチャ・メモリ20から読み取り、(s,t,r)での1ピクセルあたりのテクスチャ・カラーを決定するために、これらのテクセル・サンプルをフィルタリングする。一部の実施では、テクスチャ処理経路は複数のテクスチャ座標を受け入れ、1ピクセルについて複数のテクスチャ結果(「マルチテクスチャ」)を生成することができる。
【0114】
サンプル生成器SGは、各サンプルのサブピクセル位置をピクセル単位で決定し、どのサンプルがプリミティブ内部にあるかを決定する。サンプル評価器SEは、サンプル・マスクおよび(r,g,b,a,z)に対するサンプルあたりの値を生成する。
【0115】
サンプル処理パイプラインおよびテクスチャ処理パイプラインは非同期的に動作し、一般に様々なピクセルあたりのデータ量を生成する。これには、パイプラインを他のパイプラインより多少前または後のいずれかに実行できるようにする待ち行列が含まれる。
【0116】
各ピクセルについて、テクスチャ環境ユニットTEは、テクスチャ・パイプラインからの(ピクセルあたりの)テクスチャ・カラーを、そのピクセルから生成されたすべてのサンプルに適用する。最終的にテクスチャ化されたピクセル・カラーは、OpenGLテクスチャ環境関数を使用して、またはマルチテクスチャの場合には、OpenGLマルチテクスチャ拡張を使用して適用することができる。したがってテクスチャ環境は、各ピクセルから複数のテクスチャ化されたサンプルを生成する(フラグメント・サンプルとも呼ばれる)。
【0117】
フレーム・バッファを形成するそれぞれのDRAMメモリ・デバイスが、本明細書ではメモリ組込み型ピクセル・プロセッサと称される、1つまたは複数のピクセル・プロセッサを含むことができる。Mitsubishiの製造する3DRAMメモリ・デバイスは、こうしたメモリ組込み型ピクセル・プロセッサを備えるものである。
【0118】
フラグメント(テクスチャ化されたサンプル)はフラグメント・パイプおよびメモリ組込み型ピクセル・プロセッサによって処理され、フレーム・バッファ・メモリ内の事前に割り振られたサンプル・バッファ領域に書き込まれる。メモリ組込み型ピクセル・プロセッサは、標準のOpenGLフラグメント処理動作(たとえばブレンド、ステンシル、Zバッファリングなど)を適用することができる。
【0119】
一般に、同じシーン・フレーム内で、複数のプリミティブが同じサンプル位置にサンプル値を与えることができる。こうしたサンプル(すなわち非透過サンプル)の多くについて、Zバッファリング・オペレーションは、「勝った」プリミティブ(通常は視聴者に最も近いもの)からサンプル値を選択することになる。この隠面消去プロセスにより、シーン内で以前にレンダリングされたサンプルの一部を、シーン内で後にレンダリングされたサンプルに置き換えることができる。「深さの複雑性」という語は、各サンプルを更新するための試行のシーンあたりの平均回数を表すために使用される。目の位置から見ると多くのオブジェクトが相互に前後に散乱したシーンは、深さの複雑性が高いことになる。
【0120】
2.2.3 バック表示バッファへのサンプル・バッファのフィルタリング
それぞれのフレーム時に、シーンがサンプル・バッファに完全にレンダリングされると、各サンプルについて最終的に「勝った値」が残る。この時点で、ピクセル転送ユニットPXおよびフラグメント・パイプラインFPを介してフレーム・バッファ22内のピクセル表示バッファ領域にルーティングされ、スパン・ウォーカ・ユニットSW内のピクセル・コピー・アドレス生成ハードウェアおよびピクセル・コピー・データ経路を再使用する、フィルタリング済みピクセルのアレイを取得するために、サンプル・フィルタSFがサンプル・バッファからのサンプルに適用される。
【0121】
コピー、フィルタリング、および累算オペレーションは、ストリーム・コマンドの特別なグループであり、ラスタ化パイプRPは、TBとFBの間、またはこれら内部でのデータの転送を含むメモリ・アドレス生成器となる。コピー経路は図10で強調されている。オペレーションは、FP、PX、コピー、フィルタリング、または累算属性をセットアップするための一連のBRSレジスタ書込み、ならびにそれに続くコピー領域「頂点」(ソースおよび宛先の左上隅、共通の高さと幅)を定義するVPへのBRS書込みによってセットアップすることができる。一実施形態では、コピー領域幅が最後に書き込まれ、コピー・オペレーションをトリガする。ラスタ化パイプはアドレス生成器となり、領域全体のピクセル/テクセル・データの転送を誘導する。コピーが完了すると、RPは通常の処理に戻ることができる。
【0122】
図11は、コピー・フィルタリング、および累算オペレーションに関するデータの流れを示す図である。この図では、図面を簡略化するために、アドレス生成器が2つの別々のボックスとして示される。2つのボックスが識別される。テクスチャ・バッファ20およびフレーム・バッファ22も同様に、図面を簡略化するために2重になっている。イメージ・フィルタという語は、テクスチャ・フィルタTFのもう1つの名前である。
【0123】
コピーおよびサンプル・フィルタ・オペレーション
ブロック・コピー・オペレーションは、ピクセル/テクセルの四角形の領域を、ソース・バッファ内のソース領域から宛先バッファ内の宛先領域に移動するものである。簡単なブロック・コピー・オペレーションには、以下の4種類がある。
・フレーム・バッファからフレーム・バッファへ
・フレーム・バッファからテクスチャ・バッファへ
・テクスチャ・バッファからテクスチャ・バッファへ
・テクスチャ・バッファからフレーム・バッファへ
【0124】
図12は、ピクセル・コピー用のアドレス生成(すなわち、FBからFBへのブロック・コピー・オペレーション)を示す図である。ソースは、ストリーム経路RD_PDTレジスタがPD_PDT_PIXに設定されている場合はフレーム・バッファ内にあり、RD_PDT_TEXの場合はテクスチャ・バッファ内にある。宛先は、ストリーム経路WR_PDTレジスタがWR_PDT_PIXに設定されている場合はフレーム・バッファ内にあり、WR_PDT_TEXの場合はテクスチャ・バッファ内にある。ピクセル転送ブロック機能は、どんなブロック・コピー・オペレーション時にも使用できる。
【0125】
ブロック・コピー・アドレッシング。ソース領域および宛先領域の左上隅は、COPY_{X,Y}レジスタおよびRECT_{X,Y}レジスタによって定義される。RECT_{H,W}は、ソース領域および宛先領域の(共通の)サイズを定義する。これらすべての値には位置合わせの制約がなく、領域は1つのピクセルの解像度を使用して位置決めおよびサイズ変更することができる。ソース領域および宛先領域は、それぞれ割り振られたソースおよび宛先のメモリ・バッファ内に位置する。ソースまたは宛先がフレーム・バッファの場合、メモリ・バッファの起点はFB_{RD,WR}_BASEである。
【0126】
一実施形態では、ホスト・ルーチンが、各アニメーション・フレームをレンダリングするためのマルチパス・プロシージャ内の各パスについて、宛先領域を再プログラミングすることができる。
【0127】
スーパーサンプル・フィルタ(SSF)。フレーム・バッファのスーパーサンプル・バッファ領域にレンダリングされた確率的にサンプリングされたシーンをフィルタリングするために、特別なフィルタが提供される。このオペレーションは、オフスクリーンのスーパーサンプリングされたレンダリング・ソースからオンスクリーンのピクセル表示宛先までのフィルタを使用する、特殊な「フレーム・バッファ間コピー」である。
【0128】
図13〜15は、サンプル・フィルタリングのためのアドレス生成およびフットプリントを示す図である。
【0129】
スーパーサンプル・フィルタ・アドレッシング。ソース領域および宛先領域は、COPY_{X,Y}、RECT_{X,Y}、およびRECT_{H,W}によって再度定義される。ソースはフレーム・バッファのスーパーサンプリングされた領域にあり、宛先はフレーム・バッファのピクセル領域に常駐する。
【0130】
単一のソース・ポイントの代わりに、フィルタ「カーネル」領域(たとえば一実施形態では、ソース空間で、各宛先アドレスに対応するソース・アドレスを中心とし、半径が最高2ピクセルのディスク形領域)が読み取られる。ソース・アドレスがソース領域のエッジ上またはその直近にある場合、カーネルの一部がソース領域の外に出る可能性がある(図13のサンプル「s」を参照)。ソース領域の外に出るカーネルの一部のソースは、SSF_MODE_BORDERによって決定される。
【0131】
スーパーサンプル・フィルタ・プログラミング・モデル。スーパーサンプル・フィルタリングには、宛先スペース内のピクセルに対応する、ソース・スペース(ビン・スペースとも呼ばれる)内の位置を中心とした、フィルタ・サポート領域内に収まるすべてのサンプルのカラー(rgba)の重み付けされた合計を算出することが含まれる。(ソース・スペース内のピクセルもビンと称されることに留意されたい。)
【0132】
それぞれの出力ピクセルについて、ハードウェアはソース・スペース内のカーネル中心(すなわちフィルタ・サポートの中心)を算出する。ただし、第1(または左最上部)のカーネル中心の位置は、ソフトウェアによってRECT_{X,Y}に設定される。オプションで、SSF_MODE_OFFSET_ENABLE(「スーパーサンプル・フィルタ・モード・オフセット実行可能レジスタ」)を使用して、(0.5,0.5)だけオフセットすることができる。カーネル中心用のその後の座標は、ハードウェア・アクセラレータにより、SSF_STEP_SIZEレジスタ(「スーパーサンプル・フィルタ・ステップ・サイズ・レジスタ」)を使用して増分で算出される。これは、XおよびYの両方向に沿ったstep_sizeであってよい。
【0133】
拡大比率。宛先領域は、ソース領域に等しいかまたはこれより大きくてよい。宛先幅対ソース幅の比率が、拡大比率と呼ばれる。これは、SSF_STEP_SIZEの値を選択することによって、間接的に指定することが可能であり、その結果、拡大比率は1.0/SSF_STEP_SIZEとなる。
【0134】
フィルタ・タイプ。一実施形態では、スーパーサンプル・フィルタが使用するフィルタ機能は、ボックス・フィルタまたは円形フィルタのいずれかであってよい。この選択は、SSF_MODEレジスタで指定される。フィルタの半径は、本明細書ではSSF_FILTER_RADIUSと称されるレジスタで指定することができる。
【0135】
ボックス・フィルタ。ボックス・フィルタは正方形のフィルタである。長さ寸法がフィルタ半径、SSF_FILTER_RADIUSの2倍である。各サンプルに、同じ(最大)重さが与えられる。このフィルタは、カーネルによってカバーされるサンプル・ポイントのカラーの平均を取る。
【0136】
図14は、ボックス・フィルタの場合の、SSF読取り「フットプリント」(すなわち、サンプルを1つのフィルタリング済みピクセルに与えるビンのセット)の概念を紹介する図である。図には2つの例が示されており、それぞれ半径が0.5である。
・オフセットが(0.5,0.5)でステップ・サイズが1.0(拡大なし)であれば、第1のピクセルについて(オフセットにより)、ならびに他のすべてのピクセルについて(ステップ・サイズにより)、ソース・スペースでのフットプリントは1×1である。これが図14の左側に図示されている。
・ただし、拡大比率が1.0より大きいか、またはオフセットが(0.5,0.5)でない場合、図14の右側に示されるように、フットプリントは一般に2×2となる。右側の場合は、左側の場合よりもゆっくりと実行される。
【0137】
円形フィルタ。名前からわかるように、このフィルタのカーネルはソース・スペースにおいて円形である。それぞれ半径が2.0の2つの例が、図15に示されている。左の例は、現在のカーネル中心がビンの左隅にある場合に対応する。これは、オフセットが(0.0,0.0)であり、拡大比率が1.0である場合に対応する。
【0138】
図15の右側の例は、現在のカーネル中心がビンの左隅にない場合に対応する。これは、たとえ初期オフセットが(0.0,0.0)であっても、拡大比率が1.0でない場合に対応する。カーネル・サークル(すなわちディスク)内にあるすべてのサンプルが、重み付け合計に寄与する。タイル(たとえば2×2タイルのビン)内のサンプルの位置は、本明細書ではSSF_JITTER TABLEと称されるスーパーサンプル・ジッタ・テーブルで指定される。これらのジッタ値は、最終サンプル位置に到達するために、必要であれば置き換えることができる(詳細は本項の最後で説明)。各サンプル位置でのフィルタ重みは、そのカーネル中心からの半径距離に依存する。
【0139】
フィルタ重みは、半径距離rの関数を表すものである。一実施形態では、フィルタ重みは128個の値のテーブルで提供され、それぞれの重みは範囲(−1.0,1.0)であり、フォーマットs.10である。テーブルは(nr)2で索引付けすることができる。これは、アクセス速度が速く、ゲート・カウントが少ない、ハードウェア・フレンドリに設計される。ここでnrは単に正規化された半径距離、r/Rであり、rはカーネル半径である。
・サンプル密度、すなわちビンあたりのサンプル数。
・置換え制御。実行可能であれば、ソース・スペース・タイル内のサンプル(1タイルは2×2平方ビン)が置き換えられ、その結果128×128ビン境界でのみ複製されるように発生し、その他の場合にはサンプルは2×2ビンごとに複製される。
・一時エイリアス除去用の置換えコード(範囲[0,7])。これにより、各フレームで最高8つの異なるパターンを可能にするために、置換えコードに応じて各フレームで様々なタイルの置換えが可能になる。
使用される実際のサンプルは、SSF_SAMPLE_MASKで選択することができる。
【0140】
コピー・オペレーションの詳細な説明
コピー・オペレーションは、FBまたはTBのいずれかからFBまたはTBのいずれかへ、四角形のピクセル・アレイを移動する。これには、2つの2−Dアドレス(すなわちソースおよび宛先)が含まれる。ソフトウェアは、ソースと宛先の四角形をプリクリップする。
ソース・データは、以下のいずれかであってよい。
・フレーム・バッファ・メモリ(FB)からのピクセル
・オンスクリーン(可視)フレーム・バッファからのピクセル
・オフスクリーン・ピクセル・バッファからのピクセル
・フレーム・バッファ・メモリ(FB)からのサンプル
・オフスクリーン・スーパーサンプル・バッファからのサンプル
・テクスチャ・バッファ・メモリ(TB)からのピクセルまたはテクセル
・テクスチャ・マップからのテクセル
・イメージ・バッファからのピクセル
データは、以下のいずれかにコピーすることができる。
・ピクセルをフレーム・バッファ・メモリ(FB)へ
・ピクセルをオンスクリーン(可視)フレーム・バッファへ
・ピクセルをオフスクリーン・ピクセル・バッファへ
・ピクセルをテクスチャ・バッファ・メモリ(TB)へ
・ピクセルをテクスチャ・マップへ
・ピクセルをイメージ・バッファへ
【0141】
以下の考察で使用されるいくつかの頭字語の凡例を示す。
FWQ=フレーム・バッファ書込み待ち行列
FRQ=フレーム・バッファ読取り待ち行列
TWQ=テクスチャ・バッファ書込み待ち行列
TRQ=テクスチャ・バッファ読取り待ち行列
TRB=テクスチャ・バッファ読取りバッファ
【0142】
スパン・ウォーカ・ユニット(SW)は2つのアドレスを生成する。SWユニットはTBアドレスをTAブロックに送信し、これがTBMおよびTBI(テクスチャ・バッファ・インターフェース)に供給する。SWは、SG、SE、FDPを介してFBアドレスをTEに送信し、これがFPおよびFBIに供給する。ソース・アドレスは、FBまたはTB読取り待ち時間をカバーする十分な先取りを可能にするために、宛先アドレスの前(たとえば一実施形態では約40〜60クロック前)に生成することができる。
【0143】
ソース・データは、FRBブロックまたはTRBブロックからPXMに読み取られ、ピクセル転送ユニット(PX)に供給される。PXユニットは、データの再フォーマット、スケーリング、バイアス、および/または検索(すなわちテーブル・ルックアップの実行)を実行することができる。PX結果データは、TEまたはTBM(それぞれFBまたはTBのコピー宛先の場合)に送信される。TEまたはTBMは、(SW読取りアドレスによって指定された)PX読取りデータがSW書取りアドレスと一致する、「結合」ポイントである。書込みアドレスが(SWまたはTAから)着信する前に書込みデータが(PXから)着信するか、またはその逆の場合、TE/TBMは、PXまたはSWのいずれか前の方を、後のユニットの準備が整うまでストールすることになる。以下のようないくつかの特殊なケースがある。
【0144】
・同じバッファ間でのコピー(TBからTB、またはFBからFB)により、ソース領域と宛先領域が重なり合うがある。したがってアドレス・スキャン・パターンは、コピーが発生する前にソースが重なり合うのを防ぐために、昇順および降順の両方でのオペレーションが可能である。
【0145】
・フレーム・バッファ(FB)22が宛先である場合、フラグメント処理はフレーム・バッファへの途中で実行することができる。
【0146】
・一部の実施形態では、フレーム・バッファがソースの場合、ソース領域が読み出されたときの状態にクリアされるように要求することができる。これは、コピー・オペレーションと並行して、読み出されたときの状態のソース領域に対して高速フィル・オペレーションを効率的に実行する。
【0147】
・一実施形態では、異なるバッファ間(TBからFB、またはFBからTB)でのコピーが、GCKあたり1ピクセルで発生可能であり、パイプライン化される。SWはx,yフィールド(フル・タイルの場合)を介してFBアドレスを指定することが可能であり、TAユニットからのu,v出力を介してTBアドレスを指定する。
【0148】
・同じバッファ間(TBからTB、またはFBからFB)でのコピーの場合、TBおよびFBがそれぞれ単一のアドレス・バスを有することから、SWは、書込みのバーストと交互に読取りのバーストを生成する。バースト・サイズは、FBおよびTB読取りパイプラインの待ち時間(一実施形態では、およそ30〜40GCKと推定される)によって決定することが可能であり、(パイプ・ステージにFWQ/FRQまたはTWQ/TRQ深さを加えた)FBおよびTBパイプライン深さの有効小数であってよい。バーストが大きいほど、メモリ・データ・バス方向を転換させるオーバヘッドを減らし、メモリ・リフレッシュ・バブルを隠して待ち時間を制御するのを助ける。ただし、バースト・サイズがメモリ読取りパイプラインの深さを超えた場合に、デッドロックが発生する可能性がある。
【0149】
・一実施形態では、8、16、または32ビット・ピクセル・フォーマットの畳み込みおよびコピーは、1つの「TBをTBにコピー」コマンドまたは1つの「TBをFBにコピー」コマンドで、最高4つの構成要素(R、G、B、A)をサポートすることができる。
【0150】
・より大きなピクセル・フォーマットの畳み込みおよびコピーには、複数のコピーが必要になる場合がある。たとえば、64ビット・ピクセル・フォーマットの構成要素は、2つの別々のコピー・コマンドで転送することができる。
【0151】
・イメージ変換は、コピー・オペレーションの代わりに、イメージを四角形(補間済みRECTANGLEコマンド)またはTRIANGLEストリップにテクスチャ・マッピングすることによって達成可能である。ハードウェア・アクセラレータ18は、TBからFBへのイメージ変換をサポートすることができる。
【0152】
・立体モードに関するFBからFBへのコピーは、片目のみ(左または右)のコピー、または両目のコピーという、2つの特色で実行することができる。
【0153】
・ピクセルあたりの選択サンプルが1つのループでコピーされる場合、スーパーサンプル・モードでコピーする。
【0154】
コピー・フォーマットおよび宛先
コピーのソース、宛先、およびフォーマットは、RP_{RD,WR,RW}_PDTレジスタおよびRP_{RD,WR,RW}_TIFレジスタで定義される。RP_RD_PDTレジスタの_TEXフィールドはコピーされるデータのソースを定義し、RP_WR_PDTレジスタの_TEXフィールドは宛先を定義する。
・SWは、レジスタによって指定されたソースおよび宛先を使用して、ソースおよび宛先のアドレスを適切に送る。
・PXは、レジスタによって指定されたソースおよび宛先を使用して、受信したデータを適切に送る。
【0155】
コピー・メカニズムは、コピー・データ経路のパイプライン段階およびデータ待ち行列(およそ100のサンプルまたはピクセルについて)でのデータ記憶要素を利用するように編成される。コピー・データ経路には、FRB、TE、PX、FP、FWQ、FBIが含まれる。
FRB:フレーム・バッファ読取りバッファは、FBメモリから読取られるデータ用のバッファである。
FWQ:フレーム・バッファ書込み待ち行列は、FBメモリ要求(アドレスおよびデータの書込み、またはアドレスの読取り)の待ち行列である。
FBA:フレーム・バッファ・アドレッシング・ユニットは、X,Yアドレスをメモリ・ページおよびピクセル/サンプル・アドレスにマッピングする。
FBI:フレーム・バッファ・インターフェースはFBメモリ制御装置であり、DMDキャッシュ(たとえば3DRAMキャッシュ)、グローバル・バス、およびDRAMページ制御を含む。
【0156】
多くの実施形態では、フィルタ中央アドレスを備えたコピー読取りオペレーション・コードのバッチを、TE「結合」ポイント(コピー読取りオペレーション・コードおよびアドレスの結果として生じるフィルタリング済み読取りデータが、コピー書込みオペレーション・コードおよびアドレスとペアになる)でデッドロックすることなく、できる限り多く発行し、その後、(フィルタリング済みピクセル・データを、FBの表示領域に書き込むようにFP方向に下方送信する)表示ピクセル・アドレスを備えたコピー書込み要求の合致バッチの発行に切り替えるものであって、このプロセスはすべてのサンプルがフィルタリングされるまで繰り返される。
【0157】
図16は、ソース・アドレス、宛先アドレス、データ、ならびに結合アドレスおよびデータ流れが強調された、FBからFBのコピー・オペレーションを示す図である。
【0158】
図17は、スーパーサンプル読取りパス(スーパーサンプル・バッファからフレーム・バッファ)でのオペレーション・コード流れを示す図である。
【0159】
図18は、サンプル・フィルタリングおよびバック表示バッファへのコピーのステップを要約した図である。
・スパン・ウォーカSWは、読取りサンプル、フィルタ・サンプル、および書込みピクセルの要求およびアドレスを生成する。読取りおよびフィルタリング要求の各バーストの後には、書込み要求のバーストが続く。
・TEユニットは、読取りサンプルおよびフィルタ・サンプル要求を、フラグメント・パイプを通じてFBメモリ22のサンプル・バッファに渡す。
・FRBは、フィルタ・フットプリントが単一のピクセルよりも大きいときに、前の円形フィルタ・オペレーションから重なり合うサンプルを再使用できるようにするための、サンプル読取りバッファを含む。
・サンプル・フィルタは、サンプルの畳み込みによって、フィルタリング済みピクセルを生成する。RGB結果は、構成要素あたり最高12ビットまで可能である。
【0160】
ピクセルを生成するためのサンプルのフィルタリングに関する詳細については、参照により全文が本明細書に組み込まれた、2001年10月3日付け出願のBurk等による「Programmable Sample Filtering for Image Rendering」という名称の米国特許出願第09/970077号を参照されたい。
・ピクセル転送ユニットPXは、フィルタリング済みピクセル・データを処理し、ガンマ補正を適用する。
・PXピクセル・データは、SW書込みアドレスおよびオペレーション・コードとペアにされ、フラグメント・パイプラインを介して、ダブル・バッファされたFBメモリの「バック」表示バッファ領域まで送信される。
【0161】
2.2.4 バックおよびフロント表示バッファのスワップ
フィルタリング・オペレーションが完了し、フィルタリング済みフレーム・シーンが「バック」表示バッファに入ると、「フロント」と「バック」のバッファ割当てを交換するために「表示バッファのスワップ」オペレーションが実行され、その結果、新しいフレームが可視となり、プロセスが繰り返されるときに次のフィルタリング・フレームを受け取るために、古いフレームの表示バッファが使用可能になる。
【0162】
バッファ・スワップ・オペレーションは、新しいWID(ウィンドウID)エントリをウィンドウ・ルックアップ・テーブル(WLUT)に記入することによって実施できる。
【0163】
図19は、表示ステップを要約した図である。ビデオ出力プロセッサ24(たとえばXチップ)は、表示バッファのフロント・セグメントからピクセルを読み取り、そのピクセルをRGB DAC(またはビデオ・エンコーダ)に送信する。RGB DACは、ピクセル・ストリームをアナログ・ビデオ信号に変換し、これが表示用のビデオ出力ポートに提供される。
【0164】
2.3 変形形態
以上、サンプル・レンダリング・プロセス、サンプル・フィルタリング・プロセス、およびピクセル表示プロセスの基本的流れについて述べてきたが、次に、このテーマに関するいくつかの変形形態について論じる。
【0165】
2.3.1 フィルタリング済みピクセルの高精度ガンマ補正
以下の考察では、フレーム・バッファのサンプル・バッファが、サンプルあたりカラー構成要素あたり、Nbpc=10ビットまで格納することができると想定される。ただし、記載された原理は、パラメータNbpcの任意の正の整数値への一般化を認めるものである。
【0166】
図9に示されたレンダリング・ステップ中に、サンプル値は、FBサンプル・バッファに格納できる構成要素あたり10ビットよりもより多くのビット精度で知られる。オプションの「ディザリング」ユニットが、サンプル生成器SGに含まれる。「ディザリング」オプションが実行可能であれば、R、G、およびBのサンプル値を、サンプルのアドレスのサブピクセル部分(XおよびYの小数部分)に基づき、1つのLSB(2−10)によってディザリングすることができる。サンプル値の小数部には、1つのLSBにR、G、またはBが加えられることになる。ディザリング機能は、1LSBずつ増分されるピクセル・サンプル値の小数部を、最低位サンプル値ビットに比例させるものである。
【0167】
「サンプル・バッファのフィルタリング/コピー結果を表示バッファへ送る」ステップ(図18)では、畳み込みオペレーションが「平均」効果を有する。ボックス・フィルタの場合、フィルタは等しく重み付けされたサンプル値の平均を精密に送ることができる。レンダリング・ステップによってサンプルの小数が1LSBずつ増えた結果、平均は、その小数掛ける1LSBずつ増えることになり、失われた情報が「回復」される。同じ引数がより複雑なフィルタに対してほぼ真となる。最終的な効果は、サンプル密度をそれぞれ倍にするためにおよそ1ビットを「回復」(または格納された10ビット精度へ追加)することである。サンプル密度4またはそれ以上の場合、2ビットが回復可能であるため、サンプル・フィルタは、それぞれのカラー構成要素について12の有効ビットをPXユニットに送信することができる。より一般的に言えば、回復可能ビット数はサンプル密度の2を底とする対数として変化する。
【0168】
PXユニットには、R、G、およびBに関する「12ビット・イン:10ビット・アウト」ルックアップ・テーブルが含まれる。これらは、(線形シェード付きサンプル値とモニタ/人間の眼の機構の非線形特性との相違を補正するための)ガンマ補正機能と共にロードすることができる。多くの従来技術のシステムでは、フレーム・バッファ内に構成要素あたり8ビットしか格納せず、ガンマ補正機能の非線形性により、濃いシェード付き領域ではさらに精度が失われ、これらのシステムでは濃いシェード付き領域が「マッハ・バンド」の量子化を受ける。本明細書に記載されたディザリング・メカニズムによって特別な2ビット入力が回復することで、より多くのフレーム・バッファ・メモリおよびより広いフレーム・バッファ・メモリ・バスにかかる追加のコストなしに、ほとんどのシステムで送ることができるよりも滑らかなイメージのシェーディングが生成される。
【0169】
ディザリング済みサンプルから精度を回復させるための平均化に関する詳細については、参照によりその全文が本明細書に組み込まれた、2001年1月11日付け出願のDeering等による「Recovering Added Precision from L−Bit Samples by Dithering the Samples Prior to an Averaging Computation」という名称の米国特許出願第09/760512号を参照されたい。
【0170】
2.3.2 立体ビジョン
立体ビジョン・システムは、1つは左目の視点から見たビュー、1つは右目の視点から見たビューという、シーンの2つのビューをレンダリングおよび表示する。これは、1回目は左目のパースペクティブ変換マトリクスを使用し、次に再度右目のパースペクティブ変換マトリクスを使用することで、同じシーン・ジオメトリを2回レンダリングすることによって達成される。2つのレンダリングは2つの異なる表示バッファに格納される。格納された2つのレンダリングは、2つのビデオ・チャネルによってそれぞれ表示することができる(たとえば「ゴーグル」ヘッド取付け型ディスプレイの場合)。オプションで、格納された2つのレンダリングを同じディスプレイ上に交互に表示することができる(たとえば、位相のずれた左目と右目の液晶「シャッタ」をディスプレイの更新と同期させる、立体眼鏡を使用して見る場合)。
【0171】
2つの表示バッファに関する要件により必要な表示メモリは増えるが、サンプル・バッファがスワッピングの前にフィルタリングされて表示バッファにコピーされる場合、サンプル・バッファ要件は増えない。これは、ビデオ・リフレッシュ時にフィルタリングし、それぞれの目に1つずつ、合計2つのサンプル・バッファを必要とするシステムの場合はあてはまらない。
【0172】
したがって本明細書で説明する「フィルタリングおよびコピー」の方法は、サンプル・バッファのメモリ要件を倍増させるような出費なしに、立体ビジョンをサポートするものである。
【0173】
2.3.3 フィルタリング時クリア
基本的なフレーム処理ループには、以下の形式がある。
【0174】
ループあたりの合計時間は、次のようになる。
clear_time+render_time+filter_copy_time+swap_time
【0175】
サンプル・フィルタリングと並行したサンプル・バッファ・クリア・オペレーションの実行方法に関する教示については、参照によりその全文が本明細書に組み込まれた、Lavelle等による「Parallel Read withSource−Clear Operation」という名称の2002年1月31日付け出願の米国特許出願第10/066397号を参照されたい。
【0176】
FBIに注入された読取り/クリア/書込み機能(上記の出願に記載)を使用して、サンプル・バッファのフィルタリングとサンプル・バッファのクリアを組み合わせることにより、フレーム処理ループを高速化することができる。サンプル・バッファは、サンプルがサンプル・フィルタに読み込まれた直後にクリアされる。読取り/クリア/書込み機能を使用すると、フレーム処理ループは以下のようになる。
【0177】
これによりクリア時間をフィルタ時間と並行させるため、ループあたりの合計時間は次のようになる。
render_time+max(filter_copy_time,clear_time)+swap_time
【0178】
たいていのフィルタでは、クリア時間がフィルタ時間よりも短いため、クリア時間が「なし」になる。したがって、上式は以下のように簡略化できる。
render_time+filter_copy_time+swap_time
【0179】
2.4 レンダリング性能パラメータ
様々な方法の性能を理解するには、何らかの主要な性能パラメータを定義することが役立つ。図20は、レンダリング性能パラメータを要約した図である。以下の考察は、一実施形態に関して典型的な値を与えるものである。ただし、他の実施形態に様々な他の値も当てはめることができる。
【0180】
・頂点速度Rvは、ホスト・プログラム・ホスト・インターフェース11(たとえばNUPAバス)、メディア・プロセッサの変換/ライト/クリップ・マイクロコード、メディア・プロセッサ14とハードウェア・アクセラレータ18との間のインターフェース(たとえばSUPAバス)のうち最も遅いものによって制限される。頂点速度は、頂点タイプおよびライト(光)の数に応じて変化し、マイクロコードによって制限することができる。典型的なRv値は33M頂点/秒である。
【0181】
・分離された三角形は、1つの三角形に3つの頂点を有する。大きな三角形メッシュの場合、三角形あたりの頂点数は、0.5頂点/三角形の限界値に向かって減少する。長い三角形ストリップの場合、限界値は1頂点/三角形である。短い三角形ストリップの場合、頂点/三角形は1から3の間である。この考察では、長い三角形ストリップが想定される。
【0182】
・プリミティブ速度Rpも、ラスタ化パイプラインRPによって制限することができる。典型的なRp値は、33M三角形/秒である。
【0183】
・ラスタライザのピクセル・シェーディング速度Rzは、エッジ・ウォーカEWおよびスパン・ウォーカSWによって制限することができる。典型的なRz値は666Mピクセル/秒である。
【0184】
・サンプル生成速度Rsは、サンプル生成器SGユニットおよびサンプル評価器SEユニットによって制限することができる。典型的なRs値は、「バディ(buddy)」モードであると想定した場合に1333Mサンプル/秒であり、「バディ」モードなしの場合は666Mサンプル/秒である。
【0185】
・テクスチャ処理速度Rtは主にテクスチャ・メモリ帯域幅およびテクスチャ・フィルタ・タイプ選択によって制限される。典型的なRt値は、バイリニア・フィルタおよび1層テクスチャの場合に、166Mテクスチャ化ピクセル/秒である。より複雑なフィルタおよび/またはより多いテクスチャ層は、かなり低速になる可能性がある。
【0186】
・テクスチャ化サンプル(フラグメント)書込み速度Rwは、フラグメント・パイプラインFP(本明細書ではフラグメントプロセッサとも称される)、FBインターフェース、およびFBメモリによって制限することができる。設計により、RwはRsと同じ(「バディ」モードで1333Mサンプル/秒)になる。
【0187】
前述のように長い三角形ストリップを想定すると、三角形あたりの頂点数は1に近づき、その結果、三角形速度に関する頂点限界値およびラスタ化セットアップ制限値は、ほぼ以下に等しくなる。
Rtri=min(Rv/1,Rp)=33Mtri/sec
【0188】
サンプル・フィル速度は、サンプル生成器SG、テクスチャ処理ピクセル速度×サンプル密度、ラスタライザ・ピクセル速度×サンプル密度、およびフラグメント書込み速度のうち、最も遅いものによって制限することができる。ただし、RwはRsと同じであり、RzはRtよりはるかに大きいため、
Rsfill=min(Rs,D*Rt,D*Rz,Rw)=min(Rs,D*Rt)
であって、Rs=1333Mサンプル/秒(「バディ」モードであると想定)およびRt=166Mテクスチャ化ピクセル/秒(バイリニア・フィルタおよび1層のテクスチャであると想定)を付加すると、サンプル密度(D)が最高8の場合、サンプル・フィル速度は以下のようにテクスチャ速度制限される。
Rsfill=min(Rs,D*Rt)=min(1333,166D)Msamp/sec
【0189】
シーン内のP個の三角形(残りのデータベースがホストによってビュー・フラスタム・カリングされたと想定する)、Awウィンドウ領域、C深さ複雑性、およびDサンプル密度を備えたフレームをレンダリングするための時間は、
render_time=max(tri_time,fill_time)
であり、上式では
tri_time=P/Rp
fill_time=(Aw *C*D)/min(Rs,D*Rt)
である。
【0190】
Awウィンドウ領域およびDサンプル密度を備えたフレームをレンダリングする前に、サンプル・バッファをクリアするための時間は、以下のようになる。
clear_time=D*Aw/Rc=0.188DAwnsec
【0191】
2.5 フィルタリング性能パラメータ
図21は、フィルタリング性能パラメータを示す図である。
【0192】
・サンプル読取り速度Rrは、FBインターフェースおよびFBメモリによって制限することができる。典型的なRrの値は、333Mサンプル/秒である。
【0193】
・サンプル・フィルタ・ピクセル速度Rfは、サンプル読取りバッファ内のフィルタ・フットプリント、サンプル密度、およびキャッシング量によって制限することができる。
【0194】
・ピクセル結果に精密に一致するフットプリントを備えた、単純な拡大していないボックス・フィルタの場合、フィルタ速度は、読取りサンプル速度Rrをサンプル密度Dで割った値に制限することができる。
【0195】
・拡大されたボックスおよび円形フィルタの場合、畳み込み計算に関係するサンプルの数は、フットプリント半径の2乗と共に増加し、読み取られるサンプル数は半径に比例して増加する。半径が増加すると畳み込み計算が障害となる可能性があり、より複雑なフィルタの場合、フィルタ速度は2分の1またはそれ以上に低下する可能性がある。この性能に関する考察は、高速ボックス・フィルタの場合に限定される。
【0196】
・フラグメント書込み速度Rwは、フィルタ/コピー速度を低下させる、結果を表示バッファに書き込むための時間を設定する。ピクセルを書き込む場合、この速度は666Mピクセル/秒であってよい。
【0197】
拡大されていないボックス・フィルタの場合に、結果をフィルタリングおよびコピーするための合計時間は、
filter_time=(Aw *D/Rr)+(Aw/Rw)
filter_time=(3D+1.5)Awnsec
となり、これは、サンプル密度が高くなると3DAwに近づく。
【0198】
3.0 ウィンドウ・サイズあたりのサンプル・バッファ(SB)の動的割振り
FBメモリ内のサンプル・バッファのサイズは、ウィンドウ・サイズの変化に応答して動的に調整することができる。
【0199】
・Wd×Hdピクセルの表示の場合、FBには、少なくともWd×Hd(典型的にはこれよりわずかに多い)の(ダブル・バッファされた)ピクセル表示バッファ・メモリが必要である(すなわち、ピクセル単位のほぼ表示サイズ)。
【0200】
・ウィンドウ・システムでは、全画面サイズよりも小さいウィンドウにレンダリングすることが多い。WW×HWピクセルのウィンドウでは、FBには、少なくともDS×WW×HW(典型的にはこれよりわずかに多い)の(単一バッファ付き)サンプル・バッファ・メモリが必要である(すなわちほぼウィンドウ・サイズ×サンプル密度)。
【0201】
・FBメモリの容量が有限(一実施形態では520万サンプル/ピクセルのメモリ)であり、FBメモリは表示バッファとサンプル・バッファとで共用されるため、最大サンプル密度は、ほぼ以下の整数下限である。
{(ピクセル/サンプル単位のFBサイズ−ピクセル単位の表示サイズ)÷(ピクセル単位のウィンドウ・サイズ)}
【0202】
・これは、解像度の低い表示および/またはサイズの小さいウィンドウでも、固定サイズのフレーム・バッファで高いサンプル密度をサポートできることを意味する。
【0203】
したがって、ホスト・コンピュータ上で実行中のソフトウェアは、現在のウィンドウ・サイズを監視し、固定サイズのフレーム・バッファを最大限に活用するようにサンプル密度を自動的に調整することができる。ユーザが小さなウィンドウ・サイズを選択する(またはそのサイズに変更する)と、グラフィックス・レンダリング・システムの適切なハードウェア・レジスタのセットに書き込むことによって、ホスト・ソフトウェアはサンプル密度を高く調整することが可能であり、またその逆も可能である。
【0204】
ハードウェア・アクセラレータ18は、ピクセル領域あたりで生成されるサンプル数を制御する、1つまたは複数のサンプル密度レジスタを有することができる。サンプル生成器SGは、サンプル密度フィールドを備えた制御レジスタを有することができる。サンプル密度フィールドは、ピクセル領域あたりで生成されるサンプル・ポジションの数を決定する。フレーム・バッファ・アドレッシング・ユニット(FBA)は、フラグメント・アドレスをメモリ・ページおよびデータ・アイテムアドレスにマッピングする責務を負っており、マッピングがサンプル密度に依存するため、サンプル密度レジスタを有することができる。サンプル・フィルタはサンプル密度レジスタを有することができるため、そのフィルタリング・オペレーションのためにピクセル領域あたり適切な数のサンプルを取り込むことができる。サンプル密度レジスタは、動的に調整可能である。
【0205】
ホスト・ソフトウェアは、サンプル密度を変更するために、ハードウェア・アクセラレータ内の1つまたは複数のサンプル密度レジスタに書き込むことができる。一実施形態では、ホスト・ソフトウェアはすべてのサンプル密度レジスタに同じ値を書き込む。
【0206】
ウィンドウのサイズは全画面よりも小さい場合が多い。したがって、ユーザがより大きなウィンドウを選択すると、よりピクセルの多い解像度が得られるため、イメージ品質を上げることができる。
【0207】
それとは逆に、ユーザがウィンドウを小さくすると、動的割振りメカニズムはピクセルあたりのサンプル数を多くして、イメージ品質を維持する。
【0208】
本明細書で使用される「マルチサンプル」という語は、「スーパーサンプル」と同じ意味である。
【0209】
2.1.3項の例で示されるように、(サンプル・バッファを画面全体に対応するように設定しようとするのではなく)サンプル・バッファ・サイズをウィンドウ・サイズに合わせて調整すると、サンプル密度を大幅に増加させることができる。1280×1024表示の場合、ほぼ全画面のウィンドウは1パスで2サンプル/ピクセルをサポートすることが可能であり、1000×1000ウィンドウは3サンプル/ピクセル、720×670は8サンプル/ピクセルがサポート可能であって、かなり品質が良い。
【0210】
サンプル密度を最高にするためにサンプル・バッファ・メモリを動的に割り振るこのメカニズムは、以下の項で述べるメカニズム、すなわち、高いサンプル密度および/または立体ビジョンのための複数のパスと組み合わせることができる。動的メモリ割振りと複数パス・レンダリングの組合せにより、ユーザは、目標とする品質レベル(たとえば所望のサンプル密度)を指定することが可能であり、システムは、現在のウィンドウ・サイズを考慮して、その目標とする品質レベルを達成するのに必要なフレームあたり最小数の(または最小数に近い)パスを実行する。あるいは、ユーザは最低性能目標(たとえば最大フレーム・レンダリング時間)を指定することが可能であり、システムは、最低性能ターゲットよりも上の性能を維持しながら(たとえば、最大フレーム・レンダリング時間内でフレームをレンダリングしながら)、可能な最高サンプル密度を送る。
【0211】
4.0 立体ビジョンのためのサンプル・バッファの再使用
立体ビジョン(2.3.2項に記載)の一般的な一方法は、1回目は左目のパースペクティブ変換マトリクスを使用し、次に再度右目のパースペクティブ変換マトリクスを使用することで、同じシーン・ジオメトリを2回レンダリングすることによって達成される。2つのレンダリングは2つの異なる表示バッファに格納され、同じディスプレイ上に交互に表示することができる(たとえば、位相のずれた左目と右目の液晶「シャッタ」をディスプレイの更新と同期させる、立体眼鏡を使用して見る場合)。
【0212】
表示バッファが2つあると、より多くのフレーム・バッファ・メモリを消費する。ただし、本明細書に記載された「フィルタリング後コピー」方法(すなわちサンプルをオフスクリーン・サンプル・バッファにレンダリングし、サンプル・バッファからバック・ピクセル表示バッファにフィルタリングし、その後表示バッファ切替えを実行する方法)は、サンプル・バッファ要件を増やすことがない。したがって、サンプル・バッファ・メモリを倍増させるような出費なしに、立体ビジョンをサポートすることができる。
【0213】
図22は、立体表示のためのサンプル・バッファの再使用を示す図である。
【0214】
ホスト・ドライバ・ルーチンは、FBメモリ内で左および右の表示バッファを割り振った後に、残りのFBメモリを単一の再使用可能サンプル・バッファとして割り振ることができる。ソフトウェア・アプリケーション(ホスト・コンピュータ上で実行中)は、以下のレンダリング・ループを実施することができる。
この方法により、固定のサンプル・バッファ・サイズについてサンプル密度が2倍になる。
【0215】
5.0 増加したサンプル密度のためのSBの再使用
サンプル・バッファ容量は、表示バッファ要件を差し引いた後で残ったフレーム・バッファ・メモリを決して超えることはない。所与のサイズのウィンドウでは、1つのレンダリング・パスでサポートできる最大のサンプル密度を限度としている。
【0216】
しかし、本明細書に記載された「フィルタリング後コピー」方法を使用すれば、グラフィックス・アプリケーションがサンプル・バッファを再使用して、サンプル・バッファ・メモリ・サイズを増やすことなく、より高いサンプル密度を達成することができる。グラフィックス・アプリケーションは、グラフィックス・レンダリング・システムを使用して、(単一パスでシーン全体がレンダリングされるよりも)高いサンプル密度で、パスあたり1領域、複数パスのシーン内で複数の領域をレンダリングし、表示バッファをスワッピングする前にリア表示バッファでシーン全体を構築することができる。
【0217】
この方法により、より多くのレンダリング・パスを高いサンプル密度と交換することができる。この方法は、(screen_resolution)ダブル・バッファされたメモリに、以下のサイズのサンプル・バッファ・メモリを加えたものを使用する。
(sample_density*window_size/number_of_passes)
【0218】
5.1 アルゴリズム
図23は、高いサンプル密度を達成するための固定サイズのサンプル・バッファの再使用を示す図である。
【0219】
FBメモリで表示バッファを割り振った後、ホスト・ソフトウェア(たとえばホスト・ドライバ・ルーチン)は、残ったFBメモリを単一の再使用可能サンプル・バッファとして割り振ることができる。ホスト・ソフトウェアは、バック表示バッファをN個の隣接する領域に分割することが可能であり、ここでNはシーン・フレームあたりに実行されるパスの数である。したがってNは、1より大きいかまたは等しい整数である。表示メモリ割振りページの形状(その一実施形態が、図6の表に例示されている)により、表示バック・バッファをほぼ同じサイズのN個の領域に分割することが有利である。次にグラフィックス・アプリケーションは、以下のレンダリング・ループを実行することができる。
サンプル・バッファへのレンダリングは所望のサンプル密度で実行され、これはパスが1つしか使用されない場合に可能な密度のN倍まで可能である。
【0220】
2.1.2項に示されるように、ドライバ・ソフトウェアは、整数のFBメモリ・ページ・サイズに切り上げるため、およびサンプル・フィルタ(一定のモードの)は領域からはみ出すフットプリント(またはサポート領域)を有することができる(たとえば領域のエッジ上またはエッジ付近のピクセルを計算する場合)ため、領域サイズ(すなわち、サンプル密度×ウィンドウ幅×ウィンドウ高さ)よりも1ビット大きいサンプル・バッファを割り振ることが可能である。単純な拡大されていないボックス・フィルタ(単一ピクセルの領域をカバーする)の場合、特別な境界線は不要である。
【0221】
5.2 サンプル密度の例
・単一ヘッドの1280×1024の非立体表示の場合、表示バッファは(ceiling(1280/320)*ceiling(1024/16))=256ページのFBメモリを使用する。これで(1024−256)=768ページがサンプル・バッファ用に残される。
(ceiling(960/80)*ceiling(900/16))=684ページであり、768ページよりも少ないため、単一のパスは、サンプル密度4で960×900ピクセルのウィンドウをサポートすることができる。
(ceil(960/40)*ceil(450/16))=696ページであり、768ページよりも少ないため、2つのパスは、サンプル密度8で960×900ピクセルのウィンドウをサポートすることができる。
(ceil(960/40)*ceil(225/8))=696ページであり、768ページよりも少ないため、4つのパスは、サンプル密度16で960×900ピクセルのウィンドウをサポートすることができる。
【0222】
・単一ヘッドの960×680の立体表示の場合、表示バッファは(ceil(960/320)*ceil(680/8))=255ページのFBメモリを使用する。これで(1024−255)=769ページがサンプル・バッファ用に残される。
(ceil(960/80)*ceil(680/12))=684ページであり、769ページよりも少ないため、単一のパスは、サンプル密度5で960×680の全画面表示をサポートすることができる。
(ceil(960/40)*ceil(340/12))=696ページであり、769ページよりも少ないため、2つのパスは、サンプル密度10で960×680の全画面表示をサポートすることができる。
(ceil(960/40)*ceil(227/8))=696ページであり、769ページよりも少ないため、3つのパスは、サンプル密度16で960×680の全画面表示をサポートすることができる。
【0223】
5.3 性能分析
ホスト・アプリケーションは、所与の各パスで使用される領域と一致するようにビュー・フラスタムを設定することができる。したがって、シーンの中で表示バッファ内の現在の領域に投影されない部分は、クリッピングされることになる。この方法を使用すると、領域サイズが小さくなるにつれて、各パスのレンダリングおよびフィルタリング時間が少なくなる。高いサンプル密度でシーン全体(N個の領域すべて)をラスタ化およびフィルタリングするための合計時間が、より多くのメモリを備えたより高価なシステムで高いサンプル密度での単一パスにかかる時間に近づけることができることに留意されたい。
【0224】
バッファ・クリア時間。ウィンドウ領域AWおよびサンプル密度Dのフレームをレンダリングする前に、サンプル・バッファをクリアするための時間は、(少なくとも一部の実施形態では)以下の式で概算することができる。
clear_time=D*AW/RC=0.188DAWnsec
【0225】
グラフィックス・アプリケーションが、それぞれ領域AW/N、サンプル密度N*Dで、N個のパスをN個の対応する領域に流入させると、合計クリア時間(N個のパスについて)は、サンプル密度比率(ND/D)に比例して以下のように増加する。
clear_time=N*D*AW/RC=0.188NDAWnsec
【0226】
フィルタリング/コピー時間。2.5項から、拡大されていないボックス・フィルタについての結果をフィルタリングおよびコピーするための合計時間は、以下の通りであることを想起されたい。
filter_time=(AW *D/Rr)+(AW/RW)
filter_time=(3D+1.5)AWnsec
【0227】
グラフィックス・アプリケーションが、それぞれ領域AW/N、サンプル密度N*Dで、N個のパスをN個の対応する領域に流入させると、合計フィルタリング/コピー時間(N個のパスについて)は、サンプル密度比率(ND/D)に比例して以下のように増加し、
filter_time=N*(3ND+1.5)(AW/N)nsec
filter_time=(3ND+1.5)Ansec
これで、高いサンプル密度および複数のパスの場合、3NDAWに近づく。
【0228】
サンプル・フィル時間。2.4項から、
Rsfill=min(Rs,D*Rt)=min(1333,166D)Msamp/sec
であることを想起されたい。したがって、単一のバイリニア・テクスチャの場合、D<8であれば、システムはテクスチャ速度を以下のように制限することが可能であり、
Rsfill(D<8)=166DMsamp/sec
さらにD>=8であれば、システムはサンプル速度を以下のように制限することが可能である。
Rsfill(D>=8)=1333Msamp/sec
【0229】
より複雑なテクスチャリングの場合、Dのしきい値がさらに高くなることさえある。D<8の場合、1つのパス、サンプル密度Dで、ピクセルをウィンドウ・サイズAWにフィルするための時間は、以下のようになる。
fill_time=(AW *C*D)/166*D=(AW *C)/166microsec
【0230】
あるいは、グラフィックス・アプリケーションが、それぞれ領域AW/N、サンプル密度N*Dで、N個のパスをN個の対応する領域に流入させると、(NDは依然として8より小さいかまたは等しいと想定する)合計フィル時間(N個のパスについて)は増加しない。
fill_time=N*((AW/N)*C/166=(AW *C)/166microsec
【0231】
したがって、単一のバイリニア・テクスチャリングの場合、複数のパスはフィル時間を増やさずにサンプル密度を8まで上げることができる。より複雑なテクスチャリングの場合、フィル時間を増やさずにサンプル密度をより高くすることさえ可能である。
【0232】
三角形ラスタ化セットアップ時間。ホストのビュー・フラスタム・カリングおよびハードウェアのクリッピングが行われた後に(言い換えれば、シーン内の三角形がウィンドウ内部にある)、P個の三角形を備え、ウィンドウ領域AW、深さ複雑性C、およびサンプル密度Dで、フレームのラスタ化を設定するための時間は、以下のようになることを想起されたい。
tri_time=P/RP=3Pnsec
【0233】
シーンがN個の領域に区分されている場合、各領域には、ウィンドウAW内で見えるP/Nのプリミティブより平均して少し多く収まることになる(すなわち、領域の境界線をまたがるプリミティブは部分的に両方の領域にあることになる)。したがって、N個の領域をレンダリングするための合計時間は、大幅には増加しない(少なくともPが大きくNが小さい場合)。
tri_time=N*3((P/N)=3Pnsec
【0234】
頂点処理時間。
ホストが、ハードウェア処理と全面的に重なる「完全な」ビュー・フラスタム・カリングを実行した場合、シーンがN個の領域に区分されていれば、V/Nより少し多い頂点が各領域に収まることになる(領域の境界線をまたがるプリミティブは部分的に両方の領域にあることになる)。N個の領域で頂点を変換およびライティングするための合計時間は、大幅には増加しない(Vが大きくNが小さい場合)。
(lower bound)vtx_time=N*3(V/N)=3Vnsec
【0235】
ビュー・フラスタム・カリングが完全でない(またはまったくない)場合、頂点処理の負荷はN倍ずつ増加する可能性がある。
(upper bound)vtx_time=N*3P=3PNnsec
【0236】
フレーム時間。まとめると、合計アニメーション・フレーム時間は以下のようになる。
frame_time=clear_time+render_time+filter_time+swap_time
【0237】
アニメーション・フレーム速度は、アニメーション・フレーム時間に単純に反比例する。
【0238】
グラフィックス・レンダリング・システムは、ダブル・バッファされたバッファ・スワップを実行するために、ウィンドウ・ルックアップ・テーブルを介して間接的な処置を使用することができる。したがって、swap_timeはわずかである(テーブル・エントリを更新するための時間のみ)。2重バッファ・スワップが(よりスムースなアニメーションのために)意図的に表示帰線と同期される場合、単にswap_timeは、合計frame_timeを表示フレーム時間の整数倍となるように量子化する効果を有する。この場合、次の頂点帰線を待つために費やす時間は、合計アニメーション・フレーム時間を増やすことなく、他の3回での穏やかな増加をマスクすることができる。
【0239】
本明細書でさまざまな処理速度に引用された例示的な値は、限定的なものではない。これらの処理速度は、実施形態によって様々な範囲の値を達成することができる。
【0240】
要約
サンプル・メモリを追加せずにサンプル密度を上げるために、N個のパスが使用される場合、
・サンプル・バッファのクリアおよびフィルタリング時間は、サンプル密度に比例して増加する(より多くのメモリが使用される場合と同様)。
・しきい値(この例ではサンプル密度8であり、図20に示されるように、相対的な性能と、サンプルおよびテクスチャの処理経路を並行して機能させることによって設定される)を下回る場合、サンプル・フィル時間は増加しない。
・三角形ラスタ化時間は、大幅には増加しない(領域の境界上にある数個の三角形は2回処理される)。
・頂点処理時間は、N倍を超えない程度ずつ増加するが、グラフィックスプロセッサの前の効率的なビュー・フラスタム・カリングに伴うわずかな増加に近づくことができる。
【0241】
これは、フィル速度が制限されている(一般的なケース)シーンの場合、メモリを追加することなく、また性能を著しく損なうことなく、サンプル密度を上げることができることを意味する。
【0242】
頂点速度が制限されている場合、性能の低下はN分の1ほどにはならず、ビュー・フラスタム・カリングによって減らすことができる。
【0243】
たとえ大幅な性能の低下が発生しても、この方法は、性能と引き換えにより高いサンプル密度(すなわちよりよい品質)を得ることができる。サンプル密度は、コストまたは技術的に制限されていても、メモリの制限値を超えて増やすことが可能である。
【0244】
6.0 立体ビジョンおよびサンプル密度の増加
グラフィックス・アプリケーションは、「立体ビジョンのためのサンプル・バッファの再使用」(4.0項)と「増加したサンプル密度のためのサンプル・バッファの再使用」(5.0項)の両方を活用するように、グラフィックス・レンダリング・システムを構成することができる。
【0245】
図24は、より高いサンプル密度を達成するためのサンプル・バッファの再使用を示す図である。
【0246】
さらに、3.0項(すなわち「ウィンドウ・サイズあたりのSBの動的割振り」)で述べたように、グラフィックス・アプリケーションは、どちらかまたは両方の技術(すなわち立体ビジョンのためのSBの再使用および/または増加したサンプル密度のためのSBの再使用)を、現在のウィンドウ・サイズおよびユーザ基本設定(目標サンプル密度または目標フレーム速度)に基づいた動的割振りと組み合わせるように構成することができる。
【図面の簡単な説明】
【図1A】グラフィックス・レンダリング・システムの一実施形態を示す図である。
【図1B】グラフィックス・レンダリング・システム内のハードウェア・アクセラレータの一実施形態を示す図である。
【図1C】グラフィックス・レンダリング・システム内のハードウェア・アクセラレータの他の実施形態を示す図である。
【図1D】グラフィックス・レンダリング・システム内のメディア・プロセッサの一実施形態を示す図である。
【図2】グラフィックス・レンダリング・システムの他の実施形態を示す図である。
【図3】フレーム・バッファ・データ・ユニット(たとえばピクセルまたはサンプル)内のビット・プレーンの割振りに関する例示的な実施形態を示す図である。
【図4】フレーム・バッファ・データ・ユニット(たとえばピクセルまたはサンプル)内のビット・プレーンの割振りに関する例示的な実施形態を示す図である。
【図5】フレーム・バッファ中の表示バッファおよびスーパーサンプル・バッファの割振りの一例を示す図である。
【図6】様々なフレーム・バッファ・モードでのメモリ割振りページ・サイズ(ピクセル単位)の一実施形態を示す図である。
【図7】サンプル・バッファの領域をクリアするための高速フィル機能の一実施形態を示す図である。
【図8】マルチサンプル(すなわちスーパーサンプル)をサンプル・バッファにレンダリングするためのプロセスの一実施形態を示す図である。
【図9】グラフィックス・レンダリング・パイプラインの一実施形態におけるサンプル処理およびテクスチャ処理リソースの並行処理を示す図である。
【図10】コピー・オペレーションのセットで使用されるコピー経路を示す図である。
【図11】コピー、フィルタリング、および累算のオペレーション・セットに関するデータ流れを示す図である。
【図12】ピクセル・コピー・オペレーション(すなわち、フレーム・バッファからフレーム・バッファへのブロック・コピー・オペレーション)のためのアドレス生成を示す図である。
【図13】サンプル・フィルタリング・オペレーションのためのアドレス生成を示す図である。
【図14】1×1平方のサポート領域を有するフィルタを使用したサンプル・フィルタリングのための例示的なフットプリントを示す図である。
【図15】半径R=2のディスク形サポート領域を有するフィルタを使用したサンプル・フィルタリングのための例示的なフットプリントを示す図である。
【図16】ソース・アドレス、宛先アドレス、データ、およびアドレスとデータの結合流れを強調した、フレーム・バッファからフレーム・バッファへのコピー・オペレーションの一実施形態を示す図である。
【図17】スーパーサンプル読取りパスでのオペレーション・コードの流れを示す図である。
【図18】一実施形態での、結果ピクセルをバック表示バッファへサンプル・フィルタリングおよびコピーするステップを示す要約図である。
【図19】一実施形態での、表示バッファの前半分からのデータを表示するステップを示す図である。
【図20】サンプル・バッファへのサンプルのレンダリングに関する、レンダリング性能パラメータのセットを示す図である。
【図21】サンプル・バッファからのサンプルのフィルタリングに関する、フィルタリング性能パラメータのセットを示す図である。
【図22】一実施形態での、立体表示のためのサンプル・バッファの再使用を示す図である。
【図23】他の実施形態での、より高いサンプル密度を達成するための固定サイズのサンプル・バッファの再使用を示す図である。
【図24】立体実施形態での、より高いサンプル密度を達成するためのマルチパス・レンダリングを示す図である。
【符号の説明】
14 メディア・プロセッサ
16 共用メモリ(DRDRAM)
18 ハードウェア・アクセラレータ
20 テクスチャ・バッファ
22 フレーム・バッファ
24 ビデオ出力プロセッサ
26 RGB DAC
28 ビデオ・エンコーダ
30 ブートPROM
104 ホスト・バス
【発明の属する技術分野】
本発明は、一般にコンピュータ・グラフィックスの分野に関し、より詳細には、最適なスーパーサンプル密度を達成するためにサンプル記憶域を動的に再割当てするように構成された、かつ/またはターゲットとなるイメージ品質を達成するためにいくつかのレンダリング・パスを動的に調整するように構成された、グラフィカル・コンピューティング・システムに関する。
【0002】
【従来の技術】
グラフィカル・コンピューティング・システムはスーパーサンプリングを実施することが可能であり、すなわちピクセル解像度よりも高いサンプルを生成することが可能であり、ピクセルを生成するためにサンプルをフィルタリングすることが可能である。最終的なイメージ品質は、サンプル密度(すなわち、単位ピクセル領域あたりで生成されるサンプル数)にある程度依存する。さらに、グラフィカル・コンピューティング・システムは、ユーザが画面上のウィンドウをサイズ変更できるウィンドウイング環境で動作するように構成可能である。ただし、多くのグラフィカル・コンピューティング・システムは、サンプル密度またはレンダリング・パスの数をウィンドウ・サイズの変化に応答して調整できる方法で構成されていない。
【0003】
【発明が解決しようとする課題】
ウィンドウイング環境でより効果的に動作できるグラフィカル・コンピューティング・システムおよび対応する方法の必要性がある。具体的に言えば、ウィンドウ・サイズの変化に応答してサンプル密度および/またはレンダリング・パスの数を動的に調整できるグラフィカル・コンピューティング・システムおよび対応する制御方法の必要性である。
【0004】
【課題を解決するための手段】
様々な実施態様では、グラフィックス・システムがフレーム・バッファおよびハードウェア・アクセラレータを含む。フレーム・バッファは、サンプル・バッファおよびダブル・バッファされた表示域を含むことができる。ハードウェア・アクセラレータを、フレーム・バッファに結合され、さらに(a)プリミティブを受け取り、(b)動的に調整可能なサンプル密度値に基づいてプリミティブ用のサンプルを生成し、(c)サンプルをサンプル・バッファに書き込み、(d)サンプル・バッファからサンプルを読み出し、(e)ピクセルを生成するためにサンプルをフィルタリングし、(f)ピクセルをダブル・バッファされた表示域のバック・バッファに格納するように構成することができる。ホスト・コンピュータは、1つまたは複数のウィンドウ・サイズ・パラメータの変更を指定するユーザ入力に応答して、フレーム・バッファ内でサンプル・バッファを再割り振りするために、(たとえば、格納済みのプログラム命令を使用して)グラフィックス・システムのプログラム可能レジスタを動的に更新するように構成されている。
【0005】
一実施態様では、グラフィックス・アクセラレータを制御するための方法を以下のようにすることができる。(グラフィックス・アクセラレータは、プログラム可能サンプル密度に基づいてフレーム・バッファの使用可能スペースにサンプルをレンダリングし、サンプル・バッファからフレーム・バッファのダブル・バッファされた表示域へのサンプルをフィルタリングするように構成される。)本方法には、
(a)ウィンドウの幅および高さを決める入力を受け取ること、
(b)ウィンドウの幅およびサンプル密度推定値に基づいてウィンドウを水平にカバーするメモリ割振りページの第1の数を計算すること、
(c)ウィンドウの高さおよびサンプル密度推定値に基づいてウィンドウを垂直にカバーするメモリ割振りページの第2の数を計算すること、
(d)第1の数と第2の数を掛け合わせて、メモリ割振りページの第3の数を決定すること、
(e)(b)、(c)、および(d)を1回または複数回実行して、メモリ割振りページの第3の数がフレーム・バッファの使用可能スペースに納まる条件によって決まるサンプル密度推定値を最大化すること、
(f)最大化されたサンプル密度推定値を使用して、グラフィックス・アクセラレータのサンプル密度を再プログラミングすることが含まれる。この方法により、ウィンドウ・サイズの減少(増加)に応答してサンプル密度を増加(減少)させることができる。したがって、ウィンドウ・サイズが小さくなるほどピクセルあたりのイメージ品質が向上する。
【0006】
他の実施態様では、グラフィックス・システムがハードウェア・アクセラレータおよびフレーム・バッファを含むことができる。フレーム・バッファは、サンプル記憶域およびダブル・バッファされた表示ピクセル領域を含む。ハードウェア・アクセラレータは、(a)サンプルを生成するためにプリミティブのストリームをレンダリングし、(b)サンプルをフレーム・バッファのサンプル記憶域に格納し、(c)サンプル記憶域からサンプルを読み取り、(d)ピクセルを生成するためにサンプルをフィルタリングし、(e)フレーム・バッファの表示ピクセル領域の第1のバッファにピクセルを格納するように動作可能である。さらにハードウェア・アクセラレータは、第1のバッファの制御をビデオ出力プロセッサに渡す前にアニメーションのフレームを完了させるために、1つまたは複数の対応するプリミティブのストリームに(a)、(b)、(c)、(d)、および(e)を1回または複数回実行するように動作可能でもある。
【0007】
他の実施態様では、グラフィックス・システムによって生成されるイメージの品質を維持するための方法を以下のようにすることができる。(グラフィックス・システムは、プログラム可能サンプル密度に基づいてフレーム・バッファの使用可能スペースにサンプルをレンダリングし、サンプル・バッファからフレーム・バッファのダブル・バッファされた表示域へのサンプルをフィルタリングするように構成することができる。)本方法には、
(a)新しいウィンドウ・サイズを決める入力の受取りに応答して、アニメーション・フレーム用のグラフィックス・システムのパスの第1の数に対応する実現可能なサンプル密度を計算すること、
(b)ユーザ指定サンプル密度よりも大きいかまたはこれに等しい実現可能なサンプル密度に対応する第1の数の値を決定するために、(a)を1回または複数回実行すること、
(c)この値に等しいグラフィックス・システムのパスの第1の数を設定するために、グラフィックス・システムの1つまたは複数のプログラム可能レジスタに書き込むことが含まれる。
【0008】
こうした方法は、システム・バスまたはコンピュータ・ネットワークを介してグラフィックス・アクセラレータに結合されたホスト・コンピュータで実行することができる。
【0009】
他の実施態様では、グラフィックス・システムによって生成されるイメージの品質を維持する方法であって、本方法は、
(a)調整済みウィンドウのウィンドウ幅および高さを決める入力を受け取ること、
(b)グラフィックス・システムによって達成可能なサンプル密度のセットから、サンプル密度値を選択すること、
(d)正の整数値Nを選択すること、
(c)ウィンドウ幅を選択されたサンプル密度に対応するページ幅で割った第1の上限を計算すること、
(d)ウィンドウ高さを整数値Nで割って第1の結果を決定すること、
(e)第1の結果を選択されたサンプル密度に対応するページ高さで割って第2の上限を計算すること、
(f)第1の上限と第2の上限を掛け合わせてパスあたりのページ推定値を決定すること、
(g)パスあたりのページ推定値がフレーム・バッファの使用可能スペースよりも大きい場合は、整数値Nを増やして(c)、(d)、(e)、および(f)を繰り返すこと、
(h)アニメーション・フレームのNパス・レンダリング用のグラフィックス・システムに構成されるように、グラフィックス・システムの1つまたは複数のプログラム可能レジスタに書き込むことが含まれる。
【0010】
以下の詳細な説明は、添付の図面と共に考察すると、本発明をより良く理解することができる。本発明は、様々な修正態様および代替形式による影響を受けやすいものであり、その特定の実施態様が例示的なものとして図面に示されており、本明細書で詳細に説明される。ただし、図面およびその詳細な説明は、本発明を開示された特定の形式に限定することを意図するものではなく、その逆に、添付の特許請求の範囲で定義された本発明の精神および範囲に当てはまるすべての修正態様、等価態様、および代替態様をカバーすることを意図するものであることを理解されたい。見出しは編成のためだけのものであり、説明または特許請求の範囲を限定または解釈するために使用することを意味するものではないことに留意されたい。さらに「できる、場合がある」という語は、本出願全体を通じて、強制的な意味(すなわち、しなければならない)ではなく、許容的な意味(すなわち、可能性がある、可能である)で使用されている。「含む」という語およびその派生語は、「含むが、それに限定されるものではない」ことを意味する。「接続される」という語は「直接的または間接的に接続される」ことを意味し、「結合される」という語は「直接的または間接的に結合される」ことを意味する。
【0011】
【発明の実施の形態】
一実施形態では、図1Aで提案されるように、グラフィックス・レンダリング・システムは、メディア・プロセッサ14、ハードウェア・アクセラレータ(HA)18、フレーム・バッファ22、およびビデオ出力プロセッサ24を含むことができる。グラフィックス・レンダリング・システムは、ホスト・インターフェース、共用メモリ11(たとえばDRDRAM)、テクスチャ・メモリ20(たとえばSDRAMデバイスのアレイ)、ブートPROM 30、およびRGBDAC 26、およびビデオ・エンコーダ28も含むことができる。
【0012】
RAMは、ランダム・アクセス・メモリの頭字語である。
SRAMは、スタティック・ランダム・アクセス・メモリの頭字語である。
DRAMは、ダイナミック・ランダム・アクセス・メモリの頭字語である。
SDRAMは、同期式ダイナミック・ランダム・アクセス・メモリの頭字語である。
RDRAMは、Rambus DRAMの頭字語である。
DRDRAMは、ダイレクトRambus DRAMの頭字語である。
PROMは、プログラム可能読み取り専用メモリの頭字語である。
DACは、デジタル・アナログ変換器の頭字語である。
RGBは、赤、緑、青の頭字語である。
【0013】
メディア・プロセッサ14は、多角形、線、および点などのプリミティブを定義するグラフィックス・データのストリームを外部システム(たとえばホストプロセッサ)から受け取り、このグラフィックス・データ・ストリームに対していくつかの処理動作を実行することができる。事前に処理されたグラフィックス・データをハードウェア・アクセラレータに転送することができる。ハードウェア・アクセラレータは、グラフィックス・プリミティブ用のサンプルを生成し、そのサンプルをフレーム・バッファ内で割り振られたサンプル・バッファに格納することができる。ハードウェア・アクセラレータは、サンプル・バッファからサンプルを読み取り、サンプルをフィルタリングしてピクセルを生成し、さらにフレーム・バッファ内で割り振られたダブル・バッファされた表示バッファにそのピクセルを格納する。ピクセルの単一フレームが、サンプル・レンダリング・プロセスおよびサンプル・フィルタリング・プロセスの複数のパスで構成されることに留意されたい。ビデオ出力プロセッサは、表示バッファからピクセルを読み取り、表示デバイスへの出力用にビデオ出力信号(またはデジタル・ビデオ・ストリーム)を生成することができる。
【0014】
一実施形態では、グラフィックス・レンダリング・システムには、(フレーム・バッファ・メモリ内で割り振られた)サイズの限定されたサンプル・バッファを効率的に使用することを目標としたいくつかの機能がある。
【0015】
1.0 システム・アーキテクチャ
図1Aは、グラフィックス・レンダリング・システムの一実施形態に関する基板レベルの構成図である。
【0016】
メディア・プロセッサ14は、受け取ったグラフィックス・データに対して、変換および書き込み動作ならびに他の汎用処理動作を実行することができる。メディア・プロセッサは、グラフィックス・プリプロセッサ150およびRPUメガヘルツで動作する2つの処理ユニット(PU)を含むことができる。図1Dは、メディア・プロセッサの一実施形態に関する構成図である。
【0017】
メディア・プロセッサ14は、複数のバス・インターフェースを使用することができる。一実施形態では、メディア・プロセッサは北インターフェース11(たとえば拡張UPA64Sインターフェース)、ダイレクトRAMBUSインターフェース154、および南インターフェース160を含む。外部プロセッサ(たとえばホストプロセッサ)は、グラフィックス・レンダリング・システムを制御するために北インターフェースを使用することができる。ダイレクトRAMBUSインターフェースは、1つまたは複数のDRAMメモリをサポートすることができる。南インターフェースはUPA64Sバスの拡張変形であってよく、メディア・プロセッサがハードウェア・アクセラレータを制御できるようにするものである。
【0018】
一実施形態では、共用メモリ16が2つまたはそれ以上のDRDRAMチップを含むことができる。共用メモリ16は、プログラム命令(たとえばマイクロコード)および一時データを格納するために使用することができる。共用メモリは、グラフィックス・レンダリング・システムとホスト・システムとの間の通信用のバッファを格納するため、およびコンテキスト・スイッチング用のコンテキスト情報を格納するために使用することもできる。共用メモリは、表示リスト・メモリとして使用することもできる。
【0019】
ハードウェア・アクセラレータ18は、2Dおよび3Dラスタ化、2Dおよび3Dテクスチャ化、ピクセル転送、イメージング・オペレーション、ならびにフラグメント処理を実行することができる。図1Bは、ハードウェア・アクセラレータ18の一実施形態に関する構成図である。図1Cは、ハードウェア・アクセラレータ18の一実施形態のより詳細な構成図である。以下に、図1Cで使用される頭字語の凡例を示す。
VP=頂点プロセッサ
PSU=プリセットアップ・ユニット
SU=セットアップ・ユニット
EW=エッジ・ウォーカ
SW=スパン・ウォーカ
SG=サンプル生成器
SE=サンプル評価器
TE=テクスチャ環境
FP=フラグメント・パイプライン
FBA=フレーム・バッファ・アドレス・ユニット
FBI=フレーム・バッファ・インターフェース
FB=フレーム・バッファ
TA=テクスチャ・アドレス・ユニット
TRB=テクスチャ・バッファ読取りバッファ
TF=テクスチャ・フィルタ
FRB=フレーム・バッファ読取りバッファ
SF=サンプル・フィルタ
PXM=ピクセル転送マルチプレクサ
PX=ピクセル転送ユニット
TBM=テクスチャ・バッファ・マルチプレクサ
TBI=テクスチャ・バッファ・インターフェース
【0020】
ハードウェア・アクセラレータ18は、複数のインターフェースを有することができる。たとえば一実施形態では、ハードウェア・アクセラレータは、
(a)ハードウェア・アクセラレータがメディア・プロセッサからコマンドおよび/またはデータを受け取るときに介する、第1のインターフェース161(たとえば拡張UPA64Sインターフェース)と、
(b)ハードウェア・アクセラレータがデバイス・ブートPROMをアドレス指定し、ビデオ出力プロセッサを制御するときに介する、第2のインターフェース176と、
(c)ハードウェア・アクセラレータがテクスチャ・バッファ20の読取りおよび書込みの際に介する、第3のインターフェース187(たとえばエイトウェイ・インターリーブ・テクセル・バス用)と、
(d)ハードウェア・アクセラレータがフレーム・バッファ22の読取りおよび書込みの際に介する、第4のインターフェース300(たとえばフォーウェイ・インターリーブ・ピクセル・バス)とを含む、4つのインターフェースを有することができる。
【0021】
テクスチャ・バッファ・メモリ20は、SDRAM(すなわち同期式ダイナミック・ランダム・アクセス・メモリ)のアレイを含むことができる。たとえば一実施形態では、テクスチャ・バッファは8つのSDRAMを有する。テクスチャ・バッファは、テクスチャ・マップ、イメージ処理バッファ、およびアキュムレーション・バッファを格納するために使用することができる。ハードウェア・アクセラレータ18は、NTMAビット・セットのテクスチャ・バッファ・データをSDRAMクロック速度で読み取るかまたは書き込むことができる。たとえば、NTMAは128ビットに等しくてよい。ただし、NTMAの他の様々な値が可能であり、企図される。一実施形態では、2×2のテクスチャ・フットプリントの任意アドレス指定を可能にするために、SDRAMの各ペアが独立して行および列のアドレス指定が可能である。さらに、各ペア内で2つのSDRAMが独立した列アドレスを受け取ることができる。
【0022】
フレーム・バッファ22は、DRAMメモリ・デバイス(DMD)のアレイを含むことができる。アレイは、NDRAMのDRAMメモリ・デバイスを含むことができる。DRAMメモリ・デバイスの第1のサブセットはハードウェア・アクセラレータによってアクセス可能であり、DRAMメモリ・デバイスの第2のサブセットは、ハードウェア・アクセラレータとビデオ出力プロセッサ24の両方によってアクセス可能である。たとえば一実施形態では、NDRAMは16に等しくてよく、各サブセットは8つのDRAMメモリ・デバイスを含むことができる。さらに16のDRAMメモリ・デバイスを、図1Aで提案されるように、4つのランクに編成することができる。
【0023】
ハードウェア・アクセラレータ18は、フレーム・バッファ・インターフェース300を含むことができる。フレーム・バッファ・インターフェースは、DRAMメモリ・デバイスから入出力するデータの流れを制御する、アドレス信号および制御信号をアサートする。フレーム・バッファ・インターフェースを、ビデオ出力プロセッサ24によってアサートされたフレーム・バッファ・データ(すなわちフレーム・バッファに格納されたデータ)に対する要求を処理するように構成することができる。
【0024】
フレーム・バッファ22の記憶容量CFBは、任意の様々な値を取ることができる。一実施形態では、フレーム・バッファは72メガバイトを格納することができる。フレーム・バッファは最高520万のデータ・アイテムの容量を持つことができる。データ・アイテムはピクセルまたはサンプルを表す。フレーム・バッファ内の記憶域の各ピクセルは、
60ビットのカラー情報(すなわち30ビットのダブル・バッファされたRGB)と、
8ビットのアルファと、
8ビットのオーバレイと、
10ビットのウィンドウIDと、
26ビットのz深さと、
4ビットのステンシルとを含む、116プレーンを有することができる。
【0025】
一実施形態では、ハードウェア・アクセラレータ18は、単一のフレーム・バッファ・クロックで4ピクセルまたは8サンプルまでを書き込むことが可能であり、2つのフレーム・バッファ・クロックの4つのピクセルまたはサンプルを読み取ることが可能である。
【0026】
フレーム・バッファ22のDRAMメモリ・デバイス(DMD)は、シリアル出力ポートを有することができる。一実施形態では、8つのDRAMメモリ・デバイスの第1のサブセットは、ビデオ出力プロセッサに結合されたシリアル出力ポートを有することが可能であり、それを表示可能ピクセル・バッファ、オフスクリーン・ピクセル・バッファ、またはマルチサンプル・バッファを格納するのに使用することができる。DRAMメモリ・デバイスの第2のサブセットはビデオ出力プロセッサへの接続を有することができないため、オフスクリーン・ピクセル・バッファまたはマルチサンプル・バッファを格納するのに使用することができる。その結果、一実施形態では、フレーム・バッファが最高260万ピクセルを表示可能であり、サンプル・バッファは、最高520万サンプルから表示されたピクセル数を引いた数まで格納する。マルチサンプルおよびスーパーサンプルという語は、本明細書では同義語として使用される。
【0027】
ビデオ出力プロセッサ24は、DRAMメモリ・デバイスの第1のサブセットから出力されたビデオ・データをバッファリングおよび処理することができる。ビデオ出力プロセッサは、DRAMメモリ・デバイスからのビデオ・データをバースト単位で読み取ることができる。バーストは、Nburstピクセル長さであってよい。バースト時には、2ビデオ・クロックごとにNccピクセルを転送することができる。たとえば一実施形態では、Nburstが160に等しく、Nccが8に等しくてよい。NburstおよびNccには、様々な値が割当て可能であることに留意されたい。ビデオ出力プロセッサは、ガンマ補正、疑似カラーのカラー・マップ、およびカーソル生成を実行するようにも構成可能である。ビデオ出力プロセッサは、2つのビデオ出力ストリームを提供する2つ(またはそれ以上)の独立したラスタ・タイミング生成器を含むことができる。たとえば、ビデオ出力ストリームのうち1つをRGB DAC 26に提供し、ビデオ出力ストリームのうち1つをビデオ・エンコーダ28に提供することができる。
【0028】
RGB DAC 26は、最高Rdotメガヘルツのドット・レートで、高解像度RGBアナログ・ビデオ出力を提供することができる。たとえば一実施形態では、Rdotは270メガヘルツに等しくてよい。
【0029】
ビデオ・エンコーダ28は、符号化されたNTSCまたはPALビデオ出力を、Sビデオまたは合成ビデオのテレビジョン・モニタまたはレコーディング・デバイスに提供することができる。NTSCとは、米国国内でのテレビジョンおよびビデオの規格を定義する責務を負ったグループ、National Televition Standards Committee(米国テレビジョン方式審議委員会)の略語である。PALとは、Phase Alternating Line(位相反転ライン)の略語である。
【0030】
ブートPROM 30は、システム初期化およびフレーム・バッファ制御コードを含むことができる。
【0031】
図2は、一実施形態に従ったグラフィックス・レンダリング・システムを示す高水準構成図である。この構成図には、いくつかの主要な処理ブロック(四角で囲む)、主要なメモリ、テーブルおよびデータ・バッファ(丸で囲む)、ならびに経路(矢印)が含まれる。
【0032】
上方の四角で囲まれた領域から点線で囲まれたサブ領域を除いたものが、メディア・プロセッサ14に対応する。中央の四角で囲まれた領域から点線で囲まれた2つのサブ領域を除いたものが、ハードウェア・アクセラレータ18に対応する。下方の四角で囲まれた領域が、ビデオ出力プロセッサ24に対応する。
【0033】
上方領域の点線で囲まれたサブ領域は共用メモリ16に対応する。中央領域の点線で囲まれた2つのサブ領域はそれぞれテクスチャ・バッファ20およびフレーム・バッファ22に対応する。
【0034】
システム・バス104(たとえばUPA64Sバス)は、ホストプロセッサ(またはホスト・システム)をメディア・プロセッサ14のホスト・インターフェース11に結合する。(システム・バスは本明細書ではホスト・バスとも称される。)制御装置160は、メディア・プロセッサ14およびハードウェア・アクセラレータ18を結合する。バス32はハードウェア・アクセラレータをデバイスPROM 30およびビデオ出力プロセッサ24に結合する。バス32は、本明細書ではHvbusとも称される。
【0035】
グラフィックス・レンダリング・システムは、フレーム・バッファ、テクスチャ・バッファ、共用メモリ、およびデバイスPROM 30などのいくつかのメモリを含むことができる。
【0036】
グラフィックス・レンダリング・システムは、グラフィックスをフレーム・バッファ22に加速描画し、その後フレーム・バッファのコンテンツを1つまたは複数のビデオ出力ストリームで表示することが可能ないくつかの機能を有する。一実施形態では、フレーム・バッファ・メモリを使用して、最高520万のデータ・アイテム(データ・アイテムはサンプルまたはピクセルのいずれかであってよい)を格納するために使用することが可能であり、最高260万のピクセルを表示することが可能であって、残りのデータ・アイテムをオフスクリーン・ピクセルまたはサンプル・バッファに使用することが可能である。
【0037】
デバイスPROMは、メディア・プロセッサ用のブートストラップ・コードを含むことができる。デバイスPROMは、システムOpenBoot FCODE(デバイスの識別および初期化、コンソール端末エミュレータ)を含むこともできる。
【0038】
メディア・プロセッサ14における処理ブロック
図1Dおよび2は、メディア・プロセッサ14の例示的実施形態を提供するものである。メディア・プロセッサ14はホスト・インターフェース11を含む。ホスト・インターフェース11は北UPAインターフェース(NUPA)であってよい。ホスト・インターフェースは、ホストとグラフィックス・レンダリング・システムとの間のトランザクションを処理するスレーブである。ホスト・インターフェースは、状態および制御レジスタ、割込み論理、ならびにデータおよびアドレス・バッファを含むことができる。アドレス・デコーダは、状態および制御レジスタ、グラフィックス待ち行列GQ、共用メモリ、またはダイレクト経路ブリッジに向けてデータを送ることができる。
【0039】
ホストは、グラフィックス・レンダリング・システムによる処理のためにコマンドを待ち行列に入れるグラフィックス待ち行列に、「ストリーム」コマンドを書き込むことができる。ホストは、グラフィックス待ち行列のオーバフローを防ぐために、フロントエンドの状態レジスタで自由なワード・カウントをポーリングすることができる。
【0040】
ストリーム・コマンドは、それぞれがヘッダ・ワードとそれに続く1つまたは複数のデータ・ワードからなる一連のコマンド文字列を含むことができる。グラフィックス・プリプロセッサ(GPP)は、GQから文字列を引き出してそれらを解釈する。文字列タイプに応じて、GPPは以下の様々な方法で出力をルーティングすることができる。
(1)HA(ハードウェア・アクセラレータ)レジスタ書き込み(2D頂点を含む)を他の処理なしにハードウェア・アクセラレータ18に渡すことができる。
(2)GPP制御レジスタ書き込みが、GPPそれ自体によって吸収される。
(3)メディア・プロセッサのマイクロコード・ルーチンへの属性および命令をバッファリングし、プロセッサ・ユニットPU0およびPU1に渡すことができる。プロセッサ・ユニットはこれらを消費し、ハードウェア・アクセラレータ18に渡すことができる。
(4)3D頂点構成要素をフォーマット変換し、頂点アセンブリ・バッファで完全な頂点にアセンブルすることができる。頂点に頂点構成要素がない場合、この値を以前の頂点から引き継ぐことができる。頂点のグループをバッファリングし、次の使用可能なプロセッサ・ユニットにディスパッチすることができる。頂点の変換およびライティングの後、プロセッサ・ユニットのマイクロコード・ルーチンが処理済みの3D頂点をハードウェア・アクセラレータ18に送信する。
(5)圧縮された文字列が、属性、頂点、メッシュ・バッファ・オペレーション、およびGPP制御書込みに圧縮解除される。メッシュ・バッファ・オペレーションはGPPメッシュ・バッファにシャドウイングされ、ハードウェア・アクセラレータに渡され、その他は上記のように処理される。
【0041】
GPPは「ハード・タグ」モードで動作することができる。このモードでは、GPPは各頂点または属性に関してハードウェア・アクセラレータ18に、処理ユニットに送信する旨の命令タグを送信することができる。すなわち、ハードウェア・アクセラレータは、プロセッサをバイパスしたHAレジスタ書込みおよびメッシュ・バッファ・オペレーションと共に、プロセッサ・ユニットから着信する処理済みの属性および頂点を集めて、それらすべてを正しいストリームの順序で配置しなおすことができる。(HAレジスタ書込みは、ハードウェア・アクセラレータ内のレジスタをターゲットとするレジスタ書込みである。)
【0042】
ある特殊なケースでは、すべてのトランザクションをプロセッサ・ユニットを介してルーティングすることが望ましい場合がある。したがってGPPは、こうした特殊なケースをサポートするために「ソフト・タグ」を有することができる。
【0043】
メディア・プロセッサ14は、NPU処理ユニットを含むことができる。例示された実施形態では、メディア・プロセッサが2つの処理ユニットPU0およびPU1(すなわちNPU=2)を含む。処理ユニットは、本明細書ではMPUとも称される。プロセッサ・ユニット(PU)で実行するマイクロコード・ルーチンは、以下の機能を含むがこれらに限定されることのない、いくつかの機能を実行する。
(a)頂点バッチを変換およびライティングする、高度に最適化された1頂点あたりの処理ルーチン。一実施形態では、1つのバッチが2つまたは4つの頂点を含んでよい。
(b)頂点処理パイプライン・マイクロコード状態、および/またはハードウェア・アクセラレータ(HA)描画パイプライン(すなわちHAにおける描画パイプライン)のハードウェア状態を定義および更新する、属性処理ルーチン。
(c)最適化された頂点処理ルーチンによって、またはHAハードウェア・パイプによって直接サポートされていない特殊なケースでは、マイクロコードは独自のプリミティブ・アセンブリ、ラスタ化、および/またはテクスチャリングを実行することができる。
(d)システムは、初期化、トラップ処理、ホスト・ドライバ通信、コンテキスト・スイッチング、およびメモリ割振り用のマイクロコードを処理する。
【0044】
制御装置160(たとえば南UPAインターフェース)は、メディア・プロセッサをハードウェア・アクセラレータ18内の様々なブロックのマスタとすることができる。GPPおよびPUは、ハードウェア・アクセラレータの頂点コレクションおよびプリミティブ・アセンブリ・ブロックに書き込むことができる。PUは、PUダイレクト経路を使用して、フレーム・バッファ・ピクセル、テクスチャ・バッファ・テクセル、ならびに(DPユーザ、プリミティブ・アセンブリ、クリップ・トラップ処理、構成およびコンテキスト・スイッチ・レジスタを含む)ハードウェア・アクセラレータおよびビデオ出力プロセッサ内の様々なレジスタに、読取りおよび書込みすることもできる。
【0045】
一実施形態では、ダイレクト経路ブリッジは、ホスト・バスを、FBピクセル、TBテクセル、ならびに(DPユーザ、プリミティブ・アセンブリ、クリップ・トラップ処理、構成およびコンテキスト・スイッチ・レジスタを含む)ハードウェア・アクセラレータおよびHVbus内の様々なレジスタに読取りおよび書込みをするためのSUPAマスタとすることができる、NUPAからSUPAへのバス・ブリッジである。ダイレクト経路ブリッジは、本明細書ではバス・インターフェース・ユニット(BIU)154とも称される。
【0046】
FBはフレーム・バッファの頭字語である。
TBはテクスチャ・バッファの頭字語である。
UPAはユニバーサル・ポート・アーキテクチャの頭字語である。
NUPAは北UPAの頭字語である。
SUPAは南UPAの頭字語である。
【0047】
ユニバーサル・ポート・アーキテクチャ(UPA)はバス仕様である。マスタおよびスレーブをサポートするCPU用の128ビットUPAポート(「UPA128」)、マスタおよびスレーブをサポートするI/Oチップ用の64ビット・ポート(「UPA64M」)、さらにスレーブ専用デバイス用の64ビット・ポート(「UPA64S」)がある。
【0048】
ハードウェア・アクセラレータの処理ブロック
一実施形態では、図1B、1C、および2で様々に例示されたように、ハードウェア・アクセラレータ18は以下の処理ブロックを含む。
【0049】
スレーブ・インターフェース:スレーブ・インターフェース(たとえば南UPAインターフェース)は、メディア・プロセッサ内のSUPAマスタに応答する。スレーブ・インターフェースは、状態および制御レジスタ、割込み論理、ピクセル先行読取り論理、データおよびアドレス・バッファを含むことができる。スレーブ・インターフェースは、メディア・プロセッサからトランザクションを受け取る。各トランザクションにはアドレスおよび何らかのデータが含まれる。スレーブ・インターフェース内のアドレス・デコーダは、トランザクションを送信しなければならない場所を決定するために、(たとえばルックアップ・テーブルを使用して)アドレスをデコードする。たとえば、アドレス・デコーダはデータを、様々なHAレジスタ、頂点プロセッサ(VP)、ダイレクト経路、レンダリング/加速経路、またはビデオ出力プロセッサのうちいずれかにルーティングすることができる。スレーブ・インターフェースは、本明細書ではUBI(UPAバス・インターフェース)とも称される。
【0050】
頂点プロセッサ(VP):頂点コレクションおよびプリミティブ・アセンブリは、頂点プロセッサ内で実行される。頂点プロセッサは命令タグ、HAレジスタ書込み、属性書込み、および処理済みの3D頂点構成要素を収集する。
【0051】
3D頂点は、後で再使用するためにメッシュ・バッファに入れておくことができる。タグ・ストリームの順序に基づいて、新しい頂点および再使用される頂点は、プリミティブ・アセンブリ・ブロックによって3Dプリミティブにアセンブルされ、その後クリップ・テストされる。クリップ・テストに合格したプリミティブは、ラスタ化パイプに向けて発信される。クリップ・テストに不合格のプリミティブはトスされる。曖昧な場合は、メディア・プロセッサのマイクロコードによって処理されるクリップ・トラップを生じさせる。
【0052】
一実施形態では、2D頂点がHAレジスタ書込みとして着信し、どんなメッシュ・バッファまたはクリッピング・サポートもなしに、プリミティブ・アセンブリが単純化される。
【0053】
ラスタ化パイプ(RP):ラスタ化パイプは発信されたプリミティブ(線、多角形など)を受け入れ、それらをピクセル・フラグメントに圧縮解除する。フラグメントの位置、カラー、アルファ、および深さがサンプル生成器に送信される。フラグメント・テクスチャ座標がテクスチャ・アドレス・ブロックに送信される。
【0054】
サンプル生成器(SG):3Dプリミティブの確率的にサンプリングされたラスタ化が実行可能である場合、SGはどのサンプル位置がプリミティブの内側にあるかを決定し、各内部サンプル位置でカラー、アルファ、および深さを補間して、その結果をテクスチャ環境ユニット(TE)に送信する。
【0055】
3Dの線または点のフィルタリング(たとえばガウス・フィルタリング)が実行可能である場合、SGはその線または点の有効領域内部にある各ピクセルでのフィルタ重みを決定し、その後アルファとそのフィルタ重みとを掛け合わせ、ピクセル・フラグメントのカラー、アルファ、深さ、および位置をテクスチャ環境ユニットに送信する。
【0056】
サンプリングおよびガウス・フィルタリングが実行不能である場合、またはプリミティブが2Dである場合、SGは、ラスタ化されたピクセル・フラグメントのカラー、アルファ、深さ、および位置を、修正せずにテクスチャ環境ユニットに渡すことができる。
【0057】
テクスチャ・アドレス・ユニット(TA):テクスチャリングが実行可能である場合、ラスタ化パイプはフラグメント・テクスチャ座標をTAに送信する。TAは、テクセル・サンプル・アドレス、ならびに指定されたフィルタ・フットプリント内のテクセル・サンプルを検索およびフィルタリングするために必要な詳細かつブレンドされた要素のレベルを決定する。TAは、必要な各テクセル・サンプルに関して、テクスチャ・バッファ(TB)への読取り要求を生成する。「サンプル」という語は、グラフィックス・プリミティブの内部にある各サンプル位置でサンプル生成器SGによって算出されたデータ値のセット(たとえばrgbaz)を示す際にも使用されることに留意されたい。コンテキストが、どの用法を意味しているかを判定する。
【0058】
テクスチャ・ファイル(TF):TFは、TAからのブレンド要素と共にテクセル・サンプル・データをTBから受け取り、フィルタリング済みのテクセルを生成するために、テクセル・サンプルをブレンドする。
【0059】
ピクセル転送ユニット(PX):テクスチャリング中に、TF出力がPXに送信され、ここで、フィルタリング済みテクセルのカラーおよびアルファ値に関して検索機能を実行することができる。さらにPXは、ダイレクト経路およびコピー・オペレーション中にも使用される。
【0060】
テクスチャ環境ユニット(TE):テクスチャリング中に、TEは、PX出力(テクスチャのカラー/アルファ)とSG出力(フラグメントのカラー/アルファ)とをマージして、テクスチャ済みフラグメントを取得する。テクスチャリングが実行不能である場合、TEはRP/SGフラグメントのカラー、アルファ、深さを通過させる。
【0061】
テクスチャ・パイプ(TP):TA、TB、TF、PX、TEクラスタは、本明細書ではテクスチャ・パイプと称される。
【0062】
レンダリング・パイプ:VP、RP、SG、およびTEによって定義されるユニットのクラスが、レンダリング・パイプと呼ばれる。
【0063】
ストリーム経路:ストリーム経路はGQおよびGPPから始まり、PUの中または周囲を通過し、VPおよびRPを通過して、テクスチャをTPへ、ピクセルをSGへと分岐させ、それらをTEで再結合させることができる。TEの結果は、ストリーム/ダイレクト結合パイプ同期ポイントへ送られる。
【0064】
ストリーム/ダイレクト結合:ストリームおよびダイレクト経路は、メディア・プロセッサ14のホスト・インターフェースで分岐する(すなわち、ストリームはGQへ進み、ダイレクトはダイレクト経路ブリッジへ進む)。ストリーム/ダイレクト結合ポイントは、ストリームおよびダイレクト経路が再結合する場所であり、共用経路が始まる場所である。
【0065】
共用経路:フレーム・バッファへのフラグメント・パイプおよび書込みは、ストリームおよびダイレクト経路によって共用される。任意の所与の時点に、ストリームまたはダイレクト経路のうちの1つが共用経路を所有することができる。
【0066】
フラグメント・パイプ(FP):FPは、
定数の置き換え、
領域のパターン化、
アドレス、カラー、およびアルファのクリッピング、
ウィンドウID(WID)、ステンシル、および深さのテスト、
プレーン・グループの実行可能化およびビット・プレーンのマスク、
フォグ、ブレンド、およびラスタ・オペレーションなどの、
1フラグメントあたりの書込みオペレーションを実施する。
【0067】
一実施形態では、FPは、一部はハードウェア・アクセラレータ18に、一部はフレーム・バッファ22にある。
【0068】
コピー/フィルタリング・オペレーション:ストリーム・コマンドには、ラスタ化パイプがTBとFBとの間またはその中でデータを移動させるメモリ・アドレス生成器となる、以下のような様々なコピー/フィルタリング・オペレーションが含まれる。
【0069】
(A)ブロック・コピー・オペレーションは、任意選択のピクセル転送(PX)オペレーション(たとえばスケール、バイアス、カラー・マトリクス、検索、ヒストグラム、最小/最大)を使用して、TBとFBとの間またはその中でピクセルまたはテクセルを移動させる。
【0070】
(B)イメージ・フィルタリング・オペレーションは、テクスチャ・フィルタ(TF)を使用して、TBピクセル・データ(すなわち、テクスチャ・バッファに格納されたピクセル・データ)での畳み込みを実行する。畳み込みの結果に対してオプションのPXオペレーション(前述)を実行し、TBまたはFBに送信することができる。
【0071】
(C)レンダリング・パイプは、確率的にサンプリングされたシーンを、FBのオフスクリーン・サンプル・バッファにレンダリングすることができる。シーンがレンダリングされた後、確率的サンプル・フィルタ(SSF)を使用して、FBサンプル・バッファからのサンプルで畳み込みを実行し、FBの表示領域にエイリアス除去されたシーンを作成することができる。SSF出力は、PXによって補正されたガンマであってよい。
【0072】
(D)アキュムレーション・バッファ・オペレーションは、TBの領域をアキュムレーション・バッファとして使用し、OpenGL負荷、累算、乗算、加算、および復帰オペレーション、ならびにボリューム・レンダリングに対する高度に精密なスライス・ブレンド・オペレーションをサポートする。TB内の連続したメモリ領域を、アキュムレーション・バッファ(たとえばRGB16バッファ)として割り振ることができる。
【0073】
ダイレクト・ピクセル/テクセル書込み経路:ダイレクト書込み経路はホスト・インターフェースおよびダイレクト経路ブリッジから始まり、制御装置(SUPA)へと向かう。書込みアドレスおよびデータは、PX入力セレクタ(本明細書ではピクセル転送マルチプレクサとも称される)を介してPXユニットへ送信され、書込みデータ上でピクセル転送(PX)オペレーションを実行するために割り当てることができる。PXの結果はストリーム/ダイレクト結合ポイントに送信され、その後(共用経路フラグメント・パイプを介して)TBまたはFBのいずれかに送信される。
【0074】
ダイレクト・ピクセル/テクセル読取り経路:ダイレクト読取り経路はホスト・インターフェースおよびダイレクト経路ブリッジから始まり、制御装置へと向かう。読取りアドレスはPXを通過してストリーム/ダイレクト結合ポイントに渡され、その後TBまたはFBに渡される。メモリ読取りデータはPX入力セレクタを介してPXユニットに戻り、結果が(制御装置160およびホスト・インターフェース11を介して)ホストに戻される前に、読取りデータに対してピクセル転送(PX)オペレーションを実行するために割り当てることができる。
【0075】
ビデオ出力プロセッサ24内にあるかまたはこれに関する処理ブロック
HVBusインターフェース(HBI):HBIは、SUPAバスが(およびMPUまたはホスト・コンピュータの拡張により)、デバイスPROMの読取り、ならびにビデオ出力プロセッサ(VOP)のレジスタおよびテーブルの間接的な読取り/書込みを実行できるようにするものである。
【0076】
ウィンドウ・ルックアップ・テーブル(WLUT):WLUTは、各ウィンドウの視覚表示属性を定義するものであって、ウィンドウIDプレーンによって索引付けされる。WLUTエントリは、
RGB対索引付けカラー、
索引付けカラー・ソース(R、G、B、オーバレイ)、
カラー・ルックアップ・テーブル数、ガンマ補正、またはバイパス、
オーバレイなし、不透明オーバレイ、または透明オーバレイ
などの視覚表示属性を指定することができる。
【0077】
WLUTは物理的に分離し、一部はハードウェア・アクセラレータ18に、一部はフレーム・バッファ22に、一部はビデオ出力プロセッサ24に常駐することができる。フレーム・バッファにはオーバレイ論理もあり、これが1次プレーンまたはオーバレイ・プレーンが表示されるかどうかを決定する。
【0078】
カラー・フックアップ・テーブル(CLUT):一実施形態では、擬似カラーまたはダイレクト・カラー・マップを格納するために、1つのCLUTについて256のトリプル・エントリを備えた4つのCLUTが使用可能である。真のカラー・ウィンドウの場合、代わりに単一のガンマLUT(GLUT)(1024のトリプル・エントリ)を使用することができる。GLUTをバイパスすることも可能である。
【0079】
追加のビデオ出力機能は、ハードウェア・カーソルおよびデュアル・ビデオ・タイミング生成器を含むことが可能であり、これによって1次および2次ビデオ出力ストリームへのタイミングおよびデータ要求を生成することができる。
【0080】
ビデオ・デジタル・アナログ変換器(DAC)またはエンコーダ:1次ビデオ出力ストリームは、ビデオDAC(たとえば、赤、緑、および青それぞれに10ビットを受け取るビデオDAC)をアナログ・コンピュータ・ディスプレイに対して駆動させることができる。2次ビデオ・ストリームは、
(1)オンボードTVエンコーダをSビデオTVモニタまたはレコーディング・デバイスに対して駆動させるか、または
(2)機能拡張コネクタを駆動させることができる。可能なドーター・カード・オプションには、
第2のアナログ・コンピュータ・ディスプレイ、
デジタル・フラット・パネル・リンク、または
シリアル・デジタル・ビデオ出力リンクが含まれる。
【0081】
2.0 マルチサンプリングのレンダリング後のフィルタリング
一実施形態では、グラフィックス・レンダリング・システムは、フル・シーンのレンダリング完了までのサンプル・フィルタリングとは異なる。
【0082】
グラフィックス・レンダリング・システムは、表示バッファ・スワップ直前までのサンプル・フィルタリングとは異なる場合がある。シーン全体がアニメーション速度(シーンの複雑さによって異なる)でフィルタリングされる。
【0083】
グラフィックス・レンダリング・システムは、
(a)シーンを(FB内に割り振られた)サンプル・バッファにレンダリングするステップと、
(b)シーンをサンプル・バッファから(同様にFB内に割り振られた)バック表示バッファへ、アニメーション速度でフィルタリングし、、
(c)フロントおよびバック表示バッファを(アニメーション速度で)スワップし、
(d)各表示リフレッシュについて、表示バッファ内のピクセルを(アニメーション速度よりも速い場合の多いビデオ速度で)表示することの、一連のステップを実行する。
【0084】
2.1 フレーム・バッファ(FB)割振り
2.1.1 FBビット・プレーンの用法
フレーム・バッファ22の一実施形態では、各ピクセル(またはサンプル)は116ビット・プレーンのデータを有することができる。図3は、116ビット・プレーンを編成する1つの方法を示す図である。図4は、ピクセル(またはサンプル)を構成する様々なフィールドを記載した表である。
【0085】
サンプル・バッファにレンダリングする場合、ハードウェア・アクセラレータ18はR、G、B、AをバッファAに書き込み、さらにSおよびZも書き込むことができる。SおよびZは、最終シーンでどのサンプルが見えるかを決定する、ステンシルおよび隠面消去オペレーションに必要となる。最終シーンでRGBカラー値に影響を与える可能性のある合成および透過性のために、アルファ(A)を使用することができる。
【0086】
フィルタリングの際、ハードウェア・アクセラレータ18は、サンプル・バッファからR、G、Bを読み取り、フィルタリング結果を(PXユニットおよびフラグメント・パイプを介して)表示バッファ(バッファAまたはバッファBのいずれか、ダブル・バッファされたレンダリング中に現在「バック」バッファである方)のR、G、Bプレーンに書き込むことができる。ウィンドウ・システムは、Wおよびオーバレイ・プレーンをフィルタリング・プロセスとは別に維持することが可能であり、Wp面はRGBの真のカラー表示を発生させるように設定可能である。
【0087】
表示の際、Wp面は「フロント」表示バッファから、RGBの真のカラー表示を選択することができる。
【0088】
2.1.2 FBメモリ割振り
以下の考察では、フレーム・バッファ22が、4つのランクに編成された16のDRAMメモリ・デバイスを有すると想定される。ただし、フレーム・バッファ内のDRAMメモリ・デバイスの数は様々ないずれの値を取ってもよく、同様に、フレーム・バッファ内のランク数も様々ないずれの値を取ってもよいことに留意されたい。
【0089】
単一のDRAMメモリ・デバイスは、640×512のデータ・アイテム用の記憶域を含むことができる。(データ・アイテムは、図3で提案されたように116ビットを有することができる。)したがって、フレーム・バッファは、最高16×640×512=5120Kのデータ・アイテムを格納することができる。各データ・アイテムがピクセルまたはサンプルを表すことができる。一実施形態では、DRAMメモリ・デバイスの半分がビデオ出力プロセッサに結合され、DRAMメモリ・デバイスの残りの半分はそのように結合されない。これらの実施形態では、フレーム・バッファは、最高2560Kの表示ピクセル(すなわちオンスクリーン・メモリ・ピクセル)を格納することができる。
【0090】
フレーム・バッファ・メモリを割り振るための基本単位が「ページ」と呼ばれる。一実施形態では、1ページに5120のデータ・アイテムを含むことができる。したがって、フレーム・バッファ・ページ容量は、5120K/5120=1024ページに等しくすることができる。最初の512ページが表示可能である。
【0091】
グラフィックス・レンダリング・システムは、最高Ndrの表示可能領域をサポートすることが可能であり、Ndrは正の整数である。一実施形態では、グラフィックス・レンダリング・システムは、最高2つの表示可能領域および無制限数のオフスクリーン領域をサポートすることができる。
【0092】
たとえば、コンソールが第1の表示可能領域であってよい。第1の表示可能領域は、図5で提案されるように、FBメモリのページ0から開始されるように割り振ることができる。したがって、第1の表示可能領域にD1ページが割り振られた場合、第1の表示可能領域はページ0からD1−1までを占有することになる。
【0093】
第2の表示可能領域がある場合、コンソールのすぐ上に割り振ることができる。例では、第2の表示可能領域にD2ページが割り振られた場合、第2の表示可能領域はページD1からD1+D2−1までを占有することが可能であり、ここでD1+D2<=512ページである。記号「<=」は「より少ないかまたは等しい」ことを示す。
【0094】
スーパーサンプリングが要求された場合、オフスクリーン・スーパーサンプリング領域はFBメモリの頂部(ページ1023より下方から)に割り振ることができる。例では、S1ページが割り振られる場合、オフスクリーン・スーパーサンプリング領域は1024−S1から1023までを占有することが可能であり、ここでS1+D1+D2<=1024である。
【0095】
追加のオフスクリーン・メモリが割り振られた場合、第1のスーパーサンプリング領域よりも下まで及ぶ可能性がある。
【0096】
所与のフレーム・バッファ記憶モード(FB_*_MODEレジスタによって設定)では、各割振りページが、固定されたピクセル高さと幅を有する。図6の表は、グラフィックス・レンダリング・システムの一実施形態に従った、様々なFB_MODEオプションでのページ・サイズを列挙したものである。サンプル密度が2のべき乗でない場合、2のべき乗でない数は2のべき乗で割り切れないため、割振りページの幅掛ける高さは5120データ・アイテムのページ容量よりも少なくなる。
【0097】
フレーム・バッファ領域は四角形の領域である。領域の幅は割振りページ幅の整数倍に対応する。領域の高さは割振りページ高さの整数倍に対応する。端数サイズの領域(領域幅がページ幅の整数倍でないか、または領域高さがページ高さの整数倍でない)が所望の場合、次に大きな整数倍幅および整数倍高さを割り振ることができる。
widthPages=roundup(widthPixels/pageWidth)
heightPages=roundup(heightPixels/pageHeight)
割り振られる合計領域(ページ単位)は、単純に領域の幅と高さの積である(どちらも整数ページに切り上げられる)。
areaPages=widthPages*heightPages
たとえば、1152×900の非立体表示用のFBメモリ領域を割り振るためには、pageWidthが320でありpegeHeightが16であることに留意されたい。以下の計算式は、1152×900の表示領域が、228ページを有するフレーム・バッファ領域でカバーできることを示すものである。
widthPages=4 pages wide=roundup(1152/320)
heightPages=57 pages high=roundup(900/16)
areaPages=228 pages=4*57
グラフィックス・ウィンドウが700×700ピクセルを有するものと想定すると、オフスクリーン・スーパーサンプル・バッファはサンプル密度4でウィンドウに割り振られることになる(すなわち単位ピクセル領域あたり4つのサンプルが生成される)。サンプル密度4の場合、pageWidthは80でありpageHeightは16である。以下の計算式は、スーパーサンプル・バッファに396ページのフレーム・バッファが割り振られることを示すものである。
widghPages=9 pages wide=roundup(700/80)
heightPages=44 pages high=roundup(700/16)
areaPages=396 pages=9*44
ライブラリ機能は、所望のピクセル単位の高さと幅と共にFB_MODEを指定してFB領域を割り振るために、メモリ割振り要求をアサートすることができる。ソフトウェア・ドライバは上記の計算を実行し、所望の領域を所望のFB_MODEで格納するのに必要なページ数を割り振ることが可能であり、失敗/成功状態とFB_BASE(最初に割り振られたページ)およびFB_STRIDE(割り振られた領域のページ単位の幅)とを戻す。ドライバは、その後の要求時に使用するために、割り振られた領域の独自の記録も維持することができる。
【0098】
まだ割り振られずに残っているメモリの量の照会、ならびに、指定のモード、高さ、および幅が要求された場合にはどれだけの量のメモリが割り振られることになるのかを確認するための他の照会を実行するライブラリ機能も可能である。
【0099】
Wd×Hdピクセルを有する表示のための(ダブル・バッファされた)ピクセル表示バッファが割り振られるものと想定する。この表示をサポートするために、ドライバは以下の式によって整数のFBメモリ・ページを割り振ることが可能であり、
ceiling(Wd/pageWidth)*ceiling(Hd/pageHeight)
上式で、pageWidthおよびpageHeightはそれぞれFBメモリ・ページの幅および高さである。pageWidthおよびpageHeightの値は、FBメモリ割振りモードに応じて変化する。モードは、割り振られるバッファが表示バッファとして働くものであるか、またはオフスクリーン・バッファとして働くものであるかを示すことができる。さらにモードは、表示バッファが立体用に構成されるものであるか、非立体用に構成されるものであるか、あるいはオフスクリーン・バッファがピクセル用に使用されるものであるか、サンプル用に使用されるものであるかも示すことができる。後者の場合、モードはサンプル密度、すなわちピクセルあたりのサンプル数を示すことができる。
【0100】
ウィンドウ・システムでは、グラフィックス・レンダリング・システムは全画面サイズよりも小さいウィンドウにレンダリングすることができる。ウィンドウがWw×Hwピクセル・サイズを有すると想定すると、サンプル・フィルタ(SF)はWf×Hfピクセルのフットプリントを有し、サンプル密度はDSである。この場合ドライバは、ウィンドウに対応するオフスクリーン・サンプル・バッファに関して、以下の式で与えられる整数のFBメモリ・ページを割り振ることができる。
Ceiling{(Ww+Wf)/pageWidth}*Ceiling{(Hw+Hf)/pageHeight}
【0101】
オフスクリーン・サンプル・バッファが、サンプル・フィルタ・フットプリントの「スカート」を収容するためのWw×Hwウィンドウを囲む境界線を含むことに留意されたい。フットプリントを備えた拡大されていないボックス・フィルタが厳密に表示されるピクセルであるという特殊なケースでは、Wf×Hfはゼロであり(ピクセル外部からの寄与がないため)、特別な境界線割振りは不要である。
【0102】
有限のFB容量は、表示バッファとサンプル・バッファで共用される。したがって最大サンプル密度はほぼ以下に等しく、
Floor{データ・アイテム単位のFBサイズ−ピクセル単位の表示サイズ)÷(ピクセル単位のウィンドウ・サイズ)}
ここでFloor{x}は整数下限関数である。これは、解像度の低い表示および/またはサイズの小さいウィンドウが、固定サイズのサンプル・バッファ内でより高いサンプル密度をサポートできることを暗に示している。
【0103】
例:
単一ヘッドの1280×1024非立体表示の場合、表示バッファは(ceil(1280/320)*ceil(1024/16))=256ページのFBメモリを使用する。これで、(1024−256)=768ページが、1ページあたり5120サンプルでサンプル・バッファ用に残される。
1000×1000ピクセル・ウィンドウは(ceil(1000/80)*ceil(1000/20)650ページであり、768ページよりも少ないため、サンプル密度3をサポートすることができる。
720×670ピクセル・ウィンドウはceil(720/40)*ceil(670/16)=756ページであり、768ページよりも少ないため、サンプル密度8をサポートすることができる。
【0104】
単一ヘッドの960×680立体表示の場合、表示バッファは(ceil(960/320)*ceil(680/8))=255ページのFBメモリを使用する。これで(1024−255)=769ページがサンプル・バッファ用に残される。したがって、第1の例と同じサイズのウィンドウをサポートすることができる。
【0105】
単一ヘッドの640×480立体VGA表示の場合、表示バッファは(ceil(640/320)*ceil(480/8))=120ページのFBメモリを使用する。これで(1024−120)=904ページがサンプル・バッファ用に残される。ceil(600/40)*ceil(480/8)=900ページであり、904ページよりも少ないため、ほぼ全画面のウィンドウ(600×480)はサンプル密度16をサポートする。
【0106】
2.2 レンダリングおよびフィルタリング段階
マルチサンプリングを使用してシーン・フレームをレンダリングするために、グラフィックス・レンダリング・システムは一連のステップを実行する。この一連のステップは、シーン・アニメーション中、何回も繰り返される。以下の記述は、ウィンドウ・サイズ(フィルタ・フットプリントを加える)のサンプル・レンダリング・バッファおよびスクリーン・サイズのピクセル表示バッファがFBメモリで事前に割り振られていると想定したものである。
【0107】
2.2.1 サンプル・レンダリング・バッファのクリア
レンダリングの前に、(ウィンドウ・サイズの)サンプル・バッファにあるサンプルは、深さを無限にしてステンシル・プレーンをリセットした背景RGBカラーへと「クリア」される。高速フィル機能は、このステップを加速させるものである。一実施形態では、高速フィル機能はおよそ53億サンプル/秒で動作可能である。
【0108】
図7は、この流れを表す図である。ラスタ化パイプはウィンドウ領域のサンプル・ブロック・アドレスを生成し、フラグメント・パイプはFBメモリ内にサンプル・ブロックを充てんする。クリア・オペレーションでアクティブでない経路は点線で示されている。
【0109】
2.2.2 サンプル・バッファへのマルチサンプルのレンダリング
次に、図8および9に示されるように、シーンを定義する頂点(および属性)データが、3−Dストリーム・レンダリング経路を介し、FBで割り振られたサンプル・バッファをターゲットとして送信され、マルチサンプリングされたレンダリングを実行可能にする。
【0110】
メディア・プロセッサ14(すなわちグラフィックス・プリプロセッサおよびプロセッサ・ユニット)は、シーン内の各頂点において、変換、ライティング、およびクリップ・コード生成機能を実行することができる。これらの機能は、OpenGL標準または何らかの他の標準に準拠した方法で実行することができる。
【0111】
頂点は、OpenGL標準によってプリミティブ(典型的には三角形)にアセンブルすることができる。クリップ・テストおよびフェース−カリング・テストに合格したプリミティブがラスタ化される。この作業は、頂点プロセッサおよびラスタ化パイプラインによって実行することができる。(ラスタ化パイプラインRPには、図1Cで提案されるように、プリセットアップ・ユニットPSU、セットアップ・ユニットSU、エッジ・ウォーカEW、およびスパン・ウォーカSWユニットが含まれることを想起されたい。)
【0112】
ラスタ化パイプラインRPは、位置(x,y)、テクスチャ座標(s,t,r)、ならびに深さ(z)およびカラー(r,g,b,a)の値で、ピクセルを生成する。
【0113】
テクスチャ処理経路には、テクスチャ・アドレス・ユニット(TA)およびテクスチャ・フィルタ(TF)ユニットが含まれる。テクスチャ処理経路は、単一のテクスチャ座標ベクトル(s,t,r)に基づいて、最高のテクセル・サンプル(たとえばNtms=8)をテクスチャ・メモリ20から読み取り、(s,t,r)での1ピクセルあたりのテクスチャ・カラーを決定するために、これらのテクセル・サンプルをフィルタリングする。一部の実施では、テクスチャ処理経路は複数のテクスチャ座標を受け入れ、1ピクセルについて複数のテクスチャ結果(「マルチテクスチャ」)を生成することができる。
【0114】
サンプル生成器SGは、各サンプルのサブピクセル位置をピクセル単位で決定し、どのサンプルがプリミティブ内部にあるかを決定する。サンプル評価器SEは、サンプル・マスクおよび(r,g,b,a,z)に対するサンプルあたりの値を生成する。
【0115】
サンプル処理パイプラインおよびテクスチャ処理パイプラインは非同期的に動作し、一般に様々なピクセルあたりのデータ量を生成する。これには、パイプラインを他のパイプラインより多少前または後のいずれかに実行できるようにする待ち行列が含まれる。
【0116】
各ピクセルについて、テクスチャ環境ユニットTEは、テクスチャ・パイプラインからの(ピクセルあたりの)テクスチャ・カラーを、そのピクセルから生成されたすべてのサンプルに適用する。最終的にテクスチャ化されたピクセル・カラーは、OpenGLテクスチャ環境関数を使用して、またはマルチテクスチャの場合には、OpenGLマルチテクスチャ拡張を使用して適用することができる。したがってテクスチャ環境は、各ピクセルから複数のテクスチャ化されたサンプルを生成する(フラグメント・サンプルとも呼ばれる)。
【0117】
フレーム・バッファを形成するそれぞれのDRAMメモリ・デバイスが、本明細書ではメモリ組込み型ピクセル・プロセッサと称される、1つまたは複数のピクセル・プロセッサを含むことができる。Mitsubishiの製造する3DRAMメモリ・デバイスは、こうしたメモリ組込み型ピクセル・プロセッサを備えるものである。
【0118】
フラグメント(テクスチャ化されたサンプル)はフラグメント・パイプおよびメモリ組込み型ピクセル・プロセッサによって処理され、フレーム・バッファ・メモリ内の事前に割り振られたサンプル・バッファ領域に書き込まれる。メモリ組込み型ピクセル・プロセッサは、標準のOpenGLフラグメント処理動作(たとえばブレンド、ステンシル、Zバッファリングなど)を適用することができる。
【0119】
一般に、同じシーン・フレーム内で、複数のプリミティブが同じサンプル位置にサンプル値を与えることができる。こうしたサンプル(すなわち非透過サンプル)の多くについて、Zバッファリング・オペレーションは、「勝った」プリミティブ(通常は視聴者に最も近いもの)からサンプル値を選択することになる。この隠面消去プロセスにより、シーン内で以前にレンダリングされたサンプルの一部を、シーン内で後にレンダリングされたサンプルに置き換えることができる。「深さの複雑性」という語は、各サンプルを更新するための試行のシーンあたりの平均回数を表すために使用される。目の位置から見ると多くのオブジェクトが相互に前後に散乱したシーンは、深さの複雑性が高いことになる。
【0120】
2.2.3 バック表示バッファへのサンプル・バッファのフィルタリング
それぞれのフレーム時に、シーンがサンプル・バッファに完全にレンダリングされると、各サンプルについて最終的に「勝った値」が残る。この時点で、ピクセル転送ユニットPXおよびフラグメント・パイプラインFPを介してフレーム・バッファ22内のピクセル表示バッファ領域にルーティングされ、スパン・ウォーカ・ユニットSW内のピクセル・コピー・アドレス生成ハードウェアおよびピクセル・コピー・データ経路を再使用する、フィルタリング済みピクセルのアレイを取得するために、サンプル・フィルタSFがサンプル・バッファからのサンプルに適用される。
【0121】
コピー、フィルタリング、および累算オペレーションは、ストリーム・コマンドの特別なグループであり、ラスタ化パイプRPは、TBとFBの間、またはこれら内部でのデータの転送を含むメモリ・アドレス生成器となる。コピー経路は図10で強調されている。オペレーションは、FP、PX、コピー、フィルタリング、または累算属性をセットアップするための一連のBRSレジスタ書込み、ならびにそれに続くコピー領域「頂点」(ソースおよび宛先の左上隅、共通の高さと幅)を定義するVPへのBRS書込みによってセットアップすることができる。一実施形態では、コピー領域幅が最後に書き込まれ、コピー・オペレーションをトリガする。ラスタ化パイプはアドレス生成器となり、領域全体のピクセル/テクセル・データの転送を誘導する。コピーが完了すると、RPは通常の処理に戻ることができる。
【0122】
図11は、コピー・フィルタリング、および累算オペレーションに関するデータの流れを示す図である。この図では、図面を簡略化するために、アドレス生成器が2つの別々のボックスとして示される。2つのボックスが識別される。テクスチャ・バッファ20およびフレーム・バッファ22も同様に、図面を簡略化するために2重になっている。イメージ・フィルタという語は、テクスチャ・フィルタTFのもう1つの名前である。
【0123】
コピーおよびサンプル・フィルタ・オペレーション
ブロック・コピー・オペレーションは、ピクセル/テクセルの四角形の領域を、ソース・バッファ内のソース領域から宛先バッファ内の宛先領域に移動するものである。簡単なブロック・コピー・オペレーションには、以下の4種類がある。
・フレーム・バッファからフレーム・バッファへ
・フレーム・バッファからテクスチャ・バッファへ
・テクスチャ・バッファからテクスチャ・バッファへ
・テクスチャ・バッファからフレーム・バッファへ
【0124】
図12は、ピクセル・コピー用のアドレス生成(すなわち、FBからFBへのブロック・コピー・オペレーション)を示す図である。ソースは、ストリーム経路RD_PDTレジスタがPD_PDT_PIXに設定されている場合はフレーム・バッファ内にあり、RD_PDT_TEXの場合はテクスチャ・バッファ内にある。宛先は、ストリーム経路WR_PDTレジスタがWR_PDT_PIXに設定されている場合はフレーム・バッファ内にあり、WR_PDT_TEXの場合はテクスチャ・バッファ内にある。ピクセル転送ブロック機能は、どんなブロック・コピー・オペレーション時にも使用できる。
【0125】
ブロック・コピー・アドレッシング。ソース領域および宛先領域の左上隅は、COPY_{X,Y}レジスタおよびRECT_{X,Y}レジスタによって定義される。RECT_{H,W}は、ソース領域および宛先領域の(共通の)サイズを定義する。これらすべての値には位置合わせの制約がなく、領域は1つのピクセルの解像度を使用して位置決めおよびサイズ変更することができる。ソース領域および宛先領域は、それぞれ割り振られたソースおよび宛先のメモリ・バッファ内に位置する。ソースまたは宛先がフレーム・バッファの場合、メモリ・バッファの起点はFB_{RD,WR}_BASEである。
【0126】
一実施形態では、ホスト・ルーチンが、各アニメーション・フレームをレンダリングするためのマルチパス・プロシージャ内の各パスについて、宛先領域を再プログラミングすることができる。
【0127】
スーパーサンプル・フィルタ(SSF)。フレーム・バッファのスーパーサンプル・バッファ領域にレンダリングされた確率的にサンプリングされたシーンをフィルタリングするために、特別なフィルタが提供される。このオペレーションは、オフスクリーンのスーパーサンプリングされたレンダリング・ソースからオンスクリーンのピクセル表示宛先までのフィルタを使用する、特殊な「フレーム・バッファ間コピー」である。
【0128】
図13〜15は、サンプル・フィルタリングのためのアドレス生成およびフットプリントを示す図である。
【0129】
スーパーサンプル・フィルタ・アドレッシング。ソース領域および宛先領域は、COPY_{X,Y}、RECT_{X,Y}、およびRECT_{H,W}によって再度定義される。ソースはフレーム・バッファのスーパーサンプリングされた領域にあり、宛先はフレーム・バッファのピクセル領域に常駐する。
【0130】
単一のソース・ポイントの代わりに、フィルタ「カーネル」領域(たとえば一実施形態では、ソース空間で、各宛先アドレスに対応するソース・アドレスを中心とし、半径が最高2ピクセルのディスク形領域)が読み取られる。ソース・アドレスがソース領域のエッジ上またはその直近にある場合、カーネルの一部がソース領域の外に出る可能性がある(図13のサンプル「s」を参照)。ソース領域の外に出るカーネルの一部のソースは、SSF_MODE_BORDERによって決定される。
【0131】
スーパーサンプル・フィルタ・プログラミング・モデル。スーパーサンプル・フィルタリングには、宛先スペース内のピクセルに対応する、ソース・スペース(ビン・スペースとも呼ばれる)内の位置を中心とした、フィルタ・サポート領域内に収まるすべてのサンプルのカラー(rgba)の重み付けされた合計を算出することが含まれる。(ソース・スペース内のピクセルもビンと称されることに留意されたい。)
【0132】
それぞれの出力ピクセルについて、ハードウェアはソース・スペース内のカーネル中心(すなわちフィルタ・サポートの中心)を算出する。ただし、第1(または左最上部)のカーネル中心の位置は、ソフトウェアによってRECT_{X,Y}に設定される。オプションで、SSF_MODE_OFFSET_ENABLE(「スーパーサンプル・フィルタ・モード・オフセット実行可能レジスタ」)を使用して、(0.5,0.5)だけオフセットすることができる。カーネル中心用のその後の座標は、ハードウェア・アクセラレータにより、SSF_STEP_SIZEレジスタ(「スーパーサンプル・フィルタ・ステップ・サイズ・レジスタ」)を使用して増分で算出される。これは、XおよびYの両方向に沿ったstep_sizeであってよい。
【0133】
拡大比率。宛先領域は、ソース領域に等しいかまたはこれより大きくてよい。宛先幅対ソース幅の比率が、拡大比率と呼ばれる。これは、SSF_STEP_SIZEの値を選択することによって、間接的に指定することが可能であり、その結果、拡大比率は1.0/SSF_STEP_SIZEとなる。
【0134】
フィルタ・タイプ。一実施形態では、スーパーサンプル・フィルタが使用するフィルタ機能は、ボックス・フィルタまたは円形フィルタのいずれかであってよい。この選択は、SSF_MODEレジスタで指定される。フィルタの半径は、本明細書ではSSF_FILTER_RADIUSと称されるレジスタで指定することができる。
【0135】
ボックス・フィルタ。ボックス・フィルタは正方形のフィルタである。長さ寸法がフィルタ半径、SSF_FILTER_RADIUSの2倍である。各サンプルに、同じ(最大)重さが与えられる。このフィルタは、カーネルによってカバーされるサンプル・ポイントのカラーの平均を取る。
【0136】
図14は、ボックス・フィルタの場合の、SSF読取り「フットプリント」(すなわち、サンプルを1つのフィルタリング済みピクセルに与えるビンのセット)の概念を紹介する図である。図には2つの例が示されており、それぞれ半径が0.5である。
・オフセットが(0.5,0.5)でステップ・サイズが1.0(拡大なし)であれば、第1のピクセルについて(オフセットにより)、ならびに他のすべてのピクセルについて(ステップ・サイズにより)、ソース・スペースでのフットプリントは1×1である。これが図14の左側に図示されている。
・ただし、拡大比率が1.0より大きいか、またはオフセットが(0.5,0.5)でない場合、図14の右側に示されるように、フットプリントは一般に2×2となる。右側の場合は、左側の場合よりもゆっくりと実行される。
【0137】
円形フィルタ。名前からわかるように、このフィルタのカーネルはソース・スペースにおいて円形である。それぞれ半径が2.0の2つの例が、図15に示されている。左の例は、現在のカーネル中心がビンの左隅にある場合に対応する。これは、オフセットが(0.0,0.0)であり、拡大比率が1.0である場合に対応する。
【0138】
図15の右側の例は、現在のカーネル中心がビンの左隅にない場合に対応する。これは、たとえ初期オフセットが(0.0,0.0)であっても、拡大比率が1.0でない場合に対応する。カーネル・サークル(すなわちディスク)内にあるすべてのサンプルが、重み付け合計に寄与する。タイル(たとえば2×2タイルのビン)内のサンプルの位置は、本明細書ではSSF_JITTER TABLEと称されるスーパーサンプル・ジッタ・テーブルで指定される。これらのジッタ値は、最終サンプル位置に到達するために、必要であれば置き換えることができる(詳細は本項の最後で説明)。各サンプル位置でのフィルタ重みは、そのカーネル中心からの半径距離に依存する。
【0139】
フィルタ重みは、半径距離rの関数を表すものである。一実施形態では、フィルタ重みは128個の値のテーブルで提供され、それぞれの重みは範囲(−1.0,1.0)であり、フォーマットs.10である。テーブルは(nr)2で索引付けすることができる。これは、アクセス速度が速く、ゲート・カウントが少ない、ハードウェア・フレンドリに設計される。ここでnrは単に正規化された半径距離、r/Rであり、rはカーネル半径である。
・サンプル密度、すなわちビンあたりのサンプル数。
・置換え制御。実行可能であれば、ソース・スペース・タイル内のサンプル(1タイルは2×2平方ビン)が置き換えられ、その結果128×128ビン境界でのみ複製されるように発生し、その他の場合にはサンプルは2×2ビンごとに複製される。
・一時エイリアス除去用の置換えコード(範囲[0,7])。これにより、各フレームで最高8つの異なるパターンを可能にするために、置換えコードに応じて各フレームで様々なタイルの置換えが可能になる。
使用される実際のサンプルは、SSF_SAMPLE_MASKで選択することができる。
【0140】
コピー・オペレーションの詳細な説明
コピー・オペレーションは、FBまたはTBのいずれかからFBまたはTBのいずれかへ、四角形のピクセル・アレイを移動する。これには、2つの2−Dアドレス(すなわちソースおよび宛先)が含まれる。ソフトウェアは、ソースと宛先の四角形をプリクリップする。
ソース・データは、以下のいずれかであってよい。
・フレーム・バッファ・メモリ(FB)からのピクセル
・オンスクリーン(可視)フレーム・バッファからのピクセル
・オフスクリーン・ピクセル・バッファからのピクセル
・フレーム・バッファ・メモリ(FB)からのサンプル
・オフスクリーン・スーパーサンプル・バッファからのサンプル
・テクスチャ・バッファ・メモリ(TB)からのピクセルまたはテクセル
・テクスチャ・マップからのテクセル
・イメージ・バッファからのピクセル
データは、以下のいずれかにコピーすることができる。
・ピクセルをフレーム・バッファ・メモリ(FB)へ
・ピクセルをオンスクリーン(可視)フレーム・バッファへ
・ピクセルをオフスクリーン・ピクセル・バッファへ
・ピクセルをテクスチャ・バッファ・メモリ(TB)へ
・ピクセルをテクスチャ・マップへ
・ピクセルをイメージ・バッファへ
【0141】
以下の考察で使用されるいくつかの頭字語の凡例を示す。
FWQ=フレーム・バッファ書込み待ち行列
FRQ=フレーム・バッファ読取り待ち行列
TWQ=テクスチャ・バッファ書込み待ち行列
TRQ=テクスチャ・バッファ読取り待ち行列
TRB=テクスチャ・バッファ読取りバッファ
【0142】
スパン・ウォーカ・ユニット(SW)は2つのアドレスを生成する。SWユニットはTBアドレスをTAブロックに送信し、これがTBMおよびTBI(テクスチャ・バッファ・インターフェース)に供給する。SWは、SG、SE、FDPを介してFBアドレスをTEに送信し、これがFPおよびFBIに供給する。ソース・アドレスは、FBまたはTB読取り待ち時間をカバーする十分な先取りを可能にするために、宛先アドレスの前(たとえば一実施形態では約40〜60クロック前)に生成することができる。
【0143】
ソース・データは、FRBブロックまたはTRBブロックからPXMに読み取られ、ピクセル転送ユニット(PX)に供給される。PXユニットは、データの再フォーマット、スケーリング、バイアス、および/または検索(すなわちテーブル・ルックアップの実行)を実行することができる。PX結果データは、TEまたはTBM(それぞれFBまたはTBのコピー宛先の場合)に送信される。TEまたはTBMは、(SW読取りアドレスによって指定された)PX読取りデータがSW書取りアドレスと一致する、「結合」ポイントである。書込みアドレスが(SWまたはTAから)着信する前に書込みデータが(PXから)着信するか、またはその逆の場合、TE/TBMは、PXまたはSWのいずれか前の方を、後のユニットの準備が整うまでストールすることになる。以下のようないくつかの特殊なケースがある。
【0144】
・同じバッファ間でのコピー(TBからTB、またはFBからFB)により、ソース領域と宛先領域が重なり合うがある。したがってアドレス・スキャン・パターンは、コピーが発生する前にソースが重なり合うのを防ぐために、昇順および降順の両方でのオペレーションが可能である。
【0145】
・フレーム・バッファ(FB)22が宛先である場合、フラグメント処理はフレーム・バッファへの途中で実行することができる。
【0146】
・一部の実施形態では、フレーム・バッファがソースの場合、ソース領域が読み出されたときの状態にクリアされるように要求することができる。これは、コピー・オペレーションと並行して、読み出されたときの状態のソース領域に対して高速フィル・オペレーションを効率的に実行する。
【0147】
・一実施形態では、異なるバッファ間(TBからFB、またはFBからTB)でのコピーが、GCKあたり1ピクセルで発生可能であり、パイプライン化される。SWはx,yフィールド(フル・タイルの場合)を介してFBアドレスを指定することが可能であり、TAユニットからのu,v出力を介してTBアドレスを指定する。
【0148】
・同じバッファ間(TBからTB、またはFBからFB)でのコピーの場合、TBおよびFBがそれぞれ単一のアドレス・バスを有することから、SWは、書込みのバーストと交互に読取りのバーストを生成する。バースト・サイズは、FBおよびTB読取りパイプラインの待ち時間(一実施形態では、およそ30〜40GCKと推定される)によって決定することが可能であり、(パイプ・ステージにFWQ/FRQまたはTWQ/TRQ深さを加えた)FBおよびTBパイプライン深さの有効小数であってよい。バーストが大きいほど、メモリ・データ・バス方向を転換させるオーバヘッドを減らし、メモリ・リフレッシュ・バブルを隠して待ち時間を制御するのを助ける。ただし、バースト・サイズがメモリ読取りパイプラインの深さを超えた場合に、デッドロックが発生する可能性がある。
【0149】
・一実施形態では、8、16、または32ビット・ピクセル・フォーマットの畳み込みおよびコピーは、1つの「TBをTBにコピー」コマンドまたは1つの「TBをFBにコピー」コマンドで、最高4つの構成要素(R、G、B、A)をサポートすることができる。
【0150】
・より大きなピクセル・フォーマットの畳み込みおよびコピーには、複数のコピーが必要になる場合がある。たとえば、64ビット・ピクセル・フォーマットの構成要素は、2つの別々のコピー・コマンドで転送することができる。
【0151】
・イメージ変換は、コピー・オペレーションの代わりに、イメージを四角形(補間済みRECTANGLEコマンド)またはTRIANGLEストリップにテクスチャ・マッピングすることによって達成可能である。ハードウェア・アクセラレータ18は、TBからFBへのイメージ変換をサポートすることができる。
【0152】
・立体モードに関するFBからFBへのコピーは、片目のみ(左または右)のコピー、または両目のコピーという、2つの特色で実行することができる。
【0153】
・ピクセルあたりの選択サンプルが1つのループでコピーされる場合、スーパーサンプル・モードでコピーする。
【0154】
コピー・フォーマットおよび宛先
コピーのソース、宛先、およびフォーマットは、RP_{RD,WR,RW}_PDTレジスタおよびRP_{RD,WR,RW}_TIFレジスタで定義される。RP_RD_PDTレジスタの_TEXフィールドはコピーされるデータのソースを定義し、RP_WR_PDTレジスタの_TEXフィールドは宛先を定義する。
・SWは、レジスタによって指定されたソースおよび宛先を使用して、ソースおよび宛先のアドレスを適切に送る。
・PXは、レジスタによって指定されたソースおよび宛先を使用して、受信したデータを適切に送る。
【0155】
コピー・メカニズムは、コピー・データ経路のパイプライン段階およびデータ待ち行列(およそ100のサンプルまたはピクセルについて)でのデータ記憶要素を利用するように編成される。コピー・データ経路には、FRB、TE、PX、FP、FWQ、FBIが含まれる。
FRB:フレーム・バッファ読取りバッファは、FBメモリから読取られるデータ用のバッファである。
FWQ:フレーム・バッファ書込み待ち行列は、FBメモリ要求(アドレスおよびデータの書込み、またはアドレスの読取り)の待ち行列である。
FBA:フレーム・バッファ・アドレッシング・ユニットは、X,Yアドレスをメモリ・ページおよびピクセル/サンプル・アドレスにマッピングする。
FBI:フレーム・バッファ・インターフェースはFBメモリ制御装置であり、DMDキャッシュ(たとえば3DRAMキャッシュ)、グローバル・バス、およびDRAMページ制御を含む。
【0156】
多くの実施形態では、フィルタ中央アドレスを備えたコピー読取りオペレーション・コードのバッチを、TE「結合」ポイント(コピー読取りオペレーション・コードおよびアドレスの結果として生じるフィルタリング済み読取りデータが、コピー書込みオペレーション・コードおよびアドレスとペアになる)でデッドロックすることなく、できる限り多く発行し、その後、(フィルタリング済みピクセル・データを、FBの表示領域に書き込むようにFP方向に下方送信する)表示ピクセル・アドレスを備えたコピー書込み要求の合致バッチの発行に切り替えるものであって、このプロセスはすべてのサンプルがフィルタリングされるまで繰り返される。
【0157】
図16は、ソース・アドレス、宛先アドレス、データ、ならびに結合アドレスおよびデータ流れが強調された、FBからFBのコピー・オペレーションを示す図である。
【0158】
図17は、スーパーサンプル読取りパス(スーパーサンプル・バッファからフレーム・バッファ)でのオペレーション・コード流れを示す図である。
【0159】
図18は、サンプル・フィルタリングおよびバック表示バッファへのコピーのステップを要約した図である。
・スパン・ウォーカSWは、読取りサンプル、フィルタ・サンプル、および書込みピクセルの要求およびアドレスを生成する。読取りおよびフィルタリング要求の各バーストの後には、書込み要求のバーストが続く。
・TEユニットは、読取りサンプルおよびフィルタ・サンプル要求を、フラグメント・パイプを通じてFBメモリ22のサンプル・バッファに渡す。
・FRBは、フィルタ・フットプリントが単一のピクセルよりも大きいときに、前の円形フィルタ・オペレーションから重なり合うサンプルを再使用できるようにするための、サンプル読取りバッファを含む。
・サンプル・フィルタは、サンプルの畳み込みによって、フィルタリング済みピクセルを生成する。RGB結果は、構成要素あたり最高12ビットまで可能である。
【0160】
ピクセルを生成するためのサンプルのフィルタリングに関する詳細については、参照により全文が本明細書に組み込まれた、2001年10月3日付け出願のBurk等による「Programmable Sample Filtering for Image Rendering」という名称の米国特許出願第09/970077号を参照されたい。
・ピクセル転送ユニットPXは、フィルタリング済みピクセル・データを処理し、ガンマ補正を適用する。
・PXピクセル・データは、SW書込みアドレスおよびオペレーション・コードとペアにされ、フラグメント・パイプラインを介して、ダブル・バッファされたFBメモリの「バック」表示バッファ領域まで送信される。
【0161】
2.2.4 バックおよびフロント表示バッファのスワップ
フィルタリング・オペレーションが完了し、フィルタリング済みフレーム・シーンが「バック」表示バッファに入ると、「フロント」と「バック」のバッファ割当てを交換するために「表示バッファのスワップ」オペレーションが実行され、その結果、新しいフレームが可視となり、プロセスが繰り返されるときに次のフィルタリング・フレームを受け取るために、古いフレームの表示バッファが使用可能になる。
【0162】
バッファ・スワップ・オペレーションは、新しいWID(ウィンドウID)エントリをウィンドウ・ルックアップ・テーブル(WLUT)に記入することによって実施できる。
【0163】
図19は、表示ステップを要約した図である。ビデオ出力プロセッサ24(たとえばXチップ)は、表示バッファのフロント・セグメントからピクセルを読み取り、そのピクセルをRGB DAC(またはビデオ・エンコーダ)に送信する。RGB DACは、ピクセル・ストリームをアナログ・ビデオ信号に変換し、これが表示用のビデオ出力ポートに提供される。
【0164】
2.3 変形形態
以上、サンプル・レンダリング・プロセス、サンプル・フィルタリング・プロセス、およびピクセル表示プロセスの基本的流れについて述べてきたが、次に、このテーマに関するいくつかの変形形態について論じる。
【0165】
2.3.1 フィルタリング済みピクセルの高精度ガンマ補正
以下の考察では、フレーム・バッファのサンプル・バッファが、サンプルあたりカラー構成要素あたり、Nbpc=10ビットまで格納することができると想定される。ただし、記載された原理は、パラメータNbpcの任意の正の整数値への一般化を認めるものである。
【0166】
図9に示されたレンダリング・ステップ中に、サンプル値は、FBサンプル・バッファに格納できる構成要素あたり10ビットよりもより多くのビット精度で知られる。オプションの「ディザリング」ユニットが、サンプル生成器SGに含まれる。「ディザリング」オプションが実行可能であれば、R、G、およびBのサンプル値を、サンプルのアドレスのサブピクセル部分(XおよびYの小数部分)に基づき、1つのLSB(2−10)によってディザリングすることができる。サンプル値の小数部には、1つのLSBにR、G、またはBが加えられることになる。ディザリング機能は、1LSBずつ増分されるピクセル・サンプル値の小数部を、最低位サンプル値ビットに比例させるものである。
【0167】
「サンプル・バッファのフィルタリング/コピー結果を表示バッファへ送る」ステップ(図18)では、畳み込みオペレーションが「平均」効果を有する。ボックス・フィルタの場合、フィルタは等しく重み付けされたサンプル値の平均を精密に送ることができる。レンダリング・ステップによってサンプルの小数が1LSBずつ増えた結果、平均は、その小数掛ける1LSBずつ増えることになり、失われた情報が「回復」される。同じ引数がより複雑なフィルタに対してほぼ真となる。最終的な効果は、サンプル密度をそれぞれ倍にするためにおよそ1ビットを「回復」(または格納された10ビット精度へ追加)することである。サンプル密度4またはそれ以上の場合、2ビットが回復可能であるため、サンプル・フィルタは、それぞれのカラー構成要素について12の有効ビットをPXユニットに送信することができる。より一般的に言えば、回復可能ビット数はサンプル密度の2を底とする対数として変化する。
【0168】
PXユニットには、R、G、およびBに関する「12ビット・イン:10ビット・アウト」ルックアップ・テーブルが含まれる。これらは、(線形シェード付きサンプル値とモニタ/人間の眼の機構の非線形特性との相違を補正するための)ガンマ補正機能と共にロードすることができる。多くの従来技術のシステムでは、フレーム・バッファ内に構成要素あたり8ビットしか格納せず、ガンマ補正機能の非線形性により、濃いシェード付き領域ではさらに精度が失われ、これらのシステムでは濃いシェード付き領域が「マッハ・バンド」の量子化を受ける。本明細書に記載されたディザリング・メカニズムによって特別な2ビット入力が回復することで、より多くのフレーム・バッファ・メモリおよびより広いフレーム・バッファ・メモリ・バスにかかる追加のコストなしに、ほとんどのシステムで送ることができるよりも滑らかなイメージのシェーディングが生成される。
【0169】
ディザリング済みサンプルから精度を回復させるための平均化に関する詳細については、参照によりその全文が本明細書に組み込まれた、2001年1月11日付け出願のDeering等による「Recovering Added Precision from L−Bit Samples by Dithering the Samples Prior to an Averaging Computation」という名称の米国特許出願第09/760512号を参照されたい。
【0170】
2.3.2 立体ビジョン
立体ビジョン・システムは、1つは左目の視点から見たビュー、1つは右目の視点から見たビューという、シーンの2つのビューをレンダリングおよび表示する。これは、1回目は左目のパースペクティブ変換マトリクスを使用し、次に再度右目のパースペクティブ変換マトリクスを使用することで、同じシーン・ジオメトリを2回レンダリングすることによって達成される。2つのレンダリングは2つの異なる表示バッファに格納される。格納された2つのレンダリングは、2つのビデオ・チャネルによってそれぞれ表示することができる(たとえば「ゴーグル」ヘッド取付け型ディスプレイの場合)。オプションで、格納された2つのレンダリングを同じディスプレイ上に交互に表示することができる(たとえば、位相のずれた左目と右目の液晶「シャッタ」をディスプレイの更新と同期させる、立体眼鏡を使用して見る場合)。
【0171】
2つの表示バッファに関する要件により必要な表示メモリは増えるが、サンプル・バッファがスワッピングの前にフィルタリングされて表示バッファにコピーされる場合、サンプル・バッファ要件は増えない。これは、ビデオ・リフレッシュ時にフィルタリングし、それぞれの目に1つずつ、合計2つのサンプル・バッファを必要とするシステムの場合はあてはまらない。
【0172】
したがって本明細書で説明する「フィルタリングおよびコピー」の方法は、サンプル・バッファのメモリ要件を倍増させるような出費なしに、立体ビジョンをサポートするものである。
【0173】
2.3.3 フィルタリング時クリア
基本的なフレーム処理ループには、以下の形式がある。
【0174】
ループあたりの合計時間は、次のようになる。
clear_time+render_time+filter_copy_time+swap_time
【0175】
サンプル・フィルタリングと並行したサンプル・バッファ・クリア・オペレーションの実行方法に関する教示については、参照によりその全文が本明細書に組み込まれた、Lavelle等による「Parallel Read withSource−Clear Operation」という名称の2002年1月31日付け出願の米国特許出願第10/066397号を参照されたい。
【0176】
FBIに注入された読取り/クリア/書込み機能(上記の出願に記載)を使用して、サンプル・バッファのフィルタリングとサンプル・バッファのクリアを組み合わせることにより、フレーム処理ループを高速化することができる。サンプル・バッファは、サンプルがサンプル・フィルタに読み込まれた直後にクリアされる。読取り/クリア/書込み機能を使用すると、フレーム処理ループは以下のようになる。
【0177】
これによりクリア時間をフィルタ時間と並行させるため、ループあたりの合計時間は次のようになる。
render_time+max(filter_copy_time,clear_time)+swap_time
【0178】
たいていのフィルタでは、クリア時間がフィルタ時間よりも短いため、クリア時間が「なし」になる。したがって、上式は以下のように簡略化できる。
render_time+filter_copy_time+swap_time
【0179】
2.4 レンダリング性能パラメータ
様々な方法の性能を理解するには、何らかの主要な性能パラメータを定義することが役立つ。図20は、レンダリング性能パラメータを要約した図である。以下の考察は、一実施形態に関して典型的な値を与えるものである。ただし、他の実施形態に様々な他の値も当てはめることができる。
【0180】
・頂点速度Rvは、ホスト・プログラム・ホスト・インターフェース11(たとえばNUPAバス)、メディア・プロセッサの変換/ライト/クリップ・マイクロコード、メディア・プロセッサ14とハードウェア・アクセラレータ18との間のインターフェース(たとえばSUPAバス)のうち最も遅いものによって制限される。頂点速度は、頂点タイプおよびライト(光)の数に応じて変化し、マイクロコードによって制限することができる。典型的なRv値は33M頂点/秒である。
【0181】
・分離された三角形は、1つの三角形に3つの頂点を有する。大きな三角形メッシュの場合、三角形あたりの頂点数は、0.5頂点/三角形の限界値に向かって減少する。長い三角形ストリップの場合、限界値は1頂点/三角形である。短い三角形ストリップの場合、頂点/三角形は1から3の間である。この考察では、長い三角形ストリップが想定される。
【0182】
・プリミティブ速度Rpも、ラスタ化パイプラインRPによって制限することができる。典型的なRp値は、33M三角形/秒である。
【0183】
・ラスタライザのピクセル・シェーディング速度Rzは、エッジ・ウォーカEWおよびスパン・ウォーカSWによって制限することができる。典型的なRz値は666Mピクセル/秒である。
【0184】
・サンプル生成速度Rsは、サンプル生成器SGユニットおよびサンプル評価器SEユニットによって制限することができる。典型的なRs値は、「バディ(buddy)」モードであると想定した場合に1333Mサンプル/秒であり、「バディ」モードなしの場合は666Mサンプル/秒である。
【0185】
・テクスチャ処理速度Rtは主にテクスチャ・メモリ帯域幅およびテクスチャ・フィルタ・タイプ選択によって制限される。典型的なRt値は、バイリニア・フィルタおよび1層テクスチャの場合に、166Mテクスチャ化ピクセル/秒である。より複雑なフィルタおよび/またはより多いテクスチャ層は、かなり低速になる可能性がある。
【0186】
・テクスチャ化サンプル(フラグメント)書込み速度Rwは、フラグメント・パイプラインFP(本明細書ではフラグメントプロセッサとも称される)、FBインターフェース、およびFBメモリによって制限することができる。設計により、RwはRsと同じ(「バディ」モードで1333Mサンプル/秒)になる。
【0187】
前述のように長い三角形ストリップを想定すると、三角形あたりの頂点数は1に近づき、その結果、三角形速度に関する頂点限界値およびラスタ化セットアップ制限値は、ほぼ以下に等しくなる。
Rtri=min(Rv/1,Rp)=33Mtri/sec
【0188】
サンプル・フィル速度は、サンプル生成器SG、テクスチャ処理ピクセル速度×サンプル密度、ラスタライザ・ピクセル速度×サンプル密度、およびフラグメント書込み速度のうち、最も遅いものによって制限することができる。ただし、RwはRsと同じであり、RzはRtよりはるかに大きいため、
Rsfill=min(Rs,D*Rt,D*Rz,Rw)=min(Rs,D*Rt)
であって、Rs=1333Mサンプル/秒(「バディ」モードであると想定)およびRt=166Mテクスチャ化ピクセル/秒(バイリニア・フィルタおよび1層のテクスチャであると想定)を付加すると、サンプル密度(D)が最高8の場合、サンプル・フィル速度は以下のようにテクスチャ速度制限される。
Rsfill=min(Rs,D*Rt)=min(1333,166D)Msamp/sec
【0189】
シーン内のP個の三角形(残りのデータベースがホストによってビュー・フラスタム・カリングされたと想定する)、Awウィンドウ領域、C深さ複雑性、およびDサンプル密度を備えたフレームをレンダリングするための時間は、
render_time=max(tri_time,fill_time)
であり、上式では
tri_time=P/Rp
fill_time=(Aw *C*D)/min(Rs,D*Rt)
である。
【0190】
Awウィンドウ領域およびDサンプル密度を備えたフレームをレンダリングする前に、サンプル・バッファをクリアするための時間は、以下のようになる。
clear_time=D*Aw/Rc=0.188DAwnsec
【0191】
2.5 フィルタリング性能パラメータ
図21は、フィルタリング性能パラメータを示す図である。
【0192】
・サンプル読取り速度Rrは、FBインターフェースおよびFBメモリによって制限することができる。典型的なRrの値は、333Mサンプル/秒である。
【0193】
・サンプル・フィルタ・ピクセル速度Rfは、サンプル読取りバッファ内のフィルタ・フットプリント、サンプル密度、およびキャッシング量によって制限することができる。
【0194】
・ピクセル結果に精密に一致するフットプリントを備えた、単純な拡大していないボックス・フィルタの場合、フィルタ速度は、読取りサンプル速度Rrをサンプル密度Dで割った値に制限することができる。
【0195】
・拡大されたボックスおよび円形フィルタの場合、畳み込み計算に関係するサンプルの数は、フットプリント半径の2乗と共に増加し、読み取られるサンプル数は半径に比例して増加する。半径が増加すると畳み込み計算が障害となる可能性があり、より複雑なフィルタの場合、フィルタ速度は2分の1またはそれ以上に低下する可能性がある。この性能に関する考察は、高速ボックス・フィルタの場合に限定される。
【0196】
・フラグメント書込み速度Rwは、フィルタ/コピー速度を低下させる、結果を表示バッファに書き込むための時間を設定する。ピクセルを書き込む場合、この速度は666Mピクセル/秒であってよい。
【0197】
拡大されていないボックス・フィルタの場合に、結果をフィルタリングおよびコピーするための合計時間は、
filter_time=(Aw *D/Rr)+(Aw/Rw)
filter_time=(3D+1.5)Awnsec
となり、これは、サンプル密度が高くなると3DAwに近づく。
【0198】
3.0 ウィンドウ・サイズあたりのサンプル・バッファ(SB)の動的割振り
FBメモリ内のサンプル・バッファのサイズは、ウィンドウ・サイズの変化に応答して動的に調整することができる。
【0199】
・Wd×Hdピクセルの表示の場合、FBには、少なくともWd×Hd(典型的にはこれよりわずかに多い)の(ダブル・バッファされた)ピクセル表示バッファ・メモリが必要である(すなわち、ピクセル単位のほぼ表示サイズ)。
【0200】
・ウィンドウ・システムでは、全画面サイズよりも小さいウィンドウにレンダリングすることが多い。WW×HWピクセルのウィンドウでは、FBには、少なくともDS×WW×HW(典型的にはこれよりわずかに多い)の(単一バッファ付き)サンプル・バッファ・メモリが必要である(すなわちほぼウィンドウ・サイズ×サンプル密度)。
【0201】
・FBメモリの容量が有限(一実施形態では520万サンプル/ピクセルのメモリ)であり、FBメモリは表示バッファとサンプル・バッファとで共用されるため、最大サンプル密度は、ほぼ以下の整数下限である。
{(ピクセル/サンプル単位のFBサイズ−ピクセル単位の表示サイズ)÷(ピクセル単位のウィンドウ・サイズ)}
【0202】
・これは、解像度の低い表示および/またはサイズの小さいウィンドウでも、固定サイズのフレーム・バッファで高いサンプル密度をサポートできることを意味する。
【0203】
したがって、ホスト・コンピュータ上で実行中のソフトウェアは、現在のウィンドウ・サイズを監視し、固定サイズのフレーム・バッファを最大限に活用するようにサンプル密度を自動的に調整することができる。ユーザが小さなウィンドウ・サイズを選択する(またはそのサイズに変更する)と、グラフィックス・レンダリング・システムの適切なハードウェア・レジスタのセットに書き込むことによって、ホスト・ソフトウェアはサンプル密度を高く調整することが可能であり、またその逆も可能である。
【0204】
ハードウェア・アクセラレータ18は、ピクセル領域あたりで生成されるサンプル数を制御する、1つまたは複数のサンプル密度レジスタを有することができる。サンプル生成器SGは、サンプル密度フィールドを備えた制御レジスタを有することができる。サンプル密度フィールドは、ピクセル領域あたりで生成されるサンプル・ポジションの数を決定する。フレーム・バッファ・アドレッシング・ユニット(FBA)は、フラグメント・アドレスをメモリ・ページおよびデータ・アイテムアドレスにマッピングする責務を負っており、マッピングがサンプル密度に依存するため、サンプル密度レジスタを有することができる。サンプル・フィルタはサンプル密度レジスタを有することができるため、そのフィルタリング・オペレーションのためにピクセル領域あたり適切な数のサンプルを取り込むことができる。サンプル密度レジスタは、動的に調整可能である。
【0205】
ホスト・ソフトウェアは、サンプル密度を変更するために、ハードウェア・アクセラレータ内の1つまたは複数のサンプル密度レジスタに書き込むことができる。一実施形態では、ホスト・ソフトウェアはすべてのサンプル密度レジスタに同じ値を書き込む。
【0206】
ウィンドウのサイズは全画面よりも小さい場合が多い。したがって、ユーザがより大きなウィンドウを選択すると、よりピクセルの多い解像度が得られるため、イメージ品質を上げることができる。
【0207】
それとは逆に、ユーザがウィンドウを小さくすると、動的割振りメカニズムはピクセルあたりのサンプル数を多くして、イメージ品質を維持する。
【0208】
本明細書で使用される「マルチサンプル」という語は、「スーパーサンプル」と同じ意味である。
【0209】
2.1.3項の例で示されるように、(サンプル・バッファを画面全体に対応するように設定しようとするのではなく)サンプル・バッファ・サイズをウィンドウ・サイズに合わせて調整すると、サンプル密度を大幅に増加させることができる。1280×1024表示の場合、ほぼ全画面のウィンドウは1パスで2サンプル/ピクセルをサポートすることが可能であり、1000×1000ウィンドウは3サンプル/ピクセル、720×670は8サンプル/ピクセルがサポート可能であって、かなり品質が良い。
【0210】
サンプル密度を最高にするためにサンプル・バッファ・メモリを動的に割り振るこのメカニズムは、以下の項で述べるメカニズム、すなわち、高いサンプル密度および/または立体ビジョンのための複数のパスと組み合わせることができる。動的メモリ割振りと複数パス・レンダリングの組合せにより、ユーザは、目標とする品質レベル(たとえば所望のサンプル密度)を指定することが可能であり、システムは、現在のウィンドウ・サイズを考慮して、その目標とする品質レベルを達成するのに必要なフレームあたり最小数の(または最小数に近い)パスを実行する。あるいは、ユーザは最低性能目標(たとえば最大フレーム・レンダリング時間)を指定することが可能であり、システムは、最低性能ターゲットよりも上の性能を維持しながら(たとえば、最大フレーム・レンダリング時間内でフレームをレンダリングしながら)、可能な最高サンプル密度を送る。
【0211】
4.0 立体ビジョンのためのサンプル・バッファの再使用
立体ビジョン(2.3.2項に記載)の一般的な一方法は、1回目は左目のパースペクティブ変換マトリクスを使用し、次に再度右目のパースペクティブ変換マトリクスを使用することで、同じシーン・ジオメトリを2回レンダリングすることによって達成される。2つのレンダリングは2つの異なる表示バッファに格納され、同じディスプレイ上に交互に表示することができる(たとえば、位相のずれた左目と右目の液晶「シャッタ」をディスプレイの更新と同期させる、立体眼鏡を使用して見る場合)。
【0212】
表示バッファが2つあると、より多くのフレーム・バッファ・メモリを消費する。ただし、本明細書に記載された「フィルタリング後コピー」方法(すなわちサンプルをオフスクリーン・サンプル・バッファにレンダリングし、サンプル・バッファからバック・ピクセル表示バッファにフィルタリングし、その後表示バッファ切替えを実行する方法)は、サンプル・バッファ要件を増やすことがない。したがって、サンプル・バッファ・メモリを倍増させるような出費なしに、立体ビジョンをサポートすることができる。
【0213】
図22は、立体表示のためのサンプル・バッファの再使用を示す図である。
【0214】
ホスト・ドライバ・ルーチンは、FBメモリ内で左および右の表示バッファを割り振った後に、残りのFBメモリを単一の再使用可能サンプル・バッファとして割り振ることができる。ソフトウェア・アプリケーション(ホスト・コンピュータ上で実行中)は、以下のレンダリング・ループを実施することができる。
この方法により、固定のサンプル・バッファ・サイズについてサンプル密度が2倍になる。
【0215】
5.0 増加したサンプル密度のためのSBの再使用
サンプル・バッファ容量は、表示バッファ要件を差し引いた後で残ったフレーム・バッファ・メモリを決して超えることはない。所与のサイズのウィンドウでは、1つのレンダリング・パスでサポートできる最大のサンプル密度を限度としている。
【0216】
しかし、本明細書に記載された「フィルタリング後コピー」方法を使用すれば、グラフィックス・アプリケーションがサンプル・バッファを再使用して、サンプル・バッファ・メモリ・サイズを増やすことなく、より高いサンプル密度を達成することができる。グラフィックス・アプリケーションは、グラフィックス・レンダリング・システムを使用して、(単一パスでシーン全体がレンダリングされるよりも)高いサンプル密度で、パスあたり1領域、複数パスのシーン内で複数の領域をレンダリングし、表示バッファをスワッピングする前にリア表示バッファでシーン全体を構築することができる。
【0217】
この方法により、より多くのレンダリング・パスを高いサンプル密度と交換することができる。この方法は、(screen_resolution)ダブル・バッファされたメモリに、以下のサイズのサンプル・バッファ・メモリを加えたものを使用する。
(sample_density*window_size/number_of_passes)
【0218】
5.1 アルゴリズム
図23は、高いサンプル密度を達成するための固定サイズのサンプル・バッファの再使用を示す図である。
【0219】
FBメモリで表示バッファを割り振った後、ホスト・ソフトウェア(たとえばホスト・ドライバ・ルーチン)は、残ったFBメモリを単一の再使用可能サンプル・バッファとして割り振ることができる。ホスト・ソフトウェアは、バック表示バッファをN個の隣接する領域に分割することが可能であり、ここでNはシーン・フレームあたりに実行されるパスの数である。したがってNは、1より大きいかまたは等しい整数である。表示メモリ割振りページの形状(その一実施形態が、図6の表に例示されている)により、表示バック・バッファをほぼ同じサイズのN個の領域に分割することが有利である。次にグラフィックス・アプリケーションは、以下のレンダリング・ループを実行することができる。
サンプル・バッファへのレンダリングは所望のサンプル密度で実行され、これはパスが1つしか使用されない場合に可能な密度のN倍まで可能である。
【0220】
2.1.2項に示されるように、ドライバ・ソフトウェアは、整数のFBメモリ・ページ・サイズに切り上げるため、およびサンプル・フィルタ(一定のモードの)は領域からはみ出すフットプリント(またはサポート領域)を有することができる(たとえば領域のエッジ上またはエッジ付近のピクセルを計算する場合)ため、領域サイズ(すなわち、サンプル密度×ウィンドウ幅×ウィンドウ高さ)よりも1ビット大きいサンプル・バッファを割り振ることが可能である。単純な拡大されていないボックス・フィルタ(単一ピクセルの領域をカバーする)の場合、特別な境界線は不要である。
【0221】
5.2 サンプル密度の例
・単一ヘッドの1280×1024の非立体表示の場合、表示バッファは(ceiling(1280/320)*ceiling(1024/16))=256ページのFBメモリを使用する。これで(1024−256)=768ページがサンプル・バッファ用に残される。
(ceiling(960/80)*ceiling(900/16))=684ページであり、768ページよりも少ないため、単一のパスは、サンプル密度4で960×900ピクセルのウィンドウをサポートすることができる。
(ceil(960/40)*ceil(450/16))=696ページであり、768ページよりも少ないため、2つのパスは、サンプル密度8で960×900ピクセルのウィンドウをサポートすることができる。
(ceil(960/40)*ceil(225/8))=696ページであり、768ページよりも少ないため、4つのパスは、サンプル密度16で960×900ピクセルのウィンドウをサポートすることができる。
【0222】
・単一ヘッドの960×680の立体表示の場合、表示バッファは(ceil(960/320)*ceil(680/8))=255ページのFBメモリを使用する。これで(1024−255)=769ページがサンプル・バッファ用に残される。
(ceil(960/80)*ceil(680/12))=684ページであり、769ページよりも少ないため、単一のパスは、サンプル密度5で960×680の全画面表示をサポートすることができる。
(ceil(960/40)*ceil(340/12))=696ページであり、769ページよりも少ないため、2つのパスは、サンプル密度10で960×680の全画面表示をサポートすることができる。
(ceil(960/40)*ceil(227/8))=696ページであり、769ページよりも少ないため、3つのパスは、サンプル密度16で960×680の全画面表示をサポートすることができる。
【0223】
5.3 性能分析
ホスト・アプリケーションは、所与の各パスで使用される領域と一致するようにビュー・フラスタムを設定することができる。したがって、シーンの中で表示バッファ内の現在の領域に投影されない部分は、クリッピングされることになる。この方法を使用すると、領域サイズが小さくなるにつれて、各パスのレンダリングおよびフィルタリング時間が少なくなる。高いサンプル密度でシーン全体(N個の領域すべて)をラスタ化およびフィルタリングするための合計時間が、より多くのメモリを備えたより高価なシステムで高いサンプル密度での単一パスにかかる時間に近づけることができることに留意されたい。
【0224】
バッファ・クリア時間。ウィンドウ領域AWおよびサンプル密度Dのフレームをレンダリングする前に、サンプル・バッファをクリアするための時間は、(少なくとも一部の実施形態では)以下の式で概算することができる。
clear_time=D*AW/RC=0.188DAWnsec
【0225】
グラフィックス・アプリケーションが、それぞれ領域AW/N、サンプル密度N*Dで、N個のパスをN個の対応する領域に流入させると、合計クリア時間(N個のパスについて)は、サンプル密度比率(ND/D)に比例して以下のように増加する。
clear_time=N*D*AW/RC=0.188NDAWnsec
【0226】
フィルタリング/コピー時間。2.5項から、拡大されていないボックス・フィルタについての結果をフィルタリングおよびコピーするための合計時間は、以下の通りであることを想起されたい。
filter_time=(AW *D/Rr)+(AW/RW)
filter_time=(3D+1.5)AWnsec
【0227】
グラフィックス・アプリケーションが、それぞれ領域AW/N、サンプル密度N*Dで、N個のパスをN個の対応する領域に流入させると、合計フィルタリング/コピー時間(N個のパスについて)は、サンプル密度比率(ND/D)に比例して以下のように増加し、
filter_time=N*(3ND+1.5)(AW/N)nsec
filter_time=(3ND+1.5)Ansec
これで、高いサンプル密度および複数のパスの場合、3NDAWに近づく。
【0228】
サンプル・フィル時間。2.4項から、
Rsfill=min(Rs,D*Rt)=min(1333,166D)Msamp/sec
であることを想起されたい。したがって、単一のバイリニア・テクスチャの場合、D<8であれば、システムはテクスチャ速度を以下のように制限することが可能であり、
Rsfill(D<8)=166DMsamp/sec
さらにD>=8であれば、システムはサンプル速度を以下のように制限することが可能である。
Rsfill(D>=8)=1333Msamp/sec
【0229】
より複雑なテクスチャリングの場合、Dのしきい値がさらに高くなることさえある。D<8の場合、1つのパス、サンプル密度Dで、ピクセルをウィンドウ・サイズAWにフィルするための時間は、以下のようになる。
fill_time=(AW *C*D)/166*D=(AW *C)/166microsec
【0230】
あるいは、グラフィックス・アプリケーションが、それぞれ領域AW/N、サンプル密度N*Dで、N個のパスをN個の対応する領域に流入させると、(NDは依然として8より小さいかまたは等しいと想定する)合計フィル時間(N個のパスについて)は増加しない。
fill_time=N*((AW/N)*C/166=(AW *C)/166microsec
【0231】
したがって、単一のバイリニア・テクスチャリングの場合、複数のパスはフィル時間を増やさずにサンプル密度を8まで上げることができる。より複雑なテクスチャリングの場合、フィル時間を増やさずにサンプル密度をより高くすることさえ可能である。
【0232】
三角形ラスタ化セットアップ時間。ホストのビュー・フラスタム・カリングおよびハードウェアのクリッピングが行われた後に(言い換えれば、シーン内の三角形がウィンドウ内部にある)、P個の三角形を備え、ウィンドウ領域AW、深さ複雑性C、およびサンプル密度Dで、フレームのラスタ化を設定するための時間は、以下のようになることを想起されたい。
tri_time=P/RP=3Pnsec
【0233】
シーンがN個の領域に区分されている場合、各領域には、ウィンドウAW内で見えるP/Nのプリミティブより平均して少し多く収まることになる(すなわち、領域の境界線をまたがるプリミティブは部分的に両方の領域にあることになる)。したがって、N個の領域をレンダリングするための合計時間は、大幅には増加しない(少なくともPが大きくNが小さい場合)。
tri_time=N*3((P/N)=3Pnsec
【0234】
頂点処理時間。
ホストが、ハードウェア処理と全面的に重なる「完全な」ビュー・フラスタム・カリングを実行した場合、シーンがN個の領域に区分されていれば、V/Nより少し多い頂点が各領域に収まることになる(領域の境界線をまたがるプリミティブは部分的に両方の領域にあることになる)。N個の領域で頂点を変換およびライティングするための合計時間は、大幅には増加しない(Vが大きくNが小さい場合)。
(lower bound)vtx_time=N*3(V/N)=3Vnsec
【0235】
ビュー・フラスタム・カリングが完全でない(またはまったくない)場合、頂点処理の負荷はN倍ずつ増加する可能性がある。
(upper bound)vtx_time=N*3P=3PNnsec
【0236】
フレーム時間。まとめると、合計アニメーション・フレーム時間は以下のようになる。
frame_time=clear_time+render_time+filter_time+swap_time
【0237】
アニメーション・フレーム速度は、アニメーション・フレーム時間に単純に反比例する。
【0238】
グラフィックス・レンダリング・システムは、ダブル・バッファされたバッファ・スワップを実行するために、ウィンドウ・ルックアップ・テーブルを介して間接的な処置を使用することができる。したがって、swap_timeはわずかである(テーブル・エントリを更新するための時間のみ)。2重バッファ・スワップが(よりスムースなアニメーションのために)意図的に表示帰線と同期される場合、単にswap_timeは、合計frame_timeを表示フレーム時間の整数倍となるように量子化する効果を有する。この場合、次の頂点帰線を待つために費やす時間は、合計アニメーション・フレーム時間を増やすことなく、他の3回での穏やかな増加をマスクすることができる。
【0239】
本明細書でさまざまな処理速度に引用された例示的な値は、限定的なものではない。これらの処理速度は、実施形態によって様々な範囲の値を達成することができる。
【0240】
要約
サンプル・メモリを追加せずにサンプル密度を上げるために、N個のパスが使用される場合、
・サンプル・バッファのクリアおよびフィルタリング時間は、サンプル密度に比例して増加する(より多くのメモリが使用される場合と同様)。
・しきい値(この例ではサンプル密度8であり、図20に示されるように、相対的な性能と、サンプルおよびテクスチャの処理経路を並行して機能させることによって設定される)を下回る場合、サンプル・フィル時間は増加しない。
・三角形ラスタ化時間は、大幅には増加しない(領域の境界上にある数個の三角形は2回処理される)。
・頂点処理時間は、N倍を超えない程度ずつ増加するが、グラフィックスプロセッサの前の効率的なビュー・フラスタム・カリングに伴うわずかな増加に近づくことができる。
【0241】
これは、フィル速度が制限されている(一般的なケース)シーンの場合、メモリを追加することなく、また性能を著しく損なうことなく、サンプル密度を上げることができることを意味する。
【0242】
頂点速度が制限されている場合、性能の低下はN分の1ほどにはならず、ビュー・フラスタム・カリングによって減らすことができる。
【0243】
たとえ大幅な性能の低下が発生しても、この方法は、性能と引き換えにより高いサンプル密度(すなわちよりよい品質)を得ることができる。サンプル密度は、コストまたは技術的に制限されていても、メモリの制限値を超えて増やすことが可能である。
【0244】
6.0 立体ビジョンおよびサンプル密度の増加
グラフィックス・アプリケーションは、「立体ビジョンのためのサンプル・バッファの再使用」(4.0項)と「増加したサンプル密度のためのサンプル・バッファの再使用」(5.0項)の両方を活用するように、グラフィックス・レンダリング・システムを構成することができる。
【0245】
図24は、より高いサンプル密度を達成するためのサンプル・バッファの再使用を示す図である。
【0246】
さらに、3.0項(すなわち「ウィンドウ・サイズあたりのSBの動的割振り」)で述べたように、グラフィックス・アプリケーションは、どちらかまたは両方の技術(すなわち立体ビジョンのためのSBの再使用および/または増加したサンプル密度のためのSBの再使用)を、現在のウィンドウ・サイズおよびユーザ基本設定(目標サンプル密度または目標フレーム速度)に基づいた動的割振りと組み合わせるように構成することができる。
【図面の簡単な説明】
【図1A】グラフィックス・レンダリング・システムの一実施形態を示す図である。
【図1B】グラフィックス・レンダリング・システム内のハードウェア・アクセラレータの一実施形態を示す図である。
【図1C】グラフィックス・レンダリング・システム内のハードウェア・アクセラレータの他の実施形態を示す図である。
【図1D】グラフィックス・レンダリング・システム内のメディア・プロセッサの一実施形態を示す図である。
【図2】グラフィックス・レンダリング・システムの他の実施形態を示す図である。
【図3】フレーム・バッファ・データ・ユニット(たとえばピクセルまたはサンプル)内のビット・プレーンの割振りに関する例示的な実施形態を示す図である。
【図4】フレーム・バッファ・データ・ユニット(たとえばピクセルまたはサンプル)内のビット・プレーンの割振りに関する例示的な実施形態を示す図である。
【図5】フレーム・バッファ中の表示バッファおよびスーパーサンプル・バッファの割振りの一例を示す図である。
【図6】様々なフレーム・バッファ・モードでのメモリ割振りページ・サイズ(ピクセル単位)の一実施形態を示す図である。
【図7】サンプル・バッファの領域をクリアするための高速フィル機能の一実施形態を示す図である。
【図8】マルチサンプル(すなわちスーパーサンプル)をサンプル・バッファにレンダリングするためのプロセスの一実施形態を示す図である。
【図9】グラフィックス・レンダリング・パイプラインの一実施形態におけるサンプル処理およびテクスチャ処理リソースの並行処理を示す図である。
【図10】コピー・オペレーションのセットで使用されるコピー経路を示す図である。
【図11】コピー、フィルタリング、および累算のオペレーション・セットに関するデータ流れを示す図である。
【図12】ピクセル・コピー・オペレーション(すなわち、フレーム・バッファからフレーム・バッファへのブロック・コピー・オペレーション)のためのアドレス生成を示す図である。
【図13】サンプル・フィルタリング・オペレーションのためのアドレス生成を示す図である。
【図14】1×1平方のサポート領域を有するフィルタを使用したサンプル・フィルタリングのための例示的なフットプリントを示す図である。
【図15】半径R=2のディスク形サポート領域を有するフィルタを使用したサンプル・フィルタリングのための例示的なフットプリントを示す図である。
【図16】ソース・アドレス、宛先アドレス、データ、およびアドレスとデータの結合流れを強調した、フレーム・バッファからフレーム・バッファへのコピー・オペレーションの一実施形態を示す図である。
【図17】スーパーサンプル読取りパスでのオペレーション・コードの流れを示す図である。
【図18】一実施形態での、結果ピクセルをバック表示バッファへサンプル・フィルタリングおよびコピーするステップを示す要約図である。
【図19】一実施形態での、表示バッファの前半分からのデータを表示するステップを示す図である。
【図20】サンプル・バッファへのサンプルのレンダリングに関する、レンダリング性能パラメータのセットを示す図である。
【図21】サンプル・バッファからのサンプルのフィルタリングに関する、フィルタリング性能パラメータのセットを示す図である。
【図22】一実施形態での、立体表示のためのサンプル・バッファの再使用を示す図である。
【図23】他の実施形態での、より高いサンプル密度を達成するための固定サイズのサンプル・バッファの再使用を示す図である。
【図24】立体実施形態での、より高いサンプル密度を達成するためのマルチパス・レンダリングを示す図である。
【符号の説明】
14 メディア・プロセッサ
16 共用メモリ(DRDRAM)
18 ハードウェア・アクセラレータ
20 テクスチャ・バッファ
22 フレーム・バッファ
24 ビデオ出力プロセッサ
26 RGB DAC
28 ビデオ・エンコーダ
30 ブートPROM
104 ホスト・バス
Claims (45)
- サンプル・バッファおよびダブル・バッファされた表示域を含むフレーム・バッファと、
フレーム・バッファに結合され、さらに(a)プリミティブを受け取り、(b)動的に調整可能なサンプル密度値に基づいてプリミティブ用のサンプルを生成し、(c)サンプルをサンプル・バッファに書き込み、(d)サンプル・バッファからサンプルを読み出し、(e)ピクセルを生成するためにサンプルをフィルタリングし、(f)ピクセルをダブル・バッファされた表示域のバック・バッファに格納するように構成されたハードウェア・アクセラレータと
を含むグラフィックス・システム。 - ハードウェア・アクセラレータが、フラグメント座標をフレーム・バッファのメモリ・アドレスにマッピングするように構成されたフレーム・バッファ・アドレス・ユニットを含み、フレーム・バッファ・アドレス・ユニットが、フラグメント・アドレスとメモリ・アドレスとの間のマッピングを制御する動的にプログラム可能なレジスタを含む請求項1に記載のグラフィックス・システム。
- ホスト・コンピュータ上で実行中のプログラムが、1つまたは複数のウィンドウ・サイズ・パラメータの変更を指定するユーザ入力に応答して、フレーム・バッファ内でサンプル・バッファを再割り振りするために、プログラム可能レジスタを動的に更新するように構成される請求項2に記載のグラフィックス・システム。
- プログラムが、最大のサンプル密度を達成するようにサンプル・バッファを再割振りする請求項3に記載のグラフィックス・システム
- フレーム・バッファ・メモリ内のメモリ・デバイスが並列の読取りバスおよび書込みバスを有し、ハードウェア・アクセラレータがサンプル・バッファ内のソース・ブロック上でのクリア・オペレーションと平行して(d)を実行するように構成される請求項1に記載のグラフィックス・システム。
- プログラム可能サンプル密度に基づいてフレーム・バッファの使用可能スペースにサンプルをレンダリングし、サンプル・バッファからフレーム・バッファのダブル・バッファされた表示域へのサンプルをフィルタリングするように構成されたグラフィックス・アクセラレータを制御するための方法であって、
(a)ウィンドウの幅および高さを決める入力を受け取ること、
(b)ウィンドウの幅およびサンプル密度推定値に基づいてウィンドウを水平にカバーするメモリ割振りページの第1の数を計算すること、
(c)ウィンドウの高さおよびサンプル密度推定値に基づいてウィンドウを垂直にカバーするメモリ割振りページの第2の数を計算すること、
(d)第1の数と第2の数を掛け合わせて、メモリ割振りページの第3の数を決定すること、
(e)(b)、(c)、および(d)を1回または複数回実行して、メモリ割振りページの第3の数がフレーム・バッファの使用可能スペースに納まる条件によって決まるサンプル密度推定値を最大化すること、
(f)最大化されたサンプル密度推定値を使用して、グラフィックス・アクセラレータのサンプル密度を再プログラミングすること
を含む方法。 - フレーム・バッファの使用可能スペースが、ダブル・バッファされた表示域によって占有されていないフレーム・バッファ内のスペースである請求項6に記載の方法。
- ハードウェア・アクセラレータと、
ハードウェア・アクセラレータに結合され、サンプル・バッファおよびダブル・バッファされた表示域を含むフレーム・バッファを含むグラフィックス・システムとを含み、
ハードウェア・アクセラレータが、(a)プリミティブを受け取り、(b)動的に調整可能なプログラム可能サンプル密度値に基づいてプリミティブ用のサンプルを生成し、(c)サンプルをサンプル・バッファに書き込み、(d)サンプル・バッファからサンプルを読み出し、(e)ピクセルを生成するためにサンプルをフィルタリングし、(f)ピクセルをダブル・バッファされた表示域のバック・バッファに格納するように構成されたグラフィックス・システム。 - ダブル・バッファされた表示域のフロント・バッファからピクセルを読み取るように構成されたビデオ出力プロセッサをさらに含み、ハードウェア・アクセラレータおよびビデオ出力プロセッサが、ホスト・コンピュータからのスワップ・コマンドに応答して、ダブル・バッファされた表示域のフロント・バッファおよびバック・バッファのバッファ・スワップを実行するように構成された請求項8に記載のグラフィックス・システム。
- フレーム・バッファが複数のランダム・アクセス・メモリ(RAM)デバイスを含み、ビデオ出力プロセッサがRAMデバイスのサブセットに結合され、RAMデバイスのサブセット内でフレーム・バッファのダブル・バッファされた表示域が割り振られる請求項9に記載のグラフィックス・システム。
- ハードウェア・アクセラレータが前記複数のRAMデバイスそれぞれに結合され、サンプル・バッファのサイズおよびサンプル・バッファのページ境界線がプログラム可能である請求項10に記載のグラフィックス・システム。
- 前記複数のRAMデバイスがダイナミック・ランダム・アクセス・メモリである請求項10に記載のグラフィックス・システム。
- 格納されたマイクロコードを実行するように構成された1つまたは複数の処理ユニットをさらに含み、1つまたは複数の処理ユニットが、格納されたマイクロコードの実行に応答して、前記プリミティブの頂点で変換および書き込み動作を実行するように構成された請求項8に記載のグラフィックス・システム。
- ハードウェア・アクセラレータが、フレーム・バッファ内のサンプル・バッファの位置およびサイズを決定するプログラム可能レジスタのセットを含む請求項8に記載のグラフィックス・システム。
- (a)調整済みウィンドウの幅および高さを決める入力を受け取ること、
(b)調整済みウィンドウの幅およびサンプル密度推定値に基づいて調整済みウィンドウを水平にカバーするメモリ割振りページの第1の数を計算すること、
(c)調整済みウィンドウの高さおよびサンプル密度推定値に基づいて調整済みウィンドウを垂直にカバーするメモリ割振りページの第2の数を計算すること、
(d)第1の数と第2の数を掛け合わせて、メモリ割振りページの第3の数を決定すること、
(e)(b)、(c)、および(d)を1回または複数回実行して、グラフィックス・アクセラレータによって達成可能なサンプル密度のセット内で、メモリ割振りページの第3の数が使用可能ページ・スペースの量より少ないかまたは等しいという条件によって決まる、サンプル密度推定値を最大化すること、
(f)最大化されたサンプル密度をグラフィックス・アクセラレータに書き込むことを含む方法。 - 使用可能ページ・スペース量が、フレーム・バッファのページ容量と、フレーム・バッファのダブル・バッファされた表示域のページ使用量との差である請求項15に記載の方法。
- 第1の数および第2の数の最大値をグラフィックス・アクセラレータに書き込むことをさらに含む請求項15に記載の方法。
- 第3の数の最大値をグラフィックス・アクセラレータに書き込むことをさらに含む請求項15に記載の方法。
- ユーザがオンスクリーン・ウィンドウを調整するごとに、(a)、(b)、(c)、(d)、および(e)を反復することをさらに含む請求項15に記載の方法。
- グラフィックス・アクセラレータが、
最大化されたサンプル密度に基づいてサンプルをサンプル記憶域にレンダリングすることと、
表示可能ピクセルを生成するためにサンプル記憶域からサンプルをフィルタリングし、表示可能ピクセルをフレーム・バッファのダブル・バッファされた表示域に格納することをさらに含む請求項15に記載の方法。 - 使用可能ページ・スペース量が、フレーム・バッファの容量とダブル・バッファされた表示域のサイズとの差に等しい請求項20に記載の方法。
- ダブル・バッファされた表示域から表示可能ピクセルを読み取ることおよび表示することをさらに含む請求項20に記載の方法。
- メモリ割振りページが、サンプル密度推定値に依存したピクセル単位のページ幅およびページ高さを有する請求項15に記載の方法。
- ホスト・バスを介してグラフィックス・アクセラレータに結合されたホスト・コンピュータによって(a)から(e)が実行される請求項15に記載の方法。
- プログラム可能サンプル密度に基づいてフレーム・バッファの使用可能スペースにサンプルをレンダリングし、サンプル・バッファからフレーム・バッファのダブル・バッファされた表示域へのサンプルをフィルタリングするように構成されたグラフィックス・システムによって生成されたイメージの品質を維持するための方法であって、
(a)新しいウィンドウ・サイズを決める入力の受取りに応答して、アニメーション・フレームのグラフィックス・システムの第1のパスの数に対応する実現可能サンプル密度を算出すること、
(b)ユーザ指定のサンプル密度より大きいかまたは等しい実現可能サンプル密度に対応する第1の数の値を決定するために、前記計算を1回または複数回実行すること、
(c)前記値に等しいグラフィックス・システムの第1のパスの数を設定するために、グラフィックス・システムの1つまたは複数のプログラム可能レジスタに書き込むことを含む方法。 - (b)の後に、実現可能サンプル密度の最終値に等しくプログラムサンプル密度を設定するために、グラフィックス・システムの1つまたは複数の追加のレジスタに書き込むことをさらに含む請求項25に記載の方法。
- 前記書込みが、ユーザ指定のサンプル密度が前のウィンドウ・サイズよりも大きい新しいウィンドウ・サイズで維持できるように、第1の数を増やすものである請求項25に記載の方法。
- (a)、(b)、および(c)がグラフィックス・システムに結合されたコンピュータによって実行される請求項25に記載の方法。
- ハードウェア・アクセラレータと、
サンプル記憶域およびダブル・バッファされた表示ピクセル領域を含むフレーム・バッファとを含むグラフィックス・システムであって、
ハードウェア・アクセラレータが、
(a)プリミティブのストリームをサンプルにレンダリングし、
(b)サンプルをフレーム・バッファのサンプル記憶域に格納し、
(c)サンプル記憶域からサンプルを読み取り、
(d)ピクセルを生成するためにサンプルをフィルタリングし、
(e)フレーム・バッファの表示ピクセル領域の第1のバッファにピクセルを格納するように動作可能であり、
ハードウェア・アクセラレータが、第1のバッファの制御をビデオ出力プロセッサに渡す前にアニメーションのフレームを完了させるために、N個の対応するプリミティブのストリーム上で(a)、(b)、(c)、(d)、および(e)をN回実行するように動作可能であって、Nが正の整数である、グラフィックス・システム。 - ハードウェア・アクセラレータに結合されたホスト・コンピュータをさらに含み、ホスト・コンピュータが、プログラム命令の実行に応答して、アニメーションの各フレームについて(a)、(b)、(c)、(d)、および(e)のN回の反復を制御するように構成された請求項29に記載のグラフィックス・システム。
- N=2であり、プログラム命令が立体ビデオ・アプリケーションを含み、立体ビデオ・アプリケーションが、アニメーションの各フレームについて第1回は第1のバッファの右目部分をターゲットとし、第2回は第1のバッファの左目部分をターゲットとして、(a)、(b)、(c)、(d)、および(e)を実行するようにハードウェア・アクセラレータに命令する請求項30に記載のグラフィックス・システム。
- N=2Kであり、プログラム命令が立体ビデオ・アプリケーションを含み、立体ビデオ・アプリケーションが、アニメーションの各フレームについて、K回の第1のセットは第1のバッファの左目部分に対応するKをターゲットとし、K回の追加セットは第1のバッファの右目部分に対応するKをターゲットとして、(a)、(b)、(c)、(d)、および(e)を実行するようにハードウェア・アクセラレータに命令するものであって、Kは正の整数である請求項30に記載のグラフィックス・システム。
- ホスト・コンピュータが、(a)、(b)、(c)、(d)、および(e)の各反復についてビュー・フラスタム・カリングを実行するように構成され、ビュー・フラスタム・カリングが、(a)、(b)、(c)、(d)、および(e)の各反復で書き込まれた第1のバッファの領域に対応する請求項30に記載のグラフィックス・システム。
- ハードウェア・アクセラレータが、動的に調整可能なプログラム可能サンプル密度でプリミティブのストリームをサンプルにレンダリングするように構成され、ホスト・コンピュータが、ユーザのウィンドウ調整に応答して最大の達成可能サンプル密度を維持するために、ハードウェア・アクセラレータのプログラム可能サンプル密度を動的に再プログラミングするように構成された請求項30に記載のグラフィックス・システム。
- ハードウェア・アクセラレータが、動的に調整可能なサンプル密度でプリミティブのストリームをサンプルにレンダリングするように構成され、ホスト・コンピュータが、目標とするアニメーション・フレーム速度を維持するために、ハードウェア・アクセラレータのサンプル密度を動的に調整するように構成された請求項30に記載のグラフィックス・システム。
- ハードウェア・アクセラレータが、動的に調整可能なサンプル密度でプリミティブのストリームをサンプルにレンダリングするように構成され、ホスト・コンピュータが、目標とするアニメーション・フレーム速度を維持するためにNを調整するように構成された請求項30に記載のグラフィックス・システム。
- ハードウェア・アクセラレータが、動的に調整可能なプログラム可能サンプル密度でプリミティブのストリームをサンプルにレンダリングするように構成された請求項29に記載のグラフィックス・システム。
- ホスト・コンピュータが、ウィンドウ・サイズの変化に応答してユーザ定義のサンプル密度値を維持するために、Nを動的に調整するように構成された請求項29に記載のグラフィックス・システム。
- (a)、(b)、(c)、(d)、および(e)の各反復で第1のバッファの対応する部分に書き込む請求項29に記載のグラフィックス・システム。
- ハードウェア・アクセラレータが、ホストプロセッサからのパラメータの受取りに応答して、サンプル・バッファのページ境界線を動的に再割振りするように構成された請求項29に記載のグラフィックス・システム。
- ビデオプロセッサが、表示ピクセル域からピクセルを読み取り、ピクセルをデジタル・アナログ変換器に転送するように構成された請求項29に記載のグラフィックス・システム。
- プログラム可能サンプル密度に基づいてフレーム・バッファの使用可能スペースにサンプルをレンダリングし、サンプル・バッファからフレーム・バッファのダブル・バッファされた表示域へのサンプルをフィルタリングするように構成されたグラフィックス・システムによって生成されたイメージの品質を維持するための方法であって、
(a)調整済みウィンドウのウィンドウ幅および高さを決める入力を受け取ること、
(b)グラフィックス・システムによって達成可能なサンプル密度のセットから、サンプル密度値を選択すること、
(d)正の整数値Nを選択すること、
(c)ウィンドウ幅を選択されたサンプル密度に対応するページ幅で割った第1の上限を計算すること、
(d)ウィンドウ高さを整数値Nで割って第1の結果を決定すること、
(e)第1の結果を選択されたサンプル密度に対応するページ高さで割って第2の上限を計算すること、
(f)第1の上限と第2の上限を掛け合わせてパスあたりのページ推定値を決定すること、
(g)パスあたりのページ推定値がフレーム・バッファの使用可能スペースよりも大きい場合は、整数値Nを増やして(c)、(d)、(e)、および(f)を繰り返すこと、
(h)アニメーション・フレームのNパス・レンダリング用のグラフィックス・システムに合わせて構成されるように、グラフィックス・システムの1つまたは複数のプログラム可能レジスタに書き込むことを含む方法。 - フレーム・バッファの使用可能スペースが、ダブル・バッファされた表示域に割り振られていないフレーム・バッファのスペースである請求項42に記載の方法。
- (a)サンプルを生成するためにグラフィックス・プリミティブをレンダリングし、サンプルをフレーム・バッファのサンプル記憶域に格納すること、
(b)ピクセルを生成するためにサンプルをフィルタリングし、フレーム・バッファの表示可能領域の第1のバッファ・セグメントにピクセルを格納すること、
(c)第1のバッファ・セグメントの対応する2つ以上の部分をターゲットとして、(a)および(b)を2回以上実行すること、
(d)第1のバッファ・セグメントの制御を出力プロセッサに渡すために、バッファ・スワップ・オペレーションを実行することを含む方法。 - (d)の後、格納したピクセルを第1のセグメントからデジタル・アナログ変換装置へ転送することをさらに含む請求項44に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US36359602P | 2002-03-12 | 2002-03-12 | |
US10/383,165 US6999087B2 (en) | 2002-03-12 | 2003-03-06 | Dynamically adjusting sample density in a graphics system |
US10/383,234 US6975322B2 (en) | 2002-03-12 | 2003-03-06 | Dynamically adjusting a number of rendering passes in a graphics system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004348169A true JP2004348169A (ja) | 2004-12-09 |
Family
ID=29554220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003066615A Pending JP2004348169A (ja) | 2002-03-12 | 2003-03-12 | グラフィック・システムにおけるサンプル密度および/またはいくつかのレンダリング・パスの動的な調整 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1345168B1 (ja) |
JP (1) | JP2004348169A (ja) |
DE (1) | DE60317001D1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008524720A (ja) * | 2004-12-20 | 2008-07-10 | エヌヴィディア コーポレイション | プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130009964A1 (en) * | 2010-07-14 | 2013-01-10 | Dale Paas | Methods and apparatus to perform animation smoothing |
US8780118B2 (en) * | 2011-06-13 | 2014-07-15 | Samsung Electronics Co., Ltd. | Techniques for synchronizing hardware accelerated graphics rendering and surface composition |
KR102554419B1 (ko) * | 2017-12-26 | 2023-07-11 | 삼성전자주식회사 | 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 |
CN111597886B (zh) * | 2020-04-07 | 2023-11-07 | 广州安凯微电子股份有限公司 | 一种用于指纹图像处理的硬件加速器、系统及加速方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2532267B1 (fr) * | 1982-08-31 | 1988-05-27 | Lely Nv C Van Der | Tracteur comportant une pluralite de roues motrices |
US6424343B1 (en) * | 1998-02-17 | 2002-07-23 | Sun Microsystems, Inc. | Graphics system with programmable real-time sample filtering |
US6496187B1 (en) * | 1998-02-17 | 2002-12-17 | Sun Microsystems, Inc. | Graphics system configured to perform parallel sample to pixel calculation |
US7106322B2 (en) * | 2000-01-11 | 2006-09-12 | Sun Microsystems, Inc. | Dynamically adjusting a sample-to-pixel filter to compensate for the effects of negative lobes |
-
2003
- 2003-03-12 DE DE60317001T patent/DE60317001D1/de not_active Expired - Lifetime
- 2003-03-12 EP EP20030251516 patent/EP1345168B1/en not_active Expired - Lifetime
- 2003-03-12 JP JP2003066615A patent/JP2004348169A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008524720A (ja) * | 2004-12-20 | 2008-07-10 | エヌヴィディア コーポレイション | プログラム可能なハードウェアを用いたリアルタイムディスプレイの後処理 |
Also Published As
Publication number | Publication date |
---|---|
EP1345168A2 (en) | 2003-09-17 |
DE60317001D1 (de) | 2007-12-06 |
EP1345168B1 (en) | 2007-10-24 |
EP1345168A3 (en) | 2005-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6999087B2 (en) | Dynamically adjusting sample density in a graphics system | |
US6975322B2 (en) | Dynamically adjusting a number of rendering passes in a graphics system | |
US6816161B2 (en) | Vertex assembly buffer and primitive launch buffer | |
US5701444A (en) | Three-dimensional graphics subsystem with enhanced support for graphical user interface | |
US5990904A (en) | Method and system for merging pixel fragments in a graphics rendering system | |
US5808617A (en) | Method and system for depth complexity reduction in a graphics rendering system | |
US5790134A (en) | Hardware architecture for image generation and manipulation | |
US6587112B1 (en) | Window copy-swap using multi-buffer hardware support | |
US5949428A (en) | Method and apparatus for resolving pixel data in a graphics rendering system | |
US5274760A (en) | Extendable multiple image-buffer for graphics systems | |
US6924808B2 (en) | Area pattern processing of pixels | |
US5835096A (en) | Rendering system using 3D texture-processing hardware for accelerated 2D rendering | |
US5815166A (en) | Graphics subsystem with slaveable rasterizer | |
US5798770A (en) | Graphics rendering system with reconfigurable pipeline sequence | |
US5727192A (en) | Serial rendering system with auto-synchronization on frame blanking | |
US5764243A (en) | Rendering architecture with selectable processing of multi-pixel spans | |
US5886701A (en) | Graphics rendering device and method for operating same | |
US6704026B2 (en) | Graphics fragment merging for improving pixel write bandwidth | |
US6812928B2 (en) | Performance texture mapping by combining requests for image data | |
US8681154B1 (en) | Adaptive rendering of indistinct objects | |
US6975317B2 (en) | Method for reduction of possible renderable graphics primitive shapes for rasterization | |
US6859209B2 (en) | Graphics data accumulation for improved multi-layer texture performance | |
US5732248A (en) | Multistep vector generation for multiple frame buffer controllers | |
US6867778B2 (en) | End point value correction when traversing an edge using a quantized slope value | |
US6963342B2 (en) | Arbitration scheme for efficient parallel processing |