本發(fā)明涉及用于圖形處理的技術(shù),且更具體來(lái)說(shuō),涉及用于圖形處理中的混合渲染模式的技術(shù)。
背景技術(shù):
用于顯示的視覺(jué)內(nèi)容(例如用于圖形用戶(hù)接口和視頻游戲的內(nèi)容)可由圖形處理單元(gpu)產(chǎn)生。gpu可將二維或三維(3d)對(duì)象轉(zhuǎn)換成可顯示的二維(2d)像素表示。將關(guān)于3d對(duì)象的信息轉(zhuǎn)換成可顯示的位圖被稱(chēng)為像素渲染,且要求相當(dāng)大的存儲(chǔ)器和處理能力。在過(guò)去,3d圖形能力僅在強(qiáng)大工作站上可用。然而,現(xiàn)在3d圖形加速器常見(jiàn)于個(gè)人計(jì)算機(jī)(pc)中以及嵌入式裝置中,例如智能電話、平板計(jì)算機(jī)、便攜式媒體播放器、便攜式視頻游戲控制臺(tái)等。通常,嵌入式裝置相比于常規(guī)pc具有較少計(jì)算能力和存儲(chǔ)器容量。由此,當(dāng)在嵌入式系統(tǒng)上實(shí)施此類(lèi)技術(shù)時(shí),3d圖形渲染技術(shù)中增加的復(fù)雜性帶來(lái)困難。
技術(shù)實(shí)現(xiàn)要素:
一般來(lái)說(shuō),本發(fā)明描述用于圖形處理中的混合渲染模式別的技術(shù)。明確地說(shuō),在一些實(shí)例中,本發(fā)明描述混合渲染模式,其使用分倉(cāng)通過(guò)來(lái)確定幀的哪些圖元可觸摸或以其它方式促成場(chǎng)景的倉(cāng)。接著僅使用通過(guò)分倉(cāng)通過(guò)確定為觸摸所述倉(cāng)的三角形來(lái)對(duì)所述倉(cāng)執(zhí)行渲染。在所述倉(cāng)的渲染期間,深度緩沖器中的值存儲(chǔ)在芯片上快速圖形存儲(chǔ)器(gmem)中。一旦倉(cāng)已渲染,就將深度緩沖器中的值解析到系統(tǒng)存儲(chǔ)器。然而,不是也將值存儲(chǔ)在gmem中的色彩緩沖器(即,存儲(chǔ)像素的色彩值的緩沖器)中,且接著在倉(cāng)的渲染完成時(shí)將色彩緩沖器解析到系統(tǒng)存儲(chǔ)器,而是本發(fā)明的渲染技術(shù)可將像素值直接寫(xiě)入到存儲(chǔ)在系統(tǒng)存儲(chǔ)器中的色彩緩沖器,而不使用gmem。在倉(cāng)的渲染期間,在其中色彩緩沖器不頻繁更新或僅更新一次的情境中,將色彩緩沖器值直接寫(xiě)入到系統(tǒng)存儲(chǔ)器可為有益的。
在本發(fā)明的一個(gè)實(shí)例中,一種圖形處理方法包括:用圖形處理單元(gpu),使用一或多個(gè)圖形運(yùn)算來(lái)渲染幀的一或多個(gè)部分;用所述gpu,根據(jù)所述一或多個(gè)圖形運(yùn)算,將色彩數(shù)據(jù)直接寫(xiě)入到系統(tǒng)存儲(chǔ)器中的色彩緩沖器;用所述gpu,根據(jù)所述一或多個(gè)圖形運(yùn)算,將深度數(shù)據(jù)寫(xiě)入到圖形存儲(chǔ)器中的深度緩沖器;以及在所述幀的所述一或多個(gè)部分的渲染完成時(shí),用所述gpu,將所述圖形存儲(chǔ)器中的所述深度緩沖器解析到系統(tǒng)存儲(chǔ)器。
在本發(fā)明的另一實(shí)例中,一種經(jīng)配置以用于圖形處理的設(shè)備包括:圖形存儲(chǔ)器,其經(jīng)配置以存儲(chǔ)圖形數(shù)據(jù);gpu,其與系統(tǒng)存儲(chǔ)器和圖形存儲(chǔ)器通信,所述gpu其經(jīng)配置以:使用一或多個(gè)圖形運(yùn)算來(lái)渲染幀的一或多個(gè)部分;根據(jù)所述一或多個(gè)圖形運(yùn)算,將色彩數(shù)據(jù)直接寫(xiě)入到系統(tǒng)存儲(chǔ)器中的色彩緩沖器;根據(jù)所述一或多個(gè)圖形運(yùn)算,將深度數(shù)據(jù)寫(xiě)入到圖形存儲(chǔ)器中的深度緩沖器;以及在所述幀的所述一或多個(gè)部分的渲染完成時(shí),將所述圖形存儲(chǔ)器中的深度緩沖器解析到所述系統(tǒng)存儲(chǔ)器。
在本發(fā)明的另一實(shí)例中,一種經(jīng)配置以用于圖形處理的設(shè)備包括:用于使用一或多個(gè)圖形運(yùn)算來(lái)渲染幀的一或多個(gè)部分的裝置;用于根據(jù)所述一或多個(gè)圖形運(yùn)算,將色彩數(shù)據(jù)直接寫(xiě)入到系統(tǒng)存儲(chǔ)器中的色彩緩沖器的裝置;用于根據(jù)所述一或多個(gè)圖形運(yùn)算,將深度數(shù)據(jù)寫(xiě)入到圖形存儲(chǔ)器中的深度緩沖器的裝置;以及用于在所述幀的所述一或多個(gè)部分的渲染完成時(shí),將所述圖形存儲(chǔ)器中的所述深度緩沖器解析到系統(tǒng)存儲(chǔ)器的裝置。
在另一實(shí)例中,本發(fā)明描述一種存儲(chǔ)指令的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體,所述指令在被執(zhí)行時(shí),致使經(jīng)配置以用于圖形處理的裝置的一或多個(gè)處理器:使用一或多個(gè)圖形運(yùn)算來(lái)渲染幀的一或多個(gè)部分;根據(jù)所述一或多個(gè)圖形運(yùn)算,將色彩數(shù)據(jù)直接寫(xiě)入到系統(tǒng)存儲(chǔ)器中的色彩緩沖器;根據(jù)所述一或多個(gè)圖形運(yùn)算,將深度數(shù)據(jù)寫(xiě)入到圖形存儲(chǔ)器中的深度緩沖器;以及在所述幀的所述一或多個(gè)部分的渲染完成時(shí),將所述圖形存儲(chǔ)器中的所述深度緩沖器解析到所述系統(tǒng)存儲(chǔ)器。
還在存儲(chǔ)用于致使處理器執(zhí)行所述技術(shù)的指令的設(shè)備和計(jì)算機(jī)可讀存儲(chǔ)媒體的方面描述本發(fā)明的技術(shù)。附圖和以下描述中陳述一或多個(gè)實(shí)例的細(xì)節(jié)。其它特征、目標(biāo)和優(yōu)點(diǎn)將從描述和圖式以及所附權(quán)利要求書(shū)顯而易見(jiàn)。
附圖說(shuō)明
圖1是示出經(jīng)配置以使用本發(fā)明的技術(shù)的實(shí)例計(jì)算裝置的框圖。
圖2是示出經(jīng)配置以使用本發(fā)明的技術(shù)的實(shí)例處理單元的框圖。
圖3是說(shuō)明幀的倉(cāng)的概念圖。
圖4是更詳細(xì)地說(shuō)明幀的倉(cāng)的概念圖。
圖5是說(shuō)明根據(jù)本發(fā)明的技術(shù)的用于使用“軟件”分倉(cāng)的混合渲染模式的命令緩沖器的概念圖。
圖6是說(shuō)明根據(jù)本發(fā)明的技術(shù)的用于使用“硬件”分倉(cāng)的混合渲染模式的命令緩沖器的概念圖。
圖7是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的方法的流程圖。
具體實(shí)施方式
本發(fā)明涉及用于圖形處理的技術(shù),且更具體來(lái)說(shuō),涉及用于混合渲染模式的技術(shù)。當(dāng)前圖形渲染系統(tǒng)通常使用分倉(cāng)渲染模式(有時(shí)稱(chēng)為基于平鋪塊的渲染)或直接渲染模式來(lái)渲染場(chǎng)景。在許多實(shí)例中,圖形處理單元(gpu)可經(jīng)配置以選擇性地執(zhí)行分倉(cāng)渲染和基于平鋪塊的渲染兩者。在分倉(cāng)渲染中,通過(guò)使幀分裂成較小部分(例如,矩形倉(cāng)或平鋪塊)并單獨(dú)地渲染這些倉(cāng)中的每一者來(lái)渲染2d或3d場(chǎng)景的一個(gè)幀。分倉(cāng)渲染對(duì)于其中極少專(zhuān)用快速圖形存儲(chǔ)器(gmem)可用的應(yīng)用中有用,例如對(duì)于移動(dòng)應(yīng)用。所述倉(cāng)的大小可經(jīng)配置以表示gmem中可用的存儲(chǔ)量。舉例來(lái)說(shuō),如果gmem能夠存儲(chǔ)512kb,那么倉(cāng)的大小可配置為使得包含于所述倉(cāng)中的像素?cái)?shù)據(jù)小于或等于512kb。
可存儲(chǔ)在gmem中的像素?cái)?shù)據(jù)可包含像素的深度值和像素的色彩值。所述倉(cāng)中的像素的深度值可存儲(chǔ)在gmem中的深度緩沖器中。同樣地,所述倉(cāng)中的像素的色彩值可存儲(chǔ)在gmem中的色彩緩沖器中。當(dāng)倉(cāng)的渲染完成時(shí),可將深度緩沖器和色彩緩沖器兩者解析到系統(tǒng)存儲(chǔ)器(例如解析到動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram))。也就是說(shuō),將數(shù)據(jù)從緩沖器解析到系統(tǒng)存儲(chǔ)器包含將存儲(chǔ)在緩沖器(例如深度緩沖器和色彩緩沖器兩者)中的值從gmem寫(xiě)入到系統(tǒng)存儲(chǔ)器。以此方式,下一倉(cāng)的深度值和色彩值可存儲(chǔ)在gmem中的深度緩沖器和色彩緩沖器中。
另一方面,直接渲染模式下的圖形處理并不將幀分裂成較小部分(例如倉(cāng)或平鋪塊)。實(shí)情為,立即渲染整個(gè)幀。在一些圖形處理系統(tǒng)(例如,移動(dòng)裝置上的圖形處理系統(tǒng))中,并不存在足夠的gmem來(lái)保存像素?cái)?shù)據(jù)的整個(gè)幀。實(shí)情為,對(duì)于直接渲染模式,使用較慢的系統(tǒng)存儲(chǔ)器來(lái)渲染所述幀。由此,將深度值和色彩值分別直接寫(xiě)入到系統(tǒng)存儲(chǔ)器中的深度緩沖器和色彩緩沖器。
由于直接渲染技術(shù)利用系統(tǒng)存儲(chǔ)器來(lái)存儲(chǔ)色彩緩沖器和深度緩沖器,因此直接渲染技術(shù)通常經(jīng)歷來(lái)自系統(tǒng)存儲(chǔ)器的較多存儲(chǔ)器業(yè)務(wù)。gpu與系統(tǒng)存儲(chǔ)器之間的存儲(chǔ)器業(yè)務(wù)通常較慢,且因此限制gpu性能。另外,gpu與系統(tǒng)存儲(chǔ)器之間的存儲(chǔ)器業(yè)務(wù)消耗比gpu與芯片上圖形存儲(chǔ)器之間的存儲(chǔ)器業(yè)務(wù)多的電力。
通常,與直接渲染相比,分倉(cāng)渲染技術(shù)經(jīng)歷gpu與系統(tǒng)存儲(chǔ)器之間的較少總存儲(chǔ)器業(yè)務(wù),因?yàn)榉謧}(cāng)渲染技術(shù)使用gmem來(lái)存儲(chǔ)色彩緩沖器和深度緩沖器。然而,越來(lái)越多的應(yīng)用程序和gpu架構(gòu)使用深度測(cè)試,包含高級(jí)深度測(cè)試,來(lái)降低色彩讀取/寫(xiě)入復(fù)雜性。也就是說(shuō),基于深度緩沖器中的值來(lái)執(zhí)行圖形運(yùn)算,例如著色,致使此類(lèi)著色僅對(duì)離用戶(hù)“最近”的像素執(zhí)行。由此,需要像素值到色彩緩沖器的較少寫(xiě)入。如果倉(cāng)中的大多數(shù)像素幾次(或僅一次)寫(xiě)入到色彩緩沖器,那么將像素寫(xiě)入gmem中的色彩緩沖器中且接著將色彩緩沖器從系統(tǒng)存儲(chǔ)器解析出來(lái)可導(dǎo)致比僅將像素寫(xiě)入到直接在系統(tǒng)存儲(chǔ)器中的色彩緩沖器中低的存儲(chǔ)器性能。也就是說(shuō),當(dāng)多次將色彩和/或深度值寫(xiě)入到色彩緩沖器和深度緩沖器時(shí),gmem的使用提供最多優(yōu)點(diǎn)。每倉(cāng)僅幾次將色彩值寫(xiě)入到gmem,且接著將此類(lèi)值解析到系統(tǒng)可導(dǎo)致比僅直接將所述值寫(xiě)入到系統(tǒng)存儲(chǔ)器低的存儲(chǔ)器和電力性能。
鑒于這些缺點(diǎn),本發(fā)明提出一種混合渲染系統(tǒng),其中將像素值寫(xiě)入到直接在系統(tǒng)存儲(chǔ)器(例如dram)中的色彩緩沖器中,且將深度值寫(xiě)入到gmem中的深度緩沖器中。本發(fā)明的混合渲染技術(shù)可結(jié)合或不結(jié)合分倉(cāng)技術(shù)一起使用。因?yàn)樯疃葟?fù)雜性(即,深度讀取/寫(xiě)入的數(shù)目)通常高于色彩復(fù)雜性(即,像素值讀取/寫(xiě)入的數(shù)目),所以本發(fā)明的技術(shù)可節(jié)約從gmem到dram的不必要的色彩緩沖器解析。也就是說(shuō),對(duì)于其中像素值可能每倉(cāng)將寫(xiě)入到gmem幾次或僅一次的情境,本發(fā)明的混合渲染技術(shù)提供較大的存儲(chǔ)器使用效率。
圖1是說(shuō)明可用于實(shí)施本發(fā)明的用于執(zhí)行混合渲染模式的技術(shù)的實(shí)例計(jì)算裝置2的框圖。計(jì)算裝置2可包括(例如)個(gè)人計(jì)算機(jī)、桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、計(jì)算機(jī)工作站、視頻游戲平臺(tái)或控制臺(tái)、移動(dòng)電話(例如,蜂窩式或衛(wèi)星電話、陸線電話、因特網(wǎng)電話)、手持式裝置(例如,便攜式視頻游戲裝置或個(gè)人數(shù)字助理(pda)、個(gè)人音樂(lè)播放器、視頻播放器)、顯示裝置、電視機(jī)、電視機(jī)頂盒、服務(wù)器、中間網(wǎng)絡(luò)裝置、主機(jī)計(jì)算機(jī)、任何移動(dòng)裝置或處理和/或顯示圖形數(shù)據(jù)的任何其它類(lèi)型的裝置。
如圖1的實(shí)例中所說(shuō)明,計(jì)算裝置2可包含用戶(hù)輸入接口4、中央處理單元(cpu)6、存儲(chǔ)器控制器8、系統(tǒng)存儲(chǔ)器10、圖形處理單元(gpu)12、圖形存儲(chǔ)器(gmem)14、顯示接口16、顯示器18以及總線20和22。注意,在一些實(shí)例中,gmem14可與gpu12“在芯片上”。在一些情況下,例如在芯片上系統(tǒng)(soc)設(shè)計(jì)中,圖1中所示的所有硬件元件可在芯片上。用戶(hù)輸入接口4、cpu6、存儲(chǔ)器控制器8、gpu12和顯示接口16可使用總線20彼此通信。存儲(chǔ)器控制器8和系統(tǒng)存儲(chǔ)器10也可使用總線22彼此通信??偩€20、22可為多種總線結(jié)構(gòu)中的任一者,例如第三代總線(例如,超傳輸(hypertransport)總線或無(wú)限帶寬(infiniband)總線)、第二代總線(例如,高級(jí)圖形端口總線、周邊組件互連(pci)高速總線,或高級(jí)exentisible接口(axi)總線)或另一類(lèi)型的總線或裝置互連件。應(yīng)注意,圖1中所示的不同組件之間的總線和通信接口的特定配置僅是示范性的,且具有相同或不同組件的計(jì)算裝置和/或其它圖形處理系統(tǒng)的其它配置可用于實(shí)施本發(fā)明的技術(shù)。
cpu6可包括控制計(jì)算裝置2的操作的通用或?qū)S锰幚砥?。用?hù)可將輸入提供到計(jì)算裝置2以致使cpu6執(zhí)行一或多個(gè)軟件應(yīng)用程序。在cpu6上執(zhí)行的軟件應(yīng)用程序可包含(例如)操作系統(tǒng)、字處理器應(yīng)用程序、電子郵件應(yīng)用程序、電子表格應(yīng)用程序、媒體播放器應(yīng)用程序、視頻游戲應(yīng)用程序、圖形用戶(hù)接口應(yīng)用程序或另一程序。另外,cpu6可執(zhí)行用于控制gpu12的操作的gpu驅(qū)動(dòng)程序7。用戶(hù)可經(jīng)由一或多個(gè)輸入裝置(未圖示)(例如,鍵盤(pán)、鼠標(biāo)、麥克風(fēng)、觸摸墊或經(jīng)由用戶(hù)輸入接口4耦合到計(jì)算裝置2的另一輸入裝置)將輸入提供到計(jì)算裝置2。
在cpu6上執(zhí)行的軟件應(yīng)用程序可包含指令cpu6以致使向顯示器18渲染圖形數(shù)據(jù)的一或多個(gè)圖形渲染指令。在一些實(shí)例中,所述軟件指令可符合圖形應(yīng)用編程接口(api),例如開(kāi)放圖形庫(kù)
存儲(chǔ)器控制器8促進(jìn)數(shù)據(jù)進(jìn)出系統(tǒng)存儲(chǔ)器10的傳送。舉例來(lái)說(shuō),存儲(chǔ)器控制器8可接收存儲(chǔ)器讀取和寫(xiě)入命令,且服務(wù)相對(duì)于存儲(chǔ)器系統(tǒng)10的此類(lèi)命令,以便為計(jì)算裝置2中的組件提供存儲(chǔ)器服務(wù)。存儲(chǔ)器控制器8經(jīng)由存儲(chǔ)器總線22以通信方式耦合到系統(tǒng)存儲(chǔ)器10。雖然在圖1中將存儲(chǔ)器控制器8說(shuō)明為與cpu6和系統(tǒng)存儲(chǔ)器10兩者分開(kāi)的處理模塊,但在其它實(shí)例中,存儲(chǔ)器控制器8的一些或全部功能性可實(shí)施在cpu6和系統(tǒng)存儲(chǔ)器10中的一或兩者上。
系統(tǒng)存儲(chǔ)器10可存儲(chǔ)可由cpu6存取以用于執(zhí)行的程序模塊和/或指令和/或由在cpu6上執(zhí)行的程序使用的數(shù)據(jù)。舉例來(lái)說(shuō),系統(tǒng)存儲(chǔ)器10可存儲(chǔ)窗口管理器應(yīng)用程序,其由cpu6使用以在顯示器18上呈現(xiàn)圖形用戶(hù)接口(gui)。另外,系統(tǒng)存儲(chǔ)器10可存儲(chǔ)用戶(hù)應(yīng)用程序以及與所述應(yīng)用程序相關(guān)聯(lián)的應(yīng)用程序表面數(shù)據(jù)。系統(tǒng)存儲(chǔ)器10可另外存儲(chǔ)由計(jì)算裝置2的其它組件使用和/或產(chǎn)生的信息。舉例來(lái)說(shuō),系統(tǒng)存儲(chǔ)器10可充當(dāng)gpu12的裝置存儲(chǔ)器,且可存儲(chǔ)將由gpu12對(duì)其進(jìn)行操作的數(shù)據(jù),以及因gpu12執(zhí)行的操作而產(chǎn)生的數(shù)據(jù)。舉例來(lái)說(shuō),系統(tǒng)存儲(chǔ)器10可存儲(chǔ)紋理緩沖器、深度緩沖器、模板緩沖器、頂點(diǎn)緩沖器、幀緩沖器等的任何組合。系統(tǒng)存儲(chǔ)器10可包含一或多個(gè)易失性或非易失性存儲(chǔ)器或存儲(chǔ)裝置,例如隨機(jī)存取存儲(chǔ)器(ram)、靜態(tài)ram(sram)、動(dòng)態(tài)ram(dram)、只讀存儲(chǔ)器(rom)、可擦除可編程rom(eprom)、電可擦除可編程rom(eeprom)、快閃存儲(chǔ)器、磁性數(shù)據(jù)媒體或光學(xué)存儲(chǔ)媒體。
gpu12可經(jīng)配置以執(zhí)行圖形操作來(lái)向顯示器18渲染一或多個(gè)圖形基元。因此,當(dāng)在cpu6上執(zhí)行的軟件應(yīng)用程序中的一者需要圖形處理時(shí),cpu6可向gpu12提供圖形命令和圖形數(shù)據(jù)以用于向顯示器18渲染。圖形數(shù)據(jù)可包含(例如)繪制命令、狀態(tài)信息、圖元信息、紋理信息等。在一些情況下,gpu12可內(nèi)置有高度并行的結(jié)構(gòu),與cpu6相比,所述結(jié)構(gòu)提供對(duì)復(fù)雜圖形相關(guān)操作的更高效的處理。舉例來(lái)說(shuō),gpu12可包含經(jīng)配置而以并行方式對(duì)多個(gè)頂點(diǎn)或像素操作的多個(gè)處理元件。在一些情況下,gpu12的高度并行本質(zhì)允許gpu12比使用cpu6直接將場(chǎng)景繪制到顯示器18更快速地將圖形圖像(例如,gui和二維(2d)和/或三維(3d)圖形場(chǎng)景)繪制到顯示器18上。
在一些情況下,可將gpu12集成到計(jì)算裝置2的主板中。在其它情況下,gpu12可存在于圖形卡上,所述圖形卡安裝在計(jì)算裝置2的主板中的端口中或可以其它方式并入經(jīng)配置以與計(jì)算裝置2交互操作的外圍裝置內(nèi)。gpu12可包含一或多個(gè)處理器,例如一或多個(gè)微處理器、專(zhuān)用集成電路(asic)、現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)、數(shù)字信號(hào)處理器(dsp)或其它等效的集成或離散邏輯電路。
gpu12可直接耦合到gmem14。因此,gpu12可在不必使用總線20的情況下從gmem14讀取數(shù)據(jù)且將數(shù)據(jù)寫(xiě)入到gmem14。換句話說(shuō),gpu12可使用本地存儲(chǔ)裝置而非芯片外存儲(chǔ)器在本地處理數(shù)據(jù)。這通過(guò)消除gpu12經(jīng)由總線20讀取和寫(xiě)入數(shù)據(jù)的需要來(lái)允許gpu12以更高效的方式操作,其中經(jīng)由總線操作可經(jīng)歷繁重的總線業(yè)務(wù)。然而,在一些情況下,gpu12可不包含單獨(dú)的存儲(chǔ)器,而是改為經(jīng)由總線20利用存儲(chǔ)器10。gmem14可包含一或多個(gè)易失性或非易失性存儲(chǔ)器或存儲(chǔ)裝置,例如隨機(jī)存取存儲(chǔ)器(ram)、靜態(tài)ram(sram)、動(dòng)態(tài)ram(dram)、可擦除可編程rom(eprom)、電可擦除可編程rom(eeprom)、快閃存儲(chǔ)器、磁性數(shù)據(jù)媒體或光學(xué)存儲(chǔ)媒體。
cpu6和/或gpu12可將經(jīng)渲染圖像數(shù)據(jù)存儲(chǔ)在幀緩沖器15中。幀緩沖器15可為獨(dú)立存儲(chǔ)器或可分配在系統(tǒng)存儲(chǔ)器10內(nèi)。顯示接口16可從幀緩沖器15檢索數(shù)據(jù),并配置顯示器18以顯示由經(jīng)渲染圖像數(shù)據(jù)表示的圖像。在一些實(shí)例中,顯示接口16可包含經(jīng)配置以將從幀緩沖器檢索的數(shù)字值轉(zhuǎn)換為可由顯示器18消耗的模擬信號(hào)的數(shù)/模轉(zhuǎn)換器(dac)。在其它實(shí)例中,顯示接口16可將數(shù)字值直接傳遞到顯示器18以供處理。顯示器18可包含監(jiān)視器、電視機(jī)、投影裝置、液晶顯示器(lcd)、等離子顯示面板、發(fā)光二極管(led)陣列(例如有機(jī)led(oled)顯示器)、陰極射線管(crt)顯示器、電子紙、表面?zhèn)鲗?dǎo)電子發(fā)射顯示器(sed)、激光電視顯示器、納米晶體顯示器或另一類(lèi)型的顯示單元。顯示器18可集成在計(jì)算裝置2內(nèi)。舉例來(lái)說(shuō),顯示器18可為移動(dòng)電話的屏幕?;蛘?,顯示器18可為經(jīng)由有線或無(wú)線通信鏈路而耦合到計(jì)算裝置2的獨(dú)立裝置。舉例來(lái)說(shuō),顯示器18可為經(jīng)由電纜或無(wú)線鏈路而連接到個(gè)人計(jì)算機(jī)的計(jì)算機(jī)監(jiān)視器或平板顯示器。
根據(jù)本發(fā)明的一個(gè)實(shí)例,gpu12可經(jīng)配置以使用一或多個(gè)圖形運(yùn)算來(lái)渲染幀的一或多個(gè)部分,并根據(jù)所述一或多個(gè)圖形操作來(lái)講色彩數(shù)據(jù)直接寫(xiě)入到系統(tǒng)存儲(chǔ)器10中的色彩緩沖器。gpu12可進(jìn)一步經(jīng)配置以根據(jù)一或多個(gè)圖形操作來(lái)將深度數(shù)據(jù)寫(xiě)入到gmem14中的深度緩沖器,且在所述幀的一或多個(gè)部分的渲染完成時(shí),將gmem14中的深度緩沖器解析到系統(tǒng)存儲(chǔ)器10。
圖2是進(jìn)一步詳細(xì)地說(shuō)明圖1的cpu6、gpu12和系統(tǒng)存儲(chǔ)器10的實(shí)例實(shí)施方案的框圖。cpu6可包含至少一個(gè)軟件應(yīng)用程序24、圖形api26和gpu驅(qū)動(dòng)程序7,其中的每一者可為在cpu6上執(zhí)行的一或多個(gè)軟體應(yīng)用程式或服務(wù)。gpu12可包含圖形處理管線30,所述圖形處理管線包含一起操作以執(zhí)行圖形處理命令的多個(gè)圖形處理級(jí)。gpu12可經(jīng)配置以根據(jù)本發(fā)明的技術(shù),在混合渲染模式下執(zhí)行圖形處理管線30。如圖2中所示,圖形處理管線30可包含命令引擎32、幾何處理級(jí)34、光柵化級(jí)36和像素處理管線38。圖形處理管線30中的組件中的每一者可實(shí)施為固定功能組件、可編程組件(例如,作為在可編程著色器單元上執(zhí)行的著色器程序的部分),或?qū)嵤楣潭üδ芘c可編程組件的組合??捎糜赾pu6和gpu12的存儲(chǔ)器可包含系統(tǒng)存儲(chǔ)器10和幀緩沖器15。幀緩沖器15可為系統(tǒng)存儲(chǔ)器10的部分或可與系統(tǒng)存儲(chǔ)器10分開(kāi)。幀緩沖器15可存儲(chǔ)經(jīng)渲染圖像數(shù)據(jù)的幀。
如將在下文更詳細(xì)地闡釋?zhuān)鶕?jù)本發(fā)明的技術(shù),gpu12可經(jīng)配置以將色彩值存儲(chǔ)在gmem14中的深度緩沖器13a中。gpu12可進(jìn)一步經(jīng)配置以在幀的一或多個(gè)部分(例如倉(cāng))的渲染完成時(shí),將深度緩沖器13a解析到系統(tǒng)存儲(chǔ)器10中的深度緩沖器13b。gpu12可進(jìn)一步經(jīng)配置以將色彩值存儲(chǔ)在直接在系統(tǒng)存儲(chǔ)器10中的色彩緩沖器11中(即,而不將色彩值存儲(chǔ)在gmem14中)。
軟件應(yīng)用程序24可為利用gpu12的功能性的任何應(yīng)用程序。舉例來(lái)說(shuō),軟件應(yīng)用24可為gui應(yīng)用程序、操作系統(tǒng)、便攜式制圖應(yīng)用、用于工程或藝術(shù)應(yīng)用的計(jì)算機(jī)輔助設(shè)計(jì)程序、視頻游戲應(yīng)用程序,或使用2d或3d圖形的另一種類(lèi)型的軟件應(yīng)用程序。
軟件應(yīng)用程序24可包含指令gpu12渲染圖形用戶(hù)接口(gui)和/或圖形場(chǎng)景的一或多個(gè)繪制指令。舉例來(lái)說(shuō),繪制指令可包含界定將由gpu12渲染的一組一或多個(gè)圖形基元的指令。在一些實(shí)例中,繪制指令可共同地界定用于gui中的多個(gè)開(kāi)窗表面的全部或部分。在額外實(shí)例中,所述繪制指令可共同地定義圖形場(chǎng)景的全部或部分,所述圖形場(chǎng)景包含在由應(yīng)用程序定義的模型空間或世界空間內(nèi)的一或多個(gè)圖形對(duì)象。
軟件應(yīng)用程序24可經(jīng)由圖形api26調(diào)用gpu驅(qū)動(dòng)程序7,以將一或多個(gè)命令發(fā)布到gpu12,以用于將一或多個(gè)圖形基元渲染到可顯示的圖形圖像中。舉例來(lái)說(shuō),軟件應(yīng)用程序24可經(jīng)由圖形api26調(diào)用gpu驅(qū)動(dòng)程序7以將圖元定義提供給gpu12。在一些情況下,可以繪制圖元(例如,三角形、矩形、三角扇、三角帶等)的列表的形式將圖元定義提供給gpu12。圖元定義可包含指定與將渲染的圖元相關(guān)聯(lián)的一或多個(gè)頂點(diǎn)的頂點(diǎn)規(guī)格。頂點(diǎn)規(guī)格可包含每一頂點(diǎn)的位置坐標(biāo),且在一些情況下,包含與頂點(diǎn)相關(guān)聯(lián)的其它屬性,例如色彩坐標(biāo)、法向量和紋理坐標(biāo)。圖元定義還可包含圖元類(lèi)型信息(例如,三角形、矩形、三角扇、三角帶等)、縮放信息、旋轉(zhuǎn)信息等。基于由軟件應(yīng)用程序24發(fā)布到gpu驅(qū)動(dòng)程序7的指令,gpu驅(qū)動(dòng)程序7可制定指定供gpu12執(zhí)行的一或多個(gè)圖形操作以便渲染圖元的一或多個(gè)命令。當(dāng)gpu12接收到來(lái)自cpu6的命令時(shí),圖形處理管線30對(duì)所述命令進(jìn)行解碼,且配置圖形處理管線30內(nèi)的一或多個(gè)處理元件,以執(zhí)行所述命令中所指定的一或多個(gè)圖形操作。在執(zhí)行指定圖形操作之后,圖形處理管線30將經(jīng)渲染的數(shù)據(jù)輸出到與顯示裝置相關(guān)聯(lián)的幀緩沖器15。
根據(jù)本發(fā)明的技術(shù),gpu12可經(jīng)配置以使用像素處理操作和一或多個(gè)深度測(cè)試來(lái)渲染幀的一或多個(gè)部分。所述像素處理操作可包含圖形操作,其使用、改變、更新和/或通常操縱像素的色彩值。像素的色彩值可處于rgb格式(紅、藍(lán)綠)、yuv格式(亮度(y),以及兩個(gè)色度值(uv)),或處于任何其它格式。gpu12也可執(zhí)行深度測(cè)試(或其它圖形操作),以便使用、改變、更新和/或通常操縱深度值。深度值可指示像素相對(duì)于其它像素距離檢視者有多近??墒褂蒙疃戎祦?lái)確定什么圖元在最終經(jīng)渲染場(chǎng)景中可見(jiàn)。
根據(jù)本發(fā)明的技術(shù),gpu12經(jīng)配置以將色彩值直接存儲(chǔ)到系統(tǒng)存儲(chǔ)器10中的色彩緩沖器11。也就是說(shuō),gpu12更新色彩緩沖器11,而不寫(xiě)入到gmem14中的任何色彩緩沖器。gpu12還可經(jīng)配置以將幀的一或多個(gè)部分(例如幀的倉(cāng))的深度值存儲(chǔ)在gmem14中的深度緩沖器13a中。當(dāng)gpu12已結(jié)束渲染幀的一或多個(gè)部分(例如幀的倉(cāng))時(shí),gpu12可將gmem14中的深度緩沖器13a解析到系統(tǒng)存儲(chǔ)器10中的深度緩沖器13b。
gpu驅(qū)動(dòng)程序7可進(jìn)一步經(jīng)配置以編譯一或多個(gè)著色器程序,且將經(jīng)編譯的著色器程序下載到gpu12內(nèi)所包含的一或多個(gè)可編程著色器單元上??捎酶呒?jí)著色語(yǔ)言來(lái)編寫(xiě)著色器程序,例如opengl著色語(yǔ)言(glsl)、高級(jí)著色語(yǔ)言(hlsl)、用于圖形的c(cg)著色語(yǔ)言等。經(jīng)編譯的著色器程序可包含控制gpu12內(nèi)的可編程著色器單元的操作的一或多個(gè)指令。舉例來(lái)說(shuō),著色器程序可包含頂點(diǎn)著色器程序和/或像素著色器程序。頂點(diǎn)著色器程序可控制可編程頂點(diǎn)著色器單元或統(tǒng)一著色器單元的執(zhí)行,且包含指定一或多個(gè)每頂點(diǎn)操作的指令。像素著色器程序可包含控制可編程像素著色器單元或統(tǒng)一著色器單元的執(zhí)行的像素著色器程序,且包含指定一或多個(gè)逐像素操作的指令。根據(jù)本發(fā)明的一些實(shí)例,像素著色器程序還可包含選擇性地致使基于源像素的對(duì)應(yīng)目的地阿爾法值而檢索源像素的紋理值的指令。gpu12可根據(jù)本發(fā)明的技術(shù)來(lái)執(zhí)行頂點(diǎn)著色器和像素著色器。也就是說(shuō),像素著色器或頂點(diǎn)著色器所執(zhí)行的更新色彩值的任何圖形操作均將致使gpu12更新系統(tǒng)存儲(chǔ)器10中的色彩緩沖器11。像素著色器或頂點(diǎn)著色器所執(zhí)行的更新深度值的任何圖形操作均將致使gpu12更新gmem中的深度緩沖器13a。并且,gpu12經(jīng)配置以在幀的正由gpu12渲染的部分完成時(shí),將深度緩沖器13a解析到系統(tǒng)存儲(chǔ)器10中的深度緩沖器13b。
圖形處理管線30可經(jīng)配置以經(jīng)由圖形驅(qū)動(dòng)程序28從cpu6接收一或多個(gè)圖形處理命令,且執(zhí)行圖形處理命令以產(chǎn)生可顯示的圖形圖像。如上文所論述,圖形處理管線30包含一起操作以執(zhí)行圖形處理命令的多個(gè)級(jí)。然而,應(yīng)注意,所述級(jí)不需要一定實(shí)施在單獨(dú)的硬件塊中。舉例來(lái)說(shuō),幾何處理級(jí)34和像素處理管線38的部分可實(shí)施為統(tǒng)一著色器單元的部分。并且,圖形處理管線30可經(jīng)配置以在多種不同的渲染模式中的一者中執(zhí)行,包含分倉(cāng)渲染模式和直接渲染模式。
命令引擎32可接收?qǐng)D形處理命令,且配置圖形處理管線30內(nèi)的其余處理級(jí)以執(zhí)行用于實(shí)行圖形處理命令的各種操作。圖形處理命令可包含(例如)繪制命令和圖形狀態(tài)命令。所述繪制命令可包含頂點(diǎn)規(guī)格命令,所述頂點(diǎn)規(guī)格命令指定一或多個(gè)頂點(diǎn)的位置坐標(biāo),并且在一些情況下,指定與所述頂點(diǎn)中的每一者相關(guān)聯(lián)的其它屬性值,例如色彩坐標(biāo)、法向量、紋理坐標(biāo)和霧坐標(biāo)。所述圖形狀態(tài)命令可包含圖元類(lèi)型命令、變換命令、照明命令等。所述圖元類(lèi)型命令可指定將要渲染的圖元的類(lèi)型和/或頂點(diǎn)如何組合以形成圖元。所述變換命令可指定對(duì)頂點(diǎn)執(zhí)行的變換的類(lèi)型。所述照明命令可指定圖形場(chǎng)景內(nèi)的不同光的類(lèi)型、方向和/或布局。命令引擎32可致使幾何處理級(jí)34相對(duì)于與一或多個(gè)所接收到的命令相關(guān)聯(lián)的頂點(diǎn)和/或圖元而執(zhí)行幾何處理。
幾何處理級(jí)34可對(duì)一或多個(gè)頂點(diǎn)執(zhí)行每頂點(diǎn)操作和/或圖元設(shè)置操作,以便產(chǎn)生用于光柵化級(jí)36的圖元數(shù)據(jù)。每一頂點(diǎn)可與一組屬性(例如,位置坐標(biāo)、色彩值、法向量和紋理坐標(biāo))相關(guān)聯(lián)。幾何處理級(jí)34根據(jù)各種每頂點(diǎn)操作而修改這些屬性中的一或多者。舉例來(lái)說(shuō),幾何處理級(jí)34可對(duì)頂點(diǎn)位置坐標(biāo)執(zhí)行一或多個(gè)變換以產(chǎn)生經(jīng)修改的頂點(diǎn)位置坐標(biāo)。幾何處理級(jí)34可(例如)將模型化變換、檢視變換、投影變換、模型視圖(modelview)變換、模型視圖投影(modelviewprojection)變換、視口變換以及深度范圍按比例縮放變換中的一或多者應(yīng)用于頂點(diǎn)位置坐標(biāo),以產(chǎn)生經(jīng)修改的頂點(diǎn)位置坐標(biāo)。
在一些情況下,頂點(diǎn)位置坐標(biāo)可為模型空間坐標(biāo),且經(jīng)修改的頂點(diǎn)位置坐標(biāo)可為屏幕空間坐標(biāo)。可在所述模型化、檢視、投影和視口變換的應(yīng)用之后獲得屏幕空間坐標(biāo)。在一些情況下,幾何處理級(jí)34還可對(duì)頂點(diǎn)執(zhí)行每頂點(diǎn)照明操作以產(chǎn)生頂點(diǎn)的經(jīng)修改的色彩坐標(biāo)。幾何處理級(jí)34還可執(zhí)行其它操作,包含(例如)正常變換、正常規(guī)格化操作、檢視量修剪、均質(zhì)劃分和/或隱面消除操作。
幾何處理級(jí)34可產(chǎn)生包含界定將經(jīng)光柵化的圖元的一組一或多個(gè)經(jīng)修改的頂點(diǎn)的圖元數(shù)據(jù)以及指定頂點(diǎn)如何組合以形成圖元的數(shù)據(jù)。所述經(jīng)修改的頂點(diǎn)中的每一者可包含(例如)與所述頂點(diǎn)相關(guān)聯(lián)的經(jīng)修改的頂點(diǎn)位置坐標(biāo)以及經(jīng)處理的頂點(diǎn)屬性值。所述圖元數(shù)據(jù)可共同地對(duì)應(yīng)于將由圖形處理管線30的其它級(jí)光柵化的圖元。在概念上,每一頂點(diǎn)可對(duì)應(yīng)于圖元的其中所述圖元的兩個(gè)邊緣會(huì)合的隅角。幾何處理級(jí)34可將圖元數(shù)據(jù)提供到光柵化級(jí)36以供進(jìn)一步處理。
在一些實(shí)例中,幾何處理級(jí)34的全部或部分可由在一或多個(gè)著色器單元上執(zhí)行的一或多個(gè)著色器程序?qū)嵤?。舉例來(lái)說(shuō),在此些實(shí)例中,幾何處理級(jí)34可由頂點(diǎn)著色器、幾何著色器或其任何組合實(shí)施。在其它實(shí)例中,可將幾何處理級(jí)34實(shí)施為固定功能硬件處理管線,或?qū)嵤楣潭üδ苡布c在一或多個(gè)著色器單元上執(zhí)行的一或多個(gè)著色器程序的組合。
光柵化級(jí)36經(jīng)配置以從幾何處理級(jí)34接收表示將被光柵化的圖元的圖元數(shù)據(jù),且使所述圖元光柵化以產(chǎn)生對(duì)應(yīng)于經(jīng)光柵化的圖元的多個(gè)源像素。在一些實(shí)例中,光柵化級(jí)36可確定哪些屏幕像素位置由將被光柵化的圖元覆蓋,且產(chǎn)生用于被確定為由圖元覆蓋的每一屏幕像素位置的源像素。光柵化級(jí)36可通過(guò)使用所屬領(lǐng)域的技術(shù)人員已知的技術(shù)來(lái)去確定哪些屏幕像素位置由圖元覆蓋,例如邊緣遍歷技術(shù)、評(píng)估邊緣等式等。光柵化級(jí)36可將所得源像素提供到像素處理管線38以供進(jìn)一步處理。
由光柵化級(jí)36產(chǎn)生的源像素可對(duì)應(yīng)于屏幕像素位置,例如目的地像素,且與一或多個(gè)色彩屬性相關(guān)聯(lián)。針對(duì)特定經(jīng)光柵化的圖元所產(chǎn)生的所有源像素可稱(chēng)為與經(jīng)光柵化的圖元相關(guān)聯(lián)。由光柵化級(jí)36確定的將由圖元覆蓋的像素可在概念上包含表示圖元的頂點(diǎn)的像素、表示圖元的邊緣的像素以及表示圖元的內(nèi)部的像素。
像素處理管線38經(jīng)配置以接收與經(jīng)光柵化的圖元相關(guān)聯(lián)的源像素,且對(duì)所述源像素執(zhí)行一或多個(gè)逐像素操作。可由像素處理管線38執(zhí)行的逐像素操作包含(例如)阿爾法測(cè)試、紋理映射、色彩計(jì)算、像素著色、逐像素照明、霧處理、混合、像素所有權(quán)文本、源阿爾法測(cè)試、模板測(cè)試、深度測(cè)試、剪刀測(cè)試和/或點(diǎn)刻操作。另外,像素處理管線38可執(zhí)行一或多個(gè)像素著色器程序以執(zhí)行一或多個(gè)逐像素操作。由像素處理管線38產(chǎn)生的所得數(shù)據(jù)可在本文中被稱(chēng)作目的地像素?cái)?shù)據(jù),且存儲(chǔ)在幀緩沖器15中。目的地像素?cái)?shù)據(jù)可與幀緩沖器15中的具有與經(jīng)處理源像素相同的顯示位置的目的地像素相關(guān)聯(lián)。目的地像素?cái)?shù)據(jù)可包含例如色彩緩沖器11中的色彩值、目的地阿爾法值、深度緩沖器13b中的深度值等數(shù)據(jù)。
幀緩沖器15存儲(chǔ)gpu12的目的地像素。每一目的地像素可與唯一屏幕像素位置相關(guān)聯(lián)。在一些實(shí)例中,幀緩沖器15可存儲(chǔ)每一目的地像素的色彩分量和目的地阿爾法值。舉例來(lái)說(shuō),幀緩沖器15可存儲(chǔ)每一像素的紅色、綠色、藍(lán)色、阿爾法(rgba)分量,其中“rgb”分量對(duì)應(yīng)于色彩值,且“a”分量對(duì)應(yīng)于目的地阿爾法值。盡管幀緩沖器15和系統(tǒng)存儲(chǔ)器10被說(shuō)明為單獨(dú)存儲(chǔ)器單元,但在其它實(shí)例中,幀緩沖器15可為系統(tǒng)存儲(chǔ)器10的部分。
如上文所論述,gpu12可經(jīng)配置以一次渲染幀的一或多個(gè)部分。在本發(fā)明的一些實(shí)例中,gpu12可經(jīng)配置以一次渲染整個(gè)幀。在此實(shí)例中,當(dāng)渲染整個(gè)幀時(shí),gpu12將解析gmem14中的深度緩沖器13a。在本發(fā)明的其它實(shí)例中,gpu12可經(jīng)配置以一次僅渲染幀的一部分。也就是說(shuō),gpu12可經(jīng)配置以將幀劃分為被稱(chēng)作倉(cāng)或平鋪塊的區(qū),并獨(dú)立地渲染所述倉(cāng)中的每一者。根據(jù)本發(fā)明的技術(shù),gpu12可經(jīng)配置以將幀分為若干倉(cāng),并將與渲染所述倉(cāng)相關(guān)聯(lián)的任何深度值存儲(chǔ)在gmem14中的深度緩沖器13a中。當(dāng)所述倉(cāng)的渲染完成時(shí),gpu12經(jīng)配置以將深度緩沖器13a解析到系統(tǒng)存儲(chǔ)器10中的深度緩沖器13b。然而,gpu12經(jīng)配置以將與渲染所述倉(cāng)有關(guān)的任何色彩值直接存儲(chǔ)在系統(tǒng)存儲(chǔ)器10中的色彩緩沖器11中。
在這點(diǎn)上,由于色彩緩沖器11可用于幀中的每個(gè)倉(cāng),因此色彩緩沖器11可被配置成具有使得幀的所有色彩值將剛好放入色彩緩沖器11中的存儲(chǔ)器大小。然而,深度緩沖器13a僅需要配置有使得倉(cāng)的所有深度值會(huì)剛好放入深度緩沖器13a中的大小。深度緩沖器13b可被配置成具有使得幀的所有深度值將剛好放入深度緩沖器13b中的大小。下文將論述關(guān)于分倉(cāng)的額外細(xì)節(jié)。
圖3是說(shuō)明劃分成倉(cāng)以用于分倉(cāng)渲染模式的幀的概念圖。幀40可劃分成多個(gè)倉(cāng),例如倉(cāng)42。通常,圖形硬件將含有快速存儲(chǔ)器(例如圖2的gmem14),其具有足以保持至少一個(gè)倉(cāng)的數(shù)據(jù)的大小。根據(jù)本發(fā)明的實(shí)例,gmem14可被配置成具有保持值得存儲(chǔ)在深度緩沖器13a中的深度數(shù)據(jù)的一個(gè)倉(cāng)的大小。
作為針對(duì)幀的特定倉(cāng)的單個(gè)渲染遍次的部分,圖形處理管線30可相對(duì)于幀的目的地像素的特定子集(例如,目的地像素的特定倉(cāng))渲染圖元批次的全部或子集。在相對(duì)于第一倉(cāng)執(zhí)行第一渲染遍次之后,圖形處理管線30可相對(duì)于第二倉(cāng)執(zhí)行第二渲染遍次,等等。圖形處理管線30可遞增地遍歷經(jīng)過(guò)所述倉(cāng),直到已渲染與每個(gè)倉(cāng)相關(guān)聯(lián)的圖元為止。
圖4是更詳細(xì)示出根據(jù)本發(fā)明的技術(shù)用于混合渲染模式的倉(cāng)的概念圖。渲染/光柵化倉(cāng)44、46、48和50,以含有多個(gè)像素52。一或多個(gè)圖形基元可在每一倉(cāng)中可見(jiàn)。舉例來(lái)說(shuō),三角形a(tria)的部分在倉(cāng)44和倉(cāng)48兩者中可見(jiàn)。三角形b(trib)的部分在倉(cāng)44、倉(cāng)46、倉(cāng)48和倉(cāng)50中的每一者中可見(jiàn)。三角形c(tric)僅在倉(cāng)46中可見(jiàn)。在渲染遍次期間,在本發(fā)明的一個(gè)實(shí)例中,將場(chǎng)景分裂成若干倉(cāng),且渲染在所述倉(cāng)中的所有三角形(這有時(shí)被稱(chēng)作軟件分倉(cāng))。在本發(fā)明的另一實(shí)例中,gpu12在渲染之前執(zhí)行額外步驟,來(lái)確定所述倉(cāng)中的哪些三角形在最終經(jīng)渲染場(chǎng)景中實(shí)際可見(jiàn)(這有時(shí)被稱(chēng)作硬件分倉(cāng))。舉例來(lái)說(shuō),一些三角形可在一或多個(gè)其它三角形后方,且將在最后經(jīng)渲染場(chǎng)景中不可見(jiàn)。以此方式,不必為所述倉(cāng)渲染不可見(jiàn)的三角形。
根據(jù)本發(fā)明的技術(shù),在執(zhí)行特定渲染遍次時(shí),與所述特定渲染遍次相關(guān)聯(lián)的倉(cāng)的深度數(shù)據(jù)可存儲(chǔ)在gmem14中的深度緩沖器13a中。然而,與特定渲染遍次相關(guān)聯(lián)的倉(cāng)的像素?cái)?shù)據(jù)可存儲(chǔ)在系統(tǒng)存儲(chǔ)器10中的色彩緩沖器11中。在執(zhí)行渲染遍次之后,gpu12可將gmem14中的深度緩沖器13a的內(nèi)容傳送(即,解析)到系統(tǒng)存儲(chǔ)器10中的深度緩沖器13b。在將gmem14中的深度緩沖器13a的內(nèi)容傳送到系統(tǒng)存儲(chǔ)器10中的深度緩沖器13b之后,gpu12可將gmem14中的深度緩沖器13a初始化為默認(rèn)值,且開(kāi)始相對(duì)于不同倉(cāng)的后續(xù)渲染遍次。
圖5是示出用于連同“軟件”分倉(cāng)技術(shù)使用本發(fā)明的混合渲染模式來(lái)渲染場(chǎng)景的實(shí)例命令結(jié)構(gòu)的概念圖。層級(jí)1間接緩沖器(ib1)60含有一系列執(zhí)行命令,用于指導(dǎo)gpu12執(zhí)行圖形處理管線30的各種步驟(即,執(zhí)行一或多個(gè)圖形操作)。ib160中的每一執(zhí)行命令基本上指向含有用于渲染管線的各個(gè)方面的命令的一或多個(gè)層級(jí)2間接緩沖器(ib2)的指針。以此方式,建立用于執(zhí)行圖形渲染管線的兩個(gè)或更多個(gè)層級(jí)結(jié)構(gòu)。gpu12可循序步進(jìn)通過(guò)ib160中的每一執(zhí)行命令,其中ib160中的每一執(zhí)行指向存儲(chǔ)在ib2中的特定命令堆疊。ib1和ib2可為gpu12的機(jī)載存儲(chǔ)器或可為gpu12的外部存儲(chǔ)器,例如系統(tǒng)存儲(chǔ)器10。
ib160中的前導(dǎo)執(zhí)行命令指向含有可由gpu12執(zhí)行的前導(dǎo)命令的前導(dǎo)ib262。舉例來(lái)說(shuō),前導(dǎo)ib262可包含初始化gpu12的靜止?fàn)顟B(tài)且設(shè)置gpu12的初始渲染狀態(tài)的命令。gpu12的靜止?fàn)顟B(tài)包含并不基于特定應(yīng)用而改變的設(shè)置。另一方面,渲染狀態(tài)包含可基于特定應(yīng)用(例如,開(kāi)放gl(opengl)應(yīng)用與直接x(directx)應(yīng)用)而改變的gpu設(shè)置。在前導(dǎo)ib2中的命令完成之后,控制返回到ib160以執(zhí)行下一執(zhí)行命令。
ib160中的下一執(zhí)行命令為正使用的渲染模式配置渲染遍次。并且,在圖5的實(shí)例中,渲染模式是本發(fā)明的使用軟件分倉(cāng)的混合渲染模式。接下來(lái),ib160中的加載倉(cāng)執(zhí)行命令指向加載ib266中的命令。對(duì)于軟件分倉(cāng),將特定倉(cāng)的深度數(shù)據(jù)加載到gmem14中的深度緩沖器13a中。另外,將特定倉(cāng)的色彩數(shù)據(jù)加載到系統(tǒng)存儲(chǔ)器10中的色彩緩沖器11中。控制接著傳遞回到ib160,且渲染倉(cāng)執(zhí)行命令指向渲染ib2中的命令。
渲染ib268由一系列狀態(tài)命令和繪制所加載的倉(cāng)中的三角形的繪制命令構(gòu)成。每一繪制命令指令gpu12根據(jù)由命令和/或gpu硬件建立的圖形處理管線30(例如,包含幾何處理級(jí)34、光柵化級(jí)36和/或像素處理管線38)繪制三角形。如渲染ib268中所示,繪制命令中的每一者指示不使用可見(jiàn)性流來(lái)確定特定三角形是否在所述倉(cāng)中實(shí)際上可見(jiàn)。可見(jiàn)性流產(chǎn)生于使用“硬件”分倉(cāng)的分倉(cāng)渲染模式中,且將參考圖6更詳細(xì)論述。
渲染ib268中的狀態(tài)命令影響由gpu12執(zhí)行的圖形處理管線的行為。舉例來(lái)說(shuō),狀態(tài)命令可改變色彩、多邊形模式(例如,點(diǎn)而不是立體或線)、混合(開(kāi)/關(guān))、深度測(cè)試(開(kāi)/關(guān))、紋理化(開(kāi)/關(guān))、剔除、裁剪和其它邏輯操作。如渲染ib268中所示,狀態(tài)命令可以每三角形(或每圖元)為基礎(chǔ)而發(fā)布。也就是說(shuō),命令“狀態(tài)三角形a”可影響gpu12繪制三角形a時(shí)的行為,而“狀態(tài)三角形b1”和“狀態(tài)三角形b2”命令可影響gpu12繪制三角形b時(shí)的行為?!盃顟B(tài)三角形b1”和“狀態(tài)三角形b2”命令僅指示可針對(duì)每一三角形執(zhí)行多個(gè)狀態(tài)命令。渲染ib268中更新正渲染的倉(cāng)中的像素的色彩值的任何渲染命令致使gpu12更新系統(tǒng)存儲(chǔ)器10中的色彩緩沖器11中的此類(lèi)色彩值。渲染ib268中更新正渲染的倉(cāng)中的像素的深度值的任何渲染命令致使gpu12更新gmem14中的深度緩沖器13a。
在已執(zhí)行渲染ib268中的全部命令之后(例如,在已繪制全部三角形之后),控制返回到ib160。存儲(chǔ)倉(cāng)執(zhí)行命令可包含指向存儲(chǔ)ib270的指針,其包含將gmem14中的深度緩沖器13a中的深度值存儲(chǔ)(即,解析)到系統(tǒng)存儲(chǔ)器10中的深度緩沖器13b的命令。接著為一或多個(gè)幀的每一倉(cāng)72重復(fù)渲染遍次(例如,從配置渲染遍次到存儲(chǔ)倉(cāng)的執(zhí)行命令,如ib160中示出)。
圖6是示出用于使用“硬件”分倉(cāng)來(lái)使用分倉(cāng)渲染模式渲染場(chǎng)景的實(shí)例命令結(jié)構(gòu)的概念圖。ib161中的執(zhí)行命令類(lèi)似于圖6的ib160的那些執(zhí)行命令,與“分倉(cāng)”遍次有關(guān)的命令除外。“分倉(cāng)”遍次用于產(chǎn)生指示倉(cāng)中的特定三角形在最后經(jīng)渲染場(chǎng)景中是否實(shí)際上可見(jiàn)的可見(jiàn)性流。舉例來(lái)說(shuō),一些三角形可在場(chǎng)景中的另一三角形后方,且在一些情境中將不可見(jiàn)(例如,當(dāng)前方三角形不透明時(shí)或當(dāng)未使用混合時(shí))。在渲染倉(cāng)72之前,ib161可包含指向分倉(cāng)ib274中的命令的分倉(cāng)遍次執(zhí)行命令。分倉(cāng)ib274包含致使gpu12執(zhí)行圖形管線的簡(jiǎn)化版本(例如,渲染ib269的簡(jiǎn)化版本)的命令,但添加基于確定三角形在最后經(jīng)渲染場(chǎng)景中是否可見(jiàn)的深度測(cè)試(z測(cè)試)針對(duì)倉(cāng)中的每一三角形更新可見(jiàn)性流的步驟。當(dāng)執(zhí)行分倉(cāng)遍次時(shí),分倉(cāng)ib274可產(chǎn)生深度值,且可致使gpu12更新gmem14中的深度緩沖器13a。
分倉(cāng)遍次的目標(biāo)是識(shí)別與當(dāng)前倉(cāng)相交的三角形。由此,僅需要確定三角形的頂點(diǎn)的位置來(lái)識(shí)別三角形是否與特定倉(cāng)相交。分倉(cāng)遍次利用僅包含影響頂點(diǎn)的位置的指令的簡(jiǎn)化頂點(diǎn)著色器。舉例來(lái)說(shuō),色彩指令、紋理坐標(biāo)以及并不影響三角形頂點(diǎn)的位置的其它指令可從用于分倉(cāng)遍次的簡(jiǎn)化頂點(diǎn)著色器移除。分倉(cāng)遍次還使用粗略光柵化而非精細(xì)光柵化來(lái)確定每一三角形的近似深度。粗略光柵化以與精細(xì)光柵化相比較低的精度(例如,使用較低數(shù)目的位)計(jì)算深度值。僅必需近似深度值來(lái)確定三角形是否在倉(cāng)中可見(jiàn)。像素著色器不用于分倉(cāng)遍次中。
分倉(cāng)遍次接著利用對(duì)粗略深度值的深度測(cè)試來(lái)確定三角形相對(duì)于倉(cāng)中的其它三角形是否在倉(cāng)中可見(jiàn)?;诖松疃葴y(cè)試,更新可見(jiàn)性流??梢?jiàn)性流可為指示經(jīng)渲染倉(cāng)中的特定三角形是否可見(jiàn)的位串(例如,1指示三角形可見(jiàn),0指示三角形不可見(jiàn))。
渲染ib269中的命令類(lèi)似于圖5中的渲染ib68的那些命令,可見(jiàn)性流的使用除外。渲染ib269中的繪制命令(例如,繪制tria、繪制trib、繪制tric等)可使用由分倉(cāng)遍次產(chǎn)生的可見(jiàn)性流來(lái)確定是否有必要繪制特定三角形。舉例來(lái)說(shuō),對(duì)于由可見(jiàn)性流指示為不可見(jiàn)的三角形,可跳過(guò)繪制。
圖7是說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的方法的流程圖。圖13的方法可由gpu12的一或多個(gè)硬件單元執(zhí)行。在本發(fā)明的一個(gè)實(shí)例中,gpu12可經(jīng)配置以使用一或多個(gè)圖形操作來(lái)渲染幀的一或多個(gè)部分(702)。gpu12可進(jìn)一步經(jīng)配置以根據(jù)一或多個(gè)圖形操作來(lái)將色彩數(shù)據(jù)直接寫(xiě)入到系統(tǒng)存儲(chǔ)器10中的色彩緩沖器11(704)。gpu12可再進(jìn)一步經(jīng)配置以根據(jù)一或多個(gè)圖形操作來(lái)將深度數(shù)據(jù)寫(xiě)入到gmem14中的深度緩沖器13a(706),且在所述幀的一或多個(gè)部分的渲染完成時(shí),將gmem14中的深度緩沖器13a解析到系統(tǒng)存儲(chǔ)器10中的深度緩沖器13b。在本發(fā)明的一個(gè)實(shí)例中,系統(tǒng)存儲(chǔ)器10可為dram,且gmem14可在與gpu12相同的集成電路上。
在本發(fā)明的另一實(shí)例中,gpu12可經(jīng)配置以對(duì)幀的一或多個(gè)部分執(zhí)行分倉(cāng)遍次。所述幀的所述一或多個(gè)部分可為幀的倉(cāng)。在一個(gè)實(shí)例中,為了執(zhí)行分倉(cāng)遍次,gpu12進(jìn)一步經(jīng)配置以執(zhí)行識(shí)別在倉(cāng)中可見(jiàn)的圖元的硬件分倉(cāng)遍次。在此實(shí)例中,gpu12可進(jìn)一步經(jīng)配置以通過(guò)對(duì)被識(shí)別為在倉(cāng)中可見(jiàn)的圖元使用一或多個(gè)圖形操作,來(lái)渲染所述幀的倉(cāng)。在另一實(shí)例中,gpu12經(jīng)配置以執(zhí)行識(shí)別在所述倉(cāng)內(nèi)的圖元的軟件分倉(cāng)遍次,且通過(guò)對(duì)被識(shí)別為在所述倉(cāng)內(nèi)的圖元使用一或多個(gè)圖形操作來(lái)渲染所述幀的倉(cāng)。
在一或多個(gè)實(shí)例中,上文所描述的功能可以硬件、軟件、固件或其任何組合來(lái)實(shí)施。如果以軟件實(shí)施,那么功能可作為一或多個(gè)指令或代碼存儲(chǔ)在包括非暫時(shí)性計(jì)算機(jī)可讀媒體的制品上。計(jì)算機(jī)可讀媒體可包含計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)媒體。數(shù)據(jù)存儲(chǔ)媒體可為可由一或多個(gè)計(jì)算機(jī)或一個(gè)或多個(gè)處理器存取以檢索用于實(shí)施本發(fā)明中描述的技術(shù)的指令、代碼和/或數(shù)據(jù)結(jié)構(gòu)的任何可用媒體。作為實(shí)例而非限制,此類(lèi)計(jì)算機(jī)可讀媒體可包括ram、rom、eeprom、cd-rom或其它光盤(pán)存儲(chǔ)裝置、磁盤(pán)存儲(chǔ)裝置或其它磁性存儲(chǔ)裝置、閃存存儲(chǔ)器或可用來(lái)攜帶或存儲(chǔ)呈指令或數(shù)據(jù)結(jié)構(gòu)形式的所要程序代碼且可由計(jì)算機(jī)存取的任何其它媒體。如本文中所使用,磁盤(pán)和光盤(pán)包含壓縮光盤(pán)(cd)、激光光盤(pán)、光學(xué)光盤(pán)、數(shù)字多功能光盤(pán)(dvd)、軟性磁盤(pán)和藍(lán)光光盤(pán),其中磁盤(pán)通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤(pán)利用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。以上各項(xiàng)的組合也應(yīng)包含在計(jì)算機(jī)可讀媒體的范圍內(nèi)。
代碼可由一或多個(gè)處理器執(zhí)行,所述一或多個(gè)處理器例如一或多個(gè)dsp、通用微處理器、asic、fpga,或其它等效集成或離散邏輯電路。另外,在一些方面中,可在專(zhuān)用硬件和/或軟件模塊內(nèi)提供本文中所描述的功能性。而且,所述技術(shù)可完全實(shí)施于一或多個(gè)電路或邏輯元件中。
本發(fā)明的技術(shù)可在廣泛多種裝置或設(shè)備中實(shí)施,包含無(wú)線手持機(jī)、集成電路(ic)或一組ic(例如,芯片組)。本發(fā)明中描述各種組件、模塊或單元是為了強(qiáng)調(diào)經(jīng)配置以執(zhí)行所揭示的技術(shù)的裝置的功能方面,但未必需要由不同硬件單元實(shí)現(xiàn)。實(shí)際上,如上文所描述,各種單元可結(jié)合合適的軟件和/或固件組合在編解碼器硬件單元中,或者通過(guò)互操作硬件單元的集合來(lái)提供,所述硬件單元包含如上文所描述的一或多個(gè)處理器。
已描述了各種實(shí)例。這些和其它實(shí)例在所附權(quán)利要求書(shū)的范圍內(nèi)。