1

我一直在阅读这个 URL 以了解表面抛掷物。

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

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

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

4

1 回答 1

4

想象一下合成两个平面。

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

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

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

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

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

...与一直使用覆盖平面相比,它可以在扫描期间为您节省一帧读取。

于 2017-09-25T17:59:15.870 回答