To answer the question of which OS runs Doom3 faster – unfortunately, there really was not the type of contest that AnandTech had anticipated. Yes, Doom3 for Linux stays competitive with Doom3 for Windows, but in several instances, it falls more than 25% behind on NVIDIA graphics cards. If and when ATI cards start working for Doom3, we are likely to see even larger differences.
Windows -> 38fps (WindowsXP Pro SP2/Nvidia 61.77)
Linux -> 39fps (Slackware 10.0/Kernel 2.6.8/Nvidia 61.11)
hardware: AthlonXP 2400+, 512MB RAM, GeForceFX 5900XT
Apparently, the Linux version is not optimised. No SSE being used because they use a Visualstudio specific syntax for it or something along those lines.
So it is not about which OS runs Doom faster, but on which OS dooms runs faster.
I think the article is more meant to show that doom3 works on linux rather than comparing directly with windows:
It hurts to say it but while doom3 is bearable on windows with
25 – 50 fps, it’s quite unplayable on linux on an everyday machine. Now the true question is: where is the bottleneck ?
Are the NVIDIA drivers not using the latest GFX instructions (openGL 2.0 ?),
are they simply lacking optimisations (as in “if argv[0] == doom3 then disable_some_things_to_make_it_faster” (Note that ATI has perhaps patented this ), are the GFX cards designed to run more “natively” with DirectX, meaning that OpenGL has more intructions to do the same thing, or is it just the kernel scheduler which is more suited for webservers ?
It would be nice to hear Carmack’s opinion, as he is probably the only person to know where truth lies….
Timothee Besset (the guy responsible for the Linux port) says VS.NET produces better code than g++.
then why did all the q3 engine games run faster on linux?
i’m replying to myself since i’ve found an article giving
some explanations:
http://www.linuxhardware.org/article.pl?sid=04/10/12/1725246&mode=t…
“You’ll probably notice that on Linux Doom III will be more CPU bound than card bound. I can see several factors, mostly the fact that the SSE2 code is not used in the current binary, and maybe because gcc doesn’t optimize as well as VC.net does.
I will be spending some time in the upcoming months optimizing the builds for more speed. I don’t expect to get more than a 5-10% fps gain though.”
Timothee Besset (TTimo) of id Software
http://www.linuxhardware.org/article.pl?sid=04/10/12/1725246
I think it would be more helpful for them to have run benchies on an AthlonXP and a P4 system to see if the speed differences are consistent.
The bottleneck is most likely in the Doom code itself. For a full-screen OpenGL app, there are pretty much only three things in a performance critical path: the app, the GL library, and the kernel device driver. These are pretty much the only pieces that could be a bottleneck.
It is doubtful that it is the GL library or the device driver, because (for NVIDIA) both pieces come from the same codebase as the Windows drivers. Since NVIDIA added page flipping to the Linux drivers a couple of years ago, they have been as fast as the Windows versions.
If GCC is the bottleneck, it would be interesting to see how code compiled with ICC does on the benchmark.
In almost any other case they would graph the results side by side to clearly illustrate the winner, but since the winner in this case was Windows they publish separate graphs so that the results are not as clear. Why is it still taboo to point out areas where Linux falls short of Windows? What are we afraid of?
This is going to get me flamed from the hardcore Gentoo fans, but here’s a topic to be considered: the benchmarks on that test were run on Gentoo Linux. Gentoo Linux is VERY difficult to optimize properly through the entire pipeline. Yes Doom 3 is not optimized well on Linux, but Gentoo is probably adding to the problem. With the basic optimizations on an Athlon XP you may be cutting IN HALF (yes, I’ve seen this happen personally) your OpenGL driver’s performance on an Nvidia card even with the corporate drivers. For a good comparison of “Linux v. Windows” performance they should have taken at least 3 other distros to compare with as well. Optimizations and performance varies widely between different Linux distros based on the orientation of it’s developers and it’s target audience.
I’ve got a dual athlon 2400 machine w/786 ram, NVidia fx 5200 w/128mb vram. I’ve tried all the performance tweaks out there but the demo just skips and stutters and is plain horrible to play. Too bad because it looks sweet. Running on linux btw, 2.x kernel. And yes, the nvidia driver is installed.
Mike
“If GCC is the bottleneck, it would be interesting to see how code compiled with ICC does on the benchmark.”
BTW, ICC would have hurt the benchmarks even more. Intel purposely turns off optimizations and doesn’t support others on AMD CPUs. Why should they? AMD is their direct competition. In order to use ICC you’d need to use a Pentium 4 or Itanium based system for any kind of comparable results.
Do you have any source for this claim? I highly doubt that this is true. As I recall, even AMD uses ICC when preparing their SPEC benchmark runs.
Have you even read the article? They used Suse 9 for the benchmarks…
IMHO the article does not prove anything regarding Linux VS Windows performance. The only thing it might prove it’s just that DOOM runs better for now on windows than on Linux, and even that may be debatable without further testing.
Mine’s been surprisingly good at 800×600 – I’ve only got a GF4 Ti so I’ve been fairly impressed actually.
If you’re having issues Mike I’d point at your graphics card – the 5200’s simply aren’t a fast card.
(Oh, and saying it’s a 2.x kernel doesn’t narrow things down much – earlier versions aren’t really used any more, but there’s quite a difference between 2.2 and 2.6)
I might have to give Doom a go in Windows now – I’m skeptical of their results. They’ve got the numbers, but it seems inconsistent from what I’ve seen so far.
Yes, sorry. I meant 2.6.x kernel. So maybe it is time for me to invest in a better graphics card. :/ I would love to play this game!
Mike
If people read http://www.linuxhardware.org/article.pl?sid=04/10/12/1725246&mode=t…
, which contains a few comments by one of the developers/porter, you’ll see he explains much of the “slowness”.
“Because our SSE2 code is in VC.net syntax (not only Intel asm, but generally speaking, it uses VC.net __asm constructs) and I need to go over it to convert it.”
There you go. SSE instructions are usually used for vector aritmetic in games, and if there’s anything games do alot, it’s vector transformations.
I agree that this may be a Doom 3 benchmark and not a Linux benchmark. The best way to do it IMO is with an open source cross platform 3d Engine. http://www.ogre3d.org is probably the best bet. I’m helping with the development of a cross platform game and I’d like to say that the biggest issue is NOT performance. It’s compatibility. There is a lot of tomfoolery involved in making something cross platform that doesn’t need to be there. SDL is a refreshing exception but even it has issues with Direct Input.
If I knew C++ better I’d fix compatibility first then worry about performance. Maybe they’re interconnected though…
Well I’ve just performed a very scientific test, consisting of playing a bit in each OS. Linux is teh winnar.
It definately feels smoother – Windows had a few nasty dips when anything sudden happened (like a door opening or something sneaky like that).
Plus there’s the lack of hdd thrashing – Windows was unresponsive for the best part of a minute after exiting as it frantically pulled everything back from cache. Linux is simply better at such a thing.
One thing I find nice is that I can gain a further speed boost in Linux by switching into a Fluxbox session – while it’s a bit of effort, you simply can’t free up memory in the same way in Windows.
Linux also gains a few points from the install procedure – it never asked me for a cd key (interesting…) and didn’t bug me to have the CD in the drive when I ran it, which I found quite a turn-off in Windows – if anyone wants to pirate it they’ll just copy the damn thing, so why inconvienience everyone?
Anyway, I think that covers it… it’s certainly nice having a game that works this well in Linux. Now if only more developers followed id on this…
I’ve actually had pretty decent (~20fps) on an Athlon XP 2600+, 512MB RAM, and GeForce FX 5200 running at 800×600 with high quality.
Guys, firstly the Nvidia linux driver has two parts…the kernel hook and the proprietary binary driver. We can’t even see what shit is in the binary driver, so how can we judge that it’s good (of for that matter bad). But i’d definetly put money on it that Nvidia considers Linux users second rate people and doesn’t really give too much of a shit about the quality of it’s drivers for the Linux platform. Unforunately ATI is even worse.
Also, ID says that vs.net produces better code than GCC and to that i’ll say bullshit. I’d say it’s tweaked to run on vs.net and they can’t be bothered to get off their behinds and tweak it to run properly on GCC based systems.
Furthermore, any game that runs a system into the ground, even a powerful system like Doom 3 does should be shot. I’m sorry but 640*480 is a completely unnacceptable resolution, and the frame rates are horrid. As much as I loved Doom and Doom II to be bits, Doom 3 does nothing for me. Hopefully Half Life 2 uses a bit more common sense and makes good user of “older” hardware.
Dave
FYI i’m running an Athlon 3000 xp, 512mb pc3200 ddr ram, and a Nvidia Geforce 4 ti4200 64mb video card. The card is about two years old and if ID can’t get a card that’s so recent to perform decently on their games then they’ve lost the plot as far as i’m concerned.
Also, Nvidia drivers are broken in 2.6.9-rc4 – you’ll need to grab a diff file, apply the changes to the 2.6.9-rc4 kernel src tree, and then recompile…the kernel developers reasoning is expect more of this with those that use binary drivers…*joy*
Guys, firstly the Nvidia linux driver has two parts…the kernel hook and the proprietary binary driver.
Three parts, actually. A proprietory libGL, a proprietory kernel driver component, and an open kernel driver wrapper.
We can’t even see what shit is in the binary driver, so how can we judge that it’s good (of for that matter bad).
Um, by benchmarking it relative to their Windows version?
But i’d definetly put money on it that Nvidia considers Linux users second rate people and doesn’t really give too much of a shit about the quality of it’s drivers for the Linux platform.
NVIDIA generally doesn’t need to make trade-offs between their Windows and Linux users. They’ve got driver development down to a science — all their cards use the same drivers, and 90% of the driver code is the same between platforms. As a result, the Linux drivers are kept very up-to-date in performance and features relative to the Windows drivers. The delay for a new release is rarely more than a few weeks. Also, you have to remember that Linux users are an important market for NVIDIA. Most of those movie and special effects houses that switched to Linux, like ILM, are running on NVIDIA Quadros.
Furthermore, any game that runs a system into the ground, even a powerful system like Doom 3 does should be shot.
Why? Doom III isn’t just a game, it’s a platform. It’ll serve as a foundation for games for several years. If it makes too many compromises for low-end systems now, Doom III-based games will look totally antiquated a few years from know when computers are 3x faster.
There you go. SSE instructions are usually used for vector aritmetic in games, and if there’s anything games do alot, it’s vector transformations.
And then read the benchmarks at linuxhardware.org, couple that with the predicted gains of 5%-10% by the linux maintainer (the GCC SSE2 optimizations) and the linux version still falls short of the windows version.
Get over it. Windows versions of games tend to run faster than the linux version. It doesn’t mean that linux can’t be a fun gaming platform. As the linux maintainer pointed out, GCC isn’t producing the greatest code (maybe ICC would help out), and saying that X has some shortcomings for gaming isn’t beyond the realm of possibilities.
“Also, ID says that vs.net produces better code than GCC and to that i’ll say bullshit. I’d say it’s tweaked to run on vs.net and they can’t be bothered to get off their behinds and tweak it to run properly on GCC based systems.”
Assuming the code used is for the most part standard compliant – which I’m quite sure it is, coming from id – a developer should not have to “tweak” (whatever that means) their code for a specific compiler.
Also, the Visual C++ compiler is very standard compliant, but also generates faster code than gcc. See these benchmarks for the RISE realistic photosynthesis library, written in C++(I’ve used that library and its code is standard and 100% platform independent).
http://rise.sourceforge.net/cgi-bin/makepage.cgi?Platforms
FYI i’m running an Athlon 3000 xp, 512mb pc3200 ddr ram, and a Nvidia Geforce 4 ti4200 64mb video card. The card is about two years old and if ID can’t get a card that’s so recent to perform decently on their games then they’ve lost the plot as far as i’m concerned.
Your card is woefully underpowered (64 meg?) to show off the kind of eye candy that Id wants to give people. If you want a better gaming experience, buy a better video card. It’s that simple. Try running at 640×480 with all details at the lowest setting.
Weren’t there speculations at one time showing the Quake 3 version of Linux dancing all over the Windows version? Maybe I’m just imagining things.
Anyway, my theory is either Nvidia’s linux driver sucks or GCC sucks at compiling C++ code. I am more inclined to believe the latter, but that doesn’t rule out the possibility of Nvidia drivers sucking. It’s closed source, we can only rely of what they tell us.
And frankly, I have stopped believing anything corporations tell me. Even the benchmark in one of the article mentioned several features that were only available in the Window’s version of Nvidia’s driver. So how can we begin to attest to the reliability, equality and performance of Nvidia drivers on either platforms, well in this case Linux?
I have tried Doom3 on Windows 2000 Professional and Slackware (current). My experience was a bit different – to me performance seemed better on Slackware. The spec on my box is pretty weak so any (major) performance hit should have been obvious. My box has a 1.4GHz T-Bird, 1Gb of RAM and a 128Mb Geforce FX5200. On Windows it was painful, on Slackware it was almost bearable. Keep in mind though that I am biased towards Linux and tend to strongly dislike Windows but I am being honest about how I experienced it. At the very least performance must have been equal. I never really did check the fps though so don’t confuse this with hard facts, I could be wrong or maybe Doom 3 just performs better on XP as opposed to win2k.
@Rayiner Hashem
I dont have a source but I’ve heard the very same thing, the reason I even know about this claim is because I run AMD myself and was looking for optimizations some time ago. ICC was apparently a no-go so i never bothered. Then again, without being able to actually prove that it’s probably best to dispell the claim as a rumor until someone comes up with a credible link.
I dont know where is more faster, win or linux, but on my FreeBSD 5.3 Box I have very decent framerates (25fps) with a Nvidia Geforce FX5200 Ultra 256MB (800×600, High Quality).
The system is this:
http://www.corralito.org:50000/phpSysInfo/
regards.
I meant realistic “image synthesis”, not “photosynthesis”.
Get over it. Windows versions of games tend to run faster than the linux version.
I don’t see how you extrapolate that from the single data point here. I’d agree with you that it’s probable that games are less optimized on the Linux platform, but neither I nor you have any data to support that assertion.
Unfortunately, there is an additional problem: the title of the article prefers to OpenGL performance, not gaming performance. There is a very important difference, because while games might be less optimizied on Linux, apps with significant *NIX userbases (engineering, professional graphics), likely are not. I’m not going to concede that Windows has better OpenGL performance, because there is no data to support that.
saying that X has some shortcomings for gaming isn’t beyond the realm of possibilities.
OpenGL rendering totally bypasses X. It’s only involved during input processing. That’s unlikely to be the bottleneck.
I don’t see how you extrapolate that from the single data point here. I’d agree with you that it’s probable that games are less optimized on the Linux platform, but neither I nor you have any data to support that assertion.
I’m not extrapolating from a single data point. This has been true for the entire quake series. Nvidia says that 90% of the codebase is the same on all platforms. What about the other 10%. I doubt that the other 10% of the code is all hooks into the OS. It might be possible that some parts of the unix code is optimized for ILM type rendering work.
The vast majority of Doom3 code is C code so the “less optimized for linux” can be blamed on GCC. As was stated before, even with the SSE2 optimizations for linux, the 5-10% improvement predicted by the linux maintainter will not make up the FPS discrepancies in the linuxhardware.org benchmarks.
OpenGL rendering totally bypasses X. It’s only involved during input processing. That’s unlikely to be the bottleneck.
Quake3 had issues with X mouse input under linux. It was totally laggy, but that was a while back so maybe that issue has been resolved. I believe X would still be an issue in windowed mode.
Both tests were performed without SSE and with older xorg on linux. xorg has made quite a few advantages over previous version
Speaking which is better. My guess, same thing on both platforms. Just depends on which you preffer, they both seem to run Doom well.
Lumbergh, actually id moved to C++ when they started Doom 3. Not that that undermines your point or anything.
Quake3 had issues with X mouse input under linux. It was totally laggy, but that was a while back so maybe that issue has been resolved. I believe X would still be an issue in windowed mode.
Huh? Which issues? Laggy? I don’t know what Quake3 version you played but I clearly remember Quake3 was the game that began to give Linux gamers hope on the platform. You’d find people who’d still tell you Quake3, today, is faster on Linux than it is on Windows. Even The Register back then couldn’t stop clamoring.
Are we talking about the same quake3?
http://www.theregister.co.uk/2002/01/18/linux_quake3_rocks_winxp_qu…
I think you misunderstood my statement. I stated that even with the SSE2 code added into the linux binary in the future and with the prediction by the Linux maintainer, that at most the linux binary would get an additional 5-10% speedup, it still wouldn’t be as fast as the windows version if you do the numbers based on the linuxhardware.org benchmarks.
I remember Carmack saying years ago that Doom3 would use C++ for the game code, but I didn’t know that he had switched to C++ for the engine code.
IIRC from an interview years ago (before Doom3 was even started), Brian Hook and John Carmack both stated that they weren’t really C++ fans. Of course that doesn’t mean that you have to use every single C++ feature, and they could have just started compiling to C++ instead of straight C.
The lag wasn’t in FPS, but in mouse movement.
You’d find people who’d still tell you Quake3, today, is faster on Linux than it is on Windows.
Yes, linux fangirls claim a lot of things.
Lumbergh,
you were right. I checked again and the renderer and network code are written in C. My mistake.
If the lack of speed is due to the lack SSE2 code in the Linux binary, then there’s not a heck of a lot we can do.
If it’s due to some lack of magic somewhere along the application/compilier/driver/kernel route, then there’s room for improvement.
It’s that simple. It’s all x86 code, I fail to see any reason we can’t have thing close (+/- 5%) of the Windows version.
As Rayiner said the binary driver is the same. I remember reading a pdf on the Nvidia website that states it is 95% of the driver, and only 5% is linux hooks.
Reference: http://www.nvidia.com/object/linux.html
When opening the pdf search for “95”.
I think if for any reason the linux driver is slower is because the 5% linux hooks have not yet unleashed some features of the binary driver.
An example is the feature Rayiner said: Since NVIDIA added page flipping to the Linux drivers a couple of years ago, they have been as fast as the Windows versions.
“If the lack of speed is due to the lack SSE2 code in the Linux binary, then there’s not a heck of a lot we can do.”
Athlons don’t have SSE2 only P4’s have that, Athlons have regular SSE and 3DNow, if you little theory was right then only P4’s performance would suffer on linux, not athlons, and since that doesn’t seem to be the case…
I’m not extrapolating from a single data point. This has been true for the entire quake series.
Not for Quake 3:
http://www.digit-life.com/articles2/video_winvslin/
I believe X would still be an issue in windowed mode.
Not if you’re not moving the window around while running the benchmark. The GL library interacts directly with the hardware to draw into the framebuffer. Except for when that buffer moves (because the window movies), X isn’t involved at all.
So are you telling me that generally, quake3 is going to run better on a linux machine than a windows machine? Are you going to tell me that if we took a hundred independent benchmarks of varous hardware that linux would come out on top?
I don’t quite see how you got that from my statement. But it’s pretty safe to assume that if Quake 3 is faster on Linux/NVIDIA on one configuration, it’s likely that it’ll be faster on a large number of configurations.
In any case, it’s a counterpoint to your argument that games generally run fast on Windows than Linux. There aren’t exactly a lot of Linux games. You’ve got Quake and RTCW on the “faster on Linux” side, and Doom III and Unreal on the “slower on Linux” side. What else is there?
You mean UT2004? Not on my box. Oh well everyone has thoir own experiences but at least I can play Red Orchestra Mod for UT2004 on Linux.
My point is that I’d like to see a few more benchmarks before saying Quake3 is faster on Linux. I highly doubt it, considering that GCC produces slower code than VC++ and the Nvidia drivers are at least as fast on windows as linux.
Then you have to throw ATI into the mix, which probably has as much of the video card market as Nvidia.
So when I say “generally”, I”m saying that I don’t believe that if you took a hundred random machines that can run quake3, put windows on one partition, linux on another partition, that the linux binary would be faster than the windows binary most of the time.
If not ICC, why not give SUN’s compiler a go, which is available on Linux.
“Athlons don’t have SSE2 only P4’s have that”
The Athlon64 does indeed have SSE2. And, amazingly enough, Anandtech was running an A64.
-Erwos
I’m *very* surprised to hear that – UT2k4 is much quicker in DirectX than OpenGL in every situation I’ve ever heard of.
I guess there’s always one 😀