JP5847960B2 - グラフィックス処理における直接レンダリングとビニングとの間の切り換え - Google Patents

グラフィックス処理における直接レンダリングとビニングとの間の切り換え Download PDF

Info

Publication number
JP5847960B2
JP5847960B2 JP2014544747A JP2014544747A JP5847960B2 JP 5847960 B2 JP5847960 B2 JP 5847960B2 JP 2014544747 A JP2014544747 A JP 2014544747A JP 2014544747 A JP2014544747 A JP 2014544747A JP 5847960 B2 JP5847960 B2 JP 5847960B2
Authority
JP
Japan
Prior art keywords
rendering
command
mode
binning
memory address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014544747A
Other languages
English (en)
Other versions
JP2015506018A (ja
Inventor
セーサラマイアー、アビナシュ
フラシャティ、クリストファー・ポール
バルシー、ムラート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2015506018A publication Critical patent/JP2015506018A/ja
Application granted granted Critical
Publication of JP5847960B2 publication Critical patent/JP5847960B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Description

[0001]本出願は、2011年11月30日に出願された米国仮出願第61/565,397号の利益を主張し、この米国仮出願は、その全体が参照により本明細書に組み込まれる。
[0002]本開示は、グラフィックス処理のための技法に関し、より詳しくは、グラフィックス処理における直接レンダリング(direct rendering)とビニング(binning)との間で切り換えるための技法に関する。
[0003]グラフィカル・ユーザ・インターフェイスおよびビデオゲームに関するコンテンツなど、表示のためのビジュアルコンテンツは、グラフィックス・プロセシング・ユニット(GPU)によって生成されうる。GPUは、二次元または三次元(3D)のオブジェクトを、表示されうる二次元(2D)のピクセル表現に変換することができる。3Dのオブジェクトについての情報を表示されうるビットマップに変換することは、ピクセルレンダリングとして知られており、かなりのメモリおよび処理パワーを必要とする。過去において、3Dグラフィックスの能力は、強力なワークステーションにおいてのみ利用可能であった。しかしながら、今や3Dグラフィックスアクセラレータ(accelerators)が、パーソナルコンピュータ(PC)、ならびにスマートフォン、タブレットコンピュータ、ポータブル・メディア・プレイヤー、携帯型のテレビゲーム機などの組み込みデバイス(embedded devices)に普通に見つけられる。典型的には、組み込みデバイスは通常のPCと比べて小さい演算パワーおよびメモリ容量を有する。したがって、3Dグラフィックスレンダリング技法において複雑さが増すと、そのような技法を組み込みデバイスにおいて実行することが難しくなる。
[0004]一般に、本開示は、グラフィックス処理における直接レンダリングとビニングとの間で切り換えるための技法、およびレンダリングモードを決定するための技法を説明する。
[0005]本開示の一例においては、グラフィックス処理の方法が、フレームをレンダリングするためのレンダリングコマンドを生成することであって、レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成することと、グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを探知することと、レンダリング特性に基づいて、フレームについて、複数のレンダリングモードのうちの1つを決定することであって、複数のレンダリングモードはビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定することと、決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを、システム・メモリ・アドレスを使用するように変更することとを備える。
[0006]本開示の別の例では、グラフィックス処理の方法が、シーンのプリミティブ(primitives)についてビニング操作を実行することであって、プリミティブはビンに分けられる、実行することと、シーンの一領域内でプリミティブのオーバードロー(overdraw)の量を表すオーバードロー数を計算することと、計算されたスコア基づいてレンダリングモードを決定することとを備える。
[0007]本開示の別の例では、グラフィックス処理の方法が、グラフィックス操作の実行のための操作コマンドを第1のバッファに保存することと、書き込みコマンドを第2のバッファに保存することとを備え、書き込みコマンドが、実行されたときに、第1のバッファ内の操作コマンドを変更し、変更された操作コマンドを生成する。
[0008]本開示の技法は、装置ならびに上記技法をプロセッサに実行させるための命令群を格納するコンピュータ読取可能な記憶媒体に関しても説明される。1または複数の例の詳細が、添付図面および以下の説明において述べられる。他の特徴、目的、および利点が、説明と図面から、および特許請求の範囲から明らかになるだろう。
図1は、本開示の技法を使用するように構成された例示的なコンピュータデバイスを示すブロック図である。 図2は、本開示の技法を使用するように構成された例示的な処理ユニットを示すブロック図である。 図3は、ビニング・レンダリング・モードにおいて使用されるときのフレームのビンを示す概念図である。 図4は、ビニング・レンダリング・モードにおいて使用されるときのフレームのビンをさらに詳しく示す概念図である。 図5は、「ソフトウェア」ビニングを使用するビニング・レンダリング・モードに関するコマンドバッファを説明する概念図である。 図6は、「ハードウェア」ビニングを使用するビニング・レンダリング・モードに関するコマンドバッファを説明する概念図である。 図7は、直接レンダリングモードに関するコマンドバッファを説明する概念図である。 図8は、本開示の一例によるレンダリングコマンドパッチング(patching)を説明する概念図である。 図9は、本開示の一例によるオーバードロートラッキング(tracking)を説明する概念図である。 図10は、本開示の一例による4つのビンにおけるオーバードローを説明する概念図である。 図11は、本開示の一例によるレンダリングモードの選択を説明する概念図である。 図12は、本開示の別の例によるレンダリングコマンドパッチングを説明する概念図である。 図13は、本開示の一例による方法を説明するフローチャートである。 図14は、本開示の別の例による方法を説明するフローチャートである。 図15は、本開示の他の例による方法を説明するフローチャートである。 図16は、本開示の別の例による方法を説明するフローチャートである。
[0025]本開示は、グラフィックス処理のための技法に関し、より詳しくは、グラフィックス処理システムにおけるレンダリングモードを決定する、およびレンダリングモード間で切り換えるための技法に関する。
[0026]現在のグラフィックス・レンダリング・システムは、典型的には、シーンをレンダリングするためにビニング・レンダリング・モード(タイルベースの(tile−based)単位レンダリングと呼ばれることもある)または直接レンダリングモードを利用する。ビニングレンダリングにおいては、2Dまたは3Dシーンの一フレームが、このフレームをより小さな部分(例えば、矩形のビンまたはタイル(tiles))に分割すること、およびこれらのビンの各々を別々にレンダリングすることによってレンダリングされる。ビニングレンダリングは、例えばモバイルアプリケーションなど、専用の高速なグラフィックメモリ(GMEM)があまり利用できない用途において有用である。タイルのサイズは、GMEMにおいて利用可能であるデータの量を表すように構成されうる。例えば、GMEMが512kBを保存できる場合には、タイルのサイズは、このタイルに含まれるピクセルデータが512kB以下であるように構成されうる。
[0027]一方、直接レンダリングモードにおけるグラフィックス処理は、フレームをより小さなビンに分割することがない。代わりに、フレームの全体が一度にレンダリングされる。いくつかのグラフィックス処理システム(例えば、モバイルデバイスにおけるグラフィックス処理システム)においては、フレーム全体のピクセルデータを保持するための充分なGMEMが存在しない。代わりに、直接レンダリングモードにおいて、より低速なシステムメモリが、フレームをレンダリングするために使用される。
[0028]本開示は、レンダリングモード(例えば、ビニング・レンダリング・モードおよび直接レンダリングモード)を決定するための技法および構造、ならびにそのようなレンダリングモードの間で切り換えるための技法および構造を提供する。
[0029]本開示の一例においては、グラフィックス処理の方法が、フレームをレンダリングするためのレンダリングコマンドを生成することであって、レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成することと、グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを探知することと、レンダリング特性に基づいて、フレームについて、複数のレンダリングモードのうちの1つを決定することであって、複数のレンダリングモードはビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定することと、決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを、システム・メモリ・アドレスを使用するように変更することとを備える。
[0030]本開示の別の例では、グラフィックス処理の方法が、シーンのプリミティブ(primitives)についてビニング操作を実行することであって、プリミティブはビンに分けられる、実行することと、シーンの一領域におけるプリミティブのオーバードロー(overdraw)の量を表すオーバードロー数を計算することと、計算されたスコア基づいてレンダリングモードを決定することとを備える。
[0031]本開示の別の例では、グラフィックス処理の方法が、グラフィックス操作を実行するための操作コマンドを第1のバッファに保存することと、書き込みコマンドを第2のバッファに保存することとを備え、書き込みコマンドが、第1のバッファ内の操作コマンドを変更し、変更された操作コマンドを生成する。
[0032]図1が、レンダリングモードを決定する、およびレンダリングモード間(例えば、ビニング・レンダリング・モードと直接レンダリングモードとの間)で切り換えるための本開示の技法を実装するために使用されうる例示的なコンピュータデバイス2を説明するブロック図である。コンピュータデバイス2は、例えば、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、コンピュータワークステーション、テレビゲームプラットフォームまたはテレビゲーム機、例えばセルラー電話または衛星電話などの携帯電話、有線電話、インターネット電話、携帯型のテレビゲームデバイスまたはパーソナル・デジタル・アシスタント(PDA)などのハンドヘルドデバイス、パーソナル・ミュージック・プレイヤー、ビデオプレイヤー、ディスプレイデバイス、テレビ、テレビ・セットトップ・ボックス、サーバ、中間ネットワークデバイス、メインフレームコンピュータ、任意のモバイルデバイス、あるいはグラフィックデータを処理および/または表示する任意の他のタイプのデバイスを備えることができる。
[0033]図1の例に示されるとおり、コンピュータデバイス2は、ユーザ入力インターフェイス4と、中央演算ユニット(CPU)6と、メモリコントローラ8と、システムメモリ10と、グラフィックス・プロセシング・ユニット(GPU)12と、グラフィックスメモリ14と、ディスプレイインターフェイス16と、ディスプレイ18と、バス20および22とを含みうる。いくつかの例では、グラフィックスメモリ14が、GPU12と「一体(on−chip)」であってよいことに、留意すべきである。いくつかの場合には、図1に示されるすべてのハードウェア構成要素が、例えばシステム・オン・チップ(SoC)の設計にて一体であってよい。ユーザ入力インターフェイス4、CPU6、メモリコントローラ8、GPU12、およびディスプレイインターフェイス16は、バス20を使用して互いに通信することができる。メモリコントローラ8およびシステムメモリ10も、バス22を使用して互いに通信することができる。バス20、22は、第3世代バス(例えば、HyperTransportバスまたはInfiniBandバス)、第2世代バス(例えば、Advanced Graphics Portバス、Peripheral Component Interconnect(PCI)Expressバス、またはAdvanced eXentisible Interface(AXI)バス)、あるいは他のタイプのバスまたはデバイス相互接続など、種々のバス構造のいずれかであってよい。図1に示した種々の構成要素の間のバスおよび通信インターフェイスの具体的構成は、単に例示にすぎず、同じまたは異なる構成要素を有するコンピュータデバイスおよび/または他のグラフィックス処理システムの他の構成が、本開示の技法を実装するために使用されうることに、留意すべきである。
[0034]CPU6は、コンピュータデバイス2の操作を制御する汎用または専用のプロセッサを備えることができる。ユーザが、CPU6に1つ以上のソフトウェアアプリケーションを実行させるための入力をコンピュータデバイス2にもたらすことができる。CPU6上で実行されるソフトウェアアプリケーションは、例えば、オペレーティングシステム、ワード・プロセッサ・アプリケーション、電子メールアプリケーション、スプレッド・シート・アプリケーション、メディア・プレイヤー・アプリケーション、テレビゲームアプリケーション、グラフィカル・ユーザ・インターフェイス・アプリケーション、または他のプログラムを含みうる。さらに、CPU6は、GPU12の操作を制御するためのGPUドライバ7を実行することができる。ユーザは、キーボード、マウス、マイクロホン、タッチパッド、またはユーザ入力インターフェイス4を介してコンピュータデバイス2に結合される他の入力デバイスなどの1つ以上の入力デバイス(図示されていない)によって、コンピュータデバイス2に入力をもたらすことができる。
[0035]CPU6上で実行されるソフトウェアアプリケーションは、CPU6に対してディスプレイ18へのグラフィックスデータのレンダリングを生じさせるように指示する1つ以上のグラフィックスレンダリング命令群を含むことができる。いくつかの例では、ソフトウェア命令群が、例えばOpen Graphics Library(OpenGL(登録商標))API、Open Graphics Library Embedded Systems(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGL API、あるいは任意の他の公開またはプロプライエタリな(proprietary)標準的なグラフィックスAPIなど、グラフィックス・アプリケーション・プログラミング・インターフェイス(API)に従うことができる。グラフィックスレンダリング命令群を処理するために、CPU6は、GPU12にグラフィックスデータのレンダリングの一部またはすべてを実行させるために、(例えば、GPUドライバ7を通じて)GPU12に1つ以上のグラフィックス・レンダリング・コマンドを発する(issue)ことができる。いくつかの例では、レンダリングされるべきグラフィックスデータが、例えば点、線、三角形、四角形、トライアングルストリップ(triangle strips)などのグラフィックスプリミティブ(graphics primitives)のリストを含むことができる。
[0036]メモリコントローラ8が、システムメモリ10へのデータの出し入れを手助けする。例えば、メモリコントローラ8が、メモリ読み出しおよび書き込みコマンドを受信し、コンピュータデバイス2の構成要素にメモリサービスを提供するために、そのようなコマンドをメモリシステム10に対して提供しうる。メモリコントローラ8は、メモリバス22を介してシステムメモリ10に通信可能に結合される。図1においては、メモリコントローラ8が、CPU6およびシステムメモリ10の両者とは別の処理モジュールとして示されているが、他の例では、メモリコントローラ8の機能の一部またはすべては、CPU6およびシステムメモリ10の一方または両方の上に実装されうる。
[0037]システムメモリ10は、CPU6によって実行のためにアクセス可能であるプログラムモジュールおよび/または命令群、ならびに/あるいはCPU6上で実行されるプログラムによって使用するためのデータを記憶することができる。例えば、システムメモリ10は、グラフィカル・ユーザ・インターフェイス(GUI)をディスプレイ18上に提示するためにCPU6によって使用されるウインドウ・マネージャ・アプリケーションを記憶することができる。さらに、システムメモリ10は、ユーザアプリケーションおよびアプリケーションに関するアプリケーション表面データを記憶することができる。さらに、システムメモリ10は、コンピュータデバイス2の他の構成要素によって使用するための、さらには/あるいはコンピュータデバイス2の他の構成要素によって生成される情報を記憶することができる。例えば、システムメモリ10は、GPU12のためのデバイスメモリとして機能することができ、GPU12によって操作されるデータならびにGPU12によって実行される操作からもたらされるデータを記憶することができる。例えば、システムメモリ10は、テクスチャバッファ、デプスバッファ(depth buffers)、ステンシルバッファ(stencil buffers)、バーテクスバッファ(vertex buffers)、フレームバッファなどの任意の組み合わせを記憶することができる。システムメモリ10は、例えばランダム・アクセス・メモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、Flashメモリ、磁気データ媒体、または光学記憶媒体など、1つ以上の揮発性または不揮発性メモリまたは記憶デバイスを含むことができる。
[0038]GPU12は、1つ以上のグラフィックスプリミティブをディスプレイ18にレンダリングするためのグラフィックス操作を実行するように構成されうる。したがって、CPU6上で実行されるソフトウェアアプリケーションのうちの1つがグラフィックス処理を必要とするとき、CPU6が、ディスプレイ18へレンダリングするためのグラフィックスコマンドおよびグラフィックスデータをGPU12にもたらすことができる。グラフィックスデータは、例えば描画コマンド、状態情報、プリミティブ情報、テクスチャ情報などを含むことができる。GPU12は、いくつかの事例においては、複雑なグラフィック関連の操作についてCPU6よりも効率的な処理をもたらす高度に並列な(highly−parallel)構造にて構築されうる。例えば、GPU12は、複数の頂点(vertices)またはピクセルについて並列な方法で動作するように構成された複数の処理要素を含むことができる。GPU12の高度に並列な性質は、いくつかの場合において、GPU12が、CPU6を使用してディスプレイ18に直接シーンを描画する場合よりも迅速にディスプレイ18にグラフィックス画像(例えば、GUIならびに二次元(2D)および/または三次元(3D)のグラフィックスシーン)を描画することを可能にする。
[0039]GPU12は、いくつかの場合においては、コンピュータデバイス2のマザーボードに統合されうる。他の場合には、GPU12は、コンピュータデバイス2のマザーボードのポートに設置されるグラフィックスカード上に存在させられ得、あるいはコンピュータデバイス2と相互運用する(interoperate)ように構成された周辺デバイス内に他のやり方で組み込まれうる。GPU12は、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、デジタル信号プロセッサ(DSP)、あるいは他の同等の論理集積回路または個別の集積回路など、1つ以上のプロセッサを含むことができる。
[0040]GPU12は、グラフィックスメモリ14に直接結合されうる。したがって、GPU12が、バス20を使用することなくグラフィックスメモリ14からのデータの読み出しおよびグラフィックスメモリ14へのデータの書き込みを行うことができる。換言すると、GPU12が、オフチップ(off−chip)メモリの代わりに、ローカル記憶装置を使用して局所的にデータを処理することができる。これにより、GPU12が、バスの混雑に直面しかねないバス20を介したデータの読み書きが不要になることで、より効率的なやり方で動作することができる。しかしながら、いくつかの場合には、GPU12が別途のメモリを含まず、代わりにバス20を介してシステムメモリ10を利用してもよい。グラフィックスメモリ14は、例えばランダム・アクセス・メモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、Flashメモリ、磁気データ媒体、または光学記憶媒体など、1つ以上の揮発性または不揮発性メモリまたは記憶デバイスを含むことができる。
[0041]CPU6および/またはGPU12は、レンダリングされた画像データをフレームバッファ15に保存することができる。フレームバッファ15は、独立したメモリであってよく、あるいはシステムメモリ10において割り当てられてもよい。ディスプレイインターフェイス16が、フレームバッファ15からデータを取り出し、レンダリングされた画像データによって表される画像を表示するようにディスプレイ18を構成することができる。いくつかの例では、ディスプレイインターフェイス16が、フレームバッファから取り出されたデジタル値をディスプレイ18によって消費できるアナログ信号に変換するように構成されたデジタル−アナログコンバータ(DAC)を含むことができる。他の例では、ディスプレイインターフェイス16が、デジタル値を処理のためにディスプレイ18に直接渡すことができる。ディスプレイ18は、モニタ、テレビ、プロジェクションデバイス(projection device)、液晶ディスプレイ(LCD)、プラズマ・ディスプレイ・パネル、有機LED(OLED)ディスプレイなどの発光ダイオード(LED)アレイ、陰極線管(CRT)ディスプレイ、電子ペーパー、表面伝導型電子放出ディスプレイ(SED)、レーザ・テレビジョン・ディスプレイ、ナノ結晶ディスプレイ、または他のタイプのディスプレイユニットを含むことができる。ディスプレイ18は、コンピュータデバイス2に統合されうる。例えば、ディスプレイ18が、携帯電話の画面であってよい。代替的に、ディスプレイ18が、有線または無線の通信リンクを介してコンピュータデバイス2に結合されるスタンドアロンデバイスであってよい。例えば、ディスプレイ18は、ケーブルまたは無線リンクによってパーソナルコンピュータに接続されたコンピュータモニタまたはフラット・パネル・ディスプレイであってよい。
[0042]本開示の一例によれば、CPU6および/またはGPUドライバ7は、フレームをレンダリングするためのレンダリングコマンドを生成することであって、レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成することと、グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを探知することと、レンダリング特性に基づいて、フレームについて、複数のレンダリングモードのうちの1つを決定することであって、複数のレンダリングモードはビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定することと、決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを、システム・メモリ・アドレスを使用するように変更することとを行わせるように構成されうる。
[0043]本開示の別の例によれば、CPU6および/またはグラフィックスドライバ7は、シーンのプリミティブについてビニング操作を実行することであって、プリミティブはビンに分けられる、実行することと、シーンの一領域におけるプリミティブのオーバードローの量を表すオーバードロー数を計算することと、計算されたスコア基づいてレンダリングモードを決定することとを行うように構成されうる。
[0044]本開示の別の例によれば、CPU6および/またはグラフィックスドライバ7は、グラフィックス操作を実行するための操作コマンドを第1のバッファに保存することと、書き込みコマンドを第2のバッファに保存することであって、書き込みコマンドは第1のバッファ内の操作コマンドを変更して変更された操作コマンドを生成する、保存することとを行うように構成されうる。
[0045]図2が、図1のCPU6、GPU12、およびシステムメモリ10の例示的な実装をさらに詳しく説明するブロック図である。CPU6が、各々がCPU6上で実行される1つ以上のソフトウェアアプリケーションまたはサービスであってよい少なくとも1つのソフトウェアアプリケーション24、グラフィックスAPI26、およびGPUドライバ7を含むことができる。GPU12は、グラフィックス処理コマンドを実行するために協働する複数のグラフィックス処理ステージを含むグラフィックス処理パイプライン30を含むことができる。GPU12は、ビニング・レンダリング・モードおよび直接レンダリングモードを含む種々のレンダリングモードにてグラフィックス処理パイプライン30を実行するように構成されうる。図2に示されるとおり、グラフィックス処理パイプライン30は、コマンドエンジン32、ジオメトリ処理ステージ34、ラスタライゼーション(rasterization)ステージ36、およびピクセル処理パイプライン38を含むことができる。グラフィックス処理パイプライン30の各々の構成要素は、固定された機能の構成要素、プログラマブルな構成要素(例えば、プログラマブルなシェーダユニット(shader unit)において実行されるシェーダプログラムの一部)、あるいは固定された機能の構成要素とプログラマブルな構成要素との組み合わせとして実装されうる。CPU6およびGPU12にとって利用可能なメモリは、システムメモリ10およびフレームバッファ15を含むことができる。フレームバッファ15は、システムメモリ10の一部であってよく、あるいはシステムメモリ10とは別であってよい。フレームバッファ15は、レンダリングされた画像データを保存することができる。
[0046]ソフトウェアアプリケーション24は、GPU12の機能を利用する任意のアプリケーションであってよい。例えば、ソフトウェアアプリケーション24は、GUIアプリケーション、オペレーティングシステム、ポータブル・マッピング・アプリケーション、エンジニアリングまたは芸術の用途のためのコンピュータ支援設計プログラム、テレビゲームアプリケーション、あるいは2Dまたは3Dグラフィックスを使用する任意のタイプのソフトウェアアプリケーションであってよい。
[0047]ソフトウェアアプリケーション24は、GPU12に対してグラフィカル・ユーザ・インターフェイス(GUI)および/またはグラフィックスシーンをレンダリングするように指示する1つ以上の描画命令群を含むことができる。例えば、描画命令群は、GPU12によってレンダリングされるべき1つ以上のグラフィックスプリミティブのセットを定める命令群を含むことができる。いくつかの例では、描画命令群が、集合的に、GUIにおいて使用される複数のウインドウ生成表面(windowing surfaces)のすべてまたは一部を定めることができる。さらなる例では、描画命令群が、集合的に、アプリケーションによって定められるモデル空間またはワールド空間内に1つ以上のグラフィックスオブジェクトを含むグラフィックスシーンのすべてまたは一部を定めることができる。
[0048]ソフトウェアアプリケーション24は、1つ以上のグラフィックスプリミティブを表示可能なグラフィックス画像にレンダリングするための1つ以上のコマンドをGPU12に発するために、グラフィックスAPI26を介してGPUドライバ7を呼び出すことができる。例えば、ソフトウェアアプリケーション24は、プリミティブの定義をGPU12にもたらすためにグラフィックスAPI26を介してGPUドライバ7を呼び出すことができる。いくつかの場合には、プリミティブの定義は、例えば三角形、矩形、トライアングルファン(triangle fans)、トライアングルストリップなどの描画プリミティブのリストの形態でGPU12にもたらされうる。プリミティブの定義は、レンダリングされるべきプリミティブに関連付けられた1つ以上の頂点を指定する頂点指定を含むことができる。頂点指定は、各々の頂点の位置座標を含むことができ、いくつかの場合には、例えば色座標、法線ベクトル、およびテクスチャ座標など、頂点に関連付けられた他の属性を含むことができる。また、プリミティブの定義は、プリミティブタイプ情報(例えば、三角形、矩形、トライアングルファン、トライアングルストリップなど)、スケーリング情報、回転情報などを含むことができる。ソフトウェアアプリケーション24によってGPUドライバ7に発せられる命令群に基づき、GPUドライバ7が、プリミティブをレンダリングするためにGPU12が実行すべき1つ以上の操作を指定する1つ以上のコマンドを作成する(formulate)ことができる。GPU12がCPU6からのコマンドを受信したとき、グラフィックス処理パイプライン30がコマンドをデコードし、グラフィックス処理パイプライン30内の1つ以上の処理要素を、コマンドにおいて指定された操作を実行するように構成する。指定された操作が実行された後で、グラフィックス処理パイプライン30は、レンダリングされたデータを、ディスプレイデバイスに関連付けられたフレームバッファ40に出力する。グラフィックスパイプライン30は、ビニング・レンダリング・モードおよび直接レンダリングモードを含む複数の異なるレンダリングモードのうちの1つで実行するように構成されうる。ビニング・レンダリング・モードおよび直接レンダリングモードの操作は、さらに詳しく後述される。
[0049]さらに、GPUドライバ7は、1つ以上のシェーダプログラムをコンパイルし、コンパイルされたシェーダプログラムをGPU12に含まれる1つ以上のプログラマブルなシェーダユニットにダウンロードするように構成されうる。シェーダプログラムは、例えばOpenGL Shading Language(GLSL)、High Level Shading Language(HLSL)、C for Graphics(Cg)Shading Languageなどといった高レベルシェーディング言語にて記述されうる。コンパイルされたシェーダプログラムは、GPU12内のプログラマブルなシェーダユニットの操作を制御する1つ以上の命令群を含むことができる。例えば、シェーダプログラムは、バーテックス・シェーダ・プログラムおよび/またはピクセル・シェーダ・プログラムを含むことができる。バーテックス・シェーダ・プログラムは、プログラマブルなバーテックス・シェーダ・ユニットまたは統合されたシェーダユニット(unified shader unit)の実行を制御することができ、1つ以上のパーバーテックス(per−vertex)操作を指定する命令群を含むことができる。ピクセル・シェーダ・プログラムは、プログラマブルなピクセル・シェーダ・ユニットまたは統合されたシェーダユニットの実行を制御するピクセル・シェーダ・プログラムを含むことができ、1つ以上のパーピクセル(per−pixel)操作を指定する命令群を含むことができる。本開示のいくつかの例示的な実施形態によれば、ピクセル・シェーダ・プログラムが、ソースピクセルについて、ソースピクセルの対応するデスティネーションアルファ値に基づいてテクスチャ値の取り出しを選択的に生じさせる命令群をさらに含むことができる。
[0050]さらに、本開示の技法によれば、GPUドライバ7は、GMEMアドレスを利用するビニング・レンダリング・モードにおいてレンダリングするために生成されるコマンドを探知するように構成されうる。GMEMアドレスを利用する各コマンドについて、GPUドライバ7は、直接レンダリングモードに使用されると考えられる対応するシステム・メモリ・アドレスを保存することができる。レンダリングモードがビニング・レンダリング・モードから直接レンダリングモードに切り換わる場合、GPUドライバ7は、GMEMアドレスをシステム・メモリ・アドレスで置き換えるようにレンダリングコマンドにパッチを当てる(すなわち、変更する)ことができる。GMEMアドレスにシステム・メモリ・アドレスでパッチを適用するためのさらなる技法は、さらに詳しく後述される。
[0051]グラフィックス処理パイプライン30は、グラフィックスドライバ28を介してCPU6から1つ以上のグラフィックス処理コマンドを受信し、グラフィックス処理コマンドを実行して表示可能なグラフィックス画像を生成するように構成されうる。上述のように、グラフィックス処理パイプライン30は、グラフィックス処理コマンドを実行するために協働する複数のステージを含む。しかしながら、そのようなステージは、必ずしも別々のハードウェアブロックにて実装される必要はないことに、留意すべきである。例えば、ジオメトリ処理ステージ34およびピクセル処理パイプライン38の各部分は、統合されたシェーダユニットの一部分として実装されうる。やはり、グラフィックスパイプライン30は、ビニング・レンダリング・モードおよび直接レンダリングモードを含む複数の異なるレンダリングモードのうちの1つで実行するように構成されうる。
[0052]コマンドエンジン32が、グラフィックス処理コマンドを受信し、グラフィックス処理パイプライン30の残りの処理ステージを、グラフィックス処理コマンドを実行するための種々の操作を行うように構成することができる。グラフィックス処理コマンドは、例えば描画コマンドおよびグラフィックス状態コマンドを含むことができる。描画コマンドは、1つ以上の頂点の位置座標を指定する頂点指定コマンドを含むことができ、いくつかの場合には、例えば色座標、法線ベクトル、テクスチャ座標、およびフォグ(fog)座標など、各々の頂点に関連付けられた他の属性値を含むことができる。グラフィックス状態コマンドは、プリミティブタイプコマンド、変形コマンド、照明コマンドなどを含むことができる。プリミティブタイプコマンドは、レンダリングされるべきプリミティブのタイプおよび/またはプリミティブを形成するために頂点を組み合わせるやり方を指定することができる。変形コマンドは、頂点について実行すべき変形のタイプを指定することができる。照明コマンドは、グラフィックスシーンにおける種々の光のタイプ、方向、および/または配置を指定することができる。コマンドエンジン32が、受信された1つ以上のコマンドに関連付けられた頂点および/またはプリミティブについてのジオメトリ処理を、ジオメトリ処理ステージ34に実行させることができる。
[0053]ジオメトリ処理ステージ34は、ラスタライゼーションステージ36のためのプリミティブデータを生成するために、1つ以上の頂点についてパーバーテックス操作および/またはプリミティブセットアップ操作を実行することができる。各々の頂点は、例えば位置座標、色値、法線ベクトル、およびテクスチャ座標などといった属性のセットに関連付けられうる。ジオメトリ処理ステージ34が、種々のパーバーテックス操作に従ってこれらの属性のうちの1つ以上を修正する。例えば、ジオメトリ処理ステージ34は、頂点の位置座標について1つ以上の変換を実行し、修正された頂点の位置座標を生成することができる。ジオメトリ処理ステージ34は、例えばモデリング変換、ビューイング(Viewing)変換、プロジェクション(projection)変換、ModelView変換、ModelViewProjection変換、ビューポート(Viewport)変換、およびデプス(depth)範囲スケーリング変換のうちの1つ以上を頂点の位置座標に適用し、修正された頂点の位置座標を生成することができる。いくつかの場合には、頂点の位置座標が、モデル空間座標であってよく、修正された頂点の位置座標が、スクリーン空間座標であってよい。スクリーン空間座標は、モデリング、ビューイング、プロジェクション、およびビューポート変換の適用後に得られることができる。いくつかの場合には、ジオメトリ処理ステージ34が、頂点についてパーバーテックス照明操作をさらに実行し、頂点の修正された色座標を生成することができる。さらに、ジオメトリ処理ステージ34は、例えば正規変換、法線正規化操作、ビュー・ボリューム・クリッピング(View volume clipping)、一様分割(homogenous division)、および/またはバックフェースカリング操作(backface culling operations)を含む他の操作を実行することができる。
[0054]ジオメトリ処理ステージ34は、ラスタライズされるべきプリミティブを定める1つ以上の修正された頂点のセットと、プリミティブを形成するために頂点を組み合わせるやり方を指定するデータとを含むプリミティブデータを生成することができる。修正された頂点の各々は、例えば、修正された頂点の位置座標および頂点に関連付けられた処理された頂点の属性値を含むことができる。プリミティブデータは、集合的に、グラフィックス処理パイプライン30のさらなるステージによってラスタライズされるべきプリミティブに対応しうる。概念的に、各々の頂点が、プリミティブの2つのエッジ(edges)が出会うプリミティブの角に対応しうる。ジオメトリ処理ステージ34は、プリミティブデータをさらなる処理のためにラスタライゼーションステージ36に提供することができる。
[0055]いくつかの例では、ジオメトリ処理ステージ34のすべてまたは一部は、1つ以上のシェーダユニットにおいて実行される1つ以上のシェーダプログラムによって実装されうる。例えば、ジオメトリ処理ステージ34は、そのような例においては、バーテックスシェーダ、ジオメトリシェーダ、またはこれらの任意の組み合わせによって実装されうる。他の例では、ジオメトリ処理ステージ34は、固定された機能のハードウェア処理パイプラインとして実装され得、あるいは固定された機能のハードウェアと1つ以上のシェーダユニットにおいて実行される1つ以上のシェーダプログラムとの組み合わせとして実装されうる。
[0056]ラスタライゼーションステージ36は、ラスタライズされるべきプリミティブを表すプリミティブデータをジオメトリ処理ステージ34から受信し、プリミティブをラスタライズして、ラスタライズされたプリミティブに対応する複数のソースピクセルを生成するように構成される。いくつかの例では、ラスタライゼーションステージ36が、どのスクリーンピクセル位置がラスタライズされるべきプリミティブによってカバーされるかを判断し、プリミティブによってカバーされると判断された各々のスクリーンピクセル位置についてソースピクセルを生成することができる。ラスタライゼーションステージ36は、どのスクリーンピクセル位置がプリミティブによってカバーされるかを、例えばエッジウォーキング(edge−walking)技法、エッジの式(equations)の評価などといった当業者にとって公知の技法を使用することによって判断することができる。ラスタライゼーションステージ36は、得られたソースピクセルを、さらなる処理のためにピクセル処理パイプライン38に提供することができる。
[0057]ラスタライゼーションステージ36によって生成されるソースピクセルは、例えばデスティネーションピクセルなどのスクリーンピクセル位置に対応でき、1つ以上の色属性に関連付けられうる。特定のラスタライズされたプリミティブについて生成されたすべてのソースピクセルは、ラスタライズされたプリミティブに関連付けられたソースピクセルと呼ばれうる。ラスタライゼーションステージ36によってプリミティブにカバーされると判断されたピクセルは、概念的に、プリミティブの頂点を表すピクセル、プリミティブのエッジを表すピクセル、およびプリミティブの内部を表すピクセルを含むことができる。
[0058]ピクセル処理パイプライン38が、ラスタライズされたプリミティブに関連付けられたソースピクセルを受信し、ソースピクセルについて1つ以上のパーピクセル操作を実行するように構成される。ピクセル処理パイプライン38によって実行されうるパーピクセル操作は、例えばアルファテスト、テクスチャマッピング、色計算、ピクセルシェーディング(shading)、パーピクセルライティング(lighting)、フォグ処理、ブレンディング(blending)、ピクセル・オーナーシップ・テキスト、ソース・アルファ・テスト、ステンシル(stencil)テスト、デプステスト、シザーズ(scissors)テスト、および/またはスティップリング(stippling)操作を含む。さらに、ピクセル処理パイプライン38は、1つ以上のパーピクセル操作を実行するために1つ以上のピクセル・シェーダ・プログラムを実行することができる。ピクセル処理パイプライン38によって生成されて得られたデータは、本明細書においては、デスティネーション・ピクセル・データと呼ばれ得、フレームバッファ15に保存されうる。デスティネーション・ピクセル・データは、処理されたソースピクセルと同じディスプレイ位置を有するフレームバッファ15内のデスティネーションピクセルに関連付けられうる。デスティネーション・ピクセル・データは、例えば色値、デスティネーションアルファ値、デプス値などのデータを含むことができる。
[0059]フレームバッファ15が、GPU12のためのデスティネーションピクセルを保存する。各々のデスティネーションピクセルは、一意のスクリーンピクセル位置に関連付けられうる。いくつかの例では、フレームバッファ15が、各々のデスティネーションピクセルについて色成分およびデスティネーションアルファ値を保存することができる。例えば、フレームバッファ15は、各々のピクセルの赤、緑、青、アルファ(RGBA)成分を保存することができ、ここで「RGB」成分が色値に相当し、「A」成分がデスティネーションアルファ値に相当する。フレームバッファ15およびシステムメモリ10が別々のメモリユニットとして示されているが、他の例においては、フレームバッファ15がシステムメモリ10の一部であってもよい。
[0060]上述のように、グラフィックス処理パイプライン30は、ビニング・レンダリング・モードおよび直接レンダリングモードを含む特定のレンダリングモードに従ってグラフィックス画像をレンダリングすることができる。ビニング・レンダリング・モードによるレンダリングの場合、グラフィックス処理パイプライン30は、プリミティブのバッチ(batch)(すなわち、1つ以上のプリミティブ)を受信してレンダリングし、グラフィックス画像を得ることができる。プリミティブのバッチをレンダリングするために、得られるグラフィックス画像は、複数のより小さな部分(例えば、ピクセルのタイルまたはビン)に分割され得、グラフィックス処理パイプライン30が、グラフィックス画像の各々の部分を別々のレンダリングパス(pass)としてレンダリングすることができる。
[0061]図3が、ビニング・レンダリング・モードのためのビンに分割されたフレームを説明する概念図である。フレーム40は、ビン42などの複数のビンに分割されうる。典型的には、グラフィックスハードウェアは、少なくとも1つのビンのデータを保持するために充分なサイズの高速メモリ(例えば、図2のグラフィックスメモリ14)を含むと考えられる。フレームの特定の部分のための1つのレンダリングパスの一部分として、グラフィックス処理パイプライン30は、フレームのデスティネーションピクセルの特定のサブセット(subset)(例えば、デスティネーションピクセルの特定のビン)に関するプリミティブのバッチのすべてまたはサブセットをレンダリングすることができる。第1のビンに関する第1のレンダリングパスの実行後に、グラフィックス処理パイプライン30は、第2のビンに関する第2のレンダリングパスを実行することができ、以下同様である。グラフィックス処理パイプライン30は、すべてのビンに関連付けられたプリミティブがレンダリングされるまで、ビンを増加的に横断する(traverse)ことができる。
[0062]図4が、ビニング・レンダリング・モードにおいて使用されるビンをさらに詳しく示す概念図である。ビン44、46、48、および50が、複数のピクセル52を含むようにレンダリング/ラスタライズされる。1つ以上のグラフィックスプリミティブは、各々のビンにおいて視認できる。例えば、三角形A(Tri A)の一部分は、ビン44およびビン48の両方において視認できる。三角形B(Tri B)の一部分は、ビン44、ビン46、ビン48、およびビン50の各々において視認できる。三角形C(Tri C)は、ビン46においてのみ視認できる。レンダリングパスの間、ビニング・レンダリング・モードの一例では、シーンがビンに分割され、ビン内のすべての三角形がレンダリングされる(これは、ソフトウェアビニングと称されることもある)。ビニング・レンダリング・モードの別の例では、ビン内のどの三角形が最終的にレンダリングされるシーンにおいて実際に視認されるのかを判断するために追加のステップが、レンダリングの前に行われる(これは、ハードウェアレンダリングと称されることもある)。例えば、いくつかの三角形が1つ以上の他の三角形の背後に位置し、最終的にレンダリングされたシーンにおいて視認されない可能性がある。このやり方で、視認されない三角形は、そのビンについてレンダリングされる必要がない。
[0063]特定のレンダリングパスを実行する間、その特定のレンダリングパスに関連付けられたビンのピクセルデータは、グラフィックスメモリ14(ビンバッファと称されることもある)に保存されうる。レンダリングパスの実行後に、グラフィックス処理パイプライン30は、グラフィックスメモリ14の内容をフレームバッファ15に移すことができる。いくつかの場合には、グラフィックス処理パイプライン30が、フレームバッファ15内のデータの一部をグラフィックスメモリ14に保存されたデータで上書きすることができる。他の場合には、グラフィックス処理パイプライン30が、フレームバッファ15内のデータをグラフィックスメモリ14に保存されたデータと合成し、あるいは組み合わせることができる。グラフィックスメモリ14のコンテンツをフレームバッファ15に移した後で、グラフィックス処理パイプライン30は、グラフィックスメモリ14をデフォルト値に初期化し、別のビンに関する次のレンダリングパスを開始することができる。
[0064]図5が、「ソフトウェア」ビニングを用いるビニング・レンダリング・モードを使用してシーンをレンダリングするための例示的なコマンド構造を示す概念図である。レベル1間接バッファ(IB1)60が、GPU12にグラフィックス・メモリ・パイプライン30の種々のステップの実行を指示するための一連の実行コマンドを含む。IB1 60内の各々の実行コマンドは、基本的に、レンダリングパイプラインの種々の態様についてのコマンドを含む1つ以上のレベル2間接バッファ(IB2)へのポインタ(pointer)である。このやり方で、2つ以上のレベルの構造が、グラフィックス・レンダリング・パイプラインを実行するために確立される。GPU12が、IB1 60内の各々の実行コマンドを順次に通過でき、IB1 60内の各々の実行は、IB2に保存されたコマンドの特定のスタック(stack)を指す。IB1およびIB2は、GPU12と一体のメモリであってよく、あるいはシステムメモリ10などのGPU12に対して外部のメモリであってよい。
[0065]IB1 60内のプリアンブル実行コマンドが、GPU12によって実行できるプリアンブルコマンドを含むプリアンブルIB2 62を指す。例えば、プリアンブルIB2 62は、GPU12のその静的な状態を初期化し、GPU12の初期レンダリング状態を設定するコマンドを含むことができる。GPUの静的状態は、特定のアプリケーションに基づいて変化しない設定を含む。一方、レンダリング状態は、特定のアプリケーションに基づいて変化しうるGPU設定を含む(例えば、OpenGLアプリケーション 対 Direct Xアプリケーション)。プリアンブルIB2内のコマンドの完了後に、制御はIB1 60に戻り、次の実行コマンドが実行される。
[0066]IB1 60における次の実行コマンドは、使用されているレンダリングモードのためのレンダーパス(render pass)を設定する。やはり、図5の例において、レンダリングモードは、ソフトウェアビニングを用いるビニング・レンダリング・モードである。次に、IB1 60内のロードビン実行コマンドが、ロード(load)IB2 66内のコマンドを指す。ソフトウェアビニングにおいては、特定のビンのためのデータが、GMEM14にロードされる(GMEMへロードする)。次いで、制御はIB1 60に戻り、レンダービン実行コマンドが、レンダリングIB2内のコマンドを指す。レンダリングIB2 68は、ロードされたビンの三角形を描画するための一連の状態コマンドおよび描画コマンドで構成される。各々の描画コマンドが、コマンドおよび/またはGPUハードウェアによって確立されたグラフィックス処理パイプライン30(例えば、ジオメトリ処理状態34、ラスタライゼーション状態36、および/またはピクセル処理パイプライン38を含む)に従って三角形を描くようにGPU12に指示する。レンダリングIB2 68に示されるとおり、各々の描画コマンドは、特定の三角形がビンにおいて実際に視認可能であるか否かを判断するために、視認性ストリーム(visibility stream)が使用されないことを示している。視認性ストリームは、「ハードウェア」ビニングを使用するビニング・レンダリング・モードにおいて生成され、図6に関連してさらに詳しく説明される。レンダリングIB2 68内の状態コマンドが、GPU12によって実行されるグラフィックス処理パイプラインの挙動(behavior)を左右する。例えば、状態コマンドは、色、ポリゴン(polygon)モード(例えば、ソリッド(solids)または線の代わりに点)、ブレンディング(オン/オフ)、デプステスト(オン/オフ)、テクスチャリング(オン/オフ)、カリング(culling)、クリッピング、および他の論理演算を変更することができる。レンダリングIB2 68に示されるとおり、状態コマンドは、三角形ごと(または、プリミティブごと)のやり方で発せられてよい。すなわち、コマンド「状態 Tri A」が、三角形Aを描画するときのGPU12の挙動を左右できる一方で、コマンド「状態 Tri B1」および「状態 Tri B2」が、三角形Bを描画するときのGPU12の挙動を左右できる。コマンド「状態 Tri B1」および「状態 Tri B2」は、単に各々の三角形について複数の状態コマンドが実行されうることを示しているにすぎない。
[0067]すべてのコマンドがレンダリングIB2 68において実行された後(例えば、すべての三角形が描画された後)で、制御はIB1 60に戻る。ビン保存実行コマンドが、レンダリングされたビンをGMEM14からメモリ(例えば、フレームバッファ15)に保存するコマンドを含むストアIB2 70へのポインタを含むことができる。次いで、レンダーパス(例えば、IB1 60に示されるとおりのレンダーパスの設定からビンの保存までの実行コマンド)が、1つ以上のフレームに関して各々のビン72について繰り返される。
[0068]図6が、「ハードウェア」ビニングを用いるビニング・レンダリング・モードを使用してシーンをレンダリングするための例示的なコマンド構造を示す概念図である。IB1 61における実行コマンドは、「ビニング」パスに関するコマンドを除き、図6のIB1 60の実行コマンドと同様である。「ビニング」パスが、ビン内の特定の三角形が最終的にレンダリングされるシーンにおいて実際に視認可能であるか否かを示す視認性ストリームを生成するために使用される。例えば、いくつかの三角形がシーン内の他の三角形の背後に位置し、いくつかのシナリオ(例えば、前方の三角形が不透明である(opaque)場合、またはブレンディングが使用されない場合)において視認できない可能性がある。ビン72のレンダリングに先立ち、IB1 61は、ビニングIB2 74内のコマンドを指すビニングパス実行コマンドを含むことができる。ビニングIB2 74は、簡略版のグラフィックスパイプライン(例えば、簡略版のレンダリングIB2 69)をGPU12に実行させるコマンドを含むが、ビン内の各々の三角形についての視認性ストリームを、三角形が最終的にレンダリングされるシーンにおいて視認可能であるか否かを判断するデプステスト(Zテスト)に基づいて更新するステップを追加する。
[0069]ビニングパスの目標は、現在のビンに交わる三角形を識別することにある。したがって、三角形が特定のビンに交わるか否かを識別するために、三角形の頂点の位置が判断される必要があるだけである。ビニングパスは、頂点の位置に影響を及ぼす命令群だけを含む簡略化されたバーテックスシェーダを利用する。例えば、カラー命令群、テクスチャ座標、および三角形のバーテックスの位置に影響を及ぼさない他の命令群が、ビニングパスに使用される簡略化されたバーテックスシェーダから取り除かれうる。また、ビニングパスは、各々の三角形のおおよそのデプスを判断するために、細かいラスタライゼーションよりもむしろ粗いラスタライゼーションを使用する。粗いラスタライゼーションは、細かいラスタライゼーションよりも低い精度で(例えば、より少数のビットを使用して)デプス値を計算する。三角形がビンにおいて視認可能であるか否かを判断するために、おおまかなデプス値で充分である。ピクセルシェーダは、ビニングパスにおいては使用されない。
[0070]次いで、ビニングパスは、粗いデプス値についてデプス値テストを利用し、三角形がビン内の他の三角形に関してビン内で視認可能であるか否かを判断する。このデプステストに基づき、視認性ストリームが更新される。視認性ストリームは、レンダリングされるビン内の特定の三角形が視認可能であるか否かを示すビット列であってよい(例えば、1が三角形が視認可能であることを示し、0が三角形が視認不可能であることを示す)。
[0071]レンダリングIB2 69内のコマンドは、視認性ストリームの使用を別にすれば、図5のレンダリングIB 68のコマンドと同様である。レンダリングIB2 69内の描画コマンド(例えば、Tri Aを描画する、Tri Bを描画する、Tri Cを描画するなど)が、ビニングパスによって生成された視認性ストリームを使用して、特定の三角形を描画する必要があるか否かを判断する。例えば、視認性ストリームによって視認可能でないと示される三角形について、描画が省略されうる。
[0072]ビニング・レンダリング・モードにおけるビンごとのフレームのレンダリングと対照的に、直接レンダリングは、フレーム全体をグラフィックスパイプラインの1回の通過(one pass)にてレンダリングする。直接レンダリングは、典型的には、グラフィックスメモリの量が限られているビニングベースのアーキテクチャにおいて実行される場合、より低速なシステムメモリを利用する。
[0073]図7が、直接レンダリングモードを使用してシーンをレンダリングするための例示的なコマンド構造を示す概念図である。直接レンダリングモードのためのコマンドは、図5のソフトウェアビニングのためのコマンドに類似するが、ビンごとのやり方でのレンダリングに代えて、フレーム全体が1回のパスでレンダリングされる。例えば、IB1 80における実行コマンドは、IB1 60における実行コマンドに類似するが、IB1 80における実行コマンドは、ビンのロード、レンダリング、および保存よりもむしろ、フレームをロード、レンダリング、および保存するそれぞれのIB2のコマンドを指す。より具体的には、IB1 80内のフレームロード実行コマンドは、フレームのデータをシステムメモリにロードするコマンド(システムメモリへロードする)を含むロードIB2 86を指す。IB1 80内のコマンドは、プリアンブル、プリアンブル/リストア(restore)、レンダーパスの設定、フレームのロード、フレームのレンダリング、およびフレームの保存を含むことができる。IB1 80におけるフレームレンダリング実行コマンドは、GPU12にフレーム内のプリミティブの描画を実行させる命令群を含むレンダリングIB2 88を指す。ソフトウェアビニングと同様に、直接レンダリングモードにおけるレンダリングは、ハードウェア・ビニング・パスまたは視認性ストリームを利用することがない。レンダリングIB2 88における描画コマンド(例えば、Tri Aを描画する、Tri Bを描画する、Tri Cを描画する)は、レンダリングされた三角形を保存するためにシステムメモリを利用すると考えられる。フレーム保存実行コマンドが、レンダリングされたフレームをシステムメモリから別のメモリ(例えば、フレームバッファ15)に保存するための命令群(システムメモリから保存する)を含むストアIB2 90を指している。
[0074]IB1 80のプリアンブル実行コマンドが、GPU12の静的状態および初期のレンダリング状態を確立するための命令群を含むプリアンブルIB2 82を指している。これらのコマンドは、図6のプリアンブルIB2 62のコマンドと同様に機能するが、ビニング・レンダリング・モードよりもむしろ直接レンダリングモードのためのレンダリング状態をセットアップする。
[0075]本開示の技法によれば、アプリケーション(例えば、図2のソフトウェアアプリケーション24)がシーンのレンダリングを始める前に、1つ以上のプロセッサ(例えば、CPU6)上で実行されるグラフィックスドライバ(例えば、グラフィックスドライバ7)が、望ましいレンダリングパスに関する発見的(heuristic)データに基づいて、レンダリングモードの決定(例えば、ビニングレンダリングと直接レンダリングとの間の決定)を行う。いくつかの技法においては、現在のレンダリングパスに関する発見的データは、以前のレンダリングパスから集められうる。しかしながら、この技法は、アプリケーションが新たなシーンのレンダリングの前にレンダリング技法を切り換える可能性があるため、レンダリングモードを決定するための最適なやり方でない場合もありうる。したがって、この技法は、適切なレンダリングモードへ切り換えるための新しいデータが充分に蓄積されるまで、非効率なレンダリングにつながる可能性がある。
[0076]さらに、過去のレンダリングに関する発見的データは、現在のシーンが以前のシーンとは異なる場合、現在のシーンにとって最適なレンダリングモードを、常にはもたらさない可能性がある。例えば、素早く切り換わるレンダリングモードを最適に使用するアプリケーションは、そのような発見的解析を使用すると、多数の誤った予測につながる可能性がある。理想的には、グラフィックスドライバが、所与のレンダリングターゲットについてレンダリングロードを判断し、レンダリングモードの決定を速やかに行うことができる。本開示は、レンダリングモードのより最適な決定のための技法およびレンダリングモード間で切り換えるための技法を提案する。
[0077]以下の技法は、任意のグラフィックス・アプリケーション・プログラム・インターフェイス(API)を使用するグラフィックス処理システムに適用可能であり、特にビニングレンダリングを利用するグラフィックスAPIに適している。そのようなAPIの例は、MicrosoftのDirectX9(DX9)、DX10、およびDX11、ならびにOpenGLおよびOpenGL ESなどのオープンソースのグラフィックスAPIを含む。
[0078]図8は、本開示の一例によるレンダリングコマンドパッチングを説明する概念図である。最初に、グラフィックス処理システム(例えば、図1のコンピュータデバイス2)が、特定のアプリケーションがビニングモードにおいて現在のレンダリングターゲット(例えば、1つ以上のフレーム)をより最適にレンダリングすると仮定する。特定のレンダリングモード(例えば、ビニングまたは直接レンダリング)の選択は、グラフィックスドライバ7によって処理されうる。ビニングが有効にされるとき、グラフィックスドライバ7は、所与のレンダリングターゲットについてのロード、保存、レンダリング、およびブロック転送(BLT)のコマンドのすべてを、フラッシュ(flush)が求められるまでバッチにまとめる(batch)。この文脈において、フラッシュ(flush)は、ドライバによってバッチにまとめられたレンダリングコマンドをハードウェア(例えば、GPU12)に送信することを意味する。ロード、保存、レンダリング、およびBLTのためのコマンドは、別々のバッファ(例えば、別々のIB2バッファ)に保存されうる。例えば、レンダリングコマンドは、ビニング・レンダリング・モードIB2 68に保存されうる。
[0079]ビニング・レンダリング・モードにおけるレンダリングコマンドは、高速なグラフィックメモリ(GMEM)にアクセスされうるように、特定のレジスタに書き込まれた専用のアドレスを使用する。グラフィックスドライバ7が、最初にすべてのレンダリングについてビニングが有効にされると仮定するため、システムメモリに対するGMEMの選択を有するすべてのレジスタが、GMEMアドレスを使用する。図8のビニング・レンダリング・モードIB2 68が、三角形の描画(Triを描画する)に関する一連のコマンドを示し、コマンド1、4、および5がGMEMアドレスを利用する。
[0080]レンダリングがフラッシュされるべき場合、グラフィックスドライバが、実行されようとしているすべてのレンダリングコマンドにアクセスする。本開示の技法によれば、グラフィックスドライバ7が、レンダリングコマンドを解析するように構成されてよく、1つ以上のレンダリング特性(すなわち、レンダリングパスに関する発見的データ)を考慮に入れることができる。そのようなレンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストが有効にされているか否かのインジケーション、使用されるシェーダの複雑さ、描画されたプリミティブの数、テクスチャリード(texture reads)の数、テクスチャリードのサイズ、および/または使用されるすべての表面のマイクロタイリングモード(micro−tiling mode)を含むことができる。
[0081]例えば、レンダリングターゲットのサイズに基づき、GPUドライバ7は、ビニングのオーバーヘッド(例えば、GMEMへのロード/保存サイクルおよびビニングパスを実行するための時間)がビニングのプラスの効果によってオフセットされるか否かを判断することができる。例えば、小さなレンダリングターゲット(例えば、16×16)は、たとえシステムメモリへの節約の場合でも、直接レンダリングモードにおいてより高速に実行できる。
[0082]別の例として、デプステストを利用しないグラフィックスパイプラインは、ビニング・レンダリング・モードの利点を利用しなくてもよい。典型的には、ビニングが使用されない場合、デプステストは、既存のデプス値を読み出し、テストを実行し、次いで新たなデプス値をシステムメモリ内のバッファに書き戻すために適用されなければならない。ビニングにおいては、デプステストのプロセスがGMEMにおいて行われ、それを「フリー(free)」にする(すなわち、きわめて高速であり、オーバーヘッド時間が最小限である)。したがって、特定のグラフィックスパイプラインについて有効にされたデプステストが存在しない場合、ビニング・レンダリング・モードは、デプステストに関係するいかなるメモリ帯域の節約ももたらさないと考えられる。したがって、デプステストが無効にされ、あるいは使用されていない場合、GPUドライバ7は、直接レンダリングモードが好ましいと判断することができる。
[0083]別の例として、ビニング・レンダリング・モードは、デプスの複雑さ(例えば、種々のデプスにおけるプリミティブ)および三角形の間のオーバーラップが存在する場合に、最大の利益をもたらす。描画されるプリミティブの数が少ないと、ビニング・レンダリング・モードからの利益も、小さくなりうる。したがって、GPUドライバ7は、描画すべきプリミティブの数が少ないときに、直接レンダリングモードが好ましいと判断することができる。同様に、GPUドライバ7は、多数のプリミティブが描画されるべき場合に、ビニング・レンダリング・モードが好ましいと判断することができる。
[0084]別の例として、テクスチャを実行するとき、システムメモリへの余分な保存およびシステムメモリからの余分な読み出しが、システムメモリの帯域幅に負の影響をもたらす。したがって、テクスチャリングの際には、ビニング・レンダリング・モードが、より迅速なメモリへのアクセスをもたらす(すなわち、大部分の保存および読み出しが、より高速なGMEMにおいて実行される)。描画されるシーンにおけるテクスチャ操作の数および頻度が、ビニング・レンダリング・モードからの利益を無駄にする可能性がある。すなわち、テクスチャ操作が少ないということが、ビニング・レンダリング・モードによってもたらす利益が少なく、代わりに直接レンダリングモードを使用すべきであることを示唆できる。
[0085]レンダリングコマンドの解析の結果は、上述した種々の特性のうちの1つ以上を例えば重み付けまたは重み付けなしのやり方で考慮することができる「スコア」として計算されうる。このスコアが所与のしきい値を下回る場合、直接レンダリングモードが使用される。このスコアが所与のしきい値を上回る場合、ビニング・レンダリング・モードが使用される。したがって、この技法は、現在のレンダリングモードを決定するための現在のレンダリングターゲットのジャスト・イン・タイム(JIT)の解析を提供する。過去のレンダリングパスの発見的解析は、不要である。しかしながら、過去のレンダリングパスの発見的解析は、現在のレンダリングターゲットの解析に代え、あるいは現在のレンダリングターゲットの解析と合わせて使用されうる。例えば、現在のレンダリングモードのJIT解析は、過去のレンダリングについて蓄積された統計量の発見的解析から決定されたレンダリングモードが無効である旨のインジケータとして使用されうる。
[0086]本開示の別の例によれば、レンダリングモードの決定(例えば、ビニング・レンダリング・モードと直接レンダリングモードとの間の決定)は、「ハードウェア」ビニングを利用するグラフィックス処理システムにおいてオーバードロートラッカー(overdraw tracker)を使用して行われうる。
[0087]図9は、本開示の一例によるオーバードロートラッキングを説明する概念図である。ビニング・レンダリング・モードは、大量のオーバードローが存在する場合に、直接レンダリングモードと比べて最も効果的である。オーバードローは、オーバーラップするいくつかのグラフィックスプリミティブが存在する場合に生じる。そのようなプリミティブをすべて描画することは、いくつかのプリミティブの一部分が最終的なシーンにおいて見えない(例えば、別の不透明なプリミティブの後方に位置する)可能性があるため、効率的でない可能性がある。「ハードウェア」ビニングは、(例えば、上述のとおりの視認性ストリームを生成することによって)フレームの特定のタイルにおいてオーバードローを減らすために使用されうる。
[0088]ビニングを利用するグラフィックスアーキテクチャにおいては、典型的には2つの段階が存在し、すなわち1)プリミティブを変換後の頂点の位置に基づいて画面に整列したビンに仕分けするビニング段階、および2)これらのビンの各々(すなわち、ビン内のプリミティブ)がレンダリングされるレンダリング段階が存在する。仕分けのステップに加えて、いくつかのグラフィックス処理アーキテクチャは、(例えば、いわゆる「ハードウェア」ビニングにおいて)プリミティブごとの視認性ストリームおよび領域に関連付けられた粗いデプス(Z)値も生成する。しかしながら、この「ハードウェア」ビニングが、ビンにおけるプリミティブの分布および関連のオーバードローについての直接的な情報を生み出すことができないことに、留意すべきである。本開示は、粗いZラスタライザと同じ粒度のオーバードロートラッカーを追加することを提案する(すなわち、ビニングIB2 94におけるコマンド)。例えば、各々のビンについてオーバードローの量を計算し、計算されたオーバードローの量に基づいてオーバードロートラッカーを更新するようにGPU12に指示するコマンド(例えば、「オーバードロー計算」および「オーバードロートラッカー更新」)を、ビニングIB2 94に追加されうる。
[0089]この「オーバードロー」は、各領域(ここで、領域は、ピクセル、ビンの一部分、ビン、または複数のビンであってよい)においてラスタライズされるプリミティブの間のオーバーラップを表し、したがってビニングレンダリングの使用の利益を表す領域ごとの整数値であってよい。グラフィックスドライバ7が、オーバードロー数にアクセスすることができ、オーバードロー数を使用してレンダリングモードの決定を行うことができる。次いで、この技法は、この値をビン内のすべての領域に集め、さらにはシーン内のすべてのビンに集めるように拡張されうる。これは、ソフトウェアアプリケーションおよび/またはドライバ(例えば、グラフィックスドライバ7)が、ビニングレンダリングが有益であるか否かについて(他の経験則よりも)速やかな判断を行うことを可能にする。さらに、これらの技法は、複雑なレンダリングのシナリオにおいて活動の領域を視覚化するためのデバッグツールとして使用されることもできる。
[0090]図10が、4つの16×16のビンにおいてオーバードローを計算する一例を示している。この例では、「オーバーラップ」が各々のピクセルについて最初に計算される。オーバーラップは、ピクセルに触れる2つ以上のプリミティブの数として定義される。ビン95および99のすべてのピクセルが、0というオーバーラップスコアを有すると考えられる一方で、例えばビン101のピクセル96は、2つの三角形がこのピクセルにあるため、1というオーバーラップスコアを有すると考えられる。「オーバードロー」数は、ビンについてのオーバーラップスコアの合計を、このビンのピクセルの総数で割り算したものと定義されうる(例えば、オーバードロー=(ピクセルごとのオーバーラップの合計)/(ピクセルの数))。図10に示した例では、ビン101が、30/16というオーバードロー数を有すると考えられる一方で、ビン95および99の両方は、0というオーバードロースコアを有すると考えられる。特定のしきい値を超えるオーバードロー数が、このオーバードロー数に関連付けられた領域についてビニング・レンダリング・モードが使用されるべきであることを示すことができる一方で、特定のしきい値を下回るオーバードロー数は、このオーバードロー数に関連付けられた領域について直接レンダリングモードが使用されるべきであることを示すことができる。
[0091]図8に戻ると、スコアに基づき(レンダリングコマンドおよび/またはオーバードロートラッカーの解析に基づき)、グラフィックスドライバ7が、最適なモードを決定する。より最適なレンダリングモードの決定と併せて、グラフィックスドライバ7は、GMEMアドレスを利用するすべてのビニング・レンダリング・コマンド(例えば、図8の例におけるコマンド1、4、および5)を探知するようにさらに構成されうる。グラフィックスドライバ7は、GMEMアドレスを使用するビニング・レンダリング・コマンドがシステム・メモリ・アドレスを使用するように変更されるよう、(例えば、システムメモリ10において)これらのコマンドの各々について対応するシステム・メモリ・アドレスを保存することができる。直接レンダリングがより最適なモードであると判断される場合、グラフィックスドライバ7は、GMEMアドレスをシステム・メモリ・アドレスで置き換えるようにビニング・レンダリング・モードIB2 68にパッチを当て、直接レンダリングモードIB2 88を生成することができる。このやり方で、直接レンダリングのためのレンダリングコマンドは、直接レンダリングモードIB2のコマンド構造の全体を作り直すことなく、生成されうる。最後に、フラッシュの時点において、グラフィックスドライバ7は、BLT IB2およびレンダリングIB2(この場合には、システム・メモリ・アドレスを使用するように変更されたレンダリングIB2)を実行するためのコマンドをIB1(例えば、図7のIB1 80)に追加し、GPU7はIB1の実行を開始するためにシグナリングされる。
[0092]本開示の別の例では、レンダリングに使用される各々のレジスタは、ハードウェアにて実装されうる。図11が、本開示のこの例によるレンダリングモードの選択を説明する概念図である。グローバル制御レジスタ102は、所与のレンダリングモードにどのレジスタのセット(例えば、ビニング・レンダリング・モード・レジスタ104または直接レンダリング・モード・レジスタ106)が使用されるかを制御するために使用されうる。ビニング・レンダリング・モード・レジスタ104は、デスティネーション表面情報(すなわち、ビン)、GMEMのアドレスレジスタ、および(ハードウェアベースのビニングレンダリングにおける)視認性ストリームの使用を処理する(handle)ことができる。直接レンダリング・モード・レジスタ106は、システムメモリへのアドレスを含むことができる。グローバル制御レジスタ102が、上述のように、例えばレンダリングモードのJIT解析に基づいて、レンダリングIB2 118のコマンドを配置するために上述のレジスタのうちのどのバージョンが使用されるかを制御する。グラフィックスドライバ7が、ビニング・レンダリング・モード・レジスタ104または直接レンダリング・モード・レジスタ106を選択するようにグローバル制御レジスタ102を制御することができる。上述のようにソフトウェアにてIB2にパッチを適用するよりもむしろ、この技法は、ハードウェアレジスタを使用する。グローバル制御レジスタ102は、IB1に位置してもよい。
[0093]本開示の別の例では、コマンドバッファのパッチ適用のための技法が提案される。図12が、本開示のこの例によるレンダリングコマンドパッチングを説明する概念図である。この例の提案される技法は、ビニング・レンダリング・モードから直接レンダリングモードへ切り換える際のコマンドバッファのパッチ適用に使用されうる。しかしながら、以下の技法は、コマンドバッファのパッチ適用が望まれる任意の状況において利用されうる。例えば、コマンドは、グラフィックスメモリの仮想化をサポートし、より低いMIPにおいてリソース詳細レベル(LOD)のMIPレベルを変更し、あるいはコマンドバッファの実行前にコレクトネススキャナ(correctness scanner)を実行するためにパッチが適用されうる。ビニング・レンダリング・モードから直接レンダリングモードへ切り換えるためのコマンドバッファへのパッチ適用に必要なCPUサイクルが、特定のシナリオにおいては高価につく可能性がある。この例は、CPUオーバーヘッドの軽減を目的とする。
[0094]一般に、この技法は、コマンドバッファにパッチを適用するために(GPUドライバ7の代わりに)GPU12を使用することによって、CPUのオーバーヘッドを最小限にするやり方を、グラフィックスドライバ7に提供する。図8の例において、グラフィックスドライバ7がビニングと直接レンダリングとの間で切り換える場合に、グラフィックスドライバ7は、IB1への実行コマンドの追加に先立って、すべてのIB2コマンドを探知し、パッチを適用する。この例は、パッチリスト(例えば、図8のシステムメモリ10に示されているパッチリスト)を構築する代わりに、グラフィックスドライバ7が、別のIB2のコマンド(例えば、任意の全体操作コマンド)を変更する書き込みコマンドを含む別のパッチングIB2 98を作成することを提案する。例えば、書き込みコマンドのデスティネーションが、グラフィックスドライバ7によって直接レンダリングモードが選択される場合にシステム・メモリ・アドレスを使用するための変更を必要とするビニング・レンダリング・モードIB2 68内の場所であってよい。グラフィックスドライバ7は、コマンドをフラッシュ(flush)しようとするとき、直接レンダリングモードに入るために「パッチングIB2」のコマンドを実行するか、あるいはパッチングIB2を省略してビニングモードを継続するかの選択を有する。グラフィックスドライバ7は、IB1 80の実行コマンドに実行コマンド(パッチレンダーIB2)を加えることによってパッチングIB2 98の実行を達成できる。このやり方で、GPU12は、IB2 68のレンダリングコマンドを実行する前にIB2 98のパッチングコマンドを実行する。このように、CPU6にパッチを作成させるよりもむしろ、GPU12自身が、レンダリングモードの切り換えを達成するためのレンダリングIB2 68へのパッチを作成する。
[0095]図13は、本開示の一例による方法を説明するフローチャートである。図13の方法は、コンピュータデバイス2に存在するCPU6、GPU12、ならびに/あるいは任意の他のハードウェア、ファームウェア、ソフトウェア要素、またはこれらの組み合わせによって実行されうる。CPU6は、フレームのレンダリングのためのレンダリングコマンドを生成するように構成され得、ここでレンダリングコマンドは、ビニング・レンダリング・モードのためのレンダリングコマンドである(1302)。CPU6は、グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを探知するようにさらに構成されうる(1304)。
[0096]次いで、CPU6は、レンダリング特性に基づいて、フレームのために、複数のレンダリングモードのうちの1つを決定することができ、ここで複数のレンダリングモードはビニング・レンダリング・モードおよび直接レンダリングモードを含む(1306)。レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含む。複数のレンダリングモードのうちの1つを決定することは、現フレームのレンダリング特性に基づいて複数のレンダリングモードのうちの1つを決定することを含むことができる。他の例では、複数のレンダリングモードのうちの1つを決定することが、現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて複数のレンダリングモードのうちの1つを決定することを含むことができる。
[0097]次いで、CPU6は、決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを、システム・メモリ・アドレスを使用するように変更することができる(1308)。決定されたレンダリングモードがビニング・レンダリング・モードである場合には、CPU6は、レンダリングコマンドを変更しない。
[0098]さらに、CPU6は、実行コマンドを第1のバッファに保存し、レンダリングコマンドを第2のバッファに保存するように構成されうる。実行コマンドが、レンダリングコマンドを指す。レンダリングコマンドを変更すること(1308)は、第2のバッファにパッチを適用することによってグラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えることを含むことができる。さらに、CPU6は、第2のバッファ内のレンダリングコマンドを指す実行コマンドを第1のバッファに追加することができる。次いで、GPU12が、第1のバッファ内の実行コマンドを実行することができる。
[0099]別の例では、CPU6は、ビニングモード特有の情報を第1のレジスタに保存し、直接レンダリングモード特有の情報を第2のレジスタに保存し、決定されたレンダリングモードに基づいて第1のレジスタおよび第2のレジスタの間で選択を行うためにグローバルレジスタを利用するように構成されうる。ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、グラフィックス・メモリ・アドレス、および視認性ストリームの使用のうちの少なくとも1つを含み、直接レンダリングモード特有の情報は、システム・メモリ・アドレスを含む。
[0100]図14は、本開示の一例による方法を説明するフローチャートである。図14の方法は、コンピュータデバイス2に存在するCPU6、GPU12、ならびに/あるいは任意の他のハードウェア、ファームウェア、ソフトウェア要素、またはこれらの組み合わせによって実行されうる。CPU6は、シーンのプリミティブについてのビニング操作を実行し、ここでプリミティブがビンに分割され(1402)、シーンの一領域におけるプリミティブのオーバードローの量を表すオーバードロー数を計算し(1404)、計算されたオーバードロー数に基づいてレンダリングモードを決定する(1406)ように構成される。オーバードロー数が何らかのしきい値よりも大きい場合、ビニング・レンダリング・モードは、レンダリングモードとして決定されうる。オーバードロー数が何らかのしきい値よりも小さい場合、直接レンダリングモードが、レンダリングモードとして決定されうる。次いで、GPU12が、決定されたレンダリングモードに従ってシーンをレンダリングすることができる(1408)。
[0101]オーバードロー数は、ビンの一領域について、複数のビン上で、および/またはシーン全体について計算されうる。ビンについてオーバードロー数を計算(1404)する1つの例示的な技法は、ビン内の各ピクセルについてオーバーラップ値を計算し、ビン内の各ピクセルについて計算された各々のオーバーラップ値を合計して総オーバーラップ値を生成し、総オーバーラップ値をビン内のピクセルの数で割り算することによってオーバードロー数を生成することを含むことができる。オーバーラップ値は、ピクセルに触れる2つ以上のプリミティブの数として定義される。
[0102]図15が、本開示の一例による方法を説明するフローチャートである。図15の方法は、コンピュータデバイス2に存在するCPU6、GPU12、ならびに/あるいは任意の他のハードウェア、ファームウェア、ソフトウェア要素、またはこれらの組み合わせによって実行されうる。CPU6は、グラフィックス操作を実行するための操作コマンドを第1のバッファに保存し(1502)、書き込みコマンドを第2のバッファに保存し、ここで書き込みコマンドは第1のバッファ内の操作コマンドを変更して変更された操作コマンドを生成する(1504)ように構成されうる。操作コマンドおよび書き込みコマンドは、グラフィックスプロセッサによって実行可能である。さらに、CPU6は、第2のバッファ内の書き込みコマンドの実行を生じさせ(1506)、第2のバッファ内の書き込みコマンドの実行を生じさせた後で第1のバッファ内の変更された操作コマンドの実行を生じさせる(1508)ように構成されうる。一例においては、操作コマンドが、ビニング・レンダリング・モードのためのレンダリングコマンドを含み、書き込みコマンドが、ビニング・レンダリング・モードのためのレンダリングコマンドを直接レンダリングモードのためのレンダリングコマンドに変更する。
[0103]図16が、図15に示した一般的な技法を利用する例示的な方法を説明するフローチャートである。図16の方法は、コンピュータデバイス2に存在するCPU6、GPU12、ならびに/あるいは任意の他のハードウェア、ファームウェア、またはソフトウェア要素によって実行されうる。CPU6は、フレームをレンダリングするための操作コマンドを生成し、ここで操作コマンドはビニング・レンダリング・モードのためのものである(1602)、グラフィックス・メモリ・アドレスを使用する操作コマンドを探知する(1604)ように構成されうる。さらに、CPU6は、書き込みコマンドを生成し、ここで書き込みコマンドはグラフィックス・メモリ・アドレスを使用する操作コマンドを変更してシステム・メモリ・アドレスを使用する操作コマンドにする(1606)ように構成されうる。CPU6は、操作コマンドを第1のバッファに保存し(1608)、書き込みコマンドを第2のバッファに保存する(1610)。
[0104]さらに、CPUは、レンダリング特性に基づいて、フレームについて、複数のレンダリングモードのうちの1つを決定し、ここで複数のレンダリングモードはビニング・レンダリング・モードおよび直接レンダリングモードを含む(1612)ように構成されうる。レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含むことができる。複数のレンダリングモードのうちの1つを決定することは、現フレームのレンダリング特性に基づいて複数のレンダリングモードのうちの1つを決定することを含むことができる。他の例では、複数のレンダリングモードのうちの1つを決定することが、現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて複数のレンダリングモードのうちの1つを決定することを含むことができる。
[0105]さらに、CPU6は、決定されたレンダリングモードが直接レンダリングモードである場合に、第2のバッファ内の書き込みコマンドの(例えば、GPU12による)実行を生じさせる(1614)ように構成されうる。
[0106]1つ以上の例において、上述の機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせにて実装されうる。ソフトウェアにて実装される場合、これらの機能は、1つ以上の命令群またはコードとして、非一時的なコンピュータ読取可能な媒体を備える製造物に格納されうる。コンピュータ読取可能な媒体は、コンピュータデータ記憶媒体を含むことができる。データ記憶媒体は、本開示において記述された技法を実装するための命令群、コード、および/または、データ構造を取得するために1または複数のコンピュータまたは1または複数のプロセッサによってアクセスされうる任意の利用可能な媒体でありうる。例として、これらに限られるわけではないが、そのようなコンピュータ読取可能な媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、Flashメモリ、あるいは所望のプログラムコードを命令群またはデータ構造の形態で搬送または保存するために使用され得、コンピュータによるアクセスが可能である任意の他の媒体を備えることができる。本明細書において使用されるとき、ディスク(diskおよびdisc)は、コンパクトディスク(CD)、レーザディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびBlu−ray(登録商標)ディスクを含み、ここでディスク(disk)が、通常はデータを磁気的に再生する一方で、ディスク(disc)は、データをレーザで光学的に再生する。上記の組み合わせもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
[0107]コードは、1つ以上のDSP、汎用マイクロプロセッサ、ASIC、FPGA、あるいは他の同等の論理集積回路または個別な論理回路など、1つ以上のプロセッサによって実行されうる。さらに、いくつかの態様においては、本明細書に記載の機能は、専用のハードウェアおよび/またはソフトウェアモジュールにおいて提供されうる。さらに、これら技法は、1または複数の回路または論理要素で完全に実装されうる。
[0108]本開示の技法は、無線ハンドセット、集積回路(IC)、またはICのセット(例えば、チップセット)を含む種々さまざまなデバイスまたは装置において実装されうる。さまざまな構成要素、モジュール、またはユニットは、本開示では、開示された技法を実行するように構成されたデバイスの機能態様を強調するように記載されているが、異なるハードウェア・ユニットによる実現を必ずしも必要とするわけではない。むしろ、前述されたように、さまざまなユニットは、適切なソフトウェアおよび/またはハードウェアと連携する、前述されたような1または複数のプロセッサを含む共通のハードウェア・ユニットの集合によって提供されうるか、コーデック・ハードウェア・ユニットに結合されうる。
[0109]さまざまな例が記載された。これらの例およびその他の例は、以下の特許請求の範囲の範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
フレームをレンダリングするためのレンダリングコマンドを生成することであって、前記レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成することと、
グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを探知することと、
レンダリング特性に基づいて、前記フレームについて、複数のレンダリングモードのうちの1つを決定することであって、前記複数のレンダリングモードは前記ビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定することと、
前記決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを、システム・メモリ・アドレスを使用するように変更することと
を備えるグラフィックス処理の方法。
[C2]
前記決定されたレンダリングモードが前記ビニング・レンダリング・モードである場合に、前記レンダリングコマンドを変更しないこと
をさらに備えるC1に記載の方法。
[C3]
実行コマンドを第1のバッファに保存することと、
前記レンダリングコマンドを第2のバッファに保存することと
をさらに備え、
前記実行コマンドは、前記レンダリングコマンドを指し、
前記レンダリングコマンドを変化させることは、グラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えるために前記第2のバッファにパッチを適用することを備えるC2に記載の方法。
[C4]
前記第2のバッファ内の前記レンダリングコマンドを指す実行コマンドを前記第1のバッファに追加することと、
前記第1のバッファ内の前記実行コマンドを実行することと
をさらに備えるC3に記載の方法。
[C5]
前記レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含むC1に記載の方法。
[C6]
前記複数のレンダリングモードのうちの1つを決定することは、現フレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定することをさらに備えるC5に記載の方法。
[C7]
前記複数のレンダリングモードのうちの1つを決定することは、現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定することをさらに備えるC5に記載の方法。
[C8]
ビニングモード特有の情報を第1のレジスタに保存することと、
直接レンダリングモード特有の情報を第2のレジスタに保存することと、
前記レンダリングコマンドを変更するために、前記決定されたレンダリングモードに基づいて、前記第1のレジスタと前記第2のレジスタとの間の選択を行うために、グローバルレジスタを利用することと
をさらに備えるC1に記載の方法。
[C9]
前記ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、前記グラフィックス・メモリ・アドレス、および視認性ストリームの使用のうちの少なくとも1つを含み、前記直接レンダリングモード特有の情報は、前記システム・メモリ・アドレスを含むC8に記載の方法。
[C10]
グラフィックス処理のために構成された装置であって、
フレームをレンダリングするためのレンダリングコマンドを生成するための手段であって、前記レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成するための手段と、
グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを探知するための手段と、
レンダリング特性に基づいて、前記フレームについて、複数のレンダリングモードのうちの1つを決定するための手段であって、前記複数のレンダリングモードは前記ビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定するための手段と、
前記決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを、システム・メモリ・アドレスを使用するように変更するための手段と
を備える装置。
[C11]
前記決定されたレンダリングモードが前記ビニング・レンダリング・モードである場合に、前記レンダリングコマンドを変更しないための手段
をさらに備えるC10に記載の装置。
[C12]
実行コマンドを第1のバッファに保存するための手段と、
前記レンダリングコマンドを第2のバッファに保存するための手段と
をさらに備え、
前記実行コマンドは、前記レンダリングコマンドを指し、
前記レンダリングコマンドを変更することは、グラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えるために前記第2のバッファにパッチを適用することを備えるC11に記載の装置。
[C13]
前記第2のバッファ内の前記レンダリングコマンドを指す実行コマンドを前記第1のバッファに追加するための手段と、
前記第1のバッファ内の前記実行コマンドを実行するための手段と
をさらに備えるC12に記載の装置。
[C14]
前記レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含むC10に記載の装置。
[C15]
前記複数のレンダリングモードのうちの1つを決定するための前記手段は、現フレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定するための手段をさらに備えるC14に記載の装置。
[C16]
前記複数のレンダリングモードのうちの1つを決定するための前記手段は、現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定するための手段をさらに備えるC14に記載の装置。
[C17]
ビニングモード特有の情報を第1のレジスタに保存するための手段と、
直接レンダリングモード特有の情報を第2のレジスタに保存するための手段と、
前記レンダリングコマンドを変更するために、前記決定されたレンダリングモードに基づいて、前記第1のレジスタと前記第2のレジスタとの間の選択を行うために、グローバルレジスタを利用するための手段と
をさらに備えるC10に記載の装置。
[C18]
前記ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、前記グラフィックス・メモリ・アドレス、および視認性ストリームの使用のうちの少なくとも1つを含み、前記直接レンダリングモード特有の情報は、前記システム・メモリ・アドレスを含むC17に記載の装置。
[C19]
グラフィックス処理のために構成された装置であって、
フレームをレンダリングするためのレンダリングコマンドを生成することであった、前記レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成することと、
グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを探知することと、
レンダリング特性に基づいて、前記フレームについて、複数のレンダリングモードのうちの1つを決定することであって、前記複数のレンダリングモードは前記ビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定することと、
前記決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを、システム・メモリ・アドレスを使用するように変更することと
を行うように構成された1つ以上のプロセッサを備える装置。
[C20]
前記1つ以上のプロセッサが、
前記決定されたレンダリングモードが前記ビニング・レンダリング・モードである場合に、前記レンダリングコマンドを変更しない
ようにさらに構成されたC19に記載の装置。
[C21]
前記1つ以上のプロセッサが、
実行コマンドを第1のバッファに保存し、
前記レンダリングコマンドを第2のバッファに保存する
ようにさらに構成され、
前記実行コマンドは、前記レンダリングコマンドを指し、
前記レンダリングコマンドを変更することは、グラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えるように前記第2のバッファにパッチを適用することを備えるC20に記載の装置。
[C22]
前記1つ以上のプロセッサが、前記第2のバッファ内の前記レンダリングコマンドを指す実行コマンドを前記第1のバッファに追加するようにさらに構成され、
前記装置が、前記第1のバッファ内の前記実行コマンドを実行するように構成されたグラフィックスプロセッサをさらに備えるC21に記載の装置。
[C23]
前記レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含むC19に記載の装置。
[C24]
前記1つ以上のプロセッサが、現フレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定するようにさらに構成されるC23に記載の装置。
[C25]
前記1つ以上のプロセッサが、現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定するようにさらに構成されたC23に記載の装置。
[C26]
前記1つ以上のプロセッサが、
ビニングモード特有の情報を第1のレジスタに保存し、
直接レンダリングモード特有の情報を第2のレジスタに保存し、
前記レンダリングコマンドを変更するために、前記決定されたレンダリングモードに基づいて、前記第1のレジスタと前記第2のレジスタとの間の選択を行うために、グローバルレジスタを利用する
ようにさらに構成されたC19に記載の装置。
[C27]
前記ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、前記グラフィックス・メモリ・アドレス、および視認性ストリームの使用のうちの少なくとも1つを含み、前記直接レンダリングモード特有の情報は、前記システム・メモリ・アドレスを含むC26に記載の装置。
[C28]
前記1つ以上のプロセッサが、モバイルデバイス内にあるC19に記載の装置。
[C29]
命令群を格納しているコンピュータ読取可能な記憶媒体であって、
前記命令群が、実行されたときに、グラフィックス処理のために構成されたデバイスの1つ以上のプロセッサに、
フレームをレンダリングするためのレンダリングコマンドを生成することであって、前記レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成すること、
グラフィックス・メモリ・アドレスを使用するレンダリングコマンドを探知すること、
レンダリング特性に基づいて、前記フレームについて、複数のレンダリングモードのうちの1つを決定することであって、前記複数のレンダリングモードは前記ビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定すること、および
前記決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを、システム・メモリ・アドレスを使用するように変更すること
を実行させるコンピュータ読取可能な記憶媒体。
[C30]
前記命令群が、前記1つ以上のプロセッサに、
前記決定されたレンダリングモードが前記ビニング・レンダリング・モードである場合に、前記レンダリングコマンドを変更しないこと
をさらに実行させるC29に記載のコンピュータ読取可能な記憶媒体。
[C31]
前記命令群が、前記1つ以上のプロセッサに、
実行コマンドを第1のバッファに保存すること、および
前記レンダリングコマンドを第2のバッファに保存すること
をさらに実行させ、
前記実行コマンドは、前記レンダリングコマンドを指し、
前記レンダリングコマンドを変更することは、グラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えるために前記第2のバッファにパッチを適用することを備えるC30に記載のコンピュータ読取可能な記憶媒体。
[C32]
前記命令群が、前記1つ以上のプロセッサに、
前記第2のバッファ内の前記レンダリングコマンドを指す実行コマンドを前記第1のバッファに追加すること、および
前記第1のバッファ内の前記実行コマンドをグラフィックスプロセッサに実行させること
をさらに実行させるC31に記載のコンピュータ読取可能な記憶媒体。
[C33]
前記レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含むC29に記載のコンピュータ読取可能な記憶媒体。
[C34]
前記命令群が、前記1つ以上のプロセッサに、
現フレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定すること
をさらに実行させるC33に記載のコンピュータ読取可能な記憶媒体。
[C35]
前記命令群が、前記1つ以上のプロセッサに、
現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定すること
をさらに実行させるC33に記載のコンピュータ読取可能な記憶媒体。
[C36]
前記命令群が、前記1つ以上のプロセッサに、
ビニングモード特有の情報を第1のレジスタに保存すること、
直接レンダリングモード特有の情報を第2のレジスタに保存すること、および
前記レンダリングコマンドを変更するために、前記決定されたレンダリングモードに基づいて、前記第1のレジスタと前記第2のレジスタとの間の選択を行うために、グローバルレジスタを利用すること
をさらに実行させるC29に記載のコンピュータ読取可能な記憶媒体。
[C37]
前記ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、グラフィックス・メモリ・アドレス、および視認性ストリームの使用のうちの少なくとも1つを含み、前記直接レンダリングモード特有の情報は、システム・メモリ・アドレスを含むC36に記載のコンピュータ読取可能な記憶媒体。

