PowerVR QScreen Driver | |
====================== | |
This QScreen plugin driver allows the QtOpenGl module to integrate with PowerVR | |
hardware from Imagination Technologies. Using this plugin, applications may use | |
QGLWidget & QGLPixelBuffer with OpenGL ES. The integration with PowerVR drivers | |
is built as two libraries: The actual QScreen plugin used by Qt (in the | |
pvreglscreen directory) and a WSEGL plugin for the PowerVR drivers (in the | |
QWSWSEGL directory). | |
Qt/Embedded needs to be configured with the QT_QWS_CLIENTBLIT and | |
QT_NO_QWS_CURSOR defines. | |
The PowerVR drivers provide the WSEGL plugin API to allow window systems such as | |
QWS to integrate correctly. In order to use the integration, the WSEGL plugin | |
(libpvrQWSWSEGL.so, usually installed into the Qt library directory) must be in | |
the LD library path. The PowerVR driver also needs to be told which WSEGL library | |
to use. This is done by creating/modifying /etc/powervr.ini: | |
[default] | |
WindowSystem=libpvrQWSWSEGL.so | |
Note: It is important that the /etc/powervr.ini file not contain ^M (Ctrl-M) DOS | |
end of line markers at the end of its lines. If ^M markers are present, then the | |
libpvrQWSWSEGL.so driver will not be loaded and the default null Linux driver | |
will be loaded silently instead. Make sure that the end of line markers are | |
strictly Unix-style markers. | |
*************************************************************************** | |
* IMPORTANT: To build the QScreen plugin and the WSEGL library it depends * | |
* on, the pvr2d.h, wsegl.h headers for your platform are required. You * | |
* can find a copy of these headers in src/3rdparty/powervr for SGX based * | |
* platforms like the TI OMAP3xxx. They probably will not work on MBX * | |
* because of differences in the layout of certain PVR2D structures. * | |
* You can tell Qt where to find the actual headers for your system by * | |
* setting QMAKE_INCDIR_POWERVR in the mkspec. * | |
*************************************************************************** | |
When you start a Qt/Embedded application, you should modify the QWS_DISPLAY | |
environment variable to use the "powervr" driver instead of "LinuxFb". For | |
example, if your original QWS_DISPLAY variable was: | |
LinuxFb:mmWidth40:mmHeight54:0 | |
then it should be changed to: | |
powervr:mmWidth40:mmHeight54:0 | |
To test the OpenGL ES integration, you can use the hellogl_es example and run it | |
on the device with: | |
hellogl_es -qws | |
The driver also supports screen rotation if Qt is configured with the | |
-qt-gfx-transformed option and the QWS_DISPLAY variable is wrapped in a | |
"Transformed" declaration: | |
Transformed:powervr:mmWidth40:mmHeight54:Rot90:0 | |
Know Issues: | |
* A QGLWidget may not have window decorations if it is a top-level window. | |
* On some platforms, starting a QWS application after the system has been up | |
for a long time may cause the driver to fail. This is due to fragmentation | |
of main memory prevening older PowerVR drivers from allocating a contiguous | |
region of phyical RAM for the GL surface. |