図面 (/)

技術 グラフィックス・パイプラインを遂行する方法及びコンピューティング装置

出願人 三星電子株式会社
発明者 鄭武きょんケシャヴァンバラダラジャン柳秀晶朴貞愛鄭錫潤
出願日 2015年11月13日 (5年0ヶ月経過) 出願番号 2015-222962
公開日 2016年5月30日 (4年5ヶ月経過) 公開番号 2016-100012
状態 特許登録済
技術分野 画像処理 イメージ生成
主要キーワード 基準タイル 臨界範囲 ウェアラブルデバイス 具現形態 等値線 効率モード プロセッシング装置 レンダリング順序
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2016年5月30日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

グラフィックプロセッシング装置、及びグラフィックプロセッシング装置でタイル基盤グラフィックスパイプライン遂行する方法を提供すること。

解決手段

グラフィックプロセッシング装置において、グラフィックス・パイプラインを遂行する方法は、ハルシェーダから出力された出力パッチが含まれたタイル個数に基づいて、出力パッチに対するテッセレーティングスキップするか否かを判断し、該判断結果によって、出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストビニングするビニング・パイプラインを遂行し、ビニングされたタイルリストに基づいて、タイル単位レンダリング・パイプラインを遂行する。

概要

背景

GPU(graphics processing unit)のようなグラフィックプロセッシング装置は、コンピューティング装置において、グラフィックスデータレンダリングする役割担当する。一般的に、グラフィックプロセッシング装置は、二次元客体または三次元客体に該当するグラフィックスデータを二次元ピクセル表現に変換し、ディスプレイのためのフレームを生成する。コンピューティング装置の種類としては、PC(personal computers)、ノート型パソコンビデオゲームコンソールだけではなく、スマートフォンタブレットデバイスウェアラブルデバイスのようなエンベデッド(embedded)デバイスも含まれてもよい。スマートフォン、タブレットデバイス、ウェアラブルデバイスのようなエンベデッドデバイスは、比較的低い演算処理能や多くの電力消耗の問題により、十分なメモリ空間及びプロセッシングパワーを確保しているPC、ノート型パソコン、ビデオゲーム用コンソールのようなワークステーションと同様なグラフィックプロセッシング性能を備えることは困難である。しかし、最近全世界的に、スマートフォンまたはタブレットデバイスのような携帯用デバイスが広く普及されるにつれ、それらのユーザは、スマートフォンまたはタブレットデバイスを介してゲームをプレイしたり、あるいは映画ドラマなどのコンテンツ鑑賞したりする頻度急増している。それにより、グラフィックプロセッシング装置の製造社において、ユーザの需要歩調をあわせ、エンベデッドデバイスにおいて、グラフィックプロセッシング装置の性能及び処理効率を高めるための研究が盛んに進められている。

概要

グラフィックプロセッシング装置、及びグラフィックプロセッシング装置でタイル基盤グラフィックスパイプライン遂行する方法を提供すること。 グラフィックプロセッシング装置において、グラフィックス・パイプラインを遂行する方法は、ハルシェーダから出力された出力パッチが含まれたタイル個数に基づいて、出力パッチに対するテッセレーティングスキップするか否かを判断し、該判断結果によって、出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストビニングするビニング・パイプラインを遂行し、ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行する。

目的

本発明が解決しようとする課題は、グラフィックプロセッシング装置、及びグラフィックプロセッシング装置でタイルに基づいてグラフィックス・パイプラインを遂行する方法等を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

グラフィックプロセッシング装置において、グラフィックスパイプライン遂行する方法において、ハルシェーダから出力された出力パッチが含まれたタイル個数に基づいて、前記出力パッチに対するテッセレーティングスキップするか否かを判断し、前記判断の結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストビニングするビニング・パイプラインを遂行する段階と、前記ビニングされたタイルリストに基づいて、タイル単位レンダリング・パイプラインを遂行する段階と、を含む方法。

請求項2

前記ビニング・パイプラインを遂行する段階は、前記出力パッチが含まれた前記タイルの個数が1個である場合、テッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップすることを特徴とする請求項1に記載の方法。

請求項3

前記ビニング・パイプラインを遂行する段階は、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成する段階と、前記出力パッチに係わる前記タイルリストをビニングする段階と、前記出力パッチが1タイルに含まれるか否かを判断する段階と、を含み、前記レンダリング・パイプラインを遂行する段階は、前記出力パッチが前記1タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行うことを特徴とする請求項1又は2に記載の方法。

請求項4

前記ビニング・パイプラインを遂行する段階は、前記出力パッチが2以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する段階を含み、前記レンダリング・パイプラインを遂行する段階は、前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行うことを特徴とする請求項3に記載の方法。

請求項5

前記ビニング・パイプラインを遂行する段階は、前記出力パッチが1タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが2以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含むことを特徴とする請求項1〜4のうちの何れか1項に記載の方法。

請求項6

前記レンダリング・パイプラインを遂行する段階は、前記ビニング・パイプラインで、前記テッセレーティングがスキップされた場合、前記ビニング・パイプラインで、前記出力パッチに対して保存されたビンストリームを利用して、テッセレーション・パイプラインを遂行する段階を含むことを特徴とする請求項1〜5のうち何れか1項に記載の方法。

請求項7

グラフィックス・パイプラインを遂行するコンピューティング装置において、ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングをスキップするか否かを判断し、前記判断の結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプライン、及び前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行するグラフィックプロセッシング装置と、前記ビニング・パイプラインでビニングされた前記タイルリストを保存し、前記保存されたタイルリストを、前記レンダリング・パイプラインに提供するメモリと、を含むコンピューティング装置。

請求項8

前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、前記出力パッチが含まれた前記タイルの個数が1個であると判断された場合、前記ビニング・パイプラインで、テッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップすることを特徴とする請求項7に記載のコンピューティング装置。

請求項9

前記グラフィックプロセッシング装置は、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成し、前記出力パッチに対して、前記タイルリストの前記ビニングを行い、前記出力パッチが1タイルに含まれるか否かを判断する前記ビニング・パイプラインを遂行し、前記出力パッチが、前記1タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う前記レンダリング・パイプラインを遂行することを特徴とする請求項7又は8に記載のコンピューティング装置。

請求項10

前記グラフィックプロセッシング装置は、前記出力パッチが2以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する前記ビニング・パイプラインを遂行し、前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う前記レンダリング・パイプラインを遂行することを特徴とする請求項9に記載のコンピューティング装置。

請求項11

前記メモリは、前記ビニング・パイプラインが遂行される間、前記出力パッチが1タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが2以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含むことを特徴とする請求項7〜10のうち何れか1項に記載のコンピューティング装置。

請求項12

請求項1に記載の方法を前記グラフィックプロセッシング装置に実行させるコンピュータプログラム

請求項13

請求項12に記載のコンピュータプログラムを記憶する記憶媒体

技術分野

0001

本発明は、グラフィックプロセッシング装置、及びグラフィックプロセッシング装置でタイルに基づいてグラフィックスパイプライン遂行する方法等に関する。

背景技術

0002

GPU(graphics processing unit)のようなグラフィックプロセッシング装置は、コンピューティング装置において、グラフィックスデータレンダリングする役割担当する。一般的に、グラフィックプロセッシング装置は、二次元客体または三次元客体に該当するグラフィックスデータを二次元ピクセル表現に変換し、ディスプレイのためのフレームを生成する。コンピューティング装置の種類としては、PC(personal computers)、ノート型パソコンビデオゲームコンソールだけではなく、スマートフォンタブレットデバイスウェアラブルデバイスのようなエンベデッド(embedded)デバイスも含まれてもよい。スマートフォン、タブレットデバイス、ウェアラブルデバイスのようなエンベデッドデバイスは、比較的低い演算処理能や多くの電力消耗の問題により、十分なメモリ空間及びプロセッシングパワーを確保しているPC、ノート型パソコン、ビデオゲーム用コンソールのようなワークステーションと同様なグラフィックプロセッシング性能を備えることは困難である。しかし、最近全世界的に、スマートフォンまたはタブレットデバイスのような携帯用デバイスが広く普及されるにつれ、それらのユーザは、スマートフォンまたはタブレットデバイスを介してゲームをプレイしたり、あるいは映画ドラマなどのコンテンツ鑑賞したりする頻度急増している。それにより、グラフィックプロセッシング装置の製造社において、ユーザの需要歩調をあわせ、エンベデッドデバイスにおいて、グラフィックプロセッシング装置の性能及び処理効率を高めるための研究が盛んに進められている。

先行技術

0003

米国特許登録第6,359,619号

発明が解決しようとする課題

0004

本発明が解決しようとする課題は、グラフィックプロセッシング装置、及びグラフィックプロセッシング装置でタイルに基づいてグラフィックス・パイプラインを遂行する方法等を提供するところにある。本実施形態で意図される技術的課題は、前述のような技術的課題に限定されず、他の技術的課題も包含する。

課題を解決するための手段

0005

前記課題を解決するために、本発明の一側面によれば、グラフィックプロセッシング装置でグラフィックス・パイプラインを遂行する方法は、ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングスキップするか否かということを判断し、前記判断結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストビニングするビニング・パイプラインを遂行する段階と、前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行する段階と、を含む。

0006

また、前記ビニング・パイプラインを遂行する段階は、前記出力パッチが含まれた前記タイルの個数が1個である場合、テッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップする。

0007

また、前記ビニング・パイプラインを遂行する段階は、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成する段階と、前記出力パッチに係わる前記タイルリストをビニングする段階と、前記出力パッチが1タイルに含まれるか否かということを判断する段階と、を含み、前記レンダリング・パイプラインを遂行する段階は、前記出力パッチが前記1タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う。

0008

また、前記ビニング・パイプラインを遂行する段階は、前記出力パッチが2以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する段階を含み、前記レンダリング・パイプラインを遂行する段階は、前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う。

0009

また、前記ビニング・パイプラインを遂行する段階は、前記出力パッチが1タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが2以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含む。

0010

また、前記レンダリング・パイプラインを遂行する段階は、前記ビニング・パイプラインで、前記テッセレーティングがスキップされた場合、前記ビニング・パイプラインで、前記出力パッチに対して保存されたビンストリームを利用して、テッセレーション・パイプラインを遂行する段階を含む。

0011

前記課題を解決するために、本発明の他の側面によれば、グラフィックス・パイプラインを遂行するコンピューティング装置は、ハルシェーダから出力された出力パッチが含まれたタイルの個数に基づいて、前記出力パッチに対するテッセレーティングをスキップするか否かということを判断し、前記判断結果によって、前記出力パッチまたはテッセレーティングされたプリミティブに係わるタイルリストをビニングするビニング・パイプライン、及び前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行するグラフィックプロセッシング装置;並びに前記ビニング・パイプラインでビニングされた前記タイルリストを保存し、前記保存されたタイルリストを、前記レンダリング・パイプラインに提供するメモリ;を含む。

0012

また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、前記出力パッチが含まれた前記タイルの個数が1個であると判断された場合、前記ビニング・パイプラインでテッセレータによって行われる前記出力パッチに対する前記テッセレーティングをスキップする。

0013

また、前記グラフィックプロセッシング装置は、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成し、前記出力パッチに対して、前記タイルリストの前記ビニングを行い、前記出力パッチが1タイルに含まれるか否かということを判断する前記ビニング・パイプラインを遂行し、前記出力パッチが前記1タイルに含まれていると判断された場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う前記レンダリング・パイプラインを遂行する。

0014

また、前記グラフィックプロセッシング装置は、前記出力パッチが2以上のタイルに含まれていると判断された場合、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記テッセレーティングされたプリミティブを生成する前記ビニング・パイプラインを遂行し、前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う前記レンダリング・パイプラインを遂行する。

0015

また、前記メモリは、前記ビニング・パイプラインが遂行される間、前記出力パッチが1タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記出力パッチが2以上のタイルに含まれた場合、前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含む。

0016

前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックプロセッシング装置でグラフィックス・パイプラインを遂行する方法は、ハルシェーダによって決定された第1テッセレーションファクタと異なる第2テッセレーションファクタでテッセレーティングされたプリミティブが含まれたタイルの個数に基づいて、前記第1テッセレーションファクタに基づいたテッセレーティングをスキップするか否かということを判断し、前記判断結果によって、前記第1テッセレーションファクタでテッセレーティングされたプリミティブ、または前記ハルシェーダから出力された出力パッチに係わるタイルリストをビニングするビニング・パイプラインを遂行する段階と、前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行する段階と、を含む。

0017

また、前記ビニング・パイプラインを遂行する段階は、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが含まれた前記タイルの個数が1個である場合、テッセレータによって行われる前記第1テッセレーションファクタに基づいた前記テッセレーティングをスキップする。

0018

また、前記第2テッセレーションファクタは、前記第1テッセレーションファクタより低い。

0019

