Category Archives: Android

Android中的EGL扩展

Google在Android中对egl做了一些扩展,让整个显示渲染的软件体系运行地更加有效率。在我们分析,修改SurfaceFlinger代码的过程中,经常可以看到这些egl扩展相关的代码,比如android native fence, KHR image等等。虽然跳过这些内容对理解SurfaceFlinger本身影响并不大,但是在阅读代码时,每次看到这些”小石头”,心理总不很舒服。因此,稍微花了一些时间,找了一些KHRONOS的文档,结合SurfaceFlinger源代码,大致对这些EGL扩展做了一点点基本的了解。 Continue reading Android中的EGL扩展

通过打印DisplayList调试graphics性能

在调试graphic,尤其是动画的性能问题时,我们通常采用traceview或者systrace进行分析。这两个工具各自有适合的问题类型:

如果是程序逻辑导致graphics缓慢,比如缓慢的数据库访问,进程间通讯等等的,那么traceview+dmtracedump是最有效的。
如果是由于绘画本身导致动画缓慢,那么问题就复杂一些了,原因可能是各式各样的:
Continue reading 通过打印DisplayList调试graphics性能

Android 高性能图形处理 之 一. RenderScript

前几天收到产品经理的一个新需求,要求在下一代的8核CPU的产品上实现 照相机的实时滤镜效果。且必须 8个(或以上)滤镜同时显示。

拿到需求,首先参考了下竞品以及主流的照相/图片处理应用,发现大部分的应用都是采取静态的图片处理,即拍完照之后再进行处理,比如meitu, camera 360(v4.6)等等 Continue reading Android 高性能图形处理 之 一. RenderScript

使用traceview+dmtracedump快速定位性能问题

今天和同事调试一个Gallery的动画性能问题。一上来还是老套路,上systrace。可是systrace并没有提供足够多的信息,只能看到从dispatchInputEvent()到最后的draw()花去了几百毫秒。于是改用traceview,意外地发现android sdk中自带了一个名叫dmtracedump的工具,配合traceview一起使用,功能强大且使用方便,可以帮助迅速地定位性能问题。 Continue reading 使用traceview+dmtracedump快速定位性能问题