SGX drivers
Contents
Releases
TI has released several SGX driver versions over time, that are based on Imagination Technologies SGX DDK for Linux, hence there are two version numbers associated with single release: TI release version and Imgtech DDK version. In each release kernel driver sources are provided and precompiled libraries providing OpenGL/OpenVG functionality.
TI version | SGX DDK version | Date | Notes |
---|---|---|---|
3.00.00.08a | 1.3.13.1607 | 2009-06-30 | |
3.00.00.09 | 1.3.13.1832 | 2009-11-16 | |
3.01.00.02 | 1.4.14.2514 | 2009-11-30 | |
3.01.00.06 | 1.4.14.2616 | 2010-04-06 | ES5 introduced |
3.01.00.07 | 1.4.14.2616 | 2010-08-18 | |
4.00.00.01 | 1.4.14.2616 | 2010-09-09 | last working ES2 |
4.03.00.01 | 1.6.16.3977 | 2011-01-27 | |
4.03.00.02 | 1.6.16.3977 | 2011-03-10 | |
4.04.00.01 | 1.6.16.4117 | 2011-07-27 | introduces DRI2 dependency |
4.04.00.02 | 1.6.16.4117 | 2011-08-03 | |
4.04.00.03 | 1.6.16.4117 | 2011-08-30 | |
4.04.00.04 | ? | 2011-09-29 | internal only (engineering drop) release |
4.05.00.01 | 1.6.16.4117 | 2011-10-25 | 4.04 + build fixes, no more ES2 libs |
4.05.00.02 | 1.6.16.4117 | 2011-10-27 | |
4.05.00.03 | 1.6.16.4117 | 2011-12-14 | |
4.06.00.01 | 1.7.17.783851 | 2012-04-03 | |
4.06.00.02 | 1.7.17.867897 | 2012-05-30 | |
4.06.00.03 | 1.7.17.867897 | 2012-06-18 | |
4.07.00.01 | 1.7.17.867897 | 2012-09-06 | missing libs |
4.08.00.01 | 1.9.19.2139099 | 2012-09-28 | "tested on AM parts only" |
4.08.00.02 | 1.9.19.2188537 | 2012-12-10 | "tested on AM parts only" |
Android releases
TI version | SGX DDK version |
---|---|
3.01.00.03 | 1.5.15.2766 |
4.03.00.01 | ? |
4.03.01.00 | ? |
Library variants
Each TI release comes with different set of libraries for different SGX chip revisions. TI SGX drivers use weird naming of SGX chip versions which is inconsistent with OMAP chip revision or SGX chip revision names. As various pandora versions use different OMAP chip versions, this may become rather confusing, so hopefully this table can help.
SoC name | SoC version | SGX core revision | TI diver name | Pandora name |
---|---|---|---|---|
OMAP3530 | ES2.1 | 1.0.3 | ES2.0 | CC/256M |
OMAP3530 | ES3.1 | 1.2.1 | ES3.0 | Rebirth |
DM3730 | ES1.x | 1.2.5 | ES5.0 | 1GHz |
Developer info
Driver operation modes
The drivers seem to have 2 modes of operation - "framebuffer mode" and "X mode". Framebuffer mode appears to be noticeably faster in some cases, presumably because in X mode the driver is rendering to offscreen buffer and then manually blitting to X window, even if it's fullscreen. Also at the time of this writing, drivers starting from 4.04.00.01 only work in framebuffer mode due to some unsolved DRI2 issues.
The mode is selected depending on how EGL is initialized, if you use EGL_DEFAULT_DISPLAY for eglGetDisplay() and NULL window for eglCreateWindowSurface(), you get framebuffer mode, else if you pass real display and window handles to those functions, you'll get X mode. Note that in framebuffer mode the driver will fight with X for display, so you need to create fullscreen window to stop X from redrawing (SDL can be used for that).
Double buffering in GL
It is unclear when the driver decides to use double buffering, sometimes it does, sometimes it doesn't (the later is more usual), so there is often tearing visible. It is possible to force the driver to use double buffering with by using a file named powervr.ini with this content:
[default]
WindowSystem=libpvrPVR2D_FLIPWSEGL.so
The driver is looking for this file in current working directory first, and then in /etc/ .