First post, by truth_deleted
A very fast software opengl rasterizer is the Mesa3D llvmpipe driver. It is cross-platform and relies on multithreading and "x86 JIT code generation" to achieve optimal performance, perhaps an order of magnitude lower as compared to a typical opengl video card (verified in ioquake3 in WinXP).
Also, built the alternative Mesa3D swrast driver, also a software rasterizer, which does not have the above optimizations. However, the swrast driver in Mesa3D, version 6.4.2, was slow while running ioquake3 on a Core2Duo at its lowest settings (320x240, bilinear filtering, extensions off, lowest texture and geometric settings, vertex lighting; sound quality low). Changing parameter values in config.h of the mesa3d package did not have a significant impact on speed. Later 6.x versions of Mesa3D did not build in MinGW-32bit, while 7.x and later are not adapted for mingw.
However, edits to a Makefile allowed a build of the Mesa3D swrast driver for version 6.5.3. This driver was significantly and surprisingly faster than 6.4.2. Attached is a recent win32 version of ioquake3 which I built, along with two copies of the swrast driver 6.5.3 (opengl_X.dll), and the optional patch to build Mesa3D 6.5.3 via mingw. The two versions of the driver include one optimized for SSE (also x86 asm, 3dnow instructions) and the other without these optimizations, so the latter may run on an older CPU; at least as old as permitted by mingw32/gcc4.6.2. Ioquake3 + swrast may be useful on a Pentium 4, but I haven't confirmed this. Additional settings for optimal speed include a setting in quake3, r_texturemode=gl_nearest, and a Windows environmental variable, MESA_NO_DITHER=1.