Qt-contributors-summit-2012-Qt-in-Embedded: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
m (Categorize)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
[[Category:QtCS2012]]
Qt Device/Embedded board support vision:
Qt Device/Embedded board support vision:


Line 5: Line 7:
* Focus is on cross-compilation and not on on-target compilation
* Focus is on cross-compilation and not on on-target compilation


Note: Most of the stuff below is already in qtbase. -device is currently marked as ‘experimental’
Note: Most of the stuff below is already in qtbase. -device is currently marked as 'experimental'


configure
configure


* -device <device> specifies the device.
* -device <device> specifies the device.
* Together with -sysroot and -device-option <span class="caps">CROSS</span>_COMPILE to specify the compiler, you will have Qt for your board!
* Together with -sysroot and -device-option <span class="caps">CROSS</span>_COMPILE to specify the compiler, you will have Qt for your board!
** For example, for the raspberry-pi, all one needs to do is:<br />
** For example, for the raspberry-pi, all one needs to do is:<br /><div class="cpp-qt geshi">
**# <div class="de1">      configure <span class="sy0">-</span>device pi <span class="sy0">-</span>sysroot  <span class="sy0">-</span>device<span class="sy0">-</span>option CROSS_COMPILE<span class="sy0">=/</span>xgcc<span class="sy0">/</span>prefix</div></div>
* There is mechanism to pass arbitrary device specific options (requires for most <span class="caps">BSP</span>s)
* There is mechanism to pass arbitrary device specific options (requires for most <span class="caps">BSP</span>s)
** Also allows us to use the same mkspec to support multiple distros (hardfp/softfp)
** Also allows us to use the same mkspec to support multiple distros (hardfp/softfp)
Line 36: Line 39:
* minimalegl is the old eglfs
* minimalegl is the old eglfs
* cursor support
* cursor support
** by default, you get a gl “composed” cursor
** by default, you get a gl "composed" cursor
** supports hotspots
** supports hotspots
** hw accel on the pi, the cursor is a separate layer
** hw accel on the pi, the cursor is a separate layer
** it’s now CI (compile) tested
** it's now CI (compile) tested
* allows creation of multiple windows and supports the surface format requested by the user
* allows creation of multiple windows and supports the surface format requested by the user
** required for context menus
** required for context menus
** qmlscene —transparent allows one to create a transparent toplevel
** qmlscene —transparent allows one to create a transparent toplevel
** on the pi, each window is a layer. poor man’s wayland
** on the pi, each window is a layer. poor man's wayland
* Jorgen suggested moving large parts of code to platformsupport and move device stuff to separate repo
* Jorgen suggested moving large parts of code to platformsupport and move device stuff to separate repo
** Will be investigated post 5.0
** Will be investigated post 5.0
Line 59: Line 62:
* -force-pkg-config was used only for xcompile builds and used to just check for environment variables.
* -force-pkg-config was used only for xcompile builds and used to just check for environment variables.
* Checks <span class="caps">PKG</span>_CONFIG_LIBDIR instead of <span class="caps">PKG</span>_CONFIG_PATH since the latter pulls in host paths. Checks <span class="caps">PKG</span>_CONFIG_SYSROOT_DIR
* Checks <span class="caps">PKG</span>_CONFIG_LIBDIR instead of <span class="caps">PKG</span>_CONFIG_PATH since the latter pulls in host paths. Checks <span class="caps">PKG</span>_CONFIG_SYSROOT_DIR
* <del>(no</del>)pkg-config works for all builds, default ‘auto’
* <del>(no</del>)pkg-config works for all builds, default 'auto'
* pkg-config env variables are now stored as part of qdevice.pri (“session”)
* pkg-config env variables are now stored as part of qdevice.pri ("session")


configure:
configure:


* -sysroot now being actively tested and it also documented
* -sysroot now being actively tested and it also documented
* Saves it’s output into config.summary
* Saves it's output into config.summary
* Fixed <span class="caps">QPA</span> plugin detection
* Fixed <span class="caps">QPA</span> plugin detection
** -qpa foo sets the default qpa
** -qpa foo sets the default qpa
Line 71: Line 74:
** Decided that this was unnecessary
** Decided that this was unnecessary


