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

Denis Shienkov denis.shienkov at gmail.com
Thu Nov 5 11:12:58 CET 2015


> That said, it most likely won’t help you since I doubt this is functional
in the Linux for Tegra images for the TK1.

Ok, thanks.. let's will forget about KMS/DRM, because now I want to use
EGLFS via X11.

So, now, directly run of the 'standard' GStreamer's 'gst-launch' tool it is
allowed for me to show a video from the camera Logitech c920 without
freezes (but with some artifacts):

{quote}
ubuntu at tegra-ubuntu:~$ gst-launch-1.0 -e v4l2src device=/dev/video0 !
'video/x-raw, format=(string)I420, framerate=20/1' ! xvimagesink sync=false
{quote}

where I use such parameters as 'framerate=30' and 'sync=false'.

So, is it possible to pass this parameters to the Qt (QML) application
which are used GStreamer too?

BR,
Denis



2015-11-05 11:47 GMT+03:00 Agocs Laszlo <laszlo.agocs at theqtcompany.com>:

> As for #1, yes, the new backend is 5.6 only. It is different from
> eglfs_kms. The latter uses GBM for buffer management while the new one
> relies on EGLDevice, EGLOutput and EGLStream. (if interested in the
> details, check this presentation:
> http://www.x.org/wiki/Events/XDC2014/XDC2014RitgerEGLNonMesa ) That said,
> it most likely won’t help you since I doubt this is functional in the Linux
> for Tegra images for the TK1.
>
>
>
> Best regards,
>
> Laszlo
>
>
>
> *From:* Denis Shienkov [mailto:denis.shienkov at gmail.com]
> *Sent:* 4. november 2015 19:08
> *To:* interest at qt-project.org
> *Cc:* Agocs Laszlo <laszlo.agocs at theqtcompany.com>; Thiago Macieira <
> thiago.macieira at intel.com>; Lopes Yoann <Yoann.Lopes at theqtcompany.com>
>
> *Subject:* Re: [Interest] Qt 5.5.x & NVIDIA Tegra Jetson TK1 video
> performance issue
>
>
>
> 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
> <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> <denis.shienkov at gmail.com>
> *Cc:* Thiago Macieira <thiago.macieira at intel.com>
> <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>
> *To:* interest at qt-project.org
> *Cc:* "Thiago Macieira" <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
> http://lists.qt-project.org/mailman/listinfo/interest
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20151105/be17a741/attachment.html>


More information about the Interest mailing list