Android 8.0 performance on i.MX6DL

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Android 8.0 performance on i.MX6DL

5,531 Views
allenivester
Contributor III

We have a custom board with i.MX6DL SoC which is running Android 7.1.2 based on the NXP sources.  Performance is decent at 720p (HDMI) and worse but tolerable at 1080p.  However, when we run Android 8.0.0 (also from NXP sources) on the same board, UI performance is terrible even at 720p.  We also ran tests with SabreSD (i.MX6Q) on Android 8.0.0 and see sluggish UI transitions, although it is slightly better than our i.MX6DL board (not surprising given the extra two cores and increased L2 cache).

Is anyone else seeing poor UI performance with Android 8.0 on i.MX6 or i.MX7?  For example, there is a significant lag in the Settings app between touch and the subsequent transition to the new activity.  On Android 7.1.2, there was very little delay.  Note that we have 2GB RAM, and most of that is free on Android 8, so we don't seem to be memory constrained.

What could be the cause of the poor UI in Android 8.0.0 on i.MX6?  I know with Android 8, Google introduced the VNDK and it seems NXP has migrated Vivante to that and the ION graphic memory allocator.  Are these just not optimized for the i.MX6?  Was the focus for Android 8.0 primarily on i.MX8?

Thanks for any input.

0 Kudos
Reply
11 Replies

3,831 Views
pragikde
Contributor I

hi everyone,

  I working under android 8 version 4.9.17 how can i load modules with kernel and i enable the ui interface please any one give the answer.

thank and regard

pragadeeswaran R

0 Kudos
Reply

3,831 Views
pascalenz
Contributor I

We're facing the same problem right now.

2D performance is very laggy. Are there any actions we can take?

0 Kudos
Reply

3,831 Views
allenivester
Contributor III

I have an open case with NXP, but it is not progressing.  We and our FAEs are pushing and supposedly the NXP internal team has picked up the case, but I get no feedback.

This certainly seems like a big regression in the graphics drivers or HAL that affects i.MX6 generally.  I know i.MX6 isn't exactly new, but the performance on Android 8 should be similar to Android 7, which was passable.  I view this as a defect for i.MX6 that can and should be fixed.

0 Kudos
Reply

3,831 Views
teedguno
Contributor I

Hi Allen,

Any news from NXP regarding this issue?

0 Kudos
Reply

3,831 Views
jamesbone
NXP TechSupport
NXP TechSupport

The image filter does not test GPU, it is test SKIA(software),  It doesn't use GPU.  So, gpu enabled or disabled, the number is the same. 

PassMark 2D Image Filter results on Android 8.0.0 is slower
than it is on Android 7.1.2. The root cause is the allocated
buffer from ION is not cacheable when usage include READ_OFTEN
or WRITE_OFTEN. After add falg ION_FLAG_CACHED when allocate
memory from ION_HEAP_TYPE_SYSTEM_CONTIG pool, performance has
some improvement but still has gap comparing the result with
Android 7.1.2, if repeat run Image Filter test can get better
score, seems the performane related with cache hit.

0 Kudos
Reply

3,831 Views
frodolai
Contributor IV

It seems the ION_FLAG_CACHED flag is set by default. However, the 2D performance is still very slow. Is there anything else we can try?

vendor/nxp-opensource/kernel_imx/drivers/staging/android/uapi/ion.h:60:#define ION_FLAG_CACHED 1

0 Kudos
Reply

3,831 Views
RandyKrakora
NXP Employee
NXP Employee

I don't think the snippet of code you pasted means this feature is enabled, that is just defining the value of ION_FLAG_CACHED to 1.

I think something like the attached patch would enable the feature.

Regards,

Randy Krakora

0 Kudos
Reply

3,831 Views
teedguno
Contributor I

Ok Thanks. I will check this out to see if it improves UI performance. 

0 Kudos
Reply

