JP5866457B2 - オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替 - Google Patents

オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替 Download PDF

Info

Publication number
JP5866457B2
JP5866457B2 JP2014544746A JP2014544746A JP5866457B2 JP 5866457 B2 JP5866457 B2 JP 5866457B2 JP 2014544746 A JP2014544746 A JP 2014544746A JP 2014544746 A JP2014544746 A JP 2014544746A JP 5866457 B2 JP5866457 B2 JP 5866457B2
Authority
JP
Japan
Prior art keywords
rendering
overdraw
binning
bin
command
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
JP2014544746A
Other languages
English (en)
Other versions
JP2015506017A (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 JP2015506017A publication Critical patent/JP2015506017A/ja
Application granted granted Critical
Publication of JP5866457B2 publication Critical patent/JP5866457B2/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

優先権主張
本願は、その全体が参照によって本明細書に組み込まれている2011年11月30日出願の米国仮出願61/565,397の利益を要求する。
本開示は、グラフィック処理のための技法に関し、さらに詳しくは、グラフィック処理におけるダイレクト・レンダリングとビニングとの切替のための技法に関する。
例えば、グラフィック・ユーザ・インタフェースおよびビデオ・ゲームのためのコンテンツのような、ディスプレイのためのビジュアル・コンテンツは、グラフィック処理ユニット(GPU)によって生成されうる。GPUは、2次元(2D)または3次元(3D)のオブジェクトを、表示されうる2次元ピクセル表現に変換しうる。3Dオブジェクトに関する情報を、表示されるビット・マップへ変換することは、ピクセル・レンダリングとして知られており、かなりのメモリおよび処理電力を必要とする。過去においては、3Dグラフィック機能は、強力なワークステーションにおいてのみ利用可能であった。しかしながら、今や、一般に、例えばスマート・フォン、タブレット・コンピュータ、ポータブル・メディア・プレーヤ、ポータブル・ビデオ・ゲーム・コンソール等のような組み込みデバイスと同様に、パーソナル・コンピュータ(PC)においても3Dグラフィック・アクセラレータが見受けられる。一般に、組み込みデバイスは、従来のPCと比較して、計算能力もメモリ容量も少ない。そのため、このような技法を、組み込みシステムにおいて実施する場合、3Dグラフィック・レンダリング技法の複雑さが増すので、困難を呈する。
一般に、本開示は、グラフィック処理におけるダイレクト・レンダリングとビニングとの切替のための技法と、レンダリング・モードを決定するための技法と、を記載している。
本開示の1つの例において、グラフィック処理のための方法は、フレームをレンダリングするためのレンダリング・コマンドを生成することと、ここで、レンダリング・コマンドは、ビニング・レンダリング・モードのためのものである;グラフィック・メモリ・アドレスを用いるレンダリング・コマンドをトラックすることと;レンダリング特性に基づいて、フレームのための複数のレンダリング・モードのうちの1つを決定することと、ここで、複数のレンダリング・モードは、ビニング・レンダリング・モードとダイレクト・レンダリング・モードを含む;決定されたレンダリング・モードがダイレクト・レンダリング・モードである場合、グラフィック・メモリ・アドレスを用いるレンダリング・コマンドを、システム・メモリ・アドレスを用いることに変更することと;を備える。
本開示の別の例では、グラフィック処理の方法は、シーンのプリミティブにビニング演算を実行することと、ここで、プリミティブは、ビンに分割される;シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算することと;計算されたスコアに基づいて、レンダリング・モードを決定することと;を備える。
本開示の別の例では、グラフィック処理の方法は、グラフィック演算を実行するための演算コマンドを第1のバッファに格納することと;書込コマンドを第2のバッファに格納することと;を備え、ここで、書込コマンドは、実行された場合、第1のバッファにおける演算コマンドを変更し、変更された演算コマンドを生成する。
本開示の技法はまた、これら技法をプロセッサに対して実行させるための命令群を格納したコンピュータ読取可能な媒体および装置の観点で記載される。1または複数の例の詳細が、添付図面および以下の説明において記載されている。他の特徴、目的、および利点が、説明と図面から、および特許請求の範囲から明らかになるだろう。
図1は、本開示の技法を用いるように構成されたコンピューティング・デバイスの例を示すブロック図である。 図2は、本開示の技法を用いるように構成された処理ユニットの例を示すブロック図である。 図3は、ビニング・レンダリング・モードにおいて使用されるようなフレームのビンを例示する概念図である。 図4は、ビニング・レンダリング・モードにおいて使用されるようなフレームのビンをより詳細に例示する概念図である。 図5は、「ソフトウェア」ビニングを用いるビニング・レンダリング・モードのためのコマンド・バッファを例示する概念図である。 図6は、「ハードウェア」ビニングを用いるビニング・レンダリング・モードのためのコマンド・バッファを例示する概念図である。 図7は、ダイレクト・レンダリング・モードのためのコマンド・バッファを例示する概念図である。 図8は、本開示の1つの例にしたがうレンダリング・コマンド・パッチを例示する概念図である。 図9は、本開示の1つの例にしたがうオーバドロー・トラッキングを例示する概念図である。 図10は、本開示の1つの例にしたがう4つのビンにおけるオーバドローを例示する概念図である。 図11は、本開示の1つの例にしたがうレンダリング・モード選択を例示する概念図である。 図12は、本開示の別の例にしたがうレンダリング・コマンド・パッチを例示する概念図である。 図13は、本開示の1つの例にしたがう方法を例示するフローチャートである。 図14は、本開示の別の例にしたがう方法を例示するフローチャートである。 図15は、本開示の別の例にしたがう方法を例示するフローチャートである。 図16は、本開示の別の例にしたがう方法を例示するフローチャートである。
本開示は、グラフィック処理のための技法に関し、さらに詳しくは、レンダリング・モードを決定し、グラフィック処理システムにおけるレンダリング・モードを切り替えるための技法に関する。
現在のグラフィック・レンダリング・システムは、一般に、シーンをレンダリングするために、(しばしば、タイル・ベースのレンダリングと称される)ビニング・レンダリング・モードまたはダイレクト・レンダリング・モードを利用する。ビニング・レンダリングでは、2Dシーンまたは3Dシーンの1つのフレームが、より小さなパーツ(例えば、長方形のビンまたはタイル)に分解することと、これらビンのおのおのを個別にレンダリングすることと、によってレンダリングされる。ビニング・レンダリングは、例えば、モバイル・アプリケーションのためのように、小型の専用の高速グラフィック・メモリ(GMEM)が利用可能であるアプリケーションのために有益である。タイルのサイズは、GMEMにおいて利用可能なデータの量を示すように構成されうる。例えば、GMEMが512kBを格納することができるのであれば、タイルのサイズは、そのタイルに含まれるピクセル・データが512kB以下になるように構成されうる。
一方、ダイレクト・レンダリング・モードにおけるグラフィック処理は、フレームを、より小さなビンに分解することはない。その代わり、フレームの全体は、一度にレンダリングされる。いくつかのグラフィック処理システム(例えば、モバイル・デバイス上のグラフィック処理システム)では、ピクセル・データのフレーム全体を保持するために十分なGMEMはない。そうではなく、ダイレクト・レンダリング・モードの場合、フレームをレンダリングするために、より低速のシステム・メモリしか使用されない。
本開示は、(例えば、ビニング・レンダリング・モードやダイレクト・レンダリング・モードのような)レンダリング・モードを決定するための技法および構成のみならず、このようなレンダリング・モードの切り替えを行うための技法および構成を表す。
本開示の1つの例では、グラフィック処理の方法は、フレームをレンダリングするためのレンダリング・コマンドを生成することと、ここで、レンダリング・コマンドは、ビニング・レンダリング・モードのためのものである;グラフィック・メモリ・アドレスを用いるレンダリング・コマンドをトラックすることと;レンダリング特性に基づいて、フレームのための複数のレンダリング・モードのうちの1つを決定することと、ここで、複数のレンダリング・モードは、ビニング・レンダリング・モードとダイレクト・レンダリング・モードを含む;決定されたレンダリング・モードがダイレクト・レンダリング・モードである場合、グラフィック・メモリ・アドレスを用いるレンダリング・コマンドを、システム・メモリ・アドレスを用いることに変更することと;を備える。
本開示の別の例では、グラフィック処理の方法は、シーンのプリミティブにビニング演算を実行することと、ここで、プリミティブは、ビンに分割される;シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算することと;計算されたスコアに基づいて、レンダリング・モードを決定することと;を備える。
開示の別の例では、グラフィック処理の方法は、グラフィック演算を実行するための演算コマンドを第1のバッファに格納することと;書込コマンドを第2のバッファに格納することと;を備え、ここで、書込コマンドは、第1のバッファにおける演算コマンドを変更し、変更された演算コマンドを生成する。
図1は、レンダリング・モードを決定することと、レンダリング・モードの切り替え(例えば、ビニング・レンダリング・モードとダイレクト・レンダリング・モードとの間の切り替え)を行うことと、のための、本開示の技法を実施するために使用されうるコンピューティング・デバイス2の例を例示するブロック図である。コンピューティング・デバイス2は、例えば、パーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、コンピュータ・ワークステーション、ビデオ・ゲーム・プラットフォームまたはコンソール、例えばセルラ電話または衛星電話のようなモバイル電話、陸線電話、インターネット電話、ポータブル・ビデオ・ゲーム・デバイスまたは携帯情報端末(PDA)のようなハンドヘルド・デバイス、パーソナル音楽プレーヤ、ビデオ・プレーヤ、ディスプレイ・デバイス、テレビ、テレビジョン・セット・トップ・ボックス、サーバ、中間ネットワーク・デバイス、メインフレーム・コンピュータ、任意のモバイル・デバイス、または、グラフィック・データを処理および/または表示するその他のタイプのデバイスを備えうる。
図1の例で例示されるように、コンピューティング・デバイス2は、ユーザ入力インタフェース4、中央処理装置(CPU)6、メモリ・コントローラ8、システム・メモリ10、グラフィック処理ユニット(GPU)12、グラフィック・メモリ14、ディスプレイ・インタフェース16、ディスプレイ18、およびバス20,22を含みうる。いくつかの例において、グラフィック・メモリ14は、GPU12とともに「オン・チップ」されうることに注目されたい。いくつかのケースでは、図1に示されるすべてのハードウェア要素は、例えば、システム・オン・チップ(SoC)設計されたシステム上にオン・チップされうる。ユーザ入力インタフェース4、CPU6、メモリ・コントローラ8、GPU12、およびディスプレイ・インタフェース16は、バス20を用いて互いに通信しうる。メモリ・コントローラ8およびシステム・メモリ10はまた、バス22を用いて互いに通信しうる。バス20,22は、例えば、第3世代バス(例えば、ハイパ・トランスポート・バスまたはインフィニ・バンド・バス)、第2世代バス(例えば、アドバンスト・グラフィック・ポート・バス、ペリフェラル・コンポーネント・インタコネクト(PCI)エクスプレス・バス、または、アドバンスト・エクステンシブル・インタフェース(AXI)バス)または、その他のタイプのバスまたはデバイス・インタコネクト、のようなさまざまなバス構成のうちの何れかでありうる。図1に図示される異なる構成要素間の通信インタフェースおよびバスの具体的な構成は、単なる典型例であり、本開示の技法を実現するために、同じ構成要素または異なる構成要素を持つコンピューティング・デバイスおよび/またはその他のグラフィック処理システムのその他の構成も使用されうることが注目されるべきである。
CPU6は、コンピューティング・デバイス2の動作を制御する汎用または専用のプロセッサを備えうる。ユーザは、CPU6に対して、1または複数のソフトウェア・アプリケーションを実行させるために、コンピューティング・デバイス2へ入力を提供しうる。CPU6において動作するソフトウェア・アプリケーションは、例えば、オペレーティング・システム、ワード・プロセッサ・アプリケーション、電子メール・アプリケーション、スプレッド・シート・アプリケーション、メディア・プレイヤ・アプリケーション、ビデオ・ゲーム・アプリケーション、グラフィック・ユーザ・インタフェース・アプリケーション、またはその他のプログラムを含みうる。さらに、CPU6は、GPU12の動作を制御するために、GPUドライバ7を実行しうる。ユーザは、例えば、キーボード、マウス、マイクロホン、タッチ・パッドまたは、ユーザ入力インタフェース4を経由してコンピューティング・デバイス2に接続されるその他の入力デバイス、のような1または複数の入力デバイス(図示せず)によって、コンピューティング・デバイス2へ入力を提供しうる。
CPU6において動作するソフトウェア・アプリケーションは、グラフィック・データのディスプレイ18へのレンダリングを行わせるようにCPU6に指示する1または複数のグラフィック・レンダリング命令群を含みうる。いくつかの例において、ソフトウェア命令群は、例えば、オープン・グラフィック・ライブラリ(OpenGL(登録商標))、オープン・グラフィック・ライブラリ・エンベデッド・システム(OpenGL ES)API、ダイレクト3D API、X3D API、レンダマンAPI、WebGL API、または、その他任意の公開または独自規格のグラフィックAPI、のようなグラフィック・アプリケーション・プログラミング・インタフェース(API)に準拠しうる。グラフィック・レンダリング命令群を処理するために、CPU6は、(例えば、GPUドライバ7によって)1または複数のグラフィック・レンダリング・コマンドをGPU12へ発行し、GPU12に対して、グラフィック・データのレンダリングのうちのいくつかまたはすべてを実行させる。いくつかの例において、レンダリングされるべきグラフィック・データは、例えば、点、線、三角形、四角形、三角形ストリップ等のようなグラフィック・プリミティブのリストを含みうる。
メモリ・コントローラ8は、システム・メモリ10との間のデータの移動を容易にする。例えば、メモリ・コントローラ8は、メモリ読取コマンドおよびメモリ書込コマンドを受け取りうる。そして、コンピューティング・デバイス2内の構成要素のためにメモリ・サービスを提供するために、メモリ・システム10に関するこれらコマンドをサービスしうる。メモリ・コントローラ8は、メモリ・バス22を介してシステム・メモリ10に通信可能に接続される。メモリ・コントローラ8は、図1において、CPU6とシステム・メモリ10との両方と離れている処理モジュールであると例示されているが、別の例では、メモリ・コントローラ8の機能のうちのいくつかまたはすべてが、CPU6とシステム・メモリ10のうちの1つまたは両方で実現されうる。
システム・メモリ10は、CPU6による実行のためにアクセス可能であるプログラム・モジュールおよび/または命令群、および/または、CPU6で動作するプログラムによって使用されるデータ、を格納しうる。例えば、システム・メモリ10は、ディスプレイ18上にグラフィック・ユーザ・インタフェース(GUI)を表示するためにCPU6によって使用されるウィンドウ・マネジャ・アプリケーションを格納しうる。さらに、システム・メモリ10は、ユーザ・アプリケーションと、このアプリケーションに関連付けられたアプリケーション・サーフェス・データとを格納しうる。システム・メモリ10はさらに、コンピューティング・デバイス2のその他の構成要素によって使用される、および/または、生成された情報を格納しうる。例えば、システム・メモリ10は、GPU12のためのデバイス・メモリとして動作し、GPU12によって演算されるべきデータのみならず、GPU12によって実行された演算の結果得られたデータをも格納しうる。例えば、システム・メモリ10は、テクスチャ・バッファ、デプス・バッファ、ステンシル・バッファ、頂点バッファ、フレーム・バッファ等の任意の組み合わせを格納しうる。システム・メモリ10は、例えば、ランダム・アクセス・メモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、読取専用メモリ(ROM)、消去可能なプログラマブルROM(EPROM)、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュ・メモリ、磁気データ媒体、または、光学記憶媒体、のような1または複数の揮発性または不揮発性のメモリまたは記憶デバイスを含みうる。
GPU12は、ディスプレイ18に1または複数のグラフィック・プリミティブをレンダリングするためのグラフィック演算を実行するように構成されうる。したがって、CPU6において動作するソフトウェア・アプリケーションのうちの1つが、グラフィック処理を必要とする場合、CPU6は、ディスプレイ18にレンダリングするために、グラフィック・コマンドおよびグラフィック・データをGPU12へ提供しうる。グラフィック・データは、例えば、ドロー・コマンド、状態情報、プリミティブ情報、テクスチャ情報等を含みうる。GPU12は、いくつかの事例では、複雑なグラフィック関連演算の、CPU6よりもより効率的な処理を提供する高度な並列構造で構築されうる。例えば、GPU12は、複数の頂点またはピクセルにおいて並列方式で動作するように構成された複数の処理要素を含みうる。いくつかの事例では、GPU12の高度な並列特性によって、GPU12は、CPU6を用いてディスプレイ18にダイレクトにシーンを描画するよりも、より迅速にディスプレイ18にグラフィック・イメージ(例えば、GUIおよび2次元(2D)および/または3次元(3D)のグラフィック・シーン)を描画できるようになる。
GPU12は、いくつかの事例では、コンピューティング・デバイス2のマザーボードへ組み込まれうる。その他の事例では、GPU12は、コンピューティング・デバイス2のマザーボードのポートに搭載されたグラフィック・カード上に存在しうるか、または、コンピューティング・デバイス2と協働するように構成された周辺デバイス内に組み込まれうる。GPU12は、例えば、1または複数のマイクロプロセッサ、特定用途向けIC(ASIC)、フィールドプログラム可能なゲート・アレイ(FPGA)、デジタル信号プロセッサ(DSP)、または他の等価な統合されたまたは個別のロジック回路のような1または複数のプロセッサを含みうる。
GPU12は、グラフィック・メモリ14にダイレクトに接続されうる。したがって、GPU12は、バス20を用いることなく、グラフィック・メモリ14からのデータの読み取り、および、グラフィック・メモリ14へのデータの書き込みを実施しうる。言い換えれば、GPU12は、オフ・チップ・メモリの代わりに、ローカル記憶装置を用いて、データをローカルに処理しうる。これによって、GPU12は、高いバス・トラフィックを経験しうるバス20を経由してのデータの読取および書込のためにGPU12を必要とすることを不要とすることによって、より効率的な方式で動作できるようになる。しかしながら、いくつかの事例では、GPU12は、個別のメモリを含みうるが、代わりに、バス20を経由してシステム・メモリ10を利用しうる。グラフィック・メモリ14は、例えば、ランダム・アクセス・メモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、消去可能なプログラマブルROM(EPROM)、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュ・メモリ、磁気データ媒体、または光学記憶媒体のような1または複数の揮発性または不揮発性のメモリまたは記憶デバイスを含みうる。
CPU6および/またはGPU12は、レンダリングされたイメージ・データを、フレーム・バッファ15に格納しうる。フレーム・バッファ15は、独立したメモリでありうるか、または、システム・メモリ10内に割り当てられうる。ディスプレイ・インタフェース16は、フレーム・バッファ15からデータを取得し、レンダリングされたイメージ・データによって表現されるイメージを表示するようにディスプレイ18を構成しうる。いくつかの例において、ディスプレイ・インタフェース16は、フレーム・バッファから取得されたデジタル値を、ディスプレイ18によって使用されるアナログ信号へ変換するように構成されたデジタル・アナログ変換器(DAC)を含みうる。その他の例では、ディスプレイ・インタフェース16は、処理のために、デジタル値を、ディスプレイ18へダイレクトに渡しうる。ディスプレイ18は、モニタ、テレビ、映写デバイス、液晶ディスプレイ(LCD)、プラズマ・ディスプレイ・パネル、例えば有機LED(OLED)ディスプレイのような発光ダイオード(LED)アレイ、陰極管(CRT)ディスプレイ、電子ペーパ、表面電界ディスプレイ(SED)、レーザ・テレビ・ディスプレイ、ナノ結晶ディスプレイ、またはその他のタイプのディスプレイ・ユニットを含みうる。ディスプレイ18は、コンピューティング・デバイス2に組み込まれうる。例えば、ディスプレイ18は、モバイル電話のスクリーンでありうる。あるいは、ディスプレイ18は、有線または無線の通信リンクによってコンピューティング・デバイス2へ接続されたスタンド・アロンのデバイスでありうる。例えば、ディスプレイ18は、ケーブルまたは無線リンクによってパーソナル・コンピュータに接続されたコンピュータ・モニタまたはフラット・パネル・ディスプレイでありうる。
本開示の1つの例によれば、CPU6および/またはGPU7は、フレームをレンダリングするためのレンダリング・コマンドを生成することと、ここで、レンダリング・コマンドは、ビニング・レンダリング・モードのためのものである;グラフィック・メモリ・アドレスを用いるレンダリング・コマンドをトラックすることと;レンダリング特性に基づいて、フレームのための複数のレンダリング・モードのうちの1つを決定することと、ここで、複数のレンダリング・モードは、ビニング・レンダリング・モードとダイレクト・レンダリング・モードを含む;決定されたレンダリング・モードがダイレクト・レンダリング・モードである場合、グラフィック・メモリ・アドレスを用いるレンダリング・コマンドを、システム・メモリ・アドレスを用いることに変更することと;を実行するように構成されうる。
本開示の別の例によれば、CPU6および/またはグラフィック・ドライバ7は、シーンのプリミティブにビニング演算を実行することと、ここで、プリミティブは、ビンに分割される;シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算することと;計算されたスコアに基づいて、レンダリング・モードを決定することと;を実行するように構成されうる。
本開示の別の例によれば、CPU6および/またはグラフィック・ドライバ7は、グラフィック演算を実行するための演算コマンドを第1のバッファに格納することと;書込コマンドを第2のバッファに格納することと;を備え、ここで、書込コマンドは、第1のバッファにおける演算コマンドを変更し、変更された演算コマンドを生成する。
図2は、図1のCPU6、GPU12、およびシステム・メモリ10の実施の例をさらに詳細に例示するブロック図である。CPU6は、少なくとも1つのソフトウェア・アプリケーション24、グラフィックAPI26、およびGPUドライバ7を含みうる。これらのおのおのは、CPU6上で動作する1または複数のソフトウェア・アプリケーションまたはサービスでありうる。GPU12は、グラフィック処理コマンドを実行するためのともに動作する複数のグラフィック処理ステージを含むグラフィック処理パイプライン30を含みうる。GPU12は、ビニング・レンダリング・モードおよびダイレクト・レンダリング・モードを含むさまざまなレンダリング・モードでグラフィック処理パイプライン30を実行するように構成されうる。図2に図示されるように、グラフィック処理パイプライン30は、コマンド・エンジン32、幾何学処理ステージ34、ラスタライゼーション・ステージ36、およびピクセル処理パイプライン38を含みうる。グラフィック処理パイプライン30における構成要素のおのおのは、固定機能構成要素、(例えば、プログラマブル・シェダー・ユニットにおいて動作するシェダー・プログラムの一部としての)プログラマブル構成要素、または、固定機能構成要素とプログラマブル構成要素の組み合わせとして実現されうる。CPU6およびGPU12に利用可能なメモリは、システム・メモリ10およびフレーム・バッファ15を含みうる。フレーム・バッファ15は、システム・メモリ10の一部でありうるか、または、システム・メモリ10から分離しうる。フレーム・バッファ15は、レンダリングされたイメージ・データを格納しうる。
ソフトウェア・アプリケーション24は、GPU12の機能を利用する任意のアプリケーションでありうる。例えば、ソフトウェア・アプリケーション24は、GUIアプリケーション、オペレーティング・システム、ポータブル・マッピング・アプリケーション、エンジニアリング・アプリケーションまたはアーティスティック・アプリケーションのためのコンピュータ支援設計プログラム、ビデオ・ゲーム・アプリケーション、または、2Dまたは3Dグラフィックを用いるその他のタイプのソフトウェア・アプリケーション、でありうる。
ソフトウェア・アプリケーション24は、グラフィック・ユーザ・インタフェース(GUI)および/またはグラフィック・シーンをレンダリングするようにGPU12に指示する1または複数のドローイング命令群を含みうる。例えば、ドローイング命令群は、GPU12によってレンダリングされるべき1または複数のグラフィック・プリミティブのセットを定義する命令群を含みうる。いくつかの例において、ドローイング命令群は、集合的に、GUIにおいて使用される複数のウィンドゥイング・サーフェスのうちのすべてまたは一部を定義しうる。さらなる例では、ドローイング命令群は、集合的に、アプリケーションによって定義されるワールド空間またはモデル空間内の1または複数のグラフィック・オブジェクトを含むグラフィック・シーンのすべてまたは一部を定義しうる。
ソフトウェア・アプリケーション24は、グラフィックAPI26を介してGPUドライバ7を起動し、1または複数のグラフィック・プリミティブを表示可能なグラフィック・イメージにレンダリングするための1または複数のコマンドをGPU12へ発行させる。例えば、ソフトウェア・アプリケーション24は、グラフィックAPI26を介してGPUドライバ7を起動し、GPU12へプリミティブ定義を提供する。いくつかの事例では、プリミティブ定義が、例えば、三角形、長方形、三角形ファン、三角形ストリップ等のようなドローイング・プリミティブのリストの形態でGPU12へ提供されうる。プリミティブ定義は、レンダリングされるべきプリミティブに関連付けられた1または複数の頂点を指定する頂点仕様を含みうる。頂点仕様は、おのおのの頂点の位置座標と、さらには、いくつかの事例においては、例えば、色座標、法線ベクトル、およびテクスチャ座標のように、頂点に関連付けられたその他の属性とを含みうる。プリミティブ定義はまた、プリミティブ・タイプ情報(例えば三角形、長方形、三角形ファン、三角形ストリップ等)、スケーリング情報、回転情報等を含みうる。GPUドライバ7は、プリミティブをレンダリングするために、ソフトウェア・アプリケーション24によってGPUドライバ7へ発行された命令群に基づいて、GPU12が実行するための1または複数の動作を指定する1または複数のコマンドを定式化しうる。GPU12がCPU6からコマンドを受け取った場合、グラフィック処理パイプライン30は、このコマンドを復号し、グラフィック処理パイプライン30内の1または複数の処理要素を、このコマンドにおいて指定された動作を実行するように設定する。グラフィック処理パイプライン30は、指定された動作を実行した後、レンダリングされたデータを、ディスプレイ・デバイスに関連付けれたフレーム・バッファ40へ出力する。グラフィック・パイプライン30は、ビニング・レンダリング・モードおよびダイレクト・レンダリング・モードを含む複数の異なるレンダリング・モードのうちの1つを実行するように構成されうる。ビニング・レンダリング・モードおよびダイレクト・レンダリング・モードの動作が、以下にさらに詳細に記載される。
GPUドライバ7はさらに、1または複数のシェダー・プログラムをコンパイルし、コンパイルされたシェダー・プログラムを、GPU12内に含まれた1または複数のプログラマブル・シェダー・ユニットにダウンロードするように構成されうる。シェダー・プログラムは、例えば、OpenGLシェーディング言語(GLSL)、高レベル・シェーディング言語(HLSL)、Cフォー・グラフィック(Cg)シェーディング言語等のような高レベル・シェーディング言語で記述されうる。コンパイルされたシェダー・プログラムは、GPU12内のプログラマブル・シェダー・ユニットの動作を制御する1または複数の命令群を含みうる。例えば、シェダー・プログラムは、頂点シェダー・プログラムおよび/またはピクセル・シェダー・プログラムを含みうる。頂点シェダー・プログラムは、プログラマブル頂点シェダー・ユニットまたは統一されたシェダー・ユニットの実行を制御しうる。また、1または複数の頂点毎の動作を指定する命令群を含みうる。ピクセル・シェダー・プログラムは、プログラマブル・ピクセル・シェダー・ユニットまたは統一されたシェダー・ユニットの実行を制御するピクセル・シェダー・プログラムを含みうる。また、1または複数のピクセル毎の動作を指定する命令群を含みうる。本開示のいくつかの実施形態の例によれば、ピクセル・シェダー・プログラムはまた、ソース・ピクセルの対応する目標アルファ値に基づいて、ソース・ピクセルのためにテクスチャ値が選択的に取得されるようにする命令群をも含みうる。
本開示の技法によれば、GPUドライバ7はまた、GMENアドレスを利用するビニング・レンダリング・モードにおけるレンダリングのために生成されたコマンドをトラックするように構成されうる。GMEMアドレスを利用するおのおののコマンドについて、GPUドライバ7は、ダイレクト・レンダリング・モードのために使用されるであろう対応するシステム・メモリ・アドレスを格納しうる。レンダリング・モードがビニング・レンダリング・モードからダイレクト・レンダリング・モードへ切り替わったのであれば、GPUドライバ7は、GMEMアドレスをシステム・メモリ・アドレスと交換するためにレンダリング・コマンドをパッチ(すなわち、変更)しうる。GMEMアドレスをシステム・メモリ・アドレスでパッチするためのさらなる技法が、以下にさらに詳しく記載される。
グラフィック処理パイプライン30は、グラフィック・ドライバ28を経由してCPU6から1または複数のグラフィック処理コマンドを受け取り、表示可能なグラフィック・イメージを生成するために、このグラフィック処理コマンドを実行する、ように構成されうる。前述したように、グラフィック処理パイプライン30は、グラフィック処理コマンドを実行するためにともに動作する複数のステージを含んでいる。しかしながら、このようなステージは、個別のハードウェア・ブロックで必ずしも実施される必要はないことが注目されるべきである。例えば、幾何学処理ステージ34およびピクセル処理パイプライン38の一部が、統一されたシェダー・ユニットの一部として実現されうる。繰り返すが、グラフィック・パイプライン30は、ビニング・レンダリング・モードおよびダイレクト・レンダリング・モードを含む複数の異なるレンダリング・モードのうちの1つで実行するように構成されうる。
コマンド・エンジン32は、グラフィック処理コマンドを受け取りうる。そして、グラフィック処理コマンドを実行するためのさまざまな動作を実行するように、グラフィック処理パイプライン30内の残りの処理ステージを構成しうる。グラフィック処理コマンドは例えば、ドローイング・コマンドおよびグラフィック状態コマンドを含みうる。ドローイング・コマンドは、1または複数の頂点の位置座標を指定する頂点仕様コマンドと、さらに、いくつかの事例においては、例えば色座標、法線ベクトル、テクスチャ座標、およびフォグ座標のような頂点のおのおのに関連付けられたその他の属性値とを含みうる。グラフィック状態コマンドは、プリミティブ・タイプ・コマンド、変換コマンド、照明コマンド等を含みうる。プリミティブ・タイプ・コマンドは、レンダリングされるべきプリミティブのタイプ、および/または、プリミティブを生成するために頂点がどのように組み合わされるのか、を指定しうる。変換コマンドは、頂点に対して実行する変換のタイプを指定しうる。照明コマンドは、グラフィック・シーン内の異なる光のタイプ、方向、および/または、位置を指定しうる。コマンド・エンジン32は、受け取られた1または複数のコマンドに関連付けられたプリミティブおよび/または頂点に関する幾何学処理を、幾何学処理ステージ34に対して実行させうる。
幾何学処理ステージ34は、ラスタライゼーション・ステージ36のためのプリミティブ・データを生成するために、1または複数の頂点に対するプリミティブ設定演算および/または頂点毎の演算を実行しうる。おのおのの頂点は、例えば、位置座標、明度、法線ベクトル、およびテクスチャ座標のような属性のセットに関連付けられうる。幾何学処理ステージ34は、頂点毎のさまざまな演算にしたがって、これら属性のうちの1または複数を修正する。例えば、幾何学処理ステージ34は、修正された頂点位置座標を生成するために、頂点位置座標において1または複数の変換を実行しうる。幾何学処理ステージ34は、例えば、修正された頂点位置座標を生成するために、モデリング変換、ビューイング変換、プロジェクション変換、モデル・ビュー変換、モデル・ビュー・プロジェクション変換、ビューポート変換、およびデプス範囲スケーリング変換のうちの1または複数を頂点位置座標に適用しうる。いくつかの事例では、頂点位置座標は、モデル空間座標でありうる。そして、修正された頂点位置座標は、スクリーン空間座標でありうる。スクリーン空間座標は、モデリング変換、ビユーイング変換、プロジェクション変換、およびビューポート変換が適用された後に取得されうる。いくつかの事例では、幾何学処理ステージ34はまた、頂点のために修正された色座標を生成するために、頂点に対して頂点毎の照明演算を実行しうる。幾何学処理ステージ34はまた、例えば、正規変換、正規規格化演算、ビュー・ボリューム・クリッピング、ホモジニアス分割、および/または、バックフェース間引き演算を含むその他の演算をも実行しうる。
幾何学処理ステージ34は、ラスタライズされるべきプリミティブを定義する1または複数の修正された頂点からなるセットのみならず、プリミティブを生成するために頂点がどのように結合するのかを示すデータを生成しうる。修正された頂点のおのおのは、例えば、修正された頂点位置座標と、頂点に関連付けられた処理された頂点属性値とを含みうる。プリミティブ・データは、集合的に、グラフィック処理パイプライン30のさらなるステージによってラスタライズされるべきプリミティブに対応しうる。概念的に、おのおのの頂点は、プリミティブの2つのエッジが出会うプリミティブのコーナに対応しうる。幾何学処理ステージ34は、さらなる処理のために、プリミティブ・データを、ラスタライゼーション・ステージ36へ提供しうる。
いくつかの例において、幾何学処理ステージ34のすべてまたは一部は、1または複数のシェダー・ユニットにおいて動作する1または複数のシェダー・プログラムによって実施されうる。例えば、幾何学処理ステージ34は、例えば、頂点シェダー、幾何学シェダー、またはこれらの任意の組み合わせによって実施されうる。他の例において、幾何学処理ステージ34は、固定機能ハードウェア処理パイプラインとして、または、固定機能ハードウェアと、1または複数のシェダー・ユニットで動作する1または複数のシェダー・プログラムとの組み合わせとして実施されうる。
ラスタライゼーション・ステージ36は、ラスタライズされるべきプリミティブ示すプリミティブ・データを、幾何学処理ステージ34から受け取り、プリミティブをラスタライズし、ラスタライズされたプリミティブに対応する複数のソース・ピクセルを生成する、ように構成される。いくつかの例において、ラスタライゼーション・ステージ36は、ラスタライズされるべきプリミティブによって、どのスクリーン・ピクセル位置がカバーされているのかを判定し、プリミティブによってカバーされるべきであると判定されたおのおののスクリーン・ピクセル位置のソース・ピクセルを生成しうる。ラスタライゼーション・ステージ36は、例えば、エッジ・ウォーキング技法や、評価エッジ式等のような当業者に周知の技法を用いることによって、どのスクリーン・ピクセル位置が、プリミティブによってカバーされているのかを判定しうる。ラスタライゼーション・ステージ36は、結果として得られたソース・ピクセルを、さらなる処理のために、ピクセル処理パイプライン38に提供しうる。
ラスタライゼーション・ステージ36によって生成されたソース・ピクセルは、例えば目標ピクセルのようなスクリーン・ピクセル位置に相当し、1または複数の色属性に関連付けられうる。ラスタライズされた特定のプリミティブのために生成されたソース・ピクセルのすべては、ラスタライズされたプリミティブに関連付けられていると言われうる。プリミティブによってカバーされるべきと、ラスタライゼーション・ステージ36によって判定されたピクセルは、概念的には、プリミティブの頂点を表すピクセルと、プリミティブのエッジを表すピクセルと、プリミティブの内部を表すピクセルとを含みうる。
ピクセル処理パイプライン38は、ラスタライズされたプリミティブに関連付けられたソース・ピクセルを受け取り、ソース・ピクセルに対して1または複数のピクセル毎の演算を実行するように構成される。ピクセル処理パイプライン38によって実行されるべきピクセル毎の演算は、例えば、アルファ・テスト、テクスチャ・マッピング、色計算、ピクセル・シェーディング、ピクセル毎の照明、フォグ処理、ブレンディング、ピクセル・オーナシップ・テキスト、ソース・アルファ・テスト、ステンシル・テスト、デプス・テスト、シザース・テスト、および/または、ストリッピング演算、を含む。さらに、ピクセル処理パイプライン38は、1または複数のピクセル毎の演算を実行するために、1または複数のピクセル・シェダー・プログラムを実行しうる。ピクセル処理パイプライン38による生成の結果得られるデータは、本明細書において目標ピクセル・データと称され、フレーム・バッファ15内に格納されうる。目標ピクセル・データは、処理されたソース・ピクセルと同じ表示位置を有する、フレーム・バッファ15内の目標ピクセルに関連付けられうる。目標ピクセル・データは、例えば、色値、目標アルファ値、デプス値等のようなデータを含みうる。
フレーム・バッファ15は、GPU12のための目標ピクセルを格納する。おのおのの目標ピクセルは、ユニークなスクリーン・ピクセル位置に関連付けられうる。いくつかの例において、フレーム・バッファ15は、おのおのの目標ピクセルのための目標アルファ値および色成分を格納しうる。例えば、フレーム・バッファ15は、おのおののピクセルの赤、緑、青、アルファ(RGBA)成分を格納しうる。ここで、“RGB”成分は、色値に対応し、“A”成分は、目標アルファ値に対応する。フレーム・バッファ15およびシステム・メモリ10は、個別のメモリ・ユニットであるとして例示されているが、別の例では、フレーム・バッファ15は、システム・メモリ10の一部でありうる。
前述したように、グラフィック処理パイプライン30は、ビニング・レンダリング・モードおよびダイレクト・レンダリング・モードを含む特定のレンダリング・モードにしたがってグラフィック・イメージをレンダリングしうる。ビニング・レンダリング・モードにしたがってレンダリングする場合、グラフィック処理パイプライン30は、結果として得られるグラフィック・イメージにレンダリングするために、プリミティブ(すなわち、1または複数のプリミティブ)のバッチを受け取りうる。プリミティブのバッチをレンダリングするために、結果として得られたグラフィック・イメージは、複数のより小さな部分(例えば、ビンまたはピクセルのタイル)に細分割されうる。そして、グラフィック処理パイプライン30は、グラフィック・イメージのおのおのの部分を、個別のレンダリング・パスとしてレンダリングしうる。
図3は、ビニング・レンダリング・モードのために、ビンに分割されたフレームを例示する概念図である。フレーム40は、例えばビン42のような複数のビンに分割されうる。一般に、グラフィック・ハードウェアは、データの少なくとも1つのビンを保持するのに十分なサイズからなる高速メモリ(例えば、図2のグラフィック・メモリ14)を含むだろう。フレームの特定の部分のための単一のレンダリング・パスの一部として、グラフィック処理パイプライン30は、フレームの目標ピクセル(例えば、目標ピクセルの特定のビン)の特定のサブセットに関するプリミティブのバッチのすべてまたはサブセットをレンダリングしうる。第1のビンに関して第1のレンダリング・パスを実行した後、グラフィック処理パイプライン30は、第2のビンに関して第2のレンダリング・パスを実行するという具合である。グラフィック処理パイプライン30は、すべてのビンに関連付けられたプリミティブがレンダリングされるまで、ビンを漸増的にトラバースしうる。
図4は、ビニング・レンダリング・モードにおいて使用されるビンをより詳細に示す概念図である。ビン44,46,48および50は、複数のピクセル52を含むようにレンダリング/ラスタライズされる。1または複数のグラフィック・プリミティブが、各ビンにおいて見えうる。例えば、三角形A(Tri A)の一部は、ビン44およびビン48の両方において見える。三角形B(Tri B)の一部は、ビン44,ビン46,ビン48およびビン50のおのおのにおいて見える。三角形C(Tri C)は、ビン46においてのみ見える。ビニング・レンダリング・モードの1つの例では、レンダリング・パスの間、シーンが、ビンに分割され、このビンにあるすべての三角形がレンダリングされる(これは、しばしば、ソフトウェア・ビニングと呼ばれる)。ビニング・レンダリング・モードの別の例では、最終的にレンダリングされたシーンにおいて、ビン内のどの三角形が実際に見えるのかを判定するための追加のステップが、レンダリング前に行われる(これは、しばしば、ハードウェア・ビニングと呼ばれる)。例えば、いくつかの三角形は、1または複数のその他の三角形の後ろにあるかもしれず、最終的にレンダリングされたシーンにおいて見えないであろう。このように、見えない三角形は、そのビンのためにレンダリングされる必要はない。
特定のレンダリング・パスを実行している間、その特定のレンダリング・パスに関連付けられたビンのピクセル・データが、(しばしば、ビン・バッファと呼ばれる)グラフィック・メモリ14に格納されうる。レンダリング・パスが実行された後、グラフィック処理パイプライン30は、グラフィック・メモリ14のコンテンツを、フレーム・バッファ15へ転送しうる。いくつかのケースでは、グラフィック処理パイプライン30が、グラフィック・メモリ14に格納されたデータを用いて、フレーム・バッファ15内のデータの一部を上書きしうる。別のケースでは、グラフィック処理パイプライン30は、フレーム・バッファ15内のデータを、グラフィック・メモリ14に格納されたデータと合成または結合しうる。グラフィック・メモリ14のコンテンツがフレーム・バッファ15へ転送された後、グラフィック処理パイプライン30は、グラフィック・メモリ14をデフォルト値に初期化し、別のビンに関して、後続するレンダリング・パスを開始しうる。
図5は、「ソフトウェア」ビニングを用いるビニング・レンダリング・モードを用いてシーンをレンダリングするためのコマンド構造の例を示す概念図である。レベル1インダイレクト・バッファ(IB1)60は、グラフィック・メモリ・パイプライン30のさまざまなステップを実行するようにGPU12を指示するための一連の実行コマンドを含む。IB160におけるおのおのの実行コマンドは、実質的に、レンダリング・パイプラインのさまざまな態様のためのコマンドを含む1または複数のレベル2インダイレクト・バッファ(IB2)へのポインタである。このようにして、グラフィック・レンダリング・パイプラインを実行するための2またはそれ以上のレベル構造が確立される。GPU12は、IB1 60におけるおのおのの実行コマンドをシーケンシャルにステップしうる。ここでは、IB1 60におけるおのおのの実行は、IB2に格納されたコマンドの特定のスタックを指す。IB1およびIB2は、内蔵型のCPU12であるメモリでありうる。または、例えばシステム・メモリ10のように、GPU12の外部のメモリでありうる。
IB1 60におけるプリアンブル実行コマンドは、GPU12によって実行されることが可能なプリアンブル・コマンドを含むプリアンブルIB2 62を指す。例えば、プリアンブルIB2 62は、GPU12のスタティック状態を初期化し、GPU12の初期レンダリング状態を設定するコマンドを含みうる。GPUのスタティック状態は、特定のアプリケーションに基づいて変わらない設定を含んでいる。一方、レンダリング状態は、特定のアプリケーション(例えば、OpenGL.アプリケーション対ダイレクトXアプリケーション)に基づいて変わりうるGPU設定を含む。プリアンブルIB2におけるコマンドが完了した後、制御は、次の実行コマンドを行うために、IB1 60に戻る。
IB1 60における次の実行コマンドは、使用されているレンダリング・モードのレンダリング・パスを設定する。再び、図5の例に示すように、レンダリング・モードは、ソフトウェア・ビニングを用いるビニング・レンダリング・モードである。次に、IB1 60におけるロード・ビン実行コマンドは、ロードIB2 66におけるコマンドを指す。ソフトウェア・ビニングの場合、特定のビンのデータが、GMEM14にロードされる(ロード2GMEM)。その後、制御は、IB1 60に戻り、レンダリング・ビン実行コマンドは、レンダリングIB2におけるコマンドを指す。IB2 68をレンダリングすることは、一連の状態コマンドと、ロードされたビンにおいて三角形を描画するためのドロー・コマンドとからなる。おのおののドロー・コマンドは、GPU12に対して、コマンドおよび/またはGPUハードウェアによって確立された(例えば、幾何学処理ステージ34、ラスタライゼーション・ステージ36、および/または、ピクセル処理パイプライン38のような)グラフィック処理パイプライン30にしたがって三角形を描画するように指示する。レンダリングIB2 68に示されるように、ドロー・コマンドのおのおのは、特定の三角形が実際にビンにおいて見えるか否かを判定するために、ビジビリティ(visibility)ストリームが使用されないことを示す。ビジビリティ・ストリームは、「ハードウェア」ビニングを用いるビニング・レンダリング・モードにおいて生成され、図6を参照してさらに詳細に説明される。レンダリングIB2 68における状態コマンドは、GPU12によって実行されるグラフィック処理パイプラインの挙動に影響を与える。例えば、状態コマンドは、色、ポリゴン・モード(例えば、固体または線ではなく点)、ブレンディング(オン/オフ)、デプス・テスト(オン/オフ)、テクスチャリング(オン/オフ)、間引き、クリッピング、およびその他の論理演算を変更しうる。レンダリングIB2 68において示されているように、状態コマンドが、三角形毎(または、プリミティブ毎)ベースで発行されうる。すなわち、コマンド“State Tri A”は、三角形Aを描画している場合、GPU12の挙動に影響を与えうる一方、“State Tri B1”コマンドおよび“State Tri B2”コマンドは、三角形Bを描画している場合、GPU12の挙動に影響を与えうる。“State Tri B1”コマンドおよび“State Tri B2”コマンドは、単に、複数の状態コマンドが、おのおのの三角形について実行されうることを示しうる。
レンダリングIB2 68においてすべてのコマンドが実行された後(例えば、すべての三角形が描画された後)、制御は、IB1 60に戻る。格納ビン実行コマンドは、GMEM14からレンダリングされたビンをメモリ(例えば、フレーム・バッファ15)へ格納するためのコマンドを含む、ストアIB2 70へのポインタを含みうる。その後、レンダリング・パス(例えば、IB1 60に図示されるように、ビンを格納するための、設定レンダリング・パスからの実行コマンド)が、1または複数のフレームについて、おのおののビン72について繰り返される。
図6は、「ハードウェア」ビニングを用いたビニング・レンダリング・モードを用いてシーンをレンダリングするためのコマンド構造の例を図示する概念図である。IB1 61における実行コマンドは、「ビニング」パスに関連するコマンドを除いて、図6のIB1 60のものに類似している。「ビニング」パスは、ビン内の特定の三角形が、最終的にレンダリングされたシーンにおいて実際に見えるか否かを示すビジビリティ・ストリームを生成するために使用される。例えば、いくつかの三角形は、シーン内の別の三角形の後ろに存在しうるので、いくつかのシナリオ(例えば、正面の三角形が不透明である場合、または、ブレンディングが使用されていない場合)では、見えないだろう。ビン72をレンダリングする前に、IB1 61は、ビニングIB2 74におけるコマンドを指すビニング・パス実行コマンドを含みうる。ビニングIB2 74は、GPU12に対して、グラフィック・パイプラインの簡略バージョン(例えば、レンダリングIB2 69の簡略バージョン)を実行させるコマンドを含むが、最終的にレンダリングされたシーンにおいて三角形が見えるか否かを判定するデプス・テスト(Zテスト)に基づいて、ビンにおけるおのおのの三角形のビジビリティ・ストリームを更新するステップを加える。
ビニング・パスの目的は、現在のビンと交差する三角形を特定することである。そのため、三角形が特定のビンと交差するか否かを特定するために、三角形の頂点の位置しか判定される必要がない。ビニング・パスは、頂点の位置に影響を与える命令群のみを含む簡略化された頂点シェダーを利用する。例えば、三角形の頂点の位置に影響を与えない色命令群、テクスチャ座標、およびその他の命令群は、ビニング・パスのために使用される簡略化された頂点シェダーから除去されうる。ビニング・パスはまた、おのおのの三角形の適切なデプスを決定するために、精細なラスタライゼーションではなく、粗いラスタライゼーションを利用する。粗いラスタライゼーションは、精細なラスタライゼーションよりも低い精度で(例えば、低位のビットを用いて)デプス値を計算する。ビンにおいて三角形が見えるか否かを判定するために、適切なデプス値のみが必要とされる。ピクセル・シェダーは、ビニング・パスにおいて使用されない。
ビニング・パスは、その後、ビンにおける三角形が、そのビンにおける他の三角形に対して見えるか否かを判定するために、この粗いデプス・テストを利用する。このデプス・テストに基づいて、ビジビリティ・ストリームが更新される。ビジビリティ・ストリームは、レンダリングされたビンにおける特定の三角形が見えるか否かを示す一連のビットでありうる(例えば、1は、三角形が見えることを示し、0は、三角形が見えないことを示す)。
レンダリングIB2 69におけるコマンドは、ビジビリティ・ストリームを用いることを除いて、図5におけるレンダリングIB 68のものと類似している。レンダリングIB2 69におけるドロー・コマンド(例えば、Draw Tri A、Draw Tri B、Draw Tri C等)は、特定の三角形を描画する必要があるか否かを判定するために、ビニング・パスによって生成されたビジビリティ・ストリームを使用しうる。例えば、ドローイングは、ビジビリティ・ストリームによって、見えないと示された三角形についてはスキップされうる。
ダイレクト・レンダリングは、ビニング・レンダリング・モードにおけるように、ビン毎にフレームをレンダリングするのではなく、グラフィック・パイプラインによって、1つのパスで、フレーム全体をレンダリングする。制限された容量のグラフィック・メモリしか有さないビニング・ベースのアーキテクチャで実行された場合、ダイレクト・レンダリングは、一般に、より低速のシステム・メモリを利用する。
図7は、ダイレクト・レンダリング・モードを用いてシーンをレンダリングするためのコマンド構造の例を図示する概念図である。ダイレクト・レンダリング・モードのコマンドは、図5におけるソフトウェア・ビニングのものに類似しているが、ビン毎ベースでレンダリングするのではなく、フレーム全体が、1つのパスでレンダリングされる。例えば、IB1 80における実行コマンドは、ビンをロードすること、レンダリングすること、および格納することを除いて、IB1 60におけるものに類似しており、IB1 80における実行コマンドは、フレームをロードし、レンダリングし、格納するそれぞれのIB2におけるコマンドを指す。さらに詳しくは、IB1 80におけるロード・フレーム実行コマンドは、フレームのデータをシステム・メモリ(ロード2システム・メモリ)にロードするためのコマンドを含むロードIB2 86を指す。IB1 80におけるコマンドは、プリアンブル、プリアンブル/リストア、レンダリング・パス設定、フレーム・ロード、フレーム・レンダリング、およびフレーム格納を含みうる。IB1 80におけるレンダリング・フレーム実行コマンドは、GPU12に対して、フレーム内にプリミティブを描画させる命令群を含むレンダリングIB2 88を指す。ソフトウェア・ビニングのように、ダイレクト・レンダリング・モードにおけるレンダリングは、ハードウェア・ビニング・パスもビジビリティ・ストリームも利用しない。レンダリングIB2 88における何れかのドロー・コマンド(例えば、Draw Tri A、Draw Tri B、Draw Tri C)は、レンダリングされた三角形を格納するためにシステム・メモリを利用するだろう。ストア・フレーム実行コマンドは、システム・メモリからレンダリングされたフレームを別のメモリ(例えば、フレーム・バッファ15)に格納するための命令群(システム・メモリから格納)を含むストアIB2 90を指す。
IB1 80におけるプリアンブル実行コマンドは、GPU12の定常状態と初期レンダリング状態を確立するための命令群を含むプリアンブルIB2 82を指す。これらのコマンドは、図6のプリアンブルIB2 62におけるコマンドと同様に動作するが、ビニング・レンダリング・モードのためではなく、ダイレクト・レンダリング・モードのためのレンダリング状態を設定する。
本開示の技法によれば、アプリケーション(例えば、図2のソフトウェア・アプリケーション24)が、シーンのレンダリングを開始する前に、1または複数のプロセッサ(例えば、CPU 6)で動作するグラフィック・ドライバ(例えば、グラフィック・ドライバ7)は、所望のレンダリング・パスに関するヒューリスティック・データに基づいてレンダリング・モードを決定する(例えば、ビニング・レンダリングかダイレクト・レンダリングかを決定する)。いくつかの技法では、現在のレンダリング・パスに関するヒューリスティック・データは、以前のレンダリング・パスから収集されうる。しかしながら、このアプリケーションは、新たなシーンをレンダリングする前に、レンダリング技法を切り替えるので、この技法は、レンダリング・モードを決定するための常に最適な手法という訳ではない。そのため、この技法は、適切なレンダリング・モードに切り替えるための新たなデータが十分に蓄積されるまで、非効率的なレンダリングに至りうる。
さらに、現在のシーンが、以前のシーンと異なるのであれば、過去のレンダリングに関するヒューリスティック・データは、現在のシーンのために最も適したレンダリング・モードを常に提供する訳ではない。例えば、迅速に変化するレンダリング・モードを最適に用いるであろうアプリケーションは、このようなヒューリスティックな分析を用いた多くの誤予測をもたらしうる。理想的には、グラフィック・ドライバは、所与のレンダリング・ターゲットのためのレンダリング・ロードを決定し、レンダリング・モード決定を直ちに行いうる。本開示は、レンダリング・モードのより適した決定のための技法と、レンダリング・モード間の切り替えのための技法とを提案する。
以下の技法は、任意のグラフィック・アプリケーション・プログラム・インタフェース(API)を用いたグラフィック処理システムのために適用可能であり、特に、ビニング・レンダリングを利用するグラフィックAPIのために適切である。このようなAPIの例は、マイクロソフトのDirectX9(DX9)、DX10、およびDX11のみならず、例えばOpenGLおよびOpenGL ESのようなオープン・ソース・グラフィックAPIを含む。
図8は、本開示の1つの例にしたがうレンダリング・コマンド・パッチを例示する概念図である。先ず、グラフィック処理システム(例えば、図1のコンピューティング・デバイス2)は、ビニング・モードにおいて、特定のアプリケーションが、現在のレンダリング・ターゲット(例えば、1または複数のフレーム)へより最適にレンダリングすると仮定する。この特定のレンダリング・モードの選択(例えば、ビニング・レンダリングまたはダイレクト・レンダリング)は、グラフィック・ドライバ7によって取り扱われうる。ビニングがイネーブルされた場合、グラフィック・ドライバ7は、所与のレンダリング・ターゲットのためのロード・コマンド、格納コマンド、レンダリング・コマンド、およびブロック転送(BLT)コマンドのすべてを、これらがフラッシュすることが必要になるまでバッチする。このコンテキストでは、フラッシュは、ドライバによってバッチされた何れかのレンダリング・コマンドをハードウェア(例えば、GPU12)へ送ることを意味する。ロード、格納、レンダリング、およびBLTのためのコマンドは、個別のバッファ(例えば、個別のIB2バッファ)に格納されうる。例えば、レンダリング・コマンドは、ビニング・レンダリング・モードIB2 68に格納されうる。
ビニング・レンダリング・モードにおけるレンダリング・コマンドは、あるレジスタに書き込まれた特別のアドレスを用い、これによって、高速グラフィック・メモリ(GMEM)がアクセスされるようになる。グラフィック・ドライバ7は、先ず、すべてのレンダリングのためにビニングがイネーブルされていると仮定するので、GMEMかシステム・メモリかの選択を行うすべてのレジスタは、GMEMアドレスを用いるだろう。図8におけるビニング・レンダリング・モードIB2 68は、三角形を描画することに関連付けられた一連のコマンド(Draw Tri)を示す。ここで、コマンド1,4,5は、GMEMアドレスを利用する。
レンダリングがフラッシュされるべきである場合、グラフィック・ドライバは、間もなく実行されるべきすべてのレンダリング・コマンドへのアクセスを有する。本開示の技法によれば、グラフィック・ドライバ7は、レンダリング・コマンドを分析するように構成されうる。そして、1または複数のレンダリング特性(例えば、レンダリング・パスに関するヒューリスティック・データ)を考慮しうる。そのようなレンダリング特性は、レンダリング・ターゲットのサイズおよびタイプ、デプス・テストがイネーブルされているか否かを示すインジケーション、使用されるシェダーの複雑さ、描画されたプリミティブの数、テクスチャ読取の数、読み取られた任意のテクスチャのサイズ、および/または、使用されているすべての表面のマイクロ・タイル・モードを含みうる。
例えば、GPUドライバ7は、レンダリング・ターゲットのサイズに基づいて、ビニングのオーバヘッド(例えば、GMEMに対するロード/格納サイクルとビニング・パスを実行するための時間)が、ビニングの正の効果によってオフセットされるか否かを判定しうる。例えば、小さなレンダリング・ターゲット(例えば、16×16)は、システム・メモリに保存している場合であっても、ダイレクト・レンダリング・モードにおいてより高速に動作しうる。
別の例として、デプス・テストを利用しないグラフィック・パイプラインは、ビニング・レンダリング・モードの利点を利用しない場合がありうる。一般に、ビニングが使用されない場合、既存のデプス値を読み取り、テストを実行し、新たなデプス値をシステム・メモリ内のバッファに書き戻すために、デプス・テストが適用される必要がある。デプス・テスト処理は、ビニングを用いて、GMEMにおいてなされる。これは、GMEMを「フリー」(すなわち、最小のオーバヘッド時間を用いて非常に高速)にする。そのため、特定のグラフィック・パイプラインのためにデプス・テストがイネーブルされていない場合、ビニング・レンダリング・モードは、デプス・テストに関連するどのようなメモリ帯域節約も与えないだろう。そのため、デプス・テストがディセーブルされているか、または使用されていない場合、GPUドライバ7は、ダイレクト・レンダリング・モードが好適であると判定しうる。
別の例として、デプス複雑さがあり(例えば、さまざまなデプスにおいてプリミティブがあり)、複数の三角形間にオーバラップがある場合、ビニング・レンダリング・モードは、最大の利点を提供する。描画されたプリミティブの数が少ない場合、ビニング・レンダリング・モードからの利点もまた少ないことがありうる。そのため、GPUドライバ7は、少ない数のプリミティブしか描画されるべきではない場合、ダイレクト・レンダリング・モードが好適であると判定しうる。同様に、GPUドライバ7は、多くの数のプリミティブが描画されるべきである場合、ビニング・レンダリング・モードが好適であると判定しうる。
別の例として、テクスチャが実行される場合、システム・メモリへの追加の格納およびシステム・メモリからの追加の読み取りは、システム・メモリ帯域幅に対して負の効果を有する。そのため、テクスチャする場合、ビニング・レンダリング・モードは、メモリに対するより迅速なアクセスを提供する(すなわち、ほとんどの格納および読取は、より高速なGMEMで実行される)。描画するシーンにおけるテクスチャ動作の数および頻度は、ビニング・レンダリング・モードからの利益を無効にしうる。すなわち、より少ないテクスチャ動作は、ビニング・レンダリング・モードがより少ない利益しか与えず、代わりにダイレクト・レンダリング・モードが使用されるべきであることを示唆しうる。
レンダリング・コマンドの分析の結果は、「スコア」として計算されうる。これは、前述したさまざまな特定のうちの1または複数を、例えば、重み付けベースまたは非重み付けベースで考慮しうる。このスコアが、所与のしきい値未満である場合、ダイレクト・レンダリング・モードが使用される。このスコアが、所与のしきい値よりも高い場合、ビニング・レンダリング・モードが使用される。そのため、この技法は、現在のレンダリング・モードを決定するための、現在のレンダリング・ターゲットのジャスト・イン・タイム(JIT)分析を提供する。過去のレンダリング・パスのヒューリスティック分析は必要ではない。しかしながら、過去のレンダリング・パスのヒューリスティック分析は、現在のレンダリング・ターゲットの分析の代わりに、または、それと連携して使用されうる。例えば、現在のレンダリング・モードのJIT分析は、過去のレンダリングの、蓄積された統計のヒューリスティック分析から決定されたレンダリング・モードが無効であることを示すインジケータとして使用されうる。
本開示の別の例によれば、レンダリング・モードの決定(例えば、ビニング・レンダリング・モードかダイレクト・レンダリング・モードかの決定)は、「ハードウェア」ビニングを用いるグラフィック処理システムにおけるオーバドロー・トラッカを用いてなされうる。
図9は、本開示の1つの例にしたがうオーバドロー・トラッキングを例示する概念図である。オーバドローの量が多い場合、ビニング・レンダリング・モードは、ダイレクト・レンダリング・モードに比べて、最も効率的である。オーバドローは、オーバラップするいくつかのグラフィック・プリミティブがある場合に生じる。このようなプリミティブのすべてを描画することは、効率的ではないだろう。なぜなら、いくつかのプリミティブの一部は、最終的なシーンにおいて見えない(例えば、別の不透明なプリミティブの背後にある)ことがありうるからである。「ハードウェア」ビニングは、(例えば、前述したようなビジビリティ・ストリームを生成することによって)フレームのうちのいくつかのタイルにおけるオーバドローを低減するために使用されうる。
ビニングを利用するグラフィック・アーキテクチャでは、一般に2つのフェーズがある。それらは、1)変換された頂点位置に基づいて、プリミティブを、ビットの揃ったスクリーンにソートするビニング・フェーズと、2)ビンのおのおの(すなわち、ビンにおけるプリミティブ)がレンダリングされるレンダリング・フェーズと、である。いくつかのグラフィック処理アーキテクチャはまた、ソート・ステップに加えて、プリミティブ毎のビジビリティ・ストリームと、(例えば、いわゆる、「ハードウェア」ビニングにおける)領域に関連付けられた粗いグレイン・デプス(Z)値とを生成しうる。しかしながら、この「ハードウェア」ビニングは、ビンにおけるプリミティブの分布と、関連付けられたオーバドローに関するダイレクトな情報を生成しない場合がありうることに注目されたい。本開示は、粗いグレインZラスタライザのものと同じグラニュラリティでオーバドロー・トラッカ(すなわち、ビニングIB2 94におけるコマンド)を追加することを提案する。例えば、GPU12に対して、おのおののビンのオーバドローの量の計算、および、計算されたオーバドローの量に基づくオーバドロー・トラッカの更新を実行させるためのコマンド(例えば、「オーバドロー計算」および「オーバドロー・トラッカ更新」)が、ビニングIB2 94に追加されうる。
この「オーバドロー」は、領域においてラスタライズされたプリミティブ間のオーバラップと、ビニング・レンダリングを用いることの利益とを表す、領域毎の整数値でありうる(ここで、領域は、ピクセル、ビンの一部、ビン、または複数のビンでありうる)。グラフィック・ドライバ7は、オーバドロー数に対するアクセスを有し、レンダリング・モード決定を行うために、オーバドロー数を用いうる。この技法は、その後、この値をビン内のすべての領域に、さらには、シーン内のすべてのビンにアグリゲートするために拡張されうる。これによって、ソフトウェア・アプリケーションおよび/またはドライバ(例えば、グラフィック・ドライバ7)は、他のヒューリスティックと比較された場合に、ビニング・レンダリングが有益であるか否かを迅速に判定できるようになる。さらに、これらの技法はまた、複雑なレンダリング・シナリオにおける動作の領域を視覚化するためのデバック・ツールとしても使用されうる。
図10は、4つの16×16ビンにおけるオーバドローを計算する1つの例を例示する。この例において、「オーバラップ」は、おのおののピクセルについて最初に計算される。オーバラップは、ピクセルに触れる1より多くのプリミティブの数として定義される。ビン95およびビン99におけるピクセルはすべて、ゼロであるオーバラップ・スコアを有するであろう一方、例えば、ビン101のピクセル96は、1であるオーバラップ・スコアを有するであろう。なぜなら、そのピクセルには2つの三角形があるからである。この「オーバドロー」数は、ビン内のピクセルの総数によって除された、ビンのオーバラップ・スコアの総和(例えば、オーバドロー=ピクセル毎のオーバラップの総数/ピクセル数)として定義されうる。図10において図示される例では、ビン101は、30/16のオーバドロー数を有するであろう一方、ビン95とビン99との両方は、0であるオーバドロー・スコアを有するであろう。あるしきい値よりも高いオーバドロー数は、このオーバドロー数に関連付けられた領域のためにビニング・レンダリング・モードが使用されるべきであることを示しうる一方、あるしきい値未満のオーバドロー数は、このオーバドロー数に関連付けられた領域のためにダイレクト・レンダリング・モードが使用されるべきであることを示しうる。
図8に戻って、グラフィック・ドライバ7は、スコアに基づいて(レンダリング・コマンドおよび/またはオーバドロー・トラッカの分析に基づいて)最適のモードを決定する。グラフィック・ドライバ7はまた、より最適なレンダリング・モードを決定することと連携して、GMEMアドレスを利用するすべてのビニング・レンダリング・コマンド(図8の例におけるコマンド1,4,5)をトラックするように構成されうる。グラフィック・ドライバ7は、これらコマンドのおのおのの対応するシステム・メモリ・アドレスを(例えば、システム・メモリ10に)格納し、これによって、GMEMアドレスを用いるビニング・レンダリング・コマンドが、システム・メモリ・アドレスを使用するように変更されうる。ダイレクト・レンダリングが、より最適なモードであると判定されると、グラフィック・ドライバ7は、GMEMアドレスをシステム・メモリ・アドレスと置き換えるようにビニング・レンダリング・モードIB2 68をパッチし、これによって、ダイレクト・レンダリング・モードIB2 88を生成しうる。このようにして、ダイレクト・レンダリングのためのレンダリング・コマンドは、ダイレクト・レンダリング・モードIB2のための全体的なコマンド構造を再生成することなく生成されうる。最後に、グラフィック・ドライバ7は、フラッシュ時において、BLT IB2およびレンダリングIB2を実行せよ(この場合、レンダリングIB2は、システム・メモリ・アドレスを使用するように変更される)とのコマンドをIB1(例えば、図7のIB1 80)に追加し、GPU7は、IB1の実行を開始するようにシグナルされる。
本開示の別の例では、レンダリングのために使用されるおのおののレジスタは、ハードウェアで実現されうる。図11は、本開示のこの例にしたがうレンダリング・モード選択を例示する概念図である。所与のレンダリング・モードのためにどのセットのレジスタ(例えば、ビニング・レンダリング・モード・レジスタ104またはダイレクト・レンダリング・モード・レジスタ106)が使用されるのかを制御するために、グローバル制御レジスタ102が使用されうる。ビニング・レンダリング・モード・レジスタ104は、目標サーフェス情報(すなわち、ビン)、GMEMのアドレス・レジスタ、および、(ハードウェア・ベースのビニング・レンダリングのための)ビジビリティ・ストリーム利用を取り扱いうる。ダイレクト・レンダリング・モード・レジスタ106は、システム・メモリへのアドレスを含むだろう。グローバル制御レジスタ102は、前述したように、レンダリング・モードのJIT分析に基づいて、例えば、前述したレジスタのうちのどのバージョンが、レンダリングIB2 118にコマンドをポピュレートするために使用されるのかを制御する。グラフィック・ドライバ7は、ビニング・レンダリング・モード・レジスタ104またはダイレクト・レンダリング・モード・レジスタ106を選択するために、グローバル制御レジスタ102を制御しうる。前述したように、本技法は、ソフトウェアを用いてIB2をパッチするのではなく、ハードウェア・レジスタを用いる。グローバル制御レジスタ102は、IB1にありうる。
本開示の別の例では、コマンド・バッファをパッチするための技法が提案される。図12は、本開示のこの例にしたがうレンダリング・コマンド・パッチングを例示する概念図である。この提案された例の技法は、ビニング・レンダリング・モードからダイレクト・レンダリング・モードに切り替わる場合に、コマンド・バッファをパッチするために使用されうる。しかしながら、以下の技法は、コマンド・バッファをパッチすることが所望される任意の状況において利用されうる。例えば、コマンドは、グラフィック・メモリの仮想化をサポートするため、リソース・レベル・オブ・ディテール(LOD)のMIPレベルを、より低いMIPに変更するため、または、コマンド・バッファの実行前に修正スキャナを実行するため、にパッチされうる。ビニング・レンダリング・モードからダイレクト・レンダリング・モードへ切り替えるようにコマンド・バッファをパッチするために必要とされるCPUサイクルは、いくつかのシナリオでは、費用が嵩みうる。この例は、CPUオーバヘッドを低減することを目的とする。
一般に、この技法は、グラフィック・ドライバ7が、コマンド・バッファをパッチするために(GPUドライバ7の代わりに)GPU12を用いる手法を提供する。これによって、CPUオーバヘッドが最小化される。図8の例では、グラフィック・ドライバ7が、ビニング・レンダリングとダイレクト・レンダリングとの切り替えを行うのであれば、グラフィック・ドライバ7は、IB1へ実行コマンドを追加する前に、IB2コマンドのすべてのトラックして、パッチする。この例は、パッチ・リスト(例えば、図8のシステム・メモリに図示されるパッチ・リスト)を構築する代わりに、別のIB2におけるコマンド(例えば、任意の一般的な動作コマンド)を変更する書込コマンドを含む個別のパッチIB2 98を、グラフィック・ドライバ7が構築することを提案する。例えば、書込コマンドの宛先は、ダイレクト・レンダリング・モードがグラフィック・ドライバ7によって選択された場合に、システム・メモリ・アドレスを使用するために変更される必要のあるビニング・レンダリング・モードIB2 68における位置でありうる。グラフィック・ドライバ7は、コマンドをフラッシュする準備ができた場合、ダイレクト・レンダリング・モード入るために、「パッチングIB2」におけるコマンドを実行するオプション、または、パッチングIB2をスキップして、ビニング・モードで継続するオプション、を有する。グラフィック・ドライバ7は、IB1における実行コマンドに実行コマンド(パッチ・レンダリングIB2)を追加することによって実行されうるパッチングIB2 98に影響を与えうる。このようにして、GPU12は、IB2 98においてレンダリング・コマンドを実行する前に、IB2 98においてパッチング・コマンドを実行するだろう。そのため、レンダリング・モード切替を達成するために、CPU6にパッチをさせるのではなく、GPU12自身がレンダリングIB2 68にパッチをする。
図13は、本開示の1つの例にしたがう方法を例示するフローチャートである。図13の方法は、コンピューティング・デバイス2に常駐するCPU6、GPU12、および/または、その他任意のハードウェア、ファームウェア、ソフトウェア要素、またはこれらの組み合わせによって実行されうる。CPU6は、フレームをレンダリングするためのレンダリング・コマンドを生成するように構成されうる(1302)。ここで、レンダリング・コマンドは、ビニング・レンダリング・モード用である。CPU6はさらに、グラフィック・メモリ・アドレスを用いるレンダリング・コマンドをトラックするように構成されうる(1304)。
その後、CPU6は、レンダリング特性に基づいて、フレームのために、複数のレンダリング・モードのうちの1つのレンダリング・モードを決定しうる(1306)。ここで、複数のレンダリング・モードは、ビニング・レンダリング・モードとダイレクト・レンダリング・モードを含む。レンダリング特性は、マイクロ・タイル・モード、テクスチャのサイズ、テクスチャ読取の数、描画されたプリミティブの数、シェダーの複雑さ、デプス・テスト・ステータス、レンダリング・ターゲットのサイズおよびタイプのうちの1つを含む。複数のレンダリング・モードのうちの1つのレンダリング・モードを決定することは、複数のレンダリング・モードのうちの1つのレンダリング・モードを、現在のフレームのレンダリング特性に基づいて決定することを含みうる。別の例では、複数のレンダリング・モードのうちの1つのレンダリング・モードを決定することは、複数のレンダリング・モードのうちの1つのレンダリング・モードを、現在のフレーム、および、以前にレンダリングされたフレームのレンダリング特性に基づいて決定することを含みうる。
その後、CPU6は、決定されたレンダリング・モードがダイレクト・レンダリング・モードである場合、グラフィック・メモリ・アドレスを用いるレンダリング・コマンドを、システム・メモリ・アドレスを使用するように変更しうる(1308)。決定されたレンダリング・モードが、ビニング・レンダリング・モードである場合、CPU6は、レンダリング・コマンドを変更しないだろう。
CPU6はさらに、実行コマンドを第1のバッファに格納することと、レンダリング・コマンドを第2のバッファに格納することと、を実行するように構成されうる。これら実行コマンドは、レンダング・コマンドを指す。レンダリング・コマンドの変更は、グラフィック・メモリ・アドレスを、システム・メモリ・アドレスに置き換えるように第2のバッファをパッチすることを含みうる(1308)。CPU6はさらに、第2のバッファにおけるレンダリング・コマンドを指す実行コマンドを第1のバッファに追加しうる。その後、GPU12が、第1のバッファにおける実行コマンドを実行しうる。
別の例において、CPU6は、ビニング・モード特有情報を第1のレジスタに格納することと、ダイレクト・レンダリング・モード特有情報を第2のレジスタに格納することと、決定されたレンダリング・モードに基づいて第1のレジスタか第2のレジスタかを選択するために、グローバル・レジスタを利用することと、を実行するように構成されうる。ビニング・モード特有情報は、目標サーフェス情報を取り扱うレジスタ・アドレス、グラッフィク・メモリ・アドレス、および、ビジビリティ・ストリーム利用のうちの少なくとも1つを含む。ここで、ダイレクト・レンダリグ・モード特有情報は、システム・メモリ・アドレスを含む。
図14は、本開示の1つの例にしたがう方法を例示するフローチャートである。図14の方法は、コンピューティング・デバイス2に常駐するCPU6、GPU12、および/または、その他任意のハードウェア、ファームウェア、ソフトウェア要素、またはこれらの組み合わせによって実行されうる。CPU6は、シーンのプリミティブにビニング演算を実行するように構成されうる(1402)。これらプリミティブは、ビンに分割される。CPU6はさらに、シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算すること(1404)と、計算されたオーバドロー数に基づいてレンダリング・モードを決定すること(1406)と、を実行するように構成されうる。オーバドロー数があるしきい値よりも大きいのであれば、ビニング・レンダリング・モードが、レンダリング・モードとして決定されうる。オーバドロー数があるしきい値未満であれば、ダイレクト・レンダリング・モードが、レンダリング・モードとして決定されうる。その後、GPU12は、決定されたレンダリング・モードにしたがってシーンをレンダリングしうる(1408)。
オーバドロー数は、ビンの領域のために、複数のビンにわたって、および/または、シーン全体のために計算されうる。ビンのオーバドロー数を計算する(1404)ための1つの技法の例は、ビン内のおのおののピクセルのオーバラップ値を計算することと、ビン内のおのおののピクセルの計算された各オーバラップ値を総和して、合計オーバラップ値を生成することと、合計オーバラップ値を、ビン内のピクセル数によって除することによって、オーバドロー数を生成することと、を含みうる。オーバラップ値は、ピクセルに触れる、1つよりも多くのプリミティブの数として定義される。
図15は、本開示の1つの例にしたがう方法を例示するフローチャートである。図15の方法は、コンピューティング・デバイス2に常駐するCPU6、GPU12、および/または、その他任意のハードウェア、ファームウェア、ソフトウェア要素、またはこれらの組み合わせによって実行されうる。CPU6は、グラフィック演算を実行するための演算コマンドを第1のバッファに格納すること(1502)と、書込コマンドを第2のバッファに格納すること(1504)と、を実行するように構成されうる。ここで、書込コマンドは、第1のバッファにおける演算コマンドを変更して、変更された演算コマンドを生成する。演算コマンドおよび書込コマンドは、グラフィック・プロセッサによる実行が可能である。CPU6はさらに、第2のバッファにおける書込コマンドを実行させ(1506)、第2のバッファにおける書込コマンドを実行させた後、第1のバッファにおける変更された演算コマンドを実行させる(1508)、ように構成されうる。一例では、演算コマンドは、ビニング・レンダリング・モードのためのレンダリング・コマンドを含み、書込コマンドは、ビニング・レンダリング・モードのレンダリング・コマンドを、ダイレクト・レンダリング・モードのレンダリング・コマンドに変更する。
図16は、図15に図示される一般的な技法を利用する方法の例を例示するフローチャートである。図16の方法は、コンピューティング・デバイス2に常駐するCPU6、GPU12、および/または、その他任意のハードウェア、ファームウェア、ソフトウェア要素、またはこれらの組み合わせによって実行されうる。CPU6は、フレームをレンダリングするための演算コマンドを生成する(1602)ように構成されうる。ここで、演算コマンドは、ビニング・レンダリング・モード用である。CPU6はさらに、グラフィック・メモリ・アドレスを用いる演算コマンドをトラックする(1604)ように構成されうる。CPU6はさらに、書込コマンドを生成する(1606)ように構成されうる。書込コマンドは、グラフィック・メモリ・アドレスを用いる演算コマンドを、システム・メモリ・アドレスを用いる演算コマンドになるように変更する。CPU6は、演算コマンドを第1のバッファに格納し(1608)、書込コマンドを第2のバッファに格納する(1610)。
CPUはさらに、レンダリング特性に基づいて、フレームのために、複数のレンダリング・モードのうちの1つのレンダリング・モードを決定する(1612)ように構成されうる。ここで、複数のレンダリング・モードは、ビニング・レンダリング・モードおよびダイレクト・レンダリング・モードを含む。レンダリング特性は、マイクロ・タイル・モード、テクスチャのサイズ、テクスチャ読取の数、描画されたプリミティブの数、シェダーの複雑さ、デプス・テスト・ステータス、レンダリング・ターゲットのサイズおよびタイプのうちの1つを含む。複数のレンダリング・モードのうちの1つのレンダリング・モードを決定することは、複数のレンダリング・モードのうちの1つのレンダリング・モードを、現在のフレームのレンダリング特性に基づいて決定することを含みうる。別の例では、複数のレンダリング・モードのうちの1つのレンダリング・モードを決定することは、複数のレンダリング・モードのうちの1つのレンダリング・モードを、現在のフレーム、および、以前にレンダリングされたフレームのレンダリング特性に基づいて決定することを含みうる。
その後、CPU6は、決定されたレンダリング・モードがダイレクト・レンダリング・モードである場合、(例えば、GPU12によって)第2のバッファにおける書込コマンドを実行させる(1614)ように構成されうる。
1または複数の例では、前述された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれら任意の組み合わせで実現されうる。ソフトウェアで実現される場合、これら機能は、非一時的なコンピュータ読取可能な媒体を備える製造物品における1または複数の命令群またはコードとして格納されうる。コンピュータ読取可能な媒体は、コンピュータ・データ記憶媒体を含みうる。データ記憶媒体は、本開示において記述された技術を実施するための命令群、コード、および/または、データ構造を検索するために1または複数のコンピュータまたは1または複数のプロセッサによってアクセスされうる任意の利用可能な媒体でありうる。限定するのではなく、例として、このようなコンピュータ読取可能な媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスク記憶装置、磁気ディスク記憶装置またはその他の磁気記憶デバイス、フラッシュ・メモリ、または、命令群またはデータ構造の形態で所望のプログラム・コードを搬送または格納するように使用され、かつプロセッサによってアクセスされうるその他任意の媒体、を備えうる。本明細書で使用されるようにディスク(diskおよびdisc)は、コンパクト・ディスク(disc)(CD)、レーザ・ディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、Blu−ray(登録商標)ディスク(disc)を含む。ここで、diskは通常、データを磁気的に再生し、discは、レーザを用いてデータを光学的に再生する。前述した組み合わせもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
例えば、1または複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、またはその他等価な統合論理回路またはディスクリート論理回路のような1または複数のプロセッサによって実行されうる。さらに、いくつかの態様では、本明細書に記載された機能は、専用のハードウェア・モジュールおよび/またはソフトウェア・モジュール内に提供されうる。さらに、これら技術は、1または複数の回路または論理要素で完全に実現されうる。
本開示の技術は、無線ハンドセット、集積回路(IC)、またはICのセット(例えば、チップセット)を含む種々さまざまなデバイスまたは装置において実現されうる。さまざまな構成要素、モジュール、またはユニットは、本開示では、開示された技術を実行するように構成されたデバイスの機能態様を強調するように記載されているが、異なるハードウェア・ユニットによる実現を必ずしも必要とする訳ではない。むしろ、前述されたように、さまざまなユニットは、適切なソフトウェアおよび/またはハードウェアと連携する、前述されたような1または複数のプロセッサを含む共通のハードウェア・ユニットの集合によって提供されうるか、コーデック・ハードウェア・ユニットに結合されうる。
さまざまな例が記載された。これらの例およびその他の例は、以下の特許請求の範囲のスコープ内である。
以下に、出願時の特許請求の範囲に記載された発明を付記する。
[発明1]
グラフィック処理の方法であって、
シーンのプリミティブにビニング演算を実行することと、
前記シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算することと、
前記計算されたオーバドロー数に基づいて、レンダリング・モードを選択することと、
を備える方法。
[発明2]
決定されたレンダリング・モードにしたがって、前記シーンをレンダリングすること、をさらに備える発明1に記載の方法。
[発明3]
前記オーバドロー数が、あるしきい値よりも大きいのであれば、ビニング・レンダリグ・モードを選択すること、をさらに備える発明1に記載の方法。
[発明4]
前記オーバドロー数が、あるしきい値未満であれば、ダイレクト・レンダリグ・モードを選択すること、をさらに備える発明1に記載の方法。
[発明5]
ビンの領域について、前記オーバドロー数を計算すること、をさらに備える発明1に記載の方法。
[発明6]
複数のビンにわたる、前記オーバドロー数を計算すること、をさらに備える発明1に記載の方法。
[発明7]
前記シーン全体のための、前記オーバドロー数を計算すること、をさらに備える発明1に記載の方法。
[発明8]
前記オーバドローの量を示すオーバドロー数を計算することは、
ビン内のおのおののピクセルのオーバラップ値を計算することと、
前記ビン内のおのおののピクセルの、計算された各オーバラップ値を総和して、合計オーバラップ値を生成することと、
前記合計オーバラップ値を、前記ビン内のピクセル数によって除することによって、前記オーバドロー数を生成することと
を備える、発明1に記載の方法。
[発明9]
前記オーバラップ値は、ピクセルに触れる、1つよりも多くのプリミティブの数として定義される、発明8に記載の方法。
[発明10]
前記プリミティブは、三角形である、発明9に記載の方法。
[発明11]
グラフィック処理のために構成された装置であって、
シーンのプリミティブにビニング演算を実行する手段と、
前記シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算する手段と、
前記計算されたオーバドロー数に基づいて、レンダリング・モードを選択する手段と、
を備える装置。
[発明12]
決定されたレンダリング・モードにしたがって、前記シーンをレンダリングする手段、をさらに備える発明11に記載の装置。
[発明13]
前記オーバドロー数が、あるしきい値よりも大きいのであれば、ビニング・レンダリグ・モードを選択する手段、をさらに備える発明11に記載の装置。
[発明14]
前記オーバドロー数が、あるしきい値未満であれば、ダイレクト・レンダリグ・モードを選択する手段、をさらに備える発明11に記載の装置。
[発明15]
ビンの領域について、前記オーバドロー数を計算する手段、をさらに備える発明11に記載の装置。
[発明16]
複数のビンにわたる、前記オーバドロー数を計算する手段、をさらに備える発明11に記載の装置。
[発明17]
前記シーン全体のための、前記オーバドロー数を計算する手段、をさらに備える発明11に記載の装置。
[発明18]
前記オーバドローの量を示すオーバドロー数を計算する手段は、
ビン内のおのおののピクセルのオーバラップ値を計算する手段と、
前記ビン内のおのおののピクセルの、計算された各オーバラップ値を総和して、合計オーバラップ値を生成する手段と、
前記合計オーバラップ値を、前記ビン内のピクセル数によって除することによって、前記オーバドロー数を生成する手段と
を備える、発明11に記載の装置。
[発明19]
前記オーバラップ値は、ピクセルに触れる、1つよりも多くのプリミティブの数として定義される、発明18に記載の装置。
[発明20]
前記プリミティブは、三角形である、発明19に記載の装置。
[発明21]
グラフィック処理のために構成された装置であって、
シーンのプリミティブにビニング演算を実行することと、
前記シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算することと、
を実行するように構成されたグラフィック・プロセッサと、
前記計算されたオーバドロー数に基づいて、レンダリング・モードを選択することを実行するように構成されたプロセッサと、
を備える装置。
[発明22]
前記グラフィック・プロセッサはさらに、決定されたレンダリング・モードにしたがって、前記シーンをレンダリングすることを実行するように構成された、発明21に記載の装置。
[発明23]
前記グラフィック・プロセッサはさらに、前記オーバドロー数が、あるしきい値よりも大きいのであれば、ビニング・レンダリグ・モードを選択することを実行するように構成された、発明21に記載の装置。
[発明24]
前記グラフィック・プロセッサはさらに、前記オーバドロー数が、あるしきい値未満であれば、ダイレクト・レンダリグ・モードを選択することを実行するように構成された、発明21に記載の装置。
[発明25]
前記グラフィック・プロセッサはさらに、ビンの領域について、前記オーバドロー数を計算することを実行するように構成された、発明21に記載の装置。
[発明26]
前記グラフィック・プロセッサはさらに、複数のビンにわたる、前記オーバドロー数を計算することを実行するように構成された、発明21に記載の装置。
[発明27]
前記グラフィック・プロセッサはさらに、前記シーン全体のための、前記オーバドロー数を計算することを実行するように構成された、発明21に記載の装置。
[発明28]
前記グラフィック・プロセッサはさらに、
ビン内のおのおののピクセルのオーバラップ値を計算することと、
前記ビン内のおのおののピクセルの、計算された各オーバラップ値を総和して、合計オーバラップ値を生成することと、
前記合計オーバラップ値を、前記ビン内のピクセル数によって除することによって、前記オーバドロー数を生成することと
を実行するように構成された、発明21に記載の装置。
[発明29]
前記オーバラップ値は、ピクセルに触れる、1つよりも多くのプリミティブの数として定義される、発明28に記載の装置。
[発明30]
前記プリミティブは、三角形である、発明29に記載の装置。
[発明31]
前記グラフィック・プロセッサは、モバイル・デバイスにある、発明21に記載の装置。

