Reasons for starting from scratch
There are plenty of OpenGL ES implementations out there why start a new one?
- Learning - I've never written a software renderer before, so why not have a go?
- Second processor - Most, if not all, similar implementations will be for a single processor system. GL2x is written specifically to run on the second processor of the GP2X allowing it to function as a dedicated graphics renderer. This will hopefully lead to a significant speed boost.
Possible (probable?) problems
- The GP2x's second processor has only a small amount of cache (4k+4k) as opposed to the 16k+16k cache of the 920T. A software renderer will access large amounts of memory, especially when texturing a polygon. The small cache size will slow performance quite considerably. One option is to run the renderer on the main processor with it's larger cache however if this would relegate the client program to the non-linux secondary processor.
- Neither processor have an FPU so floating point performance will be poor. While possible to use fixed point maths this introduces numerous precision concerns.
Eventually the projects libgp2x and GL2x have ceased to exist. The website is down, its last entry was written in August 2006 and the last comment in Google code dating Jan 14, 2007 states: "Even the simplest cube example is way too slow. This is probably due to the slow malloc implementation on 940t."