随着我们对移动设备的依赖越来越强,手机游戏、移动应用越来越多的参与到我们的日常生活中,而赋予这些产品精美的UI设计、良好的用户体验、炫酷的游戏画面以及优异的性能表现,都能够帮助开发者更好地获取用户的青睐,为此在2017年8月Qualcomm在深圳、北京、上海举行了三场“探索移动图形图像处理——Qualcomm开发者公开课”,全面向开发者介绍深层次的移动端图形图像的优化之道!

Qualcomm17090702 Qualcomm资深产品市场经理温宵凯:Qualcomm平台优势及优化工具.

会间温宵凯介绍到,Qualcomm在移动领域已经耕耘了超过三十年了,最早从modem开始,要最早先解决互联问题,随着最近智能手机发展,Qualcomm也是非常快地投入了大量的研发精力,放到多媒体处理器的研发上面,所以到现在,可以很自豪地讲,Qualcomm是在移动多媒体互联处理器里边的世界第一的半导体厂商,特别是在移动互联方面,是现在的3G、4G 的modem的领军厂商,同时也同时投入了大量的人力和物力,在进行更新的5G的连接,在wifi方面也是有非常深地积累。

同时他也介绍到骁龙835处理器是全世界第一颗基于10纳米芯片制造技术所制造的半导体芯片,所以你会看到它的尺寸变得非常非常的小,旁边是一颗我们中国的一元人民币的硬币,所以在这样一个非常小的面积内,它事实上集成了大量的多媒体和modem的处理器件,这个是传统领域完全想象不到的,同时包括小米的米6,还有中兴的nubia Z17,还有像一加的一加5,和HTC的U11,这些优秀的产品都是用了基于Qualcomm的骁龙835芯片,另外它也被用到了像ODG R8这样的一款AR眼镜里面。他同时向在场的开发者介绍了骁龙835处理器的相关技术参数及优势。

笔者了解到,基于Snapdragon 835处理器是专为移动游戏设计的一款处理器。

具体参数如下:

●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制程

Qualcomm17090703

同时Adreno540比上一代产品提升了25%图形性能,同时支持10bit色,它能够支持64倍于之前的8bit色的色彩。另外Qualcomm在生态建设方面也是投入了巨大的精力,所以我们跟很多行业界的重点的公司,像重点的引擎提供商,像Unity和ePeak都有非常紧密的合作,来保证它的兼容性,和它最新的特效能够最早地部署在这样的高端手机上.

Qualcomm17090704

Qualcomm17090705 Qualcomm高级工程师李彩琴:移动平台图形技术进化史

首先她展示了一张在Mobile上渲染的一张特别真实的图片,同时介绍了渲染出如此逼真图片所需要的特效。以及在OpenGL的API上的技术及渲染过程。不论从模拟几何角度、纹理坐标、法向量、颜色,还是到GPU中处理、定义视景体,甚至fragment shader对于像素的处理的过程都做了详细的介绍。

Qualcomm17090706

其次她介绍到Qualcomm有基于tile的一个rendering的方案,因为考虑到mobile上面,它的带宽是有限的,而且它是需要考虑到功耗的,不像电脑上面它有带宽很够用,然后它的功耗也是,它插电源,不需要考虑功耗的问题。在mobile上的话Qualcomm就需要在这两方面来考虑一个很好的方案,来实现又有高性能然后又可以尽量少耗功耗的一个效果.

最后她与会者现场介绍了一些实际的案例。详细介绍了Qualcomm图形图像处理中更多的使用GPU来进行操作,进而减少CPU的工作量同时在节约用电的同时给大家带来更好的图形图像体验。

Qualcomm17090707 Qualcomm高级资深工程师经理文艳山:次世代图形图像API

首先他介绍了Vulkan的发展史,从2012年的GLcomment,再到2014年AMD的Mantal,再到2016年Vulkan1.0 之后其介绍了Vulkan的一些特性。

●首先Vulkan它是一个新的API,不仅包括Graphics也包括Compute,
●然后Vulkan它是为现代的GPU设计的
● 是一个跨平台的设计
●同时支持多种操作系统

Qualcomm17090708

那作为开发者我们为什么要用Vulkan?

如果你希望你的APP是可以做Bit化的,希望你的APP能够用到当今多核的优势,希望你的APP的行为是可预测的,你应该用Vulkan。如果你要全新开发一个游戏,在你选择游戏引擎的时候,建议比如你要用Unity或者建议用Unity 5\6以后的版本,从5\6开始,Unity支持Vulkan。因为可能你在5.5上开发了很久,开发出来,到时候它不支持Vulkan,然后想试Vulkan版本做升级的话,大家都知道游戏引擎上做升级是非常麻烦的一个事情。你需要做很多工作,修很多Bug。Android好像是从UE 4开始支持Vulkan。所以在选择游戏引擎的时候,你应该先了解下这个游戏引擎是否支持Vulkan。你如果自己写引擎呢,那你在引擎里面应该考虑加入Vulkan的支持。

