新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 業(yè)界動(dòng)態(tài) > GPU如何工作:PowerVR/高通Adreno/ARM Mali的渲染模式分析

GPU如何工作:PowerVR/高通Adreno/ARM Mali的渲染模式分析

作者: 時(shí)間:2016-06-20 來(lái)源:愛(ài)活網(wǎng) 收藏
編者按:對(duì)大多數(shù)讀者來(lái)說(shuō),GPU架構(gòu)甚至GPU是啥,的確完全可以不需要了解,只要看上去外觀比較合眼緣就可以讓他們毫不猶豫地掏腰包購(gòu)買(mǎi)。

  在上一篇文章《【技術(shù)解析】GPU如何實(shí)現(xiàn)三維渲染及非圖形計(jì)算?》我們已經(jīng)了解了GPU工作流程以及作用,但GPU絕無(wú)這么簡(jiǎn)單。目前市場(chǎng)上的 GPU 主要由三家公司主導(dǎo),分別是ImgTec的系列、Qualcomm(高通)的 以及 ARM(安謀)的 Mali,其中被蘋(píng)果采用,被高通整合到驍龍SoC當(dāng)中,Mali應(yīng)用最為廣泛,有三星Exynos、MTK Helio、Mstar等等,按渲染模式可以劃分為IMR與TBR/TBDR兩大流派,下面我們先從說(shuō)起。

本文引用地址:http://www.butianyuan.cn/article/201606/292810.htm

  PowerVR —— 延后式分塊渲染架構(gòu)

  ImgTec(或者說(shuō) Imagination Technologies)的前身是 1985 年在英國(guó)成立的VideoLogic公司,在上世紀(jì)90年風(fēng)靡一時(shí)的世嘉DreamCast游戲機(jī)就是采用該公司技術(shù)授權(quán)生產(chǎn)的圖形處理器。


IMR與TBR/TBDR兩大GPU流派的愛(ài)恨情仇


  ImgTec目前旗下有多個(gè)分部,PowerVR是其中專(zhuān)門(mén)從事GPU、視頻處理單元、攝像機(jī)知識(shí)產(chǎn)權(quán)內(nèi)核技術(shù)開(kāi)發(fā)的分公司。

  PowerVR雖然從事GPU開(kāi)發(fā),但是它并不直接售賣(mài)芯片實(shí)體,而是透過(guò)授權(quán)的方式,將芯片內(nèi)核技術(shù)以收取權(quán)利金的方式讓第三方芯片廠商生產(chǎn)、銷(xiāo)售、使用,例如蘋(píng)果公司、英特爾公司、聯(lián)發(fā)科、索尼等,商業(yè)模式和同樣是英國(guó)公司的ARM一樣。

  技術(shù)內(nèi)核授權(quán)方式給了芯片廠商和系統(tǒng)集成廠商非常高的靈活性和快速切入市場(chǎng)的能力,他們可以在較短的時(shí)間里就實(shí)現(xiàn)各種配置的靈活組合。如果你看過(guò)我前面介紹的圖形流水線就知道,要做好一枚具競(jìng)爭(zhēng)力的GPU難度是相當(dāng)大的,中間涉及大量的技術(shù)積累。

  像NVIDIA、AMD這樣的廠商都不是突然冒出來(lái)的,他們都經(jīng)歷過(guò)非常慘烈的市場(chǎng)競(jìng)爭(zhēng)、有業(yè)界最強(qiáng)大的研發(fā)團(tuán)隊(duì)以及與周邊軟件開(kāi)發(fā)商經(jīng)年累月的開(kāi)發(fā)合作關(guān)系,現(xiàn)在一個(gè)新丁公司仿效NVIDIA模式貿(mào)然闖進(jìn)GPU開(kāi)發(fā)領(lǐng)域的話,如果不是手握十億美元級(jí)規(guī)模的資金來(lái)?yè)Q取技術(shù)和各種市場(chǎng)資源的話,恐怕連響都聽(tīng)不到。

  在上世紀(jì)90年代末和本世紀(jì)前兩年,PowerVR也在桌面市場(chǎng)和NVIDIA、3dfx進(jìn)行過(guò)捉對(duì)廝殺,不過(guò)由于商業(yè)模式并不十分適合桌面市場(chǎng),所以在僅有母公司VideoLogic(1999年更名為Imagination Technologies)推出的Kyro II后就不再踏足桌面獨(dú)立顯卡市場(chǎng),轉(zhuǎn)而全力發(fā)展嵌入式領(lǐng)域,從此一發(fā)不可收拾。


IMR與TBR/TBDR兩大GPU流派的愛(ài)恨情仇


  PowerVR在桌面獨(dú)立顯卡市場(chǎng)的最后一款產(chǎn)品是PowerVR3系列,原定用于Kyro III/IV的后續(xù)產(chǎn)品PowerVR4由于退出桌面市場(chǎng),對(duì)公眾而言只停留在幻燈片(上圖的STG5000就是原本計(jì)劃用在Kyro III的PowerVR4)中。

  當(dāng)然,PowerVR并沒(méi)有完全退出桌面市場(chǎng),他們和Intel達(dá)成了技術(shù)授權(quán)協(xié)議,英特爾可以在其集成GPU中采PowerVR MBX架構(gòu),英特爾在很長(zhǎng)的一段時(shí)期內(nèi)的集成GPU都采用了這個(gè)微架構(gòu)內(nèi)核。


IMR與TBR/TBDR兩大GPU流派的愛(ài)恨情仇


  PowerVR MBX據(jù)聞是世嘉DreamCast那枚PowerVR PCX 2的升級(jí)版,從技術(shù)資料來(lái)看的話,其實(shí)PowerVR MBX有些類(lèi)似于PowerVR4,官方的PowerVR MBX白皮書(shū)里也明確寫(xiě)著:

  4th generation tile-based deferred rendering(第四代塊元式延后渲染)

  從規(guī)格表來(lái)看,PowerVR MBX支持OpenGL ES 1.1,相當(dāng)于OpenGL版本1.5或者DirectX 8.x的變種版。

  所以,PoweVR MBX應(yīng)該是和PowerVR Series 4一脈相承的,PowerVR MBX屬于后者的移動(dòng)版本。

  什么是TBDR呢?

  在前面介紹的圖形渲染流水線,GPU在渲染的時(shí)候,一般是逐個(gè)三角形渲染的,如果以深度順序來(lái)劃分,可以分為從遠(yuǎn)到近(畫(huà)家畫(huà)法)、從近往遠(yuǎn),開(kāi)發(fā)人員可以在編寫(xiě)代碼的時(shí)候指定渲染順序。

  如果依照在圖形流水線什么階段進(jìn)行三角形排序,又可以分為sort-first、sort-middle、sort-last,middle是中間的意思,指的是從模型空間到屏幕空間這部分工位,sort-middle就是指在這段進(jìn)行三角形前后順序排序。sort-last是指在這之后進(jìn)行三角形排序,sort-first是指在這之前進(jìn)行三角形排序。


IMR與TBR/TBDR兩大GPU流派的愛(ài)恨情仇


  Sort-First一般用于多GPU渲染方案,基于片元方式的Sort-Last在目前絕大多數(shù)的GPU微架構(gòu)中使用,而Sort-Middle則是PowerVR的三角形排序方案,需要在幾何變換和光柵化之間進(jìn)行圖元的排列/分倉(cāng)處理,在解決了可視性問(wèn)題后再進(jìn)行貼圖和著色處理。

  這個(gè)步驟會(huì)造成一定的延遲,加上采用了塊元式渲染,所以像PowerVR這種渲染架構(gòu)被稱(chēng)作塊元式延后渲染器(Tile Based Deferred Rendering,TBDR)。

  而一般的GPU被認(rèn)為是看到一個(gè)三角形就馬上渲染,所以被稱(chēng)為立即渲染器(Immediate Mode Rendering),立即渲染器也可以分為塊元式(例如ARM Mali)和非塊元式(例如AMD、NVIDIA “目前”的GPU)。


IMR與TBR/TBDR兩大GPU流派的愛(ài)恨情仇


  (IMR)

  什么是TBDR?

  PowerVR 微架構(gòu)誕生于上世紀(jì)90年代初期,針對(duì)的是初代的三維游戲機(jī),當(dāng)時(shí)的人們希望這枚芯片的效率要盡可能地高,由于受到半導(dǎo)體技術(shù)的限制,所以在這時(shí)期有各種現(xiàn)在看來(lái)稀奇古怪的偏重于某個(gè)技術(shù)指標(biāo)的芯片。

  要效率高,其中一個(gè)辦法就是只渲染屏幕上能看到的三角形所覆蓋的片元,人們引入了名為HSR(Hidden Surface Removal,隱面消除,這里的隱面是指被其他實(shí)體多邊形遮蓋的多邊形)來(lái)消除無(wú)效片元來(lái)實(shí)現(xiàn)這個(gè)目標(biāo)。


IMR與TBR/TBDR兩大GPU流派的愛(ài)恨情仇


  (TBDR)

  在TBDR的渲染流水線里,幾何階段生成(已經(jīng)經(jīng)過(guò)裁剪)的多邊形或者說(shuō)三角形參數(shù)信息都存放在一個(gè)名為Scene Buffer(場(chǎng)景緩存)或者Parameter Buffer(參數(shù)緩存,這是相對(duì)新近的叫法)的內(nèi)存里,理論上里面保存的應(yīng)該是同一幀畫(huà)面里的所有三角形信息,其位置在顯存里(對(duì)于采用統(tǒng)一內(nèi)存架構(gòu)的手機(jī)而言,則是和系統(tǒng)內(nèi)存一樣位于同一塊物理內(nèi)存上)。

  這一步是TBDR獨(dú)有的,相較之下,傳統(tǒng)的GPU在幾何階段扔出到三角形后紋理單元/著色單元就馬上渲染,因此人們將傳統(tǒng)的GPU渲染方式稱(chēng)作立即渲染器。


IMR與TBR/TBDR兩大GPU流派的愛(ài)恨情仇


  這里請(qǐng)不要把TBDR 和延后式渲染混淆,后者是指把多個(gè)片元渲染后在進(jìn)行后期處理(例如打光、模糊等效果),同樣是“延后”一詞,但是對(duì)應(yīng)的渲染節(jié)點(diǎn)完全不一樣。

  在生成Scene Buffer的同時(shí),PowerVR GPU內(nèi)部的塊元加速器會(huì)對(duì)這些三角形進(jìn)行分倉(cāng)(Binning)或者說(shuō)篩選(sorting)處理,這個(gè)動(dòng)作會(huì)依照16像素*16像素(取決于具體的GPU實(shí)現(xiàn),像PowerVR PCX2可以是32*32或者32*16,PowerVR SGX 5上是16*16,“新的”P(pán)owerVR Series 6/7是32*32,這樣的分塊被稱(chēng)作塊元,即Tile)的大小,將Scene Buffer中位于塊元內(nèi)的所有三角形的指針存放到一個(gè)對(duì)應(yīng)的塊元緩存(Tile Buffer)中。


IMR與TBR/TBDR兩大GPU流派的愛(ài)恨情仇


  對(duì)于一個(gè)大小為1920x1080的全高清屏幕,用16*16的塊元大小進(jìn)行切分,可以切成大約8100個(gè)塊元,每個(gè)塊元在“顯存”中都有一個(gè)對(duì)應(yīng)的塊元緩存,里面存放的就是上面所說(shuō)的位于塊元內(nèi)的三角形數(shù)據(jù)指針(指向Scene Buffer對(duì)應(yīng)的三角形數(shù)據(jù))。

  所謂指針,是編程語(yǔ)言中的一個(gè)對(duì)象或變量,用來(lái)存儲(chǔ)某一個(gè)地址,這個(gè)地址的值直接指向(points to)存在電腦存儲(chǔ)器中另一塊存儲(chǔ)器空間的值。

  從編程的角度而言,在這些塊元緩存存放的數(shù)據(jù)結(jié)構(gòu)可以稱(chēng)作圖元列表(primtive list)。

  按照PowerVR或者說(shuō)ImgTec的說(shuō)法,他們?cè)谛碌奈⒓軜?gòu)中引入了幾何體壓縮技術(shù),存放在Scene Buffer的幾何體數(shù)據(jù)是壓縮過(guò)的,在GPU頂點(diǎn)內(nèi)存單元讀取時(shí)候再解壓,這樣的好處是可以顯著節(jié)省存放Scene Buffer的內(nèi)存空間和帶寬,而這通常意味著:省電。


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: PowerVR Adreno

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