説明

グラフィックス処理パイプライン内での画素値の生成および分解

【課題】フレームバッファメモリへのデータ書き込みを第1の分解能で行った後、このデータを第2の分解能に変換する処理回路において、高度なグラフィックス処理をサポートする。
【解決手段】
グラフィックス処理装置2は、グラフィックス処理パイプライン8を含む。グラフィックス処理パイプライン8は、プログラム可能なハードウェア段12と、パイプラインメモリ22と、ライトバック回路16とを含む。プログラム可能な分解回路18が、プログラム可能なハードウェア段12によって各パイプライン内に提供される。プログラム可能な分解回路18は、グラフィックスプログラム命令に応答して、プログラム可能なハードウェア段12によって提供された画素値生成回路18によりパイプラインメモリ22内に第1の分解能で画素値を生成し、これらの画素値に対して分解操作を行って、画素値を第2の分解能で生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィックス処理システムに関する。より詳細には、本発明は、グラフィックス処理パイプライン内に提供される処理回路に関する。
【背景技術】
【0002】
グラフィックス処理ユニット(GPU)などのグラフィックス処理システムを提供することが、公知である。これらのグラフィックス処理システムは、グラフィックス処理パイプラインを含む。前記グラフィックス処理パイプラインは、機能(例えば、入力データのフェッチ、前記入力データの処理、およびフレームバッファメモリへの出力データのライトバック)を行うための複数の処理段階を有する。前記グラフィックス処理パイプラインは典型的には、何らかのパイプラインメモリ(例えば、タイルメモリ)が設けられる。このパイプラインメモリは、画素値の完全フレームがアセンブルされるフレームバッファメモリへの画素値のライトバックに先行する前記グラフィックス処理パイプライン内での操作などをサポートするために、用いられる。
【0003】
このようなグラフィックス処理システムの分野において、分解操作を行うことも、公知である。この分解操作において、入力画素値の分解能は、出力画素値の分解能と異なる。このような分解操作の一例としてダウンサンプリングがあり、画像が表示される分解能よりも高い分解能で当該画像を生成し、その後前記表示分解能まで当該画像を相応にダウンサプリングする。典型的には、このような操作を行うには、グラフィックス処理パイプラインを用いて先ず画素値のフレームを前記より高い分解能で生成した後、これらの画素値を前記フレームバッファメモリ内に保存する必要がある。その後、これらの高分解能画素値を前記フレームバッファメモリからリードバックし、ダウンサンプリング操作を施す。その後、前記より低い分解能画素値を前記フレームバッファメモリ内に書き込んだ後、表示する。このように、高分解能の画素値をフレームバッファメモリに書き込んだ後、これらの画素値をグラフィックス処理パイプラインにリードバックした後ダウンサンプリングしてより低い分解能で書き込む場合、メモリ帯域幅およびエネルギー消費の点において無駄が出る。
【0004】
グラフィックス処理パイプライン内に固定機能のダウンサンプラを設けたグラフィックス処理パイプラインがいくつか公知である。このようなグラフィックスプロセッサの一例として、ARM Limited(イギリス、ケンブリッジ)によって設計されたMaliグラフィックス処理ユニットがある。
【0005】
消費電力の低減および動作速度の増加への要求に伴い、グラフィックス処理に対する要求も高度化した。そのため、フレームバッファメモリへのデータ書き込みを第1の分解能で行った後、このデータをフレームバッファメモリからリードバックして第2の分解能に変換するという要求に耐えることが、メモリ帯域幅およびエネルギー消費に関する制約を回避しつつ、高度なグラフィックス処理をサポートするのに必要なプログラム可能な分解操作を用いる場合には、困難になっている。
【発明の概要】
【課題を解決するための手段】
【0006】
一局面から鑑みて、本発明は、フレームバッファメモリへ保存されるべき画素データ値のフレームを生成するグラフィックス処理装置を提供する。前記グラフィックス処理装置は、
グラフィックス処理パイプラインであって、
(i)1つもしくは複数の第1の入力パラメータに応答して、画素値を第1の分解能で前記フレーム内の一領域に対して生成する画素値生成回路と、
(ii)前記処理パイプラインに連結されたパイプラインメモリであって、前記画素値を前記第1の分解能で保存するように構成されたパイプラインメモリと、
(iii)前記パイプラインメモリに連結されたライトバック回路であって、前記パイプラインメモリ中に保存された画素値を前記フレームバッファメモリ内に書き込むように構成されたライトバック回路と、
を含む、グラフィックス処理パイプライン、
を含み、
前記グラフィックス処理パイプラインは、
(iv)プログラム可能な分解回路であって、前記プログラム可能な分解回路は、1つもしくは複数のグラフィックスプログラム命令および1つもしくは複数の第2のパラメータに応答して、前記画素値を前記第1の分解能で前記パイプラインメモリから読み出し、前記グラフィックスプログラム命令および前記1つもしくは複数の第2のパラメータによって指定された分解操作を行って、前記ライトバック回路によって前記フレームバッファメモリに書き込まれるべき画素値を第2の分解能で生成し、前記第2の分解能が前記第1の分解能と異なる、プログラム可能な分解回路、
をさらに含む。
【0007】
本技術は、多くの場合において、分解能を変更する分解操作を行う際に、出力画素値に対してローカルな画素値が入力として必要であることを認識する。そのため、より高い分解能画素値が生成され、前記グラフィックス処理パイプラインの前記パイプラインメモリ内に保存された場合、多くの実際の分解操作において、異なる分解能の出力画素値を生成するために必要な入力画素値が既に前記パイプラインメモリ内に存在しており、前記フレームバッファメモリに対してライトバック介入を行い前記フレームバッファメモリから読み出しを行う必要は無い。本技術は、前記パイプラインメモリ中の画素値を第1の分解能で生成した後、前記パイプラインメモリ内のこれらの画素値を1つもしくは複数のグラフィックスプログラム命令によって指定された分解操作を用いてさらに処理して、出力画素値を第2の分解能で生成することを認識するように、前記グラフィックス処理パイプラインの能力を拡張できることを認識する。第2の分解能は、第1の分解能と異なる。その後、これらの出力画素値を、前記ライトバック回路によって前記フレームバッファメモリにライトバックすることができる。
【0008】
第1の分解能および前記第2の分解能は、一般的な意味において異なることが理解される。しかし、本技術の多くの有用な実施形態において、第2の分解能は第1の分解能よりも低い.
【0009】
第2の分解能は第1の分解能よりも低いという文脈において、前記分解回路は、前記分解操作に対する入力として複数の画素値を第1の分解能で読み出して、これにより、1つもしくは複数の画素値を第2の分解能で形成し得る。
【0010】
前記1つもしくは複数のグラフィックスプログラム命令によって指定され、かつ、前記画素値生成回路によって前記パイプラインメモリ内に生成および保存された前記画素値に対する分解能変更を採用した前記プログラム可能な分解操作は、多様な異なる形態(例えば、マルチサンプルドアンチエイリアシング操作、マルチサンプルド高ダイナミックレンジレンダリングリング操作、リニアブレンディング操作、遅延シェーディング操作、フォーマット変換操作、YUV変換操作および画素値圧縮)をとり得る。
【0011】
前記画素値生成回路は典型的には、プログラム可能なグラフィックス処理回路を含み、これにより、異なる種類の画素値生成をサポートする。この文脈において、前記画素値生成回路および前記プログラム可能な分解回路は、前記フレームバッファメモリからのライトバックおよび読み出しを必要とすること無く、前記パイプラインメモリ内のデータ値に対して各グラフィックス処理スレッドを行うように、配置構成され得る。
【0012】
前記画素値生成回路および前記プログラム可能な分解回路は、別個の回路要素として提供され得る。しかし、この技術分野の当業者であれば理解するように、共有型のプログラム可能なグラフィックス処理回路でこの回路を少なくとも部分的に形成すると、より高効率である場合が往々にしてある。一例として、前記画素値生成回路および前記プログラム可能な分解回路の双方が加算操作を行う必要がある場合があり得、その場合、前記画素値生成回路と前記プログラム可能な分解回路とで加算器ハードウェアを共有すると効率がよい。また、前記画素値生成回路および前記プログラム可能な分解回路が、前記画素値生成回路および前記プログラム可能な分解回路として機能するように異なる様態でプログラムされた同一の物理的回路ブロックを含むようにしてもよい。
【0013】
前記分解操作は、前記プログラム可能なグラフィックス処理回路を用いて1つもしくは複数のグラフィックス処理スレッドを行ったあと、第2の分解能を有する画素値を前記フレームバッファメモリに書き込むことにより、達成され得る。従って、前記グラフィックス処理パイプライン内で生成され、前記パイプラインメモリ内に保存された画素値を前記分解操作によってさらに処理して、前記フレームバッファメモリへのライトバックを必要とすること無く、前記グラフィックス処理パイプラインによって実行されるグラフィックス処理スレッドを用いて異なる分解能出力を形成する。
【0014】
本技術の有用性は、前記分解操作が複数のレンダリングターゲット入力および複数のレンダリングターゲット出力のうちの少なくとも1つをサポートする場合、さらに向上する。このような複数のレンダリングターゲット操作がサポートされている場合、前記分解回路はプログラム可能なため、現実の所望の分解操作を行う能力が向上する。
【0015】
いくつかの実施形態において、前記分解操作は、複数の入力パラメータを受信し、単一の出力パラメータを生成することで、多対一型処理操作として機能し得る。分解操作は往々にしてこの形態であり、これらの技術によって達成される利点の大部分が、この種の操作をサポートすることにより、実現され得る。
【0016】
前記グラフィックス処理パイプラインは典型的には、グラフィックスプログラム命令に応答してその処理操作を行う命令デコーダを含むことが、理解される。本技術によれば、この命令デコーダは、(i)前記画素値を前記第1の分解能で生成するステップと、(ii)前記画素値を前記第1の分解能で保存するステップと、(iii)前記第1の分解能の前記画素値を前記パイプラインメモリから読み出し、前記分解操作を行って、画素値を第2の分解能で生成するステップと、(iv)前記パイプラインメモリ内に保存された画素値を前記フレームバッファメモリに書き込むステップとを提供する操作を制御するように、改変され得る。
【0017】
前記パイプラインメモリは多様な異なる様態で形成可能であることが、理解される。いくつかの実施形態において、前記パイプラインメモリは、命令情報および画素値を保存し得る。前記パイプラインメモリは、順次処理されている画素値の特定領域(例えば、タイルベースのグラフィックス処理ユニット内のもの)のサポート専用にしてもよいし、あるいは、より柔軟にランダムアクセスメモリリソースとして提供してもよい。このランダムアクセスメモリリソースは、前記グラフィックス処理パイプラインがその時行っている特定の操作に対して前記グラフィックス処理パイプラインによって適宜用いられる。しかし、前記パイプラインメモリを前記画素値生成回路および前記プログラム可能な分解回路によって生成された画素値の保存専用として用いると、前記パイプラインメモリと前記グラフィックス処理パイプラインとの間の連結がより直接的になるため、効率が向上し得る。
【0018】
別の局面から鑑みて、本発明は、フレームバッファメモリへ保存されるべき画素データ値のフレームを生成するグラフィックス処理装置を提供する。前記グラフィックス処理装置は、
グラフィックス処理パイプライン手段であって、
(i)画素値生成手段であって、1つもしくは複数の第1の入力パラメータに応答して、画素値を第1の分解能で前記フレーム内の一領域に対して生成する画素値生成手段と、
(ii)前記処理パイプラインに連結されたパイプラインメモリ手段であって、前記画素値を前記第1の分解能で保存するパイプラインメモリ手段と、
(iii)前記パイプラインメモリに連結されたライトバック手段であって、前記パイプラインメモリ手段中に保存された画素値を前記フレームバッファメモリに書き込むライトバック手段と、
を含むグラフィックス処理パイプライン手段、
を含み、
前記グラフィックス処理パイプライン手段は、
(iv)プログラム可能な分解手段であって、1つもしくは複数のグラフィックスプログラム命令および1つもしくは複数の第2のパラメータに応答して、前記画素値を前記第1の分解能で前記パイプラインメモリ手段から読み出し、前記グラフィックスプログラム命令および前記1つもしくは複数の第2のパラメータによって指定された分解操作を行って、前記ライトバック手段によって前記フレームバッファメモリに書き出されるべき画素値を第2の分解能で生成し、前記第2の分解能が前記第1の分解能と異なる、プログラム可能な分解手段、
をさらに含む。
【0019】
さらなる局面から鑑みて、本発明は、グラフィックス処理パイプライン内において、フレームバッファメモリに保存される画素データ値のフレームを生成するグラフィックス処理方法を提供する。前記グラフィックス処理方法は、
(i)1つもしくは複数の第1の入力パラメータに応答して、前記フレーム内の一領域に対して画素値を第1の分解能で生成するステップと、
(ii)前記画素値を前記第1の分解能で前記グラフィックス処理パイプライン内のパイプラインメモリ内に保存するステップと、
(iii)1つもしくは複数のグラフィックプログラム命令および1つもしくは複数の第2のパラメータに応答して、前記第1の分解能の前記画素値を前記パイプラインメモリから読み出し、前記グラフィックスプログラム命令および前記1つもしくは複数の第2のパラメータによって指定された分解操作を行って、前記ライトバック手段によって前記フレームバッファメモリに書き込まれるべき画素値を第2の分解能で生成するステップであって、前記第2の分解能が前記第1の分解能と異なる、ステップと、
(iv)前記パイプラインメモリ内に保存された画素値を前記フレームバッファメモリに書き込むステップと、
を含む。
【0020】
さらなる局面から鑑みて、本発明は、グラフィックス処理装置を制御するためのコンピュータプログラムを保存して、グラフィックス処理パイプライン内において、フレームバッファメモリに保存される画素データ値のフレームを生成するグラフィックス処理方法を行うためのコンピュータプログラム記憶媒体を提供する。前記グラフィックス処理方法は、
(i)1つもしくは複数の第1の入力パラメータに応答して、前記フレーム内の一領域に対して画素値を第1の分解能で生成するステップと、
(ii)前記グラフィックス処理パイプライン内のパイプラインメモリ内に前記画素値を前記第1の分解能で保存するステップと、
(iii)1つもしくは複数のグラフィックプログラム命令および1つもしくは複数の第2のパラメータに応答して、前記第1の分解能の前記画素値を前記パイプラインメモリから読み出し、前記グラフィックスプログラム命令および前記1つもしくは複数の第2のパラメータによって指定された分解操作を行って、前記ライトバック手段によって前記フレームバッファメモリに書き込まれるべき画素値を第2の分解能で生成するステップであって、前記第2の分解能が前記第1の分解能と異なる、ステップと、
(iv)前記パイプラインメモリ内に保存された画素値を前記フレームバッファメモリに書き込むステップと、
を含む。
【0021】
本発明の前記および他の目的、機能および利点は、以下の例示的実施形態の詳細な説明を添付図面と共に参照すれば、明らかとなる。
【図面の簡単な説明】
【0022】
【図1】メモリに連結されたグラフィックス処理装置を模式的に示す。
【図2】パイプラインメモリ内で画素値を生成した後、これらのパイプラインメモリ内の画素値に対して分解操作を行った後、フレームバッファに対してライトバック操作を行う操作を模式的に示す。
【図3】図2に記載のグラフィックス処理方法を模式的に示すフロー図である。
【図4】遅延シェーディング操作を行うためのパイプラインメモリの使用を模式的に示す。
【発明を実施するための形態】
【0023】
図1は、並列に配置された複数のグラフィックス処理パイプライン8を含むグラフィックス処理ユニット2を示す。グラフィックス処理ユニット2は、主要メモリ4に連結される。主要メモリ4は、画素値のフレームをフレームバッファメモリ6内に保存する。主要メモリ4はまた、頂点データおよびテクスチャデータも保存する。これらの頂点データおよびテクスチャデータは、グラフィックス画像およびグラフィックス処理ユニットプログラム命令を表す画素値の生成の際に入力として用いられる
【0024】
図1中に示すグラフィックス処理パイプライン8はそれぞれ、複数のパイプライン段を含む。これらの段は、フェッチ段10と、プログラム可能なハードウェア段12と、ライトバック段16とを含む。プログラム可能なハードウェア段12は、適切なグラフィックスプログラム命令により、画素値生成回路14および分解回路18を提供するように、構成することができる。プログラム可能なハードウェア段12は、マルチスレッド処理をサポートし、そのため、これらの機能および他の機能を果たすことができる。グラフィックス命令デコーダ20は、主要メモリ4からフェッチされたグラフィックスプログラム命令に応答して、パイプライン段12および14を制御して、所望のグラフィックス処理操作を行う。これらのグラフィックスプログラム命令は、組み合わされた生成プログラムを含み得る。この組み合わされた生成プログラムは、プログラム可能なハードウェア段12を制御して、プログラム可能なハードウェア段12に画素値を第1の分解能で生成させるように機能する。その後画素値はパイプラインメモリ22内に保存された後、分解プログラムがプログラム可能なハードウェア段12を制御してプログラム可能なハードウェア段12にこれらの画素値を読み出させ、分解操作を行って画素値を第2の分解能で生成させる。その後、これらの画素値は、(直接的にまたは先ずパイプラインメモリ22内に保存された後に)ライトバック段16によってフレームバッファメモリ6にライトバックされる。
【0025】
前記画素生成プログラム(すなわち、画素生成回路14)を実行するプログラム可能なハードウェア段12は、主要メモリ4から読みだされた前記頂点データおよびテクスチャデータからの画素値を生成するように、機能する。これらの画素値は、パイプラインメモリ22内に保存される。このときに保存された素値は、第1の分解能(例えば、高分解能)を有する。その後、グラフィックス命令デコーダ20によって制御されるような分解プログラムを実行するプログラム可能なハードウェア段12は、画素値を第1の分解能でパイプラインメモリ22から読み出し、これらの画素値に対して分解操作を行う。この分解操作は、マルチサンプルドアンチエイリアシング操作、マルチサンプルド高ダイナミックレンジレンダリング操作、リニアブレンディング操作、遅延シェーディング操作、フォーマット変換操作、YUV変換操作および/または画素値の圧縮(例えば、前記フレームバッファを圧縮形態にすることで、レンダリングトゥテクスチャを行った後に当該データを用いてテクスチャリングを行う際に、帯域幅を節約することができる)のうち1つもしくは複数の操作を含み得る。前記の操作は行われる分解操作の例であり、他のこのような操作は、この技術分野の者によく知られる。前記分解プログラムによって行われた分解操作の結果、第1の分解能と異なる第2の分解能の画素値が得られる。これらの画素値は、パイプラインメモリ22にライトバックしてもよいし、あるいは、ライトバック回路16に直接送ってもよい。ライトバック回路16は、第2の分解能の画素値をフレームバッファ6に書き込んで、後で表示されるようにする。
【0026】
分解操作の一例として、アンチエイリアシング操作がある。このアンチエイリアシング操作においては、グラフィックスオブジェクトのエッジをアンチエイリアシング操作においてスムージングし、4つの画素値を第1の高分解能で読み出し、これらの画素値を用いて、各画素値をより低い第2の分解能で生成する。従って、4対1ダウンサンプリングと、前記分解プログラム(すなわち、分解回路18)を実行しているプログラム可能なハードウェア段12によって行われるアンチエイリアシング操作とが共に行われる。前記分解操作を、前記した多対一操作と異なるものにすることができる。
【0027】
前記分解操作は、パイプラインメモリ22における画素値生成操作によって生成された前記生成された画素値をその入力として用いており、分解操作を行うためにこれらの画素値をフレームバッファメモリ6にライトバックした後グラフィックス処理パイプライン8を通じてリードバックする必要は無い。本技術に従って行われる分解操作が認識しているのは、データ要求はローカルであることが多いため、前記グラフィックス処理ユニットが接続された画像の部分のより高い分解能表現(または少なくとも異なる分解能表現)を生成しており、この表現をパイプラインメモリ22内に保存している時には、分解操作に対する入力はパイプラインメモリ22内に既に存在する、ということである。前記分解操作は、パイプラインメモリ22内に既に存在している画素値以外の画素には実際にアクセスしなくてもよいため、前記フレームバッファメモリ6にライトバックを介入させる必要が無い。そのため、分解操作を行うために当該フレームバッファ内のどこからでも入力画素値を利用可能にするという柔軟性は事実不要となる。従って、プログラム可能なハードウェア段12は、多様な分解操作をより少ないメモリ帯域幅およびエネルギー消費で行うことができる。
【0028】
グラフィックス処理回路14およびプログラム可能な分解回路18は、プログラム可能なハードウェア段12の形態の共有ハードウェアにより、実際に提供され得る。このプログラム可能なハードウェア段12は、受信されたグラフィックスプログラム命令に応答してグラフィックス命令デコーダ20が生成する制御信号により、制御される。プログラム可能なハードウェア段12は、一連のグラフィックス処理スレッドを実行して、画素値をパイプラインメモリ22内において生成した後、後処理することができる。
【0029】
図2は、行われる処理操作を模式的に示す。入力パラメータ(例えば、頂点24およびテクスチャ26を規定するデータ)は、主要メモリ4からグラフィックス処理パイプライン8内へと読み出される。その後、プログラム可能なハードウェア段12の形態の画素生成回路は、画素値を生成し、これらの画素値は、タイルバイタイルベースでパイプラインメモリ22内に保存される。この例は、タイルベースのグラフィックス処理ユニットに関連することが、理解される。
【0030】
(上記にて得られたような)画素生成回路14によって生成された画素値は、パイプラインメモリ22内に書き込まれる際、第1の分解能(例えば、最終的に必要な分解能の4倍)を有する。その後、(プログラム可能なハードウェア段12のプログラム制御操作によって提供された)分解回路18は、その入力としてこれらの画素値を第1の分解能で読み出し、これらの画素値に対して分解操作(例えば、上記したようなもののうちの1つ)を行う。その後、その結果得られた分解された画素値は、この例において、パイプラインメモリ22内に第2の分解能(例えば、第1の分解能の四分の一)で書き込まれる。その後、ライトバックプロセスにおいて、前記画素値は第2の分解能(所望のダウンサンプリングされた分解能)でフレームバッファメモリ6に書き込まれ、この時点以降、前記画素値を用いて、適切な表示を前記所望の分解能を駆動することができる。
【0031】
図3は、前記した処理を模式的に示すフロー図である。ステップ28において、頂点データおよびテクスチャデータを主要メモリ4からフェッチする。ステップ30において、画素生成回路14は、前記頂点データおよびテクスチャデータによって規定されたグラフィックスオブジェクトをラスタ化して、画素値を前記所望の分解能の4倍(4x)で形成し、これらの画素値は、この4x分解能でパイプラインメモリ22内に書き込まれる。その後、ステップ32は、これらの画素値を入力としてパイプラインメモリ22から前記4x分解能で前記分解回路18に読み出し、ステップ34は、これらの入力画素値に対して分解操作を行って、出力画素値を前記所望の1x分解能で生成する。ステップ36において、この1x分解能における画素値が、フレームバッファメモリ6へ書き出される。
【0032】
ステップ38は、処理を必要とするグラフィックスデータの領域に対応するタイルがまだあるか否かを決定する。処理すべきタイルがある場合、ステップ40は、次のタイルを選択し、その後処理はステップ28へ戻る。処理すべきタイルが無い場合、処理は終了する。
【0033】
図4は、遅延シェーディング操作の一環としての、パイプラインメモリ28へのデータの書き込みおよびパイプラインメモリ28からのデータの読み出しを模式的に示す。第1のレンダリング操作(グラフィックス処理スレッド)は、画素値42の領域を4x分解能でパイプラインメモリ22内に書き込む機能を行う。その後、第2のレンダリング操作は、画素値44の第2の領域をこの4x分解能でパイプラインメモリ22内に生成する機能を行う。前記2つのグラフィックス処理操は、グラフィックス処理パイプライン8の能力に応じて逐次的にまたは並行的に行ってよい。
【0034】
前記処理における次の段において、画素値42の領域および44の領域双方を入力として読み出し、これらの領域を用いて、未だに前記4x分解能である画素値46の色バッファ領域をポピュレートするように、色値を計算する。最後に、分解操作を行う。この分解操作において、前記4x分解能の画素値を色バッファ46内において入力として読み出し、画素値48のダウンスケールされた出力領域を1x分解能で生成する。画素値48のダウンスケールされた領域は、フレームバッファメモリ6にライトバックされる。
【0035】
図4に示すダウンスケール操作は、分解回路14が実行可能ないくつかの異なるプログラム可能な分解操作のうちの1つである。
【0036】
一般的レベルにおいて、前記した技術は、新規のプログラム可能な能力を、パイプラインメモリ22からの直接の分解操作の形態で、グラフィックス処理パイプライン8内に付加するものとしてみなすことができ、その分解操作は、いくつかの問題(例えば、メモリ帯域幅およびメモリアクセスのエネルギー消費)に対処するのに役立つ。このようにして、画素値の分解能を変更する分解操作をライトバックの前に付加することで、生成された画素値の後処理をフレームバッファメモリへのライトバック介入の必要無く達成することができる。前記分解操作の例を挙げると、例えばトーンマッピングによるマルチサンプルバッファ分解があり、このマルチサンプルバッファ分解を各サンプルに適用した後にダウンサンプリングを行うことで、高ダイナミックレンジレンダリングについて向上したアンチエイリアシング結果が得られる。
【0037】
この新規なハードウェアの1つの制御方法として、オープンGL ESシェーディング言語を新規シェーダー種類および新規組み込み変数で拡張する方法がある。従って、この新規ハードウェアのサポートは、既存のシェーダープログラミングモデル内に適合され得る。オープンGL ESインターフェースは、プログラムオブジェクトではなくフレームバッファオブジェクトに取り付けられた新規シェーダー種類と共に拡張することができる。
【0038】
タイルベースのグラフィックス処理ユニット内の(パイプラインメモリ22内に保存されている)画素値のタイルをフレームバッファメモリ6にライトバックする前に、複数のグラフィックス処理スレッドのリスケジューリングを行うことができる。その後、これらのリスケジュールされたグラフィックス処理スレッドそれぞれから、フレームバッファメモリ6へライトバックすべき物理的画素を得ることができる。前記プログラミングモデルは多対一モデルであり得、複数のサンプルを複数のパラメータとしてこれらのリスケジュールされたグラフィックス処理スレッドに送り、単一パラメータをフレームバッファメモリ6にライトバックする。これらのリスケジュールされたグラフィックス処理スレッドへの入力およびこれらのリスケジュールされたグラフィックス処理スレッドからの出力はどちらとも、複数のレンダリングターゲットをサポートするように形成され得、これにより、この技術の使用の柔軟性が向上する。
【0039】
分解回路14の制御をサポートするように導入される新規シェーダー種類は、既存のフラグメントシェーダーの変種であり得る。前記新規のシェーダー種類は、1組の組み込み変数(「float2 gl_SamplePosition[]」、「float4gl_SampleColor[]」、「intgl_SampleCount」)を有し得る。
【0040】
このようにしてシェーダー種類を形成することで、既に組み込まれたフラグメントシェーダーフィーチャ(例えば、テクスチャリング)についての容易なサポートが得られ、これは、ガンマ補正を含む操作において有用であり得る。前記新規のシェーダー種類は、シェーダーをフレームバッファオブジェクトに取り付ける機構を導入することにより、既存のシェーダー種類を拡張させる。従って、本技術では、機構を以下のものから:
−4xMSAAへのレンダリング(glBindFrameBuffer、glDrawTexture)
− 4xMSAAからno MSAAへの分解(glCopyTexSub画像2D)
− MSAAのテクスチャとしての非使用(glBindTexture)
以下のものへと変換する:
− 4xMSAAへの内的かつ直接的分解によるレンダリング(glBindFrameBuffer、glDrawTexture)
− MSAAのテクスチャとしての非使用(glBindTexture)
【0041】
上記は、外的フォーマットよりもより高精度なテクスチャの内的フォーマットを示し、明示的分解パスを除去する。
【0042】
複数のレンダリングターゲットのサポートを前記入力に付加するために、前記機構中のサンプル位置およびサンプル色組み込みを、二次元アレイおよび第4付加組み込み「intgl_SampleBufferCount」に拡張することができる。これは、先行アレイの二次元方向を示す。複数のレンダリングターゲットサポートにより、遅延ライティングなどの機構を明示的に行うことが可能となる。ETC/DXTへのレンダリングをフィーチャとしてサポートするために、整数に対するビットワイズ操作が、グラフィックス処理パイプライン8の処理能力に付加され得る。
【0043】
本明細書中、本発明の例示的実施形態について添付図面と共に詳細に説明してきたが、本発明はこれらの詳細な実施形態に限定されず、当業者にとって、添付の特許請求の範囲によって規定されるような本発明の範囲および意図から逸脱すること無く、多様な変更および改変が本発明において可能であることが、理解される。
【符号の説明】
【0044】
2 グラフィックス処理ユニット
4 主要メモリ
6 フレームバッファメモリ
8 グラフィックス処理パイプライン
10 フェッチ段
12 ハードウェア段
14 画素値生成回路
16 ライトバック段
18 分解回路
20 グラフィックス命令デコーダ
22 パイプラインメモリ
24 頂点
26 テクスチャ

