mt6735 CTS DisplayRefreshRateTest Fail
时间:10-02
整理:3721RD
点击:
The Test PASS when abs(claimedFps - achievedFps) <= 2
*claimedFps =Display.getRefreshRate() (get fROM uboot period)
*achievedFps = mNumFrames/duration (android CTS test peroid: duration >=8s)
目前不能pass大概有以下两种case:
Case 1 :main log pattern 如下:
01-01 22:43:04.559 D/DisplayRefreshRateTest( 1911): claimed 62.0 fps,
achieved 31.30fps
Solution:
–由main log可以看出fail 原因:claimed fps=62fps,而achieved fps=31.30fps,两者的差值>2。
猜测是开启TE后,因为TE delay的时间随机,导致两个阶段得到的fps不太一样。
1.先尝试disable TE进行CTS测试,看是否可以pass。
Ø如果disableTE后,可以pass的话,应该就是TE 影响的,可以参考下面的step2和step3来解决。
Ø如果disable TE后,还是不能pass的话,可能要去检查为什么在CTS阶段LCD的fps会下降这么多。可以跑fps2d.apk, An3DBench这些测试apk来看fps有多少,看是否是2D或者3D处理能力差导致的。
2. 缩短LCD update time:通过提高LCD的clk,如div1和div2的值.
3. 降低TE frequence。
保证用示波器量测到的data lane和TE 的波形满足下面的条件:
在CTS测试FrameRate的时候,在一个TE周期时间内,LCD可以完成一帧数据的刷屏,同时每个TE信号都能触发一次update。
Case 2 :main log pattern 如下:
01-01 08:09:20.867 2132 2144 D DisplayRefreshRateTest: claimed
0.0010035647 fps, achieved 63.327652 fps
Solution:
–由main log可以看出claimed fps=0.001fps,这个值很奇怪,可以通过下面几个地方来一一进行确认:
1.Uboot或者LK阶段计算的fps是否正确:
Uboot开机通过mt65xx_disp_get_lcd_time(),LK开机通过mt_disp_get_lcd_time()
计算一个frame的时间,函数最后将1e8/lcd_time返回给kernel
lcd one 15834 àuboot或LK计算 一个frame的时间,单位是us
[ 0.740714] [FB driver] fps = 6315 àkernel得到的fps=6315/100=63.15fps
由此可以看出Uboot和FB driver传递的fps是正常的,由此推断就是CTS从Surfaceflinger获得的fps有误导致的,可以申请下面的patch: ALPS00366339
(ALPS.JB.MP)来解决。
*claimedFps =Display.getRefreshRate() (get fROM uboot period)
*achievedFps = mNumFrames/duration (android CTS test peroid: duration >=8s)
目前不能pass大概有以下两种case:
Case 1 :main log pattern 如下:
01-01 22:43:04.559 D/DisplayRefreshRateTest( 1911): claimed 62.0 fps,
achieved 31.30fps
Solution:
–由main log可以看出fail 原因:claimed fps=62fps,而achieved fps=31.30fps,两者的差值>2。
猜测是开启TE后,因为TE delay的时间随机,导致两个阶段得到的fps不太一样。
1.先尝试disable TE进行CTS测试,看是否可以pass。
Ø如果disableTE后,可以pass的话,应该就是TE 影响的,可以参考下面的step2和step3来解决。
Ø如果disable TE后,还是不能pass的话,可能要去检查为什么在CTS阶段LCD的fps会下降这么多。可以跑fps2d.apk, An3DBench这些测试apk来看fps有多少,看是否是2D或者3D处理能力差导致的。
2. 缩短LCD update time:通过提高LCD的clk,如div1和div2的值.
3. 降低TE frequence。
保证用示波器量测到的data lane和TE 的波形满足下面的条件:
在CTS测试FrameRate的时候,在一个TE周期时间内,LCD可以完成一帧数据的刷屏,同时每个TE信号都能触发一次update。
Case 2 :main log pattern 如下:
01-01 08:09:20.867 2132 2144 D DisplayRefreshRateTest: claimed
0.0010035647 fps, achieved 63.327652 fps
Solution:
–由main log可以看出claimed fps=0.001fps,这个值很奇怪,可以通过下面几个地方来一一进行确认:
1.Uboot或者LK阶段计算的fps是否正确:
Uboot开机通过mt65xx_disp_get_lcd_time(),LK开机通过mt_disp_get_lcd_time()
计算一个frame的时间,函数最后将1e8/lcd_time返回给kernel
lcd one 15834 àuboot或LK计算 一个frame的时间,单位是us
[ 0.740714] [FB driver] fps = 6315 àkernel得到的fps=6315/100=63.15fps
由此可以看出Uboot和FB driver传递的fps是正常的,由此推断就是CTS从Surfaceflinger获得的fps有误导致的,可以申请下面的patch: ALPS00366339
(ALPS.JB.MP)来解决。
