[Interest] Qt 5.5.x & NVIDIA Tegra Jetson TK1 video performance issue

Denis Shienkov denis.shienkov at gmail.com
Wed Nov 4 19:08:26 CET 2015


Laszlo, thanks for your answer.

So, I have another questions:

1. What is "eglfs_kms_egldevice" ? Is it introduced in Qt 5.6 only? What 
for this option? Is is equal to "eglfs_kms" option?

2. Is it possible to change the Gstreamer's sinks from Qt application? 
Is it make sense?
Because according to NVIDIA Tegra's documentation [1], I can (?) run the 
'gst-launch' utility using different sinks,
like 'xvimagesink', 'nv_omx_hdmi_videosink', 'nveglglessink' and so on 
to test performance with the native stuff..

BR,
Denis

-----
[1] 
http://developer.download.nvidia.com/embedded/L4T/r21_Release_v3.0/L4T_Jetson_TK1_Multimedia_User_Guide_V2.1.pdf


04.11.2015 12:26, Agocs Laszlo пишет:
>
> * do you have any trics and recommendations how to properly compile Qt 
> on Tegra Jetson TK1 (maybe requires another flags and so on)?
>
> What you have should be good enough. Qt 5.6 comes with Jetson Pro 
> support and it looks more or less the same when it comes to the 
> compiler flags: 
> http://code.qt.io/cgit/qt/qtbase.git/tree/mkspecs/devices/linux-jetson-tk1-pro-g++/qmake.conf
>
>
> * how to run the GUI application properly with KMS and so on?
>
> You can’t. AFAIK the public TK1 is pretty much X11 only with NVIDIA’s 
> binary drivers. (the Jetson Pro is a different story, though) You 
> could try an open-source stack with Nouveau for KMS, Wayland, etc. but 
> no idea how stable that is nowadays.
>
> Video with Qt Multimedia did not really work out of the box the last 
> time I tried it. It has not been investigated much since. Anyway, the 
> slow speeds are likely related to the camera/GStreamer/QtMultimedia, 
> not Qt in general as Qt apps are known to run pretty well on the TK1.
>
> Best regards,
>
> Laszlo
>
> *From:*Interest [mailto:interest-bounces at qt-project.org] *On Behalf Of 
> *Jason H
> *Sent:* 3. november 2015 21:59
> *To:* Denis Shienkov <denis.shienkov at gmail.com>
> *Cc:* Thiago Macieira <thiago.macieira at intel.com>; interest at qt-project.org
> *Subject:* Re: [Interest] Qt 5.5.x & NVIDIA Tegra Jetson TK1 video 
> performance issue
>
> I didn't use that confguration, but I have compiled Qt on an Atom with 
> a Tegra chipset. I vaguely remember optimizing the video stack. By 
> default it was using a CPU renderer, but I beulve the trick was 
> re-compiling GStreamer to use the proper hardware acceleration. There 
> may have been an environment variable involved in getting GStreamer to 
> select the proper back-end -- that is to say GStreamer had it own 
> envionment variable , not a QT_ one -- IIRC.
>
> I am sorry I can't be more specific, but maybe that can get you in the 
> right direction.
>
> Also, I remember using the 'top' command and I think it being rather 
> obvious who who the culprit was who was not using hardware rendering. 
> Once I got it all set, even on that old Atom, it was doing 30fps with 
> less than 10% CPU.
>
> That said, in my experience linuxFB is extremely slow, never use it 
> for video.
>
> If you can't find the DRM device, then you are missing the Direct 
> Render Mode drivers for it. That said, I've never used DRM without X.
>
> *Sent:* Tuesday, November 03, 2015 at 12:20 PM
> *From:* "Denis Shienkov" <denis.shienkov at gmail.com 
> <mailto:denis.shienkov at gmail.com>>
> *To:* interest at qt-project.org <mailto:interest at qt-project.org>
> *Cc:* "Thiago Macieira" <thiago.macieira at intel.com 
> <mailto:thiago.macieira at intel.com>>
> *Subject:* [Interest] Qt 5.5.x & NVIDIA Tegra Jetson TK1 video 
> performance issue
>
> Hi Qt developers.
>
> I have veeery slow video performance with Qt 5.5.1 and the video 
> camera (frame rate about ~1-3 fps) on Tegra Jetson TK1 device, where 
> the video stream writes via HDMI interface to the monitor.
>
> My stuff is:
>
> * Qt 5.5.1, cross-compiled himself.
> * Tegra Jetson TK1 board [1]
> * Logitech c920 USB camera (supports 1920x1080 @ 30 Hz) [2]
>
> I compiled Qt with this C++ flags:
>
> {quote}
> DISTRO_OPTS += hard-float
>
> QMAKE_INCDIR += /usr/arm-linux-gnueabihf/include \
> /usr/arm-linux-gnueabihf/include/c++/4.8.2 \
> /usr/arm-linux-gnueabihf/include/c++/4.8.2/arm-linux-gnueabihf
>
> TEGRA_TK1_CFLAGS = -mcpu=cortex-a15 -mfpu=neon-vfpv4 -marm
> QMAKE_CFLAGS += $$TEGRA_TK1_CFLAGS
> QMAKE_CXXFLAGS += $$TEGRA_TK1_CFLAGS
> {quote}
>
> with the GStreamer v1.0 , the GL and the EGL (2.0, 3.0) support:
>
> {quote}
> /home/builder/Projects/qt5/./configure \
> -v \
> -release \
> -opensource \
> -confirm-license \
> -make libs \
> -prefix /opt/qt-5.5 \
> -device tegra-tk1 \
> -device-option CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- \
> -sysroot /home/builder/Projects/tegra/rootfs \
> -optimized-qmake \
> -alsa \
> -gstreamer 1.0 \
> -nomake examples \
> -nomake tests \
> -no-compile-examples \
> -no-gtkstyle \
> -no-qml-debug \
> -no-nis \
> -no-mtdev \
> -no-evdev \
> -no-tslib \
> -no-harfbuzz \
> -no-openssl \
> -no-libproxy \
> -no-pulseaudio \
> -no-cups \
> -no-icu \
> -no-fontconfig \
> -no-sql-db2 \
> -no-sql-mysql \
> -no-sql-oci \
> -no-sql-odbc \
> -no-sql-psql \
> -no-sql-sqlite \
> -no-sql-sqlite2 \
> -no-sql-ibase \
> -no-sql-tds \
> -no-directfb \
> -no-xcb \
> -no-xcb-xlib \
> -no-glib \
> -system-zlib \
> -qt-libjpeg \
> -qt-libpng \
> -qt-freetype \
> -opengl es2 \
> -skip qt3d \
> -skip qtactiveqt \
> -skip qtandroidextras \
> -skip qtcanvas3d \
> -skip qtconnectivity \
> -skip qtdoc \
> -skip qtdocgallery \
> -skip qtenginio \
> -skip qtfeedback \
> -skip qtimageformats \
> -skip qtlocation \
> -skip qtmacextras \
> -skip qtpim \
> -skip qtqa \
> -skip qtquick1 \
> -skip qtquickcontrols \
> -skip qtrepotools \
> -skip qtsensors \
> -skip qtserialport \
> -skip qtsystems \
> -skip qttools \
> -skip qttranslations \
> -skip qtwayland \
> -skip qtwebchannel \
> -skip qtwebengine \
> -skip qtwebkit \
> -skip qtwebkit-examples \
> -skip qtwebsockets \
> -skip qtwinextras \
>  {quote}
>
> Resulting configuration are following:
>
> {quote}
> Support enabled for:
>   Accessibility .......... yes
>   ALSA ................... yes
>   CUPS ................... no
>   Evdev .................. no
>   FontConfig ............. no
>   FreeType ............... qt
>   Glib ................... no
>   GStreamer .............. yes (1.0)
>   GTK theme .............. no
>   HarfBuzz ............... no
>   Iconv .................. yes
>   ICU .................... no
>   Image formats:
>     GIF .................. yes (plugin, using bundled copy)
>     JPEG ................. yes (plugin, using bundled copy)
>     PNG .................. yes (in QtGui, using bundled copy)
>   journald ............... no
>   libinput................ no
>   mtdev .................. no
>   Networking:
>     getaddrinfo .......... yes
>     getifaddrs ........... yes
>     IPv6 ifname .......... yes
>     libproxy.............. no
>     OpenSSL .............. no
>   NIS .................... no
>   OpenGL / OpenVG:
>     EGL .................. yes
>     OpenGL ............... yes (OpenGL ES 2.0+)
>     OpenVG ............... no
>   PCRE ................... yes (bundled copy)
>   pkg-config ............. yes
>   PulseAudio ............. no
>   QPA backends:
>     DirectFB ............. no
>     EGLFS ................ yes
>       EGLFS i.MX6....... . no
>       EGLFS KMS .......... yes
>       EGLFS Mali ......... no
>       EGLFS Raspberry Pi . no
>       EGLFS X11 .......... yes
>     LinuxFB .............. yes
>     XCB .................. no
>   Session management ..... yes
>   SQL drivers:
>     DB2 .................. no
>     InterBase ............ no
>     MySQL ................ no
>     OCI .................. no
>     ODBC ................. no
>     PostgreSQL ........... no
>     SQLite 2 ............. no
>     SQLite ............... no
>     TDS .................. no
>   tslib .................. no
>   udev ................... yes
>   xkbcommon-x11........... no
>   xkbcommon-evdev......... no
>   zlib ................... yes (system library)
> {quote}
>
> I tried to launch the QtMultimedia's Camera example (which does not 
> use QML) via SSH connection
> to the Tegra's device, like:
>
> = using LinuxFB =
>
> {quote}
> $ ./camera -platform linuxfb:fb=/dev/fb1
> {quote}
>
> = using EGLFS via X =
> {quote}
> $ export DISPLAY=:0
> $ export |QT_QPA_EGLFS_INTEGRATION=eglfs_x11|
> $ startx &
> $ ./camera -platform eglfs
> {quote}
>
> = using EGLFS via KMS =
>
> {quote}
> $ export DISPLAY=
> $ export |QT_QPA_EGLFS_INTEGRATION=eglfs_kms|
> $ ./camera -platform eglfs
> {quote}
>
> Use of LinuxFB and EGLFS via X gives very slow video performance (~3 
> fps as I spoke before).
>
> Use of EGLFS via KMS gives folloving error:
>
> {quote}
> Could not find DRM device
> Aborted
> {quote}
>
> I found out in the google yours blog [3] from Laszlo Agocs in which 
> Tegra Jetson is mentioned,
> but there are no details about building, running and so on.
>
> So, my question is:
>
> * do you have any trics and recommendations how to properly compile Qt 
> on Tegra Jetson TK1 (maybe requires another flags and so on)?
> * how to run the GUI application properly with KMS and so on?
> * how to check that are used the HW rendering instead of SW rendering 
> of video?
>
>
> BR,
> Denis
>
> ===========
> [1] http://elinux.org/Jetson_TK1
> [2] http://support.logitech.com/product/hd-pro-webcam-c920
> [3] 
> https://blog.qt.io/blog/2015/03/03/qt-weekly-28-qt-and-cuda-on-the-jetson-tk1/
>
> _______________________________________________ Interest mailing list 
> Interest at qt-project.org <mailto:Interest at qt-project.org> 
> http://lists.qt-project.org/mailman/listinfo/interest
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20151104/2f600be1/attachment.html>


More information about the Interest mailing list