【特許請求の範囲】
【請求項1】
フレームバッファメモリへ保存されるべき画素データ値のフレームを生成するグラフィックス処理装置であって、
(i)1つもしくは複数の第1の入力パラメータに応答して、画素値を第1の分解能で前記フレーム内の一領域に対して生成する画素値生成回路と、
(ii)グラフィックス処理パイプラインに連結されたパイプラインメモリであって、前記画素値を前記第1の分解能で保存するように構成されたパイプラインメモリと、
(iii)前記パイプラインメモリに連結されたライトバック回路であって、前記パイプラインメモリ中に保存された画素値を前記フレームバッファメモリ内に書き込むように構成されたライトバック回路と、
を含む、グラフィックス処理パイプライン、
を含み、
前記グラフィックス処理パイプラインは、
(iv)プログラム可能な分解回路をさらに含み、
前記プログラム可能な分解回路は、1つもしくは複数のグラフィックスプログラム命令および1つもしくは複数の第2のパラメータに応答して、前記画素値を前記第1の分解能で前記パイプラインメモリから読み出し、前記グラフィックスプログラム命令および前記1つもしくは複数の第2のパラメータによって指定された分解操作を行って、前記ライトバック回路によって前記フレームバッファメモリに書き込まれるべき画素値を第2の分解能で生成するものであり、
前記第2の分解能が前記第1の分解能と異なる、
グラフィックス処理装置。
【請求項2】
前記第2の分解能が前記第1の分解能よりも低い、請求項1に記載のグラフィックス処理装置。
【請求項3】
前記分解回路が、複数の画素値を前記第1の分解能で前記分解操作への入力として読み出して、1つもしくは複数の画素値を前記第2の分解能で形成する、請求項2に記載のグラフィックス処理装置。
【請求項4】
前記分解操作が、
マルチサンプルドアンチエイリアシング操作、
マルチサンプルド高ダイナミックレンジレンダリング操作、
リニアブレンディング操作、
遅延シェーディング操作、
フォーマット変換操作、
YUV変換操作、および
画素値の圧縮、
のうち1つもしくは複数の操作である、
請求項2に記載のグラフィックス処理装置。
【請求項5】
前記画素値生成回路がプログラム可能なグラフィックス処理回路を含み、前記画素値生成回路および前記プログラム可能な分解回路が、各グラフィックス処理スレッドを実行する、請求項1に記載のグラフィックス処理装置。
【請求項6】
前記画素値生成回路および前記プログラム可能な分解回路が、前記プログラム可能なグラフィックス処理回路の少なくとも一部を共有する、請求項5に記載のグラフィックス処理装置。
【請求項7】
前記プログラム可能なグラフィックス処理回路が、ソフトウェア制御下において前記画素値生成回路としてまたは前記プログラム可能な分解回路として機能するように構成された、請求項6に記載のグラフィックス処理装置。
【請求項8】
1つもしくは複数のグラフィックス処理スレッドが、前記画素値に対して前記第1の分解能で前記プログラム可能なグラフィックス処理回路によって実行され、これにより前記分解操作が行われて前記画素値が前記第2の分解能で生成され、その後、画素値が前記第2の分解能で前記フレームバッファメモリに書き込まれる、請求項5に記載のグラフィックス処理装置。
【請求項9】
前記分解操作が、
複数のレンダリングターゲット入力および
複数のレンダリングターゲット出力、
のうち少なくとも1つをサポートする、
請求項1に記載のグラフィックス処理装置。
【請求項10】
前記分解操作が、複数の入力パラメータを受信し、単一出力パラメータを生成する、請求項1に記載のグラフィックス処理装置。
【請求項11】
前記グラフィックス処理パイプラインが命令デコーダを含み、前記命令デコーダが、組み合わされた生成および分解グラフィックス命令に応答して、
(i)前記画素値を前記第1の分解能で生成するステップと、
(ii)前記画素値を前記第1の分解能で保存するステップと、
(iii)前記画素値を前記第1の分解能で前記パイプラインメモリから読み出し、前記分解操作を行って、画素値を第2の分解能で生成するステップと、
(iv)前記パイプラインメモリ中に保存された画素値を前記フレームバッファメモリに書き込むステップと、
を行うように前記グラフィックスパイプラインを制御する、
請求項1に記載のグラフィックス処理装置。
【請求項12】
前記パイプラインメモリが、前記画素値生成回路および前記プログラム可能な分解回路によって生成された画素値の保存専用である、請求項1に記載のグラフィックス処理装置。
【請求項13】
フレームバッファメモリへ保存されるべき画素データ値のフレームを生成するグラフィックス処理装置であって、前記グラフィックス処理装置が、
(i)画素値生成手段であって、1つもしくは複数の第1の入力パラメータに応答して、画素値を第1の分解能で前記フレーム内の一領域に対して生成する画素値生成手段と、
(ii)グラフィックス処理パイプラインに連結されたパイプラインメモリ手段であって、前記画素値を前記第1の分解能で保存するパイプラインメモリ手段と、
(iii)前記パイプラインメモリに連結されたライトバック手段であって、前記パイプラインメモリ手段中に保存された画素値を前記フレームバッファメモリに書き込むライトバック手段と、
を含むグラフィックス処理パイプライン手段、
を含み、
前記グラフィックス処理パイプライン手段が、
(iv)プログラム可能な分解手段をさらに含み、
前記プログラム可能な分解手段は、1つもしくは複数のグラフィックスプログラム命令および1つもしくは複数の第2のパラメータに応答して、前記画素値を前記第1の分解能で前記パイプラインメモリ手段から読み出し、前記グラフィックスプログラム命令および前記1つもしくは複数の第2のパラメータによって指定された分解操作を行って、前記ライトバック手段によって前記フレームバッファメモリに書き出されるべき画素値を第2の分解能で生成するものであり、
前記第2の分解能が前記第1の分解能と異なる、
グラフィックス処理装置。
【請求項14】
グラフィックス処理パイプライン内において、フレームバッファメモリへ保存される画素データ値のフレームを生成するグラフィックス処理方法であって、前記グラフィックス処理方法が、
(i)1つもしくは複数の第1の入力パラメータに応答して、前記フレーム内の一領域に対して画素値を第1の分解能で生成するステップと、
(ii)前記画素値を前記第1の分解能で前記グラフィックス処理パイプライン内のパイプラインメモリ内に保存するステップと、
(iii)1つもしくは複数のグラフィックプログラム命令および1つもしくは複数の第2のパラメータに応答して、前記第1の分解能の前記画素値を前記パイプラインメモリから読み出し、前記グラフィックスプログラム命令および前記1つもしくは複数の第2のパラメータによって指定された分解操作を行って、前記ライトバック手段によって前記フレームバッファメモリに書き込まれるべき画素値を第2の分解能で生成するステップであって、前記第2の分解能が前記第1の分解能と異なる、ステップと、
(iv)前記パイプラインメモリ内に保存された画素値を前記フレームバッファメモリに書き込むステップと、
を含む、グラフィックス処理方法。
【請求項15】
グラフィックス処理装置を制御するためのコンピュータプログラムを保存して、グラフィックス処理パイプライン内において、フレームバッファメモリに保存される画素データ値のフレームを生成するグラフィックス処理方法を行うためのコンピュータプログラム記憶媒体であって、前記グラフィックス処理方法が、
(i)1つもしくは複数の第1の入力パラメータに応答して、前記フレーム内の一領域に対して画素値を第1の分解能で生成するステップと、
(ii)前記グラフィックス処理パイプライン内のパイプラインメモリ内において前記画素値を前記第1の分解能で保存するステップと、
(iii)1つもしくは複数のグラフィックプログラム命令および1つもしくは複数の第2のパラメータに応答して、前記第1の分解能の前記画素値を前記パイプラインメモリから読み出し、前記グラフィックスプログラム命令および前記1つもしくは複数の第2のパラメータによって指定された分解操作を行って、前記ライトバック手段によって前記フレームバッファメモリへ書き込まれるべき画素値を第2の分解能で生成するステップであって、前記第2の分解能が前記第1の分解能と異なる、ステップと、
(iv)前記パイプラインメモリ内に保存された画素値を前記フレームバッファメモリに書き込むステップと、
を含む、
コンピュータプログラム記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2010−250831(P2010−250831A)
【公開日】平成22年11月4日(2010.11.4)
【国際特許分類】
【外国語出願】
【出願番号】特願2010−94976(P2010−94976)
【出願日】平成22年4月16日(2010.4.16)
【出願人】(504394342)アーム・リミテッド (134)
【Fターム(参考)】