HWUI
文章平均质量分 86
virwin
这个作者很懒,什么都没留下…
展开
-
hwui绘制状态组织方式——Snapshot
简介:Snapshot可以称为快照,hwui就是通过Snapshot的方式来组织整个渲染状态的,Snapshot保存了当前渲染所需的视口,变换矩阵,裁剪区域,fbo信息等。同时还保存了当前Snapshot的上一个Snapshot,也就是通过栈的方式来组织Snapshot之间的关系的。Snapshot之间的关系: 如图所示,在OpenGLRenderer类创建的时候,将会创建原创 2014-03-02 23:16:54 · 2843 阅读 · 1 评论 -
LinearAllocator内存分配
简介:在Android4.4中,在hwui将以前的绘制命令由原来的枚举类型,全部以类的形式呈现(一是为了便于扩展,二是由于加入延时渲染列表,不得不用类来实现),抽象类为DisplayListOp,在该类中重载了new的方法,即用了new placement的方式,统一分配内存,而不是每个操作自己分配,即用了LinearAllocator来管理每个操作需要申请的内存,这样能够提升申请内存的性能,原创 2014-03-02 17:27:12 · 1790 阅读 · 3 评论 -
LRU缓存淘汰算法
原理:LRU(最近最少使用)算法根据数据的访问频率,将最近访问的放在队头,将最少访问的放在队尾,当缓存在一定范围内时,就将最少访问的数据删除,对于经常访问的数据就留在内存中,提高系统性能,正常是用在操作系统的cache命中中使用。实现:在Android的HWUI中,通过使用LruCaches来保存使用的资源,从而提高HWUI的渲染性能,又不至于浪费太多的内存。如原创 2014-03-02 16:45:19 · 1159 阅读 · 0 评论 -
hwui简介
简介:hwui主要是android用于2d硬件绘图而加入的一个模块,在hwui之前,android主要是用skia来进行软件绘制,后由于绘制性能等问题,现在android的绘图几乎都是使用了hwui硬件加速绘图。hwui主要则是使用opengles来进行gpu硬件绘图,提升整个系统的绘制性能,主要有以下方式:直接渲染,显示列表渲染,延时渲染列表,分别代表的类为:OpenGLRenderer,D原创 2014-03-02 21:04:18 · 22816 阅读 · 11 评论 -
hwui——Layer的使用
hwui的layer中包括3种:1. 普通的layer,用于作为当前一种状态的保存,可以使用fbo或者glCopyTexture来作为一张纹理使用2. 创建一个HardwareLayer也就是实现以fbo的形式实现,通过view中使用buildLayer来创建,GLES20RenderLayer3. 创建的是一个textureLayer,这个layer的SurfaceTexture直接原创 2014-04-06 20:01:10 · 3385 阅读 · 1 评论 -
Android bug——Launcher 0x506导致花屏问题
现象描述:在Android4.4中,概率极高会出现Launcher或者应用整个绘制成花屏、黑屏或者字体绘制成方块等问题,出现花屏问题的时候将会在hwui中打印0x506的错误。分析:通过log发现也只有hwui中出现0x506这个错误码,即hwui中当前绘图时使用的fbo是无效的。接着通过分析代码发现当前hwui中使用fbo的地方为LayerRenderer中,在LayerRender原创 2014-05-17 12:49:18 · 4691 阅读 · 6 评论 -
Android bug——hwui中fb socket泄露问题
现象描述:在launcher的使用过程中,会发现系统越来越慢,内存越来越少,通过adb shell ps -t可以查看到当前launcher开启了几百上千个线程,这样就导致了系统越来越慢。分析:通过定位,发现在hwui中,当绘制带阴影的字体的时候,使用了renderScript,由于renderScript中绘制阴影时,会开启3-4个线程来处理阴影文字。当内存不足时,会调用GammaF原创 2014-05-17 14:03:40 · 1741 阅读 · 0 评论 -
Android bug——google map切换黑屏问题
现象描述:在使用google map的时候,当从地图界面切换到导航界面的时候,极大概率出现切换过程中黑屏的现象,通过查看log,发现当前出现的错误码也为在hwui中的0x506分析:launcher花屏的问题也是出现0x506,但是这个0x506的问题已经解决了,这次这个google map的错误码问题应该和花屏的问题不是同一个问题。接着也是通过在hwui中的LayerRenderer原创 2014-05-18 20:02:33 · 3979 阅读 · 5 评论 -
hwui文字绘制详解
字体绘制简介:hwui中绘制字体的主要是通过FontRenderer这个类来进行绘制,这个类中保存了当前最近使用的字体信息类Font的列表,在Font类中保存了当前绘制需要的文字信息CachedGlyphInfo类列表,同时FontRenderer这个类保存了当前使用的文字纹理缓存CacheTexture类的列表,这个类用于保存当前需要绘制的文字的纹理信息,也就是当需要绘图的时候,首先将会通过原创 2014-10-18 15:55:33 · 2350 阅读 · 0 评论