![]() グラフィックス処理システムにおけるオフスクリーンサーフェスのためのマルチバッファサポート
专利摘要:
概して、本開示では、グラフィックスシステムにおいてオフスクリーンサーフェスのためのマルチバッファサポートを行うための様々な技法について説明する。例示的な装置は、1つ又は複数のバッファエリアと、1つ又は複数のプロセッサとを含む。1つ又は複数のプロセッサは、グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連するバッファスペース内の複数のバッファを割り振るように構成される。1つ又は複数のプロセッサは、書き込み動作中にオフスクリーンサーフェスに関係する情報が第1のバッファに書き込まれ、読み出し動作中にオフスクリーンサーフェスに関係する情報が第2のバッファから読み出されるように、バッファ内の第1のバッファをオフスクリーンサーフェスのための書き込みバッファとして識別し、さらにバッファ内の第2のバッファをオフスクリーンサーフェスのための読み出しバッファとして識別するようにさらに構成される。 A 公开号:JP2011510407A 申请号:JP2010543290 申请日:2009-01-16 公开日:2011-03-31 发明作者:ウェイブリュー、スティーブン・トッド;エリス、ブライアン 申请人:クゥアルコム・インコーポレイテッドQualcomm Incorporated; IPC主号:G06T15-00
专利说明:
[0001] 本出願は、2008年1月18日に出願された米国仮出願第61/022,195号の利益を主張し、その内容全体が参照によりここに組み込まれる。] 技術分野 [0002] 本出願は、グラフィックス処理システム内のサーフェスのレンダリング及び表示に関する。] 背景 [0003] グラフィックスプロセッサは、ビデオゲーム、グラフィックスプログラム、コンピュータ支援設計(CAD)アプリケーション、シミュレーション及び視覚化ツール、及びイメージングなど、様々なアプリケーションのために、2次元(2D)及び3次元(3D)画像をレンダリングするために広く使用される。次いで、ディスプレイプロセッサは、ディスプレイ装置を介してユーザに提示するためにレンダリングされる出力を表示するために使用される。] [0004] これらのアプリケーションにおいて使用されるグラフィックスプロセッサ、ディスプレイプロセッサ、又はマルチメディアプロセッサは、データの並列処理及び/又はベクトル処理を実行するように構成できる。SIMD(Single Instruction, Multiple Data)拡張を持つ又は持たない汎用CPU(中央処理装置)は、データを処理するように構成することもできる。SIMDベクトル処理では、単一の命令が複数のデータ項目に対して同時に動作する。] [0005] OpenGL(登録商標)(オープングラフィックスライブラリ)は、2D及び3Dグラフィックスを生成するアプリケーションを記述するときに使用されるAPI(アプリケーションプログラミングインターフェース)を定義する標準仕様である。(Java(登録商標)など、他の言語は、それら自体の標準プロセスを介してOpenGL APIへのバインディングを定義することができる。)このインターフェースは、単純なプリミティブからシーンを描くために使用できる複数の関数呼び出しを含む。したがって、グラフィックスプロセッサ、マルチメディアプロセッサ、及び汎用CPUでさえ、OpenGL関数呼び出しを使用して記述されたアプリケーションを実行することができる。OpenGLES(組み込みシステム)は、モバイルワイヤレス電話、デジタルマルチメディアプレーヤ、携帯情報端末(PDA)又はテレビゲーム機などの組み込みデバイスのために設計された、OpenGLの変形である。OpenVG(商標)(Open Vector Graphics)は、主にハードウェア−アクセラレーテッド2Dベクトルグラフィックスのために設計された別の標準APIである。] [0006] EGL(商標)(Embedded Graphics Library)は、マルチメディアクライアントAPI(OpenGLES、OpenVG、及びいくつかの他の標準マルチメディアAPIなど)と、基礎をなすプラットフォームマルチメディア機能との間のインターフェースである。EGLは、グラフィックスコンテキスト管理、レンダリングサーフェス生成、及びレンダリング同期を処理することができ、ハイパフォーマンス、ハードウェアアクセラレーテッド、及び混合モード2D及び3Dレンダリングを可能にする。レンダリングサーフェス生成では、EGLは、クライアントAPI(ユーザアプリケーションAPIなどの)が描画及び共有することができるオンスクリーンサーフェス(たとえば、ウィンドウサーフェス)とオフスクリーンサーフェス(たとえば、pbuffer、pixmap)の両方を生成するための機構を提供する。オンスクリーンサーフェスは、典型的に、アクティブウィンドウのフレームバッファメモリに直接レンダリングされる。オフスクリーンサーフェスは、典型的に、後で使用するためにオフスクリーンバッファにレンダリングされる。Pbufferは、たとえば、OpenGLサーバサイド(ドライバ)の動作に関連するメモリ空間に記憶できるオフスクリーンメモリバッファである。pixmapは、たとえば、クライアントアプリケーションに関連するメモリ空間に通常記憶されるオフスクリーンメモリ領域である。] 概要 [0007] 概して、本開示では、pbufferサーフェス及びpixmapサーフェスなどのオフスクリーンサーフェスのためのマルチバッファサポートを行うための様々な技法について説明する。一態様では、単一又は未知数のバッファでなく、指定された数のバッファの生成を可能にするEGL拡張内に、オフスクリーンサーフェスのためのマルチバッファサポートが実装されるとしてもよい。アプリケーション開発者は、EGLなどのAPIを使用して、現在読み出し又は書き込み(描画)動作を行うべき、オフスクリーンサーフェスのためのバッファを指定することもできる。一態様では、オフスクリーンビデオサーフェス及び事前にレンダリングされたスプライトアニメーションのために複数のバッファを設けることができる。次いで、これらのマルチバッファリングされたサーフェス及びアニメーションは、レンダリング動作とともに又はそれとは別に行われるサーフェスオーバーレイ機能を介して、他の2Dサーフェス要素、3Dサーフェス要素、及びビデオサーフェス要素と組み合わせることができる。本開示では、2Dサーフェスは、たとえば、OpenVGなどの2D APIによって生成されるサーフェスである。3Dサーフェスは、たとえば、OpenGLなどの3D APIによって生成されるサーフェスである。ビデオサーフェスは、たとえば、H.264又はMPEG4(Moving Picture Experts Groupバージョン4)などのビデオデコーダによって生成されるサーフェスである。] [0008] 一態様では、方法は、グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連する複数のバッファを割り振ることと、書き込み動作中にオフスクリーンサーフェスに関係する情報がバッファ内の第1のバッファに書き込まれるように、第1のバッファをオフスクリーンサーフェスのための書き込みバッファとして識別することとを含む。本方法は、読み出し動作中にオフスクリーンサーフェスに関係する情報がバッファ内の第2のバッファから読み出されるように、第2のバッファをオフスクリーンサーフェスのための読み出しバッファとして識別することをさらに含む。] [0009] 別の態様では、装置は、バッファスペースと1つ又は複数のプロセッサとを含む。1つ又は複数のプロセッサは、グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連する、バッファスペース内の複数のバッファを割り振るように構成される。1つ又は複数のプロセッサは、書き込み動作中にオフスクリーンサーフェスに関係する情報が第1のバッファに書き込まれ、読み出し動作中にオフスクリーンサーフェスに関係する情報が第2のバッファから読み出されるように、バッファ内の第1のバッファをオフスクリーンサーフェスのための書き込みバッファとして識別し、さらにバッファ内の第2のバッファをオフスクリーンサーフェスのための読み出しバッファとして識別するようにさらに構成される。] [0010] 一態様では、コンピュータ可読媒体は、グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連する複数のバッファを割り振ることと、書き込み動作中にオフスクリーンサーフェスに関係する情報がバッファ内の第1のバッファに書き込まれるように、第1のバッファをオフスクリーンサーフェスのための書き込みバッファとして識別することとを、1つ又は複数のプログラマブルプロセッサに行わせるための命令を含む。このコンピュータ可読媒体は、読み出し動作中にオフスクリーンサーフェスに関係する情報がバッファ内の第2のバッファから読み出されるように、第2のバッファをオフスクリーンサーフェスのための読み出しバッファとして識別することを、1つ又は複数のプログラマブルプロセッサに行わせるための命令をさらに含む。] [0011] 本開示の1つ又は複数の態様の詳細について添付の図面及び以下の説明において述べる。他の特徴、目的、及び利点は、説明及び図面、ならびに特許請求の範囲から明らかになるであろう。] 図面の簡単な説明 [0012] 本開示の一態様に係る、オフスクリーンサーフェスのためのマルチバッファサポートを実装するために使用される装置を例示するブロック図。 本開示の別の態様に係る、オフスクリーンサーフェスのためのマルチバッファサポートを実装するために使用される装置を例示するブロック図。 本開示の一態様に係る、オフスクリーンサーフェスのためのマルチバッファサポートを実装するために使用される装置を例示するブロック図。 本開示の一態様に係る、図2Aに示すAPIライブラリのさらなる詳細を例示するブロック図。 本開示の一態様に係る、図2Aに示すドライバのさらなる詳細を例示するブロック図。 本開示の別の態様に係る、オフスクリーンサーフェスのためのマルチバッファサポートを実装するために使用される装置を例示するブロック図。 本開示の一態様に係る、それぞれ複数のバッファに関連する複数のオフスクリーンサーフェスの例を示すブロック図。 一態様では、ディスプレイ装置に表示される、図3Aに示すオフスクリーンサーフェスに関連するオーバーレイサーフェスデータの例を示すブロック図。 本開示の一態様に係る、それぞれ異なって識別される読み出しバッファ及び書き込みバッファに関連する複数のオフスクリーンサーフェスの別の例を示すブロック図。 一態様では、ディスプレイ装置に表示される、図3Cに示すオフスクリーンサーフェスに関連するオーバーレイサーフェスデータの例を示すブロック図。 本開示の一態様に係る、図1A、図1B、図2A、又は図2Dのグラフィックス処理システムに示す制御プロセッサ、グラフィックスプロセッサ、及び/又はディスプレイプロセッサのうちの1つ又は複数によって実行されてもよい方法の流れ図。 本開示の一態様に係る、図1A、図1B、図2A、又は図2Dのグラフィックス処理システムに示す制御プロセッサ、グラフィックスプロセッサ、及び/又はディスプレイプロセッサのうちの1つ又は複数によって実行されてもよい別の方法の流れ図。] 図1A 図1B 図2A 図2D 図3A 図3C 詳細な説明 [0013] 図1Aは、本開示の一態様に係る、オフスクリーンサーフェスのためのマルチバッファサポートを実装するために使用される装置100を例示するブロック図である。装置100は、スタンドアロン装置か、又はより大きいシステムの一部でもよい。たとえば、装置100は、(ワイヤレスモバイルハンドセットなどの)ワイヤレス通信装置を備えるか、又は、デジタルカメラ、デジタルマルチメディアプレーヤ、携帯情報端末(PDA)、ビデオゲーム機、又は他のビデオ装置の一部とすることができる。装置100は、(ウルトラモバイルパーソナルコンピュータなどの)パーソナルコンピュータ又はラップトップデバイスを備えることもできる。装置100は、上述の装置のいくつか又は全部において使用されることがある1つ又は複数の集積回路、又はチップ中に含まれるとしてもよい。] 図1A [0014] 装置100は、グラフィックスアプリケーション、ビデオアプリケーション、又は他のマルチメディアアプリケーションなどの様々な異なるアプリケーションを実行することが可能である。たとえば、装置100は、グラフィックスアプリケーション、ビデオゲームアプリケーション、ビデオアプリケーション、グラフィックスとビデオとを合成するアプリケーション、デジタルカメラアプリケーション、インスタントメッセージングアプリケーション、モバイルアプリケーション、ビデオ通信会議アプリケーション、ビデオブロードキャストアプリケーション、又はビデオストリーミングアプリケーションのために使用できる。] [0015] 装置100は、多種多様なデータタイプ及びフォーマットを処理することが可能である。たとえば、以下でより詳細に説明するように、装置100は、静止画像データ、動画(ビデオ)データ、又は他のマルチメディアデータを処理することができる。画像データは、コンピュータ生成グラフィックスデータを含むことができる。装置100は、グラフィックス処理システム102とメモリ104とディスプレイ装置106とを含む。プログラマブルプロセッサ108、110及び114は、グラフィックス処理システム102内に論理的に含まれる。プログラマブルプロセッサ108は、制御プロセッサ、又は汎用プロセッサとすることができる。プログラマブルプロセッサ110はグラフィックスプロセッサとすることができ、プログラマブルプロセッサ114はディスプレイプロセッサとすることができる。制御プロセッサ108は、グラフィックスプロセッサ110とディスプレイプロセッサ114の両方を制御することが可能である。プロセッサ108、110及び114は、スカラープロセッサ又はベクトルプロセッサとすることができる。一態様では、装置100は、他の形式のマルチメディアプロセッサを含むことができる。] [0016] 図1Aの例では、装置100のグラフィックス処理システム102は、メモリ104とディスプレイ装置の両方に結合される。メモリ104は、命令及び/又はデータを記憶することが可能な任意のパーマネント又は揮発性メモリを含むことができる。ディスプレイ装置106は、LCD(液晶ディスプレイ)又はテレビジョン(TV)ディスプレイデバイスなど、表示の目的で、3D画像データ、2D画像データ又はビデオデータを表示することが可能な任意の装置とすることができる。] 図1A [0017] グラフィックスプロセッサ110は、コンピュータグラフィックスをレンダリング、操作、及び表示するために利用される専用グラフィックスレンダリングデバイスとすることができる。グラフィックスプロセッサ110は、様々な複雑なグラフィックス関連アルゴリズムを実装することができる。たとえば、複雑なアルゴリズムは、2次元又は3次元コンピュータグラフィックスの表現に対応することができる。グラフィックスプロセッサ110は、点、線、及び三角形又は他の多角形サーフェス(面)を形成することなど、いくつかのいわゆる「プリミティブ」グラフィックス演算を実装して、ディスプレイ装置106などのディスプレイ上に複雑な3次元画像を生成することができる。] [0018] 本開示では、「レンダリングする」という用語は、一般に3D及び/又は2Dレンダリングを指す。例として、グラフィックスプロセッサ110は、OpenGL命令を利用して3Dグラフィックスフレームをレンダリングするか、又は、OpenVG命令を利用して2Dグラフィックスサーフェスをレンダリングすることができる。ただし、グラフィックスプロセッサ110は、グラフィックスをレンダリングするための任意の規格、方法又は技法を利用することができる。] [0019] グラフィックスプロセッサ110は、メモリ104に記憶された命令を実施することができる。メモリ104は、(グラフィックス又はビデオアプリケーションなどの)アプリケーションのためのアプリケーション命令118と、APIライブラリ120と、ドライバ122とを記憶することが可能である。アプリケーション命令118は、実行のためにメモリ104からグラフィックス処理システム102にロードできる。たとえば、制御プロセッサ108とグラフィックスプロセッサ110とディスプレイプロセッサ114とのうちの1つ又は複数は、命令118のうちの1つ又は複数を実行することができる。] [0020] 制御プロセッサ108、グラフィックスプロセッサ110、及び/又はディスプレイプロセッサ114は、また、アプリケーション命令118の実行中に、APIライブラリ120又はドライバ122内に含まれる命令をロードし、実行することができる。命令118は、APIライブラリ120又はドライバ122内のある機能を参照するか、又は他の場合は起動することができる。したがって、以下でより詳細に説明するように、グラフィックス処理システム102は、命令118を実行するとき、APIライブラリ120及び/又はドライバ122内の識別された命令を実行することもできる。ドライバ122は、制御プロセッサ108とグラフィックスプロセッサ110とディスプレイプロセッサ114とのうちの1つ又は複数に固有の機能を含むことができる。一態様では、アプリケーション命令118、APIライブラリ120、及び/又はドライバ122は、不揮発性データ記憶媒体などのストレージデバイスからメモリ104にロードできる。一態様では、アプリケーション命令118、APIライブラリ120、及び/又はドライバ122は、メモリ104に動的に無線でダウンロードされる1つ又は複数のダウンロード可能なモジュールを備えることができる。] [0021] グラフィックスプロセッサ110は、オンスクリーンサーフェス又はオフスクリーンサーフェスなどのグラフィックスサーフェスをレンダリングするとき、そのようなレンダリングデータをバッファエリア112に記憶することができる。バッファエリア112は、同期ダイナミックランダムアクセスメモリ(SDRAM)、埋込みダイナミックランダムアクセスメモリ(eDRAM)、又はスタティックランダムアクセスメモリ(SRAM)など、データを記憶することが可能な任意のパーマネント又は揮発性メモリなどのデータ記憶デバイスとすることができる。一態様では、図1Bに示すように、バッファエリア112はメモリ104内に直接含まれるとしてもよい。レンダリングされる各グラフィックスサーフェスは、そのサイズ及び形状によって定義される。ディスプレイプロセッサ114によって、ポストレンダリングのスケーリング及び回転機能をレンダリングされたサーフェスに適用することができるので、サイズ及び形状は、使用されているディスプレイ装置106の実際の物理的サイズによって制限されない。] 図1B [0022] バッファエリア112は、複数のオフスクリーンサーフェスバッファ116A〜116N(総称して116)を含むことができる。各オフスクリーンサーフェスバッファ116A〜116Nは、特定のオフスクリーンサーフェスに関連する。たとえば、オフスクリーンサーフェスバッファ116A〜116Nのすべてが、実行中にアプリケーション命令118によって生成されたある特定のオフスクリーンサーフェスに関連することがある。各バッファ116A〜116Nは、オフスクリーンサーフェスに関する情報を保持することが可能であり、読み出しバッファ、書き込みバッファ、又はその両方を構成することができる。] [0023] オフスクリーンサーフェスは、様々なコンテキストにおいて、様々な目的のために使用できる。たとえば、1つ又は複数のオフスクリーンサーフェスは、3D制御装置を用いてビデオプレーヤを表示するために、アニメーション化されたカーソルを表示するために、又はシステム状態インジケータ(たとえば、ワイヤレス信号強度メータ)を表示するために、ウィンドウサーフェスなどのオンスクリーンサーフェスと合成できる。] [0024] 一態様では、サーフェス(レンダリングされたサーフェス)のためのレンダリングされた出力データは、グラフィックスプロセッサ110によって書き込みバッファに書き込まれる。したがって、グラフィックスプロセッサ110は、オフスクリーンサーフェスをレンダリングした後、サーフェスのためのレンダリングされた出力データを、書き込みバッファとして識別されるバッファ116A〜116Nのうちの1つ又は複数に書き込む。この態様では、ディスプレイプロセッサ114及びグラフィックスプロセッサ110は、読み出しバッファとして識別されるバッファ116A〜116Nのうちの1つ又は複数から、レンダリングされた出力データを読み出すことが可能である。場合によっては、ディスプレイプロセッサ又はグラフィックスプロセッサ110は、また、ファイルから、又は無線でデータを読み出すことが可能である。] [0025] たとえば、ディスプレイプロセッサ114は、バッファ116A〜116Nのうちの1つから、レンダリングされた出力データを読み出して、ディスプレイ装置106上に表示するためのそのようなデータを準備することができる。ディスプレイプロセッサ114は、レンダリングされたグラフィックスフレームに対して、ディスプレイ装置106を駆動するために、ポストレンダリング機能を実行することができるプロセッサである。ポストレンダリング機能は、スケーリング、回転、ブレンディング、カラーキーイング、及び/又はオーバーレイを含むことができる。たとえば、ディスプレイプロセッサ114は、一定アルファブレンディングを用いたカラーキーイング、一定アルファブレンディングを用いないカラーキーイング、全サーフェス一定アルファブレンディング、又は全サーフェスピクセル単位アルファブレンディングなど、いくつかのブレンディングモードのうちの1つを使用することによってサーフェスを合成することができる。グラフィックスプロセッサ110は、テクスチャソースとしてバッファ116A〜116Nのうちの1つ又は複数から、レンダリングされた出力データを読み出すこともできる。いくつかの例では、制御プロセッサ108も、バッファ116A〜116Nのうちの1つ又は複数から、レンダリングされた出力データを読み出すことができる。] [0026] 一態様では、グラフィックスプロセッサ110は、グラフィックスサーフェスをレンダリングし、レンダリングされたグラフィックスデータを、書き込みバッファとして識別されているバッファ116A〜116Nのうちの1つに記憶する。ディスプレイプロセッサ114が、レンダリングされたグラフィックデータを取り出すことができるように、レンダリングが完了したとき、バッファは読み出しバッファとして再識別される。次いで、グラフィックスプロセッサ110は、書き込みバッファとして識別されているバッファ116中の別のバッファにさらなるデータをレンダリングすることができる。特定のオフスクリーンサーフェスに関連するバッファ116内の少なくとも2つのバッファを有することによって、ディスプレイプロセッサ114は1つのバッファから読み出すことができる一方、グラフィックスプロセッサ110は別のバッファにレンダリングする。識別子又はポインタを使用して、所与のバッファ116A〜116Nが読み出しバッファであるか又は書き込みバッファであるかを特定することができる。場合によっては、上記のように、バッファ116A〜116Nのいずれかは、読み出し/書き込みバッファとしても識別できる。] [0027] ディスプレイプロセッサ114は、複数のグラフィックスサーフェスからのバッファ116から、レンダリングされた出力データを読み出すことが可能である。次いで、ディスプレイプロセッサ114は、レンダリングされたグラフィックスサーフェスを、ディスプレイ装置106上に表示されるフレームバッファ160中のグラフィックスフレーム上にオーバーレイすることができる。フレームバッファ160は、グラフィックス処理システム102内の専用メモリとすることができる。ただし、一態様では、図1Bに示すように、フレームバッファ160は、メモリ104内にシステムRAM(ランダムアクセスメモリ)を直接備えることができる。] 図1B [0028] 一態様では、グラフィックスフレームは、ウィンドウサーフェスなどの少なくとも1つのオンスクリーンサーフェスを含む。各グラフィックスサーフェスがオーバーレイされるレベルは、グラフィックスサーフェスに対して定義されるサーフェスレベルによって決定される。このサーフェスレベルは、アプリケーション命令118によってなど、ユーザプログラムによって定義できる。サーフェスレベルは、レンダリングされたサーフェスに関連するパラメータとして記憶できる。] [0029] サーフェスレベルは任意の数として定義でき、数が大きければ大きいほど、サーフェスは、表示されたグラフィックスフレーム上のより高くに表示されることになる。すなわち、2つのサーフェスの部分が重なる状況では、より低いサーフェスレベルをもつ任意のサーフェスの重なる部分の代わりに、より高いサーフェスレベルをもつサーフェスの重なる部分が表示されることになる。単純な例として、デスクトップコンピュータ上で使用される背景画像は、デスクトップ上のアイコンよりも低いサーフェスレベルを有する。重なる2つのサーフェスが一緒にブレンドできるように、サーフェスレベルは、場合によっては、透明度情報と合成されることがある。これらの場合、カラーキーイングを使用することができる。第1のサーフェス中のピクセルがキーカラーに一致しない場合、アルファ(透明度)ブレンディングが使用可能でなければ、第1のサーフェスを出力ピクセルとして選択することができる。アルファブレンディングが使用可能である場合、第1のサーフェスのピクセルと第2のサーフェスのピクセルとを通常通りブレンドすることができる。第1のサーフェスのピクセルがキーカラーに一致した場合、第2のサーフェスのピクセルを選択し、アルファブレンディングを実行しない。] [0030] 一態様では、制御プロセッサ108は、カリフォルニア州サンディエゴのQualcomm(登録商標)社によって設計された移動局モデム中に埋め込まれたARM11プロセッサなどのAdvancedRISC(縮小命令セットコンピュータ)Machine(ARM)プロセッサとすることができる。一態様では、ディスプレイプロセッサ114は、Qualcomm社によって設計された移動局モデム中に埋め込まれるモバイルディスプレイプロセッサ(MDP)とすることもできる。プロセッサ108、110及び114のいずれかがバッファエリア112内のバッファ116A〜116Nにアクセスすることが可能である。一態様では、各プロセッサ108、110及び114は、レンダリング能力を設け、グラフィックスサーフェスのためのレンダリングされた出力データをバッファ116A〜116Nに書き込むことが可能である。] [0031] 図2Aは、本開示の一態様に係る、オフスクリーンサーフェスのためのマルチバッファサポートを実装するために使用される装置200を例示するブロック図である。この態様では、図2Aに示す装置200は、図1Aに示す装置100の例示的な具体化である。装置200は、グラフィックス処理システム202とメモリ204とディスプレイ装置206とを含む。図1Aに示すメモリ104と同様に、図2のメモリ204は、アプリケーション命令218とAPIライブラリ220とドライバ222とのためのストレージ空間を含む。図1Aに示すグラフィックス処理システム102と同様に、図2のグラフィックス処理システム202は、プロセッサ208とグラフィックスプロセッサ210とディスプレイプロセッサ214とバッファエリア212とフレームバッファ260とを含む。プロセッサ208は、制御プロセッサ、又は汎用プロセッサとすることができる。一態様では、プロセッサ208はシステムCPU(中央処理装置)を備えることができる。] 図1A 図2A [0032] 一態様では、図2Dに示すように、バッファエリア212はメモリ204内に含められるとしてもよい。フレームバッファ260は、グラフィックス処理システム202内の専用メモリとすることができる。ただし、一態様では、図2Dに示すように、フレームバッファ260はメモリ204内にシステムRAM(ランダムアクセスメモリ)を直接備えることができる。] 図2D [0033] 図2Aの例では、バッファエリア212は、pbufferサーフェスのために使用される複数のバッファ216A〜216N(総称して216)、及びpixmapサーフェスのために使用される別の複数のバッファ217A〜217N(総称して217)を含む。バッファ216A〜216Nはオフスクリーンpbufferサーフェスに関連し、バッファ217A〜217Nはオフスクリーンpixmapサーフェスに関連する。上記のように、pbuffer及びpixmapはオフスクリーンサーフェスの例である。このようにして、pbufferサーフェスのためのレンダリングデータが記憶され、バッファ216A〜216Nから処理されることができるように、個々のオフスクリーンpbufferサーフェスは、複数のバッファ216A〜216Nに関連する。個々のオフスクリーンpixmapサーフェスは複数のバッファ217A〜217Nに関連する。上記のように、pbufferは、たとえば、OpenGLサーバサイド(ドライバ内部)動作に関連するメモリ空間に記憶できるオフスクリーンメモリバッファである。pixmapは、たとえば、クライアントアプリケーションに関連するメモリ空間に通常記憶できるオフスクリーン記憶領域である。一態様では、バッファ216及びバッファ217は、完全に別個のバッファ空間とすることができる。] 図2A [0034] 個々の各バッファ216A〜216Nは、読み出しバッファ、書き込みバッファ、又はその両方として識別できる。同様に、個々の各バッファ217A〜217Nは、読み出しバッファ、書き込みバッファ、又はその両方として識別できる。一態様では、制御プロセッサ208、グラフィックスプロセッサ210、及び/又はディスプレイプロセッサ214は、バッファエリア212内のバッファ216A〜216N及び217A〜217Nを割り振り、これらのバッファのうちのどのバッファが読み出しバッファ、書き込みバッファ、又はその両方であるかを識別することが可能である。] [0035] 一態様では、グラフィックスプロセッサ210は、オフスクリーンpbufferサーフェスをレンダリングし、レンダリングされたサーフェスデータを、バッファ216Aなどの書き込みバッファとして識別されたバッファに書き込む。レンダリングが完了した後、グラフィックスプロセッサ210は、バッファ216Aを読み出しバッファとして再識別し、バッファ216Nなどの別個のバッファを書き込みバッファとして識別する。次いで、グラフィックスプロセッサ210は、新規の、又は更新された、レンダリングされたサーフェスデータをバッファ216Nに書き込み、グラフィックスプロセッサ210又はディスプレイプロセッサ214は、バッファ216Aから前のレンダリングされたサーフェスデータを読み出す。グラフィックスプロセッサ210が、バッファ216Aから前のレンダリングされたサーフェスデータを、さらなるグラフィックス処理のためのテクスチャソースとして読み出すか、又は、ディスプレイプロセッサ214が、ディスプレイ装置206上に最終的に表示するために、バッファ216Aからレンダリングされたサーフェスデータを読み出す。1つのオフスクリーンpbufferサーフェスのために複数のバッファ216A〜216Nを利用することによって、オフスクリーンpbufferサーフェスのために読み出し及び書き込み動作を並列に実行することが可能である。] [0036] 同様に、一態様では、グラフィックスプロセッサ210又は制御プロセッサ208は、オフスクリーンpixmapサーフェスをレンダリングし、レンダリングされたサーフェスデータを、バッファ217Aなど、書き込みバッファとして識別されたバッファに書き込むことができる。レンダリングが完了した後、グラフィックスプロセッサ210又は制御プロセッサ208は、バッファ217Aを読み出しバッファとして再識別し、バッファ217Nなどの別個のバッファを書き込みバッファとして識別することができる。次いで、グラフィックスプロセッサ210又は制御プロセッサ208は、新規の、又は更新された、レンダリングされたサーフェスデータをバッファ217Nに書き込み、グラフィックスプロセッサ210、制御プロセッサ208又はディスプレイプロセッサ214は、バッファ217Aから前のレンダリングされたサーフェスデータを読み出すことができる。1つのオフスクリーンpixmapサーフェスのために複数のバッファ217A〜217Nを利用することによって、読み出し及び書き込み動作を並列に実行することが可能である。pixmapサーフェスは、しばしば、プリレンダリングされた内容を含む可能性がより高く、しばしばファイルから読み出されることがある。] [0037] 図2Bは、本開示の一態様による、図2Aに示すAPIライブラリ220のさらなる詳細を示すブロック図である。図2Aに関して前述したように、APIライブラリ220は、グラフィックスプロセッサ210、制御プロセッサ208、及び/又はディスプレイプロセッサ214によるアプリケーション実行中のアプリケーション命令218によって、メモリ204に記憶され、リンクされ、又は参照される。図2Cは、一態様による、図2Aに示すドライバ222のさらなる詳細を示すブロック図である。ドライバ222は、グラフィックスプロセッサ210、制御プロセッサ208、及び/又はディスプレイプロセッサ214によるアプリケーション実行中のアプリケーション命令218及び/又はAPIライブラリ220によって、メモリ204に記憶され、リンクされ、又は参照される。] 図2A 図2B 図2C [0038] 図2Bでは、APIライブラリ220は、OpenGLESAPI230と、OpenVG API232と、EGL API234とを含む。図2Cに示すドライバ222は、OpenGL ESドライバ240と、OpenVGドライバ242と、EGLドライバ244とを含む。OpenGL ES API230は、2D及び3Dグラフィックス機能など、OpenGL ESによってサポートされる機能を行うために、グラフィックス処理システム202によるアプリケーション実行中に、アプリケーション命令218によって起動されるAPIである。OpenGL ESドライバ240は、グラフィックス処理システム202中のOpenGL ES機能の低レベルのドライバのサポートのためのアプリケーション実行中に、アプリケーション命令218及び/又はOpenGL ES API230によって起動される。] 図2B 図2C [0039] OpenVGAPI232は、2Dベクトルグラフィックス機能など、OpenVGによってサポートされる機能を行うために、アプリケーション実行中にアプリケーション命令218によって起動されるAPIである。OpenVGドライバ242は、グラフィックス処理システム202中のOpenVG機能の低レベルドライバのサポートのためのアプリケーション実行中に、アプリケーション命令218及び/又はOpenVG API232によって起動される。] [0040] EGLAP234(図2B)及びEGLドライバ244(図2C)は、グラフィックス処理システム202中のEGL機能にサポートを行う。一態様では、EGL拡張を、EGL API234及びEGLドライバ244内に組み込むことができる。図2B〜図2Cの例では、サーフェスオーバーレイ及びオフスクリーンマルチバッファ機能のためのEGL拡張を行う。したがって、EGLサーフェスオーバーレイ拡張のために、サーフェスオーバーレイAPI236はEGL API234内に含まれ、サーフェスオーバーレイドライバ246はEGLドライバ244内に含まれる。同様に、EGLオフスクリーンマルチバッファ拡張のために、オフスクリーンマルチバッファAPI238はEGL API234内に含まれ、オフスクリーンマルチバッファドライバ248はEGLドライバ244内に含まれる。] 図2B 図2C [0041] EGLサーフェスオーバーレイ拡張は、ディスプレイ装置206上に表示される(2Dサーフェス、3Dサーフェス、及び/又はビデオサーフェスなどの)複数のグラフィックスサーフェスのオーバーレイのためのサーフェスオーバーレイスタックを与える。オンスクリーンとオフスクリーンサーフェスの両方を含むことができるグラフィックスサーフェスはそれぞれ、関連するサーフェスレベルをスタック内に有する。サーフェスのオーバーレイは、それにより、スタック内のサーフェスのオーバーレイ順序にしたがって達成される。サーフェスオーバーレイの例について、図3B及び図3Dに示し、以下でより詳細に論じる。一態様では、オーバーレイスタックは、ウィンドウサーフェスなどの少なくとも1つのオンスクリーンサーフェスを含む。] 図3B 図3D [0042] EGLオフスクリーンマルチバッファ拡張は、pbufferサーフェス又はpixmapサーフェスなど、グラフィックス処理システム202によって処理される各オフスクリーンサーフェスに関連する定義された数のバッファのためのサポートを行う。たとえば、図2Aに示すように、複数のバッファ216A〜216Nは、pbufferサーフェスに割り振られて関連し、複数のバッファ217A〜217Nは、単一のpixmapサーフェスに割り振られて関連するとしてもよい。さらに、図2Aに関して前述したように、EGLオフスクリーンマルチバッファ拡張は、各バッファを、読み出しバッファ、書き込みバッファ、又はその両方として識別できるようにする。] 図2A [0043] 図3Aは、一態様による、各オフスクリーンサーフェスが複数のバッファに関連する複数のオフスクリーンサーフェス300A〜300Nの例を示すブロック図である。図3Aの例では、各オフスクリーンサーフェス300A〜300Nは、図1A又は図1Bに示す、グラフィックス処理システム102によって処理され、ディスプレイ装置106上に最終的に表示されるサーフェスである。これらのサーフェス300A〜300Nはまた、図2A又は図2Dに示すグラフィックス処理システム202によって処理されることがある。しかしながら、ただ例示のために、以下の図3A〜図3Dの説明では、サーフェス300A〜300Nがグラフィックス処理システム102によって処理されると仮定する。] 図1A 図1B 図2A 図2D 図3A 図3B 図3C 図3D [0044] 各オフスクリーンサーフェス300A〜300Nは、2Dサーフェス、3Dサーフェス、又はビデオサーフェスを備えることができる。フレームバッファ160内でキャプチャされ、ディスプレイ装置106上に表示されるデータの各フレーム内で、オフスクリーンサーフェス300A〜300Nは、オーバーレイ順序にしたがってオーバーレイされる。この例を図3Bに示す。そのような方法では、2Dサーフェス、3Dサーフェス、及び/又はビデオサーフェスは、サーフェスオーバーレイスタック中にオーバーレイされ、ディスプレイ装置106上に一緒に表示できる。たとえば、ビデオゲームアプリケーションでは、あるゲームをプレイしているサーフェスに関係するサーフェスは、他のものでオーバーレイされる。場合によっては、静止画像データは、そのようなアプリケーションのオーバーレイスタック中のビデオデータでオーバーレイでき、そこで、静止画像データは背景グラフィックスを備え、ビデオデータは移動物体、スコアなどのためのデータを備えることができる。一態様では、オーバーレイスタックは、ウィンドウサーフェスなどの少なくとも1つのオンスクリーンサーフェスを含む。] 図3B [0045] オフスクリーンサーフェス300Aは、一態様によれば、グラフィックス処理システム102のバッファエリア112内で割り振られたバッファ316に関連する。バッファ316は複数のオフスクリーンサーフェスバッファ316A〜316Nを含む。各バッファ316A〜316Nは、読み出しバッファ、書き込みバッファ、又はその両方として識別され、オフスクリーンサーフェス300Aに関連するデータを、レンダリングするなど、保持することが可能である。] [0046] 図3Aの例では、バッファ316Aは読み出しバッファとして識別され、バッファ316Nは書き込みバッファとして識別されている。したがって、他のデータがバッファ316Nに書き込まれている間、データは、バッファ316Aから読み出される。たとえば、グラフィックスプロセッサ110は、サーフェス300Aのための新規の又は更新されたサーフェスデータをバッファ316Nにレンダリングするプロセス中であるとすることができる。これが行われている間、グラフィックスプロセッサ110、ディスプレイプロセッサ114、又は制御プロセッサ108は、バッファ316Aから、サーフェス300Aのための前にレンダリングされたサーフェスデータを読み出すことができる。これらのタイプの読み出し及び書き込み動作が並列に行われることがあるので、オフスクリーンサーフェス300Aのためのレンダリングプロセス及び表示プロセスをグラフィックス処理システム102内で同時に行うことができる。] 図3A [0047] オフスクリーンサーフェス300Nは、一態様によれば、グラフィックス処理システム102のバッファエリア112内で割り振られたバッファ317に関連する。バッファ317は複数のオフスクリーンサーフェスバッファ317A〜317Nを含む。各バッファ317A〜317Nは、読み出しバッファ、書き込みバッファ、又はその両方として識別され、オフスクリーンサーフェス300Nに関連するデータを、レンダリングするなど、保持することが可能である。] [0048] 図3Aの例では、バッファ317Aは読み出しバッファとして識別され、バッファ317Nは書き込みバッファとして識別されている。したがって、サーフェス300Nに関連する他のデータがバッファ317Nに書き込まれている間、サーフェス300Nに関連するデータがバッファ317Aから読み出される。たとえば、グラフィックスプロセッサ110は、サーフェス300Nのための新規の又は更新されたサーフェスデータをバッファ317Nにレンダリングするプロセス中とすることができる。これが行われている間、グラフィックスプロセッサ110、ディスプレイプロセッサ114、又は制御プロセッサ108は、バッファ317Aからサーフェス300Nのための前にレンダリングされたサーフェスデータを読み出すことができる。これらのタイプの読み出し及び書き込み動作が並列に行われることがあるので、オフスクリーンサーフェス300Nのためのレンダリングプロセス及び表示プロセスをグラフィックス処理システム102内で同時に行うことができる。] 図3A [0049] 図3Bは、一態様に係る、オンスクリーンサーフェスとともにディスプレイ装置106上に表示される、図3Aに示すオフスクリーンサーフェス300A及び300Nに関連する、オーバーレイされたサーフェスデータの例を示すブロック図である。図3Aに関して今上述したように、オフスクリーンサーフェスバッファ316Aは、オフスクリーンサーフェス300Aに関連する読み出しバッファとしてバッファ316内で識別され、オフスクリーンサーフェスバッファ317Aは、オフスクリーンサーフェス300Nに関連する読み出しバッファとしてバッファ317内で識別された。したがって、オフスクリーンサーフェス300Aのための(レンダリングされたサーフェス出力データなどの)サーフェスデータをバッファ316Aから読み出し、オフスクリーンサーフェス300Nのためのサーフェスデータをバッファ317Aから読み出すことができる。] 図3A 図3B [0050] 図3Bの例では、ディスプレイプロセッサ114がバッファ316Aからオフスクリーンサーフェス300Aのためのサーフェスデータを読み出し、グラフィックス処理システム102のフレームバッファ160内にそのようなデータをオフスクリーンサーフェスデータ319Aとして記憶すると仮定する。ディスプレイプロセッサ114は、また、バッファ(図示せず)からウィンドウサーフェスなどのオンスクリーンサーフェスのためのサーフェスデータを読み出し、フレームバッファ160内にそのようなデータをオンスクリーンサーフェスデータ323Aとして記憶する。さらに、ディスプレイプロセッサ114は、バッファ317Aからオフスクリーンサーフェス300Nのためのサーフェスデータを読み出し、フレームバッファ160内にそのようなデータをオフスクリーンサーフェスデータ321Aとして記憶することができる。このようにして、オフスクリーンサーフェスデータ319A及び321Aを、オンスクリーンサーフェスデータ323Aとともに、ディスプレイ装置106上に表示される画像データの1つのフレーム内に含めることができる。] 図3B [0051] 一態様では、オフスクリーンサーフェスデータ319A及び321Aを、オンスクリーンサーフェスデータ323Aとともにサーフェスオーバーレイスタック内に含めることができる。この態様では、ディスプレイプロセッサ114は、サーフェスデータ319A、321A及び323Aの各々をスタック内の別個のサーフェスレベルに関連付け、それにより、オフスクリーンサーフェスデータ319A及び321A、ならびにオンスクリーンサーフェスデータ323Aのためのオーバーレイ順序を実装することができる。オフスクリーンサーフェスデータ319Aは、オフスクリーンサーフェス300Aのためのサーフェスデータの1つのフレームに関連し、オフスクリーンサーフェスデータ321Aは、オフスクリーンサーフェス300Nのためのサーフェスデータの1つのフレームに関連する。] [0052] 一態様では、サーフェス300A及び300Nのレベル、又はそれらが特定のレベルに結び付けられたシーケンスを、サーフェスオーバーレイプロセス中に、両方とも考慮に入れることができる。ある場合では、複数のサーフェスは特定のレイヤに結び付けられる。レイヤは、後から前に(最もネガティブから最もポジティブに)処理できる。所与のレイヤ内で、複数のサーフェスは、それらがレイヤに結び付けられたシーケンス中で処理される。] [0053] 図3Bに示すように、オフスクリーンサーフェスデータ319A及び321Aを、オンスクリーンサーフェスデータ323Aとともに、ユーザに対して可視であるスクリーンエリア330A内でディスプレイ装置106上に表示することができる。オフスクリーンサーフェスデータ319A及び321Aを、オンスクリーンサーフェスデータ323Aとともに、ディスプレイプロセッサ114によって使用されるオーバーレイ順序に基づいてオーバーレイされたサーフェスとしてスクリーンエリア330A内に表示することができる。オフスクリーンサーフェスデータ319A及び321Aは、フレームバッファ160内に含まれるのと同じ位置又は関係で表示されるとしてもよく、されないとしてもよい。サーフェスオーバーレイスタックは、ディスプレイ装置106上にサーフェスを表示するために任意のサーフェスオーバーレイレベルを割り当てるために使用されてもよい。この結果、グラフィックス処理システム102は、ディスプレイ装置106上でユーザに対して表示するためにオーバーレイされる2D、3D、及び/又はビデオサーフェスデータを与えることが可能である。たとえば、オフスクリーンサーフェス300Aが図3Bの例で3Dサーフェスであり、オフスクリーンサーフェス300Nがビデオサーフェスである場合、これらのサーフェスに関連する3Dサーフェスデータ及びビデオサーフェスデータは、ディスプレイ装置106上に表示できる。2D、3D、及び/又はビデオサーフェスデータの任意の組合せは、ディスプレイ装置106上にオーバーレイできる。] 図3B [0054] 図3Cは、一態様に係る、異なる識別された読み出しバッファ及び書き込みバッファを持つ複数のオフスクリーンサーフェス300A〜300Nの例を示すブロック図である。図3Cでは、図3Aに示す例とは逆に、オフスクリーンサーフェスバッファ316Aは、オフスクリーンサーフェス300Aのための書き込みバッファとして識別され、オフスクリーンサーフェスバッファ316Nは、読み出しバッファとして識別されている。また、オフスクリーンサーフェス300Nに対して、オフスクリーンサーフェスバッファ317Aは、書き込みバッファとして識別され、オフスクリーンサーフェスバッファ317Nは読み出しバッファとして識別されている。] 図3A 図3C [0055] 一態様では、制御プロセッサ108、グラフィックスプロセッサ110、及び/又はディスプレイプロセッサ114のうちの1つ又は複数は、バッファ316及び/又は317内にバッファ空間を割り振り、また、どのバッファ316A〜316N及び317A〜317Nがオフスクリーンサーフェス300A〜300Nに対して読み出しバッファ、書き込みバッファ、又はその両方であるかを識別することができる。図3A及び図3Cの例は、オフスクリーンサーフェスに適用されるにすぎないウィンドウサーフェスダブルバファリングの実装形態と同様に、任意の所与のバッファが所与の時点で読み出しバッファとして識別されるが、後で書き込みバッファとして識別できることを示す。] 図3A 図3C [0056] たとえば、図3Aでは、オフスクリーンサーフェスバッファ316Nは、書き込みバッファとして識別される。したがって、オフスクリーンサーフェス300Aのためのレンダリング出力データは、レンダリングプロセス中にグラフィックスプロセッサ110などによってバッファ316Nに書き込まれることがある。図3Aのバッファ316Aが読み出しバッファとして識別されるため、別個のデータがバッファ316Nに並列に書き込まれる間に、オフスクリーンサーフェス300Aのためのサーフェスデータ(たとえば、前のレンダリングされたデータなど)は、バッファ316Aから読み出されるとしてもよい。] 図3A [0057] たとえば、グラフィックスプロセッサ110がバッファ316Nへのデータのレンダリング及び書き込みを完了したとき、オフスクリーンサーフェス300Aのためのこのレンダリングされたデータがバッファ316Nから読み出されることができるように、図3C中に示すように、バッファ316Nは、読み出しバッファとして再識別されるとしてもよい。同様に、別個のデータがバッファ316Nから並列に読み出されている間、オフスクリーンサーフェス300Aのための新しいレンダリングされた出力データは、バッファ316Aに書き込まれることができるように、図3Cに示すように、バッファ316Aは、書き込みバッファとして再識別されるとしてもよい。したがって、あるシナリオでは、バッファ316A〜316Nのうちの1つ又は複数は、異なる時点で読み出しバッファとして識別されることと書き込みバッファとして識別されることとの間で切り替わることができる。] 図3C [0058] 同様に、バッファ317A〜317Nのうちの1つ又は複数は、異なる時点で読み出しバッファとして識別されることと書き込みバッファとして識別されることとの間で切り替わることができる。図3Aでは、バッファ317Aは読み出しバッファとして識別され、バッファ317Nは書き込みバッファとして識別される。ただし、図3Cに示すように、バッファ317Aは書き込みバッファとして再識別され、バッファ317Nは読み出しバッファとして再識別されている。] 図3A 図3C [0059] 図3Dは、一態様に係る、オンスクリーンサーフェスとともにディスプレイ装置106上に表示される、図3Cに示すオフスクリーンサーフェス300A及び300Nに関連する、オーバーレイされたサーフェスデータの例を示すブロック図である。オフスクリーンサーフェスバッファ316Nがオフスクリーンサーフェス300Aのための読み出しバッファとして識別されるので、ディスプレイプロセッサ114は、バッファ316Nからデータを読み出し、フレームバッファ160内にそのようなデータをオフスクリーンサーフェスデータ319Nとして記憶することができる。ディスプレイプロセッサ114は、また、バッファ317Nからオフスクリーンサーフェス300Nに関連するデータを読み出し、フレームバッファ160内にそのようなデータをオフスクリーンサーフェスデータ321Nとして記憶することができる。このようにして、オフスクリーンサーフェスデータ319N及び321Nを、オンスクリーンサーフェスデータ323Nとともに、ディスプレイ装置106上に表示される画像データの1つのフレーム内に含めることができる。] 図3C 図3D [0060] 図3Bの例と同様に、図3Dに示すオフスクリーンサーフェスデータ319N及び321Nは、オンスクリーンサーフェスデータ323Nとともに、オーバーレイされるサーフェスに順序を与えるサーフェスオーバーレイスタック内に含まれるとしてもよい。ディスプレイプロセッサ114は、サーフェスデータ319N、321N及び323Nの各々をスタック内の別個のサーフェスレベルに関連付け、それにより、オフスクリーンサーフェスデータ319N及び321N、ならびにオンスクリーンサーフェスデータ323Nのためのオーバーレイ順序を実装することができる。次いで、オフスクリーンサーフェスデータ319N及び321Nは、オンスクリーンサーフェスデータ323Nとともに、ユーザに対して可視であるスクリーンエリア330N内でディスプレイ装置106上に表示されるとしてもよい。サーフェスデータ319N、321N及び323Nは、ディスプレイプロセッサ114によって使用されるオーバーレイ順序に基づいてオーバーレイされたサーフェスとして、スクリーンエリア330N内に表示されるとしてもよい。] 図3B 図3D [0061] 図4は、一態様に係る、図1A又は図1Bのグラフィックス処理システム102に示す制御プロセッサ108、グラフィックスプロセッサ110、及び/又はディスプレイプロセッサ114のうちの1つ又は複数によって、あるいは、図2A又は図2Dのグラフィックス処理システム202に示す制御プロセッサ208、グラフィックスプロセッサ210、及び/又はディスプレイプロセッサ214のうちの1つ又は複数によって実行される方法の流れ図である。ただ例示のために、以下の説明では、図4に示す方法がグラフィックス処理システム102中の1つ又は複数のプロセッサによって実行されると仮定する。] 図1A 図1B 図2A 図2D 図4 [0062] 最初に、制御プロセッサ108、グラフィックスプロセッサ110、及び/又はディスプレイプロセッサ114のうちの1つ又は複数は、グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連するバッファ116A〜116Nなどの複数のバッファを割り振る(図4の400)。バッファ116A〜116Nは、バッファエリア112内に割り振られ、定義された数のバッファを備えることができる。オフスクリーンサーフェスは、pbufferサーフェス又はpixmapサーフェスを備えることができる。一態様では、バッファは、バッファエリア112の第1のエリア内か、又はバッファエリア112の第2のエリア内のいずれかに割り振られることができる。場合によっては、第1のエリアはpbufferに関連し、第2のエリアはpixmapに関連することがあり、第1のエリアと第2のエリアとは異なるエリアである。] 図4 [0063] バッファ116A〜116N内の第1のバッファは、書き込みバッファとして識別される(図4の402)。書き込み動作中に、レンダリングデータなどのオフスクリーンサーフェスに関係する情報は、第1のバッファに書き込まれる。バッファ116A〜116N内の第2のバッファは、読み出しバッファとして識別される(図4の404)。読み出し動作中に、オフスクリーンサーフェスに関係する情報は、第2のバッファから読み出される。一態様では、書き込みバッファが読み出しバッファとは異なるように、第1のバッファと第2のバッファとは異なるバッファである。] 図4 [0064] 406において、グラフィックスプロセッサ110又は制御プロセッサ108などの1つ又は複数のプロセッサは、オフスクリーンサーフェスをレンダリングし、書き込み動作中にレンダリング情報を第1のバッファに書き込むことによって、レンダリング情報を生成する。408において、ディスプレイプロセッサ114などの1つ又は複数のプロセッサは、読み出し動作中に、表示のために第2のバッファからオフスクリーンサーフェスに関係する情報を読み出す。そのような方法では、一態様によれば、複数のバッファは、オフスクリーンサーフェスのために備えられることができる。この態様では、読み出しバッファ及び/又は書き込みバッファとして関連するバッファを識別するために、(たとえば、以下でより詳細に説明するeglBufferMakeCurrentQUALCOMM機能などの)バッファ選択機能が起動される。たとえば、オフスクリーンサーフェスのレンダリングが所与のフェース中に完了し、レンダリング情報が第1のバッファに書き込まれたとき、たとえば、バッファ選択機能は、レンダリング情報が読み出され、表示される画像又はビデオのフレーム内にオフスクリーンサーフェスが合成されるように、第1のバッファを読み出しバッファとして識別するために起動される。バッファ選択機能の起動は、また、オフスクリーンサーフェスのための新しいレンダリング情報が第2のバッファに書き込まれることができるように、第2のバッファを書き込みバッファとして識別することができる。] [0065] このように、制御プロセッサ108、グラフィックスプロセッサ110、及び/又はディスプレイプロセッサ114のうちの1つ又は複数は、オフスクリーンサーフェスに対して、新規の又は更新されたサーフェスデータを第1の(書き込み)バッファに書き込んでいる間、第2の(読み出し)バッファからサーフェスデータを同時に読み出すことができる。それにより、オフスクリーンサーフェスのためのマルチバッファサポートは提供される。複数のサーフェス(マルチバッファサポートを有する各サーフェス)に関連するサーフェスデータは、一態様では、ディスプレイプロセッサ114によってバッファエリア112からサーフェスオーバーレイスタックに読み出され、オーバーレイ順序にしたがってディスプレイ装置106上に表示するために与えられる。これらのサーフェスは、2Dサーフェス、3Dサーフェス、及び/又はビデオサーフェスを備えることができる。] [0066] 図5は、一態様に係る、図1A又は図1Bのグラフィックス処理システム102に示す制御プロセッサ108、グラフィックスプロセッサ110、及び/又はディスプレイプロセッサ114のうちの1つ又は複数によって、あるいは、図2A又は図2Dのグラフィックス処理システム202に示す制御プロセッサ208、グラフィックスプロセッサ210、及び/又はディスプレイプロセッサ214のうちの1つ又は複数によって実行される方法の流れ図である。ただ例示のために、以下の説明では、図5に示す方法がグラフィックス処理システム102中の1つ又は複数のプロセッサによって実行されると仮定する。] 図1A 図1B 図2A 図2D 図5 [0067] 最初に、500において、制御プロセッサ108、グラフィックスプロセッサ110、及び/又はディスプレイプロセッサ114のうちの1つ又は複数は、それぞれがオフスクリーンサーフェスに関連するMを2以上とする複数の「M個の」バッファを割り振る。たとえば、M個のバッファは(ただ例示のために)第1のバッファと第2のバッファとを含む。書き込み動作中に第1のバッファにオフスクリーンサーフェスに関係する情報が書き込まれるように、第1のバッファはオフスクリーンサーフェスのための書き込みバッファとして識別される。読み出し動作中に第2のバッファからオフスクリーンサーフェスに関係する情報が読み出されるように、第2のバッファは、オフスクリーンサーフェスのための読み出しバッファとして識別される。] [0068] 502において、1つ又は複数のプロセッサは、それぞれが追加のオフスクリーンサーフェスに関連する、Nを2以上とする複数の「N個の」バッファを割り振る。たとえば、N個のバッファは(ただ例示のために)第3のバッファと第4のバッファとを含む。追加の書き込み動作中に第3のバッファに追加のオフスクリーンサーフェスに関係する情報が書き込まれるように、第3のバッファは追加のオフスクリーンサーフェスのための書き込みバッファとして識別される。追加の読み出し動作中に第4のバッファから追加のオフスクリーンサーフェスに関係する情報が読み出されるように、第4のバッファは、追加のオフスクリーンサーフェスのための読み出しバッファとして識別される。] [0069] 504において、ディスプレイプロセッサ114などの1つ又は複数のプロセッサは、第2のバッファからオフスクリーンサーフェスに関係する情報を読み出す。506において、ディスプレイプロセッサ114などの1つ又は複数のプロセッサは、第4のバッファから追加のオフスクリーンサーフェスに関係する情報を読み出す。] [0070] 508において、1つ又は複数のプロセッサは、オーバーレイ順序にしたがって、(オフスクリーンサーフェスに関連する)第2のバッファ及び(追加のオフスクリーンサーフェスに関連する)第4のバッファの内容を、オンスクリーンサーフェスに関連するデータと組み合わせる。たとえば、この情報はサーフェスオーバーレイスタック内で組み合わせることができる。] [0071] 510において、1つ又は複数のプロセッサは、ディスプレイ装置106などのディスプレイ装置上で、オフスクリーンサーフェス及び追加のオフスクリーンサーフェスをオンスクリーンサーフェスとともにオーバーレイする。サーフェスは、オーバーレイ順序にしたがってオーバーレイされる。] [0072] 前述のように、オフスクリーンサーフェスのためのマルチバッファサポートは、システム102及び/又はシステム202(図2A)内の1つ又は複数のプロセッサによって実装できる。一態様では、1つ又は複数のプロセッサによって実行されると、オフスクリーンサーフェスのためのマルチバッファサポートを実装するための機能は、APIライブラリ120及び/又はドライバ122内又はAPIライブラリ220及び/又はドライバ222(図2A)内に含まれる。たとえば、そのような機能は、オフスクリーンマルチバッファAPI238(図2B)内及び/又はオフスクリーンマルチバッファドライバ248(図2C)内に含まれる。一態様では、この機能はEGL拡張の一部として与えられる。ただ例示のために、以下の説明では、そのような機能がEGL拡張(すなわち、EGL仕様への拡張)の一部として与えられると仮定する。] 図2A 図2B 図2C [0073] 一態様では、オフスクリーンサーフェスのマルチバッファサポートのためにEGL拡張が与えられる。ここで、EGLコード内で、サーフェス生成時に、eglCreatePbufferSurface又はeglCreatePixmapSurfaceに渡される属性リストは、オフスクリーンサーフェスに関連付けるべきバッファの総数を示すEGLintが後に続くEGL_BACK_BUFFERトークンを含むことができる。たとえば、pixmapオフスクリーンサーフェスの場合、指定されたバッファの数が1よりも大きい場合、ある事例では、pixmapパラメータは、pixmapサーフェスにおける各バッファのために使用するNativePixmapTypesへのポインタのNULL終端アレイとして扱われる。] [0074] 一態様では、各オフスクリーンサーフェスは描画(書き込み)バッファに関連し、読み出しバッファにも関連する。したがって、EGLSurface構造はdraw_currentパラメータとread_currentパラメータとを含むように変更できる。draw_currentパラメータの値は現在の描画バッファを指定し、read_currentパラメータの値は現在の読み出しバッファを指定する。draw_current及びread_currentは、いずれもEGLint型とすることができる。] [0075] 関数eglBufferMakeCurrentQUALCOMMは、マルチバッファリングされたサーフェスのdraw_current及びread_currentを設定するために使用できる。eglBufferMakeCurrentQUALCOMMの例示的な関数宣言を以下に示す。] [0076] 一態様に係る、オフスクリーンサーフェスのためのマルチバッファサポートを行うEGL拡張のための例示的なEGLコードは、ただ例示のために以下に示される。この例示的なコードは、eglBufferMakeCurrentQUALCOMM関数を利用する。] [0077] この例示的なEGLコードでは、既存のEGL_BACK_BUFFERトークンの後にEGLintの値5が続くので、オフスクリーンサーフェス属性は、割り振られ、サーフェスに関連付けられる合計5つのバッファを要求するように初期化される。この例示的なコードでは、ネイティブAPIを用いてすでにビデオストリームが作成されており、video_poolリストに対してNULL終端アレイを与えると仮定する。次いで、このコードは、EGL仕様において与えられるeglCreatePixmapSurface関数呼び出しを使用して、ビデオに対応するマルチバッファリングされたpixmapサーフェスを生成する。] [0078] ビデオ処理中に、読み出しバッファ(又は表示されるバッファ)は、video_poolリスト内のインデックスを変更することができる。EGLによって使用される現在のインデックスを設定するため、及び現在の描画(書き込み)及び読み出しバッファを設定するために、eglインデックスが変化したときはいつでもBufferMakeCurrentQUALCOMMを呼び出すことができる。例示的なコードでは、現在の書き込みバッファと読み出しバッファの両方が、新しいビデオインデックスである同じインデックスidxを用いて設定される。この例では、識別された書き込みバッファと読み出しバッファとが同じバッファであるが、確かに常にこうであるとは限らない。多くの状況では、図3A〜図3Dの例に示すように、識別された書き込みバッファと読み出しバッファとは異なるバッファである。] 図3A 図3B 図3C 図3D [0079] 本開示で説明する技術は、汎用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又は他の同等の論理デバイス内に実装できる。したがって、本明細書で使用する「プロセッサ」又は「コントローラ」という用語は、前述の構造、又は本明細書に記載の技法の実装に好適な他の構造のいずれかを指す。] [0080] 図1〜図4に示す様々な構成要素は、ハードウェア及び/又はソフトウェアの任意の適切な組合せによって実現できる。図1〜図4では、様々な構成要素は、別々のユニット又はモジュールとして示される。しかしながら、図1A〜図4を参照しながら説明した様々な構成要素のすべて又はいくつかは、共通ハードウェア及び/又はソフトウェア内の組合せユニット又はモジュールに統合できる。したがって、構成要素、ユニット、又はモジュールとしての特徴の表現は、説明しやすいように特定の機能的特徴を強調するものであり、別々のハードウェア又はソフトウェア構成要素によるそのような特徴の実現を必ずしも必要としない。場合によっては、様々なユニットを、1つ又は複数のプロセッサによって実行されるプログラマブルプロセスとして実装できる。] 図1A 図1B 図2A 図2B 図2C 図2D 図3A 図3B 図3C 図3D [0081] 本明細書で説明する構成要素及び技法は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装できる。モジュール又は構成要素として説明する機能は、集積論理デバイスに一緒に、又はディスクリートであるが相互運用可能な論理デバイスとして別々に実装できる。様々な態様では、そのような構成要素は、少なくとも部分的に、集積回路チップ又はチップセットなど、まとめて集積回路デバイスと呼ぶことができる1つ又は複数の集積回路デバイスとして形成することができる。そのような回路は、単一の集積回路チップデバイス中、又は複数の相互運用可能な集積回路チップデバイス中に設けることができ、様々な画像、ディスプレイ、音声、又は他のマルチメディアアプリケーション及びデバイスのいずれかにおいて使用できる。いくつかの態様では、たとえば、そのような構成要素は、ワイヤレス通信デバイスハンドセットなどのモバイルデバイスの一部をなすことができる。] [0082] ソフトウェアで実装した場合、これらの技法は、1つ又は複数のプロセッサによって実行されると、上記で説明した方法の1つ又は複数を実行する命令をもつコードを備えるコンピュータ可読媒体によって少なくとも部分的に実現できる。コンピュータ可読媒体は、パッケージング材料を含む、コンピュータプログラム製品の一部をなすことができる。コンピュータ可読媒体は、同期ダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気消去可能プログラマブル読み出し専用メモリ(EEPROM)、埋込みダイナミックランダムアクセスメモリ(eDRAM)、スタティックランダムアクセスメモリ(SRAM)、FLASHメモリ、磁気又は光学データ記憶媒体を備えることができる。] [0083] 本技法は、追加又は代替として、命令又はデータ構造の形態でコードを搬送又は伝達し、1つ又は複数のプロセッサによってアクセス、読み出し、及び/又は実行できるコンピュータ可読通信媒体によって、少なくとも部分的に実現できる。いかなる接続もコンピュータ可読媒体と適切に呼ぶことができる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、又は他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。利用される任意のソフトウェアは、1つ又は複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、又は他の等価な集積又はディスクリート論理回路など、1つ又は複数のプロセッサによって実行できる。] [0084] 本開示の様々な態様について説明した。これら及び他の態様は以下の特許請求の範囲内に入る。]
权利要求:
請求項1 グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連する複数のバッファを割り振ることと、書き込み動作中に前記オフスクリーンサーフェスに関係する情報が前記バッファ内の第1のバッファに書き込まれるように、前記第1のバッファを前記オフスクリーンサーフェスのための書き込みバッファとして識別することと、読み出し動作中に前記オフスクリーンサーフェスに関係する情報が前記バッファ内の第2のバッファから読み出されるように、前記第2のバッファを前記オフスクリーンサーフェスのための読み出しバッファとして識別することとを具備する方法。 請求項2 前記バッファを割り振ることは、グラフィックス処理システムの1つ又は複数のバッファエリア内の前記バッファを割り振ることを具備する、請求項1記載の方法。 請求項3 前記グラフィックス処理システムの前記1つ又は複数のバッファエリア内の前記バッファを割り振ることは、pbufferに関連する前記1つ又は複数のバッファエリアの第1のエリア内、又はpixmapに関連する前記1つ又は複数のバッファエリアの第2のエリア内のいずれかの前記バッファを割り振ることを具備する、請求項2記載の方法。 請求項4 前記第1のバッファを前記読み出しバッファとして識別し、前記第2のバッファを前記書き込みバッファとして識別するバッファ選択機能を呼び出すことをさらに具備する、請求項1記載の方法。 請求項5 前記オフスクリーンサーフェスをレンダリングすることによってレンダリング情報を生成することと、前記書き込み動作中に前記レンダリング情報を前記第1のバッファに書き込むこととをさらに具備する、請求項1記載の方法。 請求項6 前記読み出し動作中に表示のために前記オフスクリーンサーフェスに関係する情報を前記第2のバッファから読み出すことをさらに具備する、請求項1記載の方法。 請求項7 前記書き込みバッファが前記読み出しバッファとは異なるように、前記第1のバッファと前記第2のバッファとが異なるバッファである、請求項1記載の方法。 請求項8 グラフィックス処理において使用される追加のオフスクリーンサーフェスにすべてが関連する追加のバッファを割り振ることと、追加の書き込み動作中に前記追加のオフスクリーンサーフェスに関係する情報が前記追加のバッファ内の第3のバッファに書き込まれるように、前記第3のバッファを前記追加のオフスクリーンサーフェスのための書き込みバッファとして識別することと、追加の読み出し動作中に前記追加のオフスクリーンサーフェスに関係する情報が前記追加のバッファ内の第4のバッファから読み出されるように、前記第4のバッファを前記追加のオフスクリーンサーフェスのための読み出しバッファとして識別することとをさらに具備する、請求項1記載の方法 請求項9 前記オフスクリーンサーフェスのための前記第2のバッファの内容と、前記追加のオフスクリーンサーフェスのための前記第4のバッファの内容と、オンスクリーンサーフェスに関連するデータとを、オーバーレイ順序にしたがって組み合わせることと、前記オーバーレイ順序に基づいて表示するために、前記オフスクリーンサーフェスと、前記追加のオフスクリーンサーフェスと、前記オンスクリーンサーフェスとをオーバーレイすることとをさらに具備する、請求項8記載の方法。 請求項10 前記オフスクリーンサーフェスは、2次元サーフェス、3次元サーフェス、又はビデオサーフェスを具備し、前記追加のオフスクリーンサーフェスは、2次元サーフェス、3次元サーフェス、又はビデオサーフェスを具備する、請求項9記載の方法。 請求項11 前記方法は、1つ又は複数のプロセッサによって実行され、前記1つ又は複数のプロセッサは、それぞれ、ディスプレイプロセッサ、グラフィックスプロセッサ、又は汎用プロセッサを具備する、請求項1記載の方法。 請求項12 グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連する複数のバッファを割り振ることと、書き込み動作中に前記オフスクリーンサーフェスに関係する情報が前記バッファ内の第1のバッファに書き込まれるように、前記第1のバッファを前記オフスクリーンサーフェスのための書き込みバッファとして識別することと、読み出し動作中に前記オフスクリーンサーフェスに関係する情報が前記バッファ内の第2のバッファから読み出されるように、前記第2のバッファを前記オフスクリーンサーフェスのための読み出しバッファとして識別することとを、1つ又は複数のプログラマブルプロセッサに行わせるための命令を具備するコンピュータ可読媒体。 請求項13 前記バッファを割り振ることを前記1つ又は複数のプロセッサに行わせるための前記命令は、グラフィックス処理システムの1つ又は複数のバッファエリア内の前記バッファを割り振ることを前記1つ又は複数のプロセッサに行わせるための命令を具備する、請求項12記載のコンピュータ可読媒体。 請求項14 前記グラフィックス処理システムの前記1つ又は複数のバッファエリア内の前記バッファを割り振ることを前記1つ又は複数のプロセッサに行わせるための前記命令は、pbufferに関連する前記1つ又は複数のバッファエリアの第1のエリア内、又はpixmapに関連する前記1つ又は複数のバッファエリアの第2のエリア内のいずれかの前記バッファを割り振ることを前記1つ又は複数のプロセッサに行わせるための命令を具備する、請求項13記載のコンピュータ可読媒体。 請求項15 前記第1のバッファを前記読み出しバッファとして識別し、前記第2のバッファを前記書き込みバッファとして識別するバッファ選択機能を呼び出すことを前記1つ又は複数のプロセッサに行わせるための命令をさらに具備する、請求項12記載のコンピュータ可読媒体。 請求項16 前記オフスクリーンサーフェスをレンダリングすることによってレンダリング情報を生成することと、前記書き込み動作中に前記レンダリング情報を前記第1のバッファに書き込むこととを前記1つ又は複数のプロセッサに行わせるための命令をさらに具備する、請求項12記載のコンピュータ可読媒体。 請求項17 前記読み出し動作中に表示のために前記オフスクリーンサーフェスに関係する情報を前記第2のバッファから読み出すことを前記1つ又は複数のプロセッサに行わせるための命令をさらに具備する、請求項12記載のコンピュータ可読媒体。 請求項18 前記書き込みバッファが前記読み出しバッファとは異なるように、前記第1のバッファと前記第2のバッファとが異なるバッファである、請求項12記載のコンピュータ可読媒体。 請求項19 グラフィックス処理において使用される追加のオフスクリーンサーフェスにすべてが関連する追加のバッファを割り振ることと、追加の書き込み動作中に前記追加のオフスクリーンサーフェスに関係する情報が前記追加のバッファ内の第3のバッファに書き込まれるように、前記第3のバッファを前記追加のオフスクリーンサーフェスのための書き込みバッファとして識別することと、追加の読み出し動作中に前記追加のオフスクリーンサーフェスに関係する情報が前記追加のバッファ内の第4のバッファから読み出されるように、前記第4のバッファを前記追加のオフスクリーンサーフェスのための読み出しバッファとして識別することとを前記1つ又は複数のプロセッサに行わせるための命令をさらに具備する、請求項12記載のコンピュータ可読媒体。 請求項20 前記オフスクリーンサーフェスのための前記第2のバッファの内容と、前記追加のオフスクリーンサーフェスのための前記第4のバッファの内容と、オンスクリーンサーフェスに関連するデータとを、オーバーレイ順序にしたがって組み合わせることと、前記オーバーレイ順序に基づいて表示するために、前記オフスクリーンサーフェスと、前記追加のオフスクリーンサーフェスと、前記オンスクリーンサーフェスとをオーバーレイすることとを前記1つ又は複数のプロセッサに行わせるための命令をさらに具備する、請求項19記載のコンピュータ可読媒体。 請求項21 前記オフスクリーンサーフェスは、2次元サーフェス、3次元サーフェス、又はビデオサーフェスを具備し、前記追加のオフスクリーンサーフェスは、2次元サーフェス、3次元サーフェス、又はビデオサーフェスを具備する、請求項20記載のコンピュータ可読媒体。 請求項22 1つ又は複数のバッファエリアと、グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連する前記1つ又は複数のバッファエリア内の複数のバッファを割り振るように構成された1つ又は複数のプロセッサとを備え、前記1つ又は複数のプロセッサは、書き込み動作中に前記オフスクリーンサーフェスに関係する情報が前記バッファ内の第1のバッファに書き込まれ、読み出し動作中に前記オフスクリーンサーフェスに関係する情報が前記バッファ内の第2のバッファから読み出されるように、前記第1のバッファを前記オフスクリーンサーフェスのための書き込みバッファとして識別し、さらに前記第2のバッファを前記オフスクリーンサーフェスのための読み出しバッファとして識別するようにさらに構成される装置。 請求項23 前記1つ又は複数のプロセッサは、pbufferに関連する前記1つ又は複数のバッファエリアの第1のエリア内、又はpixmapに関連する前記1つ又は複数のバッファエリアの第2のエリア内のいずれかの前記バッファを割り振るように構成される、請求項22記載の装置。 請求項24 前記1つ又は複数のプロセッサは、前記第1のバッファを前記読み出しバッファとして識別し、前記第2のバッファを前記書き込みバッファとして識別するバッファ選択機能を呼び出すようにさらに構成される、請求項22記載の装置。 請求項25 前記1つ又は複数のプロセッサは、前記オフスクリーンサーフェスをレンダリングすることによってレンダリング情報を生成し、前記書き込み動作中に前記レンダリング情報を前記第1のバッファに書き込むようにさらに構成される、請求項22記載の装置。 請求項26 前記1つ又は複数のプロセッサは、前記読み出し動作中に表示のために前記オフスクリーンサーフェスに関する情報を前記第2のバッファから読み出すようにさらに構成される、請求項22記載の装置。 請求項27 前記書き込みバッファが前記読み出しバッファとは異なるように、前記第1のバッファと前記第2のバッファとが異なるバッファである、請求項22記載の装置。 請求項28 前記1つ又は複数のプロセッサは、グラフィックス処理において使用される追加のオフスクリーンサーフェスにすべてが関連する追加のバッファを割り振り、追加の書き込み動作中に前記追加のオフスクリーンサーフェスに関係する情報が前記追加のバッファ内の第3のバッファに書き込まれ、追加の読み出し動作中に前記追加のオフスクリーンサーフェスに関係する情報が前記追加のバッファ内の第4のバッファから読み出されるように、前記第3のバッファを前記追加のオフスクリーンサーフェスのための書き込みバッファとして識別し、前記第4のバッファを前記追加のオフスクリーンサーフェスのための読み出しバッファとして識別するようにさらに構成される、請求項22記載の装置。 請求項29 前記1つ又は複数のプロセッサは、前記オフスクリーンサーフェスのための前記第2のバッファの内容と、前記追加のオフスクリーンサーフェスのための前記第4のバッファの内容と、オンスクリーンサーフェスに関連するデータとをオーバーレイ順序にしたがって組み合わせ、前記オーバーレイ順序に基づいて表示するために、前記オフスクリーンサーフェスと、前記追加のオフスクリーンサーフェスと、前記オンスクリーンサーフェスとをオーバーレイするようにさらに構成される、請求項28記載の装置。 請求項30 前記オフスクリーンサーフェスは、2次元サーフェス、3次元サーフェス、又はビデオサーフェスを具備し、前記追加のオフスクリーンサーフェスは、2次元サーフェス、3次元サーフェス、又はビデオサーフェスを具備する、請求項29記載の装置。 請求項31 前記1つ又は複数のプロセッサは、それぞれディスプレイプロセッサ、グラフィックスプロセッサ、又は汎用プロセッサを具備する、請求項22記載の装置。 請求項32 前記装置は、ワイヤレス通信デバイスハンドセット、パーソナルコンピュータ、又はラップトップデバイスを具備する、請求項22記載の装置。 請求項33 前記装置は、1つ又は複数の集積回路デバイスを具備する、請求項22記載の装置。 請求項34 グラフィックス処理において使用されるオフスクリーンサーフェスにすべてが関連する複数のバッファを割り振るための手段と、書き込み動作中に前記オフスクリーンサーフェスに関係する情報が前記バッファ内の第1のバッファに書き込まれるように、前記第1のバッファを前記オフスクリーンサーフェスのための書き込みバッファとして識別するための手段と、読み出し動作中に前記オフスクリーンサーフェスに関係する情報が前記バッファ内の第2のバッファから読み出されるように、前記第2のバッファを前記オフスクリーンサーフェスのための読み出しバッファとして識別するための手段とを具備する装置。 請求項35 前記バッファを割り振るための前記手段は、グラフィックス処理システムの1つ又は複数のバッファエリア内の前記バッファを割り振るための手段を具備する、請求項34記載の装置。 請求項36 前記グラフィックス処理システムの前記1つ又は複数のバッファエリア内の前記バッファを割り振るための前記手段は、pbufferに関連する前記1つ又は複数のバッファエリアの第1のエリア内、又はpixmapに関連する前記1つ又は複数のバッファエリアの第2のエリア内のいずれかの前記バッファを割り振るための手段を具備する、請求項35記載の装置。 請求項37 前記第1のバッファを前記読み出しバッファとして識別し、前記第2のバッファを前記書き込みバッファとして識別するバッファ選択機能を呼び出すための手段をさらに具備する、請求項34記載の装置。 請求項38 前記オフスクリーンサーフェスをレンダリングすることによってレンダリング情報を生成するための手段と、前記書き込み動作中に前記レンダリング情報を前記第1のバッファに書き込むための手段とをさらに具備する、請求項34記載の装置。 請求項39 前記読み出し動作中に表示のために前記オフスクリーンサーフェスに関係する情報を前記第2のバッファから読み出すための手段をさらに具備する、請求項34記載の装置。 請求項40 前記書き込みバッファが前記読み出しバッファとは異なるように、前記第1のバッファと前記第2のバッファとが異なるバッファである、請求項34記載の装置。 請求項41 グラフィックス処理において使用される追加のオフスクリーンサーフェスにすべてが関連する追加のバッファを割り振るための手段と、追加の書き込み動作中に前記追加のオフスクリーンサーフェスに関係する情報が前記追加のバッファ内の第3のバッファに書き込まれるように、前記第3のバッファを前記追加のオフスクリーンサーフェスのための書き込みバッファとして識別するための手段と、追加の読み出し動作中に前記追加のオフスクリーンサーフェスに関係する情報が前記追加のバッファ内の第4のバッファから読み出されるように、前記第4のバッファを前記追加のオフスクリーンサーフェスのための読み出しバッファとして識別するための手段とをさらに具備する、請求項34記載の装置。 請求項42 前記オフスクリーンサーフェスのための前記第2のバッファの内容と、前記追加のオフスクリーンサーフェスのための前記第4のバッファの内容と、オンスクリーンサーフェスに関連するデータとを、オーバーレイ順序にしたがって組み合わせるための手段と、前記オーバーレイ順序に基づいて表示するために、前記オフスクリーンサーフェスと、前記追加のオフスクリーンサーフェスと、前記オンスクリーンサーフェスとをオーバーレイするための手段とをさらに具備する、請求項41記載の装置。 請求項43 前記オフスクリーンサーフェスは、2次元サーフェス、3次元サーフェス、又はビデオサーフェスを具備し、前記追加のオフスクリーンサーフェスは、2次元サーフェス、3次元サーフェス、又はビデオサーフェスを具備する、請求項42記載の装置。
类似技术:
公开号 | 公开日 | 专利标题 US20200320787A1|2020-10-08|Foveated geometry tessellation US20180047129A1|2018-02-15|Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters US9978115B2|2018-05-22|Sprite graphics rendering system US10068383B2|2018-09-04|Dynamically displaying multiple virtual and augmented reality views on a single display US9437040B2|2016-09-06|System, method, and computer program product for implementing anti-aliasing operations using a programmable sample pattern table JP2018060556A|2018-04-12|グラフィック処理ユニットにおける視界ベースの状態更新 JP6309620B2|2018-04-11|頂点シェーダのフロント・エンドとしてコンピュート・シェーダを使用すること US8659589B2|2014-02-25|Leveraging graphics processors to optimize rendering 2-D objects US8704830B2|2014-04-22|System and method for path rendering with multiple stencil samples per color sample US9978171B2|2018-05-22|Control of a sample mask from a fragment shader program US7728841B1|2010-06-01|Coherent shader output for multiple targets US7176919B2|2007-02-13|Recirculating shade tree blender for a graphics system US10614549B2|2020-04-07|Varying effective resolution by screen location by changing active color sample count within multiple render targets US10127628B2|2018-11-13|Method and system to virtualize graphic processing services US6972769B1|2005-12-06|Vertex texture cache returning hits out of order US7928990B2|2011-04-19|Graphics processing unit with unified vertex cache and shader register file US8063903B2|2011-11-22|Edge evaluation techniques for graphics hardware CN105849780B|2019-01-22|平铺块式基础架构上的经优化多遍次再现 US5701444A|1997-12-23|Three-dimensional graphics subsystem with enhanced support for graphical user interface US7570266B1|2009-08-04|Multiple data buffers for processing graphics data US20140218390A1|2014-08-07|Modulated and blended anti-aliasing KR20150002745A|2015-01-07|그래픽스 프로세싱에서의 패치된 쉐이딩 EP1323131B1|2007-02-28|Method and apparatus for anti-aliasing supersampling US7307628B1|2007-12-11|Diamond culling of small primitives Tarini et al.2006|Ambient occlusion and edge cueing for enhancing real time molecular visualization
同族专利:
公开号 | 公开日 WO2009092033A1|2009-07-23| CA2711583A1|2009-07-23| EP2245598B1|2017-07-05| CN101911125B|2013-07-24| JP5166552B2|2013-03-21| CN101911125A|2010-12-08| EP2245598A1|2010-11-03| KR20100103704A|2010-09-27| KR101239029B1|2013-03-04| TW200943224A|2009-10-16| KR20120132560A|2012-12-05| US20090184972A1|2009-07-23|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2012-02-01| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120131 | 2012-04-27| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120426 | 2012-07-25| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120724 | 2012-10-25| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121024 | 2012-11-16| TRDD| Decision of grant or rejection written| 2012-11-21| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121120 | 2012-12-27| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121220 | 2012-12-28| FPAY| Renewal fee payment (event date is renewal date of database)|Free format text: PAYMENT UNTIL: 20151228 Year of fee payment: 3 | 2012-12-28| R150| Certificate of patent or registration of utility model|Ref document number: 5166552 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 | 2015-12-08| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2016-12-06| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2017-12-12| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2018-12-11| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2019-12-03| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 | 2020-12-28| LAPS| Cancellation because of no payment of annual fees|
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|