对硬件加速的理解

硬件加速是什么

我对硬件加速中的硬件的理解是,最终绘制是由专注于图形处理的gpu完成的。正常在未进行硬件加速的情况下,图形的绘制是由cpu完成的。

使用CPU绘制和使用GPU绘制的区别

简单的说,CPU是个处理数据的全才,而GPU是个图像绘制上的专才。CPU可以处理图像信息,但是GPU更擅长,因为GPU生来就是用来处理图像信息的。GPU之所以擅长图形计算,是因为GPU在硬件上(相对于CPU)由更多的计算单元,更少的控制和存储单元组成。其结果就是GPU更擅长大量的并发的简单的运算。

在Android中CPU绘制和GPU绘制的机制

  • CPU
    使用CPU绘制,最终绘制的内容会被CPU转换成一个Bitmap,并绘制到屏幕上。相当于,原来的View树结构在计算下变成了最终的一幅画。在这种情况下,某个View发生变化的时候,需要将树种所有的其他View都重绘一遍,再生成最终绘制到屏幕上的Bitmap。
  • GPU
    使用GPU绘制,每一层View的绘制会转换成一个一个的GPU操作,保存在一个list中,这些操作是相互独立的。所以在某个View需要重绘的时候,只需要修改那个GPU操作即可。这种做法相对于CPU是高效很多的。

硬件加速的局限性

canvas的部分方法在开启硬件加速时会失效或者无法正常工作。本质上是由于GPU绘制方式上的限制。
image

参考