演講嘉賓 | 黃 然
回顧整理 | 廖 濤
排版校對 | 李萍萍
嘉賓簡介
黃然,華為終端BG軟件部資深圖形技術(shù)專家,華為終端游戲標(biāo)準(zhǔn)、工具和分析創(chuàng)始人,GPU Turbo黑科技核心成員,在OpenHarmony社區(qū)上擔(dān)任開源圖形驅(qū)動SIG、游戲SIG、兼容性工作組組長等職務(wù)。
內(nèi)容來源
第一屆開放原子開源基金會OpenHarmony技術(shù)峰會——OS內(nèi)核及視窗分論壇
正 文 內(nèi) 容
圖形驅(qū)動也是一種軟件程序,它串聯(lián)了操作系統(tǒng)和應(yīng)用程序與計算機(jī)圖形硬件進(jìn)行通信和交互,是發(fā)揮硬件性能為操作系統(tǒng)提供高質(zhì)量圖形顯示的關(guān)鍵環(huán)節(jié)。OpenHarmony在開源圖形驅(qū)動的使用和落地上做了哪些工作呢?OpenHarmony游戲SIG組、圖形驅(qū)動SIG組組長、華為終端圖形資深技術(shù)專家黃然在第一屆OpenHarmony技術(shù)峰會上給大家?guī)砹藥c分享。
01?
OpenHarmony圖形驅(qū)動面臨的挑戰(zhàn)
圖形驅(qū)動技術(shù)的演進(jìn)始終跟GPU硬件的發(fā)展相關(guān)。1975年至今,隨著GPU硬件由早期的專業(yè)領(lǐng)域高端圖形工作站發(fā)展到臺式機(jī)GPU顯卡,再到如今的移動終端、云和服務(wù)器GPU顯卡,圖形驅(qū)動API也由OpenGL演進(jìn)到了DirectX。
目前,圖形驅(qū)動領(lǐng)域的主流廠商都對自身的核心代碼閉源,Arm Mali、Qualcomm Adreno和Nvidia等開源圖形驅(qū)動也并沒有特別“Open”。
隨著開源運動的興起和成功,AMD和英特爾等公司的圖形驅(qū)動開源建立了良好的生態(tài),也取得了不錯的效果。對OpenHarmony這樣一個完全開源的操作系統(tǒng)來說,圖形開源驅(qū)動有很好的借鑒和學(xué)習(xí)意義,當(dāng)然也存在著諸多挑戰(zhàn)。掌握開源圖形驅(qū)動有多難呢?首先圖形驅(qū)動的開發(fā)和研究需要具備扎實的軟硬件開發(fā)功底,且由于開源圖形驅(qū)動在國內(nèi)的發(fā)展很慢,少有開發(fā)者專門從事該項工作,缺乏技術(shù)交流和實踐經(jīng)驗分享。下圖為黃然老師前期在開源驅(qū)動領(lǐng)域?qū)W習(xí)和研究所做的筆記:
此外,對于OpenHarmony來說,當(dāng)前大部分的小廠商無法獲得閉源GPU廠商的支持,導(dǎo)致視覺流暢體驗較差,限制了非常多OpenHarmony產(chǎn)品的商用,在一定程度上也阻礙了OpenHarmony生態(tài)的推廣。
02?
開源圖形驅(qū)動架構(gòu)介紹
由于從驅(qū)動角度,OpenHarmony富設(shè)備的內(nèi)核是基于Linux的,故首先介紹下Linux開源驅(qū)動的整體架構(gòu)。整個驅(qū)動的架構(gòu)可以分為2D和3D兩個部分,2D部分的比較老的框架是基于X11,而比較新的框架是基于Wayland。
3D的部分驅(qū)動通過mesa,將OpenGLES或者Vulkan的API以及shader轉(zhuǎn)化為硬件的ISA。而2D的DDX驅(qū)動通過glamor也可以走到mesa層,這樣避免了2D和3D分岔的驅(qū)動路線(過去曾經(jīng)是分岔的,2D走DDX)。
整體的驅(qū)動是UMS+KMS結(jié)構(gòu),UMS負(fù)責(zé)用戶層驅(qū)動的解析,而KMS用來做顯示和硬件渲染,通過libdrm和DRM來形成UMS到KMS的傳遞。
在圖形驅(qū)動中有幾個關(guān)鍵概念:
一是LLVM、TGSI和Gallium。TGSI是一種用于描述著色器的中間語言,是所有驅(qū)動程序使用的唯一中間表示,所有的Shader都會轉(zhuǎn)化為中間的IR。而Gallium是LLVM的后端,能夠基于不同硬件進(jìn)行不同硬件的ISA繪制,如圖中的radeonsi就是AMD的radeon的后端渲染。
二是ISA。ISA由控制流(CF)指令、ALU指令、通過紋理緩存提取的指令和通過頂點緩存提取的指令組成,其中控制流程序通過使用控制流指令(條件跳轉(zhuǎn)、循環(huán)和子例程)來指導(dǎo)程序子句的流,包括內(nèi)存分配指令和其他指令,這些指令可以指定頂點和幾何程序何時完成相關(guān)操作,類似CPU的匯編語言。
三是Fence。Fence能夠讓GPU和CPU協(xié)調(diào)工作,提高圖像顯示的速度。通過Fence機(jī)制產(chǎn)生的GPU的事件,能夠保證用戶態(tài)程序下發(fā)的渲染命令被順序執(zhí)行,從而保證上層應(yīng)用程序渲染相關(guān)數(shù)據(jù)的一致性。
03?
開源圖形驅(qū)動在OpenHarmony上的移植
OpenHarmony驅(qū)動框架支持多種接入模式,能夠?qū)崿F(xiàn)南向硬件的快速部署。其中,顯示框架支持Display_Gralloc、Display_Gfx和Device HDI的3類南向接口,其中,Display_Gralloc負(fù)責(zé)內(nèi)存分配;Display_Gfx負(fù)責(zé)圖形硬件2D繪制,可以用于離線合成;Device HDI負(fù)責(zé)顯示設(shè)備特性管理,包括屏幕顯示,在線及離線硬件合成,硬件Vsync,顯示設(shè)備色彩管理等。在開發(fā)板能力支持方面,RK3568和HI3516dv300支持DRM內(nèi)存分配、DRM送顯以及硬件離線合成,HI3751V350支持支持FbDev 和DmaBuf-Heap、支持FbDev顯示,不支持硬件離線合成。
針對上述OpenHarmony驅(qū)動框架的整體情況,開源GPU驅(qū)動的適配工作主要分為以下3個階段進(jìn)行:(1)驗證內(nèi)核panfrost驅(qū)動和用戶態(tài)panfrost驅(qū)動可以正常工作;(2)開源GPU驅(qū)動適配OpenHarmony(Flutter+weston)舊框架;(3)開源GPU驅(qū)動適配OpenHarmony(RenderService)新框架。目前,越來越多的興趣開發(fā)者參與到了OpenHarmony的開源圖形驅(qū)動適配和移植的工作中,近期有一些用戶已經(jīng)成功將高通開源驅(qū)動移植到移動終端上,使其能夠運行一些2D和3D的應(yīng)用。這意味著開源驅(qū)動在OpenHarmony上生態(tài)正在朝著良好的方向發(fā)展。
從GLmark2跑分情況來看,OpenHarmony開源驅(qū)動在2D的紋理處理等方面表現(xiàn)比閉源驅(qū)動優(yōu)異,在關(guān)鍵的著色和陰影、地形等偏3D的方面表現(xiàn)還較差。即便如此,在2D和3D開源圖形驅(qū)動上的性能提升已經(jīng)足以滿足絕大多數(shù)產(chǎn)品的需求。
當(dāng)然,在這個過程中,還有一些伙伴參考當(dāng)前的工作,把高通的freedreno開源驅(qū)動也完成了移植,并且可以在小米等手機(jī)上可以運行和使用開源驅(qū)動,如下:
未來我們還會在X86基礎(chǔ)的AMD以及Intel GPU上使能開源驅(qū)動,服務(wù)于OpenHamrony,也希望更多的小伙伴可以一起加入社區(qū)微信群SIG-OpenGfxDrv共建圖形驅(qū)動,對應(yīng)的gitee鏈接為:https://gitee.com/openharmony/third_party_mesa3d
04?
總結(jié)&展望
真正想做好圖形競爭力,就要了解GPU的工作機(jī)制和圖形驅(qū)動原理,OpenHarmony社區(qū)正是一個交流和學(xué)習(xí)的良好平臺;OpenHarmony開源圖形驅(qū)動是未來趨勢,也會是歷史最終選擇,希望有越來越多的興趣開發(fā)者能夠參與到開源圖形驅(qū)動的適配和移植工作中來,共建OpenHarmony生態(tài)。
E N D
點擊下方閱讀原文獲取演講PPT。關(guān)注我們,獲取更多精彩。
審核編輯黃宇
-
開源
+關(guān)注
關(guān)注
3文章
3218瀏覽量
42329 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3641瀏覽量
16061
發(fā)布評論請先 登錄
相關(guān)推薦
評論