(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0006】
本発明の一つの実施例に従えば、ピクセルまたはサンプルで構成された、所与のタイルは、あらゆる形状であってよく、正方形または長方形を含んでいる。これらのピクセルは、カラー(color)、デプス(depth)、ステンシル値(stencil value)、および、他の値を含んでいる。それぞれのタイルは、さらに単一のビット、ここにおいてはレンダービット(render bit)として参照される、を用いて拡張されている。一つの実施例において、レンダービットが1である場合、タイルの中の全てのものが、いつも通りにレンダリングされる。しかしながら、レンダービットが0である場合、このタイルに対しては何もラスタライゼーションされない。それに応じて、デプステスト、ピクセルシェイディング、フレームバッファアクセス、および、マルチサンプルアンチエリアシング(MSAA)リゾルブは、このタイルに対して行われない。他の実施例においては、それでもなお、いくつかのオペレーションが行われ得るが、レンダービットに基づいて少なくとも一つのオペレーションは回避される。もちろん、レンダービットは、ビット0が全部がレンダリングされるべきことを示し、ビット1はより限定されたレンダリングを示すように、切り換えられてもよい。
【0007】
別の実施例においては、よりきめの細かいコントロールができるようにするために、それぞれのタイルに対して複数のレンダービットが保管される。例えば、レンダービットは、タイルについて複数のレンダーターゲットのサブセットがリユースされ得ることを示してもよい。
【0008】
そして、レンダリングされていないタイルは、それらのコンテンツまたはポイントを、レンダリングされていない以前のフレームからの同一のタイルからのコンテンツにコピーする。
【0009】
このように、いくつかの実施例に従って、ラスタライゼーション作業が全体として削減され得る。たとえ全部でなくても、いくつかのタイルに対するラスタライゼーションが削減されるからである。
【0010】
スクリーン上の全てのタイルに対して、レンダービットは、長いビットマスク(bitmask)の中に保管されてよい。ビットマスクは、グラフィックアーキテクチャに対して、特には、ラスタライザ(rasterizer)に対して提供される。
【0011】
図1を参照すると、このように、グラフィックパイプライン10は、入力アセンブラステージ12を含んでいる。入力アセンブラステージは、三角形(triangle)といったデータをパイプラインに対して供給する。バーテクスシェイダ(vertex shader)ステージ14は、頂点を処理する。ジオメトリシェイダ(geometry shader)ステージ16は、三角形といった、プリミティブを処理する。ストリーム出力ステージ26は、パイプラインからのプリミティブデータを、ラスタライザステージ18への途中で、メモリ28に対してストリームする。ラスタライザステージ18は、どのピクセルのプリミティブがオーバーラップしているかを判断して、プリミティブをクリップしてピクセルシェイダのためのプリミティブを用意し、ピクセルシェイダステージ22をどのように呼び出すか決定する。ピクセルシェイダステージは、プリミティブに対して挿入されたデータを受け取って、カラーといった、ピクセル毎のデータを生成する。最後に、出力合併ステージ24は、ピクセルシェイダ値、デプス、および、ステンシル情報といった種々のタイプの出力データを、レンダーターゲットおよびデプス/ステンシルバッファのコンテンツと結合して、最終的なパイプライン結果を生成する。ラスタライザステージ18は、レンダービットを保管するためのバッファ20を含んでよい。他のグラフィカルパイプラインも、また、他の実施例において使用することができる。
【0012】
一般的に、三角形をトラバース(traverse)する場合に、階層的ラスタライゼーションが使用される。一つの一般的な階層的ラスタライゼーション技術は、三角形の頂点がレンダリングされるように画像平面上に投射することであり、次に、投射された三角形の2次元の境界ボックスを算出する。そして、部分的又は完全にこのボックスの内側にある全てのタイルは、いくつかのオーダーにおいて訪問される。次に、典型的には、より大きなそれぞれのタイルの中のより小さなタイルが訪問等される。大抵は、ある小さなタイルサイズにおいてトラバースを終えることによって、ピクセルレベルに達するまで行われる。
【0013】
一つの実施例に従えば、ラスタライザステージ18は変更され、階層的ラスタライゼーションの最中に、レンダービットに係る所与のタイルサイズに達した場合、タイルのレンダービットが最初にテストされる。例えば、この目的のための一つの役に立つタイルサイズは、32×32ピクセルまたはサンプルである。対応するレンダービットがゼロである場合、タイルにおける、三角形のラスタライゼーションおよびあらゆる更なる処理は、停止される。しかしながら、他のレンダービット設定を有するタイルに対しては、いつも通りにレンダリングが継続される。
【0014】
従って、フレーム間で多くの領域が同一である場合、ラスタライゼーションは削減される。このことは、新たな結果を全く生成しないタイルを結果として生じ、一方、いくつかのタイルは、まだ、いつも通りにレンダリングされる。例えば、三角形といった、所与のプリミティブは、一つ以上のタイルに及んでよく、これらのタイル全てより少ないタイルだけがレンダリングされ得る。プリミティブのどの部分をレンダリングするかの決定は、レンダービットによって支配されている。
【0015】
ステンシルオペレーションと違って、このオペレーションはタイル毎に行われるものであり、サンプル毎ではない。加えて、このレンダービットテストは、ラスタライゼーションの最中に行われる。つまり、ピクセルシェイディング、デプステスト、および、アルファ(alpha)テストの以前に行われる。これにより、テストはより早くなる。計算又はメモリのバンド幅を全く浪費しないからである。従って、消費電力はゼロである。タイル毎、三角形毎にだけテストすることは、電力使用がゼロに近いものと考えられるからである。
【0016】
一般的には、三角形をトラバースし、どのタイルがさらなる処理が必要かを決定するために、頂点の位置が知られる。従って、一つの実施例においては、最初にバーテクスシェイダの位置部分だけが実行され、バーテクス属性シェイディングが遅延される。次に、三角形は、タイルの解像度まで階層的に小さくラスタライゼーションされ、全てのオーバーラップしているタイルのレンダービットが検査される。値「0(ゼロ)」をもったレンダービットが見つからない場合、三角形全体が捨てられてよい。そして、バーテクス属性シェイディングを実行する必要はなく、三角形/挿入設定を行う必要もない。値「1」をもったレンダービットが少なくとも一つ見つかった場合、いつも通りにラスタライゼーションが進行する。
【0017】
さらに別の実施例としては、三角形の境界ボックスとオーバーラップしている全てのタイルのレンダービットが最初に検査される。1状態にある少なくとも一つのレンダービットが見つかった場合、三角形決定およびバーテクス属性シェイディングに進行する以前にである。このことは、レンダリングされる必要のない三角形を素早く選別するために、最初のテストとして使用され得る。
【0018】
図2を参照すると、このように、ラスタライゼーションシーケンス30は、ソフトウェア、ファームウェア、及び/又は、ハードウェアにおいて実施されてよい。ソフトウェアとファームウェアの実施例においては、磁気、光、または、半導体ストレージといった、一つまたはそれ以上のコンピュータで読取り可能な固定媒体に保管されたコンピュータで実行されるインストラクションによって実行され得る。
【0019】
ラスタライゼーションシーケンス300は、一つの実施例において、ブロック32に示すように、レンダリングされるべき三角形の頂点を投射すること、および、ブロック34に示すように、三角形の2次元境界ボックスを計算することによって開始される。しかしながら、階層的ラスタライゼーションの他の形式も、また、使用することができる。
【0020】
次に、境界ボックスの中で、タイルが進行的に訪問され、レンダービットについてそれぞれのタイルを検査する。別の言葉で言えば、ブロック35に示すように、より小さなサイズのタイルが進行的に次々と訪問される。ダイヤモンド形36での検査は、レンダービットが特定されたか否かを判断する。そうでなければ、このタイルはパス(pass)され、処理が中止される(ブロック40)。そして、レンダービットが検出されるまで、連続して進行的にタイルが訪問される。レンダービットが検出された場合、ラスタライゼーションは、ブロック44に示すように、進行的により小さなタイルを用いて継続される。ダイヤモンド形46に従って、最後のタイルが特定されるまで続く。
【0021】
レンダービットを生成するために種々の異なる技術が利用されてよい。例えば、ユーザは、これらのビットを、アプリケーションプログラムインターフェイス(API)コールまたは既存のアプリケーションプログラムインターフェイスコールに対するエクステンションを使用して、設定することができる。さらに別の実施例に従って、ユーザは、ドローコール(draw call)ごとの境界ボリュームとブーリアン(Boolean)またはジオメトリの他のいくつかのグループを提供することができる。ブーリアンは、ドローコールにおける何か、つまりパイプライン状態と(テクスチャバッファといった)全ての添付されたリソースおよび変化する入力が、最後のフレームから変化したか否かを信号で知らせる。例えば、テクスチャ、アニメーションパラメータまたはシェイダコード、バーテクスバッファ、または、変換(transform)が変化し得る。加えて、カメラ変換が変化したか否か、または、ポスト処理パスが使用されたか、を信号で知らせる別のブーリアンが存在し得る。レンダービットは、次に、この情報から計算することができ、グラフィックアーキテクチャに対して提供される。
【0022】
ここで一つの問題は、一つのピクセルがスクリーン上のどこかで変化したとしても、ヒストグラムベースのトーンマッピングポスト処理パスは、わずかに異なるだけということである。これは、スクリーン上の全てのタイルがわずかに異なる値を有し、再使用できるタイルが無いことを意味している。パラメーターを決定するために全てのピクセルを解析するあらゆるポスト処理パスは、潜在的に全てのレンダービットを偽(false)にすることがある。この問題を回避するために一つの方法は、処理されていないフレームバッファのコピーを以前のフレームから保管し、レンダービットベースのタイルコピーが適用された後でポスト処理パスを適用することである。
【0023】
図3を参照すると、このように、シーケンス50は、ソフトウェア、ファームウェア、及び/又は、ハードウェアにおいて実施されてよい。ソフトウェアとファームウェアの実施例においては、磁気、光、または、半導体ストレージといった、一つまたはそれ以上のコンピュータで読取り可能な固定媒体に保管されたコンピュータで実行されるインストラクションによって実行され得る。一つの実施例に従えば、ソフトウェアとファームウェアで実施される実施例は、グラフィックプロセッサに関連付けされるメモリの中に保管されてよい。
【0024】
ブロック52に示すように、ジオメトリのグループは、一時に一つ処理される。それぞれのグループに対して、ブロック54に示すように、検査は、ブーリアンが以前のフレームからの変化を示しているか否かを判断する。そうであれば、以前および現在のフレームに対するジオメトリグループの境界ボリュームとオーバーラップする全てのタイルは、ブロック56に示されるように、再度レンダリングされるように設定される。そうでなければ、オーバーラップジオメトリグループが以前のフレームからの変化を示していない場合には、タイルがスキップされてよく、ブロック58に示されるように、フローは次のグループへと進行する。タイルは、一つのジオメトリグループだけに基づいてはスキップされない。後続のジオメトリグループが同一のタイルとオーバーラップして、1のレンダービットを設定することがあるからである。タイルをスキップする決定は、全てのジオメトリグループが処理されたとき(以前のステップにおいてレンダービットが生成されていなければ)最初に行うことができる。全てのジオメトリグループについて繰り返した後で、全てのレンダービットが設定される。
【0025】
ドローコールといった、ジオメトリのそれぞれのグループは、一時に一つ処理される。ジオメトリグループのブーリアンが、何も変化していないことを示している場合、フローは、次のジオメトリグループに進む。一方で、ブーリアンが何かが変化したことを示している場合、以前のフレームと現在のフレーム両方に対するジオメトリグループの境界ボリュームとオーバーラップする全てのタイルは、1に設定される。このことは、ジオメトリグループのコンテンツが変化したために以前のフレームに置かれたタイルが、再度レンダリングされることを確実にする。そして、現在のフレームに置かれたジオメトリグループも、また再度レンダリングされる。このことは、この技術を用いないでレンダリングされた画像と全く同一の画像を生成するために、画像の正しい部分がアップデートされることを確実にしている。
【0026】
さらに別の実施例に従えば、グラフィックドライバはレンダリング状態の経過を追って、自動的にブーリアンを計算する。
図3に説明するようにである。
【0027】
図4を参照すると、シーケンス60は、ソフトウェア、ファームウェア、及び/又は、ハードウェアにおいて実施されてよい。ソフトウェアとファームウェアの実施例においては、磁気、光、または、半導体ストレージといった、一つまたはそれ以上のコンピュータで読取り可能な固定媒体に保管されたコンピュータで実行されるインストラクションによって実行され得る。
【0028】
フレームのレンダリングの最中に、ドライバ及び/又はハードウェアは、ジオメトリのそれぞれのグループに対して現在のレンダリング状態のハッシュ(hash)を計算して保管する(ブロック62)。ハッシュは、例えば、いくつか例をあげると、シェイダ、テクスチャ、サンプル、または、コンスタントバッファ、に基づいてよい。ジオメトリは、例えば、ドローコールであってよい。次のフレームがレンダリングされる(ブロック63)。次に、後続のフレームについて、ジオメトリのそれぞれのグループに対して対応するハッシュが計算され、最後のフレームから保管されたハッシュと比較される(ブロック64)。ハッシュが異なる場合(ダイヤモンド形66)、以前のフレームと現在のフレーム両方に対するジオメトリグループの境界ボリュームとオーバーラップする全てのタイルは、以前のように、1に設定される(ブロック68)。そして、そうでなければ(ブロック69)、フローが反復される。順序が考慮されることに留意する。例えば、2つのドローセルが同一のハッシュを有しているが、異なる順序で発生する場合に、それらはなお再度レンダリングされる。
【0029】
図5を参照すると、シーケンス70は、ソフトウェア、ファームウェア、及び/又は、ハードウェアにおいて実施されてよい。ソフトウェアとファームウェアの実施例においては、磁気、光、または、半導体ストレージといった、一つまたはそれ以上のコンピュータで読取り可能な固定媒体に保管されたコンピュータで実行されるインストラクションによって実行され得る。
【0030】
一つの実施例に従えば、フレームおよびジオメトリのそれぞれのグループに対するレンダリングの最中に、ドライバまたはハードウェアは、現在のレンダリング状態のハッシュおよびレンダービットのビットマスクを計算する。ビットマスクはゼロとして初期化される(ブロック72)。そして、ジオメトリグループのレンダリングの最中に、タッチ(touch)されたそれぞれのタイルは1としてマークされる(ブロック74)。次のフレームのレンダリングの最中(ブロック76)、リストの中にハッシュが存在する場合は(ダイヤモンド形78)、対応するタイルについてのエントリーがアクセス済としてマークされる(ブロック80)。存在しない場合は、例えば、バーテクス位置シェイディングによって、境界ボリュームが計算され(ブロック82)、全てのオーバーラップされたタイルは、1としてマークされる(ブロック84)。加えて、アクセスされていない全てのエントリに対するレンダービットは、アクセスされていない全てのタイルのビットマスクとORされる(ブロック86)。これらは、潜在的に変化した領域を示しているからである。
【0031】
従って、以前のフレームに対する境界ボックスは必要とされない。計算されたレンダービットは、また、より正確であり得る。以前のフレームからのマスクは、実際にタッチされたものであって、単に境界ボリュームがオーバーラップしただけではないタイルを表しているからである。
【0032】
レンダービットを計算するために、現在のフレームに対する全てのドローコールが利用可能にされ、処理される。
図3から
図5に係る方法のうち一つに従って説明されるようにである。これが行われた後に、フレームのレンダリングが開始される。このことは、いくつかの追加の遅延をもたらす。完全なフレームがドライバに対して提出されるまで、レンダリングは開始できないからである。全てのレンダービットがゼロに設定されている場合には、フレーム全体がスキップされて、以前のフレームが再使用される得る。
【0033】
上記の方法のうち一つを使用してレンダービットを計算するために、ジオメトリのそれぞれのグループに対する境界ボリュームが必要になる。
図5に示されたシーケンスにおいては、現在のフレームに対する境界ボリュームだけが必要とされたが、一方、
図3および
図4のシーケンスにおいては、以前および現在のフレームの両方に対する境界ボリュームが使用される。一つのオプションは、現在のグラフィックアプリケーションプログラムインターフェイスへのエクステンションを通じて、ユーザにこれらのものを供給させることである。アフィン(affine)バーテクスシェイダおよびジオメトリ/ドメインでないシェイダのためといった、いくつかの場合には、ジオメトリに対して境界ボックスを変換することによって境界ボリュームが自動的に計算されてよい。他の場合には、境界を計算するためにバーテクス位置シェイディングを実行することが望ましい。いくつかの他の場合には、自動的な方法が使用され得る。以下を参照のこと。J.Hasselgre 、J.Munkberg、 T.Akenine-Moller共著、"Automatic Pre-Tessellation Culling"、ACM Transaction on Graphics、28(2) pages 19:1-19:10、 2009。
【0034】
これらの技術の他の使用も存在する。例えば、カスケード(cascade)されたシャドウ(shadow)マップを使用したレンダリングシャドウに関して、シャドウマップは、最適化されたデプスマップラスタライザを使用してグラフィック処理ユニット上で生成され得る。最初に、視点からのレンダリングパスの最中にアクセスされるそれぞれのシャドウマップにおけるタイルが決定される。このことは、視点から見えるピクセルのフットプリント(footprint)をシャドウマップ空間に投射して、ピクセルごとに好適なシャドウマップ解像度を選択することによって行われてよい。このことは、それぞれのシャドウマップにおける、レンダリングが必要な数多くのタイルを選択する。その他のタイルはレンダリングの必要がない。それらは、シャドウマップのルックアップ(lookup)を行うときにアクセスされないからである。一般にこのことを利用するための唯一の方法は、シャドウマップを中央処理ユニット上にレンダリングすることである。しかしながら、ここにおいて説明された技術を用いて、レンダービットが生成され、対応するシャドウビットがアクセスされるタイルに対して1が設定される。このことは、シャドウマップのレンダリングを実質的にスピードアップさせ得る。加えて、いくつかの実施例においては、シャドウマップに対して圧縮を使用することができ、メモリのバンド幅を削減することができる。
【0035】
図6は、システム300の実施例を示している。実施例において、システム300は、メディアシステムであってよいが、システム300は、このコンテクスト(context)に限定されない。例えば、システム300は、以下のものの中に取り込まれてよい。すなわち、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビジョン、スマートデバイス(例えば、スマートフォン、スマートタブレット、または、スマートテレビ)、モバイルインターネットデバイス(MID)、メッセージデバイス、データ通信デバイス、等である。
【0036】
実施例において、システム300は、ディスプレイ320に接続されたプラットフォーム302を含んでいる。プラットフォーム302は、コンテンツサービスデバイス330またはコンテンツ配送デバイス340もしくは他の類似のコンテンツソースといった、コンテンツデバイスからコンテンツを受信する。一つまたはそれ以上のナビゲーション機能を含むナビゲーションコントローラ350は、例えば、プラットフォーム302及び/又はディスプレイ320とインタラクションするために使用され得る。これらのコンポーネントのそれぞれは、以下に詳細に説明される。
【0037】
実施例においおて、プラットフォーム302は、チップセット305、プロセッサ310、メモリ312、ストレージ314、グラフィックサブシステム315、アプリケーション316、及び/又は、ラジオ318のあらゆる組み合わせを含んでよい。チップセット305は、プロセッサ310、メモリ312、ストレージ314、グラフィックサブシステム315、アプリケーション316、及び/又は、ラジオ318の間の相互通信を提供することができる。例えば、チップセット315は、ストレージ314との相互通信を提供することができるストレージアダプタ(図示なし)を含んでよい。
【0038】
プロセッサ310は、複合命令セットコンピュータ(CISC)または縮小命令セットコンピュータ(RISC)プロセッサ、×86インストラクションセットとコンパチブルなプロセッサ、マルチコア、または、あらゆる他のマイクロプロセッサもしくは中央処理ユニット(CPU)として実施されてよい。実施例において、プロセッサ310は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ、等を含んでよい。プロセッサは、メモリ312と供に、
図1から
図5に係るシーケンスを実施することができる。
【0039】
メモリ312は、これらに限定されるわけではないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM),または、スタティックRAM(SRAM)といった、揮発性メモリとして実施されてよい。
【0040】
ストレージ314は、これらに限定されるわけではないが、磁気ディスクドライブ、光ディスクドライブ、内蔵ストレージデバイス、外付けストレージデバイス、フラッシュメモリ、バッテリバックアップSDRAM(シンクロナスDRAM)、及び/又は、ネットワークアクセス可能なストレージデバイスといった、不揮発性ストレージデバイスとして実施されてよい。実施例において、ストレージ314は、例えば、複数のハードドライブが含まれている場合に種々のデジタルメディアに対するストレージパフォーマンスの拡張された保護を増大させるための従来技術を含んでいる。
【0041】
グラフィックサブシステム315は、静止画または動画といった画像を表示するための処理を実行する。グラフィックサブシステム315は、例えば、グラフィック処理ユニット(GPU)またはビジュアル処理ユニット(VPU)であってよい。グラフィックサブシステム315とディスプレイ320を通信可能に接続するために、アナログまたはデジタルインターフェイスが使用され得る。例えば、インターフェイスは、ハイディフィニションマルチメディアインターフェイス(HDMI(登録商標))、ディスプレイポート、無線HDMI、及び/又は、無線HD対応技術、のいずれかであってよい。グラフィックサブシステム315は、プロセッサ310またはチップセット305の中に取り込まれ得る。グラフィックサブシステム315は、チップセット305に通信可能に接続されたスタンドアロンカードであり得る。
【0042】
ここにおいて説明されるは、グラフィック及び/又はビデオ処理技術は、種々のハードウェアアーキテクチャにおいて実施されてよい。例えば、グラフィック及び/又はビデオ機能は、チップセットの中で統合されてよい。代替的に、個別のグラフィック及び/又はビデオプロセッサが使用されてよい。さらに別の実施例として、グラフィック及び/又はビデオ機能は、マルチコアプロセッサを含む、汎用プロセッサによって実施され得る。さらなる実施例においては、家電機器において本機能が実施されてよい。
【0043】
ラジオ318は、種々の好適な無線通信技術を使用して信号を送信及び受信することができる一つまたはそれ以上のラジオを含んでいる。そうした技術は、一つまたはそれ以上のネットワークに渡る通信を含んでいる。典型的な無線ネットワークは、(限定されるわけではないが)無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、携帯電話ネットワーク、および、衛星ネットワークを含んでいる。そうしたネットワークに渡る通信において、ラジオ318は、一つまたはそれ以上の適用可能な規格のあらゆるバージョンに従って動作する。
【0044】
実施例において、ディスプレイ320は、あらゆるテレビジョンタイプのモニタまたはディスプレイを含んでよい。ディスプレイ320は、例えば、コンピュータディスプレイスクリーン、タッチスクリーンディスプレイ、ビデオモニタ、テレビジョン類似品、及び/又は、テレビジョンを含んでよい。ディスプレイ320は、デジタル及び/又はアナログであってよい。実施例において、ディスプレイ320は、ホログラフィディスプレイであってよい。ディスプレイ320は、また、ビジュアル投射を受信する透明なサーフェスであってよい。そうした投射は、情報、画像、及び/又は、オブジェクトに係る種々の形式を伝達する。例えば、そうした投射は、モバイル拡張現実(MAR)アプリケーションのためのビジュアルなオーバーレイであってよい。一つまたはそれ以上のソフトウェアアプリケーション316のコントロールの下で、プラットフォーム302はディスプレイ320上にユーザインターフェイス322を表示し得る。
【0045】
実施例において、コンテンツサービスデバイス330は、あらゆるナショナル、インターナショナル、及び/又は、独立したサービスによってホストされてよく、従って、例えば、インターネットを介してプラットフォーム302にアクセス可能である。コンテンツサービスデバイス330は、プラットフォーム302及び/又はディスプレイ320に接続されてよい。プラットフォーム302及び/又はコンテンツサービスデバイス330は、メディア情報をネットワーク360に対して又はネットワークから通信(例えば、送信及び/又は受信)するために、ネットワーク360に対して接続されてよい。コンテンツ配送デバイス340も、また、プラットフォーム302及び/又はディスプレイ320に対して接続されてよい。
【0046】
実施例において、コンテンツサービスデバイス330は、以下のものを含んでよい。すなわち、ケーブルテレビジョンボックス、パーソナルコンピュータ、ネットワーク、電話、インターネットできるデバイスまたはデジタル情報及び/又はコンテンツを配信できる装置、および、ネットワーク360を介して又は直接的にコンテンツプロバイダとプラットフォーム302及び/又はディスプレイ320との間で一方向または双方向でコンテンツを通信することができるあらゆる他の類似のデバイス、である。コンテンツの実施例は、例えば、ビデオ、音楽、医療およびゲーム情報、等を含むあらゆるメディア情報を含んでいる。
【0047】
コンテンツサービスデバイス330は、メディア情報、デジタル情報、及び/又は、他のコンテンツを含んでいるテレビ番組といったコンテンツを受信する。コンテンツプロバイダの実施例は、あらゆる無線または衛星テレビ、またはラジオ、もしくはインターネットコンテンツプロバイダを含んでよい。
【0048】
実施例において、プラットフォーム302は、一つまたはそれ以上のナビゲーション機能を有しているナビゲーションコントローラ350からコントロール信号を受信する。コントローラ350のナビゲーション機能は、例えば、ユーザインターフェイス322とインタラクションするために使用され得る。実施例において、ナビゲーションコントローラ350は、ポインティングデバイスであってよく、空間的(例えば、連続した多次元の)データをユーザがコンピュータの中に入力できるようにするコンピュータハードウェアコンポーネント(特には、ヒューマンインターフェイスデバイス)であってよい。グラフィカルユーザインターフェイス(GUI)、テレビとモニタといった、多くのシステムにより、ユーザは、身体的なジェスチャを使用して、データをコントロールしてコンピュータまたはテレビジョンにデータを提供することができる。
【0049】
コントローラ350のナビゲーション機能の動きは、ポインタ、カーソル、フォーカスリング、または、ディスプレイ上に表示される他の視覚的インジケータの動きによって、ディスプレイ(例えば、ディスプレイ320)上にエコーされ得る。例えば、ソフトウェアアプリケーション316のコントロールの下で、ナビゲーションコントローラ350上に置かれたナビゲーション機能が、例えば、ユーザインターフェイス322上に表示された仮想ナビゲーション機能に対してマップされてよい。実施例において、コントローラ350は、別個のコンポーネントでなくてよく、プラットフォーム302及び/又はディスプレイ320の中に取り込まれてよい。しかしながら、実施例は、ここにおいて示され又は説明されたエレメントまたはコンテクストの中に限定されるものではない。
【0050】
実施例において、ドライバ(図示なし)は、例えば、イネーブルされた場合に、最初のブートアップの後でボタンをタッチすることで、ユーザが、テレビジョンのようなプラットフォーム302を即座に電源オンおよびオフできるようにする技術を含んでいる。プログラムロジックによって、プラットフォーム302は、プラットフォームが電源「オフ」された場合に、メディアアダプタもしくは他のコンテンツサービスデバイス330またはコンテンツ配送デバイス340に対して、コンテンツをストリーム(stream)することができる。加えて、チップセット305は、例えば、5.1サラウンドサウンドオーディオ及び/又は高品位7.1サラウンドサウンドオーディオをサポートするハードウェア及び/又はソフトウェアを含んでよい。ドライバは、統合されたグラフィックプラットフォームのためのグラフィックドライバを含んでいる。実施例において、グラフィックドライバは、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレスグラフィックカードを含み得る。
【0051】
種々の実施例においては、システム300において示された一つまたはそれ以上のあらゆるコンポーネントは、統合されてよい。例えば、プラットフォーム302とコンテンツサービスデバイス330が統合されてよく、または、プラットフォーム302とコンテンツ配送デバイス340が統合されてよく、もしくは、例えば、プラットフォーム302、コンテンツサービスデバイス330、および、コンテンツ配送デバイス340が統合されてよい。種々の実施例において、プラットフォーム302とディスプレイ320は統合されたユニコードであってよい。ディスプレイ320とコンテンツサービスデバイス330は統合されてよく、または、例えば、ディスプレイ320とコンテンツ配送デバイス340が統合されてよい。
【0052】
種々の実施例において、システム300は、無線システム、有線システム、または、両方の組み合わせとして実施されてよい。無線システムとして実施された場合、システム300は、無線のシェアードメディア(shared media)に渡り通信するのに好適なコンポーネントおよびインターフェイスを含んでいる。一つまたはそれ以上のアンテナ、送信器、受信器、トランシーバ、アンプ、フィルタ、コントロールロジック、等といったものである。無線のシェアードメディアの実施例は、RFスペクトラム、等といった、無線スペクトラムの部分を含んでいる。有線システムとして実施された場合、システム300は、有線の通信メディアに渡り通信するのに好適なコンポーネントおよびインターフェイスを含んでいる。入力/出力(I/O)アダプタ、I/Oアダプタを対応する有線の通信メディアに接続するための物理的なコネクタ、ネットワークインターフェイスカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ、等といったものである。有線の通信メディアの実施例は、電線、ケーブル、金属リード、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペア電線、同軸ケーブル、光ファイバ、等を含んでいる。
【0053】
プラットフォーム302は、情報を通信するための一つまたはそれ以上の論理的または物理的チャネルを確立し得る。情報は、メディア情報およびコントロール情報を含んでよい。メディア情報は、ユーザに対して意味されるコンテンツを表しているあらゆるデータを参照し得る。コンテンツの実施例は、例えば、以下のものを含んでよい。音声会話からのデータ、ビデオ会議、ストリーミングビデオ、電子メール(「eメール」)メッセージ、音声メールメッセージ、英数字シンボル、グラフィック画像、ビデオ、テキスト、等である。音声会話からのデータは、例えば、スピーチ情報、サイレンス期間、バックグラウンドノイズ、コンフォートノイズ、トーン、等であり得る。コントロール情報は、コマンド、インタラクション、または、自動化されたシステムに対して意味をなすコントロールワードを表しているあらゆるデータを参照し得る。例えば、コントロール情報は、システムを通じてメディア情報をルートするために、または、既定の方法でメディア情報を処理するようにノードにインストラクションするために使用される。しかしながら、実施例は、
図5において示され又は説明されたエレメントまたはコンテクストの中に限定されるものではない。
【0054】
上述のように、システム300は、種々の物理的スタイルまたはフォームファクタで実施されてよい。
図7は、システム300が実施されるスモールフォームファクタのデバイス400の実施例を示している。実施例において、例えば、デバイス400は、無線機能を有するモバイルコンピューティングデバイスとして実施され得る。モバイルコンピューティングデバイスは、処理システム、および、例えば、一つまたはそれ以上のバッテリといった、モバイル電源を有するあらゆるデバイスを参照し得る。
【0055】
上述のように、モバイルコンピューティングデバイスの実施例は、以下のものを含んでよい。パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビジョン、スマートデバイス(例えば、スマートフォン、スマートタブレット、または、スマートテレビ)、モバイルインターネットデバイス(MID)、メッセージデバイス、データ通信デバイス、等である。
【0056】
モバイルコンピューティングデバイスの実施例は、また、人が身に付けられるように構成されたコンピュータを含んでよい。リストコントロール、指コントロール、指輪コンピュータ、メガネコンピュータ、ベルトクリップコンピュータ、腕バンドコンピュータ、靴コンピュータ、衣服コンピュータ、および、他のウェアラブルコンピュータといったものである。実施例において、例えば、モバイルコンピューティングデバイスは、音声通信及び/又はデータ通信と同様に、コンピュータアプリケーションを実行することができるスマートフォンとして実施されてよい。いくつかの実施例は、例として、スマートフォンとして実施されたモバイルコンピューティングデバイスを用いて説明されるが、他の無線モバイルコンピューティングデバイスを使用しても同様に他の実施例が実行され得ることが理解される。実施例は、このコンテクストの中に限定されるものではない。
【0057】
プロセッサ310は、いくつかの実施例において、カメラ323およびグローバルポジショニングシステムセンサ321と通信し得る。メモリ312は、プロセッサ310に接続されており、ソフトウェア及び/又はファームウェアの実施例において、
図2から
図5に示されたシーケンスを実施するためのコンピュータで読取り可能なインストラクションを保管することができる。
【0058】
図7に示されるように、デバイス400は、ハウジング402、ディスプレイ404、入力/出力(I/O)デバイス406、および、アンテナ408を含んでいる。デバイス400は、また、ナビゲーション機能412を含んでいる。ディスプレイ404は、モバイルコンピューティングデバイスに適した情報を表示するためのあらゆる好適なディスプレイユニットを含んでよい。I/Oデバイス406は、モバイルコンピューティングデバイスの中に情報を入力するためのあらゆる好適なI/Oデバイスを含んでよい。I/Oデバイス406の実施例は、以下のものを含んでよい。英数字キーボード、数字キーパッド、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイクロフォン、スピーカ、音声認識デバイスとソフトウェア、等である。情報も、また、マイクロフォンを用いてデバイス400の中に入力される。そうした情報は、音声認識デバイスによってデジタル化され得る。実施例は、このコンテクストの中に限定されるものではない。
【0059】
種々の実施例は、ハードウェアエレメント、ソフトウェアエレメント、または、両方の組み合わせを使用して実施されてよい。ハードウェアエレメントの実施例は、以下のものを含み得る。プロセッサ、マイクロプロセッサ、回路、回路エレメント(例えば、トランジスタ、抵抗、キャパシタ、インダクタ、等)、集積回路、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、抵抗、半導体デバイス、チップ、マイクロチップ、チップセットトップボックス、等である。ソフトウェアの実施は、以下のものを含み得る。ソフトウェアコンポーネント、プロセッサ、アプリケーション、コンピュータプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインターフェイス、アプリケーションプログラムインターフェイス(API)、インストラクションセット、コンピューティングコード、コードセグメント、コンピュータコードセグメント、ワード、バリュー、シンボル、または、これらのあらゆる組み合わせ、である。実施例が、ハードウェアエレメント及び/又はソフトウェアエレメントを使用して実施されているか否かの判断は、数多くの要因に従って変化し得る。所望の計算レート、電力消費レベル、熱許容量、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、および、他のデザインまたはパフォーマンス制約、といったものである。
【0060】
以降の節及び/又は例示は、さらなる実施例に関するものである。
【0061】
一つの実施例に係る方法は、ピクセルまたはサンプルをタイルの中に電子的に編成するステップと、複数のタイルのそれぞれに対して、複数のラスタライゼーションオペレーションの全てをラスタライザにおいて完了するか否か、または、代替的に、前記ラスタライザにおける少なくとも一つのオペレーションを所与のタイルに対して省略するか否か、を電子的に指示するステップと、を含む。本方法は、また、タイルのレベルでのラスタライゼーションの以前に、タイルを全てレンダリングするか否かを指示するステップと、を含む。本方法は、また、前記タイルのラスタライゼーションが行われない場合に、現在のフレームにおけるタイルの代わりに、以前のフレームにおける同一のタイルからのコンテンツを使用するステップと、を含む。本方法は、また、前記指示に対するそれぞれのタイルに関するビットを使用するステップと、タイルにおけるレンダリングの変化を検出するためにレンダリング状態のハッシュを使用するステップと、を含む。本方法は、また、前記ラスタライザによる使用のために、ビットマスクにおけるフレームに対する指示ビットを保管するステップと、を含む。本方法は、また、一連のタイルサイズを用いた階層的ラスタライゼーションを使用するステップと、を含む。本方法は、また、前記指示に対するビットを、前記一連のタイルサイズにおける特定の一つのタイルサイズに関連付けるステップと、を含む。本方法は、また、最初にバーテクスシェイダの位置部分をレンダリングするステップと、バーテクス属性シェイディングを遅延させるステップと、を含む。本方法は、また、指示ビットが前記タイルをレンダリングしないよう指示する場合に、バーテクス属性シェイディングを回避するステップと、を含む。本方法は、また、少なくとも一つのビットがラスタライゼーションしないように指示する場合は、バーテクス属性シェイディングに進む以前に、境界ボックスとオーバーラップしているタイルにおける全てのビットを検査するステップと、を含む。
【0062】
別の実施例は、シーケンスを実施するために実行されるインストラクションを保管している、少なくとも一つのコンピュータで読取り可能な固定媒体であって、前記シーケンスは、ピクセルまたはサンプルをタイルの中に電子的に編成し、かつ、複数のタイルのそれぞれに対して、複数のラスタライゼーションオペレーションの全てをラスタライザにおいて完了するか否か、または、代替的に、前記ラスタライザにおける少なくとも一つのオペレーションを所与のタイルに対して省略するか否か、を電子的に指示する、コンピュータで読取り可能な固定媒体である。前記媒体は、タイルのレベルでのラスタライゼーションの以前に、タイルを全てレンダリングするか否かを指示するシーケンス、を含んでいる。前記媒体は、前記タイルのラスタライゼーションが行われない場合に、現在のフレームにおけるタイルの代わりに、以前のフレームにおける同一のタイルからのコンテンツを使用するシーケンス、を含んでいる。前記媒体は、前記指示に対するそれぞれのタイルに関するビットを使用し、かつ、タイルにおけるレンダリングの変化を検出するためにレンダリング状態のハッシュを使用するシーケンス、を含んでいる。前記媒体は、前記ラスタライザによる使用のために、ビットマスクにおけるフレームに対する指示ビットを保管するシーケンス、を含んでいる。前記媒体は、一連のタイルサイズを用いた階層的ラスタライゼーションを使用するシーケンス、を含んでいる。前記媒体は、前記指示に対するビットを、前記一連のタイルサイズにおける特定の一つのタイルサイズに関連付けるシーケンス、を含んでいる。前記媒体は、最初にバーテクスシェイダの位置部分をレンダリングし、かつ、バーテクス属性シェイディングを遅延させるシーケンス、を含んでいる。 前記媒体は、指示ビットが前記タイルをレンダリングしないよう指示する場合に、バーテクス属性シェイディングを回避するシーケンス、を含んでいる。前記媒体は、少なくとも一つのビットがラスタライゼーションしないように指示する場合は、バーテクス属性シェイディングに進む以前に、境界ボックスとオーバーラップしているタイルにおける全てのビットを検査するシーケンス、を含んでいる。
【0063】
別の実施例は、装置であって、ラスタライゼーションであり、ピクセルまたはサンプルをタイルの中に電子的に編成し、かつ、複数のタイルのそれぞれに対して、複数のラスタライゼーションオペレーションの全てをラスタライザにおいて完了するか否か、または、代替的に、前記ラスタライザにおける少なくとも一つのオペレーションを所与のタイルに対して省略するか否か、を電子的に指示する、ラスタライザと、前記ラスタライザに接続されたバッファと、を含む。装置は、タイルのレベルでのラスタライゼーションの以前に、タイルを全てレンダリングするか否かを指示する、ラスタライザを含んでいる。装置は、前記タイルのラスタライゼーションが行われない場合に、現在のフレームにおけるタイルの代わりに、以前のフレームにおける同一のタイルからのコンテンツを使用するラスタライザ、を含んでいる。装置は、前記指示に対するそれぞれのタイルに関するビットを使用し、かつ、タイルにおけるレンダリングの変化を検出するためにレンダリング状態のハッシュを使用するラスタライザ、を含んでいる。装置は、前記ラスタライザによる使用のために、ビットマスクにおけるフレームに対する指示ビットを保管するラスタライザ、を含んでいる。装置は、一連のタイルサイズを用いた階層的ラスタライゼーションを使用するラスタライザ、を含んでいる。装置は、前記指示に対するビットを、前記一連のタイルサイズにおける特定の一つのタイルサイズに関連付けるラスタライザ、を含んでいる。装置は、オペレーティングシステム、バッテリ、ファームウェア、および、前記ファームウェアをアップデートするためのモジュール、を含んでいる。
【0064】
ここにおいて説明されたグラフィック処理技術は、種々のハードウェアアーキテクチャにおいて実施され得る。例えば、グラフィック機能は、チップセットの中に統合されてよい。代替的に、別個のグラフィックプロセッサが使用されてもよい。さらに別の実施例として、グラフィック機能は、マルチコアプロセッサを含む、汎用プロセッサによって実施され得る。
【0065】
この明細書の全体にわたり「一つの実施例(“one embodiment”or”an embodiment“)」への言及は、実施例に関して説明された所定の特徴、構成、または、特性が、本発明の少なくとも一つの実施例に含まれていることを意味するものである。従って、「一つの実施例」というフレーズの表現は、必ずしも同一の実施例について言及するものではない。さらに、所定の機能、構成、または、特性は、説明された特定の実施例よりむしろ、他の好適なフォームにおいて制定することができる。
【0066】
限定された数量の実施例が説明されてきたが、当業者であれば、そうした実施例から、多くの変形およびバリエーションを認識するであろう。添付の特許請求の範囲は、全てのこうした変形およびバリエーションを、本発明開示に係る真の精神と発明の範囲の中にあるものとしてカバーするように意図されたものである。