深入淺出,帶你了解Qualcomm的圖形圖像優(yōu)化之道
隨著我們對移動設(shè)備的依賴越來越強,手機(jī)游戲、移動應(yīng)用越來越多的參與到我們的日常生活中,而賦予這些產(chǎn)品精美的UI設(shè)計、良好的用戶體驗、炫酷的游戲畫面以及優(yōu)異的性能表現(xiàn),都能夠幫助開發(fā)者更好地獲取用戶的青睞,為此在2017年8月Qualcomm在深圳、北京、上海舉行了三場“探索移動圖形圖像處理——Qualcomm開發(fā)者公開課”,全面向開發(fā)者介紹深層次的移動端圖形圖像的優(yōu)化之道!
Qualcomm資深產(chǎn)品市場經(jīng)理溫宵凱:Qualcomm平臺優(yōu)勢及優(yōu)化工具.
會間溫宵凱介紹到,Qualcomm在移動領(lǐng)域已經(jīng)耕耘了超過三十年了,最早從modem開始,要最早先解決互聯(lián)問題,隨著最近智能手機(jī)發(fā)展,Qualcomm也是非??斓赝度肓舜罅康难邪l(fā)精力,放到多媒體處理器的研發(fā)上面,所以到現(xiàn)在,可以很自豪地講,Qualcomm是在移動多媒體互聯(lián)處理器里邊的世界第一的半導(dǎo)體廠商,特別是在移動互聯(lián)方面,是現(xiàn)在的3G、4G 的modem的領(lǐng)軍廠商,同時也同時投入了大量的人力和物力,在進(jìn)行更新的5G的連接,在wifi方面也是有非常深地積累。
同時他也介紹到驍龍835處理器是全世界第一顆基于10納米芯片制造技術(shù)所制造的半導(dǎo)體芯片,所以你會看到它的尺寸變得非常非常的小,旁邊是一顆我們中國的一元人民幣的硬幣,所以在這樣一個非常小的面積內(nèi),它事實上集成了大量的多媒體和modem的處理器件,這個是傳統(tǒng)領(lǐng)域完全想象不到的,同時包括小米的米6,還有中興的nubia Z17,還有像一加的一加5,和HTC的U11,這些優(yōu)秀的產(chǎn)品都是用了基于Qualcomm的驍龍835芯片,另外它也被用到了像ODG R8這樣的一款A(yù)R眼鏡里面。他同時向在場的開發(fā)者介紹了驍龍835處理器的相關(guān)技術(shù)參數(shù)及優(yōu)勢。
筆者了解到,基于Snapdragon 835處理器是專為移動游戲設(shè)計的一款處理器。
具體參數(shù)如下:
● Qualocmm? Kryo? 280 CPU up to 2.45GHz
● Qualocmm? Adreno? 540GPU
● OpenGL ES3.2, Vulkan
● HDR10 with 60x more color
● Gigabit LTE
● Tri-band Wi-Fi
● Low latency
● Qualocmm? Quick Charge? 4.0
● 基于10nm制程
同時Adreno540比上一代產(chǎn)品提升了25%圖形性能,同時支持10bit色,它能夠支持64倍于之前的8bit色的色彩。另外Qualcomm在生態(tài)建設(shè)方面也是投入了巨大的精力,所以我們跟很多行業(yè)界的重點的公司,像重點的引擎提供商,像Unity和ePeak都有非常緊密的合作,來保證它的兼容性,和它最新的特效能夠最早地部署在這樣的高端手機(jī)上.
Qualcomm高級工程師李彩琴:移動平臺圖形技術(shù)進(jìn)化史
首先她展示了一張在Mobile上渲染的一張?zhí)貏e真實的圖片,同時介紹了渲染出如此逼真圖片所需要的特效。以及在OpenGL的API上的技術(shù)及渲染過程。不論從模擬幾何角度、紋理坐標(biāo)、法向量、顏色,還是到GPU中處理、定義視景體,甚至fragment shader對于像素的處理的過程都做了詳細(xì)的介紹。
其次她介紹到Qualcomm有基于tile的一個rendering的方案,因為考慮到mobile上面,它的帶寬是有限的,而且它是需要考慮到功耗的,不像電腦上面它有帶寬很夠用,然后它的功耗也是,它插電源,不需要考慮功耗的問題。在mobile上的話Qualcomm就需要在這兩方面來考慮一個很好的方案,來實現(xiàn)又有高性能然后又可以盡量少耗功耗的一個效果.
最后她與會者現(xiàn)場介紹了一些實際的案例。詳細(xì)介紹了Qualcomm圖形圖像處理中更多的使用GPU來進(jìn)行操作,進(jìn)而減少CPU的工作量同時在節(jié)約用電的同時給大家?guī)砀玫膱D形圖像體驗。
Qualcomm高級資深工程師經(jīng)理文艷山:次世代圖形圖像API
首先他介紹了Vulkan的發(fā)展史,從2012年的GLcomment,再到2014年AMD的Mantal,再到2016年Vulkan1.0之后其介紹了Vulkan的一些特性。
● 首先Vulkan它是一個新的API,不僅包括Graphics也包括Compute,
● 然后Vulkan它是為現(xiàn)代的GPU設(shè)計的
● 是一個跨平臺的設(shè)計
● 同時支持多種操作系統(tǒng)
那作為開發(fā)者我們?yōu)槭裁匆肰ulkan?
如果你希望你的APP是可以做Bit化的,希望你的APP能夠用到當(dāng)今多核的優(yōu)勢,希望你的APP的行為是可預(yù)測的,你應(yīng)該用Vulkan。如果你要全新開發(fā)一個游戲,在你選擇游戲引擎的時候,建議比如你要用Unity或者建議用Unity 56以后的版本,從56開始,Unity支持Vulkan。因為可能你在5.5上開發(fā)了很久,開發(fā)出來,到時候它不支持Vulkan,然后想試Vulkan版本做升級的話,大家都知道游戲引擎上做升級是非常麻煩的一個事情。你需要做很多工作,修很多Bug。Android好像是從UE 4開始支持Vulkan。所以在選擇游戲引擎的時候,你應(yīng)該先了解下這個游戲引擎是否支持Vulkan。你如果自己寫引擎呢,那你在引擎里面應(yīng)該考慮加入Vulkan的支持。
同時文艷山也建議開發(fā)者使用Vulkan里面的Pipeline cache,它可以巨大提升你Pipeline創(chuàng)建速度,并且做了詳細(xì)的介紹最后他向與會者介紹了Vulkan的memory的部分,VULKAN每個分配memory的函數(shù),你所有的Memory都可以自己分配,因為你自己擁有的分配權(quán),所以你自己就可以管理,這對于開發(fā)者來說也是極其有益的。
Qualcomm高級工程師李娟:基于驍龍Snapdragon Profiler的應(yīng)用開發(fā)性能優(yōu)化
Snapdragon Profiler的設(shè)計,設(shè)計的理念就是希望能很簡單的運用,但是有很多功能,提供同樣的界面便于用戶使用??梢苑治鯟PU上的數(shù)據(jù)、GPU上的數(shù)據(jù)和DSP上的數(shù)據(jù),可以分析VR的APP、OpenCL也支持。它具有多種功能多種模式,有實時的種模式,有trace的模式,就是靜態(tài)的一段到另外一段時間系統(tǒng)所發(fā)生的事件。有Frame Capture。主要針對圖形應(yīng)用,可以抓住這一幀所有的資源,你的API,各種draw call list怎么畫的。
進(jìn)而又在此延展進(jìn)行相關(guān)案例的介紹,包括如何去分析它們。
-Augmented Reality App Realtime
-Snapchat – Trace
-Augmented Reality App – Snapshot
-Virtual Reality App
Qualcomm資深工程師杜博:移動應(yīng)用開發(fā)優(yōu)化精髓
如何有效的進(jìn)行移動應(yīng)用開發(fā)的優(yōu)化呢?
其間他介紹到,第一個是要盡量減少我們渲染的像素,第二個我們要減少draw call的個數(shù),第三盡量的減少帶寬的使用,第四個是關(guān)于VBO使用的優(yōu)化,然后關(guān)于FOB使用的優(yōu)化,第六個就是我們要去排序的優(yōu)化,第七個是我們在shader使用過程中,我們對精度的控制,我們建議把默認(rèn)的精度方式設(shè)成中等,在需要提升的情況下,對于你的shader需求,需要提升,我們可以設(shè)置成high,但是默認(rèn)的話,我們都是中等,然后在shader運算的過程中,我們盡量減少參與運算的component的個數(shù),只要夠我們的使用情況,我們不需要把所有的component都加入運算,這也是從性能和功耗上面都有好處的。第九,如果在我們render結(jié)束了以后,像這種Depth Buffer, stencil Buffer 我們通過gllnvalidate 把它discard,這樣可以避免不必要的數(shù)據(jù)拷貝,也是從性能和功耗上面都有好處。后面有三點都是和tessellation相關(guān)的,我們在做tessellation的過程中要盡量避免對亞像素三角形的計算,因為這個對于后面光深化的模塊帶來不好的性能。然后是背面三角形的一個剔除,我們要在tessellation階段盡可能的提早的把背面的三角形這種畸形的給它終止掉。然后在tessellation過程中我們對不使用的這種狀態(tài)我們也盡量不要把它enable起來,這樣都是在性能和功耗方面得到一些改善。后面我們還有講compute shader和fragment shader的可替換性上,在我們某些應(yīng)用場景上面,如果我們可以用fragment shader,可以實現(xiàn)相同的compute shader 功能的情況下,我們建議大家就用fragment shader,這樣避免在GPU內(nèi)部狀態(tài)的一個切換。還有就是在我們的compute shader或者向open cl的刻度運行的時候,我們需要對運行的參數(shù)進(jìn)行優(yōu)化,這里面我們著重講的就是這個workgroup size。Workgroup size這個大小的變化對這種運算,像compute shader, open cl 的這種運算帶來它的性能影響特別大。最后我們會推薦大家用剛才李娟介紹的這個snapdragon profiler 對你的應(yīng)用做profile,那么可以得到你這個應(yīng)用的哪些地方的性能還不夠好,我們可以進(jìn)行進(jìn)一步的優(yōu)化。同時對這些優(yōu)化點逐一進(jìn)行展開介紹。
Qualcomm高級工程師李娟:利用驍龍Symphony優(yōu)化應(yīng)用功耗
其間她介紹到這個SDK就是幫助開發(fā)者能夠應(yīng)用SoC上的所有運算資源,包括大小核,GPU和DSP。并且它給應(yīng)用開發(fā)者提供了一些API可以控制功耗。并且指定你的任務(wù)是在哪個核上運行,在大核或者小核,或者GPU或者DSP上運行。簡而言之,它能夠幫助用戶并行地利用Soc上各個運算資源,并且提供了一套control API來控制你的功耗,已達(dá)到performance和功耗的平衡。
Symphony是什么呢?它其實是C++應(yīng)用層的一些API,它提供給用戶一個庫文件,調(diào)用庫文件的一些接口,然后編譯到你自己的程序中,就可以實現(xiàn)并行,實現(xiàn)將任務(wù)分配到你的mobile設(shè)備上,實現(xiàn)power control各個CPU或者GPU的frequency。它是在用戶層的。用戶層可以來control power,這個還是蠻powerful的一個工具。因為,多數(shù)來講,要想控制功耗,很多只能從系統(tǒng)層,這個工具在develop.qualcomm.com/ software/symphony-system-manager-sdk可以下載,里面有很詳細(xì)的use guide,還有Sample Code。
同時李娟女士又根據(jù)具體的案例進(jìn)行相關(guān)驍龍Symphony的許多優(yōu)化技巧及介紹
在這三場活動中,Qualcomm不僅為開發(fā)者帶來了真真正正的干貨分享,也帶來了精美的Dragonboard 410C開發(fā)板贈送給與會者!
移動端APP的圖形圖像開發(fā)不斷影響著,技術(shù)產(chǎn)業(yè)的革新與發(fā)展,而與此同時Qualcomm也愿與我們的開發(fā)者們,共同前行,一起創(chuàng)造美好的未來!
如您想了解更多本次公開課的細(xì)節(jié)及詳細(xì)資料請點擊這里下載,或點擊這里觀看回顧視頻。
評論