Claims (33)

  1. フレームをレンダリングするためのレンダリングコマンドを生成することであって、前記レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成することと、
    グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを探知することと、
    レンダリング特性に基づいて、前記フレームについて、複数のレンダリングモードのうちの1つを決定することであって、前記複数のレンダリングモードは前記ビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定することと、
    前記決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを、システム・メモリ・アドレスを使用するように変更することと
    を備えるグラフィックス処理の方法。
  2. 前記決定されたレンダリングモードが前記ビニング・レンダリング・モードである場合に、前記レンダリングコマンドを変更しないこと
    をさらに備える請求項1に記載の方法。
  3. 実行コマンドを第1のバッファに保存することと、
    前記レンダリングコマンドを第2のバッファに保存することと
    をさらに備え、
    前記実行コマンドは、前記レンダリングコマンドを指し、
    前記レンダリングコマンドを変更することは、グラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えるように前記レンダリングコマンドを変更することを備える請求項2に記載の方法。
  4. 前記第2のバッファ内の前記レンダリングコマンドを指す実行コマンドを前記第1のバッファに追加することと、
    前記第1のバッファ内の前記実行コマンドを実行することと
    をさらに備える請求項3に記載の方法。
  5. 前記レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含む請求項1に記載の方法。
  6. 前記複数のレンダリングモードのうちの1つを決定することは、現フレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定することをさらに備える請求項5に記載の方法。
  7. 前記複数のレンダリングモードのうちの1つを決定することは、現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定することをさらに備える請求項5に記載の方法。
  8. ビニングモード特有の情報を第1のレジスタに保存することと、前記ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、グラフィックス・メモリ・アドレス、および視認性ストリームが使用されているか否かのうちの少なくとも1つを含む
    直接レンダリングモード特有の情報を第2のレジスタに保存することと、前記直接レンダリングモード特有の情報は、システム・メモリ・アドレスを含む
    前記レンダリングコマンドを変更するために、前記決定されたレンダリングモードに基づいて、前記第1のレジスタと前記第2のレジスタとの間の選択を行うために、グローバルレジスタを利用することと
    をさらに備える請求項1に記載の方法。
  9. グラフィックス処理のために構成された装置であって、
    フレームをレンダリングするためのレンダリングコマンドを生成するための手段であって、前記レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成するための手段と、
    グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを探知するための手段と、
    レンダリング特性に基づいて、前記フレームについて、複数のレンダリングモードのうちの1つを決定するための手段であって、前記複数のレンダリングモードは前記ビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定するための手段と、
    前記決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを、システム・メモリ・アドレスを使用するように変更するための手段と
    を備える装置。
  10. 前記決定されたレンダリングモードが前記ビニング・レンダリング・モードである場合に、前記レンダリングコマンドを変更しないための手段
    をさらに備える請求項に記載の装置。
  11. 実行コマンドを第1のバッファに保存するための手段と、
    前記レンダリングコマンドを第2のバッファに保存するための手段と
    をさらに備え、
    前記実行コマンドは、前記レンダリングコマンドを指し、
    前記レンダリングコマンドを変更することは、グラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えるように前記レンダリングコマンドを変更することを備える請求項10に記載の装置。
  12. 前記第2のバッファ内の前記レンダリングコマンドを指す実行コマンドを前記第1のバッファに追加するための手段と、
    前記第1のバッファ内の前記実行コマンドを実行するための手段と
    をさらに備える請求項11に記載の装置。
  13. 前記レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含む請求項に記載の装置。
  14. 前記複数のレンダリングモードのうちの1つを決定するための前記手段は、現フレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定するための手段をさらに備える請求項13に記載の装置。
  15. 前記複数のレンダリングモードのうちの1つを決定するための前記手段は、現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定するための手段をさらに備える請求項13に記載の装置。
  16. ビニングモード特有の情報を第1のレジスタに保存するための手段と、前記ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、グラフィックス・メモリ・アドレス、および視認性ストリームが使用されているか否かのうちの少なくとも1つを含む
    直接レンダリングモード特有の情報を第2のレジスタに保存するための手段と、前記直接レンダリングモード特有の情報は、システム・メモリ・アドレスを含む
    前記レンダリングコマンドを変更するために、前記決定されたレンダリングモードに基づいて、前記第1のレジスタと前記第2のレジスタとの間の選択を行うために、グローバルレジスタを利用するための手段と
    をさらに備える請求項に記載の装置。
  17. グラフィックス処理のために構成された装置であって、
    フレームをレンダリングするためのレンダリングコマンドを生成することであっ、前記レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成することと、
    グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを探知することと、
    レンダリング特性に基づいて、前記フレームについて、複数のレンダリングモードのうちの1つを決定することであって、前記複数のレンダリングモードは前記ビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定することと、
    前記決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを、システム・メモリ・アドレスを使用するように変更することと
    を行うように構成された1つ以上のプロセッサを備える装置。
  18. 前記1つ以上のプロセッサが、
    前記決定されたレンダリングモードが前記ビニング・レンダリング・モードである場合に、前記レンダリングコマンドを変更しない
    ようにさらに構成された請求項17に記載の装置。
  19. 前記1つ以上のプロセッサが、
    実行コマンドを第1のバッファに保存し、
    前記レンダリングコマンドを第2のバッファに保存する
    ようにさらに構成され、
    前記実行コマンドは、前記レンダリングコマンドを指し、
    前記レンダリングコマンドを変更することは、グラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えるように前記レンダリングコマンドを変更することを備える請求項18に記載の装置。
  20. 前記1つ以上のプロセッサが、前記第2のバッファ内の前記レンダリングコマンドを指す実行コマンドを前記第1のバッファに追加するようにさらに構成され、
    前記装置が、前記第1のバッファ内の前記実行コマンドを実行するように構成されたグラフィックスプロセッサをさらに備える請求項19に記載の装置。
  21. 前記レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含む請求項17に記載の装置。
  22. 前記1つ以上のプロセッサが、現フレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定するようにさらに構成される請求項21に記載の装置。
  23. 前記1つ以上のプロセッサが、現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定するようにさらに構成された請求項21に記載の装置。
  24. 前記1つ以上のプロセッサが、
    ビニングモード特有の情報を第1のレジスタに保存し、前記ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、グラフィックス・メモリ・アドレス、および視認性ストリームが使用されているか否かのうちの少なくとも1つを含む
    直接レンダリングモード特有の情報を第2のレジスタに保存し、前記直接レンダリングモード特有の情報は、システム・メモリ・アドレスを含む
    前記レンダリングコマンドを変更するために、前記決定されたレンダリングモードに基づいて、前記第1のレジスタと前記第2のレジスタとの間の選択を行うために、グローバルレジスタを利用する
    ようにさらに構成された請求項17に記載の装置。
  25. 前記1つ以上のプロセッサが、モバイルデバイス内にある請求項17に記載の装置。
  26. 命令群を格納しているコンピュータ読取可能な記憶媒体であって、
    前記命令群が、実行されたときに、グラフィックス処理のために構成されたデバイスの1つ以上のプロセッサに、
    フレームをレンダリングするためのレンダリングコマンドを生成することであって、前記レンダリングコマンドはビニング・レンダリング・モードのためのものである、生成すること、
    グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを探知すること、
    レンダリング特性に基づいて、前記フレームについて、複数のレンダリングモードのうちの1つを決定することであって、前記複数のレンダリングモードは前記ビニング・レンダリング・モードおよび直接レンダリングモードを含む、決定すること、および
    前記決定されたレンダリングモードが直接レンダリングモードである場合に、グラフィックス・メモリ・アドレスを使用する前記レンダリングコマンドを、システム・メモリ・アドレスを使用するように変更すること
    を実行させるコンピュータ読取可能な記憶媒体。
  27. 前記命令群が、前記1つ以上のプロセッサに、
    前記決定されたレンダリングモードが前記ビニング・レンダリング・モードである場合に、前記レンダリングコマンドを変更しないこと
    をさらに実行させる請求項26に記載のコンピュータ読取可能な記憶媒体。
  28. 前記命令群が、前記1つ以上のプロセッサに、
    実行コマンドを第1のバッファに保存すること、および
    前記レンダリングコマンドを第2のバッファに保存すること
    をさらに実行させ、
    前記実行コマンドは、前記レンダリングコマンドを指し、
    前記レンダリングコマンドを変更することは、グラフィックス・メモリ・アドレスをシステム・メモリ・アドレスで置き換えるように前記レンダリングコマンドを変更することを備える請求項27に記載のコンピュータ読取可能な記憶媒体。
  29. 前記命令群が、前記1つ以上のプロセッサに、
    前記第2のバッファ内の前記レンダリングコマンドを指す実行コマンドを前記第1のバッファに追加すること、および
    前記第1のバッファ内の前記実行コマンドをグラフィックスプロセッサに実行させること
    をさらに実行させる請求項28に記載のコンピュータ読取可能な記憶媒体。
  30. 前記レンダリング特性は、レンダリングターゲットのサイズおよびタイプ、デプステストのステータス、シェーダの複雑さ、描画されるプリミティブの数、テクスチャリードの数、テクスチャのサイズ、およびマイクロタイリングモードのうちの少なくとも1つを含む請求項26に記載のコンピュータ読取可能な記憶媒体。
  31. 前記命令群が、前記1つ以上のプロセッサに、
    現フレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定すること
    をさらに実行させる請求項30に記載のコンピュータ読取可能な記憶媒体。
  32. 前記命令群が、前記1つ以上のプロセッサに、
    現フレームおよび以前にレンダリングされたフレームのレンダリング特性に基づいて前記複数のレンダリングモードのうちの1つを決定すること
    をさらに実行させる請求項30に記載のコンピュータ読取可能な記憶媒体。
  33. 前記命令群が、前記1つ以上のプロセッサに、
    ビニングモード特有の情報を第1のレジスタに保存すること、前記ビニングモード特有の情報は、デスティネーション表面情報を処理するレジスタアドレス、グラフィックス・メモリ・アドレス、および視認性ストリームが使用されているか否かのうちの少なくとも1つを含む
    直接レンダリングモード特有の情報を第2のレジスタに保存すること、前記直接レンダリングモード特有の情報は、システム・メモリ・アドレスを含む、および
    前記レンダリングコマンドを変更するために、前記決定されたレンダリングモードに基づいて、前記第1のレジスタと前記第2のレジスタとの間の選択を行うために、グローバルレジスタを利用すること
    をさらに実行させる請求項26に記載のコンピュータ読取可能な記憶媒体。
