android开发
文章平均质量分 95
qq160816
这个作者很懒,什么都没留下…
展开
-
ARM GPU 架构简介
1. 架构 2. 开发流程3. Mali GPU Linux 内核设备驱动程序 Mali GPU DDK 的 Linux 版本包含在内核中运行的以下三个组件: 1)设备驱动程序: 它是最重要的组件,提供对 Mali-200 或 Mali-400 GPU 的低级访问。其主要功能如下: •对 Mali转载 2014-06-25 14:34:22 · 855 阅读 · 0 评论 -
EGL接口 简介
from http://lyodev.appspot.com 第二章 EGL 接口EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口。本章主要讲述 OpenGL ES 的 EGL API ,以及如何用它创建Context 和绘制 Surface 等,并对用于 OpenGL 的其他视窗 API 做了比较分析,比如 WGL 和 GLX 。本章中将涵盖如下几个方面:转载 2014-10-31 10:57:47 · 722 阅读 · 0 评论 -
使用 的surface缓冲
使用 的surface缓冲。3.7 粉刷上下文(Rendering Context)(1)EGLBoolean eglBindAPI(EGLenum api);绑定客户端api,参数可以是:EGL_OPENGL_API, EGL_OPENGL_ES_API,或者 EGL_OPENVG_API。 (2)EGLenum eglQueryAPI(void);查询当前支持的客户端api。转载 2014-11-07 15:14:45 · 2629 阅读 · 0 评论 -
GLSL 在OpenGL中向shader传递信息
引言一个OpenGL程序可以用多种方式和shader通信。注意这种通信是单向的,因为shader的输出只能是渲染到某些目标,比如颜色和深度缓存。OpenGL的部分状态可以被shader访问,因此程序改变OpenGL某些状态就可以与shader进行通信了。例如一个程序想把光的颜色传给shader,可以直接调用OpenGL接口,就像使用固定功能流水线时做的那样。不过,使用Ope转载 2014-12-17 15:20:48 · 479 阅读 · 0 评论 -
unity 3D经典入门教程(精)
转载请注明出处玮璘博客:http://www.wangweilin.name/yx_436.html 1:天空盒有接缝怎么解决?答:在贴图导入设置里设置Wrap Mode为"Clamp"。2:DDS格式怎么不显示?答:Unity不支持DDS格式,Unity会将除DDS外的其他格式图片具有为DDS同样的优化。3:Unity如何动态载入外部模型等文件?转载 2015-02-04 13:03:26 · 1093 阅读 · 0 评论 -
Android4.4 fence机制分析
Android4.4 fence机制分析在任何一个系统中,无可避免的都会跟各种buffers打交道,最经典的模式就是消费-生产者模式,一个独立的buffer在它们之间的交换等操作都需要一个机制来控制每个buffer的“生命周期”,即ALLOCATION 和 RELEASE ,此外还要考虑到同步性问题,什么时候可以read buffer和write buffer都需要听从调遣。在an转载 2015-02-04 13:59:33 · 1300 阅读 · 0 评论 -
SurfaceFlinger启动过程分析(一)、(二)、(三)、(四)【转】
SurfaceFlinger的启动过程还是从Zygote说起。Zygote起来后会调用SystemServer.java[frameworks/base/services/java/com/android/server]里面的main函数,然后调用本地函数init1(),然后调用的是JNI的com_android_server_SystemServer.cpp里面的android_server_S转载 2015-02-27 15:46:04 · 578 阅读 · 0 评论 -
ION基本概念介绍和原理分析
转载前的话:ION将内核态形形色色的内存分配纳入统一的管理接口之中,更重要的设计意图是为内存在不同用户态进程之间传递和访问提供了支持。每个ion_buffer与一个struct file关联,其handle纳入进程file desc空间而不是/dev/ion设备内单独的handle空间,方便之处如下:每个buffer一个handle,便于更灵活地细粒度地控制每个buffer转载 2015-06-16 14:37:45 · 878 阅读 · 0 评论 -
Android 4.1 systrace使用方法(一)
Android 4.1以后加了一个新的性能分析工具:systrace,没有搜到什么好的的资料,去做Android性能分析的也很少,自己这段时间一直都在弄systrace,把它记下来。 systrace可以把函数流程及CUP状态有HTML表示出来,主要是针对UI的流程性分析的工具。使用使用systrace首先的安装SDK 20以上,Android 4.1以上才能使用,在SDK/tools/转载 2015-06-09 16:58:07 · 567 阅读 · 0 评论 -
[原]通过 dumpsys SurfaceFlinger 分析Android 系统图层
一、通过 dumpsysSurfaceFlinger 分析Android 系统图层:从下面的dumpsys log看出当前系统有三个图层(红色部分是每个图层的坐标和大小),从最底层到上层分别是ImageWallpaper(壁纸), SurfaceView(视频小窗口), launcher(桌面)。其中视频小窗口用Overlay的方式独立输出到视频层,这样的话只有壁纸层和桌面层通过GPU混合转载 2015-06-30 15:48:01 · 16776 阅读 · 0 评论 -
linux drm 架构
转自: http://manpages.ubuntu.com/manpages/utopic/man7/drm-kms.7.html根据自己的理解来转述一下:摘要:DRM 是linux 下的图形渲染架构(Direct Render Manager) , 具体的说是显卡驱动的一种架构(驱动如何玩? 把功能封装成 open/close/ioct转载 2015-08-13 17:52:25 · 9245 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger与Client通信框架(一)
SurfaceFlinger框架是基于Binder进程间通信机制搭建的,SF作为一个服务进程,用户程序想要跟它通信必然要经过Binder机制。首先说一下,用户要跟SF通信,那么SF必须出现在ServiceManager中,因为SF也是一个服务,所有的服务都由ServiceManager来进行统一管理。在系统启动的过程中,SF就在ServiceManager中注册好了,注册好之后,SF在后台中监视一转载 2015-08-04 16:14:04 · 477 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger框架-渲染一个surface(二)
SurfaceFlinger自启动之后,主要有三种类型线程参与工作:1.binder线程,负责监控binder设备完成与客户端的交接2.控制台事件监控线程,负责监控硬件帧缓冲区的睡眠/唤醒状态切换事件。3.UI渲染线程,负责渲染UI。一 UI渲染线程 UI渲染线程平时是处于休眠状态,一旦binder线程监测到有其他进程发过来的请求渲染UI的消息就会唤转载 2015-08-04 16:18:55 · 432 阅读 · 0 评论 -
Android 4.4 Fence在SurfaceFlinger中的应用
网上关于android,fence的资料好少啊,几乎没有,但是这个机制又在GUI系统中起着重要的作用,于是自己通读源码和注释,与大家分享下Fence到底是怎么回事? Fence即栅栏,栅栏的角色与它的名字非常类似.一组线程可以使用栅栏来集体进行相互同步;在本质上,每个线程在到达某种周知的状态时调用栅栏的wait()方法,阻塞起来,以等待其它所有参与线程调用wait()方法表转载 2015-08-04 16:21:47 · 435 阅读 · 0 评论 -
Android4.4深入浅出之SurfaceFlinger总体结构
Android4.4 GUI系统框架之SurfaceFlinger一. Android GUI框架:SurfaceFlinger:每当用户程序刷新UI的时候,会中介BufferQueue申请一个buffer(dequeueBuffer),然后把UI的信息填入,丢给SurfaceFlinger,SurfaceFlinger通过计算多重计算合成visibleRegion之后,丢给o转载 2015-08-04 16:10:29 · 498 阅读 · 0 评论 -
android媒体--stagefright概述【一】
最近杂七杂八的忙碌着,前几天看了下这部分主要是stagefright模块的,所以更改下名字 做了挺长时间的android平台的媒体开发,对之前的分析进行一个阶段性的总结。 一、android结构图(上下文关系) 二、android目录结构 自从android4.2版本之后,媒体的相关代码都放到framework/av/的目录中,俗称"AV工作者",呵呵(转载 2016-03-01 14:24:19 · 339 阅读 · 0 评论 -
OpenGL ES入门指南
本篇文档从零开始,深入简出,跟大家介绍一下OpenGL ES的原理和开发。前言OpenGL ES是Khronos Group创建的一系列API中的一种(官方组织是:http://www.khronos.org/)。在桌面计算机上有两套标准的 3DAPI:Direct3D和OpenGL。Direct3D实际上是运行在windows操作系统上的标准3DAPI,而OpenGL则是跨平台的, 适用转载 2014-11-18 16:59:51 · 814 阅读 · 0 评论 -
opengl es 简单教程
摘要: 什么是OpenGL ES?OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。为桌面版本OpenGL 的一个子集。OpenGL ES 定义了一个在移动平台上能够支持OpenGL最基本功能的精 ...什么是OpenGL ES?OpenGL ES (为OpenGL f转载 2014-11-18 16:48:40 · 876 阅读 · 0 评论 -
Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析
在前面一篇文章中,我们分析了Android应用程序请求SurfaceFlinger服务创建Surface的过程。有了Surface之后,Android应用程序就可以在上面绘制自己的UI了,接着再请求SurfaceFlinger服务将这个已经绘制好了UI的Surface渲染到设备显示屏上去。在本文中,我们就将详细分析Android应用程序请求SurfaceFlinger服务渲染Surface的过程。转载 2014-06-13 10:01:28 · 665 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的关系概述和学习计划
SurfaceFlinger服务负责绘制Android应用程序的UI,它的实现相当复杂,要从正面分析它的实现不是一件容易的事。既然不能从正面分析,我们就想办法从侧面分析。说到底,无论SurfaceFlinger服务有多复杂,它都是为Android应用程序服务的,因此,我们就从Android应用程序与SurfaceFlinger服务的关系入手,来概述和制定SurfaceFlinger服务的学习计划。转载 2014-06-13 09:54:43 · 466 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务的连接过程分析
前文在描述Android应用程序和SurfaceFlinger服务的关系时提到,每一个有UI的Android应用程序都需要与SurfaceFlinger服务建立一个连接,以便可以通过这个连接来请求SurfaceFlinger服务为它创建和渲染Surface。在本文中,我们将以Android系统的开机动画应用程序为例,详细描述Android应用程序是如何与SurfaceFlinger服务建立连接的。转载 2014-06-13 09:55:35 · 531 阅读 · 0 评论 -
Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划
前面我们从Android应用程序与SurfaceFlinger服务的关系出发,从侧面简单学习了SurfaceFlinger服务。有了这些预备知识之后,我们就可以从正面来分析SurfaceFlinger服务的实现原理了。SurfaceFlinger服务负责管理系统的帧缓冲区设备,并且负责渲染系统的UI,即各个应用程序的UI。在本文中,我们就简要介绍SurfaceFlinger服务,并且制定学习计划。转载 2014-06-13 10:02:46 · 573 阅读 · 0 评论 -
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
前面在介绍Android系统的开机画面时提到,Android设备的显示屏被抽象为一个帧缓冲区,而Android系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的。Android系统在硬件抽象层中提供了一个Gralloc模块,封装了对帧缓冲区的所有访问操作。本文将详细分析Gralloc模块的实现,为后续分析SurfaceFlinger服务的实现打下基础。转载 2014-06-13 09:51:08 · 903 阅读 · 0 评论 -
Android系统的开机画面显示过程分析
好几个月都没有更新过博客了,从今天开始,老罗将尝试对Android系统的UI实现作一个系统的分析,也算是落实之前所作出的承诺。提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的画面了。Android系统在启动的过程中,最多可以出现三个画面,每一个画面都用来描述一个不同的启动阶段。本文将详细分析这三个开机画面的显示过程,以便可以开启我们对Android系统UI实现的分析之路。转载 2014-06-13 09:49:05 · 990 阅读 · 0 评论 -
Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析
在前面一篇文章中,我们分析了Android应用程序与SurfaceFlinger服务的连接过程。Android应用程序成功连接上SurfaceFlinger服务之后,还需要一块匿名共享内存来和SurfaceFlinger服务共享它的UI元数据,以便使得SurfaceFlinger服务可以正确地为它创建以及渲染Surface。在本文中,我们将详细地分析这块用来保存UI元数据的匿名共享内存的创建过程。转载 2014-06-13 09:56:38 · 661 阅读 · 0 评论 -
Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
前面我们已经学习过Android应用程序与SurfaceFlinger服务的连接过程了。连接上SurfaceFlinger服务之后,Android应用程序就可以请求SurfaceFlinger服务创建Surface。而当有了Surface后,Android应用程序就可以用来渲染自己的UI了。在本文中,我们将详细分析Android应用程序请求SurfaceFlinger服务创建Surface的过程。转载 2014-06-13 09:57:55 · 572 阅读 · 0 评论 -
Android系统Surface机制的SurfaceFlinger服务的线程模型分析
在前面两篇文章中,我们分析了SurfaceFlinger服务的启动过程以及SurfaceFlinger服务初始化硬件帧缓冲区的过程。从这两个过程可以知道,SurfaceFlinger服务在启动的过程中,一共涉及到了三种类型的线程,它们分别是Binder线程、UI渲染线程和控制台事件监控线程。在本文中,我们就将详细分SurfaceFlinger服务的线程模型,即上述三种类型的线程是如何运行和交互的。转载 2014-06-13 10:06:39 · 818 阅读 · 0 评论 -
Android系统Surface机制的SurfaceFlinger服务的启动过程分析
在前面一篇文章中,我们简要介绍了Android系统Surface机制中的SurfaceFlinger服务。SurfaceFlinger服务是在System进程中启动的,并且负责统一管理设备的帧缓冲区。SurfaceFlinger服务在启动的过程中,会创建两个线程,其中一个线程用来监控控制台事件,而另外一个线程用来渲染系统的UI。在本文中,我们就将详细分析SurfaceFlinger服务的启动过程。转载 2014-06-13 10:03:50 · 599 阅读 · 0 评论 -
Android系统Surface机制的SurfaceFlinger服务对帧缓冲区(Frame Buffer)的管理分析
在前文中,我们分析了SurfaceFlinger服务的启动过程。SurfaceFlinger服务在启动的过程中,会对系统的硬件帧缓冲区进行初始化。由于系统的硬件帧缓冲区一般只有一个,并且不是谁都可以随便访问的,因此,它就需要由一个服务来统一管理。在Android系统中,这个服务便是SurfaceFlinger。在本文中,我们就详细分析SurfaceFlinger服务是如何管理系统的硬件帧缓冲区的。转载 2014-06-13 10:04:59 · 929 阅读 · 0 评论 -
Android进程间通信(IPC)机制Binder简要介绍和学习计划
在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。 我们知道,Android系统是基于Linux内核的,而Linux内核继承和兼转载 2014-06-13 10:09:16 · 524 阅读 · 0 评论 -
android出现段错误时的查找定位的方法
android出现段错误时的查找方法,例如出现log:2196 01-02 12:49:01.090 F/libc ( 1309): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 1388 (SurfaceFlinger)2197 01-02 12:49:01.210 I/DEBUG ( 1307): *** *原创 2014-06-16 16:34:01 · 4582 阅读 · 1 评论 -
图形的stride
使用C#的BitmapData 最近要转开发平台,正研究C#。C#好是好,不过处理图片时一个像素一个像素的操作像素不是一般的慢。其实Delphi也一样,但好在Delphi的Bitmap类提供了ScanLines,可以一行一行的读图,效率比较高。C#应该也有类似的东东。经过一番搜索,终于发现了BitmapData类。先看个例子,这是对一张位图的每个像素按FF取补,然后输出到一转载 2014-08-22 14:46:45 · 910 阅读 · 0 评论 -
Android 开机动画启动过程详解
Android 开机会出现3个画面: 1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片); 2. Android平台启动初始化,出现"A N D R I O D"文字字样画面; 3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。 1、开机图片(Linux小企鹅) (转载 2014-08-27 15:04:20 · 859 阅读 · 0 评论 -
dumpsys SurfaceFlinger
打印surfaceflinger相关的一些信息。原创 2014-08-27 15:51:02 · 812 阅读 · 0 评论 -
HDR 拍照模式的原理,实现及应用
HDR 拍照: (High Dynamic Range Imaging)高动态范围成像,是用来实现比普通数字图像技术更大曝光动态范围(即更大的明暗差别)的一组技术。高动态范围成像的目的就是要正确地表示真实世界中从太阳光直射到最暗的阴影这样大的范围亮度。现在一般的数码相机和手机中都实现这种拍照模式。适合场景: 比较适合在阴暗变化明显的场景下使用,这转载 2016-03-03 16:50:51 · 1179 阅读 · 0 评论