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