また、前記ビニング・パイプラインを遂行する段階は、前記ハルシェーダで前記出力パッチを生成し、前記第1テッセレーションファクタを決定するハルシェーディングを行う段階と、前記第1テッセレーションファクタより低い前記第2テッセレーションファクタに基づいて、前記出力パッチに対するテッセレータの前記テッセレーティング、及びドメインシェーダのドメインシェーディングを行うことによって、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブを生成する段階と、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが1タイルに含まれるか否かということを判断する段階と、を含み、前記レンダリング・パイプラインを遂行する段階は、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが前記1タイルに含まれた場合、前記出力パッチに対して、ビニングされた前記タイルリストを利用して、ラスタライジングを行う。

0020

また、前記ビニング・パイプラインを遂行する段階は、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが2以上のタイルに含まれていると判断された場合、前記第1テッセレーションファクタに基づいて、前記出力パッチに対する前記テッセレータの前記テッセレーティング、及び前記ドメインシェーダの前記ドメインシェーディングを行うことによって、前記第1テッセレーションファクタで前記テッセレーティングされたプリミティブを生成する段階を含み、前記レンダリング・パイプラインを遂行する段階は、前記第1テッセレーションファクタで前記テッセレーティングされたプリミティブに対して、ビニングされた前記タイルリストを利用して、前記ラスタライジングを行う。

0021

また、前記ビニング・パイプラインを遂行する段階は、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが1タイルに含まれた場合、前記出力パッチに係わる可視性ストリームを保存し、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが2以上のタイルに含まれた場合、前記第1テッセレーションファクタで前記テッセレーティングされたプリミティブに係わる可視性ストリームを保存する段階を含む。

0022

前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックス・パイプラインを遂行するコンピューティング装置は、ハルシェーダによって決定された第1テッセレーションファクタと異なる第2テッセレーションファクタでテッセレーティングされたプリミティブが含まれたタイルの個数に基づいて、前記第1テッセレーションファクタに基づいたテッセレーティングをスキップするか否かということを判断し、前記判断結果によって、前記第1テッセレーションファクタでテッセレーティングされたプリミティブ、または前記ハルシェーダから出力された出力パッチに係わるタイルリストをビニングするビニング・パイプライン、及び前記ビニングされたタイルリストに基づいて、タイル単位でレンダリング・パイプラインを遂行するグラフィックプロセッシング装置;並びに前記ビニング・パイプラインでビニングされた前記タイルリストを保存し、前記保存されたタイルリストを、前記レンダリング・パイプラインに提供するメモリ;を含む。

0023

また、前記グラフィックプロセッシング装置は、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが含まれた前記タイルの個数が1個である場合、テッセレータによって行われる前記第1テッセレーションファクタに基づいた前記テッセレーティングをスキップする。

0024

また、前記第2テッセレーションファクタは、前記第1テッセレーションファクタより低い。

0025

前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックプロセッシング装置でグラフィックス・パイプラインを遂行する方法は、ハルシェーダから出力された出力パッチをビニングすることにより、前記出力パッチが複数のタイルに含まれるか否かということを判断し、前記出力パッチが前記複数のタイルに含まれる場合、前記タイルのレンダリング順序スケジューリングするビニング・パイプラインを遂行する段階と、前記スケジューリングされたレンダリング順序に基づいて、タイル単位で、前記タイルに対するレンダリング・パイプラインを遂行する段階と、を含み、最初のレンダリング順序でスケジューリングされた第1タイルに対する前記レンダリング・パイプラインは、前記第1タイルに隣接した隣接タイルに係わる可視性ストリームを生成するビニングを含む。

0026

また、前記ビニング・パイプラインを遂行する段階は、テッセレータによって行われる前記出力パッチに対するテッセレーティングをスキップする。

0027

また、前記ビニング・パイプラインを遂行する段階は、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成する段階と、前記出力パッチに係わるタイルリストをビニングする段階と、前記出力パッチが前記複数のタイルに含まれるか否かということを判断する段階と、前記出力パッチが前記タイルに含まれる場合、前記最初のレンダリング順序に対応する前記第1タイルを決定する段階と、を含む。

0028

また。前記レンダリング・パイプラインを遂行する段階は、前記第1タイルに対する第1レンダリング・パイプラインを遂行する段階と、前記隣接タイルに対する第2レンダリング・パイプラインを遂行する段階と、を含み、前記第2レンダリング・パイプラインを遂行する段階は、前記第1レンダリング・パイプラインで生成された前記可視性ストリームに基づいて、前記隣接タイルで可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。

0029

前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックス・パイプラインを遂行するコンピューティング装置は、ハルシェーダから出力された出力パッチをビニングすることにより、前記出力パッチが複数のタイルに含まれるか否かということを判断し、前記出力パッチが前記タイルに含まれる場合、前記タイルのレンダリング順序をスケジューリングするビニング・パイプライン、及び前記スケジューリングされたレンダリング順序に基づいて、タイル単位で、前記タイルに対するレンダリング・パイプラインを遂行するグラフィックプロセッシング装置;並びに最初のレンダリング順序でスケジューリングされた第1タイルに対する前記レンダリング・パイプラインが遂行される間に生成された、前記第1タイルに隣接した隣接タイルに係わる可視性ストリームを保存するメモリ;を含む。

0030

また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、テッセレータによって行われる前記出力パッチに対するテッセレーティングをスキップする。

0031

また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインが遂行される間、入力パッチを、前記ハルシェーダでハルシェーディングすることにより、前記出力パッチを生成し、前記出力パッチに係わるタイルリストをビニングし、前記出力パッチが前記複数のタイルに含まれるか否かということを判断し、前記出力パッチが前記タイルに含まれる場合、前記最初のレンダリング順序に対応する前記第1タイルを決定する。

0032

また、前記グラフィックプロセッシング装置は、前記第1タイルに対する第1レンダリング・パイプラインを遂行し、前記隣接タイルに対する第2レンダリング・パイプラインを遂行し、前記第2レンダリング・パイプラインは、前記第1レンダリング・パイプラインで生成された前記可視性ストリームに基づいて、前記隣接タイルで可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。

0033

前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックプロセッシング装置でグラフィックス・パイプラインを遂行する方法は、ハルシェーダによって決定された第1テッセレーションファクタと異なる第2テッセレーションファクタでテッセレーティングされたプリミティブをビニングすることにより、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが複数のタイルに含まれるか否かということを判断し、前記第2テッセレーションファクタでテッセレーティングされたプリミティブが前記複数のタイルに含まれる場合、前記タイルのレンダリング順序をスケジューリングするビニング・パイプラインを遂行する段階と、前記スケジューリングされたレンダリング順序に基づいて、タイル単位で、前記タイルに対するレンダリング・パイプラインを遂行する段階と、を含み、最初のレンダリング順序でスケジューリングされた第1タイルに対する前記レンダリング・パイプラインは、前記第1タイルに隣接した隣接タイルに係わる可視性ストリームを生成するビニングを含む。

0034

また、前記ビニング・パイプラインを遂行する段階は、テッセレータによって行われる前記第1テッセレーションファクタに基づいた前記テッセレーティングをスキップする。

0035

また、前記第2テッセレーションファクタは、前記第1テッセレーションファクタより低い。

0036

また、前記ビニング・パイプラインを遂行する段階は、前記ハルシェーダで出力パッチを生成し、前記第1テッセレーションファクタを決定するハルシェーディングを行う段階と、前記第1テッセレーションファクタより低い前記第2テッセレーションファクタに基づいて、前記出力パッチに対するテッセレータのテッセレーティング、及びドメインシェーダのドメインシェーディングを行うことによって、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブを生成する段階と、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブに係わるタイルリストをビニングする段階と、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが前記複数のタイルに含まれるか否かということを判断する段階と、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが前記タイルに含まれる場合、前記最初のレンダリング順序に対応する前記第1タイルを決定する段階と、を含む。

0037

また、前記レンダリング・パイプラインを遂行する段階は、前記第1タイルに対する第1レンダリング・パイプラインを遂行する段階と、前記隣接タイルに対する第2レンダリング・パイプラインを遂行する段階と、を含み、前記第2レンダリング・パイプラインを遂行する段階は、前記第1レンダリング・パイプラインで生成された前記可視性ストリームに基づいて、前記隣接タイルで可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。

0038

前記課題を解決するために、本発明のさらに他の側面によれば、グラフィックス・パイプラインを遂行するコンピューティング装置は、ハルシェーダによって決定された第1テッセレーションファクタと異なる第2テッセレーションファクタでテッセレーティングされたプリミティブをビニングすることにより、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが複数のタイルに含まれるか否かということを判断し、前記第2テッセレーションファクタでテッセレーティングされたプリミティブが前記複数のタイルに含まれる場合、前記タイルのレンダリング順序をスケジューリングするビニング・パイプライン、及び前記スケジューリングされたレンダリング順序に基づいて、タイル単位で、前記タイルに対するレンダリング・パイプラインを遂行するグラフィックプロセッシング装置;並びに最初のレンダリング順序でスケジューリングされた第1タイルに対する前記レンダリング・パイプラインが遂行される間に生成された、前記第1タイルに隣接した隣接タイルに係わる可視性ストリームを保存するメモリ;を含む。

0039

また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインで、テッセレータによって行われる前記第1テッセレーションファクタに基づいた前記テッセレーティングをスキップする。

0040

また、前記第2テッセレーションファクタは、前記第1テッセレーションファクタより低い。

0041

また、前記グラフィックプロセッシング装置は、前記ビニング・パイプラインが遂行される間、前記ハルシェーダで出力パッチを生成し、前記第1テッセレーションファクタを決定するハルシェーディングを行い、前記第1テッセレーションファクタより低い前記第2テッセレーションファクタに基づいて、前記出力パッチに対するテッセレータのテッセレーティング、及びドメインシェーダのドメインシェーディングを行うことにより、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブを生成し、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブに係わるタイルリストをビニングし、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが前記複数のタイルに含まれるか否かということを判断し、前記第2テッセレーションファクタで前記テッセレーティングされたプリミティブが前記タイルに含まれる場合、前記最初のレンダリング順序に対応する前記第1タイルを決定する。

0042

また、前記グラフィックプロセッシング装置は、前記第1タイルに対する第1レンダリング・パイプラインを遂行し、前記隣接タイルに対する第2レンダリング・パイプラインを遂行し、前記第2レンダリング・パイプラインは、前記第1レンダリング・パイプラインで生成された前記可視性ストリームに基づいて、前記隣接タイルで可視的なバーテックス、可視的なプリミティブ及び可視的なパッチのうち少なくとも一つに対してレンダリングを行う。

0043

前記課題を解決するために、本発明のさらに他の側面によれば、前記方法のうち少なくとも一つをコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供する。

発明の効果

0044

本発明によれば、GPUで処理されるグラフィックス・パイプラインの一部であるテッセレーション・パイプラインで、テッセレータによるテッセレーティングをスキップしたり、あるいは低いテッセレーションファクタを利用したりしてテッセレーティングを行うことにより、GPUの演算量を減らして処理速度を速めることができる。

図面の簡単な説明

0045

一実施形態によるコンピューティング装置について説明するための図面である。
タイルに基づくレンダリング(TBR)について説明するための図面である。
テッセレーション・パイプラインについて説明するための図面である。
テッセレーション・パイプラインについて説明するための図面である。
テッセレーション・パイプラインについて説明するための図面である。
一実施形態による図1のGPUの詳細ハードウェア構造を図示したブロック図である。
一実施形態によってGPUで遂行することができる多種のグラフィックス・パイプラインを選択することについて説明するための図面である。
一実施形態による三次元客体を分割するためのタイルの個数と、グラフィックス処理性能(または、効率)との関係について説明するための図面である。
一実施形態による三次元客体を分割するためのタイルの個数と、グラフィックス処理性能(または、効率)との関係について説明するための図面である。
一実施形態による、出力パッチの出力コントロールポイントと、テッセレーティングされたプリミティブとの関係について説明するための図面である。
一実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。
一実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。
他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。
他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。
他の実施形態によって、パッチのテッセレーション結果、パッチが属するタイルリストと、テッセレーティングされたプリミティブが属するタイルリストとが異なる場合について説明するための図面である。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。
さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。
一実施形態によるコンピューティング装置の詳細ハードウェア構成を図示したブロック図である。
一実施形態によってGPUで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
一実施形態によってGPUで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
他の実施形態によってGPUで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
他の実施形態によってGPUで処理されるグラフィックス・パイプラインの種類を選択するための条件について説明するための図面である。
一実施形態によるグラフィックス・パイプラインにおいて、メモリのビンストリームに保存された可視性ストリームが適用される例示について説明するための図面である。
他の実施形態によるグラフィックス・パイプラインにおいて、メモリのビンストリームに保存された可視性ストリームが適用される例示について説明するための図面である。
一実施形態によって、ビニング・パイプラインが完了し、ビンストリームに保存される可視性ストリームについて説明するための図面である。
他の実施形態によって、ビニング・パイプラインが完了し、ビンストリームに保存される可視性ストリームについて説明するための図面である。
一実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。
他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。
さらに他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。
さらに他の実施形態によるコンピューティング装置において、グラフィックス・パイプラインを遂行する方法のフローチャートである。

実施例

0046

本発明で使用される用語は、本発明での機能を考慮しながら、可能な限り現在広く使用される一般的な用語を選択したが、それは、当業者の意図、判例あるいは新たな技術の出現などによって異なりもする。また、特定の場合は、出願人が任意に選定した用語もあり、その場合、当該発明の説明部分で詳細にその意味を記載する。従って、本発明で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本発明の全般にわたった内容とを基に定義されなければならない。

