
Graphics
文章平均质量分 73
颇锐克
Graphics, GPU, device driver,Android Framwork
展开
-
android 中Bn 和Bp的区别
最近在研究surfaceflinger,真心被里面的类名折腾惨了。 Bn n 就是native,这是一个怎样的类? 我们继承它的原因是为了实现一个接口,具体点说就是一个BnXXX对应一个IXXX。比如BnSurfaceComposer 对应 ISurfaceComposer I 其实就是interface(接口)的意思。 class SurfaceFl转载 2015-10-16 13:57:43 · 931 阅读 · 0 评论 -
Android Graphics Pipeline: From Button to Framebuffer (Part 1)
In this mini-series of blog articles we want to shed some light on the internals of the Android Graphics Pipeline. Google itself already released some insights and documentation on the subject such as转载 2015-11-04 20:14:05 · 1325 阅读 · 0 评论 -
hwcomposer __hwc_layer_1
compositionType is used to specifythis layer's type and is set by eitherthe hardware composerimplementation, or by the caller (see below).合成类型用来确定layer的类型,在(*prepare)()调用前,需要复位HWC_BACK原创 2015-11-06 20:28:04 · 2695 阅读 · 0 评论 -
hwc_procs_t,hwc_display_contents_1_t 理解
typedef void*hwc_display_t;//代表一个显示,尤其是EGLDisplay对象,typedef void*hwc_surface_t;//代表一个surface,典型是一个EGLSurface对象* hwc_display_contents_1_t::flagsvalues*/enum {/** HWC_GEOMETRY_CHANGED is原创 2015-11-07 21:45:16 · 1261 阅读 · 0 评论 -
Android Graphics Pipeline: From Button to Framebuffer (Part 2)
Android Graphics Pipeline: From Button to Framebuffer (Part 2)Gepostet am 30. März 2015 |Mathias Garbe Last time, we took a thorough look at how Android converts the Java-SideonDraw() me转载 2015-11-06 20:33:04 · 1102 阅读 · 0 评论 -
[译]Android图形系统 II 图形架构
首 页阅览室馆友我的图书馆登录注册[译]Android图形系统 II 图形架构 收藏人:老匹夫 2015-06-30 | 阅: 转:转载 2015-11-09 09:44:22 · 2297 阅读 · 1 评论 -
hwc virtual display
buffer_handle_t outbuf; //outbuf是一个为虚拟显示接收合成图像的buffer,在向outbuf写东西的时候,必须等到outbufAcquireFenceFd信号。一个fence会发出信号当向outbuf写操作完成的时候,retireFenceFd有返回值。此部分是在prepare()前设置,因此此buffer的属性可以用来确定哪一个layers可以被h/wco原创 2015-11-09 10:16:07 · 1693 阅读 · 0 评论 -
hwc_composer_device_1
hwc_composer_device_1struct hw_device_t common; //hardware composer device通用方法,其必须为hwc_composer_device_1的第一个成员,用此结构体的使用者需要将hw_device_t投射到上下文的hwc_composer_device_1指针。int (*prepare)(structhwc_co原创 2015-11-09 19:32:16 · 1520 阅读 · 0 评论 -
Android - Binder机制
Android - Binder机制 学习要点 :1. Android - Binder机制 - ServiceManager2. Android - Binder机制 - 普通service注册3. Android - Binder机制 - 获得普通service4. Android - Binder机制 - client和普通service交互5. Android - B原创 2015-10-11 15:28:12 · 434 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的连接过程分析
前文在描述Android应用程序和SurfaceFlinger服务的关系时提到,每一个有UI的Android应用程序都需要与SurfaceFlinger服务建立一个连接,以便可以通过这个连接来请求SurfaceFlinger服务为它创建和渲染Surface。在本文中,我们将以Android系统的开机动画应用程序为例,详细描述Android应用程序是如何与SurfaceFlinger服务建立连接的。转载 2015-10-12 08:58:45 · 549 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的关系概述和学习计划
SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件容易的事。既然不能从正面分析,我们就想办法从侧面分析。说到底,无论SurfaceFlinger服务有多复杂,它都是为Android应用程序服务的,因此,我们就从Android应用程序与SurfaceFlinger服务的关系入手,来概述和制定SurfaceFlinger服务的学习计划。转载 2015-10-12 14:59:03 · 541 阅读 · 0 评论 -
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
前面在介绍Android系统的开机画面时提到,Android设备的显示屏被抽象为一个帧缓冲区,而Android系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的。Android系统在硬件抽象层中提供了一个Gralloc模块,封装了对帧缓冲区的所有访问操作。本文将详细分析Gralloc模块的实现,为后续分析SurfaceFlinger服务的实现打下基础。转载 2015-10-12 15:02:22 · 1034 阅读 · 0 评论 -
Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
前面我们已经学习过Android应用程序与SurfaceFlinger服务的连接过程了。连接上SurfaceFlinger服务之后,Android应用程序就可以请求SurfaceFlinger服务创建Surface。而当有了Surface后,Android应用程序就可以用来渲染自己的UI了。在本文中,我们将详细分析Android应用程序请求SurfaceFlinger服务创建Surface的过程。转载 2015-10-13 14:56:29 · 673 阅读 · 0 评论 -
GUI显示系统之SurfaceFlinger
转载自http://blog.youkuaiyun.com/uiop78uiop78/article/details/8954508介绍了Surface, SurfaceTexture, BufferQueue, VSYNC generation, Render等内容。后面的几篇博文中我将按照如下的顺序贴出各小节内容。文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对转载 2015-10-14 21:47:38 · 2196 阅读 · 0 评论 -
android hwcomposer
以pandaboard为例。 linaro1304 release中使用HWC_FRAMEBUFFER, HWC_OVERLAY, 没有使用HWC_FRAMEBUFFER_TARGET. use_sgx = 1. egl_swapbuffer用于在commit的时候将bufer swap到sgx。 egl用于composition. hwc fb_dev的post2将sgx递交显示。com转载 2015-10-14 21:40:57 · 1401 阅读 · 0 评论 -
通过Android trace文件分析死锁ANR
对于从事Android开发的人来说,遇到ANR(Application Not Responding)是比较常见的问题。一般情况下,如果有ANR发生,系统都会在/data/anr/目录下生成trace文件,通过分析trace文件,可以定位产生ANR的原因。产生ANR的原因有很多,比如CPU使用过高、事件没有得到及时的响应、死锁等,下面将通过一次因为死锁导致的ANR问题,来说明如何通过trace文件转载 2015-11-21 16:00:31 · 1534 阅读 · 0 评论 -
Android 4.4(KitKat)中的设计模式-Graphics子系统
原文地址:http://blog.youkuaiyun.com/jinzhuojun/article/details/17427491 本文主要从设计模式角度简单地侃下Android4.4(KitKat)的Graphics子系统。作为一个操作系统,Android需要考虑到灵活性,兼容性,可用性,可维护性等方方面面 ,为了达到这些需求,它需要良好的设计。因此,在Android源码中可以看到很多设计模式的转载 2015-10-16 09:56:44 · 533 阅读 · 0 评论 -
高效获得Linux函数调用栈/backtrace的方法
trace,除了函数名,还能获得代码行号方法4 libunwind这里面的方法2和方法4都尝试过,方法2的backtrace函数是通过读取操作系统的一个全局信息区,在多线程并发调用时,会造成严重的锁冲突。方法4的libunwind也存在开销较大的问题。最终采用了下面的方案:[cpp] view plaincopyprint?#define STACK转载 2015-11-21 15:56:13 · 1577 阅读 · 0 评论 -
GUI显示系统之 SurfaceFlinger
转载自http://blog.youkuaiyun.com/uiop78uiop78/article/details/8954508介绍了Surface, SurfaceTexture, BufferQueue, VSYNC generation, Render等内容。后面的几篇博文中我将按照如下的顺序贴出各小节内容。文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对转载 2015-10-30 14:27:27 · 1258 阅读 · 0 评论 -
abdroid hwui
Android 4.4 Graphic系统详解(4)HWUI概述2015-01-28 17:48 2360人阅读 评论(0)收藏 举报分类: android graphic(7) 目录(?)[+]1 概述Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特转载 2015-12-09 21:10:36 · 1161 阅读 · 0 评论 -
android binder机制
1.binder通信概述 binder通信是一种client-server的通信结构, 1.从表面上来看,是client通过获得一个server的代理接口,对server进行直接调用; 2.实际上,代理接口中定义的方法与server中定义的方法是一一对应的; 3.client调用某个代理接口中的方法时,代理接口的方法会将client传递的参数打包成为Pa转载 2015-11-17 16:30:39 · 227 阅读 · 0 评论 -
native parcel的分析
Parcel是android中不同于Java Serialize新的序列化机制。Java Serialize机制作用是能将数据对象存入字节流中,在需要时重新生成对象。主要应用是利用外部存储设备保存对象状态,以及通过网络传输对象等。而android系统定位内存受限设备,对性能要求更高,而且系统中采用了binder ipc机制,就需要求性能更出色的对象传输方式。Parcel定位就是轻量级高效的转载 2015-11-17 16:39:50 · 1170 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger总体结构
转载 2015-11-18 09:41:27 · 391 阅读 · 0 评论 -
Choregographer工作原理分析
结论写在前面:Choreographer就是一个消息处理器,根据vsync 信号 来计算frame,而计算frame的方式就是处理三种回调,包括事件回调、动画回调、绘制回调。这三种事件在消息输入、加入动画、准备绘图layout 等动作时均会发给Choreographer。下面来看分析过程看过一些源码后,发现ui 绘制的管理,调度都是通过Choreographer这个类。1 Chor转载 2015-11-18 13:33:10 · 939 阅读 · 0 评论 -
Android 4.4(KitKat)中的设计模式-Graphics子系统
本文主要从设计模式角度简单地侃下Android4.4(KitKat)的Graphics子系统。作为一个操作系统,Android需要考虑到灵活性,兼容性,可用性,可维护性等方方面面 ,为了达到这些需求,它需要良好的设计。因此,在Android源码中可以看到很多设计模式的身影。光是本文涉及的Graphics子系统中,就用到了如Observer, Proxy, Singleton, Command, D转载 2015-11-18 09:38:15 · 509 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的连接过程分析
前文在描述Android应用程序和SurfaceFlinger服务的关系时提到,每一个有UI的Android应用程序都需要与SurfaceFlinger服务建立一个连接,以便可以通过这个连接来请求SurfaceFlinger服务为它创建和渲染Surface。在本文中,我们将以Android系统的开机动画应用程序为例,详细描述Android应用程序是如何与SurfaceFlinger服务建立连接的。转载 2015-11-18 09:44:15 · 419 阅读 · 0 评论 -
SurfaceTexture
[首页][新闻][文章][登录] [注册] 首页Web开发Windows开发编程语言数据库技术移动平台系统服务微信布布扣其他数据分析 首页> 移动平台 > 详细 Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceVi转载 2015-11-18 16:59:32 · 6767 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger总体结构
Android4.4 GUI系统框架之SurfaceFlinger一. Android GUI框架:SurfaceFlinger:每当用户程序刷新UI的时候,会中介BufferQueue申请一个buffer(dequeueBuffer),然后把UI的信息填入,丢给SurfaceFlinger,SurfaceFlinger通过计算多重计算合成visibleRegi转载 2015-11-26 09:02:52 · 1045 阅读 · 0 评论 -
Android 4.4 Graphic系统详解(2) VSYNC的生成
VSYNC 的概念VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。“垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是垂直同步这个名字,因为LCD根本就没有垂直扫描的这种东西,因此这个名字本身已经没有意义。但是基于历史转载 2015-11-26 09:04:42 · 1363 阅读 · 0 评论 -
Android中ActivityManagerService与应用程序(客户端)通信模型分析
本文原创 ,转载必须注明出处 :http://blog.youkuaiyun.com/qinjuning 今天主要分析下ActivityManagerService(服务端) 与应用程序(客户端)之间的通信模型,在介绍这个通信模型的基础上,再 简单介绍实现这个模型所需要数据类型。 本文所介绍内容基于android2.2版本。由于an转载 2015-11-28 13:29:41 · 551 阅读 · 0 评论 -
高通平台 graphics图形架构
Android display system introduce(Qualcomm 8x60 platform)(二、SW架构--1)2010-12-31 11:17一、Overview 上图的原型取自高通的文档,由于原图无法描述现有的架构,我在原图的基础了做了些修改,主要是增加了overlay部分,另外其他部分根据现有的软件也做了些许改动。下面先对上图做个大概的介绍,后面会转载 2015-12-17 09:06:16 · 2910 阅读 · 0 评论 -
git reset 和 git revert 的区别
很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导致maven项目格式不正确,这个时候,可以用git reset --hard 去撤销这次修改但是这样做也有问题,可能之前本地的,没有提交的修改,都消失了。可以尝试git revert命令reset是指将当前head的内容重转载 2016-01-02 14:31:45 · 695 阅读 · 0 评论 -
GPU基础知识
由于在读ASPLOS 13` GPUfs这篇文章,其中提到很多GPU特点,查了些资料,在这里简单总结一下。GPU特点1. 高吞吐量2. 拥有数百个硬件处理单元,性能达到1Tflops3. 每个处理单元深度多线程,即使有的线程被stall了,GPU还能够继续正常执行。4. 高memory带宽GPU发展和现状1. GPU原来就是为了加速3D渲染的,后来被拿过来做计算。2转载 2015-12-03 20:53:37 · 5487 阅读 · 0 评论 -
EGL
EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口。本章主要讲述 OpenGL ES 的 EGL API ,以及如何用它创建 Context 和绘制Surface 等,并对用于 OpenGL 的其他视窗 API 做了比较分析,比如 WGL 和 GLX 。本章中将涵盖如下几个方面: EGL 综述 EGL 主要构成( Dis转载 2015-12-03 10:54:40 · 633 阅读 · 0 评论 -
Mutex::AutoLock
互斥类—MutexMutex是互斥类,用于多线程访问同一个资源的时候,保证一次只有一个线程能访问该资源。在《Windows核心编程》①一书中,对于这种互斥访问有一个很形象的比喻:想象你在飞机上如厕,这时卫生间的信息牌上显示“有人”,你必须等里面的人出来后才可进去。这就是互斥的含义。下面来看Mutex的实现方式,它们都很简单。(1)Mutex介绍其代码如下所示:[-->Threa转载 2015-12-04 09:12:35 · 749 阅读 · 0 评论 -
android surfaceflinger研究----显示系统, Surface机制, SurfaceFlinger loop
转载自http://blog.youkuaiyun.com/windskier/article/details/7030732 这周抽空研究了一下SurfaceFlinger,发现真正复杂的并不是SurfaceFlinger本身,而是android的display显示系统,网上关于这部分的介绍有不少,本不打算写的,但是发现还是记录一下研究代码的过程比较好,一是能够帮助自己理清思路,另一个原因就是以后转载 2015-12-23 17:04:47 · 1997 阅读 · 0 评论 -
android的gralloc分析
Android 中 lcd 是一个帧缓冲设备,驱动程序通过处理器的 lcd 控制器将物理内存的一段区域设置为显存,如果向这段内存区域写入数据就会马上在 lcd 上显示出来。Android 在 HAL 中提供了gralloc 模块,封装了用户层对帧缓冲设备的所有操作接口,并通过 SurfaceFlinger 服务向应用提供显示支持。在启动过程中系统会加载 gralloc 模块,然后打开帧缓冲设备,获转载 2015-12-25 19:15:55 · 754 阅读 · 0 评论 -
Mali Midgard Family Performance Counters
Mali Midgard Family Performance Counters 版本 41 由 peterharris 于 2015-4-16 下午2:57创建,最后由 peterharris 于 2015-11-2 下午10:02修改。 Analysis and optimization of graphics and comp转载 2016-05-09 19:55:26 · 1585 阅读 · 0 评论 -
Surfaceflinger 概述
Android图像显示流程ApplicationàSkia/OpenGLàSurface,Surface,Surface,... FrameBufferßOpenGLßSurfaceFlingerßSurface,Surface,Surface,....由此可知,Sur转载 2016-07-09 19:58:44 · 696 阅读 · 0 评论 -
frambuffer机理
一、FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出 FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过转载 2016-07-09 20:17:52 · 904 阅读 · 0 评论