使用過(guò)度繪制跟蹤器在圖形處理中在直接呈現(xiàn)與分格之間的切換的制作方法
【專(zhuān)利摘要】本發(fā)明提供了用于確定呈現(xiàn)模式(例如,分格呈現(xiàn)模式及直接呈現(xiàn)模式)的技術(shù)及結(jié)構(gòu),以及用于在所述呈現(xiàn)模式之間切換的技術(shù)及結(jié)構(gòu)。呈現(xiàn)模式可通過(guò)分析呈現(xiàn)特性來(lái)確定。呈現(xiàn)模式還可通過(guò)跟蹤分格中的過(guò)度繪制來(lái)確定。所述呈現(xiàn)模式可通過(guò)修補(bǔ)使用圖形存儲(chǔ)器地址的命令以使用系統(tǒng)存儲(chǔ)器地址而從分格呈現(xiàn)模式切換到直接呈現(xiàn)模式。修補(bǔ)可由CPU或由可由GPU執(zhí)行的第二寫(xiě)入命令緩沖器處理。
【專(zhuān)利說(shuō)明】使用過(guò)度繪制跟蹤器在圖形處理中在直接呈現(xiàn)與分格之間的切換
[0001]本申請(qǐng)案主張2011年11月30日申請(qǐng)的第61/565,397號(hào)美國(guó)臨時(shí)申請(qǐng)案的權(quán)利,其全文特此以引用的方式并入。
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及用于圖形處理的技術(shù),且更特定來(lái)說(shuō),涉及用于在圖形處理中在直接呈現(xiàn)與分格之間切換的技術(shù)。
【背景技術(shù)】
[0003]用于顯示的視覺(jué)內(nèi)容(例如,用于圖形用戶(hù)接口和視頻游戲的內(nèi)容)可由圖形處理單元(GPU)產(chǎn)生。GPU可將二維或三維(3D)物體轉(zhuǎn)換成可顯示的二維(2D)像素表示。將關(guān)于3D物體的信息轉(zhuǎn)換成可顯示的位圖被稱(chēng)為像素呈現(xiàn)(pixel rendering),且需要相當(dāng)大的存儲(chǔ)和處理能力。過(guò)去,3D圖形能力僅可在功能強(qiáng)大的工作站實(shí)現(xiàn)。然而,現(xiàn)在,3D圖形加速器一般供給個(gè)人計(jì)算機(jī)(PC)以及嵌入式裝置(例如,智能手機(jī)、平板計(jì)算機(jī)、便攜式媒體播放器、便攜式視頻游戲控制臺(tái)和其類(lèi)似物)。通常,與常規(guī)PC相比,嵌入式裝置具有較小計(jì)算能力和存儲(chǔ)器容量。因而,3D圖形呈現(xiàn)技術(shù)的增加復(fù)雜性在嵌入式系統(tǒng)上實(shí)施此些技術(shù)時(shí)帶來(lái)困難。
【發(fā)明內(nèi)容】
[0004]一般來(lái)說(shuō),本發(fā)明描述用于在圖形處理中在直接呈現(xiàn)與分格之間切換的技術(shù),及用于確定呈現(xiàn)模式的技術(shù)。
[0005]在本發(fā)明的一個(gè)實(shí)例中,一種圖形處理方法包括:產(chǎn)生用于呈現(xiàn)幀的呈現(xiàn)命令,其中所述呈現(xiàn)命令是用于分格呈現(xiàn)模式;跟蹤使用圖形存儲(chǔ)器地址的所述呈現(xiàn)命令;基于呈現(xiàn)特性確定用于所述幀的多個(gè)呈現(xiàn)模式中的一者,其中所述多個(gè)呈現(xiàn)模式包含所述分格呈現(xiàn)模式及直接呈現(xiàn)模式;及在所述確定的呈現(xiàn)模式為直接呈現(xiàn)模式的狀況下更改使用圖形存儲(chǔ)器地址的所述呈現(xiàn)命令以使用系統(tǒng)存儲(chǔ)器地址。
[0006]在本發(fā)明的另一實(shí)例中,一種圖形處理方法包括:對(duì)場(chǎng)景的基元執(zhí)行分格操作,其中將所述基元?jiǎng)澐殖煞指瘢挥?jì)算表示所述場(chǎng)景的區(qū)中的基元的過(guò)度繪制量的過(guò)度繪制數(shù)目;及基于計(jì)算的計(jì)分確定呈現(xiàn)模式。
[0007]在本發(fā)明的另一實(shí)例中,一種圖形處理方法包括:將用于執(zhí)行圖形操作的操作命令存儲(chǔ)于第一緩沖器中;及將寫(xiě)入命令存儲(chǔ)于第二緩沖器中,其中所述寫(xiě)入命令在執(zhí)行時(shí)更改所述第一緩沖器中的所述操作命令以產(chǎn)生更改的操作命令。
[0008]本發(fā)明的技術(shù)還根據(jù)設(shè)備及存儲(chǔ)用于致使處理器執(zhí)行技術(shù)的指令的計(jì)算機(jī)可讀存儲(chǔ)媒體來(lái)描述。一或多個(gè)實(shí)例的細(xì)節(jié)陳述于附圖及以下描述中。其它特征、目標(biāo)及優(yōu)勢(shì)將從描述及附圖和從權(quán)利要求書(shū)中顯而易見(jiàn)?!緦?zhuān)利附圖】
【附圖說(shuō)明】
[0009]圖1為展示經(jīng)配置以使用本發(fā)明的技術(shù)的實(shí)例計(jì)算裝置的框圖。
[0010]圖2為展示經(jīng)配置以使用本發(fā)明的技術(shù)的實(shí)例處理單元的框圖。
[0011]圖3為說(shuō)明用于分格呈現(xiàn)模式中的幀的分格的概念圖。
[0012]圖4為更詳細(xì)說(shuō)明用于分格呈現(xiàn)模式中的幀的分格的概念圖。
[0013]圖5為說(shuō)明用于使用“軟件”分格的分格呈現(xiàn)模式的命令緩沖器的概念圖。
[0014]圖6為說(shuō)明用于使用“硬件”分格的分格呈現(xiàn)模式的命令緩沖器的概念圖。
[0015]圖7為說(shuō)明用于直接呈現(xiàn)模式的命令緩沖器的概念圖。
[0016]圖8為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的呈現(xiàn)命令修補(bǔ)的概念圖。
[0017]圖9為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的過(guò)度繪制跟蹤的概念圖。
[0018]圖10為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的四個(gè)分格中的過(guò)度繪制的概念圖。
[0019]圖11為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的呈現(xiàn)模式選擇的概念圖。
[0020]圖12為說(shuō)明根據(jù)本發(fā)明的另一實(shí)例的呈現(xiàn)命令修補(bǔ)的概念圖。
[0021]圖13為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的方法的流程圖。
[0022]圖14為說(shuō)明根據(jù)本發(fā)明的另一實(shí)例的方法的流程圖。
[0023]圖15為說(shuō)明根據(jù)本發(fā)明的另一實(shí)例的方法的流程圖。
[0024]圖16為說(shuō)明根據(jù)本發(fā)明的另一實(shí)例的方法的流程圖。
【具體實(shí)施方式】
[0025]本發(fā)明涉及用于圖形處理的技術(shù),且更特定來(lái)說(shuō),涉及用于在圖形處理中確定呈現(xiàn)模式及在呈現(xiàn)模式之間切換的技術(shù)。
[0026]當(dāng)前圖形呈現(xiàn)系統(tǒng)通常利用分格呈現(xiàn)模式(有時(shí)被稱(chēng)作基于平鋪塊的呈現(xiàn))或直接呈現(xiàn)模式來(lái)呈現(xiàn)場(chǎng)景。在分格呈現(xiàn)中,2D或3D場(chǎng)景的一個(gè)幀是通過(guò)將幀斷裂成較小部分(例如,矩形分格或平鋪塊)及單獨(dú)地呈現(xiàn)這些分格中的每一者來(lái)呈現(xiàn)的。分格呈現(xiàn)用于沒(méi)有專(zhuān)用快速圖形存儲(chǔ)器(GMEM)是可用的應(yīng)用,例如用于移動(dòng)應(yīng)用。平鋪塊的大小可經(jīng)配置以表示在GMEM中可用的數(shù)據(jù)量。舉例來(lái)說(shuō),如果GMEM能夠存儲(chǔ)512kB,那么平鋪塊的大小可經(jīng)配置以使得所述平鋪塊中所含有的所述像素?cái)?shù)據(jù)小于或等于512kB。
[0027]另一方面,直接呈現(xiàn)模式中的圖形處理不將幀斷裂成較小分格。替代地,立即呈現(xiàn)完整的幀。在一些圖形處理系統(tǒng)(例如,移動(dòng)裝置上的圖形處理系統(tǒng))中,沒(méi)有足夠的GMEM來(lái)保持完整的像素?cái)?shù)據(jù)幀。替代地,對(duì)于直接呈現(xiàn)模式,使用較慢的系統(tǒng)存儲(chǔ)器來(lái)呈現(xiàn)幀。
[0028]本發(fā)明呈現(xiàn)了用于確定呈現(xiàn)模式(例如,分格呈現(xiàn)模式及直接呈現(xiàn)模式)的技術(shù)及結(jié)構(gòu),以及用于在所述呈現(xiàn)模式之間切換的技術(shù)及結(jié)構(gòu)。
[0029]在本發(fā)明的一個(gè)實(shí)例中,一種圖形處理方法包括:產(chǎn)生用于呈現(xiàn)幀的呈現(xiàn)命令,其中所述呈現(xiàn)命令是用于分格呈現(xiàn)模式;跟蹤使用圖形存儲(chǔ)器地址的所述呈現(xiàn)命令;基于呈現(xiàn)特性確定用于所述幀的多個(gè)呈現(xiàn)模式中的一者,其中所述多個(gè)呈現(xiàn)模式包含所述分格呈現(xiàn)模式及直接呈現(xiàn)模式;及在所述確定的呈現(xiàn)模式為直接呈現(xiàn)模式的狀況下更改使用圖形存儲(chǔ)器地址的所述呈現(xiàn)命令以使用系統(tǒng)存儲(chǔ)器地址。
[0030]在本發(fā)明的另一實(shí)例中,一種圖形處理方法包括:對(duì)場(chǎng)景的基元執(zhí)行分格操作,其中將所述基元?jiǎng)澐殖煞指?;?jì)算表示所述場(chǎng)景的區(qū)中的基元的過(guò)度繪制量的過(guò)度繪制數(shù)目;及基于計(jì)算的計(jì)分確定呈現(xiàn)模式。
[0031]在本發(fā)明的另一實(shí)例中,一種圖形處理方法包括:將用于執(zhí)行圖形操作的操作命令存儲(chǔ)于第一緩沖器中;及將寫(xiě)入命令存儲(chǔ)于第二緩沖器中,其中所述寫(xiě)入命令更改所述第一緩沖器中的所述操作命令以產(chǎn)生更改的操作命令。
[0032]圖1為說(shuō)明可用以實(shí)施本發(fā)明的技術(shù)以用于確定呈現(xiàn)模式及在呈現(xiàn)模式之間(例如,在分格呈現(xiàn)模式與直接呈現(xiàn)模式之間)切換的實(shí)例計(jì)算裝置2的框圖。舉例來(lái)說(shuō),計(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ī)頂盒、服務(wù)器、中間網(wǎng)絡(luò)裝置、主計(jì)算機(jī)、任何移動(dòng)裝置或處理及/或顯示圖形數(shù)據(jù)的任何其它類(lèi)型的裝置。
[0033]如圖1的實(shí)例中所說(shuō)明,計(jì)算裝置2可包含用戶(hù)輸入接口 4、中央處理單元(CPU) 6、存儲(chǔ)器控制器8、系統(tǒng)存儲(chǔ)器10、圖形處理單元(GPU) 12、圖形存儲(chǔ)器14、顯示接口
16、顯示器18及總線20及22。應(yīng)注意在一些實(shí)例中,圖形存儲(chǔ)器14可與GPU12 —起“在芯片上”。在一些狀況下,圖1中所示的所有硬件元件可在芯片上,例如在芯片上系統(tǒng)(SoC)設(shè)計(jì)中。用戶(hù)輸入接口 4、CPU6、存儲(chǔ)器控制器8、GPU12及顯示接口 16可使用總線20彼此通信。存儲(chǔ)器控制器8及系統(tǒng)存儲(chǔ)器10還可使用總線22彼此通信。總線20、22可為多種總線結(jié)構(gòu)中的任一者,例如,第三代總線(例如,超傳輸總線或無(wú)限帶寬總線)、第二代總線(例如,高級(jí)圖形端口總線、周邊組件互連(PCI)快速總線或高級(jí)可擴(kuò)展接口(AXD總線)或另一類(lèi)型的總線或裝置互連。應(yīng)注意,圖1中所示的不同組件之間的總線及通信接口的特定配置僅為示范性的,且計(jì)算裝置及/或具有相同或不同組件的其它圖形處理系統(tǒng)的其它配置可用以實(shí)施本發(fā)明的技術(shù)。
[0034]CPU6可包括控制計(jì)算裝置2的操作的通用或?qū)S锰幚砥?。用?hù)可將輸入提供到計(jì)算裝置2,以致使CPU6執(zhí)行一或多個(gè)軟件應(yīng)用程序。CPU6上執(zhí)行的軟件應(yīng)用程序可包含例如操作系統(tǒng)、字處理器應(yīng)用程序、電子郵件應(yīng)用程序、電子數(shù)據(jù)表應(yīng)用程序、媒體播放器應(yīng)用程序、視頻游戲應(yīng)用程序、圖形用戶(hù)接口應(yīng)用程序或另一程序。另外,CPU6可執(zhí)行用于控制GPU12的操作的GPU驅(qū)動(dòng)程序7。用戶(hù)可經(jīng)由例如鍵盤(pán)、鼠標(biāo)、麥克風(fēng)、觸摸板或經(jīng)由用戶(hù)輸入接口 4耦合到計(jì)算裝置2的另一輸入裝置等一或多個(gè)輸入裝置(未圖示)將輸入提供到計(jì)算裝置2。
[0035]CPU6上執(zhí)行的軟件應(yīng)用程序可包含一或多個(gè)圖形呈現(xiàn)指令,所述圖形呈現(xiàn)指令指示CPU6致使向顯示器18呈現(xiàn)圖形數(shù)據(jù)。在一些實(shí)例中,軟件指令可遵照?qǐng)D形應(yīng)用程序編程接口(API),例如開(kāi)放圖形庫(kù)(OpcnGL?) AP1、開(kāi)放圖形庫(kù)嵌入式系統(tǒng)(OpenGL ES)AP1、Direct3D AP1、X3D AP1、RenderMan API, WebGL API 或任何其它公用或?qū)贅?biāo)準(zhǔn)圖形 API。為了處理圖形呈現(xiàn)指令,CPU6可將一或多個(gè)圖形呈現(xiàn)命令發(fā)布到GPU12 (例如,經(jīng)由GPU驅(qū)動(dòng)程序7),以致使GPU12執(zhí)行圖形數(shù)據(jù)的呈現(xiàn)中的部分或全部。在一些實(shí)例中,待呈現(xiàn)的圖形數(shù)據(jù)可包含圖形基元列表,例如點(diǎn)、線、三角形、四邊形、三角形帶等。
[0036]存儲(chǔ)器控制器8促使傳送數(shù)據(jù)進(jìn)入及離開(kāi)系統(tǒng)存儲(chǔ)器10。舉例來(lái)說(shuō),存儲(chǔ)器控制器8可接收存儲(chǔ)器讀取及寫(xiě)入命令,且為關(guān)于存儲(chǔ)器系統(tǒng)10的此些命令服務(wù),以便為計(jì)算裝置2中的組件提供存儲(chǔ)器服務(wù)。存儲(chǔ)器控制器8經(jīng)由存儲(chǔ)器總線22通信耦合到系統(tǒng)存儲(chǔ)器10。盡管存儲(chǔ)器控制器8在圖1中經(jīng)說(shuō)明為與CPU6及系統(tǒng)存儲(chǔ)器10兩者分離的處理模塊,但在其它實(shí)例中,存儲(chǔ)器控制器8的功能性中的部分或全部可實(shí)施于CPU6及系統(tǒng)存儲(chǔ)器10中的一者或兩者上。
[0037]系統(tǒng)存儲(chǔ)器10可存儲(chǔ)可存取以供CPU6執(zhí)行的程序模塊及/或指令及/或供執(zhí)行于CPU6上的程序使用的數(shù)據(jù)。舉例來(lái)說(shuō),系統(tǒng)存儲(chǔ)器10可存儲(chǔ)窗口管理器應(yīng)用程序,其由CPU6使用以在顯示器18上呈現(xiàn)圖形用戶(hù)接口(⑶I)。另外,系統(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操作的數(shù)據(jù)以及從GPU12所執(zhí)行的操作產(chǎn)生的數(shù)據(jù)。舉例來(lái)說(shuō),系統(tǒng)存儲(chǔ)器10可存儲(chǔ)紋理緩沖器、深度緩沖器、模板緩沖器、頂點(diǎn)緩沖器、幀緩沖器或其類(lèi)似者的任何組合。系統(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ǔ)媒體。
[0038]GPU12可經(jīng)配置以執(zhí)行圖形操作以向顯示器18呈現(xiàn)一或多個(gè)圖形基元。因此,當(dāng)執(zhí)行于CPU6上的軟件應(yīng)用程序中的一者需要圖形處理時(shí),CPU6可將圖形命令及圖形數(shù)據(jù)提供到GPU12以用于呈現(xiàn)于顯示器18。圖形數(shù)據(jù)可包含例如繪制命令、狀態(tài)信息、基元信息、紋理信息等。在一些情況下,GPU12可以高度并行結(jié)構(gòu)來(lái)建置,所述高度并行結(jié)構(gòu)提供比CPU6更有效的復(fù)雜圖形相關(guān)操作的處理。舉例來(lái)說(shuō),GPU12可包含多個(gè)處理元件,所述處理元件經(jīng)配置以并行方式對(duì)多個(gè)頂點(diǎn)或像素操作。在一些情況下,與使用CPU6將場(chǎng)景直接繪制到顯示器18相比,GPU12的高度并行性質(zhì)可允許GPU12更快地將圖形圖像(例如,GUI及二維(2D)及/或三維(3D)圖形場(chǎng)景)繪制到顯示器18上。
[0039]在一些情況下,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)或其它等效集成或離散邏輯電路。
[0040]GPU12可直接耦合到圖形存儲(chǔ)器14。因此,GPU12可在不使用總線20的情況下從圖形存儲(chǔ)器14讀取數(shù)據(jù)及將數(shù)據(jù)寫(xiě)入到圖形存儲(chǔ)器14。換句話說(shuō),GPU12可使用本地存儲(chǔ)裝置而不是芯片外存儲(chǔ)器在本地處理數(shù)據(jù)。這通過(guò)消除GPU12經(jīng)由總線20 (其可經(jīng)歷重總線流通量)讀取及寫(xiě)入數(shù)據(jù)的需要而允許GPU12以更有效方式操作。然而,在一些情況下,GPU12可不包含單獨(dú)存儲(chǔ)器,而是經(jīng)由總線20利用系統(tǒng)存儲(chǔ)器10。圖形存儲(chǔ)器14可包含一或多個(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ǔ)媒體。
[0041]CPU6及/或GPU12可將所呈現(xiàn)的圖像數(shù)據(jù)存儲(chǔ)于幀緩沖器15中。幀緩沖器15可為獨(dú)立存儲(chǔ)器或可分配于系統(tǒng)存儲(chǔ)器10內(nèi)。顯示接口 16可從幀緩沖器15檢索數(shù)據(jù),且配置顯示器18以顯示由所呈現(xiàn)的圖像數(shù)據(jù)表示的圖像。在一些實(shí)例中,顯示接口 16可包含數(shù)/模轉(zhuǎn)換器(DAC),其經(jīng)配置以將從幀緩沖器檢索的數(shù)字值轉(zhuǎn)換成可由顯示器18消耗的模擬信號(hào)。在其它實(shí)例中,顯示接口 16可將數(shù)字值直接傳遞到顯示器18以供處理。顯示器18可包含監(jiān)視器、電視、投影裝置、液晶顯示器(LCD)、等離子體顯示面板、例如有機(jī)LED(OLED)顯示器等發(fā)光二級(jí)管(LED)陣列、陰極射線管(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)視器或平板顯示器。
[0042]根據(jù)本發(fā)明的一個(gè)實(shí)例,CPU6及/或GPU驅(qū)動(dòng)程序7可經(jīng)配置以:產(chǎn)生用于呈現(xiàn)幀的呈現(xiàn)命令,其中所述呈現(xiàn)命令是用于分格呈現(xiàn)模式;跟蹤使用圖形存儲(chǔ)器地址的所述呈現(xiàn)命令;基于呈現(xiàn)特性確定用于所述幀的多個(gè)呈現(xiàn)模式中的一者,其中所述多個(gè)呈現(xiàn)模式包含所述分格呈現(xiàn)模式及直接呈現(xiàn)模式;及在所述確定的呈現(xiàn)模式為直接呈現(xiàn)模式的狀況下更改使用圖形存儲(chǔ)器地址的所述呈現(xiàn)命令以使用系統(tǒng)存儲(chǔ)器地址。
[0043]根據(jù)本發(fā)明的另一實(shí)例,CPU6及/或圖形驅(qū)動(dòng)程序7可經(jīng)配置以:對(duì)場(chǎng)景的基元執(zhí)行分格操作,其中將所述基元?jiǎng)澐殖煞指?;?jì)算表示所述場(chǎng)景的區(qū)中的基元的過(guò)度繪制量的過(guò)度繪制數(shù)目;及基于計(jì)算的計(jì)分確定呈現(xiàn)模式。
[0044]根據(jù)本發(fā)明的另一實(shí)例,CPU6及/或圖形驅(qū)動(dòng)程序7可經(jīng)配置以:將用于執(zhí)行圖形操作的操作命令存儲(chǔ)于第一緩沖器中;及將寫(xiě)入命令存儲(chǔ)于第二緩沖器中,其中所述寫(xiě)入命令更改所述第一緩沖器中的所述操作命令以產(chǎn)生更改的操作命令。
[0045]圖2為更詳細(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)配置以在多種呈現(xiàn)模式(包含分格呈現(xiàn)模式及直接呈現(xiàn)模式)中執(zhí)行圖形處理管線30。如圖2中所示,圖形處理管線30可包含命令引擎32、幾何形狀處理級(jí)34、光柵化級(jí)36及像素處理管線38。圖形處理管線30中的組件中的每一者可經(jīng)實(shí)施為固定功能組件、可編程組件(例如,作為執(zhí)行于可編程著色器單元上的著色器程序的部分)或經(jīng)實(shí)施為固定功能及可編程組件的組合。CPU6及GPU12可用的存儲(chǔ)器可包含系統(tǒng)存儲(chǔ)器10及幀緩沖器15。幀緩沖器15可為系統(tǒng)存儲(chǔ)器10的部分或可與系統(tǒng)存儲(chǔ)器10分離。幀緩沖器15可存儲(chǔ)所呈現(xiàn)的圖像數(shù)據(jù)。
[0046]軟件應(yīng)用程序24可為利用GPU12的功能性的任何應(yīng)用程序。舉例來(lái)說(shuō),軟件應(yīng)用程序24可為CTI應(yīng)用程序、操作系統(tǒng)、便攜式映射應(yīng)用程序、用于工程或藝術(shù)應(yīng)用的計(jì)算機(jī)輔助設(shè)計(jì)程序、視頻游戲應(yīng)用程序或使用2D或3D圖形的另一類(lèi)型的軟件應(yīng)用程序。
[0047]軟件應(yīng)用程序24可包含指示GPU12呈現(xiàn)圖形用戶(hù)接口(⑶I)及/或圖形場(chǎng)景的一或多個(gè)繪制指令。舉例來(lái)說(shuō),繪制指令可包含界定待由GPU12呈現(xiàn)的一或多個(gè)圖形基元的集合的指令。在一些實(shí)例中,繪制指令可共同界定用于GUI中的多個(gè)窗口表面中的全部或部分。在額外實(shí)例中,繪制指令可共同界定包含由應(yīng)用程序界定的模型空間或世界空間內(nèi)的一或多個(gè)圖形物體的圖形場(chǎng)景的全部或部分。
[0048]軟件應(yīng)用程序24可經(jīng)由圖形API26調(diào)用GPU驅(qū)動(dòng)程序7,以將一或多個(gè)命令發(fā)布到GPU12以用于將一或多個(gè)圖形基元呈現(xiàn)到可顯示圖形圖像中。舉例來(lái)說(shuō),軟件應(yīng)用程序24可經(jīng)由圖形API26調(diào)用GPU驅(qū)動(dòng)程序7以將基元定義提供到GPU12。在一些情況下,可按繪制基元的列表(例如,三角形、矩形、三角形扇、三角形帶等)的形式將基元定義提供到GPU12?;x可包含頂點(diǎn)規(guī)范,其指定與待呈現(xiàn)的基元相關(guān)聯(lián)的一或多個(gè)頂點(diǎn)。頂點(diǎn)規(guī)范可包含用于每一頂點(diǎn)的位置坐標(biāo)及在一些情況下與頂點(diǎn)相關(guān)聯(lián)的其它屬性,例如色彩坐標(biāo)、法向量及紋理坐標(biāo)。基元定義還可包含基元類(lèi)型信息(例如,三角形、矩形、三角形扇、三角形帶等)、縮放信息、旋轉(zhuǎn)信息及其類(lèi)似者。基于由軟件應(yīng)用程序24發(fā)布到GPU驅(qū)動(dòng)程序7的指令,GPU驅(qū)動(dòng)程序7可制定一或多個(gè)命令,所述命令指定GPU12執(zhí)行以便呈現(xiàn)基元的一或多個(gè)操作。當(dāng)GPU12從CPU6接收命令時(shí),圖形處理管線30對(duì)命令進(jìn)行解碼且配置圖形處理管線30內(nèi)的一或多個(gè)處理元件以執(zhí)行命令中所指定的操作。在執(zhí)行指定的操作之后,圖形處理管線30將所呈現(xiàn)的數(shù)據(jù)輸出到與顯示裝置相關(guān)聯(lián)的幀緩沖器40。圖形管線30可經(jīng)配置以在多個(gè)不同呈現(xiàn)模式(包含分格呈現(xiàn)模式及直接呈現(xiàn)模式)中的一者中執(zhí)行。下文將更詳細(xì)論述分格呈現(xiàn)模式及直接呈現(xiàn)模式的操作。
[0049]GPU驅(qū)動(dòng)程序7可經(jīng)進(jìn)一步配置以編譯一或多個(gè)著色器程序,及將經(jīng)編譯的著色器程序下載到GPU12內(nèi)所含有的一或多個(gè)可編程著色器單元上??梢愿呒?jí)著色語(yǔ)言(例如,OpenGL著色語(yǔ)言(GLSL)、高級(jí)著色語(yǔ)言(HLSL)、圖形C (Cg)著色語(yǔ)言等)寫(xiě)入著色器程序。經(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í)例實(shí)施例,像素著色器程序還可包含以下指令:基于源像素的對(duì)應(yīng)目的地阿爾法值而選擇性地致使紋理值被檢索以用于源像素。
[0050]根據(jù)本發(fā)明的技術(shù),GPU驅(qū)動(dòng)程序7還可經(jīng)配置以跟蹤經(jīng)產(chǎn)生以用于在分格呈現(xiàn)模式中呈現(xiàn)的利用GMEM地址的命令。對(duì)于利用GMEM地址的每一命令,GPU驅(qū)動(dòng)程序7可存儲(chǔ)將用于直接呈現(xiàn)模式的對(duì)應(yīng)系統(tǒng)存儲(chǔ)器地址。如果呈現(xiàn)模式從分格呈現(xiàn)模式切換到直接呈現(xiàn)模式,那么GPU驅(qū)動(dòng)程序7可修補(bǔ)(B卩,更改)呈現(xiàn)命令以用系統(tǒng)存儲(chǔ)器地址替換GMEM地址。下文將更詳細(xì)論述用于用系統(tǒng)存儲(chǔ)器地址修補(bǔ)GMEM地址的額外技術(shù)。
[0051]圖形處理管線30可經(jīng)配置以從CPU6經(jīng)由圖形驅(qū)動(dòng)程序28接收一或多個(gè)圖形處理命令,及執(zhí)行圖形處理命令以產(chǎn)生可顯示圖形圖像。如上文所論述,圖形處理管線30包含一起操作以執(zhí)行圖形處理命令的多個(gè)級(jí)。然而,應(yīng)注意此些級(jí)不一定實(shí)施于單獨(dú)的硬件塊中。舉例來(lái)說(shuō),幾何形狀處理級(jí)34及像素處理管線38的部分可經(jīng)實(shí)施為統(tǒng)一著色器單元的部分。再次,圖形管線30可經(jīng)配置以在多個(gè)不同呈現(xiàn)模式(包含分格呈現(xiàn)模式及直接呈現(xiàn)模式)中的一者中執(zhí)行。
[0052]命令引擎32可接收?qǐng)D形處理命令,且配置圖形處理管線30內(nèi)的剩余處理級(jí)以執(zhí)行用于進(jìn)行圖形處理命令的各種操作。舉例來(lái)說(shuō),圖形處理命令可包含繪制命令及圖形狀態(tài)命令。繪制命令可包含頂點(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)型命令可指定待呈現(xiàn)的基元的類(lèi)型及/或如何組合頂點(diǎn)以形成基元。變換命令可指定在頂點(diǎn)上執(zhí)行的變換類(lèi)型。照明命令可指定圖形場(chǎng)景內(nèi)的不同光的類(lèi)型、方向及/或放置。命令引擎32可致使幾何形狀處理級(jí)34執(zhí)行關(guān)于與一或多個(gè)接收的命令相關(guān)聯(lián)的頂點(diǎn)及/或基元的幾何形狀處理。
[0053]幾何形狀處理級(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)。舉例來(lái)說(shuō),幾何形狀處理級(jí)34可對(duì)頂點(diǎn)位置坐標(biāo)應(yīng)用模型化變換、檢視變換、投影變換、模型視圖變換、模型視圖投影變換、視口變換及深度范圍縮放變換以產(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í)行其它操作,包含例如正態(tài)操作、正態(tài)規(guī)格化操作、視域裁減、同質(zhì)劃分及/或背面剔除操作。
[0054]幾何形狀處理級(jí)34可產(chǎn)生包含定義待光柵化的基元的一組一或多個(gè)經(jīng)修改的頂點(diǎn)的基元數(shù)據(jù),以及指定如何組合頂點(diǎn)以形成基元的數(shù)據(jù)。舉例來(lái)說(shuō),經(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è)邊緣相交的基元的角。幾何形狀處理級(jí)34可將基元數(shù)據(jù)提供到光柵化級(jí)36以用于進(jìn)一步處理。
[0055]在一些實(shí)例中,幾何形狀處理級(jí)34的全部或部分可由執(zhí)行于一或多個(gè)著色器單元上的一或多個(gè)著色器程序?qū)嵤?。舉例來(lái)說(shuō),在此些實(shí)例中,幾何形狀處理級(jí)34可由頂點(diǎn)著色器、幾何形狀著色器或其任何組合實(shí)施。在其它實(shí)例中,幾何形狀處理級(jí)34可經(jīng)實(shí)施為固定功能硬件處理管線或經(jīng)實(shí)施為固定功能硬件及執(zhí)行于一或多個(gè)著色器單元上的一或多個(gè)著色器程序的組合。
[0056]光柵化級(jí)36經(jīng)配置以從幾何形狀處理級(jí)34接收表示待光柵化的基元的基元數(shù)據(jù),及光柵化基元以產(chǎn)生對(duì)應(yīng)于經(jīng)光柵化的基元的多個(gè)源像素。在一些實(shí)例中,光柵化級(jí)36可確定由待光柵化的基元覆蓋哪些屏幕像素位置,及產(chǎn)生用于經(jīng)確定由基元覆蓋的每一屏幕像素位置的源像素。光柵化級(jí)36可通過(guò)使用所屬領(lǐng)域的技術(shù)人員已知的技術(shù)(例如,邊緣行走技術(shù)、評(píng)估邊緣等式等)確定由基元覆蓋哪些屏幕像素位置。光柵化級(jí)36可將所得源像素提供到像素處理管線38以用于進(jìn)一步處理。
[0057]由光柵化級(jí)36產(chǎn)生的源像素可對(duì)應(yīng)于屏幕像素位置(例如,目的地像素)且與一或多個(gè)色彩屬性相關(guān)聯(lián)。經(jīng)產(chǎn)生用于特定經(jīng)光柵化的基元的所有源像素?fù)?jù)說(shuō)可與經(jīng)光柵化的基元相關(guān)聯(lián)。由光柵化級(jí)36確定的待由基元覆蓋的像素概念上可包含表示基元的頂點(diǎn)的像素、表示基元的邊緣的像素及表示基元的內(nèi)部的像素。
[0058]像素處理管線38經(jīng)配置以接收與經(jīng)光柵化的基元相關(guān)聯(lián)的源像素,及對(duì)源像素執(zhí)行一或多個(gè)逐像素操作??捎上袼靥幚砉芫€38執(zhí)行的逐像素操作包含例如阿爾法測(cè)試、紋理映射、色彩計(jì)算、像素著色、逐像素照明、霧處理、混合、像素所有權(quán)文本、源阿爾法測(cè)試、模板測(cè)試、深度測(cè)試、剪刀測(cè)試及/或點(diǎn)畫(huà)操作。另外,像素處理管線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ù)可包含例如色彩值、目的地阿爾法值、深度值等數(shù)據(jù)。
[0059]幀緩沖器15存儲(chǔ)用于GPU12的目的地像素。每一目的地像素可與獨(dú)特屏幕像素位置相關(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經(jīng)說(shuō)明為單獨(dú)存儲(chǔ)器單元,但在其它實(shí)例中,幀緩沖器15可為系統(tǒng)存儲(chǔ)器10的部分。
[0060]如上文所論述,圖形處理管線30可根據(jù)包含分格呈現(xiàn)模式及直接呈現(xiàn)模式的特定呈現(xiàn)模式呈現(xiàn)圖形圖像。當(dāng)根據(jù)分格呈現(xiàn)模式呈現(xiàn)時(shí),圖形處理管線30可接收一批基元(即,一或多個(gè)基元)以呈現(xiàn)到所得圖形圖像中。為了呈現(xiàn)這批基元,所得圖形圖像可細(xì)分成多個(gè)較小部分(例如,像素平鋪塊或分格),且圖形處理管線30可呈現(xiàn)圖形圖像的每一部分作為單獨(dú)呈現(xiàn)通道。
[0061]圖3為說(shuō)明用于分格呈現(xiàn)模式的經(jīng)劃分成分格的幀的概念圖。幀40可劃分成多個(gè)分格,例如分格42。通常,圖形硬件將含有具有足以保持至少一個(gè)數(shù)據(jù)分格的大小的快速存儲(chǔ)器(例如,圖2的圖形存儲(chǔ)器14)。作為幀的特定部分的單個(gè)呈現(xiàn)通道的部分,圖形處理管線30可呈現(xiàn)關(guān)于幀的目的地像素的特定子集(例如,目的地像素的特定分格)的這批基元的全部或子集。在執(zhí)行關(guān)于第一分格的第一呈現(xiàn)通道之后,圖形處理管線30可執(zhí)行關(guān)于第二分格的第二呈現(xiàn)通道,等等。圖形處理管線30可遞增地遍歷分格直到已呈現(xiàn)與每一分格相關(guān)聯(lián)的基元為止。
[0062]圖4為更詳細(xì)展示用于分格呈現(xiàn)模式中的分格的概念圖。分格44、46、48及50經(jīng)呈現(xiàn)/光柵化以含有多個(gè)像素52。一或多個(gè)圖形基元可在每一分格中可見(jiàn)。舉例來(lái)說(shuō),三角形A(Tri A)的部分在分格44及分格48兩者中可見(jiàn)。三角形B(Tri B)的部分在分格44、分格46、分格48及分格50中的每一者中可見(jiàn)。三角形C(Tri C)僅在分格46中可見(jiàn)。在呈現(xiàn)通道期間,在分格呈現(xiàn)模式的一個(gè)實(shí)例中,場(chǎng)景被拆分成分格,且呈現(xiàn)分格中的所有三角形(這有時(shí)被稱(chēng)作軟件分格)。在分格呈現(xiàn)模式的另一實(shí)例中,在呈現(xiàn)之前采取額外步驟以確定分格中的哪些三角形在最終呈現(xiàn)的場(chǎng)景中實(shí)際上可見(jiàn)(這有時(shí)被稱(chēng)作硬件分格)。舉例來(lái)說(shuō),一些三角形可在一或多個(gè)其它三角形之后,且在最終呈現(xiàn)的場(chǎng)景中將不可見(jiàn)。以此方式,對(duì)于所述分格而言,不需要呈現(xiàn)不可見(jiàn)的三角形。
[0063]在執(zhí)行特定呈現(xiàn)通道時(shí),與所述特定呈現(xiàn)通道相關(guān)聯(lián)的分格的像素?cái)?shù)據(jù)可存儲(chǔ)于圖形存儲(chǔ)器14 (有時(shí)被稱(chēng)作分格緩沖器)中。在執(zhí)行呈現(xiàn)通道之后,圖形處理管線30可將圖形存儲(chǔ)器14的內(nèi)容傳送到幀緩沖器15。在一些狀況下,圖形處理管線30可用存儲(chǔ)于圖形存儲(chǔ)器14中的數(shù)據(jù)重寫(xiě)幀緩沖器15中的數(shù)據(jù)的部分。在其它狀況下,圖形處理管線30可將幀緩沖器15中的數(shù)據(jù)與存儲(chǔ)于圖形存儲(chǔ)器14中的數(shù)據(jù)合成或組合。在將圖形存儲(chǔ)器14的內(nèi)容傳送到幀緩沖器15之后,圖形處理管線30可將圖形存儲(chǔ)器14初始化為默認(rèn)值,且開(kāi)始關(guān)于不同分格的后續(xù)呈現(xiàn)通道。
[0064]圖5為展示用于使用分格呈現(xiàn)模式(其使用“軟件”分格)呈現(xiàn)場(chǎng)景的實(shí)例命令結(jié)構(gòu)的概念圖。I級(jí)間接緩沖器(IB1)60含有用于指導(dǎo)GPU12執(zhí)行圖形存儲(chǔ)器管線30的各種步驟的一系列執(zhí)行命令。IB160中的每一執(zhí)行命令本質(zhì)上為到含有用于呈現(xiàn)管線的各種方面的命令的一或多個(gè)2級(jí)間接緩沖器(IB2)中的指針。以此方式,建立用于執(zhí)行圖形呈現(xiàn)管線的兩個(gè)或兩個(gè)以上層級(jí)結(jié)構(gòu)。GPU12可順序地逐句通過(guò)IB160中的每一執(zhí)行命令,其中IB160中的每一執(zhí)行指向存儲(chǔ)于IB2中的特定命令堆疊。IBl及IB2可為存儲(chǔ)器(其為機(jī)載GPU12)或可為GPU12的外部存儲(chǔ)器,例如系統(tǒng)存儲(chǔ)器10。
[0065]IB160中的前置項(xiàng)執(zhí)行命令指向含有可由GPU12執(zhí)行的前置項(xiàng)命令的前置項(xiàng)IB262。舉例來(lái)說(shuō),前置項(xiàng)IB262可包含初始化GPU12的靜態(tài)狀態(tài)及設(shè)定GPU12的初始呈現(xiàn)狀態(tài)的命令。GPU的靜態(tài)狀態(tài)包含不會(huì)基于特定應(yīng)用程序改變的設(shè)定。另一方面,呈現(xiàn)狀態(tài)包含可基于特定應(yīng)用程序(例如,OpenGL應(yīng)用程序?qū)irect X應(yīng)用程序)改變的GPU設(shè)定。在前置項(xiàng)IB2中的命令完成之后,控制返回到IB160以執(zhí)行下一執(zhí)行命令。
[0066]IB160中的下一執(zhí)行命令配置所使用的呈現(xiàn)模式的呈現(xiàn)通道。再次,在圖5的實(shí)例中,呈現(xiàn)模式為使用軟件分格的分格呈現(xiàn)模式。接下來(lái),IB160中的載入分格執(zhí)行命令指向載入IB266中的命令。對(duì)于軟件分格,將用于特定分格的數(shù)據(jù)載入到GMEM14(載入2GMEM)中。控制接著傳回到IB160且呈現(xiàn)分格指令命令指向呈現(xiàn)IB2中的命令。呈現(xiàn)IB268由一系列狀態(tài)命令及用于在載入分格中繪制三角形的繪制命令組成。每一繪制命令指示GPU12根據(jù)由命令及/或GPU硬件建立的圖形處理管線30 (例如,包含幾何形狀處理狀態(tài)34、光柵化狀態(tài)36及/或像素處理管線38)繪制三角形。如呈現(xiàn)IB268中所示,繪制命令中的每一者指示沒(méi)有可見(jiàn)性流用以確定特定三角形在分格中是否實(shí)際上可見(jiàn)。可見(jiàn)性流產(chǎn)生于使用“硬件”分格的分格呈現(xiàn)模式中,且將參看圖6來(lái)更詳細(xì)論述。呈現(xiàn)IB268中的狀態(tài)命令影響由GPU12執(zhí)行的圖形處理管線的行為。舉例來(lái)說(shuō),狀態(tài)命令可改變色彩、多邊形模式(例如,點(diǎn)而非實(shí)線或線)、混合(開(kāi)/關(guān))、深度測(cè)試(開(kāi)/關(guān))、紋理化(開(kāi)/關(guān))、剔除、裁剪及其它邏輯操作。如呈現(xiàn)IB268中所示,可在逐三角形(或逐基元)的基礎(chǔ)上發(fā)布狀態(tài)命令。即,命令“狀態(tài)Tri A”可在繪制三角形A時(shí)影響GPU12的行為,而“狀態(tài)Tri BI”及“狀態(tài)Tri B2”命令可在繪制三角形B時(shí)影響GPU12的行為?!盃顟B(tài)Tri BI”及“狀態(tài)Tri B2”命令僅指示可針對(duì)每一三角形執(zhí)行多個(gè)狀態(tài)命令。
[0067]在所有命令已在呈現(xiàn)IB268中執(zhí)行之后(例如,在已繪制所有三角形之后),控制返回到IB160。存儲(chǔ)分格執(zhí)行命令可包含到存儲(chǔ)IB270的指針,存儲(chǔ)IB270包含將所呈現(xiàn)的分格從GMEM14存儲(chǔ)到存儲(chǔ)器(例如,幀緩沖器15)中的命令。接著針對(duì)一或多個(gè)幀的每一分格72重復(fù)呈現(xiàn)通道(例如,配置呈現(xiàn)通道以存儲(chǔ)分格的執(zhí)行命令,如IB160中所示)。
[0068]圖6為展示用于使用分格呈現(xiàn)模式(其使用“硬件”分格)呈現(xiàn)場(chǎng)景的實(shí)例命令結(jié)構(gòu)的概念圖。IB161中的執(zhí)行命令類(lèi)似于圖6的IB160的執(zhí)行命令,關(guān)于“分格”通道的命令除外?!胺指瘛蓖ǖ烙靡援a(chǎn)生可見(jiàn)性流,其指示分格中的特定三角形在最終呈現(xiàn)的場(chǎng)景中是否實(shí)際上可見(jiàn)。舉例來(lái)說(shuō),一些三角形可在場(chǎng)景中的另一三角形之后,且在一些情形下將不可見(jiàn)(例如,當(dāng)前面的三角形不透明時(shí)或當(dāng)不使用混合時(shí))。在呈現(xiàn)分格72之前,IB161可包含指向分格IB274中的命令的分格通道執(zhí)行命令。分格IB274包含致使GPU12執(zhí)行圖形管線的簡(jiǎn)化版本(例如,呈現(xiàn)IB269的簡(jiǎn)化版本)的命令,但添加了基于深度測(cè)試(Z測(cè)試)更新分格中的每一三角形的可見(jiàn)性流的步驟,所述深度測(cè)試確定三角形在最終呈現(xiàn)的場(chǎng)景中是否可見(jiàn)。
[0069]分格通道的目標(biāo)在于識(shí)別與當(dāng)前分格相交的三角形。因而,僅需要確定三角形的頂點(diǎn)的位置以識(shí)別三角形是否與特定分格相交。分格通道利用簡(jiǎn)化頂點(diǎn)著色器,其僅包含影響頂點(diǎn)的位置的指令。舉例來(lái)說(shuō),色彩指令、紋理坐標(biāo)及不影響三角形頂點(diǎn)的位置的其它指令可從用于分格通道的簡(jiǎn)化頂點(diǎn)著色器移除。分格通道還使用粗光柵化而非細(xì)光柵化來(lái)確定每一三角形的近似深度。粗光柵化以比細(xì)光柵化低的精度計(jì)算深度值(例如,使用較低數(shù)目個(gè)位)。僅近似深度值為必要的以確定三角形在分格中是否可見(jiàn)。像素著色器不用于分格通道中。
[0070]分格通道接著利用對(duì)粗深度值的深度測(cè)試來(lái)相對(duì)于分格中其它三角形確定三角形在分格中是否可見(jiàn)?;诖松疃葴y(cè)試,更新可見(jiàn)性流??梢?jiàn)性流可為指示所呈現(xiàn)的分格中的特定三角形是否可見(jiàn)的一串位(例如,I指示三角形可見(jiàn),O指示三角形不可見(jiàn))。
[0071]呈現(xiàn)IB269中的命令類(lèi)似于圖5中的呈現(xiàn)IB68的命令,但用于可見(jiàn)性流。呈現(xiàn)IB269中的繪制命令(例如,繪制Tri A、繪制Tri B、繪制Tri C等)可使用由分格通道產(chǎn)生的可見(jiàn)性流來(lái)確定是否有必要繪制特定三角形。舉例來(lái)說(shuō),對(duì)于由可見(jiàn)性流指示為可不見(jiàn)的三角形可跳過(guò)繪制。
[0072]與逐分格地呈現(xiàn)幀相反,如在分格呈現(xiàn)模式中,直接呈現(xiàn)在一個(gè)通道中經(jīng)由圖形管線呈現(xiàn)整個(gè)幀。直接呈現(xiàn)當(dāng)執(zhí)行于具有有限量的圖形存儲(chǔ)器的基于分格的架構(gòu)中時(shí)通常利用較慢的系統(tǒng)存儲(chǔ)器。
[0073]圖7為展示用于使用直接呈現(xiàn)模式呈現(xiàn)場(chǎng)景的實(shí)例命令結(jié)構(gòu)的概念圖。用于直接呈現(xiàn)模式的命令類(lèi)似于用于圖5中的軟件分格的命令,但替代在逐分格的基礎(chǔ)上呈現(xiàn),在一個(gè)通道中呈現(xiàn)整個(gè)幀。舉例來(lái)說(shuō),IB180中的執(zhí)行命令類(lèi)似于IB160中的執(zhí)行命令,但替代載入、呈現(xiàn)及存儲(chǔ)分格,IB180中的執(zhí)行命令指向載入、呈現(xiàn)及存儲(chǔ)幀的相應(yīng)IB2中的命令。更特定來(lái)說(shuō),IB180中的載入幀執(zhí)行命令指向載入IB286,載入IB286包含用以將幀的數(shù)據(jù)載入到系統(tǒng)存儲(chǔ)器(載入2系統(tǒng)存儲(chǔ)器)的命令。IB180中的命令可包含前置項(xiàng)、前置項(xiàng)/恢復(fù)、配置呈現(xiàn)通道、載入幀、呈現(xiàn)幀及存儲(chǔ)幀。IB180中的呈現(xiàn)幀執(zhí)行命令指向呈現(xiàn)IB288,呈現(xiàn)IB288含有致使GPU12繪制幀中的基元的指令。如同軟件分格,直接呈現(xiàn)模式中的呈現(xiàn)不利用硬件分格通道或可見(jiàn)性流。呈現(xiàn)IB288中的任何繪制命令(例如,繪制TriA、繪制Tri B、繪制Tri C)將利用系統(tǒng)存儲(chǔ)器來(lái)存儲(chǔ)所呈現(xiàn)的三角形。存儲(chǔ)幀執(zhí)行命令指向存儲(chǔ)IB290,存儲(chǔ)IB290含有用以將所呈現(xiàn)的幀從系統(tǒng)存儲(chǔ)器存儲(chǔ)到另一存儲(chǔ)器(例如,幀緩沖器15)的指令(從系統(tǒng)存儲(chǔ)器存儲(chǔ))。
[0074]IB180中的前置項(xiàng)執(zhí)行命令指向前置項(xiàng)IB282,前置項(xiàng)IB282含有用于建立GPU12的靜態(tài)狀態(tài)及初始呈現(xiàn)狀態(tài)的指令。這些命令起的作用類(lèi)似于圖6的前置項(xiàng)IB262中的命令,但設(shè)定用于直接呈現(xiàn)模式而非分格呈現(xiàn)模式的呈現(xiàn)狀態(tài)。
[0075]根據(jù)本發(fā)明的技術(shù),在應(yīng)用程序(例如,圖2的軟件應(yīng)用程序24)開(kāi)始呈現(xiàn)場(chǎng)景之前,執(zhí)行于一或多個(gè)處理器(例如,CPU6)上的圖形驅(qū)動(dòng)程序(例如,圖形驅(qū)動(dòng)程序7)基于關(guān)于所要呈現(xiàn)通道的試探數(shù)據(jù)確定呈現(xiàn)模式(例如,分格呈現(xiàn)與直接呈現(xiàn)之間的確定)。在一些技術(shù)中,可從先前呈現(xiàn)通道聚集關(guān)于當(dāng)前呈現(xiàn)通道的試探數(shù)據(jù)。然而,此技術(shù)可不總是為確定呈現(xiàn)模式的優(yōu)選方式,因?yàn)閼?yīng)用程序可在呈現(xiàn)新的場(chǎng)景之前切換呈現(xiàn)技術(shù)。因而,此技術(shù)可導(dǎo)致呈現(xiàn)效率不高,直到已累計(jì)足夠的新數(shù)據(jù)以切換到恰當(dāng)呈現(xiàn)模式為止。
[0076]另外,如果當(dāng)前場(chǎng)景不同于先前場(chǎng)景,那么關(guān)于過(guò)去呈現(xiàn)的試探數(shù)據(jù)可不總是提供用于當(dāng)前場(chǎng)景的最優(yōu)選呈現(xiàn)模式。舉例來(lái)說(shuō),將最優(yōu)選地使用快速改變呈現(xiàn)模式的應(yīng)用程序可導(dǎo)致使用此試探分析的許多錯(cuò)誤預(yù)測(cè)。理想地,圖形驅(qū)動(dòng)程序可確定給定呈現(xiàn)目標(biāo)的呈現(xiàn)載入,且立即作出呈現(xiàn)模式確定。本發(fā)明提出了用于更優(yōu)選確定呈現(xiàn)模式的技術(shù)及用于在呈現(xiàn)模式之間切換的技術(shù)。
[0077]以下技術(shù)適用于使用任何圖形應(yīng)用程序編程接口(API)的圖形處理系統(tǒng),且特定來(lái)說(shuō),適用于利用分格呈現(xiàn)的圖形API。此些API的實(shí)例包含Microsoft的DirectX9 (DX9)、DXlO及DXll,以及開(kāi)源圖形API,例如OpenGL及OpenGL ES。
[0078]圖8為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的呈現(xiàn)命令修補(bǔ)的概念圖。首先,圖形處理系統(tǒng)(例如,圖1的計(jì)算裝置2)最初假定特定應(yīng)用程序在分格模式中更優(yōu)選地呈現(xiàn)到當(dāng)前呈現(xiàn)目標(biāo)(例如,一或多個(gè)幀)。特定呈現(xiàn)模式(例如,分格或直接呈現(xiàn))的選擇可由圖形驅(qū)動(dòng)程序7來(lái)處理。當(dāng)啟用分格時(shí),圖形驅(qū)動(dòng)程序7將給定呈現(xiàn)目標(biāo)的所有載入、存儲(chǔ)、呈現(xiàn)及塊傳送(BLT)命令分批直到需要將其清空為止。在此上下文中,清空意謂著將由驅(qū)動(dòng)程序分批的任何呈現(xiàn)命令發(fā)射到硬件(例如,GPU12)。用于載入、存儲(chǔ)、呈現(xiàn)及BLT的命令可存儲(chǔ)于單獨(dú)緩沖器(例如,單獨(dú)IB2緩沖器)中。舉例來(lái)說(shuō),呈現(xiàn)命令可存儲(chǔ)于分格呈現(xiàn)模式IB268中。
[0079]分格呈現(xiàn)模式中的呈現(xiàn)命令使用特殊地址,其被寫(xiě)入到某些寄存器以使得可存取快速圖形存儲(chǔ)器(GMEM)。因?yàn)閳D形驅(qū)動(dòng)程序7最初假定針對(duì)所有呈現(xiàn)啟用分格,所以能選擇GMEM與系統(tǒng)存儲(chǔ)器的每一寄存器將使用GMEM地址。圖8中的分格呈現(xiàn)模式IB268展示與繪制三角形(繪制Tri)相關(guān)聯(lián)的一系列命令,其中命令1、4及5利用GMEM地址。
[0080]當(dāng)將清空呈現(xiàn)時(shí),圖形驅(qū)動(dòng)程序存取將要執(zhí)行的所有呈現(xiàn)命令。根據(jù)本發(fā)明的技術(shù),圖形驅(qū)動(dòng)程序7可經(jīng)配置以分析呈現(xiàn)命令,且可考慮一或多個(gè)呈現(xiàn)特性(即,關(guān)于呈現(xiàn)通道的試探數(shù)據(jù))。此些呈現(xiàn)特性可包含呈現(xiàn)目標(biāo)的大小及類(lèi)型、是否啟用深度測(cè)試的指示、所使用的著色器的復(fù)雜性、所繪制基元的數(shù)目、紋理讀取的數(shù)目、所讀取的任何紋理的大小及/或使用中的所有表面的微平鋪模式。
[0081]舉例來(lái)說(shuō),基于呈現(xiàn)目標(biāo)的大小,GPU驅(qū)動(dòng)程序7可確定分格的開(kāi)銷(xiāo)(例如,對(duì)GMEM執(zhí)行載入/存儲(chǔ)循環(huán)的時(shí)間加上分格通道)是否將被分格的正效應(yīng)抵消。舉例來(lái)說(shuō),小呈現(xiàn)目標(biāo)(例如,16x16)可在直接呈現(xiàn)模式中較快地執(zhí)行,甚至在保存到系統(tǒng)存儲(chǔ)器時(shí)。
[0082]作為另一實(shí)例,不利用深度測(cè)試的圖形管線可不利用分格呈現(xiàn)模式的優(yōu)點(diǎn)。通常,當(dāng)不使用分格時(shí),必須應(yīng)用深度測(cè)試以讀取現(xiàn)有深度值,執(zhí)行測(cè)試及接著將新深度值寫(xiě)回到系統(tǒng)存儲(chǔ)器中的緩沖器中。在分格的情況下,在GMEM中進(jìn)行深度測(cè)試過(guò)程,這使其“不受約束”(即,極快,具有最小開(kāi)銷(xiāo)時(shí)間)。因而,當(dāng)針對(duì)特定圖形管線不啟用深度測(cè)試時(shí),分格呈現(xiàn)模式將不提供關(guān)于深度測(cè)試的任何存儲(chǔ)器帶寬節(jié)省。因而,當(dāng)停用或不使用深度測(cè)試時(shí),GPU驅(qū)動(dòng)程序7可確定直接呈現(xiàn)模式為優(yōu)選的。
[0083]作為另一實(shí)例,分格呈現(xiàn)模式在三角形之間存在深度復(fù)雜性(例如,在各種深度處的基元)及重疊時(shí)提供最大益處。當(dāng)所繪制的基元的數(shù)目小時(shí),來(lái)自分格呈現(xiàn)模式的益處也可為小的。因而,GPU驅(qū)動(dòng)程序7可確定在將繪制小數(shù)目基元時(shí)直接呈現(xiàn)模式為優(yōu)選的。同樣,GPU驅(qū)動(dòng)程序7可確定在將繪制大數(shù)目個(gè)基元時(shí)分格呈現(xiàn)模式為優(yōu)選的。
[0084]作為另一實(shí)例,當(dāng)執(zhí)行紋理時(shí),外部存儲(chǔ)及到及自系統(tǒng)存儲(chǔ)器的讀取對(duì)系統(tǒng)存儲(chǔ)器帶寬具有負(fù)面影響。因而,當(dāng)紋理化時(shí),分格呈現(xiàn)模式提供對(duì)存儲(chǔ)器的較快存取(即,用較快的GMEM執(zhí)行更多存儲(chǔ)及讀取)。繪制的場(chǎng)景中的紋理操作的數(shù)目及頻率可使來(lái)自分格呈現(xiàn)模式的增益為零。即,較小紋理操作可建議分格呈現(xiàn)模式將提供較小益處,且應(yīng)替代地使用直接呈現(xiàn)模式。
[0085]呈現(xiàn)命令的分析的結(jié)果可被計(jì)算為“計(jì)分”,所述計(jì)分可考慮到上文所論述的各種特性中的一或多者,例如在加權(quán)或非加權(quán)基礎(chǔ)上。如果此計(jì)分低于給定閾值,那么使用直接呈現(xiàn)模式。如果此計(jì)分高于給定閾值,那么使用分格呈現(xiàn)模式。因而,此技術(shù)提供當(dāng)前呈現(xiàn)目標(biāo)的及時(shí)(JIT)分析以確定當(dāng)前呈現(xiàn)模式。不需要過(guò)去呈現(xiàn)通道的試探分析。然而,可替代地使用過(guò)去呈現(xiàn)通道的試探分析,或其可與當(dāng)前呈現(xiàn)目標(biāo)的分析組合地使用。舉例來(lái)說(shuō),當(dāng)前呈現(xiàn)模式的JIT分析可用作從過(guò)去呈現(xiàn)的累計(jì)統(tǒng)計(jì)的試探分析確定的呈現(xiàn)模式無(wú)效的指示符。
[0086]根據(jù)本發(fā)明的另一實(shí)例,呈現(xiàn)模式的確定(例如,分格呈現(xiàn)模式與直接呈現(xiàn)模式之間的確定)可使用利用“硬件”分格的圖形處理系統(tǒng)中過(guò)度繪制跟蹤器來(lái)進(jìn)行。
[0087]圖9為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的過(guò)度繪制跟蹤的概念圖。相對(duì)于直接呈現(xiàn)模式,當(dāng)存在高過(guò)度繪制量時(shí),分格呈現(xiàn)模式的效率最高。過(guò)度繪制在存在重疊的若干圖形基元時(shí)出現(xiàn)。繪制所有此些基元可效率不高,因?yàn)橐恍┗牟糠挚稍谧罱K的場(chǎng)景中不可見(jiàn)(例如,其在另一不透明基元之后)。“硬件”分格可用以減少幀的某些平鋪塊中的過(guò)度繪制(例如,通過(guò)產(chǎn)生如上文所描述的可見(jiàn)性流)。
[0088]在利用分格的圖形架構(gòu)中,通常存在2個(gè)階段:1)分格階段,其基于其變換的頂點(diǎn)位置將基元分類(lèi)成屏幕對(duì)準(zhǔn)的分格;及2)呈現(xiàn)階段,其中這些分格中的每一者(即,分格中的基元)被呈現(xiàn)。除了分類(lèi)步驟之外,一些圖形處理架構(gòu)還逐基元地產(chǎn)生可見(jiàn)性流及與區(qū)相關(guān)聯(lián)的粗粒度深度⑵值(例如,在所謂的“硬件”分格中)。然而,應(yīng)注意此“硬件”分格可不產(chǎn)生關(guān)于分格中的基元的分布及相關(guān)聯(lián)的過(guò)度繪制的直接信息。本發(fā)明提出了在與粗粒度Z光柵化器的粒度相同的粒度處添加過(guò)度繪制跟蹤器(S卩,分格IB2 94中的命令)。舉例來(lái)說(shuō),命令(例如,“計(jì)算過(guò)度繪制”及“更新過(guò)度繪制跟蹤器”)可添加到分格IB2 94,其指示GPU12計(jì)算每一分格的過(guò)度繪制的量,且基于計(jì)算的過(guò)度繪制的量更新過(guò)度繪制跟
[0089]此“過(guò)度繪制”可在每一區(qū)為整數(shù)值(其中區(qū)可為像素、分格的部分、分格或多個(gè)分格),其表示所述區(qū)中光柵化的基元之間的重疊,及因此使用分格呈現(xiàn)的益處。圖形驅(qū)動(dòng)程序7可存取過(guò)度繪制數(shù)目,且可使用過(guò)度繪制數(shù)目進(jìn)行呈現(xiàn)模式確定。此技術(shù)接著可擴(kuò)展到將此值合計(jì)到分格中的所有區(qū),及進(jìn)一步合計(jì)到場(chǎng)景中的所有分格。這允許軟件應(yīng)用程序及/或驅(qū)動(dòng)程序(例如,圖形驅(qū)動(dòng)程序7)作出分格呈現(xiàn)是否將有益的立即確定(當(dāng)與其它試探法相比較時(shí))。另外,這些技術(shù)還可用作調(diào)試工具以顯現(xiàn)復(fù)雜呈現(xiàn)情形中的活動(dòng)的區(qū)。
[0090]圖10說(shuō)明計(jì)算四個(gè)16x16分格中的過(guò)度繪制的一個(gè)實(shí)例。在此實(shí)例中,首先針對(duì)每一像素計(jì)算“過(guò)度繪制”。過(guò)度繪制被定義為觸摸像素的基元的數(shù)目,其大于I。分格95及99中的所有像素將具有重疊計(jì)分O,而例如分格101的像素96將具有重疊計(jì)分I,因?yàn)閮蓚€(gè)三角形在所述像素中?!斑^(guò)度繪制”數(shù)目可定義為分格的重疊計(jì)分的總和除以分格中的像素的總數(shù)目(例如,過(guò)度繪制=逐像素重疊的總和/像素的數(shù)目)。在圖10中所示的實(shí)例中,分格101將具有過(guò)度繪制數(shù)目30/16,而分格95及99兩者將具有過(guò)度繪制計(jì)分O。高于某一閾值的過(guò)度繪制數(shù)目可指示分格呈現(xiàn)模式應(yīng)用于與過(guò)度繪制數(shù)目相關(guān)聯(lián)的區(qū),而低于某一閾值的過(guò)度繪制數(shù)目可指示直接呈現(xiàn)模式應(yīng)用于與過(guò)度繪制數(shù)目相關(guān)聯(lián)的區(qū)。
[0091]轉(zhuǎn)而參看圖8,基于計(jì)分(基于呈現(xiàn)命令的分析及/或過(guò)度繪制跟蹤器),圖形驅(qū)動(dòng)程序7確定最優(yōu)模式。與確定更優(yōu)選呈現(xiàn)模式一道,圖形驅(qū)動(dòng)程序7還可經(jīng)配置以跟蹤利用GMEM地址的所有分格呈現(xiàn)命令(例如,圖8的實(shí)例中的命令1、4及5)。圖形驅(qū)動(dòng)程序7可存儲(chǔ)用于這些命令中的每一者的對(duì)應(yīng)系統(tǒng)存儲(chǔ)器地址(例如,在系統(tǒng)存儲(chǔ)器10中),使得可更改使用GMEM地址的分格呈現(xiàn)命令以使用系統(tǒng)存儲(chǔ)器地址。如果確定直接呈現(xiàn)為更優(yōu)選模式,那么圖形驅(qū)動(dòng)程序7可修補(bǔ)分格呈現(xiàn)模式IB2 68以用系統(tǒng)存儲(chǔ)器地址替換GMEM地址,因此產(chǎn)生直接呈現(xiàn)模式IB2 88。以此方式,可在不再生用于直接呈現(xiàn)模式IB2的整個(gè)命令結(jié)構(gòu)的情況下產(chǎn)生用于直接呈現(xiàn)的呈現(xiàn)命令。最終,在清空時(shí),圖形驅(qū)動(dòng)程序7將命令添加到IBl (例如,圖7的IB180)以執(zhí)行BLT IB2及呈現(xiàn)IB2 (在此狀況下,呈現(xiàn)IB2更改為使用系統(tǒng)存儲(chǔ)器地址),且用信號(hào)通知GPU7開(kāi)始執(zhí)行IBl。
[0092]在本發(fā)明的另一實(shí)例中,用于呈現(xiàn)的每一寄存器可實(shí)施于硬件中。圖11為說(shuō)明根據(jù)本發(fā)明的此實(shí)例的呈現(xiàn)模式選擇的概念圖。全局控制寄存器102可用以控制寄存器的哪一集合用于給定呈現(xiàn)模式(例如,分格呈現(xiàn)模式寄存器104或直接呈現(xiàn)模式寄存器106)。分格呈現(xiàn)模式寄存器104可處理目的地表面信息(即,分格)、用于GMEM的地址存儲(chǔ)器及可見(jiàn)性流使用(用于基于硬件的分格呈現(xiàn))。直接呈現(xiàn)模式寄存器106將包含到系統(tǒng)存儲(chǔ)器的地址。全局控制寄存器102基于呈現(xiàn)模式的JIT分析控制以上寄存器中的哪一版本用以填充例如呈現(xiàn)IB2 118中的命令,如上文所描述。圖形驅(qū)動(dòng)程序7可控制全局控制寄存器102以選擇分格呈現(xiàn)模式寄存器104或直接呈現(xiàn)模式寄存器106。此技術(shù)使用硬件寄存器,而不是用軟件修補(bǔ)IB2,如上文所描述。全局控制寄存器102可在IBl中。
[0093]在本發(fā)明的另一實(shí)例中,提出了用于修補(bǔ)命令緩沖器的技術(shù)。圖12為說(shuō)明根據(jù)本發(fā)明的此實(shí)例的呈現(xiàn)命令修補(bǔ)的概念圖。此實(shí)例的所提出的技術(shù)可用于在從分格呈現(xiàn)模式切換到直接呈現(xiàn)模式時(shí)修補(bǔ)命令緩沖器。然而,可在需要修補(bǔ)命令緩沖器的任何情形中利用以下技術(shù)。舉例來(lái)說(shuō),可修補(bǔ)命令以支持圖形存儲(chǔ)器的虛擬化,改變較低MIP中的資源細(xì)節(jié)層次(LOD)的MIP層次,或在執(zhí)行命令緩沖器之前運(yùn)行正確性掃描器。修補(bǔ)命令緩沖器以從分格呈現(xiàn)模式切換到直接呈現(xiàn)模式所需要的CPU循環(huán)在某些情形下成本可能較高。此實(shí)例旨在減少CPU開(kāi)銷(xiāo)。
[0094]一般來(lái)說(shuō),此技術(shù)提供用于圖形驅(qū)動(dòng)程序7使用GPU12 (而非GPU驅(qū)動(dòng)程序7)修補(bǔ)命令緩沖器從而最小化CPU開(kāi)銷(xiāo)的方式。在圖8的實(shí)例中,如果圖形驅(qū)動(dòng)程序7將在分格及直接呈現(xiàn)之間切換,那么圖形驅(qū)動(dòng)程序7在將執(zhí)行命令添加到IBl之前跟蹤及修補(bǔ)所有的IB2命令。此實(shí)例提出了替代建置修補(bǔ)列表(例如,圖8的系統(tǒng)存儲(chǔ)器10中所示的修補(bǔ)列表),圖形驅(qū)動(dòng)程序7建置單獨(dú)修補(bǔ)IB2 98,其含有更改另一 IB2中的命令(例如,任何一般操作命令)的寫(xiě)入命令。舉例來(lái)說(shuō),寫(xiě)入命令的目的地可為分格呈現(xiàn)模式IB2 68中的位置,其在由圖形驅(qū)動(dòng)程序7選擇直接呈現(xiàn)模式的狀況下需要更改以使用系統(tǒng)存儲(chǔ)器地址。當(dāng)圖形驅(qū)動(dòng)程序7準(zhǔn)備好清空命令時(shí),其能夠選擇執(zhí)行“修補(bǔ)IB2”中的命令以進(jìn)入直接呈現(xiàn)模式,或通過(guò)修補(bǔ)IB2及在分格模式中繼續(xù)。圖形驅(qū)動(dòng)程序7可通過(guò)將執(zhí)行命令(修補(bǔ)呈現(xiàn)IB2)添加到IBl 80中的執(zhí)行命令而使得修補(bǔ)IB2 98被執(zhí)行。以此方式,GPU12將在執(zhí)行IB2 68中的呈現(xiàn)命令之前執(zhí)行IB2 98中的修補(bǔ)命令。因而,GPU12自身對(duì)呈現(xiàn)IB268進(jìn)行修補(bǔ)以實(shí)現(xiàn)呈現(xiàn)模式切換,而非使CPU6進(jìn)行修補(bǔ)。[0095]圖13為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的方法的流程圖。圖13的方法可由CPU6、GPU12及/或駐留于計(jì)算裝置2上的任何其它硬件、固件、軟件元件或其組合執(zhí)行。CPU6可經(jīng)配置以產(chǎn)生用于呈現(xiàn)幀的呈現(xiàn)命令,其中呈現(xiàn)命令用于分格呈現(xiàn)模式(1302)。CPU6可經(jīng)進(jìn)一步配置以跟蹤使用圖形存儲(chǔ)器地址的呈現(xiàn)命令(1304)。
[0096]CPU6接著可基于呈現(xiàn)特性確定用于幀的多個(gè)呈現(xiàn)模式中的一者,其中多個(gè)呈現(xiàn)模式包含分格呈現(xiàn)模式及直接呈現(xiàn)模式(1306)。呈現(xiàn)特性包含呈現(xiàn)目標(biāo)的大小及類(lèi)型、深度測(cè)試狀態(tài)、著色器的復(fù)雜性、所繪制的基元的數(shù)目、紋理讀取的數(shù)目、紋理大小及微平鋪模式中的至少一者。確定多個(gè)呈現(xiàn)模式中的一者可包含基于當(dāng)前幀的呈現(xiàn)特性確定多個(gè)呈現(xiàn)模式中的一者。在另一實(shí)例中,確定多個(gè)呈現(xiàn)模式中的一者可包含基于當(dāng)前幀及先前呈現(xiàn)的幀的呈現(xiàn)特性確定多個(gè)呈現(xiàn)模式中的一者。
[0097]CPU6接著可在確定的呈現(xiàn)模式為直接呈現(xiàn)模式的狀況下更改使用圖形存儲(chǔ)器地址的呈現(xiàn)命令以使用系統(tǒng)存儲(chǔ)器地址(1308)。在確定的呈現(xiàn)模式為分格呈現(xiàn)模式的狀況下,CPU6將不更改呈現(xiàn)命令。
[0098]CPU6可經(jīng)進(jìn)一步配置以將執(zhí)行命令存儲(chǔ)于第一緩沖器中,及將呈現(xiàn)命令存儲(chǔ)于第二緩沖器中。執(zhí)行命令指向呈現(xiàn)命令。更改呈現(xiàn)命令(1308)可包含修補(bǔ)第二緩沖器以用系統(tǒng)存儲(chǔ)器地址替換圖形存儲(chǔ)器地址。CPU6可進(jìn)一步將指向第二緩沖器中的呈現(xiàn)命令的執(zhí)行命令添加到第一緩沖器。GPU12接著可執(zhí)行第一緩沖器中的執(zhí)行命令。
[0099]在另一實(shí)例中,CPU6可經(jīng)配置以將分格模式特定信息存儲(chǔ)于第一寄存器中,將直接呈現(xiàn)模式特定信息存儲(chǔ)于第二寄存器中,及利用全局寄存器基于確定的呈現(xiàn)模式在第一寄存器與第二寄存器之間選擇。分格模式特定信息包含處理目的地表面信息的寄存器地址、圖形存儲(chǔ)器地址及可見(jiàn)性流使用中的至少一者,且其中直接呈現(xiàn)模式特定信息包含系統(tǒng)存儲(chǔ)器地址。
[0100]圖14為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的方法的流程圖。圖14的方法可由CPU6、GPU12及/或駐留于計(jì)算裝置2上的任何其它硬件、固件、軟件元件或其組合執(zhí)行。CPU6可經(jīng)配置以對(duì)場(chǎng)景的基元執(zhí)行分格操作,其中將基元?jiǎng)澐殖煞指?1402),計(jì)算表示場(chǎng)景的區(qū)中的基元的過(guò)度繪制量的過(guò)度繪制數(shù)目(1404),及基于計(jì)算的過(guò)度繪制數(shù)目確定呈現(xiàn)模式(1406)。如果過(guò)度繪制數(shù)目大于某一閾值,那么分格呈現(xiàn)模式可經(jīng)確定為呈現(xiàn)模式。如果過(guò)度繪制數(shù)目小于某一閾值,那么直接呈現(xiàn)模式可經(jīng)確定為呈現(xiàn)模式。GPU12接著可根據(jù)確定的呈現(xiàn)模式呈現(xiàn)場(chǎng)景(1408)。
[0101]可針對(duì)分格的區(qū)、針對(duì)多個(gè)分格及/或針對(duì)整個(gè)場(chǎng)景計(jì)算過(guò)度繪制數(shù)目。計(jì)算分格的過(guò)度繪制數(shù)目(1404)的一個(gè)實(shí)例技術(shù)可包含:計(jì)算分格中的每一像素的重疊值;對(duì)分格中的每一像素的每一經(jīng)計(jì)算的重疊值求和以產(chǎn)生總重疊值;及將總的重疊值除以分格中的像素的數(shù)目以產(chǎn)生過(guò)度繪制數(shù)目。重疊值被定義為觸摸像素的基元的數(shù)目,其大于一。
[0102]圖15為說(shuō)明根據(jù)本發(fā)明的一個(gè)實(shí)例的方法的流程圖。圖15的方法可由CPU6、GPU12及/或駐留于計(jì)算裝置2上的任何其它硬件、固件、軟件元件或其組合執(zhí)行。CPU6可經(jīng)配置以將用于執(zhí)行圖形操作的操作命令存儲(chǔ)于第一緩沖器中(1502),及將寫(xiě)入命令存儲(chǔ)于第二緩沖器中,其中寫(xiě)入命令更改第一緩沖器中的操作命令以產(chǎn)生更改的操作命令(1504)。操作命令及寫(xiě)入命令可由圖形處理器執(zhí)行。CPU6可經(jīng)進(jìn)一步配置以致使第二緩沖器中的寫(xiě)入命令被執(zhí)行(1506),及在致使第二緩沖器中的寫(xiě)入命令被執(zhí)行之后致使第一緩沖器中的更改的操作命令被執(zhí)行(1508)。在一個(gè)實(shí)例中,操作命令包含用于分格呈現(xiàn)模式的呈現(xiàn)命令,且寫(xiě)入命令將用于分格呈現(xiàn)模式的呈現(xiàn)命令更改為用于直接呈現(xiàn)模式的呈現(xiàn)命令。
[0103]圖16為說(shuō)明利用圖15中所示的通用技術(shù)的實(shí)例方法的流程圖。圖16的方法可由CPU6、GPU12及/或駐留于計(jì)算裝置2上的任何其它硬件、固件或軟件元件執(zhí)行。CPU6可經(jīng)配置以產(chǎn)生用于呈現(xiàn)幀的操作命令,其中操作命令是用于分格呈現(xiàn)模式(1602),及經(jīng)配置以跟蹤使用圖形存儲(chǔ)器地址的操作命令(1604)。CPU6可經(jīng)進(jìn)一步配置以產(chǎn)生寫(xiě)入命令,其中寫(xiě)入命令將使用圖形存儲(chǔ)器地址的操作命令更改為使用系統(tǒng)存儲(chǔ)器地址的操作命令(1606)。CPU6將操作命令存儲(chǔ)于第一緩沖器中(1608)及將寫(xiě)入命令存儲(chǔ)于第二緩沖器中(1610)。
[0104]CPU可經(jīng)進(jìn)一步配置以基于呈現(xiàn)特性確定用于幀的多個(gè)呈現(xiàn)模式中的一者,其中多個(gè)呈現(xiàn)模式包含分格呈現(xiàn)模式及直接呈現(xiàn)模式(1612)。呈現(xiàn)特性可包含呈現(xiàn)目標(biāo)的大小及類(lèi)型、深度測(cè)試狀態(tài)、著色器的復(fù)雜性、所繪制的基元的數(shù)目、紋理讀取的數(shù)目、紋理大小及微平鋪模式中的至少一者。確定多個(gè)呈現(xiàn)模式中的一者可包含基于當(dāng)前幀的呈現(xiàn)特性確定多個(gè)呈現(xiàn)模式中的一者。在另一實(shí)例中,確定多個(gè)呈現(xiàn)模式中的一者可包含基于當(dāng)前幀及先前呈現(xiàn)的幀的呈現(xiàn)特性確定多個(gè)呈現(xiàn)模式中的一者。
[0105]CPU6可經(jīng)進(jìn)一步配置以在確定的呈現(xiàn)模式為直接呈現(xiàn)模式的狀況下致使第二緩沖器中的寫(xiě)入命令被執(zhí)行(例如,由GPU12) (1614)。
[0106]在一或多個(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è)處理器存取以檢索用于實(shí)施本發(fā)明中所述的技術(shù)的指令、代碼及/或數(shù)據(jù)結(jié)構(gòu)的任何可用媒體。舉例說(shuō)明且并非限制,此些計(jì)算機(jī)可讀媒體可包括RAM、ROM、EEPROM、CD-ROM或其它光盤(pán)存儲(chǔ)裝置、磁盤(pán)存儲(chǔ)裝置,或其它磁性存儲(chǔ)裝置、快閃存儲(chǔ)器,或可用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式進(jìn)行或存儲(chǔ)所要的程序代碼且可被計(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)通常磁性地復(fù)制數(shù)據(jù),而光盤(pán)使用激光光學(xué)地復(fù)制數(shù)據(jù)。上文的組合也應(yīng)包含在計(jì)算機(jī)可讀媒體的范圍內(nèi)。
[0107]代碼可由一或多個(gè)處理器(例如,一或多個(gè)DSP)、通用微處理器、ASIC、FPGA或其它等效集成或離散邏輯電路來(lái)執(zhí)行。另外,在一些方面中,可在專(zhuān)用硬件及/或軟件模塊內(nèi)提供本文中描述的功能性。而且,可將所述技術(shù)完全實(shí)施于一或多個(gè)電路或邏輯元件中。
[0108]本發(fā)明的技術(shù)可實(shí)施在各種各樣的裝置或設(shè)備中,包含無(wú)線手持機(jī)、集成電路(IC)或IC的集合(例如,芯片集)。本發(fā)明中描述了各種組件、模塊或單元以強(qiáng)調(diào)經(jīng)配置以執(zhí)行所揭示技術(shù)的裝置的功能方面,但不一定要求通過(guò)不同硬件單元來(lái)實(shí)現(xiàn)。而是,如上所述,各種單元可在編解碼器硬件單元中組合或由互操作硬件單元(包含如上所述的一或多個(gè)處理器)的集合結(jié)合合適軟件和/或固件來(lái)提供。
[0109]已描述了各種實(shí)例。這些及其它實(shí)例屬于所附權(quán)利要求書(shū)的范圍內(nèi)。
【權(quán)利要求】
1.一種圖形處理方法,其包括: 對(duì)場(chǎng)景的基元執(zhí)行分格操作; 計(jì)算表示所述場(chǎng)景的區(qū)中的基元的過(guò)度繪制量的過(guò)度繪制數(shù)目;及 基于所述計(jì)算的過(guò)度繪制數(shù)目選擇呈現(xiàn)模式。
2.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 根據(jù)所述確定的呈現(xiàn)模式呈現(xiàn)所述場(chǎng)景。
3.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括在所述過(guò)度繪制數(shù)目大于某一閾值的情況下選擇分格呈現(xiàn)模式。
4.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括在所述過(guò)度繪制數(shù)目小于某一閾值的情況下選擇直接呈現(xiàn)模式。
5.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括計(jì)算分格的區(qū)的所述過(guò)度繪制數(shù)目。
6.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括計(jì)算在多個(gè)分格之上的所述過(guò)度繪制數(shù)目。
7.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括計(jì)算所述整個(gè)場(chǎng)景的所述過(guò)度繪制數(shù)目。
8.根據(jù)權(quán)利要求1所述的方法,其中計(jì)算表示過(guò)度繪制量的所述過(guò)度繪制數(shù)目包括: 計(jì)算分格中的每一像素的重疊值; 對(duì)所述分格中的每一像素的每一經(jīng)計(jì)算的重疊值求和以產(chǎn)生總重疊值;及 將所述總重疊值除以所述分格中的像素的數(shù)目以產(chǎn)生所述過(guò)度繪制數(shù)目。
9.根據(jù)權(quán)利要求8所述的方法,其中所述重疊值被定義為觸摸像素的基元的數(shù)目,其大于一。
10.根據(jù)權(quán)利要求9所述的方法,其中所述基元為三角形。
11.一種經(jīng)配置用于圖形處理的設(shè)備,其包括: 用于對(duì)場(chǎng)景的基元執(zhí)行分格操作的裝置; 用于計(jì)算表示所述場(chǎng)景的區(qū)中的基元的過(guò)度繪制量的過(guò)度繪制數(shù)目的裝置;及 用于基于所述計(jì)算的過(guò)度繪制數(shù)目選擇呈現(xiàn)模式的裝置。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其進(jìn)一步包括: 用于根據(jù)所述確定的呈現(xiàn)模式呈現(xiàn)所述場(chǎng)景的裝置。
13.根據(jù)權(quán)利要求11所述的設(shè)備,其進(jìn)一步包括: 用于在所述過(guò)度繪制數(shù)目大于某一閾值的情況下選擇分格呈現(xiàn)模式的裝置。
14.根據(jù)權(quán)利要求11所述的設(shè)備,其進(jìn)一步包括: 用于在所述過(guò)度繪制數(shù)目小于某一閾值的情況下選擇直接呈現(xiàn)模式的裝置。
15.根據(jù)權(quán)利要求11所述的設(shè)備,其進(jìn)一步包括: 用于計(jì)算分格的區(qū)的所述過(guò)度繪制數(shù)目的裝置。
16.根據(jù)權(quán)利要求11所述的設(shè)備,其進(jìn)一步包括: 用于計(jì)算在多個(gè)分格之上的所述過(guò)度繪制數(shù)目的裝置。
17.根據(jù)權(quán)利要求11所述的設(shè)備,其進(jìn)一步包括: 用于計(jì)算所述整個(gè)場(chǎng)景的所述過(guò)度繪制數(shù)目的裝置。
18.根據(jù)權(quán)利要求11所述的設(shè)備,其中所述用于計(jì)算表示過(guò)度繪制量的所述過(guò)度繪制數(shù)目的裝置包括: 用于計(jì)算分格中的每一像素的重疊值的裝置; 用于對(duì)所述分格中的每一像素的每一經(jīng)計(jì)算的重疊值求和以產(chǎn)生總重疊值的裝置;及 用于將所述總重疊值除以所述分格中的像素的數(shù)目以產(chǎn)生所述過(guò)度繪制數(shù)目的裝置。
19.根據(jù)權(quán)利要求18所述的設(shè)備,其中所述重疊值被定義為觸摸像素的基元的數(shù)目,其大于一。
20.根據(jù)權(quán)利要求19所述的設(shè)備,其中所述基元為三角形。
21.—種經(jīng)配置用于圖形處理的設(shè)備,其包括: 圖形處理器,其經(jīng)配置以: 對(duì)場(chǎng)景的基元執(zhí)行分格操作;及 計(jì)算表示所述場(chǎng)景的區(qū)中的基元的過(guò)度繪制量的過(guò)度繪制數(shù)目;及 處理器,其經(jīng)配置以基于所述計(jì)算的過(guò)度繪制數(shù)目選擇呈現(xiàn)模式。
22.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述圖形處理器經(jīng)進(jìn)一步配置以: 根據(jù)所述確定的呈現(xiàn)模式呈現(xiàn)所述場(chǎng)景。
23.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述圖形處理器經(jīng)進(jìn)一步配置以: 在所述過(guò)度繪制數(shù)目大于某一閾值的情況下選擇分格呈現(xiàn)模式。
24.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述圖形處理器經(jīng)進(jìn)一步配置以: 在所述過(guò)度繪制數(shù)目小于某一閾值的情況下選擇直接呈現(xiàn)模式。
25.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述圖形處理器經(jīng)進(jìn)一步配置以: 計(jì)算分格的區(qū)的所述過(guò)度繪制數(shù)目。
26.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述圖形處理器經(jīng)進(jìn)一步配置以: 計(jì)算在多個(gè)分格之上的所述過(guò)度繪制數(shù)目。
27.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述圖形處理器經(jīng)進(jìn)一步配置以: 計(jì)算所述整個(gè)場(chǎng)景的所述過(guò)度繪制數(shù)目。
28.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述圖形處理器經(jīng)進(jìn)一步配置以: 計(jì)算分格中的每一像素的重疊值; 對(duì)所述分格中的每一像素的每一經(jīng)計(jì)算的重疊值求和以產(chǎn)生總重疊值;及 將所述總重疊值除以所述分格中的像素的數(shù)目以產(chǎn)生所述過(guò)度繪制數(shù)目。
29.根據(jù)權(quán)利要求28所述的設(shè)備,其中所述重疊值被定義為觸摸像素的基元的數(shù)目,其大于一。
30.根據(jù)權(quán)利要求29所述的設(shè)備,其中所述基元為三角形。
31.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述圖形處理器在移動(dòng)裝置中。
【文檔編號(hào)】G06T15/00GK103959338SQ201280058364
【公開(kāi)日】2014年7月30日 申請(qǐng)日期:2012年11月7日 優(yōu)先權(quán)日:2011年11月30日
【發(fā)明者】阿溫阿什·賽塔拉邁亞, 克里斯托弗·保羅·弗拉斯卡蒂 申請(qǐng)人:高通股份有限公司