Hello community,
I try to build mmdc.c/mmdc.h on the Anddoid BSP N7.1.2_2.0.0 by
copy mmdc directory in git/test/mmdc of LinuxBSP.
And edit android_v7_defconfig as CONFIG_DEVMEM=y and CONFIG_DEVKMEM=y to enable /dev/mem.
And try to profile MMDC with mmdc2 command as following.
sabresd_6dq:/ # mmdc2 PRE
i.MX6QP detected.
MMDC PRE
MMDC new Profiling results:
***********************
Measure time: 500ms
Total cycles count: 264046176
Busy cycles count: 14065631
Read accesses count: 0
Write accesses count: 0
Read bytes count: 0
Write bytes count: 0
Avg. Read burst size: 0
Avg. Write burst size: 0
Read: 0.00 MB/s / Write: 0.00 MB/s Total: 0.00 MB/s
Utilization: 0%
Overall Bus Load: 0%
Bytes Access: 0
It is not change with video playback both Cactus Player and Gallery.
In Linxu BSP it can show some small traffic almost 3% in PRE3
Is it mean that Android BSP is not use PRE/PRG feature?
Best regards.
Ishii.
Hello, Jimmychan,
Thank you for your reply.
I will test and read a source code of android M6.0.1.
Best regards,
Ishii.
Hello Jimmychan,
Thank you for your reply.
I try to rebuild android with engineer mode and ro.secure=0, ro.debuggable=1 setting.
But it is a same result as following.
In running Cactus Player, VPU and GPU2D/GPU3D return some bus load value.
But "mmdc2 PRE" command not return any bus traffic value.
The other hand, I analysed a source code of "myandroid/kernel_imx/drivers/video/fbdev/mxc/mxc_ipuv3_fb.c"
On Linux, kernel call mxcfb_pan_display() function.
On Android, kernel call mxcfb_update_screen(), and it seems that this implement is not used PRE function.
Is it need some setting to use PRE/PRG function in android BSP?
Or do you have some patches to enable PRE/PRG feature?
sabresd_6dq:/ # mmdc2
i.MX6QP detected.
MMDC SUM
MMDC new Profiling results:
***********************
Measure time: 500ms
Total cycles count: 264080488
Busy cycles count: 45603966
Read accesses count: 4336012
Write accesses count: 2064081
Read bytes count: 273010056
Write bytes count: 121779816
Avg. Read burst size: 62
Avg. Write burst size: 58
Read: 520.73 MB/s / Write: 232.28 MB/s Total: 753.00 MB/s
Utilization: 54%
Overall Bus Load: 17%
Bytes Access: 61
sabresd_6dq:/ # mmdc2 ARM
i.MX6QP detected.
MMDC ARM
MMDC new Profiling results:
***********************
Measure time: 500ms
Total cycles count: 264049072
Busy cycles count: 46963525
Read accesses count: 1139428
Write accesses count: 196228
Read bytes count: 70493408
Write bytes count: 6180920
Avg. Read burst size: 61
Avg. Write burst size: 31
Read: 134.46 MB/s / Write: 11.79 MB/s Total: 146.24 MB/s
Utilization: 10%
Overall Bus Load: 17%
Bytes Access: 57
sabresd_6dq:/ # mmdc2 VPU
i.MX6QP detected.
MMDC VPU
MMDC new Profiling results:
***********************
Measure time: 501ms
Total cycles count: 264049592
Busy cycles count: 45010808
Read accesses count: 44209
Write accesses count: 88320
Read bytes count: 1724936
Write bytes count: 1545600
Avg. Read burst size: 39
Avg. Write burst size: 17
Read: 3.28 MB/s / Write: 2.94 MB/s Total: 6.23 MB/s
Utilization: 0%
Overall Bus Load: 17%
Bytes Access: 24
sabresd_6dq:/ # mmdc2 GPU2D
i.MX6QP detected.
MMDC GPU2D
MMDC new Profiling results:
***********************
Measure time: 500ms
Total cycles count: 264047456
Busy cycles count: 44977857
Read accesses count: 1721107
Write accesses count: 1668012
Read bytes count: 110009856
Write bytes count: 106752768
Avg. Read burst size: 63
Avg. Write burst size: 64
Read: 209.83 MB/s / Write: 203.61 MB/s Total: 413.44 MB/s
Utilization: 30%
Overall Bus Load: 17%
Bytes Access: 63
sabresd_6dq:/ # mmdc2 GPU3D
i.MX6QP detected.
MMDC GPU3D
MMDC new Profiling results:
***********************
Measure time: 501ms
Total cycles count: 264046488
Busy cycles count: 45332173
Read accesses count: 47244
Write accesses count: 133441
Read bytes count: 2981360
Write bytes count: 8540176
Avg. Read burst size: 63
Avg. Write burst size: 63
Read: 5.68 MB/s / Write: 16.26 MB/s Total: 21.93 MB/s
Utilization: 1%
Overall Bus Load: 17%
Bytes Access: 63
sabresd_6dq:/ # mmdc2 PRE
i.MX6QP detected.
MMDC PRE
MMDC new Profiling results:
***********************
Measure time: 500ms
Total cycles count: 264046520
Busy cycles count: 44512902
Read accesses count: 0
Write accesses count: 0
Read bytes count: 0
Write bytes count: 0
Avg. Read burst size: 0
Avg. Write burst size: 0
Read: 0.00 MB/s / Write: 0.00 MB/s Total: 0.00 MB/s
Utilization: 0%
Overall Bus Load: 0%
Bytes Access: 0
Best regards,
Ishii.
Please check if there is PRE interrupt.
root@sabresd_6dq:/ # cat /proc/interrupts | grep pre
301: 0 0 0 0 GPC 90 Edge 21c8000.pre
302: 0 0 0 0 GPC 97 Edge 21c9000.pre
303: 0 0 0 0 GPC 98 Edge 21ca000.pre
304: 824 0 0 0 GPC 99 Edge 21cb000.pre
Hello Jimmychan,
A result of PRE interrupt after boot Android N7.1.2 are following,
sabresd_6dq:/ # cat /proc/interrupts | grep pre
77: 0 0 0 0 GPC 90 Edge 21c8000.pre
78: 0 0 0 0 GPC 97 Edge 21c9000.pre
79: 0 0 0 0 GPC 98 Edge 21ca000.pre
80: 1956 0 0 0 GPC 99 Edge 21cb000.pre
sabresd_6dq:/ #
It is not changed after booting.
Best regards,
Ishii.
I got the reply from the expert team.
=========================
In android M6.1.0, PRE is used.
But in N7.1.2 and above, MXCFB_UPDATE_SCREEN is added in Linux Kernel, PRE is not used in the function.
=========================