
android-graphic
lyf5231
Work with all of you to build the world we want!
展开
-
android graphic(1)—轮廓
典型图形显示过程 如何去render Canvas OpenGL ES hardware-accelerated Canvas android的封装 如何去合成 Hardware Composer android中的graphic系统是个相当庞大复杂的系统,在学习前首先心中对整个系统得有一个大概的轮廓,然后再阅读代码时就能对应轮廓的各个方面。 典型图形显示过程原创 2016-01-15 23:54:02 · 8917 阅读 · 3 评论 -
android graphic(9)—开发者选项关闭HW overlays
setting相关代码 surface flinger处理1008 code 在开发者选项中,有许多关于图形的debug选项,今天研究之下,加深了对binder的使用。下面以关闭HW oveylays为例,也就是强制使用GLES去对图层进行合成,而不使用oveylays。 setting相关代码 首先分析上层setting中的代码,在packages\apps\Settings\src\com\原创 2016-02-22 17:18:07 · 6600 阅读 · 0 评论 -
android graphic(11)—底层初始化displays
初始化HWC surfaceflinger 初始化displays 这里的底层不牵扯内核以下的分析,主要是内核亮屏后,HAL层以上各层是如何联系起来的,通过层层转交,将displays的信息从内核填充到上层。这里主要涉及framework中的HWComposer,surfaceflinger,HAL层的Hwcomposer,为了便于区分,framework层记为HWC,HAL层记为Hwc,HWC原创 2016-03-08 10:01:23 · 3709 阅读 · 0 评论 -
android graphic(20)—java层OpenGL相关类
package androidopengl javaxmicroeditionkhronosopengles JNI调用关系 在http://blog.youkuaiyun.com/lewif/article/details/50946236中已经介绍了如何加载EGL和OpenGL具体软硬件实现,其中system\lib\libEGL.so是加载具体实现的桥梁。下面分析java层的OpenGL相关类是如原创 2016-04-01 12:49:51 · 1780 阅读 · 2 评论 -
android graphic(12)—display上层相关概念、关系
涉及的java类DisplayManagerServiceDisplayAdapterDisplayDeviceDisplayManagerGlobalDisplayManagerLogicalDisplayDisplayDisplayContentDisplayInfo类之间的关系默认屏幕的上层初始化分析涉及的java类DisplayManagerServiceManages原创 2016-03-09 16:00:11 · 13065 阅读 · 0 评论 -
android graphic(10)—activity申请surface流程
create new ActivitynewActivitysetContentViewhandleResumeActivityandroid中启动一个Activity的函数为handleLaunchActivity(), private void handleLaunchActivity(ActivityClientRecord r, Intent customIntent) { /原创 2016-02-26 17:07:51 · 3541 阅读 · 0 评论 -
android graphic(13)—surface flinger中的“事务”
surfaceflinger中的事务flags设置和处理flags创建layer时设置flagsurfaceflinger中的事务flagssurfacefligner中所涉及事务的flag包括下面几种,enum { //需要处理事务 eTransactionNeeded = 0x01, //需要遍历 eTraversalNeeded原创 2016-03-14 14:53:58 · 2635 阅读 · 0 评论 -
android graphic(2)—EGL和OpenGL ES
Android的本地窗口 FramebufferNativeWindow Surface 前面提到android EGL库的主要作用就是将OpenGL ES和本地窗口系统结合起来。OpenGL ES就像是一个打印机,各个厂商打印机的内部实现不同(不同的OpenGL ES的实现,软件、硬件等,实现的库由EGL加载),但是只要打印的文档内容相同,按下打印键,其输出的结果都是相同的。当然打印机可以原创 2016-01-17 15:32:46 · 7809 阅读 · 0 评论 -
android graphic(21)—view tree的创建过程
view tree view tree的构成 view tree 下面这幅图是非常经典的view tree视图,其中叶子节点都是一个个实际的View,而ViewGroup作为View的容器,用来填充ViewGroup或者叶子节点View。其中,各元素之间都有父子关系,这个父子关系在tree“遍历”的时候非常重要,从子到父,直到根节点(ViewRootImpl的performTraversals原创 2016-04-08 14:31:14 · 1588 阅读 · 0 评论 -
android graphic(15)—fence
fence的使用 fence的作用 软件实现的opengl 硬件实现的opengl 上层canvas绘图 关于fence,不错的参考文章http://blog.youkuaiyun.com/jinzhuojun/article/details/39698317。但是和我理解的还是有些出入,本文结合代码分析下自己理解的fence的产生和传递。 fence的使用 一般f原创 2016-03-28 22:36:52 · 10527 阅读 · 2 评论 -
android graphic(8)—surface申请GraphicBuffer过程
surface的dequeueBuffer函数 向BufferQueue申请内存 Surface去requestBuffer 本节分析surface向Buffer Queue申请GraphicBuffer的过程(这里的surface是native的surface,不是java中的),在此过程中还会涉及Flattenable对对象序列化,binder传递文件描述符等概念。surface的deque原创 2016-02-22 12:31:01 · 11361 阅读 · 1 评论 -
android graphic(19)—why Android's UI was designed the way it is and how it actually works
作者是google的framework工程师Dianne Hackborn。A few days ago I wrote a post trying to correct a lot of the inaccurate statements I have seen repeatedly mentioned about how graphics on Android works. This resul转载 2016-03-30 10:41:54 · 10760 阅读 · 0 评论 -
android graphic(3)—surfaceflinger的启动流程
如何启动 执行流程 new SurfaceFlinger init函数 run函数 给SF发消息 SF处理消息 这篇文章只分析SF消息驱动流程的建立,不涉及具体的功能实现,关于SF和HWC如何交互后续分析,基于android 4.4,以下将surfaceflinger简称为SF。 如何启动 android 4.4中SF在init.rc中启动,如下所示:service sur原创 2016-01-22 10:44:25 · 3754 阅读 · 0 评论 -
android graphic(4)—surfaceflinger和Vsync
android44中的实现 整体流程 HWComposer对象的建立 EventControlThread闸刀的建立 DispSync和DispSyncThread DispSyncSource和EventThread 完整走一遍 android 4.1一个很大的更新是Project Butter,黄油计划,为了解决用户交互体验差的问题(Jelly Bean is crazy原创 2016-01-24 17:40:15 · 5000 阅读 · 1 评论 -
android graphic(5)—surfaceflinger和Vsync (简化)
surfaceflinger中类的关系 HWC驱动DispSync 上一节分析了Vsync的多个类之间的关系,感觉非常不清晰,特地画了一张图,感觉清晰了很多。(黄色的方框是类名,绿色方框为field,联系用虚线箭头表示,如果不同线条之间有重叠,用了不同的颜色) surfaceflinger中类的关系 下面照着这张图,梳理下android 4.4 SF中Vsync相关类之间的联系,surfacefl原创 2016-01-25 17:12:10 · 3035 阅读 · 2 评论 -
android graphic(6)—surfaceflinger和MessageQueue
MessageQueue等待消息 epoll监听fd pipe fd导致epoll_wait返回 BitTube fd导致epoll_wait返回MessageQueue(简称为MQ)是surfaceflinger(简称为SF)主线程中消息处理的“管家”,所有子线程要和主线程打交道都需要通过MQ,例如发送消息,发送Vsync信号等,这里主要分析MQ具体的实现流程。 下面这幅图是MQ处理消原创 2016-01-26 12:48:23 · 2972 阅读 · 0 评论 -
android graphic(16)—fence(简化)
上层绘图 下层合成 前面一篇文章以代码分析了fence的产生和传递过程,这里将过程简化为上层和下层两幅图。其中图中橘黄色的fence为release fence,而绿色的fence为acquire fence。 上层绘图 a, Surface dequeue buffer,Buffer Queue传递给Surface一个release fence,然后wait等待这个release fence触原创 2016-03-29 16:58:22 · 7268 阅读 · 0 评论 -
android graphic(14)—EGL和OpenGL ES之间的关系
OpenGL ES EGL 例子 EGL加载OpenGL ES库 涉及的库 库的加载 小结 OpenGL ES 什么是OpenGL?Open Graphics Library (OpenGL) is a cross-language, cross-platform application programming interface (API) for rende原创 2016-03-25 16:23:52 · 24480 阅读 · 1 评论 -
android graphic(17)—Using direct textures on Android
参考文章需翻墙。I’ve been working at Mozilla on Firefox Mobile for a few months now. One of the goals of the new native UI is to have liquid smooth scrolling and panning at all times. Unsurprisingly, we do thi转载 2016-03-30 10:19:44 · 1506 阅读 · 0 评论 -
android graphic(18)—How about some Android graphics true facts?
作者是google的framework工程师Dianne Hackborn。How about some Android graphics true facts?(Edit: there have been a number of comments treating this as being written as an excuse for Android or not mattering to转载 2016-03-30 10:35:58 · 1024 阅读 · 0 评论 -
android graphic(7)—gralloc分配图形缓冲区
android中,HAL层的gralloc库负责了申请图形缓冲区的所有工作,HAL层之上的Surface、BufferQueue最终都是调用gralloc库去申请图形缓冲区,然后返回给上层一个buffer_handle_t的handle,这个handle的结构大致如下所示,typedef struct native_handle{ int version; /* sizeof原创 2016-02-20 11:02:48 · 4944 阅读 · 2 评论 -
android graphic(22)—android M 分屏功能开关
关于android中的分屏功能(就是在单一屏幕上同时允许2个app的UI界面存在,可同时操作),在M上其实代码已经有了,估计有些功能还不是很完善,到N上才会正式发布。在android M上,分屏功能是通过属性persist.sys.debug.multi_window控制,true为打开。 /** Updates the states that need to be re-read whene原创 2016-05-25 11:25:52 · 1933 阅读 · 0 评论