summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs/deviceintegration/deviceintegration.pro
Commit message (Collapse)AuthorAgeFilesLines
* Add a tech preview eglfs device integration for VSP2 compositionJohan Klokkhammer Helsing2018-01-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This creates a new device integration for eglfs, eglfs_kms_vsp2, that's very similar to eglfs_kms_gbm, but includes an extra step for doing VSP2 hardware compositing. The main Qt content is drawn to double buffered off-screen GBM buffers which are converted using drmPrimeHandleToFD so we get DMA buffer file descriptors that can be used by the VSP2 blending hardware. The blending hardware writes to double buffered DRM dumb buffers, which are flipped with drmModePageFlip. Communicating with the VSP2 is done using the Video4Linux2 (V4L2) streaming API. There are two steps in creating abstractions for this. First, there is the QLinuxMedia class that consists of a Qt style wrapper for V4L2 without anything VSP2 specific. Second, there is QVsp2BlendingDevice which hides some of the streaming details of the VSP2 and has some level of error recovery. Both classes include a fair bit of logging and error reporting. The patch is written with Wayland compositors in mind, but should work for other use cases as well. This is just the basic support to make compositing work, additional features may be added in subsequent patches, i.e: - Auto-detect VSP2 (-feature-vsp2 currently needs to be explicitly enabled). - Support for setting the alpha value of a layer. - Support clipping layers. - Support for scaling layers. - Support for other output formats than RGBA32. - Hardware cursor support. - Support foreign layers below the main Qt layer. - Support for memory mapped and user pointer buffer types (currently only DMA buffers are supported). Change-Id: I1917d2dbdbaeded0d9c021baaa799d56afe1a9bd Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Add EGLFS integration plugin for Salvator-X on INTEGRITY MultivisorTimo Aarnipuro2017-12-151-0/+1
| | | | | | | This plugin uses the Renesas RISP Window Manager. Change-Id: If813c46ab8d39e966c0a969610841867885dd473 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Add configure test for INTEGRITY EGLFS openWFD integration pluginKimmo Ollila2017-12-011-1/+1
| | | | | | Change-Id: I846f9e555df4f64097b5634707515d45c13a521c Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* Fix build with -no-openglPaul Olav Tvete2017-03-031-1/+1
| | | | | | Change-Id: I6fb61944ef88e328a94ea6b7ab42db271828a602 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-12-161-2/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure configure.pri examples/widgets/painting/fontsampler/mainwindow.cpp examples/widgets/painting/fontsampler/mainwindow.h mkspecs/features/moc.prf src/corelib/global/qglobal.h src/gui/text/qtextdocument.cpp Change-Id: Ica65512e00871695190a14ccea5c275b0165f787
| * eglfs/deviceintegration: Ensure eglfs_kms_support is added only onceFriedemann Kleint2016-12-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Use qmake operator *= to prevent adding it multiple times resulting in warnings on Linux/Desktop: Makefile:114: warning: overriding recipe for target 'sub-eglfs_kms_support-qmake_all' Makefile:64: warning: ignoring old recipe for target 'sub-eglfs_kms_support-qmake_all' Makefile:118: warning: overriding recipe for target 'sub-eglfs_kms_support' ... Change-Id: I18a926c9faeb8f9eafea5223d32c526c06c43724 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | eglfs: Add device integration for Qt Simulator for Embedded LinuxAndy Nichols2016-11-251-0/+2
|/ | | | | | | | | | | To support multiple displays in the emulator, it is necessary that an additional EGLFS device integration be added to query information about the available screens, and to help associate a window surface with a screen. Change-Id: I852c27bd66f5f32a92c4ff876838ac2f6fbde86a Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Modularize configure.json/.priLars Knoll2016-09-151-0/+1
| | | | | | | | | | | | Move the different parts of configure.json/.pri into the libraries where they belong. Gui is not yet fully modularized, and contains many things related to the different QPA plugins. Done-with: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Change-Id: I6659bb29354ed1f36b95b8c69e7fce58f642053f Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Use qtConfig throughout in qtbaseLars Knoll2016-08-191-7/+7
| | | | | | | | | | | Use the new qtConfig macro in all pro/pri files. This required adding some feature entries, and adding {private,public}Feature to every referenced already existing entry. Change-Id: I164214dad1154df6ad84e86d99ed14994ef97cf4 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Multi-screen handling for the eglfs_kms_egldevice backendDominik Holland2016-04-151-2/+5
| | | | | | | | | | | | | | Separates the generic kms classes into a own kms static lib called QtEglFsKmsSupport. The eglfs_kms plugin was changed to use these base classes and got renamed accordingly to QEglFSKmsGbm*. The eglfs_kms_egldevice plugin got extended to also derive from the kms base classed and by this provides multi-screen support Change-Id: I6de6a754e94cb8d52cf8e658b03c6bd6637674a1 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Support for Wayland servers on i.MX6Paul Olav Tvete2015-11-021-0/+1
| | | | | | | | | A wayland compositor on i.MX6 needs to create the wl_display before creating the EGL display. This wl_display then needs to be exposed so that QWaylandCompositor can use it. Change-Id: Id60f6dd2fbba05140ca0671da6f17dbc2ecce3a3 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Separate KMS and GBM testsLaszlo Agocs2015-10-141-1/+1
| | | | | | | | | | | | | | | | KMS is no longer a platform plugin so the relevant leftover bits are now removed. As the introduction of the EGLDevice-based backend for eglfs shows, using DRM/KMS is not tied to GBM, separate buffer management approaches, like EGLStreams, work fine as well. Therefore separate KMS from GBM and remove the EGL and GLES dependency in the tests - this way there is nothing preventing us from using GBM without GL for example. Change-Id: Id7ebe172b44b315f9a637892237d2bb62d99aed2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
* Add support for the Jetson TK1 Pro using EGLDeviceLaszlo Agocs2015-10-141-0/+1
| | | | | | | | | | | For now we pick one crtc and find the corresponding layer. If this is not desired, set QT_QPA_EGLFS_LAYER_INDEX to override the layer to be used. Enable qt.qpa.eglfs.kms to get logs about the available layers. Change-Id: I762783f960739e32966c8cde17d8f55fbe40091f Done-with: Louai Al-Khanji <louai.al-khanji@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
* eglfs: Pluginize RPi, iMX6 and Mali backendsLaszlo Agocs2015-03-051-0/+3
| | | | | | | | | | | | | | eglfs does not depend on the device makespecs anymore when it comes to these device integration backends (hooks). Instead, backends are autodetected by configure. The name of the preferred plugin is still set in the device makespecs. This is optional. When not set and there is more than one plugin present in the system, the environment variable QT_QPA_EGLFS_INTEGRATION will have to be set at runtime. In the absence of that, the order is undefined. Change-Id: Ie1ced2c9aa1beff2adb13b4fdea7c499cb5a6aab Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* Pluginize the eglfs hooksLaszlo Agocs2014-12-081-0/+4
Following the principle of device integrations in QtWayland and soon xcb, a plugin interface is being introduced to gradually replace the statically compiled-in hooks. The interface is same as before for the time being, for compatibility with the existing device-specific hooks. QEglFSHooks is now just a dummy subclass for QEGLDeviceIntegration to support the legacy, compiled-in, device-specific hooks. When -device is not used with configure and so there is no hook active, the new plugin-based approach kicks in. The environment variable QT_QPA_EGLFS_INTEGRATION can be set to indicate the preferred integration name (e.g. eglfs_x11, eglfs_kms). It can also be set to "none", indicating that no plugins should be considered and the default, non-specialized integration is to be used. (this is for devices, like Beagleboard|bone, that do not need any special code to set up EGL) Device makespecs can set EGLFS_DEVICE_INTEGRATION. The value is then used as the default, preferred plugin name when QT_QPA_EGLFS_INTEGRATION is not set. In the future device makespecs are expected to set a plugin name instead of relying on the traditional EGLFS_PLATFORM_HOOKS_*. When neither the QT_QPA_EGLFS_INTEGRATION nor EGLFS_DEVICE_INTEGRATION are set, all plugins will be tried in an unspecified order. The first one that succeeds to load is used. If all fails or there are no plugins, the built-in, non-specialized integration is used. To debug what integration is being used, enable the logging category qt.qpa.egldeviceintegration. There is some built-in logic for desktop/Mesa based systems: Under X, eglfs_x11 is preferred, otherwise eglfs_kms is prioritized. This, assuming sufficient permissions to video and input devices, allows simply launching apps with -platform eglfs. No more editing of eglfs.pri. [ChangeLog][QtGui] Added support for device-specific backend plugins in eglfs. Change-Id: Ia2ddcddac014c25817171dc140cd8cf913784ac6 Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>