JP2017509092A - 共有されるデータチャネルを用いるシェーダパイプライン - Google Patents

共有されるデータチャネルを用いるシェーダパイプライン Download PDF

Info

Publication number
JP2017509092A
JP2017509092A JP2016569551A JP2016569551A JP2017509092A JP 2017509092 A JP2017509092 A JP 2017509092A JP 2016569551 A JP2016569551 A JP 2016569551A JP 2016569551 A JP2016569551 A JP 2016569551A JP 2017509092 A JP2017509092 A JP 2017509092A
Authority
JP
Japan
Prior art keywords
data channel
shared data
stages
graphics processing
shared
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.)
Granted
Application number
JP2016569551A
Other languages
English (en)
Other versions
JP2017509092A5 (ja
JP6271768B2 (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 JP2017509092A publication Critical patent/JP2017509092A/ja
Publication of JP2017509092A5 publication Critical patent/JP2017509092A5/ja
Application granted granted Critical
Publication of JP6271768B2 publication Critical patent/JP6271768B2/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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading

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)

Abstract

グラフィックス処理ユニット(GPU)は、グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるGPUのオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当て得る。GPUの中のシェーダユニットは、グラフィックス処理パイプラインの少なくとも2つのステージを実行し得る。GPUは、オンチップグラフィックスメモリの中の共有されるデータチャネルの中に、シェーダユニット上で実行しているグラフィックス処理パイプラインの少なくとも2つのステージの各々によって作り出されるデータを記憶し得る。

Description

[0001] この開示は、グラフィックス処理パイプライン(graphics processing pipeline)のステージ(stages)によって作り出され、消費されるデータを記憶するための共有されるデータチャネル(shared data channels)に関する。
[0002] コンピューティングデバイスのグラフィックス処理ユニット(GPU)は、3次元シーンの2次元表現(two-dimensional representation of a three-dimensional scene)をレンダリングするためのグラフィックスコマンドを処理するための複数のステージを含むグラフィックス処理パイプラインを実行することができる。3次元シーンは、複数の頂点で典型的に構成され、グラフィックス処理パイプラインは、3次元シーンの中の各頂点のために、3次元シーンの2次元表現をレンダリングするための固定の順序で実行される一連のステージを含む。
[0003] グラフィックス処理パイプラインは、3次元シーンの頂点を変換する(transform)ために実行するシェーダステージのチェーン(chain of shader stages)を含み得る。シェーダステージの各々は、前のステージによって作り出されたデータを消費し、次のステージのためにデータを作り出す。シェーダステージのチェーンを通して流れる膨大なデータ量のため、どのようにしてシェーダステージのチェーンのためのデータが管理されるかは、GPUのパフォーマンスおよびメモリの効率性に影響することができる。
[0004] 本開示の一例では、グラフィックス処理のための方法は、グラフィックス処理ユニット(GPU)が、グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるGPUのオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てること(allocating)を含み得る。方法は、GPUの中のシェーダユニット上で、グラフィックス処理パイプラインの少なくとも2つのステージを実行することをさらに含み得る。方法は、オンチップグラフィックスメモリの中の共有されるデータチャネルの中にGPUが、シェーダユニット上で実行しているグラフィックス処理パイプラインの少なくとも2つのステージの各々によって作り出されるデータを記憶することをさらに含み得る。
[0005] 本開示の別の例では、グラフィックス処理のための装置は、グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるグラフィックス処理ユニット(GPU)のオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てることと、GPUの中のシェーダユニット上で、グラフィックス処理パイプラインの少なくとも2つのステージを実行することと、オンチップグラフィックスメモリの中の共有されるデータチャネルの中に、シェーダユニット上で実行しているグラフィックス処理パイプラインの少なくとも2つのステージの各々によって作り出されるデータを記憶することとを行うように構成されるGPUを含み得る。
[0006] 本開示の別の例では、グラフィックス処理のためのグラフィックスのための装置は、グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるグラフィックス処理ユニット(GPU)のオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てるための手段を含み得る。装置は、グラフィックス処理パイプラインの少なくとも2つのステージを実行するための手段をさらに含み得る。装置は、オンチップグラフィックスメモリの中の共有されるデータチャネルの中に、グラフィックス処理パイプラインの少なくとも2つのステージの各々の実行によって作り出されるデータを記憶するための手段をさらに含み得る。
[0007] 本開示の別の例では、コンピュータ可読記憶媒体は、命令を記憶することができ、命令は、実行されるとき、1つ以上のプログラマブルプロセッサに、共有されるデータチャネルを、グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるそれのオンチップグラフィックスメモリの中に割り当てることと、シェーダユニット上で、グラフィックス処理パイプラインの少なくとも2つのステージを実行することと、オンチップグラフィックスメモリの中の共有されるデータチャネルの中に、シェーダユニット上で実行しているグラフィックス処理パイプラインの少なくとも2つのステージの各々によって作り出されるデータを記憶することとを行わせる。
[0008] 1つ以上の例の詳細は、添付の図面および以下の説明の中で記述される。他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになるであろう。
[0009] 図1は、複数のグラフィックスパイプラインステージの間でデータチャネルを共有するための本開示の1つ以上の態様をインプリメントするように構成され得る例示的なコンピューティングデバイスを例示するブロック図である。 [0010] 図2は、3次元シーンの2次元表現を作るためにGPUによって行われ得る例示的なグラフィックス処理パイプラインを例示するブロック図である。 [0011] 図3は、さらに詳細に図1のCPU、GPU、およびシステムメモリの例示的なインプリメンテーションを例示するブロック図である。 [0012] 図4は、グラフィックス処理パイプラインの中で使用されている共有されるデータチャネルの例を例示するブロック図である。 [0013] 図5は、さらに詳細に図4のキャッシュモード共有チャネル(cache mode shared channel)を例示するブロック図である。 [0014] 図6は、グラフィックス処理パイプラインのステージによってデータチャネルを共有するための例示的なプロセスを例示する流れ図である。
[0015] 一般に、本開示は、共有されるデータチャネルを持つ生産者−消費者モデル(producer-consumer model)を使用してシングルパスシェーダパイプライン(single pass shader pipeline)に関する技法を説明する。コンピューティングデバイスの中のグラフィカル処理ユニット(GPU)は、GPU上で同時にシェーダパイプラインの複数のステージを実行し得るシェーダユニット上でシェーダパイプラインを実行することができる。GPUの中のオンチップメモリの中に記憶されるデータは典型的に、コンピューティングデバイスのシステムメモリの中に記憶されるデータより速く、より効率的にアクセスされることができるため、GPUの中のシェーダユニットの効率性は、GPUの中のオンチップメモリの中のデータチャネルからデータを消費することによって、およびGPUの中のオンチップメモリの中のデータチャネルの中に記憶もされるデータを作り出すことによって増加させることができる。
[0016] 一例では、GPUは、GPUの中のシェーダユニットによるシェーダパイプラインの実行によって消費され、作り出されるデータを記憶するために等しいサイズのデータチャネルを割り当て得る。しかしながら、GPUの中のオンチップメモリが典型的に、コンピューティングデバイスのシステムメモリより非常に少ない記憶スペースを含むため、GPUの中のオンチップメモリは、GPUの中のシェーダユニットによって消費され、作り出されるデータのすべてのために別個のデータチャネルを割り当てるのに十分な記憶スペースを有しないことがある。さらに、シェーダパイプラインのステージが、シェーダパイプラインのいくつかのステージがシェーダパイプラインの他のステージより多くのデータを作り出す傾向があるような、アンバランスであり得るため、シェーダパイプラインの各ステージによって作り出されるデータのためにオンチップメモリの中に等しいスペースを割り当てることは、オンチップメモリの中の記憶スペースを浪費し得る。加えて、オンチップメモリは、シェーダパイプラインのステージによって作り出されるデータの少なくともいくつかがより遅いシステムメモリの中に記憶される必要があり得るような、シェーダパイプラインの各ステージによって作り出されるデータのために等しいスペースを割り当てるために十分な記憶スペースを有しないことがあり、それによってGPUのパフォーマンスを低減させる。
[0017] 本開示の態様にしたがって、GPUは、シェーダパイプラインの2つ以上のステージが単一の共有されるデータチャネルを共有することができるような、共有されるデータチャネルを共有しているシェーダパイプラインの第1のステージからのデータを記憶するために使用されていない共有されるデータチャネルの中のスペースがデータチャネルを共有しているシェーダパイプラインの第2のステージからデータを記憶するために使用され得るような、GPUの中のオンチップメモリの中の共有されるデータチャネルを割り当て得る。このようにして、GPUの中のオンチップメモリは、より効率的な方法で利用され得る。さらに、他のアプローチに比べて、シェーダパイプラインによって作り出されるより多くのデータを潜在的に(potentially)記憶するために、より効率的な方法でGPUの中のオンチップメモリを利用することによって、GPUの中のオンチップメモリは、シェーダパイプラインのステージを実行しているシェーダユニットによって消費される準備ができているより多くのデータを記憶することができ、それによってシェーダユニットの利用を増大させ、GPUのパフォーマンスを増大させる。
[0018] 図1は、複数のグラフィックスパイプラインステージの間でデータチャネルを共有するための本開示の1つ以上の態様をインプリメントするように構成され得る例示的なコンピューティングデバイスを例示するブロック図である。図1に示されるように、デバイス2は、ビデオデバイス、メディアプレーヤ、セットトップボックス、モバイル電話およびいわゆるスマートフォンのようなワイヤレスハンドセット、携帯情報端末(PDAs)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーミングコンソール、ビデオ会議ユニット、タブレットコンピューティングデバイス等に限られないが、それらを含むコンピューティングデバイスであり得る。図1の例では、デバイス2は、中央処理ユニット(CPU)6、システムメモリ10、およびGPU12を含み得る。デバイス2はまた、ディスプレイプロセッサ14、トランシーバモジュール3、ユーザインタフェース4、およびディスプレイ8を含み得る。トランシーバモジュール3およびディスプレイプロセッサ14は両方ともに、CPU6および/またはGPU12と同じ集積回路(IC)の一部であることができ、両方ともにCPU6および/またはGPU12を含む単一のICまたは複数のICsの外部に存在することができ、またはCPU6および/またはGPU12を含むICの外部に存在するICの中に形成され得る。
[0019] デバイス2は、明確さの目的で図1に示されていない追加のモジュールまたはユニットを含み得る。例えば、デバイス2は、どちらも図1に示されていない、スピーカおよびマイクロホンを、デバイス2がモバイルワイヤレス電話である例において、またはデバイス2がメディアプレーヤであるスピーカにおいて電話通信を達成するために含み得る。デバイス2はまた、ビデオカメラを含み得る。さらに、デバイス2に示される様々なモジュールおよびユニットは、デバイス2のすべての例において必要とは限らないことがある。例えば、ユーザインタフェース4およびディスプレイ8は、デバイス2がデスクトップコンピュータ、あるいは外部のユーザインタフェースまたはディスプレイとインタフェースをとるために装備される他のデバイスである例におけるデバイス2の外部に存在し得る。
[0020] ユーザインタフェース4の例は、トラックボール、マウス、キーボード、および他のタイプの入力デバイスに限定されないが、それらを含む。ユーザインタフェース4はまた、タッチスクリーンであることもでき、ディスプレイ8の一部として組み込まれ得る。トランシーバモジュール3は、コンピューティングデバイス2と別のデバイスまたはネットワーク間でワイヤレスまたはワイヤード通信を可能にするための回路を含み得る。トランシーバモジュール3は、変調器、復調器、増幅器、およびワイヤードまたはワイヤレス通信のための他のそのような回路を含み得る。
[0021] CPU6は、実行のためのコンピュータプログラムの命令を処理するように構成される中央処理ユニット(CPU)のような、マイクロプロセッサであり得る。CPU6は、コンピューティングデバイス2のオペレーションを制御する汎用、または専用プロセッサを備え得る。ユーザは、CPU6に1つ以上のソフトウェアアプリケーションを実行させるために入力をコンピューティングデバイス2に提供し得る。CPU6上で実行するソフトウェアアプリケーションは、例えば、オペレーティングシステム、ワードプロセッサアプリケーション、電子メールアプリケーション、スプレッドシートアプリケーション、メディアプレーヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインタフェースアプリケーションまたは別のプログラムを含み得る。加えて、CPU6は、GPU12のオペレーションを制御するためにGPUドライバ22を実行し得る。ユーザは、キーボード、マウス、マイクロホン、タッチパッドまたはユーザインタフェース4を介してコンピューティングデバイス2に結合される別の入力デバイスのような1つ以上の入力デバイス(示されていない)を介して入力をコンピューティングデバイス2に提供し得る。
[0022] CPU6上で実行するソフトウェアアプリケーションは、ディスプレイ8へのグラフィックスデータのレンダリングをもたらすためにCPU6に命令する1つ以上のグラフィックスレンダリング命令を含み得る。いくつかの例では、ソフトウェア命令は、例えば、オープングラフィックスライブラリ(OpenGL(登録商標))アプリケーションプログラミングインタフェース(API)、オープングラフィックスライブラリ埋め込みシステム(Open Graphics Library Embedded Systems)(OpenGL ES)API、Direct3D API、X3D API、RenderMan API、WebGL API、または任意の他の公的または独自の基準グラフィックスAPI(public or proprietary standard graphics API)のようなグラフィックスAPIにしたがい得る。グラフィックスレンダリング命令を処理するために、CPU6は、GPU12にグラフィックスデータのレンダリングのいくつか、またはすべてを行わせるために、(例えば、GPUドライバ22を通して)1つ以上のグラフィックスレンダリングコマンドをGPU12に発行し(issue)得る。いくつかの例では、レンダリングされるためのグラフィックスデータは、例えば、点、線、三角形、四角形、トライアングルストリップ(triangle strips)などのグラフィックスプリミティブ(graphics primitives)のリストを含み得る。
[0023] GPU12は、ディスプレイ8への1つ以上のグラフィックスプリミティブをレンダリングするためにグラフィックスオペレーションを行うように構成され得る。したがって、CPU6上で実行しているソフトウェアアプリケーションのうちの1つがグラフィックス処理を要求するとき、CPU6は、ディスプレイ8へのレンダリングのためにグラフィックスコマンドおよびグラフィックスデータをGPU12に提供し得る。グラフィックスデータは、例えば、描画コマンド(drawing commands)、ステート情報、プリミティブ情報、テクスチャ情報等を含み得る。GPU12は、いくつかの例では、複雑なグラフィック関連オペレーションのCPU6より効率的な処理を提供する高度に並列な構造(highly-parallel structure)で構築され得る。例えば、GPU12は、シェーダユニットのような、複数の処理要素を含むことができ、それらは、並行して(in a parallel manner)複数の頂点またはピクセル上で動作するように構成される。GPU12の高度に並列な性質は、いくつかの例では、GPU12が、CPU6を使用してディスプレイ8に直接シーンを描写するより速くディスプレイ8上にグラフィックスイメージ(例えば、GUIsおよび2次元(2D)および/または3次元(3D)のグラフィックスシーン)を描写することを可能し得る。
[0024] GPU12は、いくつかの例では、コンピューティングデバイス2のマザーボードに組み込まれ得る。他の例では、GPU12は、コンピューティングデバイス2のマザーボードの中の一部にインストールされるグラフィックスカード上に存在し得る、または、そうでなければコンピューティングデバイス2と相互運用するように構成される周辺デバイス内に組み込まれ得る。GPU12は、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASICs)、フィールドプログラマブルゲートアレイ(FPGAs)、デジタルシグナルプロセッサ(DSPs)、または他の同等の集積回路またはディスクリート論理回路のような、1つ以上のプロセッサを含み得る。GPU12はまた、GPU12がマルチコアプロセッサと称され得るように、1つ以上のプロセッサコアを含み得る。
[0025] GPU12は、グラフィックスメモリ40に直接結合され得る。したがって、GPU12は、バスを使用することなしにグラフィックスメモリ40からデータを読み取り、グラフィックスメモリ40にデータを書き込み得る。言い換えれば、GPU12は、オフチップメモリの代わりに、ローカル記憶装置をローカルに使用してデータを処理し得る。そのようなグラフィックスメモリ40は、オンチップメモリと称され得る。このことは、バスを介してデータを読み取り、データを書き込むためのGPU12の必要性を取り除くことによって、GPU12がより効率的な方法で動作することを可能にし、それは、重いバストラヒックを経験し得る。しかしながら、いくつかの例では、GPU12は、別個のメモリを含み得ないが、バスを介してシステムメモリ10を代わりに利用し得る。グラフィックスメモリ40は、例えば、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM(登録商標))、フラッシュメモリ、磁気データ媒体または光記憶媒体のような、1つ以上の揮発性、または不揮発性メモリ、または記憶デバイスを含み得る。
[0026] いくつかの例では、GPU12は、システムメモリ10の中に十分に形成された画像を記憶し得る。ディスプレイプロセッサ14は、システムメモリ10から画像を取り出すことができ、ディスプレイ8のピクセルに画像をディスプレイするために明るくさせる値を出力し得る。ディスプレイ8は、GPU12によって生成される画像コンテンツをディスプレイするデバイス2のディスプレイであり得る。ディスプレイ8は、液晶ディスプレイ(LCD)、有機発光ダイオードディスプレイ(OLED)、陰極線管(CRT)ディスプレイ、プラズマディスプレイ、または別のタイプのディスプレイデバイスであり得る。
[0027] 本開示の態様にしたがって、GPU12は、そのシェーダユニット上で複数のグラフィックスパイプラインステージを実行し得る。GPU12は、シェーダユニット上で実行している複数のグラフィックスパイプラインステージの2つのステージによって共有されるグラフィックスメモリ40の中で共有されるデータチャネルを作り得る。GPU12は、共有されるデータチャネルの中のシェーダユニット上で実行している複数のグラフィックスパイプラインステージの2つのステージの各々によって作り出されるデータを記憶し得る。
[0028] 図2は、3次元シーンの2次元表現を作るためにGPU12によって行われ得る例示的なグラフィックス処理パイプライン24を例示するブロック図である。グラフィックス処理パイプライン24は、グラフィックス処理コマンドを実行するために共に動作する複数のグラフィックス処理ステージを含み得る。図2に示されるように、グラフィックス処理パイプライン24は、入力アセンブラ26、頂点シェーダステージ(vertex shader stage)28、ハルシェーダステージ(hull shader stage)30、テッセレータステージ(tessellator stage)32、ドメインシェーダステージ34、ジオメトリシェーダステージ36、およびピクセルシェーダステージ38を含み得る。グラフィックス処理パイプライン24の中のコンポーネントの各々は、固定機能コンポーネント(fixed-function components)、(例えば、プログラマブルシェーダユニット上で実行しているシェーダプログラムの一部としての)プログラマブルコンポーネントとして、または固定機能とプログラマブルコンポーネントの組み合わせとしてインプリメントされ得る。
[0029] GPU12は、GPUドライバ22を介して、CPU6から1つ以上のグラフィックス処理コマンドを受信するように、およびディスプレイ可能なグラフィックス画像(displayable graphics images)を生成するためにグラフィックス処理パイプライン24を介してグラフィックス処理コマンドを実行するように構成され得る。上記に説明されたように、グラフィックス処理パイプライン24は、グラフィックス処理コマンドを実行するために共に動作する複数のステージを含む。
[0030] グラフィックス処理パイプライン24の中の入力アセンブラ26は、グラフィックス処理パイプライン24にグラフィックスデータ(例えば、三角形、線、および点)を供給することを一般に担う固定機能ステージであり得る。例えば、入力アセンブラステージ26は、高次サーフェス(high order surfaces)、プリミティブ等のための頂点データを集めることができ、頂点データおよび属性を頂点シェーダステージ28に出力し得る。よって、入力アセンブラステージ26は、固定機能オペレーションを使用して、システムメモリ10のような、オフチップメモリから頂点を読み取り得る。入力アセンブラステージ26は次に、これらの頂点からパイプライン作業項目(pipeline work items)を作ることができ、その一方で頂点識別子(「VertexIDs」)、インスタンス識別子(頂点シェーダに利用可能である(made available to)「InstanceIDs」)、およびプリミティブ識別子(ジオメトリシェーダおよびピクセルシェーダに利用可能である「PrimitiveIDs」)も生成する。入力アセンブラステージ26は、頂点を読み取ると、VertexIDs、InstanceIDs、およびPrimitiveIDsを自動的に生成し得る。
[0031] 頂点シェーダステージ28は、受信された頂点データおよび属性を処理し得る。例えば、頂点シェーダステージ28は、変換(transformations)、スキニング(skinning)、頂点変位(vertex displacement)、および頂点ごとの物質属性(per-vertex material attributes)を計算することのような頂点ごとの処理を行い得る。いくつかの例では、頂点シェーダステージ28は、テクスチャ座標、頂点カラー(vertex color)、頂点ライティング(vertex lighting)、フォグファクタ(fog factors)等を生成し得る。頂点シェーダステージ28は一般に、単一の入力頂点を取り、単一の、処理された出力頂点を出力する。
[0032] ハルシェーダステージ30、テッセレータ32、およびドメインシェーダステージ34は、テッセレーションステージと集合的に称され得る。テッセレーションステージは、低詳細サブディビジョンサーフェス(low-detail subdivision surfaces)を高詳細プリミティブ(higher-detail primitives)に変換し(convert)、レンダリングのために高次サーフェスを適したサーフェス(例えば、三角形)にタイル表示する(tiles)。ハルシェーダステージ30は、頂点シェーダステージ28からプリミティブを受信し、少なくとも2つのアクションを実行することを担う。まず、ハルシェーダステージ30は、テッセレーションファクタのセットを決定することを典型的に担う。ハルシェーダステージ30は、プリミティブごとに1回テッセレーションファクタを生成し得る。テッセレーションファクタは、所与のプリミティブをどのくらい細かく(how finely)テッセレートする(tessellate)(例えば、プリミティブをより小さいパーツに分割する)かを決定するためにテッセレータステージ32によって使用され得る。ハルシェーダステージ30はまた、ドメインシェーダステージ34によって後で使用されることとなる制御点(control points)を生成することも担う。すなわち、例えば、ハルシェーダステージ30は、実際にテッセレートされた頂点(actual tessellated vertices)を作るためにドメインシェーダステージ34によって使用されることとなる制御点を生成することを担い、それは、レンダリングで最終的に使用される。
[0033] テッセレータステージ32がハルシェーダステージ30からデータを受信するとき、テッセレータステージ32は、現在のプリミティブタイプのための適切なサンプリングパターンを決定するためにいくつかのアルゴリズムのうちの1つを使用する。例えば、一般に、テッセレータステージ32は、(ハルシェーダステージ30によって決定されるような)テッセレーションの要求された量を現在の「ドメイン」内の座標点のグループに変換する。すなわち、ハルシェーダステージ30からのテッセレーションファクタ、ならびにテッセレータステージ32の特定の構成に依存して、テッセレータステージ32は、現在のプリミティブの中のどの点が入力プリミティブをより小さいパーツにテッセレートするためにサンプリングされる必要があるかを決定する。テッセレータステージ32の出力は、ドメイン点のセットであることができ、それは、重心座標(barycentric coordinates)を含み得る。
[0034] ドメインシェーダステージ34は、ハルシェーダステージ30によって作り出される制御点に加えて、ドメイン点を取り、新たな頂点を作るためにドメイン点を使用する。ドメインシェーダステージ34は、各テッセレートされた点に関する重心「ロケーション(location)」をパイプラインの中の次のステージにパスされる出力ジオメトリに変換するための現在のプリミティブ、テクスチャ、手続型のアルゴリズム(procedural algorithms)、またはその他のもののために生成される制御点の完全なリスト(complete list)を使用することができる。
[0035] ジオメトリシェーダステージ36は、その頂点データ(例えば、三角形のための3つの頂点、線のための2つの頂点、または点のための単一の頂点)によって定義されるプリミティブを受信することができ、プリミティブをさらに処理し得る。例えば、ジオメトリシェーダステージ36は、他の可能性がある処理オペレーションの間で、シルエットエッジ検出(silhouette-edge detection)およびシャドウボリューム押出し(shadow volume extrusion)のようなプリミティブごとの処理を行い得る。よって、ジオメトリシェーダステージ36は、(1つ以上の頂点を含み得る)入力および出力0、1、または(この場合も先と同様に(again)1つ以上の頂点を含み得る)複数のプリミティブとして1つのプリミティブを受信し得る。出力プリミティブは、ジオメトリシェーダステージ36なしで可能であり得るより多くのデータを包含し得る。出力データの総量は、頂点カウントを乗じた(multipled by the vertex count)頂点サイズと同等であることができ、起動(invocation)ごとに制限され得る。ジオメトリシェーダステージ36からのストリーム出力は、このステージに達するプリミティブが、システムメモリ10のようなオフチップメモリに記憶されることを可能にし得る。ストリーム出力は、ジオメトリシェーダステージ36に典型的に関係しており(tied)、両方は、(例えば、APIを使用して)共にプログラムされ得る。
[0036] ラスタライザステージ(rasterizer stage)37は典型的に、ピクセルシェーダステージ38のために、プリミティブをクリッピングすること、およびプリミティブを準備することを担う固定機能ステージである。例えば、ラスタライザステージ37は、(カスタムクリップ境界(custom clip boundaries)を含む)クリッピング、パースペクティブデバイド(perspective divide)、ビューポート/切り取り選択(viewport/scissor selection)、およびインプリメンテーションを行うことができ、ターゲット選択およびプリミティブセットアップをレンダリングし得る。このようにして、ラスタライザステージ37は、ピクセルシェーダステージ38によってシェーディングするためのいくつかのフラグメント(fragments)を生成し得る。
[0037] ピクセルシェーダステージ38は、ラスタライザステージ37からフラグメントを受信し、カラーのような、ピクセルごとのデータを生成する。ピクセルシェーダステージ38はまた、テクスチャブレンディング(texture blending)およびライティングモデル計算(lighting model computation)のようなピクセルごとの処理も行い得る。よって、ピクセルシェーダステージ38は、入力として1つのピクセルを受信することができ、同じ相対位置(relative position)(またはピクセルのためのゼロ値)で1つのピクセルを出力し得る。
[0038] 本開示の態様にしたがって、グラフィックス処理パイプライン24の2つ以上のステージは、グラフィックスメモリ40の中で共有されるデータチャネルを共有し得る。例えば、頂点シェーダステージ28およびドメインシェーダステージ34によって作り出される頂点は、共有されるデータチャネルの中に記憶され得る。さらに、ハルシェーダステージ30およびジオメトリシェーダステージ36によって作り出されるプリミティブは、別の共有されるデータチャネルの中に記憶され得る。このようにして、GPU12は、グラフィックスメモリ40をより効率的に利用し得る。
[0039] 図3は、さらに詳細に図1のCPU6、GPU12、およびシステムメモリ10の例示的なインプリメンテーションを例示するブロック図である。図3に示されるように、CPU6は、少なくとも1つのソフトウェアアプリケーション18、グラフィックスAPI20、およびGPUドライバ22を含むことができ、それらの各々は、CPU6上で実行する1つ以上のソフトウェアアプリケーションまたはサービスであり得る。
[0040] CPU6およびGPU12に利用可能であるメモリは、システムメモリ10およびフレームバッファ16を含み得る。フレームバッファ16は、システムメモリ10の一部であることができ、またはシステムメモリ10から分離され得る。フレームバッファ16は、レンダリングされた画像データを記憶し得る。
[0041] ソフトウェアアプリケーション18は、GPU12の機能を利用する任意のアプリケーションであり得る。例えば、ソフトウェアアプリケーション18は、GUIアプリケーション、オペレーティングシステム、ポータブルマッピングアプリケーション(portable mapping application)、エンジニアリングまたは芸術的なアプリケーション(artistic applications)のためのコンピュータ支援設計プログラム(computer-aided design program)、ビデオゲームアプリケーション、あるいは2Dまたは3Dグラフィックスを使用する別のタイプのソフトウェアアプリケーションであり得る。
[0042] ソフトウェアアプリケーション18は、グラフィカルユーザインタフェース(GUI)および/またはグラフィックスシーンをレンダリングするためにGPU12に命令する1つ以上の描画命令を含み得る。例えば、描画命令は、GPU12によってレンダリングされるための1つ以上のグラフィックスプリミティブのセットを定義する命令を含み得る。いくつかの例では、描画命令は、GUIで使用される複数のウィンドウイングサーフェス(windowing surfaces)のすべてまたは一部を集合的に定義し得る。追加の例では、描画命令は、アプリケーションによって定義されるモデルスペースまたはワールドスペース内の1つ以上のグラフィックスオブジェクトを含むグラフィックスシーンのすべてまたは一部を集合的に定義し得る。
[0043] ソフトウェアアプリケーション18は、1つ以上のグラフィックスプリミティブをディスプレイ可能なグラフィックス画像にレンダリングするためのGPU12への1つ以上のコマンドを発行するために、グラフィックスAPI20を介して、GPUドライバ22を呼び出し得る。例えば、ソフトウェアアプリケーション18は、GPU12にプリミティブ定義(primitive definitions)を提供するために、グラフィックスAPI20を介して、GPUドライバ22を呼び出し得る。いくつかの例では、プリミティブ定義は、例えば、三角形、長方形、トライアングルファン(triangle fans)、トライアングルストリップ(triangle strips)等の描画プリミティブのリストの形でGPU12に提供され得る。プリミティブ定義は、レンダリングされるためのプリミティブと関連する1つ以上の頂点を特定する頂点仕様(vertex specifications)を含み得る。頂点仕様は、各頂点に関する位置座標(positional coordinates)および、いくつかの例では、例えば、カラー座標、法線ベクトル(normal vectors)、およびテクスチャ座標のような、頂点と関連する他の属性を含み得る。プリミティブ定義はまた、プリミティブタイプの情報(例えば、三角形、長方形、トライアングルファン、トライアングルストリップ等)、スケーリング情報、回転情報等も含み得る。ソフトウェアアプリケーション18によってGPUドライバ22に発行される命令に基づいて、GPUドライバ22は、プリミティブをレンダリングするために行うためのGPU12のための1つ以上のオペレーションを特定する1つ以上のコマンドを公式化し(formulate)得る。GPU12がCPU6からコマンドを受信するとき、グラフィックス処理パイプライン24は、そのコマンドを復号し、そのコマンドにおいて特定されたオペレーションを行うようにグラフィックス処理パイプライン24を構成する。例えば、グラフィックス処理パイプライン24の中の入力アセンブラ26は、プリミティブデータを読み取ることができ、グラフィックス処理パイプライン24の中の他のグラフィックスパイプラインステージによる使用のためにデータをプリミティブにアセンブルし(assemble)得る。特定されたオペレーションを行った後、グラフィックス処理パイプライン24は、ディスプレイデバイスと関連するフレームバッファ16にレンダリングされたデータを出力する。
[0044] フレームバッファ16は、GPU12のために宛先ピクセル(destination pixels)を記憶する。各宛先ピクセルは、一意的なスクリーンピクセルロケーションと関連し得る。いくつかの例では、フレームバッファ16は、各宛先ピクセルのための宛先アルファ値(destination alpha value)およびカラーコンポーネントを記憶し得る。例えば、フレームバッファ16は、「RGB」コンポーネントがカラー値に対応し、「A」コンポーネントが宛先アルファ値に対応する各ピクセルに関する赤、緑、青、アルファ(RGBA)コンポーネントを記憶し得る。フレームバッファ16およびシステムメモリ10は、別個のメモリユニットであるように例示されているが、他の例では、フレームバッファ16は、システムメモリ10の一部であり得る。
[0045] いくつかの例では、グラフィックス処理パイプライン24の頂点シェーダステージ28、ハルシェーダステージ30、ドメインシェーダステージ34、ジオメトリシェーダステージ、およびピクセルシェーダステージ38は、シェーダステージと見なされ得る。これらのシェーダステージは、GPU12の中のシェーダユニット46上で実行する1つ以上のシェーダプログラムとしてインプリメントされ得る。シェーダユニット46は、処理コンポーネントのプログラマブルパイプラインとして構成され得る。いくつかの例では、シェーディングユニット(shading unit)46は、「シェーダプロセッサ」、または「統合シェーダ(unified shaders)」と称されることができ、グラフィックスをレンダリングするためにジオメトリ、頂点、ピクセル、または他のシェーディングオペレーションを行い得る。シェーダユニット46は、プロセッサコア48を含むことができ、それらの各々は、オペレーションをフェッチする(fetching)および復号するための1つ以上のコンポーネント、算術計算(arithmetic calculations)を実行するための1つ以上の算術論理ユニット(arithmetic logic units)、1つ以上のメモリ、キャッシュ、およびレジスタを含み得る。
[0046] GPU12は、グラフィックス処理パイプライン24の中の頂点シェーダステージ28、ハルシェーダステージ30、ドメインシェーダステージ34、ジオメトリシェーダステージ36、およびピクセルシェーダステージ38のうちの1つ以上を実行するためにコマンドをシェーダユニット46に送ることによって、頂点シェーディング、ハルシェーディング、ドメインシェーディング、ジオメトリシェーディング、ピクセルシェーディング等のような様々なシェーディングオペレーションを行うためにシェーダユニット46を指定し得る。いくつかの例では、GPUドライバ22は、1つ以上のシェーダプログラムをコンパイルするように、およびコンパイルされたシェーダプログラムをGPU12内に包含される1つ以上のプログラマブルシェーダユニットにダウンロードするように構成され得る。シェーダプログラムは、例えば、OpenGLシェーディング言語(GLSL)、ハイレベルシェーディング言語(HLSL)、グラフィックスのためのC(Cg)シェーディング言語(C for Graphics (Cg) shading language)等のような、ハイレベルシェーディング言語で書き込まれ得る。コンパイルされたシェーダプログラムは、GPU12内のシェーダユニット46のオペレーションを制御する1つ以上の命令を含み得る。例えば、シェーダプログラムは、頂点シェーダステージ28の機能を行うためにシェーダユニット46によって実行され得る頂点シェーダプログラム、ハルシェーダステージ30の機能を行うためにシェーダユニット46によって実行され得るハルシェーダプログラム、ドメインシェーダステージ34の機能を行うためにシェーダユニット46によって実行され得るドメインシェーダプログラム、ジオメトリシェーダステージ36の機能を行うためにシェーダユニット46によって実行され得るジオメトリシェーダプログラム、および/またはピクセルシェーダ38の機能を行うためにシェーダユニット46によって実行され得るピクセルシェーダプログラムを含み得る。頂点シェーダプログラムは、プログラマブル頂点シェーダユニット、または統合(unified)シェーダユニットの実行を制御することができ、1つ以上の頂点ごとのオペレーションを特定する命令を含み得る。
[0047] グラフィックスメモリ40は、GPU12の集積回路に物理的に組み込まれるオンチップ記憶装置、またはメモリである。グラフィックスメモリ40がオンチップであるため、GPU12は、システムバスを介してシステムメモリ10から値を読み取ること、またはシステムメモリ10に値を書き込むことより速くグラフィックスメモリ40から値を読み取り、またはグラフィックスメモリ40に値を書き込むことができ得る。そのようなものとして、シェーダユニット46のパフォーマンスは、グラフィックスメモリ40からグラフィックス処理パイプライン24のシェーダステージによって作り出される、および消費されるデータを読み取ること、および記憶することによって増加され得る。
[0048] 本開示の態様にしたがって、シェーダユニット46は、プロセッサコア48上で同時に複数のシェーディングオペレーションを行い得る。GPU12は、異なるプロセッサコア48上で実行されるためのグラフィックス処理パイプライン24の異なるシェーディングステージをイネーブルする(enable)コマンドをシェーディングユニット46に送ることができ、それによってグラフィックス処理パイプライン24のステージをインタリーブする。例えば、GPU12は、シェーディングユニット46に、シェーダユニット46の異なるプロセッサコア48上で同時に頂点シェーダステージ28およびジオメトリシェーダステージ36を実行させるコマンドをシェーディングユニット46に送り得る。別の例では、GPU12は、シェーディングユニット46に、複数のプロセッサ上で同時にジオメトリシェーダステージ36の複数の例を実行させるコマンドをシェーディングユニット46に送り得る。
[0049] 本開示の態様にしたがって、グラフィックスメモリ40は、単一のデータチャネルを共有するためにグラフィックス処理パイプライン24の異なるステージによって作り出されるデータをイネーブルする(enable)共有されるデータチャネル50A−50N(「共有されるデータチャネル50」)のうちの1つ以上を含むことができ、それによってGPU12がグラフィックスメモリ40の中の限られたスペースをより効率的に利用することをイネーブルし、またシェーダプロセッサクラスタ46がグラフィックス処理パイプライン24の複数のステージを同時に実行するためにそのプロセッサコア48の利用を増加させることもイネーブルする。
[0050] 共有されるデータチャネル50の中の各共有されるデータチャネルは、グラフィックス処理パイプライン24の2つ以上のステージによって作り出されるデータを記憶し得る。グラフィックス処理パイプライン24の個別のステージのためにデータチャネルを割り当てることとは対照的に、共有されるデータチャネル50の中の共有されるデータチャネルを共有することによって、グラフィックス処理パイプライン24の中のステージがより少ないデータを作り出す場合、同じ共有されるデータチャネルを共有する別のステージは、それが共有されるデータチャネルの中で作り出すより多くのデータを記憶することによってそのファクト(fact)を活用することが可能であり得る。
[0051] 本開示の態様にしたがって、ジオメトリ処理ユニット(GPC)42は、共有されるデータチャネル50のステータスに基づいてシェーダプロセッサクラスタ46の実行をスケジューリングし得る。GPC42は、シェーダプロセッサクラスタ46によって実行されるためにグラフィックス処理パイプライン24のステージによって消費されるための十分なデータが共有されるデータチャネル50の中にあるか否かを決定するために、共有されるデータチャネル50をモニタし(monitor)得る。GPC42はまた、シェーダプロセッサクラスタ46によって実行されるためにグラフィックス処理パイプライン24のステージによって作り出されるデータを記憶するための十分なフリースペースが共有されるデータチャネル50の中にあるか否かを決定するために、共有されるデータチャネル50をモニタし得る。GPC42が、共有されるデータチャネル50の中に十分なデータおよびフリースペースが存在することを決定する場合、GPC42は、グラフィックス処理パイプライン24のステージのバッチ(batch of stages)を実行するために、実行コマンドをシェーダプロセッサクラスタ46に送り得る。ステージのバッチの実行を完了したことに応答して、シェーダプロセッサクラスタ46は、プロセッサクラスタ46がステージのバッチの実行を完了したことを示す信号をGPC42に送り得る。それに応答して、データチャネルマネージャ(data channel manager)44は、共有されるデータチャネル50のための関連のある読み取りおよび書き込みポインタをアップデートし得る。GPC42は、共有されるデータチャネル50を管理するデータチャネルマネージャ44を含み得る。データチャネルマネージャ44は、共有されるデータチャネル50にデータを書き込む、および共有されるデータチャネル50からデータを読み取るために共有されるデータチャネル50内でロケーションを指し示す共有されるデータチャネル50のための読み取りおよび書き込みポインタを管理し得る。
[0052] 本開示の態様にしたがって、共有されるデータチャネル50Aは、共有されるデータチャネル50Aがグラフィックス処理パイプライン24の第1のステージによって出力されたデータ55Aと、グラフィックス処理パイプライン24の第2のステージによって出力されたデータ55Bの両方を記憶し得るように、グラフィックス処理パイプライン24の2つ以上のステージによって共有されるデータチャネルであり得る。共有されるデータチャネル50Aは、データ55Aおよび55Bが、それらが作り出された、および/または消費されたとき、そのサイズを動的に増加と低減の両方をさせることができるようにリングバッファであることができ、それによって共有されるデータチャネル50Aに割り当てられたメモリブロックのより効率的な使用を可能にする。GPC42は、書き込みポインタ51Aおよび51B、ならびに読み取りポインタ53Aおよび53Bを管理し得る。書き込みポインタ51Aは、データ55Aを書き込むために、共有されるデータチャネル50Aのメモリロケーションを指し示すことができ、読み取りポインタ53Aは、データ55Aを読み取るために、共有されるデータチャネル50Aのメモリロケーションを指し示し得る。
[0053] 典型的に、読み取りポインタ53Aおよび53Bが、それぞれ、キューの先頭(head of the queue)と称されることもある、データ55Aおよび55Bの中のデータの最も古い部分(oldest piece)を記憶する共有されるデータチャネル50Aのメモリロケーションを指し示すように、ならびに書き込みポインタ51Aおよび51Bが、それぞれ、キューの末端(tail of the queue)と称されることもある、データ55Aおよび55Bの中のデータの最も新しい部分を記憶する共有されるデータチャネル50Aのメモリロケーションを指し示すように、GPU12は、ファーストインファーストアウト(first-in-first-out)(FIFO)の順序で共有されるデータチャネル50Aの中にデータ55Aおよび55Bを記憶する。
[0054] 共有されるデータチャネル50Aはまた、データ55Aおよび55Bから読み取られたデータが共有されるデータチャネル50Aから削除され、それらのメモリロケーションが割り当てを解除され(deallocated)得るようにFIFOモードで動作し得る。以上のように、GPU12が共有されるデータチャネル50Aからデータ55Aを読み取るとき、共有されるデータチャネル50Aの中のフリースペース57は増加し、それによってGPU12のための共有されるデータチャネル50Aの中の追加のスペースがデータ55Bにデータを書き込むことを可能にする。同様に、GPU12が共有されるデータチャネル50Aからデータ55Bを読み取るとき、共有されるデータチャネル50Aの中のフリースペース59は増加し、それによってGPU12のための共有されるデータチャネル50Aの中の追加のスペースがデータ55Aにデータを書き込むことを可能にする。共有されるデータチャネル50Aのみが上記に詳細に説明されたが、共有されるデータチャネル50の中の各共有されるデータチャネルが、共有されるデータチャネル50Aに関して上記に説明された特徴を共有し得ることは理解されるべきである。
[0055] 図4は、グラフィックス処理パイプライン24の中で使用されている共有されるデータチャネル50の例を例示するブロック図である。図4に示されるように、共有されるデータチャネル50Aは、ステージによって作り出されるデータを記憶するためにグラフィックス処理パイプライン24のステージによって共有され得る。
具体的には、共有されるデータチャネル50Aは、グラフィックス処理パイプライン24のハルシェーダステージ30によって作り出されるデータ52を記憶することができ、グラフィックス処理パイプライン24のジオメトリシェーダステージ36によって作り出されるデータ54をさらに記憶し得る。データ52は、グラフィックス処理パイプライン24のドメインシェーダステージ34によって消費されることができ、データ54は、グラフィックス処理パイプライン24のピクセルシェーダステージによって消費され得る。
[0056] ハルシェーダステージ30およびジオメトリシェーダステージ36によって共有されるデータチャネル50Aに記憶されたデータ52およびデータ54は、それぞれ、ハルシェーダステージ30によって出力されるパッチ制御点およびジオメトリシェーダステージ36によって出力される頂点を含み得る。データチャネル50Aがデータ52および54をキャッシュしないため、データ52および54は、データ52および54から読み取られるデータが共有されるデータチャネル50Aから削除されるFIFOキューとして各々動作し得る。
[0057] いくつかの例では、グラフィックス処理パイプライン24のいくつかのステージによって作り出される同じデータは、グラフィックス処理パイプライン24の他のステージによって複数回(multiple times)消費され得る。データがFIFOキューとして動作する共有されるデータチャネル50の1つに記憶される場合、FIFOキューに記憶されるデータがそれがFIFOキューから読み取られるとき削除され得るため、データを作り出すグラフィックス処理パイプライン24のステージは、同じデータを作り出すために複数回実行する必要があり得る。複数回同じ頂点を作り出すために複数回頂点シェーダ28またはドメインシェーダ34を実行することに代わって、GPU12は、キャッシュモード共有チャネル56の中で頂点シェーダ28およびドメインシェーダ34によって作り出されるデータを代わりにキャッシュし得る。
[0058] 例えば、頂点シェーダステージ28によって変換される頂点を含む、グラフィックス処理パイプライン24の頂点シェーダステージ28によって作り出されるデータは、グラフィックス処理パイプライン24のハルシェーダステージ30によって消費され得る。同様に、ドメインシェーダステージ34によって出力される頂点位置のような、グラフィックス処理パイプライン24のドメインシェーダステージ34によって作り出されるデータは、グラフィックス処理パイプライン24のジオメトリシェーダステージ36によって消費され得る。例えば、近接したプリミティブ(例えば、三角形)が頂点を共有し得るため、同じ頂点は、2つの近接した三角形を形成するために使用され得る。したがって、頂点シェーダステージ28およびドメインシェーダステージ34によって作り出される頂点データは、複数回消費され得る。頂点シェーダステージ28およびドメインシェーダステージ34によって作り出されるデータは、複数回消費され得るため、これらのステージによって作り出されるデータは、キャッシュされたデータが、それがキャッシュモード共有チャネル56から読み取られることに応答して削除され得ないように、キャッシュモード共有チャネル56の中でキャッシュされ得る。
[0059] 図5は、キャッシュモード共有チャネル56を例示するブロック図である。図5に示されるように、キャッシュモード共有チャネル56は、2つの共有されるデータチャネル:共有されるプリミティブキュー50Bおよび共有される頂点キャッシュ50C、ならびにキャッシュウィンドウ70を含み得る。共有される頂点キャッシュ50Cは、共有される頂点キャッシュ50Cに記憶されるデータが共有される頂点キャッシュ50Cから読み取られる際に削除されない場合があるようにキャッシュモードで動作し得る。共有されるプリミティブキュー50Bに記憶されるデータ62およびデータ64は、頂点シェーダステージ28およびドメインシェーダステージ34によって作り出されるプリミティブデータを含み得る。例えば、データ62は、各プリミティブのために頂点シェーダステージ28によって作り出された、共有される頂点キャッシュ50Cで記憶された頂点データの頂点インデックスおよびロケーションを含むことができ、データ64は、各プリミティブのためにドメインシェーダステージ34によって作り出された、共有される頂点キャッシュ50Cで記憶された頂点データの頂点インデックスおよびロケーションを含み得る。データ62および64はまた、関連するプリミティブの各々のための割り当て解除フラグ(deallocation flags)を含み得る。共有される頂点キャッシュ50Cに記憶されたデータ66は、頂点シェーダステージ28によって変換された頂点を含むことができ、一方、共有される頂点キャッシュ50Cに記憶されたデータ68は、ドメインシェーダステージ34によって出力された頂点位置を含み得る。GPC42は、キャッシュモード共有チャネル56がデータを受け取るために十分なフリースペースを有するか否かを決定するために、共有されるプリミティブキュー50Bと共有される頂点キャッシュ50Cの両方のフリースペースをチェックし得る。
[0060] キャッシュウィンドウ70は、特定の頂点が、共有される頂点キャッシュ50Cの限られたウィンドウの中に既に記憶されている場合、インジケーションを記憶し得る。例えば、キャッシュウィンドウ70は、フリーアソシアティブキャッシュ(fully associative cache)として動作することができ、頂点を消費し得るシェーダの、共有される頂点キャッシュ50C内の頂点のデータロケーション、頂点インデックス、およびフラグのような、インジケーションを記憶し得る。
[0061] プリミティブによるGPC42処理ジオメトリプリミティブ。頂点シェーダ28およびドメインシェーダ34のために、GPC42が、頂点インデックス上のキャッシュウィンドウ70、および/または頂点が属するシェーダをチェックすることに基づいて、プリミティブの特定の頂点が共有される頂点キャッシュ50Cの中に存在しないことを決定する場合、キャッシュミスが発生することがあり得、そしてGPC42は、所望の頂点を作り出すために、およびキャッシュモード共有チャネル56の中に作り出された頂点データを記憶するために適切なシェーダステージ(例えば、頂点シェーダ28またはドメインシェーダ34)を実行するためのコマンドをシェーダユニット46に送り得る。GPC42は、共有される頂点キャッシュ50Cで頂点データの頂点インデックスおよびロケーションを共有されるプリミティブキュー50Bに追加し得る。GPC42は、キャッシュモード共有チャネル56の中の今キャッシュされた頂点に関する適切なデータをキャッシュウィンドウ70に追加し得る。キャッシュウィンドウ70は、キャッシュミスの後にキャッシュウィンドウ70の中に余地がない場合、キャッシュウィンドウ70の中の最も古いスロットの中に関連し、共有されるプリミティブキュー50Bの中にセットされたそれの割り当て解除フラグを有する頂点が、キャッシュモード共有チャネル56に追加される最新の頂点に関する情報でセットされ得るようにファーストインファーストアウト(FIFO)の方法で動作し得る。しかしながら、GPC42が特定の頂点がキャッシュモード共有チャネル56の中でキャッシュされることを決定する場合、GPC42は、所望の頂点の共有される頂点キャッシュ50Cの中のメモリロケーションを使用することができ、共有される頂点キャッシュ50Cで頂点データの頂点インデックスおよびロケーションを共有されるプリミティブキュー50Bに追加することができる。このようにして、GPU12は、グラフィックス処理パイプライン24の中のステージの無関係な処理(extraneous processing)を低減することができる。
[0062] ハルシェーダ30およびジオメトリシェーダ36を実行するために、GPC42は、共有されるプリミティブキュー50Bと共有される頂点キャッシュ50Cの両方からデータを消費し得る。GPC42は、共有されるプリミティブキュー50Bから共有される頂点キャッシュ50Cの中の頂点データの頂点インデックスおよびロケーションを読み取り得る。GPC42は次に、共有されるプリミティブキュー50Bから読み取ったロケーションを使用して、共有される頂点キャッシュ50Cから頂点データを読み取り得る。GPC42は、データを読み取った後、共有されるプリミティブキュー50Bの読み取りポインタを動かし得る。しかしながら、続くプリミティブが、共有される頂点キャッシュ50Cから丁度読み取られた同じ頂点も使用し得るため、キャッシュされた頂点が、共有される頂点キャッシュ50Cから読み取られた直後、GPC42は、共有される頂点キャッシュ50Cの読み取りポインタを即時に動かさないことがある。頂点を消費するプリミティブのための共有されるプリミティブキュー50Bの中の関連する割り当てを解除されたフラグがセットされる場合、GPC42は、読み取りポインタを動かすこと、およびキャッシュモード共有チャネル56から頂点を割り当て解除することを可能にされ得る。GPC42は、頂点データを消費するためのシェーダステージ(例えば、ハルシェーダ30およびジオメトリシェーダ36)を実行するために、および次のシェーダステージのための頂点を作り出し、共有されるデータチャネル50Aの中の作り出された頂点データを記憶するためにコマンドをシェーダユニット46に送り得る。
[0063] GPC42は、デッドロックのためのキャッシュモード共有チャネル56および共有されるデータチャネル50Aをモニタし得る。一例では、キャッシュモード共有チャネル56が頂点シェーダステージ28によって作り出されるデータでいっぱいである場合、および共有されるデータチャネル50Aがハルシェーダステージ30によって作り出されるデータでいっぱいである場合、デッドロックは、発生し得る。この場合では、ハルシェーダステージ30が頂点ステージ28によって作り出されたデータを消費するため、ハルシェーダステージ30は、新たに作り出されたデータを記憶するための共有されるデータチャネル50Aの中のフリースペースが存在しないため、共有されるデータチャネル50Aに記憶されたデータを作り出すために頂点シェーダステージ28によって作り出され、キャッシュモード共有チャネル56の中に記憶されるデータを消費することができない。さらに、キャッシュモード共有チャネル56が、頂点シェーダステージ28によって作り出されるデータでいっぱいであり、そのデータのいずれもハルシェーダ30によって消費されることができないため、そのデータのいずれも、ドメインシェーダ34によって作り出されたデータを記憶するためのキャッシュモード共有チャネル56に関するスペースを解放する(free up)ために割り当てを解除されることができない。さらに、ドメインシェーダ34がハルシェーダステージ30によって作り出され、共有されるデータチャネル50Aの中に記憶されるデータを消費するため、ハルシェーダ30Aによって作り出され、共有されるデータチャネル50Aの中に記憶されるデータのいずれも、ジオメトリシェーダ36によって作り出されたデータを記憶するための共有されるデータチャネル50Aに関する、共有されるデータチャネル50Aの中のスペースを解放するためにドメインシェーダ34によって消費されることができない。
[0064] キャッシュモード共有チャネル56と共有されるデータチャネル50A間のデッドロック状況を防ぐために、キャッシュモード共有チャネル56および共有されるデータチャネル50Aがそれぞれ、頂点シェーダ28およびハルシェーダ30によって作り出されるデータを記憶するだけでないように、GPC42は、それぞれドメインシェーダ34およびジオメトリシェーダ36によって作り出されるデータを記憶するためにキャッシュモード共有チャネル56および共有されるデータチャネル50Aの中のスペースを保持し(reserve)得る。GPC42は、共有されるプリミティブキュー50Bと共有される頂点キャッシュ50Cの両方のコンポーネントの中でキャッシュモード共有チャネル56のスペースの量、および例えば、シェーダクラスタ46の中の所与の数の波(waves)のためにドメインシェーダ34およびジオメトリシェーダ36からの出力を記憶するために必要であるスペースの量を決定することによって、保持するべき共有されるデータチャネル50Aのスペースの量を決定し得る。
[0065] 図6は、グラフィックス処理パイプラインのステージによってデータチャネルを共有するための例示的なプロセスを例示する流れ図である。図6に示されるように、処理は、GPU12が、グラフィックス処理パイプライン24の少なくとも2つのステージによって共有されるGPU12のオンチップグラフィックスメモリ40の中に共有されるデータチャネル50Aを割り当てることを含み得る(502)。プロセスは、GPU12の中のシェーダユニット46上で、グラフィックス処理パイプライン24の少なくとも2つのステージを実行することをさらに含み得る(504)。プロセスは、オンチップグラフィックスメモリ40の中の共有されるデータチャネル50Aの中にGPU12が、シェーダユニット46上で実行しているグラフィックス処理パイプライン24の少なくとも2つのステージによって作り出されるデータを記憶することをさらに含み得る(506)。
[0066] いくつかの例では、プロセスは、GPU12が、グラフィックス処理パイプライン24の第2の少なくとも2つのステージによって共有されるGPU12のオンチップグラフィックスメモリ40の中に第2のキャッシュモード共有チャネル56を割り当てることをさらに含むことができ、ここにおいて、共有されるデータチャネル50Aは、第1の共有されるデータチャネルである。いくつかの例では、プロセスは、GPU12の中のシェーダユニット46上で、グラフィックス処理パイプライン24の第2の少なくとも2つのステージを実行することをさらに含み得る。いくつかの例では、プロセスは、第2のキャッシュモード共有チャネル56の中にGPU12が、シェーダユニット46上で実行しているグラフィックス処理パイプライン24の第2の少なくとも2つのステージの各々によって作り出される第2のデータを記憶することをさらに含み得る。
[0067] いくつかの例では、データが、シェーダユニット46上で実行しているとき、グラフィックス処理パイプライン24の1つ以上のステージによって消費されるために第1の共有されるデータチャネル50A、または第2のキャッシュモード共有チャネル56で利用可能であり、ならびにフリースペースが、シェーダユニット46上で実行しているときグラフィックス処理パイプライン24の1つ以上のステージによって作り出されるデータを記憶するために第1の共有されるデータチャネル50A、または第2のキャッシュモード共有チャネル56で利用可能であるように、プロセスは、GPU12が、第1の共有されるデータチャネル50Aまたは第2のキャッシュモード共有チャネル56のステータスに少なくとも部分的に基づいてシェーダユニット46によってグラフィックス処理パイプライン24の1つ以上のステージの実行をスケジューリングすることをさらに含み得る。
[0068] いくつかの例では、グラフィックス処理パイプライン24の少なくとも2つのステージは、頂点シェーダ28およびドメインシェーダ34を含む。いくつかの例では、グラフィックス処理パイプライン24の第2の少なくとも2つのステージは、ハルシェーダ30およびジオメトリシェーダ36を含む。
[0069] いくつかの例では、プロセスは、GPU12が、第1の共有されるデータチャネル50Aと第2のキャッシュモード共有チャネル56間のデッドロックを防ぐために、第1の共有されるデータチャネル50A、および第2のキャッシュモード共有チャネル56のうちの少なくとも1つの中のフリースペースを保持することをさらに含み得る。
[0070] 1つ以上の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せでインプリメントされ得る。ソフトウェアでインプリメントされる場合、これらの機能は、コンピュータ可読媒体上で、1つ以上の命令またはコードとして記憶または送信され得る。コンピュータ可読媒体は、1つの場所から別の場所へのコンピュータプログラムの転送を容易にするあらゆる媒体を含むコンピュータデータ記憶媒体または通信媒体を含み得る。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コード、および/またはデータ構造を取り出すために、1つ以上のコンピュータまたは1つ以上のプロセッサによってアクセスされることができるあらゆる利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶デバイス、あるいは命令またはデータ構造の形で所望のプログラムコードを搬送または記憶するために使用されることができ、コンピュータによってアクセスされることができる任意の他の媒体を備えることができる。また、任意の接続は、コンピュータ可読媒体と厳密には称される。例えば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波のようなワイヤレス技術を使用して、ウェブサイト、サーバ、または他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波のようなワイヤレス技術は、媒体の定義に含まれる。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびBlu−ray(登録商標)ディスクを含み、ここでディスク(disk)は通常、磁気的にデータを再生し、一方ディスク(disc)は、レーザーを用いて光学的にデータを再生する。上記の組み合わせはまた、コンピュータ可読媒体の範囲内に含まれるべきである。
[0071] コードは、1つ以上のデジタルシグナルプロセッサ(DSPs)、汎用マイクロプロセッサ、特定用途向け集積回路(ASICs)、フィールドプログラマブル論理アレイ(FPGAs)、または他の同等な集積またはディスクリート論理回路のような、1つ以上のプロセッサによって実行され得る。よって、本明細書で使用される場合、「プロセッサ」および「処理ユニット」という用語は、前述の構造、または本明細書に説明された技法のインプリメンテーションに適した任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書に説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内で提供され得る、あるいは組み合わせられたコーデックの中に組み込まれ得る。また、技法は、1つ以上の回路または論理要素で十分にインプリメントされることができる。
[0072] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICsのセット(すなわち、チップセット)を含む、幅広い様々なデバイスまたは装置においてインプリメントされ得る。様々なコンポーネント、モジュール、またはユニットは、開示された技法を行うように構成されるデバイスの機能的な態様を強調するために本開示の中で説明されるが、必ずしも異なるハードウェアユニットによる実現を要求しない。むしろ、上記に説明されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされ得るか、または適切なソフトウェアおよび/またはファームウェアと併せて、上記に説明されたような1つ以上のプロセッサを含む、相互運用のハードウェアユニット(interoperative hardware units)の集合によって提供され得る。
[0073] 様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
[0073] 様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
グラフィックス処理の方法であって、
グラフィックス処理ユニット(GPU)が、グラフィックス処理パイプラインの少なくとも2つのステージによって共有される前記GPUのオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てることと、
前記GPUの中のシェーダユニット上で、前記グラフィックス処理パイプラインの前記少なくとも2つのステージを実行することと、
オンチップグラフィックスメモリの中の前記共有されるデータチャネルの中に前記GPUが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージの各々によって作り出されるデータを記憶することと、
を備える、方法。
[C2]
前記GPUが、前記グラフィックス処理パイプラインの第2の少なくとも2つのステージによって共有される前記GPUのオンチップグラフィックスメモリの中に第2の共有されるデータチャネルを割り当てることと、ここにおいて、前記共有されるデータチャネルは、第1の共有されるデータチャネルである、
前記GPUの中の前記シェーダユニット上で、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージを実行することと、
前記第2の共有されるデータチャネルの中に前記GPUが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージの各々によって作り出される第2のデータを記憶することと、
をさらに備える、C1に記載の方法。
[C3]
データが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの1つ以上のステージによって消費されるために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であり、ならびにフリースペースが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記1つ以上のステージによって作り出されるデータを記憶するために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であるように、前記GPUが、前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルのステータスに少なくとも部分的に基づいて前記シェーダユニット上で前記グラフィックス処理パイプラインの前記1つ以上のステージの前記実行をスケジューリングすることをさらに備える、C2に記載の方法。
[C4]
前記第1の共有されるデータチャネルは、前記第1の共有されるデータチャネルの中に記憶されたデータをキャッシュするためにキャッシュモードで動作し、前記第2の共有されるデータチャネルは、ファーストインファーストアウト(FIFO)モードで動作する、C2に記載の方法。
[C5]
前記第1の共有されるデータチャネルは、第1のリングバッファであり、前記第2の共有されるデータチャネルは、第2のリングバッファである、C2に記載の方法。
[C6]
前記第1の共有されるデータチャネルの中に記憶された前記データは、前記グラフィックス処理パイプラインの前記少なくとも2つのステージによって作り出される頂点データを備え、前記第2の共有されるデータチャネルの中に記憶された前記第2のデータは、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージによって作り出されるプリミティブを備える、C2に記載の方法。
[C7]
前記グラフィックス処理パイプラインの前記少なくとも2つのステージは、頂点シェーダおよびドメインシェーダを備える、C6に記載の方法。
[C8]
前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージは、ハルシェーダおよびジオメトリシェーダを備える、C6に記載の方法。
[C9]
前記GPUが、前記第1の共有されるデータチャネルと前記第2の共有されるデータチャネル間のデッドロックを防ぐために、前記第1の共有されるデータチャネル、および前記第2の共有されるデータチャネルのうちの少なくとも1つの中のフリースペースを保持することをさらに備える、C2に記載の方法。
[C10]
グラフィックスデータを処理するように構成された装置であって、
グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるグラフィックス処理ユニット(GPU)のオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てることと、
前記GPUの中のシェーダユニット上で、前記グラフィックス処理パイプラインの前記少なくとも2つのステージを実行することと、
オンチップグラフィックスメモリの中の前記共有されるデータチャネルの中に、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージの各々によって作り出されるデータを記憶することと、
を行うように構成される前記GPUを備える、装置。
[C11]
前記GPUは、
前記グラフィックス処理パイプラインの第2の少なくとも2つのステージによって共有される前記GPUのオンチップグラフィックスメモリの中に第2の共有されるデータチャネルを割り当てることと、ここにおいて、前記共有されるデータチャネルは、第1の共有されるデータチャネルである、
前記GPUの中の前記シェーダユニット上で、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージを実行することと、
前記第2の共有されるデータチャネルの中に、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージの各々によって作り出される第2のデータを記憶することと、
を行うようにさらに設定される、C10に記載の装置。
[C12]
前記GPUは、
データが、前記グラフィックス処理パイプラインの1つ以上のステージによって消費されるために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であり、ならびにフリースペースが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記1つ以上のステージによって作り出されるデータを記憶するために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であるように、前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルのステータスに少なくとも部分的に基づいて前記シェーダユニット上で前記グラフィックス処理パイプラインの前記1つ以上のステージの前記実行をスケジューリングするようにさらに構成される、C11に記載の装置。
[C13]
前記第1の共有されるデータチャネルは、前記第1の共有されるデータチャネルの中に記憶されたデータをキャッシュするためにキャッシュモードで動作し、前記第2の共有されるデータチャネルは、ファーストインファーストアウト(FIFO)モードで動作する、C11に記載の装置。
[C14]
前記第1の共有されるデータチャネルは、第1のリングバッファであり、前記第2の共有されるデータチャネルは、第2のリングバッファである、C11に記載の装置。
[C15]
前記第1の共有されるデータチャネルの中に記憶された前記データは、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージによって作り出される頂点データを備え、前記第2の共有されるデータチャネルの中に記憶された前記第2のデータは、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージによって作り出されるプリミティブを備える、C11に記載の装置。
[C16]
前記GPUは、
前記第1の共有されるデータチャネルと前記第2の共有されるデータチャネル間のデッドロックを防ぐために、前記第1の共有されるデータチャネル、および前記第2の共有されるデータチャネルのうちの少なくとも1つの中のフリースペースを保持するようにさらに構成される、C11に記載の装置。
[C17]
装置であって、
グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるグラフィックス処理ユニット(GPU)のオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てるための手段と、
前記グラフィックス処理パイプラインの前記少なくとも2つのステージを実行するための手段と、
オンチップグラフィックスメモリの中の前記共有されるデータチャネルの中に、前記グラフィックス処理パイプラインの前記少なくとも2つのステージの各々の実行によって作り出されるデータを記憶するための手段と、
を備える、装置。
[C18]
前記グラフィックス処理パイプラインの第2の少なくとも2つのステージによって共有される前記GPUのオンチップグラフィックスメモリの中に第2の共有されるデータチャネルを割り当てるための手段と、ここにおいて、前記共有されるデータチャネルは、第1の共有されるデータチャネルである、
前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージを実行するための手段と、
前記第2の共有されるデータチャネルの中に、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージの各々の実行によって作り出される第2のデータを記憶するための手段と、
をさらに備える、C17に記載の装置。
[C19]
データが、前記グラフィックス処理パイプラインの1つ以上のステージによって消費されるために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であり、ならびにフリースペースが、前記グラフィックス処理パイプラインの前記1つ以上のステージによって作り出されるデータを記憶するために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であるように、前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルのステータスに少なくとも部分的に基づいて前記グラフィックス処理パイプラインの前記1つ以上のステージの前記実行をスケジューリングする手段をさらに備える、C18に記載の装置。
[C20]
前記第1の共有されるデータチャネルは、前記第1の共有されるデータチャネルの中に記憶されたデータをキャッシュするためにキャッシュモードで動作し、前記第2の共有されるデータチャネルは、ファーストインファーストアウト(FIFO)モードで動作する、C18に記載の装置。
[C21]
前記第1の共有されるデータチャネルは、第1のリングバッファであり、前記第2の共有されるデータチャネルは、第2のリングバッファである、C18に記載の装置。
[C22]
前記第1の共有されるデータチャネルの中に記憶された前記データは、前記グラフィックス処理パイプラインの前記少なくとも2つのステージによって作り出される頂点データを備え、前記第2の共有されるデータチャネルの中に記憶された前記第2のデータは、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージによって作り出されるプリミティブを備える、C18に記載の装置。
[C23]
前記第1の共有されるデータチャネルと前記第2の共有されるデータチャネル間のデッドロックを防ぐために、前記第1の共有されるデータチャネル、および前記第2の共有されるデータチャネルのうちの少なくとも1つの中のフリースペースを保持するための手段をさらに備える、C18に記載の装置。
[C24]
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、実行されるとき、1つ以上のプログラマブルプロセッサに、
共有されるデータチャネルを、グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるそれのオンチップグラフィックスメモリの中に割り当てることと、
シェーダユニット上で、前記グラフィックス処理パイプラインの前記少なくとも2つのステージを実行することと、
オンチップグラフィックスメモリの中の前記共有されるデータチャネルの中に、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージの各々によって作り出されるデータを記憶することと、
を行わせる、コンピュータ可読記憶媒体。
[C25]
前記命令は、実行されるとき、前記1つ以上のプログラマブルプロセッサに、
前記グラフィックス処理パイプラインの第2の少なくとも2つのステージによって共有されるオンチップグラフィックスメモリの中に第2の共有されるデータチャネルを割り当てることと、ここにおいて、前記共有されるデータチャネルは、第1の共有されるデータチャネルである、
前記シェーダユニット上で、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージを実行することと、
前記第2の共有されるデータチャネルの中に、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージの各々によって作り出される第2のデータを記憶することと、
をさらに行わせる、C24に記載のコンピュータ可読記憶媒体。
[C26]
前記命令は、実行されるとき、前記1つ以上のプログラマブルプロセッサに、
データが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの1つ以上のステージによって消費されるために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であり、ならびにフリースペースが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記1つ以上のステージによって作り出されるデータを記憶するために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であるように、前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルのステータスに少なくとも部分的に基づいて前記シェーダユニット上で前記グラフィックス処理パイプラインの前記1つ以上のステージの前記実行をスケジューリングすることをさらに行わせる、C25に記載のコンピュータ可読記憶媒体。
[C27]
前記第1の共有されるデータチャネルは、前記第1の共有されるデータチャネルの中に記憶されたデータをキャッシュするためにキャッシュモードで動作し、前記第2の共有されるデータチャネルは、ファーストインファーストアウト(FIFO)モードで動作する、C25に記載のコンピュータ可読記憶媒体。
[C28]
前記第1の共有されるデータチャネルは、第1のリングバッファであり、前記第2の共有されるデータチャネルは、第2のリングバッファである、C25に記載のコンピュータ可読記憶媒体。
[C29]
前記第1の共有されるデータチャネルの中に記憶された前記データは、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージによって作り出される頂点データを備え、前記第2の共有されるデータチャネルの中に記憶された前記第2のデータは、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージによって作り出されるプリミティブを備える、C25に記載のコンピュータ可読記憶媒体。
[C30]
前記命令は、実行されるとき、前記1つ以上のプログラマブルプロセッサに、
前記第1の共有されるデータチャネルと前記第2の共有されるデータチャネル間のデッドロックを防ぐために、前記第1の共有されるデータチャネル、および前記第2の共有されるデータチャネルのうちの少なくとも1つの中のフリースペースを保持することをさらに行わせる、C25に記載のコンピュータ可読記憶媒体。

