[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