为什么我将debug.sf.hwc.min.duration设置为23000000或0,为何屏幕帧率也能120hz,并且google cts测试run cts-on-gsi -m CtsViewTestCases -t android.view.cts.DisplayRefreshRateTest#testRefreshRate可以测试过;而将debug.sf.hwc.min.duration设置为2000000时,cts 测试项run cts-on-gsi -m CtsViewTestCases -t android.view.cts.DisplayRefreshRateTest#testRefreshRate反而测试不过,说是帧率达不到120hz,error log:DisplayRefreshRateTest: claimed 120.00001 fps, achieved 79.97163 fps。这是为什么呢
时间: 2024-03-28 11:37:10 浏览: 208
根据您提供的信息,我可以初步判断这是由于您设置的debug.sf.hwc.min.duration参数不同,导致系统对屏幕刷新率的控制不同所造成的。
debug.sf.hwc.min.duration参数控制了硬件合成器(HWC)所提交的帧缓冲区的最小持续时间,这也就决定了每个缓冲区在屏幕上显示的时间长度,从而影响了屏幕的刷新率。当您将debug.sf.hwc.min.duration设置为23000000或0时,缓冲区的持续时间较长,显示器有足够的时间将缓冲区的内容显示在屏幕上,因此屏幕可以显示出120hz的刷新率。而将debug.sf.hwc.min.duration设置为2000000时,缓冲区的持续时间较短,显示器无法在缓冲区显示完毕前完成刷新,导致屏幕的帧率下降,无法达到120hz的要求。
需要注意的是,不同的设备和系统版本可能对debug.sf.hwc.min.duration参数的使用有所不同,因此具体情况需要根据您的设备和系统版本进行分析。
相关问题
为什么我将debug.sf.hwc.min.duration设置为23000000时,为何屏幕帧率也能达到120hz,按照每帧处理数据最小的持续时间为23000000ns算,1s中的帧率应该是1/0.023约等于43.782帧,为何屏幕刷新率仍能达到120帧呢
debug.sf.hwc.min.duration是一个用于限制硬件合成器的属性,它限制了硬件合成器处理每一帧数据的最小时间,如果设置为23000000ns,那么每帧数据的处理时间不得少于23ms。这个属性的作用是为了防止硬件合成器在处理数据时过于频繁地触发刷新操作,从而导致帧率下降和电池寿命变差。
然而,屏幕刷新率并不是由debug.sf.hwc.min.duration属性单独控制的,它还受到其他因素的影响,比如硬件性能、软件优化等。如果您的设备硬件性能足够强大,或者系统软件进行了优化,那么即使debug.sf.hwc.min.duration被设置为23000000ns,屏幕刷新率仍然可以达到120帧。
因此,您观察到的屏幕刷新率仍然达到了120帧,可能是由于其他因素的影响,而不是由于debug.sf.hwc.min.duration属性的限制。
debug.sf.use_phase_offsets_as_durations debug.sf.late.sf.duration debug.sf.late.app.duration debug.sf.early.sf.duration debug.sf.early.app.duration debug.sf.earlyGl.sf.duration debug.sf.earlyGl.app.duration debug.sf.hwc.min.duration=0这个个东西都是干嘛用的?有什么作用?会影响什么
这些参数都是与 Android 系统中的 SurfaceFlinger 相关的,SurfaceFlinger 是 Android 系统用来管理和合成应用程序中的视图和图形的服务。这些参数控制着 SurfaceFlinger 的行为,包括图像渲染的时间,延迟和显示持续时间等。
具体来说,这些参数的含义如下:
1. debug.sf.use_phase_offsets_as_durations:将帧渲染的时间分成多个阶段,并将每个阶段的时间作为帧的持续时间。这个参数主要用于调试。
2. debug.sf.late.sf.duration:SurfaceFlinger 在处理帧时允许的最大延迟时间。
3. debug.sf.late.app.duration:应用程序在向 SurfaceFlinger 提交帧时允许的最大延迟时间。
4. debug.sf.early.sf.duration:SurfaceFlinger 在处理帧时允许的最小持续时间。
5. debug.sf.early.app.duration:应用程序在向 SurfaceFlinger 提交帧时允许的最小持续时间。
6. debug.sf.earlyGl.sf.duration:SurfaceFlinger 在处理 OpenGL 帧时允许的最小持续时间。
7. debug.sf.earlyGl.app.duration:应用程序在向 SurfaceFlinger 提交 OpenGL 帧时允许的最小持续时间。
8. debug.sf.hwc.min.duration:硬件合成器允许的最小持续时间。
这些参数的设置会影响到应用程序的帧率、响应时间和稳定性。如果设置不当,可能会导致应用程序出现卡顿、延迟或者闪烁等问题。因此,需要根据具体情况进行调整,以提高应用程序的性能和用户体验。
阅读全文