0
|
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.
|