同时文艳山也建议开发者使用Vulkan里面的Pipeline cache,它可以巨大提升你Pipeline创建速度,并且做了详细的介绍 最后他向与会者介绍了Vulkan的memory的部分,VULKAN每个分配memory的函数,你所有的Memory都可以自己分配,因为你自己拥有的分配权,所以你自己就可以管理,这对于开发者来说也是极其有益的。

Qualcomm17090709

Qualcomm17090710 Qualcomm高级工程师李娟:基于骁龙Snapdragon Profiler的应用开发性能优化

Snapdragon Profiler的设计,设计的理念就是希望能很简单的运用,但是有很多功能,提供同样的界面便于用户使用。可以分析CPU上的数据、GPU上的数据和DSP上的数据,可以分析VR的APP、OpenCL也支持。它具有多种功能多种模式,有实时的种模式,有trace的模式,就是静态的一段到另外一段时间系统所发生的事件。有Frame Capture。主要针对图形应用,可以抓住这一帧所有的资源,你的API,各种draw call list怎么画的。

Qualcomm17090711

进而又在此延展进行相关案例的介绍,包括如何去分析它们。

-Augmented Reality App Realtime
-Snapchat – Trace
-Augmented Reality App – Snapshot
-Virtual Reality App

Qualcomm17090712

Qualcomm17090713 Qualcomm资深工程师杜博:移动应用开发优化精髓

如何有效的进行移动应用开发的优化呢?

其间他介绍到,第一个是要尽量减少我们渲染的像素,第二个我们要减少draw call的个数,第三尽量的减少带宽的使用,第四个是关于VBO使用的优化,然后关于FOB使用的优化,第六个就是我们要去排序的优化,第七个是我们在shader使用过程中,我们对精度的控制,我们建议把默认的精度方式设成中等,在需要提升的情况下,对于你的shader需求,需要提升,我们可以设置成high,但是默认的话,我们都是中等,然后在shader运算的过程中,我们尽量减少参与运算的component的个数,只要够我们的使用情况,我们不需要把所有的component都加入运算,这也是从性能和功耗上面都有好处的。第九,如果在我们render结束了以后,像这种Depth Buffer, stencil Buffer 我们通过gllnvalidate 把它discard,这样可以避免不必要的数据拷贝,也是从性能和功耗上面都有好处。后面有三点都是和tessellation相关的,我们在做tessellation的过程中要尽量避免对亚像素三角形的计算,因为这个对于后面光深化的模块带来不好的性能。然后是背面三角形的一个剔除,我们要在tessellation阶段尽可能的提早的把背面的三角形这种畸形的给它终止掉。然后在tessellation过程中我们对不使用的这种状态我们也尽量不要把它enable起来,这样都是在性能和功耗方面得到一些改善。后面我们还有讲compute shader和fragment shader的可替换性上,在我们某些应用场景上面,如果我们可以用fragment shader,可以实现相同的compute shader 功能的情况下,我们建议大家就用fragment shader,这样避免在GPU内部状态的一个切换。还有就是在我们的compute shader或者向open cl的刻度运行的时候,我们需要对运行的参数进行优化,这里面我们着重讲的就是这个workgroup size。Workgroup size这个大小的变化对这种运算,像compute shader, open cl 的这种运算带来它的性能影响特别大。最后我们会推荐大家用刚才李娟介绍的这个snapdragon profiler 对你的应用做profile,那么可以得到你这个应用的哪些地方的性能还不够好,我们可以进行进一步的优化。同时对这些优化点逐一进行展开介绍。

Qualcomm17090714

Qualcomm17090715 Qualcomm高级工程师李娟:利用骁龙Symphony优化应用功耗

其间她介绍到这个SDK就是帮助开发者能够应用SoC上的所有运算资源,包括大小核,GPU和DSP。并且它给应用开发者提供了一些API可以控制功耗。并且指定你的任务是在哪个核上运行,在大核或者小核,或者GPU或者DSP上运行。简而言之,它能够帮助用户并行地利用Soc上各个运算资源,并且提供了一套control API来控制你的功耗,已达到performance和功耗的平衡。

Qualcomm17090716

Symphony是什么呢?它其实是C++应用层的一些API,它提供给用户一个库文件,调用库文件的一些接口,然后编译到你自己的程序中,就可以实现并行,实现将任务分配到你的mobile设备上,实现power control各个CPU或者GPU的frequency。它是在用户层的。用户层可以来control power,这个还是蛮powerful的一个工具。因为,多数来讲,要想控制功耗,很多只能从系统层,这个工具在develop.qualcomm.com/ software/symphony-system-manager-sdk可以下载,里面有很详细的use guide,还有Sample Code。

Qualcomm17090717

同时李娟女士又根据具体的案例进行相关骁龙Symphony的许多优化技巧及介绍。

Qualcomm17090718 在这三场活动中,Qualcomm不仅为开发者带来了真真正正的干货分享,也带来了精美的Dragonboard 410C开发板赠送给与会者!

移动端APP的图形图像开发不断影响着,技术产业的革新与发展,而与此同时Qualcomm也愿与我们的开发者们,共同前行,一起创造美好的未来!