Android 为什么叠加平面的效率可能低于GL合成?

Android 为什么叠加平面的效率可能低于GL合成?,android,opengl-es,android-source,surfaceflinger,Android,Opengl Es,Android Source,Surfaceflinger,我一直在阅读这个网址来了解surface flinger 其中,下面的区块我无法理解。如果有人能举例说明,那就太好了 覆盖平面可能比GL合成效率低,但什么都没有 屏幕上的内容正在改变。当覆盖时尤其如此 内容具有透明像素,重叠层被混合 在一起在这种情况下,HWC可以选择请求GLE 合成部分或所有层,并保留合成缓冲区。 如果SurfaceFlinger回来要求合成同一组 缓冲区,HWC可以继续显示以前合成的 划痕缓冲区。这可以提高闲置设备的电池寿命 想象一下合成两个平面 如果使用“显示控制器覆盖平

我一直在阅读这个网址来了解surface flinger

其中,下面的区块我无法理解。如果有人能举例说明,那就太好了

覆盖平面可能比GL合成效率低,但什么都没有 屏幕上的内容正在改变。当覆盖时尤其如此 内容具有透明像素,重叠层被混合 在一起在这种情况下,HWC可以选择请求GLE 合成部分或所有层,并保留合成缓冲区。 如果SurfaceFlinger回来要求合成同一组 缓冲区,HWC可以继续显示以前合成的 划痕缓冲区。这可以提高闲置设备的电池寿命


想象一下合成两个平面

如果使用“显示控制器覆盖平面”,则扫描到面板的每个输出帧将读取两个平面

如果使用GPU合成,则更改后的第一帧更昂贵:

  • GPU读取两个平面
  • GPU写一个平面
  • 显示控制器读取一个平面
。。。因此,需要四组内存访问,而不仅仅是两组。但是,如果下一次扫描没有任何更改,您可以跳过GPU合成步骤,让显示控制器读取先前合成的缓冲区:

  • 显示控制器读取一个平面
。。。与一直使用覆盖平面相比,它可以节省扫描期间读取的一帧