DirectFBAndQt: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 5: Line 5:
== Paint Engines ==
== Paint Engines ==


There are two paint engines for DirectFB right now. There is the DirectFB ("full") paintengine that tries to forward as much as possible to DirectFB and possible accelerate all of these methods in hardware and then there is the "blittable" approach that will only forward various kinds of blit to DirectFB. As of March 2012 the used paintengine depends on the QWS/QPA selection. It is generally possible to port the full paintengine to be used with the QPA plugin.
There are two paint engines for DirectFB right now. There is the DirectFB ("full") paintengine that tries to forward as much as possible to DirectFB and possible accelerate all of these methods in hardware and then there is the "blittable" approach that will only forward various kinds of blit to DirectFB. As of March 2012 the used paintengine depends on the QWS/QPA selection. It is generally possible to port the full paintengine to be used with the QPA plugin.


The "blittable" engine can only accelerate blits (drawing of pixmaps) and filling of rects. The interface can be seen in the "QBlittable":http://qt.gitorious.org/qt/qtbase/blobs/master/src/gui/painting/qblittable_p.h#line77| header file. The "blittable| paintengine will track the state of the painter and decide if it can use the simple blittable interface.
The "blittable" engine can only accelerate blits (drawing of pixmaps) and filling of rects. The interface can be seen in the "QBlittable":http://qt.gitorious.org/qt/qtbase/blobs/master/src/gui/painting/qblittable_p.h#line77| header file. The "blittable| paintengine will track the state of the painter and decide if it can use the simple blittable interface.


== Plugins ==
== Plugins ==
Line 13: Line 13:
=== QWS Plugin ===
=== QWS Plugin ===


The QWS DirectFB Plugin is the current/classic DirectFB support and works best on Qt 4.7.4. The plugin supports a great range of DirectFB versions and has been validated on multiple devices. This plugin is using the "full" paintengine and provides various ways to fine tune for specific DirectFB behavior.
The QWS DirectFB Plugin is the current/classic DirectFB support and works best on Qt 4.7.4. The plugin supports a great range of DirectFB versions and has been validated on multiple devices. This plugin is using the "full" paintengine and provides various ways to fine tune for specific DirectFB behavior.


==== Known issues ====
==== Known issues ====
Line 22: Line 22:
=== QPA Plugin ===
=== QPA Plugin ===


QPA is experimental in Qt 4.8 and is the base technology of Qt5. The DirectFB plugin has been validated only on the [[Devices/Broadcom97425| Broadcom 97425]] platform. This plugin is using the "blittable" paintengine and has been tested against the DirectFB 1.4.x and DirectFB 1.5.x releases.
QPA is experimental in Qt 4.8 and is the base technology of Qt5. The DirectFB plugin has been validated only on the [[Devices/Broadcom97425| Broadcom 97425]] platform. This plugin is using the "blittable" paintengine and has been tested against the DirectFB 1.4.x and DirectFB 1.5.x releases.


==== OpenGL ====
==== OpenGL ====


DirectFB 1.4 has one interface for OpenGL called "IDirectFBGL":http://directfb.org/docs/DirectFB_Reference_1_4/IDirectFBGL.html|, DirectFB 1.5 (in development) adds the "IDirectFBGL2":http://directfb.org/docs/DirectFB_Reference_1_5/IDirectFBGL2.html| interface modeled after EGL. The current DirectFB plugin does '''not''' use any of the two interfaces to integrate OpenGL. Depending on the hardware vendor there might be support to bind EGL and DirectFB together. This is currently done in the qdirectfb_egl.cpp and requires the addition of vendor init code.
DirectFB 1.4 has one interface for OpenGL called "IDirectFBGL":http://directfb.org/docs/DirectFB_Reference_1_4/IDirectFBGL.html|, DirectFB 1.5 (in development) adds the "IDirectFBGL2":http://directfb.org/docs/DirectFB_Reference_1_5/IDirectFBGL2.html| interface modeled after EGL. The current DirectFB plugin does '''not''' use any of the two interfaces to integrate OpenGL. Depending on the hardware vendor there might be support to bind EGL and DirectFB together. This is currently done in the qdirectfb_egl.cpp and requires the addition of vendor init code.


