Copybit HAL
SurfaceFlinger layer的compositionType有三种:
HWC_FRAMEBUFFER的使用OpenGL ES来绘制;
HWC_OVERLAY的使用Overlay Engine来合成;
HWC_USE_COPYBIT的使用Copybit硬件加速绘制;
MSM8xxx平台Jellybean代码中没有发现使用HWC_USE_COPYBIT的layer,该平台下 Copybit 硬件加速主要有两种:
PPP :vpe模块的PPP,direct copy;
C2D :可能是2D GPU OpenVG之类的。
MSM7627平台下hwcomposer还是使用copybit的。
可能早期系统没有Hardware Composer,又没有GPU的时候,layer draw就要使用Copybit去一层一层一Rect一Rect的拷贝了。
PPP驱动实现是做为Framebuffer设备的一个命令MSMFB_BLIT,C2D是使用c2d hal库;
Copybit的代码在display/libcopybit下,硬件合成器使用Copybit做的封装代码在display/libhwcomposer/copybit和copybit_c2d中,前者对应PPP,后者对应C2D。