IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-5019372レベルビニングを使用する分散型レンダリングのためのシステム及び方法
<>
  • 特表-2レベルビニングを使用する分散型レンダリングのためのシステム及び方法 図1
  • 特表-2レベルビニングを使用する分散型レンダリングのためのシステム及び方法 図2
  • 特表-2レベルビニングを使用する分散型レンダリングのためのシステム及び方法 図3
  • 特表-2レベルビニングを使用する分散型レンダリングのためのシステム及び方法 図4
  • 特表-2レベルビニングを使用する分散型レンダリングのためのシステム及び方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-17
(54)【発明の名称】2レベルビニングを使用する分散型レンダリングのためのシステム及び方法
(51)【国際特許分類】
   G06T 15/00 20110101AFI20240110BHJP
   G06T 15/40 20110101ALI20240110BHJP
【FI】
G06T15/00 501
G06T15/40
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023538709
(86)(22)【出願日】2021-12-27
(85)【翻訳文提出日】2023-08-08
(86)【国際出願番号】 US2021065230
(87)【国際公開番号】W WO2022146928
(87)【国際公開日】2022-07-07
(31)【優先権主張番号】63/131,976
(32)【優先日】2020-12-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アニルーダ アール. アチャリャ
(72)【発明者】
【氏名】ルイジン ウー
【テーマコード(参考)】
5B080
【Fターム(参考)】
5B080AA13
5B080AA14
5B080BA00
5B080CA03
5B080CA04
5B080FA00
5B080GA11
(57)【要約】
2レベルビニングを使用する分散型レンダリングのためのシステム(100)及び方法(300)は、GPUチップレットのセット(106)内の第1のグラフィックス処理ユニット(GPU)チップレット(106-1)においてレンダリングされるフレーム(202)のプリミティブ(208)を処理して、各粗いビン(204、510、512、514、516、518)についてプリミティブの可視性情報(408)を生成することと、可視性情報(408)をGPUチップレットのセット(106)内の他のGPUチップレットに提供することと、を含む。各粗いビン(204、510、512、514、516、518)は、GPUチップレットのセット(106)のうち何れかのGPUチップレットに割り当てられ、対応する可視性情報(408)に基づいて、割り当てられたGPUチップレット(106)においてレンダリングされる。
【選択図】図3
【特許請求の範囲】
【請求項1】
方法(300)であって、
複数の粗いビン(204、204-1、510、512、514、516、518)の各々についてプリミティブの可視性情報(408)を生成するために、GPUチップレットのセット(106)内の第1のグラフィックス処理ユニット(GPU)チップレット(106-1)においてレンダリングされるフレーム(202)のプリミティブを処理することと、
前記可視性情報(408)を前記GPUチップレットのセット(106)内の他のGPUチップレットに提供することと、
前記複数の粗いビン(204、510、512、514、516、518)の各々を、前記GPUチップレットのセット(106)内の何れかのGPUチップレットに割り当てることと、
対応する前記可視性情報(408)に基づいて、割り当てられた前記GPUチップレット(106)において前記複数の粗いビン(204、510、512、514、516、518)の各々をレンダリングすることと、を含む、
方法(300)。
【請求項2】
前記複数の粗いビン(204、510、512、514、516、518)の各々をレンダリングすることは、前記複数の粗いビン(204、510、512、514、516、518)の各々の可視性プリミティブ及び画素フェーズを処理することを含む、
請求項1の方法(300)。
【請求項3】
前記可視性情報(408)は、前記複数の粗いビン(204、510、512、514、516、518)の各々について処理されるプリミティブを含む、
請求項1の方法(300)。
【請求項4】
前記第1のGPUチップレット(106-1)が、レンダリングされる前記フレーム(202)の前記プリミティブ(208)から不可視性プリミティブをカリングすることを含む、
請求項1の方法(300)。
【請求項5】
前記複数の粗いビン(204、510、512、514、516、518)の各々を割り当てることは、前記複数の粗いビン(204、510、512、514、516、518)の各々を前記GPUチップレットのセット(106)内の各GPUチップレットに静的に分散することを含む、
請求項1の方法(300)。
【請求項6】
前記複数の粗いビン(204、510、512、514、516、518)の各々を割り当てることは、作業負荷バランシングに基づいて、前記複数の粗いビン(204、510、512、514、516、518)の各々を前記GPUチップレットのセット(106)内の各GPUチップレットに動的に分散することを含む、
請求項1の方法(300)。
【請求項7】
割り当てられた前記GPU(106)チップレットにおいて前記複数の粗いビン(204、510、512、514、516、518)の各々をレンダリングすることは、並列に実行される、
請求項1の方法(300)。
【請求項8】
実行可能な命令のセットを具現化するコンピュータ可読記憶媒体であって、
前記実行可能な命令のセットは、
レンダリングされるフレーム(202)のジオメトリを表す複数の粗いビン(204、510、512、514、516、518)の各々と交差するプリミティブについて可視性情報(408)を生成することと、
前記可視性情報(408)をGPUチップレットのセット(106)に提供することであって、前記GPUチップレットのセット(106)の各GPUチップレットは、対応する前記可視性情報(408)に基づいて前記粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングする、ことと、
を少なくとも1つのグラフィックス処理ユニット(GPU)チップレット(106)に行わせる、
コンピュータ可読記憶媒体。
【請求項9】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記複数の粗いビン(204、510、512、514、516、518)の各々の可視性ジオメトリ及び画素フェーズを処理することによって、前記粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングする、
請求項8のコンピュータ可読記憶媒体。
【請求項10】
前記可視性情報(408)は、前記複数の粗いビン(204、510、512、514、516、518)の各々について処理されるプリミティブを含む、
請求項8のコンピュータ可読記憶媒体。
【請求項11】
前記実行可能な命令のセットは、
レンダリングされる前記フレーム(202)の前記ジオメトリから不可視性プリミティブをカリングすることを少なくとも1つのGPUチップレット(106)に行わせる、
請求項8のコンピュータ可読記憶媒体。
【請求項12】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記複数の粗いビン(204、510、512、514、516、518)の静的分散(400)に基づいて、前記複数の粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングするように割り当てられている、
請求項8のコンピュータ可読記憶媒体。
【請求項13】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記GPUチップレットのセット(106)の作業負荷のバランスをとるために、前記複数の粗いビン(204、510、512、514、516、518)の動的分散(500)に基づいて、前記複数の粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングするように割り当てられている、
請求項8のコンピュータ可読記憶媒体。
【請求項14】
前記GPU(106-1)チップレットのセット(106)内の何れかのGPUチップレット(106)は、他の粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングする前記GPUチップレットのセット(106)の別のGPUチップレット(106)と並列に、前記粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングする、
請求項8のコンピュータ可読記憶媒体。
【請求項15】
システム(100)であって、
レンダリングされるフレーム(202)のジオメトリを表す複数の粗いビン(204、510、512、514、516、518)の各々について可視性情報(408)を生成するために可視性モードで動作する第1のグラフィックス処理ユニット(GPU)チップレット(106-1)と、
粗いビンレンダリングモードで動作するGPUチップレットのセット(106)であって、前記GPUチップレットのセット(106)の各GPUチップレットは、前記第1のGPUチップレット(106-1)から前記複数の粗いビン(204、510、512、514、516、518)のうち何れかについての前記可視性情報(408)を受信し、対応する前記可視性情報(408)に基づいて前記複数の粗いビン(204、510、512、514、516、518)のうち前記何れかをレンダリングする、GPUチップレットのセット(106)と、を備える、
システム(100)。
【請求項16】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記複数の粗いビン(204、510、512、514、516、518)のうち前記何れかの可視性ジオメトリ及び画素フェーズを処理することによって、前記複数の粗いビン(204、510、512、514、516、518)のうち前記何れかをレンダリングする、
請求項15のシステム(100)。
【請求項17】
前記GPUチップレットのセット(106)は、前記複数の粗いビン(204、510、512、514、516、518)を並列にレンダリングする、
請求項15のシステム(100)。
【請求項18】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記複数の粗いビン(204、510、512、514、516、518)の静的分散(400)に基づいて、前記複数の粗いビン(204、510、512、514、516、518)のうち前記何れかをレンダリングするように割り当てられている、
請求項15のシステム(100)。
【請求項19】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記GPUチップレットのセット(106)の作業負荷のバランスをとるために、前記複数の粗いビン(204、510、512、514、516、518)の動的分散(500)に基づいて、前記複数の粗いビン(204、510、512、514、516、518)のうち前記何れかをレンダリングするように割り当てられている、
請求項15のシステム(100)。
【請求項20】
前記第1のGPU(106-1)チップレットは、前記可視性情報(408)を生成するために、レンダリングされる前記フレーム(202)の前記ジオメトリから不可視性プリミティブをカリングする、
請求項15のシステム(100)。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、以下の同時係属中の出願:「Coarse/Hybrid/Two-Level Binning as a Mechanism for Distributed Rendering」と題する米国仮特許出願第63/131,976号(代理人整理番号第1458-200579-PR)に関するものであり、その優先権を主張するものであり、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
三次元(three-dimensional、3D)グラフィックを処理するための従来のグラフィックスパイプラインは、プログラマブルシェーダ及び固定機能ハードウェアブロックのシーケンスで形成される。ソフトウェアアプリケーションは、グラフィックスパイプラインによってレンダリングするためのフレームを生成し、グラフィックスパイプラインの前端においてコマンドプロセッサにフレームを提供し、これは、典型的には、グラフィックス処理ユニット(graphics processing unit、GPU)において実装される。フレームは、フレームによって表される画像内の物体の部分を表す三角形又はパッチ等のプリミティブに細分される。例えば、プリミティブは、フレーム内に見えるオブジェクトの3Dモデルの部分を表すことができる。グラフィックスパイプラインは、ドローコールに応じて各プリミティブを処理し、プリミティブのシェーディングを実行するシェーダサブシステムに処理されたプリミティブを提供する。また、グラフィックスパイプラインは、プリミティブ及びビナーのラスタ化を実行し、フレームの異なる部分に関連付けられるビン又はタイルにプリミティブをグループ化する。次いで、プリミティブのビンは、ディスプレイ上にレンダリングされる前に、追加のシェーディングのために、シェーダサブシステムに提供される。ビニングは、画像をレンダリングする際の効率及び速度を増加させるための1つの技術である。
【発明の概要】
【課題を解決するための手段】
【0003】
実施例1:複数の粗いビンの各々についてのプリミティブの可視性情報を生成するために、GPUチップレットのセット内の第1のグラフィックス処理ユニット(GPU)チップレットにおいてレンダリングされるフレームのプリミティブを処理することと、GPUチップレットのセット内の他のGPUチップレットに可視性情報を提供することと、複数の粗いビンの各々を、GPUチップレットのセットの何れかのGPUチップレットに割り当てることと、対応する可視性情報に基づいて、割り当てられたGPUチップレットにおいて複数の粗いビンの各々をレンダリングすることと、を含む、方法。
【0004】
実施例2:複数の粗いビンの各々をレンダリングすることは、複数の粗いビンの各々の可視性プリミティブ及び画素フェーズを処理することを含む、請求項1に記載の方法。
【0005】
実施例3:可視性情報は、複数の粗いビンの各々について処理されるプリミティブを含む、請求項1に記載の方法。
【0006】
実施例4:第1のGPUチップレットによって、レンダリングされるフレームのプリミティブから不可視性プリミティブを間引く(カリングする)ことを更に含む、請求項1に記載の方法。
【0007】
実施例5:複数の粗いビンの各々を割り当てることは、複数の粗いビンの各々をGPUチップレットのセット内のGPUチップレットの各々に静的に分散(statically distributing)することを含む、請求項1に記載の方法。
【0008】
実施例6:複数の粗いビンの各々を割り当てることは、作業負荷バランシングに基づいて、複数の粗いビンの各々をGPUチップレットのセット内のGPUチップレットの各々に動的に分散(dynamically distributing)することを含む、請求項1に記載の方法。
【0009】
実施例7:割り当てられたGPUチップレットにおいて複数の粗いビンの各々をレンダリングすることは、並列に実行される、請求項1に記載の方法。
【0010】
実施例8:実行可能な命令のセットを具現化する非一時的なコンピュータ可読記憶媒体であって、実行可能な命令のセットは、少なくとも1つのグラフィックス処理ユニット(GPU)チップレットを操作して、レンダリングされるフレームのジオメトリを表す複数の粗いビンの各々と交差するプリミティブについての可視性情報を生成し、可視性情報をGPUチップレットのセットに提供するためのものであり、GPUチップレットのセットの各GPUチップレットは、対応する可視性情報に基づいて粗いビンのうち少なくとも1つをレンダリングする、非一時的なコンピュータ可読記憶媒体。
【0011】
実施例9:GPUチップレットのセットの各GPUチップレットは、複数の粗いビンの各々の可視ジオメトリ及び画素フェーズを処理することによって、粗いビンのうち少なくとも1つをレンダリングする、請求項8に記載の非一時的なコンピュータ可読記憶媒体。
【0012】
実施例10:可視性情報は、複数の粗いビンの各々について処理されるプリミティブを含む、請求項8に記載の非一時的なコンピュータ可読記憶媒体。
【0013】
実施例11:少なくとも1つのグラフィックス処理ユニット(GPU)チップレットを操作して、レンダリングされるフレームのジオメトリから不可視性プリミティブを間引くための実行可能な命令のセットを更に備える、請求項8に記載の非一時的なコンピュータ可読記憶媒体。
【0014】
実施例12:GPUチップレットのセットの各GPUチップレットは、複数の粗いビンの静的分散に基づいて、複数の粗いビンのうち少なくとも1つをレンダリングするように割り当てられる、実施例8に記載の非一時的なコンピュータ可読記憶媒体。
【0015】
実施例13:GPUチップレットのセットの各GPUチップレットは、複数の粗いビンの動的分散に基づいて、複数の粗いビンのうち少なくとも1つをレンダリングするように割り当てられて、GPUチップレットのセットの作業負荷のバランスを取る、請求項8に記載の非一時的なコンピュータ可読記憶媒体。
【0016】
実施例14:GPUチップレットのセット内の1つのGPUチップレットは、他の粗いビンのうち少なくとも1つをレンダリングするGPUチップレットのセットの別のGPUチップレットと並列に、粗いビンのうち少なくとも1つをレンダリングする、請求項8に記載の非一時的なコンピュータ可読記憶媒体。
【0017】
実施例15:レンダリングされるフレームのジオメトリを表す複数の粗いビンの各々についての可視性情報を生成するために可視性モードで動作する第1のグラフィックス処理ユニット(GPU)チップレットと、粗いビンレンダリングモードで動作するGPUチップレットのセットであって、GPUチップレットのセットのGPUチップレットの各々は、第1のGPUチップレットから複数の粗いビンのうち何れかについての可視性情報を受信し、対応する可視性情報に基づいて複数の粗いビンのうち何れかをレンダリングする、GPUチップレットのセットと、を備える、システム。
【0018】
実施例16:GPUチップレットのセットのGPUチップレットの各々は、複数の粗いビンのうち何れかの可視性ジオメトリ及び画素フェーズを処理することによって、複数の粗いビンのうち何れかをレンダリングする、請求項15に記載のシステム。
【0019】
実施例17:GPUチップレットのセットは、複数の粗いビンを並列にレンダリングする、請求項15に記載のシステム。
【0020】
実施例18:GPUチップレットのセットの各GPUチップレットは、複数の粗いビンの静的分散に基づいて、複数の粗いビンのうち何れかをレンダリングするように割り当てられる、請求項15に記載のシステム。
【0021】
実施例19:GPUチップレットのセットの各GPUチップレットは、複数の粗いビンの動的分散に基づいて、複数の粗いビンのうち何れかをレンダリングするように割り当てられて、GPUチップレットのセットの作業負荷のバランスをとる、請求項15に記載のシステム。
【0022】
実施例20:第1のGPUチップレットは、可視性情報を生成するために、レンダリングされるフレームのジオメトリから不可視性プリミティブを間引く、請求項15に記載のシステム。
【0023】
本開示は、添付の図面を参照することによって、より良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0024】
図1】いくつかの実施形態による、複数のGPUチップレットを採用する処理システムを例示するブロック図である。
図2】いくつかの実施形態による、図1の処理システム等の処理システムによってレンダリングされるフレーム202の2レベルビニング200の一例を示す図である。
図3】いくつかの実施形態による、2レベルビニングを使用する、図1の処理システム等の処理システムにおける分散型レンダリングの方法のブロック図である。
図4】いくつかの実施形態による、図1のGPUチップレット等の複数のGPUチップレットによるレンダリング中の粗いビンの静的分散のブロック図である。
図5】いくつかの実施形態による、図1のGPUチップレット等の複数のGPUチップレットによるレンダリング中の粗いビンの動的分散のブロック図である。
【発明を実施するための形態】
【0025】
フレームをレンダリングするために(すなわち、ディスプレイパネル等のディスプレイデバイスに転送し、そこで表示するためのフレームを準備するために)、GPUは、三次元(3D)オブジェクトについての情報を、表示のための二次元(two-dimensional、2D)画像フレームに変換する。このプロセスは、少なくともいくつかの場合において、かなりの処理能力及びメモリリソースを必要とする。いくつかの場合には、レンダリング時間を削減するために、GPUはビニングプロセスを使用してプリミティブをレンダリングし、GPUは、画像フレームを領域に分割し、所定の領域と交差するプリミティブを識別し、識別されたプリミティブを所定の領域に対応するビンに配置する。したがって、フレームの各領域は、対応するビンに関連付けられ、ビンは、関連付けられたビンと交差するプリミティブ又はプリミティブの一部を含む。GPUは、ビンに対応するフレームの領域と交差するプリミティブの画素をレンダリングすることによって、ビンごとにフレームをレンダリングする。これは、GPUが、少なくとも場合によっては、より少ないメモリアクセスを必要とすること、キャッシュ使用量を増加させること等によって、フレームをより効率的にレンダリングすることを可能にする。
【0026】
ビニングプロセスの一例は、単一レベルビニングであり、GPUは、プリミティブのシーケンスを受信し、プリミティブを時間的に関連するプリミティブバッチに都合よくセグメント化する。バッチフル条件、状態ストレージフル条件等の所定の条件が満たされるまで、又は、以前にレンダリングされたプリミティブに対する依存性が判定されるまで、順次プリミティブがキャプチャされる。プリミティブバッチビニング(primitive batch binning、PBB)を実行する場合に、レンダリングされたプリミティブを表示する画像フレームは、いくつかのブロックに分割される。画像フレームの各ブロックは、それぞれのビンに関連付けられる。バッチのプリミティブの受信されたシーケンスの各プリミティブは、1つ以上のビンと交差する。バッチ内の受信された各プリミティブに対して、初期ビンインターセプトが計算され、初期ビンインターセプトは、プリミティブが交差する画像フレームの最も左上のビンである。バッチが閉じられた後、処理のための第1のビンが識別される。識別されたビンをインターセプトするプリミティブが処理される。ビンをインターセプトする際に識別された各プリミティブについて、次のビンインターセプトが識別され、識別されたビンによって囲まれたプリミティブに含まれる画素が、詳細なラスタ化のために送信される。次のビンインターセプトは、処理されたプリミティブが交差するラスタ順で次の最も左上のビンである。
【0027】
ビニングプロセスの別の例は、2レベルビニング、すなわち「ハイブリッドビニング」であり、2つのタイプのビニング、すなわち、粗いレベルビニング及び細かいレベルビニングが実行される。いくつかの実施形態では、粗いレベルビニングは、大きなビン(例えば、表示領域全体をカバーするために合計32個のビン)を使用し、これはビニングオーバーヘッドを低減する。粗いビンごとの可視性情報(すなわち、何れのプリミティブがビンにおいて可視であるか)は、第1の粗いビン(すなわち、粗いビン0)のレンダリング中に生成され、他の粗いビンをレンダリングするために使用される。粗いレベルビニングの後に、細かいレベルビニングが各粗いビンに対して順次実行される。いくつかの実施形態では、細かいレベルビニングは、PBBを実行して、PBBベースの細かいレベルビニング中に各粗いビンを細かいビンのアレイ(例えば、64×64画素のサイズを各々有する)に更にビニングすること等によって、各粗いビンをより小さい「細かい」ビンに分割することを伴う。次いで、各粗いビンは、対応する粗いビンに対して生成された、可視性情報等のレンダリング情報を使用してレンダリングされる。いくつかの実施形態では、2レベルビニングは、グラフィックス処理パイプラインのトップで(例えば、頂点処理及びラスタ化の前に)発生し、これは、グラフィックス処理パイプラインの中間で(例えば、頂点処理の後であって、画素シェーディングの前に)発生する単一レベルビニングとは対照的である。
【0028】
一般に、単一レベルビニング及び2レベルビニングの両方において、各粗いビンは、GPUによって順番に(すなわち、一度に1つのビン)処理される。これは、ビン間に相互依存性がない状況、すなわち、任意の他のビンの処理からの入力を必要とせずに各ビンを処理することができる状況では、非効率的である可能性がある。したがって、画像をレンダリングする速度及び効率を高め、したがってユーザエクスペリエンスを向上させるために、ビン処理に並列化を導入することが望ましい。
【0029】
チップレットは、製造コストを削減し、歩留まりを向上させるためにCPUアーキテクチャにおいて成功裏に使用されてきた。なぜなら、CPUの異種計算特性は、CPUコアを、多くの相互通信を必要としない別個のユニットに分離することにより自然に適しているからである。一方、GPU処理は、一般に、並列処理を含む。しかしながら、GPUが処理するジオメトリは、完全並列作業のセクションだけでなく、異なるセクション間の同期順序付けを必要とする作業も含む。したがって、複数の異なるワーキンググループ及びチップレットにわたって並列性を分散させることが困難であるので、異なるスレッド上で作業のセクションを拡散させるGPUプログラミングモデルは、しばしば非効率的である。特に、メモリのコヒーレントビューをアプリケーションに提供するために、システム全体にわたって共有リソースのメモリ内容を同期させることは困難であり、計算コストがかかる。加えて、論理的観点から、アプリケーションは、システムが単一のGPUのみを有するという観点で書かれる。すなわち、従来のGPUが多くのGPUコアを含むとしても、アプリケーションは、単一のデバイスをアドレス指定するようにプログラムされる。したがって、GPUチップレット間の高価な高速相互接続を必要とすることなく並列ビン処理を実行するために、GPUにおいてチップレット技術を使用することが望ましい。
【0030】
図1図5は、GPUチップレットによる2レベルビニングを使用して、GPUチップレット間の高速相互接続を必要としない並列処理を提供するシステム及び方法を例示する。開示されたシステム及び方法は、レンダリングが2つのフェーズ、すなわち可視性フェーズ及び粗いビンレンダリングフェーズに分解される2レベルビニングを利用する。可視性フェーズの間、ドローコールのジオメトリは、可視性情報を生成するために、GPUチップレットのセットのうち第1のGPUチップレットによって処理されるが、他のGPUチップレットは、以前の2レベルビニングパスからの画素作業負荷等のように、無関係の作業負荷を自由に処理できる状態のままである。第1のGPUチップレットによって生成された可視性情報は、各粗いビンに対して何れのプリミティブが処理されるかを指定する。場合によっては、十分なリソースが利用可能である場合、第1のビンの画素フェーズは、可視性フェーズ中に第1のGPUチップレットによってレンダリングされ得る。2レベルビニングの粗いビンレンダリングフェーズの間、各GPUチップレットは、割り当てられたビン及びその画素フェーズの可視ジオメトリを処理することによって、第1のGPUチップレットからの可視性情報に基づいて、それに割り当てられた粗いビンをレンダリングする。GPUチップレットへの粗いビンの分散は、以下でより詳細に説明するように、設計考慮事項及び作業負荷バランシングに応じて、静的又は動的の何れかである。GPUチップレットによって実行される並列処理は、レンダリング速度を増加させ、GPUチップレットの処理帯域幅を最大化する。
【0031】
図1は、いくつかの実施形態による、複数のGPUチップレットを採用する処理システム100を例示するブロック図である。図示した例では、システム100は、命令を実行するための中央処理装置(central processing unit、CPU)102と、例示された3つのGPUチップレット106-1、106-2、106-N(まとめてGPUチップレット106)等の1つ以上のGPUチップレットのアレイ104と、を含む。様々な実施形態では、本明細書で使用される場合、「チップレット」という用語は、限定するものではないが、以下の特性を含む、任意のデバイスを指す。1)チップレットは、完全問題を解くために使用される計算ロジックの一部を含むアクティブシリコンダイを含む(すなわち、計算作業負荷は、これらのアクティブシリコンダイの複数にわたって分散される)、2)チップレットは、同じ基板上にモノリシックユニットとして一緒にパッケージ化され、3)プログラミングモデルは、これらの個別の計算ダイが単一のモノリシックユニットであるという概念を維持する(すなわち、各チップレットは、計算作業負荷を処理するためにチップレットを使用するアプリケーションに個別のデバイスとして露出されない)。様々な実施形態において、1つ以上のGPUチップレットのアレイ104は、従来のCPU、従来のグラフィックス処理ユニット(GPU)及びこれらの組み合わせ等のリソースに関連して、加速された様式で、加速されたグラフィックス処理タスク、データ並列タスク、ネストされたデータ並列タスクに関連付けられた機能及び計算を行う、ハードウェア及び/又はソフトウェアの任意の協働する集合体を含む。
【0032】
様々な実施形態において、CPU102は、バス108を介して、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)等のシステムメモリ110に接続される。しかしながら、システムメモリ110は、スタティックランダムアクセスメモリ(static random access memory、SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。例示する実施形態では、CPU102は、周辺構成要素相互接続(peripheral component interconnect、PCI)バス、PCI-Eバス又は他のタイプのバスとして実装されるバス108を介して、システムメモリ110と、GPUチップレット106-1とも通信する。しかしながら、システム100のいくつかの実施形態は、直接接続を通じて、又は、他のバス、ブリッジ、スイッチ、ルータ等を介してCPU102と通信するGPUチップレット106-1を含む。
【0033】
例示されるように、CPU102は、グラフィックコマンド及びユーザモードドライバ116(又はカーネルモードドライバ等の他のドライバ)を生成するために1つ以上のアプリケーション112を実行する等のいくつかのプロセスを含む。様々な実施形態において、1つ以上のアプリケーション112は、システム100又はオペレーティングシステム(operating system、OS)において作業を生成するアプリケーション等のように、GPUチップレット106の機能を利用するアプリケーションを含む。アプリケーション112は、グラフィカルユーザインターフェース(graphical user interface、GUI)及び/又はグラフィックスシーンをレンダリングするようにGPUチップレット106に命令する1つ以上のグラフィックス命令を含むことができる。例えば、グラフィックス命令は、GPUチップレット106によってレンダリングされる1つ以上のグラフィックスプリミティブのセットを定義する命令を含み得る。
【0034】
いくつかの実施形態では、アプリケーション112は、グラフィックスアプリケーションプログラミングインターフェース(application programming interface、API)114を利用して、ユーザモードドライバ116(又は同様のGPUドライバ)を呼び出す。ユーザモードドライバ116は、1つ以上のグラフィックスプリミティブを表示可能なグラフィックス画像にレンダリングするために、1つ以上のGPUチップレットのアレイ104に1つ以上のコマンドを発行する。ユーザモードドライバ116にアプリケーション112によって発行されたグラフィックス命令に基づいて、ユーザモードドライバ116は、グラフィックスのレンダリングを実行するためにGPUチップレット106の1つ以上の動作を指定する1つ以上のグラフィックスコマンドを生成する。いくつかの実施形態では、ユーザモードドライバ116は、CPU102上で動作しているアプリケーション112の一部である。例えば、ユーザモードドライバ116は、いくつかの実施形態において、CPU102上で動作しているゲームアプリケーションの一部である。同様に、いくつかの実施形態では、カーネルモードドライバ(図示せず)は、CPU102上で動作しているオペレーティングシステムの一部である。
【0035】
図1の図示した実施形態では、パッシブクロスリンク118が、GPUチップレット106(すなわち、GPUチップレット106-1~106-N)を互いに通信可能に結合する。3つのGPUチップレット106が図1に示されているが、チップレットアレイ104内のGPUチップレットの数は、設計上の選択事項であり、他の実施形態では異なる。様々な実施形態では、パッシブクロスリンク118は、チップレット間通信のための相互接続チップ又は他の同様の技術を含む。一般的な動作概要として、CPU102は、バス108を介して単一のGPUチップレット(すなわち、GPUチップレット106-1)に通信可能に結合される。CPU102からチップレット106のアレイ104へのCPU-GPUトランザクション又は通信は、GPUチップレット106-1で受信される。その後、任意のチップレット間通信は、他のGPUチップレット106上のメモリチャネルにアクセスするために、適宜、パッシブクロスリンク118を介してルーティングされる。このようにして、GPUチップレットベースのシステム100は、ソフトウェア開発者の観点から単一のモノリシックGPUとしてアドレス指定可能なGPUチップレット106を含み(例えば、CPU102及び任意の関連付けられたアプリケーション/ドライバは、チップレットベースのアーキテクチャを認識していない)、したがって、プログラマ又は開発者の側で任意のチップレット固有の考慮事項を必要とすることを回避する。
【0036】
図2は、図1の処理システム100のような処理システムによってレンダリングされるフレーム202の2レベルビニング200の一例を示す。2レベルビニングでは、粗いレベルビニング及び細かいレベルビニングの2タイプのビニングが実行される。いくつかの実施形態では、粗いレベルビニングは、大きなビン204(例えば、表示領域全体をカバーするために合計4個のビン)を使用し、これはビニングオーバーヘッドを低減する。各粗いビンにおいて可視であるプリミティブ(例えば、プリミティブ208)の可視性情報は、第1の粗いビン204-1のレンダリング中に生成され、他の粗いビン204をレンダリングするために使用される。細かいレベルビニングは、粗いレベルビニングの後に各粗いビン204に対して実行される。いくつかの実施形態では、細かいレベルビニングは、PBBを実行して、例えば、PBBベースの細かいレベルビニング中に各粗いビンを細かいビン206の4×4アレイにビニングすることによって、各粗いビンをより小さいビン206に分割することを伴う。次いで、各細かいビン206は、対応する粗いビンに対して生成された可視性情報等のレンダリング情報を使用してレンダリングされる。
【0037】
図3は、図1の処理システム100等の処理システムにおいて2レベルビニングを使用する分散型レンダリングの方法300のブロック図である。ブロック302に示すように、フレームをレンダリングする命令は、最初に、処理システム100のGPUチップレット106-1等のGPUチップレット106のうち何れかにおいて受信される。次いで、GPUチップレット106-1は、ブロック304に示されるように、画像フレームを領域に分割し、所定の領域と交差するプリミティブを識別し、識別されたプリミティブを所定の領域に対応する粗いビンに割り当てることによって、フレームのジオメトリを処理する。フレームのジオメトリを処理することの一部として、ブロック306において、全てのジオメトリデータを処理するか、又は、命令とともに提供された位置データのみを処理するかに関する決定が行われる。最小頂点シェーダは、位置データのみが処理されるという決定に応じて、ブロック308において実行される。そうでない場合、ブロック310において、提供されたデータの全てを処理するためにフルシェーダが実行される。ブロック312において、GPUチップレット106-1は、間引き(カリング)を適用して、識別されたがレンダリングされたフレームにおいて可視ではないプリミティブ(すなわち、不可視性プリミティブ)を除去する。ブロック314において、GPUチップレット106-1は、粗いビンごとの可視性情報を生成する。
【0038】
いくつかの実施形態では、ブロック316に示されるように、粗いビンの画素フェーズを実行するのに十分なリソースがGPUチップレット106-1に利用可能であるかどうかの決定が行われる。ブロック318において、十分なリソースが利用可能である場合、最小シェーダがブロック306において実行されたかどうかに関する決定が行われる。十分なリソースが利用可能であり、最小シェーダが実行されなかった場合、GPUチップレット106-1は、ブロック320において、何れかの粗いビンの画素フェーズを実行する。例えば、画素処理及び頂点処理が同じシェーダハードウェアによって実行される場合、頂点及び画素を処理するのに十分なシェーダリソースがあると決定された場合、システムは画素処理に進む。
【0039】
GPUチップレット106-1が2レベルビニングの可視性フェーズを実行している間、他のGPUチップレットは、GPUチップレット106-1によって生成されている可視性情報に直接依存しない他の作業負荷を実行するために利用可能である。例えば、いくつかの実施形態において、GPUチップレット106-2は、GPUチップレット106-1が2レベルビニングの可視性フェーズを実行している間に、前の2レベルビニングパスからの画素作業負荷又は非同期計算作業負荷を処理するが、これは、これらのプロセスが、GPU106-1によって実行される可視性フェーズからの入力を必要としないためである。ブロック322において、GPUチップレット106-1は、ビンごとに何れのプリミティブが処理されるかを指定する可視性情報を、他のGPUチップレット106の各々に提供する。ブロック324において、粗いビンレンダリングモードで動作する各GPUチップレット106は、ビンの可視ジオメトリ及びその画素フェーズを処理することによって、それに割り当てられた粗いビンをレンダリングする。GPUチップレット106-1に割り当てられた全ての粗いビンが粗いビンレンダリングフェーズにおいて処理されると、GPUチップレット106-1は、次のフレーム(すなわち、第2のパス)をレンダリングするための命令を受信するために利用可能になり、他のGPUチップレット106が第1のパス中にそれらに割り当てられた粗いビンを依然としてレンダリングしている間に、次のフレームのジオメトリの処理を開始する。
【0040】
図4は、図1のGPUチップレット106等の複数のGPUチップレットによるレンダリング中の粗いビンの静的分散400のブロック図である。2レベルビニングの可視性フェーズ402中に、GPUチップレット106-1は、粗いビンごとの可視性情報408を生成するために、任意の不可視性プリミティブを間引くとともに、可視性モードで動作して、レンダリングされるフレームのジオメトリを処理する。また、可視性フェーズ402中に、処理システム100の他のGPUチップレット106は、GPUチップレット106-1によって生成されている可視性情報に依存しない他の作業負荷を実行している。粗いビンレンダリングフェーズ404では、各粗いビンは、GPUチップレット106の現在の作業負荷又は利用可能性とは無関係に、何れかのGPUチップレット106に割り当てられる。例えば、GPUチップレット106-1は、粗いビン410及び412をレンダリングするために常に割り当てられ、GPUチップレット106-2は、粗いビン414及び416をレンダリングするために常に割り当てられ、GPUチップレット106-3は、粗いビン418及び420をレンダリングするために常に割り当てられる。粗いビン410~420の静的分散は、粗いビン410~422のうちいくつかがより小さい作業負荷を有し、残りのGPUチップレット106がそれらのそれぞれの粗いビンのレンダリングを完了する間、GPUチップレット106のうちいくつかがある時間アイドルであり得るので、より少ない処理時間しか必要としない場合、非効率性をもたらし得る。しかしながら、粗いビンの静的分散は、ビンを分散するために最小限の処理リソースしか必要とせず、GPUチップレット106間の粗いビンの動的分散の追加の複雑さを回避することができる。
【0041】
図5は、図1のGPUチップレット106等の複数のGPUチップレットによるレンダリング中の粗いビンの動的分散500のブロック図である。2レベルビニングの可視性フェーズ402中に、GPUチップレット106-1は、粗いビンごとの可視性情報408を生成するために、任意の不可視性プリミティブを間引くとともに、可視性モードで動作して、レンダリングされるフレームのジオメトリを処理する。加えて、可視性フェーズ402中、処理システム100の他のGPUチップレット106は、GPUチップレット106-1によって生成されている可視性情報に依存しない他の作業負荷を実行している。粗いビンレンダリングフェーズ304では、各粗いビンは、GPUチップレット106の現在の作業負荷又は利用可能性に基づいて、何れかのGPUチップレット106に割り当てられる。例えば、最初の3つの粗いビン510、512、514の各々は、GPUチップレット106-1、GPUチップレット106-2、GPUチップレット106-3に割り当てられる。残りの粗いビン416及び418は、GPUチップレット106-1、GPUチップレット106-2又はGPUチップレット106-3のうち何れかに、GPUチップレット106の各々に既に割り当てられた粗いビンの作業負荷に基づいて、及び、GPUチップレット106の作業負荷のバランスをとるように割り当てられている粗いビンの作業負荷に基づいて割り当てられる。
【0042】
図5に示される例では、GPUチップレット106-1は、比較的大きい作業負荷を有する粗いビン510が割り当てられ、GPUチップレット106-2は、粗いビン510の作業負荷と比較して比較的小さい作業負荷を有する粗いビン512が割り当てられる。GPUチップレット106-2の全体的な作業負荷をGPUチップレット106-1の作業負荷とバランスをとり、粗いビンレンダリングフェーズ504中のGPUチップレット106のダウンタイムを最小限に抑えるために、中程度の作業負荷を有する粗いビン516がGPUチップレット106-2に割り当てられる。同様に、比較的小さい作業負荷を有する粗いビン518は、GPUチップレット106-3に既に割り当てられている粗いビン514の中程度の作業負荷及び粗いビン518の比較的小さい作業負荷に基づいて、GPUチップレット106-3に割り当てられる。したがって、GPUチップレット106の各々への粗いビンの動的分散は、粗いビンの作業負荷を分析し、GPUチップレット106間の最も効率的な分散を決定するために追加のロジック及び処理を必要とするが、動的分散は、GPUチップレットの作業負荷のバランスをとることによってGPUチップレット106の効率的な使用を最大化する。
【0043】
いくつかの実施形態では、上記の装置及び技術は、図1図4を参照して上述した処理システム100及びGPUチップレット106等の1つ以上の集積回路(integrated circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも称される)を含むシステムに実装される。電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
【0044】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0045】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0046】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0047】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2023-08-23
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法(300)であって、
複数の粗いビン(204、204-1、510、512、514、516、518)の各々についてプリミティブの可視性情報(408)を生成するために、GPUチップレットのセット(106)内の第1のグラフィックス処理ユニット(GPU)チップレット(106-1)においてレンダリングされるフレーム(202)のプリミティブを処理することと、
前記可視性情報(408)を前記GPUチップレットのセット(106)内の他のGPUチップレットに提供することと、
前記複数の粗いビン(204、510、512、514、516、518)の各々を、前記GPUチップレットのセット(106)内の何れかのGPUチップレットに割り当てることと、
対応する前記可視性情報(408)に基づいて、割り当てられた前記GPUチップレット(106)において前記複数の粗いビン(204、510、512、514、516、518)の各々をレンダリングすることと、を含む、
方法(300)。
【請求項2】
前記複数の粗いビン(204、510、512、514、516、518)の各々をレンダリングすることは、前記複数の粗いビン(204、510、512、514、516、518)の各々の可視性プリミティブ及び画素フェーズを処理することを含む、
請求項1の方法(300)。
【請求項3】
前記可視性情報(408)は、前記複数の粗いビン(204、510、512、514、516、518)の各々について処理されるプリミティブを含む、
請求項1又は2の方法(300)。
【請求項4】
1のGPUチップレット(106-1)が、レンダリングされる前記フレーム(202)の前記プリミティブ(208)から不可視性プリミティブをカリングすることを含む、
請求項1~3の何れかの方法(300)。
【請求項5】
前記複数の粗いビン(204、510、512、514、516、518)の各々を割り当てることは、前記複数の粗いビン(204、510、512、514、516、518)の各々を前記GPUチップレットのセット(106)内の各GPUチップレットに静的に分散することを含む、
請求項1~4の何れかの方法(300)。
【請求項6】
前記複数の粗いビン(204、510、512、514、516、518)の各々を割り当てることは、作業負荷バランシングに基づいて、前記複数の粗いビン(204、510、512、514、516、518)の各々を前記GPUチップレットのセット(106)内の各GPUチップレットに動的に分散することを含む、
請求項1~4の何れかの方法(300)。
【請求項7】
割り当てられた前記GPU(106)チップレットにおいて前記複数の粗いビン(204、510、512、514、516、518)の各々をレンダリングすることは、並列に実行される、
請求項1~6の何れかの方法(300)。
【請求項8】
実行可能な命令のセットを具現化するコンピュータ可読記憶媒体であって、
前記実行可能な命令のセットは、
レンダリングされるフレーム(202)のジオメトリを表す複数の粗いビン(204、510、512、514、516、518)の各々と交差するプリミティブについて可視性情報(408)を生成することと、
前記可視性情報(408)をGPUチップレットのセット(106)に提供することであって、前記GPUチップレットのセット(106)の各GPUチップレットは、対応する前記可視性情報(408)に基づいて前記粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングする、ことと、
を少なくとも1つのグラフィックス処理ユニット(GPU)チップレット(106)に行わせる、
コンピュータ可読記憶媒体。
【請求項9】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記複数の粗いビン(204、510、512、514、516、518)の各々の可視性ジオメトリ及び画素フェーズを処理することによって、前記粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングする、
請求項8のコンピュータ可読記憶媒体。
【請求項10】
前記実行可能な命令のセットは、
レンダリングされる前記フレーム(202)の前記ジオメトリから不可視性プリミティブをカリングすることを少なくとも1つのGPUチップレット(106)に行わせる、
請求項のコンピュータ可読記憶媒体。
【請求項11】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記複数の粗いビン(204、510、512、514、516、518)の静的分散(400)に基づいて、又は、前記GPUチップレットのセット(106)の作業負荷のバランスをとるために、前記複数の粗いビン(204、510、512、514、516、518)の動的分散(500)に基づいて、前記複数の粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングするように割り当てられている、
請求項8~10の何れかのコンピュータ可読記憶媒体。
【請求項12】
前記GPU(106-1)チップレットのセット(106)内の何れかのGPUチップレット(106)は、他の粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングする前記GPUチップレットのセット(106)の別のGPUチップレット(106)と並列に、前記粗いビン(204、510、512、514、516、518)のうち少なくとも1つをレンダリングする、
請求項8~11の何れかのコンピュータ可読記憶媒体。
【請求項13】
システム(100)であって、
レンダリングされるフレーム(202)のジオメトリを表す複数の粗いビン(204、510、512、514、516、518)の各々について可視性情報(408)を生成するために可視性モードで動作する第1のグラフィックス処理ユニット(GPU)チップレット(106-1)と、
粗いビンレンダリングモードで動作するGPUチップレットのセット(106)であって、前記GPUチップレットのセット(106)の各GPUチップレットは、前記第1のGPUチップレット(106-1)から前記複数の粗いビン(204、510、512、514、516、518)のうち何れかについての前記可視性情報(408)を受信し、対応する前記可視性情報(408)に基づいて前記複数の粗いビン(204、510、512、514、516、518)のうち前記何れかをレンダリングする、GPUチップレットのセット(106)と、を備える、
システム(100)。
【請求項14】
前記GPUチップレットのセット(106)の各GPUチップレットは、前記複数の粗いビン(204、510、512、514、516、518)の静的分散(400)に基づいて、又は、前記GPUチップレットのセット(106)の作業負荷のバランスをとるために、前記複数の粗いビン(204、510、512、514、516、518)の動的分散(500)に基づいて、前記複数の粗いビン(204、510、512、514、516、518)のうち前記何れかをレンダリングするように割り当てられている、
請求項13のシステム(100)。
【請求項15】
前記第1のGPU(106-1)チップレットは、前記可視性情報(408)を生成するために、レンダリングされる前記フレーム(202)の前記ジオメトリから不可視性プリミティブをカリングする、
請求項13又は14のシステム(100)。
【国際調査報告】