(57)【要約】並列適応可能なグラフィックスラスタライズシステム（１００）は、プリミティブ（７００，８００）を第１ラスタライザ（１５５，３５０，４１０，５２５）又は複数の第２ラスタライザ（３５５，４０５，５４０，６０５）のうち１つの第２ラスタライザに選択的にルーティングするルータ（５２０）を含むプリミティブアセンブラ（１３５，３１５，５１５）を備える。第２ラスタライザは、異なるプリミティブに対して同時に動作し、プリミティブは、プリミティブの面積に基づいて選択的にルーティングされる。いくつかの変形例では、プリミティブを複数の第２ラスタライザのうち１つの第２ラスタライザに提供する前に、プリミティブのバウンディングボックス（２１５，７０５，８０５）が所定のピクセル数に縮小される。バウンディングボックスを縮小することは、例えば、プリミティブを表す点の座標からバウンディングボックスの原点を減算することを含む。【選択図】図１Ａ
2019530069.tif 000002
【特許請求の範囲】
【請求項１】
プリミティブ（７００，８００）の面積に基づいて、前記プリミティブを第１ラスタライザ（１５５，３５０，４１０，５２５）又は複数の第２ラスタライザ（３５５，４０５，５４０，６０５）のうち１つの第２ラスタライザに選択的にルーティングすることであって、前記複数の第２ラスタライザは、異なるプリミティブに対して同時に動作する、ことを含む、
方法。
【請求項２】
前記プリミティブを選択的にルーティングすることは、
前記プリミティブの面積が所定のピクセル数に基づく閾値面積よりも大きいことに応じて、前記プリミティブを前記第１ラスタライザにルーティングすることと、
前記プリミティブの面積が前記閾値面積よりも小さいことに応じて、前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザにルーティングすることと、を含む、
請求項１の方法。
【請求項３】
前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザに選択的にルーティングすることは、前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザに提供する前に、前記プリミティブのバウンディングボックス（２１５，７０５，８０５）を前記所定のピクセル数に縮小することを含む、
請求項２の方法。
【請求項４】
前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザに選択的にルーティングすることは、前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザに提供する前に、前記プリミティブを表す点の座標から前記バウンディングボックスの原点を減算することをさらに含む、
請求項３の方法。
【請求項５】
前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザに選択的にルーティングすることは、前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザに提供する前に、前記プリミティブを、前記プリミティブを複数のキュー（６１５）のうち１つのキューに分配するクロスバースイッチ（６１０）に選択的にルーティングして、前記プリミティブの点又は頂点の特性を表す値を記憶することをさらに含む、
請求項４の方法。
【請求項６】
前記複数のキューの深さは、前記プリミティブの縮小したバウンディングボックス内の座標を処理するのに必要なレイテンシを補うように構成されている、
請求項５の方法。
【請求項７】
第１ラスタライザ（１５５，３５０，４１０，５２５）と、
異なるプリミティブに対して同時に動作する複数の第２ラスタライザ（３５５，４０５，５４０，６０５）と、
プリミティブ（７００，８００）の面積に基づいて、前記プリミティブを第１ラスタライザ（１５５，３５０，４１０，５２５）又は複数の第２ラスタライザ（３５５，４０５，５４０，６０５）のうち１つの第２ラスタライザに選択的にルーティングするルータ（５２０）と、を備える、
装置。
【請求項８】
前記ルータは、
前記プリミティブの面積が所定のピクセル数に対応する閾値面積よりも大きいことに応じて、前記プリミティブを前記第１ラスタライザにルーティングし、
前記プリミティブの面積が前記閾値面積よりも小さいことに応じて、前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザにルーティングする、
請求項７の装置。
【請求項９】
前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザに提供する前に、前記プリミティブのバウンディングボックス（２１５，７０５，８０５）を前記所定のピクセル数に縮小するバウンディングボックス縮小ブロック（４０１，３４５，５３５）をさらに備える、
請求項８の装置。
【請求項１０】
前記バウンディングボックス縮小ブロックは、前記プリミティブを前記複数の第２ラスタライザのうち１つの第２ラスタライザに提供する前に、前記プリミティブを表す点の座標から前記バウンディングボックスの原点を減算するように構成されている、
請求項９の装置。
【請求項１１】
前記複数の第２ラスタライザに関連する複数のキュー（６１５）であって、前記複数のキューの各々は、前記プリミティブを前記複数の第２ラスタライザのうち対応する第２ラスタライザに提供する前に、前記プリミティブの点又は頂点の特性を表す値を記憶するように構成されている、複数のキュー（６１５）と、
前記プリミティブを前記複数のキューのうち１つのキューに分配するクロスバースイッチ（６１０）と、をさらに備える、
請求項１０の装置。
【請求項１２】
前記複数のキューの深さは、前記プリミティブの縮小したバウンディングボックス内の座標を処理するのに必要なレイテンシを補うように構成されている、
請求項１１の装置。
【請求項１３】
出力プリミティブを生成するために入力プリミティブに対してテッセレーションを同時に行う複数のテッセレーションエンジン（５１０）を含むテッセレータ（５０５）をさらに備え、
前記ルータは、前記出力プリミティブの面積に基づいて、前記第１ラスタライザ又は前記複数の第２ラスタライザのうち１つの第２ラスタライザに前記出力プリミティブを選択的にルーティングするように構成されている、
請求項８の装置。
【請求項１４】
複数の第１ラスタライザ（３５５，４０５，５４０，６０５）を使用して、プリミティブ（７００，８００）の第１セットを同時にラスタライズすることと、
第２ラスタライザ（１５５，３５０，４１０，５２５）を使用して、プリミティブ（７００，８００）の第２セットをラスタライズすることと、を含み、
前記プリミティブの第１セットは、前記プリミティブの第２セットを包含するバウンディングボックスの面積よりも小さい面積を有する縮小バウンディングボックス（２１５，７０５，８０５）によって包含される、
方法。
【請求項１５】
前記縮小バウンディングボックスよりも大きいバウンディングボックスによって包含されるプリミティブの第３セットを受信することであって、前記第３セットは、前記プリミティブの第１セット及び前記プリミティブの第２セットを含む、ことと、
前記複数の第１ラスタライザを使用して前記プリミティブの第１セットを同時にラスタライズする前に、前記プリミティブの第１セットの前記バウンディングボックスを前記縮小バウンディングボックスに縮小することと、をさらに含む、
請求項１４の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
グラフィックス処理システムは、処理システムによって生成及び操作することができるモデルによって表されるシーンの画像を生成する。シーンの３次元モデルのオブジェクトは、通常、制御点のセットによって定義される高次表面であるパッチ（ベジエパッチ等）のセットによって表される。パッチは、スクリーンに表示するための画像を生成するために、グラフィックスパイプラインによって処理される。３次元グラフィックスを処理するための従来のグラフィックスパイプラインは、ジオメトリワークロード（geometry workloads）を処理する部分と、ピクセルワークロード（pixel workloads）を処理する部分と、に分けられる。ジオメトリワークロードを処理する部分は、オブジェクト空間での操作と呼ばれ、ピクセルワークロードを処理する部分は、画像空間での操作と呼ばれる。グラフィックスパイプラインのジオメトリ部分は、高次プリミティブ（例えば、パッチ）を処理するジオメトリフロントエンドと、高次プリミティブを受信し、入力された高次プリミティブから低次プリミティブを生成するテッセレータと、低次プリミティブを処理して画像空間のピクセルに変換するラスタライザを含むジオメトリバックエンドと、を含む。低次プリミティブは、相互接続された頂点から形成される四角形、三角形、線、点等のポリゴンを含む。低次プリミティブは、シーン内の様々なオブジェクトを表すメッシュを形成するように相互接続されている。
【０００２】
添付の図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同じアイテムを示す。
【図面の簡単な説明】
【０００３】
【図１Ａ】いくつかの実施形態による、第１の例示的なグラフィックス処理システムのブロック図である。
【図１Ｂ】いくつかの実施形態による、第２の例示的なグラフィックス処理システムのブロック図である。
【図２】いくつかの実施形態による、オブジェクトに関するバウンディングボックス及び深度値を決定するのに使用される例示的なバウンディングボリュームを示す図である。
【図３】いくつかの実施形態による、グラフィックス処理システムの一部の第１の例のブロック図である。
【図４】いくつかの実施形態による、グラフィックス処理システムの一部の第２の例のブロック図である。
【図５】いくつかの実施形態による、複数のテッセレーションエンジンを有するテッセレータを含むグラフィックス処理システムの一部のブロック図である。
【図６】いくつかの実施形態による、並列ラスタライザのブロック図である。
【図７】いくつかの実施形態による、ラージプリミティブ及び対応するラージバウンディングボックスを示す図である。
【図８】いくつかの実施形態による、スモールプリミティブ及びラージバウンディングボックスを示す図である。
【図９】いくつかの実施形態による、プリミティブの面積に基づいて、プリミティブをラージラスタライザ又はスモールラスタライザに選択的にルーティングする方法のフロー図である。
【発明を実施するための形態】
【０００４】
図１Ａは、いくつかの実施形態による、第１の例示的なグラフィックス処理システムを示す図である。第１の例示的なグラフィックス処理システムは、所定の解像度で３次元（３Ｄ）シーンのラスタライズ画像を生成するために高次ジオメトリプリミティブを処理することの可能なグラフィックスパイプライン１００を含む。グラフィックスパイプライン１００は、バッファを実現し且つ頂点データ、テクスチャデータ等を記憶するために使用される１つ以上のメモリ又はキャッシュ等のリソース１０１へのアクセスを有する。入力アセンブラ１０２は、シーンのモデルの一部を表すオブジェクトを定義するために使用されるリソース１０１からの情報にアクセスするように構成されている。ソフトウェアで実装することができる頂点シェーダ１０３は、プリミティブの単一の頂点を入力として受信し、単一の頂点を出力する。グラフィックスパイプライン１００は、ユニファイドシェーダモデルを実装しているので、グラフィックスパイプライン１００に実装される全てのシェーダは、同じ能力を有する。したがって、頂点シェーダ１０３を含むシェーダは、本明細書ではユニファイドシェーダプール１０４と呼ばれる共通のリソースセットを使用して実装される。ハルシェーダ１０５は、入力パッチ、又は、入力パッチを定義するのに使用される制御点で動作する。ハルシェーダ１０５は、テッセレーションファクタ及び他のパッチデータを出力する。
【０００５】
ハルシェーダ１０５によって生成されたプリミティブを、オプションで、テッセレータ１０６に提供することができる。テッセレータ１０６は、ハルシェーダ１０５からオブジェクト（パッチ等）を受信し、例えば、ハルシェーダ１０５によってテッセレータ１０６に提供されたテッセレーションファクタに基づいて入力オブジェクトをテッセレートすることによって、入力オブジェクトに対応するプリミティブを識別する情報を生成する。
【０００６】
ドメインシェーダ１０７は、ドメイン位置及び（オプションで）他のパッチデータを入力する。ドメインシェーダ１０７は、提供された情報で動作し、入力ドメイン位置及び他の情報に基づいて、出力用の単一の頂点を生成する。ジオメトリシェーダ１０８は、入力プリミティブを受信し、入力プリミティブに基づいてジオメトリシェーダ１０８によって生成される最大４つのプリミティブを出力する。プリミティブの１つのストリームがラスタライザ１０９に提供され、最大４つのプリミティブのストリームをリソース１０１内のバッファに連結することができる。ラスタライザ１０９は、シェーディング動作と、例えばクリッピング、透視分割（perspective dividing）、シザリング及びビューポート選択等の他の動作と、を行う。
【０００７】
ピクセルシェーダ１１０は、単一のピクセルを入力し、入力ピクセルに応じて０又は１つのピクセルを出力する。出力マージブロック１１１は、ピクセルシェーダ１１０から受信したピクセルに対して混合、深さ、ステンシル又は他の動作を行う。
【０００８】
グラフィックスパイプライン１００では、テッセレーションは、パッチ等の入力高次プリミティブを、例えば、テッセレーションプロセスによって生成されたプリミティブの粒度を特定するテッセレーションファクタによって示されるような、より細かいレベルの詳細を表す低次出力プリミティブのセットに細分する。したがって、シーンのモデルを、（メモリ又は帯域幅を節約するために）少数の高次プリミティブで表すことができ、高次プイミティブをテッセレートすることによって、追加の詳細を加えることができる。テッセレーションの粒度は、必要な詳細レベルに基づいて構成することができ、これは、通常、高次プリミティブによって表されるオブジェクトと、オブジェクトを含むシーンの画像をレンダリングするのに使用される視点を表すカメラと、の相対位置によって決定される。カメラに近いオブジェクトは、高いレベルの詳細を必要とし、カメラから遠いオブジェクトは、低いレベルの詳細を必要とする。テッセレーションは、必要な詳細レベルに応じて、グラフィックスパイプライン内の低次プリミティブの数を、入力高次プリミティブの数に対して数桁増やすことができる。テッセレータ１０６によって生成されたプリミティブの一部は、画像空間上又はレンダリング画像を表示するのに使用されるスクリーン上の単一のピクセルの面積以下の面積を表すマイクロポリゴンである。
【０００９】
グラフィックスパイプライン１００のラスタライザ１０９は、テッセレータ１０６によって生成されたプリミティブによって表されるベクトル情報を、入力プリミティブに基づいてラスタライザ１０９によって決定された値を有するピクセルから構成されたラスタ画像に変換する。場合によっては、ラスタライザ１０９は、特にラスタライザ１０９が高レベルの詳細を必要とするシーンの一部を表すプリミティブを操作する場合に、テッセレータ１０６によって生成され、又は、超並列計算シェーダプログラム若しくは超高速データチャネル等の他のプリミティブのソースによって生成された大量のプリミティブによって圧倒される可能性がある。したがって、ラスタライザ１０９は、このような状況下では、グラフィックスパイプライン１００におけるボトルネックになる。ボトルネックに起因するピクセルレートの低下は、ユーザが受信する画像のフレームレート及び品質を著しく低下させる可能性がある。さらに、ラスタライザ１０９は、単一のピクセルの面積よりも大きい面積を表すプリミティブを操作するように構成されている。例えば、ラスタライザ１０９は、画像空間の全範囲に亘ってポリゴンの点又は頂点を表す画像座標に対して固定小数点演算を行うのに十分なハードウェアを使用して実装することができる。対照的に、マイクロポリゴン間の違いは、かなり狭い範囲の画像座標で表すことができる。したがって、ラスタライザ１０９を使用してマイクロポリゴンをラスタライズすることによって、グラフィックスパイプライン１００のリソースを非効率に使用する。
【００１０】
図１Ｂ〜図９は、プリミティブの面積に応じてプリミティブを処理するために、ラスタライザの異なるセット（本明細書では、ラージラスタライザ及びスモールラスタライザと呼ばれる）を利用する合成アーキテクチャを使用してプリミティブを選択的にラスタライズすることによって、グラフィックスパイプラインにおける大量のプリミティブの流入によってラスタライザで生じるボトルネックを改善し、グラフィックスパイプラインのリソースをより効率的に配置可能であることを開示している。ラージラスタライザの一例は、画像空間の全範囲を包含することができるバウンディングボックス内のポリゴンに対して固定小数点演算を行うように構成されている。したがって、ポリゴンは、１６〜２４ビットで表される範囲内の画像空間内の入力座標によって表される。よって、この例では、ラージラスタライザは、４０〜４８ビットで表される範囲内の中間結果を操作することが可能である必要がある。スモールラスタライザは、より小さいバウンディングボックスに包含されるプリミティブを操作するのみであり、大きいバウンディングボックスに包含されるプリミティブを操作する十分な処理能力を持たない。例えば、スモールラスタライザに提供されるプリミティブは、４ピクセル（例えば、２×２の４ピクセル）に対応する領域によって包含されたポリゴンに限定することができる。したがって、スモールラスタライザに提供されるプリミティブ（及び、スモールラスタライザによって生成された中間結果）を表すのに必要な入力座標の範囲は、より少数のビット（例えば、１０〜２０ビット）で表される。
【００１１】
いくつかの実施形態では、プリミティブの面積とバウンディングボックスの閾値面積との比較は、プリミティブをラージラスタライザ又はスモールラスタライザに選択的に提供するために使用される。閾値面積よりも大きい面積を表すポリゴン等のプリミティブは、ラージラスタライザを使用してラスタライズされ、閾値面積以下の面積を表すポリゴンは、１つのスモールラスタライザを使用してラスタライズされる。閾値面積は、所定数のピクセルで示すことができ、スモールラスタライザの能力に対応するピクセルの数又は配列に設定することができる。例えば、バウンディングボックスの閾値面積は、２×２のピクセル配列に設定することができる。場合によっては、複数の異なる閾値面積を使用して、プリミティブを、異なる処理能力を有する３つ以上の種類のラスタライザに選択的に提供することができる。閾値面積のバウンディングボックス内の異なる位置を区別するのに必要とされないプリミティブの画像座標のビットは、スモールラスタライザに提供される情報から削除される。スモールラスタライザにおけるラスタライズ計算に必要なビット数は、スモールラスタライザに提供される画像座標からバウンディングボックスの原点を減算することによって、さらに減らすことができる。いくつかの実施形態では、スモールラスタライザの各々は、ラスタライズの前に、ポリゴンの点又は頂点の特性を表す値を記憶するキューに関連付けられる。キューの深度は、スモールラスタライザにおいて画像座標の縮小範囲を処理するのに必要なレイテンシを補うように選択される。
【００１２】
図１Ｂは、いくつかの実施形態による、第２の例示的なグラフィックス処理システム１１２のブロック図である。グラフィックス処理システム１１２は、シーンのモデルの一部を表すオブジェクトを定義するのに使用される情報にアクセスする入力アセンブラ（ＩＡ）１１３を含む。例えば、入力アセンブラ１１３は、１つ以上の制御点によって定義され、モデルの一部を表すのに使用されるベジエパッチにアクセスすることができる。別の例では、入力アセンブラ１１３は、モデルの一部を表す三角形等のプリミティブの頂点にアクセスすることができる。いくつかの実施形態では、入力アセンブラは、グラフィックス処理システム１１２のグラフィックスパイプラインに関する作業項目を生成し、頂点識別子、プリミティブ識別子、制御点識別子等の識別子をオブジェクトに割り当てることができる。いくつかの変形例では、オブジェクトは、グラフィックス処理システム１１２のメモリ１１４からアクセスすることができる。処理システム１１２のいくつかの実施形態は、メモリ１１４に記憶された情報をキャッシュするのに使用されるキャッシュ１１５を含む。場合によっては、キャッシュ１１５は、単一のレベルキャッシュ、又は、Ｌ１キャッシュ、Ｌ２キャッシュ、Ｌ３キャッシュ等の複数のレベルを含む階層型キャッシュである。
【００１３】
例示的なグラフィックス処理システム１１２は、入力アセンブラ１１３から受信した頂点に対してシェーディング操作を行うためのローカルシェーダ１１６と、入力アセンブラ１１３から受信したパッチ（又は、パッチの制御点）に対して動作するハルシェーダ１２０と、のうち一方又は両方を含む。ローカルシェーダ１１６及びハルシェーダ１２０は、オブジェクト空間内で動作する。いくつかの変形例では、ハルシェーダ１２０は、パッチをテッセレートするのに使用されるテッセレーションファクタと、他のパッチパラメータ又は定数と、を生成することができる。いくつかの実施形態では、ローカルシェーダ１１６又はハルシェーダ１２０は、プロセッサ、プロセッサコア、計算ユニット等の１つ以上のハードウェアコンポーネント上で実行されるソフトウェアとして実装される。例示的なグラフィックス処理システム１１２のいくつかの実施形態は、ローカルシェーダ１１６及びハルシェーダ１２０と同様の機能を実行するために使用される他のシェーダ又はシェーダの異なる組み合わせを含む。
【００１４】
いくつかの変形例では、グラフィックス処理システム１１２は、高次プリミティブを処理するためのテッセレータ１２５をさらに含むことができる。テッセレータ１２５は、存在する場合、ハルシェーダ１２０からオブジェクト（パッチ等）を受信し、例えば、ハルシェーダ１２０によってテッセレータ１２５に提供されたテッセレーションファクタに基づいて入力オブジェクトをテッセレートすることによって、入力オブジェクトに対応するプリミティブを識別する情報を生成する。プリミティブは、点、線、三角形、四角形又は他のポリゴンを含むことができる。入力パッチをテッセレートすることは、入力パッチを表す点、線又は三角形等のドメイン位置及びトポロジを生成することを含むことができる。したがって、テッセレータ１２５は、オブジェクト空間内で動作する。いくつかの変形例では、テッセレータ１２５は、複数のプリミティブを同時に又は並行して生成することができる複数のテッセレーションエンジン（図１には示されていない）を実装する。例えば、テッセレーションエンジンは、後述するように、ハルシェーダ１２０から受信したオブジェクト及びテッセレーションファクタに基づいてプリミティブを独立して生成することができる。テッセレータ１２５のいくつかの実施形態は、テッセレーションを行うように構成されている固定機能ハードウェアとして実装される。しかしながら、テッセレータ１２５は、他のハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせを実装することもできる。
【００１５】
テッセレータ１２５は、整数インデックスを変換ブロック１３０に提供する。テッセレータ１２５によって提供される整数インデックスは、テッセレータによって生成された点又は頂点の位置を示す。整数インデックスは、通常、「グリッド（ｕ，ｖ）」座標と呼ばれる。変換ブロック１３０は、グリッド（ｕ，ｖ）値を、範囲［０．．．１］内のパッチ座標（ｕ，ｖ）に変換する。パッチ座標（ｕ，ｖ）は、内部パッチパラメータ空間内の点又は頂点の正確な位置を定義する。これらの座標は、３次元ビュー空間内の細分頂点ジオメトリ座標を計算するために使用することができる。３次元ビュー空間内の座標は、本発明の技術分野の一般的な用法に従って、以降では（ｘ，ｙ，ｚ，ｗ）と呼ばれる。図示した実施形態では、位置ドメインシェーダ（ＤＳ＿ＰＯＳ）１３１は、パッチ座標（ｕ，ｖ）を変換ブロック１３０から受信する。位置ドメインシェーダ１３１は、関数（２次多項式又は３次多項式等）をパッチ座標（ｕ，ｖ）に適用して、頂点の位置を表す頂点パラメータ（例えば、パラメータ（ｘ，ｙ，ｚ，ｗ））を生成する。位置ドメインシェーダ１３１によって生成されたパラメータは、その後、例示的なグラフィックス処理システム１１２内の他のエンティティによる後続のアクセスのためにキャッシュ１１５に記憶される。
【００１６】
また、テッセレータ１２５は、プリミティブを示す頂点を、プリミティブアセンブラ１３５に提供する。複数のテッセレーションエンジンを含むテッセレータ１２５の変形例は、複数のプリミティブを示す頂点の複数のセットを、プリミティブアセンブラ１３５に同時に又は並行して提供することができる。プリミティブアセンブラ１３５は、提供された頂点からプリミティブを組み立て、１つ以上のカリング処理を行い、例示的なグラフィックス処理システム１１２によって生成される最終画像に影響を及ぼさないであろうプリミティブをパイプラインから除去する。例えば、ピクセルの値に影響を及ぼすには小さ過ぎるか、またはスクリーンのバウンディングボックスの外側にあるピクセルの値のみに影響を及ぼすプリミティブは、プリミティブアセンブラ１３５によって普通に破棄される。別の例では、プリミティブアセンブラ１３５は、バックフェースカリング技術を使用して、スクリーン上に生成される画像を生成するのに使用される視点とは反対側を向いているプリミティブをカリングことができる。いくつかの変形例では、プリミティブアセンブラ１３５は、他の破棄、カリング、シザリング又はクリッピング技術を実装することができる。
【００１７】
プリミティブアセンブラ１３５は、プリミティブの面積に基づいて、プリミティブを異なる面積のラスタライザに選択的にルーティングする。プリミティブアセンブラ１３５は、プリミティブの面積を、スクリーン内のピクセル数を表す閾値面積と比較する。例えば、閾値面積は、２×２配列のピクセルに対応することができる。プリミティブの面積を、プリミティブを包含するのに必要なバウンディングボックスの最小面積で表すことができる。プリミティブの面積が閾値面積以下である場合、プリミティブアセンブラ１３５は、プリミティブを、例えば２×２ピクセルのバウンディングボックス等のような小さいバウンディングボックスによって包含されるプリミティブに対して動作するように構成された複数のスモールラスタライザ（明確にするために、図１には示されていない）のうち１つのスモールラスタライザにルーティングする。例えば、スモールラスタライザ（及び、第２のラスタライザによって生成された中間結果）に提供されるプリミティブを表すのに必要な入力座標の範囲は、少数のビット（例えば、２×２ピクセルのバウンディングボックスに対応する閾値面積について１０〜２０ビット）で表される。複数のスモールラスタライザは、プリミティブに対して同時に又は並行して動作する。例えば、各スモールラスタライザは、プリミティブ（細分四角形、ＳＤＱとも呼ばれる）内の１つ以上のピクセルを列挙し、当該ピクセルの（ｕ，ｖ，ｚ）値を補間して、ラスタライズされたピクセルを出力フラグメントのセットに投入する。プリミティブアセンブラ１３５が、ラージラスタライザ及びスモールラスタライザを含む（及び、単一の閾値面積に基づいて、プリミティブをラージラスタライザ又はスモールラスタライザにルーティングする）ものとして説明されているが、プリミティブアセンブラ１３５のいくつかの変形例は、３つ以上の異なるサイズのラスタライザを含むことができる。これらの変形例では、プリミティブアセンブラ１３５は、プリミティブの面積と複数の異なる閾値面積との比較に基づいて、プリミティブを異なるサイズのラスタライザにルーティングする。
【００１８】
スキャンコンバータ１４０は、マイクロポリゴン又はフラグメントを、プリミティブアセンブラ１３５に実装された複数のスモールラスタライザから受信する。フラグメントは、同時に又は並行してスキャンコンバータ１４０に提供される。スキャンコンバータ１４０は、走査変換を行って、ポリゴンを、当該ポリゴンを表すピクセルに変換することができる。例えば、スキャンコンバータ１４０は、受信したフラグメントを処理して、クロックサイクル毎に８ピクセル以上の割合で出力フラグメントを生成することができ、その後、属性ドメインシェーダ（ＤＳ＿ＡＴＴＲ）１４５に提供される。いくつかの変形例では、属性ドメインシェーダ１４５は、パッチ情報を、入力アセンブラ１１３から受信する。属性ドメインシェーダ１４５は、受信したフラグメント（及び、利用可能であれば入力アセンブラ１１３からの情報）を利用して、受信したフラグメント（若しくは、ピクセル）に対する法線、フラグメント（若しくは、ピクセル）の色値、フラグメント（若しくは、ピクセル）のテクスチャ座標、又は、フラグメント（若しくは、ピクセル）の他の属性を計算することができる。次に、属性シェードされたフラグメント（又は、ピクセル）は、ピクセルシェーダ１５０に提供され、ピクセルシェーダ１５０は、入力フラグメント（又は、ピクセル）に対して、ライティング但しマッピング、シャドウイング、透明性の決定等の操作を行うことができる。したがって、ピクセルシェーダ１５０は、ラスタライズされた画像空間内で動作する。いくつかの変形例では、スキャンコンバータ１４０、属性ドメインシェーダ１４５又はピクセルシェーダ１５０は、本明細書で説明するように、スモールラスタライザによって既に動作が行われているため、上述した動作の一部又は全てをバイパスする。
【００１９】
プリミティブアセンブラ１３５は、プリミティブの面積が閾値面積よりも大きいと判別した場合、プリミティブを比較的大きいラスタライザ１５５にルーティングし、ラスタライザ１５５は、２×２ピクセルよりも大きいバウンディングボックスによって包含されるプリミティブに対して操作を行うのに十分なハードウェアを使用して実装される。例えば、ラージプリミティブは、１６〜２４ビットで表される範囲内の画像空間の入力座標によって表すことができる。したがって、この例では、ラージラスタライザ１５５は、４０〜４８ビットで表される範囲内の中間結果に対して操作することができる。いくつかの変形例では、プリミティブアセンブラ１３５は、クロックサイクル毎に１つのプリミティブを、ラージラスタライザ１５５に実装された属性ドメインシェーダ１６０に提供する。属性ドメインシェーダ１６０は、属性ドメインシェーダ１４５を実装するのに使用されるのと同じハードウェア、ファームウェア又はソフトウェアを使用して任意に実装することができる。いくつかの変形例では、属性ドメインシェーダ１６０は、パッチ情報を、入力アセンブラ１１３から受信する。属性ドメインシェーダ１６０は、受信したプリミティブ（及び、利用可能であれば入力アセンブラ１１３からの情報）を利用して、法線、色値、テクスチャ座標等のプリミティブの属性を計算することができる。次に、属性は、キャッシュ１１５に記憶される。
【００２０】
また、スキャンコンバータ１６５は、プリミティブを、プリミティブアセンブラ１３５から受信する。いくつかの変形例では、スキャンコンバータ１６５は、スキャンコンバータ１４０を実装するのに使用されるのと同じハードウェア、ファームウェア又はソフトウェアを使用して実装される。本明細書で説明するように、スキャンコンバータ１６５は、受信したプリミティブを処理し、所定のピクセルレートでピクセルシェーダ１７０に提供される（オプションで、ピクセルに対して深度テストを実行した後に）ピクセルを生成することができる。ピクセルシェーダ１７０は、キャッシュ１１５から取り出されたプリミティブ属性を使用してピクセルをシェーディングする。ピクセル又はラスタライズされたプリミティブをシェ−ディングすることは、対応するプリミティブの頂点で定義された対応する値からピクセルにおける色又は輝度を表す値を補間すること等の動作を含み、この値は、シェーダによって実装された１つ以上のアルゴリズムに従って、テクスチャ又は他のデータと組み合わされる。したがって、ピクセルシェーダ１７０は、ラスタライズされた画像空間内で動作する。いくつかの変形例では、ピクセルシェーダ１７０は、ピクセルシェーダ１５０を実装するのに使用されるのと同じハードウェア、ファームウェア又はソフトウェアを使用して実装される。
【００２１】
図２は、いくつかの実施形態による、オブジェクト２０５に関するバウンディングボックス及び深度値を決定するのに使用される例示的なバウンディングボリューム２００を示す図である。例えば、バウンディングボリューム２００は、図１に示す入力アセンブラ１１３によって提供されるパッチ、又は、図１に示すプリミティブアセンブラ１３５若しくはラージラスタライザ１５５に実装されたスモールラスタライザを用いてラスタライズされたプリミティブ等のように、オブジェクト２０５に関するバウンディングボックス及び深度値を決定する。バウンディングボリューム２００は、オブジェクト２０５のレンダリング画像を表示するのに使用されるスクリーンの平面内にＸ座標及びＹ座標があるように配向された座標系２１０に示されている。座標系２１０のＺ座標は、オブジェクト２０５の画像をレンダリングするのに使用される仮想カメラの視点からの距離を示すように向けられている。いくつかの実施形態では、座標系２１０の原点は、仮想カメラの位置に対応する。
【００２２】
バウンディングボックス２１５（太い点線で示されている）は、スクリーンのＸＹ平面へのオブジェクト２０５の投影によって広がるＸ座標の範囲２２０と、スクリーンのＸＹ平面へのオブジェクト２０５の投影によって広がるＹ座標の範囲２２５と、によって定義される。オブジェクト２０５の深度値は、仮想カメラの視点に最も近いオブジェクト２０５の部分のＺ座標を表す近位ｚ値２３０と、仮想カメラの視点から最も遠いオブジェクト２０５の部分のＺ座標を表す遠位ｚ値２３５と、を含む。本明細書で説明するように、バウンディングボックス２１５は、ピクセルの配列によって表すことができる。次に、プリミティブの面積を、バウンディングボックス２１５に対応する閾値面積と比較して、プリミティブを、異なるラスタライザに選択的にルーティングすることができる。
【００２３】
図３は、いくつかの実施形態による、グラフィックス処理システムの一部３００の第１の例のブロック図である。一部３００は、図１に示すテッセレータ１２５等のテッセレータ３０５を含む。したがって、テッセレータ３０５のいくつかの変形例は、例えば、テッセレーションファクタに基づいて入力オブジェクトをテッセレートすることによって、入力オブジェクトに対応するプリミティブを識別する情報を生成することができる。プリミティブを識別する情報は、プリミティブに関連する点又は頂点を定義する情報と、四角形等のポリゴンを特徴付ける情報と、を含む。点又は頂点を定義する情報は、シェーダ３１０に提供される。例えば、テッセレータ３０５は、クロックサイクル毎に８つの点又は頂点を定義する情報を、シェーダ３１０に提供することができる。四角形等のポリゴンを特徴付ける情報は、プリミティブアセンブラ３１５に提供され、プリミティブアセンブラ３１５は、図１に示すプリミティブアセンブラ１３５に対応する。例えば、テッセレータ３０５は、クロックサイクル毎に８つの四角形を特徴付ける情報を、プリミティブアセンブラ３１５に提供することができる。
【００２４】
シェーダ３１０は、点又は頂点の位置を表す頂点パラメータ（例えば、パラメータ（ｘ，ｙ））をパッチ座標（ｕ，ｖ）に変換する変換要素３１１を含む。シェーダ３１０内のドメインシェーダ３１２は、点又は頂点をバッファ３２０に提供する前に、点又は頂点に対してシェーディング操作を行うために使用される。いくつかの変形例では、バッファ３２０は、図１に示すメモリ１１４等のメモリ、又は、図１に示すキャッシュ１１５等のキャッシュに実装される。いくつかの実施形態では、パッチのエッジ上の頂点は、パッチの内部にある頂点と異なるようにインデックスされ、したがって、異なる頂点が、メモリ及びバッファ３２０内の異なるベースアドレスを使用して参照される。エッジ頂点及び内部頂点のアドレスは、本明細書では、「上部」、「下部」、「左部」、「右部」及び「内部」と呼ばれる。
【００２５】
プリミティブアセンブラ３１５は、点又は頂点を定義する情報をバッファ３２０から取り出すことができる点フェッチブロック３２５を含む。例えば、点フェッチブロック３２５は、バッファ３２０に記憶されている点又は頂点に関するアドレスと、バッファ３２０に対して、要求された点又は頂点を、プリミティブアセンブラ３１５に実装されたレジスタ３３０のセットに提供させる命令又は要求と、を提供することができる。レジスタ３３０は、異なる種類の頂点（例えば、「上部」、「下部」、「左部」、「右部」及び「内部」）に関連付けられている。また、点フェッチブロック３２５は、制御信号を、レジスタ３３０から情報を入力として受信するマルチプレクサ３３５に提供する。制御信号の値は、マルチプレクサ３３５によって出力される入力（例えば、レジスタ３３０のうち１つのレジスタの内容）を決定する。
【００２６】
マルチプレクサ３３５から出力された情報は、テッセレータ３０５によってプリミティブアセンブラ３１５に提供された四角形に対してバックフェースカリングを行うカリングブロック３４０に提供される。また、カリングブロック３４０のいくつかの実施形態は、他の種類のカリング、クリッピング、シザリング等を行うように構成されている。カリングプロセスで残った四角形は、ブロック３４０からバウンディングボックス縮小ブロック３４５に放出される。四角形の面積は、ピクセル数及びピクセル配列によって示される閾値面積と比較される。例えば、四角形の面積を、２×２のピクセル配列と比較することができる。閾値面積よりも大きい四角形は、ラスタライズするためにラージラスタライザ（ＬＲ）３５０に提供される。閾値面積よりも小さい四角形のバウンディングボックスは、閾値面積に対応する寸法まで縮小されている。例えば、２×２のピクセル配列よりも小さい四角形のバウンディングボックスを、２×２の寸法に縮小することができる。また、バウンディングボックスの縮小は、四角形の頂点の座標からバウンディングボックスの原点の値を減算することを含むことができる。
【００２７】
バウンディングボックスの縮小後、閾値面積よりも小さい四角形は、小さい四角形を同時に又は並行してラスタライズすることができる複数のスモールラスタライザ３５５に提供される。例えば、プリミティブアセンブラ３１５は、８つの四角形を並行してラスタライズするように構成されたスモールラスタライザ３５５を含むことができる。ラージラスタライザＬＲ３５０で大きい四角形をラスタライズし、スモールラスタライザＳＲ３５５で小さい四角形をラスタライズすることによって生成されたピクセルは、ピクセルストリームを単一のストリームにマージするマルチプレクサ３６０に提供される。マージされたピクセルストリームは、図１に示すスキャンコンバータ１４０，１６５のいくつかの実施形態に対応するスキャンコンバータ３６５に提供される。ラージラスタライザＬＲ３５０及びスモールラスタライザＳＲ３５５は、図３に示す実施形態では別々の四角形のストリームを処理しているが、ラージラスタライザ３５０のいくつかの変形例は、後述するように、スモールラスタライザＳＲ３５５と直列に実装されている。この場合、ラージラスタライザＬＲ３５０は、スモールラスタライザＳＲ３５５によって生成されたピクセルに対して一部又は全てのラスタライズ操作を行うことをバイパスする。
【００２８】
図４は、いくつかの実施形態による、グラフィックス処理システムの一部４００の第２の例のブロック図である。一部４００は、図３に示す一部３００の第１の例の対応するエンティティと同様又は同一であるいくつかのエンティティを含む。これらのエンティティは、同じ符号で示されている。例えば、一部４００は、テッセレータ３０５と、シェーダ３１０と、プリミティブアセンブラ３１５と、バッファ３２０と、点フェッチブロック３２５と、レジスタ３３０のセットと、マルチプレクサ３３５と、カリングブロック３４０と、スキャンコンバータ３６５と、を含む。
【００２９】
一部４００は、ラージラスタライザ４１０と直列に実装された複数のスモールラスタライザ４０５を含むので、図３に示す一部３００と異なっている。したがって、一部４００は、閾値面積とプリミティブの面積との比較に基づいて、プリミティブをスモールラスタライザ４０５又はマルチプレクサ４１５に選択的にルーティングするバウンディングボックス縮小ブロック４０１を含む。閾値面積よりも大きい四角形は、マルチプレクサ４１５に直接提供される。閾値面積よりも小さい四角形は、バウンディングボックス縮小ブロック４０１によって閾値面積に対応する寸法に縮小されたバウンディングボックスを有する。例えば、２×２のピクセル配列よりも小さい四角形のバウンディングボックスを、２×２の寸法に縮小することができる。また、バウンディングボックスの縮小は、四角形の頂点の座標からバウンディングボックスの原点の値を減算することを含むことができる。
【００３０】
バウンディングボックスの縮小後、閾値面積よりも小さい四角形は、小さい四角形を同時に又は並行してラスタライズすることができる複数のスモールラスタライザ４０５に提供される。例えば、プリミティブアセンブラ３１５は、８つの四角形を並行してラスタライズするように構成されたスモールラスタライザ４０５を含むことができる。スモールラスタライザ４０５で小さい四角形をラスタライズすることによって生成されたピクセルがマルチプレクサ３６０に提供され、マルチプレクサ３６０は、スモールラスタライザ４０５及び大きい四角形によって生成されたラスタライズ済みピクセルストリームを単一のストリームにマージし、単一のストリームは、ラージラスタライザ４１０に提供される。ストリーム内の大きい四角形は、ピクセルを生成するためにラージラスタライザ４１０によってラスタライズされる。スモールラスタライザ４０５が必要なラスタライズの一部又は全てを既に行っているので、ラージラスタライザ４１０は、スモールラスタライザ４０５によって生成されたピクセルストリームの一部又は全ての操作を行うことをバイパスする。次に、ラージラスタライザ４１０は、スキャンコンバータ３６５に提供されるピクセルストリームを出力する。
【００３１】
図５は、いくつかの実施形態による、複数のテッセレーションエンジン５１０を有するテッセレータ５０５を含むグラフィックス処理システムの一部５００のブロック図である。一部５００は、図１に示す例示的なグラフィックス処理システム１１２の対応する部分を実装するのに使用することができる。明確にするために、１つのテッセレーションエンジン５１０のみが符号で示されている。テッセレータ５０５は、入力アセンブラによって生成されたパッチ等の入力オブジェクトのストリームを受信する。テッセレーションエンジン（ＴＥ）５１０の各々は、テッセレーションファクタのセットに基づいて、入力オブジェクトを独立してテッセレートすることができる。したがって、テッセレーションエンジン５１０は、複数の入力オブジェクトを同時に又は並行してテッセレートして、クロックサイクル毎に複数のプリミティブを生成することができる。次に、テッセレーションエンジン５１０によって生成されたプリミティブは、プリミティブアセンブラ５１５に提供される。
【００３２】
ルータ５２０は、テッセレーションエンジン５１０によって生成されたプリミティブを受信する。例えば、ルータ５２０は、クロックサイクル毎に８つの四角形をテッセレーションエンジン５１０から受信することができる。ルータ５２０は、四角形の面積を閾値面積と比較し、次に、この比較に基づいて四角形を選択的にルーティングするように構成されている。本明細書で説明するように、閾値面積よりも大きい四角形は、受信した四角形をラスタライズし、ピクセルストリームをスキャンコンバータ５３０に提供するように構成されたラージラスタライザ５２５にルーティングされる。閾値面積よりも小さい四角形は、四角形のバウンディングボックスを閾値面積に対応する寸法に縮小するように構成されたバウンディングボックス縮小ブロック５３５にルーティングされる。次に、バウンディングボックス縮小ブロック５３５は、縮小されたバウンディングボックスを有する四角形を、ラスタライズするために複数のスモールラスタライザ５４０のうち１つのスモールラスタライザに提供する。スモールラスタライザ５４０は、受信した四角形を同時に又は並行してラスタライズすることができ、これにより、プリミティブアセンブラ５１５は、大量の四角形を処理することができる。スモールラスタライザ５４０によって生成されたピクセルストリームは、スキャンコンバータ５４５に提供され、スキャンコンバータ５４５は、異なる変形例において、スキャンコンバータ５３０と同じであってもよいし、異なっていてもよい。したがって、小さい四角形をスモールラスタライザ５４０に選択的にルーティングすることは、プリミティブアセンブラ５１５のスループットを向上させ、複数のテッセレーションエンジン５１０を実装するグラフィックス処理システムにおいてプリミティブアセンブラ５１５がボトルネックになる可能性を低減する。
【００３３】
図６は、いくつかの実施形態による、並列ラスタライザ６００のブロック図である。並列ラスタライザ６００は、入力プリミティブをラスタライズするための複数のスモールラスタライザ６０５を含む。明確にするために、１つのスモールラスタライザ６０５のみが符号で示されている。並列ラスタライザ６００を使用して、図３に示すスモールラスタライザ３５５、図４に示すスモールラスタライザ４０５、及び、図５に示すスモールラスタライザ５４０のいくつかの実施形態を実装することができる。並列ラスタライザ６００の８つのスモールラスタライザ６０５は、いくつかの実施形態では細分四角形と呼ばれる３つのプリミティブに対して同期して、同時に又は並行して動作する。例えば、スモールラスタライザ６０５は、対応する数の入力四角形Ｑ０，Ｑ１，Ｑ２，Ｑ３，Ｑ４，Ｑ５，Ｑ６，Ｑ７に対して動作することができる。８つのスモールラスタライザ６０５は、単一のピクセルの四角形からクロックサイクル毎に８つのピクセルを生成することができる。しかしながら、スモールラスタライザの数は、並列ラスタライザ６００のいくつかの実施形態においてクロックサイクル毎により多い又はより少ない数の入力プリミティブを処理することができるように、より多くてもよいし、より少なくてもよい。
【００３４】
クロスバースイッチ６１０は、入力された四角形を、対応する数のキュー６１５に分配する（明確にするために、１つのキュー６１５のみが符号で示されている）。キュー６１５の深さは、入力された四角形を処理するのに必要とされるレイテンシを補うように選ばれる。例えば、四角形毎のバウンディングボックスの処理は、４×４のバウンディングボックスに対して最大４クロックサイクルかかり、８×８のバウンディングボックスに対して最大１６クロックサイクルかかる可能性がある。したがって、キュー６１５は、４×４のバウンディングボックスを有する４つの保留中の四角形を保持する４エントリの深さ、及び、８×８のバウンディングボックスを有する１６の保留中の四角形を保持する１６エントリの深さで構成することができる。
【００３５】
制御ユニット６２０は、信号をクロスバースイッチ６１０及び１つ以上のキュー６１５に提供して、１つ以上の入力された四角形を対応するキュー６１５に提供させることができる。いくつかの変形例では、制御ユニット６２０は、クロックサイクル毎に１つの四角形のみを各キュー６１５にプッシュするように制約されている。制御ユニット６２０は、フィードバック情報（例えば、スモールラスタライザ６０５が四角形のラスタライズを完了し、対応するキュー６１５から新たな四角形を取り出すのに利用可能であることを示す情報等）をスモールラスタライザ６０５から受信する。利用可能なスモールラスタライザ６０５は、対応するキュー６１５から四角形を取り出す。制御ユニット６２０は、受信したフィードバック情報を使用して、クロスバースイッチ６１０が、四角形を、利用可能なスモールラスタライザ６０５に四角形を提供したキュー６１５に提供するのに必要な信号を生成する。
【００３６】
スモールラスタライザ６０５の各々は、四角形を受信し、四角形に関する関数のセットを構成するように構成されている。本明細書に使用される場合、「関数」という用語は、四角形の一部を定義する線形関数を指す。例えば、半平面関数（half plane functional）は、四角形の辺を表すのに使用可能な半平面又は線を表す式である。四角形の４つの外縁を表すために４つの関数が使用される。四角形の対角線を表すために１つの追加の関数が使用される。次に、スモールラスタライザ６０５によって処理される四角形の関数に基づいて、カバレージマスクが決定される。例えば、スモールラスタライザ６０５は、２×２のピクセルのセットのカバレージマスク（明確にするために、１つのクワッド６２５のみが符号で示されている）を構成することができ、カバレージマスクは、各関数の半平面をピクセルの面積だけ拡張することを必要とする。また、スモールラスタライザ６０５は、テクスチャ値等の特性の補間を行うために、座標（ｕ，ｖ，ｚ）の勾配を準備する。次に、スモールラスタライザ６０５は、カバーされた２×２のクワッド６２５を列挙し、２×２のクワッド６２５内の関数の値を使用して、カバレージマスクを構成する。また、スモールラスタライザ６０５は、座標（ｕ，ｖ，ｚ）の値を評価する。
【００３７】
スモールラスタライザ６０５の各々は、各クロックサイクル中に、２×２のクワッド６２５と、４ビットのカバレージマスクと、４セットの座標（ｕ，ｖ，ｚ）の値と、をピクセルキャッシュ６３０に出力する。スモールラスタライザ６０５によって生成された値は、ピクセルキャッシュ６３０にキャッシュされる。図示した実施形態では、各クロックサイクルで最大８つの２×２のクワッドがピクセルキャッシュ６３０に追加される。したがって、ピクセルキャッシュ６３０は、このピクセルクワッドのフローに対応するためのバンクスキームを実施することができる。場合によっては、ピクセルキャッシュ６３０に提供される１つ以上のクワッド６２５が互いに重なり合って補完する。したがって、ピクセルキャッシュ６３０を、クワッド６２５をソートし、重なり合うクワッド６２５をチェックするように構成することができる。いくつかの変形例では、ピクセルキャッシュ６３０は、４×２のピクセルタイルを使用して実装される。また、ピクセルキャッシュ６３０は、異なる座標を有する４×２のタイルへの上書き等のエビクトポリシーを実施し、キャッシュがスペース不足、満杯の４×２のカバレージマスク及び出力インタフェース上のアイドルクロックの場合にエビクトする。ピクセルキャッシュ６３０内の４×２のピクセルタイルは、１つ以上のスキャンコンバータ６３５，６４０によって取り出され、又は、これらに提供することができ、スキャンコンバータ６３５，６４０は、ピクセルの深度値（ｚ）に基づいて、ピクセルに対してオクルージョンカリング等の動作を実行する。
【００３８】
スモールラスタライザ６０５のいくつかの実施形態は、以下の疑似コードで説明されるラスタライザアルゴリズム等のラスタライザアルゴリズムに従って動作するように構成されている。
【００３９】
2019530069.tif 000003
2019530069.tif 000004
2019530069.tif 000005
【００４０】
図７は、いくつかの実施形態による、ラージプリミティブ７００及び対応するラージバウンディングボックス７０５を示す図である。プリミティブ７００は、図１に示すテッセレータ１２５等のテッセレータによって生成され、図１に示すプリミティブアセンブラ１３５等のプリミティブアセンブラに提供されることの可能な四角形である。バウンディングボックス７０５は、プリミティブ７００を包含するピクセル７１０（明確にするために、１つのピクセルのみが符号で示されている）の配列によって定義される。例えば、バウンディングボックス７０５は、１６×１６のピクセル７１０の配列によって定義される。プリミティブ７００の面積は、図１に示すプリミティブアセンブラ１３５によって使用される閾値面積等の閾値面積を越え、プリミティブが、ラージラスタライザ又はスモールラスタライザのセットに選択的にルーティングされる。その結果、プリミティブ７００は、ラージバウンディングボックスによって包含されたプリミティブを処理するように構成されたラージラスタライザにルーティングされる。
【００４１】
図８は、いくつかの実施形態による、スモールプリミティブ８００及びラージバウンディングボックス８０５を示す図である。プリミティブ８００は、図１に示すテッセレータ１２５等のテッセレータによって生成され、図１に示すプリミティブアセンブラ１３５等のプリミティブアセンブラに提供されることの可能な四角形である。バウンディングボックス８０５は、プリミティブ８００を包含するピクセル８１０（明確にするために、１つのピクセルのみが符号で示されている）の配列によって定義される。例えば、バウンディングボックス８０５は、１６×１６のピクセル８１０の配列によって定義される。プリミティブ８００の面積は、図１に示すプリミティブアセンブラ１３５によって使用される閾値面積等の閾値面積以下であり、プリミティブが、ラージラスタライザ又はスモールラスタライザのセットに選択的にルーティングされる。その結果、本明細書で説明するように、バウンディングボックス８０５は、プリミティブ８００用の縮小したバウンディングボックス８１５を生成するように縮小され、プリミティブ８００は、より小さいバウンディングボックスによって包含されるプリミティブを処理するように構成されたスモールラスタライザのセットのうち１つのスモールラスタライザにルーティングされる。
【００４２】
図９は、いくつかの実施形態による、プリミティブの面積に基づいて、プリミティブをラージラスタライザ又はスモールラスタライザに選択的にルーティングする方法９００のフロー図である。方法９００は、図１に示すプリミティブアセンブラ１３５、図３及び図４に示すプリミティブアセンブラ３１５、又は、図５に示すプリミティブアセンブラ５１５のいくつかの実施形態で実施される。
【００４３】
ブロック９０５において、テッセレータから受信した四角形等のプリミティブの頂点の接続性がデコードされ、処理される次の頂点の位置の原点が決定される。位置の原点は、前の値、エッジ位置バッファの値、又は、内部位置バッファの値の再使用であってもよい。いくつかの変形例では、接続性のデコードは、クロックレート当たり８つ以上の四角形で実行することができる。
【００４４】
判別ブロック９１０において、プリミティブアセンブラは、四角形の面積が最大ピクセルレート面積よりも大きいかどうかを判別する。最大ピクセルレート面積の例は、２×２のピクセル配列、４×４のピクセル配列、８×８のピクセル配列等によって決定されるピクセルレートを含む。四角形の面積が最大ピクセルレート面積よりも大きい場合、四角形は、ラスタライズのためにラージラスタライザに送信される（ブロック９１５）。いくつかの変形例では、四角形は、クロック当たり１つの三角形のレートでラージラスタライザに送信される。四角形の面積が最大ピクセルレート面積よりも小さい場合、方法９００は、ブロック９２０に移行する。
【００４５】
ブロック９２０において、四角形のバウンディングボックスが縮小される。バウンディングボックスを縮小することは、バウンディングボックス内のピクセル数を、最大ピクセルレート面積を定義する数及び配列に対応する数及び配列に減らすことを含む。
【００４６】
ブロック９２５において、四角形内の点を表す座標からバウンディングボックスの原点を減算する。対角関数を設定して四角形の視認性を評価することができ、また、バックフェースカリング、普通の廃棄（trivial discard）及びビューポートシザリングを四角形に適用することができる。これらのプロセスから残った四角形は、図６に示すキュー６１５等のキューのセットのうち１つのキューに放出される。次に、方法９００は、ブロック９３０に移行する。
【００４７】
ブロック９３０において、キューに記憶された四角形は、ラスタライズのために、対応するスモールラスタライザに送信される。スモールラスタライザは、四角形のエッジ関数を定義し、座標（ｕ，ｖ，ｚ）の補間のためのパラメータを定義する。四角形に対して粗いカバレージマスクが定義され、２×２のクワッドピクセルを生成するようにカバレージマスクに対して反復プロセスが実行される。座標（ｕ，ｖ，ｚ）の補間値は、２×２のクワッドピクセルに対して生成される。
【００４８】
ブロック９３５において、２×２のクワッドピクセルは、図６に示すピクセルキャッシュ６３０等のキャッシュに記憶される。例えば、本明細書で説明するように、クワッドピクセルを、４×２のピクセルタイルを使用し、対応するエビクトポリシーを実施する８つのインタリーブされたピクセルキャッシュに記憶することができる。ブロック９４０において、本明細書で説明するように、キャッシュに記憶されたクワッドピクセルは、スキャンコンバータに送信される。
【００４９】
いくつかの実施形態では、図１〜図８を参照して上述したグラフィックス処理システム等の上述した装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムに実装される。これらのＩＣデバイスの設計及び製造には、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールを使用することができる。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００５０】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム（例えば、システムＲＡＭ又はＲＯＭ）に内蔵されてもよいし、コンピュータシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよいし、コンピュータシステム（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））に接続されてもよい。
【００５１】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００５２】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００５３】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１Ａ】
2019530069.tif 000006
【図１Ｂ】
2019530069.tif 000007
【図２】
2019530069.tif 000008
【図３】
2019530069.tif 000009
【図４】
2019530069.tif 000010
【図５】
2019530069.tif 000011
【図６】
2019530069.tif 000012
【図７】
2019530069.tif 000013
【図８】
2019530069.tif 000014
【図９】
2019530069.tif 000015
【国際調査報告】
2019530069.tif 000016
2019530069.tif 000017