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