4.1 APP跟SurfaceFlinger之间的重要数据结构 一个应用程序有一个或者多个surface(一般只有一个),一个surface有一个或者多个buffer,这些buffer需要应用向surfaceflinger申请: 在surfaceflinger中用client表示每一个应用程序,client中用layer结构来表示应用程序的surfaceControl layer中含有mProducer生产者和mSurfaceFlingerCinsumer消费者,生产者和消费者有同一个mCore…
1. Android显示系统框架Android Graphic UI with GPU Hardware Accelerationhttps://community.nxp.com/docs/DOC-93612 a. 显示驱动framebuffer的原理及改进 只有一个FrameBuffer的缺点: (1)如果App写入FB的速度慢,LCD图像变化慢 (2)如果App写FB速度不快不慢,LCD图像会闪烁 因此,在仅使用一个FB的基础上做出改进,使用多个FB来改进: (1)DisplayContr…
5. Vsync机制5.1 黄油计划_三个方法改进显示系统vsync, triple buffering, vsync虚拟化 参考文档:林学森 <深入理解Android内核设计思想>第2版 9.6节 Getting To Know Android 4.1, Part 3: Project Butter - How It Works And What It Addedhttp://www.androidpolice.com/2012/07/12/getting-to-know-android-4…
5.5 surfaceflinger对vsync的处理buffer状态图画得不错:http://ju.outofmemory.cn/entry/146313 android设备可能连有多个显示器,APP也有多个surface对应各个layer 显示器可能断开或者连接,layer可能内容更新.属性变化等,因此我们的SurfaceFlinger应该能处理各种各样的情况 SurfaceFlinger.h中有个结构体State及两个该结构体变量mDrawingState(正在使用或者上次使用的状态),m…
2. 修改tiny4412_Android源码禁用hwc和gpu(厂家不会提供hwc和gpu的源代码,没有源代码就没法分析了,因此在这里禁用该功能并用软件库实现)最终源码: git clone https://github.com/weidongshan/SYS_0003_Patch_Disable_HWC_GPU_tiny4412.git 或 git clone https://git.coding.net/weidongshan/SYS_0003_Patch_Disable_HWC_GPU.…
APP有一个surface(界面),其有多个buffer用来存放界面数据,这些buffer是向surfaceflinger申请的: 因此我们编写的surface测试程序步骤: (1)获得surfaceflinger服务 (2)创建surface (3)得到buffer (4)写buffer (5)提交buffer 参考源码:frameworks/native/services/surfaceflinger/tests/resize…
一.OpenGL ES与EGL Android的GUI系统是基于OpenGL/EGL来实现的. 由于OpenGL是通用函数库,在不同平台系统上需要被“本土化”——把它与具体平台的窗口系统建立起关联,FramebufferNativeWindow是负责OpenGL ES在Android平台上本地化的中介之一.为OpenGL ES配置本地窗口的是EGL,EGL介于本地窗口系统和Rendering API(即OPenGL ES)之间的一层接口. 与OpenGL相关的模块可分为: (1)配置类. 帮助O…
注释:这是19年初的博客,写得很一般,理解不到位也不全面.19年末得空时又重新看了RTThread的SPI和GPIO,这次理解得比较深刻.有时间时再整理上传. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------…
一.Android系统启动 Android设备从按下开机键到桌面显示画面,大致过程如下图流程: 开机显示桌面.从桌面点击 App 图标到 Activity显示在屏幕上的过程又是怎样的呢?下面介绍Android系统中的“画家” - SurfaceFlinger. SurfaceFlinger 启动过程:  二.SurfaceFlinger代码剖析[Android 8.0] 代码路径:/frameworks/native/services/surfaceflinger/ SurfaceFlinger…
2015-11-09补充:Drawable Animation极有可能是Frame Animation 这几天在找工作,面试的时候被问到了Android动画,之前完全没接触过这部分,直接给懵了,当然其它不会的还有很多.回来之后就开始查Android动画方面的资料,边查边学,把自己不会的东西全部记录下来,同时也把废弃了半年的博客重新维护起来.希望自己以后看问题能更深入一点,努力成为一个大牛! 尽量拒绝三手技术!尽量拒绝三手技术!尽量拒绝三手技术!重要的事情说三遍~所以我不百度了~ 在Android…