Claims (30)

  1. グラフィックス処理の方法であって、
    グラフィックス処理ユニット(GPU)が、グラフィックス処理パイプラインの少なくとも2つのステージによって共有される前記GPUのオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てることと、
    前記GPUの中のシェーダユニット上で、前記グラフィックス処理パイプラインの前記少なくとも2つのステージを実行することと、
    オンチップグラフィックスメモリの中の前記共有されるデータチャネルの中に前記GPUが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージの各々によって作り出されるデータを記憶することと、
    を備える、方法。
  2. 前記GPUが、前記グラフィックス処理パイプラインの第2の少なくとも2つのステージによって共有される前記GPUのオンチップグラフィックスメモリの中に第2の共有されるデータチャネルを割り当てることと、ここにおいて、前記共有されるデータチャネルは、第1の共有されるデータチャネルである、
    前記GPUの中の前記シェーダユニット上で、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージを実行することと、
    前記第2の共有されるデータチャネルの中に前記GPUが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージの各々によって作り出される第2のデータを記憶することと、
    をさらに備える、請求項1に記載の方法。
  3. データが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの1つ以上のステージによって消費されるために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であり、ならびにフリースペースが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記1つ以上のステージによって作り出されるデータを記憶するために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であるように、前記GPUが、前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルのステータスに少なくとも部分的に基づいて前記シェーダユニット上で前記グラフィックス処理パイプラインの前記1つ以上のステージの前記実行をスケジューリングすることをさらに備える、請求項2に記載の方法。
  4. 前記第1の共有されるデータチャネルは、前記第1の共有されるデータチャネルの中に記憶されたデータをキャッシュするためにキャッシュモードで動作し、前記第2の共有されるデータチャネルは、ファーストインファーストアウト(FIFO)モードで動作する、請求項2に記載の方法。
  5. 前記第1の共有されるデータチャネルは、第1のリングバッファであり、前記第2の共有されるデータチャネルは、第2のリングバッファである、請求項2に記載の方法。
  6. 前記第1の共有されるデータチャネルの中に記憶された前記データは、前記グラフィックス処理パイプラインの前記少なくとも2つのステージによって作り出される頂点データを備え、前記第2の共有されるデータチャネルの中に記憶された前記第2のデータは、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージによって作り出されるプリミティブを備える、請求項2に記載の方法。
  7. 前記グラフィックス処理パイプラインの前記少なくとも2つのステージは、頂点シェーダおよびドメインシェーダを備える、請求項6に記載の方法。
  8. 前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージは、ハルシェーダおよびジオメトリシェーダを備える、請求項6に記載の方法。
  9. 前記GPUが、前記第1の共有されるデータチャネルと前記第2の共有されるデータチャネル間のデッドロックを防ぐために、前記第1の共有されるデータチャネル、および前記第2の共有されるデータチャネルのうちの少なくとも1つの中のフリースペースを保持することをさらに備える、請求項2に記載の方法。
  10. グラフィックスデータを処理するように構成された装置であって、
    グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるグラフィックス処理ユニット(GPU)のオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てることと、
    前記GPUの中のシェーダユニット上で、前記グラフィックス処理パイプラインの前記少なくとも2つのステージを実行することと、
    オンチップグラフィックスメモリの中の前記共有されるデータチャネルの中に、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージの各々によって作り出されるデータを記憶することと、
    を行うように構成される前記GPUを備える、装置。
  11. 前記GPUは、
    前記グラフィックス処理パイプラインの第2の少なくとも2つのステージによって共有される前記GPUのオンチップグラフィックスメモリの中に第2の共有されるデータチャネルを割り当てることと、ここにおいて、前記共有されるデータチャネルは、第1の共有されるデータチャネルである、
    前記GPUの中の前記シェーダユニット上で、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージを実行することと、
    前記第2の共有されるデータチャネルの中に、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージの各々によって作り出される第2のデータを記憶することと、
    を行うようにさらに設定される、請求項10に記載の装置。
  12. 前記GPUは、
    データが、前記グラフィックス処理パイプラインの1つ以上のステージによって消費されるために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であり、ならびにフリースペースが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記1つ以上のステージによって作り出されるデータを記憶するために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であるように、前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルのステータスに少なくとも部分的に基づいて前記シェーダユニット上で前記グラフィックス処理パイプラインの前記1つ以上のステージの前記実行をスケジューリングするようにさらに構成される、請求項11に記載の装置。
  13. 前記第1の共有されるデータチャネルは、前記第1の共有されるデータチャネルの中に記憶されたデータをキャッシュするためにキャッシュモードで動作し、前記第2の共有されるデータチャネルは、ファーストインファーストアウト(FIFO)モードで動作する、請求項11に記載の装置。
  14. 前記第1の共有されるデータチャネルは、第1のリングバッファであり、前記第2の共有されるデータチャネルは、第2のリングバッファである、請求項11に記載の装置。
  15. 前記第1の共有されるデータチャネルの中に記憶された前記データは、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージによって作り出される頂点データを備え、前記第2の共有されるデータチャネルの中に記憶された前記第2のデータは、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージによって作り出されるプリミティブを備える、請求項11に記載の装置。
  16. 前記GPUは、
    前記第1の共有されるデータチャネルと前記第2の共有されるデータチャネル間のデッドロックを防ぐために、前記第1の共有されるデータチャネル、および前記第2の共有されるデータチャネルのうちの少なくとも1つの中のフリースペースを保持するようにさらに構成される、請求項11に記載の装置。
  17. 装置であって、
    グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるグラフィックス処理ユニット(GPU)のオンチップグラフィックスメモリの中に共有されるデータチャネルを割り当てるための手段と、
    前記グラフィックス処理パイプラインの前記少なくとも2つのステージを実行するための手段と、
    オンチップグラフィックスメモリの中の前記共有されるデータチャネルの中に、前記グラフィックス処理パイプラインの前記少なくとも2つのステージの各々の実行によって作り出されるデータを記憶するための手段と、
    を備える、装置。
  18. 前記グラフィックス処理パイプラインの第2の少なくとも2つのステージによって共有される前記GPUのオンチップグラフィックスメモリの中に第2の共有されるデータチャネルを割り当てるための手段と、ここにおいて、前記共有されるデータチャネルは、第1の共有されるデータチャネルである、
    前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージを実行するための手段と、
    前記第2の共有されるデータチャネルの中に、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージの各々の実行によって作り出される第2のデータを記憶するための手段と、
    をさらに備える、請求項17に記載の装置。
  19. データが、前記グラフィックス処理パイプラインの1つ以上のステージによって消費されるために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であり、ならびにフリースペースが、前記グラフィックス処理パイプラインの前記1つ以上のステージによって作り出されるデータを記憶するために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であるように、前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルのステータスに少なくとも部分的に基づいて前記グラフィックス処理パイプラインの前記1つ以上のステージの前記実行をスケジューリングする手段をさらに備える、請求項18に記載の装置。
  20. 前記第1の共有されるデータチャネルは、前記第1の共有されるデータチャネルの中に記憶されたデータをキャッシュするためにキャッシュモードで動作し、前記第2の共有されるデータチャネルは、ファーストインファーストアウト(FIFO)モードで動作する、請求項18に記載の装置。
  21. 前記第1の共有されるデータチャネルは、第1のリングバッファであり、前記第2の共有されるデータチャネルは、第2のリングバッファである、請求項18に記載の装置。
  22. 前記第1の共有されるデータチャネルの中に記憶された前記データは、前記グラフィックス処理パイプラインの前記少なくとも2つのステージによって作り出される頂点データを備え、前記第2の共有されるデータチャネルの中に記憶された前記第2のデータは、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージによって作り出されるプリミティブを備える、請求項18に記載の装置。
  23. 前記第1の共有されるデータチャネルと前記第2の共有されるデータチャネル間のデッドロックを防ぐために、前記第1の共有されるデータチャネル、および前記第2の共有されるデータチャネルのうちの少なくとも1つの中のフリースペースを保持するための手段をさらに備える、請求項18に記載の装置。
  24. 命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、実行されるとき、1つ以上のプログラマブルプロセッサに、
    共有されるデータチャネルを、グラフィックス処理パイプラインの少なくとも2つのステージによって共有されるそれのオンチップグラフィックスメモリの中に割り当てることと、
    シェーダユニット上で、前記グラフィックス処理パイプラインの前記少なくとも2つのステージを実行することと、
    オンチップグラフィックスメモリの中の前記共有されるデータチャネルの中に、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージの各々によって作り出されるデータを記憶することと、
    を行わせる、コンピュータ可読記憶媒体。
  25. 前記命令は、実行されるとき、前記1つ以上のプログラマブルプロセッサに、
    前記グラフィックス処理パイプラインの第2の少なくとも2つのステージによって共有されるオンチップグラフィックスメモリの中に第2の共有されるデータチャネルを割り当てることと、ここにおいて、前記共有されるデータチャネルは、第1の共有されるデータチャネルである、
    前記シェーダユニット上で、前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージを実行することと、
    前記第2の共有されるデータチャネルの中に、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージの各々によって作り出される第2のデータを記憶することと、
    をさらに行わせる、請求項24に記載のコンピュータ可読記憶媒体。
  26. 前記命令は、実行されるとき、前記1つ以上のプログラマブルプロセッサに、
    データが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの1つ以上のステージによって消費されるために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であり、ならびにフリースペースが、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記1つ以上のステージによって作り出されるデータを記憶するために前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルにおいて利用可能であるように、前記第1の共有されるデータチャネル、または前記第2の共有されるデータチャネルのステータスに少なくとも部分的に基づいて前記シェーダユニット上で前記グラフィックス処理パイプラインの前記1つ以上のステージの前記実行をスケジューリングすることをさらに行わせる、請求項25に記載のコンピュータ可読記憶媒体。
  27. 前記第1の共有されるデータチャネルは、前記第1の共有されるデータチャネルの中に記憶されたデータをキャッシュするためにキャッシュモードで動作し、前記第2の共有されるデータチャネルは、ファーストインファーストアウト(FIFO)モードで動作する、請求項25に記載のコンピュータ可読記憶媒体。
  28. 前記第1の共有されるデータチャネルは、第1のリングバッファであり、前記第2の共有されるデータチャネルは、第2のリングバッファである、請求項25に記載のコンピュータ可読記憶媒体。
  29. 前記第1の共有されるデータチャネルの中に記憶された前記データは、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記少なくとも2つのステージによって作り出される頂点データを備え、前記第2の共有されるデータチャネルの中に記憶された前記第2のデータは、前記シェーダユニット上で実行している前記グラフィックス処理パイプラインの前記第2の少なくとも2つのステージによって作り出されるプリミティブを備える、請求項25に記載のコンピュータ可読記憶媒体。
  30. 前記命令は、実行されるとき、前記1つ以上のプログラマブルプロセッサに、
    前記第1の共有されるデータチャネルと前記第2の共有されるデータチャネル間のデッドロックを防ぐために、前記第1の共有されるデータチャネル、および前記第2の共有されるデータチャネルのうちの少なくとも1つの中のフリースペースを保持することをさらに行わせる、請求項25に記載のコンピュータ可読記憶媒体。