JP2014544747A 2011-11-30 2012-11-07 グラフィックス処理における直接レンダリングとビニングとの間の切り換え Expired - Fee Related JP5847960B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161565397P 2011-11-30 2011-11-30
US61/565,397 2011-11-30
US13/553,624 US8830246B2 (en) 2011-11-30 2012-07-19 Switching between direct rendering and binning in graphics processing
US13/553,624 2012-07-19
PCT/US2012/063949 WO2013081789A1 (en) 2011-11-30 2012-11-07 Switching between direct rendering and binning in graphics processing

Publications (2)

Publication Number Publication Date
JP2015506018A JP2015506018A (ja) 2015-02-26
JP5847960B2 true JP5847960B2 (ja) 2016-01-27

Family

ID=48466428

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014544746A Expired - Fee Related JP5866457B2 (ja) 2011-11-30 2012-11-07 オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替
JP2014544747A Expired - Fee Related JP5847960B2 (ja) 2011-11-30 2012-11-07 グラフィックス処理における直接レンダリングとビニングとの間の切り換え

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014544746A Expired - Fee Related JP5866457B2 (ja) 2011-11-30 2012-11-07 オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替

Country Status (7)

Country Link
US (3) US9117302B2 (ja)
EP (2) EP2786350B1 (ja)
JP (2) JP5866457B2 (ja)
KR (1) KR101615840B1 (ja)
CN (2) CN103959337B (ja)
IN (1) IN2014CN03595A (ja)
WO (3) WO2013081789A1 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9117302B2 (en) 2011-11-30 2015-08-25 Qualcomm Incorporated Switching between direct rendering and binning in graphics processing using an overdraw tracker
US9087410B2 (en) * 2013-01-17 2015-07-21 Qualcomm Incorporated Rendering graphics data using visibility information
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US11487673B2 (en) 2013-03-14 2022-11-01 Nvidia Corporation Fault buffer for tracking page faults in unified virtual memory system
US9342857B2 (en) * 2013-03-29 2016-05-17 Nvidia Corporation Techniques for locally modifying draw calls
US9286649B2 (en) * 2013-05-31 2016-03-15 Qualcomm Incorporated Conditional execution of rendering commands based on per bin visibility information with added inline operations
US20150106587A1 (en) * 2013-10-16 2015-04-16 Advanced Micro Devices, Inc. Data remapping for heterogeneous processor
US9280845B2 (en) * 2013-12-27 2016-03-08 Qualcomm Incorporated Optimized multi-pass rendering on tiled base architectures
US9928565B2 (en) 2014-04-21 2018-03-27 Qualcomm Incorporated Flex rendering based on a render target in graphics processing
JP6274962B2 (ja) * 2014-04-25 2018-02-07 株式会社スクウェア・エニックス 情報処理装置、制御方法、プログラム及び記録媒体
US9754402B2 (en) * 2014-05-13 2017-09-05 Mediatek Inc. Graphics processing method and graphics processing apparatus
US9940686B2 (en) * 2014-05-14 2018-04-10 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US9799088B2 (en) * 2014-08-21 2017-10-24 Qualcomm Incorporated Render target command reordering in graphics processing
US9613392B2 (en) * 2014-09-03 2017-04-04 Mediatek Inc. Method for performing graphics processing of a graphics system in an electronic device with aid of configurable hardware, and associated apparatus
US9600926B2 (en) * 2014-12-15 2017-03-21 Intel Corporation Apparatus and method decoupling visibility bins and render tile dimensions for tiled rendering
US9489710B2 (en) * 2015-02-10 2016-11-08 Qualcomm Incorporated Hybrid rendering in graphics processing
US9830731B2 (en) * 2015-04-01 2017-11-28 Mediatek Inc. Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus
US9836869B2 (en) 2015-04-01 2017-12-05 Mediatek Inc. Graphics-processing method of a graphics-processing unit and graphics-processing apparatus
CN104809684B (zh) 2015-04-02 2018-03-27 华为技术有限公司 图形处理方法、装置及系统
US9773340B2 (en) * 2015-06-12 2017-09-26 Qualcomm Incorporated Rendering using ray tracing to generate a visibility stream
US20170004647A1 (en) * 2015-06-30 2017-01-05 Microsoft Technology Licensing, Llc Rendering graphics data on demand
US10140268B2 (en) 2015-08-27 2018-11-27 Qualcomm Innovation Center, Inc. Efficient browser composition for tiled-rendering graphics processing units
US10210655B2 (en) * 2015-09-25 2019-02-19 Intel Corporation Position only shader context submission through a render command streamer
US10062139B2 (en) * 2016-07-25 2018-08-28 Qualcomm Incorporated Vertex shaders for binning based graphics processing
KR20180038793A (ko) * 2016-10-07 2018-04-17 삼성전자주식회사 영상 데이터 처리 방법 및 장치
KR102637736B1 (ko) * 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
GB2558886B (en) 2017-01-12 2019-12-25 Imagination Tech Ltd Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space
US10430912B2 (en) * 2017-02-14 2019-10-01 Qualcomm Incorporated Dynamic shader instruction nullification for graphics processing
US10521321B2 (en) * 2017-12-21 2019-12-31 Qualcomm Incorporated Diverse redundancy approach for safety critical applications
CN108389151B (zh) * 2018-01-08 2022-03-18 珠海金山网络游戏科技有限公司 一种过度绘制的评估方法和系统
US10269167B1 (en) 2018-05-21 2019-04-23 Apple Inc. Indirect command buffers for graphics processing
CN109165058A (zh) * 2018-07-06 2019-01-08 北京三快在线科技有限公司 一种图片处理方法及装置
US20200020067A1 (en) * 2018-07-13 2020-01-16 Qualcomm Incorporated Concurrent binning and rendering
CN109242756B (zh) * 2018-09-07 2023-04-04 格兰菲智能科技有限公司 计算机系统、图形处理单元及其图形处理方法
CN109325899B (zh) 2018-09-07 2023-04-04 格兰菲智能科技有限公司 计算机系统、图形处理单元及其图形处理方法
CN110152291A (zh) * 2018-12-13 2019-08-23 腾讯科技(深圳)有限公司 游戏画面的渲染方法、装置、终端及存储介质
CN112764668A (zh) * 2019-11-01 2021-05-07 伊姆西Ip控股有限责任公司 扩展gpu存储器的方法、电子设备和计算机程序产品
US11972518B2 (en) * 2020-01-20 2024-04-30 Advanced Micro Devices, Inc. Hybrid binning
CN113269842A (zh) * 2020-02-17 2021-08-17 苏州苏大维格科技集团股份有限公司 图形光栅化方法、装置及存储介质
US20210287418A1 (en) * 2020-03-10 2021-09-16 Advanced Micro Devices, Inc. Graphics processing unit render mode selection system
US11321806B2 (en) * 2020-07-22 2022-05-03 Samsung Electronics Co., Ltd. Enhanced early coverage discard using opportunistic bypassing and dynamic queue resizing
US20220044350A1 (en) * 2020-08-07 2022-02-10 Advanced Micro Devices, Inc. Graphics processing unit with selective two-level binning
US11373268B2 (en) * 2020-09-30 2022-06-28 Qualcomm Incorporated Apparatus and method for graphics processing unit hybrid rendering
US11321804B1 (en) * 2020-10-15 2022-05-03 Qualcomm Incorporated Techniques for flexible rendering operations
US11416960B2 (en) 2020-11-06 2022-08-16 Samsung Electronics Co., Ltd. Shader accessible configurable binning subsystem
CN112652025B (zh) * 2020-12-18 2022-03-22 完美世界(北京)软件科技发展有限公司 图像渲染方法、装置、计算机设备及可读存储介质
CN114332311B (zh) * 2021-12-05 2023-08-04 北京字跳网络技术有限公司 一种图像生成方法、装置、计算机设备及存储介质
CN116894906A (zh) * 2023-09-11 2023-10-17 瀚博半导体(上海)有限公司 图形渲染方法和处理器硬件架构

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5793385A (en) 1996-06-12 1998-08-11 Chips And Technologies, Inc. Address translator for a shared memory computing system
US5990911A (en) * 1996-06-21 1999-11-23 Autodesk, Inc. Immediate mode drawing interface for the construction of graphics software
US6208361B1 (en) * 1998-06-15 2001-03-27 Silicon Graphics, Inc. Method and system for efficient context switching in a computer graphics system
US6646639B1 (en) 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6380935B1 (en) * 1999-03-17 2002-04-30 Nvidia Corporation circuit and method for processing render commands in a tile-based graphics system
US6321314B1 (en) 1999-06-09 2001-11-20 Ati International S.R.L. Method and apparatus for restricting memory access
US6330654B1 (en) * 1999-08-26 2001-12-11 Micron Technology, Inc. Memory cache with sequential page indicators
US6466217B1 (en) 1999-12-22 2002-10-15 Intel Corporation Method and apparatus for ensuring backward compatibility in a bucket rendering system
US6560657B1 (en) 1999-12-23 2003-05-06 Intel Corporation System and method for controlling peripheral devices
US6724390B1 (en) * 1999-12-29 2004-04-20 Intel Corporation Allocating memory
US6538650B1 (en) * 2000-01-10 2003-03-25 Intel Corporation Efficient TLB entry management for the render operands residing in the tiled memory
US6747657B2 (en) 2001-12-31 2004-06-08 Intel Corporation Depth write disable for zone rendering
US6762765B2 (en) * 2001-12-31 2004-07-13 Intel Corporation Bandwidth reduction for zone rendering via split vertex buffers
US20040075654A1 (en) 2002-10-16 2004-04-22 Silicon Integrated Systems Corp. 3-D digital image processor and method for visibility processing for use in the same
US7242400B2 (en) 2002-11-13 2007-07-10 Ati Technologies Ulc Compression and decompression of data using plane equations
US7248267B2 (en) * 2003-03-20 2007-07-24 International Business Machines Corporation Method and apparatus for simulated direct frame buffer access for graphics adapters
KR100505134B1 (ko) * 2003-06-10 2005-08-02 한국과학기술원 3차원 컴퓨터 그래픽 시스템의 제산유니트
GB2406184B (en) 2003-09-17 2006-03-15 Advanced Risc Mach Ltd Data processing system
US7324691B2 (en) 2003-09-24 2008-01-29 Microsoft Corporation System and method for shape recognition of hand-drawn objects
US7411591B2 (en) * 2003-12-24 2008-08-12 Intel Corporation Graphics memory switch
US20050237329A1 (en) 2004-04-27 2005-10-27 Nvidia Corporation GPU rendering to system memory
US7586500B2 (en) 2004-09-24 2009-09-08 Canon Kabushiki Kaisha Dynamic render algorithm selection
GB0425204D0 (en) 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
GB0426170D0 (en) 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US8089486B2 (en) 2005-03-21 2012-01-03 Qualcomm Incorporated Tiled prefetched and cached depth buffer
US7289119B2 (en) 2005-05-10 2007-10-30 Sony Computer Entertainment Inc. Statistical rendering acceleration
US20070052715A1 (en) * 2005-09-07 2007-03-08 Konstantin Levit-Gurevich Device, system and method of graphics processing
US7499057B2 (en) * 2005-09-09 2009-03-03 Microsoft Corporation Address translation in an integrated graphics environment
US8212832B2 (en) * 2005-12-08 2012-07-03 Ati Technologies Ulc Method and apparatus with dynamic graphics surface memory allocation
US20080273031A1 (en) 2005-12-08 2008-11-06 Xgi Technology Inc. (Cayman) Page based rendering in 3D graphics system
US7545382B1 (en) * 2006-03-29 2009-06-09 Nvidia Corporation Apparatus, system, and method for using page table entries in a graphics system to provide storage format information for address translation
GB0710795D0 (en) 2007-06-05 2007-07-18 Arm Norway As Method of and apparatus for processing graphics
US8448067B2 (en) 2006-12-07 2013-05-21 Sony Computer Entertainment America, LLC Graphics command management tool and methods for analyzing performance for command changes before application modification
US7830381B2 (en) 2006-12-21 2010-11-09 Sectra Ab Systems for visualizing images using explicit quality prioritization of a feature(s) in multidimensional image data sets, related methods and computer products
ITMI20070038A1 (it) * 2007-01-12 2008-07-13 St Microelectronics Srl Dispositivo di renderizzazione per grafica a tre dimensioni con architettura di tipo sort-middle.
US8064695B2 (en) 2007-09-27 2011-11-22 Behavioral Recognition Systems, Inc. Dark scene compensation in a background-foreground module of a video analysis system
US8031194B2 (en) 2007-11-09 2011-10-04 Vivante Corporation Intelligent configurable graphics bandwidth modulator
US8026912B1 (en) 2007-12-04 2011-09-27 Nvidia Corporation System and method for structuring an A-buffer
GB0810311D0 (en) 2008-06-05 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
GB2461900B (en) 2008-07-16 2012-11-07 Advanced Risc Mach Ltd Monitoring graphics processing
GB0818277D0 (en) * 2008-10-06 2008-11-12 Advanced Risc Mach Ltd Graphics processing system
US8675000B2 (en) 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
GB2469525A (en) 2009-04-17 2010-10-20 Advanced Risc Mach Ltd Graphics Filled Shape Drawing
US8610731B2 (en) * 2009-04-30 2013-12-17 Microsoft Corporation Dynamic graphics pipeline and in-place rasterization
KR20100132605A (ko) 2009-06-10 2010-12-20 삼성전자주식회사 하이브리드 렌더링 장치 및 방법
US8341380B2 (en) * 2009-09-22 2012-12-25 Nvidia Corporation Efficient memory translator with variable size cache line coverage
US8872823B2 (en) 2009-10-09 2014-10-28 Microsoft Corporation Automatic real-time shader modification for texture fetch instrumentation
US8988441B2 (en) * 2011-02-10 2015-03-24 Edward A. Hutchins Reconfigurable 3D graphics processor
US8982136B2 (en) * 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
WO2012159246A1 (en) 2011-05-20 2012-11-29 Microsoft Corporation Displaying and inputting symbols
US9117302B2 (en) 2011-11-30 2015-08-25 Qualcomm Incorporated Switching between direct rendering and binning in graphics processing using an overdraw tracker

