Qt-contributors-summit-2012-Qt-in-Embedded

From Qt Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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