0047

明細書全体で、ある部分が他の部分と連結されているとするとき、それは、直接的に連結されている場合だけではなく、その中間に他の素子を挟んで電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「モジュール」などの用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアで具現されるか、あるいはハードウェアとソフトウェアとの結合によって具現されもする。

0048

本明細書で使用される「構成される」または「含む」というような用語は、明細書上に記載されたさまざまな構成要素、あるいは多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうち一部の構成要素または一部の段階は、含まれないこともあり、またはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。

0049

また、本明細書で使用される「第1」または「第2」のように序数を含む用語は、多様な構成要素について説明するところに使用するが、前記構成要素は、前記用語によって限定されるものではない。前記用語は、1つの構成要素を他の構成要素から区別する目的のみに使用される。

0050

以下、添付された図面を参照しながら、ただ例示のための実施形態によって発明について詳細に説明する。下記実施形態は、発明を具体化するためのものであり、発明の権利範囲を制限したり、あるいは限定したりするものではないということは言うまでもない。詳細な説明及び実施形態から、発明が属する技術分野の専門家が容易に類推することができることは、発明の権利範囲に属すると解釈される。

0051

図1は、一実施形態によるコンピューティング装置について説明するための図面である。

0052

図1を参照すれば、コンピューティング装置1は、GPU(graphics processing unit)10、CPU(central processing unit)20、メモリ30及びバス40を含む。図1に図示されたコンピューティング装置1には、実施形態と係わる構成要素だけが図示されている。従って、図1に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということを当該技術分野の通常の技術者であるならば、理解することができるであろう。

0053

コンピューティング装置1は、デスクトップコンピュータ、ノート型パソコン、スマートフォン、PDA(personal digital assistant)、携帯型メディアプレイヤ、ビデオゲーム用コンソール、テレビセットトップボックス、タブレットデバイス、電子ブックリーダ、ウェアラブルデバイスなどを例として挙げることができるが、それらに制限されるものではない。すなわち、コンピューティング装置1は、コンテンツのディスプレイのためのグラフィックスプロセッシング機能を有する装置であり、コンピューティング装置1の範疇には多様な装置が含まれる。

0054

CPU 20は、コンピューティング装置1の全般的な動作及び機能を制御するハードウェアである。例えば、CPU 20は、運用体制(OS:operating system)を駆動し、GPU 10のためのグラフィックスAPI(application programming interface)を呼び出し、GPU 10のドライバを実行させることができる。また、CPU 20は、メモリ30に保存された多様なアプリケーション、例えば、ウェブブラウジング・アプリケーション、ゲーム・アプリケーション、ビデオ・アプリケーションなどを実行することができる。

0055

GPU 10は、グラフィックス・パイプライン(graphics pipeline)を遂行するグラフィック専用プロセッサであり、三次元イメージ上の三次元客体を、ディスプレイ用の二次元イメージにレンダリングするために、三次元グラフィックス・パイプラインを遂行するように具現されたハードウェアでもある。例えば、GPU 10は、シェーディング、ブレンディングイルミネーティングのような多様な機能、及びディスプレイされるピクセルに対するピクセル値を生成するための多様な機能を遂行することもできる。

0056

GPU 10は、タイル基盤(tile-based)グラフィックス・パイプライン、またはタイル基盤レンダリング(TBR:tile-based rendering)を遂行することができる。タイル基盤(又はタイルに基づく)という用語は、動画の各フレームを、複数のタイルに区分した(divide;partitioning)後、タイル単位で(per tile)レンダリングを行うことを意味する。タイル基盤のアーキテクチャは、ピクセル単位でフレームを処理するときより演算量が少なくもなるために、スマートフォン、タブレットデバイスのように、比較的処理性能が低いモバイルデバイス(または、エンベデッドデバイス)で使用するグラフィックスレンダリング方法でもある。

0057

図1を参照すれば、GPU 10は、ビニング・パイプライン(binning pipeline)101及びレンダリング・パイプライン(rendering pipeline)102を含むグラフィックス・パイプラインを遂行することができる。ビニング・パイプライン101は、二次元客体または三次元客体を構成する(make up)バーテックス(vertices)、プリミティブ(primitives)またはパッチ(patches)がどのタイルに含まれるかということを示すタイルリストを生成するプロセスである。そのような理由により、ビニング・パイプライン101は、タイリング・パイプライン(tiling pipeline)、ビニングフェーズ(binning phase)の用語のように、他の用語にも代替可能である。レンダリング・パイプライン102は、ビニング・パイプライン101で生成されたタイルリストに基づいて、タイル単位で、客体をレンダリングするプロセスである。本願における「客体」は「対象」又は「オブジェクト」等のように言及されてもよい。レンダリング・パイプライン102が完了すれば、二次元ディスプレイ画面上に表示される二次元客体または三次元客体のピクセル表現が決定される。レンダリング・パイプライン102は、レンダリングフェーズ(rendering phase)の用語のように、他の用語にも代替可能である。

0058

ビニング・パイプライン101及びレンダリング・パイプライン102それぞれは、テッセレーション・パイプライン(tessellation pipeline)を含んでもよい。すなわち、GPU 10は、ディファードテセレーション(deferred tessellation)を遂行することができる。MicroSoft社のDirectX11(DX11)API、OpenGL 4.0 APIなどを含んだ一部のグラフィックス・パイプラインは、グラフィックスプリミティブ(または、グラフィックスパッチ)のテッセレーションのためのさらなるプロセッシングステージを含む。テッセレーションは、グラフィックスパッチをさらに小さいグラフィックスプリミティブに分割し、さらに微細ディテールを有するイメージのディスプレイを可能にするプロセスである。コンピューティング装置1のGPU 10で駆動されるビニング・パイプライン101及びレンダリング・パイプライン102を含むグラフィックス・パイプラインは、そのようなテッセレーションを支援することができる。一方、本明細書で、以下で説明される実施形態は、GPU 10によって駆動される。

0059

メモリ30は、コンピューティング装置1内で処理される各種データを保存するハードウェアであり、例えば、メモリ30は、GPU 10及びCPU 20で処理されたデータ及び処理されるデータを保存することができる。また、メモリ30は、GPU 10及びCPU 20によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ30は、DRAM(dynamic random access memory)・SRAM(static random access memory)のようなRAM(random access memory)、ROM(read-only memory)、EEPROM(electrically erasable and programmable read only memory)、CD(compact disc)−ROM、ブルーレイ、他の光学ディスクストレージ、HDD(hard disk drive)、SSD(solid state drive)またはフラッシュメモリを含み、さらに、コンピューティング装置1にアクセスされる外部の他のストレージデバイスを含んでもよい。

0060

バス40は、コンピューティング装置1内のハードウェア間で、データを送受信することができるように、ハードウェアを連結させるハードウェアであって、バス40は、例えば、PCIbus、PCI Express busのような多様な種類を含んでもよい。

0061

一方、本明細書で言及されるビニング・パイプライン101は、以下の実施形態で説明されるビニング・パイプライン101−1,101−2,101−3または101−4を含むものであり、ビニング・パイプライン101−1,101−2,101−3または101−4のうちいずれか一つに該当する。また、本明細書で言及されるレンダリング・パイプライン102は、以下の実施形態で説明されるレンダリング・パイプライン102−1,102−2,102−3または102−4を含むものであり、レンダリング・パイプライン102−1,102−2,102−3または102−4のうちいずれか一つに該当する。

0062

図2は、タイル基盤レンダリング(TBR)について説明するための図面である。

0063

図2を参照すれば、自動車客体220は、ある動画でのある1フレームに該当すると仮定する。図1のGPU 10は、三次元自動車客体220が含まれた1フレームを、NxM(N、Mは自然数)タイル210に分割する。ここで、三次元自動車客体220が含まれたフレームをタイル210に分割し、どのタイル210に三次元自動車客体220が存在するかということを判断するのは、図1のビニング・パイプライン101によって遂行される。その後、図1のGPU 10は、タイル単位で、タイル210に含まれた三次元自動車客体220をレンダリングし、ピクセル表現に変換する。ここで、タイル単位で、三次元自動車客体220をレンダリングし、ピクセル表現に変換することは、図1のレンダリング・パイプライン102によって遂行される。そのように、1フレームに含まれた三次元自動車客体220を、ピクセル単位でレンダリングするのではない、タイル210を利用してレンダリングすることを、タイル基盤レンダリング(TBR)という。

0064

図3ないし図5は、テッセレーション・パイプラインについて説明するための図面である。以下では、図3ないし図5を連繋させて説明する。前述のように、図3ないし図5で説明するテッセレーション・パイプライン300は、図1のビニング・パイプライン101及びレンダリング・パイプライン102それぞれに、そのまま適用されて含まれるか、あるいは若干変形されて適用される。

0065

図3を参照すれば、テッセレーション・パイプライン300は、ハルシェーダ(hull shader)121、テッセレータ(tessellator)123及びドメインシェーダ(domain shader)125によって遂行される。すなわち、本明細書で説明するテッセレーション・パイプライン300の用語は、ハルシェーダ121によるハルシェーディング、テッセレータ123によるテッセレーティング、及びドメインシェーダ125によるドメインシェーディングのプロセス(または、ステージ)のうち一つ以上のステージを含むと定義される。

0066

ハルシェーダ121は、低次数(low order)の表面を表現する入力コントロールポイント(input control points)を、パッチを構成する(make up)出力コントロールポイント(output control points)に変換する。例えば、ハルシェーダ121は、入力コントロールポイントを変換し、図4に図示されたコントロールポイントP00,P01,P02,P03,P10,P11,P12,P13,P20,P21,P22,P23,P30,P31,P32及びP33によって構成されたメッシュ(mesh)のパッチ410を生成することができる。ここで、該パッチは、三角形四角形等値線(isoline)のようなポリゴン形態を有することもできる。

0067

ハルシェーダ121は、パッチを構成する出力コントロールポイントを生成すると同時に、テッセレーションファクタ(TF:tessellation factor、TF)(または、テッセレーションレベルTL:tessellation level)を決定することができる。テッセレーションファクタ(TF)またはテッセレーションレベル(TL)は、パッチをどの程度分割(partition)するか、またはパッチをいかに分割するかということを示すインデックスである。図5に図示されたテーブル500は、テッセレーションファクタ(TF)と、分割される三角形の個数との関係を定義したテーブルである。テーブル500によれば、テッセレーションファクタ(TF)が1である場合、三角形の個数が1であるので、パッチに対するテッセレーションは行われない。しかし、テッセレーションファクタ(TF)が増加するほど、三角形の個数は幾何級数的に増加する。言い換えれば、テッセレーションファクタ(TF)が増加するほど、分割される三角形の個数が多くなるということは、GPU 10において、あるパッチに対して、処理されなければならない演算量が増加するということを意味する。ただし、テッセレーションファクタ(TF)が増加すればするほど、客体のパッチに対するさらにスムーズな表現は可能である。一方、図5のテーブル500では、分割されるポリゴンが三角形である場合を例として挙げたが、それに制限されるものではなく、該パッチは、四角形、等値線などの他のポリゴンに分割されてもよい。

0068

ハルシェーダ121は、出力パッチの出力コントロールポイント及びテッセレーションファクタ(TF)に係わる情報を、テッセレータ123及びドメインシェーダ125に伝達する。

0069

テッセレータ123は、ハルシェーダ121から受信されたテッセレーションファクタ(TF)を利用して、出力コントロールポイントに対する重心座標系(barycentric coordinates)でのuvw座標及び加重値を計算する。

0070

ドメインシェーダ125は、ハルシェーダ121から受信された出力パッチの出力コントロールポイント及びテッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標は、オプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(tessellated vertices)を生成する。図4を参照すれば、テッセレーティングされたバーテックスの位置は、境界420を形成する(make up)。すなわち、パッチ410は、テッセレーション・パイプラインが遂行されることにより、さらにスムーズになった境界420上のバーテックス(または、プリミティブ)に変換される。

0071

図6は、一実施形態による、図1のGPUの詳細ハードウェア構造を図示したブロック図である。

0072

図6を参照すれば、GPU 10は、グラフィックス・パイプライン100を遂行する入力アセンブラ(input assembler)110、バーテックスシェーダ(vertex shader)115、ハルシェーダ121、テッセレータ123、ドメインシェーダ125、ジオメトリシェーダ(geometry shader)130、ビナ(binner)135、ラスタライザ(rasterizer)140、ピクセルシェーダ(pixel shader)150及び出力マージャ(output merger)160を含んでもよい。また、GPU 10は、コントローラ170及びバッファ180をさらに含んでもよい。一方、GPU 10内で、グラフィックス・パイプライン100を遂行する前述の構成は、以下で説明する機能に基づいて分類されたものでもある。従って、グラフィックス・パイプライン100を遂行する前述の構成それぞれは、以下で説明する機能それぞれを実行させるプログラムロジックまたはソフトウェアモジュールで具現される。それと異なり、グラフィックス・パイプライン100を遂行する前述の構成は、GPU 10内に具備されたサブ(sub)プロセッシングユニット(または、プロセッサコア)それぞれによって具現されもする。すなわち、グラフィックス・パイプライン100を遂行する前述の構成の具現形態は、いずれか一つによって制限されるものではない。さらに、グラフィックス・パイプライン100を遂行する前述の構成の名称は、以下で説明する機能に基づいて付与されたものでもあるが、そのような名称が多様に変更されるということは、当該技術分野の当業者であるならば、理解することができるであろう。例えば、一具現形態によって、ビナ135とコントローラ170は、別個の構成でもあるか、あるいは他の具現形態によって、ビナ135がコントローラ170に含まれるように具現されることにより、別途のビナ135なしに、コントローラ170だけが存在することもある。

