Android trace presentFence屏幕显示的帧

Android trace presentFence屏幕显示的帧

presentFence :当帧成功显示到屏幕时,present fence就会signal。

FrameMissed/GpuFrameMissed/HwcFrameMissed表示上一次合成的结果,当SurfaceFlinger合成后显示到屏幕上,present fence就会signal。因此可将present fence signal作为一次合成完结标志。SurfaceFlinger每次开始被Vsync-sf唤醒时,会先检查上一次合成情况,方式就是检查上一次合成的present fence有没有signal。如果没有,则认为是FrameMissed,并结合上一次合成方式是否有GPU或者HWC参与,同步GpuFrameMissed/HwcFrameMissed信息。

BufferTx :DrawFrame里queueBuffer以后BufferTx会增加,SF起来响应拿走Buffer合成时会减少; BufferTx内有可用Buffer,SF才会真正去合成。

present fence没有及时signal可能原因是GPU负载过高会导致底层大部分时间都在等GPU渲染工作完成,延迟了present fence的signal,导致FrameMissed。

dequeueBuffer时间长一般就是没有可用的buffer,SurfaceFlinger消费能力有问题,需要去看SurfaceFlinger。

trace中GPU Completion的每个waiting for GPU completion ×××长度,大致可以作为GPU渲染所花费的时间(即acquire fence释放的总时间)。通过这个时间,可以判断是否有GPU bound的现象。

相对应的,waiting for HWC release ×××的长度大致可以作为release fence的释放总时间参考。在release fence signal之前,GPU是无法对dequeueBuffer拿到的Buffer进行读写的(因为此时Buffer还是归HWC所有)。通过这点,可以判断Display是否有问题。

Android trace中CPU的RenderThread与GPU-CSDN博客文章浏览阅读952次,点赞15次,收藏25次。在Android系统中,RenderThread是负责GPU渲染的关键线程,它通过dequeueBuffer和queueBuffer机制与GPU进行交互,执行图形图像的密集渲染任务。RenderThread的存在解耦了Android的UI主线程与GPU渲染,避免了UI线程的阻塞,同时充分利用了GPU的并行计算能力,减少了栅格化的耗时。在硬件加速开启的情况下,RenderThread与GPURenderThread协同工作,通过SurfaceFlinger进行图像合成和显示。如果应用关闭硬件加速,则只有UIT_renderthread https://blog.csdn.net/zhangphil/article/details/148003427

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值