android14多屏幕帧率刷新率统计显示开发及成果展示
背景
在SurfaceFlinger课程专题有做了一个帧率显示的工具,大部分在当时的代码大部分在SurfaceFlinger层面实现的。
当时帧率主要还是针对主屏幕这个单一的屏幕。
但是近来有学员提到一个疑问,那就是如果是存在多屏的情况下,而且多屏都在刷新的情况下,那么帧率显示起来就比较乱,因为原来方案基本上都是有layer显示就会累计,根本不管到底是哪个屏幕的。
所以针对上面学员提出的问题,那么就需要考虑对多屏幕的帧率进行区分,各自帧率统计可以针对单独屏幕各自分开,具体设计图如下:
即可以实现有多少屏幕就有多少个对应的帧率,彼此独立。
修改方案
方案设计图:
SurfaceFlinger层面
1、针对layer需要获取每个layer的对应的displayID
2、把displayId需要保存到FrameTimeline类中
3、通过getprop debug.fps.displayId获取当前要求显示哪个displayId
4、在computFps时候,针对拿layer的dispkayID和prop获取的displayID进行比较,相等则可以统计
app层面
1、通过DisplayManager接口获取系统中存在的所有display数组
2、针对display的数组进行list展示,接受点击
3、用户点击具体的display的Item则调用setprop debug.fps.displayId displayID
详细成果视频:
https://www.bilibili.com/video/BV1Vd4negE6b/
相关完整源码可以私聊获取(限vip学员朋友)
hal+perfetto+surfaceflinger
https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
更多framework假威风耗:androidframework007