3,831 Views
jamesbone
NXP TechSupport
NXP TechSupport

Hello Allen,

The focus of Android 8, was always for the i.MX8 family processors,   but we migrated to the i.MX6QuadPlus and i.MX7  since it was in our roadmap, nevertheless we see some decent performance on our test, we are testing using the pre-build images that we provide in our official web page and the SABRE Boards.

Can you please try this way to see if the performance it is not satisfactory for you?

Thanks in advanced for your feedback

Best Regards

TIC Support Team

0 Kudos
Reply

3,831 Views
allenivester
Contributor III

I think I have discovered a problem with all i.MX6 variants in the 2D graphics area.  I observe the window display latency on Android 8 on i.MX6 Android 8.0.0 demo images for both SabreSD-DL and SabreSD-Quad.  Note that if you run PassMark Mobile on the boards, the 2D Image Filter test is about 10x slower on Android 8 than on Android 7.  I suspect the 2D operations in this test are also the cause of the poor window display performance.

Note that this affects i.MX6 DualLite and Quad.

Details:

We managed to find a SabreSD with i.MX6DL (which is discontinued) and compared its performance with our custom board.  Window display latency (from touch to window display) is about the same on both DL boards with Android 8, and the latency is significantly better on Android 7 with both boards.

We have a stripped down Android app that I instrumented to mark the start time as the "on click" method for a button that shows a Fragment with a few simple text boxes, and I mark the stop time as the "on focus" for the first text box in the fragment.  This is actually a subset of the latency, since it doesn't include the time from touch (lift) detection to "on click" or the longer time between "on focus" and the window completely finished drawing.  But it is representative of the delay and shows how much the delay increases from Android 7 to Android 8.

I ran the window latency test app and PassMark Mobile on:

  • SabreSD-DL with Android 7.1.2 (NXP demo image)
  • SabreSD-DL with Android 8.0.0 (NXP demo image)
  • SabreSD-Quad with Android 7.1.2 (NXP demo image)
  • SabreSD-Quad with Android 8.0.0 (NXP demo image)

I am attaching a spreadsheet with the results, but notice the following:

  • Window latency on both boards is 3 to 4 times as long on Android 8 as it is on Android 7, all other factors unchanged
    • Adding the 300ms or so of "extra time" required to actually finish displaying the window means the latency between touching the button and the dialog window actually appearing went from about 0.5 seconds in Android 7 to almost 1.5 seconds in Android 8, a noticeable and difference that causes causes a poor user experience (users hitting buttons multiple times).
  • The PassMark 2D "image filter test" consistently shows a 90% degradation in Android 8, meaning it takes Android 8 about 10 times as long to complete the test as Android 7.
    • From the PassMark site, the image filter test "applies built-in rotation, brightness and greyscale filters to an image [and] counts the number of filters applied per second."
    • I suspect there is some problem (perhaps as a result of the port to Android 8's VNDK HAL or ION graphic memory allocator) with these 2D operations that are also used in the display or animation of windows.
    • Note, if I disable animations (through developer settings), touch latency improves on Android 8 but is still about twice as long as on Android 7 with animations enabled (1x default).
0 Kudos
Reply

3,831 Views
allenivester
Contributor III

We are looking for a Sabre board with i.MX6DL so we can compare the NXP target platform performance to that of our own board.  Once we have one, we will try the sabresd_6dq image.  Today, the only other 6DL board we have is Wandboard, which only has images for Android 7.1.1 and I gave up trying to get Android 8 running on it (mainly u-boot & kernel problems).  The SabreSD with i.MX6DL will be ideal since that is the reference platform for NXP.

The SabreSD-6Quad that we used for comparison is running the Android 8.0.0-1.0.0 image from the NXP site.  I tried disabling cores 2-3 through the sysfs, but that doesn't really simulate the 6DL, so getting the SabreSD-6DL will be key.

Thanks for the quick response!

Allen

0 Kudos
Reply