專利名稱:圖形處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖形處理,并且特別地,涉及包括頂點(diǎn)著色(vertex shading)階段的圖形處理系統(tǒng)的操作。
背景技術(shù):
如本領(lǐng)域中已知的,圖形處理典型地以流水線(pipelined)方式執(zhí)行,具有對(duì)數(shù)據(jù)進(jìn)行操作以便產(chǎn)生顯示的最終圖像的ー個(gè)或多個(gè)流水線階段。該處理的兩個(gè)重要階段典型地為諸如變換和照明之類的所謂的頂點(diǎn)著色操作,其在代表要顯示的圖像的圖元(多邊形)的頂點(diǎn)上執(zhí)行;以及后續(xù)的片段(像素)著色操作,其對(duì)構(gòu)成要顯示的圖像的各個(gè)片段(像素)著色(賦色)。
諸如頂點(diǎn)變換和照明之類的頂點(diǎn)著色操作典型地在圖形處理的所謂的“頂點(diǎn)著色器”階段中執(zhí)行。這典型地為在輸入數(shù)據(jù)值上執(zhí)行頂點(diǎn)著色器程序以便產(chǎn)生希望的輸出數(shù)據(jù)集合(例如適當(dāng)變換和照明的頂點(diǎn)數(shù)據(jù))以供圖形流水線的其余部分處理的可編程處理単元。(如本領(lǐng)域中已知的,通常將場(chǎng)景的每個(gè)圖元(多邊形)定義和表示為頂點(diǎn)集合,其中每個(gè)頂點(diǎn)具有與其關(guān)聯(lián)的用于該頂點(diǎn)的數(shù)據(jù)值集合。頂點(diǎn)著色過程例如基于頂點(diǎn)所涉及的圖元所經(jīng)受的任何變換或照明修改針對(duì)該頂點(diǎn)的初始定義的數(shù)據(jù)值。)。一旦用于場(chǎng)景的輸入數(shù)據(jù)值經(jīng)過頂點(diǎn)“著色”,那么通常將代表場(chǎng)景的圖元光柵化以便為場(chǎng)景產(chǎn)生多個(gè)要被處理的“片段”。(如本領(lǐng)域中已知的,“片段”是在其上執(zhí)行圖形處理操作(例如再現(xiàn))的離散圖形實(shí)體。每個(gè)片段與場(chǎng)景的ー個(gè)或多個(gè)采樣點(diǎn)對(duì)應(yīng)并且具有與其關(guān)聯(lián)的必要數(shù)據(jù),例如紅色、緑色、藍(lán)色(RGB)顔色數(shù)據(jù)、阿爾法(透明度)值和深度值,以允許顯示所述(ー個(gè)或多個(gè))樣本點(diǎn)。(片段也可以稱為像素,但是情況并非必然是給定片段將完全與最終顯示中的單個(gè)像素(像素元素)對(duì)應(yīng),因?yàn)橹T如向下縮放之類的后處理可能意味著圖形處理在其上操作的實(shí)體(片段)與顯示像素之間不存在一一對(duì)應(yīng)。))。圖形片段一旦產(chǎn)生,則經(jīng)歷對(duì)其著色以便產(chǎn)生其最終的輸出顏色等值的若干過程,例如應(yīng)用紋理、混合等等。例如顯示所述片段所代表的(ー個(gè)或多個(gè))樣本點(diǎn)所需的導(dǎo)出輸出數(shù)據(jù)值的這樣的過程可以稱為“片段著色”或者“像素著色”并且在處理流水線的片段著色(也稱為像素著色)階段中執(zhí)行。片段著色過程處理片段的初始定義的片段數(shù)據(jù)值以便正確地導(dǎo)出該片段的輸出數(shù)據(jù)(顯示該片段代表的(ー個(gè)或多個(gè))樣本點(diǎn)所需的數(shù)據(jù))。再一次地,片段著色器可以為執(zhí)行一個(gè)或多個(gè)片段著色器程序以便對(duì)片段適當(dāng)?shù)刂?賦色)的可編程單元。如本領(lǐng)域中已知的,頂點(diǎn)和片段著色操作通常對(duì)所謂的“屬性”進(jìn)行操作。屬性是著色器程序中的輸入或輸出變量,并且可以代表例如位置、顔色或紋理坐標(biāo)等等。頂點(diǎn)著色器的輸入屬性可以稱為初級(jí)屬性,并且頂點(diǎn)著色器的輸出屬性(其也是片段著色器輸入屬性)可以稱為次級(jí)屬性。通常,對(duì)于給定的著色器程序(鏈接的頂點(diǎn)和片段著色器)而言,存在固定數(shù)量的初級(jí)屬性(頂點(diǎn)著色器輸入變量)和固定數(shù)量的次級(jí)屬性(頂點(diǎn)著色器輸出/片段著色器輸入變量)。
對(duì)于特定的繪圖(draw)調(diào)用而言,針對(duì)非實(shí)例化(instanced)的繪圖,姆個(gè)初級(jí)屬性(頂點(diǎn)著色器輸入變量)具有用于繪圖調(diào)用的每個(gè)頂點(diǎn)的定義值。在實(shí)例化繪圖的情況下,每個(gè)初級(jí)屬性(頂點(diǎn)著色器輸入變量)具有用于每個(gè)頂點(diǎn)或者用于每個(gè)實(shí)例的定義值。因此,在實(shí)例化模式操作中,一些初級(jí)屬性將具有在每頂點(diǎn)基礎(chǔ)上定義的值,并且因而可以被認(rèn)為是“每頂點(diǎn)”屬性。同樣地,可以存在其值在每實(shí)例基礎(chǔ)上定義的初級(jí)屬性,所述屬性因此可以被認(rèn)為是“每實(shí)例”屬性。如本領(lǐng)域中已知的,當(dāng)圖形處理器在所謂的“實(shí)例化”模式下操作吋,將繪制相同輸入幾何結(jié)構(gòu)的多個(gè)“實(shí)例”(例如毎次在稍微不同的位置)。在這種情況下,頂點(diǎn)著色器將每頂點(diǎn)每實(shí)例運(yùn)行一次(即次數(shù)等于頂點(diǎn)數(shù)量乘以實(shí)例數(shù)量),而不是僅僅每頂點(diǎn)運(yùn)行一次。因此,對(duì)于每個(gè)不同的頂點(diǎn)和實(shí)例組合而言,通常將存在為每個(gè)次級(jí)屬性(頂點(diǎn)著色器輸出變量)產(chǎn)生的頂點(diǎn)著色器輸出(次級(jí)屬性值)。初級(jí)屬性值典型地存儲(chǔ)在存儲(chǔ)器中以供頂點(diǎn)著色器使用。(這通常在圖形API中規(guī)定。)要求圖形處理的主機(jī)系統(tǒng)上的應(yīng)用程序通常將規(guī)定頂點(diǎn)著色器輸入屬性和輸入屬性值的存儲(chǔ)布局。 在傳統(tǒng)的即時(shí)模式圖形處理單元的情況下,為了向諸如片段著色器之類的后續(xù)處理階段提供輸出的經(jīng)過頂點(diǎn)著色的次級(jí)屬性值,頂點(diǎn)著色器輸出典型地被引導(dǎo)通過芯片內(nèi)的內(nèi)部流水線。在延遲再現(xiàn)圖形處理器(例如基于圖塊(tile)的圖形處理器)的情況下,通常將頂點(diǎn)著色器輸出(頂點(diǎn)著色的屬性值)寫到存儲(chǔ)器,當(dāng)片段著色器等需要吋,于是從所述存儲(chǔ)器訪問這些頂點(diǎn)著色器輸出。在屬性值存儲(chǔ)于存儲(chǔ)器中的地方,頂點(diǎn)著色器和片段著色器等通常將提供有適當(dāng)?shù)拇鎯?chǔ)地址并且使用適當(dāng)?shù)拇鎯?chǔ)地址以便在適當(dāng)屬性值要被存儲(chǔ)或所存儲(chǔ)的地方從存儲(chǔ)器存儲(chǔ)和檢索(retrieve)這些值。例如,頂點(diǎn)著色器將執(zhí)行加載特定輸入屬性值以供處理的指令,并且該指令將包括或者指示允許頂點(diǎn)著色器在存儲(chǔ)輸入屬性值的地方從存儲(chǔ)器中檢索適當(dāng)?shù)膶傩灾档拇鎯?chǔ)地址。類似地,片段著色器將執(zhí)行加載特定的頂點(diǎn)著色的輸出屬性值以供處理的指令,并且該指令將包括或者指示允許片段著色器在存儲(chǔ)輸出屬性值(頂點(diǎn)著色器的輸出)的地方從存儲(chǔ)器中檢索用于所討論的多邊形(圖元)的每個(gè)轉(zhuǎn)角頂點(diǎn)的適當(dāng)輸出屬性值的(ー個(gè)或多個(gè))存儲(chǔ)地址。申請(qǐng)人:相信,仍然存在改進(jìn)包括頂點(diǎn)著色階段的圖形處理器操作的范圍。
發(fā)明內(nèi)容
依照本發(fā)明的第一方面,提供了ー種操作圖形處理系統(tǒng)的方法,該圖形處理系統(tǒng)包括處理輸入屬性值以便產(chǎn)生輸出的頂點(diǎn)著色的屬性值以供該圖形處理系統(tǒng)的后續(xù)階段使用的頂點(diǎn)著色階段,該方法包括
識(shí)別何時(shí)由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同,以及
當(dāng)識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同吋
控制頂點(diǎn)著色器以便不從頂點(diǎn)著色器輸入屬性值中產(chǎn)生頂點(diǎn)著色器輸出屬性值;并且使得需要使用本將由頂點(diǎn)著色器產(chǎn)生的頂點(diǎn)著色器輸出屬性值的后續(xù)圖形處理階段改為處理對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值。依照本發(fā)明的第二方面,提供了一種用于處理圖形的系統(tǒng),該系統(tǒng)包括
包括多個(gè)圖形處理階段的圖形處理器,所述圖形處理階段包括頂點(diǎn)著色階段以及頂點(diǎn)著色階段后續(xù)的至少ー個(gè)處理階段,其中頂點(diǎn)著色階段處理輸入屬性值以便產(chǎn)生輸出的頂點(diǎn)著色的屬性值以供圖形處理器的所述至少一個(gè)后續(xù)處理階段使用;以及處理器,其被配置成
識(shí)別何時(shí)由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同;
并且當(dāng)識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同時(shí),使得頂點(diǎn)著色器不從頂點(diǎn)著色器輸入屬性值中產(chǎn)生頂點(diǎn)著色器輸出屬性值;
并且在識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同的情況下,使得將處理頂點(diǎn)著色階段的輸出的所述至少一個(gè)后續(xù)圖形處理階段處理對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值而不是在別的情況下將由頂點(diǎn)著色器產(chǎn)生的頂點(diǎn)著色器輸出屬性值。在本發(fā)明中,圖形處理操作被配置成識(shí)別何時(shí)頂點(diǎn)著色器的輸出將與其輸入屬性 值相同(即何時(shí)頂點(diǎn)著色器輸出將簡單地為頂點(diǎn)著色器輸入屬性的拷貝)。申請(qǐng)人:認(rèn)識(shí)到,在一些情況下,對(duì)于給定頂點(diǎn)著色器輸入屬性的頂點(diǎn)著色器操作可能事實(shí)上使得頂點(diǎn)著色器輸入屬性值未改變,從而實(shí)際上頂點(diǎn)著色器的操作簡單地讓輸入值通過到達(dá)其輸出而不改變?cè)撦斎胫?。例如,如果頂點(diǎn)著色器輸入屬性為用于頂點(diǎn)的紋理坐標(biāo),則情況就是這樣。在本發(fā)明中,當(dāng)識(shí)別這樣的“貫通(pass-thixnigh)”情形時(shí),頂點(diǎn)著色器被控制為不產(chǎn)生輸出值(即它不產(chǎn)生輸入的拷貝),并且作為代替,需要使用該輸出的任何圖形處理階段被控制為改為處理對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值。這種布置具有若干優(yōu)點(diǎn)。首先,通過允許圖形處理的后面的階段直接使用頂點(diǎn)著色器輸入,這避免了需要頂點(diǎn)著色器存儲(chǔ)“拷貝”的輸出值以供那些圖形處理階段使用。因此,這允許避免寫入實(shí)際上冗余的“拷貝”的輸出值,并且此外首先避免它們的生成。此外,通過控制頂點(diǎn)著色器不產(chǎn)生拷貝的“貫通”輸出值,避免了用于在頂點(diǎn)著色器中產(chǎn)生拷貝的輸出值并且然后存儲(chǔ)它們以供后續(xù)圖形處理階段使用的存儲(chǔ)業(yè)務(wù)量、存儲(chǔ)使用量、帶寬和執(zhí)行時(shí)間。因此,例如與簡單地將片段著色器所需的所有頂點(diǎn)著色器輸出寫到存儲(chǔ)器的布置相比,本發(fā)明可以減少用于圖形處理系統(tǒng)中的頂點(diǎn)著色器操作的存儲(chǔ)業(yè)務(wù)量和使用量以及因而功率使用量。這通常是有益的,但是對(duì)于要用在低功率和便攜式設(shè)備中的圖形處理系統(tǒng)而言是特別有利的。頂點(diǎn)著色器處理的輸入屬性值(S卩如上文所討論的輸入變量值)(以及對(duì)應(yīng)的輸出屬性值(輸出變量值))可以是頂點(diǎn)著色器可以對(duì)其操作(和產(chǎn)生)的任何適當(dāng)?shù)倪@樣的屬性值。它們?nèi)绫绢I(lǐng)域中已知的典型地將是并且在ー個(gè)優(yōu)選的實(shí)施例中為諸如位置、顔色等等之類的屬性的值。
在這里,應(yīng)當(dāng)指出的是,本發(fā)明同樣地適用于圖形處理系統(tǒng)包括多個(gè)頂點(diǎn)著色器的情況,例如可能是多核系統(tǒng)的情況。在這種情況下,頂點(diǎn)著色階段將包含例如并行操作的多個(gè)單獨(dú)的頂點(diǎn)著色器。在這樣的布置中,每個(gè)頂點(diǎn)著色器優(yōu)選地以本發(fā)明的方式操作,即不存儲(chǔ)用于“貫通”屬性的輸出值。要使用頂點(diǎn)著色器的輸出的后續(xù)圖形處理階段可以是任何適當(dāng)?shù)那蚁M倪@樣的圖形處理階段。它們優(yōu)選地為圖形處理系統(tǒng)的后續(xù)著色器階段。在ー個(gè)特別優(yōu)選的實(shí)施例中,后續(xù)圖形處理階段為片段著色器。它也可以例如為幾何著色器。其中頂點(diǎn)著色器輸出屬性值是頂點(diǎn)著色器輸入屬性值的拷貝的情形可以以任何適當(dāng)且希望的方式并且在系統(tǒng)的任何適當(dāng)?shù)碾A段處和處理器中進(jìn)行識(shí)別。這優(yōu)選地通過標(biāo)識(shí)要直接從頂點(diǎn)著色器輸入屬性拷貝的某個(gè)或者所述頂點(diǎn)著色器輸出屬性來完成。最優(yōu)選 地,系統(tǒng)試圖識(shí)別(并且多次識(shí)別)這樣的情形,其中對(duì)于特定的繪圖調(diào)用,輸出屬性的值將與用于所有頂點(diǎn)的輸入值相同,與輸入值獨(dú)立。在一個(gè)特別優(yōu)選的實(shí)施例中,頂點(diǎn)著色器編譯器做到這樣。因此,在ー個(gè)優(yōu)選的實(shí)施例中,頂點(diǎn)著色器編譯器被配置成在它編譯頂點(diǎn)著色器代碼時(shí),對(duì)于每個(gè)頂點(diǎn)著色器輸出屬性檢測(cè)其值是否要直接從頂點(diǎn)著色器輸入屬性的值拷貝(即該輸出屬性是否為“貫通”屬性)。這可以通過使用適合這樣做的任何希望的編譯器技術(shù)來完成。在這個(gè)方面,應(yīng)當(dāng)指出的是,盡管優(yōu)選的是在本發(fā)明中適當(dāng)?shù)刈R(shí)別和處置頂點(diǎn)著色器輸出屬性值為頂點(diǎn)著色器輸入屬性值的拷貝的每種情況,但是申請(qǐng)人已經(jīng)認(rèn)識(shí)到,也許并非總是可能的是,標(biāo)識(shí)何時(shí)頂點(diǎn)著色器輸出屬性值是頂點(diǎn)著色器輸入屬性值的拷貝的機(jī)制在其操作中完全精確或可靠。例如,在頂點(diǎn)著色器編譯器正用于這樣做的情況下,情況可能是(并且的確典型地將是)該編譯器將不能夠?qū)τ谒兄鞒绦蚨祭硐氲貥?biāo)識(shí)該特性。為了對(duì)此進(jìn)行解釋,在一個(gè)特別優(yōu)選的實(shí)施例中,配置和構(gòu)造用于標(biāo)識(shí)其中頂點(diǎn)著色器輸出屬性值是頂點(diǎn)著色器輸入屬性值的拷貝的情形的機(jī)制,以便給出保守的結(jié)果,即“選擇穩(wěn)妥的做法”。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,這樣布置,使得識(shí)別其中頂點(diǎn)著色器輸出屬性值是頂點(diǎn)著色器輸入屬性值的拷貝的情形時(shí)的任何錯(cuò)誤應(yīng)當(dāng)使得系統(tǒng)將在情況如此時(shí)無法檢測(cè),而不是在事實(shí)上“貫通”情形不存在時(shí)確定“貫通”情形存在。因此,系統(tǒng)優(yōu)選地被配置成使得識(shí)別其中頂點(diǎn)著色器輸出屬性值是頂點(diǎn)著色器輸入屬性值的拷貝的情形時(shí)的任何錯(cuò)誤都是在事實(shí)上情況如此時(shí)無法檢測(cè)的錯(cuò)誤。這將具有系統(tǒng)針對(duì)所有情形都行為正確的效果(但是潛在地錯(cuò)失以本發(fā)明的方式優(yōu)化和優(yōu)選地操作的ー些機(jī)會(huì))。在這里,還應(yīng)當(dāng)指出的是,相應(yīng)地,以其中標(biāo)識(shí)“貫通”屬性或情形(即其中確定頂點(diǎn)著色器輸出屬性值是頂點(diǎn)著色器輸入屬性值的拷貝)的特定方式引用本發(fā)明的操作涉及其中系統(tǒng)(例如編譯器)標(biāo)識(shí)了 “貫通”情形的那些情形。頂點(diǎn)著色器可以被控制為在以任何適當(dāng)且希望的方式并且在系統(tǒng)的任何適當(dāng)?shù)碾A段處和處理器中識(shí)別了“貫通”輸入的情況下不產(chǎn)生輸出值。再一次地,在ー個(gè)特別優(yōu)選的實(shí)施例中,頂點(diǎn)著色器編譯器做到這樣。因此,在一個(gè)優(yōu)選的實(shí)施例中,頂點(diǎn)著色器編譯器被配置成在檢測(cè)到“貫通”輸入(例如“貫通”屬性)時(shí)省略在別的情況下將使得頂點(diǎn)著色器處理輸入屬性值以產(chǎn)生拷貝的輸出屬性值的代碼。再一次地,這可以通過使用適合這樣做的任何希望的編譯器技術(shù)來完成。在以任何適當(dāng)且希望的方式標(biāo)識(shí)了“貫通”輸入的情況下,可以類似地使得后續(xù)圖形處理階段使用頂點(diǎn)著色器輸入屬性值。優(yōu)選地,使得該處理階段(例如片段著色器)加載頂點(diǎn)著色器輸入屬性值而不是頂點(diǎn)著色器輸出值。在一個(gè)特別優(yōu)選的實(shí)施例中,用于圖形處理階段的加載指令被配置成使得該階段從頂點(diǎn)著色器輸入屬性值而不是頂點(diǎn)著色器輸出屬性值中加載要處理的值。因此,在ー個(gè)特別優(yōu)選的實(shí)施例中,用于圖形處理階段(例如以及優(yōu)選地片段著色器)的加載指令能夠使得該圖形處理階段加載頂點(diǎn)著色器輸入屬性值或者頂點(diǎn)著色器輸出屬性值。優(yōu)選地,這通過規(guī)定其值要被加載以供處理的屬性是否為頂點(diǎn)著色器輸入屬性(從而其值應(yīng)當(dāng)從頂點(diǎn)著色器輸入屬性值中檢索)或者頂點(diǎn)著色器輸出屬性(從而其值應(yīng)當(dāng)從頂點(diǎn)著色器輸出屬性值中檢索)的加載指令來實(shí)現(xiàn)。例如加載指令的這種配置可以由用于所討論的圖形處理階段的編譯器(從而由例 如片段著色器編譯器)完成。然而,由于這可能因而要求在編譯諸如片段著色器之類的其他圖形處理階段之前編譯頂點(diǎn)著色器,因而在ー個(gè)特別優(yōu)選的實(shí)施例中,著色器鏈接器(其將這些階段一起鏈接成ー個(gè)著色器程序)被配置成修改用于所討論的階段的代碼(例如加載指令),使得該階段在標(biāo)識(shí)了 “貫通”情形時(shí)將讀取適當(dāng)?shù)捻旤c(diǎn)著色器輸入屬性(值)。(如本領(lǐng)域中已知的,著色器鏈接器操作例如典型地將片段著色器的每個(gè)輸入屬性與對(duì)應(yīng)的頂點(diǎn)著色器輸出屬性匹配。在本發(fā)明中,在“貫通”屬性存在的情況下,優(yōu)選地改為將該操作修改成將適當(dāng)?shù)钠沃鬏斎雽傩枣溄拥巾旤c(diǎn)著色器輸入屬性。)。產(chǎn)生和/或修改適當(dāng)?shù)膱D形處理階段代碼(例如加載指令)的需要可以以任何希望的且適當(dāng)?shù)姆绞阶R(shí)別。在一個(gè)特別優(yōu)選的實(shí)施例中,產(chǎn)生指示頂點(diǎn)著色器輸出屬性的值將是頂點(diǎn)著色器輸入屬性的直接拷貝以及它們將是哪個(gè)輸入屬性的值的拷貝的元信息,并且優(yōu)選地該元信息然后用來觸發(fā)諸如片段著色器之類的ー個(gè)或多個(gè)后續(xù)圖形處理階段以便將頂點(diǎn)著色器輸入值用于所討論的輸出屬性(而不是尋找頂點(diǎn)著色器輸出屬性值)。元信息優(yōu)選地由頂點(diǎn)著色器編譯器優(yōu)選地在其識(shí)別(如上面所討論的)“貫通”屬性的存在時(shí)產(chǎn)生。因此,在一個(gè)優(yōu)選的實(shí)施例中,頂點(diǎn)著色器編譯器被配置成在與著色器代碼關(guān)聯(lián)的元信息中記錄所討論的頂點(diǎn)著色器輸出屬性是頂點(diǎn)著色器輸入屬性的拷貝以及它是哪個(gè)輸入屬性的拷貝。類似地,在一個(gè)特別優(yōu)選的實(shí)施例中,著色器鏈接器被配置成識(shí)別該元信息并且對(duì)此響應(yīng)以修改用于所討論的階段的代碼(例如加載指令),使得該階段將讀取對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性(值)。除了在標(biāo)識(shí)了貫通屬性的情況下控制諸如片段著色器之類的后續(xù)圖形處理階段以便讀取頂點(diǎn)著色器輸入屬性值之外,優(yōu)選地也向后續(xù)圖形處理階段提供允許它訪問和讀取它所需的頂點(diǎn)著色器輸入屬性的特定值的數(shù)據(jù)。這可以以任何希望且適當(dāng)?shù)姆绞酵瓿?。在一個(gè)特別優(yōu)選的實(shí)施例中,索引機(jī)制用來檢索適當(dāng)?shù)膶傩灾怠W顑?yōu)選地,圖形處理器的所有著色器階段使用索引布置以便標(biāo)識(shí)從何處讀取(以及優(yōu)選地往何處存儲(chǔ))屬性值。因此,頂點(diǎn)著色器和片段著色器等等優(yōu)選地被提供并且使用適當(dāng)?shù)乃饕员銖拇鎯?chǔ)適當(dāng)?shù)膶傩灾邓诘拇鎯?chǔ)器中檢索適當(dāng)?shù)膶傩灾怠@?,頂點(diǎn)著色器將執(zhí)行加載特定輸入屬性值以供處理的指令,并且該指令將包括或指示允許頂點(diǎn)著色器從存儲(chǔ)器中檢索適當(dāng)?shù)膶傩灾档乃饕?。類似地,片段著色器將?zhí)行加載特定的例如頂點(diǎn)著色的輸出屬性值以供處理的指令,并且該指令將包括或指示允許片段著色器從存儲(chǔ)器中檢索適當(dāng)?shù)妮敵鰧傩灾档挠糜谒懻摰膱D元的每個(gè)轉(zhuǎn)角頂點(diǎn)的索引。優(yōu)選地,根據(jù)其與哪個(gè)頂點(diǎn)或?qū)嵗?在使用實(shí)例化模式的情況下)有關(guān)而索引輸入屬性值(頂點(diǎn)著色器輸入屬性值)。因此,在每頂點(diǎn)基礎(chǔ)上定義的頂點(diǎn)著色器輸入屬性值優(yōu)選地在存儲(chǔ)器中參照它們與之有關(guān)的頂點(diǎn)(即使用(輸入)頂點(diǎn)索引)而被索引。類似地,在每實(shí)例基礎(chǔ)上定義的頂點(diǎn)著色器輸入屬性值優(yōu)選地參照它們與之有關(guān)的實(shí)例(即使用(輸入)實(shí)例索引)而被索引。每實(shí)例屬性也可以將實(shí)例索引除以定義的實(shí)例除數(shù)以便使得(在除數(shù)大于I的情況下)該值針對(duì)該數(shù)量的實(shí)例而被重復(fù)。頂點(diǎn)著色器的輸出屬性值優(yōu)選地可以使用“展開的”輸出索引 而進(jìn)行索引。這是因?yàn)楸M管通常對(duì)于每個(gè)頂點(diǎn)對(duì)于每個(gè)依賴于頂點(diǎn)的輸入屬性存在僅僅ー個(gè)頂點(diǎn)著色器輸入屬性值并且對(duì)于姆個(gè)實(shí)例對(duì)于姆個(gè)依賴于實(shí)例的輸入屬性存在一個(gè)頂點(diǎn)著色器輸入屬性值,但是頂點(diǎn)著色器的輸出將在正常過程中“展開”或“放大”以便對(duì)于每個(gè)頂點(diǎn)對(duì)于每個(gè)實(shí)例(對(duì)于每個(gè)單獨(dú)的頂點(diǎn)和實(shí)例組合)提供對(duì)于每個(gè)輸出屬性的単獨(dú)的輸出屬性值。因此,頂點(diǎn)著色器輸出屬性值優(yōu)選地可以對(duì)于用于頂點(diǎn)著色器輸入屬性值的頂點(diǎn)索引和實(shí)例索引使用不同的索引布置。頂點(diǎn)著色器使用的輸出索引(當(dāng)存儲(chǔ)其輸出的頂點(diǎn)著色的屬性值時(shí))和頂點(diǎn)著色器使用的輸入索引可以通過每頂點(diǎn)/實(shí)例組合發(fā)起ー個(gè)頂點(diǎn)著色器線程例如作為頂點(diǎn)著色器執(zhí)行功能的一部分而產(chǎn)生。因此,在正常過程中,諸如片段著色器之類的后續(xù)圖形處理階段優(yōu)選地在檢索頂點(diǎn)著色器的輸出屬性值以供處理時(shí)使用“展開的”輸出索引。然而,在本發(fā)明中,在標(biāo)識(shí)了“貫通”情形的情況下,那么如上面所討論的,后續(xù)圖形處理階段將訪問頂點(diǎn)著色器輸入屬性值而不是頂點(diǎn)著色器輸出屬性值。在這種情況下,因此優(yōu)選地向諸如片段著色器之類的后續(xù)圖形處理階段提供允許它檢索并且使用適當(dāng)?shù)?ー個(gè)或多個(gè))頂點(diǎn)著色器輸入屬性值的一個(gè)或多個(gè)適當(dāng)?shù)乃饕?。如果情況如此,那么可能的是將圖形處理系統(tǒng)配置成能夠根據(jù)需要向諸如片段著色器之類的后續(xù)圖形處理階段以及為了這些后續(xù)圖形處理階段直接使用而提供用于(一個(gè)或多個(gè))輸入屬性值的適當(dāng)?shù)捻旤c(diǎn)索引或?qū)嵗饕?。然而,在一個(gè)特別優(yōu)選的實(shí)施例中,圖形處理系統(tǒng)被配置成向后續(xù)圖形處理階段提供可以用來如上面所討論的檢索次級(jí)(頂點(diǎn)著色器輸出)屬性值的優(yōu)選地處干“展開的”輸出索引形式的単一形式的輸出索引,其中用于輸入屬性值的任何其他形式的索引(例如以及優(yōu)選地如上面所討論的頂點(diǎn)索引或?qū)嵗饕?于是在需要時(shí)可以從并且從該輸出索引中導(dǎo)出。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,向諸如片段著色器之類的后續(xù)圖形處理階段提供“展開的”輸出索引,如果需要的話,可以從該“展開的”輸出索引導(dǎo)出用于輸入屬性值的適當(dāng)?shù)乃饕?即優(yōu)選地頂點(diǎn)索引或?qū)嵗饕?。這于是意味著僅僅單一形式的索引(即輸出的“展開的”索引)需要提供給后續(xù)圖形處理階段(而不是要求這些階段支持并且潛在地被提供多種形式的索引)。而且,使用輸出的展開的索引作為使用的索引形式是有利的,因?yàn)橥ǔT撔问降乃饕龑⒈忍峁├珥旤c(diǎn)索引和實(shí)例索引二者占用更少的存儲(chǔ)空間。
“展開的”輸出索引優(yōu)選地通過圖形處理階段要執(zhí)行的加載(或存儲(chǔ))屬性指令提供和/或指示。在這些布置中,用于輸入屬性值的(ー個(gè)或多個(gè))索引可以以任何適當(dāng)?shù)那蚁M姆绞綇奶峁┙o后續(xù)圖形處理階段的輸出索引中導(dǎo)出。它們優(yōu)選地可從(且從)輸出索引中以預(yù)定的方式導(dǎo)出。在一個(gè)特別優(yōu)選的實(shí)施例中,可以從提供給后續(xù)圖形處理階段的輸出的“展開的”索引中導(dǎo)出的索引包括如上面所討論的頂點(diǎn)索引和實(shí)例索引。最優(yōu)選地,提供給后續(xù)圖形處理階段的輸出的“展開的”索引以預(yù)定的方式從(一個(gè)或多個(gè))輸入屬性值的實(shí)例索引和/或頂點(diǎn)索引中導(dǎo)出,頂點(diǎn)著色器處理(或者將處理)所述輸入屬性值以便產(chǎn)生相關(guān)輸出的頂點(diǎn)著色的輸出屬性值。這于是意味著通過反轉(zhuǎn)輸出索引生成操作,可以檢索對(duì)應(yīng)的頂點(diǎn)索引或?qū)嵗饕?換言之,申請(qǐng)人認(rèn)識(shí)到,如果以適當(dāng)?shù)姆绞綇亩x的輸入屬性值索引中導(dǎo)出輸出的展開的索引,那么可以分解該輸出索引以便提供對(duì)應(yīng)的輸入屬性值索引,從而提供用于檢索輸入屬性值索引而無需直接規(guī)定它們的機(jī) 制。)。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,以預(yù)定的方式從對(duì)于其定義對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值的頂點(diǎn)和實(shí)例的頂點(diǎn)索引和實(shí)例索引產(chǎn)生在后續(xù)圖形處理階段要處理頂點(diǎn)著色器產(chǎn)生的輸出屬性值時(shí)提供給后續(xù)圖形處理階段的索引。在一個(gè)特別優(yōu)選的實(shí)施例中,頂點(diǎn)索引和實(shí)例索引之一(以及優(yōu)選地頂點(diǎn)索引)可以借助于輸出索引值上的取模運(yùn)算從輸出索引中導(dǎo)出,并且頂點(diǎn)索引和實(shí)例索引中的另ー個(gè)(以及優(yōu)選地實(shí)例索引)可以通過對(duì)輸出索引值執(zhí)行除法運(yùn)算而從輸出索引中導(dǎo)出。最優(yōu)選地,如下導(dǎo)出要使用的輸出索引值(提供給片段著色器等等的索引)
輸出索引值=(頂點(diǎn)索引)+ (實(shí)例索引)X (填充的實(shí)例大小)
其中“填充的實(shí)例大小”為設(shè)定的(選擇的)等于或大于每實(shí)例頂點(diǎn)數(shù)的值。這于是意味著(輸入)頂點(diǎn)索引可以通過取模運(yùn)算從輸出索引值獲得
頂點(diǎn)索引=(輸出索引值)模(填充的實(shí)例大小)
并且(輸入)實(shí)例索引可以通過除法運(yùn)算從輸出索引值獲得
實(shí)例索引=向下取整((輸出索引值)/ (填充的實(shí)例大小))。其效果在于,針對(duì)例如給定輸入索引的每個(gè)實(shí)例產(chǎn)生的每個(gè)輸出索引在經(jīng)受上面的取模運(yùn)算時(shí)將返回相同的頂點(diǎn)索引,并且針對(duì)給定輸入實(shí)例的每個(gè)頂點(diǎn)產(chǎn)生的每個(gè)輸出索引在經(jīng)受上面的除法運(yùn)算時(shí)將返回相同的實(shí)例索引。因此,片段著色器例如可以針對(duì)將是輸入屬性值的拷貝的每個(gè)輸出屬性值(適當(dāng)?shù)?導(dǎo)出用于檢索適當(dāng)?shù)妮斎雽傩灾档南嗤饕?頂點(diǎn)索引或?qū)嵗饕?(即使每個(gè)不同的“拷貝”輸出屬性值將具有不同的“輸出索引”值)。“填充的實(shí)例大小”應(yīng)當(dāng)至少等于每實(shí)例的頂點(diǎn)數(shù)(其將例如針對(duì)所討論的繪圖調(diào)用進(jìn)行定義),但是它不必準(zhǔn)確地為該數(shù)。優(yōu)選地,將它設(shè)定為在硬件中執(zhí)行取模運(yùn)算時(shí)有效地使用的值(因?yàn)檫@于是與完全通用的模所需的相比,允許更簡單的模電路)。最優(yōu)選地,將其向上取整為(相対)容易取模的下一個(gè)更大的或相等的值(高于每實(shí)例的頂點(diǎn)數(shù))。在圖形處理系統(tǒng)使用對(duì)于特定屬性允許每實(shí)例輸入值具有實(shí)例索引的另外的除數(shù)值的用于實(shí)例化的API機(jī)制的情況下,那么優(yōu)選地在索引這適用的任何每實(shí)例輸入屬性值時(shí)相應(yīng)地使用這種另外的除數(shù)機(jī)制(其中當(dāng)導(dǎo)出實(shí)例索引以便用來從提供給例如片段著色器的輸出的展開的索引中檢索那些屬性值時(shí)優(yōu)選地簡單地將所述另外的除數(shù)乘上除數(shù)值(填充的實(shí)例大小))。因此,當(dāng)片段著色器(或者其他后續(xù)圖形處理階段)要處理頂點(diǎn)著色器輸入屬性值(即“貫通”情形存在)時(shí),例如片段著色器將被引導(dǎo)成加載頂點(diǎn)著色器輸入屬性值并且被提供輸出索引值,其然后從該輸出索引值導(dǎo)出用來檢索希望的頂點(diǎn)著色器輸入屬性值的索弓I。在上面討論的其中可以使用不同的操作以便從提供的輸出索引中導(dǎo)出希望的索引的布置中,圖形處理階段也將需要被告知要使 用哪個(gè)索引導(dǎo)出操作(以及要在該操作中使用的任何值)。雖然在這個(gè)方面諸如片段著色器之類的圖形處理階段的加載指令有可能包括導(dǎo)出用來檢索相關(guān)頂點(diǎn)著色器輸入屬性值的索引所需的所有信息,但是在ー個(gè)特別優(yōu)選的實(shí)施例中,要執(zhí)行的索引導(dǎo)出操作以及優(yōu)選地該操作所需的任何數(shù)據(jù)(值)優(yōu)選地通過與加載指令本身分離的元信息指示和/或作為該元信息而提供。該元信息優(yōu)選地指示提供給片段著色器等等的輸出索引是否應(yīng)當(dāng)經(jīng)受如上面所討論的取?;虺ㄟ\(yùn)算以便導(dǎo)出頂點(diǎn)索引或?qū)嵗饕怨z索(ー個(gè)或多個(gè))屬性值時(shí)使用。最優(yōu)選地,該元信息也指示或者包括用來導(dǎo)出希望的索引的適當(dāng)?shù)哪;虺龜?shù)值(即填充的實(shí)例大小以及實(shí)例除數(shù)(如果必要的話))。在一個(gè)特別優(yōu)選的實(shí)施例中,元信息與所討論的屬性關(guān)聯(lián)。于是,無論何時(shí)處理屬性的值,優(yōu)選地讀取與該屬性關(guān)聯(lián)的元信息以便確定用來確定用于檢索屬性值本身的索引的索引導(dǎo)出方法(如果有的話)。在一個(gè)特別優(yōu)選的實(shí)施例中,該兀信息處于屬性描述符的形式,該屬性描述符優(yōu)選地尤其適當(dāng)?shù)刂甘緦?duì)應(yīng)屬性是否為“除數(shù)”屬性(即應(yīng)當(dāng)對(duì)“展開的”輸出索引使用除法運(yùn)算以便導(dǎo)出要使用的索弓I)或者“摸”屬性(即應(yīng)當(dāng)對(duì)“展開的”輸出索引使用除法運(yùn)算以便導(dǎo)出要使用的索弓I)或者“正常的”或“線性的”屬性(即應(yīng)當(dāng)直接使用“展開的”輸出索弓I)以及對(duì)應(yīng)的除數(shù)或模值(填充的實(shí)例大小(以及實(shí)例除數(shù)(如果必要的話)))。在上面討論的優(yōu)選的布置中,每頂點(diǎn)定義的屬性將定義為模值等于填充的實(shí)例大小的模屬性,并且每實(shí)例定義的屬性將定義為除數(shù)值等于填充的實(shí)例大小(如果需要的話,乘以任何需要的實(shí)例除數(shù))的除數(shù)屬性。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,對(duì)于ー個(gè)以及優(yōu)選地每個(gè)頂點(diǎn)著色器輸入屬性產(chǎn)生并且存儲(chǔ)指示如何導(dǎo)出允許檢索希望的輸入屬性值的正確索引的優(yōu)選地處于屬性描述符形式的元信息。然后,后續(xù)圖形處理階段(例如片段著色器)優(yōu)選地使用該元信息導(dǎo)出對(duì)于存儲(chǔ)的頂點(diǎn)著色器輸入屬性值的希望的索引。在一個(gè)特別優(yōu)選的實(shí)施例中,該機(jī)制也由頂點(diǎn)著色器用來訪問其輸入屬性值。因此,頂點(diǎn)著色器的加載屬性指令優(yōu)選地包括或指示關(guān)于所討論的屬性值使用的展開的輸出索引,并且頂點(diǎn)著色器然后根據(jù)與該屬性關(guān)聯(lián)的元信息確定如何處理該索引以便導(dǎo)出用來檢索要處理的輸入屬性值的實(shí)際索引(頂點(diǎn)或?qū)嵗饕?。在一個(gè)特別優(yōu)選的實(shí)施例中,姆個(gè)頂點(diǎn)著色器輸入屬性具有對(duì)應(yīng)的輸入屬性描述符,并且每個(gè)頂點(diǎn)著色器輸出屬性具有對(duì)應(yīng)的輸出屬性描述符。于是,輸入屬性描述符優(yōu)選地由頂點(diǎn)著色器用來正確地訪問其輸入屬性值,并且在存在“貫通”情形的情況下由諸如片段著色器之類的其他圖形處理階段用來訪問頂點(diǎn)著色器輸入屬性值。次級(jí)(頂點(diǎn)著色器輸出)屬性描述符優(yōu)選地由頂點(diǎn)著色器用來確定將其輸出屬性值寫到何處,并且由諸如片段著色器之類的后續(xù)圖形處理階段用來確定何處讀取它們。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,存在包括多個(gè)屬性描述符的元信息陣列,每個(gè)屬性描述符與頂點(diǎn)著色器的相應(yīng)的輸入屬性關(guān)聯(lián)且對(duì)應(yīng),所述屬性描述符尤其是包含允許諸如片段著色器之類的圖形處理階段在其要使用適當(dāng)存儲(chǔ)的相應(yīng)輸入屬性的值時(shí)檢索該頂點(diǎn)著色器輸入屬性。類似地,優(yōu)選地存在包括多個(gè)屬性描述符的元信息陣列,每個(gè)屬性描述符與頂點(diǎn)著色器的相應(yīng)的輸出屬性關(guān)聯(lián)且對(duì)應(yīng)。屬性描述符優(yōu)選地由圖形處理器驅(qū)動(dòng)器在繪圖調(diào)用時(shí)間產(chǎn)生。
可以以任何希望的且適當(dāng)?shù)姆绞街甘疽蓤D形處理階段在其要處理屬性值時(shí)讀取(使用)的相關(guān)元信息(例如屬性描述符)。在一個(gè)特別優(yōu)選的實(shí)施例中,給每個(gè)屬性分配屬性索引,并且這些屬性索引然后用來指示要使用的元信息(屬性描述符)。屬性索引可以方便地由例如頂點(diǎn)著色器編譯器分配。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,通過使用分配給所討論的屬性的屬性索引標(biāo)識(shí)和讀取元信息(屬性描述符)。最優(yōu)選地,將屬性描述符存儲(chǔ)在屬性描述符陣列(或者多個(gè)陣列)中并且通過使用分配給所討論的屬性的屬性索引在其中對(duì)其索引。(在這里,應(yīng)當(dāng)指出的是,由于屬性描述符與特定屬性(而不是特定屬性值)有夫,于是對(duì)于特定著色器程序而言,將存在固定數(shù)量的屬性描述符,而不管任何特定繪圖調(diào)用中繪制的頂點(diǎn)和實(shí)例的數(shù)量如何。)。優(yōu)選地,在對(duì)應(yīng)的加載(或存儲(chǔ))指令中將要使用的元信息(屬性描述符)的屬性索引提供給圖形處理階段。因此,優(yōu)選地存在通過使用定義的屬性索引而索引的元信息陣列。于是,諸如片段著色器之類的圖形處理階段可以使用它接收的屬性索引(例如以及優(yōu)選地在加載或存儲(chǔ)指令中)以便查找元信息,并且然后如果元信息這樣指示的話,則以適當(dāng)?shù)姆绞綇奶峁┑妮敵鏊饕袑?dǎo)出用來檢索要處理的屬性值的實(shí)際索引。在一個(gè)特別優(yōu)選的實(shí)施例中,相對(duì)于為相關(guān)索引的屬性值定義起始(基本)地址的基本存儲(chǔ)(緩沖)地址使用如上面所討論的用來檢索屬性值的諸如實(shí)例索引、頂點(diǎn)索引或者“展開的”索引之類的特定索引。這于是意味著例如通過引用與其有關(guān)的實(shí)例而索引的所有屬性值可以這樣相對(duì)于存儲(chǔ)器中的單個(gè)共同的基本緩沖地址而索引。當(dāng)可以例如相對(duì)于屬性值與之有關(guān)的頂點(diǎn)、實(shí)例或頂點(diǎn)/實(shí)例組合索引時(shí),這簡化了屬性值的加載和存儲(chǔ)及其在存儲(chǔ)器中的組織。在一個(gè)特別優(yōu)選的實(shí)施例中,當(dāng)正在檢索以及將要檢索屬性值時(shí),除了適當(dāng)?shù)乃饕途彌_基本地址之外,使用另外的信息。在一個(gè)特別優(yōu)選的實(shí)施例中,該另外的信息包括與存儲(chǔ)器中(緩沖器中)屬性值的布局有關(guān)的另外的參數(shù)或信息。關(guān)于存儲(chǔ)器中屬性值的布局的該另外的信息優(yōu)選地包括以下所述的ー個(gè)或多個(gè)以及優(yōu)選地全部存儲(chǔ)器中屬性值的間隔的指示(優(yōu)選地處于“步幅(stride)”值的形式),所討論的屬性距某個(gè)或所述基本存儲(chǔ)地址的相對(duì)位置的指示(優(yōu)選地處于“偏移”值的形式),和/或指示屬性的組件數(shù)據(jù)類型和組件數(shù)量的用于屬性值的“類型”指示器。(在一個(gè)優(yōu)選的實(shí)施例中,屬性加載和存儲(chǔ)指令基于規(guī)定的數(shù)據(jù)類型執(zhí)行數(shù)據(jù)格式轉(zhuǎn)換。)。在這些布置中,相應(yīng)地優(yōu)選地向圖形處理階段提供適當(dāng)?shù)木彌_基本地址(和其他信息(在需要的情況下))以用于檢索屬性值,以及用于導(dǎo)出用來檢索(或存儲(chǔ))希望的屬性值的索引的技術(shù)以及必要的任何數(shù)據(jù)的指示。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,優(yōu)選地與諸如步幅、偏移和/或數(shù)據(jù)類型之類的其他數(shù)據(jù)一起向圖形處理階段提供索引和基本存儲(chǔ)地址,據(jù)此圖形處理階段于是導(dǎo)出用來檢索其需要的屬性值的存儲(chǔ)地址。緩沖基本地址等信息可以由加載(或存儲(chǔ))指令直接提供或指示。然而,在ー個(gè)特別優(yōu)選的實(shí)施例中,優(yōu)選地以上面所討論的方式優(yōu)選地以屬性描述符的形式將緩沖基本地址提供為與所討論的屬性關(guān)聯(lián)的元信息。諸如步幅、偏移和數(shù)據(jù)類型之類的其他信息(在使用的情況下)也優(yōu)選地以此形式提供。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,每個(gè)屬性描述符(如上面所討論的)優(yōu)選地也或者改為(并且優(yōu)選地也)優(yōu)選地與諸如步幅、偏移和數(shù)據(jù)類型之類的其他信息一起指示要 在檢索或存儲(chǔ)該屬性的值時(shí)使用的緩沖基本地址(存儲(chǔ)基本地址)。因此,在ー個(gè)特別優(yōu)選的實(shí)施例中,ー個(gè)以及優(yōu)選地每個(gè)屬性描述符尤其指示要在加載(或存儲(chǔ))其關(guān)聯(lián)的屬性的值時(shí)使用的緩沖基本地址和索引導(dǎo)出機(jī)制(以及優(yōu)選地其他的信息,例如步幅、偏移和數(shù)據(jù)類型)。因此,在一個(gè)特別優(yōu)選的實(shí)施例中,對(duì)于ー個(gè)并且優(yōu)選地對(duì)于ー些或者每個(gè)頂點(diǎn)著色器輸入屬性,優(yōu)選地與諸如步幅、偏移和數(shù)據(jù)類型之類的其他信息一起地,產(chǎn)生并且存儲(chǔ)優(yōu)選地處于屬性描述符形式的指示如何導(dǎo)出允許檢索希望的輸入屬性值的適當(dāng)索引以及該索引與之有關(guān)的基本存儲(chǔ)地址的元信息。然后,圖形處理階段(例如片段著色器)優(yōu)選地使用該元信息以便導(dǎo)出存儲(chǔ)的頂點(diǎn)著色器輸入屬性值的存儲(chǔ)地址。次級(jí)屬性(頂點(diǎn)著色器輸出屬性)優(yōu)選地以相同的方式布置,即它們具有優(yōu)選地處于屬性描述符形式的對(duì)應(yīng)關(guān)聯(lián)的元信息,其以針對(duì)上面討論的頂點(diǎn)著色器輸入屬性的情況相同的方式提供索引導(dǎo)出和基本存儲(chǔ)地址信息等等。在一個(gè)特別優(yōu)選的實(shí)施例中,加載(屬性)指令和存儲(chǔ)(屬性)指令以上面討論的方式操作。指示用來導(dǎo)出用于檢索(或存儲(chǔ))希望的屬性值的索引的索引導(dǎo)出過程和/或指示要在以上面討論的方式檢索(或存儲(chǔ))希望的屬性值時(shí)使用的基本存儲(chǔ)地址等等的元信息(例如屬性描述符)的使用是特別有利的,因?yàn)樗缫馕吨撔畔⑴c著色器代碼分離且獨(dú)立。這于是允許例如與不同的元信息(屬性描述符)集合一起使用相同的著色器代碼,并且避免了在元信息控制的參數(shù)(例如存儲(chǔ)器中屬性值的組織)改變時(shí)改變著色器代碼的需要。它也允許相同的機(jī)制用來控制來自頂點(diǎn)著色器的輸入和輸出二者,并且由頂點(diǎn)著色器以及諸如片段著色器之類的后續(xù)圖形處理階段使用。因此,可以相信,在圖形處理系統(tǒng)中例如指示用來導(dǎo)出用于檢索希望的屬性值的索引的索引導(dǎo)出過程和/或指示要用于檢索希望的屬性值的基本存儲(chǔ)地址的與頂點(diǎn)著色器屬性關(guān)聯(lián)的元信息的這種用途可能本身就是新穎和有利的,而不僅僅在標(biāo)識(shí)“貫通”屬性的情況下是新穎和有利的。因此,依照本發(fā)明的第三方面,提供了ー種操作圖形處理系統(tǒng)的方法,該圖形處理系統(tǒng)包括頂點(diǎn)著色階段,該頂點(diǎn)著色階段處理頂點(diǎn)著色階段的輸入屬性值以便產(chǎn)生頂點(diǎn)著色階段的輸出屬性值以供該圖形處理系統(tǒng)的后續(xù)階段使用,該方法包括
將要在加載和/或存儲(chǔ)所討論的屬性的值時(shí)使用的元信息與頂點(diǎn)著色階段的ー個(gè)或多個(gè)屬性關(guān)聯(lián);以及
當(dāng)圖形處理階段要加載和/或存儲(chǔ)頂點(diǎn)著色階段屬性的值時(shí),其首先讀取與該屬性關(guān)聯(lián)的任何元信息并且然后在其加載或存儲(chǔ)該屬性的值時(shí)使用該元信息。依照本發(fā)明的第四方面,提供了ー種圖形處理系統(tǒng),該系統(tǒng)包括
多個(gè)圖形處理階段,其包括頂點(diǎn)著色階段以及頂點(diǎn)著色階段后續(xù)的并且將處理頂點(diǎn)著色階段的輸出的至少ー個(gè)處理階段;其中
頂點(diǎn)著色階段處理頂點(diǎn)著色階段的輸入屬性的值以便產(chǎn)生頂點(diǎn)著色階段的輸出屬性的值以供圖形處理系統(tǒng)的后續(xù)階段使用;并且
圖形處理系統(tǒng)被配置成將要在加載和/或存儲(chǔ)所討論的屬性的值時(shí)使用的元信息與頂點(diǎn)著色階段的ー個(gè)或多個(gè)屬性關(guān)聯(lián);并且
圖形處理階段中的ー個(gè)或多個(gè)被配置成當(dāng)其要加載和/或存儲(chǔ)頂點(diǎn)著色階段屬性的值時(shí),首先讀取與該屬性關(guān)聯(lián)的任何元信息并且然后在其加載或存儲(chǔ)該屬性的值時(shí)使用該兀1目息。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,本發(fā)明的這些方面可以且優(yōu)選地的確包括本文適當(dāng)描述的本發(fā)明的優(yōu)選的和可選的特征中的任何一個(gè)或多個(gè)或者全部。因此,例如元信息優(yōu)選地處于如上面所討論的屬性描述符的形式,其中頂點(diǎn)著色器屬性中的至少ー些和/或全部優(yōu)選地具有對(duì)應(yīng)的屬性描述符。類似地,元信息(屬性描述符)優(yōu)選地由圖形處理器驅(qū)動(dòng)器產(chǎn)生,并且優(yōu)選地在繪圖調(diào)用時(shí)間產(chǎn)生。元信息優(yōu)選地包括指示如何和/或從何處或者至何處存儲(chǔ)和/或加載屬性值的信息。因此,元信息優(yōu)選地包括或者指示允許確定存儲(chǔ)(或者要存儲(chǔ))屬性值的存儲(chǔ)地址的信息。因此,它優(yōu)選地允許在加載(或存儲(chǔ))要確定的屬性的值時(shí)使用索引,這優(yōu)選地通過以下方式實(shí)現(xiàn)在加載(或存儲(chǔ))屬性值時(shí)指示用來導(dǎo)出要使用的索引的過程。最優(yōu)選地,它也指示或者作為代替指示要在加載(或存儲(chǔ))屬性值時(shí)使用的基本存儲(chǔ)地址。如上面所討論的,在一個(gè)特別優(yōu)選的實(shí)施例中,元信息可以并且優(yōu)選地的確指示關(guān)于存儲(chǔ)器中屬性值的布局的另外的信息。這可以例如且優(yōu)選地的確包括存儲(chǔ)器中屬性值的間隔(“步幅”)、所討論的屬性距ー個(gè)或者所述基本存儲(chǔ)地址的相對(duì)位置(“偏移”)等等的指示。如上面所討論的,圖形處理系統(tǒng)的所述至少一個(gè)后續(xù)階段優(yōu)選地被配置成在它要處理頂點(diǎn)著色階段的屬性時(shí)讀取與該屬性關(guān)聯(lián)的元信息,并且如果該元信息這樣指示,那么依照該元信息,優(yōu)選地相對(duì)于該元信息指示的任何基本存儲(chǔ)地址導(dǎo)出要用于檢索屬性值的索引。最優(yōu)選地,圖形系統(tǒng)的階段執(zhí)行指示要處理的屬性的加載屬性指令,并且響應(yīng)于該加載屬性指令,然后讀取與所討論的屬性關(guān)聯(lián)的元信息并且根據(jù)該元信息確定是否以及如何導(dǎo)出要用來檢索所需的屬性值的索引和/或要在檢索所需的屬性值時(shí)使用的基本存儲(chǔ)地址。 優(yōu)選地,至少在要加載頂點(diǎn)著色器屬性值時(shí)使用元信息。其優(yōu)選地在既加載又存儲(chǔ)頂點(diǎn)著色器屬性值時(shí)使用(并且因而優(yōu)選地,頂點(diǎn)著色器輸入和頂點(diǎn)著色器輸出屬性ニ者可以具有與其關(guān)聯(lián)的元信息)。類似地,優(yōu)選地至少ー個(gè)后續(xù)圖形處理階段(優(yōu)選地片段著色器)使用元信息。最優(yōu)選地,頂點(diǎn)著色器也使用它。本發(fā)明也擴(kuò)展到元數(shù)據(jù)的生成。因此,依照本發(fā)明的第五方面,提供了ー種操作圖形處理系統(tǒng)的方法,該圖形處理系統(tǒng)包括頂點(diǎn)著色階段,該頂點(diǎn)著色階段處理頂點(diǎn)著色階段的輸入屬性值以便產(chǎn)生頂點(diǎn)著色階段的輸出屬性值以供該圖形處理系統(tǒng)的后續(xù)階段使用,該方法包括
將要在加載和/或存儲(chǔ)所討論的屬性的值時(shí)使用的元信息與頂點(diǎn)著色階段的ー個(gè)或多個(gè)屬性關(guān)聯(lián)。
依照本發(fā)明的第六方面,提供了ー種圖形處理系統(tǒng),該系統(tǒng)包括
多個(gè)圖形處理階段,其包括頂點(diǎn)著色階段以及頂點(diǎn)著色階段后續(xù)的并且將處理頂點(diǎn)著色階段的輸出的至少ー個(gè)處理階段;其中
頂點(diǎn)著色階段處理頂點(diǎn)著色階段的輸入屬性的值以便產(chǎn)生頂點(diǎn)著色階段的輸出屬性的值以供圖形處理系統(tǒng)的后續(xù)階段使用;并且
圖形處理系統(tǒng)被配置成將要在加載和/或存儲(chǔ)所討論的屬性的值時(shí)使用的元信息與頂點(diǎn)著色階段的ー個(gè)或多個(gè)屬性關(guān)聯(lián)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,本發(fā)明的這些方面可以且優(yōu)選地的確包括本文適當(dāng)描述的本發(fā)明的優(yōu)選的和可選的特征中的任何一個(gè)或多個(gè)或者全部。因此,元信息優(yōu)選地采取上述形式,并且優(yōu)選地由用于圖形處理系統(tǒng)的圖形處理器的驅(qū)動(dòng)器優(yōu)選地在繪圖調(diào)用時(shí)間產(chǎn)生。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,諸如片段著色器之類的后續(xù)圖形處理階段可以并且將針對(duì)它們的正常處理且以正常的方式(除本發(fā)明引入的變化之外)使用屬性值(頂點(diǎn)著色器輸入和/或頂點(diǎn)著色器輸出屬性值)。例如,在片段著色器的情況下,片段著色器將使用屬性值再現(xiàn)一個(gè)或多個(gè)圖元以便產(chǎn)生例如代表用于顯示的幀的再現(xiàn)輸出值集合。然后,這些輸出值可以導(dǎo)出到外部存儲(chǔ)器以供存儲(chǔ)和使用,例如導(dǎo)出到顯示器的幀緩沖器。因此,本發(fā)明優(yōu)選地進(jìn)一歩包括適當(dāng)?shù)厥褂庙旤c(diǎn)著色器輸出屬性值或者對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值再現(xiàn)屬性值與之相關(guān)的ー個(gè)或多個(gè)圖元以便產(chǎn)生代表圖形處理系統(tǒng)的希望的輸出(例如用于顯示的幀)的輸出值集合。再現(xiàn)過程可以包括本領(lǐng)域中已知的例如對(duì)屬性值進(jìn)行混合、片段著色、紋理化等等。類似地,本發(fā)明優(yōu)選地進(jìn)一歩包括ー個(gè)或多個(gè)后續(xù)圖形處理階段,其適當(dāng)?shù)厥褂庙旤c(diǎn)著色器輸出屬性值或者對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值以便產(chǎn)生用于從圖形處理系統(tǒng)輸出的輸出數(shù)據(jù)值集合。在一個(gè)優(yōu)選的實(shí)施例中,后續(xù)圖形處理階段包括片段著色器。在這種情況下,本發(fā)明優(yōu)選地進(jìn)ー步包括圖形處理系統(tǒng)的片段著色器,其適當(dāng)?shù)厥褂庙旤c(diǎn)著色器輸出屬性值或者對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值以便產(chǎn)生片段著色的輸出數(shù)據(jù)值集合,其用于例如以及優(yōu)選地對(duì)由圖形處理系統(tǒng)產(chǎn)生的諸如要顯示的幀之類的輸出的位置采樣。然后,輸出的例如片段著色的數(shù)據(jù)值優(yōu)選地導(dǎo)出到外部(例如主要)存儲(chǔ)器以供存儲(chǔ)和使用,例如導(dǎo)出到顯示器的幀緩沖器。如本領(lǐng)域中已知的,例如根據(jù)圖形處理系統(tǒng)的性質(zhì)和配置,所述數(shù)據(jù)值可以在導(dǎo)出到主要存儲(chǔ)器之前在圖形處理器本地臨時(shí)地存儲(chǔ)到例如一個(gè)或多個(gè)圖塊緩沖器中。本發(fā)明可以用于可以使用圖形處理流水線以產(chǎn)生的所有形式的輸出,例如用于顯示的幀、再現(xiàn)至紋理輸出等等。應(yīng)當(dāng)理解的是,由于圖形處理流水線產(chǎn)生(再現(xiàn))的輸出典型地由多個(gè)圖元(以及在基于圖塊的系統(tǒng)中,由圖塊)構(gòu)成,因而在實(shí)踐中對(duì)于構(gòu)成輸出的每個(gè)圖元(和圖塊)重復(fù)本發(fā)明,使得最終對(duì)于需要的輸出的每個(gè)采樣點(diǎn)產(chǎn)生適當(dāng)?shù)脑佻F(xiàn)的片段數(shù)據(jù)集合。在一個(gè)特別優(yōu)選的實(shí)施例中,在產(chǎn)生并且輸出例如寫到用于顯示設(shè)備的幀緩沖器的再現(xiàn)的片段數(shù)據(jù)的單個(gè)圖形處理平臺(tái)上執(zhí)行本發(fā)明的各種功能。本發(fā)明可以在任何適當(dāng)?shù)南到y(tǒng)中實(shí)現(xiàn),所述系統(tǒng)例如適當(dāng)?shù)嘏渲玫幕谖⑻幚砥鞯南到y(tǒng)。在一個(gè)優(yōu)選的實(shí)施例中,本發(fā)明在基于計(jì)算機(jī)和/或微處理器的系統(tǒng)中實(shí)現(xiàn)。
本發(fā)明的各種功能可以以任何希望的且適當(dāng)?shù)姆绞綀?zhí)行。例如,本發(fā)明的功能可以根據(jù)需要在硬件或軟件中實(shí)現(xiàn)。因此,例如本發(fā)明的各種功能元素和“裝置”可以包括可操作來執(zhí)行各種功能等等的一個(gè)或多個(gè)適當(dāng)?shù)奶幚砥?、一個(gè)或多個(gè)控制器、功能単元、電路、處理邏輯、微處理器布置等等,例如適當(dāng)?shù)膶S糜布?或可被編程為以希望的方式操作的可編程硬件元件。因此,頂點(diǎn)著色器、片段著色器和任何其他圖形處理階段可以根據(jù)需要且以任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),并且可以分別執(zhí)行任何希望的且適當(dāng)?shù)捻旤c(diǎn)著色或者片段著色等功能。類似地,可以以任何適當(dāng)且希望的方式定義和存儲(chǔ)各種輸入和輸出屬性值、元信息、屬性描述符等等。在這里,也應(yīng)當(dāng)指出的是,本領(lǐng)域技術(shù)人員將會(huì)理解,可以在給定處理器上并行地復(fù)制和/或執(zhí)行本發(fā)明的各種功能等。因此,例如如上面所討論的,頂點(diǎn)著色階段可以包括并行地操作的多個(gè)單獨(dú)的頂點(diǎn)著色器。本發(fā)明適用于任何適當(dāng)形式或配置的圖形處理器和再現(xiàn)器,例如以及優(yōu)選地具有“流水線”再現(xiàn)布置的處理器。其特別地適用于基于圖塊的圖形處理器和圖形處理系統(tǒng)。因此,本發(fā)明擴(kuò)展到包括這里描述的本發(fā)明的任何ー個(gè)或多個(gè)方面的裝置的或者依照本發(fā)明的任何ー個(gè)或多個(gè)方面的方法操作的圖形處理器和圖形處理平臺(tái)。受執(zhí)行上面討論的特定功能所需的任何硬件的影響,這樣的圖形處理器可以在別的情況下包括圖形處理器所包括的通常的功能単元等等中的任何一個(gè)或多個(gè)或者全部。本領(lǐng)域技術(shù)人員也應(yīng)當(dāng)理解的是,所描述的本發(fā)明的所有方面和實(shí)施例可以適當(dāng)?shù)匕ㄟ@里描述的優(yōu)選的和可選的特征中的任何一個(gè)或多個(gè)或者全部。依照本發(fā)明的方法可以至少部分地使用軟件(例如計(jì)算機(jī)程序)而實(shí)現(xiàn)。因此,可以看出,當(dāng)從另外的方面來看時(shí),本發(fā)明提供了 計(jì)算機(jī)軟件,其特別適于在安裝到數(shù)據(jù)處理裝置上時(shí)執(zhí)行這里描述的方法;計(jì)算機(jī)程序元件,其包括用于當(dāng)該程序元件運(yùn)行在數(shù)據(jù)處理裝置上時(shí)執(zhí)行這里描述的方法的計(jì)算機(jī)軟件代碼部分;以及計(jì)算機(jī)程序,其包括當(dāng)程序運(yùn)行在數(shù)據(jù)處理系統(tǒng)上時(shí)適于執(zhí)行這里描述的ー種或多種方法的所有步驟的代碼裝置。數(shù)據(jù)處理系統(tǒng)可以是微處理器、可編程FPGA (現(xiàn)場(chǎng)可編程門陣列)等等。本發(fā)明也擴(kuò)展到包括這樣的軟件的計(jì)算機(jī)軟件載體,其在用來操作圖形處理器、再現(xiàn)器或者包括數(shù)據(jù)處理裝置的微處理器系統(tǒng)時(shí)與所述數(shù)據(jù)處理裝置結(jié)合使得所述處理器、再現(xiàn)器或系統(tǒng)執(zhí)行本發(fā)明的方法的步驟。這樣的計(jì)算機(jī)軟件載體可以是諸如ROM芯片、CD ROM或盤之類的物理存儲(chǔ)介質(zhì),或者可以是諸如導(dǎo)線上的電子信號(hào)、光學(xué)信號(hào)或者例如到衛(wèi)星等等的無線電信號(hào)等等之類的信號(hào)。應(yīng)當(dāng)進(jìn)一歩理解的是,不是本發(fā)明方法的所有步驟都必須由計(jì)算機(jī)軟件執(zhí)行,并且從而從進(jìn)ー步廣闊的方面來看,本發(fā)明提供了計(jì)算機(jī)軟件以及安裝在計(jì)算機(jī)軟件載體上用于執(zhí)行這里闡述的方法的至少ー個(gè)步驟的這種軟件。因此,本發(fā)明可以適當(dāng)?shù)貙?shí)施為供計(jì)算機(jī)系統(tǒng)使用的計(jì)算機(jī)程序產(chǎn)品。這樣的實(shí)現(xiàn)方式可以包括固定在諸如非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)之類的有形介質(zhì)上的一系列計(jì)算機(jī)可讀指令,所述介質(zhì)例如磁盤、CD R0M、R0M或者硬盤。它也可以包括可經(jīng)由調(diào)制解調(diào)器或其他接ロ設(shè)備通過包括但不限于光學(xué)或模擬通信線的有形介質(zhì)或者使用包括但不限于微波、紅外或其他傳輸技術(shù)的無線技術(shù)無形地傳輸?shù)接?jì)算機(jī)系統(tǒng)的一系列計(jì)算機(jī)可讀指令。該系列計(jì)算機(jī)可讀指令實(shí)施本文中先前描述的全部或部分功能。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以以供許多計(jì)算機(jī)架構(gòu)或操作系統(tǒng)使用的若干編程 語言書寫這樣的計(jì)算機(jī)可讀指令。此外,可以使用現(xiàn)在的或未來的、包括但不限于半導(dǎo)體、磁性或光學(xué)的任何存儲(chǔ)技術(shù)存儲(chǔ)這樣的指令,或者使用現(xiàn)在的或未來的、包括但不限于光、紅外或微波的任何通信技術(shù)傳輸這樣的指令??梢栽O(shè)想,這樣的計(jì)算機(jī)程序產(chǎn)品可以作為具有伴隨的打印或電子文檔的可移除介質(zhì)而分發(fā),例如系統(tǒng)ROM或固定盤上的預(yù)裝有計(jì)算機(jī)系統(tǒng)的緊縮套裝軟件,或者通過網(wǎng)絡(luò)(例如因特網(wǎng)或萬維網(wǎng))從服務(wù)器或電子公告板分發(fā)。
現(xiàn)在將僅通過實(shí)例的方式并且參照附圖描述本發(fā)明的若干優(yōu)選的實(shí)施例,在附圖中
圖I示意性地示出了依照本發(fā)明的圖形處理系統(tǒng)的實(shí)施例;以及 圖2-7示意性地示出了本發(fā)明的實(shí)施例的操作。
具體實(shí)施例方式圖I示意性地示出了可以以本發(fā)明的方式操作的基于圖塊的圖形處理系統(tǒng)。該圖示出了圖形處理系統(tǒng)的與當(dāng)前實(shí)施例的操作有關(guān)的主要元件。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,可以存在圖形處理系統(tǒng)的未在圖I中示出的其他元件。如圖I中所示,圖形處理系統(tǒng)包括三個(gè)主要的功能単元(處理階段)頂點(diǎn)著色器20,平鋪器(tiler)21以及光柵器和片段著色器22。這些處理階段使用并且處理存儲(chǔ)在各種數(shù)據(jù)陣列和緩沖器中的數(shù)據(jù),所述數(shù)據(jù)陣列和緩沖器包括索引緩沖器23、繪圖調(diào)用描述符24、初級(jí)屬性描述符陣列25、頂點(diǎn)緩沖器(初級(jí)屬性陣列)26、次級(jí)屬性描述符陣列27、變化量(varyings)緩沖器(第二屬性陣列)28、位置緩沖器29以及多邊形列表陣列30。(在圖I中,圓弧形框代表圖形處理系統(tǒng)的硬件単元(處理階段),并且矩形框?yàn)榇鎯?chǔ)緩沖器或數(shù)據(jù)結(jié)構(gòu)。實(shí)心箭頭示出從處理階段到存儲(chǔ)緩沖器和數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)流,并且虛線箭頭為存儲(chǔ)緩沖器與數(shù)據(jù)結(jié)構(gòu)之間的指針(即其中ー個(gè)數(shù)據(jù)結(jié)構(gòu)包含到不同存儲(chǔ)陣列中的項(xiàng)的指針)。在這里,應(yīng)當(dāng)指出的是,圖I僅僅是示意性的,并且例如在實(shí)踐中所示的諸如頂點(diǎn)著色器和片段著色器之類的功能単元可以共享重要的硬件電路,即使它們?cè)趫DI中示意性地示為單獨(dú)的階段。)。繪圖調(diào)用描述符定義ー個(gè)繪圖調(diào)用。(如本領(lǐng)域中已知的,到圖形處理器以再現(xiàn)圖像以供顯示的“指令”將以繪圖調(diào)用描述符的形式提供給圖形處理器,其響應(yīng)于來自運(yùn)行在主機(jī)系統(tǒng)上的用于圖形顯示的應(yīng)用程序的命令而產(chǎn)生。圖I為了簡單起見僅僅示出了用于單個(gè)繪圖調(diào)用的操作。在實(shí)踐中,將存在多個(gè)執(zhí)行的繪圖調(diào)用,每個(gè)繪圖調(diào)用具有本領(lǐng)域中已知的對(duì)應(yīng)繪圖調(diào)用描述符。在要執(zhí)行多個(gè)繪圖調(diào)用的情況下,每個(gè)繪圖調(diào)用具有描述符并且繪圖調(diào)用描述符被存儲(chǔ)為繪圖調(diào)用描述符的鏈接列表。每個(gè)單獨(dú)的繪圖調(diào)用將以當(dāng)前實(shí)施例的方式處置和處理。)。如本領(lǐng)域中已知的,繪圖調(diào)用描述符基本上是頂點(diǎn)著色器20和平鋪器21的操作的起點(diǎn)。圖形處理單元將接收?qǐng)?zhí)行如適當(dāng)?shù)睦L圖調(diào)用描述符所規(guī)定的繪圖調(diào)用的命令,并且頂點(diǎn)著色器和平鋪器然后將操作來執(zhí)行該命令。、對(duì)于光柵器/片段著色器22的操作,平鋪器21將針對(duì)每個(gè)繪圖調(diào)用把到繪圖調(diào)用描述符的指針寫到多邊形列表30中。然后,光柵器/片段著色器22將讀取多邊形列表陣列30中的指針并且從而知道哪個(gè)繪圖調(diào)用描述符與其光柵化和著色的每個(gè)三角形關(guān)聯(lián)。索引緩沖器23存儲(chǔ)用于每個(gè)多邊形(圖元)的每個(gè)轉(zhuǎn)角頂點(diǎn)的頂點(diǎn)索引。位置緩沖器29包含從頂點(diǎn)著色器20輸出的變換的位置(即觀看者看到的繪制多邊形(圖形圖元)所在的位置)。如本領(lǐng)域中已知的,頂點(diǎn)著色器20采取針對(duì)要顯示的圖像定義的與頂點(diǎn)等關(guān)聯(lián)的輸入數(shù)據(jù)值并且處理這些數(shù)據(jù)值以便產(chǎn)生對(duì)應(yīng)的“頂點(diǎn)著色”的輸出數(shù)據(jù)值集合以供圖形處理系統(tǒng)的后續(xù)階段使用。頂點(diǎn)著色例如修改輸入數(shù)據(jù)以便考慮圖像中的照明效果。如本領(lǐng)域中已知的,平鋪器21操作來針對(duì)場(chǎng)景的每個(gè)圖塊將用于顯示的圖像的多邊形(圖元)分類到適當(dāng)?shù)亩噙呅瘟斜碇?,使得光柵?片段著色器22知道它要為它當(dāng)前工作的圖塊處理哪些多邊形。平鋪器21讀取繪圖調(diào)用描述符24、來自索引緩沖器23的索引以及來自位置緩沖器29的位置信息,并且在多邊形列表陣列30中存儲(chǔ)多邊形列表集合,如下文中將進(jìn)ー步討論的,這些多邊形列表包括允許檢索與列表中的多邊形頂點(diǎn)關(guān)聯(lián)的相關(guān)數(shù)據(jù)的適當(dāng)索引。如本領(lǐng)域中已知的,光柵器/片段著色器22操作來首先將要顯示的圖像中的多邊形光柵化為単獨(dú)的圖形片段(這些圖形片段是于是隨后經(jīng)過著色以便顯示圖像的圖形實(shí)體),并且然后對(duì)光柵化片段執(zhí)行各種片段著色操作以便產(chǎn)生這些片段的最終要顯示的版本,然后它將這些片段版本存儲(chǔ)到例如適當(dāng)?shù)膱D塊緩沖器中以便輸出到例如幀緩沖器以供顯不。如本領(lǐng)域中已知的,頂點(diǎn)著色器20執(zhí)行具有多個(gè)輸入變量并且產(chǎn)生輸出變量集合的頂點(diǎn)著色器程序。輸入和輸出變量稱為屬性并且代表正被處理的圖像的頂點(diǎn)等等的諸如顔色、位置、紋理坐標(biāo)等等之類的變量(屬性)。頂點(diǎn)著色器20的每個(gè)輸出屬性為片段著色器22的輸入屬性(變量),并且對(duì)于每個(gè)著色器程序(鏈接的頂點(diǎn)著色器和片段著色器)而言,存在固定數(shù)量的頂點(diǎn)著色器輸入屬性(變量)和固定數(shù)量的頂點(diǎn)著色器輸出/片段著色器輸入屬性(變量)。在當(dāng)前實(shí)施例中,頂點(diǎn)著色器的輸入屬性是并且將稱為“初級(jí)屬性”,并且頂點(diǎn)著色器的輸出屬性將是并且對(duì)應(yīng)地稱為“次級(jí)屬性”。(頂點(diǎn)著色器輸出屬性值也稱為“變化量”(如圖I中所示)。)。在當(dāng)前實(shí)施例中,每個(gè)屬性由著色器編譯器分配屬性索引。頂點(diǎn)著色器20基于繪圖調(diào)用描述符24處理輸入的初級(jí)屬性值以便產(chǎn)生希望的輸出的經(jīng)過頂點(diǎn)著色的次級(jí)屬性值。如本領(lǐng)域中已知的,每個(gè)頂點(diǎn)著色器輸出(次級(jí))屬性可以依賴于ー個(gè)或多個(gè)頂點(diǎn)著色器輸入(初級(jí))屬性。它也依賴于ー個(gè)或多個(gè)每繪圖調(diào)用輸入(其對(duì)于給定繪圖調(diào)用將是恒定的)。對(duì)于特定的繪圖調(diào)用而言,每個(gè)初級(jí)(頂點(diǎn)著色器輸入)屬性將具有用于該繪圖調(diào) 用的每個(gè)頂點(diǎn)的值,或者在實(shí)例化繪圖的情況下,用于每個(gè)頂點(diǎn)或者用于每個(gè)實(shí)例的值。次級(jí)屬性(頂點(diǎn)著色器輸出屬性)將具有用于每個(gè)単獨(dú)的頂點(diǎn)/實(shí)例組合的值。(如本領(lǐng)域中已知的,“實(shí)例化模式”操作的情況,可以對(duì)給定頂點(diǎn)處理多次,針對(duì)該頂點(diǎn)的每個(gè)需要的“實(shí)例”處理一次。在這種情況下,可能例如是,對(duì)于所討論的頂點(diǎn)的特定實(shí)例而言,頂點(diǎn)著色器在其處理頂點(diǎn)屬性時(shí)將使用與該實(shí)例關(guān)聯(lián)的輸入屬性值。)。因此,可能存在頂點(diǎn)著色器的其值關(guān)于且針對(duì)特定“實(shí)例”定義的ー些輸入變量(初級(jí)屬性),以及其值在“每頂點(diǎn)”基礎(chǔ)上定義的初級(jí)屬性。頂點(diǎn)著色器的給定輸出屬性(次級(jí)屬性)可以僅僅依賴于其值針對(duì)每個(gè)頂點(diǎn)定義(在每頂點(diǎn)基礎(chǔ)上定義)的一個(gè)或多個(gè)輸入屬性(初級(jí)屬性),或者可以僅僅依賴于其值針對(duì)每個(gè)實(shí)例定義(在每實(shí)例基礎(chǔ)上定義)的一個(gè)或多個(gè)輸入屬性(初級(jí)屬性),或者可以既依賴于其值針對(duì)每個(gè)頂點(diǎn)定義的一個(gè)或多個(gè)每頂點(diǎn)輸入屬性(初級(jí)屬性),又依賴于其值針對(duì)每個(gè)實(shí)例定義的一個(gè)或多個(gè)每實(shí)例輸入屬性(初級(jí)屬性)。如上面所討論的,除了其對(duì)于ー個(gè)或多個(gè)頂點(diǎn)著色器輸入屬性(初級(jí)屬性)的依賴性之外,頂點(diǎn)著色器輸出屬性(次級(jí)屬性)也可以依賴于ー個(gè)或多個(gè)每繪圖調(diào)用輸入。次級(jí)屬性也可以是常數(shù)(具有恒定值)。屬性值存儲(chǔ)在稱為屬性陣列的存儲(chǔ)緩沖器中,其在當(dāng)前實(shí)施例中通過頂點(diǎn)索引、實(shí)例索引或者通過輸出的展開的索引(其將在下文中進(jìn)ー步加以討論)進(jìn)行索引。因此,如圖I中所示,輸入(初級(jí))屬性值(針對(duì)所討論的繪圖調(diào)用的用于每個(gè)頂點(diǎn)著色器輸入屬性的值)存儲(chǔ)在初級(jí)屬性陣列(頂點(diǎn)緩沖器)26中。如本領(lǐng)域中已知的,初級(jí)屬性值(用于頂點(diǎn)著色器的輸入屬性的值)將由需要圖形處理的應(yīng)用程序產(chǎn)生并且來自該應(yīng)用程序,并且適當(dāng)?shù)卮鎯?chǔ)在初級(jí)屬性陣列(頂點(diǎn)緩沖器)26中以供圖形處理系統(tǒng)使用。初級(jí)屬性陣列中初級(jí)屬性值(頂點(diǎn)著色器輸入屬性值)的布局以及它們?nèi)绾畏植加讴`個(gè)或多個(gè)存儲(chǔ)緩沖器中,通過應(yīng)用程序(其觸發(fā)圖形處理)確定和控制。在當(dāng)前實(shí)施例中,初級(jí)屬性值可以依照它們是否在每頂點(diǎn)或每實(shí)例基礎(chǔ)上定義例如如下例如交叉存取到兩個(gè)緩沖器中
初級(jí)屬性緩沖器I :
-用于頂點(diǎn)0的屬性0的值 -用于頂點(diǎn)0的屬性I的值 -用于頂點(diǎn)I的屬性0的值 -用于頂點(diǎn)I的屬性I的值 依次類推。
初級(jí)屬性緩沖器2:
-用于實(shí)例0的屬性2的值 -用于實(shí)例0的屬性3的值 -用于實(shí)例I的屬性2的值 -用于實(shí)例I的屬性3的值 依次類推。為了讀取該陣列中的值,使用代表每頂點(diǎn)定義的值或每實(shí)例定義的值的開始位置的緩沖器基本地址(依賴于是否針對(duì)頂點(diǎn)或者針對(duì)實(shí)例定義屬性),并且然后使用相關(guān)的頂點(diǎn)索引或?qū)嵗饕员銖脑摶镜刂匪饕M膶傩灾怠?該過程將在下文中更加詳細(xì)地進(jìn)行討論。)。如果希望的話,其他的布置將是可能的,例如對(duì)于每個(gè)屬性使用不同的存儲(chǔ)緩沖器(即,使得每個(gè)屬性具有其自身的與其他屬性分開的存儲(chǔ)緩沖器)。本發(fā)明支持所有這樣的布置。 頂點(diǎn)著色器20的輸出(頂點(diǎn)著色的輸出(次級(jí))屬性值)對(duì)應(yīng)地存儲(chǔ)在輸出次級(jí)屬性陣列28中。次級(jí)屬性陣列28中次級(jí)屬性值(頂點(diǎn)著色器的輸出的值)的布局通過用于圖形處理器的驅(qū)動(dòng)器確定和控制。再一次地,在該實(shí)施例中,這些屬性值交叉存取到ー個(gè)存儲(chǔ)緩沖器(次級(jí)屬性陣列28)中,因?yàn)檫@將給出更好的高速緩存性能。如下文中進(jìn)ー步討論的,在當(dāng)前實(shí)施例中,次級(jí)屬性值依照它們所依賴的頂點(diǎn)著色器輸入(初級(jí))屬性的性質(zhì)(并且特別是它們是否僅僅取決于依賴于每頂點(diǎn)的輸入屬性,或者僅僅取決于依賴于姆實(shí)例的輸入屬性,或者取決于依賴于姆頂點(diǎn)的和依賴于姆實(shí)例的頂點(diǎn)著色器輸入屬性二者)分組到次級(jí)屬性陣列28中。因此,僅僅取決于僅僅依賴于每頂點(diǎn)的初級(jí)屬性的所有次級(jí)屬性值分組在一起,其起始于特定緩沖器基本地址并且通過用于對(duì)應(yīng)輸入屬性值的頂點(diǎn)索引相對(duì)于該地址進(jìn)行索引,僅僅取決于僅僅依賴于每實(shí)例的初級(jí)屬性的所有次級(jí)屬性值分組在一起,其起始于特定緩沖器基本地址并且通過用于對(duì)應(yīng)輸入屬性值的實(shí)例索引相對(duì)于該地址進(jìn)行索引,并且取決于依賴于每頂點(diǎn)的和每實(shí)例的初級(jí)屬性二者的所有次級(jí)屬性值分組在一起,其起始于特定緩沖器基本地址并且通過用于對(duì)應(yīng)輸入屬性值的頂點(diǎn)/實(shí)例組合相對(duì)于該地址進(jìn)行索引(借助于“展開的”索引,如下文中進(jìn)ー步討論的)。再一次地,為了讀取該陣列中的值,使用代表每頂點(diǎn)索引的值集合或每實(shí)例索引的值集合或者頂點(diǎn)/實(shí)例組合索引的值集合的開始位置的適當(dāng)緩沖器基本地址(依賴于是否針對(duì)頂點(diǎn)或者針對(duì)實(shí)例或者針對(duì)頂點(diǎn)/實(shí)例組合定義屬性),并且然后使用相關(guān)的頂點(diǎn)索弓I、實(shí)例索引或者組合的頂點(diǎn)/實(shí)例索引以便從該基本地址索引希望的屬性值。(該過程將在下文中更加詳細(xì)地進(jìn)行討論。)。在當(dāng)前實(shí)施例中,頂點(diǎn)著色器20的每個(gè)屬性(初級(jí)的和次級(jí)的)具有關(guān)聯(lián)的“屬性描述符”。每個(gè)屬性描述符包含以下字段
-包含用于該屬性的值的緩沖器的存儲(chǔ)地址(所有交叉存取的、共同地索引的屬性值的緩沖地址設(shè)定為指向相同的存儲(chǔ)緩沖器-這是上面提及的緩沖器基本地址)-針對(duì)緩沖器中的第一“索弓I”項(xiàng)的用于屬性的值的緩沖器中的偏移(即針對(duì)第一頂點(diǎn)(頂點(diǎn)0),其中屬性值在每頂點(diǎn)基礎(chǔ)上交叉存取(在該情況下用于每個(gè)屬性的偏移是用于每個(gè)頂點(diǎn)的數(shù)據(jù)塊中的偏移,在該偏移處找到針對(duì)所討論的頂點(diǎn)的用于該屬性的值(數(shù)據(jù))),或者針對(duì)第一實(shí)例(實(shí)例0),其中屬性值在每實(shí)例基礎(chǔ)上交叉存取,依次類推)
-步幅,其為存儲(chǔ)器中從針對(duì)ー個(gè)索引項(xiàng)(例如頂點(diǎn))的屬性的值到針對(duì)下ー個(gè)索引項(xiàng)(例如頂點(diǎn))的屬性的值的距離。(用于交叉存取的屬性值的步幅因此設(shè)定為針對(duì)給定索引項(xiàng)(頂點(diǎn)或?qū)嵗蛘唔旤c(diǎn)/實(shí)例組合)的所有屬性值的大小之和(即用于每個(gè)屬性的數(shù)據(jù)的大小之和)。這可以從下文中描述的存儲(chǔ)類型字段推斷。)
-屬性值的存儲(chǔ)類型(指示組件數(shù)據(jù)類型和組件數(shù)量)-加載和存儲(chǔ)指令優(yōu)選地基于屬性描述符中規(guī)定的數(shù)據(jù)類型執(zhí)行數(shù)據(jù)格式轉(zhuǎn)換
-屬性陣列類型(線性、除數(shù)或摸)-這將在下文中進(jìn)ー步進(jìn)行解釋 -如果是除數(shù)屬性陣列類型(除數(shù)屬性),則除數(shù)值 -如果是模屬性陣列類型(模屬性),則模值 -如果是除數(shù)或模屬性,則寫減少標(biāo)志 (除數(shù)和模屬性將在下文中進(jìn)ー步進(jìn)行討論)。屬性描述符分組為通過對(duì)應(yīng)屬性索引而索引的屬性描述符陣列。用于頂點(diǎn)著色器輸入(初級(jí))屬性的屬性描述符存儲(chǔ)在初級(jí)屬性描述符陣列25中,并且用于頂點(diǎn)著色器輸出(次級(jí))屬性的屬性描述符存儲(chǔ)在次級(jí)屬性描述符陣列27中。屬性描述符由圖形處理器驅(qū)動(dòng)器在繪圖調(diào)用時(shí)間產(chǎn)生。關(guān)于任何給定的著色器程序,將存在固定數(shù)量的頂點(diǎn)著色器輸入(初級(jí))和輸出(次級(jí))屬性(變量),對(duì)于任何特定的著色器程序而言,將對(duì)應(yīng)地存在固定數(shù)量的屬性描述符(并且因此屬性描述符陣列將具有固定的尺寸),其獨(dú)立于針對(duì)給定繪圖調(diào)用繪制的頂點(diǎn)和實(shí)例的數(shù)量且不管該數(shù)量如何。在當(dāng)前實(shí)施例的操作中,當(dāng)需要圖形處理的應(yīng)用程序啟動(dòng)時(shí),將首先編譯相關(guān)的著色器程序。因此,頂點(diǎn)著色器編譯器將運(yùn)行來產(chǎn)生用于頂點(diǎn)著色器20的適當(dāng)?shù)拿罴?,這些命令使得頂點(diǎn)著色器20以希望的方式處理初級(jí)屬性值。作為該過程的一部分,頂點(diǎn)著色器編譯器將產(chǎn)生適當(dāng)?shù)募虞d屬性指令并且存儲(chǔ)用于頂點(diǎn)著色器20的屬性指令,這些指令分別使得該頂點(diǎn)著色器從初級(jí)屬性陣列26中加載相關(guān)的初級(jí)屬性值以供處理,并且將產(chǎn)生的次級(jí)屬性值存儲(chǔ)到次級(jí)屬性陣列28中。類似地,也將編譯片段著色器等等,并且從而尤其也將針對(duì)片段著色器22對(duì)應(yīng)地產(chǎn)生加載屬性(變化量)指令。在當(dāng)前實(shí)施例中,類似形式的屬性加載和存儲(chǔ)指令用于頂點(diǎn)著色器20和片段著色器22 二者。提供給著色器的每個(gè)這樣的屬性加載或存儲(chǔ)指令通過訪問以下各條信息指示應(yīng)當(dāng)從哪個(gè)屬性描述符陣列(初級(jí)的或次級(jí)的)讀取相關(guān)屬性描述符、允許檢索的相關(guān)屬性描述符的索引以及要在確定用于屬性值本身的存儲(chǔ)地址時(shí)使用的ー個(gè)或多個(gè)索引
-陣列選擇器,其指示是否使用初級(jí)或次級(jí)屬性描述符陣列。這編碼到指令中。-屬性索引(即所考慮的屬性的索引,如上文中所討論的)。這可以編碼到指令中,或者是編碼到指令中的值加上寄存器中的值。
-一個(gè)或多個(gè)展開的索引。用于屬性加載和存儲(chǔ)指令的展開的索引如下從所討論的屬性值涉及的相應(yīng)的頂點(diǎn)和實(shí)例的頂點(diǎn)索引和實(shí)例索引(如果存在的話)中導(dǎo)出
展開的索引=(頂點(diǎn)索引)+ (實(shí)例索引)X (填充的實(shí)例大小)。填充的實(shí)例大小在該公式中為大于或等于每實(shí)例的頂點(diǎn)數(shù)的值,但是如下文中進(jìn)一步討論的,也設(shè)定為使得在硬件中對(duì)其執(zhí)行取模運(yùn)算較高效的值。對(duì)于所討論的頂點(diǎn)著色器線程,頂點(diǎn)著色器20使用上面的公式從頂點(diǎn)索引和實(shí)例索引中導(dǎo)出要直接使用的展開的索引。(對(duì)于頂點(diǎn)著色器操作,繪圖調(diào)用描述符包含要著色和平鋪的頂點(diǎn)和實(shí)例的數(shù)量,頂點(diǎn)著色器線程針對(duì)每個(gè)頂點(diǎn)/實(shí)例組 合而運(yùn)行,并且每個(gè)線程在內(nèi)部知道其頂點(diǎn)索引和實(shí)例索引。)。在片段著色器操作的情況下,如下文中將進(jìn)ー步討論的,平鋪器21使用上面的公式計(jì)算展開的索引并且將其寫入多邊形列表30中(針對(duì)所討論的頂點(diǎn))。然后,片段著色器直接從多邊形列表30中讀取展開的索引。使用這種形式的展開的索引提供了可以直接考慮以下事實(shí)的索引形式實(shí)例化模式操作實(shí)際上將對(duì)于每頂點(diǎn)每個(gè)屬性包含ー個(gè)值或者對(duì)于每實(shí)例每個(gè)屬性包含一個(gè)值的輸入屬性值(初級(jí)屬性陣列)“放大”或“展開”成應(yīng)當(dāng)每頂點(diǎn)每實(shí)例(即對(duì)于每個(gè)不同的頂點(diǎn)和實(shí)例組合)包含ー個(gè)屬性值(次級(jí)屬性值)的輸出的經(jīng)過頂點(diǎn)著色的屬性值陣列(次級(jí)屬性陣列)。而且,該展開的索引值可以用來通過利用等于填充的實(shí)例大小的模值執(zhí)行取模運(yùn)算而導(dǎo)出輸入屬性值的原始輸入頂點(diǎn)索引。類似地,輸入屬性值的原始輸入實(shí)例索引可以通過使用等于填充的實(shí)例大小的除數(shù)值執(zhí)行除法運(yùn)算而導(dǎo)出。因此,這意味著輸入頂點(diǎn)索引或?qū)嵗饕梢韵鄬?duì)直接地從用于加載或存儲(chǔ)屬性指令的展開的索引中導(dǎo)出。這種布置因此具有以下優(yōu)點(diǎn)提供給片段著色器22的輸出索引也可以由片段著色器在需要時(shí)用來還原為適當(dāng)?shù)妮斎腠旤c(diǎn)索引或?qū)嵗饕?如將在下文中進(jìn)ー步討論的)。為了在需要時(shí)觸發(fā)從展開的索引中導(dǎo)出適當(dāng)?shù)妮斎腠旤c(diǎn)索引或?qū)嵗鞴?,使用兩個(gè)特殊種類的屬性描述符(如上文中提及的)
i)除數(shù)屬性,其在索引屬性陣列之前將展開的索引除以屬性描述符中給定的值。除數(shù)值d由這樣計(jì)算的三個(gè)數(shù)r、p和q表示
r = floor(Iog2{d)} fO = 2 ド33 + fi = floor(fO/cJ) ff = fD-ffd p = fi- 231
q = (ff > 1 : 0
并且對(duì)索引u的除法于是計(jì)算為
I= (u + q)* (P + 231}/2"32
(這種形式的除數(shù)值的使用允許使用比完全一般的除法更簡單的除法電路。)
ii)模屬性,其在索引屬性陣列之前執(zhí)行展開的索引對(duì)屬性描述符中給定的值取模。模值(即填充的實(shí)例大小Spi)具有以下形式Spi = (2p+l) * 2r,其中 p 為 0、1、2、3 或 4
(這種形式的模值的使用允許使用比完全一般的模更簡單的模電路。)。如上面所討論的,屬性是否為除數(shù)屬性(在該情況下,應(yīng)當(dāng)在索引屬性陣列之前將展開的索引除以屬性描述符中給定的值)或者模屬性(在該情況下,應(yīng)當(dāng)在索引屬性陣列之前執(zhí)行提供的展開的索引值模屬性描述符中給定的值)的指示與相關(guān)的除數(shù)或模值(即在這種情況下為填充的實(shí)例大小)一起包含在用于所討論的屬性的相關(guān)屬性描述符中。在用于實(shí)例化的API機(jī)制允許每實(shí)例輸入針對(duì)特定屬性在實(shí)例索引上具有另外的除數(shù)值的情況下,那么該另外的除數(shù)可以簡單地乘上用于那些屬性的除數(shù)值。在這種情況下,屬性描述符應(yīng)當(dāng)指示要使用的適當(dāng)除數(shù)值。響應(yīng)于這樣的加載或存儲(chǔ)屬性指令,著色器將首先以指令指示的屬性索引所指示 的索引從指令中的陣列選擇器指示的陣列(初級(jí)的或次級(jí)的)中讀取屬性描述符。然后,它將確定從那里讀取要使用的屬性值(對(duì)于加載指令)或者在那里存儲(chǔ)產(chǎn)生的屬性值(對(duì)于存儲(chǔ)指令)的存儲(chǔ)位置(地址)。這通過使用指令指示的展開的索引以及讀取屬性描述符中的緩沖地址、屬性陣列類型、偏移和步幅以及(如果相關(guān)的話)除數(shù)或模值來完成。然后,要加載的屬性值(數(shù)據(jù))的存儲(chǔ)地址將導(dǎo)出為
屬性值的地址=(緩沖地址)+偏移+ (步幅X索引)。如上面所討論的,上述方程中的緩沖地址、步幅和偏移在相關(guān)屬性描述符中給出。如上面所討論的,索引適當(dāng)?shù)貫檎归_的索引、頂點(diǎn)索引或?qū)嵗饕⑶覍⒁勒諏傩悦枋龇兄甘镜膶傩躁嚵蓄愋蛠泶_定。對(duì)于線性屬性而言,要使用的索引將是展開的索弓丨,但是對(duì)于除數(shù)屬性而言,上面的除法運(yùn)算將用來從展開的索引中導(dǎo)出實(shí)例索引,并且對(duì)于模屬性而言,上面的取模運(yùn)算將用來從展開的索引中導(dǎo)出頂點(diǎn)索引。存儲(chǔ)屬性指令以相同的方式操作,但是著色器操作來將數(shù)據(jù)存儲(chǔ)到確定的地址處。因此,當(dāng)例如頂點(diǎn)著色器20執(zhí)行適當(dāng)?shù)募虞d屬性指令以便處理頂點(diǎn)著色器輸入屬性值,它標(biāo)識(shí)從加載屬性指令中的陣列選擇器字段中讀取的屬性描述符陣列(其在這種情況下將指示初級(jí)屬性描述符陣列)。接下來,它使用加載屬性指令中的屬性索引以便從初級(jí)屬性描述符陣列25中讀取對(duì)應(yīng)的初級(jí)屬性描述符。然后,它使用初級(jí)屬性描述符中的相關(guān)信息以及展開的索引以便檢索要處理的適當(dāng)?shù)捻旤c(diǎn)著色器輸入(初級(jí))屬性值。(如上面所討論的,初級(jí)屬性陣列中的輸入(初級(jí))屬性值將由頂點(diǎn)著色器20通過使用頂點(diǎn)索引或?qū)嵗饕L問。實(shí)例索引用來檢索在每實(shí)例基礎(chǔ)上定義的輸入(初級(jí))屬性值,并且頂點(diǎn)索引用來檢索在每頂點(diǎn)基礎(chǔ)上定義的輸入(初級(jí))屬性值。)。類似地,除了下文中將更加詳細(xì)地討論的特定情況之外,一旦頂點(diǎn)著色器20已經(jīng)處理了輸入(初級(jí))屬性值,那么它將把其輸出(即產(chǎn)生的次級(jí)屬性值)存儲(chǔ)到由對(duì)應(yīng)屬性存儲(chǔ)指令(以及次級(jí)屬性描述符陣列27內(nèi)的相關(guān)次級(jí)屬性描述符中的信息)指示的次級(jí)屬性陣列28中。在當(dāng)前實(shí)施例中,修改圖形處理系統(tǒng)的基本編譯操作以便考慮頂點(diǎn)著色操作的兩種特殊情況。首先,頂點(diǎn)著色器編譯器被配置成當(dāng)其編譯頂點(diǎn)著色器代碼時(shí)對(duì)于每個(gè)頂點(diǎn)著色器輸出屬性(次級(jí)屬性)確定該輸出屬性是否為來自頂點(diǎn)著色器輸入屬性的直接拷貝(即標(biāo)識(shí)其中頂點(diǎn)著色器輸出屬性的值將是輸入屬性的值的直接拷貝的“貫通”情形)。例如,如果頂點(diǎn)著色器輸入屬性(初級(jí)屬性)是紋理坐標(biāo),則情況可能就是這樣。當(dāng)確定情況如此時(shí),頂點(diǎn)著色器編譯器省略執(zhí)行拷貝操作的代碼并且作為代替在與頂點(diǎn)著色器代碼關(guān)聯(lián)的元信息中記錄特定頂點(diǎn)著色器輸出(次級(jí))屬性是特定頂點(diǎn)著色器輸入(初級(jí))屬性的直接拷貝以及它是哪個(gè)頂點(diǎn)著色器輸入(初級(jí))屬性的拷貝。如上面所討論的,在當(dāng)前實(shí)施例中,配置和構(gòu)造用于標(biāo)識(shí)其中頂點(diǎn)著色器輸出屬性值將是頂點(diǎn)著色器輸入屬性值的拷貝的情形的機(jī)制以便給出保守的結(jié)果,即“選擇穩(wěn)妥的做法”。因此,在當(dāng)前實(shí)施例中,該布置使得識(shí)別其中頂點(diǎn)著色器輸出屬性值將是頂點(diǎn)著色器輸入屬性值的拷貝的情形時(shí)的任何錯(cuò)誤應(yīng)當(dāng)使得系統(tǒng)將無法檢測(cè),其中情況就是如
此,而不是確定“貫通”情形存在,其中事實(shí)上它不存在。因此,如上面所討論的,以其中標(biāo)識(shí)了“貫通”屬性或情形(即其中確定了頂點(diǎn)著色器輸出屬性值將是頂點(diǎn)著色器輸入屬性值的拷貝)的特定方式引用當(dāng)前實(shí)施例的操作涉及其中系統(tǒng)(例如編譯器)標(biāo)識(shí)了 “貫通”情形的那些情形。第二,頂點(diǎn)著色器編譯器也在元信息中記錄頂點(diǎn)著色器的每個(gè)輸出屬性(每個(gè)次級(jí)屬性)依賴于哪些頂點(diǎn)著色器輸入(初級(jí))屬性。再一次地,,在當(dāng)前實(shí)施例中,配置和構(gòu)造用于標(biāo)識(shí)頂點(diǎn)著色器輸出屬性所依賴的頂點(diǎn)著色器輸入屬性的機(jī)制以便給出保守的結(jié)果,即“選擇穩(wěn)妥的做法”。因此,該布置使得標(biāo)識(shí)頂點(diǎn)著色器輸出屬性所依賴的頂點(diǎn)著色器輸入屬性時(shí)的任何錯(cuò)誤應(yīng)當(dāng)使得系統(tǒng)將推斷(確定)頂點(diǎn)著色器輸出屬性依賴于某個(gè)它事實(shí)上并不依賴的頂點(diǎn)著色器輸入屬性(即給出確定的作為實(shí)際依賴性的超集的輸入屬性依賴性集合),而不是錯(cuò)失輸出屬性實(shí)際上確實(shí)依賴的輸出屬性的依賴性。在這里,也應(yīng)當(dāng)指出的是,因此再一次地,以其中將頂點(diǎn)著色器輸出屬性標(biāo)識(shí)為僅僅依賴于每頂點(diǎn)或者僅僅依賴于每實(shí)例定義的頂點(diǎn)著色器輸入屬性的特定方式引用當(dāng)前實(shí)施例的操作涉及其中系統(tǒng)標(biāo)識(shí)了這種情形(這種頂點(diǎn)著色器輸出屬性)的那些情形。類似地,給定頂點(diǎn)著色器輸出屬性對(duì)于給定頂點(diǎn)著色器輸入屬性的依賴性的引用涉及由當(dāng)前實(shí)施例的系統(tǒng)(例如編譯器)標(biāo)識(shí)的那些依賴性,除非上下文另有要求。第三,著色器鏈接器操作被配置成使得當(dāng)其看到與頂點(diǎn)著色器代碼關(guān)聯(lián)的指示特定頂點(diǎn)著色器輸出(次級(jí))屬性是特定頂點(diǎn)著色器輸入(初級(jí))屬性的直接拷貝(即存在“貫通”屬性)的元信息時(shí),其于是修改片段著色器代碼以便使得光柵器/片段著色器22讀取適當(dāng)?shù)某跫?jí)(頂點(diǎn)著色器輸入)屬性值而不是讀取次級(jí)(頂點(diǎn)著色器輸出)屬性值。(如本領(lǐng)域中已知的,著色器鏈接器有效地操作來將頂點(diǎn)著色器的所有輸出與片段著色器的對(duì)應(yīng)輸入匹配。該操作在當(dāng)前實(shí)施例中修改為在來自頂點(diǎn)著色器的元信息指示“貫通”屬性存在吋,作為代替將片段著色器輸入連接到頂點(diǎn)著色器輸入(g卩“貫通”元信息規(guī)定的頂點(diǎn)著色器輸入)。)。為了做到這點(diǎn),著色器鏈接器在其看到來自頂點(diǎn)著色器編譯器的指示存在“貫通”屬性的元信息時(shí),將片段著色器代碼修改為設(shè)置用于光柵器/片段著色器22的適當(dāng)加載指令中的陣列選擇器字段以便指示光柵器/片段著色器22應(yīng)當(dāng)從初級(jí)屬性描述符陣列25中(即從用于頂點(diǎn)著色器的輸入屬性描述符陣列中)而不是從次級(jí)屬性描述符陣列27 (即頂點(diǎn)著色器的輸出屬性描述符陣列)中讀取,并且改變指令中的屬性索引以便指示貫通屬性是其拷貝的初級(jí)(輸入)屬性。換言之,著色器鏈接器通過相應(yīng)地設(shè)置加載屬性指令中的陣列選擇器字段和屬性索引(即指示初級(jí)屬性描述符陣列以及“貫通”屬性是其拷貝的初級(jí)(輸入)屬性)而修改片段著色器加載屬性(加載變化量)指令以便使得片段著色器讀取相關(guān)的初級(jí)屬性描述符(其然后將觸發(fā)片段著色器以讀取初級(jí)屬性陣列中的相關(guān)初級(jí)屬性值)。一旦編譯了(且由鏈接器修改了(如果必要的話))著色器程序,要求圖形處理的應(yīng)用程序?qū)⑦m當(dāng)?shù)乃饕虞d到索引緩沖器23中并且將頂點(diǎn)屬性值加載到頂點(diǎn)緩沖器(初級(jí)屬性陣列)26中。這在使用所討論的索引和屬性值的任何繪圖調(diào)用之前完成,盡管不必緊鄰每個(gè)繪圖調(diào)用之前完成。應(yīng)用程序也經(jīng)由圖形API規(guī)定繪圖調(diào)用的所有參數(shù),例如從哪些緩沖器中取出以及取出多少、使用哪些著色器等等。然后,用于圖形處理器的驅(qū)動(dòng)器創(chuàng)建用于所討論的繪圖調(diào)用的繪圖調(diào)用描述符 以及相關(guān)的屬性描述符(這將在下文中更加詳細(xì)地進(jìn)行討論),并且將這些傳送至圖形處理器。如上面所討論的,作為所述過程的一部分,在當(dāng)前實(shí)施例中,用于圖形處理的驅(qū)動(dòng)器基于用于所討論的繪圖調(diào)用的繪圖調(diào)用描述符而產(chǎn)生并且存儲(chǔ)必要的初級(jí)和次級(jí)屬性描述符。這在繪圖調(diào)用時(shí)間完成,因?yàn)檩斎?初級(jí))屬性的依賴于每頂點(diǎn)或每實(shí)例的狀態(tài)由應(yīng)用程序針對(duì)每個(gè)繪圖調(diào)用進(jìn)行規(guī)定。因此,對(duì)于初級(jí)屬性而言,驅(qū)動(dòng)器將針對(duì)繪圖調(diào)用產(chǎn)生用于每個(gè)初級(jí)屬性的屬性描述符,以便允許頂點(diǎn)著色器和其他圖形處理階段(著色器等)使用上面描述的機(jī)制訪問相關(guān)的初級(jí)屬性值。依賴于每頂點(diǎn)的初級(jí)(輸入)屬性(即其值在每頂點(diǎn)基礎(chǔ)上定義的初級(jí)屬性)將由驅(qū)動(dòng)器(在相關(guān)的屬性描述符中)定義為具有等于填充的實(shí)例大小的模值的模屬性,并且依賴于每實(shí)例的初級(jí)(輸入)屬性(即其值在每實(shí)例基礎(chǔ)上定義的初級(jí)屬性)將被定義為具有等于填充的實(shí)例大小的除數(shù)值的除數(shù)屬性。(如果希望的話,依賴于每實(shí)例的初級(jí)屬性可以定義為具有等于填充的實(shí)例大小乘以任何定義的實(shí)例除數(shù)的除數(shù)值的除數(shù)屬性。在這種情況下,每實(shí)例除數(shù)將需要一個(gè)初級(jí)屬性值緩沖器(而如果僅僅使用填充的實(shí)例大小,那么對(duì)于所有每實(shí)例輸入而言僅僅一個(gè)緩沖器就夠了)。)。驅(qū)動(dòng)器將對(duì)于要針對(duì)繪圖調(diào)用產(chǎn)生的每個(gè)次級(jí)屬性類似地產(chǎn)生次級(jí)屬性描述符,以便允許頂點(diǎn)著色器存儲(chǔ)次級(jí)屬性值,并且允許其他著色器等等使用上面描述的機(jī)制訪問次級(jí)屬性值。為了做到這點(diǎn),對(duì)于要產(chǎn)生的每個(gè)相應(yīng)的頂點(diǎn)著色器輸出(次級(jí))屬性,驅(qū)動(dòng)器在繪圖調(diào)用時(shí)間仔細(xì)檢查(go through)影響該輸出屬性的頂點(diǎn)著色器輸入(初級(jí))屬性(由頂點(diǎn)著色器編譯器記錄),以便確定用于該輸出(次級(jí))屬性的所有頂點(diǎn)著色器輸入(初級(jí))屬性是否在每頂點(diǎn)基礎(chǔ)上定義、在每實(shí)例基礎(chǔ)上定義或者存在這二者的混合。(換言之,驅(qū)動(dòng)器在繪圖調(diào)用時(shí)間仔細(xì)檢查所有頂點(diǎn)著色器輸出屬性以便根據(jù)每個(gè)輸出(次級(jí))屬性依賴于何種頂點(diǎn)著色器輸入(初級(jí))屬性,即它是否僅僅依賴于每頂點(diǎn)定義的輸入屬性或者僅僅依賴于每實(shí)例定義的輸入屬性或者依賴于每頂點(diǎn)和每實(shí)例定義的輸入屬性二者,或者根本不依賴于頂點(diǎn)著色器輸入屬性(即它是常數(shù)),而對(duì)每個(gè)輸出(次級(jí))屬性分類。)。
然后,驅(qū)動(dòng)器相應(yīng)地對(duì)于每個(gè)次級(jí)屬性(頂點(diǎn)著色器輸出屬性)將適當(dāng)?shù)拇渭?jí)屬性描述符寫(存儲(chǔ))到次級(jí)屬性描述符陣列27中。在頂點(diǎn)著色器輸出屬性(次級(jí)屬性)依賴于每頂點(diǎn)和每實(shí)例定義的頂點(diǎn)著色器輸入屬性二者的情況下,驅(qū)動(dòng)器將次級(jí)屬性描述符存儲(chǔ)到次級(jí)屬性描述符陣列27中,其指示線性屬性并且指向次級(jí)屬性陣列28中的屬性值(即包括其緩沖地址),所述屬性值使用展開的輸出索引(即根據(jù)它們所依賴的輸入頂點(diǎn)/實(shí)例組合)而進(jìn)行索引。在頂點(diǎn)著色器輸出屬性(次級(jí)屬性)取決于僅僅依賴于每頂點(diǎn)(定義)的頂點(diǎn)著色器輸入(初級(jí))屬性的情況下,驅(qū)動(dòng)器將次級(jí)屬性描述符存儲(chǔ)到次級(jí)屬性描述符陣列27中,其指示具有等于填充的實(shí)例大小的模值的模屬性并且指向在每頂點(diǎn)基礎(chǔ)上索引的次級(jí)屬性陣列28的部分(即包括其緩沖地址)。在頂點(diǎn)著色器輸出屬性(次級(jí)屬性)取決于僅僅依賴于每實(shí)例(定義)的頂點(diǎn)著色器輸入(初級(jí))屬性的情況下,驅(qū)動(dòng)器將次級(jí)屬性描述符存儲(chǔ)到次級(jí)屬性描述符陣列27中,其指示具有等于填充的實(shí)例大小的除數(shù)值的除數(shù)屬性并且指向在每實(shí)例基礎(chǔ)上索引的次 級(jí)屬性陣列28的部分(即包括其緩沖地址)。(再一次地,如果希望的話,依賴于僅僅每實(shí)例定義的頂點(diǎn)著色器輸入屬性的次級(jí)屬性可以使用具有等于填充的實(shí)例大小乘以任何定義的實(shí)例除數(shù)的除數(shù)值的除數(shù)屬性。在這種情況下,每實(shí)例除數(shù)將需要一個(gè)次級(jí)緩沖器(而如果僅僅使用填充的實(shí)例大小,那么對(duì)于所有每實(shí)例輸出而言僅僅一個(gè)緩沖器就夠了)。)。因此,將僅僅依賴于僅僅每頂點(diǎn)定義的頂點(diǎn)著色器輸入屬性的輸出(次級(jí))屬性定義為模屬性并且將僅僅依賴于僅僅每實(shí)例定義的頂點(diǎn)著色器輸入屬性的輸出(次級(jí))屬性定義為除數(shù)屬性。在這里,應(yīng)當(dāng)指出的是,如本領(lǐng)域中已知的,給定頂點(diǎn)著色器輸出屬性以及取決于一個(gè)或多個(gè)頂點(diǎn)著色器輸入屬性也可以依賴于一個(gè)或多個(gè)每繪圖調(diào)用輸入,所述輸入對(duì)于給定繪圖調(diào)用將是恒定的。本發(fā)明同樣地可以用在其中除了每頂點(diǎn)或每實(shí)例定義的頂點(diǎn)著色器輸入屬性之外頂點(diǎn)著色器輸出屬性還依賴于(一個(gè)或多個(gè))每繪圖調(diào)用輸入(針對(duì)繪圖調(diào)用定義的恒定值)的那些情況。因此,這里對(duì)于僅僅依賴于每頂點(diǎn)或者每實(shí)例定義的輸入屬性的頂點(diǎn)著色器輸出屬性的引用意圖涉及其中頂點(diǎn)著色器輸出屬性所依賴的所有頂點(diǎn)著色器輸入屬性分別僅僅在每頂點(diǎn)或每實(shí)例基礎(chǔ)上定義的情形,并不要求輸出屬性僅僅依賴于每頂點(diǎn)或者每實(shí)例定義的頂點(diǎn)著色器輸入屬性而不依賴于別的東西(即并沒有排除頂點(diǎn)著色器輸出屬性也依賴于諸如每繪圖調(diào)用定義的輸入之類的不是頂點(diǎn)著色器輸入屬性的其他輸入)。驅(qū)動(dòng)器也可以利用這些語義在模和除數(shù)次級(jí)屬性描述符中包括“寫減少”標(biāo)志 如果展開的索引除以模值(向下取整)為零,那么模屬性將僅僅執(zhí)行寫。這等效于 u〈Spi
(其中Spi為填充的實(shí)例大小)并且意味著如果展開的索引大于或等于模值,則模屬性將不存儲(chǔ)輸出值。除數(shù)屬性將僅在展開的索引對(duì)除數(shù)值取模為零的情況下執(zhí)行寫入。這等效于 rem=除數(shù)計(jì)算中移出最終移位的比特
Iz = count_leading—zeros(rem)
條件lz > r OR (lz == r AND q == I)并且意味著在展開的索引不可被除數(shù)整除的情況下除數(shù)屬性將不存儲(chǔ)輸出值。在操作中,當(dāng)頂點(diǎn)著色器執(zhí)行存儲(chǔ)屬性指令時(shí),它將如上面所討論的檢查由存儲(chǔ)屬性指令指示的對(duì)應(yīng)次級(jí)屬性描述符,并且如果寫減少標(biāo)志存在,則執(zhí)行上述測(cè)試中的適當(dāng)測(cè)試(取決于該屬性是否為模屬性或除數(shù)屬性),并且如果測(cè)試通過,則存儲(chǔ)適當(dāng)?shù)妮敵鲋?,但是如果測(cè)試失敗,則中止存儲(chǔ)操作。其結(jié)果在于,僅僅針對(duì)實(shí)例0寫入依賴于僅僅每頂點(diǎn)的頂點(diǎn)著色器輸入屬性的輸出屬性值,并且僅僅針對(duì)頂點(diǎn)0寫入依賴于僅僅每實(shí)例的頂點(diǎn)著色器輸入屬性的輸出屬性值。其效果在于,在標(biāo)識(shí)了僅僅依賴于每頂點(diǎn)定義的或者僅僅依賴于每實(shí)例定義的頂點(diǎn)著色器輸入屬性的頂點(diǎn)著色器輸出屬性(次級(jí)屬性)(即輸出屬性所依賴的頂點(diǎn)著色器輸入屬性僅僅在每頂點(diǎn)基礎(chǔ)上或者僅僅在每實(shí)例基礎(chǔ)上定義-如上面所討論的,它們也可 能依賴于例如每繪圖調(diào)用輸入)(并且不存在如上面所討論的“貫通”情形)的情況下,那么頂點(diǎn)著色器20將操作來存儲(chǔ)要產(chǎn)生的那個(gè)輸出(次級(jí))屬性值的每個(gè)不同版本的僅僅一個(gè)拷貝(即它對(duì)于每個(gè)不同的輸入頂點(diǎn)或者對(duì)于每個(gè)不同的輸入實(shí)例適當(dāng)?shù)卮鎯?chǔ)輸出值的一個(gè)拷貝,而不管輸出(次級(jí))屬性值實(shí)際上分別應(yīng)用于多少實(shí)例或頂點(diǎn))。因此,例如,即使存在多個(gè)應(yīng)當(dāng)針對(duì)其產(chǎn)生給定的依賴于僅僅每頂點(diǎn)的頂點(diǎn)著色器輸入屬性的頂點(diǎn)著色器輸出值(次級(jí)屬性值)的實(shí)例,頂點(diǎn)著色器20也將僅僅每頂點(diǎn)存儲(chǔ)該輸出值(次級(jí)屬性值)的一個(gè)拷貝。因此,每個(gè)這樣的輸出值將僅僅寫入次級(jí)屬性陣列28中一次。為了考慮針對(duì)每個(gè)頂點(diǎn)或?qū)嵗蕾囉趦H僅每頂點(diǎn)或者僅僅每實(shí)例的頂點(diǎn)著色器輸入屬性的輸出屬性值作為單個(gè)拷貝而存儲(chǔ)到次級(jí)屬性陣列28中這一事實(shí),如上面所討論的,依照其依賴關(guān)系(每頂點(diǎn)、每實(shí)例或者二者)對(duì)次級(jí)屬性陣列中的次級(jí)屬性值分組(因?yàn)檫@樣的屬性在其中(每屬性)將具有不同數(shù)量的屬性值)。因此,依賴于僅僅每頂點(diǎn)的頂點(diǎn)著色器輸入屬性的輸出(次級(jí))屬性值分組在一起并且依照相關(guān)頂點(diǎn)的頂點(diǎn)索引進(jìn)行索引(相對(duì)于基本緩沖地址(其包含在相關(guān)次級(jí)屬性描述符中))。類似地,依賴于僅僅每實(shí)例的頂點(diǎn)著色器輸入屬性的輸出(次級(jí))屬性值分組在一起并且依照相關(guān)實(shí)例的實(shí)例索引進(jìn)行索引(相對(duì)于基本緩沖地址)。任何依賴于每實(shí)例和每頂點(diǎn)的頂點(diǎn)著色器輸入屬性的輸出(次級(jí))屬性值也分組在一起并且依照上面討論的展開的索引進(jìn)行索引(相對(duì)于基本緩沖地址)。然后,由圖形處理器驅(qū)動(dòng)器以上面討論的方式相應(yīng)地配置次級(jí)屬性描述符(即利用對(duì)應(yīng)的緩沖器基本地址將每個(gè)次級(jí)屬性定義為線性、模或除數(shù)屬性),以便確保頂點(diǎn)著色器將其產(chǎn)生的次級(jí)屬性值存儲(chǔ)在適當(dāng)?shù)奈恢茫⑶抑T如片段著色器之類的后續(xù)圖形處理階段將在它們要處理次級(jí)屬性時(shí)加載適當(dāng)?shù)拇渭?jí)屬性值。一旦驅(qū)動(dòng)器產(chǎn)生了適當(dāng)?shù)膶傩悦枋龇?,那么可以處理繪圖調(diào)用。因此,頂點(diǎn)著色器將針對(duì)每個(gè)頂點(diǎn)/實(shí)例組合發(fā)起線程并且執(zhí)行適當(dāng)?shù)募虞d屬性指令以便加載初級(jí)屬性值以供處理,并且在上面討論的過程之后依照其存儲(chǔ)屬性指令存儲(chǔ)產(chǎn)生的次級(jí)屬性。因此,如上面所討論的,當(dāng)頂點(diǎn)著色器20例如執(zhí)行適當(dāng)?shù)募虞d屬性指令以便處理頂點(diǎn)著色器輸入屬性值時(shí),它將標(biāo)識(shí)要從加載屬性指令中的陣列選擇器字段讀取的屬性描述符陣列(其在這種情況下將指示初級(jí)屬性描述符陣列)。接下來,它將使用加載屬性指令中的屬性索引從初級(jí)屬性描述符陣列25中讀取對(duì)應(yīng)的初級(jí)屬性描述符。然后,它將使用初級(jí)屬性描述符中的相關(guān)信息以及展開的索引檢索要處理的適當(dāng)?shù)捻旤c(diǎn)著色器輸入(初級(jí))屬性值。類似地,一旦頂點(diǎn)著色器20處理了輸入(初級(jí))屬性值,那么它將把其輸出(即產(chǎn)生的次級(jí)屬性值)存儲(chǔ)到由對(duì)應(yīng)屬性存儲(chǔ)指令(以及次級(jí)屬性描述符陣列27內(nèi)的相關(guān)次級(jí)屬性描述符中的信息)指示的次級(jí)屬性陣列28中。一旦頂點(diǎn)著色器20適當(dāng)?shù)貙?duì)所有頂點(diǎn)進(jìn)行了頂點(diǎn)著色,那么平鋪器21產(chǎn)生必要的多邊形列表并且將其存儲(chǔ)在多邊形列表陣列30中以準(zhǔn)備供光柵器/片段著色器22使用。作為該過程的一部分,平鋪器21在多邊形列表30中包含用于每個(gè)轉(zhuǎn)角頂點(diǎn)的展開的索引。如上面所討論的,包含在多邊形列表30中以便提供給光柵器/片段著色器22的該展開的索引由平鋪器21從用來為頂點(diǎn)著色器20的對(duì)應(yīng)頂點(diǎn)著色器輸入(初級(jí))屬性值索引初級(jí)屬性陣列26的頂點(diǎn)索引和實(shí)例索引(如果存在的話)中(即從其初級(jí)屬性值用來產(chǎn)生頂點(diǎn)著色的頂點(diǎn)的次級(jí)屬性值的頂點(diǎn)和實(shí)例的頂點(diǎn)索引和實(shí)例索引中)導(dǎo)出(計(jì)算)。平鋪器21操作來即使在圖形處理系統(tǒng)不在實(shí)例化模式下操作的情況下也以這種方式產(chǎn)生包含在多邊形列表30中的展開的索引,因?yàn)檫\(yùn)行在非實(shí)例化模式下基本上等效于簡單地繪制實(shí)例“0”(并且沒有任何每實(shí)例的屬性),因此可以使用相同的輸出索引生成機(jī)制(并且在這種情況下將產(chǎn)生等于輸入頂點(diǎn)索引的展開的索引)。 一旦平鋪器21準(zhǔn)備了多邊形列表30,光柵器/片段著色器22將專注于(work itsway through)這些列表以便產(chǎn)生允許顯示圖像的適當(dāng)著色的片段。在正常操作中,為了做到這點(diǎn),光柵器/片段著色器22將依照它接收的加載屬性(變化量)指令從次級(jí)屬性陣列28中加載適當(dāng)?shù)捻旤c(diǎn)著色的輸出(次級(jí))屬性值。
因此,如上面所討論的,當(dāng)片段著色器22執(zhí)行適當(dāng)?shù)募虞d屬性指令以便處理適當(dāng)?shù)膶傩灾禃r(shí),片段著色器22將使用加載屬性指令中的屬性陣列指示確定是否從初級(jí)屬性描述符陣列中或者從次級(jí)屬性描述符陣列中讀取。然后,它將使用加載指令中的屬性索引標(biāo)識(shí)相關(guān)屬性描述符陣列中的屬性描述符。在次級(jí)屬性的情況下,片段著色器22將相應(yīng)地使用提供的屬性索引從次級(jí)屬性描述符陣列27中檢索適當(dāng)?shù)拇渭?jí)屬性描述符,并且然后使用來自該次級(jí)屬性描述符的信息以及多邊形列表中的相關(guān)展開的索引從次級(jí)屬性陣列28中檢索適當(dāng)?shù)膶傩灾?頂點(diǎn)著色的屬性值)。(本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,由于片段著色器22處理代表由三個(gè)頂點(diǎn)定義的多邊形(在多邊形為三角形的情況下)內(nèi)的特定位置的片段,因而在實(shí)踐中,片段著色器22對(duì)于它接收的每個(gè)屬性加載指令讀取相關(guān)屬性描述符一次,但是接著將執(zhí)行其余步驟(導(dǎo)出用于索引屬性陣列的索引、以及計(jì)算屬性值的地址以及從存儲(chǔ)器中加載屬性值)三次,針對(duì)當(dāng)前多邊形的每個(gè)頂點(diǎn)一次,并且然后執(zhí)行三個(gè)加載的屬性值(即存儲(chǔ)的用于所述三個(gè)頂點(diǎn)的屬性值)之間的插值以便導(dǎo)出用于片段著色操作的實(shí)際屬性值。)。在其中存在“線性”次級(jí)屬性的情況下,光柵器/片段著色器22將相應(yīng)地根據(jù)次級(jí)屬性描述符確定所討論的次級(jí)屬性是線性屬性,并且使用來自多邊形列表30的相關(guān)展開的索引和緩沖地址、屬性描述符中的偏移和步幅以便從次級(jí)屬性陣列28中標(biāo)識(shí)并且檢索適當(dāng)?shù)拇渭?jí)屬性值。在其中存在依賴于僅僅每頂點(diǎn)或每實(shí)例定義的頂點(diǎn)著色器輸入屬性的次級(jí)屬性的情況下,光柵器/片段著色器22將相應(yīng)地根據(jù)次級(jí)屬性描述符確定所討論的次級(jí)屬性是除數(shù)屬性或者模屬性,并且使用由次級(jí)屬性描述符指示的相關(guān)除數(shù)或取模運(yùn)算以及來自多邊形列表30的展開的索引和緩沖 地址、屬性描述符中的偏移和步幅以便從次級(jí)屬性陣列28中標(biāo)識(shí)并且檢索適當(dāng)?shù)拇渭?jí)屬性值。通過這種方式,每當(dāng)光柵器/片段著色器22需要使用適當(dāng)?shù)囊蕾囉趦H僅每頂點(diǎn)或僅僅每實(shí)例的頂點(diǎn)著色器輸入屬性的輸出(次級(jí))屬性值的拷貝時(shí),其針對(duì)并且能夠檢索次級(jí)屬性陣列28中的該輸出(次級(jí))屬性值的單個(gè)拷貝。在其中加載指令指示加載初級(jí)屬性(頂點(diǎn)著色器輸入屬性)值(即存在“貫通”情形)的情況下,那么片段著色器22將使用屬性索引查找初級(jí)屬性描述符陣列25中的對(duì)應(yīng)屬性描述符。接著,它將根據(jù)該屬性描述符確定屬性是否為除數(shù)或模屬性以及是否使用適當(dāng)?shù)某龜?shù)或模值。接著,它將使用除數(shù)或模值以及提供的展開的索引(來自多邊形列表30)計(jì)算要與屬性描述符中的緩沖地址、偏移和步幅一起使用的頂點(diǎn)索引或?qū)嵗饕员銖某跫?jí)屬性(頂點(diǎn)著色器輸入屬性值)陣列26中檢索相關(guān)的屬性值。接著,片段著色器22將處理它已經(jīng)適當(dāng)?shù)丶虞d的屬性值以便對(duì)于所討論的每個(gè)片段產(chǎn)生適當(dāng)?shù)钠沃臄?shù)據(jù)值,并且(如果合適的話)將這些值存儲(chǔ)到例如圖塊緩沖器中以便后續(xù)導(dǎo)出到例如幀緩沖器以供顯示,如本領(lǐng)域中已知的。由以上可見,當(dāng)前實(shí)施例的屬性描述符機(jī)制用來針對(duì)獨(dú)立于著色器代碼的屬性值既表達(dá)索引計(jì)算,又表達(dá)存儲(chǔ)布局,并且相同的機(jī)制用來控制來自頂點(diǎn)著色器的輸入和輸出,并且頂點(diǎn)著色器和片段著色器二者都有權(quán)訪問相同的描述符(這允許貫通屬性起作用而不涉及任何繪制時(shí)間)。此外,以當(dāng)前實(shí)施例的方式使用與著色器代碼分離的屬性描述符允許與不同的屬性描述符集合一起使用相同的著色器代碼,并且意味著著色器代碼在屬性描述符控制的參數(shù)改變時(shí)不必改變。圖2-7示出了當(dāng)前實(shí)施例的操作。在這些圖中,矩形框指示存儲(chǔ)器中的數(shù)據(jù)陣列。在它們通過虛線連接的情況下,它們是相同陣列的一部分。在它們之間存在間隔的情況下,它們是不同的陣列。圓弧形框指示著色器代碼執(zhí)行。對(duì)于頂點(diǎn)著色,每個(gè)框存在一個(gè)執(zhí)行。對(duì)于圖右手側(cè)的著色器(其典型地為片段著色器,但是可以為其他種類)而言,對(duì)于每個(gè)框?qū)⒋嬖谠S多執(zhí)行,因?yàn)轫旤c(diǎn)可以通過超過一個(gè)多邊形讀取并且一個(gè)多邊形可以包含許多片段。箭頭指示由著色器讀取或?qū)懭氲臄?shù)據(jù)。圖2示出了針對(duì)非實(shí)例化操作的實(shí)施例的操作。圖2A示出了其中不存在標(biāo)識(shí)的“貫通”情況的情形,而圖2B示出了其中標(biāo)識(shí)“貫通”輸入屬性的操作。如圖2A中所示,頂點(diǎn)著色器20將針對(duì)每個(gè)頂點(diǎn)從初級(jí)屬性陣列26中讀取輸入屬性值,處理這些屬性值并且將它們作為輸出的頂點(diǎn)著色的屬性值存儲(chǔ)到次級(jí)屬性陣列28中,然后片段著色器22將從該陣列中讀取和處理這些屬性值。圖2B示出了其中將輸出屬性標(biāo)識(shí)為“貫通”屬性的情形。在這種情況下,如圖2B中所示,頂點(diǎn)著色器20并不處理該“貫通”輸出屬性。作為代替,片段著色器22直接從初級(jí)屬性陣列26讀取相關(guān)的屬性值,如箭頭35所示。(在這里,應(yīng)當(dāng)指出的是,頂點(diǎn)著色器仍然可以針對(duì)其他輸出(次級(jí))屬性讀取和處理貫通輸出(次級(jí))屬性為其拷貝的輸入(初級(jí))屬性,即其中在計(jì)算一個(gè)或多個(gè)其他(非貫通)次級(jí)屬性時(shí)也需要該初級(jí)屬性。)。圖3-7示出了當(dāng)在實(shí)例化模式下操作時(shí)當(dāng)前實(shí)施例的操作。圖3首先示出了其中不存在標(biāo)識(shí)的“貫通”或者僅僅“每頂點(diǎn)”或“每實(shí)例”的輸入情況的實(shí)例化模式操作。(因此,這實(shí)際上示出了“正?!钡膶?shí)例化模式操作。)。在這種情況下,如圖3中所示,將輸入(初級(jí))屬性陣列26組織為兩個(gè)緩沖器,一個(gè)用于其值在每實(shí)例基礎(chǔ)上定義的屬性40并且一個(gè)用于其值在每頂點(diǎn)基礎(chǔ)上定義的屬性41。頂點(diǎn)著色器20從這兩個(gè)屬性值緩沖器中讀取,并且實(shí)際上將其組合以便在用于每個(gè)屬性的次級(jí)(輸出)屬性陣列28中提供用于每個(gè)不同的頂點(diǎn)和實(shí)例組合的輸出值。然后,片段著色器22從次級(jí)屬性陣列28中適當(dāng)?shù)刈x取相關(guān)的頂點(diǎn)和實(shí)例組合的屬性值。
圖4示出了其中存在來自每實(shí)例輸入屬性的“貫通”的情形。在這種情況下,如圖4中的箭頭50所示,頂點(diǎn)著色器20并不處理標(biāo)識(shí)的“貫通”每實(shí)例屬性,而是作為代替片段著色器22在其需要每實(shí)例屬性值時(shí)直接從輸入每實(shí)例屬性緩沖器40中讀取它們(使用上面描述的除數(shù)屬性機(jī)制)。圖5示出了其中存在來自每頂點(diǎn)屬性的“貫通”的對(duì)應(yīng)情況。在這種情況下,如圖5中的箭頭60所示,頂點(diǎn)著色器20并不處理標(biāo)識(shí)的“貫通”每頂點(diǎn)屬性,而是作為代替片段著色器22在其需要每頂點(diǎn)屬性值時(shí)直接從輸入每頂點(diǎn)屬性緩沖器41中讀取它們(使用上面描述的模屬性機(jī)制)。圖6示出了其中存在僅僅依賴于每實(shí)例定義的頂點(diǎn)著色器輸入屬性的頂點(diǎn)著色器輸出(次級(jí))屬性的情形。在這種情況下,如圖6中所示,頂點(diǎn)著色器20針對(duì)頂點(diǎn)0如箭頭70所示將相關(guān)輸出屬性值的拷貝寫到次級(jí)屬性陣列28的適當(dāng)緩沖器71,但是對(duì)于其中也處理該僅僅依賴于每實(shí)例輸入的屬性的其他頂點(diǎn)而言,頂點(diǎn)著色器20并不將對(duì)應(yīng)的輸出值存儲(chǔ)到次級(jí)屬性緩沖器71中(如圖6中的虛線72所示)。通過這種方式,次級(jí)屬性值的僅僅一個(gè)拷貝存儲(chǔ)到次級(jí)屬性陣列28中。然后,無論何時(shí)片段著色器22需要該僅僅依賴于每實(shí)例輸入的輸出屬性,其借助于使用適當(dāng)?shù)拇渭?jí)屬性描述符而被引導(dǎo)為如箭頭73所示讀取次級(jí)屬性陣列28的緩沖器71中的相關(guān)輸出(次級(jí))屬性值的適當(dāng)?shù)膯蝹€(gè)拷貝(使用上面描述的除數(shù)屬性機(jī)制)。圖7示出了其中存在僅僅依賴于每頂點(diǎn)定義的頂點(diǎn)著色器輸入屬性的頂點(diǎn)著色器輸出(次級(jí))屬性的對(duì)應(yīng)情形。在這種情況下,如圖7中所示,頂點(diǎn)著色器20針對(duì)實(shí)例0如箭頭80所示將相關(guān)輸出屬性值的拷貝寫到次級(jí)屬性陣列28的適當(dāng)緩沖器71,但是對(duì)于其中也處理該僅僅依賴于每頂點(diǎn)輸入的屬性的其他實(shí)例而言,頂點(diǎn)著色器20并不將對(duì)應(yīng)的輸出值存儲(chǔ)到次級(jí)屬性緩沖器71中(如圖7中的虛線82所示)。通過這種方式,次級(jí)屬性值的僅僅一個(gè)拷貝存儲(chǔ)到次級(jí)屬性陣列28中。然后,無論何時(shí)片段著色器22需要該僅僅依賴于每頂點(diǎn)輸入的輸出屬性,其借助于使用適當(dāng)?shù)拇渭?jí)屬性描述符而被引導(dǎo)為如箭頭83所示讀取次級(jí)屬性陣列28的緩沖器71中的相關(guān)輸出(次級(jí))屬性值的適當(dāng)?shù)膯蝹€(gè)拷貝(使用上面描述的模屬性機(jī)制)。上面的圖2-7示出了當(dāng)前實(shí)施例的基本操作模式。通常,頂點(diǎn)著色器輸出(次級(jí))屬性可以是上面所示的五種不同情況(正常、每頂點(diǎn)貫通、每實(shí)例貫通、每頂點(diǎn)寫減少或者每實(shí)例與減少)的任意組合。也存在第六種情況,其中輸出(次級(jí))屬性為常數(shù)。在這種情況下,恒定的次級(jí)屬性的每個(gè)需要的拷貝都可以作為單獨(dú)的次級(jí)屬性值而存儲(chǔ)??商鎿Q地,具有用于僅僅一個(gè)值的空間的緩沖器以及模值為I的模屬性類型(和寫減少)可以用來允許(并且使得)恒定的次級(jí)屬性值的僅僅一個(gè)拷貝被存儲(chǔ)(在這種情況下,僅僅頂點(diǎn)0/實(shí)例0線程將存儲(chǔ)該恒定值)。盡管在當(dāng)前實(shí)施例中,初級(jí)和次級(jí)屬性和屬性描述符陣列等等被示為單獨(dú)的陣列,但是本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,這樣的布置不是必需的,并且只要在使用時(shí)可以標(biāo)識(shí)和檢索適當(dāng)?shù)膶傩悦枋龇蛯傩灾担敲从糜趯⑦@些數(shù)據(jù)元素存儲(chǔ)到存儲(chǔ)器中的實(shí)際布置就可以根據(jù)需要而定。例如,可以存在存儲(chǔ)輸入和輸出(初級(jí)和次級(jí))屬性描述符二者的單個(gè)屬性描述符陣列。同樣地,各種屬性描述符以及屬性值和陣列可以根據(jù)需要全部存儲(chǔ)到相同的存儲(chǔ)器中或者存儲(chǔ)到不同的存儲(chǔ)器中,可以至少部分地被高速緩存等等。由以上所述可見,本發(fā)明在其優(yōu)選的實(shí)施例中至少提供了在圖形處理系統(tǒng)中減少 用于頂點(diǎn)著色器核心的存儲(chǔ)業(yè)務(wù)量和存儲(chǔ)使用量(以及因而功率使用量)。這在本發(fā)明的優(yōu)選實(shí)施例中至少通過以下方式來實(shí)現(xiàn)檢測(cè)何時(shí)直接從頂點(diǎn)著色 器輸入中拷貝頂點(diǎn)著色器輸出,并且在那種情形下,不產(chǎn)生拷貝輸出值且將其存儲(chǔ)到存儲(chǔ)器中,而是改為允許圖形流水線的諸如片段著色器之類的另外的階段直接訪問頂點(diǎn)著色器輸入值。在一個(gè)優(yōu)選的實(shí)施例中,也標(biāo)識(shí)其所依賴的頂點(diǎn)著色器輸入屬性僅僅在每頂點(diǎn)基礎(chǔ)上或僅僅在每實(shí)例基礎(chǔ)上定義的那些頂點(diǎn)著色器輸出(即依賴于僅僅每頂點(diǎn)定義的頂點(diǎn)著色器輸入屬性或者依賴于僅僅每實(shí)例定義的頂點(diǎn)著色器輸入屬性的那些頂點(diǎn)著色器輸出),并且在標(biāo)識(shí)了這樣的輸出的情況下,僅僅存儲(chǔ)那些輸出的每個(gè)值的一個(gè)拷貝,并且將系統(tǒng)配置成使得諸如片段著色器之類的后續(xù)圖形處理階段在需要輸出值的每個(gè)不同的時(shí)間重新使用該輸出值的單個(gè)拷貝。
權(quán)利要求
1.ー種操作圖形處理系統(tǒng)的方法,該圖形處理系統(tǒng)包括處理輸入屬性值以便產(chǎn)生輸出的頂點(diǎn)著色的屬性值以供該圖形處理系統(tǒng)的后續(xù)階段使用的頂點(diǎn)著色階段,該方法包括 識(shí)別何時(shí)由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同,以及 當(dāng)識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同吋 控制頂點(diǎn)著色器以便不從頂點(diǎn)著色器輸入屬性值中產(chǎn)生頂點(diǎn)著色器輸出屬性值;并且 使得需要使用本將由頂點(diǎn)著色器產(chǎn)生的頂點(diǎn)著色器輸出屬性值的后續(xù)圖形處理階段改為處理對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值。
2.權(quán)利要求I的方法,其中頂點(diǎn)著色器編譯器被配置成在識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同時(shí)省略在別的情況下將使得頂點(diǎn)著色器處理輸入屬性值以產(chǎn)生輸出屬性值的代碼。
3.權(quán)利要求I的方法,包括在識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同時(shí),通過使用用于圖形處理階段的加載指令而使得該后續(xù)圖形處理階段使用頂點(diǎn)著色器輸入屬性值,所述加載指令被配置成使得該圖形處理階段從頂點(diǎn)著色器輸入屬性值中而不是從頂點(diǎn)著色器輸出屬性值中加載要處理的值。
4.權(quán)利要求I的方法,其中索引機(jī)制用來檢索適當(dāng)?shù)膶傩灾?,并且該方法進(jìn)ー步包括 當(dāng)后續(xù)圖形處理階段要處理頂點(diǎn)著色器輸入屬性值時(shí),該后續(xù)圖形處理階段從向它提供的輸出索引值中導(dǎo)出用來檢索頂點(diǎn)著色器輸入屬性值的索引。
5.權(quán)利要求I的方法,其中后續(xù)圖形處理階段確定用于導(dǎo)出用來檢索頂點(diǎn)著色器輸入屬性值的索引的索引導(dǎo)出操作,其中要執(zhí)行的索引導(dǎo)出操作由與所討論的屬性關(guān)聯(lián)的元信息指示。
6.權(quán)利要求I的方法,包括 將要在加載和/或存儲(chǔ)所討論的屬性的值時(shí)使用的元信息與頂點(diǎn)著色階段的ー個(gè)或多個(gè)屬性關(guān)聯(lián);以及 圖形處理階段在其要加載和/或存儲(chǔ)頂點(diǎn)著色階段屬性的值時(shí),首先讀取與該屬性關(guān)聯(lián)的任何元信息并且然后在其要加載或存儲(chǔ)該屬性的值時(shí)使用該元信息。
7.權(quán)利要求6的方法,其中元信息指示以下ー個(gè)或多個(gè) 用于導(dǎo)出用來檢索屬性的值的索引的技術(shù)和必要的任何數(shù)據(jù);用于屬性值的基本存儲(chǔ)地址;存儲(chǔ)器中屬性值的間隔的指示;所討論的屬性的值相對(duì)于基本存儲(chǔ)地址的位置的指示;以及用于該屬性的組件數(shù)據(jù)類型和組件數(shù)量的指示。
8.ー種操作圖形處理系統(tǒng)的方法,該圖形處理系統(tǒng)包括頂點(diǎn)著色階段,該頂點(diǎn)著色階段處理頂點(diǎn)著色階段的輸入屬性的值以便產(chǎn)生頂點(diǎn)著色階段的輸出屬性的值以供該圖形處理系統(tǒng)的后續(xù)階段使用,該方法包括 將要在加載和/或存儲(chǔ)所討論的屬性的值時(shí)使用的元信息與頂點(diǎn)著色階段的ー個(gè)或多個(gè)屬性關(guān)聯(lián)。
9.權(quán)利要求8的方法,包括圖形處理階段在其要加載和/或存儲(chǔ)頂點(diǎn)著色階段屬性的值時(shí),首先讀取與該屬性關(guān)聯(lián)的任何元信息并且然后在其加載或存儲(chǔ)該屬性的值時(shí)使用該元信息。
10.權(quán)利要求8的方法,其中元信息指示以下ー個(gè)或多個(gè) 用于導(dǎo)出用來檢索屬性的值的索引的技術(shù)和必要的任何數(shù)據(jù);用于屬性值的基本存儲(chǔ)地址;存儲(chǔ)器中屬性值的間隔的指示;所討論的屬性的值相對(duì)于基本存儲(chǔ)地址的位置的指示;以及用于該屬性的組件數(shù)據(jù)類型和組件數(shù)量的指示。
11.一種用于處理圖形的系統(tǒng),包括 包括多個(gè)圖形處理階段的圖形處理器,所述圖形處理階段包括頂點(diǎn)著色階段以及頂點(diǎn)著色階段后續(xù)的至少ー個(gè)處理階段,其中頂點(diǎn)著色階段處理輸入屬性值以便產(chǎn)生輸出的頂點(diǎn)著色的屬性值以供圖形處理器的所述至少一個(gè)后續(xù)處理階段使用;以及 處理器,其被配置成 識(shí)別何時(shí)由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同; 并且當(dāng)識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同時(shí),使得頂點(diǎn)著色器不從頂點(diǎn)著色器輸入屬性值中產(chǎn)生頂點(diǎn)著色器輸出屬性值; 并且在識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同的情況下,使得將處理頂點(diǎn)著色階段的輸出的所述至少一個(gè)后續(xù)圖形處理階段處理對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值而不是在別的情況下將由頂點(diǎn)著色器產(chǎn)生的頂點(diǎn)著色器輸出屬性值。
12.權(quán)利要求11的系統(tǒng),其中頂點(diǎn)著色器編譯器被配置成在識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同時(shí)省略在別的情況下將使得頂點(diǎn)著色器處理輸入屬性值以產(chǎn)生輸出屬性值的代碼。
13.權(quán)利要求11的系統(tǒng),其中處理器被配置成在識(shí)別出由頂點(diǎn)著色器從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將與從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值相同時(shí),使用用于圖形處理階段的加載指令以使得后續(xù)圖形處理階段使用頂點(diǎn)著色器輸入屬性值,所述加載指令被配置成使得該圖形處理階段從頂點(diǎn)著色器輸入屬性值中而不是從頂點(diǎn)著色器輸出屬性值中加載要處理的值。
14.權(quán)利要求11的系統(tǒng),其中索引機(jī)制用來檢索適當(dāng)?shù)膶傩灾?,并? 所述至少一個(gè)后續(xù)圖形處理階段包括用于在后續(xù)圖形處理階段要處理頂點(diǎn)著色器輸入屬性值時(shí)從向它提供的輸出索引值中導(dǎo)出用來檢索頂點(diǎn)著色器輸入屬性值的索引的裝置。
15.權(quán)利要求11的系統(tǒng),其中所述至少一個(gè)后續(xù)圖形處理階段包括用于確定用于導(dǎo)出用來檢索頂點(diǎn)著色器輸入屬性值的索引的索引導(dǎo)出操作的裝置,其中要執(zhí)行的索引導(dǎo)出操作由與所討論的屬性關(guān)聯(lián)的元信息指示。
16.權(quán)利要求11的系統(tǒng),包括 處理器,其被配置成 將要在加載和/或存儲(chǔ)所討論的屬性的值時(shí)使用的元信息與頂點(diǎn)著色階段的ー個(gè)或多個(gè)屬性關(guān)聯(lián);并且其中 一個(gè)或多個(gè)所述圖形處理階段被配置成在其要加載和/或存儲(chǔ)頂點(diǎn)著色階段屬性的值時(shí),首先讀取與該屬性關(guān)聯(lián)的任何元信息并且然后在其加載或存儲(chǔ)該屬性的值時(shí)使用該兀1目息。
17.權(quán)利要求16的系統(tǒng),其中元信息指示以下ー個(gè)或多個(gè) 用于導(dǎo)出用來檢索屬性的值的索引的技術(shù)和必要的任何數(shù)據(jù);用于屬性值的基本存儲(chǔ)地址;存儲(chǔ)器中屬性值的間隔的指示;所討論的屬性的值相對(duì)于基本存儲(chǔ)地址的位置的指示;以及用于該屬性的組件數(shù)據(jù)類型和組件數(shù)量的指示。
18.—種圖形處理系統(tǒng),包括 多個(gè)圖形處理階段,其包括頂點(diǎn)著色階段以及頂點(diǎn)著色階段后續(xù)的并且將處理頂點(diǎn)著色階段的輸出的至少ー個(gè)處理階段;其中 頂點(diǎn)著色階段處理頂點(diǎn)著色階段的輸入屬性的值以便產(chǎn)生頂點(diǎn)著色階段的輸出屬性的值以供圖形處理系統(tǒng)的后續(xù)階段使用;并且 圖形處理系統(tǒng)被配置成將要在加載和/或存儲(chǔ)所討論的屬性的值時(shí)使用的元信息與頂點(diǎn)著色階段的ー個(gè)或多個(gè)屬性關(guān)聯(lián)。
19.權(quán)利要求18的系統(tǒng),其中 一個(gè)或多個(gè)所述圖形處理階段被配置成在其要加載和/或存儲(chǔ)頂點(diǎn)著色階段屬性的值時(shí),首先讀取與該屬性關(guān)聯(lián)的任何元信息并且然后在其加載或存儲(chǔ)該屬性的值時(shí)使用該兀1目息。
20.權(quán)利要求18的系統(tǒng),其中元信息指示以下ー個(gè)或多個(gè) 用于導(dǎo)出用來檢索屬性的值的索引的技術(shù)和必要的任何數(shù)據(jù);用于屬性值的基本存儲(chǔ)地址;存儲(chǔ)器中屬性值的間隔的指示;所討論的屬性的值相對(duì)于基本存儲(chǔ)地址的位置的指示;用于該屬性的組件數(shù)據(jù)類型和組件數(shù)量的指示。
21.一種計(jì)算機(jī)程序元件,包括當(dāng)該程序元件在數(shù)據(jù)處理裝置上運(yùn)行時(shí)用于執(zhí)行權(quán)利要求I的方法的計(jì)算機(jī)軟件代碼部分。
全文摘要
本發(fā)明涉及圖形處理。圖形處理器包括頂點(diǎn)著色器20,該頂點(diǎn)著色器處理來自頂點(diǎn)緩沖器26的輸入屬性值以便產(chǎn)生由圖形處理器的光柵器/片段著色器22在處理用于顯示的圖像時(shí)使用的輸出的頂點(diǎn)著色的屬性值28。系統(tǒng)識(shí)別何時(shí)由頂點(diǎn)著色器20從頂點(diǎn)著色器輸入屬性值中產(chǎn)生的頂點(diǎn)著色器輸出屬性值將是從其產(chǎn)生所述頂點(diǎn)著色器輸出屬性值的頂點(diǎn)著色器輸入屬性值的拷貝。在這種情況下,頂點(diǎn)著色器20不產(chǎn)生拷貝的頂點(diǎn)著色器輸出屬性值,而是改為光柵器/片段著色器22處理對(duì)應(yīng)的頂點(diǎn)著色器輸入屬性值以代替在別的情況下將由頂點(diǎn)著色器20產(chǎn)生的拷貝的頂點(diǎn)著色器輸出屬性值。
文檔編號(hào)G06T1/00GK102708533SQ20121005292
公開日2012年10月3日 申請(qǐng)日期2012年3月2日 優(yōu)先權(quán)日2011年3月3日
發(fā)明者A.S.克里斯滕森, J.奈斯塔德 申請(qǐng)人:Arm有限公司