What’s coming
What's coming


* Hardware image decoding for the pi (based on openmax IL – girish)
* Hardware image decoding for the pi (based on openmax IL – girish)
Line 82: Line 85:
* Out of the box serial port configuration with QSerialPort
* Out of the box serial port configuration with QSerialPort


What’s missing from Qt4/Embedded support
What's missing from Qt4/Embedded support


* linuxfb needs to be resurrected
* linuxfb needs to be resurrected
* openvg backend
* openvg backend
* wayland will be suggested for multiprocess support, eglfs for single process
* wayland will be suggested for multiprocess support, eglfs for single process

Latest revision as of 17:10, 6 January 2017

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Qt Device/Embedded board support vision:

  • Qt needs to work out of the box for embedded boards without having to patch Qt and mkspecs over and over again
  • Provide an optimal build for the device
  • Focus is on cross-compilation and not on on-target compilation

Note: Most of the stuff below is already in qtbase. -device is currently marked as 'experimental'

configure

  • -device <device> specifies the device.
  • Together with -sysroot and -device-option CROSS_COMPILE to specify the compiler, you will have Qt for your board!
    • For example, for the raspberry-pi, all one needs to do is:
      1.       configure -device pi -sysroot  -device-option CROSS_COMPILE=/xgcc/prefix
  • There is mechanism to pass arbitrary device specific options (requires for most BSPs)
    • Also allows us to use the same mkspec to support multiple distros (hardfp/softfp)
  • Currently supported boards/devices
  • passing options to configure like -no-neon

eglfs:

  • No more depends on widgets, uses raster engine to paint widgets instead of opengl engine
  • Integrated the build into configure
  • hooks for board specific initialization
    • screen depth, format, gl caps
    • does not pollute board specific stuff into eglfs
  • even has a xlib hook, so eglfs can be tested on the desktop just like wayland
  • input
    • eglfs now depends on evdev. Future task is to make it compile when evdev is absent but we are yet to see such a device (qnx?)
    • can now be without udev, we have a static discovery
    • moved to platformsupport
    • eglfs loads input statically avoiding obscure args like -plugin EvdevKeyboard
    • synchronized position with multiple cursors
  • minimalegl is the old eglfs
  • cursor support
    • by default, you get a gl "composed" cursor
    • supports hotspots
    • hw accel on the pi, the cursor is a separate layer
    • it's now CI (compile) tested
  • allows creation of multiple windows and supports the surface format requested by the user
    • required for context menus
    • qmlscene —transparent allows one to create a transparent toplevel
    • on the pi, each window is a layer. poor man's wayland
  • Jorgen suggested moving large parts of code to platformsupport and move device stuff to separate repo
    • Will be investigated post 5.0

directfb:

  • similar hooks design as eglfs
  • integrated into configure
  • supports IDirectFBGL and DirectFB+EGL
  • holger maintains directfb these days

pkg-config changes:

  • no more a second class citizen for embedded targets unlike qt4
  • -force-pkg-config was used only for xcompile builds and used to just check for environment variables.
  • Checks PKG_CONFIG_LIBDIR instead of PKG_CONFIG_PATH since the latter pulls in host paths. Checks PKG_CONFIG_SYSROOT_DIR
  • (no)pkg-config works for all builds, default 'auto'
  • pkg-config env variables are now stored as part of qdevice.pri ("session")

configure:

  • -sysroot now being actively tested and it also documented
  • Saves it's output into config.summary
  • Fixed QPA plugin detection
    • -qpa foo sets the default qpa
  • Still have the problem of runtime of autodetection
    • Decided that this was unnecessary

What's coming

  • Hardware image decoding for the pi (based on openmax IL – girish)
  • Layer based video rendering for the pi (based on openmax IL – johannes)
  • qdoc documentation
  • passing options to configure like -no-neon
  • Host tools when xcompiling
  • Support for host compilation with -device
  • Out of the box serial port configuration with QSerialPort

What's missing from Qt4/Embedded support

  • linuxfb needs to be resurrected
  • openvg backend
  • wayland will be suggested for multiprocess support, eglfs for single process