TWI637346B - 圖形處理系統 - Google Patents
圖形處理系統 Download PDFInfo
- Publication number
- TWI637346B TWI637346B TW103129759A TW103129759A TWI637346B TW I637346 B TWI637346 B TW I637346B TW 103129759 A TW103129759 A TW 103129759A TW 103129759 A TW103129759 A TW 103129759A TW I637346 B TWI637346 B TW I637346B
- Authority
- TW
- Taiwan
- Prior art keywords
- tile
- tiles
- processing
- sample
- sampling
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 535
- 239000000872 buffer Substances 0.000 claims abstract description 210
- 238000009877 rendering Methods 0.000 claims abstract description 125
- 238000005070 sampling Methods 0.000 claims description 174
- 238000000034 method Methods 0.000 claims description 104
- 238000003860 storage Methods 0.000 claims description 95
- 230000008569 process Effects 0.000 claims description 62
- 238000004040 coloring Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 6
- 238000013144 data compression Methods 0.000 claims description 4
- 230000006837 decompression Effects 0.000 claims description 4
- 230000008685 targeting Effects 0.000 claims 2
- 238000003491 array Methods 0.000 claims 1
- 239000012634 fragment Substances 0.000 description 52
- 230000006870 function Effects 0.000 description 21
- 230000003111 delayed effect Effects 0.000 description 16
- 238000012360 testing method Methods 0.000 description 15
- 238000002156 mixing Methods 0.000 description 7
- 230000002776 aggregation Effects 0.000 description 6
- 238000004220 aggregation Methods 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 101100446506 Mus musculus Fgf3 gene Proteins 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 229920001169 thermoplastic Polymers 0.000 description 1
- 239000004416 thermosoftening plastic Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本發明係有關於一種圖形處理系統。當在基於圖塊的圖形處理流水線中處理圖塊的集合以生成輸出時,針對圖塊的集合中的一個或更多個圖塊,所述流水線渲染包含將在處理操作中使用的數據的一個或更多個渲染目標(602),並且將所述渲染目標儲存在圖塊緩衝器中(604)。所述流水線還儲存一個或多個渲染目標的一些而非全部的採樣位置值,以在處理圖塊的集合中的相鄰圖塊時使用(606)。所述流水線然後使用所儲存的一個或多個渲染目標(608)和來自圖塊的集合中的另一相鄰圖塊的一個或更多個儲存的採樣位置值對所述圖塊執行處理操作,以生成所述圖塊的輸出(612)。
Description
本發明是關於一種圖形處理系統,並且特別地關於基於圖塊(tile)的圖形處理系統。
如本領域中已知的那樣,通常通過首先將待生成的輸出(諸如待顯示的幀)劃分成多個類似的基本分量(所稱的“圖元(primitive)”)以使得能夠更容易地執行圖形處理操作。這些“圖元”通常形式為簡單的多邊形,諸如三角形。
圖形圖元通常由圖形處理系統的應用程序接口使用從要求圖形輸出的應用(例如遊戲)接收到的圖形繪製指令(請求)來生成。
每個圖元在這個階段通常由一組頂點來定義和表示。圖元的每個頂點與表示該頂點的一組數據(諸如位置、顏色、紋理及其它屬性數據)相關聯。這個數據然後例如在對頂點(頂點所涉及的(一個或更多個)圖元)進行光柵化和渲染時使用,以便生成期望的圖形處理系統輸出。
在生成並定義了圖元和它們的頂點後,它們能夠被圖形處理系統處理,例如以便顯示幀。
這個處理基本上涉及確定覆蓋待處理的輸出區域的採樣點的陣列的哪些採樣點被圖元覆蓋,然後確定每個採樣點在該採樣點處表示圖元所應具有的外觀(例如,在其顏色等方面)。這些處理通常分別被稱為光柵化和渲染。
光柵化處理確定應被用於圖元的採樣位置(即,要被用於在輸出(例如待顯示的場景)中表示圖元的採樣點的(x,y)位置)。這通常使用圖元的頂點的位置來完成。
接著,渲染處理得到表示採樣點處的圖元所必需的諸如紅、綠和藍(RGB)顏色值和“Alpha(阿爾法)”(透明度)值的數據(即,對每個採樣點“著色”)。如本領域中已知的那樣,這可以涉及應用紋理、使採樣點數據值混合等。
(在圖形文獻中,術語“光柵化(rasterisation)”有時被用來表示圖元轉換到採樣位置及渲染兩者。然而,在本文中,“光柵化”將僅被用於表示將圖元數據轉換為採樣點地址。)
這些處理通常通過測試一個採樣點的或超過一個的採樣點的集合,然後針對所發現的被包括在關注的(正在被測試的)所述圖元內部(被其覆蓋)的採樣點的採樣點的每個集合生成離散圖形實體,所述離散圖形實體通常稱為被執行了圖形處理操作(諸如渲染)的“片段(fragment)”。因此,被覆蓋的採樣點實際上被處理為片段,所述片段將被用來渲染所關注的所述採樣點處的圖元。
“片段”是經過渲染處理(渲染流水線)的圖形實體。根據圖形處理系統是如何構造的,所生成和被處理的各個片段例如可以表示單個採樣點或多個採樣點的集合。
(因此,“片段”實際上是如內插到圖元的一個或多個給定輸出空間採樣點的圖元數據的集合(與所述圖元數據相關聯)。片段還可以包括在關注的所述採樣點(片段位置)處對圖元著色所需要的每圖元的數據和其它狀態數據。每個圖形片段通常可以是與輸出(例如輸出幀)的“像素”相同的大小和位置(因為當像素是最終顯示中的奇異點(singularity),圖形處理器所操作(渲染)的“片段”與顯示器的像素之間可以存在一對一映射)。然而,情況可以是這樣的,即,在片段與顯示器像素之間不存在一對一對應,例如在顯示最終圖像之前在渲染的圖像上執行特定形式的後處理(諸如下採樣)的情況下。)
(情況還可能是,由於給定位置處的例如來自不同的重疊圖元的多個片段可彼此影響(例如,由於透明度和/或混合),最終的像素輸出可能取決於像素位置處的多個或全部片段。)
(相應地,可存在採樣點與顯示器的像素之間的一對一對應,但是更典型地,可能不存在採樣點與顯示器像素之間的一對一對應,因為可以對渲染的採樣值執行下採樣以生成用於顯示最終圖像的輸出像素值。類似地,如果給定位置處的例如來自不同的重疊圖元的多個採樣點值可以彼此影響(例如,由於透明度和/或混合),則最終的
像素輸出還將取決於該像素位置處的多個重疊的採樣值。)
如本領域中已知的那樣,圖形處理系統和圖形處理器通常以圖形處理流水線的形式提供,所述圖形處理流水線具有用於執行生成所期望的一組輸出圖形數據(例如可以表示待顯示的幀中的全部或一部分)所必需的圖形處理功能的多個處理級,所述圖形處理功能諸如是取回輸入數據、幾何處理、頂點著色、光柵化、渲染等。
圖形處理流水線的處理級例如可以是固定功能單元(硬件)的形式,或者所述功能單元中的一些或全部可以是可編程的(用能夠被編程為執行所期望的操作的可編程電路來提供)。例如,圖形處理流水線可以包括用於執行期望的頂點和/或片段著色操作的可編程頂點和/或片段著色器。
基於圖塊的圖形處理流水線還將包括所謂的圖塊緩衝器,該圖塊緩衝器將渲染的片段數據儲存在流水線的末端直到給定圖塊完成並且寫出到外部儲存器(諸如幀緩衝器)以供使用為止。這個本地流水線儲存器用於在數據被最終導出到外部儲存器之前在本地保持片段數據,並且典型的形式是針對這個目的而留出的片上RAM。
圖形處理流水線將典型地具有為了用作圖塊緩衝器而留出的RAM的固定分配。這可以包括例如一個或更多個顏色緩衝器以及深度和/或深度與模版緩衝器,所述一個或更多個顏色緩衝器中的每一個都具有適於儲存一個被渲染的圖塊的顏色(RGB或RGBa)數據,而深度和/或
深度與模版緩衝器用於儲存圖塊的深度和/或模版數據。
為了便於將渲染的圖形數據從圖塊緩衝器寫到外部儲存器(諸如幀緩衝器),圖形處理流水線將典型地包括出於這個目的而耦合到圖塊緩衝器流水線儲存器的寫出電路。圖形處理流水線還可以設置有固定功能下採樣電路以用於在本地儲存的數據需要被寫出到外部儲存器時之前對本地儲存的數據進行下採樣(例如,可以是出於抗疊(anti aliasing)目的以過採樣的或多重採樣的方式渲染待顯示的幀的情況)。
越來越期望在執行圖形處理時執行所謂的“延遲著色(deferred shading)”。在進行延遲著色時,應用執行多次渲染操作(pass)。它在第一渲染操作中使用多個渲染目標以向單獨的多個渲染目標輸出顏色、深度、表面法線以及潛在地其它屬性。這些渲染輸出然後通常被儲存在一組緩衝器中(例如在主儲存器中)以供使用,所述緩衝器通常被稱為G-緩衝器(通用緩衝器)。來自第一渲染操作的輸出然後被讀回圖形處理流水線來做複雜的光線計算和合成以在第二渲染操作中產生最終結果。這需要大量帶寬來讀寫全部的渲染目標(因為應用將通常例如在第一操作中寫出多個渲染目標,並且然後在第二操作中將渲染目標用作紋理來生成最終結果)。
在低功率和便攜式裝置中的圖形處理器中,將數據從圖形處理流水線寫入外部儲存器的帶寬成本和用於將數據從外部儲存器讀取到圖形處理流水線的本地儲存器
以用於延遲著色的反向操作的帶寬成本可能是重大問題。帶寬消耗可以是熱量和功率消耗的較大來源,因此通常期望設法降低嵌入式圖形處理系統中用於外部儲存器讀寫的帶寬消耗。
已提出了各種技術來設法降低圖形處理系統中用於外部儲存器讀寫的帶寬消耗。這些技術例如包括使用紋理和幀緩衝器壓縮來設法減少必須寫/讀的數據量,和/或設法消除不必要的外部儲存器(例如幀緩衝器)讀寫事務(操作)。
儘管有這些已知的技術,申請人相信對於在圖形處理流水線中特別是在基於圖塊的圖形處理流水線中執行例如延遲著色的改進的技術而言,仍然存在進一步的改進空間。
根據本發明的第一方面,提供了一種操作基於圖塊的圖形處理流水線的方法,所述基於圖塊的圖形處理流水線包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的多個圖形片段,每個圖形片段都與一個或更多個採樣點相關聯,所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的
片段數據;以及一寫出級,被構造成將所述圖塊緩衝器中儲存的數據寫到所述外部儲存器;該方法包括以下步驟:所述圖形處理流水線在處理圖塊的集合以生成輸出時,針對所述圖塊的集合中的第一圖塊:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣點陣列相對應的採樣位置值陣列;使用所儲存的至少一個渲染目標對所述圖塊執行處理操作生成針對所述圖塊的輸出;以及儲存所述圖塊的所述至少一個渲染目標中的一個或多個渲染目標的一些但非全部的採樣位置值以在處理所述圖塊的集合中的至少一個其它圖塊時使用;並且針對所述圖塊的集合中的另一個圖塊:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣點陣列相對應的採樣位置值陣列;以及使用所儲存的至少一個渲染目標和來自所述第一圖塊的被儲存以在處理所述圖塊的集合中的另一個圖塊時使用的所述採樣位置值中的一個或更多個,對所述另一個圖塊執行處理操作以生成針對所述另一個圖塊的輸出。
根據本發明的第二方面,提供了一種基於圖塊的圖形處理流水線,包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的多個圖形片段,每個圖形片段都與一個或更多個採樣點相關聯,所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存儲存渲染的片段數據;以及一寫出級,被構造成將所述圖塊緩衝器中儲存的數據寫到所述外部儲存器;其中,所述圖形處理流水線被構造成在處理圖塊的集合以生成輸出時:針對所述圖塊的集合中的第一圖塊:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣點陣列相對應的採樣位置值陣列;使用所儲存的至少一個渲染目標對所述圖塊執行處理操作以生成針對所述圖塊的輸出;以及儲存所述圖塊的所述至少一個渲染目標中的一個或多個渲染目標的一些但非全部的採樣位置值,以在處理所述圖塊的集合中的至少另一個圖塊時使用;並且
針對所述圖塊的集合中的另一個圖塊:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與所述圖塊的採樣點陣列相對應的採樣位置值陣列;以及使用所儲存的至少一個渲染目標和來自所述第一圖塊的被儲存以在處理所述圖塊的集合中的另一個圖塊時使用的所述採樣位置值中的一個或更多個,對所述另一個圖塊執行處理操作以生成針對所述另一個圖塊的輸出。
本發明涉及基於圖塊的圖形處理流水線,其中當正在渲染圖塊的集合以生成輸出時,使用針對給定圖塊而渲染的數據來執行處理操作,所述處理操作用於為提供針對圖塊的輸出結果。如將在下面進一步討論的,所述處理操作可以包括例如延遲著色操作、壓縮操作、圖像處理操作等。
然而,在本發明中,並且在針對給定圖塊的處理操作而生成針對關注的圖塊的一個或多個渲染目標並使用所述一個或多個渲染目標中,針對一個圖塊的一個或多個渲染目標而生成的採樣位置值中的一些但非全部的採樣位置值被儲存以在執行針對另一個圖塊(例如且優選地為相鄰的圖塊)執行處理操作時使用。然後,當另一個圖塊(例如,相鄰圖塊)將被處理時,所儲存的前一個圖塊的採樣位置值在處理該另一個圖塊時被使用。這具有能夠以具有更高的帶寬和儲存器效率的方式在基於圖塊的圖形處
理流水線中執行諸如延遲著色操作的處理操作的效果,如將在下面進一步討論的那樣。
特別地,本發明例如能夠使得延遲著色操作能夠在基於圖塊的圖形處理系統中在例如無需儲存和後續再儲存所有已渲染圖塊數據的情況下執行。因此,本發明能夠有利於以降低的外部帶寬成本執行這樣的操作,而不寫出和讀回龐大的G-緩衝器,從而使得這些技術能夠被應用在嵌入的空間中。這進而能夠導致提高的系統性能和減少的功率消耗。
申請人已特別地認識到,可由圖形處理流水線應用的一些處理操作可能需要與例如鄰近特定採樣位置的採樣位置相對應的採樣位置值。申請人進一步認識到,在基於圖塊的系統中,特定的採樣位置(例如在正在被處理的特定圖塊的邊緣處或附近的採樣位置)的相鄰採樣位置中的一些採樣位置實際上可以是在與正在被處理的特定圖塊相鄰的圖塊中。本發明通過儲存為了處理另一個圖塊(例如,相鄰圖塊)而針對給定圖塊所生成的採樣位置值中的一些而非全部的採樣位置值來對此進行解決。以這種方式,在處理相鄰圖塊時所需的採樣位置值可由圖形處理流水線使用。
然而,申請人認識到,沒必要儲存圖塊的全部已渲染數據以在執行諸如延遲著色的處理操作時與後續圖塊一起使用。因此,通過僅儲存來自前一圖塊的採樣位置值中的一些而非全部,避免了完整的圖塊的數據(例如G-
緩衝器)的儲存以及寫出和讀回。與例如簡單地儲存所有已渲染圖塊數據以供以後使用相比,這使得處理操作(例如延遲著色)能夠以具有更高的帶寬和儲存器效率的方式執行。
本發明同樣擴展到儲存針對給定圖塊生成的採樣位置值以在處理相鄰圖塊時使用的操作。
因此,根據本發明的另一方面,提供了一種操作基於圖塊的圖形處理流水線的方法,所述基於圖塊的圖形處理流水線包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的多個圖形片段,每個圖形片段都與一個或更多個採樣點相關聯,所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,被構造成將儲存在所述圖塊緩衝器中的數據寫到所述外部儲存器;該方法包括以下步驟:所述圖形處理流水線在處理圖塊的集合以生成輸出時:針對所述圖塊的集合中的至少一個圖塊:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣點陣
列相對應的採樣位置值陣列;使用所儲存的至少一個渲染目標中的至少一個對所述圖塊執行處理操作以生成針對所述圖塊的輸出;以及儲存所述圖塊的所述至少一個渲染目標中的一個或多個渲染目標的一些而非全部的採樣位置值,以在處理所述圖塊的集合中的另一個圖塊時使用。
根據本發明的另一方面,提供了一種基於圖塊的圖形處理流水線,包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的多個圖形片段,每個圖形片段都與一個或更多個採樣點相關聯,所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,被構造成將儲存在所述圖塊緩衝器中的數據寫到所述外部儲存器;其中,所述圖形處理流水線被構造成在處理圖塊的集合以生成輸出時:針對所述圖塊的集合中的至少一個圖塊:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣點陣
列相對應的採樣位置值陣列;使用所儲存的至少一個渲染目標中的至少一個對所述圖塊執行處理操作以生成針對所述圖塊的輸出;以及儲存所述圖塊的所述至少一個渲染目標中的一個或多個渲染目標的一些而非全部的採樣位置值以在處理所述圖塊的集合中的另一個圖塊時使用。
相應地,本發明同樣擴展到在處理圖塊時對來自前一圖塊的儲存的採樣位置值的使用。
因此,根據本發明的另一方面,提供了一種操作基於圖塊的圖形處理流水線的方法,所述基於圖塊的圖形處理流水線包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的多個圖形片段,每個圖形片段都與一個或更多個採樣點相關聯,所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,被構造成將儲存在所述圖塊緩衝器中的數據寫到所述外部儲存器;該方法包括以下步驟:所述圖形處理流水線在處理圖塊的集合以生成輸出時:針對所述圖塊的集合中的至少一個圖塊:
渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣點陣列相對應的採樣位置值陣列;以及從儲存器讀取來自針對所述圖塊的集合中的之前處理的圖塊而生成的一個或更多個渲染目標的一些而非全部的採樣位置值;以及使用所述圖塊的所儲存的至少一個渲染目標中的至少一個和來自所述圖塊的集合中的之前處理的圖塊的一個或更多個渲染目標的讀取的採樣位置值,對所述圖塊執行處理操作以生成針對所述圖塊的輸出。
根據本發明的另一方面,提供了一種基於圖塊的圖形處理流水線,包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的多個圖形片段,每個圖形片段都與一個或更多個採樣點相關聯,所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,被構造成將儲存在所述圖塊緩衝器中的數據寫到所述外部儲存器;其中,所述圖形處理流水線被構造成在處理圖塊的集
合以生成輸出時:針對所述圖塊的集合中的至少一個圖塊:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣點陣列相對應的採樣位置值陣列;從儲存器讀取來自針對所述圖塊的集合中的之前處理的圖塊而生成的一個或更多個渲染目標的一些而非全部的採樣位置值;以及使用所述圖塊的所儲存的至少一個渲染目標中的至少一個和來自所述圖塊的集合中的之前處理的圖塊的一個或更多個渲染目標的讀取的採樣位置值,對所述圖塊執行處理操作以生成針對所述圖塊的輸出。
圖形處理流水線的光柵化器如本領域中已知的那樣生成待渲染的圖形片段以生成針對所期望的圖形輸出(如待顯示的幀)的採樣點的渲染的圖形數據。由光柵化器生成的每個圖形片段都與圖形輸出的採樣點的集合相關聯,並且將被用於生成針對與所述片段相關聯的採樣點的集合中的採樣點中的一個或更多個採樣點的渲染的圖形數據。
光柵化器可以被構造成生成片段以按照任何期望的且適合的方式進行渲染。如本領域中已知的那樣,光柵化器將例如接收待光柵化的圖元,對照採樣點位置的集合來測試那些圖元,並且因此生成表示所述圖元的片
段。
如在本領域中已知的那樣,渲染器應處理由光柵化器生成的片段以針對所述片段表示(覆蓋)的採樣點生成渲染的片段數據。這些渲染處理可包括例如片段著色(shading)、混合、紋理映射等。在優選實施方式中,渲染器採用可編程片段著色器的形式或者包括可編程片段著色器。
如本領域中已知的那樣,圖塊緩衝器將儲存正在考慮的圖塊的採樣值的陣列或多個陣列。圖塊緩衝器將儲存採樣位置陣列的數據值,其中採樣位置的各個集合例如並且優選地與已被渲染的片段數據所涉及的輸出數據陣列的相應像素相對應並且相關聯。
這些採樣值通常並且在優選實施方式中被組合成分別與正在考慮的圖塊中的相應的(例如顯示器)像素相關聯的多個採樣值的集合(諸如多個2x2個採樣值的組)。採樣值例如可以包括顏色值(顏色緩衝器)、深度值(深度緩衝器)等。
如在本領域中已知的那樣,寫出級(單元)工作以將圖塊緩衝器中的數據(在圖塊緩衝器中的數據完成後)寫出到外部(主)儲存器(例如,幀緩衝器)。如在本領域中已知的那樣,必要時,這可以包括以固定方式或以可變方式將圖塊緩衝器中的採樣值下採樣(平均)為待寫入主儲存器(例如幀緩衝器)的最後輸出(像素)值和/或其它輸出。
在本發明中處理的圖塊的集合可以是任何期望且適合的圖塊集合,所述圖塊一起組成將使用圖形處理流水線生成的輸出(諸如期望的渲染輸出)。在一個優選實施方式中,輸出是例如待顯示的輸出幀。在另一優選實施方式中,所述輸出是紋理。圖塊集合優選地包括超過兩個圖塊,並且優選地包括超過三個圖塊。
圖塊能夠採用任何期望且適合的形狀。然而,在優選實施方式中,圖塊是矩形(包括並且優選為正方形)。每個圖塊可以是W個採樣位置寬(在水平方向上)乘H個採樣位置高(在垂直方向上)。在優選實施方式中,W是16個採樣位置和/或H是16個採樣位置。必要時,待生成的不同輸出能夠使用不同尺寸的圖塊。
優選地對正在被處理的圖塊集合中的每個圖塊適當地執行本發明的方式的操作以生成輸出。因此,在優選實施方式中,在圖塊集合包括四個或更多個圖塊的情況下,針對圖塊集合中的圖塊中的兩個圖塊或更多個(針對多個圖塊),本發明包括(並且圖形處理流水線被構造成):渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將至少一個渲染目標儲存在圖塊緩衝器中;儲存所述圖塊的至少一個渲染目標中的一個或多個渲染目標的一些而非全部的儲存採樣位置值以在處理圖塊集合中的至少一個其它圖塊時使用;以及使用所儲存的至少一個或多個渲染目標和來自圖塊集合中的至少一個其它圖塊的一個或更多個儲存的採樣位置
值對所述圖塊執行處理操作,以輸出針對所述圖塊的輸出。
在優選實施方式中,針對正在被處理的圖塊集合中的每個圖塊執行這個操作,對所述集合中的要處理的第一圖塊(不存在任何先前處理的圖塊)和所述集合中的要處理的最後一個圖塊(不存在待處理的任何後續圖塊)進行保存。
圖塊的一個或多個渲染目標的採樣位置值中的一些而非全部被儲存以在處理時使用的所述其它一個圖塊或多個圖塊可以是圖塊集合中的任一個或多個期望的其它圖塊。然而,在特別優選的實施方式中,是圖塊集合中的相鄰的一個或多個圖塊。因此,在特別優選的實施方式中,本發明包括為針對圖塊生成的至少一個渲染目標的一個或多個渲染目標儲存採樣位置值中的一些而非全部以在處理圖塊集合中的相鄰的(至少一個相鄰的)圖塊時使用。相應地,處理操作使用來自另一個(例如第一)圖塊的儲存的採樣位置值所針對的圖塊集合中的另一圖塊優選地包括所述圖塊集合中的與所述圖塊(該圖塊被儲存了採樣位置值且所述採樣位置值正被用於處理操作)相鄰的圖塊。
如在本領域中已知的那樣,圖塊的渲染目標(或多個渲染目標)將包括與圖塊所對應(表示)的採樣位置相對應的採樣位置值的陣列。例如,取決於正在執行的特定處理操作,採樣位置值可以包括例如深度值、顏色值(RGB值)、法線值、透明度值等中的一個或更多個。
可以以任何期望和適合的方式得到渲染目標的採樣位置值。在優選實施方式中,採樣位置值是通過在所述圖塊的採樣位置方面執行一個或更多個渲染處理而得到的。一個或更多個渲染處理可以包括例如紋理化、片段著色以及混合中的一個或更多個。
對包含用於處理操作的數據的輸入數據渲染目標(或多個)的渲染能夠按照需要來觸發和執行,例如並優選地通過正常方式觸發所述圖形處理流水線的適當渲染操作。
取決於處理操作的性質,可以按照需要來選擇針對圖塊生成的用於處理操作的渲染目標的數量。對於某些處理操作,諸如數據(例如紋理)壓縮或解壓縮,每個圖塊可能僅需要單個渲染目標(例如,包含待壓縮或解壓縮的紋理或圖像)。另一方面,對於延遲著色操作,例如,針對每個圖塊可能需要並生成多個渲染目標(因此,多個渲染目標中的每一個的一些而非全部的採樣位置數據將被儲存以在處理相鄰圖塊時使用)。在延遲著色操作的情況下,輸入數據渲染目標可以包括例如顏色數據、深度數據、曲面法線、其它屬性等。
在圖塊需要多個渲染目標情況下,那些渲染目標優選地全部生成並同時儲存在圖塊緩衝器中。因此,在優選實施方式中,圖塊緩衝器被構造成能夠(並且可構造成)同時地儲存多個渲染目標。
圖塊的多個渲染目標可以以任何適合且期望
的方式儲存在圖塊緩衝器中。例如,圖塊緩衝器可以被調整大小以便容納多個顏色緩衝器(每個都能夠用來儲存渲染目標)。因此,圖塊緩衝器中可以存在為相應的渲染目標留出的固定分配。然而,在優選實施方式中,這可以按照本申請人的於2013年5月2日提交且發明名稱為Graphics Processing Systems(圖形處理系統)的美國專利申請No.13/875831中描述的方式完成,通過引用的方式將其整體併入本文中。
因此,在優選實施方式中,圖塊緩衝器包括被分配的量的儲存器以用作為圖塊緩衝器,並且圖形處理系統(圖形處理流水線是所述圖形處理系統的一部分)包括儲存器分配器,所述儲存器分配器被構造成針對要由圖形處理系統生成的渲染輸出確定要生成的每個渲染目標的圖塊數據儲存要求,並且可操作為基於所述確定而將儲存器的被分配用於圖塊緩衝器的部分分配給渲染目標中的相應目標,其中圖形處理流水線為渲染輸出而生成相應的渲染目標的渲染的圖塊數據,然後將渲染的圖塊數據儲存在圖塊緩衝器的分配給相應渲染目標的部分中。
在這些實施方式中,圖形處理流水線的驅動程序優選地執行確定和圖塊緩衝器儲存器分配(驅動程序是儲存器分配器)。
通過將圖塊緩衝器儲存器空間內的不同地址分配給渲染目標,圖塊緩衝器在不同的渲染目標之間被優選地按比例分配,並且每個渲染目標優選地具有與它相關
聯的渲染目標描述符形式的狀態信息,該狀態信息指示所述渲染目標的數據應該被寫入的圖塊緩衝器區(圖形處理流水線的處理級然後使用來確定在哪裡儲存所述渲染目標的渲染的圖塊數據)。
使用圖塊數據執行的處理操作可以是任何期望且適合的處理操作。在優選實施方式中,它是以下中的一項:延遲著色操作;數據壓縮或解壓縮操作;以及圖像處理操作。在優選實施方式中,它是延遲著色操作,諸如延遲打光(deferred lighting)操作。
能夠按照需要來執行處理操作,例如取決於處理操作的性質。例如,圖形處理流水線能夠具有執行處理操作的固定功能處理硬件(並且在一個優選實施方式中情況是這樣的)。
然而,在特別優選的實施方式中,圖形處理流水線包括可操作為(能夠被編程為)執行處理操作的可編程處理級。因此,在優選實施方式中,圖形處理流水線包括可編程處理級,該可編程處理級可操作為響應於一個或更多個圖形程序指令,讀取儲存在圖塊緩衝器中的數據(例如,優選地,從圖塊緩衝器中的一個或更多個(或者兩個或更多個)渲染目標讀取數據),並且從來自先前處理過的例如相鄰的一個或更多個圖塊所被儲存的儲存器的儲存的數據值讀取數據,並且接著使用讀取的數據來執行處理操作(例如,優選地,延遲著色操作)。
在一個優選實施方式中,處理操作針對圖塊使
用一個渲染目標。在另一優選實施方式中,處理操作針對圖塊使用多個渲染目標。
處理操作優選地得到圖塊的一個或超過一個輸出值。每個輸出值優選地分別對應於圖塊的採樣位置。
在一個優選實施方式中,處理操作得到圖塊的採樣位置值的輸出陣列,其中所述採樣位置值例如優選地與圖塊的每個採樣位置相對應。在另一優選實施方式中,處理操作得到圖塊的單個或僅幾個輸出值。在這種情況下,一個或更多個輸出值優選地包括所關注的圖塊的採樣位置中的一些而非全部的採樣位置的一個或多個輸出值。
所述一個或多個輸出值能夠以任何期望且適合的方式從採樣位置值得到。
在優選實施方式中,處理操作使用來自渲染目標(或多個目標)的採樣位置值的集合(核,kernel)來得到輸出值(和每個輸出值)。被優選地使用的採樣位置值的集合優選地包括採樣位置值陣列(例如,採樣位置值的3x3陣列),其包括正在被生成輸出值的採樣位置。因此,在優選實施方式中,處理操作使用來自(多個)採樣位置(來自一個或來自超過一個的渲染目標)的集合的採樣位置值來生成針對給定採樣位置的輸出值,並且正在被生成輸出值的採樣位置優選地是所述採樣位置的集合中的正在被用來生成輸出值的採樣位置中的一個。
能夠從要被使用以得到輸出值(和每個輸出值)的每個渲染目標使用相同的採樣位置值集合(核),或者能
夠在得到輸出值(用於處理操作)時從不同的渲染目標使用不同的採樣位置值集合(核)。
在一些實施方式中,用於產生給定採樣位置的輸出結果的採樣位置集合(核)可以圍繞所述採樣位置(即,正在被處理的採樣位置可以在正在被使用的採樣位置集合(處理核)的中央處或者朝向該採樣位置集合的中央)。
然而,申請人已認識到,這可能意味著,例如圖塊中(例如在圖塊的左上角)的一些採樣位置可能需要來自例如圖塊的集合(例如,特定圖塊上方的相鄰圖塊、在特定圖塊左側的相鄰圖塊、以及特定圖塊的左上方的相鄰圖塊)的採樣位置值,但是該圖塊中(例如在圖塊的右下角中)的其它採樣位置可能需要來自不同的圖塊的集合(例如三個相鄰圖塊(例如,在所述圖塊下方的相鄰圖塊、在所述圖塊右側的相鄰圖塊、以及在所述圖塊右下方的相鄰圖塊))的採樣位置值。這可以意味著,在給定圖塊能夠被處理之前,將需要得到和儲存的大量圖塊的採樣位置值。
為了解決這個問題,在特別優選的實施方式中,由處理操作用來產生給定(並且針對每一個)採樣位置的輸出結果的採樣位置集合(核)被構造為約束(減少)在處理給定圖塊時不同(例如,相鄰的)圖塊(可能需要來自這些圖塊的採樣位置數據)的數量。優選地,方案是這樣的,即,在處理給定圖塊時,將需要來自不超過三個其它圖塊的採樣位置數據。
在優選實施方式中,這通過以下方式來實現,即,構造用來產生給定採樣位置(和要被生成輸出值的每個採樣位置)的輸出結果的採樣位置的集合(核),使得所述採樣位置的集合(核)不圍繞所關注的採樣位置(即,使得被關注的採樣位置(被生成了輸出值的採樣位置)位於將被用於產生所關注的採樣位置的輸出結果的採樣位置的集合(核)的邊緣處)。
在特別優選的這樣的實施方式中,處理操作被構造為使得針對將被生成輸出值的一採樣位置並且優選地針對將被生成輸出值的每個採樣位置,將被生成輸出結果的採樣位置位於將用來產生所述採樣位置的輸出結果的採樣位置集合(核)的角部。
這意味著,針對任何給定圖塊的採樣位置的處理操作將至多需要來自僅三個相鄰圖塊(作為與正在被生成輸出值的採樣位置相反的採樣位置集合(核)的角部相鄰的圖塊)(例如,特定圖塊上方的相鄰圖塊、特定圖塊左側的相鄰圖塊、以及特定圖塊左上方的圖塊)的採樣位置的採樣位置值。這減少了輸出的例如需要被首先處理以在特定圖塊被處理之前(例如在特定圖塊上方和/或左則的那些圖塊之前)得到採樣位置值的圖塊的數量。
從上文將了解的是,處理操作將典型地包括並且在優選實施方式中包括生成針對正在被處理的圖塊的一個或更多個採樣位置(在優選實施方式中針對每一個採樣位置)的輸出值。此外,取決於將被用於針對待生成的每
個採樣位置輸出值的處理操作的採樣位置值的數量,將理解,在圖塊中的一些採樣位置(例如內部採樣位置)方面,處理操作將簡單地使用所關注的圖塊的採樣位置值,然而對於圖塊中的其它採樣位置(例如外部或邊緣採樣位置),處理操作將使用所關注的圖塊的採樣位置值和來自一個或更多個其它圖塊(例如相鄰圖塊)的所儲存的採樣位置值二者。因此,在優選實施方式中,處理操作生成圖塊內的多個的採樣位置的輸出值,並且對於那些採樣位置中的一些採樣位置僅使用所關注的圖塊的採樣位置值,而對於採樣位置中的其它採樣位置則使用來自所關注的圖塊的採樣位置值和所儲存的來自至少一個其它圖塊(例如,優選地,相鄰圖塊)的採樣位置值。
在處理操作使用來自另一個圖塊或多個圖塊(例如,相鄰的一個或多個圖塊)的採樣值的情況下,圖形處理流水線將讀取(並且在處理操作中使用)所儲存的一個或更多個其它先前處理過的圖塊的一個或多個渲染目標的採樣位置的一些而非全部的採樣位置值。
可以以任何適合且期望的方式使用處理操作的輸出(例如,針對圖塊生成的一個或多個輸出值)。它優選地被儲存用於以後使用。在優選實施方式中,針對圖塊的處理操作的輸出(結果)被寫入圖塊緩衝器中的輸出渲染目標,或者寫入外部儲存器。這在例如處理操作是延遲著色操作,並且圖塊的輸出結果因此是例如待顯示的幀的延遲著色圖塊情況下可以是適當的。在處理操作的結果被
寫出到外部儲存器情況下,這例如可以由寫出單元執行。相應地,在處理操作的結果被寫入圖塊緩衝器中的輸出渲染目標的情況下,輸出的渲染目標隨後可以例如再次通過寫出單元被寫入外部儲存器。
如上面所討論的那樣,圖塊的集合中的至少一些圖塊的一個或更多個但非全部的渲染目標採樣位置值被保持以在處理另一圖塊(例如相鄰圖塊)時使用。在優選實施方式中,所保持的(儲存的)採樣位置值包括並且優選地僅包括來自所述圖塊以處理其它圖塊所需的採樣位置值(至少期望是所述採樣位置值)。因此,在優選實施方式中,圖塊的渲染目標採樣位置值的選擇的子集被儲存以在處理另一(相鄰)圖塊時使用。
因此,在優選實施方式中,基於已知的或預期在處理另一圖塊或多個圖塊時將被需要的採樣位置值來選擇和確定被儲存以在處理另一圖塊(例如相鄰的一個或多個圖塊)時使用的採樣位置值。這個確定優選地基於待使用採樣位置值執行的處理操作的性質(在處理另一圖塊時所需的一圖塊的採樣位置值的數量取決於所述處理操作),並且可以例如通過對從請求執行處理操作的應用向圖形處理系統發送的指令的分析(例如,優選地,通過圖形處理流水線的驅動程序)而做出。
如上所述,在處理操作使用採樣位置值集合(核)來產生每個輸出值(例如,3x3卷積核(convolution kernel))的情況下,優選地基於處理操作將使用所述採樣位
置值的集合(核)(處理操作將使用該採樣位置值集合來產生每個輸出值)的大小(和形狀)來選擇所儲存的在處理另一圖塊時使用的採樣位置值。
例如,如果採樣位置的集合是X個採樣位置寬(即,在水平方向上)乘Y個採樣位置高(即,在垂直方向上)(例如,X可以是3和/或Y可以是3,使得核是3個採樣位置乘3個採樣位置),則需要被儲存以與相鄰圖塊一起使用的採樣位置值優選地(在使用中)根據X和Y的值來確定。
對於不同的處理操作並且對於不同類型的採樣位置值,X和Y的值可以不同。相應地,被儲存的用於在處理另一圖塊或多個圖塊時使用的採樣位置值的數量對於針對圖塊所生成的每個渲染目標來說可能是相同的,或者可以在各個不同的渲染目標之間不同(對於不同的渲染目標來說是不同的)(並且對於待由圖形處理流水線生成的各個不同的輸出來說是相同的,或者在待由圖形處理流水線生成的各個不同的輸出之間不同)。
因此,實施方式可以包括根據處理操作和/或正在被用於得到(多個)輸出值的採樣位置值的類型來確定處理操作將使用的採樣位置的集合(核)的大小(例如,X和Y的值)(例如,將要需要的相鄰採樣位置值的相鄰採樣位置值的數量)。可以通過對從請求執行處理操作的應用向圖形處理系統發送的指令的分析做出這個確定。
在優選的這樣的實施方式中,圖塊的被儲存以
用於處理其它圖塊時使用的採樣位置值是與在最靠近圖塊的特定角部的垂直側的X-1個採樣位置內的一列中的採樣位置相對應的那些採樣位置值和/或在最靠近特定角部的水平側的Y-1個採樣位置內的一行中的那些採樣位置值(例如,在相鄰圖塊的右側的X-1個採樣位置內和在相鄰圖塊的從底部開始向上的Y-1個採樣位置內)。因此,在實施方式中,針對圖塊或針對每個(適合)圖塊,優選地儲存這些並且優選地僅儲存這些採樣位置值。
申請人認識到,在這些情況下,一些採樣位置值可以既屬於最靠近圖塊的特定角部的垂直側的X-1個採樣位置內的列,又屬於最靠近特定角部的水平側的Y-1個採樣位置內的行(例如,在對角相鄰的圖塊的右下角部中的採樣位置值)。在優選實施方式中,這些採樣位置值僅被儲存一次以與另一圖塊一起使用(即,可能被相鄰圖塊需要的每個採樣位置值僅被儲存一次以用於另一圖塊)。可以例如按圖塊的列而非對應的行儲存它們(或者反之亦然)。這例如能夠進一步減少儲存採樣位置值所需的儲存器的數量和儲存器帶寬(即,(Y-1)×(X-1)個採樣位置值)。
在優選實施方式中,圖塊的被儲存用於相鄰圖塊(或多個圖塊)的每一列和/或每一行採樣位置值被儲存,使得所述每一列和/或每一行採樣位置值將作為單獨的(和不同的)儲存器存取突發(例如,優選地,作為單獨的(和不同的)高速緩存線)而被取回。這例如能夠有利於建立儲存器中的採樣位置值的索引並從儲存器取出所述值。
在優選實施方式中,在多列和多行採樣位置值被儲存為各個不同的儲存器突發“單元”(例如高速緩存線)的情況下,例如儲存列採樣位置值的高速緩衝線優選地與儲存行採樣位置值的高速緩存線交織(即,使得按順序,將存在儲存一列採樣位置值的高速緩存線,然後是儲存一行採樣位置值的高速緩存線,然後是儲存一列採樣位置值的高速緩存線(必要時,依此類推),或者反之亦然)。
這例如能夠有助於使所儲存的採樣位置值中由於複製的行和列值未被儲存兩次而導致的任何“間隙”之間的儲存器突發長度最大化,並且減少寫入所保持的採樣位置值所需的單獨儲存器突發的數量。
在一些實施方式中,相鄰圖塊所需的採樣位置值的數量對於待處理的每個特定圖塊可以是相同的,並且例如能夠如上所述那樣從X和Y的值來確定。因此,在優選實施方式中,儲存相同數量個採樣位置值以用於所關注的每個圖塊的相鄰圖塊(或多個圖塊)。
然而,在其它實施方式中(例如,在處理操作不必處理圖塊內的每個採樣位置的情況下),相鄰圖塊所需的採樣位置值的數量對於不同的圖塊(例如對於待處理的每個特定圖塊)可以是不同的。在這些實施方式中,例如像上面所討論的那樣根據X和Y的值確定的採樣位置值的最壞情況數量仍然能夠從每個圖塊保持。
然而,在這些佈置的優選實施方式中,不同數量的採樣位置值被儲存用於與圖塊集合中的不同圖塊的相
鄰圖塊(或多個圖塊)(即,被儲存的用於與相鄰圖塊(或多個圖塊)的採樣位置值的數量能夠並且優選地在所述圖塊的集合中的圖塊之間不同)。在這種情況下,優選地針對待處理的每個相應的圖塊得到每個相鄰圖塊需要哪些採樣位置值。
在優選的這樣的實施方式中,對於尺寸為X乘Y個採樣位置的處理核並且對於尺寸為W乘H個採樣位置的圖塊、並且處理核生成針對位於該處理核的角部處的採樣位置的輸出值,水平方向上的第i個圖塊(其中,i=0,1,2...)所需的來自前一個圖塊的採樣位置值(即必須從前一個圖塊中取回以用於處理第i個圖塊的採樣位置值的數量)是與在由下式給出的最靠近正在被生成輸出值的處理核的角部的垂直側的Ni個採樣位置內的列的採樣位置相對應的那些採樣位置值:Ni=iW mod X
相應地,將為第i個圖塊儲存以在處理水平方向上的下一個圖塊時使用的採樣位置值是與在由下式給出的最靠近正在被生成輸出值的處理核的角部的垂直側的Ni個採樣位置內的列的採樣位置相對應的那些採樣位置值:Ni=(i+1)W mod X
類似地,對於尺寸為X乘Y的核並且對於尺寸為W乘H的圖塊、並且處理核生成針對位於處理核的角部處的採樣位置的輸出值,在垂直方向上第j個圖塊(其中,j=0,1,2...)所需的來自前一個圖塊的採樣位置值(即,
必須從前一個圖塊中取回以用於處理第j個圖塊的採樣位置值的數量)是與在由下式給出的最靠近正在被生成輸出值的處理核的角部的水平側的Mj個採樣位置內的行的採樣位置相對應的那些採樣位置值:Mj=jH mod Y
相應地,將為第j個圖塊儲存以在處理垂直方向上的下一個圖塊時使用的採樣位置值是與在由下式給出的最靠近正在被生成輸出值的處理核的角部的水平側的Mj個採樣位置內的列的採樣位置相對應的那些採樣位置值:Mj=(j+1)H mod Y
在優選實施方式中,按照上述方式確定用於Ni和Mj的值和隨後的儲存以用於與其它(多個)圖塊一起使用的採樣位置值。
能夠按照需要來儲存為了在處理另一個或多個圖塊(例如,相鄰的一個或多個圖塊)時使用而儲存的採樣位置數據。採樣位置數據被優選地儲存在圖形處理流水線的本地(片上)儲存器(優選為圖形處理流水線的本地高速緩存,諸如,並且優選為圖塊緩衝器)中。可以以任何適合且期望的方式將該採樣位置數據儲存在例如圖塊緩衝器中。例如,圖塊緩衝器可以被調整大小以便容納採樣位置數據,例如,圖塊緩衝器中可存在為相應的採樣位置數據而留出的固定分配,或者,例如並且優選地,可以按照在本申請人的早先的美國專利申請No.13/875831中所描述的方式來完成。
採樣位置數據還可以或者替代地被儲存在例如主機系統的圖形處理流水線(與主機系統相關聯)可訪問的外部儲存器(主儲存器)中。在本地(片上)儲存器可能不具有用於採樣位置數據的容量情況下,這可以是適當的。採樣位置數據被優選地儲存在適合的高速緩衝儲存器中,該高速緩衝儲存器與圖形處理流水線相關聯並且可由圖形處理流水線訪問,並且由圖形處理流水線可訪問的主儲存器支持。
在優選實施方式中,所保持的採樣位置數據被優先地儲存在圖形處理流水線的本地(片上)儲存器(諸如圖塊緩衝器)中,但是必要時,儲存在外部儲存器中。
按照需要,例如經由針對該處理的顯式硬件支持、或者通過例如借助於著色器編譯器將適當的圖形處理指令包括在被提供給圖形處理流水線的圖形處理指令的集合中,能夠便於對這個採樣位置數據的儲存。
被儲存以在處理另一個或更多個圖塊(例如,相鄰的一個或更多個圖塊)時使用的採樣位置數據應被儲存(保持)直到可能需要所述採樣位置數據的所有其它圖塊已被處理完為止(在這點上,可以例如並且優選地允許重寫採樣位置數據)。保持所儲存的採樣位置數據以在處理另一個或更多個圖塊時使用的周期能夠按照需要來確定,例如並且優選地基於所述處理操作(其將確定多少其它圖塊需要所儲存的採樣位置數據)和圖塊的處理順序的了解或例如相關的其它圖塊(例如,相鄰圖塊)何時已被處理
的指示來確定。這將有助於確保為了在處理另一個或更多個圖塊時使用而被儲存的採樣位置數據不被保持超過需要的時間,從而減少儲存所述數據所需要的儲存器的量。
圖形處理流水線能夠以任何期望且適合的方式(例如,根據所述圖形處理系統和儲存採樣位置數據的儲存器的性質)讀取為了在處理另一圖塊(例如相鄰圖塊)時使用而儲存的採樣位置數據。例如,圖形處理流水線可以具有用於讀取處理的顯式硬件支持,或者適當的圖形程序指令能夠包括在例如由著色器編譯器提供給圖形處理流水線的圖形處理指令的集合中。方案優選地是這樣的,即用於將在當前圖塊的邊緣外面讀取的處理操作的操作被適當地重定向至儲存器中的儲存有保存的來自先前被處理的圖塊或多個圖塊(例如,相鄰的一個或多個圖塊)的值的適當位置。
在優選實施方式中,讀取處理包括圖形處理流水線在從(預期)儲存有採樣位置數據的儲存器讀取所儲存的來自另一個圖塊的採樣位置數據之前,確定該另一個圖塊的採樣位置數據是否仍然存在於圖塊緩衝器中,並且如果該採樣位置數據仍然存在於圖塊緩衝器中,則從圖塊緩衝器而不是從預期儲存該採樣位置數據的儲存器讀取所需要的採樣位置數據,但是如果應從儲存器讀取的採樣位置數據不仍然處於圖塊緩衝器中,則從預期儲存有採樣位置數據的儲存器讀取採樣位置數據。
這使得來自另一圖塊的採樣位置數據可以仍
然存在於圖塊緩衝器中,並且使得能夠在處理另一圖塊(例如相鄰圖塊)時能夠從圖塊緩衝器使用所述數據,從而再次節約儲存器帶寬。在多個圖塊在任一時刻在飛行中(in flight)的情況下,在圖形處理流水線中可以是特別適當的。
從上文可以理解,取決於處理操作的性質,針對給定圖塊(或至少針對圖塊的特定輸出值(採樣位置))的處理操作可能需要來自超過一個其它圖塊(例如相鄰圖塊)的採樣位置值。
因此,在優選實施方式中,使用用於所述圖塊的採樣位置值和另一圖塊(例如相鄰圖塊)的採樣位置的採樣位置值來執行處理操作的步驟包括使用所述圖塊的採樣位置值和來自多個其它圖塊(例如並且優選相鄰圖塊)的採樣位置值來執行處理操作。
類似地,在優選實施方式中,至少針對圖塊的特定輸出值(採樣位置),處理操作使用來自超過一個(來自多個)其它圖塊(例如相鄰圖塊)的採樣位置值。在這種情況下,方案優選地是這樣的,即,處理操作將從不要求來自超過三個其它圖塊(例如相鄰圖塊)的採樣位置值。
相應地,在優選實施方式中,圖塊的一個或多個渲染目標的一些而非全部採樣位置值被儲存以在處理圖塊的集合中的兩個或更多個其它圖塊(例如並且優選地為相鄰圖塊)時使用,並且正在儲存圖塊的一個或多個渲染目標的採樣位置值以在處理該圖塊的集合中的另一個或更多個圖塊時使用的儲存器優選地儲存該圖塊集合中的多個
圖塊的一個或多個渲染目標的一些而非全部採樣位置值以在處理該圖塊集合中的其它圖塊時使用。
因此,在優選實施方式中,第一個其它圖塊(例如相鄰圖塊)的一個或更多個而非全部採樣位置值、第二個其它圖塊(例如相鄰圖塊)的一個或更多個而非全部採樣位置值、以及第三個其它圖塊(例如相鄰圖塊)的一個更或多個而非全部採樣位置值將被儲存(保持)以在處理給定圖塊時使用。
相應地,當確定是否保持圖塊的採樣位置值以在處理其它圖塊時使用並且保持多長時間時,該處理應該並且優選地考慮到該圖塊的採樣位置值將被僅一個其它圖塊或被超過一個其它圖塊需要的概率。
在特別優選的實施方式中,組成正在被處理的輸出(例如用於顯示的幀、渲染至紋理操作中的紋理等)的圖塊按照所選擇的順序(具體地,優選為預定的順序)被處理。圖塊處理順序優選地是這樣的,即,被每個其它圖塊(例如相鄰圖塊)需要的採樣位置值將在處理給定圖塊時可得到(至少在必要的初始圖塊(若有的話)已被處理後)。
換句話說,在圖塊的集合中的圖塊優選地按照有利於使給定圖塊的被另一個或多個圖塊(例如,相鄰的一個或多個圖塊)需要的採樣位置值在該給定圖塊要被處理時可以得到的順序被處理。因此,圖塊優選地被按照使得採樣位置值將在處理給定圖塊時被需要的圖塊在該給定
圖塊之前被處理的順序處理。
圖塊處理順序優選地還使得其中可能需要保持圖塊的採樣位置數據以在處理其它圖塊時使用的周期被減少和/或最小化。
在實施方式中,如上面所討論的那樣,位於各個處理“核”使用的採樣位置集合的角部(並且同一角部)(例如,右下角)處的該處理“核”的特定輸出值採樣位置有助於此。如上面所討論的那樣,這可以意味著每個特定採樣位置將至多僅需要來自與所述核的相反角部鄰近的三個相鄰圖塊的採樣位置的採樣位置值。在這種情況下,圖塊可以優選地在朝向每個處理“核”的角部(輸出值採樣位置位於該角部)(和/或遠離核的相反角部))的大致方向(例如右下方)上被處理。這例如能夠確保必要的相鄰圖塊已經在正被處理的每個特定圖塊之前被處理。
在優選實施方式中,特別是當子區正在被單個處理核心處理時,按照光柵順序(例如,通過沿著每行向右處理子區,並且然後向下移動到下一行)、按照Z(Morton)順序、按照轉置光柵順序(例如,通過沿著每列處理子區,並且然後向右移動到下一列)或者按照轉置Z(Morton)順序處理子區。
在圖形處理流水線包括多個圖像處理核心並且正在被處理的圖塊的集合正在被多個圖形處理核心處理(即,分佈在多個圖形處理核心上以進行處理)的情況下,優選地通過按順序將圖塊的行(或列)分配給處理核心來
處理圖塊,例如通過將圖塊的第一行(或列)分配給第一處理核心、將圖塊的第二行(或列)分配給第二處理核心、將圖塊的第三行(或列)分配給第一處理核心、將圖塊的第四行(或列)分配給第二處理核心等等。這個順序可擴展至超過兩個處理核心。
在優選實施方式中,對圖塊的第一行(或列)的處理被構造為使得對圖塊的該行(或列)的處理總是比圖塊的第二行(或列)的處理早一個或更多個圖塊,並且所述圖塊的第二行(或列)的處理則將比圖塊的第三行(或列)的處理早一個或更多個圖塊,依此類推。這例如能夠確保正在被一個核心處理的圖塊(其渲染(多個)目標被另一個處理核心需要)將在需要它們的特定圖塊之前已經被處理。
可以按照需要來實現以上佈置,例如通過使用以適當順序將圖塊分配給一個或多個處理核心的“作業”管理器。作業管理器例如可以實現互鎖以避免正在對處理順序靠後的一行(或列)圖塊進行處理的處理核心趕上和/或超越正在對處理順序靠前的一行(或列)圖塊進行處理的處理核心。
如上面所討論的那樣,在一些優選實施方式中,處理操作的輸出(一個或更多個輸出值)被寫到外部(主)儲存器中的輸出緩衝器。然而,其它實施方式包括儲存輸出(一個或更多個輸出值)以用作為針對待處理的圖塊的集合中的另一圖塊(例如,下一個圖塊)的一個或多個輸
入值。這例如能夠允許對多個圖塊執行聚合處理。在這種情況下,圖塊的輸出(一個或更多個輸出值)能夠例如被寫入高速緩衝儲存器以用於這樣的用途。
在這些佈置中,聚合處理可以包括例如將與圖塊的採樣位置相對應的採樣位置值相加的求和處理和/或對具有一個或多個特定值(例如高於或低於給定門限值)的採樣位置進行計數的計數處理(例如,用於直方圖生成、總計面積表和/或有限衝激響應)。
因此,一些實施方式包括以下步驟:通過聚合處理來得到圖塊的一個或更多個輸出值;將一個或給多個輸出值儲存在例如高速緩存中作為特定圖塊的一個或更多個採樣點值;以及在處理待處理的另一圖塊時使用該特定圖塊的一個或更多個採樣點值。
如上面所討論的那樣,在本發明中,僅來自圖塊的一個或多個渲染目標的一些而非全部的採樣位置值被儲存以用於另一個或多個圖塊。該處理應並優選地操作為不從圖塊緩衝器寫出圖塊的其它的、初始的數據渲染目標中的任一個。按照需要,可以防止從圖塊緩衝器寫出圖塊的一個或多個初始的輸入數據渲染目標的剩餘部分。優選地,防止渲染目標的固定功能寫出。
防止渲染目標的固定功能寫出能夠在靜態基礎上(即,被預先確定成靜態地禁用寫出)執行,或者可在動態基礎上(在使用中)防止。在特別優選的實施方式中,可編程處理級操作來禁用和防止渲染目標的輸入數據
集合到外部儲存器的固定功能寫出。
如本領域的技術人員將理解的那樣,可針對待生成的每個總體輸出(例如幀)重複執行本發明方式的處理。
本發明能夠被用於圖形處理流水線可被用於處理和/或生成的所有適合形式的輸入和輸出,諸如用於顯示的幀、渲染到紋理輸出等。
在一些實施方式中,圖形處理流水線包括一個更或多個儲存器和/或儲存器裝置和/或與一個或更多個儲存器和/或儲存器裝置進行通信,所述儲存器和/或儲存器裝置儲存本文中所描述的數據,諸如採樣位置值、輸出值等,和/或儲存用於執行本文中所描述的處理的軟件。圖形處理流水線還可以與主機處理器通信,和/或與用於基於由圖形處理器生成的數據來顯示圖像的顯示器通信。
在優選實施方式中,圖形處理流水線是圖形處理(數據處理)系統的一部分,所述圖形處理(數據處理)系統包括主機微處理器和適當的主儲存器等以及圖形處理流水線,其中主機微處理器例如執行圖形處理流水線的驅動程序。
圖形處理流水線還可以包含圖形處理流水線可包含的任何其它適合且期望的處理級,諸如早期深度(或早期深度和模版)測試器、後期深度(或深度和模版)測試器、混合器等。
在特別優選的實施方式中,本發明的各種功能
在單個圖形處理平台上執行,所述圖像處理平台生成並輸出例如被寫入顯示裝置的幀緩衝器的輸出值。
能夠在任何適合的系統(諸如適當地構造的基於微處理器的系統)中實現本發明。在優選實施方式中,本發明被實現在計算機和/或基於微處理器的系統中。
能夠以任何期望且適合的方式執行本發明的各種功能。例如,按照需要,本發明的功能能夠用硬件或軟件來實現。因此,例如,本發明的各種功能元件可以包括可操作為執行各種功能等的一個或多個適合的處理器、一個或多個控制器、功能單元、電路、處理邏輯、微處理器等,諸如適當地構造的專用硬件元件或處理電路,和/或能夠被編程以按照期望方式操作的可編程硬件元件或處理電路。
這裡還應該注意的是,如本領域的技術人員所了解的,可以在給定處理器上複製和/或併行地執行本發明的各種功能等。同樣地,必要時,各種處理級可以共享處理電路。
因此,本發明擴展到圖形處理器並且擴展到包括本文中所描述的本發明的方面中的任何一個或更多個的裝置或者依照本文中所描述的本發明的方面中的一個或更多個操作的圖形處理平台。根據執行上面所討論的特定功能所必需的任何硬件,這樣的圖形處理器能夠另外包括圖形處理器包括的常見功能單元等中的任何一個或更多個或全部。
本領域的技術人員還將了解的是,本發明的所描述的方面和實施方式中的全部能夠並且優選地包括本文中所描述的優选和可選特徵中的任何一個或更多個或全部。
可以至少部分地使用軟件例如計算機程序來實現根據本發明的多種方法。因此將看到,當從另外的方面觀察時,本發明提供專門適於在被安裝在數據處理裝置上時執行本文中描述的方法的計算機軟件、包括用於在程序元素在數據處理裝置上運行時執行本文中描述的方法的計算機程序元素、以及包括適於在程序在數據處理系統上運行時執行本文中描述的一個或多個方法的所有步驟的代碼手段的計算機程序。數據處理器可以是微處理器系統、可編程FPGA(現場可編程門陣列)等。
本發明同樣擴展到包括這種軟體的計算機軟體載體,在所述軟體用來操作圖形處理器時,包括數據處理裝置的渲染器或微處理器系統與所述數據處理裝置相結合地使所述處理器、渲染器或系統執行本發明的方法的步驟。這樣的計算機軟體載體可以是諸如ROM晶片、RAM、儲存快閃記憶體、CD ROM或磁盤的物理儲存介質,或者可能是諸如導線上的電信號、光學信號或諸如到衛星的無線電信號等的信號。
將進一步了解的是,並非本發明的方法的所有步驟都需要被計算機軟件執行,並且因此從更廣泛的方面,本發明提供計算機軟件和安裝在計算機軟件載體上以用於
執行本文中所陳述的方法的步驟中的至少一個的軟件。
本發明可以因此適當地被實現為計算機程序產品以與計算機系統一起使用。這樣的實施方式可以包括固定在有形介質上的一系列計算機可讀指令,所述有形介質諸如非瞬時性計算機可讀介質,例如,磁碟、CD-ROM、ROM、RAM、儲存快閃記憶體或硬碟。它還能夠包括經由調製解調器或其它接口裝置、通過有形介質(包括但不限於光學或模擬通信線)或者無形地使用無線技術(包括但不限於微波、紅外線或其它傳輸技術)可傳送到計算機系統的一系列計算機可讀指令。該系列計算機可讀指令實現本文中先前描述的功能性的全部或一部分。
本領域的技術人員將了解的是,這樣的計算機可讀指令能夠採用用於與許多計算機架構或操作系統一起使用的許多編程語言來編寫。此外,這樣的指令可以使用目前的或將來的包括但不限於半導體、磁或光學的任何儲存器技術來儲存,或者使用目前的或將來的包括但不限於光學、紅外線或微波的任何通信技術來傳送。設想了這樣的計算機程序產品可以作為可去除介質與所附的打印或電子文檔一起發布(例如,熱塑收縮包裝的軟體)、在計算機系統(例如在系統ROM或固定硬碟上)預先加載或者通過網絡(例如,網際網路或WWW)從服務器或電子佈告板分發。
1‧‧‧流水線
10‧‧‧圖塊緩衝器
100‧‧‧陣列
102‧‧‧圖塊
104‧‧‧採樣位置
13‧‧‧寫出(多重採樣解析)級
14‧‧‧圖塊著色器
15‧‧‧高速緩衝儲存器
16‧‧‧主儲存器
20、21、22、23、24、25、26、27、28、29‧‧‧步驟
200‧‧‧核
204‧‧‧中央
3‧‧‧光柵化級
300‧‧‧列
301‧‧‧行
4‧‧‧早期深度和模版測試級
400‧‧‧高速緩衝儲存器
402、404、406、408‧‧‧高速緩存線
410、412、414、416‧‧‧採樣位置值
6‧‧‧片段著色級
600‧‧‧流程圖
602、604、606、608、610、612、614‧‧‧步驟
7‧‧‧模版測試級
706‧‧‧位置
800‧‧‧流程圖
802、804、806、808、810、812、814‧‧‧步驟
9‧‧‧混合級、混合器
圖1示出了根據本發明的實施方式的採樣位置的陣列;圖2A和圖2B示出了根據本發明實施方式的用於採樣位置值的延遲處理的核;圖3示出了根據本發明實施方式的應用於採樣位置的陣列的圖2B的核;圖4A和圖4B示出了根據本發明實施方式的用於採樣位置值的存儲器高速緩存存儲佈置;圖5示出了根據本發明的另一實施方式的重複地應用於採樣位置的陣列的圖2B的核;圖6示出了根據本發明實施方式的處理採樣位置的陣列的特定子區的流程圖;圖7示出了根據本發明另一實施方式的採樣位置的陣列;圖8示出了根據本發明另一實施方式的處理採樣位置的陣列的特定子區的流程圖;圖9A至圖9C示出了根據本發明實施方式的採樣位置的陣列的子區的處理順序;圖10示意性地示出了能夠按本發明的方式操作的圖形處理流水線;以及圖11示意性地示出了圖10的圖形處理流水線的操作的優選實施方式。
在圖中,在適當的情況下,相同的附圖標記被用於相同的特徵。
現在將在用於顯示的計算機圖形的處理的情景下對本發明的優選實施方式進行描述。
如在本領域中已知且如上面所討論的那樣,在要顯示計算機圖形圖像時,所述圖像通常先被定義為一系列圖元(多邊形),這些圖元然後被劃分(光柵化)成用於圖形渲染的圖形片段。在正常的圖形渲染操作期間,渲染器將修正與每個片段相關聯的(例如)顏色(紅、綠及藍,RGB)和透明度(阿爾法,α)數據,使得能夠正確地顯示這些片段。在片段已完全遍歷渲染器後,它們關聯的數據值被儲存在儲存器中,準備輸出以進行顯示。
本發明涉及一種基於圖塊的圖形處理流水線,即其中圖形處理流水線是基於圖塊的渲染器,並且因此將如在本領域中已知的那樣產生具有渲染輸出數據陣列(諸如待生成的輸出幀)的圖塊。
(如在本領域中已知的那樣,在基於圖塊的渲染中,不是整個渲染輸出(例如,幀)有效地像在立即模式渲染中那樣被一舉處理完,相反,渲染輸出(例如,待顯示的幀)被劃分成多個較小的子區(通常被稱為“圖塊”)。每個圖塊(子區)被單獨地(通常一個接一個地)渲染,並且已渲染的圖塊(子區)被重新組合以提供完整的渲染輸出,例如,用於顯示的幀。在這樣的佈置中,渲染輸出
通常被劃分成大小和形狀規則的子區(圖塊)(通常例如是正方形或矩形),但這不是必要的。)。
如本領域中已知那樣,渲染輸出數據陣列可以典型地是要在顯示裝置(諸如屏幕或印表機)上顯示的輸出幀,但是還可以例如包括要在以後的渲染操作中使用的中間數據等(也被稱為“渲染到紋理”輸出)。
圖1示出了用來對要顯示的幀進行採樣的採樣位置104的示例性陣列100。在本實施方式中,每個採樣位置104對應於顯示器的像素,但是能夠使用採樣位置104與顯示器的像素之間的其它映射。
在這個實施方式中,陣列100被劃分成九個圖塊(子區)102,其中每個圖塊102包括六十四個採樣位置104。圖塊102中的每一個都將被圖形處理核心單獨地處理。所述處理例如可以包括渲染每個採樣位置104以得到針對該採樣位置104的採樣位置值(深度、顏色以及透明度)。如在本領域中已知的那樣,針對給定圖塊102生成的採樣位置值被儲存在圖塊緩衝器中。
如將在下面所討論的那樣,在本實施方式中,圖塊的採樣位置值接著在諸如著色、數據壓縮或數據聚合的處理操作中使用,以產生針對圖塊的一個或多個輸出值。
圖2A示出了能夠被用來使用採樣位置值來執行處理操作的採樣位置104的示例性集合(核)200。核200是水平方向上的X個採樣位置乘垂直方向上的Y個採樣位
置。在本實施方式中,假定了核200是3×3卷積核,並且因此X是3並且Y是3。因此,核200的每個“應用”將使用圖1中所示出的採樣位置陣列100的採樣位置104中的九個採樣位置的採樣位置值以得到在核200的中央202處的採樣位置的輸出值x。
圖2B示出了在根據本發明的更優選實施方式執行處理操作時所使用的採樣位置104的另一核200。核200再次使用圖1中所示出的採樣位置陣列100的九個採樣位置104。然而,在這個實施方式中,處理操作使用九個採樣位置104的採樣位置值來得到核200的中央204處的採樣位置的輸出值x。將在下面討論這個特定實施方式優於圖2A中所示出的優點的優點。
圖3示出了在被應用於採樣位置104的陣列100時圖2B的核200。在這個實施方式中,按照使核200的角部204與陣列100中的採樣位置中的每一個重疊的方式重複地應用核200。因此,所述核在這個實施方式中的應用將彼此重疊。因此,得到可陣列100中的採樣位置104中的每一個的輸出。
在這個實施方式中,被應用於每個核200的處理操作是使用與核200的採樣位置104相對應的採樣位置值的延遲著色處理。
在圖3中,示出了在得到特定圖塊(中央圖塊)內的特定採樣位置的輸出值時的核200。從圖3可以看到,在該位置中,核200不僅使用與特定圖塊中的採樣位置相
對應的採樣位置值,而且還使用與三個相鄰圖塊(即,該特定圖塊上方的相鄰圖塊、該特定圖塊左側的相鄰圖塊以及該特定圖塊的左上方的相鄰圖塊)中的採樣位置相對應的採樣位置值。
在圖3中用灰色示出了在處理其它圖塊時使用的採樣位置值。這些採樣位置在每個圖塊102中形成Y-1個(即兩個)採樣位置寬的列300和X-1個(即兩個)採樣位置寬的行301。這些採樣位置在使用中被標識,並且這些採樣位置的採樣位置值在處理所關注的圖塊時被儲存在高速緩衝儲存器中,使得它們在處理各個相鄰的圖塊時是可用的。
(從圖3將了解的是,當在陣列100的邊緣處應用核200時,可能不存在所述核內的每個位置的採樣位置值。可以使用所提供的在處理操作中處理這種邊緣的任何機制來解決(不受本發明的使用的影響))。
圖4A和圖4B例示了用於需要被保持以使得在處理圖3中所示出的各個相鄰圖塊時可用的圖塊採樣位置值的高速緩衝儲存器儲存佈置。圖4A示出了諸如圖3的左上角部中的圖塊的示例性圖塊。再次用灰色示出被儲存在高速緩衝儲存器中的採樣位置值。圖4B則示出了這些採樣位置值如何被儲存在高速緩衝儲存器400中。採樣位置值的每列和每行被儲存在高速緩存400的單獨的高速緩存線402、404、406、408中。具體地,列x=6被儲存在高速緩存線402中,行y=6被儲存在高速緩存線404中,列x=7
被儲存在高速緩存線406中,而行y=7被儲存在高速緩存線408中。
從圖4A可以看到,一些採樣位置值410、412、414、416是待儲存的採樣位置值的列和行兩者的一部分。在這個實施方式中,為了減少需要被儲存的數據量,這些採樣位置值僅被儲存一次,即,對這些採樣位置值的儲存僅涉及它們的列而不是它們的行。具體地,採樣位置410和412的採樣位置值僅被儲存在用於列x=6的高速緩存線402中,並且採樣位置414和416的採樣位置值僅被儲存在用於列x=7的高速緩存線406中。應該注意,高速緩存400中的“間隙”在交替的高速緩存線中。這使得在讀取和寫入高速緩衝儲存器400時所需的儲存器突發的大小最大化,並且使得在讀取和寫入高速緩衝儲存器400時所需的儲存器突發的數量最小化。
圖5示出了圖2B根據另一實施方式在被應用於陣列100時的核200。為了清楚起見,在圖5中未示出採樣位置104。在這個實施方式中,按照使得核200的應用彼此不重疊的方式重複地應用核200。因此,核200的角部204僅與陣列100中的採樣位置中的一些重疊,並且僅得到陣列100中的一些採樣位置104的輸出。在圖5中,核200被示出在其位置中的每一個位置中。
在這個實施方式中,使用每個核200而應用的處理操作是使用與所述核200的採樣位置104相對應的採樣位置值的解析或壓縮處理。
從圖5可以看到,在一些位置中,核200可以不僅再次使用與特定圖塊中的採樣位置相對應的採樣位置值,但是還可以使用與(多達)三個相鄰圖塊中的採樣位置相對應的採樣位置值。然而,相鄰圖塊所需的採樣位置值的數量對於每一個圖塊都是不相同的。具體地,中央列i=1中的圖塊需要從左側的列i=0起的兩列採樣位置的採樣位置值,而右側的列i=2中的圖塊需要從中央列i=1起的僅一列採樣位置的採樣位置值。
水平方向上的第i個圖塊(其中,i=0,1,2...)所需的前一個圖塊的採樣位置值(即,為了處理所述第i個圖塊而必須從前一個圖塊中獲得的採樣位置值的數量)(針對尺寸為X乘Y個採樣位置的處理核、並且針對尺寸為W乘H個採樣位置的圖塊、並且處理核針對其生成位於該處理核的角部處的採樣位置的輸出值)是與在最靠近正在被生成輸出值的處理核的角部的垂直側的Ni個採樣位置內的採樣位置列相對應的那些採樣位置值,由下式給出:Ni=iW mod X
相應地,將為第i個圖塊儲存以在處理在水平方向上的下一個圖塊時使用的採樣位置值是與最靠近正在被生成輸出值的處理核的角部的垂直側的Ni個採樣位置內的採樣位置列相對應的那些採樣位置值,由下式給出:Ni=(i+1)W mod X
類似地,垂直方向上的第j個圖塊(其中,j=0,1,2...)所需的前一個圖塊的採樣位置值(即,必須從前
一個圖塊中得到以用於處理第j個圖塊的採樣位置值的數量)(針對尺寸為X乘Y的核、並且針對尺寸為W乘H的圖塊、以及處理核針對其為位於該處理核的角部處的採樣位置生成輸出值)是與最靠近正在被生成輸出值的處理核的角部的水平側的Mj個採樣位置內的採樣位置行相對應的那些採樣位置值,由下式給出:Mj=jH mod Y
相應地,將為第j個圖塊儲存以在處理在垂直方向上的下一個圖塊時使用的採樣位置值是與最靠近正在被生成輸出值的處理核的角部的水平側的Mj個採樣位置內的採樣位置列相對應的那些採樣位置值,由下式給出:Mj=(j+1)H mod Y
因此,在這個實施方式中,針對每個圖塊而需要被儲存在儲存器高速緩存中的採樣位置值能夠在使用中再次確定。
圖6是概括上述實施方式的在處理陣列100的特定圖塊(例如中央圖塊)時的操作的流程圖600。
在步驟602中,如上所述,在陣列100的特定圖塊102中的每個採樣位置104執行初始渲染,以便得到採樣位置104中的每一個的採樣位置值(例如,深度、顏色以及透明度)。在步驟604中,採樣位置104的採樣位置值被儲存在圖塊緩衝器中。在步驟606中,圖塊的一個或更多個但非全部採樣位置值(例如,在上述示例中,圖塊的位於列300和行301中的採樣位置值)被儲存在高速緩衝儲
存器(可以是圖塊緩衝器的一部分或圖形處理流水線本地的不同的高速緩衝儲存器)中。
在步驟608、610以及612中,如上所述,處理操作(例如著色、解析、壓縮等)通過從圖塊緩衝器讀取特定圖塊的採樣位置值、從高速緩衝儲存器讀取相鄰圖塊的一個或更多個採樣位置值、以及使用所述採樣位置值得到一個或更多個輸出值(例如著色值、解析值或壓縮值)來執行。在步驟614中,一個或更多個輸出值被儲存在輸出緩衝器中,所述輸出緩衝器諸如是顯示器的幀緩衝器。
圖7例示了另選的實施方式,其中,一個或更多個輸出值被儲存在高速緩衝儲存器而不是輸出緩衝器中。在這個實施方式中,仍然在陣列100的給定圖塊102的每個採樣位置104執行初始渲染,以便在處理操作被執行之前得到圖塊102的採樣位置104中的每一個的採樣位置值(例如,深度、顏色以及透明度)。然而,在這個實施方式中,處理操作是聚合處理。
在這個特定實施方式中,聚合處理包括對所關注的圖塊的具有高於預定閾值的亮度的採樣位置(由它們的採樣位置值指示)的採樣位置的數量進行計數,以得到所述圖塊的輸出值(即計數)。輸出值(即計數)然後被儲存在儲存器高速緩存中作為圖塊102的採樣位置中的一個(例如採樣位置706)的採樣位置值。對於陣列的圖塊中的每一個,輸出值被儲存為採樣位置值的採樣位置用灰色示出。當處理後續圖塊時,來自前一個圖塊的採樣位置(即
計數)被包括在對後續圖塊的計數中。然後,針對每個後續圖塊重複該處理,使得得到所有圖塊的計數。
圖8示出了概括上述另選實施方式在處理陣列100的特定圖塊(例如中央圖塊)時的操作的流程圖800。
在步驟802中,如上所述,在特定圖塊102中的每個採樣位置104執行初始渲染,以便得到採樣位置104中的每一個的採樣位置值(例如,深度、顏色以及透明度)。在步驟804中,採樣位置104的採樣位置值被儲存在圖塊緩衝器中。
在步驟806、808以及810中,如上所述,處理操作(例如計數)通過從圖塊緩衝器讀取特定圖塊的採樣位置值、從高速緩衝儲存器(如上所述,可以是圖塊緩衝器或另一高速緩衝儲存器)讀取相鄰圖塊的採樣位置值(例如,相鄰圖塊的計數)、以及使用所述採樣位置值得到輸出值(例如,特定圖塊的計數)來執行。在步驟812中,輸出值(例如,特定圖塊的計數)被儲存在高速緩衝儲存器中以用於與後續圖塊一起使用。
現在返回到圖2A和圖2B的核,能夠在本發明的實施方式中使用圖2A和圖2B兩者的核。然而,如上所述,圖2B的核具有優於圖2A的核的優點。將參照圖9A至圖9C對這些優點進行說明。
當使用圖2A的核來處理特定圖塊(例如,中央圖塊)時,可能需要與所有周圍圖塊的採樣位置相對應的採樣位置值。為了解決這個,能夠初始地處理所有周圍
圖塊以在針對特定圖塊執行處理操作之前得到採樣位置值。然而,當使用圖2B的核來處理特定圖塊時,僅需要與來自在上方和/或在左側的相鄰圖塊的採樣位置相對應的採樣位置值。這意味著,能夠在在特定圖塊上方和/或左側的所有圖塊都已被處理以得到採樣位置值後執行針對該特定圖塊的處理操作,即,不需要等待直到在該特定圖塊下面和/或右側的圖塊被處理得到採樣位置值為止。因此,使用圖2B的核可以導致更加靈活且高效的佈置。
圖9A至圖9C示出了可在使用圖2B的核時使用的圖塊處理順序。這些圖塊處理順序中的每一個都確保位於每個特定圖塊上方和/或左側的圖塊已在處理該特定圖塊之前被處理。在這些實施方式中,圖塊處理順序由將圖塊分配給處理核心以處理的作業管理器實現。
圖9A示出了處理圖塊102的光柵化順序,其中每個圖塊102都由相同的單個處理核心處理。在這個實施方式中,在向下移動到下一行之前沿著每行從左向右處理圖塊102。
圖9B示出了處理圖塊102的Z順序,其中每個圖塊102由相同的單個處理核心再次處理。在這個實施方式中,具有四個圖塊的大塊被處理,所述處理從左上角部中開始、向右移動、然後對角地向左下方移動並且接著向右移動。如果需要,針對具有四個圖塊的另一大塊並且在更大規模上(例如,針對四個具有四個圖塊的大塊等)重複這個模式。
圖9C示出了處理圖塊的順序,其中由多個處理核心處理所述圖塊。在這個實施方式中,每個核心都分配了一行圖塊,並且該行的圖塊被處理核心從左向右處理。在這個實施方式中,在第二處理核心(核心2)開始處理它的行之前,第一處理核心(核心1)開始處理它的行,依此類推。例如通過作業管理器中的互鎖,處理核心被防止趕上針對上方的行的處理核心。這確保了位於每個特定圖塊上方和/或左側的圖塊已在處理該特定圖塊之前被處理了。
圖10示意性地示出了可根據本發明操作的圖形處理流水線1。
圖10示出了與本實施方式的操作相關的圖形處理流水線1的主要元件和流水線級。如本領域的技術人員將了解的那樣,可存在圖10中未例示的圖形處理流水線的其它元件。在這裡還應該注意的是,圖10僅是示意性的,並且例如,即使它們在圖10被示意性地示出為單獨的級,在實踐中所示出的功能單元和流水線級也可以共享有效的硬件電路。還將了解,圖10中所示出的圖形處理流水線的級、元件以及單元等中的每一個都可以按照需要被實現,並且將因此包括例如適當的電路和/或處理邏輯等以執行必要的操作和功能。
圖10示意性地示出了在生成用於輸入到光柵化處理的圖形圖元(多邊形)2之後的流水線級。因此,此時,圖形數據(頂點數據)已經歷片段前端操作8(諸如變換和打光操作(未示出))以及用來響應於提供給圖形處理
器的命令和頂點數據而建立待渲染的圖元的圖元建立級(未示出),如本領域中已知那樣。
如圖10中所示,圖形處理流水線1的這個部分包括許多級,包括光柵化級3、早期Z(深度)和模版測試級4、片段著色級6形式的渲染器、後期Z(深度)和模版測試級7、混合級9、圖塊緩衝器10以及下採樣和寫出(多重採樣解析)級13。
如本領域中已知的那樣,圖形處理流水線1的光柵化級3操作來將組成渲染輸出(例如待顯示的圖像)的圖元光柵化成單獨的圖形片段以處理。為此,光柵化器3接收用於渲染的圖形圖元2、將圖元光柵化為採樣點並且生成具有用於渲染圖元的適當位置(代表適當的採樣位置)的圖形片段。
然後,由光柵化器所生成的片段被向前發送到流水線的其餘部分以處理。
如本領域中已知的那樣,早期Z/模版級4對它從光柵化器3接收到的片段執行Z(深度)測試,以查看是否能夠在該處丟棄(剔除)任何片段。為此,早期Z/模版級4將從光柵化器3發出的片段(與其相關聯)的深度值與已經被渲染的片段的深度值(這些深度值被儲存在作為圖塊緩衝器10的一部分的深度(Z)緩衝器中)相比較,以確定新的片段是否將被已經被渲染的片段閉塞。同時,執行早期模版測試。
通過片段早期Z和模版測試級4的片段然後被
發送到片段著色級6。如在本領域中已知的那樣,片段著色級6對通過早期Z和模版測試的片段執行適當的片段處理操作,以便處理片段來生成適當渲染的片段數據。
如在本領域中已知的那樣,該片段處理可以包括任何適合且期望的片段著色處理,諸如對片段執行片段著色器程序、對片段應用紋理、對片段應用霧化或其它操作等,以生成適當的片段數據。在本實施方式中,片段著色級6形式為著色器流水線(可編程片段著色器),但是如果需要,其它佈置(諸如附加地使用或取而代之地使用固定功能片段著色單元)將是可能的。
然後,存在“後期”片段Z和模版測試級7,其尤其對已著色的片段執行流水線深度測試的結束以確定所渲染的片段是否將在最後圖像中真正地看到。這個深度測試使用儲存在圖塊緩衝器10中的Z-緩衝器中的片段的位置的Z-緩衝器值來通過像在本領域中已知的那樣將從片段著色級6發出的片段(與其相關聯)的深度值與已渲染的(如在深度緩衝器中所儲存的)片段的深度值相比較來確定新的片段的片段數據是否應該代替已渲染的片段的片段數據。這個後期片段深度和模版測試級7同樣對片段執行任何必要的“後期”阿爾法和/或模版測試。
然後,通過後期片段測試級7的片段與已儲存在圖塊緩衝器10中的片段在混合器9中經受(如果需要)任何必要的的混合操作。在這個階段,還對片段執行必要的任何其它剩餘的操作,諸如抖動等(未示出)。
最後,(混合的)輸出片段數據(值)被寫入圖塊緩衝器10,從那裡它們例如能夠被輸出到幀緩衝器以進行顯示。輸出片段的深度值也被適當地寫入在圖塊緩衝器10內的Z-緩衝器。(如在本領域中已知的那樣,圖塊緩衝器將儲存分別儲存適當的顏色等或Z值的顏色緩衝器和深度緩衝器,顏色緩衝器和深度緩衝器針對所述緩衝器代表的每個採樣點(本質上針對正在被處理的圖塊的每個採樣點))如在本領域中已知的那樣,這些緩衝器儲存代表總體渲染輸出(例如待顯示的圖像)的部分(圖塊)的片段數據的陣列,其中緩衝器中的各個採樣值集合對應於總體渲染輸出的相應像素(例如,每個2x2的採樣值集合可以對應於一輸出像素,其中使用4倍多重採樣)。
在本實施方式中,圖塊緩衝器將其片段數據儲存為32 x 32陣列(即,與待生成的輸出中(例如,在待顯示的圖像中)的採樣位置的32 x 32陣列相對應)。圖塊緩衝器中的每個32 x 32數據位置陣列因此能夠在4倍抗混疊下(即在每像素取4個採樣時)對應於(並且將“自然地”支持)例如待顯示的幀的16 x 16像素“圖塊”。
圖塊緩衝器被提供為位於圖形處理流水線(芯片)上(本地的)RAM的一部分。
來自圖塊緩衝器10的數據被輸入到下採樣(多重採樣解析)寫出單元13,並且從這裡輸出(寫回)到主儲存器16中的外部儲存器輸出緩衝器,諸如在顯示裝置(未示出)的幀緩衝器。如在本領域中已知的那樣,還可以存
在與主儲存器16相關聯的高速緩衝儲存器15。(顯示裝置能夠包括顯示器,所述顯示器例如包括像素的陣列,諸如計算機監視器或印表機。)
下採樣和寫出單元13將儲存在圖塊緩衝器10中的片段數據下採樣為用於輸出緩衝器(裝置)的適當分辨率(即,使得生成與輸出裝置的像素相對應的像素數據的陣列),以生成用於輸出到輸出緩衝器的輸出值(像素)。
在具有渲染輸出的圖塊已被處理並且其數據被導出到主儲存器(例如,導出到主儲存器16中的幀緩衝器)以進行儲存後,處理下一個圖塊,依此類推,直到處理了足夠的圖塊以生成整個渲染輸出(例如,待顯示的幀(圖像))為止。然後,針對下一渲染輸出(例如幀)重複該過程等。
用於圖形處理流水線1的其它佈置當然是可能的。
上文描述了圖1中所示出的圖形處理系統的操作的某些特徵。現將描述根據本發明實施方式的在圖1中所示出的圖形處理系統的操作的另外特徵。
如圖10所示,圖形處理流水線1還包括圖塊著色器14形式的可編程處理級,圖塊著色器14能夠讀取圖塊緩衝器10中的儲存的值以對這些些值執行處理操作,並且將其處理操作的結果寫回到圖塊緩衝器10或經由寫出單元13寫出到主儲存器。因此,這個圖塊著色操作能夠使用由片段著色器等產生並且儲存在圖塊緩衝器10中的已渲染
片段值作為其輸入,不需要將那些片段值寫出到外部儲存器並且然後通過圖形處理流水線1讀回以便執行圖塊著色器處理操作。
如圖10所示,圖塊著色器14還可以操作以將數據儲存在主儲存器16和高速緩衝儲存器15中並且從主儲存器16和高速緩衝儲存器15讀取數據。這允許圖塊著色器14儲存來自圖塊的採樣位置值以與相鄰圖塊一起使用,並且以在執行其處理操作時使用儲存在主儲存器16和高速緩衝儲存器15中的相鄰圖塊數據值。
如上所述,該佈置允許各種處理操作在減少的儲存器帶寬和能量消耗情況下被執行。
本實施方式中的圖塊著色器級14與片段著色器6共享處理電路。因此圖塊著色器14和片段著色器6具有可編程硬件級形式的共享硬件,所述可編程硬件級能夠執行第一序列的圖形處理線程以首先生成片段數據值並且然後將片段數據值儲存在圖塊緩衝器10中,然後執行第二序列的圖形處理線程以處理圖塊緩衝器10內的片段數據值。
(換言之,存在可通過適當的圖形程序指令構造成執行片段著色操作(從而作為片段著色器6)或者執行圖塊著色操作(從而作為圖塊著色器14)的可編程硬件元件(電路)。該可編程硬件元件支持多線程處理並因此可以提供這些功能和其它功能。)。
在本實施方式中,圖塊著色器14通過用新的著色器類型GL_TILE_SHADER和新的內置變量來擴展
OpenGL ES著色語言來實現。這使得能夠在現有著色器編程模型內支持圖塊著色器級14。這個新的著色器類型未被附加到程序對象,而是相反地附加到幀緩衝器對象。在本實施方式中,圖塊著色器14如正常的OpenGL ES著色器那樣工作,但是允許用於讀取和寫入通用儲存器的功能、使用圖像寫入功能對紋理的隨機寫訪問以及用於讀取和寫入圖塊緩衝器的功能。
圖塊著色器14能夠讀取圖塊緩衝器10中的圖塊內的任何位置作為為任何給定處理操作(例如線程)的輸入,並且還能夠將數據寫到被儲存在圖塊緩衝器10中的圖塊內的任何位置。在本實施方式中,以下API函數有助於此:gl_ReadTilePixelColor(int2 loc,cb,ms) gl_ReadTilePixelDepth(int2 loc,ms) gl_WriteTilePixelColor(int2 loc,cb,ms,顏色) gl_WriteTilePixelDepth(ing2 loc,ms,顏色)
其中cb=顏色緩衝器的索引(這在存在儲存在圖塊緩衝器10中的多個渲染目標(多個顏色緩衝器)情況下使用),
ms=採樣的索引(其中多重採樣被促進)並且
loc=屏幕空間中的像素坐標。
從圖塊著色器14寫出能夠由從圖塊著色器14到儲存器的通用加載/儲存或者通過將數據寫回到圖塊緩衝器10並且然後通過寫出單元13觸發固定功能寫出來完成。
圖塊著色器14也能夠觸發或者防止特定圖塊緩衝器分量的規則寫出。這在本實施方式中通過調用函數gl_WriteOutColorTile(cb,[s])、gl_WriteOutDepthTile([s])來實現,其中cb是顏色緩衝器索引並且s是要使用的採樣索引(這個索引控制什麼樣本被寫出作為最終值)。這些函數標記圖塊是否寫出顏色或深度緩衝器。(寫出(如果需要)在圖塊著色器已完成其處理之後發生。)
在本實施方式中,為了該目的通過API調用來觸發圖塊著色器14的操作:glResolveTiles(x,y,w,h,xthreads,ythreads)
這個“解析”API調用的作用是“解析”(開始圖塊處理/圖塊著色器觸發)命令被添加到包含在解析API調用中所指示的矩形(像素坐標中的(x,y,w,h))內的像素的每個圖塊的命令列表。
然後,當圖塊正在被圖形處理流水線處理並且在圖塊命令列表中遇到“解析”命令時,圖形處理流水線1操作如下。
首先,等待當前圖塊的所有生成的片段線程完成並且被提交給圖塊緩衝器。這確保圖塊緩衝器在圖塊著色器14開始其操作之前包含所關注的圖塊的最終渲染數據。
然後,針對位於當前圖塊內的每個位置發出圖塊著色器線程以對於位於當前圖塊內的每個位置執行圖塊著色器程序。每個線程針對圖塊內的給定像素執行相關的
圖塊著色處理,並且可以從與不同的像素以及或者代替它實際上正在“處理”的像素相關聯的樣本位置訪問數據作為其輸入。在圖塊著色線程已完成後,恢復命令列表。
在本實施方式中,圖塊著色器14可以例如並且像上面所討論的那樣被用來在圖塊緩衝器10中的已渲染圖塊被寫入外部儲存器之前對它們執行延遲著色操作。這可能將執行延遲打光或任何其它期望的延遲著色操作。
圖塊著色器14能夠被用來允許整個延遲著色處理逐個圖塊地完成,從而節約用於執行延遲著色的外部儲存器帶寬。
為此,圖塊緩衝器10被構造成能夠同時地保持多個渲染目標,使得用於累計輸出結果的多個G-緩衝器和顏色緩衝器能夠被同時地儲存在圖塊緩衝器10中。這可以按照需要實現。例如,可使圖塊緩衝器10具有使它能夠實際上容納在任何事件中用於多個圖塊的顏色緩衝器的足夠大小。在這種情況下,每個圖塊顏色緩衝器能夠被指定為適當的渲染目標。另選地,本申請人的美國專利申請No.13/875831中所描述的技術(通過引用整體地併入在本文)能夠被使用以使圖塊緩衝器10能夠保持所需要的多個渲染目標。
在這個過程中,當處理給定圖塊時,圖形處理流水線1首先被控製成向各個單獨的渲染目標提供延遲著色操作所需要的已渲染幾何圖形(G-緩衝器)。這個處理操作可以例如為包括然後被分別地儲存在圖塊緩衝器10中的
顏色、深度、曲面法線以及其它屬性的圖塊生成渲染目標。(如在本領域中已知的那樣,當執行延遲著色時,這些值然後被用來做複雜的光線計算和合成以產生最後期望的輸出結果。)
在已為所關注的圖塊生成了這些渲染目標後,能夠通過將適當的解析命令包括在圖塊命令列表中來觸發圖塊著色器14操作,其中圖塊著色器被適當地控製成讀取來自圖塊緩衝器10中多個的渲染目標的數據和來自先前處理的圖塊儲存的數據,處理該數據,然後將處理結果寫入在圖塊緩衝器10中的單獨的輸出顏色緩衝器渲染目標中。
圖塊著色器14因此將從被儲存在圖塊緩衝器10中的所生成的渲染目標中的一些或全部讀取儲存的樣本值作為輸入值,並且在需要時,讀取從先前處理的圖塊(相鄰的一個或多個圖塊)儲存的數據(如上面所討論的那樣),使用那些值來執行延遲著色操作,並且然後將該操作的結果儲存在單獨的輸出顏色緩衝器中(已為此目的而分配了顏色緩衝器)。取決於正在被執行的確切的延遲著色操作,圖塊著色器14在執行針對給定像素的延遲著色操作時可以僅讀取在每個渲染目標中與該像素相關聯的採樣值和/或可以讀取在每個渲染目標中與一個或更多個其它(不同的)像素相關聯的採樣值。圖塊著色器14被構造成能夠在適當的圖形程序指令的控制下執行這些任務中的任一個。
在該操作完成後,圖塊著色器14觸發將輸出結果渲染目標寫出到外部儲存器的操作。
根據本發明,圖塊著色器14也被觸發來儲存已為圖塊緩衝器10中的圖塊生成以在處理圖塊的集合中的後續(相鄰)的一個或多個圖塊(如果存在的話)時使用的渲染目標的採樣位置值中的一些而非全部。然而,除將被保持以用於處理相鄰的一個或多個圖塊(如上面所討論的那樣)的採樣位置值以外,禁用將包含G-緩衝器的渲染目標寫入儲存器。這能夠使用上面所討論的適當的圖塊寫功能來實現。
在另選佈置中,例如如果本地(片上)儲存器不足,則圖塊著色器14能夠替代地儲存已為圖塊生成以在處理主儲存器16(和高速緩存儲存器15)中的圖塊的集合中的後續(相鄰)的一個或多個圖塊時使用的渲染目標的採樣位置值。
針對待生成的輸出的每個圖塊適當地重複這個過程,使得能夠生成最終的延遲著色輸出,例如幀。
圖11例示了這個過程。
如圖11中所示,用於圖形處理流水線(例如可以在主機處理器上運行)的驅動程序將接收API調用以為了延遲著色操作而渲染多個渲染目標,然後執行圖塊著色器“解析”操作以對多個渲染目標執行延遲著色操作(步驟20)。響應於此,驅動程序將生成適當的圖塊命令列表,該列表包括用來渲染多個輸入渲染目標的命令、隨後是用來觸發圖塊著色器操作的“解析”命令、以及用來使圖塊著色器執行延遲著色操作的命令(步驟21)。
這些命令列表然後被提供給圖形處理流水線(步驟22),響應於命令,所述圖形處理流水線渲染總體渲染輸出的每個圖塊的多個輸入數據渲染目標(步驟23),以在在圖塊緩衝器10中逐個圖塊地儲存多個輸入數據渲染目標。因為每個圖塊的多個渲染目標被渲染,所以當圖形處理流水線看到圖塊“解析”命令時(步驟24),它等待直到在飛行中的渲染操作已完成為止,並且然後執行適當的圖塊著色器程序以使用所儲存的多個渲染目標以及在適當時使用從先前相鄰的一個或多個圖塊儲存的儲存採樣位置數據來執行延遲著色操作(步驟25)。延遲著色操作的結果被寫入圖塊緩衝器10中的另一個“輸出”渲染目標(步驟26)。在所關注的圖塊被處理後,“輸出”渲染目標圖塊被寫出到外部儲存器,並且來自所關注的圖塊的渲染目標的需要與後續相鄰的一個或多個圖塊一起使用的採樣位置值被儲存在圖塊緩衝器10中,同時防止多個輸入數據值渲染目標的寫出(步驟27)。所述處理然後移動到下一個圖塊(步驟28),直到用於渲染輸出的所有圖塊已被處理為止(步驟29)。
從上文可以看到,本發明至少在其優選實施方式中提供了使例如延遲著色操作可以根據基於圖塊的圖形處理流水線內的渲染的圖塊數據來執行,其中減少了到和來自外部儲存器的數據的儲存和後續的再儲存。這能夠減少在基於圖塊的圖形處理系統中的特定處理操作所需的帶寬和儲存器的量。
這至少在本發明的優選實施方式中是通過保持圖塊的一個或更多個但非全部採樣位置的採樣位置值以在處理相鄰圖塊時使用來實現的。
上述實施例僅係為了方便說明而舉例而已,本發明所主張之權利範圍自應以申請專利範圍所述為準,而非僅限於上述實施例。
Claims (27)
- 一種操作基於圖塊的圖形處理流水線的方法,所述基於圖塊的圖形處理流水線包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的圖形片段,每個圖形片段都與一個或更多個採樣位置相關聯,並且所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,其被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,其被構造成將所述圖塊緩衝器中儲存的數據寫到所述外部儲存器,所述方法包括以下步驟:所述圖形處理流水線在處理圖塊的集合以生成輸出時,各個圖塊包括多個採樣位置的一陣列:針對所述圖塊的集合中的一第一圖塊的多個採樣位置執行一處理操作,是透過:渲染包含將在所述處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與所述第一圖塊的採樣位置的陣列相對應的採樣位置值的陣列;使用來自儲存在所述圖塊緩衝器中的所述第一圖塊的所述至少一個渲染目標的採樣位置,對所述第一圖塊執行所述處理操作以生成針對所述第一圖塊內的多個採樣位置的多個輸出值;以及 儲存所述第一圖塊的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值,以在針對所述圖塊的集合中的至少一個其它圖塊執行操作處理時使用;並且針對所述圖塊的集合中的一第二圖塊的多個採樣位置執行所述處理操作,是透過:針對所述第二圖塊,渲染包含將在所述處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與所述第二圖塊的採樣位置的陣列相對應的採樣位置值的陣列;以及使用來自儲存在所述圖塊緩衝器中的所述第二圖塊的所述至少一個渲染目標的採樣位置和來自所述第一圖塊的被儲存以在針對所述圖塊的集合中的另一個圖塊執行操作處理時使用的所述採樣位置值中的一個或更多個採樣位置值,對所述第二圖塊執行所述處理操作以生成針對所述第二圖塊內的多個採樣位置的多個輸出值,是針對一些的所述第二圖塊內的那些採樣位置,只有儲存在所述圖塊緩衝器中的所述第二圖塊的所述至少一個渲染目標的採樣位置,而非所述第二圖塊內的其它的多個採樣位置。
- 如申請專利範圍第1項所述的方法,其中,所述圖塊的集合包括四個或更多個圖塊,並且所述方法包括以下步驟:針對所述圖塊的集合中的兩個或更多個圖塊:渲染包含將在所述處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩 衝器中;儲存所述圖塊的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值,以在針對所述圖塊的集合中的至少一個其它圖塊執行處理操作時使用;以及使用儲存在所述圖塊緩衝器中的至少一個渲染目標或多個渲染目標以及來自所述圖塊的集合中的至少一個其它圖塊的一個或更多個儲存的採樣位置值,對所述圖塊執行所述處理操作以生成針對所述圖塊的輸出。
- 如申請專利範圍第1或2項所述的方法,其中:儲存所述第一圖塊的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值以在針對所述圖塊的集合中的至少一個其它圖塊執行處理操作時使用的步驟包括:儲存針對所述第一圖塊生成的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值,以在針對所述圖塊的集合中的至少一個相鄰圖塊執行處理操作時使用;並且所述處理操作使用來自所述第一圖塊的儲存的所述採樣位置值所針對的所述圖塊的集合中的第二圖塊包括所述圖塊的集合中的與所述第一圖塊相鄰的圖塊。
- 如申請專利範圍第1項所述的方法,其中,所述處理操作包括以下中的一項:延遲著色操作;數據壓縮或解壓縮操作;以及圖像處理操作。
- 如申請專利範圍第1項所述的方法,其中,所述處理操作由所述圖形處理流水線的可編程處理級執行。
- 如申請專利範圍第1項所述的方法,其中:所述處理操作得到針對圖塊的一個或更多個採樣位置的輸出值;針對被生成了輸出值的每個採樣位置,所述處理操作使用來自多個採樣位置的集合的採樣位置值來生成所述輸出值;並且用於生成針對採樣位置的輸出值的多個採樣位置的各個集合都被構造為使得正在使用所述多個採樣位置的集合為其生成所述輸出值的所述採樣位置是位於所述採樣位置的集合的角部處的採樣位置。
- 如申請專利範圍第1項所述的方法,其中:所述處理操作得到針對圖塊的一個或更多個採樣位置的輸出值,並且使用多個採樣位置值的集合來產生每個輸出值,並且所述方法包括以下步驟:基於所述處理操作使用以產生每個輸出值的所述採樣位置值的集合的大小和形狀來選擇被儲存以在針對另一個圖塊執行處理操作時使用的所述採樣位置值。
- 如申請專利範圍第1項所述的方法,其中,被儲存以在針對另一個圖塊或多個圖塊執行處理操作時使用的所述採樣位置數據被儲存在與所述圖形處理流水線相關聯並且所述圖形處理流水線能夠訪問的高速緩衝儲存器中。
- 如申請專利範圍第1項所述的方法,該方法包括以下步驟:按照選擇的順序處理所述圖塊的集合,使得採樣位置值在針對另一個圖塊執行處理操作時被需要的圖塊或多個圖塊在所述另一個圖塊之前被處理。
- 如申請專利範圍第1項所述的方法,該方法包括以下步驟:將所述處理操作的輸出寫到所述圖塊緩衝器中的輸出渲染目標,或者寫到外部儲存器。
- 如申請專利範圍第1項所述的方法,該方法包括以下步驟:儲存所述處理操作的輸出以用作所述圖塊的集合中的待處理的另一個圖塊的一個輸入值或多個輸入值。
- 一種操作基於圖塊的圖形處理流水線的方法,所述基於圖塊的圖形處理流水線包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的圖形片段,每個圖形片段都與一個或更多個採樣位置相關聯,並且所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,其被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,其被構造成將所述圖塊緩衝器中儲存的數據寫到所述外部儲存器,所述方法包括以下步驟:所述圖形處理流水線在處理圖塊的集合以生成輸出時,各個圖塊包括多個採樣位置的一陣列: 針對所述圖塊的集合中的至少一個圖塊的多個採樣位置執行一處理操作,是透過:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣位置的陣列相對應的採樣位置值的陣列;使用來自儲存在所述圖塊緩衝器中的所述圖塊的所述至少一個渲染目標,對所述圖塊執行所述處理操作以生成針對所述圖塊內的多個採樣位置的多個輸出值;以及儲存所述圖塊的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值,以在針對所述圖塊的集合中的另一個圖塊執行處理操作時使用。
- 一種操作基於圖塊的圖形處理流水線的方法,所述基於圖塊的圖形處理流水線包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的圖形片段,每個圖形片段都與一個或更多個採樣位置相關聯,並且所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,其被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,其被構造成將所述圖塊緩衝器中儲存的數據寫到所述外部儲存器, 所述方法包括以下步驟:所述圖形處理流水線在處理圖塊的集合以生成輸出時,各個圖塊包括多個採樣位置的一陣列:針對所述圖塊的集合中的至少一個圖塊的多個採樣位置執行一處理操作,是透過:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣位置的陣列相對應的採樣位置值的陣列;從儲存器讀取來自針對所述圖塊的集合中的先前處理的圖塊所生成的一個或更多個渲染目標的一些而非全部的所述採樣位置值;以及使用來自儲存在所述圖塊緩衝器中的所述圖塊的所述至少一個渲染目標中的至少一個和來自所述圖塊的集合的先前處理的圖塊的一個或更多個渲染目標的所讀取的採樣位置值,對所述圖塊執行處理操作以生成針對所述圖塊內的多個採樣位置的多個輸出值,是針對一些的所述圖塊內的那些採樣位置,只有儲存在所述圖塊緩衝器中的所述圖塊的所述至少一個渲染目標的採樣位置,而非所述圖塊內的其它的多個採樣位置。
- 一種基於圖塊的圖形處理流水線,該圖形處理流水線包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的圖形片段,每個 圖形片段都與一個或更多個採樣位置相關聯,並且所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,其被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,其被構造成將所述圖塊緩衝器中儲存的數據寫到所述外部儲存器,其中,所述圖形處理流水線被構造成在處理圖塊的集合以生成輸出時,各個圖塊包括多個採樣位置的一陣列:針對所述圖塊的集合中的一第一圖塊的多個採樣位置執行一處理操作,是透過:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與所述第一圖塊的採樣位置的陣列相對應的採樣位置值的陣列;使用來自儲存在所述圖塊緩衝器中的所述第一圖塊的所述至少一個渲染目標的採樣位置,對所述第一圖塊執行所述處理操作以生成針對所述第一圖塊內的多個採樣位置的多個輸出值;以及儲存所述第一圖塊的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值,以在針對所述圖塊的集合中的至少一個其它圖塊執行操作處理時使用;並且針對所述圖塊的集合中的一第二圖塊的多個採樣位置 執行所述處理操作,是透過:針對所述第二圖塊,渲染包含將在所述處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與所述第二圖塊的採樣位置的陣列相對應的採樣位置值的陣列;以及使用來自儲存在所述圖塊緩衝器中的所述第二圖塊的所述至少一個渲染目標的採樣位置和來自所述第一圖塊的被儲存以在針對所述圖塊的集合中的另一個圖塊執行操作處理時使用的所述採樣位置值中的一個或更多個採樣位置值,對所述第二圖塊執行所述處理操作以生成針對所述第二圖塊內的多個採樣位置的多個輸出值,是針對一些的所述第二圖塊內的那些採樣位置,只有儲存在所述圖塊緩衝器中的所述第二圖塊的所述至少一個渲染目標的採樣位置,而非所述第二圖塊內的其它的多個採樣位置。
- 如申請專利範圍第14項所述的圖形處理流水線,其中,所述圖塊的集合包括四個或更多個圖塊,並且所述圖形處理流水線被構造成針對所述圖塊的集合中的兩個或更多個圖塊:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中;儲存所述圖塊的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值,以在針對所述圖塊的集合中的至少一個其它圖塊執行處理操作時使用;以及 使用儲存在所述圖塊緩衝器中的至少一個或多個渲染目標和所述圖塊的集合中的至少一個其它圖塊的一個或更多個儲存的採樣位置值,對所述圖塊執行處理操作以生成針對所述圖塊的輸出。
- 如申請專利範圍第14或15項所述的圖形處理流水線,其中,所述圖形處理流水線被構造成:儲存針對第一圖塊生成的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值,以在針對所述圖塊的集合中的至少一個相鄰圖塊執行處理操作時使用;以及所述處理操作隨後使用來自所述第一圖塊的儲存的所述採樣位置值所針對的所述圖塊的集合中的所述第二圖塊包括所述圖塊的集合中的與所述第一圖塊相鄰的圖塊。
- 如申請專利範圍第14項所述的圖形處理流水線,其中,所述處理操作包括以下中的一項:延遲著色操作;數據壓縮或解壓縮操作;以及圖像處理操作。
- 如申請專利範圍第14項所述的圖形處理流水線,其中,所述圖形處理流水線包括執行所述處理操作的可編程處理級。
- 如申請專利範圍第14項所述的圖形處理流水線,其中:所述處理操作得到針對圖塊的一個或更多個採樣位置的輸出值;所述處理操作針對被生成了輸出值的每個採樣位置使用來自多個採樣位置的集合的採樣位置值來生成所述輸出值; 並且被用於生成採樣位置的輸出值的每個多個採樣位置的集合都被構造成使得正在使用所述多個採樣位置的集合為其生成所述輸出值的所述採樣位置是位於所述採樣位置的集合的角部處的採樣位置。
- 如申請專利範圍第14項所述的圖形處理流水線,其中:所述處理操作得到針對圖塊的一個或更多個採樣位置的輸出值,並且使用多個採樣位置值的集合來產生每個輸出值;並且所述圖形處理流水線被構造成:基於所述處理操作使用來產生每個輸出值的採樣位置值的集合的大小和形狀來選擇被儲存以在針對另一個圖塊執行處理操作時使用的所述採樣位置值。
- 如申請專利範圍第14項所述的圖形處理流水線,其中,被儲存以在針對另一個圖塊或多個圖塊執行處理操作時使用的所述採樣位置數據被儲存在與所述圖形處理流水線相關聯並且所述圖形處理流水線能夠訪問的高速緩衝儲存器中。
- 如申請專利範圍第14項所述的圖形處理流水線,其中,所述圖形處理流水線被構造成按照選擇的順序處理所述圖塊的集合,使得採樣位置值在針對另一個圖塊執行處理操作時被需要的一個圖塊或多個圖塊在所述另一個圖塊之前被處理。
- 如申請專利範圍第14項所述的圖形處理流水線,其中,所述圖形處理流水線被構造成將所述處理操作的輸出寫入所述圖塊緩衝器中的輸出渲染目標,或者寫入外部儲存器。
- 如申請專利範圍第14項所述的圖形處理流水線,其中,所述圖形處理流水線被構造成儲存所述處理操作的輸出以用作所述圖塊的集合中的待處理的另一個圖塊的一個輸入值或多個輸入值。
- 一種基於圖塊的圖形處理流水線,包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的圖形片段,每個圖形片段都與一個或更多個採樣位置相關聯,並且所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,其被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,其被構造成將所述圖塊緩衝器中儲存的數據寫到所述外部儲存器,所述方法包括以下步驟:所述圖形處理流水線被構造成在處理圖塊的集合以生成輸出時,各個圖塊包括多個採樣位置的一陣列:針對所述圖塊的集合中的至少一個圖塊的多個採樣位置執行一處理操作,是透過:渲染包含將在處理操作中使用的數據的至少一個渲染目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器 中,每個渲染目標都包括與關注的所述圖塊的採樣位置的陣列相對應的採樣位置值的陣列;使用來自儲存在所述圖塊緩衝器中的所述圖塊的所述至少一個渲染目標中,對所述圖塊執行所述處理操作以生成針對所述圖塊內的多個採樣位置的多個輸出值;以及儲存所述圖塊的儲存在所述圖塊緩衝器中的所述至少一個渲染目標中的一個渲染目標或多個渲染目標的一些而非全部的所述採樣位置值,以在針對所述圖塊的集合中的另一個圖塊執行處理操作時使用。
- 一種基於圖塊的圖形處理流水線,包括:多個處理級,至少包括光柵化器和渲染器,所述光柵化器對輸入的圖元進行光柵化以生成待處理的圖形片段,每個圖形片段都與一個或更多個採樣位置相關聯,並且所述渲染器處理由所述光柵化器生成的片段以生成渲染的片段數據;一圖塊緩衝器,其被構造成在將渲染的片段數據寫出到外部儲存器之前在所述圖形處理流水線本地地儲存渲染的片段數據;以及一寫出級,其被構造成將所述圖塊緩衝器中儲存的數據寫到所述外部儲存器,所述圖形處理流水線被構造成在處理圖塊的集合以生成輸出時,各個圖塊包括多個採樣位置的一陣列:針對所述圖塊的集合中的至少一個圖塊的多個採樣位置執行一處理操作,是透過:渲染包含將在處理操作中使用的數據的至少一個渲染 目標,並且將所述至少一個渲染目標儲存在所述圖塊緩衝器中,每個渲染目標都包括與關注的所述圖塊的採樣位置的陣列相對應的採樣位置值的陣列;從儲存器讀取針對所述圖塊的集合中的先前處理的圖塊生成的一個更或多個渲染目標的一些而非全部的所述採樣位置值;以及使用來自儲存在所述圖塊緩衝器中的所述圖塊的所述至少一個渲染目標中的至少一個和來自所述圖塊的集合中的先前處理的圖塊的一個渲染目標或多個渲染目標的所讀取的採樣位置值,對所述圖塊執行處理操作以生成針對所述圖塊內的多個採樣位置的多個輸出值,是針對一些的所述圖塊內的那些採樣位置,只有儲存在所述圖塊緩衝器中的所述圖塊的所述至少一個渲染目標的採樣位置,而非所述圖塊內的其它的多個採樣位置。
- 一種包括代碼的計算機程式產品,所述代碼適於在所述程序在數據處理系統上運行時執行如申請專利範圍第1項所述的方法的所有步驟。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/015,897 | 2013-08-30 | ||
US14/015,897 US9514563B2 (en) | 2013-08-30 | 2013-08-30 | Graphics processing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201516953A TW201516953A (zh) | 2015-05-01 |
TWI637346B true TWI637346B (zh) | 2018-10-01 |
Family
ID=51752271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103129759A TWI637346B (zh) | 2013-08-30 | 2014-08-28 | 圖形處理系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9514563B2 (zh) |
CN (1) | CN104424621B (zh) |
GB (1) | GB2519422B (zh) |
TW (1) | TWI637346B (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014071140A2 (en) * | 2012-11-01 | 2014-05-08 | Interdigital Patent Holdings, Inc. | Methods to enable wlan proximity service |
US9449362B2 (en) * | 2013-09-06 | 2016-09-20 | Intel Corporation | Techniques for reducing accesses for retrieving texture images |
US9349213B2 (en) * | 2013-09-09 | 2016-05-24 | Vivante Corporation | Tile-based accumulative multi-layer alpha blending systems and methods |
US9934604B2 (en) * | 2013-12-27 | 2018-04-03 | Intel Corporation | Culling using masked depths for MSAA |
GB2526598B (en) | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
US10417817B2 (en) * | 2014-11-13 | 2019-09-17 | Nvidia Corporation | Supersampling for spatially distributed and disjoined large-scale data |
US9772848B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772849B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
KR102341267B1 (ko) * | 2015-05-04 | 2021-12-20 | 삼성전자주식회사 | 양안 시차 영상에 대한 렌더링 방법 및 장치 |
US10089775B2 (en) * | 2015-06-04 | 2018-10-02 | Samsung Electronics Co., Ltd. | Automated graphics and compute tile interleave |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US10008030B2 (en) | 2015-09-07 | 2018-06-26 | Samsung Electronics Co., Ltd. | Method and apparatus for generating images |
US20170076417A1 (en) * | 2015-09-10 | 2017-03-16 | Apple Inc. | Display frame buffer compression |
US10275493B1 (en) * | 2016-01-18 | 2019-04-30 | OmniSci, Inc. | System and method for executing queries on multi-graphics processing unit systems |
GB2546810B (en) * | 2016-02-01 | 2019-10-16 | Imagination Tech Ltd | Sparse rendering |
CN107240142B (zh) * | 2016-03-28 | 2020-10-16 | 龙芯中科技术有限公司 | 图形绘制方法及装置 |
GB2548852B (en) | 2016-03-30 | 2020-10-28 | Advanced Risc Mach Ltd | Method of operating a graphics processing pipeline by compressing a block of sampling positions having the same data value |
US10169887B2 (en) | 2016-06-10 | 2019-01-01 | Apple Inc. | Accelerated blits of multisampled textures on GPUs |
US10127707B2 (en) * | 2016-06-27 | 2018-11-13 | Intel Corporation | Discard mechanism for tile-based rendering |
US20180082465A1 (en) * | 2016-09-16 | 2018-03-22 | Prasoonkumar Surti | Apparatus and method for optimized tile-based rendering |
CN108073550A (zh) | 2016-11-14 | 2018-05-25 | 耐能股份有限公司 | 缓冲装置及卷积运算装置与方法 |
TWI634436B (zh) * | 2016-11-14 | 2018-09-01 | 耐能股份有限公司 | 緩衝裝置及卷積運算裝置與方法 |
US10445852B2 (en) | 2016-12-22 | 2019-10-15 | Apple Inc. | Local image blocks for graphics processing |
GB2558886B (en) | 2017-01-12 | 2019-12-25 | Imagination Tech Ltd | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space |
GB2558885B (en) * | 2017-01-12 | 2021-04-07 | Imagination Tech Ltd | Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering |
US10417815B2 (en) * | 2017-01-27 | 2019-09-17 | Advanced Micro Devices, Inc. | Out of order pixel shader exports |
US10460418B2 (en) | 2017-02-10 | 2019-10-29 | Microsoft Technology Licensing, Llc | Buffer index format and compression |
US10235735B2 (en) | 2017-04-10 | 2019-03-19 | Intel Corporation | Graphics processor with tiled compute kernels |
GB2561557B (en) * | 2017-04-13 | 2020-08-12 | Advanced Risc Mach Ltd | Graphics processing method and apparatus in which modified edge positions are used in rasterisation |
US10789202B2 (en) * | 2017-05-12 | 2020-09-29 | Google Llc | Image processor with configurable number of active cores and supporting internal network |
US10074210B1 (en) * | 2017-07-25 | 2018-09-11 | Apple Inc. | Punch-through techniques for graphics processing |
CN108133453A (zh) * | 2017-12-13 | 2018-06-08 | 北京奇虎科技有限公司 | 一种基于OpenGL的图像处理器及其功能扩展方法 |
GB2571979B8 (en) * | 2018-03-15 | 2023-07-12 | Advanced Risc Mach Ltd | Graphics processing |
GB2570743B (en) | 2018-06-29 | 2021-06-23 | Imagination Tech Ltd | Tile assignment to processing cores within a graphics processing unit |
CN109446110A (zh) * | 2018-10-16 | 2019-03-08 | 西安邮电大学 | 可实现数据地址连续的U型布局tile缓存方法 |
GB2580179B (en) * | 2018-12-21 | 2021-08-18 | Imagination Tech Ltd | Tile-based scheduling |
CN112426711B (zh) * | 2020-10-23 | 2024-03-26 | 杭州电魂网络科技股份有限公司 | Bloom效果处理的方法、系统、电子装置和存储介质 |
GB2603156B (en) * | 2021-01-28 | 2023-05-10 | Advanced Risc Mach Ltd | Tile-based graphics processing systems |
WO2024073953A1 (zh) * | 2022-10-08 | 2024-04-11 | 芯动微电子科技(珠海)有限公司 | 一种分块渲染模式图形处理方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6914609B2 (en) * | 2002-02-28 | 2005-07-05 | Sun Microsystems, Inc. | Multiple scan line sample filtering |
US20060018558A1 (en) * | 2003-05-27 | 2006-01-26 | Nikon Corporation | Image processing apparatus and image processing program |
US20110148919A1 (en) * | 2009-12-17 | 2011-06-23 | Frode Heggelund | Graphics processing systems |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09212678A (ja) | 1996-01-31 | 1997-08-15 | Sony Corp | 3次元画像生成装置 |
GB2353686B (en) | 1996-04-30 | 2001-05-02 | Evans & Sutherland Computer Co | Computer graphics system with adaptive pixel multisampler |
US5905506A (en) | 1996-08-26 | 1999-05-18 | Adobe Systems Incorporated | Shared tile image representations |
US6104417A (en) | 1996-09-13 | 2000-08-15 | Silicon Graphics, Inc. | Unified memory computer architecture with dynamic graphics memory allocation |
US7102646B1 (en) | 1997-11-25 | 2006-09-05 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
US6856320B1 (en) | 1997-11-25 | 2005-02-15 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
US6044178A (en) | 1998-03-10 | 2000-03-28 | Seiko Epson Corporation | LCD projector resolution translation |
US6614448B1 (en) | 1998-12-28 | 2003-09-02 | Nvidia Corporation | Circuit and method for displaying images using multisamples of non-uniform color resolution |
US6380935B1 (en) | 1999-03-17 | 2002-04-30 | Nvidia Corporation | circuit and method for processing render commands in a tile-based graphics system |
US6466223B1 (en) | 1999-03-24 | 2002-10-15 | Microsoft Corporation | Method and apparatus for texture memory management |
US6674443B1 (en) | 1999-12-30 | 2004-01-06 | Stmicroelectronics, Inc. | Memory system for accelerating graphics operations within an electronic device |
US7453459B2 (en) | 2001-02-26 | 2008-11-18 | Adobe Systems Incorporated | Composite rendering 3-D graphical objects |
US6798421B2 (en) | 2001-02-28 | 2004-09-28 | 3D Labs, Inc. Ltd. | Same tile method |
US6943809B2 (en) | 2001-06-12 | 2005-09-13 | Adobe Systems Incorporated | Tiled vector flattened output |
US6819324B2 (en) | 2002-03-11 | 2004-11-16 | Sun Microsystems, Inc. | Memory interleaving technique for texture mapping in a graphics system |
US7154502B2 (en) | 2002-03-19 | 2006-12-26 | 3D Labs, Inc. Ltd. | 3D graphics with optional memory write before texturing |
GB0319697D0 (en) | 2003-08-21 | 2003-09-24 | Falanx Microsystems As | Method of and apparatus for differential encoding and decoding |
US7053893B1 (en) | 2003-12-15 | 2006-05-30 | Nvidia Corporation | Position conflict detection and avoidance in a programmable graphics processor using tile coverage data |
US7589722B2 (en) | 2004-08-10 | 2009-09-15 | Ati Technologies, Ulc | Method and apparatus for generating compressed stencil test information |
GB0426170D0 (en) | 2004-11-29 | 2004-12-29 | Falanx Microsystems As | Processing of computer graphics |
US8199825B2 (en) | 2004-12-14 | 2012-06-12 | Hewlett-Packard Development Company, L.P. | Reducing the resolution of media data |
US8212832B2 (en) | 2005-12-08 | 2012-07-03 | Ati Technologies Ulc | Method and apparatus with dynamic graphics surface memory allocation |
US7660486B2 (en) | 2006-07-10 | 2010-02-09 | Aten International Co., Ltd. | Method and apparatus of removing opaque area as rescaling an image |
US10115221B2 (en) | 2007-05-01 | 2018-10-30 | Advanced Micro Devices, Inc. | Stencil compression operations |
US7948500B2 (en) | 2007-06-07 | 2011-05-24 | Nvidia Corporation | Extrapolation of nonresident mipmap data using resident mipmap data |
US8325203B1 (en) | 2007-08-15 | 2012-12-04 | Nvidia Corporation | Optimal caching for virtual coverage antialiasing |
GB0900700D0 (en) * | 2009-01-15 | 2009-03-04 | Advanced Risc Mach Ltd | Methods of and apparatus for processing graphics |
GB2469526B (en) | 2009-04-17 | 2015-06-24 | Advanced Risc Mach Ltd | Generating and resolving pixel values within a graphics processing pipeline |
US8988443B2 (en) | 2009-09-25 | 2015-03-24 | Arm Limited | Methods of and apparatus for controlling the reading of arrays of data from memory |
US9508185B2 (en) | 2011-05-02 | 2016-11-29 | Sony Interactive Entertainment Inc. | Texturing in graphics hardware |
GB2497762B (en) | 2011-12-20 | 2018-05-23 | Advanced Risc Mach Ltd | Intermediate value storage within a graphics processing apparatus |
US9183664B2 (en) | 2012-05-03 | 2015-11-10 | Apple Inc. | Tiled forward shading with improved depth filtering |
US9899007B2 (en) | 2012-12-28 | 2018-02-20 | Think Silicon Sa | Adaptive lossy framebuffer compression with controllable error rate |
US9384522B2 (en) | 2012-12-28 | 2016-07-05 | Qualcomm Incorporated | Reordering of command streams for graphical processing units (GPUs) |
-
2013
- 2013-08-30 US US14/015,897 patent/US9514563B2/en active Active
-
2014
- 2014-08-28 GB GB1415243.3A patent/GB2519422B/en active Active
- 2014-08-28 TW TW103129759A patent/TWI637346B/zh active
- 2014-09-01 CN CN201410440493.0A patent/CN104424621B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6914609B2 (en) * | 2002-02-28 | 2005-07-05 | Sun Microsystems, Inc. | Multiple scan line sample filtering |
US20060018558A1 (en) * | 2003-05-27 | 2006-01-26 | Nikon Corporation | Image processing apparatus and image processing program |
US20110148919A1 (en) * | 2009-12-17 | 2011-06-23 | Frode Heggelund | Graphics processing systems |
Also Published As
Publication number | Publication date |
---|---|
TW201516953A (zh) | 2015-05-01 |
US9514563B2 (en) | 2016-12-06 |
GB201415243D0 (en) | 2014-10-15 |
GB2519422A (en) | 2015-04-22 |
CN104424621B (zh) | 2019-05-14 |
GB2519422B (en) | 2020-07-08 |
US20150062154A1 (en) | 2015-03-05 |
CN104424621A (zh) | 2015-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI637346B (zh) | 圖形處理系統 | |
US11710268B2 (en) | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space | |
US11010959B2 (en) | Graphics processing systems | |
US9767595B2 (en) | Graphics processing systems | |
CN112085658B (zh) | 用于非均匀帧缓冲器栅格化的装置和方法 | |
KR102475212B1 (ko) | 타일식 아키텍처들에서의 포비티드 렌더링 | |
CN110488967B (zh) | 图形处理 | |
US9070200B2 (en) | Graphics processing systems | |
US20160247249A1 (en) | Graphics processing systems | |
KR102264163B1 (ko) | 텍스쳐를 처리하는 방법 및 장치 | |
US10769838B2 (en) | Hierarchical graphics processing for primitives | |
US9519982B2 (en) | Rasterisation in graphics processing systems | |
US9721381B2 (en) | System, method, and computer program product for discarding pixel samples | |
KR20130141445A (ko) | 안티-앨리어싱된 샘플들의 분할 저장 | |
US9607356B2 (en) | Graphics processing systems | |
US11170566B2 (en) | Multi-rate shading using replayed screen space tiles | |
CN110738593B (zh) | 图形处理器及其操作方法、图形处理系统、编译器 | |
US9916675B2 (en) | Graphics processing systems | |
US10726610B2 (en) | Efficient graphics processing using metadata | |
US11978156B2 (en) | Graphics processing | |
US11321803B2 (en) | Graphics processing primitive patch testing |