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