为什么Overlay飞机的效率可能低于GL组合?

时间:2017-09-25 15:28:41

标签: android opengl-es android-source surfaceflinger

我一直在阅读此网址以了解表面抛光剂。

https://source.android.com/devices/graphics/arch-sf-hwc

其中,下面的块我无法理解。如果有人用一个例子解释,那就太棒了。

  

当没有任何东西时,叠加平面的效率可能低于GL组合   在屏幕上正在改变。叠加时尤其如此   内容具有透明像素,并且混合了重叠的层   一起。在这种情况下,HWC可以选择请求GLES   部分或全部图层的合成并保留合成缓冲区。   如果SurfaceFlinger回来要求合成同一组   缓冲区,HWC可以继续显示以前合成的   临时缓冲区。这可以改善空闲设备的电池寿命。

1 个答案:

答案 0 :(得分:2)

想象一下合成两架飞机。

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

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

  • GPU读取两架飞机
  • GPU写一个平面
  • 显示控制器读取一个平面

...所以有四组内存访问而不是两组。但是,如果下次扫描没有任何变化,您可以跳过GPU组合步骤,只需让显示控制器读取先前合成的缓冲区:

  • 显示控制器读取一个平面

...与仅使用覆盖平面相比,在扫描输出期间可以节省一帧读取。