本公開涉及一種用于處理子圖元的圖形處理方法和系統(tǒng)。
背景技術(shù):
圖形處理系統(tǒng)通常地被配置為例如從在計算機系統(tǒng)上運行的應(yīng)用接收圖形數(shù)據(jù),并且渲染圖形數(shù)據(jù)以提供渲染輸出。例如向圖形處理系統(tǒng)提供的圖形數(shù)據(jù)可以描述在待渲染的三維(3D)場景內(nèi)的幾何結(jié)構(gòu),并且渲染輸出可以是場景的渲染的圖像。一些圖形處理系統(tǒng)(其可以稱為“基于圖塊的”圖形處理系統(tǒng))使用被細分成多個圖塊的渲染空間。“圖塊”是渲染空間的區(qū)域并且可以具有任何適當形狀,但是通常地是矩形(其中術(shù)語“矩形”包括正方形)。如在本領(lǐng)域中所知,將渲染空間細分成圖塊有許多益處。例如將渲染空間細分成圖塊允許以逐個圖塊方式渲染圖像,其中針對圖塊的圖形數(shù)據(jù)可以在渲染圖塊期間被暫時地“片上”存儲、由此減少在系統(tǒng)存儲器與圖形處理系統(tǒng)的圖形處理單元(GPU)被實施在其上的芯片之間傳送的數(shù)據(jù)量。
基于圖塊的處理系統(tǒng)通常地在兩個階段中操作:幾何處理階段和光柵化階段。在幾何處理階段中,分析用于渲染的圖形數(shù)據(jù)以針對圖塊中的每個圖塊確定哪些圖形數(shù)據(jù)項目存在于該圖塊內(nèi)。然后在光柵化階段中,可以通過處理被確定存在于該圖塊內(nèi)的那些圖形數(shù)據(jù)項目來渲染圖塊(而無需處理在幾何處理階段中被確定為不存在于特定圖塊內(nèi)的圖形數(shù)據(jù)項目)。
圖1示出基于圖塊的圖形處理系統(tǒng)100的示例。系統(tǒng)100包括存儲器102、幾何處理邏輯104和光柵化邏輯106。如在本領(lǐng)域中所知,幾何處理邏輯104和光柵化邏輯106可以被實施在GPU上并且可以共享一些處理資源。幾何處理邏輯104包括幾何取回單元108、幾何變換邏輯110、挑選/刪減單元112和圖塊化單元114。光柵化邏輯106包括參數(shù)取回單元116、隱藏表面去除(HSR)單元118和紋理化/陰影化單元120。存儲器102可以被實施為一個或多個物理存儲器塊并且包括圖形存儲器122、已變換參數(shù)存儲器124、控制流存儲器126和幀緩沖器128。
幾何處理單元104執(zhí)行幾何處理階段,在該階段中,幾何取回單元108從圖形存儲器122取回幾何數(shù)據(jù)并且向變換邏輯110傳遞取回的數(shù)據(jù)。幾何數(shù)據(jù)包括描述待渲染的幾何結(jié)構(gòu)的圖形數(shù)據(jù)項目。例如圖形數(shù)據(jù)項目可以代表幾何形狀,這些幾何形狀描述場景中的結(jié)構(gòu)的表面并且稱為“圖元”。常見圖元形狀是三角形,但是圖元可以是其它2D形狀并且也可以是線或者點。對象可以由一個或多個這樣的圖元組成。對象可以由數(shù)千或者甚至百萬個這樣的圖元組成。場景通常地包含許多對象。圖形數(shù)據(jù)項目中的一些圖形數(shù)據(jù)項目可以是控制點,這些控制點描述將被鑲嵌以生成多個鑲嵌的圖元的補塊。
變換邏輯110將幾何數(shù)據(jù)變換到渲染空間中并且可以應(yīng)用如在本領(lǐng)域中已知的光照/屬性處理。所得數(shù)據(jù)被傳遞到挑選和/或刪減落在查看平截頭體以外的任何幾何結(jié)構(gòu)的挑選/刪減單元112。所得變換的幾何數(shù)據(jù)項目(例如圖元)被提供到圖塊化單元114,并且也提供到存儲器102用于在已變換參數(shù)存儲器124中存儲。圖塊化單元114針對渲染空間的圖塊中的每個圖塊生成控制流數(shù)據(jù),其中針對圖塊的控制流數(shù)據(jù)包括將用于渲染圖塊的變換的圖元的標識符,即至少部分地位于圖塊內(nèi)的變換的圖元的標識符。針對圖塊的控制流數(shù)據(jù)可以稱為針對圖塊的“顯示列表”或者“對象列表”。針對圖塊的控制流數(shù)據(jù)被提供到存儲器102用于在控制流存儲器126中存儲。因此,在幾何處理階段之后,待渲染的變換的圖元被存儲在已變換參數(shù)存儲器124中,并且指示變換的圖元中的哪些變換的圖元存在于圖塊中的每個圖塊中的控制流數(shù)據(jù)被存儲在控制流存儲器126中。
在光柵化階段中,光柵化邏輯106以逐個圖塊方式渲染圖元。參數(shù)取回單元116接收針對圖塊的控制流數(shù)據(jù),并且如針對圖塊的控制流數(shù)據(jù)指示的那樣從已變換參數(shù)存儲器124取回指示的變換的圖元。向隱藏表面去除(HSR)單元118提供取回的變換的圖元,該HSR單元去除隱藏的圖元片段(例如被其它圖元片段隱藏)。執(zhí)行隱藏表面去除的方法在本領(lǐng)域中是已知的。術(shù)語“片段”是指圖元的在采樣點處的采樣,該采樣將被處理以渲染圖像的像素。在一些示例中,可以存在片段到像素的一一映射。然而,在其它示例中,可以有比像素更多的片段,并且該過采樣可以允許例如通過有助于可以應(yīng)用于多個片段用于渲染像素值中的每個像素值的防混疊和其它過濾來對像素值的更高質(zhì)量的渲染。向紋理化/陰影化單元120提供未被HSR單元118去除的圖元,該紋理化/陰影化單元向圖元片段應(yīng)用紋理化和/或陰影化。雖然在圖1中未示出,但是紋理化/陰影化單元120可以如在本領(lǐng)域中所知從存儲器102接收紋理數(shù)據(jù)以便向圖元片段應(yīng)用紋理化。紋理化/陰影化單元120可以向圖元片段應(yīng)用如在本領(lǐng)域中已知的更多處理(例如阿爾法混合和其它過程)以便確定圖像的渲染的像素值。為圖塊中的每個圖塊執(zhí)行光柵化階段,從而整個圖像可以用正在確定的針對整個圖像的像素值來渲染。向存儲器102提供渲染的像素值用于在幀緩沖器128中存儲。然后可以用任何適當方式使用渲染的圖像,例如在顯示器上顯示或者在存儲器中存儲或者向另一設(shè)備傳輸渲染的圖像等。
用于代表場景的幾何數(shù)據(jù)量往往隨著計算機圖形應(yīng)用(例如游戲應(yīng)用)的復(fù)雜性增加而增加。這意味著在圖1的系統(tǒng)中,從幾何處理邏輯104提供到存儲器102并且存儲在已變換參數(shù)存儲器124中的變換的幾何數(shù)據(jù)量增加。數(shù)據(jù)從(通常地“片上”實施的)幾何處理邏輯104向存儲器102(通常地“片外”實施為系統(tǒng)存儲器)的該傳送可能是相對慢的過程(與在渲染幾何數(shù)據(jù)時涉及到的其它過程比較)并且可能消耗大量存儲器102。
因此,如在英國專利號GB2458488中描述的那樣,一些基于圖塊的圖形處理系統(tǒng)可以使用“未變換的顯示列表”,從而針對圖塊的控制流數(shù)據(jù)包括對輸入幾何數(shù)據(jù)的指示,即未變換的幾何數(shù)據(jù)而不是變換的幾何數(shù)據(jù)。這意味著變換的幾何數(shù)據(jù)無需從幾何處理邏輯提供到系統(tǒng)存儲器或者存儲在系統(tǒng)存儲器中。這些系統(tǒng)在光柵化邏輯中實施變換單元,因為由光柵化邏輯取回的幾何數(shù)據(jù)未被變換,但是在一些場景中,避免向系統(tǒng)存儲器傳送變換的圖元并且在系統(tǒng)存儲器中存儲它們的延遲和存儲器使用的益處可以超過在光柵化階段中執(zhí)行變換的處理成本。
圖2示出與在GB2458488中描述的系統(tǒng)相似的使用未變換的顯示列表的系統(tǒng)200的示例。系統(tǒng)200與圖1中所示系統(tǒng)100相似并且包括存儲器202、幾何處理邏輯204和光柵化邏輯206。如在本領(lǐng)域中所知,幾何處理邏輯204和光柵化邏輯206可以被實施在GPU上并且可以共享一些處理資源。幾何處理邏輯204包括幾何數(shù)據(jù)取回單元208、幾何變換邏輯210、挑選/刪減單元212和圖塊化單元214。光柵化邏輯206包括取回單元216、光柵化變換邏輯230、HSR單元218和紋理化/陰影化單元220。存儲器202可以被實施為一個或多個物理存儲器塊,并且包括圖形存儲器222、控制流存儲器226和幀緩沖器228。
幾何處理邏輯204執(zhí)行幾何處理階段,在該幾何處理階段中,幾何數(shù)據(jù)取回單元208從圖形存儲器222取回幾何數(shù)據(jù)并且向變換邏輯210傳遞取回的數(shù)據(jù)。取回單元208可以僅取回用于計算圖形數(shù)據(jù)項目(例如圖元)的位置的數(shù)據(jù),因為圖形數(shù)據(jù)項目的其它數(shù)據(jù)(例如將在渲染期間應(yīng)用于圖形數(shù)據(jù)項目的顏色數(shù)據(jù)或者紋理數(shù)據(jù)等)不是幾何處理邏輯204需要的。這不同于其中針對圖形數(shù)據(jù)項目的所有數(shù)據(jù)由取回單元108取回的系統(tǒng)100。變換邏輯210將圖形數(shù)據(jù)項目的位置數(shù)據(jù)變換到渲染空間中,并且所得數(shù)據(jù)被傳遞到挑選和/或刪減落在查看平截頭體以外的任何圖形數(shù)據(jù)項目的挑選/刪減單元212。圖塊化單元214針對渲染空間的圖塊中的每個圖塊生成控制流數(shù)據(jù),其中針對圖塊的控制流數(shù)據(jù)包括將用于渲染圖塊的圖形數(shù)據(jù)項目的標識符,例如在被變換時至少部分地位置于圖塊內(nèi)的圖元的標識符??刂屏鲾?shù)據(jù)中的標識符標識輸入圖形數(shù)據(jù)項目、即在圖形存儲器222中存儲的圖形數(shù)據(jù)項目。這不同于圖1中所示系統(tǒng)100,在該系統(tǒng)中,控制流數(shù)據(jù)中的標識符標識在已變換參數(shù)存儲器124中存儲的變換的圖元。向存儲器202提供針對圖塊的控制流數(shù)據(jù)用于在控制流存儲器226中存儲。
在光柵化階段中,光柵化邏輯206的取回單元216從控制流存儲器226接收針對圖塊的控制流數(shù)據(jù),并且如針對圖塊的控制流數(shù)據(jù)指示的那樣從圖形存儲器222取回指示的輸入圖形數(shù)據(jù)項目。輸入圖形數(shù)據(jù)項目未被變換。變換邏輯230將取回的圖形數(shù)據(jù)項目變換到渲染空間中。變換的圖形數(shù)據(jù)項目被提供到HSR單元218,該HSR單元執(zhí)行HSR以去除隱藏的圖元片段。紋理化和陰影化單元220然后向未被HSR單元218去除的圖元片段執(zhí)行處理,比如紋理化和/或陰影化。HSR單元218以及紋理化和陰影化單元220以與圖1中所示和以上描述的系統(tǒng)100的對應(yīng)單元118和120相似的方式操作。所得渲染的像素值被提供到存儲器202用于在幀緩沖器228中存儲并且可以后續(xù)地被使用,例如被顯示在顯示器上或者被存儲在存儲器中或者被傳輸?shù)搅硪辉O(shè)備等。
先前專利GB2458488描述用于光柵化階段的優(yōu)化,其中推遲光照或者屬性處理直至在已經(jīng)執(zhí)行隱藏表面去除之后。在該優(yōu)化中,在光柵化階段中實施兩個變換單元:在HSR單元之前實施的僅變換圖元的“位置數(shù)據(jù)”(即用于在計算圖元的位置時使用的數(shù)據(jù))的第一變換單元,和在HSR單元之后實施的對于通過HSR單元的深度測試的圖元執(zhí)行光照或者屬性處理的第二變換單元。以該方式,僅對于未被HSR單元挑選的圖元計算圖元的非位置屬性。
先前專利GB2458488描述又一優(yōu)化,其中在幾何處理階段中變換,然后在參數(shù)緩沖器中存儲針對圖元的位置數(shù)據(jù)。針對圖元的位置數(shù)據(jù)然后可以在光柵化階段期間被取回并且由HSR單元和其它處理單元使用。從存儲器取回并且變換針對圖元的非位置屬性數(shù)據(jù)用于由HSR單元和其它處理單元使用。該優(yōu)化避免需要在光柵化階段中重新計算針對圖元的變換的位置數(shù)據(jù)。
技術(shù)實現(xiàn)要素:
提供該發(fā)明內(nèi)容以用簡化的形式介紹以下在具體實施方式中進一步描述的構(gòu)思的選集。該發(fā)明內(nèi)容未旨在于標識要求保護的主題內(nèi)容的關(guān)鍵特征或者實質(zhì)特征,也未旨在于用于限制要求保護的主題內(nèi)容的范圍。
以上描述的系統(tǒng)200良好地適合用于處理圖形數(shù)據(jù)項目,比如圖元,這些圖形數(shù)據(jù)項目在它們被渲染時未生成子圖元。然而,處理許多輸入圖形數(shù)據(jù)項目可能造成生成多個子圖元。術(shù)語“子圖元”這里用于指代通過處理輸入圖形數(shù)據(jù)項目而生成的圖元。因此,子圖元未被存儲在圖形存儲器222中,但是從在圖形存儲器222中存儲的輸入圖形數(shù)據(jù)項目來生成(例如在幾何處理邏輯204中的幾何處理階段期間)。例如如果輸入圖形數(shù)據(jù)項目是描述待鑲嵌的補塊的控制點,則控制點的鑲嵌可能產(chǎn)生許多子圖元(例如兩個、數(shù)十個、數(shù)百個或者數(shù)千個子圖元)。另外,可以對圖形數(shù)據(jù)項目執(zhí)行其它操作,比如幾何陰影化和刪減以生成子圖元。由于系統(tǒng)200使用控制流數(shù)據(jù),該控制流數(shù)據(jù)包括在圖像存儲器222中存儲的輸入圖形數(shù)據(jù)項目的標識符,所以需要在系統(tǒng)200中的幾何處理階段和光柵化階段二者中對于在幾何處理階段中未挑選的輸入圖形數(shù)據(jù)項目執(zhí)行如下處理級,這些處理級被實施以從輸入圖形數(shù)據(jù)項目確定子圖元。因此,相對于用于生成子圖元的處理級重復(fù)一些處理。
根據(jù)這里描述的實施例,提供一種被配置為使用被細分成多個圖塊的渲染空間的圖形處理系統(tǒng),該圖形處理系統(tǒng)包括:
·幾何處理邏輯,包括:
幾何變換和子圖元邏輯,被配置為接收輸入圖形數(shù)據(jù)項目的圖形數(shù)據(jù),并且確定從輸入圖形數(shù)據(jù)項目推導(dǎo)的一個或多個子圖元在渲染空間內(nèi)的變換的位置;以及
圖塊化單元,被配置為對于圖塊中的每個圖塊生成控制流數(shù)據(jù),控制流數(shù)據(jù)包括:(i)將用于渲染圖塊的輸入圖形數(shù)據(jù)項目的標識符,以及(ii)指示子圖元中的哪些子圖元將用于渲染圖塊的子圖元指示;以及
·光柵化邏輯,被配置為針對圖塊中的每個圖塊生成渲染輸出,光柵化邏輯包括:
取回單元,被配置為取回由針對特定圖塊的控制流數(shù)據(jù)中的標識符標識的輸入圖形數(shù)據(jù)項目;
光柵化變換和子圖元推導(dǎo)邏輯,被配置為從取回的輸入圖形數(shù)據(jù)項目推導(dǎo)在渲染空間內(nèi)的變換的子圖元,其中推導(dǎo)的子圖元將用于渲染特定圖塊,以及其中根據(jù)針對特定圖塊的控制流數(shù)據(jù)中的子圖元指示推導(dǎo)子圖元;以及
一個或多個處理單元,用于渲染變換的圖形數(shù)據(jù)項目和/或推導(dǎo)的子圖元,以由此針對特定圖塊生成渲染輸出。
根據(jù)這里描述的更多實施例,提供一種在圖形處理系統(tǒng)中渲染子圖元的方法,其中子圖元經(jīng)由一個或多個處理級的序列從一個或多個輸入圖形數(shù)據(jù)項目可推導(dǎo),以及其中高速緩存被配置用于存儲圖形數(shù)據(jù)項目的分級,所述分級包括輸入圖形數(shù)據(jù)項目中的一個或多個輸入圖形數(shù)據(jù)項目和代表序列的處理級的結(jié)果的一個或多個圖形數(shù)據(jù)項目,該方法包括:
確定子圖元是否被存儲在高速緩存中;
如果確定子圖元被存儲在高速緩存中,則從高速緩存獲取子圖元并且渲染獲取的子圖元;
如果確定子圖元未被存儲在高速緩存中,則確定分級的更高級別的一個或多個圖形數(shù)據(jù)項目是否被存儲在高速緩存中,其中子圖元從分級的更高級別的所述一個或多個圖形數(shù)據(jù)項目可推導(dǎo);以及
如果確定分級的更高級別的所述一個或多個圖形數(shù)據(jù)項目被存儲在高速緩存中:
從高速緩存獲取分級的更高級別的一個或多個圖形數(shù)據(jù)項目;
使用分級的更高級別的獲取的一個或多個圖形數(shù)據(jù)項目來推導(dǎo)子圖元;以及
渲染推導(dǎo)的子圖元。
也可以提供一種計算機可讀代碼,該計算機可讀代碼適于在代碼在計算機上被運行時執(zhí)行這里描述的方法中的任一方法的步驟。也可以提供一種計算機可讀代碼,該計算機可讀代碼定義根據(jù)這里描述的示例中的任一示例的圖形處理系統(tǒng),其中圖形處理系統(tǒng)可制造??梢蕴峁┮环N用于生成根據(jù)這里描述的示例中的任一示例的圖形處理系統(tǒng)的計算機可讀代碼。計算機可讀代碼可以被編碼在計算機可讀存儲介質(zhì)上。
可以在集成電路上的硬件中實現(xiàn)這里描述的圖形處理系統(tǒng)??梢蕴峁┮环N在集成電路制造系統(tǒng)處制造如這里描述的圖形處理系統(tǒng)的方法??梢蕴峁┮环N集成電路定義數(shù)據(jù)集,該集成電路定義數(shù)據(jù)集在集成電路制造系統(tǒng)中被處理時配置該系統(tǒng)以制造如這里描述的圖形處理系統(tǒng)??梢蕴峁┮环N非瞬態(tài)計算機可讀存儲介質(zhì),該非瞬態(tài)計算機可讀存儲介質(zhì)具有存儲于其上的集成電路的計算機可讀描述,該計算機可讀描述在被處理時使布局處理系統(tǒng)生成在集成電路制造系統(tǒng)中使用的電路布局描述以制造如這里描述的圖形處理系統(tǒng)。
可以提供一種集成電路制造系統(tǒng),該集成電路制造系統(tǒng)包括:
非瞬態(tài)計算機可讀存儲介質(zhì),具有存儲于其上的計算機可讀集成電路描述,該計算機可讀集成電路描述描述如這里描述的圖形處理系統(tǒng);
布局處理系統(tǒng),被配置為處理集成電路描述以便生成實現(xiàn)圖形處理系統(tǒng)的集成電路的電路布局描述;以及
集成電路生成系統(tǒng),被配置為根據(jù)電路布局描述制造圖形處理系統(tǒng)。
可以提供一種用于執(zhí)行這里描述的方法中的任一方法的計算機程序代碼??梢蕴峁┮环N非瞬態(tài)計算機可讀存儲介質(zhì),該非瞬態(tài)計算機可讀存儲介質(zhì)具有存儲于其上的計算機可讀指令,這些計算機可讀指令在計算機系統(tǒng)處被執(zhí)行時使計算機系統(tǒng)執(zhí)行這里描述的方法中的任一方法。
可以如本領(lǐng)域技術(shù)人員將清楚的那樣如適當?shù)哪菢咏M合以上特征,并且以上特征可以與這里描述的示例的方面中的任一方面組合。
附圖說明
現(xiàn)在將參照附圖具體描述示例,在附圖中:
圖1示出使用變換的顯示列表的第一現(xiàn)有技術(shù)圖形處理系統(tǒng)的示例;
圖2示出使用未變換的顯示列表的第二現(xiàn)有技術(shù)圖形處理系統(tǒng)的示例;
圖3示出根據(jù)這里描述的實施例的圖形處理系統(tǒng);
圖4是示出在圖形處理系統(tǒng)中生成渲染輸出的方法的流程圖;
圖5示出用于從輸入圖形數(shù)據(jù)項目生成子圖元的處理級序列的示例;
圖6是示出使用分級高速緩存在圖形處理系統(tǒng)中渲染子圖元的方法的流程圖;
圖7是示出高速緩存系統(tǒng)的圖;
圖8示出根據(jù)第一索引映射方案向頂點指派的索引;
圖9示出根據(jù)第二索引映射方案向頂點指派的索引;
圖10示出根據(jù)第三索引映射方案向頂點指派的索引;
圖11示出根據(jù)備選實施例的圖形處理系統(tǒng);
圖12示出根據(jù)更多備選實施例的圖形處理系統(tǒng);
圖13示出其中實施圖形處理系統(tǒng)的計算機系統(tǒng);以及
圖14示出用于生成實現(xiàn)圖形處理系統(tǒng)的集成電路的集成電路制造系統(tǒng)。
附圖圖示各種示例。本領(lǐng)域技術(shù)人員將認識附圖中的所示要素邊界(例如框、多組框或者其它形狀)代表邊界的一個示例??梢栽谝恍┦纠锌梢栽O(shè)計一個要素為多個要素或者可以設(shè)計多個要素為一個要素。共同參考標號在適合時貫穿各圖用于指示相似特征。
具體實施方式
現(xiàn)在將僅通過示例描述實施例。
根據(jù)這里描述的實施例,在使用未變換的顯示列表的圖形處理系統(tǒng)中從輸入圖形數(shù)據(jù)項目生成子圖元時,幾何處理邏輯為圖塊生成控制數(shù)據(jù),該控制數(shù)據(jù)包括指示子圖元中的哪些子圖元將用于渲染圖塊的子圖元指示。光柵化邏輯然后可以根據(jù)針對特定圖塊的控制流數(shù)據(jù)中的子圖元指示推導(dǎo)將用于渲染特定圖塊的子圖元。以該方式,光柵化邏輯可以避免執(zhí)行如下操作(例如陰影器操作、鑲嵌操作或者刪減操作),控制流數(shù)據(jù)指示這些操作沒有造成生成將在特定圖塊內(nèi)渲染的任何子圖元。以該方式,可以基于關(guān)于在幾何處理階段期間確定的子圖元的位置的信息減少在光柵化階段中生成子圖元時涉及到的處理量。例如光柵化邏輯可以避免對如下子圖元執(zhí)行操作(例如陰影器操作、鑲嵌操作或者刪減操作),控制流數(shù)據(jù)指示在特定圖塊內(nèi)的渲染中無需這些子圖元。
根據(jù)其它實施例,分級高速緩存方案可以用于存儲圖形數(shù)據(jù)項目的分級,例如該圖形數(shù)據(jù)項目的分級包括輸入圖形數(shù)據(jù)項目和如下處理級的結(jié)果,這些處理級被實施以從輸入圖形數(shù)據(jù)項目推導(dǎo)子圖元。在光柵化階段中使用分級高速緩存方案。在分級高速緩存方案中的查找以由下至上方式操作,從而如果子圖元被存儲在高速緩存中,則可以從高速緩存獲取它而未執(zhí)行如下處理級中的任何處理級,這些處理級被實施以從輸入圖形數(shù)據(jù)項目生成子圖元。如果子圖元未被存儲在高速緩存中,則做出嘗試以從在分級內(nèi)向上的下一級獲取可以用于推導(dǎo)子圖元的圖形數(shù)據(jù)項目。高速緩存查找沿著分級向上繼續(xù)直至可以推導(dǎo)子圖元或者可以從在高速緩存中存儲的數(shù)據(jù)推導(dǎo)子圖元。如果不能從在高速緩存中存儲的數(shù)據(jù)推導(dǎo)子圖元,則輸入圖形數(shù)據(jù)項目從圖形存儲器被取回和被用于通過實施處理級序列來推導(dǎo)子圖元。在實施處理級時,處理級的結(jié)果(子圖元或者在分級的更高級別的圖形數(shù)據(jù)項目(例如圖元))被存儲在高速緩存中用于后續(xù)使用。在光柵化階段中跨不同圖元和跨不同圖塊使用高速緩存方案。使用高速緩存方案減少執(zhí)行的從存儲器的數(shù)據(jù)取回數(shù)目并且減少在光柵化階段中執(zhí)行的處理級數(shù)目。也就是說,可以跨不同圖元和/或跨不同圖塊共享陰影器輸出和刪減器輸出。訪問高速緩存的由下至上方式減少如下處理級的數(shù)目,這些處理級被執(zhí)行以推導(dǎo)在特定圖塊內(nèi)的子圖元。注意在幾何處理階段中,圖元處理順序經(jīng)過分級由上至下以針對整個渲染空間生成子圖元;而在光柵化階段中,在圖塊中處理數(shù)據(jù)并且圖元處理順序關(guān)于分級由下至上和僅針對在當前正在渲染的特定圖塊中的子圖元。分級高速緩存方案適合于在光柵化階段中處理圖元的方式,而未這樣適合于在幾何處理階段中處理圖元的方式。
圖3示出根據(jù)這里描述的實施例的圖形處理系統(tǒng)300。系統(tǒng)300與圖2中所示系統(tǒng)200相似,但是包括用于推導(dǎo)子圖元的部件。具體而言,系統(tǒng)300包括存儲器302、幾何處理邏輯304和光柵化邏輯306。如在本領(lǐng)域中所知,幾何處理邏輯304和光柵化邏輯306可以被實施在GPU上并且可以共享一些處理資源。幾何處理邏輯304包括幾何數(shù)據(jù)取回單元308、幾何變換和子圖元邏輯310和圖塊化單元314。光柵化邏輯306包括取回單元316、光柵化變換和子圖元推導(dǎo)邏輯330、HSR單元318和紋理化/陰影化單元320。光柵化邏輯306也可以包括高速緩存系統(tǒng)334,該高速緩存系統(tǒng)包括高速緩存336和高速緩存控制器338。在圖3中用虛線示出高速緩存系統(tǒng)334,因為在一些實施例中可以沒有實施高速緩存系統(tǒng)334,但是在其它實施例中實施高速緩存系統(tǒng)334。存儲器302可以被實施為一個或多個物理存儲器塊,并且包括圖形存儲器322、控制流存儲器326和幀緩沖器328。
在一個示例中參照圖4中所示流程圖描述系統(tǒng)300的操作。在該示例中,高速緩存系統(tǒng)334沒有被描述為被實施,但是在一些實施例中,可以與圖4中所示方法一起實施高速緩存系統(tǒng)334。
在步驟S402中,幾何數(shù)據(jù)取回單元308從圖形存儲器322取回幾何數(shù)據(jù)并且向變換和子圖元邏輯310傳遞取回的數(shù)據(jù)。取回的數(shù)據(jù)可以是“位置數(shù)據(jù)”,該位置數(shù)據(jù)可以包括用于在計算圖形數(shù)據(jù)項目的位置時使用的數(shù)據(jù)。例如取回單元308可以僅取回圖形數(shù)據(jù)項目的位置數(shù)據(jù),因為圖形數(shù)據(jù)項目的其它數(shù)據(jù)(例如將向圖形數(shù)據(jù)項目應(yīng)用的顏色數(shù)據(jù)或者紋理數(shù)據(jù)等)不是幾何處理邏輯304需要的。如以上描述的那樣,圖形數(shù)據(jù)項目可以例如是描述待鑲嵌的補塊的圖元或者控制點。
在步驟S404中,變換和子圖元邏輯310將圖形數(shù)據(jù)項目的位置數(shù)據(jù)變換到渲染空間中。另外,在步驟S404中,變換和子圖元邏輯310確定從輸入圖形數(shù)據(jù)項目推導(dǎo)的一個或多個子圖元在渲染空間內(nèi)的變換的位置。步驟S404可以涉及到執(zhí)行多個不同功能,因為可以用多個不同方式從輸入圖形數(shù)據(jù)項目推導(dǎo)子圖元。具體而言,變換和子圖元邏輯310可以包括用于從輸入圖形數(shù)據(jù)項目推導(dǎo)變換的子圖元的一個或多個處理模塊,例如頂點陰影化模塊、幾何陰影化模塊和/或鑲嵌模塊。變換和子圖元邏輯310也包括與以上關(guān)于圖1和2描述的刪減/挑選單元相似的刪減/挑選單元。向挑選/刪減單元提供由變換和子圖元邏輯310推導(dǎo)的子圖元的位置和沒有從其推導(dǎo)子圖元的圖形數(shù)據(jù)項目的變換的位置數(shù)據(jù),該挑選/刪減單元用于刪減和/或挑選沒有完全地落在渲染空間內(nèi)的圖形數(shù)據(jù)項目。
圖5示出用于從輸入圖形數(shù)據(jù)項目推導(dǎo)子圖元的處理級序列的示例。矩形代表操作而平行四邊形代表它們的輸入和輸出。操作的輸出可以由在分級的更低級別中的多個操作讀取作為輸入。這里描述的示例涉及對圖形數(shù)據(jù)項目作用的變換和子圖元邏輯310,雖然將理解為該情況,但是無需贅言變換和子圖元邏輯310正是作用于那些圖形數(shù)據(jù)項目的位置數(shù)據(jù)。圖5示出均包括四個輸入控制點的兩個補塊(504A和504B)??刂泣c中的兩個控制點由這兩個補塊504共享,從而在圖5中所示示例中有六個不同控制點。相應(yīng)頂點陰影器實例(5020至5025)由變換和子圖元邏輯310用于將六個控制點變換到渲染空間中。來自頂點陰影器5020至5023的輸出描述第一補塊504A,而來自頂點陰影器5022至5025的輸出描述第二補塊504B。變換和子圖元邏輯310實施殼陰影器的兩個實例506A和506B(一個實例用于補塊504A和504B中的每個相應(yīng)補塊)以及固定功能的鑲嵌器的兩個實例508A和508B。每個殼陰影器實例(506A和506B)生成鑲嵌因子(507A和507B),這些鑲嵌因子定義鑲嵌的圖元,這些圖元代表相應(yīng)補塊504A和504B。殼陰影器實例(506A和506B)也生成其它補塊輸出數(shù)據(jù)(505A和505B),該其它補塊輸出數(shù)據(jù)包括輸出控制點和將在域陰影器中使用的補塊恒定數(shù)據(jù)。殼陰影器實例506預(yù)備鑲嵌因子507A和507B,并且鑲嵌器508執(zhí)行鑲嵌以生成定義鑲嵌的圖元的頂點UV坐標509A和509B。在圖5中所示簡單示例中,補塊A 504A產(chǎn)生兩個鑲嵌的圖元,而補塊B 504B產(chǎn)生一個鑲嵌的圖元(由于不同鑲嵌因子)。應(yīng)當清楚在其它示例中可以通過鑲嵌來產(chǎn)生不同數(shù)目的圖元,并且具體而言可以產(chǎn)生比兩個多得多的圖元,例如可以通過鑲嵌補塊來產(chǎn)生數(shù)十個、數(shù)百個或者甚至數(shù)千個圖元。向用于操控鑲嵌的頂點的域陰影器實例510輸入針對鑲嵌的圖元的頂點的頂點數(shù)據(jù),例如向頂點應(yīng)用高度映射等的域陰影器實例510中輸入針對鑲嵌的圖元的頂點的頂點數(shù)據(jù)(由來自鑲嵌器508的頂點UV坐標509以及來自殼陰影器506的輸出控制點和其它圖形補塊數(shù)據(jù)項目505定義)。變換和子圖元邏輯310實施域陰影器的七個實例(510A0至510A3和510B0至510B2),這些實例向代表補塊504A和504B的鑲嵌的圖元的頂點應(yīng)用相應(yīng)變換。由域陰影器510A0、510A1和510A2提供的變換的頂點代表鑲嵌的圖元512A0。由域陰影器510A1、510A2和510A3提供的變換的頂點代表鑲嵌的圖元512A1。由域陰影器510B0、510B1和510B2提供的變換的頂點代表鑲嵌的圖元512B0。注意可以共享針對從相同補塊產(chǎn)生的鑲嵌的圖元的頂點(例如圖元512A0和512A1共享兩個頂點)。由鑲嵌級生成的鑲嵌的圖元(512A0、512A1和512B0)被饋送到變換和子圖元邏輯310的幾何陰影器(GS)級,該GS級被配置為每圖元運行幾何陰影器的兩個實例。由每個GS實例生成的圖元數(shù)目根據(jù)GS實例被布置為執(zhí)行的操作而從0變化到由應(yīng)用指定的上界(例如上至256)。在圖5中所示簡單示例中,從0至2個圖元由GS實例中的每個實例產(chǎn)生。具體而言,GS實例514A00被應(yīng)用于圖元512A0并且產(chǎn)生兩個圖元516A00和516A01;GS實例514A01被應(yīng)用于圖元512A0并且產(chǎn)生一個圖元516A02;GS實例514A10被應(yīng)用于圖元512A1并且產(chǎn)生零個圖元;GS實例514A11被應(yīng)用于圖元512A1并且產(chǎn)生一個圖元516A10;GS實例514B00被應(yīng)用于圖元512B0并且產(chǎn)生一個圖元516B00;并且GS實例514B01被應(yīng)用于圖元512B0并且產(chǎn)生一個圖元516B01。
如以上描述的那樣,變換和子圖元邏輯310在圖元中的一些圖元延伸至查看平截頭體以外的情況下可以刪減它們,但是在圖5中所示示例中未刪減GS生成的圖元中的一些圖元。例如在刪減圖元時,可以在使用六個標準刪減平面和八個定制刪減平面時產(chǎn)生上至十五個子圖元(十七個頂點)。然而,在圖5中所示簡單示例中,刪減圖元516A01以產(chǎn)生一個圖元520A010,并且刪減圖元516B00以產(chǎn)生兩個圖元520B000和520B001。未刪減圖元516A00、516A02、516A10和516B01。分級的葉節(jié)點(即在圖5中所示示例中的圖元516A00、520A010、516A02、516A10、520B000、520B001和516B01)是待渲染的子圖元。在一些示例中,輸入圖元可以穿過變換和子圖元邏輯310而不生成任何子圖元,從而可以在一些示例中向輸入圖元應(yīng)用刪減。因此,一般而言,變換和子圖元邏輯310挑選和/或刪減處于查看平截頭體以外的圖形數(shù)據(jù)項目(包括推導(dǎo)的子圖元)。向圖塊化單元314傳遞其余圖元和子圖元。
在步驟S408中,圖塊化單元314針對渲染空間的圖塊中的每個圖塊生成控制流數(shù)據(jù)。針對圖塊的控制流數(shù)據(jù)包括將用于渲染圖塊的輸入圖形數(shù)據(jù)項目的標識符,該輸入圖形數(shù)據(jù)項目是例如來自圖形存儲器322的圖元,這些圖元在被變換時至少部分地位于圖塊內(nèi),或者來自圖形存儲器322的圖元,至少部分地位于圖塊內(nèi)的子圖元是從這些圖元推導(dǎo)的??刂屏鲾?shù)據(jù)中的標識符標識輸入圖形數(shù)據(jù)項目,即在圖形存儲器222中存儲的圖形數(shù)據(jù)項目。針對圖塊的控制流數(shù)據(jù)也包括指示子圖元中的哪些子圖元將用于渲染圖塊的子圖元指示。如果子圖元至少部分地在圖塊中,則可以確定子圖元用于在渲染圖塊時使用。如以下將更具體說明的那樣,可以在光柵化階段期間使用子圖元指示以減少執(zhí)行的用于推導(dǎo)針對圖塊的子圖元的處理量。子圖元指示可以例如指示如何從變換的輸入圖形數(shù)據(jù)項目推導(dǎo)將用于渲染圖塊的子圖元。例如子圖元指示可以指示如下處理操作序列,對輸入圖形數(shù)據(jù)項目執(zhí)行這些處理操作以便生成待渲染的子圖元。因此,光柵化階段可以執(zhí)行指示的操作(但是無需執(zhí)行未指示的操作)以便推導(dǎo)針對圖塊的待渲染的必需子圖元。例如涉及圖5中所示示例的控制流中的子圖元指示可以指示GS實例514A10未產(chǎn)生任何圖元,在該情況下,可以在光柵化階段中不執(zhí)行該GS實例。
另外,可以是如下情況,作為圖5中所示葉節(jié)點的子圖元中的一些子圖元可能未至少部分地位于特定圖塊內(nèi)。例如圖元516A02可能完全地落在特定圖塊以外,在該情況下,子圖元516A02的指示將不被包括在針對特定圖塊的控制流數(shù)據(jù)中。因此,在光柵化階段中,光柵化邏輯將無需實施幾何陰影器514A01。
可以將子圖元指示表示為一個或多個掩碼。例如針對子圖元的掩碼可以指示將執(zhí)行可能操作集合的哪些操作以推導(dǎo)子圖元。掩碼也可以指示挑選或者刪減可能子圖元集合的哪些子圖元。掩碼也可以指示從原始圖元推導(dǎo)的哪些子圖元存在于圖塊中而哪些未存在于圖塊中。另外,可以將控制流數(shù)據(jù)中的輸入圖形數(shù)據(jù)項目的標識符實施為一個或多個掩碼,該一個或多個掩碼指示來自圖形數(shù)據(jù)項目塊的哪些圖形數(shù)據(jù)項目將用于渲染特定圖塊。假如有可能重構(gòu)針對特定圖塊中的每個圖塊的控制流數(shù)據(jù),則可以在控制流數(shù)據(jù)的引用不同圖塊的部分之中共享或者可以不共享控制流數(shù)據(jù)中的輸入圖形數(shù)據(jù)項目的標識符。
可以根據(jù)任何適當壓縮技術(shù)壓縮控制流數(shù)據(jù)中的標識符和子圖元指示。向存儲器302提供針對圖塊的控制流數(shù)據(jù)用于在控制流存儲器326中存儲。幾何處理階段對于當前渲染是完成的,而在后續(xù)時間執(zhí)行光柵化階段以使用在圖形存儲器322中存儲的輸入圖形數(shù)據(jù)和在控制流存儲器326中存儲的控制流數(shù)據(jù)來渲染該渲染空間的圖塊。
首先描述不包括高速緩存系統(tǒng)334的示例。然后繼續(xù)以下描述包括高速緩存系統(tǒng)334的示例?,F(xiàn)在描述在光柵化階段中渲染特定圖塊。在步驟S410中,光柵化邏輯306的取回單元316從控制流存儲器326接收針對圖塊的控制流數(shù)據(jù)。在步驟S412中,取回單元316如由針對圖塊的控制流數(shù)據(jù)中的標識符指示的那樣從圖形存儲器322取回指示的輸入圖形數(shù)據(jù)項目。輸入圖形數(shù)據(jù)項目未被變換。
在一些示例中,幾何處理邏輯304(例如變換和子圖元邏輯310)可以確定如下信息,該信息描述如何將輸入圖形數(shù)據(jù)項目分組成圖元塊。該信息可以作為附帶信息與控制流一起傳遞。因此,取回單元316可以與針對圖塊的控制流數(shù)據(jù)一起接收該附帶信息,并且可以根據(jù)附帶信息生成包括取回的輸入圖形數(shù)據(jù)項目的圖元塊。與控制流數(shù)據(jù)中的子圖元指示組合的圖元塊允許在光柵化階段中重新生成子圖元。在一些其它示例中,指示輸入圖形數(shù)據(jù)項目將如何被分組成圖元塊的附帶信息無需從幾何處理邏輯305傳遞到光柵化邏輯306,并且取而代之,取回單元316可以確定如何將輸入圖形數(shù)據(jù)項目分組成圖元塊。
在步驟S414中,變換和子圖元推導(dǎo)邏輯330將取回的圖形數(shù)據(jù)項目變換到渲染空間中。也向變換和子圖元推導(dǎo)邏輯330提供針對當前渲染的特定圖塊的控制流數(shù)據(jù)中的子圖元指示(這可以直接地來自控制流存儲器326或者來自取回單元316)。另外,在步驟S414中,變換和子圖元推導(dǎo)邏輯330根據(jù)針對特定圖塊的控制流數(shù)據(jù)中的子圖元指示推導(dǎo)將用于渲染特定圖塊的子圖元。
如以上描述的那樣,控制流數(shù)據(jù)中的子圖元指示可以由變換和子圖元推導(dǎo)邏輯330用于有選擇地僅執(zhí)行為了推導(dǎo)在特定圖塊內(nèi)存在的子圖元而需要的那些過程。也就是說,變換和子圖元推導(dǎo)邏輯330可以使用子圖元指示以標識哪些過程不是推導(dǎo)圖塊中的子圖元所必需的,從而那些非必需過程在光柵化階段中未被變換和子圖元推導(dǎo)邏輯330執(zhí)行。注意那些過程將已經(jīng)在幾何處理階段中由變換和子圖元邏輯310執(zhí)行以便確定它們未產(chǎn)生在特定圖塊中存在的子圖元,但是這些過程無需在光柵化階段中被重復(fù)。控制流數(shù)據(jù)中的子圖元指示可以是分級索引,其中針對特定子圖元的子圖元指示在分級的不同級別處(例如如圖5中所示)的一個或多個圖形數(shù)據(jù)項目用于在推導(dǎo)特定子圖元時使用。變換和子圖元推導(dǎo)邏輯330可以使用針對特定子圖元的分級索引以標識分級的一個或多個圖形數(shù)據(jù)項目用于在推導(dǎo)特定子圖元時使用。例如如圖5中所示針對圖元520A010的子圖元指示可以是分級索引,該分級索引標識圖元520A010是從包括補塊輸入控制點504A、與頂點UV坐標509A結(jié)合的補塊輸出數(shù)據(jù)505A、鑲嵌生成的圖元512A0和幾何陰影器生成的圖元516A01的圖形數(shù)據(jù)項目序列推導(dǎo)的。這允許變換和子圖元推導(dǎo)邏輯330容易地標識為了推導(dǎo)子圖元而需要的處理步驟。
例如參照圖5,僅在幾何處理階段中部分地刪減的圖元(即在圖5中所示示例中的圖元516A01和516B00)需要在光柵化階段中再次被刪減,并且變換和子圖元推導(dǎo)邏輯330可以使用控制流數(shù)據(jù)中的子圖元指示以確定刪減無需應(yīng)用于其它圖元而無進一步確定步驟和未嘗試向其它圖元應(yīng)用刪減。作為另一示例,光柵化邏輯306中的變換和子圖元推導(dǎo)邏輯330可以從控制流數(shù)據(jù)中的子圖元指示確定針對鑲嵌的圖元A1的第一GS實例514A10未生成任何子圖元,因此可以在光柵化階段中避免執(zhí)行GS實例514A10。
變換和子圖元推導(dǎo)邏輯330輸出推導(dǎo)的子圖元和對于其未推導(dǎo)子圖元的任何輸入圖元用于在步驟S418中由一個或多個處理單元渲染,以由此針對特定圖塊生成渲染輸出。在圖3中所示示例中,處理單元是去除隱藏的圖元片段的HSR單元318,以及向圖元片段應(yīng)用紋理化和陰影化之一或者二者的紋理化/陰影化單元320。然而,在其它示例中,可以執(zhí)行不同處理以渲染從變換和子圖元推導(dǎo)邏輯330輸出的圖元和子圖元。另外,圖3中所示示例系統(tǒng)300在紋理化和/或陰影化圖元片段之前對圖元片段執(zhí)行隱藏表面去除的意義上是推遲式渲染系統(tǒng)。在其它示例中,系統(tǒng)可以不是推遲式渲染系統(tǒng),從而在紋理化和/或陰影化圖元片段之后對圖元片段執(zhí)行隱藏表面去除。這里描述的原理可以適用于非推遲式渲染系統(tǒng)以及推遲式渲染系統(tǒng),該原理是使用針對圖塊的控制流數(shù)據(jù)中的子圖元指示,從而無需在光柵化階段中重復(fù)在從輸入圖形數(shù)據(jù)項目推導(dǎo)子圖元時涉及到的所有處理級。
在步驟S420中,所得渲染的像素值被提供到存儲器302用于在幀緩沖器328中存儲并且可以后續(xù)地被使用,例如被顯示在顯示器上或者被存儲在存儲器中或者被傳輸?shù)搅硪辉O(shè)備等。
以上參照圖4中所示未實施高速緩存系統(tǒng)334的流程圖描述方法。在其它示例中,實施高速緩存系統(tǒng)334。以下參照圖6和7描述使用高速緩存系統(tǒng)334。高速緩存系統(tǒng)334包括高速緩存336和高速緩存控制器338??梢栽谟布?、軟件或者其組合中實施高速緩存控制器338。高速緩存336被配置為存儲從變換和子圖元推導(dǎo)邏輯330輸出的圖形數(shù)據(jù)項目(即變換的輸入圖形數(shù)據(jù)項目和/或推導(dǎo)的子圖元)。高速緩存將圖形數(shù)據(jù)項目存儲為圖形數(shù)據(jù)項目的分級,而分級的不同級別代表用于從輸入圖形數(shù)據(jù)項目推導(dǎo)子圖元的處理級序列的不同處理級。例如如以上描述的那樣,圖5示出可以被執(zhí)行以推導(dǎo)子圖元的處理級序列。取回的輸入圖形數(shù)據(jù)項目和包括最終推導(dǎo)的子圖元的不同處理級的結(jié)果在分級高速緩存結(jié)構(gòu)內(nèi)的適當級別處被存儲在高速緩存中。例如刪減器生成的圖元520(可以是以三角扇的形式)可以視為在分級的級別0;GS生成的圖元516可以視為在分級的級別1;鑲嵌生成的圖元512可以視為在分級的級別2;與頂點UV坐標509結(jié)合的補塊輸出數(shù)據(jù)505可以視為在分級的級別3;補塊輸入控制點504可以視為在分級的級別4;并且輸入圖形數(shù)據(jù)項目可以視為在分級的級別5。在一些其它示例中,為了節(jié)省高速緩存336中的空間,由于刪減是相對低廉的計算,所以刪減器輸出可以不被存儲在高速緩存336中,并且可以在需要刪減器時重新執(zhí)行它。在這里描述的示例中,參照在高速緩存336中存儲“圖元”或者存儲“子圖元”。在一些示例中,可以在高速緩存336中將圖元(包括“子圖元”)存儲為離散項目。然而,本領(lǐng)域技術(shù)人員將清楚圖元(包括“子圖元”)可以由多個圖形數(shù)據(jù)項目描述,例如由多個頂點描述,從而為了存儲圖元,在一些示例中,多個圖形數(shù)據(jù)項目(例如頂點)可以被存儲在高速緩存336中,從而“在高速緩存中存儲圖元(或者子圖元)”可以實際上涉及到在高速緩存336中存儲多個圖形數(shù)據(jù)項目。另外,不同圖元可以共享一個或多個頂點,從而高速緩存336可以存儲圖元的頂點中的一些頂點,但是并非所有頂點。
圖6中所示流程圖圖示在光柵化階段中使用高速緩存336的方法。在步驟S602中,在取回單元316處接收針對圖塊的控制流數(shù)據(jù)。如以上描述的那樣,針對圖塊的控制流數(shù)據(jù)包括圖形數(shù)據(jù)項目的標識符和指示將用于渲染圖塊的子圖元的子圖元指示。對于在針對圖塊的控制流數(shù)據(jù)中指示的子圖元,取回單元316可以輪詢高速緩存系統(tǒng)334以確定子圖元是否被存儲在高速緩存336中或者是否將需要推導(dǎo)子圖元。例如正在被請求的子圖元可以如圖5中所示是圖元516A00。
響應(yīng)于來自取回單元316的針對子圖元的請求,高速緩存控制器338在步驟S604中確定子圖元是否被存儲在高速緩存336中。子圖元由可以通過不同操作而生成的一個或多個圖形數(shù)據(jù)項目組成。例如鑲嵌生成的三角形由作為三個域陰影器調(diào)用的輸出的三個圖形數(shù)據(jù)項目(例如在該情況下的頂點)組成。通過在高速緩存336中存儲針對該子圖元的所有圖形數(shù)據(jù)項目(例如所有頂點)來在高速緩存336中存儲該子圖元。如果子圖元被存儲在高速緩存336中,則在步驟S606中從高速緩存336獲取子圖元。獲取的子圖元可以繞過變換和子圖元推導(dǎo)邏輯330,并且被提供到處理單元(即在圖3中所示示例中的HSR單元318和紋理化/陰影化單元320)用于在步驟S608中渲染。如以下更具體描述的那樣,可以是如下情況,在高速緩存336中存儲針對子圖元的一些圖形數(shù)據(jù)項目(例如頂點),但是并非所有圖形數(shù)據(jù)項目;并且如果是這種情況,則可以從高速緩存336中獲取在高速緩存中存儲的針對子圖元的圖形數(shù)據(jù)項目,并且可以推導(dǎo)未在高速緩存中存儲的針對子圖元的圖形數(shù)據(jù)項目。以該方式,可以向處理單元(即在圖3中所示示例中的HSR單元318和紋理化/陰影化單元320)提供針對子圖元的所有圖形數(shù)據(jù)項目用于在步驟S608、S618或者S628中渲染。可以在高速緩存336中存儲針對子圖元的推導(dǎo)的圖形數(shù)據(jù)項目用于以后使用。
然而,如果在步驟S604中,高速緩存控制器338確定子圖元未被存儲在高速緩存336中(即針對子圖元的圖形數(shù)據(jù)項目中的一個或多個圖形數(shù)據(jù)項目被存儲在高速緩存336中),則該方法從步驟S604傳遞到步驟S610。在步驟S610中,高速緩存控制器338將變量n設(shè)置成指示在分級中的緊接在子圖元以上的級別的值。例如如以上描述的那樣,圖5中所示圖元516可以代表分級的級別1,因此緊接在該級別以上的級別是級別2。因此,在步驟S610中,n在該示例中被設(shè)置成值2。
在步驟S612中,高速緩存控制器338確定分級的更高級別(即級別2)的一個或多個圖形數(shù)據(jù)項目是否被存儲在高速緩存336中,其中子圖元將從更高級別的所述一個或多個圖形數(shù)據(jù)項目可推導(dǎo)。也就是說,高速緩存控制器338確定是否存在在高速緩存336中存儲的級別n的充分圖形數(shù)據(jù)項目以便推導(dǎo)子圖元。在待推導(dǎo)的子圖元如圖5中所示是圖元516A00的示例中,步驟S612涉及到確定圖元512A0是否被存儲在高速緩存336中,因為可以通過執(zhí)行GS實例514A00來從圖元512A0推導(dǎo)圖元516A00。
如果在步驟S612中確定存在在高速緩存336中存儲的級別n的充分圖形數(shù)據(jù)項目,則該方法傳遞到步驟S614,在該步驟中,高速緩存控制器338從高速緩存336獲取分級的級別n的將用于推導(dǎo)子圖元的一個或多個圖形數(shù)據(jù)項目。例如高速緩存控制器338可以從高速緩存336獲取圖元512A0。獲取的圖形數(shù)據(jù)項目被提供到變換邏輯330和/或變換和子圖元推導(dǎo)邏輯330用于在推導(dǎo)待渲染的子圖元時使用。
在步驟S616中,變換和子圖元推導(dǎo)邏輯330使用獲取的圖形數(shù)據(jù)項目來推導(dǎo)子圖元。例如變換和子圖元推導(dǎo)邏輯330可以通過執(zhí)行GS實例514A00來使用獲取的圖元512A0推導(dǎo)子圖元516A00。在分級中的任何分級處,僅執(zhí)行為了推導(dǎo)子圖元而需要的計算。例如三個域陰影器(DS)實例(510A0、510A1和510A2)提供幾何陰影器(GS)實例514A00的輸入。因此,如果想要執(zhí)行GS實例514A00并且如果DS實例510A0的輸出未被存儲在高速緩存中,但是可以從高速緩存讀取DS實例510A1和510A2的輸出,則執(zhí)行DS實例510A0,但是不執(zhí)行DS實例510A1和510A2。推導(dǎo)的子圖元(例如516A00)然后如以上描述的在步驟S618中由HSR單元318和紋理化/陰影化單元320渲染。
如果在步驟S612中確定在高速緩存336中不存在在分級的級別n的充分圖形數(shù)據(jù)項目(即如果確定分級的更高級別的用于推導(dǎo)子圖元的一個或多個圖形數(shù)據(jù)項目中的任何圖形數(shù)據(jù)項目未被存儲在高速緩存中),則該方法傳遞到步驟S620,在該步驟中,高速緩存控制器338確定是否存在在分級中的在級別n以上的另一級別。在圖5中所示示例中,存在分級的六個級別(級別0至5),因此存在在級別2以上的級別。因此,該方法從步驟S620傳遞到步驟S622,在該步驟中遞增n的值,然后該方法傳遞回到步驟S612。
在該迭代中,在步驟S612中,高速緩存控制器338確定級別3的一個或多個更多圖形數(shù)據(jù)項目是否被存儲在可以用于推導(dǎo)子圖元的高速緩存中。如果它們是,則執(zhí)行步驟S614至S618以從高速緩存336獲取那些更多圖形數(shù)據(jù)項目,對獲取的圖形數(shù)據(jù)項目執(zhí)行必需處理級以推導(dǎo)子圖元,并且渲染推導(dǎo)的子圖元。在圖5中所示示例中,關(guān)于該迭代的步驟S612至S618可以包括確定與頂點UV坐標509A結(jié)合的補塊輸出數(shù)據(jù)505A是否被存儲在高速緩存336中。如果它們是,則從高速緩存獲取與頂點UV坐標509A結(jié)合的補塊輸出數(shù)據(jù)505A,并且域陰影器實例510A0、510A1和510A2由變換和子圖元推導(dǎo)邏輯330執(zhí)行以產(chǎn)生鑲嵌的圖元512A0,然后幾何陰影器實例514A00由變換和子圖元推導(dǎo)邏輯330執(zhí)行以推導(dǎo)子圖元516A00。注意控制流中的子圖元指示指示需要哪些過程以從與頂點UV坐標509A結(jié)合的補塊輸出數(shù)據(jù)505A推導(dǎo)子圖元516A00,從而變換和子圖元推導(dǎo)邏輯330可以確定它無需執(zhí)行其它非必需處理步驟,比如執(zhí)行域陰影器實例510A3或者幾何陰影器實例514A01。推導(dǎo)的子圖元(例如516A00)然后在步驟S618中照常由HSR單元318和紋理化/陰影化單元320渲染。
步驟S612至S622的迭代繼續(xù)直至n被設(shè)置成這樣的值,從而在步驟S620中確定沒有在分級中的在級別n以上的級別。在參照圖5描述的示例中,分級的最高級別是輸入圖形數(shù)據(jù)項目,而對于該級別,n=5。因此在該點處(例如在圖5中所示示例中n=5),高速緩存控制器338在步驟S620中確定不能從在高速緩存中存儲的圖形數(shù)據(jù)項目推導(dǎo)子圖元。該方法然后從步驟S620傳遞到步驟S624。
在步驟S624中,取回單元316從圖形存儲器322取回輸入圖形數(shù)據(jù)項目中的一個或多個輸入圖形數(shù)據(jù)項目用于推導(dǎo)子圖元。該方法如以上描述的那樣繼續(xù),從而在步驟S626中,變換和子圖元推導(dǎo)邏輯330對取回的輸入圖形數(shù)據(jù)項目執(zhí)行處理以推導(dǎo)子圖元,并且在步驟S628中,子圖元如以上描述的那樣由HSR單元318和紋理化/陰影化單元320渲染。在步驟S626中,如在步驟S616中那樣,在分級的任何級處僅執(zhí)行需要的操作。
作為示例,參照圖5,頂點陰影器5022和5023的輸出可以已經(jīng)在高速緩存336中,即使補塊A 504A在光柵化階段期間從未被處理,因為它們也屬于補塊B 504B。相同原理適用于510A1和510A2的域陰影器輸出,因為它們屬于圖元512A0和512A1二者。高速緩存命中在圖元或者補塊覆蓋許多相鄰圖塊時更有可能。
圖6中所示方法允許以高效方式從高速緩存336中存儲的信息推導(dǎo)子圖元。具體而言,來自高速緩存的可以用于推導(dǎo)子圖元的最低級別數(shù)據(jù)從高速緩存獲取和用于推導(dǎo)子圖元。為了填充高速緩存336,圖形數(shù)據(jù)項目可以在它們在光柵化邏輯306被取回或者推導(dǎo)時被存儲在高速緩存中。例如由取回單元316從圖形存儲器322取回的輸入圖形數(shù)據(jù)項目被存儲在高速緩存336中。另外,代表執(zhí)行用于推導(dǎo)子圖元(包括最終子圖元本身)的一個或多個處理級的結(jié)果的圖形數(shù)據(jù)項目(例如圖5中所示控制點504和頂點UV坐標509或者圖5中所示圖元、比如512、516和520)可以在它們已經(jīng)在光柵化邏輯306中被推導(dǎo)時被存儲在高速緩存336中。相同圖形數(shù)據(jù)項目可以用于推導(dǎo)不同子圖元。例如圖5中所示圖元512A0可以用于推導(dǎo)四個圖元516A0、516A01、516A02和520A010。因此,一旦已經(jīng)推導(dǎo)圖元512A0用于確定那些四個圖元之一,可以從高速緩存336獲取它用于推導(dǎo)那些四個圖元中的其它三個圖元。另外,一些圖元可以至少部分地在多于一個圖塊內(nèi),因此如果已經(jīng)推導(dǎo)它們用于渲染一個圖塊,則它們可以在另一圖塊被渲染時仍然可以被存儲在高速緩存中,并且這樣可以從高速緩存被獲取而不是從輸入圖形數(shù)據(jù)項目再次推導(dǎo)它們。
圖7示出包括高速緩存336和高速緩存控制器338的高速緩存系統(tǒng)334。高速緩存控制器338包括被維護以指示高速緩存336的當前內(nèi)容的一個或多個查找表。查找表包含關(guān)于圖形流水線的不同級的信息并且可以或者可以不被實施在彼此相同的硬件結(jié)構(gòu)中。如果共享硬件結(jié)構(gòu),則它在開始每遍渲染時由圖形系統(tǒng)分割以包含關(guān)于在使用中的圖形流水線級的信息。例如如果未使用鑲嵌,則可以保留更多查找表條目用于頂點陰影器級。高速緩存控制器338可以通過查詢(多個)查找表來確定圖形數(shù)據(jù)項目(例如圖元或者控制點)是否被存儲在高速緩存336中。例如高速緩存控制器338可以存儲用于處理序列的每級的查找表。在圖7中所示示例中,高速緩存控制器338包括四個查找表:頂點陰影器查找表702,該查找表指示相應(yīng)頂點陰影器調(diào)用的結(jié)果是否被存儲在高速緩存336中(而如果是則存儲于何處);殼陰影器查找表704,該查找表指示相應(yīng)殼陰影器調(diào)用的結(jié)果是否被存儲在高速緩存336中(而如果是則存儲于何處);域陰影器查找表706,該查找表指示相應(yīng)域陰影器調(diào)用的結(jié)果是否被存儲在高速緩存336中(而如果是則存儲于何處);以及幾何陰影器查找表708,該查找表指示相應(yīng)幾何陰影器調(diào)用的結(jié)果是否被存儲在高速緩存336中(而如果是則存儲于何處)。查找表允許搜尋單義地標識的執(zhí)行的結(jié)果。例如在繪制調(diào)用編號、實例標識符和頂點的索引給定時,單義地標識頂點陰影器調(diào)用。相似概念適用于其它陰影器級,而來自不同陰影器的在高速緩存336中的條目由可以一般地稱為“標簽”的不同值集合標識。由每個陰影器級產(chǎn)生的輸出量可以變化,并且高速緩存336可以向來自不同級的輸出分配不同最大大小。查找表可以被實施為全關(guān)聯(lián)或者集合關(guān)聯(lián)。
高速緩存336可以稱為緩沖器。高速緩存336可以包括用于存儲來自分級的所有級別的數(shù)據(jù)的單個存儲器池,例如圖5中所示不同類型的圖形數(shù)據(jù)項目(504、509、512、516和520)可以都被存儲在高速緩存336中的相同存儲器池中。這可以允許什么數(shù)據(jù)可以被存儲在高速緩存336中的靈活性。在其它示例中,高速緩存336可以包括多個存儲器池,其中存儲器池中的不同存儲器池被配置為存儲來自分級的不同級別的數(shù)據(jù)。例如高速緩存336的第一存儲器池可以被配置為存儲從圖形存儲器322取回的輸入圖形數(shù)據(jù)項目,高速緩存336的第二存儲器池可以被配置為存儲補塊輸入控制點(例如504),高速緩存336的第三存儲器池可以被配置為存儲與頂點UV坐標(例如509)結(jié)合的補塊輸出數(shù)據(jù)(例如505),高速緩存336的第四存儲器池可以被配置為存儲域陰影器的輸出(例如512),高速緩沖336的第五存儲器池可以被配置為存儲幾何陰影器的輸出(例如516),而高速緩存336的第六存儲器池可以被配置為存儲刪減器的輸出(例如520)。使用不同存儲器池用于不同類型的數(shù)據(jù)允許根據(jù)數(shù)據(jù)的類型獨立地從高速緩存336刷新或者逐出數(shù)據(jù),并且它也阻止高速緩存336變成以一個類型的數(shù)據(jù)為主導(dǎo),例如它阻止頻繁地執(zhí)行的陰影器級(比如域陰影器)從高速緩存336逐出更少頻繁地執(zhí)行但是潛在地計算成本高的級(比如殼陰影器)的數(shù)據(jù)。
高速緩存336具有通常地未大到足以同時存儲在渲染圖像期間使用的所有圖形數(shù)據(jù)項目的有限大小。因此,在某點可能需要從高速緩存逐出數(shù)據(jù)項目以允許其它數(shù)據(jù)項目被存儲在高速緩存中。高速緩存控制器338使用替換策略以確定將逐出哪些數(shù)據(jù)項目。在一些示例中,替換策略使得更可能再次使用的數(shù)據(jù)項目更少可能從高速緩存336被逐出。
幾何處理邏輯304的圖塊化單元314可以確定每個圖形數(shù)據(jù)項目覆蓋的圖塊數(shù)目,并且可以基于每個圖形數(shù)據(jù)項目覆蓋的圖塊數(shù)目為該圖形數(shù)據(jù)項目設(shè)置相應(yīng)優(yōu)先級。可以在控制流數(shù)據(jù)中包括(或者作為其它附帶信息向光柵化邏輯306傳遞)優(yōu)先級,從而光柵化邏輯306可以獲取優(yōu)先級。高速緩存控制器338然后基于圖形數(shù)據(jù)項目的優(yōu)先級,例如通過選擇逐出有低優(yōu)先級的一個或多個數(shù)據(jù)項目來從高速緩存336逐出圖形數(shù)據(jù)項目。在已經(jīng)渲染圖塊時,可以遞減高速緩存336中的在渲染圖塊期間使用的圖形數(shù)據(jù)項目的優(yōu)先級,從而優(yōu)先級反映相應(yīng)圖形數(shù)據(jù)項目將被使用的、仍然有待渲染的圖塊數(shù)目。
優(yōu)選地按分級確定優(yōu)先級,從而來自分級的更高級別數(shù)據(jù)項目往往具有更高優(yōu)先級,因為它們往往覆蓋比更低級別數(shù)據(jù)項目更大數(shù)目的圖塊。例如鑲嵌的圖元可能進覆蓋一個圖塊,但是鑲嵌的圖塊是其部分的補塊可能覆蓋若干圖塊。作為另一示例,與幾何陰影器輸出(例如圖5中所示圖元516)關(guān)聯(lián)的優(yōu)先級往往低于與域陰影器輸出(例如圖5中所示圖元512)關(guān)聯(lián)的優(yōu)先級,后者又往往低于與殼陰影器輸出(例如圖5中所示補塊輸出數(shù)據(jù)505和頂點UV坐標509)關(guān)聯(lián)的優(yōu)先級,并且沿著分級向上以此類推。
在一些示例中,保持由流水線的最后級產(chǎn)生的包含頂點的圖形數(shù)據(jù)項目駐留在高速緩存336中直至HSR和陰影化單元(318和320)已經(jīng)處理依賴于它的所有圖元。例如GS輸出可以包含若干圖元而DS輸出可以由覆蓋一個或多個圖塊的若干鑲嵌生成的圖元共享。圖元可以覆蓋一個或多個圖塊。一旦高速緩存336中的命中對于圖形數(shù)據(jù)項目而出現(xiàn),則在高速緩存336中保持圖形數(shù)據(jù)項目直至對涉及圖形數(shù)據(jù)項目的圖元的處理由HSR和陰影化單元318和320完成。因此,策略用于防止查找表和高速緩存的替換策略逐出將由HSR和陰影化所使用的圖形數(shù)據(jù)項目。這里描述不同策略的兩個示例:鎖定和參考計數(shù)。
在鎖定方案中,對于一個或多個圖形數(shù)據(jù)項目的每個集合,為由圖形系統(tǒng)同時處理的每個圖塊存儲一個鎖位置。這些鎖位置可以被分組以形成針對一個或多個圖形數(shù)據(jù)項目的該集合的鎖定掩碼。沿著光柵化邏輯306的圖形流水線向下的每個圖元處理單元(例如HSR單元318和紋理化/陰影化單元320)被配置為根據(jù)鎖定掩碼操作。在針對一個或多個圖形數(shù)據(jù)項目的集合的掩碼內(nèi)的針對圖塊的鎖位置在發(fā)送圖形數(shù)據(jù)項目用于由流水線中的第一處理單元(例如HSR單元318)處理時被設(shè)置而在流水線中的圖元處理單元(例如HSR單元318和紋理化/陰影化單元320二者)已經(jīng)完成處理與集合中的一個或多個圖形數(shù)據(jù)項目對應(yīng)的一批圖元時被清除。如果針對一個或多個圖形數(shù)據(jù)項目的集合設(shè)置鎖位置,則不能從高速緩存336和查找表702-708安全地逐出(多個)圖形數(shù)據(jù)項目集合,因此防止逐出。然而,如果針對一個或多個圖形數(shù)據(jù)項目的集合未設(shè)置鎖位置,則可以從高速緩存336和查找表702-708安全地逐出(多個)圖形數(shù)據(jù)項目集合。
在參考計數(shù)方案中,為一個或多個圖形數(shù)據(jù)項目的多個集合中的每個集合維護參考計數(shù)。集合中的每個集合可以例如包括單個圖形數(shù)據(jù)項目或者在高速緩存336中連續(xù)地分配的多個圖形數(shù)據(jù)項目。參考計數(shù)指示在流水線中當前正在處理的子圖元數(shù)目,這些子圖元是一個或多個圖形數(shù)據(jù)項目的相應(yīng)集合的圖形數(shù)據(jù)項目的后代(在分級中)。針對為了生成子圖元而需要的所有圖形數(shù)據(jù)項目的參考計數(shù)在沿著圖形流水線向下發(fā)送子圖元用于進一步處理時被遞增而在子圖元已經(jīng)在光柵化階段中由全圖形流水線處理之后被遞減。如果針對一個或多個圖形數(shù)據(jù)項目的集合的參考計數(shù)為零,則可以從高速緩存336和查找表702-708安全地逐出集合中的(多個)圖形數(shù)據(jù)項目。
在存儲針對圖元的數(shù)據(jù)時,它可以是圖元的存儲的頂點數(shù)據(jù)。如果圖元被組織成圖元條或者圖元網(wǎng),則圖元可以共享頂點。針對圖元的頂點數(shù)據(jù)可以被存儲在圖元塊中,例如其中圖元塊可以存儲上至最大數(shù)目的圖元(例如上至64個圖元)和/或其中圖元塊可以存儲上至最大數(shù)目的頂點(例如上至32頂點)。索引化方案用于標識在圖元塊內(nèi)從變換和子圖元推導(dǎo)邏輯330輸出的不同頂點。可以實施許多不同索引化方案用于標識在高速緩存336內(nèi)的頂點,并且以下參照圖8至10中所示示例描述索引化方案的四個示例,在該示例中實施幾何陰影器和刪減器(但是在該示例中未實施鑲嵌)用于從原始圖元推導(dǎo)子圖元。與圖塊控制流數(shù)據(jù)結(jié)合的這些方案允許光柵化邏輯306標識在圖元塊中的為了推導(dǎo)具體圖塊中的子圖元而需要的圖形數(shù)據(jù)項目,并且允許高速緩存控制器338標識在高速緩存336中的圖形數(shù)據(jù)項目。具體而言,存在在圖8至10中的圖元塊內(nèi)包含的表示為P0、P1和P2的三個原始圖元(即三個輸入圖元)。圖元P0和P2在光柵化階段中當前正在渲染的圖塊中(除了來自P2的刪減器生成的圖元之一之外),但是圖元P1不在當前正在渲染的圖塊中。用從0至6的標號在圖8至10中標注輸入圖元的頂點。可見圖元P0和P1共享兩個頂點:頂點1和2。在該示例中,幾何陰影器從輸入圖元中的每個輸入圖元產(chǎn)生兩個圖元(表示為GS0和GS1),而對于每對GS生成的圖元,從0至3標注頂點。刪減器對GS生成的圖元操作以產(chǎn)生刪減器圖元。具體而言,在圖8至10中所示示例中,對針對輸入圖元P0的GS生成的圖元GS0操作的刪減器的輸出是單個圖元;對針對輸入圖元P0的GS生成的圖元GS1操作的刪減器的輸出是一對圖元;對針對輸入圖元P1的GS生成的圖元GS0操作的刪減器的輸出是單個圖元;對針對輸入圖元P1的GS生成的圖元GS1操作的刪減器的輸出是一對圖元;對針對輸入圖元P2的GS生成的圖元GS0操作的刪減器的輸出是一對圖元(其中之一如用虛線指示的那樣不在圖塊中);而對針對輸入圖元P2的GS生成的圖元GS1操作的刪減器的輸出是一對圖元。待渲染的最終子圖元由刪減器的輸出提供。以下描述向在三個不同示例中的刪減器輸出的頂點應(yīng)用的索引化。
例1:用于在圖元塊中的所有圖元的索引映射:
在該索引化方案中,如圖8中所示對于來自圖元塊中的所有原始圖元的GS生成的圖元和/或刪減器生成的圖元映射索引。GS和刪減器生成的圖元的最大數(shù)目可以限于64,因此每索引最多6位用于映射圖元塊中的所有唯一頂點。在該示例中,以依次方式(例如如圖8中所示從0至21)對圖元塊中的所有最終頂點索引化。該索引化方案的優(yōu)點是所有頂點在圖元塊中被唯一地映射。因此,頂點索引可以與圖元塊標識符(比如圖元塊LUT中的圖元塊ID)一起用于唯一地標識在高速緩存336中存儲的用于在渲染多個圖塊時使用的頂點。換而言之,無論當前正在渲染的圖塊如何都可以標識頂點。該索引化方案的缺點是必須讀取回對針對圖元塊中的所有圖元(即使在當前正在渲染的圖塊中不存在的那些圖元,像是如圖8中所示P1以及針對P2的刪減器生成的三角形之一)的最高級別圖元的在圖形存儲器322中的頂點數(shù)據(jù)的指示,以便映射整個圖元塊中的頂點,并且這往往增加在系統(tǒng)存儲器與在GPU中的未變換幾何取回單元316之間傳送的數(shù)據(jù)量,這是緩慢的過程。
例2:針對圖塊中的圖元的索引映射:
在該索引化方案中,如圖9中所示對于僅來自圖元塊中的存在于當前圖塊中的原始圖元的GS生成的圖元和/或刪減器生成的圖元映射索引。GS和刪減器生成的圖元的最大數(shù)目可以限于64,因此每索引最多6位用于映射圖元塊中的所有唯一頂點。在該示例中,以依次方式(例如如圖9中所示從0至14)對圖元塊中的存在于正在渲染的當前圖塊內(nèi)的最終頂點索引化。索引未被指派給不存在于當前圖塊中的圖元(例如從輸入圖元P1推導(dǎo)的圖元)的頂點。該索引化方案的優(yōu)點是取回單元316僅讀取對針對存在于圖塊內(nèi)的圖元的最高級別圖元的在圖形存儲器322中的頂點數(shù)據(jù)的指示,這些存在于圖塊內(nèi)的圖元在圖9中是P0和P2(除了P2的刪減器生成的三角形之一之外)。這意味著從存儲器302傳送的數(shù)據(jù)量沒有浪費用于讀取不在當前正在渲染的圖塊中的圖元的索引。頂點索引可以與圖元塊標識符(比如圖元塊LUT中的圖元塊ID)一起用于唯一地標識在高速緩存336中存儲的用于在渲染當前圖塊時使用的頂點??梢栽诟咚倬彺嬷写鎯Σ煌瑘D元塊中的頂點數(shù)據(jù),并且圖元塊ID可以用于在來自不同圖元塊的頂點之間區(qū)分。該索引化方案的缺點是不能跨不同圖塊共享在高速緩存336中存儲的頂點數(shù)據(jù)。這是因為僅映射當前圖塊中的圖元,并且由于來自圖元塊的不同圖元可以在不同圖塊中可見,所以高速緩存336必須在圖塊之間被無效以保證對頂點的索引化正確。
例3:有分級信息的針對圖塊中的圖元的索引映射:
在該索引化方案中,如圖10中所示對于圖元塊中的在當前圖塊中可見的每個原始圖元獨立地為GS生成的圖元和/或刪減器生成的圖元映射索引。在刪減器生成圖元時除了圖元索引之外還需要針對原始圖元的圖元塊中的圖元索引和針對GS生成的圖元的圖元索引。例如可以給定針對在幾何陰影器生成的圖元GS0上執(zhí)行的刪減器的輸出的第一頂點的分級索引為P0:GS0:0,該索引指示頂點是從本身是從P0推導(dǎo)的GSP0推導(dǎo)的圖元的第一頂點。以該方式,在高速緩存336中與分級索引一起存儲子圖元中的每個子圖元的頂點,該分級索引指示用于推導(dǎo)子圖元的圖形數(shù)據(jù)模型的分級。
如果不存在GS或者刪減器生成的圖元,則在高速緩存336中存儲原始圖元的索引值以指示原始索引。可以在圖元塊內(nèi)的圖元之間共享頂點。
如果存在刪減器生成的圖元,則如圖10中所示在刪減器生成的三角條以內(nèi)映射頂點。除了映射的索引之外還存儲原始圖元索引以便唯一地標識頂點。
相似地,如果存在GS生成的圖元,則如圖10中所示在GS生成的三角條以內(nèi)映射頂點。除了映射的索引之外還存儲原始圖元索引以便唯一地標識頂點。
在刪減器從GS生成的圖元生成圖元時,如圖10中所示在針對每個GS生成的圖元的刪減器生成的三角條以內(nèi)映射頂點。除了映射的索引之外還存儲原始圖元索引和GS生成的圖元索引以便唯一地標識頂點。
該索引化方案的優(yōu)點是取回單元316僅讀取對針對存在于圖塊內(nèi)的圖元的最高級別圖元的在圖形存儲器322中的頂點數(shù)據(jù)的指示,這些存在于圖塊內(nèi)的圖元在圖10中是P0和P2(除了P2的刪減器生成的三角形之一之外)。這意味著從存儲器302傳送的數(shù)據(jù)量沒有浪費用于讀取不在當前正在渲染的圖塊中的圖元的索引。頂點索引可以與圖元塊標識符(比如圖元塊LUT中的圖元塊ID)一起用于唯一地標識在高速緩存336中存儲的用于在渲染當前圖塊時使用的頂點??梢栽诟咚倬彺嬷写鎯Σ煌瑘D元塊中的頂點數(shù)據(jù),并且圖元塊ID可以用于在來自不同圖元塊的頂點之間區(qū)分。另外,由于為圖元塊中的每個原始圖元獨立地映射索引,所以可以跨不同圖塊共享在高速緩存336中存儲的頂點數(shù)據(jù)。
該索引化方案的缺點是在高速緩存336和LUT中需要更多索引信息。附加索引信息是用于原始圖元索引(例如用于上至64個原始圖元的6位中的每位)和用于GS生成的圖元索引的索引信息(用于上至128個針對GS的GS生成的圖元和用于刪減器生成的圖元的7位中的每位)。另外,可以在使用實例化時可選地存儲實例ID。
例4:用于陰影器輸出的自然映射:
在該方案中,在高速緩存336中存儲的圖形數(shù)據(jù)模型不是個別頂點或控制點。取而代之,在高速緩存336中存儲的圖形數(shù)據(jù)項目是陰影器調(diào)用或者刪減器調(diào)用的輸出(如果實施方式判決高速緩存刪減器生成的數(shù)據(jù))。因此,輸出上至256個頂點的幾何陰影器僅向單個數(shù)據(jù)項目寫入。相似地,輸出補塊恒定數(shù)據(jù)(例如鑲嵌因子)和上至32個控制點的殼陰影器僅向單個數(shù)據(jù)項目寫入。圖形數(shù)據(jù)項目因此通過使用在圖形流水線中已經(jīng)可用的信息單義地標識陰影器調(diào)用或者刪減器調(diào)來被加標簽。例如可以獲得針對每級的唯一“標簽”(或者“索引”)如下:
1.VS:繪制調(diào)用ID、實例ID、頂點ID。
2.HS:繪制調(diào)用ID、實例ID、圖元ID。
3.DS:繪制調(diào)用ID、實例ID、圖元ID、域索引。
4.GS:繪制調(diào)用ID、實例ID、圖元ID、鑲嵌的圖元索引(對于給定的輸入圖元;如果未使用鑲嵌則為0)和GS實例ID。
5.刪減器:繪制調(diào)用ID、實例ID、圖元ID、鑲嵌的圖元索引、GS實例ID和GS圖元索引(對于給定的輸入或者鑲嵌的圖元:如果未使用GS則為0)。
標簽可以在高速緩存控制器的查找表中用于快速地搜索(例如在內(nèi)容關(guān)聯(lián)存儲器中)圖形數(shù)據(jù)項目。該方案的缺點是它使用若干位用于標簽(即用于索引)。然而,為了緩解該問題,索引重新映射方案可以用于將ID中的一個或多個ID組合在一起,例如繪制調(diào)用ID和實例ID可以被組合成單個值。例如取代使用N位用于繪制調(diào)用ID和M位用于實例ID,K位可以足以跨繪制調(diào)用標識全局實例ID,其中K<N+M。
該方案具有三個主要優(yōu)點。
1.對陰影器輸出而非個別頂點和控制點加標簽減少需要的查找表條目數(shù)目。
2.跨圖塊和跨圖元塊自然地共享標簽。由于“原始圖元”(即圖形存儲器322中的在分級中沒有父圖形數(shù)據(jù)項目的圖元)可以生成數(shù)以千計的鑲嵌生成的圖元,允許原始圖元跨越若干圖元塊的實施方式是實際的。利用該方案,可以跨圖元塊自然地共享頂點和殼陰影器輸出,因為圖元塊ID未用于生成索引或者標簽。
3.生成標簽和解釋標簽的邏輯是簡單的,因為信息(例如繪制調(diào)用ID、實例ID、頂點ID、圖元ID、域索引、鑲嵌圖元索引和幾何陰影器圖元索引)在圖形流水線中自然地可用。
在以上描述的示例中,輸入圖形數(shù)據(jù)項目(其可以例如是描述補塊的圖元或者控制點)描述在待渲染的3D場景內(nèi)的幾何結(jié)構(gòu),其中渲染的子圖元用于在形成場景的渲染的圖像時使用。在其它示例中,渲染的子圖元可以用于除了形成場景的渲染的圖像之外的用途。例如輸入圖形數(shù)據(jù)項目可以描述紋理,而渲染的子圖元可以用于在形成渲染的圖像時使用和后續(xù)地在其它渲染器中用作紋理。
在以上描述的示例中,在處理流水線中在HSR單元318和紋理化/陰影化單元320之前在光柵化邏輯306中實施高速緩存。在一些其它示例中,例如在如圖11中所示系統(tǒng)1100中,可以與相應(yīng)兩個高速緩存子系統(tǒng)3341和3342一起在兩個子系統(tǒng)3301和3302中實施變換和子圖元推導(dǎo)邏輯330:在處理流水線中在HSR單元318之前實施第一子系統(tǒng)(3301和3341)而在HSR單元318之后(但是在紋理化/陰影化單元320之前)實施第二子系統(tǒng)(3302和3342)。圖11中所示具有與圖3中的標號相同的標號的部件以相同方式操作。第一高速緩存子系統(tǒng)3341包括第一高速緩存3361和第一高速緩存控制器3381;而第二高速緩存子系統(tǒng)3342包括第二高速緩存3362和第二高速緩存控制器3382。在這些示例中,第一子系統(tǒng)(3301和3341)可以被配置為如以上描述的那樣僅對圖形數(shù)據(jù)項目的位置數(shù)據(jù)操作并且在第一子系統(tǒng)的分級高速緩存3361中存儲子圖元推導(dǎo)的結(jié)果。HSR單元318僅對位置數(shù)據(jù)操作,因此無需在HSR單元318的操作之前變換非位置屬性。對于從HSR單元318輸出(即未被HSR單元318去除)的圖形數(shù)據(jù)項目,第二子系統(tǒng)(3302和3342)對非位置屬性(和可選地對位置屬性)操作,其中可以如以上描述的那樣在第二子系統(tǒng)的分級高速緩存3362中存儲子圖元推導(dǎo)的結(jié)果。以該方式,僅為未被HSR挑選的圖元計算非位置屬性。在第二子系統(tǒng)(3302和3342)中,可以再次計算或者從第一子系統(tǒng)的高速緩存3361讀取位置。
在更多示例中,例如在如圖12中所示系統(tǒng)1200中,可以在HSR單元318之后、但是在紋理化/陰影化單元32之前實施變換和子圖元推導(dǎo)邏輯3303以及高速緩存系統(tǒng)3343。在這些示例中,幾何處理邏輯1204與幾何處理邏輯304相似、但是可以發(fā)送針對圖元和子圖元的變換的位置數(shù)據(jù)用于與控制流一起在存儲器302中存儲(例如在已變換位置緩沖器1224中)。取回單元1216與取回單元316相似、但是可以取回針對圖元的變換的位置數(shù)據(jù),該圖元由針對特定圖塊的控制流數(shù)據(jù)指示為在特定圖塊中。HSR單元318可以對位置數(shù)據(jù)操作用于執(zhí)行隱藏表面去除。從HSR單元318輸出的圖元(即未被HSR挑選的圖元)被傳遞到高速緩存系統(tǒng)3343,該高速緩存系統(tǒng)包括高速緩存3363和高速緩存控制器3383,并且被配置為存儲已經(jīng)變換的圖元的非位置屬性。高速緩存系統(tǒng)3343以與以上描述的分級高速緩存系統(tǒng)334相似的方式操作,并且可以獲取從HSR單元318輸出的圖元的變換的非位置屬性,并且向紋理化/陰影化單元320傳遞那些獲取的屬性。如果從HSR單元318輸出的圖元的變換的非位置屬性未被存儲在高速緩存3363中,則變換和子圖元推導(dǎo)邏輯3303推導(dǎo)圖元的變換的非位置屬性,并且向紋理化/陰影化單元320提供它們(和也向高速緩存系統(tǒng)3343提供它們用于在高速緩存3363中存儲用于后續(xù)使用)。變換和子圖元推導(dǎo)邏輯3303可以計算針對圖元的位置數(shù)據(jù)或者可以使用從存儲器302取回的位置數(shù)據(jù)。分級高速緩存系統(tǒng)3343可以根據(jù)以上關(guān)于高速緩存系統(tǒng)334而描述的原理操作。
圖13示出其中可以實施圖形處理系統(tǒng)300的計算機系統(tǒng)。計算機系統(tǒng)包括CPU 1302、GPU 1304、存儲器302和其它設(shè)備1306、比如顯示器1308、揚聲器1310和相機1312。在GPU 1304上實施幾何處理邏輯304和光柵化邏輯306。在其它示例中,可以在CPU 1302上實施幾何處理邏輯304和光柵化邏輯306。計算機系統(tǒng)的部件可以經(jīng)由通信總線1314相互通信。
在圖中示出這里描述的系統(tǒng)為包括多個功能塊。這僅為示意而未旨在于限定在這樣的實體的不同邏輯單元之間的嚴格劃分??梢杂萌魏芜m當方式提供每個功能塊。將理解這里描述為由圖形處理系統(tǒng)形成的中間值無需在任何點處由圖形處理系統(tǒng)物理地生成,而可以僅代表邏輯值,這些邏輯值方便地描述圖形處理系統(tǒng)在它的輸入與輸出之間執(zhí)行的處理。
可以在集成電路上的硬件中實現(xiàn)這里描述的圖形處理系統(tǒng)。這里描述的圖形處理系統(tǒng)可以被配置為執(zhí)行這里描述的方法中的任何方法。一般而言,可以在軟件、固件、硬件(例如固定邏輯電路裝置)或者其任何組合中實施以上描述的功能、方法、技術(shù)或者部件中的任何功能、方法、技術(shù)或者部件。術(shù)語“模塊”、“功能”、“部件”、“元件”、“單元”、“塊”和“邏輯”可以在這里用于一般地代表軟件、固件、硬件或者其任何組合。在軟件實施方式的情況下,模塊、功能、部件、元件、單元、塊或者邏輯代表在處理器上被執(zhí)行時執(zhí)行指定的任務(wù)的程序代碼。這里描述的算法和方法可以通過一個或多個處理器執(zhí)行使(多個)處理器執(zhí)行算法/方法的代碼來執(zhí)行。計算機可讀存儲介質(zhì)的示例包括隨機存取存儲器(RAM)、只讀存儲器(ROM)、光盤、閃存、硬盤存儲器和可以使用磁、光學(xué)和其它技術(shù)以存儲指令或者其它數(shù)據(jù)并且可以由機器存取的其它存儲器設(shè)備。
術(shù)語計算機程序代碼和計算機可讀指令如這里所用是指用于處理器的任何種類的可執(zhí)行代碼,包括以機器語言、解釋語言或者腳本語言表達的代碼。可執(zhí)行代碼包括二進制代碼、機器代碼、字節(jié)代碼、定義集成電路的代碼(比如硬件描述語言或者網(wǎng)表)和以編程語言代碼(比如C、Java或者OpenCL)表達的代碼。可執(zhí)行代碼可以例如是任何種類的軟件、固件、腳本、模塊或者庫,該軟件、固件、腳本、模塊或者庫在虛擬機或者其它軟件環(huán)境被適當?shù)貓?zhí)行、處理、解釋、編譯、執(zhí)行時使支持可執(zhí)行代碼的計算機系統(tǒng)的處理器執(zhí)行由代碼指定的任務(wù)。
處理器、計算機或者計算機系統(tǒng)可以是有使得它可以執(zhí)行指令的處理能力的任何種類的設(shè)備、機器或者專用電路或者其匯集或者部分。處理器可以是任何種類的通用或者專用處理器、比如CPU、GPU、片上系統(tǒng)、狀態(tài)機、媒體處理器、專用集成電路(ASIC)、可編程邏輯陣列、現(xiàn)場可編程門陣列(FPGA)等。計算機或者計算機系統(tǒng)可以包括一個或多個處理器。
也旨在于涵蓋對如這里描述的硬件配置進行定義的軟件,比如如用于設(shè)計集成電路或者用于配置可編程芯片以執(zhí)行希望的功能的HDL(硬件描述語言)軟件。也就是說,可以提供一種計算機可讀存儲介質(zhì),該計算機可讀存儲介質(zhì)具有在其上編碼的、形式為集成電路定義數(shù)據(jù)集的計算機可讀程序代碼,該集成電路定義數(shù)據(jù)集在集成電路制造系統(tǒng)中被處理(即運行)時配置該系統(tǒng)以制造圖形處理系統(tǒng),該圖形處理系統(tǒng)被配置為執(zhí)行這里描述的方法中的任何方法,或者配置該系統(tǒng)以制造包括這里描述的任何裝置的圖形處理系統(tǒng)。集成電路定義數(shù)據(jù)集可以例如是集成電路描述。
因此,可以提供一種在集成電路制造系統(tǒng)處制造如這里描述的圖形處理系統(tǒng)的方法。另外,可以提供一種集成電路定義數(shù)據(jù)集,該集成電路定義數(shù)據(jù)集在集成電路制造系統(tǒng)中被處理時使制造圖形處理系統(tǒng)的方法被執(zhí)行。
一種集成電路定義數(shù)據(jù)集可以是以計算機代碼的形式,例如網(wǎng)表、用于配置可編程芯片的代碼、在任一級定義集成電路的硬件描述語言、包括寄存器傳送級(RTL)代碼、比如Verilog或者VHDL的高級電路表示、和比如OASIS(RTM)和GDSII的低級電路表示??梢栽谟嬎銠C系統(tǒng)處處理邏輯地定義集成電路(比如RTL)的更高級表示,該計算機系統(tǒng)被配置用于在軟件環(huán)境的情境中生成集成電路的制造定義,該軟件環(huán)境包括電路元件的定義和如下規(guī)則,這些規(guī)則用于組合那些元件以便生成如由該表示定義的集成電路的制造定義。如軟件在計算機系統(tǒng)執(zhí)行以便定義機器的情況通常有的那樣,可能需要一個或多個中間用戶步驟(例如提供命令、變量等),以便被配置為生成集成電路的制造定義的計算機系統(tǒng)執(zhí)行定義集成電路的代碼,以便生成該集成電路的制造定義。
現(xiàn)在將關(guān)于圖14描述在集成電路制造系統(tǒng)處處理集成電路定義數(shù)據(jù)集以便配置該系統(tǒng)制造圖形處理系統(tǒng)的示例。
圖14示出被配置為制造如在這里的示例中的任一示例中描述的圖形處理系統(tǒng)的集成電路(IC)制造系統(tǒng)1402的示例。具體而言,IC制造系統(tǒng)1402包括布局處理系統(tǒng)1404和集成電路生成系統(tǒng)1406。IC制造系統(tǒng)1402被配置為接收IC定義數(shù)據(jù)集(例如定義如在這里的示例中的任一示例中描述的圖形處理系統(tǒng))、處理IC定義數(shù)據(jù)集并且根據(jù)IC定義數(shù)據(jù)集生成IC(例如該IC實現(xiàn)如在這里的示例中的任一示例中描述的圖形處理系統(tǒng))。對IC定義數(shù)據(jù)集的處理配置IC制造系統(tǒng)1402以制造集成電路,該集成電路實現(xiàn)如在這里的示例中的任一示例中描述的圖形處理系統(tǒng)。
布局處理系統(tǒng)1404被配置為接收和處理IC定義數(shù)據(jù)集以確定電路布局。從IC定義數(shù)據(jù)集確定電路布局的方法在本領(lǐng)域中是已知的,并且例如可以包括合成RTL代碼以例如按照邏輯部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)確定待生成的電路的門級表示??梢酝ㄟ^確定針對邏輯部件的位置信息來從電路的門級表示確定電路布局。這可以被自動地完成或者有用戶參與以便優(yōu)化電路布局來完成。在布局處理系統(tǒng)1404已經(jīng)確定電路布局時,它可以向IC生成系統(tǒng)1406輸出電路布局定義。電路布局定義可以例如是電路布局描述。
IC生成系統(tǒng)1406如在本領(lǐng)域中所知根據(jù)電路布局定義生成IC。例如IC生成系統(tǒng)1406可以實施半導(dǎo)體器件制造過程以生成IC,這可以涉及到光刻和化學(xué)處理步驟的多步驟序列,在該序列中在由半導(dǎo)體材料制成的晶片上逐漸地創(chuàng)建電子電路。電路布局定義可以是以可以在光刻工藝中用于根據(jù)電路定義生成IC的掩碼的形式。備選地,向IC生成系統(tǒng)1406提供的電路布局定義可以是以IC生成系統(tǒng)1406可以用于形成用于在生成IC時使用的適當掩碼的計算機可讀代碼的形式。
由IC制造系統(tǒng)1402執(zhí)行的不同過程可以都在一個位置中例如由一方實施。備選地,IC制造系統(tǒng)1402可以是分布式系統(tǒng),從而過程中的一些過程可以在不同位置處執(zhí)行和可以由不同方執(zhí)行。例如可以在不同位置中和/或由不同方執(zhí)行以下級中的一些級:(i)合成代表IC定義數(shù)據(jù)集的RTL代碼以形成待生成的電路的門級表示,(ii)基于門級表示生成電路布局,(iii)根據(jù)電路布局形成掩碼,以及(iv)使用掩碼來制造集成電路。
在其它示例中,在集成電路制造系統(tǒng)處處理集成電路定義數(shù)據(jù)集可以配置該系統(tǒng)以制造圖形處理系統(tǒng)而不處理IC定義數(shù)據(jù)集以便確定電路布局。例如集成電路定義數(shù)據(jù)集可以定義可重配置處理器(比如FPGA)的配置,并且處理該數(shù)據(jù)集可以配置IC制造系統(tǒng)以生成具有該定義的配置的可重配置處理器(例如通過向FPGA加載配置數(shù)據(jù))。
在一些實施例中,一種集成電路制造定義數(shù)據(jù)集可以在集成電路制造系統(tǒng)中被處理時使集成電路制造系統(tǒng)生成如這里描述的器件。例如集成電路制造定義數(shù)據(jù)集用以上關(guān)于圖14描述的方式配置集成電路制造系統(tǒng)可以使如這里描述的器件被制造。
在一些示例中,一種集成電路定義數(shù)據(jù)集可以包括在數(shù)據(jù)集處定義的硬件上或者與在數(shù)據(jù)集處定義的硬件組合運行的軟件。在圖14中所示示例中,IC生成系統(tǒng)還可以由集成電路定義數(shù)據(jù)集配置以在制造集成電路時根據(jù)在集成電路定義數(shù)據(jù)集處定義的程序代碼將固件加載到該集成電路上或者以別的方式向集成電路提供程序代碼用于與集成電路一起使用。
申請人由此單獨地公開這里描述的每個個別特征和兩個或者更多這樣的特征的任何組合,其中這樣的特征或者組合能夠按照本領(lǐng)域技術(shù)人員的公知常識基于作為整體的本說明書來執(zhí)行,無論這樣的特征或者特征組合是否解決這里公開的任何問題。鑒于前文描述,本領(lǐng)域技術(shù)人員將清楚可以在本發(fā)明的范圍內(nèi)做出各種修改。