Claims (28)

  1. グラフィック処理の方法であって、
    シーンのプリミティブにビニング演算を実行することと、
    前記シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算することと、
    前記計算されたオーバドロー数に基づいて、レンダリング・モードを選択することとを備え、
    前記オーバドローの量を示すオーバドロー数を計算することは、
    ビン内の複数のピクセルのおのおののオーバラップ値を計算することと、
    前記ビン内のピクセルのおのおのの、計算された各オーバラップ値を総和して、合計オーバラップ値を生成することと、
    前記合計オーバラップ値を、前記ビン内のピクセル数によって除することによって、前記オーバドロー数を生成することと
    を備える、方法。
  2. 前記選択されたレンダリング・モードにしたがって、前記シーンをレンダリングすること、をさらに備える請求項1に記載の方法。
  3. 前記オーバドロー数が、あるしきい値よりも大きいのであれば、ビニング・レンダリグ・モードを選択すること、をさらに備える、請求項1に記載の方法。
  4. 前記オーバドロー数が、あるしきい値未満であれば、ダイレクト・レンダリグ・モードを選択すること、をさらに備える請求項1に記載の方法。
  5. ビンの領域について、前記オーバドロー数を計算すること、をさらに備える請求項1に記載の方法。
  6. 複数のビンにわたる、前記オーバドロー数を計算すること、をさらに備える請求項1に記載の方法。
  7. 前記シーン全体のための、前記オーバドロー数を計算すること、をさらに備える請求項1に記載の方法。
  8. 前記オーバラップ値は、ピクセルに触れる、1つよりも多くのプリミティブの数として定義される、請求項1に記載の方法。
  9. 前記プリミティブは、三角形である、請求項8に記載の方法。
  10. グラフィック処理のために構成された装置であって、
    シーンのプリミティブにビニング演算を実行する手段と、
    前記シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算する手段と、
    前記計算されたオーバドロー数に基づいて、レンダリング・モードを選択する手段とを備え、
    前記オーバドローの量を示すオーバドロー数を計算する手段は、
    ビン内の複数のピクセルのおのおののオーバラップ値を計算する手段と、
    前記ビン内のピクセルのおのおのの、計算された各オーバラップ値を総和して、合計オーバラップ値を生成する手段と、
    前記合計オーバラップ値を、前記ビン内のピクセル数によって除することによって、前記オーバドロー数を生成する手段と
    を備える、装置。
  11. 前記選択されたレンダリング・モードにしたがって、前記シーンをレンダリングする手段、をさらに備える請求項10に記載の装置。
  12. 前記オーバドロー数が、あるしきい値よりも大きいのであれば、ビニング・レンダリグ・モードを選択する手段、をさらに備える請求項10に記載の装置。
  13. 前記オーバドロー数が、あるしきい値未満であれば、ダイレクト・レンダリグ・モードを選択する手段、をさらに備える請求項10に記載の装置。
  14. ビンの領域について、前記オーバドロー数を計算する手段、をさらに備える請求項10に記載の装置。
  15. 複数のビンにわたる、前記オーバドロー数を計算する手段、をさらに備える請求項10に記載の装置。
  16. 前記シーン全体のための、前記オーバドロー数を計算する手段、をさらに備える請求項10に記載の装置。
  17. 前記オーバラップ値は、ピクセルに触れる、1つよりも多くのプリミティブの数として定義される、請求項10に記載の装置。
  18. 前記プリミティブは、三角形である、請求項17に記載の装置。
  19. グラフィック処理のために構成された装置であって、
    シーンのプリミティブにビニング演算を実行することと、
    前記シーンの領域におけるプリミティブのオーバドローの量を示すオーバドロー数を計算することと、
    を実行するように構成されたグラフィック・プロセッサと、
    前記計算されたオーバドロー数に基づいて、レンダリング・モードを選択する
    ように構成されたプロセッサとを備え、
    前記グラフィック・プロセッサはさらに、
    ビン内の複数のピクセルのおのおののオーバラップ値を計算することと、
    前記ビン内のピクセルのおのおのの、計算された各オーバラップ値を総和して、合計オーバラップ値を生成することと、
    前記合計オーバラップ値を、前記ビン内のピクセル数によって除することによって、前記オーバドロー数を生成することと
    を実行するように構成された、装置。
  20. 前記グラフィック・プロセッサはさらに、前記選択されたレンダリング・モードにしたがって、前記シーンをレンダリングすることを実行するように構成された、請求項19に記載の装置。
  21. 前記グラフィック・プロセッサはさらに、前記オーバドロー数が、あるしきい値よりも大きいのであれば、ビニング・レンダリグ・モードを選択することを実行するように構成された、請求項19に記載の装置。
  22. 前記グラフィック・プロセッサはさらに、前記オーバドロー数が、あるしきい値未満であれば、ダイレクト・レンダリグ・モードを選択することを実行するように構成された、請求項19に記載の装置。
  23. 前記グラフィック・プロセッサはさらに、ビンの領域について、前記オーバドロー数を計算することを実行するように構成された、請求項19に記載の装置。
  24. 前記グラフィック・プロセッサはさらに、複数のビンにわたる、前記オーバドロー数を計算することを実行するように構成された、請求項19に記載の装置。
  25. 前記グラフィック・プロセッサはさらに、前記シーン全体のための、前記オーバドロー数を計算することを実行するように構成された、請求項19に記載の装置。
  26. 前記オーバラップ値は、ピクセルに触れる、1つよりも多くのプリミティブの数として定義される、請求項19に記載の装置。
  27. 前記プリミティブは、三角形である、請求項26に記載の装置。
  28. 前記グラフィック・プロセッサは、モバイル・デバイスにある、請求項19に記載の装置。
