專(zhuān)利名稱(chēng):三維圖形管線(xiàn)的自動(dòng)負(fù)載平衡的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及圖像處理,且更具體地說(shuō),涉及用于使三維(3D)圖形管線(xiàn)負(fù)載 平衡以用于由交錯(cuò)多線(xiàn)程處理器處理的快速像素渲染處理的技術(shù)。
背景技術(shù):
將關(guān)于3D對(duì)象的信息轉(zhuǎn)換成可被顯示的位圖被稱(chēng)為像素渲染,且需要相當(dāng)大的存 儲(chǔ)器和處理能力。在過(guò)去,3D圖形僅在強(qiáng)大的工作站上可用,但現(xiàn)在3D圖形加速器在 個(gè)人計(jì)算機(jī)(PC)中是常見(jiàn)的。硬件圖形加速器含有存儲(chǔ)器(例如,指令隨機(jī)存取存儲(chǔ) 器(IRAM))和專(zhuān)用微處理器以處理3D渲染操作中的許多操作。用于桌上型計(jì)算機(jī)的 OpenGL (開(kāi)放性圖形庫(kù))定義用于寫(xiě)入產(chǎn)生3D和2D計(jì)算機(jī)圖形的應(yīng)用程序的應(yīng)用 編程接口 (API)。所述API包含用于從圖元(primitive)繪制復(fù)雜的三維場(chǎng)景的數(shù)百個(gè) 函數(shù)。
OpenGL ES為桌上型計(jì)算機(jī)OpenGL②的子集,其形成軟件與圖形之間的接口 。將 3D圖形引擎(OpenGL ES)實(shí)施成大體上兩個(gè)部分。第一部分包含處理頂點(diǎn)的那些函 數(shù),且通常在數(shù)字信號(hào)處理(DSP)固件中實(shí)施。第二部分包含用于像素渲染的那些函 數(shù),且在專(zhuān)用硬件圖形加速器中實(shí)施。執(zhí)行像素渲染的第二部分是常規(guī)3D圖形引擎的 最后一個(gè)管線(xiàn)級(jí)。所述最后一個(gè)管線(xiàn)級(jí)處理輸入三角形集合以產(chǎn)生圖形圖像的像素表 示。然而,最后一個(gè)管線(xiàn)級(jí)通常是引擎中整個(gè)3D圖形管線(xiàn)的性能瓶頸。因此,改進(jìn)用 于像素渲染的最后一個(gè)管線(xiàn)級(jí)的性能(以像素每秒來(lái)計(jì))是非常重要的。
通常,在像素渲染操作期間,需要以與三角形被輸入的次序相同的次序依序處理每 一輸入三角形。因此,防止具有多個(gè)線(xiàn)程的處理器利用交錯(cuò)并行處理來(lái)處理輸入三角形。
此外,硬件圖形加速器通常并不靈活或不容易縮放。因此,硬件圖形加速器無(wú)法容 易地添加新特征,支持3D圖形標(biāo)準(zhǔn)的較高版本(例如,OpenGL ES 1.0、 1.1...),支持 不同應(yīng)用程序配置和定制要求。此外,硬件圖形加速器不容易縮放以用于不同的性能要 求(幀速率、屏幕大小、像素速率、三角形速率等...),從而優(yōu)化硅成本和系統(tǒng)功率消 耗。
7如可容易看到,專(zhuān)用硬件圖形加速器占用小型手持式計(jì)算裝置(例如,移動(dòng)或蜂窩 式電話(huà))中的硅面積。因此,由于包含所使用的專(zhuān)用硬件圖形加速器和IRAM,專(zhuān)用硬 件圖形加速器增加手持式計(jì)算裝置的總成本。使用專(zhuān)用硬件圖形加速器還產(chǎn)生與DSP 的數(shù)據(jù)業(yè)務(wù),這增加開(kāi)銷(xiāo)且消耗功率。
因此此項(xiàng)技術(shù)中需要用于使三維(3D)圖形管線(xiàn)負(fù)載平衡以提供較快像素渲染處理 的技術(shù)。
發(fā)明內(nèi)容
本文中描述用于三維(3D)圖形管線(xiàn)的技術(shù),其在沒(méi)有專(zhuān)用硬件圖形加速器的情況 下提供較快的像素渲染處理。在一方面中,實(shí)施包括多個(gè)處理線(xiàn)程的處理器。每一處理 線(xiàn)程確定用于像素渲染操作的子屏幕任務(wù)在任務(wù)列表中是否可用。如果子屏幕任務(wù)可 用,那么每一處理線(xiàn)程進(jìn)一步對(duì)子屏幕任務(wù)執(zhí)行像素渲染操作。然而,如果子屏幕任務(wù) 不可用,那么每一處理線(xiàn)程執(zhí)行頂點(diǎn)處理操作,以平衡三維(3D)圖形管線(xiàn)的工作負(fù)載。
在另一方面中,實(shí)施包括具有多個(gè)處理線(xiàn)程的處理器的無(wú)線(xiàn)裝置。當(dāng)數(shù)據(jù)可用于像 素渲染操作時(shí),每一處理線(xiàn)程將三維圖形管線(xiàn)的像素渲染操作列為優(yōu)先于頂點(diǎn)處理操 作。所述處理器耦合到存儲(chǔ)器。
在下文中進(jìn)一步詳細(xì)地描述本發(fā)明的各個(gè)方面和實(shí)施例。
從下文結(jié)合圖式而陳述的詳細(xì)描述將更明白本發(fā)明的方面和實(shí)施例,在圖式中,相
同參考符號(hào)始終對(duì)應(yīng)地標(biāo)識(shí)。
圖1說(shuō)明3D成像設(shè)備的通用框圖。
圖2說(shuō)明與共享存儲(chǔ)器介接的交錯(cuò)多線(xiàn)程處理器。
圖3說(shuō)明交錯(cuò)多線(xiàn)程處理器的細(xì)節(jié),其中展示每一線(xiàn)程的細(xì)節(jié)。
圖4說(shuō)明由具有六個(gè)線(xiàn)程的多線(xiàn)程處理器處理的交錯(cuò)指令的執(zhí)行時(shí)間對(duì)核心管線(xiàn)的圖表。
圖5說(shuō)明由兩個(gè)線(xiàn)程處理的兩個(gè)并行指令集。
圖6說(shuō)明示范性3D成像設(shè)備中的3D圖形管線(xiàn)的通用流程圖。
圖7說(shuō)明3D圖形管線(xiàn)的處理的通用框圖。
圖8A說(shuō)明被細(xì)分成MXN網(wǎng)格的顯示空間,其中M>1且NM。 圖8B說(shuō)明用于處理圖8A的經(jīng)細(xì)分顯示空間的任務(wù)(TASK)列表。圖9說(shuō)明被細(xì)分成MXN網(wǎng)格的顯示空間,其中M=l且NM。 圖IO說(shuō)明被細(xì)分成MXN網(wǎng)格的顯示空間,其中M>1且N4。 圖11說(shuō)明由具有多個(gè)像素的頂點(diǎn)坐標(biāo)界定的三角形。
圖12說(shuō)明用于處理被細(xì)分成一組四個(gè)經(jīng)細(xì)分區(qū)域的區(qū)域中的三角形的指令操作的 圖形表示。
圖13說(shuō)明使用多線(xiàn)程處理器的3D圖形管線(xiàn)方法的流程圖。 圖14說(shuō)明共享存儲(chǔ)器中的管線(xiàn)隊(duì)列的通用框圖。
圖15說(shuō)明用于在每線(xiàn)程基礎(chǔ)上使3D圖形管線(xiàn)負(fù)載平衡的方法的流程圖。
具體實(shí)施例方式
本文使用詞語(yǔ)"示范性"來(lái)表示"充當(dāng)實(shí)例、例子或說(shuō)明"。本文描述為"示范 性"的任何實(shí)施例或設(shè)計(jì)均不一定被解釋為比其它實(shí)施例或設(shè)計(jì)優(yōu)選或有利。
許多游戲應(yīng)用程序需要在二維(2D)空間(例如,顯示屏幕)中顯示三維(3D) 對(duì)象的3D圖形應(yīng)用程序。2D圖形中的像素具有位置、色彩和亮度的特性,而3D像素 添加了深度特性,所述深度特性指示點(diǎn)位于虛Z軸上的哪一位置。當(dāng)每一者具有其本身 的深度值的3D像素被組合時(shí),形成紋理。
現(xiàn)在參看圖1,展示以IO概括表示的3D成像設(shè)備的實(shí)施例。3D成像設(shè)備10包含 通信單元12、數(shù)字信號(hào)處理器(DSP) 20、具有顯示區(qū)域18的屏幕16、存儲(chǔ)器24和輸 入/輸出(I/O)單元45。共享存儲(chǔ)器24可在用戶(hù)需要時(shí)存儲(chǔ)游戲應(yīng)用程序或其它應(yīng)用程 序(即,用于與有線(xiàn)或無(wú)線(xiàn)網(wǎng)絡(luò)以及其它軟件應(yīng)用程序的雙向通信),或用以支持設(shè)備 IO的特征集合。1/0單元45可包含小鍵盤(pán)、鍵盤(pán)或數(shù)據(jù)通信端口。屏幕16可操作以在 顯示區(qū)域18中顯示2D信息以及3D圖形。
3D成像設(shè)備IO可包含個(gè)人數(shù)字助理(PDA)以及移動(dòng)、蜂窩式或衛(wèi)星電話(huà)、膝上 型計(jì)算機(jī)、筆記本型計(jì)算機(jī)、平板(Tablet) PC、掌上電腦(Palm Pilot)、無(wú)線(xiàn)通信裝 置或其類(lèi)似物中的一者。
現(xiàn)在參看圖2到圖5,在示范性實(shí)施例中,DSP20包含交錯(cuò)多線(xiàn)程處理器22。所述 交錯(cuò)多線(xiàn)程處理器22具有多個(gè)處理線(xiàn)程(PT) PT1、 PT2、 ...PTX。每一處理線(xiàn)程(PT) PT1、 PT2、 ...PTX共享被表示為共享存儲(chǔ)器24的同一存儲(chǔ)器。每一處理線(xiàn)程PT1、 PT2、 ...PTX包含相應(yīng)的一組指令26!…26x、核心27,...27x (處理單元)和寄存器堆 28l.,28x。每一核心27卜.27x的輸出與共享存儲(chǔ)器24通信。指令26。..26x包含用于實(shí) 行下文所定義的操作以及用于實(shí)行特征集合(例如,3D成像設(shè)備IO的多媒體)的其它
9操作的編程代碼。核心27^..27x執(zhí)行指令26,...26x。
寄存器堆28L,.28x是一組通用寄存器,且是DSP 20或微處理器的中心級(jí)。這些寄 存器堆28卜.28x保存所有操作數(shù)(通常從存儲(chǔ)器加載),S卩,在將結(jié)果存儲(chǔ)到共享存儲(chǔ) 器24中之前,保存來(lái)自所有運(yùn)算(例如,算術(shù)運(yùn)算、邏輯運(yùn)算等)的所有結(jié)果。
一些DSP結(jié)構(gòu)具有四個(gè)線(xiàn)程。盡管如此,DSP20仍可具有四個(gè)以上線(xiàn)程,例如(但 不限于)具有并行運(yùn)行的六個(gè)處理線(xiàn)程。在示范性實(shí)施例中,每一線(xiàn)程(PT) PT1、 PT2、…PTX并行提供IOO百萬(wàn)個(gè)指令包每秒(MIPS)。每一指令包可為四(4)個(gè)指令、 兩(2)個(gè)指令(次標(biāo)量)或僅一個(gè)指令。然而,為了效率起見(jiàn),不推薦一個(gè)指令,因 為DSP 20的結(jié)構(gòu)消除由于指令間數(shù)據(jù)相依性而造成的低效率。
術(shù)語(yǔ)"線(xiàn)程"或"多線(xiàn)程"用于描述同時(shí)發(fā)生的任務(wù)執(zhí)行。代替單個(gè)執(zhí)行路徑,可 將程序(操作)分成同時(shí)執(zhí)行的多個(gè)執(zhí)行線(xiàn)程。在示范性實(shí)施例中,存在起始線(xiàn)程,其 需要函數(shù)調(diào)用(或指令),且通常需要至少兩個(gè)自變量(1)起始指令的地址;和(2) 上下文自變量(context argument)。雖然線(xiàn)程正在操作且/或退出,但所述線(xiàn)程需要能夠 進(jìn)行與其它處理線(xiàn)程有關(guān)的兩項(xiàng)基本工作(1)獲取共享資源并阻止其它線(xiàn)程使用所述 資源;以及(2)將消息(例如,已完成、準(zhǔn)備好等)安全地發(fā)送到其它線(xiàn)程。
現(xiàn)在參看圖4,展示交錯(cuò)多線(xiàn)程并行處理的圖表。在此實(shí)例中,存在六(6)個(gè)處理 線(xiàn)程PT1、 PT2、 PT3、 PT4、 PT5和PT6。第一處理線(xiàn)程PT1處理第一指令集l。這由 用于核心管線(xiàn)的執(zhí)行時(shí)間線(xiàn)的第一 (頂部)行表示。核心管線(xiàn)由核心27!、 ...27x表示。 雖然第一指令集1由第一處理線(xiàn)程PT1處理,但第二處理線(xiàn)程PT2處理其第一指令集1。 這由執(zhí)行時(shí)間線(xiàn)的第二行表示。因此,第一指令集l被并行處理。
當(dāng)?shù)谝惶幚砭€(xiàn)程PT1和第二處理線(xiàn)程PT2處理其第一指令集1時(shí),第三處理線(xiàn)程 PT3處理其第一指令集1。這由用于核心管線(xiàn)的執(zhí)行時(shí)間線(xiàn)的第三行表示。第四處理線(xiàn) 程PT4處理其第一指令集1。與此同時(shí),第一、第二和第三處理線(xiàn)程PT1、 PT2和PT3 繼續(xù)處理其相關(guān)聯(lián)的第一指令集1。這由用于核心管線(xiàn)的執(zhí)行時(shí)間線(xiàn)的第四行表示。
當(dāng)?shù)谝?、第二、第三和第四處理線(xiàn)程PT1、 PT2、 PT3和PT4繼續(xù)處理其第一指令 集1時(shí),第五處理線(xiàn)程PT5處理其第一指令集1。這由用于核心管線(xiàn)的執(zhí)行時(shí)間線(xiàn)的第 五行表示。當(dāng)?shù)谝?、第二、第三、第四和第五處理線(xiàn)程PT1、 PT2、 PT3、 PT4和PT5 繼續(xù)處理其第一指令集1時(shí),第六處理線(xiàn)程PT6處理其第一指令集1。這由用于核心管 線(xiàn)的執(zhí)行時(shí)間線(xiàn)的第六行表示。因此,處理線(xiàn)程對(duì)指令的處理是交錯(cuò)的。
現(xiàn)在參看圖4的第七(底部)行,假定第一處理線(xiàn)程PT1已完成其第一指令集l, 當(dāng)?shù)诙?、第三、第四、第五和第六處理線(xiàn)程PT2、 PT3、 PT4、 PT5和PT6繼續(xù)處理其第
10一指令集1時(shí),第一處理線(xiàn)程PT1開(kāi)始處理第二指令集2。因此,處理線(xiàn)程PT1、 PT2、 ...PTX中的每一者的處理是并行且交錯(cuò)的。
描述所有處理線(xiàn)程的交錯(cuò)處理是令人望而卻步的。因此,出于說(shuō)明性目的,圖5中 展示使用指令26!和262的交錯(cuò)處理,因?yàn)槠渖婕盎コ?mutex)?;コ馐且淮蝺H由一個(gè) 處理線(xiàn)程"擁有"的工具。當(dāng)處理線(xiàn)程試圖獲取互斥時(shí),其鎖定(LOCK)所述互斥。 然而,如果互斥已被鎖定(LOCKED),那么所述處理線(xiàn)程暫停。當(dāng)擁有線(xiàn)程解鎖 (UNLOCK)所述互斥時(shí),被暫停的線(xiàn)程被重新起始,且獲取所述互斥的擁有權(quán)。圖5 中展示此過(guò)程。
以第一處理線(xiàn)程PT1起始,指令26i以步驟S22A開(kāi)始,在步驟S22A中執(zhí)行非關(guān) 鍵代碼。繼步驟S22A之后是步驟S24A,在步驟S24A中,第一處理線(xiàn)程PT1執(zhí)行鎖定 互斥1指令(假定互斥1為未鎖定的)。因此,第一處理線(xiàn)程PT1現(xiàn)在擁有互斥1。繼 步驟S24A之后是步驟S26A,在步驟S26A中執(zhí)行關(guān)鍵代碼。繼步驟S26A之后是步驟 S28A,在步驟S28A中,在完成關(guān)鍵代碼之后,第一處理線(xiàn)程PT1執(zhí)行解鎖互斥1指令。 此后,在步驟S30A處,第一處理線(xiàn)程PT1重新開(kāi)始執(zhí)行非關(guān)鍵代碼。
與第一處理線(xiàn)程PT1并行,第二處理線(xiàn)程PT2在步驟S22B處開(kāi)始指令262,在步 驟S22B中執(zhí)行非關(guān)鍵代碼。繼步驟S22B之后是步驟S24B,其中第二處理線(xiàn)程PT2想 要在步驟S24B處鎖定互斥1。然而,互斥1正處于鎖定狀態(tài)中。因此,第二處理線(xiàn)程 PT2的操作被暫停,直到第一處理線(xiàn)程PT1在步驟S28A處解鎖互斥1為止。接著步驟 S26B開(kāi)始,在步驟S26B中執(zhí)行關(guān)鍵代碼。繼步驟S26B之后是步驟S28B,在步驟S28B 中,在完成關(guān)鍵代碼之后,第二處理線(xiàn)程PT2執(zhí)行解鎖互斥1指令。其它指令可在此之 后繼續(xù)。
使用互斥工具或另一令牌工具來(lái)僅在需要時(shí)保證不同處理線(xiàn)程中的關(guān)鍵區(qū)段的串 行執(zhí)行。這也是串行化執(zhí)行,其意味著當(dāng)某一代碼可能與其它線(xiàn)程的代碼執(zhí)行沖突時(shí), 不能并行地執(zhí)行所述代碼?;コ夤ぞ呤怯袔椭模?yàn)槭褂霉蚕泶鎯?chǔ)器24 (共享資源)。
現(xiàn)在參看圖6和圖7,展示以100概括表示的3D圖形管線(xiàn)的通用流程圖和框圖的 實(shí)施例。3D圖形管線(xiàn)100將屏幕16的顯示區(qū)域18中的3D表示的整個(gè)任務(wù)劃分成通常 三(3)個(gè)管線(xiàn)級(jí)頂點(diǎn)處理(VP)級(jí)110、屏幕細(xì)分(SSD)級(jí)130和像素渲染(PR) 級(jí)140。在操作中,頂點(diǎn)處理(VP)級(jí)110包含所有函數(shù)或者OpenGL⑧或OpenGL⑧ES 中當(dāng)前所實(shí)施的函數(shù)的子集,且由數(shù)字信號(hào)處理器(DSP) 20來(lái)處理。因?yàn)槠聊?6并 非3D圖形管線(xiàn)100的部分,所以圖中以幻影來(lái)展示到達(dá)屏幕16的線(xiàn)。
VP級(jí)110包含模型視圖變換操作112、投影操作114、剔除(culling)操作116、照明與著色操作118、圖元組合操作120、裁剪(clipping)(即,用戶(hù)定義的裁剪)操作 122,以及透視除法(perspective division)與視口 (viewport)操作124。 VP級(jí)110的 這些操作中的每一者在OpenGL⑧或OpenGL ES中充分定義。
一般來(lái)說(shuō),模型視圖變換操作112使用數(shù)學(xué)運(yùn)算來(lái)將對(duì)象模型放置在所要位置和定 向中。投影操作114使用數(shù)學(xué)運(yùn)算,其使較近的事物較大且較遠(yuǎn)的事物較小。掩蔽 (occlusion)將較近對(duì)象拖曳到較遠(yuǎn)對(duì)象前面。剔除操作116和裁剪操作122廢棄不在視 野中的事物。照明操作118計(jì)算光在表面上的效應(yīng)。
在示范性實(shí)施例中,可用一個(gè)處理線(xiàn)程來(lái)實(shí)施VP級(jí)110 (圖2和圖3)。頂點(diǎn)輸出 信息包含用于定義三角形及其在顯示區(qū)域16中的位置的頂點(diǎn)信息。頂點(diǎn)輸出信息疊加 在顯示區(qū)域16上,因?yàn)轱@示區(qū)域16的像素包含用于根據(jù)OpenGL 、 OpenGL ES或其 它圖形庫(kù)而定義三角形的頂點(diǎn)輸出信息。
屏幕細(xì)分(SSD)級(jí)130包含將顯示區(qū)域18劃分成M * N個(gè)子屏幕的屏幕細(xì)分操 作132。顯示區(qū)域18由疊加有頂點(diǎn)輸出信息的多個(gè)像素P(圖11)構(gòu)成。來(lái)自VP級(jí)110 的頂點(diǎn)信息提供界定三角形(例如,圖8A的T1和T2)以重疊在顯示區(qū)域18中的頂點(diǎn) 信息(例如,圖11的VI、 V2和V3)。頂點(diǎn)信息可包含頂點(diǎn)坐標(biāo)和邊緣信息。 一般來(lái)說(shuō), 用于每個(gè)三角形的頂點(diǎn)輸出信息只是用于界定一閉合區(qū)域的一組數(shù)學(xué)描述。這組數(shù)學(xué)描 述存儲(chǔ)在共享存儲(chǔ)器24中,使得每一處理線(xiàn)程(PT1、 PT2、 ...PTX)可在其自己的子 屏幕任務(wù)內(nèi)使用所述組數(shù)學(xué)描述來(lái)計(jì)算每一像素P (圖11),且判定所述像素是否在三 角形內(nèi)部。
圖8A說(shuō)明疊加在顯示區(qū)域18上的頂點(diǎn)輸出信息。在屏幕細(xì)分(SSD)級(jí)130期間, 通過(guò)將構(gòu)成顯示區(qū)域18的像素劃分或分組成MxN個(gè)子屏幕任務(wù)來(lái)對(duì)顯示區(qū)域18進(jìn)行 細(xì)分,如最佳見(jiàn)于圖8B中。所述MxN個(gè)子屏幕任務(wù)存儲(chǔ)在任務(wù)列表135(圖6和圖8B) 中。所述MxN個(gè)子屏幕任務(wù)是存儲(chǔ)在共享存儲(chǔ)器24中的MxN個(gè)獨(dú)立任務(wù)。可使用與 VP級(jí)110期間所使用的處理線(xiàn)程分開(kāi)的處理線(xiàn)程來(lái)實(shí)施SSD級(jí)130的操作。或者,SSD 級(jí)130的操作可在同一處理線(xiàn)程上與VP級(jí)110的操作組合。
在圖8A所示的實(shí)施例中,將顯示區(qū)域18劃分成MxN個(gè)子屏幕以創(chuàng)建網(wǎng)格,其中 MM且N〉1。出于說(shuō)明性目的,圖9展示被劃分成MxN個(gè)子屏幕的顯示區(qū)域18',其中 M=l且NM。箭頭說(shuō)明掃描或工作流程方向。參看圖10,顯示區(qū)域18"被劃分成MxN 個(gè)子屏幕,其中MW且N-1。因此,顯示區(qū)域18"的子屏幕形成一系列的列。
像素渲染(PR)級(jí)140包含光柵化、混合和紋理應(yīng)用操作142以及隱藏表面移除操 作144。盡管如此,像素渲染級(jí)140仍可包含由OpenGL㊣或OpenGL ES定義的其它操
12作。PR級(jí)140將來(lái)自VP級(jí)110的關(guān)于3D對(duì)象的信息轉(zhuǎn)換成可在屏幕16的顯示區(qū)域 18中顯示的位圖。PR級(jí)140處理輸入三角形集合以產(chǎn)生3D圖形圖像的像素表示。
典型的像素渲染(PR)級(jí)可首先從頂點(diǎn)輸出信息的列表中取出三角形。接下來(lái),PR 級(jí)將從顯示區(qū)域中取出像素,且對(duì)照所述三角形計(jì)算所述像素,看所述像素是否在所述 三角形內(nèi)部。如果所評(píng)估像素在所述三角形內(nèi)部,那么PR級(jí)可用來(lái)自所述三角形的對(duì) 應(yīng)色彩來(lái)執(zhí)行所述像素的著色。如果所評(píng)估像素不在所述三角形內(nèi)部,那么跳過(guò)所述像 素。PR級(jí)將接著拾取顯示區(qū)域18中的下一像素。PR級(jí)對(duì)顯示區(qū)域18中的其它像素重 復(fù)上述過(guò)程,直到已針對(duì)一個(gè)三角形評(píng)估或處理了所有像素為止。因此, 一次一個(gè)地對(duì) 像素進(jìn)行處理。
接著,典型PR級(jí)將移到頂點(diǎn)輸出信息列表中的下一個(gè)三角形,且對(duì)當(dāng)前三角形重 復(fù)像素的評(píng)估。
PR級(jí)140以與多個(gè)子屏幕或子屏幕任務(wù)類(lèi)似的方式工作。差別在于子屏幕具有 較小數(shù)目的像素待評(píng)估或處理,且多個(gè)子屏幕可由處理線(xiàn)程(PT1、 PT2、 ...PTX)獨(dú)立 且并行地處理。因此,用于PR級(jí)140的處理時(shí)間比典型PR級(jí)的處理時(shí)間快得多,因 為每一子屏幕中存在較少像素,且可并行處理多個(gè)子屏幕(其中每一處理線(xiàn)程獨(dú)立地爭(zhēng) 取處理相應(yīng)一個(gè)子屏幕中的像素)。
在示范性實(shí)施例中,使用交錯(cuò)多線(xiàn)程處理器22的多個(gè)處理線(xiàn)程PR1、 PR2、 ...PRX 中的一組處理線(xiàn)程來(lái)處理PR級(jí)140。用于PR級(jí)140的所述組處理線(xiàn)程中線(xiàn)程的數(shù)目可 為2個(gè)或2個(gè)以上,最多為X個(gè)線(xiàn)程。
在操作中,指派給像素渲染級(jí)140的每一處理線(xiàn)程PR1、 PR2、 ...PRX從任務(wù)列表 135中抓取可用子屏幕任務(wù),并將其從任務(wù)列表135中移除。所述組處理線(xiàn)程PR1、 PR2、 ...PRX在交錯(cuò)并行操作中處理輸入三角形,以在子屏幕中渲染所述像素(將輸入 三角形信息轉(zhuǎn)換成供子屏幕中顯示的位圖)。之后,相應(yīng)一個(gè)處理線(xiàn)程已完成用于所抓 取的子屏幕任務(wù)的像素渲染操作,所述處理線(xiàn)程移到任務(wù)列表135中的下一可用子屏幕 任務(wù)。重復(fù)此操作,直到已處理所有子屏幕且像素渲染級(jí)140完成為止。
參看圖l、圖2和圖12,交錯(cuò)多線(xiàn)程處理器22允許多線(xiàn)程處理為可縮放且均勻的。 運(yùn)算??捎梢韵碌仁蕉x
6(爿+ £)=6(爿)+6(5)以及
13在圖12中,展示用于像素渲染的具有單個(gè)三角形T的具四個(gè)子屏幕的塊。運(yùn)算。
處理被表示為四(i)個(gè)子屏幕的子屏幕任務(wù)Su、 S12、 Su和S22,每一子屏幕具有三角
形T的一細(xì)分部分(i)。運(yùn)算。因此等于子屏幕S 的運(yùn)算A加上子屏幕SI2的運(yùn)算。2
加上子屏幕Su的運(yùn)算。3加上子屏幕S22的運(yùn)算。4。如果所有運(yùn)算^、 。2、 ()3和。4被
并行處理,那么用于處理像素渲染級(jí)140的總峰值性能因此為一處理線(xiàn)程的峰值性能乘 以所使用的處理線(xiàn)程的數(shù)目。子屏幕Su具有用于三角形T的像素的細(xì)分部分T!。子屏 幕S^具有用于三角形T的像素的細(xì)分部分T2。子屏幕S21具有用于三角形T的像素的
細(xì)分部分T3。子屏幕S22具有用于三角形T的像素的細(xì)分部分T4。出于說(shuō)明性目的,線(xiàn)
程的數(shù)目為四(4)。因此,在此實(shí)例中,性能將為一個(gè)處理線(xiàn)程的性能乘以處理線(xiàn)程的 數(shù)目。因此,PR級(jí)140由于其并行處理來(lái)自多個(gè)子屏幕的像素的能力而為快速像素渲 染級(jí)。
此外,可在以真實(shí)應(yīng)用仿形之后配置數(shù)目M和N,使得可對(duì)不同情形進(jìn)一步優(yōu)化性 能。配置M和N提供具有較大靈活性和可縮放性的另一尺寸。仿形包含識(shí)別處理線(xiàn)程 的加載(滴答數(shù)(tick count))或操作任務(wù)的大小或復(fù)雜性。仿形還可包含評(píng)估其它分 量,例如與數(shù)據(jù)的傳送和來(lái)自共享存儲(chǔ)器24的存儲(chǔ)器容量相關(guān)聯(lián)的參數(shù)。在仿形和調(diào) 整的情況下,可使用幀速率、屏幕大小、像素速率、三角形速率等來(lái)改變或變更M和N 且/或變更供PR級(jí)140中使用的處理線(xiàn)程PR1、 PR2、 ...PRX的數(shù)目。在仿形和調(diào)整的 情況下,可平衡3D管線(xiàn)級(jí)110、 130和140以?xún)?yōu)化整個(gè)性能。剩余處理線(xiàn)程PR1、PR2…PRX 用于同時(shí)運(yùn)行的其它應(yīng)用程序(例如,游戲音頻)。
現(xiàn)在參看圖13,展示供3D圖形管線(xiàn)100使用的3D圖形管線(xiàn)方法200的流程圖。 方法200以步驟S202開(kāi)始,在步驟S202中,執(zhí)行頂點(diǎn)處理以創(chuàng)建頂點(diǎn)輸出信息。繼步 驟S202之后是步驟S204,在步驟S204中,將其中疊加有頂點(diǎn)輸出信息的顯示區(qū)域18 細(xì)分成MxN個(gè)子屏幕。舉例來(lái)說(shuō),如最佳見(jiàn)于圖8A中,三角形Tl在子屏幕Su、 S21 和S22上展開(kāi),且被細(xì)分成圖8B中所示的其相應(yīng)細(xì)分部分Tl!、 Tl2、 Tl3。因此,圖8B 中的任務(wù)列表135說(shuō)明三角形T1和T2的細(xì)分部分(出于說(shuō)明性目的,僅展示兩個(gè)三角 形)。如可了解,任務(wù)列表135中來(lái)自不與三角形相關(guān)聯(lián)或具有三角形的較小細(xì)分部分 的頂點(diǎn)輸出信息的那些條目可得到較快處理。因此,在像素渲染級(jí)140在顯示區(qū)域18 上顯示代表所述三角形的3D圖像之前,應(yīng)完成對(duì)所述三角形的所有細(xì)分部分的處理。繼步驟S204之后是步驟S206,在步驟S206中,創(chuàng)建具有或不具有三角形的子部 分的子屏幕任務(wù),并將其放置在任務(wù)列表135中。繼步驟S206之后是步驟S208卜2082 和208y,其中Y是用于像素渲染級(jí)140的所述組處理線(xiàn)程中的處理線(xiàn)程的數(shù)目(2個(gè)或 2個(gè)以上)。在步驟S208i處,第一處理線(xiàn)程(在下文中被稱(chēng)作"線(xiàn)程l")獲得(第一) 可用子屏幕任務(wù)(圖8B),且在步驟S210,處,處理所述子屏幕任務(wù)中的每一像素,尤 其是被確定為在三角形或與所述任務(wù)相關(guān)聯(lián)的三角形部分內(nèi)或內(nèi)部的那些像素。繼步驟 S21(h之后是步驟S212p在步驟S212,中,確定其是否為任務(wù)列表135的末尾。如果所 述確定為"是",那么結(jié)束線(xiàn)程l的處理。否則,如果所述確定為"否",那么步驟S212! 返回到步驟S208卜第二處理線(xiàn)程(在下文中被稱(chēng)作"線(xiàn)程2")的操作基本上相同。 線(xiàn)程2獲得或抓取任務(wù)列表135中的下一個(gè)可用子屏幕任務(wù)。繼步驟S2082之后是步驟 S2102,在步驟S2102中,處理所述子屏幕任務(wù)。繼步驟S20 82之后是步驟S2102。繼步 驟S21(h之后是步驟S2122。在步驟S2122處,確定任務(wù)列表135中是否還存在任務(wù)。如 果步驟S2122處的確定為"否",那么所述方法結(jié)束。否則,如果所述確定為"是", 那么步驟S2122返回到步驟S2082。
步驟S208Y通過(guò)線(xiàn)程Y獲得或抓取第Y個(gè)可用子屏幕任務(wù)。繼步驟S208y之后是歩 驟S210y,在步驟S210Y中,處理所述子屏幕任務(wù)。繼步驟S210y之后是歩驟S212Y, 在歩驟S212y中,確定任務(wù)列表135中是否還存在任務(wù)。如果所述確定為"否",那么 所述方法結(jié)束。否則,如果所述確定為"是",那么步驟S212Y返回到步驟S208Y。
步驟S210" S2102和S210Y期間所實(shí)行的處理執(zhí)行光柵化、混合、紋理應(yīng)用操作 142以及隱藏表面移除操作144。具體參看圖11,具有中心圓點(diǎn)的正方形表示像素P。 所述像素P中的一些像素在三角形Tll的內(nèi)部,而一些像素在三角形Tll的外部。每一 頂點(diǎn)V1、 V2和V3具有一以平滑明暗處理(smooth shading)附加的色彩值。使用線(xiàn)性 內(nèi)插來(lái)計(jì)算每一像素P處的色彩值。頂點(diǎn)V1、 V2和V3用于形成三角形Tll,且將所 述三角形定位在顯示區(qū)域18內(nèi)。計(jì)算由正方形的中心中的黑色圓點(diǎn)表示的每一像素中 心處的色彩。內(nèi)插包含Z深度、a、霧和紋理的各種參數(shù)。
再次參看圖2到圖4,在此實(shí)例中,存在六(6)個(gè)線(xiàn)程PT1、 PT2、 PT3、 PT4、 PT5 和PT6。第一線(xiàn)程PT1可用于處理VP級(jí)110。第二線(xiàn)程PT2可用于處理SSD級(jí)130。 剩余的四個(gè)線(xiàn)程PT3、 PT4、 PT5和PT6將用于并行地處理來(lái)自任務(wù)列表135的子屏幕 任務(wù)。在此,處理線(xiàn)程PT3將獲得第一可用子屏幕任務(wù)1,1,且處理所抓取的第一子屏 幕任務(wù)l,l中的像素。處理線(xiàn)程PT4將獲得下一 (第2)個(gè)可用子屏幕任務(wù)1,2,且處理 所抓取的子屏幕任務(wù)1,2中的像素。處理線(xiàn)程PT5將獲得下一 (第3)個(gè)可用子屏幕任
15務(wù)1,3,且處理所抓取的子屏幕任務(wù)1,3中的像素(假定M大于3)。
假定M為4,處理線(xiàn)程PT6將獲得下一 (第4)個(gè)可用子屏幕任務(wù)1,M,且處理所 抓取的子屏幕任務(wù)l,M中的像素。當(dāng)處理線(xiàn)程PT3、 PT4、 PT5和PT6完成其各自的子 屏幕任務(wù)時(shí),將并行地抓取和處理額外子屏幕任務(wù),直到任務(wù)列表135為空為止。
在圖13中所描述的實(shí)施例中,為了使3D圖形管線(xiàn)100的操作負(fù)載平衡,可使用 3D圖形管線(xiàn)100所使用的處理線(xiàn)程中的至少一者來(lái)處理所有三個(gè)3D管線(xiàn)級(jí)110、 130 和140。僅出于說(shuō)明性目的,可使用線(xiàn)程1來(lái)執(zhí)行步驟S202、S204、S206以及步驟S208,、 S210!和S212"
如果一個(gè)處理線(xiàn)程執(zhí)行3M像素/秒(MIPS)渲染,那么其將采用大致30個(gè)指令包 來(lái)處理一個(gè)像素。此平均為每像素約100個(gè)指令。保留所述六個(gè)線(xiàn)程中的兩個(gè)線(xiàn)程用于 VP級(jí)110和SSD級(jí)130且剩余的四個(gè)處理線(xiàn)程用于PR級(jí)140將支持是專(zhuān)用硬件圖形 加速器的性能(12M像素/秒)的四倍的VGA分辨率。
因?yàn)樗刑幚砭€(xiàn)程共享同一存儲(chǔ)器24,所以所述處理線(xiàn)程可全部使用互斥工具來(lái)非 常高效(無(wú)重復(fù))地處理同一組輸入三角形數(shù)據(jù)(子屏幕任務(wù))。
像素渲染級(jí)140是3D圖形管線(xiàn)100的最后一個(gè)管線(xiàn)級(jí)。PR級(jí)140處理輸入三角形 列表以產(chǎn)生3D圖形圖像的像素表示。上文所述的3D圖形管線(xiàn)100改進(jìn)PR級(jí)140的性 能(以每秒像素來(lái)計(jì))。交錯(cuò)多線(xiàn)程處理器22使性能增加并行運(yùn)行以處理任務(wù)列表135 的處理線(xiàn)程的數(shù)目的倍數(shù)。
3D圖形管線(xiàn)結(jié)構(gòu)的優(yōu)點(diǎn)是其在允許調(diào)整數(shù)目M和N中的靈活性。通過(guò)增加數(shù)目M 和N,減少了對(duì)像素渲染級(jí)140的MIPS要求。因?yàn)槊恳蛔悠聊蛔兊幂^小,所以渲染任 務(wù)變得較簡(jiǎn)單。這有助于增加多個(gè)處理線(xiàn)程的性能。所述處理線(xiàn)程還可用于其它同時(shí)發(fā) 生的應(yīng)用程序(例如,音頻)。
如可容易看到,本文中所描述的用于渲染3D圖形圖像的軟件實(shí)施方案具有比專(zhuān)用 圖形加速器的硬件實(shí)施方案的性能高的性能。與圖形加速器的硬件實(shí)施方案相比,本文 中所描述的實(shí)施例靈活且可縮放。因?yàn)樗鰧?shí)施例是靈活的,所以容易擴(kuò)展軟件代碼以 用于添加新特征,支持3D圖形標(biāo)準(zhǔn)(例如,OpenGLESl.O、 l丄..)的較高版本,且支 持不同的應(yīng)用程序配置和定制要求。所述實(shí)施例的可縮放特征顧及不同的性能要求(幀 速率、屏幕大小、像素速率、三角形速率等...),以?xún)?yōu)化硅成本和系統(tǒng)功率消耗。
此實(shí)施例還使軟件實(shí)施方案能夠與低成本且低功率處理器一起使用,代替使用具有 多GHz時(shí)鐘速度的高端處理器來(lái)達(dá)到同一性能。
現(xiàn)在參看圖14,共享存儲(chǔ)器24包含用于3D圖形管線(xiàn)100的多種隊(duì)列。所述隊(duì)列
16包含頂點(diǎn)陣列25、圖元隊(duì)列26和任務(wù)隊(duì)列27。盡管如此,仍可為VP級(jí)140的階層(tier) 或?qū)?layer)提供額外隊(duì)列或緩沖區(qū)。如先前關(guān)于圖7所描述,VP級(jí)110包含模型視 圖變換操作112、投影操作114、剔除操作116、照明與著色操作118、圖元組合操作120、 裁剪(即,用戶(hù)定義的裁剪)操作122以及透視除法與視口操作124。將VP級(jí)110中 的操作分階層或分層,使得較低層或階層(例如,圖元組合操作120和裁剪操作122) 依賴(lài)于較高階層或?qū)?例如,模型視圖變換操作112)。
頂點(diǎn)陣列25包含來(lái)自模型視圖變換操作112的頂點(diǎn)坐標(biāo)。頂點(diǎn)陣列25含有每一頂 點(diǎn)的屬性,例如,在模型坐標(biāo)中的頂點(diǎn)位置、每一頂點(diǎn)的色彩以及紋理坐標(biāo)。圖元隊(duì)列 26由圖元組合操作120填充。任務(wù)隊(duì)列27以來(lái)自SSD級(jí)130的任務(wù)列表135填充。然 而,VP級(jí)IIO的在圖元組合操作120以下的階層或?qū)右蕾?lài)于圖元隊(duì)列26中所填充的數(shù) 據(jù)而創(chuàng)建SSD級(jí)130所需的頂點(diǎn)輸出信息。SSD級(jí)130創(chuàng)建供PR級(jí)140使用的必要任 務(wù)列表135。然而,同時(shí),圖元組合操作120依賴(lài)于來(lái)自較高階層或?qū)?例如,模型視 圖變換操作112)的數(shù)據(jù)。上文與圖元組合操作120和模型視圖變換操作112有關(guān)的描 述只是出于說(shuō)明性目的,且適用于VP級(jí)IIO中的其它階層或?qū)印?br>
現(xiàn)在參看圖15,展示用于在每處理線(xiàn)程基礎(chǔ)上使3D圖形管線(xiàn)100負(fù)載平衡的方法 300的流程圖。在此實(shí)施例中,將處理線(xiàn)程PT1、 PT2、 ...PTX中的一者或一者以上對(duì) PR級(jí)140的處理列為優(yōu)先于3D圖形管線(xiàn)IOO中的VP級(jí)110和SSD級(jí)130。處理線(xiàn)程 PT1、 PT2、 ...PTX或處理線(xiàn)程PT1、 PT2、 ...PTX的被指派以處理3D圖形管線(xiàn)100的操 作的子集可操作以并行且獨(dú)立地處理3D圖形管線(xiàn)100的操作。方法300將由處理線(xiàn)程 PT1、 PT2、 ...PTX中的一者或一者以上或處理線(xiàn)程的被指派給3D圖形管線(xiàn)100的操作 的子集個(gè)別且獨(dú)立地執(zhí)行。
方法300以步驟S302開(kāi)始,在步驟S302中,處理線(xiàn)程PT1、 PT2、 ...PTX中的一 者最初檢查共享存儲(chǔ)器24的任務(wù)隊(duì)列27中的在SSD級(jí)130期間創(chuàng)建的任務(wù)列表135 中的子屏幕任務(wù)的數(shù)目。SSD級(jí)130的操作對(duì)應(yīng)于圖13的步驟S204和S206。繼步驟 S302之后是步驟S304,在步驟S304中,確定任務(wù)隊(duì)列27是否為空或任務(wù)列表135中 的所有剩余子屏幕任務(wù)是否被其它處理線(xiàn)程鎖定。如果在步驟S304處,所述確定為 "否",那么繼步驟S304之后是步驟S306,在步驟S306中,處理線(xiàn)程執(zhí)行PR級(jí)140 的操作(例如,步驟S208!、 S210!及S212,),以消耗或處理一個(gè)子屏幕任務(wù)。此后,步 驟S306循環(huán)回到步驟S302。
然而,如果在步驟S304處,所述確定為"是",那么繼步驟S304之后是步驟S308, 在步驟S308中,確定是否還存在3D圖形操作。如果步驟S308處的確定為"否",且任務(wù)隊(duì)列27為空或正由最后一個(gè)管線(xiàn)級(jí)(PR級(jí)140)排空(步驟S304),那么3D圖形 管線(xiàn)100的操作基本上完成。因此,方法300結(jié)束。步驟S308只是用于結(jié)束方法300 的準(zhǔn)則的一個(gè)實(shí)例。因此,可使用其它準(zhǔn)則,且相應(yīng)地將所述準(zhǔn)則放置在方法300中。
如果步驟S308處的確定為"是",那么繼步驟S308之后是步驟S310,在步驟S310 中,執(zhí)行VP級(jí)110中的頂點(diǎn)處理,以產(chǎn)生表示至少一個(gè)三角形的頂點(diǎn)輸出信息。繼步 驟S310之后是步驟S312,在步驟S312中,將步驟S310處所創(chuàng)建的頂點(diǎn)信息發(fā)送到SSD 級(jí)130,以供添加到任務(wù)隊(duì)列27中的任務(wù)列表135。步驟S312接著循環(huán)回到步驟S302, 在步驟S302中,處理線(xiàn)程再次檢查任務(wù)隊(duì)列27。通常,在步驟S310處,處理線(xiàn)程將調(diào) 用VP級(jí)110的函數(shù)。
作為另一注意事項(xiàng),可變更步驟S304處的評(píng)估準(zhǔn)則。舉例來(lái)說(shuō),開(kāi)始時(shí),步驟S304 處的評(píng)估準(zhǔn)則可將子屏幕任務(wù)的數(shù)目與指示任務(wù)隊(duì)列27中供PR級(jí)140使用的子屏幕任 務(wù)的數(shù)目的水印(圖6)或閾值進(jìn)行比較。如果子屏幕任務(wù)的數(shù)目低于所述水印或在所 述水印以下(即,指示任務(wù)隊(duì)列中用于像素渲染的子屏幕任務(wù)不多),那么繼步驟S304 之后是步驟S308。然而,如果子屏幕任務(wù)的數(shù)目大于所述水印或在所述水印以上,那么 處理線(xiàn)程將在步驟S306處執(zhí)行PR級(jí)140的操作。
然而,當(dāng)在預(yù)定數(shù)目的循環(huán)之后任務(wù)隊(duì)列27中的子屏幕任務(wù)的數(shù)目仍在水印等級(jí) 以下時(shí),可改變(降低)評(píng)估準(zhǔn)則。舉例來(lái)說(shuō),可將評(píng)估準(zhǔn)則設(shè)置為空且/或鎖定所有子 屏幕任務(wù)。因此,可來(lái)回變更S304的評(píng)估準(zhǔn)則以平衡PR級(jí)140與VP級(jí)IIO之間的負(fù) 載,其中偏好是朝向PR級(jí)140的。
關(guān)于VP級(jí)IIO的階層或?qū)樱蛘咴趫D15的步驟S310處,可評(píng)估對(duì)各種隊(duì)列中的 數(shù)據(jù)的階層檢査。作為實(shí)例,處理線(xiàn)程在步驟S310期間可在檢査VP級(jí)110中的其它較 高階層或?qū)又械娜我徽咧埃紫葯z查圖元隊(duì)列26或其它中間階層或?qū)?。如果中間階 層或?qū)又械臄?shù)據(jù)在對(duì)應(yīng)隊(duì)列中,那么處理線(xiàn)程可處理來(lái)自所述階層或?qū)拥臄?shù)據(jù),以供較 低階層或?qū)邮褂靡援a(chǎn)生頂點(diǎn)輸出信息。
對(duì)于VP級(jí)平衡,處理線(xiàn)程將以與上述關(guān)于圖13所描述的方式類(lèi)似的方式抓取和鎖 定所述隊(duì)列的任一者中的數(shù)據(jù)。
方法300允許將每個(gè)處理線(xiàn)程PT1、 PT2、 ...PTX創(chuàng)建為相等的,且運(yùn)行較容易維 護(hù)且添加特征的相同程序代碼。方法300還可避免處理線(xiàn)程之間的切換開(kāi)銷(xiāo)。
方法300自動(dòng)平衡3D圖形管線(xiàn)100的級(jí)之間的工作負(fù)載,其中將優(yōu)先權(quán)給予PR 級(jí)140。此外,負(fù)載平衡在無(wú)管理者線(xiàn)程的情況下自動(dòng)平衡管線(xiàn)級(jí)110、 130和140中的 每一者之間的工作負(fù)載。負(fù)載平衡可通過(guò)添加線(xiàn)程或從3D圖形管線(xiàn)100的處理操作移
18除線(xiàn)程來(lái)縮放。負(fù)載平衡需要處理線(xiàn)程中的每一者之間具有最小開(kāi)銷(xiāo)的極少通信。
在示范性實(shí)施例中,方法300可以包括一個(gè)或一個(gè)以上計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī) 程序產(chǎn)品的形式在硬件、軟件、固件或其任一組合中實(shí)施。當(dāng)在軟件中實(shí)施時(shí),所述計(jì) 算機(jī)程序產(chǎn)品可存儲(chǔ)在計(jì)算機(jī)可讀媒體上或使用計(jì)算機(jī)可讀媒體來(lái)傳輸,所述計(jì)算機(jī)可 讀媒體包含計(jì)算機(jī)存儲(chǔ)媒體和計(jì)算機(jī)通信媒體。
術(shù)語(yǔ)"計(jì)算機(jī)存儲(chǔ)媒體"在本文中指代適合于存儲(chǔ)致使計(jì)算機(jī)執(zhí)行所述方法的指 令的任何媒體。作為實(shí)例而非限制,計(jì)算機(jī)存儲(chǔ)媒體可包括固態(tài)存儲(chǔ)器裝置,包含電子 存儲(chǔ)器裝置(例如,RAM、 ROM、 EEPROM及其類(lèi)似物)、光學(xué)存儲(chǔ)器裝置(例如,小 型光盤(pán)(CD)、數(shù)字多用途光盤(pán)(DVD)及其類(lèi)似物),或磁性存儲(chǔ)器裝置(例如,硬 盤(pán)驅(qū)動(dòng)器、快閃驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器及其類(lèi)似物),或適合于存儲(chǔ)計(jì)算機(jī)程序產(chǎn)品的其 它存儲(chǔ)器裝置,或此些存儲(chǔ)器裝置的組合。
術(shù)語(yǔ)"計(jì)算機(jī)通信媒體"在本文中指代適合于使用(例如)經(jīng)調(diào)制的載波、光學(xué)信 號(hào)、DC或AC電流及其類(lèi)似途徑將計(jì)算機(jī)程序產(chǎn)品從一個(gè)地方傳輸?shù)搅硪坏胤降娜魏?物理接口。作為實(shí)例而非限制,計(jì)算機(jī)通信媒體可包括絞合線(xiàn)對(duì)、印刷電纜或扁平電纜、 同軸電纜、光纖電纜、數(shù)字訂戶(hù)線(xiàn)(DSL),或其它有線(xiàn)、無(wú)線(xiàn)或光學(xué)串行或并行接口, 或其組合。
提供所揭示實(shí)施例的先前描述是為了使所屬領(lǐng)域的技術(shù)人員能夠制作或使用本發(fā) 明。對(duì)這些實(shí)施例的各種修改對(duì)于所屬領(lǐng)域的技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,且本文中 所定義的一般原理在不脫離本發(fā)明的精神或范圍的情況下可應(yīng)用于其它實(shí)施例。因此, 本發(fā)明無(wú)意限于本文中所展示的實(shí)施例,而應(yīng)被賦予與本文中所揭示的原理和新穎特征 一致的最寬范圍。
權(quán)利要求
1.一種處理器,其包括多個(gè)處理線(xiàn)程,當(dāng)數(shù)據(jù)可用于三維圖形管線(xiàn)的像素渲染操作時(shí),每一處理線(xiàn)程將所述像素渲染操作列為優(yōu)先于頂點(diǎn)處理操作。
2. 根據(jù)權(quán)利要求1所述的處理器,其中所述多個(gè)處理線(xiàn)程并行且獨(dú)立地操作。
3. 根據(jù)權(quán)利要求1所述的處理器,其中當(dāng)每一處理線(xiàn)程執(zhí)行所述頂點(diǎn)處理操作時(shí),所 述處理線(xiàn)程創(chuàng)建用于3D圖形圖像的頂點(diǎn)輸出信息。
4. 根據(jù)權(quán)利要求3所述的處理器,其中每一處理線(xiàn)程將用于顯示區(qū)域的所述頂點(diǎn)輸出 信息劃分成多個(gè)子屏幕,且從所述子屏幕創(chuàng)建子屏幕任務(wù)并將所述子屏幕任務(wù)存儲(chǔ) 在任務(wù)列表中,所述子屏幕任務(wù)為所述數(shù)據(jù)。
5. 根據(jù)權(quán)利要求4所述的處理器,其中每一處理線(xiàn)程在執(zhí)行所述像素渲染操作時(shí),執(zhí) 行對(duì)所述子屏幕任務(wù)的像素的光柵化、所述像素的混合以及所述像素的紋理化。
6. —種處理器,其包括多個(gè)處理線(xiàn)程,每一處理線(xiàn)程確定用于像素渲染操作的子屏 幕任務(wù)在任務(wù)列表中是否可用,如果所述子屏幕任務(wù)可用,那么對(duì)所述子屏幕任務(wù) 執(zhí)行所述像素渲染操作,且如果所述子屏幕任務(wù)不可用,那么執(zhí)行頂點(diǎn)處理操作, 從而平衡三維(3D)圖形管線(xiàn)的工作負(fù)載。
7. 根據(jù)權(quán)利要求6所述的處理器,其中所述多個(gè)處理線(xiàn)程并行且獨(dú)立地操作。
8. 根據(jù)權(quán)利要求6所述的處理器,其中每一處理線(xiàn)程在執(zhí)行所述頂點(diǎn)處理操作時(shí)檢查 隊(duì)列是否有所述頂點(diǎn)處理操作的中間階層的數(shù)據(jù),且如果所述隊(duì)列具有所述數(shù)據(jù), 那么處理所述中間階層的所述數(shù)據(jù)。
9. 根據(jù)權(quán)利要求8所述的處理器,其中如果所述中間階層的所述隊(duì)列為空,那么所述 處理線(xiàn)程在執(zhí)行所述頂點(diǎn)處理操作時(shí)處理來(lái)自所述頂點(diǎn)處理操作的較高階層的隊(duì) 列的數(shù)據(jù)。
10. 根據(jù)權(quán)利要求8所述的處理器,其中當(dāng)所述處理線(xiàn)程執(zhí)行所述頂點(diǎn)處理操作時(shí),所 述處理線(xiàn)程創(chuàng)建用于3D圖形圖像的頂點(diǎn)輸出信息。
11. 根據(jù)權(quán)利要求IO所述的處理器,其中所述處理線(xiàn)程將用于顯示區(qū)域的所述頂點(diǎn)輸 出信息劃分成多個(gè)子屏幕,且創(chuàng)建所述子屏幕任務(wù)并將所述子屏幕任務(wù)存儲(chǔ)在所述 任務(wù)列表中。
12. 根據(jù)權(quán)利要求11所述的處理器,其中所述處理線(xiàn)程在執(zhí)行所述像素渲染操作時(shí), 執(zhí)行對(duì)所述子屏幕任務(wù)的像素的光柵化、所述像素的混合以及所述像素的紋理化。
13. 根據(jù)權(quán)利要求12所述的處理器,其中并行且獨(dú)立操作的所述多個(gè)處理線(xiàn)程將所述 像素渲染操作列為優(yōu)先于所述頂點(diǎn)操作。
14. 根據(jù)權(quán)利要求6所述的處理器,其中所述處理器嵌入在個(gè)人數(shù)字助理(PDA)、掌 上電腦、移動(dòng)電話(huà)、蜂窩式電話(huà)、衛(wèi)星電話(huà)、膝上型計(jì)算機(jī)、筆記本型計(jì)算機(jī)、平 板PC和無(wú)線(xiàn)通信裝置中的一者中。
15. —種無(wú)線(xiàn)裝置,其包括處理器,其具有多個(gè)處理線(xiàn)程,每一處理線(xiàn)程確定用于像素渲染操作的子屏幕任 務(wù)在任務(wù)列表中是否可用,如果所述子屏幕任務(wù)可用,那么對(duì)所述子屏幕任務(wù)執(zhí)行 所述像素渲染操作,且如果所述子屏幕任務(wù)不可用,那么執(zhí)行頂點(diǎn)處理操作,從而 平衡三維(3D)圖形管線(xiàn)的工作負(fù)載;以及存儲(chǔ)器,其耦合到所述處理器以用于存儲(chǔ)所述任務(wù)列表。
16. 根據(jù)權(quán)利要求15所述的裝置,其中所述多個(gè)處理線(xiàn)程并行且獨(dú)立地操作。
17. 根據(jù)權(quán)利要求15所述的裝置,其中當(dāng)每一處理線(xiàn)程執(zhí)行所述頂點(diǎn)處理操作時(shí),所 述處理線(xiàn)程創(chuàng)建用于3D圖形圖像的頂點(diǎn)輸出信息。
18. 根據(jù)權(quán)利要求17所述的裝置,其中每一處理線(xiàn)程將用于顯示區(qū)域的所述頂點(diǎn)輸出 信息劃分成多個(gè)子屏幕,且從所述子屏幕創(chuàng)建所述子屏幕任務(wù)并將所述子屏幕任務(wù) 存儲(chǔ)在所述任務(wù)列表中。
19. 根據(jù)權(quán)利要求18所述的裝置,其中每一處理線(xiàn)程在執(zhí)行所述像素渲染操作時(shí),執(zhí) 行對(duì)所述子屏幕任務(wù)的像素的光柵化、所述像素的混合以及所述像素的紋理化。
20. —種無(wú)線(xiàn)裝置,其包括-處理器,其具有多個(gè)處理線(xiàn)程,當(dāng)數(shù)據(jù)可用于三維圖形管線(xiàn)的像素渲染操作時(shí), 每一處理線(xiàn)程將所述像素渲染操作列為優(yōu)先于頂點(diǎn)處理操作;以及 存儲(chǔ)器,其耦合到所述處理器。
21. 根據(jù)權(quán)利要求20所述的裝置,其中所述多個(gè)處理線(xiàn)程并行且獨(dú)立地操作。
22. 根據(jù)權(quán)利要求20所述的裝置,其中當(dāng)每一處理線(xiàn)程執(zhí)行所述頂點(diǎn)處理操作時(shí),所 述處理線(xiàn)程創(chuàng)建用于3D圖形圖像的頂點(diǎn)輸出信息。
23. 根據(jù)權(quán)利要求22所述的裝置,其中每一處理線(xiàn)程將用于顯示區(qū)域的所述頂點(diǎn)輸出 信息劃分成多個(gè)子屏幕,且從所述子屏幕創(chuàng)建子屏幕任務(wù)并將所述子屏幕任務(wù)存儲(chǔ) 在任務(wù)列表中,所述子屏幕任務(wù)為所述數(shù)據(jù)。
24. 根據(jù)權(quán)利要求22所述的裝置,其中每一處理線(xiàn)程在執(zhí)行所述像素渲染操作時(shí),執(zhí) 行對(duì)所述子屏幕任務(wù)的像素的光柵化、所述像素的混合以及所述像素的紋理化。
25. —種計(jì)算機(jī)程序產(chǎn)品,其包含具有用于致使計(jì)算機(jī)執(zhí)行以下各項(xiàng)的指令的計(jì)算機(jī)可 讀媒體第一指令序列,其用于確定用于像素渲染操作的子屏幕任務(wù)在任務(wù)列表中是否可 用;第二指令序列,其用于在所述子屏幕任務(wù)可用的情況下,對(duì)所述子屏幕任務(wù)執(zhí)行 所述像素渲染操作;以及第三指令序列,其用于在所述子屏幕任務(wù)不可用的情況下,執(zhí)行頂點(diǎn)處理操作, 以用于平衡三維(3D)圖形管線(xiàn)的工作負(fù)載。
26. 根據(jù)權(quán)利要求25所述的計(jì)算機(jī)程序產(chǎn)品,其中所述第三指令序列創(chuàng)建用于3D圖 形圖像的頂點(diǎn)輸出信息。
27. 根據(jù)權(quán)利要求26所述的計(jì)算機(jī)程序產(chǎn)品,其進(jìn)一步包括第四指令序列,其用于將疊加在顯示區(qū)域中的所述頂點(diǎn)輸出信息劃分成多個(gè)子屏 幕,且創(chuàng)建代表所述子屏幕的子屏幕任務(wù)并將所述子屏幕任務(wù)存儲(chǔ)在所述任務(wù)列表 中。
28. 根據(jù)權(quán)利要求25所述的計(jì)算機(jī)程序產(chǎn)品,其中所述第二指令序列執(zhí)行所述子屏幕 任務(wù)中的像素的光柵化、所述像素的混合以及所述像素的紋理化。
29. —種方法,其包括通過(guò)處理線(xiàn)程確定用于像素渲染操作的子屏幕任務(wù)在任務(wù)列表中是否可用; 如果所述子虜幕任務(wù)可用,那么通過(guò)所述處理線(xiàn)程來(lái)對(duì)所述子屏幕任務(wù)執(zhí)行所述像素渲染操作;以及如果所述子屏幕任務(wù)不可用,那么通過(guò)所述處理線(xiàn)程來(lái)執(zhí)行頂點(diǎn)處理操作,從而平衡三維(3D)圖形管線(xiàn)的工作負(fù)載。
30. 根據(jù)權(quán)利要求29所述的方法,其進(jìn)一步包括通過(guò)所述3D圖形管線(xiàn)所使用的處 理器的一組處理線(xiàn)程來(lái)并行地重復(fù)所述像素渲染操作和所述頂點(diǎn)處理操作或其置 換的所述確定和所述執(zhí)行,同時(shí)將所述像素渲染操作的所述確定和所述執(zhí)行列為優(yōu) 先。
31. 根據(jù)權(quán)利要求29所述的方法,其中所述頂點(diǎn)處理操作的所述執(zhí)行包含檢查隊(duì)列 是否有來(lái)自執(zhí)行所述頂點(diǎn)處理操作的中間階層的數(shù)據(jù);以及在用于所述中間階層的 所述隊(duì)列具有所述數(shù)據(jù)的情況下,處理用于所述中間階層的數(shù)據(jù)。
32. 根據(jù)權(quán)利要求31所述的方法,其中所述頂點(diǎn)處理操作的所述執(zhí)行進(jìn)一步包含在 用于所述中間階層的所述隊(duì)列為空的情況下,處理來(lái)自 一來(lái)自執(zhí)行所述頂點(diǎn)處理操 作的較高階層的隊(duì)列的數(shù)據(jù)。
33. 根據(jù)權(quán)利要求29所述的方法,其中所述頂點(diǎn)處理操作的所述執(zhí)行包含創(chuàng)建用于3D 圖形圖像的頂點(diǎn)輸出信息。
34. 根據(jù)權(quán)利要求33所述的方法,其進(jìn)一步包括將用于顯示區(qū)域的所述頂點(diǎn)輸出信息 劃分成多個(gè)子屏幕,且創(chuàng)建所述子屏幕的子屏幕任務(wù)并將所述子屏幕任務(wù)存儲(chǔ)在所 述任務(wù)列表中。
35. 根據(jù)權(quán)利要求34所述的方法,其中所述像素渲染操作包含使所述子屏幕任務(wù)的 像素光柵化、混合所述像素以及使所述像素紋理化。
36. 根據(jù)權(quán)利要求35所述的方法,其進(jìn)一步包括通過(guò)所述3D圖形所使用的處理器的 一組處理線(xiàn)程來(lái)并行地重復(fù)所述像素渲染操作和所述頂點(diǎn)處理操作或其置換的所 述確定和所述執(zhí)行。
全文摘要
一種裝置具有用于處理三維(3D)圖形管線(xiàn)的頂點(diǎn)處理級(jí)、子屏幕劃分級(jí)和像素渲染級(jí)的處理器。所述處理器包含處理線(xiàn)程,所述處理線(xiàn)程通過(guò)將用于所述像素渲染級(jí)的處理列為優(yōu)先于其它級(jí)而平衡所述3D圖形管線(xiàn)的工作負(fù)載。并行且獨(dú)立操作的每一處理線(xiàn)程檢查子屏幕任務(wù)的任務(wù)列表中的任務(wù)等級(jí)。如果所述等級(jí)低于閾值、是空的或所述子屏幕任務(wù)均被鎖定,那么所述處理線(xiàn)程循環(huán)至所述頂點(diǎn)處理級(jí)。否則,所述處理線(xiàn)程在所述像素渲染級(jí)期間處理子屏幕任務(wù)。
文檔編號(hào)G06T15/00GK101578629SQ200880001769
公開(kāi)日2009年11月11日 申請(qǐng)日期2008年1月9日 優(yōu)先權(quán)日2007年1月10日
發(fā)明者吳車(chē)輝, 詹姆斯·M·布朗, 建 魏 申請(qǐng)人:高通股份有限公司