id programmer John Carmack made a follow-up .plan update regarding his work implementing SMP support in Quake 3: Arena. Carmack states that the only thing still broken under the SMP build is light flare support, and the SMP-related code cleanup has optimized Q3 for single-processor systems as well. He then went on to describe the benchmarks under the new build for his NT dual-CPU system:
On my development system, a dual 300 mhz intergraph realizm II, the low restimedemo scores went from 27.8 to 37.8 with “r_smp 1″. This is only a 35%average speedup, but at some times (lots of dynamic lights in complex scenes)the speedup is 90%+. Gameplay is noticably smoother.
The rendering thread is almost always the blocking factor, so the faster thecard and OpenGL driver, the larger the speedup will be.
This is explicitly a two thread producer / consumer, so there is no benefitto more than two processors. The app is well behaved, using sleepingsyncronization so that you usually still have half a processor free for otheroperating system functions.
Hopefully we will be able to test with some fast consumer cards sometimesoon.
Carmack also explains his earlier attempts to implement SMP support and the technical issues one must deal with when considering whether multi-threading will give useful optimizations for a particular project.