Released a little over a week ago from id Software was the Quake 4 v1.2.0 patch. The patch addressed the monitor issue that had initiated an immediate recall of the v1.1 patch at the end of March. One of the issues, however, that has been lacking from the Linux version of Quake 4 has been SMP capabilities. Quake 4 within Microsoft Windows has supported SMP and Hyper-Threading Technology since the v1.0.5 point release, while the Linux feature was non-existent. This feature allows Quake 4 to take advantage of Hyper-Threading Technology in Intel Pentium 4/D processors and other multi-core systems. Systems with multiple cores should notice significant performance gains when running Quake 4, permitting no other hardware bottlenecks. According to id Software, systems with a single physical core but those capable of benefiting from Hyper-Threading Technology should experience a 25% performance boost. Systems with two or more physical cores should see up to an 87% improvement. The true benefits may vary greatly depending upon the CPU and GPU limitations as well as other factors.
The Quake 4 v1.2.1 point release patch from id Software does contain these SMP abilities. On top of the multi-core excitement, there are three other official changes. The Quake 4 v1.2.1 changes consist of no longer using SDL_ListModes to filter available resolutions, fix stalls that may happen with DNS resolution, and a fix for a download bug when in game. No Quake 4 v1.2.1 Windows patch is available at this time. In order to utilize Quake 4 Linux SMP render acceleration, the binary requires a modified version of the SDL library. This modified Simple DirectMedia Library ships with the id Software installer, and a patch of the chances applied to the code are available in the setup as well. The patch is entitled sdl.patch and the library is libSDL-1.2.id.so.0.
Unlike the Windows version of Quake 4, enabling this multi-core support is different, yet it is still quite an easy task. To enable Symmetric Multi-Processing support, simply run quake4-smp rather than quake4. The option remains dimmed for the multi CPU/core area within the advanced settings of the game.
Originally, we had intended on performing a number of Quake 4 v1.2.1 benchmarks with various processors -- including the Intel Pentium 4 with Hyper-Threading and the Intel Pentium D. When it came to running our initial tests, we were a bit disturbed by the results. When independently running the quake4 and quake4-smp binaries, the results were no 87% higher, or even 25% higher. In fact, the average frame-rate from the recorded time-demo was almost the same! The results in each of the scenarios were within a matter of a few frames in either direction.
Attempting to determine the culprit limiting the SMP performance, we had changed dozens of variables including the graphics card, processor, Linux kernel, and various other components and system settings. In addition, both ATI and NVIDIA cards were used with the respective fglrx v8.24.8 and NVIDIA 1.0-8756 drivers. Among the graphics cards used were an ATI Radeon X1800XL, NVIDA GeForce 7800GTX, and NVIDIA GeForce 6800GT. Even after hours of investigating, we were unable to finalize on the cause for the dissenting performance. Viewing the system monitor in each of the environments while running a quake4-smp v1.2.1 time-demo, the CPU usage would max at 66%.
This is not nearly the end of our Quake 4 SMP investigation. We are still in the process of investigating this embedded feature and we hope to be delivering the benchmarks in the very near future. At this point, we would classify the SMP benefits as virtually non-existent. Among others, we are presently communicating with ATI and Intel on the situation -- along with waiting on hearing back from id Software's Timothee Besset.