2D hardware acceleration on imx6

We are evaluating the Torizon platform with a Colibri iMX6DL on top of a Colibri Evaluation Board V3.
We are running the Weston and qt5-wayland-examples containers.
Our board is connected to a screen that has a resolution of 1024x768.
To make tests we use the “animation” example, which we modify its source code “.qml” files to adapt it to our resolution.
During the tests we detected a low FPS rate, if we lower the resolution to a smaller one it increases.
We wanted to know if there is a way to enable acceleration through the Vivante GC880 GPU that the imx6 has?

Greetings @FPbu,

How are you defining “low FPS rate” in your testing?

Graphical applications on the Colibri i.MX6 should already be utilizing the GPU when possible. On my own setup I ran the “animation” example and I didn’t notice any particularly bad FPS. Nor did i observe any excessive CPU usage, while the example was running. Meaning I assume the GPU is being utilized. Other than this the animation examples seemed fairly smooth and responsive.

Though I admit the display I’m using has a noticeably smaller resolution at 800x480, though it’s the only display I have available at the moment.

Perhaps you can record and attach a video showing this poor performance.

Best Regards,

Hi Jeremias!
Thanks for your answer.
In our case, we have a higher resolution and we noticed that when we increase the size of the window (“fullscreen”) or modify the size of the resolution in the example source code, there is a big drop in FPS, for this reason we suspected that the GPU was not being used.
When running the qt5-wayland-examples container, we pass it --privileged as an argument.
Attached is a video of how it works.
On the other hand, you mention that you don’t see excessive CPU usage, how could we see the performance of our board?

Well I wasn’t expecting the performance to be as bad as your video shows, but that definitely does not seem intended. What I was on my setup was fairly smooth. Even considering that you have a higher resolution display than I do, I wouldn’t expect the performance to drop by this much.

I have a couple of questions now upon seeing your video.

  • This 1024x768 display you have. Did you properly configure it’s timings and such via the device tree? And also what display interface is this? I assume it’s parallel RGB.
  • How exactly are you running the containers? What are the exact commands you run?
  • As for the demo app itself, when decrease the size of the window you say the FPS improves. Does it improve to acceptable levels? Or it improves but it’s still choppy?
  • Finally, what version of TorizonCore are you running on this board?

On the other hand, you mention that you don’t see excessive CPU usage, how could we see the performance of our board?

I typically just use top to monitor CPU usage while the demo QT app is running. It does show some CPU usage but not enough to suspect that the CPU is rendering graphics over the GPU.

Best Regards,

Hi Jeremias, thanks for your reply.

Did you properly configure it's timings and such via the device tree?

We created and modified the overlay display-vga_overlay.dts for XGA resolution and set the timings for VGA signal. http://tinyvga.com/vga-timing/1024x768@60Hz. we don't believe this is the problem. status = "okay"; width-mm = <307>; height-mm = <230>; panel-timing { clock-frequency = <65000000>; hactive = <1024>; vactive = <768>; hsync-len = <136>; hfront-porch = <24>; hback-porch = <160>; vsync-len = <6>; vfront-porch = <3>; vback-porch = <29>;

What display interface is this?

We are using the VGA output of the eval v3 carrier board. It is connected to a standard LCD controller which is driving the LCD panel.

How exactly are you running the containers? What are the exact commands you run?

Docker commands:
docker run -d --rm --name=weston --net=host --env ENABLE_VNC=1 --cap-add CAP_SYS_TTY_CONFIG -v /dev:/dev -v /tmp:/tmp -v /run/udev/ :/run/udev/ --device-cgroup-rule='c 4:* rmw' --device-cgroup-rule='c 13:* rmw' --device-cgroup-rule='c 199:* rmw ' --device-cgroup-rule='c 226:* rmw' torizon/weston:2 --developer weston-launch --tty=/dev/tty7 --user=torizon
docker run --rm -it --privileged --name=qt5 -v /tmp:/tmp -v /dev/dri:/ dev/dri -v /home/torizon:/home/torizon --device-cgroup-rule='c 226:* rmw' torizon/qt5-wayland-examples:$CT_TAG_QT5_WAYLAND_EXAMPLES bash

Does it improve to acceptable levels?

An improvement is noticeable, but an acceptable fluidity is not appreciated, only if the resolution is reduced to 640x480 we have a good FPS.

What version of TorizonCore are you running on this board?

Torizon 5.5

Best Regards.

Ok given the information you provided me I believe I know what’s wrong here. In your docker run command you are specifying --env ENABLE_VNC=1. I know enabling VNC can have the effect of degrading the performance of graphical apps.

I tried this on my side and even with my display’s lower resolution of 800x480 I was able to notice the worse performance by enabling VNC in Weston. Though I’m not sure if it’s a bug whether performance should suffer this much with VNC enabled, I’ll run this by the team internally.

As for your situation is VNC required for your use case then?

Best Regards,

hello Jeremias

We removed the VNC command and performance was excellent.
thanks for your help.

Glad this was the only issue on your side as well. So I assume then you don’t need VNC enabled in your final product?

Best Regards,

No, we don’t need the VNC for our final product.
Thank you very much for your help. :clap: