久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Android 如何使用GPU硬件加速

 arm_embed 2012-07-23

Android2.3 中如何使用GPU硬件加速

Android2.3 中如何使用GPU硬件加速

 

1.名詞解釋

GPUGraphic Processing Unit (圖形處理器)

OpenGLOpen Graphic Library 定義了一個(gè)跨編程語(yǔ)言,、跨平臺(tái)的編程接口的規(guī)格,,不同廠商會(huì)有不同的實(shí)現(xiàn)方法,它主要用于三維圖象(二維的亦可)繪制,。

SurfaceFlingerAndroid中負(fù)責(zé)Surface之間疊加,、混合操作的動(dòng)態(tài)庫(kù)

SkiaAndroid中的2D圖形庫(kù)

libaglAndroid中通過(guò)軟件方法實(shí)現(xiàn)的一套OpenGL動(dòng)態(tài)庫(kù)

libhgl為區(qū)別libagl,,自定義的一種叫法。特指GPU廠商提供的硬件實(shí)現(xiàn)的OpenGL

composition特指SurfaceFlinger對(duì)各個(gè)Surface之間的疊加,、混合操作

render特指使用OpenGL動(dòng)態(tài)庫(kù)進(jìn)行3D渲染

copybit:Android使用2D引擎來(lái)加速圖形操作(主要是Surface之間的composition操作)的一種技術(shù),,對(duì)應(yīng)著一個(gè)或幾個(gè)動(dòng)態(tài)庫(kù)。

pmemAndroid特有驅(qū)動(dòng),,從linux內(nèi)核中reserve物理連續(xù)內(nèi)存,,可以為2d3d引擎,、vpu等設(shè)備分配物理連續(xù)內(nèi)存,。

3D2D引擎在Android中的使用方法

2.1 Android如何使用2D,、3D引擎

Android在啟動(dòng)后,,會(huì)在運(yùn)行時(shí)根據(jù)配置文件加載OpenGLlibagl & libhgl)的實(shí)現(xiàn),如果有libhgl實(shí)現(xiàn),,默認(rèn)使用libhgl實(shí)現(xiàn),,否則使用libagl實(shí)現(xiàn)。

 

Android OpenGL動(dòng)態(tài)庫(kù)使用方法

1. 判斷是否含有egl.cfg文件,,如果沒(méi)有在加載libagl

2. 如果有egl.cfg文件,,則解析egl.cfg文件,根據(jù)egl.cfg文件加載對(duì)應(yīng)libhgllibagl

3. 分別解析libagllibhgl,,獲取libagllibhgl中標(biāo)準(zhǔn)OpenGL函數(shù)的函數(shù)地址(函數(shù)指針)

4. 系統(tǒng)在執(zhí)行過(guò)程中,,會(huì)通過(guò)函數(shù)指針調(diào)用到libagl或者libhgl中去,從而實(shí)現(xiàn)圖形的繪制,。

 

OpenGLAndroid中兩個(gè)作用

1. 用于Surfacecomposition操作,。

         SurfaceFlinger會(huì)調(diào)用到OpenGL中,通過(guò)libagl或者libhglSurface的組合,、疊加操作,。

2. 用于圖形圖像的渲染

         Android framework會(huì)對(duì)OpenGL實(shí)現(xiàn)進(jìn)行java層次的簡(jiǎn)單封裝,在java應(yīng)用程序中對(duì)OpenGL的調(diào)用最終會(huì)調(diào)用到libagl或者libhgl中去,。

         很多第三方游戲,、3D圖庫(kù)、某些launcher會(huì)使用OpenGL實(shí)現(xiàn)比較炫麗UI的特效,。

 

CopybitAndroid中的作用

CopybitAndroid中主要用于Surfacecomposition操作,。

 

 

SkiaAndroid中的作用

SkiaAndroid2D圖形庫(kù),用于繪制文字,、幾何圖形,、圖像等。

Skia的設(shè)備后端:Raster,、OpenGL,、PDF

 

Skia是否支持硬件加速,?此乃官方說(shuō)明,我只是翻譯,。

參考http://code.google.com/p/skia/wiki/FAQ

1. Skia子類SkCanvas

         由于所有的繪圖操作都會(huì)通過(guò)SkCanvas子類,,這些繪圖可以重定向到不同的圖形APISkGLCanvas已經(jīng)可以將繪圖操作直接指向?qū)?/span>OpenGL的調(diào)用,。參考src/gl目錄

2. 自定義存在瓶頸的調(diào)用

         Skia中的某些blit操作存在瓶頸,,可以利用CPU的一些特性去重寫這些操作。比如在ARMV7設(shè)備上可以使用NEON SIMD指令進(jìn)行優(yōu)化,。參考src/opts目錄

 

2.使用GPU硬件加速需要做的工作

1. Linux內(nèi)核方面:

         1.1添加GPU驅(qū)動(dòng)支持,,以模塊方式編譯GPU驅(qū)動(dòng),Android啟動(dòng)時(shí)加載內(nèi)核模塊,。

         1.2添加PMEM支持,,預(yù)留內(nèi)存供GPU使用

2. Android方面:

         2.1添加copybit HAL

我們使用copybit調(diào)用2D engine對(duì)surface composition進(jìn)行硬件加速。這樣可能會(huì)達(dá)到更大的性能提升效果(比起使用3D engine),。

         2.2修改gralloc

gralloc負(fù)責(zé)顯存等的分配,,以及對(duì)framebuffer操作。如果使用copybit,,必須修改gralloc

         2.3修改libagl

如果使用copybit,,必須修改libagl,對(duì)libagl做部分hack,,使之能夠調(diào)用到copybit,。

         2.4修改surfaceflinger

         如果使用 copybit可能需要做部分修改

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多