SGX drivers

From Pandora Wiki
Revision as of 16:48, 26 March 2013 by Notaz (talk | contribs) (dev info)
Jump to: navigation, search

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

Useful links

TI release notes
TI release downloads