(57)【特許請求の範囲】
【請求項１】
グラフィックス・プリミティブを処理する装置であって、
複数のビンにおいて同時に保持されるように、少なくとも１つの３Ｄプリミティブおよび少なくとも１つの２Ｄオブジェクトが交わる複数のタイルに対応する複数のビンに、少なくとも１つの３Ｄプリミティブを少なくとも１つの２Ｄオブジェクトとともにソートするビニング・ユニットを備えることを特徴とする装置。
【請求項２】
前記ビニング・ユニットに結合された２Ｄパイプラインをさらに有し、前記ビニング・ユニットは、２Ｄオブジェクトに対応する複数のタイリングされた２Ｄブリット・オペレーションを２Ｄパイプラインに送り、前記２Ｄパイプラインは複数のタイリングされた２Ｄブリット・オペレーションを実行するように構成されたことを特徴とする請求項１に記載の装置。
【請求項３】
前記ビニング・ユニットに結合された３Ｄパイプラインをさらに有し、前記ビニング・ユニットは、３Ｄプリミティブに対応する複数のタイリングされた３Ｄプリミティブ・レンダリング・オペレーションを３Ｄパイプラインに送るように構成され、前記３Ｄパイプラインは、複数のタイリングされた前記３Ｄプリミティブ・レンダリング・オペレーションを実行するように構成されたことを特徴とする請求項２に記載の装置。
【請求項４】
前記請求項１乃至３のいずれかに記載の装置と、
ソートされた３Ｄプリミティブおよびソートされた２Ｄオブジェクトを表すデータのコピーを記憶するグラフィックス・メモリと、
マイクロプロセッサとシステム・メモリとの間に結合されたシステム論理ユニットと、から構成されるシステムであって、
前記システム論理ユニットは、
前記システム・メモリへのアクセスを提供するメモリ・コントローラと、
２Ｄパイプラインを有し、前記２Ｄオブジェクトに対応する複数のタイリングされたブリット・オペレーションを、前記複数のタイリングされたブリット・オペレーションを実行する２Ｄパイプラインに送るグラフィックス・コントローラと、
から構成されることを特徴とするシステム。
【請求項５】
前記グラフィックス・コントローラは、３Ｄパイプラインをさらに有し、前記装置は、前記３Ｄプリミティブに対応する複数のタイリングされた３Ｄプリミティブ・レンダリング・オペレーションを前記３Ｄパイプラインに送るように構成され、
前記３Ｄパイプラインは、複数のタイリングされた前記３Ｄプリミティブ・レンダリング・オペレーションを実行するように構成されたことを特徴とする請求項４に記載のシステム。
【請求項６】
プロセッサにより、３Ｄプリミティブと２Ｄオブジェクトが複数のビンにおいて同時に保持されるように、前記３Ｄプリミティブと前記２Ｄオブジェクトのそれぞれと交わる少なくとも１つのタイルに対応する複数のビンの少なくとも１つへ、３Ｄプリミティブを２Ｄオブジェクトとともにソートするステップと、
グラフィックス・コントローラにより、少なくとも１つの前記３Ｄプリミティブと少なくとも１つの前記２Ｄオブジェクトに交わるタイルに対応する複数のビンの１つにおいて記憶されたデータをレンダリングするステップと、
から構成されることを特徴とする方法。
【請求項７】
第１のビンに記憶された前記データをレンダリングするステップは、第１および第２の３Ｄプリミティブのどの部分および前記２Ｄオブジェクトのどの部分が、第１タイル内におさまるかを判定する工程を含むことを特徴とする請求項６に記載の方法。
【請求項８】
第１のビンに記憶された前記データをレンダリングするステップは、
前記第１タイル内におさまる前記第１の３Ｄプリミティブの一部分をレンダリングするステップと、
前記第１タイル内におさまる前記２Ｄオブジェクトの部分をレンダリングするステップと、
前記第１タイル内におさまる前記第２の３Ｄプリミティブの一部分をレンダリングするステップと
をさらに有することを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、コンピュータ・システムの分野に関する。より詳細には、本発明は、タイル型アーキテクチャを使用するグラフィック・システムでの２Ｄグラフィックス・オペレーションの処理の分野に関する。
【０００２】
（発明の背景）
コンピュータ・グラフィックス・システムは、２次元ビデオ・ディスプレイ画面にオブジェクトのグラフィカル表現を表示するのに一般的に使用されている。現在のコンピュータ・グラフィックス・システムは、非常に詳細な表現を提供し、さまざまな応用分野で使用される。
【０００３】
通常のコンピュータ・グラフィックス・システムでは、ディスプレイ画面で表現される３次元（３Ｄ）オブジェクトがグラフィックス・プリミティブに分解される。通常、レンダリングされる３Ｄオブジェクトのプリミティブは、プリミティブ・データとしてホスト・コンピュータによって定義される。例えば、プリミティブが三角形である時に、ホスト・コンピュータは、その頂点のＸ、Ｙ、およびＺ座標ならびに各頂点の赤、緑、および青（Ｒ、Ｇ、およびＢ）の色値で表してプリミティブを定義することができる。追加のプリミティブ・データを特定のアプリケーションで使用することができる。レンダリング・ハードウェアが、各プリミティブを表すディスプレイ画面画素およびその画素のＲ、Ｇ、およびＢ色値を計算するためにプリミティブ・データを補間する。
【０００４】
通常のコンピュータ・グラフィックス・システムには、さらに、グラフィックス・キャッシュ・メモリが含まれる。グラフィックス・キャッシュ・メモリを効率的に利用するために、３Ｄプリミティブがビンにソートされる。この周知の技法を、しばしば、「タイリング」と称する。
【０００５】
図１および図２に、３Ｄプリミティブのビンへのソートまたは「タイリング」の例を示す。この例では、グラフィックス・コントローラがプリミティブ１１０、１２０、１３０を受け取る。プリミティブ１１０、１２０、１３０は、レンダリングされ、ディスプレイ画面１００に表示される。３Ｄプリミティブをレンダリングする時には、グラフィックス・コントローラがグラフィックス・メモリからグラフィックス・キャッシュ・メモリに表示データの必要な部分を読み取る。その後、グラフィックス・コントローラは、プリミティブをレンダリングし、レンダリングされたプリミティブをグラフィックス・キャッシュ・メモリに記憶された表示データと組み合わせる。グラフィックス・メモリは、メイン・システム・メモリ内に配置することができる。
【０００６】
非タイル型グラフィックス・アーキテクチャでは、グラフィックス・コントローラがプリミティブ１１０をレンダリングし、その後にプリミティブ１２０、その後にプリミティブ１３０をレンダリングする場合に、グラフィックス・コントローラが、あるプリミティブから次のプリミティブに移るたびに、表示データの新しい部分をグラフィックス・メモリから取り出す必要があり、多数のグラフィックス・キャッシュをミスし、グラフィックス・メモリ帯域幅がより多く使用される。
【０００７】
グラフィックス・メモリ帯域幅利用度を改善するために、タイリング機能が、プリミティブ１１０、１２０、１３０に対して実行される。この例のプリミティブ１１０、１２０、１３０は、図２に示されているように、ビン２１０、２２０、２３０、２４０にソートされる。ソート技法には、全般的に、マイクロプロセッサが、さまざまなプリミティブがどのビンと交わるかを分析すること、および、プリミティブ・データのコピーをそのプリミティブが交わるビンのメイン・メモリ内の記憶領域に書き込むことが含まれる。その後、グラフィックス・コントローラが、ビン記憶領域からプリミティブ・データを読み出し、プリミティブを分割して、さまざまなタイルにおさまるより小さいプリミティブを作成する。例えば、プリミティブ１１０が分割されて、ビン２１０内に配置されるプリミティブ２１１と、ビン２２０内に配置されるプリミティブ２２１が作成される。プリミティブ１２０が分割されて、ビン２２０内に配置されるプリミティブ２２２とビン２４０内に配置されるプリミティブ２４２とが作成される。プリミティブ１３０が分割されて、ビン２１０内に配置されるプリミティブ２１２、ビン２３０内に配置されるプリミティブ２３１、およびビン２４０内に配置されるプリミティブ２４１が作成される。
【０００８】
所与のビンに関してプリミティブをより小さいプリミティブに分割した後に、ビンをレンダリングすることができる。通常、グラフィックス・コントローラは１つずつビンを処理する。特定のビン内に配置されたプリミティブのそれぞれの必要な表示データが、グラフィックス・メモリの同一の領域に記憶されるので、プリミティブをレンダリングする時にキャッシュ・ミスがより少なく、グラフィックス・メモリ帯域幅利用度の改善がもたらされる。
【０００９】
しかし、通常のグラフィックス・システムでは、２次元（２Ｄ）オペレーションが３Ｄオペレーションと混合されることも一般的である。例えば、マイクロプロセッサが、複数の３Ｄオブジェクトのプリミティブ・データを受け取り、その後、２Ｄブリット・オペレーションを実行するコマンドを受け取り、その後、さらなる３Ｄプリミティブ・データを受け取る場合がある。
【００１０】
図３は、通常の従来のグラフィックス・システムがタイル型アーキテクチャで２Ｄオペレーションを処理する方法を示す流れ図である。ステップ３１０で、プロセッサが、３Ｄプリミティブ・データを受け取り、プリミティブをビンにソートする。ステップ３２０で、２Ｄブリット・オペレーションを受け取る場合には、プリミティブ・データを含むビンのすべてがフラッシュされる（レンダリングのためにグラフィックス・コントローラに送られる）。その後、ステップ３４０で、２Ｄブリット・オペレーションを実行する。２Ｄブリット・オペレーションに続いて、プロセッサは、追加の３Ｄプリミティブをビンにソートし始めることができる。
【００１１】
２Ｄオペレーションが受け取られる時に必ずビンをフラッシュし、レンダリングすることによって、主に、グラフィックス・キャッシュ・ミスの増加に起因して３Ｄプリミティブのタイリングの利益が失われる可能性がある。その結果、グラフィックス・メモリ帯域幅の利用度がより大きくなる。このグラフィックス・メモリ帯域幅利用度の結果的な増加は、システム・メイン・メモリの一部がグラフィックス・メモリとして使用され、多数のシステム・エージェントがシステム・メイン・メモリへのアクセスを望むコンピュータ・システムで、特に問題になる可能性がある。グラフィックス・コントローラによるメイン・メモリ帯域幅利用度の増加は、総合的なシステム性能に悪影響を及ぼす可能性がある。
【００１２】
本発明は、本発明の実施形態の、下に示す詳細な説明および添付図面から完全に理解されるが、この説明および図面は、説明される特定の実施形態に本発明を制限するものと解釈してはならず、説明と理解のみのためのものである。
【００１３】
（詳細な説明）
タイル型グラフィックス・アーキテクチャで２Ｄオペレーションを処理する方法の例の実施形態を説明する。この例では、３Ｄプリミティブと２Ｄブリット・オペレーションの両方を処理する。３Ｄプリミティブは、周知の技法を使用してビンにソートされる。２Ｄブリット・オペレーションが処理される時に、２Ｄブリット・オペレーションもビンにソートされる。ソートされた３Ｄプリミティブおよびソートされた２Ｄブリット・オペレーションは、ビンごとにドロー・エンジンとレンダリング・エンジンに渡される。２Ｄブリット・オペレーションを３Ｄプリミティブと共にビンにソートすることによって、２Ｄブリット・オペレーションが処理を必要とする時に必ずビンをフラッシュする（プリミティブをレンダリング・エンジンに送る）必要がなくなる。２Ｄブリット・オペレーションのビンへのソートによって、グラフィックス・キャッシュ・ミスの頻度が減り、グラフィックス・メモリ帯域幅利用度が改善され、これによって総合的なコンピュータ・システム性能が改善される。
【００１４】
本明細書で説明する例の実施形態で、２Ｄブリット・オペレーションに言及する。用語「２Ｄブリット・オペレーション」は、２次元オブジェクトをディスプレイ画面に描くことを指示するすべてのオペレーションを含むことが意図されている。２Ｄブリット・オペレーションは、グラフィックス・システムのカラー・バッファまたはＺ（深さ）バッファの初期化にも使用することができる。さらに、本明細書で説明する例の実施形態で、少数の３Ｄおよび２Ｄのオペレーションおよびプリミティブを論ずるが、この実施形態は、大量の３Ｄおよび２Ｄのオペレーションおよびプリミティブを処理することが意図されている。
【００１５】
図４は、ディスプレイ画面４００に描かれる複数の３Ｄプリミティブおよび２Ｄオブジェクトの表現である。この例では、３Ｄプリミティブ４１０、４２０、４３０ならびに２Ｄオブジェクト４４０の２Ｄブリット・オペレーションが、マイクロプロセッサによって受け取られる。マイクロプロセッサは、３Ｄプリミティブ４１０、４２０、４３０を１つまたは複数のビン５１０、５２０、５３０、５４０にソートする。この例では、本発明をより明瞭に説明するために、４つのビンに分割されるものとして画面表示領域を説明するが、画面表示領域をビンの広範囲の個数のいずれかに分割する他の実施形態が可能である。通常、ビンの数は、４を大きく超える。
【００１６】
図４に示されているように、３Ｄプリミティブ４１０は、部分的にビン５１０内、部分的にビン５２０内に含まれる。３Ｄプリミティブ４２０は、部分的にビン５２０内、部分的にビン５４０内に含まれる。３Ｄプリミティブ４３０は、部分的にビン５１０内、部分的にビン５３０内、部分的にビン５４０内に含まれる。２Ｄオブジェクト４４０は、部分的にビン５１０内、部分的にビン５３０内に含まれる。
【００１７】
図５に、ビン５１０、５２０、５３０、５４０に分割された、３Ｄプリミティブ４１０、４２０、４３０ならびに２Ｄオブジェクト４４０を示す。プロセッサが、さまざまなプリミティブのコピーをプリミティブが交わるビンのグラフィックス・メモリ記憶領域に渡す。例えば、プロセッサは、プリミティブ４１０のプリミティブ・データのコピーをビン５１０、５２０のグラフィックス・メモリ記憶領域に渡す。もう１つの例として、プロセッサは、２Ｄオブジェクト４４０のデータのコピーをビン５１０と５３０のグラフィックス記憶領域に渡す。２Ｄオブジェクト４４０を３Ｄプリミティブと共にビンにソートすることによって、２Ｄオブジェクト４４０に関するブリット・オペレーションがプロセッサによって受け取られる時に、ビンをフラッシュする（プリミティブをグラフィックス・コントローラ内のレンダリング・エンジンに送る）必要がなくなる。２Ｄオブジェクト４４０をビンにソートすることによって、グラフィックス・キャッシュ・ミスの頻度が減り、グラフィックス・メモリ帯域幅利用度が改善され、これによって、総合的なコンピュータ・システム性能が改善される。
【００１８】
３Ｄプリミティブおよび２Ｄオブジェクト４４０が、ビンにソートされた後に、グラフィックス・コントローラは、ビンごとに各ビンのデータを読み取り、より大きいプリミティブを、各タイルにおさまるより小さいプリミティブに分割する。例えば、３Ｄプリミティブ４１０は、グラフィックス・コントローラによって分割されて、ビン５１０内のプリミティブ５１１とビン５２０内のプリミティブ５２１が作成される。３Ｄプリミティブ４２０は、グラフィックス・コントローラによって分割されて、ビン５２０内のプリミティブ５２２とビン５４０内のプリミティブ５４２が作成される。３Ｄプリミティブ４３０は、グラフィックス・コントローラによって分割されて、ビン５１０内のプリミティブ５１２、ビン５３０内のプリミティブ５３１、およびビン５４０内のプリミティブ５４１が作成される。２Ｄオブジェクト４４０は、グラフィックス・コントローラによって分割されて、ビン５１０内のオブジェクト５１３とビン５３０内のオブジェクト５３２が作成される。分割された３Ｄプリミティブおよび分割された２Ｄオブジェクトが、ビンごとに、ドロー・エンジンおよびレンダリング・エンジンに渡される。
【００１９】
図６は、タイル型グラフィックス・アーキテクチャで２Ｄブリット・オペレーションを処理する方法の１つの例の実施形態の流れ図である。ステップ６１０で、３Ｄプリミティブを受け取り、ビンにソートする。この例では、３Ｄプリミティブがプロセッサに渡され、プロセッサがソート（ビニング）処理を実行する。ソート処理がグラフィックス・コントローラ内で実行される、他の実施形態が可能である。
【００２０】
ステップ６２０で、２Ｄブリット・オペレーションを受け取ったかどうかに関する判定を行う。２Ｄブリット・オペレーションがない場合には、処理がステップ６１０に戻り、追加の３Ｄプリミティブを受け取ることができる。しかし、ステップ６２０で２Ｄブリット・オペレーションが受け取られる場合には、ステップ６３０で、２Ｄオペレーションもビンにソートされる。
【００２１】
図７は、システム論理デバイス７１０内に配置されたグラフィックス・コントローラ７２０を含むシステムのブロック図である。グラフィックス・コントローラ７２０には、ビニング・ユニット７２１、２Ｄブリット・エンジン７２２、３Ｄレンダリング・エンジン７２３、ディスプレイ出力ユニット７２５、およびグラフィックス・キャッシュ・メモリ７２４が含まれる。２Ｄブリット・エンジン７２２は、２Ｄブリット・オペレーションを実行するのに使用される広範囲の回路を表すことが意図されている。３Ｄレンダリング・エンジン７２３は、３Ｄプリミティブを処理するのに使用される広範囲の回路を表すことが意図されている。同様に、ディスプレイ出力ユニット７２５は、グラフィックス表示データをディスプレイ・モニタに渡すのに適する形式にグラフィックス表示データを変換するのに使用される広範囲の回路を表すことが意図されている。ディスプレイ出力ユニット７２５は、ディスプレイ・モニタ７６０に接続される。
【００２２】
グラフィックス・コントローラ７２０に加えて、システム論理デバイス７１０には、ホスト・インターフェース・ユニット７１２、システム・メモリ・インターフェース７１４、およびシステム入出力インターフェース・ユニット７１６が含まれる。ホスト・インターフェース・ユニット７１２は、ビニング・ユニット７２１やシステム・メモリ・インターフェース７１４を含むシステム論理ユニット７１０内のさまざまなユニットをプロセッサ７０５に結合するように働く。システム・メモリ・インターフェース７１４は、システム論理デバイス７１０とシステム・メモリ７５０の間の通信を提供する。システム・メモリ７５０に、グラフィックス・メモリ・スペース７５２を含めることができる。システム入出力インターフェース・ユニット７１６は、システム論理デバイス７１０をシステム入出力デバイス７７０に結合する。システム入出力デバイス７７０は、ハード・ディスク・コントローラ、キーボード・コントローラなどを含む広範囲の入出力デバイスを含むことが意図されている。
【００２３】
プロセッサ７０５は、そのアクティビティの中に、グラフィックス・コマンドとプリミティブのストリームを受け取ることができる。グラフィックス・コマンドおよびプリミティブに、３Ｄプリミティブおよび２Ｄブリット・オペレーションを含めることができる。プロセッサ７０５は、上で図４から６に関して述べたように、３Ｄプリミティブおよび２Ｄブリット・オペレーションを複数のビンにソートする。ビニング処理の一部として、プロセッサ７０５は、３Ｄプリミティブおよび２Ｄオブジェクト・データのコピーをグラフィックス・メモリ７５２内のビン記憶領域に書き込む。
【００２４】
グラフィックス・コントローラ７２０は、ビンごとにグラフィックス・メモリ７５２から３Ｄプリミティブ・データと２Ｄオブジェクト・データを読み取る。ビン・データはグラフィックス・キャッシュ・メモリ７２４に記憶される。グラフィックス・キャッシュ・メモリ７２４は、少なくとも、１つのビンを処理できるのに十分な表示データを記憶するのに十分な大きさであることが好ましい。グラフィックス・キャッシュ・メモリ７２４は、システム・メモリ・インターフェース７１４を介してグラフィックス・メモリ７５２にアクセスする。各ビンのデータが、ビニング・ユニット７２１に渡される。ビニング・ユニット７２１は、上で図４から６に関して述べたように、３Ｄプリミティブと２Ｄオブジェクトをグラフィックス・コントローラ７２０が現在処理しているビンにおさまる、より小さいプリミティブおよびオブジェクトに分割する。
【００２５】
ビニング・ユニットは、分割された３Ｄプリミティブと２Ｄブリット・オペレーションを２Ｄブリット・エンジン７２２または３Ｄレンダリング・エンジン７２３のいずれかに渡す。２Ｄブリット・エンジンと３Ｄレンダリング・エンジンの両方がグラフィックス・キャッシュ・メモリ７２４に結合される。この構成を用いると、２Ｄブリット・エンジン７２２が、３Ｄレンダリング・エンジン７２３によってグラフィックス・キャッシュ・メモリ７２４に格納された中間レンダリング結果にアクセスできるようになる。グラフィックス・キャッシュ・メモリ７２４と２Ｄブリット・エンジンが接続されない別の実施形態も可能である。しかし、２Ｄブリット・エンジン７２２とグラフィックス・キャッシュ・メモリ７２４の間の接続がないと、２Ｄブリット・エンジン７２２が、表示データの変更を必要とするたびに、グラフィックス・キャッシュ・メモリ７２４からグラフィックス・メモリ７５２にデータを書き込むことが必要になる。その場合に、３Ｄレンダリング・エンジン７２３は、３Ｄプリミティブのレンダリングを継続するために、グラフィックス・メモリ７５２からグラフィックス・キャッシュ・メモリ７２４にデータを読み取らせることが必要である。
【００２６】
この例の実施形態では、システム・メモリ７５０にグラフィックス・メモリ・スペース７５２が含まれる。別のグラフィックス・メモリを使用する他の実施形態も可能である。グラフィックス・コントローラがビニング・オペレーションを実行するさらに他の実施形態も可能である。グラフィックス・コントローラ７２０が、システム論理デバイスに統合されるのではなく、別のデバイスに含まれ、システム論理デバイスを介してプロセッサに結合されるさらにもう１つの実施形態も可能である。
【００２７】
前述の明細書で、本発明をその特定の例示的実施形態に関して説明した。しかし請求項に示された本発明の広義の趣旨と範囲から逸脱せずに、本発明に対するさまざまな修正と変更を行えることは明白である。本明細書と図面は、したがって、制限的な意味ではなく、例示的と見なされなければならない。
【図面の簡単な説明】
【図１】  従来のシステムによるディスプレイ画面に配置された複数の３Ｄオブジェクトの図である。
【図２】  従来のシステムによるビンにソートされた図１の複数の３Ｄオブジェクトを示す図である。
【図３】  タイル型グラフィックス・アーキテクチャでの２Ｄオペレーションを処理する従来の方法の流れ図である。
【図４】  ディスプレイ画面に配置された複数の３Ｄオブジェクトと２Ｄオブジェクトを示す図である。
【図５】  本発明の実施形態による、ビンにソートされた図４からの複数の３Ｄオブジェクトと２Ｄオブジェクトを示す図である。
【図６】  ２Ｄオペレーションをビンにソートする方法の一実施形態の流れ図である。
【図７】  本発明の実施形態に従って実施されるグラフィックス・コントローラを組み込まれたシステム論理デバイスを含むシステムのブロック図である。
【図１】
0004719399.tif 000002
【図２】
0004719399.tif 000003
【図３】
0004719399.tif 000004
【図４】
0004719399.tif 000005
【図５】
0004719399.tif 000006
【図６】
0004719399.tif 000007
【図７】
0004719399.tif 000008