i.mx6q vivante GPU excessive bus load with Qt5.4 / eglfs and Qt5.4 / X11 (xcb)

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

i.mx6q vivante GPU excessive bus load with Qt5.4 / eglfs and Qt5.4 / X11 (xcb)

879 Views
lo2
Contributor I

Hello,

My setup; i.mx6q and a 1280x800 TFT LCD on one LVDS port, running Linux 3.10.17 & qt5.4.

Using software rendering the bus load is as expected: around 230Mb/sec for a 1280x800 display.

Using QT5.4 and software rendering (QT5.4 / fbdev), the bus load doesn't change much, but the arm cpu load rises due to SW-rendering.

Enabling vivante gpu support (QT5.4 / eglfs), the arm cpu load drops, but the bus load caused by the gpu is excessive.

Same applies to  running the X11 server with vivante driver & QT5.4 (xcb). For mmdc bus load measurement results, see below, Qt5.4/eglfs is more or less the same.

I also did some tests with Qt5.3, the bus load stays the same. The test application isn't really doing much: it's a blank screen with a counter counting up, the bus load should be way below than the reported bus consumption.

Since the same behaviour shows on Qt/eglfs as well on Qt/X11 I don't suspect the qt qpa plugin is buggy.

-> What is causing the high bus load on the GPU3D unit?

-> Could this a configuration issue?

-> are the numbers the mmdc report accurate?

-> Are there newer/updated drivers for the vivante? where?

The ultimate goal is to run three Qt5 applications with acceleration on three different displays (2x 1280x800, 1x 1080x1920), as of now, this completely hangs the display subsystem.

Best regards,

Lo

-------------Test results for X11 vivante driver & QT5.4 (xcb):

# mmdc IPU1

i.MX6Q detected.

MMDC IPU1

MMDC new Profiling results:

***********************

Measure time: 1000ms

Total cycles count: 528057872

Busy cycles count: 521387144

Read accesses count: 3703224

Write accesses count: 0

Read bytes count: 237006336

Write bytes count: 0

Avg. Read burst size: 64

Avg. Write burst size: 0

Read: 226.03 MB/s /  Write: 0.00 MB/s  Total: 226.03 MB/s

Utilization: 2%

Bus Load: 98%

Bytes Access: 64

# mmdc IPU2

i.MX6Q detected.

MMDC IPU2

MMDC new Profiling results:

***********************

Measure time: 1000ms

Total cycles count: 528061448

Busy cycles count: 521377647

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%

Bus Load: 0%

Bytes Access: 0

# mmdc GPU3D

i.MX6Q detected.

MMDC GPU3D

MMDC new Profiling results:

***********************

Measure time: 1000ms

Total cycles count: 528063264

Busy cycles count: 521379193

Read accesses count: 15638321

Write accesses count: 28525663

Read bytes count: 719771472

Write bytes count: 1264129448

Avg. Read burst size: 46

Avg. Write burst size: 44

Read: 686.43 MB/s /  Write: 1205.57 MB/s  Total: 1892.00 MB/s

Utilization: 23%

Bus Load: 98%

Bytes Access: 44

# mmdc

i.MX6Q detected.

MMDC SUM

MMDC new Profiling results:

***********************

Measure time: 1001ms

Total cycles count: 528065800

Busy cycles count: 521318372

Read accesses count: 19621180

Write accesses count: 28598965

Read bytes count: 967430824

Write bytes count: 1265224528

Avg. Read burst size: 49

Avg. Write burst size: 44

Read: 921.69 MB/s /  Write: 1205.41 MB/s  Total: 2127.10 MB/s

Utilization: 26%

Bus Load: 98%

Bytes Access: 46

-------------Test results for software rendering w/ QT5.4 (fbdev):

# mmdc IPU1

i.MX6Q detected.

MMDC IPU1

MMDC new Profiling results:

***********************

Measure time: 1000ms

Total cycles count: 528092648

Busy cycles count: 93294623

Read accesses count: 3703480

Write accesses count: 0

Read bytes count: 237022720

Write bytes count: 0

Avg. Read burst size: 64

Avg. Write burst size: 0

Read: 226.04 MB/s /  Write: 0.00 MB/s  Total: 226.04 MB/s

Utilization: 15%

Bus Load: 17%

Bytes Access: 64

# mmdc GPU3D

i.MX6Q detected.

MMDC GPU3D

MMDC new Profiling results:

***********************

Measure time: 1000ms

Total cycles count: 528060952

Busy cycles count: 93162424

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%

Bus Load: 0%

Bytes Access: 0

# mmdc

i.MX6Q detected.

MMDC SUM

MMDC new Profiling results:

***********************

Measure time: 1000ms

Total cycles count: 528067488

Busy cycles count: 93230604

Read accesses count: 3769392

Write accesses count: 9059

Read bytes count: 238287920

Write bytes count: 259264

Avg. Read burst size: 63

Avg. Write burst size: 28

Read: 227.25 MB/s /  Write: 0.25 MB/s  Total: 227.50 MB/s

Utilization: 15%

Bus Load: 17%

Bytes Access: 63

# mmdc IPU2

i.MX6Q detected.

MMDC IPU2

MMDC new Profiling results:

***********************

Measure time: 1000ms

Total cycles count: 528059608

Busy cycles count: 93173494

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%

Bus Load: 0%

Bytes Access: 0

Labels (3)
0 Kudos
1 Reply

341 Views
Yuri
NXP Employee
NXP Employee

  The GPU in itself provides significant bus load, because of memory read / write operations.

Alas, we do not have estimations about GPU bus load because of memory traffic.

Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos