JP5855743B2 - グラフィックス処理ユニットにおけるレンダリングモード選択 - Google Patents

グラフィックス処理ユニットにおけるレンダリングモード選択 Download PDF

Info

Publication number
JP5855743B2
JP5855743B2 JP2014511495A JP2014511495A JP5855743B2 JP 5855743 B2 JP5855743 B2 JP 5855743B2 JP 2014511495 A JP2014511495 A JP 2014511495A JP 2014511495 A JP2014511495 A JP 2014511495A JP 5855743 B2 JP5855743 B2 JP 5855743B2
Authority
JP
Japan
Prior art keywords
rendering
graphics
gpu
render
unit
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.)
Active
Application number
JP2014511495A
Other languages
English (en)
Other versions
JP2014533382A (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 JP2014533382A publication Critical patent/JP2014533382A/ja
Application granted granted Critical
Publication of JP5855743B2 publication Critical patent/JP5855743B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

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

Description

本開示は、データを処理することに関し、より詳細には、グラフィックス処理ユニット(GPU)を使用してデータを処理することに関する。
グラフィックス処理ユニット(GPU)は、ディスプレイデバイス上でコンピュータグラフィックスを処理し、表示するために利用される専用グラフィックスレンダリングデバイスである。GPUは、様々な複雑なアルゴリズムについて典型的な汎用中央処理ユニット(CPU)よりも効率的な処理を行う高度並列構造で構築される。たとえば、複雑なアルゴリズムは、2次元(2D)または3次元(3D)コンピュータグラフィックスの表現に対応し得る。
GPUは、モバイルワイヤレス電話、携帯情報端末(PDA)、ビデオゲームデバイス、ビデオゲームコンソール、ビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、テレビジョンセットトップボックス、一体型テレビジョングラフィックスデバイス、デジタル記録デバイス、デジタルメディアプレーヤ、全地球測位システム(GPS)デバイス、デジタルカメラ、自動車ディスプレイなど、グラフィックスデバイス内に含まれ得る。グラフィックスデバイス上で実行されるグラフィックスアプリケーションは、アプリケーションプログラミングインターフェース(API)呼、または命令を呼び出すことによって、グラフィックスシーンのコンテンツを記述または定義し得、それらの呼または命令は、今度はGPUを使用して、表示のために画像をレンダリングする。
GPUのレンダリングエンジンは、直接レンダリングモード(an immediate rendering mode)または据置きレンダリングモード(a deferred rendering mode)のいずれかに従って動作し得る。直接レンダリングモードに従って動作するとき、GPUのレンダリングエンジンは、グラフィックスデータをフレームバッファに直接レンダリングする。据置きレンダリングモードに従って動作するとき、GPUのレンダリングエンジンは、グラフィックスデータを複数のタイル(tile)に分割するためのタイリングパス(a tiling pass)を実行し、複数のタイルの各々をローカルタイルバッファにレンダリングし、レンダリングされたタイルのための各々をタイルバッファからフレームバッファに読み込む。現在、直接レンダリングモードは、電力およびシステム帯域幅がそれほど問題ではないグラフィックスデバイスにおいて最も一般的に使用されており、据置きレンダリングモードは、電力およびシステム帯域幅が貴重であるモバイルデバイスにおいて最も一般的に使用されている。
本開示では、表示のためにグラフィックスデータをレンダリングするためにグラフィックス処理ユニット(GPU)が使用するレンダリングモードを自動的に選択するための技法について説明する。より詳細には、それらの技法は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、評価されたメトリックに基づいて現在レンダリングユニットのための直接レンダリングモードまたは据置きレンダリングモードのいずれかを自動的に選択することとを含む。レンダリングユニットは、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、または単一のレンダターゲットの一部分を備え得る。現在レンダリングユニットは、GPUによって現在レンダリングされているレンダリングユニットを備え得る。レンダリングモードを自動的に選択するための技法は、グラフィックスデータ中の各レンダリング境界において、すなわち、GPUが、前のレンダリングユニットをレンダリングし終え、現在レンダリングユニットをレンダリングし始めるとき、実行され得る。
最も効率的なレンダリングモードは、あるグラフィックスデータをレンダリングするときのGPUのパフォーマンスに基づいて変動し得る。したがって、選択されたレンダリングモードは、評価されたメトリックに基づいて、グラフィックスデータの現在レンダリングユニットをレンダリングするために、より少ない電力および/またはより少ないシステム帯域幅を使用することを予測されたレンダリングモードのうちの1つであり得る。本開示の技法は、選択されたレンダリングモードに従って動作するようにGPUを構成することを含む。いくつかの場合には、それらの技法は、自動的に選択されたレンダリングモードをオーバーライド(override)する、手動で選択されたレンダリングモードを受信することをも含み得る。手動で選択されたレンダリングモードが受信されたとき、GPUは、手動で選択されたレンダリングモードに従って動作するように構成され得る。
一例では、本開示は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、選択されたレンダリングモードに従って現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することとを備える、グラフィックスデータを処理する方法を対象とする。
別の例では、本開示は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを記憶するメモリバッファと、上記メトリックのうちの少なくとも2つを評価することと、評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、選択されたレンダリングモードに従って現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することとを行う1つまたは複数のプロセッサとを備える、グラフィックスデータを処理するためのグラフィックスデバイスを対象とする。
さらなる一例では、本開示は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価するための手段と、評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択するための手段と、選択されたレンダリングモードに従って現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成するための手段とを備える、グラフィックスデータを処理するためのグラフィックスデバイスを対象とする。
別の例では、本開示は、実行されたとき、1つまたは複数のプログラマブルプロセッサに、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、選択されたレンダリングモードに従って現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することとを行わせる、グラフィックスデータを処理するための命令を備えるコンピュータ可読媒体を対象とする。
1つまたは複数の例の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
グラフィックス処理ユニット(GPU)が使用するレンダリングモードを自動的に選択するように構成されたグラフィックスドライバを含むグラフィックスデバイスを示すブロック図。 GPUが使用するレンダリングモードを自動的に選択するためにグラフィックスドライバによって使用されるグラフィックスデバイスの機能ブロックをより詳細に示すブロック図。 GPUが使用するレンダリングモードを自動的に選択するように構成されたグラフィックスドライバの例示的な機能ブロックを示すブロック図。 GPUが使用するレンダリングモードを自動的に選択する、グラフィックスドライバの例示的な動作を示すフローチャート。 1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを収集する、グラフィックスドライバの例示的な動作を示すフローチャート。 重み付け方式を使用してメトリックを評価する、グラフィックスドライバの例示的な動作を示すフローチャート。
本開示では、表示のためにグラフィックスデータをレンダリングするためにグラフィックス処理ユニット(GPU)が使用するレンダリングモードを自動的に選択するための技法について説明する。より詳細には、それらの技法は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、評価されたメトリックに基づいて現在レンダリングユニットのための直接レンダリングモードまたは据置きレンダリングモードのいずれかを自動的に選択することとを含む。選択されたレンダリングモードは、評価されたメトリックに基づいて、グラフィックスデータの現在レンダリングユニットをレンダリングするために、より少ない電力および/またはより少ないシステム帯域幅を使用することを予測されたレンダリングモードのうちの1つであり得る。レンダリングユニットは、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、または単一のレンダターゲットの一部分を備え得る。現在レンダリングユニットは、GPUによって現在レンダリングされているレンダリングユニットを備え得る。レンダリングモードを自動的に選択するための技法は、グラフィックスデータ中の各レンダリング境界において、すなわち、GPUが、前のレンダリングユニットをレンダリングし終え、レンダリングし始めるとき、実行され得る。
図1は、グラフィックス処理ユニット(GPU)6が使用するレンダリングモードを自動的に選択するように構成されたグラフィックスドライバ10を含むグラフィックスデバイス2を示すブロック図である。本開示の技法によれば、グラフィックスドライバ10は、グラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、評価されたメトリックに基づいて現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、選択されたレンダリングモードに従って動作するようにGPU6を構成することとを行い得る。
グラフィックスデバイス2は、グラフィックスデータを送信および受信することと、様々なグラフィックスデータ処理アプリケーションをサポートすることと、ユーザへの提示のために処理済みグラフィックスデータを出力することとが可能である。グラフィックスデバイス2の例には、限定はしないが、モバイルワイヤレス電話、携帯情報端末(PDA)、ビデオゲームデバイス、ビデオゲームコンソール、ビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、テレビジョンセットトップボックス、一体型テレビジョングラフィックスデバイス、デジタル記録デバイス、デジタルメディアプレーヤ、全地球測位システム(GPS)デバイス、デジタルカメラ、自動車ディスプレイなどがある。グラフィックスデータは、静止画像データ、ビデオデータ、または他のマルチメディアデータを備え得る。本開示では、グラフィックスデータは、しばしば、複数の連続フレームを含むビデオデータとして説明され得る。ただし、それは、本開示の技法に従ってレンダリングされ得るグラフィックスデータのタイプを限定するものではない。
図1に示す例では、グラフィックスデバイス2は、グラフィックスドライバ10をもつ中央処理ユニット(CPU)4と、レンダリングエンジン12をもつGPU6と、デバイスメモリ8と、トランシーバモジュール14と、ユーザ入力デバイス16と、ディスプレイ18とを含む。他の場合には、たとえば、グラフィックスデバイス2がデスクトップコンピュータであるとき、ディスプレイ18および/またはユーザ入力デバイス16はグラフィックスデバイス2の外部にあり得る。CPU4およびGPU6は、デジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路を備え得る。CPU4はGPU6を制御することが可能であり得る。
グラフィックスデバイス2は、CPU4上で1つまたは複数のグラフィックスアプリケーションを実行し得る。グラフィックスアプリケーションの例には、ウェブブラウザ、電子メールアプリケーション、スプレッドシート、ビデオゲーム、コンピュータ支援設計(CAD)アプリケーション、デジタルカメラアプリケーション、ビデオ会議アプリケーション、シミュレーションおよび視覚化ツール、ビデオストリーミングアプリケーション、またはディスプレイ18を介したユーザへの提示のために視覚出力を生成する他のアプリケーションがある。
CPU4は、グラフィックスアプリケーションのためのアプリケーション命令を呼び出すことによってグラフィックスアプリケーションを実行し、それらの命令は、CPU4および/またはGPU6を使用して画像を生成する。いくつかの場合には、アプリケーション命令はグラフィックスアプリケーションプログラミングインターフェース(API)呼から生成され得る。グラフィックスアプリケーションを書き込むためのグラフィックスAPIは、Open Graphics Library(OpenGL(登録商標))、OpenGL(登録商標) for embedded systems(OpenGL(登録商標) ES)、またはOpenVG(vector graphics)のAPIを含み得る。図示の実施形態では、グラフィックスドライバ10はCPU4上で動作する。グラフィックスドライバ10は、アプリケーション命令またはAPI呼をCPU4および/またはGPU6上で実行されるべきコマンドに変換し得る。いくつかの場合には、GPU6は、1つまたは複数のグラフィックスアプリケーションを別個に実行し得る。この場合、GPU6は、それ自体のグラフィックスドライバをも実行し得る。他の例では、グラフィックスドライバ10は、CPU4またはGPU6のいずれかが、その処理ユニットによる実行のためにグラフィックスドライバ10をロードし得るように、デバイスメモリ8に記憶され得る。
GPU6は、ディスプレイ18を介したユーザへの提示のためにグラフィックスデータを画像にレンダリングするために、グラフィックスアプリケーションに従ってCPU4上のグラフィックスドライバ10によって発行されたコマンドを実行し得る。たとえば、GPU6は、頂点シェーディング、三角形ラスタライゼーション、フラグメントシェーディング、およびピクセルブレンディングのうちの1つまたは複数を実行し得る。GPU6は、次いで、レンダリングされたグラフィックスデータをデバイスメモリ8中のフレームバッファに記憶し得る。グラフィックスデータは、レンダリングユニットごとにGPU6によってレンダリングされ得る。上記で説明したように、レンダリングユニットは、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、または単一のレンダターゲットの一部分を備え得る。いくつかの場合には、フレームは1つまたは複数のレンダターゲットを含み得る。レンダターゲットは、テクスチャデータ、カラーデータ、および深度(depth)データなど、フレームのための一定のタイプのグラフィックスデータをそれぞれ保持する、デバイスメモリ8に記憶されたフレームバッファを備え得る。GPU6は、フレームに関連するレンダターゲットの各々内のグラフィックスデータをレンダリングし、次いで、単一のフレームとしてデバイスメモリ8に記憶するためにおよびディスプレイ18上で提示するために、レンダリングされたグラフィックスデータを合成し得る。
図示の例では、GPU6は、グラフィックスデータをレンダリングするために直接レンダリングモードまたは据置きレンダリングモードのいずれかに従って動作し得るレンダリングエンジン12を含む。直接レンダリングモードに従って動作するとき、GPU6内のレンダリングエンジン12は、レンダリングユニットのグラフィックスデータをデバイスメモリ8中のフレームバッファに直接レンダリングする。したがって、レンダリングエンジン12は、GPU6の外部のデバイスメモリ8にレンダリングされているグラフィックスデータについて、すべての読取りおよび書込み呼を行う。このモードは、グラフィックスデータをレンダリングするために、ピクセルブレンディングおよび深度テストなど、デバイスメモリ8において多くの読取り−修正−書込みを必要とするいくつかのグラフィックス演算を実行するとき、大量のシステム帯域幅および電力を使用し得る。
据置きレンダリングモードに従って動作するとき、GPU6内のレンダリングエンジン12は、最初に、現在レンダリングユニットを複数のタイルに分割するためのタイリングパスを実行し得る。複数のタイルの各々について、レンダリングエンジン12は、次いで、タイルのグラフィックスデータをGPU6上にローカルに位置するタイルバッファにレンダリングし、完了したとき、レンダリングされたグラフィックスデータをタイルバッファからデバイスメモリ8中のフレームバッファに読み込む。したがって、レンダリングエンジン12は、GPU6上のタイルバッファにレンダリングされているグラフィックスデータについて、大部分の読取りおよび書込み呼を行う。このモード、すなわち、据置きレンダリングは、タイルバッファにおいて読取り−修正−書込みを実行するために少量の電力を使用し、システム帯域幅を使用しないが、タイリングパスをセットアップすることと、レンダリングユニットの各タイルをレンダリングすることとの追加のオーバーヘッドコストを含む。
従来、ラップトップまたはデスクトップコンピュータ内の、あるいは電力および帯域幅の使用量が問題ではない、別のタイプの壁に接続されたグラフィックスデバイス内のGPUは、直接レンダリングモードに従って動作するようにおそらく設計されるであろう。反対に、モバイルワイヤレス電話内の、または電力および帯域幅が貴重である他のモバイルデバイス内のGPUは、据置きレンダリングモードに従って動作するようにおそらく設計されるであろう。しかしながら、最も効率的なレンダリングモードは、あるグラフィックスデータをレンダリングするときのGPUのパフォーマンスに基づいて変動し得る。
本開示における技法によれば、グラフィックスドライバ10は、ディスプレイ18上でのユーザへの提示のためにグラフィックスデータをレンダリングするために、GPU6が使用するレンダリングモードを自動的に選択し得る。より詳細には、グラフィックスドライバ10は、グラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価し、評価されたメトリックに基づいて現在レンダリングユニットのための直接レンダリングモードまたは据置きレンダリングモードのいずれかを自動的に選択し得る。それらのメトリックは、前のレンダリングユニットまたは現在レンダリングユニットのグラフィックスデータをレンダリングするときのCPU4およびGPU6のパフォーマンスメトリック、電力メトリック、または他のメトリックを含み得る。選択されたレンダリングモードは、評価されたメトリックに基づいて、現在レンダリングユニットのグラフィックスデータをレンダリングするために、より少ないシステム帯域幅および/またはより少ない電力を使用することを予測されたレンダリングモードのうちの1つであり得る。いくつかの場合には、選択されたレンダリングモードはまた、評価されたメトリックに基づいて、CPU4および/またはGPU6におけるより高い頂点スループットを可能にすること、グラフィックスドライバ10のオーバーヘッドを低減すること、あるいはさもなければパフォーマンスおよび電力消費を改善することを予測されたレンダリングモードであり得る。
グラフィックスドライバ10は、次いで、選択されたレンダリングモードに従って動作するようにGPU6を構成し得る。いくつかの場合には、グラフィックスドライバ10はまた、自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信し得る。たとえば、グラフィックスドライバ10は、CPU4上で実行されるグラフィックスAPIを介して開発者または他のユーザから、手動で選択されたレンダリングモードを受信し得る。手動で選択されたレンダリングモードが受信されたとき、グラフィックスドライバ10は、手動で選択されたレンダリングモードに従って動作するようにGPU6を構成し得る。
メトリックを収集し、評価することと、レンダリングモードを自動的に選択することと、GPU6を構成することとを含む、本開示の技法は、各レンダリング境界において実行され得る。レンダリング境界は、たとえば、GPU6が、前のレンダリングユニットをレンダリングし終え、現在レンダリングユニットをレンダリングし始めるときの、レンダリングユニット間の移行期間を備え得る。GPU6が前のレンダリングユニットのレンダリングを完了すると、GPU6は、前のレンダリングユニットのデータを受信することから、レンダリングされるべき現在レンダリングユニットのデータを受信することに切り替える。そのとき、本技法によれば、グラフィックスドライバ10は、評価されたメトリックに基づいて現在レンダリングユニットのためのレンダリングモードを自動的に選択し得る。現在レンダリングユニットのために選択されたレンダリングモードが、前のレンダリングユニットのために使用されたレンダリングユニットとは異なる場合、グラフィックスドライバ10はまた、新たに選択されたレンダリングモードに従って動作するようにGPU6を再構成し得る。CPU4は、トランシーバモジュール14を介して1つまたは複数のグラフィックスアプリケーションをダウンロードし得る。さらに、CPU4は、トランシーバモジュール14を介してグラフィックスアプリケーションに従ってCPU4および/またはGPU6によって処理されるべきグラフィックスデータをダウンロードし得る。トランシーバモジュール14は、グラフィックスデバイス2と別のデバイスまたはネットワークとの間のワイヤレスまたはワイヤード通信を可能にするための回路を含み得る。トランシーバモジュール14は、ワイヤードまたはワイヤレス通信のための変調器、復調器、増幅器および他のそのような回路を含み得る。
CPU4は、グラフィックスアプリケーションの各々のためのアプリケーション命令をデバイスメモリ8内に記憶し得る。さらに、デバイスメモリ8は、グラフィックスアプリケーションに従ってCPU4および/またはGPU6によって処理されるべきグラフィックスデータを記憶し得、CPU4および/またはGPU6から受信された処理済みグラフィックスデータをも記憶し得る。たとえば、デバイスメモリ8は、現在レンダリングユニットのレンダリングされたグラフィックスデータをフレームバッファに記憶し得る。別の例として、デバイスメモリ8は、テクスチャデータ、カラーデータ、および深度データなど、フレームのための一定のタイプのグラフィックスデータをそれぞれ保持する、フレームに関連する1つまたは複数のレンダターゲットを記憶し得る。いくつかの場合には、デバイスメモリ8はまた、フレームのレンダリングされたグラフィックスデータがディスプレイ18上での提示のためにそれの中にコピーされ得るデスクトップまたはディスプレイ専用フレームバッファを含み得る。
デバイスメモリ8は1つまたは複数のコンピュータ可読記憶媒体を備え得る。デバイスメモリ8の例には、限定はしないが、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM(登録商標))、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータまたはプロセッサによってアクセスされ得る、任意の他の媒体がある。
ディスプレイ18はグラフィックスデバイス2のための出力デバイスを備える。一例として、ディスプレイ8は、液晶ディスプレイ(LCD)、陰極線管(CRT)ディスプレイ、プラズマディスプレイ、または別のタイプのディスプレイデバイスを備え得る。いくつかの場合には、グラフィックスデバイス2は、スピーカーまたは他のタイプのビデオおよびオーディオ出力デバイスを含み得る。GPU6は、提示のために処理されたグラフィックスデータをディスプレイ18に与え得る。たとえば、GPU6は、ディスプレイ18を介してユーザにフレームを提示するために、フレームのレンダリングされたグラフィックスデータを、あるフレームバッファからデバイスメモリ8内のデスクトップまたはディスプレイ専用フレームバッファにコピーし得る。
ユーザ入力デバイス16は、グラフィックスデバイス2のための1つまたは複数のユーザ入力デバイスを備える。たとえば、ユーザ入力デバイス16は、トラックボール、マウス、キーボード、マイクロフォンおよび/または他のタイプの入力デバイスを含み得る。いくつかの例では、ユーザ入力デバイス16は、タッチスクリーンを備え得、ディスプレイ18の一部として組み込まれ得る。ユーザは、ユーザ入力デバイス16を介してCPU4によって実行されるべき1つまたは複数のグラフィックスアプリケーションを選択し得る。図示の例では、ディスプレイ18およびユーザ入力デバイス16はグラフィックスデバイス2中に含まれる。他の例では、ディスプレイ18および/またはユーザ入力デバイス16はグラフィックスデバイス2の外部にあり得る。
図2は、GPU6が使用するレンダリングモードを自動的に選択するためにグラフィックスドライバ10によって使用されるグラフィックスデバイス2の機能ブロックをより詳細に示すブロック図である。より詳細には、図2は、グラフィックスドライバ10によって実行されるレンダリングモード選択プロセス中のCPU4と、GPU6と、デバイスメモリ8との間の対話(interaction)を示している。
図2の図示の例では、CPU4は、グラフィックスアプリケーション20と、グラフィックスAPI22と、グラフィックスドライバ10とを実行する。グラフィックスアプリケーション20は、たとえば、ウェブブラウザ、電子メールアプリケーション、スプレッドシート、ビデオゲーム、コンピュータ支援設計(CAD)アプリケーション、デジタルカメラアプリケーション、ビデオ会議アプリケーション、シミュレーションおよび視覚化ツール、ビデオストリーミングアプリケーション、または視覚出力を生成する他のアプリケーションを含み得る。
CPU4は、アプリケーション命令を呼び出すことによってグラフィックスアプリケーション20を実行し得、それらの命令は、CPU4および/またはGPU6を使用して画像を生成する。アプリケーション命令はデバイスメモリ8に記憶され得る。いくつかの場合には、アプリケーション命令は、画像に関連するプリミティブまたは三角形を描くための呼など、グラフィックスAPI22によって行われるグラフィックスAPI呼から生成され得る。グラフィックスAPI22は、Open Graphics Library(OpenGL(登録商標))、OpenGL(登録商標) for embedded systems(OpenGL(登録商標) ES)、またはOpenVG(vector graphics)のAPIのうちの1つを備え得る。グラフィックスドライバ10は、グラフィックスAPI22からのアプリケーション命令またはAPI呼を、グラフィックスアプリケーション20に従ってCPU4および/またはGPU6によって実行されるべきコマンドに変換し得る。
図2の図示の例では、GPU6は、レンダリングエンジン12と、タイルバッファ30と、GPUパフォーマンスカウンタ32とを含む。レンダリングエンジン12は、表示のためにグラフィックスデータを処理するために使用される1つまたは複数の処理ユニットを含み得る。たとえば、レンダリングエンジン12は、頂点シェーダ、三角形ラスタライザ、フラグメントシェーダ、および/またはピクセルブレンダを備え得る。GPUパフォーマンスカウンタ32は、レンダリング中にGPU6によって使用されるシステム帯域幅の量を含む、GPU6に関連する処理情報を記録するハードウェアカウンタを備え得る。
GPU6は、ディスプレイ上での提示のためにグラフィックスデータを画像にレンダリングするために、グラフィックスアプリケーションに従ってCPU4上のグラフィックスドライバ10によって発行されたコマンドを実行し得る。たとえば、GPU6のレンダリングエンジン12は、デバイスメモリ8からグラフィックスデータを受信し、頂点シェーディング、三角形ラスタライゼーション、フラグメントシェーディング、およびピクセルブレンディングのうちの1つまたは複数を実行し得る。GPU6は、次いで、最終的に、レンダリングされたグラフィックスデータをデバイスメモリ8中のフレームバッファ28に記憶し得る。グラフィックスデータは、レンダリングユニットごとにレンダリングエンジン12によってレンダリングされ得る。レンダリングユニットは、たとえば、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、または単一のレンダターゲットの一部分を含み得る。
いくつかの場合には、フレームのために1つまたは複数のレンダターゲット26が定義され得る。レンダターゲット26は、テクスチャデータ、カラーデータ、および深度データなど、フレームのための一定のタイプのグラフィックスデータをそれぞれ保持する、デバイスメモリ8に記憶されたフレームバッファを備える。所与のフレームに関連するレンダターゲット26の各々内のグラフィックスデータが、レンダリングエンジン12によって別個にレンダリングされ、次いでデバイスメモリ8中のフレームバッファ28中で合成され得る。いくつかの場合には、レンダターゲット26は、フレームのための同じタイプのデータ、たとえば、カラーデータを保持する、複数のレンダターゲットを含み得る。レンダリングエンジン12は、複数のレンダターゲット中のグラフィックスデータを同時にレンダリングし得る。グラフィックスデータの各フレームのために異なる数のレンダターゲット26が定義され得る。
GPU6のレンダリングエンジン12は、グラフィックスデータをレンダリングするために直接レンダリングモードまたは据置きレンダリングモードのいずれかに従って動作し得る。直接レンダリングモードに従って動作するとき、GPU6内のレンダリングエンジン12は、レンダリングユニットのグラフィックスデータをデバイスメモリ8中のフレームバッファ28に直接レンダリングする。したがって、レンダリングエンジン12は、GPU6の外部に位置するデバイスメモリ8にレンダリングされているグラフィックスデータについて、すべての読取りおよび書込み呼を行う。
据置きレンダリングモードに従って動作するとき、GPU6内のレンダリングエンジン12は、最初に、レンダリングユニットを複数のタイルに分割するためのタイリングパスを実行する。複数のタイルの各々について、レンダリングエンジン12は、次いで、タイルのグラフィックスデータをGPU6上にローカルに位置するタイルバッファ30にレンダリングし、完了したとき、レンダリングされたグラフィックスデータをタイルバッファ30からデバイスメモリ8中のフレームバッファ28に読み込む。したがって、レンダリングエンジン12は、GPU6上のタイルバッファ30にレンダリングされているグラフィックスデータについて、大部分の読取りおよび書込み呼を行う。フレームのために1つまたは複数のレンダターゲット26が定義された場合、レンダリングエンジン12は、レンダターゲット26の各々のためのタイリングパスを実行し、次いでフレームに関連するレンダターゲット26の各々のための各タイルをレンダリングしなければならない。
タイルバッファ30は、GPU6とともにオンチップで配置された少量の超高帯域幅メモリである。しかしながら、タイルバッファ30のサイズは、レンダリングユニット全体のためのグラフィックスデータを保持するには小さすぎであり、したがって、レンダリングエンジン12は、レンダリングユニット全体をレンダリングするために複数のレンダリングパスを実行しなければならない。たとえば、レンダリングエンジン12は、フレームの各タイルについて1つのレンダリングパスを実行し得るか、またはフレームに関連するレンダターゲット26の各々のための各タイルについて1つのレンダリングパスを実行し得る。いくつかの場合には、レンダリングエンジン12はまた、タイルの各々内でレンダリングユニットのどのプリミティブが可視であるかを判断するためにビニング(binning)を実行し得る。ビニングが実行されない場合、GPU6のレンダリングエンジン12は、レンダリングされている各タイルについてレンダリングユニット中に含まれるすべてのプリミティブまたは三角形を描くためにラスタシザーズ(raster scissors)を使用し得る。ビニングを実行することによって、レンダリングエンジン12は、レンダリングされている所与のタイル内で可視である、レンダリングユニット中のプリミティブのみを描き得る。
グラフィックスデータが、多くの読取り−修正−書込み機能を必要とするピクセルブレンディングと深度テストとを用いた複雑なグラフィックスシーンを表すとき、据置きレンダリングモードは、そのグラフィックスデータをレンダリングするために、より少ない電力およびシステム帯域幅を使用し得る。しかしながら、据置きレンダリングモードは、タイリングパスをセットアップすることと、レンダリングユニットの各タイルのためのグラフィックスデータをレンダリングすることとの追加のオーバーヘッドコストを含む。据置きレンダリングモードは、タイリングパスをセットアップすることと、各レンダリングユニットのための複数のタイルをレンダリングすることとのオーバーヘッドコストが、据置きレンダリングモードの帯域幅低減をオーバーライドしないとき、最も効率的なレンダリングモードであり得る。
反対に、グラフィックスデータが、据置きレンダリングモードが、帯域幅低減を行わないが、処理リソースの消耗の働きをする、単純なグラフィックスシーンを表すとき、直接レンダリングモードは、そのグラフィックスデータをレンダリングするために、より少ない電力およびシステム帯域幅を使用し得る。直接レンダリングモードは、タイリングパスをセットアップすることと、各レンダリングユニットのための複数のタイルをレンダリングすることとのオーバーヘッドコストが、据置きレンダリングモードのいかなる帯域幅低減をもオーバーライドするとき、最も効率的なモードであり得る。
本開示の技法によれば、グラフィックスドライバ10は、直接レンダリングモードまたは据置きレンダリングモードのどちらが、現在レンダリングユニットのグラフィックスデータをレンダリングするために最少量のシステム帯域幅および/または電力を使用することを予測されるかに基づいて、GPU6が使用する直接レンダリングモードまたは据置きレンダリングモードのいずれかを自動的に選択し得る。概して、グラフィックスドライバ10は、グラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、評価されたメトリックに基づいて直接レンダリングモードまたは据置きレンダリングモードのいずれかを選択することと、選択されたレンダリングモードに従って動作するようにGPU6を構成することとを行い得る。自動レンダリングモード選択プロセスについて以下でより詳細に説明する。
グラフィックスドライバ10は、GPU6が前のレンダリングユニットから現在レンダリングユニットに切り替えているとき、グラフィックスデータ中のレンダリング境界において現在レンダリングユニットのためのレンダリングモードを選択し得る。上記で説明したように、レンダリングユニットは、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、または単一のレンダターゲットの一部分を含み得る。レンダリング境界は、たとえば、GPU6が、前のレンダリングユニットをレンダリングし終え、現在レンダリングユニットをレンダリングし始めるときの、レンダリングユニット間の移行期間を備え得る。GPU6が前のレンダリングユニットのレンダリングを完了すると、GPU6は、前のレンダリングユニットのデータを受信することから、レンダリングされるべき現在レンダリングユニットのデータを受信することに切り替える。そのとき、グラフィックスドライバ10は、現在レンダリングユニットのためのレンダリングモードを自動的に選択し得る。
このようにして、グラフィックスデータが変化するにつれて、ならびにグラフィックスデータをレンダリングするときのCPU4および/またはGPU6のパフォーマンスが変化するにつれて、グラフィックスドライバ10は、現在の状況のためにGPU6によって使用されるレンダリングモードを切り替え得る。たとえば、現在レンダリングユニットのために選択されたレンダリングモードが、前のレンダリングユニットのために使用されたレンダリングユニットとは異なる場合、グラフィックスドライバ10は、新たに選択されたレンダリングモードに従って動作するようにGPU6を再構成し得る。本技法によれば、グラフィックスドライバ10は、フレームに関連する単一または複数のレンダターゲット26の各々について、グラフィックスデータの各フレームについて、あるいはグラフィックスデータのフレームのあらかじめ定義された各セットについて、レンダリングモードを切り替え得る。
所与のレンダリング境界において、グラフィックスドライバ10は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを収集し得る。それらのメトリックは、前のレンダリングユニットおよび現在レンダリングユニットのグラフィックスデータをレンダリングするときのCPU4および/またはGPU6のパフォーマンスに関連し得る。グラフィックスデータの処理中に、GPU6はCPU4に数フレーム遅れていることがある。したがって、グラフィックスドライバ10は、前のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックをGPU6から収集し、現在レンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックをCPU4から収集し得る。
それらのメトリックは、レンダリングユニット中の頂点の数、レンダリングユニット中のフラグメントの数、レンダリングユニット中のフラグメントのロケーション、レンダリング中に使用されるGPU帯域幅の量、レンダリング中のGPU6のレジスタに対する負荷量、レンダリング中のCPU4のレジスタに対する負荷量、フレームのために定義されたレンダターゲット26の数、フレームのために定義された複数のレンダターゲット(MRT:multiple render targets)の数、レンダターゲット26の次元(たとえば、高さ、幅、ビット/ピクセル)、レンダリングユニットのために深度テストが有効化される(enabled)かどうか、レンダリングユニットのためにブレンディングが有効化されるかどうか、そのユニットのためにステンシルテスト(stencil testing)が有効化されるかどうか、GPU6上で実行されるアプリケーションのタイプ、レンダリングユニットのためのプリミティブを描くためのグラフィックスAPI呼の数、およびGPUパフォーマンスカウンタ32からの追加情報を含み得る。さらに、それらのメトリックはまた、レンダリングユニットのためにシーンオーバードロー(overdraw)が発生するかどうか、レンダリング中にレンダターゲット26中で中間レンダ更新(mid-render updates)が発生するかどうか、変換フィードバックが使用されるかどうか、フレームバッファ28からレンダリングユニット中のフラグメントが読み取られるかどうか、レンダリングユニットのための状態更新の数を含み得、および中間フレーム解像(mid-frame resolve)を示し得る他のメトリックを含み得る。
概して、グラフィックスドライバ10が、フレームごとまたはレンダターゲットごとでも、メトリックを収集することは、比較的安価である。ただし、一部のハードウェア上では、GPUパフォーマンスカウンタ32を読み取るためにGPU6のパフォーマンスストール(a performance stall)が必要とされ得るので、GPUパフォーマンスカウンタ32からの情報は、より低い頻度で収集され得る。グラフィックスドライバ10は、次いで、収集されたメトリックをメトリックバッファ24に記憶し得る。メトリックを収集するプロセスについては、図3および図5に関してより詳細に説明する。
グラフィックスドライバ10は、次に、直接レンダリングモードおよび据置きレンダリングモードのうちのどちらが、現在レンダリングユニットのグラフィックスデータをレンダリングするために、より少ない電力および/またはシステム帯域幅を使用することになるかを予測するために、上記メトリックを評価する。グラフィックスドライバ10は上記メトリックのうちの少なくとも2つを評価する。2つ以上のメトリックを評価することによって、グラフィックスドライバ10は、効率的なレンダリングモード選択を行うために、現在レンダリングユニットをレンダリングすることに関連するパフォーマンスおよび電力の制約の完全な理解を得ることがある。
たとえば、グラフィックスドライバ10は、少なくともGPU帯域幅とフレームのために定義されたレンダターゲットの数とのメトリックを評価し得る。グラフィックスドライバ10は、GPU帯域幅のみを評価した場合、据置きレンダリングモードでタイリングパスをセットアップすることと、レンダリングユニットの各タイルをレンダリングすることとを行うために必要とされる処理リソースを考慮に入れることができないであろう。GPU帯域幅とレンダターゲットの数との両方を評価することによって、グラフィックスドライバ10は、GPU6が使用する最も効率的なレンダリングモードを予測するために、現在レンダリングユニットのグラフィックスデータをレンダリングするためのオーバーヘッドコストと帯域幅コストを比較し得る。
グラフィックスドライバ10は上記少なくとも2つのメトリックに重み付け方式を適用し得る。たとえば、グラフィックスドライバ10は、上記メトリックのうちの2つ以上に一定量の重みを割り当てるアルゴリズムを実行し得る。重み付け方式は、上記メトリックのうちの2つ以上に等しい量の重みを適用し得るか、または上記メトリックの各々に異なる量の重みを適用し得る。いくつかの場合には、重み付け方式アルゴリズムはグラフィックスドライバ10中にプリプログラムされ得る。他の場合には、重み付け方式アルゴリズムはグラフィックスAPI22を介して開発者によって設定され得る。このようにして、重み付け方式アルゴリズムは、レンダリングされるべきグラフィックスデータのタイプ、CPU4およびGPU6のシステム要件およびパフォーマンス、または他の考慮事項に基づいて、時間とともに変更され得る。2つ以上のメトリックを評価するプロセスについては、図3および図6に関してより詳細に説明する。
グラフィックスドライバ10は、次いで、評価されたメトリックに基づいて直接レンダリングモードまたは据置きレンダリングモードを自動的に選択する。より詳細には、グラフィックスドライバ10は、現在レンダリングユニットのグラフィックスデータをレンダリングするために、より少ない電力および/またはシステム帯域幅を使用することを予測されたレンダリングモードを選択し得る。いくつかの場合には、グラフィックスドライバ10は、評価されたメトリックに基づいて、CPU4および/またはGPU6におけるより高い頂点スループットを可能にすること、グラフィックスドライバ10のオーバーヘッドを低減すること、あるいはさもなければパフォーマンスおよび電力消費を改善することをも予測されたレンダリングモードを選択し得る。
いくつかの場合には、グラフィックスドライバ10はまた、開発者または他のユーザから、手動で選択されたレンダリングモードを受信し得る。たとえば、グラフィックスドライバ10は、CPU4上で実行されるグラフィックスAPI22を介して、手動で選択されたレンダリングモードを受信し得る。いくつかの場合には、手動選択は、グラフィックスドライバ10へのレンダリングモードのうちの好適な1つに関する指示またはヒントを備え得る。グラフィックスドライバ10によって受信された手動で選択されたレンダリングモードは、自動的に選択されたレンダリングモードをオーバーライドし得る。このようにして、開発者は、どちらのレンダリングモードがレンダリング中により少ない電力および/またはシステム帯域幅を使用することを予測されるかにかかわらず、GPU6によって使用されるレンダリングモードを制御することが可能であり得る。
レンダリングモードが、評価されたメトリックに基づいて自動的に選択されたのか、ユーザによって手動で選択されたのかにかかわらず、グラフィックスドライバ10は、現在レンダリングユニットのグラフィックスデータをレンダリングするために、選択されたレンダリングモードに従って動作するようにGPU6を構成する。GPU6を構成することは、レンダリングエンジン12から出力されたレンダリングされたグラフィックスデータを、直接レンダリングモードの場合はフレームバッファ28に直接送るように、または据置きレンダリングモードの場合はタイルバッファ30に送るように、GPU6のレジスタをプログラムすることを備え得る。たとえば、直接レンダリングモードが選択されたとき、グラフィックスドライバ10は、現在レンダリングユニットのグラフィックスデータをデバイスメモリ8中のフレームバッファ28に直接レンダリングするようにGPU6のレンダリングエンジン12を構成し得る。反対に、据置きレンダリングモードが選択されたとき、グラフィックスドライバ10は、現在レンダリングユニットを複数のタイルに分割するタイリングパスを実行することと、複数のタイルの各々のグラフィックスデータをタイルバッファ30にレンダリングすることと、レンダリングされたタイルのための各々をタイルバッファからフレームバッファ28に読み込むこととを行うようにGPU6のレンダリングエンジン12を構成し得る。
グラフィックスドライバ10は、次いで、選択されたレンダリングモードに従ってレンダリングされるべき現在レンダリングユニットのグラフィックスデータをGPU6のレンダリングエンジン12に与え得る。GPU6がグラフィックスデータ中のレンダリング境界に達したとき、GPU6は次のレンダリングユニットに切り替えることになる。上記で説明したように、レンダリング境界は、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、または単一のレンダターゲットの一部分など、レンダリングユニット間の移行期間を備え得る。GPU6が次のレンダリングユニットに切り替えるとき、グラフィックスドライバ10は、今の現在レンダリングユニットのためのレンダリングモードを自動的に選択するために、上記で説明したプロセスを再び実行する。したがって、連続するレンダリングユニットのために異なるレンダリングモードが使用され得る。図3は、GPU6が使用するレンダリングモードを自動的に選択するように構成されたグラフィックスドライバ10の例示的な機能ブロックを示すブロック図である。上記で説明したように、グラフィックスドライバ10は、グラフィックスアプリケーションのためのアプリケーション命令またはAPI呼をCPU4および/またはGPU6によって実行されるべきコマンドに変換し得る。たとえば、GPU6は、グラフィックスアプリケーションからのコマンドに応答して表示のために画像を準備するためにグラフィックスデータをレンダリングし得る。レンダリングプロセス中に電力およびシステム帯域幅を維持するために、グラフィックスドライバ10は、評価されたメトリックに基づいて、GPU6が使用する直接レンダリングモードまたは据置きレンダリングモードのいずれかを自動的に選択し得る。グラフィックスドライバ10は、最初に、メトリックを収集し、それらのメトリックをメトリックバッファ24に記憶し得、次いで、グラフィックスデータをレンダリングするために、より少ない電力および/またはシステム帯域幅を使用することを予測されたレンダリングモードを選択するために、それらのメトリックを評価し得る。
図3の図示の例では、CPU4によって実行されるとき、グラフィックスドライバ10は、メトリック収集ユニット40と、メトリック評価ユニット42と、レンダリングモード選択ユニット44とを含む。上記で説明したように、メトリックバッファ24は、CPU4内のローカルメモリバッファを備え得る。他の例では、メトリックバッファ24は、CPU4の外部に位置するデバイスメモリ8内のメモリバッファを備え得る。
図示の例では、メトリックバッファ24は、GPU帯域幅46と、レンダターゲットの数48と、レンダターゲットの次元49と、GPU負荷50と、CPU負荷52と、頂点/フラグメントの数54と、フラグメントのロケーション54と、深度テスト/ブレンディング有効化56と、アプリケーションのタイプ57と、API呼の数58とを含む。いくつかの場合には、メトリックバッファ24は、グラフィックスデータをレンダリングすることに関連する、より多いまたはより少ないメトリックを含み得る。たとえば、メトリックバッファ24は、図2中のGPU6のGPUパフォーマンスカウンタ32から収集された追加情報を含み得る。さらに、メトリックバッファ24はまた、レンダリングユニットのためにシーンオーバードローが発生するかどうか、レンダリング中にレンダターゲット26中で中間レンダ更新が発生するかどうか、変換フィードバックが使用されるかどうか、フレームバッファ28からレンダリングユニット中のフラグメントが読み取られるかどうか、レンダリングユニットのための状態更新の数に関するメトリックを含み得、および中間フレーム解像を示し得る他のメトリックを含み得る。メトリックバッファ24は、GPU帯域幅46およびレンダターゲットの数48など、少なくとも2つのメトリックを含むべきである。
グラフィックスドライバ10は、グラフィックスデータ内の各レンダリング境界において、GPU6が使用するレンダリングモードを自動的に選択するために、上記メトリックを収集し、評価し得る。上記で説明したように、レンダリング境界は、たとえば、GPU6が、前のレンダリングユニットをレンダリングし終え、現在レンダリングユニットをレンダリングし始めるときの、レンダリングユニット間の移行期間を備え得る。レンダリングユニットは、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、または単一のレンダターゲットの一部分を含み得る。所与のレンダリング境界において、CPU4上で動作している、グラフィックスドライバ10は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを収集するためにメトリック収集ユニット40を実行する。たとえば、メトリック収集ユニット40は、前のレンダリングユニットおよび/または現在レンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを収集し得る。グラフィックスデータの処理中に、GPU6はCPU4に数フレーム遅れていることがある。したがって、メトリック収集ユニット40は、現在レンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックをCPU4から収集し得る。同時に、メトリック収集ユニット40はまた、前のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックをGPU6から収集し得る。
一例として、メトリック収集ユニット40は、GPU6のGPUパフォーマンスカウンタ32から、前のレンダリングユニットのグラフィックスデータをレンダリングしている間に使用されたGPU帯域幅46の量を収集し得る。いくつかの場合には、GPUパフォーマンスカウンタ32から情報を収集することは、GPU6のパフォーマンスストールを必要とし得る。GPU6のパフォーマンスを頻繁にストールさせることは、グラフィックスデータをレンダリングすることのパフォーマンスコストの望ましくない増加を引き起こし得る。したがって、メトリック収集ユニット40は、特に、レンダリング境界が、各フレーム間でまたはフレームに関連する各レンダターゲット間で発生する場合、あらゆるレンダリング境界においてGPUパフォーマンスカウンタ32から情報を収集するとは限らないことがある。他の場合には、GPU帯域幅の量は、CPU4上で実行されるグラフィックスアプリケーション20から収集された前のレンダリングユニットまたは現在レンダリングユニットのための頂点/フラグメントの数54に基づいて判断され得る。グラフィックスデータをレンダリングするためにGPU6によって使用される大量のシステム帯域幅は、GPU6が直接レンダリングモードでデバイスメモリ8に対して多数の読取りおよび/または書込み要求を行っていることを示し得る。
メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、フレームのために定義されたレンダターゲットの数48をも収集し得る。上記で説明したように、レンダターゲット26は、テクスチャデータ、カラーデータ、および深度データなど、関連するフレームのための一定のタイプのグラフィックスデータをそれぞれ保持する、デバイスメモリ8に記憶されたフレームバッファを備える。フレームをレンダリングするために、GPU6は、フレームに関連するレンダターゲット26の各々内のグラフィックスデータを別個にレンダリングし、次いで、レンダリングされたグラフィックスデータをフレームバッファ28中で合成する。所与のフレームのために定義されたレンダターゲットの数が大きいほど、表示のためにそのフレームを完全にレンダリングするために必要とされるレンダリングパスの数は大きくなる。いくつかの場合には、レンダターゲットの数48は、レンダターゲット26中に含まれる複数のレンダターゲットの数を含み得る。上記で説明したように、複数のレンダターゲットは、フレームのための同じタイプのデータ、たとえば、カラーデータを保持する、フレームバッファを備え、同時にレンダリングされ得る。
さらに、メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、フレームのために定義されたレンダターゲットの次元49を収集し得る。その次元は、所与のフレームのための、デバイスメモリ8に記憶されたレンダターゲット26の各々のための高さおよび幅を備え得る。その次元はまた、レンダターゲット26の各々のための深度またはビット/ピクセル値を含み得る。所与のフレームのために定義された大きいレンダターゲットは、そのフレームが、多くの読取り−修正−書込み演算を必要とし得るレンダリングのための複雑なグラフィックスシーンを含むことを示し得る。
別の例として、メトリック収集ユニット40は、前のレンダリングユニットのグラフィックスデータのレンダリング中のGPU6のレジスタに対するGPU負荷50の量を収集し得る。メトリック収集ユニット40は、前のレンダリングユニットまたは現在レンダリングユニットのグラフィックスデータのレンダリング中のCPU4のレジスタに対するCPU負荷52の量をも収集し得る。GPU6およびCPU4の負荷量は、グラフィックスデータのレンダリング中に任意のパフォーマンスボトルネックがどこで発生していることがあるかを示し得る。
メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、前のレンダリングユニットまたは現在レンダリングユニットのための頂点/フラグメントの数54をも収集し得る。上述のように、所与のフレーム中に含まれる頂点および/またはフラグメントの数は、そのフレームのグラフィックスデータをレンダリングするために必要とされることになるGPU帯域幅の量を判断するために使用され得る。さらに、メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、前のレンダリングユニットまたは現在レンダリングユニット中のフラグメントのロケーション55を収集し得る。フラグメントのロケーション55は、多数のフラグメントが、単純なグラフィックスシーンにおけるレンダリングユニットにわたって広がっているのか、複雑なグラフィックスシーンとしてのレンダリングユニットの1つのエリアに集まっているのかを示し得る。
さらなる一例では、メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、前のレンダリングユニットまたは現在レンダリングユニットが深度テスト/ブレンディング有効化されるかどうか56を収集する。所与のレンダリングユニットのために有効化され、実行されるとき、深度テストとピクセルブレンディングとのグラフィックス演算は、多くの読取り−修正−書込み演算を必要とする。いくつかの場合には、深度テスト/ブレンディング有効化56は、ステンシルテストが有効化されるかどうかをも示し得る。
メトリック収集40は、前のレンダリングユニットまたは現在レンダリングユニットのためにCPU4および/またはGPU6上で実行されるアプリケーションのタイプ57をも収集する。CPU4および/またはGPU6上で実行される、アプリケーション、すなわち、グラフィックスアプリケーション20のタイプ57は、レンダリングのために生成されるグラフィックスシーンのための一般的な複雑さ(complexity)レベルを示し得る。さらに、メトリック収集ユニット40は、CPU4上で実行されるグラフィックスAPI22から、前のレンダリングユニットまたは現在レンダリングユニットのためのAPI呼、たとえば、グラフィックスデータを用いてプリミティブまたは三角形を描くための呼の数58を収集し得る。所与のレンダリングユニットが多数のAPI呼を含むとき、多数のプリミティブが据置きレンダリングモードで複数のタイルのために再び描かれることになる可能性が高いことがある。
上記メトリックが収集され、メトリックバッファ24に記憶されると、グラフィックスドライバ10は、メトリック評価ユニット42を実行して、直接レンダリングモードおよび据置きレンダリングモードのうちのどちらが、現在レンダリングユニットのグラフィックスデータをレンダリングするために、より少ない電力および/またはシステム帯域幅を使用することになるかを予測するために、上記メトリックのうちの少なくとも2つを評価する。メトリック評価ユニット42は、メトリックバッファ24に記憶された収集されたメトリックに重み付け方式を適用し得る。たとえば、メトリック評価ユニット42は、上記メトリックのうちの2つ以上に一定量の重みを割り当てるアルゴリズムを実行し得る。重み付け方式は、上記メトリックのうちの2つ以上に等しい量の重みを適用し得るか、または上記メトリックの各々に異なる量の重みを適用し得る。いくつかの場合には、重み付け方式アルゴリズムはグラフィックスドライバ10中にプリプログラムされ得る。他の場合には、重み付け方式アルゴリズムはグラフィックスAPI22を介して開発者によって設定され得る。このようにして、重み付け方式アルゴリズムは、レンダリングされるべきグラフィックスデータのタイプ、CPU4およびGPU6のシステム要件およびパフォーマンス、または他の考慮事項に基づいて、時間とともに変更され得る。
1つの具体的な例として、メトリック評価ユニット42は、GPU帯域幅46とレンダターゲットの数48とのメトリックに最も大きい重みを適用し得る。いくつかの場合には、メトリック評価ユニット42は、GPU帯域幅46とレンダターゲットの数48とに等しい量の重みを適用し得る。他の場合には、メトリック評価ユニット42は、GPU帯域幅46とレンダターゲットの数48とのうちの1つにわずかにより多くの重みを適用し得る。
レンダリング中にGPU帯域幅46が高いとき、それは、GPU6のレンダリングエンジン12が、GPU6の外部にあるデバイスメモリ8に対して多数の読取りおよび/または書込み要求を実行していることを示し得る。これは、レンダリングエンジン12が、直接レンダリングモードでデバイスメモリ8との多数の読取り−修正−書込み演算を必要とするカラーブレンディングまたは深度テスト演算を実行しているとき、発生し得る。したがって、GPU帯域幅46の量が高いとき、システム帯域幅使用量を低減するために据置きレンダリングモードに切り替えることが、より効率的であり得る。据置きレンダリングモードでは、GPU6は、電力をほとんど使用せずにおよびシステム帯域幅をまったく使用せずに、GPU6上にローカルに位置するタイルバッファ30に対して読取りおよび/または書込み要求を実行し得る。このようにして、据置きレンダリングモードは、現在レンダリングユニットのためのグラフィックスデータのレンダリング中にGPU6によって使用されるシステム帯域幅の量をおそらく低減することになる。
ただし、メトリック評価は1つのメトリックのみに依拠(rely)するべきでない。たとえば、単にGPU帯域幅46に依拠することは、レンダリングユニットをタイルに分割するためのタイリングパスをセットアップすることと、次いで各タイルを別個にレンダリングすることとを行うために必要とされる処理リソースを考慮に入れることができない。代わりに、メトリック評価ユニット42は、GPU6が使用する最も効率的なレンダリングモードを予測するために、現在レンダリングユニット中のグラフィックスデータをレンダリングするためのオーバーヘッドコストと帯域幅コストを比較し得る。
オーバーヘッドコストを判断するために、パフォーマンス評価ユニット42は、現在レンダリングユニットのために定義されたレンダターゲットの数48を評価し得る。上記で説明したように、フレームをレンダリングするために、GPU6は、フレームに関連するレンダターゲットの各々内のグラフィックスデータを別個にレンダリングし、次いで、レンダリングされたグラフィックスデータをフレームバッファ28中で合成する。所与のフレームのために定義されたレンダターゲットの数48が高いとき、表示のためにそのフレームを完全にレンダリングするために、より多数のレンダリングパスが必要とされる。したがって、レンダターゲットの数48が高いとき、各レンダターゲットのためのタイリングパスをセットアップすることと、フレームに関連する各レンダターゲットの各タイルをレンダリングすることとを行う必要をなくすことによって、オーバーヘッドコストを低減するために、直接レンダリングモードに切り替えることが、より効率的であり得る。
直接レンダリングモードでは、GPU6は、各レンダターゲットのための別個のタイリングパスおよびタイルレンダリングを実行することなしに、フレームに関連する各レンダターゲット中のグラフィックスデータをフレームバッファ28に直接レンダリングし得る。このようにして、直接レンダリングモードを使用することは、現在レンダリングユニットのためのグラフィックスデータのレンダリング中にCPU4および/またはGPU6によって使用される処理リソースの量をおそらく低減することになる。
したがって、GPU帯域幅46が高く、レンダターゲットの数48が低いとき、メトリック評価ユニット42は、現在レンダリングユニットのために据置きレンダリングモードが最も効率的であることを予測し得る。上記で説明したように、レンダリングユニットのグラフィックスデータが、多くの読取り−修正−書込み機能を必要とするピクセルブレンディングと深度テストとを用いた複雑なグラフィックスシーンを表すとき、据置きレンダリングモードは、そのグラフィックスデータをレンダリングするために、より少ない電力およびシステム帯域幅を使用し得る。GPU帯域幅46が高いが、レンダターゲットの数48が低いとき、タイリングパスをセットアップすることと、各レンダターゲットのための複数のタイルをレンダリングすることとのオーバーヘッドコストは、据置きレンダリングモードの帯域幅低減をオーバーライドしない。
一方、GPU帯域幅46が低く、レンダターゲットの数48が高いとき、メトリック評価ユニット42は、現在レンダリングユニットのために直接レンダリングモードが最も効率的であることを予測し得る。上記で説明したように、レンダリングユニットのグラフィックスデータが、据置きレンダリングモードが、帯域幅低減を行わないが、処理リソースの消耗の働きをする、単純なグラフィックスシーンを表すとき、直接レンダリングモードは、そのグラフィックスデータをレンダリングするために、より少ない電力およびシステム帯域幅を使用し得る。GPU帯域幅46が低いが、レンダターゲットの数48が高いとき、タイリングパスをセットアップすることと、各レンダターゲットのための複数のタイルをレンダリングすることとのオーバーヘッドコストは、据置きレンダリングモードのいかなる帯域幅低減をもオーバーライドする。
いくつかの場合には、GPU帯域幅46およびレンダターゲットの数48に基づいて、どちらのレンダリングモードがレンダリング中により少ない電力および/またはシステム帯域幅を使用することになるかは、直ちに明白でないことがある。たとえば、GPU帯域幅46とレンダターゲットの数48とが両方とも低いかまたは両方とも高いとき、据置きレンダリングモードのためにタイリングパスをセットアップすることとタイルレンダリングとのオーバーヘッドコストが、据置きレンダリングモードの帯域幅低減をオーバーライドすることになるかどうかは、不明瞭であり得る。それらの場合には、メトリック評価ユニット42は、現在レンダリングユニットのための最も効率的なレンダリングモードを予測するために次の重み付けされたメトリックに頼り得る。
メトリック評価ユニット42は、次いで、レンダリング中に任意のボトルネックがどこで発生していることがあるかを判断するために、たとえば、GPU負荷50およびCPU負荷52を評価し得る。CPU負荷52が高いとき、それは、据置きレンダリングモードに伴うグラフィックスドライバ10における追加のオーバーヘッドコストによるCPU4におけるボトルネックを示し得る。この場合、直接レンダリングモードを使用し、より多くの処理負担をGPU6上にシフトすることが、より効率的であり得る。他の例では、パフォーマンス評価ユニット42は、レンダリングユニットのためのプリミティブまたは三角形のドロー(draw)の数を判断するためにAPI呼の数58を評価し得る。API呼の数58が高いとき、たとえば、レンダリングユニット当たり2,000呼よりも多いとき、レンダリングユニットの各タイルのための多数のプリミティブを再び描かなければならないことのオーバーヘッドコストが据置きレンダリングモードの帯域幅低減をオーバーライドし得るので、直接レンダリングモードを使用することが、より効率的であり得る。
メトリックが評価されると、グラフィックスドライバ10は、評価されたメトリックに基づいて直接レンダリングモードまたは据置きレンダリングモードを選択するためにレンダリングモード選択ユニット44を実行する。より詳細には、レンダリングモード選択ユニット44は、現在レンダリングユニットのグラフィックスデータをレンダリングするために、より少ない電力および/またはシステム帯域幅を使用することをメトリック評価ユニット42によって予測されたレンダリングモードを選択し得る。レンダリングモード選択ユニット44は、次いで、現在レンダリングユニットのグラフィックスデータをレンダリングするために、選択されたレンダリングモードに従って動作するようにGPU6を構成し得る。GPU6を構成することは、レンダリングエンジン12から出力されたレンダリングされたグラフィックスデータを、直接レンダリングモードの場合はフレームバッファ28に直接送るように、または据置きレンダリングモードの場合はタイルバッファ30に送るように、GPU6のレジスタをプログラムすることを備え得る。
いくつかの場合には、グラフィックスドライバ10のレンダリングモード選択ユニットは、グラフィックスAPI22を介して開発者または他のユーザから、手動で選択されたまたは示されたレンダリングモードをも受信し得る。手動で選択されたレンダリングモードは、自動的に選択されたレンダリングモードをオーバーライドし得る。手動で選択されたレンダリングモードが受信されたとき、レンダリングモード選択ユニット44は、手動で選択されたレンダリングモードに従って動作するようにGPU6を構成し得る。このようにして、開発者は、どちらのレンダリングモードがレンダリング中により少ない電力および/またはシステム帯域幅を使用することを予測されるかにかかわらず、GPU6によって使用されるレンダリングモードを制御することが可能であり得る。
図4は、GPU6が使用するレンダリングモードを自動的に選択する、グラフィックスドライバ10の例示的な動作を示すフローチャートである。図示のフローチャートについて、図2からのグラフィックスデバイス2を参照しながら説明する。CPU4上のグラフィックスアプリケーション20の実行中に、グラフィックスドライバ10は、表示のために画像を生成するためにグラフィックスデータをレンダリングするようにGPU6に指令し得る。グラフィックスドライバ10はまた、直接レンダリングモードまたは据置きレンダリングモードのどちらが、グラフィックスデータをレンダリングするために最少量の電力および/またはシステム帯域幅を使用することを予測されるかに基づいて、GPU6が使用する直接レンダリングモードまたは据置きレンダリングモードのいずれかを自動的に選択し得る。
グラフィックスデータは複数のレンダリングユニットを備え得る。グラフィックスデータのレンダリングユニットは、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、または単一のレンダターゲットの一部分を含み得る。グラフィックスドライバ10は、GPU6が前のレンダリングユニットから現在レンダリングユニットに切り替えているとき、レンダリング境界において現在レンダリングユニットのためのレンダリングモードを選択し得る。
所与のレンダリング境界において、CPU4上で動作しているグラフィックスドライバ10は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを収集する(60)。一般に、グラフィックスドライバ10は、前のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックをGPU6から収集し、現在レンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックをCPU4から収集する。グラフィックスドライバ10は、次いで、収集されたメトリックをメトリックバッファ24に記憶し得る。メトリックを収集する例示的な動作については、図5でより詳細に説明する。
グラフィックスドライバ10は、次に、重み付け方式を使用して上記メトリックのうちの少なくとも2つを評価する(62)。このようにして、グラフィックスドライバ10は、直接レンダリングモードおよび据置きレンダリングモードのうちのどちらが、現在レンダリングユニットのグラフィックスデータをレンダリングするために、より少ない電力および/またはシステム帯域幅を使用することになるかを予測し得る。たとえば、グラフィックスドライバ10は、少なくともGPU帯域幅とフレームのために定義されたレンダターゲットの数とのメトリックに、重み付け方式を適用し得る。グラフィックスドライバ10は、次いで、据置きレンダリングモードをセットアップすることに関連するオーバーヘッドコストが、現在レンダリングユニットのグラフィックスデータのための据置きレンダリングモードの帯域幅低減をオーバーライドするかどうかを評価し得る。メトリックを評価する例示的な動作については、図6でより詳細に説明する。
メトリックが評価されると、グラフィックスドライバ10は、その評価に基づいて直接レンダリングモードまたは据置きレンダリングモードを自動的に選択する(64)。より詳細には、レンダリングモード選択ユニット44は、現在レンダリングユニットのグラフィックスデータをレンダリングするために、より少ない電力および/またはシステム帯域幅を使用することを予測されたレンダリングモードを選択し得る。
いくつかの場合には、グラフィックスドライバ10は、グラフィックスAPI22を介して開発者または他のユーザから、手動で選択されたレンダリングモードをも受信し得る。(66のYESブランチ)。グラフィックスドライバ10によって受信された手動で選択されたレンダリングモードは、自動的に選択されたレンダリングモードをオーバーライドし得る(68)。このようにして、開発者は、どちらのレンダリングモードがレンダリング中により少ない電力および/またはシステム帯域幅を使用することを予測されるかにかかわらず、GPU6によって使用されるレンダリングモードを制御することが可能であり得る。
レンダリングモードが、評価されたメトリックに基づいて自動的に選択されたのか(66のNOブランチ)、ユーザによって手動で選択されたのか(66のYESブランチ、68)にかかわらず、グラフィックスドライバ10は、現在レンダリングユニットのグラフィックスデータをレンダリングするために、選択されたレンダリングモードに従って動作するようにGPU6を構成する(70)。GPU6を構成することは、レンダリングエンジン12から出力されたレンダリングされたグラフィックスデータを、直接レンダリングモードの場合はフレームバッファ28に直接送るように、または据置きレンダリングモードの場合はタイルバッファ30に送るように、GPU6のレジスタをプログラムすることを備え得る。
グラフィックスドライバ10は、次いで、選択されたレンダリングモードに従って動作するように構成されたGPU6のレンダリングエンジン12に現在レンダリングユニットのグラフィックスデータを与え得る(72)。GPU6がグラフィックスデータ中のレンダリング境界に達するまで(74のNOブランチ)、グラフィックスドライバ10は、GPU6のレンダリングエンジン12に現在レンダリングユニットのグラフィックスデータを与え続けることになる(72)。GPU6が、レンダリング境界に達し、現在レンダリングユニットから後続のレンダリングユニットに切り替えると(74のYESブランチ)、グラフィックスドライバ10も後続のレンダリングユニットに切り替える(76)。グラフィックスドライバ10は、次いで、後続のレンダリングユニットのために、上記で説明した自動レンダリングモード選択プロセスを実行する。
図5は、1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを収集する(図4からのステップ60)、グラフィックスドライバ10の例示的な動作を示すフローチャートである。図示のフローチャートについて、図3からのグラフィックスドライバ10のメトリック収集ユニット40を参照しながら説明する。所与のレンダリング境界において、グラフィックスドライバ10は、前のレンダリングユニットおよび/または現在レンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを収集するためにメトリック収集ユニット40を実行する。たとえば、メトリック収集ユニット40は、現在レンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックをCPU4から収集し、前のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックをGPU6から収集し得る。
メトリック収集ユニット40は、GPU6のGPUパフォーマンスカウンタ32から、前のレンダリングユニットのレンダリング中に使用されたGPU帯域幅46の量を収集し得る(80)。いくつかの場合には、メトリック収集ユニット40は、あらゆるレンダリング境界においてGPUパフォーマンスカウンタ32から情報を収集するとは限らないことがある。GPU帯域幅の量は、その場合、CPU4上で実行されるグラフィックスアプリケーション20から収集された前のレンダリングユニットまたは現在レンダリングユニットのための頂点/フラグメントの数54に基づいて判断され得る(以下のステップ88)。グラフィックスデータをレンダリングするためにGPU6によって使用される大量の帯域幅は、GPU6がデバイスメモリ8に対して多数の読取りおよび/または書込み要求を行っていることを示し得る。
メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、現在レンダリングユニットに関連するフレームのために定義されたレンダターゲットの数48をも収集し得る(82)。所与のフレームのために定義されたレンダターゲットの数が大きいほど、表示のためにそのフレームを完全にレンダリングするために必要とされるレンダリングパスの数は大きくなる。メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、現在レンダリングユニットに関連するフレームのために定義されたレンダターゲットの次元49を収集し得る(83)。その次元は、所与のフレームのための、デバイスメモリ8に記憶されたレンダターゲット26の各々のための高さ、幅、およびビット/ピクセルを備え得る。所与のフレームのために定義された大きいレンダターゲットは、そのフレームが、多くの読取り−修正−書込み演算を必要とし得るレンダリングのための複雑なグラフィックスシーンを含むことを示し得る。
メトリック収集ユニット40は、前のレンダリングユニットのレンダリング中のGPU6のレジスタに対するGPU負荷50の量を収集し得る(84)。メトリック収集ユニット40は、前のレンダリングユニットのレンダリング中のCPU4のレジスタに対するCPU負荷52の量をも収集し得る(86)。GPU6およびCPU4の負荷量は、グラフィックスデータのレンダリング中に任意のパフォーマンスボトルネックがどこで発生していることがあるかを示し得る。
メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、現在レンダリングユニットのための頂点/フラグメントの数54を収集し得る(88)。上述のように、所与のレンダリングユニットのグラフィックスデータ中に含まれる頂点および/またはフラグメントの数は、そのレンダリングユニットのグラフィックスデータをレンダリングするために必要とされることになるGPU帯域幅の量を判断するために使用され得る。メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、現在レンダリングユニット中のフラグメントのロケーション55をも収集し得る(89)。フラグメントのロケーションは、多数のフラグメントが、単純なグラフィックスシーンにおけるレンダリングユニットにわたって広がっているのか、複雑なグラフィックスシーンとしてのレンダリングユニットの1つのエリアに集まっているのかを示し得る。
メトリック収集ユニット40は、CPU4上で実行されるグラフィックスアプリケーション20から、現在レンダリングユニットが深度テスト/ブレンディング有効化されるかどうか56を収集し得る(90)。所与のレンダリングユニットのために有効化され、実行されるとき、深度テストとピクセルブレンディングとのグラフィックス演算は、多くの読取り−修正−書込み演算を必要とする。メトリック収集40は、現在レンダリングユニットのためにCPU4および/またはGPU6上で実行されるアプリケーションのタイプ57をも収集し得る(91)。CPU4および/またはGPU6上で実行される、アプリケーション、すなわち、グラフィックスアプリケーション20のタイプは、レンダリングのために生成されるグラフィックスシーンのための一般的な複雑さレベルを示し得る。
さらに、メトリック収集ユニット40は、CPU4上で実行されるグラフィックスAPI22から、前のレンダリングユニットまたは現在レンダリングユニットのためのAPI呼、たとえば、グラフィックスデータを用いてプリミティブまたは三角形を描くための呼の数56を収集し得る(92)。所与のレンダリングユニットが多数のAPI呼を含むとき、多数のプリミティブが据置きレンダリングモードで複数のタイルのために再び描かれる必要があることになる可能性が高いことがある。グラフィックスドライバ10のメトリック収集ユニット40は、次いで、収集されたメトリックをメトリックバッファ24に記憶し得る。
図6は、重み付け方式を使用してメトリックを評価する(図4からのステップ62)、グラフィックスドライバ10の例示的な動作を示すフローチャートである。図示のフローチャートについて、図3からのグラフィックスドライバ10のメトリック評価ユニット42を参照しながら説明する。上記メトリックが収集され、メトリックバッファ24に記憶されると、グラフィックスドライバ10は、メトリック評価ユニット42を実行して、直接レンダリングモードおよび据置きレンダリングモードのうちのどちらが、現在レンダリングユニットのグラフィックスデータをレンダリングするために、より少ない電力および/またはシステム帯域幅を使用することになるかを予測するために、上記メトリックのうちの少なくとも2つを評価する。
メトリック評価ユニット42は、メトリックバッファ24に記憶された収集されたメトリックに重み付け方式を適用する(94)。たとえば、メトリック評価ユニット42は、上記メトリックのうちの2つ以上に一定量の重みを割り当てるアルゴリズムを実行し得る。図示の例示的な動作では、メトリック評価42は、GPU帯域幅46とレンダターゲットの数48とのメトリックに最も大きい重みを適用する(96)。
GPU帯域幅46が高く、レンダターゲットの数48が低いとき(98のYESブランチ)、メトリック評価ユニット42は、現在レンダリングユニットのために据置きレンダリングモードが最も効率的であることを予測し得る(100)。上記で説明したように、レンダリングユニットのグラフィックスデータが、多くの読取り−修正−書込み機能を必要とするピクセルブレンディングと深度テストとを用いた複雑なグラフィックスシーンを表すとき、据置きレンダリングモードは、そのグラフィックスデータをレンダリングするために、より少ないシステム帯域幅および電力を使用し得る。GPU帯域幅46が高いが、レンダターゲットの数48が低いとき、タイリングパスをセットアップすることと、各レンダターゲットのための複数のタイルをレンダリングすることとのオーバーヘッドコストは、据置きレンダリングモードの帯域幅低減をオーバーライドしない。
GPU帯域幅46が低く、レンダターゲットの数48が高いとき(98のNOブランチおよび102のYESブランチ)、メトリック評価ユニット42は、現在レンダリングユニットのために直接レンダリングモードが最も効率的であることを予測し得る(104)。上記で説明したように、レンダリングユニットのグラフィックスデータが、据置きレンダリングモードが、帯域幅低減を行わないが、処理リソースの消耗の働きをする、単純なグラフィックスシーンを表すとき、直接レンダリングモードは、そのグラフィックスデータをレンダリングするために、より少ないシステム帯域幅および電力を使用し得る。GPU帯域幅46が低いが、レンダターゲットの数48が高いとき、タイリングパスをセットアップすることと、各レンダターゲットのための複数のタイルをレンダリングすることとのオーバーヘッドコストは、据置きレンダリングモードのいかなる帯域幅低減をもオーバーライドする。
GPU帯域幅46が低く、レンダターゲットの数48も低いとき、またはGPU帯域幅46が高く、レンダターゲットの数48も高いとき(98のNOブランチおよび102のNOブランチ)、メトリック評価ユニット42は、現在レンダリングユニットのための最も効率的なレンダリングモードを予測するために次の重み付けされたメトリックに頼り得る(106)。たとえば、GPU帯域幅46とレンダターゲットの数48とが両方とも低いかまたは両方とも高いとき、据置きレンダリングモードのためにタイリングパスをセットアップすることとタイルレンダリングとのオーバーヘッドコストが、据置きレンダリングモードの帯域幅低減をオーバーライドすることになるかどうかは、不明瞭であり得る。この場合、GPU帯域幅46およびレンダターゲットの数48に基づいて、どちらのレンダリングモードがレンダリング中により少ないシステム帯域幅および/または電力を使用することになるかが、直ちに明白でないとき、任意の追加の重み付けされたメトリックが使用され得る。
図6の図示のフローチャートは、重み付け方式を使用してメトリックを評価することの一例にすぎない。他の例では、異なる量の重みが異なるメトリックに適用され得る。たとえば、最も効率的なレンダリングモードを予測するために2つ以上の他のメトリックが最も大きい重みを与えられ得、またはすべてのメトリックが等しい重みを与えられ得る。さらに他の例では、最も効率的なレンダリングモードを予測するために異なる評価方式が使用され得る。
1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能または動作は、1つまたは複数の命令またはコードとして非一時的コンピュータ可読媒体上に記憶され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリなど、非一時的媒体、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
命令は、1つまたは複数のDSP、汎用マイクロプロセッサ、ASIC、FPGA、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
グラフィックスデータを処理する方法であって、
1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、
前記評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、
前記選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することとを備える、方法。
[C2]
前記レンダリングユニットの各々が、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、またはフレームに関連する単一のレンダターゲットの一部分のうちの1つを備える、[C1]に記載の方法。
[C3]
前のレンダリングユニットおよび現在レンダリングユニットのうちの少なくとも1つのグラフィックスデータをレンダリングすることに関連するメトリックを収集することをさらに備える、[C1]に記載の方法。
[C4]
少なくとも2つのメトリックを評価することが、頂点の数、フラグメントの数、フラグメントのロケーション、GPU帯域幅の量、GPUに対する負荷量、中央処理ユニット(CPU)に対する負荷量、フレームのために定義されたレンダターゲットの数、フレームのために定義された複数のレンダターゲット(MRT)の数、深度テスト有効化、ブレンディング有効化、ステンシルテスト有効化、レンダターゲットの次元、GPU上で実行されるアプリケーションのタイプ、グラフィックスアプリケーションプログラムインターフェース(API)呼の数、およびGPUハードウェアパフォーマンスカウンタ情報のうちの2つ以上を評価することを備える、[C1]に記載の方法。
[C5]
レンダリングモードを自動的に選択することが、前のレンダリングユニットと前記現在レンダリングユニットとの間の前記グラフィックスデータ中のレンダリング境界において前記現在レンダリングユニットのための前記レンダリングモードを自動的に選択することを備える、[C1]に記載の方法。
[C6]
レンダリングのために前記GPUに前記現在レンダリングユニットの前記グラフィックスデータを与えることと、
前記グラフィックスデータ中のレンダリング境界に達すると、前記現在レンダリングユニットから後続のレンダリングユニットに切り替えることとをさらに備える、[C1]に記載の方法。
[C7]
前記メトリックのうちの少なくとも2つを評価することが、前記少なくとも2つのメトリックに重み付け方式を適用することを備える、[C1]に記載の方法。
[C8]
前記メトリックのうちの少なくとも2つを評価することが、少なくともGPU帯域幅の量とフレームのために定義されたレンダターゲットの数とを評価することを備える、[C1]に記載の方法。
[C9]
前記メトリックのうちの少なくとも2つを評価することは、前記直接レンダリングモードおよび前記据置きレンダリングモードのうちのどちらの1つが、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することになるかを予測することを備える、[C1]に記載の方法。
[C10]
レンダリングモードを自動的に選択することが、前記評価されたメトリックに基づいて、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することを予測された前記直接レンダリングモードおよび前記据置きレンダリングモードのうちの前記1つを自動的に選択することを備える、[C1]に記載の方法。
[C11]
GPUを構成することは、前記レンダリングモードとして前記直接レンダリングモードが選択されたとき、前記現在レンダリングユニットのグラフィックスデータをフレームバッファに直接レンダリングするように前記GPUのレンダリングエンジンを構成することを備える、[C1]に記載の方法。
[C12]
GPUを構成することは、前記レンダリングモードとして前記据置きレンダリングモードが選択されたとき、前記現在レンダリングユニットを複数のタイルに分割するタイリングパスを実行することと、前記複数のタイルの各々のグラフィックスデータをタイルバッファにレンダリングすることと、前記レンダリングされたタイルのための各々を前記タイルバッファからフレームバッファに読み込むこととを行うように前記GPUのレンダリングエンジンを構成することを備える、[C1]に記載の方法。
[C13]
前記自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信することをさらに備え、GPUを構成することが、前記手動で選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするように前記GPUを構成することを備える、[C1]に記載の方法。
[C14]
手動で選択されたレンダリングモードを受信することが、ユーザから前記手動で選択されたレンダリングモードを受信するためにグラフィックスアプリケーションプログラミングインターフェース(API)を実行することを備える、[C13]に記載の方法。
[C15]
グラフィックスデータを処理するためのグラフィックスデバイスであって、
1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを記憶するメモリバッファと、
前記メトリックのうちの少なくとも2つを評価することと、前記評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、前記選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することとを行う1つまたは複数のプロセッサとを備える、グラフィックスデバイス。
[C16]
前記1つまたは複数のプロセッサが、中央処理ユニット(CPU)および前記GPUのうちの1つまたは複数を備える、[C15]に記載のグラフィックスデバイス。
[C17]
前記レンダリングユニットの各々が、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、またはフレームに関連する単一のレンダターゲットの一部分のうちの1つを備える、[C15]に記載のグラフィックスデバイス。
[C18]
前記プロセッサが、前のレンダリングユニットおよび現在レンダリングユニットのうちの少なくとも1つのグラフィックスデータをレンダリングすることに関連するメトリックを収集する、[C15]に記載のグラフィックスデバイス。
[C19]
前記メトリックが、頂点の数、フラグメントの数、フラグメントのロケーション、GPU帯域幅の量、GPUに対する負荷量、中央処理ユニット(CPU)に対する負荷量、フレームのために定義されたレンダターゲットの数、フレームのために定義された複数のレンダターゲット(MRT)の数、深度テスト有効化、ブレンディング有効化、ステンシルテスト有効化、レンダターゲットの次元、GPU上で実行されるアプリケーションのタイプ、グラフィックスアプリケーションプログラムインターフェース(API)呼の数、およびGPUハードウェアパフォーマンスカウンタ情報のうちの2つ以上を備える、[C15]に記載のグラフィックスデバイス。
[C20]
前記プロセッサが、前記前のレンダリングユニットと前記現在レンダリングユニットとの間の前記グラフィックスデータ中のレンダリング境界において前記現在レンダリングユニットのための前記レンダリングモードを自動的に選択する、[C15]に記載のグラフィックスデバイス。
[C21]
前記プロセッサが、
レンダリングのために前記GPUに前記現在レンダリングユニットの前記グラフィックスデータを与え、
前記グラフィックスデータ中のレンダリング境界に達すると、前記現在レンダリングユニットから後続のレンダリングユニットに切り替える、[C15]に記載のグラフィックスデバイス。
[C22]
前記プロセッサが、前記メトリックのうちの少なくとも2つを、前記少なくとも2つのメトリックに重み付け方式を適用することによって評価する、[C15]に記載のグラフィックスデバイス。
[C23]
前記プロセッサが、少なくともGPU帯域幅の量とレンダターゲットの数とを評価する、[C15]に記載のグラフィックスデバイス。
[C24]
前記プロセッサは、前記直接レンダリングモードおよび前記据置きレンダリングモードのうちのどちらの1つが、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することになるかを予測するために、前記メトリックのうちの少なくとも2つを評価する、[C15]に記載のグラフィックスデバイス。
[C25]
前記プロセッサが、前記評価されたメトリックに基づいて、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することを予測された前記直接レンダリングモードおよび前記据置きレンダリングモードのうちの前記1つを自動的に選択する、[C15]に記載のグラフィックスデバイス。
[C26]
前記GPUがレンダリングエンジンを含み、前記レンダリングモードとして前記直接レンダリングモードが選択されたとき、前記プロセッサは、前記現在レンダリングユニットのグラフィックスデータをフレームバッファに直接レンダリングするように前記GPUの前記レンダリングエンジンを構成する、[C15]に記載のグラフィックスデバイス。
[C27]
前記GPUがレンダリングエンジンを含み、前記レンダリングモードとして前記据置きレンダリングモードが選択されたとき、前記プロセッサは、前記現在レンダリングユニットを複数のタイルに分割するタイリングパスを実行することと、前記複数のタイルの各々のグラフィックスデータをタイルバッファにレンダリングすることと、前記レンダリングされたタイルのための各々を前記タイルバッファからフレームバッファに読み込むこととを行うように前記GPUの前記レンダリングエンジンを構成する、[C15]に記載のグラフィックスデバイス。
[C28]
前記プロセッサが、前記自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信することと、前記手動で選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするように前記GPUを構成することとを行う、[C15]に記載のグラフィックスデバイス。
[C29]
前記プロセッサが、ユーザから前記手動で選択されたレンダリングモードを受信するためにグラフィックスアプリケーションプログラミングインターフェース(API)を実行する、[C28]に記載のグラフィックスデバイス。
[C30]
グラフィックスデータを処理するためのグラフィックスデバイスであって、
1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価するための手段と、
前記評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択するための手段と、
前記選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成するための手段とを備える、グラフィックスデバイス。
[C31]
前記レンダリングユニットの各々が、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、またはフレームに関連する単一のレンダターゲットの一部分のうちの1つを備える、[C30]に記載のグラフィックスデバイス。
[C32]
前のレンダリングユニットおよび現在レンダリングユニットのうちの少なくとも1つのグラフィックスデータをレンダリングすることに関連するメトリックを収集するための手段をさらに備える、[C30]に記載のグラフィックスデバイス。
[C33]
前記メトリックが、頂点の数、フラグメントの数、フラグメントのロケーション、GPU帯域幅の量、GPUに対する負荷量、中央処理ユニット(CPU)に対する負荷量、フレームのために定義されたレンダターゲットの数、フレームのために定義された複数のレンダターゲット(MRT)の数、深度テスト有効化、ブレンディング有効化、ステンシルテスト有効化、レンダターゲットの次元、GPU上で実行されるアプリケーションのタイプ、グラフィックスアプリケーションプログラムインターフェース(API)呼の数、およびGPUハードウェアパフォーマンスカウンタ情報のうちの2つ以上を備える、[C30]に記載のグラフィックスデバイス。
[C34]
前記前のレンダリングユニットと前記現在レンダリングユニットとの間の前記グラフィックスデータ中のレンダリング境界において前記現在レンダリングユニットのための前記レンダリングモードを自動的に選択するための手段をさらに備える、[C30]に記載のグラフィックスデバイス。
[C35]
前記メトリックのうちの少なくとも2つを評価するための前記手段が、前記少なくとも2つのメトリックに重み付け方式を適用するための手段を備える、[C30]に記載のグラフィックスデバイス。
[C36]
前記メトリックのうちの少なくとも2つを評価するための前記手段は、前記直接レンダリングモードおよび前記据置きレンダリングモードのうちのどちらの1つが、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することになるかを予測するための手段を備える、[C30]に記載のグラフィックスデバイス。
[C37]
前記評価されたメトリックに基づいて、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することを予測された前記直接レンダリングモードおよび前記据置きレンダリングモードのうちの前記1つを自動的に選択するための手段をさらに備える、[C30]に記載のグラフィックスデバイス。
[C38]
前記自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信するための手段と、
前記手動で選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするように前記GPUを構成するための手段とをさらに備える、[C30]に記載のグラフィックスデバイス。
[C39]
実行されたとき、1つまたは複数のプログラマブルプロセッサに、
1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、
前記評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、
前記選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することとを行わせる、グラフィックスデータを処理するための命令を備えるコンピュータ可読媒体。
[C40]
前記レンダリングユニットの各々が、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、またはフレームに関連する単一のレンダターゲットの一部分のうちの1つを備える、[C39]に記載のコンピュータ可読媒体。
[C41]
前記プログラマブルプロセッサに、前のレンダリングユニットおよび現在レンダリングユニットのうちの少なくとも1つのグラフィックスデータをレンダリングすることに関連するメトリックを収集することを行わせる命令をさらに備える、[C39]に記載のコンピュータ可読媒体。
[C42]
前記命令が、前記プログラマブルプロセッサに、頂点の数、フラグメントの数、フラグメントのロケーション、GPU帯域幅の量、GPUに対する負荷量、中央処理ユニット(CPU)に対する負荷量、フレームのために定義されたレンダターゲットの数、フレームのために定義された複数のレンダターゲット(MRT)の数、深度テスト有効化、ブレンディング有効化、ステンシルテスト有効化、レンダターゲットの次元、GPU上で実行されるアプリケーションのタイプ、グラフィックスアプリケーションプログラムインターフェース(API)呼の数、およびGPUハードウェアパフォーマンスカウンタ情報のうちの2つ以上を評価することを行わせる、[C39]に記載のコンピュータ可読媒体。
[C43]
前記命令が、前記プログラマブルプロセッサに、前のレンダリングユニットと前記現在レンダリングユニットとの間の前記グラフィックスデータ中のレンダリング境界において前記現在レンダリングユニットのための前記レンダリングモードを自動的に選択することを行わせる、[C39]に記載のコンピュータ可読媒体。
[C44]
前記命令が、前記プログラマブルプロセッサに、前記メトリックのうちの少なくとも2つを、前記少なくとも2つのメトリックに重み付け方式を適用することによって評価することを行わせる、[C39]に記載のコンピュータ可読媒体。
[C45]
前記命令は、前記プログラマブルプロセッサに、前記直接レンダリングモードおよび前記据置きレンダリングモードのうちのどちらの1つが、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することになるかを予測するために、前記メトリックのうちの少なくとも2つを評価することを行わせる、[C39]に記載のコンピュータ可読媒体。
[C46]
前記命令が、前記プログラマブルプロセッサに、前記評価されたメトリックに基づいて、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することを予測された前記直接レンダリングモードおよび前記据置きレンダリングモードのうちの前記1つを自動的に選択することを行わせる、[C39]に記載のコンピュータ可読媒体。
[C47]
前記プログラマブルプロセッサに、
前記自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信することと、
前記手動で選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするように前記GPUを構成することとを行わせる命令をさらに備える、[C39]に記載のコンピュータ可読媒体。

Claims (43)

  1. グラフィックスデータを処理する方法であって、
    1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、
    前記評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、
    前記選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することと
    を備え、前記メトリックのうちの少なくとも2つを評価することが、前記少なくとも2つのメトリックに重み付け方式を適用することを備える、方法。
  2. 前記レンダリングユニットの各々が、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、またはフレームに関連する単一のレンダターゲットの一部分のうちの1つを備える、請求項1に記載の方法。
  3. 前のレンダリングユニットおよび現在レンダリングユニットのうちの少なくとも1つのグラフィックスデータをレンダリングすることに関連するメトリックを収集することをさらに備える、請求項1に記載の方法。
  4. 少なくとも2つのメトリックを評価することが、頂点の数、フラグメントの数、フラグメントのロケーション、GPU帯域幅の量、GPUに対する負荷量、中央処理ユニット(CPU)に対する負荷量、フレームのために定義されたレンダターゲットの数、フレームのために定義された複数のレンダターゲット(MRT)の数、深度テスト有効化、ブレンディング有効化、ステンシルテスト有効化、レンダターゲットの次元、GPU上で実行されるアプリケーションのタイプ、グラフィックスアプリケーションプログラムインターフェース(API)呼の数、およびGPUハードウェアパフォーマンスカウンタ情報のうちの2つ以上を評価することを備える、請求項1に記載の方法。
  5. レンダリングモードを自動的に選択することが、前のレンダリングユニットと前記現在レンダリングユニットとの間の前記グラフィックスデータ中のレンダリング境界において前記現在レンダリングユニットのための前記レンダリングモードを自動的に選択することを備える、請求項1に記載の方法。
  6. レンダリングのために前記GPUに前記現在レンダリングユニットの前記グラフィックスデータを与えることと、
    前記グラフィックスデータ中のレンダリング境界に達すると、前記現在レンダリングユニットから後続のレンダリングユニットに切り替えることとをさらに備える、請求項1に記載の方法。
  7. 前記メトリックのうちの少なくとも2つを評価することが、少なくともGPU帯域幅の量とフレームのために定義されたレンダターゲットの数とを評価することを備える、請求項1に記載の方法。
  8. 前記メトリックのうちの少なくとも2つを評価することは、前記直接レンダリングモードおよび前記据置きレンダリングモードのうちのどちらの1つが、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することになるかを予測することを備える、請求項1に記載の方法。
  9. レンダリングモードを自動的に選択することが、前記評価されたメトリックに基づいて、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することを予測された前記直接レンダリングモードおよび前記据置きレンダリングモードのうちの前記1つを自動的に選択することを備える、請求項1に記載の方法。
  10. GPUを構成することは、前記レンダリングモードとして前記直接レンダリングモードが選択されたとき、前記現在レンダリングユニットのグラフィックスデータをフレームバッファに直接レンダリングするように前記GPUのレンダリングエンジンを構成することを備える、請求項1に記載の方法。
  11. GPUを構成することは、前記レンダリングモードとして前記据置きレンダリングモードが選択されたとき、前記現在レンダリングユニットを複数のタイルに分割するタイリングパスを実行することと、前記複数のタイルの各々のグラフィックスデータをタイルバッファにレンダリングすることと、前記レンダリングされたタイルのための各々を前記タイルバッファからフレームバッファに読み込むこととを行うように前記GPUのレンダリングエンジンを構成することを備える、請求項1に記載の方法。
  12. 前記自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信することをさらに備え、GPUを構成することが、前記手動で選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするように前記GPUを構成することを備える、請求項1に記載の方法。
  13. 手動で選択されたレンダリングモードを受信することが、ユーザから前記手動で選択されたレンダリングモードを受信するためにグラフィックスアプリケーションプログラミングインターフェース(API)を実行することを備える、請求項12に記載の方法。
  14. グラフィックスデータを処理するためのグラフィックスデバイスであって、
    1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連するメトリックを記憶するメモリバッファと、
    前記メトリックのうちの少なくとも2つを評価することと、前記評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、前記選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することとを行う1つまたは複数のプロセッサと
    を備え、前記プロセッサが、前記メトリックのうちの少なくとも2つを、前記少なくとも2つのメトリックに重み付け方式を適用することによって評価する、グラフィックスデバイス。
  15. 前記1つまたは複数のプロセッサが、中央処理ユニット(CPU)および前記GPUのうちの1つまたは複数を備える、請求項14に記載のグラフィックスデバイス。
  16. 前記レンダリングユニットの各々が、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、またはフレームに関連する単一のレンダターゲットの一部分のうちの1つを備える、請求項14に記載のグラフィックスデバイス。
  17. 前記プロセッサが、前のレンダリングユニットおよび現在レンダリングユニットのうちの少なくとも1つのグラフィックスデータをレンダリングすることに関連するメトリックを収集する、請求項14に記載のグラフィックスデバイス。
  18. 前記メトリックが、頂点の数、フラグメントの数、フラグメントのロケーション、GPU帯域幅の量、GPUに対する負荷量、中央処理ユニット(CPU)に対する負荷量、フレームのために定義されたレンダターゲットの数、フレームのために定義された複数のレンダターゲット(MRT)の数、深度テスト有効化、ブレンディング有効化、ステンシルテスト有効化、レンダターゲットの次元、GPU上で実行されるアプリケーションのタイプ、グラフィックスアプリケーションプログラムインターフェース(API)呼の数、およびGPUハードウェアパフォーマンスカウンタ情報のうちの2つ以上を備える、請求項14に記載のグラフィックスデバイス。
  19. 前記プロセッサが、前のレンダリングユニットと前記現在レンダリングユニットとの間の前記グラフィックスデータ中のレンダリング境界において前記現在レンダリングユニットのための前記レンダリングモードを自動的に選択する、請求項14に記載のグラフィックスデバイス。
  20. 前記プロセッサが、
    レンダリングのために前記GPUに前記現在レンダリングユニットの前記グラフィックスデータを与え、
    前記グラフィックスデータ中のレンダリング境界に達すると、前記現在レンダリングユニットから後続のレンダリングユニットに切り替える、請求項14に記載のグラフィックスデバイス。
  21. 前記プロセッサが、少なくともGPU帯域幅の量とレンダターゲットの数とを評価する、請求項14に記載のグラフィックスデバイス。
  22. 前記プロセッサは、前記直接レンダリングモードおよび前記据置きレンダリングモードのうちのどちらの1つが、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することになるかを予測するために、前記メトリックのうちの少なくとも2つを評価する、請求項14に記載のグラフィックスデバイス。
  23. 前記プロセッサが、前記評価されたメトリックに基づいて、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することを予測された前記直接レンダリングモードおよび前記据置きレンダリングモードのうちの前記1つを自動的に選択する、請求項14に記載のグラフィックスデバイス。
  24. 前記GPUがレンダリングエンジンを含み、前記レンダリングモードとして前記直接レンダリングモードが選択されたとき、前記プロセッサは、前記現在レンダリングユニットのグラフィックスデータをフレームバッファに直接レンダリングするように前記GPUの前記レンダリングエンジンを構成する、請求項14に記載のグラフィックスデバイス。
  25. 前記GPUがレンダリングエンジンを含み、前記レンダリングモードとして前記据置きレンダリングモードが選択されたとき、前記プロセッサは、前記現在レンダリングユニットを複数のタイルに分割するタイリングパスを実行することと、前記複数のタイルの各々のグラフィックスデータをタイルバッファにレンダリングすることと、前記レンダリングされたタイルのための各々を前記タイルバッファからフレームバッファに読み込むこととを行うように前記GPUの前記レンダリングエンジンを構成する、請求項14に記載のグラフィックスデバイス。
  26. 前記プロセッサが、前記自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信することと、前記手動で選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするように前記GPUを構成することとを行う、請求項14に記載のグラフィックスデバイス。
  27. 前記プロセッサが、ユーザから前記手動で選択されたレンダリングモードを受信するためにグラフィックスアプリケーションプログラミングインターフェース(API)を実行する、請求項26に記載のグラフィックスデバイス。
  28. グラフィックスデータを処理するためのグラフィックスデバイスであって、
    1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価するための手段と、
    前記評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択するための手段と、
    前記選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成するための手段と
    を備え、前記メトリックのうちの少なくとも2つを評価するための前記手段が、前記少なくとも2つのメトリックに重み付け方式を適用するための手段を備える、グラフィックスデバイス。
  29. 前記レンダリングユニットの各々が、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、またはフレームに関連する単一のレンダターゲットの一部分のうちの1つを備える、請求項28に記載のグラフィックスデバイス。
  30. 前のレンダリングユニットおよび現在レンダリングユニットのうちの少なくとも1つのグラフィックスデータをレンダリングすることに関連するメトリックを収集するための手段をさらに備える、請求項28に記載のグラフィックスデバイス。
  31. 前記メトリックが、頂点の数、フラグメントの数、フラグメントのロケーション、GPU帯域幅の量、GPUに対する負荷量、中央処理ユニット(CPU)に対する負荷量、フレームのために定義されたレンダターゲットの数、フレームのために定義された複数のレンダターゲット(MRT)の数、深度テスト有効化、ブレンディング有効化、ステンシルテスト有効化、レンダターゲットの次元、GPU上で実行されるアプリケーションのタイプ、グラフィックスアプリケーションプログラムインターフェース(API)呼の数、およびGPUハードウェアパフォーマンスカウンタ情報のうちの2つ以上を備える、請求項28に記載のグラフィックスデバイス。
  32. のレンダリングユニットと前記現在レンダリングユニットとの間の前記グラフィックスデータ中のレンダリング境界において前記現在レンダリングユニットのための前記レンダリングモードを自動的に選択するための手段をさらに備える、請求項28に記載のグラフィックスデバイス。
  33. 前記メトリックのうちの少なくとも2つを評価するための前記手段は、前記直接レンダリングモードおよび前記据置きレンダリングモードのうちのどちらの1つが、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することになるかを予測するための手段を備える、請求項28に記載のグラフィックスデバイス。
  34. 前記評価されたメトリックに基づいて、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することを予測された前記直接レンダリングモードおよび前記据置きレンダリングモードのうちの前記1つを自動的に選択するための手段をさらに備える、請求項28に記載のグラフィックスデバイス。
  35. 前記自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信するための手段と、
    前記手動で選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするように前記GPUを構成するための手段とをさらに備える、請求項28に記載のグラフィックスデバイス。
  36. 実行されたとき、1つまたは複数のプログラマブルプロセッサに、
    1つまたは複数のレンダリングユニットのグラフィックスデータをレンダリングすることに関連する少なくとも2つのメトリックを評価することと、
    前記評価されたメトリックに基づいて直接レンダリングモードおよび据置きレンダリングモードのうちの1つとして現在レンダリングユニットのためのレンダリングモードを自動的に選択することと、
    前記選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするようにグラフィックス処理ユニット(GPU)を構成することと
    を行わせる、グラフィックスデータを処理するための命令を備え、前記命令が、前記プログラマブルプロセッサに、前記メトリックのうちの少なくとも2つを、前記少なくとも2つのメトリックに重み付け方式を適用することによって評価することを行わせるコンピュータ可読媒体。
  37. 前記レンダリングユニットの各々が、フレームのセット、フレーム、フレームの一部分、フレームに関連する複数のレンダターゲット、フレームに関連する単一のレンダターゲット、またはフレームに関連する単一のレンダターゲットの一部分のうちの1つを備える、請求項36に記載のコンピュータ可読媒体。
  38. 前記プログラマブルプロセッサに、前のレンダリングユニットおよび現在レンダリングユニットのうちの少なくとも1つのグラフィックスデータをレンダリングすることに関連するメトリックを収集することを行わせる命令をさらに備える、請求項36に記載のコンピュータ可読媒体。
  39. 前記命令が、前記プログラマブルプロセッサに、頂点の数、フラグメントの数、フラグメントのロケーション、GPU帯域幅の量、GPUに対する負荷量、中央処理ユニット(CPU)に対する負荷量、フレームのために定義されたレンダターゲットの数、フレームのために定義された複数のレンダターゲット(MRT)の数、深度テスト有効化、ブレンディング有効化、ステンシルテスト有効化、レンダターゲットの次元、GPU上で実行されるアプリケーションのタイプ、グラフィックスアプリケーションプログラムインターフェース(API)呼の数、およびGPUハードウェアパフォーマンスカウンタ情報のうちの2つ以上を評価することを行わせる、請求項36に記載のコンピュータ可読媒体。
  40. 前記命令が、前記プログラマブルプロセッサに、前のレンダリングユニットと前記現在レンダリングユニットとの間の前記グラフィックスデータ中のレンダリング境界において前記現在レンダリングユニットのための前記レンダリングモードを自動的に選択することを行わせる、請求項36に記載のコンピュータ可読媒体。
  41. 前記命令は、前記プログラマブルプロセッサに、前記直接レンダリングモードおよび前記据置きレンダリングモードのうちのどちらの1つが、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することになるかを予測するために、前記メトリックのうちの少なくとも2つを評価することを行わせる、請求項36に記載のコンピュータ可読媒体。
  42. 前記命令が、前記プログラマブルプロセッサに、前記評価されたメトリックに基づいて、前記現在レンダリングユニットの前記グラフィックスデータをレンダリングするために、より少ない電力およびより少ないシステム帯域幅のうちの少なくとも1つを使用することを予測された前記直接レンダリングモードおよび前記据置きレンダリングモードのうちの前記1つを自動的に選択することを行わせる、請求項36に記載のコンピュータ可読媒体。
  43. 前記プログラマブルプロセッサに、
    前記自動的に選択されたレンダリングモードをオーバーライドする、手動で選択されたレンダリングモードを受信することと、
    前記手動で選択されたレンダリングモードに従って前記現在レンダリングユニットのグラフィックスデータをレンダリングするように前記GPUを構成することとを行わせる命令をさらに備える、請求項36に記載のコンピュータ可読媒体。
JP2014511495A 2011-05-16 2012-05-16 グラフィックス処理ユニットにおけるレンダリングモード選択 Active JP5855743B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/108,657 2011-05-16
US13/108,657 US8982136B2 (en) 2011-05-16 2011-05-16 Rendering mode selection in graphics processing units
PCT/US2012/038175 WO2012158817A2 (en) 2011-05-16 2012-05-16 Rendering mode selection in graphics processing units

Publications (2)

Publication Number Publication Date
JP2014533382A JP2014533382A (ja) 2014-12-11
JP5855743B2 true JP5855743B2 (ja) 2016-02-09

Family

ID=46149012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014511495A Active JP5855743B2 (ja) 2011-05-16 2012-05-16 グラフィックス処理ユニットにおけるレンダリングモード選択

Country Status (6)

Country Link
US (1) US8982136B2 (ja)
EP (1) EP2710559B1 (ja)
JP (1) JP5855743B2 (ja)
KR (1) KR101650999B1 (ja)
CN (1) CN103946789B (ja)
WO (1) WO2012158817A2 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9047835B2 (en) * 2011-08-17 2015-06-02 Broadcom Corporation Thermal and power aware graphics processing
US9196013B2 (en) * 2011-10-31 2015-11-24 Apple Inc. GPU workload prediction and management
US8830246B2 (en) * 2011-11-30 2014-09-09 Qualcomm Incorporated Switching between direct rendering and binning in graphics processing
WO2013130030A1 (en) * 2012-02-27 2013-09-06 Intel Corporation Using cost estimation to improve performance of tile rendering for image processing
US9576139B2 (en) * 2012-03-16 2017-02-21 Intel Corporation Techniques for a secure graphics architecture
US9087410B2 (en) * 2013-01-17 2015-07-21 Qualcomm Incorporated Rendering graphics data using visibility information
US9201487B2 (en) * 2013-03-05 2015-12-01 Intel Corporation Reducing power consumption during graphics rendering
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
US9158358B2 (en) * 2013-06-04 2015-10-13 Qualcomm Incorporated System and method for intelligent multimedia-based thermal power management in a portable computing device
JP2016520846A (ja) * 2013-06-06 2016-07-14 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 多量体の標的分子の検出に対する粒子ベースの試験において凝集を防ぐ試薬、方法及び装置
KR102116976B1 (ko) * 2013-09-04 2020-05-29 삼성전자 주식회사 렌더링 방법 및 장치
US9235871B2 (en) 2014-02-06 2016-01-12 Oxide Interactive, LLC Method and system of a command buffer between a CPU and GPU
GB2524047A (en) * 2014-03-12 2015-09-16 Samsung Electronics Co Ltd Improvements in and relating to rendering of graphics on a display device
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
US9710957B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Graphics processing enhancement by tracking object and/or primitive identifiers
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
JP6392370B2 (ja) 2014-04-05 2018-09-19 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー 様々なレンダリング及びラスタライゼーション・パラメータ下でビューポートを変化させるための、オブジェクトの効率的再レンダリング方法
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9928565B2 (en) * 2014-04-21 2018-03-27 Qualcomm Incorporated Flex rendering based on a render target in graphics processing
GB2525666B (en) * 2014-05-02 2020-12-23 Advanced Risc Mach Ltd Graphics processing systems
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
EP2975573A1 (en) * 2014-07-17 2016-01-20 Continental Automotive GmbH Display system and method
KR102315280B1 (ko) 2014-09-01 2021-10-20 삼성전자 주식회사 렌더링 장치 및 방법
CN105808342B (zh) * 2014-12-30 2019-12-13 中国电信股份有限公司 用于分配客户请求的方法、判断装置和系统
US9659407B2 (en) 2015-01-26 2017-05-23 MediaTek Singapore, Pte. Lte. Preemptive flushing of spatial selective bins for deferred graphics processing
CN106326186B (zh) * 2015-06-29 2019-04-30 深圳市中兴微电子技术有限公司 一种片上系统、图形绘制方法、中间层及嵌入式设备
CN106326047B (zh) * 2015-07-02 2022-04-05 超威半导体(上海)有限公司 一种用于预测gpu性能的方法和相应的计算机系统
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
KR102646906B1 (ko) 2016-11-17 2024-03-12 삼성전자주식회사 타일 기반 렌더링 방법 및 장치
KR102637736B1 (ko) 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
US11080810B2 (en) * 2017-04-21 2021-08-03 Intel Corporation Dynamically reconfigurable memory subsystem for graphics processors
US10726605B2 (en) * 2017-09-15 2020-07-28 Intel Corporation Method and apparatus for efficient processing of derived uniform values in a graphics processor
JP2019082819A (ja) * 2017-10-30 2019-05-30 株式会社日立製作所 アクセラレータ部の利用に対する課金を支援するシステム及び方法
US10580151B2 (en) * 2017-12-05 2020-03-03 Qualcomm Incorporated Tile-based low-resolution depth storage
CN109242756B (zh) * 2018-09-07 2023-04-04 格兰菲智能科技有限公司 计算机系统、图形处理单元及其图形处理方法
CN109325899B (zh) 2018-09-07 2023-04-04 格兰菲智能科技有限公司 计算机系统、图形处理单元及其图形处理方法
CN109413480B (zh) * 2018-09-30 2021-10-08 Oppo广东移动通信有限公司 画面处理方法、装置、终端及存储介质
CN110152291A (zh) * 2018-12-13 2019-08-23 腾讯科技(深圳)有限公司 游戏画面的渲染方法、装置、终端及存储介质
CN110001660B (zh) * 2018-12-17 2021-06-01 蔚来(安徽)控股有限公司 一种分布式多核异构系统
KR102611722B1 (ko) 2019-01-07 2023-12-07 삼성전자주식회사 이미지 처리 장치 및 이미지 처리 방법
CN109933430B (zh) * 2019-03-08 2022-02-25 北京百度网讯科技有限公司 分配图形处理器的方法和装置
US11145105B2 (en) * 2019-03-15 2021-10-12 Intel Corporation Multi-tile graphics processor rendering
US11100698B2 (en) 2019-06-28 2021-08-24 Ati Technologies Ulc Real-time GPU rendering with performance guaranteed power management
CN112925592A (zh) 2019-12-05 2021-06-08 超威半导体公司 渲染主页面的内核软件驱动的颜色重新映射
US11257179B2 (en) 2020-03-13 2022-02-22 Apple Inc. Graphics processing techniques based on frame portion cost estimates
US20220044350A1 (en) * 2020-08-07 2022-02-10 Advanced Micro Devices, Inc. Graphics processing unit with selective two-level binning
CN113457160B (zh) * 2021-07-15 2024-02-09 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
WO2023113167A1 (ko) * 2021-12-16 2023-06-22 삼성전자주식회사 전자 장치 및 이의 동작 방법
KR102537317B1 (ko) * 2022-08-19 2023-05-26 세종대학교산학협력단 렌더링 성능을 올리기 위한 멀티레벨 선택적 렌더링 방법 및 장치
US20240149159A1 (en) * 2022-11-09 2024-05-09 Sony Interactive Entertainment Inc. Capturing computer game output mid-render for 2d to 3d conversion, accessibility, and other effects
CN116894906A (zh) * 2023-09-11 2023-10-17 瀚博半导体(上海)有限公司 图形渲染方法和处理器硬件架构

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2312818B (en) 1994-12-22 1999-11-03 Apple Computer Three-dimensional graphics rendering system
GB2334869B (en) 1994-12-22 1999-11-03 Apple Computer Three-dimensional graphics rendering system
US6466217B1 (en) 1999-12-22 2002-10-15 Intel Corporation Method and apparatus for ensuring backward compatibility in a bucket rendering system
US6727904B2 (en) 2002-03-01 2004-04-27 Hewlett-Packard Development Company, L.P. System and method for rendering graphical data
US6885376B2 (en) 2002-12-30 2005-04-26 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US20080074428A1 (en) 2003-11-19 2008-03-27 Reuven Bakalash Method of rendering pixel-composited images for a graphics-based application running on a computing system embodying a multi-mode parallel graphics rendering system
US7961194B2 (en) * 2003-11-19 2011-06-14 Lucid Information Technology, Ltd. Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system
US20080012856A1 (en) * 2006-07-14 2008-01-17 Daphne Yu Perception-based quality metrics for volume rendering
US8786628B2 (en) * 2007-09-14 2014-07-22 Microsoft Corporation Rendering electronic chart objects
US8031194B2 (en) * 2007-11-09 2011-10-04 Vivante Corporation Intelligent configurable graphics bandwidth modulator