0073

一方、本明細書によれば、GPU 10でグラフィックス・パイプライン100を遂行する構成の名称は、説明の便宜のために、Microsoft社のDirect X11(DX11)に定義された名称を使用したが、その構成の名称は、それに制限されるものではない。すなわち、GPU 10でグラフィックス・パイプライン100を遂行する構成は、OpenGL(Open Graphics Library)4.0、CUDA(Compute Unified Device Architecture)6.0のような他のAPIで定義された類似した構成にも対応する。例えば、ドメインシェーダ125は、OpenGL4.0で使用されるテッセレーションエバリュエーションシェーダ(tessellation evaluation shader)にも対応し、GPU 10内の他の構成も同様に、OpenGL 4.0またはCUDA6.0のような他のAPIで使用される構成にも対応するということは、当該技術分野の当業者であるならば、理解することができるであろう。

0074

入力アセンブラ110は、メモリ30(図1)に保存された客体に係わるバーテックスのデータを、グラフィックス・パイプライン100に供給する。グラフィックス・パイプライン100に供給されたバーテックスは、メッシュ(mesh)または表面(surface)の表現であるパッチに係わるものでもあるが、それに制限されるものではない。

0075

バーテックスシェーダ115は、入力アセンブラ110によって供給されたバーテックスをハルシェーダ121の入力コントロールポイントとして伝達する。DirectX9(DX9)で定義されたバーテックスシェーディングは、バーテックスに係わるワールドビュープロジェクション(world-view-projection)を遂行した。しかし、それとは異なり、テッセレーション・パイプラインが導入したDirectX11(DX11)で定義されたバーテックスシェーディングは、バーテックスに係わるワールド・ビュー・プロジェクションを遂行せず、ただバーテックスを次のステージに伝達してだけである。本実施形態において、バーテックスシェーダ115は、それと類似して動作することができる。すなわち、バーテックスシェーダ115は、入力アセンブラ110によって供給されたバーテックスに対応する入力コントロールポイントのみハルシェーダ121に伝達するだけであり、新たなコントロールポイントを生成しない。

0076

ハルシェーダ121、テッセレータ123及びドメインシェーダ125は、先に図3で説明したテッセレーション・パイプライン300を遂行することができる。すなわち、ハルシェーダ121に入力された入力コントロールポイントは、ドメインシェーダ125から、出力パッチ(output patch)に係わるテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)として出力される。

0077

ジオメトリシェーダ130は、ドメインシェーダ125から受信されたテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)から、さらなるバーテックス(または、プリミティブ)を生成するためにも使用されるオプション的な構成要素である。

0078

ビナ135は、ドメインシェーダ125またはジオメトリシェーダ130からの出力プリミティブを利用して、ビニングまたはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)を遂行し、出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを生成(ビニング)する。一方、他の実施形態により、ビナ135は、コントローラ170に含まれた構成でもある。

0079

ラスタライザ140は、生成されたタイルリストに基づいて、ドメインシェーダ125またはジオメトリシェーダ130からの出力プリミティブを、二次元空間でのピクセル値に変換する。ピクセルシェーダ150は、デプステスト、クリッピング(clipping)、シザリング(scissoring)、ブレンディングのような追加動作を、ピクセルに対して遂行することもできる。ピクセルシェーダ150のピクセルシェーディング結果は、出力マージャ160によって、バッファ180に保存された後、動画のフレームとしてディスプレイされる。

0080

コントローラ170は、グラフィックス・パイプライン100の各構成要素(入力アセンブラ110、バーテックスシェーダ115、ハルシェーダ121、テッセレータ123、ドメインシェーダ125、ジオメトリシェーダ130、ビナ135、ラスタライザ140、ピクセルシェーダ150及び出力マージャ160)及びバッファ180の全般的な機能及び動作を制御する。一方、コントローラ170は、図7で説明するグラフィックス・パイプライン100のモードを制御することができる。

0081

図7は、一実施形態によってGPUで遂行することができる多種のグラフィックス・パイプラインを選択することについて説明するための図面である。

0082

図7を参照すれば、MODE(1)ないしMODE(8)のグラフィックス・パイプラインは、以下の図面で説明する実施形態であり、コントローラ170は、それらのうち1つのパイプラインがGPU 10で遂行されるように制御することができる。

0083

さらに詳細に説明すれば、コントローラ170は、MODE(1)ないしMODE(8)のグラフィックス・パイプラインに係わる効率モード(efficiency mode)をオフにするか(turn OFF)、あるいはオンにする(turn ON)。効率モードのON/OFFは、コンピューティング装置1のユーザによって設定されるか、あるいはグラフィックス・パイプラインによって処理される動画の処理環境(例えば、解像度、容量、コンピューティング装置1の性能など)に依存する。

0084

効率モードがオフになった場合、コントローラ170は、一般的なグラフィックス・パイプライン109を遂行することができる。ここで、一般的なグラフィックス・パイプライン109は、公知の従来のグラフィックス・パイプラインであり、例えば、DirectX9(DX9)、DirectX10(DX10)、DirectX11(DX11)、CUDA 6.0、OpenGL 4.0などでもある。

0085

効率モードがオンになったON場合、コントローラ170は、MODE(1)ないしMODE(8)のグラフィックス・パイプラインのうちいずれか一つを遂行することができる。MODE(1)ないしMODE(8)のうちいずれか1つの選択は、コンピューティング装置1のユーザによって設定されるか、あるいはグラフィックス・パイプラインによって処理される動画の処理環境(例えば、タイルサイズ、解像度、容量、コンピューティング装置1の性能など)に依存する。MODE(1)の場合、コントローラ170は、ビニング・パイプライン101−1及びレンダリング・パイプライン102−1を含んだグラフィックス・パイプラインが、GPU 10で遂行されるように制御し、MODE(2)の場合、コントローラ170は、ビニング・パイプライン101−2及びレンダリング・パイプライン102−1を含んだグラフィックス・パイプラインが、GPU 10で遂行されるように制御し、MODE(3)の場合、コントローラ170は、ビニング・パイプライン101−3及びレンダリング・パイプライン102−1を含んだグラフィックス・パイプラインが、GPU 10で遂行されるように制御し、MODE(4)の場合、コントローラ170は、ビニング・パイプライン101−4及びレンダリング・パイプライン102−1を含んだグラフィックス・パイプラインが、GPU 10で遂行されるように制御し、MODE(5)の場合、コントローラ170は、ビニング・パイプライン101−3及びレンダリング・パイプライン102−2を含んだグラフィックス・パイプラインが、GPU 10で遂行されるように制御し、MODE(6)の場合、コントローラ170は、ビニング・パイプライン101−4及びレンダリング・パイプライン102−2を含んだグラフィックス・パイプラインが、GPU 10で遂行されるように制御し、MODE(7)の場合、コントローラ170は、ビニング・パイプライン101−3、第1レンダリング・パイプライン102−3及び第2レンダリング・パイプライン102−4を含んだグラフィックス・パイプラインが、GPU 10で遂行されるように制御し、MODE(8)の場合、コントローラ170は、ビニング・パイプライン101−4、第1レンダリング・パイプライン102−3及び第2レンダリング・パイプライン102−4を含んだグラフィックス・パイプラインが、GPU 10で遂行されるように制御することができる。以下では、MODE(1)ないしMODE(8)それぞれのグラフィックス・パイプラインに係わる実施形態について、さらに詳細に説明する。

0086

図8A及び図8Bは、一実施形態による三次元客体を分割するための、タイルの個数と、グラフィックス処理性能(または、効率)との関係について説明するための図面である。

0087

図8Aを参照すれば、三次元客体815を、10x10のタイル810に分割した場合を示し、図8Bを参照すれば、三次元客体815を、2x2のタイル820に分割した場合を示す。GPU 10は、タイル単位で、タイル基盤レンダリングまたはタイル基盤グラフィックス・パイプラインを遂行するために、図8Aに図示された三次元客体815に対するレンダリングは、100個のタイルに対して遂行される。それとは異なり、図8Bに図示された三次元客体815に対するレンダリングは、ただ4個のタイルに対してのみ遂行される。図8Aに図示されたタイル810のうちでは、1/3ほどだけが三次元客体815にオーバーラップされるために、残りの2/3ほどのタイル810については、レンダリングがスキップされるであろうが、結局は、100個のタイル810それぞれに対するビニング(または、タイリング)は、先行されるしかないということは言うまでもない。それに比して、図8Bに図示された4個のタイル820それぞれは、いずれも三次元客体815にオーバーラップされるから、4個のタイル820それぞれに対する並列的なグラフィックスプロセスが遂行される。

0088

一方、現在多くのGPUは、SIMT(single instruction multiple thread)アーキテクチャによって製造されている実情である。SIMTアーキテクチャは、1つのプログラムで多くのデータを処理するためのSPMD(single program multiple data)プロセッサを具現する方式のうち一つである。SIMTアーキテクチャは、さらに小さいコントロール・ハードウェアを使用して、多量のデータを処理することは可能であるが、スレッド(threads)それぞれの流れが分岐されること(thread divergence)を処理し難く、処理効率が低くなるという問題が起こる。

0089

前述の図8A及び図8Bを比較すれば、SIMTアーキテクチャは、図8Aの100個のタイル810に対して、100個のスレッドを生成して処理してこそ作業を完了することができるが、それとは異なり、SIMTアーキテクチャは、図8Bの4個のタイル820については、さらに少ないただ4個のスレッドのみを生成して処理すれば、作業を完了することができる。図8Aでの1つのタイルの大きさ、及び1つのタイルに含まれた客体の大きさは、図8Bと比較して小さいために、処理されなければならないグラフィックデータは、図8Aの場合、さらに小さくてよい。しかし、スレッド複雑度(thread divergence)がはるかに増大するために、図8Aのように、多くのタイル810で三次元客体815を分割することが、必ずしも図8Bの場合より有利であるといは言えない。そのような理由のために、SIMTアーキテクチャで具現された最近のGPUは、大きいタイルサイズ(big tile size)を適用する実情である。

0090

図9は、一実施形態による、出力パッチの出力コントロールポイントと、テッセレーティングされたプリミティブとの関係について説明するための図面である。

0091

先に図8A及び図8Bで説明したように、GPU 10が大きいタイルサイズを利用する場合、タイルサイズが大きくなるにつれ、三次元客体のあるパッチ410がいずれか1つのタイル(tile0)901に含まれる確率が上昇する。ビニング・パイプライン101(図1)においてテッセレーション・パイプラインは、出力パッチ410(出力コントロールポイント415)をテッセレーティングし、さらに多くの個数のテッセレーティングされたプリミティブ425を生成(produce)し、テッセレーティングされたプリミティブ425に対するビニング(または、タイリング)を行う。そのとき、図9に図示されているように、1つのタイル901内に含まれた出力パッチ410(出力コントロールポイント415)が、テッセレーション・パイプラインによって処理されるとしても、テッセレーティングされたプリミティブ425が形成する(form)境界(boundary)420は、出力パッチ410が形成する境界(boundary)と同様に、1つのタイル902内に位置することができる。なぜならは、テッセレーティングされたプリミティブ425が形成する境界420は、出力パッチ410が形成する境界内に位置するように、GPU 10のグラフィックス・パイプラインがプログラミングされるからである。また、そうではない場合には、コンパイラ(compiler)によってデバッギング(debugging)される。

0092

従って、出力パッチ410(出力コントロールポイント415)に対するビニング(または、タイリング)の結果は、タイル(tile0)901であり、テッセレーティングされたプリミティブ425に対するビニングの結果であるタイル(tile0)902と同一である。それにより、ビニング・パイプライン101(図1)のテッセレーション・パイプラインにおいて、テッセレータ123(図6)によるテッセレーションがスキップされるとしても、最終的なビニング・パイプライン101(図1)の結果は、テッセレータ123(図6)によるテッセレーションがスキップされない場合と同一であると仮定することができる。

0093

一方、出力パッチ410(出力コントロールポイント415)に対するテッセレーションファクタ(TF)(または、テッセレーションレベル(TL))についても、前述の仮定が成立する。例えば、低いテッセレーションファクタ(例えば、TF=3)によって生成されたテッセレーティングされたプリミティブが形成する境界は、高いテッセレーションファクタ(例えば、TF=13)によって生成されたテッセレーティングされたプリミティブが形成する境界内に含まれもする。従って、ビニング・パイプライン101(図1)のテッセレーション・パイプラインにおいて、ハルシェーダ121(図6)によって決定されたテッセレーションファクタ(例えば、TF=13)ではない、さらに低いテッセレーションファクタ(例えば、TF=3)を新たに設定し、テッセレーション・パイプラインを遂行するとしても、ハルシェーダ121(図6)によって決定されたテッセレーションファクタ(例えば、TF=13)を利用した場合、及び新たに設定された、さらに低いテッセレーションファクタ(例えば、TF=3)を利用した場合のビニング(または、タイリング)結果は同一であると仮定することができる。

