I’m using an iMX8DX with Viola, Torizon OS 6, and the wayland-base-vivante:3 image. I’ve been trying to use the VPU, but I’m still facing performance issues, and CPU usage is very high.
I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
Did you like my answer?
Hello, and thank you for sharing a detailed description of your setup and issue.
1. VPU Support on iMX8DX with Torizon OS 6
Based on the currently available documentation, there is no explicit confirmation that the i.MX8DX’s VPU is officially supported for hardware video encoding/decoding in Torizon OS 6 or 7. While Toradex provides VPU-accelerated GStreamer pipelines for i.MX8 families, specific support or stability for the i.MX8DX variant is not documented. This can result in software fallbacks and high CPU usage (Video Processing GStreamer), (How to Use GStreamer on TorizonCore).
Make sure the necessary VPU-related GStreamer plugins (e.g., gstreamer1.0-imx or equivalent) are available in your container. The wayland-base-vivante image is designed for this.
Replace jpegdec with v4l2jpegdec only if hardware-accelerated decoding is confirmed to be available.
C. Container Device Access
Ensure the container is running with access to /dev/video4, /dev/video-dec0, and /dev/video-enc0 (or similarly named devices, depending on your kernel, usually exposed by the VPU).
D. dmabuf Mode
Failure with dmabuf usually suggests that the kernel, driver, or GStreamer plugins lack the necessary support or compatibility for zero-copy operation on your current OS and hardware combination.
3. Next Steps
Double-check the presence of VPU device nodes (e.g., ls /dev/video*).
If not available or pipeline still falls back to software, then current Torizon version may not support hardware VPU on iMX8DX, and performance will be CPU-bound.
If you need help interpreting your pipeline, please paste the output of gst-inspect-1.0 | grep vpu and any error logs from a pipeline invocation using vpuenc_h264, if available.