開發者故事—王石:VK-GL-CTS測試套件適配和經驗分享
近期,深圳開鴻數字產業發展有限公司(以下簡稱“深開鴻”)VK-GL-CTS測試套件適配正式合入OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)社區主干。作為將VK-GL-CTS測試套件合入OpenHarmony主干的代碼提交者,我將與大家一起分享我們團隊在適配與移植過程中的故事和經驗,希望能給廣大開發者一些參考。
我和我的團隊
我是深開鴻OS框架開發工程師王石,作為深開鴻參與開源共建的骨干,我主要負責VK-GL-CTS測試套件的GPU圖形適配與移植工作。
在我的團隊里有OpenGL的專家,負責OpenHarmony圖形接口適配;有兼容性專家,負責開源三方庫的移植和與OpenHarmony系統的適配;有系統服務移植與版本構建的專家,負責版本構建與系統服務的穩定性移植與調試;有測試領域的專家,負責兼容性、穩定性、安全性測試等工作。團隊成員在適配與移植工作中不斷攻堅克難、通力合作,使得相關問題均得到閉環處理,最終順利完成了這一項目。
VK-GL-CTS適配對OpenHarmony生態的積極作用
VK-GL-CTS是Khronos開發的一套開源GPU測試套件,可用于開放標準OpenGL ES,EGL和Vulkan的測試,也是驗證GPU驅動API的實現是否支持的官方標準。VK-GL-CTS的引入是對OpenHarmony生態共建的強有力的保護,補齊了OpenHarmony兼容性測試套件在GPU方向上的缺失,為社區之后能更好地看護OpenHarmony應用兼容性、API兼容性提供完備的保證,同時也為OpenHarmony兼容性測評提供助力。
困難與挑戰
在完成VK-GL-CTS測試套件適配的過程中,我們也面臨很多挑戰和困難。
首先是對圖形框架的移植挑戰,OpenHarmony的圖形框架不同于現在業界其他的圖形框架,移植的初始就需要我們快速了解和分析OpenHarmony圖形框架的模塊組成和應用API;同時由于OpenHarmony的迅速發展,主線變更頻繁,這就需要我們不但要了解圖形框架的架構,而且要理解圖形框架的設計原理,抽絲剝繭地抓住圖形框架的主脈絡。
其次是對OpenHarmony兼容性測試框架的理解和適配。VK-GL-CTS的全代碼量有200多萬行,100多萬條測試項,為了適配OpenHarmony的XTS(X Test Suite)子系統,并且在后期能方便更新維護,我們運用了分層設計理念,開發出兩個測試套件的適配層將兩個測試框架進行解耦,并通過編譯腳本,測試腳本等輔助工具對測試結果進行收集,分析形成報告。
最后是對標準建立的挑戰。在VK-GL-CTS測試套件運行的測試結果,我們進行了多重對比和驗證,對標業內成熟產品的數據,同時參考主流嵌入式硬件產品的測試數據,通過校準配置、測試數據及測試項目以及和社區開發者、硬件廠商的討論初步建立OpenHarmony在GPU接口和功能方面的兼容性測評標準。
經驗與總結
VK-GL-CTS測試套件適配覆蓋圖形框架、GPU驅動、編譯框架、日志框架、兼容性測試框架等,涉及OpenHarmony的眾多方面。在適配過程中,我們團隊也在社區眾多專家的幫助下克服了重重困難。如最初碰到的問題是signal11報錯,OpenHarmony提供了faultlog,可以在開發版路徑/data/log/faultlog里查看;然后又遇到測試報錯問題,由于我們仿照rosen采用了線性掃描,但對測試用例來說線性掃描會導致某些情況下的色偏,于是我們改用GPU的默認設置;又因為開源合規問題我們引入OAT規則。
直到現在,我們團隊還在維護著VK-GL-CTS的測試框架,時刻關注著可能出現的問題和版本更新。從3.1 Release到3.2 Beta版本,OpenHarmony進行了文件目錄的調整、GPU庫的調整、增加了對64位設備的支持,這些都是版本維護工作中要進行的必要過程,我們需要關注每日構建系統(http://ci.openharmony.cn/dailys/dailybuilds ) 對不同版本、分支進行看護。
目前,VK-GL-CTS測試套件適配已正式合入OpenHarmony社區主干,相關倉庫路徑參考如下:
???https://gitee.com/openharmony/third_party_vk-gl-ctshttps://gitee.com/openharmony/third_party_glslanghttps://gitee.com/openharmony/third_party_spirv-headershttps://gitee.com/openharmony/third_party_spirv-tools。??
愿景與展望
一路以來,深開鴻始終持續聚焦KaihongOS操作系統和超級設備管理平臺的核心技術,不斷增強OpenHarmony技術能力,在代碼共建、任務承接、SIG主導或者參與、社區活動、代碼貢獻等方面的工作中對OpenHarmony開源項目作出了突出貢獻,不斷加速開源生態建設。
作為深開鴻的一名OS框架開發工程師,我很幸運能從事自己喜歡的職業,并且很榮幸能夠加入OpenHarmony項目。未來,我將與團隊伙伴們繼續堅持技術研發,探索開源生態發展之路,并將提煉、沉淀出來的場景、技術貢獻給OpenHarmony社區,真正踐行“從開源中來到開源中去”的理念。我們堅信,未來以OpenHarmony為基礎的智慧創新之路必將賦能千行百業,促進萬物互聯。