android 画面渲染gpu cpu,android渲染使用CPU而不是GPU?

Android系统中,表面组合有三种主要方法:1) 使用叠加平面,由最近的设备在显示时进行组合,这是最有效的方式,也是DRM视频的必要条件;2) 在GPU上使用OpenGLES,适用于超过四个平面的组合,以及虚拟显示和屏幕录制;3) 在CPU上进行组合,但不常见。GPU组合在某些情况下能节省带宽和电力。通过`adb shell dumpsys SurfaceFlinger`可以查看详细过程,而`prepare()`和`set()`调用可能在systrace中可见,但它们并不直接涉及像素组成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表面组合有三种方法:

>使用“叠加”平面.当像素被发送到显示器时,最近的设备将组成多达四个平面.这(通常)是进行表面组合的最有效方式.它是DRM视频所必需的,因为目前GLES无法构成“安全”曲面.

>在GPU上,使用OpenGL ES.如果你有超过四架飞机要组成,SurfaceFlinger将会回归到这个状态.它还用于虚拟显示和屏幕记录等.在某些设备上,如果没有任何表面稍微更新过,硬件编写器将使用GPU组合曲面,然后只显示单个缓冲区.如果没有任何变化,这比覆盖平面更有带宽效率(因为您不必遍历所有表面,这意味着您需要更少的内存带宽,这意味着您可以降低时间,这意味着您可以使用更少的功率).

>在CPU上.没有人这样做了.

它究竟在做什么因设备而异,并随着时间的推移而发展.如果你想确切地看到它在做什么,试试adb shell dumpsys SurfaceFlinger.硬件作曲家的细节(靠近底部)是最有趣的部分.在运行命令时,您可能需要在设备显示屏上主动滚动某些内容以避免GLES优化.

我猜你在systrace中看到的是prepare()和set()调用和缓冲区管理,而不是实际的像素组成.

更新:在this post中有一个非常好的写作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值