0094

一方、GPU 10で駆動されるグラフィックス・パイプラインを設計して検査するコンパイラは、図9で説明した仮定のように動作しないグラフィックス・パイプラインが設計(または、プログラミング)された場合、それをデバッギングし、図9で説明した仮定のように動作するようにコンパイリングすることができる。

0095

以下の図10ないし図21で説明する実施形態は、前述の仮定を前提として動作するが、それらに制限されるものではない。

0096

図10は、一実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。

0097

図10を参照すれば、ビニング・パイプライン101−1及びレンダリング・パイプライン102−1を含むグラフィックス・パイプラインは、図7で説明したMODE(1)に対応する。一方、図10に図示されたグラフィックス・パイプラインについては、図6で説明したGPU 10のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図10で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。

0098

バーテックスシェーダ115は、メモリ30に保存されたバーテックス1001を利用して、バーテックスシェーディング1011を行う。バーテックスシェーダ115は、バーテックス1001を変換し、ハルシェーダ121に入力コントロールポイントとして伝達する。

0099

ハルシェーダ121は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング1012を行う。ハルシェーダ121は、パッチを構成する出力コントロールポイントを生成すると同時に、テッセレーションファクタ(TF)を決定することができる。ハルシェーダ121は、出力パッチの出力コントロールポイントに係わる情報を、ジオメトリシェーダ130またはビナ135に伝達する。

0100

図3で説明したように、一般的なテッセレーション・パイプライン300(図3)は、ハルシェーダ121、テッセレータ123及びドメインシェーダ125のステージをいずれも含んでいるが、図10によれば、テッセレータ123及びドメインシェーダ125のステージはスキップされる。その理由は、先に図9で説明した仮定のように、パッチ410(図9)のビニング結果と、テッセレーティングされたプリミティブ425のビニング結果は、同一でもあるからである。

0101

ジオメトリシェーダ130は、ハルシェーダ121から出力された出力パッチの出力コントロールポイント以外に、さらなるバーテックス(または、プリミティブ)を生成するジオメトリシェーディング1013を遂行するためのオプション的な構成要素である。従って、ジオメトリシェーディング1013は、スキップされもする。

0102

ジオメトリシェーディング1013がスキップされた場合、ビナ135は、ハルシェーダ121から出力された出力パッチの出力プリミティブを利用して、ビニング1014またはタイリングを行う。もしジオメトリシェーディング1013が行われた場合、ビナ135は、ジオメトリシェーダ130から出力された出力パッチの出力プリミティブを利用して、ビニング1014またはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)などを遂行し、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを予測するビニング1014を行う。そのとき、ビニングされたタイルリストは、可視性ストリーム(visibility stream)として、メモリ30のビンストリーム(bin stream)1002に保存される。可視性ストリームは、入力パッチ(または、入力コントロールポイント、入力プリミティブ)または出力パッチ(または、出力コントロールポイント、出力プリミティブ)がタイルで見えるか否かということを示すストリームでもある。入力パッチ(または、入力コントロールポイント、入力プリミティブ)に係わる可視性ストリームは、入力可視性ストリーム(input visibility stream)であり、出力パッチ(または、出力コントロールポイント、出力プリミティブ)に係わる可視性ストリームは、出力可視性ストリーム(output visibility stream)であると定義される。

0103

ビナ135は、ビニング1014の結果、ハルシェーダ121から出力された出力パッチの出力プリミティブが、1つのタイルに含まれるか否かということを判断する。出力パッチが1つのタイルに含まれる場合、ビナ135は、PASS(1)により、出力パッチが1つのタイルに含まれるという情報を示す可視性ストリームをビンストリーム1002に保存する。それにより、1出力パッチに対するビニング・パイプライン101−1が完了する。すなわち、PASS(1)によれば、テッセレータ123のテッセレーティング1015、及びドメインシェーダ125のドメインシェーディング1016がスキップされる。

0104

しかし、出力パッチが1つのタイルに含まれない場合、ビナ135は、PASS(2)により、出力パッチに対するテッセレータ123のテッセレーティング1015、及びドメインシェーダ125のドメインシェーディング1016が行われるように制御する。すなわち、PASS(2)は、ビニング1014の結果、出力パッチが1つのタイルに含まれない場合にのみ進められる。

0105

テッセレータ123は、ハルシェーダ121から受信されたテッセレーションファクタ(TF)を利用して、出力コントロールポイントに対する重心座標系でのuvw座標及び加重値を計算するテッセレーティング1015を行う。

0106

ドメインシェーダ125は、ハルシェーダ121から受信された出力パッチの出力コントロールポイント及びテッセレーションファクタに係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング1016を行う。

0107

ジオメトリシェーダ130は、ドメインシェーダ125から受信されたテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)から、さらなるバーテックス(または、プリミティブ)を生成するジオメトリシェーディング1017を行うために使用されるオプション的な構成要素である。従って、PASS(2)でも、ジオメトリシェーディング1017は、スキップされもする。

0108

ビナ135は、PASS(2)により、ドメインシェーダ125またはジオメトリシェーダ130から出力されたテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング1018またはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)などを遂行し、テッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)それぞれが属したタイルの情報を示すタイルリストを予測するビニング1018を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ30のビンストリーム1002に保存される。

0109

GPU 10は、ビニング・パイプライン101−1が完了した場合、タイル単位で、レンダリング・パイプライン102−1を遂行する。レンダリング・パイプライン102−1は、先に図6で説明したグラフィックス・パイプライン100の入力アセンブラ110、バーテックスシェーダ115、ハルシェーダ121、テッセレータ123、ドメインシェーダ125、ジオメトリシェーダ130、ラスタライザ140、ピクセルシェーダ150及び出力マージャ160によるステージを遂行することを含んでもよい。

0110

以上で説明したMODE(1)による図10のビニング・パイプライン101−1は、出力パッチが1タイルに含まれる場合、テッセレータ123によるテッセレーティング1015をスキップすることができるので、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成(produce)しない。従って、テッセレータ123によるテッセレーティング1015を必須に行わなければならない図3のテッセレーション・パイプライン300(図3)と比較するとき、グラフィックデータの演算量をさらに減らすことができる。

0111

図11は、一実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。図11のフローチャートは、図10で説明したMODE(1)による、ビニング・パイプライン101−1及びレンダリング・パイプライン102−1を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図10で説明した内容は、図11のフローチャートに適用される。

0112

1101段階において、バーテックスシェーダ115は、メモリ30に保存されたバーテックス1001を利用して、バーテックスシェーディング1011を行う。

0113

1102段階において、ハルシェーダ121は、入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング1012を行う。ハルシェーダ121は、出力コントロールポイントを生成すると同時に、テッセレーションファクタ(TF)を決定することができる。ハルシェーダ121は、出力パッチの出力コントロールポイントに係わる情報をビナ135に伝達する。

0114

1103段階において、ビナ135は、出力パッチの出力プリミティブを利用して、ビニング1014またはタイリングを行う。

0115

1104段階において、ビナ135は、ビニング1014の結果、ハルシェーダ121から出力された出力パッチの出力プリミティブが1つのタイルに含まれるか否かということを判断する。もし出力パッチが1タイルに含まれる場合、1105段階に進む。しかし、出力パッチが1タイルに含まれない場合、1107段階に進む。

0116

1105段階において、ビニング1014の結果、出力パッチが1タイルに含まれる場合、ビナ135は、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを予測するビニング1014を行い、ビニングされたタイルリストに係わる可視性ストリームを、メモリ30のビンストリーム1002に保存する(PASS(1))。

0117

1106段階において、ラスタライザ140、ピクセルシェーダ150及び出力マージャ160は、レンダリング・パイプライン102−1を遂行する。そのとき、レンダリング・パイプライン102−1には、ビニング・パイプライン101−1と同様に、入力アセンブラ110、バーテックスシェーダ115、ハルシェーダ121、テッセレータ123、ドメインシェーダ125及びジオメトリシェーダ130によるステージが含まれてもよい。

0118

1107段階において、ビニング1014の結果、出力パッチが1タイルに含まれない場合、テッセレータ123は、ハルシェーダ121から受信されたテッセレーションファクタ(TF)を利用して、出力パッチの出力コントロールポイントに係わる重心座標系でのuvw座標及び加重値を計算するテッセレーティング1015を行う(PASS(2))。

0119

1108段階において、ドメインシェーダ125は、ハルシェーダ121から受信された出力パッチの出力コントロールポイント及びテッセレーションファクタに係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング1016を行う。

0120

1109段階において、ビナ135は、テッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング1018またはタイリングを行う。1109段階が完了した後、1105段階においてビナ135は、デプステスト(または、tile Z test)などを遂行し、テッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)それぞれが属したタイルの情報を示すタイルリストを予測するビニング1018を行い、ビニングされたタイルリストに係わる可視性ストリームをメモリ30のビンストリーム1002に保存する。

0121

図12は、他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。

0122

図12を参照すれば、ビニング・パイプライン101−2及びレンダリング・パイプライン102−1を含むグラフィックス・パイプラインは、図7で説明したMODE(2)に対応する。一方、図12に図示されたグラフィックス・パイプラインについては、図6で説明したGPU 10のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図12で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。

0123

バーテックスシェーダ115は、メモリ30に保存されたバーテックス1201を利用して、バーテックスシェーディング1211を行う。バーテックスシェーダ115は、バーテックス1201を変換し、ハルシェーダ121に入力コントロールポイントとして伝達する。

0124

ハルシェーダ121は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング1212を行う。ハルシェーダ121は、パッチを構成する出力コントロールポイントを生成すると同時に、第1テッセレーションファクタ(TF)を決定することができる。

0125

テッセレータ123は、ハルシェーダ121から第1テッセレーションファクタ(TF)を受信し、第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を新たに設定する。そして、テッセレータ123は、新たに設定された第2テッセレーションファクタ(TF)を利用して、出力コントロールポイントに係わる重心座標系でのuvw座標及び加重値を計算するテッセレーティング1213を行う。

0126

図3で説明したように、一般的なテッセレーション・パイプライン300(図3)においてテッセレータ123は、ハルシェーダ121によって決定されたテッセレーションファクタ(TF)をそのまま利用した。しかし、先に図9で説明した仮定のように、テッセレータ123が、ハルシェーダ121によって決定された第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を利用するとしても、ビニング結果は同一である。言い換えれば、テッセレーションファクタが低いほど、生成(produce)されるプリミティブ(三角形)の個数が少なくなるので、GPU 10の演算量は減り、GPU 10は、同一のビニング結果を獲得することができる。

0127

ドメインシェーダ125は、出力パッチの出力コントロールポイント及び第2テッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング1214を行う。

0128

ジオメトリシェーダ130は、ドメインシェーダ125から受信されたテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)から、さらなるバーテックス(または、プリミティブ)を生成するジオメトリシェーディング1215を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング1215は、スキップされもする。

0129

ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング1216またはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)などを遂行し、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)それぞれが属したタイルの情報を示すタイルリストを予測するビニング1216を行う。

0130

ビナ135は、ビニング1216の結果、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれるか否かということを判断する。

0131

第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれる場合、ビナ135は、PASS(1)により、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれるという情報を示す可視性ストリームを、ビンストリーム1202に保存する。それにより、第2テッセレーションファクタ(TF)を利用したビニング・パイプライン101−2が完了する。すなわち、ハルシェーダ121によって決定された第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を利用して、ビニング・パイプライン101−2が完了したので、GPU 10は、さらに少ない演算量で、ビニング・パイプライン101−2を完了させることができる。

0132

第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれない場合、ビナ135は、PASS(2)により、テッセレーティング1217が行われるように制御する。

0133

PASS(2)によれば、テッセレータ123は、新たに設定された第2テッセレーションファクタ(TF)ではない、ハルシェーダ121によって本来決定された第1テッセレーションファクタ(TF)を利用して、出力コントロールポイントに係わる重心座標系でのuvw座標及び加重値を計算するテッセレーティング1217を行う。

0134

ドメインシェーダ125は、出力パッチの出力コントロールポイント及び第1テッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング1218を行う。

0135

ジオメトリシェーダ130は、ドメインシェーダ125から受信されたテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)から、さらなるバーテックス(または、プリミティブ)を生成するジオメトリシェーディング1219を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング1219は、スキップされもする。

0136

ビナ135は、第1テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング1220またはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)などを遂行し、第1テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)それぞれが属したタイルの情報を示すタイルリストを予測するビニング1220を行う。そして、ビナ135は、テッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)に係わる可視性ストリームを、ビンストリーム1202に保存する。それにより、第1テッセレーションファクタ(TF)を利用したビニング・パイプライン101−2が完了する。

0137

