在圖形處理系統(tǒng)中處理具有未解析片段的基元的制作方法
【專利摘要】本發(fā)明涉及在圖形處理系統(tǒng)中處理具有未解析片段的基元。一種圖形處理系統(tǒng)對基元的片段執(zhí)行隱藏面消除和紋理化/著色化。該系統(tǒng)包括用于存儲解析片段的深度值的主深度緩沖器(PDB)以及用于存儲未解析片段的深度值的次級深度緩沖器(SDB)。針對來自PDB或SDB的深度值對傳入片段進行深度測試。當片段通過深度測試時,如果其為解析片段(例如,如果其不透明或半透明)則其深度值被存儲在PDB中,并且如果其為未解析片段(例如,如果其為穿通片段)則其深度值被存儲在SDB中。這為后續(xù)不透明對象提供更多機會以重寫通過深度測試的穿通片段,由此減少可能花費在最終將不貢獻于最終渲染圖像的片段上的不必要的處理和時間。
【專利說明】
在圖形處理系統(tǒng)中處理具有未解析片段的基元
技術領域
[0001]本發(fā)明涉及圖形處理系統(tǒng),具體涉及在圖形處理系統(tǒng)中處理具有未解析片段的基
J L ο
【背景技術】
[0002]圖形處理系統(tǒng)被用于處理圖形數(shù)據(jù)以便渲染圖像。作為由圖形處理系統(tǒng)執(zhí)行的處理的部分,三維場景中的對象的基元被處理以確定基元中的哪些基元在圖形處理系統(tǒng)的渲染空間的每個樣本位置處可見,并且確定在樣本位置處的可見基元的外觀。在一些示例中,單個樣本位置可以與最終渲染的圖像的像素位置相對應,但是在其他示例中,多于一個(例如,四個)樣本位置可以與每個像素位置相對應。典型的圖形處理系統(tǒng)的兩個階段為:(i)隱藏面消除(HSR),其中由場景中的其他面隱藏的面被消除,以及(ii)紋理化和/或著色化,其中對象的面被給予合適的外觀。在延遲渲染圖形處理系統(tǒng)中,隱藏面消除階段在紋理化/著色化階段之前被實施。
[0003]延遲渲染圖形處理系統(tǒng)100的部分的示例被示出在圖1中。系統(tǒng)100包括圖形處理單元(GPU)102,其包括HSR模塊104以及用于對基元的片段執(zhí)行紋理化和/或著色化的片段處理模塊106。作為術語,“片段”為在樣本位置處的基元的元素。系統(tǒng)100還包括存儲器108,其被布置為向GPU 102提供基元并從GPU 102接收經(jīng)處理的像素。HSR模塊104包括深度測試邏輯110、深度緩沖器112以及標簽緩沖器114。在延遲渲染系統(tǒng)100中,HSR模塊104被布置為從存儲器108接收基元。深度緩沖器112存儲針對樣本位置的數(shù)組的深度值以指示在每個樣本位置處的當前深度。深度測試邏輯110使用存儲在深度緩沖器112中的深度值以執(zhí)行針對傳入片段的深度測試以確定片段是否由先前經(jīng)處理的片段隱藏。如果傳入片段未被隱藏,則深度緩沖器112中的合適深度值能夠被更新以反映傳入片段的深度。在與不透明對象類型或半透明對象類型相關聯(lián)的片段的存在和/或深度值將不被片段處理模塊106更改的意義上,這些片段為解析片段。如下面所描述的,在此引用的“存在”是基元中的存在,而非例如最終圖像(其中諸如遮擋的其他因素可以應用)中的存在。因此,如果傳入片段是不透明的或半透明的,則深度測試邏輯110將使用(通過深度測試的)傳入片段的深度值來將深度值重寫到深度緩沖器112中。如果傳入片段是不透明的,則重寫的片段能夠被丟棄,因為它們將不貢獻于最終渲染的圖像。然而,如果傳入片段是半透明的,則重寫的片段可能仍然貢獻于最終渲染的圖像。因此,半透明的片段被處理使得使用由應用指示的混合方程來將新的半透明的片段值與先前片段值進行組合。通常,混合方程被實施在片段處理模塊106中并且在被稱為“阿爾法混合”的過程中使用源自于紋理的阿爾法值以便確定片段多么透明。
[0004]其他類型的對象可以包括未解析片段。如果片段的存在和/或深度值由片段處理模塊106更改,則片段可以為“未解析”的。例如,當穿通對象類型到達HSR模塊104時生成的片段最初是未解析片段,因為它們的存在尚待由片段處理模塊106解析。具有穿通對象類型的基元可以具有通過紋理化和著色化操作確定的孔(即,透明區(qū)域)。片段在其與基元的不透明區(qū)域相對應時被稱為存在于基元中,并且在其與基元的透明區(qū)域相對應時被稱為不存在。穿通對象類型應當由HSR模塊處理使得有可能在去除被確定為不存在的任何片段之后通過剩余的孔來看到。如果(基于將其深度值與深度緩沖器112中的對應深度值進行比較)穿通片段通過初始深度測試,則穿通片段被轉發(fā)到片段處理模塊106,但是在那時深度緩沖器112中的深度值不被更新,因為深度緩沖器112被布置為僅僅保持針對解析片段的深度值(即將不被來自片段處理模塊106的反饋更改或無效的深度值)以確保深度測試的結果是準確的。片段處理模塊106通過執(zhí)行指示片段是否“存在”、即是否為基元的部分的測試(其可以被稱為“阿爾法測試”)來處理穿通片段。以這種方式,片段處理模塊106解析穿通片段的存在。針對片段的阿爾法測試使用可以源自于紋理的阿爾法值以便確定片段是否存在。該測試的結果被反饋回到深度測試邏輯110,如由圖1中的“反饋”示出的。如果片段被確定為不存在(即,如果片段未通過阿爾法測試),則沒有針對該片段的深度值被寫入到深度緩沖器112中。然而,如果片段被確定為存在(S卩,如果片段通過阿爾法測試),則到深度測試邏輯110的反饋指示片段的存在已經(jīng)被解析,使得片段現(xiàn)在可以被當作解析片段。深度測試邏輯110能夠之后利用穿通片段的深度值來更新深度緩沖器112。
[0005]圖1示出了標簽緩沖器114位于深度測試邏輯110與片段處理模塊106之間的接口處。標簽是基元標識符,其將片段與片段為其部分的基元相關聯(lián),并且其允許諸如針對基元的紋理化和著色化數(shù)據(jù)的屬性在需要時被提取。標簽緩沖器114被用于保持針對來自針對當前被處理的渲染空間的部分中(例如,當系統(tǒng)100為基于圖塊的系統(tǒng)時在圖塊中)的每個樣本位置的最前面的基元的片段(例如,通過深度測試的那些片段)的標簽。如以上所描述的,針對通過深度測試的不透明片段的標簽通常被寫入到標簽緩沖器114中,即使它們重寫如與正確操作相對應的現(xiàn)有標簽以處理不透明片段。來自半透明和穿通基元的片段可能需要與它們透支的片段進行組合。這些片段的組合通常必須被執(zhí)行以便它們由應用提交。因此,無論何時半透明或穿通片段被發(fā)現(xiàn)為位于當前存儲在標簽緩沖器114內的片段前面,HSR模塊104就將當前可見的標簽沖刷到片段處理模塊106。如以上所描述的,在穿通片段的情況下,片段的存在以及因此其深度值是否應當在深度緩沖器112中被更新由片段處理模塊106確定。因此,針對穿通基元的標簽還必須在當前存儲在標簽緩沖器114內的任何標簽已經(jīng)被沖刷之后直接被沖刷。注意,標簽緩沖器114中的標簽和位置的組合定義片段,因此對來自標簽緩沖器114的標簽的沖刷能夠被認為是沖刷來自標簽緩沖器114的片段。在概念上,考慮片段被存儲在標簽緩沖器114中并且片段被沖刷出去到片段處理模塊106是有意義的。在實際實施方式中,片段的該概念流程通過將標簽存儲在標簽緩沖器114中并沖刷來自標簽緩沖器114的標簽來實現(xiàn)。
[0006]能夠認識到,在延遲渲染系統(tǒng)(諸如,系統(tǒng)100)中,具有未解析片段的對象(例如,穿通對象)能夠影響系統(tǒng)的效率。例如,當遇到穿通對象的片段時,HSR模塊104不能夠利用片段的深度值來更新深度緩沖器112,直到其已經(jīng)接收到來自片段處理模塊106的反饋的時間,即直到片段的存在已經(jīng)被解析。這可以具有許多不利后果,諸如:
[0007]-后續(xù)由不透明片段透支的穿通片段可以不必由片段處理模塊106著色化,即使它們將不貢獻于最終渲染的圖像,因此存在由GPU102執(zhí)行的不必要的處理;
[0008]-跟隨穿通片段的不透明片段不能夠被處理直到針對穿通片段的結果已經(jīng)從片段處理模塊106返回到HSR模塊104,因此在穿通片段的深度值被解析的同時可能存在處理中的停止;并且
[0009]-當在HSR模塊104從片段處理模塊106接收到反饋時,針對已經(jīng)被確定為存在的穿通片段的深度值需要被重新計算,使得深度緩沖器112能夠正確地被更新。
【發(fā)明內容】
[0010]提供本
【發(fā)明內容】
以按照簡化的形式介紹下面在【具體實施方式】中進一步描述的概念的選擇。本
【發(fā)明內容】
并非旨在確定要求保護的主體的關鍵特征或必要特征,也不旨在用于限制要求保護的主體的范圍。
[0011 ]提供了一種圖形處理系統(tǒng),包括:第一深度緩沖器,被配置為將針對多個樣本位置的解析片段的深度值存儲在所述圖形處理系統(tǒng)的渲染空間內;第二深度緩沖器,被配置為存儲針對所述樣本位置的未解析片段的深度值;以及深度測試邏輯,被配置為接收與基元相關的基元數(shù)據(jù)并且使用存儲在所述深度緩沖器中的至少一個深度緩沖器中的深度值來對所述基元的片段執(zhí)行深度測試;其中所述圖形處理系統(tǒng)被配置為:(i)在通過深度測試的片段為解析片段時將所述片段的所述深度值存儲在所述第一深度緩沖器中,以及(ii)在通過深度測試的片段為未解析片段時將所述片段的所述深度值存儲在所述第二深度緩沖器中。
[0012]還提供了一種在圖形處理系統(tǒng)中處理基元的方法,所述圖形處理系統(tǒng)包括第一深度緩沖器和第二深度緩沖器,所述第一深度緩沖器被配置為將針對多個樣本位置的解析片段的深度值存儲在所述圖形處理系統(tǒng)的渲染空間內,第二深度緩沖器被配置為存儲針對所述樣本位置的未解析片段的深度值,所述方法包括:在所述圖形處理系統(tǒng)的深度測試邏輯處接收與基元相關的基元數(shù)據(jù);使用存儲在所述深度緩沖器中的至少一個深度緩沖器中的深度值來對所述基元的片段執(zhí)行深度測試;以及將通過深度測試的片段的所述深度值存儲在所述深度緩沖器中的一個深度緩沖器中,其中:如果所述片段為解析片段,則將所述片段的所述深度值存儲在所述第一深度緩沖器中,并且如果所述片段為未解析片段,則將所述片段的所述深度值存儲在所述第二深度緩沖器中。
[0013]還可以提供適于當代碼在計算機上運行時執(zhí)行本文中描述的方法中的任何的步驟的計算機可讀代碼。還可以提供用于生成本文中描述的示例中的任何示例的圖形處理系統(tǒng)的計算機可讀代碼。所述計算機可讀代碼可以被編碼在計算機可讀存儲介質上。
[0014]如對于技術人員將顯而易見的,上述特征可以在合適的情況下被組合,并且可以與本文中描述的示例的方面中的任何方面組合。
【附圖說明】
[0015]現(xiàn)在將參考附圖詳細描述示例,在附圖中:
[0016]圖1是現(xiàn)有技術的圖形處理系統(tǒng)的部分的示意圖;
[0017]圖2是實施兩個深度緩沖的圖形處理系統(tǒng)的部分的示意圖;
[0018]圖3a和3b示出了圖示在圖形處理系統(tǒng)中處理基元的方法的流程圖;
[0019]圖4表示第一深度緩沖器和第二深度緩沖器的深度值以及針對渲染空間的部分中的32個樣本位置的列的傳入基元的深度值;以及
[0020]圖5示出了用于生成體現(xiàn)圖形處理系統(tǒng)的集成電路的集成電路制造系統(tǒng)。
[0021]附圖圖示了各種示例。技術人員將認識到,附圖中的圖示的元件邊界(例如,框、框的組或者其他形狀)表示邊界的一個示例??赡艿氖?,在一些示例中,一個元件可以被設計為多個元件或者該多個元件可以被設計為一個元件。在合適的情況下,貫穿附圖中使用共同的附圖標記來指示相似的特征。
【具體實施方式】
[0022]發(fā)明人已經(jīng)意識到延遲渲染系統(tǒng)處理具有未解析片段的對象(例如,穿通對象)的效率能夠通過使用兩個深度緩沖器來改進。具體地,第一深度緩沖器(其可以在本文中被稱為主深度緩沖器或PDB)被提供用于存儲針對解析片段的深度值,并且第二深度緩沖器(其可以在本文中被稱為次級深度緩沖器或SDB)被提供用于存儲針對未解析片段的深度值。當片段通過深度測試時,如果該片段為解析片段則其深度值可以被存儲在TOB中,并且如果該片段為未解析片段則其深度值可以被存儲在SDB中。例如,這可以為后續(xù)不透明對象提供更多機會以重寫通過深度測試的穿通片段,由此減少對最終將不貢獻于最終渲染的圖像的片段執(zhí)行的不必要的處理。作為另一示例,可以避免對針對通過阿爾法測試的片段的深度值的重新計算,因為SDB存儲被轉發(fā)用于阿爾法測試的穿通片段的深度值,使得如果片段通過阿爾法測試,則SDB可以已經(jīng)存儲了其深度值并且能夠使用那些(現(xiàn)在解析的)深度值來更ff PDBο
[0023]片段可以出于不同的原因而為“未解析”的。例如,在以下中的一個或多個情況時片段可以為未解析的:(i)該片段的深度未被解析,(ii)該片段的存在未被解析,或者(iii)該片段的可見性未被解析。例如,輸出深度片段(其還可以被稱為“o-depth”片段)為其深度值能夠通過片段著色器的紋理化/著色化過程而被更改的片段。也就是說,o-depth片段具有著色器相關的深度值。換言之,o-depth片段具有未解析的深度值直到片段處理模塊已經(jīng)解析了其深度值。作為另一示例,穿通對象的片段具有未解析的存在直到阿爾法測試(例如,通過片段處理模塊)被執(zhí)行以解析其存在。作為下面更詳細描述的另一示例,如果位于相同樣本位置處的先前片段的深度值或存在為未解析的,則片段的可見性為未解析的。在這種情況下,片段的可見性不能夠被解析直到先前片段的深度值或存在已經(jīng)被解析。
[0024]對比之下,片如果片段的深度、存在和可見性全部被解析,則該片段可以為“解析”的。例如,與不透明對象類型或半透明對象類型相關聯(lián)的片段為解析片段除非片段的可見性未被解析。在全部包括不透明對象和半透明對象并且沒有穿通對象或o-depth對象的場景中,所有片段為解析的。
[0025]現(xiàn)在將僅通過示例的方式來描述實施例。
[0026]圖2示出了包括GPU 202和存儲器208的圖形處理系統(tǒng)200的示例。GPU 202包括被配置為對基元執(zhí)行隱藏面消除的HSR模塊204和被配置為對基元執(zhí)行著色化和紋理化中的一個或兩者的片段處理模塊206。在片段處理模塊206被布置為在HSR模塊204之后作用于片段的意義上,圖形處理系統(tǒng)200是延遲渲染系統(tǒng)。存儲器208被布置為向GPU 202提供基元并從GPU 202接收經(jīng)處理的像素。HSR模塊204包括深度測試邏輯210、第一深度緩沖器212(其在本文中被稱為主深度緩沖器或“PDB”)、三個標簽緩沖器21屯、2142和2143的集合、第二深度緩沖器216(其在本文中被稱為次級深度緩沖器或“SDB”)以及用于存儲指示符218的集合的存儲庫,如下面更詳細地描述的,指示符218指示深度緩沖器中的哪個深度緩沖器要用于HSR模塊204中的深度測試。在延遲渲染系統(tǒng)200中,HSR模塊204被布置為從存儲器208接收基元,片段處理模塊206被布置為從存儲器208接收紋理數(shù)據(jù)并將經(jīng)處理的像素值提供給存儲器208。
[0027]HSR模塊204維持TOB 212和SDB 216使得TOB 212保持針對渲染空間的樣本位置的當前完全解析的深度值,并且SDB 216包含針對渲染空間的樣本位置的(例如,與穿通對象相關聯(lián)的)未解析片段的最前面的深度值,其中那些片段已經(jīng)通過深度測試并且當前還沒有被透支。PDB 212和SDB 216存儲針對渲染空間的相同樣本位置的深度值。例如,如果系統(tǒng)200為基于圖塊的圖形系統(tǒng),則用于渲染整幅圖像的渲染空間被劃分成多個塊或“圖塊”,其通常為矩形并且可以例如均包括樣本位置的32x32的塊。圖塊可以為其他尺寸和/或形狀,例如每個圖塊可以包括16x16或32x16個樣本位置的塊。在基于圖塊的圖形系統(tǒng)中,PDB 212和SDB 216可以存儲與渲染空間內的一個圖塊相對應的深度值。在其他示例中,圖形處理系統(tǒng)不是基于圖塊的,在這種情況下,PDB 212和SDB 216可以存儲與用于渲染圖像的整個渲染空間相對應的深度值。
[0028]對次級深度緩沖器216用于存儲針對未解析片段的深度值(例如針對通過深度測試的穿通片段的深度值)的使用意味著有可能針對穿通片段的深度值測試后續(xù)對象并且在穿通片段由不透明片段透支時潛在地丟棄它們,并且這在無需將穿通片段提交到片段處理模塊206的情況下來實現(xiàn)。
[0029]下面參考圖3中示出的流程圖來描述圖形處理系統(tǒng)200的用于處理基元的操作。
[0030]在步驟S302中,在深度測試邏輯210處從存儲器208接收基元。在深度測試邏輯210處接收到的基元可以處于用于光柵化的任何適當?shù)目臻g中,諸如用于渲染圖像的屏幕空間或者用于渲染陰影圖的陰影圖空間。例如,其可以是這樣的情況,先前操作已經(jīng)在系統(tǒng)200中被執(zhí)行以便確定屏幕空間中的基元。另外,在步驟S302之前,如果圖形處理系統(tǒng)200為基于圖塊的系統(tǒng),則分塊(tiling)操作可以已經(jīng)被執(zhí)行以確定哪些基元與哪些圖塊相關,由此針對一個圖塊的基元可以被提供到深度測試邏輯210,之后針對另一圖塊的基元可以被提供到深度測試邏輯210,以此類推。描述從存儲器208被傳遞到深度測試邏輯210的基元的實際數(shù)據(jù)可能不包括與基元相關的數(shù)據(jù)中的全部,并且可以例如包括基元的位置數(shù)據(jù)(例如,基元的頂點的屏幕空間位置)但是可能不包括針對基元的紋理或著色化數(shù)據(jù)。即使針對基元的數(shù)據(jù)中的一些數(shù)據(jù)可能不從存儲器208被傳遞到HSR模塊204,但是在概念上考慮基元從存儲器208被傳遞到HSR模塊204是有意義的。
[0031]指示符218針對渲染空間的樣本位置中的每個樣本位置(例如,當前圖塊的每個樣本位置)指示深度測試邏輯210要使用深度緩沖器中的哪個深度緩沖器以用于執(zhí)行深度測試。例如,指示符中的每個指示符可以與樣本位置中的相應樣本位置相關聯(lián)。例如,每個指示符可以為指示I3DB 212或SDB 216的標志。在該示例中,每個指示符表示兩個可能選項之一并且因此能夠利用二進制標志來表示。在HSR模塊204處接收到與渲染空間中的基元相關的任何基元數(shù)據(jù)之前,系統(tǒng)200將指示符218初始化為針對渲染空間的每個樣本位置指示PDB 212ο
[0032]在步驟S304中,針對接收到的基元的片段,深度測試邏輯210使用指示符218中的合適指示符來確定I3DB 212還是SDB 216應當被用于對片段的深度測試。在本文中描述的示例中,當在特定樣本位置處的最前面的深度被存儲在PDB中并且為解析片段的深度時指示符218指示PDB 212,然而當在特定樣本位置處的最前面的深度被存儲在SDB中并且為尚待解析的片段的深度時指示符218指示SDB216。
[0033]如果指示符指示PDB 212,則該方法從步驟S304傳遞到S306,在步驟S306中,深度測試邏輯210使用存儲在TOB 212中的合適深度值來對片段執(zhí)行深度測試。深度測試是本領域中已知的,并且通常包含將片段的深度值與存儲在深度緩沖器中的對應深度值進行比較。深度測試的結果取決于深度測試邏輯210正操作于其中的深度比較模式(DCM)。例如,DCM可以為DCM_LESS_EQ,其中如果片段的深度值小于或等于存儲在深度緩沖212中的在對應樣本位置處的深度值則該片段通過深度測試。這是常見深度比較模式,因為當使用較小深度值指示對象較接近并且較大深度值指示對象較遠離的常見約定時,這直觀地對應于測試片段是否比在對應樣本位置處的先前經(jīng)處理的片段更接近視點(即,在其前面)。作為另一示例,DCM可以為DCM_GREATER,其中如果片段的深度值大于存儲在深度緩沖器212中的在對應樣本位置處的深度值則該片段通過深度測試。本領域技術人員將理解存在其他深度比較模式(例如,DCM_LESS、DCM_GREATER_EQ、DCM_EQUAL、DCM_ALWAYS 和 DCM_NEVER)并且將理解如何根據(jù)當前設置的深度比較模式來實施深度測試。
[0034]在步驟S308中,深度測試邏輯210確定片段是否通過深度測試。如以上所描述的,PDB 212存儲針對解析片段的深度值,因此如果片段未通過針對TOB 212的深度測試,則其將不貢獻于最終渲染的圖像并且能夠被丟棄。因此,如果片段未通過深度測試,該方法從步驟S308傳遞到S310,在步驟S310中,深度測試邏輯210丟棄該片段。注意,步驟S310可能不是主動步驟。也就是說,可以僅僅通過不將片段的深度或標識符存儲在HSR模塊204中的任何緩沖器中來丟棄該片段。在步驟S310之后,該方法傳遞到步驟S320,在步驟S320中,確定是否還存在針對其要重復深度測試的方法的更多片段和/或基元要在深度測試邏輯210中處理。
[0035]如果片段通過針對TOB 212的深度測試,則該方法從步驟S308傳遞到步驟S312,在步驟S312中,深度測試邏輯210確定該片段是否為解析片段。如以上所描述的,不透明和半透明片段通常為解析片段,因為無論是它們的存在還是深度值將都不被片段處理模塊206更改,但是穿通片段在片段的存在被解析之前為未解析片段,因為它們的存在可以由片段處理模塊206更改,例如它們可以取決于由片段處理模塊206執(zhí)行的阿爾法測試。另外,O-depth片段為未解析片段,因為它們的深度值可以被片段處理模塊206更改。如果片段為解析片段,則在步驟S314中,深度測試邏輯210使用該片段的深度值來更新PDB 212。也就是說,在步驟S314中,深度測試邏輯210將片段的深度值存儲在TOB 212中。這可以包含重寫先前存儲在I3DB 212中的、在對應樣本位置處的深度值。
[0036]如以上所描述的,HSR模塊204包括三個標簽緩沖器214glj2143。在給定時間,標簽緩沖器中的第一標簽緩沖器(例如,標簽緩沖器21屯)被配置為存儲針對其深度值被存儲在PDB 212中的片段的基元標識符;標簽緩沖器中的第二標簽緩沖器(例如,標簽緩沖器2142)被配置為存儲針對其深度值被存儲在SDB 216中的片段的基元標識符;并且標簽緩沖器中的第三標簽緩沖器(例如,標簽緩沖器2143)被配置為存儲針對處于從HSR模塊204被沖刷到下面更詳細描述的片段處理模塊206的過程中的片段的基元標識符。不同標簽緩沖器的功能不是固定的并且例如可以隨著系統(tǒng)200處理基元而動態(tài)地變化。例如,如果在第一時間點,標簽緩沖器2142正在存儲針對存儲在SDB 216中的深度值的標簽并且之后標簽緩沖器2142的內容被沖刷到片段處理模塊206,則標簽緩沖器2143可以被用于在標簽緩沖器2142被沖刷的同時存儲針對存儲在SDB 216中的深度值的標簽。
[0037]在跟隨步驟S314的步驟S315中,片段為其部分的基元的對應標簽被存儲在合適的標簽緩沖器中(例如,標簽緩沖器21如,如果其是當前存儲與存儲在PDB 212中的深度值相對應的標簽的標簽緩沖器)。
[0038]在步驟S315之后,該方法傳遞到步驟S320,在步驟S320中,確定是否還存在針對其要重復深度測試的方法的更多片段和/或基元要在深度測試邏輯210中處理。
[0039]如果片段為未解析片段(例如,如果該片段是穿通片段),則所述方法從步驟S312傳遞到步驟S316,在步驟S316中,深度測試邏輯210使用片段的深度值來更新SDB 216。也就是說,在步驟S316中,深度測試邏輯210將片段的深度值存儲在SDB 216中。在該示例中,步驟S316不應當包含重寫先前存儲在SDB 216中的有效深度值,因為如果已經(jīng)存在在SDB 216中的對應樣本位置處的深度值,則指示符218將被設置使得該方法將已經(jīng)從步驟S304傳遞至Ij(下面描述的)步驟S322而非從步驟S304傳遞到步驟S306。另外,在跟隨步驟S316的步驟S317中,片段為其部分的基元的對應標簽被存儲在合適的標簽緩沖器中(例如,標簽緩沖2142,如果其為當前存儲與存儲在SDB 216中的深度值相對應的標簽的標簽緩沖器)。
[0040]在步驟S318中,深度測試邏輯210將針對片段的樣本位置的指示符設置為指示SDB216。這意味著在樣本位置處的后續(xù)深度測試將使用存儲在SDB 216中的深度值來執(zhí)行。在步驟S318之后,該方法傳遞到步驟S320,在步驟S320中確定是否還存在針對其要重復深度測試的方法的更多片段和/或基元要在深度測試邏輯210中處理。如果存在已經(jīng)在深度測試邏輯210處接收到的用于處理的更多片段,則該方法傳遞回到步驟S304并且該方法針對另一片段繼續(xù)。盡管對圖3中示出的方法的描述暗示該方法針對一個片段被執(zhí)行并且之后隨后該方法以串行方式針對下一片段被執(zhí)行,但是在一些示例中多個片段可以并行地被處理以加速對可能存在于場景中的大量(例如,數(shù)百萬或數(shù)十億個)片段的處理。
[0041 ] 如果在步驟S304中,深度測試邏輯210確定SDB 216應當被用于對片段的深度測試,則該方法從步驟S304傳遞到步驟S322。如以上所描述的,如果存在存儲在SDB 216中的、針對討論中的片段的相同位置的有效深度值,則指示符218將指示SDB 216。
[0042]在步驟S322中,深度測試邏輯210使用存儲在SDB 216中的合適的深度值來對片段執(zhí)行深度測試。在步驟S324中,深度測試邏輯210確定片段是否通過深度測試。如以上所描述的,SDB 216存儲針對未解析片段的深度值,因此如果片段未通過針對SDB 216的深度測試,則在步驟S326中,SDB 216的深度值被解析。這是因為步驟S322的深度測試是相對于不確定(即,未解析的)值的,該不確定(即,未解析的)值需要在能夠做出關于當前片段是否應當被保持或被丟棄的決策之前被解析。應當指出,SDB 216中的深度值可以被片段處理模塊206無效,因此可能的是未通過針對SDB 216的深度測試的片段能夠貢獻于最終渲染的圖像。為了解析SDB 216的深度值,來自存儲與SDB 216中的深度值相對應的標簽的標簽緩沖器214中的一個標簽緩沖器(例如,標簽緩沖器2142)的標簽被沖刷到片段處理模塊206。當被沖刷的片段是穿通片段時,片段處理模塊206能夠對被沖刷的片段執(zhí)行阿爾法測試以便確定穿通片段中的哪些穿通片段存在。以這種方式,深度值通過確定相應片段的存在或其他方面來解析,并且當前片段的所解析的深度值被反饋回到深度測試邏輯210。在步驟S328中,深度測試邏輯210利用從片段處理模塊206接收到的所解析的深度值來更新PDB 212中的深度值。由于深度值已經(jīng)被解析并被存儲在PDB 212中,所以在步驟S330中,在步驟S326中針對標簽從其被沖刷的樣本位置的指示符被設置為指示PDB 212使得基于PDB 212中的所解析的深度值來執(zhí)行在那些樣本位置處的另外的深度測試。一旦深度值已經(jīng)被解析并被存儲在PDB 212中,則SDB 216中的深度值能夠被丟棄。備選地,不是丟棄SDB 216中的深度值,而是通過將針對合適的樣本位置的指示符設置為指示I3DB 212來使SDB 216中的深度值無效。
[0043]該方法可以之后前進到步驟S306,在步驟S306中使用存儲在PDB 212中的所解析的深度值針對所述片段執(zhí)行深度測試。該方法之后如以上所描述的從步驟S306前進。注意,該方法可以在來自SDB 216的深度值由片段處理模塊206解析的同時停止,但是還要注意,這樣的停止將比以上描述的現(xiàn)有技術系統(tǒng)100中發(fā)生得較不頻繁。也就是說,在系統(tǒng)100中,當未解析片段通過針對深度緩沖器112的深度測試時停止發(fā)生。對比之下,在系統(tǒng)200中,當未解析片段通過針對主深度緩沖器212的深度測試時,未解析片段的深度值被存儲在SDB216中而在那時沒有停止。如果后續(xù)不透明片段通過針對SDB 216的深度測試,則由于未解析片段沒有停止將發(fā)生。如果片段未通過針對SDB 216的深度測試,則停止可以發(fā)生,并且如下面更詳細描述的,即使在一些示例中可以避免停止的情況下。
[0044]返回到步驟S324,如果片段通過針對SDB 216的深度測試,則該方法從步驟S324傳遞到步驟S332,在步驟S332中,深度測試邏輯210確定該片段是否為解析片段。如果該片段為未解析片段(例如,如果其為穿通片段)則在步驟S333中,HSR模塊204確定標簽緩沖器是否當前未在使用中并且因此可用。如果存在可用標簽緩沖器(例如,標簽緩沖器2143),則該方法傳遞到步驟S335。然而,如果不存在可用標簽緩沖器(例如,標簽緩沖器214glj2143中的全部三個標簽緩沖器當前在使用中),則標簽緩沖器中的一個標簽緩沖器被沖刷到片段處理模塊206。被沖刷的標簽緩沖器可以被選擇為與SDB 216相關聯(lián)的標簽緩沖器。另外,作為示例,如果多于一個標簽緩沖器與SDB 216相關聯(lián)以表示多個層,則與SDB 216相關聯(lián)的并且與層中的最遠層相對應的標簽緩沖器可以被選擇為在步驟S334中被沖刷。在步驟S334中對標簽緩沖器的沖刷使標簽緩沖器可用并且之后該方法傳遞到步驟S335。在步驟S335中,深度測試邏輯210使用片段的深度值來更新SDB 216。也就是說,在步驟S335中,深度測試邏輯210將片段的深度值存儲在SDB 216中。這可以包含重寫先前存儲在SDB 216中的在對應樣本位置處的深度值。在步驟S336中,片段的標簽被寫入到可用標簽緩沖器214(例如,標簽緩沖器2143)中。通過將重寫的片段的標簽保持在標簽緩沖器中或者將其發(fā)送到片段處理模塊206以被解析,這些步驟確??赡苋匀回暙I于最終圖像的重寫的片段的標簽不被丟棄。因此,當步驟S336已經(jīng)被執(zhí)行時,存儲在SDB 216中的深度值為最接近的未解析片段的深度值,并且存儲在標簽緩沖器中的標簽為針對等待要被解析的片段的相應層的標簽,由此允許層的順序被維持。在步驟S336之后,該方法傳遞到步驟S320,在步驟S320中確定是否還存在針對其要重復深度測試的方法的更多片段和/或基元要在深度測試邏輯210處理。
[0045]如果片段為解析片段(例如,其為不透明或半透明片段),則該方法從步驟S332傳遞到步驟S337,在步驟S337中,深度測試邏輯210使用片段的深度值來更新TOB 212。也就是說,在步驟S337中,深度測試邏輯210將片段的深度值存儲在TOB 212中。這可以包含重寫先前存儲在I3DB 212中的在對應樣本位置處的深度值。存儲在SDB 216中的在對應樣本位置處的深度值可以被丟棄,因為當前片段已經(jīng)利用解析的深度值重寫該深度值。如果片段為不透明片段,則其將重寫在樣本位置處的其他片段,因此在步驟S338中,片段為其部分的基元的標簽被存儲在合適的標簽緩沖器中(例如,標簽緩沖器21屯,如果其為當前存儲與存儲在PDB 212中的深度值相對應的標簽的標簽緩沖)并且其他標簽緩沖器中的標簽被標記為無效。然而,如果所述片段為半透明片段,則底層片段不能夠簡單地被重寫,因此不透明片段的標簽被存儲在新的標簽緩沖器(例如,標簽緩沖器2143)中。如果不存在可用于存儲當前片段的標簽的新標簽緩沖器,則標簽緩沖器214中的一個標簽緩沖器可以被沖刷由此使標簽緩沖器可用于存儲當前片段的標簽。注意,由半透明片段透支的任何穿通片段能夠被HSR模塊204當作“普通”半透明片段(S卩,解析片段)因為已經(jīng)被透支,其深度/存在不再需要在HSR模塊204處被解析。
[0046]在步驟S339中,深度測試邏輯210將針對片段的樣本位置的指示符設置為指示TOB212。這意味著在樣本位置處的后續(xù)深度測試將使用在步驟S337中存儲在TOB 212中的當前片段的深度值來執(zhí)行。在步驟S338之后,該方法傳遞到步驟S320,在步驟S320中,確定是否還存在針對其要重復深度測試的方法的更多片段和/或基元要在深度測試邏輯210處理。
[0047]如果在步驟S320中確定當前沒有更多片段要處理,則該方法傳遞到步驟S340,在步驟S340中存儲在標簽緩沖器214中的標簽被沖刷到片段處理模塊206。片段處理模塊206能夠之后處理由被沖刷的標簽指示的片段,例如以對該片段應用紋理化和/或著色化。當在HSR模塊204處接收到另外的基元時,能夠重復由如圖3a和3b中示出的HSR模塊204執(zhí)行的處理。
[0048]因此能夠看到,與現(xiàn)有技術系統(tǒng)100相比較,對次級深度緩沖器216的使用允許HSR模塊204需要停止以等待未解析片段要被片段處理模塊206解析的次數(shù)的減少。這還減少片段處理模塊206需要執(zhí)行以解析未解析片段的處理(例如阿爾法測試)的量。這是因為諸如穿通片段的未解析片段能夠使其深度值存儲在SDB 216中使得它們能夠后續(xù)被不透明或半透明片段重寫而無需解析穿通片段的存在。換言之,在本文中描述的示例中,HSR模塊204不將未解析片段的標簽沖刷到片段處理模塊206直到那些未解析片段需要被解析,由此提供更多機會以使那些未解析片段由后續(xù)片段隱藏,使得那些未解析片段不需要被解析。另外,針對在片段處理模塊206中通過阿爾法測試的穿通片段,當在HSR模塊204處接收到反饋時,SDB 216已經(jīng)使穿通片段的深度值存儲在其中,因此無需如已經(jīng)現(xiàn)有技術系統(tǒng)100所要求的重新計算片段的深度值。
[0049]圖4示出了PDB 212和SDB 216的深度值以及傳入片段的深度值的示例,其幫助圖示系統(tǒng)200的操作。在圖4中示出的示例中,允許的深度值范圍從0.0到1.0并且視點被示出在圖4的左邊使得較小深度值與較接近的深度相對應。針對32個樣本位置的列的深度值被示出在圖4中。虛線402表示存儲在PDB 212中的、針對32個樣本位置的列的、在特定時間點處的深度值。虛線404表示存儲在SDB 216中的、針對32個樣本位置的列的、在特定時間點處的深度值。如由圖4中的線404所示出的,針對樣本位置中的一些但不是全部樣本位置的深度值被存儲在SDB 216中。指示符218將針對其中深度值被存儲在SDB 216中的樣本位置指示SDB 216并且針對其中深度值未被存儲在SDB 216中的樣本位置指示TOB 212。在圖4中示出的示例中,深度比較模式為DCM_LESS_EQ,使得如果片段具有小于或等于存儲在深度緩沖中的深度值則該片段通過深度測試。
[0050]可以在深度測試邏輯210處接收第一基元的一組片段406。如圖4中示出的,片段406的樣本位置使得指示符218將指示深度測試應當使用TOB 212來執(zhí)行。當深度測試邏輯210在DCM_LESS_EQ深度比較模式中對片段406執(zhí)行深度測試時,片段406將不能通過深度測試,因為它們的深度值大于由線402示出的、存儲在TOB 212中的對應深度值。因此,片段406將被丟棄,因為它們將不貢獻于最終圖像。
[0051 ] 當存儲在TOB 212和SDB 216中的深度值分別由線402和404示出時,可以在深度測試邏輯210處接收第二基元的不同組的片段408。如圖4中示出的,片段408的樣本位置使得指示符218將指示深度測試應當使用TOB 212來執(zhí)行。當深度測試邏輯210在DCM_LESS_EQ深度比較模式中對片段408執(zhí)行深度測試時,片段408將通過深度測試,因為它們的深度值小于由線402示出的存儲在PDB 212中的對應深度值。如果片段408為不透明或半透明的(SP,如果它們?yōu)榻馕銎?,則片段408的深度值將被寫入到PDB 212中,然而如果片段408是穿通的(即,如果它們?yōu)槲唇馕銎?,則片段408的深度值將被寫入到SDB 216中并且針對片段408的樣本位置的指示符218將被設置為指示SDB 216。針對片段408的標簽將被寫入到標簽緩沖器214中的合適的標簽緩沖器中。
[0052]當存儲在TOB 212和SDB 216中的深度值分別由線402和404示出時,可以在深度測試邏輯210處接收第三基元的不同組的片段410。如圖4中示出的,片段410的樣本位置使得指示符218將指示深度測試應當使用SDB 216來執(zhí)行。當深度測試邏輯210在DCM_LESS_EQ深度比較模式中對片段410執(zhí)行深度測試時,片段410將不能通過深度測試,因為它們的深度值大于由線404示出的存儲在SDB 216中的對應深度值。因此,SDB 216中的深度值通過將SDB 216的對應片段沖刷到片段處理模塊206來解析。當從片段處理模塊206接收到所解析的深度值時,深度測試邏輯210使用所解析的深度值來更新TOB 212并且針對TOB 212中的深度值重新測試片段410。如果穿通片段被片段處理模塊206解析為存在,則PDB 212的對應深度值被更新以具有由線404示出的深度,但是針對不存在的穿通片段,PDB 212的對應深度值保持在線402處。o-depth片段的深度可以被片段處理模塊206解析為與由線404示出的那些不同,因此所解析的o-depth值與(由線402示出的)PDB 212中的深度值之間的比較可以被執(zhí)行以確定如何相應地更新TOB 212中的深度值,例如通過將深度值更新為所解析的o-depth值和(由線402示出的)PDB 212中的深度值中的較小者。片段410將不能通過針對PDB 212的深度測試并因此將被丟棄。
[0053]當存儲在TOB 212和SDB 216中的深度值分別由線402和404示出時,可以在深度測試邏輯210處接收第四基元的不同組的片段412。如圖4中示出的,片段412的樣本位置使得指示符218將指示深度測試應當使用SDB 216來執(zhí)行。當深度測試邏輯210在DCM_LESS_EQ深度比較模式中對片段412執(zhí)行深度測試時,片段412將不能通過深度測試,因為它們的深度值大于由線404示出的存儲在SDB 216中的對應深度值。因此,SDB 216中的深度值通過將SDB 216的對應片段沖刷到片段處理模塊206來解析。當從片段處理模塊206接收到所解析的深度值時,深度測試邏輯210利用所解析的深度值來更新TOB 212并且針對TOB 212中的深度值重新測試片段412。取決于對來自SDB 216的深度值的解析的結果,片段412中的一些或全部片段可能通過針對PDB 212的深度測試,而剩余的片段可能不能通過。未通過針對PDB 212的深度測試的片段412被丟棄并且通過深度測試的片段412不被丟棄。如以上所描述的,如果通過深度測試的片段412為不透明或半透明的(S卩,如果它們?yōu)榻馕銎?,則片段412的深度值將被寫入到TOB 212中并且針對片段408的樣本位置的指示符218將被設置為指示PDB 216,然而針對通過深度測試并且為穿通的片段412(即,如果它們?yōu)槲唇馕銎?,則片段412的深度值將被寫入到SDB 216中。如果片段412通過深度測試,則針對片段412的標簽將被寫入到標簽緩沖器214中的合適的標簽緩沖器中。
[0054]當存儲在TOB 212和SDB 216中的深度值分別由線402和404示出時,可以在深度測試邏輯210處接收第五基元的不同組的片段414。如圖4中示出的,片段414的樣本位置使得指示符218將指示深度測試應當使用SDB 216來執(zhí)行。當深度測試邏輯210在DCM_LESS_EQ深度比較模式中對片段414執(zhí)行深度測試時,片段414將通過深度測試,因為它們的深度值小于由線404示出的存儲在SDB 216中的對應深度值。如果片段414為解析片段(S卩,如果它們?yōu)椴煌该骰虬胪该鞯?,則它們的深度值將被寫入到TOB 212中并且針對對應樣本位置的指示符將被設置為指示后續(xù)深度測試應當使用PDB 212來執(zhí)行。如果解析片段414為不透明的,則SDB 216中的針對對應樣本位置的深度值能夠被丟棄并且針對重寫的片段的標簽能夠從相關標簽緩沖器被丟棄。以這種方式,重寫的片段將不需要被沖刷到片段處理模塊206,這能夠減少系統(tǒng)200中的停止和不必要的片段處理。如果解析片段414為半透明的,則位于片段414后面的片段可以在必要時被沖刷到片段處理模塊206以確保存在用于存儲針對片段414的標簽的可用標簽緩沖器。如果片段414為未解析片段,則它們的深度值被存儲在SDB 216中。針對片段414的標簽將被寫入到標簽緩沖器214中的一個標簽緩沖器中。如以上所描述的,標簽緩沖器可以被用于存儲片段的不同層的標簽,并且如果不存在用于存儲針對片段414的標簽的可用標簽緩沖器,則標簽緩沖器中的一個標簽緩沖器可能需要被沖刷使得其能夠被用于存儲針對片段414的標簽。
[0055]在以上描述的示例中,當片段未通過針對SDB216的深度測試時(例如,如在步驟324中確定的),則存儲在SDB 216中的深度值和/或相應片段的存在被解析并被用于更新PDB 212,并且之后在(步驟S326、S328和S306中)對TOB 212中的深度值的更新之后使用存儲在PDB 212中的合適的深度值來對片段執(zhí)行第二深度測試。然而,在其他示例中,如果片段未通過使用存儲在SDB 216中的深度值執(zhí)行的深度測試,則深度測試邏輯210可以使用存儲在TOB 212中的合適的深度值來對片段執(zhí)行第二深度測試。這能夠適合于圖4中示出的片段410和412。如果片段未通過針對TOB 212的深度測試,則片段可能被丟棄(例如,對于片段410)。這避免當片段410未通過針對SDB 216的深度測試時解析SDB 216中的深度值的需要,但是其可能引發(fā)HSR模塊204中的額外深度測試。具體地,如果片段在未通過針對SDB 216的深度測試之后通過針對PDB 212的深度測試(例如,片段412將通過針對PDB 212的深度測試),則存儲在SDB 216中的深度值能夠被解析并被用于更新TOB 212中的深度值。之后能夠在對TOB 212中的深度值的更新之后使用存儲在PDB 212中的合適的深度值來對片段執(zhí)行第三深度測試。
[0056]在以上參考圖3描述的方法中,停止發(fā)生在對被發(fā)現(xiàn)為位于穿通片段的后面的不透明和半透明片段的處理中(也就是說,它們在S324處未通過針對SDB的深度測試),同時穿通片段的深度值被解析。在其他示例中,如下面所描述的,有可能去除該停止。在這些示例中,當片段未通過針對SDB 216的深度測試時,則在與SDB 216相關聯(lián)的標簽緩沖器中的片段被沖刷到片段處理模塊206。取代于停止以等待片段處理模塊206處理被沖刷的片段,SDB216中的值被清除并且指示符被全部設置為指示PDB 212并且之后深度測試針對另外的傳入片段繼續(xù),并且如果深度值通過深度測試則它們被寫入到SDB 216(而非PDB 212)中。這是HSR模塊204如何處理不透明和半透明片段(S卩,將通常被認為是解析片段的片段)。結果被寫入到SDB 216中,因為直到從片段處理模塊206返回反饋,通過深度測試的片段的可見性是未知的,并且因此傳入片段可以被認為是“未解析”片段(即,它們具有未解析的可見性),如本文中所描述的,其深度值被存儲在SDB 216中。這意味著在HSR模塊204正在等待來自片段處理模塊206的反饋的同時,任何傳入片段為未解析片段,因為它們的可見性是未解析的。當接收到來自片段處理模塊206的反饋時,將返回的解析的深度值與現(xiàn)在SDB 216中的那些深度值進行比較以確定解析的深度值,該解析的深度值能夠之后被存儲在TOB 212中并且相關標簽能夠被存儲在當如與I3DB 212相關聯(lián)的標簽緩沖214中。
[0057]然而,如果在接收到來自片段處理模塊206的反饋之前在深度測試邏輯210處接收到將通常被認為是未解析片段的片段(例如,穿通片段或o-depth片段),則深度測試邏輯210將停止直到接收到反饋。因此,在等待反饋的同時如果在深度測試邏輯210處接收到不透明或半透明片段則停止能夠被阻止,但是在等待反饋的同時如果接收到穿通片段或0-cbpth片段時則停止不被阻止。
[0058]在以上描述的示例中,存在三個標簽緩沖器21屯、2142和2143。在其他示例中,可以存在多于三個標簽緩沖器,其允許片段的更多層要在標簽被沖刷到片段處理模塊206之前被存儲。這可以減少被執(zhí)行的沖刷的數(shù)目,因為將存在更多機會以使不透明片段在它們被沖刷之前重寫片段。然而,對更多標簽緩沖器的使用將要求GPU 202上的更多存儲器,因此當選擇標簽緩沖器的數(shù)目時,存在減少沖刷的數(shù)目與減少GPU 202上的存儲器需求之間的權衡。
[0059]穿通片段還可以被劃分成兩種類型:(i)不透明穿通(OPT)片段,其存在且完全不透明或者不存在,或者(ii)半透明穿通(TPT)片段,其能夠存在或者不存在但是針對其存在的片段可以是半透明的(即,不完全不透明)。如下面所描述的,在重疊的OPT片段的多個層被存儲在多個標簽緩沖器中的情況下,有可能控制標簽緩沖器以非傳統(tǒng)方式被沖刷的順序以獲得一定效率。如果當新的OPT片段被確定為在(SDB 216中的)當前存儲的深度的前面時渲染空間內的位置具有存儲在SDB 216中的深度值,則取代沖刷來自與SDB 216相關聯(lián)的標簽緩沖器的片段,有可能使用附加的標簽緩沖器來存儲OPT片段的層。每個片段最前面的標簽緩沖ID能夠被維持(例如,被存儲在數(shù)組中)并被用于確定哪些OPT片段是最前面的。最前面的OPT片段能夠首先被沖刷到片段處理模塊206(與如傳統(tǒng)的嚴格跟隨提交順序相反)。如果在樣本位置處的最前面的OPT片段由阿爾法測試確定為存在,則在底層中的相同位置處的片段能夠被丟棄。該方法不能夠被用于允許半透明度的穿通對象,因為有必要以它們被提交的順序處理所有半透明片段,但是對于OPT對象該方法提供更多機會以丟棄片段而不一定在片段處理模塊206中處理它們。也就是說,首先處理最前面的OPT片段允許由后續(xù)片段透支的片段被拒絕,即不被發(fā)送到片段處理模塊206。
[0060]當OPT片段被確定為相對于PDB212可見時,應當分配針對新OPT對象的所有片段被寫入其中的新標簽緩沖器。針對SDB 216測試通過針對PDB 212的深度測試的每個片段。如果片段也通過針對SDB 216的深度測試,則SDB 216利用新片段的深度來被更新并且針對該片段的最前面的標簽緩沖ID被更新以指向新分配的標簽緩沖器。
[0061]當確定有必要將標簽緩沖器沖刷到片段處理模塊206時,例如當不再有標簽緩沖器可用時,每個片段最前面的標簽緩沖器ID被用于確定哪些片段應當首先被發(fā)送到片段處理模塊206。一旦最前面的片段已經(jīng)被發(fā)送,任何剩余的片段能夠在必要時(例如,以使標簽緩沖可用)以標簽緩沖器被分配的順序、即以基元提交順序一次被提交標簽緩沖器。優(yōu)選地,HSR模塊204在提交任何剩余片段之前等待深度針對最前面的標簽被解析。
[0062]在以上描述的示例中,PDB 212和SDB 214與渲染空間的相同樣本位置相關,例如它們與基于圖塊的系統(tǒng)內的相同圖塊相關。一些基于圖塊的系統(tǒng)可以能夠具有聯(lián)機的多個圖塊,在這種情況下深度緩沖器的相應對,即主深度緩沖器和次級深度緩沖器,將被用于能夠在HSR模塊204內同時“正在聯(lián)機”的圖塊中的每個圖塊。也就是說,根據(jù)本文中描述的方法的原理,針對每個當前活動的圖塊,主深度緩沖器被用于存儲解析片段的深度值,并且次級深度緩沖器被用于存儲未解析片段的深度值。
[0063]—般地,以上描述的功能、方法、技術或部件中的任何(例如,深度測試邏輯210和/或片段處理模塊206)能夠被實施在使用軟件、固件、硬件(例如,固定邏輯電路)或者這些實施方式中的任何組合的模塊中。術語“模塊”、“功能”、“部件”、“±夬”、“單元”和“邏輯”在本文中被用于總體上表示軟件、固件、硬件或其任何組合。
[0064]在軟件實施方式的情況下,模塊、功能、部件、單元或邏輯表示當運行在處理器(例如,一個或多個CPU)上時執(zhí)行指定任務的程序代碼。在一個示例中,描述的方法可以通過被配置有以機器可讀形式存儲在計算機可讀介質上的軟件的計算機而被執(zhí)行。計算機可讀介質的一個這樣的配置是信號承載介質并且因此被配置為將指令(例如,作為載波)例如經(jīng)由網(wǎng)絡傳輸?shù)接嬎阍O備。計算機可讀介質還可以被配置為非瞬態(tài)計算機可讀存儲介質并且因此不是信號承載介質。計算機可讀存儲介質的示例包括隨機存取存儲器(RAM)、只讀存儲器(ROM)、光盤、閃速存儲器、硬盤存儲器和可以使用磁技術、光技術和其他技術來存儲指令或其他數(shù)據(jù)并且能夠由機器訪問的其他存儲器設備。
[0065]軟件可以按照包括用于將計算機配置為執(zhí)行描述的方法的構成部分的計算機程序代碼的計算機程序的形式或者按照包括適于在程序在計算機上運行時執(zhí)行本文中描述的方法中的任何的全部步驟的計算機程序代碼模塊的計算機程序的形式,并且其中計算機程序可以被實現(xiàn)在計算機可讀介質上。程序代碼能夠被存儲在一個或多個計算機可讀介質中。本文中描述的技術的特征是平臺無關的,這意味著該技術可以被實施在具有各種處理器的各種計算平臺上。
[0066]本領域技術人員還將意識到,功能、技術或方法中的全部或部分可以由專用電路、專用集成電路、可編程邏輯陣列、現(xiàn)場可編程門陣列等等來實現(xiàn)。例如,模塊、功能、部件、單元或邏輯(例如,深度測試邏輯210和/或片段處理模塊206)可以包括以電路的形式的硬件。這樣的電路可以包括在制造工藝中可用的晶體管和/或其他硬件元件。這樣的晶體管和/或其他元件可以被用于形成實施和/或包含通過舉例的方式諸如寄存器、觸發(fā)器或鎖存器的存儲器、諸如布爾運算的邏輯運算符、諸如加法器、乘法器或移位器的數(shù)學運算符以及互連件的電路或結構。這樣的元件可以被提供為經(jīng)典電路或標準單元庫、宏、或者在其他級別的抽象。這樣的元件可以被相互連接在特定布置中。模塊、功能、部件、單元或邏輯(例如,深度測試邏輯210和/或片段處理模塊206)可以包括為固定功能的電路和能夠被編程為執(zhí)行一個或多個功能的電路;這樣的編程可以根據(jù)固件或軟件更新或控制機制來提供。在示例中,硬件邏輯具有實施固定功能操作、狀態(tài)機或過程的電路。
[0067]還意圖包含“描述”或定義實施以上描述的模塊、功能、部件、單元或邏輯(例如圖形處理系統(tǒng)202的部件)的硬件的配置的軟件(例如,HDL(硬件描述語言)軟件),如被用于設計集成電路或者用于將可編程芯片配置為實現(xiàn)期望功能。也就是說,可以提供一種計算機可讀存儲介質,其具有編碼在其上的按照集成電路定義數(shù)據(jù)集的形式的計算機可讀程序代碼,集成電路定義數(shù)據(jù)集當在集成電路制造系統(tǒng)中被處理時將系統(tǒng)配置為制造被配置為執(zhí)行本文中描述的方法中的任何的圖形處理系統(tǒng)或者制造包括本文中描述的任何裝置的圖形處理系統(tǒng)。IC定義數(shù)據(jù)集可以按照例如以諸如寄存器傳輸級(RTL)代碼的適當?shù)腍DL編寫的計算機代碼的形式。在集成電路制造系統(tǒng)處處理集成電路定義數(shù)據(jù)集從而將系統(tǒng)配置為制造圖形處理系統(tǒng)的示例現(xiàn)在將參考圖5進行描述。
[0068]圖5示出了包括布局處理系統(tǒng)504和集成電路生成系統(tǒng)506的集成電路(IC)制造系統(tǒng)502的示例。IC制造系統(tǒng)502被配置為接收IC定義數(shù)據(jù)集(例如,定義如在本文中的示例中的任何中描述的圖形處理系統(tǒng))、處理IC定義數(shù)據(jù)集并且根據(jù)IC定義數(shù)據(jù)集來生成IC(例如,其實現(xiàn)如在本文中的示例中的任何中描述的圖形處理系統(tǒng))。對IC定義數(shù)據(jù)集的處理將IC制造系統(tǒng)502配置為制造實現(xiàn)如在本文中的示例中的任何中描述的圖形處理單元的集成電路。更具體地,布局處理系統(tǒng)504被配置為接收并處理ID定義數(shù)據(jù)集以確定電路布局。根據(jù)IC定義數(shù)據(jù)集來確定電路布局的方法是本領域中已知的,并且例如可以涉及合成RTL代碼以確定要被生成的電路的門級表示,例如,在邏輯部件方面(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)。電路布局能夠通過確定針對邏輯部件的位置信息根據(jù)電路的門級表示而被確定。這可以自動地或者在用戶參與的情況下完成以便優(yōu)化電路布局。當布局處理系統(tǒng)504已經(jīng)確定電路布局時,其可以將電路布局定義輸出到IC生成系統(tǒng)506 JC生成系統(tǒng)506根據(jù)電路布局定義來生成1C,如本領域中已知的。例如,IC生成系統(tǒng)506可以實施半導體器件制造工藝以生成1C,其可以涉及光刻和化學處理步驟的多個步驟序列,在其期間電子電路逐漸地被創(chuàng)建在由半導體材料制成的晶片上。電路布局定義可以以掩膜的形式,其能夠被使用在光刻工藝中以用于根據(jù)電路定義來生成1C。備選地,被提供到IC生成系統(tǒng)506的電路布局定義可以以計算機可讀代碼的形式,IC生成系統(tǒng)506能夠使用其來形成用于在生成IC中使用的適當?shù)难谀ぁS蒊C制造系統(tǒng)502執(zhí)行的不同工藝可以全部在一個位置中,例如通過一方被實施。備選地,IC制造系統(tǒng)502可以是分布式系統(tǒng)使得工藝中的一些可以在不同位置處被執(zhí)行,并且可以通過不同方來執(zhí)行。例如,以下的階段中的一些可以在不同位置中和/或通過不同方而被執(zhí)行:(i)合成表示IC定義數(shù)據(jù)集的RTL代碼以形成要被生成的電路的門級表示,(ii)基于門級表示來生成電路布局,(iii)根據(jù)電路布局來形成掩膜,并且(i V)使用掩膜來制造集成電路。
[0069]在其他示例中,在集成電路制造系統(tǒng)處對集成電路定義數(shù)據(jù)集的處理可以將系統(tǒng)配置為在沒有處理IC定義數(shù)據(jù)集的情況下制造圖形處理系統(tǒng),從而確定電路布局。例如,集成電路定義數(shù)據(jù)集可以定義可配置處理器(例如,F(xiàn)PGA)的配置,并且對該數(shù)據(jù)集的處理可以將IC制造系統(tǒng)配置為(例如,通過將配置數(shù)據(jù)加載到FPGA)生成具有該定義的配置的可配置處理器。
[0070]在一些示例中,集成電路定義數(shù)據(jù)集能夠包括運行在由數(shù)據(jù)集定義的硬件上或與由數(shù)據(jù)集定義的硬件組合地運行的軟件。在圖5中示出的示例中,IC生成系統(tǒng)還可以由集成電路定義數(shù)據(jù)集配置為在制造集成電路時將根據(jù)在集成電路定義數(shù)據(jù)集處定義的程序代碼的固件加載到該集成電路上或者按照其他方式向集成電路提供程序代碼以用于與集成電路一起使用。[0071 ]術語“處理器”和“計算機”在本文中用于指代具有使得其能夠運行指令的處理能力的任何設備或其部分或者能夠執(zhí)行功能或方法中的全部或部分的專用電路、或者其任何組合。
[0072]盡管本主題已經(jīng)按照特定于結構特征和/或方法動作的語言進行了描述,但是要理解,權利要求中限定的主題不一定限于以上描述的具體特征或動作。相反,以上描述的具體特征和動作被公開為實施權利要求的示例形式。將理解,以上描述的益處和優(yōu)點可以涉及一個示例或可以涉及若干示例。
[0073]如將對技術人員顯而易見的,可以在不喪失尋求的效果的情況下擴展或更改本文中給出的任何范圍或值。本文中描述的方法步驟可以按照任何適當?shù)捻樞蚧蛘咴诤线m的情況下同時地被執(zhí)行。在不喪失尋求的效果的情況下,以上描述的示例中的任何的方面可以與描述的其他示例中的任何的方面進行組合以形成另外的示例。
【主權項】
1.一種圖形處理系統(tǒng),包括: 第一深度緩沖器,被配置為將針對多個樣本位置的解析片段的深度值存儲在所述圖形處理系統(tǒng)的渲染空間內; 第二深度緩沖器,被配置為存儲針對所述樣本位置的未解析片段的深度值;以及 深度測試邏輯,被配置為接收與基元相關的基元數(shù)據(jù)并且使用存儲在所述深度緩沖器中的至少一個深度緩沖器中的深度值來對所述基元的片段執(zhí)行深度測試; 其中所述圖形處理系統(tǒng)被配置為:(i)在通過深度測試的片段為解析片段時將所述片段的所述深度值存儲在所述第一深度緩沖器中,以及(ii)在通過深度測試的片段為未解析片段時將所述片段的所述深度值存儲在所述第二深度緩沖器中。2.根據(jù)權利要求1所述的圖形處理系統(tǒng), 其中在以下中的一個或多個情況時片段為未解析的:(i)所述片段的深度未被解析,(ii)所述片段的存在未被解析,或者(iii)所述片段的可見性未被解析; 并且其中在片段的所述深度、所述存在以及所述可見性被解析時所述片段被解析。3.根據(jù)權利要求1或2所述的圖形處理系統(tǒng),其中與穿通對象類型相關聯(lián)的片段在所述片段的存在被解析之前為未解析片段。4.根據(jù)前述權利要求中的任一項所述的圖形處理系統(tǒng),其中與不透明對象類型或半透明對象類型相關聯(lián)的片段為解析片段除非所述片段的所述可見性未被解析。5.根據(jù)前述權利要求中的任一項所述的圖形處理系統(tǒng),其中所述深度測試邏輯被配置為維持指示符的集合,所述指示符針對所述樣本位置中的每個樣本位置指示所述深度緩沖器中的哪個深度緩沖器要用于所述深度測試。6.根據(jù)權利要求5所述的圖形處理系統(tǒng),其中所述指示符中的每個指示符與所述樣本位置中的相應樣本位置相關聯(lián)。7.根據(jù)權利要求5或6所述的圖形處理系統(tǒng),其中所述圖形處理系統(tǒng)被配置為將所述指示符初始化為指示所述第一深度緩沖器。8.根據(jù)權利要求5至7中的任一項所述的圖形處理系統(tǒng),其中所述深度測試邏輯被配置為在所述樣本位置處的未解析片段通過深度測試時將針對所述樣本位置的所述指示符設置為指示所述第二深度緩沖器。9.根據(jù)權利要求5至8中的任一項所述的圖形處理系統(tǒng),其中所述深度測試邏輯被配置為在樣本位置處的解析片段通過使用存儲在所述第二深度緩沖器中的深度值執(zhí)行的深度測試時將針對所述樣本位置的所述指示符設置為指示所述第一深度緩沖器。10.根據(jù)前述權利要求中的任一項所述的圖形處理系統(tǒng),其中所述深度測試邏輯被配置為丟棄未通過使用存儲在所述第一深度緩沖器中的深度值執(zhí)行的深度測試的片段。11.根據(jù)前述權利要求中的任一項所述的圖形處理系統(tǒng),還被配置為在特定片段未通過使用存儲在所述第二深度緩沖器中的深度值執(zhí)行的深度測試時解析所述第二深度緩沖器的所述片段,其中所述深度測試邏輯被配置為: 使用解析的所述片段的所述深度值來更新所述第一深度緩沖器中的所述深度值;以及 在對所述第一深度緩沖器中的所述深度值進行更新之后,使用存儲在所述第一深度緩沖器中的合適的深度值來對所述特定片段執(zhí)行第二深度測試。12.根據(jù)權利要求1至10中的任一項所述的圖形處理系統(tǒng),還被配置使得在特定片段未通過使用存儲在所述第二深度緩沖器中的深度值執(zhí)行的深度測試時,所述深度測試邏輯被配置為: 使用存儲在所述第一深度緩沖器中的合適的深度值來對所述特定片段執(zhí)行第二深度測試; 其中所述圖形處理系統(tǒng)被配置為,在所述特定片段通過所述第二深度測試時:(i)解析所述第二深度緩沖器的所述片段,(i i)使用解析的所述片段的所述深度值來更新所述第一深度緩沖器中的所述深度值,以及(iii)在對所述第一深度緩沖器中的所述深度值進行更新之后,使用存儲在所述第一深度緩沖器中的合適的深度值來對所述特定片段執(zhí)行第三深度測試;并且 其中所述圖形處理系統(tǒng)被配置為在所述特定片段未通過所述第二深度測試時丟棄所述特定片段。13.根據(jù)權利要求11或12所述的圖形處理系統(tǒng),其中在所述第二深度緩沖器的所述片段正被解析的同時,所述深度測試邏輯被配置為: 從所述第二深度緩沖清除所述深度值;以及 繼續(xù)針對與接收到的基元數(shù)據(jù)相關的基元的片段的深度測試,其中在解析片段通過深度測試時其深度值被寫入到所述第二深度緩沖器中; 其中當所述第二深度緩沖器的所述片段已經(jīng)被解析時,所述深度測試邏輯被配置為將解析的所述片段的所述深度值與所述第二深度緩沖器中的深度值進行比較并且利用解析的深度值相應地更新所述第一深度緩沖器。14.根據(jù)前述權利要求中的任一項所述的圖形處理系統(tǒng),還包括至少三個標簽緩沖器的集合,所述至少三個標簽緩沖器的集合包括: 所述標簽緩沖器的第一標簽緩沖器,被配置為存儲針對其深度值被存儲在所述第一深度緩沖器中的所述片段的基元標識符; 所述標簽緩沖器的第二標簽緩沖器,被配置為存儲針對其深度值被存儲在所述第二深度緩沖器中的所述片段的基元標識符;以及 所述標簽緩沖器的第三標簽緩沖器,被配置為存儲針對處于被沖刷的過程中的片段的基元標識符。15.根據(jù)前述權利要求中的任一項所述的圖形處理系統(tǒng),其中多個標簽緩沖器被配置為存儲針對不透明穿通片段的多個層的基元標識符,其中所述圖形處理系統(tǒng)被配置為控制所述多個標簽緩沖器被沖刷的順序,使得最前面的不透明穿通片段在所述不透明穿通片段的底層之前被沖刷。16.根據(jù)前述權利要求中的任一項所述的圖形處理系統(tǒng),其中所述圖形處理系統(tǒng)是延遲渲染系統(tǒng),所述延遲渲染系統(tǒng)包括用于對片段執(zhí)行著色化和紋理化中的一個或兩者的片段處理模塊,其中所述片段處理模塊被布置為在所述深度測試邏輯之后作用于片段,并且其中所述未解析片段能夠被所述片段處理模塊解析。17.根據(jù)前述權利要求中的任一項所述的圖形處理系統(tǒng),其中所述圖形處理系統(tǒng)是基于圖塊的圖形系統(tǒng),在所述基于圖塊的圖形系統(tǒng)中所述渲染空間包括一個或多個圖塊,并且其中所述深度緩沖器中的每個深度緩沖器被配置為一次存儲針對一個圖塊內的樣本位置的深度值。18.—種在圖形處理系統(tǒng)中處理基元的方法,所述圖形處理系統(tǒng)包括第一深度緩沖器和第二深度緩沖器,所述第一深度緩沖器被配置為將針對多個樣本位置的解析片段的深度值存儲在所述圖形處理系統(tǒng)的渲染空間內,第二深度緩沖器被配置為存儲針對所述樣本位置的未解析片段的深度值,所述方法包括: 在所述圖形處理系統(tǒng)的深度測試邏輯處接收與基元相關的基元數(shù)據(jù); 使用存儲在所述深度緩沖器中的至少一個深度緩沖器中的深度值來對所述基元的片段執(zhí)行深度測試;以及 將通過深度測試的片段的所述深度值存儲在所述深度緩沖器中的一個深度緩沖器中,其中: 如果所述片段為解析片段,則將所述片段的所述深度值存儲在所述第一深度緩沖器中,并且 如果所述片段為未解析片段,則將所述片段的所述深度值存儲在所述第二深度緩沖器中。19.根據(jù)權利要求18所述的方法,還包括維持指示符的集合,所述指示符針對所述樣本位置中的每個樣本位置指示所述深度緩沖器中的哪個深度緩沖器要用于所述深度測試。20.根據(jù)權利要求19所述的方法,還包括: 在樣本位置處的未解析片段通過深度測試時將針對所述樣本位置的所述指示符設置為指示所述第二深度緩沖器;以及 在樣本位置處的解析片段通過使用存儲在所述第二深度緩沖器中的深度值執(zhí)行的深度測試時將針對所述樣本位置的所述指示符設置為指示所述第一深度緩沖器。
【文檔編號】G06T1/60GK105825469SQ201610055065
【公開日】2016年8月3日
【申請日】2016年1月26日
【發(fā)明人】J·豪森
【申請人】想象技術有限公司