- 博客(13)
- 资源 (7)
- 收藏
- 关注
原创 HAL层保存Layer数据
HAL层增加每个layer的dump数据保存在文件中//dump layer but need selinux permission: surfaceflinger default no permission to writestatic void dump_layer_list( malidp_hwc_device_t* dev, hwc_display_contents_1_t * H
2016-10-31 09:14:48 1793 1
原创 Android6.0 开机动画(二) AMS通知系统启动&WMS通知SurfaceFlinger关闭开机动画
在http://blog.csdn.net/kc58236582/article/details/52794846博客中我们已经讲了开机动画的大致流程,这里我们就Launcher启动后,Launcher的线程闲的时候在ActivityThread调用AMS的activityIdle方法。在分析消息机制 空闲消息处理器中http://blog.csdn.net/kc58236582/ar
2016-10-25 14:53:13 3716
原创 Android消息机制 空闲消息处理器
之前我们分析过Android的消息机制,但是有一个空闲消息处理器我们没有分析过,这篇博客我们来看下。一、MessageQueue空闲处理器之前在分析MessageQueue的next函数,这个函数就是获取队列的下个Message,我们再来看下。 Message next() { // Return here if the message loop has
2016-10-25 11:41:34 2222
原创 Android6.0 VSync信号如何到用户进程
在http://blog.csdn.net/kc58236582/article/details/52763534博客的VSync信号的分发过程那节中我们已经详细分析了VSync信号的分发过程,其中EventThread主要就是发送VSync信号。一、DisplayEventReceiver.java这里我们先从DisplayEventReceiver这个java类来分析:我们
2016-10-22 15:36:49 4752
转载 OpenGL ES入门
转载地址:http://blog.csdn.net/mkhgg/article/details/6738912一、前言OpenGL ES是Khronos Group创建的一系列API中的一种(官方组织是:http://www.khronos.org/)。在桌面计算机上有两套标准的3DAPI:Direct3D和OpenGL。Direct3D实际上是运行在windows操作系统上的标准
2016-10-21 15:40:42 1065
原创 Android 用户进程软件绘制过程
之前在这篇博客中http://blog.csdn.net/kc58236582/article/details/52437855我们分析过应用在ViewRootImpl的drawSoftware函数中完成绘制下面我们来看下这个函数,它先调用了Surface的lockCanvas获取一个Canvas,然后再调用surface.unlockCanvasAndPost来表示绘制结束。 pr
2016-10-21 11:07:33 3915 1
原创 Android6.0 图像合成过程详解(二) doComposition函数
上篇博客分析到setUpHWComposer函数,这里我们继续分析图像合成的过程从doComposition函数开始,以及在这过程中解答一些上篇博客提出的疑问。一、doComposition合成图层doComposition这个函数就是合成所有层的图像void SurfaceFlinger::doComposition() { ATRACE_CALL(); co
2016-10-20 11:17:07 7467 1
原创 Android6.0 图像合成过程详解(一) setUpHWComposer函数
上一篇博客分析了,用户进程如何申请一个GraphicBuffer的过程。这篇博客我们进一步分析图像合成过程,其中也解答之前的一些疑惑:1. 之前碰到的不支持硬件模块2. DisplayDevice类3. 消费者的onFrameAvailable函数我们直接分析合成的过程,具体的流程我们http://blog.csdn.net/kc58236582/article/details/5
2016-10-19 18:35:36 9544 1
原创 Android6.0 显示系统GraphicBuffer分配内存
之前分析了显示系统的大致流程,其中有几个地方不是很清楚,这里我专门写几篇专题。这篇先来看GraphicBuffer分配内存,我们在之前的博客中分析到用户进程创建一个Surface,最后返回的参数gbp是sp类型的,过程之前都分析过了,我们就不分析了,这个gbp是在Layer的onFirstRef中创建的。在BufferQueue的createBufferQueue中创建了producer和
2016-10-17 16:18:52 5760
原创 Android HAL层分析 (gralloc显示模块 举例)
Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开linux的GPL束缚。思路是把控制硬件的动作都放到了Android HAL中,而linux driver仅仅完成一些简单的数据交互作用,甚至把硬件寄存器空间直接映射到user space。而Android是基于Aparch的license,因此硬件厂商可以只提供二进制代码,所以说Android只是一个开放的平台,
2016-10-12 17:12:44 5425 1
原创 Android6.0 开机动画(一) bootanim启动
开机动画是在进程bootanim,我们来看下init.rc中文件,service bootanim /system/bin/bootanimation boot class core user graphics group graphics audio disabled oneshot 应用程序bootanimation的用户和用户组名称分别被设置为
2016-10-12 11:02:48 7121 3
原创 Android6.0 显示系统(六) 图像的输出过程
上篇博客分析到SurfaceFlinger收到了VSync信号后,调用了handleMessageRefresh函数,这篇博客主要就是分析这个函数,我们先看看它的代码:void SurfaceFlinger::handleMessageRefresh() { ATRACE_CALL(); static nsecs_t previousExpectedPresent = 0;
2016-10-11 16:23:19 12854 7
原创 Android6.0 显示系统(五) SurfaceFlinger服务
SurfaceFlinger是一个独立的进程,我们来看下init.rc关于SurfaceFlinger的代码,我们可以看到SurfaceFlinger是属于core服务的。service surfaceflinger /system/bin/surfaceflinger class core user system group graphics drmrpc o
2016-10-10 10:57:06 19392
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人