公开/公告号CN104731653A
专利类型发明专利
公开/公告日2015-06-24
原文格式PDF
申请/专利权人 上海盈方微电子有限公司;
申请/专利号CN201510146749.1
申请日2015-03-31
分类号
代理机构上海新天专利代理有限公司;
代理人龚敏
地址 201203 上海市浦东新区张江高科技园区祖冲之路2290弄1号1305、1306单元
入库时间 2023-12-18 09:23:37
法律状态公告日
法律状态信息
法律状态
2018-09-25
授权
授权
2015-07-22
实质审查的生效 IPC(主分类):G06F9/48 申请日:20150331
实质审查的生效
2015-06-24
公开
公开
技术领域
本发明涉及android 操作系统的显示框架。具体来说,该发明是基于android的显示框架,提供一种可以动态切换android软件显示(使用CPU进行绘制)和硬件显示(使用GPU进行绘制)的方法。
背景技术
从Android 3.0开始,Android 2D的绘制流程就设计为支持硬件加速。有了该硬件加速,应用程序在绘制界面所进行的绘制操作都会使用硬件去渲染绘制,这样极大的优化了显示速度和用户体验。
硬件绘制特点是绘制速度快,界面流畅,用户体验好,但是消耗硬件资源,导致一些应用在低配置的设备上无法运行,另外硬件绘制无法满足所有的绘制方法(依赖于硬件提供的功能),导致部分应用在一些硬件能力差的机器上显示异常,甚至不能运行。
软件绘制的特点是绘制速度慢,界面不顺畅,但是对硬件的依赖较小,另外软件绘制的准确度和精确度高,绘制方法种类丰富,所以适应性比硬件要强。
Android系统的绘图原始框架如图1和图2描述。主要包括如下几个部分:
1)P0内核显示驱动。在linux内核中就是指framebuffer驱动。
2)P1应用程序图层合成服务SurfaceFlinger。这个服务是android的native 层服务,主要的功能就是接受来自客户端的图层修改指令,并且对当前系统中所有的应用程序图层进行合成,最终将合成的结果输送给linux显示驱动显示出来。
3)P2窗口显示控制Surface。可以通过该接口来控制一个图层窗口的属性(大小,位置等),该类负责桥接P3和P1。
4)P3窗口管理服务WindowManagerService(WMS)。该服务是android的核心服务之一,主要负责接受用户输入事件然后通知给相应的应用程序,同时也负责所有的应用程序窗口显示排序策略(Z order),应用程序窗口属性的(大小,位置等)的调整等。
5)P4视图树管理ViewRoot。P4的主要绘制流程请见图2。
一般来说一个应用程序是一群视图(View)的合成体,ViewRoot管理了这个应用的所有视图,每当有更新(大小发生变化,位置发生变化等),ViewRoot负责遍历该应用的所有视图,从而进行重新布局,重新绘制。
6)P5绘制操作接口Canvas。Canvas是Android为应用程序绘图抽象的一个接口,应用程序可以使用该接口进行各种绘图操作(画点,画线等)。
7)P6图形绘制库。图形绘制库是Canvas的后端实现。在android平台上分为skia和hwui,其中skia是纯粹用CPU操作的软件实现库,hwui是封装了openGL的硬件实现库,最终会使用硬件GPU资源。
当应用程序的初始化图形界面的时候,P4会根据当前应用程序是否含有硬件加速的标志位(由于该标志位在Android3.0之后才支持,所以使用android3.0之前的SDK编译的应用程序是不含有该标志位的)来决定使用的图形绘制库是软件还是硬件,一旦决定了以后,就立即申请相应的资源,后续不能更改。由此可见,一个应用程序在Android平台上显示方式,完全由该应用程序的版本决定,系统不能智能处理。
如上所述,为了有很好的兼容性,Android的显示系统中同时包含了硬件绘制和软件绘制,但是一个应用程序究竟是使用硬件绘制还是使用软件绘制是由应用程序在初始化的时候决定,之后不能更改,所以基于Android3.0之前SDK发布的应用程序由于没有加入使用硬件加速的标志位,导致在运行在支持硬件加速的平台上,不能享受硬件加速特性;基于Android3.0之后SDK发布的应用,也由于不能动态切换所以在一些硬件较差(主要是GPU)的平台上运行的效果不好,甚至出现不能运行的情况。
发明内容
本发明的目的是通过动态切换绘制方法的手段,修改Android的核心显示系统,让应用可以在运行的过程中根据平台的特性或者自身的需求实时的决定绘制方法使用软件还是硬件,减少应用程序对硬件的依赖,提高了其在不同平台下兼容性,同时也让那些基于Android3.0之前SDK发布的老版应用程序在硬件条件比较好的平台上顺畅的运行,提高了用户体验,另外平台可以根据平台的情况在动态的运行应用程序,节省了平台硬件资源。
本发明的具体技术方案如下:
一种Android 显示系统的软件绘制和硬件绘制动态切换方法,在现有Android的显示系统中,增加P31系统运行监控服务ROS(Runtime Oberserver Service)。该服务是本发明添加的系统监测服务,和P3一样也是运行的系统服务进程中,它的作用是监测和收集系统运行的状态(比如系统的内存使用情况,CPU资源占用情况,电池使用情况,平台温度等),然后根据这些状态来决定P4中使用的绘制方法;
增加P32应用程序绘制控制接口ADI(Application drawway interface)。该接口是本发明添加的供应用程序调用的接口,应用程序可以通过该接口强制设定自己绘制所使用的方式,并且通过该方式设定的优先级大于P31;
为了达到本发明的目的,本发明除了加了P31和P32 2个部分外,还修改了P4的绘制流程,具体描述如下:
1)P4在初始化的时候不去根据硬件加速标志位立即申请资源,而是保留该标志位,作为后续绘制方式选择的依据,该依据优先级最低。
2)P4在运行的时候接受P31的绘制方式的通知,并且对比该通知和当前采用的绘制方法是否一致,如果不一致,立即激活遍历线程,要求重绘。来自P31的绘制方式优先级居中,它会覆盖初始化时应用程序的硬件加速标志位。
3)P4在运行的时候接受P32的绘制方式的通知,并且对比该通知和当前采用的绘制方法是否一致,如果不一致,立即激活遍历线程,要求重绘。来自P32的绘制方式优先级最高,它会覆盖来自P31的绘制方式。
4)P4在进行绘制的时候,会判断当前的绘制方式和外界要求的绘制方式是否一致,如果不一致,会释放当前绘制方法所使用的资源,申请新的绘制方法资源,然后进行绘制动作。由于Android默认的流程是不支持这种资源的动态释放申请,所以这个地方同时也需要修改P2 Surface的接口,增加动态释放的接口disconnect(如图3所示)。另外在绘制过程中,如果使用硬件绘制的方式出现错误(可能是由于该应用调用的绘制方法硬件不支持,或者是由于运行的过程中出现内存不够等原因),也可以回退到软件的方式进行绘制。这样保证应用程序能够正常运行。
有益效果
本发明的Android 显示系统的软件绘制和硬件绘制动态切换方法可以让一些老款的应用程序在众多的平台上运行的很流畅,用户体验性好;应用在绘制的过程中有很强的容错性,可以让配置较低的平台运行更多的应用程序。另外由于实时的根据系统平台的状态来决定使用软硬件绘制的方式,让平台可以花费最小的硬件资源代价获取最大的用户体验。这些都可在平板电脑产品上成功实施。
为了更好的理解本方法的改进,现在把应用程序分为OLD_APK(基于Android3.0之前SDK发布)和NEW_APK;把平台也分为GOOD_PLATFORM(硬件资源较好)和BAD_PLATFORM(硬件资源差),如下是对比情况表格:
附图说明
图1 Android原生整体绘制架构。
图2 视图树管理ViewRoot的原生绘制流程图。
图3 本发明的Android整体绘制架构。
图4 本发明的视图树管理ViewRoot的绘制流程图。
具体实施方式
下面结合附图3和图4进一步阐述本发明:
1、添加系统服务P31 ROS部分。该服务运行在系统服务进程中,它的作用是监测和收集系统运行的状态(比如系统的内存使用情况,CPU资源占用情况,电池使用情况,平台温度等),然后根据这些状态来决定P4中使用的绘制方法。由于该服务是运行在android的系统服务中的,所以在系统boot up的过程中就会启动,并且注册到Android的SystemServer中,其生命周期一直持续至平台关机。
2、添加应用程序接口P32 ADI。应用程序在运行的过程中可以随时调用该接口来设置绘制方式,P4会无条件的使用该方式进行绘制。
3、应用程序在初始化P4的时候,不去根据应用的硬件加速标志来一次性决定使用的绘制方式,而是保留该标志位,作为一个依据来决定后续绘制方式。
4、当应用程序接受外部事件发生视图更新或者是有来自P31和P32部分的通知,P4会立即启动绘制线程,进行重新绘制。在绘制的时候会首先判断是否有P32 要求的绘制方式事件,如果存在则使用该绘制方式,不存在则再去查看是否有P31要求的绘制方式事件,如果存在则使用该绘制方式,不存在则最后去查看初始化时保留的硬件加速标志位。通过上述方式决定好绘制方式后,当前的绘制方式和上次的绘制方式可能发生变化,如果不一致,P4会调用资源释放接口来释放上层绘制方式的资源,申请当前绘制方式所需要的资源。当一切准备就绪后,P4根据当前绘制的方式来选择使用P6中硬件绘制方式还是软件绘制方式。另外本发明还加入了硬件绘制的容错性处理,当硬件绘制失败后,分析失败原因,如果失败的原因是硬件不支持当前的绘制操作或者硬件内存不够等硬件原因,那么后续会强制使用软件的方式进行重新绘制。
以上是对本发明的实施例描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的,例如更改P31和P32的实现,以及更改在外部在加入新一种通知P4绘制方式的机制,调整接口,调用顺序,使用不同的编程语言(如 C、C++、Java 等)实现等。这些都在本发明的权利要求所限定的保护范围内。
机译: 通过动态切换QAT硬件和CPU软件进行数据压缩和解压缩,通过动态切换来优化QAT硬件或CPU软件故障的方法
机译: 通过动态切换QAT硬件和CPU软件进行数据压缩和解压缩,通过动态切换来优化QAT硬件或CPU软件故障的方法
机译: 形成离散轮廓结构的方法在自动雕刻软件和硬件系统上绘制雕刻凹版FORMS功能层的方法