JP2016569551A 2014-02-18 2015-01-26 共有されるデータチャネルを用いるシェーダパイプライン Expired - Fee Related JP6271768B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/182,976 US9679347B2 (en) 2014-02-18 2014-02-18 Shader pipeline with shared data channels
US14/182,976 2014-02-18
PCT/US2015/012917 WO2015126574A1 (en) 2014-02-18 2015-01-26 Shader pipeline with shared data channels

Publications (3)

Publication Number Publication Date
JP2017509092A true JP2017509092A (ja) 2017-03-30
JP2017509092A5 JP2017509092A5 (ja) 2017-08-31
JP6271768B2 JP6271768B2 (ja) 2018-01-31

Family

ID=52469922

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016569551A Expired - Fee Related JP6271768B2 (ja) 2014-02-18 2015-01-26 共有されるデータチャネルを用いるシェーダパイプライン

Country Status (7)

Country Link
US (1) US9679347B2 (ja)
EP (1) EP3108452B1 (ja)
JP (1) JP6271768B2 (ja)
KR (1) KR101813429B1 (ja)
CN (1) CN106030663B (ja)
ES (1) ES2820716T3 (ja)
WO (1) WO2015126574A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
US10055807B2 (en) * 2016-03-02 2018-08-21 Samsung Electronics Co., Ltd. Hardware architecture for acceleration of computer vision and imaging processing
US10559112B2 (en) * 2016-03-11 2020-02-11 Intel Corporation Hybrid mechanism for efficient rendering of graphics images in computing environments
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
US20180173560A1 (en) * 2016-12-21 2018-06-21 Apple Inc. Processing circuit hardware resource allocation system
GB2560709B (en) * 2017-03-14 2021-02-24 Imagination Tech Ltd Graphics processing method and system for processing sub-primitives
CN107613046B (zh) * 2017-08-22 2020-12-18 创新先进技术有限公司 滤镜管道系统、图像数据处理方法、装置以及电子设备
US11120603B2 (en) 2019-06-18 2021-09-14 Samsung Electronics Co., Ltd. Heavy-weight/light-weight GPU shader core pair architecture
US11514549B2 (en) 2020-02-03 2022-11-29 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase
US11508110B2 (en) 2020-02-03 2022-11-22 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering
US11263718B2 (en) * 2020-02-03 2022-03-01 Sony Interactive Entertainment Inc. System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering
US11416961B2 (en) 2020-05-29 2022-08-16 Samsung Electronics Co., Ltd. Variable entry transitional ring storage for efficiently accessing graphics states
US20230047481A1 (en) * 2021-08-11 2023-02-16 Apple Inc. Affinity-based Graphics Scheduling
US20230097097A1 (en) * 2021-09-29 2023-03-30 Advanced Micro Devices, Inc. Graphics primitives and positions through memory buffers
US12062126B2 (en) 2021-09-29 2024-08-13 Advanced Micro Devices, Inc. Load multiple primitives per thread in a graphics pipeline
US11941723B2 (en) * 2021-12-29 2024-03-26 Advanced Micro Devices, Inc. Dynamic dispatch for workgroup distribution

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009145889A1 (en) * 2008-05-29 2009-12-03 Advanced Micro Devices, Inc. System, method, and computer program product for a tessellation engine using a geometry shader
JP2012514273A (ja) * 2008-12-31 2012-06-21 インテル・コーポレーション テッセレーション量に対してテッセレーション時間が線形に増加するテッセレータ
US20130194286A1 (en) * 2012-01-27 2013-08-01 Qualcomm Incorporated Graphics processing unit buffer management

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10144788A1 (de) * 2001-09-11 2003-04-30 Siemens Ag Verfahren und Vorrichtung zur sicheren hochperformanten Aufzeichnung von Prozessdaten bei numerisch gesteuerten industriellen Bearbeitungsmaschinen
US7777748B2 (en) 2003-11-19 2010-08-17 Lucid Information Technology, Ltd. PC-level computing system with a multi-mode parallel graphics rendering subsystem employing an automatic mode controller, responsive to performance data collected during the run-time of graphics applications
US6911985B1 (en) * 2003-12-10 2005-06-28 Lsi Logic Corporation Method and apparatus for reducing frame buffer size in graphics systems
US7694061B2 (en) * 2004-09-08 2010-04-06 Fisher-Rosemount Systems, Inc. Discarding a partially received message from a data queue
US7612783B2 (en) * 2006-05-08 2009-11-03 Ati Technologies Inc. Advanced anti-aliasing with multiple graphics processing units
US7551176B2 (en) 2006-08-24 2009-06-23 Via Technologies, Inc. Systems and methods for providing shared attribute evaluation circuits in a graphics processing unit
US8176265B2 (en) 2006-10-30 2012-05-08 Nvidia Corporation Shared single-access memory with management of multiple parallel requests
US7973804B2 (en) 2008-03-11 2011-07-05 International Business Machines Corporation Image processing with highly threaded texture fragment generation
US8184120B2 (en) * 2008-05-19 2012-05-22 Siemens Aktiengesellschaft Framework for processing and rendering large volume data
US9436969B2 (en) 2009-10-05 2016-09-06 Nvidia Corporation Time slice processing of tessellation and geometry shaders
US20110285718A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Point containment for quadratic bèzier strokes
WO2012108912A1 (en) * 2011-02-07 2012-08-16 Intel Corporation Co-phasing of transmissions from multiple infrastructure nodes
GB2491156B (en) 2011-05-25 2019-08-07 Advanced Risc Mach Ltd Processing pipeline control
US8842122B2 (en) * 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor
US10535185B2 (en) 2012-04-04 2020-01-14 Qualcomm Incorporated Patched shading in graphics processing
US9619853B2 (en) * 2012-08-09 2017-04-11 Qualcomm Incorporated GPU-accelerated path rendering
US9330495B2 (en) * 2012-08-09 2016-05-03 Qualcomm Incorporated Extending DX11 GPU for programmable vector graphics

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009145889A1 (en) * 2008-05-29 2009-12-03 Advanced Micro Devices, Inc. System, method, and computer program product for a tessellation engine using a geometry shader
JP2012514273A (ja) * 2008-12-31 2012-06-21 インテル・コーポレーション テッセレーション量に対してテッセレーション時間が線形に増加するテッセレータ
US20130194286A1 (en) * 2012-01-27 2013-08-01 Qualcomm Incorporated Graphics processing unit buffer management