GPU 10は、ビニング・パイプライン101−2が完了した場合、タイル単位でレンダリング・パイプライン102−1を遂行する。レンダリング・パイプライン102−1は、先に図6で説明したグラフィックス・パイプライン100の入力アセンブラ110、バーテックスシェーダ115、ハルシェーダ121、テッセレータ123、ドメインシェーダ125、ジオメトリシェーダ130、ラスタライザ140、ピクセルシェーダ150及び出力マージャ160によるステージを遂行することを含んでもよい。

0138

以上で説明したMODE(2)による図12のビニング・パイプライン101−2は、低いテッセレータファクタを利用して、テッセレータ123によるテッセレーティング1213を行うことができるので、さらに少ない個数のテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成(produce)することができる。従って、図3のテッセレーション・パイプライン300(図3)と比較するとき、グラフィックデータの演算量をさらに減らすことができる。

0139

図13は、他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。図13のフローチャートは、図12で説明したMODE(2)によるビニング・パイプライン101−2及びレンダリング・パイプライン102−1を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図12で説明した内容は、図13のフローチャートに適用される。

0140

1301段階において、バーテックスシェーダ115は、メモリ30に保存されたバーテックス1201を利用して、バーテックスシェーディング1211を行う。

0141

1302段階において、ハルシェーダ121は、入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング1212を行う。ハルシェーダ121は、出力コントロールポイントを生成すると同時に、第1テッセレーションファクタ(TF)を決定することができる。

0142

1303段階において、テッセレータ123は、ハルシェーダ121によって決定された第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を利用して、出力パッチの出力コントロールポイントに係わるテッセレーティング1213を行う。

0143

1304段階において、ドメインシェーダ125は、出力パッチの出力コントロールポイント及び第2テッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング1214を行う。

0144

1305段階において、ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング1216またはタイリングを行う。

0145

1306段階において、ビナ135は、ビニング1216の結果、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれるか否かということを判断する。もし第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれる場合、1307段階に進む。しかし、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1タイルに含まれない場合、1309段階に進む。

0146

1307段階において、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれる場合、ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれるという情報を示す可視性ストリームを、ビンストリーム1202に保存する。

0147

1308段階において、ラスタライザ140、ピクセルシェーダ150及び出力マージャ160は、レンダリング・パイプライン102−1を遂行する。そのとき、レンダリング・パイプライン102−1には、ビニング・パイプライン101−2と同様に、入力アセンブラ110、バーテックスシェーダ115、ハルシェーダ121、テッセレータ123、ドメインシェーダ125及びジオメトリシェーダ130によるステージが含まれてもよい。

0148

1309段階において、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルに含まれない場合、テッセレータ123は、新たに設定された第2テッセレーションファクタ(TF)ではない、ハルシェーダ121によって決定された第1テッセレーションファクタ(TF)を利用して、出力パッチの出力コントロールポイントに係わるテッセレーティング1217を行う。

0149

1310段階において、ドメインシェーダ125は、出力パッチの出力コントロールポイント及び第1テッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング1218を行う。

0150

1311段階において、ビナ135は、第1テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング1220またはタイリングを行う。1311段階が完了した後、1307段階においてビナ135は、テッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)に係わる可視性ストリームを、ビンストリーム1202に保存する。

0151

図14は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。

0152

図14を参照すれば、ビニング・パイプライン101−3及びレンダリング・パイプライン102−1を含むグラフィックス・パイプラインは、図7で説明したMODE(3)に対応する。一方、図14に図示されたグラフィックス・パイプラインについては、図6で説明したGPU 10のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図14で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。

0153

バーテックスシェーダ115は、メモリ30に保存されたバーテックス1401を利用して、バーテックスシェーディング1411を行う。バーテックスシェーダ115は、バーテックス1401を変換し、ハルシェーダ121に入力コントロールポイントとして伝達する。

0154

ハルシェーダ121は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング1412を行う。ハルシェーダ121は、出力パッチの出力コントロールポイントに係わる情報をビナ135に伝達する。

0155

図3で説明したように、一般的なテッセレーション・パイプライン300(図3)は、ハルシェーダ121、テッセレータ123及びドメインシェーダ125のステージをいずれも含んでいるが、図14によれば、テッセレータ123及びドメインシェーダ125のステージはスキップされる。その理由は、先に図9で説明した仮定のように、パッチ410(図9)のビニング結果と、テッセレーティングされたプリミティブ425のビニング結果は、同一でもあるからである。もしビニング結果が同じではないとしても、レンダリング・パイプライン102−1において、カーリング(curling)、クリッピング(clipping)、HSR(hidden surface removal)などのステージが遂行されるために、最終的なピクセレンダリング結果は同一である。

0156

ビナ135は、ハルシェーダ121から出力された出力パッチの出力プリミティブを利用して、ビニング1413またはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)などを遂行し、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを予測するビニング1413を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ30のビンストリーム(1402)に保存される。

0157

図10ないし図13で説明した実施形態と異なり、ビナ135は、ビニング1413の結果、ハルシェーダ121から出力された出力パッチの出力プリミティブが、1つのタイルに含まれるか否かということを判断しない。すなわち、出力パッチの出力プリミティブは、1つのタイルまたは多くのタイルに含まれてもよい。

0158

GPU 10は、ビニング・パイプライン101−3が完了した場合、タイル単位でレンダリング・パイプライン102−1を遂行する。レンダリング・パイプライン102−1は、バーテックスシェーダ115によるバーテックスシェーディング1421、ハルシェーダ121によるハルシェーディング1422、テッセレータ123によるテッセレーティング1423、ドメインシェーダ125によるドメインシェーディング1424、ジオメトリシェーダ130によるオプション的なジオメトリシェーディング1425、ラスタライザ140によるラスタライジング1426、ピクセルシェーダ150によるピクセルシェーディング1427のステージを含んでもよい。ピクセルシェーダ150によるピクセルシェーディング1427の結果は、バッファ1403に保存される。

0159

以上で説明したMODE(3)による図14のグラフィックス・パイプラインは、ビニング・パイプライン101−3において、テッセレータ123によるテッセレーティングをスキップすることができるので、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成(produce)しない。従って、テッセレータ123によるテッセレーティングを必須に行わなければならない図3のテッセレーション・パイプライン300(図3)と比較するとき、グラフィックデータの演算量をさらに減らすことができる。

0160

図15は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。図15のフローチャートは、図14で説明したMODE(3)によるビニング・パイプライン101−3及びレンダリング・パイプライン102−1を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図14で説明した内容は、図15のフローチャートに適用される。

0161

1511段階ないし1514段階を含むパイプライン1510は、ビニング・パイプライン101−3に対応し、1521段階を含むパイプライン1520は、レンダリング・パイプライン102−1に対応する。

0162

1511段階において、バーテックスシェーダ115は、メモリ30に保存されたバーテックス1401を利用して、バーテックスシェーディング1411を行う。

0163

1512段階において、ハルシェーダ121は、入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング1412を行う。

0164

1513段階において、ビナ135は、出力パッチの出力コントロールポイントに係わるビニング1413またはタイリングを行う。

0165

1514段階において、ビナ135は、ビニング1413の結果、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを、可視性ストリームとして、メモリ30のビンストリーム1402に保存する。図10ないし図13で説明した実施形態と異なり、ビナ135は、ハルシェーダ121から出力された出力パッチの出力プリミティブが、1つのタイルに含まれるか否かということを判断しない。すなわち、出力パッチの出力プリミティブは、1つのタイルまたは多くのタイルに含まれてもよい。

0166

1521段階において、GPU 10は、タイル単位でレンダリング・パイプライン102−1を遂行する。レンダリング・パイプライン102−1は、バーテックスシェーダ115によるバーテックスシェーディング1421、ハルシェーダ121によるハルシェーディング1422、テッセレータ123によるテッセレーティング1423、ドメインシェーダ125によるドメインシェーディング1424、ジオメトリシェーダ130によるオプション的なジオメトリシェーディング1425、ラスタライザ140によるラスタライジング1426、ピクセルシェーダ150によるピクセルシェーディング1427のステージを含んでもよい。

0167

図16は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。

0168

図16を参照すれば、ビニング・パイプライン101−4及びレンダリング・パイプライン102−1を含むグラフィックス・パイプラインは、図7で説明したMODE(4)に対応する。一方、図12に図示されたグラフィックス・パイプラインについては、図6で説明したGPU 10のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図16で説明した構成及びパイプラインステージ外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。

0169

バーテックスシェーダ115は、メモリ30に保存されたバーテックス1601を利用して、バーテックスシェーディング1611を行う。バーテックスシェーダ115は、バーテックス1601を変換し、ハルシェーダ121に入力コントロールポイントとして伝達する。

0170

ハルシェーダ121は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング1612を行う。ハルシェーダ121は、パッチを構成する出力コントロールポイントを生成すると同時に、第1テッセレーションファクタ(TF)を決定することができる。

0171

テッセレータ123は、ハルシェーダ121から、第1テッセレーションファクタ(TF)を受信し、第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を新たに設定する。そして、テッセレータ123は、新たに設定された第2テッセレーションファクタ(TF)を利用して、出力コントロールポイントに係わる重心座標系でのuvw座標及び加重値を計算するテッセレーティング1613を行う。

0172

図3で説明したように、一般的なテッセレーション・パイプライン300(図3)において、テッセレータ123は、ハルシェーダ121によって決定されたテッセレーションファクタ(TF)をそのまま利用した。しかし、先に図9で説明した仮定のように、テッセレータ123が、ハルシェーダ121によって決定された第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を利用するとしても、ビニング結果は同一である。もしビニング結果が同じではないとしても、レンダリング・パイプライン102−1において、カーリング、クリッピング、HSRなどのステージが遂行されるために、最終的なピクセレンダリング結果は同一である。

0173

ドメインシェーダ125は、出力パッチの出力コントロールポイント及び第2テッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング1614)を行う。

0174

ジオメトリシェーダ130は、ドメインシェーダ125から受信されたテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)から、さらなるバーテックス(または、プリミティブ)を生成するジオメトリシェーディング1615を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング1615は、スキップされもする。

0175

ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング1616)またはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)などを遂行し、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)それぞれが属したタイルの情報を示すタイルリストを予測するビニング1616を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ30のビンストリーム1602に保存される。

0176

図10ないし図13で説明した実施形態と異なり、ビナ135は、ビニング1616の結果、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が、1つのタイルに含まれるか否かということを判断しない。すなわち、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)は、1つのタイルまたは多くのタイルに含まれてもよい。

0177

GPU 10は、ビニング・パイプライン101−4が完了した場合、タイル単位でレンダリング・パイプライン102−1を遂行する。レンダリング・パイプライン102−1は、バーテックスシェーダ115によるバーテックスシェーディング1621、ハルシェーダ121によるハルシェーディング1622、テッセレータ123によるテッセレーティング1623、ドメインシェーダ125によるドメインシェーディング1624、ジオメトリシェーダ130によるオプション的なジオメトリシェーディング1625、ラスタライザ140によるラスタライジング1626、ピクセルシェーダ150によるピクセルシェーディング1627のステージを含んでもよい。ピクセルシェーダ150によるピクセルシェーディング1627の結果は、バッファ1603に保存される。

0178

以上で説明したMODE(4)による図16のビニング・パイプライン101−4は、低いテッセレータファクタを利用して、テッセレータ123によるテッセレーティング1613を行うことができるので、さらに少ない個数のテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成(produce)することができる。従って、図3のテッセレーション・パイプライン300(図3)と比較するとき、グラフィックデータの演算量をさらに減らすことができる。

0179

図17は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。図17のフローチャートは、図16で説明したMODE(4)によるビニング・パイプライン101−4及びレンダリング・パイプライン102−1を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図16で説明した内容は、図17のフローチャートに適用される。

0180

1711段階ないし1716段階を含むパイプライン1710は、ビニング・パイプライン101−4に対応し、1721段階を含むパイプライン1720は、レンダリング・パイプライン102−1に対応する。

0181

1711段階において、バーテックスシェーダ115は、メモリ30に保存されたバーテックス1601を利用して、バーテックスシェーディング1611を行う。

0182

1712段階において、ハルシェーダ121は、入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング1612を行う。

0183

1713段階において、テッセレータ123は、ハルシェーダ121によって決定された第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を利用して、出力パッチの出力コントロールポイントに係わるテッセレーティング1613を行う。

0184

1714段階において、ドメインシェーダ125は、出力パッチの出力コントロールポイント及び第2テッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング1614)を行う。

0185

1715段階において、ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング1616またはタイリングを行う。

0186

1716段階において、ビナ135は、ビニング1616の結果、出力パッチの出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを可視性ストリームとして、メモリ30のビンストリーム1602に保存する。図10ないし図13で説明した実施形態と異なり、ビナ135は、ハルシェーダ121から出力された出力パッチの出力プリミティブが、1つのタイルに含まれるか否かということを判断しない。すなわち、出力パッチの出力プリミティブは、1つのタイルまたは多くのタイルに含まれてもよい。

0187

1721段階において、GPU 10は、タイル単位でレンダリング・パイプライン102−1を遂行する。レンダリング・パイプライン102−1は、バーテックスシェーダ115によるバーテックスシェーディング1621、ハルシェーダ121によるハルシェーディング1622、テッセレータ123によるテッセレーティング1623、ドメインシェーダ125によるドメインシェーディング1624、ジオメトリシェーダ130によるオプション的なジオメトリシェーディング1625、ラスタライザ140によるラスタライジング1626、ピクセルシェーダ150によるピクセルシェーディング1627のステージを含んでもよい。そのとき、テッセレーティング1623及びドメインシェーディング1624は、第1テッセレーションファクタ(TF)を利用して行われる。

0188

図18は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。

0189

図18を参照すれば、ビニング・パイプライン101−3及びレンダリング・パイプライン102−2を含むグラフィックス・パイプラインは、図7で説明したMODE(5)に対応する。一方、図18に図示されたグラフィックス・パイプラインについては、図6で説明したGPU 10のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図18で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。

0190

図18に図示されたグラフィックス・パイプラインについては、説明の便宜のために、図19に図示された、複数のタイル(tile A,tile B,tile C及びtile D)にクロッシングされた(crossed)パッチ1900に対して遂行されると仮定して説明する。

0191

バーテックスシェーダ115は、メモリ30に保存されたバーテックス1801を利用して、バーテックスシェーディング1811を行う。バーテックスシェーダ115は、バーテックス1801を変換し、ハルシェーダ121に入力コントロールポイントとして伝達する。

0192

ハルシェーダ121は、低次数の表面を表現する入力コントロールポイントを、パッチ1900を構成する出力コントロールポイントに変換するハルシェーディング1812を行う。ハルシェーダ121は、出力パッチ1900の出力コントロールポイントに係わる情報をビナ135に伝達する。

0193

図3で説明したように、一般的なテッセレーション・パイプライン300(図3)は、ハルシェーダ121、テッセレータ123及びドメインシェーダ125のステージをいずれも含んでいるが、図18によれば、テッセレータ123及びドメインシェーダ125のステージはスキップされる。その理由は、先に図9で説明した仮定のように、パッチ410(図9)のビニング結果と、テッセレーティングされたプリミティブ425のビニング結果は、同一でもあるからである。もしビニング結果が同じではないとしても、レンダリング・パイプライン102−2において、カーリング、クリッピング、HSRなどのステージが遂行されるために、最終的なピクセレンダリング結果は同一である。

0194

ビナ135は、ハルシェーダ121から出力された出力パッチ1900の出力プリミティブを利用して、ビニング1813またはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)などを遂行し、出力パッチ1900の出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを予測するビニング1813を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ30のビンストリーム1802に保存される。

0195

ビナ135は、ビニング1813の結果、ハルシェーダ121から出力された出力パッチ1900の出力プリミティブが、複数のタイル(例えば、図19のtile A,tile B,tile C及びtile D)に含まれるか否かということを判断する。すなわち、ビナ135は、出力パッチ1900の出力プリミティブに対して、タイルクロッシング(tile -crossing)いかんを判断する。

0196

出力パッチ1900がタイルクロッシングされた場合(または、出力パッチ1900が、複数のタイルtile A,tile B,tile C及びtile Dに含まれる場合)、ビナ135は、複数のタイル(tile A,tile B,tile C及びtile D)のレンダリング順序をスケジューリングする。スケジューリング結果、ビナ135は、複数のタイルのうち、最初のレンダリング順序でスケジューリングされたタイル(tile A)を、基準タイル(reference tile)として決定する。ここで、基準タイルは複数のタイルのうち左側の最上端に位置したtile Aであると仮定して説明するが、それに制限されるものではなく、基準タイルは、左下端タイル、右上端タイル、右下端タイル、真ん中のタイルのような多様な所定基準によって変わることができる。ビナ135は、基準タイルtile Aに対するレンダリング・パイプライン102−2が、隣接タイル(neighboring tiles)(tile B,tile C及びtile D)より先に遂行されるように、レンダリング・パイプライン102−2の遂行タイミングをスケジューリングする。複数のタイル(tile A,tile B,tile C及びtile D)それぞれに対するレンダリング・パイプライン102−2は、GPU 10内の1つのプロセッサユニット(または、1つのプロセッサコア)によって順次に遂行されるか、あるいはGPU 10内の複数のプロセッサユニット(または、複数のプロセッサコア)によって並列的に遂行される。そのような、基準タイルの決定、及びレンダリングタイミングのスケジューリングは、ビナ135ではない、コントローラ170、またはGPU 10内の他の構成によって行われてもよい。すなわち、基準タイルの決定、及びレンダリングタイミングのスケジューリングの遂行の主体は、いずれか一つによって制限されるものではない。

0197

出力パッチ1900がタイルクロッシングされた場合、ビナ135は、基準タイル(tile A)の決定結果、及びレンダリングタイミングのスケジューリング結果を、メモリ30に保存する。

0198

それとは異なり、出力パッチ1900がタイルクロッシングされていない場合(または、出力パッチ1900が1つのタイルにだけ含まれる場合)、ビナ135は、基準タイルの決定、及びレンダリングタイミングのスケジューリングを行わない。

0199

GPU 10は、ビニング・パイプライン101−3が完了した場合、タイル単位でレンダリング・パイプライン102−2を遂行する。そのとき、ビニング・パイプライン101−3において、基準タイルがtile Aであると決定されたので、GPU 10は、基準タイル(tile A)に対するレンダリング・パイプライン102−2をまず遂行する。

0200

基準タイル(tile A)に対するレンダリング・パイプライン102−2は、バーテックスシェーダ115によるバーテックスシェーディング1821、ハルシェーダ121によるハルシェーディング1822、テッセレータ123によるテッセレーティング1823、ドメインシェーダ125によるドメインシェーディング1824、ジオメトリシェーダ130によるオプション的なジオメトリシェーディング1825、ラスタライザ140によるラスタライジング1826、ピクセルシェーダ150によるピクセルシェーディング1827のステージを含んでもよい。ピクセルシェーダ150によるピクセルシェーディング1827の結果は、バッファ1803に保存される。

0201

一方、基準タイル(tile A)に対するレンダリング・パイプライン102−2では、ビナ135によるビニング1828が追加して行われる。さらに詳細に説明すれば、ビナ135は、パッチ1900が、基準タイル(tile A)に隣接した(adjacent)隣接タイル(tile B,tile C及びtile D)それぞれで可視的であるか否かということを示す可視性ストリームを生成するビニング1828を行う。ここで、可視性ストリームは、本明細書で説明する全ての種類の可視性ストリームを含んでもよい。それにより、GPU 10は、基準タイル(tile A)に対するレンダリング・パイプライン102−2で生成された隣接タイル(tile B,tile C及びtile D)に係わる可視性ストリームを利用して、隣接タイル(tile B,tile C及びtile D)それぞれに対するレンダリング・パイプライン102−2が独立して遂行されるとき、可視的なバーテックス、可視的なプリミティブまたは可視的なパッチのみを処理することができるので、隣接タイル(tile B,tile C及びtile D)それぞれに対するレンダリング・パイプライン102−2でのデータ演算量が減る。

0202

以上で説明したMODE(5)による図18のグラフィックス・パイプラインは、ビニング・パイプライン101−3において、テッセレータ123によるテッセレーティングをスキップすることができるので、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成(produce)しない。従って、テッセレータ123によるテッセレーティングを必須に行わなければならない図3のテッセレーション・パイプライン300(図3)と比較するとき、グラフィックデータの演算量をさらに減らすことができる。

0203

図19は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。図19のフローチャートは、図18で説明したMODE(5)によるビニング・パイプライン101−3及びレンダリング・パイプライン102−2を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図18で説明した内容は、図19のフローチャートに適用される。

0204

1911段階ないし1915段階を含むパイプライン1910は、ビニング・パイプライン101−3に対応し、1921段階ないし1924段階を含むパイプライン1920は、基準タイル(tile A)に対するレンダリング・パイプライン102−2に対応する。

0205

1911段階において、バーテックスシェーダ115は、メモリ30に保存されたバーテックス1801を利用して、バーテックスシェーディング1811を行う。

0206

1912段階において、ハルシェーダ121は、入力コントロールポイントを、パッチ1900を構成する出力コントロールポイントに変換するハルシェーディング1812を行う。

0207

1913段階において、ビナ135は、出力パッチ1900の出力コントロールポイントに係わるビニング1813またはタイリングを行う。そして、ビナ135は、ビニング1813の結果、出力パッチ1900の出力プリミティブそれぞれが属したタイルの情報を示すタイルリストを、メモリ30のビンストリーム1802に保存する。

0208

1914段階において、ビナ135は、ハルシェーダ121から出力された出力パッチ1900の出力プリミティブが、複数のタイル(例えば、tile A,tile B,tile C及びtile D)に含まれるか否かということを判断する。すなわち、ビナ135は、出力パッチ1900の出力プリミティブに対して、タイルクロッシングいかんを判断する。もし出力パッチ1900がタイルクロッシングされた場合、1915段階に進み、出力パッチ1900がタイルクロッシングされていない場合、1930段階に進む。

0209

1915段階において、ビナ135は、複数のタイル(tile A,tile B,tile C及びtile D)のレンダリング順序をスケジューリングする。スケジューリング結果、ビナ135は、複数のタイルのうち、最初のレンダリング順序でスケジューリングされたタイル(tile A)を、基準タイルとして決定することができる。

0210

1921段階において、基準タイル(tile A)に対して、バーテックスシェーダ115は、メモリ30に保存されたバーテックス1801を利用して、バーテックスシェーディング1821を行う。
1922段階において、GPU 10は、基準タイル(tile A)に対して、ハルシェーダ121によるハルシェーディング1822、テッセレータ123によるテッセレーティング1823、及びドメインシェーダ125によるドメインシェーディング1824を含むテッセレーション・パイプラインを遂行する。

0211

1923段階において、GPU 10は、基準タイル(tile A)に対して、テッセレーション・パイプラインによって生成された、テッセレーティングされたプリミティブをレンダリングする。すなわち、GPU 10は、基準タイル(tile A)に対して、ラスタライジング1826及びピクセルシェーディング1827を行う。

0212

1924段階において、ビナ135は、パッチ1900が、隣接タイル(tile B,tile C及びtile D)それぞれで可視的であるか否かということを示す可視性ストリームを生成するビニング1828を行い、隣接タイル(tile B,tile C及びtile D)に係わる可視性ストリームを保存する。図19では、たとえ図示されていないとしても、GPU 10は、保存された可視性ストリームを利用して、隣接タイル(tile B,tile C及びtile D)に対するレンダリング・パイプライン102−2をそれぞれ遂行する。そのとき、隣接タイル(tile B,tile C及びtile D)に対するレンダリング・パイプライン102−2では、隣接タイル(tile B,tile C及びtile D)に係わる可視性ストリームによって可視的なバーテックス、可視的なプリミティブまたは可視的なパッチだけが処理されもする。

0213

1930段階において、GPU 10は、出力パッチ1900がタイルクロッシングされていない場合(出力パッチ1900が1つのタイルにだけ含まれた場合)、出力パッチ1900が含まれたタイルに対して、レンダリング・パイプライン102−2を遂行する。

0214

図20は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。

0215

図20を参照すれば、ビニング・パイプライン101−4及びレンダリング・パイプライン102−2を含むグラフィックス・パイプラインは、図7で説明したMODE(6)に対応する。一方、図20に図示されたグラフィックス・パイプラインについては、図6で説明したGPU 10のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図20で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。

0216

図20に図示されたグラフィックス・パイプラインについては、説明の便宜のために、図21に図示された、複数のタイル(tile A,tile B,tile C及びtile D)にクロッシングされたパッチ2100に対して遂行されると仮定して説明する。

0217

バーテックスシェーダ115は、メモリ30に保存されたバーテックス2001を利用して、バーテックスシェーディング2011を行う。バーテックスシェーダ115は、バーテックス2001を変換し、ハルシェーダ121に入力コントロールポイントとして伝達する。

0218

ハルシェーダ121は、低次数の表面を表現する入力コントロールポイントを、パッチ2100を構成する出力コントロールポイントに変換するハルシェーディング2012を行う。ハルシェーダ121は、パッチ2100を構成する出力コントロールポイントを生成すると同時に、第1テッセレーションファクタ(TF)を決定することができる。

0219

テッセレータ123は、ハルシェーダ121から第1テッセレーションファクタ(TF)を受信し、第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を新たに設定する。そして、テッセレータ123は、新たに設定された第2テッセレーションファクタ(TF)を利用して、出力コントロールポイントに係わる重心座標系でのuvw座標及び加重値を計算するテッセレーティング2013を行う。

0220

ドメインシェーダ125は、出力パッチ2100の出力コントロールポイント及び第2テッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング2014を行う。

0221

ジオメトリシェーダ130は、ドメインシェーダ125から受信されたテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)から、さらなるバーテックス(または、プリミティブ)を生成するジオメトリシェーディング2015を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング2015は、スキップされもする。

0222

ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング2016)またはタイリングを行う。すなわち、ビナ135は、デプステスト(または、tile Z test)などを遂行し、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)それぞれが属したタイルの情報を示すタイルリストを予測するビニング2016を行う。そのとき、ビニングされたタイルリストは、可視性ストリームとして、メモリ30のビンストリーム2002に保存される。

