區(qū)片內(nèi)的圖元的所有片段未通過它們的深度測試時,可以在用于區(qū)片的分片單元104中剔除圖元。
[0052]在用于區(qū)片的圖元的任一個圖元在HSR單元106中被處理之前,從分片單元104中轉(zhuǎn)發(fā)的深度信息用于例如基于用于區(qū)片的最終TU深度緩沖器值來預(yù)先填充HSR深度緩沖器116。因此,由HSR單元106所執(zhí)行的深度測試用作對圖元數(shù)據(jù)的第二次傳遞。這可以允許HSR單元106在深度測試(在將它們傳遞到紋理化/著色單元108之前)中比如果分片單元104沒有執(zhí)行深度測試(如上文在背景部分中所描述的現(xiàn)有技術(shù)中)拒絕圖元的更多片段。例如,當半透明或穿通片段被不透明片段隱藏時,更多的片段可以被HSR單元106中的深度測試拒絕。HSR單元106向其中在被發(fā)送到幀緩沖器112用于顯示之前片段被紋理化和/或著色的紋理化/著色單元108發(fā)送經(jīng)得起HSR單元106中的深度測試(即,未被剔除)的可見片段。
[0053]緊隨參照圖4(a)至圖4(c)上文所描述的示例之后,HSR深度緩沖器116將依據(jù)用于區(qū)片的TU深度緩沖器被初始化成具有如圖4(c)中的線402所示的深度值,即,在區(qū)片中的所有圖元已經(jīng)被分片單元104處理過之后。HSR單元106對從在分片單元104中執(zhí)行的深度測試之后沒有被剔除的圖元生成的片段執(zhí)行深度測試(以與分片單元104所使用的深度比較模式相同的深度比較模式,例如,DCM_LESS_EQ模式)。因此,當HSR單元106對圖元4042的片段執(zhí)行隱藏面消除時,因為從TU深度緩沖器轉(zhuǎn)發(fā)的深度值指示圖元404 2的片段將最終被更接近的對象的片段隱藏,所以片段針對所預(yù)先填充的HSR深度緩沖器116未通過深度測試。更接近的對象是圖元4043,盡管圖元4043并沒有在圖元404 2的片段未通過深度測試的時刻被HSR單元106處理。與其中HSR深度緩沖器116沒有基于來自用于區(qū)片的TU深度緩沖器的深度值被初始化的情形比較,這節(jié)省了 HSR單元106中的一些處理(例如,HSR深度緩沖器116不需要被更新)。
[0054]然而,在其中圖元4042不是不透明的情形中,例如,當其是半透明的時,可能發(fā)生更大的處理節(jié)省。在該情況下,如果HSR深度緩沖器116沒有基于用于區(qū)片的TU深度緩沖器的深度值進行初始化,則HSR單元106可能將半透明圖元所覆蓋的片段沖洗到紋理化/著色單元108,以使混合操作可以在半透明的圖元4042的片段和先前渲染過的其它對象的片段之間執(zhí)行。因為不透明圖元4043的片段將覆蓋圖元404 2的片段,所以將片段沖洗到紋理化/著色單元108所涉及的處理、執(zhí)行紋理化和著色操作、以及混合片段最終都被浪費了。然而,在本文中所描述的示例中,當對區(qū)片的片段執(zhí)行深度測試時,分片單元104中的深度測試允許HSR單元106中的深度測試使用用于區(qū)片的最終TU深度緩沖器值。因此,因為HSR深度緩沖器116中的深度值已經(jīng)被預(yù)先填充以考慮圖元4043的深度,所以圖元4042的片段可能未通過HSR單元106中的深度測試。因此,避免了沖洗和混合半透明片段所涉及的不必要的處理。利用半透明和其它復(fù)雜的紋理正在變得越來越普遍,并且這些紋理通常處理相對復(fù)雜,所以避免具有這些紋理的圖元的不必要的處理是有用的。
[0055]在分片單元104中執(zhí)行的深度測試使用與HSR單元106的相同的Z-緩沖技術(shù)的原理,但是使用不同的深度緩沖器。在分片單元104和HSR單元106中,用于表示深度值的比特數(shù)量可以相同或者不同。例如,在HSR深度緩沖器116中,深度值每一個可以由32個比特表示,而在TU深度緩沖器114中,對應(yīng)的深度值每一個可以由較少的比特(例如,16或12個比特)表示,其中,例如在分片單元104中或在HSR單元106中,可以實現(xiàn)不同格式之間的轉(zhuǎn)換。這樣,與在分片單元106中利用完全32-比特深度值比較,可以減少在分片單元104中進行處理目的是執(zhí)行深度測試的數(shù)據(jù)比特的數(shù)量。
[0056]在上文所描述的示例中,用于區(qū)片的TU深度緩沖器在全分辨率下進行維護,即,使用區(qū)片內(nèi)的每個樣本位置的一個深度值。在其它示例中,用于區(qū)片的TU深度緩沖器可以在降低的分辨率下進行維護,其中,TU深度緩沖器中的每個深度值表示區(qū)片內(nèi)多于一個的樣本位置的塊的深度(例如,樣本位置的2X2、4X4或8X8塊)。即使在分片單元104中確定TU深度緩沖器處于全分辨率下,但是可能有益的是使用TU深度緩沖器的降低的分辨率版本作為被轉(zhuǎn)發(fā)以供HSR單元106使用的深度信息,因為這減少了包括在深度信息中的數(shù)據(jù)量。
[0057]例如,從分片單元104中轉(zhuǎn)發(fā)的深度信息可以包括粗略TU深度緩沖器的值,其中,粗略TU深度緩沖器的每個值表示全分辨率TU深度緩沖器內(nèi)的值塊。分片單元104基于用于區(qū)片的全分辨率TU深度緩沖器內(nèi)的對應(yīng)的值塊以保守(conservative)方式確定用于區(qū)片的粗略TU深度緩沖器的值。確定以“保守方式”確定粗略深度緩沖器的粗略值意味著粗略值提供全分辨率深度緩沖器的對應(yīng)的塊中的全分辨率深度值的任一個的最不嚴格的深度測試。例如,如果深度比較模式是DCM_LESS_EQ,則深度緩沖器中的更高深度值比更低深度值提供更少嚴格的深度測試,因此粗略深度值采取全分辨率深度值的對應(yīng)的塊的最高深度值。與此相反,如果深度比較模式是DCM_GREATER_EQ,則深度緩沖器中的更低深度值比更高深度值提供更少嚴格的深度測試,因此粗略深度值采取全分辨率深度值的對應(yīng)的塊的最低深度值。分片單元104在可以與很多區(qū)片重疊的圖元上操作,因此,分片單元104可以同時維護用于多個區(qū)片的相應(yīng)的深度緩沖器。圖12示出了其中圖形處理系統(tǒng)102包括分片單元104和緩存(cache)存儲器1202的示例。分片單元104包括TU深度緩沖器114并且緩存存儲器1202包括緩存深度緩沖器1204。存儲器103包括粗略深度緩沖器1206。作為示例,TU深度緩沖器114可以被配置成一次存儲用于單個區(qū)片的全分辨率深度值。粗略深度緩沖器1206被配置成存儲用于圖像的所有區(qū)片(例如,近似1000個區(qū)片)的粗略深度值。緩存深度緩沖器1204可以被配置成一次存儲用于圖像的一些并非所有的區(qū)片(例如,用于4個區(qū)片)的深度值。在不同的示例中,存儲在緩存深度緩沖器1204中的深度值的分辨率可以不同。為了給出三個示例:(i)全分辨率深度值可以儲存在緩存深度緩沖器1204中,以使當分片單元104將用于區(qū)片的數(shù)據(jù)值寫到緩存深度緩沖器1204,隨后從緩存深度緩沖器1204中讀回那些用于區(qū)片的深度值時,沒有丟失準確性;(ii)中間分辨率深度值(即,比全分辨率更低的分辨率但是比存儲在粗略深度緩沖器1206中的粗略深度值更高的分辨率)可以儲存在緩存深度緩沖器1204中,從而降低緩存存儲器1202的存儲器要求和/或允許用于更多區(qū)片的深度值在任何給定的時間存儲在緩存深度緩沖器1204中,從而增加緩存命中率;或(iii)粗略分辨率深度值(即,與存儲在粗略深度緩沖器1206中的深度值相同的分辨率)可以儲存在緩存深度緩沖器1204中,其將進一步降低緩存存儲器1202的存儲器要求和/或允許用于更多區(qū)片的深度值在任何給定的時間存儲在緩存深度緩沖器1204中,但是如果分片單元104將用于區(qū)片的深度值寫到緩存存儲器1202,隨后再次讀出它們,則可能降低深度值的準確性。當分片單元104改變正在執(zhí)行用于其深度測試的區(qū)片時,用于先前區(qū)片的深度值可以儲存在緩存存儲器1202的緩存深度緩沖器1204中。這樣,緩存深度緩沖器1204存儲用于若干(例如,四個)最近處理過的區(qū)片的深度值。當分片單元104返回到先前區(qū)片時,這允許從緩存存儲器1202中取得深度值,而無需訪問存儲器103。如果當分片單元104需要訪問用于該區(qū)片的深度值時,區(qū)片的深度值沒有存儲在緩存存儲器1202中(即,如果有緩存缺失),則區(qū)片的深度值從存儲器103中取得以供分片單元104使用。如上文所描述的,對于不同的深度緩沖器(114,1204和1206),深度值的分辨率可以不同,因此,當深度值在深度緩沖器之間傳遞時,可以執(zhí)行一些處理,以便在適當?shù)男路直媛氏麓_定深度值,其如上文所描述的以保守方式進行。
[0058]圖5示出了其中當存在于區(qū)片的所有圖元已經(jīng)在分片單元104中處理過時,實現(xiàn)DCM_LESS_EQ模式的示例,其中,圖5 (a)中的線502表示用于區(qū)片的TU深度緩沖器的列的全分辨率深度值。圖5(b)中的線504示出了對應(yīng)的粗略深度值,其中,每個粗略值表示在圖5 (a)所示的全分辨率深度值的4 X 4塊。圖5 (b)中的粗略深度值的每一個取對應(yīng)的4 X 4塊中的16個全分辨率深度值中的最高值。注意,為清楚起見,假定圖5(a)所示的樣本的列包括4X4全分辨率塊的每一個中的深度值中的最高值。圖5(c)示出了具有甚至比圖5(b)所示的分辨率更低的分辨率的另一個粗略深度緩沖器。特別地,圖5(c)中的線506示出了表示圖5(a)所示的全分辨率深度值的8X8塊的粗略值。圖5(c)中的粗略深度值的每一個取對應(yīng)的8X8塊中的64個全分辨率深度值中的最高值。再次,注意,為清楚起見,假定圖5(a)所示的樣本的列包括8X8全分辨率塊的每一個中的深度值中的最高值。顯然,單個粗略深度值可以利用比(例如,16或64)全分辨率深度值的對應(yīng)的塊更少的數(shù)據(jù)比特來表不。
[0059]此外,在一些示例中,由HSR單元106執(zhí)行的隱藏面消除包括:(i) 一個或多個初始HSR階段(其可以被稱為“分層深度測試”),其以相應(yīng)的一個或多個粗略比例執(zhí)行并且不包括每個樣本深度測試;和(ii)隨后的全分辨率HSR階段,其以樣本比例執(zhí)行并且不包括每個樣本深度測試。圖6示出了其中HSR單元108包括分層深度測試模塊602和每個樣本深度測試模塊604的示例,并且其中,HSR深度緩沖器116包括粗略深度緩沖器606和全分辨率深度緩沖器608。分層深度測試模塊602被布置成接收用于存在于區(qū)片中的圖元的圖元數(shù)據(jù)并且被布置成采樣圖元以確定圖元的片段和保守地組合片段以便在粗略深度值的粗略分辨率下生成粗略片段。分層深度測試模塊602還被布置成使用存儲在粗略深度緩沖器606中的用于區(qū)片的粗略深度值對粗略片段執(zhí)行分層深度測試。每個樣本深度測試模塊604被布置成接收用于存在于區(qū)片中的并且還沒有被分層深度測試模塊602剔除的圖元的片段的圖元數(shù)據(jù),并且使用存儲在全分辨率深度緩沖器608中的用于區(qū)片的全分辨率深度值執(zhí)行每個樣本深度測試。因為一次考慮到樣本的粗略塊(例如,4X4或8X8塊)并且如果深度測試失敗,則能夠比如果塊內(nèi)的每個樣本被分開進行深度測試更高效地被剔除,所以分層深度測試要求比每個樣本深度測試執(zhí)行更少的深度比較操作。如果區(qū)片的大面積包括能夠被剔除的片段,則這是非常有用,因為它減少了需要在每個樣本深度測試模塊604中在每個樣本的基礎(chǔ)上進行深度測試的片段的數(shù)量。減少需要執(zhí)行的每個樣本測試的數(shù)量可以提高HSR單元106所執(zhí)行的HSR的效率。
[0060]在圖6所示的示例中,粗略深度緩沖器606的值是以粗略TU深度緩沖器的相同的粗略比例,以使粗略TU深度緩沖器的值(S卩,從分片單元104中轉(zhuǎn)發(fā)的深度信息)可以用于初始化HSR單元108中的粗略深度緩沖器606中的深度值。這允許HSR單元106以非常簡單的方式處置所轉(zhuǎn)發(fā)的深度信息。在其它示例中,所轉(zhuǎn)發(fā)的深度信息的深度值的比例可以與粗略深度緩沖器606的比例不同,在這種情況下,HSR單元108可以操縱所轉(zhuǎn)發(fā)的深度信息,以使它可以正確地初始化粗略深度緩沖器606中的深度值。
[0061]在一些示例中,可以存在串聯(lián)布置的多于一個的分層深度測試模塊602(具有對應(yīng)的粗略深度緩沖器),其中,深度測試的比例不同,并且沿著該串聯(lián)模塊越來越精細。例如,第一分層深度測試模塊可以以片段的8X8塊的比例執(zhí)行深度測試,然后第二分層深度測試模塊可以以剩余的片段的4X4塊的比例執(zhí)行深度測試,然后每個樣本深度測試模塊604可以對剩余的片段執(zhí)行每個樣本深度測試。
[0062]—些對象可以具有與上文所描述的DCM_LESS_EQ模式不同的深度比較模式,例如用于產(chǎn)生特殊效果或以重疊圖像頂部上的控制面板等。例如,一些其它深度比較模式是:
(i)DCM_GREATER_EQ,其中,如果其深度值大于或等于適當?shù)纳疃染彌_器中對應(yīng)的深度值,貝1J片段通過深度測試;(ii)DCM_LESS,其中,如果其深度值小于適當?shù)纳疃染彌_器中對應(yīng)的深度值,則片段通過深度測試;(iii)DCM_GREATER,其中,如果其深度值大于適當?shù)纳疃染彌_器中對應(yīng)的深度值,則片段通過深度測試;(iv)DCM_ALWAYS,其中,片段總是通過深度測試;(v)DCM_NEVER,其中,片段從未通過深度;(vi)DCM_EQUAL,其中,如果其深度值等于適當?shù)纳疃染彌_器中對應(yīng)的深度值,則片段通過深度測試;和(vii)DCM_NOT_EQUAL,其中,如果其深度值不等于適當?shù)纳疃染彌_器中對應(yīng)的深度值,則片段通過深度測試。
[0063]作為示例,圖7示出了如圖4所示的那些一樣的,當分片單元104處接收到相同的圖元時,如果在分片單元104中使用DCM_GREATER_EQ模式,則用于區(qū)片的TU深度緩沖器中的深度值如何被更新。線702示出了 TU深度緩沖器的32個樣本的列中的當前深度值。如圖7(a)所圖示的,因為它們的深度值大于由線702所表示的當前深度值,所以圖元40尖的片段通過深度測試,但是圖元4042的片段未通過深度測試,所以TU深度緩沖器中的深度值使用圖元40尖的深度值進行更新,而非使用圖元404 2的深度值,如圖7(b)中的線702所示。然后,在分片單元104處接收圖元4043和404 4。圖元4043的大部分片段未通過深度測試,但是圖元4044的片段通過深度測試,并且通過它們的深度測試的圖元404 3的片段通過圖元4044