Also Published As

Publication number Publication date
EP3108452A1 (en) 2016-12-28
US20150235341A1 (en) 2015-08-20
KR20160123311A (ko) 2016-10-25
WO2015126574A1 (en) 2015-08-27
EP3108452B1 (en) 2020-06-24
JP6271768B2 (ja) 2018-01-31
CN106030663B (zh) 2018-10-30
ES2820716T3 (es) 2021-04-22
US9679347B2 (en) 2017-06-13
KR101813429B1 (ko) 2017-12-28
CN106030663A (zh) 2016-10-12

Similar Documents

Publication Publication Date Title
JP6271768B2 (ja) 共有されるデータチャネルを用いるシェーダパイプライン
JP6273380B2 (ja) レイトレーシングアプリケーションにおけるツリー横断のための開始ノード決定
US10176621B2 (en) Using compute shaders as front end for vertex shaders
US10134102B2 (en) Graphics processing hardware for using compute shaders as front end for vertex shaders
KR102003655B1 (ko) 그래픽 프로세싱에서 셰도우 레이들에 대한 트리 횡단을 위한 시작 노드 결정
JP6294565B2 (ja) グラフィックス処理において使用するためのシェーダプログラム実行技法
KR102006584B1 (ko) 레이트 심도 테스팅과 컨서버티브 심도 테스팅 간의 동적 스위칭
JP6884766B2 (ja) 帯域幅圧縮グラフィックスデータの記憶
JP6325756B2 (ja) 単一パスの表面スプラッティング
JP2016520909A (ja) タイルベースレンダラに関するクエリ処理
TW201926239A (zh) 以微磚為基礎之低解析度深度儲存
US10157443B1 (en) Deferred batching of incremental constant loads

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170720

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170720

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171116

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20171124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171227

R150 Certificate of patent or registration of utility model

Ref document number: 6271768

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees