專利名稱:快速像素渲染處理的制作方法
技術(shù)領(lǐng)域:
本揭示內(nèi)容通常涉及圖像處理,且更具體來說,涉及在沒有專用硬件圖形加速器 的情況下提供快速像素渲染處理的三維(3D)圖形管線的技術(shù)。
背景技術(shù):
將關(guān)于3D對(duì)象的信息轉(zhuǎn)換成可顯示的位圖稱為像素渲染,且需要相當(dāng)大的存儲(chǔ) 器及處理功率。過去,僅可在功能強(qiáng)大的工作臺(tái)上獲得3D圖形,而現(xiàn)在通??稍趥€(gè) 人計(jì)算機(jī)(PC)中找到3D圖形加速器。硬件圖形加速器含有存儲(chǔ)器(例如,指令隨 機(jī)存取存儲(chǔ)器(IRAM))及專業(yè)化微處理器以處理眾多3D渲染操作。用于桌面的 Open GL⑧(開放式圖形庫)界定用于寫入產(chǎn)生3D及2D計(jì)算機(jī)圖形的應(yīng)用程序的應(yīng)用 程序編程界面(API)。所述API包含用于從基元繪制復(fù)雜三維場(chǎng)景的數(shù)百個(gè)函數(shù)。
OpenGL⑧ES是所述桌面OpenGL⑧的子集,其形成軟件與圖形之間的界面。所述 3D圖形引擎(OpenGL⑧ES)通常實(shí)施為兩個(gè)部分。第一部分包含處理頂點(diǎn)的那些函數(shù)且 通常在數(shù)字信號(hào)處理(DSP)固件中實(shí)施。第二部分包含用于像素渲染的那些函數(shù)且 在專用硬件圖形加速器中實(shí)施。執(zhí)行像素渲染的第二部分是常規(guī)3D圖形引擎的最后 管線級(jí)。最后管線級(jí)處理輸入三角形集以產(chǎn)生所述圖形圖像的像素表示。然而,所述 最后管線級(jí)通常是引擎中整個(gè)3D圖形管線的性能瓶頸。因此,改善用于像素渲染的 最后管線級(jí)的性能(以每秒的像素計(jì))是非常重要的。
通常,在像素渲染操作期間,需要按與輸入所述三角形的相同次序來依序處理每 一輸入三角形。因此,阻止一具有多線程的處理器利用交錯(cuò)式并行處理來處理輸入三 角形。
此外,所述硬件圖形加速器通常不靈活或不易伸縮。因此,所述硬件圖形加速器 不易添加新特征、支持3D圖形標(biāo)準(zhǔn)的更高版本(例如OpenGL⑧ES 1.0、 1.1 ...)、支 持不同的應(yīng)用程序配置及定制要求。此外,所述硬件圖形加速器不易于針對(duì)不同的性 能要求(幀速率、屏幕大小、像素速率、三角形速率等)而伸縮,以最優(yōu)化硅成本及 系統(tǒng)功率消耗。
如可容易地看到,專用硬件圖形加速器占據(jù)小手持計(jì)算裝置(例如,移動(dòng)或蜂窩 式電話)中的硅面積。因此,專用硬件圖形加速器會(huì)使手持計(jì)算裝置因包含所述專用 硬件圖形加速器及所用IRAM而增加其總成本。使用專用硬件圖形加速器還產(chǎn)生與 DSP的數(shù)據(jù)業(yè)務(wù),從而添加開銷且消耗功率。因此,此項(xiàng)技術(shù)中需要在沒有專用硬件圖形處理器的情況下提供更快像素渲染處 理的三維(3D)圖形管線的技術(shù)。
發(fā)明內(nèi)容
本文中描述在沒有專用硬件圖形加速器的情況下提供更快像素渲染處理的三維 (3D)圖形管線的技術(shù)。在實(shí)施例中,三維(3D)圖形管線包含頂點(diǎn)處理級(jí),其可操 作以輸出3D圖形圖像的頂點(diǎn)信息。顯示細(xì)分級(jí)將顯示區(qū)域(其上疊加有輸出頂點(diǎn)信 息)中的像素劃分為子屏幕,所述子屏幕形成子屏幕任務(wù)列表。像素渲染級(jí)并行且獨(dú) 立地處理所述子屏幕任務(wù)列表中的多個(gè)子屏幕任務(wù)。
在另一方面中,無線裝置具有具有多個(gè)處理線程的數(shù)字信號(hào)處理器、由所述處理 線程存取的共享存儲(chǔ)器及處理器。所述處理器可操作以通過并行且獨(dú)立地處理子屏幕 任務(wù)列表中的多個(gè)子屏幕任務(wù)中的那些像素,而在沒有專用圖形加速器的情況下執(zhí)行 像素渲染。所述子屏幕任務(wù)包含疊加有頂點(diǎn)輸出信息的顯示區(qū)域的像素的一部分。
下文中將進(jìn)一步詳細(xì)闡述本發(fā)明揭示內(nèi)容的各種方面及實(shí)施例。
當(dāng)結(jié)合圖式參照下文所述詳細(xì)說明時(shí),本發(fā)明揭示內(nèi)容的各方面及實(shí)施例將變得
更明了 ,在所有圖式中相同的參考字符識(shí)別對(duì)應(yīng)的元件。 圖1圖解說明3D成像設(shè)備的一般方框圖。 圖2圖解說明與共享存儲(chǔ)器介接的交錯(cuò)式多線程處理器。 圖3圖解說明交錯(cuò)式多線程處理器的細(xì)節(jié),其中顯示出每一線程的細(xì)節(jié)。 圖4圖解說明多線程處理器使用6個(gè)線程處理交錯(cuò)指令的執(zhí)行時(shí)間與核心管線的圖表。
圖5圖解說明通過兩個(gè)線程處理的兩個(gè)并行指令集。
圖6圖解說明在實(shí)例性3D成像設(shè)備中3D圖形管線的一般流程圖。
圖7圖解說明3D圖形管線的過程的一般方框圖。
圖8A圖解說明被細(xì)分為MxN個(gè)柵格的顯示空間,其中M>1且NW。
圖8B圖解說明用于處理圖8A的經(jīng)細(xì)分的顯示空間的任務(wù)列表。
圖9圖解說明被細(xì)分為MxN個(gè)柵格的顯示空間,其中M=l iN>l。
圖10圖解說明被細(xì)分為MxN個(gè)柵格的顯示空間,其中M>1且N4。
圖11圖解說明由頂點(diǎn)坐標(biāo)界定且具有多個(gè)像素的三角形。
圖12圖解說明用于在被細(xì)分為一組四個(gè)細(xì)分區(qū)域的區(qū)域中處理三角形的指令操 作的圖形表示。
圖13圖解說明使用多線程處理器的3D圖形管線方法的流程圖。
具體實(shí)施例方式
在本文中,"例示性" 一詞用于意指"擔(dān)當(dāng)實(shí)例、例子或例解"。本文中描述為 "實(shí)例性"的任何實(shí)施例或設(shè)計(jì)皆未必應(yīng)視為比其它實(shí)施例或設(shè)計(jì)佳或有利。
眾多游戲應(yīng)用程序需要在二維(2D)空間(例如,顯示屏幕)中顯示3D對(duì)象的 三維(3D)圖形應(yīng)用程序。2D圖形中的像素具有定位、色彩及亮度的特性,而3D像 素添加指示所述點(diǎn)處于虛構(gòu)Z軸上何處的深度特性。紋理隨著3D像素被組合而形成, 所述像素的每一者具有其自己的深度值。
現(xiàn)參照?qǐng)D1,圖中顯示3D成像設(shè)備(通常標(biāo)示為10)的實(shí)施例。3D成像設(shè)備 10包含通信單元12、數(shù)字信號(hào)處理器(DSP) 20、具有顯示區(qū)域18的屏幕16,存儲(chǔ) 器24及輸入/輸出(I/O)單元45。共享存儲(chǔ)器24可存儲(chǔ)游戲應(yīng)用程序或者可按用戶 所需或?yàn)橹С衷O(shè)備10的特征集而存儲(chǔ)其它應(yīng)用程序(即,針對(duì)使用有線或無限網(wǎng)絡(luò)的 雙向通信,及其它軟件應(yīng)用程序)。1/0單元45可包含鍵臺(tái)、鍵盤或數(shù)據(jù)通信端口。 屏幕16可操作以在顯示區(qū)域18中顯示2D信息以及3D圖形。
3D成像設(shè)備10可包含以下裝置中的一者個(gè)人數(shù)字助理(PDA);及移動(dòng)、蜂 窩式或衛(wèi)星電話;膝上型計(jì)算機(jī);筆記本計(jì)算機(jī);平板PC;掌中寶(Palm Pilot); 無線通信裝置或類似物。
現(xiàn)參照?qǐng)D2-5,在所述實(shí)例性實(shí)施例中,DSP20包含交錯(cuò)式多線程處理器22。交 錯(cuò)式多線程處理器22具有多個(gè)處理線程(PT) PT1、 PT2、 ...PTX。每一處理線程(PT) PT1、 PT2、…PTX共享表示為共享存儲(chǔ)器24的同一存儲(chǔ)器。每一處理線程l、 ...X均 包含相應(yīng)一個(gè)指令集26卜.26x、核心27卜.27x (處理單元)及寄存器堆28卜28x。每一 核心27卜.27x的輸出與共享存儲(chǔ)器24通信。指令26r-26x包含用于執(zhí)行以下界定的操 作及用于執(zhí)行3D成像設(shè)備10的特征集(例如,多媒體)的其它操作的編程代碼。核 心27卜.27x執(zhí)行指令26卜.26x。
寄存器堆28廣'28x是一組通用寄存器且是DSP 20或微處理器的中心級(jí)。這些寄 存器堆28i…28x保持所有操作數(shù)(通常從存儲(chǔ)器載入),即,在將來自所有運(yùn)算(例 如,算術(shù)運(yùn)算、邏輯運(yùn)算等)的所有結(jié)果存儲(chǔ)到共享存儲(chǔ)器24中之前保持所述結(jié)果。
某些DSP架構(gòu)具有四個(gè)線程。然而,DSP 20可具有多于四個(gè)的線程,例如,在 沒有限制的情況下,六個(gè)并行運(yùn)行的處理線程。在實(shí)例性實(shí)施例中,每一并行線程(PT) PT1、 PT2、 ...PTX提供每秒IOO個(gè)百萬指令包(MIPS)。每一指令包可以是四(4) 個(gè)指令、兩(2)個(gè)指令(超標(biāo)量)或僅一個(gè)指令。然而,出于效率緣由不推薦一個(gè)指 令,因?yàn)镈SP 20的架構(gòu)去除指令間數(shù)據(jù)相依性所致的低效率。
使用術(shù)語線程或多線程來描述同時(shí)任務(wù)執(zhí)行。替代單個(gè)執(zhí)行路徑,可將程序(操 作)分解成多個(gè)同時(shí)執(zhí)行的執(zhí)行線程。在所述實(shí)例性實(shí)施例中,存在啟動(dòng)線程,其需 要函數(shù)調(diào)用(或指令),且通常需要至少兩個(gè)自變數(shù)(1)所述啟動(dòng)指令的位址;及 (2)上下文自變數(shù)。當(dāng)線程正在運(yùn)作及/或正在退出時(shí),所述線程需要能夠做與其它處理線程相關(guān)的兩個(gè)基本工作(l)獲取共享資源且阻止其它線程使用此資源;及(2) 將消息安全地發(fā)送到其它線程(例如,己完成的、就緒的線程等)。
現(xiàn)參照?qǐng)D4,其中顯示所述交錯(cuò)式多線程并行處理的圖表。在此實(shí)例中,存在六 (6)個(gè)處理線程PT1、 PT2、 PT3、 PT4、 PT5及PT6。第一處理線程PT1處理第一指 令集1。此由核心管線的執(zhí)行時(shí)間線的第一(頂部)行表示。所述核心管線由核心27p… 27x表示。當(dāng)?shù)谝惶幚砭€程PT1處理第一指令集1時(shí),第二處理線程PT2處理其第一 指令集l。此由所述執(zhí)行時(shí)間線的第二行表示。因此,并行處理所述第一指令集l。
第三處理線程PT3處理其第一指令集1而第一及第二處理線程PT1及PT2處理 其第一指令集1。此由所述核心管線的執(zhí)行時(shí)間線的第三行表示。第四處理線程PT4 處理其第一指令集l。同時(shí),第一、第二及第三處理線程PT1、 PT2及PT3繼續(xù)處理 其相關(guān)聯(lián)的第一指令集1。此由所述核心管線的執(zhí)行時(shí)間線的第四行表示。
第五處理線程PT5處理其第一指令集1而第一、第二、第三及第四處理線程PT1、 PT2、 PT3及PT4繼續(xù)處理其第一指令集1。此由所述核心管線的執(zhí)行時(shí)間線的第五行 表示。第六處理線程PT6處理其第一指令集1而第一、第二、第三、第四及第五處理 線程PT1、 PT2、 PT3、 PT4及PT5繼續(xù)處理其第一指令集1。此由所述核心管線的執(zhí) 行時(shí)間線的第六行表示。因此,所述處理線程對(duì)指令的處理是交錯(cuò)的。
現(xiàn)參照?qǐng)D4的第七(底部)行,假設(shè)第一處理線程PT1己完成其第一指令集l, 那么第一處理線程PT1開始處理第二指令集2而第二、第三、第四、第五及第六處理 線程PT2、 PT3、 PT4、 PT5及PT6繼續(xù)處理其第一指令集1。因此,處理線程PT1、 PT2、 ..PTX中的每一者的處理是并行且交錯(cuò)的。
描述所有處理線程的交錯(cuò)式處理負(fù)擔(dān)太重。因此,出于說明的目的,圖5中顯示 使用指令26i及262的交錯(cuò)式處理,因?yàn)槠渑c互斥相關(guān)?;コ馐峭瑫r(shí)僅由一個(gè)處理線程 "擁有"的工具。當(dāng)處理線程試圖獲取互斥時(shí),其鎖定所述互斥。另一方面,如果所 述互斥已被鎖定,那么所述處理線程停止。當(dāng)所述擁有的線程解鎖所述互斥時(shí),所述 停止的線程重啟且獲取所述互斥的所有權(quán)。此過程在圖5中顯示。
在以第一處理線程PT1開始后,指令26,以執(zhí)行非關(guān)鍵代碼的步驟S22A開始。 步驟S22A后面是步驟S24A,其中第一處理線程PT1執(zhí)行鎖定互斥1指令(假設(shè)互斥 1已解鎖)。因此,第一處理線程PT1現(xiàn)在擁有互斥1。步驟S24A后面是步驟S26A, 其中執(zhí)行關(guān)鍵代碼。步驟S26A后面是步驟S28A,其中在完成所述關(guān)鍵代碼后,第一 處理線程PT1執(zhí)行解鎖互斥1指令。此后,第一處理線程PT1在步驟S30A處重新開 始非關(guān)鍵代碼的執(zhí)行。
與第一處理線程PT1并行,第二處理線程PT2在其中執(zhí)行非關(guān)鍵代碼的步驟S22B 處開始指令262。步驟S22B后面是步驟S24B,其中第二處理線程PT2期望在步驟S24B 處鎖定互斥l。然而,互斥l處于已鎖定狀態(tài)。因此,第二處理線程PT2的操作停止 直到第一處理線程PT1在步驟S28A處解鎖互斥1為止。隨后,開始其中可執(zhí)行所述 關(guān)鍵代碼的步驟26B。步驟S26B后面是步驟S28B,其中在完成所述關(guān)鍵代碼之后,第二處理線程PT2執(zhí)行經(jīng)解鎖的互斥1指令。此后可繼續(xù)其它指令。
僅在需要時(shí),使用所述互斥工具或另一令牌工具以保證在不同處理線程中對(duì)關(guān)鍵 區(qū)段的串行執(zhí)行。此也是對(duì)執(zhí)行進(jìn)行串行化,而此意味著當(dāng)某個(gè)代碼與其它線程執(zhí)行 的代碼發(fā)生沖突時(shí),不可執(zhí)行所述代碼。由于使用共享存儲(chǔ)器24 (共享資源),互斥 工具是有幫助的。
現(xiàn)參照?qǐng)D6及7,圖中顯示所述3D圖形管線(通常標(biāo)示為100)的一般流程及方 框圖的實(shí)施例。3D圖形管線100通常將屏幕16的顯示區(qū)域18中的3D表示的整體任 務(wù)劃分為三(3)個(gè)管線級(jí)頂點(diǎn)處理(VP)級(jí)110、屏幕細(xì)分(SSD)級(jí)130及像素 渲染(PR)級(jí)140。在操作中,頂點(diǎn)處理(VP)級(jí)IIO包含當(dāng)前在OpenGL⑧或OpenGL⑧ES 中實(shí)施且由數(shù)字信號(hào)處理器(DSP) 20處理的所有函數(shù)或所述函數(shù)子集。以假象方式 顯示通至屏幕16的線,因?yàn)槠聊?6并非3D圖形管線100的一部分。
VP級(jí)110包含模型視界變換操作112、投影操作114、剔除操作U6、光照及著 色操作118、基元組裝操作120、裁剪(即用戶界定的裁剪)操作122及透視除法及 視口操作124。在OpenGL⑧或OpenGL⑧ES中明確界定了 VP級(jí)110的這些操作中的 每一者。
通常,模型視界變換操作112使用數(shù)學(xué)運(yùn)算來將對(duì)象模型置于所需的位置及定向。 投影操作114使用使近事物更大及遠(yuǎn)事物更小的數(shù)學(xué)運(yùn)算。遮斷將近對(duì)象繪制在遠(yuǎn)對(duì) 象前方。剔除及裁剪操作116及122丟棄不在視界中的事物。光照操作118計(jì)算表面 上的光的效應(yīng)。
在所述實(shí)例性實(shí)施例中,VP級(jí)110可通過一個(gè)處理線程(圖2及3)實(shí)施。頂點(diǎn) 輸出信息包含用以在顯示區(qū)域16中界定三角形及其位置的頂點(diǎn)信息。所述頂點(diǎn)輸出信 息疊加在顯示區(qū)域16上,因?yàn)轱@示區(qū)域16的像素包含頂點(diǎn)輸出信息以根據(jù)OpenGL⑧、 OpenGL⑧ES或其它圖形庫界定三角形。
屏幕細(xì)分(SSD)級(jí)130包含將顯示區(qū)域18劃分成MfN個(gè)子屏幕的屏幕細(xì)分操 作132。顯示區(qū)域18由多個(gè)疊加有所述頂點(diǎn)輸出信息的像素P (圖11)組成。來自 VP級(jí)110的頂點(diǎn)信息提供針對(duì)顯示區(qū)域18中的重疊界定三角形(例如圖8A的Tl及 T2)的頂點(diǎn)信息(例如圖11的V1、 V2及V3)。所述頂點(diǎn)信息可包含頂點(diǎn)坐標(biāo)及邊 緣信息。通常,每一三角形的頂點(diǎn)輸出信息僅是數(shù)學(xué)描述集以界定封閉的區(qū)域。此數(shù) 學(xué)描述集存儲(chǔ)在共享存儲(chǔ)器24中以使得每一處理線程(PT1、 PT2、 ...PTX)可使用所 述數(shù)學(xué)描述集來計(jì)算在其自己的子屏幕任務(wù)內(nèi)的每一像素P (圖ll)且決定像素是否 處在三角形內(nèi)部。
圖8A圖解說明疊加于顯示區(qū)域18上的頂點(diǎn)輸出信息。在屏幕細(xì)分(SSD)級(jí)130 期間,通過將組成顯示區(qū)域18的像素劃分或分組成MxN個(gè)子屏幕任務(wù)來細(xì)分顯示區(qū) 域18,如圖8B中最佳所見。所述MxN個(gè)子屏幕任務(wù)是存儲(chǔ)于共享存儲(chǔ)器24中的 MxN個(gè)獨(dú)立任務(wù)。SSD級(jí)130的操作可使用與VP級(jí)110期間使用的處理線程分離的 處理線程實(shí)施。另一選擇為,可針對(duì)相同處理線程組合SSD級(jí)130的操作與VP級(jí)110的操作。
在圖8A中所示的實(shí)施例中,將顯示區(qū)域18劃分成MxN個(gè)子屏幕以形成柵格, 其中M〉1且N〉1。出于說明目的,圖9顯示顯示區(qū)域18'被劃分成MxN個(gè)子屏幕, 其中M4且N〉1。箭頭圖解說明掃描或工作流程方向。參照?qǐng)DIO,顯示區(qū)域18"被劃 分成MxN個(gè)子屏幕,其中M〉1且NH。因此,顯示區(qū)域18"的子屏幕形成一系列列。
像素渲染(PR)級(jí)140包含光柵化、混合及紋理化應(yīng)用程序操作142以及隱藏表 面去除操作144。然而,像素渲染級(jí)140可包含由OpenGL⑧或OpenGL ES界定的其 它操作。PR級(jí)140將來自VP級(jí)110的關(guān)于3D對(duì)象的信息轉(zhuǎn)換成可在屏幕16的顯示 區(qū)域18中顯示的位圖。PR級(jí)140處理輸入三角形集以產(chǎn)生3D圖形圖像的像素表示。
典型的像素渲染(PR)級(jí)可首先從頂點(diǎn)輸出信息列表中提取三角形。接下來,所 述PR級(jí)將從所述顯示區(qū)域提取像素且對(duì)照所述三角形計(jì)算所述像素以確定其是否在 所述三角形內(nèi)部。如果被評(píng)估像素處在所述三角形內(nèi)部,那么所述PR級(jí)可借助來自 所述三角形的對(duì)應(yīng)色彩對(duì)像素執(zhí)行著色。如果被評(píng)估的像素不在所述三角形內(nèi)部,則 跳過所述像素。然后,所述PR級(jí)將挑選顯示區(qū)域18中的下一個(gè)像素。所述PR級(jí)針 對(duì)顯示區(qū)域18中的其它像素重復(fù)以上過程直到已針對(duì)三角形評(píng)估或處理所有像素為 止。因此, 一次一個(gè)地處理像素。
然后,所述典型PR級(jí)將移到頂點(diǎn)輸出信息列表中的下一三角形并針對(duì)當(dāng)前三角 形重復(fù)像素評(píng)估。
PR級(jí)140以類似方式處理多個(gè)子屏幕或子屏幕任務(wù)。不同之處在于所述子屏幕 具有較少數(shù)目要評(píng)估或處理的像素而處理線程(PT1、 PT2、…PTX)可獨(dú)立且并行地 處理多個(gè)子屏幕。因此,PR級(jí)140的處理時(shí)間比典型PR級(jí)快得多,因?yàn)槊恳蛔悠聊?中有較少像素且可并行地處理多個(gè)子屏幕(其中每一處理線程在處理一相應(yīng)子屏幕中 的像素中皆獨(dú)立地工作)。
在實(shí)例性實(shí)施例中,使用交錯(cuò)式多線程處理器22的一組多個(gè)處理線程PR1、 PR2、 ...PRX來處理PR級(jí)140。所述組中的用于PR級(jí)140的線程數(shù)目可以是2或更 多,其中最大值為X個(gè)線程。
在操作中,指派給像素渲染級(jí)140的每一處理線程PR1、 PR2、…PRX從任務(wù)列 表135捕獲可用子屏幕任務(wù)并將其從任務(wù)列表135中去除。所述組處理線程PR1、 PR2、…PRX以交錯(cuò)式并行操作方式處理輸入三角形以渲染子屏幕中的像素(將輸入 三角形信息轉(zhuǎn)換成位圖以供在子屏幕中顯示)。在相應(yīng)一個(gè)處理線程針對(duì)所捕獲子屏 幕任務(wù)完成像素渲染操作之后,所述處理線程移至任務(wù)列表135中的下一可用子屏幕 任務(wù)。重復(fù)此操作直到處理完所有子屏幕且完成像素渲染級(jí)140為止。
交錯(cuò)式多線程處理器22允許所述多線程處理為 伸縮及均一的。操作6可由下式 界定<formula>formula see original document page 11</formula>
參照?qǐng)D12,圖中顯示用于像素渲染的具有單個(gè)三角形T的四個(gè)子屏幕的方框。操 作d處理子屏幕任務(wù)Sn、 Sl2、 S^及S22,其表示為各自具有三角形T的細(xì)分部分(i) 的四個(gè)(i)子屏幕。因此,操作6等于子屏幕Su的操作4加上子屏幕S^的操作4加 上子屏幕S21的操作A加上子屏幕S22的操作^ 。如果并行地處理所有操作4 、 4 、 4 及64 ,處理像素渲染級(jí)140的總峰值性能因此是處理線程的峰值性能乘以所用的處理 線程的數(shù)目。子屏幕S 具有用于三角形T的像素的細(xì)分部分TlQ子屏幕SI2具有用于 三角形T的像素的細(xì)分部分T2。子屏幕S21具有用于三角形T的像素的細(xì)分部分T3。 子屏幕S22具有用于三角形T的像素的細(xì)分部分T4。出于說明的目的,線程的數(shù)目為 四(4)。由此,在此實(shí)例中,所述性能將是一個(gè)處理線程的性能乘以處理線程的數(shù)目。 因此,PR級(jí)140憑借其并行處理來自多個(gè)子屏幕的像素的能力而為快速像素渲染級(jí)。
另外,可在用真實(shí)應(yīng)用建立簡(jiǎn)檔之后配置M及N的數(shù)目,以便可針對(duì)不同情況 進(jìn)一步最優(yōu)化性能。配置M及N為靈活性及伸縮性提供另一較大空間。建立簡(jiǎn)檔包 含識(shí)別處理線程的載入(打標(biāo)記計(jì)數(shù))或者操作任務(wù)的大小或復(fù)雜性。建立簡(jiǎn)檔也可 包含評(píng)估其它分量,例如,與從共享存儲(chǔ)器24轉(zhuǎn)移數(shù)據(jù)及共享存儲(chǔ)器24的存儲(chǔ)器容 量相關(guān)聯(lián)的參數(shù)。借助建立簡(jiǎn)檔及調(diào)整,可將幀速率、屏幕大小、像素速率、三角形 速率等用來改變或變更M及N及/或變更供在PR級(jí)140中使用的處理線程PR1、 PR2、…PRX的數(shù)目。剩余處理線程PR1、 PR2、 ...PRX用于同時(shí)運(yùn)行的其它應(yīng)用程序, 例如游戲-音頻。
現(xiàn)參照?qǐng)D13,圖中顯示供3D圖形管線100使用的3D圖形管線方法200的流程 圖。方法200以步驟S202開始,其中執(zhí)行頂點(diǎn)處理以產(chǎn)生頂點(diǎn)輸出信息。步驟S202 后面是步驟S204,其中將疊加有頂點(diǎn)輸出信息的顯示區(qū)域18細(xì)分為MxN個(gè)子屏幕。 例如,如在圖8A中最佳所見,三角形T1延伸跨越子屏幕Sn、 S2t及S22且被細(xì)分為 圖8B中所示的其相應(yīng)的細(xì)分部分Th、 Tl2、 Tl3。因此,圖8B中的任務(wù)列表135圖 解說明三角形Tl及T2的細(xì)分部分(出于說明的目的僅顯示兩個(gè)三角形)。如可了解, 可更快地處理任務(wù)列表135中來自頂點(diǎn)輸出信息的那些輸入項(xiàng),所述頂點(diǎn)輸出信息的 確不具有與其相關(guān)聯(lián)的三角形或具有三角形的較小細(xì)分部分。因此,在像素渲染級(jí)140
在顯示區(qū)域18上顯示表示所述三角形的3D圖像之前,應(yīng)完成對(duì)所述三角形的所有細(xì) 分部分的處理。
步驟S204后面是步驟S206,其中形成具有或不具有三角形的子部分的子屏幕任 務(wù)并將其置于任務(wù)列表135中。步驟S206后面是步驟S208!、 2082及208Y,其中Y 是所述組中的用于像素渲染級(jí)140的處理線程的數(shù)目(2個(gè)或更多個(gè))。在步驟S208j 處,第一處理線程(下文稱為"線程l")獲得(第一)可用子屏幕任務(wù)(圖8B),在步驟S21(h處,處理所述子屏幕任務(wù)中的每一像素(尤其是經(jīng)確定處在三角形或與 所述任務(wù)相關(guān)聯(lián)的三角形部分內(nèi)或內(nèi)部的那些像素)。步驟S210i后面是步驟S212p 其中做出其是否為任務(wù)列表135的結(jié)束的確定。如果所述確定為"是",那么線程1 的處理結(jié)束。否則,如果所述確定為"否",那么步驟S212,返回到步驟S208i。第二 處理線程(下文稱為"線程2")的操作基本上相同。線程2獲得或捕獲任務(wù)列表135 中的下一可用子屏幕任務(wù)。步驟S2082后面是步驟S2102,其中處理所述子屏幕任務(wù)。 步驟S2082后面是步驟S2102。步驟S2102后面是步驟S2122。在步驟S2122處,做出 任務(wù)列表135中是否還有任何更多任務(wù)的確定。如果步驟S2122處的確定為"否", 那么所述方法結(jié)束。否則,如果所述確定為"是",那么步驟S2122返回到步驟S2082。 步驟S208y通過線程Y獲得或捕獲第Y個(gè)可用子屏幕任務(wù)。步驟S208y后面是歩
驟S210y,其中處理所述子屏幕任務(wù)。步驟S210Y后面是步驟S212y,其中做出任務(wù)列
表135中是否還有任何更多任務(wù)的確定。如果所述確定為"否",那么所述方法結(jié)束。 否則,如果所述確定為"是",那么步驟S212Y返回到步驟S208y。
在步驟S210p S2102及S210y期間執(zhí)行的處理執(zhí)行光柵化、混合、紋理化應(yīng)用程 序操作142及隱藏表面去除操作144。具體參照?qǐng)Dll,具有中心點(diǎn)的正方形表示像素 P。像素P中的有些像素處在三角形Tll內(nèi)部而有些像素處在三角形T11外部。每一 頂點(diǎn)V1、 V2及V3具有附有平滑描影的色彩值。使用線性插值來計(jì)算每一像素P處 的色彩值。使用頂點(diǎn)V1、 V2及V3來形成三角形T11且將此三角形置于顯示區(qū)域18 內(nèi)。計(jì)算每一像素中心(由處在所述正方形中心的黑色點(diǎn)表示)處的色彩。插入包含 Z深度、a、霧及紋理的各種參數(shù)。
再參照?qǐng)D2-4,在此實(shí)例中,存在六(6)個(gè)線程PT1、 PT2、 PT3、 PT4、 PT5及 PT6。第一線程PT1可用來處理VP級(jí)110。第二線程PT2可用來處理SSD級(jí)130。 剩余的四個(gè)線程PT3、 PT4、 PT5及PT6將用來并行地處理來自任務(wù)列表135的子屏 幕任務(wù)。此處,處理線程PT3將獲得第一個(gè)可用子屏幕任務(wù)1,1并處理所捕獲的第一 子屏幕任務(wù)1,1中的像素。處理線程PT4將獲得下一個(gè)(第二個(gè))可用子屏幕任務(wù)1,2 且處理所捕獲的子屏幕任務(wù)1,2中的像素。處理線程PT5將獲得下一個(gè)(第三個(gè))可 用子屏幕任務(wù)1,3且處理所捕獲的子屏幕任務(wù)1,3中的像素(假設(shè)M大于3)。
假設(shè)M為4,處理線程PT6將獲得下一個(gè)(第四個(gè))可用子屏幕任務(wù)l,M且處 理所捕獲的子屏幕任務(wù)l,M中的像素。當(dāng)處理線程PT3、 PT4、 PT5及PT6完成其各 自的子屏幕任務(wù)時(shí),將捕獲并并行地處理額外子屏幕任務(wù)直到任務(wù)列表135為空為止。
如果一個(gè)處理線程執(zhí)行3M像素/秒渲染,那么處理一個(gè)像素將需要約30個(gè)指令 包。g卩,平均每像素大約IOO個(gè)指令。保留六個(gè)線程中的兩個(gè)線程用于VP級(jí)IIO及 SSD級(jí)130,以使剩余的四個(gè)處理線程來做所述像素渲染,此將支持是專用硬件圖形 加速器的性能(12M像素/秒)四倍的VGA分辨率。
因?yàn)樗刑幚砭€程共享相同存儲(chǔ)器24,所以所述處理線程可使用互斥工具非常有 效地(不重復(fù)地)共同處理同一輸入三角形數(shù)據(jù)集(子屏幕任務(wù))。像素渲染級(jí)140是3D圖形管線100的最后管線級(jí)。PR級(jí)140處理輸入三角形列 表以產(chǎn)生3D圖形圖像的像素表示。以上所述的3D圖形管線100改善PR級(jí)140的性 能(以每秒像素計(jì))。交錯(cuò)式多線程處理器22以并行運(yùn)行以處理任務(wù)列表35的處理 線程的數(shù)目的一倍數(shù)增加性能。
所述3D圖形管線架構(gòu)的優(yōu)點(diǎn)是其在允許調(diào)整數(shù)目M及N方面的靈活性。通過增 加數(shù)目M及N,降低像素渲染級(jí)140的MIPS要求。因?yàn)槊恳蛔悠聊蛔兊迷絹碓叫。?所以渲染任務(wù)變得越來越簡(jiǎn)單。此有助于增加多個(gè)處理線程的性能。處理線程也可用 于其它同時(shí)應(yīng)用程序,例如音頻。
如可容易地看到,本文所述用于渲染3D圖形圖像的軟件實(shí)施方案具有比專用圖 形加速器的硬件實(shí)施方案更高的性能。與圖形加速器的硬件實(shí)施方案相比,本文所述 的實(shí)施例是靈活且可伸縮的。因?yàn)楸緦?shí)施例是靈活的,所以易于擴(kuò)展軟件代碼以添加 新特征、支持3D圖形標(biāo)準(zhǔn)的更高版本(例如OpenGLESl.O、 l丄..)及支持不同應(yīng)用 配置及客戶要求。本實(shí)施例的可伸縮特征允許不同的性能要求(幀速率,屏幕大小, 像素速率、三角形速率等),以最優(yōu)化硅成本及系統(tǒng)功率消耗。
此實(shí)施例還能夠?qū)崿F(xiàn)所述軟件實(shí)施方案與低成本且低功率處理器配合使用,替代 使用具有多-GHz時(shí)鐘速率的高端處理器以達(dá)到相同的性能。
在實(shí)例性實(shí)施例中,本文所述的方法及過程可以包括一個(gè)或一個(gè)以上計(jì)算^l可執(zhí) 行指令的計(jì)算機(jī)程序產(chǎn)品的形式實(shí)施于硬件、軟件、固件或其任意組合中。當(dāng)實(shí)施于 軟件中時(shí),所述計(jì)算機(jī)程序產(chǎn)品可存儲(chǔ)在計(jì)算機(jī)可讀媒體上或使用計(jì)算機(jī)可讀媒體傳 輸,所述計(jì)算機(jī)可讀媒體包含計(jì)算機(jī)存儲(chǔ)媒體及計(jì)算機(jī)通信媒體。
本文中,術(shù)語"計(jì)算機(jī)存儲(chǔ)媒體"是指適應(yīng)存儲(chǔ)致使所述計(jì)算機(jī)執(zhí)行所述方法的 指令的任何媒體。舉例而言,而不限于此,所述計(jì)算機(jī)存儲(chǔ)媒體可包括故態(tài)存儲(chǔ)器裝 置,包含電子存儲(chǔ)器裝置(例如,RAM、 ROM、 EEPROM及類似物)、光學(xué)存儲(chǔ)器 裝置(例如,光盤(CD)、多樣化數(shù)字光盤(DVD)及類似物)、或磁性存儲(chǔ)器裝置 (例如,硬驅(qū)動(dòng)器、快閃驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器及類似物)、或其它適應(yīng)存儲(chǔ)所述計(jì)算 機(jī)程序產(chǎn)品的存儲(chǔ)器裝置、或此類存儲(chǔ)器裝置的一組合。
本文中,術(shù)語"計(jì)算機(jī)通信媒體"是指適應(yīng)使用例如經(jīng)調(diào)制載波、光學(xué)信號(hào)、DC 或AC電流及類似方法將所述計(jì)算機(jī)程序產(chǎn)品從一個(gè)地點(diǎn)傳輸?shù)搅硪粋€(gè)地點(diǎn)的任何實(shí) 體接口。舉例而言,而不限于此,所述計(jì)算機(jī)通信媒體可包括雙絞線、印刷或扁平電 纜、同軸電纜、光纜、數(shù)字訂戶線(DSL)或其它有線、無線、或光學(xué)串行或并行接 口或其一組合。
上文對(duì)所揭示實(shí)施例的說明意在使任何所屬領(lǐng)域的技術(shù)人員均可制作或使用本 發(fā)明。所屬領(lǐng)域的技術(shù)人員將易知對(duì)所述實(shí)施例的各種修改,且本文所界定的一般原 理可應(yīng)用于其它實(shí)施例,此并不背離本發(fā)明的精神或范圍。因此,本發(fā)明并非意欲限 定為本文所示的實(shí)施例,而是欲賦予其與本文所揭示的原理及新穎^^征相一致的最寬 廣范圍。
權(quán)利要求
1、一種三維(3D)圖形管線,其包括頂點(diǎn)處理級(jí),其可操作以輸出3D圖形圖像的頂點(diǎn)信息;顯示細(xì)分級(jí),其可操作以將疊加有所述輸出頂點(diǎn)信息的顯示區(qū)域中的像素劃分為子屏幕,所述子屏幕形成子屏幕任務(wù)列表;及像素渲染級(jí),其可操作以并行且獨(dú)立地處理所述子屏幕任務(wù)列表中的多個(gè)子屏幕任務(wù)。
2、 如權(quán)利要求1所述的管線,其中所述像素渲染級(jí)采用具有一組個(gè)別處理線程 的交錯(cuò)式多線程處理器來并行且獨(dú)立地處理所述多個(gè)子屏幕任務(wù)中的相應(yīng)一者。
3、 如權(quán)利要求2所述的管線,其中所述交錯(cuò)式多線程處理器包含用于處理所述 頂點(diǎn)信息的處理線程。
4、 如權(quán)利要求3所述的管線,其中所述顯示細(xì)分級(jí)共享所述用于處理所述頂點(diǎn) 信息的處理線程。
5、 如權(quán)利要求3所述的管線,其中所述顯示細(xì)分級(jí)使用另一處理線程。
6、 如權(quán)利要求1所述的管線,其中所述像素渲染級(jí)包含光柵化、混合及紋理化 操作以及隱藏表面去除操作以形成所述3D圖形圖像的位圖。
7、 如權(quán)利要求1所述的管線,其中所述顯示區(qū)域與以下裝置中的一者相關(guān)聯(lián) 個(gè)人數(shù)字助理(PDA)、掌中寶、移動(dòng)電話、蜂窩式電話、衛(wèi)星電話、膝上型計(jì)算機(jī)、 筆記本計(jì)算機(jī)及平板PC。
8、 一種方法,其包括對(duì)頂點(diǎn)對(duì)象進(jìn)行頂點(diǎn)處理以輸出三維(3D)圖形圖像的頂點(diǎn)信息; 將所述輸出頂點(diǎn)信息疊加在顯示區(qū)域上;將所述顯示區(qū)域劃分成多個(gè)子屏幕以形成任務(wù)列表中的子屏幕任務(wù),所述顯示區(qū) 域具有若干像素;及對(duì)所述任務(wù)列表中的多個(gè)子屏幕任務(wù)中的那些像素并行且獨(dú)立地進(jìn)行像素渲染。
9、 如權(quán)利要求8所述的方法,其中所述像素渲染步驟包含以下步驟-通過交錯(cuò)式多線程處理器的處理線程捕獲并鎖定所述任務(wù)列表中的相應(yīng)一個(gè)可 用子屏幕任務(wù);當(dāng)捕獲到時(shí),獨(dú)立地處理所述相應(yīng)一個(gè)子屏幕任務(wù)的那些像素;及 針對(duì)每一隨后的可用子屏幕任務(wù),通過所述交錯(cuò)式多線程處理器的其它處理線程重復(fù)所述捕獲并鎖定步驟及所述處理步驟。
10、 如權(quán)利要求9所述的方法,其中所述頂點(diǎn)處理步驟包含以下步驟 通過所述交錯(cuò)式多線程處理器的另一處理線程處理所述頂點(diǎn)對(duì)象以形成所述頂點(diǎn)信息輸出。
11、 如權(quán)利要求10所述的方法,其中所述劃分步驟包含與所述頂點(diǎn)處理步驟共 享所述另一處理線程的步驟。
12、 如權(quán)利要求8所述的方法,其中所述像素渲染步驟包含以下步驟光柵化、 混合及紋理化每一子屏幕任務(wù)的那些像素直到所述任務(wù)列表成為空的為止以形成所述 3D圖形圖像的位圖。
13、 如權(quán)利要求8所述的方法,其中所述像素渲染步驟包含以下步驟 產(chǎn)生用于在所述顯示區(qū)域中顯示的位圖,所述顯示區(qū)域與以下裝置中的一者相關(guān)聯(lián)個(gè)人數(shù)字助理(PDA)、掌中寶、移動(dòng)電話、蜂窩式電話、衛(wèi)星電話、膝上型計(jì) 算機(jī)、筆記本計(jì)算機(jī)及平板PC。
14、 一種計(jì)算機(jī)程序產(chǎn)品,其包含具有用于致使計(jì)算機(jī)執(zhí)行以下操作的指令的計(jì) 算機(jī)可讀媒體進(jìn)行頂點(diǎn)處理以形成三維(3D)圖形圖像的輸出頂點(diǎn)信息;將疊加有所述輸出頂點(diǎn)信息的顯示區(qū)域劃分為子屏幕以形成任務(wù)列表中的子屏 幕任務(wù),所述子屏幕任務(wù)具有若干像素;及進(jìn)行像素渲染以并行且獨(dú)立地處理多個(gè)子屏幕任務(wù)的那些像素。
15、 如權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中所述用以進(jìn)行像素渲染的指令包含用以執(zhí)行以下操作的指令通過交錯(cuò)式多線程處理器的處理線程捕獲并鎖定所述任務(wù)列表中的相應(yīng)一個(gè)可用子屏幕任務(wù);當(dāng)通過所述處理線程捕獲到時(shí),獨(dú)立地處理所述相應(yīng)一個(gè)子屏幕任務(wù)的那些像 素;及針對(duì)每一隨后的可用子屏幕任務(wù),通過所述交錯(cuò)式多線程處理器的其它處理線程重復(fù)所述可操作以捕獲并鎖定及處理的指令。
16、 如權(quán)利要求15所述的計(jì)算機(jī)程序產(chǎn)品,其中所述用以進(jìn)行頂點(diǎn)處理的指令 包含可操作以執(zhí)行以下操作的指令使用所述交錯(cuò)式多線程處理器的另一處理線程進(jìn)行頂點(diǎn)處理以形成所述頂點(diǎn)信 息輸出。
17、 如權(quán)利要求16所述的計(jì)算機(jī)程序產(chǎn)品,其中所述用以劃分的指令包含與所 述用以進(jìn)行頂點(diǎn)處理的指令共享所述另一處理線程的指令。
18、 如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述計(jì)算機(jī)可讀媒體包括無線通信裝置的共享處理器可讀媒體。
19、 如權(quán)利要求14所述的計(jì)算機(jī)程序產(chǎn)品,其中所述用以進(jìn)行像素渲染的指令 包含用以光柵化、混合及紋理化每一子屏幕任務(wù)的那些像素以形成所述3D圖形圖像 的位圖的指令。
20、 一種無線裝置,其包括 具有多個(gè)處理線程的數(shù)字信號(hào)處理器;由所述處理線程存取的共享存儲(chǔ)器;及處理裝置,其可操作以通過并行且獨(dú)立地處理存儲(chǔ)于所述共享存儲(chǔ)器中的子屏幕 任務(wù)列表中的多個(gè)子屏幕任務(wù)中的那些像素而在沒有專用圖形加速器的情況下執(zhí)行像 素渲染,所述子屏幕任務(wù)包含疊加有頂點(diǎn)輸出信息的顯示區(qū)域的像素的一部分。
21、 如權(quán)利要求20所述的裝置,其中所述裝置包含以下裝置中的一者個(gè)人數(shù) 字助理(PDA)、掌中寶、移動(dòng)電話、蜂窩式電話、衛(wèi)星電話、膝上型計(jì)算機(jī)、筆記 本計(jì)算機(jī)及平板PC。
全文摘要
本發(fā)明揭示一種在最后級(jí)(像素渲染)中并行且獨(dú)立地處理子屏幕的像素的三維(3D)圖形管線。所述子屏幕任務(wù)存儲(chǔ)于共享存儲(chǔ)器中的列表中。所述共享存儲(chǔ)器由指定用于像素渲染的多個(gè)處理線程存取。所述處理線程以有序方式捕獲并鎖定子屏幕任務(wù)且處理所述任務(wù)以形成供在屏幕上顯示的位圖。通過將其上疊加有頂點(diǎn)信息的顯示區(qū)域劃分成MxN個(gè)子屏幕任務(wù)來形成所述任務(wù)。可基于系統(tǒng)簡(jiǎn)檔改變M及N。
文檔編號(hào)G06T15/00GK101563712SQ200780046585
公開日2009年10月21日 申請(qǐng)日期2007年12月20日 優(yōu)先權(quán)日2006年12月22日
發(fā)明者吳車惠, 詹姆斯·M·布朗, 建 魏 申請(qǐng)人:高通股份有限公司