Also Published As

Publication number Publication date
WO2012158817A3 (en) 2014-10-16
CN103946789B (zh) 2017-10-03
KR20140023386A (ko) 2014-02-26
WO2012158817A2 (en) 2012-11-22
JP2014533382A (ja) 2014-12-11
EP2710559B1 (en) 2019-12-11
CN103946789A (zh) 2014-07-23
EP2710559A2 (en) 2014-03-26
US20120293519A1 (en) 2012-11-22
KR101650999B1 (ko) 2016-08-24
US8982136B2 (en) 2015-03-17

Similar Documents

Publication Publication Date Title
JP5855743B2 (ja) グラフィックス処理ユニットにおけるレンダリングモード選択
JP6073533B1 (ja) タイルベースのアーキテクチャ上での最適化されたマルチパスレンダリング
KR102475212B1 (ko) 타일식 아키텍처들에서의 포비티드 렌더링
US10164459B2 (en) Selective rasterization
JP5684089B2 (ja) デプスエンジンの動的な再配置を用いたグラフィックシステム
JP4938850B2 (ja) 拡張型頂点キャッシュを備えたグラフィック処理装置
JP6595101B2 (ja) 後期深度試験と保守的深度試験との間の動的切替え
US9342322B2 (en) System and method for layering using tile-based renderers
US20130021358A1 (en) Area-based rasterization techniques for a graphics processing system
JP2017517056A (ja) 高解像度表示バッファの効果的な構築方法
JP2016509718A (ja) ビジビリティ情報を用いたグラフィックスデータのレンダリング
JP2018512644A (ja) 低品質タイルを使用してメモリ帯域幅を減らすためのシステムおよび方法
CN111080505B (zh) 一种提高图元装配效率的方法、装置及计算机存储介质
JP2018529168A (ja) 帯域幅圧縮グラフィックスデータの記憶
CN116391205A (zh) 用于图形处理单元混合渲染的装置和方法
KR20220016776A (ko) 메모리 시스템 효율적인 방식의 포스트-프로세싱
KR102645239B1 (ko) Gpu 캐시를 활용한 다운스케일링을 위한 simo 접근 방식으로의 gpu 커널 최적화

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150819

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151209

R150 Certificate of patent or registration of utility model

Ref document number: 5855743

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

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