0223

ビナ135は、ビニング2016の結果、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が複数のタイル(例えば、図21のtile A,tile B,tile C及びtile D)に含まれるか否かということを判断する。すなわち、ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)に対して、タイルクロッシングいかんを判断する。

0224

第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)がタイルクロッシングされた場合(または、出力パッチが、複数のタイル(tile A,tile B,tile C及びtile D)に含まれる場合)、ビナ135は、複数のタイル(tile A,tile B,tile C及びtile D)のレンダリング順序をスケジューリングする。スケジューリング結果、ビナ135は、複数のタイルのうち、最初のレンダリング順序でスケジューリングされたタイル(tile A)を、基準タイル(reference tile)として決定することができる。ここで、基準タイルは、複数のタイルのうち左側の最上端に位置したtile Aであると仮定するが、それに制限されるものではなく、基準タイルは、左下端タイル、右上端タイル、右下端タイル、真ん中のタイルのような多様な所定基準によって異なってもよい。ビナ135は、基準タイル(tile A)に対するレンダリング・パイプライン102−2が、隣接タイル(tile B,tile C及びtile D)より先に遂行されるように、レンダリング・パイプライン102−2の遂行タイミングをスケジューリングする。複数のタイル(tile A,tile B,tile C及びtile D)それぞれに対するレンダリング・パイプライン102−2は、GPU 10内の1つのプロセッサユニット(または、1つのプロセッサコア)によって順次に遂行されるか、あるいはGPU 10内の複数のプロセッサユニット(または、複数のプロセッサコア)によって並列的に遂行される。そのような、基準タイルの決定、及びレンダリングタイミングのスケジューリングは、ビナ135ではない、コントローラ170、またはGPU 10内の他の構成によっても遂行される。すなわち、基準タイルの決定、及びレンダリングタイミングのスケジューリングの遂行主体は、いずれか一つによって制限されるものではない。

0225

第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)がタイルクロッシングされた場合、ビナ135は、基準タイル(tile A)の決定結果、及びレンダリングタイミングのスケジューリング結果をメモリ30に保存する。

0226

それとは異なり、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)がタイルクロッシングされていない場合(または、出力パッチが1つのタイルにだけ含まれる場合)、ビナ135は、基準タイルの決定、及びレンダリングタイミングのスケジューリングを行わない。

0227

GPU 10は、ビニング・パイプライン101−4が完了した場合、タイル単位でレンダリング・パイプライン102−2を遂行する。そのとき、ビニング・パイプライン101−4において、基準タイルがtile Aであると決定されたので、GPU 10は、基準タイル(tile A)に対するレンダリング・パイプライン102−2をまず遂行する。

0228

基準タイル(tile A)に対するレンダリング・パイプライン102−2は、バーテックスシェーダ115によるバーテックスシェーディング2021、ハルシェーダ121によるハルシェーディング2022、テッセレータ123によるテッセレーティング2023、ドメインシェーダ125によるドメインシェーディング2024、ジオメトリシェーダ130によるオプション的なジオメトリシェーディング2025、ラスタライザ140によるラスタライジング2026、ピクセルシェーダ150によるピクセルシェーディング2027のステージを含んでもよい。ピクセルシェーダ150によるピクセルシェーディング2027の結果は、バッファ2003に保存される。

0229

一方、基準タイル(tile A)に対するレンダリング・パイプライン102−2では、ビナ135によるビニング2028が追加して行われる。さらに詳細に説明すれば、ビナ135は、パッチ2100が、基準タイル(tile A)に隣接した隣接タイル(tile B,tile C及びtile D)それぞれで可視的であるか否かということを示す可視性ストリームを生成するビニング2028を行う。ここで、可視性ストリームは、本明細書で説明する全ての種類の可視性ストリームを含んでもよい。それにより、GPU 10は、基準タイル(tile A)に対するレンダリング・パイプライン102−2で生成された隣接タイル(tile B,tile C及びtile D)に係わる可視性ストリームを利用して、隣接タイル(tile B,tile C及びtile D)それぞれに対するレンダリング・パイプライン102−2が独立して遂行されるとき、可視的なバーテックス、可視的なプリミティブまたは可視的なパッチのみを処理することができるので、隣接タイル(tile B,tile C及びtile D)それぞれに対するレンダリング・パイプライン102−2でのデータ演算量が減る。

0230

以上で説明したMODE(6)による図20のグラフィックス・パイプラインは、ビニング・パイプライン101−4において、低いテッセレーションファクタによる小さい数のテッセレーティングされたプリミティブだけが生成(produce)される。従って、図3のテッセレーション・パイプライン300(図3)と比較するとき、グラフィックデータの演算量をさらに減らすことができる。

0231

図21は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインのフローチャートである。図21のフローチャートは、図20で説明したMODE(6)によるビニング・パイプライン101−4及びレンダリング・パイプライン102−2を含むグラフィックス・パイプラインを遂行するフローチャートである。従って、以下で省略された内容であるとしても、図20で説明した内容は、図21のフローチャートに適用される。

0232

2111段階ないし2117段階を含むパイプライン2110は、ビニング・パイプライン101−4に対応し、2121段階ないし2124段階を含むパイプライン2120は、基準タイル(tile A)に対するレンダリング・パイプライン102−2に対応する。

0233

2111段階において、バーテックスシェーダ115は、メモリ30に保存されたバーテックス2001を利用して、バーテックスシェーディング2011を行う。

0234

2112段階において、ハルシェーダ121は、入力コントロールポイントを、パッチ2100を構成する出力コントロールポイントに変換するハルシェーディング2012を行う。

0235

2113段階において、テッセレータ123は、ハルシェーダ121によって決定された第1テッセレーションファクタ(TF)より低い第2テッセレーションファクタ(TF)を利用して、出力パッチ2100の出力コントロールポイントに係わるテッセレーティング2013を行う。

0236

2114段階において、ドメインシェーダ125は、出力パッチ2100の出力コントロールポイント及び第2テッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング2014を行う。

0237

2115段階において、ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)を利用して、ビニング2016またはタイリングを行う。そして、ビナ135は、ビニング2016の結果、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)それぞれが属したタイルの情報を示すタイルリストを、メモリ30のビンストリーム2002に保存する。

0238

2116段階において、ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が、複数のタイル(例えば、tile A,tile B,tile C及びtile D)に含まれるか否かということを判断する。すなわち、ビナ135は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)に対して、タイルクロッシングいかんを判断する。もし第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)がタイルクロッシングされた場合、2117段階に進み、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)がタイルクロッシングされていない場合、2130段階に進む。

0239

2117段階において、ビナ135は、複数のタイル(tile A,tile B,tile C及びtile D)のレンダリング順序をスケジューリングする。スケジューリング結果、ビナ135は、複数のタイルのうち、最初のレンダリング順序でスケジューリングされたタイル(tile A)を、基準タイルとして決定することができる。

0240

2121段階において、基準タイル(tile A)に対して、バーテックスシェーダ115は、メモリ30に保存されたバーテックス2001を利用して、バーテックスシェーディング2021を行う。

0241

2122段階において、GPU 10は、基準タイル(tile A)に対して、ハルシェーダ121によるハルシェーディング2022、テッセレータ123によるテッセレーティング2023、及びドメインシェーダ125によるドメインシェーディング2024を含むテッセレーション・パイプラインを遂行する。

0242

2123段階において、GPU 10は、基準タイル(tile A)に対して、テッセレーション・パイプラインによって生成された、テッセレーティングされたプリミティブをレンダリングする。すなわち、GPU 10は、基準タイル(tile A)に対して、ラスタライジング2026及びピクセルシェーディング2027を行う。

0243

2124段階において、ビナ135は、パッチ2100が、隣接タイル(tile B,tile C及びtile D)それぞれで可視的であるか否かということを示す可視性ストリームを生成するビニング2028を行い、隣接タイル(tile B,tile C及びtile D)に係わる可視性ストリームを保存する。図21では、たとえ図示されていないとしても、GPU 10は、保存された可視性ストリームを利用して、隣接タイル(tile B,tile C及びtile D)に対するレンダリング・パイプライン102−2をそれぞれ遂行する。そのとき、隣接タイル(tile B,tile C及びtile D)に対するレンダリング・パイプライン102−2では、隣接タイル(tile B,tile C及びtile D)に係わる可視性ストリームによって、可視的なバーテックス、可視的なプリミティブまたは可視的なパッチだけが処理されもする。

0244

2130段階において、GPU 10は、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)がタイルクロッシングされていない場合(第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が1つのタイルにだけ含まれた場合)、第2テッセレーションファクタ(TF)でテッセレーティングされたプリミティブ(テッセレーティングされたバーテックス)が含まれたタイルに対して、レンダリング・パイプライン102−2を遂行する。

0245

図22は、他の実施形態によって、パッチのテッセレーションの結果、パッチが属するタイルリストと、テッセレーティングされたプリミティブが属するタイルリストとが異なる場合について説明するための図面である。

0246

一般的に、テッセレーション・パイプライン300(図3)において、ハルシェーダ121とドメインシェーダ125は、プログラマブル(programmable)であるが、テッセレータ123は、プログラマブルではないと知られている。従って、場合により、テッセレーション・パイプライン300(図3)をコーディングする開発者は、出力パッチ2213が1つのタイル(tile 0)に含まれるが、テッセレーティングされたプリミティブ2225は、2つのタイル(tile 0及びtile 1)に含まれるように、ハルシェーダ121及びドメインシェーダ125を誤ってプログラミングしてしまう。すなわち、テッセレーティングされたプリミティブ2225において、で誤って予測された(mispredicted)プリミティブ2230が存在してしまう。以下の図23及び図24では、レンダリング・パイプラインの間、ビニング・パイプラインで誤って予測されたタイルリストが発見された場合に係わるグラフィックス・パイプラインについて説明する。

0247

図23は、さらに他の実施形態によってGPUで遂行されるグラフィックス・パイプラインについて説明するための図面である。

0248

図23を参照すれば、ビニング・パイプライン101−3、並びに第1レンダリング・パイプライン102−3及び第2レンダリングパイプライン102−4を含むグラフィックス・パイプラインは、図7で説明したMODE(7)に対応し、ビニング・パイプライン101−4、並びに第1レンダリング・パイプライン102−3及び第2レンダリングパイプライン102−4を含むグラフィックス・パイプラインは、図7で説明したMODE(8)に対応する。一方、図23に図示されたグラフィックス・パイプラインについては、図6で説明したGPU 10のハードウェア構成を連繋させて説明するが、実施形態と係わる構成及びパイプラインステージについてのみ説明する。従って、図23で説明した構成及びパイプラインステージ以外に、他の汎用的な構成要素及びパイプラインステージがさらに含まれてもよいということは、当該技術分野の当業者であるならば、理解することができるであろう。

0249

GPU 10は、先に図面で説明したビニング・パイプライン101−3または101−4を遂行する。ビニング・パイプライン101−3または101−4のビニング結果は、可視性ストリームとして、メモリ30のビンストリーム2302に保存される。次に、GPU 10は、第1レンダリング・パイプライン102−3を遂行する。第1レンダリング・パイプライン102−3は、タイル単位で遂行され、図23において、第1レンダリング・パイプライン102−3で遂行される現在タイルは、tile Xであると仮定する。

0250

バーテックスシェーダ115は、ビンストリーム2302のビニング結果に基づいて、tile Xに属するバーテックス2301を利用して、バーテックスシェーディング2311を行う。バーテックスシェーダ115は、バーテックス2301を変換し、ハルシェーダ121に、入力コントロールポイントとして伝達する。

0251

ハルシェーダ121は、低次数の表面を表現する入力コントロールポイントを、パッチを構成する出力コントロールポイントに変換するハルシェーディング2312を行う。ハルシェーダ121は、パッチを構成する出力コントロールポイントを生成すると同時に、テッセレーションファクタ(TF)を決定することができる。

0252

テッセレータ123は、ハルシェーダ121から受信されたテッセレーションファクタ(TF)を利用して、出力コントロールポイントに係わる重心座標系でのuvw座標及び加重値を計算するテッセレーティング2313を行う。

0253

ドメインシェーダ125は、出力パッチの出力コントロールポイント及びテッセレーションファクタ(TF)に係わる情報と、テッセレータ123から受信されたuvw座標(w座標はオプション的)及び加重値とを利用して、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)を生成するドメインシェーディング2314を行う。

0254

ジオメトリシェーダ130は、ドメインシェーダ125から受信されたテッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)から、さらなるバーテックス(または、プリミティブ)を生成するジオメトリシェーディング2315を行うために使用されるオプション的な構成要素である。従って、ジオメトリシェーディング2315は、スキップされもする。

0255

ラスタライザ140は、現在タイルであるtile Xに含まれた、テッセレーティングされたバーテックス(または、テッセレーティングされたプリミティブ)に対するラスタライジング2316を行い、ピクセルシェーダ150は、ラスタライジングされたプリミティブに対応するピクセルに対するピクセルシェーディング2317を行う。現在タイルであるtile Xに対するピクセルシェーディング2317の結果は、バッファ2304に保存される。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