(57)【特許請求の範囲】
【請求項１】
グラフィックプロセッシング装置において、グラフィックス・パイプラインを遂行する方法において、
ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングをスキップするか否かを判断し、前記判断の結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプラインを遂行する段階と、
前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行する段階と、を含み、
前記ビニング・パイプラインを遂行する段階は、前記出力パッチが含まれた前記タイルの個数が１個である場合に、テッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップすることを含む、
方法。
【請求項２】
前記ビニング・パイプラインを遂行する段階は、
入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成する段階と、
前記出力パッチに係わる前記タイルリストをビニングする段階と、
前記出力パッチが１タイルに含まれるか否かを判断する段階と、を含み、
前記レンダリング・パイプラインを遂行する段階は、
前記出力パッチが前記１タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行うことを特徴とする請求項１に記載の方法。
【請求項３】
前記ビニング・パイプラインを遂行する段階は、
前記出力パッチが２以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する段階を含み、
前記レンダリング・パイプラインを遂行する段階は、
前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行うことを特徴とする請求項２に記載の方法。
【請求項４】
前記ビニング・パイプラインを遂行する段階は、
前記出力パッチが１タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが２以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含むことを特徴とする請求項１〜３のうちの何れか１項に記載の方法。
【請求項５】
前記レンダリング・パイプラインを遂行する段階は、
前記ビニング・パイプラインで、前記テッセレーティングがスキップされた場合、前記ビニング・パイプラインで、前記出力パッチに対して保存されたビンストリームを利用して、テッセレーション・パイプラインを遂行する段階を含むことを特徴とする請求項１〜４のうち何れか１項に記載の方法。
【請求項６】
グラフィックス・パイプラインを遂行するコンピューティング装置において、
ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングをスキップするか否かを判断し、前記判断の結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプライン、及び前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行するグラフィックプロセッシング装置と、
前記ビニング・パイプラインでビニングされた前記タイルリストを保存し、前記保存されたタイルリストを、前記レンダリング・パイプラインに提供するメモリと、を含み、
前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、前記出力パッチが含まれた前記タイルの個数が１個であると判断された場合に、前記ビニング・パイプラインで、テッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップする、
コンピューティング装置。
【請求項７】
前記グラフィックプロセッシング装置は、
入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成し、前記出力パッチに対して、前記タイルリストの前記ビニングを行い、前記出力パッチが１タイルに含まれるか否かを判断する前記ビニング・パイプラインを遂行し、
前記出力パッチが、前記１タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う前記レンダリング・パイプラインを遂行することを特徴とする請求項６に記載のコンピューティング装置。
【請求項８】
前記グラフィックプロセッシング装置は、
前記出力パッチが２以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する前記ビニング・パイプラインを遂行し、
前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う前記レンダリング・パイプラインを遂行することを特徴とする請求項７に記載のコンピューティング装置。
【請求項９】
前記メモリは、
前記ビニング・パイプラインが遂行される間、前記出力パッチが１タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが２以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存することを特徴とする請求項６〜８のうち何れか１項に記載のコンピューティング装置。
【請求項１０】
請求項１に記載の方法を前記グラフィックプロセッシング装置に実行させるコンピュータプログラム。
【請求項１１】
請求項１０に記載のコンピュータプログラムを記憶する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックプロセッシング装置、及びグラフィックプロセッシング装置でタイルに基づいてグラフィックス・パイプラインを遂行する方法等に関する。
【背景技術】
【０００２】
ＧＰＵ（graphics  processing  unit）のようなグラフィックプロセッシング装置は、コンピューティング装置において、グラフィックスデータをレンダリングする役割を担当する。一般的に、グラフィックプロセッシング装置は、二次元客体または三次元客体に該当するグラフィックスデータを二次元ピクセル表現に変換し、ディスプレイのためのフレームを生成する。コンピューティング装置の種類としては、ＰＣ（personal  computers）、ノート型パソコン、ビデオゲーム用コンソールだけではなく、スマートフォン、タブレットデバイス、ウェアラブルデバイスのようなエンベデッド（embedded）デバイスも含まれてもよい。スマートフォン、タブレットデバイス、ウェアラブルデバイスのようなエンベデッドデバイスは、比較的低い演算処理能や多くの電力消耗の問題により、十分なメモリ空間及びプロセッシングパワーを確保しているＰＣ、ノート型パソコン、ビデオゲーム用コンソールのようなワークステーションと同様なグラフィックプロセッシング性能を備えることは困難である。しかし、最近全世界的に、スマートフォンまたはタブレットデバイスのような携帯用デバイスが広く普及されるにつれ、それらのユーザは、スマートフォンまたはタブレットデバイスを介してゲームをプレイしたり、あるいは映画、ドラマなどのコンテンツを鑑賞したりする頻度が急増している。それにより、グラフィックプロセッシング装置の製造社において、ユーザの需要に歩調をあわせ、エンベデッドデバイスにおいて、グラフィックプロセッシング装置の性能及び処理効率を高めるための研究が盛んに進められている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許登録第６，３５９，６１９号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、グラフィックプロセッシング装置、及びグラフィックプロセッシング装置でタイルに基づいてグラフィックス・パイプラインを遂行する方法等を提供するところにある。本実施形態で意図される技術的課題は、前述のような技術的課題に限定されず、他の技術的課題も包含する。
【課題を解決するための手段】
【０００５】
前記課題を解決するために、本発明の一側面によれば、グラフィックプロセッシング装置でグラフィックス・パイプラインを遂行する方法は、ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングをスキップするか否かということを判断し、前記判断結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプラインを遂行する段階と、前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行する段階と、を含む。
【０００６】
また、前記ビニング・パイプラインを遂行する段階は、前記出力パッチが含まれた前記タイルの個数が１個である場合、テッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップする。
【０００７】
また、前記ビニング・パイプラインを遂行する段階は、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成する段階と、前記出力パッチに係わる前記タイルリストをビニングする段階と、前記出力パッチが１タイルに含まれるか否かということを判断する段階と、を含み、前記レンダリング・パイプラインを遂行する段階は、前記出力パッチが前記１タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う。
【０００８】
また、前記ビニング・パイプラインを遂行する段階は、前記出力パッチが２以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する段階を含み、前記レンダリング・パイプラインを遂行する段階は、前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う。
【０００９】
また、前記ビニング・パイプラインを遂行する段階は、前記出力パッチが１タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが２以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含む。
【００１０】
また、前記レンダリング・パイプラインを遂行する段階は、前記ビニング・パイプラインで、前記テッセレーティングがスキップされた場合、前記ビニング・パイプラインで、前記出力パッチに対して保存されたビンストリームを利用して、テッセレーション・パイプラインを遂行する段階を含む。
【００１１】
前記課題を解決するために、本発明の他の側面によれば、グラフィックス・パイプラインを遂行するコンピューティング装置は、ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングをスキップするか否かということを判断し、前記判断結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプライン、及び前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行するグラフィックプロセッシング装置；並びに前記ビニング・パイプラインでビニングされた前記タイルリストを保存し、前記保存されたタイルリストを、前記レンダリング・パイプラインに提供するメモリ；を含む。
【００１２】
また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、前記出力パッチが含まれた前記タイルの個数が１個であると判断された場合、前記ビニング・パイプラインでテッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップする。
【００１３】
また、前記グラフィックプロセッシング装置は、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成し、前記出力パッチに対して、前記タイルリストの前記ビニングを行い、前記出力パッチが１タイルに含まれるか否かということを判断する前記ビニング・パイプラインを遂行し、前記出力パッチが前記１タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う前記レンダリング・パイプラインを遂行する。
【００１４】
また、前記グラフィックプロセッシング装置は、前記出力パッチが２以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する前記ビニング・パイプラインを遂行し、前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う前記レンダリング・パイプラインを遂行する。
【００１５】
また、前記メモリは、前記ビニング・パイプラインが遂行される間、前記出力パッチが１タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが２以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含む。
【００１６】
前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックプロセッシング装置でグラフィックス・パイプラインを遂行する方法は、ハルシェーダによって決定された第１テッセレーションファクタと異なる第２テッセレーションファクタでテッセレーティングされたプリミティブが含まれたタイルの個数に基づいて、前記第１テッセレーションファクタに基づいたテッセレーティングをスキップするか否かということを判断し、前記判断結果によって、前記第１テッセレーションファクタでテッセレーティングされたプリミティブ、または前記ハルシェーダから出力された出力パッチに係わるタイルリストをビニングするビニング・パイプラインを遂行する段階と、前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行する段階と、を含む。
【００１７】
また、前記ビニング・パイプラインを遂行する段階は、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが含まれた前記タイルの個数が１個である場合、テッセレータによって行われる前記第１テッセレーションファクタに基づいた前記テッセレーティングをスキップする。
【００１８】
また、前記第２テッセレーションファクタは、前記第１テッセレーションファクタより低い。
【００１９】
また、前記ビニング・パイプラインを遂行する段階は、前記ハルシェーダで前記出力パッチを生成し、前記第１テッセレーションファクタを決定するハルシェーディングを行う段階と、前記第１テッセレーションファクタより低い前記第２テッセレーションファクタに基づいて、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことによって、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブを生成する段階と、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが１タイルに含まれるか否かということを判断する段階と、を含み、前記レンダリング・パイプラインを遂行する段階は、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが前記１タイルに含まれた場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う。
【００２０】
また、前記ビニング・パイプラインを遂行する段階は、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが２以上のタイルに含まれていると判断された場合、前記第１テッセレーションファクタに基づいて、前記出力パッチに対する前記テッセレータの前記テッセレーティング、及び前記ドメインシェーダの前記ドメインシェーディングを行うことによって、前記第１テッセレーションファクタで前記テッセレーティングされたプリミティブを生成する段階を含み、前記レンダリング・パイプラインを遂行する段階は、前記第１テッセレーションファクタで前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う。
【００２１】
また、前記ビニング・パイプラインを遂行する段階は、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが１タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが２以上のタイルに含まれた場合、前記第１テッセレーションファクタで前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含む。
【００２２】
前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックス・パイプラインを遂行するコンピューティング装置は、ハルシェーダによって決定された第１テッセレーションファクタと異なる第２テッセレーションファクタでテッセレーティングされたプリミティブが含まれたタイルの個数に基づいて、前記第１テッセレーションファクタに基づいたテッセレーティングをスキップするか否かということを判断し、前記判断結果によって、前記第１テッセレーションファクタでテッセレーティングされたプリミティブ、または前記ハルシェーダから出力された出力パッチに係わるタイルリストをビニングするビニング・パイプライン、及び前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行するグラフィックプロセッシング装置；並びに前記ビニング・パイプラインでビニングされた前記タイルリストを保存し、前記保存されたタイルリストを、前記レンダリング・パイプラインに提供するメモリ；を含む。
【００２３】
また、前記グラフィックプロセッシング装置は、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが含まれた前記タイルの個数が１個である場合、テッセレータによって行われる前記第１テッセレーションファクタに基づいた前記テッセレーティングをスキップする。
【００２４】
また、前記第２テッセレーションファクタは、前記第１テッセレーションファクタより低い。
【００２５】
前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックプロセッシング装置でグラフィックス・パイプラインを遂行する方法は、ハルシェーダから出力された出力パッチをビニングすることにより、前記出力パッチが複数のタイルに含まれるか否かということを判断し、前記出力パッチが前記複数のタイルに含まれる場合、前記タイルのレンダリング順序をスケジューリングするビニング・パイプラインを遂行する段階と、前記スケジューリングされたレンダリング順序に基づいて、タイル単位で、前記タイルに対するレンダリング・パイプラインを遂行する段階と、を含み、最初のレンダリング順序でスケジューリングされた第１タイルに対する前記レンダリング・パイプラインは、前記第１タイルに隣接した隣接タイルに係わる可視性ストリームを生成するビニングを含む。
【００２６】
また、前記ビニング・パイプラインを遂行する段階は、テッセレータによって行われる前記出力パッチに対するテッセレーティングをスキップする。
【００２７】
また、前記ビニング・パイプラインを遂行する段階は、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成する段階と、前記出力パッチに係わるタイルリストをビニングする段階と、前記出力パッチが前記複数のタイルに含まれるか否かということを判断する段階と、前記出力パッチが前記タイルに含まれる場合、前記最初のレンダリング順序に対応する前記第１タイルを決定する段階と、を含む。
【００２８】
また。前記レンダリング・パイプラインを遂行する段階は、前記第１タイルに対する第１レンダリング・パイプラインを遂行する段階と、前記隣接タイルに対する第２レンダリング・パイプラインを遂行する段階と、を含み、前記第２レンダリング・パイプラインを遂行する段階は、前記第１レンダリング・パイプラインで生成された前記可視性ストリームに基づいて、前記隣接タイルで可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。
【００２９】
前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックス・パイプラインを遂行するコンピューティング装置は、ハルシェーダから出力された出力パッチをビニングすることにより、前記出力パッチが複数のタイルに含まれるか否かということを判断し、前記出力パッチが前記タイルに含まれる場合、前記タイルのレンダリング順序をスケジューリングするビニング・パイプライン、及び前記スケジューリングされたレンダリング順序に基づいて、タイル単位で、前記タイルに対するレンダリング・パイプラインを遂行するグラフィックプロセッシング装置；並びに最初のレンダリング順序でスケジューリングされた第１タイルに対する前記レンダリング・パイプラインが遂行される間に生成された、前記第１タイルに隣接した隣接タイルに係わる可視性ストリームを保存するメモリ；を含む。
【００３０】
また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、テッセレータによって行われる前記出力パッチに対するテッセレーティングをスキップする。
【００３１】
また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインが遂行される間、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成し、前記出力パッチに係わるタイルリストをビニングし、前記出力パッチが前記複数のタイルに含まれるか否かということを判断し、前記出力パッチが前記タイルに含まれる場合、前記最初のレンダリング順序に対応する前記第１タイルを決定する。
【００３２】
また、前記グラフィックプロセッシング装置は、前記第１タイルに対する第１レンダリング・パイプラインを遂行し、前記隣接タイルに対する第２レンダリング・パイプラインを遂行し、前記第２レンダリング・パイプラインは、前記第１レンダリング・パイプラインで生成された前記可視性ストリームに基づいて、前記隣接タイルで可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。
【００３３】
前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックプロセッシング装置でグラフィックス・パイプラインを遂行する方法は、ハルシェーダによって決定された第１テッセレーションファクタと異なる第２テッセレーションファクタでテッセレーティングされたプリミティブをビニングすることにより、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが複数のタイルに含まれるか否かということを判断し、前記第２テッセレーションファクタでテッセレーティングされたプリミティブが前記複数のタイルに含まれる場合、前記タイルのレンダリング順序をスケジューリングするビニング・パイプラインを遂行する段階と、前記スケジューリングされたレンダリング順序に基づいて、タイル単位で、前記タイルに対するレンダリング・パイプラインを遂行する段階と、を含み、最初のレンダリング順序でスケジューリングされた第１タイルに対する前記レンダリング・パイプラインは、前記第１タイルに隣接した隣接タイルに係わる可視性ストリームを生成するビニングを含む。
【００３４】
また、前記ビニング・パイプラインを遂行する段階は、テッセレータによって行われる前記第１テッセレーションファクタに基づいた前記テッセレーティングをスキップする。
【００３５】
また、前記第２テッセレーションファクタは、前記第１テッセレーションファクタより低い。
【００３６】
また、前記ビニング・パイプラインを遂行する段階は、前記ハルシェーダで出力パッチを生成し、前記第１テッセレーションファクタを決定するハルシェーディングを行う段階と、前記第１テッセレーションファクタより低い前記第２テッセレーションファクタに基づいて、前記出力パッチに対するテッセレータのテッセレーティング、及びドメインシェーダのドメインシェーディングを行うことによって、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブを生成する段階と、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブに係わるタイルリストをビニングする段階と、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが前記複数のタイルに含まれるか否かということを判断する段階と、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが前記タイルに含まれる場合、前記最初のレンダリング順序に対応する前記第１タイルを決定する段階と、を含む。
【００３７】
また、前記レンダリング・パイプラインを遂行する段階は、前記第１タイルに対する第１レンダリング・パイプラインを遂行する段階と、前記隣接タイルに対する第２レンダリング・パイプラインを遂行する段階と、を含み、前記第２レンダリング・パイプラインを遂行する段階は、前記第１レンダリング・パイプラインで生成された前記可視性ストリームに基づいて、前記隣接タイルで可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。
【００３８】
前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックス・パイプラインを遂行するコンピューティング装置は、ハルシェーダによって決定された第１テッセレーションファクタと異なる第２テッセレーションファクタでテッセレーティングされたプリミティブをビニングすることにより、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが複数のタイルに含まれるか否かということを判断し、前記第２テッセレーションファクタでテッセレーティングされたプリミティブが前記複数のタイルに含まれる場合、前記タイルのレンダリング順序をスケジューリングするビニング・パイプライン、及び前記スケジューリングされたレンダリング順序に基づいて、タイル単位で、前記タイルに対するレンダリング・パイプラインを遂行するグラフィックプロセッシング装置；並びに最初のレンダリング順序でスケジューリングされた第１タイルに対する前記レンダリング・パイプラインが遂行される間に生成された、前記第１タイルに隣接した隣接タイルに係わる可視性ストリームを保存するメモリ；を含む。
【００３９】
また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、テッセレータによって行われる前記第１テッセレーションファクタに基づいた前記テッセレーティングをスキップする。
【００４０】
また、前記第２テッセレーションファクタは、前記第１テッセレーションファクタより低い。
【００４１】
また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインが遂行される間、前記ハルシェーダで出力パッチを生成し、前記第１テッセレーションファクタを決定するハルシェーディングを行い、前記第１テッセレーションファクタより低い前記第２テッセレーションファクタに基づいて、前記出力パッチに対するテッセレータのテッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブを生成し、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブに係わるタイルリストをビニングし、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが前記複数のタイルに含まれるか否かということを判断し、前記第２テッセレーションファクタで前記テッセレーティングされたプリミティブが前記タイルに含まれる場合、前記最初のレンダリング順序に対応する前記第１タイルを決定する。
【００４２】
また、前記グラフィックプロセッシング装置は、前記第１タイルに対する第１レンダリング・パイプラインを遂行し、前記隣接タイルに対する第２レンダリング・パイプラインを遂行し、前記第２レンダリング・パイプラインは、前記第１レンダリング・パイプラインで生成された前記可視性ストリームに基づいて、前記隣接タイルで可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。
【００４３】
前記課題を解決するために、本発明のさらに他の側面によれば、前記方法のうち少なくとも一つをコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供する。
【発明の効果】
【００４４】
本発明によれば、ＧＰＵで処理されるグラフィックス・パイプラインの一部であるテッセレーション・パイプラインで、テッセレータによるテッセレーティングをスキップしたり、あるいは低いテッセレーションファクタを利用したりしてテッセレーティングを行うことにより、ＧＰＵの演算量を減らして処理速度を速めることができる。
【図面の簡単な説明】
【００４５】
【図１】一実施形態によるコンピューティング装置について説明するための図面である。
【図２】タイルに基づくレンダリング（ＴＢＲ）について説明するための図面である。
【図３】テッセレーション・パイプラインについて説明するための図面である。
【図４】テッセレーション・パイプラインについて説明するための図面である。
【図５】テッセレーション・パイプラインについて説明するための図面である。
【図６】一実施形態による図１のＧＰＵの詳細ハードウェア構造を図示したブロック図である。
【図７】一実施形態によってＧＰＵで遂行することができる多種のグラフィックス・パイプラインを選択することについて説明するための図面である。
【図８Ａ】一実施形態による三次元客体を分割するためのタイルの個数と、グラフィックス処理性能（または、効率）との関係について説明するための図面である。
【図８Ｂ】一実施形態による三次元客体を分割するためのタイルの個数と、グラフィックス処理性能（または、効率）との関係について説明するための図面である。
【図９】一実施形態による、出力パッチの出力コントロールポイントと、テッセレーティングされたプリミティブとの関係について説明するための図面である。
【図１０】一実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【図１１】一実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。
【図１２】他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【図１３】他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。
【図１４】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【図１５】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。
【図１６】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【図１７】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。
【図１８】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【図１９】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。
【図２０】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【図２１】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。
【図２２】他の実施形態によって、パッチのテッセレーション結果、パッチが属するタイルリストと、テッセレーティングされたプリミティブが属するタイルリストとが異なる場合について説明するための図面である。
【図２３】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【図２４】さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。
【図２５】一実施形態によるコンピューティング装置の詳細ハードウェア構成を図示したブロック図である。
【図２６Ａ】一実施形態によってＧＰＵで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
【図２６Ｂ】一実施形態によってＧＰＵで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
【図２７Ａ】他の実施形態によってＧＰＵで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
【図２７Ｂ】他の実施形態によってＧＰＵで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
【図２８】一実施形態によるグラフィックス・パイプラインにおいて、メモリのビンストリームに保存された可視性ストリームが適用される例示について説明するための図面である。
【図２９】他の実施形態によるグラフィックス・パイプラインにおいて、メモリのビンストリームに保存された可視性ストリームが適用される例示について説明するための図面である。
【図３０】一実施形態によって、ビニング・パイプラインが完了し、ビンストリームに保存される可視性ストリームについて説明するための図面である。
【図３１】他の実施形態によって、ビニング・パイプラインが完了し、ビンストリームに保存される可視性ストリームについて説明するための図面である。
【図３２】一実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。
【図３３】他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。
【図３４】さらに他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。
【図３５】さらに他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。
【発明を実施するための形態】
【００４６】
本発明で使用される用語は、本発明での機能を考慮しながら、可能な限り現在広く使用される一般的な用語を選択したが、それは、当業者の意図、判例あるいは新たな技術の出現などによって異なりもする。また、特定の場合は、出願人が任意に選定した用語もあり、その場合、当該発明の説明部分で詳細にその意味を記載する。従って、本発明で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本発明の全般にわたった内容とを基に定義されなければならない。
【００４７】
明細書全体で、ある部分が他の部分と連結されているとするとき、それは、直接的に連結されている場合だけではなく、その中間に他の素子を挟んで電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「モジュール」などの用語は、少なくとも１つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアで具現されるか、あるいはハードウェアとソフトウェアとの結合によって具現されもする。
【００４８】
本明細書で使用される「構成される」または「含む」というような用語は、明細書上に記載されたさまざまな構成要素、あるいは多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうち一部の構成要素または一部の段階は、含まれないこともあり、またはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
【００４９】
また、本明細書で使用される「第１」または「第２」のように序数を含む用語は、多様な構成要素について説明するところに使用するが、前記構成要素は、前記用語によって限定されるものではない。前記用語は、１つの構成要素を他の構成要素から区別する目的のみに使用される。
【００５０】
以下、添付された図面を参照しながら、ただ例示のための実施形態によって発明について詳細に説明する。下記実施形態は、発明を具体化するためのものであり、発明の権利範囲を制限したり、あるいは限定したりするものではないということは言うまでもない。詳細な説明及び実施形態から、発明が属する技術分野の専門家が容易に類推することができることは、発明の権利範囲に属すると解釈される。
【００５１】
図１は、一実施形態によるコンピューティング装置について説明するための図面である。
【００５２】
図１を参照すれば、コンピューティング装置１は、ＧＰＵ（graphics  processing  unit）１０、ＣＰＵ（central  processing  unit）２０、メモリ３０及びバス４０を含む。図１に図示されたコンピューティング装置１には、実施形態と係わる構成要素だけが図示されている。従って、図１に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということを当該技術分野の通常の技術者であるならば、理解することができるであろう。
【００５３】
コンピューティング装置１は、デスクトップコンピュータ、ノート型パソコン、スマートフォン、ＰＤＡ（personal  digital  assistant）、携帯型メディアプレイヤ、ビデオゲーム用コンソール、テレビセットトップボックス、タブレットデバイス、電子ブックリーダ、ウェアラブルデバイスなどを例として挙げることができるが、それらに制限されるものではない。すなわち、コンピューティング装置１は、コンテンツのディスプレイのためのグラフィックスプロセッシング機能を有する装置であり、コンピューティング装置１の範疇には多様な装置が含まれる。
【００５４】
ＣＰＵ  ２０は、コンピューティング装置１の全般的な動作及び機能を制御するハードウェアである。例えば、ＣＰＵ  ２０は、運用体制（ＯＳ：operating  system）を駆動し、ＧＰＵ  １０のためのグラフィックスＡＰＩ（application  programming  interface）を呼び出し、ＧＰＵ  １０のドライバを実行させることができる。また、ＣＰＵ  ２０は、メモリ３０に保存された多様なアプリケーション、例えば、ウェブブラウジング・アプリケーション、ゲーム・アプリケーション、ビデオ・アプリケーションなどを実行することができる。
【００５５】
ＧＰＵ  １０は、グラフィックス・パイプライン（graphics  pipeline）を遂行するグラフィック専用プロセッサであり、三次元イメージ上の三次元客体を、ディスプレイ用の二次元イメージにレンダリングするために、三次元グラフィックス・パイプラインを遂行するように具現されたハードウェアでもある。例えば、ＧＰＵ  １０は、シェーディング、ブレンディング、イルミネーティングのような多様な機能、及びディスプレイされるピクセルに対するピクセル値を生成するための多様な機能を遂行することもできる。
【００５６】
ＧＰＵ  １０は、タイル基盤（tile-based）グラフィックス・パイプライン、またはタイル基盤レンダリング（ＴＢＲ：tile-based  rendering）を遂行することができる。タイル基盤（又はタイルに基づく）という用語は、動画の各フレームを、複数のタイルに区分した（divide；partitioning）後、タイル単位で（per  tile）レンダリングを行うことを意味する。タイル基盤のアーキテクチャは、ピクセル単位でフレームを処理するときより演算量が少なくもなるために、スマートフォン、タブレットデバイスのように、比較的処理性能が低いモバイルデバイス（または、エンベデッドデバイス）で使用するグラフィックスレンダリング方法でもある。
【００５７】
図１を参照すれば、ＧＰＵ  １０は、ビニング・パイプライン（binning  pipeline）１０１及びレンダリング・パイプライン（rendering  pipeline）１０２を含むグラフィックス・パイプラインを遂行することができる。ビニング・パイプライン１０１は、二次元客体または三次元客体を構成する（make  up）バーテックス（vertices）、プリミティブ（primitives）またはパッチ（patches）がどのタイルに含まれるかということを示すタイルリストを生成するプロセスである。そのような理由により、ビニング・パイプライン１０１は、タイリング・パイプライン（tiling  pipeline）、ビニングフェーズ（binning  phase）の用語のように、他の用語にも代替可能である。レンダリング・パイプライン１０２は、ビニング・パイプライン１０１で生成されたタイルリストに基づいて、タイル単位で、客体をレンダリングするプロセスである。本願における「客体」は「対象」又は「オブジェクト」等のように言及されてもよい。レンダリング・パイプライン１０２が完了すれば、二次元ディスプレイ画面上に表示される二次元客体または三次元客体のピクセル表現が決定される。レンダリング・パイプライン１０２は、レンダリングフェーズ（rendering  phase）の用語のように、他の用語にも代替可能である。
【００５８】
ビニング・パイプライン１０１及びレンダリング・パイプライン１０２それぞれは、テッセレーション・パイプライン（tessellation  pipeline）を含んでもよい。すなわち、ＧＰＵ  １０は、ディファードテッセレーション（deferred  tessellation）を遂行することができる。MicroSoft社のDirectＸ１１（ＤＸ１１）ＡＰＩ、OpenＧＬ  ４．０  ＡＰＩなどを含んだ一部のグラフィックス・パイプラインは、グラフィックスプリミティブ（または、グラフィックスパッチ）のテッセレーションのためのさらなるプロセッシングステージを含む。テッセレーションは、グラフィックスパッチをさらに小さいグラフィックスプリミティブに分割し、さらに微細なディテールを有するイメージのディスプレイを可能にするプロセスである。コンピューティング装置１のＧＰＵ  １０で駆動されるビニング・パイプライン１０１及びレンダリング・パイプライン１０２を含むグラフィックス・パイプラインは、そのようなテッセレーションを支援することができる。一方、本明細書で、以下で説明される実施形態は、ＧＰＵ  １０によって駆動される。
【００５９】
メモリ３０は、コンピューティング装置１内で処理される各種データを保存するハードウェアであり、例えば、メモリ３０は、ＧＰＵ  １０及びＣＰＵ  ２０で処理されたデータ及び処理されるデータを保存することができる。また、メモリ３０は、ＧＰＵ  １０及びＣＰＵ  ２０によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ３０は、ＤＲＡＭ（dynamic  random  access  memory）・ＳＲＡＭ（static  random  access  memory）のようなＲＡＭ（random  access  memory）、ＲＯＭ（read-only  memory）、ＥＥＰＲＯＭ（electrically  erasable  and  programmable  read  only  memory）、ＣＤ（compact  disc）−ＲＯＭ、ブルーレイ、他の光学ディスクストレージ、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid  state  drive）またはフラッシュメモリを含み、さらに、コンピューティング装置１にアクセスされる外部の他のストレージデバイスを含んでもよい。
【００６０】
バス４０は、コンピューティング装置１内のハードウェア間で、データを送受信することができるように、ハードウェアを連結させるハードウェアであって、バス４０は、例えば、ＰＣＩ  bus、ＰＣＩ  Express  busのような多様な種類を含んでもよい。
【００６１】
一方、本明細書で言及されるビニング・パイプライン１０１は、以下の実施形態で説明されるビニング・パイプライン１０１−１，１０１−２，１０１−３または１０１−４を含むものであり、ビニング・パイプライン１０１−１，１０１−２，１０１−３または１０１−４のうちいずれか一つに該当する。また、本明細書で言及されるレンダリング・パイプライン１０２は、以下の実施形態で説明されるレンダリング・パイプライン１０２−１，１０２−２，１０２−３または１０２−４を含むものであり、レンダリング・パイプライン１０２−１，１０２−２，１０２−３または１０２−４のうちいずれか一つに該当する。
【００６２】
図２は、タイル基盤レンダリング（ＴＢＲ）について説明するための図面である。
【００６３】
図２を参照すれば、自動車客体２２０は、ある動画でのある１フレームに該当すると仮定する。図１のＧＰＵ  １０は、三次元自動車客体２２０が含まれた１フレームを、ＮｘＭ（Ｎ、Ｍは自然数）タイル２１０に分割する。ここで、三次元自動車客体２２０が含まれたフレームをタイル２１０に分割し、どのタイル２１０に三次元自動車客体２２０が存在するかということを判断するのは、図１のビニング・パイプライン１０１によって遂行される。その後、図１のＧＰＵ  １０は、タイル単位で、タイル２１０に含まれた三次元自動車客体２２０をレンダリングし、ピクセル表現に変換する。ここで、タイル単位で、三次元自動車客体２２０をレンダリングし、ピクセル表現に変換することは、図１のレンダリング・パイプライン１０２によって遂行される。そのように、１フレームに含まれた三次元自動車客体２２０を、ピクセル単位でレンダリングするのではない、タイル２１０を利用してレンダリングすることを、タイル基盤レンダリング（ＴＢＲ）という。
【００６４】
図３ないし図５は、テッセレーション・パイプラインについて説明するための図面である。以下では、図３ないし図５を連繋させて説明する。前述のように、図３ないし図５で説明するテッセレーション・パイプライン３００は、図１のビニング・パイプライン１０１及びレンダリング・パイプライン１０２それぞれに、そのまま適用されて含まれるか、あるいは若干変形されて適用される。
【００６５】
図３を参照すれば、テッセレーション・パイプライン３００は、ハルシェーダ（hull  shader）１２１、テッセレータ（tessellator）１２３及びドメインシェーダ（domain  shader）１２５によって遂行される。すなわち、本明細書で説明するテッセレーション・パイプライン３００の用語は、ハルシェーダ１２１によるハルシェーディング、テッセレータ１２３によるテッセレーティング、及びドメインシェーダ１２５によるドメインシェーディングのプロセス（または、ステージ）のうち一つ以上のステージを含むと定義される。
【００６６】
ハルシェーダ１２１は、低次数（low  order）の表面を表現する入力コントロールポイント（input  control  points）を、パッチを構成する（make  up）出力コントロールポイント（output  control  points）に変換する。例えば、ハルシェーダ１２１は、入力コントロールポイントを変換し、図４に図示されたコントロールポイントＰ００，Ｐ０１，Ｐ０２，Ｐ０３，Ｐ１０，Ｐ１１，Ｐ１２，Ｐ１３，Ｐ２０，Ｐ２１，Ｐ２２，Ｐ２３，Ｐ３０，Ｐ３１，Ｐ３２及びＰ３３によって構成されたメッシュ（mesh）のパッチ４１０を生成することができる。ここで、該パッチは、三角形、四角形、等値線（isoline）のようなポリゴン形態を有することもできる。
【００６７】
ハルシェーダ１２１は、パッチを構成する出力コントロールポイントを生成すると同時に、テッセレーションファクタ（ＴＦ：tessellation  factor、ＴＦ）（または、テッセレーションレベル（ＴＬ：tessellation  level）を決定することができる。テッセレーションファクタ（ＴＦ）またはテッセレーションレベル（ＴＬ）は、パッチをどの程度分割（partition）するか、またはパッチをいかに分割するかということを示すインデックスである。図５に図示されたテーブル５００は、テッセレーションファクタ（ＴＦ）と、分割される三角形の個数との関係を定義したテーブルである。テーブル５００によれば、テッセレーションファクタ（ＴＦ）が１である場合、三角形の個数が１であるので、パッチに対するテッセレーションは行われない。しかし、テッセレーションファクタ（ＴＦ）が増加するほど、三角形の個数は幾何級数的に増加する。言い換えれば、テッセレーションファクタ（ＴＦ）が増加するほど、分割される三角形の個数が多くなるということは、ＧＰＵ  １０において、あるパッチに対して、処理されなければならない演算量が増加するということを意味する。ただし、テッセレーションファクタ（ＴＦ）が増加すればするほど、客体のパッチに対するさらにスムーズな表現は可能である。一方、図５のテーブル５００では、分割されるポリゴンが三角形である場合を例として挙げたが、それに制限されるものではなく、該パッチは、四角形、等値線などの他のポリゴンに分割されてもよい。
【００６８】
ハルシェーダ１２１は、出力パッチの出力コントロールポイント及びテッセレーションファクタ（ＴＦ）に係わる情報を、テッセレータ１２３及びドメインシェーダ１２５に伝達する。
【００６９】
テッセレータ１２３は、ハルシェーダ１２１から受信されたテッセレーションファクタ（ＴＦ）を利用して、出力コントロールポイントに対する重心座標系（barycentric  coordinates）でのｕｖｗ座標及び加重値を計算する。
【００７０】
ドメインシェーダ１２５は、ハルシェーダ１２１から受信された出力パッチの出力コントロールポイント及びテッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標は、オプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（tessellated  vertices）を生成する。図４を参照すれば、テッセレーティングされたバーテックスの位置は、境界４２０を形成する（make  up）。すなわち、パッチ４１０は、テッセレーション・パイプラインが遂行されることにより、さらにスムーズになった境界４２０上のバーテックス（または、プリミティブ）に変換される。
【００７１】
図６は、一実施形態による、図１のＧＰＵの詳細ハードウェア構造を図示したブロック図である。
【００７２】
図６を参照すれば、ＧＰＵ  １０は、グラフィックス・パイプライン１００を遂行する入力アセンブラ（input  assembler）１１０、バーテックスシェーダ（vertex  shader）１１５、ハルシェーダ１２１、テッセレータ１２３、ドメインシェーダ１２５、ジオメトリシェーダ（geometry  shader）１３０、ビナ（binner）１３５、ラスタライザ（rasterizer）１４０、ピクセルシェーダ（pixel  shader）１５０及び出力マージャ（output  merger）１６０を含んでもよい。また、ＧＰＵ  １０は、コントローラ１７０及びバッファ１８０をさらに含んでもよい。一方、ＧＰＵ  １０内で、グラフィックス・パイプライン１００を遂行する前述の構成は、以下で説明する機能に基づいて分類されたものでもある。従って、グラフィックス・パイプライン１００を遂行する前述の構成それぞれは、以下で説明する機能それぞれを実行させるプログラムロジックまたはソフトウェアモジュールで具現される。それと異なり、グラフィックス・パイプライン１００を遂行する前述の構成は、ＧＰＵ  １０内に具備されたサブ（sub）プロセッシングユニット（または、プロセッサコア）それぞれによって具現されもする。すなわち、グラフィックス・パイプライン１００を遂行する前述の構成の具現形態は、いずれか一つによって制限されるものではない。さらに、グラフィックス・パイプライン１００を遂行する前述の構成の名称は、以下で説明する機能に基づいて付与されたものでもあるが、そのような名称が多様に変更されるということは、当該技術分野の当業者であるならば、理解することができるであろう。例えば、一具現形態によって、ビナ１３５とコントローラ１７０は、別個の構成でもあるか、あるいは他の具現形態によって、ビナ１３５がコントローラ１７０に含まれるように具現されることにより、別途のビナ１３５なしに、コントローラ１７０だけが存在することもある。
【００７３】
一方、本明細書によれば、ＧＰＵ  １０でグラフィックス・パイプライン１００を遂行する構成の名称は、説明の便宜のために、Microsoft社のDirect  Ｘ１１（ＤＸ１１）に定義された名称を使用したが、その構成の名称は、それに制限されるものではない。すなわち、ＧＰＵ  １０でグラフィックス・パイプライン１００を遂行する構成は、OpenＧＬ（Open  Graphics  Library）４．０、ＣＵＤＡ（Compute  Unified  Device  Architecture）６．０のような他のＡＰＩで定義された類似した構成にも対応する。例えば、ドメインシェーダ１２５は、OpenＧＬ４．０で使用されるテッセレーションエバリュエーションシェーダ（tessellation  evaluation  shader）にも対応し、ＧＰＵ  １０内の他の構成も同様に、OpenＧＬ  ４．０またはＣＵＤＡ６．０のような他のＡＰＩで使用される構成にも対応するということは、当該技術分野の当業者であるならば、理解することができるであろう。
【００７４】
入力アセンブラ１１０は、メモリ３０（図１）に保存された客体に係わるバーテックスのデータを、グラフィックス・パイプライン１００に供給する。グラフィックス・パイプライン１００に供給されたバーテックスは、メッシュ（mesh）または表面（surface）の表現であるパッチに係わるものでもあるが、それに制限されるものではない。
【００７５】
バーテックスシェーダ１１５は、入力アセンブラ１１０によって供給されたバーテックスをハルシェーダ１２１の入力コントロールポイントとして伝達する。DirectＸ９（ＤＸ９）で定義されたバーテックスシェーディングは、バーテックスに係わるワールド・ビュー・プロジェクション（world-view-projection）を遂行した。しかし、それとは異なり、テッセレーション・パイプラインが導入したDirectＸ１１（ＤＸ１１）で定義されたバーテックスシェーディングは、バーテックスに係わるワールド・ビュー・プロジェクションを遂行せず、ただバーテックスを次のステージに伝達してだけである。本実施形態において、バーテックスシェーダ１１５は、それと類似して動作することができる。すなわち、バーテックスシェーダ１１５は、入力アセンブラ１１０によって供給されたバーテックスに対応する入力コントロールポイントのみハルシェーダ１２１に伝達するだけであり、新たなコントロールポイントを生成しない。
【００７６】
ハルシェーダ１２１、テッセレータ１２３及びドメインシェーダ１２５は、先に図３で説明したテッセレーション・パイプライン３００を遂行することができる。すなわち、ハルシェーダ１２１に入力された入力コントロールポイントは、ドメインシェーダ１２５から、出力パッチ（output  patch）に係わるテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）として出力される。
【００７７】
ジオメトリシェーダ１３０は、ドメインシェーダ１２５から受信されたテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）から、さらなるバーテックス（または、プリミティブ）を生成するためにも使用されるオプション的な構成要素である。
【００７８】
ビナ１３５は、ドメインシェーダ１２５またはジオメトリシェーダ１３０からの出力プリミティブを利用して、ビニングまたはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）を遂行し、出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを生成（ビニング）する。一方、他の実施形態により、ビナ１３５は、コントローラ１７０に含まれた構成でもある。
【００７９】
ラスタライザ１４０は、生成されたタイルリストに基づいて、ドメインシェーダ１２５またはジオメトリシェーダ１３０からの出力プリミティブを、二次元空間でのピクセル値に変換する。ピクセルシェーダ１５０は、デプステスト、クリッピング（clipping）、シザリング（scissoring）、ブレンディングのような追加動作を、ピクセルに対して遂行することもできる。ピクセルシェーダ１５０のピクセルシェーディング結果は、出力マージャ１６０によって、バッファ１８０に保存された後、動画のフレームとしてディスプレイされる。
【００８０】
コントローラ１７０は、グラフィックス・パイプライン１００の各構成要素（入力アセンブラ１１０、バーテックスシェーダ１１５、ハルシェーダ１２１、テッセレータ１２３、ドメインシェーダ１２５、ジオメトリシェーダ１３０、ビナ１３５、ラスタライザ１４０、ピクセルシェーダ１５０及び出力マージャ１６０）及びバッファ１８０の全般的な機能及び動作を制御する。一方、コントローラ１７０は、図７で説明するグラフィックス・パイプライン１００のモードを制御することができる。
【００８１】
図７は、一実施形態によってＧＰＵで遂行することができる多種のグラフィックス・パイプラインを選択することについて説明するための図面である。
【００８２】
図７を参照すれば、MODE（１）ないしMODE（８）のグラフィックス・パイプラインは、以下の図面で説明する実施形態であり、コントローラ１７０は、それらのうち１つのパイプラインがＧＰＵ  １０で遂行されるように制御することができる。
【００８３】
さらに詳細に説明すれば、コントローラ１７０は、MODE（１）ないしMODE（８）のグラフィックス・パイプラインに係わる効率モード（efficiency  mode）をオフにするか（turn  OFF）、あるいはオンにする（turn  ON）。効率モードのON／OFFは、コンピューティング装置１のユーザによって設定されるか、あるいはグラフィックス・パイプラインによって処理される動画の処理環境（例えば、解像度、容量、コンピューティング装置１の性能など）に依存する。
【００８４】
効率モードがオフになった場合、コントローラ１７０は、一般的なグラフィックス・パイプライン１０９を遂行することができる。ここで、一般的なグラフィックス・パイプライン１０９は、公知の従来のグラフィックス・パイプラインであり、例えば、DirectＸ９（ＤＸ９）、DirectＸ１０（ＤＸ１０）、DirectＸ１１（ＤＸ１１）、ＣＵＤＡ  ６．０、OpenＧＬ  ４．０などでもある。
【００８５】
効率モードがオンになったON場合、コントローラ１７０は、MODE（１）ないしMODE（８）のグラフィックス・パイプラインのうちいずれか一つを遂行することができる。MODE（１）ないしMODE（８）のうちいずれか１つの選択は、コンピューティング装置１のユーザによって設定されるか、あるいはグラフィックス・パイプラインによって処理される動画の処理環境（例えば、タイルサイズ、解像度、容量、コンピューティング装置１の性能など）に依存する。MODE（１）の場合、コントローラ１７０は、ビニング・パイプライン１０１−１及びレンダリング・パイプライン１０２−１を含んだグラフィックス・パイプラインが、ＧＰＵ  １０で遂行されるように制御し、MODE（２）の場合、コントローラ１７０は、ビニング・パイプライン１０１−２及びレンダリング・パイプライン１０２−１を含んだグラフィックス・パイプラインが、ＧＰＵ  １０で遂行されるように制御し、MODE（３）の場合、コントローラ１７０は、ビニング・パイプライン１０１−３及びレンダリング・パイプライン１０２−１を含んだグラフィックス・パイプラインが、ＧＰＵ  １０で遂行されるように制御し、MODE（４）の場合、コントローラ１７０は、ビニング・パイプライン１０１−４及びレンダリング・パイプライン１０２−１を含んだグラフィックス・パイプラインが、ＧＰＵ  １０で遂行されるように制御し、MODE（５）の場合、コントローラ１７０は、ビニング・パイプライン１０１−３及びレンダリング・パイプライン１０２−２を含んだグラフィックス・パイプラインが、ＧＰＵ  １０で遂行されるように制御し、MODE（６）の場合、コントローラ１７０は、ビニング・パイプライン１０１−４及びレンダリング・パイプライン１０２−２を含んだグラフィックス・パイプラインが、ＧＰＵ  １０で遂行されるように制御し、MODE（７）の場合、コントローラ１７０は、ビニング・パイプライン１０１−３、第１レンダリング・パイプライン１０２−３及び第２レンダリング・パイプライン１０２−４を含んだグラフィックス・パイプラインが、ＧＰＵ  １０で遂行されるように制御し、MODE（８）の場合、コントローラ１７０は、ビニング・パイプライン１０１−４、第１レンダリング・パイプライン１０２−３及び第２レンダリング・パイプライン１０２−４を含んだグラフィックス・パイプラインが、ＧＰＵ  １０で遂行されるように制御することができる。以下では、MODE（１）ないしMODE（８）それぞれのグラフィックス・パイプラインに係わる実施形態について、さらに詳細に説明する。
【００８６】
図８Ａ及び図８Ｂは、一実施形態による三次元客体を分割するための、タイルの個数と、グラフィックス処理性能（または、効率）との関係について説明するための図面である。
【００８７】
図８Ａを参照すれば、三次元客体８１５を、１０ｘ１０のタイル８１０に分割した場合を示し、図８Ｂを参照すれば、三次元客体８１５を、２ｘ２のタイル８２０に分割した場合を示す。ＧＰＵ  １０は、タイル単位で、タイル基盤レンダリングまたはタイル基盤グラフィックス・パイプラインを遂行するために、図８Ａに図示された三次元客体８１５に対するレンダリングは、１００個のタイルに対して遂行される。それとは異なり、図８Ｂに図示された三次元客体８１５に対するレンダリングは、ただ４個のタイルに対してのみ遂行される。図８Ａに図示されたタイル８１０のうちでは、１／３ほどだけが三次元客体８１５にオーバーラップされるために、残りの２／３ほどのタイル８１０については、レンダリングがスキップされるであろうが、結局は、１００個のタイル８１０それぞれに対するビニング（または、タイリング）は、先行されるしかないということは言うまでもない。それに比して、図８Ｂに図示された４個のタイル８２０それぞれは、いずれも三次元客体８１５にオーバーラップされるから、４個のタイル８２０それぞれに対する並列的なグラフィックスプロセスが遂行される。
【００８８】
一方、現在多くのＧＰＵは、ＳＩＭＴ（single  instruction  multiple  thread）アーキテクチャによって製造されている実情である。ＳＩＭＴアーキテクチャは、１つのプログラムで多くのデータを処理するためのＳＰＭＤ（single  program  multiple  data）プロセッサを具現する方式のうち一つである。ＳＩＭＴアーキテクチャは、さらに小さいコントロール・ハードウェアを使用して、多量のデータを処理することは可能であるが、スレッド（threads）それぞれの流れが分岐されること（thread  divergence）を処理し難く、処理効率が低くなるという問題が起こる。
【００８９】
前述の図８Ａ及び図８Ｂを比較すれば、ＳＩＭＴアーキテクチャは、図８Ａの１００個のタイル８１０に対して、１００個のスレッドを生成して処理してこそ作業を完了することができるが、それとは異なり、ＳＩＭＴアーキテクチャは、図８Ｂの４個のタイル８２０については、さらに少ないただ４個のスレッドのみを生成して処理すれば、作業を完了することができる。図８Ａでの１つのタイルの大きさ、及び１つのタイルに含まれた客体の大きさは、図８Ｂと比較して小さいために、処理されなければならないグラフィックデータは、図８Ａの場合、さらに小さくてよい。しかし、スレッド複雑度（thread  divergence）がはるかに増大するために、図８Ａのように、多くのタイル８１０で三次元客体８１５を分割することが、必ずしも図８Ｂの場合より有利であるといは言えない。そのような理由のために、ＳＩＭＴアーキテクチャで具現された最近のＧＰＵは、大きいタイルサイズ（big  tile  size）を適用する実情である。
【００９０】
図９は、一実施形態による、出力パッチの出力コントロールポイントと、テッセレーティングされたプリミティブとの関係について説明するための図面である。
【００９１】
先に図８Ａ及び図８Ｂで説明したように、ＧＰＵ  １０が大きいタイルサイズを利用する場合、タイルサイズが大きくなるにつれ、三次元客体のあるパッチ４１０がいずれか１つのタイル（tile０）９０１に含まれる確率が上昇する。ビニング・パイプライン１０１（図１）においてテッセレーション・パイプラインは、出力パッチ４１０（出力コントロールポイント４１５）をテッセレーティングし、さらに多くの個数のテッセレーティングされたプリミティブ４２５を生成（produce）し、テッセレーティングされたプリミティブ４２５に対するビニング（または、タイリング）を行う。そのとき、図９に図示されているように、１つのタイル９０１内に含まれた出力パッチ４１０（出力コントロールポイント４１５）が、テッセレーション・パイプラインによって処理されるとしても、テッセレーティングされたプリミティブ４２５が形成する（form）境界（boundary）４２０は、出力パッチ４１０が形成する境界（boundary）と同様に、１つのタイル９０２内に位置することができる。なぜならは、テッセレーティングされたプリミティブ４２５が形成する境界４２０は、出力パッチ４１０が形成する境界内に位置するように、ＧＰＵ  １０のグラフィックス・パイプラインがプログラミングされるからである。また、そうではない場合には、コンパイラ（compiler）によってデバッギング（debugging）される。
【００９２】
従って、出力パッチ４１０（出力コントロールポイント４１５）に対するビニング（または、タイリング）の結果は、タイル（tile０）９０１であり、テッセレーティングされたプリミティブ４２５に対するビニングの結果であるタイル（tile０）９０２と同一である。それにより、ビニング・パイプライン１０１（図１）のテッセレーション・パイプラインにおいて、テッセレータ１２３（図６）によるテッセレーションがスキップされるとしても、最終的なビニング・パイプライン１０１（図１）の結果は、テッセレータ１２３（図６）によるテッセレーションがスキップされない場合と同一であると仮定することができる。
【００９３】
一方、出力パッチ４１０（出力コントロールポイント４１５）に対するテッセレーションファクタ（ＴＦ）（または、テッセレーションレベル（ＴＬ））についても、前述の仮定が成立する。例えば、低いテッセレーションファクタ（例えば、ＴＦ＝３）によって生成されたテッセレーティングされたプリミティブが形成する境界は、高いテッセレーションファクタ（例えば、ＴＦ＝１３）によって生成されたテッセレーティングされたプリミティブが形成する境界内に含まれもする。従って、ビニング・パイプライン１０１（図１）のテッセレーション・パイプラインにおいて、ハルシェーダ１２１（図６）によって決定されたテッセレーションファクタ（例えば、ＴＦ＝１３）ではない、さらに低いテッセレーションファクタ（例えば、ＴＦ＝３）を新たに設定し、テッセレーション・パイプラインを遂行するとしても、ハルシェーダ１２１（図６）によって決定されたテッセレーションファクタ（例えば、ＴＦ＝１３）を利用した場合、及び新たに設定された、さらに低いテッセレーションファクタ（例えば、ＴＦ＝３）を利用した場合のビニング（または、タイリング）結果は同一であると仮定することができる。
【００９４】
一方、ＧＰＵ  １０で駆動されるグラフィックス・パイプラインを設計して検査するコンパイラは、図９で説明した仮定のように動作しないグラフィックス・パイプラインが設計（または、プログラミング）された場合、それをデバッギングし、図９で説明した仮定のように動作するようにコンパイリングすることができる。
【００９５】
以下の図１０ないし図２１で説明する実施形態は、前述の仮定を前提として動作するが、それらに制限されるものではない。
【００９６】
図１０は、一実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【００９７】
図１０を参照すれば、ビニング・パイプライン１０１−１及びレンダリング・パイプライン１０２−１を含むグラフィックス・パイプラインは、図７で説明したMODE（１）に対応する。一方、図１０に図示されたグラフィックス・パイプラインについては、図６で説明したＧＰＵ  １０のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図１０で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【００９８】
バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１００１を利用して、バーテックスシェーディング１０１１を行う。バーテックスシェーダ１１５は、バーテックス１００１を変換し、ハルシェーダ１２１に入力コントロールポイントとして伝達する。
【００９９】
ハルシェーダ１２１は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング１０１２を行う。ハルシェーダ１２１は、パッチを構成する出力コントロールポイントを生成すると同時に、テッセレーションファクタ（ＴＦ）を決定することができる。ハルシェーダ１２１は、出力パッチの出力コントロールポイントに係わる情報を、ジオメトリシェーダ１３０またはビナ１３５に伝達する。
【０１００】
図３で説明したように、一般的なテッセレーション・パイプライン３００（図３）は、ハルシェーダ１２１、テッセレータ１２３及びドメインシェーダ１２５のステージをいずれも含んでいるが、図１０によれば、テッセレータ１２３及びドメインシェーダ１２５のステージはスキップされる。その理由は、先に図９で説明した仮定のように、パッチ４１０（図９）のビニング結果と、テッセレーティングされたプリミティブ４２５のビニング結果は、同一でもあるからである。
【０１０１】
ジオメトリシェーダ１３０は、ハルシェーダ１２１から出力された出力パッチの出力コントロールポイント以外に、さらなるバーテックス（または、プリミティブ）を生成するジオメトリシェーディング１０１３を遂行するためのオプション的な構成要素である。従って、ジオメトリシェーディング１０１３は、スキップされもする。
【０１０２】
ジオメトリシェーディング１０１３がスキップされた場合、ビナ１３５は、ハルシェーダ１２１から出力された出力パッチの出力プリミティブを利用して、ビニング１０１４またはタイリングを行う。もしジオメトリシェーディング１０１３が行われた場合、ビナ１３５は、ジオメトリシェーダ１３０から出力された出力パッチの出力プリミティブを利用して、ビニング１０１４またはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを予測するビニング１０１４を行う。そのとき、ビニングされたタイルリストは、可視性ストリーム（visibility  stream）として、メモリ３０のビンストリーム（bin  stream）１００２に保存される。可視性ストリームは、入力パッチ（または、入力コントロールポイント、入力プリミティブ）または出力パッチ（または、出力コントロールポイント、出力プリミティブ）がタイルで見えるか否かということを示すストリームでもある。入力パッチ（または、入力コントロールポイント、入力プリミティブ）に係わる可視性ストリームは、入力可視性ストリーム（input  visibility  stream）であり、出力パッチ（または、出力コントロールポイント、出力プリミティブ）に係わる可視性ストリームは、出力可視性ストリーム（output  visibility  stream）であると定義される。
【０１０３】
ビナ１３５は、ビニング１０１４の結果、ハルシェーダ１２１から出力された出力パッチの出力プリミティブが、１つのタイルに含まれるか否かということを判断する。出力パッチが１つのタイルに含まれる場合、ビナ１３５は、PASS（１）により、出力パッチが１つのタイルに含まれるという情報を示す可視性ストリームをビンストリーム１００２に保存する。それにより、１出力パッチに対するビニング・パイプライン１０１−１が完了する。すなわち、PASS（１）によれば、テッセレータ１２３のテッセレーティング１０１５、及びドメインシェーダ１２５のドメインシェーディング１０１６がスキップされる。
【０１０４】
しかし、出力パッチが１つのタイルに含まれない場合、ビナ１３５は、PASS（２）により、出力パッチに対するテッセレータ１２３のテッセレーティング１０１５、及びドメインシェーダ１２５のドメインシェーディング１０１６が行われるように制御する。すなわち、PASS（２）は、ビニング１０１４の結果、出力パッチが１つのタイルに含まれない場合にのみ進められる。
【０１０５】
テッセレータ１２３は、ハルシェーダ１２１から受信されたテッセレーションファクタ（ＴＦ）を利用して、出力コントロールポイントに対する重心座標系でのｕｖｗ座標及び加重値を計算するテッセレーティング１０１５を行う。
【０１０６】
ドメインシェーダ１２５は、ハルシェーダ１２１から受信された出力パッチの出力コントロールポイント及びテッセレーションファクタに係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング１０１６を行う。
【０１０７】
ジオメトリシェーダ１３０は、ドメインシェーダ１２５から受信されたテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）から、さらなるバーテックス（または、プリミティブ）を生成するジオメトリシェーディング１０１７を行うために使用されるオプション的な構成要素である。従って、PASS（２）でも、ジオメトリシェーディング１０１７は、スキップされもする。
【０１０８】
ビナ１３５は、PASS（２）により、ドメインシェーダ１２５またはジオメトリシェーダ１３０から出力されたテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング１０１８またはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、テッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）それぞれが属したタイルの情報を示すタイルリストを予測するビニング１０１８を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ３０のビンストリーム１００２に保存される。
【０１０９】
ＧＰＵ  １０は、ビニング・パイプライン１０１−１が完了した場合、タイル単位で、レンダリング・パイプライン１０２−１を遂行する。レンダリング・パイプライン１０２−１は、先に図６で説明したグラフィックス・パイプライン１００の入力アセンブラ１１０、バーテックスシェーダ１１５、ハルシェーダ１２１、テッセレータ１２３、ドメインシェーダ１２５、ジオメトリシェーダ１３０、ラスタライザ１４０、ピクセルシェーダ１５０及び出力マージャ１６０によるステージを遂行することを含んでもよい。
【０１１０】
以上で説明したMODE（１）による図１０のビニング・パイプライン１０１−１は、出力パッチが１タイルに含まれる場合、テッセレータ１２３によるテッセレーティング１０１５をスキップすることができるので、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成（produce）しない。従って、テッセレータ１２３によるテッセレーティング１０１５を必須に行わなければならない図３のテッセレーション・パイプライン３００（図３）と比較するとき、グラフィックデータの演算量をさらに減らすことができる。
【０１１１】
図１１は、一実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。図１１のフローチャートは、図１０で説明したMODE（１）による、ビニング・パイプライン１０１−１及びレンダリング・パイプライン１０２−１を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図１０で説明した内容は、図１１のフローチャートに適用される。
【０１１２】
１１０１段階において、バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１００１を利用して、バーテックスシェーディング１０１１を行う。
【０１１３】
１１０２段階において、ハルシェーダ１２１は、入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング１０１２を行う。ハルシェーダ１２１は、出力コントロールポイントを生成すると同時に、テッセレーションファクタ（ＴＦ）を決定することができる。ハルシェーダ１２１は、出力パッチの出力コントロールポイントに係わる情報をビナ１３５に伝達する。
【０１１４】
１１０３段階において、ビナ１３５は、出力パッチの出力プリミティブを利用して、ビニング１０１４またはタイリングを行う。
【０１１５】
１１０４段階において、ビナ１３５は、ビニング１０１４の結果、ハルシェーダ１２１から出力された出力パッチの出力プリミティブが１つのタイルに含まれるか否かということを判断する。もし出力パッチが１タイルに含まれる場合、１１０５段階に進む。しかし、出力パッチが１タイルに含まれない場合、１１０７段階に進む。
【０１１６】
１１０５段階において、ビニング１０１４の結果、出力パッチが１タイルに含まれる場合、ビナ１３５は、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを予測するビニング１０１４を行い、ビニングされたタイルリストに係わる可視性ストリームを、メモリ３０のビンストリーム１００２に保存する（PASS（１））。
【０１１７】
１１０６段階において、ラスタライザ１４０、ピクセルシェーダ１５０及び出力マージャ１６０は、レンダリング・パイプライン１０２−１を遂行する。そのとき、レンダリング・パイプライン１０２−１には、ビニング・パイプライン１０１−１と同様に、入力アセンブラ１１０、バーテックスシェーダ１１５、ハルシェーダ１２１、テッセレータ１２３、ドメインシェーダ１２５及びジオメトリシェーダ１３０によるステージが含まれてもよい。
【０１１８】
１１０７段階において、ビニング１０１４の結果、出力パッチが１タイルに含まれない場合、テッセレータ１２３は、ハルシェーダ１２１から受信されたテッセレーションファクタ（ＴＦ）を利用して、出力パッチの出力コントロールポイントに係わる重心座標系でのｕｖｗ座標及び加重値を計算するテッセレーティング１０１５を行う（PASS（２））。
【０１１９】
１１０８段階において、ドメインシェーダ１２５は、ハルシェーダ１２１から受信された出力パッチの出力コントロールポイント及びテッセレーションファクタに係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング１０１６を行う。
【０１２０】
１１０９段階において、ビナ１３５は、テッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング１０１８またはタイリングを行う。１１０９段階が完了した後、１１０５段階においてビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、テッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）それぞれが属したタイルの情報を示すタイルリストを予測するビニング１０１８を行い、ビニングされたタイルリストに係わる可視性ストリームをメモリ３０のビンストリーム１００２に保存する。
【０１２１】
図１２は、他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【０１２２】
図１２を参照すれば、ビニング・パイプライン１０１−２及びレンダリング・パイプライン１０２−１を含むグラフィックス・パイプラインは、図７で説明したMODE（２）に対応する。一方、図１２に図示されたグラフィックス・パイプラインについては、図６で説明したＧＰＵ  １０のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図１２で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【０１２３】
バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１２０１を利用して、バーテックスシェーディング１２１１を行う。バーテックスシェーダ１１５は、バーテックス１２０１を変換し、ハルシェーダ１２１に入力コントロールポイントとして伝達する。
【０１２４】
ハルシェーダ１２１は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング１２１２を行う。ハルシェーダ１２１は、パッチを構成する出力コントロールポイントを生成すると同時に、第１テッセレーションファクタ（ＴＦ）を決定することができる。
【０１２５】
テッセレータ１２３は、ハルシェーダ１２１から第１テッセレーションファクタ（ＴＦ）を受信し、第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を新たに設定する。そして、テッセレータ１２３は、新たに設定された第２テッセレーションファクタ（ＴＦ）を利用して、出力コントロールポイントに係わる重心座標系でのｕｖｗ座標及び加重値を計算するテッセレーティング１２１３を行う。
【０１２６】
図３で説明したように、一般的なテッセレーション・パイプライン３００（図３）においてテッセレータ１２３は、ハルシェーダ１２１によって決定されたテッセレーションファクタ（ＴＦ）をそのまま利用した。しかし、先に図９で説明した仮定のように、テッセレータ１２３が、ハルシェーダ１２１によって決定された第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を利用するとしても、ビニング結果は同一である。言い換えれば、テッセレーションファクタが低いほど、生成（produce）されるプリミティブ（三角形）の個数が少なくなるので、ＧＰＵ  １０の演算量は減り、ＧＰＵ  １０は、同一のビニング結果を獲得することができる。
【０１２７】
ドメインシェーダ１２５は、出力パッチの出力コントロールポイント及び第２テッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング１２１４を行う。
【０１２８】
ジオメトリシェーダ１３０は、ドメインシェーダ１２５から受信されたテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）から、さらなるバーテックス（または、プリミティブ）を生成するジオメトリシェーディング１２１５を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング１２１５は、スキップされもする。
【０１２９】
ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング１２１６またはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）それぞれが属したタイルの情報を示すタイルリストを予測するビニング１２１６を行う。
【０１３０】
ビナ１３５は、ビニング１２１６の結果、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれるか否かということを判断する。
【０１３１】
第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれる場合、ビナ１３５は、PASS（１）により、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれるという情報を示す可視性ストリームを、ビンストリーム１２０２に保存する。それにより、第２テッセレーションファクタ（ＴＦ）を利用したビニング・パイプライン１０１−２が完了する。すなわち、ハルシェーダ１２１によって決定された第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を利用して、ビニング・パイプライン１０１−２が完了したので、ＧＰＵ  １０は、さらに少ない演算量で、ビニング・パイプライン１０１−２を完了させることができる。
【０１３２】
第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれない場合、ビナ１３５は、PASS（２）により、テッセレーティング１２１７が行われるように制御する。
【０１３３】
PASS（２）によれば、テッセレータ１２３は、新たに設定された第２テッセレーションファクタ（ＴＦ）ではない、ハルシェーダ１２１によって本来決定された第１テッセレーションファクタ（ＴＦ）を利用して、出力コントロールポイントに係わる重心座標系でのｕｖｗ座標及び加重値を計算するテッセレーティング１２１７を行う。
【０１３４】
ドメインシェーダ１２５は、出力パッチの出力コントロールポイント及び第１テッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング１２１８を行う。
【０１３５】
ジオメトリシェーダ１３０は、ドメインシェーダ１２５から受信されたテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）から、さらなるバーテックス（または、プリミティブ）を生成するジオメトリシェーディング１２１９を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング１２１９は、スキップされもする。
【０１３６】
ビナ１３５は、第１テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング１２２０またはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、第１テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）それぞれが属したタイルの情報を示すタイルリストを予測するビニング１２２０を行う。そして、ビナ１３５は、テッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）に係わる可視性ストリームを、ビンストリーム１２０２に保存する。それにより、第１テッセレーションファクタ（ＴＦ）を利用したビニング・パイプライン１０１−２が完了する。
【０１３７】
ＧＰＵ  １０は、ビニング・パイプライン１０１−２が完了した場合、タイル単位でレンダリング・パイプライン１０２−１を遂行する。レンダリング・パイプライン１０２−１は、先に図６で説明したグラフィックス・パイプライン１００の入力アセンブラ１１０、バーテックスシェーダ１１５、ハルシェーダ１２１、テッセレータ１２３、ドメインシェーダ１２５、ジオメトリシェーダ１３０、ラスタライザ１４０、ピクセルシェーダ１５０及び出力マージャ１６０によるステージを遂行することを含んでもよい。
【０１３８】
以上で説明したMODE（２）による図１２のビニング・パイプライン１０１−２は、低いテッセレータファクタを利用して、テッセレータ１２３によるテッセレーティング１２１３を行うことができるので、さらに少ない個数のテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成（produce）することができる。従って、図３のテッセレーション・パイプライン３００（図３）と比較するとき、グラフィックデータの演算量をさらに減らすことができる。
【０１３９】
図１３は、他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。図１３のフローチャートは、図１２で説明したMODE（２）によるビニング・パイプライン１０１−２及びレンダリング・パイプライン１０２−１を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図１２で説明した内容は、図１３のフローチャートに適用される。
【０１４０】
１３０１段階において、バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１２０１を利用して、バーテックスシェーディング１２１１を行う。
【０１４１】
１３０２段階において、ハルシェーダ１２１は、入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング１２１２を行う。ハルシェーダ１２１は、出力コントロールポイントを生成すると同時に、第１テッセレーションファクタ（ＴＦ）を決定することができる。
【０１４２】
１３０３段階において、テッセレータ１２３は、ハルシェーダ１２１によって決定された第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を利用して、出力パッチの出力コントロールポイントに係わるテッセレーティング１２１３を行う。
【０１４３】
１３０４段階において、ドメインシェーダ１２５は、出力パッチの出力コントロールポイント及び第２テッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング１２１４を行う。
【０１４４】
１３０５段階において、ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング１２１６またはタイリングを行う。
【０１４５】
１３０６段階において、ビナ１３５は、ビニング１２１６の結果、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれるか否かということを判断する。もし第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれる場合、１３０７段階に進む。しかし、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１タイルに含まれない場合、１３０９段階に進む。
【０１４６】
１３０７段階において、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれる場合、ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれるという情報を示す可視性ストリームを、ビンストリーム１２０２に保存する。
【０１４７】
１３０８段階において、ラスタライザ１４０、ピクセルシェーダ１５０及び出力マージャ１６０は、レンダリング・パイプライン１０２−１を遂行する。そのとき、レンダリング・パイプライン１０２−１には、ビニング・パイプライン１０１−２と同様に、入力アセンブラ１１０、バーテックスシェーダ１１５、ハルシェーダ１２１、テッセレータ１２３、ドメインシェーダ１２５及びジオメトリシェーダ１３０によるステージが含まれてもよい。
【０１４８】
１３０９段階において、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルに含まれない場合、テッセレータ１２３は、新たに設定された第２テッセレーションファクタ（ＴＦ）ではない、ハルシェーダ１２１によって決定された第１テッセレーションファクタ（ＴＦ）を利用して、出力パッチの出力コントロールポイントに係わるテッセレーティング１２１７を行う。
【０１４９】
１３１０段階において、ドメインシェーダ１２５は、出力パッチの出力コントロールポイント及び第１テッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング１２１８を行う。
【０１５０】
１３１１段階において、ビナ１３５は、第１テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング１２２０またはタイリングを行う。１３１１段階が完了した後、１３０７段階においてビナ１３５は、テッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）に係わる可視性ストリームを、ビンストリーム１２０２に保存する。
【０１５１】
図１４は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【０１５２】
図１４を参照すれば、ビニング・パイプライン１０１−３及びレンダリング・パイプライン１０２−１を含むグラフィックス・パイプラインは、図７で説明したMODE（３）に対応する。一方、図１４に図示されたグラフィックス・パイプラインについては、図６で説明したＧＰＵ  １０のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図１４で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【０１５３】
バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１４０１を利用して、バーテックスシェーディング１４１１を行う。バーテックスシェーダ１１５は、バーテックス１４０１を変換し、ハルシェーダ１２１に入力コントロールポイントとして伝達する。
【０１５４】
ハルシェーダ１２１は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング１４１２を行う。ハルシェーダ１２１は、出力パッチの出力コントロールポイントに係わる情報をビナ１３５に伝達する。
【０１５５】
図３で説明したように、一般的なテッセレーション・パイプライン３００（図３）は、ハルシェーダ１２１、テッセレータ１２３及びドメインシェーダ１２５のステージをいずれも含んでいるが、図１４によれば、テッセレータ１２３及びドメインシェーダ１２５のステージはスキップされる。その理由は、先に図９で説明した仮定のように、パッチ４１０（図９）のビニング結果と、テッセレーティングされたプリミティブ４２５のビニング結果は、同一でもあるからである。もしビニング結果が同じではないとしても、レンダリング・パイプライン１０２−１において、カーリング（curling）、クリッピング（clipping）、ＨＳＲ（hidden  surface  removal）などのステージが遂行されるために、最終的なピクセレンダリング結果は同一である。
【０１５６】
ビナ１３５は、ハルシェーダ１２１から出力された出力パッチの出力プリミティブを利用して、ビニング１４１３またはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを予測するビニング１４１３を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ３０のビンストリーム（１４０２）に保存される。
【０１５７】
図１０ないし図１３で説明した実施形態と異なり、ビナ１３５は、ビニング１４１３の結果、ハルシェーダ１２１から出力された出力パッチの出力プリミティブが、１つのタイルに含まれるか否かということを判断しない。すなわち、出力パッチの出力プリミティブは、１つのタイルまたは多くのタイルに含まれてもよい。
【０１５８】
ＧＰＵ  １０は、ビニング・パイプライン１０１−３が完了した場合、タイル単位でレンダリング・パイプライン１０２−１を遂行する。レンダリング・パイプライン１０２−１は、バーテックスシェーダ１１５によるバーテックスシェーディング１４２１、ハルシェーダ１２１によるハルシェーディング１４２２、テッセレータ１２３によるテッセレーティング１４２３、ドメインシェーダ１２５によるドメインシェーディング１４２４、ジオメトリシェーダ１３０によるオプション的なジオメトリシェーディング１４２５、ラスタライザ１４０によるラスタライジング１４２６、ピクセルシェーダ１５０によるピクセルシェーディング１４２７のステージを含んでもよい。ピクセルシェーダ１５０によるピクセルシェーディング１４２７の結果は、バッファ１４０３に保存される。
【０１５９】
以上で説明したMODE（３）による図１４のグラフィックス・パイプラインは、ビニング・パイプライン１０１−３において、テッセレータ１２３によるテッセレーティングをスキップすることができるので、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成（produce）しない。従って、テッセレータ１２３によるテッセレーティングを必須に行わなければならない図３のテッセレーション・パイプライン３００（図３）と比較するとき、グラフィックデータの演算量をさらに減らすことができる。
【０１６０】
図１５は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。図１５のフローチャートは、図１４で説明したMODE（３）によるビニング・パイプライン１０１−３及びレンダリング・パイプライン１０２−１を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図１４で説明した内容は、図１５のフローチャートに適用される。
【０１６１】
１５１１段階ないし１５１４段階を含むパイプライン１５１０は、ビニング・パイプライン１０１−３に対応し、１５２１段階を含むパイプライン１５２０は、レンダリング・パイプライン１０２−１に対応する。
【０１６２】
１５１１段階において、バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１４０１を利用して、バーテックスシェーディング１４１１を行う。
【０１６３】
１５１２段階において、ハルシェーダ１２１は、入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング１４１２を行う。
【０１６４】
１５１３段階において、ビナ１３５は、出力パッチの出力コントロールポイントに係わるビニング１４１３またはタイリングを行う。
【０１６５】
１５１４段階において、ビナ１３５は、ビニング１４１３の結果、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを、可視性ストリームとして、メモリ３０のビンストリーム１４０２に保存する。図１０ないし図１３で説明した実施形態と異なり、ビナ１３５は、ハルシェーダ１２１から出力された出力パッチの出力プリミティブが、１つのタイルに含まれるか否かということを判断しない。すなわち、出力パッチの出力プリミティブは、１つのタイルまたは多くのタイルに含まれてもよい。
【０１６６】
１５２１段階において、ＧＰＵ  １０は、タイル単位でレンダリング・パイプライン１０２−１を遂行する。レンダリング・パイプライン１０２−１は、バーテックスシェーダ１１５によるバーテックスシェーディング１４２１、ハルシェーダ１２１によるハルシェーディング１４２２、テッセレータ１２３によるテッセレーティング１４２３、ドメインシェーダ１２５によるドメインシェーディング１４２４、ジオメトリシェーダ１３０によるオプション的なジオメトリシェーディング１４２５、ラスタライザ１４０によるラスタライジング１４２６、ピクセルシェーダ１５０によるピクセルシェーディング１４２７のステージを含んでもよい。
【０１６７】
図１６は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【０１６８】
図１６を参照すれば、ビニング・パイプライン１０１−４及びレンダリング・パイプライン１０２−１を含むグラフィックス・パイプラインは、図７で説明したMODE（４）に対応する。一方、図１２に図示されたグラフィックス・パイプラインについては、図６で説明したＧＰＵ  １０のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図１６で説明した構成及びパイプラインステージ外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【０１６９】
バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１６０１を利用して、バーテックスシェーディング１６１１を行う。バーテックスシェーダ１１５は、バーテックス１６０１を変換し、ハルシェーダ１２１に入力コントロールポイントとして伝達する。
【０１７０】
ハルシェーダ１２１は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング１６１２を行う。ハルシェーダ１２１は、パッチを構成する出力コントロールポイントを生成すると同時に、第１テッセレーションファクタ（ＴＦ）を決定することができる。
【０１７１】
テッセレータ１２３は、ハルシェーダ１２１から、第１テッセレーションファクタ（ＴＦ）を受信し、第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を新たに設定する。そして、テッセレータ１２３は、新たに設定された第２テッセレーションファクタ（ＴＦ）を利用して、出力コントロールポイントに係わる重心座標系でのｕｖｗ座標及び加重値を計算するテッセレーティング１６１３を行う。
【０１７２】
図３で説明したように、一般的なテッセレーション・パイプライン３００（図３）において、テッセレータ１２３は、ハルシェーダ１２１によって決定されたテッセレーションファクタ（ＴＦ）をそのまま利用した。しかし、先に図９で説明した仮定のように、テッセレータ１２３が、ハルシェーダ１２１によって決定された第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を利用するとしても、ビニング結果は同一である。もしビニング結果が同じではないとしても、レンダリング・パイプライン１０２−１において、カーリング、クリッピング、ＨＳＲなどのステージが遂行されるために、最終的なピクセレンダリング結果は同一である。
【０１７３】
ドメインシェーダ１２５は、出力パッチの出力コントロールポイント及び第２テッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング１６１４）を行う。
【０１７４】
ジオメトリシェーダ１３０は、ドメインシェーダ１２５から受信されたテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）から、さらなるバーテックス（または、プリミティブ）を生成するジオメトリシェーディング１６１５を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング１６１５は、スキップされもする。
【０１７５】
ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング１６１６）またはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）それぞれが属したタイルの情報を示すタイルリストを予測するビニング１６１６を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ３０のビンストリーム１６０２に保存される。
【０１７６】
図１０ないし図１３で説明した実施形態と異なり、ビナ１３５は、ビニング１６１６の結果、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が、１つのタイルに含まれるか否かということを判断しない。すなわち、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）は、１つのタイルまたは多くのタイルに含まれてもよい。
【０１７７】
ＧＰＵ  １０は、ビニング・パイプライン１０１−４が完了した場合、タイル単位でレンダリング・パイプライン１０２−１を遂行する。レンダリング・パイプライン１０２−１は、バーテックスシェーダ１１５によるバーテックスシェーディング１６２１、ハルシェーダ１２１によるハルシェーディング１６２２、テッセレータ１２３によるテッセレーティング１６２３、ドメインシェーダ１２５によるドメインシェーディング１６２４、ジオメトリシェーダ１３０によるオプション的なジオメトリシェーディング１６２５、ラスタライザ１４０によるラスタライジング１６２６、ピクセルシェーダ１５０によるピクセルシェーディング１６２７のステージを含んでもよい。ピクセルシェーダ１５０によるピクセルシェーディング１６２７の結果は、バッファ１６０３に保存される。
【０１７８】
以上で説明したMODE（４）による図１６のビニング・パイプライン１０１−４は、低いテッセレータファクタを利用して、テッセレータ１２３によるテッセレーティング１６１３を行うことができるので、さらに少ない個数のテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成（produce）することができる。従って、図３のテッセレーション・パイプライン３００（図３）と比較するとき、グラフィックデータの演算量をさらに減らすことができる。
【０１７９】
図１７は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。図１７のフローチャートは、図１６で説明したMODE（４）によるビニング・パイプライン１０１−４及びレンダリング・パイプライン１０２−１を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図１６で説明した内容は、図１７のフローチャートに適用される。
【０１８０】
１７１１段階ないし１７１６段階を含むパイプライン１７１０は、ビニング・パイプライン１０１−４に対応し、１７２１段階を含むパイプライン１７２０は、レンダリング・パイプライン１０２−１に対応する。
【０１８１】
１７１１段階において、バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１６０１を利用して、バーテックスシェーディング１６１１を行う。
【０１８２】
１７１２段階において、ハルシェーダ１２１は、入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング１６１２を行う。
【０１８３】
１７１３段階において、テッセレータ１２３は、ハルシェーダ１２１によって決定された第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を利用して、出力パッチの出力コントロールポイントに係わるテッセレーティング１６１３を行う。
【０１８４】
１７１４段階において、ドメインシェーダ１２５は、出力パッチの出力コントロールポイント及び第２テッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング１６１４）を行う。
【０１８５】
１７１５段階において、ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング１６１６またはタイリングを行う。
【０１８６】
１７１６段階において、ビナ１３５は、ビニング１６１６の結果、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを可視性ストリームとして、メモリ３０のビンストリーム１６０２に保存する。図１０ないし図１３で説明した実施形態と異なり、ビナ１３５は、ハルシェーダ１２１から出力された出力パッチの出力プリミティブが、１つのタイルに含まれるか否かということを判断しない。すなわち、出力パッチの出力プリミティブは、１つのタイルまたは多くのタイルに含まれてもよい。
【０１８７】
１７２１段階において、ＧＰＵ  １０は、タイル単位でレンダリング・パイプライン１０２−１を遂行する。レンダリング・パイプライン１０２−１は、バーテックスシェーダ１１５によるバーテックスシェーディング１６２１、ハルシェーダ１２１によるハルシェーディング１６２２、テッセレータ１２３によるテッセレーティング１６２３、ドメインシェーダ１２５によるドメインシェーディング１６２４、ジオメトリシェーダ１３０によるオプション的なジオメトリシェーディング１６２５、ラスタライザ１４０によるラスタライジング１６２６、ピクセルシェーダ１５０によるピクセルシェーディング１６２７のステージを含んでもよい。そのとき、テッセレーティング１６２３及びドメインシェーディング１６２４は、第１テッセレーションファクタ（ＴＦ）を利用して行われる。
【０１８８】
図１８は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【０１８９】
図１８を参照すれば、ビニング・パイプライン１０１−３及びレンダリング・パイプライン１０２−２を含むグラフィックス・パイプラインは、図７で説明したMODE（５）に対応する。一方、図１８に図示されたグラフィックス・パイプラインについては、図６で説明したＧＰＵ  １０のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図１８で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【０１９０】
図１８に図示されたグラフィックス・パイプラインについては、説明の便宜のために、図１９に図示された、複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）にクロッシングされた（crossed）パッチ１９００に対して遂行されると仮定して説明する。
【０１９１】
バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１８０１を利用して、バーテックスシェーディング１８１１を行う。バーテックスシェーダ１１５は、バーテックス１８０１を変換し、ハルシェーダ１２１に入力コントロールポイントとして伝達する。
【０１９２】
ハルシェーダ１２１は、低次数の表面を表現する入力コントロールポイントを、パッチ１９００を構成する出力コントロールポイントに変換するハルシェーディング１８１２を行う。ハルシェーダ１２１は、出力パッチ１９００の出力コントロールポイントに係わる情報をビナ１３５に伝達する。
【０１９３】
図３で説明したように、一般的なテッセレーション・パイプライン３００（図３）は、ハルシェーダ１２１、テッセレータ１２３及びドメインシェーダ１２５のステージをいずれも含んでいるが、図１８によれば、テッセレータ１２３及びドメインシェーダ１２５のステージはスキップされる。その理由は、先に図９で説明した仮定のように、パッチ４１０（図９）のビニング結果と、テッセレーティングされたプリミティブ４２５のビニング結果は、同一でもあるからである。もしビニング結果が同じではないとしても、レンダリング・パイプライン１０２−２において、カーリング、クリッピング、ＨＳＲなどのステージが遂行されるために、最終的なピクセレンダリング結果は同一である。
【０１９４】
ビナ１３５は、ハルシェーダ１２１から出力された出力パッチ１９００の出力プリミティブを利用して、ビニング１８１３またはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、出力パッチ１９００の出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを予測するビニング１８１３を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ３０のビンストリーム１８０２に保存される。
【０１９５】
ビナ１３５は、ビニング１８１３の結果、ハルシェーダ１２１から出力された出力パッチ１９００の出力プリミティブが、複数のタイル（例えば、図１９のtile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）に含まれるか否かということを判断する。すなわち、ビナ１３５は、出力パッチ１９００の出力プリミティブに対して、タイルクロッシング（tile  -crossing）いかんを判断する。
【０１９６】
出力パッチ１９００がタイルクロッシングされた場合（または、出力パッチ１９００が、複数のタイルtile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄに含まれる場合）、ビナ１３５は、複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）のレンダリング順序をスケジューリングする。スケジューリング結果、ビナ１３５は、複数のタイルのうち、最初のレンダリング順序でスケジューリングされたタイル（tile  Ａ）を、基準タイル（reference  tile）として決定する。ここで、基準タイルは複数のタイルのうち左側の最上端に位置したtile  Ａであると仮定して説明するが、それに制限されるものではなく、基準タイルは、左下端タイル、右上端タイル、右下端タイル、真ん中のタイルのような多様な所定基準によって変わることができる。ビナ１３５は、基準タイルtile  Ａに対するレンダリング・パイプライン１０２−２が、隣接タイル（neighboring  tiles）（tile  Ｂ，tile  Ｃ及びtile  Ｄ）より先に遂行されるように、レンダリング・パイプライン１０２−２の遂行タイミングをスケジューリングする。複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれに対するレンダリング・パイプライン１０２−２は、ＧＰＵ  １０内の１つのプロセッサユニット（または、１つのプロセッサコア）によって順次に遂行されるか、あるいはＧＰＵ  １０内の複数のプロセッサユニット（または、複数のプロセッサコア）によって並列的に遂行される。そのような、基準タイルの決定、及びレンダリングタイミングのスケジューリングは、ビナ１３５ではない、コントローラ１７０、またはＧＰＵ  １０内の他の構成によって行われてもよい。すなわち、基準タイルの決定、及びレンダリングタイミングのスケジューリングの遂行の主体は、いずれか一つによって制限されるものではない。
【０１９７】
出力パッチ１９００がタイルクロッシングされた場合、ビナ１３５は、基準タイル（tile  Ａ）の決定結果、及びレンダリングタイミングのスケジューリング結果を、メモリ３０に保存する。
【０１９８】
それとは異なり、出力パッチ１９００がタイルクロッシングされていない場合（または、出力パッチ１９００が１つのタイルにだけ含まれる場合）、ビナ１３５は、基準タイルの決定、及びレンダリングタイミングのスケジューリングを行わない。
【０１９９】
ＧＰＵ  １０は、ビニング・パイプライン１０１−３が完了した場合、タイル単位でレンダリング・パイプライン１０２−２を遂行する。そのとき、ビニング・パイプライン１０１−３において、基準タイルがtile  Ａであると決定されたので、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２をまず遂行する。
【０２００】
基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２は、バーテックスシェーダ１１５によるバーテックスシェーディング１８２１、ハルシェーダ１２１によるハルシェーディング１８２２、テッセレータ１２３によるテッセレーティング１８２３、ドメインシェーダ１２５によるドメインシェーディング１８２４、ジオメトリシェーダ１３０によるオプション的なジオメトリシェーディング１８２５、ラスタライザ１４０によるラスタライジング１８２６、ピクセルシェーダ１５０によるピクセルシェーディング１８２７のステージを含んでもよい。ピクセルシェーダ１５０によるピクセルシェーディング１８２７の結果は、バッファ１８０３に保存される。
【０２０１】
一方、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２では、ビナ１３５によるビニング１８２８が追加して行われる。さらに詳細に説明すれば、ビナ１３５は、パッチ１９００が、基準タイル（tile  Ａ）に隣接した（adjacent）隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれで可視的であるか否かということを示す可視性ストリームを生成するビニング１８２８を行う。ここで、可視性ストリームは、本明細書で説明する全ての種類の可視性ストリームを含んでもよい。それにより、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２で生成された隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に係わる可視性ストリームを利用して、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれに対するレンダリング・パイプライン１０２−２が独立して遂行されるとき、可視的なバーテックス、可視的なプリミティブまたは可視的なパッチのみを処理することができるので、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれに対するレンダリング・パイプライン１０２−２でのデータ演算量が減る。
【０２０２】
以上で説明したMODE（５）による図１８のグラフィックス・パイプラインは、ビニング・パイプライン１０１−３において、テッセレータ１２３によるテッセレーティングをスキップすることができるので、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成（produce）しない。従って、テッセレータ１２３によるテッセレーティングを必須に行わなければならない図３のテッセレーション・パイプライン３００（図３）と比較するとき、グラフィックデータの演算量をさらに減らすことができる。
【０２０３】
図１９は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。図１９のフローチャートは、図１８で説明したMODE（５）によるビニング・パイプライン１０１−３及びレンダリング・パイプライン１０２−２を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図１８で説明した内容は、図１９のフローチャートに適用される。
【０２０４】
１９１１段階ないし１９１５段階を含むパイプライン１９１０は、ビニング・パイプライン１０１−３に対応し、１９２１段階ないし１９２４段階を含むパイプライン１９２０は、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２に対応する。
【０２０５】
１９１１段階において、バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１８０１を利用して、バーテックスシェーディング１８１１を行う。
【０２０６】
１９１２段階において、ハルシェーダ１２１は、入力コントロールポイントを、パッチ１９００を構成する出力コントロールポイントに変換するハルシェーディング１８１２を行う。
【０２０７】
１９１３段階において、ビナ１３５は、出力パッチ１９００の出力コントロールポイントに係わるビニング１８１３またはタイリングを行う。そして、ビナ１３５は、ビニング１８１３の結果、出力パッチ１９００の出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを、メモリ３０のビンストリーム１８０２に保存する。
【０２０８】
１９１４段階において、ビナ１３５は、ハルシェーダ１２１から出力された出力パッチ１９００の出力プリミティブが、複数のタイル（例えば、tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）に含まれるか否かということを判断する。すなわち、ビナ１３５は、出力パッチ１９００の出力プリミティブに対して、タイルクロッシングいかんを判断する。もし出力パッチ１９００がタイルクロッシングされた場合、１９１５段階に進み、出力パッチ１９００がタイルクロッシングされていない場合、１９３０段階に進む。
【０２０９】
１９１５段階において、ビナ１３５は、複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）のレンダリング順序をスケジューリングする。スケジューリング結果、ビナ１３５は、複数のタイルのうち、最初のレンダリング順序でスケジューリングされたタイル（tile  Ａ）を、基準タイルとして決定することができる。
【０２１０】
１９２１段階において、基準タイル（tile  Ａ）に対して、バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス１８０１を利用して、バーテックスシェーディング１８２１を行う。
１９２２段階において、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対して、ハルシェーダ１２１によるハルシェーディング１８２２、テッセレータ１２３によるテッセレーティング１８２３、及びドメインシェーダ１２５によるドメインシェーディング１８２４を含むテッセレーション・パイプラインを遂行する。
【０２１１】
１９２３段階において、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対して、テッセレーション・パイプラインによって生成された、テッセレーティングされたプリミティブをレンダリングする。すなわち、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対して、ラスタライジング１８２６及びピクセルシェーディング１８２７を行う。
【０２１２】
１９２４段階において、ビナ１３５は、パッチ１９００が、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれで可視的であるか否かということを示す可視性ストリームを生成するビニング１８２８を行い、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に係わる可視性ストリームを保存する。図１９では、たとえ図示されていないとしても、ＧＰＵ  １０は、保存された可視性ストリームを利用して、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に対するレンダリング・パイプライン１０２−２をそれぞれ遂行する。そのとき、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に対するレンダリング・パイプライン１０２−２では、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に係わる可視性ストリームによって可視的なバーテックス、可視的なプリミティブまたは可視的なパッチだけが処理されもする。
【０２１３】
１９３０段階において、ＧＰＵ  １０は、出力パッチ１９００がタイルクロッシングされていない場合（出力パッチ１９００が１つのタイルにだけ含まれた場合）、出力パッチ１９００が含まれたタイルに対して、レンダリング・パイプライン１０２−２を遂行する。
【０２１４】
図２０は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【０２１５】
図２０を参照すれば、ビニング・パイプライン１０１−４及びレンダリング・パイプライン１０２−２を含むグラフィックス・パイプラインは、図７で説明したMODE（６）に対応する。一方、図２０に図示されたグラフィックス・パイプラインについては、図６で説明したＧＰＵ  １０のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図２０で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【０２１６】
図２０に図示されたグラフィックス・パイプラインについては、説明の便宜のために、図２１に図示された、複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）にクロッシングされたパッチ２１００に対して遂行されると仮定して説明する。
【０２１７】
バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス２００１を利用して、バーテックスシェーディング２０１１を行う。バーテックスシェーダ１１５は、バーテックス２００１を変換し、ハルシェーダ１２１に入力コントロールポイントとして伝達する。
【０２１８】
ハルシェーダ１２１は、低次数の表面を表現する入力コントロールポイントを、パッチ２１００を構成する出力コントロールポイントに変換するハルシェーディング２０１２を行う。ハルシェーダ１２１は、パッチ２１００を構成する出力コントロールポイントを生成すると同時に、第１テッセレーションファクタ（ＴＦ）を決定することができる。
【０２１９】
テッセレータ１２３は、ハルシェーダ１２１から第１テッセレーションファクタ（ＴＦ）を受信し、第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を新たに設定する。そして、テッセレータ１２３は、新たに設定された第２テッセレーションファクタ（ＴＦ）を利用して、出力コントロールポイントに係わる重心座標系でのｕｖｗ座標及び加重値を計算するテッセレーティング２０１３を行う。
【０２２０】
ドメインシェーダ１２５は、出力パッチ２１００の出力コントロールポイント及び第２テッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング２０１４を行う。
【０２２１】
ジオメトリシェーダ１３０は、ドメインシェーダ１２５から受信されたテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）から、さらなるバーテックス（または、プリミティブ）を生成するジオメトリシェーディング２０１５を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング２０１５は、スキップされもする。
【０２２２】
ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング２０１６）またはタイリングを行う。すなわち、ビナ１３５は、デプステスト（または、tile  Ｚ  test）などを遂行し、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）それぞれが属したタイルの情報を示すタイルリストを予測するビニング２０１６を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ３０のビンストリーム２００２に保存される。
【０２２３】
ビナ１３５は、ビニング２０１６の結果、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が複数のタイル（例えば、図２１のtile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）に含まれるか否かということを判断する。すなわち、ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）に対して、タイルクロッシングいかんを判断する。
【０２２４】
第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）がタイルクロッシングされた場合（または、出力パッチが、複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）に含まれる場合）、ビナ１３５は、複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）のレンダリング順序をスケジューリングする。スケジューリング結果、ビナ１３５は、複数のタイルのうち、最初のレンダリング順序でスケジューリングされたタイル（tile  Ａ）を、基準タイル（reference  tile）として決定することができる。ここで、基準タイルは、複数のタイルのうち左側の最上端に位置したtile  Ａであると仮定するが、それに制限されるものではなく、基準タイルは、左下端タイル、右上端タイル、右下端タイル、真ん中のタイルのような多様な所定基準によって異なってもよい。ビナ１３５は、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２が、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）より先に遂行されるように、レンダリング・パイプライン１０２−２の遂行タイミングをスケジューリングする。複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれに対するレンダリング・パイプライン１０２−２は、ＧＰＵ  １０内の１つのプロセッサユニット（または、１つのプロセッサコア）によって順次に遂行されるか、あるいはＧＰＵ  １０内の複数のプロセッサユニット（または、複数のプロセッサコア）によって並列的に遂行される。そのような、基準タイルの決定、及びレンダリングタイミングのスケジューリングは、ビナ１３５ではない、コントローラ１７０、またはＧＰＵ  １０内の他の構成によっても遂行される。すなわち、基準タイルの決定、及びレンダリングタイミングのスケジューリングの遂行主体は、いずれか一つによって制限されるものではない。
【０２２５】
第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）がタイルクロッシングされた場合、ビナ１３５は、基準タイル（tile  Ａ）の決定結果、及びレンダリングタイミングのスケジューリング結果をメモリ３０に保存する。
【０２２６】
それとは異なり、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）がタイルクロッシングされていない場合（または、出力パッチが１つのタイルにだけ含まれる場合）、ビナ１３５は、基準タイルの決定、及びレンダリングタイミングのスケジューリングを行わない。
【０２２７】
ＧＰＵ  １０は、ビニング・パイプライン１０１−４が完了した場合、タイル単位でレンダリング・パイプライン１０２−２を遂行する。そのとき、ビニング・パイプライン１０１−４において、基準タイルがtile  Ａであると決定されたので、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２をまず遂行する。
【０２２８】
基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２は、バーテックスシェーダ１１５によるバーテックスシェーディング２０２１、ハルシェーダ１２１によるハルシェーディング２０２２、テッセレータ１２３によるテッセレーティング２０２３、ドメインシェーダ１２５によるドメインシェーディング２０２４、ジオメトリシェーダ１３０によるオプション的なジオメトリシェーディング２０２５、ラスタライザ１４０によるラスタライジング２０２６、ピクセルシェーダ１５０によるピクセルシェーディング２０２７のステージを含んでもよい。ピクセルシェーダ１５０によるピクセルシェーディング２０２７の結果は、バッファ２００３に保存される。
【０２２９】
一方、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２では、ビナ１３５によるビニング２０２８が追加して行われる。さらに詳細に説明すれば、ビナ１３５は、パッチ２１００が、基準タイル（tile  Ａ）に隣接した隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれで可視的であるか否かということを示す可視性ストリームを生成するビニング２０２８を行う。ここで、可視性ストリームは、本明細書で説明する全ての種類の可視性ストリームを含んでもよい。それにより、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２で生成された隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に係わる可視性ストリームを利用して、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれに対するレンダリング・パイプライン１０２−２が独立して遂行されるとき、可視的なバーテックス、可視的なプリミティブまたは可視的なパッチのみを処理することができるので、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれに対するレンダリング・パイプライン１０２−２でのデータ演算量が減る。
【０２３０】
以上で説明したMODE（６）による図２０のグラフィックス・パイプラインは、ビニング・パイプライン１０１−４において、低いテッセレーションファクタによる小さい数のテッセレーティングされたプリミティブだけが生成（produce）される。従って、図３のテッセレーション・パイプライン３００（図３）と比較するとき、グラフィックデータの演算量をさらに減らすことができる。
【０２３１】
図２１は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。図２１のフローチャートは、図２０で説明したMODE（６）によるビニング・パイプライン１０１−４及びレンダリング・パイプライン１０２−２を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図２０で説明した内容は、図２１のフローチャートに適用される。
【０２３２】
２１１１段階ないし２１１７段階を含むパイプライン２１１０は、ビニング・パイプライン１０１−４に対応し、２１２１段階ないし２１２４段階を含むパイプライン２１２０は、基準タイル（tile  Ａ）に対するレンダリング・パイプライン１０２−２に対応する。
【０２３３】
２１１１段階において、バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス２００１を利用して、バーテックスシェーディング２０１１を行う。
【０２３４】
２１１２段階において、ハルシェーダ１２１は、入力コントロールポイントを、パッチ２１００を構成する出力コントロールポイントに変換するハルシェーディング２０１２を行う。
【０２３５】
２１１３段階において、テッセレータ１２３は、ハルシェーダ１２１によって決定された第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）を利用して、出力パッチ２１００の出力コントロールポイントに係わるテッセレーティング２０１３を行う。
【０２３６】
２１１４段階において、ドメインシェーダ１２５は、出力パッチ２１００の出力コントロールポイント及び第２テッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング２０１４を行う。
【０２３７】
２１１５段階において、ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）を利用して、ビニング２０１６またはタイリングを行う。そして、ビナ１３５は、ビニング２０１６の結果、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）それぞれが属したタイルの情報を示すタイルリストを、メモリ３０のビンストリーム２００２に保存する。
【０２３８】
２１１６段階において、ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が、複数のタイル（例えば、tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）に含まれるか否かということを判断する。すなわち、ビナ１３５は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）に対して、タイルクロッシングいかんを判断する。もし第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）がタイルクロッシングされた場合、２１１７段階に進み、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）がタイルクロッシングされていない場合、２１３０段階に進む。
【０２３９】
２１１７段階において、ビナ１３５は、複数のタイル（tile  Ａ，tile  Ｂ，tile  Ｃ及びtile  Ｄ）のレンダリング順序をスケジューリングする。スケジューリング結果、ビナ１３５は、複数のタイルのうち、最初のレンダリング順序でスケジューリングされたタイル（tile  Ａ）を、基準タイルとして決定することができる。
【０２４０】
２１２１段階において、基準タイル（tile  Ａ）に対して、バーテックスシェーダ１１５は、メモリ３０に保存されたバーテックス２００１を利用して、バーテックスシェーディング２０２１を行う。
【０２４１】
２１２２段階において、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対して、ハルシェーダ１２１によるハルシェーディング２０２２、テッセレータ１２３によるテッセレーティング２０２３、及びドメインシェーダ１２５によるドメインシェーディング２０２４を含むテッセレーション・パイプラインを遂行する。
【０２４２】
２１２３段階において、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対して、テッセレーション・パイプラインによって生成された、テッセレーティングされたプリミティブをレンダリングする。すなわち、ＧＰＵ  １０は、基準タイル（tile  Ａ）に対して、ラスタライジング２０２６及びピクセルシェーディング２０２７を行う。
【０２４３】
２１２４段階において、ビナ１３５は、パッチ２１００が、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）それぞれで可視的であるか否かということを示す可視性ストリームを生成するビニング２０２８を行い、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に係わる可視性ストリームを保存する。図２１では、たとえ図示されていないとしても、ＧＰＵ  １０は、保存された可視性ストリームを利用して、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に対するレンダリング・パイプライン１０２−２をそれぞれ遂行する。そのとき、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に対するレンダリング・パイプライン１０２−２では、隣接タイル（tile  Ｂ，tile  Ｃ及びtile  Ｄ）に係わる可視性ストリームによって、可視的なバーテックス、可視的なプリミティブまたは可視的なパッチだけが処理されもする。
【０２４４】
２１３０段階において、ＧＰＵ  １０は、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）がタイルクロッシングされていない場合（第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が１つのタイルにだけ含まれた場合）、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）が含まれたタイルに対して、レンダリング・パイプライン１０２−２を遂行する。
【０２４５】
図２２は、他の実施形態によって、パッチのテッセレーションの結果、パッチが属するタイルリストと、テッセレーティングされたプリミティブが属するタイルリストとが異なる場合について説明するための図面である。
【０２４６】
一般的に、テッセレーション・パイプライン３００（図３）において、ハルシェーダ１２１とドメインシェーダ１２５は、プログラマブル（programmable）であるが、テッセレータ１２３は、プログラマブルではないと知られている。従って、場合により、テッセレーション・パイプライン３００（図３）をコーディングする開発者は、出力パッチ２２１３が１つのタイル（tile  ０）に含まれるが、テッセレーティングされたプリミティブ２２２５は、２つのタイル（tile  ０及びtile  １）に含まれるように、ハルシェーダ１２１及びドメインシェーダ１２５を誤ってプログラミングしてしまう。すなわち、テッセレーティングされたプリミティブ２２２５において、で誤って予測された（mispredicted）プリミティブ２２３０が存在してしまう。以下の図２３及び図２４では、レンダリング・パイプラインの間、ビニング・パイプラインで誤って予測されたタイルリストが発見された場合に係わるグラフィックス・パイプラインについて説明する。
【０２４７】
図２３は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインについて説明するための図面である。
【０２４８】
図２３を参照すれば、ビニング・パイプライン１０１−３、並びに第１レンダリング・パイプライン１０２−３及び第２レンダリングパイプライン１０２−４を含むグラフィックス・パイプラインは、図７で説明したMODE（７）に対応し、ビニング・パイプライン１０１−４、並びに第１レンダリング・パイプライン１０２−３及び第２レンダリングパイプライン１０２−４を含むグラフィックス・パイプラインは、図７で説明したMODE（８）に対応する。一方、図２３に図示されたグラフィックス・パイプラインについては、図６で説明したＧＰＵ  １０のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図２３で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【０２４９】
ＧＰＵ  １０は、先に図面で説明したビニング・パイプライン１０１−３または１０１−４を遂行する。ビニング・パイプライン１０１−３または１０１−４のビニング結果は、可視性ストリームとして、メモリ３０のビンストリーム２３０２に保存される。次に、ＧＰＵ  １０は、第１レンダリング・パイプライン１０２−３を遂行する。第１レンダリング・パイプライン１０２−３は、タイル単位で遂行され、図２３において、第１レンダリング・パイプライン１０２−３で遂行される現在タイルは、tile  Ｘであると仮定する。
【０２５０】
バーテックスシェーダ１１５は、ビンストリーム２３０２のビニング結果に基づいて、tile  Ｘに属するバーテックス２３０１を利用して、バーテックスシェーディング２３１１を行う。バーテックスシェーダ１１５は、バーテックス２３０１を変換し、ハルシェーダ１２１に、入力コントロールポイントとして伝達する。
【０２５１】
ハルシェーダ１２１は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング２３１２を行う。ハルシェーダ１２１は、パッチを構成する出力コントロールポイントを生成すると同時に、テッセレーションファクタ（ＴＦ）を決定することができる。
【０２５２】
テッセレータ１２３は、ハルシェーダ１２１から受信されたテッセレーションファクタ（ＴＦ）を利用して、出力コントロールポイントに係わる重心座標系でのｕｖｗ座標及び加重値を計算するテッセレーティング２３１３を行う。
【０２５３】
ドメインシェーダ１２５は、出力パッチの出力コントロールポイント及びテッセレーションファクタ（ＴＦ）に係わる情報と、テッセレータ１２３から受信されたｕｖｗ座標（ｗ座標はオプション的）及び加重値とを利用して、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）を生成するドメインシェーディング２３１４を行う。
【０２５４】
ジオメトリシェーダ１３０は、ドメインシェーダ１２５から受信されたテッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）から、さらなるバーテックス（または、プリミティブ）を生成するジオメトリシェーディング２３１５を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング２３１５は、スキップされもする。
【０２５５】
ラスタライザ１４０は、現在タイルであるtile  Ｘに含まれた、テッセレーティングされたバーテックス（または、テッセレーティングされたプリミティブ）に対するラスタライジング２３１６を行い、ピクセルシェーダ１５０は、ラスタライジングされたプリミティブに対応するピクセルに対するピクセルシェーディング２３１７を行う。現在タイルであるtile  Ｘに対するピクセルシェーディング２３１７の結果は、バッファ２３０４に保存される。
【０２５６】
ビナ１３５は、現在タイルであるtile  Ｘに含まれたテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）に対するビニング２３１８またはタイリングを行い、ビニング２３１８の結果を、ビニング・パイプライン１０１−３または１０１−４によってビンストリーム２３０２に保存されたタイルリストと比較することにより、tile  Ｘに含まれたテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）のタイル位置のうち、誤って予測された（mispredicted）タイルが存在するか否かということを判断する。もし誤って予測されたタイルがない場合、ＧＰＵ  １０は、tile  Ｘの次のタイルに対する第１レンダリング・パイプライン１０２−３を遂行する。しかし、ビナ１３５は、誤って予測されたタイルがある場合、誤って予測されたタイルに係わるタイルリストを、ビンストリーム２３０２にアップデートするか、あるいは誤って予測されたビンストリーム（mispredicted  bin  stream）２３０３に保存する。ここで、誤って予測されたタイルに係わるタイルリストを、ビンストリーム２３０２にアップデートすることは、誤って予測されたタイルに対するレンダリングが始まっていない場合に行われ、誤って予測されたタイルに係わるタイルリストを、誤って予測されたビンストリーム２３０３に保存することは、誤って予測されたタイルに対するレンダリングが完了した場合に行われる。
【０２５７】
ＧＰＵ  １０は、全てのタイルに対して、タイル単位で第１レンダリング・パイプライン１０２−３を完了した後、誤って予測されたビンストリーム２３０３に、誤って予測されたタイルリスト（mispredictedtile  list）が存在するか否かということを判断する。誤って予測されたタイルリストが、誤って予測されたビンストリーム２３０３に存在する場合、ＧＰＵ  １０は、誤って予測されたタイルリストに含まれたタイルに対して、第２レンダリング・パイプライン１０２−４を遂行する。ここで、誤って予測されたタイルリストに含まれたタイルは、スーパータイル（super  tile）とも呼ぶ。第２レンダリング・パイプライン１０２−４は、誤って予測されたタイルリストに含まれたタイルに対して、１つのタイル単位で遂行されるか、あるいはスーパータイル単位で遂行される。すなわち、ＧＰＵ  １０は、１つのタイル単位またはスーパータイル単位で、バーテックスシェーダ１１５によるバーテックスシェーディング２３２１、ハルシェーダ１２１によるハルシェーディング２３２２、テッセレータ１２３によるテッセレーティング２３２３、ドメインシェーダ１２５によるドメインシェーディング２３２４、ジオメトリシェーダ１３０によるオプション的なジオメトリシェーディング２３２５、ラスタライザ１４０によるラスタライジング２３２６、ピクセルシェーダ１５０によるピクセルシェーディング２３２７のステージを含む第２レンダリング・パイプライン１０２−４を遂行することができる。スーパータイルに対するピクセルシェーディング２３２７の結果は、バッファ２３０４に保存され、それにより、グラフィックス・パイプラインが完了する。
【０２５８】
図２４は、さらに他の実施形態によってＧＰＵで遂行されるグラフィックス・パイプラインのフローチャートである。図２４のフローチャートは、図２３で説明したMODE（７）または（８）によるビニング・パイプライン１０１−３または１０１−４、第１レンダリング・パイプライン１０２−３及び第２レンダリング・パイプライン１０２−４を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図２３で説明した内容は、図２４のフローチャートに適用される。
【０２５９】
２４０１段階において、ＧＰＵ  １０は、ビニング・パイプライン１０１−３または１０１−４を遂行し、タイルリストをビニングする。
【０２６０】
２４０２段階において、ＧＰＵ  １０は、ビニングされたタイルリストを、第１ビンストリーム２３０２（図２３）に保存する。
【０２６１】
２４０３段階において、ＧＰＵ  １０は、現在タイルであるtile  Ｘに対して、第１ビンストリーム１９０２（図１９）を利用して、第１レンダリング・パイプライン１０２−３において、テッセレーション・パイプライン（図２３のハルシェーディング２３１２、テッセレーティング２３１３及びドメインシェーディング２３１４）を遂行する。
【０２６２】
２４０４段階において、ＧＰＵ  １０は、現在タイルであるtile  Ｘに対して、テッセレーション・パイプライン（図２３のハルシェーディング２３１２、テッセレーティング２３１３及びドメインシェーディング２３１４）から出力された、テッセレーティングされたプリミティブを利用して、残のりパイプライン（図２３のラスタライジング２３１６及びピクセルシェーディング２３１７）を遂行する。
【０２６３】
２４０５段階において、ＧＰＵ  １０は、全てのタイルに対するレンダリングが完了したか否かということを判断する。もし全てのタイルに対するレンダリングが完了した場合、２４１０段階に進む。しかし、全てのタイルに対するレンダリングが完了していない場合、tile  Ｘの次のタイルに対して、２４０３段階が遂行される。
【０２６４】
２４０６段階において、ＧＰＵ  １０は、現在タイルであるtile  Ｘに含まれたテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）に対するビニング２３１８またはタイリングを行い、ビニング２３１８の結果を、ビニング・パイプライン１０１−３または１０１−４によってビンストリーム２３０２に保存されたタイルリストと比較することにより、tile  Ｘに含まれたテッセレーティングされたプリミティブ（テッセレーティングされたバーテックス）のタイル位置のうち、誤って予測された（mispredicted）タイルが存在するか否かということを判断する。もし誤って予測されたタイルがない場合、２４０５段階に進む。しかし、誤って予測されたタイルがある場合、２４０７段階に進む。
【０２６５】
２４０７段階において、ＧＰＵ  １０は、誤って予測されたタイルが、レンダリング済みのタイルであるか否かということを判断する。もし誤って予測されたタイルが、レンダリング済みのタイルである場合、２４０８段階に進む。しかし、誤って予測されたタイルが、レンダリング済みのタイルではない場合、２４０９段階に進む。
【０２６６】
２４０８段階において、ＧＰＵ  １０は、誤って予測されたタイルに係わるタイルリストを、第２ビンストリーム２３０３（図２３）に保存する。
【０２６７】
２４０９段階において、ＧＰＵ  １０は、誤って予測されたタイルに係わるタイルリストを、第１ビンストリーム２３０２（図２３）にアップデートする。
【０２６８】
２４１０段階において、ＧＰＵ  １０は、第２ビンストリーム２３０３（図２３）に誤って予測されたタイルリストが存在するか否かということを判断する。もし第２ビンストリーム２３０３（図２３）に誤って予測されたタイルリストがない場合、グラフィックス・パイプラインは終了する。しかし、第２ビンストリーム２３０３（図２３）に誤って予測されたタイルリストがある場合、２４１１段階に進む。
【０２６９】
２４１１段階において、ＧＰＵ  １０は、第２ビンストリーム２３０３（図２３）に基づいて、誤って予測されたタイル（スーパータイル）に対して、第２レンダリング・パイプライン１０２−４（図２３）を遂行する。
【０２７０】
図２５は、一実施形態によるコンピューティング装置の詳細ハードウェア構成を図示したブロック図である。
【０２７１】
図２５を参照すれば、コンピューティング装置１は、ＧＰＵ  １０、ＣＰＵ  ２０、メモリ３０、バッファ３５、バス４０、ディスプレイ部２５０１、入力部２５０３及び通信部２５０５を含む。図２５に図示されたコンピューティング装置１には、実施形態と係わる構成要素だけが図示されている。従って、図２５に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。
【０２７２】
ＧＰＵ  １０、ＣＰＵ  ２０及びメモリ３０は、先立って図面で説明した動作及び機能を遂行することができる。
【０２７３】
バッファ３５は、タイル基盤グラフィックス・パイプラインまたはタイル基盤レンダリングを介して出力されたタイル情報を保存する。例えば、バッファ３５は、タイルでのデプステスト（depth  test）結果を保存するか、あるいはタイルでのレンダリング結果を保存することができる。たとえ図２１において、バッファ３５が、コンピューティング装置１内で、ＧＰＵ  １０、ＣＰＵ  ２０またはメモリ３０と別個に具備されているように図示されているにしても、バッファ３５は、ＧＰＵ  １０、ＣＰＵ  ２０またはメモリ３０内に具備されることもある。
【０２７４】
ディスプレイ部２５０１は、コンピューティング装置１で処理される情報、または処理されるなければならない情報などの各種情報をユーザに表示するための表示インタフェーシング手段である。ディスプレイ部２５０１は、コンピューティング装置１で処理される情報を、ユーザに視覚的であって直観的に提供するためのＧＵＩ（graphical  user  interface）をディスプレイすることもできる。例えば、ディスプレイ部２５０１は、ＧＰＵ  １０によって処理されたグラフィックデータをディスプレイすることができる。ディスプレイ部２５０１は、ＬＣＤ（liquid  crystal  display）、ＬＥＤ（light  emitting  diode）、ＰＤＰ（plasma  display  panel）のような多様なディスプレイパネルで具現される。
【０２７５】
入力部２５０３は、ユーザから情報を入力されるための入力インタフェーシング手段である。入力部２５０３は、タッチパッド、トラックボール、マウス、キーボード、ゲーム用コントローラのような形態によって具現される。ディスプレイ部２５０１と入力部２５０３は、一体化されたタッチスクリーンのハードウェアによって具現される。
【０２７６】
通信部２５０５は、移動通信のための移動通信モジュール、有線／無線ＬＡＮ（local  area  network）モジュール、近距離無線通信のためのＷｉ−Ｆｉ（wireless  fidelity）モジュール、Bluetooth（登録商標）モジュール、ＮＦＣ（near  field  communication）モジュールなどを含んでもよい。
【０２７７】
図２６Ａ及び図２６Ｂは、一実施形態によって、ＧＰＵで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
【０２７８】
先に図７において、MODE（１）ないしMODE（８）は、ユーザ入力によっていずれか一つが選択され、またはグラフィック処理環境によって、いずれか一つが選択されもする。図２６Ａ及び図２６Ｂによれば、ＧＰＵ  １０は、１つのタイル２６１０または２６２０の大きさに対する客体２６１５または２６２５の大きさ（または、客体２６１５または２６２５を構成するパッチの大きさ）の比率により、MODE（１）ないしMODE（８）のうちいずれか一つを選択することができる。例えば、１つのタイル２６１０または２６２０の大きさに対する客体２６１５または２６２５の大きさ（または、客体２６１５または２６２５を構成するパッチの大きさ）の比率は、２６Ａ及び図２６Ｂにおいて互いに異なる。そのような点を利用して、ＧＰＵ  １０は、MODE（１）ないしMODE（８）それぞれに対して、所定の臨界範囲を設定し、計算された比率が属する範囲に対応する効率モードで、グラフィックス・パイプラインが遂行されるように制御することができる。
【０２７９】
図２７Ａ及び図２７Ｂは、他の実施形態によって、ＧＰＵで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
【０２８０】
図２７Ａ及び図２７Ｂによれば、ＧＰＵ  １０は、タイル２７１０または２７２０の上の客体２７１５または２７２５（または、客体２７１５または２７２５を構成するパッチ）の位置により、MODE（１）ないしMODE（８）のうちいずれか一つを選択することができる。例えば、タイル２７１０または２７２０の境界と、客体２７１５または２７２５（または、客体２７１５または２７２５を構成するパッチ）の境界との距離distance（ａ）またはdistance（ｂ）は、図２７Ａ及び図２７Ｂにおいて互いに異なる。そのような点を利用して、ＧＰＵ  １０は、MODE（１）ないしMODE（８）それぞれに対して、所定の臨界範囲を設定し、計算された距離が属する範囲に対応する効率モードで、グラフィックス・パイプラインが遂行されるように制御することができる。
【０２８１】
図２８は、一実施形態によるグラフィックス・パイプラインにおいて、メモリのビンストリームに保存された可視性ストリームが適用される例示について説明するための図面である。
【０２８２】
図２８を参照すれば、ビニング・パイプライン１０１のビニング２８１１が行われた場合、メモリ３０のビンストリーム２８０２には、入力パッチ可視性ストリーム（input-patch  visibility  stream）が保存される。また、ビニング・パイプライン１０１のビニング２８１１が行われた場合、メモリ３０のビンストリーム２８０２には、出力プリミティブ可視性ストリーム（output-primitive  visibility  stream）が保存される。ここで、ビニング２８１１は、先に図面で説明した多種のグラフィックス・パイプラインに含まれたビニングステージに該当する。
【０２８３】
入力パッチ可視性ストリームは、レンダリング・パイプライン１０２の間、ハルシェーダ１２１のハルシェーディング２８２１遂行のために入力される入力パッチの可視性を示す入力パッチ可視性マスク（input-patch  visibility  mask）に係わる情報を含んでもよい。すなわち、入力パッチ可視性マスクは、入力パッチがタイルで見えるか否かということを示す０または１のビット表現でもある。従って、入力パッチ可視性ストリームを利用することにより、ハルシェーダ１２１は、レンダリング・パイプライン１０２の間、可視的な入力パッチだけで、ハルシェーディング２８２１を行うことができるので、レンダリング・パイプライン１０２での演算量が減少する。
【０２８４】
同様に、出力プリミティブ可視性ストリームは、レンダリング・パイプライン１０２の間、プリミティブアセンブリング（primitive  assembling）２８２２遂行のために入力される、出力プリミティブの可視性を示す出力プリミティブ可視性マスク（output-primitive  visibility  mask）に係わる情報を含んでもよい。すなわち、出力プリミティブ可視性マスクは、出力プリミティブがタイルで見えるか否かということを示す０または１のビット表現でもある。従って、出力プリミティブ可視性ストリームを利用することにより、ＧＰＵ  １０は、レンダリング・パイプライン１０２の間、可視的な出力プリミティブだけで、プリミティブアセンブリング２８２２を行うことができるので、レンダリング・パイプライン１０２での演算量が減少する。
【０２８５】
図２９は、他の実施形態によるグラフィックス・パイプラインにおいて、メモリのビンストリームに保存された可視性ストリームが適用される例示について説明するための図面である。
【０２８６】
図２９を参照すれば、図１８ないし図２１で説明したように、基準タイル（例えば、図１９及び図２１のtile  Ａ）に対するレンダリング・パイプライン１０２のビニング２９１１が行われた場合、メモリ３０のビンストリーム２９０２には、バーテックス可視性ストリーム（vertex  visibility  stream）が保存される。また、レンダリング・パイプライン１０２のビニング２８１１が行われた場合、メモリ３０のビンストリーム２９０２には、ドメイン可視性ストリーム（domain  visibility  stream）が保存される。ここで、ビニング２９１１は、図１９及び図２１だけではなく、先に図面で説明した多種のグラフィックス・パイプラインに含まれたビニングステージに該当する。
【０２８７】
バーテックス可視性ストリームは、基準タイル（例えば、図１９及び図２１のtile  Ａ）に隣接した隣接タイル（例えば、図１９及び図２１のtile  Ｂ，tile  Ｃまたはtile  Ｄに対するレンダリング・パイプライン１０２の間、バーテックスシェーダ１１５のバーテックスシェーディング２９２１の遂行のために入力されるバーテックスの可視性を示すバーテックス可視性マスク（vertex  visibility  mask）に係わる情報を含んでもよい。すなわち、バーテックス可視性マスクは、バーテックスがタイルで見えるか否かということを示す０または１のビット表現でもある。従って、バーテックス可視性ストリームを利用することにより、バーテックスシェーダ１１５は、レンダリング・パイプライン１０２の間、可視的なバーテックスだけで、バーテックスシェーディング２９２１を行うことができるので、レンダリング・パイプライン１０２での演算量が減少する。
【０２８８】
同様に、ドメイン可視性ストリームは、レンダリング・パイプライン１０２の間、ドメインシェーダ１２５のドメインシェーディング２９２２の遂行のために入力される、出力パッチの可視性を示すドメイン可視性マスク（domain  visibility  mask）に係わる情報を含んでもよい。すなわち、ドメイン可視性マスクは、出力プリミティブがタイルで見えるか否かということを示す０または１のビット表現でもある。従って、ドメイン可視性ストリームを利用することにより、ドメインシェーダ１２５は、レンダリング・パイプライン１０２の間、可視的な出力パッチだけで、ドメインシェーディング２９２２を行うことができるので、レンダリング・パイプライン１０２での演算量が減少する。
【０２８９】
一方、本明細書で説明する可視性ストリームは、前述のような、入力パッチ可視性ストリーム、出力プリミティブ可視性ストリーム、バーテックス可視性マスクまたはドメイン可視性ストリームを含んでもよいが、それらに制限されるものではない。
【０２９０】
図３０は、一実施形態によって、ビニング・パイプラインが完了し、ビンストリームに保存される可視性ストリームについて説明するための図面である。
【０２９１】
前述のように、ＧＰＵ  １０は、ビニング・パイプライン１０１が完了した場合、メモリ３０に可視性ストリームを保存することができる。図３０を参照すれば、可視性ストリームは、入力可視性ストリーム及び出力可視性ストリームを含んでもよい。
【０２９２】
入力可視性ストリームは、それぞれのパッチに対して１及び０のストリングを含んでもよい。それぞれのビットは、パッチ（patch）の少なくとも一部が最終フレームで見えるということを意味する。例えば、パッチ２に対するビット１は、パッチ２が最終フレームで見えるということを意味し、ビット０を有する他のパッチは、最終場面で見えないということを意味する。出力可視性ストリームは、それぞれのプリミティブ（primitive）に対して、１及び０のストリームを含むが、１ビットは、最終場面で見えるピクセルに対して、そのプリミティブが寄与するということを示し（例えば、プリミティブ０に対するビット１）、ビット０は最終場面で見えるピクセルに対してそのプリミティブが寄与しないということを示す（例えば、プリミティブ６に対するビット０）。
出力可視性ストリームは、パッチ単位基準で生成される。すなわち、それぞれのタイルに対するパッチごとに、１つの出力可視性ストリームが存在する。またはそれぞれのタイルは、入力プリミティブから生成された出力プリミティブを、いずれも共に連結する１つの出力可視性ストリームを有することができる。
【０２９３】
図３１は、他の実施形態によって、ビニング・パイプラインが完了し、ビンストリームに保存される可視性ストリームについて説明するための図面である。
【０２９４】
図３１を参照すれば、出力可視性ストリーム３１１０は、ハルシェーダ１２１から出力された出力パッチに対して生成され、出力可視性ストリーム３１２０は、ドメインシェーダ１２５から出力されたテッセレーティングされたプリミティブに対して生成されもする。しかし、それに制限されるものではない。
【０２９５】
図３２は、一実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。図３２に図示された、コンピューティング装置１のグラフィックス・パイプラインの遂行方法は、前述の図１０及び図１１などで説明した実施形態（MODE（１））と係わる。従って、以下で省略された内容であるとしても、図１０及び図１１などで説明した内容は、図３２のグラフィックス・パイプラインの遂行方法にも適用される。
【０２９６】
３２０１段階において、コンピューティング装置１のＧＰＵ  １０は、ハルシェーダ１２１から出力された出力パッチが含まれたタイルの個数に基づいて、出力パッチに対するテッセレーティングをスキップするか否かということを判断し、判断結果によって、出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプライン１０１−１を遂行する。
【０２９７】
３２０２段階において、コンピューティング装置１のＧＰＵ  １０は、ビニングされたタイルリストに基づいて、タイル単位で、レンダリング・パイプライン１０２−１を遂行する。
【０２９８】
さらに詳細に説明すれば、ビニング・パイプライン１０１−１を遂行する３２０１段階は、出力パッチが含まれたタイルの個数が１個である場合、テッセレータ１２３によって行われる出力パッチに対するテッセレーティングをスキップすることができる。ビニング・パイプライン１０１−１を遂行する３２０１段階は、入力パッチを、ハルシェーダ１２１でハルシェーディングすることによって出力パッチを生成し、出力パッチに係わるタイルリストをビニングし、出力パッチが１タイルに含まれるか否かということを判断する段階を含んでもよい。そのとき、レンダリング・パイプライン１０２−１を遂行する３２０２段階は、出力パッチが１タイルに含まれていると判断された場合、出力パッチに対してビニングされたタイルリストを利用して、ラスタライジングを行うことができる。ここで、ラスタライジングは、レンダリング・パイプライン１０２−１で遂行される一部ステージに該当するものであり、レンダリング・パイプライン１０２−１には、ラスタライジングステージ以外にも、ピクセルシェーディング・ステージなどの多様なステージが含まれてもよい。レンダリング・パイプライン１０２−１を遂行する３２０２段階は、ビニング・パイプライン１０１−１で、テッセレーティングがスキップされた場合、ビニング・パイプライン１０１−１で、出力パッチに対して保存されたビンストリームを利用して、テッセレーション・パイプラインを遂行する段階を含んでもよい。一方、ビニング・パイプライン１０１−１を遂行する３２０１段階において、テッセレーティングは、出力パッチによって形成された境界が、テッセレーティングされたプリミティブによって形成された境界を含むようにプログラミングされる。
【０２９９】
それとは異なり、ビニング・パイプライン１０１−１を遂行する３２０１段階は、出力パッチが２以上のタイルに含まれていると判断された場合（または、出力パッチが１タイルに含まれていないと判断された場合）、出力パッチに対するテッセレータ１２３のテッセレーティング、及びドメインシェーダ１２５のドメインシェーディングを行うことによって、テッセレーティングされたプリミティブを生成することができる。そのとき、レンダリング・パイプライン１０２−１を遂行する３２０２段階は、テッセレーティングされたプリミティブに対してビニングされたタイルリストを利用して、ラスタライジングを行うことができる。
【０３００】
一方、コンピューティング装置１のメモリ３０は、ビニング・パイプライン１０１−１で生成されたタイルリストを保存し、保存されたタイルリストを、レンダリング・パイプライン１０２−１に提供することができる。ビニング・パイプライン１０１−１を遂行する３２０１段階は、出力パッチが１タイルに含まれた場合、出力パッチに係わる可視性ストリームをメモリ３０に保存し、出力パッチが２以上であるタイルに含まれた場合、テッセレーティングされたプリミティブに係わる可視性ストリームを、メモリ３０に保存する段階を含んでもよい。
【０３０１】
図３３は、他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。図３３に図示された、コンピューティング装置１のグラフィックス・パイプラインの遂行方法は、前述の図１２及び図１３などで説明した実施形態（MODE（２））と係わる。従って、以下で省略された内容であるとしても、図１２及び図１３などで説明した内容は、図３３のグラフィックス・パイプラインの遂行方法にも適用される。
【０３０２】
３３０１段階において、コンピューティング装置１のＧＰＵ  １０は、ハルシェーダ１２１によって決定された第１テッセレーションファクタと異なる第２テッセレーションファクタでテッセレーティングされたプリミティブが含まれたタイルの個数に基づいて、第１テッセレーションファクタに基づいたテッセレーティングをスキップするか否かということを判断し、該判断結果によって、第１テッセレーションファクタでテッセレーティングされたプリミティブ、またはハルシェーダ１２１から出力された出力パッチに係わるタイルリストをビニングするビニング・パイプライン１０１−２を遂行する。
【０３０３】
３３０２段階において、コンピューティング装置１のＧＰＵ  １０は、ビニングされたタイルリストに基づいて、タイル単位で、レンダリング・パイプライン１０２−１を遂行する。
【０３０４】
さらに詳細に説明すれば、ビニング・パイプライン１０１−２を遂行する３３０１段階は、第２テッセレーションファクタでテッセレーティングされたプリミティブが含まれたタイルの個数が１個である場合、テッセレータ１２３によって遂行される第１テッセレーションファクタに基づいたテッセレーティングをスキップする。ここで、第２テッセレーションファクタは、第１テッセレーションファクタより低い。ビニング・パイプライン１０１−２を遂行する３３０１段階は、ハルシェーダ１２１で出力パッチを生成し、第１テッセレーションファクタを決定するハルシェーディングを行う段階、第１テッセレーションファクタより低い前記第２テッセレーションファクタに基づいて、出力パッチに対するテッセレータのテッセレーティング、及びドメインシェーダのドメインシェーディングを行うことによって、第２テッセレーションファクタでテッセレーティングされたプリミティブを生成する段階、及び第２テッセレーションファクタでテッセレーティングされたプリミティブが１タイルに含まれるか否かということを判断する段階を含んでもよい。そのとき、レンダリング・パイプライン１０２−１を遂行する３３０２段階は、第２テッセレーションファクタでテッセレーティングされたプリミティブが１タイルに含まれた場合、出力パッチに対してビニングされたタイルリストを利用して、ラスタライジングを行うことができる。ここで、ラスタライジングは、レンダリング・パイプライン１０２−１で遂行される一部ステージに該当するものであり、レンダリング・パイプライン１０２−１には、ラスタライジングステージ以外にも、ピクセルシェーディング・ステージなどの多様なステージが含まれてもよい。一方、ビニング・パイプライン１０１−２を遂行する３３０１段階において、テッセレーティングは、第１テッセレーションファクタでテッセレーティングされたプリミティブによって形成された境界が、第２テッセレーションファクタでテッセレーティングされたプリミティブによって形成された境界を含むようにプログラミングされる。
【０３０５】
それとは異なり、ビニング・パイプライン１０１−２を遂行する３３０１段階は、第２テッセレーションファクタでテッセレーティングされたプリミティブが、２以上のタイルに含まれていると判断された場合（または、第２テッセレーションファクタでテッセレーティングされたプリミティブが、１タイルに含まれていないと判断された場合）、第１テッセレーションファクタに基づいて、出力パッチに対するテッセレータ１２３のテッセレーティング、及びドメインシェーダ１２５のドメインシェーディングを行うことによって、第１テッセレーションファクタでテッセレーティングされたプリミティブを生成することができる。そのとき、レンダリング・パイプライン１０２−１を遂行する３３０２段階は、第１テッセレーションファクタでテッセレーティングされたプリミティブに対してビニングされたタイルリストを利用して、ラスタライジング及びピクセルシェーディングを行うことができる。
【０３０６】
一方、コンピューティング装置１のメモリ３０は、ビニング・パイプライン１０１−２で生成されたタイルリストを保存し、保存されたタイルリストをレンダリング・パイプライン１０２−１に提供することができる。ビニング・パイプライン１０１−２を遂行する３３０１段階は、第２テッセレーションファクタでテッセレーティングされたプリミティブが１タイルに含まれた場合、出力パッチに係わる可視性ストリームを、メモリ３０に保存し、第２テッセレーションファクタでテッセレーティングされたプリミティブが２以上のタイルに含まれた場合、第１テッセレーションファクタでテッセレーティングされたプリミティブに係わる可視性ストリームを、メモリ３０に保存する段階を含んでもよい。
【０３０７】
図３４は、さらに他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。図３４に図示された、コンピューティング装置１のグラフィックス・パイプラインの遂行方法は、前述の図１８及び図１９などで説明した実施形態（MODE（５））と係わる。従って、以下で省略された内容であるとしても、図１８及び図１９などで説明した内容は、図３４のグラフィックス・パイプラインの遂行方法にも適用される。
【０３０８】
３４０１段階において、コンピューティング装置１のＧＰＵ  １０は、ハルシェーダ１２１から出力された出力パッチをビニングすることによって、出力パッチが複数のタイルに含まれるか否かということを判断し、出力パッチが複数のタイルに含まれる場合、タイルのレンダリング順序をスケジューリングするビニング・パイプライン１０１−３を遂行する。
【０３０９】
３４０２段階において、コンピューティング装置１のＧＰＵ  １０は、スケジューリングされたレンダリング順序に基づいて、タイル単位で、タイルに対するレンダリング・パイプライン１０２−２を遂行する。
【０３１０】
さらに詳細に説明すれば、ビニング・パイプライン１０１−３を遂行する３４０１段階は、テッセレータ１２３によって遂行される出力パッチに対するテッセレーティングをスキップすることができる。ビニング・パイプライン１０１−３を遂行する３４０１段階は、入力パッチをハルシェーダ１２１でハルシェーディングすることによって出力パッチを生成し、出力パッチに係わるタイルリストをビニングし、出力パッチが複数のタイルに含まれるか否かということを判断し、出力パッチが複数のタイルに含まれる場合、最初のレンダリング順序に対応する第１タイル（基準タイル、例えば、図１９のtile  Ａ）を決定する段階を含んでもよい。
【０３１１】
レンダリング・パイプライン１０２−２を遂行する３４０２段階は、第１タイルに対する第１レンダリング・パイプラインを遂行し、隣接タイル（例えば、図１９のtile  Ｂ，tile  Ｃまたはtile  Ｄ）に対する第２レンダリング・パイプラインを遂行する段階を含んでもよい。第２レンダリング・パイプラインは、第１レンダリング・パイプラインで生成された可視性ストリームに基づいて、隣接タイルにおいて、可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。一方、図３４で説明する第１レンダリング・パイプライン及び第２レンダリング・パイプラインは、レンダリング・パイプライン１０２−２の一部であり、図７の第１レンダリング・パイプライン１０２−３及び第２レンダリング・パイプライン１０２−４とは異なる。
【０３１２】
一方、コンピューティング装置１のメモリ３０は、第１タイルに対するレンダリング・パイプライン１０２−２で生成された可視性ストリームを保存し、保存された可視性ストリームを、隣接タイルに対するレンダリング・パイプライン１０２−２に提供することができる。すなわち、レンダリング・パイプライン１０２−２を遂行する３４０１段階は、第１タイルに対するレンダリング・パイプライン１０２−２で生成された可視性ストリームを、メモリ３０に保存する段階を含んでもよい。
【０３１３】
図３５は、さらに他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。図３５に図示された、コンピューティング装置１のグラフィックス・パイプラインの遂行方法は、前述の図２０及び図２１などで説明した実施形態（MODE（６））と係わる。従って、以下で省略された内容であるとしても、図２０及び図２１などで説明した内容は、図３５のグラフィックス・パイプラインの遂行方法にも適用される。
【０３１４】
３５０１段階において、コンピューティング装置１のＧＰＵ  １０は、ハルシェーダ１２１によって決定された第１テッセレーションファクタ（ＴＦ）と異なる第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブをビニングすることによって、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブが複数のタイルに含まれるか否かということを判断し、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブが複数のタイルに含まれる場合、複数のタイルのレンダリング順序をスケジューリングするビニング・パイプライン１０１−４を遂行する。
【０３１５】
３５０２段階において、コンピューティング装置１のＧＰＵ  １０は、スケジューリングされたレンダリング順序に基づいて、タイル単位でタイルに対するレンダリング・パイプライン１０２−２を遂行する。
【０３１６】
さらに詳細に説明すれば、ビニング・パイプライン１０１−４を遂行する３５０１段階は、テッセレータ１２３によって遂行される第１テッセレーションファクタに基づいたテッセレーティングをスキップすることができる。ここで、第２テッセレーションファクタは、第１テッセレーションファクタより低い値を有する。ビニング・パイプライン１０１−４を遂行する３５０１段階は、ハルシェーダ１２１で出力パッチを生成し、第１テッセレーションファクタ（ＴＦ）を決定するハルシェーディングを行う段階、第１テッセレーションファクタ（ＴＦ）より低い第２テッセレーションファクタ（ＴＦ）に基づいて、出力パッチに対するテッセレータ１２３のテッセレーティング、及びドメインシェーダ１２５のドメインシェーディングを行うことによって、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブを生成する段階、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブに係わるタイルリストをビニングする段階、第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブが複数のタイルに含まれるか否かということを判断する段階、及び第２テッセレーションファクタ（ＴＦ）でテッセレーティングされたプリミティブが複数のタイルに含まれる場合、最初のレンダリング順序に対応する第１タイル（基準タイル、例えば、図２１のtile  Ａ）を決定する段階を含んでもよい。
【０３１７】
レンダリング・パイプライン１０２−２を遂行する３５０２段階は、第１タイルに対する第１レンダリング・パイプラインを遂行し、隣接タイル（例えば、図２１のtile  Ｂ，tile  Ｃまたはtile  Ｄ）に対する第２レンダリング・パイプラインを遂行する段階を含んでもよい。第２レンダリング・パイプラインは、第１レンダリング・パイプラインで生成された可視性ストリームに基づいて、隣接タイルにおいて、可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対して、レンダリングを行う。一方、図３５で説明する第１レンダリング・パイプライン及び第２レンダリング・パイプラインは、レンダリング・パイプライン１０２−２の一部であって、図７の第１レンダリング・パイプライン１０２−３及び第２レンダリング・パイプライン１０２−４とは異なる。
【０３１８】
一方、コンピューティング装置１のメモリ３０は、第１タイルに対するレンダリング・パイプライン１０２−２で生成された可視性ストリームを保存し、保存された可視性ストリームを、隣接タイルに対するレンダリング・パイプライン１０２−２に提供することができる。すなわち、レンダリング・パイプライン１０２−２を遂行する３５０１段階は、第１タイルに対するレンダリング・パイプライン１０２−２で生成された可視性ストリームを、メモリ３０に保存する段階を含んでもよい。
【０３１９】
一方、前述の本発明の実施形態は、コンピュータで実行されるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現化されてもよい。また、前述の本発明の実施形態で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に多くの手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体（例えば、ＲＯＭ（read  only  memory）、フロッピー（登録商標）ディスク、ハードディスクなど）；光学的判読媒体（例えば、ＣＤ（compact  disc）−ＲＯＭ、ＤＶＤ（digital  versatile  disc）など）のような記録媒体を含む。
【０３２０】
以上、本発明について、その望ましい実施形態を中心に説明した。本発明が属する技術分野で当業者であるならば、本発明が、本発明の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての変形例は、本発明に含まれるものであると解釈されなければならないのである。
【産業上の利用可能性】
【０３２１】
本発明のグラフィックプロセッシング装置、及びグラフィックプロセッシング装置でタイル基盤グラフィックス・パイプラインを遂行する方法は、例えば、画像処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【０３２２】
１        コンピューティング装置
１０      ＧＰＵ
２０      ＣＰＵ
３０      メモリ
３５，１８０  バッファ
４０      バス
１００    グラフィックス・パイプライン
１０１    ビニング・パイプライン
１０２    レンダリング・パイプライン
１０９    一般的グラフィックス・パイプライン
１１０    入力アセンブラ
１１５    バーテックスシェーダ
１２１    ハルシェーダ
１２３    テッセレータ
１２５    ドメインシェーダ
１３０    ジオメトリシェーダ
１３５    ビナ
１４０    ラスタライザ
１５０    ピクセルシェーダ
１６０    出力マージャ
１７０    コントローラ
２１０，８１０，９０１，９０２，２６１０，２６２０，２７１０，２７２０  タイル
２２０    自動車客体
３００    テッセレーション・パイプライン
４１０，２１００  パッチ
４１５    コントロールポイント
４２０    境界
４２５    プリミティブ
５００    テーブル
８１５    三次元客体
８２０    ４つのタイル
１９００，２２１３  出力パッチ
２２２５  テッセレーティングされたプリミティブ
２２３０  誤って予測されたプリミティブ
２５０１  ディスプレイ部
２５０３  入力部
２５０５  通信部
２６１５，２６２５，２７１５，２７２５  客体
２８０２，２９０２  ビンストリーム
３１１０，３１２０  出力可視性ストリーム
【図１】
0006709038.tif 000002
【図２】
0006709038.tif 000003
【図３】
0006709038.tif 000004
【図４】
0006709038.tif 000005
【図５】
0006709038.tif 000006
【図６】
0006709038.tif 000007
【図７】
0006709038.tif 000008
【図８Ａ】
0006709038.tif 000009
【図８Ｂ】
0006709038.tif 000010
【図９】
0006709038.tif 000011
【図１０】
0006709038.tif 000012
【図１１】
0006709038.tif 000013
【図１２】
0006709038.tif 000014
【図１３】
0006709038.tif 000015
【図１４】
0006709038.tif 000016
【図１５】
0006709038.tif 000017
【図１６】
0006709038.tif 000018
【図１７】
0006709038.tif 000019
【図１８】
0006709038.tif 000020
【図１９】
0006709038.tif 000021
【図２０】
0006709038.tif 000022
【図２１】
0006709038.tif 000023
【図２２】
0006709038.tif 000024
【図２３】
0006709038.tif 000025
【図２４】
0006709038.tif 000026
【図２５】
0006709038.tif 000027
【図２６Ａ】
0006709038.tif 000028
【図２６Ｂ】
0006709038.tif 000029
【図２７Ａ】
0006709038.tif 000030
【図２７Ｂ】
0006709038.tif 000031
【図２８】
0006709038.tif 000032
【図２９】
0006709038.tif 000033
【図３０】
0006709038.tif 000034
【図３１】
0006709038.tif 000035
【図３２】
0006709038.tif 000036
【図３３】
0006709038.tif 000037
【図３４】
0006709038.tif 000038
【図３５】
0006709038.tif 000039