




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Android GDI之屏幕設(shè)備管理-動態(tài)鏈接庫 萬丈高樓從地起,從最根源的硬件幀緩沖區(qū)開始。我們知道顯示FrameBuffer在系統(tǒng)中就是一段內(nèi)存,GDI的工作就是把需要輸出的內(nèi)容放入到該段內(nèi)存的某個位置。我們從基本的點(像素點)和基本的緩沖區(qū)操作開始。1 基本知識1.1點的格式 對于不同的LCD來講,F(xiàn)rameBuffer的二進制格式不一樣,并且可以分為兩部分: 1)點的格式:通常將Depth,即表示多少位表示一個點。1位表示一個點2位表示一個點16位表示一個點32位表示一個點(Alpha通道) 2) 點內(nèi)格式:RGB分量分布表示。例如對于我們常見的16位表示一個點1.2格式之間的轉(zhuǎn)換所以
2、屏幕輸出實際上是一個值映射的關(guān)系。我們可以有如下的點格式轉(zhuǎn)換, 源格式可能來自單色位圖和彩色位圖,對于具體的目標機來講,我們的目標格式可能就是一種,例如16位(5/6/5)格式。其實就只存在一種格式的轉(zhuǎn)換,即從目標格式都是16位格式。 但是,在設(shè)計GDI時,基本要求有一個可移植性好,所以我們還是必須考慮對于不同點格式LCD之間的轉(zhuǎn)換操作。所以在GDI的驅(qū)動程序中涉及到如下幾類主要操作:區(qū)域操作(Blit):我們在顯示緩沖區(qū)上做的最多的操作就是區(qū)塊搬運。由此,很多的應(yīng)用處理器使用了硬件圖形加速器來完成區(qū)域搬運:blit.從我們的主要操作的對象來看,可以分為兩個方向:1)內(nèi)存區(qū)域到屏幕區(qū)域2)屏幕
3、區(qū)域到屏幕區(qū)域3)屏幕區(qū)域到內(nèi)存區(qū)域4)內(nèi)存區(qū)域到內(nèi)存區(qū)域在 這里我們需要特別提出的是,由于在Linux不同進程之間的內(nèi)存不能自由的訪問,使得我們的每個Android應(yīng)用對于內(nèi)存區(qū)域和屏幕緩沖區(qū)的使用變得很 復(fù)雜。在Android的設(shè)計中,在屏幕緩沖區(qū)和顯示內(nèi)存緩沖區(qū)的管理分類很多的層次,最上層的對象是可以在進程間自由傳遞,但是對于緩沖區(qū)內(nèi)容則使用共 享內(nèi)存的機制。基于以上的基礎(chǔ)知識,我們可以知道:(1)代碼中Config及其Format的意義所在了。也就理解了兼容性的意義:采用同硬件相同的點的描述對象(2)所有屏幕上圖形的移動都是顯示緩沖區(qū)搬運的結(jié)果。1.2圖形加速器 應(yīng)用處理器都可能帶有圖
4、形加速器,對于不同的應(yīng)用處理器對其圖形加速器可能有不同的處理方式,對于2D加速來講,都可歸結(jié)為Blit。多為數(shù)據(jù)的搬運,放大縮小,旋轉(zhuǎn)等。2 Android的緩沖區(qū)抽象定義 不同的硬件有不同的硬件圖形加速設(shè)備和緩沖內(nèi)存實現(xiàn)方法。Android Gralloc動態(tài)庫抽象的任務(wù)就是消除不同的設(shè)備之間的差別,在上層看來都是同樣的方法和對象。在Moudle層隱藏緩沖區(qū)操作細節(jié)。Android使 用了動態(tài)鏈接庫gralloc.xxx.so,來完成底層細節(jié)的封裝。2.1 本地定義hardwarelibhandwaremodulesgralloc每個動態(tài)鏈接庫都是用相同名稱的調(diào)用接口:1)硬件圖形加速器的抽
5、象:BlitEngine,CopyBit的加速操作。2)硬件FrameBuffer內(nèi)存管理3)共享緩存管理 從數(shù)據(jù)關(guān)系上我們來考察.動態(tài)鏈接庫的抽象行為:在層次:Hardware.chardwarelibhardware 中對動態(tài)鏈接庫中的內(nèi)容作了全新的包裝。/system /lib/hw/gralloc.xxx.so動態(tài)庫文件。從文件Gralloc.h(handwarelibhardwareinclude hardware)是抽象的結(jié)果:hw_get_module從gralloc.xxx.so提取了HAL_MODULE_INFO_SYM(SYM變 量) 從展露在外部的數(shù)據(jù)結(jié)構(gòu),看到到了這樣的
6、布局:static struct hw_module_methods_t gralloc_module_methods = open: gralloc_device_open;struct private_module_t HAL_MODULE_INFO_SYM = base: common: tag: HARDWARE_MODULE_TAG, id: GRALLOC_HARDWARE_MODULE_ID, name: "Graphics Memory Allocator Module", author: "The Android Open Source Proj
7、ect", methods: &gralloc_module_methods ,registerBuffer: gralloc_register_buffer,unregisterBuffer: gralloc_unregister_buffer,lock: gralloc_lock,unlock: gralloc_unlock, , framebuffer: 0, flags: 0, numBuffers: 0, bufferMask: 0,;我們建立了什么對象來支撐緩沖區(qū)的操作?buffer_handle_t:外部接口。methods.open,registerBuffe
8、r,unregisterBuffer,lock,unlock下面是外部接口和內(nèi)部對象的結(jié)構(gòu)關(guān)系,該類型的結(jié)構(gòu)充分利用C Struct的數(shù)據(jù)排列特性:基本結(jié)構(gòu)體放置在最前面,本地私有放置在后面,滿足了抽象的需要。typedef const native_handle* buffer_handle_t;private_module_t HAL_MODULE_INFO_SYM 向往暴露的動態(tài)鏈接庫接口,通過該接口,我們直接可以使用該對象。看不清楚上面圖,可以偏一下頭橫著看:幾個接口函數(shù)的解釋:(1)fb_post對于幀緩沖區(qū)實際地址并不需要向上層報告,所有的操作都是通過fb_post了完成。fp_post的任務(wù)就是將一個Buffer的內(nèi)容拷貝到硬件緩沖區(qū)。 (2)gralloc的主要功能是要完成: 1)打開屏幕設(shè)備 "/dev/fb0",,并映射硬件顯示緩沖區(qū)。 2)提供分配共享顯示緩存的接口 3)提供BiltEngine接口(完成硬件加速器的包裝)(3)gralloc_alloc輸出buffer_handle_t句柄。 這個句柄是共享的基本依據(jù),其基本原理在后面的章節(jié)有詳細描述。3 總結(jié) 總結(jié)一下,是 跟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 申報金融課題的申請書
- 健身房承包合同協(xié)議書
- 主播與直播平臺合作協(xié)議
- 個人借款質(zhì)押合同協(xié)議書范例
- 健康課題申報書
- 強化微生物檢驗培訓(xùn)的策略試題及答案
- 水務(wù)項目的財務(wù)風(fēng)險控制計劃
- 2025年注冊會計師考試備考心態(tài)調(diào)整試題及答案
- 行政管理師核心技能題及答案
- 證券交易行為與市場反應(yīng)的試題及答案
- (三診)綿陽市高中2022級高三第三次診斷性考試地理試卷A卷(含答案)
- 店長勞務(wù)合同協(xié)議
- 乳腺癌診治指南與規(guī)范(2025年版)解讀
- 肺癌化療護理查房
- JJG 693-2011可燃氣體檢測報警器
- 廉潔合作承諾書(簡單版)
- GB/T 35347-2017機動車安全技術(shù)檢測站
- 人工智能發(fā)展史課件
- 醫(yī)院定量檢驗性能驗證實驗方案設(shè)計
- 《組織行為學(xué)》題庫(含答案)
- 重醫(yī)大小兒外科學(xué)教案11先天性腸閉鎖、腸狹窄及腸旋轉(zhuǎn)不良
評論
0/150
提交評論