嵌入式系統中的圖形處理技術(shù)(如用戶(hù)界面和游戲)正在不斷發(fā)展和改善,例如從基于2D的交互圖形發(fā)展到基于3D的交互圖形。便攜式游戲站(PSP)這樣的便攜式設備就實(shí)現了PlayStation 2類(lèi)3D圖形質(zhì)量。而在PC圖形方面,可以讓開(kāi)發(fā)人員在頂點(diǎn)和片段層級配置功能的可編程著(zhù)色方案已經(jīng)成為DirectX和OpernGL API基礎架構的主要方案,這類(lèi)硬件在像Xbox360和PlayStation 3這樣的游戲設備上已經(jīng)形成了非常豐富的內容和經(jīng)驗。然而嵌入式系統中的圖形處理存在著(zhù)很多問(wèn)題和挑戰需要開(kāi)發(fā)人員去解決,例如為了保持長(cháng)電池壽命所需的低功耗,因為空間約束要使系統的器件數量最少,以及限制門(mén)的數量以降低成本。 Khronos Group公司正在定義針對嵌入式領(lǐng)域的各種媒體API,目前已經(jīng)發(fā)布了一種圖形API,即OpenGL ES。該OpenGL ES共有1.x和2.x兩個(gè)版本,分別針對固定圖形管線(xiàn)和可編程圖形管線(xiàn),這種方法與PC圖形中用的方法是一樣的。 DMP圖形內核概述 DMP為嵌入式領(lǐng)域中的便攜式設備、移動(dòng)電話(huà)、汽車(chē)導航系統、娛樂(lè )游戲機和所有其它嵌入式圖形設備提供了可擴展的高性能、低功耗3D圖形內核。PICA200是最新的3D圖形IP內核,涵蓋了前面提到的所有應用領(lǐng)域。 該內核由多個(gè)組件組成,包括OpenGL ES標準功能以及我們自己最初的圖形技術(shù)。這些組件是根據用戶(hù)要求以及帶有定制要素(如性能、存儲器帶寬和功耗)的目標系統構建的。在選擇IP接口方案時(shí),很難設定在這么寬的應用范圍下用戶(hù)的具體要求。在采用開(kāi)放內核協(xié)議(OCP)作為我們組件的標準總線(xiàn)接口方面DMP一直做得非常成功。 Maestro技術(shù) 通過(guò)采用OpenGL ES 1.1和我們自己的、被稱(chēng)為Maestro的擴展圖形API,圖形內核已經(jīng)取得了很好的高性能低功耗效果。這些Maestro功能包括了各種目標應用中頻繁使用和實(shí)用的圖形功能,包括各種光照和明暗處理模型,例如Phong、Cook-Torrance和BRDF、陰影效應、多邊形細分以及過(guò)程紋理。 1:Maestro功能、光照、陰影和微粒效果 Maestro功能利用我們改進(jìn)的最初算法以硬連線(xiàn)邏輯形式實(shí)現,從而解決了嵌入式系統設計中低功耗與高性能的矛盾。Maestro功能可以實(shí)現非常豐富的內容,比如PC和便攜式設備上的控制臺圖形(圖1)。 Maestro功能包括以下一些效果: 1. 光照Maestro-包括按照每個(gè)片斷的高性能光照功能,并支持各種明暗處理模型,如Phong、同向/異向 BRD以及下表面散射; 2. 陰影Maestro-支持實(shí)時(shí)的硬陰影和軟陰影處理; 3. 形狀Maestro-通過(guò)用硬件(例如NURBS和多邊形細分)產(chǎn)生精細的多邊形來(lái)減少存儲器帶寬,因此可以使輸入數據量實(shí)現最小化; 4. 映像Maestro-支持凹凸映像和過(guò)程紋理,并且過(guò)程紋理不需要任何存儲器讀取來(lái)生成紋理圖像,因為圖像是根據算術(shù)等式產(chǎn)生的; 5. 微粒Maestro-用硬件產(chǎn)生霧化、云和氣體效果。 圖1:由Futuremark和DMP合作開(kāi)發(fā)的PICA200演示場(chǎng)景。 圖2:只使用OpenGL ES的渲染結果(左邊)以及用OpenGL ES 和我們的Maestro API后的渲染結果(右邊) 圖3:利用我們的陰影Maestro API實(shí)現的實(shí)時(shí)軟陰影渲染。 圖4:使用形狀Maestro的多邊形細分實(shí)例。左邊的圖形顯示了來(lái)自主CPU的輸入控制多邊形,右邊的圖形顯示了我們的圖形硬件實(shí)時(shí)產(chǎn)生的多邊形。 圖5:映像Maestro實(shí)例(左邊:針對每個(gè)片段光照的凹凸映像,右邊:利用沒(méi)有任何紋理存儲器訪(fǎng)問(wèn)的過(guò)程紋理硬件實(shí)現的木紋圖案)。 圖6:微粒 Maestro可以產(chǎn)生霧化、云和氣體效果。在我們的渲染算法中,清晰和模糊對象的組合沒(méi)有任何的瑕疵。 2:硬件框圖 這些Maestro技術(shù)通過(guò)算法優(yōu)化以及多個(gè)研究機構的長(cháng)期研究得以實(shí)現。目前我們正在向嵌入式系統引入PC級的圖形和經(jīng)驗。 硬件框圖 下面是圖形內核的框圖。 在圖7中的所有紅色箭頭都指向了采用OCP的存儲器總線(xiàn)接口。 圖7:PICA200框圖。 在開(kāi)發(fā)PICA200內核的過(guò)程中解決了以下一些挑戰: 1)為了涵蓋所有嵌入式系統,IP內核必須支持各種運行光譜的設備,包括從帶微型顯示屏的移動(dòng)電話(huà)到帶很大顯示器的娛樂(lè )設備。 2)3D圖形硬件需要極大的帶寬用于命令、紋理、色彩和z緩沖器讀/寫(xiě)訪(fǎng)問(wèn),而這種帶寬將確定3D IP內核的性能,并且 3)IP內核應能很容易地集成到SoC系統環(huán)境中。 為解決所有這些問(wèn)題,我們決定采用OCP作為我們構建模塊方案的標準接口基礎架構。結果是,我們可以提供下面的選項來(lái)滿(mǎn)足用戶(hù)的需求(表1)。 以移動(dòng)電話(huà)系統為例,要求支持OpenGL ES功能和VGA顯示器尺寸,功耗應該最小,因此在這種情況下,頂點(diǎn)處理器和紋理管線(xiàn)的數量需要分別優(yōu)化為兩個(gè)(當然這里的數量?jì)H僅是一個(gè)例子)。Maestro功能的實(shí)現并不僅僅支持Open ES,因為在大量的蜂窩電話(huà)中不需要非標準的功能。紋理緩存參數也可以針對SoC總線(xiàn)特性進(jìn)行優(yōu)化,因為事實(shí)上這些參數是由OCP標準自動(dòng)提供的。在像娛樂(lè )游戲機這樣的應用中,所有Maestro功能都需要組件來(lái)支持更高質(zhì)量和吸引人的內容以及高性能和大顯示器尺寸。 我們還采用了利用OCP線(xiàn)程協(xié)議的預取機制。這對于避免渲染管線(xiàn)的停頓以保持很高的渲染性能來(lái)說(shuō)是很重要的。表2給出了在該圖形內核中線(xiàn)程ID分配的實(shí)例,在這個(gè)例子中,內核共有四個(gè)紋理模塊。 OCP2.2支持標示哪個(gè)線(xiàn)程允許失序響應,但是這個(gè)特殊DMP內核并不支持失序處理,因為對色彩和深度緩沖器的訪(fǎng)問(wèn)需要使用基于讀-修改-寫(xiě)鎖定的訪(fǎng)問(wèn),對其它的訪(fǎng)問(wèn)沒(méi)有針對失序訪(fǎng)問(wèn)支持的邏輯和FIFO,以便生成小型IP內核及支持上述各種應用。為了在沒(méi)有標示功能條件下獲得較好的存儲器訪(fǎng)問(wèn)性能,這種圖形內核針對基于模塊化的光柵化處理進(jìn)行了優(yōu)化,所有從三角函數產(chǎn)生的象素都要通過(guò)4X4這樣的矩形塊處理,以便通過(guò)長(cháng)突發(fā)長(cháng)度訪(fǎng)問(wèn)和數據訪(fǎng)問(wèn)跟上對齊地址而充分利用存儲器訪(fǎng)問(wèn),并為紋理和色彩緩沖器獲得較高的緩存利用率。 3:OCP好處 使用OCP的最大好處是廣泛使用的行業(yè)標準是開(kāi)放的,任何人都能得到。此外,大多數主要的SoC銷(xiāo)售商利用和支持OCP。這樣一來(lái),我們可以根據協(xié)議在我們的接口和緩存中定義某些參數,以?xún)?yōu)化我們的用戶(hù)總線(xiàn)訪(fǎng)問(wèn)接口和系統參數,就像表1中的最后一行,這為IP提供商和SoC供應商同時(shí)提供了一種高層次的構建模塊概念。 本文小結 這種內核最早是在SIGGRAPH 2006上發(fā)布的(圖8),目前PICA200構建內核已經(jīng)能夠供貨。 圖8:在SIGGRAPH 2006上的FPGA原型展示。 我們多年來(lái)一直在為嵌入式應用開(kāi)發(fā)3D圖形技術(shù),而利用OCP可以減少開(kāi)發(fā)這種技術(shù)的時(shí)間和成本。對于IP內核和SoC供應商來(lái)說(shuō),系統整合工作是一項非常耗時(shí)的工作。PICA200內核不僅支持各種嵌入式應用,還通過(guò)利用基于OCP的構建模塊方案優(yōu)化了每個(gè)系統的性能。OCP提供了能夠滿(mǎn)足上述設計挑戰所需的完整規范和基礎架構。 |