==== Known Issues ====
==== Known Issues ====
Line 45: Line 45:
== Devices/Platforms supported ==
== Devices/Platforms supported ==


'''Supported Devices'''<br />|''. Vendor |''. Qt Version |''. Plugin |''. OpenGL |<br />| [[Devices/Broadcom97425| Broadcom 97425]] | 4.8 | QWS | No OpenGL |<br />| [[Devices/Broadcom97425| Broadcom 97425]] | 4.8 | QPA | No OpenGL |<br />| [[Devices/Broadcom97425| Broadcom 97425]] | 5.0 | QPA | DirectFB/EGL |
'''Supported Devices'''
|''. Vendor |''. Qt Version |''. Plugin |''. OpenGL |
| [[Devices/Broadcom97425| Broadcom 97425]] | 4.8 | QWS | No OpenGL |
| [[Devices/Broadcom97425| Broadcom 97425]] | 4.8 | QPA | No OpenGL |
| [[Devices/Broadcom97425| Broadcom 97425]] | 5.0 | QPA | DirectFB/EGL |


''Please keep the first column sorted alphabetically by vendor name.. apply the same for the<br />other columns.''
''Please keep the first column sorted alphabetically by vendor name.. apply the same for the
other columns.''

Revision as of 09:30, 25 February 2015


DirectFB and Qt

Paint Engines

There are two paint engines for DirectFB right now. There is the DirectFB ("full") paintengine that tries to forward as much as possible to DirectFB and possible accelerate all of these methods in hardware and then there is the "blittable" approach that will only forward various kinds of blit to DirectFB. As of March 2012 the used paintengine depends on the QWS/QPA selection. It is generally possible to port the full paintengine to be used with the QPA plugin.

The "blittable" engine can only accelerate blits (drawing of pixmaps) and filling of rects. The interface can be seen in the "QBlittable":http://qt.gitorious.org/qt/qtbase/blobs/master/src/gui/painting/qblittable_p.h#line77%7C header file. The "blittable| paintengine will track the state of the painter and decide if it can use the simple blittable interface.

Plugins

QWS Plugin

The QWS DirectFB Plugin is the current/classic DirectFB support and works best on Qt 4.7.4. The plugin supports a great range of DirectFB versions and has been validated on multiple devices. This plugin is using the "full" paintengine and provides various ways to fine tune for specific DirectFB behavior.

Known issues

  • Was never tested against Qt autotests
  • QPixmap autotests are failing

QPA Plugin

QPA is experimental in Qt 4.8 and is the base technology of Qt5. The DirectFB plugin has been validated only on the Broadcom 97425 platform. This plugin is using the "blittable" paintengine and has been tested against the DirectFB 1.4.x and DirectFB 1.5.x releases.

OpenGL

DirectFB 1.4 has one interface for OpenGL called "IDirectFBGL":http://directfb.org/docs/DirectFB_Reference_1_4/IDirectFBGL.html%7C, DirectFB 1.5 (in development) adds the "IDirectFBGL2":http://directfb.org/docs/DirectFB_Reference_1_5/IDirectFBGL2.html%7C interface modeled after EGL. The current DirectFB plugin does not use any of the two interfaces to integrate OpenGL. Depending on the hardware vendor there might be support to bind EGL and DirectFB together. This is currently done in the qdirectfb_egl.cpp and requires the addition of vendor init code.

Known Issues

  • Input and Focus handling not fully tested
  • Does not run Qt unit tests

Status 4.8/5.0

QPA Plugin

  • All blittable bugfixes have been applied to Qt5 and Qt4.8.x
  • Last backport occured January 23. Pending backports include:
    • Broadcom/EGL support.
    • Make windows at least QSize(1,1) (43696a9e4230ae1952fa9d8d6ef400d7df0f1c6e)
    • ::fromFile pixmap loading fix (8f6ee81ee97bd89df9bbc6d4353df05542c3ac64)

Devices/Platforms supported

Supported Devices |. Vendor |. Qt Version |. Plugin |. OpenGL | | Broadcom 97425 | 4.8 | QWS | No OpenGL | | Broadcom 97425 | 4.8 | QPA | No OpenGL | | Broadcom 97425 | 5.0 | QPA | DirectFB/EGL |

Please keep the first column sorted alphabetically by vendor name.. apply the same for the other columns.