全部博文(153)
分类:
2010-03-16 09:46:23
1. 2D图像加速引擎之于android系统的必要性:
实验过程:通过在两台智器q5上做对比测试,使用操作系统均为android1.5版本。其中一台所运行的android是日本团队为智器q5开发(已打开2D加速)显示效果非常流畅。另一台所运行的android是我们团队自己移植编译的(没有打开2D加速),窗口在拖拉的时候会出现闪烁。
实验结论:基本确认2D图形加速引擎对于运行android不可缺少。
2. android对2D图像加速引擎的要求:
Android对底层2D图形加速引擎的调用主要是通过两个方面,一个是copybit,一个是标准的OpenGL ES。
copybit的硬件要求:实现copybit对硬件的要求不高,它只是基本2D功能的子集,包括旋转,放大缩小,颜色/像素格式转换(这些特性可以被部分支持)。
OpenGL ES的硬件要求:如果是实现标准的OpenGL则需要硬件IP完整支持OpenGL ES。
Android对这两者的支持在版本上稍有差异,可以从两个方面来讲,一个是android1.6版本之前,一个是android1.6版本之后。
A.android1.6之前(cupcake,donut)
在android1.6之前(包含1.6版本),在copybit模块和OpenGL ES同时存在时,界面(SurfaceFlinger)会自动优先调用copybit模块。
B. android1.6之后(2.0 2.1)
在donut版本(android1.6)之后,copybit模块不会被界面(SurfaceFlinger)直接调用,而是作为Open GL ES 1.x的后端处理使用,SurfaceFlinger只会被Open GL ES的API调用。在未来的android版本中copybit将会被淘汰掉。(官方原话: Eventually, the copybit module will be phased out, instead, we will ask the ISV/OEMs to implement these features on their OpenGL ES drivers, if they think it is necessary.)
3. 结论:
从android的角度来看有两种方案:1使用copybit,这样对2D的硬件要求不高,而且在可预见的未来还是能够被android支持的。2 使用OpenGL的标准,这是android的未来趋势,但是无论在硬件还是软件的实现代价太大。
鉴于此,我个人推荐使用copybit。下面是需要实现android实现copybit对2D图形加速引擎具体要求(These features can be supported in full or partially.):
|
必须支持 |
可选 |
|
颜色格式RGB_565 |
RGBA_8888 BGRA_8888 RGBA_5551 RGBA_4444 YCbCr_422_SP YCbCr_420_SP YCbCr_422_I |
|
旋转90° 180° 270° x-flip y-flip |
|
|
矩形区域的缩放 |
|
|
Alpha blending(可以任意选定两块相同大小区域作为源) |
|
|
Bitblt |
|
|
Clip剪切 |
|
|
|
DITHER |
|
|
不同颜色格式间的转换 |
注:必须支持是指copybit源代码中已包括的常见操作,且一般主流的2D图形加速引擎都会支持的特性。可选是指copybit源码中已经包括了这个特性,但有些厂商没有为他们的2D图形引擎驱动实现,如有余力建议加上。