| 1 | PowerVR QScreen Driver
|
|---|
| 2 | ======================
|
|---|
| 3 |
|
|---|
| 4 | This QScreen plugin driver allows the QtOpenGl module to integrate with PowerVR
|
|---|
| 5 | hardware from Imagination Technologies. Using this plugin, applications may use
|
|---|
| 6 | QGLWidget & QGLPixelBuffer with OpenGL ES. The integration with PowerVR drivers
|
|---|
| 7 | is built as two libraries: The actual QScreen plugin used by Qt (in the
|
|---|
| 8 | pvreglscreen directory) and a WSEGL plugin for the PowerVR drivers (in the
|
|---|
| 9 | QWSWSEGL directory).
|
|---|
| 10 |
|
|---|
| 11 | Qt/Embedded needs to be configured with the QT_QWS_CLIENTBLIT and
|
|---|
| 12 | QT_NO_QWS_CURSOR defines.
|
|---|
| 13 |
|
|---|
| 14 | The PowerVR drivers provide the WSEGL plugin API to allow window systems such as
|
|---|
| 15 | QWS to integrate correctly. In order to use the integration, the WSEGL plugin
|
|---|
| 16 | (libpvrQWSWSEGL.so, usually installed into the Qt library directory) must be in
|
|---|
| 17 | the LD library path. The PowerVR driver also needs to be told which WSEGL library
|
|---|
| 18 | to use. This is done by creating/modifying /etc/powervr.ini:
|
|---|
| 19 |
|
|---|
| 20 | [default]
|
|---|
| 21 | WindowSystem=libpvrQWSWSEGL.so
|
|---|
| 22 |
|
|---|
| 23 | Note: It is important that the /etc/powervr.ini file not contain ^M (Ctrl-M) DOS
|
|---|
| 24 | end of line markers at the end of its lines. If ^M markers are present, then the
|
|---|
| 25 | libpvrQWSWSEGL.so driver will not be loaded and the default null Linux driver
|
|---|
| 26 | will be loaded silently instead. Make sure that the end of line markers are
|
|---|
| 27 | strictly Unix-style markers.
|
|---|
| 28 |
|
|---|
| 29 |
|
|---|
| 30 | ***************************************************************************
|
|---|
| 31 | * IMPORTANT: To build the QScreen plugin and the WSEGL library it depends *
|
|---|
| 32 | * on, the pvr2d.h, wsegl.h headers for your platform are required. You *
|
|---|
| 33 | * can find a copy of these headers in src/3rdparty/powervr for SGX based *
|
|---|
| 34 | * platforms like the TI OMAP3xxx. They probably will not work on MBX *
|
|---|
| 35 | * because of differences in the layout of certain PVR2D structures. *
|
|---|
| 36 | * You can tell Qt where to find the actual headers for your system by *
|
|---|
| 37 | * setting QMAKE_INCDIR_POWERVR in the mkspec. *
|
|---|
| 38 | ***************************************************************************
|
|---|
| 39 |
|
|---|
| 40 | When you start a Qt/Embedded application, you should modify the QWS_DISPLAY
|
|---|
| 41 | environment variable to use the "powervr" driver instead of "LinuxFb". For
|
|---|
| 42 | example, if your original QWS_DISPLAY variable was:
|
|---|
| 43 |
|
|---|
| 44 | LinuxFb:mmWidth40:mmHeight54:0
|
|---|
| 45 |
|
|---|
| 46 | then it should be changed to:
|
|---|
| 47 |
|
|---|
| 48 | powervr:mmWidth40:mmHeight54:0
|
|---|
| 49 |
|
|---|
| 50 | To test the OpenGL ES integration, you can use the hellogl_es example and run it
|
|---|
| 51 | on the device with:
|
|---|
| 52 |
|
|---|
| 53 | hellogl_es -qws
|
|---|
| 54 |
|
|---|
| 55 | The driver also supports screen rotation if Qt is configured with the
|
|---|
| 56 | -qt-gfx-transformed option and the QWS_DISPLAY variable is wrapped in a
|
|---|
| 57 | "Transformed" declaration:
|
|---|
| 58 |
|
|---|
| 59 | Transformed:powervr:mmWidth40:mmHeight54:Rot90:0
|
|---|
| 60 |
|
|---|
| 61 | Know Issues:
|
|---|
| 62 | * A QGLWidget may not have window decorations if it is a top-level window.
|
|---|
| 63 | * On some platforms, starting a QWS application after the system has been up
|
|---|
| 64 | for a long time may cause the driver to fail. This is due to fragmentation
|
|---|
| 65 | of main memory prevening older PowerVR drivers from allocating a contiguous
|
|---|
| 66 | region of phyical RAM for the GL surface.
|
|---|