JP2014544746A 2011-11-30 2012-11-07 オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替 Expired - Fee Related JP5866457B2 (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,673 2012-07-19
US13/553,673 US9117302B2 (en) 2011-11-30 2012-07-19 Switching between direct rendering and binning in graphics processing using an overdraw tracker
PCT/US2012/063945 WO2013081788A1 (en) 2011-11-30 2012-11-07 Switching between direct rendering and binning in graphics processing using an overdraw tracker

Publications (2)

Publication Number Publication Date
JP2015506017A JP2015506017A (ja) 2015-02-26
JP5866457B2 true JP5866457B2 (ja) 2016-02-17

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 After (1)

Application Number Title Priority Date Filing Date
JP2014544747A Expired - Fee Related JP5847960B2 (ja) 2011-11-30 2012-11-07 グラフィックス処理における直接レンダリングとビニングとの間の切り換え

Country Status (7)

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

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8830246B2 (en) 2011-11-30 2014-09-09 Qualcomm Incorporated Switching between direct rendering and binning in graphics processing
US9087410B2 (en) * 2013-01-17 2015-07-21 Qualcomm Incorporated Rendering graphics data using visibility information
US10445243B2 (en) 2013-03-14 2019-10-15 Nvidia Corporation Fault buffer for resolving page faults in unified virtual memory system
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
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
US9836869B2 (en) 2015-04-01 2017-12-05 Mediatek Inc. Graphics-processing method of a graphics-processing unit and graphics-processing apparatus
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
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
CN109325899B (zh) 2018-09-07 2023-04-04 格兰菲智能科技有限公司 计算机系统、图形处理单元及其图形处理方法
CN109242756B (zh) * 2018-09-07 2023-04-04 格兰菲智能科技有限公司 计算机系统、图形处理单元及其图形处理方法
CN110152291A (zh) * 2018-12-13 2019-08-23 腾讯科技(深圳)有限公司 游戏画面的渲染方法、装置、终端及存储介质
CN112764668B (zh) * 2019-11-01 2024-07-05 伊姆西Ip控股有限责任公司 扩展gpu存储器的方法、电子设备和计算机程序产品
US11972518B2 (en) * 2020-01-20 2024-04-30 Advanced Micro Devices, Inc. Hybrid binning
US12112394B2 (en) * 2020-02-03 2024-10-08 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using configurable shaders
WO2021164305A1 (zh) * 2020-02-17 2021-08-26 苏州苏大维格科技集团股份有限公司 图形光栅化方法、装置及存储介质
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
US12086899B2 (en) 2020-08-07 2024-09-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
WO2022104583A1 (en) * 2020-11-18 2022-05-27 Qualcomm Incorporated Methods and apparatus for selection of rendering modes
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
US6762765B2 (en) * 2001-12-31 2004-07-13 Intel Corporation Bandwidth reduction for zone rendering via split vertex buffers
US6747657B2 (en) 2001-12-31 2004-06-08 Intel Corporation Depth write disable for zone rendering
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
US8830246B2 (en) 2011-11-30 2014-09-09 Qualcomm Incorporated Switching between direct rendering and binning in graphics processing

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5866457B2 (ja) オーバドロー・トラッカを用いたグラフィック処理におけるダイレクト・レンダリングとビニングとの切替
US10282813B2 (en) Flex rendering based on a render target in graphics processing
EP3308359B1 (en) Rendering using ray tracing to generate a visibility stream
EP3257024B1 (en) Hybrid rendering in graphics processing
KR101697910B1 (ko) 그래픽 프로세싱을 위한 임의적 제어 지점들에서의 결함-허용 선점 메커니즘
JP5844485B2 (ja) グラフィックス処理システムにおけるメモリアクセス帯域幅をデスティネーションアルファ値に基づいて減少させるための技法
JP2017531229A (ja) グラフィックス処理ユニットにおける高次フィルタリング
CN107077716B (zh) 用于图形处理的动态管线
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: 20150722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150728

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151023

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: 20151201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160104

R150 Certificate of patent or registration of utility model

Ref document number: 5866457

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

LAPS Cancellation because of no payment of annual fees