Hi all,
I am working on a i.MX6Q based board. When I'm running CTS test case "android.view.cts.DisplayRefreshRateTest#testRefreshRate" on R13.4GA (Android 4.0.4), it worked but failed when it's on JB4.2.2_1.1.0.
I checked the logcat massage. It claimed that the display fps is 60. In fact, it's 52.
Is it possible that GPU's efficiency is lower on JB4.2.2_1.1.0. or if there's any other reason cause this problem.
The attachment below is logcat massage when running CTS. Monitor resolution is 1080p, 60HZ, HDMI
I'd appreciate any advice to solve this problem. Thanks.
Original Attachment has been moved to: Logcat.txt.zip
已解决! 转到解答。
CTS was tested on LVDS not in 1080p HDMI display,
Could you run the GPU driver version on Android JB4.2.2_1.1.0 on ICS?
That can be done following the instructions in the link below.
https://community.freescale.com/docs/DOC-94481
That will help us determine if we have a performance drop on the GPU driver.
Michel
Hi all,
I have done this CTS test case in boundary devices sabre lite board.
I got the same result. It passed in Android 4.0.4 but failed in Android 4.2.2.
The CTS results are as attachment and detail information is in below.
Hardware: Boundary devices sabre lite rev-D
Software: Android 4.0.4 => Download demo image from boundary devices.
http://boundarydevices.com/eula?file=imx-android-r13.4-20121128.tar.gz
Android 4.2.2 => Download demo image from boundary devices.
http://boundarydevices.com/eula?file=imx6-jb-20130628.tar.gz
resolution: 1920x1080.
I'd appreciate any advice to solve this problem. Thanks.
Dear Guillermo, Xuegang Liu, Gabriel,
I've applied JB4.2.2_1.1.0 release patch and also disabled "the LDB display" in the following file: hardware/imx/mx6/hwcomposer/hwc_display.cpp (between line 107 and 111),
It fixed the issue for testcase "android.view.cts.DisplayRefreshRateTest#testRefreshRate".
But now another testcase started failing randomly android.textureview.cts.TextureViewTest - testTextureViewStress200Hz and testTextureViewStress48Hz
Error: junit.framework.AssertionFailedError: Did not complete 200Hz test. at android.textureview.cts.TextureViewTest.testTextureViewStress200Hz(TextureViewTest.java:53)
Please suggest if you have found solution for these testcases as well.
Thanks in advance for your help.
Best Regards,
Ravindra
Hello,
I debug this issue today, below are what I find so far.
1. This test case just call glclear() to measure the performance. Just as customer said, update GPU to the version JB4.2.2_1.1.0 release, ICS still can pass, so the gap not come from GPU itself. Use the same GPU version and disable 2D hwcomposer (as this case is test 3D, disable 2D hwcomposer will make the comparing more clear ), ICS get 46fps but JB4.x only 30fps.
2. The case use GLSurfaceView, on ICS GLSurfaceView default use RGB_565 format, but on JB4.2.2 GLSurfaceView default use RGB_888 format, you can the differenct in frameworks/base/opengl/java/android/opengl/GLSurfaceView.java, this difference do involve some gap (about 3~5 fps).
private class SimpleEGLConfigChooser extends ComponentSizeChooser {
public SimpleEGLConfigChooser(boolean withDepthBuffer) {
super(8, 8, 8, 0, withDepthBuffer ? 16 : 0, 0);
}
}
3. It should be other difference in framework on ICS and JB4.x cause other gaps, will do further check.
I disable all GPU acceleration and test this case use android native software opengl (libagl), below is the result, it further prove the gap is not related with GPU, the gap should related with framework difference, all android device should show the same gap.
ICS 13.4:
D/DisplayRefreshRateTest(3432): claimed 60.0 fps, achieved 4.940334 fps.
JB4.x:
D/DisplayRefreshRateTest(3970): claimed 40.000004 fps, achieved 2.837398 fps.
Hi ,
Could the problem come from the implementation of the hwcomposer in the Vivante GPU ? Apparently, there is a big difference in the implementation between ICS and JB, the architecture has been reviewed and there are not using the same function anymore to draw on the display.
Apparently, the function " int err = ctx->m_viv_hwc->set(ctx->m_viv_hwc, numDisplays, displays);" is pretty slow to be processed in JB, around 40ms at 1080p (hardware/imx/mx6/hwcomposer/hwcomposer.cpp), can you confirm the same behavior ?
Gabriel
Hi Xuegang,
Apparently the HDMI Display is not the primary display in Android even if the LDB display is not connected. By disabling the LDB display in the following file: hardware/imx/mx6/hwcomposer/hwc_display.cpp (between line 107 and 111), It fixed the issue on my side, and now the CTS pass the test, can you confirm the same behavior on your side?
Thanks,
Gabriel
Hi Gabriel,
This solution (By disabling the LDB display in the following file: hardware/imx/mx6/hwcomposer/hwc_display.cpp (between line 107 and 111), fixed the problem.
CTS testcase passing now.
Thanks,
Hi,
I am also facing the same CTS Testcase failure for Android 4.2.2 (CTS Version 4.2_r4) on iMX6 (SABRESD-MX6DQ):
10-10 21:17:38 I/0123456789ABCDEF: android.view.cts.DisplayRefreshRateTest#testRefreshRate FAIL
junit.framework.AssertionFailedError
at android.view.cts.DisplayRefreshRateTest.testRefreshRate(DisplayRefreshRateTest.java:198)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)
Testcase is failing because, the claimed display referesh rate is ~60FPS (59 FPS), but the achieved display refresh rate for the test is only 30 FPS.
When the disparity is not lower than the threshold (2FPS) specified by then test application, it asserts.
Did any one found solution to avoid this failure ?
Thanks in advance for any help/suggestion.
CTS was tested on LVDS not in 1080p HDMI display,
Could you run the GPU driver version on Android JB4.2.2_1.1.0 on ICS?
That can be done following the instructions in the link below.
https://community.freescale.com/docs/DOC-94481
That will help us determine if we have a performance drop on the GPU driver.
Michel
Hi Guillerm,
I've followed directions to run GPU on Android 4.0.4. and the CTS test worked on Android 4.0.4..
Maybe GPU isn't related to cause the test failed on Android 4.2.
Please kindly help me to check out what issue may cause this problem.
I'd appreciate any advice to solve this problem. Thanks