Also Published As

Publication number Publication date
WO2013081787A1 (en) 2013-06-06
JP2015506017A (ja) 2015-02-26
JP5866457B2 (ja) 2016-02-17
US20130135341A1 (en) 2013-05-30
US8830246B2 (en) 2014-09-09
EP2786351A1 (en) 2014-10-08
JP2015506018A (ja) 2015-02-26
WO2013081789A1 (en) 2013-06-06
EP2786350A1 (en) 2014-10-08
WO2013081788A1 (en) 2013-06-06
EP2786351B1 (en) 2016-03-30
IN2014CN03595A (ja) 2015-10-09
US20130135329A1 (en) 2013-05-30
EP2786350B1 (en) 2018-09-12
US9547930B2 (en) 2017-01-17
CN103959337A (zh) 2014-07-30
CN103959338A (zh) 2014-07-30
CN103959337B (zh) 2016-06-01
KR101615840B1 (ko) 2016-04-26
KR20140101398A (ko) 2014-08-19
CN103959338B (zh) 2016-09-14
US20130135322A1 (en) 2013-05-30
US9117302B2 (en) 2015-08-25

Similar Documents

Publication Publication Date Title
JP5847960B2 (ja) グラフィックス処理における直接レンダリングとビニングとの間の切り換え
US10282813B2 (en) Flex rendering based on a render target in graphics processing
EP3308359B1 (en) Rendering using ray tracing to generate a visibility stream
JP5844485B2 (ja) グラフィックス処理システムにおけるメモリアクセス帯域幅をデスティネーションアルファ値に基づいて減少させるための技法
EP3257024B1 (en) Hybrid rendering in graphics processing
JP2018529168A (ja) 帯域幅圧縮グラフィックスデータの記憶
US10416808B2 (en) Input event based dynamic panel mode switch
WO2019055918A1 (en) ADDING METADATA TO TEXTURE SURFACES FOR BANDWIDTH COMPRESSION

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151125

R150 Certificate of patent or registration of utility model

Ref document number: 5847960

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees