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