sunwengang blog

developer | android display/graphics

标签 : graphics

Android R Vsync相关梳理

为了理解systrace中HW Vsync, sf vsync, app vsync的含义和作用。这里主要参照Android R AOSP源码对这几种VSYNC的关系和调用流程进行大致的梳理。 阅读全文

Android Q SurfaceFlinger合成(二)

继上篇《Android Q SurfaceFlinger合成(一)》中SF对INVALIDATE信息处理,针对Layer属性变化、显示设备变化等情况处理,将mCurrentState提交到mDrawingState。然后遍历mDrawingState的Layer,将新的Buffer内容更新绑定到Layer纹理对象。经过这些流程,决定是否需要SF进行合成刷新,如果需要则调用handleMessageRefresh开始合成处理。 阅读全文

Android Q SurfaceFlinger合成(一)

在HWUI渲染完成后,Buffer会在frameworks/native/libs/gui/BufferQueueProducer.cpp中通过queueBuffer放入BufferQueue,在该函数中调用frameAvailableListener->onFrameAvailable(item)通知consumer消费者,从而触发SurfaceFlinger合成。 阅读全文

Android ANR基本Log分析

ANR(Application Not Responding),字面意思是应用无响应,即用户的一些操作无法从应用中获取反馈。关于发生ANR的trace.txt文件的请参考Android ANR traces.txt文件分析 阅读全文

Android 图形显示框架

本篇对Android图形显示框架做一个概述,内容主要包含:SurfaceSession创建和销毁(添加/删除窗口),Surface创建和销毁,BufferQueue创建,以及BufferQueue的dequeueBuffer和queueBuffer、acquire和release大致流程梳理。 阅读全文

Android HWUI绘制流程

Android中绘图的API有很多,比如2D的绘图skia;3D的绘图OpenGLES,Vulkan等。Android在后来完善3D API支持的同时,也在更新View Widget渲染机制,提出了硬件加速机制。 阅读全文

Android HWC2硬件合成

转载夕月风大佬博客: https://www.jianshu.com/p/824a9ddf68b9参考Android P AOSP源码添加修改部分内容参考源码: http://aosp.opersys.com/xref/android-10.0.0_r14/ 阅读全文

Android Systrace如何抓取分析问题

UI流畅平滑的systraceSystrace获取:Android\Sdk\platform-tools\systrace systrace.py:python systrace.py --time=10 -o trace.html gfx input view webview wm am sm audio video hal res dalvik bionic power pm ss pdx sched freq idle load binder_driver binder_lock 默认Tag with: sched freq idle res ss gfx input view am 阅读全文

Android Binder实例

Binder通信是Android用的比较多的一种通信机制,它是一种client-server的通信结构。Binder通信具有以下特点: 用驱动程序来推进进程间的通信; 可以通过共享内存的方式来提供性能; 可以为进程请求分配每个进程的线程池; 针对系统中的对象引入了引用计数和跨进程的对象引用映射; 可以方便的进行进程同步调用。 阅读全文

Android WMS和View基本理解

概述 Window 可以看做是Surface的一个包装,本质上,Window的本体就是一片Surface。将操作对象Surface,对象关联属性集以及操作方法等组合在一起便是 Window。Surface 其实是一块画布,应用可以随心所欲地通过 Canvas 或者 OpenGL 在其上作画,然后通过 SurfaceFlinger 将多块 Surface 的内容按照特定的顺序(ZOrder)进行混合并输出到 FrameBuffer,从而将 Android 漂亮的脸蛋显示给用户。既然每个窗口都有一块 Surface 供自己涂鸦,所以必然需要一个角色对所有窗口的 Surface 进行协调管理。于是,WMS 应运而生。 代码: http://aosp.opersys.com/xref/android-10.0.0_r2/xref/frameworks/base/core/java/android/view/ 阅读全文